diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..9e4b7e6c4499aafa748b94159200f0ee9de06fea --- /dev/null +++ b/.gitattributes @@ -0,0 +1,42 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +coverage.db filter=lfs diff=lfs merge=lfs -text +papers/short_lived_elements/short_lived_elements.pdf filter=lfs diff=lfs merge=lfs -text +papers/uv_lasers/uv_lasers.pdf filter=lfs diff=lfs merge=lfs -text +papers/dark_comet/dark_comet.pdf filter=lfs diff=lfs merge=lfs -text +papers/dark_comet/cfht2007_cutouts.pdf filter=lfs diff=lfs merge=lfs -text +papers/ml_signals/ml_signals.pdf filter=lfs diff=lfs merge=lfs -text +papers/ml_signals/mlc8_session.pdf filter=lfs diff=lfs merge=lfs -text diff --git a/LEDGER.md b/LEDGER.md new file mode 100644 index 0000000000000000000000000000000000000000..27b409a79fff5a9f64f791f5fb600597f9082b2e --- /dev/null +++ b/LEDGER.md @@ -0,0 +1,572 @@ +# Ledger + +One row per approach. Every run's per-target results are in the coverage store (`coverage.db`); each approach's method +is its docstring, and its calls are in the recipes of `README.md`. + +## Searched + +| Approach | Data | Result | +|---|---|---| +| Curved drift tracks, radio | Breakthrough Listen GBT: cached H I and OH channels of 13 stars; every coarse channel of 15 L- and S-band cadences on the eight nearest stars (GJ 406, 699, 411, 447, 273, 1111, 628, 876) | 7322 curved hits in the cached channels, none recurring in a second ON scan and absent from the OFFs; 5558 ON scan-channels of the nearest stars searched and the 366 cadence-channels where an ON hit recurred judged against their OFFs: no curved hit only in ON scans against 9 only in OFF scans (`bl_curved_nearest`) | +| Narrowband drift, radio | Breakthrough Listen: TRAPPIST-1, GJ 273, 24 cadences at H I and OH | stopped; nothing beyond the published turboSETI results | +| Rest-frame line tracks, radio | Breakthrough Listen L band, 230 cadences; H I and OH in the CMB, Solar System and stellar frames | 2037 tests with uniform p; low-p hits are zero-drift or off-source carriers | +| Planet-frame line tracks, radio | Breakthrough Listen TESS C and X band, 12 TOI hosts | 140 tests; none with every ON scan above every OFF | +| Frequency hopping and combs, radio | cached Breakthrough Listen cadences | none on a target alone | +| Lines in sky fibres | SDSS DR17 BOSS and eBOSS spPlates: all 3853 plates, 381943 sky-fibre spectra | every peak and dip at 6 sigma that passes the mask, airglow and width tests is kept with its count of other sky fibres at 3 sigma, so both sharing rules and every later test apply to both signs alike: under the two-fibre rule 3217 clean peaks and 4108 clean dips (970 and 1479 at 8 sigma), 762 and 1813 of them fixed to a fibre at other positions on other plates; the redshift test, with H alpha required beside a strong line and the [O III] doublet at a flux ratio of 1.5-5, marks 156 fibres against 4 among the dips and 11.6 +- 3.5 with the wavelengths shuffled: 154 galaxies at z 0.016-1.069 (median 0.44), six of them seen twice on different plates or nights, 122 with a Legacy Surveys source of median r 23.1, and two Galactic fibres; spectra holding clean lines of both signs set aside 10 peaks and 10 dips at 8 sigma, leaving 485 peaks and 336 dips, with Legacy Surveys sources within 1.5 arcsec at 181 of the 480 peaks the catalogue covers against 21 at positions 30 arcsec north and at 10 of 330 dips against 28, so 162 peaks are single lines of galaxies and the other 323 fall short of the dips by 13 to 31 +- 33; read in every spCFrame, 359 peaks and 241 dips persist (galaxy lines 179 of 188), 25 and 37 are single-exposure events and 1 and 16 one camera's, and net of counterparts 202 persistent peaks stand against 253 persistent dips (-52 +- 29); one line recurs at one position on two or more plate-nights at 37 peak positions against 3 dip positions, among them 4732.6 A in the SDSS-RM field on 54 plate-nights, which the stack of its 94 spectra shows resolved (287 km/s) and without companion lines, Ly alpha at z 2.893, and [O III] 5007 of the z 0.5525 galaxy on 7; the strongest persistent peak is [O III] 4959 of the planetary nebula Abell 31; between 6 and 8 sigma the dips outnumber the peaks (1899 against 1571), so the comparison is drawn at 8 sigma; the median 8 sigma line flux is 8.0e-17 erg/s/cm2, 37 W through 10 m aimed at Earth from 10 pc, and with 0.68 of lines recovered the fibres' 0.093 deg2 bound such transmitters to fewer than 850 per square degree, and those steady through the exposures to fewer than 790; the one-fibre rule gives 188 peaks against 236 to 245 dips; every peak and dip with its tests, counterparts and frame verdicts is in papers/sky_fibres/data (`sdss_sky_fibres_shared2`, `sdss_sky_fibres`) | +| Laser lines, Gaia RVS | 2363 FGK stars within 75 pc | none above the null; a line at the threshold carries a median 2.9e-15 erg/s/cm2, 1.2e20 W isotropic or 7e4 W through 10 m aimed at Earth at the median star, from each star's residual noise and G_RVS flux | +| Laser lines, HARPS | M and K dwarfs, transit-zone stars, 97 sun-like stars within 30 pc | none above the null | +| Laser lines, ESPRESSO, UVES, FEROS | sun-like stars within 50 pc | no recurring group above the null; of the steady peaks above it, ESPRESSO's six lie within the neighbour model's own dip and its seventh (6961.5 A) where seven other stars carry model residuals; FEROS's nine sit in one night's exposures, eight of them the night of 2018-03-22 at one detector wavelength, and its tenth where 25 other stars carry residuals; one UVES group left, a cosmic ray on a low-S/N pseudo-continuum peak | +| Laser lines, SOPHIE | OHP archive: 1465 F to M dwarfs within 50 pc with high-resolution spectra on three or more nights, with the second fibre | no recurring group above the null; the one steady peak above it, 33 Peg at 3950.65 A between Ca II K and H, lies where 29 other stars carry residuals of their neighbour models (`laser_sophie`) | +| Laser lines, GALAH DR4 | 699 spectra of 621 dwarfs within 100 pc, each shifted to the star's rest frame | 35 isolated emission-like peaks above the absorption-like null in 33 stars, all in camera I, whose null (21) sits far below the other cameras' (86-205) and whose continuum carries 36 emission-like peaks above S/N 20 against one absorption-like; 26 stars explained by the exposure's other fibres, the same fibre's other runs of the night, the star's other spectra or a peak narrower than three quarters of the instrument's width, the other 7 in their raw HERMES frames from the AAT archive: in six observations of three or four exposures the fibre holds no light in every exposure near the peak's column and single exposures hold charge there, one event of them on the trace with light's width as 0.4-7 per cent of the single-exposure events across 11-37 fibres of the same frames are, and the S/N 1687 peak, in an observation of one exposure, is charge 2.2 px from the fibre's trace (Findings); threshold median 1.3e-15 erg/s/cm2 a camera, 3e4 W through 10 m at the median star and 50 W at the nearest (4.3 pc) | +| Laser lines, APOGEE DR17 | 3370 dwarfs within 100 pc, combined spectra and 14178 visits | none above the null; threshold median 1.6e-16 erg/s/cm2 from the combined spectrum's S/N and 2MASS H, 1.1e19 W isotropic, 2e4 W through 10 m at 1.6 um | +| Laser lines, DESI DR1 | 7718 stars within 100 pc | coadds of two or more exposures explained; 4749 single-exposure stars (62 per cent) need a second epoch; threshold median 2.1e-16 erg/s/cm2 a camera, 5e3 W through 10 m at the median star, 300 W within 20 pc and 5 W at the nearest (3.6 pc) | +| Laser lines, LAMOST MRS | 14400 stars within 100 pc | 18 features in single stars against 17 by chance, mostly in two of 22-238 exposures; read in every exposure of every night of their stars, all 19 are one or two pixels wide above half their excess against an instrumental FWHM of 5.6-6.5 pixels, so they are detector pixels and not light through the spectrograph, and besides that six sit on masked, variance-inflated or dead pixels, eight have exposures whose peaks lie more than half a resolution element apart, four fill one night and none of the star's other nights, and three are single exposures of nights whose other exposures are flat; the strongest, 241 sigma in three exposures of one night, is a block of pixels at 1800 times the continuum beside it with the pipeline's variance inflated a thousandfold; per-exposure threshold median 3.0e-15 erg/s/cm2, 6e4 W through 10 m at the median star (`laser_lamost_mrs`) | +| Laser lines, CARMENES DR1 | 362 M dwarfs | none once every epoch and every star is registered in its own frame | +| Laser lines, ultraviolet | StarCAT, COS, IUE, FUSE, and STIS after 2004 (4206 exposures of 867 stars) | steady stellar lines in line-crowded spectra only; the seven Arcturus features sit at the brightest flux within 10 A of them, as windows between the absorption lines of a blanketed K-giant spectrum do, at the wavelengths of V II, Cr II, Mn II, Fe II and Co II lines (three within 0.3 km/s), three shared at z > 5 by one other star each; 0.1-7 W through a 10 m aperture aimed at Earth within 5 pc, the beam 0.005 au wide at 2 pc | +| Short-lived elements | Tc, Pm, Pa, Pu, Am and Cm in HARPS, UVES, FEROS and ESPRESSO spectra of sun-like stars within 50 pc | 9 of 2262 tests below p 0.01 against 22.6 expected (a Poisson probability of 0.001 for so few: the nulls are conservative, the p values thinning at both ends because the scatter criterion keeps lines whose scores lie beyond 3 sigma in 1.3-2.8 per cent of cases against the random wavelengths' 1.5-3.6), all shared blends or one double star; Tc I limits 1.6-5.3 mA, A(Tc) < 0.69 for solar-type stars with HARPS and ESPRESSO on Korg curves of growth from A -1 to 3.5, which is 1.7e19 kg of Tc-99 in a solar convective envelope, the product of fissioning 6.6e20 kg of U-235, several thousand times the Earth's uranium, so the limit reaches system-scale disposal and not a planet's | +| Periodic spectral modulation | Borra and Trottier's 234 SDSS stars in SDSS, LAMOST and DESI | no modulation at 1.6465e-13 s | +| Industrial gases | K2-18 b's MIRI transmission spectrum | consistent with zero, too noisy to test | +| Mid-infrared excess | AllWISE, 170 FGK stars from Breakthrough Listen sessions | a debris disk, a blend and a catalogued excess | +| Fully enclosed stars | 36603 AllWISE sources red in W2-W3 | the 72 moving dark sources lie in clouds or among young stars | +| Dark companions | Gaia DR3 orbits (279) and proper-motion anomalies (195) | median bounds 0.3-0.4 per cent of the companion's light at 300 K; the four 3-sigma excesses among the anomalies are a diffraction spike, an M0 photosphere, 56 Per's white-dwarf companion and HD 59099's AllWISE photometry, 0.11 mag brighter at 12 um than the All-Sky release of the same exposures where the sample's two releases agree to 0.007 mag, its All-Sky excess +0.02 mag | +| SPHEREx spectra | Project Hephaistos candidates; Contardo and Hogg's 53 excess stars | background galaxies, a radio source, warm dust and red companions; JWST (Project Hephaistos IV, 2026) resolves the galaxies within about 1 arcsec of candidates D and E, the two whose SPHEREx spectra place the excess in a galaxy here; the fits from 1.6 to 5 um reach components above about 400 K only | +| Cold shells, 30-100 K | 27394 stars within 50 pc against AKARI | 35 matches against 26 by chance: clouds and known young disks | +| Habitable-zone stacks | WISE and DASCH at 178 hosts within 100 pc | intercepted fraction below 1.5e-5 at 300 K | +| Pulsars as megastructure hosts | 1978 timed pulsars against AllWISE | no ring-like counterpart | +| Vanished POSS I stars | 5893 infrared counterparts | four red sources, none detected at W3; a source of R 19 enclosed at 200-600 K would reach W3 11.1-11.6 or W2 14-17, inside AllWISE's and CatWISE's limits, so the test covers enclosures of the catalogue's sources at those temperatures | +| Radio from inactive stars | VLASS, LoTSS-DR2 and RACS-low against nearby stars | at the chance-alignment rate; the two brightest coincidences, 52.6 mJy at 0.34 arcsec from Gaia DR3 2906691964510880128 and 81 mJy at 1.2 arcsec from Gaia DR3 1283261877869284096, are background radio galaxies, the first by a steady steep spectrum from 0.86 to 3 GHz (alpha -0.5 to -0.7) that no star gives, the second resolved by LoTSS (9 x 7 arcsec at 144 MHz) with a second WISE source beside the star (`vlass_quiet_radio_stars`) | +| Circular polarisation | V-LoTSS, RACS-low2 Stokes V, MWA | pulsars, active stars and published brown-dwarf candidates | +| Linear polarisation above the synchrotron ceiling | NVSS (VIII/65): 26973 sources above 10 mJy with polarised flux above 6 mJy | the Rician-debiased polarised fraction's lower bound at three sigma against 0.72, the most incoherent synchrotron gives: median fraction 0.058, 99th percentile 0.51; 23 above the ceiling, every one with a polarised flux at or above its total flux (debiased fractions 0.98-2.97), which no component can have and which the diffuse polarised emission of the field explains, the sources lying in Fornax A's lobes, on the Galactic plane in Cygnus, Cassiopeia and Aquila and in other extended fields, so the catalogue's polarised fluxes are the field's where the Stokes I component is small; none at a pulsar; the Rician errors alone would put 0.6 sources above the ceiling (`nvss_polarisation_ceiling`) | +| 21 cm lines, HI4PI | 27723 stars within 50 pc, two rest frames, and blind | at the noise and cold-hydrogen rates | +| Lines below the ionospheric cutoff | Wind/WAVES 1995-2021, STEREO-A and -B | none outside spacecraft and terrestrial lines; RAD1 measured only 32 to 38 of its 256 channels in nearly every minute of every year and the archive interpolates the rest, so every RAD1 line of the full-channel test was a measured channel above interpolated neighbours; at the measured channels alone, 2020 holds 26 persistent lines, all plasma-line and auroral below 500 kHz and none above 700 kHz (`wind_rad1_2020`); RAD2's channel scatter is 2.4 per cent of the galactic background, so a 5 sigma line in its 20 kHz channel is 2e-16 W/m2, 6e7 W isotropic at 1 au and 2e18 W at 1 pc, and STEREO's 50 kHz channels reach about 2e-15 W/m2; 64 per cent of RAD2's band and 52 per cent of STEREO's lie inside the terrestrial service bands, where a line is assigned to the service | +| Sidereal persistence | e-Callisto in Greenland, Norway, Alaska and Australia | nothing at two stations beyond bright-source transits | +| Solar-gravitational-lens receivers | RACS and VLASS at 119 antipodes | one on-track source against four at controls | +| Stars in planetary-radar beams | JPL radar astrometry 1968-2025 | 813 stars in the beams of 825 radar pings, the nearest at 48.9 ly behind 2017 SL16 (Arecibo, 2019 September); the first replies are due in 2117 (`radar_beam_stars`) | +| Reply windows | transit-zone stars within 45 ly in Breakthrough Listen | GJ 169 only: rest-frame lowest p 0.032, S band in occupied allocations; L-band curved tracks leave two lone hits at 1424.51 and 1424.64 MHz in the one ON scan of 2016 August 26, the -66 and +66 kHz sidebands of a carrier at 1424.5787 MHz that switched on for two minutes with sidebands at -121 and +121 kHz as well, all drifting at +0.55 to +0.65 Hz/s where a source fixed on the sky drifts at -0.11 Hz/s; the carrier recurs on that drift in the scans of Hip21932 and Hip20897 17 and 12 minutes earlier (S/N 7.6 and 8.1, within 140 Hz of the extrapolation), so it is a transmitter in the sidelobes with a drifting oscillator (`curved_gj169_l`) | +| Fresh transit-zone entrants | Gaia DR3: the 40,499 stars within 100 pc and 5 deg of the ecliptic with proper motions, their motion in ecliptic latitude, joined to Hipparcos, the coverage store and the Breakthrough Listen target list | 2,352 see Earth transit the Sun now, and 7 enter the zone within the next century, the nearest Gaia DR3 35227046884571776 at 3.8 pc in 2042; a list for the tests that look at the zone, with Wolf 359 and 89 Leo searched in radio (`etz_fresh_entrants`) | +| Pulsar antipodes | 45116 stars near 100 pulsar antipodes | none at p below 0.01 in the coverage store | +| High-energy sources | 2626 Gaia sources within 20 pc against eRASS1 and 4FGL | flare stars and active binaries; gamma-ray coincidences at the chance rate | +| TeV neutrinos | IceCube tracks at 271 systems within 10 pc | consistent with background | +| Millimetre flares | 66 SPT-3G flare stars | X-ray active stars and late-M emission-line dwarfs | +| Narrowband millimetre lines | ALMA pipeline cubes, 96 spectra of 20 stars within 20 pc | none at 6 sigma in 87130 channels; 464 of 480 injected 8-sigma lines recovered | +| Long-period radio transients | 16 published LPTs against Gaia DR3 at their localisations | ten white-dwarf binaries, X-ray outbursts or rotators; no star at the DM distance beyond chance at the other six | +| X-ray periodicities | Chandra and XMM-Newton within 10-20 pc | at the chance rate | +| Ultraviolet pulses | GALEX and HST photon lists within 10 pc | flare peaks and chance; one isolated 100 ms near-UV brightening of GJ 725 A, 7 photons against 0.2, clean of detector and field events, fixed to the star in rebuilt detector coordinates; a census of 116 GALEX NUV eclipses finds 98 isolated 7-photon bursts, the mapped ones recurring at the detector's edge, and none on a catalogued star matching GJ 725 A's (`galex_burst_census`); the visit is the star's only one with a photon list, its two all-sky visits having none in the public bucket, and GJ 725 B in the same visit holds 3 photons in its busiest 100 ms against 0.1 expected; the nine photon clusters at false-alarm probability below 0.01 among 147 star-eclipses of 51 stars against 4.8 expected are five events, two of them counted once per component of G 272-61 and Wolf 424, on Wolf 359, Ross 128, Wolf 424, G 272-61 and GJ 725 A, every one a flare star, so they are flares | +| Glints | Kepler and TESS candidate periods; TESS 20 s within 30 pc; asteroid light curves | at the chance rate; the per-cadence scatter after detrending is 780 ppm (Kepler short cadence), 1600 ppm (TESS two-minute) and 3000 ppm (TESS 20 s), so a 5 sigma flash is 0.4 to 1.5 per cent of the star, a perfect flat reflector of 3-8e15 m2 reflecting the star's disc; the four quiet cadences required on each side pass a flash in white noise with probability 0.69, and the package's end-to-end test of the Kepler detector recovers 0.62 of isolated 10 sigma flashes; the one-to-three-cadence window covers spinning reflectors whose beam crosses the observer in minutes, not orbit-locked mirrors whose glints last 1.5 to 6 hours | +| Hollow planets around old stars | Exoplanet Archive: 627 planets with measured masses at 3 sigma and bulk density below 1 g/cm^3 | escape parameter Lambda against host age: the lowest Lambda belongs to young planets (V1298 Tau c and d, HIP 67522 b, Kepler-51 c, 17-300 Myr), as evaporation predicts; of 379 around stars of 3 Gyr or more none is below 10, the lowest Kepler-223 e at 10.5 (`exoplanet_hollow`) | +| Nightside light | 63 ultra-short-period rocky planets | none above 3 sigma; median limit 102 ppm, which is 21 times the starlight the median planet intercepts, (R_p/2a)^2 = 0.5-33 ppm, so the limits bound only light of a non-stellar source, 4e21 W at the median (2e20 to 1e23) | +| Clarke exobelts | 461 Kepler planets | none; median limit 117 ppm six planetary radii out | +| Clarke exobelts beyond 30 days | Kepler DR25 long-cadence light curves of the 331 candidate and confirmed planets below 2 Earth radii beyond 30 d on 322 FGK dwarfs (4000-6500 K, log g 4 or above, Kp 16 or brighter), where tides leave a planet unlocked and its synchronous orbit lies inside the Hill sphere | shoulders k Rp/v beyond contact, k 3-90 within half the Hill radius, against random phases: 284 planets measured in 893 planet-k tests, no null phase above z 5; 7 planets above z 4, 2 of them above 5 on both sides (KOI-4371.01 at 7.5, KOI-3436.01 at 7.2); against a null detrended as the transit is, with the light curve's own contacts and transit times, all 7 fall to z -0.9 to 2.2, every catalogue duration among them short of the light curve's (KOI-4371.01 8.6 h against 11.1; KOI-3436.01 5.0 h against 24.8, its transit times spread by 735 min); 3-sigma shoulder limits at k = 6 of 55 ppm best and 215 ppm median (`exobelts_kepler_long`) | +| Transit shapes | 1116 Kepler and 255 TESS rejects | eclipsing binaries, variables and smooth dips; the eclipse on a blue supergiant is TOI-796.01, a 1.6 mmag dip at 0.81 d on a star whose radius puts that orbit inside it, a pulsation or a blended binary and a TFOP false alarm | +| Timing steps | 1810 Kepler candidates; 2939 LMC Cepheids | known timing variations and chance | +| Impulsive period changes | Holczer et al. (2016) Kepler transit times: 1810 KOIs with 20 or more good transits | a two-segment ephemeris continuous at a break scanned over the transits against the best sinusoid and the quadratic, the kink's gain in chi-square less the extra parameter's log N as its evidence: 6 kinks above 10 over both at 5 sigma in the period change; each candidate's own sinusoid at a random phase with first-order autoregressive noise of its residual scatter (60 draws) is beaten by two, KOI-2217.01 and Kepler-142 b, and both kinks rest on the series' last transits, KOI-2217.01's on its final two (-143 and -175 min after 35 within 50) and Kepler-142 b's on its final one (-44.5 +- 6 min), so with any one transit left out the evidence falls below 10 and none remains; KOI-984.01's and KOI-3692.01's kinks sit inside their sinusoidal timing variations (`impulsive_period_changes`) | +| Century-scale dimming | DASCH, 300 sun-like stars | two trends, both inconsistent between plate series | +| Dimming in survey photometry | TESS, Hipparcos epochs, Hipparcos to Gaia, Gaia epochs, Gaia alerts, NEOWISE | explained, or at the rate of control stars | +| Polarised reflectors | 819 stars within 50 pc | 4 polarised beyond the interstellar expectation with no explanation, three of them on one photoelectric measurement each from Heiles' compilation (1630-4540 ppm at 3.9-4.8 sigma); the fourth, HD 101805 (F8V, 34 pc, 3.9 Gyr), reads 223 ppm at 9 deg on one night, rising from 172 ppm in R to 314 in B, where the nine stars measured at the ppm level nearer than 35 pc within 22 deg read 12-45 ppm, five of them at 72-88 deg; the far infrared leaves too little dust to scatter that much light and hot dust polarises by 30 ppm or less, more in the red (Marshall et al. 2016), while a cloudlet in front of it would have to end within 2.7 pc of its sightline and carry a field turned 63-79 deg from its surroundings'; its 2026 Gemini/GHOST spectra measure the gas in front of it from 2027 July | +| Intrinsic polarisation of quiet dwarfs | the Panopoulou et al. (2025) compilation (J/ApJS/276/15): 37210 stars with Stokes q and u, Gaia EDR3 identifiers and distances, 29442 unflagged with five or more neighbours within 3 deg and 20 per cent in distance, 28704 of them judged within their own catalogues | the residual Stokes vector against the neighbours' mean over its error and the field's scatter: above 3 sigma in 8.3 per cent against 7.4 with the measurements reassigned among neighbours, above 5 in 1.2 against 0.9; four dwarfs within 200 pc at 5 sigma with residuals above 0.1 per cent and five times the field's scatter, discordant in angle or in an unpolarised field: HD 142832 (0.42 per cent) sits in the Lupus 1 field of Alves and Franco (2006) at the cloud's distance, Dachs SMC 2-61 (1.65 per cent, RUWE 8.9, an X-ray source) is a binary or a blend in a crowded SMC field, and two rested on single old catalogue entries: HD 127769 (A7V at 187 pc, 1.3 per cent at 43 deg in Heiles 2000 against the field's 0.4 per cent at 87 deg) is interstellar after all, since Gaia gives it A_G 0.32 where its nearer neighbours have none and Planck's 353 GHz dust at its position is polarised at 18 per cent with a field that predicts starlight at 52 deg and 1.9 per cent for the full column, the measured 43 deg and 1.3 per cent sitting on that sightline; and HD 31435, an F9/G0 at 100 pc, 8-9 Gyr old at the turnoff, read at 5.48 +- 0.15 per cent and 47 deg in Johnson V on the Lowell 42-inch in 1977 November and listed by name in Table 2 of Moneti et al. (1984), whose other 93 stars of that run read below 0.4 per cent within 130 pc and rise with reddening beyond; no other polarimetry of it exists in 135 VizieR catalogues; Gaia gives E(BP-RP) 0.00 and B-V 0.565 against an intrinsic 0.58, WISE sees the photosphere to 22 um, TESS, K2 and Hipparcos are flat to 0.03 per cent, RUWE 0.99 and a proper-motion anomaly of 20 +- 32 m/s allow no companion, Gaia's 17 velocities over 920 d are constant to 1 km/s, and the Harvard plates show no dimming around 1977 against matched stars on the same plates; the angle matches the field's 46-66 deg behind the cloud, and HD 283904, a reddened A2 star of the same brightness 5 arcmin away at 214 pc with A_G 1.3 and the 1.527 um interstellar band in its APOGEE spectrum, would read near that value; Planck's 353 GHz polarisation at the position (6-8 per cent, read from the HEALPix map by HTTP range) predicts 49-54 deg for starlight behind the column, against the measured 47, and 2.3-2.8 per cent for its amount (P_353 over 5.4 MJy/sr), half the measured value, so a swap needs an efficiently polarising sightline; the star's Gaia XP spectrum against 40 unreddened twins is flat to 0.3 per cent from 400 to 700 nm and 0.5 per cent high at 800-900 nm, within the twins' spread, which excludes a tenth of the light reflected from aluminium or a dielectric and leaves a grey reflector; Pan-STARRS profiles against three stars of like brightness in the same frames show no excess light at 2-13 arcsec in any filter, so no extended reflector beyond 100 AU either, and with WISE inside 10 AU and Gaia's image statistics between, a reflector has no distance left; so the 1977 entry is a wrong star on a one-in-twenty sightline, and one measurement of both stars decides (`intrinsic_polarisation`) | +| Imaging survey candidates | Gemini/NICI and NaCo | bound companions, background stars and field dwarfs | +| Phase-space clustering | 2977 wide binaries in the coverage store | only the likeness of co-natal stars | +| Orbital poles against the Galactic plane | Gaia DR3 nss_two_body_orbit astrometric solutions (Orbital, OrbitalAlternative, OrbitalTargetedSearch, AstroSpectroSB1) with Thiele-Innes elements, 125786, joined to binary_masses: 1361 companions whose lower mass bound lies below 0.08 Msun (74 with the upper bound below 0.2) against 87382 with lower bounds above 0.2 | each orbit's inclination and the two candidate nodes from the elements, the fraction with either candidate pole within 15 deg of a Galactic pole (3.4 per cent for one isotropic pole, 6.3 for the stellar set's two): possibly substellar 6.2 per cent (84 of 1361) against the stellar set's 6.3 reweighted to the same Galactic latitudes (p 0.59); the strict set 9 of 74 against 4.7 +- 2.1 at that size (p 0.04), the one reading of a small set among several (`orbital_poles_galactic`) | +| Asteroid spins, surfaces and radar | LCDB, Gaia DR3 reflectance spectra, radar albedos | known fast rotators, no solar-cell surface, no specular reflector | +| Area-to-mass ratios | 301 small bodies with non-gravitational terms | three light bodies: 2008 GO98, 'Oumuamua and the dark comet 2016 NJ33 | +| Exact commensurability | 2393 planet pairs in the NASA Exoplanet Archive | none within 1e-5 of a small-integer ratio; 5 within 1e-4 against 3.4, the closest in the librating chains of TOI-1136, Kepler-223 and HD 110067 | +| Light without mass | 42 Gaia DR3 astrometric orbits within 100 pc with HARPS or HIRES velocities | 9 photocentre orbits the velocities exclude: close companions (HD 80883, HD 163441, HD 105113B), a long-period companion (HD 217850), HD 223238's 61-day period beside the scanning law, and blended double-lined stars, the two whose velocities scatter by 0.5-0.9 km/s being pairs Gaia itself sees: Gaia DR3 1754663916181432704 shows two image peaks in 51 per cent of its transits and 792549013757246976 had a neighbour's spectrum deblended from 10 of its 29 RVS transits, so their orbits are photocentres of resolved pairs and their velocities are blends; none with warm W3 excess | +| Cold shells, 10-30 K | 27394 stars within 50 pc against Planck PCCS2, PGCC and AKARI 140-160 um | matches at the chance rate of shifted positions; the strongest would need more than the star's luminosity: cold clumps and cirrus | +| Joint anomaly across methods | 223 targets with rank-calibrated p values from two or more of seven families of runs | no star beyond chance: the strongest, Gaia DR3 5730371484020807808 (elements 0.05, glints 0.05), at 0.86 of the family-shuffled maxima; most runs give no p yet | +| Lasers in line cores | the steady peaks of the HARPS, ESPRESSO, FEROS and UVES runs inside chromospheric and Balmer cores | 6 unresolved peaks above the core null, all in Balmer and He I lines 17-100 km/s from their centres where the neighbour template dips; none in the Ca II H and K or Na D cores | +| Warm dust without pollution at white dwarfs | DESI DR1's 45053 white-dwarf spectra (zpix) joined on Data Lab to unWISE and Gaia DR3: 6627 with unWISE matches, 1434 detected in W1 and W2 with parallaxes at 5 sigma | the white dwarfs' own G - W1 and G - W2 against BP - RP as the photosphere locus (scatter 0.33 mag): 13 exceed it at 5 sigma in both bands, 5 of them unblended with excess black bodies at 900-1500 K, every one 1.6-3.3 mag above the photosphere in W1, the excess of an unresolved brown dwarf rather than the 0.3-1 mag of a dust disc; their DESI spectra against the pipeline's templates constrain Ca II K only to 40-430 mA (G 17.2-19.5), so no accretion test reaches the 50 mA level, and no disc-like excess appears in a sample whose W2 detections confine it to the nearest and brightest white dwarfs (`desi_wd_dust_pollution`) | +| Cold excess around white dwarfs | 16676 white dwarfs within 100 pc (Gentile Fusillo et al. 2021) against AllWISE | 25 with W3 or W4 above the photosphere at 3 sigma and W1-W2 photospheric; the strongest are an extended plane source, an optical ghost, single-exposure detections and cirrus at LSPM J0543+3637 | +| Bodies hotter than sunlight allows | 74609 NEOWISE thermal fits with a free beaming parameter (68500 objects) | 8 fits below eta 0.6 at 2 sigma, each at one epoch, the lowest pinned at the fit's floor; no object below it at every fitted epoch | +| Flux in discrete levels | TESS 20 s light curves of the stars within 30 pc (1806 sectors) | 2096 steps between adjacent 30-minute medians at 7 sigma with transitions of 2 minutes or less, 149 of them common to three or more stars of a sector and 1134 of flares, rises whose light falls by half its jump within the next half hour and the steps down within three hours after them; the 826 left split 504 up and 322 down on 347 light curves, and none holds three levels each revisited, 11 holding two, among them BY Dra's spotted and flaring pair and HD 72946, 10 arcsec from the brighter HD 72945 (`tess20_levels`) | +| Nova ellipsoids | T CrB's 1866 and 1946 eruptions (916 pc, Gaia DR3); Gaia DR3 stars within 100 pc on either ellipsoid in the TESS years, 2-minute light curves of sectors 1-99 | stars of G 6 or fainter observed at their arrival (2 sigma of the parallax-set date): 1946, 180 stars, 593 capped lone flashes against 555.8 from the same sectors and 260 light curves with a flash against 286.1; 1866, 211 stars, 417 against 419.1 and 199 against 211.3; the raw counts' excess (1400) comes from saturated stars brighter than G 6 (`tcrb_nova_ellipsoid`); eight more eruptions by the same test, stars at arrival with capped lone flashes against expectation and light curves with a flash against expectation: GK Per 1901, 203 stars, 469 against 508 and 225 against 254; V603 Aql 1918, 184, 391 against 383 and 191 against 203; RR Pic 1925, 152, 241 against 254 and 112 against 119; DQ Her 1934, 145, 254 against 285 and 120 against 138; CP Pup 1942, 176, 426 against 432 and 200 against 218; V1500 Cyg 1975, 148, 585 against 461 and 274 against 267, the count's excess carried by a few light curves with several flashes each, chiefly TIC 307985337 (158 in its 20 window sectors, a G 9 binary with RUWE 44 whose flashes vary sector by sector) and TIC 219861041 (RUWE 34, an astrometric and spectroscopic binary with a 7 km/s velocity amplitude), active binaries whose flares and systematics track the sectors, not the arrival; SN 1572, 201, 528 against 506 and 238 against 259; SN 1604, 280, 647 against 749 and 319 against 360 (`nova_ellipsoid_gkper` to `nova_ellipsoid_sn1604`) | +| Earth-transit-zone stars at opposition | TESS sectors 42-46 2-minute light curves of Gaia DR3 stars within 100 pc and 0.27 deg of the ecliptic (766 star-sectors) and 1500 control star-sectors 1-5 deg off it | 27 transit windows (6.5 hours either side of opposition) observed: no lone flash against 0.37 expected from the same stars outside the windows and no brightening against 1.12; the 111 control windows hold 7 lone flashes against 4.82 (`tess_etz_opposition`); sectors 70-72 add 12 windows on 12 stars with 1 lone flash against 0.53 expected and no brightening against 0.64, the 129 control windows holding 3 against 4.6 (`tess_etz_opposition_70_72`); sectors 91-92, the ecliptic pointings after 72, add 8 windows on 8 stars with 1 lone flash (5.1 sigma, TIC 135070915, sector 91) against 0.26 expected and no brightening against 0.03, the 74 control windows holding 2 against 1.37 (`tess_etz_opposition_91_92`) | +| Top-hat flares | 1806 TESS 20 s light curves of stars within 30 pc | 256 brightenings with sharp symmetric edges that a box fits better than a flare, against 263 dips of the same shape: the rate of instrumental steps | +| Clockwork flares | Yang and Liu (2019) Kepler flare catalogue: 2304 stars with 10 or more flares | de Jager's H from 0.5 d to a third of each span with 20 harmonics; the 40 highest against 20 draws of other stars' flare times in the same quarters, which keep Kepler's gaps: 22 beat every draw away from rotation, one a burst in three cycles, 2 at the quarter or downlink spacing, none an eclipsing binary, and 19 phase-locked with a scatter of 0.004-0.017 of the period (KIC 7838383 at 49.91 d from 16 of 30 cycles, KIC 9267997 at 22.24 d, the rest at 0.5-3 d near the cadence floor), none below the 1e-3 of a clock; the two long clocks on fast rotators are beats: KIC 7838383 rotates at 1.0472 d with a second spot period at 1.0685 d, which beat at 52 d, and KIC 7746984 at 0.7398 and 0.7377 d, which beat at 268 d with the flare clock at its half, the flare rate following the visibility of the active regions as the two spot groups drift past each other (`kepler_clockwork_flares`) | +| Superflare deficit among planet hosts | Yang et al. (2023) TESS flare catalogue (J/A+A/669/A15): 60810 flares with energies on 11131 of 264643 two-minute targets, with the TESS objects of interest (PC, CP, KP) and the confirmed planets' stars: 83 flaring hosts with 332 flares above 1e33 erg against 11048 flaring non-hosts | each host's ten nearest non-hosts in temperature, radius, distance and sectors drawn 2000 times: the hosts' fraction of flares above 1e34 erg among those above 1e33 is 0.283 against 0.350 +- 0.060 (p of a deficit 0.14), and 48 per cent of the hosts carry a flare above 1e34 against 48 +- 4 per cent of the draws; a two-sample test of the pooled energies gives p 0.009 (medians 10^33.56 and 10^33.72 erg), carried by the few hosts with many flares, so the draws over stars are the reading (`superflare_deficit`) | +| Clockwork flares, TESS | Yang et al. (2023) TESS flare catalogue: 1426 stars with 10 or more of 60810 flares | the same H-test from 0.2 d to a third of each span, against other stars' flare times in the same 13.7 d orbits: 9 of the highest 40 beat every draw, 8 of them bursts in one or two cycles at the 240 d spacing of TESS's year-long pointings and TIC 457100137 at 1.213 d with a phase scatter of 0.0087, 30 times the 2 min cadence floor and above a clock's 1e-3 (`tess_clockwork_flares`) | +| Fission-product abundances | 50742 GALAH DR4 stars with clean Zr, Mo, Ru, Ba, Nd and Eu | fission-like patterns rarer than the mirror at every threshold (71 against 230 above 5 sigma), the strongest single-element outliers in cool stars; 23 FGK dwarfs carry Mo and Ru, all of them 4800-4880 K at [Fe/H] +0.1 to +0.4 with errors of 0.11-0.28 dex and none beyond 2.5 sigma from solar in either element, so the thin envelopes where pollution shows are barely sampled and hold no signal to read (`fission_galah`) | +| NEOs on unreachable orbits | JPL Small-Body Database near-Earth objects in the delivery model's empty cells | 24 retrograde, all at e 0.74 or more; none retrograde below e 0.3; one near-circular orbit inside 0.75 AU above 25 deg (2025 LP) within the Atira population; 12 above 60 deg below e 0.25, reachable through Kozai cycles | +| CNO-processed unevolved dwarfs | APOGEE DR17: 31351 dwarfs with log g above 4.2, Teff 4800-6500 K, [Fe/H] above -0.3 and unflagged C and N | [C/N] against the dwarf locus in Teff and [Fe/H] (scatter 0.096 dex): 91 nitrogen-rich at 5 sigma and no carbon-rich mirror; 57 of the 91 are Gaia DR3 binaries against 28 per cent of random dwarfs, the mark of transfer from an evolved companion or blended spectra, and 78 carry binary, s-process, sodium, rotation, evolution or Teff-edge flags; the 13 that carry none all carry ASPCAP's VMICRO_WARN, the microturbulence grid-edge warning that biases the carbon and nitrogen read from the CN bands in dwarfs, seven with TEFF_WARN or STAR_WARN as well, so the nitrogen excess is the pipeline's (`apogee_cno_dwarfs`) | +| Herded stars | APOGEE DR17 dwarfs within 100 pc with their own radial velocities and Gaia astrometry (6044 with 3D velocity errors below 0.5 km/s) | 903 pairs within 10 pc and 1 km/s in 31 groups, the largest the Hyades (62 members); [Fe/H] spreads above 0.2 dex among members within 600 K of each other only in the Hyades' coolest M dwarfs, at the pipeline's temperature edge, and in one metal-poor pair 540 K apart (-1.22, -0.94) (`apogee_herded_stars`) | +| Coherent hyperbolic meteor streams | Global Meteor Network trajectories 2018-2026: 3.58 million orbits, 40753 sporadic meteors hyperbolic at 3 sigma | incoming asymptotes and v_inf from each orbit, neighbours within 1 deg and 3 km/s against the 10 deg density: 35 meteors below p 1e-4 in 10 groups, 8 of them IAU shower members with overestimated speeds (PER, ORI, ETA, XIP); the largest, 16 meteors from 2022-2026 at solar longitudes 80-214 on one asymptote (ecliptic 134.5, -1.6; RA 136.5, Dec +15.0) at 12 km/s, is matched by a 16-member group in one of three realisations of a 1.5 per cent speed overestimate shared by the elliptic sporadics (74000 simulated), while 15 realisations thinned to the observed 40753 at 1.0-2.0 per cent give 3-31 meteors below p 1e-4 and groups of up to 14; SonotaCo's independent 353231 orbits hold 1 meteor on the asymptote against 0.16 from the local density and about 1.6 a real stream would give; no star within 100 pc shares its velocity on its line (`gmn_hyperbolic_streams`); the focal-line test of the 12 km/s asymptote, whose members Earth's gravity would spread along loci reaching +-52 deg of latitude, half of them south, as Earth crosses the line near solar longitude 134.5: the Aug 3-11 loci hold 529 meteors against a mean of 16 on 11 control asymptotes, but 510 of them north where the Perseids (204 tagged) and the apex sporadics sit and 19 south against 10 by chance, so the excess is the speed-overestimated shower population and not a stream (`gmn_focal_line`) | +| Cosmic-ray doublets | Pierre Auger Phase One, 2635 events above 32 EeV (2004-2020) | pairs within 2 deg: 8 within 10 days against a time-permuted mean of 5.7 (p 0.21) and 2 within a day against 0.56 (p 0.11); no triplet within 30 days (0.34 expected); one pair's circle holds Kapteyn's Star at 3.9 pc, its members 1.8 and 2.1 deg from it, beyond the 0.9 deg resolution (`auger_doublets`) | +| Cosmic-ray doublets, open data | Pierre Auger open data 2024 (a tenth of the events): 2355 inclined showers and 22751 from the 1500 m array | inclined: 7 pairs within 2 deg and 10 days against 5.1 permuted, 2 within a day against 0.50, no triplet; 1500 m array: 569 against 559, 69 within a day against 57 (p 0.08), 349 triplets within 30 days against 361 (`auger_doublets_inclined`, `auger_doublets_sd1500`) | +| Self-luminous asteroids | ATLAS phase curves (VizieR VII/288): 39239 of 127012 with phases below 7 and above 25 deg | slopes over 5-30 deg from H, G1, G2 (median 0.0277 mag/deg); 221 pinned at the flattest the model allows (0.0179), with median residuals of 0.28 mag from rotation; 107 of them have literature albedos, 0.03-0.74, none above 0.8 (`atlas_self_luminous`) | +| Centrifugal habitats | LCDB frequency-diameter table, 8854 asteroids | strength needed above the gravity spin limit (2.33 h at 2000 kg/m^3): no kilometre body under 10 minutes or needing 100 kPa; of 8 bodies of 0.3 km or more needing over 1 kPa, 2019 MA2 (0.49 km from H, 2.62 min, quality 2) needs 97 kPa, within a monolith's strength, and 2008 RA106 (3.7 km, 54 min, quality 2-) 11 kPa (`lcdb_spin_strength`) | +| Yarkovsky sign test | JPL transverse non-gravitational terms of 611 asteroids (567 at 3 sigma), DAMIT pole solutions | all 14 drifts with poles have the sign the spin gives (11 inward on retrograde spins, 3 outward on prograde); five drifts exceed all absorbed sunlight at 500 kg/m^3 and albedo 0.5, four of them the published dark comets 2003 RM, 2005 UY6 and 2012 UR158 and the active 362P, and the fifth, 2016 TA56, on a Jupiter-family orbit (T_J 2.69, q 0.59) like the outer dark comets; at 2000 kg/m^3 and albedo 0.14, ten, adding 1998 SH2 (T_J 2.91) and 2006 VC (T_J 3.72, A2 at 3.7 sigma) (`yarkovsky_sign`); 2016 TA56 refitted in ASSIST gives A2 -3.54e-12 +- 0.17e-12 au/d^2 with site weights, -3.56 +- 0.19e-12 with the sqrt(N/4) same-night deweighting of JPL's fits and -3.45 +- 0.37e-12 (9 sigma) with the whole 2007 night as one position, the figure to quote; a radial term fitted alongside is A1 +3.7 +- 1.9e-10 (2 sigma) with A2 -3.32 +- 0.21e-12 beside it; the term rests on the one-night 2007 precovery (without it -2.2 +- 4.3e-12; a gravity-only orbit through the later apparitions, predicted there to 0.2 arcsec, misses the precovery by 3.45 arcsec, 3.0 of them across the apparent motion where no clock error reaches, both reports being re-measurements of the same CFHT frames, and misses the 2025 positions by 10.5 arcsec, 8 across), and NEOWISE W2 gives D 2.4 km (1.4-3.7) and albedo 0.017, like the dark comet 2005 UY6, the drift 15-39 times all absorbed sunlight at 1000 kg/m^3; the two orbits part by 4-7 arcsec in 2030 August-September, where one 0.2 arcsec position separates them at 4.7 sigma (one position a night) to 7.5 sigma (site weights) after both orbits' covariances are propagated; refitted with one later night left out at a time, A2 has a jackknife error of 0.53e-12 (6.5 sigma), resampled nights with the 2007 night held give -4.9 to -3.2e-12 (95 per cent of 200), clipping and error-floor variants keep it at 7.4-10.6 sigma; the twelve CFHT frames of 2007, re-measured against Gaia DR3, hold the 3 arcsec cross-track offset, both reports lying 0.10 arcsec rms across our track, and none of the twenty known asteroids within 0.5 deg (SkyBoT) moves within 5 arcsec/h and 10 deg of it; under a night-level covariance whose shared variance restricted maximum likelihood sets at tau 0.17 arcsec (0.11-0.23), A2 is -3.85 +- 0.30e-12 (13 sigma), and the twelve 2007 positions would have to share a further 1.2 arcsec to bring it under 3 sigma (0.68 for 5 sigma); every orbit fitted without 2007 puts the object on one line in those frames (0.93 arcsec west per 1e-12 of A2, A1 spreading it only along the line), and the median flux along it finds the measured source alone (0.96 of its flux at A2 -3.75e-12, at most 0.05 elsewhere) and nothing at the gravity-only position to 3.9 mag below it (3 sigma, against 954 control lines, none reaching half the detection's flux); the census of all sixteen frames finds 68 moving sources besides it over 0.86 deg^2 (21 of the 22 known ones on the frames), none within 5 arcsec/h and 10 deg of its motion and three within 10 and 20, recovers 109 of 115 injected copies within 0.5 mag of its brightness and links nothing with the frame times shuffled, so 8e-6 unrelated movers are expected within 30 arcsec, 0.5 arcsec/h and 1 deg of it; no other archival image before the discovery reaches it (DECam 2013 September at V 23.9 gives S/N 0.9 and 2.2, the two orbits 0.5 arcsec apart then); one 0.2 arcsec position in 2030 July would measure A2 to 0.39e-12 without the 2007 night; of the fourteen published dark comets, thirteen carry a transverse term and the screen flags six, the seven inner ones of 4-21 m lying at xi_typ 0.01-0.09 with their published accelerations in the radial and normal terms (`darkcomet_2016_ta56`); 1998 SH2 refitted the same way gives A2 -6.1e-13 +- 0.24e-13 au/d^2 (-6.4e-13 +- 0.54e-13, 12 sigma, with each night as one position) across its 1998, 2016 and 2025 apparitions, chi2/dof 0.67 against 0.90 without it, and NEOWISE W2 gives D 0.64 km and albedo 0.019 at eta 1.4 (0.39-0.93 km over eta 0.9-1.9), so the drift is 1.2 times all absorbed sunlight at 1000 kg/m^3 on a Jupiter-family orbit (T_J 2.91, q 0.79), a twentieth of 2016 TA56's by that measure; large-aperture imaging during its 2025 August close approach found a weak tail, so it is a comet (Farnocchia et al. 2026), which the screen picks out from its drift alone (`darkcomet_1998_sh2`); 2006 VC's A2 rests on its 2025-2026 apparition and the gravity-only orbit fits all four apparitions as well (chi2/dof 0.96 against 0.95), the two orbits parting by up to 25 arcsec in 2034 February (`darkcomet_2006_vc`) | +| Nightside heat on bare rocks | published phase curves of LHS 3844 b (Spitzer) and GJ 367 b (JWST MIRI) | nightside power below 1e19 and 4e18 W at two sigma; Kardashev-I powers are out of reach | +| Waste heat in ultra-diffuse galaxies | SMUDGes DR9, 7070 galaxies; AllWISE within 3 arcsec and Gaia DR3 within 2 arcsec through CDS XMatch | 7 centroid sources at 5 sigma in W3 or W4, 2 of them neither AGN-coloured nor Gaia stars (both at W1-W2 0.43-0.47), against 11 and 6 at positions 60 arcsec away (`smudges_waste_heat`) | +| Surface-brightness-fluctuation deficit | Cosmicflows-4: 414 galaxies with an SBF modulus and another method in the galaxy (191) or its group (223) | 5 too far by 0.3 mag at 4 sigma, the weak-fluctuation sign, against 2 too near: NGC 1023 against a group modulus of 2.3 Mpc, the dust lanes of M64 and the edge-on NGC 4565, and two Fornax galaxies 0.5 mag behind the cluster's group modulus (`cf4_sbf_deficit`) | +| Missing bolometric flux | 14959 Kepler giants: seismic radii (Yu et al. 2018) against Gaia luminosities (Berger et al. 2020) | deficits as common as excesses at every threshold; the extreme deficits are background giants oscillating in foreground dwarfs' apertures | +| Missing bolometric flux, eclipsing binaries | DEBCat (Southworth): 388 detached eclipsing binaries, 252 with both components' luminosities and Gaia DR3 parallaxes by CDS XMatch, 117 with components below 8000 K within 1 kpc at RUWE 1.4 or less | G predicted from the components' log L and log Teff with bolometric corrections at the Gaia distance, the extinction the larger of Gaia's A_G and 2.7 E(B-V) from the catalogue's B-V against the components' intrinsic colours: G_obs - G_pred median -0.04 mag, robust scatter 0.12; one system too faint by 0.3 mag at 3 sigma, KIC 2557430 (KOI-6277, +1.05 +- 0.19 mag, RUWE 0.81), whose published surfaces (1.88 and 1.23 Rsun at 7050 and 6050 K, Hoyman et al. 2020) outshine its Gaia distance 2.6 times while an earlier light-curve analysis (Kamil and Dal 2017) read it as a triple with a gamma Dor pulsator and two flaring components; Gaia resolves the visual double WDS J19074+3749AB into the eclipsing pair (G 11.44, 2.916 +- 0.012 mas, RUWE 0.81, radial velocity varying by 20 km/s) and a co-moving K star 2.4 arcsec away (G 13.30, 2.946 mas), inside Kepler's pixels, and gives the pair 6130 K and A_G 0.001, so the catalogue's B-V of 0.58 is its own colour and not the 0.38 of a 7050 K primary with reddening, and its FLAME luminosity with the K star's sums to 2.9 Lsun against the solution's 9.7: the published temperatures, and the extinction the test inferred from them, are too high, and the light is not missing; 12 too bright, third light and blends; BG Ind, IM Per and the other high-RUWE systems set aside (`debs_missing_flux`) | +| Transits faster than escape velocity | Kepler DR25 threshold-crossing events with Berger et al. (2020) hosts (29820; 6833 at S/N 15) and 7523 TOIs with host radii | a bound body crosses a star no faster than its surface escape speed, so a full transit lasts at least 2R sqrt((1+k)^2 - b^2)/v_esc, 37.5 min (R/Rsun)^1.5 (M/Msun)^-0.5 at b 0, whatever the eccentricity; Kepler events below 0.8 of the floor at their fitted geometry and within the host errors: 281, of which 253 sit on giants (background binaries and the giants' own variability), 26 on hot or multiply-flagged stars with 3 to 10 events each (pulsators), one is a catalogued shallow eclipsing binary, one a KOI with centroid flags, and the one left, KIC 7292626 (a 12 per cent, 50-minute dip at 204.8 d, S/N 465), is a single cadence flagged for cosmic rays with the other epochs flat; TOIs below 0.8 of the b = 0 floor: 242, of which 97 sit on giants, 69 have sub-day periods (contact binaries and pulsators), 34 are published false positives, and 42 planet candidates have no impact parameter in the TOI table; fitted in their TESS light curves, 20 last long enough for a bound orbit at any impact parameter (the TOI table's durations are short), 4 are V-shaped and 3 flat-bottomed with an impact parameter that keeps the crossing below the escape speed, 5 show no transit at the TOI ephemeris and 10 have no TESS light curve in the public stores, so none is a full transit faster than escape (`escape_transits`) | +| Transit-depth growth, Kepler to TESS | 102 KOI-TOI pairs matched within 6 arcsec and 0.2 per cent in period; Kepler long-cadence and TESS SPOC, TESS-SPOC and QLP light curves | 3 deeper in TESS at 5 sigma in the catalogues with the duration held and 2 shallower; measured the same way in both missions' light curves, none is deeper in TESS's uncorrected flux: Kepler-13 b and Kepler-718 b deepen only through the crowding correction (4249 and 11468 ppm uncorrected against Kepler's 4526 and 13828), Kepler-506 b reads 572 +- 53 ppm against 491 +- 4 rather than the TOI table's 771, Kepler-25 c agrees, and Kepler-546 b, shallower in the corrected flux as well, holds more light in TESS's aperture than the crowding model, the star giving 0.26-0.46 of it by its TESS magnitude, over which its depth is 4077 +- 424 ppm against 3584 +- 13 (`transit_depth_growth`) | +| Coronal X-rays without a dynamo | eRASS1 HamStar coronal counterparts (137896 with a distance and colour) with rotation periods from TESS (Fetherolf et al. 2023), Gaia DR3 and ZTF (Chen et al. 2020): 8287 at 3000-6000 K | L_X from the 0.2-2.3 keV flux and distance, L_bol from G and BP-RP, the turnover time from the colour's temperature (Cranmer and Saar 2011), the residual above the Wright et al. (2011) relation (saturated at 10^-3.13 below Ro 0.13, Ro^-2.5 beyond): scatter 0.82 dex at Ro below 1 with 0.24 per cent beyond 1.5 dex; only 26 stars reach Ro 1 (the period catalogues hold few slow rotators and Gaia's periods beyond 10 d are not trusted), and the one beyond 1.5 dex is a ZTF RS CVn binary at 1 kpc; late-F stars at 6000-6500 K sit 2-3 dex above the relation's extrapolation through their basal coronae and are left out of its domain (`dynamo_dead_xray`) | +| Circular polarisation at inactive stars | V-LoTSS (Callingham et al. 2023, 77 stars with Gaia counterparts) and the RACS circular-polarisation stars (Pritchard et al. 2021, 34) against eRASS1 and the rotation catalogues | 23 of the 31 in eRASS1's half of the sky are detected at L_X/L_bol 7.5e-5 to 3.6e-3, the rest are RS CVn, BY Dra and flare stars by name and type, 5 have catalogued periods, all short; none above 30 per cent polarisation at L_X/L_bol below 1e-5 with a period above 20 d (`dynamo_dead_polarised`) | +| X-ray output above the coronal ceiling | eRASS1 HamStar coronal counterparts, 137896 with a distance and colour | L_X/L_bol percentiles 50/90/99/99.9 at -3.42/-2.85/-2.30/-1.90 dex; 250 above 1e-2 and none above 0.1; of the 250, 153 sit off Gaia's main sequence, 38 carry a cataclysmic, young, emission-line or extragalactic type on the counterpart or on a SIMBAD object within 20 arcsec (HamStar's own SIMBAD columns miss both the entries SIMBAD names after Gaia and those it files at the X-ray position), and 59 are main-sequence M dwarfs of 3000-3550 K at 50-630 pc with counterpart probability 0.5 or more, whose flares reach 1e-2 within eRASS1's day-long scan average; the one K dwarf of the first pass, 1eRASS J082623.3-703142 at 7.6e-2, is the cataclysmic variable 1ES 0826-70.3 (PBC J0826.3-7033 of the Swift BAT catalogue, typed CV in the ART-XC catalogue, a pointed XMM target), which SIMBAD files 11 arcsec from its Gaia counterpart and which holds the same flux in eRASS1 and eRASS:3 (`coronal_ceiling`) | +| Straight limbs in occultation profiles | PDS small-bodies occultation bundle V4.0 (2024 March): 395 events of fit quality 3 or 4 with five or more positive chords from distinct sites, 376 measured once chords landing nowhere near the fitted position and ellipses off the nominal size are set aside, the table's unsigned western longitudes resolved by the catalogue's own fitted position | the longest run of consecutive limb points from different sites that a line fits within the timing errors, over the diameter: median 0.21, 90th percentile 0.67; 25 beyond the null of the fitted ellipse's points at the same angles and errors at p below 0.01, the longest on (3317) Paris 2020 (0.97 D over 6 sites), (134) Sophrosyne 1980 (0.86 over 5), (64) Angelina 2023 (0.82 over 7), (39) Laetitia 1998 (0.79 over 6) and (2) Pallas 1983 (0.70 over 6 of 120 chords), bodies whose shape models carry the flat facets an ellipse lacks, so a null from DAMIT shapes projected at each event's geometry is the step that remains (`occultation_limbs`) | +| Plate-like bodies | LCDB details V4.0: 47635 records with an amplitude and a phase angle, 31008 of quality 2 or 3 at phase angles up to 15 deg | amplitudes reduced to zero phase at 0.03 mag/deg: 5 records above 1.6 mag (0.02 per cent, against 0.11 per cent of the quality-1 records), one above 2.0 and none above 2.5, in five objects, every one a single TESS record of Pal et al. (2020) of a rotator of 9 to 627 h, three marked ambiguous; no body above the 4:1 ceiling at low phase (`plate_bodies`) | +| Shared clocks | ZTF periodic variables (Chen et al. 2020): 770043 of 781602 with periods off the day and sidereal-day aliases | pairs of stars more than 10 arcsec apart within a fractional period tolerance scale linearly with the tolerance (212473 at 1e-6, 631793 at 3e-6, 2077868 at 1e-5), as a smooth period distribution gives; of the 1e-5 pairs, 42112 agree in phase to 0.01 cycle at MJD 58700 against 41384 to 42020 with the phases shuffled eight times, in 3731 groups of three or more against 3675 to 3848; the largest groups (nine Miras at exactly 380 and 420 d) sit on periods the catalogue repeats exactly, its own grid, and the largest off the grid holds 7 against 8 shuffled (`ztf_shared_clocks`) | +| Stellar-synchronous orbits beyond the tidal radius | the cumulative KOI table's candidates and confirmed planets joined by KIC to the KOI rotation periods of McQuillan et al. (2013) and Mazeh et al. (2015): 1099 hosts, 541 planets at 10 d or more, where tides cannot synchronise the star | P_orb within 2 per cent of P_rot, 2 P_rot or P_rot/2: 25 against 23.4 +- 4.6 with the rotation periods shuffled among the hosts within 500 K bins (p 0.39); the four 1:1 matches consistent within their errors (KOI-757.01, 492.01, 3029.01 and 1910.01) fitted for the rotational phase at each transit in windows of three rotations with the transits masked: the phase scatters by 0.17-0.25 cycle over four years, as it does for eight rotators at like periods on the same epochs (0.13-0.28), the random walk of spots and not a lock (`synchronous_orbits`) | +| Aimed transits | cumulative KOI table: 2294 candidates and confirmed planets at S/N 20 (77 in the habitable zone); the DR25 injected planets' recovered fits (2091 at MES 20, impact parameters drawn uniformly) as the null | a structure placed to be seen from Earth sits at b below R*/a; the injections' fits put 7.4 per cent of a uniform population below b 0.05 and 37 per cent in 0.1-0.5, the KOI fits 20 and 25 per cent, the difference carried by fits with b at its lower bound and errors near 0.4 (21 of the 77 habitable-zone planets, every one with an error above 0.13), while the 153 planets with b measured to 0.1 hold 7 below 0.05 against 11.3 expected; no excess of central transits beyond what the fits' degeneracy puts there, and the test reaches only planets whose geometry the light curve constrains (`aimed_transits`) | +| Replicated bodies on unrelated orbits | LCDB summary table V4.0 (PDS) and the 2024 proper elements of the Nesvorny family bundle: 4315 numbered asteroids with quality-3 periods | pairs with periods agreeing to 2e-4, H to 0.1 mag and amplitude to 0.05 mag more than 300 m/s apart in the Zappala metric: 14 against 8.6 +- 2.8 with periods shuffled within half-magnitude bins; one group of three against 0.04 +- 0.18 (one in 25 shuffles): (3305) Ceadams, (5122) Mucha and (2019) van Albada at 2.7290-2.7294 h, H 12.3-12.4, amplitude 0.20-0.23, in three families, at the fast-rotator pile-up near the spin barrier; their Gaia DR3 reflectance spectra are all S-type, the commonest class, with red slopes reaching 1.21-1.26 at 770 nm and the 1 um band, so three ordinary stony bodies of like size at the spin barrier's pile-up share a period, as the shuffles give once in 25 (`replicated_bodies`) | +| Chromatic-only variables | Gaia DR3 vari_summary: 1073 variables brighter than G 16 with twenty or more transits whose G scatter is below 0.003 mag with BP and RP scatter above 0.02 each, against 172707 sources quiet in G (scatter below 0.01) | the ratio sqrt(s_BP^2 + s_RP^2)/s_G in half-magnitude bins of G puts 899 beyond the quiet sources' 5 sigma tail, the highest at 25 sigma with BP and RP scattering by 0.6-0.8 mag around a G constant to 0.002; the 60 highest read epoch by epoch (DataLink's unfiltered table, since the server refuses the valid rows alone for a source whose every transit carries a flag): 57 move BP and RP together at correlation above 0.9, a neighbour entering both windows on a few transits, 3 scatter in one band with the other quiet, and none moves BP against RP; the highest sit in crowded fields where the 3.5 by 2.1 arcsec windows take a neighbour (`chromatic_only_variables`) | +| Opaque lightweight eclipsers | Gaia DR3 vari_eclipsing_binary: 196041 eclipses deeper than 0.75 mag at periods under 30 d, 4803 with RVS velocities and 956 with ten or more RVS transits | the observed RVS semi-amplitude over the least a main-sequence eclipser of the depth's size demands: median 0.73, tenth percentile 0.33; 10 below 0.1 spanning five or more cycles, every one explained: 15 Eri, a naked-eye K giant whose 4.4 mag model depth is saturation; HD 112604, an A0 subgiant with an unphysical 98 per cent model depth; a twin binary and a 6-hour contact binary whose blended lines read low in the RVS; KOI-6903, where Kepler shows a 31 per cent eclipse at 38 d with a stellar secondary against Gaia's 1.8 mag at 1.4 d; and five stars whose light curves are flat at Gaia's period against model depths of 0.77-1.73 mag: two in ZTF to 0.05 mag, and TYC 4267-1042-1, TYC 7438-551-1 and BD+09 1746 in TESS to 0.1-0.3 mag in their clean sectors; so Gaia's derived depths and periods, not the velocities, are what fails, and the test needs light curves for its depths (`lightweight_eclipsers`) | +| Transiting bodies inside the fluid Roche limit | Gaia DR3 vari_short_timescale: 216720 sources faster than 8.6 cycles a day with gaia_source rows, 10906 on the main sequence with amplitudes above 0.02 mag, 10875 with epoch photometry; ZTF DR23 light curves of the candidates | a fluid body survives only at periods above 12.6 h times the inverse root of its density, so a box-shaped transit under 2.8 h at a main-sequence host needs 20 g/cm3 or a rigid structure; each band of the epoch photometry folded at the Gaia period, its double and half, a box of duty under 0.15 against a one-harmonic sinusoid, with the band's best sinusoid plus its own residuals resampled at the same epochs as the null (2000 draws, ten times that when fewer than ten reach the data): 1277 light curves box-like, the lead band's p-values uniform above 0.1 with a tail of non-sinusoidal variables (92 below 0.001 against 10.9), 12 box-like beyond the null at p below 0.001 with the other bands below 0.05, 11 of them with equal depths in BP and RP; in ZTF g and r the 10 with light curves hold no box from 0.45 to 2.2 Gaia periods, the best in each a single point below 3 sigma against Gaia's boxes of 0.06-0.97 mag at 10-15 per cent duty, so the boxes are Gaia's period or depth, and Gaia DR3 5713030673830580608 has no ZTF light curve (`roche_transits`) | +| Euclid Q1 sources bluer than the Rayleigh-Jeans limit | Euclid Q1 MER catalogue, 63 deg2: point sources at S/N above 10 in VIS, Y, J and H | 14 sources bluer than the Rayleigh-Jeans slope in I_E - H_E, 9 below -2.3, and none at 3 sigma with the NISP fluxes falling faster than nu^2, clean flags, unblended and not variable; the blue tail is flagged or blended sources (`euclid_bluefloor`) | +| Hot bodies too small to be stars | the Gaia Catalogue of Nearby Stars' sources within 100 pc bluer than BP-RP 0.6 at parallax_over_error above 10, their gaia_source and astrophysical_parameters rows by id: 5278 with black-body colour temperatures above 7000 K, 3812 of them on the white-dwarf sequence | the black-body radius from G, the parallax and the colour temperature (GSP-Phot fits white dwarfs with main-sequence libraries and cools them, so it is the second estimate, not the selection): median 0.016 Rsun; 33 below 0.003 Rsun and 22 of those with clean astrometry and single-source photometry, against 0.00 from the white-dwarf sequence pushed through its errors 200 times; all 22 are G 18-21 objects already in the Gaia white-dwarf catalogues, 4 of them in the IR-faint list of Bergeron et al. (2022), where collision-induced absorption strips the red light from a 3000 K helium photosphere and makes it read 9000-17000 K by colour, and none has an ultraviolet detection, which a body hot by colour would have; the floor is empty once that mimic is named (`hot_small_bodies`) | +| Non-thermal or recurrent lunar flashes | NELIOTA's flash lists read from the tables of Liakos et al. (2020) and (2024): 284 flashes of 2017-2023, 188 validated, 192 with R and I, positions to 0.5 deg | colour temperatures from R - I through the Planck ratio with Vega's colour as the zero point: median 2935 K, 5th-95th percentiles 2027-5020 K, none hotter than 8000 K or cooler than 1000 K at 3 sigma, none longer than 0.5 s (the longest 429 ms); pairs within 1.5 deg on the Moon 21 against 23.9 +- 4.9 with the longitudes permuted among the flashes (p 0.75), the closest a validated pair 0.10 deg apart on consecutive Perseid nights of 2018 August at (+26.7, +60.2) with temperatures of 4100 and 3000 K, where a tenth of a pair is expected that close (`neliota_flashes`) | +| Achromatic long-period modulation | ZTF periodic variables (Chen et al. 2020): BY Dra and RS CVn stars at 5-500 d with A_g of 0.15 mag or more and g brighter than 18, 1549 with catalogue A_r/A_g of 0.9 or more and 296 controls at 0.7-0.9; ZTF DR23 g and r light curves by object identifier, 1845 fitted at the catalogue period by a mean and two harmonics per band | the light-curve A_r/A_g of the controls has median 0.95 with robust scatter 0.25 where the catalogue amplitudes gave 0.83, so the catalogue ratio runs low; 9 candidates are grey at 3 sigma (ratio 0.97-1.15 with the bands in phase), eight of them RS CVn or BY Dra systems 2.1-4.1 mag above the main sequence by Gaia, where the companion that defines the class dilutes the spots' colour, and the ninth, ZTF J064125.61+093443.1 with W1-W2 of 0.46, a pre-main-sequence star in NGC 2264 (Gaia parallax 1.39 mas, 719 pc) occulted by its own disk; none left (`ztf_achromatic`) | +| TeV neutrinos moving with the planets | the IceCube ten-year point-source sample, 1134450 tracks over 10.3 years; Jupiter, Saturn, Mars and Venus from the built-in ephemeris on an hourly grid, events taken with the planet within 5 deg of the Sun set aside | the unbinned point-source likelihood in each planet's frame against 1000 time scrambles that fix the events and move the planet: Jupiter TS 0.9 (p 0.17), Saturn 0.6 (0.17), Mars 0.0 (0.42), Venus 0.3 (0.23), where the scrambles reach 9-13; 90 per cent E^-2 flux limits of 1.3-2.1e-12 per TeV cm2 s at 1 TeV, 1.5-2.4e-11 erg/cm2/s over 1 TeV-1 PeV, and luminosities below 7e9 W at Venus, 1e10 W at Mars, 2e11 W at Jupiter and 6e11 W at Saturn (`icecube_planets`) | +| Brick-wall spectral edges in GLEAM-X | GLEAM-X DR1 (VizieR VIII/110): 28682 sources above 20 sigma in the wide band, 27585 with sixteen or more of the twenty 7.68 MHz sub-bands from 72 to 231 MHz, observed in five 30 MHz settings | a curved power law against the same law times a step at each boundary within one setting, where the sub-bands are simultaneous: the chi-square gain's median 0.2, 99th percentile 7.9 and 99.9th 71 carry the sub-band flux-scale errors common to all sources; one source in the top 0.1 per cent with a step above 30 per cent, GLEAM-X J082817.6-221400 (1.23 Jy, +35 per cent after 115 MHz, its twenty neighbours flat there), which has a second 1.18 Jy source 69 arcsec away inside the low-frequency beam, so the sub-band fits merge and split the pair as the beam shrinks with frequency, the 76-99 MHz fluxes alternating by 40 per cent; none left (`gleamx_edges`) | +| Line-only X-ray sources in eROSITA DR1 | the eROSITA DR2 eRASS:3 main catalogue (VizieR J/A+A/712/A171): 1975540 sources, 63043 point sources with 80 or more counts in 0.2-0.5, 0.5-1, 1-2 and 2-5 keV | the fraction of the counts in each band with its errors: the maximum fraction has median 0.46, 90th percentile 0.62 and 99th 0.78 across the point sources; sources holding 85 per cent or more of their counts in one band at 3 sigma with every other band below 5 per cent number 13 in 0.2-0.5 keV, the supersoft class, 2 in 2-5 keV, the absorbed class, and none in 0.5-1 or 1-2 keV, where no continuum could put them; the spectral-fit version of the test on the released source spectra is the step that remains (`erosita_line_only`) | +| Dimming with mid-infrared brightening | the Hipparcos-to-Gaia dimming run and the NEOWISE W2 decade trends of the same stars: 671 with both | an industrial shroud dims the optical and brightens the mid-infrared together; the one-sided optical and W2 deviations, each scaled to its own run's robust spread, combined by Fisher's method, against the W2 trends re-paired among stars within 0.5 mag in W1 (2000 draws): the highest value, HIP 67858, is 24.4 sigma fainter in Gaia with W2 fading as well and arises by chance at its rank 99 per cent of the time, and the lowest chance at any of the twenty ranks is 0.04 (HIP 57115), one in twenty ranks; the top of the list is optical dimming alone (`dimming_ir_joint`) | +| The Wow! signal's cloud | HI4PI at the two fields of Arecibo Wow! II (19h25m02s and 19h27m55s, -26d57m +-20 arcmin), at the signal's -74 km/s LSR | no H I at the velocity in either field: 0.010 and 0.003 K against 0.019 K noise over the 10 arcmin average, N(HI) below 1.4e17 cm-2 for a one-channel line, while the fields' own emission peaks at +3 to +4 km/s with 26 K; the brightest pixel at the velocity inside each field's +-20 arcmin holds 0.11 K against a single-pixel noise of 0.040 K, and none of the 8800 pixels within 3 deg of either field reaches 5 sigma of its own noise there, while their mean spectrum carries the wing of the local emission falling smoothly through the velocity at 0.014 K, with no feature there; so no cloud filling HI4PI's 16 arcmin beam sits in either field at the velocity, and a compact one is diluted by the beam (`wow_hi4pi_cloud`) | +| Vanished numbered asteroids | JPL Small-Body Database: the 69 numbered asteroids brighter than H 17 with no observation since 2017, each orbit propagated to today and the bodies left within reach looked up in JPL Horizons | all 69 are trans-Neptunian objects (53) or Centaurs (16); 66 are fainter than V 21.5 at opposition now, 2004 YH32 and 2001 KD77 stand at V 21.5 tonight, the Centaur at declination -78, and Pluto's small-body orbit stops in 2016 because its ephemeris comes from the planetary solution; none is a body the surveys should see and do not (`sbdb_vanished_numbered`) | +| Negatively dispersed and pulsar-locked pulses | Breakthrough Listen 349 us products of 88 scans (44 ON, 44 OFF) of the nearest stars' cadences | broadband DM-peaked pulses at 7 sigma per scan, ON against OFF: DM < -1: 25 against 39; -1 to 1: 36 against 34; > 1: 9 against 12; the OFF scans carry every class as often, so the pulses are interference; folds at the Crab, Vela, B1937+21 and J0437-4715 periods as each star sees them: 26 of 176 folds below p 0.05 against 8.8 by chance, but the OFF scans of a control cadence fold as low (4 of 12) and one scan folds at two pulsars' periods at once, so the excess is the red noise of the zero-DM series, not a lock (`bl_pulses`); the HST photon-event lists await a re-download for the same fold, and the X-ray archives cannot serve it, since ACIS frames of 3.2 s and EPIC-pn imaging frames of 73 ms cannot resolve the periods, leaving only HRC and pn timing-mode observations, which the nearby stars lack | +| Beams between stars | the 2705 stars within 20 pc: pairs on opposite sides of the Earth within a 0.25 deg beam | the only sightlines on which traffic between two stars crosses Earth; 37 pairs within a 0.25 deg beam among 2705 stars, as many as random directions give (31 +- 6) (`beam_pairs_20pc`); the pairs' narrowband radio archives are not yet searched | +| Long occulters' companions | Gaia DR3 astrometry of VVV-WIT-08, VVV-WIT-07, Gaia17bpp, TYC 2505-672-1, ASASSN-21qj and J1407, with EE Cep as the control, against field stars matched in G and colour | none stands out: RUWE 1.04-1.10 with 26-70 per cent of the controls as high, and astrometric excess noise within the controls' spread except VVV-WIT-08's 0.42 mas at 16 sigma, in the top 12 per cent; EE Cep's known disk-bearing companion gives RUWE 1.28 and 0.16 mas, in the top 24-31 per cent, so Gaia DR3 cannot see the companions these eclipses need (`long_occulters_gaia`) | +| Interstellar arrivals along the ecliptic | 1I, 2I and 3I from JPL SBDB; 2e7 arrivals carrying the velocities of the 169740 Gaia DR3 stars within 100 pc, perihelia within 2 AU | 0.28 per cent within 5 deg of the ecliptic (isotropic 0.38, retrograde alone 0.14); passes as close as 3I/ATLAS's by Venus, Mars and Jupiter 1.5e-5 of all arrivals and 1.2e-3 of those along the ecliptic, 3.5e-6 together with the alignment; along the ecliptic and within 0.2 AU of one of the three 5.3e-4 (`iso_ecliptic_arrivals`) | +| Signals of interest traced through their sessions | Ma et al. (2023)'s eight signals of interest; every scan of their six Breakthrough Listen GBT sessions, 335 scans, in the 2.84 Hz product | MLc2-MLc8 lie on their own lines in their cadences' OFF scans at 4.8-11.5 sigma combined, 2-34 per cent of their ON level, and MLc3-MLc8 recur in 1-25 scans pointed at other stars; MLc8 is a carrier rising 1.72 kHz over four hours through four other stars' cadences, at S/N to 158 in OFF pointings against 20-40 in its own ON scans; MLc1, at 1188.54 MHz in the aeronautical radionavigation band, is in its ON scans alone, drifting at -1.51 and -0.85 Hz/s in the first two where a transmitter at rest at HIP 13402 would drift at -0.08 Hz/s (`bl_soi`) | +| Stars at rest with the Sun | Gaia DR3: the 169,740 stars within 100 pc with radial velocities and parallaxes at 10 sigma, 48,129 with their velocity relative to the Sun measured to 0.5 km/s | a companion keeping pace with the Solar System: 5 within 1 km/s against 1.01 from a velocity density flat near zero (Poisson p 0.004), the density in 1 km/s shells from 1 to 10 km/s at 0.86-1.39 of that flat value: CD-75 143 (0.29 km/s, 93 pc), UCAC2 1168584 (0.35 km/s, 93 pc), BD+68 1331 (G0, 0.71 km/s, 72 pc), the dMe star PG 0943+489 (0.82 km/s, 26 pc, RUWE 1.53) and Gaia DR3 5415736782809366144 (0.98 km/s, 84 pc); with RUWE below 1.4, 4 against 0.82 (p 0.0097) in 3 systems, CD-75 143 and UCAC2 1168584 lying 7.6 pc apart at 0.37 km/s as members of Crius 131 (Moranta et al. 2022), 40 stars at 113 pc moving at (-0.2, +0.5, -1.7) km/s relative to the Sun with a spread of 1.1-1.3 km/s, part of Theia 371 (Kounkel and Covey 2019); of 35,128 balls of the same density centred elsewhere in velocity space, 0.6 per cent hold as many stars and 4.3 per cent three or more systems; BD+68 1331 (HIP 112584) is a 0.3 Gyr star whose radial velocity of -0.3 +- 0.1 km/s Liu et al. (2015) measured when they rejected it as a sibling of the Sun; the sideways speeds of the 138,627 stars within 100 pc measured to 0.1 km/s, radial velocity or not, put 12, 37 and 193 below 0.25, 0.5 and 1 km/s against 11.4, 45.5 and 181.8 from the flat density, and one other star within 15 pc moves with the Crius 131 pair against 0.36 by area; an association moving with the Sun, as the young disc's do (`gaia_rest_stars`) | +| Stars on a straight line to the Sun | Gaia DR3: 75,785 stars within 100 pc with radial speeds above 20 km/s and sideways speeds measured to 0.5 km/s | an object aimed at the Solar System: 42 move sideways at under 1 km/s against 53.2 from a sideways-velocity density flat near zero; their least distances run from 30,237 au (Gaia DR3 510911618569239040 at 76 pc, receding, 2.77 Myr ago), the stellar encounters of the published lists (Bailer-Jones et al. 2022) (`gaia_headon_stars`) | +| Non-stellar spectra at stellar distances | Gaia DR3's discrete source classifier on the Gaia Catalogue of Nearby Stars beyond parallax 10 mas: 64 sources it calls quasar or galaxy at 0.9; SIMBAD | every one explained, some twice: 53 white dwarfs by SIMBAD or the colour-magnitude locus, 10 components of resolved multiples or stars with a catalogued neighbour within 10 arcsec whose light enters the BP and RP windows, 3 cataclysmic variables, 2 binaries and one source without photometry (`gaia_qsolike_nearby`) | +| Light that appeared since 2MASS | the Gaia Catalogue of Nearby Stars within 20 pc at G 5-13: 91 sources without a 2MASS best neighbour in Gaia DR3; the 2MASS point-source catalogue (II/246) by CDS XMatch | a source switched on since 1999: 88 lie in 2MASS within 5 arcsec plus 2.5 years of their proper motion of their position carried back to 2000, the cross-match's misses among fast stars (median 457 mas/yr); the other 3 are eps Ret B, eps Sco B and bet Aql B, secondaries in their primaries' glare (`gaia_no2mass_nearby`) | +| Objects of unknown nature within 10 pc | SIMBAD entries with parallaxes above 100 mas typed of unknown nature or not an object | one entry, omi02 Eri b, the retracted planet of 40 Eri, typed not an object (`simbad_unknown_nearby`) | +| Pulsars that hold their period | ATNF catalogue (VizieR B/psr): 1,843 isolated pulsars outside globular clusters and the Magellanic Clouds with a period derivative | a beacon kept at a constant period: 4 with a measured derivative zero or negative, J1829-1011 (-1.3 sigma), J1817-0743 (-0.3), J1144-6146 (-0.4) and J1852+0033 (none measured), none below zero at 3 sigma; J1024-0719, J1843-1448 and J1801-1417 turn negative only once corrected for the Galactic acceleration and the Shklovskii term at their DM distance (`atnf_spinup_pulsars`) | +| Pulsars on nearby stars | the 2,530 ATNF pulsars with positions against Gaia DR3 within 2 arcsec by CDS XMatch | a beacon placed at a star: 1,077 Gaia sources within 2 arcsec, 2 of them within 200 pc at 5 sigma, the helium white-dwarf companion of J0437-4715 (G 20.4, 7.1 mas) and a foreground star (6.6 mas) over J1701-3006E in the globular cluster M62 (`atnf_pulsars_on_stars`) | +| Planets on Earth's year | NASA Exoplanet Archive composite table: 86 planets with periods of 300-430 d | a period chosen to match ours: one within 0.2 per cent of the sidereal year, Kepler-1536 b at 364.758 d (0.14 per cent short), against 0.97 expected from the density of periods (`exoplanets_earth_year`) | +| Planetary systems in equal period steps | NASA Exoplanet Archive composite table: 535 consecutive triples in 356 systems of three or more planets | a spacing no resonance asks for: 3 triples step equally to 0.5 per cent, TOI-1136 c-d-e (1:2:3), HD 110067 d-e-f and Kepler-223 c-d-e (2:3:4), chains n : n+1 : n+2 that are arithmetic and resonant at once; 17 triples have equal period ratios (`exoplanets_period_steps`) | +| Asteroids on circles in the ecliptic | JPL Small-Body Database: 895,910 numbered asteroids | an orbit made rather than captured: none with eccentricity below 0.001 and inclination below 0.2 deg, against 0.01 from the 24 below that eccentricity and the 537 below that inclination taken as independent (`sbdb_circular_asteroids`) | +| Lithium in old cool dwarfs | GALAH DR4: 1,844 dwarfs below 5300 K (log g above 4.3) with a clean A(Li) and isochrone ages above 6 Gyr; their Gaia DR3 speeds; the red-arm spectra of the 135 above A(Li) 2.0 and of 135 lithium-poor stars of the same selection and S/N | an element such a star has burned: 135 above A(Li) 2.0, 26 of them at young-disc speeds (below 20 km/s) and 10 at thick-disc speeds (above 60 km/s); mass rules out an industrial origin, A(Li) 3.69 in a 0.04 M_sun envelope holding 1.9e21 kg of lithium, about 200 times the Earth's; the Li I 6708 line refitted in each spectrum at the instrument's width, at that width broadened by GALAH's vsini and at the star's own Ca I 6717.7 width, against the lithium-poor stars read at their partners' claimed widths (132 of 135 absent, 1 confirmed) and the same stars with lines of those widths injected (134 of 135 recovered, at 1.00 of the injected width): 95 lines confirmed, every one in a star with a sign of youth (vsini of 5 km/s or more in 92, H-alpha in emission, Ca II triplet activity or a young-disc speed) or of a companion, so their isochrone ages are wrong; 18 absent where GALAH gives 113-600 mA with a clean flag, among them the highest, Gaia DR3 3910691559800909568 (401 mA listed, 17 +- 28 mA measured, GALAH's own neural-network [Li/Fe] 0.21 +- 0.17); 1 much weaker; 21 at a median S/N of 6, too noisy to test; the one real line at a thick-disc speed, Gaia DR3 5489922653396735360, belongs to a close double whose images Gaia splits in 44 per cent of its transits (RUWE 6.6) and whose velocity reads 19.7 km/s in GALAH against 56.9 +- 16.4 km/s from Gaia's two transits, so its speed is not its own; none left (`galah_lithium_old_dwarfs`) | +| Planets on Earth's day | NASA Exoplanet Archive composite table: 170 planets with periods of 0.7-1.4 d | a period chosen to match Earth's turning: one between the sidereal day less 0.2 per cent and the solar day plus 0.2 per cent, TIC 18942729 b (0.998178 d, found by TESS from space, where no night aliases a period), against 1.64 expected (`exoplanets_earth_day`) | +| Planets on one clock | NASA Exoplanet Archive composite table: 330 planets with periods measured to 5e-7 | a period standardised across systems: no pair in different systems within 1e-6 against 0.04 from the pairs within 1e-4; the two pairs within 1e-5, Kepler-550 b with Kepler-435 b and Kepler-856 b with TOI-1135 b, differ by 11 and 19 times their combined errors (`exoplanets_shared_periods`) | +| Pulsars on one clock | ATNF catalogue (VizieR B/psr): 2,071 pulsars with frequencies measured to 1e-7 and first derivatives, carried to MJD 56000 | a beacon period shared between sites: 3 pairs more than 1 deg apart outside one globular cluster within 1e-6 against 1.23 from the pairs within 1e-4, each apart by 41 to 7,855 times the combined errors; periods the catalogue gives to two digits pile onto round values (4.1 and 3.6 ms) and are left out (`atnf_shared_clocks`) | +| Fast radio bursts at nearby stars | CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59): 536 bursts; the 312 sources of the Gaia Catalogue of Nearby Stars within 10 pc | a burst sent from a neighbour: one 2-sigma ellipse, FRB 20190429A's, holds a nearby double (Gaia DR3 2154880616774131840 and 2154880616774131712) 0.30 deg from the burst, against 1.88 with the bursts moved 5-20 deg in right ascension (`chime_frb_nearby_stars`) | +| Asteroids brighter than a mirror | JPL Small-Body Database: 128 asteroids with geometric albedos above 0.8; AKARI (J/PASJ/63/1117), WISE fits with errors (J/ApJ/741/68) and taxonomy from the ATLAS phase curves (VII/288) | a polished or white made surface: 93 fall below the 0.6 of the brightest natural surfaces at 3 sigma in AKARI or WISE or carry a dark class their albedo contradicts (27413 Ambruster and 1999 CX85 are C-types listed at 0.86 and 0.99), 24 are fits pinned at 1.000 and 11 are enstatite, basaltic or X-type surfaces; 17 rest on one albedo with no class or second measurement, at the sizes (1-4 km) where Pravec et al. (2012) found catalogue absolute magnitudes too bright by 0.3-0.5 mag, enough to bring 0.9 to 0.6 (`sbdb_mirror_asteroids`) | +| Retrograde orbits inside Jupiter's | JPL Small-Body Database: bound orbits with i above 90 deg, a below 4.5 au and q beyond 1.3 au | bodies circling against the planets' flow, which collisions and the planets remove: one, 2022 OF60 (a 4.28 au, e 0.68, i 124 deg), on a 15-day arc of orbit quality 8 with a Tisserand parameter of 0.47, a Damocloid captured from the comets (`sbdb_retrograde_inner`) | +| Objects on Earth's own orbit | JPL Small-Body Database: 23 asteroids with a 0.95-1.05 au, e below 0.05 and i below 3 deg | something parked on our path round the Sun: 23 bodies of 2-34 m; radiation pressure measured at 3 sigma for 4 (2020 GE, 2006 RH120, 2021 GM1 and 2020 CD3), area-to-mass ratios of 1.7-5.2e-4 m2/kg, a tenth of a spent rocket stage's or less, each allowing rubble's density or more at albedo 0.5 (662-5,659 kg/m3); the other 19 have arcs too short to measure it, and identified rocket stages such as 2020 SO leave the asteroid catalogue (`sbdb_earth_orbit`) | +| Light Gaia's outlier map could not place | Gaia DR3 Outlier Analysis (astrophysical_parameters, oa_neuron_information): 99,119 sources within 100 pc at G below 17 with RUWE below 1.4 and single-source BP/RP excess | 154 of the 900 neurons carry no class and hold 11.1 per cent of all mapped sources, but only 3 of the nearby clean sources against 11,000 at that share: the white dwarf G 171-B10A, a double and the cataclysmic variable GD 552 (`gaia_oa_unlabelled`) | +| Bright nearby light no class claims | Gaia DR3 discrete source classifier: 116,448 sources within 100 pc at G below 15 with RUWE below 1.4 | one source with every class probability below 0.5, its BP/RP excess not a single source's (`gaia_noclass_nearby`) | +| Something at rest in the universe's frame | Gaia DR3: 295,762 stars with radial velocities at heliocentric speeds of 300-440 km/s, 24,211 with velocity errors below 10 km/s | a body at rest relative to the cosmic microwave background moves at 369.8 km/s toward Galactic (84.0, -48.3) deg as we see it: none within 10 km/s of that velocity, against 0.39 around 1000 random directions of the same speed (`gaia_cmb_rest`) | +| Stars accelerating along their own motion | Gaia DR3 nss_acceleration_astro: 334,107 solutions at 5 sigma after the perspective term | thrust gathers accelerations along the motion: 4.53 per cent lie within 8 deg of it and 4.54 per cent within 8 deg against it, against 4.44 per cent for a uniform angle, the same small excess at both ends, which no thrust gives (`gaia_thrust_alignment`) | +| Copy stars on opposite sides of the sky | Gaia DR3: 48,075 stars within 100 pc with velocities to 0.5 km/s | no pair more than 90 deg apart alike to 0.002 mag in G and BP-RP, 0.2 per cent in parallax and 0.5 km/s in velocity, and none with the velocities shuffled (`gaia_copy_stars`) | +| Our explained flags in Earth's transit zone | the coverage store: 166,903 Gaia DR3 stars, 15,894 of them vetted | 48 vetted stars within 0.27 deg of the ecliptic against 413 at the store's share (`store_flags_etz`) | +| Our flags toward the obvious meeting-point directions | the coverage store: 180,822 Gaia DR3 stars, 32,003 of them vetted | toward the Galactic centre 3,646 vetted stars against 6,772 from the whole store's share, toward the anticentre 1,743 against 2,268 and toward the poles 3,394 against 2,208, the footprints of the surveys that produced the vets, which avoid the plane; with each run's own coverage setting its share, 3,819 run targets against 3,832 toward the centre, 1,786 against 1,771 toward the anticentre and 3,464 against 3,465 toward the poles (`store_flags_directions`) | +| Planets inside their own Roche limit | NASA Exoplanet Archive composite table: 1,287 planets with mass and radius measured to a third | none inside the fluid Roche limit at 3 sigma; the nearest, WASP-12 b, 0.3 sigma outside it (`exoplanets_inside_roche`) | +| Copy planets in different systems | composite table: 25 planets with mass and radius to 3 per cent | no pair alike to 1 per cent in radius, mass and period (`exoplanets_copies`) | +| Daysides hotter than their stars allow | the Exoplanet Archive's emission-spectroscopy table: 103 brightness temperatures with host temperature and a/R* | one above the hottest dayside that zero albedo and no redistribution allow, GJ 436 b at 3.6 um (1120 +- 20 K against 875 K), the band where Stevenson et al. (2010) found methane missing on the tidally heated planet (`exoplanets_dayside_excess`) | +| Period ratios that spell constants | composite table: 1,591 adjacent planet pairs | none within 1e-4 of pi, e, the golden ratio, sqrt 2 or sqrt 3, against 0.93 for five random numbers (`exoplanets_constant_ratios`) | +| Systems packed tighter than Hill stability | composite table: 1,482 adjacent pairs with masses and semi-major axes | 29 below 2 sqrt 3 mutual Hill radii: microlensing pairs with projected separations, masses from mass-radius relations, pairs near 3:2, 4:3 and 2:1 resonance (HR 8799, 7 CMa, HD 5319, HD 200964), the circumbinary claims around the post-common-envelope binaries NN Ser and HU Aqr, and Kepler-132 b and c, which orbit different stars of a binary (`exoplanets_hill_packing`) | +| Two planets on one orbit | composite table: 1,067 systems of two or more planets | no pair within 1 per cent in period (`exoplanets_coorbital`) | +| Pulsars with square pulses | ATNF catalogue (VizieR B/psr): 1,050 pulsars with both widths | none with W10/W50 below 1.05; median 2.00 (`atnf_square_pulses`) | +| Pulsars with no electrons in front | ATNF: 2,457 pulsars with a dispersion measure | none below 1 pc cm^-3; the lowest, J0108-1431, at 2.38 (`atnf_no_dispersion`) | +| Pulsars spinning faster than a neutron star survives | ATNF: 2,527 pulsars with a period | none below 0.7 ms; the fastest, J1748-2446ad, at 1.396 ms (`atnf_breakup`) | +| Pulsars radiating more than their spin supplies | ATNF: 1,563 pulsars with 1.4 GHz luminosity and spin-down power | none above it even taken isotropic over 1 GHz (`atnf_overpowered`) | +| Pulsars of one globular cluster on one clock | ATNF: 72 cluster pulsars timed to 1e-7 in 21 clusters | no same-cluster pair within 1e-4 (`atnf_cluster_clocks`) | +| Binary pulsars on Earth's year | ATNF: 256 binary pulsars | none within 0.1 per cent of a year; the nearest, J1823-1115, at 357.8 d (`atnf_year_orbits`) | +| Burst dispersions on shared values | CHIME/FRB Catalog 1: 492 sources, one burst for each repeater | 107 pairs within 0.5 pc cm^-3 against 111 +- 12 from the smoothed distribution; counting every repeat burst gives 216 against 140, the repeaters' own bursts (`chime_dm_shells`) | +| Bursts arriving together from different directions | CHIME/FRB Catalog 1: 536 bursts over 341 days | none more than 10 deg apart within 1 s, against 0.01 (`chime_simultaneous`) | +| Copy bursts from different directions | CHIME/FRB Catalog 1: 227 non-repeating bursts with width, fluence, scattering and spectral index | none alike in all four (`chime_copy_bursts`) | +| Gamma-ray bursts from nearby stars | Swift (HEASARC swiftgrb): 711 bursts with XRT positions; 2,575 sources within 20 pc | no star inside an error circle, and none with the bursts moved 1-2 deg (`swift_grb_nearby_stars`) | +| Nearby stars LAMOST labelled unknown | LAMOST DR10 low-resolution general catalogue | no spectrum classed Unknown reaches r-band S/N 50; the class holds low-S/N spectra alone (`lamost_unknown_nearby`) | +| Bright nearby stars DESI fitted badly | DESI DR1: 12,624 stellar spectra with a fit warning and a Gaia identifier | one within 100 pc at G below 16, Gaia DR3 3836824650659924992 (G 15.3), its warning bit 2048 that of poor data (`desi_badfit_nearby`) | +| Zinc far above iron | GALAH DR4: 226,305 clean dwarfs at [Fe/H] -0.3 to +0.3 | 58 above [Zn/Fe] +0.8 where the sample scatters by 0.11, their S/N in the blue arm, where the zinc lines lie, a median of 13 (`galah_zinc_excess`) | +| Dwarfs that look mined | GALAH DR4: 215,038 clean dwarfs at [Fe/H] above -0.3 | none with [Si/Fe] and [Al/Fe] both below -0.4 (`galah_mined_dwarfs`) | +| Interstellar bands within 50 pc | GALAH DR4: 198 stars within 50 pc with a fitted 5780 A band | 27 above 5 sigma and 20 mA, 19 of them below 4500 K, where the star's own lines fill the band; 8 hotter ones at up to 2.1 A, more than any 50 pc sightline holds, are open; the band's median is 56 mA at 0.5-1 kpc against 20 within 50 pc (`galah_dib_within_50pc`) | +| Stars spinning faster than they hold together | GALAH DR4: 320,994 clean dwarfs with v sin i, mass and luminosity | none; the fastest at 0.075 of break-up (`galah_breakup_rotation`) | +| Flares firing together across the sky | Yang et al. (2023) TESS flare catalogue: 60,810 flares | 3,876 pairs more than 10 deg apart within a minute against 3,657 from the rate at 10-60 minutes; 607 of them crowd minutes holding several pairs, the busiest at two moments of 2018 November and December when flares registered on many stars at once, the spacecraft's events and not the stars' (`tess_flare_synchrony`) | +| Standardised flares | Yang et al. (2023): 1,352 stars with ten or more flares | none whose energies agree to 5 per cent; the tightest spreads by 36 per cent (`tess_standard_flares`) | +| Stars steadier than photon noise allows | Kepler DR25 stellar table: 198,670 stars with 6-hour CDPP | 97 below 0.8 of the shot noise their Kepler magnitude gives, the lowest at 0.27, each over the full four years and most of the lowest at 6000-8200 K, where pulsations shape the pipeline's noise filter; no star can be quieter than its photons, so the figure is the pipeline's (`kepler_steadier_than_photons`) | +| Copied planetary systems | composite table: 535 consecutive triples | 3 pairs of systems with both period ratios equal to 0.1 per cent against 0.44 shuffled, every one a chain of 3:2 and 4:3 resonances (TOI-178 with K2-138, HD 110067 with Kepler-223, Kepler-80 with K2-138), the steps that migration in a disc builds and the shuffle breaks (`exoplanets_copied_systems`) | +| Planets brighter than a mirror | the emission-spectroscopy table: 128 eclipse depths shortward of 1 um with geometry | no geometric albedo above 1 at 3 sigma (`exoplanets_mirror_albedo`) | +| Planets orbiting inside their star or hotter than it | composite table: 6,057 planets | none inside its star; two hotter than their star can hold, Oph 11 b and CFHTWIR-Oph 98 b, young companions glowing from their own contraction (`exoplanets_inside_star`) | +| Pulsars paired in simple ratios | ATNF: 1,999 pulsars timed to 1e-7 outside clusters, 2,655 pairs within 1 deg | none in a ratio p/q to 1e-6, against 0.03 (`atnf_simple_ratios`) | +| Bursts masquerading from pulsars | CHIME/FRB Catalog 1 and the ATNF catalogue | no burst within 1 deg and 5 per cent in dispersion of a pulsar (`chime_frb_pulsars`) | +| Well-studied neighbours of unknown nature | SIMBAD entries within 100 pc | none typed unknown or not an object with 20 or more references (`simbad_studied_unknowns`) | +| Stars leaving the Galaxy from next door | Gaia DR3: 146,385 stars within 100 pc with velocities to 5 km/s | none above the 550 km/s escape speed; the fastest at 479 km/s (`gaia_unbound_nearby`) | +| Nearby stars SDSS could not classify | SDSS DR17 SpecObj through SkyServer: 9,148 primary stellar spectra at S/N above 20 with a redshift warning or no subclass; Gaia DR3 by CDS XMatch | 64 within 100 pc, every one typed by SDSS: 35 white dwarfs or cataclysmic variables in SIMBAD, many given the nearest template of another class (L, T, carbon, O, B, F-K supergiant) for want of white-dwarf templates, and 29 K, M and F stars typed as they are, most of the K and F stars at G 9-11, where high-S/N spectra show more outlying pixels than the fit allows (`sdss_unclassified_nearby`) | +| X-rays from cold white dwarfs | Gentile Fusillo et al. (2021): 12,007 white dwarfs within 100 pc below 8000 K; eRASS1 main catalogue by CDS XMatch | 21 within three positional errors of an eRASS1 source against 6-23 (mean 12.4) with the white dwarfs moved 2 arcmin; 6 share the error circle with a companion at the white dwarf's parallax (four M dwarfs, a K dwarf and a second white dwarf), 11 with other Gaia stars, and 4 lie 1.8-2.9 errors off with no other star in the circle, at the chance rate (`erass1_cold_white_dwarfs`) | +| Dwarfs whose 12 um output changed between 1983 and 2010 | IRAS PSC (II/125) and AllWISE (II/328) by CDS XMatch at 7,556 Gaia DR3 stars within 100 pc at G below 8: 1,226 measured in both | W3 - IRAS median 0.44 mag, scatter 0.10; two parted by 1 mag, both fainter in W3 and both the B stars of doubles, HD 58038 B and 20 Gem B, whose partners 7 and 20 arcsec away lie inside IRAS's beam and outside W3's (`iras_wise_12um`) | +| Dwarfs larger than their light allows | JMMC Measured Stellar Diameters (II/345) by CDS XMatch with Gaia DR3 FLAME radii: 62 dwarfs within 100 pc | measured over predicted diameter median 0.975, scatter 0.057; none above 1.2 at 3 sigma (`jmdc_swollen_dwarfs`) | +| Stars dimmer in the infrared than their spectra allow | Gaia DR3 RVS temperatures with GSP-Spec flags of 0 or 1 and AllWISE W1 through Gaia's best neighbours: 16,360 stars within 100 pc | G - W1 scatters by 0.106 mag about its locus; 28 with a colour temperature 500 K above the spectroscopic at 5 sigma, every one with a BP-RP temperature within 90 K of its G - W1 temperature, so the optical colour agrees with the infrared and the RVS temperature reads 500-760 K low, 19 of them at RVS temperatures of 3,880-4,100 K (`gaia_infrared_deficit`) | +| Hipparcos stars Gaia cannot find | Hipparcos new reduction: 15,332 stars at Hp 7-11 without a Gaia DR3 best neighbour; Gaia DR3 by CDS XMatch at positions carried to 2016.0 | 15,328 have a Gaia source within 10 arcsec, the best-neighbour table's misses; of the other 4, three carry a Gaia DR3 identifier in SIMBAD, and HIP 116191 is GJ 897 BC, a pair Gaia holds as two sources of G 10.0 6.5 arcsec from SIMBAD's position, where Hipparcos's solution of the double (parallax 5 +- 35 mas) does not carry it (`hipparcos_gone`) | +| RR Lyrae on one clock | Gaia DR3 vari_rrlyrae: 60,123 stars with periods to 1e-5 | 7,430 pairs more than 1 deg apart within 1e-6 against 7,392 scaled from the pairs within 1e-4 (`gaia_rrlyrae_clock`) | +| Cepheids on one clock | Gaia DR3 vari_cepheid: 994 stars with periods to 1e-5 | 2 pairs within 1e-6 against 0.46, one pair in each Magellanic Cloud (`gaia_cepheid_clock`) | +| Eclipsing binaries on one clock | Gaia DR3 vari_eclipsing_binary: 27,900 binaries with periods to 1e-6 | 791 pairs more than 1 deg apart within 1e-6 against 788 scaled from the pairs within 1e-4 (`gaia_eclipser_clock`) | +| Binary orbits on one clock | Gaia DR3 nss_two_body_orbit: 1,435 orbits with periods to 1e-5 | 1 pair within 1e-6 against 0.5 (`gaia_orbit_clock`) | +| Systems built from identical planets | composite table: 8 systems of three or more planets with every mass and radius measured to 15 per cent | none whose masses and radii are both consistent with one value; TOI-125's radii agree (p 0.55) and its masses do not (p 4e-5) (`exoplanets_identical_systems`) | +| Something closer than Proxima Centauri | Gaia DR3: sources with parallaxes above 700 mas | one, Proxima itself at 768.1 mas; none beyond it (`gaia_closer_than_proxima`) | +| Something faster across the sky than Barnard's Star | Gaia DR3: every source with a proper motion above 9000 mas/yr | one, Barnard's Star itself at 10393 mas/yr (`gaia_faster_than_barnard`) | +| Stars standing still in the Galaxy | Gaia DR3: 146,385 stars within 100 pc with velocities to 5 km/s | 2 below 30 km/s about the Galactic centre against 2.9 from the 23 below 60 km/s scaled by the volume of speeds: BD+11 4725 (23 km/s) and the halo subdwarf G 226-48 (29 km/s, [M/H] -1.1), then G 167-12 and G 240-40 ([M/H] -1.4) at 30 km/s (`gaia_still_in_galaxy`) | +| Radial velocities the Galaxy cannot hold | Gaia DR3: radial velocities beyond +-700 km/s measured to 5 km/s over ten or more transits | 2, Gaia DR3 347866482390401280 (+863 km/s) and 5254851637274716288 (-811 km/s), faint RVS spectra at expected S/N 5 with 6 of 14 and 9 of 17 transits deblended from neighbours, and no APOGEE spectrum (`gaia_rv_beyond_escape`) | +| A lattice among the nearby stars | Gaia DR3: 14,815 systems within 50 pc brighter than absolute G 10, those closer than 0.1 pc merged | Clark-Evans ratio 0.942 against 1.000 +- 0.004 for uniform volumes, clustered rather than regular (`gaia_nearby_lattice`) | +| Bright stars no older catalogue holds | Gaia DR3: 1,064 sources brighter than G 6 without a Hipparcos-2 or Tycho-2 best neighbour | 1,046 named in SIMBAD (the brightest stars, whose Gaia solutions have three parameters or a binary's perturbation) and the other 18 within 2 arcsec of a Hipparcos star; none uncatalogued (`gaia_bright_uncatalogued`) | +| Galaxies with parallaxes | Gaia DR3: 139 sources the discrete source classifier calls galaxies above 0.9 with parallaxes above 10 mas at 10 sigma | 137 with solutions Gaia's statistics doubt (RUWE, a second image peak, image asymmetry or excess noise), median G 19.3 and 132 within 15 deg of the Galactic plane; the other 2 move at 29 and 48 mas/yr with BP/RP flux excesses of 3.6 and 9.5, one 4.8 arcsec from the binary CD-34 6718, the neighbours' light in the spectra the classifier reads (`gaia_galaxies_with_parallax`) | +| Quasars that move | Gaia DR3: 391,934 quasar candidates both classifiers call quasars at QSOC redshift above 1 | 2 moving above 10 mas/yr at 10 sigma, both with solutions Gaia's statistics doubt (`gaia_moving_quasars`) | +| Planets denser than iron | composite table: 317 transiting planets below 30 Earth masses with measured mass and radius to 20 per cent | none smaller than a pure-iron planet of their mass at 3 sigma; the nearest K2-229 b (2.2 sigma) and Kepler-107 c (on the iron line) (`exoplanets_denser_than_iron`) | +| Planets in exact resonance | composite table: 598 adjacent pairs with both periods measured to 1e-5 | 1 within 1e-4 of a small-integer ratio, Kepler-87 b and c at 5:3 (+2.4e-5), against 1.04 from the pairs 1e-3 to 1e-2 from the ratios (`exoplanets_exact_resonance`) | +| Copies of Earth | composite table: 1,699 planets of 0.5-2 Earth radii with insolation and host temperature | none within 10 per cent of Earth's radius and 20 per cent of its mass, both measured, at 0.75-1.25 of its insolation around a 5300-6100 K star; the nearest Kepler-1126 c and Kepler-452 b at 1.45 and 1.63 Earth radii, their masses estimated (`exoplanets_earth_copies`) | +| Copy pulsars | ATNF (VizieR B/psr): 1,765 pulsars with period, period derivative, dispersion measure and W50 | no pair more than 10 deg apart alike to 1e-3 in period and 5 per cent in the other three, and none with them shuffled among pulsars of like period (`atnf_copy_pulsars`) | +| Binary pulsars on Earth's day | ATNF: 256 binary pulsars | none within 0.1 per cent of the solar or sidereal day, against 0.08 from the 4 within 10 per cent of a day (`atnf_day_orbits`) | +| Pulsars beyond the magnetar limit | ATNF: 2,052 pulsars with a positive period derivative | none with a dipole field above 1e16 G; the strongest the magnetar SGR 1806-20 (J1808-2024) at 2.1e15 G (`atnf_beyond_magnetars`) | +| Pulsar pairs whose frequencies spell constants | ATNF: 1,999 pulsars timed to 1e-7 outside globular clusters | 8 pairs whose frequency ratio equals pi, e, the golden ratio, sqrt 2 or sqrt 3 to 1e-6, against 8.9 from the 891 within 1e-4 (`atnf_constant_ratios`) | +| Bursts from inside the Galaxy | CHIME/FRB Catalog 1: 492 sources, one burst for each repeater | none with dispersion below the Milky Way's in both NE2001 and YMW16; the smallest excess FRB 20181030A at 62-70 pc cm^-3 (`chime_inside_galaxy`) | +| Bursts from Earth's transit zone | CHIME/FRB Catalog 1: 492 sources | 1 within 0.264 deg of the ecliptic, FRB 20190224C, against 1.33 from random right ascensions at the sources' declinations (`chime_transit_zone`) | +| Burst dispersions on a ladder | CHIME/FRB Catalog 1: 492 sources | the strongest spacing 9.45 pc cm^-3 at Rayleigh power 9.1, reached or exceeded by 5.8 per cent of draws from the smoothed distribution (median 6.4) (`chime_dm_ladder`) | +| White dwarfs above the Chandrasekhar mass | Gentile Fusillo et al. (2021): 16,281 white dwarfs within 100 pc with hydrogen-model masses | none above 1.40 solar masses at 3 sigma in both models; the heaviest WDJ200417.75-821223.74 at 1.38 +- 0.11 (`wd_above_chandrasekhar`) | +| X-rays from cold brown dwarfs | Kirkpatrick et al. (2021) 20 pc census: 133 T and Y dwarfs with Spitzer astrometry, carried to 2020.0; eRASS1 (half the sky) by CDS XMatch | no eRASS1 source within 15 arcsec, and none with the dwarfs moved 2 arcmin (`erass1_cold_brown_dwarfs`) | +| Ultraviolet from cold brown dwarfs | the same 133 T and Y dwarfs carried to 2007.0; GALEX GUVcat AIS (II/335) by CDS XMatch | no GALEX source within 5 arcsec, against 0-3 (mean 1.6) with the dwarfs moved 2 arcmin (`galex_cold_brown_dwarfs`) | +| Radio from cold white dwarfs | Gentile Fusillo et al. (2021): 12,007 white dwarfs within 100 pc below 8000 K carried to 1995.0; NVSS (VIII/65) by CDS XMatch | 20 with an NVSS source within 15 arcsec against 26-35 (mean 30.4) with the white dwarfs moved 2 arcmin, the radio sky behind them (`nvss_cold_white_dwarfs`) | +| Ultraviolet from the coldest white dwarfs | Gentile Fusillo et al. (2021): 885 white dwarfs within 100 pc below 4500 K carried to 2007.0; GALEX GUVcat AIS by CDS XMatch | 16 with a GALEX source within 5 arcsec against 5-14 (mean 10.4) moved 2 arcmin; most at NUV 21-22.7, what a 4500 K photosphere at G 17-18 gives at GALEX's limit, and the two at NUV 18.2 and 18.7 4 arcsec away (`galex_coldest_white_dwarfs`) | +| Infrared at isolated millisecond pulsars | ATNF pulsars below 30 ms with no orbit, outside globular clusters, timed to 1 arcsec; AllWISE by CDS XMatch, Gaia DR3 and the Legacy Survey DR10 for the matches | 3 of 35 with an AllWISE source within 3 arcsec against 0-1 (mean 0.5) moved 2 arcmin: at J1024-0719 the Gaia star that shares the pulsar's proper motion, its wide companion; at B1937+21 a reddened field star 2.2 arcsec off a timing position good to a milliarcsecond; at J1551-0658 a galaxy the Legacy Survey resolves (`allwise_isolated_msps`) | +| Unique variables next door | GCVS stars of the unique type; Gaia DR3 by CDS XMatch; SIMBAD | 13 of 93 within 100 pc, every one of a natural kind: five L dwarfs whose clouds turn with them, four magnetic white dwarfs carrying spots round (GD 356 among them, with its emission lines), the AM CVn binary GP Com, the gamma Doradus pulsator V2118 Oph, the spotted binary AS Dra, and UU CrB, whose one event is the 1980 superflare Schaefer, King & Deliyannis (2000) list on an ordinary F8 dwarf (`gcvs_unique_near`) | +| Gamma rays from cold white dwarfs | Gentile Fusillo et al. (2021): 12007 white dwarfs within 100 pc below 8000 K; Fermi-LAT 4FGL-DR4 | 28 inside an unassociated 95 per cent ellipse against 22-54 (mean 36.4) moved 1 deg; 39 more inside ellipses the catalogue gives to blazars, radio galaxies, pulsars, supernova remnants and the binary V918 Sco (`fermi_cold_white_dwarfs`) | +| Hard X-rays from the nearest stars | Gaia Catalogue of Nearby Stars: 2575 objects within 20 pc; Swift-BAT 105-month and 150-month catalogues (14-195 keV) | 0 inside a BAT error circle against 0-6 (mean 2.5) moved 1 deg; none of BAT's 13 catalogued stars lies within 20 pc (`bat_nearest_stars`) | +| Warm stars in Earth's transit zone | Gaia Catalogue of Nearby Stars with its WISE photometry; SIMBAD | 7 warm of 911 stars in the zone against 12.3 expected from the 186 of 13800 stars 1-5 deg away (p 0.96); the seven are bright G and K dwarfs, a giant and a double star (`etz_warm_stars`) | +| Radio from Earth's transit zone | Gaia Catalogue of Nearby Stars north of -40 deg; VLASS epoch-1 components by CDS XMatch | 0 of 1502 zone stars with a 3 GHz source within 3 arcsec, against 0.74 from the 11 of 22386 stars 1-5 deg away and a mean of 0.5 with the zone moved 2 arcmin (`etz_vlass_stars`) | +| Light at 4.6 um alone | Gaia Catalogue of Nearby Stars with its WISE photometry: 49753 stars at BP-RP 0.5-2.5 with W1, W2 and W3 measured; AllWISE flags; SIMBAD | 7 stars five widths above the W1-W2 locus with W1-W3 on it, against 7 as far below; 4 carry AllWISE contamination or extended-source flags, and the 3 left, K and M dwarfs 0.1 mag above the locus, are as common as the deficits (`w2_only_excess`) | +| Glitches firing together | Jodrell Bank glitch catalogue (Basu et al. 2022): 285 glitches in 107 pulsars timed to 2 days or better | 13 pairs in different pulsars within their epoch uncertainties against a mean of 8.8 (95th percentile 14) with each pulsar's glitches moved 100-2000 days, as many or more in 0.11 of draws (`glitch_coincidences`) | +| X-rays from Earth's transit zone | Gaia Catalogue of Nearby Stars in the eRASS1 half of the sky; eRASS1 main catalogue by CDS XMatch; SIMBAD | 83 of 762 zone stars with an eRASS1 source within 15 arcsec against 80.2 expected from the 1151 of 10938 stars 1-5 deg away (p 0.39), and 1.2 with the zone moved 2 arcmin (`etz_erass1_stars`) | +| Ultraviolet from Earth's transit zone | Gaia Catalogue of Nearby Stars; GALEX GUVcat AIS by CDS XMatch; SIMBAD | 251 of 1502 zone stars with a GALEX source within 5 arcsec against 294.5 expected from the 4389 of 22386 stars 1-5 deg away (p 0.996), and 17.0 with the zone moved 2 arcmin (`etz_galex_stars`) | +| Nearby dwarfs APOGEE could not fit | SDSS DR17 APOGEE on SkyServer: 5294 dwarfs within 100 pc at S/N above 100 and 4000-6500 K; SIMBAD; Gaia DR3 | 130 STAR_BAD, every one explained: 101 binaries (double-lined, scattering velocities, or Gaia's RUWE and radial-velocity swing), 27 with a temperature or gravity outside the pipeline's calibrated range, 2 by their SIMBAD types (`apogee_star_bad_dwarfs`) | +| Stars dimmed grey on thin-disc orbits | Gaia Catalogue of Nearby Stars with GSP-Phot metallicities and 2MASS; SIMBAD; GALEX GUVcat AIS by CDS XMatch | 335 of 149417 stars more than 1.5 mag below the main sequence with clean photometry, 66 of them crossing the sky at under 50 km/s against 269 faster; of the 66, 35 metal-poor by GSP-Phot or a J-Ks bluer than the main sequence's, 12 carrying a white dwarf's light (a J-Ks redder than the main sequence's at the star's BP-RP, a D+dM type or an NUV within 5 mag of G), 4 of other SIMBAD types, and 15 M dwarfs at G 15-18 with neither a metallicity nor an ultraviolet detection, left for spectra (`grey_dimmed_disc_stars`) | +| Methanol masers away from the Galactic plane | Pestalozzi, Minier and Booth (2005): 519 masers at 6.7 GHz; SIMBAD | 14 more than 2 deg from the plane, every one at a star-forming region: NGC 281, L1206, Cepheus A, Mon R2, NGC 2024, S231 and eight IRAS or MSX sources with young stars, cores or H II regions beside them (`methanol_masers_off_plane`) | +| Compact radio sources that move like neighbours | Radio Fundamental Catalogue rfc_2026c: 23866 VLBI-compact sources; Gaia DR3 by CDS XMatch; SIMBAD | 16 with a Gaia parallax above 2 mas: 14 known radio stars (RS CVn and Algol binaries, the Be star HD 142184, the Orion Trapezium, young stars), a blazar candidate at G 20.2 whose 4.5 mas parallax is the faint-end tail of spurious solutions, and a star 0.2 arcsec in front of a background source (`rfc_nearby_compact`) | +| Dead stars with living companions | Gaia DR3 binary_masses: 208 astrometric binaries with an unseen companion above 1.4 solar masses, with Gaia BH1-3; AllWISE and eRASS1 by CDS XMatch; SIMBAD | 15 with W1-W3 above 0.3 against 0-3 (mean 0.8) moved 2 arcmin: 13 under AllWISE's halo, spike, persistence or extended-source flags in the Galactic plane, 1 eclipsing binary, and Gaia DR3 5331686334409329664 at b 0.5 deg with W1-W3 1.19 and no explanation in the catalogues; 4 eRASS1 sources within 15 arcsec against 0-1 moved: the Am binary HD 67518, the double star GALEX J145250.3-192225, and the A stars HD 23021 and HD 97080, whose X-rays want a late-type companion their dark 1.6 solar-mass companions cannot be; the three black holes match nothing (`gaia_dead_companions`) | +| Identical black holes merging | GWOSC event list, GWTC-1 to GWTC-5: 282 mergers with component masses | 161 of 282 equal within one combined error, the pile-up of the convention that the primary is the heavier; of the 10 events with the primary to 10 per cent, mass ratios run 0.84-0.96, and GW250114_082203 alone reaches one within an error below 0.05 (0.96 +- 0.05) (`gwtc_equal_masses`) | +| Przybylski's star re-measured | ESO archive: the six highest-S/N HARPS and four highest-S/N UVES spectra of HD 101065; NIST ASD | the promethium line set sits deeper than 2000 random line sets of the same size (p 0.002 HARPS, 0.004 UVES) and the actinides and technetium at chance (p 0.05-0.7); the depth at the promethium positions rests on lines of Nd II (4297.80), Fe II (4157.92), Th II (4381.86), Y II and Cr II that this star's rare-earth forest carries, and without them the four and two lines left sit at p 0.05 and 0.08 (`przybylski_actinides`) | +| The random transiter in TESS | TESS QLP light curve of HD 139139, sector 91: 7556 cadences over 24.7 d at 607 ppm a cadence | 0 dips against 8.0 at K2's rate (Poisson 3e-4), with 3-sigma depths of 429, 248 and 162 ppm for 1, 3 and 7 h dips, which reach the deeper half of K2's 200-1600 ppm; whatever crossed the star in 2017 did not in 2025 (`hd139139_tess`) | +| Microlensing of the neighbours | Gaia DR3 vari_microlensing (363 events), gaia_source and vari_classifier_result; SIMBAD | 14 events on sources with parallax above 1 mas at 3 sigma: 11 with a doubtful parallax (RUWE above 1.4, or under 5 sigma at G above 19 in the bulge fields), 1 a young star brightening, and 2 clean events on stars at 0.8-1 kpc (Gaia DR3 2214532279378994816, 1819571454860230400) whose blended fits leave the lens anywhere in front of the source at any small mass (`gaia_microlensing_near`) | +| TeV light at the nearest stars | 1LHAASO catalogue: 42 point-like sources without an association; Gaia Catalogue of Nearby Stars within 20 pc | 0 stars inside an unassociated source's error circle against 0-2 (mean 0.4) with the sources moved 2 deg, and 0 inside an associated one (`lhaaso_nearest_stars`) | +| Unbound stars from nowhere | Li et al. (2023): 52 hypervelocity candidates with Gaia astrometry, traced straight back for 300 Myr | 17 in or from the disc, 14 more likely bound than not in the catalogue's own potential, 14 with velocity errors above 150 km/s, and 7 at 490-590 km/s and 2-4 kpc above the plane whose straight paths pass 4-9 kpc from the Centre and 50 kpc from the Cloud, left for orbits in a Galactic potential (`hvs_origins`) | +| Stars that passed within a parsec of the Sun | Bailer-Jones (2022): 61 Gaia EDR3 stars with a median perihelion below 1 pc, 32 past and 29 to come; eRASS1, VLASS, GALEX and AllWISE by CDS XMatch; SIMBAD; Breakthrough Listen open data | 8 with eRASS1 sources, 8 with GALEX, 10 with W1-W3 above 0.3 and 0 with VLASS, against 0-1 of each with the stars moved: the coronae, chromospheres and photospheres of K and M dwarfs; Breakthrough Listen has observed 2 of the 61, HD 168442 and Ross 248, and the other 59 are listed for it (`close_encounter_stars`) | +| The solar siblings | SIMBAD; eRASS1, VLASS, GALEX and AllWISE by CDS XMatch; Breakthrough Listen open data | HD 162826 (F8 V, 33 pc) carries a photospheric W1-W3 and nothing else; HD 186302 (G3 V, 57 pc) a chromospheric GALEX NUV and a photospheric W1-W3; neither has a VLASS or eRASS1 source, and Breakthrough Listen has observed neither (`solar_siblings`) | +| Galaxies that suppress supernovae | HECATE: 1770 galaxies within 20 Mpc with star-formation rates; Asiago supernova catalogue, 644 supernovae of 1980-2015 matched to them by CDS XMatch | 2 galaxies short of their supernovae at p below 0.01, both luminous infrared galaxies with active nuclei whose dust hides their supernovae and whose nuclei inflate their rates: Messier 77 (6.4 expected, 0 seen) and NGC 7552 (4.8 expected, 0 seen) (`supernova_deficits`) | +| The 2004 SETI@home candidate SHGb02+14a | Breakthrough Listen open data: the GBT L-band cadence on GJ 83.1 (TZ Arietis) of 2016-06-18, the hydrogen coarse channel of its 3 ON and 9 other scans of the session, dedrifted over -40 to +40 Hz/s; the 2016-09 and 2017 cadences are S band and do not hold the line | 101 peaks on the ON scans and 45 off, 3 of them on TZ Arietis alone: 10-12 sigma at 1420.0173 MHz drifting -2.0 to -2.25 Hz/s on the first scan, beside the 1420.017 MHz line every pointing of the session shows at zero drift; nothing in the candidate's 8-37 Hz/s (`shgb02_14a`) | +| Bursts peaking at the electron's mass | Fermi GBM burst catalogue (HEASARC): 1437 bursts with a Band peak energy to 10 per cent, 1696 with a Comptonised one | 9 within 2 per cent of 511 keV against 8.1 from the smooth run of peak energies either side (p 0.42), and 12 against 12.6 for the Comptonised fits (`gbm_bursts_511kev`) | +| Gamma-ray bursts repeating at one position | Swift GRB catalogue (HEASARC): 711 bursts with XRT positions | 0 pairs within their position errors plus 5 arcsec against 0.0001 by chance (`swift_repeating_bursts`) | +| Twelve-micron light at cold brown dwarfs | Kirkpatrick et al. (2021): 133 T and Y dwarfs with Spitzer astrometry carried to 2010.5; AllWISE by CDS XMatch | 33 carry a W3 at S/N 3 within 5 arcsec against 1.4 with the dwarfs moved 2 arcmin, and against 27.5 from the share of field sources of the dwarfs' own W1 and W2 that the catalogue gives such a W3 (90 of 436, p 0.14): the catalogue measures W3 at every source it holds at W1 and W2, and one in five of the faint red ones comes out at S/N 3 (`allwise_w3_cold_brown_dwarfs`) | +| The Sun's co-movers against the Sun | the store's five stars within 1 km/s of the Sun; Gaia DR3 astrophysical parameters; SIMBAD | the two warm enough to compare, BD+68 1331 and CD-75 143, are 0.34 and 0.24 dex metal-poor and 1-2 Gyr younger than the Sun, so no sibling; the other three are cool dwarfs Gaia cannot place in metallicity; the co-motion stays a chance alignment, the lowest p of a store of several hundred tests being its expected extreme (`sun_comovers_composition`) | +| H-alpha emission at quiet Sun-like neighbours | Gaia DR3 ESP-ELS: 4 emission-line stars within 100 pc at BP-RP 0.5-1.5; eRASS1 by CDS XMatch; SIMBAD | AE Aquarii (a cataclysmic variable), CPD-68 1894 (a T Tauri star with an X-ray source), a binary at RUWE 56, and Gaia DR3 394161419479425152, 3.6 mag under the main sequence of its colour, a white dwarf's light on a red dwarf's (`gaia_halpha_quiet_dwarfs`) | +| Rhythm in the repeaters | CHIME/FRB Catalog 1 as tabulated by Hashimoto et al. (2022; J/MNRAS/511/1961): the 2 repeaters with five or more bursts, FRB 20180814A (10 bursts over 315 d) and FRB 20180916B (19 over 262 d); the table lists a burst's sub-bursts as rows of their own at one arrival time, counted once | a clock, whose intervals are integer multiples of one period, which magnetars are not: the share of intervals from the first burst on the best tick over 4000 periods from 10 min to 100 d, the multiples of half a sidereal day left out since a transit telescope sees a source at those alone; FRB 20180814A 44 per cent on 2.79 d against 41 from burst sets drawn on random days at the real bursts' sidereal phases (p 0.60), FRB 20180916B 44 per cent on 0.514 d against 31 (p 0.065), whose 16.35 d activity cycle (CHIME/FRB Collaboration 2020) spreads its bursts over a five-day window rather than placing them on a tick (`chime_repeater_rhythm`) | +| The triangular points of nearby binaries | Sixth Catalog of Orbits of Visual Binary Stars: 2686 orbits of grade 4 or better, each solved for 2016.0; Gaia DR3 by CDS XMatch and gaia_source cones | L4 and L5 of a stellar pair are unstable at any stellar mass ratio, so nothing natural stays there: 6 orbits within 100 pc hold their secondary where the orbit puts it at a separation of 1-20 arcsec (STF 1457, STF 1639 AB, BU 823 AB, I 658, STF 2596 and HU 1626, at 1.0-2.0 arcsec with periods of 156-2971 yr; the catalogue's wider grade-4 orbits lie beyond 100 pc); Gaia sources at L4 or L5 of the six: 0 against 0.00 at ten other angles of the same orbits, where at 1-2 arcsec from a bright primary Gaia's completeness for a faint neighbour, not the sky, sets the limit (`binary_triangular_points`) | +| Impulses on 3I/ATLAS's orbit | Minor Planet Center astrometry of 3I/ATLAS (C/2025 N1): 8431 positions from 345 sites, 2025 May 8 to 2026 April 14, 70 of them after the Jupiter passage of 2026 March 16; ASSIST with DE440 and sb441-n16 from JPL's solution; SOHO/SWAN's water production (Combi et al. 2026) and the nucleus masses of Thoss et al. (2026) | a velocity change that outgassing cannot give: on one set of 7633 positions gravity alone leaves chi-square 36362 and three outgassing accelerations scaling as r^-2 11983 (the normal term -6.97 +- 0.07e-9 au/d^2 against JPL's -6.85e-9), outgassing that changes at perihelion 468 less and seven month-long bins of outgassing 836 less, as a water production that peaked a week after perihelion and fell tenfold in 40 days requires; an impulse in the 20 days behind the Sun reads 1.2 m/s at Mars or at perihelion on constant outgassing (chi-square 453 and 407 less) and +0.5 +- 4.7 m/s radial on the binned outgassing (11 less, 3 sigma below 15 m/s), -4.6 +- 1.7 m/s over 100 resampled sets of the 270 observing nights and -4.3 to -4.5 +- 4-5 m/s with any one of the 30 busiest sites left out, where water alone supplies 0.5-2 m/s to a nucleus of 1e12 kg or more and the 1.6e11 kg of the CO2-only estimate allows 20 m/s; an impulse at the Jupiter passage reads -115 +- 71 m/s radial on constant outgassing and -50 +- 78 on the bins, -133 +- 255 over resampled nights, -185 +- 360 without R59, which holds most of the positions after it, and -520 +- 417 without R59 and C23, so those 70 positions see nothing under a few hundred m/s; an impulse every five days at 53 times from 2025 June 29 to 2026 March 16 on the binned outgassing worsens no fit and bounds the velocity change below 2.2-18.6 m/s (3 sigma) through 2026 February 14 and 21-220 m/s after, the largest gains in chi-square 42 on 2025 November 16 (-4.2 +- 1.4 m/s radial, +1.6 +- 0.7 transverse), 39 on 2026 January 5 (+0.6 +- 0.6 radial, +0.7 +- 0.2 transverse) and 31-32 in early December, changes the month-long bins cannot follow and the bursts of activity after perihelion give; Breakthrough Listen's 1-12 GHz observation of 2025 December 18 holds no transmitter above about 0.1 W (Jacobson-Bell et al. 2026) (`iso3i_impulses`) | +| Stars Gaia DR3 sees that DR2 did not | Gaia DR3: 190,985 sources within 100 pc at G below 17 with RUWE below 1.4, read in 192 source_id ranges; gaiadr3.dr2_neighbourhood; DR2 within 10 arcsec of each candidate | a star that began shining between the releases' data spans: 110 have no DR2 neighbourhood row, 6 of them in DR2 after all (2 within 5 arcsec and a magnitude, 4 with two-parameter or duplicated DR3 solutions), 10 with a second DR3 source within 2 arcsec, 90 lying 2-7 arcsec from a DR2 star 1-11 mag brighter, inside whose image DR2 catalogued no second source, and 4 moving at 585-4812 mas/yr, Lalande 21185 among them, which DR2 holds nowhere within 30 arcsec at any magnitude, the fastest movers its cross-match lost; none left (`gaia_dr3_appeared`) | +| Stars Gaia DR2 saw that DR3 cannot find | Gaia DR2: 241,075 sources within 100 pc at G below 17, read in 192 source_id ranges; gaiadr3.dr2_neighbourhood; DR3 within 10 arcsec of each candidate; SIMBAD | a star that stopped shining between the releases' data spans: 2 have no DR3 neighbourhood row, both companions of bright stars that DR3 holds as one source with the primary: iota Leo B (G 6.8, F5 V), 2.1 arcsec from the DR3 source of the F1 IV spectroscopic binary iota Leo, 2.9 mag brighter, and chi Eri B (G 9.7), 2.5 arcsec from the DR3 source of the G8 giant chi Eri, 6.2 mag brighter, its DR2 solution carrying an excess-noise significance of 163; none left (`gaia_dr2_vanished`) | +| Comets on Earth's years | JPL Small-Body Database: 1030 periodic comets with periods below 200 years, periods within 0.002 y of a whole number of years against the same window at half-years and against uniform fractional periods, each read for its condition code, arc and period uncertainty | 6 at whole years against 4.1 expected and 4 at half-years (Poisson p 0.23); 2 are lost comets with rounded periods and no uncertainty, the other 4 within chance | +| Orbits tangent to Earth's | JPL Small-Body Database: 2645 asteroids and comets with perihelia and 128 with aphelia within 0.01 au of 1 au, those within 0.0005 au of 1.0000 au against the band's density and the windows at 0.995 and 1.005 au, each read for its condition code, arc and uncertainty | perihelia 111 against 132 expected (p 0.97, the control windows 276), aphelia 4 against 6.4 (p 0.88, the controls 14); no excess at Earth's distance | +| Planets on perfect circles | NASA Exoplanet Archive composite table: 1014 planets with periods beyond 30 d and a measured eccentricity (635 more fixed or limits), those whose upper eccentricity lies below 0.002 | none; the lowest percentile of upper eccentricities sits at 0.018 | +| Asteroid spins on the clock | LCDB frequency-diameter table: 4172 secure rotation periods (U 3) quoted to three decimals between 2 and 48 h, those within 0.02 per cent of a whole number of hours against the half-hour windows and uniform fractions, the day's harmonics counted apart | 11 at whole hours against 12.8 expected and 12 at half-hours (Poisson p 0.73), 1 of them at a harmonic of the day | +| Planets on whole days | NASA Exoplanet Archive composite table: 1494 planets with periods of 1.5-400 d known to better than 0.00002 d, those within 0.00002 d of a whole number of days against the half-day windows and uniform fractions | none, against 0.06 expected; none at half-days | +| Light at 12 um alone | Gaia Catalogue of Nearby Stars with its WISE photometry: 3510 stars within 100 pc at BP-RP 0.5-2.5 with W1 8-14 and W1, W3 and W4 measured to 0.05, 0.1 and 0.2 mag, W1-W3 more than five widths and five errors above the single-star locus at their colour with W1-W4 within two widths of its own, against the stars as far below; each read in AllWISE for flags and faint W3, in Gaia for a second source in the W3 beam and for a W4 excess at three errors | 27 above against 2 below; 6 carry AllWISE flags, 3 have a W4 excess at three errors (dust), and 18 K and M dwarfs with W3 of 7.6-8.8 mag and a 12 um excess of 0.3-0.5 mag remain unexplained, their W4 excess of 0.1-0.5 mag at one to three errors too coarse to separate warm dust from a narrow emitter | +| Symmetric flares | Yang et al. (2023) TESS flare catalogue: 24232 of 60810 flares lasting 40 minutes or more, those whose rise from start to peak takes as long as the decay within 10 per cent of the duration, or longer, read by duration and by the star's flare count | 1034 symmetric and 4482 rising longer than decaying, a share that holds at every duration and on quiet and busy stars alike, so the catalogue's event boundaries set the shapes and no single flare's shape can be read from it | +| Pulsars ticking in whole hertz | ATNF pulsar catalogue: 2118 of 2527 pulsars with periods quoted to eight digits or more, spin frequencies within 0.00001 Hz of a whole hertz or periods within 0.00001 ms of a whole millisecond, against the half-integer windows and uniform fractions; periods rounded to fewer digits counted apart | none against 0.085 expected, none at half-integers; 54 periods quoted to two to four digits land on the millisecond grid by rounding alone | +| Pulsars on the hydrogen line's decimals | ATNF pulsar catalogue: 2118 pulsars with periods quoted to eight digits or more, spin frequencies within one part in 100,000 of 1420.405751 Hz scaled by a power of ten, against the windows shifted by half a decade and uniform logarithmic fractions | none against 0.018 expected, none at the half-decade shift | +| Stars that stepped a magnitude between Gaia releases | Gaia DR3 sources within 100 pc whose DR2 counterpart within 0.1 arcsec (gaiadr3.dr2_neighbourhood) carries a mean G differing by more than a magnitude, each read for its transit counts, variability flags, SIMBAD type, DR2 saturation above G 4 and the missing colour of a source in a bright neighbour's light | 40: 13 are the brightest stars, whose DR2 photometry is saturated, 23 are companions of bright stars whose DR2 window took in the primary's light, 2 are variables and 1 a blend; HD 207964 C, a companion with a colour and RUWE 1.39, remains unexplained | +| Lurkers at Earth's Lagrange points | JPL Small-Body Database: 165 asteroids within 0.01 au of Earth's semi-major axis with e below 0.3 and i below 30 deg, placed by their mean longitude at epoch relative to Earth's; the count within 20 deg of L4 and of L5 against the ring's other longitudes, each read for its arc and condition code | 9 at L4 and 8 at L5 against 18.3 expected per point from a uniform ring, whose longitudes in fact crowd within 30 deg of Earth (123 of 165) because such orbits are found when near Earth; 11 of the 17 rest on arcs of days | +| Watchers of Jupiter's transits | Gaia Catalogue of Nearby Stars: 292 stars within 100 pc and 0.051 deg of Jupiter's orbital plane, the band from which Jupiter is seen to cross the Sun, carried to 2007.0 and matched to GALEX GUVcat AIS within 5 arcsec, against the share of the 22303 stars 1-5 deg from the plane and the band moved 2 arcmin in eight directions; matches read in SIMBAD | 59 with an ultraviolet source against 57.6 from the share beside the zone (p 0.45), the moved bands holding 0-8; the zone's ultraviolet share is the sky's | +| Light at 2 um alone | Gaia Catalogue of Nearby Stars with its 2MASS and WISE photometry: 128161 stars within 100 pc at BP-RP 0.5-3.0 with J, Ks and W1 measured to 0.03, 0.03 and 0.05 mag, J-Ks more than five widths and five errors above the single-star locus at their colour with J-W1 within two widths of its own, against the stars as far below; each read in 2MASS for its quality, read and extended-source flags and in SIMBAD | 3 above against 9 below; 2 carry 2MASS quality below AAA and the third, an M dwarf with J-Ks 0.36 mag above the locus and J-W1 on it, lies within the chance rate of the mirror | +| Planets in step with their star's spin | NASA Exoplanet Archive composite table: 178 planets whose host carries a rotation period and whose orbital period is 1.5-20.5 times it, those at a whole multiple within 0.5 per cent against the half-integer windows and uniform fractions, each read for the source of the rotation period | 12 at whole multiples against 10.1 expected and 13 at half-integers (Poisson p 0.32) | +| Nearby light bluer than any star | Gaia Catalogue of Nearby Stars: sources within 100 pc with BP-RP below -0.65, bluer than the Rayleigh-Jeans tail of any photosphere gives in Gaia's bands, each read for its BP/RP flux excess, image-peak and RUWE flags, white-dwarf probability and SIMBAD type | 1, a G 17 source with a BP/RP flux excess of 26 over the single-star relation, a blend or a corrupted BP and no bluer star | +| Comets pushed toward the Sun | JPL Small-Body Database: 32 comets and 3 asteroids whose radial non-gravitational term A1 is negative, those negative at three sigma, each read for its arc and condition code, its transverse term A2 and the asymmetric outgassing parameter DT | 27 at three sigma: 1 on a short arc, 6 with a larger transverse term or a shifted outgassing law; 20 comets and the asteroid 4179 Toutatis keep a radial term toward the Sun of 2e-10 to 6e-7 au per day squared on arcs of 3-75 years, which the symmetric outgassing law returns for a nucleus venting mostly after perihelion, and they await refits with an asymmetric law | +| Galaxies warm without star formation | HECATE: 669 galaxies within 150 Mpc with GSWLC stellar masses and ultraviolet-optical star-formation rates and with WISE 22 um and IRAS far-infrared luminosities, the 38 quiescent ones (specific rate below 1e-11 per year) radiating more than a tenth of a solar luminosity per solar mass at 22 um within a factor of three of their far-infrared, against the quiescent population's own distribution; each read for HECATE's nuclear-activity flags and its inclination | 6, every one with an active nucleus; the quiescent galaxies' 22 um heat per mass runs 0.035 solar at the median and 0.55 at the 99th percentile | +| Stars that dimmed since Hipparcos | Hipparcos new reduction and Gaia DR3: 17285 Hipparcos stars within 100 pc with a Gaia best neighbour, G against Hp through the sample's running median of G - Hp in BP-RP, those fainter by 0.5 mag and those brighter by as much, each read for Hipparcos's scatter and variability, Gaia's variability flag and RUWE, SIMBAD's type, a pair's name or component letter and a Gaia neighbour within 10 arcsec | 297 fainter against 4 brighter: 274 are pairs whose joint light Hipparcos measured and Gaia resolves, most by 0.75 mag, 23 are variables and 4 rest on Hipparcos records without a scatter; none unexplained | +| Asteroids on polar orbits | JPL Small-Body Database: 51 bound orbits of asteroids and comets within 3 deg of 90 deg inclination, those within 0.5 deg of polar against a flat inclination density and the bands either side, each read for its arc and condition code | 9 against 8.5 expected (Poisson p 0.48): 8 long-period and Halley-type comets and one trans-Neptunian object | +| Stars enriched evenly in every heavy element | GALAH DR4: 46868 stars with clean measurements of all eleven neutron-capture elements Sr, Y, Zr, Mo, Ru, Ba, La, Ce, Nd, Sm and Eu, those with every [X/Fe] above +0.4 dex and a spread below 0.1 dex across the eleven, against the stars depleted as evenly and the sample's own spread | none of the 41 stars enriched above +0.4 dex carries a flat pattern, and none is depleted evenly; the sample's spread across the elements runs 0.12 dex at the median against errors of 0.09 | +| Transits longer than the star allows | NASA Exoplanet Archive composite table: 4328 transiting planets with a duration, period, semi-major axis and radii, those whose duration exceeds by a quarter the longest central transit a circular orbit allows at the catalogued geometry, each read for its duration error, the sources of its duration and stellar radius and its eccentricity | 188: 167 carry a stellar radius of the Kepler Input Catalogue era or a duration and a radius from different solutions, 8 have loose or missing duration errors, 7 are eccentric, 4 have eccentricities fixed without errors and WASP-132 b's duration stands off by itself; TOI-1295 b, at 1.38 times the maximum with e 0.02 in one solution, remains unexplained | +| Gamma rays peaked like a line | Fermi-LAT 4FGL (HEASARC): 2766 sources above 10 sigma with a log-parabola curvature, those with beta above 0.8 at a curvature significance above 4, a spectrum peaked within a factor of a few in energy, against the catalogue's curvatures (median 0.10, 99th percentile 0.64); each read for its class and analysis flags | 3, all of known classes: the pulsars J1827-1446 and J1057-5851 and the globular cluster Terzan 1, whose cutoff spectra the log parabola bends to fit | +| Nearby stars flickering by the minute | Gaia DR3 short-timescale variables within 100 pc: 909 stars, those whose characteristic frequency exceeds 48 cycles a day (the catalogue reaches 72), each read for its white-dwarf locus, its SIMBAD type, its image and RUWE flags and its colour, since a red dwarf the pipeline picks up flares and its variogram timescale is the flares' rise | 220: 35 white dwarfs and compact stars, 67 of other known types, 108 flaring red dwarfs; 10 remain, five G and K dwarfs and three A stars with 20-30 minute timescales and amplitudes of 0.01-0.09 mag | +| Infrared dimming next door | Gaia Catalogue of Nearby Stars within 20 pc with AllWISE W1 8-15: 1004 stars matched to AllWISE at 2010.5 and CatWISE2020 at 2015.0 within 3 arcsec, those whose profile W1 differs by more than 0.3 mag between the two means, against the stars that brightened as much; each read for Gaia's variability flag, RUWE and image flags, SIMBAD's type, the WISE flags, CatWISE's saturation brighter than 8.5 mag, the match separation and the proper motion, since a star moving a second a year is split between the epochs of CatWISE's coadds | 92 fainter in CatWISE against 2 brighter: 14 variables, 29 blends, 29 saturated or flagged, 16 matched to another source or split by their motion; 6 M6-L3 dwarfs moving 0.4-0.9 arcsec a year, fainter by 0.5-0.9 mag, remain unexplained and carry the fast movers' signature | +| Systems turned face-on to us | NASA Exoplanet Archive composite table: 302 non-transiting planets with a measured inclination, those within 5 deg of face-on from either pole against the 0.4 per cent of random orientations, each read for its inclination error and method | 1 against 1.15 expected (binomial p 0.68): HD 204313 e, an astrometric orbit at 4 deg from the pole | +| Masers at rest in the universe's frame | Pestalozzi et al. (2005) 6.7 GHz methanol masers: 519 peak velocities taken from the kinematic local standard of rest to the Sun and to the cosmic microwave background's frame, those within 2 km/s of rest there against the velocities' own density within 30 km/s of rest | 8 against 7.7 expected (Poisson p 0.50) | +| Waste heat in HI-dark galaxies | Leisman et al. (2017) ALFALFA HI sources with low-surface-brightness counterparts: 115 positions matched to AllWISE within 10 arcsec, a source at 5 sigma in W3 or W4 against the positions moved 2 arcmin in eight directions scaled by the warm share of the matches, each read for an AGN colour and a Gaia star | 1 against 0.5 expected (p 0.37), AGC 188768 with an AGN's W1-W2 colour | +| Missing bolometric flux, dwarfs | JMMC Measured Stellar Diameters Catalogue: 62 dwarfs within 100 pc with a limb-darkened diameter, a Gaia parallax, a GSP-Phot temperature and a FLAME luminosity, the luminosity each surface and temperature give against Gaia's, a deficit of 20 per cent at 3 sigma against the mirror excess | none short and none over; the ratio of Gaia's luminosity to the predicted runs 1.05 at the median with a scatter of 0.12 | +| Circles between the giant planets | JPL Small-Body Database: 169 bodies with semi-major axes of 5.5-30 au, perihelia beyond Jupiter and eccentricities below 0.3, those circular to 0.02 against the region's own eccentricities (median 0.19, 5th percentile 0.04), each read for its arc, condition code and a resonance with a planet | 3 Centaurs with e of 0.009-0.010, each on an arc of 2-29 days with condition code 9, where the eccentricity is unmeasured | +| Cerium without carbon in dwarfs | APOGEE DR17 unevolved metal-rich dwarfs of the CNO sample with unflagged carbon and cerium (25), those with [Ce/Fe] above +0.5 dex and [C/Fe] at or below zero, each read for a Gaia binary, its Teff edge and its rotation | 1 of 1 cerium-rich dwarf, 2M08332894+2247535 at [Ce/Fe] +0.77 and [C/Fe] -0.13, is a Gaia binary with RUWE 3.6 | +| Refuges at white dwarfs | NASA Exoplanet Archive composite table: the 6 planets at white dwarfs, each placed against the 1 au its host's giant phase reached, with its discovery method and the published account of its arrival | 3 sit inside the giant's reach: two 20-Jupiter-mass companions on 3- and 6-hour orbits drawn in through a common envelope, and WD 1856+534 b on a 1.4-day orbit, which its discovery paper brings in through its outer pair of stars; the other three orbit at 8-19000 au | +| Variables Gaia could not classify next door | Gaia DR3 vari_summary within 50 pc: 50 variables with a G range above 0.3 mag, the 23 the DR3 classifier left without a class, each read in SIMBAD, for its RUWE and image flags, for the white-dwarf locus and for the flare stars' colour | 23 unclassified: 1 compact star, 7 of known types, 5 blends and 10 red dwarfs whose range is one flaring transit; none unexplained | +| Asteroids in the ecliptic to the hundredth of a degree | JPL Small-Body Database: 107677 bound orbits within 2 deg of the ecliptic, those within 0.02 deg against the band's own density at 0.02-0.2 deg and a density rising as the inclination, each read for its arc and condition code | 12 against 10.8 expected (Poisson p 0.40): 11 main-belt asteroids on decade-long arcs and one near-Earth object on a one-day arc | +| White dwarfs varying outside the pulsation strips | Gaia DR3 vari_summary within 100 pc on the white-dwarf locus, matched to Gentile Fusillo et al. (2021): 132 catalogued white dwarfs flagged variable with a G range above 0.1 mag, those outside the pulsation strips with their margins (DA 10,000-13,500 K, DB 21,000-31,000 K, GW Vir above 70,000 K), each read in SIMBAD, including the magnetic types, for a companion's BP/RP flux excess and for RUWE | 103 sit in a strip or are cataclysmic, eclipsing, magnetic or otherwise known, 5 carry a companion's signature; 24 DA and DC white dwarfs of 3900-10000 K at G 16-19 with ranges of 0.1-0.4 mag over 20-60 transits remain unexplained, a residue for a period search in survey photometry | +| Binaries on perfect circles | Ninth Catalogue of Spectroscopic Binary Orbits: 1725 orbits with periods beyond 100 d and a measured eccentricity (fixed or errorless ones set aside), those with an upper eccentricity below 0.002, against the measured eccentricities themselves | none; the lowest percentile of upper eccentricities sits at 0.019 | +| Copy eclipsing binaries | Kepler eclipsing binary catalogue (Prsa et al. 2011): 1780 systems, pairs whose periods agree within the catalogue's quantum of 0.00001 d, against the periods' own density in a window ten times wider and the pairs within 2 arcmin; copies must also agree in temperature ratio and summed radii to 10 per cent | 24 pairs share a period to the catalogue's quantum, 1 of them one signal in two apertures and 23 apart on the sky against 14 expected (Poisson p 0.018); none of the 23 agrees in temperature ratio and radii, so none is a copy | +| Slow pulsars older than the universe | ATNF pulsar catalogue: 1803 pulsars slower than 0.1 s with a period derivative, those whose intrinsic derivative gives a characteristic age beyond 15 Gyr, each read for the derivative's error and its binary | none | +| Stars leaving the nearest clusters too fast | Hunt and Reffert (2023) open-cluster members with Gaia radial velocities: 1076 members of the 18 clusters within 200 pc whose twenty or more velocities cohere to a median of 3 km/s about the mean, each star's space velocity against its cluster's, those moving faster than 10 km/s, each read for RUWE and SIMBAD binarity, its membership probability and its colour, since Gaia's velocities of hot stars carry errors of tens of km/s | 12: 1 binary, 8 of membership probability below 0.8 and as likely field stars, 1 hot B star; a member of Alessi 84 at 42 km/s with probability 0.82 and HD 74117 in IC 2391 at 10 km/s with probability 0.80 remain unexplained | +| Transits deeper than the planet | NASA Exoplanet Archive composite table: 4455 transiting planets with a depth and a radius ratio, those whose depth exceeds 1.5 times the ratio squared, each read for the depth's error and the sources of depth and ratio | 82: 75 draw depth and ratio from different solutions, 5 carry loose or missing depth errors; TOI-5624 c, whose depth of 0.76 per cent stands ten times its ratio's in one solution, and TOI-4427 b at 1.6 times remain unexplained | +| Gamma rays with fast radio bursts | Fermi GBM burst catalogue against CHIME/FRB Catalog 1: 4398 gamma-ray bursts over 18.3 years and 536 radio bursts inside that span, pairs within 100 s whose positions overlap within the gamma-ray error circle plus a degree, against the pairs the two rates give by chance | 1 pair within 100 s (0.8 expected), FRB 20190217A eleven seconds after GRB 190217188 but 91 deg from its 9 deg error circle; none overlapping in position against 0.004 expected | +| Spinning stars without coronae | Gaia DR3 stars within 20 pc with rotation periods below 5 days (vari_rotation_modulation) in the eROSITA-DE half of the sky, carried to 2020.0 and matched to the eRASS1 main catalogue within 15 arcsec; a fast rotator without X-rays, read for its brightness and in SIMBAD | all 11 rotators carry an eRASS1 source; none is without a corona | +| Neutrinos with gamma-ray bursts | IceCube ten-year point-source events above 10 TeV (372661) against the 2355 Fermi GBM bursts of the same span: a neutrino within 100 s of a burst and inside the two error circles plus a degree, against the pairs the event rate and the circles' sky fraction give by chance | 543 neutrinos fall in the time windows against 542 expected, and 3 inside the circles against 3.1 (Poisson p 0.59), each 5-6 deg from a burst localised to 7-13 deg | +| Warm stars in the Hyades | Hunt and Reffert (2023) Hyades members above probability 0.5: 157 at BP-RP 0.5-2.5 with clean AllWISE W1 and W3, those with W1-W3 more than five widths and five errors above the cluster's own locus, their share against the field's 0.8 per cent from the same test within 100 pc; each read for AllWISE flags and in SIMBAD | 1 of 157 (0.6 per cent against the field's 0.8, binomial p 0.70): HZ 9, a white dwarf with an M-dwarf companion | +| Resonant pairs without timing variations | Holczer et al. (2016) Kepler transit timings and the DR25 KOI table: 46 pairs within 2 per cent of 2:1 or 3:2 among 2106 systems, 88 planets with timing measurements, each planet's timing scatter against the variation its neighbour's mass, estimated from the radius, demands (Lithwick et al. 2012), a quiet planet keeping time below a fifth of that with no detected variation | none of the 88 keeps time below a fifth of the expected variation | +| Light at 3.4 um alone | Gaia Catalogue of Nearby Stars with its 2MASS and WISE photometry: 60000 stars within 100 pc at BP-RP 0.5-2.5 with Ks, W1 and W2 measured to 0.03, 0.05 and 0.05 mag, Ks-W1 more than five widths and five errors above the single-star locus at their colour with Ks-W2 within two widths of its own, against the stars as far below; each read against AllWISE's plain profile W1, its flags, 2MASS's flags and SIMBAD | 299 above against 9 below, and every one is the catalogue's proper-motion-fitted W1 mis-fitting a fast mover: the excess vanishes with AllWISE's plain W1, or the star has moved out of the match, or a flag marks it; none unexplained | +| Dark companions on perfect circles | Gaia DR3 astrometric two-body orbits within 200 pc with periods beyond 200 d and a measured eccentricity: 8874 orbits, those with an upper eccentricity below 0.005, against the solutions' own eccentricities | none; the lowest percentile of upper eccentricities sits at 0.055 | +| Planets lapping their star's spin in whole steps | NASA Exoplanet Archive composite table: 441 planets whose host carries a rotation period 1.5-20.5 times their orbital period, those at a whole ratio within 0.5 per cent against the half-integer windows and uniform fractions, each read for the source of the rotation period | 20 at whole ratios against 26.5 expected and 25 at half-integers (Poisson p 0.92) | +| Radio from cold brown dwarfs | Kirkpatrick et al. (2021) 20 pc census: 133 T and Y dwarfs carried to 2019.0 and matched to the VLASS epoch-1 components within 5 arcsec, against the positions moved 2 arcmin in eight directions | none, against a mean of 0.1 at the moved positions | +| Methane in a star's light | Gaia Catalogue of Nearby Stars: 7 objects at BP-RP 0.5-3.0 fainter than W1 8 with clean W1 and W2 and W1-W2 above +0.8, the colour of a T dwarf's methane band; AllWISE, Gaia DR3 and SIMBAD | 2 saturated in WISE with the colour absent in AllWISE's plain magnitudes, 4 of known types (three T dwarfs and an emission-line star), 1 blended with a neighbour in the beam; none unexplained (`gcns_methane_colour`) | +| Neutrinos from Earth's transit zone | IceCube ten-year point-source events (HEASARC icecubepsc): 372661 above 10 TeV by ecliptic latitude, the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg, which share the zone's declinations | 1543 in the zone against 1542 +- 29 beside it (z +0.03); above 100 TeV 549 against 528 +- 24 (z +0.88, p 0.18); the zone's ten highest-energy events at the chance rate (`icecube_transit_zone`) | +| Gamma-ray bursts from Earth's transit zone | Swift GRB table (HEASARC swiftgrb): 872 bursts at arcminute positions; Fermi GBM bursts with an error radius below 1 deg: 910; the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg | Swift 4 in the zone against 3.9 +- 1.9 beside it, GBM 3 against 3.7 +- 1.8; the seven at the chance rate (`grb_transit_zone`) | +| Pulsars in Earth's transit zone | ATNF pulsar catalogue (VizieR B/psr): 2530 pulsars with positions, the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg, which the Galactic plane crosses as it crosses the zone | 8 in the zone against 13.3 +- 12.0 beside it, 2 millisecond pulsars against 3.9 +- 10.3; the eight at the chance rate (`atnf_transit_zone`) | +| Asteroids pushed harder than sunlight allows | JPL Small-Body Database: 611 asteroids with a transverse non-gravitational term, those at 3 sigma whose lower bound exceeds twice Bennu's term scaled to their diameter, the ceiling re-radiated sunlight sets | 9: the eight published dark comets 2012 UR158, 2016 TA56, 2003 RM, 2005 UY6, 2001 ME1, 1998 SH2, 1998 FR11 and 2006 RH120, and the active asteroid 2008 GO98; none unexplained (`sbdb_pushed_asteroids`) | +| Emission lines in asteroid reflectance | Gaia DR3 sso_reflectance_spectrum: 60518 asteroids with sixteen-band reflectance spectra, 20569 carrying an unflagged interior band above 1.5; interior bands more than 0.3 and five combined errors above the mean of their neighbours | 5 spikes, every one on a flagged band or beside one (19336, 8854, 6107, 17091, 150784); none unexplained (`gaia_sso_reflectance_spikes`) | +| Lines in transmission spectra | NASA Exoplanet Archive transmission-spectroscopy table (transitspec): 53 published spectra of five or more bins, 3618 bins; a bin four combined errors, four times the spectrum's bin-to-bin scatter and 2 per cent of the depth from the mean of its neighbours, in either sign | none; at three sigma KELT-9 b's H-beta line and four single bins of JWST series within 3.8 sigma (`exoplanet_transmission_lines`) | +| Open clusters orbiting backwards | Hunt and Reffert (2023) clusters (VizieR J/A+A/673/A114): 3170 with a parallax at 10 sigma and a radial velocity from three or more members to 10 km/s, Galactic rotation and vertical speeds from their mean motions | 20 retrograde, every one a globular cluster; 7 with vertical speeds above 150 km/s, six globular clusters and Pismis 26, which is the globular cluster Tonantzintla 2; none unexplained (`clusters_retrograde`) | +| Pulsars faster than a kick can throw | ATNF pulsar catalogue (VizieR B/psr): 257 pulsars with a proper motion and a distance, transverse speeds at the proper motion's 3 sigma lower bound | one above 2000 km/s, J2013+3845 at 2183 km/s on a 13 kpc dispersion-measure distance; none unexplained (`atnf_kick_speeds`) | +| Asteroids blacker than any surface | JPL Small-Body Database: 352 asteroids listed with a geometric albedo below 0.02, 15 of them with an AKARI albedo and error (J/PASJ/63/1117) | none below 0.02 at AKARI's 3 sigma upper bound; the database values rest on a diameter and an absolute magnitude fitted together (`sbdb_blackest_asteroids`) | +| Two neutrinos from one spot | IceCube ten-year point-source events (HEASARC icecubepsc): 192107 above 100 TeV, pairs within one hour and within the sum of their errors plus half a degree, against the same events with their times shuffled twenty times | 382 doublets against 362 +- 18 shuffled (Poisson p 0.16); at the chance rate (`icecube_doublets`) | +| Hyperbolic excess beyond planetary perturbation | JPL Small-Body Database: 5 asteroids and 520 comets with eccentricity above 1, the speed at infinity from the eccentricity's 3 sigma lower bound and the perihelion distance, above the 3.9 km/s that C/1980 E1's Jupiter encounter gave it | the three published interstellar objects alone, 3I/ATLAS at 58 km/s, 2I/Borisov at 32 and 1I/'Oumuamua at 26; of the eleven comets between 1.5 and 3.9 km/s, two carry recorded encounters (C/1980 E1 with Jupiter, C/2024 L5 with Saturn), the rest are fragments or rest on short arcs (`sbdb_hyperbolic_excess`) | +| Copy gamma-ray bursts | Fermi GBM burst catalogue (HEASARC fermigbrst): 3779 bursts with T90, T50, fluence and a Band peak energy; pairs more than 10 deg apart alike to 2 per cent in T90 and fluence and 5 per cent in T50 and peak energy, against the pairs found with T90 rescaled by six factors | 3 pairs against 3.0 rescaled; at the chance rate (`gbm_copy_bursts`) | +| Gamma-ray bursts arriving together from different directions | Fermi GBM burst catalogue (HEASARC fermigbrst): 4398 bursts over 18.3 years, pairs triggered within 10 s from directions farther apart than their error radii and 5 deg | none, against 0.34 for Poisson arrivals; no two bursts within 10 s at all (`gbm_bursts_together`) | +| Copy comets | JPL Small-Body Database: 4080 comets with orbital elements, pairs agreeing under the Southworth-Hawkins criterion to 0.05, read against shared parent designations, the sungrazing families inside 0.1 au, the published comet pairs and families, and the arcs | 62969 pairs: 2770 fragments of one comet, 60198 in the sungrazing families or the published pairs and families (Levy and Shoemaker-Holt, the Liller family, the 1844 great comet and C/2019 Y4, C/2002 A1 and A2, C/2002 Q2 and Q3, 169P and P/2003 T12, de Vico-Hind and Kohoutek, 332P and 412P), 1 resting on an arc under 30 d; none unexplained (`sbdb_copy_comets`) | +| Stars that jumped between 2MASS and Gaia | Gaia DR3 stars within 25 pc with a 2MASS counterpart: 4915, the Gaia position carried to the 2MASS night with the proper motion and that night's parallactic shift, against the 2MASS position | offsets of 0.10 arcsec median and 0.90 at the 99th percentile; 32 above 1 arcsec, 29 saturated, poor or flagged in 2MASS or Gaia and 3 blended with a second Gaia source in the 2MASS beam; none unexplained (`gaia_2mass_jumped`) | +| Lurkers at Jupiter's far Lagrange point | JPL Small-Body Database: 16412 bodies within 0.35 au of Jupiter's semi-major axis with e below 0.3, their mean longitudes at the element epoch against Jupiter's, the count within 20 deg of the L3 point opposite the planet | 4 at L3 against 9414 and 5374 in the L4 and L5 swarms: 2 on arcs of days, 2 Trojans librating widely (2015 OL106 at 162 deg and 2020 BZ43 at 199 deg); none unexplained (`sbdb_jupiter_l3`) | +| Waste heat at room temperature | Gaia Catalogue of Nearby Stars: 16037 stars at BP-RP 0.5-2.5 with clean Ks, W3 and W4, 175 with excess at both 12 and 22 um and 30 of them unflagged in AllWISE with a colour temperature from the excess flux ratio | 3 between 280 and 320 K against 1.5 in the bins beside (Poisson p 0.19); the excesses run from 100 to 320 K with none hotter; at the chance rate (`gcns_room_temperature_excess`) | +| Warm stars in Jupiter's transit zone | Gaia Catalogue of Nearby Stars with its WISE photometry: 175 stars with W1 and W3 or W4 within 0.051 deg of Jupiter's orbital plane, the band that sees Jupiter transit the Sun, against the 13736 stars 1-5 deg from the plane; SIMBAD | 3 warm (HD 13997, HD 112250 and a G 14.9 star with W3 and W4 excess) against 2.36 expected from the band's share (p 0.42); with the ultraviolet count of the zone's stars this closes the Jupiter-zone programme (`jupiter_zone_warm_stars`) | +| Two pulsars at one spot | ATNF pulsar catalogue (VizieR B/psr): 2358 pulsars outside globular clusters and the Magellanic Clouds, pairs within 2 arcmin, against the pairs the mirrored declinations give | 7 pairs against 7 mirrored: the double pulsar J0737-3039A and B bound to each other, the six others at different dispersion measures; none unexplained (`atnf_pulsars_one_spot`) | +| Glitches on a schedule | Jodrell Bank glitch table: 34 pulsars with five or more dated glitches, the scatter of their glitch intervals as a fraction of the mean against 4000 draws of exponential intervals | 4 regular, J1420-6048 (scatter 0.20 of the mean, p below 2.5e-4), J2021+3651, J1023-5746 and J1709-4429 (0.27-0.29), every one a young pulsar of large Vela-like glitches, which recur at the crust's critical lag; none unexplained (`jbo_glitch_schedules`) | +| Warm stars in the nearest clusters | Hunt and Reffert (2023): the 58 clusters and moving groups within 250 pc with 100 or more members, each member at BP-RP 0.5-2.5 matched to AllWISE, the share with W1-W3 five widths above the cluster's own locus against the field's 0.77 per cent, judged over the 58 | no cluster beyond chance over the 58; 23 warm stars, 13 flagged in AllWISE, 6 of known types; the highest shares in the clusters of 5-10 Myr (HSC 2986, OCSN 96, HSC 2907 at 5-6 per cent) and the Pleiades at 2.3 per cent; none unexplained (`clusters_warm_stars`) | +| Waste heat at the oldest Sun-like neighbours | GALAH DR4 (Data Central): 4248 dwarfs within 200 pc at 5300-6200 K with a clean fit, an isochrone age and clean AllWISE W1 and W3; the oldest tenth, 425 stars older than 12.4 Gyr, against the rest | none of the oldest 425 warm against 11 of the 3823 younger (Fisher p 1) (`galah_oldest_sunlike_warm`) | +| Planets on polar orbits | NASA Exoplanet Archive planetary systems table: 166 planets with a projected obliquity measured to 15 deg, the measurement of smallest error for each, the count within 15 deg of 90 against a uniform projected obliquity | 16 against 27.7 (binomial p 0.996), with 95 within 15 deg of alignment and 5 of anti-alignment; the sixteen at the chance rate (`exoplanet_polar_orbits`) | +| Neighbours Gaia's classifier calls galaxies | Gaia DR3: 372226 sources within 100 pc at parallax over error above 10, those whose discrete source classifier gives a galaxy or quasar probability above 0.5; Gaia's image flags, BP/RP excess and RUWE; SIMBAD | 335: 249 blends by the BP/RP excess or image peaks, 14 without a colour, bluer than any star or saturated, 4 of poor astrometry, 68 of known types; none unexplained (`gaia_dsc_galaxies_nearby`) | +| Stars that changed velocity between GALAH and Gaia | GALAH DR4 (Data Central): 396280 stars with a clean fit and both GALAH's and Gaia DR3's radial velocities to 2 km/s, those apart by more than 30 km/s; GALAH's second components, Gaia's orbits, amplitudes, variability flags, RUWE and image peaks, the two surveys' temperatures, Gaia's transit counts and a third epoch from RAVE DR6 or LAMOST DR5 | 48: 14 binaries, one of them by a third velocity from RAVE apart from GALAH's, one GALAH spectrum of a different star by its temperature, one Gaia velocity on two transits; 32 remain, single-lined binaries by their rate, which Gaia's variability statistics do not reach at their brightness and which RAVE and LAMOST have not observed (`galah_gaia_rv_jumps`) | +| Europium far above iron in dwarfs | GALAH DR4 (Data Central): 1337 dwarfs with a clean fit and a clean europium abundance to 0.2 dex at S/N above 40, those with [Eu/Fe] above 1.0 at the lower bound; metallicity, companions and the s-process elements as the natural routes | none (`galah_europium_dwarfs`) | +| Zirconium alone | GALAH DR4 (Data Central): 11597 dwarfs with a clean fit and clean zirconium, yttrium and barium to 0.15 dex at S/N above 40, those with [Zr/Fe] above 0.8 at the lower bound while [Y/Fe] and [Ba/Fe] stay below 0.3; companions by GALAH's second components and Gaia's flags, and the temperature range of trusted zirconium lines | 29: 6 with a companion, 23 cooler than 5000 K, where the weak zirconium lines blend with molecular bands; none unexplained (`galah_zirconium_alone`) | +| Lines in dayside spectra | NASA Exoplanet Archive emission-spectroscopy table (emissionspec): 25 published eclipse spectra of five or more bins, 2167 bins; a bin five combined errors, five times the spectrum's bin-to-bin scatter and a tenth of the depth from the mean of its neighbours, in either sign | 3: two bins of WASP-33 b's WFC3 spectrum, whose host is a delta Scuti pulsator, and one at the red edge of a NIRISS spectrum of WASP-18 b; none unexplained (`exoplanet_dayside_lines`) | +| Bodies aimed at Earth | JPL Small-Body Database: 147 near-Earth asteroids on arcs of a year or more with a minimum orbit intersection distance below 0.001 au (1764 on shorter arcs set aside), the count below 0.0001 au against the uniform run of the next nine bins | 19 against 14.2 (Poisson p 0.13); at the chance rate (`sbdb_aimed_at_earth`) | +| Bodies parked in the Kirkwood gaps | JPL Small-Body Database: numbered asteroids within 0.03 au of the 3:1, 5:2 and 2:1 resonances with e below 0.1 on arcs of twenty years or more, the count within 0.002 au of each resonance centre against the density 0.01-0.03 au either side | the gaps are empty as they should be: 1 against 296 expected at the 3:1, 13 against 669 at the 5:2, 1 against 60 at the 2:1; the fifteen in the centres at the chance rate (`sbdb_kirkwood_parked`) | +| Masers in Earth's transit zone | Pestalozzi et al. (2005) 6.7 GHz methanol masers (VizieR J/A+A/432/737): 519 masers, the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg | 2 in the zone against 2.4 +- 2.6 beside it; at the chance rate (`methanol_masers_transit_zone`) | +| Circles beyond Neptune | JPL Small-Body Database: 4941 trans-Neptunian objects beyond 40 au with an eccentricity uncertainty, those whose eccentricity at its 3 sigma upper bound lies below 0.005, against the Rayleigh rise of the belt's eccentricities near zero | 4 (Praamzius, 2010 PK66, 2003 YN179 and 2010 NF146, all on arcs of twelve years or more) against 7.5 expected from the 746 below 0.05; at the chance rate (`sbdb_tno_circles`) | +| Gamma-ray sources that moved between catalogues | Fermi-LAT 3FGL (HEASARC fermi3fgl) and 4FGL-DR4 (fermilpsc): 1717 associations shared by both, the separation of the two positions against the sum in quadrature of the 95 per cent axes | 2 apart by more than twice the combined axes: the extended source W 41 and PSR J1112-6103 in the Galactic plane, where confusion moves a faint source's centroid; none unexplained (`fermi_3fgl_4fgl_moved`) | +| Bursts from the nearest galaxies | CHIME/FRB Catalog 1: 492 sources against the 46 large galaxies within 10 Mpc north of -11 deg, a burst inside a galaxy's optical radius plus the half-degree localisation, against the bursts' density within 10 deg of each galaxy | none against 1.76 expected (`chime_nearest_galaxies`) | +| Gamma-ray bursts from the nearest galaxies | Swift GRB table (HEASARC swiftgrb) and Fermi GBM bursts with errors below 1 deg: 1782 bursts against the 50 large galaxies within 10 Mpc, a burst inside a galaxy's radius plus its own error, against the bursts' density within 10 deg of each galaxy | 1 against 1.86 expected: GRB 231115A in M82, the published magnetar giant flare; none unexplained (`grb_nearest_galaxies`) | +| Bodies at the Sun's focus | JPL Small-Body Database: 16 bodies with perihelia beyond 60 au, the count beyond 100 au, from where the Sun's lens brings other stars' light to a focus | none beyond 100 au; the farthest perihelia are 2012 VP113 at 80.6 au and Sedna at 76.2 (`sbdb_sun_focus`) | +| Stars that changed colour since Hipparcos | Hipparcos new reduction and Gaia DR3: 77746 stars with a B-V measured to 0.03 mag and a BP-RP, those five robust widths, five times the carried B-V error and 0.2 mag off the run of BP-RP with B-V; Hipparcos scatter, RUWE, Gaia's excess, SIMBAD's types and spectral classes | 1527 off the run: 386 saturated or with BP/RP excess, 538 variable, 135 binaries, 26 whose spectral class sides with Gaia against the Hipparcos B-V; 442 remain, stars whose Hipparcos B-V, compiled from ground photometry, is the only old colour and cannot be checked against a second (`hipparcos_gaia_colour_change`) | +| Eclipsing binaries on whole days | Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83): 1242 systems with periods between 0.5 and 50 d measured from space, those within 0.0002 d of a whole number of days against the periods' own density and the half-day windows | none against 0.5 expected; 2 at half-days (`kepler_eb_whole_days`) | +| Retrograde co-orbitals of the giant planets | JPL Small-Body Database: bodies within 5 per cent of Jupiter's, Saturn's, Uranus's or Neptune's semi-major axis with inclination above 90 deg and eccentricity below 0.5 | 3, all at Jupiter: the published co-orbital (514107) Ka'epaoka'awela, 2007 VW266 published in the neighbouring 13/-14 resonance, and 2016 YB13, which fifty clones of its orbit hold in the resonance for thousands of years each way, a transient member; none unexplained (`sbdb_retrograde_coorbitals`) | +| Radio sources that switched off | NVSS (VizieR VIII/65): 37223 compact sources above 100 mJy north of -40 deg and more than 10 deg from the Galactic plane, those without a VLASS epoch-1 quick-look component (J/ApJS/255/30) within 20 arcsec; SIMBAD, the artefact zones of sources above 5 Jy, RACS-low of 2019-2020 and the component list's own holes | 281 missing: 132 of known types, 12 beside sources above 5 Jy, 113 still shining in RACS-low or in holes of the component list; 24 remain, north of RACS-low's reach or unmatched in it, with VLASS components around them (`nvss_vlass_switchoffs`) | +| Bodies pushed out of their orbital planes | JPL Small-Body Database: 113 comets and 10 asteroids with normal and radial non-gravitational terms, those whose normal term at 3 sigma exceeds half the radial; the ratio's distribution has a median of 0.19 and a 90th percentile of 0.86 | 28: 21 comets, whose polar jets push across the plane, 5 on arcs under 1000 d; the two near-Earth asteroids 2016 GW221 and 2013 XY20, whose normal terms rest on 209 and 72 observations, remain unexplained (`sbdb_out_of_plane`) | +| Gamma rays harder than any shock | Fermi-LAT 4FGL-DR4 (HEASARC fermilpsc): 2766 sources above 10 sigma with a power-law index, those with an index below 1.3 at its upper error | none (`fermi_hard_spectra`) | +| Stars whose distance changed since Hipparcos | Hipparcos new reduction and Gaia DR3: 98004 stars with both parallaxes, the differences in combined sigmas scaled by the sample's scatter of 1.24, those apart by 5 scaled sigma and 2 mas; the match's brightness, RUWE, Gaia's flags, Hipparcos's goodness of fit, SIMBAD and the Gaussian tail | 43: 3 matched to a Gaia source two magnitudes too faint, 27 binaries, 12 saturated or with poor solutions, 1 within the Gaussian tail (p 0.055); none unexplained (`hipparcos_gaia_parallax_change`) | +| Lithium above the meteoritic | GALAH DR4 (Data Central): 124623 dwarfs with a clean fit and a clean lithium abundance to 0.15 dex at S/N above 40, those with A(Li) above 4.3 at the lower bound, a dex above the meteoritic and beyond what engulfing a giant planet adds; the stars between 3.6 and 4.3 counted as within engulfment's reach | 1 above 4.3, a 6600 K star where the line blends; 11 between 3.6 and 4.3; none unexplained (`galah_lithium_meteoritic`) | +| Gamma-ray flares from the nearest stars | Fermi All-sky Variability Analysis second catalogue (HEASARC fermi2favs): 518 flaring sources with error radii, against the 2551 Gaia Catalogue of Nearby Stars objects within 20 pc, with the stars moved 2 deg in eight directions as the null | 7 stars inside error circles against 9.4 moved (Poisson p 0.83), five of the circles carrying their own blazar or nova counterpart; at the chance rate (`fava_nearest_stars`) | +| Surfaces bluer than any asteroid class | Gaia DR3 sso_reflectance_spectrum: 60515 asteroids with six or more unflagged bands from 450 to 850 nm, the slope of each by least squares, those below -15 per cent per 100 nm at 3 sigma; the slopes' 0.1st percentile sits at -3.1 | none (`gaia_sso_blue_surfaces`) | +| Stars whose infrared changed since 2MASS | Gaia Catalogue of Nearby Stars: 142514 stars brighter than G 15 with 2MASS Ks to 0.03 mag, the G-Ks of each against the run of G-Ks with BP-RP, those five widths and 0.3 mag off; Gaia's neighbours within the 2MASS beam, image peaks, variability flag and RUWE; SIMBAD | 4847 off the run: 4732 with a Gaia neighbour within 2 mag inside the 2MASS beam, 27 white dwarfs, 6 young stars, 3 subdwarfs, 19 variable, 26 binaries; 34 remain, mostly red dwarfs with Ks brighter than their Gaia colour gives by 0.3-0.7 mag and no resolved neighbour (`gcns_2mass_gaia_ir_change`) | +| Rotation periods on whole days in TESS | Fetherolf et al. (2023) TESS rotation periods (VizieR J/ApJS/266/22): 1416 stars with one period between 0.5 and 13 d measured to 0.005 d, those within 0.005 d of a whole number of days against the periods' density and the half-day windows | none against 14.2 expected, the catalogue holding no period at a whole day; 107 at half-days, a pile-up of the catalogue's own (`tess_rotation_whole_days`) | +| Carbon stars on the main sequence next door | Gaia DR3 gold sample of carbon stars joined to gaia_source: 99 within 1 kpc at parallax over error above 5, those whose absolute G places them on the main sequence, fainter than 4 | 2, both with RUWE above 10, their parallaxes dragged by a companion; none unexplained (`gaia_carbon_dwarfs`) | +| Eclipsing twins to a part in a thousand | Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83): 1642 systems with a fitted temperature ratio, 307 within 0.05 of one, those within 0.001 against the ratios' density and the fits pegged at exactly 1.000 | 6 free of the boundary against 6.1 expected, none pegged; at the chance rate (`kepler_eb_twins`) | +| Stars WISE could not see | Gaia Catalogue of Nearby Stars: 156334 stars brighter than G 15, 11207 without a WISE counterpart in the catalogue's own match, each carried to 2010.5 and sought in AllWISE within 3 arcsec; WISE's saturation, Gaia's neighbours in the beam, the halos and glare of brighter stars out to ten arcminutes, image peaks, RUWE, SIMBAD, unWISE's deeper coadds and the Galactic plane | 1658 unmatched: 384 saturated, 1003 blended with a Gaia neighbour in the beam, 164 in a brighter star's halo or glare, 15 of poor astrometry, 82 listed by unWISE and so dropped by AllWISE's own extraction, 10 in the plane's confusion; none unexplained (`gcns_wise_missing`) | +| Launch provenance of light bodies | JPL Small-Body Database: 22 asteroids and 279 comets with a radial non-gravitational term, those at 3 sigma whose term needs an area-to-mass ratio above 0.1 m^2/kg from sunlight alone; the database's bodies of our launching, the dark comets, comets' outgassing and the arcs | 71: 70 comets, whose outgassing supplies the push, and 'Oumuamua at 1.2 m^2/kg, whose published outgassing models do the same; none of our launching carries a term in the database (`sbdb_light_bodies`) | +| VASCO transients and the geosynchronous belt | the Villarroel et al. (2020) POSS-I transient candidates (VizieR J/AJ/159/8): 127 positions spanning declinations -5.7 to 82.9 deg | in the band from -6.1 to -4.6 deg, where the geosynchronous belt stands seen from Palomar, 1 against 3.03 from the band's share of that sky (binomial p 0.95); nothing crowds the belt (`vasco_geosynchronous_belt`) | +| Our flags toward the solar apex | the coverage store: 180,822 Gaia DR3 stars, 32,003 of them vetted, within 30 deg of the solar apex (l 56.2, b +22.8 deg) and of the antapex | 2,671 vetted stars toward the apex against 1,875 from the whole store's share and 2,154 toward the antapex against 1,810, the whole of it the footprints of the runs that vet every target; with each run's own coverage setting its share, 2,723 run targets against 2,720 (p 0.31) and 2,185 against 2,181 (p 0.29) (`store_flags_apex`) | +| Warm dust in globular clusters | the Harris (2010) Galactic globular clusters with a half-light radius (VizieR VII/202): 141 clusters; the AllWISE sources with W1-W3 above 1 mag at W3 signal-to-noise 10 within the half-light radius against the annulus from three to five half-light radii | no cluster holds more warm sources inside its half-light radius than its surroundings give, beyond chance over the 141 (`allwise_globular_warm_dust`) | +| Single hot subdwarfs in the thin disc | the known hot subdwarfs of Culpan et al. (2022) (VizieR J/A+A/662/A40) with a Gaia parallax at 5 sigma, a proper motion and an SDSS or LAMOST radial velocity: 1,034 sdB, sdOB and sdO stars, 485 of them without a companion in their class, Gaia's RUWE, non-single-star flag or colour | 129 singles within 50 km/s of the local standard of rest, a thin-disc share of 0.27 against the binaries' 0.25, so single hot subdwarfs sit on thin-disc orbits as often as the binaries do; every one an evolved star the disc's mergers supply (`hot_subdwarfs_single_thin_disc`) | +| Sky clustering of our residues | the coverage store: 180,822 Gaia DR3 stars in 158 runs, 32,003 of them vetted; vetted pairs within 1, 3 and 10 deg as a share of all pairs against 50 draws in which each run marks as many of its own targets at random | 1.759 pairs per 10,000 within 1 deg against 1.752 +- 0.002, an excess of 0.4 per cent; 13.067 against 13.058 within 3 deg (p 0.16) and 111.606 against 111.671 within 10 deg (p 0.84); within each run the vetted pairs match the draws (55,957 against 55,843), so the small excess at 1 deg lies between runs and is not explained (`store_residue_clustering`) | +| Binary pulsars decaying at the wrong rate | the ATNF catalogue's field binary pulsars with a measured orbital decay and the companion's mass: 13, the total mass from the periastron advance or from sin i and the mass function; general relativity's decay, the Shklovskii term and the Galactic acceleration, with the masses and a 20 per cent distance error carried by Monte Carlo | the double pulsar J0737-3039A matches relativity to 0.2 sigma; one remainder beyond 3 sigma, the redback J2339-0533 at 3.5 sigma, whose orbital period wanders with its companion's shape (`atnf_orbital_decay_remainder`) | +| The axis of the universe | SIMBAD's objects of unknown nature and its unclassified radio, X-ray and gamma-ray sources within 2 deg of the CMB dipole's apex and antapex, against 34 patches at each one's Galactic latitude | apex 1 unknown, 102 radio, 18 X-ray and 2 gamma-ray sources against control medians of 1, 133, 35.5 and 0, the gamma-ray count matched or beaten by 12 per cent of the controls; antapex 0, 47, 28 and 0 against 0.5, 79, 31 and 0; nothing marks the axis (`simbad_cmb_dipole_axis`) | +| The Lagrange points of the Galactic bar | the bar's L4 and L5 at corotation (6.5 kpc, bar angle 27 deg), at l 27.5 and 312.1 deg; the 171 unassociated Fermi-LAT 4FGL-DR4 sources within 3 deg of the plane that are neither confused nor flagged as soft Galactic unassociated, counted within 2 deg against 27 windows along the inner plane | L4 2 against the plane's mean 1.26 (p 0.36); L5 7 (p 0.0003), the densest window of the inner plane, on the Crux-Centaurus arm's tangent at l 310 deg and around the Kookaburra and Rabbit pulsar wind nebulae; the bar's parameters allow L5 anywhere in l 302 to 321 deg, so the point cannot be told from the tangent (`fermi_bar_lagrange_points`) | +| Two messengers at once | IceCat-1 (VizieR J/ApJS/269/25): the 65 IceCube alert tracks that arrived during TESS sectors 1-30, MJD 58325-59141; the Yang et al. (2023) TESS flares (VizieR J/A+A/669/A15): 480 flaring stars inside the tracks' 90 per cent regions with 1,722 flares | no flare within an hour of its neutrino against 0.125 from 1,999 shifts of the alert times by up to 100 days, and none within 100 pc against 0.062 (`icecat_tess_flare_coincidence`) | +| Dyson spheres built for our eyes | Gaia Catalogue of Nearby Stars: 8,688 Sun-like stars within 100 pc at BP-RP 0.65-1.0 with clean Ks, W3 and W4, 26 with excess at both 12 and 22 um and 6 of them unflagged with a colour temperature | 2 between 280 and 320 K against 1.0 in the bins beside (Poisson p 0.26), at 285 and 320 K; the excesses run from 100 to 320 K, at the chance rate (`gcns_room_temperature_sunlike`) | +| Cosmic-ray doublets, northern sky | Telescope Array's 72 events above 57 EeV of 2008-2013 (VizieR J/ApJ/790/L21) | no two events within 2 deg; within 4 deg 5 pairs, none within 10 days against 0.06 from 5,000 shuffles of the arrival times, and no triplet (`ta_doublets`) | +| Centrifugal habitats, survey periods | Lo et al. (2020) faint main-belt asteroids (VizieR J/AJ/159/25): the 122 with secure periods and diameters, 0.19-2.7 km, among them 22 super-fast rotators | no kilometre body under 10 minutes or needing 100 kPa; 4 bodies of 0.3 km or more spin past the 2.33 h gravity limit, needing 1.0-5.8 kPa, the fastest 510525 (1.75 km, 36.6 min), all within the strength of a coherent or cohesive body (`lo2020_spin_strength`) | +| Debris-disk voids | the Cotten and Song (2016) WISE excess stars (VizieR J/ApJS/225/15) matched to the 101,867 Gaia DR3 stars within 150 pc at G below 11 and BP-RP below 1.5, 860 of them excess stars; every 20 pc sphere about a parent star against its colour-binned excess rate | the deepest deficit, 0 excess stars against 3.9 about Gaia DR3 1613739235969713280 at 86 pc (Poisson 0.02), is matched or passed by 93 per cent of 200 shuffles of the labels within colour bins; at 15 pc the deepest is 2 against 3.0; no region of stripped belts (`cotten_song_debris_voids`) | +| Spectra no stellar model fits | GALAH DR4: 1,379 dwarfs within 100 pc at red-arm S/N above 100; the worst 0.5 per cent of the spectral fit's chi-square over the median of its 250 K temperature bin | 7 spectra at 5 to 42 times their bin's median, 6 of them binaries with a second velocity component or a Gaia RUWE above 1.4 and one star with H-alpha filled in; none unexplained (`galah_worst_fits_nearby`) | +| Gaia XP spectra the models fit worst | Gaia DR3: 118,030 stars within 100 pc with parallaxes at 10 sigma and a GSP-Phot fit; each log-posterior against its bin of 0.1 mag in BP-RP and 1 mag in G fitted with the same model library, the worst 0.1 per cent | 118 worst fits: 22 with a companion, 6 with emission lines, 2 blended and 69 at an extinction no star within 100 pc carries; 19 mid-M dwarfs fitted with MARCS remain, the far end of a tail of 149 beyond 5 widths among 34,969 such stars; PHOENIX fits of M dwarfs run far worse than MARCS fits and pile at [M/H] -0.8, so the bins are kept apart by library (`gaia_xp_worst_fits_nearby`) | +| Herded stars, GALAH and ages | GALAH DR4 dwarfs within 100 pc with isochrone ages, GALAH radial velocities and Gaia DR3 astrometry: 2,895 with 3D velocity errors under 0.5 km/s and one velocity component | 482 pairs within 10 pc moving together within 1 km/s against 2.2 from velocity shuffles; of the 34 pairs both hotter than 5,600 K, where ages carry information, the age gaps run to a median of 1.6 Gyr and a largest of 4.9 Gyr, and none exceeds 5 Gyr (`galah_herded_ages`) | +| Fireballs from outside the Solar System | the CNEOS fireball database through the JPL fireball API: 360 fireballs with a location and a pre-entry velocity vector, taken from Earth-fixed axes to barycentric axes with Earth's gravity removed and Earth's velocity added | 8 arrive faster than the Sun's escape speed at Earth's distance; redrawn with CNEOS's errors against ground-based networks (Peña-Asensio et al. 2025), the five before 2018 or at the threshold are bound in 2 to 48 per cent of the draws, among them IM1 (2014-01-08, 60.6 km/s heliocentric, bound in 2 per cent) and IM2 (2017-03-09, 21 per cent); three since 2018 are bound in none of 20,000, 2021-05-06 (43.7 km/s), 2022-07-28 (47.4 km/s, CNEOS-22) and 2026-04-01 (51.8 km/s), and are not explained (`cneos_hyperbolic_fireballs`) | +| The temperate rocky-planet hosts in every band | NASA Exoplanet Archive composite table: the hosts within 100 pc of planets below 1.8 Earth radii (or 10 Earth masses) at 0.2-2 times Earth's insolation, against the other planet hosts within 100 pc weighted to the same temperatures and distances; eRASS1, GALEX AIS, VLASS and RACS-low by CDS XMatch inside each footprint, the radius widened by each star's motion over the survey's span | X-rays 6 of 11 against 4.7 (p 0.31); radio none of 24 in VLASS and none of 17 in RACS-low against 0.5 and 0.4; ultraviolet 5 of 29 against 11.7, a deficit (lower tail 0.007) from AIS fields that missed 13 of the 29 and from the quiet M dwarfs that radial-velocity searches choose; no band raises its detections at these hosts (`exoplanet_hz_hosts_bands`) | +| Retrograde co-orbitals of the inner planets | JPL Small-Body Database: asteroids and comets within 5 per cent of the semi-major axis of Mercury, Venus, Earth or Mars with inclinations above 90 deg and eccentricities below 0.5 | none at any of the four (`sbdb_retrograde_coorbitals_inner`) | +| Clusters missing their brightest stars | Hunt and Reffert (2023) open clusters at 100-1000 pc younger than 400 Myr with A_V below 1.5 and 300 or more members: 88 with 20 or more members at absolute G 4-6.5; their members at absolute G 0.5-2.5, late-B to F stars still on the main sequence, against the bright-to-faint ratio fitted in log age (0.32 at log age 7.5, 0.34 at 8.5) | no cluster short of bright stars beyond the 88 trials; the deepest, NGC 2301 with 29 against 48.7 (p 0.0016, corrected 0.14), Roslund 5 and NGC 1039, lie at the chance level (`hunt_reffert_missing_bright`) | +| Hostless flat-spectrum radio sources | CRATES (VizieR J/ApJS/171/61): 4,396 point-like flat-spectrum sources with 8.4 GHz interferometric positions more than 30 deg from the Galactic plane and declination above -30 deg, against AllWISE, Pan-STARRS1, CatWISE2020, unWISE, SIMBAD, the Legacy Surveys DR10 and VLASS | 132 with no AllWISE, Pan-STARRS1, CatWISE2020 or unWISE counterpart: 27 classed as active galaxies by SIMBAD, 56 compact knots or hotspots more than 3 arcsec from their NVSS centroid, 11 with a Legacy DR10 galaxy or quasar at r 21-24.6, 15 at positions where VLASS sees nothing within 30 arcsec though it recovers 78 of 79 CRATES sources, and one beside HD 81417; 22 remain, each a VLASS source at its position with nothing in the Legacy Surveys within 2 arcsec, alike to the infrared-faint radio sources thought to be radio-loud nuclei at high redshift and not explained one by one (`crates_hostless_flat_spectrum`) | +| A model-free outlier search over the nearest stars | Gaia DR3: the 1,000 sources with the largest parallaxes at 10 sigma (beyond 67.7 mas); 2MASS and AllWISE through Gaia's best neighbours, GALEX AIS and eRASS1 by CDS XMatch at their epochs; each archive's colours or flux ratio against the 50 stars nearest in BP-RP, the ultracool dwarfs fainter than absolute G 15 against each other by G-RP | 196 stars odd in at least one archive by 5 robust widths and 3 in three or more, all astrometric binaries, two of them the components of one pair at 4.3 pc; none unexplained (`nearest_stars_multi_archive_outliers`) | +| Time clustering of our residues | the coverage store's unexplained candidate events with dates, a candidate being a row with a p-value below 0.01 or a cosmic-ray multiplet, since most dated rows record the epochs searched: 5 runs, 2,408 distinct days, from the Auger doublets and triplets of four data sets and the occultation limbs beyond their null | 6 days on which candidates of different instruments fall within a day of each other, all between the Auger 750 m array and the occultation limbs, against 6.0 +- 2.0 when each run's days are shifted by up to a year (p 0.62) (`store_residue_time_clustering`) | +| Deliveries from stellar encounters | the three interstellar objects from the Small-Body Database, their incoming velocities at infinity (26.3, 32.3 and 57.9 km/s from the published radiants), against the Gaia DR3 stars within 100 pc with radial velocities, both carried back on straight lines for 10 Myr | stars that passed within 1 pc of an object's path at under 10 km/s: one for 'Oumuamua, Gaia DR3 6476662183875784064, 0.39 pc and 7.9 km/s 6.9 Myr ago, against 0.11 for the same speed in random directions (p 0.11); none for Borisov against 0.08 and none for 3I/ATLAS against 0.01; at the chance rate (`interstellar_object_home_stars`) | +| Fireballs seen twice | the CNEOS fireballs since 2017 July 23 inside the GOES lightning mappers' view, 79, against NASA's GLM bolide database (11,611 bolides), within 60 s and 300 km; the two-satellite sightings triangulated frame by frame into trails | 68 of 79 matched; both fast fireballs in view were seen, 2026-04-01 by GOES-19 and 2022-07-28 by GOES-16 and GOES-17; the mappers' triangulated trail speeds run at 0.66-1.65 of the CNEOS speeds on 16 slower fireballs (median 1.14) and at 0.61 for 2022-07-28 (18.4 km/s), too scattered to test its 21 per cent excess (`cneos_glm_bolides`) | +| Radio spectra of the hostless flat-spectrum sources | the 22 compact CRATES sources the hostless test left without an infrared or optical counterpart, and 200 hosted CRATES point sources treated alike: TGSS, GLEAM, RACS-low, NVSS and VLASS by CDS XMatch, the CRATES fluxes and the VLBI bands of the Radio Fundamental Catalogue | 17 of 22 are VLBI-compact, the hosted sources' rate (0.77); their spectra are 8 peaked, 8 flat and 6 steep against the hosted sources' 43, 124 and 28 of 200, flat less often (Fisher p 0.019) and peaked more often (p 0.10); none varied by a factor 2 between NVSS and VLASS; compact young radio galaxies rather than beamed quasars, whose hosts lie below the Legacy Surveys' depth (`crates_hostless_seds`) | +| What sets the worst-fitted nearby M dwarfs apart | the 19 MARCS-fitted mid-M dwarfs among the Gaia XP worst fits with no companion, emission, blend or extinction behind them, against 3,000 stars of their colour and magnitude within 100 pc with ordinary fits | all 19 lie below the main sequence at fixed BP-RP and at fixed G-RP alike (1.5 robust widths against 0.0, p 5e-10; 0.36-1.0 mag, and 2.3 mag for one), with parallaxes three times as precise as their peers' (signal-to-noise 1,283 against 366, p 2e-10), at higher Galactic latitude (64 against 25 deg, p 2e-5), faster on the sky (45 against 31 km/s, p 0.08), redder in BP-G at fixed G-RP (p 0.012), with no excess radial-velocity scatter or GALEX detection (`gaia_xp_misfit_traits`) | +| What a pile of unassociated gamma-ray sources is | the 4FGL-DR4 sources associated with pulsars, blazars and remnants or nebulae (3,946) train a random forest on power-law index, curvature and its significance, peak energy and variability; the clean unassociated sources within 2 deg of l 312.07, b 0 against those elsewhere within 5 deg of the plane; eRASS1 by CDS XMatch | 5 of the window's 7 classifiable: none pulsar-like against 25 per cent elsewhere, four uncurved and steady (variability indices 8-20) and the extended FGES J1409.1-6121 classed with remnants and nebulae; eRASS1 counterparts 1 of 7 against 4 of 135; extended emission around the Kookaburra and Rabbit nebulae rather than a pile of young pulsars (`fermi_unassociated_pile_classes`) | +| Fireballs the meteor cameras caught | the 360 CNEOS fireballs with velocity vectors against the Global Meteor Network's trajectory summaries for 2018-2026, a camera trajectory beginning within 10 s and 300 km of the fireball's peak | none of the 360, the eight faster than the Sun's escape speed among them, has a camera trajectory; the network's cameras and the satellites' fireballs, mostly over the oceans, do not overlap (`cneos_gmn_trajectories`) | +| Hosts of the hostless radio sources in the near infrared | the 22 hostless compact CRATES sources against VHS DR5, VIKING DR2 and UKIDSS LAS DR9 within 2 arcsec, coverage from any source within 1 arcmin, and the K-z relation of radio galaxies (Willott et al. 2003) | none has a near-infrared counterpart; the 15 the surveys cover are fainter than K 18.1-18.2, which on the K-z relation puts their hosts beyond redshift 1.5, and 7 lie outside the surveys (`crates_hostless_nir`) | +| Spectral classes of the worst-fitted nearby M dwarfs | the 19 MARCS misfits of the trait test looked up in LAMOST DR5 and SDSS DR17 within 3 arcsec of their positions at those surveys' epochs | 4 have spectra, typed M2 and M3 by LAMOST's pipeline and M2V by SDSS's, neither of which carries a metallicity class; the subdwarf verdicts rest on the luminosity and J-Ks tests (`gaia_xp_misfit_spectra`) | +| Gamma-ray points inside TeV glows | the 7 clean unassociated 4FGL-DR4 sources within 2 deg of l 312.07, b 0 against the H.E.S.S. Galactic Plane Survey's components (VizieR J/A+A/612/A1), inside when within twice a component's Gaussian width, against the 106 clean unassociated sources elsewhere in the survey's footprint | 1 of the 7, 4FGL J1417.7-6057, lies inside HESS J1418-609, against 17 of 106 elsewhere (Fisher p 0.71); the other 6 lie outside every TeV source, most 0.5-1.6 deg above the plane, so the TeV glows of the Kookaburra complex do not hold the pile (`fermi_unassociated_in_tev_glows`) | +| Subdwarf indices of the worst-fitted nearby M dwarfs | the 19 MARCS misfits' LAMOST DR5 and SDSS DR17 spectra, put in air at rest and measured in the CaH2, CaH3 and TiO5 bands, and the zeta of Lepine et al. (2013); APOGEE DR17 holds none of the 19 | 4 measured: Gaia DR3 2470131113219840128, the one 2.3 mag below the main sequence, is a subdwarf (zeta 0.56); the other three, 0.5-0.8 mag below, are dwarfs of ordinary metallicity (zeta 1.01-1.12), so the faintness of most is not the subdwarfs' (`gaia_xp_misfit_subdwarf_indices`) | +| Gas under a pile of gamma-ray points | the 7 clean unassociated 4FGL-DR4 sources within 2 deg of l 312.07, b 0; the Schlegel, Finkbeiner and Davis dust column at each from the IRSA dust service against 26 points at the same latitude 3-15 deg along the plane | the sources' dust ranks a median 0.69 among their controls (p 0.038 against uniform ranks), the two in the plane at 0.92 and 0.88; they sit on more gas than their latitudes' share, as gamma rays from cosmic rays in unmodelled gas would (`fermi_pile_dust`) | +| Methane and carbon dioxide without carbon monoxide | the NASA Exoplanet Archive's JWST transmission spectra of the 13 planets below 3.5 Earth radii with equilibrium temperature below 450 K or insolation below three Earths' (K2-18 b, L 98-59 d, LHS 1140 b and c, LP 791-18 c, LTT 3780 c, TOI-270 d, TOI-776 c, TRAPPIST-1 b-f), one reference per planet and instrument and each visit once, fitted together with templates of ten gases from their cross-sections at the planet's temperature | TOI-270 d holds CH4 (6.7 sigma) and CO2 (3.7) without CO, the disequilibrium pair, which the published metal-rich mini-Neptune envelope makes without life; dimethyl sulfide's template fits K2-18 b at 3.4 sigma with its methane at 0.4, the band the template overlaps, where the median over the atlas's 44 spectra of the planet reads 0.5, L 98-59 d at 3.6 sigma, a world of volcanic sulfur gases, and TRAPPIST-1 e at 4.5 sigma, whose spectrum its star's spots dominate (`jwst_temperate_disequilibrium`) | +| Flux in discrete levels, Kepler | Kepler DR25 long-cadence PDCSAP light curves of 199,624 stars, every quarter, read in memory from the STScI mirror | 132,275 steps within one cadence between 7.4-hour medians at 7 sigma, of which 2,767 are shared by three or more stars of the CCD channel and 6,438 by twenty or more stars of the focal plane; 18,465 stars keep steps of their own (8,108 up, 19,044 down) and 54 hold three or more levels each revisited in a quarter: 34 eclipsing binaries of the Kepler catalogue, 10 giants, whose oscillations and granulation step the window medians, the dwarf novae V447 Lyr and V1504 Cyg, the delta Scuti star TYC 3142-717-1 and the transits of Kepler-678 b; 6 dwarfs remain unexplained, Kepler-1645, TYC 3132-601-1, the A star TYC 3125-2793-1, KIC 7679979, KIC 11824498 and KIC 12783196, with steps of 0.1-9 per cent at irregular intervals (`kepler_levels`) | +| PSF-shaped flashes in pixel data | Kepler DR25 long-cadence target pixel files of the 3,611 KOI hosts with a candidate or confirmed planet, 48,779 quarters, their COSMIC_RAYS column | cadences where three or more optimal-aperture pixels were corrected together: 100,836 against 1,303 from the pixels' own rates, the cosmic rays' tracks; 2,135 shaped like the star's image (correlation 0.9 or more and 0.2 above the image shifted by one pixel) against 6,463 shaped like a shifted image, the most like of four shifts; the PSF-shaped events run at 3.7 times a quarter of the shifted-image rate on M dwarfs, 2.7 on K dwarfs, 1.1 on G dwarfs and 0.8 on F stars, the cool and young stars' flares, led by Kepler-1627, LSPM J1852+4740 and BY Draconis-type hosts; of the 860 stars with PSF-shaped events their channel does not share, 313 are flaring (cooler than 5300 K, three or more events, or light in the next cadence) and 547 carry one or two, the chance rate of cosmic rays shaped like the star's image, whose amplitudes the shifted-image class reaches as often (`kepler_psf_flashes`) | +| Atmospheres of the Rocky Worlds planets | the JWST MIRI 15 um eclipses the Rocky Worlds DDT has released on MAST: GJ 3929 b (four eclipses, the team's joint fit), TOI-771 b (three) and LHS 1140 b (one), with the stars' measured 15 um fluxes; TEPCat's radii, temperatures and separations and the Encyclopaedia of Exoplanetary Systems' distances | each dayside brightness temperature against the hottest a bare dark rock can be: GJ 3929 b 0.99 (0.91-1.07), TOI-771 b 1.03 (0.94-1.14) and LHS 1140 b 1.07 (0.96-1.17), each a bare rock's dayside with no heat carried away; on its one eclipse the habitable-zone LHS 1140 b lies 2.5 sigma above the 0.8 a heat-carrying atmosphere would give; LTT 1445 A b and c and TOI-198 b are still to be released (`rocky_worlds_15um`) | +| Gases of every planet with a published spectrum | 1037 transmission and emission spectra of 153 planets from the NASA Exoplanet Archive (649), Zenodo (279), VizieR (80) and MAST's Exo.MAST (29), identical ones kept once; templates from Exo-Transmit's cross-sections at each planet's temperature, HITRAN's N2O lines and NIST's dimethyl sulfide spectrum; Earth's transit spectrum from ACE-FTS (Macdonald and Cowan 2019) as the control | Earth's own spectrum reads CO2 at 22 sigma, O3 17.5, H2O 11.8, CH4 3.9 and N2O 3.9 and raises the methane-and-CO2 and N2O flags, and it reads dimethyl sulfide at 3.0 sigma, which it does not hold, from methane's 3.3 um band; of the 153 planets five raise a flag and none is left unexplained: dimethyl sulfide in the hot giants HAT-P-18 b (4.3 sigma), HAT-P-30 b (3.2) and TOI-5205 b (5.0) and in the hydrogen-enveloped L 98-59 d (3.7), and CH4 (5.0) with CO2 (3.3) without CO in the hot Jupiter HD 209458 b; K2-18 b's 44 spectra put dimethyl sulfide at a median 0.5 sigma, none of the 35 that cover it at 3 sigma; an Earth twin laid on TRAPPIST-1 e's JWST spectra shows CO2 at 0.7 sigma and CH4 at 0.1 sigma in the median one, so that about 17 such spectra would show its CO2 and about 1000 its methane (`spectra_atlas_gases`) | +| Computation at the cosmic floor | the SPT-SZ multiband catalogue (Everett et al. 2020): 4845 sources at 95, 150 and 220 GHz over 2500 square degrees, each source's two spectral indices against the track of a 2.8-10 K body seen against the microwave background | 9 sources on the track, rising from 95 to 150 GHz and below dust's index from 150 to 220 GHz, against 9.5 from each source's natural spectrum drawn through its errors; seven have radio, infrared or X-ray counterparts or are extended, two of them stars on the survey's own list, and the two clean ones, SPT-S J050800-6450.8 and J232128-5833.3, are detected at 150 GHz alone; a 4 K body is recovered at 20 mJy three times in four, so no computing shell radiating 1e-4 of the Sun's output lies within about 100 pc in the field (`spt_cold_computing`) | +| Ghost spectra | rest-frame stacks of 313 stars from the ESO laser-line runs (HARPS 97, ESPRESSO 87, FEROS 80, UVES 49), 4100-5600 A, each with a twin correlating at 0.9: each star's lines taken out by its twins and what remains correlated with its own lines at every shift from 1,000 to 60,000 km/s either way | 9 stars carry a copy of their own lines at 7 widths or more, every one at a shift other stars' strongest peaks share (+44,552 km/s in three UVES stacks, +46,180 in four, +59,424 in two, +57,552 in six HARPS stacks), the meeting of strong lines with the ends of the blue arm and of the range rather than a body; zeta2 Reticuli's peak is one of the UVES three; a copy of 0.3 per cent depth scores a median 4.5 widths, so no reflector returning about half a per cent of its star's light moves through these systems at 1,000-60,000 km/s (`eso_ghost_spectra`) | +| Flare echoes | GJ 1243 (KIC 9726699) in Kepler's one-minute photometry, 841 flares at 10 noise widths in 11 quarters; Proxima Centauri, AU Mic, YZ CMi, EV Lac, AD Leo, GJ 1243, Wolf 359 and UV Ceti in TESS's twenty-second and two-minute photometry, 39-259 flares each; the 8 stars within 30 pc brighter than Tmag 15 whose twenty-second light curves hold 30 flares; each flare's five-minute impulse correlated with the light curve 3-180 minutes after it and before it for the null, every other peak at 5 widths masked | no echo: GJ 1243 in Kepler reads 2.8 widths after its flares against 7.3 before, Proxima 5.8 at 156 min against 6.8; EV Lac's excess 10 and 22 minutes after its flares, 7.3 widths with secondary peaks unmasked, falls to 2.9 once they are, the second bursts of complex flares; of the nearby stars EQ Peg A (BD+19 5116 A) reads 2.5 per cent of its flares at 155 min and 7.5 widths, which one flare left out cuts to 1.0 per cent and the sector's first half does not show, and BB Scl's 40-minute excess rests on one of its eclipse edges; an echo of 0.3 per cent laid 30 min after GJ 1243's flares returns at 5.2 widths, under the 7.4 the null reaches, so the limit is about half a per cent of GJ 1243's flares and 0.6 per cent of Proxima's from a reflector 0.2-11 au away (`kepler_flare_echoes_9726699`, `tess_flare_echoes`, `tess20_nearby_flare_echoes`) | +| Optical frequency combs | rest-frame stacks of 313 stars from the ESO laser-line runs (HARPS 97, ESPRESSO 87, FEROS 80, UVES 49), 4100-5600 A: each star's residual after its twins laid on a grid uniform in frequency and its Fourier power read at every line spacing from 20 GHz to 1 THz against its own running median | 4 stars reach 30 times their level, all at spacings other stars share (20.5 GHz in HARPS and ESPRESSO stacks, 97.8 GHz in HARPS), the spectrographs' own; a star's strongest peak has a median of 13.7 and a 99th percentile of 36, and a comb of 0.2 per cent depth at 50 GHz laid into the stacks reaches a median 53, passing 30 in 216 of the 313 (`eso_optical_combs`) | +| Minute tones at the nearest stars | the 1806 TESS twenty-second light curves of stars within 30 pc read by the discrete-level search, hour-long variations and flares removed, Fourier amplitude at every period of 1-60 minutes against its running median, the tone's centroid amplitude, VSX and SIMBAD | 28 tones at 6 times the local amplitude, none left: 8 at frequencies other stars share, the spacecraft's; 8 moving the centroid as a neighbour's would; 10 on stars that pulsate at minutes, among them the ZZ Ceti white dwarfs DN Dra (109 s), MY Aps (193 s), PY Vul (216 s) and WD J174349.28-390825.95 (399, 491 and 568 s, a ZZ Ceti of Guidry et al. 2021); the 54-minute tone of the M3.5 dwarf BPM 45048 is the third harmonic of its 2.69-hour spot signal (5.38-hour rotation, 12 per cent peak to peak), and HD 9770's 57-minute tone the twelfth harmonic of BB Scl's 0.4765-day eclipses (`tess20_minute_tones`) | +| Chirps at the nearest stars | the 1756 TESS twenty-second light curves of stars within 30 pc at Tmag 15 or brighter, cut into six-hour and hour-and-a-half windows, each frequency levelled over time, and summed along every straight track drifting 1-60 cycles a day per day at periods of 1-60 minutes, as radio searches de-Doppler a carrier | 35 tracks below p 1e-12, none left: 28 matched by the same light curve's windows shuffled; 4 carried by other stars of their sector along the same track; psi1 Dra B's sweep of +59 c/d per day at 1008 c/d lies in its centroid (log p -279 against -28 in its light), pointing jitter; HD 146946's at 208 c/d drifting -33 joins the family of 210-225 c/d tracks drifting -20 to -40 that other stars of sector 67 carry in their flux and not their centroid; chi Ceti's slow track at 56 c/d vanishes once the band starts at 32 c/d, the leakage of its gamma Doradus pulsations (622 ppm at 2.54 c/d); a chirp of 0.05 per cent at 300 c/d drifting 20 c/d per day is found on its track in 14 of 20 light curves (`tess20_chirps`) | + +## Queued + +| Approach | Data | Note | +|---|---|---| +| Narrowband signals at high drift rates | Breakthrough Listen GBT mid-resolution products (2.86 kHz, 1.07 s): the 1118 ABACAD cadences of 882 targets with those products in the open data | tracks from -300 to +300 Hz/s with drift changing by up to +-0.3 Hz/s^2 within the scan, a hit at 10 sigma in all three ON scans along one track with the OFF scans below 5 sigma | +| Sources shining in one filter only | Pan-STARRS1 DR1 mean objects (VizieR II/349) | objects detected five or more times in one filter and never in the other four, brighter than g or r 19, i 18.5, z 18 or y 17, beyond what any stellar colour leaves undetected in the neighbouring filters; the per-filter detection counts carry no index, so each filter's selection reads all 1.9 billion rows | +| SPHEREx cold objects too large for degeneracy | SPHEREx QR2 spectral images (forced photometry at the ultracool dwarfs with parallaxes of the UltracoolSheet and Kirkpatrick 2021); WISE W3 and W4 | below 1500 K degeneracy allows 0.8-1.3 Jupiter radii, so a radiator of 1e22-1e23 W at 500-1500 K measures above 3 Jupiter radii once the band depths fix the temperature and the integrated flux the luminosity; Sonora Elf Owl and ATMO2020 fits with (R/d)^2 free, flagged above 2.5 Jupiter radii at 3 sigma, the field T dwarfs setting the null at 1.0 +- 0.15; binaries (at most 1.41), disks and variability between passes set aside | +| CHIME/FRB Catalog 2 replicated burst structure | Catalog 2 fitburst components of about 5000 sub-bursts; the waterfalls where needed; the tables sit on CANFAR storage behind a login, so the download waits on an account | a standardised engineered pulse recurs with the same relative component timings, amplitudes and widths from unrelated positions, while natural bursts and successive bursts of one repeater differ; the vector of normalised component times and amplitude ratios for bursts with three or more components, nearest-neighbour distances between sources more than 1 deg apart against shuffled parameters, any cross-source pair closer than the closest within-repeater pair | +| Hertz-scale coherent optical modulation in JWST guide stars | MAST fine-guidance products at 64 ms cadence for thousands of Gaia-selected guide stars, extracted with spelunker | no photosphere varies coherently at 0.05-8 Hz; Lomb-Scargle on the high-passed per-visit flux against the power distribution of the other guide stars of the month, the frequency absent from other stars and from the centroids; a 200-visit pilot first | +| Grey veiling of old stars in DESI DR1 | DESI DR1 stellar spectra (4 million) with the Milky Way Survey parameters, Gaia parallaxes, XP and kinematics | a featureless continuum added to an old, inactive star's light shallows every line by one factor, which metallicity does not; equivalent widths across Balmer, Ca II, Mg b and Fe I fitted as template times (1 - v) plus v times a continuum, the null the bulk's v at matched S/N and temperature; fibre contamination, sky residuals, white-dwarf companions (a black-body veil matching the parallax) and young accretors set aside | +| Recurrent hostless point sources in Rubin DP1 | Rubin DP1's DiaSource, DiaObject, Object, ForcedSource and SSObject tables | a PSF-shaped source on two or more nights at one position with nothing in the deep coadd, which no natural variable under 3 mag of amplitude gives; the null from rematching the detections at positions offset by 30 arcsec; asteroids, variables with coadd flux, dwarf novae and flares set aside | +| Hot featureless excess at old stars in SPHEREx | SPHEREx QR2 spectral images with forced photometry at the Gaia positions of FGK dwarfs within 300 pc, Gaia XP for the photosphere, 2MASS and AllWISE, Gaia kinematics and activity for age | a 600-2000 K black-body excess above 1e-3 of an old main-sequence star's light, read from twenty channels between 3.5 and 5 um, with no water, CO, methane or CO2 band between 1 and 5 um and without the blue slope of sub-micron dust; the band indices at zero against the 5 sigma tail of the whole sample's excess distribution; YSOs, Be stars, AGB stars, debris discs and brown-dwarf companions set aside by their lines and bands | +| SPHEREx at every star | SPHEREx QR2 spectral images: forced photometry at the 1701 unsaturated stars within 25 pc (`infrared volume`) | 402 of the 1701 measured; the spectra of the rest, then the line and excess tests over all of them; pulsars and habitable-zone hosts next | +| ALMA cubes, larger units | 21 observing units over 1.5 GB of products, and early cycles | early cycles hold visibilities only | +| Other radio morphologies | Breakthrough Listen | spread spectrum, chirps, wideband pulses | +| Microlensing anomalies | OGLE, MOA, KMTNet | ring and shell lenses | +| Polluted white dwarfs | DESI DR1, 455 white dwarfs within 100 pc | Huang et al. 2026 tested 697 published abundance sets against a processed-metal template: 8 above Bayes factor 10, none claimed | +| Silhouettes on the Sun | SDO/HMI continuum | | +| STEREO and SOHO artifacts | heliospheric imagers | | +| Guest stars | historical transient records | | +| Outgassing against radiation pressure | MPC astrometry of light bodies | needs accelerations at 10 sigma | +| Industrial gases on Mars | ExoMars TGO occultations | | +| Dust impacts, Apollo seismometers, lunar imagery | PDS, LRO | | +| Low-frequency all-sky archives | OVRO-LWA and similar | | +| Isolated tracklets | Minor Planet Center Isolated Tracklet File | glints from flat reflectors: brighter than diffuse reflection allows at the tracklet's parallactic distance, no phase reddening, recurring at the same Sun-object-Earth geometry | +| Particle, gravitational-wave and ionospheric archives | GWOSC, INTEGRAL, SuperDARN | | +| Template library of human artifacts | labelled human signals in archives | | +| Single-channel sources in coronagraph cubes | SPHERE/IFS and GPI archives, about 1000 nearby stars | a point fixed on the sky in one spectral channel, which every reduction discards; null from the opposite parallactic angle and shuffled channels | +| Flashes in up-the-ramp jumps | JWST and HST infrared ramps of TRAPPIST-1, LHS 1140, GJ 1214 and other transit targets | a PSF-shaped jump in one group at the star, against sharp cosmic rays and snowballs | +| PSF-shaped cosmic rays | HST CR-split pairs, DQ arrays at nearby stars | a flag over the star's core in one member of a pair | +| Frequency parallax | Breakthrough Listen hit tables, recurring hits classed as interference | barycentric residuals on the annual parallax ellipse place a transmitter at 1e3-1e5 AU | +| Zero-drift carriers on the target | Breakthrough Listen hit tables with the drift floor removed | ON-only in three cadences on different days, chance (1/2)^6 per cadence | +| Planetary rotation in the frequency | GJ 169's 24 GBT files, the long Kepler-field tracks, pulses from transiting-planet hosts | a barycentric sinusoid at a period other than 23.934 h; folds made coherent with the planet's light-travel delay | +| Radar leakage at transiting hosts | Breakthrough Listen Kepler and TESS campaigns | the rate of single-scan, drifting, ON-only hits at transiting hosts against non-transiting controls | +| Beams between stars, radio archives | narrowband radio archives at the members of the 37 pairs in `beam_pairs_20pc` | a line at one member's frame whose drift matches a beam aimed at the other | +| Planet-frame lines, optical | HARPS, ESPRESSO and HIRES series of about 100 transiting planets | an unresolved line on K_p sin 2 pi phi, gone in secondary eclipse; null from negative and unphysical K_p | +| Lasers in line cores, ultraviolet and Mg II | COS and STIS spectra at Mg II h and k | the optical cores are searched; the ultraviolet ones next | +| Sub-photospheric absorption | the laser-line spectra | unresolved absorption at the star's velocity, narrower than its thermal and rotational width, not interstellar, diffuse-band or telluric | +| Lines in sky fibres, DESI and integral-field cubes | DESI DR1 sky fibres; the blank sky of MaNGA and SAMI cubes | the same test; single lines tested for [OII] doublet width and Lyalpha asymmetry | +| Narrow lines in Gaia XP spectra | 219 million mean XP spectra | against a data-driven model at the same colour, magnitude and parallax; lines of 2 per cent of the flux in 10 nm | +| Polarised narrow lines | PolarBase (ESPaDOnS, NARVAL) and HARPSpol Stokes V, Q and U | an unresolved feature in V, Q or U with nothing in I; null from the N profile | +| Eclipses by dark companions | the 279 Gaia DR3 orbits of the dark-companion search | ASAS-SN, ZTF and TESS at the predicted conjunctions bound each companion's radius | +| Coherent dust streams, spacecraft detectors | Ulysses, Galileo, Cassini CDA and New Horizons SDC at PDS | one mass at one velocity vector off the interstellar inflow | +| Determinism | TESS 20 s light curves within 30 pc; TESS two-minute star-sectors of the Gaia nearby stars within 100 pc, nearest first; Kepler long cadence of the KOI hosts | the compressed length of the residual's quantile symbols, its nonlinear prediction error and its time asymmetry against 99 IAAFT surrogates once the trend, three periodic signals and flares are removed, at the native cadence and binned eightfold; more compressible or predictable by 5 sigma, deterministic but not periodic | +| Low-DM pulse trains in pulsar surveys | Parkes PMPS and HTRU-S, GBNCC, LOTAAS | DM 0.05-2, the 5-120 pc range pulsar pipelines discard as interference; delay exponent 2 and confinement to one or two beams | +| PSF-shaped flashes in TESS pixel data | TESS 20 s and 2 min target pixel files of the stars within 100 pc | the Kepler search (`kepler_psf_flashes`) carried to TESS: a one-cadence brightening with the star's pixel response and no decay, against the image shifted by one pixel and the cool stars' flare rate | +| Senders behind nearby stars | Gaia DR3 pairs with a farther star within arcminutes of a nearer one; Breakthrough Listen cadences whose beam holds both | a beam from the farther star to the nearer continues to Earth; hits re-tested in the farther star's frame at the retarded positions | +| Sky-locked Doppler tracks among interference | Breakthrough Listen hit tables, lines seen in every pointing | a sidelobe beacon's frequency follows Earth's rotation and orbit for one sky position; fitted position repeating on other days | +| Shared rest frequencies across stars | Breakthrough Listen hit tables with Gaia velocities | ON-only hits of different stars at one barycentric frequency within the velocity errors; null from permuted epochs | +| Images of flagged channels | LoTSS, MeerKAT, ASKAP WALLABY and GASKAP, VLA spectral-line visibilities | a narrowband point source in channels the flaggers removed; fringe-rate test against near-field interference | +| Sub-thermal millimetre lines | ALMA spectral windows with channels of 15 kHz or less toward stars within 150 pc | a line narrower than 30 m/s, below any molecular gas, after per-integration barycentric correction | +| Narrowband radio stars | VLASS single-epoch 16-plane cubes, RACS, LoTSS at stars within 100 pc | a co-moving source confined to one 128 MHz spectral window | +| Decade W2-W1 trends at scale | unTimely epochal unWISE photometry joined to Gaia | a rising W2-W1 colour with flat W1 and optical, against neighbours of the same magnitude | +| HI point sources at 0.18 km/s | GALFA-HI DR2, EBHIS and GASS cubes | single-channel, beam-shaped 21 cm emission at a fixed LSR velocity in every pass | +| Asteroid glints in survey photometry | ZTF and ATLAS photometry of numbered asteroids (Fink), single-frame transients | a one-frame excess of 1.5 mag over the phase and rotation curve, back on the curve in the next frame | +| Meteor alloy spectra and thrust | AMOS, Ondrejov and CAMS-S spectra; Global Meteor Network and FRIPON trajectories | Al, Ti, Li or steel ratios at 20 km/s or more; acceleration or curvature beyond drag, gravity and Coriolis | +| Radar point targets on the Moon and Venus | Arecibo-GBT and LRO Mini-RF lunar maps, Chandrayaan-2 DFSAR, Magellan FMAP | single-cell, omnidirectional returns of trihedral or plate cross-section, calibrated on the landers | +| Lines below the cutoff, further receivers | Cassini RPWS, Juno Waves, Voyager PRA and PWS, Parker Solar Probe RFS, Solar Orbiter RPW | the Wind and STEREO search carried to the outer Solar System and the inner heliosphere, with direction finding | +| Fast radio movers | VLASS epochs 1-3, RACS, LoTSS DR2, FIRST and NVSS component catalogues | compact sources on straight constant-speed tracks across three epochs above 6 arcsec/yr with no Gaia, 2MASS or WISE counterpart (a bow shock ahead of a craft at 0.01-0.1 c); null from relinking with epochs shuffled in position | +| Moving high-energy point sources | Fermi-LAT yearly slices and 4FGL unassociated sources; eROSITA DR1, the XMM slew survey and RASS | detections linked into linear tracks, with a pion-bump spectral test near 70 MeV for annihilation drives; null from slices shuffled in time | +| Nightside light, Kepler and JWST | Kepler phase curves of ultra-short-period rocky planets, CHEOPS and JWST short-wavelength phase curves | the TESS nightside search carried to Kepler's precision and JWST's band: eclipse depth minus phase amplitude above the thermal floor of under 0.1 ppm | +| Fluorinated gases, further planets | public MIRI LRS transits of rocky and sub-Neptune planets with NIRSpec companions | CF4, SF6, NF3 and CFC bands retrieved against the companion bands of CH4, NH3 and O3; K2-18 b is searched | +| Energy budgets of airless rocks | JWST MIRI eclipses and phase curves of bare rocky planets (Rocky Worlds DDT, Hot Rocks) | Bond albedo above 0.6 or a night side above 250 K without an atmosphere's CO2 band or phase offset | +| Exobelt pedestals beyond 30 days | the Kepler planets below 2 Earth radii beyond 30 d, TESS | a symmetric pedestal at 5-10 planetary radii by Delta BIC against injections; the shoulder test is searched | +| Deuterium depletion below the burning limit | JWST NIRSpec G395 spectra of cold companions with dynamical masses | CH3D/CH4 giving D/H below 5e-6 under 12 Jupiter masses; the brown dwarfs above 13 are the control | +| Monodisperse swarms | Spitzer IRS spectra of 571 debris disks (CASSIS), ISO SWS, JWST MIRI MRS | Mie interference ripples periodic in wavenumber, 100-500 cm-1, against IRS standard stars' fringes | +| Dark microlenses with mid-infrared counterparts | OGLE, MOA and KMTNet lenses with measured masses and no lens light, AllWISE, GLIMPSE, MIPSGAL | a 200-600 K blackbody at the lens position with nothing in the near infrared; control positions in the same fields | +| Information content of pulsar single pulses | Parkes, FAST and LOFAR search-mode archives of bright pulsars | block entropy and compression of pulse-energy sequences against hidden Markov and drift-preserving surrogates | +| Flux in discrete levels, TESS two-minute | SPOC two-minute light curves of the Gaia nearby stars within 100 pc, 362,656 star-sectors nearest first | the 20 s test carried to the two-minute targets: 7-sigma steps between half-hour medians, transitions within a few cadences, levels revisited | +| Grey dimming over a century | DASCH DR7 plates with Gaia, ASAS-SN and ZTF | differential slopes below -2 per cent per century in both plate halves, grey in colour, continuing to the present | +| Buried masses in lunar gravity | GRAIL GRGM1200B with LOLA topography and the magnetic maps; MRO gravity of Mars | point-mass Bouguer anomalies at 2-10 km depth uncorrelated with topography, basins or magnetisation | +| Fissiogenic nuclides in deep time | published 236U/238U and 129I/127I in ores, formation waters and sediments; ice cores | an excess over in-situ spontaneous fission in the host rock | +| Thrusted cluster escapees | Gaia DR3 6D, GALAH DR4, APOGEE DR17, Hunt and Reffert (2023) clusters | stars with a cluster's abundance fingerprint whose ballistic traceback never enters the cluster's tidal radius; null from chemical doppelgangers on the far side of the Galaxy | +| Shkadov open side | Gaia DR3 colour-magnitude diagrams of old clusters with spectroscopic temperatures and RV constancy | single stars between the twin sequence and the isochrone, too hot for any mass ratio | +| Star lifting in eclipsing binaries | DEBCat, TESS eclipsing binaries with RV orbits, Gaia DR3 double-lined solutions | the lower-mass component fitting an isochrone over 0.5 dex older than its companion, without mass transfer; the reversed sign measures model error | +| Resolved Kardashev-III fronts | Legacy Surveys, unWISE, GALEX and integral-field kinematics of 5000 galaxies within 50 Mpc | an m=1 or m=2 asymmetry in W4/r beyond the asymmetry in Halpha, FUV and optical colour, with W4/W3 near 1 | +| Nova ellipsoids, wider photometry | ZTF, ASAS-SN and TESS FFI light curves of the shells' stars without 2-minute data; Schaefer's nova distances for fainter eruptions | the same test on the stars the 2-minute sample misses; one star crossed by more than one eruption's shell is the discriminator | +| Earth-transit-zone stars at opposition, later pointings | TESS ecliptic sectors after 92 as they are released, FFIs for stars without 2-minute data | the sectors 42-46, 70-72 and 91-92 test carried to more windows | +| Rimless pits in the lunar highlands | LOLA and SLDEM2015 DEMs, LROC WAC, Robbins crater database | full-depth, flat-floored depressions without rims, ejecta or rays, 200 km from maria | +| Constant heat in the lunar night | Diviner level 3 and 4 night-time temperatures, rock abundance, LOLA slopes | a constant residual through the night against the decaying excess of rocks; the ALSEP generators as controls | +| Station-kept planetary systems | NASA Exoplanet Archive multi-planet systems, TTV posteriors, isochrone ages | posteriors unstable within 1 per cent of the age in over 99 per cent of draws (SPOCK, REBOUND), against injected stable systems | +| Mirror planets | Kepler and TESS eclipse catalogues (Esteves, Angerhausen, Wong), CHEOPS | a minimum geometric albedo above 1.5 at 3 sigma after bounding thermal emission; the Exoplanet Archive's eclipse depths shortward of 1 um are searched (`exoplanets_mirror_albedo`) | +| Planet-locked Doppler drifts | Breakthrough Listen hit tables of the TOI campaigns (Traas 2021, Franz 2022, Barrett 2025) with Exoplanet Archive ephemerides | hits at the drift a transiting planet's acceleration predicts at each scan, against the off-source scans | +| Self-luminous asteroids, raw photometry | ATLAS and ZTF photometry of the 221 edge-pinned curves, with rotation removed | a linear phase slope below 0.0179 mag/deg once the light curve is fitted | +| Co-occurrence of anomaly lists | Hephaistos II, Schmidt's dipper analogues, ZTF dippers, BL signals of interest, laser candidates, VASCO | stars on two or more lists against the hypergeometric expectation, and 3D clustering against parent-matched draws | +| Dippers' kinematic ages | Gaia DR3 and LAMOST velocities of the ZTF and TESS dippers, Schmidt's lists, KIC 8462852 | the fraction of dippers with field-star vertical velocities, against the young dust-bearing population | +| Przybylski's star half-lives | ESO UVES, HARPS, FEROS and ESPRESSO spectra of HD 101065 since 2000 | equivalent widths of Pm, Es and Ac lines against Nd II and Pr II over two decades: decay, constancy or replenishment | +| HD 139139's dip shapes | TESS 2 min and 20 s light curves, Gaia DR3 for the companion | the K2 dip rate and the ingress fraction of each dip against grazing chords and dilution; sector 91 holds no dips (`hd139139_tess`), so the test waits on a sector that does | +| Switch-offs at 150 MHz | LoTSS-DR3 mosaics against TGSS ADR1 positions, GLEAM-X and LoLSS spectra, VLASS and NVSS | compact sources above 100 mJy in 2010-2012 and below 0.5 mJy in 2014-2024 by forced photometry, against the switch-on rate measured the same way; de Ruiter et al. 2021 found none at catalogue level over half the area | +| Hot radiators without molecular bands, Euclid | Euclid Q1 NISP grism spectra and MER photometry of the ultracool-dwarf pool, with proper motions from DES, HSC and VISTA | a 500-2000 K point source with proper motion whose 1.4 um water index is zero at 5 sigma, where every brown dwarf shows the band at 20-50 per cent | +| Beacons recurring across years in Breakthrough Listen | the Breakthrough Listen hit tables and 3 Hz products of the stars observed in two or more years between 2016 and 2020 | a narrow tone at one frequency in the star's own frame on two epochs years apart, absent from the OFF scans at both; the chance of interference absent from the OFF scans twice is bounded by the ON-OFF geometry | +| Deep temporary fades in ZTF | ZTF DR23 light curves of the Gaia Catalogue of Nearby Stars within 100 pc | a star that dropped by a magnitude for weeks with g - r unchanged and returned, an occultation by something large and grey; dust clumps redden, eclipses repeat, and young stars dip on their own | +| The ten nearest systems in every method | the coverage store's rows on Proxima Centauri, Barnard's Star, Wolf 359, Lalande 21185, Sirius, Luyten's Star and the rest of the nearest systems | each method that never touched one of them run on it, past the catalogue cuts in declination, brightness and binarity that skipped them | +| Photospheres with edges in SPHEREx | the SPHEREx spectra of the stars within 25 pc (`infrared volume`) | a step or cutoff between 0.75 and 5 um that no black body with absorption makes; unresolved companions and the water bands of M dwarfs set aside | +| The hydrogen line in every Breakthrough Listen cadence | the 3 Hz products of every Breakthrough Listen target at 1420 MHz | the rest-frame track search of 178 stars carried to every target in the CMB, Solar System and stellar frames | +| Industrial gases on temperate rocky planets | JWST transmission spectra of TRAPPIST-1 e and LHS 1140 b | the K2-18 b band fits repeated on the CF4, SF6 and CFC bands | +| Night sides hotter than day sides | the Spitzer and JWST phase-curve compilations | a nightside temperature above the dayside's, which winds that shift the hot spot never produce | +| Technetium in polluted white dwarfs | SDSS and DESI DR1 white-dwarf spectra with metal lines | Tc I at 4238, 4262 and 4297 A, which decays in a few million years and so marks recent production rather than an asteroid's debris | +| White dwarfs polluted by refined metal | the published abundances of polluted white dwarfs | Ni/Fe and Cr/Fe ratios that no chondrite, core or crust gives and a steel does; core material carries its own Fe-Ni ratio | +| Supernova echoes from 1054, 1006 and Cassiopeia A | TESS 2-minute light curves of the stars on the three ellipsoids | the nova test carried to the brightest events in recorded history, whose reply ellipsoids cross stars within 500 light years | +| Breakthrough Listen's Galactic Centre data in the Centre's frame | the GBT 4-8 GHz Galactic Centre survey | the frame-predicted line tracks at the one meeting point in position as well as frequency | +| The protactinium residue on other spectrographs | ESPRESSO, UVES and HARPS-N spectra of the three HARPS stars below p 0.01 at the Pa II line | the same line score on an independent instrument | +| The grey-dimmed M dwarfs' spectra | LAMOST, SDSS and DESI spectra of the 15 stars 1.5 mag under the main sequence at disc speeds with no metallicity (`grey_dimmed_disc_stars`) | a subdwarf's hydride bands, or their absence | +| Blazar flares synchronised across the sky | the Fermi-LAT light-curve repository | simultaneous flares of unrelated blazars beyond a time-shuffled null; the repository's API did not answer | +| Switched clocks in eclipsing binaries | Kepler eclipse-timing variations | a square wave in eclipse timing, where a third body makes a sinusoid and mass transfer a parabola; the published timings are not tabulated as one catalogue | +| Exocomets without a reservoir | the comet-like asymmetric transits of TESS and Kepler; AllWISE excess and Gaia youth | a tailed body at a star with no belt to come from; belts too faint to see are the limit | +| Voyager's interstellar lines | Voyager 1 plasma-wave spectra beyond the heliopause (PDS) | a line that holds its frequency while the plasma density and its hum change; the spacecraft's own interference set aside | +| Fast X-ray transients at nearby stars | Einstein Probe transients since 2024 | against the Gaia Catalogue of Nearby Stars within 100 pc, with the shifted null; flares by the star's type | +| White-dwarf transits of constant depth | ZTF light curves of transiting white dwarfs | a shallow, long transit that repeats exactly at a white dwarf, which debris never does and a planet does at a planet's depth | +| Nulling with low entropy | public single-pulse records of nulling pulsars | a null sequence structured beyond a random process, the known quasi-periodic nullers aside | +| Interstellar absorbers that do not move with the gas | ultraviolet and optical absorption lines toward nearby stars | a velocity outside the Local Interstellar Cloud's flow, held by something that is not gas; unmapped small clouds set aside | +| Under our own radar fences | GLEAM-X at 212-220 MHz and the Breakthrough Listen files on the stars within 32 light years in the declinations the Space Fence swept at 217 MHz and BMEWS lit at 425 MHz | a reply at the carrier's own frequency from a star that has had it for decades | +| Trojan swarms of hot Jupiters | TESS light curves of the hot Jupiters | the light curve folded 60 deg ahead of and behind the planet's phase, where no natural trojan of a hot Jupiter is known | +| The positronium and fine-structure lines | the ALMA archive's cubes at nearby stars | the positronium hyperfine line at 203.389 GHz and hydrogen's line times the fine-structure constant at 194.65 GHz, with the narrow-line code | +| Eclipses as public clocks | TESS 2-minute light curves of the nearest eclipsing binaries | flashes at phase zero against every other phase | +| The hidden point | STEREO HI-1 images of Sun-Earth L3 over six years | the one place in the Solar System Earth never sees; a kilometre-sized body is the limit | +| Nucleosynthesis lines from a point | INTEGRAL/SPI public data | a point source of aluminium-26 at 1.809 MeV or of 511 keV at a star within 20 pc, against the Galaxy's diffuse glow in both | +| Industrial molecules in the clouds | the unidentified lines of the Sgr B2 and TMC-1 line surveys | against the rotational spectra of CFC-11 and CFC-12, which need laboratory line lists first | +| The shape of the noise | TESS residuals of the nearest stars against matched distant ones | the kurtosis of the residuals, a population test for pulses below any threshold | +| The one list | the coverage store | every star's results across every test combined into one likelihood ratio against the natural model, a ranked follow-up list of the ten strangest | +| Asteroid non-gravitational accelerations | Gaia DR4 | December 2026 | +| DESI second epoch | DESI DR2 | not yet public | +| Umbra flashes and GEO lurkers | Global Meteor Network, GEO lists | GEO lists not public | +| Pulsar-survey rejects, SETI@home candidates, DSN recordings, maser monitoring, Auger triggers, CTBTO detections | | not public | + +## Findings + +Results about natural objects, instruments and catalogues that the searches produced, each with the run that found it. + +| Finding | Run | Status | +|---|---|---| +| (883607) 2016 TA56, a candidate dark comet on a Jupiter-family orbit: a transverse non-gravitational acceleration A2 of -3.45e-12 +- 0.37e-12 au/d^2 (9 sigma with the 2007 night as one position) on a body of 2.4 km and albedo 0.017, 15-39 times all absorbed sunlight at 1000 kg/m^3; the two orbits part by 4-7 arcsec in 2030 August-September | `darkcomet_2016_ta56` | papers/dark_comet | +| 2016 YB13, a transient retrograde co-orbital of Jupiter not in the literature: inclination 140 deg, eccentricity 0.41, semi-major axis 5.46 au on a 642-day arc with a formal eccentricity error of 2e-6; the nominal orbit and fifty clones of its covariance integrated with the four giant planets (hybrid integrator, step 0.05 yr) hold Jupiter's semi-major axis without an approach inside 0.5 au for 7 kyr each way from the nominal orbit, for a median of 3 kyr forward (10th to 90th percentile 1-27 kyr) and 13 kyr backward (6-31 kyr) over the clones, with 2 of 50 still held at -100 kyr and none at +100 kyr, while the control (514107) Ka'epaoka'awela holds for the whole 100 kyr each way and never comes within 0.7 au; a Jupiter-crosser of that eccentricity outside the resonance meets the planet within a few kyr; the resonant angle was not established under the conventions tried | `sbdb_retrograde_coorbitals` | a transient member of the resonance on a 10 kyr timescale, which the published cases of such capture explain; a dynamics note would need the angle and the capture history | +| PSR J1420-6048's glitch schedule has lapsed: the eight glitches of the Jodrell Bank table from MJD 51600 to 58555 come at intervals of 994 +- 196 days, a scatter random intervals give once in four thousand draws, and the published intervals of two to three years agree; the schedule put the ninth glitch at MJD 59549 +- 196, and the table, complete to MJD 60980, lists none, a gap of 2425 days, nearly twice the longest before it | `jbo_glitch_schedules` | the vet stands as a young pulsar of Vela's kind; the next glitch, when it comes, dates the lapse | +| Ma et al. (2023)'s eight Breakthrough Listen signals of interest: MLc2-MLc8 lie on their own lines in their cadences' OFF scans and MLc3-MLc8 in other stars' pointings; MLc8 is one terrestrial carrier rising 1.72 kHz over four hours through four other stars' cadences; the published table's drift signs run opposite to df/dt and its MJD column holds GUPPI scan labels | `bl_soi` | papers/ml_signals | +| HD 31435's 5.48 per cent polarisation (Moneti et al. 1984) belongs to another star: the star's photometry, astrometry, spectrum and infrared allow no polariser, and the field behind the cloud gives the measured angle | `intrinsic_polarisation` | papers/hd31435 | +| KIC 2557430 (KOI-6277): the published surface temperatures run too hot; Gaia resolves WDS J19074+3749AB into the eclipsing pair at 6130 K and a co-moving K star whose luminosities sum to the light observed | `debs_missing_flux` | papers/kic2557430 | +| Wind/WAVES RAD1 measured only 32 to 38 of its 256 channels in nearly every minute of every year, and the archive interpolates the rest | `wind_rad1_2020` | papers/subcutoff_radio | +| 154 emission-line galaxies at z 0.016-1.069 identified in SDSS sky fibres by two or more lines, 122 of them with a Legacy Surveys source of median r 23.1; the line at 4732.6 A on 54 plate-nights in the SDSS-RM field is Lyman alpha at z 2.893 | `sdss_sky_fibres_shared2` | papers/sky_fibres | +| Five DESI DR1 white dwarfs with unblended infrared excess 1.6-3.3 mag above the photosphere in W1 and black-body temperatures of 900-1500 K, the excess of unresolved brown-dwarf companions | `desi_wd_dust_pollution` | candidates | +| Gaia DR3 eclipsing-binary depths and periods that fail: TYC 4267-1042-1, TYC 7438-551-1 and BD+09 1746 are flat in TESS to 0.1-0.3 mag against model depths of 0.77-1.73 mag, two more stars flat in ZTF, and 15 Eri's 4.4 mag model depth is saturation | `lightweight_eclipsers` | catalogue corrections | +| Gaia DR3 short-timescale box transits on ten main-sequence stars are absent from ZTF g and r at 0.45-2.2 times the Gaia period: Gaia's periods or depths | `roche_transits` | catalogue corrections | +| NVSS gives polarised flux at or above the total for 23 sources in Fornax A's lobes and fields of the Galactic plane, where the field's diffuse polarisation enters | `nvss_polarisation_ceiling` | catalogue artefact | +| GLEAM-X J082817.6-221400's 35 per cent spectral step: a 1.18 Jy source 69 arcsec away inside the low-frequency beam, the sub-band fits merging and splitting the pair | `gleamx_edges` | catalogue artefact | +| Kepler catalogue durations short of the light curves: KOI-4371.01 (8.6 h against 11.1), KOI-6343.01, KOI-5227.01, KOI-2086.04, KOI-7954.01 and KOI-719.03; KOI-3436.01's transit times scatter by 735 min and its fold at the catalogue ephemeris brightens | `exobelts_kepler_long` | catalogue corrections | +| GJ 725 A: an isolated 100 ms near-ultraviolet brightening, 7 photons against 0.2 expected, fixed to the star in rebuilt detector coordinates, in the star's only GALEX photon list | `galex_nuv_pulses` | open | +| HD 101805 (F8V, 34 pc, 3.9 Gyr): 223 ppm of linear polarisation at 9 deg, rising from 172 ppm in R to 314 in B, where neighbours within 35 pc read 12-45 ppm | `polarised_reflectors` | open; Gemini/GHOST spectra from 2027 July | +| The stars within 100 pc at rest with the Sun: two members of Crius 131 (Moranta et al. 2022), an association moving at 1.8 km/s relative to the Sun, the 0.3 Gyr star BD+68 1331, PG 0943+489 (RUWE 1.53) and a K dwarf at 0.98 km/s; counted as systems, 4.3 per cent of balls of the same density elsewhere in velocity space hold as many | `gaia_rest_stars` | explained | +| Gaia DR2 holds no source for Lalande 21185 and three other stars within 100 pc at G below 17 moving faster than 585 mas/yr, nor for 90 stars 2-7 arcsec from a star 1-11 mag brighter, all of which DR3 catalogues; DR3 in turn holds iota Leo B (G 6.8, 2.1 arcsec from iota Leo) and chi Eri B (G 9.7, 2.5 arcsec from chi Eri) as no source of their own, both catalogued by DR2 | `gaia_dr3_appeared`, `gaia_dr2_vanished` | catalogue property | +| GALAH DR4 lithium of cool dwarfs: 18 of the 135 dwarfs below 5300 K listed with a clean A(Li) above 2.0 and isochrone ages above 6 Gyr show no Li I 6708 line in their own spectra where the catalogue gives 113-600 mA, a line the refit recovers in 134 of 135 injections at the same S/N; the highest, Gaia DR3 3910691559800909568, listed at A(Li) 3.69 (401 mA), measures 17 +- 28 mA; the 95 real lines belong to young stars and binaries whose isochrone ages are wrong | `galah_lithium_old_dwarfs` | catalogue corrections | +| HERMES camera I records round spots of 1.5-1.7 million electrons, the charge 5.3-6.2 MeV releases in silicon (the energies of alpha particles), about 4 px across like light through the spectrograph; in an observation of one exposure GALAH DR4 passes one into a spectrum as an emission line 21 times the continuum (Gaia DR3 609133088216624000, 7790.24 A rest, 2017 January 2, fibre 47), the spot 2.2 px from the fibre's trace, where the arc lines fall within 0.6 px | `laser_galah` | instrument artefact | +| CNEOS fireballs since 2018 faster than the Sun lets anything bound move: 2026-04-01 02:13:14 UTC over the South Atlantic (41.9 S, 54.7 W, 90.5 km), 69.2 km/s at entry and 51.8 km/s heliocentric against the 42.1 km/s escape speed; 2022-07-28 01:36:07 UTC (CNEOS-22 of Cloete and Loeb 2026), 47.4 against 41.8 km/s; 2021-05-06 05:54:26 UTC, 43.7 against 41.9 km/s; none bound in 20,000 draws within the post-2018 errors Peña-Asensio et al. (2025) measured against ground-based networks; the 2026 event is not in the published candidate lists, and CNEOS-25 (2025-02-12), listed as hyperbolic by Cloete and Loeb, is bound at 37.4 km/s from the database's present entry; the GOES lightning mappers saw both that fell in their view, 2026-04-01 from GOES-19 0.7 s and 144 km from the CNEOS fix for 1.1 s, and 2022-07-28 from GOES-16 and GOES-17, whose triangulated trail runs at 18.4 km/s from 42 to 33 km, 0.61 of the CNEOS speed, where the mappers' trail speeds on 16 slower fireballs run at 0.66-1.65 of CNEOS's; no Global Meteor Network camera recorded any of the 360 CNEOS fireballs | `cneos_hyperbolic_fireballs`, `cneos_glm_bolides`, `cneos_gmn_trajectories` | the sightings fix both events' times and places; the mappers' trail speeds scatter too widely to test a 21 per cent excess and no camera network saw them, so an infrasound or seismometer record would settle a speed | +| 22 compact radio sources of 65-890 mJy at 4.8 GHz, more than 30 deg from the Galactic plane, with nothing in AllWISE, CatWISE2020, unWISE, Pan-STARRS1 or the Legacy Surveys DR10 within 2-3 arcsec of positions VLASS confirms, so above 5,000 in radio-to-infrared flux ratio, beyond the infrared-faint radio sources; 17 are VLBI-compact, and their spectra are peaked or steep more often and flat less often than hosted sources' (8 of 22 flat against 124 of 200), the signature of young compact radio galaxies rather than beamed quasars; none shows in VHS, VIKING or UKIDSS, the 15 those cover fainter than K 18.1, beyond redshift 1.5 on the K-z relation of radio galaxies | `crates_hostless_flat_spectrum`, `crates_hostless_seds`, `crates_hostless_nir` | a sample of candidate young radio galaxies beyond redshift 1.5; K-band imaging deeper than 20 or a radio redshift from HI or OH absorption would place them | +| Nearby M dwarfs too faint for their colour: 18 mid-M dwarfs at 30-53 pc, G 13-16, lie 0.36-1.0 mag below the main sequence at fixed G-RP, with parallaxes measured to 0.1 per cent, concentrated at high Galactic latitude (median 64 deg against 25) and moving faster than their peers (median 45 km/s, two at 119 and 132), with no companion, activity or ultraviolet sign; the three with spectra show the CaH and TiO bands of ordinary metallicity (zeta 1.01-1.12), while the one further 2.3 mag below is a subdwarf (zeta 0.56); Gaia's GSP-Phot fits them worst of all nearby M dwarfs | `gaia_xp_worst_fits_nearby`, `gaia_xp_misfit_traits`, `gaia_xp_misfit_spectra`, `gaia_xp_misfit_subdwarf_indices` | open: mildly metal-poor old disc stars above the subdwarf threshold would sit this low, which a metallicity from new spectra of the other 15 would test; at ordinary metallicity, 30-60 per cent too little light for their colour has no explanation in hand | +| The densest pile of clean unassociated Fermi-LAT sources in the inner plane, 7 within 2 deg of l 312.1 deg (the Galactic bar's L5 line of sight and the Crux-Centaurus tangent) against a mean of 1.3, sits around the Kookaburra and Rabbit nebulae: a random forest trained on 3,946 associated sources classes none of its 5 measurable members as a pulsar, against a quarter of the plane's other unassociated sources; four are steady uncurved power laws and the fifth is the extended FGES J1409.1-6121; only 1 of the 7 lies inside a H.E.S.S. source, HESS J1418-609, the plane's own rate, and the rest sit outside every TeV glow, most 0.5-1.6 deg above the plane; they sit on more dust than their latitudes' share (median rank 0.69, p 0.038) | `fermi_bar_lagrange_points`, `fermi_unassociated_pile_classes`, `fermi_unassociated_in_tev_glows`, `fermi_pile_dust` | not pulsars and not inside the TeV-bright nebulae; unexplained, and a dedicated LAT fit of the region with the gas maps would say whether they are emission the diffuse model misses | + +## Confirmation + +| Candidate | Next step | +|---|---| +| Infrared excess | JWST MIRI spectrum, then interferometry | +| Radio point source | VLBI, Breakthrough Listen at Hz resolution, a second site | +| Line below the ionospheric cutoff | STEREO/WAVES direction finding at the line's epochs | +| Optical trend or transient | present-day photometry; SPHEREx for where the light went | +| Chemistry | high-resolution spectroscopy of isotopes | +| Polarised star | one modern polarimetric measurement at 0.1 per cent, then the angle against the field's | +| Solar-system object | radar, then a flyby | + +`python -I seti.py store card ` gives one target's results across every method. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..30c7a032f1ffdc5dbcb1d8ade8d267b874eb6e3f --- /dev/null +++ b/LICENSE @@ -0,0 +1,25 @@ +Source code in this repository (files ending in .py or .jl) is licensed under the MIT License below. Every other +file, the papers, the documentation and the coverage store coverage.db included, is licensed under the Creative +Commons Attribution 4.0 International License (CC BY 4.0): https://creativecommons.org/licenses/by/4.0/legalcode + +MIT License + +Copyright (c) 2026 Charles C. Norton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6854ba8c4011ba9697e5ac5c189a61669a949e28 --- /dev/null +++ b/README.md @@ -0,0 +1,704 @@ +--- +license: other +license_name: mit-and-cc-by-4.0 +license_link: LICENSE +tags: +- seti +- technosignatures +- biosignatures +- astronomy +--- + +# seti-tools + +Technosignature and biosignature searches on public astronomical archives: the code, the papers, and a database of what +every run searched and found. + +| Path | Contents | +|------|----------| +| `seti.py` | the command line: `python -I seti.py `, `store ` and `selftest` | +| `setitools/` | `core.py` (configuration, network, archive clients, light curves, the coverage store and its vet codes), `science.py` (rest frames, spectral and radio searches, trends, photometry), `catalogues.py` (the readers of the catalogues several approaches share, the epochs of their positions and the moved-position null) and the thirteen family modules, each approach's docstring giving its data, detection rule and modes | +| `coverage.db` | SQLite: one row per run, one per target recorded; its columns are defined in `setitools/core.py` | +| `LEDGER.md` | every approach with its data and its result after vetting, the approaches queued, and the findings about natural objects, instruments and catalogues with the run behind each | +| `RESULTS.md` | every approach of the ledger with its runs, each run's sample in its own unit, and the ledger's result | +| `papers/` | the papers, their sources and the data behind their numbers | + +Python 3.11+ with `requirements.txt` (torch for the GPU paths only). `python -I seti.py selftest` checks the package, every +docstring of it one line, and runs the sky-fibre, Kepler glint and meteor-stream detectors end to end on synthetic data with +injected signals, hard negatives and pure noise; `python -I seti.py ` lists a family's approaches; `python -I seti.py store card ` +lists every run that covered a target, `store table` regenerates `RESULTS.md` from the ledger and the store, and +`store verify` checks the two against each other. + +## Configuration + +Paths and resource caps come from the environment variables `SETI_DATA`, `SETI_WORK`, `SETI_CACHE`, `SETI_RESULTS` and +`SETI_COVERAGE`, else from a config file outside the repository (the file `SETITOOLS_CONFIG` names, else +`setitools/config.json` under `%APPDATA%` or `~/.config`), else from defaults inside the repository. The file's keys: + +```json +{ + "data": "/data/seti", + "work": "/data/seti/work", + "cache": "/data/seti_cache", + "results": "/data/seti/results", + "coverage": "coverage.db", + "max_procs": 8, + "max_connections": 32, + "contact": "mailto:archive-contact@example.org" +} +``` + +`data` holds bulk downloads, `work` scratch files, `cache` Breakthrough Listen indexes and chunks, `results` each +search's output files and `coverage` the store; `max_procs` and `max_connections` cap everything one machine runs at +once, and `contact` is added to the user agent every request carries, so that an archive's operators can reach whoever +runs the searches. + +A new approach starts with a literature search on its data set and signature. One that repeats published work on the +same data is dropped; otherwise the approach, data, prior work and decision go into `LEDGER.md` before any +download, and the targets are a stated slice (a distance limit, a class of star, a geometric condition), never a whole +archive. + +Downloads go to `config.DATA`, Breakthrough Listen chunks to `config.CACHE`, and TESS and Kepler light curves come from +STScI's AWS mirror (`setitools.core`). One machine's worker processes and open connections stay within +`config.MAX_PROCS` and `config.MAX_CONNECTIONS`; GPU work runs through torch with CUDA; a streaming search takes a share +of the target list (`--list`) and the shares merge in its `report` mode. + +Reusable code is the `setitools` package: archive clients, HTTP and TAP access, frames, the spectral, radio and +time-series tests, photometry, light curves, the shared catalogue readers and the coverage store. Approaches live in the +thirteen family modules of `setitools/`, run through the one entry point `python -I seti.py ` +(`seti.py` alone lists the families, a family alone its approaches, `--help` an approach's method and modes); each +approach's docstring (`_DOC`) is its method, its modes run from `fetch` to `record`, and a new check or +injection test becomes another mode. An approach whose modes are its analysis and `record` declares every threshold as a +keyword of its main function, and `core.run_cli` offers each as an option (`--name value`) with the keyword's default, +so the same test runs on another catalogue cut or tolerance without a change to the code. Outputs go under +`config.RESULTS`, and each approach has a recipe under Recipes below. + +A finished run calls `coverage.record_search` once (archive, release, selection as ADQL or `coverage.ids_selection`, +the script, which is hashed, thresholds, null, sensitivity, the sample's size and +unit, the result files it reads, and the row of the ledger's Searched table it belongs to) and +`coverage.record_targets` with one row per target: a prefixed identifier (`gaia_dr3:`, `hip:`, `kic:`, `koi:`, `tic:`, +`apogee:`, `mpc:`, a Breakthrough Listen file and channel), the statistic, a p-value or limit, and the explanation that +removed a detection, which is stored as codes of `setitools/core.py` (listed under Vetting below) with its words in the +note; an explanation with no code is refused. The store holds no archive data; `coverage.covered(target, approach)` +answers before a download, `python -I seti.py store card ` lists one target's results, `table` writes +`RESULTS.md`, and `verify` checks the store against the ledger and the vet codes. + +## Methods + +| Method | Implementation | +|---|---| +| Narrow lines | each spectrum divided by a model that cannot hold an unresolved line (median over visits, non-negative fit of similar stars, or envelope), then a matched filter against a local error (`setitools.science`); a peak must be unresolved and smooth | +| Rest frames | `frames.line_tracks` maps a line at rest in the CMB, Solar System, stellar or planetary frame to the telescope; a feature fixed in the star's frame is the star's, one fixed in the observatory's is Earth's or the instrument's | +| Radio tracks | `radio.track_search` sums power along the predicted, zero-drift and shifted (null) tracks; ON scans stacked, OFF scans summed along the ON track | +| Trends | `timeseries.differential_trend`: Theil-Sen slope against comparison stars on the same plates, per series | +| Band templates | `biosignatures.band_template`: each gas a set of Gaussian bands at its strongest features, averaged over each bin, fitted with an offset per spectrum; a gas counts by how much the fit worsens without it, so overlapping bands cannot share one feature | +| Nulls | fixed before looking (absorption-like peaks, shifted tracks, random wavelengths, control apertures, comparison stars); a detection must beat the strongest null of its kind, and a recurring group counts as its second-strongest member | + +## Archives + +Clients are in `setitools/core.py`. TAP services are named in `setitools/core.py` and queried with +`net.tap(service, adql)`, or `net.tap_async` for long scans; `net.tap` sends MAXREC, because the Gaia archive and +SIMBAD stop synchronous results at 50000 rows without saying so (Data Lab excepted, where MAXREC overrides LIMIT), and +raises on maintenance pages. CDS's file tree serves curl's user agent and challenges a browser's. + +| Archive | Client | Notes | +|---|---|---| +| Gaia DR3 | `gaia`, `gaia_rvs_spectra` | ADQL on `gaiadr3.*`; RVS spectra from DataLink, 50 ids a request; epoch photometry from DataLink or VizieR `I/355/epphot`. A sync selection on `gaia_source` by anything but `source_id` answers 408 at the archive's time cap, so the selection is made on a small table (`vari_summary`, `vari_eclipsing_binary`, the nearby-stars catalogue `external.gaiaedr3_gcns_main_1`) and `gaia_source` is read by id in batches of 2000 (`net.tap_by_ids`). DataLink's epoch photometry answers 500 with `VALID_DATA=true` for a source whose every transit carries a flag; the unfiltered table carries the flags. DataLink's `XP_SAMPLED` answers 500 for some bright sources; VizieR's `I/355/xpsample` holds the same 343-sample spectra, queried by `Source` | +| Pan-STARRS images | `https://ps1images.stsci.edu/cgi-bin/ps1filenames.py?ra=&dec=&filters=` lists the stack and warp files at a position, and `fitscut.cgi?ra=&dec=&size=&format=fits&red=` cuts them | stacks are asinh-scaled by `BSOFTEN` and `BOFFSET` in the header; stars brighter than about 13 saturate, so a radial profile is read beyond 2 arcsec and compared with a star of like brightness in the same frame | +| Planck | IRSA, `https://irsa.ipac.caltech.edu/data/Planck/release_3/all-sky-maps/maps/` | the HFI frequency maps are 2 GB HEALPix binary tables (NSIDE 2048, NESTED, one 40-byte row per pixel at 353 GHz); a position's pixels come from `astropy_healpix` and HTTP range requests on the FITS file, a few kilobytes per cone, without downloading the map. At 353 GHz 1 K_CMB is 287.45 MJy/sr; the polarisation angle is 0.5 atan2(-U, Q) in the IAU sense from HEALPix's sign on U, and starlight behind the dust polarises 90 deg from it with P_353 / p_V of 5.4 MJy/sr (Planck 2015 XXI) | +| SIMBAD | `simbad` | lower-case TAP parameters, JSON; `nbref` measures how studied a star is | +| VizieR, NASA Exoplanet Archive | `vizier`, `exoplanets` | whole catalogues through astroquery; ADQL on `toi` and `pscomppars` | +| NIST ASD | `nist_lines` | needs the form's full parameter list; cached per ion and range | +| JPL | radar, SBDB and Horizons APIs | Horizons `CENTER='-1@399'` for Arecibo, `'-14@399'` for Goldstone | +| Zenodo | `remotezip.open_zip` | zip members read by byte range | +| Gaia alerts, SsODNet, HI4PI | files and JSON APIs | alerts as one CSV from `gsaweb.ast.cam.ac.uk`; HI4PI as 192 HEALPix tables (`J/A+A/594/A116`) | +| ESO | `eso_spectra`, `eso_download` | Phase 3 1D spectra from `ivoa.ObsCore`, GET only; `SPECSYS` gives the frame (UVES is observatory-frame), `TUCDn` air or vacuum (ESPRESSO's `WAVE` is vacuum); HARPS zero-filled across 530-534 nm | +| GALAH DR4 | `galah`, `galah_spectrum` | Data Central's SODA links serve cameras B, V, R, I normalised on barycentric wavelengths with the star's own velocity left in, so `rv_comp_1` takes a spectrum to rest; the header `RV` is the barycentric correction | +| AAT archive | `aat_night`, `aat_fetch` | Data Central's archive API: `POST /api/query/` with `obs_date` answers a night's log a hundred rows at a time, each next page asked by the query's `uuid` with the last row's `aat_id` as `next`; `POST /api/download/` with `aat_ids` returns the raw FITS of public rows as a gzipped tar. A GALAH `sobject_id` carries the night, the first run of its observation and the pivot; HERMES camera IR (E2V8-IR) frames are 4112 x 4146 with the overscan in the last 50 columns, 2.75 e-/ADU, the 400 fibres in slitlets of ten about 9 px apart in the fibre table's order | +| APOGEE DR17 | `sdss_sql`, `apogee_apstar_url` | apStar visits on the stellar-frame vacuum grid; `VHELIOn - BCn` is a visit's observatory velocity | +| LAMOST DR10 | `lamost_cone`, TAP | MRS rows in `public.med_catalogue`, one FITS per observation, about 17 kB/s a connection | +| DESI DR1 | `datalab`, `desi_spectra` | `desi_dr1.mws` with Gaia ids, NaN sorting high and booleans as `'t'`; SPARCL coadds, `specprimary` marking one record | +| IUE, HST | MAST | IUE MXHI with negative QUALITY for defects; HST keeps EXPTYPE EXTERNAL/SCI; COS corrtag wavelengths are heliocentric | +| IRSA | `irsa`, `spherex_images`, `spherex_pixels` | AllWISE, CatWISE2020, NEOWISE, SPHEREx; SPHEREx pixels read by byte ranges from the full images | +| DASCH | `dasch_lightcurves` | fields wider than about 30 arcmin time out; about 0.1 mag a plate | +| Kepler, TESS | `setitools.core` | STScI's AWS mirror; full-frame light curves from the TESS-SPOC and QLP products | +| Breakthrough Listen | `bl_query_files`, `radio.coarse_channel` | `*.gpuspec.0000.h5`, 2.79 Hz channels, topocentric; about 30-40 MB/s in total; indexes and chunks cached | +| ALMA, CASDA, VLASS, SPT-3G | `alma`, `casda`, files | early ALMA cycles hold raw visibilities; RACS-low2 Stokes V on CASDA; VLASS catalogues in CIRADA's vault | +| TEPCat, the Encyclopaedia of Exoplanetary Systems, Zenodo, MAST high-level products | `biosignatures.tepcat`, `eu_planets`, `zenodo_search`, `rockyworlds_fetch` | TEPCat's ascii table of the transiting planets (Southworth 2011), zero-padded names (WASP-039, K2-018b) read as the catalogues write them and the file kept a week; the Encyclopaedia's TAP service (`exoplanet.epn_core`) for distances; Zenodo's records API at 25 results a page without a token, answering 429 when asked too often, its files taking HTTP byte ranges; the Rocky Worlds DDT's eclipse catalogues from its page on MAST | +| Exo.MAST, VizieR, HITRAN, Exo-Transmit, NIST WebBook | `biosignatures.exomast_fetch`, `vizier_fetch`, `vizier_meta`, `hitran_xs`, `exo_transmit_xs`, `nist_dms_xs`, `earth_transit` | Exo.MAST's `spectra//filelist` and `file/`, answering 400 to a name it does not know; VizieR's TAP schema holds table names inside single quotes, which ADQL reaches with LIKE, and its ASU service's metadata gives each catalogue's title and each column's description and UCD; HITRAN's line API cuts a long answer short, so each range is read page by page until a page comes back empty; Exo-Transmit's opacity tables on GitHub (a wavelength in m, then one row per pressure of the cross-section at each temperature); the NIST WebBook's JCAMP-DX spectra; Earth's transit spectrum from Zenodo record 8280710 (wavelength and effective height) | + +## Vetting + +A candidate must beat its search's null and then survive the explanations below; a survivor gets a literature and +catalogue check of the star and its field. Each explanation is a filter in code. The coverage store's vet column holds +the codes listed at the end (`setitools/core.py`), one or more for each row a filter removed, and the words of the +run's record in the row's note; a row with no vet has no explanation, and `python -I seti.py store verify` fails +on any vet that is not a code. + +| Data | Explanations | +|---|---| +| Spectra | sky and telluric lines, and residuals where other epochs' tellurics lie; detector gaps, order joins, arm ends, SPHEREx detector edges; cosmic rays, sharper than the instrumental profile; light in the sky fibre (SOPHIE); fibre persistence (GALAH); corrupt coadd exposures; neighbouring-fibre defects (LAMOST); peaks one or two pixels wide where the instrumental profile spans six (LAMOST); vacuum wavelengths read as air (ESPRESSO); calibration frames filed as science (HST); aperture-fixed features (IUE); ultraviolet spectra crowded with natural lines (supergiants, giants, T Tauri stars, LBVs, Ap stars); twin-model mismatch in broad lines and rare spectra; ionized-metal blends that vary between stars; lines three or more stars share; profiles wider than the instrument's; epochs or stars at the wrong velocity; line depths that change between epochs (slit spectrographs); one exposure reduced twice (ESO); steady features in stars whose epochs share one night, where the star's frame is the instrument's | +| Attribution | catalogue positions of an earlier epoch; pointings off the star (FUSE); one file fetched for both members of a wide pair | +| Radio | zero-drift carriers; interference near 1420 MHz; carriers and their sidebands recurring on one drift in other targets' pointings of the session (sidelobe transmitters); coarse-channel roll-off; known transmitters (`setitools.science.OCCUPIED_MHZ`); satellite navigation and the Galaxy's sidereal swing (e-Callisto); HF leakage and spacecraft lines (Wind, STEREO); bursts in busy bands or at scan edges; spectral-window ends and channel-wide offsets (ALMA) | +| Photon timing | MAMA double counts, COS lamp flashes, hot spots, gain sag; Chandra dither and frame sidebands; flare red noise | +| Photometry | plate steps and proper-motion blends (DASCH); single-transit outliers and close pairs (Gaia); spotted rotators; folds of one or two events; duplicate ALCDEF sessions; binaries and pulsators at KOI periods; timing variations, short catalogue durations and detrending gaps (exobelts) | +| Catalogues | wrong 2MASS matches; chance radio alignments; background galaxies; spurious parallaxes; embedded young stars; silicate bands missing from asteroid templates; X-ray sources SIMBAD files at their X-ray position, 5-15 arcsec from a Gaia counterpart whose own entry carries no type | + +### Vet codes + +| Code | Explanation | +|---|---| +| `fibre-fixed` | a line one fibre holds at the same wavelength on other plates or stars: the detector's | +| `neighbouring-fibres` | a feature fibres beside it on the same spectrograph show in other stars | +| `shared-feature` | a feature other stars show at the same rest or observed wavelength | +| `detector-pixel` | a peak narrower than the instrumental profile: detector pixels | +| `off-trace` | charge in the raw frame away from the fibre's trace, where light through the spectrograph does not fall | +| `bad-pixel` | masked, variance-inflated or dead pixels at the peak | +| `detector-edge` | a feature at the end of an arm or order, or at a detector gap | +| `instrument-frame` | a feature whose nights agree in the instrument's frame and not in the star's | +| `not-one-feature` | peaks of the exposures that lie apart by more than half a resolution element | +| `cosmic-ray` | a feature in one exposure or cadence with the others flat | +| `one-camera` | a line that one spectrograph camera shows and the other, covering the same wavelength, lacks | +| `defective-spectrum` | a spectrum holding clean lines of both signs, which no source of light makes | +| `hot-pixel` | a detector site that hosts the strongest events of several targets | +| `detector-wide` | an event that other sources across the detector share | +| `stellar-blend` | absorption that other stars of the spectrograph share at the line, a blend whose strength varies | +| `broad-feature` | a feature wider than an unresolved line | +| `line-core` | a peak inside a Balmer or He I line where the comparison template dips | +| `background-galaxy` | the lines or light of a background galaxy or active nucleus | +| `off-source` | the same class of signal in the OFF scans | +| `sidelobe-transmitter` | a carrier that recurs on one drift in other targets' pointings of the session | +| `broadcast-band` | a frequency inside a broadcast band | +| `sky-sidereal` | the Galaxy's sidereal swing, which channels across the band share | +| `gnss` | satellite navigation signals, sidereal through the constellation's orbits | +| `auroral-kilometric-radiation` | auroral kilometric radiation | +| `plasma-line` | the solar wind's plasma line | +| `terrestrial-hf` | terrestrial HF leakage | +| `spacecraft-local` | the spacecraft's own emission | +| `spacecraft-anomaly` | a spacecraft anomaly | +| `instrument-mode` | a receiver mode that measures some channels and interpolates the rest | +| `spacecraft-timing` | a period of the spacecraft's operations | +| `natural-source` | a source its discovery papers give a natural nature | +| `single-epoch` | a dip or excess resting on one epoch, transit or pass, with its neighbours undimmed | +| `single-band` | a dip in one band that the other bands, taken at the same transits, do not share | +| `field-event` | an event other stars of the field show at the same time | +| `binary` | a binary: multiplicity flags, astrometric excess, velocity scatter or blended double lines | +| `eclipsing-binary` | an eclipsing or heartbeat binary | +| `variable-star` | a catalogued or measured variable star or pulsator | +| `rotation` | rotational modulation, a spotted rotator or a period at the rotation period or its multiple | +| `chromatic` | modulation that changes colour, as spots do | +| `burst` | an isolated burst feeding a phase peak, not a periodic train | +| `flare` | a flare on a flare star | +| `not-periodic` | a phase scatter above a clock's | +| `timing-variation` | a published transit-timing variation | +| `data-edge` | a step at the first or last maximum of a data source | +| `detrending` | a shoulder made by the detrending gap and the transit's timing and duration | +| `fit-boundary` | a fit pinned at the edge of its model | +| `fit-degeneracy` | a value inside the pile-up the fits themselves produce | +| `unstable-profile` | a profile unstable between sectors, of low S/N, with a secondary eclipse or too few events | +| `unconstrained-geometry` | a geometry the catalogue leaves unconstrained | +| `single-record` | a value resting on one catalogue record | +| `event-boundary` | a start, peak or end set by the catalogue's own detection boundary, so the shape is the catalogue's and not the event's | +| `our-launch` | a body of our own launching, identified in the database by its orbit and its response to sunlight | +| `atmospheric-line` | an absorption line of a known atmospheric species at its wavelength | +| `planetary-encounter` | an orbit changed by a close approach to a planet on record | +| `comet-family` | a member of a published comet family of one parent body | +| `co-orbital` | a body on a horseshoe or wide-librating co-orbital path about a planet, which the 1:1 resonance holds for a time | +| `vela-like` | a young pulsar whose large glitches recur at the crust's critical lag, as Vela's do | +| `perpendicular-peak` | an orbit in the pile-up of measured obliquities near 90 deg (Albrecht et al. 2021), a natural population feature with tidal and secular mechanisms proposed | +| `misidentified` | a spectrum of a different star from the catalogued one, by fibre placement or crossmatch, shown by temperatures that disagree | +| `bright-neighbour` | within the artefact zone of a source bright enough to spoil the image around it | +| `spider-orbit` | a black-widow or redback pulsar whose orbital period wanders as its companion's shape changes (gravitational quadrupole coupling), swamping relativity's decay | +| `arm-tangent` | a line of sight along a spiral arm's tangent, where a whole arm's young pulsars, nebulae and star-forming regions pile up | +| `cohesive` | a spin that needs less tensile strength than solid rock holds, about 100 kPa, which a coherent fragment or a cohesive rubble pile supplies | +| `sensor-error` | a speed or direction within the published errors of the sensor that measured it | +| `radio-hotspot` | a compact radio component away from its source's low-resolution centroid, a knot or hotspot of a larger radio galaxy whose host lies elsewhere | +| `out-of-reach` | a known body now too faint or too far for the surveys that would see it | +| `abiotic-chemistry` | a gas mixture that published abiotic models of the planet make, hydrogen-rich mini-Neptune and magma-ocean chemistry keeping CH4 and CO2 without CO | +| `stellar-contamination` | a spectral feature that spots and faculae on a cool host star imprint on a transit spectrum | +| `methane-overlap` | a dimethyl sulfide reading beside methane, whose 3.3 um band the DMS template overlaps, as Earth's own transit spectrum reads DMS it does not hold | +| `deep-counterpart` | a counterpart in deeper imaging than the surveys that missed it | +| `near-resonance` | a period ratio within 1 per cent of a small-integer ratio, where the resonant phases rather than random ones decide stability | +| `estimated-masses` | planet masses estimated from radii rather than measured | +| `loose-eccentricities` | eccentricities measured no better than 0.1 | +| `twin-flags` | stable configurations observed again with the same errors flagged as well | +| `catalogue-crossing` | adjacent orbits that already cross at the catalogue's own values | +| `unmeasured-eccentricities` | eccentricities the catalogue gives without errors or as limits | +| `mass-limits` | masses the catalogue gives as upper limits | +| `active-star` | an active star: X-ray source, chromospheric emission or emission lines | +| `evolved` | an evolved star or host, off the main sequence | +| `young-star` | a young star or star-forming region | +| `moving-group` | a member of a catalogued moving group or association, whose shared velocity places it | +| `natural-type` | a SIMBAD type that explains the signal | +| `white-dwarf` | a white dwarf or white-dwarf companion | +| `dust` | warm or hot dust, a debris disc or an infrared excess of dust | +| `companion` | a known or red companion | +| `blend` | light of a neighbour, a background star or a third body in the aperture or beam | +| `crowding` | a depth or amplitude difference made by a pipeline's correction for neighbours' light, absent from the uncorrected flux | +| `interstellar` | interstellar dust or gas in the beam or along the sightline | +| `artefact` | a catalogue or imaging artefact: ghost, spike, single-exposure detection or a catalogue that reads high | +| `catalogue-dropped` | a source one catalogue's processing dropped and another's holds: a faint neighbour inside a bright star's image, a fast mover the cross-match lost, or too few transits in the shorter span | +| `photosphere` | a colour within the photosphere's range | +| `diffuse-emission` | the field's diffuse emission | +| `astrometry` | an astrometric solution not to be trusted | +| `outside-selection` | a star outside the test's range of colour, temperature or distance | +| `metal-poor` | a metal-poor subdwarf, placed below the main sequence by its composition: a subdwarf spectral type or a J-Ks bluer than the main sequence's | +| `abundance-pattern` | an abundance pattern of natural mixing or mass transfer | +| `published-classification` | classified by the team that published the alert or catalogue | +| `published-solution` | an error in the published solution | +| `catalogued-false-positive` | a false positive or alarm in the catalogue that lists it | +| `group-depth` | a distance its group's other members place elsewhere | +| `dust-lane` | a dust lane over the galaxy's light | +| `energy-budget` | an energy budget the infrared does not carry | +| `asteroid-class` | a metal-rich or enstatite taxonomic class | +| `activity` | outgassing or cometary activity | +| `yarkovsky` | a drift with the sign and size the Yarkovsky effect gives | +| `dark-comet` | a dark comet, published or refitted | +| `natural-density` | an area-to-mass ratio from radiation pressure that a rock of the body's size gives | +| `no-drift` | a gravity-only orbit that fits as well | +| `meteor-shower` | members of a known shower with overestimated speeds | +| `speed-bias` | groups that a shared speed overestimate makes | +| `tidal-synchronisation` | an orbit inside the range where tides synchronise | +| `chance-rate` | a target of a set that the null produces as often as observed | +| `control` | a control target of the test, not a candidate | +| `not-measured` | a target the test could not measure | + +## Recipes + +### Catalogue checks + +| Approach | Data and rule | Run | +|---|---|---| +| Millimetre flares on inactive stars | SPT-3G flare stars without a 2RXS source, crossed with eRASS1, 4XMM, CSC and SIMBAD; a star with no X-ray source is judged against eRASS1's reach at its distance | `seti.py highenergy mm check\|record` | +| Radar reflectors | the PDS SBN radar compilation; a metal reflector has OC albedo near 1 and SC/OC near 0; albedos above 0.3 read with their SBDB classes | `seti.py solar_system radar_albedo` | +| Direct-imaging candidates | per-epoch separations and angles against the background track and co-motion, both at chi2 above 25 | `seti.py neighbourhood imaging` | +| Industrial gases | K2-18 b's MIRI reductions read from Zenodo by byte range (`remotezip.open_zip`), bands fitted against a quadratic baseline | `seti.py composition gases` | +| Asteroid surfaces | Gaia DR3 reflectance spectra fitted by principal components with and without metal templates (refractiveindex.info); injections give the covering fraction a surface needs | `seti.py solar_system surfaces` | +| Exact commensurability | every planet pair of the Exoplanet Archive's composite table against p:q (q up to 7); counts below each distance against the density between 1e-3 and 1e-2 | `seti.py transits commensurability search\|record` | +| Yarkovsky sign test | JPL transverse terms A2 against the obliquity of every DAMIT pole solution (orbit normal from the osculating inclination and node); the efficiency against all absorbed sunlight at the extreme and at typical density and albedo, with the published dark comets marked | `seti.py solar_system yarkovsky fetch\|analyse\|record` | +| Interstellar arrivals along the ecliptic | interstellar objects carrying the velocities of the Gaia DR3 stars within 100 pc, drawn in proportion to speed and to the focused cross-section for perihelia within 2 AU, impact points uniform over it; inclinations against the ecliptic, and least distances to Venus, Mars and Jupiter on their mean ellipses with drawn phases against 3I/ATLAS's own (its elements on astropy's ephemeris) | `seti.py solar_system isoarrival fetch\|run\|record` | +| Impulses on 3I/ATLAS's orbit | every MPC position of 3I/ATLAS in ASSIST (DE440 and sb441-n16) with per-site weights and same-night inflation; gravity alone, outgassing of r^-2 or water-ice g(r), constant, changing at perihelion or in seven bins, and an impulse (three velocity components at one instant) at perihelion, at the passages of Mars and Jupiter or every five days; models compared on one set of kept positions, nights resampled, the busiest observatories left out | `seti.py solar_system iso3i fetch\|fit\|compare\|scan\|boot\|sites\|record` | +| Long occulters' companions | Gaia DR3 RUWE, astrometric excess noise and its significance of the stars eclipsed for months, ranked among 400 field stars within 0.15 deg matched in G and colour; EE Cep, whose disk-bearing companion is known, as the control | `seti.py dimming occulters [record] [--stars NAME ...] [--controls NAME ...] [--dg 0.3] [--dcolour 0.2] [--n-controls 100] [--radius-deg 0.15]` | +| Dark-comet candidate | MPC astrometry refitted in ASSIST with and without A2, with A1 and A2, under site weights, the sqrt(N/4) same-night deweighting of Veres et al. (2017) and each night as one position, and with each apparition left out; each apparition's offset from the gravity-only orbit of the others split along and across the apparent motion of the moving Earth, the along-track part as a clock error; every position's residuals against three orbits for the residual plot; the two orbits' separation ahead, with each orbit's prediction ellipse from its covariance; A2 refitted with one night left out at a time, with nights resampled with and without the decisive apparition held, and under other clipping thresholds, error floors and default uncertainties; the precovery frames re-measured against Gaia DR3 and set against both orbits; the known asteroids around the precovery track from SkyBoT; A2 under a night-level covariance whose shared variance is set by restricted maximum likelihood, and the error the decisive night would have to share to lose it; the positions in the precovery frames that orbits fitted without that night allow, A2 held at each value; every moving source in the whole precovery frames, linked into straight tracks, with chance tracks measured by shuffling the frame times and the completeness by injected copies of the object, and the median flux along the allowed positions and along shifted control lines; the next apparition's daily ephemeris of both orbits and the A2 it would measure without the decisive night; NEATM on NEOWISE W2 at fixed beaming parameters and under other assumptions | `seti.py solar_system darkcomet fetch\|thermal\|variants\|refit\|record\|precovery\|robust\|blockcov\|frames\|field\|locus\|census\|forecast DESIG`; `papers/dark_comet/make_numbers.py`; `papers/dark_comet/README.md` lists the paper's data files and the command behind each | +| Coherent hyperbolic meteor streams | GMN yearly trajectory summaries; each sporadic hyperbolic orbit's incoming asymptote and v_inf, a 1 deg and 3 km/s neighbourhood against the 10 deg density, IAU MDC showers matched by radiant, date and speed; nulls from shuffled speeds, independent speed errors and a shared speed overestimate on the elliptic sporadics | `seti.py solar_system meteors fetch\|analyse\|record` | +| Cosmic-ray doublets | Auger Phase One events above 32 EeV (Zenodo 6504276); pairs and triplets in 2 deg against 10000 time permutations, Gaia stars within 100 pc in each circle | `seti.py highenergy doublets [record] [--set phase1\|sd1500\|sd750\|inclined]` | +| Clockwork flares | flare start times from the Kepler (Yang and Liu 2019) or TESS (Yang et al. 2023, `CLOCKWORK_CAT=tess`) catalogues; H-test search, a null of other stars' flare times in the same quarters or orbits, then bursts, eclipsing binaries, spacecraft timing and phase scatter | `seti.py flashes clockwork search\|null\|vet\|record` | +| CNO-processed unevolved dwarfs | APOGEE DR17 dwarfs from VizieR III/286 by TAP; [C/N] against a running-median locus in Teff and [Fe/H], candidates 5 sigma low, judged by [Ce/Fe], [Na/Fe], visit RV scatter, vsini, M_K against the main sequence and Gaia DR3 binarity against a random draw of the same dwarfs | `seti.py composition cno [record] [--sigma 5] [--ce-max 0.3] [--na-max 0.3] [--rv-scatter-max 1] [--teff-edge 4900] [--vsini-max 15] [--n-control 600]` | +| Herded stars | APOGEE DR17 dwarfs within 100 pc by VizieR TAP, 6D from APOGEE radial velocities and Gaia astrometry; friends-of-friends within 10 pc and 1 km/s among stars with velocity errors below 0.5 km/s, [Fe/H] spreads within 600 K bands | `seti.py neighbourhood herded [record] [--link-pc 10] [--link-kms 1] [--verr-kms 0.5] [--teff-band 600] [--spread-dex 0.2]` | +| Waste heat in ultra-diffuse galaxies | SMUDGes DR9 centroids matched to AllWISE (3 arcsec) and Gaia DR3 (2 arcsec) through CDS XMatch; W3 or W4 at 5 sigma with W1-W2 below 0.5 and no Gaia star, against positions 60 arcsec away | `seti.py infrared udg [record] [--radius-arcsec 3] [--star-arcsec 2] [--snr 5] [--w1w2 0.5] [--control-offset-arcsec 60]` | +| Activity without a dynamo | HamStar coronal counterparts with L_X from the eRASS1 flux and distance, L_bol from G and BP-RP, rotation periods by Gaia source (vari_rotation_modulation) and by position (TESS, ZTF BY Dra and RS CVn); `xray`: the residual above the Wright et al. (2011) relation at Ro above 1 for 3000-6000 K; `polarised`: V-LoTSS and RACS circularly polarised stars against eRASS1 detections or limits and the periods; `ceiling`: L_X/L_bol above 1e-2 read against the SIMBAD types of the counterpart and of any object within 20 arcsec, Gaia's main sequence and the counterpart probability | `seti.py highenergy dynamo xray\|polarised\|ceiling [record]` | +| Plate-like bodies | LCDB detail records with amplitude and phase angle reduced to zero phase at 0.03 mag/deg, the tail above 1.6 mag among quality 2 and 3 records at phase angles up to 15 deg against the quality-1 records' rate | `seti.py solar_system plates analyse\|record` | +| Missing bolometric flux, eclipsing binaries | DEBCat's components' log L and log Teff summed into a predicted G at the Gaia DR3 distance (SIMBAD names, CDS XMatch to I/355/gaiadr3 and I/355/paramp) with bolometric corrections and the larger of Gaia's A_G and 2.7 E(B-V) from the catalogue's B-V; the deficit G_obs - G_pred over the clean systems (components below 8000 K, within 1 kpc, RUWE 1.4 or less), candidates 0.3 mag too faint at 3 sigma | `seti.py infrared debs fetch\|analyse\|record` | +| Orbital poles against the Galactic plane | Gaia DR3 nss_two_body_orbit astrometric solutions joined to binary_masses by async TAP; inclination and the two candidate nodes from the Thiele-Innes elements (k1 = \|(A+G, B-F)\|, k2 = \|(A-G, B+F)\|, cos i = (k1-k2)/(k1+k2)), each candidate pole's Galactic latitude; the fraction within 15 deg of a Galactic pole for substellar companions (m2 upper bound below 0.08 Msun) against stellar companions reweighted to the substellar hosts' latitudes, bootstrapped | `seti.py neighbourhood poles fetch\|analyse\|record` | +| Hot bodies too small to be stars | the Gaia Catalogue of Nearby Stars' sources within 100 pc bluer than BP-RP 0.6, their gaia_source and astrophysical_parameters rows by id batches, kept at parallax_over_error above 10 with gspphot temperatures above 7000 K; the black-body radius from G, the parallax and the Planck function at the band's pivot, at the gspphot temperature and at the temperature a black body needs for the BP-RP colour; a candidate below 0.003 Rsun on both with the colour temperature above 7000 K, RUWE below 1.4, no multiple peaks, ten or more visibility periods and a single-source BP/RP excess; the sample's white-dwarf sequence pushed through its parallax and flux errors as the null | `seti.py neighbourhood hotsmall fetch\|analyse\|record` | +| Straight limbs in occultation profiles | the PDS small-bodies occultation bundle V4.0: each positive chord's ends placed on the apparent fundamental plane from the site, the star's apparent place and the sidereal time, less the shadow's motion and the catalogue's fitted position, the longitude sign chosen per chord by that position; events of fit quality 3 or 4 with five or more chords; the longest run of four or more consecutive limb points a line fits within the timing errors over the diameter, against the fitted ellipse's points at the same angles and errors | `seti.py solar_system limbs analyse\|record` | +| Replicated bodies on unrelated orbits | LCDB summary V4.0 (PDS) quality-3 periods, H and amplitudes joined by number with the 2024 proper elements of the Nesvorny family bundle; pairs matching in period (2e-4), H (0.1) and amplitude (0.05) more than 300 m/s apart in the Zappala metric, connected groups of three or more, against periods shuffled within half-magnitude bins | `seti.py solar_system replicated analyse\|record` | +| TeV neutrinos moving with the planets | the IceCube ten-year point-source tracks; Jupiter, Saturn, Mars and Venus on an hourly grid from the built-in ephemeris, each event's distance to the planet at its own time; the unbinned point-source likelihood in the planet's frame without an energy term, events within 5 deg of the Sun set aside; the null from 1000 time scrambles that fix the events on the sky and move the planet; the 90 per cent E^-2 flux limit with the acceptance averaged along the track | `seti.py highenergy planets [--trials N]`, `seti.py highenergy planets record` | +| Stars at rest with the Sun | Gaia DR3 stars within 100 pc with radial velocities and parallaxes at 10 sigma (an asynchronous query, cached), velocities relative to the Sun with their errors; below 1 km/s at an error below 0.5 km/s against the stars below 5 km/s scaled by volume, and the density in 1 km/s shells; `null`: Cartesian velocities with RUWE below 1.4, the stars and the systems (friends of friends within 10 pc and 1 km/s) in 1 km/s balls centred elsewhere in velocity space at the Sun's density within 5 km/s, the sideways speeds of every star within 100 pc against the flat two-dimensional density, stars within 15 pc of each system matching the proper motion its velocity predicts, and the slow stars' associations in Moranta et al. (2022) by VizieR | `seti.py neighbourhood rest [null\|record]` | +| Stars on a straight line to the Sun | the same stars: sideways speed below 1 km/s at a radial speed above 20 km/s, each star's least distance to the Sun and its time on a straight line, against the stars below 5 km/s sideways scaled by area | `seti.py neighbourhood headon [record] [--vt-kms 1] [--err-kms 0.5] [--vr-kms 20] [--flat-from-kms 5]` | +| Non-stellar spectra at stellar distances | Gaia DR3 astrophysical_parameters joined to the Gaia Catalogue of Nearby Stars beyond 10 mas, quasar or galaxy probability above 0.9; SIMBAD types by Gaia DR3 identifier, the white-dwarf locus M_G > 10 + 3 (BP-RP), components of multiples, and catalogued neighbours within 10 arcsec | `seti.py neighbourhood qsolike [record] [--prob 0.9] [--plx-mas 10]` | +| Light that appeared since 2MASS | Gaia Catalogue of Nearby Stars within 20 pc at G 5-13 without a 2MASS best neighbour; each position carried back to 2000 and sought in 2MASS (II/246) by CDS XMatch within 5 arcsec plus 2.5 years of its proper motion; SIMBAD names of the rest, a secondary sitting in its primary's glare | `seti.py neighbourhood no2mass [record] [--plx-mas 50] [--g-range 5 13] [--radius-arcsec 5] [--years 2.5] [--epoch 2000]` | +| Hipparcos stars Gaia cannot find | Hipparcos new-reduction stars at Hp 7-11 without a Gaia DR3 best neighbour, carried from 1991.25 to 2016.0 by their Hipparcos proper motions and sought in Gaia DR3 within 10 arcsec by CDS XMatch; those not found read in SIMBAD for a Gaia DR3 identifier and in Gaia within 30 arcsec and 1 mag of SIMBAD's position | `seti.py dimming hipgone [record] [--hp-min 7] [--hp-max 11] [--radius-arcsec 10] [--near-arcsec 30] [--dmag 1]` | +| Stars Gaia DR2 saw that DR3 cannot find | Gaia DR2 sources with parallaxes above 10 mas at 10 sigma and G below 17, read in 192 source_id ranges, without a row in gaiadr3.dr2_neighbourhood (the candidates kept in the results directory, so a rerun skips the scan); each carried to 2016.0 and sought in DR3 within 5 arcsec and 1 mag, the rest read for DR2's duplicated-source flag and excess-noise significance and for a DR3 source within 10 arcsec more than a magnitude brighter, in whose image DR2's detection lay | `seti.py dimming dr2gone [record] [--plx-min 10] [--g-max 17] [--radius-arcsec 5] [--bright-arcsec 10]` | +| Stars Gaia DR3 sees that DR2 did not | Gaia DR3 sources with parallaxes above 10 mas at 10 sigma, G below 17 and RUWE below 1.4, read the same way, without a row in dr2_neighbourhood; each carried to 2015.5 and sought in DR2 within 5 arcsec and 1 mag, the rest read for a DR3 neighbour within 2 arcsec, a DR2 source within 10 arcsec more than a magnitude brighter, a proper motion above 500 mas/yr, a two-parameter or duplicated solution, and fewer than 13 visibility periods | `seti.py dimming dr2new [record] [--plx-min 10] [--g-max 17] [--ruwe-max 1.4] [--radius-arcsec 5] [--bright-arcsec 10] [--fast-mas-yr 500] [--min-visibility 13]` | +| Unique variables next door | GCVS stars of the unique type ('*'), carried from 2000.0 to 2016.0 by their GCVS proper motions and matched to Gaia DR3 within 10 arcsec by CDS XMatch, kept within 100 pc and read in SIMBAD by their Gaia DR3 identifiers; a type that names no class sends the star to its published account | `seti.py dimming uniquevar [record] [--var-type "*"] [--radius-arcsec 10] [--plx-min 10]` | +| Stars dimmed grey on thin-disc orbits | Gaia Catalogue of Nearby Stars objects at BP-RP 0.6-3.0 with parallaxes at 20 sigma, RUWE below 1.4, one IPD peak and a single-star BP/RP excess, more than 1.5 mag below the main-sequence locus of their colour and crossing the sky at under 50 km/s, against those faster; each read in SIMBAD, in GSP-Phot for a metallicity bounded below -0.5, against the J-Ks of main-sequence stars of its colour (bluer for a metal-poor dwarf, redder when a blue companion drags BP-RP) and in GALEX for a hot companion | `seti.py dimming greysub [record] [--below-mag 1.5] [--tangential-kms 50] [--colour-min 0.6] [--colour-max 3.0] [--excess-max 0.1] [--uv-dmag 5]` | +| Objects of unknown nature within 10 pc | SIMBAD entries with parallaxes above 100 mas typed '?' or 'err' | `seti.py neighbourhood unknown [record] [--plx-mas 100]` | +| Pulsars that hold their period | ATNF catalogue (VizieR B/psr): isolated pulsars outside globular clusters and the Magellanic Clouds with a measured period derivative zero or negative, each against its error; those negative only in the corrected derivative (P1I) counted beside them | `seti.py radio_sky spinup [record] [--sigma 3]` | +| Pulsars on nearby stars | every ATNF pulsar against Gaia DR3 within 2 arcsec by CDS XMatch, matches within 200 pc at 5 sigma, read for the pulsar's binary companion and for globular-cluster fields | `seti.py radio_sky psrstar [record] [--radius-arcsec 2] [--plx-mas 5] [--plx-sigma 5]` | +| Planets on Earth's year | NASA Exoplanet Archive pscomppars: periods within 0.2 per cent of the sidereal year against the density of periods at 300-430 d | `seti.py transits earthyear [record] [--tolerance 0.002] [--window-d 300 430]` | +| Planetary systems in equal period steps | consecutive triples of pscomppars systems of three or more planets whose period differences agree to 0.5 per cent, each read for an n : n+1 : n+2 chain; equal period ratios counted beside them | `seti.py transits steps [record] [--tolerance 0.005] [--chain-tol 0.02]` | +| Asteroids on circles in the ecliptic | JPL Small-Body Database query API counts: numbered asteroids with e below 0.001, i below 0.2 deg and both, the joint count against the product of the tails | `seti.py solar_system circular [record] [--e-max 0.001] [--i-max-deg 0.2]` | +| Lithium in old cool dwarfs | GALAH DR4 mainstartable: dwarfs below 5300 K with clean A(Li) above 2.0 and isochrone ages above 6 Gyr; Gaia DR3 speeds by id batches; the lithium mass a 0.04 M_sun envelope needs at each abundance; `refit`: each red-arm spectrum's velocity from four strong lines, the Li I 6708 doublet fitted at the instrument's width, at that width broadened by GALAH's vsini and at the star's own Ca I 6717.7 width, each against the same fit at 40 control wavelengths of the spectrum; lithium-poor stars of the same selection matched in S/N, read at their partners' claimed widths and with those lines injected; Gaia DR3 image doubling, velocity scatter and Ca II triplet activity, GALAH's vsini and H-alpha residual for youth and companions | `seti.py composition lithium [refit\|record]` | +| Planets on Earth's day | NASA Exoplanet Archive pscomppars: periods between the sidereal day less 0.2 per cent and the solar day plus 0.2 per cent against the density at 0.7-1.4 d, read for the discovery method | `seti.py transits earthday [record] [--tolerance 0.002] [--window-d 0.7 1.4]` | +| Planets on one clock | pscomppars periods measured to 5e-7: pairs in different systems within 1e-6 and three combined errors against the pairs within 1e-4 scaled | `seti.py transits sharedperiod [record] [--precision 5e-7] [--tolerance 1e-6] [--sigma 3]` | +| Pulsars on one clock | ATNF (VizieR B/psr) frequencies measured to 1e-7 carried to MJD 56000 with their derivatives: pairs more than 1 deg apart outside one globular cluster within 1e-6 against the pairs within 1e-4 scaled | `seti.py radio_sky psrclock [record] [--tolerance 1e-6] [--precision 1e-7] [--epoch-mjd 56000] [--min-sep-deg 1]` | +| RR Lyrae on one clock | Gaia DR3 vari_rrlyrae fundamental periods measured to 1e-5: pairs more than 1 deg apart within 1e-6 and three combined errors against the pairs within 1e-4 scaled | `seti.py transits rrlclock [record] [--precision 1e-5] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]` | +| Cepheids on one clock | Gaia DR3 vari_cepheid fundamental periods measured to 1e-5, paired as for RR Lyrae | `seti.py transits cepclock [record] [--precision 1e-5] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]` | +| Eclipsing binaries on one clock | Gaia DR3 vari_eclipsing_binary periods measured to 1e-6, paired as for RR Lyrae | `seti.py transits ebclock [record] [--precision 1e-6] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]` | +| Binary orbits on one clock | Gaia DR3 nss_two_body_orbit periods measured to 1e-5, paired as for RR Lyrae | `seti.py transits nssclock [record] [--precision 1e-5] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]` | +| Systems built from identical planets | pscomppars systems of three or more planets with every mass measured (not estimated from radius) and every radius to 15 per cent; the chi-square of the masses and of the radii about their error-weighted means, both at p above 0.05 | `seti.py transits uniform [record] [--precision 0.15] [--p-min 0.05]` | +| Planets denser than iron | transiting pscomppars planets below 30 Earth masses with measured mass and radius to 20 per cent, against a pure-iron radius 0.86 M^0.27 (Zeng et al. 2016), flagged smaller at 3 sigma | `seti.py transits ironplanets [record] [--precision 0.2] [--sigma 3] [--mass-max 30]` | +| Planets in exact resonance | adjacent pscomppars pairs with both periods to 1e-5; ratios within 1e-4 of p/q (q up to 4, p up to 9) and three combined errors, against the pairs 1e-3 to 1e-2 from the ratios scaled by width | `seti.py transits exactres [record] [--tolerance 1e-4] [--precision 1e-5] [--q-max 4] [--p-max 9] [--near-window 1e-3 1e-2]` | +| Copies of Earth | pscomppars planets transiting with radius within 10 per cent and measured mass within 20 per cent of Earth's, at 0.75-1.25 of its insolation around a 5300-6100 K star | `seti.py transits earthcopy [record] [--radius 0.1] [--mass 0.2] [--insolation 0.75 1.25] [--teff 5300 6100]` | +| The random transiter in TESS | HD 139139's TESS QLP light curve of sector 91 (200-s full-frame cadence): the detrended flux at quality 0 over a one-day running median, dips of three or more cadences below three times the robust scatter and deeper than 300 ppm, against the count K2's 28 dips in 87 days give for the sector, with the 3-sigma depth for dips of 1, 3 and 7 h | `seti.py transits randomtransiter [record] [--name "HD 139139"] [--tic 70652803] [--sector 91] [--k2-dips 28] [--k2-days 87] [--sigma 3] [--min-cadences 3] [--min-depth-ppm 300] [--trend-days 1]` | +| Fast radio bursts at nearby stars | CHIME/FRB Catalog 1 2-sigma ellipses against the Gaia Catalogue of Nearby Stars within 10 pc, against the bursts moved 5-20 deg in right ascension | `seti.py radio_sky frbstars [record] [--plx-mas 100] [--ellipse-sigma 2] [--shifts-deg 5 10 15 20]` | +| Asteroids brighter than a mirror | Small-Body Database albedos above 0.8 against AKARI, WISE fits less three errors against 0.6, taxonomy from the database and the ATLAS phase curves, and fits pinned at 1.000 | `seti.py solar_system mirror [record] [--albedo 0.8] [--natural 0.6] [--sigma 3]` | +| Retrograde orbits inside Jupiter's | Small-Body Database bound orbits with i above 90 deg, a below 4.5 au and q beyond 1.3 au, read for arc, orbit quality and Tisserand parameter | `seti.py solar_system retrograde [record] [--i-min-deg 90] [--a-max-au 4.5] [--q-min-au 1.3] [--condition-max 6] [--arc-min-days 30] [--tj-min 2]` | +| Objects on Earth's own orbit | Small-Body Database orbits with a 0.95-1.05 au, e below 0.05, i below 3 deg; the radial non-gravitational term at 3 sigma as an area-to-mass ratio (reflection coefficient 1.5) and the densest body it allows at albedo 0.5, against a spent stage's 5e-3 m2/kg | `seti.py solar_system earthorbit [record] [--a-min 0.95] [--a-max 1.05] [--e-max 0.05] [--i-max-deg 3] [--sigma 3] [--stage-m2-kg 5e-3] [--rubble-kg-m3 500]` | +| Spectra no stellar model fits | GALAH DR4 dwarfs within 100 pc at S/N above 100: the top 0.5 per cent in chi-square, read for second velocity components, vsini, H-alpha emission, GALAH's flags and Gaia RUWE, doubled images, velocity scatter and non-single-star solutions | `seti.py composition misfit [record] [--top 0.005] [--snr 100] [--plx-mas 10] [--logg-min 3.8] [--vsini-kms 20] [--halpha-ew -0.3]` | +| Light Gaia's outlier map could not place | Gaia DR3 astrophysical_parameters joined to oa_neuron_information: sources within 100 pc (parallax at 10 sigma) at G below 17, RUWE below 1.4 and a single-source BP/RP excess whose Outlier Analysis neuron carries no class label, against the share of all mapped sources in unlabelled neurons; SIMBAD names of those found | `seti.py neighbourhood oacells [record] [--plx-mas 10] [--sigma 10] [--g-max 17] [--ruwe-max 1.4]` | +| Bright nearby light no class claims | Gaia DR3 discrete source classifier: sources within 100 pc at G below 15 and RUWE below 1.4 whose five combined class probabilities all fall below 0.5, read for a single-source BP/RP excess and in SIMBAD | `seti.py neighbourhood noclass [record] [--plx-mas 10] [--sigma 10] [--g-max 15] [--ruwe-max 1.4] [--prob 0.5]` | +| Something at rest in the universe's frame | Gaia DR3 stars with radial velocities and parallaxes at 5 sigma at heliocentric speeds of 300-440 km/s (an asynchronous query), Galactic velocities within 10 km/s of 369.82 km/s toward (84.021, -48.253) deg at velocity errors below 10 km/s, against 1000 random directions of the same speed | `seti.py neighbourhood cmbrest [record] [--tol-kms 10] [--err-kms 10] [--speed-range-kms 300 440] [--draws 1000]` | +| Stars accelerating along their own motion | Gaia DR3 nss_acceleration_astro solutions at 5 sigma, the perspective acceleration of the radial velocity removed with the cached sample within 100 pc; the angle between acceleration and proper motion within 8 deg either way against a uniform angle's 4.44 per cent | `seti.py neighbourhood thrust [record] [--sigma 5] [--window-deg 8]` | +| Copy stars on opposite sides of the sky | the cached Gaia DR3 stars within 100 pc with velocities to 0.5 km/s; pairs more than 90 deg apart agreeing in G and BP-RP to 0.002 mag, in parallax to 0.2 per cent and in velocity to 0.5 km/s, against twenty velocity shuffles | `seti.py neighbourhood copies [record] [--dmag 0.002] [--dplx 0.002] [--dv-kms 0.5] [--err-kms 0.5] [--shuffles 20]` | +| Our explained flags in Earth's transit zone | every Gaia DR3 target of the coverage store with its ecliptic latitude by id batches; the vetted share within 0.27 deg of the ecliptic against the share of all targets, binomial | `seti.py neighbourhood flagetz [record] [--ecl-lat-deg 0.27]` | +| Our flags toward the obvious meeting-point directions | the same targets in Galactic coordinates; the vetted share within 30 deg of the centre and the anticentre and beyond 60 deg of latitude against the share of all targets, binomial, and against each run's own share of its targets, run by run; `--apex true` takes the solar apex and antapex instead | `seti.py neighbourhood flagdirs [record] [--radius-deg 30] [--pole-lat-deg 60] [--apex true]` | +| Well-studied neighbours of unknown nature | SIMBAD entries with parallaxes above 10 mas typed '?' or 'err' with 20 or more references | `seti.py neighbourhood mysteries [record] [--plx-mas 10] [--min-refs 20]` | +| Stars leaving the Galaxy from next door | the cached Gaia DR3 stars within 100 pc with velocities to 5 km/s; Galactocentric speeds with the Sun at (11.1, 245.0, 7.3) km/s above 550 km/s | `seti.py neighbourhood unbound [record] [--v-esc-kms 550] [--err-kms 5]` | +| Something closer than Proxima Centauri | Gaia DR3 sources with parallaxes above 700 mas, flagged above Proxima's 768.07 mas at 5 sigma and read for their solutions and in SIMBAD | `seti.py neighbourhood proxima [record] [--plx-min-mas 700] [--sigma 5]` | +| Something faster across the sky than Barnard's Star | Gaia DR3 sources with proper motions above 9000 mas/yr (an asynchronous scan of the whole catalogue), flagged above Barnard's Star's 10393 mas/yr at 5 sigma | `seti.py neighbourhood barnard [record] [--pm-min-masyr 9000] [--sigma 5]` | +| Stars standing still in the Galaxy | the cached Gaia DR3 stars within 100 pc with velocities to 5 km/s; Galactocentric speeds below 30 km/s against the count below 60 km/s scaled by the volume of speeds, read for metallicity | `seti.py neighbourhood still [record] [--v-max-kms 30] [--err-kms 5]` | +| Radial velocities the Galaxy cannot hold | Gaia DR3 radial velocities beyond +-700 km/s to 5 km/s over ten or more transits, within the RVS search's +-1000 km/s; read for the share of transits deblended from a neighbour, expected S/N and template | `seti.py neighbourhood fastrv [record] [--rv-kms 700] [--error-kms 5] [--min-transits 10] [--deblended-share 0.3]` | +| A lattice among the nearby stars | the cached Gaia DR3 stars within 50 pc brighter than absolute G 10, systems closer than 0.1 pc merged; the Clark-Evans ratio of nearest-neighbour distances within 45 pc against 1000 uniform volumes | `seti.py neighbourhood lattice [record] [--radius-pc 50] [--inner-pc 45] [--abs-g 10] [--merge-pc 0.1] [--sims 1000]` | +| Bright stars no older catalogue holds | Gaia DR3 sources brighter than G 6 without a Hipparcos-2 or Tycho-2 best neighbour, read in SIMBAD and, unnamed, matched to Hipparcos (I/239) within 3 arcmin by CDS XMatch; flagged where neither holds them | `seti.py neighbourhood uncatalogued [record] [--g-max 6] [--hip-arcsec 5] [--search-arcsec 180]` | +| Galaxies with parallaxes | Gaia DR3 sources the discrete source classifier calls galaxies above 0.9 with parallaxes above 10 mas at 10 sigma, read for RUWE, a second image peak, image asymmetry and excess noise, and for BP/RP light that is not a single source's | `seti.py neighbourhood galplx [record] [--prob 0.9] [--plx-mas 10] [--sigma 10] [--ruwe-max 1.4] [--multi-peak 2] [--harmonic 0.1] [--excess-noise-sig 2]` | +| The Sun's co-movers against the Sun | the store's gaia_rest_stars targets read in Gaia DR3's astrophysical parameters for metallicity (GSP-Spec, else GSP-Phot), alpha enhancement and FLAME age against the Sun's, for stars warmer than 4800 K | `seti.py neighbourhood comovers [record] [--metallicity-dex 0.1] [--age-gyr 1.5] [--teff-min 4800]` | +| The solar siblings | HD 162826 and HD 186302 read in eRASS1, VLASS, GALEX and AllWISE by CDS XMatch at each catalogue's epoch, and looked up among Breakthrough Listen's targets | `seti.py neighbourhood siblings [record] [--stars "HD 162826" "HD 186302"]` | +| Unbound stars from nowhere | Li et al. (2023) hypervelocity candidates placed in Galactocentric coordinates and traced straight back along their velocities for 300 Myr: within 1 kpc of the Centre, within 5 kpc of the Large Magellanic Cloud, or a disc crossing within 25 kpc (or a place still within 1.5 kpc of the plane); a velocity error above 150 km/s unmeasured, a star more likely bound than not a halo star | `seti.py neighbourhood hvsorigin [record] [--centre-kpc 1] [--cloud-kpc 5] [--disc-kpc 25] [--disc-z-kpc 1.5] [--within-myr 300] [--velocity-error-max 150]` | +| Stars that passed within a parsec of the Sun | Bailer-Jones (2022) Gaia EDR3 encounter stars with a median perihelion below 1 pc, matched to eRASS1 (15 arcsec, 2020.0), VLASS (3 arcsec, 2019.0), GALEX (5 arcsec, 2007.0) and AllWISE (3 arcsec, W1-W3 above 0.3) by CDS XMatch against the stars moved 2 arcmin, read in SIMBAD, and looked up among Breakthrough Listen's targets by HIP and GJ name | `seti.py neighbourhood encounters [record] [--w13-min 0.3] [--w3-err-max 0.2]` | +| Microlensing of the neighbours | Gaia DR3 vari_microlensing events whose source has a parallax above 1 mas at 3 sigma, each read for RUWE, for a parallax under 5 sigma at G above 19, for a SIMBAD type that varies on its own, for Gaia's variability class and for the blended fit's source fraction | `seti.py neighbourhood nearlens [record] [--plx-mas 1] [--sigma 3] [--ruwe-max 1.4] [--faint-g 19] [--faint-sigma 5] [--source-fraction 0.5] [--relative-kms 50]` | +| The triangular points of nearby binaries | Sixth Catalog of Orbits of Visual Binary Stars orbits of grade 4 or better whose primary Gaia DR3 puts within 100 pc (I/355 by CDS XMatch), each solved for 2016.0; kept when one Gaia source lies within 0.3 arcsec or 15 per cent of the separation of where the orbit puts the secondary and the separation is 1-20 arcsec; Gaia sources at L4 and L5, the secondary's distance from the primary 60 deg ahead of and behind it in the orbital plane, against the count at ten other angles of each orbit | `seti.py neighbourhood trojanpoints [record] [--epoch 2016] [--grade-max 4] [--plx-min 10] [--sep-arcsec 1 20] [--point-deg 60]` | +| Quasars that move | Gaia DR3 quasar candidates both classifiers call quasars (classlabel_dsc_joint) at QSOC redshift above 1 moving above 10 mas/yr at 10 sigma, joined in 24 source_id ranges under the archive's 60-s statement cap; read as for galaxies with parallaxes | `seti.py neighbourhood qsomove [record] [--pm-masyr 10] [--sigma 10] [--z-min 1] [--ruwe-max 1.4] [--multi-peak 2] [--harmonic 0.1] [--excess-noise-sig 2]` | +| Planets inside their own Roche limit | pscomppars planets with measured mass and radius to a third; the fluid Roche period 12.6 h (density / 1 g cm^-3)^-1/2 (Rappaport et al. 2013) against the period at 3 sigma | `seti.py transits rocheplanets [record] [--precision 0.333] [--sigma 3] [--roche-h 12.6]` | +| Copy planets in different systems | pscomppars planets with mass and radius to 3 per cent; pairs of different systems alike to 1 per cent in radius, mass and period, against masses shuffled among planets of like radius fifty times | `seti.py transits copyplanets [record] [--tol 0.01] [--precision 0.03] [--shuffles 50]` | +| Daysides hotter than their stars allow | the Exoplanet Archive's emissionspec brightness temperatures against T_eff (R*/a)^1/2 (2/3)^1/4 from pscomppars, flagged above it at 3 sigma | `seti.py transits dayside [record] [--sigma 3]` | +| Period ratios that spell constants | adjacent pscomppars period ratios within 1e-4 of pi, e, the golden ratio, sqrt 2 or sqrt 3, against 1000 random numbers between 1.2 and 3.5 | `seti.py transits constants [record] [--tol 1e-4] [--draws 1000] [--draw-range 1.2 3.5]` | +| Systems packed tighter than Hill stability | adjacent pscomppars pairs with masses, semi-major axes and stellar masses below 2 sqrt 3 mutual Hill radii (Gladman 1993), read for microlensing geometry, masses from mass-radius relations and resonance within 1 per cent | `seti.py transits hillpack [record] [--hill-limit 3.464] [--resonance-tol 0.01]` | +| Two planets on one orbit | pscomppars pairs of one system within 1 per cent in period | `seti.py transits coorbital [record] [--tol 0.01]` | +| Copied planetary systems | pscomppars consecutive triples whose two period ratios both agree to 0.1 per cent with another system's, against the second ratios shuffled fifty times, read for 3:2 and 4:3 chains | `seti.py transits copysystems [record] [--tol 1e-3] [--shuffles 50]` | +| Planets brighter than a mirror | emissionspec eclipse depths shortward of 1 um as geometric albedos with pscomppars a/R* and Rp/R*, flagged above 1 at 3 sigma | `seti.py transits mirrorplanets [record] [--albedo-max 1] [--sigma 3] [--wavelength-max-um 1]` | +| Planets orbiting inside their star or hotter than it | pscomppars periods against the surface-grazing orbit 2 pi (R*^3/GM*)^1/2, and equilibrium temperatures against T_eff / sqrt 2 | `seti.py transits insidestar [record]` | +| Pulsars with square pulses | ATNF (VizieR B/psr) pulsars with both widths; W10/W50 below 1.05, where a Gaussian pulse gives 1.82 | `seti.py radio_sky boxcar [record] [--ratio-max 1.05]` | +| Pulsars with no electrons in front | ATNF dispersion measures below 1 pc cm^-3 | `seti.py radio_sky nodm [record] [--dm-max 1]` | +| Pulsars spinning faster than a neutron star survives | ATNF periods below 0.7 ms | `seti.py radio_sky breakup [record] [--p-ms 0.7]` | +| Pulsars radiating more than their spin supplies | ATNF 1.4 GHz luminosities taken isotropic over 1 GHz (1.2e20 W per mJy kpc^2) against the spin-down power | `seti.py radio_sky overpower [record] [--band-hz 1e9]` | +| Pulsars of one globular cluster on one clock | ATNF cluster pulsars timed to 1e-7 with frequencies carried to MJD 56000; same-cluster pairs within 1e-6 against the pairs within 1e-4 scaled | `seti.py radio_sky gcclock [record] [--tol 1e-6] [--precision 1e-7] [--epoch 56000]` | +| Binary pulsars on Earth's year | ATNF orbital periods within 0.1 per cent of 365.25 d | `seti.py radio_sky yearpsr [record] [--tol 0.001]` | +| Pulsars paired in simple ratios | ATNF pulsars timed to 1e-7 outside clusters; pairs within 1 deg in a frequency ratio p/q (q up to 5, p up to 12) to 1e-6, against pairs 10-20 deg apart scaled | `seti.py radio_sky psrratio [record] [--tol 1e-6] [--sep-deg 1] [--control-deg 10 20] [--q-max 5] [--p-max 12]` | +| Copy pulsars | ATNF pulsars with period, period derivative, DM and W50; pairs more than 10 deg apart alike to 1e-3 in period and 5 per cent in the rest, against the rest shuffled among pulsars of like period | `seti.py radio_sky copypsr [record] [--period-tol 1e-3] [--other-tol 0.05] [--sep-deg 10] [--shuffles 20]` | +| Binary pulsars on Earth's day | ATNF orbital periods within 0.1 per cent of the solar or sidereal day, against those within 10 per cent of a day scaled | `seti.py radio_sky daypsr [record] [--tol 1e-3]` | +| Pulsars beyond the magnetar limit | ATNF pulsars with a positive period derivative; the dipole field 3.2e19 (P dP/dt)^1/2 G above 1e16 G | `seti.py radio_sky bfield [record] [--b-gauss 1e16]` | +| Pulsar pairs whose frequencies spell constants | ATNF pulsars timed to 1e-7 outside clusters, carried to MJD 56000; pairs anywhere whose frequency ratio equals pi, e, the golden ratio, sqrt 2 or sqrt 3 to 1e-6, against the pairs within 1e-4 scaled | `seti.py radio_sky psrconst [record] [--tol 1e-6] [--precision 1e-7] [--epoch 56000]` | +| Glitches firing together | Jodrell Bank glitch catalogue (Basu et al. 2022); glitches timed to 2 days or better, pairs in different pulsars within the sum of their epoch uncertainties, against each pulsar's glitches moved together by 100-2000 days either way in 1000 draws | `seti.py radio_sky glitchsync [record] [--max-err-days 2] [--shift-days 100 2000] [--draws 1000]` | +| Methanol masers away from the Galactic plane | Pestalozzi, Minier and Booth (2005) 6.7 GHz methanol masers more than 2 deg from the plane, each read for its IRAS or MSX counterpart and for SIMBAD's young stars, H II regions and clouds within 1 arcmin, then 5 | `seti.py radio_sky methanolhigh [record] [--latitude-deg 2] [--radius-arcmin 1 5]` | +| Compact radio sources that move like neighbours | Radio Fundamental Catalogue rfc_2026c (23866 VLBI-compact sources) against Gaia DR3 within 0.5 arcsec by CDS XMatch, keeping parallaxes above 2 mas at 5 sigma; counterparts read in SIMBAD, a VLBI-to-Gaia offset above 0.1 arcsec taken as a star in front of a background source, and a galaxy's parallax or a doubtful Gaia solution as spurious | `seti.py radio_sky rfcnear [record] [--radius-arcsec 0.5] [--parallax-mas 2] [--sigma 5] [--offset-arcsec 0.1]` | +| Infrared at isolated millisecond pulsars | ATNF pulsars below 30 ms with no orbit, outside globular clusters and timed to 1 arcsec, against AllWISE within 3 arcsec by CDS XMatch, against the pulsars moved 2 arcmin; matches tested for a co-moving Gaia star, a galaxy in the Legacy Survey DR10 and an offset beyond three errors | `seti.py radio_sky msplight [record] [--period-s 0.03] [--position-arcsec 1] [--radius-arcsec 3]` | +| Burst dispersions on shared values | CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59), one burst per source; pairs within 0.5 pc cm^-3 against 1000 draws smoothed by 20 pc cm^-3 | `seti.py radio_sky frbdm [record] [--tol 0.5] [--smooth 20] [--draws 1000]` | +| Bursts arriving together from different directions | CHIME/FRB Catalog 1 arrival times at infinite frequency within 1 s for bursts more than 10 deg apart, against uniform arrival | `seti.py radio_sky frbsimul [record] [--dt-s 1] [--sep-deg 10]` | +| Copy bursts from different directions | non-repeating CHIME/FRB Catalog 1 bursts more than 10 deg apart whose width, fluence, scattering and spectral index agree within errors and to 10 per cent, against each property shuffled | `seti.py radio_sky frbcopies [record] [--tol-frac 0.1] [--sep-deg 10] [--shuffles 20]` | +| Bursts masquerading from pulsars | CHIME/FRB Catalog 1 bursts within 1 deg and 5 per cent in dispersion of an ATNF pulsar, against the bursts moved 5 deg in right ascension either way | `seti.py radio_sky frbpsr [record] [--sep-deg 1] [--dm-tol 0.05] [--shifts-deg 5 10]` | +| Bursts from inside the Galaxy | CHIME/FRB Catalog 1, one burst per source, with dispersion below the Galaxy's in both the NE2001 and YMW16 models (the catalogue's excess columns) | `seti.py radio_sky frblocal [record]` | +| Radio from cold white dwarfs | Gentile Fusillo et al. (2021) white dwarfs within 100 pc below 8000 K carried to 1995.0, against NVSS (VIII/65) within 15 arcsec by CDS XMatch, against the white dwarfs moved 2 arcmin | `seti.py radio_sky coldwdradio [record] [--teff-max 8000] [--radius-arcsec 15] [--epoch 1995]` | +| Bursts from Earth's transit zone | CHIME/FRB Catalog 1, one burst per source, within 0.264 deg of the ecliptic, against 2000 random right ascensions at each source's declination | `seti.py radio_sky frbetz [record] [--zone-deg 0.264] [--draws 2000]` | +| Burst dispersions on a ladder | CHIME/FRB Catalog 1, one burst per source; the largest Rayleigh power of dispersion measures over spacings of 5-200 pc cm^-3, against 500 draws from the distribution smoothed by 20 pc cm^-3 | `seti.py radio_sky frbladder [record] [--spacing-pc-cm3 5 200] [--smoothing 20] [--draws 500]` | +| Rhythm in the repeaters | CHIME/FRB Catalog 1 repeaters with five or more bursts (Hashimoto et al. 2022, J/MNRAS/511/1961), sub-bursts at one arrival time counted once; the share of intervals from the first burst that are integer multiples of one period to 2 per cent, over 4000 periods from 10 min to 100 d with the multiples of half a sidereal day left out, against 2000 burst sets drawn on random days at the real bursts' sidereal phases | `seti.py radio_sky frbrhythm [record] [--min-bursts 5] [--tol 0.02] [--draws 2000] [--period-range-d 0.00694 100] [--n-periods 4000]` | +| Gamma-ray bursts from nearby stars | HEASARC swiftgrb positions with XRT errors against the Gaia Catalogue of Nearby Stars within 20 pc carried to each burst's year, inside the larger of 5 arcsec and three XRT sigma, against the bursts moved 1 and 2 deg in four directions | `seti.py highenergy grbstars [record] [--plx-mas 50] [--min-arcsec 5] [--sigma 3] [--shifts-deg 1 2]` | +| X-rays from cold white dwarfs | Gentile Fusillo et al. (2021) white dwarfs within 100 pc below 8000 K against eRASS1's main catalogue by CDS XMatch within three positional errors, against the white dwarfs moved 2 arcmin; each match read for another Gaia star in the error circle, a companion where its parallax agrees | `seti.py highenergy coldwdx [record] [--teff-max 8000] [--pwd 0.75] [--sigma 3] [--shift-arcmin 2]` | +| White dwarfs above the Chandrasekhar mass | Gentile Fusillo et al. (2021) white dwarfs within 100 pc at a white-dwarf probability above 0.75 whose hydrogen- and helium-model masses both exceed 1.40 solar masses at 3 sigma | `seti.py highenergy wdmass [record] [--mass-msun 1.4] [--sigma 3] [--pwd 0.75]` | +| X-rays from cold brown dwarfs | T and Y dwarfs of the Kirkpatrick et al. (2021) 20 pc census with Spitzer astrometry (J/ApJS/253/7), carried to 2020.0 by their proper motions, against eRASS1 within 15 arcsec by CDS XMatch, against the dwarfs moved 2 arcmin | `seti.py highenergy coldbdx [record] [--radius-arcsec 15] [--epoch 2020]` | +| Ultraviolet from cold brown dwarfs | the same T and Y dwarfs carried to 2007.0 against GALEX GUVcat AIS (II/335) within 5 arcsec by CDS XMatch, against the dwarfs moved 2 arcmin | `seti.py highenergy coldbduv [record] [--radius-arcsec 5] [--epoch 2007]` | +| Hard X-rays from the nearest stars | Gaia Catalogue of Nearby Stars objects within 20 pc inside a Swift-BAT 105- or 150-month error circle (30 arcmin over the signal-to-noise, at least 1 arcmin; R95 for the 150-month sources), against the stars moved 1 deg in eight directions; a source's catalogued counterpart read in SIMBAD against the star | `seti.py highenergy nearbat [record] [--plx-mas 50] [--shift-deg 1]` | +| Twelve-micron light at cold brown dwarfs | Kirkpatrick et al. (2021) T and Y dwarfs carried to 2010.5 against AllWISE within 5 arcsec by CDS XMatch for a W3 at S/N 3, against the dwarfs moved 2 arcmin and against the share of field sources of the dwarfs' own W1 and W2 (eight fields of 150 random positions) that carry such a W3 | `seti.py highenergy coldbdw3 [record] [--radius-arcsec 5] [--epoch 2010.5] [--w3-err-max 0.36] [--field-w1 14 18] [--field-w12-min 1.2]` | +| Bursts peaking at the electron's mass | Fermi GBM bursts (HEASARC fermigbrst) with a fluence Band or Comptonised peak energy measured to 10 per cent; the count within 2 per cent of 511 keV against the smooth run of peak energies within 0.3 dex either side | `seti.py highenergy bursts511 [record] [--window 0.02] [--error-max 0.1] [--smooth-dex 0.3]` | +| Gamma-ray bursts repeating at one position | Swift bursts (HEASARC swiftgrb) with XRT positions; pairs within the sum of their position errors plus 5 arcsec against the pairs an isotropic sky gives, hosts read from the catalogue | `seti.py highenergy grbrepeat [record] [--extra-arcsec 5] [--default-err 5]` | +| TeV light at the nearest stars | 1LHAASO point-like sources without an association against Gaia Catalogue of Nearby Stars objects within 20 pc inside each source's position error plus 0.1 deg, against the sources moved 2 deg in eight directions; associated sources counted apart | `seti.py highenergy tevnear [record] [--plx-mas 50] [--extra-deg 0.1] [--shift-deg 2]` | +| Dead stars with living companions | Gaia DR3 binary_masses astrometric and astrometric-spectroscopic binaries whose unseen companion outweighs 1.4 solar masses at its lower bound (flux ratio below 0.05 or none), with Gaia BH1-3; AllWISE within 3 arcsec for W1-W3 above 0.3 mag and eRASS1 within 15 arcsec by CDS XMatch, against the stars moved 2 arcmin; matches read in SIMBAD, for AllWISE's contamination and extension flags, for young objects within 1 arcmin and for the hot dust of emission-line stars in the plane | `seti.py highenergy deadstars [record] [--m2-min 1.4] [--fluxratio-max 0.05] [--w13-min 0.3] [--allwise-arcsec 3] [--erass1-arcsec 15]` | +| Identical black holes merging | GWOSC event list (GWTC-1 to GWTC-5) source-frame component masses with their bounds; the mass difference in combined errors for every merger, and the mass ratio and its error for events whose primary is known to 10 per cent | `seti.py highenergy gwequal [record] [--primary-error-max 0.1] [--ratio-error-max 0.05]` | +| Gamma rays from cold white dwarfs | Gentile Fusillo et al. (2021) white dwarfs within 100 pc below 8000 K inside the 95 per cent ellipse of an unassociated 4FGL-DR4 source, against the white dwarfs moved 1 deg in eight directions; ellipses of associated sources counted apart | `seti.py highenergy coldwdgamma [record] [--teff-max 8000] [--shift-deg 1]` | +| Ultraviolet from the coldest white dwarfs | Gentile Fusillo et al. (2021) white dwarfs within 100 pc below 4500 K carried to 2007.0, against GALEX GUVcat AIS within 5 arcsec by CDS XMatch, against the white dwarfs moved 2 arcmin | `seti.py highenergy coldwduv [record] [--teff-max 4500] [--radius-arcsec 5] [--epoch 2007]` | +| Nearby stars SDSS could not classify | SDSS DR17 primary stellar spectra (SkyServer SpecObj) with redshift warnings or no subclass at S/N above 20, with Gaia DR3 within 2 arcsec and 100 pc by CDS XMatch, read in SIMBAD for white dwarfs and cataclysmic variables, which SDSS's templates cover sparsely | `seti.py composition sdssunknown [record] [--snr 20] [--plx-mas 10] [--sigma 10] [--radius-arcsec 2]` | +| H-alpha emission at quiet Sun-like neighbours | Gaia DR3 ESP-ELS emission-line stars within 100 pc at BP-RP 0.5-1.5, each read for an eRASS1 source within 15 arcsec, Gaia line broadening above 15 km/s, RUWE above 1.4 or a non-single-star solution, a SIMBAD type of a young, active or interacting star, and a place more than 2 mag under the main sequence of its colour | `seti.py composition haquiet [record] [--plx-mas 10] [--colour 0.5 1.5] [--radius-arcsec 15] [--vbroad-kms 15] [--ruwe-max 1.4] [--under-mag 2]` | +| Przybylski's star re-measured | HD 101065's six highest-S/N HARPS and four highest-S/N UVES spectra from the ESO archive, each instrument's envelope-normalised median stack in the star's rest frame read at the Tc I, Pm II, Pa II, Pu II, Am II and Cm II lines for the weighted depth against 2000 random line sets of the same size from the same stack; a set deeper than chance read line by line in NIST's list of the star's own species within 0.08 A and scored again without the blended lines | `seti.py composition przybylski [record] [--n-harps 6] [--n-uves 4] [--draws 2000] [--blend-tol-a 0.08]` | +| Nearby dwarfs APOGEE could not fit | SDSS DR17 APOGEE aspcapStar joined to apogeeStar on SkyServer: Gaia EDR3 parallax above 10 mas, S/N above 100, Doppler-fit 4000-6500 K and log g above 4.0, ASPCAP STAR_BAD; each read for MULTIPLE_SUSPECT, cross-correlation components, visit scatter, rotation, calibration-range bits, its SIMBAD type and Gaia's RUWE and radial-velocity amplitude | `seti.py composition apogeebad [record] [--plx-mas 10] [--snr 100] [--teff 4000 6500] [--logg-min 4] [--vsini-kms 20]` | +| Nearby stars LAMOST labelled unknown | LAMOST DR10 general-catalogue spectra of class Unknown at r-band S/N above 50, with Gaia DR3 within 100 pc | `seti.py composition lamostunknown [record] [--snr 50] [--plx-mas 10]` | +| Bright nearby stars DESI fitted badly | DESI DR1 zpix stellar redshifts with nonzero ZWARN joined to the Milky Way Survey's Gaia identifiers, within 100 pc at G below 16 | `seti.py composition desiunknown [record] [--plx-mas 10] [--g-max 16]` | +| Zinc far above iron | GALAH DR4 clean dwarfs at [Fe/H] -0.3 to +0.3 with clean zinc above [Zn/Fe] +0.8, read for the blue arm's S/N | `seti.py composition zinc [record] [--zn-fe 0.8] [--feh-range -0.3 0.3] [--snr-min 25]` | +| Dwarfs that look mined | GALAH DR4 clean dwarfs at [Fe/H] above -0.3 with [Si/Fe] and [Al/Fe] both below -0.4 | `seti.py composition mined [record] [--si-fe -0.4] [--al-fe -0.4] [--feh-min -0.3]` | +| Interstellar bands within 50 pc | GALAH DR4 5780 A band fits within 50 pc above five times their scatter and 20 mA, read for temperature, against the band at 0.5-1 kpc | `seti.py composition dibnear [record] [--plx-mas 20] [--sigma 5] [--ew-a 0.02] [--far-plx-mas 1 2]` | +| Stars spinning faster than they hold together | GALAH DR4 clean dwarfs' v sin i against sqrt(GM/R), with GALAH's mass and the radius from luminosity and temperature | `seti.py composition spinbreak [record]` | +| Line-only X-ray sources | the eROSITA DR2 eRASS:3 main catalogue (VizieR J/A+A/712/A171) rates and counts in 0.2-0.5, 0.5-1, 1-2 and 2-5 keV for point sources above 80 counts; the fraction in each band with its errors, a candidate holding 85 per cent or more in 0.5-1 or 1-2 keV at 3 sigma with every other band below 5 per cent; soft-only and hard-only sources counted as the natural supersoft and absorbed classes; SIMBAD within 18 arcsec of each middle-band source | `seti.py highenergy lineonly analyse\|record` | +| Comets on Earth's years | periodic comets of the Small-Body Database with periods below 200 years; a period within 0.002 years of a whole number, against the half-year windows and uniform fractions, each read for its condition code, arc and period uncertainty | `seti.py solar_system yearcomets [record] [--tol-y 0.002] [--p-max-y 200] [--condition-max 6]` | +| Orbits tangent to Earth's | asteroids and comets of the Small-Body Database with perihelia or aphelia within 0.01 au of 1 au; those within 0.0005 au of 1.0000 au against the band's density and the control windows at 0.995 and 1.005 au, each read for its condition code, arc and uncertainty | `seti.py solar_system tangent [record] [--tol-au 0.0005] [--band-au 0.01] [--condition-max 6]` | +| Planets on perfect circles | planets of the composite table with periods beyond 30 days and a measured eccentricity; an upper eccentricity below 0.002, with fixed values and limits set aside | `seti.py transits circles [record] [--p-min-d 30] [--tol 0.002]` | +| Asteroid spins on the clock | secure LCDB rotation periods quoted to three decimals between 2 and 48 hours; a period within 0.02 per cent of a whole number of hours, against the half-hour windows and uniform fractions, the day's harmonics marked as aliases | `seti.py solar_system hourspins [record] [--tol-rel 0.0002] [--p-min-h 2] [--p-max-h 48]` | +| Planets on whole days | planets of the composite table with periods of 1.5-400 days known to better than 0.00002 days; a period within 0.00002 days of a whole number, against the half-day windows and uniform fractions | `seti.py transits wholedays [record] [--tol-d 0.00002] [--p-min-d 1.5] [--p-max-d 400]` | +| Light at 12 um alone | Gaia Catalogue of Nearby Stars objects with clean W1, W3 and W4; W1-W3 five widths and five errors above the single-star locus at their BP-RP while W1-W4 stays within two widths, against the stars as far below; AllWISE flags, faint W3, a second Gaia source in the beam and a W4 excess at three errors as vets | `seti.py infrared w3only [record] [--widths 5] [--errors 5] [--w4-widths 2] [--colour-min 0.5] [--colour-max 2.5] [--w1-min 8] [--w1-max 14] [--w3-faint 11] [--beam-arcsec 10]` | +| Symmetric flares | TESS flares of Yang et al. (2023) lasting 40 minutes or more; a rise from start to peak as long as the decay within 10 per cent of the duration, or longer, counted by duration and by the star's flare count | `seti.py flashes symflares [record] [--dur-min-d 0.028] [--sym-frac 0.1]` | +| Pulsars ticking in whole hertz | ATNF pulsars with periods quoted to eight digits or more; a spin frequency within 0.00001 Hz of a whole hertz or a period within 0.00001 ms of a whole millisecond, against the half-integer windows and uniform fractions, with rounded periods counted apart | `seti.py radio_sky wholehz [record] [--tol 0.00001] [--digits-min 8]` | +| Pulsars on the hydrogen line's decimals | ATNF pulsars with periods quoted to eight digits or more; a spin frequency within one part in 100,000 of the hydrogen line's frequency scaled by a power of ten, against the half-decade windows and uniform logarithmic fractions | `seti.py radio_sky hydrogenhz [record] [--tol-rel 0.00001] [--digits-min 8]` | +| Stars that stepped a magnitude between Gaia releases | Gaia DR3 sources within 100 pc whose DR2 counterpart within 0.1 arcsec differs by more than a magnitude in mean G; transit counts, variability flags, SIMBAD types, DR2's saturation above G 4 and the missing colours of sources in a bright neighbour's light as vets | `seti.py dimming releasestep [record] [--dmag 1.0] [--plx-min 10] [--match-mas 100] [--min-obs 20] [--bright-g 4]` | +| Lurkers at Earth's Lagrange points | asteroids of the Small-Body Database within 0.01 au of Earth's semi-major axis with e below 0.3 and i below 30 deg; the mean longitude at epoch relative to Earth's, counted within 20 deg of L4 and L5 against the rest of the ring, each read for its arc and condition code | `seti.py solar_system lagrange [record] [--da-au 0.01] [--e-max 0.3] [--i-max-deg 30] [--half-width-deg 20]` | +| Watchers of Jupiter's transits | Gaia Catalogue of Nearby Stars objects within a Sun's angular radius at Jupiter's distance of Jupiter's orbital plane, matched to GALEX within 5 arcsec at 2007.0, against the stars 1-5 deg from the plane and the band moved 2 arcmin; any planet's zone from its orbit | `seti.py neighbourhood watchers [record] [--planet jupiter] [--catalogue II/335/galex_ais] [--radius-arcsec 5] [--epoch 2007]` | +| Light at 2 um alone | Gaia Catalogue of Nearby Stars objects with clean J, Ks and W1; J-Ks five widths and five errors above the single-star locus at their BP-RP while J-W1 stays within two widths, against the stars as far below; 2MASS flags and SIMBAD as vets | `seti.py infrared ksexcess [record] [--widths 5] [--errors 5] [--w1-widths 2] [--colour-min 0.5] [--colour-max 3.0]` | +| Planets in step with their star's spin | planets of the composite table whose host carries a rotation period; an orbital period at a whole multiple of 2-20 of the rotation within 0.5 per cent, against the half-integer windows and uniform fractions, each with the source of the rotation period | `seti.py transits spinsteps [record] [--tol-rel 0.005] [--n-max 20]` | +| Nearby light bluer than any star | Gaia Catalogue of Nearby Stars objects with BP-RP below -0.65; the BP/RP flux excess, the image-peak and RUWE flags, the white-dwarf probability and SIMBAD's type as vets | `seti.py ultraviolet bluest [record] [--colour-max -0.65] [--excess-max 0.2]` | +| Comets pushed toward the Sun | comets and asteroids of the Small-Body Database with a negative radial non-gravitational term A1 at three sigma; the arc, condition code, transverse term and asymmetric outgassing parameter as vets | `seti.py solar_system sunward [record] [--sigma 3]` | +| Galaxies warm without star formation | quiescent HECATE galaxies within 150 Mpc with GSWLC masses and rates; a 22 um luminosity above a tenth of a solar luminosity per solar mass and within a factor of three of the far-infrared, against the quiescent population, with the nuclear-activity flags and the inclination as vets | `seti.py infrared warmgalaxies [record] [--d-max-mpc 150] [--ssfr-max -11] [--heat-min -1.0] [--warm-min -0.5] [--edge-on-deg 70]` | +| Stars that dimmed since Hipparcos | Hipparcos stars within 100 pc with a Gaia DR3 best neighbour; G - Hp against the running median in BP-RP, a step of 0.5 mag either way, with Hipparcos's scatter and variability, Gaia's variability flag and RUWE, SIMBAD's type, pair names and Gaia neighbours as vets | `seti.py dimming hipdim [record] [--dmag 0.5] [--plx-min 10] [--bright-g 3] [--pair-arcsec 10]` | +| Asteroids on polar orbits | asteroids and comets of the Small-Body Database on bound orbits within 3 deg of 90 deg inclination; those within 0.5 deg of polar against a flat density and the bands either side, each read for its arc and condition code | `seti.py solar_system polar [record] [--half-width-deg 0.5] [--band-deg 3] [--condition-max 6]` | +| Stars enriched evenly in every heavy element | GALAH DR4 stars with all eleven neutron-capture elements clean; every [X/Fe] above +0.4 dex with a spread below 0.1 dex, against the stars depleted as evenly and the sample's own spread | `seti.py composition evenheavy [record] [--mean-min 0.4] [--spread-max 0.1]` | +| Transits longer than the star allows | transiting planets of the composite table; a duration beyond 1.25 times the central circular maximum at the catalogued geometry, with the duration error, the sources of duration and radius and the eccentricity as vets | `seti.py transits longtransits [record] [--excess 1.25] [--err-max 0.2]` | +| Gamma rays peaked like a line | 4FGL sources above 10 sigma; a log-parabola beta above 0.8 at a curvature significance above 4, against the catalogue's curvatures, with the source class and the analysis flags as vets | `seti.py highenergy gammapeak [record] [--sig-min 10] [--beta-min 0.8] [--curve-min 4]` | +| Nearby stars flickering by the minute | Gaia DR3 short-timescale variables within 100 pc with characteristic frequencies above 48 cycles a day; the white-dwarf locus, SIMBAD's type, the image and RUWE flags and the flare stars' colour as vets | `seti.py flashes flicker [record] [--plx-min 10] [--freq-min 48] [--red-colour 2.0]` | +| Infrared dimming next door | Gaia Catalogue of Nearby Stars objects within 20 pc; the AllWISE profile W1 at 2010.5 against CatWISE2020's at 2015.0, a change of 0.3 mag either way, with variability flags, RUWE, SIMBAD's type, the WISE flags, CatWISE's saturation, the match separation and the proper motion as vets | `seti.py infrared irdim [record] [--plx-min 50] [--dmag 0.3] [--radius-arcsec 3] [--saturation 8.5] [--match-arcsec 1.5] [--fast-mas-yr 1000]` | +| Systems turned face-on to us | non-transiting planets of the composite table with a measured inclination; an orbit within 5 deg of either pole against the share random orientations give, with the inclination error and method as vets | `seti.py transits faceon [record] [--i-max-deg 5] [--err-max-deg 5]` | +| Masers at rest in the universe's frame | the 6.7 GHz methanol masers of Pestalozzi et al. (2005); each peak velocity carried to the microwave background's frame, a maser within 2 km/s of rest there against the velocities' density within 30 km/s | `seti.py radio_sky maserrest [record] [--tol-kms 2] [--window-kms 30]` | +| Waste heat in HI-dark galaxies | the ALFALFA HI-dark galaxies of Leisman et al. (2017); an AllWISE source at 5 sigma in W3 or W4 within 10 arcsec of the counterpart, against the positions moved 2 arcmin, with the AGN colour and a Gaia star as vets | `seti.py infrared hidark [record] [--radius-arcsec 10] [--snr 5] [--w1w2 0.5]` | +| Missing bolometric flux, dwarfs | JMMC diameters of dwarfs within 100 pc with Gaia parallaxes, GSP-Phot temperatures and FLAME luminosities; the luminosity the surface and temperature give against Gaia's, a 20 per cent deficit at 3 sigma against the mirror excess, SIMBAD's type as the vet | `seti.py infrared missingdwarfs [record] [--deficit 0.2] [--sigma 3] [--logg-min 4] [--plx-min 10] [--radius-arcsec 5]` | +| Circles between the giant planets | asteroids and comets of the Small-Body Database with a 5.5-30 au and perihelia beyond Jupiter; an eccentricity below 0.02 against the region's own, with the arc, condition code and planetary resonances as vets | `seti.py solar_system giantcircles [record] [--a-min-au 5.5] [--a-max-au 30] [--e-max 0.02] [--condition-max 6]` | +| Cerium without carbon in dwarfs | unevolved metal-rich APOGEE dwarfs with unflagged carbon and cerium; [Ce/Fe] above +0.5 dex with [C/Fe] at or below zero, with Gaia binarity, the Teff edge and rotation as vets | `seti.py composition ceriumonly [record] [--ce-min 0.5] [--c-max 0.0]` | +| Refuges at white dwarfs | planets of the composite table at white-dwarf hosts; each against the radius the giant progenitor reached, with the discovery method and the published account of its arrival as the vet | `seti.py transits wdrefuge [record] [--engulf-au 1.0]` | +| Variables Gaia could not classify next door | Gaia DR3 variables within 50 pc with a G range above 0.3 mag and no class from the DR3 classifier; SIMBAD's type, RUWE and image flags, the white-dwarf locus and the flare stars' colour as vets | `seti.py flashes unclassified [record] [--plx-min 20] [--range-min 0.3] [--red-colour 2.0]` | +| Asteroids in the ecliptic to the hundredth of a degree | asteroids and comets of the Small-Body Database within 2 deg of the ecliptic; an inclination below 0.02 deg against the band's own density, with the arc and condition code as vets | `seti.py solar_system ecliptic [record] [--i-max-deg 0.02] [--band-deg 2] [--condition-max 6]` | +| White dwarfs varying outside the pulsation strips | Gaia DR3 variables within 100 pc on the white-dwarf locus with a G range above 0.1 mag, matched to the Gentile Fusillo catalogue; those outside the pulsation strips, with SIMBAD's types including the magnetic ones, the BP/RP flux excess and RUWE as vets | `seti.py flashes wdvary [record] [--plx-min 10] [--range-min 0.1] [--pwd-min 0.75]` | +| Binaries on perfect circles | spectroscopic binaries of the SB9 catalogue with periods beyond 100 days and a measured eccentricity; an upper eccentricity below 0.002, with evolved components and low orbit grades as vets | `seti.py neighbourhood roundbinaries [record] [--p-min-d 100] [--tol 0.002] [--grade-min 3]` | +| Copy eclipsing binaries | Kepler eclipsing binaries of Prsa et al. (2011); pairs with periods within the catalogue's quantum of 0.00001 d, against the periods' own density and the blends within 2 arcmin, and among them the pairs alike in temperature ratio and summed radii | `seti.py flashes copyebs [record] [--tol-d 0.00001] [--like 0.1] [--blend-arcmin 2]` | +| Slow pulsars older than the universe | ATNF pulsars slower than 0.1 s; an intrinsic spin-down age beyond 15 Gyr, with the derivative's error and the binary as vets | `seti.py radio_sky psrages [record] [--p-min-s 0.1] [--age-min-gyr 15] [--sigma 3]` | +| Stars leaving the nearest clusters too fast | members of the coherent open clusters within 200 pc with Gaia radial velocities; a space velocity more than 10 km/s from the cluster's, with binarity, membership probability and the hot stars' velocity errors as vets | `seti.py neighbourhood escapees [record] [--plx-min 5] [--v-min-kms 10] [--prob-min 0.5] [--rv-err-max 2] [--min-members 20] [--coherent-kms 3] [--prob-firm 0.8]` | +| Transits deeper than the planet | transiting planets of the composite table; a depth beyond 1.5 times the radius ratio squared, with the depth error and the sources of depth and ratio as vets | `seti.py transits deeptransits [record] [--excess 1.5] [--err-max 0.2]` | +| Gamma rays with fast radio bursts | Fermi GBM bursts against CHIME/FRB Catalog 1; a pair within 100 s overlapping within the gamma-ray error circle plus a degree, against the chance rate of the two catalogues | `seti.py highenergy grbfrb [record] [--window-s 100] [--extra-deg 1]` | +| Spinning stars without coronae | Gaia DR3 rotators within 20 pc with periods below 5 days in the eROSITA-DE sky; a star without an eRASS1 source within 15 arcsec at 2020.0, with the survey's limit for the faintest dwarfs as the vet | `seti.py highenergy nocorona [record] [--plx-min 50] [--period-max-d 5] [--radius-arcsec 15]` | +| Neutrinos with gamma-ray bursts | IceCube ten-year events above 10 TeV against Fermi GBM bursts; a neutrino within 100 s inside the two error circles plus a degree, against the chance rate from the event list and the circles | `seti.py highenergy nugrb [record] [--energy-min-gev 10000] [--window-s 100] [--extra-deg 1]` | +| Warm stars in the Hyades | Hyades members of Hunt and Reffert (2023) with clean W1 and W3; W1-W3 five widths above the cluster's own locus, the share against the field's, with AllWISE flags and SIMBAD as vets; any cluster of the catalogue may be named | `seti.py infrared hyadeswarm [record] [--cluster Melotte_25] [--prob-min 0.5] [--widths 5] [--errors 5] [--field-share 0.0077] [--w3-err-max 0.2]` | +| Resonant pairs without timing variations | Kepler planets in pairs within 2 per cent of 2:1 or 3:2; the timing scatter of each against the variation its neighbour's radius-estimated mass demands, a quiet planet below a fifth of it, with the estimated masses as the vet | `seti.py transits ttvabsent [record] [--delta-max 0.02] [--quiet-ratio 0.2] [--pval-min 0.5]` | +| Light at 3.4 um alone | Gaia Catalogue of Nearby Stars objects with clean Ks, W1 and W2; Ks-W1 five widths and five errors above the single-star locus while Ks-W2 stays within two widths, against the stars as far below; AllWISE's plain W1, its flags, 2MASS's flags and SIMBAD as vets | `seti.py infrared w1only [record] [--widths 5] [--errors 5] [--w2-widths 2] [--colour-min 0.5] [--colour-max 2.5]` | +| Dark companions on perfect circles | Gaia DR3 astrometric orbits within 200 pc with periods beyond 200 days; an upper eccentricity below 0.005 against the solutions' own, with the significance as the vet | `seti.py neighbourhood darkcircles [record] [--plx-min 5] [--p-min-d 200] [--tol 0.005] [--sig-min 20]` | +| Planets lapping their star's spin in whole steps | planets of the composite table whose host carries a rotation period; a rotation period at a whole multiple of 2-20 of the orbital period within 0.5 per cent, against the half-integer windows and uniform fractions, each with the source of the rotation period | `seti.py transits spinlaps [record] [--tol-rel 0.005] [--n-max 20]` | +| Radio from cold brown dwarfs | the T and Y dwarfs of the 20 pc census against VLASS epoch-1 components within 5 arcsec at 2019.0, with the positions moved 2 arcmin as the null | `seti.py radio_sky coldbdradio [record] [--radius-arcsec 5] [--epoch 2019.0]` | +| Methane in a star's light | GCNS stars at BP-RP 0.5-3.0 fainter than W1 8 whose W1-W2 exceeds +0.8, the T-dwarf methane colour no warm photosphere shows; AllWISE flags and plain magnitudes, Gaia neighbours in the beam and SIMBAD types | `seti.py infrared methane [record] [--w1w2-min 0.8] [--w1-min 8] [--colour-min 0.5] [--colour-max 3.0] [--beam-arcsec 8]` | +| Neutrinos from Earth's transit zone | IceCube point-source events above 10 TeV within 0.262 deg of the ecliptic against the twenty equal strips beside the zone, which share its declinations and acceptance, at 10 and 100 TeV | `seti.py highenergy nuetz [record] [--energy-min-gev 10000] [--half-width-deg 0.262] [--band-deg 5.5] [--high-gev 100000]` | +| Gamma-ray bursts from Earth's transit zone | Swift and well-localised GBM bursts within 0.262 deg of the ecliptic against the twenty equal strips beside the zone | `seti.py highenergy grbetz [record] [--err-max-deg 1] [--half-width-deg 0.262] [--band-deg 5.5]` | +| Pulsars in Earth's transit zone | ATNF pulsars within 0.262 deg of the ecliptic against the twenty equal strips beside the zone, all pulsars and millisecond pulsars | `seti.py radio_sky psretz [record] [--half-width-deg 0.262] [--band-deg 5.5]` | +| Asteroids pushed harder than sunlight allows | SBDB asteroids whose transverse term at 3 sigma exceeds the Yarkovsky ceiling for their size, Bennu's term scaled by diameter with a margin; read against the published dark comets, imaged activity, our own launches and the arc | `seti.py solar_system pushed [record] [--sigma 3] [--margin 2] [--albedo 0.14] [--arc-min-d 1000]` | +| Emission lines in asteroid reflectance | Gaia DR3 asteroid reflectance spectra, an interior band standing a jump and five combined errors above the mean of its neighbours, read for the bands' flags and the number of spectra behind the mean | `seti.py solar_system reflspike [record] [--jump 0.3] [--sigma 5] [--edge-bands 2] [--floor 1.5]` | +| Lines in transmission spectra | Exoplanet Archive transmission spectra, a bin standing away from the mean of its neighbours in either sign, read against the atmospheric and chromospheric lines and the bin's width | `seti.py transits translines [record] [--sigma 4] [--frac 0.02] [--wide-um 0.05] [--min-bins 5]` | +| Open clusters orbiting backwards | Hunt and Reffert clusters with good parallaxes and member radial velocities, their Galactic angular momenta against the Sun's and their vertical speeds, read by catalogue type | `seti.py neighbourhood retroclusters [record] [--plx-sigma 10] [--rv-members 3] [--rv-err 10] [--vz-max 150]` | +| Pulsars faster than a kick can throw | ATNF pulsars with proper motions and distances, transverse speeds at the lower bound above the fastest supernova kick, read for the distance's provenance | `seti.py radio_sky psrkick [record] [--v-max 2000] [--sigma 3]` | +| Asteroids blacker than any surface | SBDB asteroids with albedos below the darkest natural surfaces, checked against AKARI's albedos with errors | `seti.py solar_system blackest [record] [--albedo 0.02] [--sigma 3]` | +| Two neutrinos from one spot | IceCube events above 100 TeV paired within an hour and their summed errors, against time-shuffled draws of the same events | `seti.py highenergy nudoublets [record] [--energy-min-gev 100000] [--window-h 1] [--extra-deg 0.5] [--draws 20]` | +| Hyperbolic excess beyond planetary perturbation | SBDB bodies with e above 1 whose speed at infinity at the eccentricity's lower bound exceeds what a recorded planetary encounter has given a comet, read against the interstellar objects, recorded encounters, fragments and arcs | `seti.py solar_system hyperbolic [record] [--vinf-min-kms 4] [--sigma 3] [--arc-min-d 60]` | +| Copy gamma-ray bursts | GBM bursts from different directions alike in duration, fluence and spectrum, against the pairs the rescaled durations give | `seti.py highenergy copygrbs [record] [--tol-time 0.02] [--tol-flux 0.02] [--tol-shape 0.05] [--sep-min-deg 10]` | +| Gamma-ray bursts arriving together from different directions | GBM bursts within seconds of one another from unrelated directions, against the count Poisson arrivals give | `seti.py highenergy grbtogether [record] [--window-s 10] [--extra-deg 5]` | +| Copy comets | SBDB comet pairs on one orbit under the Southworth-Hawkins criterion, read against fragments, the sungrazing families, the published pairs and the arcs | `seti.py solar_system copycomets [record] [--d-max 0.05] [--family-q 0.1] [--arc-min-d 30]` | +| Stars that jumped between 2MASS and Gaia | Gaia stars within 25 pc carried back to their 2MASS night with proper motion and parallax, against the 2MASS position, read for saturation, quality flags, image flags and blends | `seti.py neighbourhood jumped [record] [--plx-min 40] [--offset-arcsec 1] [--ks-sat 4]` | +| Lurkers at Jupiter's far Lagrange point | SBDB co-orbital bodies of Jupiter by mean longitude from the planet, the count at the unstable L3 point against the Trojan swarms, read for class and arc | `seti.py solar_system jupl3 [record] [--half-width-deg 20] [--a-tol 0.35] [--e-max 0.3]` | +| Waste heat at room temperature | GCNS stars with excess at both 12 and 22 um, the excess colour temperature from the flux ratio, the count near 300 K against the temperature bins beside it | `seti.py infrared roomheat [record] [--widths 5] [--errors 5] [--t-lo 280] [--t-hi 320] [--colour-min 0.5] [--colour-max 2.5]` | +| Warm stars in Jupiter's transit zone | The warm-star test on the band that sees Jupiter transit the Sun, a planet's orbital plane in place of the ecliptic | `seti.py infrared etzwarm record --planet jupiter` | +| Two pulsars at one spot | ATNF pulsar pairs within 2 arcmin outside clusters, against mirrored declinations, read for binding and dispersion measure | `seti.py radio_sky psrpairs [record] [--radius-arcmin 2] [--dm-tol 0.1]` | +| Glitches on a schedule | Jodrell Bank glitches, the interval scatter of each pulsar with five or more against exponential draws, read against the published quasi-periodic glitchers and the glitch sizes | `seti.py radio_sky glitchsched [record] [--min-glitches 5] [--cv-max 0.3] [--draws 4000]` | +| Warm stars in the nearest clusters | Every Hunt and Reffert cluster within 250 pc with 100 or more members, the share of members with 12 um excess against the field's, read against flags, SIMBAD types and the cluster's age | `seti.py infrared clusterswarm [record] [--dist-max-pc 250] [--members-min 100] [--prob-min 0.5] [--widths 5] [--errors 5] [--field-share 0.0077] [--w3-err-max 0.2] [--young-logage 7.5]` | +| Waste heat at the oldest Sun-like neighbours | GALAH DR4 Sun-like dwarfs with ages, the 12 um excess share of the oldest tenth against the rest | `seti.py infrared oldsunlike [record] [--plx-min 5] [--teff-min 5300] [--teff-max 6200] [--logg-min 4] [--old-fraction 0.1] [--widths 5] [--errors 5] [--w3-err-max 0.2]` | +| Planets on polar orbits | Exoplanet Archive projected obliquities, the count near 90 deg against a uniform distribution and the aligned count | `seti.py transits polar [record] [--half-width-deg 15] [--err-max-deg 15]` | +| Neighbours Gaia's classifier calls galaxies | Gaia sources within 100 pc the discrete source classifier calls galaxies or quasars, read for blends, colour, astrometry and SIMBAD type | `seti.py neighbourhood dscgalaxies [record] [--plx-min 10] [--plx-sigma 10] [--prob-min 0.5]` | +| Stars that changed velocity between GALAH and Gaia | GALAH DR4 against Gaia DR3 radial velocities, stars apart by tens of km/s, read for companions, misidentification, Gaia's transit count and a third epoch | `seti.py composition rvjump [record] [--jump-kms 30] [--err-max-kms 2] [--vsini-max 50] [--teff-mismatch-k 600] [--transits-min 5] [--third-kms 10]` | +| Europium far above iron in dwarfs | GALAH DR4 dwarfs with r-process enrichment beyond the halo's rarest stars, read for metallicity, companions and s-process patterns | `seti.py composition europium [record] [--eu-min 1.0] [--err-max 0.2] [--snr-min 40] [--logg-min 4] [--metal-poor -1.0] [--ba-s 0.5]` | +| Zirconium alone | GALAH DR4 dwarfs with zirconium raised while its s-process neighbours are not, read for companions and the temperature range of the lines | `seti.py composition zirconium [record] [--zr-min 0.8] [--others-max 0.3] [--err-max 0.15] [--snr-min 40] [--logg-min 4] [--teff-min 5000] [--teff-max 6500]` | +| Lines in dayside spectra | Exoplanet Archive eclipse spectra, a bin standing away from its neighbours in either sign, read against bin width, null entries, detector edges and pulsating hosts | `seti.py transits daylines [record] [--sigma 5] [--frac 0.1] [--wide-um 0.05] [--min-bins 5] [--edge-frac 0.1]` | +| Bodies aimed at Earth | SBDB near-Earth asteroids with well-determined orbits whose intersection distance with Earth lies within 15,000 km, against the uniform run of small intersection distances | `seti.py solar_system aimed [record] [--moid-au 0.0001] [--arc-min-d 365]` | +| Bodies parked in the Kirkwood gaps | SBDB numbered asteroids at the centres of the 3:1, 5:2 and 2:1 gaps against the density beside the gaps | `seti.py solar_system kirkwood [record] [--half-au 0.002] [--e-max 0.1] [--arc-min-d 7305]` | +| Masers in Earth's transit zone | Methanol masers within 0.262 deg of the ecliptic against the twenty equal strips beside the zone | `seti.py radio_sky maseretz [record] [--half-width-deg 0.262] [--band-deg 5.5]` | +| Circles beyond Neptune | SBDB trans-Neptunian objects with orbits rounder than the cold belt's own at their upper eccentricity bound, against the Rayleigh rise near zero | `seti.py solar_system tnocircles [record] [--a-min 40] [--e-max 0.005] [--sigma 3] [--arc-min-d 3652]` | +| Gamma-ray sources that moved between catalogues | Fermi sources with one association in 3FGL and 4FGL-DR4 whose positions disagree beyond their combined errors, read for extension and the Galactic plane | `seti.py highenergy fermimoved [record] [--factor 2] [--plane-deg 2]` | +| Bursts from the nearest galaxies | CHIME bursts inside the radii of the large galaxies within 10 Mpc, against the local burst density | `seti.py highenergy frbgalaxies [record] [--loc-deg 0.5] [--annulus-deg 10]` | +| Gamma-ray bursts from the nearest galaxies | Swift and well-localised GBM bursts inside the radii of the large galaxies within 10 Mpc, against the local burst density and the published magnetar flares | `seti.py highenergy grbgalaxies [record] [--err-max-deg 1] [--annulus-deg 10]` | +| Bodies at the Sun's focus | SBDB bodies whose perihelia lie beyond 100 au, where a receiver at the Sun's gravitational focus would stay | `seti.py solar_system sunfocus [record] [--q-min-au 100] [--list-q-au 60]` | +| Stars that changed colour since Hipparcos | Hipparcos B-V against Gaia BP-RP through the sample's own run, outliers read for variability, binarity, saturation and the spectral class | `seti.py dimming colourchange [record] [--widths 5] [--min-mag 0.2] [--bv-min -0.3] [--bv-max 2.0] [--g-sat 6] [--e-bv-max 0.03] [--slope 2] [--class-tol 0.45]` | +| Eclipsing binaries on whole days | Kepler eclipsing binaries with periods on whole days, free of the ground's day aliases, against the periods' density | `seti.py flashes ebwholedays [record] [--tol-d 0.0002] [--p-max-d 50]` | +| Retrograde co-orbitals of the giant planets | SBDB bodies sharing a giant planet's semi-major axis on retrograde orbits of modest eccentricity, read against the published cases and the arcs | `seti.py solar_system retroco [record] [--a-tol 0.05] [--i-min 90] [--e-max 0.5] [--arc-min-d 365]` | +| Radio sources that switched off | Compact NVSS sources of 1995 absent from the VLASS quick-look components of 2019, read against SIMBAD, bright neighbours, RACS-low and the catalogue's holes | `seti.py radio_sky switchoff [record] [--flux-min-mjy 100] [--major-max-arcsec 25] [--radius-arcsec 20] [--dec-min -40] [--hole-deg 0.25] [--b-min 10] [--bright-jy 5] [--bright-deg 0.5] [--racs-dec-max 41]` | +| Bodies pushed out of their orbital planes | SBDB bodies whose normal non-gravitational term rivals the radial, read against jets, dark comets and arcs | `seti.py solar_system outofplane [record] [--sigma 3] [--ratio-min 0.5] [--arc-min-d 1000]` | +| Gamma rays harder than any shock | 4FGL sources whose photon index is harder than any accelerator gives, read against their associations and extension | `seti.py highenergy hardgamma [record] [--index-max 1.3] [--sig-min 10]` | +| Stars whose distance changed since Hipparcos | Hipparcos against Gaia parallaxes with scaled errors, outliers read for misidentification, binarity, solution quality and the Gaussian tail | `seti.py neighbourhood receded [record] [--sigma 5] [--min-mas 2] [--g-sat 6] [--f2-max 3] [--match-mag 2]` | +| Lithium above the meteoritic | GALAH DR4 dwarfs with more lithium than any birth cloud or engulfed planet gives, read for the line's temperature range and companions | `seti.py composition limeteoritic [record] [--li-min 4.3] [--err-max 0.15] [--snr-min 40] [--logg-min 4] [--teff-max 6500] [--engulf-min 3.6]` | +| Gamma-ray flares from the nearest stars | FAVA flaring sources against stars within 20 pc, with shifted positions as the null and the sources' own counterparts | `seti.py highenergy gammaflares [record] [--plx-min 50] [--extra-deg 0.1]` | +| Surfaces bluer than any asteroid class | Gaia asteroid reflectance slopes steeper to the blue than the B types, read for the spectra behind each mean | `seti.py solar_system bluesurfaces [record] [--slope-max -15] [--sigma 3] [--min-bands 6]` | +| Stars whose infrared changed since 2MASS | 2MASS Ks against Gaia G and BP-RP through the sample's own run, outliers read for blends in the 2MASS beam, stellar types, variability and binarity | `seti.py dimming irchanged [record] [--widths 5] [--min-mag 0.3] [--g-max 15] [--ks-sat 4] [--beam-arcsec 6]` | +| Rotation periods on whole days in TESS | TESS rotation periods on whole days, free of the ground's aliases, against the periods' density and the half-day windows | `seti.py flashes tesswholedays [record] [--tol-d 0.005] [--p-max-d 13] [--err-max-d 0.005]` | +| Carbon stars on the main sequence next door | Gaia's gold-sample carbon stars within 1 kpc that sit on the main sequence by absolute magnitude, read for companions | `seti.py composition carbondwarfs [record] [--plx-min 1] [--plx-sigma 5] [--mg-min 4]` | +| Eclipsing twins to a part in a thousand | Kepler eclipsing binaries whose fitted temperature ratio is one to 0.001, against the ratios' density and the fit's boundary | `seti.py flashes ebtwins [record] [--tol 0.001] [--band 0.05]` | +| Stars WISE could not see | Nearby stars absent from AllWISE at their 2010.5 positions, read for saturation, blends, bright neighbours' halos, astrometry, SIMBAD, unWISE's coadds and the Galactic plane | `seti.py infrared wisemissing [record] [--g-max 15] [--radius-arcsec 3] [--beam-arcsec 10] [--w1-sat 8.5] [--halo-arcsec 60] [--halo-mag 2] [--unwise-epoch 2015.4] [--glare-arcsec 180] [--glare-g 4] [--plane-deg 10] [--far-glare-arcsec 600] [--far-glare-g 3]` | +| Launch provenance of light bodies | SBDB bodies whose radial non-gravitational term would need a foam's area-to-mass ratio from sunlight alone, read against our launches, dark comets, outgassing and arcs | `seti.py solar_system lightbodies [record] [--sigma 3] [--am-min 0.1] [--arc-min-d 30]` | +| VASCO transients and the geosynchronous belt | the declinations of the POSS-I transient candidates against the band of the geosynchronous belt seen from Palomar, counted against the band's share of the sky the lists span | `seti.py flashes vascobelt record` | +| Warm dust in globular clusters | AllWISE sources red in W1-W3 within each Harris cluster's half-light radius against the annulus from three to five of them, Poisson; an excess is read for its warm sources' brightness against the cluster's own giants | `seti.py infrared gcdust record [--colour-min 1.0] [--w3-err-max 0.1]` | +| Single hot subdwarfs in the thin disc | the known hot subdwarfs with a Gaia parallax, motion and radial velocity, their speed against the local standard of rest, the singles by class, RUWE, the non-single-star flag and colour, and the thin-disc share of the singles against the binaries' | `seti.py composition singlesd record [--plx-sigma 5] [--v-lsr-max 50] [--bp-rp-max -0.25]` | +| Sky clustering of our residues | vetted pairs of the store's Gaia stars within 1, 3 and 10 deg as a share of all pairs, against draws in which each run marks as many of its own targets at random | `seti.py neighbourhood residueclustering record [--draws 50]` | +| Binary pulsars decaying at the wrong rate | ATNF orbital decays against general relativity from the masses plus the Shklovskii and Galactic terms, the total mass from the periastron advance or the mass function, errors by Monte Carlo | `seti.py radio_sky pbdot record [--sigma 3] [--dist-frac 0.2]` | +| The axis of the universe | SIMBAD counts of unknown and unclassified radio, X-ray and gamma-ray sources about the CMB dipole's apex and antapex against patches at the same Galactic latitude | `seti.py neighbourhood cmbaxis record [--radius-deg 2] [--controls 36]` | +| The Lagrange points of the Galactic bar | clean unassociated 4FGL sources toward the bar's L4 and L5 against windows along the inner plane and the corotation ring, Poisson; an excess on a spiral arm's tangent is read as that | `seti.py highenergy barlagrange record [--radius-deg 2] [--r-cr-kpc 6.5] [--bar-angle-deg 27]` | +| Two messengers at once | IceCat-1 alert tracks during TESS sectors 1-30 against the Yang et al. TESS flares of stars inside each track's 90 per cent region, within an hour, against shifted alert times | `seti.py flashes twomessengers record [--window-h 1] [--shifts 2000] [--near-pc 100]` | +| Dyson spheres built for our eyes | the room-temperature test on the Sun-like stars alone, BP-RP 0.65-1.0 | `seti.py infrared roomheat record --sunlike true` | +| Cosmic-ray doublets, northern sky | pairs and triplets of Telescope Array events close on the sky and in time, against shuffled arrival times | `seti.py highenergy tadoublets record [--sep-deg 2] [--shuffles 5000]` | +| Centrifugal habitats, survey periods | the tensile strength each survey-period asteroid needs beyond the gravity spin limit, against the strength of solid rock | `seti.py solar_system spinsurvey record [--rho 2000] [--kpa 100] [--minutes 10]` | +| Debris-disk voids | a scan of spheres about each Gaia parent star for fewer WISE excess stars than the colour-binned rate predicts, the deepest Poisson deficit against label shuffles within colour bins | `seti.py infrared diskvoids record [--radius-pc 15] [--shuffles 200] [--min-expected 3]` | +| Spectra no stellar model fits | the GALAH DR4 nearby dwarfs whose fit chi-square stands furthest above their temperature bin's median, read for second components, rotation, H-alpha and RUWE | `seti.py composition worstfits record [--snr-min 100] [--frac 0.005] [--teff-bin 250]` | +| Gaia XP spectra the models fit worst | the GSP-Phot log-posterior of the stars within 100 pc against bins of colour, magnitude and model library, the worst read for companions, emission, blends and extinction | `seti.py composition xpworst record [--frac 0.001]` | +| Herded stars, GALAH and ages | co-moving pairs of GALAH dwarfs within 10 pc and 1 km/s against velocity shuffles, and the age gaps of those hot enough for isochrone ages | `seti.py neighbourhood herdedages record [--age-gyr 5] [--teff-min 5600] [--shuffles 20]` | +| Fireballs from outside the Solar System | heliocentric speeds of the CNEOS fireballs from their velocity vectors against the Sun's escape speed, each fast one redrawn with the sensors' calibrated errors before and after 2018 | `seti.py solar_system fireballs record [--draws 20000] [--p-bound 0.01]` | +| The temperate rocky-planet hosts in every band | detected fractions of the temperate rocky-planet hosts in X-rays, ultraviolet and radio against the other planet hosts at the same temperatures and distances, inside each survey's footprint | `seti.py neighbourhood hzbands record [--dist-pc 100] [--insol-lo 0.2] [--insol-hi 2] [--rade-max 1.8]` | +| Retrograde co-orbitals of the inner planets | the retrograde co-orbital search carried to Mercury, Venus, Earth and Mars | `seti.py solar_system retroco record --inner true` | +| Clusters missing their brightest stars | members of young open clusters at absolute G 0.5-2.5 against the faint members times the bright-to-faint ratio fitted in log age, Poisson with a trials correction | `seti.py neighbourhood missingbright record [--prob-min 0.7] [--min-members 300] [--max-logage 8.6]` | +| Hostless flat-spectrum radio sources | compact flat-spectrum CRATES sources at high latitude with no infrared or optical counterpart in four surveys, read against SIMBAD classes, their NVSS centroids, the Legacy Surveys DR10 and VLASS | `seti.py radio_sky hostless record [--alpha-min -0.5] [--b-min 30] [--dec-min -30] [--offset-arcsec 3]` | +| A model-free outlier search over the nearest stars | per-archive robust offsets of the thousand nearest stars' Gaia, 2MASS, AllWISE, GALEX and eRASS1 measurements from stars of the same colour, the ultracool dwarfs by G-RP among themselves, and the stars odd in three or more archives | `seti.py neighbourhood nearoutliers record [--n 1000] [--widths 5] [--min-archives 3]` | +| Time clustering of our residues | the store's dated candidate events without an explanation on one time axis, coincidences within a day between different instruments against random shifts of each run | `seti.py neighbourhood timecluster record [--window-d 1] [--shifts 500]` | +| Deliveries from stellar encounters | the interstellar objects' incoming velocities against the paths of the Gaia stars within 100 pc carried back 10 Myr, close slow passages against random directions | `seti.py solar_system deliveries record [--dmin-pc 1] [--dv-kms 10] [--tmax-myr 10] [--draws 200]` | +| Fireballs seen twice | CNEOS fireballs matched to the GLM bolide database by time and place, and the two-satellite sightings triangulated into trail velocities set against the CNEOS vectors | `seti.py solar_system fireballglm record [--dt-s 60] [--km 300]` | +| Radio spectra of the hostless flat-spectrum sources | radio spectra from 150 MHz to 24 GHz and VLBI detection of the hostless CRATES sources against hosted ones, classed as peaked, flat, inverted or steep | `seti.py radio_sky hostlesssed record [--controls 200]` | +| What sets the worst-fitted nearby M dwarfs apart | the XP misfits' colours, luminosity, J-Ks, speed, radial-velocity scatter and ultraviolet against peers of their colour and magnitude | `seti.py composition xpmisfits record [--controls 3000]` | +| What a pile of unassociated gamma-ray sources is | a random forest on 4FGL spectral shape and variability, trained on associated pulsars, blazars and remnants, classing the clean unassociated sources of a window against the rest of the plane | `seti.py highenergy unasclass record [--l-deg 312.07] [--b-deg 0] [--radius-deg 2]` | +| Fireballs the meteor cameras caught | CNEOS fireballs matched to Global Meteor Network trajectories by time and place, the camera speeds set against the satellite speeds | `seti.py solar_system fireballgmn record [--dt-s 10] [--km 300]` | +| Hosts of the hostless radio sources in the near infrared | the hostless sources against VHS, VIKING and UKIDSS, each K magnitude or survey depth turned into a redshift by the K-z relation of radio galaxies | `seti.py radio_sky hostlessnir record [--arcsec 2]` | +| Spectral classes of the worst-fitted nearby M dwarfs | the XP misfits' LAMOST and SDSS spectral classes against the trait test's metal-poor verdicts | `seti.py composition misfitspectra record [--arcsec 3]` | +| Gamma-ray points inside TeV glows | clean unassociated 4FGL sources in a window of the plane against the extents of the H.E.S.S. Galactic Plane Survey's sources, against the rest of the footprint | `seti.py highenergy hgpsoverlap record [--l-deg 312.07] [--radius-deg 2] [--width-factor 2]` | +| Subdwarf indices of the worst-fitted nearby M dwarfs | CaH2, CaH3 and TiO5 band indices and Lepine's zeta from the misfits' LAMOST and SDSS spectra | `seti.py composition subdwarfindex record [--arcsec 3]` | +| Gas under a pile of gamma-ray points | the dust column under each unassociated source of a window against points at the same latitude along the plane | `seti.py highenergy gasunder record [--l-deg 312.07] [--radius-deg 2]` | +| Vanished numbered asteroids | numbered asteroids unobserved for years, each orbit propagated to today and its magnitude set against the surveys' reach, Horizons for those left within it | `seti.py solar_system vanished record [--h-max 17] [--last-before 2017-01-01] [--v-limit 21.5]` | + +### Short-lived elements + +Technetium (4.2 Myr), promethium (17.7 yr) and the actinides Pa, Pu, Am and Cm have no natural source in a +main-sequence star. Each star's spectra are put on one barycentric air-wavelength grid, normalised by +`spectra.envelope`, median-stacked and moved to rest with `spectra.line_velocity`; stacks need pixel scatter under 10 +per cent and a comparison stack correlating above 0.9. `spectra.line_absorption` fits the six most similar stacks with +the line core left out, `spectra.combined_line_score` weights the lines by lambda^2 gf exp(-E_low/kT) at 5800 K against +400 random wavelengths, and `combined_line_threshold` gives each star's limit, which injection checks. Lines: Tc I from +Palmeri et al. (2005), Pm II from Fivet et al. (2007), the actinides from NIST with arc intensities for gf; Korg turns +equivalent widths into abundances. The runs are `seti.py composition elements census`, `fetch INSTRUMENT`, +`search INSTRUMENT [ELEMENT ...]` (`--inject STAR EW_mA`) and `record`. + +### Laser lines in stellar spectra + +Spectra are normalised by `spectra.envelope` on one grid per instrument. Stars with several visits use +`spectra.visit_recurrence`, which keeps lines recurring at one stellar-frame wavelength across visits at different +observatory velocities; steady lines use `spectra.twin_model` and `spectra.matched_filter`. A peak keeps a width ratio +of 0.6-1.6 against `spectra.lsf_sigma_px` and a smooth profile, then faces the absorption-like null and +the Vetting section above. + +| Archive | R | Run | +|---|---|---| +| Gaia RVS | 11,500 | `seti.py lasers rvs` | +| HARPS, ESPRESSO, UVES, FEROS | 115,000; 140,000; 40,000-110,000; 48,000 | `seti.py lasers eso fetch`, `seti.py lasers eso --inst ...` | +| GALAH DR4 | 28,000 | `seti.py lasers galah`, `seti.py lasers galah exposures\|check\|raw\|record` | +| APOGEE DR17 | 22,500 | `seti.py lasers apogee` | +| DESI DR1 | each spectrum's `wave_sigma` | `seti.py lasers desi sample\|fetch\|search` | +| LAMOST DR10 MRS | 7,500 | `seti.py lasers lamost targets\|fetch\|search\|judge\|neighbours\|exposures\|record` | +| CARMENES DR1 | 94,600 | `seti.py lasers carmenes stars\|stream\|register\|regroup\|vet\|forced\|record` | + +The sky-fibre search, `seti.py lasers skyfibre search`, reads each BOSS/eBOSS spPlate's sky fibres by multi-range requests over one kept-alive connection per thread (`--part a:b/n` splits the plates across machines) and stores every emission-like and absorption-like peak that passes the mask, airglow and width tests with the number of other fibres at 3 sigma beside it, so the one-fibre and two-fibre sharing rules and the fibre-fixed test apply to both signs afterwards; `seti.py lasers skyfibre record` records the plates read, emission-like against absorption-like peaks, pairs each fibre's clean lines at one redshift as galaxy lines ([OII], Hbeta, [OIII], Halpha, [NII], [SII], Lyalpha) provided one of them is [OII], Hbeta, [OIII] 5007, Halpha or Lyalpha, since the [SII] doublet and [NII]-[SII] pairs fall where the red sky subtraction's residuals repeat at fixed observed wavelengths across plates, marks a line the same fibre holds within three pixels on other plates at another sky position as the detector's, and sets aside spectra that hold clean lines of both signs; `seti.py lasers skyfibre galaxies` matches the galaxy fibres to Legacy Surveys DR10 and DESI DR1 through the Astro Data Lab, and `seti.py lasers skyfibre rest` the clean 8-sigma lines left, at the fibre and 30 arcsec north; `seti.py lasers skyfibre exposures` reads each clean 8-sigma line in every spCFrame that covers it and judges it one exposure's, one camera's, persistent or unclear, which `record` applies; `seti.py lasers skyfibre inject [--limit PLATES]` injects lines of the instrumental profile at multiples of the threshold and reports the recovery and the losses by test for the detector as it stands, with a two-fibre shared rule (`SKYFIBRE_SHARED_MIN=2`) and with the common mode over the fibres subtracted (`SKYFIBRE_COMMON=1`). The ESO and SOPHIE record step sets aside a steady peak where five or more other stars carry neighbour-model residuals within 0.6 A, and counts a peak as one night's when that night stands at 3 sigma and every other night below 1. + +### Light curves, infrared excess and companions + +| Approach | Data and rule | Run | +|---|---|---| +| Century-scale dimming | DASCH plate light curves against same-plate comparisons (`timeseries.differential_trend`), judged against the sample's spread; a candidate fades in most plate series and has no blend that moves with proper motion | `seti.py dimming dasch trends\|judge\|series\|inject` | +| Fully enclosed stars | AllWISE sources red in W2-W3 (`net.tap_async`), moving in CatWISE2020, dark in Gaia, clear of SIMBAD's young stars and clouds | `seti.py infrared enclosed` | +| SPHEREx spectra of candidates | forced photometry in every SPHEREx image (`archives.spherex_pixels`, `photometry.spherex_point_pixels`) against two colour-matched controls undetected at 12 um | `seti.py infrared spherex spec\|controls\|compare` | +| SPHEREx at every unsaturated star | the same photometry for Gaia stars within 25 pc with Ks 9.5 or fainter | `seti.py infrared volume sample\|spec` | +| Dark companions | Gaia `binary_masses` and Hipparcos-Gaia proper-motion anomalies; the companion's main-sequence luminosity re-emitted at 200-600 K against Ks-W3 and Ks-W4 | `seti.py infrared dark`, `seti.py infrared pma` | +| Habitable-zone stacks | hosts at 0.32-1.78 Earth insolations within 100 pc, 25 Gaia-matched controls each, W1-W3 and W1-W4 | `seti.py infrared hz fetch\|analyse\|record` | +| Vanished stars | SVO's POSS I vanishing objects with a fixed red CatWISE2020 counterpart, no Legacy Surveys source and the W3 the energy budget needs | `seti.py infrared vasco fetch\|select` | +| Gaia dippers | epoch G, BP and RP of skewed variables within 100 pc; single epochs, single transits, binaries, periodic, reddening and G-only dips explained; TESS checks the rest | `seti.py dimming gaia fetch\|analyse\|tess` | +| Decade infrared trends | NEOWISE-R single exposures of stars within 15 pc against field stars on the same frames | `seti.py dimming neowise fetch\|analyse` | +| Hipparcos to Gaia dimming | Hp (1991.25) against G (2016.0) within 100 pc, explained by variability, scatter, RUWE, BP/RP excess, WDS companions and rotation | `seti.py dimming hip_gaia` | +| Hipparcos epoch dips | `I/239/epophot`; a dip must show in both fields of view, 20.6 minutes apart | `seti.py dimming hipparcos` | +| Transit shapes | `timeseries.shape_stats` on Kepler and TESS rejects with three or more events | `seti.py transits shapes_kepler`, `seti.py transits shapes_tess fetch\|ffi\|analyse` | +| Exobelts | shoulders 3-90 planetary radii beside Kepler transits against random phases, measured again with each transit's own time and fitted duration; `targets --long` and `record --long` for the planets below 2 Earth radii beyond 30 d around FGK dwarfs | `seti.py transits exobelts targets\|stream\|report\|vet\|record` | +| Achromatic long-period modulation | ZTF periodic variables (Chen et al. 2020): BY Dra and RS CVn classes at 5-500 d, A_g 0.15 mag or more, g brighter than 18, those with catalogue A_r/A_g of 0.9 or more and 300 controls at 0.7-0.9; ZTF DR23 light curves by object identifier (IRSA objects table within 1.5 arcsec, then the light-curve service) folded at the catalogue period and fitted by a mean and two harmonics per band; grey at A_r/A_g of 0.97 or more at 3 sigma, at most 1.15, bands in phase to 0.05 cycle; Gaia DR3 neighbours, RUWE and BP/RP excess and AllWISE W1-W2 by CDS XMatch at the grey ones | `seti.py dimming achromatic select\|fetch\|analyse\|record` | +| Chromatic-only variables | Gaia DR3 vari_summary variables brighter than G 16 with twenty or more transits: G scatter below 0.003 mag with BP and RP scatter above 0.02 each, against the ratio sqrt(s_BP^2 + s_RP^2)/s_G of the sources quiet in G (scatter below 0.01) in half-magnitude bins, a candidate beyond its 5 sigma tail; the finalists' epoch photometry by DataLink, BP against RP over the transits that hold both, which a neighbour in the windows moves together and a spectral modulator against each other | `seti.py dimming chromatic fetch\|analyse\|record` | +| Superflare deficit among planet hosts | Yang et al. (2023) flare energies and the TESS two-minute target table (VizieR J/A+A/669/A15), hosts from the TOI table (PC, CP, KP) and pscomppars by TIC; each flaring host's ten nearest flaring non-hosts in Teff, log radius, log distance and sectors, drawn 2000 times: the fraction of flares above 1e34 erg among those above 1e33, the fraction of stars with a flare above 1e34, and a two-sample test on the pooled energies | `seti.py flashes superflare analyse\|record` | +| Stellar-synchronous orbits | the cumulative KOI table's candidates and confirmed planets joined by KIC to the KOI rotation periods of McQuillan et al. (2013) and Mazeh et al. (2015); \|P_orb/P_rot - 1\| and the 2:1 and 1:2 forms within 0.02 for P_orb of 10 d or more, against the rotation periods shuffled among the hosts within 500 K bins; `lock` fits a sinusoid at P_rot in windows of three rotations about each transit of a match in its Kepler long-cadence light curve (transits masked) and compares the phase scatter with other rotators at like periods on the same epochs | `seti.py transits synchronous analyse\|lock\|record` | +| Shared clocks | ZTF periodic variables with periods off the n/k-day and sidereal aliases, paired within fractional period tolerances (pairs within 10 arcsec left out); pairs within 1e-5 judged in phase at MJD 58700 within 0.01 cycle and joined into groups, against the phases shuffled; groups at periods the catalogue repeats exactly set aside | `seti.py flashes clocks [record] [--eps 1e-5] [--phase 0.01] [--tref 58700] [--min-sep-arcsec 10] [--shuffles 20]` | +| Aimed transits | the cumulative KOI table's impact parameters at S/N 20, in bins 0-0.05, 0.05-0.1 and 0.1-0.5, against the fractions the DR25 injected planets' recovered fits (kplr_dr25_inj1_plti, uniform injected b) give, for all planets, the habitable-zone ones and those with b measured to 0.1 | `seti.py transits aimed analyse\|record` | +| Transits faster than escape velocity | every Kepler DR25 threshold-crossing event against the shortest full transit a bound body can give, 2R sqrt((1+k)^2 - b^2)/v_esc with the Gaia-based radii and masses of Berger et al. (2020), at the fitted geometry, at b = 0 and at the smallest floor the host errors allow; every TOI at b = 0 with a main-sequence mass from the radius; each sub-floor event read against the host's gravity, the Kepler eclipsing-binary catalogue, the number of events on the star, the KOI flags and the TOI disposition, and the light curve of what remains (`escape check KIC`) | `seti.py transits escape fetch\|analyse\|check\|record` | +| Timing steps | Kepler transit times (Holczer et al. 2016) and LMC Cepheid maxima (Poleski 2008); a held step against smooth ephemerides and random walks | `seti.py transits ttv`, `seti.py transits cepheids analyse\|record` | +| Impulsive period changes | Holczer et al. (2016) transit times; a two-segment ephemeris continuous at a scanned break against the line, the quadratic and the best sinusoid, evidence as the chi-square gain less log N; null from each candidate's sinusoid at a random phase with AR(1) noise; the evidence with each transit left out in turn | `seti.py transits impulse analyse\|record` | +| Station-kept planetary systems | NASA Exoplanet Archive multi-planet systems, 100 error draws each (1000 once 90 per cent are unstable) with transit and periastron times fixing the phases; SPOCK's probability over 1e9 orbits of the inner planet for three or more planets and its regressor where that outlasts 1 per cent of the age, Hill stability then WHFast for two; a flag is over 99 per cent of draws unstable within 1 per cent of the age; stable draws of each flagged system observed again with its errors are the null, and direct WHFast integrations to 1e8 orbits check the flags | `seti.py transits stability fetch\|limits\|run\|twins\|long\|record` | +| Opaque lightweight eclipsers | Gaia DR3 vari_eclipsing_binary eclipses deeper than 0.75 mag at periods under 30 d, joined by id batches to gaia_source's RVS amplitude (rv_amplitude_robust), transit count and span, ten or more transits; the primary's radius and mass from its gspphot temperature on the main sequence, the eclipser's radius from the depth as a dark disc, its least mass from the main-sequence mass-radius relation and the least semi-amplitude for an edge-on orbit; the observed semi-amplitude over that floor, a candidate below 0.1 with the transits spanning five or more cycles | `seti.py transits lightweight fetch\|analyse\|record` | +| Transiting bodies inside the fluid Roche limit | Gaia DR3 vari_short_timescale variables faster than 8.6 cycles a day with amplitudes above 0.02 mag and twenty or more transits, their gaia_source rows by id; main-sequence hosts by the colour-magnitude diagram, Gaia's spin aliases at multiples of 4 cycles a day set aside; Gaia DR3 epoch photometry by DataLink (one source a request, brightest first; ZTF g and r from the light-curve service's cone for the box-like ones), folded at the Gaia period and its double and half, a sinusoid against a box of duty cycle below 15 per cent; each band's box advantage, n ln(chi2 sinusoid / chi2 box), set against the band's best sinusoid plus its own residuals resampled at the same epochs; a candidate has the box beyond that null at p below 0.001 in G and 0.05 in BP and RP, with equal depths there, and is then searched in ZTF g and r from 0.45 to 2.2 Gaia periods for the box, its depth in each band, a secondary eclipse and odd and even depths | `seti.py transits roche select\|fetch_gaia\|fetch\|analyse [--procs N]\|ztf\|record` | +| Glints | short-cadence flashes folded at Kepler and TESS candidate periods | `seti.py flashes kepler stream` | +| Flux in discrete levels | TESS 20 s light curves binned to 2 minutes; steps between adjacent 30-minute medians at 7 sigma whose best ramp takes 2 minutes or less, common-mode steps on three or more stars of a sector removed, and flares, rises whose light falls by half within the next window and the steps down within three hours after them; segments grouped into levels within 3 sigma, a segment beginning where a kept step's sharpest transition lies within half a window | `seti.py flashes levels [--procs N]`, `seti.py flashes levels record` | +| Determinism | each light-curve segment's residual, the half-day trend, three periodic signals (folded and subtracted) and flares removed, against 99 IAAFT surrogates of its power spectrum and flux distribution at the native cadence and binned eightfold: the zlib-compressed length of its sixteen quantile symbols, its nonlinear prediction error (four-dimensional delay vectors, four neighbours beyond the Theiler window) and its time asymmetry; z combined over segments, candidates more compressible or predictable by 5 sigma, read with their asymmetry and against the stars of their sector and camera; TESS 20 s light curves on disk, two-minute star-sectors of the Gaia nearby stars streamed nearest first (the surrogates on the GPU with `--gpu`), Kepler long cadence of the KOI hosts | `seti.py flashes determinism targets\|stream\|local\|kepler_targets\|kepler\|check\|report` | +| PSF-shaped flashes in cosmic-ray corrections | each KOI host's long-cadence target pixel files read in memory: the flux the pipeline removed as cosmic rays (COSMIC_RAYS) in cadences whose only flags are cosmic rays and impulsive outliers, where three or more optimal-aperture pixels were corrected together, correlated with the star's median image and with that image shifted by one pixel; the coincidences each pixel's own correction rate gives, cadences shared by other stars of the channel and the aperture flux of the next two cadences beside each; `record` sets the PSF-shaped rate against a quarter of the shifted-image count by stellar temperature and judges each star's events its flares when it is cooler than 5300 K, carries three or more or shows light in the next cadence, and cosmic rays shaped like its image otherwise | `seti.py flashes psfflash targets\|stream\|report\|record` | +| Flux in discrete levels, Kepler | Kepler DR25 long-cadence PDCSAP quarters of every DR25 star, read in memory from the STScI mirror; steps within one cadence between levels, steps that three other stars of the CCD channel or twenty of the focal plane share within 1.5 cadences removed, three or more levels each revisited in a quarter; a star whose listing or any quarter fails is read again on the next pass; `vet` reads each multi-level star against the Kepler eclipsing-binary catalogue (Kirk et al. 2016), its DR25 gravity, its KOIs' transit times, SIMBAD and Gaia DR3's variability classes | `seti.py flashes keplevels targets\|stream\|analyse\|vet\|record` (`stream --part k/n --sub j/m`) | +| Warm dust without pollution at white dwarfs | DESI DR1 zpix white dwarfs joined on Data Lab to unWISE (W1, W2) and Gaia DR3; the white dwarfs' own G - W1 and G - W2 against BP - RP as the photosphere locus; excess at 5 sigma in both bands with an excess black body at 600-2000 K, unblended; DESI spectra of the candidates and of excess-free white dwarfs matched in G and BP - RP from SPARCL, Ca II K and Mg II equivalent widths from a two-sided linear continuum | `seti.py infrared wddust fetch\|analyse\|spectra\|record` | +| Sources bluer than the Rayleigh-Jeans limit | Euclid Q1 MER point sources at S/N above 10 in VIS, Y, J and H with F_VIS above six times F_H by IRSA TAP (async); I_E - H_E below -2.3 at 3 sigma with NISP fluxes falling faster than nu^2, clean flags, unblended, not variable; Gaia DR3 counterparts by CDS XMatch read for a thermal colour the Euclid fluxes contradict | `seti.py infrared bluefloor analyse\|record` | +| Surface-brightness-fluctuation deficit | Cosmicflows-4 SBF moduli against the weighted mean of the other methods in the galaxy or its group (0.1 mag of group depth); the far tail at 4 sigma and 0.3 mag is the weak-fluctuation sign, the near tail its control | `seti.py infrared sbf [record] [--sigma 4] [--dmag 0.3] [--group-depth 0.1]` | +| Earth-transit-zone stars at opposition | Gaia DR3 stars within 100 pc, 0.27 deg of the ecliptic, matched to the TESS 2-minute target lists of the ecliptic sectors; each star's opposition from the Sun's longitude, lone flashes and brightenings within 6.5 h of it against the rest of the sector and against stars 1-5 deg off the ecliptic | `seti.py flashes etz [--threads N]`, `seti.py flashes etz record` | +| Radio from Earth's transit zone | Gaia Catalogue of Nearby Stars objects north of -40 deg carried to 2019.0, against VLASS epoch-1 components within 3 arcsec by CDS XMatch; the share with a 3 GHz source within 0.264 deg of the ecliptic against the share 1-5 deg away and against the zone moved 2 arcmin; matches read in SIMBAD and the Legacy Survey DR10 | `seti.py radio_sky etzradio [record] [--zone-deg 0.264] [--control-deg 1 5] [--radius-arcsec 3] [--epoch 2019] [--dec-min -40]` | +| X-rays from Earth's transit zone | Gaia Catalogue of Nearby Stars objects within 0.264 deg of the ecliptic at Galactic longitude 180-360 deg carried to 2020.0, against eRASS1 main-catalogue sources within 15 arcsec by CDS XMatch; the share with an X-ray source against the share 1-5 deg away and against the zone moved 2 arcmin; matches read in SIMBAD | `seti.py highenergy etzxray [record] [--radius-arcsec 15] [--epoch 2020]` | +| Ultraviolet from Earth's transit zone | Gaia Catalogue of Nearby Stars objects within 0.264 deg of the ecliptic carried to 2007.0, against GALEX GUVcat AIS within 5 arcsec by CDS XMatch; the share with an ultraviolet source against the share 1-5 deg away and against the zone moved 2 arcmin; matches read in SIMBAD | `seti.py ultraviolet etzuv [record] [--radius-arcsec 5] [--epoch 2007] [--catalogue II/335/galex_ais]` | +| Galaxies that suppress supernovae | HECATE galaxies within 20 Mpc with homogenised star-formation rates, each given the core-collapse supernovae one per 100 solar masses formed predicts over 1980-2015, against the Asiago catalogue's supernovae matched to the galaxy within 1 arcmin by CDS XMatch, Poisson at each galaxy's own rate; dust (infrared over ultraviolet rate by three, or infrared luminosity above 2e10 solar) and active nuclei read from the catalogue | `seti.py flashes sndeficit [record] [--d-max-mpc 20] [--sn-per-msun 0.01] [--year-min 1980] [--year-max 2015] [--host-arcmin 1] [--dust-ratio 3] [--ltir-max 10.3] [--p-max 0.01]` | +| Nova ellipsoids | Gaia DR3 stars within 100 pc whose keyed-signal arrival from a conspicuous eruption (T CrB 1866 and 1946, GK Per 1901, V603 Aql 1918, RR Pic 1925, DQ Her 1934, CP Pup 1942, V1500 Cyg 1975, the supernovae of 1572 and 1604; `NOVA_EVENT` picks one) falls in the TESS years, matched to the TIC by CDS XMatch; lone flashes in each 2-minute light curve within 2 sigma of the arrival against the same sectors' light curves outside their windows, stars brighter than G 6 left out, counts capped at 3 | `seti.py flashes nova [--threads N]`, `seti.py flashes nova record` | +| Non-thermal or recurrent lunar flashes | NELIOTA's flash lists from the tables of Liakos et al. (2020, PDF text) and (2024, arXiv HTML): id, date, class, duration, R and I with errors, selenographic position; colour temperature from R - I through the Planck ratio with Vega's colour as the zero point, against 1000-8000 K at 3 sigma; duration against 0.5 s; pairs within 1.5 deg on the Moon against 2000 permutations of the longitudes | `seti.py flashes neliota fetch\|analyse\|record` | +| Stars dimmer in the infrared than their spectra allow | Gaia DR3 stars within 100 pc with RVS temperatures whose first ten GSP-Spec flags are 0 or 1, A_G below 0.05, RUWE below 1.4 and AllWISE W1 of quality A at 8-15 mag through Gaia's best neighbours; G - W1 against its median at the spectroscopic temperature, flagged where the colour temperature read from that locus is 500 K above the spectroscopic at 5 sigma, and read for a GSP-Phot or BP-RP temperature nearer the infrared colour's than the spectrum's | `seti.py infrared irdeficit [record] [--dteff-k 500] [--sigma 5] [--w1-min 8] [--w1-max 15] [--ag-max 0.05] [--ruwe-max 1.4] [--gspspec-flag-max 1]` | +| Warm stars in Earth's transit zone | Gaia Catalogue of Nearby Stars objects with its WISE photometry, single by RUWE and IPD, W3 at S/N 10 or W4 at S/N 5; W1-W3 and W1-W4 more than five robust widths and three errors above the single-star locus at the same BP-RP; the warm share within 0.264 deg of the ecliptic against the share 1-5 deg away | `seti.py infrared etzwarm [record] [--planet jupiter] [--zone-deg 0.264] [--control-min-deg 1] [--control-max-deg 5] [--widths 5] [--errors 3] [--w3-err-max 0.1] [--w4-err-max 0.2]` | +| Light at 4.6 um alone | Gaia Catalogue of Nearby Stars objects with WISE W1 8-14, W2 above 7.5 and W1, W2 and W3 measured to 0.05, 0.05 and 0.1 mag; W1-W2 more than five robust widths and five errors above the single-star locus at the same BP-RP with W1-W3 within two widths of its own, against the stars as far below; candidates read for AllWISE contamination, extension and variability flags and in SIMBAD | `seti.py infrared w2only [record] [--widths 5] [--errors 5] [--w3-widths 2] [--colour-min 0.5] [--colour-max 2.5] [--w1-min 8] [--w1-max 14] [--w2-min 7.5]` | +| Sources shining in one filter only | Pan-STARRS1 DR1 (VizieR II/349) objects detected five or more times in one filter and never in the other four, brighter than g or r 19, i 18.5, z 18 or y 17, beyond what any stellar colour leaves undetected in the neighbouring filters | `seti.py infrared onefilter [record] [--limits 19 19 18.5 18 17] [--n-min 5]` | +| Dwarfs whose 12 um output changed between 1983 and 2010 | Gaia DR3 stars within 100 pc at G below 8 and RUWE below 1.4; by CDS XMatch, IRAS PSC 12 um of high quality within 45 arcsec of the 1983 position and clean unsaturated AllWISE W3 within 3 arcsec of the 2010 position; the IRAS flux as a magnitude (zero point 28.3 Jy) against W3, flagged 1 mag from the median offset and read for a Gaia star within 45 arcsec and 2 mag in G, inside IRAS's beam and outside W3's | `seti.py infrared iraswise [record] [--g-max 8] [--ruwe-max 1.4] [--iras-arcsec 45] [--wise-arcsec 3] [--dmag 1] [--blend-dmag 2]` | +| Dwarfs larger than their light allows | JMMC limb-darkened diameters (VizieR II/345) matched to Gaia DR3 within 5 arcsec by CDS XMatch; against the angular diameter 9.30e-3 R(FLAME) parallax(mas) mas for dwarfs with log g above 4 within 100 pc, flagged above 1.2 times it at 3 sigma | `seti.py infrared bigdwarfs [record] [--ratio 1.2] [--sigma 3] [--logg-min 4] [--plx-min 10] [--radius-arcsec 5]` | +| Computation at the cosmic floor | the SPT-SZ multiband catalogue at 95, 150 and 220 GHz (VizieR J/ApJ/900/55); each source's two spectral indices against the track of a 2.8-10 K body seen against the microwave background it hides, rising from 95 to 150 GHz and below an index of 2 from 150 to 220 GHz by two errors each, with no counterpart in SUMSS, AT20G, PMN, IRAS, AKARI, WISE or ROSAT and no extent; the null each source's best power law or dust spectrum drawn through its own errors | `seti.py infrared coldcomp [record] [--t-min 2.8] [--t-max 10] [--sigmas 2] [--dust-alpha 2] [--draws 200]` | +| Ghost spectra | the rest-frame stacks of the ESO laser-line runs (HARPS, ESPRESSO, FEROS, UVES; 4100-5600 A) covering 60 per cent of the range with a twin correlating at 0.9; each star's line depths on a grid of 1 km/s less the scaled median of its six most alike stars, correlated with its own lines from 1,000 to 60,000 km/s either way in units of its line strength over the overlap, the noise scaled with the overlap's share and shifts below a fifth unread; a peak at a shift other stars' peaks share within 30 km/s is the spectra's own; a copy laid at 20,000 km/s measures the depth reached | `seti.py composition ghosts [record] [--v-min 1000] [--v-max 60000] [--z-min 7] [--twins 6] [--inject 0.003] [--coverage 0.6] [--twin-r 0.9] [--shared-kms 30] [--min-overlap 0.2]` | +| Optical frequency combs | the rest-frame stacks of the ESO laser-line runs (HARPS, ESPRESSO, FEROS, UVES; 4100-5600 A) covering 60 per cent of the range with a twin at 0.9; each star's residual after its six twins on a grid uniform in frequency, its Fourier power at line spacings of 20 GHz-1 THz over its own running median of 201 bins; a spacing other stars' peaks share within 1 per cent, or the twins' power there, marks the spectra's own; a comb of 0.2 per cent at 50 GHz laid into every stack measures the reach | `seti.py composition combs [record] [--ghz-min 20] [--ghz-max 1000] [--ratio-min 30] [--twins 6] [--inject 0.002]` | +| Flares firing together across the sky | Yang et al. (2023) TESS flares (VizieR J/A+A/669/A15) on stars more than 10 deg apart within a minute of each other, against the rate at 10-60 minutes; the pairs counted by minute, where events of the spacecraft gather many | `seti.py flashes flaresync [record] [--dt-min 1] [--sep-deg 10] [--control-min 10] [--control-max 60]` | +| Standardised flares | Yang et al. (2023) stars with ten or more flares whose energies scatter by less than 5 per cent | `seti.py flashes flarecopies [record] [--n-min 10] [--spread 0.05]` | +| Flare echoes | Kepler short-cadence (GJ 1243 by default), or with `--tess true` TESS twenty-second and two-minute PDCSAP light curves of eight nearby flare stars, or with `--nearby true` the twenty-second light curves of every star within 30 pc brighter than Tmag 15 with 30 flares; relative to an hour's running median and then to nine minutes'; flares at 10 noise widths; each flare's five-minute impulse correlated with the light curve at delays of 3-180 minutes, weighted by its signal-to-noise and averaged, every other peak at 5 widths masked; the same correlation before the flares is the null, a star's strongest delay counts only above the largest before its flares, a delay that loses half its echo with one flare left out rests on that flare, and VSX names eclipsing binaries | `seti.py flashes flareecho [record] [--kic 9726699] [--tess false] [--nearby false] [--min-flares 30] [--snr-min 10] [--tau-max 180] [--z-min 5] [--mask-snr 5]` | +| Minute tones at the nearest stars | the TESS twenty-second PDCSAP light curves of the discrete-level search (stars within 30 pc), an hour's running median and flares with the half-hour after them removed; Fourier amplitude at periods of 1-60 minutes over its running median of 401 bins, at 6 times; the tone's amplitude in the flux-weighted centroid per unit of flux places the source; a frequency other stars share within 0.05 cycles a day is the spacecraft's, a whole multiple up to the twentieth of the light curve's strongest slow signal is its harmonic, and Gaia colour, VSX and SIMBAD name hot pulsators, eclipsing binaries and white dwarfs | `seti.py flashes tones [record] [--snr-min 6] [--p-min-min 1] [--p-max-min 60] [--offset-max 0.3]` | +| Chirps at the nearest stars | the TESS twenty-second light curves of the discrete-level search (stars within 30 pc, Tmag 15 or brighter), an hour's running median and flares removed; back-to-back windows of six hours for drifts to 16 c/d per day and an hour and a half to 64, power at 24-1440 c/d levelled by each frequency's median over the windows and each window's over the frequencies, summed along straight tracks; a sum's chance from its Gamma tail; each light curve below p 1e-12 read again with its windows shuffled 100 times, along its track in the sector's other light curves and in its own centroid, with the band started 8 c/d higher, and against the spacecraft tracks of every sector; chirps laid in measure the reach | `seti.py flashes chirps [record] [--rate-max 60] [--rate-min 1] [--p-max 1e-12] [--tmag-max 15] [--inject 0.0005] [--shuffles 100]` | +| Stars steadier than photon noise allows | the Kepler DR25 stellar table's 6-hour CDPP against the shot noise of the star's Kepler magnitude (17 ppm at Kp 12), below 0.8 of it | `seti.py flashes steady [record] [--fraction 0.8] [--hours 6] [--electrons-kp12 1.74e5] [--duty 0.92]` | + +### Photon timing, ultraviolet lines and polarimetry + +| Approach | Data and rule | Run | +|---|---|---| +| GALEX pulses | photon lists of single-pointing eclipses (STScI parquet); an 8 arcsec aperture against eight control apertures; clusters in 5, 20 and 100 ms against the local rate | `seti.py ultraviolet galex_pulses fetch\|search` | +| GALEX burst census | every 16 arcsec cell of the same eclipses at its own rate; bursts of 7 or more photons in 100 ms off satellite streaks and local rises; a burst on a star placed in detector coordinates rebuilt from the per-second boresight and its detector spot followed over the visit | `seti.py ultraviolet galex_census census\|judge\|detector\|burstpos\|record` | +| HST pulses | STIS TIME-TAG and COS corrtag events on one detector bin, after MAMA double counts, lamp flashes, flagged events and the extraction band; flares and hot pixels set aside | `seti.py ultraviolet hst_pulses inventory\|fetch\|search\|record` | +| Chandra periodicities | Chandra Source Catalog event files; Z^2_1 and Z^2_2 at 6.5-2000 s with dither and frame sidebands masked and red noise scaled out | `seti.py highenergy chandra fetch\|search\|record` | +| XMM-Newton periodicities | 5XMM-DR15 EPIC-pn time series; Fourier power at 5-600 s against a running median | `seti.py highenergy xmm` | +| Ultraviolet laser lines | StarCAT STIS echelle exposures, COS spectra, IUE and FUSE; an unresolved spike above the nearby maxima that repeats at one heliocentric wavelength, is absent from other stars and matches no NIST line | `seti.py ultraviolet starcat\|cos\|stis\|iue\|fuse\|limits` | +| Polarised reflectors | stars within 50 pc against their neighbours' interstellar polarisation, after companions, activity, early and evolved types, excess, the distance bound and alignment | `seti.py neighbourhood polarised fetch\|analyse\|record` | +| Intrinsic polarisation of quiet dwarfs | the Panopoulou et al. (2025) compilation's Stokes q and u per star (fractions) against the inverse-variance mean of its unflagged neighbours within 3 deg and 20 per cent in distance, those of the star's own catalogues where five or more lie there and otherwise all with 0.1 per cent added to the star's errors for the catalogues' zero points, the neighbours' scatter as the field's variation; chi-square of the residual vector and its angle against the field's; null from measurements reassigned to random neighbours; Gaia DR3 colours and absolute magnitudes by CDS XMatch for the main-sequence cut; candidates read against their source catalogue's field and SIMBAD | `seti.py neighbourhood intrinsic fetch\|analyse\|record` | + +### Radio tracks and persistent lines + +| Approach | Data and rule | Run | +|---|---|---| +| Frame-predicted lines | Breakthrough Listen cadences; HI, OH and pi x HI at rest in the CMB, Solar System, stellar or planetary frame (`frames.line_tracks`), power summed along the track (`radio.track_search`) against zero-drift and shifted tracks, ON scans stacked and OFF scans summed along the ON track | `seti.py breakthrough frames` | +| Curved tracks | half-scan straight tracks joined with drift changes up to 5 channels per spectrum on the GPU; a hit recurs in a second ON scan and is absent from the OFF scans; each survivor and the lines that switch on with it on its drift are then sought in every pointing of the session within an hour, along the drift | `seti.py breakthrough curved search\|cadences\|session\|record`, `seti.py breakthrough curved_batch` for files read from Berkeley | +| The 2004 SETI@home candidate SHGb02+14a | Breakthrough Listen's GBT cadences on GJ 83.1 (TZ Arietis), beside the candidate's position: the coarse channel holding 1420.4 MHz in every scan of the L-band session, each spectrogram divided by its channels' medians over time, dedrifted at every rate from -40 to +40 Hz/s in steps of 0.25 and summed, peaks above ten times the robust noise, and the ON scans' peaks against every other pointing's; S-band cadences, which do not hold the line, counted as not measured | `seti.py breakthrough shgb [record] [--target gj83.1] [--line-mhz 1420.405751] [--window-mhz 0.5] [--rate-max 40] [--rate-step 0.25] [--snr 10] [--drift-min 8] [--drift-max 37]` | +| Hopping and combs | isolated single-spectrum bursts on the target alone; comb spacings in all three ON scans and none of the OFF scans | `seti.py breakthrough hops`, `seti.py breakthrough combs` | +| Negative-DM and pulsar-locked pulses | 349 us products dedispersed at DM -30 to +3 in 64 subbands, pulses of 1-64 samples at 7 sigma in half the subbands and peaked in DM; the zero-DM series folded at four pulsars' periods as the star sees them; OFF scans give the rate, `--control` a cadence of OFF scans folded the same way | `seti.py breakthrough pulses tasks\|search\|summary\|record` | +| High drift rates | Breakthrough Listen mid-resolution products streamed by parallel byte ranges; the bandpass is each coarse channel's level times the filterbank response folded over the coarse channels, and the noise each channel position's own; sums along tracks of drift to +-300 Hz/s and curvature to +-0.3 Hz/s^2 on the GPU; a track crossing a bright zero-drift line is its sidelobe; an event is a hit in all three ON scans along one drift with the OFF scans below 5 sigma where it predicts; completeness from synthetic scans of the products' shape with planted lines | `seti.py breakthrough highdrift sessions\|plan\|search\|inject\|record` | +| Signals of interest through their sessions | Ma et al. (2023)'s eight signals in the 2.84 Hz products: every scan of each session read one coarse channel at a time by byte ranges; straight tracks at drifts to +-2 Hz/s with each spectrum summed over the channels a drift crosses; the line through the ON scans' per-spectrum peaks carried to every scan, its power against 200 parallel tracks, and the tracks of other pointings within 500 Hz and 0.05 Hz/s of it | `seti.py breakthrough soi trace\|table\|waterfall\|record` | +| The Wow! signal's cloud | HI4PI spectra averaged over 10 arcmin at the two 2025 fields: brightness and a column-density limit at -74 km/s, the brightest pixel at that velocity within each field's +-20 arcmin, every pixel within 3 deg against 5 sigma of its own noise, and the mean spectrum of those pixels for the diffuse gas | `seti.py radio_sky wow [record] [--v-lsr -74] [--dv 5] [--average-arcmin 10] [--search-deg 3] [--nearest-sigma 5]` | +| Persistent spacecraft lines | Wind/WAVES and STEREO/WAVES occupancy, anomaly days and list-mode channels left out; a line one spacecraft alone holds is its own; RAD1 measures 32 to 38 of its 256 channels and the archive interpolates the rest, so `wind rad1` tests the measured channels against their measured neighbours alone | `seti.py radio_sky wind fetch\|analyse\|daily\|stereo\|rad1\|rad1_record`; `papers/subcutoff_radio/make_numbers.py` for the band fractions and the flux thresholds | +| Sidereal persistence | e-Callisto stations, navigation, FM and sky-locked swings set aside, two stations compared | `seti.py radio_sky callisto fetch\|analyse\|report\|compare` | +| Linear polarisation above the synchrotron ceiling | NVSS sources above 10 mJy with polarised flux above 6 mJy (VizieR VIII/65 with column filters); the Rician-debiased polarised fraction's lower bound at three sigma against 0.72; survivors read for their deconvolved size, ATNF pulsars within the position error, NVSS sources above 500 mJy within 10 arcmin (VizieR TAP) and SIMBAD within 30 arcsec; null from every source simulated at the ceiling with its own errors | `seti.py radio_sky polceiling fetch\|analyse\|record` | +| Brick-wall spectral edges in GLEAM-X | GLEAM-X DR1 (VizieR VIII/110) integrated flux densities in twenty sub-bands, sources above 20 sigma in the wide band with sixteen or more sub-bands; a curved power law in log-log against the same law times a step at each boundary within one 30 MHz observing setting; the chi-square gain's top 0.1 per cent with a step above 30 per cent and three times the band scatter; the step refitted in the twenty nearest sources at the same boundary, a shared step being the sub-band's own error | `seti.py radio_sky gleamx analyse\|record` | +| Solar-gravitational-lens receivers | RACS and VLASS components near the antipodes of systems within 6.7 pc, fitted to the 1 AU / D parallax ellipse against control positions | `seti.py radio_sky sgl targets\|fetch\|vlass\|fit\|record` | + +### Biosignatures + +| Approach | Data and rule | Run | +|---|---|---| +| Methane and carbon dioxide without carbon monoxide | the NASA Exoplanet Archive's JWST transmission spectra of planets below 3.5 Earth radii with equilibrium temperature below 450 K or insolation below three Earths', one reference per planet and instrument and each visit once; templates of H2O, CH4, CO2, CO, NH3, dimethyl sulfide, N2O, SO2, OCS and O3 from their cross-sections at the planet's temperature; CH4 and CO2 at 3 sigma with CO below 2 sigma, or dimethyl sulfide at 3 sigma | `seti.py biosignatures disequilibrium record [--rade-max 3.5] [--teq-max 450] [--sigma 3]` | +| Atmospheres of the Rocky Worlds planets | the Rocky Worlds DDT's JWST MIRI F1500W eclipse catalogues from MAST, each planet's joint fit or the weighted mean of its eclipses, turned into a dayside brightness temperature through the star's measured 15 um flux, its distance and the planet's radius, against T_eff (R*/a)^1/2 (2/3)^1/4; below 0.8 at 3 sigma an atmosphere or a bright surface, above 1 at 3 sigma more heat than starlight supplies; parameters from TEPCat | `seti.py biosignatures rockyworlds fetch\|record [--ratio-atm 0.8] [--sigma 3] [--draws 20000]` | +| Gases of every planet with a published spectrum | every transmission and emission spectrum the NASA Exoplanet Archive lists, every one MAST's Exo.MAST serves for TEPCat's planets, every VizieR table of one (found by its description, its wavelength by UCD and unit, a table of several planets, instruments or visits split by its text column) and every one a Zenodo record holds in a readable table (its search's queries in `biosignatures.ZENODO_QUERIES`; large zips read member by member by byte range, those of models, retrievals and opacities left aside; columns found by name or, unnamed, by the layouts papers use; planets matched to TEPCat's transiting planets), identical spectra kept once; each binned to R 100 and fitted alone with an offset, a scattering slope below 1 um and templates of H2O, CH4, CO2, CO, NH3, SO2, OCS and O3 from Exo-Transmit's cross-sections at the tabulated temperature nearest the planet's, N2O from HITRAN's lines and dimethyl sulfide from NIST's infrared spectrum, each the logarithm of its cross-section above a floor of 1e-4 of its peak, with Na and K as bands, its errors scaled to the fit's own scatter; each gas's median significance over a planet's spectra; CH4 and CO2 without CO, dimethyl sulfide or N2O at 3 sigma flag a planet, which a hot, giant or hydrogen-enveloped planet's chemistry, methane beside a DMS reading and a cool host's spots explain where they apply; Earth's own transit spectrum (ACE-FTS, Macdonald and Cowan 2019) is the control, and Earth laid on each temperate small planet's spectra with their errors gives what its data could see | `seti.py biosignatures atlas search\|fetch\|exomast\|vizier\|parse\|record [--sigma 3] [--hot-k 450] [--giant-rjup 0.32] [--envelope-rjup 0.143] [--cool-host-k 3500]` | + +## Citation + +Charles C. Norton, *seti-tools: technosignature and biosignature searches on public astronomical archives*, +https://github.com/CharlesCNorton/seti-tools (2026), mirrored at https://huggingface.co/phanerozoic/seti-tools. + +## Licence + +The code (`.py` and `.jl` files) is under the MIT License; everything else, the papers, documentation and coverage +store included, is under CC BY 4.0. Both are in `LICENSE`. + +## Acknowledgements + +Gaia and Hipparcos (ESA; Gaia DPAC, funded by the institutions of the Gaia Multilateral Agreement); SIMBAD, VizieR and +XMatch (CDS, Strasbourg); MAST (STScI, AURA, NASA contract NAS 5-26555): TESS, Kepler, HST, IUE, GALEX, Pan-STARRS1; IRSA +(Caltech, NASA): WISE, NEOWISE, CatWISE2020, SPHEREx, Planck, ZTF, Euclid, the NASA Exoplanet Archive with its JWST +spectra, and ExoFOP; Breakthrough Listen (Berkeley SETI +Research Center); HI4PI; the ESO Science Archive; CARMENES DR1; XMM-Newton; the Chandra Source Catalog; SDSS-IV APOGEE; +DESI (Astro Data Lab); GALAH; LAMOST; DASCH; eROSITA eRASS1; Fermi-LAT; IceCube; SPT-3G; RACS (CASDA); VLASS +(CIRADA); LoTSS; AKARI; OGLE; the ATNF Pulsar Catalogue; CDAWeb (Wind and STEREO/WAVES); e-Callisto; Gaia alerts; the +Washington Double Star catalogue; El-Badry, Rix and Heintz (2021); JPL's Small-Body Database and Horizons; the PDS Small +Bodies Node; the Asteroid Lightcurve Database; SsODNet; NIST ASD; refractiveindex.info; the SVO vanishing-objects +archive; the Legacy Surveys; VHS, VIKING and UKIDSS; NVSS, GLEAM-X, CRATES and the Radio Fundamental Catalogue; +CHIME/FRB; Swift and Fermi GBM (HEASARC); LHAASO; H.E.S.S.; GWOSC; the Pierre Auger Observatory and Telescope Array; +CNEOS and NASA's GLM bolide database; the Global Meteor Network; NELIOTA; CADC and SkyBoT; TEPCat (J. Southworth); the Encyclopaedia of +Exoplanetary Systems; Zenodo and the authors who placed their spectra there; the JWST Rocky Worlds DDT; Exo.MAST (STScI); HITRAN; Exo-Transmit +(E. Kempton and collaborators); the NIST Chemistry WebBook; ACE-FTS on SCISAT (Canadian Space Agency) and Macdonald and Cowan's transit spectrum of Earth; ALMA (a partnership of ESO, NSF and NINS with NRC, NSTC and ASIAA, and KASI, in cooperation with the Republic +of Chile; the Joint ALMA Observatory is operated by ESO, AUI/NRAO and NAOJ) and Splatalogue (NRAO). diff --git a/RESULTS.md b/RESULTS.md new file mode 100644 index 0000000000000000000000000000000000000000..63e1559bb1a7ad90d789d15b1305dc185ace8452 --- /dev/null +++ b/RESULTS.md @@ -0,0 +1,3151 @@ +# Results + +Generated by `python -I seti.py store table` from the Searched table of `LEDGER.md` and the coverage store. Each approach's result is the ledger's, stated after vetting; each run's own output before vetting is the `result` column of its row in the store. + +A run is one row of the store's `searches` table. Its sample is the number of things it searched (`n_targets`) in the unit named (`n_unit`), and samples in different units are never added. Its rows are its rows in the `coverage` table, one for each target for which it recorded a statistic, a limit or a vet; many runs record only their flagged targets, so a run's rows are not its sample. A vetted row carries the codes of `README.md` for the explanations that removed it. + +508 runs of 393 approaches; 513470 per-target rows over 432045 distinct target identifiers. + +## Curved drift tracks, radio + +**Data.** Breakthrough Listen GBT: cached H I and OH channels of 13 stars; every coarse channel of 15 L- and S-band cadences on the eight nearest stars (GJ 406, 699, 411, 447, 273, 1111, 628, 876) + +**Runs.** `bl_curved_drift`: 13 stars, 13 per-target rows; `bl_curved_nearest`: 8 stars, 8 per-target rows + +**Result.** 7322 curved hits in the cached channels, none recurring in a second ON scan and absent from the OFFs; 5558 ON scan-channels of the nearest stars searched and the 366 cadence-channels where an ON hit recurred judged against their OFFs: no curved hit only in ON scans against 9 only in OFF scans (`bl_curved_nearest`) + +## Narrowband drift, radio + +**Data.** Breakthrough Listen: TRAPPIST-1, GJ 273, 24 cadences at H I and OH + +**Runs.** `bl_drift_2016`: 4 stars, 4 per-target rows + +**Result.** stopped; nothing beyond the published turboSETI results + +## Rest-frame line tracks, radio + +**Data.** Breakthrough Listen L band, 230 cadences; H I and OH in the CMB, Solar System and stellar frames + +**Runs.** `bl_rest_frame_tracks`: 178 stars, 178 per-target rows + +**Result.** 2037 tests with uniform p; low-p hits are zero-drift or off-source carriers + +## Planet-frame line tracks, radio + +**Data.** Breakthrough Listen TESS C and X band, 12 TOI hosts + +**Runs.** `bl_planet_frame_cx`: 12 stars, 12 per-target rows + +**Result.** 140 tests; none with every ON scan above every OFF + +## Frequency hopping and combs, radio + +**Data.** cached Breakthrough Listen cadences + +**Runs.** `bl_frequency_combs`: 11 cadences, 11 per-target rows; `bl_frequency_hops`: 11 cadences, 11 per-target rows + +**Result.** none on a target alone + +## Lines in sky fibres + +**Data.** SDSS DR17 BOSS and eBOSS spPlates: all 3853 plates, 381943 sky-fibre spectra + +**Runs.** `sdss_sky_fibres`: 381,943 sky-fibre spectra, 445 per-target rows, 164 vetted; `sdss_sky_fibres_shared2`: 381,943 sky-fibre spectra, 791 per-target rows, 410 vetted + +**Result.** every peak and dip at 6 sigma that passes the mask, airglow and width tests is kept with its count of other sky fibres at 3 sigma, so both sharing rules and every later test apply to both signs alike: under the two-fibre rule 3217 clean peaks and 4108 clean dips (970 and 1479 at 8 sigma), 762 and 1813 of them fixed to a fibre at other positions on other plates; the redshift test, with H alpha required beside a strong line and the [O III] doublet at a flux ratio of 1.5-5, marks 156 fibres against 4 among the dips and 11.6 +- 3.5 with the wavelengths shuffled: 154 galaxies at z 0.016-1.069 (median 0.44), six of them seen twice on different plates or nights, 122 with a Legacy Surveys source of median r 23.1, and two Galactic fibres; spectra holding clean lines of both signs set aside 10 peaks and 10 dips at 8 sigma, leaving 485 peaks and 336 dips, with Legacy Surveys sources within 1.5 arcsec at 181 of the 480 peaks the catalogue covers against 21 at positions 30 arcsec north and at 10 of 330 dips against 28, so 162 peaks are single lines of galaxies and the other 323 fall short of the dips by 13 to 31 +- 33; read in every spCFrame, 359 peaks and 241 dips persist (galaxy lines 179 of 188), 25 and 37 are single-exposure events and 1 and 16 one camera's, and net of counterparts 202 persistent peaks stand against 253 persistent dips (-52 +- 29); one line recurs at one position on two or more plate-nights at 37 peak positions against 3 dip positions, among them 4732.6 A in the SDSS-RM field on 54 plate-nights, which the stack of its 94 spectra shows resolved (287 km/s) and without companion lines, Ly alpha at z 2.893, and [O III] 5007 of the z 0.5525 galaxy on 7; the strongest persistent peak is [O III] 4959 of the planetary nebula Abell 31; between 6 and 8 sigma the dips outnumber the peaks (1899 against 1571), so the comparison is drawn at 8 sigma; the median 8 sigma line flux is 8.0e-17 erg/s/cm2, 37 W through 10 m aimed at Earth from 10 pc, and with 0.68 of lines recovered the fibres' 0.093 deg2 bound such transmitters to fewer than 850 per square degree, and those steady through the exposures to fewer than 790; the one-fibre rule gives 188 peaks against 236 to 245 dips; every peak and dip with its tests, counterparts and frame verdicts is in papers/sky_fibres/data (`sdss_sky_fibres_shared2`, `sdss_sky_fibres`) + +## Laser lines, Gaia RVS + +**Data.** 2363 FGK stars within 75 pc + +**Runs.** `laser_gaia_rvs`: 2,363 stars, 2363 per-target rows + +**Result.** none above the null; a line at the threshold carries a median 2.9e-15 erg/s/cm2, 1.2e20 W isotropic or 7e4 W through 10 m aimed at Earth at the median star, from each star's residual noise and G_RVS flux + +## Laser lines, HARPS + +**Data.** M and K dwarfs, transit-zone stars, 97 sun-like stars within 30 pc + +**Runs.** `etz_harps`: 8 stars, 15 per-target rows; `laser_harps`: 30 stars, 30 per-target rows; `laser_harps_fgk`: 97 stars, 97 per-target rows + +**Result.** none above the null + +## Laser lines, ESPRESSO, UVES, FEROS + +**Data.** sun-like stars within 50 pc + +**Runs.** `laser_espresso`: 65 stars, 65 per-target rows; `laser_feros`: 60 stars, 60 per-target rows; `laser_uves`: 35 stars, 35 per-target rows + +**Result.** no recurring group above the null; of the steady peaks above it, ESPRESSO's six lie within the neighbour model's own dip and its seventh (6961.5 A) where seven other stars carry model residuals; FEROS's nine sit in one night's exposures, eight of them the night of 2018-03-22 at one detector wavelength, and its tenth where 25 other stars carry residuals; one UVES group left, a cosmic ray on a low-S/N pseudo-continuum peak + +## Laser lines, SOPHIE + +**Data.** OHP archive: 1465 F to M dwarfs within 50 pc with high-resolution spectra on three or more nights, with the second fibre + +**Runs.** `laser_sophie`: 1,465 stars, 1465 per-target rows + +**Result.** no recurring group above the null; the one steady peak above it, 33 Peg at 3950.65 A between Ca II K and H, lies where 29 other stars carry residuals of their neighbour models (`laser_sophie`) + +## Laser lines, GALAH DR4 + +**Data.** 699 spectra of 621 dwarfs within 100 pc, each shifted to the star's rest frame + +**Runs.** `laser_galah`: 621 stars, 621 per-target rows, 33 vetted + +**Result.** 35 isolated emission-like peaks above the absorption-like null in 33 stars, all in camera I, whose null (21) sits far below the other cameras' (86-205) and whose continuum carries 36 emission-like peaks above S/N 20 against one absorption-like; 26 stars explained by the exposure's other fibres, the same fibre's other runs of the night, the star's other spectra or a peak narrower than three quarters of the instrument's width, the other 7 in their raw HERMES frames from the AAT archive: in six observations of three or four exposures the fibre holds no light in every exposure near the peak's column and single exposures hold charge there, one event of them on the trace with light's width as 0.4-7 per cent of the single-exposure events across 11-37 fibres of the same frames are, and the S/N 1687 peak, in an observation of one exposure, is charge 2.2 px from the fibre's trace (Findings); threshold median 1.3e-15 erg/s/cm2 a camera, 3e4 W through 10 m at the median star and 50 W at the nearest (4.3 pc) + +## Laser lines, APOGEE DR17 + +**Data.** 3370 dwarfs within 100 pc, combined spectra and 14178 visits + +**Runs.** `laser_apogee_steady`: 3,370 stars, 3370 per-target rows; `laser_apogee_visits`: 3,370 stars, 3370 per-target rows + +**Result.** none above the null; threshold median 1.6e-16 erg/s/cm2 from the combined spectrum's S/N and 2MASS H, 1.1e19 W isotropic, 2e4 W through 10 m at 1.6 um + +## Laser lines, DESI DR1 + +**Data.** 7718 stars within 100 pc + +**Runs.** `laser_desi_dr1`: 7,705 stars, 7705 per-target rows, 1 vetted + +**Result.** coadds of two or more exposures explained; 4749 single-exposure stars (62 per cent) need a second epoch; threshold median 2.1e-16 erg/s/cm2 a camera, 5e3 W through 10 m at the median star, 300 W within 20 pc and 5 W at the nearest (3.6 pc) + +## Laser lines, LAMOST MRS + +**Data.** 14400 stars within 100 pc + +**Runs.** `laser_lamost_mrs`: 14,400 stars, 14400 per-target rows, 82 vetted + +**Result.** 18 features in single stars against 17 by chance, mostly in two of 22-238 exposures; read in every exposure of every night of their stars, all 19 are one or two pixels wide above half their excess against an instrumental FWHM of 5.6-6.5 pixels, so they are detector pixels and not light through the spectrograph, and besides that six sit on masked, variance-inflated or dead pixels, eight have exposures whose peaks lie more than half a resolution element apart, four fill one night and none of the star's other nights, and three are single exposures of nights whose other exposures are flat; the strongest, 241 sigma in three exposures of one night, is a block of pixels at 1800 times the continuum beside it with the pipeline's variance inflated a thousandfold; per-exposure threshold median 3.0e-15 erg/s/cm2, 6e4 W through 10 m at the median star (`laser_lamost_mrs`) + +## Laser lines, CARMENES DR1 + +**Data.** 362 M dwarfs + +**Runs.** `laser_carmenes_vis`: 362 stars, 362 per-target rows + +**Result.** none once every epoch and every star is registered in its own frame + +## Laser lines, ultraviolet + +**Data.** StarCAT, COS, IUE, FUSE, and STIS after 2004 (4206 exposures of 867 stars) + +**Runs.** `cos_laser_lines`: 44 stars, 44 per-target rows; `fuse_laser_lines`: 42 stars, 42 per-target rows; `iue_laser_lines`: 40 stars, 40 per-target rows; `uv_laser_starcat`: 315 stars, 315 per-target rows; `uv_laser_stis`: 458 stars, 458 per-target rows + +**Result.** steady stellar lines in line-crowded spectra only; the seven Arcturus features sit at the brightest flux within 10 A of them, as windows between the absorption lines of a blanketed K-giant spectrum do, at the wavelengths of V II, Cr II, Mn II, Fe II and Co II lines (three within 0.3 km/s), three shared at z > 5 by one other star each; 0.1-7 W through a 10 m aperture aimed at Earth within 5 pc, the beam 0.005 au wide at 2 pc + +## Short-lived elements + +**Data.** Tc, Pm, Pa, Pu, Am and Cm in HARPS, UVES, FEROS and ESPRESSO spectra of sun-like stars within 50 pc + +**Runs.** `americium_espresso`: 86 stars, 86 per-target rows; `americium_feros`: 80 stars, 80 per-target rows; `americium_harps`: 95 stars, 95 per-target rows, 1 vetted; `americium_uves`: 116 stars, 116 per-target rows, 2 vetted; `curium_espresso`: 86 stars, 86 per-target rows; `curium_feros`: 80 stars, 80 per-target rows; `curium_harps`: 95 stars, 95 per-target rows; `curium_uves`: 116 stars, 116 per-target rows; `plutonium_espresso`: 86 stars, 86 per-target rows; `plutonium_feros`: 80 stars, 80 per-target rows; `plutonium_harps`: 95 stars, 95 per-target rows, 1 vetted; `plutonium_uves`: 116 stars, 116 per-target rows, 1 vetted; `promethium_espresso`: 86 stars, 86 per-target rows; `promethium_feros`: 80 stars, 80 per-target rows; `promethium_harps`: 95 stars, 95 per-target rows; `promethium_uves`: 116 stars, 116 per-target rows; `protactinium_espresso`: 86 stars, 86 per-target rows, 1 vetted; `protactinium_feros`: 80 stars, 80 per-target rows; `protactinium_harps`: 95 stars, 95 per-target rows; `protactinium_uves`: 116 stars, 116 per-target rows, 3 vetted; `technetium_espresso`: 86 stars, 86 per-target rows; `technetium_feros`: 80 stars, 80 per-target rows; `technetium_harps`: 95 stars, 95 per-target rows; `technetium_uves`: 116 stars, 116 per-target rows + +**Result.** 9 of 2262 tests below p 0.01 against 22.6 expected (a Poisson probability of 0.001 for so few: the nulls are conservative, the p values thinning at both ends because the scatter criterion keeps lines whose scores lie beyond 3 sigma in 1.3-2.8 per cent of cases against the random wavelengths' 1.5-3.6), all shared blends or one double star; Tc I limits 1.6-5.3 mA, A(Tc) < 0.69 for solar-type stars with HARPS and ESPRESSO on Korg curves of growth from A -1 to 3.5, which is 1.7e19 kg of Tc-99 in a solar convective envelope, the product of fissioning 6.6e20 kg of U-235, several thousand times the Earth's uranium, so the limit reaches system-scale disposal and not a planet's + +## Periodic spectral modulation + +**Data.** Borra and Trottier's 234 SDSS stars in SDSS, LAMOST and DESI + +**Runs.** `borra_modulation`: 228 stars, 228 per-target rows + +**Result.** no modulation at 1.6465e-13 s + +## Industrial gases + +**Data.** K2-18 b's MIRI transmission spectrum + +**Runs.** `k218b_industrial_gases`: 1 planet, 1 per-target row + +**Result.** consistent with zero, too noisy to test + +## Mid-infrared excess + +**Data.** AllWISE, 170 FGK stars from Breakthrough Listen sessions + +**Runs.** `ir_excess_bl`: 170 stars, 0 per-target rows + +**Result.** a debris disk, a blend and a catalogued excess + +## Fully enclosed stars + +**Data.** 36603 AllWISE sources red in W2-W3 + +**Runs.** `enclosed_stars`: 72 infrared sources, 72 per-target rows, 72 vetted + +**Result.** the 72 moving dark sources lie in clouds or among young stars + +## Dark companions + +**Data.** Gaia DR3 orbits (279) and proper-motion anomalies (195) + +**Runs.** `dark_companions_wise`: 279 companions, 279 per-target rows; `pma_dark_companions`: 191 stars, 191 per-target rows, 4 vetted + +**Result.** median bounds 0.3-0.4 per cent of the companion's light at 300 K; the four 3-sigma excesses among the anomalies are a diffraction spike, an M0 photosphere, 56 Per's white-dwarf companion and HD 59099's AllWISE photometry, 0.11 mag brighter at 12 um than the All-Sky release of the same exposures where the sample's two releases agree to 0.007 mag, its All-Sky excess +0.02 mag + +## SPHEREx spectra + +**Data.** Project Hephaistos candidates; Contardo and Hogg's 53 excess stars + +**Runs.** `spherex_hephaistos`: 30 stars, 30 per-target rows, 3 vetted; `spherex_contardo53`: 51 stars, 51 per-target rows, 51 vetted + +**Result.** background galaxies, a radio source, warm dust and red companions; JWST (Project Hephaistos IV, 2026) resolves the galaxies within about 1 arcsec of candidates D and E, the two whose SPHEREx spectra place the excess in a galaxy here; the fits from 1.6 to 5 um reach components above about 400 K only + +## Cold shells, 30-100 K + +**Data.** 27394 stars within 50 pc against AKARI + +**Runs.** `cold_shells_akari`: 27,394 stars, 35 per-target rows, 3 vetted + +**Result.** 35 matches against 26 by chance: clouds and known young disks + +## Habitable-zone stacks + +**Data.** WISE and DASCH at 178 hosts within 100 pc + +**Runs.** `dasch_hz_trends`: 377 stars, 377 per-target rows, 222 vetted; `hz_stack_wise`: 203 stars, 203 per-target rows, 1 vetted + +**Result.** intercepted fraction below 1.5e-5 at 300 K + +## Pulsars as megastructure hosts + +**Data.** 1978 timed pulsars against AllWISE + +**Runs.** `pulsar_ir_allwise`: 1,978 pulsars, 143 per-target rows + +**Result.** no ring-like counterpart + +## Vanished POSS I stars + +**Data.** 5893 infrared counterparts + +**Runs.** `vasco_ir_red`: 172,163 vanished sources, 4 per-target rows, 4 vetted + +**Result.** four red sources, none detected at W3; a source of R 19 enclosed at 200-600 K would reach W3 11.1-11.6 or W2 14-17, inside AllWISE's and CatWISE's limits, so the test covers enclosures of the catalogue's sources at those temperatures + +## Radio from inactive stars + +**Data.** VLASS, LoTSS-DR2 and RACS-low against nearby stars + +**Runs.** `lowfreq_quiet_lotss`: 90 stars, 2 per-target rows; `lowfreq_quiet_racs`: 167 stars, 3 per-target rows; `vlass_quiet_radio_stars`: 605 stars, 604 per-target rows, 604 vetted + +**Result.** at the chance-alignment rate; the two brightest coincidences, 52.6 mJy at 0.34 arcsec from Gaia DR3 2906691964510880128 and 81 mJy at 1.2 arcsec from Gaia DR3 1283261877869284096, are background radio galaxies, the first by a steady steep spectrum from 0.86 to 3 GHz (alpha -0.5 to -0.7) that no star gives, the second resolved by LoTSS (9 x 7 arcsec at 144 MHz) with a second WISE source beside the star (`vlass_quiet_radio_stars`) + +## Circular polarisation + +**Data.** V-LoTSS, RACS-low2 Stokes V, MWA + +**Runs.** `circular_polarisation`: sample not recorded (radio sources), 0 per-target rows + +**Result.** pulsars, active stars and published brown-dwarf candidates + +## Linear polarisation above the synchrotron ceiling + +**Data.** NVSS (VIII/65): 26973 sources above 10 mJy with polarised flux above 6 mJy + +**Runs.** `nvss_polarisation_ceiling`: 26,973 radio sources, 23 per-target rows, 23 vetted + +**Result.** the Rician-debiased polarised fraction's lower bound at three sigma against 0.72, the most incoherent synchrotron gives: median fraction 0.058, 99th percentile 0.51; 23 above the ceiling, every one with a polarised flux at or above its total flux (debiased fractions 0.98-2.97), which no component can have and which the diffuse polarised emission of the field explains, the sources lying in Fornax A's lobes, on the Galactic plane in Cygnus, Cassiopeia and Aquila and in other extended fields, so the catalogue's polarised fluxes are the field's where the Stokes I component is small; none at a pulsar; the Rician errors alone would put 0.6 sources above the ceiling (`nvss_polarisation_ceiling`) + +## 21 cm lines, HI4PI + +**Data.** 27723 stars within 50 pc, two rest frames, and blind + +**Runs.** `hi4pi_blind_voxels`: 9,756,216,145 HI4PI voxels, 720 per-target rows; `hi4pi_cmb_gsr_frames`: 20,948,441 HEALPix pixels (nside 1024), 0 per-target rows; `hi4pi_star_frames`: 27,720 stars, 27723 per-target rows + +**Result.** at the noise and cold-hydrogen rates + +## Lines below the ionospheric cutoff + +**Data.** Wind/WAVES 1995-2021, STEREO-A and -B + +**Runs.** `wind_waves_2020`: sample not recorded (days), 4 per-target rows, 2 vetted; `wind_waves_2021`: sample not recorded (days), 4 per-target rows, 2 vetted; `stereo_waves_a_2008`: sample not recorded (days), 0 per-target rows; `stereo_waves_a_2012`: sample not recorded (days), 0 per-target rows; `stereo_waves_a_2020`: sample not recorded (days), 0 per-target rows; `stereo_waves_b_2010`: sample not recorded (days), 0 per-target rows; `stereo_waves_b_2012`: sample not recorded (days), 0 per-target rows; `wind_waves_1995`: sample not recorded (days), 0 per-target rows; `wind_waves_1996`: sample not recorded (days), 0 per-target rows; `wind_waves_1997`: sample not recorded (days), 0 per-target rows; `wind_waves_1998`: sample not recorded (days), 0 per-target rows; `wind_waves_1999`: sample not recorded (days), 0 per-target rows; `wind_waves_2000`: sample not recorded (days), 0 per-target rows; `wind_waves_2001`: sample not recorded (days), 0 per-target rows; `wind_waves_2002`: sample not recorded (days), 0 per-target rows; `wind_waves_2003`: sample not recorded (days), 0 per-target rows; `wind_waves_2004`: sample not recorded (days), 0 per-target rows; `wind_waves_2005`: sample not recorded (days), 0 per-target rows; `wind_waves_2006`: sample not recorded (days), 0 per-target rows; `wind_waves_2007`: sample not recorded (days), 0 per-target rows; `wind_waves_2008`: sample not recorded (days), 0 per-target rows; `wind_waves_2009`: sample not recorded (days), 0 per-target rows; `wind_waves_2010`: sample not recorded (days), 0 per-target rows; `wind_waves_2011`: sample not recorded (days), 0 per-target rows; `wind_waves_2012`: sample not recorded (days), 0 per-target rows; `wind_waves_2013`: sample not recorded (days), 0 per-target rows; `wind_waves_2014`: sample not recorded (days), 4 per-target rows, 4 vetted; `wind_waves_2015`: sample not recorded (days), 1 per-target row, 1 vetted; `wind_waves_2016`: sample not recorded (days), 0 per-target rows; `wind_waves_2017`: sample not recorded (days), 0 per-target rows; `wind_waves_2018`: sample not recorded (days), 0 per-target rows; `wind_waves_2019`: sample not recorded (days), 0 per-target rows; `wind_rad1_2020`: 48 frequency channels, 26 per-target rows, 26 vetted + +**Result.** none outside spacecraft and terrestrial lines; RAD1 measured only 32 to 38 of its 256 channels in nearly every minute of every year and the archive interpolates the rest, so every RAD1 line of the full-channel test was a measured channel above interpolated neighbours; at the measured channels alone, 2020 holds 26 persistent lines, all plasma-line and auroral below 500 kHz and none above 700 kHz (`wind_rad1_2020`); RAD2's channel scatter is 2.4 per cent of the galactic background, so a 5 sigma line in its 20 kHz channel is 2e-16 W/m2, 6e7 W isotropic at 1 au and 2e18 W at 1 pc, and STEREO's 50 kHz channels reach about 2e-15 W/m2; 64 per cent of RAD2's band and 52 per cent of STEREO's lie inside the terrestrial service bands, where a line is assigned to the service + +## Sidereal persistence + +**Data.** e-Callisto in Greenland, Norway, Alaska and Australia + +**Runs.** `callisto_sidereal_norway-randaberg_01_2025`: 200 frequency channels, 200 per-target rows, 72 vetted; `callisto_sidereal_alaska-haarp_62_2025`: 192 frequency channels, 192 per-target rows, 51 vetted; `callisto_sidereal_australia-assa_62_2025`: 391 frequency channels, 391 per-target rows, 204 vetted; `callisto_sidereal_greenland_62_2025`: 192 frequency channels, 192 per-target rows, 98 vetted + +**Result.** nothing at two stations beyond bright-source transits + +## Solar-gravitational-lens receivers + +**Data.** RACS and VLASS at 119 antipodes + +**Runs.** `sgl_parallax_racs`: 119 systems, 119 per-target rows; `sgl_parallax_racs_vlass`: 119 systems, 119 per-target rows + +**Result.** one on-track source against four at controls + +## Stars in planetary-radar beams + +**Data.** JPL radar astrometry 1968-2025 + +**Runs.** `radar_beam_stars`: 813 stars, 813 per-target rows + +**Result.** 813 stars in the beams of 825 radar pings, the nearest at 48.9 ly behind 2017 SL16 (Arecibo, 2019 September); the first replies are due in 2117 (`radar_beam_stars`) + +## Reply windows + +**Data.** transit-zone stars within 45 ly in Breakthrough Listen + +**Runs.** `reply_window_etz_bl`: 4 stars, 4 per-target rows; `bl_curved_drift_gj169_s`: 1 star, 1 per-target row; `curved_gj169_l`: 1 star, 1 per-target row, 1 vetted + +**Result.** GJ 169 only: rest-frame lowest p 0.032, S band in occupied allocations; L-band curved tracks leave two lone hits at 1424.51 and 1424.64 MHz in the one ON scan of 2016 August 26, the -66 and +66 kHz sidebands of a carrier at 1424.5787 MHz that switched on for two minutes with sidebands at -121 and +121 kHz as well, all drifting at +0.55 to +0.65 Hz/s where a source fixed on the sky drifts at -0.11 Hz/s; the carrier recurs on that drift in the scans of Hip21932 and Hip20897 17 and 12 minutes earlier (S/N 7.6 and 8.1, within 140 Hz of the extrapolation), so it is a transmitter in the sidelobes with a drifting oscillator (`curved_gj169_l`) + +## Fresh transit-zone entrants + +**Data.** Gaia DR3: the 40,499 stars within 100 pc and 5 deg of the ecliptic with proper motions, their motion in ecliptic latitude, joined to Hipparcos, the coverage store and the Breakthrough Listen target list + +**Runs.** `etz_fresh_entrants`: 40,499 stars, 0 per-target rows + +**Result.** 2,352 see Earth transit the Sun now, and 7 enter the zone within the next century, the nearest Gaia DR3 35227046884571776 at 3.8 pc in 2042; a list for the tests that look at the zone, with Wolf 359 and 89 Leo searched in radio (`etz_fresh_entrants`) + +## Pulsar antipodes + +**Data.** 45116 stars near 100 pulsar antipodes + +**Runs.** `pulsar_antipodes`: 45,116 stars, 44037 per-target rows + +**Result.** none at p below 0.01 in the coverage store + +## High-energy sources + +**Data.** 2626 Gaia sources within 20 pc against eRASS1 and 4FGL + +**Runs.** `highenergy_near20`: 2,626 Gaia sources, 2626 per-target rows + +**Result.** flare stars and active binaries; gamma-ray coincidences at the chance rate + +## TeV neutrinos + +**Data.** IceCube tracks at 271 systems within 10 pc + +**Runs.** `icecube_near10`: 315 Gaia sources, 315 per-target rows + +**Result.** consistent with background + +## Millimetre flares + +**Data.** 66 SPT-3G flare stars + +**Runs.** `spt3g_quiet_flares`: 66 stars, 66 per-target rows, 66 vetted + +**Result.** X-ray active stars and late-M emission-line dwarfs + +## Narrowband millimetre lines + +**Data.** ALMA pipeline cubes, 96 spectra of 20 stars within 20 pc + +**Runs.** `alma_nearby`: 24 observing units, 24 per-target rows + +**Result.** none at 6 sigma in 87130 channels; 464 of 480 injected 8-sigma lines recovered + +## Long-period radio transients + +**Data.** 16 published LPTs against Gaia DR3 at their localisations + +**Runs.** `lpt_gaia`: 16 radio transients, 16 per-target rows, 10 vetted + +**Result.** ten white-dwarf binaries, X-ray outbursts or rotators; no star at the DM distance beyond chance at the other six + +## X-ray periodicities + +**Data.** Chandra and XMM-Newton within 10-20 pc + +**Runs.** `xray_beacons_csc`: 50 stars, 50 per-target rows; `xray_beacons_xmm`: 180 X-ray detections, 91 per-target rows + +**Result.** at the chance rate + +## Ultraviolet pulses + +**Data.** GALEX and HST photon lists within 10 pc + +**Runs.** `galex_fuv_pulses`: 26 stars, 26 per-target rows; `galex_nuv_pulses`: 51 stars, 51 per-target rows, 1 vetted; `hst_photon_pulses`: 108 stars, 112 per-target rows, 4 vetted; `galex_burst_census`: 98 bursts, 98 per-target rows + +**Result.** flare peaks and chance; one isolated 100 ms near-UV brightening of GJ 725 A, 7 photons against 0.2, clean of detector and field events, fixed to the star in rebuilt detector coordinates; a census of 116 GALEX NUV eclipses finds 98 isolated 7-photon bursts, the mapped ones recurring at the detector's edge, and none on a catalogued star matching GJ 725 A's (`galex_burst_census`); the visit is the star's only one with a photon list, its two all-sky visits having none in the public bucket, and GJ 725 B in the same visit holds 3 photons in its busiest 100 ms against 0.1 expected; the nine photon clusters at false-alarm probability below 0.01 among 147 star-eclipses of 51 stars against 4.8 expected are five events, two of them counted once per component of G 272-61 and Wolf 424, on Wolf 359, Ross 128, Wolf 424, G 272-61 and GJ 725 A, every one a flare star, so they are flares + +## Glints + +**Data.** Kepler and TESS candidate periods; TESS 20 s within 30 pc; asteroid light curves + +**Runs.** `alcdef_glints_20261014`: 4,723 lightcurve sessions, 4723 per-target rows; `tess20_glints`: 2,149 stars, 2149 per-target rows; `kepler_sc_glints`: 765 stars, 765 per-target rows; `tess_toi_glints`: 6,355 stars, 6355 per-target rows + +**Result.** at the chance rate; the per-cadence scatter after detrending is 780 ppm (Kepler short cadence), 1600 ppm (TESS two-minute) and 3000 ppm (TESS 20 s), so a 5 sigma flash is 0.4 to 1.5 per cent of the star, a perfect flat reflector of 3-8e15 m2 reflecting the star's disc; the four quiet cadences required on each side pass a flash in white noise with probability 0.69, and the package's end-to-end test of the Kepler detector recovers 0.62 of isolated 10 sigma flashes; the one-to-three-cadence window covers spinning reflectors whose beam crosses the observer in minutes, not orbit-locked mirrors whose glints last 1.5 to 6 hours + +## Hollow planets around old stars + +**Data.** Exoplanet Archive: 627 planets with measured masses at 3 sigma and bulk density below 1 g/cm^3 + +**Runs.** `exoplanet_hollow`: 627 planets, 627 per-target rows + +**Result.** escape parameter Lambda against host age: the lowest Lambda belongs to young planets (V1298 Tau c and d, HIP 67522 b, Kepler-51 c, 17-300 Myr), as evaporation predicts; of 379 around stars of 3 Gyr or more none is below 10, the lowest Kepler-223 e at 10.5 (`exoplanet_hollow`) + +## Nightside light + +**Data.** 63 ultra-short-period rocky planets + +**Runs.** `tess_usp_nightside`: 63 planets, 63 per-target rows + +**Result.** none above 3 sigma; median limit 102 ppm, which is 21 times the starlight the median planet intercepts, (R_p/2a)^2 = 0.5-33 ppm, so the limits bound only light of a non-stellar source, 4e21 W at the median (2e20 to 1e23) + +## Clarke exobelts + +**Data.** 461 Kepler planets + +**Runs.** `exobelts_kepler`: 461 planets, 395 per-target rows, 13 vetted + +**Result.** none; median limit 117 ppm six planetary radii out + +## Clarke exobelts beyond 30 days + +**Data.** Kepler DR25 long-cadence light curves of the 331 candidate and confirmed planets below 2 Earth radii beyond 30 d on 322 FGK dwarfs (4000-6500 K, log g 4 or above, Kp 16 or brighter), where tides leave a planet unlocked and its synchronous orbit lies inside the Hill sphere + +**Runs.** `exobelts_kepler_long`: 284 planets, 277 per-target rows, 7 vetted + +**Result.** shoulders k Rp/v beyond contact, k 3-90 within half the Hill radius, against random phases: 284 planets measured in 893 planet-k tests, no null phase above z 5; 7 planets above z 4, 2 of them above 5 on both sides (KOI-4371.01 at 7.5, KOI-3436.01 at 7.2); against a null detrended as the transit is, with the light curve's own contacts and transit times, all 7 fall to z -0.9 to 2.2, every catalogue duration among them short of the light curve's (KOI-4371.01 8.6 h against 11.1; KOI-3436.01 5.0 h against 24.8, its transit times spread by 735 min); 3-sigma shoulder limits at k = 6 of 55 ppm best and 215 ppm median (`exobelts_kepler_long`) + +## Transit shapes + +**Data.** 1116 Kepler and 255 TESS rejects + +**Runs.** `kepler_transit_shapes`: 1,116 planet candidates, 1116 per-target rows, 135 vetted; `tess_toi_shapes`: 255 planet candidates, 255 per-target rows, 196 vetted + +**Result.** eclipsing binaries, variables and smooth dips; the eclipse on a blue supergiant is TOI-796.01, a 1.6 mmag dip at 0.81 d on a star whose radius puts that orbit inside it, a pulsation or a blended binary and a TFOP false alarm + +## Timing steps + +**Data.** 1810 Kepler candidates; 2939 LMC Cepheids + +**Runs.** `cepheid_phase_steps`: 2,939 stars, 2939 per-target rows, 4 vetted; `kepler_ttv_steps`: 1,810 planet candidates, 1810 per-target rows, 7 vetted + +**Result.** known timing variations and chance + +## Impulsive period changes + +**Data.** Holczer et al. (2016) Kepler transit times: 1810 KOIs with 20 or more good transits + +**Runs.** `impulsive_period_changes`: 1,810 planet candidates, 1810 per-target rows, 6 vetted + +**Result.** a two-segment ephemeris continuous at a break scanned over the transits against the best sinusoid and the quadratic, the kink's gain in chi-square less the extra parameter's log N as its evidence: 6 kinks above 10 over both at 5 sigma in the period change; each candidate's own sinusoid at a random phase with first-order autoregressive noise of its residual scatter (60 draws) is beaten by two, KOI-2217.01 and Kepler-142 b, and both kinks rest on the series' last transits, KOI-2217.01's on its final two (-143 and -175 min after 35 within 50) and Kepler-142 b's on its final one (-44.5 +- 6 min), so with any one transit left out the evidence falls below 10 and none remains; KOI-984.01's and KOI-3692.01's kinks sit inside their sinusoidal timing variations (`impulsive_period_changes`) + +## Century-scale dimming + +**Data.** DASCH, 300 sun-like stars + +**Runs.** `dasch_century_dimming`: 300 stars, 300 per-target rows + +**Result.** two trends, both inconsistent between plate series + +## Dimming in survey photometry + +**Data.** TESS, Hipparcos epochs, Hipparcos to Gaia, Gaia epochs, Gaia alerts, NEOWISE + +**Runs.** `tess_slow_dimming`: 33 stars, 33 per-target rows; `gaia_alerts_near`: 28 alerts, 28 per-target rows, 28 vetted; `gaia_dr3_dippers`: 130 stars, 130 per-target rows, 130 vetted; `hip_gaia_dimming`: 15,189 stars, 15189 per-target rows, 730 vetted; `hipparcos_dippers`: 2,963 stars, 2963 per-target rows, 2963 vetted; `neowise_decade_trends`: 298 stars, 298 per-target rows, 89 vetted + +**Result.** explained, or at the rate of control stars + +## Polarised reflectors + +**Data.** 819 stars within 50 pc + +**Runs.** `polarised_reflectors`: 807 stars, 807 per-target rows, 31 vetted + +**Result.** 4 polarised beyond the interstellar expectation with no explanation, three of them on one photoelectric measurement each from Heiles' compilation (1630-4540 ppm at 3.9-4.8 sigma); the fourth, HD 101805 (F8V, 34 pc, 3.9 Gyr), reads 223 ppm at 9 deg on one night, rising from 172 ppm in R to 314 in B, where the nine stars measured at the ppm level nearer than 35 pc within 22 deg read 12-45 ppm, five of them at 72-88 deg; the far infrared leaves too little dust to scatter that much light and hot dust polarises by 30 ppm or less, more in the red (Marshall et al. 2016), while a cloudlet in front of it would have to end within 2.7 pc of its sightline and carry a field turned 63-79 deg from its surroundings'; its 2026 Gemini/GHOST spectra measure the gas in front of it from 2027 July + +## Intrinsic polarisation of quiet dwarfs + +**Data.** the Panopoulou et al. (2025) compilation (J/ApJS/276/15): 37210 stars with Stokes q and u, Gaia EDR3 identifiers and distances, 29442 unflagged with five or more neighbours within 3 deg and 20 per cent in distance, 28704 of them judged within their own catalogues + +**Runs.** `intrinsic_polarisation`: 29,442 stars, 4 per-target rows, 3 vetted + +**Result.** the residual Stokes vector against the neighbours' mean over its error and the field's scatter: above 3 sigma in 8.3 per cent against 7.4 with the measurements reassigned among neighbours, above 5 in 1.2 against 0.9; four dwarfs within 200 pc at 5 sigma with residuals above 0.1 per cent and five times the field's scatter, discordant in angle or in an unpolarised field: HD 142832 (0.42 per cent) sits in the Lupus 1 field of Alves and Franco (2006) at the cloud's distance, Dachs SMC 2-61 (1.65 per cent, RUWE 8.9, an X-ray source) is a binary or a blend in a crowded SMC field, and two rested on single old catalogue entries: HD 127769 (A7V at 187 pc, 1.3 per cent at 43 deg in Heiles 2000 against the field's 0.4 per cent at 87 deg) is interstellar after all, since Gaia gives it A_G 0.32 where its nearer neighbours have none and Planck's 353 GHz dust at its position is polarised at 18 per cent with a field that predicts starlight at 52 deg and 1.9 per cent for the full column, the measured 43 deg and 1.3 per cent sitting on that sightline; and HD 31435, an F9/G0 at 100 pc, 8-9 Gyr old at the turnoff, read at 5.48 +- 0.15 per cent and 47 deg in Johnson V on the Lowell 42-inch in 1977 November and listed by name in Table 2 of Moneti et al. (1984), whose other 93 stars of that run read below 0.4 per cent within 130 pc and rise with reddening beyond; no other polarimetry of it exists in 135 VizieR catalogues; Gaia gives E(BP-RP) 0.00 and B-V 0.565 against an intrinsic 0.58, WISE sees the photosphere to 22 um, TESS, K2 and Hipparcos are flat to 0.03 per cent, RUWE 0.99 and a proper-motion anomaly of 20 +- 32 m/s allow no companion, Gaia's 17 velocities over 920 d are constant to 1 km/s, and the Harvard plates show no dimming around 1977 against matched stars on the same plates; the angle matches the field's 46-66 deg behind the cloud, and HD 283904, a reddened A2 star of the same brightness 5 arcmin away at 214 pc with A_G 1.3 and the 1.527 um interstellar band in its APOGEE spectrum, would read near that value; Planck's 353 GHz polarisation at the position (6-8 per cent, read from the HEALPix map by HTTP range) predicts 49-54 deg for starlight behind the column, against the measured 47, and 2.3-2.8 per cent for its amount (P_353 over 5.4 MJy/sr), half the measured value, so a swap needs an efficiently polarising sightline; the star's Gaia XP spectrum against 40 unreddened twins is flat to 0.3 per cent from 400 to 700 nm and 0.5 per cent high at 800-900 nm, within the twins' spread, which excludes a tenth of the light reflected from aluminium or a dielectric and leaves a grey reflector; Pan-STARRS profiles against three stars of like brightness in the same frames show no excess light at 2-13 arcsec in any filter, so no extended reflector beyond 100 AU either, and with WISE inside 10 AU and Gaia's image statistics between, a reflector has no distance left; so the 1977 entry is a wrong star on a one-in-twenty sightline, and one measurement of both stars decides (`intrinsic_polarisation`) + +## Imaging survey candidates + +**Data.** Gemini/NICI and NaCo + +**Runs.** `naco_candidate_motion`: 72 candidate companions, 15 per-target rows; `nici_candidate_motion`: 58 candidate companions, 2 per-target rows, 2 vetted + +**Result.** bound companions, background stars and field dwarfs + +## Phase-space clustering + +**Data.** 2977 wide binaries in the coverage store + +**Runs.** `phase_space_pairs`: 2,977 pairs, 0 per-target rows + +**Result.** only the likeness of co-natal stars + +## Orbital poles against the Galactic plane + +**Data.** Gaia DR3 nss_two_body_orbit astrometric solutions (Orbital, OrbitalAlternative, OrbitalTargetedSearch, AstroSpectroSB1) with Thiele-Innes elements, 125786, joined to binary_masses: 1361 companions whose lower mass bound lies below 0.08 Msun (74 with the upper bound below 0.2) against 87382 with lower bounds above 0.2 + +**Runs.** `orbital_poles_galactic`: 1,361 orbits, 1358 per-target rows, 84 vetted + +**Result.** each orbit's inclination and the two candidate nodes from the elements, the fraction with either candidate pole within 15 deg of a Galactic pole (3.4 per cent for one isotropic pole, 6.3 for the stellar set's two): possibly substellar 6.2 per cent (84 of 1361) against the stellar set's 6.3 reweighted to the same Galactic latitudes (p 0.59); the strict set 9 of 74 against 4.7 +- 2.1 at that size (p 0.04), the one reading of a small set among several (`orbital_poles_galactic`) + +## Asteroid spins, surfaces and radar + +**Data.** LCDB, Gaia DR3 reflectance spectra, radar albedos + +**Runs.** `lcdb_spin_barrier`: 31,149 rotation periods, 0 per-target rows; `asteroid_radar_albedo`: 315 asteroids, 315 per-target rows, 9 vetted; `gaia_sso_surfaces`: 58,208 small bodies, 58208 per-target rows + +**Result.** known fast rotators, no solar-cell surface, no specular reflector + +## Area-to-mass ratios + +**Data.** 301 small bodies with non-gravitational terms + +**Runs.** `nga_amr`: 301 small bodies, 301 per-target rows, 37 vetted + +**Result.** three light bodies: 2008 GO98, 'Oumuamua and the dark comet 2016 NJ33 + +## Exact commensurability + +**Data.** 2393 planet pairs in the NASA Exoplanet Archive + +**Runs.** `exact_commensurability`: 1,056 planet pairs, 1056 per-target rows + +**Result.** none within 1e-5 of a small-integer ratio; 5 within 1e-4 against 3.4, the closest in the librating chains of TOI-1136, Kepler-223 and HD 110067 + +## Light without mass + +**Data.** 42 Gaia DR3 astrometric orbits within 100 pc with HARPS or HIRES velocities + +**Runs.** `massless_orbits`: 42 orbits, 42 per-target rows, 7 vetted + +**Result.** 9 photocentre orbits the velocities exclude: close companions (HD 80883, HD 163441, HD 105113B), a long-period companion (HD 217850), HD 223238's 61-day period beside the scanning law, and blended double-lined stars, the two whose velocities scatter by 0.5-0.9 km/s being pairs Gaia itself sees: Gaia DR3 1754663916181432704 shows two image peaks in 51 per cent of its transits and 792549013757246976 had a neighbour's spectrum deblended from 10 of its 29 RVS transits, so their orbits are photocentres of resolved pairs and their velocities are blends; none with warm W3 excess + +## Cold shells, 10-30 K + +**Data.** 27394 stars within 50 pc against Planck PCCS2, PGCC and AKARI 140-160 um + +**Runs.** `colder_shells`: 27,394 stars, 27394 per-target rows, 80 vetted + +**Result.** matches at the chance rate of shifted positions; the strongest would need more than the star's luminosity: cold clumps and cirrus + +## Joint anomaly across methods + +**Data.** 223 targets with rank-calibrated p values from two or more of seven families of runs + +**Runs.** `joint_anomaly`: 223 targets, 20 per-target rows + +**Result.** no star beyond chance: the strongest, Gaia DR3 5730371484020807808 (elements 0.05, glints 0.05), at 0.86 of the family-shuffled maxima; most runs give no p yet + +## Lasers in line cores + +**Data.** the steady peaks of the HARPS, ESPRESSO, FEROS and UVES runs inside chromospheric and Balmer cores + +**Runs.** `laser_line_cores`: 285 stars, 230 per-target rows, 6 vetted + +**Result.** 6 unresolved peaks above the core null, all in Balmer and He I lines 17-100 km/s from their centres where the neighbour template dips; none in the Ca II H and K or Na D cores + +## Warm dust without pollution at white dwarfs + +**Data.** DESI DR1's 45053 white-dwarf spectra (zpix) joined on Data Lab to unWISE and Gaia DR3: 6627 with unWISE matches, 1434 detected in W1 and W2 with parallaxes at 5 sigma + +**Runs.** `desi_wd_dust_pollution`: 1,434 white dwarfs, 5 per-target rows, 5 vetted + +**Result.** the white dwarfs' own G - W1 and G - W2 against BP - RP as the photosphere locus (scatter 0.33 mag): 13 exceed it at 5 sigma in both bands, 5 of them unblended with excess black bodies at 900-1500 K, every one 1.6-3.3 mag above the photosphere in W1, the excess of an unresolved brown dwarf rather than the 0.3-1 mag of a dust disc; their DESI spectra against the pipeline's templates constrain Ca II K only to 40-430 mA (G 17.2-19.5), so no accretion test reaches the 50 mA level, and no disc-like excess appears in a sample whose W2 detections confine it to the nearest and brightest white dwarfs (`desi_wd_dust_pollution`) + +## Cold excess around white dwarfs + +**Data.** 16676 white dwarfs within 100 pc (Gentile Fusillo et al. 2021) against AllWISE + +**Runs.** `wd_cold_excess`: 16,676 white dwarfs, 25 per-target rows, 5 vetted + +**Result.** 25 with W3 or W4 above the photosphere at 3 sigma and W1-W2 photospheric; the strongest are an extended plane source, an optical ghost, single-exposure detections and cirrus at LSPM J0543+3637 + +## Bodies hotter than sunlight allows + +**Data.** 74609 NEOWISE thermal fits with a free beaming parameter (68500 objects) + +**Runs.** `neowise_hot_bodies`: 68,500 small bodies, 8 per-target rows, 8 vetted + +**Result.** 8 fits below eta 0.6 at 2 sigma, each at one epoch, the lowest pinned at the fit's floor; no object below it at every fitted epoch + +## Flux in discrete levels + +**Data.** TESS 20 s light curves of the stars within 30 pc (1806 sectors) + +**Runs.** `tess20_levels`: 1,806 stars, 1806 per-target rows + +**Result.** 2096 steps between adjacent 30-minute medians at 7 sigma with transitions of 2 minutes or less, 149 of them common to three or more stars of a sector and 1134 of flares, rises whose light falls by half its jump within the next half hour and the steps down within three hours after them; the 826 left split 504 up and 322 down on 347 light curves, and none holds three levels each revisited, 11 holding two, among them BY Dra's spotted and flaring pair and HD 72946, 10 arcsec from the brighter HD 72945 (`tess20_levels`) + +## Nova ellipsoids + +**Data.** T CrB's 1866 and 1946 eruptions (916 pc, Gaia DR3); Gaia DR3 stars within 100 pc on either ellipsoid in the TESS years, 2-minute light curves of sectors 1-99 + +**Runs.** `nova_ellipsoid_cppup`: 176 stars, 176 per-target rows; `nova_ellipsoid_dqher`: 145 stars, 145 per-target rows; `nova_ellipsoid_gkper`: 203 stars, 203 per-target rows; `nova_ellipsoid_rrpic`: 152 stars, 152 per-target rows; `nova_ellipsoid_sn1572`: 201 stars, 201 per-target rows; `nova_ellipsoid_sn1604`: 280 stars, 280 per-target rows; `nova_ellipsoid_v1500cyg`: 148 stars, 148 per-target rows; `nova_ellipsoid_v603aql`: 184 stars, 184 per-target rows; `tcrb_nova_ellipsoid`: 391 stars, 391 per-target rows + +**Result.** stars of G 6 or fainter observed at their arrival (2 sigma of the parallax-set date): 1946, 180 stars, 593 capped lone flashes against 555.8 from the same sectors and 260 light curves with a flash against 286.1; 1866, 211 stars, 417 against 419.1 and 199 against 211.3; the raw counts' excess (1400) comes from saturated stars brighter than G 6 (`tcrb_nova_ellipsoid`); eight more eruptions by the same test, stars at arrival with capped lone flashes against expectation and light curves with a flash against expectation: GK Per 1901, 203 stars, 469 against 508 and 225 against 254; V603 Aql 1918, 184, 391 against 383 and 191 against 203; RR Pic 1925, 152, 241 against 254 and 112 against 119; DQ Her 1934, 145, 254 against 285 and 120 against 138; CP Pup 1942, 176, 426 against 432 and 200 against 218; V1500 Cyg 1975, 148, 585 against 461 and 274 against 267, the count's excess carried by a few light curves with several flashes each, chiefly TIC 307985337 (158 in its 20 window sectors, a G 9 binary with RUWE 44 whose flashes vary sector by sector) and TIC 219861041 (RUWE 34, an astrometric and spectroscopic binary with a 7 km/s velocity amplitude), active binaries whose flares and systematics track the sectors, not the arrival; SN 1572, 201, 528 against 506 and 238 against 259; SN 1604, 280, 647 against 749 and 319 against 360 (`nova_ellipsoid_gkper` to `nova_ellipsoid_sn1604`) + +## Earth-transit-zone stars at opposition + +**Data.** TESS sectors 42-46 2-minute light curves of Gaia DR3 stars within 100 pc and 0.27 deg of the ecliptic (766 star-sectors) and 1500 control star-sectors 1-5 deg off it + +**Runs.** `tess_etz_opposition`: 27 stars, 27 per-target rows; `tess_etz_opposition_70_72`: 12 stars, 12 per-target rows; `tess_etz_opposition_91_92`: 8 stars, 8 per-target rows + +**Result.** 27 transit windows (6.5 hours either side of opposition) observed: no lone flash against 0.37 expected from the same stars outside the windows and no brightening against 1.12; the 111 control windows hold 7 lone flashes against 4.82 (`tess_etz_opposition`); sectors 70-72 add 12 windows on 12 stars with 1 lone flash against 0.53 expected and no brightening against 0.64, the 129 control windows holding 3 against 4.6 (`tess_etz_opposition_70_72`); sectors 91-92, the ecliptic pointings after 72, add 8 windows on 8 stars with 1 lone flash (5.1 sigma, TIC 135070915, sector 91) against 0.26 expected and no brightening against 0.03, the 74 control windows holding 2 against 1.37 (`tess_etz_opposition_91_92`) + +## Top-hat flares + +**Data.** 1806 TESS 20 s light curves of stars within 30 pc + +**Runs.** `tess20_tophat`: 1,806 stars, 1806 per-target rows + +**Result.** 256 brightenings with sharp symmetric edges that a box fits better than a flare, against 263 dips of the same shape: the rate of instrumental steps + +## Clockwork flares + +**Data.** Yang and Liu (2019) Kepler flare catalogue: 2304 stars with 10 or more flares + +**Runs.** `kepler_clockwork_flares`: 2,304 stars, 2304 per-target rows, 216 vetted + +**Result.** de Jager's H from 0.5 d to a third of each span with 20 harmonics; the 40 highest against 20 draws of other stars' flare times in the same quarters, which keep Kepler's gaps: 22 beat every draw away from rotation, one a burst in three cycles, 2 at the quarter or downlink spacing, none an eclipsing binary, and 19 phase-locked with a scatter of 0.004-0.017 of the period (KIC 7838383 at 49.91 d from 16 of 30 cycles, KIC 9267997 at 22.24 d, the rest at 0.5-3 d near the cadence floor), none below the 1e-3 of a clock; the two long clocks on fast rotators are beats: KIC 7838383 rotates at 1.0472 d with a second spot period at 1.0685 d, which beat at 52 d, and KIC 7746984 at 0.7398 and 0.7377 d, which beat at 268 d with the flare clock at its half, the flare rate following the visibility of the active regions as the two spot groups drift past each other (`kepler_clockwork_flares`) + +## Superflare deficit among planet hosts + +**Data.** Yang et al. (2023) TESS flare catalogue (J/A+A/669/A15): 60810 flares with energies on 11131 of 264643 two-minute targets, with the TESS objects of interest (PC, CP, KP) and the confirmed planets' stars: 83 flaring hosts with 332 flares above 1e33 erg against 11048 flaring non-hosts + +**Runs.** `superflare_deficit`: 83 planet hosts, 83 per-target rows + +**Result.** each host's ten nearest non-hosts in temperature, radius, distance and sectors drawn 2000 times: the hosts' fraction of flares above 1e34 erg among those above 1e33 is 0.283 against 0.350 +- 0.060 (p of a deficit 0.14), and 48 per cent of the hosts carry a flare above 1e34 against 48 +- 4 per cent of the draws; a two-sample test of the pooled energies gives p 0.009 (medians 10^33.56 and 10^33.72 erg), carried by the few hosts with many flares, so the draws over stars are the reading (`superflare_deficit`) + +## Clockwork flares, TESS + +**Data.** Yang et al. (2023) TESS flare catalogue: 1426 stars with 10 or more of 60810 flares + +**Runs.** `tess_clockwork_flares`: 1,426 stars, 1426 per-target rows, 9 vetted + +**Result.** the same H-test from 0.2 d to a third of each span, against other stars' flare times in the same 13.7 d orbits: 9 of the highest 40 beat every draw, 8 of them bursts in one or two cycles at the 240 d spacing of TESS's year-long pointings and TIC 457100137 at 1.213 d with a phase scatter of 0.0087, 30 times the 2 min cadence floor and above a clock's 1e-3 (`tess_clockwork_flares`) + +## Fission-product abundances + +**Data.** 50742 GALAH DR4 stars with clean Zr, Mo, Ru, Ba, Nd and Eu + +**Runs.** `fission_galah`: 50,742 stars, 50741 per-target rows + +**Result.** fission-like patterns rarer than the mirror at every threshold (71 against 230 above 5 sigma), the strongest single-element outliers in cool stars; 23 FGK dwarfs carry Mo and Ru, all of them 4800-4880 K at [Fe/H] +0.1 to +0.4 with errors of 0.11-0.28 dex and none beyond 2.5 sigma from solar in either element, so the thin envelopes where pollution shows are barely sampled and hold no signal to read (`fission_galah`) + +## NEOs on unreachable orbits + +**Data.** JPL Small-Body Database near-Earth objects in the delivery model's empty cells + +**Runs.** `neo_unreachable_orbits`: 37 near-Earth objects, 37 per-target rows + +**Result.** 24 retrograde, all at e 0.74 or more; none retrograde below e 0.3; one near-circular orbit inside 0.75 AU above 25 deg (2025 LP) within the Atira population; 12 above 60 deg below e 0.25, reachable through Kozai cycles + +## CNO-processed unevolved dwarfs + +**Data.** APOGEE DR17: 31351 dwarfs with log g above 4.2, Teff 4800-6500 K, [Fe/H] above -0.3 and unflagged C and N + +**Runs.** `apogee_cno_dwarfs`: 31,351 stars, 88 per-target rows, 75 vetted + +**Result.** [C/N] against the dwarf locus in Teff and [Fe/H] (scatter 0.096 dex): 91 nitrogen-rich at 5 sigma and no carbon-rich mirror; 57 of the 91 are Gaia DR3 binaries against 28 per cent of random dwarfs, the mark of transfer from an evolved companion or blended spectra, and 78 carry binary, s-process, sodium, rotation, evolution or Teff-edge flags; the 13 that carry none all carry ASPCAP's VMICRO_WARN, the microturbulence grid-edge warning that biases the carbon and nitrogen read from the CN bands in dwarfs, seven with TEFF_WARN or STAR_WARN as well, so the nitrogen excess is the pipeline's (`apogee_cno_dwarfs`) + +## Herded stars + +**Data.** APOGEE DR17 dwarfs within 100 pc with their own radial velocities and Gaia astrometry (6044 with 3D velocity errors below 0.5 km/s) + +**Runs.** `apogee_herded_stars`: 6,044 stars, 148 per-target rows + +**Result.** 903 pairs within 10 pc and 1 km/s in 31 groups, the largest the Hyades (62 members); [Fe/H] spreads above 0.2 dex among members within 600 K of each other only in the Hyades' coolest M dwarfs, at the pipeline's temperature edge, and in one metal-poor pair 540 K apart (-1.22, -0.94) (`apogee_herded_stars`) + +## Coherent hyperbolic meteor streams + +**Data.** Global Meteor Network trajectories 2018-2026: 3.58 million orbits, 40753 sporadic meteors hyperbolic at 3 sigma + +**Runs.** `gmn_focal_line`: 1 asymptote, 1 per-target row; `gmn_hyperbolic_streams`: 40,753 meteors, 11 per-target rows, 11 vetted + +**Result.** incoming asymptotes and v_inf from each orbit, neighbours within 1 deg and 3 km/s against the 10 deg density: 35 meteors below p 1e-4 in 10 groups, 8 of them IAU shower members with overestimated speeds (PER, ORI, ETA, XIP); the largest, 16 meteors from 2022-2026 at solar longitudes 80-214 on one asymptote (ecliptic 134.5, -1.6; RA 136.5, Dec +15.0) at 12 km/s, is matched by a 16-member group in one of three realisations of a 1.5 per cent speed overestimate shared by the elliptic sporadics (74000 simulated), while 15 realisations thinned to the observed 40753 at 1.0-2.0 per cent give 3-31 meteors below p 1e-4 and groups of up to 14; SonotaCo's independent 353231 orbits hold 1 meteor on the asymptote against 0.16 from the local density and about 1.6 a real stream would give; no star within 100 pc shares its velocity on its line (`gmn_hyperbolic_streams`); the focal-line test of the 12 km/s asymptote, whose members Earth's gravity would spread along loci reaching +-52 deg of latitude, half of them south, as Earth crosses the line near solar longitude 134.5: the Aug 3-11 loci hold 529 meteors against a mean of 16 on 11 control asymptotes, but 510 of them north where the Perseids (204 tagged) and the apex sporadics sit and 19 south against 10 by chance, so the excess is the speed-overestimated shower population and not a stream (`gmn_focal_line`) + +## Cosmic-ray doublets + +**Data.** Pierre Auger Phase One, 2635 events above 32 EeV (2004-2020) + +**Runs.** `auger_doublets`: 2,635 cosmic-ray events, 8 per-target rows + +**Result.** pairs within 2 deg: 8 within 10 days against a time-permuted mean of 5.7 (p 0.21) and 2 within a day against 0.56 (p 0.11); no triplet within 30 days (0.34 expected); one pair's circle holds Kapteyn's Star at 3.9 pc, its members 1.8 and 2.1 deg from it, beyond the 0.9 deg resolution (`auger_doublets`) + +## Cosmic-ray doublets, open data + +**Data.** Pierre Auger open data 2024 (a tenth of the events): 2355 inclined showers and 22751 from the 1500 m array + +**Runs.** `auger_doublets_inclined`: 2,355 cosmic-ray events, 7 per-target rows; `auger_doublets_sd1500`: 22,751 cosmic-ray events, 916 per-target rows; `auger_doublets_sd750`: 54,481 cosmic-ray events, 70738 per-target rows + +**Result.** inclined: 7 pairs within 2 deg and 10 days against 5.1 permuted, 2 within a day against 0.50, no triplet; 1500 m array: 569 against 559, 69 within a day against 57 (p 0.08), 349 triplets within 30 days against 361 (`auger_doublets_inclined`, `auger_doublets_sd1500`) + +## Self-luminous asteroids + +**Data.** ATLAS phase curves (VizieR VII/288): 39239 of 127012 with phases below 7 and above 25 deg + +**Runs.** `atlas_self_luminous`: 39,239 phase curves, 32684 per-target rows, 183 vetted + +**Result.** slopes over 5-30 deg from H, G1, G2 (median 0.0277 mag/deg); 221 pinned at the flattest the model allows (0.0179), with median residuals of 0.28 mag from rotation; 107 of them have literature albedos, 0.03-0.74, none above 0.8 (`atlas_self_luminous`) + +## Centrifugal habitats + +**Data.** LCDB frequency-diameter table, 8854 asteroids + +**Runs.** `lcdb_spin_strength`: 8,854 asteroids, 8 per-target rows + +**Result.** strength needed above the gravity spin limit (2.33 h at 2000 kg/m^3): no kilometre body under 10 minutes or needing 100 kPa; of 8 bodies of 0.3 km or more needing over 1 kPa, 2019 MA2 (0.49 km from H, 2.62 min, quality 2) needs 97 kPa, within a monolith's strength, and 2008 RA106 (3.7 km, 54 min, quality 2-) 11 kPa (`lcdb_spin_strength`) + +## Yarkovsky sign test + +**Data.** JPL transverse non-gravitational terms of 611 asteroids (567 at 3 sigma), DAMIT pole solutions + +**Runs.** `darkcomet_1998_sh2`: 1 asteroid, 1 per-target row, 1 vetted; `darkcomet_2006_vc`: 1 asteroid, 1 per-target row, 1 vetted; `darkcomet_2016_ta56`: 1 asteroid, 1 per-target row, 1 vetted; `yarkovsky_sign`: 611 asteroids, 611 per-target rows, 31 vetted + +**Result.** all 14 drifts with poles have the sign the spin gives (11 inward on retrograde spins, 3 outward on prograde); five drifts exceed all absorbed sunlight at 500 kg/m^3 and albedo 0.5, four of them the published dark comets 2003 RM, 2005 UY6 and 2012 UR158 and the active 362P, and the fifth, 2016 TA56, on a Jupiter-family orbit (T_J 2.69, q 0.59) like the outer dark comets; at 2000 kg/m^3 and albedo 0.14, ten, adding 1998 SH2 (T_J 2.91) and 2006 VC (T_J 3.72, A2 at 3.7 sigma) (`yarkovsky_sign`); 2016 TA56 refitted in ASSIST gives A2 -3.54e-12 +- 0.17e-12 au/d^2 with site weights, -3.56 +- 0.19e-12 with the sqrt(N/4) same-night deweighting of JPL's fits and -3.45 +- 0.37e-12 (9 sigma) with the whole 2007 night as one position, the figure to quote; a radial term fitted alongside is A1 +3.7 +- 1.9e-10 (2 sigma) with A2 -3.32 +- 0.21e-12 beside it; the term rests on the one-night 2007 precovery (without it -2.2 +- 4.3e-12; a gravity-only orbit through the later apparitions, predicted there to 0.2 arcsec, misses the precovery by 3.45 arcsec, 3.0 of them across the apparent motion where no clock error reaches, both reports being re-measurements of the same CFHT frames, and misses the 2025 positions by 10.5 arcsec, 8 across), and NEOWISE W2 gives D 2.4 km (1.4-3.7) and albedo 0.017, like the dark comet 2005 UY6, the drift 15-39 times all absorbed sunlight at 1000 kg/m^3; the two orbits part by 4-7 arcsec in 2030 August-September, where one 0.2 arcsec position separates them at 4.7 sigma (one position a night) to 7.5 sigma (site weights) after both orbits' covariances are propagated; refitted with one later night left out at a time, A2 has a jackknife error of 0.53e-12 (6.5 sigma), resampled nights with the 2007 night held give -4.9 to -3.2e-12 (95 per cent of 200), clipping and error-floor variants keep it at 7.4-10.6 sigma; the twelve CFHT frames of 2007, re-measured against Gaia DR3, hold the 3 arcsec cross-track offset, both reports lying 0.10 arcsec rms across our track, and none of the twenty known asteroids within 0.5 deg (SkyBoT) moves within 5 arcsec/h and 10 deg of it; under a night-level covariance whose shared variance restricted maximum likelihood sets at tau 0.17 arcsec (0.11-0.23), A2 is -3.85 +- 0.30e-12 (13 sigma), and the twelve 2007 positions would have to share a further 1.2 arcsec to bring it under 3 sigma (0.68 for 5 sigma); every orbit fitted without 2007 puts the object on one line in those frames (0.93 arcsec west per 1e-12 of A2, A1 spreading it only along the line), and the median flux along it finds the measured source alone (0.96 of its flux at A2 -3.75e-12, at most 0.05 elsewhere) and nothing at the gravity-only position to 3.9 mag below it (3 sigma, against 954 control lines, none reaching half the detection's flux); the census of all sixteen frames finds 68 moving sources besides it over 0.86 deg^2 (21 of the 22 known ones on the frames), none within 5 arcsec/h and 10 deg of its motion and three within 10 and 20, recovers 109 of 115 injected copies within 0.5 mag of its brightness and links nothing with the frame times shuffled, so 8e-6 unrelated movers are expected within 30 arcsec, 0.5 arcsec/h and 1 deg of it; no other archival image before the discovery reaches it (DECam 2013 September at V 23.9 gives S/N 0.9 and 2.2, the two orbits 0.5 arcsec apart then); one 0.2 arcsec position in 2030 July would measure A2 to 0.39e-12 without the 2007 night; of the fourteen published dark comets, thirteen carry a transverse term and the screen flags six, the seven inner ones of 4-21 m lying at xi_typ 0.01-0.09 with their published accelerations in the radial and normal terms (`darkcomet_2016_ta56`); 1998 SH2 refitted the same way gives A2 -6.1e-13 +- 0.24e-13 au/d^2 (-6.4e-13 +- 0.54e-13, 12 sigma, with each night as one position) across its 1998, 2016 and 2025 apparitions, chi2/dof 0.67 against 0.90 without it, and NEOWISE W2 gives D 0.64 km and albedo 0.019 at eta 1.4 (0.39-0.93 km over eta 0.9-1.9), so the drift is 1.2 times all absorbed sunlight at 1000 kg/m^3 on a Jupiter-family orbit (T_J 2.91, q 0.79), a twentieth of 2016 TA56's by that measure; large-aperture imaging during its 2025 August close approach found a weak tail, so it is a comet (Farnocchia et al. 2026), which the screen picks out from its drift alone (`darkcomet_1998_sh2`); 2006 VC's A2 rests on its 2025-2026 apparition and the gravity-only orbit fits all four apparitions as well (chi2/dof 0.96 against 0.95), the two orbits parting by up to 25 arcsec in 2034 February (`darkcomet_2006_vc`) + +## Nightside heat on bare rocks + +**Data.** published phase curves of LHS 3844 b (Spitzer) and GJ 367 b (JWST MIRI) + +**Runs.** `nightside_heat`: 2 planets, 2 per-target rows + +**Result.** nightside power below 1e19 and 4e18 W at two sigma; Kardashev-I powers are out of reach + +## Waste heat in ultra-diffuse galaxies + +**Data.** SMUDGes DR9, 7070 galaxies; AllWISE within 3 arcsec and Gaia DR3 within 2 arcsec through CDS XMatch + +**Runs.** `smudges_waste_heat`: 7,070 galaxies, 7070 per-target rows + +**Result.** 7 centroid sources at 5 sigma in W3 or W4, 2 of them neither AGN-coloured nor Gaia stars (both at W1-W2 0.43-0.47), against 11 and 6 at positions 60 arcsec away (`smudges_waste_heat`) + +## Surface-brightness-fluctuation deficit + +**Data.** Cosmicflows-4: 414 galaxies with an SBF modulus and another method in the galaxy (191) or its group (223) + +**Runs.** `cf4_sbf_deficit`: 414 galaxies, 414 per-target rows, 5 vetted + +**Result.** 5 too far by 0.3 mag at 4 sigma, the weak-fluctuation sign, against 2 too near: NGC 1023 against a group modulus of 2.3 Mpc, the dust lanes of M64 and the edge-on NGC 4565, and two Fornax galaxies 0.5 mag behind the cluster's group modulus (`cf4_sbf_deficit`) + +## Missing bolometric flux + +**Data.** 14959 Kepler giants: seismic radii (Yu et al. 2018) against Gaia luminosities (Berger et al. 2020) + +**Runs.** `missing_flux_giants`: 14,959 stars, 14959 per-target rows, 6 vetted + +**Result.** deficits as common as excesses at every threshold; the extreme deficits are background giants oscillating in foreground dwarfs' apertures + +## Missing bolometric flux, eclipsing binaries + +**Data.** DEBCat (Southworth): 388 detached eclipsing binaries, 252 with both components' luminosities and Gaia DR3 parallaxes by CDS XMatch, 117 with components below 8000 K within 1 kpc at RUWE 1.4 or less + +**Runs.** `debs_missing_flux`: 117 binaries, 252 per-target rows, 252 vetted + +**Result.** G predicted from the components' log L and log Teff with bolometric corrections at the Gaia distance, the extinction the larger of Gaia's A_G and 2.7 E(B-V) from the catalogue's B-V against the components' intrinsic colours: G_obs - G_pred median -0.04 mag, robust scatter 0.12; one system too faint by 0.3 mag at 3 sigma, KIC 2557430 (KOI-6277, +1.05 +- 0.19 mag, RUWE 0.81), whose published surfaces (1.88 and 1.23 Rsun at 7050 and 6050 K, Hoyman et al. 2020) outshine its Gaia distance 2.6 times while an earlier light-curve analysis (Kamil and Dal 2017) read it as a triple with a gamma Dor pulsator and two flaring components; Gaia resolves the visual double WDS J19074+3749AB into the eclipsing pair (G 11.44, 2.916 +- 0.012 mas, RUWE 0.81, radial velocity varying by 20 km/s) and a co-moving K star 2.4 arcsec away (G 13.30, 2.946 mas), inside Kepler's pixels, and gives the pair 6130 K and A_G 0.001, so the catalogue's B-V of 0.58 is its own colour and not the 0.38 of a 7050 K primary with reddening, and its FLAME luminosity with the K star's sums to 2.9 Lsun against the solution's 9.7: the published temperatures, and the extinction the test inferred from them, are too high, and the light is not missing; 12 too bright, third light and blends; BG Ind, IM Per and the other high-RUWE systems set aside (`debs_missing_flux`) + +## Transits faster than escape velocity + +**Data.** Kepler DR25 threshold-crossing events with Berger et al. (2020) hosts (29820; 6833 at S/N 15) and 7523 TOIs with host radii + +**Runs.** `escape_transits`: 14,356 transit signals, 463 per-target rows, 463 vetted + +**Result.** a bound body crosses a star no faster than its surface escape speed, so a full transit lasts at least 2R sqrt((1+k)^2 - b^2)/v_esc, 37.5 min (R/Rsun)^1.5 (M/Msun)^-0.5 at b 0, whatever the eccentricity; Kepler events below 0.8 of the floor at their fitted geometry and within the host errors: 281, of which 253 sit on giants (background binaries and the giants' own variability), 26 on hot or multiply-flagged stars with 3 to 10 events each (pulsators), one is a catalogued shallow eclipsing binary, one a KOI with centroid flags, and the one left, KIC 7292626 (a 12 per cent, 50-minute dip at 204.8 d, S/N 465), is a single cadence flagged for cosmic rays with the other epochs flat; TOIs below 0.8 of the b = 0 floor: 242, of which 97 sit on giants, 69 have sub-day periods (contact binaries and pulsators), 34 are published false positives, and 42 planet candidates have no impact parameter in the TOI table; fitted in their TESS light curves, 20 last long enough for a bound orbit at any impact parameter (the TOI table's durations are short), 4 are V-shaped and 3 flat-bottomed with an impact parameter that keeps the crossing below the escape speed, 5 show no transit at the TOI ephemeris and 10 have no TESS light curve in the public stores, so none is a full transit faster than escape (`escape_transits`) + +## Transit-depth growth, Kepler to TESS + +**Data.** 102 KOI-TOI pairs matched within 6 arcsec and 0.2 per cent in period; Kepler long-cadence and TESS SPOC, TESS-SPOC and QLP light curves + +**Runs.** `transit_depth_growth`: 102 KOI-TOI pairs, 100 per-target rows, 5 vetted + +**Result.** 3 deeper in TESS at 5 sigma in the catalogues with the duration held and 2 shallower; measured the same way in both missions' light curves, none is deeper in TESS's uncorrected flux: Kepler-13 b and Kepler-718 b deepen only through the crowding correction (4249 and 11468 ppm uncorrected against Kepler's 4526 and 13828), Kepler-506 b reads 572 +- 53 ppm against 491 +- 4 rather than the TOI table's 771, Kepler-25 c agrees, and Kepler-546 b, shallower in the corrected flux as well, holds more light in TESS's aperture than the crowding model, the star giving 0.26-0.46 of it by its TESS magnitude, over which its depth is 4077 +- 424 ppm against 3584 +- 13 (`transit_depth_growth`) + +## Coronal X-rays without a dynamo + +**Data.** eRASS1 HamStar coronal counterparts (137896 with a distance and colour) with rotation periods from TESS (Fetherolf et al. 2023), Gaia DR3 and ZTF (Chen et al. 2020): 8287 at 3000-6000 K + +**Runs.** `dynamo_dead_xray`: 8,287 stars, 1 per-target row, 1 vetted + +**Result.** L_X from the 0.2-2.3 keV flux and distance, L_bol from G and BP-RP, the turnover time from the colour's temperature (Cranmer and Saar 2011), the residual above the Wright et al. (2011) relation (saturated at 10^-3.13 below Ro 0.13, Ro^-2.5 beyond): scatter 0.82 dex at Ro below 1 with 0.24 per cent beyond 1.5 dex; only 26 stars reach Ro 1 (the period catalogues hold few slow rotators and Gaia's periods beyond 10 d are not trusted), and the one beyond 1.5 dex is a ZTF RS CVn binary at 1 kpc; late-F stars at 6000-6500 K sit 2-3 dex above the relation's extrapolation through their basal coronae and are left out of its domain (`dynamo_dead_xray`) + +## Circular polarisation at inactive stars + +**Data.** V-LoTSS (Callingham et al. 2023, 77 stars with Gaia counterparts) and the RACS circular-polarisation stars (Pritchard et al. 2021, 34) against eRASS1 and the rotation catalogues + +**Runs.** `dynamo_dead_polarised`: 77 stars, 73 per-target rows, 73 vetted + +**Result.** 23 of the 31 in eRASS1's half of the sky are detected at L_X/L_bol 7.5e-5 to 3.6e-3, the rest are RS CVn, BY Dra and flare stars by name and type, 5 have catalogued periods, all short; none above 30 per cent polarisation at L_X/L_bol below 1e-5 with a period above 20 d (`dynamo_dead_polarised`) + +## X-ray output above the coronal ceiling + +**Data.** eRASS1 HamStar coronal counterparts, 137896 with a distance and colour + +**Runs.** `coronal_ceiling`: 137,896 X-ray sources, 250 per-target rows, 191 vetted + +**Result.** L_X/L_bol percentiles 50/90/99/99.9 at -3.42/-2.85/-2.30/-1.90 dex; 250 above 1e-2 and none above 0.1; of the 250, 153 sit off Gaia's main sequence, 38 carry a cataclysmic, young, emission-line or extragalactic type on the counterpart or on a SIMBAD object within 20 arcsec (HamStar's own SIMBAD columns miss both the entries SIMBAD names after Gaia and those it files at the X-ray position), and 59 are main-sequence M dwarfs of 3000-3550 K at 50-630 pc with counterpart probability 0.5 or more, whose flares reach 1e-2 within eRASS1's day-long scan average; the one K dwarf of the first pass, 1eRASS J082623.3-703142 at 7.6e-2, is the cataclysmic variable 1ES 0826-70.3 (PBC J0826.3-7033 of the Swift BAT catalogue, typed CV in the ART-XC catalogue, a pointed XMM target), which SIMBAD files 11 arcsec from its Gaia counterpart and which holds the same flux in eRASS1 and eRASS:3 (`coronal_ceiling`) + +## Straight limbs in occultation profiles + +**Data.** PDS small-bodies occultation bundle V4.0 (2024 March): 395 events of fit quality 3 or 4 with five or more positive chords from distinct sites, 376 measured once chords landing nowhere near the fitted position and ellipses off the nominal size are set aside, the table's unsigned western longitudes resolved by the catalogue's own fitted position + +**Runs.** `occultation_limbs`: 376 occultation events, 245 per-target rows + +**Result.** the longest run of consecutive limb points from different sites that a line fits within the timing errors, over the diameter: median 0.21, 90th percentile 0.67; 25 beyond the null of the fitted ellipse's points at the same angles and errors at p below 0.01, the longest on (3317) Paris 2020 (0.97 D over 6 sites), (134) Sophrosyne 1980 (0.86 over 5), (64) Angelina 2023 (0.82 over 7), (39) Laetitia 1998 (0.79 over 6) and (2) Pallas 1983 (0.70 over 6 of 120 chords), bodies whose shape models carry the flat facets an ellipse lacks, so a null from DAMIT shapes projected at each event's geometry is the step that remains (`occultation_limbs`) + +## Plate-like bodies + +**Data.** LCDB details V4.0: 47635 records with an amplitude and a phase angle, 31008 of quality 2 or 3 at phase angles up to 15 deg + +**Runs.** `plate_bodies`: 31,008 lightcurve records, 5 per-target rows, 5 vetted + +**Result.** amplitudes reduced to zero phase at 0.03 mag/deg: 5 records above 1.6 mag (0.02 per cent, against 0.11 per cent of the quality-1 records), one above 2.0 and none above 2.5, in five objects, every one a single TESS record of Pal et al. (2020) of a rotator of 9 to 627 h, three marked ambiguous; no body above the 4:1 ceiling at low phase (`plate_bodies`) + +## Shared clocks + +**Data.** ZTF periodic variables (Chen et al. 2020): 770043 of 781602 with periods off the day and sidereal-day aliases + +**Runs.** `ztf_shared_clocks`: 770,043 variable stars, 11847 per-target rows + +**Result.** pairs of stars more than 10 arcsec apart within a fractional period tolerance scale linearly with the tolerance (212473 at 1e-6, 631793 at 3e-6, 2077868 at 1e-5), as a smooth period distribution gives; of the 1e-5 pairs, 42112 agree in phase to 0.01 cycle at MJD 58700 against 41384 to 42020 with the phases shuffled eight times, in 3731 groups of three or more against 3675 to 3848; the largest groups (nine Miras at exactly 380 and 420 d) sit on periods the catalogue repeats exactly, its own grid, and the largest off the grid holds 7 against 8 shuffled (`ztf_shared_clocks`) + +## Stellar-synchronous orbits beyond the tidal radius + +**Data.** the cumulative KOI table's candidates and confirmed planets joined by KIC to the KOI rotation periods of McQuillan et al. (2013) and Mazeh et al. (2015): 1099 hosts, 541 planets at 10 d or more, where tides cannot synchronise the star + +**Runs.** `synchronous_orbits`: 1,099 planets, 1099 per-target rows, 34 vetted + +**Result.** P_orb within 2 per cent of P_rot, 2 P_rot or P_rot/2: 25 against 23.4 +- 4.6 with the rotation periods shuffled among the hosts within 500 K bins (p 0.39); the four 1:1 matches consistent within their errors (KOI-757.01, 492.01, 3029.01 and 1910.01) fitted for the rotational phase at each transit in windows of three rotations with the transits masked: the phase scatters by 0.17-0.25 cycle over four years, as it does for eight rotators at like periods on the same epochs (0.13-0.28), the random walk of spots and not a lock (`synchronous_orbits`) + +## Aimed transits + +**Data.** cumulative KOI table: 2294 candidates and confirmed planets at S/N 20 (77 in the habitable zone); the DR25 injected planets' recovered fits (2091 at MES 20, impact parameters drawn uniformly) as the null + +**Runs.** `aimed_transits`: 2,294 planets, 21 per-target rows, 21 vetted + +**Result.** a structure placed to be seen from Earth sits at b below R*/a; the injections' fits put 7.4 per cent of a uniform population below b 0.05 and 37 per cent in 0.1-0.5, the KOI fits 20 and 25 per cent, the difference carried by fits with b at its lower bound and errors near 0.4 (21 of the 77 habitable-zone planets, every one with an error above 0.13), while the 153 planets with b measured to 0.1 hold 7 below 0.05 against 11.3 expected; no excess of central transits beyond what the fits' degeneracy puts there, and the test reaches only planets whose geometry the light curve constrains (`aimed_transits`) + +## Replicated bodies on unrelated orbits + +**Data.** LCDB summary table V4.0 (PDS) and the 2024 proper elements of the Nesvorny family bundle: 4315 numbered asteroids with quality-3 periods + +**Runs.** `replicated_bodies`: 4,315 asteroids, 3 per-target rows, 3 vetted + +**Result.** pairs with periods agreeing to 2e-4, H to 0.1 mag and amplitude to 0.05 mag more than 300 m/s apart in the Zappala metric: 14 against 8.6 +- 2.8 with periods shuffled within half-magnitude bins; one group of three against 0.04 +- 0.18 (one in 25 shuffles): (3305) Ceadams, (5122) Mucha and (2019) van Albada at 2.7290-2.7294 h, H 12.3-12.4, amplitude 0.20-0.23, in three families, at the fast-rotator pile-up near the spin barrier; their Gaia DR3 reflectance spectra are all S-type, the commonest class, with red slopes reaching 1.21-1.26 at 770 nm and the 1 um band, so three ordinary stony bodies of like size at the spin barrier's pile-up share a period, as the shuffles give once in 25 (`replicated_bodies`) + +## Chromatic-only variables + +**Data.** Gaia DR3 vari_summary: 1073 variables brighter than G 16 with twenty or more transits whose G scatter is below 0.003 mag with BP and RP scatter above 0.02 each, against 172707 sources quiet in G (scatter below 0.01) + +**Runs.** `chromatic_only_variables`: 1,073 stars, 899 per-target rows, 58 vetted + +**Result.** the ratio sqrt(s_BP^2 + s_RP^2)/s_G in half-magnitude bins of G puts 899 beyond the quiet sources' 5 sigma tail, the highest at 25 sigma with BP and RP scattering by 0.6-0.8 mag around a G constant to 0.002; the 60 highest read epoch by epoch (DataLink's unfiltered table, since the server refuses the valid rows alone for a source whose every transit carries a flag): 57 move BP and RP together at correlation above 0.9, a neighbour entering both windows on a few transits, 3 scatter in one band with the other quiet, and none moves BP against RP; the highest sit in crowded fields where the 3.5 by 2.1 arcsec windows take a neighbour (`chromatic_only_variables`) + +## Opaque lightweight eclipsers + +**Data.** Gaia DR3 vari_eclipsing_binary: 196041 eclipses deeper than 0.75 mag at periods under 30 d, 4803 with RVS velocities and 956 with ten or more RVS transits + +**Runs.** `lightweight_eclipsers`: 956 eclipsing binaries, 956 per-target rows + +**Result.** the observed RVS semi-amplitude over the least a main-sequence eclipser of the depth's size demands: median 0.73, tenth percentile 0.33; 10 below 0.1 spanning five or more cycles, every one explained: 15 Eri, a naked-eye K giant whose 4.4 mag model depth is saturation; HD 112604, an A0 subgiant with an unphysical 98 per cent model depth; a twin binary and a 6-hour contact binary whose blended lines read low in the RVS; KOI-6903, where Kepler shows a 31 per cent eclipse at 38 d with a stellar secondary against Gaia's 1.8 mag at 1.4 d; and five stars whose light curves are flat at Gaia's period against model depths of 0.77-1.73 mag: two in ZTF to 0.05 mag, and TYC 4267-1042-1, TYC 7438-551-1 and BD+09 1746 in TESS to 0.1-0.3 mag in their clean sectors; so Gaia's derived depths and periods, not the velocities, are what fails, and the test needs light curves for its depths (`lightweight_eclipsers`) + +## Transiting bodies inside the fluid Roche limit + +**Data.** Gaia DR3 vari_short_timescale: 216720 sources faster than 8.6 cycles a day with gaia_source rows, 10906 on the main sequence with amplitudes above 0.02 mag, 10875 with epoch photometry; ZTF DR23 light curves of the candidates + +**Runs.** `roche_transits`: 10,875 stars, 10875 per-target rows, 10874 vetted + +**Result.** a fluid body survives only at periods above 12.6 h times the inverse root of its density, so a box-shaped transit under 2.8 h at a main-sequence host needs 20 g/cm3 or a rigid structure; each band of the epoch photometry folded at the Gaia period, its double and half, a box of duty under 0.15 against a one-harmonic sinusoid, with the band's best sinusoid plus its own residuals resampled at the same epochs as the null (2000 draws, ten times that when fewer than ten reach the data): 1277 light curves box-like, the lead band's p-values uniform above 0.1 with a tail of non-sinusoidal variables (92 below 0.001 against 10.9), 12 box-like beyond the null at p below 0.001 with the other bands below 0.05, 11 of them with equal depths in BP and RP; in ZTF g and r the 10 with light curves hold no box from 0.45 to 2.2 Gaia periods, the best in each a single point below 3 sigma against Gaia's boxes of 0.06-0.97 mag at 10-15 per cent duty, so the boxes are Gaia's period or depth, and Gaia DR3 5713030673830580608 has no ZTF light curve (`roche_transits`) + +## Euclid Q1 sources bluer than the Rayleigh-Jeans limit + +**Data.** Euclid Q1 MER catalogue, 63 deg2: point sources at S/N above 10 in VIS, Y, J and H + +**Runs.** `euclid_bluefloor`: 14 sources, 0 per-target rows + +**Result.** 14 sources bluer than the Rayleigh-Jeans slope in I_E - H_E, 9 below -2.3, and none at 3 sigma with the NISP fluxes falling faster than nu^2, clean flags, unblended and not variable; the blue tail is flagged or blended sources (`euclid_bluefloor`) + +## Hot bodies too small to be stars + +**Data.** the Gaia Catalogue of Nearby Stars' sources within 100 pc bluer than BP-RP 0.6 at parallax_over_error above 10, their gaia_source and astrophysical_parameters rows by id: 5278 with black-body colour temperatures above 7000 K, 3812 of them on the white-dwarf sequence + +**Runs.** `hot_small_bodies`: 5,278 sources, 22 per-target rows, 22 vetted + +**Result.** the black-body radius from G, the parallax and the colour temperature (GSP-Phot fits white dwarfs with main-sequence libraries and cools them, so it is the second estimate, not the selection): median 0.016 Rsun; 33 below 0.003 Rsun and 22 of those with clean astrometry and single-source photometry, against 0.00 from the white-dwarf sequence pushed through its errors 200 times; all 22 are G 18-21 objects already in the Gaia white-dwarf catalogues, 4 of them in the IR-faint list of Bergeron et al. (2022), where collision-induced absorption strips the red light from a 3000 K helium photosphere and makes it read 9000-17000 K by colour, and none has an ultraviolet detection, which a body hot by colour would have; the floor is empty once that mimic is named (`hot_small_bodies`) + +## Non-thermal or recurrent lunar flashes + +**Data.** NELIOTA's flash lists read from the tables of Liakos et al. (2020) and (2024): 284 flashes of 2017-2023, 188 validated, 192 with R and I, positions to 0.5 deg + +**Runs.** `neliota_flashes`: 284 flashes, 284 per-target rows + +**Result.** colour temperatures from R - I through the Planck ratio with Vega's colour as the zero point: median 2935 K, 5th-95th percentiles 2027-5020 K, none hotter than 8000 K or cooler than 1000 K at 3 sigma, none longer than 0.5 s (the longest 429 ms); pairs within 1.5 deg on the Moon 21 against 23.9 +- 4.9 with the longitudes permuted among the flashes (p 0.75), the closest a validated pair 0.10 deg apart on consecutive Perseid nights of 2018 August at (+26.7, +60.2) with temperatures of 4100 and 3000 K, where a tenth of a pair is expected that close (`neliota_flashes`) + +## Achromatic long-period modulation + +**Data.** ZTF periodic variables (Chen et al. 2020): BY Dra and RS CVn stars at 5-500 d with A_g of 0.15 mag or more and g brighter than 18, 1549 with catalogue A_r/A_g of 0.9 or more and 296 controls at 0.7-0.9; ZTF DR23 g and r light curves by object identifier, 1845 fitted at the catalogue period by a mean and two harmonics per band + +**Runs.** `ztf_achromatic`: 1,845 light curves, 1845 per-target rows, 1845 vetted + +**Result.** the light-curve A_r/A_g of the controls has median 0.95 with robust scatter 0.25 where the catalogue amplitudes gave 0.83, so the catalogue ratio runs low; 9 candidates are grey at 3 sigma (ratio 0.97-1.15 with the bands in phase), eight of them RS CVn or BY Dra systems 2.1-4.1 mag above the main sequence by Gaia, where the companion that defines the class dilutes the spots' colour, and the ninth, ZTF J064125.61+093443.1 with W1-W2 of 0.46, a pre-main-sequence star in NGC 2264 (Gaia parallax 1.39 mas, 719 pc) occulted by its own disk; none left (`ztf_achromatic`) + +## TeV neutrinos moving with the planets + +**Data.** the IceCube ten-year point-source sample, 1134450 tracks over 10.3 years; Jupiter, Saturn, Mars and Venus from the built-in ephemeris on an hourly grid, events taken with the planet within 5 deg of the Sun set aside + +**Runs.** `icecube_planets`: 4 planets, 4 per-target rows + +**Result.** the unbinned point-source likelihood in each planet's frame against 1000 time scrambles that fix the events and move the planet: Jupiter TS 0.9 (p 0.17), Saturn 0.6 (0.17), Mars 0.0 (0.42), Venus 0.3 (0.23), where the scrambles reach 9-13; 90 per cent E^-2 flux limits of 1.3-2.1e-12 per TeV cm2 s at 1 TeV, 1.5-2.4e-11 erg/cm2/s over 1 TeV-1 PeV, and luminosities below 7e9 W at Venus, 1e10 W at Mars, 2e11 W at Jupiter and 6e11 W at Saturn (`icecube_planets`) + +## Brick-wall spectral edges in GLEAM-X + +**Data.** GLEAM-X DR1 (VizieR VIII/110): 28682 sources above 20 sigma in the wide band, 27585 with sixteen or more of the twenty 7.68 MHz sub-bands from 72 to 231 MHz, observed in five 30 MHz settings + +**Runs.** `gleamx_edges`: 27,585 radio sources, 1 per-target row, 1 vetted + +**Result.** a curved power law against the same law times a step at each boundary within one setting, where the sub-bands are simultaneous: the chi-square gain's median 0.2, 99th percentile 7.9 and 99.9th 71 carry the sub-band flux-scale errors common to all sources; one source in the top 0.1 per cent with a step above 30 per cent, GLEAM-X J082817.6-221400 (1.23 Jy, +35 per cent after 115 MHz, its twenty neighbours flat there), which has a second 1.18 Jy source 69 arcsec away inside the low-frequency beam, so the sub-band fits merge and split the pair as the beam shrinks with frequency, the 76-99 MHz fluxes alternating by 40 per cent; none left (`gleamx_edges`) + +## Line-only X-ray sources in eROSITA DR1 + +**Data.** the eROSITA DR2 eRASS:3 main catalogue (VizieR J/A+A/712/A171): 1975540 sources, 63043 point sources with 80 or more counts in 0.2-0.5, 0.5-1, 1-2 and 2-5 keV + +**Runs.** `erosita_line_only`: 63,043 X-ray sources, 0 per-target rows + +**Result.** the fraction of the counts in each band with its errors: the maximum fraction has median 0.46, 90th percentile 0.62 and 99th 0.78 across the point sources; sources holding 85 per cent or more of their counts in one band at 3 sigma with every other band below 5 per cent number 13 in 0.2-0.5 keV, the supersoft class, 2 in 2-5 keV, the absorbed class, and none in 0.5-1 or 1-2 keV, where no continuum could put them; the spectral-fit version of the test on the released source spectra is the step that remains (`erosita_line_only`) + +## Dimming with mid-infrared brightening + +**Data.** the Hipparcos-to-Gaia dimming run and the NEOWISE W2 decade trends of the same stars: 671 with both + +**Runs.** `dimming_ir_joint`: 671 stars, 20 per-target rows, 20 vetted + +**Result.** an industrial shroud dims the optical and brightens the mid-infrared together; the one-sided optical and W2 deviations, each scaled to its own run's robust spread, combined by Fisher's method, against the W2 trends re-paired among stars within 0.5 mag in W1 (2000 draws): the highest value, HIP 67858, is 24.4 sigma fainter in Gaia with W2 fading as well and arises by chance at its rank 99 per cent of the time, and the lowest chance at any of the twenty ranks is 0.04 (HIP 57115), one in twenty ranks; the top of the list is optical dimming alone (`dimming_ir_joint`) + +## The Wow! signal's cloud + +**Data.** HI4PI at the two fields of Arecibo Wow! II (19h25m02s and 19h27m55s, -26d57m +-20 arcmin), at the signal's -74 km/s LSR + +**Runs.** `wow_hi4pi_cloud`: 2 fields, 2 per-target rows + +**Result.** no H I at the velocity in either field: 0.010 and 0.003 K against 0.019 K noise over the 10 arcmin average, N(HI) below 1.4e17 cm-2 for a one-channel line, while the fields' own emission peaks at +3 to +4 km/s with 26 K; the brightest pixel at the velocity inside each field's +-20 arcmin holds 0.11 K against a single-pixel noise of 0.040 K, and none of the 8800 pixels within 3 deg of either field reaches 5 sigma of its own noise there, while their mean spectrum carries the wing of the local emission falling smoothly through the velocity at 0.014 K, with no feature there; so no cloud filling HI4PI's 16 arcmin beam sits in either field at the velocity, and a compact one is diluted by the beam (`wow_hi4pi_cloud`) + +## Vanished numbered asteroids + +**Data.** JPL Small-Body Database: the 69 numbered asteroids brighter than H 17 with no observation since 2017, each orbit propagated to today and the bodies left within reach looked up in JPL Horizons + +**Runs.** `sbdb_vanished_numbered`: 69 asteroids, 69 per-target rows, 69 vetted + +**Result.** all 69 are trans-Neptunian objects (53) or Centaurs (16); 66 are fainter than V 21.5 at opposition now, 2004 YH32 and 2001 KD77 stand at V 21.5 tonight, the Centaur at declination -78, and Pluto's small-body orbit stops in 2016 because its ephemeris comes from the planetary solution; none is a body the surveys should see and do not (`sbdb_vanished_numbered`) + +## Negatively dispersed and pulsar-locked pulses + +**Data.** Breakthrough Listen 349 us products of 88 scans (44 ON, 44 OFF) of the nearest stars' cadences + +**Runs.** `bl_pulses`: 10 stars, 10 per-target rows, 10 vetted + +**Result.** broadband DM-peaked pulses at 7 sigma per scan, ON against OFF: DM < -1: 25 against 39; -1 to 1: 36 against 34; > 1: 9 against 12; the OFF scans carry every class as often, so the pulses are interference; folds at the Crab, Vela, B1937+21 and J0437-4715 periods as each star sees them: 26 of 176 folds below p 0.05 against 8.8 by chance, but the OFF scans of a control cadence fold as low (4 of 12) and one scan folds at two pulsars' periods at once, so the excess is the red noise of the zero-DM series, not a lock (`bl_pulses`); the HST photon-event lists await a re-download for the same fold, and the X-ray archives cannot serve it, since ACIS frames of 3.2 s and EPIC-pn imaging frames of 73 ms cannot resolve the periods, leaving only HRC and pn timing-mode observations, which the nearby stars lack + +## Beams between stars + +**Data.** the 2705 stars within 20 pc: pairs on opposite sides of the Earth within a 0.25 deg beam + +**Runs.** `beam_pairs_20pc`: 2,705 stars, 65 per-target rows + +**Result.** the only sightlines on which traffic between two stars crosses Earth; 37 pairs within a 0.25 deg beam among 2705 stars, as many as random directions give (31 +- 6) (`beam_pairs_20pc`); the pairs' narrowband radio archives are not yet searched + +## Long occulters' companions + +**Data.** Gaia DR3 astrometry of VVV-WIT-08, VVV-WIT-07, Gaia17bpp, TYC 2505-672-1, ASASSN-21qj and J1407, with EE Cep as the control, against field stars matched in G and colour + +**Runs.** `long_occulters_gaia`: 7 stars, 7 per-target rows, 1 vetted + +**Result.** none stands out: RUWE 1.04-1.10 with 26-70 per cent of the controls as high, and astrometric excess noise within the controls' spread except VVV-WIT-08's 0.42 mas at 16 sigma, in the top 12 per cent; EE Cep's known disk-bearing companion gives RUWE 1.28 and 0.16 mas, in the top 24-31 per cent, so Gaia DR3 cannot see the companions these eclipses need (`long_occulters_gaia`) + +## Interstellar arrivals along the ecliptic + +**Data.** 1I, 2I and 3I from JPL SBDB; 2e7 arrivals carrying the velocities of the 169740 Gaia DR3 stars within 100 pc, perihelia within 2 AU + +**Runs.** `iso_ecliptic_arrivals`: 3 interstellar objects, 3 per-target rows + +**Result.** 0.28 per cent within 5 deg of the ecliptic (isotropic 0.38, retrograde alone 0.14); passes as close as 3I/ATLAS's by Venus, Mars and Jupiter 1.5e-5 of all arrivals and 1.2e-3 of those along the ecliptic, 3.5e-6 together with the alignment; along the ecliptic and within 0.2 AU of one of the three 5.3e-4 (`iso_ecliptic_arrivals`) + +## Signals of interest traced through their sessions + +**Data.** Ma et al. (2023)'s eight signals of interest; every scan of their six Breakthrough Listen GBT sessions, 335 scans, in the 2.84 Hz product + +**Runs.** `bl_soi`: 5 stars, 5 per-target rows, 4 vetted + +**Result.** MLc2-MLc8 lie on their own lines in their cadences' OFF scans at 4.8-11.5 sigma combined, 2-34 per cent of their ON level, and MLc3-MLc8 recur in 1-25 scans pointed at other stars; MLc8 is a carrier rising 1.72 kHz over four hours through four other stars' cadences, at S/N to 158 in OFF pointings against 20-40 in its own ON scans; MLc1, at 1188.54 MHz in the aeronautical radionavigation band, is in its ON scans alone, drifting at -1.51 and -0.85 Hz/s in the first two where a transmitter at rest at HIP 13402 would drift at -0.08 Hz/s (`bl_soi`) + +## Stars at rest with the Sun + +**Data.** Gaia DR3: the 169,740 stars within 100 pc with radial velocities and parallaxes at 10 sigma, 48,129 with their velocity relative to the Sun measured to 0.5 km/s + +**Runs.** `gaia_rest_stars`: 48,129 stars, 5 per-target rows, 5 vetted + +**Result.** a companion keeping pace with the Solar System: 5 within 1 km/s against 1.01 from a velocity density flat near zero (Poisson p 0.004), the density in 1 km/s shells from 1 to 10 km/s at 0.86-1.39 of that flat value: CD-75 143 (0.29 km/s, 93 pc), UCAC2 1168584 (0.35 km/s, 93 pc), BD+68 1331 (G0, 0.71 km/s, 72 pc), the dMe star PG 0943+489 (0.82 km/s, 26 pc, RUWE 1.53) and Gaia DR3 5415736782809366144 (0.98 km/s, 84 pc); with RUWE below 1.4, 4 against 0.82 (p 0.0097) in 3 systems, CD-75 143 and UCAC2 1168584 lying 7.6 pc apart at 0.37 km/s as members of Crius 131 (Moranta et al. 2022), 40 stars at 113 pc moving at (-0.2, +0.5, -1.7) km/s relative to the Sun with a spread of 1.1-1.3 km/s, part of Theia 371 (Kounkel and Covey 2019); of 35,128 balls of the same density centred elsewhere in velocity space, 0.6 per cent hold as many stars and 4.3 per cent three or more systems; BD+68 1331 (HIP 112584) is a 0.3 Gyr star whose radial velocity of -0.3 +- 0.1 km/s Liu et al. (2015) measured when they rejected it as a sibling of the Sun; the sideways speeds of the 138,627 stars within 100 pc measured to 0.1 km/s, radial velocity or not, put 12, 37 and 193 below 0.25, 0.5 and 1 km/s against 11.4, 45.5 and 181.8 from the flat density, and one other star within 15 pc moves with the Crius 131 pair against 0.36 by area; an association moving with the Sun, as the young disc's do (`gaia_rest_stars`) + +## Stars on a straight line to the Sun + +**Data.** Gaia DR3: 75,785 stars within 100 pc with radial speeds above 20 km/s and sideways speeds measured to 0.5 km/s + +**Runs.** `gaia_headon_stars`: 75,785 stars, 42 per-target rows, 42 vetted + +**Result.** an object aimed at the Solar System: 42 move sideways at under 1 km/s against 53.2 from a sideways-velocity density flat near zero; their least distances run from 30,237 au (Gaia DR3 510911618569239040 at 76 pc, receding, 2.77 Myr ago), the stellar encounters of the published lists (Bailer-Jones et al. 2022) (`gaia_headon_stars`) + +## Non-stellar spectra at stellar distances + +**Data.** Gaia DR3's discrete source classifier on the Gaia Catalogue of Nearby Stars beyond parallax 10 mas: 64 sources it calls quasar or galaxy at 0.9; SIMBAD + +**Runs.** `gaia_qsolike_nearby`: 64 Gaia sources, 64 per-target rows, 64 vetted + +**Result.** every one explained, some twice: 53 white dwarfs by SIMBAD or the colour-magnitude locus, 10 components of resolved multiples or stars with a catalogued neighbour within 10 arcsec whose light enters the BP and RP windows, 3 cataclysmic variables, 2 binaries and one source without photometry (`gaia_qsolike_nearby`) + +## Light that appeared since 2MASS + +**Data.** the Gaia Catalogue of Nearby Stars within 20 pc at G 5-13: 91 sources without a 2MASS best neighbour in Gaia DR3; the 2MASS point-source catalogue (II/246) by CDS XMatch + +**Runs.** `gaia_no2mass_nearby`: 91 stars, 91 per-target rows, 91 vetted + +**Result.** a source switched on since 1999: 88 lie in 2MASS within 5 arcsec plus 2.5 years of their proper motion of their position carried back to 2000, the cross-match's misses among fast stars (median 457 mas/yr); the other 3 are eps Ret B, eps Sco B and bet Aql B, secondaries in their primaries' glare (`gaia_no2mass_nearby`) + +## Objects of unknown nature within 10 pc + +**Data.** SIMBAD entries with parallaxes above 100 mas typed of unknown nature or not an object + +**Runs.** `simbad_unknown_nearby`: 1 SIMBAD entry, 1 per-target row, 1 vetted + +**Result.** one entry, omi02 Eri b, the retracted planet of 40 Eri, typed not an object (`simbad_unknown_nearby`) + +## Pulsars that hold their period + +**Data.** ATNF catalogue (VizieR B/psr): 1,843 isolated pulsars outside globular clusters and the Magellanic Clouds with a period derivative + +**Runs.** `atnf_spinup_pulsars`: 1,843 pulsars, 4 per-target rows, 4 vetted + +**Result.** a beacon kept at a constant period: 4 with a measured derivative zero or negative, J1829-1011 (-1.3 sigma), J1817-0743 (-0.3), J1144-6146 (-0.4) and J1852+0033 (none measured), none below zero at 3 sigma; J1024-0719, J1843-1448 and J1801-1417 turn negative only once corrected for the Galactic acceleration and the Shklovskii term at their DM distance (`atnf_spinup_pulsars`) + +## Pulsars on nearby stars + +**Data.** the 2,530 ATNF pulsars with positions against Gaia DR3 within 2 arcsec by CDS XMatch + +**Runs.** `atnf_pulsars_on_stars`: 2,530 pulsars, 2 per-target rows, 2 vetted + +**Result.** a beacon placed at a star: 1,077 Gaia sources within 2 arcsec, 2 of them within 200 pc at 5 sigma, the helium white-dwarf companion of J0437-4715 (G 20.4, 7.1 mas) and a foreground star (6.6 mas) over J1701-3006E in the globular cluster M62 (`atnf_pulsars_on_stars`) + +## Planets on Earth's year + +**Data.** NASA Exoplanet Archive composite table: 86 planets with periods of 300-430 d + +**Runs.** `exoplanets_earth_year`: 86 planets, 1 per-target row, 1 vetted + +**Result.** a period chosen to match ours: one within 0.2 per cent of the sidereal year, Kepler-1536 b at 364.758 d (0.14 per cent short), against 0.97 expected from the density of periods (`exoplanets_earth_year`) + +## Planetary systems in equal period steps + +**Data.** NASA Exoplanet Archive composite table: 535 consecutive triples in 356 systems of three or more planets + +**Runs.** `exoplanets_period_steps`: 535 planet triples, 3 per-target rows, 3 vetted + +**Result.** a spacing no resonance asks for: 3 triples step equally to 0.5 per cent, TOI-1136 c-d-e (1:2:3), HD 110067 d-e-f and Kepler-223 c-d-e (2:3:4), chains n : n+1 : n+2 that are arithmetic and resonant at once; 17 triples have equal period ratios (`exoplanets_period_steps`) + +## Asteroids on circles in the ecliptic + +**Data.** JPL Small-Body Database: 895,910 numbered asteroids + +**Runs.** `sbdb_circular_asteroids`: 895,910 asteroids, 0 per-target rows + +**Result.** an orbit made rather than captured: none with eccentricity below 0.001 and inclination below 0.2 deg, against 0.01 from the 24 below that eccentricity and the 537 below that inclination taken as independent (`sbdb_circular_asteroids`) + +## Lithium in old cool dwarfs + +**Data.** GALAH DR4: 1,844 dwarfs below 5300 K (log g above 4.3) with a clean A(Li) and isochrone ages above 6 Gyr; their Gaia DR3 speeds; the red-arm spectra of the 135 above A(Li) 2.0 and of 135 lithium-poor stars of the same selection and S/N + +**Runs.** `galah_lithium_old_dwarfs`: 1,844 stars, 135 per-target rows, 114 vetted + +**Result.** an element such a star has burned: 135 above A(Li) 2.0, 26 of them at young-disc speeds (below 20 km/s) and 10 at thick-disc speeds (above 60 km/s); mass rules out an industrial origin, A(Li) 3.69 in a 0.04 M_sun envelope holding 1.9e21 kg of lithium, about 200 times the Earth's; the Li I 6708 line refitted in each spectrum at the instrument's width, at that width broadened by GALAH's vsini and at the star's own Ca I 6717.7 width, against the lithium-poor stars read at their partners' claimed widths (132 of 135 absent, 1 confirmed) and the same stars with lines of those widths injected (134 of 135 recovered, at 1.00 of the injected width): 95 lines confirmed, every one in a star with a sign of youth (vsini of 5 km/s or more in 92, H-alpha in emission, Ca II triplet activity or a young-disc speed) or of a companion, so their isochrone ages are wrong; 18 absent where GALAH gives 113-600 mA with a clean flag, among them the highest, Gaia DR3 3910691559800909568 (401 mA listed, 17 +- 28 mA measured, GALAH's own neural-network [Li/Fe] 0.21 +- 0.17); 1 much weaker; 21 at a median S/N of 6, too noisy to test; the one real line at a thick-disc speed, Gaia DR3 5489922653396735360, belongs to a close double whose images Gaia splits in 44 per cent of its transits (RUWE 6.6) and whose velocity reads 19.7 km/s in GALAH against 56.9 +- 16.4 km/s from Gaia's two transits, so its speed is not its own; none left (`galah_lithium_old_dwarfs`) + +## Planets on Earth's day + +**Data.** NASA Exoplanet Archive composite table: 170 planets with periods of 0.7-1.4 d + +**Runs.** `exoplanets_earth_day`: 170 planets, 1 per-target row, 1 vetted + +**Result.** a period chosen to match Earth's turning: one between the sidereal day less 0.2 per cent and the solar day plus 0.2 per cent, TIC 18942729 b (0.998178 d, found by TESS from space, where no night aliases a period), against 1.64 expected (`exoplanets_earth_day`) + +## Planets on one clock + +**Data.** NASA Exoplanet Archive composite table: 330 planets with periods measured to 5e-7 + +**Runs.** `exoplanets_shared_periods`: 330 planets, 2 per-target rows, 2 vetted + +**Result.** a period standardised across systems: no pair in different systems within 1e-6 against 0.04 from the pairs within 1e-4; the two pairs within 1e-5, Kepler-550 b with Kepler-435 b and Kepler-856 b with TOI-1135 b, differ by 11 and 19 times their combined errors (`exoplanets_shared_periods`) + +## Pulsars on one clock + +**Data.** ATNF catalogue (VizieR B/psr): 2,071 pulsars with frequencies measured to 1e-7 and first derivatives, carried to MJD 56000 + +**Runs.** `atnf_shared_clocks`: 2,071 pulsars, 15 per-target rows, 15 vetted + +**Result.** a beacon period shared between sites: 3 pairs more than 1 deg apart outside one globular cluster within 1e-6 against 1.23 from the pairs within 1e-4, each apart by 41 to 7,855 times the combined errors; periods the catalogue gives to two digits pile onto round values (4.1 and 3.6 ms) and are left out (`atnf_shared_clocks`) + +## Fast radio bursts at nearby stars + +**Data.** CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59): 536 bursts; the 312 sources of the Gaia Catalogue of Nearby Stars within 10 pc + +**Runs.** `chime_frb_nearby_stars`: 536 bursts, 2 per-target rows, 2 vetted + +**Result.** a burst sent from a neighbour: one 2-sigma ellipse, FRB 20190429A's, holds a nearby double (Gaia DR3 2154880616774131840 and 2154880616774131712) 0.30 deg from the burst, against 1.88 with the bursts moved 5-20 deg in right ascension (`chime_frb_nearby_stars`) + +## Asteroids brighter than a mirror + +**Data.** JPL Small-Body Database: 128 asteroids with geometric albedos above 0.8; AKARI (J/PASJ/63/1117), WISE fits with errors (J/ApJ/741/68) and taxonomy from the ATLAS phase curves (VII/288) + +**Runs.** `sbdb_mirror_asteroids`: 128 asteroids, 128 per-target rows, 111 vetted + +**Result.** a polished or white made surface: 93 fall below the 0.6 of the brightest natural surfaces at 3 sigma in AKARI or WISE or carry a dark class their albedo contradicts (27413 Ambruster and 1999 CX85 are C-types listed at 0.86 and 0.99), 24 are fits pinned at 1.000 and 11 are enstatite, basaltic or X-type surfaces; 17 rest on one albedo with no class or second measurement, at the sizes (1-4 km) where Pravec et al. (2012) found catalogue absolute magnitudes too bright by 0.3-0.5 mag, enough to bring 0.9 to 0.6 (`sbdb_mirror_asteroids`) + +## Retrograde orbits inside Jupiter's + +**Data.** JPL Small-Body Database: bound orbits with i above 90 deg, a below 4.5 au and q beyond 1.3 au + +**Runs.** `sbdb_retrograde_inner`: 1 asteroid, 1 per-target row, 1 vetted + +**Result.** bodies circling against the planets' flow, which collisions and the planets remove: one, 2022 OF60 (a 4.28 au, e 0.68, i 124 deg), on a 15-day arc of orbit quality 8 with a Tisserand parameter of 0.47, a Damocloid captured from the comets (`sbdb_retrograde_inner`) + +## Objects on Earth's own orbit + +**Data.** JPL Small-Body Database: 23 asteroids with a 0.95-1.05 au, e below 0.05 and i below 3 deg + +**Runs.** `sbdb_earth_orbit`: 23 asteroids, 23 per-target rows, 23 vetted + +**Result.** something parked on our path round the Sun: 23 bodies of 2-34 m; radiation pressure measured at 3 sigma for 4 (2020 GE, 2006 RH120, 2021 GM1 and 2020 CD3), area-to-mass ratios of 1.7-5.2e-4 m2/kg, a tenth of a spent rocket stage's or less, each allowing rubble's density or more at albedo 0.5 (662-5,659 kg/m3); the other 19 have arcs too short to measure it, and identified rocket stages such as 2020 SO leave the asteroid catalogue (`sbdb_earth_orbit`) + +## Light Gaia's outlier map could not place + +**Data.** Gaia DR3 Outlier Analysis (astrophysical_parameters, oa_neuron_information): 99,119 sources within 100 pc at G below 17 with RUWE below 1.4 and single-source BP/RP excess + +**Runs.** `gaia_oa_unlabelled`: 99,119 Gaia sources, 3 per-target rows, 3 vetted + +**Result.** 154 of the 900 neurons carry no class and hold 11.1 per cent of all mapped sources, but only 3 of the nearby clean sources against 11,000 at that share: the white dwarf G 171-B10A, a double and the cataclysmic variable GD 552 (`gaia_oa_unlabelled`) + +## Bright nearby light no class claims + +**Data.** Gaia DR3 discrete source classifier: 116,448 sources within 100 pc at G below 15 with RUWE below 1.4 + +**Runs.** `gaia_noclass_nearby`: 116,448 Gaia sources, 0 per-target rows + +**Result.** one source with every class probability below 0.5, its BP/RP excess not a single source's (`gaia_noclass_nearby`) + +## Something at rest in the universe's frame + +**Data.** Gaia DR3: 295,762 stars with radial velocities at heliocentric speeds of 300-440 km/s, 24,211 with velocity errors below 10 km/s + +**Runs.** `gaia_cmb_rest`: 24,211 stars, 0 per-target rows + +**Result.** a body at rest relative to the cosmic microwave background moves at 369.8 km/s toward Galactic (84.0, -48.3) deg as we see it: none within 10 km/s of that velocity, against 0.39 around 1000 random directions of the same speed (`gaia_cmb_rest`) + +## Stars accelerating along their own motion + +**Data.** Gaia DR3 nss_acceleration_astro: 334,107 solutions at 5 sigma after the perspective term + +**Runs.** `gaia_thrust_alignment`: 334,107 stars, 0 per-target rows + +**Result.** thrust gathers accelerations along the motion: 4.53 per cent lie within 8 deg of it and 4.54 per cent within 8 deg against it, against 4.44 per cent for a uniform angle, the same small excess at both ends, which no thrust gives (`gaia_thrust_alignment`) + +## Copy stars on opposite sides of the sky + +**Data.** Gaia DR3: 48,075 stars within 100 pc with velocities to 0.5 km/s + +**Runs.** `gaia_copy_stars`: 48,075 stars, 0 per-target rows + +**Result.** no pair more than 90 deg apart alike to 0.002 mag in G and BP-RP, 0.2 per cent in parallax and 0.5 km/s in velocity, and none with the velocities shuffled (`gaia_copy_stars`) + +## Our explained flags in Earth's transit zone + +**Data.** the coverage store: 166,903 Gaia DR3 stars, 15,894 of them vetted + +**Runs.** `store_flags_etz`: 166,903 stars, 0 per-target rows + +**Result.** 48 vetted stars within 0.27 deg of the ecliptic against 413 at the store's share (`store_flags_etz`) + +## Our flags toward the obvious meeting-point directions + +**Data.** the coverage store: 180,822 Gaia DR3 stars, 32,003 of them vetted + +**Runs.** `store_flags_directions`: 180,822 stars, 0 per-target rows + +**Result.** toward the Galactic centre 3,646 vetted stars against 6,772 from the whole store's share, toward the anticentre 1,743 against 2,268 and toward the poles 3,394 against 2,208, the footprints of the surveys that produced the vets, which avoid the plane; with each run's own coverage setting its share, 3,819 run targets against 3,832 toward the centre, 1,786 against 1,771 toward the anticentre and 3,464 against 3,465 toward the poles (`store_flags_directions`) + +## Planets inside their own Roche limit + +**Data.** NASA Exoplanet Archive composite table: 1,287 planets with mass and radius measured to a third + +**Runs.** `exoplanets_inside_roche`: 1,287 planets, 0 per-target rows + +**Result.** none inside the fluid Roche limit at 3 sigma; the nearest, WASP-12 b, 0.3 sigma outside it (`exoplanets_inside_roche`) + +## Copy planets in different systems + +**Data.** composite table: 25 planets with mass and radius to 3 per cent + +**Runs.** `exoplanets_copies`: 25 planets, 0 per-target rows + +**Result.** no pair alike to 1 per cent in radius, mass and period (`exoplanets_copies`) + +## Daysides hotter than their stars allow + +**Data.** the Exoplanet Archive's emission-spectroscopy table: 103 brightness temperatures with host temperature and a/R* + +**Runs.** `exoplanets_dayside_excess`: 103 measurements, 1 per-target row + +**Result.** one above the hottest dayside that zero albedo and no redistribution allow, GJ 436 b at 3.6 um (1120 +- 20 K against 875 K), the band where Stevenson et al. (2010) found methane missing on the tidally heated planet (`exoplanets_dayside_excess`) + +## Period ratios that spell constants + +**Data.** composite table: 1,591 adjacent planet pairs + +**Runs.** `exoplanets_constant_ratios`: 1,591 planet pairs, 0 per-target rows + +**Result.** none within 1e-4 of pi, e, the golden ratio, sqrt 2 or sqrt 3, against 0.93 for five random numbers (`exoplanets_constant_ratios`) + +## Systems packed tighter than Hill stability + +**Data.** composite table: 1,482 adjacent pairs with masses and semi-major axes + +**Runs.** `exoplanets_hill_packing`: 1,482 planet pairs, 29 per-target rows, 2 vetted + +**Result.** 29 below 2 sqrt 3 mutual Hill radii: microlensing pairs with projected separations, masses from mass-radius relations, pairs near 3:2, 4:3 and 2:1 resonance (HR 8799, 7 CMa, HD 5319, HD 200964), the circumbinary claims around the post-common-envelope binaries NN Ser and HU Aqr, and Kepler-132 b and c, which orbit different stars of a binary (`exoplanets_hill_packing`) + +## Two planets on one orbit + +**Data.** composite table: 1,067 systems of two or more planets + +**Runs.** `exoplanets_coorbital`: 1,067 planetary systems, 0 per-target rows + +**Result.** no pair within 1 per cent in period (`exoplanets_coorbital`) + +## Pulsars with square pulses + +**Data.** ATNF catalogue (VizieR B/psr): 1,050 pulsars with both widths + +**Runs.** `atnf_square_pulses`: 1,050 pulsars, 0 per-target rows + +**Result.** none with W10/W50 below 1.05; median 2.00 (`atnf_square_pulses`) + +## Pulsars with no electrons in front + +**Data.** ATNF: 2,457 pulsars with a dispersion measure + +**Runs.** `atnf_no_dispersion`: 2,457 pulsars, 0 per-target rows + +**Result.** none below 1 pc cm^-3; the lowest, J0108-1431, at 2.38 (`atnf_no_dispersion`) + +## Pulsars spinning faster than a neutron star survives + +**Data.** ATNF: 2,527 pulsars with a period + +**Runs.** `atnf_breakup`: 2,527 pulsars, 0 per-target rows + +**Result.** none below 0.7 ms; the fastest, J1748-2446ad, at 1.396 ms (`atnf_breakup`) + +## Pulsars radiating more than their spin supplies + +**Data.** ATNF: 1,563 pulsars with 1.4 GHz luminosity and spin-down power + +**Runs.** `atnf_overpowered`: 1,563 pulsars, 0 per-target rows + +**Result.** none above it even taken isotropic over 1 GHz (`atnf_overpowered`) + +## Pulsars of one globular cluster on one clock + +**Data.** ATNF: 72 cluster pulsars timed to 1e-7 in 21 clusters + +**Runs.** `atnf_cluster_clocks`: 72 pulsars, 0 per-target rows + +**Result.** no same-cluster pair within 1e-4 (`atnf_cluster_clocks`) + +## Binary pulsars on Earth's year + +**Data.** ATNF: 256 binary pulsars + +**Runs.** `atnf_year_orbits`: 256 pulsars, 0 per-target rows + +**Result.** none within 0.1 per cent of a year; the nearest, J1823-1115, at 357.8 d (`atnf_year_orbits`) + +## Burst dispersions on shared values + +**Data.** CHIME/FRB Catalog 1: 492 sources, one burst for each repeater + +**Runs.** `chime_dm_shells`: 492 bursts, 0 per-target rows + +**Result.** 107 pairs within 0.5 pc cm^-3 against 111 +- 12 from the smoothed distribution; counting every repeat burst gives 216 against 140, the repeaters' own bursts (`chime_dm_shells`) + +## Bursts arriving together from different directions + +**Data.** CHIME/FRB Catalog 1: 536 bursts over 341 days + +**Runs.** `chime_simultaneous`: 536 bursts, 0 per-target rows + +**Result.** none more than 10 deg apart within 1 s, against 0.01 (`chime_simultaneous`) + +## Copy bursts from different directions + +**Data.** CHIME/FRB Catalog 1: 227 non-repeating bursts with width, fluence, scattering and spectral index + +**Runs.** `chime_copy_bursts`: 227 bursts, 0 per-target rows + +**Result.** none alike in all four (`chime_copy_bursts`) + +## Gamma-ray bursts from nearby stars + +**Data.** Swift (HEASARC swiftgrb): 711 bursts with XRT positions; 2,575 sources within 20 pc + +**Runs.** `swift_grb_nearby_stars`: 711 bursts, 0 per-target rows + +**Result.** no star inside an error circle, and none with the bursts moved 1-2 deg (`swift_grb_nearby_stars`) + +## Nearby stars LAMOST labelled unknown + +**Data.** LAMOST DR10 low-resolution general catalogue + +**Runs.** `lamost_unknown_nearby`: 0 spectra, 0 per-target rows + +**Result.** no spectrum classed Unknown reaches r-band S/N 50; the class holds low-S/N spectra alone (`lamost_unknown_nearby`) + +## Bright nearby stars DESI fitted badly + +**Data.** DESI DR1: 12,624 stellar spectra with a fit warning and a Gaia identifier + +**Runs.** `desi_badfit_nearby`: 12,624 spectra, 1 per-target row + +**Result.** one within 100 pc at G below 16, Gaia DR3 3836824650659924992 (G 15.3), its warning bit 2048 that of poor data (`desi_badfit_nearby`) + +## Zinc far above iron + +**Data.** GALAH DR4: 226,305 clean dwarfs at [Fe/H] -0.3 to +0.3 + +**Runs.** `galah_zinc_excess`: 226,305 stars, 58 per-target rows, 50 vetted + +**Result.** 58 above [Zn/Fe] +0.8 where the sample scatters by 0.11, their S/N in the blue arm, where the zinc lines lie, a median of 13 (`galah_zinc_excess`) + +## Dwarfs that look mined + +**Data.** GALAH DR4: 215,038 clean dwarfs at [Fe/H] above -0.3 + +**Runs.** `galah_mined_dwarfs`: 215,038 stars, 0 per-target rows + +**Result.** none with [Si/Fe] and [Al/Fe] both below -0.4 (`galah_mined_dwarfs`) + +## Interstellar bands within 50 pc + +**Data.** GALAH DR4: 198 stars within 50 pc with a fitted 5780 A band + +**Runs.** `galah_dib_within_50pc`: 198 stars, 27 per-target rows, 19 vetted + +**Result.** 27 above 5 sigma and 20 mA, 19 of them below 4500 K, where the star's own lines fill the band; 8 hotter ones at up to 2.1 A, more than any 50 pc sightline holds, are open; the band's median is 56 mA at 0.5-1 kpc against 20 within 50 pc (`galah_dib_within_50pc`) + +## Stars spinning faster than they hold together + +**Data.** GALAH DR4: 320,994 clean dwarfs with v sin i, mass and luminosity + +**Runs.** `galah_breakup_rotation`: 320,994 stars, 0 per-target rows + +**Result.** none; the fastest at 0.075 of break-up (`galah_breakup_rotation`) + +## Flares firing together across the sky + +**Data.** Yang et al. (2023) TESS flare catalogue: 60,810 flares + +**Runs.** `tess_flare_synchrony`: 60,810 flares, 0 per-target rows + +**Result.** 3,876 pairs more than 10 deg apart within a minute against 3,657 from the rate at 10-60 minutes; 607 of them crowd minutes holding several pairs, the busiest at two moments of 2018 November and December when flares registered on many stars at once, the spacecraft's events and not the stars' (`tess_flare_synchrony`) + +## Standardised flares + +**Data.** Yang et al. (2023): 1,352 stars with ten or more flares + +**Runs.** `tess_standard_flares`: 1,352 stars, 0 per-target rows + +**Result.** none whose energies agree to 5 per cent; the tightest spreads by 36 per cent (`tess_standard_flares`) + +## Stars steadier than photon noise allows + +**Data.** Kepler DR25 stellar table: 198,670 stars with 6-hour CDPP + +**Runs.** `kepler_steadier_than_photons`: 198,670 stars, 97 per-target rows, 97 vetted + +**Result.** 97 below 0.8 of the shot noise their Kepler magnitude gives, the lowest at 0.27, each over the full four years and most of the lowest at 6000-8200 K, where pulsations shape the pipeline's noise filter; no star can be quieter than its photons, so the figure is the pipeline's (`kepler_steadier_than_photons`) + +## Copied planetary systems + +**Data.** composite table: 535 consecutive triples + +**Runs.** `exoplanets_copied_systems`: 535 planet triples, 3 per-target rows, 1 vetted + +**Result.** 3 pairs of systems with both period ratios equal to 0.1 per cent against 0.44 shuffled, every one a chain of 3:2 and 4:3 resonances (TOI-178 with K2-138, HD 110067 with Kepler-223, Kepler-80 with K2-138), the steps that migration in a disc builds and the shuffle breaks (`exoplanets_copied_systems`) + +## Planets brighter than a mirror + +**Data.** the emission-spectroscopy table: 128 eclipse depths shortward of 1 um with geometry + +**Runs.** `exoplanets_mirror_albedo`: 128 measurements, 0 per-target rows + +**Result.** no geometric albedo above 1 at 3 sigma (`exoplanets_mirror_albedo`) + +## Planets orbiting inside their star or hotter than it + +**Data.** composite table: 6,057 planets + +**Runs.** `exoplanets_inside_star`: 6,057 planets, 2 per-target rows, 2 vetted + +**Result.** none inside its star; two hotter than their star can hold, Oph 11 b and CFHTWIR-Oph 98 b, young companions glowing from their own contraction (`exoplanets_inside_star`) + +## Pulsars paired in simple ratios + +**Data.** ATNF: 1,999 pulsars timed to 1e-7 outside clusters, 2,655 pairs within 1 deg + +**Runs.** `atnf_simple_ratios`: 2,655 pulsar pairs, 0 per-target rows + +**Result.** none in a ratio p/q to 1e-6, against 0.03 (`atnf_simple_ratios`) + +## Bursts masquerading from pulsars + +**Data.** CHIME/FRB Catalog 1 and the ATNF catalogue + +**Runs.** `chime_frb_pulsars`: 536 bursts, 0 per-target rows + +**Result.** no burst within 1 deg and 5 per cent in dispersion of a pulsar (`chime_frb_pulsars`) + +## Well-studied neighbours of unknown nature + +**Data.** SIMBAD entries within 100 pc + +**Runs.** `simbad_studied_unknowns`: 0 SIMBAD entries, 0 per-target rows + +**Result.** none typed unknown or not an object with 20 or more references (`simbad_studied_unknowns`) + +## Stars leaving the Galaxy from next door + +**Data.** Gaia DR3: 146,385 stars within 100 pc with velocities to 5 km/s + +**Runs.** `gaia_unbound_nearby`: 146,385 stars, 0 per-target rows + +**Result.** none above the 550 km/s escape speed; the fastest at 479 km/s (`gaia_unbound_nearby`) + +## Nearby stars SDSS could not classify + +**Data.** SDSS DR17 SpecObj through SkyServer: 9,148 primary stellar spectra at S/N above 20 with a redshift warning or no subclass; Gaia DR3 by CDS XMatch + +**Runs.** `sdss_unclassified_nearby`: 9,148 spectra, 64 per-target rows, 64 vetted + +**Result.** 64 within 100 pc, every one typed by SDSS: 35 white dwarfs or cataclysmic variables in SIMBAD, many given the nearest template of another class (L, T, carbon, O, B, F-K supergiant) for want of white-dwarf templates, and 29 K, M and F stars typed as they are, most of the K and F stars at G 9-11, where high-S/N spectra show more outlying pixels than the fit allows (`sdss_unclassified_nearby`) + +## X-rays from cold white dwarfs + +**Data.** Gentile Fusillo et al. (2021): 12,007 white dwarfs within 100 pc below 8000 K; eRASS1 main catalogue by CDS XMatch + +**Runs.** `erass1_cold_white_dwarfs`: 12,007 white dwarfs, 21 per-target rows, 21 vetted + +**Result.** 21 within three positional errors of an eRASS1 source against 6-23 (mean 12.4) with the white dwarfs moved 2 arcmin; 6 share the error circle with a companion at the white dwarf's parallax (four M dwarfs, a K dwarf and a second white dwarf), 11 with other Gaia stars, and 4 lie 1.8-2.9 errors off with no other star in the circle, at the chance rate (`erass1_cold_white_dwarfs`) + +## Dwarfs whose 12 um output changed between 1983 and 2010 + +**Data.** IRAS PSC (II/125) and AllWISE (II/328) by CDS XMatch at 7,556 Gaia DR3 stars within 100 pc at G below 8: 1,226 measured in both + +**Runs.** `iras_wise_12um`: 1,226 stars, 2 per-target rows, 2 vetted + +**Result.** W3 - IRAS median 0.44 mag, scatter 0.10; two parted by 1 mag, both fainter in W3 and both the B stars of doubles, HD 58038 B and 20 Gem B, whose partners 7 and 20 arcsec away lie inside IRAS's beam and outside W3's (`iras_wise_12um`) + +## Dwarfs larger than their light allows + +**Data.** JMMC Measured Stellar Diameters (II/345) by CDS XMatch with Gaia DR3 FLAME radii: 62 dwarfs within 100 pc + +**Runs.** `jmdc_swollen_dwarfs`: 62 measurements, 0 per-target rows + +**Result.** measured over predicted diameter median 0.975, scatter 0.057; none above 1.2 at 3 sigma (`jmdc_swollen_dwarfs`) + +## Stars dimmer in the infrared than their spectra allow + +**Data.** Gaia DR3 RVS temperatures with GSP-Spec flags of 0 or 1 and AllWISE W1 through Gaia's best neighbours: 16,360 stars within 100 pc + +**Runs.** `gaia_infrared_deficit`: 16,360 stars, 28 per-target rows, 28 vetted + +**Result.** G - W1 scatters by 0.106 mag about its locus; 28 with a colour temperature 500 K above the spectroscopic at 5 sigma, every one with a BP-RP temperature within 90 K of its G - W1 temperature, so the optical colour agrees with the infrared and the RVS temperature reads 500-760 K low, 19 of them at RVS temperatures of 3,880-4,100 K (`gaia_infrared_deficit`) + +## Hipparcos stars Gaia cannot find + +**Data.** Hipparcos new reduction: 15,332 stars at Hp 7-11 without a Gaia DR3 best neighbour; Gaia DR3 by CDS XMatch at positions carried to 2016.0 + +**Runs.** `hipparcos_gone`: 15,332 stars, 4 per-target rows, 4 vetted + +**Result.** 15,328 have a Gaia source within 10 arcsec, the best-neighbour table's misses; of the other 4, three carry a Gaia DR3 identifier in SIMBAD, and HIP 116191 is GJ 897 BC, a pair Gaia holds as two sources of G 10.0 6.5 arcsec from SIMBAD's position, where Hipparcos's solution of the double (parallax 5 +- 35 mas) does not carry it (`hipparcos_gone`) + +## RR Lyrae on one clock + +**Data.** Gaia DR3 vari_rrlyrae: 60,123 stars with periods to 1e-5 + +**Runs.** `gaia_rrlyrae_clock`: 60,123 RR Lyrae, 6925 per-target rows, 6925 vetted + +**Result.** 7,430 pairs more than 1 deg apart within 1e-6 against 7,392 scaled from the pairs within 1e-4 (`gaia_rrlyrae_clock`) + +## Cepheids on one clock + +**Data.** Gaia DR3 vari_cepheid: 994 stars with periods to 1e-5 + +**Runs.** `gaia_cepheid_clock`: 994 Cepheids, 2 per-target rows, 2 vetted + +**Result.** 2 pairs within 1e-6 against 0.46, one pair in each Magellanic Cloud (`gaia_cepheid_clock`) + +## Eclipsing binaries on one clock + +**Data.** Gaia DR3 vari_eclipsing_binary: 27,900 binaries with periods to 1e-6 + +**Runs.** `gaia_eclipser_clock`: 27,900 eclipsing binaries, 781 per-target rows, 781 vetted + +**Result.** 791 pairs more than 1 deg apart within 1e-6 against 788 scaled from the pairs within 1e-4 (`gaia_eclipser_clock`) + +## Binary orbits on one clock + +**Data.** Gaia DR3 nss_two_body_orbit: 1,435 orbits with periods to 1e-5 + +**Runs.** `gaia_orbit_clock`: 1,435 binary orbits, 1 per-target row, 1 vetted + +**Result.** 1 pair within 1e-6 against 0.5 (`gaia_orbit_clock`) + +## Systems built from identical planets + +**Data.** composite table: 8 systems of three or more planets with every mass and radius measured to 15 per cent + +**Runs.** `exoplanets_identical_systems`: 8 planetary systems, 8 per-target rows + +**Result.** none whose masses and radii are both consistent with one value; TOI-125's radii agree (p 0.55) and its masses do not (p 4e-5) (`exoplanets_identical_systems`) + +## Something closer than Proxima Centauri + +**Data.** Gaia DR3: sources with parallaxes above 700 mas + +**Runs.** `gaia_closer_than_proxima`: 1 Gaia source, 0 per-target rows + +**Result.** one, Proxima itself at 768.1 mas; none beyond it (`gaia_closer_than_proxima`) + +## Something faster across the sky than Barnard's Star + +**Data.** Gaia DR3: every source with a proper motion above 9000 mas/yr + +**Runs.** `gaia_faster_than_barnard`: 1 Gaia source, 0 per-target rows + +**Result.** one, Barnard's Star itself at 10393 mas/yr (`gaia_faster_than_barnard`) + +## Stars standing still in the Galaxy + +**Data.** Gaia DR3: 146,385 stars within 100 pc with velocities to 5 km/s + +**Runs.** `gaia_still_in_galaxy`: 146,385 stars, 2 per-target rows, 2 vetted + +**Result.** 2 below 30 km/s about the Galactic centre against 2.9 from the 23 below 60 km/s scaled by the volume of speeds: BD+11 4725 (23 km/s) and the halo subdwarf G 226-48 (29 km/s, [M/H] -1.1), then G 167-12 and G 240-40 ([M/H] -1.4) at 30 km/s (`gaia_still_in_galaxy`) + +## Radial velocities the Galaxy cannot hold + +**Data.** Gaia DR3: radial velocities beyond +-700 km/s measured to 5 km/s over ten or more transits + +**Runs.** `gaia_rv_beyond_escape`: 2 stars, 2 per-target rows, 2 vetted + +**Result.** 2, Gaia DR3 347866482390401280 (+863 km/s) and 5254851637274716288 (-811 km/s), faint RVS spectra at expected S/N 5 with 6 of 14 and 9 of 17 transits deblended from neighbours, and no APOGEE spectrum (`gaia_rv_beyond_escape`) + +## A lattice among the nearby stars + +**Data.** Gaia DR3: 14,815 systems within 50 pc brighter than absolute G 10, those closer than 0.1 pc merged + +**Runs.** `gaia_nearby_lattice`: 14,815 star systems, 0 per-target rows + +**Result.** Clark-Evans ratio 0.942 against 1.000 +- 0.004 for uniform volumes, clustered rather than regular (`gaia_nearby_lattice`) + +## Bright stars no older catalogue holds + +**Data.** Gaia DR3: 1,064 sources brighter than G 6 without a Hipparcos-2 or Tycho-2 best neighbour + +**Runs.** `gaia_bright_uncatalogued`: 1,064 Gaia sources, 0 per-target rows + +**Result.** 1,046 named in SIMBAD (the brightest stars, whose Gaia solutions have three parameters or a binary's perturbation) and the other 18 within 2 arcsec of a Hipparcos star; none uncatalogued (`gaia_bright_uncatalogued`) + +## Galaxies with parallaxes + +**Data.** Gaia DR3: 139 sources the discrete source classifier calls galaxies above 0.9 with parallaxes above 10 mas at 10 sigma + +**Runs.** `gaia_galaxies_with_parallax`: 139 Gaia sources, 139 per-target rows, 139 vetted + +**Result.** 137 with solutions Gaia's statistics doubt (RUWE, a second image peak, image asymmetry or excess noise), median G 19.3 and 132 within 15 deg of the Galactic plane; the other 2 move at 29 and 48 mas/yr with BP/RP flux excesses of 3.6 and 9.5, one 4.8 arcsec from the binary CD-34 6718, the neighbours' light in the spectra the classifier reads (`gaia_galaxies_with_parallax`) + +## Quasars that move + +**Data.** Gaia DR3: 391,934 quasar candidates both classifiers call quasars at QSOC redshift above 1 + +**Runs.** `gaia_moving_quasars`: 2 Gaia sources, 2 per-target rows, 2 vetted + +**Result.** 2 moving above 10 mas/yr at 10 sigma, both with solutions Gaia's statistics doubt (`gaia_moving_quasars`) + +## Planets denser than iron + +**Data.** composite table: 317 transiting planets below 30 Earth masses with measured mass and radius to 20 per cent + +**Runs.** `exoplanets_denser_than_iron`: 317 planets, 0 per-target rows + +**Result.** none smaller than a pure-iron planet of their mass at 3 sigma; the nearest K2-229 b (2.2 sigma) and Kepler-107 c (on the iron line) (`exoplanets_denser_than_iron`) + +## Planets in exact resonance + +**Data.** composite table: 598 adjacent pairs with both periods measured to 1e-5 + +**Runs.** `exoplanets_exact_resonance`: 598 planet pairs, 1 per-target row, 1 vetted + +**Result.** 1 within 1e-4 of a small-integer ratio, Kepler-87 b and c at 5:3 (+2.4e-5), against 1.04 from the pairs 1e-3 to 1e-2 from the ratios (`exoplanets_exact_resonance`) + +## Copies of Earth + +**Data.** composite table: 1,699 planets of 0.5-2 Earth radii with insolation and host temperature + +**Runs.** `exoplanets_earth_copies`: 1,699 planets, 0 per-target rows + +**Result.** none within 10 per cent of Earth's radius and 20 per cent of its mass, both measured, at 0.75-1.25 of its insolation around a 5300-6100 K star; the nearest Kepler-1126 c and Kepler-452 b at 1.45 and 1.63 Earth radii, their masses estimated (`exoplanets_earth_copies`) + +## Copy pulsars + +**Data.** ATNF (VizieR B/psr): 1,765 pulsars with period, period derivative, dispersion measure and W50 + +**Runs.** `atnf_copy_pulsars`: 1,765 pulsars, 0 per-target rows + +**Result.** no pair more than 10 deg apart alike to 1e-3 in period and 5 per cent in the other three, and none with them shuffled among pulsars of like period (`atnf_copy_pulsars`) + +## Binary pulsars on Earth's day + +**Data.** ATNF: 256 binary pulsars + +**Runs.** `atnf_day_orbits`: 256 pulsars, 0 per-target rows + +**Result.** none within 0.1 per cent of the solar or sidereal day, against 0.08 from the 4 within 10 per cent of a day (`atnf_day_orbits`) + +## Pulsars beyond the magnetar limit + +**Data.** ATNF: 2,052 pulsars with a positive period derivative + +**Runs.** `atnf_beyond_magnetars`: 2,052 pulsars, 0 per-target rows + +**Result.** none with a dipole field above 1e16 G; the strongest the magnetar SGR 1806-20 (J1808-2024) at 2.1e15 G (`atnf_beyond_magnetars`) + +## Pulsar pairs whose frequencies spell constants + +**Data.** ATNF: 1,999 pulsars timed to 1e-7 outside globular clusters + +**Runs.** `atnf_constant_ratios`: 1,999 pulsars, 8 per-target rows, 8 vetted + +**Result.** 8 pairs whose frequency ratio equals pi, e, the golden ratio, sqrt 2 or sqrt 3 to 1e-6, against 8.9 from the 891 within 1e-4 (`atnf_constant_ratios`) + +## Bursts from inside the Galaxy + +**Data.** CHIME/FRB Catalog 1: 492 sources, one burst for each repeater + +**Runs.** `chime_inside_galaxy`: 492 burst sources, 0 per-target rows + +**Result.** none with dispersion below the Milky Way's in both NE2001 and YMW16; the smallest excess FRB 20181030A at 62-70 pc cm^-3 (`chime_inside_galaxy`) + +## Bursts from Earth's transit zone + +**Data.** CHIME/FRB Catalog 1: 492 sources + +**Runs.** `chime_transit_zone`: 492 burst sources, 1 per-target row, 1 vetted + +**Result.** 1 within 0.264 deg of the ecliptic, FRB 20190224C, against 1.33 from random right ascensions at the sources' declinations (`chime_transit_zone`) + +## Burst dispersions on a ladder + +**Data.** CHIME/FRB Catalog 1: 492 sources + +**Runs.** `chime_dm_ladder`: 492 burst sources, 0 per-target rows + +**Result.** the strongest spacing 9.45 pc cm^-3 at Rayleigh power 9.1, reached or exceeded by 5.8 per cent of draws from the smoothed distribution (median 6.4) (`chime_dm_ladder`) + +## White dwarfs above the Chandrasekhar mass + +**Data.** Gentile Fusillo et al. (2021): 16,281 white dwarfs within 100 pc with hydrogen-model masses + +**Runs.** `wd_above_chandrasekhar`: 16,281 white dwarfs, 0 per-target rows + +**Result.** none above 1.40 solar masses at 3 sigma in both models; the heaviest WDJ200417.75-821223.74 at 1.38 +- 0.11 (`wd_above_chandrasekhar`) + +## X-rays from cold brown dwarfs + +**Data.** Kirkpatrick et al. (2021) 20 pc census: 133 T and Y dwarfs with Spitzer astrometry, carried to 2020.0; eRASS1 (half the sky) by CDS XMatch + +**Runs.** `erass1_cold_brown_dwarfs`: 133 brown dwarfs, 0 per-target rows + +**Result.** no eRASS1 source within 15 arcsec, and none with the dwarfs moved 2 arcmin (`erass1_cold_brown_dwarfs`) + +## Ultraviolet from cold brown dwarfs + +**Data.** the same 133 T and Y dwarfs carried to 2007.0; GALEX GUVcat AIS (II/335) by CDS XMatch + +**Runs.** `galex_cold_brown_dwarfs`: 133 brown dwarfs, 0 per-target rows + +**Result.** no GALEX source within 5 arcsec, against 0-3 (mean 1.6) with the dwarfs moved 2 arcmin (`galex_cold_brown_dwarfs`) + +## Radio from cold white dwarfs + +**Data.** Gentile Fusillo et al. (2021): 12,007 white dwarfs within 100 pc below 8000 K carried to 1995.0; NVSS (VIII/65) by CDS XMatch + +**Runs.** `nvss_cold_white_dwarfs`: 12,007 white dwarfs, 20 per-target rows, 20 vetted + +**Result.** 20 with an NVSS source within 15 arcsec against 26-35 (mean 30.4) with the white dwarfs moved 2 arcmin, the radio sky behind them (`nvss_cold_white_dwarfs`) + +## Ultraviolet from the coldest white dwarfs + +**Data.** Gentile Fusillo et al. (2021): 885 white dwarfs within 100 pc below 4500 K carried to 2007.0; GALEX GUVcat AIS by CDS XMatch + +**Runs.** `galex_coldest_white_dwarfs`: 885 white dwarfs, 16 per-target rows, 16 vetted + +**Result.** 16 with a GALEX source within 5 arcsec against 5-14 (mean 10.4) moved 2 arcmin; most at NUV 21-22.7, what a 4500 K photosphere at G 17-18 gives at GALEX's limit, and the two at NUV 18.2 and 18.7 4 arcsec away (`galex_coldest_white_dwarfs`) + +## Infrared at isolated millisecond pulsars + +**Data.** ATNF pulsars below 30 ms with no orbit, outside globular clusters, timed to 1 arcsec; AllWISE by CDS XMatch, Gaia DR3 and the Legacy Survey DR10 for the matches + +**Runs.** `allwise_isolated_msps`: 35 pulsars, 3 per-target rows, 3 vetted + +**Result.** 3 of 35 with an AllWISE source within 3 arcsec against 0-1 (mean 0.5) moved 2 arcmin: at J1024-0719 the Gaia star that shares the pulsar's proper motion, its wide companion; at B1937+21 a reddened field star 2.2 arcsec off a timing position good to a milliarcsecond; at J1551-0658 a galaxy the Legacy Survey resolves (`allwise_isolated_msps`) + +## Unique variables next door + +**Data.** GCVS stars of the unique type; Gaia DR3 by CDS XMatch; SIMBAD + +**Runs.** `gcvs_unique_near`: 93 stars, 13 per-target rows, 13 vetted + +**Result.** 13 of 93 within 100 pc, every one of a natural kind: five L dwarfs whose clouds turn with them, four magnetic white dwarfs carrying spots round (GD 356 among them, with its emission lines), the AM CVn binary GP Com, the gamma Doradus pulsator V2118 Oph, the spotted binary AS Dra, and UU CrB, whose one event is the 1980 superflare Schaefer, King & Deliyannis (2000) list on an ordinary F8 dwarf (`gcvs_unique_near`) + +## Gamma rays from cold white dwarfs + +**Data.** Gentile Fusillo et al. (2021): 12007 white dwarfs within 100 pc below 8000 K; Fermi-LAT 4FGL-DR4 + +**Runs.** `fermi_cold_white_dwarfs`: 12,007 white dwarfs, 67 per-target rows, 67 vetted + +**Result.** 28 inside an unassociated 95 per cent ellipse against 22-54 (mean 36.4) moved 1 deg; 39 more inside ellipses the catalogue gives to blazars, radio galaxies, pulsars, supernova remnants and the binary V918 Sco (`fermi_cold_white_dwarfs`) + +## Hard X-rays from the nearest stars + +**Data.** Gaia Catalogue of Nearby Stars: 2575 objects within 20 pc; Swift-BAT 105-month and 150-month catalogues (14-195 keV) + +**Runs.** `bat_nearest_stars`: 2,575 stars, 0 per-target rows + +**Result.** 0 inside a BAT error circle against 0-6 (mean 2.5) moved 1 deg; none of BAT's 13 catalogued stars lies within 20 pc (`bat_nearest_stars`) + +## Warm stars in Earth's transit zone + +**Data.** Gaia Catalogue of Nearby Stars with its WISE photometry; SIMBAD + +**Runs.** `etz_warm_stars`: 911 stars, 7 per-target rows, 7 vetted + +**Result.** 7 warm of 911 stars in the zone against 12.3 expected from the 186 of 13800 stars 1-5 deg away (p 0.96); the seven are bright G and K dwarfs, a giant and a double star (`etz_warm_stars`) + +## Radio from Earth's transit zone + +**Data.** Gaia Catalogue of Nearby Stars north of -40 deg; VLASS epoch-1 components by CDS XMatch + +**Runs.** `etz_vlass_stars`: 1,502 stars, 0 per-target rows + +**Result.** 0 of 1502 zone stars with a 3 GHz source within 3 arcsec, against 0.74 from the 11 of 22386 stars 1-5 deg away and a mean of 0.5 with the zone moved 2 arcmin (`etz_vlass_stars`) + +## Light at 4.6 um alone + +**Data.** Gaia Catalogue of Nearby Stars with its WISE photometry: 49753 stars at BP-RP 0.5-2.5 with W1, W2 and W3 measured; AllWISE flags; SIMBAD + +**Runs.** `w2_only_excess`: 49,753 stars, 7 per-target rows, 7 vetted + +**Result.** 7 stars five widths above the W1-W2 locus with W1-W3 on it, against 7 as far below; 4 carry AllWISE contamination or extended-source flags, and the 3 left, K and M dwarfs 0.1 mag above the locus, are as common as the deficits (`w2_only_excess`) + +## Glitches firing together + +**Data.** Jodrell Bank glitch catalogue (Basu et al. 2022): 285 glitches in 107 pulsars timed to 2 days or better + +**Runs.** `glitch_coincidences`: 285 glitches, 23 per-target rows, 23 vetted + +**Result.** 13 pairs in different pulsars within their epoch uncertainties against a mean of 8.8 (95th percentile 14) with each pulsar's glitches moved 100-2000 days, as many or more in 0.11 of draws (`glitch_coincidences`) + +## X-rays from Earth's transit zone + +**Data.** Gaia Catalogue of Nearby Stars in the eRASS1 half of the sky; eRASS1 main catalogue by CDS XMatch; SIMBAD + +**Runs.** `etz_erass1_stars`: 762 stars, 83 per-target rows, 83 vetted + +**Result.** 83 of 762 zone stars with an eRASS1 source within 15 arcsec against 80.2 expected from the 1151 of 10938 stars 1-5 deg away (p 0.39), and 1.2 with the zone moved 2 arcmin (`etz_erass1_stars`) + +## Ultraviolet from Earth's transit zone + +**Data.** Gaia Catalogue of Nearby Stars; GALEX GUVcat AIS by CDS XMatch; SIMBAD + +**Runs.** `etz_galex_stars`: 1,502 stars, 251 per-target rows, 251 vetted + +**Result.** 251 of 1502 zone stars with a GALEX source within 5 arcsec against 294.5 expected from the 4389 of 22386 stars 1-5 deg away (p 0.996), and 17.0 with the zone moved 2 arcmin (`etz_galex_stars`) + +## Nearby dwarfs APOGEE could not fit + +**Data.** SDSS DR17 APOGEE on SkyServer: 5294 dwarfs within 100 pc at S/N above 100 and 4000-6500 K; SIMBAD; Gaia DR3 + +**Runs.** `apogee_star_bad_dwarfs`: 5,294 stars, 121 per-target rows, 121 vetted + +**Result.** 130 STAR_BAD, every one explained: 101 binaries (double-lined, scattering velocities, or Gaia's RUWE and radial-velocity swing), 27 with a temperature or gravity outside the pipeline's calibrated range, 2 by their SIMBAD types (`apogee_star_bad_dwarfs`) + +## Stars dimmed grey on thin-disc orbits + +**Data.** Gaia Catalogue of Nearby Stars with GSP-Phot metallicities and 2MASS; SIMBAD; GALEX GUVcat AIS by CDS XMatch + +**Runs.** `grey_dimmed_disc_stars`: 149,417 stars, 66 per-target rows, 51 vetted + +**Result.** 335 of 149417 stars more than 1.5 mag below the main sequence with clean photometry, 66 of them crossing the sky at under 50 km/s against 269 faster; of the 66, 35 metal-poor by GSP-Phot or a J-Ks bluer than the main sequence's, 12 carrying a white dwarf's light (a J-Ks redder than the main sequence's at the star's BP-RP, a D+dM type or an NUV within 5 mag of G), 4 of other SIMBAD types, and 15 M dwarfs at G 15-18 with neither a metallicity nor an ultraviolet detection, left for spectra (`grey_dimmed_disc_stars`) + +## Methanol masers away from the Galactic plane + +**Data.** Pestalozzi, Minier and Booth (2005): 519 masers at 6.7 GHz; SIMBAD + +**Runs.** `methanol_masers_off_plane`: 14 masers, 14 per-target rows, 14 vetted + +**Result.** 14 more than 2 deg from the plane, every one at a star-forming region: NGC 281, L1206, Cepheus A, Mon R2, NGC 2024, S231 and eight IRAS or MSX sources with young stars, cores or H II regions beside them (`methanol_masers_off_plane`) + +## Compact radio sources that move like neighbours + +**Data.** Radio Fundamental Catalogue rfc_2026c: 23866 VLBI-compact sources; Gaia DR3 by CDS XMatch; SIMBAD + +**Runs.** `rfc_nearby_compact`: 23,866 radio sources, 16 per-target rows, 16 vetted + +**Result.** 16 with a Gaia parallax above 2 mas: 14 known radio stars (RS CVn and Algol binaries, the Be star HD 142184, the Orion Trapezium, young stars), a blazar candidate at G 20.2 whose 4.5 mas parallax is the faint-end tail of spurious solutions, and a star 0.2 arcsec in front of a background source (`rfc_nearby_compact`) + +## Dead stars with living companions + +**Data.** Gaia DR3 binary_masses: 208 astrometric binaries with an unseen companion above 1.4 solar masses, with Gaia BH1-3; AllWISE and eRASS1 by CDS XMatch; SIMBAD + +**Runs.** `gaia_dead_companions`: 208 stars, 19 per-target rows, 16 vetted + +**Result.** 15 with W1-W3 above 0.3 against 0-3 (mean 0.8) moved 2 arcmin: 13 under AllWISE's halo, spike, persistence or extended-source flags in the Galactic plane, 1 eclipsing binary, and Gaia DR3 5331686334409329664 at b 0.5 deg with W1-W3 1.19 and no explanation in the catalogues; 4 eRASS1 sources within 15 arcsec against 0-1 moved: the Am binary HD 67518, the double star GALEX J145250.3-192225, and the A stars HD 23021 and HD 97080, whose X-rays want a late-type companion their dark 1.6 solar-mass companions cannot be; the three black holes match nothing (`gaia_dead_companions`) + +## Identical black holes merging + +**Data.** GWOSC event list, GWTC-1 to GWTC-5: 282 mergers with component masses + +**Runs.** `gwtc_equal_masses`: 282 mergers, 10 per-target rows, 10 vetted + +**Result.** 161 of 282 equal within one combined error, the pile-up of the convention that the primary is the heavier; of the 10 events with the primary to 10 per cent, mass ratios run 0.84-0.96, and GW250114_082203 alone reaches one within an error below 0.05 (0.96 +- 0.05) (`gwtc_equal_masses`) + +## Przybylski's star re-measured + +**Data.** ESO archive: the six highest-S/N HARPS and four highest-S/N UVES spectra of HD 101065; NIST ASD + +**Runs.** `przybylski_actinides`: 1 star, 1 per-target row, 1 vetted + +**Result.** the promethium line set sits deeper than 2000 random line sets of the same size (p 0.002 HARPS, 0.004 UVES) and the actinides and technetium at chance (p 0.05-0.7); the depth at the promethium positions rests on lines of Nd II (4297.80), Fe II (4157.92), Th II (4381.86), Y II and Cr II that this star's rare-earth forest carries, and without them the four and two lines left sit at p 0.05 and 0.08 (`przybylski_actinides`) + +## The random transiter in TESS + +**Data.** TESS QLP light curve of HD 139139, sector 91: 7556 cadences over 24.7 d at 607 ppm a cadence + +**Runs.** `hd139139_tess`: 1 star, 1 per-target row + +**Result.** 0 dips against 8.0 at K2's rate (Poisson 3e-4), with 3-sigma depths of 429, 248 and 162 ppm for 1, 3 and 7 h dips, which reach the deeper half of K2's 200-1600 ppm; whatever crossed the star in 2017 did not in 2025 (`hd139139_tess`) + +## Microlensing of the neighbours + +**Data.** Gaia DR3 vari_microlensing (363 events), gaia_source and vari_classifier_result; SIMBAD + +**Runs.** `gaia_microlensing_near`: 14 events, 14 per-target rows, 14 vetted + +**Result.** 14 events on sources with parallax above 1 mas at 3 sigma: 11 with a doubtful parallax (RUWE above 1.4, or under 5 sigma at G above 19 in the bulge fields), 1 a young star brightening, and 2 clean events on stars at 0.8-1 kpc (Gaia DR3 2214532279378994816, 1819571454860230400) whose blended fits leave the lens anywhere in front of the source at any small mass (`gaia_microlensing_near`) + +## TeV light at the nearest stars + +**Data.** 1LHAASO catalogue: 42 point-like sources without an association; Gaia Catalogue of Nearby Stars within 20 pc + +**Runs.** `lhaaso_nearest_stars`: 42 TeV sources, 0 per-target rows + +**Result.** 0 stars inside an unassociated source's error circle against 0-2 (mean 0.4) with the sources moved 2 deg, and 0 inside an associated one (`lhaaso_nearest_stars`) + +## Unbound stars from nowhere + +**Data.** Li et al. (2023): 52 hypervelocity candidates with Gaia astrometry, traced straight back for 300 Myr + +**Runs.** `hvs_origins`: 52 stars, 52 per-target rows, 45 vetted + +**Result.** 17 in or from the disc, 14 more likely bound than not in the catalogue's own potential, 14 with velocity errors above 150 km/s, and 7 at 490-590 km/s and 2-4 kpc above the plane whose straight paths pass 4-9 kpc from the Centre and 50 kpc from the Cloud, left for orbits in a Galactic potential (`hvs_origins`) + +## Stars that passed within a parsec of the Sun + +**Data.** Bailer-Jones (2022): 61 Gaia EDR3 stars with a median perihelion below 1 pc, 32 past and 29 to come; eRASS1, VLASS, GALEX and AllWISE by CDS XMatch; SIMBAD; Breakthrough Listen open data + +**Runs.** `close_encounter_stars`: 61 stars, 61 per-target rows, 60 vetted + +**Result.** 8 with eRASS1 sources, 8 with GALEX, 10 with W1-W3 above 0.3 and 0 with VLASS, against 0-1 of each with the stars moved: the coronae, chromospheres and photospheres of K and M dwarfs; Breakthrough Listen has observed 2 of the 61, HD 168442 and Ross 248, and the other 59 are listed for it (`close_encounter_stars`) + +## The solar siblings + +**Data.** SIMBAD; eRASS1, VLASS, GALEX and AllWISE by CDS XMatch; Breakthrough Listen open data + +**Runs.** `solar_siblings`: 2 stars, 2 per-target rows, 2 vetted + +**Result.** HD 162826 (F8 V, 33 pc) carries a photospheric W1-W3 and nothing else; HD 186302 (G3 V, 57 pc) a chromospheric GALEX NUV and a photospheric W1-W3; neither has a VLASS or eRASS1 source, and Breakthrough Listen has observed neither (`solar_siblings`) + +## Galaxies that suppress supernovae + +**Data.** HECATE: 1770 galaxies within 20 Mpc with star-formation rates; Asiago supernova catalogue, 644 supernovae of 1980-2015 matched to them by CDS XMatch + +**Runs.** `supernova_deficits`: 1,770 galaxies, 2 per-target rows, 2 vetted + +**Result.** 2 galaxies short of their supernovae at p below 0.01, both luminous infrared galaxies with active nuclei whose dust hides their supernovae and whose nuclei inflate their rates: Messier 77 (6.4 expected, 0 seen) and NGC 7552 (4.8 expected, 0 seen) (`supernova_deficits`) + +## The 2004 SETI@home candidate SHGb02+14a + +**Data.** Breakthrough Listen open data: the GBT L-band cadence on GJ 83.1 (TZ Arietis) of 2016-06-18, the hydrogen coarse channel of its 3 ON and 9 other scans of the session, dedrifted over -40 to +40 Hz/s; the 2016-09 and 2017 cadences are S band and do not hold the line + +**Runs.** `shgb02_14a`: 3 cadences, 3 per-target rows, 3 vetted + +**Result.** 101 peaks on the ON scans and 45 off, 3 of them on TZ Arietis alone: 10-12 sigma at 1420.0173 MHz drifting -2.0 to -2.25 Hz/s on the first scan, beside the 1420.017 MHz line every pointing of the session shows at zero drift; nothing in the candidate's 8-37 Hz/s (`shgb02_14a`) + +## Bursts peaking at the electron's mass + +**Data.** Fermi GBM burst catalogue (HEASARC): 1437 bursts with a Band peak energy to 10 per cent, 1696 with a Comptonised one + +**Runs.** `gbm_bursts_511kev`: 1,437 bursts, 19 per-target rows, 19 vetted + +**Result.** 9 within 2 per cent of 511 keV against 8.1 from the smooth run of peak energies either side (p 0.42), and 12 against 12.6 for the Comptonised fits (`gbm_bursts_511kev`) + +## Gamma-ray bursts repeating at one position + +**Data.** Swift GRB catalogue (HEASARC): 711 bursts with XRT positions + +**Runs.** `swift_repeating_bursts`: 711 bursts, 0 per-target rows + +**Result.** 0 pairs within their position errors plus 5 arcsec against 0.0001 by chance (`swift_repeating_bursts`) + +## Twelve-micron light at cold brown dwarfs + +**Data.** Kirkpatrick et al. (2021): 133 T and Y dwarfs with Spitzer astrometry carried to 2010.5; AllWISE by CDS XMatch + +**Runs.** `allwise_w3_cold_brown_dwarfs`: 133 brown dwarfs, 33 per-target rows, 33 vetted + +**Result.** 33 carry a W3 at S/N 3 within 5 arcsec against 1.4 with the dwarfs moved 2 arcmin, and against 27.5 from the share of field sources of the dwarfs' own W1 and W2 that the catalogue gives such a W3 (90 of 436, p 0.14): the catalogue measures W3 at every source it holds at W1 and W2, and one in five of the faint red ones comes out at S/N 3 (`allwise_w3_cold_brown_dwarfs`) + +## The Sun's co-movers against the Sun + +**Data.** the store's five stars within 1 km/s of the Sun; Gaia DR3 astrophysical parameters; SIMBAD + +**Runs.** `sun_comovers_composition`: 5 stars, 5 per-target rows, 5 vetted + +**Result.** the two warm enough to compare, BD+68 1331 and CD-75 143, are 0.34 and 0.24 dex metal-poor and 1-2 Gyr younger than the Sun, so no sibling; the other three are cool dwarfs Gaia cannot place in metallicity; the co-motion stays a chance alignment, the lowest p of a store of several hundred tests being its expected extreme (`sun_comovers_composition`) + +## H-alpha emission at quiet Sun-like neighbours + +**Data.** Gaia DR3 ESP-ELS: 4 emission-line stars within 100 pc at BP-RP 0.5-1.5; eRASS1 by CDS XMatch; SIMBAD + +**Runs.** `gaia_halpha_quiet_dwarfs`: 4 stars, 4 per-target rows, 4 vetted + +**Result.** AE Aquarii (a cataclysmic variable), CPD-68 1894 (a T Tauri star with an X-ray source), a binary at RUWE 56, and Gaia DR3 394161419479425152, 3.6 mag under the main sequence of its colour, a white dwarf's light on a red dwarf's (`gaia_halpha_quiet_dwarfs`) + +## Rhythm in the repeaters + +**Data.** CHIME/FRB Catalog 1 as tabulated by Hashimoto et al. (2022; J/MNRAS/511/1961): the 2 repeaters with five or more bursts, FRB 20180814A (10 bursts over 315 d) and FRB 20180916B (19 over 262 d); the table lists a burst's sub-bursts as rows of their own at one arrival time, counted once + +**Runs.** `chime_repeater_rhythm`: 2 repeaters, 2 per-target rows, 2 vetted + +**Result.** a clock, whose intervals are integer multiples of one period, which magnetars are not: the share of intervals from the first burst on the best tick over 4000 periods from 10 min to 100 d, the multiples of half a sidereal day left out since a transit telescope sees a source at those alone; FRB 20180814A 44 per cent on 2.79 d against 41 from burst sets drawn on random days at the real bursts' sidereal phases (p 0.60), FRB 20180916B 44 per cent on 0.514 d against 31 (p 0.065), whose 16.35 d activity cycle (CHIME/FRB Collaboration 2020) spreads its bursts over a five-day window rather than placing them on a tick (`chime_repeater_rhythm`) + +## The triangular points of nearby binaries + +**Data.** Sixth Catalog of Orbits of Visual Binary Stars: 2686 orbits of grade 4 or better, each solved for 2016.0; Gaia DR3 by CDS XMatch and gaia_source cones + +**Runs.** `binary_triangular_points`: 6 binaries, 6 per-target rows, 6 vetted + +**Result.** L4 and L5 of a stellar pair are unstable at any stellar mass ratio, so nothing natural stays there: 6 orbits within 100 pc hold their secondary where the orbit puts it at a separation of 1-20 arcsec (STF 1457, STF 1639 AB, BU 823 AB, I 658, STF 2596 and HU 1626, at 1.0-2.0 arcsec with periods of 156-2971 yr; the catalogue's wider grade-4 orbits lie beyond 100 pc); Gaia sources at L4 or L5 of the six: 0 against 0.00 at ten other angles of the same orbits, where at 1-2 arcsec from a bright primary Gaia's completeness for a faint neighbour, not the sky, sets the limit (`binary_triangular_points`) + +## Impulses on 3I/ATLAS's orbit + +**Data.** Minor Planet Center astrometry of 3I/ATLAS (C/2025 N1): 8431 positions from 345 sites, 2025 May 8 to 2026 April 14, 70 of them after the Jupiter passage of 2026 March 16; ASSIST with DE440 and sb441-n16 from JPL's solution; SOHO/SWAN's water production (Combi et al. 2026) and the nucleus masses of Thoss et al. (2026) + +**Runs.** `iso3i_impulses`: 1 interstellar object, 1 per-target row, 1 vetted + +**Result.** a velocity change that outgassing cannot give: on one set of 7633 positions gravity alone leaves chi-square 36362 and three outgassing accelerations scaling as r^-2 11983 (the normal term -6.97 +- 0.07e-9 au/d^2 against JPL's -6.85e-9), outgassing that changes at perihelion 468 less and seven month-long bins of outgassing 836 less, as a water production that peaked a week after perihelion and fell tenfold in 40 days requires; an impulse in the 20 days behind the Sun reads 1.2 m/s at Mars or at perihelion on constant outgassing (chi-square 453 and 407 less) and +0.5 +- 4.7 m/s radial on the binned outgassing (11 less, 3 sigma below 15 m/s), -4.6 +- 1.7 m/s over 100 resampled sets of the 270 observing nights and -4.3 to -4.5 +- 4-5 m/s with any one of the 30 busiest sites left out, where water alone supplies 0.5-2 m/s to a nucleus of 1e12 kg or more and the 1.6e11 kg of the CO2-only estimate allows 20 m/s; an impulse at the Jupiter passage reads -115 +- 71 m/s radial on constant outgassing and -50 +- 78 on the bins, -133 +- 255 over resampled nights, -185 +- 360 without R59, which holds most of the positions after it, and -520 +- 417 without R59 and C23, so those 70 positions see nothing under a few hundred m/s; an impulse every five days at 53 times from 2025 June 29 to 2026 March 16 on the binned outgassing worsens no fit and bounds the velocity change below 2.2-18.6 m/s (3 sigma) through 2026 February 14 and 21-220 m/s after, the largest gains in chi-square 42 on 2025 November 16 (-4.2 +- 1.4 m/s radial, +1.6 +- 0.7 transverse), 39 on 2026 January 5 (+0.6 +- 0.6 radial, +0.7 +- 0.2 transverse) and 31-32 in early December, changes the month-long bins cannot follow and the bursts of activity after perihelion give; Breakthrough Listen's 1-12 GHz observation of 2025 December 18 holds no transmitter above about 0.1 W (Jacobson-Bell et al. 2026) (`iso3i_impulses`) + +## Stars Gaia DR3 sees that DR2 did not + +**Data.** Gaia DR3: 190,985 sources within 100 pc at G below 17 with RUWE below 1.4, read in 192 source_id ranges; gaiadr3.dr2_neighbourhood; DR2 within 10 arcsec of each candidate + +**Runs.** `gaia_dr3_appeared`: 110 Gaia sources, 110 per-target rows, 110 vetted + +**Result.** a star that began shining between the releases' data spans: 110 have no DR2 neighbourhood row, 6 of them in DR2 after all (2 within 5 arcsec and a magnitude, 4 with two-parameter or duplicated DR3 solutions), 10 with a second DR3 source within 2 arcsec, 90 lying 2-7 arcsec from a DR2 star 1-11 mag brighter, inside whose image DR2 catalogued no second source, and 4 moving at 585-4812 mas/yr, Lalande 21185 among them, which DR2 holds nowhere within 30 arcsec at any magnitude, the fastest movers its cross-match lost; none left (`gaia_dr3_appeared`) + +## Stars Gaia DR2 saw that DR3 cannot find + +**Data.** Gaia DR2: 241,075 sources within 100 pc at G below 17, read in 192 source_id ranges; gaiadr3.dr2_neighbourhood; DR3 within 10 arcsec of each candidate; SIMBAD + +**Runs.** `gaia_dr2_vanished`: 2 Gaia sources, 2 per-target rows, 2 vetted + +**Result.** a star that stopped shining between the releases' data spans: 2 have no DR3 neighbourhood row, both companions of bright stars that DR3 holds as one source with the primary: iota Leo B (G 6.8, F5 V), 2.1 arcsec from the DR3 source of the F1 IV spectroscopic binary iota Leo, 2.9 mag brighter, and chi Eri B (G 9.7), 2.5 arcsec from the DR3 source of the G8 giant chi Eri, 6.2 mag brighter, its DR2 solution carrying an excess-noise significance of 163; none left (`gaia_dr2_vanished`) + +## Comets on Earth's years + +**Data.** JPL Small-Body Database: 1030 periodic comets with periods below 200 years, periods within 0.002 y of a whole number of years against the same window at half-years and against uniform fractional periods, each read for its condition code, arc and period uncertainty + +**Runs.** `sbdb_comet_years`: 1,030 comets, 6 per-target rows, 6 vetted + +**Result.** 6 at whole years against 4.1 expected and 4 at half-years (Poisson p 0.23); 2 are lost comets with rounded periods and no uncertainty, the other 4 within chance + +## Orbits tangent to Earth's + +**Data.** JPL Small-Body Database: 2645 asteroids and comets with perihelia and 128 with aphelia within 0.01 au of 1 au, those within 0.0005 au of 1.0000 au against the band's density and the windows at 0.995 and 1.005 au, each read for its condition code, arc and uncertainty + +**Runs.** `sbdb_tangent_earth`: 2,773 orbits, 115 per-target rows, 115 vetted + +**Result.** perihelia 111 against 132 expected (p 0.97, the control windows 276), aphelia 4 against 6.4 (p 0.88, the controls 14); no excess at Earth's distance + +## Planets on perfect circles + +**Data.** NASA Exoplanet Archive composite table: 1014 planets with periods beyond 30 d and a measured eccentricity (635 more fixed or limits), those whose upper eccentricity lies below 0.002 + +**Runs.** `exoplanet_perfect_circles`: 1,014 planets, 0 per-target rows + +**Result.** none; the lowest percentile of upper eccentricities sits at 0.018 + +## Asteroid spins on the clock + +**Data.** LCDB frequency-diameter table: 4172 secure rotation periods (U 3) quoted to three decimals between 2 and 48 h, those within 0.02 per cent of a whole number of hours against the half-hour windows and uniform fractions, the day's harmonics counted apart + +**Runs.** `lcdb_hour_spins`: 4,172 asteroids, 11 per-target rows, 11 vetted + +**Result.** 11 at whole hours against 12.8 expected and 12 at half-hours (Poisson p 0.73), 1 of them at a harmonic of the day + +## Planets on whole days + +**Data.** NASA Exoplanet Archive composite table: 1494 planets with periods of 1.5-400 d known to better than 0.00002 d, those within 0.00002 d of a whole number of days against the half-day windows and uniform fractions + +**Runs.** `exoplanet_whole_days`: 1,494 planets, 0 per-target rows + +**Result.** none, against 0.06 expected; none at half-days + +## Light at 12 um alone + +**Data.** Gaia Catalogue of Nearby Stars with its WISE photometry: 3510 stars within 100 pc at BP-RP 0.5-2.5 with W1 8-14 and W1, W3 and W4 measured to 0.05, 0.1 and 0.2 mag, W1-W3 more than five widths and five errors above the single-star locus at their colour with W1-W4 within two widths of its own, against the stars as far below; each read in AllWISE for flags and faint W3, in Gaia for a second source in the W3 beam and for a W4 excess at three errors + +**Runs.** `w3_only_excess`: 3,510 stars, 27 per-target rows, 9 vetted + +**Result.** 27 above against 2 below; 6 carry AllWISE flags, 3 have a W4 excess at three errors (dust), and 18 K and M dwarfs with W3 of 7.6-8.8 mag and a 12 um excess of 0.3-0.5 mag remain unexplained, their W4 excess of 0.1-0.5 mag at one to three errors too coarse to separate warm dust from a narrow emitter + +## Symmetric flares + +**Data.** Yang et al. (2023) TESS flare catalogue: 24232 of 60810 flares lasting 40 minutes or more, those whose rise from start to peak takes as long as the decay within 10 per cent of the duration, or longer, read by duration and by the star's flare count + +**Runs.** `tess_symmetric_flares`: 24,232 flares, 3652 per-target rows, 3652 vetted + +**Result.** 1034 symmetric and 4482 rising longer than decaying, a share that holds at every duration and on quiet and busy stars alike, so the catalogue's event boundaries set the shapes and no single flare's shape can be read from it + +## Pulsars ticking in whole hertz + +**Data.** ATNF pulsar catalogue: 2118 of 2527 pulsars with periods quoted to eight digits or more, spin frequencies within 0.00001 Hz of a whole hertz or periods within 0.00001 ms of a whole millisecond, against the half-integer windows and uniform fractions; periods rounded to fewer digits counted apart + +**Runs.** `psrcat_whole_hertz`: 2,118 pulsars, 54 per-target rows, 54 vetted + +**Result.** none against 0.085 expected, none at half-integers; 54 periods quoted to two to four digits land on the millisecond grid by rounding alone + +## Pulsars on the hydrogen line's decimals + +**Data.** ATNF pulsar catalogue: 2118 pulsars with periods quoted to eight digits or more, spin frequencies within one part in 100,000 of 1420.405751 Hz scaled by a power of ten, against the windows shifted by half a decade and uniform logarithmic fractions + +**Runs.** `psrcat_hydrogen_decimals`: 2,118 pulsars, 0 per-target rows + +**Result.** none against 0.018 expected, none at the half-decade shift + +## Stars that stepped a magnitude between Gaia releases + +**Data.** Gaia DR3 sources within 100 pc whose DR2 counterpart within 0.1 arcsec (gaiadr3.dr2_neighbourhood) carries a mean G differing by more than a magnitude, each read for its transit counts, variability flags, SIMBAD type, DR2 saturation above G 4 and the missing colour of a source in a bright neighbour's light + +**Runs.** `gaia_release_step`: 40 stars, 40 per-target rows, 39 vetted + +**Result.** 40: 13 are the brightest stars, whose DR2 photometry is saturated, 23 are companions of bright stars whose DR2 window took in the primary's light, 2 are variables and 1 a blend; HD 207964 C, a companion with a colour and RUWE 1.39, remains unexplained + +## Lurkers at Earth's Lagrange points + +**Data.** JPL Small-Body Database: 165 asteroids within 0.01 au of Earth's semi-major axis with e below 0.3 and i below 30 deg, placed by their mean longitude at epoch relative to Earth's; the count within 20 deg of L4 and of L5 against the ring's other longitudes, each read for its arc and condition code + +**Runs.** `sbdb_earth_lagrange`: 165 asteroids, 17 per-target rows, 17 vetted + +**Result.** 9 at L4 and 8 at L5 against 18.3 expected per point from a uniform ring, whose longitudes in fact crowd within 30 deg of Earth (123 of 165) because such orbits are found when near Earth; 11 of the 17 rest on arcs of days + +## Watchers of Jupiter's transits + +**Data.** Gaia Catalogue of Nearby Stars: 292 stars within 100 pc and 0.051 deg of Jupiter's orbital plane, the band from which Jupiter is seen to cross the Sun, carried to 2007.0 and matched to GALEX GUVcat AIS within 5 arcsec, against the share of the 22303 stars 1-5 deg from the plane and the band moved 2 arcmin in eight directions; matches read in SIMBAD + +**Runs.** `jupiter_transit_zone_galex`: 292 stars, 59 per-target rows, 59 vetted + +**Result.** 59 with an ultraviolet source against 57.6 from the share beside the zone (p 0.45), the moved bands holding 0-8; the zone's ultraviolet share is the sky's + +## Light at 2 um alone + +**Data.** Gaia Catalogue of Nearby Stars with its 2MASS and WISE photometry: 128161 stars within 100 pc at BP-RP 0.5-3.0 with J, Ks and W1 measured to 0.03, 0.03 and 0.05 mag, J-Ks more than five widths and five errors above the single-star locus at their colour with J-W1 within two widths of its own, against the stars as far below; each read in 2MASS for its quality, read and extended-source flags and in SIMBAD + +**Runs.** `ks_only_excess`: 128,161 stars, 3 per-target rows, 3 vetted + +**Result.** 3 above against 9 below; 2 carry 2MASS quality below AAA and the third, an M dwarf with J-Ks 0.36 mag above the locus and J-W1 on it, lies within the chance rate of the mirror + +## Planets in step with their star's spin + +**Data.** NASA Exoplanet Archive composite table: 178 planets whose host carries a rotation period and whose orbital period is 1.5-20.5 times it, those at a whole multiple within 0.5 per cent against the half-integer windows and uniform fractions, each read for the source of the rotation period + +**Runs.** `exoplanet_spin_steps`: 178 planets, 12 per-target rows, 12 vetted + +**Result.** 12 at whole multiples against 10.1 expected and 13 at half-integers (Poisson p 0.32) + +## Nearby light bluer than any star + +**Data.** Gaia Catalogue of Nearby Stars: sources within 100 pc with BP-RP below -0.65, bluer than the Rayleigh-Jeans tail of any photosphere gives in Gaia's bands, each read for its BP/RP flux excess, image-peak and RUWE flags, white-dwarf probability and SIMBAD type + +**Runs.** `gcns_bluer_than_stars`: 1 source, 1 per-target row, 1 vetted + +**Result.** 1, a G 17 source with a BP/RP flux excess of 26 over the single-star relation, a blend or a corrupted BP and no bluer star + +## Comets pushed toward the Sun + +**Data.** JPL Small-Body Database: 32 comets and 3 asteroids whose radial non-gravitational term A1 is negative, those negative at three sigma, each read for its arc and condition code, its transverse term A2 and the asymmetric outgassing parameter DT + +**Runs.** `sbdb_sunward_a1`: 35 bodies, 27 per-target rows, 7 vetted + +**Result.** 27 at three sigma: 1 on a short arc, 6 with a larger transverse term or a shifted outgassing law; 20 comets and the asteroid 4179 Toutatis keep a radial term toward the Sun of 2e-10 to 6e-7 au per day squared on arcs of 3-75 years, which the symmetric outgassing law returns for a nucleus venting mostly after perihelion, and they await refits with an asymmetric law + +## Galaxies warm without star formation + +**Data.** HECATE: 669 galaxies within 150 Mpc with GSWLC stellar masses and ultraviolet-optical star-formation rates and with WISE 22 um and IRAS far-infrared luminosities, the 38 quiescent ones (specific rate below 1e-11 per year) radiating more than a tenth of a solar luminosity per solar mass at 22 um within a factor of three of their far-infrared, against the quiescent population's own distribution; each read for HECATE's nuclear-activity flags and its inclination + +**Runs.** `hecate_warm_quiet`: 38 galaxies, 6 per-target rows, 6 vetted + +**Result.** 6, every one with an active nucleus; the quiescent galaxies' 22 um heat per mass runs 0.035 solar at the median and 0.55 at the 99th percentile + +## Stars that dimmed since Hipparcos + +**Data.** Hipparcos new reduction and Gaia DR3: 17285 Hipparcos stars within 100 pc with a Gaia best neighbour, G against Hp through the sample's running median of G - Hp in BP-RP, those fainter by 0.5 mag and those brighter by as much, each read for Hipparcos's scatter and variability, Gaia's variability flag and RUWE, SIMBAD's type, a pair's name or component letter and a Gaia neighbour within 10 arcsec + +**Runs.** `hipparcos_gaia_dimming`: 17,285 stars, 301 per-target rows, 301 vetted + +**Result.** 297 fainter against 4 brighter: 274 are pairs whose joint light Hipparcos measured and Gaia resolves, most by 0.75 mag, 23 are variables and 4 rest on Hipparcos records without a scatter; none unexplained + +## Asteroids on polar orbits + +**Data.** JPL Small-Body Database: 51 bound orbits of asteroids and comets within 3 deg of 90 deg inclination, those within 0.5 deg of polar against a flat inclination density and the bands either side, each read for its arc and condition code + +**Runs.** `sbdb_polar_orbits`: 51 orbits, 9 per-target rows, 9 vetted + +**Result.** 9 against 8.5 expected (Poisson p 0.48): 8 long-period and Halley-type comets and one trans-Neptunian object + +## Stars enriched evenly in every heavy element + +**Data.** GALAH DR4: 46868 stars with clean measurements of all eleven neutron-capture elements Sr, Y, Zr, Mo, Ru, Ba, La, Ce, Nd, Sm and Eu, those with every [X/Fe] above +0.4 dex and a spread below 0.1 dex across the eleven, against the stars depleted as evenly and the sample's own spread + +**Runs.** `galah_even_heavy`: 46,868 stars, 0 per-target rows + +**Result.** none of the 41 stars enriched above +0.4 dex carries a flat pattern, and none is depleted evenly; the sample's spread across the elements runs 0.12 dex at the median against errors of 0.09 + +## Transits longer than the star allows + +**Data.** NASA Exoplanet Archive composite table: 4328 transiting planets with a duration, period, semi-major axis and radii, those whose duration exceeds by a quarter the longest central transit a circular orbit allows at the catalogued geometry, each read for its duration error, the sources of its duration and stellar radius and its eccentricity + +**Runs.** `exoplanet_long_transits`: 4,328 planets, 188 per-target rows, 187 vetted + +**Result.** 188: 167 carry a stellar radius of the Kepler Input Catalogue era or a duration and a radius from different solutions, 8 have loose or missing duration errors, 7 are eccentric, 4 have eccentricities fixed without errors and WASP-132 b's duration stands off by itself; TOI-1295 b, at 1.38 times the maximum with e 0.02 in one solution, remains unexplained + +## Gamma rays peaked like a line + +**Data.** Fermi-LAT 4FGL (HEASARC): 2766 sources above 10 sigma with a log-parabola curvature, those with beta above 0.8 at a curvature significance above 4, a spectrum peaked within a factor of a few in energy, against the catalogue's curvatures (median 0.10, 99th percentile 0.64); each read for its class and analysis flags + +**Runs.** `fermi_peaked_spectra`: 2,766 sources, 3 per-target rows, 3 vetted + +**Result.** 3, all of known classes: the pulsars J1827-1446 and J1057-5851 and the globular cluster Terzan 1, whose cutoff spectra the log parabola bends to fit + +## Nearby stars flickering by the minute + +**Data.** Gaia DR3 short-timescale variables within 100 pc: 909 stars, those whose characteristic frequency exceeds 48 cycles a day (the catalogue reaches 72), each read for its white-dwarf locus, its SIMBAD type, its image and RUWE flags and its colour, since a red dwarf the pipeline picks up flares and its variogram timescale is the flares' rise + +**Runs.** `gaia_short_timescale_nearby`: 909 stars, 220 per-target rows, 210 vetted + +**Result.** 220: 35 white dwarfs and compact stars, 67 of other known types, 108 flaring red dwarfs; 10 remain, five G and K dwarfs and three A stars with 20-30 minute timescales and amplitudes of 0.01-0.09 mag + +## Infrared dimming next door + +**Data.** Gaia Catalogue of Nearby Stars within 20 pc with AllWISE W1 8-15: 1004 stars matched to AllWISE at 2010.5 and CatWISE2020 at 2015.0 within 3 arcsec, those whose profile W1 differs by more than 0.3 mag between the two means, against the stars that brightened as much; each read for Gaia's variability flag, RUWE and image flags, SIMBAD's type, the WISE flags, CatWISE's saturation brighter than 8.5 mag, the match separation and the proper motion, since a star moving a second a year is split between the epochs of CatWISE's coadds + +**Runs.** `allwise_catwise_w1_change`: 1,004 stars, 94 per-target rows, 88 vetted + +**Result.** 92 fainter in CatWISE against 2 brighter: 14 variables, 29 blends, 29 saturated or flagged, 16 matched to another source or split by their motion; 6 M6-L3 dwarfs moving 0.4-0.9 arcsec a year, fainter by 0.5-0.9 mag, remain unexplained and carry the fast movers' signature + +## Systems turned face-on to us + +**Data.** NASA Exoplanet Archive composite table: 302 non-transiting planets with a measured inclination, those within 5 deg of face-on from either pole against the 0.4 per cent of random orientations, each read for its inclination error and method + +**Runs.** `exoplanet_face_on`: 302 planets, 1 per-target row, 1 vetted + +**Result.** 1 against 1.15 expected (binomial p 0.68): HD 204313 e, an astrometric orbit at 4 deg from the pole + +## Masers at rest in the universe's frame + +**Data.** Pestalozzi et al. (2005) 6.7 GHz methanol masers: 519 peak velocities taken from the kinematic local standard of rest to the Sun and to the cosmic microwave background's frame, those within 2 km/s of rest there against the velocities' own density within 30 km/s of rest + +**Runs.** `methanol_masers_cmb_rest`: 519 masers, 8 per-target rows, 8 vetted + +**Result.** 8 against 7.7 expected (Poisson p 0.50) + +## Waste heat in HI-dark galaxies + +**Data.** Leisman et al. (2017) ALFALFA HI sources with low-surface-brightness counterparts: 115 positions matched to AllWISE within 10 arcsec, a source at 5 sigma in W3 or W4 against the positions moved 2 arcmin in eight directions scaled by the warm share of the matches, each read for an AGN colour and a Gaia star + +**Runs.** `alfalfa_hidark_waste_heat`: 115 galaxies, 1 per-target row, 1 vetted + +**Result.** 1 against 0.5 expected (p 0.37), AGC 188768 with an AGN's W1-W2 colour + +## Missing bolometric flux, dwarfs + +**Data.** JMMC Measured Stellar Diameters Catalogue: 62 dwarfs within 100 pc with a limb-darkened diameter, a Gaia parallax, a GSP-Phot temperature and a FLAME luminosity, the luminosity each surface and temperature give against Gaia's, a deficit of 20 per cent at 3 sigma against the mirror excess + +**Runs.** `jmdc_missing_flux_dwarfs`: 62 stars, 0 per-target rows + +**Result.** none short and none over; the ratio of Gaia's luminosity to the predicted runs 1.05 at the median with a scatter of 0.12 + +## Circles between the giant planets + +**Data.** JPL Small-Body Database: 169 bodies with semi-major axes of 5.5-30 au, perihelia beyond Jupiter and eccentricities below 0.3, those circular to 0.02 against the region's own eccentricities (median 0.19, 5th percentile 0.04), each read for its arc, condition code and a resonance with a planet + +**Runs.** `sbdb_giant_region_circles`: 169 bodies, 3 per-target rows, 3 vetted + +**Result.** 3 Centaurs with e of 0.009-0.010, each on an arc of 2-29 days with condition code 9, where the eccentricity is unmeasured + +## Cerium without carbon in dwarfs + +**Data.** APOGEE DR17 unevolved metal-rich dwarfs of the CNO sample with unflagged carbon and cerium (25), those with [Ce/Fe] above +0.5 dex and [C/Fe] at or below zero, each read for a Gaia binary, its Teff edge and its rotation + +**Runs.** `apogee_cerium_only`: 25 dwarfs, 1 per-target row, 1 vetted + +**Result.** 1 of 1 cerium-rich dwarf, 2M08332894+2247535 at [Ce/Fe] +0.77 and [C/Fe] -0.13, is a Gaia binary with RUWE 3.6 + +## Refuges at white dwarfs + +**Data.** NASA Exoplanet Archive composite table: the 6 planets at white dwarfs, each placed against the 1 au its host's giant phase reached, with its discovery method and the published account of its arrival + +**Runs.** `exoplanet_white_dwarf_refuges`: 6 planets, 6 per-target rows, 6 vetted + +**Result.** 3 sit inside the giant's reach: two 20-Jupiter-mass companions on 3- and 6-hour orbits drawn in through a common envelope, and WD 1856+534 b on a 1.4-day orbit, which its discovery paper brings in through its outer pair of stars; the other three orbit at 8-19000 au + +## Variables Gaia could not classify next door + +**Data.** Gaia DR3 vari_summary within 50 pc: 50 variables with a G range above 0.3 mag, the 23 the DR3 classifier left without a class, each read in SIMBAD, for its RUWE and image flags, for the white-dwarf locus and for the flare stars' colour + +**Runs.** `gaia_unclassified_variables_nearby`: 50 stars, 23 per-target rows, 23 vetted + +**Result.** 23 unclassified: 1 compact star, 7 of known types, 5 blends and 10 red dwarfs whose range is one flaring transit; none unexplained + +## Asteroids in the ecliptic to the hundredth of a degree + +**Data.** JPL Small-Body Database: 107677 bound orbits within 2 deg of the ecliptic, those within 0.02 deg against the band's own density at 0.02-0.2 deg and a density rising as the inclination, each read for its arc and condition code + +**Runs.** `sbdb_in_the_ecliptic`: 107,677 orbits, 12 per-target rows, 12 vetted + +**Result.** 12 against 10.8 expected (Poisson p 0.40): 11 main-belt asteroids on decade-long arcs and one near-Earth object on a one-day arc + +## White dwarfs varying outside the pulsation strips + +**Data.** Gaia DR3 vari_summary within 100 pc on the white-dwarf locus, matched to Gentile Fusillo et al. (2021): 132 catalogued white dwarfs flagged variable with a G range above 0.1 mag, those outside the pulsation strips with their margins (DA 10,000-13,500 K, DB 21,000-31,000 K, GW Vir above 70,000 K), each read in SIMBAD, including the magnetic types, for a companion's BP/RP flux excess and for RUWE + +**Runs.** `gaia_white_dwarfs_varying`: 132 white dwarfs, 132 per-target rows, 108 vetted + +**Result.** 103 sit in a strip or are cataclysmic, eclipsing, magnetic or otherwise known, 5 carry a companion's signature; 24 DA and DC white dwarfs of 3900-10000 K at G 16-19 with ranges of 0.1-0.4 mag over 20-60 transits remain unexplained, a residue for a period search in survey photometry + +## Binaries on perfect circles + +**Data.** Ninth Catalogue of Spectroscopic Binary Orbits: 1725 orbits with periods beyond 100 d and a measured eccentricity (fixed or errorless ones set aside), those with an upper eccentricity below 0.002, against the measured eccentricities themselves + +**Runs.** `sb9_perfect_circles`: 1,725 orbits, 0 per-target rows + +**Result.** none; the lowest percentile of upper eccentricities sits at 0.019 + +## Copy eclipsing binaries + +**Data.** Kepler eclipsing binary catalogue (Prsa et al. 2011): 1780 systems, pairs whose periods agree within the catalogue's quantum of 0.00001 d, against the periods' own density in a window ten times wider and the pairs within 2 arcmin; copies must also agree in temperature ratio and summed radii to 10 per cent + +**Runs.** `kepler_eb_copies`: 1,780 binaries, 24 per-target rows, 24 vetted + +**Result.** 24 pairs share a period to the catalogue's quantum, 1 of them one signal in two apertures and 23 apart on the sky against 14 expected (Poisson p 0.018); none of the 23 agrees in temperature ratio and radii, so none is a copy + +## Slow pulsars older than the universe + +**Data.** ATNF pulsar catalogue: 1803 pulsars slower than 0.1 s with a period derivative, those whose intrinsic derivative gives a characteristic age beyond 15 Gyr, each read for the derivative's error and its binary + +**Runs.** `psrcat_slow_ancient`: 1,803 pulsars, 0 per-target rows + +**Result.** none + +## Stars leaving the nearest clusters too fast + +**Data.** Hunt and Reffert (2023) open-cluster members with Gaia radial velocities: 1076 members of the 18 clusters within 200 pc whose twenty or more velocities cohere to a median of 3 km/s about the mean, each star's space velocity against its cluster's, those moving faster than 10 km/s, each read for RUWE and SIMBAD binarity, its membership probability and its colour, since Gaia's velocities of hot stars carry errors of tens of km/s + +**Runs.** `gaia_cluster_escapees`: 1,076 stars, 12 per-target rows, 10 vetted + +**Result.** 12: 1 binary, 8 of membership probability below 0.8 and as likely field stars, 1 hot B star; a member of Alessi 84 at 42 km/s with probability 0.82 and HD 74117 in IC 2391 at 10 km/s with probability 0.80 remain unexplained + +## Transits deeper than the planet + +**Data.** NASA Exoplanet Archive composite table: 4455 transiting planets with a depth and a radius ratio, those whose depth exceeds 1.5 times the ratio squared, each read for the depth's error and the sources of depth and ratio + +**Runs.** `exoplanet_deep_transits`: 4,455 planets, 82 per-target rows, 80 vetted + +**Result.** 82: 75 draw depth and ratio from different solutions, 5 carry loose or missing depth errors; TOI-5624 c, whose depth of 0.76 per cent stands ten times its ratio's in one solution, and TOI-4427 b at 1.6 times remain unexplained + +## Gamma rays with fast radio bursts + +**Data.** Fermi GBM burst catalogue against CHIME/FRB Catalog 1: 4398 gamma-ray bursts over 18.3 years and 536 radio bursts inside that span, pairs within 100 s whose positions overlap within the gamma-ray error circle plus a degree, against the pairs the two rates give by chance + +**Runs.** `fermi_chime_coincidences`: 536 bursts, 1 per-target row, 1 vetted + +**Result.** 1 pair within 100 s (0.8 expected), FRB 20190217A eleven seconds after GRB 190217188 but 91 deg from its 9 deg error circle; none overlapping in position against 0.004 expected + +## Spinning stars without coronae + +**Data.** Gaia DR3 stars within 20 pc with rotation periods below 5 days (vari_rotation_modulation) in the eROSITA-DE half of the sky, carried to 2020.0 and matched to the eRASS1 main catalogue within 15 arcsec; a fast rotator without X-rays, read for its brightness and in SIMBAD + +**Runs.** `erass1_rotators_without_xrays`: 11 stars, 0 per-target rows + +**Result.** all 11 rotators carry an eRASS1 source; none is without a corona + +## Neutrinos with gamma-ray bursts + +**Data.** IceCube ten-year point-source events above 10 TeV (372661) against the 2355 Fermi GBM bursts of the same span: a neutrino within 100 s of a burst and inside the two error circles plus a degree, against the pairs the event rate and the circles' sky fraction give by chance + +**Runs.** `icecube_fermi_coincidences`: 2,355 bursts, 3 per-target rows, 3 vetted + +**Result.** 543 neutrinos fall in the time windows against 542 expected, and 3 inside the circles against 3.1 (Poisson p 0.59), each 5-6 deg from a burst localised to 7-13 deg + +## Warm stars in the Hyades + +**Data.** Hunt and Reffert (2023) Hyades members above probability 0.5: 157 at BP-RP 0.5-2.5 with clean AllWISE W1 and W3, those with W1-W3 more than five widths and five errors above the cluster's own locus, their share against the field's 0.8 per cent from the same test within 100 pc; each read for AllWISE flags and in SIMBAD + +**Runs.** `hyades_warm_stars`: 157 stars, 1 per-target row, 1 vetted + +**Result.** 1 of 157 (0.6 per cent against the field's 0.8, binomial p 0.70): HZ 9, a white dwarf with an M-dwarf companion + +## Resonant pairs without timing variations + +**Data.** Holczer et al. (2016) Kepler transit timings and the DR25 KOI table: 46 pairs within 2 per cent of 2:1 or 3:2 among 2106 systems, 88 planets with timing measurements, each planet's timing scatter against the variation its neighbour's mass, estimated from the radius, demands (Lithwick et al. 2012), a quiet planet keeping time below a fifth of that with no detected variation + +**Runs.** `kepler_resonant_quiet`: 88 planets, 0 per-target rows + +**Result.** none of the 88 keeps time below a fifth of the expected variation + +## Light at 3.4 um alone + +**Data.** Gaia Catalogue of Nearby Stars with its 2MASS and WISE photometry: 60000 stars within 100 pc at BP-RP 0.5-2.5 with Ks, W1 and W2 measured to 0.03, 0.05 and 0.05 mag, Ks-W1 more than five widths and five errors above the single-star locus at their colour with Ks-W2 within two widths of its own, against the stars as far below; each read against AllWISE's plain profile W1, its flags, 2MASS's flags and SIMBAD + +**Runs.** `w1_only_excess`: 60,000 stars, 299 per-target rows, 299 vetted + +**Result.** 299 above against 9 below, and every one is the catalogue's proper-motion-fitted W1 mis-fitting a fast mover: the excess vanishes with AllWISE's plain W1, or the star has moved out of the match, or a flag marks it; none unexplained + +## Dark companions on perfect circles + +**Data.** Gaia DR3 astrometric two-body orbits within 200 pc with periods beyond 200 d and a measured eccentricity: 8874 orbits, those with an upper eccentricity below 0.005, against the solutions' own eccentricities + +**Runs.** `gaia_nss_perfect_circles`: 8,874 orbits, 0 per-target rows + +**Result.** none; the lowest percentile of upper eccentricities sits at 0.055 + +## Planets lapping their star's spin in whole steps + +**Data.** NASA Exoplanet Archive composite table: 441 planets whose host carries a rotation period 1.5-20.5 times their orbital period, those at a whole ratio within 0.5 per cent against the half-integer windows and uniform fractions, each read for the source of the rotation period + +**Runs.** `exoplanet_spin_laps`: 441 planets, 20 per-target rows, 20 vetted + +**Result.** 20 at whole ratios against 26.5 expected and 25 at half-integers (Poisson p 0.92) + +## Radio from cold brown dwarfs + +**Data.** Kirkpatrick et al. (2021) 20 pc census: 133 T and Y dwarfs carried to 2019.0 and matched to the VLASS epoch-1 components within 5 arcsec, against the positions moved 2 arcmin in eight directions + +**Runs.** `vlass_cold_dwarfs`: 133 dwarfs, 0 per-target rows + +**Result.** none, against a mean of 0.1 at the moved positions + +## Methane in a star's light + +**Data.** Gaia Catalogue of Nearby Stars: 7 objects at BP-RP 0.5-3.0 fainter than W1 8 with clean W1 and W2 and W1-W2 above +0.8, the colour of a T dwarf's methane band; AllWISE, Gaia DR3 and SIMBAD + +**Runs.** `gcns_methane_colour`: 7 stars, 7 per-target rows, 7 vetted + +**Result.** 2 saturated in WISE with the colour absent in AllWISE's plain magnitudes, 4 of known types (three T dwarfs and an emission-line star), 1 blended with a neighbour in the beam; none unexplained (`gcns_methane_colour`) + +## Neutrinos from Earth's transit zone + +**Data.** IceCube ten-year point-source events (HEASARC icecubepsc): 372661 above 10 TeV by ecliptic latitude, the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg, which share the zone's declinations + +**Runs.** `icecube_transit_zone`: 372,661 events, 10 per-target rows, 10 vetted + +**Result.** 1543 in the zone against 1542 +- 29 beside it (z +0.03); above 100 TeV 549 against 528 +- 24 (z +0.88, p 0.18); the zone's ten highest-energy events at the chance rate (`icecube_transit_zone`) + +## Gamma-ray bursts from Earth's transit zone + +**Data.** Swift GRB table (HEASARC swiftgrb): 872 bursts at arcminute positions; Fermi GBM bursts with an error radius below 1 deg: 910; the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg + +**Runs.** `grb_transit_zone`: 1,782 bursts, 7 per-target rows, 7 vetted + +**Result.** Swift 4 in the zone against 3.9 +- 1.9 beside it, GBM 3 against 3.7 +- 1.8; the seven at the chance rate (`grb_transit_zone`) + +## Pulsars in Earth's transit zone + +**Data.** ATNF pulsar catalogue (VizieR B/psr): 2530 pulsars with positions, the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg, which the Galactic plane crosses as it crosses the zone + +**Runs.** `atnf_transit_zone`: 2,530 pulsars, 8 per-target rows, 8 vetted + +**Result.** 8 in the zone against 13.3 +- 12.0 beside it, 2 millisecond pulsars against 3.9 +- 10.3; the eight at the chance rate (`atnf_transit_zone`) + +## Asteroids pushed harder than sunlight allows + +**Data.** JPL Small-Body Database: 611 asteroids with a transverse non-gravitational term, those at 3 sigma whose lower bound exceeds twice Bennu's term scaled to their diameter, the ceiling re-radiated sunlight sets + +**Runs.** `sbdb_pushed_asteroids`: 611 asteroids, 9 per-target rows, 9 vetted + +**Result.** 9: the eight published dark comets 2012 UR158, 2016 TA56, 2003 RM, 2005 UY6, 2001 ME1, 1998 SH2, 1998 FR11 and 2006 RH120, and the active asteroid 2008 GO98; none unexplained (`sbdb_pushed_asteroids`) + +## Emission lines in asteroid reflectance + +**Data.** Gaia DR3 sso_reflectance_spectrum: 60518 asteroids with sixteen-band reflectance spectra, 20569 carrying an unflagged interior band above 1.5; interior bands more than 0.3 and five combined errors above the mean of their neighbours + +**Runs.** `gaia_sso_reflectance_spikes`: 60,518 asteroids, 5 per-target rows, 5 vetted + +**Result.** 5 spikes, every one on a flagged band or beside one (19336, 8854, 6107, 17091, 150784); none unexplained (`gaia_sso_reflectance_spikes`) + +## Lines in transmission spectra + +**Data.** NASA Exoplanet Archive transmission-spectroscopy table (transitspec): 53 published spectra of five or more bins, 3618 bins; a bin four combined errors, four times the spectrum's bin-to-bin scatter and 2 per cent of the depth from the mean of its neighbours, in either sign + +**Runs.** `exoplanet_transmission_lines`: 53 spectra, 0 per-target rows + +**Result.** none; at three sigma KELT-9 b's H-beta line and four single bins of JWST series within 3.8 sigma (`exoplanet_transmission_lines`) + +## Open clusters orbiting backwards + +**Data.** Hunt and Reffert (2023) clusters (VizieR J/A+A/673/A114): 3170 with a parallax at 10 sigma and a radial velocity from three or more members to 10 km/s, Galactic rotation and vertical speeds from their mean motions + +**Runs.** `clusters_retrograde`: 3,170 clusters, 27 per-target rows, 27 vetted + +**Result.** 20 retrograde, every one a globular cluster; 7 with vertical speeds above 150 km/s, six globular clusters and Pismis 26, which is the globular cluster Tonantzintla 2; none unexplained (`clusters_retrograde`) + +## Pulsars faster than a kick can throw + +**Data.** ATNF pulsar catalogue (VizieR B/psr): 257 pulsars with a proper motion and a distance, transverse speeds at the proper motion's 3 sigma lower bound + +**Runs.** `atnf_kick_speeds`: 257 pulsars, 1 per-target row, 1 vetted + +**Result.** one above 2000 km/s, J2013+3845 at 2183 km/s on a 13 kpc dispersion-measure distance; none unexplained (`atnf_kick_speeds`) + +## Asteroids blacker than any surface + +**Data.** JPL Small-Body Database: 352 asteroids listed with a geometric albedo below 0.02, 15 of them with an AKARI albedo and error (J/PASJ/63/1117) + +**Runs.** `sbdb_blackest_asteroids`: 352 asteroids, 352 per-target rows, 352 vetted + +**Result.** none below 0.02 at AKARI's 3 sigma upper bound; the database values rest on a diameter and an absolute magnitude fitted together (`sbdb_blackest_asteroids`) + +## Two neutrinos from one spot + +**Data.** IceCube ten-year point-source events (HEASARC icecubepsc): 192107 above 100 TeV, pairs within one hour and within the sum of their errors plus half a degree, against the same events with their times shuffled twenty times + +**Runs.** `icecube_doublets`: 192,107 events, 380 per-target rows, 380 vetted + +**Result.** 382 doublets against 362 +- 18 shuffled (Poisson p 0.16); at the chance rate (`icecube_doublets`) + +## Hyperbolic excess beyond planetary perturbation + +**Data.** JPL Small-Body Database: 5 asteroids and 520 comets with eccentricity above 1, the speed at infinity from the eccentricity's 3 sigma lower bound and the perihelion distance, above the 3.9 km/s that C/1980 E1's Jupiter encounter gave it + +**Runs.** `sbdb_hyperbolic_excess`: 525 bodies, 3 per-target rows, 3 vetted + +**Result.** the three published interstellar objects alone, 3I/ATLAS at 58 km/s, 2I/Borisov at 32 and 1I/'Oumuamua at 26; of the eleven comets between 1.5 and 3.9 km/s, two carry recorded encounters (C/1980 E1 with Jupiter, C/2024 L5 with Saturn), the rest are fragments or rest on short arcs (`sbdb_hyperbolic_excess`) + +## Copy gamma-ray bursts + +**Data.** Fermi GBM burst catalogue (HEASARC fermigbrst): 3779 bursts with T90, T50, fluence and a Band peak energy; pairs more than 10 deg apart alike to 2 per cent in T90 and fluence and 5 per cent in T50 and peak energy, against the pairs found with T90 rescaled by six factors + +**Runs.** `gbm_copy_bursts`: 3,779 bursts, 3 per-target rows, 3 vetted + +**Result.** 3 pairs against 3.0 rescaled; at the chance rate (`gbm_copy_bursts`) + +## Gamma-ray bursts arriving together from different directions + +**Data.** Fermi GBM burst catalogue (HEASARC fermigbrst): 4398 bursts over 18.3 years, pairs triggered within 10 s from directions farther apart than their error radii and 5 deg + +**Runs.** `gbm_bursts_together`: 4,398 bursts, 0 per-target rows + +**Result.** none, against 0.34 for Poisson arrivals; no two bursts within 10 s at all (`gbm_bursts_together`) + +## Copy comets + +**Data.** JPL Small-Body Database: 4080 comets with orbital elements, pairs agreeing under the Southworth-Hawkins criterion to 0.05, read against shared parent designations, the sungrazing families inside 0.1 au, the published comet pairs and families, and the arcs + +**Runs.** `sbdb_copy_comets`: 4,080 comets, 158 per-target rows, 158 vetted + +**Result.** 62969 pairs: 2770 fragments of one comet, 60198 in the sungrazing families or the published pairs and families (Levy and Shoemaker-Holt, the Liller family, the 1844 great comet and C/2019 Y4, C/2002 A1 and A2, C/2002 Q2 and Q3, 169P and P/2003 T12, de Vico-Hind and Kohoutek, 332P and 412P), 1 resting on an arc under 30 d; none unexplained (`sbdb_copy_comets`) + +## Stars that jumped between 2MASS and Gaia + +**Data.** Gaia DR3 stars within 25 pc with a 2MASS counterpart: 4915, the Gaia position carried to the 2MASS night with the proper motion and that night's parallactic shift, against the 2MASS position + +**Runs.** `gaia_2mass_jumped`: 4,915 stars, 32 per-target rows, 32 vetted + +**Result.** offsets of 0.10 arcsec median and 0.90 at the 99th percentile; 32 above 1 arcsec, 29 saturated, poor or flagged in 2MASS or Gaia and 3 blended with a second Gaia source in the 2MASS beam; none unexplained (`gaia_2mass_jumped`) + +## Lurkers at Jupiter's far Lagrange point + +**Data.** JPL Small-Body Database: 16412 bodies within 0.35 au of Jupiter's semi-major axis with e below 0.3, their mean longitudes at the element epoch against Jupiter's, the count within 20 deg of the L3 point opposite the planet + +**Runs.** `sbdb_jupiter_l3`: 16,412 bodies, 4 per-target rows, 4 vetted + +**Result.** 4 at L3 against 9414 and 5374 in the L4 and L5 swarms: 2 on arcs of days, 2 Trojans librating widely (2015 OL106 at 162 deg and 2020 BZ43 at 199 deg); none unexplained (`sbdb_jupiter_l3`) + +## Waste heat at room temperature + +**Data.** Gaia Catalogue of Nearby Stars: 16037 stars at BP-RP 0.5-2.5 with clean Ks, W3 and W4, 175 with excess at both 12 and 22 um and 30 of them unflagged in AllWISE with a colour temperature from the excess flux ratio + +**Runs.** `gcns_room_temperature_excess`: 16,037 stars, 6 per-target rows, 6 vetted + +**Result.** 3 between 280 and 320 K against 1.5 in the bins beside (Poisson p 0.19); the excesses run from 100 to 320 K with none hotter; at the chance rate (`gcns_room_temperature_excess`) + +## Warm stars in Jupiter's transit zone + +**Data.** Gaia Catalogue of Nearby Stars with its WISE photometry: 175 stars with W1 and W3 or W4 within 0.051 deg of Jupiter's orbital plane, the band that sees Jupiter transit the Sun, against the 13736 stars 1-5 deg from the plane; SIMBAD + +**Runs.** `jupiter_zone_warm_stars`: 175 stars, 3 per-target rows, 3 vetted + +**Result.** 3 warm (HD 13997, HD 112250 and a G 14.9 star with W3 and W4 excess) against 2.36 expected from the band's share (p 0.42); with the ultraviolet count of the zone's stars this closes the Jupiter-zone programme (`jupiter_zone_warm_stars`) + +## Two pulsars at one spot + +**Data.** ATNF pulsar catalogue (VizieR B/psr): 2358 pulsars outside globular clusters and the Magellanic Clouds, pairs within 2 arcmin, against the pairs the mirrored declinations give + +**Runs.** `atnf_pulsars_one_spot`: 2,358 pulsars, 7 per-target rows, 7 vetted + +**Result.** 7 pairs against 7 mirrored: the double pulsar J0737-3039A and B bound to each other, the six others at different dispersion measures; none unexplained (`atnf_pulsars_one_spot`) + +## Glitches on a schedule + +**Data.** Jodrell Bank glitch table: 34 pulsars with five or more dated glitches, the scatter of their glitch intervals as a fraction of the mean against 4000 draws of exponential intervals + +**Runs.** `jbo_glitch_schedules`: 34 pulsars, 4 per-target rows, 4 vetted + +**Result.** 4 regular, J1420-6048 (scatter 0.20 of the mean, p below 2.5e-4), J2021+3651, J1023-5746 and J1709-4429 (0.27-0.29), every one a young pulsar of large Vela-like glitches, which recur at the crust's critical lag; none unexplained (`jbo_glitch_schedules`) + +## Warm stars in the nearest clusters + +**Data.** Hunt and Reffert (2023): the 58 clusters and moving groups within 250 pc with 100 or more members, each member at BP-RP 0.5-2.5 matched to AllWISE, the share with W1-W3 five widths above the cluster's own locus against the field's 0.77 per cent, judged over the 58 + +**Runs.** `clusters_warm_stars`: 3,399 stars, 23 per-target rows, 23 vetted + +**Result.** no cluster beyond chance over the 58; 23 warm stars, 13 flagged in AllWISE, 6 of known types; the highest shares in the clusters of 5-10 Myr (HSC 2986, OCSN 96, HSC 2907 at 5-6 per cent) and the Pleiades at 2.3 per cent; none unexplained (`clusters_warm_stars`) + +## Waste heat at the oldest Sun-like neighbours + +**Data.** GALAH DR4 (Data Central): 4248 dwarfs within 200 pc at 5300-6200 K with a clean fit, an isochrone age and clean AllWISE W1 and W3; the oldest tenth, 425 stars older than 12.4 Gyr, against the rest + +**Runs.** `galah_oldest_sunlike_warm`: 4,248 stars, 0 per-target rows + +**Result.** none of the oldest 425 warm against 11 of the 3823 younger (Fisher p 1) (`galah_oldest_sunlike_warm`) + +## Planets on polar orbits + +**Data.** NASA Exoplanet Archive planetary systems table: 166 planets with a projected obliquity measured to 15 deg, the measurement of smallest error for each, the count within 15 deg of 90 against a uniform projected obliquity + +**Runs.** `exoplanet_polar_orbits`: 166 planets, 16 per-target rows, 16 vetted + +**Result.** 16 against 27.7 (binomial p 0.996), with 95 within 15 deg of alignment and 5 of anti-alignment; the sixteen at the chance rate (`exoplanet_polar_orbits`) + +## Neighbours Gaia's classifier calls galaxies + +**Data.** Gaia DR3: 372226 sources within 100 pc at parallax over error above 10, those whose discrete source classifier gives a galaxy or quasar probability above 0.5; Gaia's image flags, BP/RP excess and RUWE; SIMBAD + +**Runs.** `gaia_dsc_galaxies_nearby`: 372,226 sources, 335 per-target rows, 335 vetted + +**Result.** 335: 249 blends by the BP/RP excess or image peaks, 14 without a colour, bluer than any star or saturated, 4 of poor astrometry, 68 of known types; none unexplained (`gaia_dsc_galaxies_nearby`) + +## Stars that changed velocity between GALAH and Gaia + +**Data.** GALAH DR4 (Data Central): 396280 stars with a clean fit and both GALAH's and Gaia DR3's radial velocities to 2 km/s, those apart by more than 30 km/s; GALAH's second components, Gaia's orbits, amplitudes, variability flags, RUWE and image peaks, the two surveys' temperatures, Gaia's transit counts and a third epoch from RAVE DR6 or LAMOST DR5 + +**Runs.** `galah_gaia_rv_jumps`: 396,280 stars, 48 per-target rows, 16 vetted + +**Result.** 48: 14 binaries, one of them by a third velocity from RAVE apart from GALAH's, one GALAH spectrum of a different star by its temperature, one Gaia velocity on two transits; 32 remain, single-lined binaries by their rate, which Gaia's variability statistics do not reach at their brightness and which RAVE and LAMOST have not observed (`galah_gaia_rv_jumps`) + +## Europium far above iron in dwarfs + +**Data.** GALAH DR4 (Data Central): 1337 dwarfs with a clean fit and a clean europium abundance to 0.2 dex at S/N above 40, those with [Eu/Fe] above 1.0 at the lower bound; metallicity, companions and the s-process elements as the natural routes + +**Runs.** `galah_europium_dwarfs`: 1,337 stars, 0 per-target rows + +**Result.** none (`galah_europium_dwarfs`) + +## Zirconium alone + +**Data.** GALAH DR4 (Data Central): 11597 dwarfs with a clean fit and clean zirconium, yttrium and barium to 0.15 dex at S/N above 40, those with [Zr/Fe] above 0.8 at the lower bound while [Y/Fe] and [Ba/Fe] stay below 0.3; companions by GALAH's second components and Gaia's flags, and the temperature range of trusted zirconium lines + +**Runs.** `galah_zirconium_alone`: 11,597 stars, 29 per-target rows, 29 vetted + +**Result.** 29: 6 with a companion, 23 cooler than 5000 K, where the weak zirconium lines blend with molecular bands; none unexplained (`galah_zirconium_alone`) + +## Lines in dayside spectra + +**Data.** NASA Exoplanet Archive emission-spectroscopy table (emissionspec): 25 published eclipse spectra of five or more bins, 2167 bins; a bin five combined errors, five times the spectrum's bin-to-bin scatter and a tenth of the depth from the mean of its neighbours, in either sign + +**Runs.** `exoplanet_dayside_lines`: 25 spectra, 2 per-target rows, 2 vetted + +**Result.** 3: two bins of WASP-33 b's WFC3 spectrum, whose host is a delta Scuti pulsator, and one at the red edge of a NIRISS spectrum of WASP-18 b; none unexplained (`exoplanet_dayside_lines`) + +## Bodies aimed at Earth + +**Data.** JPL Small-Body Database: 147 near-Earth asteroids on arcs of a year or more with a minimum orbit intersection distance below 0.001 au (1764 on shorter arcs set aside), the count below 0.0001 au against the uniform run of the next nine bins + +**Runs.** `sbdb_aimed_at_earth`: 147 asteroids, 19 per-target rows, 19 vetted + +**Result.** 19 against 14.2 (Poisson p 0.13); at the chance rate (`sbdb_aimed_at_earth`) + +## Bodies parked in the Kirkwood gaps + +**Data.** JPL Small-Body Database: numbered asteroids within 0.03 au of the 3:1, 5:2 and 2:1 resonances with e below 0.1 on arcs of twenty years or more, the count within 0.002 au of each resonance centre against the density 0.01-0.03 au either side + +**Runs.** `sbdb_kirkwood_parked`: 10,260 asteroids, 15 per-target rows, 15 vetted + +**Result.** the gaps are empty as they should be: 1 against 296 expected at the 3:1, 13 against 669 at the 5:2, 1 against 60 at the 2:1; the fifteen in the centres at the chance rate (`sbdb_kirkwood_parked`) + +## Masers in Earth's transit zone + +**Data.** Pestalozzi et al. (2005) 6.7 GHz methanol masers (VizieR J/A+A/432/737): 519 masers, the count within 0.262 deg of the ecliptic against the twenty strips of that width on either side out to 5.5 deg + +**Runs.** `methanol_masers_transit_zone`: 519 masers, 2 per-target rows, 2 vetted + +**Result.** 2 in the zone against 2.4 +- 2.6 beside it; at the chance rate (`methanol_masers_transit_zone`) + +## Circles beyond Neptune + +**Data.** JPL Small-Body Database: 4941 trans-Neptunian objects beyond 40 au with an eccentricity uncertainty, those whose eccentricity at its 3 sigma upper bound lies below 0.005, against the Rayleigh rise of the belt's eccentricities near zero + +**Runs.** `sbdb_tno_circles`: 4,941 objects, 4 per-target rows, 4 vetted + +**Result.** 4 (Praamzius, 2010 PK66, 2003 YN179 and 2010 NF146, all on arcs of twelve years or more) against 7.5 expected from the 746 below 0.05; at the chance rate (`sbdb_tno_circles`) + +## Gamma-ray sources that moved between catalogues + +**Data.** Fermi-LAT 3FGL (HEASARC fermi3fgl) and 4FGL-DR4 (fermilpsc): 1717 associations shared by both, the separation of the two positions against the sum in quadrature of the 95 per cent axes + +**Runs.** `fermi_3fgl_4fgl_moved`: 1,717 sources, 2 per-target rows, 2 vetted + +**Result.** 2 apart by more than twice the combined axes: the extended source W 41 and PSR J1112-6103 in the Galactic plane, where confusion moves a faint source's centroid; none unexplained (`fermi_3fgl_4fgl_moved`) + +## Bursts from the nearest galaxies + +**Data.** CHIME/FRB Catalog 1: 492 sources against the 46 large galaxies within 10 Mpc north of -11 deg, a burst inside a galaxy's optical radius plus the half-degree localisation, against the bursts' density within 10 deg of each galaxy + +**Runs.** `chime_nearest_galaxies`: 492 sources, 0 per-target rows + +**Result.** none against 1.76 expected (`chime_nearest_galaxies`) + +## Gamma-ray bursts from the nearest galaxies + +**Data.** Swift GRB table (HEASARC swiftgrb) and Fermi GBM bursts with errors below 1 deg: 1782 bursts against the 50 large galaxies within 10 Mpc, a burst inside a galaxy's radius plus its own error, against the bursts' density within 10 deg of each galaxy + +**Runs.** `grb_nearest_galaxies`: 1,782 bursts, 1 per-target row, 1 vetted + +**Result.** 1 against 1.86 expected: GRB 231115A in M82, the published magnetar giant flare; none unexplained (`grb_nearest_galaxies`) + +## Bodies at the Sun's focus + +**Data.** JPL Small-Body Database: 16 bodies with perihelia beyond 60 au, the count beyond 100 au, from where the Sun's lens brings other stars' light to a focus + +**Runs.** `sbdb_sun_focus`: 16 bodies, 0 per-target rows + +**Result.** none beyond 100 au; the farthest perihelia are 2012 VP113 at 80.6 au and Sedna at 76.2 (`sbdb_sun_focus`) + +## Stars that changed colour since Hipparcos + +**Data.** Hipparcos new reduction and Gaia DR3: 77746 stars with a B-V measured to 0.03 mag and a BP-RP, those five robust widths, five times the carried B-V error and 0.2 mag off the run of BP-RP with B-V; Hipparcos scatter, RUWE, Gaia's excess, SIMBAD's types and spectral classes + +**Runs.** `hipparcos_gaia_colour_change`: 77,746 stars, 1527 per-target rows, 1085 vetted + +**Result.** 1527 off the run: 386 saturated or with BP/RP excess, 538 variable, 135 binaries, 26 whose spectral class sides with Gaia against the Hipparcos B-V; 442 remain, stars whose Hipparcos B-V, compiled from ground photometry, is the only old colour and cannot be checked against a second (`hipparcos_gaia_colour_change`) + +## Eclipsing binaries on whole days + +**Data.** Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83): 1242 systems with periods between 0.5 and 50 d measured from space, those within 0.0002 d of a whole number of days against the periods' own density and the half-day windows + +**Runs.** `kepler_eb_whole_days`: 1,242 binaries, 0 per-target rows + +**Result.** none against 0.5 expected; 2 at half-days (`kepler_eb_whole_days`) + +## Retrograde co-orbitals of the giant planets + +**Data.** JPL Small-Body Database: bodies within 5 per cent of Jupiter's, Saturn's, Uranus's or Neptune's semi-major axis with inclination above 90 deg and eccentricity below 0.5 + +**Runs.** `sbdb_retrograde_coorbitals`: 3 bodies, 3 per-target rows, 3 vetted + +**Result.** 3, all at Jupiter: the published co-orbital (514107) Ka'epaoka'awela, 2007 VW266 published in the neighbouring 13/-14 resonance, and 2016 YB13, which fifty clones of its orbit hold in the resonance for thousands of years each way, a transient member; none unexplained (`sbdb_retrograde_coorbitals`) + +## Radio sources that switched off + +**Data.** NVSS (VizieR VIII/65): 37223 compact sources above 100 mJy north of -40 deg and more than 10 deg from the Galactic plane, those without a VLASS epoch-1 quick-look component (J/ApJS/255/30) within 20 arcsec; SIMBAD, the artefact zones of sources above 5 Jy, RACS-low of 2019-2020 and the component list's own holes + +**Runs.** `nvss_vlass_switchoffs`: 37,223 sources, 281 per-target rows, 257 vetted + +**Result.** 281 missing: 132 of known types, 12 beside sources above 5 Jy, 113 still shining in RACS-low or in holes of the component list; 24 remain, north of RACS-low's reach or unmatched in it, with VLASS components around them (`nvss_vlass_switchoffs`) + +## Bodies pushed out of their orbital planes + +**Data.** JPL Small-Body Database: 113 comets and 10 asteroids with normal and radial non-gravitational terms, those whose normal term at 3 sigma exceeds half the radial; the ratio's distribution has a median of 0.19 and a 90th percentile of 0.86 + +**Runs.** `sbdb_out_of_plane`: 123 bodies, 28 per-target rows, 26 vetted + +**Result.** 28: 21 comets, whose polar jets push across the plane, 5 on arcs under 1000 d; the two near-Earth asteroids 2016 GW221 and 2013 XY20, whose normal terms rest on 209 and 72 observations, remain unexplained (`sbdb_out_of_plane`) + +## Gamma rays harder than any shock + +**Data.** Fermi-LAT 4FGL-DR4 (HEASARC fermilpsc): 2766 sources above 10 sigma with a power-law index, those with an index below 1.3 at its upper error + +**Runs.** `fermi_hard_spectra`: 2,766 sources, 0 per-target rows + +**Result.** none (`fermi_hard_spectra`) + +## Stars whose distance changed since Hipparcos + +**Data.** Hipparcos new reduction and Gaia DR3: 98004 stars with both parallaxes, the differences in combined sigmas scaled by the sample's scatter of 1.24, those apart by 5 scaled sigma and 2 mas; the match's brightness, RUWE, Gaia's flags, Hipparcos's goodness of fit, SIMBAD and the Gaussian tail + +**Runs.** `hipparcos_gaia_parallax_change`: 98,004 stars, 43 per-target rows, 43 vetted + +**Result.** 43: 3 matched to a Gaia source two magnitudes too faint, 27 binaries, 12 saturated or with poor solutions, 1 within the Gaussian tail (p 0.055); none unexplained (`hipparcos_gaia_parallax_change`) + +## Lithium above the meteoritic + +**Data.** GALAH DR4 (Data Central): 124623 dwarfs with a clean fit and a clean lithium abundance to 0.15 dex at S/N above 40, those with A(Li) above 4.3 at the lower bound, a dex above the meteoritic and beyond what engulfing a giant planet adds; the stars between 3.6 and 4.3 counted as within engulfment's reach + +**Runs.** `galah_lithium_meteoritic`: 124,623 stars, 1 per-target row, 1 vetted + +**Result.** 1 above 4.3, a 6600 K star where the line blends; 11 between 3.6 and 4.3; none unexplained (`galah_lithium_meteoritic`) + +## Gamma-ray flares from the nearest stars + +**Data.** Fermi All-sky Variability Analysis second catalogue (HEASARC fermi2favs): 518 flaring sources with error radii, against the 2551 Gaia Catalogue of Nearby Stars objects within 20 pc, with the stars moved 2 deg in eight directions as the null + +**Runs.** `fava_nearest_stars`: 2,551 stars, 7 per-target rows, 7 vetted + +**Result.** 7 stars inside error circles against 9.4 moved (Poisson p 0.83), five of the circles carrying their own blazar or nova counterpart; at the chance rate (`fava_nearest_stars`) + +## Surfaces bluer than any asteroid class + +**Data.** Gaia DR3 sso_reflectance_spectrum: 60515 asteroids with six or more unflagged bands from 450 to 850 nm, the slope of each by least squares, those below -15 per cent per 100 nm at 3 sigma; the slopes' 0.1st percentile sits at -3.1 + +**Runs.** `gaia_sso_blue_surfaces`: 60,515 asteroids, 0 per-target rows + +**Result.** none (`gaia_sso_blue_surfaces`) + +## Stars whose infrared changed since 2MASS + +**Data.** Gaia Catalogue of Nearby Stars: 142514 stars brighter than G 15 with 2MASS Ks to 0.03 mag, the G-Ks of each against the run of G-Ks with BP-RP, those five widths and 0.3 mag off; Gaia's neighbours within the 2MASS beam, image peaks, variability flag and RUWE; SIMBAD + +**Runs.** `gcns_2mass_gaia_ir_change`: 142,514 stars, 4847 per-target rows, 4813 vetted + +**Result.** 4847 off the run: 4732 with a Gaia neighbour within 2 mag inside the 2MASS beam, 27 white dwarfs, 6 young stars, 3 subdwarfs, 19 variable, 26 binaries; 34 remain, mostly red dwarfs with Ks brighter than their Gaia colour gives by 0.3-0.7 mag and no resolved neighbour (`gcns_2mass_gaia_ir_change`) + +## Rotation periods on whole days in TESS + +**Data.** Fetherolf et al. (2023) TESS rotation periods (VizieR J/ApJS/266/22): 1416 stars with one period between 0.5 and 13 d measured to 0.005 d, those within 0.005 d of a whole number of days against the periods' density and the half-day windows + +**Runs.** `tess_rotation_whole_days`: 1,416 stars, 0 per-target rows + +**Result.** none against 14.2 expected, the catalogue holding no period at a whole day; 107 at half-days, a pile-up of the catalogue's own (`tess_rotation_whole_days`) + +## Carbon stars on the main sequence next door + +**Data.** Gaia DR3 gold sample of carbon stars joined to gaia_source: 99 within 1 kpc at parallax over error above 5, those whose absolute G places them on the main sequence, fainter than 4 + +**Runs.** `gaia_carbon_dwarfs`: 99 stars, 2 per-target rows, 2 vetted + +**Result.** 2, both with RUWE above 10, their parallaxes dragged by a companion; none unexplained (`gaia_carbon_dwarfs`) + +## Eclipsing twins to a part in a thousand + +**Data.** Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83): 1642 systems with a fitted temperature ratio, 307 within 0.05 of one, those within 0.001 against the ratios' density and the fits pegged at exactly 1.000 + +**Runs.** `kepler_eb_twins`: 1,642 binaries, 6 per-target rows, 6 vetted + +**Result.** 6 free of the boundary against 6.1 expected, none pegged; at the chance rate (`kepler_eb_twins`) + +## Stars WISE could not see + +**Data.** Gaia Catalogue of Nearby Stars: 156334 stars brighter than G 15, 11207 without a WISE counterpart in the catalogue's own match, each carried to 2010.5 and sought in AllWISE within 3 arcsec; WISE's saturation, Gaia's neighbours in the beam, the halos and glare of brighter stars out to ten arcminutes, image peaks, RUWE, SIMBAD, unWISE's deeper coadds and the Galactic plane + +**Runs.** `gcns_wise_missing`: 156,334 stars, 1658 per-target rows, 1658 vetted + +**Result.** 1658 unmatched: 384 saturated, 1003 blended with a Gaia neighbour in the beam, 164 in a brighter star's halo or glare, 15 of poor astrometry, 82 listed by unWISE and so dropped by AllWISE's own extraction, 10 in the plane's confusion; none unexplained (`gcns_wise_missing`) + +## Launch provenance of light bodies + +**Data.** JPL Small-Body Database: 22 asteroids and 279 comets with a radial non-gravitational term, those at 3 sigma whose term needs an area-to-mass ratio above 0.1 m^2/kg from sunlight alone; the database's bodies of our launching, the dark comets, comets' outgassing and the arcs + +**Runs.** `sbdb_light_bodies`: 301 bodies, 71 per-target rows, 71 vetted + +**Result.** 71: 70 comets, whose outgassing supplies the push, and 'Oumuamua at 1.2 m^2/kg, whose published outgassing models do the same; none of our launching carries a term in the database (`sbdb_light_bodies`) + +## VASCO transients and the geosynchronous belt + +**Data.** the Villarroel et al. (2020) POSS-I transient candidates (VizieR J/AJ/159/8): 127 positions spanning declinations -5.7 to 82.9 deg + +**Runs.** `vasco_geosynchronous_belt`: 127 positions, 0 per-target rows + +**Result.** in the band from -6.1 to -4.6 deg, where the geosynchronous belt stands seen from Palomar, 1 against 3.03 from the band's share of that sky (binomial p 0.95); nothing crowds the belt (`vasco_geosynchronous_belt`) + +## Our flags toward the solar apex + +**Data.** the coverage store: 180,822 Gaia DR3 stars, 32,003 of them vetted, within 30 deg of the solar apex (l 56.2, b +22.8 deg) and of the antapex + +**Runs.** `store_flags_apex`: 180,822 stars, 0 per-target rows + +**Result.** 2,671 vetted stars toward the apex against 1,875 from the whole store's share and 2,154 toward the antapex against 1,810, the whole of it the footprints of the runs that vet every target; with each run's own coverage setting its share, 2,723 run targets against 2,720 (p 0.31) and 2,185 against 2,181 (p 0.29) (`store_flags_apex`) + +## Warm dust in globular clusters + +**Data.** the Harris (2010) Galactic globular clusters with a half-light radius (VizieR VII/202): 141 clusters; the AllWISE sources with W1-W3 above 1 mag at W3 signal-to-noise 10 within the half-light radius against the annulus from three to five half-light radii + +**Runs.** `allwise_globular_warm_dust`: 141 clusters, 0 per-target rows + +**Result.** no cluster holds more warm sources inside its half-light radius than its surroundings give, beyond chance over the 141 (`allwise_globular_warm_dust`) + +## Single hot subdwarfs in the thin disc + +**Data.** the known hot subdwarfs of Culpan et al. (2022) (VizieR J/A+A/662/A40) with a Gaia parallax at 5 sigma, a proper motion and an SDSS or LAMOST radial velocity: 1,034 sdB, sdOB and sdO stars, 485 of them without a companion in their class, Gaia's RUWE, non-single-star flag or colour + +**Runs.** `hot_subdwarfs_single_thin_disc`: 1,034 stars, 129 per-target rows, 129 vetted + +**Result.** 129 singles within 50 km/s of the local standard of rest, a thin-disc share of 0.27 against the binaries' 0.25, so single hot subdwarfs sit on thin-disc orbits as often as the binaries do; every one an evolved star the disc's mergers supply (`hot_subdwarfs_single_thin_disc`) + +## Sky clustering of our residues + +**Data.** the coverage store: 180,822 Gaia DR3 stars in 158 runs, 32,003 of them vetted; vetted pairs within 1, 3 and 10 deg as a share of all pairs against 50 draws in which each run marks as many of its own targets at random + +**Runs.** `store_residue_clustering`: 180,822 stars, 0 per-target rows + +**Result.** 1.759 pairs per 10,000 within 1 deg against 1.752 +- 0.002, an excess of 0.4 per cent; 13.067 against 13.058 within 3 deg (p 0.16) and 111.606 against 111.671 within 10 deg (p 0.84); within each run the vetted pairs match the draws (55,957 against 55,843), so the small excess at 1 deg lies between runs and is not explained (`store_residue_clustering`) + +## Binary pulsars decaying at the wrong rate + +**Data.** the ATNF catalogue's field binary pulsars with a measured orbital decay and the companion's mass: 13, the total mass from the periastron advance or from sin i and the mass function; general relativity's decay, the Shklovskii term and the Galactic acceleration, with the masses and a 20 per cent distance error carried by Monte Carlo + +**Runs.** `atnf_orbital_decay_remainder`: 13 pulsars, 1 per-target row, 1 vetted + +**Result.** the double pulsar J0737-3039A matches relativity to 0.2 sigma; one remainder beyond 3 sigma, the redback J2339-0533 at 3.5 sigma, whose orbital period wanders with its companion's shape (`atnf_orbital_decay_remainder`) + +## The axis of the universe + +**Data.** SIMBAD's objects of unknown nature and its unclassified radio, X-ray and gamma-ray sources within 2 deg of the CMB dipole's apex and antapex, against 34 patches at each one's Galactic latitude + +**Runs.** `simbad_cmb_dipole_axis`: 2 directions, 0 per-target rows + +**Result.** apex 1 unknown, 102 radio, 18 X-ray and 2 gamma-ray sources against control medians of 1, 133, 35.5 and 0, the gamma-ray count matched or beaten by 12 per cent of the controls; antapex 0, 47, 28 and 0 against 0.5, 79, 31 and 0; nothing marks the axis (`simbad_cmb_dipole_axis`) + +## The Lagrange points of the Galactic bar + +**Data.** the bar's L4 and L5 at corotation (6.5 kpc, bar angle 27 deg), at l 27.5 and 312.1 deg; the 171 unassociated Fermi-LAT 4FGL-DR4 sources within 3 deg of the plane that are neither confused nor flagged as soft Galactic unassociated, counted within 2 deg against 27 windows along the inner plane + +**Runs.** `fermi_bar_lagrange_points`: 2 points, 1 per-target row, 1 vetted + +**Result.** L4 2 against the plane's mean 1.26 (p 0.36); L5 7 (p 0.0003), the densest window of the inner plane, on the Crux-Centaurus arm's tangent at l 310 deg and around the Kookaburra and Rabbit pulsar wind nebulae; the bar's parameters allow L5 anywhere in l 302 to 321 deg, so the point cannot be told from the tangent (`fermi_bar_lagrange_points`) + +## Two messengers at once + +**Data.** IceCat-1 (VizieR J/ApJS/269/25): the 65 IceCube alert tracks that arrived during TESS sectors 1-30, MJD 58325-59141; the Yang et al. (2023) TESS flares (VizieR J/A+A/669/A15): 480 flaring stars inside the tracks' 90 per cent regions with 1,722 flares + +**Runs.** `icecat_tess_flare_coincidence`: 65 alerts, 0 per-target rows + +**Result.** no flare within an hour of its neutrino against 0.125 from 1,999 shifts of the alert times by up to 100 days, and none within 100 pc against 0.062 (`icecat_tess_flare_coincidence`) + +## Dyson spheres built for our eyes + +**Data.** Gaia Catalogue of Nearby Stars: 8,688 Sun-like stars within 100 pc at BP-RP 0.65-1.0 with clean Ks, W3 and W4, 26 with excess at both 12 and 22 um and 6 of them unflagged with a colour temperature + +**Runs.** `gcns_room_temperature_sunlike`: 8,688 stars, 4 per-target rows, 4 vetted + +**Result.** 2 between 280 and 320 K against 1.0 in the bins beside (Poisson p 0.26), at 285 and 320 K; the excesses run from 100 to 320 K, at the chance rate (`gcns_room_temperature_sunlike`) + +## Cosmic-ray doublets, northern sky + +**Data.** Telescope Array's 72 events above 57 EeV of 2008-2013 (VizieR J/ApJ/790/L21) + +**Runs.** `ta_doublets`: 72 events, 0 per-target rows + +**Result.** no two events within 2 deg; within 4 deg 5 pairs, none within 10 days against 0.06 from 5,000 shuffles of the arrival times, and no triplet (`ta_doublets`) + +## Centrifugal habitats, survey periods + +**Data.** Lo et al. (2020) faint main-belt asteroids (VizieR J/AJ/159/25): the 122 with secure periods and diameters, 0.19-2.7 km, among them 22 super-fast rotators + +**Runs.** `lo2020_spin_strength`: 122 asteroids, 4 per-target rows, 4 vetted + +**Result.** no kilometre body under 10 minutes or needing 100 kPa; 4 bodies of 0.3 km or more spin past the 2.33 h gravity limit, needing 1.0-5.8 kPa, the fastest 510525 (1.75 km, 36.6 min), all within the strength of a coherent or cohesive body (`lo2020_spin_strength`) + +## Debris-disk voids + +**Data.** the Cotten and Song (2016) WISE excess stars (VizieR J/ApJS/225/15) matched to the 101,867 Gaia DR3 stars within 150 pc at G below 11 and BP-RP below 1.5, 860 of them excess stars; every 20 pc sphere about a parent star against its colour-binned excess rate + +**Runs.** `cotten_song_debris_voids`: 101,867 stars, 0 per-target rows + +**Result.** the deepest deficit, 0 excess stars against 3.9 about Gaia DR3 1613739235969713280 at 86 pc (Poisson 0.02), is matched or passed by 93 per cent of 200 shuffles of the labels within colour bins; at 15 pc the deepest is 2 against 3.0; no region of stripped belts (`cotten_song_debris_voids`) + +## Spectra no stellar model fits + +**Data.** GALAH DR4: 1,379 dwarfs within 100 pc at red-arm S/N above 100; the worst 0.5 per cent of the spectral fit's chi-square over the median of its 250 K temperature bin + +**Runs.** `galah_worst_fits_nearby`: 1,379 stars, 7 per-target rows, 7 vetted + +**Result.** 7 spectra at 5 to 42 times their bin's median, 6 of them binaries with a second velocity component or a Gaia RUWE above 1.4 and one star with H-alpha filled in; none unexplained (`galah_worst_fits_nearby`) + +## Gaia XP spectra the models fit worst + +**Data.** Gaia DR3: 118,030 stars within 100 pc with parallaxes at 10 sigma and a GSP-Phot fit; each log-posterior against its bin of 0.1 mag in BP-RP and 1 mag in G fitted with the same model library, the worst 0.1 per cent + +**Runs.** `gaia_xp_worst_fits_nearby`: 118,030 stars, 118 per-target rows, 99 vetted + +**Result.** 118 worst fits: 22 with a companion, 6 with emission lines, 2 blended and 69 at an extinction no star within 100 pc carries; 19 mid-M dwarfs fitted with MARCS remain, the far end of a tail of 149 beyond 5 widths among 34,969 such stars; PHOENIX fits of M dwarfs run far worse than MARCS fits and pile at [M/H] -0.8, so the bins are kept apart by library (`gaia_xp_worst_fits_nearby`) + +## Herded stars, GALAH and ages + +**Data.** GALAH DR4 dwarfs within 100 pc with isochrone ages, GALAH radial velocities and Gaia DR3 astrometry: 2,895 with 3D velocity errors under 0.5 km/s and one velocity component + +**Runs.** `galah_herded_ages`: 2,895 stars, 0 per-target rows + +**Result.** 482 pairs within 10 pc moving together within 1 km/s against 2.2 from velocity shuffles; of the 34 pairs both hotter than 5,600 K, where ages carry information, the age gaps run to a median of 1.6 Gyr and a largest of 4.9 Gyr, and none exceeds 5 Gyr (`galah_herded_ages`) + +## Fireballs from outside the Solar System + +**Data.** the CNEOS fireball database through the JPL fireball API: 360 fireballs with a location and a pre-entry velocity vector, taken from Earth-fixed axes to barycentric axes with Earth's gravity removed and Earth's velocity added + +**Runs.** `cneos_hyperbolic_fireballs`: 360 fireballs, 8 per-target rows, 5 vetted + +**Result.** 8 arrive faster than the Sun's escape speed at Earth's distance; redrawn with CNEOS's errors against ground-based networks (Peña-Asensio et al. 2025), the five before 2018 or at the threshold are bound in 2 to 48 per cent of the draws, among them IM1 (2014-01-08, 60.6 km/s heliocentric, bound in 2 per cent) and IM2 (2017-03-09, 21 per cent); three since 2018 are bound in none of 20,000, 2021-05-06 (43.7 km/s), 2022-07-28 (47.4 km/s, CNEOS-22) and 2026-04-01 (51.8 km/s), and are not explained (`cneos_hyperbolic_fireballs`) + +## The temperate rocky-planet hosts in every band + +**Data.** NASA Exoplanet Archive composite table: the hosts within 100 pc of planets below 1.8 Earth radii (or 10 Earth masses) at 0.2-2 times Earth's insolation, against the other planet hosts within 100 pc weighted to the same temperatures and distances; eRASS1, GALEX AIS, VLASS and RACS-low by CDS XMatch inside each footprint, the radius widened by each star's motion over the survey's span + +**Runs.** `exoplanet_hz_hosts_bands`: 1,082 hosts, 0 per-target rows + +**Result.** X-rays 6 of 11 against 4.7 (p 0.31); radio none of 24 in VLASS and none of 17 in RACS-low against 0.5 and 0.4; ultraviolet 5 of 29 against 11.7, a deficit (lower tail 0.007) from AIS fields that missed 13 of the 29 and from the quiet M dwarfs that radial-velocity searches choose; no band raises its detections at these hosts (`exoplanet_hz_hosts_bands`) + +## Retrograde co-orbitals of the inner planets + +**Data.** JPL Small-Body Database: asteroids and comets within 5 per cent of the semi-major axis of Mercury, Venus, Earth or Mars with inclinations above 90 deg and eccentricities below 0.5 + +**Runs.** `sbdb_retrograde_coorbitals_inner`: 0 bodies, 0 per-target rows + +**Result.** none at any of the four (`sbdb_retrograde_coorbitals_inner`) + +## Clusters missing their brightest stars + +**Data.** Hunt and Reffert (2023) open clusters at 100-1000 pc younger than 400 Myr with A_V below 1.5 and 300 or more members: 88 with 20 or more members at absolute G 4-6.5; their members at absolute G 0.5-2.5, late-B to F stars still on the main sequence, against the bright-to-faint ratio fitted in log age (0.32 at log age 7.5, 0.34 at 8.5) + +**Runs.** `hunt_reffert_missing_bright`: 88 clusters, 0 per-target rows + +**Result.** no cluster short of bright stars beyond the 88 trials; the deepest, NGC 2301 with 29 against 48.7 (p 0.0016, corrected 0.14), Roslund 5 and NGC 1039, lie at the chance level (`hunt_reffert_missing_bright`) + +## Hostless flat-spectrum radio sources + +**Data.** CRATES (VizieR J/ApJS/171/61): 4,396 point-like flat-spectrum sources with 8.4 GHz interferometric positions more than 30 deg from the Galactic plane and declination above -30 deg, against AllWISE, Pan-STARRS1, CatWISE2020, unWISE, SIMBAD, the Legacy Surveys DR10 and VLASS + +**Runs.** `crates_hostless_flat_spectrum`: 4,396 sources, 132 per-target rows, 110 vetted + +**Result.** 132 with no AllWISE, Pan-STARRS1, CatWISE2020 or unWISE counterpart: 27 classed as active galaxies by SIMBAD, 56 compact knots or hotspots more than 3 arcsec from their NVSS centroid, 11 with a Legacy DR10 galaxy or quasar at r 21-24.6, 15 at positions where VLASS sees nothing within 30 arcsec though it recovers 78 of 79 CRATES sources, and one beside HD 81417; 22 remain, each a VLASS source at its position with nothing in the Legacy Surveys within 2 arcsec, alike to the infrared-faint radio sources thought to be radio-loud nuclei at high redshift and not explained one by one (`crates_hostless_flat_spectrum`) + +## A model-free outlier search over the nearest stars + +**Data.** Gaia DR3: the 1,000 sources with the largest parallaxes at 10 sigma (beyond 67.7 mas); 2MASS and AllWISE through Gaia's best neighbours, GALEX AIS and eRASS1 by CDS XMatch at their epochs; each archive's colours or flux ratio against the 50 stars nearest in BP-RP, the ultracool dwarfs fainter than absolute G 15 against each other by G-RP + +**Runs.** `nearest_stars_multi_archive_outliers`: 1,000 stars, 3 per-target rows, 3 vetted + +**Result.** 196 stars odd in at least one archive by 5 robust widths and 3 in three or more, all astrometric binaries, two of them the components of one pair at 4.3 pc; none unexplained (`nearest_stars_multi_archive_outliers`) + +## Time clustering of our residues + +**Data.** the coverage store's unexplained candidate events with dates, a candidate being a row with a p-value below 0.01 or a cosmic-ray multiplet, since most dated rows record the epochs searched: 5 runs, 2,408 distinct days, from the Auger doublets and triplets of four data sets and the occultation limbs beyond their null + +**Runs.** `store_residue_time_clustering`: 5 runs, 0 per-target rows + +**Result.** 6 days on which candidates of different instruments fall within a day of each other, all between the Auger 750 m array and the occultation limbs, against 6.0 +- 2.0 when each run's days are shifted by up to a year (p 0.62) (`store_residue_time_clustering`) + +## Deliveries from stellar encounters + +**Data.** the three interstellar objects from the Small-Body Database, their incoming velocities at infinity (26.3, 32.3 and 57.9 km/s from the published radiants), against the Gaia DR3 stars within 100 pc with radial velocities, both carried back on straight lines for 10 Myr + +**Runs.** `interstellar_object_home_stars`: 3 objects, 1 per-target row, 1 vetted + +**Result.** stars that passed within 1 pc of an object's path at under 10 km/s: one for 'Oumuamua, Gaia DR3 6476662183875784064, 0.39 pc and 7.9 km/s 6.9 Myr ago, against 0.11 for the same speed in random directions (p 0.11); none for Borisov against 0.08 and none for 3I/ATLAS against 0.01; at the chance rate (`interstellar_object_home_stars`) + +## Fireballs seen twice + +**Data.** the CNEOS fireballs since 2017 July 23 inside the GOES lightning mappers' view, 79, against NASA's GLM bolide database (11,611 bolides), within 60 s and 300 km; the two-satellite sightings triangulated frame by frame into trails + +**Runs.** `cneos_glm_bolides`: 79 fireballs, 2 per-target rows + +**Result.** 68 of 79 matched; both fast fireballs in view were seen, 2026-04-01 by GOES-19 and 2022-07-28 by GOES-16 and GOES-17; the mappers' triangulated trail speeds run at 0.66-1.65 of the CNEOS speeds on 16 slower fireballs (median 1.14) and at 0.61 for 2022-07-28 (18.4 km/s), too scattered to test its 21 per cent excess (`cneos_glm_bolides`) + +## Radio spectra of the hostless flat-spectrum sources + +**Data.** the 22 compact CRATES sources the hostless test left without an infrared or optical counterpart, and 200 hosted CRATES point sources treated alike: TGSS, GLEAM, RACS-low, NVSS and VLASS by CDS XMatch, the CRATES fluxes and the VLBI bands of the Radio Fundamental Catalogue + +**Runs.** `crates_hostless_seds`: 22 sources, 22 per-target rows + +**Result.** 17 of 22 are VLBI-compact, the hosted sources' rate (0.77); their spectra are 8 peaked, 8 flat and 6 steep against the hosted sources' 43, 124 and 28 of 200, flat less often (Fisher p 0.019) and peaked more often (p 0.10); none varied by a factor 2 between NVSS and VLASS; compact young radio galaxies rather than beamed quasars, whose hosts lie below the Legacy Surveys' depth (`crates_hostless_seds`) + +## What sets the worst-fitted nearby M dwarfs apart + +**Data.** the 19 MARCS-fitted mid-M dwarfs among the Gaia XP worst fits with no companion, emission, blend or extinction behind them, against 3,000 stars of their colour and magnitude within 100 pc with ordinary fits + +**Runs.** `gaia_xp_misfit_traits`: 19 stars, 19 per-target rows + +**Result.** all 19 lie below the main sequence at fixed BP-RP and at fixed G-RP alike (1.5 robust widths against 0.0, p 5e-10; 0.36-1.0 mag, and 2.3 mag for one), with parallaxes three times as precise as their peers' (signal-to-noise 1,283 against 366, p 2e-10), at higher Galactic latitude (64 against 25 deg, p 2e-5), faster on the sky (45 against 31 km/s, p 0.08), redder in BP-G at fixed G-RP (p 0.012), with no excess radial-velocity scatter or GALEX detection (`gaia_xp_misfit_traits`) + +## What a pile of unassociated gamma-ray sources is + +**Data.** the 4FGL-DR4 sources associated with pulsars, blazars and remnants or nebulae (3,946) train a random forest on power-law index, curvature and its significance, peak energy and variability; the clean unassociated sources within 2 deg of l 312.07, b 0 against those elsewhere within 5 deg of the plane; eRASS1 by CDS XMatch + +**Runs.** `fermi_unassociated_pile_classes`: 5 sources, 5 per-target rows + +**Result.** 5 of the window's 7 classifiable: none pulsar-like against 25 per cent elsewhere, four uncurved and steady (variability indices 8-20) and the extended FGES J1409.1-6121 classed with remnants and nebulae; eRASS1 counterparts 1 of 7 against 4 of 135; extended emission around the Kookaburra and Rabbit nebulae rather than a pile of young pulsars (`fermi_unassociated_pile_classes`) + +## Fireballs the meteor cameras caught + +**Data.** the 360 CNEOS fireballs with velocity vectors against the Global Meteor Network's trajectory summaries for 2018-2026, a camera trajectory beginning within 10 s and 300 km of the fireball's peak + +**Runs.** `cneos_gmn_trajectories`: 360 fireballs, 0 per-target rows + +**Result.** none of the 360, the eight faster than the Sun's escape speed among them, has a camera trajectory; the network's cameras and the satellites' fireballs, mostly over the oceans, do not overlap (`cneos_gmn_trajectories`) + +## Hosts of the hostless radio sources in the near infrared + +**Data.** the 22 hostless compact CRATES sources against VHS DR5, VIKING DR2 and UKIDSS LAS DR9 within 2 arcsec, coverage from any source within 1 arcmin, and the K-z relation of radio galaxies (Willott et al. 2003) + +**Runs.** `crates_hostless_nir`: 22 sources, 22 per-target rows + +**Result.** none has a near-infrared counterpart; the 15 the surveys cover are fainter than K 18.1-18.2, which on the K-z relation puts their hosts beyond redshift 1.5, and 7 lie outside the surveys (`crates_hostless_nir`) + +## Spectral classes of the worst-fitted nearby M dwarfs + +**Data.** the 19 MARCS misfits of the trait test looked up in LAMOST DR5 and SDSS DR17 within 3 arcsec of their positions at those surveys' epochs + +**Runs.** `gaia_xp_misfit_spectra`: 19 stars, 19 per-target rows, 15 vetted + +**Result.** 4 have spectra, typed M2 and M3 by LAMOST's pipeline and M2V by SDSS's, neither of which carries a metallicity class; the subdwarf verdicts rest on the luminosity and J-Ks tests (`gaia_xp_misfit_spectra`) + +## Gamma-ray points inside TeV glows + +**Data.** the 7 clean unassociated 4FGL-DR4 sources within 2 deg of l 312.07, b 0 against the H.E.S.S. Galactic Plane Survey's components (VizieR J/A+A/612/A1), inside when within twice a component's Gaussian width, against the 106 clean unassociated sources elsewhere in the survey's footprint + +**Runs.** `fermi_unassociated_in_tev_glows`: 7 sources, 7 per-target rows + +**Result.** 1 of the 7, 4FGL J1417.7-6057, lies inside HESS J1418-609, against 17 of 106 elsewhere (Fisher p 0.71); the other 6 lie outside every TeV source, most 0.5-1.6 deg above the plane, so the TeV glows of the Kookaburra complex do not hold the pile (`fermi_unassociated_in_tev_glows`) + +## Subdwarf indices of the worst-fitted nearby M dwarfs + +**Data.** the 19 MARCS misfits' LAMOST DR5 and SDSS DR17 spectra, put in air at rest and measured in the CaH2, CaH3 and TiO5 bands, and the zeta of Lepine et al. (2013); APOGEE DR17 holds none of the 19 + +**Runs.** `gaia_xp_misfit_subdwarf_indices`: 4 stars, 4 per-target rows, 1 vetted + +**Result.** 4 measured: Gaia DR3 2470131113219840128, the one 2.3 mag below the main sequence, is a subdwarf (zeta 0.56); the other three, 0.5-0.8 mag below, are dwarfs of ordinary metallicity (zeta 1.01-1.12), so the faintness of most is not the subdwarfs' (`gaia_xp_misfit_subdwarf_indices`) + +## Gas under a pile of gamma-ray points + +**Data.** the 7 clean unassociated 4FGL-DR4 sources within 2 deg of l 312.07, b 0; the Schlegel, Finkbeiner and Davis dust column at each from the IRSA dust service against 26 points at the same latitude 3-15 deg along the plane + +**Runs.** `fermi_pile_dust`: 7 sources, 7 per-target rows + +**Result.** the sources' dust ranks a median 0.69 among their controls (p 0.038 against uniform ranks), the two in the plane at 0.92 and 0.88; they sit on more gas than their latitudes' share, as gamma rays from cosmic rays in unmodelled gas would (`fermi_pile_dust`) + +## Methane and carbon dioxide without carbon monoxide + +**Data.** the NASA Exoplanet Archive's JWST transmission spectra of the 13 planets below 3.5 Earth radii with equilibrium temperature below 450 K or insolation below three Earths' (K2-18 b, L 98-59 d, LHS 1140 b and c, LP 791-18 c, LTT 3780 c, TOI-270 d, TOI-776 c, TRAPPIST-1 b-f), one reference per planet and instrument and each visit once, fitted together with templates of ten gases from their cross-sections at the planet's temperature + +**Runs.** `jwst_temperate_disequilibrium`: 13 planets, 13 per-target rows, 4 vetted + +**Result.** TOI-270 d holds CH4 (6.7 sigma) and CO2 (3.7) without CO, the disequilibrium pair, which the published metal-rich mini-Neptune envelope makes without life; dimethyl sulfide's template fits K2-18 b at 3.4 sigma with its methane at 0.4, the band the template overlaps, where the median over the atlas's 44 spectra of the planet reads 0.5, L 98-59 d at 3.6 sigma, a world of volcanic sulfur gases, and TRAPPIST-1 e at 4.5 sigma, whose spectrum its star's spots dominate (`jwst_temperate_disequilibrium`) + +## Flux in discrete levels, Kepler + +**Data.** Kepler DR25 long-cadence PDCSAP light curves of 199,624 stars, every quarter, read in memory from the STScI mirror + +**Runs.** `kepler_levels`: 199,624 stars, 18465 per-target rows, 48 vetted + +**Result.** 132,275 steps within one cadence between 7.4-hour medians at 7 sigma, of which 2,767 are shared by three or more stars of the CCD channel and 6,438 by twenty or more stars of the focal plane; 18,465 stars keep steps of their own (8,108 up, 19,044 down) and 54 hold three or more levels each revisited in a quarter: 34 eclipsing binaries of the Kepler catalogue, 10 giants, whose oscillations and granulation step the window medians, the dwarf novae V447 Lyr and V1504 Cyg, the delta Scuti star TYC 3142-717-1 and the transits of Kepler-678 b; 6 dwarfs remain unexplained, Kepler-1645, TYC 3132-601-1, the A star TYC 3125-2793-1, KIC 7679979, KIC 11824498 and KIC 12783196, with steps of 0.1-9 per cent at irregular intervals (`kepler_levels`) + +## PSF-shaped flashes in pixel data + +**Data.** Kepler DR25 long-cadence target pixel files of the 3,611 KOI hosts with a candidate or confirmed planet, 48,779 quarters, their COSMIC_RAYS column + +**Runs.** `kepler_psf_flashes`: 3,611 stars, 860 per-target rows, 860 vetted + +**Result.** cadences where three or more optimal-aperture pixels were corrected together: 100,836 against 1,303 from the pixels' own rates, the cosmic rays' tracks; 2,135 shaped like the star's image (correlation 0.9 or more and 0.2 above the image shifted by one pixel) against 6,463 shaped like a shifted image, the most like of four shifts; the PSF-shaped events run at 3.7 times a quarter of the shifted-image rate on M dwarfs, 2.7 on K dwarfs, 1.1 on G dwarfs and 0.8 on F stars, the cool and young stars' flares, led by Kepler-1627, LSPM J1852+4740 and BY Draconis-type hosts; of the 860 stars with PSF-shaped events their channel does not share, 313 are flaring (cooler than 5300 K, three or more events, or light in the next cadence) and 547 carry one or two, the chance rate of cosmic rays shaped like the star's image, whose amplitudes the shifted-image class reaches as often (`kepler_psf_flashes`) + +## Atmospheres of the Rocky Worlds planets + +**Data.** the JWST MIRI 15 um eclipses the Rocky Worlds DDT has released on MAST: GJ 3929 b (four eclipses, the team's joint fit), TOI-771 b (three) and LHS 1140 b (one), with the stars' measured 15 um fluxes; TEPCat's radii, temperatures and separations and the Encyclopaedia of Exoplanetary Systems' distances + +**Runs.** `rocky_worlds_15um`: 3 planets, 3 per-target rows + +**Result.** each dayside brightness temperature against the hottest a bare dark rock can be: GJ 3929 b 0.99 (0.91-1.07), TOI-771 b 1.03 (0.94-1.14) and LHS 1140 b 1.07 (0.96-1.17), each a bare rock's dayside with no heat carried away; on its one eclipse the habitable-zone LHS 1140 b lies 2.5 sigma above the 0.8 a heat-carrying atmosphere would give; LTT 1445 A b and c and TOI-198 b are still to be released (`rocky_worlds_15um`) + +## Gases of every planet with a published spectrum + +**Data.** 1037 transmission and emission spectra of 153 planets from the NASA Exoplanet Archive (649), Zenodo (279), VizieR (80) and MAST's Exo.MAST (29), identical ones kept once; templates from Exo-Transmit's cross-sections at each planet's temperature, HITRAN's N2O lines and NIST's dimethyl sulfide spectrum; Earth's transit spectrum from ACE-FTS (Macdonald and Cowan 2019) as the control + +**Runs.** `spectra_atlas_gases`: 153 planets, 153 per-target rows, 5 vetted + +**Result.** Earth's own spectrum reads CO2 at 22 sigma, O3 17.5, H2O 11.8, CH4 3.9 and N2O 3.9 and raises the methane-and-CO2 and N2O flags, and it reads dimethyl sulfide at 3.0 sigma, which it does not hold, from methane's 3.3 um band; of the 153 planets five raise a flag and none is left unexplained: dimethyl sulfide in the hot giants HAT-P-18 b (4.3 sigma), HAT-P-30 b (3.2) and TOI-5205 b (5.0) and in the hydrogen-enveloped L 98-59 d (3.7), and CH4 (5.0) with CO2 (3.3) without CO in the hot Jupiter HD 209458 b; K2-18 b's 44 spectra put dimethyl sulfide at a median 0.5 sigma, none of the 35 that cover it at 3 sigma; an Earth twin laid on TRAPPIST-1 e's JWST spectra shows CO2 at 0.7 sigma and CH4 at 0.1 sigma in the median one, so that about 17 such spectra would show its CO2 and about 1000 its methane (`spectra_atlas_gases`) + +## Computation at the cosmic floor + +**Data.** the SPT-SZ multiband catalogue (Everett et al. 2020): 4845 sources at 95, 150 and 220 GHz over 2500 square degrees, each source's two spectral indices against the track of a 2.8-10 K body seen against the microwave background + +**Runs.** `spt_cold_computing`: 4,845 sources, 9 per-target rows, 9 vetted + +**Result.** 9 sources on the track, rising from 95 to 150 GHz and below dust's index from 150 to 220 GHz, against 9.5 from each source's natural spectrum drawn through its errors; seven have radio, infrared or X-ray counterparts or are extended, two of them stars on the survey's own list, and the two clean ones, SPT-S J050800-6450.8 and J232128-5833.3, are detected at 150 GHz alone; a 4 K body is recovered at 20 mJy three times in four, so no computing shell radiating 1e-4 of the Sun's output lies within about 100 pc in the field (`spt_cold_computing`) + +## Ghost spectra + +**Data.** rest-frame stacks of 313 stars from the ESO laser-line runs (HARPS 97, ESPRESSO 87, FEROS 80, UVES 49), 4100-5600 A, each with a twin correlating at 0.9: each star's lines taken out by its twins and what remains correlated with its own lines at every shift from 1,000 to 60,000 km/s either way + +**Runs.** `eso_ghost_spectra`: 313 stars, 9 per-target rows, 9 vetted + +**Result.** 9 stars carry a copy of their own lines at 7 widths or more, every one at a shift other stars' strongest peaks share (+44,552 km/s in three UVES stacks, +46,180 in four, +59,424 in two, +57,552 in six HARPS stacks), the meeting of strong lines with the ends of the blue arm and of the range rather than a body; zeta2 Reticuli's peak is one of the UVES three; a copy of 0.3 per cent depth scores a median 4.5 widths, so no reflector returning about half a per cent of its star's light moves through these systems at 1,000-60,000 km/s (`eso_ghost_spectra`) + +## Flare echoes + +**Data.** GJ 1243 (KIC 9726699) in Kepler's one-minute photometry, 841 flares at 10 noise widths in 11 quarters; Proxima Centauri, AU Mic, YZ CMi, EV Lac, AD Leo, GJ 1243, Wolf 359 and UV Ceti in TESS's twenty-second and two-minute photometry, 39-259 flares each; the 8 stars within 30 pc brighter than Tmag 15 whose twenty-second light curves hold 30 flares; each flare's five-minute impulse correlated with the light curve 3-180 minutes after it and before it for the null, every other peak at 5 widths masked + +**Runs.** `kepler_flare_echoes_9726699`: 841 flares, 1 per-target row, 1 vetted; `tess20_nearby_flare_echoes`: 403 flares, 8 per-target rows, 8 vetted; `tess_flare_echoes`: 955 flares, 8 per-target rows, 8 vetted + +**Result.** no echo: GJ 1243 in Kepler reads 2.8 widths after its flares against 7.3 before, Proxima 5.8 at 156 min against 6.8; EV Lac's excess 10 and 22 minutes after its flares, 7.3 widths with secondary peaks unmasked, falls to 2.9 once they are, the second bursts of complex flares; of the nearby stars EQ Peg A (BD+19 5116 A) reads 2.5 per cent of its flares at 155 min and 7.5 widths, which one flare left out cuts to 1.0 per cent and the sector's first half does not show, and BB Scl's 40-minute excess rests on one of its eclipse edges; an echo of 0.3 per cent laid 30 min after GJ 1243's flares returns at 5.2 widths, under the 7.4 the null reaches, so the limit is about half a per cent of GJ 1243's flares and 0.6 per cent of Proxima's from a reflector 0.2-11 au away (`kepler_flare_echoes_9726699`, `tess_flare_echoes`, `tess20_nearby_flare_echoes`) + +## Optical frequency combs + +**Data.** rest-frame stacks of 313 stars from the ESO laser-line runs (HARPS 97, ESPRESSO 87, FEROS 80, UVES 49), 4100-5600 A: each star's residual after its twins laid on a grid uniform in frequency and its Fourier power read at every line spacing from 20 GHz to 1 THz against its own running median + +**Runs.** `eso_optical_combs`: 313 stars, 4 per-target rows, 4 vetted + +**Result.** 4 stars reach 30 times their level, all at spacings other stars share (20.5 GHz in HARPS and ESPRESSO stacks, 97.8 GHz in HARPS), the spectrographs' own; a star's strongest peak has a median of 13.7 and a 99th percentile of 36, and a comb of 0.2 per cent depth at 50 GHz laid into the stacks reaches a median 53, passing 30 in 216 of the 313 (`eso_optical_combs`) + +## Minute tones at the nearest stars + +**Data.** the 1806 TESS twenty-second light curves of stars within 30 pc read by the discrete-level search, hour-long variations and flares removed, Fourier amplitude at every period of 1-60 minutes against its running median, the tone's centroid amplitude, VSX and SIMBAD + +**Runs.** `tess20_minute_tones`: 1,806 light curves, 28 per-target rows, 28 vetted + +**Result.** 28 tones at 6 times the local amplitude, none left: 8 at frequencies other stars share, the spacecraft's; 8 moving the centroid as a neighbour's would; 10 on stars that pulsate at minutes, among them the ZZ Ceti white dwarfs DN Dra (109 s), MY Aps (193 s), PY Vul (216 s) and WD J174349.28-390825.95 (399, 491 and 568 s, a ZZ Ceti of Guidry et al. 2021); the 54-minute tone of the M3.5 dwarf BPM 45048 is the third harmonic of its 2.69-hour spot signal (5.38-hour rotation, 12 per cent peak to peak), and HD 9770's 57-minute tone the twelfth harmonic of BB Scl's 0.4765-day eclipses (`tess20_minute_tones`) + +## Chirps at the nearest stars + +**Data.** the 1756 TESS twenty-second light curves of stars within 30 pc at Tmag 15 or brighter, cut into six-hour and hour-and-a-half windows, each frequency levelled over time, and summed along every straight track drifting 1-60 cycles a day per day at periods of 1-60 minutes, as radio searches de-Doppler a carrier + +**Runs.** `tess20_chirps`: 1,756 light curves, 35 per-target rows, 35 vetted + +**Result.** 35 tracks below p 1e-12, none left: 28 matched by the same light curve's windows shuffled; 4 carried by other stars of their sector along the same track; psi1 Dra B's sweep of +59 c/d per day at 1008 c/d lies in its centroid (log p -279 against -28 in its light), pointing jitter; HD 146946's at 208 c/d drifting -33 joins the family of 210-225 c/d tracks drifting -20 to -40 that other stars of sector 67 carry in their flux and not their centroid; chi Ceti's slow track at 56 c/d vanishes once the band starts at 32 c/d, the leakage of its gamma Doradus pulsations (622 ppm at 2.54 c/d); a chirp of 0.05 per cent at 300 c/d drifting 20 c/d per day is found on its track in 14 of 20 light curves (`tess20_chirps`) diff --git a/coverage.db b/coverage.db new file mode 100644 index 0000000000000000000000000000000000000000..b11ce2ee3d3dc1d0702a457d147ec8c05239dc5e --- /dev/null +++ b/coverage.db @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:361c028afd476a803177ef87c88db2f56ebd449a2a304b7577465d308347a303 +size 108175360 diff --git a/papers/activity_high_energy/activity_high_energy.pdf b/papers/activity_high_energy/activity_high_energy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..414b473106379cc0e8ebd11c0fda8015484b2d50 Binary files /dev/null and b/papers/activity_high_energy/activity_high_energy.pdf differ diff --git a/papers/activity_high_energy/activity_high_energy.tex b/papers/activity_high_energy/activity_high_energy.tex new file mode 100644 index 0000000000000000000000000000000000000000..5385ee2b897c2028f109a076ca1e731d9818113c --- /dev/null +++ b/papers/activity_high_energy/activity_high_energy.tex @@ -0,0 +1,479 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{Coronae, Pulses and Particles: Archival Tests for Artificial\\ Emission in Stellar Activity and High-Energy Surveys} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +A technology on or near a star could add X-rays a corona cannot make, radio emission a +quiet star should not have, a pulse train, a flare clock, or particles from a direction +no astrophysical source occupies. We put each of these to the archive that measures it. +Of $137{,}896$ eROSITA coronal counterparts, none exceeds a tenth of its star's +luminosity in X-rays, and the $250$ above a hundredth are evolved stars, catalogued +cataclysmic, young or extragalactic sources and M dwarfs whose flares reach that level; +no slow rotator stands far above the rotation-activity relation, and among $63{,}043$ +eROSITA point sources none holds its counts in a band where no continuum could put +them. No X-ray light curve of a star within $10$ to $20$\,pc holds a coherent period +beyond the noise. Radio emission from inactive stars, circular polarisation without a +counterpart and NVSS sources polarised beyond the synchrotron ceiling all trace to +background galaxies, active stars, pulsars or the diffuse emission of their fields, and +no GLEAM-X spectrum steps at a sub-band edge. No neutrino source sits at the $271$ +systems within $10$\,pc or moves with Jupiter, Saturn, Mars or Venus, and ultra-high-energy +cosmic rays arrive in pairs and triplets as often as chance allows. In photon timing, +flares and pulses, every cluster of ultraviolet photons on a nearby star is a flare, no +flaring star keeps a clock better than a part in a thousand, planet hosts flare as their +matched stars do, and the dispersed pulses of the nearest stars' radio cadences appear +as often off the stars. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Stars are bright in every band, and a technology among them is most easily hidden +in their light. The places where it would show are the places where a star's own +physics sets a limit: a corona saturates at about a thousandth of the star's +luminosity~\cite{Pizzolato2003,Wright2011}; a quiet star's radio emission is faint and +unpolarised; synchrotron radiation polarises at most $72$ per cent; flares come at +random times; and neutrinos and the highest-energy cosmic rays come from cosmic +accelerators, not from nearby stars. A transmitter, a power plant or a beam would cross +one of these limits. Proposals have taken this direction for neutrinos~\cite{Learned2009} +and for structures around pulsars~\cite{Osmanov2016}. This paper tests the limits +against the archives that measure them, with a null drawn from the same data for each. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item Tests of stellar X-ray emission against the coronal ceiling, the rotation-activity +relation, the band structure of a continuum and coherent periodicity. +\item Tests of radio emission from inactive stars, of circular and linear polarisation +against what stars and synchrotron radiation allow, and of spectral edges and long-period +transients. +\item Tests of TeV neutrinos at nearby systems and moving with the planets, and of +ultra-high-energy cosmic rays arriving in pairs. +\item Tests of photon timing, flares and pulses: ultraviolet photon clusters, flare +clocks, superflare rates of planet hosts, box-shaped flares, dispersed pulses and pulsars +as hosts. +\end{enumerate} + +% ============================================================================= +\section{X-rays}\label{sec:xray} +% ============================================================================= + +\emph{The coronal ceiling.} A corona saturates near \lxl$=10^{-3}$, and flares raise it +for hours; a source holding a tenth of a star's luminosity in X-rays is not a corona. +The eRASS1 catalogue~\cite{Merloni2024} matched to Gaia by the HamStar +method~\cite{Schneider2022,Freund2024} gives $137{,}896$ coronal counterparts with a +distance and a colour, whose \lxl\ has percentiles $50$, $90$, $99$ and $99.9$ at +$-3.42$, $-2.85$, $-2.30$ and $-1.90$ dex. Two hundred and fifty exceed $10^{-2}$ and none +exceeds $10^{-1}$. Of the $250$, $153$ sit off Gaia's main sequence, $38$ carry a +cataclysmic, young, emission-line or extragalactic type on the counterpart or on a SIMBAD +object within $20''$, and $59$ are main-sequence M dwarfs of $3000$ to $3550$\,K at $50$ +to $630$\,pc, whose flares reach $10^{-2}$ within eRASS1's day-long average. The one K +dwarf of the first pass, 1eRASS~J082623.3$-$703142 at $7.6\times10^{-2}$, is the +cataclysmic variable 1ES~0826$-$70.3, which SIMBAD files $11''$ from its Gaia counterpart. + +\emph{Coronae without a dynamo.} A slowly rotating star has a weak corona, so X-rays far +above the rotation-activity relation of a slow rotator would need another source. For +$8287$ coronal counterparts of $3000$ to $6000$\,K with rotation periods from +TESS~\cite{Fetherolf2023}, Gaia DR3 and ZTF~\cite{Chen2020}, the Rossby number from the +turnover time of the colour's temperature~\cite{CranmerSaar2011} places each against the +relation of Wright et al.~\cite{Wright2011}: the residuals scatter by $0.82$\,dex below a +Rossby number of one, with $0.24$ per cent beyond $1.5$\,dex. Only $26$ stars reach a +Rossby number of one, since the period catalogues hold few slow rotators, and the one +beyond $1.5$\,dex is a ZTF RS~CVn binary at $1$\,kpc. + +\emph{Line-only sources.} A continuum spreads its counts over the bands; an X-ray line +source at $0.5$ to $2$\,keV would hold them in one. Of the $63{,}043$ point sources of the +eRASS:3 catalogue with $80$ or more counts in four bands, the largest fraction in one +band has a median of $0.46$ and a $99$th percentile of $0.78$. Holding $85$ per cent in +one band at $3\sigma$ with every other below $5$ per cent are $13$ sources at +$0.2$--$0.5$\,keV, the supersoft class, $2$ at $2$--$5$\,keV, the absorbed class, and none +at $0.5$--$1$ or $1$--$2$\,keV, where no continuum could put them; the same test on the +released spectra is the step that remains. + +\emph{Periodicities.} A transmitter pulsing in X-rays at seconds to minutes would show a +coherent period. In $209$ Chandra detections of the $50$ SIMBAD objects within $10$\,pc, +none reaches a false-alarm probability of $10^{-3}$ once the dither, the frame +sidebands and the red noise of flares are filtered; in $180$ XMM-Newton EPIC-pn +observations of stars within $20$\,pc, periods of $5$ to $600$\,s reach $0.01$ in four +against $3.6$ expected and $10^{-3}$ in none against $0.4$. + +\emph{Nearby high-energy sources.} Of the $2626$ Gaia sources within $20$\,pc, carried to +eRASS1's epoch, the five above \lxl$=10^{-2.5}$ are M3 to M6 flare stars, and seven stars +lie inside the error ellipses of unassociated Fermi-LAT sources~\cite{Abdollahi2022} +against $7.9$ by chance. + +% ============================================================================= +\section{Radio}\label{sec:radio} +% ============================================================================= + +\emph{Inactive stars.} A quiet F to early K dwarf with no X-ray source and no activity +should be radio-silent. Against $605$ stellar radio emitters within $500$\,pc in +VLASS~\cite{Lacy2020}, $30$ inactive stars show $3$\,GHz emission, fewer than the $38$ +chance alignments the shifted positions give; LoTSS-DR2~\cite{Shimwell2022} holds two +inactive single F to early K dwarfs and RACS-low~\cite{Hale2021} three, as many as chance +gives. The two brightest coincidences are background radio galaxies: $52.6$\,mJy at +$0.34''$ from Gaia DR3 2906691964510880128 by a steady steep spectrum from $0.86$ to +$3$\,GHz that no star gives, and $81$\,mJy at $1.2''$ from Gaia DR3 1283261877869284096, +resolved by LoTSS with a second WISE source beside the star. + +\emph{Circular polarisation.} Coherent radio emission is circularly polarised, and in +stars it comes from activity. No RACS source of $10$ per cent circular polarisation at +signal-to-noise six lacks a counterpart among pulsars, active stars and published brown +dwarfs. Of the stars of V-LoTSS~\cite{Callingham2023} and the RACS +survey~\cite{Pritchard2021}, $23$ of the $31$ in eRASS1's half of the sky are detected in +X-rays at \lxl\ of $7.5\times10^{-5}$ to $3.6\times10^{-3}$, the rest are RS~CVn, BY~Dra +and flare stars by name and type, and none polarised above $30$ per cent has +\lxl\ below $10^{-5}$ and a period above $20$\,d. + +\emph{The synchrotron ceiling.} Synchrotron radiation in a uniform field polarises at +most $72$ per cent, and a source beyond it needs a coherent emitter. Of the $26{,}973$ +NVSS sources~\cite{Condon1998} above $10$\,mJy with polarised flux above $6$\,mJy, the +Rician-debiased fraction's $3\sigma$ lower bound has a median of $0.058$ and a $99$th +percentile of $0.51$; the $23$ above $0.72$ all have polarised fluxes at or above their +total fluxes, which no component can have, and lie in Fornax~A's lobes and on the Galactic +plane in Cygnus, Cassiopeia and Aquila, where the catalogue's polarised flux is the +field's diffuse emission. None sits at a pulsar. + +\emph{Spectral edges.} A transmitter's band begins and ends abruptly. GLEAM-X~\cite{HurleyWalker2022} +gives $27{,}585$ sources with sixteen or more of its twenty $7.68$\,MHz sub-bands from +$72$ to $231$\,MHz; a step at a sub-band boundary fitted beside a curved power law gains a +$\chi^2$ whose median is $0.2$ and whose $99.9$th percentile is $71$, the flux-scale errors +common to all sources. The one source in the top thousandth with a step above $30$ per +cent, GLEAM-X~J082817.6$-$221400, shares the low-frequency beam with a $1.18$\,Jy source +$69''$ away, and the sub-band fits merge and split the pair as the beam shrinks. + +\emph{Long-period transients and millimetre flares.} Of $16$ long-period radio +transients~\cite{Rea2026}, ten are given a natural nature by their papers, as white-dwarf +binaries, X-ray outbursts or rotators, and the other six hold no Gaia star at their +dispersion-measure distances beyond the rate at control positions. Of the $66$ stars of +the SPT-3G millimetre flares~\cite{Tandoi2024}, every one has an X-ray source except four +M5 to M8 emission-line dwarfs at $37$ to $49$\,pc, below eRASS1's limit. + +% ============================================================================= +\section{Particles}\label{sec:particles} +% ============================================================================= + +\emph{Neutrinos from nearby systems.} A power source or a beam of TeV neutrinos would +appear as a point source in IceCube's tracks. The unbinned point-source likelihood over +the ten-year sample~\cite{IceCube2021} at the $271$ systems within $10$\,pc finds none above +chance, and the stack of all has $p=0.26$; the median $90$ per cent limit on an $E^{-2}$ +source is $1.6\times10^{29}$\,erg\,s$^{-1}$. + +\emph{Neutrinos moving with the planets.} A source on a planet moves with it. The same +likelihood in each planet's frame, against $1000$ time scrambles that keep the events and +move the planet, gives test statistics of $0.9$ for Jupiter ($p=0.17$), $0.6$ for Saturn +($0.17$), $0.0$ for Mars ($0.42$) and $0.3$ for Venus ($0.23$), where the scrambles reach +$9$ to $13$; the $90$ per cent limits on $E^{-2}$ luminosity are $7\times10^{9}$\,W at +Venus, $10^{10}$\,W at Mars, $2\times10^{11}$\,W at Jupiter and $6\times10^{11}$\,W at +Saturn. + +\emph{Cosmic-ray doublets.} Particles launched together arrive close in direction and +time. Among the $2635$ events above $32$\,EeV of the Pierre Auger Observatory's Phase +One~\cite{Auger2022}, pairs within $2^\circ$ number eight within ten days against a mean of +$5.7$ with the arrival times permuted ($p=0.21$) and two within a day against $0.56$ +($p=0.11$), with no triplet within thirty days against $0.34$ expected; one pair's circle +holds Kapteyn's Star at $3.9$\,pc, its members $1.8$ and $2.1^\circ$ from it, beyond the +$0.9^\circ$ resolution. In the open data, the $2355$ inclined showers give seven pairs +against $5.1$ and the $22{,}751$ showers of the $1500$\,m array $569$ against $559$, with +$349$ triplets within thirty days against $361$. + +% ============================================================================= +\section{Photons in time}\label{sec:timing} +% ============================================================================= + +\emph{Ultraviolet photon clusters.} A pulsed ultraviolet source would gather photons in a +few milliseconds. Of $147$ GALEX near-ultraviolet eclipses of the $51$ stars within +$10$\,pc~\cite{Martin2005,Million2016}, nine hold a cluster at a false-alarm probability +below $0.01$ against $4.8$ from $1176$ control apertures; they are five events on Wolf~359, +Ross~128, Wolf~424, G~272$-$61 and GJ~725~A, all flare stars. GJ~725~A's is an isolated +$100$\,ms brightening of seven photons against $0.2$, clean of detector and field events and +fixed to the star in rebuilt detector coordinates; a census of $116$ eclipses finds $98$ +such bursts across the detector, at $1.4\times10^{-6}$ per source-second, the mapped ones at +the detector's edge, and none on a catalogued star like GJ~725~A's. The far-ultraviolet +lists of $26$ stars hold no cluster, nor do $720$ control apertures, and HST's +photon-event lists of $108$ stars hold two below $10^{-3}$ against $3.7$ expected. + +\emph{Flare clocks.} Flares come at random times, and a flare train at a fixed period +would be a clock. For $2304$ Kepler stars with ten or more catalogued +flares~\cite{YangLiu2019}, the H test~\cite{deJager2010} from $0.5$\,d to a third of the +span, against twenty draws of other stars' flare times in the same quarters, finds $22$ +of the forty highest beating every draw away from rotation: one burst in three cycles, +two at the spacecraft's quarter or downlink spacing and $19$ locked in phase with +scatters of $0.004$ to $0.017$ of the period, none below the $10^{-3}$ of a clock. The two +long clocks on fast rotators are beats of two spot periods: KIC~7838383's $49.91$\,d from +$1.0472$ and $1.0685$\,d, and KIC~7746984's flare clock at half the $268$\,d beat of +$0.7398$ and $0.7377$\,d. Of $1426$ TESS stars~\cite{Yang2023}, nine of the forty highest beat +every draw, eight of them bursts at the $240$\,d spacing of TESS's pointings, and the +ninth, TIC~457100137 at $1.213$\,d, scatters by $0.0087$ of the period. + +\emph{Superflares at planet hosts.} A civilization that dims or shields its star's +largest flares would leave its host short of superflares. Among $60{,}810$ TESS flares, +the $83$ flaring planet hosts have $28.3$ per cent of their flares above $10^{34}$\,erg +among those above $10^{33}$, against $35.0\pm6.0$ per cent for each host's ten nearest +non-hosts in temperature, radius, distance and sectors drawn $2000$ times ($p=0.14$), and +$48$ per cent of them carry a flare above $10^{34}$\,erg against $48\pm4$ per cent. + +\emph{Box-shaped brightenings.} A flare rises fast and decays slowly, and a switched +source rises and falls alike. Among the $1806$ TESS $20$\,s light curves of stars within +$30$\,pc, $256$ brightenings at $7\sigma$ are fitted better by a box than by a flare, +against $263$ dips of the same shape: the rate of instrumental steps. + +\emph{Dispersed pulses.} A pulse from a transmitter at a star is dispersed by the +interstellar medium in front of it and by nothing behind it. In Breakthrough Listen's +$349\,\mu$s products of $88$ scans of the nearest stars, broadband pulses at $7\sigma$ that +peak at a dispersion measure below $-1$, between $-1$ and $1$, and above $1$\,pc\,cm$^{-3}$ +number $25$, $36$ and $9$ in the scans on the stars against $39$, $34$ and $12$ off them, so +the pulses are interference; folds at the Crab, Vela, B1937+21 and J0437$-$4715 periods +as each star sees them give $26$ of $176$ below $p=0.05$, but the off-source scans of a +control cadence fold as low, the red noise of the series. + +\emph{Pulsars.} A structure around a pulsar would re-radiate its spin-down power in the +infrared. Of $1978$ pulsars with positions good to $1''$~\cite{Manchester2005}, $143$ +have an AllWISE counterpart~\cite{Wright2010} against $98.6$ by chance, none of them ring-like +against $0.12$ per shifted copy, at a sensitivity of about $2$\,mJy at $12\,\mu$m for a +$300$\,K ring re-radiating $10^{32}$\,erg\,s$^{-1}$ at $1$\,kpc. The $45{,}116$ stars near the +antipodes of the hundred brightest pulsars, where a beacon timed to a pulsar would be +aimed, hold no result at $p<0.01$ in the coverage store. + +\begin{table}[t] +\centering\small +\caption{The tests, their samples and results.} +\label{tab:tests} +\begin{tabular}{>{\raggedright\arraybackslash}p{0.22\textwidth} >{\raggedright\arraybackslash}p{0.3\textwidth} >{\raggedright\arraybackslash}p{0.4\textwidth}} +\toprule +Test & Sample & Result \\ +\midrule +Coronal ceiling & $137{,}896$ eRASS1 stars & none above $10^{-1}$; the $250$ above $10^{-2}$ explained \\ +Coronae without a dynamo & $8287$ stars with periods & one beyond $1.5$\,dex, an RS~CVn binary \\ +Line-only X-ray sources & $63{,}043$ eRASS:3 sources & none at $0.5$--$2$\,keV \\ +X-ray periodicities & $209$ Chandra, $180$ XMM detections & at the chance rate \\ +Radio from inactive stars & VLASS, LoTSS, RACS & at the chance-alignment rate \\ +Circular polarisation & RACS, V-LoTSS & active stars, pulsars, brown dwarfs \\ +Synchrotron ceiling & $26{,}973$ NVSS sources & field emission in all $23$ \\ +Spectral edges & $27{,}585$ GLEAM-X sources & one blend \\ +TeV neutrinos & $271$ systems; four planets & at background \\ +Cosmic-ray doublets & $2635$ events; open data & at the chance rate \\ +Ultraviolet photon clusters & $51$, $26$ and $108$ stars & flares \\ +Flare clocks & $2304$ Kepler, $1426$ TESS stars & beats, bursts and spacecraft periods \\ +Superflares at hosts & $83$ hosts & as the matched stars \\ +Dispersed pulses & $88$ scans & as often off the stars \\ +Pulsars & $1978$ pulsars; $45{,}116$ stars & at the chance rate \\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +Learned, Pakvasa and Zee~\cite{Learned2009} proposed neutrinos for interstellar +signalling, and Osmanov~\cite{Osmanov2016} proposed infrared searches for structures around +pulsars. The tests here rest on the surveys' own work: the eROSITA catalogues and their +stellar identifications~\cite{Merloni2024,Schneider2022,Freund2024}, the rotation-activity +relation~\cite{Pizzolato2003,Wright2011}, the radio surveys and their stellar +samples~\cite{Lacy2020,Shimwell2022,Hale2021,Callingham2023,Pritchard2021,Condon1998,HurleyWalker2022}, +the review of long-period transients~\cite{Rea2026}, the SPT-3G +flares~\cite{Tandoi2024}, IceCube's and the Pierre Auger Observatory's public +data~\cite{IceCube2021,Auger2022} and the flare catalogues of Kepler and +TESS~\cite{YangLiu2019,Yang2023}. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No test finds emission a star or its surroundings cannot make. The X-ray sources above the +coronal ceiling are evolved, cataclysmic, young or flaring; the slow rotators sit on the +rotation-activity relation; no source holds its X-rays in a band no continuum could; no +nearby star pulses in X-rays. Radio emission from quiet stars arrives at the chance rate of +background sources, polarised emission belongs to active stars, pulsars or the diffuse +field, and no low-frequency spectrum steps. Neutrinos show no source at the nearest systems +or the planets, and cosmic rays pair as chance allows. Ultraviolet photon clusters are +flares, flare trains are beats and bursts, planet hosts flare as their twins do, box-shaped +flares are steps, and dispersed pulses are interference. + +The reach of each test is its sample's. The X-ray tests cover eRASS1's half of the sky +at its depth and day-long average, so a source that flares beyond the ceiling for minutes +escapes it; the neutrino limits are $10^{22}$\,W at the nearest systems and $10^{10}$ to +$10^{12}$\,W at the planets; the polarisation and spectral tests reach the surveys' +flux limits; and the timing tests reach periods from milliseconds to the spans of the +photon lists and light curves. + +\section*{Acknowledgements} + +This work uses data from eROSITA, the soft X-ray instrument aboard SRG, through the eRASS1 +and eRASS:3 releases; Gaia DR3 (ESA, Gaia DPAC); Chandra and XMM-Newton through their +archives; Fermi-LAT's 4FGL-DR3; VLASS (NRAO), LoTSS (LOFAR), RACS (ASKAP, CSIRO), NVSS +and GLEAM-X (MWA) through CIRADA, CASDA and VizieR; SPT-3G; the IceCube ten-year +point-source sample; the Pierre Auger Observatory's Phase One and open data; GALEX +through MAST and gPhoton and HST's photon-event lists; the Kepler and TESS flare +catalogues; Breakthrough Listen's open data; the ATNF Pulsar Catalogue and AllWISE; and +SIMBAD and VizieR at CDS, Strasbourg. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Pizzolato2003} +N.~Pizzolato, A.~Maggio, G.~Micela, S.~Sciortino and P.~Ventura, The stellar +activity-rotation relationship revisited: dependence of saturated and non-saturated X-ray +emission regimes on stellar mass for late-type dwarfs, \emph{Astron. Astrophys.} +\textbf{397}, 147 (2003). + +\bibitem{Wright2011} +N.~J. Wright, J.~J. Drake, E.~E. Mamajek and G.~W. Henry, The stellar-activity-rotation +relationship and the evolution of stellar dynamos, \emph{Astrophys. J.} \textbf{743}, 48 +(2011). + +\bibitem{Learned2009} +J.~G. Learned, S.~Pakvasa and A.~Zee, Galactic neutrino communication, \emph{Phys. Lett. +B} \textbf{671}, 15 (2009). + +\bibitem{Osmanov2016} +Z.~Osmanov, On the search for artificial Dyson-like structures around pulsars, +\emph{Int. J. Astrobiol.} \textbf{15}, 127 (2016). + +\bibitem{Merloni2024} +A.~Merloni, G.~Lamer, T.~Liu, et al., The SRG/eROSITA all-sky survey: first X-ray +catalogues and data release of the western Galactic hemisphere, \emph{Astron. +Astrophys.} \textbf{682}, A34 (2024). + +\bibitem{Schneider2022} +P.~C. Schneider, S.~Freund, S.~Czesla, et al., The eROSITA Final Equatorial-Depth Survey +(eFEDS): the stellar counterparts of eROSITA sources identified by machine learning and +Bayesian algorithms, \emph{Astron. Astrophys.} \textbf{661}, A6 (2022). + +\bibitem{Freund2024} +S.~Freund, S.~Czesla, P.~Predehl, et al., The SRG/eROSITA all-sky survey: identifying the +coronal content with HamStar, \emph{Astron. Astrophys.} \textbf{684}, A121 (2024). + +\bibitem{Fetherolf2023} +T.~Fetherolf, J.~Pepper, E.~Simpson, et al., Variability catalog of stars observed during +the TESS prime mission, \emph{Astrophys. J. Suppl.} \textbf{268}, 4 (2023). + +\bibitem{Chen2020} +X.~Chen, S.~Wang, L.~Deng, R.~de~Grijs, M.~Yang and H.~Tian, The Zwicky Transient Facility +catalog of periodic variable stars, \emph{Astrophys. J. Suppl.} \textbf{249}, 18 (2020). + +\bibitem{CranmerSaar2011} +S.~R. Cranmer and S.~H. Saar, Testing a predictive theoretical model for the mass loss +rates of cool stars, \emph{Astrophys. J.} \textbf{741}, 54 (2011). + +\bibitem{Abdollahi2022} +S.~Abdollahi, F.~Acero, L.~Baldini, et al., Incremental Fermi Large Area Telescope fourth +source catalog, \emph{Astrophys. J. Suppl.} \textbf{260}, 53 (2022). + +\bibitem{Lacy2020} +M.~Lacy, S.~A. Baum, C.~J. Chandler, et al., The Karl G. Jansky Very Large Array Sky +Survey (VLASS): science case and survey design, \emph{Publ. Astron. Soc. Pac.} +\textbf{132}, 035001 (2020). + +\bibitem{Shimwell2022} +T.~W. Shimwell, M.~J. Hardcastle, C.~Tasse, et al., The LOFAR Two-metre Sky Survey. V. +Second data release, \emph{Astron. Astrophys.} \textbf{659}, A1 (2022). + +\bibitem{Hale2021} +C.~L. Hale, D.~McConnell, A.~J.~M. Thomson, et al., The Rapid ASKAP Continuum Survey +paper II: first Stokes I source catalogue data release, \emph{Publ. Astron. Soc. Aust.} +\textbf{38}, e058 (2021). + +\bibitem{Callingham2023} +J.~R. Callingham, T.~W. Shimwell, H.~K. Vedantham, et al., V-LoTSS: the circularly +polarised LOFAR Two-metre Sky Survey, \emph{Astron. Astrophys.} \textbf{670}, A124 (2023). + +\bibitem{Pritchard2021} +J.~Pritchard, T.~Murphy, A.~Zic, et al., A circular polarization survey for radio stars +with the Australian SKA Pathfinder, \emph{Mon. Not. R. Astron. Soc.} \textbf{502}, 5438 +(2021). + +\bibitem{Condon1998} +J.~J. Condon, W.~D. Cotton, E.~W. Greisen, et al., The NRAO VLA Sky Survey, \emph{Astron. +J.} \textbf{115}, 1693 (1998). + +\bibitem{HurleyWalker2022} +N.~Hurley-Walker, T.~J. Galvin, S.~W. Duchesne, et al., GaLactic and Extragalactic All-sky +Murchison Widefield Array survey eXtended (GLEAM-X) I: survey description and initial +data release, \emph{Publ. Astron. Soc. Aust.} \textbf{39}, e035 (2022). + +\bibitem{Rea2026} +N.~Rea, N.~Hurley-Walker, M.~Caleb, et al., Long period transients (LPTs): a comprehensive +review, arXiv:2601.10393 (2026). + +\bibitem{Tandoi2024} +C.~Tandoi, S.~Guns, A.~Foster, et al., Flaring stars in a non-targeted mm-wave survey with +SPT-3G, \emph{Astrophys. J.} \textbf{972}, 6 (2024). + +\bibitem{IceCube2021} +IceCube Collaboration, R.~Abbasi, M.~Ackermann, et al., IceCube data for neutrino +point-source searches years 2008--2018, arXiv:2101.09836 (2021). + +\bibitem{Auger2022} +Pierre Auger Collaboration, P.~Abreu, M.~Aglietta, et al., Arrival directions of cosmic +rays above 32 EeV from Phase One of the Pierre Auger Observatory, \emph{Astrophys. J.} +\textbf{935}, 170 (2022). + +\bibitem{Martin2005} +D.~C. Martin, J.~Fanson, D.~Schiminovich, et al., The Galaxy Evolution Explorer: a space +ultraviolet survey mission, \emph{Astrophys. J.} \textbf{619}, L1 (2005). + +\bibitem{Million2016} +C.~Million, S.~W. Fleming, B.~Shiao, et al., gPhoton: the GALEX photon data archive, +\emph{Astrophys. J.} \textbf{833}, 292 (2016). + +\bibitem{YangLiu2019} +H.~Yang and J.~Liu, The flare catalog and the flare activity in the Kepler mission, +\emph{Astrophys. J. Suppl.} \textbf{241}, 29 (2019). + +\bibitem{deJager2010} +O.~C. de Jager and I.~B\"usching, The H-test probability distribution revisited: improved +sensitivity, \emph{Astron. Astrophys.} \textbf{517}, L9 (2010). + +\bibitem{Yang2023} +Z.~Yang, L.~Zhang, et al., Properties of flare events based on light curves from the TESS +survey, \emph{Astron. Astrophys.} \textbf{669}, A15 (2023). + +\bibitem{Manchester2005} +R.~N. Manchester, G.~B. Hobbs, A.~Teoh and M.~Hobbs, The Australia Telescope National +Facility pulsar catalogue, \emph{Astron. J.} \textbf{129}, 1993 (2005). + +\bibitem{Wright2010} +E.~L. Wright, P.~R.~M. Eisenhardt, A.~K. Mainzer, et al., The Wide-field Infrared Survey +Explorer (WISE): mission description and initial on-orbit performance, \emph{Astron. J.} +\textbf{140}, 1868 (2010). + +\end{thebibliography} + +\end{document} diff --git a/papers/dark_comet/README.md b/papers/dark_comet/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e60eb1b0e52821f156ea1d4f1d33a52849751c5d --- /dev/null +++ b/papers/dark_comet/README.md @@ -0,0 +1,43 @@ +# (883607) 2016 TA56: a candidate dark comet on a Jupiter-family orbit + +`dark_comet.tex` and `dark_comet.pdf` are the paper; `cfht2007_cutouts.pdf` is its Figure 2. `make_numbers.py` prints every +number in the text and tables from the files in `data/`, the pgfplots code of Figures 1 and 3, Table S1 as +`data/table_S1_screen.csv`, and Figure 2 from the CFHT cutouts. + +## Data + +| File | Contents | +|------|----------| +| `data/sbdb_A2.json` | the JPL Small-Body Database query of 2026 October 16: `sbdb_query.api` with `sb-kind=a`, `sb-cdata={"AND":["A2\|DF"]}` (every asteroid whose orbit solution includes A2), `full-prec=true` and the fields of `yarkovsky_FIELDS` in `setitools/solar_system.py` | +| `data/yarkovsky_sign.json` | the screen: each term against the radiation limit and the DAMIT spin poles | +| `data/table_S1_screen.csv` | Table S1: all 611 asteroids of the screen | +| `data/2016_TA56/obs80.txt` | the MPC observations of 2016 TA56 used in the fits, as retrieved on 2026 October 16 | +| `data/2016_TA56/sbdb.json` | JPL orbit solution 23 with its covariance and physical parameters | +| `data/2016_TA56/neowise.json` | the NEOWISE single-exposure sources matched to the MPC's WISE positions, with Horizons geometry | +| `data/2016_TA56/neowise_detections.csv` | Table S2: the twenty NEOWISE detections, their W1 and W2 photometry, quality flags and use in the fit | +| `data/2016_TA56/thermal.json`, `thermal_variants.json` | the NEATM fits (Table 4) and the fit under other assumptions | +| `data/2016_TA56/refit.json` | the ASSIST orbit fits (Table 2, Figure 1) and each apparition against the gravity-only orbit of the others | +| `data/2016_TA56/robust.json` | night jackknife and bootstrap, clipping and weighting variants, and the 2030 prediction ellipses (Table 5) | +| `data/2016_TA56/blockcov.json` | A2 under the night-level covariance, and the error shared by the 2007 night that would remove it | +| `data/2016_TA56/precovery_20070914.json`, `frames_20070914.json` | the 2007 CFHT frames measured against Gaia DR3, and each against both orbits (Table 3) | +| `data/2016_TA56/field_20070914.json` | the known asteroids around the 2007 track from SkyBoT | +| `data/2016_TA56/locus_20070914.json` | the positions in each 2007 frame that orbits fitted to the later apparitions allow, A2 held at each value | +| `data/2016_TA56/census_20070914.json` | the moving sources found in the whole 2007 frames, the injected copies recovered, and the flux along the locus (Figure 3) | +| `data/2016_TA56/forecast.json`, `ephemeris_2030.csv` | the 2030 apparition: the A2 it would measure, and Table S3, daily positions of both orbits with their ellipses | + +## Commands + +Each result comes from `python -I seti.py solar_system `; the darkcomet modes take the designation, here +`"2016 TA56"`. + +| Result | Command | +|--------|---------| +| the screen | `yarkovsky fetch`, `yarkovsky analyse`, `yarkovsky record` | +| observations, NEOWISE matches, JPL solution | `darkcomet fetch` | +| NEATM fit, its variants and Table S2 | `darkcomet thermal`, `darkcomet variants` | +| orbit fits, robustness, covariance | `darkcomet refit`, `darkcomet robust`, `darkcomet blockcov` (ASSIST with the DE440 and sb441-n16 ephemeris files) | +| archival images of the track | `darkcomet images` (CADC SSOIS) | +| the 2007 frames | `darkcomet precovery --night 2007-09-14`, `darkcomet frames --night 2007-09-14`, `darkcomet field --night 2007-09-14` | +| the 2007 locus and census | `darkcomet locus --night 2007-09-14`, then `darkcomet census --night 2007-09-14` with the sixteen frames from the CADC archive in `cfht_20070914/full` | +| 2030 | `darkcomet forecast` | +| record in `coverage.db` | `darkcomet record` | diff --git a/papers/dark_comet/cfht2007_cutouts.pdf b/papers/dark_comet/cfht2007_cutouts.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4f152f9cb1c3cba8707fe6cd3eb615fee3a37067 --- /dev/null +++ b/papers/dark_comet/cfht2007_cutouts.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45963a47093ea0019d1e2f4409331a7c3fea242dbc45e3019ec36c66fb8861e0 +size 164118 diff --git a/papers/dark_comet/dark_comet.pdf b/papers/dark_comet/dark_comet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ea9b1c4a8d00c825a776fd527c9d6a03b32c61ef --- /dev/null +++ b/papers/dark_comet/dark_comet.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2074930fe0f1950e4897efafcb2db84bf3dcbc73ed0c6ceb292a08ba0909b410 +size 364708 diff --git a/papers/dark_comet/dark_comet.tex b/papers/dark_comet/dark_comet.tex new file mode 100644 index 0000000000000000000000000000000000000000..13d55ed183149b70a36cdb4f24da8c105815df2b --- /dev/null +++ b/papers/dark_comet/dark_comet.tex @@ -0,0 +1,957 @@ +% !TEX program = pdflatex +\documentclass[review,12pt,authoryear]{elsarticle} +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\usepackage{url} +\urlstyle{same} +\def\UrlBreaks{\do\-\do\_\do\/} +\def\UrlBigBreaks{} +\usepackage{adjustbox} +\usepackage{graphicx} +\usepackage{lineno} +\usepackage[hidelinks]{hyperref} +\emergencystretch=3em +% first-page footer: the page number alone +\makeatletter +\def\ps@pprintTitle{\let\@oddhead\@empty\let\@evenhead\@empty + \def\@oddfoot{\hfil\thepage\hfil}\let\@evenfoot\@oddfoot} +\makeatother + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +\begin{document} + +\begin{frontmatter} + +\title{(883607) 2016 TA56: A candidate dark comet on a Jupiter-family orbit} + +\author{Charles C. Norton} + +\begin{abstract} +Dark comets are near-Earth objects whose orbits require non-gravitational accelerations +of cometary magnitude although no coma is detected. We compare the $611$ transverse +non-gravitational terms that JPL has fitted to asteroid orbits with the largest +acceleration absorbed sunlight can produce and with DAMIT spin poles. All $14$ drifts with +known poles have the sign expected from the spin. Five accelerations exceed this +radiation limit at $500$\,kg\,m$^{-3}$ and albedo $0.5$: four belong to published dark +comets or an active asteroid, and the fifth to (883607) 2016 TA56, on a Jupiter-family +orbit ($T_J=2.69$) and not previously listed among dark comets. A fit of its $102$ +positions gives $A_2=(-3.45\pm0.37)\times10^{-12}$\,au\,d$^{-2}$, $9\sigma$ weighting each +night as one position and $13\sigma$ under a night-level covariance fitted to the +residuals, if a 2007 precovery is the same object; without that night, +$A_2=(-2.2\pm4.3)\times10^{-12}$\,au\,d$^{-2}$. The 2007 images support the +identification: among all positions that orbits fitted to the later apparitions allow, +the precovery source is the only one, nothing lies at the gravity-only position to +$3.9$\,mag below it, and no other moving source shares its motion. NEOWISE gives a +diameter of $1.4$ to $3.7$\,km and an albedo of $0.050$ to $0.007$, at which the +acceleration is $15$ to $39$ times the radiation limit at $1000$\,kg\,m$^{-3}$. A single +position in 2030 would measure $A_2$ to $\pm0.4\times10^{-12}$\,au\,d$^{-2}$ independently of +the precovery. The screen recovers, retrospectively, the weakly active comet (875163) +1998 SH2 (Farnocchia et al., 2026), whose acceleration relative to the radiation limit is +a twentieth of that of 2016 TA56. +\end{abstract} + +\begin{keyword} +Comets \sep Near-Earth objects \sep Asteroids \sep Celestial mechanics \sep Orbit determination +\end{keyword} + +\end{frontmatter} + +\linenumbers + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Astrometry can reveal departures from a purely gravitational orbit. The thermal +re-emission of absorbed sunlight, delayed by the body's rotation, produces the Yarkovsky +drift, which JPL's orbit solutions model as a transverse acceleration $A_2$ scaling as +$r^{-2}$ \citep{Farnocchia2013}, and outgassing from an active comet produces larger +accelerations \citep{Marsden1973}. Some near-Earth objects show accelerations too large for +radiation forces but no detectable coma. These dark comets \citep{Seligman2023} divide into +an inner population of small bodies on near-circular orbits and an outer population of +larger bodies on eccentric, Jupiter-family-like orbits \citep{Seligman2024}, and their +accelerations imply outgassing at rates too low for the associated dust to be detected; +\citet{Seligman2024} list fourteen such objects. \citet{Farnocchia2026} found +that the 1998--2025 astrometry of the near-Earth object (875163) 1998 SH2 shows +perturbations consistent with outgassing, detected a weak tail of low surface brightness +during its 2025 close approach that archival images had not revealed, and proposed that +non-gravitational perturbations over long astrometric arcs can identify further comets +among near-Earth objects classified as asteroids. + +We present such a search: a screen of every transverse term in the JPL Small-Body +Database for accelerations larger than absorbed sunlight can produce (the radiation +limit), and for drifts of the wrong sign for the body's known spin. Of the thirteen +published dark comets with a transverse term, the screen recovers the six whose terms +exceed the radiation limit, and it identifies one further object, 2016 TA56; under typical +assumptions for density and albedo it also flags 1998 SH2, recovering retrospectively a +weakly active comet from its non-gravitational acceleration alone. Such a search was +proposed by \citet{Farnocchia2026}; this work contributes the screen and +the candidate it identifies. + +Section~\ref{sec:method} describes the data and methods. Section~\ref{sec:results} presents +the screen, an independent orbit determination for 2016 TA56, the tests of its 2007 +precovery in the archival images, its size and albedo from NEOWISE, the minimum outgassing +rate, the 2030 apparition, an overview of the tests, and the same analysis of the two +further objects that the screen identifies, 1998 SH2 and 2006 VC. +Section~\ref{sec:related} relates the results to previous work, and +Section~\ref{sec:conclusion} summarises the conclusions. + +% ============================================================================= +\section{Data and methods}\label{sec:method} +% ============================================================================= + +\emph{The screen.} The Small-Body Database query API returns every asteroid with a +transverse term $A_2$ (au\,d$^{-2}$ at $1$\,au) and its uncertainty, with $H$, any +measured diameter and the orbital elements; we queried it on 2026 October 16 for every +asteroid whose orbit solution includes $A_2$, and the query and its raw result are +available in the repository given under Data availability. Each term is compared with an +upper bound on the transverse acceleration that sunlight can impart. A sphere of +diameter $D$ at $1$\,au intercepts the power $S\pi D^2/4$, with $S=1361$\,W\,m$^{-2}$. +Absorbed photons arrive from the Sun and exert a purely radial force, so a transverse force +can come only from light that leaves the body, reflected or re-emitted; its momentum flux +is at most the intercepted power divided by $c$, a value reached only if all of it leaves +in one direction along the orbit. Dividing by the mass $\rho\pi D^3/6$ of a body of +uniform bulk density $\rho$ gives +\begin{equation} +a_{\max}=\frac{S\pi D^2/4}{c\,\rho\pi D^3/6}=\frac{3}{2}\,\frac{S/c}{\rho D}, +\label{eq:amax} +\end{equation} +which we call the radiation limit, with $S/c=4.54\times10^{-6}$\,N\,m$^{-2}$. An +efficiency $\xi=|A_2|/a_{\max}$ greater than one therefore requires a force other than +radiation. The limit is a ceiling: thermal recoil re-emits most of the absorbed energy in +directions that cancel, and a ratio below one does not show that radiation can supply an +acceleration. We evaluate $\xi$ at the smallest diameter allowed by $H$ (albedo $0.5$, +unless a diameter has been measured) with $\rho=500$\,kg\,m$^{-3}$, and again at +$2000$\,kg\,m$^{-3}$ and albedo $0.14$. The diurnal component of thermal recoil drives a +prograde rotator outward and a retrograde rotator inward, while the seasonal component, +largest at $90^\circ$ obliquity, drives any rotator inward \citep{Vokrouhlicky2015}. A +retrograde rotator therefore cannot drift outward whatever its thermal properties, whereas +a prograde rotator near $90^\circ$ obliquity can drift inward. Each drift significant at +$3\sigma$ is compared with the obliquity of every pole solution in +DAMIT \citep{Durech2010}, with the orbit normal from the osculating inclination and node. + +\emph{Astrometry.} The Minor Planet Center lists $102$ optical positions of 2016 TA56, +from a precovery on 2007 September 14 to 2026 June 10, in six apparitions: $12$ +positions on one night in 2007, $79$ from its discovery by Pan-STARRS on 2016 October 10 +to 2017 June, and $2$, $4$, $3$ and $2$ in 2020 November, 2022 August, 2025 October and +2026 June. Twenty-three of them are NEOWISE positions from twenty exposures, each with the +spacecraft's geocentric position on the second line of the record. + +\emph{Orbit fits.} We integrate orbits with ASSIST \citep{Holman2023}, which is built on +REBOUND \citep{Rein2012} and its IAS15 integrator \citep{Rein2015}, using the DE440 +planetary ephemeris \citep{Park2021}, the sixteen most massive asteroids, the oblateness of +the Sun and the Earth, and general relativity. The transverse acceleration is +$A_2\,g(r)$ with $g(r)=r^{-2}$, as in JPL's solution. A ground site's position is computed +from its MPC parallax constants and transformed into the GCRS with +astropy \citep{Astropy2022}; a NEOWISE position uses the reported spacecraft position. Each +model position is corrected for light time but not for aberration, which affects the +reference stars of the reduction equally. The fit adjusts the barycentric state at TDB +$2457746.5$ (2016 December 24) and, where included, $A_2$, by Gauss--Newton iteration +with forward-difference partial derivatives. Each site is weighted by its rms residual +over its retained positions where it has five or more, with a floor of $0.15''$, and by +$0.5''$ otherwise; a position whose two-coordinate $\chi^2$ exceeds $8$ is excluded at +each iteration and readmitted if it falls below that value. Positions from the same night +share the reference catalogue, the observer's clock and the seeing, so their errors are +correlated, and we therefore repeat each fit under two further weightings: that of +\citet{Veres2017}, used in JPL's solutions, which inflates the +uncertainties of more than four positions from one station on one night by $\sqrt{N/4}$, +and one that inflates every position of a night by $\sqrt{N}$ across all stations, so +that each night carries the weight of a single position. We fit gravity only, $A_2$, the +radial term $A_1$ together with $A_2$, and $A_2$ with each apparition omitted in turn, and +compare each apparition with the gravity-only orbit fitted to the others, decomposing its +residuals along and across the apparent motion. We also estimate the correlation within a +night from the residuals, with a covariance in which each position's site variance is +scaled by $s^2$ and any two positions of one night share a variance $\tau^2$ in each +coordinate, $s$ and $\tau$ set by restricted maximum likelihood. For the precovery night, +the positions that the other apparitions allow are those of the orbit fitted without that +night with $A_2$ held at each value from $-16$ to $+12\times10^{-12}$\,au\,d$^{-2}$, the +state at its conditional mean given $A_2$ under that fit's covariance; with $A_1$ also free, +the covariance of the predicted position shows how far a radial term can move it. + +\emph{Precovery images.} We remeasured all sixteen CFHT MegaCam exposures of the +precovery night (300 and 420\,s), independently of the published reports. Each CCD is registered to Gaia DR3 stars +with proper motions propagated to 2007, by a quadratic map from detector pixels to the +pixels of the archive's world coordinate system. Cosmic rays are replaced by the median of +their neighbourhood, and sources are found in each CCD with a Gaussian filter for point +sources and with a filter trailed by the object's motion during the exposure. A source above +$5\sigma$ is classed as static when three other frames contain a source above $3\sigma$ +within $1.2''$ of it; the remaining sources are linked into straight tracks that require +detections in six or more frames within $0.6''$ of the track, an rms residual of at most +$0.3''$, and a source within $0.6''$ of the track in at least 60 per cent of the frames +whose CCDs cover it. Repeating the linking with the frame times permuted, which destroys +real tracks, gives the rate of spurious tracks, and synthetic copies of the object, +trailed and scaled to its flux in each band, injected along $300$ random tracks +within $10''$ per hour and $20^\circ$ of its motion and from $0.5$\,mag brighter to +$2$\,mag fainter, give the completeness. To test each position at which an orbit could place the object, we sample the +trailed filter's S/N there in every frame, divide it by the median S/N of the detection in +that band, and take the median over the frames: the result is the flux, in units of the +detection's, of any source moving with the object through that position, and a static +source that crosses one or two frames does not change it. A frame's measurement is left +out within $4''+3''(18-G)$ of a Gaia star brighter than $G=18$, within $2.5''$ of a static +source above S/N $20$, and within $10''$ of the edge of its CCD, and a position requires +measurements in at least eight frames. + +\emph{Thermal fit.} For each NEOWISE position the single-exposure source table gives the +W1 ($3.4\,\mu$m) and W2 ($4.6\,\mu$m) profile-fit magnitudes \citep{Wright2010,Mainzer2014}, +and Horizons gives the distances from the Sun and from WISE and the phase angle. We fit +the fluxes for the diameter $D$ and the beaming parameter $\eta$ with the near-Earth +asteroid thermal model \citep{Harris1998}, with emissivity $0.9$ and no night-side +emission, plus reflected sunlight from the $H$--$G$ phase law \citep{Bowell1989} +($G=0.15$), a $5778$\,K solar spectrum and an infrared albedo $1.6$ times the +visible \citep{Mainzer2011}; the visible albedo follows from $H$. Each flux carries its +photometric uncertainty plus a $10$ per cent floor for the colour corrections and the +calibration. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +\subsection{The screen} + +Of the $611$ asteroids with a transverse term in the database on 2026 October 16, $567$ +have it at $3\sigma$ or more, and $14$ of these have DAMIT pole solutions; Table~S1 of +the supplementary material lists all $611$ with their terms, diameters, efficiencies, +pole solutions and spin-sign checks. All $14$ drifts have the sign expected from the +spin: no retrograde rotator drifts outward and no prograde rotator inward, and for the +four objects with two pole solutions both solutions give the same sense of rotation. The +eleven retrograde rotators, with obliquities of $118$ to $179^\circ$, all drift inward, +which tests the signs of their terms directly; the three prograde rotators, at $10$ to +$48^\circ$, all drift outward, and only (1580) Betulia, at $118^\circ$, lies within +$30^\circ$ of $90^\circ$. Under the typical assumptions the $567$ significant terms have a +median efficiency of $0.075$, and $95$ per cent of them lie below $0.17$. Five +accelerations exceed the radiation limit at $500$\,kg\,m$^{-3}$ and albedo $0.5$ +(Table~\ref{tab:screen}): those of the active asteroid 362P/(2008 GO98), of the dark +comets 2012 UR158, 2005 UY6 and (523599) 2003 RM \citep{Seligman2023,Seligman2024}, and of +2016 TA56. At $2000$\,kg\,m$^{-3}$ and albedo $0.14$, ten exceed it, including the dark +comets 1998 FR11, 2001 ME1 and 2006 RH120 and two objects absent from the dark-comet +lists, 1998 SH2 and 2006 VC, with efficiencies of $1.6$ and $1.3$; Section~\ref{sec:others} +analyses both, and 1998 SH2 is a comet \citep{Farnocchia2026}. Only 2016 TA56 exceeds the +limit under the conservative assumptions without appearing in a published list of dark comets +or active asteroids. Thirteen of +the fourteen published dark comets have a transverse term in the database, and the +screen flags six of them. The other seven are the inner dark comets of $4$ to $21$\,m, +whose transverse terms are $0.01$ to $0.09$ of the radiation limit for bodies of their +size and whose published accelerations are based on the radial and normal terms (five of +the seven have $A_3$ at $3.6$ to $10.7\sigma$) and on thermal models of the bodies, which +a transverse screen cannot test. The screen is therefore sensitive to large dark comets +of the outer population, while the inner population is identified through the radial +terms. The screen evaluates terms that JPL has already fitted, and JPL fits $A_2$ only +where the astrometry requires or can constrain it: the $611$ include $609$ of the +$42{,}772$ near-Earth asteroids in the database, and two other objects. It finds dark +comets only among bodies whose transverse accelerations are already measured, it says +nothing about the other near-Earth objects, and the number it finds is not an estimate of +how common dark comets are. + +\begin{table}[t] +\centering\small +\caption{Transverse accelerations above the radiation limit at $500$\,kg\,m$^{-3}$ and +albedo $0.5$ (or at a measured diameter). $D_{\min}$ is the diameter used, $\xi$ the ratio +of the acceleration to $a_{\max}$ at that diameter, and $\xi_{\rm typ}$ the same ratio at +$2000$\,kg\,m$^{-3}$ and albedo $0.14$.} +\label{tab:screen} +\begin{adjustbox}{max width=\textwidth} +\begin{tabular}{lrrrrrl} +\toprule +Object & $A_2$ ($10^{-12}$\,au\,d$^{-2}$) & S/N & $D_{\min}$ (m) & $\xi$ & $\xi_{\rm typ}$ & $T_J$, status \\ +\midrule +362P/(2008 GO98) & $-1150$ & $11.2$ & $4921$ & $8333$ & $62990$ & 2.93, active \\ +2012 UR158 & $-7.20$ & $119$ & $629$ & $6.67$ & $26.7$ & 3.00, dark comet \\ +(883607) 2016 TA56 & $-3.19$ & $8.9$ & $445$ & $2.08$ & $15.8$ & 2.69, this work \\ +(452639) 2005 UY6 & $-0.54$ & $11.3$ & $2249$ & $1.78$ & $7.12$ & 2.94, dark comet \\ +(523599) 2003 RM & $+3.29$ & $110$ & $223$ & $1.08$ & $8.15$ & 2.95, dark comet \\ +\bottomrule +\end{tabular} +\end{adjustbox} +\end{table} + +\subsection{The orbit of 2016 TA56} + +JPL's solution 23 (2026 June 17) uses $94$ of the positions and gives +$A_2=(-3.19\pm0.36)\times10^{-12}$\,au\,d$^{-2}$, an $8.9\sigma$ detection, with +$a=2.69$\,au, $e=0.782$, $q=0.588$\,au, aphelion $4.80$\,au, $i=32.3^\circ$, a minimum +orbit intersection distance with Jupiter of $0.185$\,au and the most recent perihelion on +2026 January 13. Our fits (Table~\ref{tab:fits}) reproduce the term. With site weights, +the fit with $A_2$ retains $97$ of the $102$ positions at an rms of $0.33''$ and gives +$A_2=(-3.54\pm0.17)\times10^{-12}$\,au\,d$^{-2}$; this uncertainty treats the twelve +precovery positions as independent. With the same-night deweighting used in JPL's fits, +which inflates the eight positions from site T14 by $\sqrt{2}$, the result is +$(-3.56\pm0.19)\times10^{-12}$; with the whole night weighted as a single position, the +limit in which the two reports share all their errors, it is +$(-3.45\pm0.37)\times10^{-12}$, a $9\sigma$ detection consistent with JPL's uncertainty. +The value is the same under all three weightings, and we adopt the last. The deweighted +fits have $\chi^2$/dof well below one because inflating the uncertainties of a night's +positions gives them the weight of one, so their $\chi^2$ reflects the weighting rather +than the size of the errors, and the site-weighted fit's $0.65$ reflects the $0.15''$ +floor on sites whose scatter is smaller. A fourth treatment estimates the correlation from +the residuals: each position's site variance is scaled by $s^2$, and any two positions of +the same night share a variance $\tau^2$ in each coordinate. Restricted maximum likelihood +over the $97$ positions kept on $28$ nights gives $s=0.68$ and $\tau=0.17''$ ($95$ per cent +interval $0.11$ to $0.23''$), and with this covariance +$A_2=(-3.85\pm0.30)\times10^{-12}$, a $13\sigma$ term, or +$(-3.88\pm0.37)\times10^{-12}$ with $\tau$ at its upper bound. Weighting each night as one +position is therefore the more conservative treatment. These uncertainties belong to fits +that include the 2007 night; the dependence on that night, and the possibility that its +source is a different object, are examined in Section~\ref{sec:precovery}. Omitting one night at a time, the +one-position-per-night fit gives $A_2$ between $-3.96$ and $-3.39\times10^{-12}$ for every +night after 2007, a jackknife uncertainty of $0.53\times10^{-12}$ that corresponds to +$6.5\sigma$; resampling those nights with replacement, with the 2007 night always included, +gives a $95$ per cent interval of $-4.9$ to $-3.2\times10^{-12}$ over $200$ samples. +Clipping thresholds of $6$, $12$ and none, error floors of $0.10$ and $0.25''$, and +default uncertainties of $0.3$ and $0.8''$ change the term by at most +$0.14\times10^{-12}$, with significances between $7.4$ and $10.6\sigma$. A radial term +fitted simultaneously is $A_1=(+3.7\pm1.9)\times10^{-10}$\,au\,d$^{-2}$, $2\sigma$ from +zero, with $A_2=(-3.32\pm0.21)\times10^{-12}$: the radial term, which the geometry of a +single precovery night constrains poorly, does not absorb the transverse one. The +gravity-only fit retains $83$ positions, rejecting all twelve from 2007 and all three +from 2025 October. + +\begin{table}[t] +\centering\small +\caption{Orbit fits of 2016 TA56 to the $102$ MPC positions. The first three fits differ +in the weighting of positions from the same night (Section~\ref{sec:method}).} +\label{tab:fits} +\begin{adjustbox}{max width=\textwidth} +\begin{tabular}{lrrrl} +\toprule +Fit & Positions & Kept & $\chi^2$/dof & $A_2$ ($10^{-12}$\,au\,d$^{-2}$) \\ +\midrule +with $A_2$, site weights & 102 & 97 & 121.2/187 & $-3.54\pm0.17$ \\ +with $A_2$, nights deweighted by $\sqrt{N/4}$ & 102 & 97 & 105.8/187 & $-3.56\pm0.19$ \\ +with $A_2$, one position a night & 102 & 101 & 58.2/195 & $-3.45\pm0.37$ \\ +with $A_1$ and $A_2$ & 102 & 97 & 117.3/186 & $-3.32\pm0.21$, $A_1=+367\pm187$ \\ +gravity only & 102 & 83 & 112.8/160 & --- \\ +without 2007 September & 90 & 85 & 118.2/163 & $-2.24\pm4.34$ \\ +without 2016--2017 & 23 & 21 & 2.5/35 & $-4.80\pm3.20$ \\ +without 2020 November & 100 & 95 & 120.4/183 & $-3.55\pm0.17$ \\ +without 2022 August & 98 & 93 & 120.8/179 & $-3.54\pm0.18$ \\ +without 2025 October & 99 & 95 & 116.1/183 & $-3.79\pm0.57$ \\ +without 2026 June & 100 & 95 & 120.8/183 & $-3.54\pm0.17$ \\ +\bottomrule +\end{tabular} +\end{adjustbox} +\end{table} + +\subsection{Dependence on the 2007 precovery}\label{sec:precovery} + +Omitting the 2007 precovery gives $A_2=(-2.2\pm4.3)\times10^{-12}$\,au\,d$^{-2}$, of the +same sign but no longer significant; omitting any other apparition except the discovery +apparition leaves it above $6\sigma$. Resampling all $28$ nights with replacement gives a +term beyond $3\sigma$ in $57$ per cent of $200$ samples, close to the $64$ per cent of +samples that include the 2007 night, so nearly every significant resample contains it. +The detection is therefore conditional on the precovery: with that night the term is +measured at $9$ to $13\sigma$, according to the treatment of same-night errors, and +without it the later apparitions do not measure it. Under the night-level covariance, the +twelve 2007 positions would have to share a further error of $0.68''$ in each coordinate +to bring $A_2$ down to $5\sigma$, and of $1.20''$ to bring it to $3\sigma$. The twelve precovery positions come from two reports +from Mauna Kea (sites 568 and T14) for 2007 September 14, with four and eight positions +interleaved over $78$ minutes and consecutive frames of each report at least $7.0$ (568) +and $5.8$ minutes (T14) apart, in the D1 field of the CFHT Legacy Survey, where the +predicted motion was $34.5''$ per hour toward position angle $210^\circ$. Both reports are +re-measurements of the same CFHT frames against Gaia DR2, so they share the frame timing +and the reference catalogue: they are two reductions of one night, not two independent +nights. The gravity-only orbit fitted to the later apparitions predicts the positions for +that night with uncertainties of $0.08''$ along the apparent motion and $0.20''$ across +it, from its covariance; the precovery positions lie $3.45''$ from that prediction, +$1.8''$ along the motion and $3.0''$ across it, with a scatter of $0.07''$ +(Figure~\ref{fig:oc}a). + +A timing error displaces a position only along the apparent motion. It could therefore +account for the along-track offset, which corresponds to three minutes, but not for the +cross-track offset, which is fifteen times the prediction uncertainty whether or not the +two reports share a clock. Both reports use Gaia DR2 as the reference catalogue, which +rules out a catalogue offset of this size. We measured the CFHT frames independently +(Table~\ref{tab:cfht}, Figure~\ref{fig:cutouts}), registering each to Gaia DR3 stars with +proper motions propagated to 2007, with a median rms of $0.02''$. The object is detected +in twelve frames, each time trailed by its motion during the exposure ($4.06''$ in the +$420$\,s $r$ frames and $2.90''$ in the $300$\,s $g$ frames), along a straight track +from which both reports deviate by $0.10''$ rms across the motion. In eleven frames our +centroid lies within $0.42''$ of the accelerated orbit and $3.2$ to $3.4''$ east of the +gravity-only orbit; in frame 942303, where the object is faint, it lies $1.7''$ away, and +in frame 942308, where the object is next to a star, it is not detected. The offset is +therefore present in the images rather than introduced by either reduction, and removing +the transverse term would require a common error of $3.0''$ across the motion in every +position, $150$ times the scatter of the registration. With $A_2$ the precovery positions +are fitted to within $0.07''$ (Figure~\ref{fig:oc}c). + +The later positions support the same conclusion. A gravity-only orbit fitted to the +precovery and the apparitions through 2022 fits the precovery but misses the three +positions of 2025 October by $10.5''$ ($6.7''$ along and $8.0''$ across the motion), +against a prediction uncertainty of $0.4''$, and the two of 2026 June by $2.3''$, which +the fit then rejects (Figure~\ref{fig:oc}b). No gravity-only orbit fits the precovery and +the last two apparitions together, while the orbit with the transverse term fits all of +them. The term is therefore robust unless the precovery is a different object. A +misidentification would leave a body whose 2016--2026 arc constrains $A_2$ only to +$\pm4.3\times10^{-12}$\,au\,d$^{-2}$, and strong non-gravitational accelerations can +themselves complicate the linking of observations \citep{Taylor2024b}. The three +reductions of that night agree to $0.2''$, and the measured motion, $34.7''$ per hour +toward position angle $209^\circ$, is the rate and direction predicted by the orbit. + +The 2007 frames test the identification directly, because 2016 TA56 must appear in them +whatever its acceleration. Every orbit fitted to the later apparitions places it on one +line through the gravity-only position, $0.93''$ further west for each $10^{-12}$\,au\,d$^{-2}$ +of $A_2$, and a radial term fitted as well moves it only along the same line ($1\sigma$ +ellipse $4.05''\times0.17''$). Its absolute magnitude predicts $V=23.1$ that night, and the +measured source has $r=22.8$. +Along this line the frames show a single source (Figure~\ref{fig:locus}): the median flux +reaches $0.96$ of the detection's at $A_2=-3.75\times10^{-12}$\,au\,d$^{-2}$ and is nowhere +else above $0.05$, and within $24''$ of the gravity-only position in any direction +nothing but the detection exceeds $0.13$. At the +gravity-only position it is $-0.04$, while lines displaced across the field give a robust +scatter of $0.022$ at the same point, so any object there is at least $3.9$\,mag +fainter than the detection ($3\sigma$). Of the $954$ displaced lines, none reach half the +detection's flux anywhere along their length. The precovery source is therefore +2016 TA56 unless that object was about $40$ times fainter than its absolute magnitude +implies while an unrelated object moving as predicted lay on the line. + +A census of the moving sources in all sixteen frames measures the density of such objects +in these images, rather than among known asteroids. It finds $68$ moving sources besides +2016 TA56 over the $0.86$\,deg$^2$ of the mosaic, $79$ per square degree, among them +$21$ of the $22$ known asteroids with good positions that +SkyBoT \citep{Berthier2006} places on the frames. They move at $22\pm13''$ per hour; none +comes within $5''$ per hour and $10^\circ$ of the object's motion, and three within +$10''$ per hour and $20^\circ$. Injected copies of the object are recovered on $109$ of +the $115$ tracks placed within $0.5$\,mag of its brightness, and no track forms with +the frame times shuffled. With normal distributions fitted to the rates and directions of +the census, the expected number of unrelated objects within $30''$ of the predicted +position and within $0.5''$ per hour and $1^\circ$ of the measured motion is $8\times10^{-6}$. + +The 2007 night is the only epoch before the discovery that constrains the orbit. The +other images of the predicted track listed by the CADC SSOIS index recorded the object at +$V=23.2$ or fainter, beyond the depth of their exposures: forced photometry at the +predicted position gives S/N $0.9$ and $2.2$ in the deepest, two DECam exposures of +2013 September 29 at $V=23.9$, and $1.4$ in a stack of eight Pan-STARRS1 exposures of +2013 August, and the accelerated and gravity-only orbits are only $0.5''$ apart in 2013. + +\begin{figure}[tp] +\centering +\begin{tikzpicture} +\begin{axis}[name=p0,width=0.95\textwidth,height=0.27\textwidth,xmin=2006.5,xmax=2027,ymin=-12,ymax=12, + xlabel={},ylabel={offset (arcsec)},title={(a) gravity only, fitted without 2007 September},title style={font=\footnotesize},tick label style={font=\footnotesize}, + label style={font=\small},x tick label style={/pgf/number format/1000 sep={}},legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend columns=1] +\addplot[only marks,mark=*,mark size=1.3pt,black] coordinates {(2007.701,3.13) (2007.702,2.95) (2007.702,2.97) (2007.702,2.97) (2007.702,3.01) (2007.702,2.96) (2007.702,3.17) (2007.702,3.00) (2007.702,2.99) (2007.702,2.97) (2007.702,2.95) (2007.702,2.96) (2016.767,0.17) (2016.767,0.13) (2016.775,0.19) (2016.775,0.15) (2016.775,0.11) (2016.775,0.16) (2016.777,-0.35) (2016.777,0.03) (2016.777,-0.67) (2016.783,-0.41) (2016.783,-0.05) (2016.783,-0.29) (2016.818,0.02) (2016.818,0.05) (2016.826,1.13) (2016.826,0.27) (2016.826,0.70) (2016.856,-0.15) (2016.856,0.16) (2016.856,-0.25) (2016.900,-0.06) (2016.900,-0.10) (2016.900,-0.20) (2016.930,-0.14) (2016.930,0.05) (2016.930,-0.12) (2016.961,0.82) (2016.961,0.07) (2016.962,0.50) (2016.962,0.04) (2016.963,-3.18) (2016.963,1.29) (2016.963,0.01) (2016.964,-0.21) (2016.964,0.75) (2016.964,-0.12) (2016.977,0.12) (2016.977,-0.42) (2016.977,-0.10) (2016.977,-0.05) (2017.023,0.33) (2017.023,0.64) (2017.023,0.04) (2017.042,0.29) (2017.042,-0.03) (2017.042,-0.09) (2017.075,0.70) (2017.075,0.12) (2017.075,-0.16) (2017.143,0.69) (2017.143,0.37) (2017.298,0.32) (2017.298,-0.44) (2017.298,-1.36) (2017.328,0.09) (2017.328,0.19) (2017.328,0.72) (2017.363,0.08) (2017.363,0.70) (2017.363,0.23) (2017.420,-0.63) (2017.420,-0.58) (2017.421,0.60) (2017.421,-0.02) (2017.421,0.59) (2017.421,-0.50) (2017.421,-0.13) (2017.422,-0.16) (2017.422,-0.04) (2017.422,-0.08) (2017.422,1.98) (2017.423,-0.38) (2017.423,-0.02) (2017.429,0.02) (2017.429,-0.09) (2017.429,-0.11) (2017.451,0.07) (2017.451,-0.04) (2017.451,-0.08) (2020.889,0.12) (2020.889,-0.21) (2022.631,0.07) (2022.631,-0.12) (2022.631,-0.08) (2022.631,0.01) (2025.793,0.17) (2025.793,-0.38) (2025.793,-0.18) (2026.439,0.07) (2026.439,0.07)}; +\addlegendentry{across the motion} +\addplot[only marks,mark=o,mark size=1.3pt,black!60] coordinates {(2007.701,-1.59) (2007.702,-1.80) (2007.702,-1.65) (2007.702,-1.76) (2007.702,-1.62) (2007.702,-1.71) (2007.702,-1.73) (2007.702,-1.76) (2007.702,-1.65) (2007.702,-1.71) (2007.702,-1.71) (2007.702,-1.79) (2016.767,-0.13) (2016.767,-0.17) (2016.775,-0.04) (2016.775,-0.02) (2016.775,0.05) (2016.775,-0.02) (2016.777,0.06) (2016.777,0.42) (2016.777,-0.52) (2016.783,0.03) (2016.783,-0.30) (2016.783,0.04) (2016.818,-0.25) (2016.818,0.55) (2016.826,1.18) (2016.826,0.82) (2016.826,0.40) (2016.856,-0.12) (2016.856,-0.03) (2016.856,0.14) (2016.900,0.30) (2016.900,0.10) (2016.900,0.27) (2016.930,-0.09) (2016.930,0.27) (2016.930,0.06) (2016.961,0.23) (2016.961,0.71) (2016.962,1.04) (2016.962,-0.22) (2016.963,-1.81) (2016.963,0.08) (2016.963,-0.25) (2016.964,-0.23) (2016.964,0.04) (2016.964,-1.02) (2016.977,-0.08) (2016.977,-0.07) (2016.977,-0.26) (2016.977,-0.21) (2017.023,0.44) (2017.023,0.37) (2017.023,0.60) (2017.042,0.08) (2017.042,0.14) (2017.042,0.07) (2017.075,0.28) (2017.075,-0.09) (2017.075,-0.04) (2017.143,0.88) (2017.143,0.09) (2017.298,-0.10) (2017.298,0.09) (2017.298,2.33) (2017.328,0.92) (2017.328,0.15) (2017.328,-0.09) (2017.363,-0.19) (2017.363,-0.31) (2017.363,-0.27) (2017.420,-0.53) (2017.420,-0.24) (2017.421,0.03) (2017.421,0.44) (2017.421,-0.06) (2017.421,0.08) (2017.421,0.19) (2017.422,0.82) (2017.422,0.53) (2017.422,-0.21) (2017.422,3.30) (2017.423,0.28) (2017.423,0.16) (2017.429,-0.18) (2017.429,-0.13) (2017.429,-0.11) (2017.451,0.06) (2017.451,-0.02) (2017.451,0.14) (2020.889,0.01) (2020.889,-0.19) (2022.631,0.24) (2022.631,-0.12) (2022.631,0.17) (2022.631,0.07) (2025.793,-0.35) (2025.793,0.50) (2025.793,-1.55) (2026.439,-0.35) (2026.439,-0.33)}; +\addlegendentry{along the motion} +\addplot[black!40,densely dotted,forget plot] coordinates {(2006.5,0) (2027,0)}; +\end{axis} +\begin{axis}[name=p1,at={(p0.south)},anchor=north,yshift=-1.7cm,width=0.95\textwidth,height=0.27\textwidth,xmin=2006.5,xmax=2027,ymin=-12,ymax=12, + xlabel={},ylabel={offset (arcsec)},title={(b) gravity only, fitted without 2025 October},title style={font=\footnotesize},tick label style={font=\footnotesize}, + label style={font=\small},x tick label style={/pgf/number format/1000 sep={}},legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend columns=1] +\addplot[only marks,mark=*,mark size=1.3pt,black] coordinates {(2007.701,0.17) (2007.702,-0.02) (2007.702,0.01) (2007.702,0.00) (2007.702,0.05) (2007.702,-0.01) (2007.702,0.21) (2007.702,0.04) (2007.702,0.02) (2007.702,0.00) (2007.702,-0.02) (2007.702,-0.01) (2016.767,0.14) (2016.767,0.10) (2016.775,0.16) (2016.775,0.11) (2016.775,0.08) (2016.775,0.13) (2016.777,-0.39) (2016.777,-0.01) (2016.777,-0.70) (2016.783,-0.45) (2016.783,-0.08) (2016.783,-0.33) (2016.818,-0.01) (2016.818,0.02) (2016.826,1.10) (2016.826,0.24) (2016.826,0.67) (2016.856,-0.17) (2016.856,0.14) (2016.856,-0.27) (2016.900,-0.07) (2016.900,-0.11) (2016.900,-0.21) (2016.930,-0.14) (2016.930,0.05) (2016.930,-0.12) (2016.961,0.84) (2016.961,0.09) (2016.962,0.51) (2016.962,0.06) (2016.963,-3.17) (2016.963,1.31) (2016.963,0.03) (2016.964,-0.20) (2016.964,0.76) (2016.964,-0.10) (2016.977,0.14) (2016.977,-0.40) (2016.977,-0.08) (2016.977,-0.03) (2017.023,0.36) (2017.023,0.67) (2017.023,0.08) (2017.042,0.32) (2017.042,-0.00) (2017.042,-0.06) (2017.075,0.72) (2017.075,0.14) (2017.075,-0.14) (2017.143,0.74) (2017.143,0.42) (2017.298,0.41) (2017.298,-0.35) (2017.298,-1.28) (2017.328,0.15) (2017.328,0.25) (2017.328,0.79) (2017.363,0.13) (2017.363,0.74) (2017.363,0.28) (2017.420,-0.62) (2017.420,-0.58) (2017.421,0.60) (2017.421,-0.02) (2017.421,0.59) (2017.421,-0.49) (2017.421,-0.12) (2017.422,-0.16) (2017.422,-0.04) (2017.422,-0.08) (2017.422,1.99) (2017.423,-0.37) (2017.423,-0.01) (2017.429,0.02) (2017.429,-0.10) (2017.429,-0.11) (2017.451,0.06) (2017.451,-0.05) (2017.451,-0.09) (2020.889,0.47) (2020.889,0.14) (2022.631,0.47) (2022.631,0.28) (2022.631,0.31) (2022.631,0.41) (2025.793,8.20) (2025.793,7.66) (2025.793,7.86) (2026.439,0.29) (2026.439,0.29)}; +\addlegendentry{across the motion} +\addplot[only marks,mark=o,mark size=1.3pt,black!60] coordinates {(2007.701,0.14) (2007.702,-0.07) (2007.702,0.09) (2007.702,-0.03) (2007.702,0.11) (2007.702,0.02) (2007.702,0.00) (2007.702,-0.03) (2007.702,0.08) (2007.702,0.02) (2007.702,0.03) (2007.702,-0.06) (2016.767,-0.15) (2016.767,-0.19) (2016.775,-0.06) (2016.775,-0.03) (2016.775,0.03) (2016.775,-0.04) (2016.777,0.04) (2016.777,0.41) (2016.777,-0.53) (2016.783,0.02) (2016.783,-0.31) (2016.783,0.02) (2016.818,-0.25) (2016.818,0.55) (2016.826,1.19) (2016.826,0.83) (2016.826,0.41) (2016.856,-0.10) (2016.856,-0.01) (2016.856,0.16) (2016.900,0.34) (2016.900,0.13) (2016.900,0.30) (2016.930,-0.05) (2016.930,0.31) (2016.930,0.09) (2016.961,0.27) (2016.961,0.74) (2016.962,1.07) (2016.962,-0.19) (2016.963,-1.78) (2016.963,0.12) (2016.963,-0.22) (2016.964,-0.20) (2016.964,0.08) (2016.964,-0.99) (2016.977,-0.05) (2016.977,-0.05) (2016.977,-0.23) (2016.977,-0.18) (2017.023,0.43) (2017.023,0.36) (2017.023,0.59) (2017.042,0.06) (2017.042,0.12) (2017.042,0.04) (2017.075,0.25) (2017.075,-0.12) (2017.075,-0.08) (2017.143,0.83) (2017.143,0.04) (2017.298,-0.06) (2017.298,0.13) (2017.298,2.38) (2017.328,0.94) (2017.328,0.17) (2017.328,-0.08) (2017.363,-0.17) (2017.363,-0.29) (2017.363,-0.25) (2017.420,-0.50) (2017.420,-0.21) (2017.421,0.06) (2017.421,0.47) (2017.421,-0.03) (2017.421,0.11) (2017.421,0.22) (2017.422,0.85) (2017.422,0.56) (2017.422,-0.18) (2017.422,3.33) (2017.423,0.31) (2017.423,0.19) (2017.429,-0.15) (2017.429,-0.10) (2017.429,-0.08) (2017.451,0.09) (2017.451,0.01) (2017.451,0.16) (2020.889,-0.38) (2020.889,-0.59) (2022.631,-0.22) (2022.631,-0.58) (2022.631,-0.29) (2022.631,-0.39) (2025.793,7.00) (2025.793,7.86) (2025.793,5.80) (2026.439,-2.32) (2026.439,-2.30)}; +\addlegendentry{along the motion} +\addplot[black!40,densely dotted,forget plot] coordinates {(2006.5,0) (2027,0)}; +\end{axis} +\begin{axis}[name=p2,at={(p1.south)},anchor=north,yshift=-1.7cm,width=0.95\textwidth,height=0.27\textwidth,xmin=2006.5,xmax=2027,ymin=-1.5,ymax=1.5, + xlabel={year},ylabel={offset (arcsec)},title={(c) with $A_2$},title style={font=\footnotesize},tick label style={font=\footnotesize}, + label style={font=\small},x tick label style={/pgf/number format/1000 sep={}},legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend columns=1] +\addplot[only marks,mark=*,mark size=1.3pt,black] coordinates {(2007.701,0.18) (2007.702,-0.01) (2007.702,0.02) (2007.702,0.01) (2007.702,0.06) (2007.702,0.00) (2007.702,0.22) (2007.702,0.04) (2007.702,0.03) (2007.702,0.01) (2007.702,-0.01) (2007.702,0.00) (2016.767,0.15) (2016.767,0.11) (2016.775,0.17) (2016.775,0.12) (2016.775,0.09) (2016.775,0.14) (2016.777,-0.38) (2016.777,-0.00) (2016.777,-0.69) (2016.783,-0.44) (2016.783,-0.08) (2016.783,-0.32) (2016.818,-0.01) (2016.818,0.02) (2016.826,0.24) (2016.826,0.67) (2016.856,-0.18) (2016.856,0.13) (2016.856,-0.28) (2016.900,-0.08) (2016.900,-0.12) (2016.900,-0.22) (2016.930,-0.15) (2016.930,0.03) (2016.930,-0.13) (2016.961,0.82) (2016.961,0.07) (2016.962,0.50) (2016.962,0.04) (2016.963,1.30) (2016.963,0.01) (2016.964,-0.21) (2016.964,0.75) (2016.964,-0.11) (2016.977,0.13) (2016.977,-0.42) (2016.977,-0.09) (2016.977,-0.04) (2017.023,0.35) (2017.023,0.66) (2017.023,0.07) (2017.042,0.31) (2017.042,-0.01) (2017.042,-0.07) (2017.075,0.72) (2017.075,0.14) (2017.075,-0.15) (2017.143,0.74) (2017.143,0.42) (2017.298,0.42) (2017.298,-0.33) (2017.328,0.15) (2017.328,0.25) (2017.328,0.79) (2017.363,0.12) (2017.363,0.73) (2017.363,0.27) (2017.420,-0.63) (2017.420,-0.59) (2017.421,0.59) (2017.421,-0.03) (2017.421,0.58) (2017.421,-0.50) (2017.421,-0.13) (2017.422,-0.16) (2017.422,-0.04) (2017.422,-0.09) (2017.423,-0.38) (2017.423,-0.02) (2017.429,0.01) (2017.429,-0.10) (2017.429,-0.12) (2017.451,0.06) (2017.451,-0.06) (2017.451,-0.09) (2020.889,0.17) (2020.889,-0.16) (2022.631,0.08) (2022.631,-0.11) (2022.631,-0.07) (2022.631,0.02) (2025.793,0.21) (2025.793,-0.33) (2026.439,0.08) (2026.439,0.08)}; +\addlegendentry{across the motion} +\addplot[only marks,mark=*,mark size=1.3pt,black,opacity=0.35,forget plot] coordinates {(2016.826,1.10) (2016.963,-1.50) (2017.298,-1.26) (2017.422,1.50) (2025.793,-0.14)}; +\addplot[only marks,mark=o,mark size=1.3pt,black!60] coordinates {(2007.701,0.17) (2007.702,-0.04) (2007.702,0.11) (2007.702,-0.00) (2007.702,0.14) (2007.702,0.05) (2007.702,0.03) (2007.702,-0.00) (2007.702,0.11) (2007.702,0.05) (2007.702,0.05) (2007.702,-0.03) (2016.767,-0.18) (2016.767,-0.22) (2016.775,-0.09) (2016.775,-0.07) (2016.775,-0.00) (2016.775,-0.07) (2016.777,0.01) (2016.777,0.37) (2016.777,-0.57) (2016.783,-0.01) (2016.783,-0.35) (2016.783,-0.01) (2016.818,-0.28) (2016.818,0.51) (2016.826,0.79) (2016.826,0.37) (2016.856,-0.13) (2016.856,-0.04) (2016.856,0.12) (2016.900,0.31) (2016.900,0.10) (2016.900,0.27) (2016.930,-0.07) (2016.930,0.29) (2016.930,0.07) (2016.961,0.25) (2016.961,0.73) (2016.962,1.06) (2016.962,-0.20) (2016.963,0.10) (2016.963,-0.23) (2016.964,-0.21) (2016.964,0.06) (2016.964,-1.00) (2016.977,-0.06) (2016.977,-0.06) (2016.977,-0.24) (2016.977,-0.19) (2017.023,0.43) (2017.023,0.36) (2017.023,0.59) (2017.042,0.06) (2017.042,0.12) (2017.042,0.04) (2017.075,0.24) (2017.075,-0.13) (2017.075,-0.08) (2017.143,0.81) (2017.143,0.02) (2017.298,-0.08) (2017.298,0.11) (2017.328,0.92) (2017.328,0.14) (2017.328,-0.10) (2017.363,-0.19) (2017.363,-0.31) (2017.363,-0.27) (2017.420,-0.52) (2017.420,-0.24) (2017.421,0.03) (2017.421,0.44) (2017.421,-0.05) (2017.421,0.09) (2017.421,0.20) (2017.422,0.83) (2017.422,0.53) (2017.422,-0.21) (2017.423,0.29) (2017.423,0.16) (2017.429,-0.17) (2017.429,-0.13) (2017.429,-0.11) (2017.451,0.06) (2017.451,-0.02) (2017.451,0.13) (2020.889,-0.13) (2020.889,-0.34) (2022.631,0.12) (2022.631,-0.24) (2022.631,0.05) (2022.631,-0.06) (2025.793,-0.38) (2025.793,0.47) (2026.439,-0.20) (2026.439,-0.18)}; +\addlegendentry{along the motion} +\addplot[only marks,mark=o,mark size=1.3pt,black!60,opacity=0.35,forget plot] coordinates {(2016.826,1.15) (2016.963,-1.50) (2017.298,1.50) (2017.422,1.50) (2025.793,-1.50)}; +\addplot[black!40,densely dotted,forget plot] coordinates {(2006.5,0) (2027,0)}; +\end{axis} +\end{tikzpicture} +\caption{Residuals of each position from three orbits, across and along the apparent motion, as a function of time: (a)~the gravity-only orbit fitted to the 2016--2026 apparitions, which is offset from the 2007 precovery by $3.0''$ across the motion; (b)~the gravity-only orbit fitted to the precovery and the apparitions through 2022 (the 2026 positions rejected), which is offset from the 2025 October positions by $8''$ across and $7''$ along the motion; (c)~the orbit with $A_2$, with all residuals within $1.5''$ and rejected positions shown faint. Positions from the same night overlap at this scale.} +\label{fig:oc} +\end{figure} + +\begin{table}[tbp] +\centering\small +\caption{Our measurements of 2016 TA56 in the CFHT MegaCam frames of 2007 September 14: +frame, mid-exposure time (UTC), band, exposure, peak S/N, trail length, position, and its +offsets east and north from the orbit with $A_2$ and from the gravity-only orbit fitted +without 2007, seen from site 568.} +\label{tab:cfht} +\begin{adjustbox}{max width=\textwidth} +\begin{tabular}{lrcrrrrrll} +\toprule +Frame & UTC & Band & $t$ (s) & S/N & Trail ($''$) & RA (deg) & Dec (deg) & From $A_2$ orbit ($''$) & From gravity only ($''$) \\ +\midrule +942300p & 10:59:00 & $r$ & 420 & 7.3 & 4.06 & 36.350460 & $-4.498394$ & $-0.03$, $-0.11$ & $+3.40$, $+0.05$ \\ +942301p & 11:06:48 & $r$ & 420 & 6.0 & 4.06 & 36.349822 & $-4.499511$ & $-0.12$, $-0.21$ & $+3.31$, $-0.05$ \\ +942302p & 11:14:42 & $r$ & 420 & 7.6 & 4.06 & 36.349208 & $-4.500609$ & $-0.10$, $-0.19$ & $+3.34$, $-0.03$ \\ +942303p & 11:22:30 & $r$ & 420 & 4.4 & 4.06 & 36.348850 & $-4.501241$ & $+0.83$, $+1.46$ & $+4.26$, $+1.62$ \\ +942304p & 11:30:18 & $r$ & 420 & 4.4 & 3.94 & 36.347959 & $-4.502816$ & $-0.16$, $-0.28$ & $+3.27$, $-0.13$ \\ +942305p & 11:38:07 & $r$ & 420 & 6.8 & 4.06 & 36.347336 & $-4.503888$ & $-0.18$, $-0.21$ & $+3.26$, $-0.06$ \\ +942306p & 11:45:55 & $r$ & 420 & 4.5 & 4.06 & 36.346710 & $-4.505005$ & $-0.21$, $-0.31$ & $+3.22$, $-0.15$ \\ +942307p & 12:01:19 & $g$ & 300 & 4.8 & 2.90 & 36.345512 & $-4.507136$ & $-0.13$, $-0.23$ & $+3.30$, $-0.08$ \\ +942309p & 12:12:55 & $g$ & 300 & 9.7 & 2.90 & 36.344603 & $-4.508734$ & $-0.09$, $-0.15$ & $+3.35$, $+0.01$ \\ +942311p & 12:24:31 & $g$ & 300 & 5.8 & 2.90 & 36.343682 & $-4.510371$ & $-0.08$, $-0.20$ & $+3.35$, $-0.05$ \\ +942312p & 12:30:19 & $g$ & 300 & 5.9 & 2.81 & 36.343181 & $-4.511221$ & $-0.22$, $-0.35$ & $+3.21$, $-0.19$ \\ +942313p & 12:36:08 & $g$ & 300 & 6.1 & 2.90 & 36.342755 & $-4.511974$ & $-0.10$, $-0.14$ & $+3.34$, $+0.02$ \\ +\bottomrule +\end{tabular} +\end{adjustbox} +\end{table} + +\begin{figure}[tbp] +\centering +\includegraphics[width=0.92\textwidth]{cfht2007_cutouts.pdf} +\caption{2016 TA56 in the twelve CFHT MegaCam frames of 2007 September 14 in which it is +detected, $16''$ across, north up and east left: our centroid (cross), the position +predicted by the orbit with $A_2$ (circle) and the position predicted by the gravity-only +orbit fitted to the later apparitions (square). The object is trailed toward the +southwest by its motion during each exposure.} +\label{fig:cutouts} +\end{figure} + +\begin{figure}[tbp] +\centering +\begin{tikzpicture} +\begin{axis}[width=0.95\textwidth,height=0.36\textwidth,xmin=-16,xmax=12,ymin=-0.2,ymax=1.1,xlabel={$A_2$ ($10^{-12}$\,au\,d$^{-2}$)},ylabel={relative flux},tick label style={font=\footnotesize},label style={font=\small}] +\addplot[black,thick] coordinates {(-16.00,-0.047) (-15.75,-0.050) (-15.50,-0.061) (-15.25,-0.058) (-15.00,-0.074) (-14.75,-0.081) (-14.50,-0.070) (-14.25,-0.059) (-14.00,-0.057) (-13.75,-0.044) (-13.50,-0.041) (-13.25,-0.044) (-13.00,-0.068) (-12.75,-0.069) (-12.50,-0.085) (-12.25,-0.077) (-12.00,-0.063) (-11.75,-0.044) (-11.50,-0.038) (-11.25,-0.024) (-11.00,-0.017) (-10.75,-0.014) (-10.50,0.001) (-10.25,-0.008) (-10.00,-0.013) (-9.75,-0.013) (-9.50,-0.044) (-9.25,-0.043) (-9.00,-0.030) (-8.75,-0.031) (-8.50,-0.025) (-8.25,-0.014) (-8.00,-0.004) (-7.75,0.003) (-7.50,-0.014) (-7.25,-0.009) (-7.00,0.002) (-6.75,0.001) (-6.50,-0.005) (-6.25,-0.017) (-6.00,-0.014) (-5.75,-0.004) (-5.50,0.006) (-5.25,0.033) (-5.00,0.115) (-4.75,0.253) (-4.50,0.437) (-4.25,0.645) (-4.00,0.848) (-3.75,0.962) (-3.50,0.914) (-3.25,0.745) (-3.00,0.532) (-2.75,0.318) (-2.50,0.165) (-2.25,0.061) (-2.00,0.004) (-1.75,-0.011) (-1.50,-0.011) (-1.25,-0.019) (-1.00,-0.029) (-0.75,-0.031) (-0.50,-0.038) (-0.25,-0.042) (0.00,-0.039) (0.25,-0.027) (0.50,-0.031) (0.75,-0.033) (1.00,-0.032) (1.25,-0.030) (1.50,-0.031) (1.75,-0.051) (2.00,-0.047) (2.25,-0.047) (2.50,-0.044) (2.75,-0.026) (3.00,-0.030) (3.25,-0.024) (3.50,-0.022) (3.75,-0.024) (4.00,-0.023) (4.25,-0.018) (4.50,-0.029) (4.75,-0.043) (5.00,-0.050) (5.25,-0.052) (5.50,-0.039) (5.75,-0.024) (6.00,0.001) (6.25,0.030) (6.50,0.048) (6.75,0.049) (7.00,0.029) (7.25,0.011) (7.50,-0.006) (7.75,-0.030) (8.00,-0.038) (8.25,-0.042) (8.50,-0.047) (8.75,-0.044) (9.00,-0.043) (9.25,-0.042) (9.50,-0.037) (9.75,-0.032) (10.00,-0.025) (10.25,-0.015) (10.50,-0.019) (10.75,-0.035) (11.00,-0.043) (11.25,-0.052) (11.50,-0.058) (11.75,-0.053) (12.00,-0.055)}; +\addplot[black!50,densely dotted] coordinates {(-16,0.066) (12,0.066)}; +\addplot[black!50,densely dotted] coordinates {(-16,-0.066) (12,-0.066)}; +\addplot[black!50,dashed] coordinates {(0,-0.2) (0,1.1)}; +\end{axis} +\end{tikzpicture} +\caption{Median flux over the 2007 frames that measure each position, in units of the +detection's, of a source moving with 2016 TA56 at each position that orbits fitted to the +later apparitions allow, +labelled by the value of $A_2$ that places the object there. The dashed line marks the +gravity-only orbit ($A_2=0$) and the dotted lines $\pm3$ times the scatter at a fixed point +along lines displaced across the field.} +\label{fig:locus} +\end{figure} + +\subsection{Size, albedo and the radiation bound} + +NEOWISE detected 2016 TA56 twenty times: eight times in 2016 December at $1.61$ to +$1.62$\,au from the Sun and twelve times in 2017 June at $1.39$ to $1.40$\,au, at phase +angles of $37$ to $47^\circ$. Sixteen W2 fluxes reach S/N $4$ after the rejection of one +that differs by a magnitude from the rest of its apparition. At $\eta=1.4$ the fit gives +$D=2.44\pm0.06$\,km and $p_V=0.017$, with $\chi^2=28.4$ for $16$ fluxes, an uncertainty +conditional on that value of $\eta$; $\eta$ from $0.9$ to $1.9$ gives $D=1.41$ to +$3.72$\,km and $p_V=0.050$ to $0.007$ with nearly equal $\chi^2$, because W2 alone does not +constrain $\eta$ (Table~\ref{tab:thermal}), and this range is the uncertainty of the +diameter. Of the other assumptions, an emissivity of +$0.95$ increases $D$ by $5$ per cent, while the phase slope ($G=0.05$ or $0.25$), the ratio +of infrared to visible albedo ($1.0$ or $2.0$) and the flux floor ($5$ or $20$ per cent) +change it by less than $1$ per cent. The ten W1 measurements that reach S/N $4$ lie $0.6$ +to $4.5$\,mag above the model and scatter by two magnitudes within an apparition, and one +of them coincides with a W2 measurement at S/N $2$, as expected for faint single-exposure +detections and blends with stars; they are not used. Table~S2 of the supplementary +material lists all twenty detections with their W1 and W2 magnitudes, uncertainties and +quality flags, and the use made of each. The JPL database, +which includes the NEOWISE diameters from the Planetary Data System, gives none for +2016 TA56; for the dark comet 2005 UY6, which has the same $H$, it gives $2.25$\,km and an +albedo of $0.018$ \citep{Masiero2017}, and for 2012 UR158 $0.63$\,km and $0.023$. Albedos +near $0.02$ are typical of cometary nuclei. + +\begin{table}[t] +\centering\small +\caption{NEATM fits to the $16$ W2 fluxes of 2016 TA56 at fixed beaming parameters, with +the efficiency $\xi$ of the refitted $A_2$ relative to the radiation limit at +$1000$\,kg\,m$^{-3}$.} +\label{tab:thermal} +\begin{adjustbox}{max width=\textwidth} +\begin{tabular}{rrrrr} +\toprule +$\eta$ & $D$ (km) & $p_V$ & $\chi^2$ & $\xi$ \\ +\midrule +0.9 & 1.41 & 0.050 & 31.0 & 14.7 \\ +1.0 & 1.60 & 0.039 & 30.2 & 16.7 \\ +1.2 & 2.00 & 0.025 & 29.1 & 20.8 \\ +1.4 & 2.44 & 0.017 & 28.4 & 25.4 \\ +1.6 & 2.92 & 0.012 & 28.0 & 30.4 \\ +1.9 & 3.72 & 0.007 & 27.8 & 38.7 \\ +\bottomrule +\end{tabular} +\end{adjustbox} +\end{table} + +At the fitted diameter the refitted acceleration is $\xi=12.7$, $25.4$ and $50.8$ times +the radiation limit at $500$, $1000$ and $2000$\,kg\,m$^{-3}$; across the range of $\eta$ +it is $7$ to $19$ times the limit at $500$\,kg\,m$^{-3}$. No bulk density between $500$ +and $2000$\,kg\,m$^{-3}$ brings the acceleration within the radiation limit for any +beaming parameter from $0.9$ to $1.9$. + +\subsection{Minimum outgassing rate} + +Gas leaving the surface at about $0.5$\,km\,s$^{-1}$ imparts the largest transverse +momentum when all of it is emitted along track, so the acceleration sets a lower limit on +the production rate, $\dot M \ge M A_2\,g(r)/v$. At $D=2.44$\,km and $1000$\,kg\,m$^{-3}$ +the mass is $7.6\times10^{12}$\,kg and the limit is $1.1$\,kg\,s$^{-1}$ of water +($3.6\times10^{25}$\,molecules\,s$^{-1}$) at $1$\,au and $3.1$\,kg\,s$^{-1}$ at the +perihelion distance of $0.59$\,au; at $500$\,kg\,m$^{-3}$ it is half as large. Gas +leaving at an angle $\theta$ to the track supplies only $\cos\theta$ of its momentum along +it, and the required rate rises by $1/\cos\theta$. These are production rates of weakly +active comets. The acceleration sets a lower limit rather than +the actual rate, and no coma has been reported for 2016 TA56; the activity of 1998 SH2 +was not visible in archival images and was detected only with large-aperture +imaging \citep{Farnocchia2026}. + +\subsection{The 2030 apparition} + +The accelerated orbit and the gravity-only orbit fitted without the precovery agree to +within $0.2''$ until 2026 August, when the object fades below $V=22.4$. At the next +apparition they diverge: by $6.7''$ on 2030 July 30 at $V=20.2$ and solar elongation +$60^\circ$, by $4.0''$ on 2030 September 8 at $V=21.2$, and by $2.1''$ on 2030 October 18 +at $V=22.4$. Propagating the fit covariances, the predicted position of each orbit is +uncertain almost entirely along the direction of separation, by $1.18''$ for the orbit +with $A_2$ and $0.71''$ for the gravity-only orbit on July 30 with one position per night, +and by less than $0.1''$ across it (Table~\ref{tab:pred}). A single position accurate to +$0.2''$ at any time from July 30 to September 28 therefore distinguishes the two orbits at +$4.6$ to $4.7\sigma$ with one position per night and at $6.9$ to $7.5\sigma$ with site +weights. These significances assume that both orbits are correct up to their fit +covariances. The apparition also measures the acceleration without the precovery: added to +the 2016 to 2026 positions without the 2007 night, a single position accurate to $0.2''$ +on 2030 July 30 gives $\sigma(A_2)=0.39\times10^{-12}$\,au\,d$^{-2}$ with one position per +night, against $6.8\times10^{-12}$ from those positions alone, and three or six positions +spread over the apparition give $0.38$ and $0.37\times10^{-12}$, the uncertainty of the +state then dominating. Observations in 2030 can therefore confirm or exclude a term of the +fitted size at about $9\sigma$ whether or not the 2007 source is 2016 TA56. Table~S3 of the +supplementary material gives daily positions of both orbits from 2030 June to November +with their $1\sigma$ ellipses. Deep imaging at the same apparition, with the object $1.0$ +to $1.6$\,au from the Sun, could detect the coma implied by the acceleration, as +large-aperture imaging did for 1998 SH2 \citep{Farnocchia2026}. + +\begin{table}[t] +\centering\small +\caption{The orbit with $A_2$ and the gravity-only orbit fitted without 2007 at the 2030 +apparition, seen from the geocentre: their separation, the $1\sigma$ uncertainty of each +along the separation from its fit covariance, and the significance with which a single +position accurate to $0.2''$ distinguishes them, with one position per night and with +site weights.} +\label{tab:pred} +\begin{adjustbox}{max width=\textwidth} +\begin{tabular}{lrrrrrrrr} +\toprule + & \multicolumn{4}{c}{One position a night} & \multicolumn{4}{c}{Site weights} \\ +\cmidrule(lr){2-5}\cmidrule(lr){6-9} +Date & Sep.\ ($''$) & $\sigma_{A_2}$ ($''$) & $\sigma_{\rm grav}$ ($''$) & $\sigma$ & Sep.\ ($''$) & $\sigma_{A_2}$ ($''$) & $\sigma_{\rm grav}$ ($''$) & $\sigma$ \\ +\midrule +2030 July 30 & 6.55 & 1.18 & 0.71 & 4.7 & 6.72 & 0.72 & 0.49 & 7.5 \\ +2030 August 19 & 5.36 & 0.95 & 0.58 & 4.7 & 5.49 & 0.59 & 0.40 & 7.5 \\ +2030 September 8 & 3.89 & 0.68 & 0.42 & 4.7 & 4.00 & 0.42 & 0.29 & 7.3 \\ +2030 September 28 & 2.76 & 0.48 & 0.30 & 4.6 & 2.84 & 0.29 & 0.20 & 6.9 \\ +\bottomrule +\end{tabular} +\end{adjustbox} +\end{table} + +\subsection{Overview of the tests}\label{sec:summary} + +Table~\ref{tab:tests} lists the main tests of the acceleration of 2016 TA56 and the +alternative explanation each addresses. The first six measure the significance of the term +and whether measurement errors could produce it, all on the assumption that the 2007 +source is 2016 TA56; the significance of the fit does not test that assumption. The search +of the allowed positions and the census of moving sources test the identification itself, +in the 2007 images. The radiation limit concerns the cause of the measured term, and the +2030 apparition will test the result independently of the precovery. + +\begin{table}[tbp] +\centering\small\linespread{1.0}\selectfont +\caption{Tests of the transverse acceleration of 2016 TA56, the alternative each addresses +and its result.} +\label{tab:tests} +\begin{adjustbox}{max width=\textwidth} +\begin{tabular}{>{\raggedright\arraybackslash}p{0.27\textwidth}>{\raggedright\arraybackslash}p{0.29\textwidth}>{\raggedright\arraybackslash}p{0.36\textwidth}} +\toprule +Test & Alternative addressed & Result \\ +\midrule +Fit of all $102$ positions & A statistical fluctuation & $9\sigma$ with each night as one +position, $13\sigma$ under the night-level covariance, $6.5\sigma$ from the night jackknife \\ +Error shared by the 2007 positions & Correlated errors within the precovery night & $1.2''$ +needed to bring $A_2$ below $3\sigma$ \\ +2007 offset across the motion & A clock error in the precovery reports & $3.0''$ across +the motion, $15$ times the prediction uncertainty \\ +Independent measurement of the CFHT frames & An error in either report's reduction or catalogue & +The offset is in the images; both reports lie $0.10''$ rms from our track \\ +Radial term fitted with $A_2$ & A radial force mimicking a transverse one & $A_1$ +at $2\sigma$; $A_2$ unchanged \\ +Gravity-only orbit through 2007 to 2022 & A gravity-only orbit that fits the precovery & +It misses the 2025 positions by $10.5''$ \\ +Positions allowed by the later apparitions & The precovery is another object & One source +among them; nothing at the gravity-only position to $3.9$\,mag below it \\ +Census of moving sources in the 2007 frames & An unrelated object moving as predicted & +None within $5''$ per hour and $10^\circ$ of the motion; $8\times10^{-6}$ expected within +$30''$ \\ +NEOWISE diameter and the radiation limit & Thermal recoil or radiation pressure & $15$ to +$39$ times the limit; significant drifts have a median of $0.075$ of it \\ +The 2030 apparition & All of the above & One position gives +$\sigma(A_2)=0.39\times10^{-12}$\,au\,d$^{-2}$ without the precovery \\ +\bottomrule +\end{tabular} +\end{adjustbox} +\end{table} + +\subsection{1998 SH2 and 2006 VC}\label{sec:others} + +Applying the same fits and thermal model to the two further objects identified by the +screen at $2000$\,kg\,m$^{-3}$ and albedo $0.14$ (Table~\ref{tab:others}) confirms an +acceleration for one of them but not for the other. + +(875163) 1998 SH2 ($a=2.74$\,au, $e=0.71$, $q=0.79$\,au, $i=2.4^\circ$, $T_J=2.91$) has +$404$ positions in three apparitions: $48$ at its discovery in 1998 September, $104$ from +2016 February to October and $252$ from 2025 August to October. With site weights, the fit +with $A_2$ retains $379$ positions at an rms of $0.30''$ and gives +$A_2=(-6.11\pm0.24)\times10^{-13}$\,au\,d$^{-2}$; with one position per night it gives +$(-6.45\pm0.54)\times10^{-13}$, a $12\sigma$ detection, and with a radial term ($0.4\sigma$) +included it gives $(-6.18\pm0.30)\times10^{-13}$, compared with JPL's +$(-6.96\pm0.49)\times10^{-13}$. The gravity-only fit retains $354$ positions at +$\chi^2$/dof $0.90$, against $0.67$ with $A_2$. As for 2016 TA56, the earliest apparition +deviates most from a gravity-only orbit: the gravity-only orbit fitted to 2016 and 2025, +which predicts the 1998 September positions to $0.52''$ along and $0.21''$ across the +apparent motion, is offset from the discovery positions by $13.0''$ along and $5.3''$ +across the motion, and a timing error cannot produce the cross-track offset. Fits omitting +one apparition give $A_2=-4.3\pm1.2$, $-1.8\pm0.6$ and +$-1.9\pm2.1\times10^{-12}$\,au\,d$^{-2}$, all of the same sign but two of them $2$ to +$3\sigma$ larger than the full-arc value, so the magnitude of the term is less certain +than its formal uncertainty. NEOWISE detected the object six times in W2 at $1.14$\,au +from the Sun and phase angles of $58$ to $59^\circ$: at $\eta=1.4$ the fit gives +$D=0.64$\,km and $p_V=0.019$, and $\eta$ from $0.9$ to $1.9$ gives $0.39$ to $0.93$\,km +and $0.051$ to $0.009$; the NEOWISE catalogue gives $0.38\pm0.06$\,km and +$0.058\pm0.024$ \citep{Masiero2017}, matching our fit at $\eta=0.9$. The acceleration is +then $0.7$ to $1.7$ times the radiation limit at $1000$\,kg\,m$^{-3}$ across this range, +and $0.7$ times at the catalogue diameter. It lies within the limit for the smaller sizes, +but only if more than half of the re-emitted momentum were directed along track, whereas +the thermal lag of the Yarkovsky effect directs at most about a +tenth \citep{Vokrouhlicky2015}. A dark body of $0.4$ to $0.9$\,km on a Jupiter-family +orbit, with an acceleration that radiation forces cannot plausibly produce, matches the +outer dark comets; at the catalogue diameter and $1000$\,kg\,m$^{-3}$ the minimum +outgassing rate is $8\times10^{-4}$\,kg\,s$^{-1}$ of water at $1$\,au. \citet{Farnocchia2026} showed that it is a comet: they found these perturbations in +its 1998--2025 astrometry and, in large-aperture images taken during its 2025 August +close approach, a weak tail of low surface brightness not seen in archival images. The +screen, with the generic thresholds of Section~\ref{sec:method}, and the orbit analysis +applied to 2016 TA56 therefore recover an independently confirmed, weakly active comet +from its acceleration alone; relative to the radiation limit at the same beaming +parameter, the acceleration of 2016 TA56 is twenty times larger. The recovery is +retrospective, since the activity of 1998 SH2 was reported before the screen was run, so +it shows that the screen is sensitive to weakly active comets but is not a blind +prediction, and it does not by itself establish that 2016 TA56 is one. + +(428209) 2006 VC ($a=1.94$\,au, $e=0.49$, $q=0.99$\,au, $T_J=3.72$), not detected by +NEOWISE, has $216$ positions in four apparitions from 2006 to 2026. The fit with $A_2$ +gives $(+5.5\pm0.9)\times10^{-13}$\,au\,d$^{-2}$, and $(+6.7\pm1.5)\times10^{-13}$ with one +position per night, but the gravity-only fit is equally good ($\chi^2$/dof $0.96$ against +$0.95$, with two fewer positions retained), and omitting the apparition of 2025 October to +2026 May gives $(+5.7\pm8.7)\times10^{-13}$. The term therefore comes from that apparition +alone, and the present arc does not require an acceleration. The two orbits diverge from +2033 September, by up to $25''$ in 2034 February at $V=19.8$. + +\begin{table}[t] +\centering\small +\caption{Orbit fits of 1998 SH2 and 2006 VC to the MPC positions, as in +Table~\ref{tab:fits}.} +\label{tab:others} +\begin{adjustbox}{max width=\textwidth} +\begin{tabular}{llrrrl} +\toprule +Object & Fit & Positions & Kept & $\chi^2$/dof & $A_2$ ($10^{-13}$\,au\,d$^{-2}$) \\ +\midrule +1998 SH2 & with $A_2$, site weights & 404 & 379 & 504.4/751 & $-6.11\pm0.24$ \\ + & with $A_2$, one position a night & 404 & 401 & 130.7/795 & $-6.45\pm0.54$ \\ + & with $A_1$ and $A_2$ & 404 & 379 & 504.3/750 & $-6.18\pm0.30$ \\ + & gravity only & 404 & 354 & 634.8/702 & --- \\ + & without 1998 September & 356 & 342 & 442.4/677 & $-42.7\pm12.3$ \\ + & without 2016 & 300 & 284 & 328.3/561 & $-18.0\pm5.7$ \\ + & without 2025 & 152 & 135 & 210.4/263 & $-19.0\pm21.1$ \\ +2006 VC & with $A_2$, site weights & 216 & 185 & 345.0/363 & $+5.54\pm0.94$ \\ + & with $A_2$, one position a night & 216 & 213 & 143.2/419 & $+6.66\pm1.47$ \\ + & gravity only & 216 & 183 & 343.9/360 & --- \\ + & without 2025--2026 & 193 & 163 & 316.6/319 & $+5.65\pm8.65$ \\ +\bottomrule +\end{tabular} +\end{adjustbox} +\end{table} + +% ============================================================================= +\section{Relation to previous work}\label{sec:related} +% ============================================================================= + +\citet{Farnocchia2013} established the systematic detection of +Yarkovsky drifts in near-Earth asteroid astrometry and the comparison of these drifts with +the radiation force. \citet{Seligman2023} identified the first dark comets +among bodies whose accelerations exceed that force, and their later +sample \citep{Seligman2024} separated the inner and outer populations. \citet{Taylor2024a} traced the dynamical origins of the dark comets and proposed an +evolutionary track through rotational fragmentation, and \citet{Taylor2024b} +examined how strong non-gravitational accelerations affect the linking of observations. +\citet{Farnocchia2026} attributed the non-gravitational perturbations of +1998 SH2 to cometary activity by imaging its weak tail, suggested that more near-Earth +objects classified as asteroids could be comets with undetected outgassing, and called +for systematic searches; the screen presented here is such a search over every +transverse term in JPL's database. We are not aware of any earlier report of a +non-gravitational acceleration of 2016 TA56 beyond JPL's orbit solution. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +Among the transverse accelerations in JPL's database, that of 2016 TA56 exceeds the +radiation limit by a factor that no plausible density or albedo removes, while the +significant drifts of the database have a median efficiency of $0.075$. The object is on a +Jupiter-family orbit like those of the outer dark comets and has not previously been +listed among them. Its acceleration is measured conditionally on the 2007 precovery. With +that night the fit gives $9\sigma$ when each night counts as one position and $13\sigma$ +under a night-level covariance estimated from the residuals; the uncertainty from refits +that each omit one later night corresponds to $6.5\sigma$; and the twelve precovery +positions would have to share an error of $1.2''$ to bring the term below $3\sigma$. +Without that night the later apparitions do not measure it. The 2007 images identify the +precovery source with 2016 TA56: among all positions that orbits fitted to the later +apparitions allow, it is the only source, nothing lies at the gravity-only position to +$3.9$\,mag below it, and no other moving source in the frames shares its motion. NEOWISE +indicates a dark body about $2.4$\,km across, similar to the dark comet 2005 UY6. All +drifts with known spin poles have the sign expected from the spin. The same screen and +orbit analysis recover, retrospectively, the weakly active comet 1998 SH2 from an +acceleration $0.7$ to $1.7$ times the radiation limit at $1000$\,kg\,m$^{-3}$; over the +same range of beaming parameters the acceleration of 2016 TA56 is $15$ to $39$ times the +limit. The orbit fit measures a transverse term and the thermal fit shows that radiation +forces cannot produce it, but no coma has been reported, and outgassing is an inference +from the size of the term; 2016 TA56 is a candidate dark comet, not a confirmed comet. The +2030 apparition tests the result independently of the precovery: the two orbits then +diverge by $4$ to $7''$ at $V\approx20$ to $21$, a single position accurate to $0.2''$ +would measure $A_2$ to $\pm0.4\times10^{-12}$\,au\,d$^{-2}$ without the 2007 night, and +deep imaging could detect the faint coma that outgassing at this rate implies. For the +third object, 2006 VC, the term depends on its latest apparition alone. The screen covers +only the $611$ asteroids for which JPL has fitted a transverse term, $609$ of the +$42{,}772$ known near-Earth asteroids among them; it finds candidates among measured +accelerations and does not measure the abundance of dark comets. + +\section*{Acknowledgements} + +This work uses observations from the Minor Planet Center; orbit solutions and ephemerides +from JPL's Solar System Dynamics group through the Small-Body Database and Horizons; the +NEOWISE single-exposure source table from the NASA/IPAC Infrared Science Archive; the +DAMIT database; and the software ASSIST, REBOUND, astropy, NumPy and SciPy. + +\section*{Data availability} + +The analysis software and the derived results are available at +\begin{center} +\href{https://github.com/CharlesCNorton/seti-tools/tree/main/papers/dark_comet}{\nolinkurl{https://github.com/CharlesCNorton/seti-tools}} +\end{center} +\noindent in the directory \texttt{papers/dark\_comet}, where a README lists each data file +behind the tables and figures and the command that produces it. Tables S1 to S3 are in the supplementary material. The observations, +orbit solutions, NEOWISE detections, CFHT images and spin models are publicly available +from the archives cited in the text. + +\begin{thebibliography}{99} +\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi + +\bibitem[{Astropy Collaboration et~al.(2022)}]{Astropy2022} +Astropy Collaboration, Price-Whelan, A.M., Lim, P.L., et al., 2022. The Astropy Project: +sustaining and growing a community-oriented open-source project and the latest major release +(v5.0) of the core package. Astrophys. J. 935, 167. \href{https://doi.org/10.3847/1538-4357/ac7c74}{doi:\nolinkurl{10.3847/1538-4357/ac7c74}} + +\bibitem[{Berthier et~al.(2006)}]{Berthier2006} +Berthier, J., Vachier, F., Thuillot, W., et al., 2006. SkyBoT, a new VO service to identify +Solar System objects. In: Gabriel, C., Arviset, C., Ponz, D., Solano, E. (Eds.), Astronomical +Data Analysis Software and Systems XV. ASP Conf. Ser. 351, 367. + +\bibitem[{Bowell et~al.(1989)}]{Bowell1989} +Bowell, E., Hapke, B., Domingue, D., Lumme, K., Peltoniemi, J., Harris, A.W., 1989. +Application of photometric models to asteroids. In: Binzel, R.P., Gehrels, T., Matthews, +M.S. (Eds.), Asteroids II. Univ. of Arizona Press, Tucson, pp. 524--556. + +\bibitem[{{\v{D}}urech et~al.(2010)}]{Durech2010} +{\v{D}}urech, J., Sidorin, V., Kaasalainen, M., 2010. DAMIT: a database of asteroid models. +Astron. Astrophys. 513, A46. \href{https://doi.org/10.1051/0004-6361/200912693}{doi:\nolinkurl{10.1051/0004-6361/200912693}} + +\bibitem[{Farnocchia et~al.(2013)}]{Farnocchia2013} +Farnocchia, D., Chesley, S.R., Vokrouhlick{\'y}, D., Milani, A., Spoto, F., Bottke, W.F., +2013. Near Earth Asteroids with measurable Yarkovsky effect. Icarus 224, 1--13. +\href{https://doi.org/10.1016/j.icarus.2013.02.004}{doi:\nolinkurl{10.1016/j.icarus.2013.02.004}} + +\bibitem[{Farnocchia et~al.(2026)}]{Farnocchia2026} +Farnocchia, D., Hainaut, O.R., Seligman, D.Z., et al., 2026. Non-gravitational acceleration +indicative of cometary activity of near-Earth object. Nat. Astron. 10, 1283--1291. +\href{https://doi.org/10.1038/s41550-026-02913-7}{doi:\nolinkurl{10.1038/s41550-026-02913-7}} + +\bibitem[{Harris(1998)}]{Harris1998} +Harris, A.W., 1998. A thermal model for near-Earth asteroids. Icarus 131, 291--301. +\href{https://doi.org/10.1006/icar.1997.5865}{doi:\nolinkurl{10.1006/icar.1997.5865}} + +\bibitem[{Holman et~al.(2023)}]{Holman2023} +Holman, M.J., Akmal, A., Farnocchia, D., et al., 2023. ASSIST: an ephemeris-quality +test-particle integrator. Planet. Sci. J. 4, 69. \href{https://doi.org/10.3847/PSJ/acc9a9}{doi:\nolinkurl{10.3847/PSJ/acc9a9}} + +\bibitem[{Mainzer et~al.(2011)}]{Mainzer2011} +Mainzer, A., Grav, T., Masiero, J., et al., 2011. Thermal model calibration for minor planets +observed with Wide-field Infrared Survey Explorer/NEOWISE. Astrophys. J. 736, 100. +\href{https://doi.org/10.1088/0004-637X/736/2/100}{doi:\nolinkurl{10.1088/0004-637X/736/2/100}} + +\bibitem[{Mainzer et~al.(2014)}]{Mainzer2014} +Mainzer, A., Bauer, J., Cutri, R.M., et al., 2014. Initial performance of the NEOWISE +reactivation mission. Astrophys. J. 792, 30. \href{https://doi.org/10.1088/0004-637X/792/1/30}{doi:\nolinkurl{10.1088/0004-637X/792/1/30}} + +\bibitem[{Marsden et~al.(1973)}]{Marsden1973} +Marsden, B.G., Sekanina, Z., Yeomans, D.K., 1973. Comets and nongravitational forces. V. +Astron. J. 78, 211. \href{https://doi.org/10.1086/111402}{doi:\nolinkurl{10.1086/111402}} + +\bibitem[{Masiero et~al.(2017)}]{Masiero2017} +Masiero, J.R., Nugent, C., Mainzer, A.K., et al., 2017. NEOWISE reactivation mission year +three: asteroid diameters and albedos. Astron. J. 154, 168. +\href{https://doi.org/10.3847/1538-3881/aa89ec}{doi:\nolinkurl{10.3847/1538-3881/aa89ec}} + +\bibitem[{Park et~al.(2021)}]{Park2021} +Park, R.S., Folkner, W.M., Williams, J.G., Boggs, D.H., 2021. The JPL planetary and lunar +ephemerides DE440 and DE441. Astron. J. 161, 105. \href{https://doi.org/10.3847/1538-3881/abd414}{doi:\nolinkurl{10.3847/1538-3881/abd414}} + +\bibitem[{Rein and Liu(2012)}]{Rein2012} +Rein, H., Liu, S.-F., 2012. REBOUND: an open-source multi-purpose N-body code for +collisional dynamics. Astron. Astrophys. 537, A128. \href{https://doi.org/10.1051/0004-6361/201118085}{doi:\nolinkurl{10.1051/0004-6361/201118085}} + +\bibitem[{Rein and Spiegel(2015)}]{Rein2015} +Rein, H., Spiegel, D.S., 2015. IAS15: a fast, adaptive, high-order integrator for +gravitational dynamics, accurate to machine precision over a billion orbits. Mon. Not. R. +Astron. Soc. 446, 1424--1437. \href{https://doi.org/10.1093/mnras/stu2164}{doi:\nolinkurl{10.1093/mnras/stu2164}} + +\bibitem[{Seligman et~al.(2023)}]{Seligman2023} +Seligman, D.Z., Farnocchia, D., Micheli, M., et al., 2023. Dark comets? Unexpectedly large +nongravitational accelerations on a sample of small asteroids. Planet. Sci. J. 4, 35. +\href{https://doi.org/10.3847/PSJ/acb697}{doi:\nolinkurl{10.3847/PSJ/acb697}} + +\bibitem[{Seligman et~al.(2024)}]{Seligman2024} +Seligman, D.Z., Farnocchia, D., Micheli, M., et al., 2024. Two distinct populations of dark +comets delineated by orbits and sizes. Proc. Natl. Acad. Sci. U.S.A. 121, e2406424121. +\href{https://doi.org/10.1073/pnas.2406424121}{doi:\nolinkurl{10.1073/pnas.2406424121}} + +\bibitem[{Taylor et~al.(2024{\natexlab{a}})}]{Taylor2024a} +Taylor, A.G., Steckloff, J.K., Seligman, D.Z., et al., 2024a. The dynamical origins of the dark +comets and a proposed evolutionary track. Icarus 420, 116207. +\href{https://doi.org/10.1016/j.icarus.2024.116207}{doi:\nolinkurl{10.1016/j.icarus.2024.116207}} + +\bibitem[{Taylor et~al.(2024{\natexlab{b}})}]{Taylor2024b} +Taylor, A.G., Seligman, D.Z., Holman, M.J., et al., 2024b. Strong nongravitational +accelerations and the potential for misidentification of near-Earth objects. Astrophys. J. +976, 190. \href{https://doi.org/10.3847/1538-4357/ad85e3}{doi:\nolinkurl{10.3847/1538-4357/ad85e3}} + +\bibitem[{Vere{\v{s}} et~al.(2017)}]{Veres2017} +Vere{\v{s}}, P., Farnocchia, D., Chesley, S.R., Chamberlin, A.B., 2017. Statistical analysis +of astrometric errors for the most productive asteroid surveys. Icarus 296, 139--149. +\href{https://doi.org/10.1016/j.icarus.2017.05.021}{doi:\nolinkurl{10.1016/j.icarus.2017.05.021}} + +\bibitem[{Vokrouhlick{\'y} et~al.(2015)}]{Vokrouhlicky2015} +Vokrouhlick{\'y}, D., Bottke, W.F., Chesley, S.R., Scheeres, D.J., Statler, T.S., 2015. The +Yarkovsky and YORP effects. In: Michel, P., DeMeo, F.E., Bottke, W.F. (Eds.), Asteroids IV. +Univ. of Arizona Press, Tucson, pp. 509--531. +\href{https://doi.org/10.2458/azu_uapress_9780816532131-ch027}{doi:\nolinkurl{10.2458/azu_uapress_9780816532131-ch027}} + +\bibitem[{Wright et~al.(2010)}]{Wright2010} +Wright, E.L., Eisenhardt, P.R.M., Mainzer, A.K., et al., 2010. The Wide-field Infrared Survey +Explorer (WISE): mission description and initial on-orbit performance. Astron. J. 140, +1868--1881. \href{https://doi.org/10.1088/0004-6256/140/6/1868}{doi:\nolinkurl{10.1088/0004-6256/140/6/1868}} + +\end{thebibliography} + +\end{document} diff --git a/papers/dark_comet/data/2016_TA56/blockcov.json b/papers/dark_comet/data/2016_TA56/blockcov.json new file mode 100644 index 0000000000000000000000000000000000000000..3cb19359da8d71356930b75f8a67c6bfc50b0153 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/blockcov.json @@ -0,0 +1,498 @@ +{ + "desig": "2016 TA56", + "n_kept": 97, + "n_nights": 28, + "s_hat": 0.6799999999999999, + "tau_hat": 0.17, + "tau_95": [ + 0.11, + 0.23 + ], + "site_fit": { + "A2": -3.535611872094858e-12, + "A2_sigma": 1.7404439502954455e-13 + }, + "profile_tau": [ + { + "tau": 0.0, + "loglik": 11.390691768428653 + }, + { + "tau": 0.01, + "loglik": 11.518055548411425 + }, + { + "tau": 0.02, + "loglik": 11.881066051609452 + }, + { + "tau": 0.03, + "loglik": 12.429181318884929 + }, + { + "tau": 0.04, + "loglik": 13.175878989475152 + }, + { + "tau": 0.05, + "loglik": 14.003907500844932 + }, + { + "tau": 0.06, + "loglik": 14.920557129473366 + }, + { + "tau": 0.07, + "loglik": 15.810909108226994 + }, + { + "tau": 0.08, + "loglik": 16.721563448887792 + }, + { + "tau": 0.09, + "loglik": 17.52067820242081 + }, + { + "tau": 0.1, + "loglik": 18.293850893136238 + }, + { + "tau": 0.11, + "loglik": 18.92542976969729 + }, + { + "tau": 0.12, + "loglik": 19.476597912431245 + }, + { + "tau": 0.13, + "loglik": 19.91512661669512 + }, + { + "tau": 0.14, + "loglik": 20.220888796319713 + }, + { + "tau": 0.15, + "loglik": 20.435592940785767 + }, + { + "tau": 0.16, + "loglik": 20.563002762745924 + }, + { + "tau": 0.17, + "loglik": 20.582789706042718 + }, + { + "tau": 0.18, + "loglik": 20.50616223357315 + }, + { + "tau": 0.19, + "loglik": 20.343507099913793 + }, + { + "tau": 0.2, + "loglik": 20.104359218405264 + }, + { + "tau": 0.21, + "loglik": 19.80713796413795 + }, + { + "tau": 0.22, + "loglik": 19.461385202470012 + }, + { + "tau": 0.23, + "loglik": 19.059268090897163 + }, + { + "tau": 0.24, + "loglik": 18.60771964562356 + }, + { + "tau": 0.25, + "loglik": 18.112954523110602 + }, + { + "tau": 0.26, + "loglik": 17.580533919018478 + }, + { + "tau": 0.27, + "loglik": 17.015427354596724 + }, + { + "tau": 0.28, + "loglik": 16.42207051219306 + }, + { + "tau": 0.29, + "loglik": 15.804418731376543 + }, + { + "tau": 0.3, + "loglik": 15.165996063731441 + }, + { + "tau": 0.31, + "loglik": 14.50993996392259 + }, + { + "tau": 0.32, + "loglik": 13.839041803690904 + }, + { + "tau": 0.33, + "loglik": 13.155783457961235 + }, + { + "tau": 0.34, + "loglik": 12.462370244046042 + }, + { + "tau": 0.35000000000000003, + "loglik": 11.760760506552487 + }, + { + "tau": 0.36, + "loglik": 11.052692139134649 + }, + { + "tau": 0.37, + "loglik": 10.339706324470214 + }, + { + "tau": 0.38, + "loglik": 9.623168759043125 + }, + { + "tau": 0.39, + "loglik": 8.904288611701332 + }, + { + "tau": 0.4, + "loglik": 8.184135446031064 + }, + { + "tau": 0.41000000000000003, + "loglik": 7.463654317368238 + }, + { + "tau": 0.42, + "loglik": 6.7436792364071465 + }, + { + "tau": 0.43, + "loglik": 6.024945173308126 + }, + { + "tau": 0.44, + "loglik": 5.308098759194692 + }, + { + "tau": 0.45, + "loglik": 4.593707826116159 + }, + { + "tau": 0.46, + "loglik": 3.8822699119856736 + }, + { + "tau": 0.47000000000000003, + "loglik": 3.1742198436913753 + }, + { + "tau": 0.48, + "loglik": 2.469936499488881 + }, + { + "tau": 0.49, + "loglik": 1.7697488408504967 + }, + { + "tau": 0.5, + "loglik": 1.073941294105424 + }, + { + "tau": 0.51, + "loglik": 0.38275855337283815 + }, + { + "tau": 0.52, + "loglik": -0.3035901316158629 + }, + { + "tau": 0.53, + "loglik": -0.9849271262720976 + }, + { + "tau": 0.54, + "loglik": -1.6611029902406216 + }, + { + "tau": 0.55, + "loglik": -2.3319934201921058 + }, + { + "tau": 0.56, + "loglik": -2.997496516664029 + }, + { + "tau": 0.5700000000000001, + "loglik": -3.657530339726634 + }, + { + "tau": 0.58, + "loglik": -4.312030722177781 + }, + { + "tau": 0.59, + "loglik": -4.960949312462134 + }, + { + "tau": 0.6, + "loglik": -5.604251822599139 + }, + { + "tau": 0.61, + "loglik": -6.241916459150858 + }, + { + "tau": 0.62, + "loglik": -6.873932517690548 + }, + { + "tau": 0.63, + "loglik": -7.500299123390818 + }, + { + "tau": 0.64, + "loglik": -8.12102410225971 + }, + { + "tau": 0.65, + "loglik": -8.736122969252662 + }, + { + "tau": 0.66, + "loglik": -9.345618020987999 + }, + { + "tau": 0.67, + "loglik": -9.949537522131081 + }, + { + "tau": 0.68, + "loglik": -10.547914975694724 + }, + { + "tau": 0.6900000000000001, + "loglik": -11.140788468556508 + }, + { + "tau": 0.7000000000000001, + "loglik": -11.728200084425808 + }, + { + "tau": 0.71, + "loglik": -12.31019537732439 + }, + { + "tau": 0.72, + "loglik": -12.886822899383162 + }, + { + "tau": 0.73, + "loglik": -13.45813377741068 + }, + { + "tau": 0.74, + "loglik": -14.024181333276871 + }, + { + "tau": 0.75, + "loglik": -14.585020743673155 + }, + { + "tau": 0.76, + "loglik": -15.140708735272412 + }, + { + "tau": 0.77, + "loglik": -15.69130331173001 + }, + { + "tau": 0.78, + "loglik": -16.236863509327932 + }, + { + "tau": 0.79, + "loglik": -16.77744917839931 + }, + { + "tau": 0.8, + "loglik": -17.313120787961367 + }, + { + "tau": 0.81, + "loglik": -17.843939251245885 + }, + { + "tau": 0.8200000000000001, + "loglik": -18.369965770053227 + }, + { + "tau": 0.8300000000000001, + "loglik": -18.891261696063808 + }, + { + "tau": 0.84, + "loglik": -19.40788840742833 + }, + { + "tau": 0.85, + "loglik": -19.919907199128588 + }, + { + "tau": 0.86, + "loglik": -20.42737918574727 + }, + { + "tau": 0.87, + "loglik": -20.9303652154248 + }, + { + "tau": 0.88, + "loglik": -21.428925793897022 + }, + { + "tau": 0.89, + "loglik": -21.92312101762208 + }, + { + "tau": 0.9, + "loglik": -22.41301051509771 + }, + { + "tau": 0.91, + "loglik": -22.898653395559876 + }, + { + "tau": 0.92, + "loglik": -23.380108204333283 + }, + { + "tau": 0.93, + "loglik": -23.85743288417295 + }, + { + "tau": 0.9400000000000001, + "loglik": -24.33068474200273 + }, + { + "tau": 0.9500000000000001, + "loglik": -24.79992042051191 + }, + { + "tau": 0.96, + "loglik": -25.265195874122966 + }, + { + "tau": 0.97, + "loglik": -25.726566348892277 + }, + { + "tau": 0.98, + "loglik": -26.18408636594627 + }, + { + "tau": 0.99, + "loglik": -26.637809708091325 + }, + { + "tau": 1.0, + "loglik": -27.08778940927556 + } + ], + "at_estimate": { + "A2": -3.852677868965912e-12, + "A2_sigma": 2.959248440100212e-13 + }, + "at_upper_tau": { + "s": 0.6599999999999999, + "A2": -3.876049412069213e-12, + "A2_sigma": 3.743282020439794e-13 + }, + "without_decisive": { + "A2": -1.0679695631840284e-12, + "A2_sigma": 3.870367270301778e-12 + }, + "decisive_shared_error": [ + { + "extra": 0.0, + "A2": -3.852676400204405e-12, + "A2_sigma": 2.9592504388128463e-13, + "z": 13.019095476589579 + }, + { + "extra": 0.1, + "A2": -3.8597730152294015e-12, + "A2_sigma": 3.1674407309523756e-13, + "z": 12.18577818208727 + }, + { + "extra": 0.2, + "A2": -3.867413442606575e-12, + "A2_sigma": 3.6923570333209585e-13, + "z": 10.474104772929199 + }, + { + "extra": 0.3, + "A2": -3.865897849930391e-12, + "A2_sigma": 4.4017640241254096e-13, + "z": 8.782610400607537 + }, + { + "extra": 0.5, + "A2": -3.840454113023464e-12, + "A2_sigma": 6.093905939407947e-13, + "z": 6.302122400984389 + }, + { + "extra": 0.75, + "A2": -3.78054432883435e-12, + "A2_sigma": 8.392942869566865e-13, + "z": 4.504432339868236 + }, + { + "extra": 1.0, + "A2": -3.697810798614704e-12, + "A2_sigma": 1.0702700381825953e-12, + "z": 3.455025990350888 + }, + { + "extra": 1.5, + "A2": -3.4849563815646815e-12, + "A2_sigma": 1.5057627354404697e-12, + "z": 2.3144126890251755 + }, + { + "extra": 2.0, + "A2": -3.238220678483074e-12, + "A2_sigma": 1.887664761294711e-12, + "z": 1.7154638603636614 + }, + { + "extra": 3.0, + "A2": -2.7474067657601745e-12, + "A2_sigma": 2.4775571421326333e-12, + "z": 1.1089176185035474 + } + ], + "shared_error_for_5_sigma": 0.6810827168082474, + "shared_error_for_3_sigma": 1.1994654936173461 +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/census_20070914.json b/papers/dark_comet/data/2016_TA56/census_20070914.json new file mode 100644 index 0000000000000000000000000000000000000000..d2927bd6e1f26125351565bf4a62623745acb042 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/census_20070914.json @@ -0,0 +1,23864 @@ +{ + "desig": "2016 TA56", + "night": "2007-09-14", + "t_ref_mjd": 54357.493131185256, + "frames": [ + { + "image": "942299p", + "mjd_mid": 54357.45222092014, + "exptime": 420.055, + "band": "r", + "n_ext": 37, + "t_mid": -0.9818463628180325 + }, + { + "image": "942300p", + "mjd_mid": 54357.457641232635, + "exptime": 420.045, + "band": "r", + "n_ext": 37, + "t_mid": -0.8517588629038073 + }, + { + "image": "942301p", + "mjd_mid": 54357.46306410301, + "exptime": 420.057, + "band": "r", + "n_ext": 37, + "t_mid": -0.7216099739307538 + }, + { + "image": "942302p", + "mjd_mid": 54357.46854417246, + "exptime": 420.073, + "band": "r", + "n_ext": 37, + "t_mid": -0.5900883071590215 + }, + { + "image": "942303p", + "mjd_mid": 54357.473962766206, + "exptime": 420.066, + "band": "r", + "n_ext": 37, + "t_mid": -0.4600420572096482 + }, + { + "image": "942304p", + "mjd_mid": 54357.4793809375, + "exptime": 420.066, + "band": "r", + "n_ext": 37, + "t_mid": -0.33000594621989876 + }, + { + "image": "942305p", + "mjd_mid": 54357.48480532986, + "exptime": 420.061, + "band": "r", + "n_ext": 37, + "t_mid": -0.1998205294366926 + }, + { + "image": "942306p", + "mjd_mid": 54357.490224068286, + "exptime": 420.059, + "band": "r", + "n_ext": 37, + "t_mid": -0.06977080728393048 + }, + { + "image": "942307p", + "mjd_mid": 54357.50091793981, + "exptime": 300.08, + "band": "g", + "n_ext": 37, + "t_mid": 0.18688210932305083 + }, + { + "image": "942308p", + "mjd_mid": 54357.50494702546, + "exptime": 300.046, + "band": "g", + "n_ext": 37, + "t_mid": 0.28358016489073634 + }, + { + "image": "942309p", + "mjd_mid": 54357.50897633102, + "exptime": 300.05, + "band": "g", + "n_ext": 37, + "t_mid": 0.3802834982634522 + }, + { + "image": "942310p", + "mjd_mid": 54357.51300678241, + "exptime": 300.052, + "band": "g", + "n_ext": 37, + "t_mid": 0.477014331612736 + }, + { + "image": "942311p", + "mjd_mid": 54357.517036018515, + "exptime": 300.044, + "band": "g", + "n_ext": 37, + "t_mid": 0.5737159982090816 + }, + { + "image": "942312p", + "mjd_mid": 54357.52106410301, + "exptime": 300.037, + "band": "g", + "n_ext": 37, + "t_mid": 0.670390026178211 + }, + { + "image": "942313p", + "mjd_mid": 54357.52509408565, + "exptime": 300.038, + "band": "g", + "n_ext": 37, + "t_mid": 0.7671096094418317 + }, + { + "image": "942314p", + "mjd_mid": 54357.52921314815, + "exptime": 300.052, + "band": "g", + "n_ext": 37, + "t_mid": 0.8659671093919314 + } + ], + "n_ccd": 576, + "n_registered": 533, + "wcs_rms_median": 0.03757739354986944, + "fwhm_median": 0.8878756477027765, + "object_motion": { + "rate": 34.92274726791022, + "pa": 209.47359379807193 + }, + "object_mag": { + "r": 22.817481994628906, + "g": 22.264835357666016 + }, + "object_frames": { + "r": [ + { + "image": "942300p", + "mag": 22.83786964416504, + "snr": 11.731731414794922, + "sep": 0.029450994056674444, + "zp": 32.56918844956603, + "fwhm": 0.878542748072622, + "wcs_rms": 0.039336008521335716 + }, + { + "image": "942301p", + "mag": 22.852922439575195, + "snr": 11.119121551513672, + "sep": 0.029953449791916272, + "zp": 32.55819920763285, + "fwhm": 0.9136182548109107, + "wcs_rms": 0.037973475574558116 + }, + { + "image": "942302p", + "mag": 22.46275520324707, + "snr": 21.115093231201172, + "sep": 0.03171375178899377, + "zp": 32.67351207442118, + "fwhm": 0.8792754981964023, + "wcs_rms": 0.041245951768555736 + }, + { + "image": "942303p", + "mag": 22.700428009033203, + "snr": 14.365124702453613, + "sep": 0.006129518721577993, + "zp": 32.49000978240782, + "fwhm": 0.8791065195104188, + "wcs_rms": 0.0398872965101534 + }, + { + "image": "942304p", + "mag": 22.817481994628906, + "snr": 14.339999198913574, + "sep": 0.010693110408831493, + "zp": 32.617372830224994, + "fwhm": 0.8880774976787368, + "wcs_rms": 0.03897704629075833 + }, + { + "image": "942305p", + "mag": 22.826984405517578, + "snr": 12.877114295959473, + "sep": 0.007601039479797972, + "zp": 32.615441585769865, + "fwhm": 0.8434784785108274, + "wcs_rms": 0.03569865440735549 + }, + { + "image": "942306p", + "mag": 22.743274688720703, + "snr": 13.94053840637207, + "sep": 0.008642854219756224, + "zp": 32.49733101603081, + "fwhm": 0.8880035163045289, + "wcs_rms": 0.038120520774275114 + } + ], + "g": [ + { + "image": "942307p", + "mag": 22.530315399169922, + "snr": 15.073451042175293, + "sep": 0.0334139997518497, + "zp": 31.852661627344034, + "fwhm": 0.9408085521308756, + "wcs_rms": 0.04097438368673174 + }, + { + "image": "942309p", + "mag": 21.103408813476562, + "snr": 35.92667007446289, + "sep": 0.02625556031244445, + "zp": 31.51798403013556, + "fwhm": 0.9663925678132185, + "wcs_rms": 0.04466224287251897 + }, + { + "image": "942311p", + "mag": 22.15305519104004, + "snr": 15.398538589477539, + "sep": 0.01757970320808298, + "zp": 31.510409026908015, + "fwhm": 0.9582141644327227, + "wcs_rms": 0.04884298442941878 + }, + { + "image": "942312p", + "mag": 22.432920455932617, + "snr": 17.572124481201172, + "sep": 0.03666893375440645, + "zp": 31.799662890698023, + "fwhm": 0.8264303376980119, + "wcs_rms": 0.04014747025826497 + }, + { + "image": "942313p", + "mag": 22.264835357666016, + "snr": 16.482084274291992, + "sep": 0.03142597174774386, + "zp": 31.643138345595567, + "fwhm": 0.9143603407019396, + "wcs_rms": 0.041977135226929925 + } + ] + }, + "threshold": 5.0, + "filter_A": { + "n_catalogued": 2652387, + "n_above": 1722930, + "n_static": 1280568, + "n_transient": 361116, + "n_tracks": 205, + "n_rejected": 73, + "n_shuffled_times": 0 + }, + "filter_B": { + "n_catalogued": 1454758, + "n_above": 965267, + "n_static": 659297, + "n_transient": 249743, + "n_tracks": 206, + "n_rejected": 9, + "n_shuffled_times": 0 + }, + "injection": { + "n": 300, + "n_covered": 298, + "recovered": 170, + "by_dm": [ + { + "dm": [ + -0.5, + 0.0 + ], + "n": 55, + "recovered": 51 + }, + { + "dm": [ + 0.0, + 0.5 + ], + "n": 60, + "recovered": 58 + }, + { + "dm": [ + 0.5, + 1.0 + ], + "n": 67, + "recovered": 48 + }, + { + "dm": [ + 1.0, + 1.5 + ], + "n": 67, + "recovered": 13 + }, + { + "dm": [ + 1.5, + 2.0 + ], + "n": 49, + "recovered": 0 + } + ] + }, + "object_recovered": [ + { + "n": 9, + "filter": "B", + "rate": 34.73175770532162, + "pa": 209.4582247234962, + "coverage": 15, + "support": 14 + } + ], + "chance_tracks": { + "B": 0, + "A": 0 + }, + "registered": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 0, + 6 + ], + [ + 0, + 7 + ], + [ + 0, + 8 + ], + [ + 0, + 9 + ], + [ + 0, + 10 + ], + [ + 0, + 11 + ], + [ + 0, + 12 + ], + [ + 0, + 13 + ], + [ + 0, + 14 + ], + [ + 0, + 15 + ], + [ + 0, + 16 + ], + [ + 0, + 17 + ], + [ + 0, + 18 + ], + [ + 0, + 19 + ], + [ + 0, + 20 + ], + [ + 0, + 21 + ], + [ + 0, + 22 + ], + [ + 0, + 23 + ], + [ + 0, + 24 + ], + [ + 0, + 25 + ], + [ + 0, + 26 + ], + [ + 0, + 27 + ], + [ + 0, + 29 + ], + [ + 0, + 31 + ], + [ + 0, + 32 + ], + [ + 0, + 33 + ], + [ + 0, + 34 + ], + [ + 0, + 36 + ], + [ + 1, + 2 + ], + [ + 1, + 4 + ], + [ + 1, + 5 + ], + [ + 1, + 6 + ], + [ + 1, + 7 + ], + [ + 1, + 8 + ], + [ + 1, + 9 + ], + [ + 1, + 10 + ], + [ + 1, + 11 + ], + [ + 1, + 12 + ], + [ + 1, + 13 + ], + [ + 1, + 14 + ], + [ + 1, + 15 + ], + [ + 1, + 16 + ], + [ + 1, + 17 + ], + [ + 1, + 18 + ], + [ + 1, + 19 + ], + [ + 1, + 20 + ], + [ + 1, + 21 + ], + [ + 1, + 22 + ], + [ + 1, + 23 + ], + [ + 1, + 24 + ], + [ + 1, + 25 + ], + [ + 1, + 26 + ], + [ + 1, + 27 + ], + [ + 1, + 28 + ], + [ + 1, + 29 + ], + [ + 1, + 30 + ], + [ + 1, + 31 + ], + [ + 1, + 32 + ], + [ + 1, + 33 + ], + [ + 1, + 34 + ], + [ + 1, + 35 + ], + [ + 1, + 36 + ], + [ + 2, + 2 + ], + [ + 2, + 4 + ], + [ + 2, + 5 + ], + [ + 2, + 6 + ], + [ + 2, + 7 + ], + [ + 2, + 8 + ], + [ + 2, + 10 + ], + [ + 2, + 11 + ], + [ + 2, + 12 + ], + [ + 2, + 13 + ], + [ + 2, + 14 + ], + [ + 2, + 15 + ], + [ + 2, + 16 + ], + [ + 2, + 17 + ], + [ + 2, + 18 + ], + [ + 2, + 19 + ], + [ + 2, + 20 + ], + [ + 2, + 21 + ], + [ + 2, + 22 + ], + [ + 2, + 23 + ], + [ + 2, + 24 + ], + [ + 2, + 25 + ], + [ + 2, + 26 + ], + [ + 2, + 27 + ], + [ + 2, + 28 + ], + [ + 2, + 29 + ], + [ + 2, + 31 + ], + [ + 2, + 32 + ], + [ + 2, + 33 + ], + [ + 2, + 34 + ], + [ + 2, + 36 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 3 + ], + [ + 3, + 4 + ], + [ + 3, + 5 + ], + [ + 3, + 6 + ], + [ + 3, + 7 + ], + [ + 3, + 8 + ], + [ + 3, + 9 + ], + [ + 3, + 10 + ], + [ + 3, + 11 + ], + [ + 3, + 12 + ], + [ + 3, + 13 + ], + [ + 3, + 14 + ], + [ + 3, + 15 + ], + [ + 3, + 16 + ], + [ + 3, + 17 + ], + [ + 3, + 18 + ], + [ + 3, + 19 + ], + [ + 3, + 20 + ], + [ + 3, + 21 + ], + [ + 3, + 22 + ], + [ + 3, + 23 + ], + [ + 3, + 24 + ], + [ + 3, + 25 + ], + [ + 3, + 26 + ], + [ + 3, + 27 + ], + [ + 3, + 28 + ], + [ + 3, + 29 + ], + [ + 3, + 31 + ], + [ + 3, + 32 + ], + [ + 3, + 33 + ], + [ + 3, + 34 + ], + [ + 3, + 35 + ], + [ + 3, + 36 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 4 + ], + [ + 4, + 5 + ], + [ + 4, + 6 + ], + [ + 4, + 7 + ], + [ + 4, + 8 + ], + [ + 4, + 10 + ], + [ + 4, + 11 + ], + [ + 4, + 12 + ], + [ + 4, + 13 + ], + [ + 4, + 14 + ], + [ + 4, + 15 + ], + [ + 4, + 16 + ], + [ + 4, + 17 + ], + [ + 4, + 18 + ], + [ + 4, + 19 + ], + [ + 4, + 20 + ], + [ + 4, + 21 + ], + [ + 4, + 22 + ], + [ + 4, + 23 + ], + [ + 4, + 24 + ], + [ + 4, + 25 + ], + [ + 4, + 26 + ], + [ + 4, + 27 + ], + [ + 4, + 29 + ], + [ + 4, + 30 + ], + [ + 4, + 31 + ], + [ + 4, + 32 + ], + [ + 4, + 33 + ], + [ + 4, + 34 + ], + [ + 4, + 35 + ], + [ + 4, + 36 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ], + [ + 5, + 5 + ], + [ + 5, + 7 + ], + [ + 5, + 8 + ], + [ + 5, + 9 + ], + [ + 5, + 10 + ], + [ + 5, + 11 + ], + [ + 5, + 12 + ], + [ + 5, + 13 + ], + [ + 5, + 14 + ], + [ + 5, + 15 + ], + [ + 5, + 16 + ], + [ + 5, + 17 + ], + [ + 5, + 18 + ], + [ + 5, + 19 + ], + [ + 5, + 20 + ], + [ + 5, + 21 + ], + [ + 5, + 22 + ], + [ + 5, + 23 + ], + [ + 5, + 24 + ], + [ + 5, + 25 + ], + [ + 5, + 26 + ], + [ + 5, + 27 + ], + [ + 5, + 28 + ], + [ + 5, + 29 + ], + [ + 5, + 30 + ], + [ + 5, + 31 + ], + [ + 5, + 32 + ], + [ + 5, + 33 + ], + [ + 5, + 34 + ], + [ + 5, + 35 + ], + [ + 5, + 36 + ], + [ + 6, + 2 + ], + [ + 6, + 4 + ], + [ + 6, + 5 + ], + [ + 6, + 6 + ], + [ + 6, + 7 + ], + [ + 6, + 8 + ], + [ + 6, + 10 + ], + [ + 6, + 11 + ], + [ + 6, + 12 + ], + [ + 6, + 13 + ], + [ + 6, + 14 + ], + [ + 6, + 15 + ], + [ + 6, + 16 + ], + [ + 6, + 17 + ], + [ + 6, + 18 + ], + [ + 6, + 19 + ], + [ + 6, + 20 + ], + [ + 6, + 21 + ], + [ + 6, + 22 + ], + [ + 6, + 23 + ], + [ + 6, + 24 + ], + [ + 6, + 25 + ], + [ + 6, + 26 + ], + [ + 6, + 27 + ], + [ + 6, + 28 + ], + [ + 6, + 29 + ], + [ + 6, + 30 + ], + [ + 6, + 31 + ], + [ + 6, + 32 + ], + [ + 6, + 33 + ], + [ + 6, + 34 + ], + [ + 6, + 35 + ], + [ + 6, + 36 + ], + [ + 7, + 1 + ], + [ + 7, + 2 + ], + [ + 7, + 3 + ], + [ + 7, + 4 + ], + [ + 7, + 5 + ], + [ + 7, + 6 + ], + [ + 7, + 7 + ], + [ + 7, + 8 + ], + [ + 7, + 10 + ], + [ + 7, + 11 + ], + [ + 7, + 12 + ], + [ + 7, + 13 + ], + [ + 7, + 14 + ], + [ + 7, + 15 + ], + [ + 7, + 16 + ], + [ + 7, + 17 + ], + [ + 7, + 18 + ], + [ + 7, + 19 + ], + [ + 7, + 20 + ], + [ + 7, + 21 + ], + [ + 7, + 22 + ], + [ + 7, + 23 + ], + [ + 7, + 24 + ], + [ + 7, + 25 + ], + [ + 7, + 26 + ], + [ + 7, + 27 + ], + [ + 7, + 28 + ], + [ + 7, + 29 + ], + [ + 7, + 30 + ], + [ + 7, + 31 + ], + [ + 7, + 33 + ], + [ + 7, + 34 + ], + [ + 7, + 35 + ], + [ + 7, + 36 + ], + [ + 8, + 1 + ], + [ + 8, + 2 + ], + [ + 8, + 3 + ], + [ + 8, + 4 + ], + [ + 8, + 5 + ], + [ + 8, + 6 + ], + [ + 8, + 7 + ], + [ + 8, + 8 + ], + [ + 8, + 10 + ], + [ + 8, + 11 + ], + [ + 8, + 12 + ], + [ + 8, + 13 + ], + [ + 8, + 14 + ], + [ + 8, + 15 + ], + [ + 8, + 16 + ], + [ + 8, + 17 + ], + [ + 8, + 18 + ], + [ + 8, + 19 + ], + [ + 8, + 20 + ], + [ + 8, + 21 + ], + [ + 8, + 22 + ], + [ + 8, + 23 + ], + [ + 8, + 24 + ], + [ + 8, + 25 + ], + [ + 8, + 26 + ], + [ + 8, + 27 + ], + [ + 8, + 28 + ], + [ + 8, + 29 + ], + [ + 8, + 30 + ], + [ + 8, + 31 + ], + [ + 8, + 32 + ], + [ + 8, + 33 + ], + [ + 8, + 34 + ], + [ + 9, + 1 + ], + [ + 9, + 2 + ], + [ + 9, + 4 + ], + [ + 9, + 5 + ], + [ + 9, + 6 + ], + [ + 9, + 7 + ], + [ + 9, + 8 + ], + [ + 9, + 10 + ], + [ + 9, + 11 + ], + [ + 9, + 12 + ], + [ + 9, + 13 + ], + [ + 9, + 14 + ], + [ + 9, + 15 + ], + [ + 9, + 16 + ], + [ + 9, + 17 + ], + [ + 9, + 18 + ], + [ + 9, + 19 + ], + [ + 9, + 20 + ], + [ + 9, + 21 + ], + [ + 9, + 22 + ], + [ + 9, + 23 + ], + [ + 9, + 24 + ], + [ + 9, + 25 + ], + [ + 9, + 26 + ], + [ + 9, + 27 + ], + [ + 9, + 28 + ], + [ + 9, + 29 + ], + [ + 9, + 30 + ], + [ + 9, + 31 + ], + [ + 9, + 32 + ], + [ + 9, + 33 + ], + [ + 9, + 34 + ], + [ + 9, + 36 + ], + [ + 10, + 1 + ], + [ + 10, + 2 + ], + [ + 10, + 4 + ], + [ + 10, + 5 + ], + [ + 10, + 6 + ], + [ + 10, + 7 + ], + [ + 10, + 8 + ], + [ + 10, + 10 + ], + [ + 10, + 11 + ], + [ + 10, + 12 + ], + [ + 10, + 13 + ], + [ + 10, + 14 + ], + [ + 10, + 15 + ], + [ + 10, + 16 + ], + [ + 10, + 17 + ], + [ + 10, + 18 + ], + [ + 10, + 19 + ], + [ + 10, + 20 + ], + [ + 10, + 21 + ], + [ + 10, + 22 + ], + [ + 10, + 23 + ], + [ + 10, + 24 + ], + [ + 10, + 25 + ], + [ + 10, + 26 + ], + [ + 10, + 27 + ], + [ + 10, + 29 + ], + [ + 10, + 30 + ], + [ + 10, + 31 + ], + [ + 10, + 32 + ], + [ + 10, + 33 + ], + [ + 10, + 34 + ], + [ + 10, + 35 + ], + [ + 10, + 36 + ], + [ + 11, + 1 + ], + [ + 11, + 2 + ], + [ + 11, + 3 + ], + [ + 11, + 4 + ], + [ + 11, + 5 + ], + [ + 11, + 6 + ], + [ + 11, + 7 + ], + [ + 11, + 8 + ], + [ + 11, + 9 + ], + [ + 11, + 10 + ], + [ + 11, + 11 + ], + [ + 11, + 12 + ], + [ + 11, + 13 + ], + [ + 11, + 14 + ], + [ + 11, + 15 + ], + [ + 11, + 16 + ], + [ + 11, + 17 + ], + [ + 11, + 18 + ], + [ + 11, + 19 + ], + [ + 11, + 20 + ], + [ + 11, + 21 + ], + [ + 11, + 22 + ], + [ + 11, + 23 + ], + [ + 11, + 24 + ], + [ + 11, + 25 + ], + [ + 11, + 26 + ], + [ + 11, + 27 + ], + [ + 11, + 29 + ], + [ + 11, + 30 + ], + [ + 11, + 31 + ], + [ + 11, + 32 + ], + [ + 11, + 33 + ], + [ + 11, + 34 + ], + [ + 11, + 35 + ], + [ + 11, + 36 + ], + [ + 12, + 1 + ], + [ + 12, + 2 + ], + [ + 12, + 3 + ], + [ + 12, + 4 + ], + [ + 12, + 5 + ], + [ + 12, + 6 + ], + [ + 12, + 7 + ], + [ + 12, + 8 + ], + [ + 12, + 10 + ], + [ + 12, + 11 + ], + [ + 12, + 12 + ], + [ + 12, + 13 + ], + [ + 12, + 14 + ], + [ + 12, + 15 + ], + [ + 12, + 16 + ], + [ + 12, + 17 + ], + [ + 12, + 18 + ], + [ + 12, + 19 + ], + [ + 12, + 20 + ], + [ + 12, + 21 + ], + [ + 12, + 22 + ], + [ + 12, + 23 + ], + [ + 12, + 24 + ], + [ + 12, + 25 + ], + [ + 12, + 26 + ], + [ + 12, + 27 + ], + [ + 12, + 28 + ], + [ + 12, + 30 + ], + [ + 12, + 31 + ], + [ + 12, + 32 + ], + [ + 12, + 33 + ], + [ + 12, + 34 + ], + [ + 12, + 35 + ], + [ + 12, + 36 + ], + [ + 13, + 1 + ], + [ + 13, + 2 + ], + [ + 13, + 3 + ], + [ + 13, + 4 + ], + [ + 13, + 5 + ], + [ + 13, + 6 + ], + [ + 13, + 7 + ], + [ + 13, + 8 + ], + [ + 13, + 9 + ], + [ + 13, + 10 + ], + [ + 13, + 11 + ], + [ + 13, + 12 + ], + [ + 13, + 13 + ], + [ + 13, + 14 + ], + [ + 13, + 15 + ], + [ + 13, + 16 + ], + [ + 13, + 17 + ], + [ + 13, + 18 + ], + [ + 13, + 19 + ], + [ + 13, + 20 + ], + [ + 13, + 21 + ], + [ + 13, + 22 + ], + [ + 13, + 23 + ], + [ + 13, + 24 + ], + [ + 13, + 25 + ], + [ + 13, + 26 + ], + [ + 13, + 27 + ], + [ + 13, + 28 + ], + [ + 13, + 29 + ], + [ + 13, + 30 + ], + [ + 13, + 31 + ], + [ + 13, + 32 + ], + [ + 13, + 33 + ], + [ + 13, + 35 + ], + [ + 13, + 36 + ], + [ + 14, + 2 + ], + [ + 14, + 3 + ], + [ + 14, + 4 + ], + [ + 14, + 5 + ], + [ + 14, + 6 + ], + [ + 14, + 7 + ], + [ + 14, + 8 + ], + [ + 14, + 10 + ], + [ + 14, + 11 + ], + [ + 14, + 12 + ], + [ + 14, + 13 + ], + [ + 14, + 14 + ], + [ + 14, + 15 + ], + [ + 14, + 16 + ], + [ + 14, + 17 + ], + [ + 14, + 18 + ], + [ + 14, + 19 + ], + [ + 14, + 20 + ], + [ + 14, + 21 + ], + [ + 14, + 22 + ], + [ + 14, + 23 + ], + [ + 14, + 24 + ], + [ + 14, + 25 + ], + [ + 14, + 26 + ], + [ + 14, + 27 + ], + [ + 14, + 29 + ], + [ + 14, + 31 + ], + [ + 14, + 32 + ], + [ + 14, + 33 + ], + [ + 14, + 34 + ], + [ + 14, + 35 + ], + [ + 14, + 36 + ], + [ + 15, + 2 + ], + [ + 15, + 4 + ], + [ + 15, + 5 + ], + [ + 15, + 6 + ], + [ + 15, + 7 + ], + [ + 15, + 8 + ], + [ + 15, + 10 + ], + [ + 15, + 11 + ], + [ + 15, + 12 + ], + [ + 15, + 13 + ], + [ + 15, + 14 + ], + [ + 15, + 16 + ], + [ + 15, + 17 + ], + [ + 15, + 18 + ], + [ + 15, + 19 + ], + [ + 15, + 20 + ], + [ + 15, + 21 + ], + [ + 15, + 22 + ], + [ + 15, + 23 + ], + [ + 15, + 24 + ], + [ + 15, + 25 + ], + [ + 15, + 26 + ], + [ + 15, + 27 + ], + [ + 15, + 29 + ], + [ + 15, + 30 + ], + [ + 15, + 31 + ], + [ + 15, + 32 + ], + [ + 15, + 33 + ], + [ + 15, + 35 + ], + [ + 15, + 36 + ] + ], + "movers": { + "area_deg2": 0.8638841566700763, + "n": 68, + "n_known": 21, + "n_known_skybot": 54, + "n_known_covered": 22, + "known_covered": [ + { + "name": "2016 TA56", + "V": 23.4 + }, + { + "name": "2015 KU103", + "V": 22.6 + }, + { + "name": "2003 SJ212", + "V": 20.3 + }, + { + "name": "2001 PP", + "V": 18.4 + }, + { + "name": "2014 HZ203", + "V": 22.9 + }, + { + "name": "2010 NK43", + "V": 23.2 + }, + { + "name": "2016 TA100", + "V": 21.2 + }, + { + "name": "2008 XR43", + "V": 21.1 + }, + { + "name": "2015 DD268", + "V": 22.1 + }, + { + "name": "2018 VX113", + "V": 21.6 + }, + { + "name": "2011 HV106", + "V": 21.8 + }, + { + "name": "Bellabrodbeck", + "V": 20.4 + }, + { + "name": "2014 KH36", + "V": 21.9 + }, + { + "name": "2001 QJ27", + "V": 18.6 + }, + { + "name": "2007 RZ311", + "V": 20.6 + }, + { + "name": "2009 BV186", + "V": 22.0 + }, + { + "name": "2001 FO175", + "V": 19.4 + }, + { + "name": "2015 FY337", + "V": 21.8 + }, + { + "name": "2010 JJ203", + "V": 23.3 + }, + { + "name": "2008 YD154", + "V": 21.1 + }, + { + "name": "2007 UH10", + "V": 19.6 + }, + { + "name": "2015 FL396", + "V": 23.0 + } + ], + "density_per_deg2": 78.71425754827183, + "rate_mean": 21.826942738283623, + "rate_sd": 13.494339413309554, + "pa_offset_mean": 1.8008273053377881, + "pa_offset_sd": 31.384269169946457, + "within_5_10": 0, + "within_10_20": 3, + "motion_fraction": 0.0004685555834406296, + "expected_30arcsec": 8.04640524661272e-06, + "control_discs": 3959, + "tracks": [ + { + "x": -569.7472149057622, + "y": 251.85277131151736, + "ve": -6.109136765539925, + "vn": -19.823755737733116, + "n": 16, + "rms": 0.10153693144241191, + "coverage": 16, + "support": 16, + "snr": 1570.06201171875, + "mag": 17.543675422668457, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 20.743742274945912, + "pa": 197.12786012310832, + "is_object": false, + "injected": null, + "known": { + "name": "2001 PP", + "V": 18.4 + } + }, + { + "x": 1018.1943752693376, + "y": -559.389994289301, + "ve": -8.005137532659775, + "vn": -19.926720366348356, + "n": 16, + "rms": 0.09864207391345023, + "coverage": 16, + "support": 16, + "snr": 95.09415435791016, + "mag": 20.526966094970703, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 21.474552649017873, + "pa": 201.88674919584864, + "is_object": false, + "injected": null, + "known": { + "name": "2008 XR43", + "V": 21.1 + } + }, + { + "x": 822.3072100580907, + "y": 513.2532179988626, + "ve": -12.686032364944863, + "vn": -15.405470543428526, + "n": 16, + "rms": 0.1908527001344785, + "coverage": 16, + "support": 16, + "snr": 9.490962505340576, + "mag": 22.90478229522705, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 19.956551300985662, + "pa": 219.4706298400097, + "is_object": false, + "injected": null, + "known": { + "name": "2014 HE201", + "V": 23.5 + } + }, + { + "x": -343.0640038589443, + "y": 1195.9619417465487, + "ve": -6.455137638009805, + "vn": -25.26069888984659, + "n": 15, + "rms": 0.13928796657286652, + "coverage": 16, + "support": 15, + "snr": 39.558067321777344, + "mag": 21.85247802734375, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 26.072431998744335, + "pa": 194.33463848290882, + "is_object": false, + "injected": null, + "known": { + "name": "2015 DD268", + "V": 22.1 + } + }, + { + "x": 437.58812008260105, + "y": -1059.7241846142963, + "ve": -8.084139233338462, + "vn": -20.162856829416913, + "n": 15, + "rms": 0.159168162156176, + "coverage": 15, + "support": 15, + "snr": 20.742956161499023, + "mag": 21.552358627319336, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 21.72312368577702, + "pa": 201.84793005754105, + "is_object": false, + "injected": null + }, + { + "x": -85.71863252885352, + "y": 1542.3767617163617, + "ve": -3.6446350836451864, + "vn": -23.48333386004673, + "n": 14, + "rms": 0.19451641966505526, + "coverage": 16, + "support": 16, + "snr": 23.23878574371338, + "mag": 22.3037748336792, + "frames": [ + 0, + 2, + 3, + 4, + 5, + 6, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 23.764476305514386, + "pa": 188.82197458035827, + "is_object": false, + "injected": null + }, + { + "x": 2102.77159452293, + "y": -497.04415270706085, + "ve": 5.968123558448514, + "vn": -29.240621091101662, + "n": 14, + "rms": 0.25426160568349393, + "coverage": 16, + "support": 15, + "snr": 45.108848571777344, + "mag": 21.78957748413086, + "frames": [ + 0, + 1, + 3, + 4, + 5, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 29.84346529145514, + "pa": 168.46415688063126, + "is_object": false, + "injected": null + }, + { + "x": 1720.2990415546956, + "y": -214.06478982694077, + "ve": -14.463668426532879, + "vn": -16.147606972147887, + "n": 14, + "rms": 0.09430239763803233, + "coverage": 16, + "support": 15, + "snr": 18.35151958465576, + "mag": 22.10332489013672, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 21.678166787799267, + "pa": 221.85130974445894, + "is_object": false, + "injected": null + }, + { + "x": 2184.50520860555, + "y": 746.2138620656378, + "ve": -3.156496775587275, + "vn": -52.62420741343384, + "n": 13, + "rms": 0.23346122551610954, + "coverage": 16, + "support": 13, + "snr": 162.39599609375, + "mag": 20.023326873779297, + "frames": [ + 0, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 12, + 14, + 15 + ], + "filter": "B", + "rate": 52.71878866008207, + "pa": 183.4325935875342, + "is_object": false, + "injected": null, + "known": { + "name": "2007 UH10", + "V": 19.6 + } + }, + { + "x": -696.4864361353483, + "y": -490.54114715043454, + "ve": -2.863018013413707, + "vn": -30.287830886707635, + "n": 13, + "rms": 0.14805405366082852, + "coverage": 16, + "support": 16, + "snr": 12.064810752868652, + "mag": 22.717605590820312, + "frames": [ + 0, + 2, + 3, + 5, + 6, + 7, + 8, + 9, + 10, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 30.42284621738953, + "pa": 185.39995321716293, + "is_object": false, + "injected": null + }, + { + "x": 869.2755372900319, + "y": -1533.5127038086546, + "ve": -8.85072771412324, + "vn": -16.57283242120722, + "n": 13, + "rms": 0.15108429117621103, + "coverage": 16, + "support": 16, + "snr": 17.109111785888672, + "mag": 21.959800720214844, + "frames": [ + 0, + 1, + 2, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 18.78813869256256, + "pa": 208.10446373335552, + "is_object": false, + "injected": null + }, + { + "x": -1015.2981553430592, + "y": -375.1536109693558, + "ve": -10.260934695985416, + "vn": -9.047686662301277, + "n": 13, + "rms": 0.27196846466069696, + "coverage": 16, + "support": 13, + "snr": 20.224763870239258, + "mag": 21.912372589111328, + "frames": [ + 0, + 1, + 3, + 4, + 6, + 7, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 13.680183287312408, + "pa": 228.59542621553382, + "is_object": false, + "injected": null + }, + { + "x": 1267.531332071937, + "y": 537.4144425371514, + "ve": -10.589224367618513, + "vn": -16.905410856821618, + "n": 12, + "rms": 0.18645962207781086, + "coverage": 16, + "support": 16, + "snr": 12.398392677307129, + "mag": 22.674535751342773, + "frames": [ + 0, + 1, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ], + "filter": "B", + "rate": 19.948047246427603, + "pa": 212.06223788477854, + "is_object": false, + "injected": null + }, + { + "x": 97.50601107053622, + "y": -1105.335375525853, + "ve": 12.625206299502254, + "vn": 3.130001384900158, + "n": 12, + "rms": 0.2213515873044084, + "coverage": 16, + "support": 15, + "snr": 31.45890998840332, + "mag": 21.731321334838867, + "frames": [ + 0, + 2, + 3, + 4, + 5, + 6, + 8, + 9, + 10, + 11, + 14, + 15 + ], + "filter": "B", + "rate": 13.007411071172784, + "pa": 76.07614621907099, + "is_object": false, + "injected": null + }, + { + "x": -980.7558595123771, + "y": -1592.5482132927382, + "ve": -15.104227896026893, + "vn": -8.564587275808135, + "n": 12, + "rms": 0.27079148639323075, + "coverage": 15, + "support": 12, + "snr": 13.517938613891602, + "mag": 22.151246070861816, + "frames": [ + 1, + 2, + 3, + 4, + 5, + 6, + 9, + 10, + 11, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 17.363463235773317, + "pa": 240.4453566411439, + "is_object": false, + "injected": null + }, + { + "x": 1885.434360986721, + "y": 1095.500659542115, + "ve": -10.792439041479248, + "vn": -11.999557626201954, + "n": 12, + "rms": 0.1729459850685328, + "coverage": 15, + "support": 14, + "snr": 22.392131805419922, + "mag": 21.738059997558594, + "frames": [ + 0, + 2, + 3, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 16.138962906227494, + "pa": 221.9683111862748, + "is_object": false, + "injected": null + }, + { + "x": -525.5534354829084, + "y": -350.91630235270515, + "ve": -16.816368430096738, + "vn": -9.460080627506239, + "n": 11, + "rms": 0.22190493778762974, + "coverage": 16, + "support": 15, + "snr": 7.337569236755371, + "mag": 23.279691696166992, + "frames": [ + 1, + 4, + 6, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 19.29464621742708, + "pa": 240.6399859970308, + "is_object": false, + "injected": null + }, + { + "x": 1964.7559622631793, + "y": 1453.199398450604, + "ve": -10.409993427385388, + "vn": -14.103248017052303, + "n": 11, + "rms": 0.25093733279352765, + "coverage": 11, + "support": 11, + "snr": 9.471131324768066, + "mag": 22.636550903320312, + "frames": [ + 0, + 3, + 4, + 5, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ], + "filter": "B", + "rate": 17.529106303194602, + "pa": 216.43205002643037, + "is_object": false, + "injected": null + }, + { + "x": 1365.2891487001516, + "y": 1338.885884946504, + "ve": -9.654943967345215, + "vn": -18.839552505541267, + "n": 10, + "rms": 0.16589372959011467, + "coverage": 10, + "support": 10, + "snr": 47.33223342895508, + "mag": 21.059619903564453, + "frames": [ + 0, + 3, + 4, + 5, + 7, + 8, + 11, + 12, + 13, + 14 + ], + "filter": "B", + "rate": 21.16947523255175, + "pa": 207.13435274275318, + "is_object": false, + "injected": null, + "known": { + "name": "2009 BV186", + "V": 22.0 + } + }, + { + "x": 381.0895740932143, + "y": -460.4905093510117, + "ve": 16.24584720158803, + "vn": -24.717068333580738, + "n": 10, + "rms": 0.16560406901420155, + "coverage": 15, + "support": 15, + "snr": 148.95861053466797, + "mag": 19.857794761657715, + "frames": [ + 1, + 2, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 15 + ], + "filter": "B", + "rate": 29.578049602775454, + "pa": 146.6841851405852, + "is_object": false, + "injected": null, + "known": { + "name": "2003 SJ212", + "V": 20.3 + } + }, + { + "x": -1113.8128232051818, + "y": -884.0689540987279, + "ve": -5.9129652836349145, + "vn": -21.544476538704707, + "n": 10, + "rms": 0.10631686486110387, + "coverage": 11, + "support": 11, + "snr": 858.8695373535156, + "mag": 17.89815044403076, + "frames": [ + 1, + 2, + 5, + 6, + 7, + 10, + 11, + 12, + 13, + 14 + ], + "filter": "B", + "rate": 22.34116442292723, + "pa": 195.3471570398343, + "is_object": false, + "injected": null, + "known": { + "name": "2001 QJ27", + "V": 18.6 + } + }, + { + "x": -888.0324551296561, + "y": -700.9605294087321, + "ve": -8.090316212245275, + "vn": -15.884726097606206, + "n": 10, + "rms": 0.2390991249199159, + "coverage": 16, + "support": 12, + "snr": 128.22761154174805, + "mag": 19.844533920288086, + "frames": [ + 3, + 4, + 6, + 7, + 9, + 10, + 11, + 12, + 13, + 15 + ], + "filter": "B", + "rate": 17.82632153895162, + "pa": 206.99038912797118, + "is_object": false, + "injected": null, + "known": { + "name": "2016 TA100", + "V": 21.2 + } + }, + { + "x": 805.6351867296812, + "y": 1741.629511082929, + "ve": -13.658039169163768, + "vn": -9.059476593891109, + "n": 9, + "rms": 0.2850831039330788, + "coverage": 14, + "support": 10, + "snr": 515.1266479492188, + "mag": 18.032577514648438, + "frames": [ + 0, + 3, + 5, + 8, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 16.389513418697717, + "pa": 236.44339426565745, + "is_object": false, + "injected": null, + "known": { + "name": "2001 FO175", + "V": 19.4 + } + }, + { + "x": 671.3157933299968, + "y": -803.8977174804145, + "ve": -11.768298224333618, + "vn": -13.515124018913518, + "n": 9, + "rms": 0.13414782097588204, + "coverage": 9, + "support": 9, + "snr": 10.762889862060547, + "mag": 22.97146224975586, + "frames": [ + 0, + 1, + 2, + 3, + 6, + 8, + 9, + 10, + 15 + ], + "filter": "B", + "rate": 17.920698098664207, + "pa": 221.0477284473946, + "is_object": false, + "injected": null, + "known": { + "name": "2010 NK43", + "V": 23.2 + } + }, + { + "x": 552.5494588341826, + "y": 672.0688333024401, + "ve": -15.22727958583679, + "vn": -8.904102454042217, + "n": 9, + "rms": 0.2649217005502548, + "coverage": 16, + "support": 14, + "snr": 6.661888122558594, + "mag": 23.167919158935547, + "frames": [ + 3, + 4, + 6, + 8, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 17.63953185595702, + "pa": 239.68317702406117, + "is_object": false, + "injected": null + }, + { + "x": -314.7962561497488, + "y": -698.7056069506101, + "ve": -8.285332886645222, + "vn": -16.289295557401932, + "n": 9, + "rms": 0.2026700461393775, + "coverage": 16, + "support": 16, + "snr": 7.8123064041137695, + "mag": 22.93883514404297, + "frames": [ + 4, + 5, + 6, + 8, + 9, + 10, + 11, + 12, + 13 + ], + "filter": "B", + "rate": 18.2753355864925, + "pa": 206.95955736996035, + "is_object": false, + "injected": null + }, + { + "x": 1346.5086002457792, + "y": -1484.7162600895565, + "ve": -15.147693879854154, + "vn": -8.039541261276119, + "n": 9, + "rms": 0.2172525756852642, + "coverage": 12, + "support": 10, + "snr": 8.66976261138916, + "mag": 22.90634536743164, + "frames": [ + 4, + 6, + 8, + 9, + 10, + 11, + 12, + 13, + 15 + ], + "filter": "B", + "rate": 17.148960713977164, + "pa": 242.04315958483744, + "is_object": false, + "injected": null + }, + { + "x": 1791.6391026323552, + "y": 1787.085578590884, + "ve": -17.63405987827707, + "vn": 8.01768381656704, + "n": 9, + "rms": 0.20408131985853467, + "coverage": 11, + "support": 9, + "snr": 16.932666778564453, + "mag": 22.1005916595459, + "frames": [ + 3, + 5, + 7, + 8, + 9, + 11, + 12, + 13, + 14 + ], + "filter": "B", + "rate": 19.371198248252536, + "pa": 294.4498841744633, + "is_object": false, + "injected": null + }, + { + "x": -503.02156586865004, + "y": 1194.3490338834188, + "ve": -18.758848372647165, + "vn": -2.111177820480616, + "n": 9, + "rms": 0.26360586107232375, + "coverage": 16, + "support": 16, + "snr": 7.808470726013184, + "mag": 23.113964080810547, + "frames": [ + 5, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 18.877273745370555, + "pa": 263.5787780982945, + "is_object": false, + "injected": null + }, + { + "x": -691.199363998328, + "y": 962.7811307136358, + "ve": -6.259799532161117, + "vn": -18.73582589076925, + "n": 8, + "rms": 0.13217172425197635, + "coverage": 9, + "support": 9, + "snr": 32.20984745025635, + "mag": 21.869142532348633, + "frames": [ + 0, + 1, + 2, + 4, + 6, + 9, + 10, + 12 + ], + "filter": "B", + "rate": 19.75389232511061, + "pa": 198.47491425516455, + "is_object": false, + "injected": null, + "known": { + "name": "2014 AB81", + "V": 22.3 + } + }, + { + "x": -795.5567189706032, + "y": 960.7032740383842, + "ve": -8.935212621458598, + "vn": -11.011847977754693, + "n": 8, + "rms": 0.181243928973791, + "coverage": 9, + "support": 9, + "snr": 62.85116958618164, + "mag": 21.04128074645996, + "frames": [ + 1, + 2, + 4, + 6, + 9, + 10, + 12, + 15 + ], + "filter": "B", + "rate": 14.180931579972212, + "pa": 219.05649982723838, + "is_object": false, + "injected": null, + "known": { + "name": "2018 VX113", + "V": 21.6 + } + }, + { + "x": 1183.2199696798953, + "y": -481.6923503318843, + "ve": -9.533090270779768, + "vn": -14.935793405487912, + "n": 8, + "rms": 0.1274081711130054, + "coverage": 16, + "support": 16, + "snr": 42.79727363586426, + "mag": 21.64153003692627, + "frames": [ + 3, + 4, + 5, + 6, + 7, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 17.71885252385865, + "pa": 212.54892717197407, + "is_object": false, + "injected": null, + "known": { + "name": "2011 HV106", + "V": 21.8 + } + }, + { + "x": -106.812785389866, + "y": -873.7095212204118, + "ve": -12.688741926309676, + "vn": -10.727963081186275, + "n": 8, + "rms": 0.1733383257732634, + "coverage": 10, + "support": 8, + "snr": 11.351931095123291, + "mag": 22.49313259124756, + "frames": [ + 4, + 5, + 6, + 7, + 10, + 12, + 14, + 15 + ], + "filter": "B", + "rate": 16.61605740071286, + "pa": 229.78644997803886, + "is_object": false, + "injected": null + }, + { + "x": 1724.8002172460526, + "y": -1276.1482979257266, + "ve": -13.513908482479145, + "vn": -10.947211194972457, + "n": 8, + "rms": 0.21656179205593637, + "coverage": 15, + "support": 10, + "snr": 9.772175312042236, + "mag": 22.74304485321045, + "frames": [ + 0, + 6, + 8, + 10, + 11, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 17.391582890011826, + "pa": 230.99010741647106, + "is_object": false, + "injected": null, + "known": { + "name": "2020 CK4", + "V": 23.9 + } + }, + { + "x": 614.311127782121, + "y": -1677.0777403729141, + "ve": 10.319563729120878, + "vn": -22.456379844036775, + "n": 8, + "rms": 0.2937135174462187, + "coverage": 14, + "support": 9, + "snr": 6.058198690414429, + "mag": 22.991886138916016, + "frames": [ + 2, + 8, + 9, + 10, + 11, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 24.714012042949406, + "pa": 155.31941317806286, + "is_object": false, + "injected": null + }, + { + "x": 2051.0383470867023, + "y": 1022.3744188419051, + "ve": -10.450816399427579, + "vn": -14.28616945558953, + "n": 7, + "rms": 0.06993597869864845, + "coverage": 8, + "support": 7, + "snr": 9.014666557312012, + "mag": 22.611255645751953, + "frames": [ + 0, + 3, + 8, + 9, + 10, + 11, + 13 + ], + "filter": "B", + "rate": 17.70068363449174, + "pa": 216.18673318830693, + "is_object": false, + "injected": null + }, + { + "x": 1541.8241472306217, + "y": 832.497419681324, + "ve": -7.805028102895173, + "vn": -24.09171420621, + "n": 7, + "rms": 0.2250399211623045, + "coverage": 13, + "support": 10, + "snr": 8.140849113464355, + "mag": 23.244182586669922, + "frames": [ + 0, + 1, + 5, + 7, + 8, + 9, + 12 + ], + "filter": "B", + "rate": 25.324477429567704, + "pa": 197.95084502383156, + "is_object": false, + "injected": null + }, + { + "x": 1277.8638634360257, + "y": 1832.4656174788606, + "ve": -6.546260607706365, + "vn": -15.736876187739833, + "n": 7, + "rms": 0.13766907055302574, + "coverage": 8, + "support": 7, + "snr": 131.05628967285156, + "mag": 20.28366470336914, + "frames": [ + 3, + 4, + 5, + 7, + 11, + 12, + 13 + ], + "filter": "B", + "rate": 17.044142691618756, + "pa": 202.5864418312401, + "is_object": false, + "injected": null, + "known": { + "name": "2008 YD154", + "V": 21.1 + } + }, + { + "x": -774.6516497711527, + "y": 1199.7271965701502, + "ve": -13.050136374462296, + "vn": -0.5939728535067672, + "n": 7, + "rms": 0.2590125959300285, + "coverage": 16, + "support": 15, + "snr": 8.170948028564453, + "mag": 23.20873260498047, + "frames": [ + 0, + 5, + 6, + 9, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 13.063646624995904, + "pa": 267.3939991377552, + "is_object": false, + "injected": null + }, + { + "x": 1021.4837676623072, + "y": 968.1986405743758, + "ve": -7.0162476070856235, + "vn": -16.558897973157983, + "n": 7, + "rms": 0.2354504930213558, + "coverage": 9, + "support": 8, + "snr": 8.413139343261719, + "mag": 23.09418487548828, + "frames": [ + 0, + 1, + 2, + 6, + 9, + 10, + 15 + ], + "filter": "B", + "rate": 17.9840160300582, + "pa": 202.96308491700654, + "is_object": false, + "injected": null + }, + { + "x": 616.0605245995438, + "y": 858.5999511103961, + "ve": -3.8399795714651317, + "vn": -17.422741687375353, + "n": 6, + "rms": 0.28255787880622496, + "coverage": 11, + "support": 9, + "snr": 5.554646015167236, + "mag": 23.741809844970703, + "frames": [ + 0, + 4, + 5, + 7, + 8, + 9 + ], + "filter": "B", + "rate": 17.84089042100412, + "pa": 192.42929987169111, + "is_object": false, + "injected": null + }, + { + "x": -50.894982904739244, + "y": -144.72514672474065, + "ve": -13.298310257632455, + "vn": -13.733545495001524, + "n": 6, + "rms": 0.07545527301544594, + "coverage": 14, + "support": 12, + "snr": 23.19541072845459, + "mag": 21.660682678222656, + "frames": [ + 1, + 5, + 9, + 10, + 11, + 13 + ], + "filter": "B", + "rate": 19.11688592766953, + "pa": 224.07757026057334, + "is_object": false, + "injected": null, + "known": { + "name": "2015 KU103", + "V": 22.6 + } + }, + { + "x": -539.785359048832, + "y": -1315.2939164079783, + "ve": -11.55770490380336, + "vn": -10.891591804307573, + "n": 6, + "rms": 0.11463787704865187, + "coverage": 12, + "support": 10, + "snr": 6.197310209274292, + "mag": 23.243675231933594, + "frames": [ + 5, + 6, + 11, + 13, + 14, + 15 + ], + "filter": "B", + "rate": 15.881036322452642, + "pa": 226.69957549790598, + "is_object": false, + "injected": null + }, + { + "x": 1537.517546208821, + "y": 1447.6273799583034, + "ve": -10.441860349939704, + "vn": -22.78422557069836, + "n": 6, + "rms": 0.08513618696244597, + "coverage": 12, + "support": 10, + "snr": 9.309206008911133, + "mag": 22.72054672241211, + "frames": [ + 0, + 1, + 9, + 11, + 13, + 14 + ], + "filter": "B", + "rate": 25.06298829796854, + "pa": 204.62167425255416, + "is_object": false, + "injected": null, + "known": { + "name": "2010 JJ203", + "V": 23.3 + } + }, + { + "x": 117.80820265318584, + "y": 395.44997891582807, + "ve": -12.777901158856006, + "vn": -8.504753825713152, + "n": 15, + "rms": 0.13413821085562164, + "coverage": 15, + "support": 15, + "snr": 6.64536190032959, + "mag": 24.354631423950195, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ], + "filter": "A", + "rate": 15.349449360204298, + "pa": 236.35293891233002, + "is_object": false, + "injected": null + }, + { + "x": 1719.99423553629, + "y": -332.0315245811329, + "ve": -7.225320894933392, + "vn": -17.320814259084734, + "n": 15, + "rms": 0.2287044243242218, + "coverage": 16, + "support": 16, + "snr": 6.01188850402832, + "mag": 24.413331985473633, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 14, + 15 + ], + "filter": "A", + "rate": 18.767415075936114, + "pa": 202.64329730159588, + "is_object": false, + "injected": null + }, + { + "x": 241.8596557067899, + "y": 826.0119338715842, + "ve": -9.675417953034387, + "vn": -12.320982841070162, + "n": 13, + "rms": 0.12727134545017993, + "coverage": 13, + "support": 13, + "snr": 10.836036682128906, + "mag": 23.78635025024414, + "frames": [ + 0, + 1, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 11, + 12, + 13, + 14 + ], + "filter": "A", + "rate": 15.66589706131907, + "pa": 218.14182849961534, + "is_object": false, + "injected": null + }, + { + "x": 973.341780936315, + "y": -1401.3462282365367, + "ve": -13.853874575001939, + "vn": -10.92984344886481, + "n": 12, + "rms": 0.1892936149785691, + "coverage": 16, + "support": 16, + "snr": 5.936248540878296, + "mag": 24.097206115722656, + "frames": [ + 0, + 1, + 3, + 6, + 7, + 8, + 9, + 10, + 11, + 13, + 14, + 15 + ], + "filter": "A", + "rate": 17.646283420499007, + "pa": 231.728761391999, + "is_object": false, + "injected": null + }, + { + "x": -491.2222184616551, + "y": 215.11454921266593, + "ve": -11.460744546643005, + "vn": -12.190135951047962, + "n": 12, + "rms": 0.1377288595955638, + "coverage": 16, + "support": 13, + "snr": 7.915986061096191, + "mag": 23.821571350097656, + "frames": [ + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 14, + 15 + ], + "filter": "A", + "rate": 16.73164905406635, + "pa": 223.23356227793607, + "is_object": false, + "injected": null + }, + { + "x": 1045.9868279854159, + "y": 212.32638214024598, + "ve": -5.986264223178129, + "vn": -13.85054327236772, + "n": 11, + "rms": 0.11133867331741193, + "coverage": 16, + "support": 15, + "snr": 7.237009048461914, + "mag": 24.179542541503906, + "frames": [ + 0, + 1, + 2, + 3, + 6, + 7, + 8, + 11, + 12, + 13, + 14 + ], + "filter": "A", + "rate": 15.088833894288621, + "pa": 203.3742078300836, + "is_object": false, + "injected": null + }, + { + "x": 2023.9343899829676, + "y": 1140.7501843390064, + "ve": -6.957485435465595, + "vn": -5.7159387926289424, + "n": 10, + "rms": 0.07465023179796562, + "coverage": 11, + "support": 11, + "snr": 9.387954711914062, + "mag": 23.404556274414062, + "frames": [ + 0, + 3, + 5, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ], + "filter": "A", + "rate": 9.004363379262095, + "pa": 230.59510353337552, + "is_object": false, + "injected": null + }, + { + "x": 1080.1117616812937, + "y": 1014.4526286210582, + "ve": -8.795691279734864, + "vn": -11.226844111833957, + "n": 10, + "rms": 0.13420798214402652, + "coverage": 11, + "support": 11, + "snr": 13.022679805755615, + "mag": 22.98615074157715, + "frames": [ + 0, + 1, + 2, + 3, + 8, + 9, + 10, + 11, + 13, + 15 + ], + "filter": "A", + "rate": 14.262055034244705, + "pa": 218.0769882871495, + "is_object": false, + "injected": null + }, + { + "x": 1229.1467393030935, + "y": 298.4966107164004, + "ve": 14.08543214729966, + "vn": -66.15718963138531, + "n": 10, + "rms": 0.28545994455141505, + "coverage": 16, + "support": 12, + "snr": 11.015959739685059, + "mag": 23.30417823791504, + "frames": [ + 1, + 4, + 5, + 6, + 8, + 9, + 11, + 12, + 14, + 15 + ], + "filter": "A", + "rate": 67.64002615832771, + "pa": 167.9807050314553, + "is_object": false, + "injected": null + }, + { + "x": 978.0330357680575, + "y": -1689.279303942194, + "ve": -12.95255980651266, + "vn": -10.476910843353695, + "n": 10, + "rms": 0.18483034369574933, + "coverage": 14, + "support": 14, + "snr": 6.210635423660278, + "mag": 24.03673553466797, + "frames": [ + 1, + 3, + 5, + 7, + 8, + 9, + 10, + 11, + 13, + 15 + ], + "filter": "A", + "rate": 16.659365725046964, + "pa": 231.03171353592933, + "is_object": false, + "injected": null + }, + { + "x": 1228.7047124819012, + "y": 300.44762502648507, + "ve": 14.49066977058206, + "vn": -67.674741510025, + "n": 9, + "rms": 0.20981739021453288, + "coverage": 16, + "support": 10, + "snr": 10.835331916809082, + "mag": 23.32081413269043, + "frames": [ + 0, + 1, + 6, + 7, + 8, + 9, + 11, + 13, + 15 + ], + "filter": "A", + "rate": 69.2087432977132, + "pa": 167.91419635658323, + "is_object": false, + "injected": null + }, + { + "x": 1228.3073444309932, + "y": 302.60014932582925, + "ve": 14.73346467186523, + "vn": -68.94704590445996, + "n": 9, + "rms": 0.22907736263428077, + "coverage": 16, + "support": 12, + "snr": 10.158346176147461, + "mag": 23.994686126708984, + "frames": [ + 0, + 1, + 4, + 5, + 6, + 8, + 9, + 12, + 14 + ], + "filter": "A", + "rate": 70.5036886991653, + "pa": 167.93774489652805, + "is_object": false, + "injected": null + }, + { + "x": 1228.7398131143673, + "y": 300.44538330230404, + "ve": 15.145772382173424, + "vn": -70.9282498851324, + "n": 8, + "rms": 0.2760330551066052, + "coverage": 16, + "support": 10, + "snr": 8.736571788787842, + "mag": 24.14534091949463, + "frames": [ + 0, + 1, + 5, + 6, + 7, + 9, + 11, + 12 + ], + "filter": "A", + "rate": 72.52731246103355, + "pa": 167.94628977991636, + "is_object": false, + "injected": null + }, + { + "x": 1748.9851229898288, + "y": 663.3787280718898, + "ve": -9.415297222566783, + "vn": -12.7598387769876, + "n": 8, + "rms": 0.18094382886002378, + "coverage": 16, + "support": 15, + "snr": 6.372432708740234, + "mag": 24.418089866638184, + "frames": [ + 0, + 1, + 2, + 7, + 12, + 13, + 14, + 15 + ], + "filter": "A", + "rate": 15.857531567176217, + "pa": 216.42307007158968, + "is_object": false, + "injected": null + }, + { + "x": 1007.7368776924944, + "y": -107.12820448233185, + "ve": -3.78761235613834, + "vn": -13.75092708149259, + "n": 8, + "rms": 0.12180614932598234, + "coverage": 16, + "support": 16, + "snr": 5.789673089981079, + "mag": 24.37981605529785, + "frames": [ + 3, + 5, + 6, + 7, + 10, + 13, + 14, + 15 + ], + "filter": "A", + "rate": 14.263029235085305, + "pa": 195.39990703652458, + "is_object": false, + "injected": null + }, + { + "x": 1532.4794183359563, + "y": 388.6913680075933, + "ve": -10.26960066595868, + "vn": -14.297209590017324, + "n": 8, + "rms": 0.2541988950130573, + "coverage": 14, + "support": 9, + "snr": 12.379688262939453, + "mag": 23.40299129486084, + "frames": [ + 4, + 5, + 6, + 7, + 9, + 10, + 13, + 14 + ], + "filter": "A", + "rate": 17.603263899037085, + "pa": 215.68946254329134, + "is_object": false, + "injected": null + }, + { + "x": 1149.3229996976297, + "y": 1175.313134327803, + "ve": -7.097935455596101, + "vn": -12.945808530105127, + "n": 7, + "rms": 0.13827110680541962, + "coverage": 10, + "support": 9, + "snr": 7.495603561401367, + "mag": 23.648052215576172, + "frames": [ + 0, + 4, + 5, + 11, + 12, + 13, + 14 + ], + "filter": "A", + "rate": 14.763964448275772, + "pa": 208.7351032811128, + "is_object": false, + "injected": null + }, + { + "x": 1389.801907644152, + "y": 57.09275360250753, + "ve": -8.451806213806487, + "vn": -14.23786624380135, + "n": 7, + "rms": 0.18593809800207015, + "coverage": 16, + "support": 14, + "snr": 9.878918647766113, + "mag": 24.16326141357422, + "frames": [ + 0, + 1, + 2, + 7, + 13, + 14, + 15 + ], + "filter": "A", + "rate": 16.557471529557763, + "pa": 210.69398923620716, + "is_object": false, + "injected": null + }, + { + "x": -574.9051781099134, + "y": 1340.3845863274987, + "ve": -6.7915824554601, + "vn": -3.1168571068299897, + "n": 6, + "rms": 0.12981167748787453, + "coverage": 16, + "support": 16, + "snr": 5.889668226242065, + "mag": 24.19377899169922, + "frames": [ + 1, + 5, + 11, + 13, + 14, + 15 + ], + "filter": "A", + "rate": 7.472642803835203, + "pa": 245.3482166160834, + "is_object": false, + "injected": null + }, + { + "x": 2184.7330241887803, + "y": -1123.2918911408349, + "ve": -16.822729186619803, + "vn": -6.625916383560746, + "n": 6, + "rms": 0.14710873380044645, + "coverage": 10, + "support": 7, + "snr": 12.468852043151855, + "mag": 23.45657444000244, + "frames": [ + 3, + 5, + 7, + 8, + 9, + 12 + ], + "filter": "A", + "rate": 18.08056927224053, + "pa": 248.50216080838675, + "is_object": false, + "injected": null, + "known": { + "name": "2018 YN15", + "V": 23.5 + } + }, + { + "x": 1127.2687753917228, + "y": 709.6198851985648, + "ve": -2.5424288819998786, + "vn": -14.935179164085273, + "n": 6, + "rms": 0.062217951963234486, + "coverage": 15, + "support": 10, + "snr": 218.3303451538086, + "mag": 20.013221740722656, + "frames": [ + 5, + 9, + 10, + 11, + 13, + 15 + ], + "filter": "A", + "rate": 15.15003370568376, + "pa": 189.66090241917337, + "is_object": false, + "injected": null, + "known": { + "name": "Bellabrodbeck", + "V": 20.4 + } + }, + { + "x": 1491.1571599049373, + "y": -1337.0674622833756, + "ve": -11.906918314514146, + "vn": -4.5532296286478475, + "n": 6, + "rms": 0.1567282907868224, + "coverage": 12, + "support": 8, + "snr": 7.0164711475372314, + "mag": 23.8707218170166, + "frames": [ + 4, + 6, + 8, + 10, + 13, + 15 + ], + "filter": "A", + "rate": 12.74780780368566, + "pa": 249.0730448942153, + "is_object": false, + "injected": null + }, + { + "x": -439.0455369871531, + "y": 1416.226488748008, + "ve": -13.654511503315993, + "vn": -5.652638985161127, + "n": 6, + "rms": 0.13453029348391096, + "coverage": 15, + "support": 11, + "snr": 8.536675453186035, + "mag": 23.93122673034668, + "frames": [ + 0, + 4, + 7, + 11, + 13, + 14 + ], + "filter": "A", + "rate": 14.778295297183373, + "pa": 247.51162279436093, + "is_object": false, + "injected": null + }, + { + "x": 1753.0408683041555, + "y": 977.43136207937, + "ve": -12.43800681195975, + "vn": -12.764964201401332, + "n": 6, + "rms": 0.0607593451267146, + "coverage": 9, + "support": 6, + "snr": 77.31707382202148, + "mag": 21.55689525604248, + "frames": [ + 0, + 1, + 2, + 10, + 12, + 15 + ], + "filter": "A", + "rate": 17.822691281549336, + "pa": 224.25674525961037, + "is_object": false, + "injected": null, + "known": { + "name": "2015 FY337", + "V": 21.8 + } + } + ] + }, + "locus": { + "frames": [ + "942300p", + "942301p", + "942302p", + "942303p", + "942304p", + "942305p", + "942306p", + "942307p", + "942309p", + "942311p", + "942312p", + "942313p" + ], + "band_snr": { + "r": 12.838106155395508, + "g": 15.89310359954834 + }, + "grid": [ + -1.6e-11, + -1.575e-11, + -1.5499999999999998e-11, + -1.525e-11, + -1.5e-11, + -1.475e-11, + -1.45e-11, + -1.425e-11, + -1.4e-11, + -1.375e-11, + -1.35e-11, + -1.325e-11, + -1.3e-11, + -1.275e-11, + -1.25e-11, + -1.225e-11, + -1.2e-11, + -1.175e-11, + -1.1499999999999999e-11, + -1.125e-11, + -1.0999999999999999e-11, + -1.075e-11, + -1.05e-11, + -1.025e-11, + -1e-11, + -9.75e-12, + -9.5e-12, + -9.25e-12, + -9e-12, + -8.75e-12, + -8.5e-12, + -8.25e-12, + -8e-12, + -7.749999999999999e-12, + -7.5e-12, + -7.25e-12, + -7e-12, + -6.75e-12, + -6.5e-12, + -6.25e-12, + -6e-12, + -5.7499999999999995e-12, + -5.4999999999999996e-12, + -5.25e-12, + -5e-12, + -4.75e-12, + -4.5e-12, + -4.25e-12, + -4e-12, + -3.75e-12, + -3.5e-12, + -3.25e-12, + -3e-12, + -2.7499999999999998e-12, + -2.5e-12, + -2.25e-12, + -2e-12, + -1.75e-12, + -1.5e-12, + -1.25e-12, + -1e-12, + -7.5e-13, + -5e-13, + -2.5e-13, + 0.0, + 2.5e-13, + 5e-13, + 7.5e-13, + 1e-12, + 1.25e-12, + 1.5e-12, + 1.75e-12, + 2e-12, + 2.25e-12, + 2.5e-12, + 2.7499999999999998e-12, + 3e-12, + 3.25e-12, + 3.5e-12, + 3.75e-12, + 4e-12, + 4.25e-12, + 4.5e-12, + 4.75e-12, + 5e-12, + 5.25e-12, + 5.4999999999999996e-12, + 5.7499999999999995e-12, + 6e-12, + 6.25e-12, + 6.5e-12, + 6.75e-12, + 7e-12, + 7.25e-12, + 7.5e-12, + 7.749999999999999e-12, + 8e-12, + 8.25e-12, + 8.5e-12, + 8.75e-12, + 9e-12, + 9.25e-12, + 9.5e-12, + 9.75e-12, + 1e-11, + 1.025e-11, + 1.05e-11, + 1.075e-11, + 1.0999999999999999e-11, + 1.125e-11, + 1.1499999999999999e-11, + 1.175e-11, + 1.2e-11 + ], + "flux": [ + -0.04699124388172991, + -0.050004731004113144, + -0.06088984755302625, + -0.05836864021191927, + -0.07379453643773869, + -0.08054235971156753, + -0.06997480427241869, + -0.05917142125589562, + -0.05692408683727872, + -0.04421121950893384, + -0.040682210793115, + -0.04395498851187774, + -0.06758089413470632, + -0.06862345144346232, + -0.08505974900699985, + -0.07743431286320554, + -0.06297343933506318, + -0.044064120520294486, + -0.03765003373511645, + -0.024401017916035085, + -0.017293497260776954, + -0.013713294790119844, + 0.0011339220690338462, + -0.00837083517275326, + -0.012973035412238992, + -0.012614237615633354, + -0.04436621022762294, + -0.04269361241722712, + -0.030462358286400565, + -0.031373437028112655, + -0.02485656687464788, + -0.01431144021584714, + -0.0039547754984105435, + 0.0027509846047077827, + -0.014273280393753255, + -0.0087300043112958, + 0.0017430844059883092, + 0.0009753258871962938, + -0.004925272193910898, + -0.017045938409661877, + -0.014183805612462479, + -0.0036168359983095237, + 0.005588395306546781, + 0.03311946625730868, + 0.11520652898995895, + 0.25327565760524956, + 0.4369625866037505, + 0.6447078981156279, + 0.8484677614518029, + 0.9617651297418682, + 0.9137387988022342, + 0.7449215958570252, + 0.531629371921378, + 0.3175381891779162, + 0.1646757777483484, + 0.06108815959546849, + 0.003987913090911339, + -0.011108175665455475, + -0.011196519998579969, + -0.019227234024379175, + -0.0290590622779388, + -0.030521081256236867, + -0.038259141024690524, + -0.042385102991963144, + -0.03915980133244709, + -0.02736886343731452, + -0.030985801973446206, + -0.03332981022870017, + -0.032059470625246535, + -0.02972152121235532, + -0.030996919136693425, + -0.05086976309871506, + -0.04687392646332668, + -0.04708338643858522, + -0.04440881788934609, + -0.02617824897164, + -0.02995397214794703, + -0.023816160761931188, + -0.021665777734547118, + -0.024483855568577424, + -0.023406830882806297, + -0.01790120957707516, + -0.028661409510516107, + -0.042854723631360905, + -0.05036008134490449, + -0.05173642691111805, + -0.038749940969546766, + -0.023665893982422765, + 0.000913371066534539, + 0.029981517512979387, + 0.04770816510953644, + 0.04871221510905359, + 0.029035649188272013, + 0.011284736666461145, + -0.005994838005590663, + -0.029790597680413717, + -0.03832866624497743, + -0.041668186406947694, + -0.04749605337362857, + -0.044004615568480135, + -0.042967192003162985, + -0.04223169997510646, + -0.03709935382612557, + -0.03170203744314558, + -0.025213083807678838, + -0.014798379303868594, + -0.01949809899504734, + -0.03475817292769255, + -0.042887866195503846, + -0.051731981606376, + -0.05823491064039983, + -0.05319406848153989, + -0.05469145681870012 + ], + "n_frames": [ + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11 + ], + "peak_A2": -3.75e-12, + "peak_flux": 0.9617651297418682, + "peak_frames": 8, + "elsewhere_max": { + "A2": 6.75e-12, + "flux": 0.04871221510905359, + "frames": 9 + }, + "flux_grav": -0.03915938879433682, + "n_grav": 9, + "flux_accel": 0.9726870914808127, + "flux_detection": NaN, + "n_detection": 7, + "null_sd": 0.022060006528695282, + "dm_limit_3sigma": 3.920761291673372, + "map_max_away": { + "flux": 0.12736159929306592, + "offset": [ + 1.5, + -2.5 + ], + "frames": 8 + }, + "detection_offset_from_grav": [ + 3.3842215345277444, + 0.08014310123991564 + ], + "null_max": { + "n": 954, + "percentiles": [ + 0.03566111151783989, + 0.05610025141642272, + 0.0877809847563404, + 0.15174534823526997 + ], + "beyond_detection": 0 + }, + "null_at_zero": { + "n": 941, + "median": -0.014299592871389459, + "robust_sd": 0.022060006528695282 + }, + "null_high": [], + "map": { + "step": 0.5, + "half": 24.0, + "flux": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.016, + 0.01, + -0.017, + -0.025, + -0.033, + -0.039, + -0.031, + -0.029, + -0.009, + -0.045, + -0.076, + -0.037, + -0.025, + -0.014, + -0.02, + -0.036, + -0.051, + -0.047, + -0.042, + -0.027, + -0.028, + -0.024, + -0.028, + -0.018, + -0.038, + -0.025, + -0.006, + -0.016, + -0.008, + -0.024, + -0.023, + -0.022, + -0.034, + -0.021, + -0.012, + -0.022, + -0.053, + -0.049, + -0.041, + -0.021, + -0.016, + -0.02, + -0.02, + 0.013, + -0.011, + 0.006, + 0.01, + 0.007, + -0.013, + -0.011, + 0.026, + 0.015, + null, + 0.012, + -0.011, + -0.033, + -0.033, + -0.033, + null, + -0.007, + -0.031, + -0.039, + -0.039, + -0.027, + -0.015, + -0.016, + -0.009, + -0.011, + -0.016, + -0.025, + -0.039, + -0.033, + -0.021, + -0.01, + -0.032, + -0.066, + -0.044, + -0.045, + -0.041, + -0.026, + 0.005, + -0.011, + -0.016, + -0.041, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.032, + 0.005, + -0.024, + -0.013, + -0.019, + -0.036, + -0.048, + -0.02, + -0.007, + -0.023, + -0.054, + -0.064, + -0.031, + -0.004, + -0.004, + -0.026, + -0.038, + -0.063, + null, + null, + null, + -0.024, + -0.011, + -0.019, + -0.016, + -0.007, + -0.016, + -0.019, + -0.016, + -0.019, + -0.019, + -0.029, + -0.033, + -0.04, + -0.001, + -0.017, + -0.05, + -0.054, + -0.039, + -0.043, + -0.025, + -0.025, + -0.0, + 0.002, + 0.014, + -0.002, + 0.008, + 0.0, + -0.006, + -0.018, + 0.014, + 0.014, + 0.009, + 0.018, + 0.017, + -0.014, + -0.04, + -0.022, + -0.028, + null, + -0.028, + -0.035, + -0.044, + -0.035, + -0.026, + -0.02, + -0.028, + -0.03, + -0.019, + -0.054, + -0.047, + -0.029, + -0.017, + 0.003, + -0.008, + -0.072, + -0.073, + -0.064, + -0.051, + -0.04, + -0.031, + -0.014, + -0.018, + -0.016, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.001, + -0.01, + -0.017, + -0.023, + -0.016, + -0.02, + -0.03, + -0.032, + -0.031, + -0.024, + -0.046, + -0.06, + -0.062, + -0.017, + -0.022, + -0.011, + -0.024, + -0.039, + null, + null, + -0.031, + -0.002, + -0.011, + -0.013, + 0.0, + 0.004, + -0.02, + -0.013, + -0.007, + -0.033, + -0.02, + -0.04, + -0.042, + -0.036, + -0.018, + -0.015, + -0.023, + -0.033, + -0.053, + -0.059, + -0.036, + -0.016, + -0.015, + 0.004, + 0.004, + -0.01, + -0.001, + -0.006, + -0.006, + -0.012, + -0.01, + 0.014, + 0.024, + 0.005, + 0.027, + -0.004, + -0.028, + -0.043, + -0.039, + -0.013, + -0.021, + -0.052, + -0.041, + -0.03, + -0.02, + 0.007, + -0.01, + -0.023, + -0.014, + -0.023, + -0.035, + -0.026, + -0.025, + -0.003, + -0.014, + -0.016, + -0.059, + -0.065, + -0.057, + -0.051, + -0.036, + -0.011, + -0.033, + -0.019, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.012, + -0.027, + -0.029, + -0.031, + -0.017, + -0.02, + -0.01, + -0.019, + -0.049, + -0.028, + -0.026, + -0.045, + -0.054, + null, + -0.028, + -0.021, + -0.022, + null, + null, + -0.047, + -0.041, + -0.027, + -0.006, + -0.009, + 0.002, + 0.004, + 0.006, + 0.007, + -0.005, + 0.0, + -0.015, + -0.038, + -0.032, + -0.019, + -0.016, + -0.006, + -0.012, + -0.017, + -0.044, + -0.066, + -0.069, + -0.012, + -0.017, + -0.011, + -0.01, + -0.015, + -0.009, + -0.002, + -0.017, + -0.029, + -0.032, + -0.003, + 0.01, + 0.009, + -0.004, + -0.0, + -0.013, + -0.022, + -0.03, + -0.023, + -0.017, + -0.031, + -0.03, + -0.039, + -0.005, + -0.008, + -0.028, + -0.055, + -0.024, + -0.023, + -0.034, + -0.027, + -0.032, + -0.029, + -0.002, + -0.001, + -0.038, + -0.043, + -0.052, + -0.047, + -0.029, + -0.027, + -0.028, + -0.027, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.022, + -0.03, + -0.031, + -0.027, + -0.015, + -0.004, + -0.002, + -0.027, + -0.046, + -0.009, + -0.029, + null, + null, + null, + null, + -0.02, + null, + null, + -0.059, + -0.042, + -0.037, + -0.017, + -0.016, + -0.02, + -0.012, + 0.015, + 0.016, + -0.001, + -0.013, + -0.019, + -0.036, + -0.038, + -0.008, + -0.007, + 0.008, + -0.012, + -0.012, + -0.038, + -0.042, + -0.062, + -0.034, + -0.005, + -0.036, + -0.038, + -0.019, + -0.02, + -0.002, + -0.011, + -0.037, + -0.035, + -0.019, + 0.005, + 0.001, + null, + null, + null, + -0.007, + -0.031, + -0.029, + -0.019, + -0.016, + -0.044, + -0.058, + -0.015, + -0.016, + -0.044, + -0.066, + -0.026, + -0.043, + -0.044, + -0.04, + -0.027, + -0.033, + -0.036, + -0.023, + -0.021, + -0.041, + -0.046, + -0.041, + -0.036, + -0.024, + -0.015, + -0.014, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.015, + -0.028, + -0.044, + -0.011, + -0.011, + -0.003, + -0.007, + 0.003, + -0.025, + -0.026, + -0.015, + -0.021, + null, + null, + null, + null, + null, + -0.044, + -0.044, + -0.036, + -0.024, + -0.018, + -0.013, + -0.02, + -0.006, + 0.004, + -0.006, + -0.006, + -0.01, + -0.017, + -0.032, + -0.03, + -0.008, + 0.004, + 0.011, + -0.0, + -0.005, + -0.001, + -0.033, + -0.031, + -0.06, + 0.001, + -0.025, + -0.039, + -0.042, + -0.041, + -0.017, + -0.005, + -0.03, + -0.044, + -0.035, + null, + null, + null, + null, + -0.033, + -0.014, + null, + -0.031, + -0.013, + 0.004, + -0.051, + -0.063, + -0.036, + -0.019, + -0.052, + -0.058, + -0.06, + -0.031, + -0.046, + -0.052, + -0.013, + -0.023, + -0.051, + -0.036, + -0.026, + -0.024, + -0.046, + -0.045, + -0.034, + -0.026, + -0.024, + -0.019, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.023, + -0.017, + -0.041, + -0.026, + -0.022, + -0.019, + 0.005, + -0.007, + -0.015, + -0.025, + -0.035, + -0.02, + null, + null, + -0.028, + null, + null, + null, + null, + null, + -0.018, + -0.017, + -0.016, + -0.001, + -0.032, + -0.009, + -0.007, + -0.014, + -0.005, + -0.027, + -0.04, + -0.027, + -0.004, + 0.009, + 0.012, + -0.001, + -0.024, + -0.022, + -0.008, + -0.032, + -0.054, + -0.036, + -0.008, + -0.03, + -0.036, + -0.048, + -0.024, + -0.012, + -0.015, + -0.048, + -0.044, + null, + null, + null, + -0.04, + -0.037, + -0.045, + -0.027, + null, + -0.033, + -0.024, + -0.038, + -0.055, + -0.047, + -0.043, + -0.034, + -0.074, + -0.058, + -0.048, + -0.025, + -0.042, + -0.036, + -0.01, + -0.029, + -0.046, + -0.027, + -0.027, + -0.027, + -0.045, + -0.04, + -0.016, + -0.031, + -0.025, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.016, + -0.016, + -0.031, + -0.05, + -0.027, + -0.027, + -0.0, + -0.006, + -0.001, + -0.026, + -0.032, + -0.027, + null, + null, + -0.032, + null, + null, + null, + null, + null, + null, + -0.014, + -0.003, + -0.022, + -0.028, + 0.002, + -0.012, + -0.011, + -0.001, + -0.007, + -0.023, + -0.037, + -0.023, + -0.007, + 0.011, + 0.005, + -0.007, + -0.03, + 0.009, + -0.006, + -0.04, + -0.06, + -0.029, + -0.025, + -0.034, + -0.072, + -0.034, + -0.02, + -0.022, + -0.029, + -0.06, + null, + -0.008, + -0.004, + -0.017, + -0.042, + null, + null, + -0.043, + -0.034, + -0.03, + -0.018, + -0.048, + -0.049, + -0.058, + -0.029, + -0.078, + -0.056, + -0.04, + -0.029, + -0.02, + -0.041, + -0.015, + -0.023, + -0.038, + -0.032, + -0.031, + -0.031, + -0.053, + -0.047, + -0.023, + -0.027, + -0.033, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.01, + -0.012, + -0.033, + -0.032, + -0.034, + -0.012, + -0.017, + 0.023, + -0.023, + -0.022, + -0.025, + -0.021, + null, + -0.039, + null, + null, + null, + null, + null, + null, + null, + -0.007, + -0.012, + -0.024, + -0.034, + 0.002, + 0.006, + -0.001, + -0.007, + 0.001, + -0.024, + -0.032, + -0.005, + -0.011, + 0.013, + 0.015, + 0.011, + 0.014, + 0.003, + -0.028, + -0.051, + -0.048, + -0.023, + -0.039, + -0.062, + -0.025, + -0.013, + -0.017, + -0.039, + -0.04, + -0.05, + -0.017, + -0.003, + 0.01, + null, + -0.019, + -0.034, + -0.022, + -0.028, + -0.017, + -0.023, + -0.002, + -0.043, + -0.052, + -0.057, + -0.032, + -0.03, + -0.03, + -0.031, + -0.013, + -0.025, + -0.023, + -0.029, + -0.02, + -0.039, + -0.024, + -0.034, + -0.036, + -0.044, + -0.02, + -0.013, + -0.031, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.018, + -0.015, + -0.037, + -0.035, + -0.019, + 0.005, + 0.002, + -0.008, + -0.019, + -0.007, + -0.025, + -0.041, + -0.04, + null, + null, + null, + null, + null, + null, + null, + -0.011, + -0.016, + -0.018, + -0.015, + -0.006, + 0.006, + 0.021, + 0.007, + -0.005, + -0.019, + -0.011, + -0.007, + -0.019, + -0.006, + -0.002, + 0.004, + 0.011, + -0.015, + -0.034, + -0.047, + -0.053, + -0.027, + -0.028, + -0.019, + -0.023, + -0.032, + -0.012, + -0.038, + -0.033, + -0.033, + -0.008, + 0.003, + -0.007, + -0.024, + -0.038, + -0.032, + -0.024, + -0.01, + -0.021, + -0.011, + -0.035, + -0.044, + -0.054, + -0.036, + -0.011, + -0.024, + -0.009, + -0.019, + -0.022, + -0.036, + -0.013, + -0.014, + -0.028, + -0.033, + -0.024, + -0.012, + -0.008, + -0.025, + -0.012, + -0.024, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.002, + -0.007, + -0.04, + -0.032, + 0.001, + 0.008, + 0.003, + -0.016, + -0.02, + -0.02, + -0.04, + -0.047, + -0.024, + null, + null, + null, + null, + null, + null, + -0.012, + -0.021, + -0.006, + -0.014, + -0.021, + 0.002, + 0.007, + -0.002, + -0.002, + -0.01, + -0.009, + -0.016, + -0.01, + 0.008, + -0.006, + -0.009, + -0.006, + -0.016, + -0.014, + -0.026, + -0.047, + -0.056, + -0.033, + -0.028, + -0.018, + -0.005, + -0.02, + -0.041, + -0.049, + -0.031, + -0.024, + -0.015, + -0.007, + -0.022, + -0.022, + -0.044, + -0.02, + 0.004, + -0.02, + -0.016, + -0.014, + -0.031, + -0.023, + -0.046, + -0.033, + -0.023, + -0.001, + 0.001, + -0.007, + -0.026, + -0.016, + -0.015, + -0.005, + -0.012, + -0.01, + -0.005, + -0.016, + -0.008, + -0.015, + -0.027, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.001, + -0.02, + -0.013, + -0.019, + -0.017, + 0.007, + 0.009, + -0.014, + -0.035, + -0.021, + null, + null, + null, + null, + null, + null, + null, + null, + -0.058, + -0.019, + -0.022, + -0.01, + -0.001, + -0.039, + -0.024, + -0.009, + -0.001, + -0.01, + -0.02, + -0.005, + -0.004, + -0.013, + -0.013, + -0.017, + 0.007, + -0.011, + -0.026, + -0.019, + -0.043, + -0.059, + -0.031, + -0.042, + -0.044, + -0.021, + 0.006, + 0.003, + -0.031, + -0.052, + -0.045, + -0.032, + -0.024, + -0.019, + -0.015, + -0.032, + -0.039, + -0.025, + -0.02, + -0.017, + -0.037, + -0.047, + -0.007, + -0.011, + -0.028, + -0.021, + -0.003, + 0.009, + 0.017, + 0.017, + -0.018, + -0.005, + -0.016, + 0.002, + -0.003, + -0.008, + 0.0, + 0.0, + -0.027, + -0.022, + -0.03, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.005, + null, + null, + 0.033, + 0.027, + 0.01, + 0.005, + -0.005, + -0.032, + 0.002, + 0.024, + -0.011, + -0.028, + -0.024, + -0.023, + null, + null, + null, + null, + null, + -0.001, + -0.023, + -0.045, + -0.037, + -0.02, + -0.007, + -0.01, + -0.021, + -0.034, + -0.005, + 0.01, + -0.015, + -0.013, + -0.013, + -0.005, + 0.01, + -0.001, + -0.024, + 0.013, + 0.016, + -0.014, + -0.032, + -0.03, + -0.027, + -0.029, + -0.031, + -0.06, + -0.032, + 0.014, + 0.013, + -0.027, + -0.019, + -0.046, + -0.026, + -0.027, + -0.007, + -0.016, + -0.018, + -0.012, + -0.027, + -0.005, + -0.009, + -0.005, + -0.029, + -0.043, + -0.018, + -0.018, + -0.01, + 0.003, + -0.009, + 0.012, + -0.0, + -0.028, + -0.027, + -0.012, + -0.024, + 0.002, + -0.013, + 0.005, + -0.001, + -0.004, + -0.023, + -0.022, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.036, + 0.035, + 0.04, + 0.025, + 0.011, + -0.006, + -0.029, + -0.033, + 0.008, + -0.007, + -0.021, + -0.012, + -0.019, + -0.031, + null, + null, + null, + null, + null, + -0.017, + -0.035, + -0.032, + -0.025, + -0.012, + -0.01, + -0.037, + -0.026, + -0.013, + -0.003, + -0.022, + -0.013, + -0.027, + -0.011, + -0.01, + -0.005, + -0.028, + -0.005, + -0.008, + -0.019, + -0.015, + -0.026, + -0.01, + -0.044, + -0.037, + -0.039, + -0.049, + -0.0, + 0.015, + 0.004, + -0.02, + -0.02, + -0.024, + -0.029, + -0.018, + -0.021, + -0.028, + -0.04, + -0.009, + -0.003, + -0.003, + -0.001, + -0.018, + -0.027, + -0.009, + 0.01, + 0.014, + 0.018, + 0.01, + -0.005, + -0.026, + -0.035, + -0.037, + -0.011, + -0.019, + -0.015, + 0.0, + -0.008, + 0.006, + 0.002, + -0.0, + -0.015, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.022, + null, + -0.008, + -0.011, + 0.025, + 0.041, + 0.048, + 0.065, + 0.025, + 0.006, + -0.008, + -0.054, + -0.038, + -0.012, + -0.011, + -0.016, + -0.013, + -0.02, + null, + null, + null, + null, + -0.008, + -0.016, + -0.037, + -0.035, + -0.038, + -0.02, + -0.009, + -0.043, + -0.028, + -0.03, + -0.001, + -0.018, + -0.035, + -0.032, + -0.023, + -0.013, + -0.007, + -0.016, + -0.018, + -0.021, + -0.031, + -0.03, + -0.017, + 0.002, + -0.04, + -0.054, + -0.024, + -0.049, + -0.046, + 0.004, + -0.007, + -0.004, + -0.017, + -0.011, + -0.03, + -0.02, + -0.033, + -0.041, + -0.03, + 0.004, + -0.015, + -0.001, + -0.006, + null, + -0.021, + -0.045, + -0.017, + 0.036, + 0.052, + 0.011, + 0.002, + -0.022, + -0.029, + -0.032, + -0.02, + -0.009, + -0.024, + 0.008, + -0.014, + 0.007, + 0.015, + 0.013, + 0.01, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.021, + -0.019, + -0.009, + -0.017, + 0.011, + 0.033, + 0.032, + 0.053, + 0.041, + -0.003, + 0.012, + -0.005, + -0.047, + -0.022, + 0.008, + -0.009, + -0.019, + -0.01, + -0.018, + null, + -0.024, + -0.019, + -0.024, + -0.016, + -0.038, + -0.034, + -0.039, + -0.041, + 0.002, + -0.024, + -0.05, + -0.023, + -0.018, + 0.0, + -0.013, + -0.025, + -0.041, + -0.025, + 0.002, + -0.012, + -0.008, + -0.039, + -0.029, + -0.031, + -0.016, + 0.006, + -0.026, + -0.063, + -0.053, + -0.022, + -0.059, + -0.004, + -0.021, + -0.006, + -0.0, + -0.01, + -0.025, + -0.021, + -0.018, + -0.027, + -0.024, + 0.006, + -0.009, + -0.012, + -0.007, + -0.0, + -0.019, + -0.054, + -0.04, + 0.024, + 0.062, + 0.038, + 0.004, + -0.022, + -0.016, + -0.035, + -0.051, + -0.014, + -0.017, + -0.019, + -0.008, + -0.006, + 0.01, + 0.017, + 0.015, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.035, + -0.013, + -0.005, + -0.002, + 0.017, + 0.014, + 0.032, + 0.037, + 0.005, + -0.003, + 0.014, + -0.032, + -0.035, + -0.003, + -0.002, + -0.019, + -0.006, + -0.015, + -0.014, + -0.025, + -0.022, + -0.025, + -0.029, + -0.012, + -0.022, + null, + null, + -0.016, + -0.007, + -0.034, + -0.017, + -0.01, + -0.005, + -0.01, + -0.021, + -0.032, + -0.036, + -0.0, + -0.026, + -0.017, + -0.035, + -0.04, + -0.023, + -0.012, + 0.0, + -0.025, + -0.059, + -0.059, + -0.022, + -0.041, + -0.032, + -0.008, + -0.005, + -0.017, + -0.014, + -0.019, + -0.034, + -0.02, + -0.017, + -0.023, + -0.004, + -0.001, + -0.017, + -0.01, + -0.006, + -0.018, + -0.048, + -0.071, + -0.003, + 0.05, + 0.067, + 0.031, + -0.032, + -0.042, + -0.025, + -0.041, + -0.033, + -0.013, + -0.018, + -0.02, + -0.023, + 0.003, + 0.004, + 0.003, + null, + null, + null, + null, + null, + null, + -0.043, + -0.055, + null, + null, + null, + null, + null, + -0.022, + -0.036, + 0.004, + -0.008, + -0.014, + -0.013, + 0.009, + 0.026, + 0.012, + -0.006, + -0.011, + -0.025, + -0.016, + -0.0, + -0.008, + -0.007, + -0.021, + -0.015, + -0.02, + -0.022, + -0.022, + -0.028, + -0.024, + -0.009, + null, + null, + null, + -0.025, + -0.011, + -0.037, + -0.02, + -0.009, + 0.003, + -0.003, + -0.007, + -0.014, + -0.029, + -0.026, + 0.003, + -0.027, + -0.037, + -0.023, + -0.024, + -0.003, + -0.004, + -0.004, + -0.037, + -0.04, + -0.04, + -0.03, + -0.021, + -0.002, + -0.01, + -0.016, + -0.01, + -0.022, + -0.032, + -0.02, + -0.009, + -0.02, + -0.008, + -0.01, + -0.016, + -0.011, + -0.005, + -0.002, + -0.036, + -0.06, + -0.021, + null, + 0.065, + 0.059, + 0.027, + -0.029, + -0.038, + -0.01, + -0.034, + -0.059, + -0.035, + -0.026, + -0.024, + -0.02, + -0.005, + -0.005, + null, + null, + null, + null, + null, + null, + -0.037, + -0.041, + null, + null, + null, + null, + null, + -0.025, + -0.021, + -0.021, + -0.007, + -0.014, + -0.021, + 0.001, + 0.022, + 0.032, + 0.001, + -0.04, + -0.021, + -0.011, + -0.009, + -0.004, + 0.001, + -0.026, + -0.03, + -0.024, + -0.024, + -0.023, + -0.038, + -0.028, + null, + null, + null, + null, + -0.047, + -0.018, + -0.023, + -0.024, + -0.03, + -0.001, + 0.02, + -0.009, + -0.019, + -0.015, + -0.019, + -0.018, + -0.009, + -0.027, + -0.048, + -0.023, + -0.027, + -0.033, + 0.002, + -0.02, + -0.05, + -0.046, + -0.017, + -0.018, + -0.025, + -0.015, + -0.005, + -0.014, + -0.014, + -0.026, + -0.017, + -0.01, + -0.023, + -0.023, + -0.009, + -0.001, + -0.0, + -0.007, + 0.003, + -0.011, + -0.034, + -0.032, + null, + null, + 0.047, + null, + -0.006, + -0.038, + -0.013, + -0.025, + -0.07, + -0.042, + -0.032, + -0.029, + -0.029, + -0.009, + -0.015, + null, + null, + null, + null, + null, + null, + null, + -0.038, + null, + null, + null, + null, + null, + -0.023, + -0.009, + -0.025, + -0.01, + -0.008, + -0.004, + 0.017, + 0.009, + 0.02, + 0.003, + -0.024, + -0.019, + -0.021, + -0.016, + -0.011, + -0.003, + 0.002, + -0.023, + -0.046, + -0.03, + -0.025, + -0.034, + -0.027, + null, + null, + null, + null, + -0.05, + -0.038, + -0.019, + -0.021, + -0.044, + -0.016, + -0.007, + 0.003, + -0.017, + -0.023, + -0.016, + -0.021, + -0.024, + -0.026, + -0.048, + -0.043, + -0.006, + -0.052, + -0.012, + -0.017, + -0.015, + -0.05, + -0.018, + -0.023, + -0.026, + -0.021, + -0.002, + 0.006, + -0.008, + -0.029, + -0.019, + -0.02, + -0.02, + -0.027, + -0.018, + 0.014, + 0.017, + 0.012, + 0.011, + -0.016, + -0.006, + null, + null, + 0.012, + 0.028, + 0.01, + -0.001, + -0.028, + -0.017, + -0.022, + -0.062, + -0.066, + -0.041, + -0.025, + -0.019, + -0.005, + -0.015, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.02, + -0.028, + -0.007, + -0.027, + -0.01, + 0.008, + 0.006, + 0.005, + 0.029, + -0.005, + -0.018, + -0.025, + -0.031, + -0.022, + -0.025, + -0.026, + 0.011, + -0.013, + -0.04, + -0.047, + -0.037, + -0.027, + null, + null, + null, + null, + null, + -0.037, + -0.041, + -0.021, + -0.019, + -0.032, + -0.031, + -0.035, + -0.039, + -0.015, + -0.028, + -0.016, + -0.015, + -0.044, + -0.026, + -0.045, + -0.063, + -0.016, + -0.031, + -0.039, + -0.032, + -0.008, + -0.037, + -0.033, + -0.028, + -0.027, + -0.036, + -0.019, + 0.01, + -0.005, + -0.019, + -0.014, + -0.024, + -0.026, + -0.02, + -0.016, + -0.003, + 0.019, + 0.015, + 0.016, + -0.005, + 0.002, + -0.021, + -0.01, + -0.001, + -0.012, + -0.023, + -0.003, + -0.017, + -0.028, + -0.008, + -0.048, + -0.074, + -0.038, + -0.022, + -0.015, + -0.013, + -0.017, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.026, + -0.033, + -0.019, + -0.006, + -0.01, + 0.004, + 0.007, + 0.009, + 0.012, + -0.003, + -0.018, + -0.031, + -0.043, + -0.027, + -0.022, + -0.035, + -0.004, + -0.007, + -0.034, + -0.043, + -0.049, + -0.045, + null, + null, + null, + null, + null, + -0.012, + -0.039, + -0.042, + -0.009, + -0.022, + -0.038, + -0.04, + -0.042, + -0.011, + -0.017, + -0.02, + -0.035, + -0.04, + -0.017, + -0.045, + -0.043, + -0.043, + -0.014, + -0.053, + -0.021, + -0.032, + -0.005, + -0.032, + -0.044, + -0.028, + -0.043, + -0.029, + 0.009, + -0.004, + -0.025, + -0.032, + -0.039, + -0.019, + -0.039, + -0.023, + -0.021, + 0.012, + 0.005, + 0.014, + 0.007, + -0.007, + -0.016, + -0.034, + -0.016, + -0.003, + -0.033, + -0.046, + -0.036, + -0.033, + -0.001, + -0.027, + -0.075, + -0.044, + -0.019, + -0.012, + -0.009, + -0.022, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.038, + -0.045, + -0.036, + -0.003, + -0.013, + -0.013, + 0.002, + 0.008, + 0.017, + 0.019, + -0.009, + -0.024, + -0.042, + -0.038, + -0.018, + -0.035, + -0.02, + -0.007, + -0.014, + -0.037, + -0.061, + -0.041, + -0.036, + 0.002, + -0.004, + null, + 0.009, + 0.005, + -0.037, + -0.04, + -0.022, + -0.022, + -0.025, + -0.032, + -0.038, + -0.036, + -0.007, + 0.003, + -0.027, + -0.034, + -0.016, + -0.015, + -0.028, + -0.021, + -0.022, + -0.029, + -0.031, + -0.011, + -0.018, + -0.014, + -0.031, + -0.044, + -0.045, + -0.038, + 0.004, + -0.007, + -0.019, + -0.002, + -0.037, + -0.028, + -0.027, + -0.04, + -0.035, + 0.004, + 0.006, + 0.021, + 0.029, + 0.011, + null, + -0.039, + 0.008, + 0.004, + -0.024, + -0.048, + -0.047, + -0.041, + -0.01, + -0.006, + -0.031, + -0.056, + -0.023, + -0.008, + -0.024, + -0.015, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.03, + -0.045, + -0.045, + -0.021, + -0.027, + -0.014, + -0.025, + 0.005, + 0.008, + 0.017, + 0.013, + -0.014, + -0.038, + -0.049, + -0.021, + -0.027, + -0.033, + -0.015, + -0.016, + -0.023, + -0.054, + -0.064, + null, + -0.039, + -0.012, + -0.001, + 0.015, + 0.007, + -0.017, + -0.055, + -0.047, + -0.018, + -0.031, + -0.044, + -0.042, + -0.043, + -0.036, + -0.002, + -0.017, + -0.017, + -0.021, + -0.007, + -0.007, + -0.022, + -0.034, + -0.029, + -0.039, + -0.047, + -0.017, + 0.008, + -0.034, + -0.039, + -0.036, + -0.032, + -0.015, + -0.02, + -0.013, + -0.021, + -0.028, + -0.027, + -0.023, + -0.025, + -0.04, + -0.027, + 0.0, + 0.016, + 0.036, + null, + null, + null, + -0.028, + null, + null, + -0.035, + -0.05, + -0.044, + -0.015, + 0.026, + -0.012, + -0.002, + -0.02, + -0.016, + -0.016, + -0.022, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.021, + 0.001, + -0.025, + -0.057, + -0.039, + -0.015, + -0.015, + -0.032, + -0.027, + 0.012, + 0.004, + 0.024, + 0.011, + -0.01, + -0.04, + -0.033, + -0.02, + -0.037, + -0.003, + -0.035, + -0.013, + -0.042, + -0.057, + -0.026, + -0.031, + -0.015, + -0.046, + -0.001, + 0.005, + 0.002, + -0.032, + -0.05, + -0.028, + -0.031, + -0.045, + -0.033, + -0.028, + -0.038, + -0.028, + -0.009, + -0.039, + -0.026, + -0.028, + -0.014, + -0.016, + -0.029, + -0.031, + -0.022, + -0.029, + -0.017, + -0.021, + -0.005, + -0.033, + -0.049, + -0.037, + -0.033, + -0.023, + -0.006, + -0.034, + -0.028, + -0.026, + -0.017, + -0.01, + -0.024, + -0.044, + -0.024, + 0.001, + 0.03, + 0.01, + 0.004, + null, + -0.016, + null, + null, + null, + -0.022, + -0.027, + -0.016, + 0.028, + 0.003, + 0.01, + 0.014, + -0.013, + -0.012, + -0.003, + null, + null, + null, + null, + null, + null, + 0.028, + null, + null, + null, + null, + null, + -0.024, + -0.007, + -0.013, + -0.023, + -0.046, + -0.015, + -0.008, + -0.033, + -0.031, + -0.002, + 0.02, + 0.003, + 0.013, + 0.011, + -0.011, + -0.026, + -0.022, + -0.014, + -0.018, + -0.028, + -0.029, + -0.031, + -0.055, + -0.039, + -0.017, + -0.022, + -0.047, + -0.023, + 0.007, + -0.003, + -0.007, + -0.04, + -0.05, + -0.021, + -0.046, + -0.026, + -0.022, + -0.031, + -0.016, + -0.009, + -0.035, + -0.03, + -0.017, + -0.025, + -0.015, + -0.027, + -0.029, + -0.016, + -0.013, + 0.005, + -0.016, + -0.019, + -0.023, + -0.045, + -0.051, + -0.049, + -0.036, + -0.026, + -0.028, + -0.041, + -0.051, + -0.013, + -0.004, + -0.017, + -0.034, + -0.036, + -0.006, + 0.021, + 0.0, + 0.009, + null, + -0.008, + null, + null, + null, + -0.004, + 0.013, + -0.01, + 0.008, + 0.022, + 0.019, + 0.027, + -0.006, + -0.019, + -0.016, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.038, + -0.039, + -0.012, + -0.013, + -0.032, + -0.053, + -0.03, + -0.044, + -0.035, + -0.034, + -0.0, + 0.029, + -0.002, + 0.009, + 0.006, + -0.011, + -0.027, + -0.017, + -0.029, + -0.018, + -0.027, + -0.018, + -0.046, + -0.035, + -0.002, + -0.014, + -0.023, + -0.021, + 0.003, + -0.001, + 0.006, + -0.018, + -0.042, + -0.04, + -0.042, + -0.031, + -0.012, + -0.002, + -0.007, + -0.016, + -0.011, + -0.019, + -0.018, + -0.011, + -0.004, + -0.0, + -0.01, + -0.021, + -0.023, + 0.017, + -0.0, + -0.019, + -0.026, + -0.038, + -0.058, + -0.046, + -0.049, + -0.04, + -0.016, + -0.043, + -0.029, + -0.023, + -0.017, + -0.018, + -0.03, + -0.031, + -0.022, + 0.018, + 0.025, + 0.01, + -0.013, + -0.02, + null, + null, + null, + -0.004, + 0.01, + null, + 0.008, + 0.033, + 0.019, + 0.02, + 0.012, + 0.002, + -0.018, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.037, + -0.029, + -0.023, + -0.013, + -0.007, + -0.028, + -0.038, + -0.032, + -0.042, + -0.042, + -0.014, + 0.014, + 0.027, + 0.006, + 0.011, + -0.011, + -0.03, + -0.043, + -0.027, + -0.016, + -0.032, + -0.009, + -0.029, + -0.018, + -0.017, + 0.002, + -0.013, + -0.011, + -0.008, + 0.005, + 0.007, + 0.004, + -0.017, + -0.027, + -0.04, + -0.031, + -0.014, + -0.018, + -0.005, + -0.025, + -0.023, + -0.016, + -0.019, + -0.023, + 0.016, + 0.008, + 0.001, + -0.018, + -0.008, + 0.006, + 0.02, + -0.003, + -0.015, + -0.028, + -0.038, + -0.032, + -0.037, + -0.041, + -0.022, + -0.021, + -0.014, + -0.04, + -0.034, + -0.023, + -0.038, + -0.03, + -0.024, + 0.015, + 0.02, + 0.011, + -0.015, + -0.007, + -0.01, + null, + null, + -0.001, + 0.015, + -0.027, + 0.007, + 0.016, + 0.022, + 0.012, + 0.005, + -0.008, + -0.006, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.039, + -0.039, + -0.027, + -0.009, + -0.032, + -0.027, + -0.025, + -0.047, + -0.04, + -0.033, + -0.011, + -0.012, + 0.027, + -0.003, + -0.01, + -0.021, + -0.032, + -0.032, + -0.015, + -0.049, + -0.026, + -0.029, + -0.022, + -0.019, + -0.013, + null, + null, + null, + null, + null, + 0.005, + 0.009, + -0.011, + -0.02, + -0.036, + -0.034, + -0.017, + -0.006, + -0.004, + -0.02, + -0.022, + -0.019, + -0.027, + -0.014, + 0.022, + 0.012, + 0.0, + -0.023, + -0.009, + 0.019, + -0.026, + -0.02, + -0.026, + -0.021, + -0.012, + -0.036, + -0.048, + -0.039, + -0.006, + -0.028, + -0.027, + -0.032, + -0.038, + -0.047, + -0.041, + -0.031, + -0.004, + 0.021, + 0.001, + -0.004, + -0.004, + -0.006, + null, + null, + -0.0, + 0.006, + -0.017, + -0.002, + -0.01, + 0.009, + 0.041, + 0.011, + -0.001, + -0.014, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.002, + -0.027, + -0.05, + -0.043, + -0.028, + -0.014, + -0.011, + -0.035, + -0.032, + -0.059, + -0.049, + -0.035, + -0.022, + 0.003, + 0.015, + -0.004, + -0.009, + -0.019, + -0.031, + -0.018, + -0.024, + -0.045, + -0.03, + -0.02, + -0.02, + -0.015, + -0.007, + -0.023, + null, + null, + null, + -0.001, + 0.005, + -0.003, + -0.014, + -0.019, + -0.036, + -0.033, + -0.018, + -0.008, + -0.012, + -0.014, + -0.015, + -0.016, + -0.035, + -0.005, + 0.024, + -0.002, + -0.021, + -0.019, + -0.013, + -0.019, + -0.026, + -0.025, + -0.016, + -0.03, + -0.036, + -0.051, + -0.031, + -0.006, + -0.019, + -0.025, + -0.03, + -0.036, + -0.037, + -0.036, + -0.025, + -0.027, + -0.009, + 0.01, + -0.021, + -0.023, + -0.034, + null, + -0.031, + -0.051, + 0.0, + 0.009, + -0.014, + -0.002, + 0.011, + 0.018, + 0.009, + -0.002, + -0.011, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.015, + -0.043, + -0.053, + -0.03, + -0.014, + -0.015, + -0.035, + -0.042, + -0.042, + -0.05, + -0.041, + -0.031, + -0.017, + 0.019, + -0.009, + 0.002, + 0.0, + -0.026, + -0.024, + -0.026, + -0.027, + -0.03, + -0.035, + -0.037, + -0.021, + -0.007, + -0.015, + null, + -0.031, + -0.012, + 0.018, + 0.001, + 0.004, + -0.002, + -0.026, + -0.022, + -0.036, + -0.04, + -0.016, + -0.013, + -0.01, + -0.016, + -0.018, + -0.03, + -0.024, + 0.009, + -0.001, + -0.005, + -0.019, + -0.021, + -0.024, + -0.024, + -0.031, + -0.013, + -0.03, + -0.031, + -0.036, + -0.032, + -0.017, + -0.013, + -0.031, + -0.037, + -0.041, + -0.032, + -0.036, + -0.036, + -0.033, + 0.01, + 0.012, + -0.001, + -0.036, + -0.045, + null, + -0.037, + -0.069, + -0.049, + -0.022, + 0.001, + -0.022, + 0.012, + -0.01, + -0.007, + -0.002, + -0.015, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.008, + -0.04, + -0.051, + -0.056, + -0.033, + 0.0, + -0.014, + -0.036, + -0.029, + -0.047, + -0.045, + -0.025, + -0.027, + -0.006, + 0.007, + -0.021, + -0.003, + -0.008, + -0.038, + -0.021, + -0.044, + -0.032, + -0.043, + -0.039, + -0.032, + -0.02, + -0.011, + -0.023, + -0.03, + -0.021, + 0.003, + 0.012, + 0.003, + 0.011, + 0.003, + -0.011, + -0.029, + -0.001, + -0.033, + -0.03, + -0.012, + -0.021, + -0.031, + -0.023, + -0.027, + -0.019, + -0.004, + -0.006, + -0.01, + -0.02, + -0.023, + -0.027, + -0.023, + -0.016, + -0.029, + -0.042, + -0.038, + -0.024, + -0.011, + -0.0, + -0.017, + -0.031, + -0.029, + -0.028, + -0.043, + -0.034, + -0.012, + 0.001, + 0.023, + 0.021, + -0.034, + null, + -0.056, + -0.04, + -0.064, + -0.061, + -0.022, + -0.027, + -0.019, + -0.005, + -0.011, + -0.012, + -0.003, + -0.017, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.003, + -0.032, + -0.064, + -0.05, + -0.041, + 0.002, + -0.006, + -0.016, + -0.036, + -0.048, + -0.047, + -0.043, + -0.036, + -0.023, + -0.014, + 0.0, + -0.019, + -0.01, + -0.026, + -0.03, + -0.03, + -0.032, + -0.034, + -0.032, + -0.024, + -0.031, + -0.029, + -0.026, + -0.031, + -0.044, + -0.029, + -0.006, + 0.014, + -0.014, + -0.007, + -0.023, + -0.036, + -0.009, + -0.044, + -0.024, + -0.024, + -0.014, + -0.02, + -0.02, + -0.018, + -0.021, + 0.007, + -0.001, + -0.014, + -0.016, + -0.019, + -0.023, + -0.029, + -0.014, + -0.018, + -0.044, + -0.04, + -0.025, + -0.02, + -0.023, + -0.001, + -0.008, + -0.013, + -0.029, + -0.044, + -0.043, + -0.02, + 0.014, + 0.0, + 0.007, + -0.005, + -0.046, + -0.06, + -0.063, + -0.051, + -0.036, + -0.037, + -0.035, + -0.017, + -0.002, + -0.012, + -0.019, + 0.003, + -0.026, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.002, + -0.014, + -0.053, + -0.051, + -0.031, + -0.016, + -0.009, + -0.026, + -0.031, + -0.04, + -0.057, + -0.053, + -0.045, + -0.035, + -0.023, + -0.009, + -0.017, + -0.017, + -0.01, + -0.043, + -0.026, + -0.022, + -0.023, + -0.014, + -0.037, + -0.041, + -0.033, + -0.033, + -0.028, + -0.036, + -0.049, + -0.037, + 0.002, + -0.024, + -0.027, + -0.03, + -0.034, + -0.04, + -0.036, + -0.034, + -0.011, + -0.021, + -0.019, + -0.018, + -0.02, + -0.006, + -0.019, + -0.011, + -0.03, + -0.027, + -0.026, + -0.04, + -0.029, + -0.027, + -0.014, + -0.044, + -0.034, + -0.031, + -0.031, + -0.016, + 0.009, + 0.002, + -0.019, + -0.026, + -0.037, + -0.057, + -0.017, + -0.023, + -0.013, + -0.003, + -0.003, + -0.026, + -0.055, + -0.076, + -0.055, + -0.029, + -0.018, + -0.048, + -0.017, + -0.02, + -0.028, + -0.004, + 0.005, + 0.0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.009, + -0.031, + -0.062, + -0.037, + -0.027, + -0.029, + -0.033, + -0.023, + -0.03, + -0.044, + -0.058, + -0.053, + -0.023, + -0.017, + -0.018, + -0.005, + -0.005, + -0.006, + -0.038, + -0.028, + -0.023, + -0.043, + -0.027, + -0.047, + -0.053, + -0.031, + -0.025, + -0.043, + -0.036, + -0.033, + -0.033, + -0.006, + -0.019, + null, + null, + -0.046, + -0.037, + -0.042, + -0.043, + -0.019, + -0.009, + -0.012, + -0.027, + -0.023, + -0.004, + -0.009, + -0.039, + -0.044, + -0.044, + -0.013, + -0.031, + -0.024, + -0.021, + -0.012, + -0.033, + -0.055, + -0.02, + -0.024, + 0.011, + 0.026, + 0.019, + -0.002, + -0.03, + -0.024, + -0.047, + -0.005, + -0.029, + -0.015, + -0.026, + -0.014, + -0.004, + -0.029, + -0.056, + -0.066, + -0.027, + -0.012, + -0.032, + -0.018, + -0.028, + -0.029, + 0.012, + 0.039, + 0.023, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.017, + -0.011, + -0.033, + -0.042, + -0.03, + -0.021, + -0.03, + -0.025, + -0.026, + -0.03, + -0.042, + -0.058, + -0.049, + 0.001, + -0.018, + 0.003, + 0.007, + 0.009, + -0.013, + -0.023, + -0.026, + -0.015, + -0.027, + -0.03, + -0.041, + -0.044, + -0.033, + -0.046, + -0.044, + -0.038, + null, + null, + null, + null, + null, + -0.05, + -0.038, + -0.027, + -0.036, + -0.024, + -0.014, + -0.014, + -0.015, + -0.019, + -0.014, + -0.007, + -0.028, + -0.034, + -0.045, + -0.024, + -0.015, + -0.014, + -0.02, + -0.004, + -0.044, + -0.037, + -0.029, + -0.017, + -0.02, + 0.01, + 0.039, + -0.001, + -0.015, + -0.016, + -0.028, + -0.034, + -0.026, + -0.022, + -0.039, + -0.026, + 0.001, + -0.015, + -0.058, + -0.056, + -0.03, + -0.002, + -0.016, + -0.017, + 0.005, + -0.015, + 0.011, + 0.036, + 0.028, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.03, + -0.033, + -0.039, + -0.04, + -0.034, + -0.036, + -0.005, + -0.028, + -0.02, + -0.029, + -0.039, + -0.055, + -0.053, + -0.029, + -0.008, + 0.037, + 0.017, + 0.016, + 0.014, + -0.004, + -0.013, + -0.014, + -0.037, + -0.036, + -0.049, + -0.068, + -0.056, + null, + null, + null, + null, + null, + null, + null, + null, + -0.048, + -0.073, + -0.058, + -0.025, + -0.013, + -0.013, + -0.02, + -0.017, + -0.016, + -0.009, + -0.019, + -0.016, + -0.015, + -0.037, + -0.047, + -0.016, + -0.023, + -0.02, + 0.012, + -0.043, + -0.032, + -0.022, + -0.03, + -0.02, + -0.009, + 0.022, + 0.003, + -0.039, + -0.021, + -0.019, + -0.028, + -0.043, + -0.046, + -0.053, + -0.035, + -0.015, + -0.01, + -0.046, + -0.043, + -0.02, + -0.002, + -0.011, + -0.003, + 0.016, + 0.006, + 0.024, + 0.025, + 0.022, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.041, + -0.036, + -0.012, + -0.022, + -0.046, + -0.046, + -0.035, + -0.008, + -0.026, + -0.032, + -0.021, + -0.061, + -0.063, + -0.059, + -0.011, + 0.012, + 0.01, + 0.011, + 0.018, + -0.006, + -0.023, + -0.011, + -0.028, + -0.024, + -0.047, + -0.042, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.068, + -0.064, + -0.043, + -0.014, + -0.017, + -0.024, + -0.021, + -0.017, + -0.012, + -0.013, + -0.012, + 0.002, + -0.0, + -0.047, + -0.04, + -0.029, + -0.017, + -0.018, + -0.035, + -0.043, + -0.005, + -0.037, + -0.038, + -0.02, + -0.002, + 0.011, + -0.028, + -0.037, + -0.017, + -0.012, + -0.039, + -0.041, + -0.038, + -0.047, + -0.033, + -0.004, + -0.019, + -0.045, + -0.023, + -0.006, + 0.001, + -0.013, + 0.003, + 0.03, + 0.032, + 0.064, + 0.056, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.03, + -0.04, + null, + -0.019, + -0.039, + -0.032, + -0.026, + -0.014, + -0.026, + -0.026, + -0.022, + -0.055, + -0.074, + -0.078, + -0.029, + 0.019, + 0.013, + 0.028, + 0.019, + -0.005, + -0.014, + -0.018, + -0.011, + -0.027, + -0.053, + -0.04, + -0.035, + -0.078, + null, + null, + null, + null, + null, + null, + null, + null, + -0.064, + -0.093, + -0.052, + -0.023, + -0.007, + -0.003, + -0.032, + -0.027, + -0.01, + -0.018, + -0.025, + 0.014, + 0.024, + -0.017, + -0.049, + -0.044, + -0.029, + -0.021, + -0.013, + -0.043, + -0.006, + -0.032, + -0.022, + -0.039, + -0.016, + -0.009, + -0.009, + -0.045, + -0.025, + -0.017, + -0.027, + -0.021, + -0.044, + -0.052, + -0.041, + 0.003, + 0.014, + -0.023, + -0.027, + -0.022, + 0.004, + -0.023, + -0.003, + 0.003, + 0.047, + 0.036, + 0.035, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.009, + -0.027, + null, + null, + -0.026, + -0.024, + -0.017, + -0.018, + -0.025, + -0.045, + -0.053, + -0.044, + -0.06, + -0.079, + -0.058, + -0.02, + 0.017, + 0.015, + 0.018, + -0.006, + -0.026, + -0.022, + -0.027, + -0.017, + -0.031, + -0.035, + -0.017, + -0.051, + -0.041, + -0.056, + null, + null, + null, + null, + null, + null, + -0.061, + -0.069, + -0.064, + -0.029, + -0.017, + -0.005, + -0.002, + -0.033, + -0.015, + -0.018, + -0.003, + 0.001, + 0.029, + 0.022, + -0.03, + -0.057, + -0.042, + -0.014, + -0.004, + -0.009, + -0.027, + -0.024, + -0.018, + -0.049, + -0.018, + -0.01, + -0.015, + -0.026, + -0.026, + -0.028, + -0.024, + -0.051, + -0.046, + -0.042, + -0.059, + -0.015, + 0.007, + 0.004, + -0.02, + -0.01, + -0.009, + -0.008, + -0.007, + -0.003, + 0.011, + 0.011, + 0.05, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.014, + -0.025, + -0.012, + -0.024, + -0.034, + -0.036, + -0.055, + -0.042, + -0.035, + -0.045, + -0.06, + -0.044, + -0.009, + 0.024, + 0.03, + -0.008, + -0.021, + -0.026, + -0.015, + 0.002, + -0.024, + -0.03, + -0.033, + -0.029, + -0.031, + -0.027, + -0.052, + null, + null, + null, + null, + null, + -0.027, + -0.049, + -0.063, + -0.039, + -0.024, + -0.011, + 0.032, + -0.01, + -0.02, + -0.022, + -0.006, + 0.006, + 0.027, + 0.035, + -0.006, + -0.043, + -0.06, + -0.038, + -0.006, + -0.002, + -0.041, + -0.01, + -0.017, + -0.034, + -0.026, + -0.016, + 0.006, + -0.005, + -0.023, + -0.017, + -0.018, + -0.036, + -0.061, + -0.05, + -0.064, + -0.035, + -0.001, + 0.011, + 0.007, + 0.017, + 0.012, + 0.025, + -0.01, + -0.011, + -0.002, + 0.011, + 0.023, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.0, + -0.003, + -0.023, + -0.027, + -0.035, + -0.041, + -0.04, + -0.044, + -0.049, + -0.044, + -0.036, + -0.041, + -0.047, + -0.035, + -0.012, + 0.0, + 0.017, + -0.013, + -0.02, + -0.009, + 0.003, + -0.023, + -0.04, + -0.036, + -0.033, + -0.023, + -0.004, + -0.036, + null, + null, + null, + null, + null, + 0.012, + 0.014, + -0.023, + -0.025, + -0.031, + -0.012, + 0.006, + 0.003, + -0.026, + -0.033, + -0.018, + -0.002, + 0.029, + 0.024, + 0.012, + -0.043, + -0.064, + -0.056, + -0.031, + -0.013, + -0.025, + -0.022, + -0.018, + 0.005, + -0.034, + -0.021, + -0.003, + 0.007, + -0.016, + -0.029, + -0.03, + null, + -0.035, + -0.043, + -0.049, + -0.068, + -0.004, + 0.002, + 0.002, + 0.016, + 0.01, + 0.008, + -0.012, + -0.025, + -0.017, + -0.008, + 0.005, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.004, + -0.02, + -0.023, + -0.025, + -0.04, + -0.048, + -0.055, + -0.056, + -0.045, + -0.033, + -0.041, + -0.036, + -0.042, + -0.052, + 0.001, + -0.0, + -0.009, + -0.028, + -0.02, + -0.007, + -0.03, + -0.027, + -0.04, + -0.028, + -0.019, + 0.003, + -0.014, + -0.043, + null, + null, + null, + null, + 0.033, + 0.071, + 0.069, + -0.002, + -0.015, + -0.01, + -0.007, + 0.004, + -0.02, + -0.03, + -0.035, + -0.021, + 0.035, + 0.011, + 0.008, + -0.022, + -0.036, + -0.059, + -0.057, + -0.024, + -0.008, + -0.033, + -0.034, + -0.003, + -0.015, + -0.02, + -0.02, + -0.007, + -0.014, + -0.041, + -0.04, + -0.025, + -0.018, + -0.018, + -0.04, + -0.063, + -0.003, + -0.02, + 0.007, + -0.024, + -0.005, + -0.009, + -0.009, + -0.022, + -0.023, + -0.043, + -0.029, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.01, + -0.02, + -0.008, + -0.032, + -0.057, + -0.05, + -0.046, + -0.049, + -0.028, + -0.026, + -0.023, + -0.046, + -0.053, + -0.008, + 0.011, + 0.002, + -0.006, + -0.022, + -0.028, + -0.022, + -0.026, + -0.037, + -0.026, + -0.025, + -0.002, + -0.007, + null, + null, + null, + null, + -0.003, + 0.014, + 0.127, + 0.207, + 0.128, + 0.038, + 0.005, + -0.008, + 0.01, + -0.01, + -0.034, + -0.03, + -0.018, + 0.004, + 0.024, + 0.009, + -0.001, + -0.019, + -0.041, + -0.058, + -0.04, + -0.02, + -0.027, + -0.038, + -0.015, + -0.025, + -0.036, + -0.027, + -0.023, + -0.033, + -0.033, + -0.023, + -0.024, + -0.015, + 0.013, + -0.021, + -0.049, + -0.044, + -0.043, + -0.02, + -0.017, + -0.04, + -0.045, + -0.043, + 0.006, + -0.002, + -0.019, + -0.032, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.021, + 0.007, + -0.001, + -0.009, + -0.042, + -0.042, + -0.047, + -0.041, + -0.037, + -0.029, + -0.031, + -0.029, + -0.053, + -0.023, + 0.009, + 0.0, + 0.009, + -0.021, + -0.033, + -0.012, + -0.04, + -0.031, + -0.034, + -0.051, + -0.041, + -0.023, + null, + null, + null, + null, + null, + null, + null, + null, + 0.361, + 0.161, + 0.045, + 0.011, + 0.007, + -0.002, + -0.032, + -0.036, + -0.014, + -0.015, + -0.001, + 0.02, + 0.001, + -0.013, + -0.021, + -0.052, + -0.063, + -0.021, + -0.019, + -0.036, + -0.027, + 0.004, + -0.034, + -0.03, + -0.02, + -0.041, + -0.04, + -0.012, + -0.016, + -0.031, + 0.001, + -0.008, + -0.043, + -0.05, + -0.045, + -0.058, + -0.014, + -0.017, + -0.047, + -0.018, + -0.023, + 0.011, + -0.009, + -0.033, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.036, + null, + null, + 0.009, + -0.014, + 0.003, + -0.03, + -0.037, + -0.052, + -0.044, + -0.045, + -0.021, + -0.046, + -0.031, + -0.049, + -0.017, + -0.001, + -0.011, + -0.004, + 0.009, + -0.007, + -0.03, + -0.036, + -0.025, + -0.019, + -0.034, + -0.068, + -0.049, + null, + -0.024, + -0.038, + -0.038, + null, + -0.007, + null, + 0.343, + 0.553, + 0.394, + 0.159, + 0.041, + 0.003, + 0.004, + -0.017, + -0.021, + -0.013, + -0.026, + -0.031, + -0.004, + 0.003, + -0.022, + -0.007, + -0.03, + -0.062, + -0.047, + -0.014, + -0.033, + -0.035, + -0.014, + -0.014, + -0.032, + -0.03, + -0.044, + -0.039, + -0.012, + -0.008, + -0.033, + -0.01, + 0.006, + -0.029, + -0.036, + -0.052, + -0.062, + -0.057, + -0.025, + -0.048, + -0.034, + -0.037, + 0.005, + -0.005, + -0.042, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.023, + null, + null, + null, + -0.006, + -0.009, + -0.008, + -0.018, + -0.047, + -0.05, + -0.054, + -0.049, + -0.03, + -0.022, + -0.037, + -0.031, + -0.014, + -0.032, + 0.001, + 0.016, + -0.012, + -0.014, + -0.037, + -0.023, + -0.031, + -0.015, + -0.018, + -0.057, + -0.053, + -0.035, + -0.042, + -0.036, + -0.032, + null, + -0.018, + 0.034, + 0.277, + 0.657, + 0.705, + 0.357, + 0.095, + 0.02, + -0.01, + 0.009, + -0.028, + -0.005, + -0.005, + -0.034, + -0.006, + -0.003, + -0.006, + 0.014, + -0.02, + -0.046, + -0.051, + -0.035, + -0.026, + -0.036, + -0.036, + -0.05, + -0.037, + -0.043, + -0.034, + -0.028, + -0.011, + -0.007, + -0.023, + -0.013, + 0.008, + 0.0, + -0.024, + -0.047, + -0.063, + -0.059, + -0.036, + -0.029, + -0.045, + -0.029, + -0.027, + -0.022, + -0.027, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.01, + -0.018, + -0.014, + -0.026, + -0.043, + -0.055, + -0.052, + -0.039, + -0.019, + -0.028, + -0.047, + -0.046, + -0.041, + -0.01, + 0.027, + 0.044, + -0.021, + -0.044, + -0.044, + -0.024, + -0.027, + -0.022, + -0.035, + -0.05, + -0.033, + -0.03, + -0.026, + -0.032, + -0.026, + -0.034, + -0.005, + 0.156, + 0.559, + 0.908, + 0.689, + 0.204, + 0.036, + -0.004, + 0.007, + -0.019, + -0.027, + -0.007, + -0.025, + -0.031, + -0.003, + 0.019, + 0.007, + -0.005, + -0.038, + -0.069, + -0.047, + -0.019, + -0.023, + -0.034, + -0.041, + -0.068, + -0.037, + -0.024, + -0.029, + -0.018, + -0.016, + -0.006, + -0.023, + 0.003, + -0.012, + -0.023, + -0.033, + -0.045, + -0.043, + -0.039, + -0.013, + -0.036, + -0.039, + -0.021, + -0.023, + -0.018, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.026, + -0.019, + -0.017, + -0.001, + -0.016, + -0.037, + -0.04, + -0.039, + -0.035, + -0.036, + -0.042, + -0.045, + -0.036, + -0.041, + -0.019, + 0.015, + 0.058, + 0.034, + -0.027, + -0.045, + -0.026, + -0.02, + -0.022, + -0.029, + -0.052, + -0.049, + -0.033, + -0.033, + -0.039, + -0.036, + -0.029, + -0.017, + 0.06, + 0.361, + 0.847, + 0.925, + 0.441, + 0.102, + 0.003, + -0.005, + -0.018, + -0.015, + -0.015, + -0.016, + -0.033, + -0.02, + -0.01, + -0.006, + -0.009, + -0.023, + -0.041, + -0.062, + -0.048, + -0.031, + -0.045, + -0.032, + -0.087, + -0.061, + -0.021, + -0.031, + -0.034, + -0.023, + 0.005, + -0.036, + -0.045, + -0.034, + -0.039, + -0.013, + -0.029, + -0.048, + -0.027, + -0.014, + -0.033, + -0.039, + -0.019, + -0.03, + -0.025, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.016, + -0.024, + -0.039, + -0.024, + -0.001, + 0.001, + -0.03, + -0.021, + -0.021, + -0.026, + -0.028, + -0.044, + -0.049, + -0.038, + -0.024, + -0.037, + -0.014, + 0.029, + 0.042, + -0.007, + -0.029, + -0.021, + -0.009, + -0.008, + -0.043, + -0.056, + -0.055, + -0.043, + -0.041, + -0.036, + -0.043, + -0.028, + 0.008, + 0.015, + 0.17, + 0.568, + 0.91, + 0.65, + 0.221, + 0.02, + -0.01, + -0.012, + 0.001, + -0.016, + -0.008, + -0.031, + -0.04, + -0.008, + -0.002, + 0.006, + -0.029, + -0.057, + -0.066, + -0.049, + -0.05, + -0.052, + -0.065, + -0.073, + -0.077, + -0.03, + -0.023, + -0.045, + -0.016, + -0.02, + -0.012, + -0.068, + -0.055, + -0.049, + -0.027, + -0.016, + -0.039, + -0.029, + -0.023, + -0.02, + -0.053, + -0.048, + -0.019, + -0.005, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.03, + -0.03, + -0.02, + -0.021, + -0.006, + -0.007, + -0.009, + -0.006, + -0.009, + -0.03, + -0.048, + -0.042, + -0.023, + -0.037, + -0.019, + -0.02, + 0.021, + 0.004, + -0.027, + -0.044, + -0.004, + 0.002, + -0.036, + -0.048, + -0.064, + -0.052, + -0.044, + -0.037, + -0.049, + -0.033, + 0.007, + 0.01, + 0.055, + 0.264, + 0.611, + 0.691, + null, + 0.066, + -0.012, + -0.035, + 0.003, + 0.0, + -0.011, + -0.032, + -0.033, + -0.046, + -0.025, + -0.022, + -0.005, + -0.044, + -0.077, + -0.073, + -0.037, + -0.059, + -0.074, + -0.055, + -0.057, + -0.04, + -0.02, + -0.052, + -0.029, + -0.03, + -0.012, + -0.04, + -0.063, + -0.037, + -0.048, + -0.02, + -0.026, + -0.036, + -0.027, + -0.016, + -0.021, + -0.058, + -0.02, + -0.004, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.051, + -0.04, + null, + -0.012, + -0.015, + 0.009, + 0.012, + -0.01, + -0.02, + -0.017, + -0.05, + -0.064, + -0.044, + -0.022, + -0.054, + -0.012, + -0.004, + 0.0, + -0.01, + -0.045, + -0.029, + -0.013, + -0.007, + -0.017, + -0.053, + -0.045, + -0.047, + -0.046, + -0.044, + -0.031, + -0.018, + 0.006, + 0.012, + 0.094, + 0.31, + 0.527, + null, + 0.135, + -0.006, + -0.039, + -0.045, + -0.01, + -0.013, + -0.022, + -0.05, + -0.044, + -0.037, + -0.027, + -0.021, + -0.057, + -0.056, + -0.057, + -0.051, + -0.059, + -0.059, + -0.08, + -0.04, + -0.048, + -0.044, + -0.034, + -0.053, + -0.046, + -0.021, + -0.007, + -0.049, + -0.045, + -0.066, + -0.057, + -0.024, + -0.023, + -0.028, + -0.022, + -0.026, + -0.028, + -0.041, + 0.002, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.015, + 0.001, + 0.018, + -0.011, + -0.017, + -0.015, + -0.045, + -0.071, + -0.055, + -0.007, + -0.056, + -0.034, + -0.02, + 0.001, + -0.019, + -0.048, + -0.059, + -0.013, + -0.002, + -0.032, + -0.038, + -0.031, + -0.04, + -0.06, + -0.054, + -0.025, + -0.043, + -0.025, + -0.025, + 0.012, + 0.104, + 0.293, + null, + 0.161, + 0.014, + -0.027, + -0.017, + -0.024, + -0.026, + -0.021, + -0.051, + -0.061, + -0.057, + -0.023, + -0.04, + -0.041, + -0.059, + -0.04, + -0.048, + -0.043, + -0.054, + -0.061, + -0.054, + -0.031, + -0.043, + -0.047, + -0.059, + -0.063, + -0.033, + -0.01, + -0.036, + -0.052, + -0.061, + -0.08, + -0.081, + -0.035, + -0.035, + -0.027, + -0.018, + -0.006, + -0.019, + 0.012, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.014, + 0.015, + -0.004, + -0.016, + -0.02, + -0.034, + -0.061, + -0.066, + -0.02, + -0.047, + -0.044, + -0.019, + -0.009, + -0.006, + -0.041, + -0.048, + -0.012, + -0.004, + -0.022, + -0.035, + -0.026, + -0.024, + -0.049, + -0.054, + -0.035, + -0.06, + -0.066, + -0.038, + -0.011, + 0.004, + 0.113, + 0.26, + 0.157, + 0.039, + -0.004, + -0.012, + -0.024, + -0.037, + -0.035, + -0.024, + -0.039, + -0.049, + -0.018, + -0.035, + -0.042, + -0.052, + -0.026, + -0.02, + -0.032, + -0.046, + -0.041, + -0.03, + -0.032, + -0.028, + -0.029, + -0.039, + -0.069, + -0.05, + -0.006, + -0.016, + -0.045, + -0.074, + -0.082, + -0.079, + -0.061, + -0.025, + -0.016, + -0.026, + 0.005, + -0.001, + 0.009, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.014, + -0.017, + 0.008, + -0.008, + -0.012, + -0.024, + -0.04, + -0.066, + -0.031, + -0.047, + -0.042, + -0.018, + -0.007, + -0.027, + -0.026, + -0.045, + -0.02, + -0.011, + -0.015, + -0.037, + -0.036, + -0.018, + -0.039, + -0.057, + -0.036, + -0.038, + -0.063, + -0.055, + -0.023, + -0.005, + -0.01, + 0.081, + 0.081, + 0.035, + -0.001, + -0.023, + -0.02, + -0.013, + -0.002, + -0.042, + -0.038, + -0.031, + -0.029, + -0.042, + -0.038, + -0.049, + -0.031, + -0.012, + -0.02, + -0.023, + -0.029, + -0.025, + -0.033, + -0.028, + -0.01, + -0.028, + -0.046, + -0.063, + -0.015, + -0.002, + -0.027, + -0.056, + -0.091, + -0.081, + -0.079, + -0.028, + -0.012, + -0.001, + 0.005, + 0.042, + 0.01, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.007, + -0.021, + -0.012, + -0.017, + -0.011, + -0.031, + -0.053, + -0.048, + -0.034, + -0.066, + -0.036, + -0.011, + 0.005, + -0.024, + -0.041, + -0.031, + -0.015, + -0.023, + -0.056, + -0.041, + -0.018, + -0.023, + -0.03, + -0.016, + -0.018, + -0.044, + -0.062, + -0.051, + -0.008, + -0.017, + 0.012, + 0.025, + 0.016, + -0.007, + -0.019, + -0.011, + 0.009, + -0.008, + -0.032, + -0.049, + -0.027, + -0.029, + -0.028, + -0.046, + -0.04, + -0.033, + -0.01, + -0.035, + -0.031, + -0.035, + -0.028, + -0.042, + -0.02, + -0.002, + -0.003, + -0.01, + -0.048, + -0.017, + -0.015, + -0.02, + -0.054, + -0.073, + -0.085, + -0.081, + -0.057, + -0.015, + -0.009, + 0.016, + -0.015, + 0.001, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.022, + -0.029, + -0.028, + -0.014, + -0.011, + -0.031, + -0.048, + -0.032, + -0.05, + -0.062, + -0.038, + 0.004, + -0.017, + -0.019, + -0.041, + -0.017, + -0.011, + -0.04, + -0.05, + -0.039, + -0.016, + -0.024, + 0.01, + -0.003, + -0.012, + -0.054, + -0.065, + -0.028, + -0.013, + -0.033, + 0.007, + -0.003, + -0.018, + -0.032, + -0.025, + 0.006, + 0.025, + 0.001, + -0.031, + -0.024, + -0.016, + -0.014, + -0.031, + -0.041, + -0.036, + -0.019, + -0.023, + -0.028, + -0.034, + -0.025, + -0.048, + -0.04, + 0.005, + 0.009, + -0.005, + -0.033, + -0.027, + -0.016, + -0.028, + -0.045, + -0.049, + -0.08, + -0.077, + -0.061, + -0.022, + -0.044, + -0.011, + -0.013, + -0.009, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.008, + 0.003, + -0.025, + -0.021, + -0.012, + -0.03, + -0.05, + -0.019, + -0.024, + -0.065, + -0.052, + -0.014, + 0.001, + -0.006, + -0.016, + -0.012, + -0.033, + -0.035, + -0.065, + -0.04, + -0.036, + -0.025, + 0.013, + 0.025, + -0.005, + -0.048, + -0.071, + -0.063, + -0.015, + -0.016, + -0.019, + -0.019, + -0.033, + -0.025, + -0.04, + -0.017, + 0.003, + 0.018, + -0.007, + -0.032, + -0.03, + -0.043, + -0.03, + -0.039, + -0.036, + -0.013, + -0.027, + -0.03, + -0.028, + -0.021, + -0.039, + -0.039, + -0.016, + 0.008, + 0.015, + -0.018, + -0.023, + -0.027, + -0.033, + -0.051, + -0.046, + -0.063, + -0.076, + -0.059, + -0.036, + -0.039, + -0.058, + -0.03, + -0.01, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.011, + -0.003, + -0.003, + -0.025, + -0.011, + -0.015, + -0.032, + -0.027, + -0.028, + -0.047, + -0.059, + -0.028, + 0.017, + 0.034, + 0.012, + -0.015, + -0.026, + -0.05, + -0.048, + -0.047, + -0.051, + -0.048, + -0.008, + 0.018, + -0.0, + -0.028, + -0.057, + -0.071, + -0.043, + 0.004, + -0.009, + -0.038, + -0.029, + -0.063, + -0.03, + null, + -0.015, + 0.005, + 0.002, + -0.03, + -0.043, + -0.046, + -0.031, + -0.042, + -0.023, + -0.007, + -0.022, + -0.016, + -0.007, + -0.03, + -0.009, + -0.043, + -0.048, + -0.005, + 0.008, + -0.021, + -0.023, + -0.041, + -0.046, + -0.045, + -0.04, + -0.04, + -0.052, + -0.02, + -0.021, + -0.044, + -0.061, + -0.043, + -0.03, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.056, + null, + -0.056, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.006, + 0.003, + -0.009, + -0.002, + -0.006, + -0.011, + -0.016, + -0.042, + -0.016, + -0.046, + -0.053, + 0.004, + 0.036, + 0.024, + -0.013, + -0.014, + -0.052, + -0.05, + -0.069, + -0.07, + -0.055, + -0.035, + -0.006, + -0.008, + -0.025, + -0.057, + -0.053, + -0.07, + null, + -0.015, + null, + -0.025, + -0.045, + -0.043, + null, + -0.019, + 0.006, + 0.008, + -0.015, + -0.037, + -0.04, + -0.051, + -0.048, + -0.015, + 0.0, + -0.019, + -0.006, + -0.014, + -0.027, + -0.022, + -0.03, + -0.041, + -0.038, + -0.001, + -0.026, + -0.034, + -0.04, + -0.032, + -0.016, + -0.03, + -0.055, + -0.039, + -0.04, + -0.035, + -0.037, + -0.047, + -0.057, + -0.048, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.058, + -0.068, + -0.062, + null, + null, + null, + null, + null, + null, + null, + null, + -0.004, + -0.001, + null, + -0.0, + 0.002, + -0.0, + -0.001, + -0.004, + -0.011, + -0.031, + -0.031, + -0.028, + -0.046, + -0.02, + 0.007, + 0.018, + -0.007, + -0.019, + -0.007, + -0.061, + -0.053, + -0.066, + -0.062, + -0.04, + -0.025, + -0.018, + -0.028, + -0.066, + -0.061, + -0.033, + -0.04, + null, + null, + null, + null, + null, + null, + -0.029, + -0.023, + 0.0, + -0.009, + -0.026, + -0.028, + -0.047, + -0.044, + -0.028, + 0.005, + -0.004, + -0.014, + -0.013, + -0.019, + -0.03, + -0.008, + -0.038, + -0.048, + -0.035, + -0.023, + -0.019, + -0.044, + -0.043, + -0.008, + -0.027, + -0.041, + -0.052, + -0.029, + -0.031, + -0.037, + -0.05, + -0.053, + -0.054, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.061, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.001, + 0.01, + 0.002, + -0.012, + -0.023, + -0.004, + -0.03, + -0.045, + -0.056, + -0.039, + -0.016, + 0.005, + -0.012, + -0.021, + -0.008, + -0.034, + -0.061, + -0.025, + -0.054, + -0.051, + -0.044, + -0.041, + -0.034, + -0.069, + -0.059, + -0.064, + -0.033, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.029, + -0.031, + -0.03, + -0.041, + -0.034, + -0.008, + 0.005, + -0.014, + -0.002, + -0.023, + -0.024, + -0.021, + 0.01, + -0.034, + -0.04, + -0.05, + -0.028, + -0.024, + -0.027, + -0.049, + -0.043, + -0.027, + -0.04, + -0.057, + -0.037, + -0.021, + -0.034, + -0.045, + -0.051, + -0.047, + null, + null, + null, + null, + null, + -0.033, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.009, + 0.006, + 0.008, + -0.001, + -0.025, + -0.009, + -0.038, + -0.047, + -0.059, + -0.053, + -0.026, + -0.022, + -0.025, + -0.037, + -0.013, + -0.011, + -0.041, + -0.049, + -0.038, + -0.031, + -0.045, + -0.034, + -0.021, + -0.047, + -0.054, + -0.061, + -0.039, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.046, + -0.038, + -0.031, + -0.054, + -0.018, + 0.038, + 0.001, + 0.016, + -0.019, + -0.028, + -0.019, + -0.007, + -0.014, + -0.023, + -0.025, + -0.033, + -0.021, + -0.025, + -0.044, + -0.04, + -0.051, + -0.006, + -0.042, + -0.035, + -0.026, + -0.017, + -0.038, + -0.051, + -0.051, + null, + null, + null, + null, + null, + -0.023, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.022, + -0.015, + 0.017, + -0.004, + -0.019, + -0.022, + -0.037, + -0.057, + -0.048, + -0.04, + -0.03, + -0.01, + -0.019, + -0.035, + -0.032, + -0.011, + -0.037, + -0.037, + -0.03, + -0.012, + -0.042, + -0.018, + -0.015, + -0.016, + -0.044, + -0.051, + -0.073, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.041, + -0.031, + -0.048, + -0.019, + 0.012, + 0.046, + -0.001, + 0.001, + -0.03, + -0.009, + -0.003, + 0.015, + 0.0, + -0.02, + -0.02, + -0.021, + -0.027, + -0.026, + -0.035, + -0.046, + -0.015, + -0.056, + -0.056, + -0.028, + -0.033, + -0.03, + -0.048, + -0.065, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.015, + 0.008, + 0.007, + -0.02, + -0.026, + -0.034, + -0.042, + -0.049, + -0.021, + -0.031, + -0.019, + -0.018, + -0.037, + -0.046, + -0.033, + -0.017, + -0.051, + -0.03, + 0.0, + -0.033, + 0.003, + -0.013, + -0.012, + -0.024, + -0.041, + -0.039, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.058, + -0.061, + -0.043, + -0.038, + -0.048, + -0.011, + -0.009, + 0.008, + 0.007, + -0.012, + -0.022, + -0.008, + 0.0, + -0.005, + -0.014, + -0.041, + -0.023, + -0.016, + -0.023, + -0.044, + -0.043, + -0.045, + -0.042, + -0.052, + -0.065, + -0.029, + -0.03, + -0.042, + -0.041, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.01, + -0.0, + -0.022, + -0.024, + -0.014, + -0.031, + -0.031, + -0.034, + null, + null, + -0.036, + -0.05, + -0.062, + -0.024, + -0.029, + -0.046, + -0.004, + 0.005, + 0.001, + 0.007, + -0.018, + -0.018, + -0.023, + -0.025, + -0.023, + null, + null, + null, + null, + null, + -0.031, + null, + null, + null, + null, + -0.056, + -0.055, + -0.044, + -0.041, + -0.04, + -0.02, + -0.017, + -0.002, + -0.01, + -0.029, + -0.014, + -0.012, + -0.016, + -0.033, + -0.033, + -0.033, + -0.021, + -0.015, + -0.035, + -0.04, + -0.056, + -0.014, + -0.068, + -0.061, + -0.031, + -0.038, + -0.031, + -0.019, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.001, + 0.007, + -0.014, + -0.03, + -0.006, + -0.018, + null, + null, + null, + null, + -0.028, + -0.066, + -0.064, + -0.055, + -0.012, + -0.066, + -0.049, + -0.001, + -0.008, + 0.015, + -0.018, + -0.017, + -0.019, + -0.009, + -0.021, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.095, + -0.06, + -0.031, + -0.03, + -0.041, + -0.018, + 0.013, + -0.009, + -0.018, + -0.027, + -0.014, + 0.004, + -0.009, + -0.018, + -0.011, + -0.028, + -0.01, + -0.019, + -0.045, + -0.033, + -0.029, + -0.069, + -0.06, + -0.037, + -0.014, + -0.027, + -0.007, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.014, + -0.019, + -0.018, + -0.025, + null, + null, + null, + null, + -0.066, + -0.04, + -0.043, + -0.049, + -0.062, + -0.046, + -0.035, + -0.038, + -0.005, + -0.002, + -0.009, + -0.001, + -0.024, + -0.045, + -0.03, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.074, + -0.051, + -0.033, + -0.045, + -0.029, + -0.002, + -0.017, + -0.018, + -0.005, + -0.008, + -0.005, + -0.014, + 0.008, + 0.005, + -0.029, + -0.014, + -0.03, + -0.042, + -0.033, + -0.044, + -0.074, + -0.057, + -0.047, + -0.045, + -0.022, + -0.006, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.036, + -0.028, + -0.02, + -0.017, + null, + null, + -0.024, + -0.046, + -0.081, + -0.053, + -0.054, + -0.051, + -0.059, + -0.071, + -0.032, + -0.025, + -0.008, + 0.003, + -0.016, + -0.005, + -0.05, + -0.066, + -0.037, + null, + null, + -0.026, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.059, + -0.022, + -0.03, + -0.042, + -0.019, + -0.018, + -0.032, + -0.01, + -0.006, + -0.003, + 0.001, + 0.006, + -0.008, + -0.027, + -0.028, + -0.032, + -0.034, + -0.031, + -0.025, + -0.029, + -0.051, + -0.056, + -0.053, + -0.049, + -0.019, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.022, + -0.033, + -0.017, + -0.013, + -0.024, + -0.041, + -0.025, + -0.048, + -0.061, + -0.061, + -0.056, + -0.046, + -0.058, + -0.068, + -0.06, + -0.01, + -0.001, + 0.014, + -0.018, + -0.028, + -0.014, + -0.04, + -0.048, + -0.017, + -0.029, + -0.038, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.07, + -0.03, + -0.016, + -0.03, + -0.023, + -0.013, + -0.022, + -0.036, + -0.011, + -0.013, + -0.007, + 0.02, + -0.009, + -0.017, + -0.027, + -0.022, + -0.03, + -0.041, + -0.023, + -0.027, + -0.045, + -0.045, + -0.044, + -0.049, + -0.04, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.024, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.01, + -0.033, + -0.037, + -0.014, + -0.017, + -0.02, + -0.045, + -0.044, + -0.049, + -0.067, + -0.052, + -0.041, + -0.058, + -0.059, + -0.067, + -0.016, + 0.025, + 0.009, + -0.012, + -0.031, + -0.026, + -0.002, + -0.04, + -0.037, + -0.015, + -0.032, + -0.03, + -0.045, + -0.004, + null, + null, + null, + null, + null, + null, + null, + -0.069, + -0.084, + -0.066, + -0.034, + -0.032, + -0.028, + -0.012, + -0.006, + -0.023, + -0.01, + -0.013, + -0.006, + -0.006, + -0.019, + -0.006, + -0.019, + -0.025, + -0.024, + -0.038, + -0.033, + -0.02, + -0.002, + -0.021, + -0.031, + -0.046, + -0.054, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.034, + -0.036, + -0.058, + -0.053, + -0.035, + -0.016, + -0.057, + -0.058, + -0.058, + -0.071, + -0.063, + -0.047, + -0.045, + -0.045, + -0.06, + -0.04, + 0.025, + 0.023, + 0.007, + -0.032, + -0.028, + -0.026, + -0.022, + -0.005, + -0.028, + -0.011, + -0.035, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.047, + null, + -0.061, + -0.023, + -0.017, + -0.022, + -0.029, + -0.02, + -0.007, + -0.006, + 0.009, + -0.011, + -0.006, + 0.011, + 0.005, + -0.009, + -0.02, + -0.03, + -0.043, + -0.031, + -0.019, + -0.009, + -0.011, + -0.027, + -0.034, + -0.054, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.04, + -0.033, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.031, + -0.044, + -0.074, + -0.092, + -0.019, + -0.014, + -0.031, + -0.046, + -0.061, + -0.053, + -0.04, + -0.043, + -0.016, + -0.023, + -0.057, + -0.053, + -0.012, + 0.042, + 0.02, + -0.015, + -0.033, + -0.009, + 0.008, + -0.009, + -0.026, + -0.016, + -0.017, + -0.058, + null, + null, + null, + null, + null, + null, + null, + -0.077, + -0.056, + -0.024, + -0.035, + -0.024, + -0.018, + -0.022, + -0.001, + -0.03, + -0.027, + -0.006, + -0.016, + -0.012, + -0.006, + -0.016, + 0.019, + 0.005, + -0.028, + -0.025, + -0.026, + -0.028, + -0.025, + -0.019, + -0.019, + -0.03, + -0.013, + -0.024, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.03, + -0.007, + null, + -0.021, + -0.026, + -0.031, + -0.052, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.031, + null, + -0.062, + -0.099, + -0.05, + 0.009, + -0.004, + -0.014, + -0.043, + -0.049, + -0.043, + -0.061, + -0.033, + 0.002, + -0.031, + -0.037, + -0.01, + 0.039, + 0.034, + -0.002, + -0.03, + -0.033, + 0.01, + 0.007, + -0.016, + -0.034, + -0.015, + -0.019, + null, + null, + null, + null, + null, + null, + -0.049, + null, + null, + null, + null, + -0.011, + -0.016, + -0.021, + -0.0, + -0.014, + -0.028, + -0.005, + -0.011, + -0.015, + -0.017, + -0.017, + -0.02, + -0.003, + -0.013, + -0.029, + -0.014, + -0.006, + -0.01, + -0.005, + -0.011, + -0.028, + -0.033, + -0.016, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.014, + -0.013, + -0.023, + -0.028, + -0.047, + -0.037, + -0.036, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.054, + -0.022, + 0.003, + -0.006, + -0.018, + -0.047, + -0.052, + -0.05, + -0.032, + -0.01, + -0.04, + -0.012, + -0.011, + 0.01, + 0.018, + 0.001, + -0.02, + -0.036, + 0.005, + 0.016, + -0.0, + -0.019, + -0.008, + -0.02, + null, + null, + null, + null, + null, + -0.017, + -0.036, + null, + null, + null, + -0.02, + -0.04, + -0.023, + -0.012, + -0.003, + 0.008, + -0.005, + -0.018, + -0.002, + -0.014, + -0.017, + -0.02, + -0.026, + -0.007, + -0.03, + -0.034, + -0.032, + -0.006, + -0.006, + -0.002, + 0.009, + -0.016, + -0.032, + -0.022, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.013, + 0.0, + -0.005, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.034, + -0.027, + -0.003, + 0.014, + 0.011, + -0.038, + -0.05, + -0.035, + -0.027, + -0.014, + -0.001, + -0.026, + -0.0, + 0.006, + -0.002, + -0.007, + -0.009, + -0.029, + -0.008, + 0.008, + 0.01, + 0.008, + -0.031, + -0.017, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.036, + -0.05, + -0.029, + -0.009, + -0.018, + 0.009, + -0.009, + -0.003, + -0.003, + -0.007, + -0.026, + -0.023, + -0.037, + -0.018, + -0.037, + -0.03, + -0.031, + -0.008, + -0.009, + -0.007, + 0.01, + -0.001, + -0.015, + -0.021, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.033, + -0.021, + -0.023, + -0.015, + 0.006, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.034, + -0.013, + 0.01, + 0.024, + -0.016, + -0.043, + -0.021, + -0.032, + -0.016, + -0.019, + -0.019, + -0.012, + 0.004, + 0.016, + -0.016, + -0.005, + -0.018, + -0.012, + -0.004, + -0.017, + -0.011, + -0.035, + -0.027, + -0.01, + 0.006, + null, + null, + null, + null, + null, + null, + null, + null, + -0.042, + -0.039, + -0.036, + -0.027, + -0.032, + -0.0, + -0.002, + -0.006, + -0.012, + -0.008, + -0.022, + -0.03, + -0.026, + -0.035, + -0.031, + -0.028, + -0.028, + -0.017, + -0.001, + -0.009, + 0.001, + 0.009, + -0.013, + -0.02, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.026, + -0.028, + -0.031, + -0.035, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.046, + -0.021, + 0.019, + 0.026, + -0.006, + -0.035, + -0.026, + -0.035, + -0.027, + -0.023, + -0.001, + -0.01, + -0.013, + 0.007, + -0.002, + 0.005, + 0.0, + 0.006, + -0.01, + -0.013, + -0.024, + -0.023, + -0.027, + -0.009, + -0.006, + -0.011, + -0.018, + null, + null, + null, + null, + null, + null, + null, + -0.04, + -0.034, + -0.016, + -0.017, + -0.014, + 0.005, + -0.01, + 0.008, + -0.008, + -0.01, + -0.027, + -0.019, + -0.018, + -0.005, + -0.013, + -0.024, + -0.031, + -0.01, + -0.002, + -0.005, + 0.014, + -0.015, + -0.026, + null, + null, + null, + null, + null, + -0.032, + -0.031, + null, + null, + null, + null, + null, + null, + -0.001, + -0.034, + -0.036, + -0.044, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.041, + -0.06, + 0.009, + 0.02, + -0.007, + -0.011, + -0.013, + -0.03, + -0.026, + -0.035, + -0.013, + -0.004, + -0.013, + -0.012, + 0.018, + 0.027, + -0.005, + -0.014, + -0.003, + -0.002, + -0.023, + -0.018, + -0.016, + -0.018, + 0.008, + -0.006, + -0.019, + null, + null, + null, + null, + null, + null, + null, + -0.039, + -0.039, + -0.015, + 0.008, + -0.008, + -0.008, + 0.018, + 0.007, + 0.015, + -0.009, + -0.023, + -0.011, + -0.011, + -0.002, + -0.02, + -0.036, + -0.03, + -0.036, + 0.009, + -0.024, + -0.01, + -0.022, + -0.013, + null, + null, + null, + null, + null, + -0.006, + -0.022, + -0.042, + null, + null, + null, + null, + -0.026, + 0.01, + -0.032, + -0.041, + -0.046, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.045, + -0.057, + 0.003, + 0.025, + 0.009, + -0.023, + 0.002, + -0.003, + -0.037, + -0.036, + -0.021, + -0.009, + -0.01, + -0.011, + 0.007, + 0.042, + -0.023, + -0.022, + -0.018, + 0.012, + 0.004, + -0.029, + -0.023, + -0.029, + -0.009, + -0.017, + -0.008, + null, + null, + null, + null, + null, + -0.004, + -0.001, + -0.043, + -0.037, + -0.001, + 0.013, + 0.012, + -0.002, + 0.015, + 0.022, + 0.01, + -0.002, + -0.022, + -0.021, + -0.02, + -0.001, + -0.003, + -0.036, + -0.031, + -0.036, + -0.008, + -0.029, + -0.016, + -0.003, + -0.019, + null, + null, + null, + null, + null, + 0.006, + 0.001, + -0.032, + null, + null, + null, + null, + null, + -0.002, + -0.012, + -0.045, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.07, + -0.036, + 0.02, + 0.024, + -0.013, + -0.032, + -0.005, + -0.027, + -0.03, + -0.03, + -0.019, + -0.017, + -0.019, + -0.004, + 0.005, + -0.018, + -0.004, + -0.02, + -0.003, + 0.013, + -0.012, + -0.029, + -0.038, + -0.038, + -0.018, + -0.01, + -0.009, + -0.041, + -0.056, + -0.021, + -0.005, + -0.013, + 0.002, + -0.033, + -0.036, + -0.011, + 0.013, + 0.022, + 0.014, + 0.015, + 0.013, + 0.024, + 0.008, + -0.007, + -0.045, + -0.034, + 0.009, + 0.018, + -0.043, + -0.043, + -0.009, + 0.001, + -0.029, + -0.028, + -0.025, + -0.025, + null, + null, + null, + null, + null, + 0.012, + 0.0, + -0.029, + null, + null, + null, + null, + null, + 0.009, + -0.012, + -0.056, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.078, + -0.034, + 0.016, + 0.025, + -0.016, + -0.015, + -0.022, + -0.026, + -0.019, + -0.02, + -0.024, + -0.031, + -0.026, + -0.008, + -0.003, + -0.022, + -0.014, + -0.015, + -0.014, + 0.003, + 0.001, + -0.032, + -0.041, + -0.039, + -0.039, + -0.019, + 0.004, + -0.031, + -0.051, + -0.031, + -0.004, + 0.001, + -0.017, + -0.019, + -0.023, + -0.019, + 0.017, + 0.03, + 0.019, + 0.013, + 0.006, + 0.011, + 0.018, + 0.009, + -0.033, + -0.066, + -0.006, + 0.02, + -0.023, + -0.023, + -0.027, + -0.005, + -0.013, + -0.025, + -0.047, + -0.033, + null, + null, + null, + null, + null, + 0.022, + 0.004, + -0.019, + null, + null, + null, + null, + null, + -0.002, + -0.03, + -0.054, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.015, + null, + null, + null, + null, + null, + null, + null, + -0.069, + -0.062, + -0.009, + -0.002, + -0.005, + -0.018, + -0.011, + -0.021, + -0.037, + -0.017, + -0.03, + -0.043, + -0.035, + -0.015, + 0.0, + -0.015, + -0.028, + -0.009, + -0.013, + -0.026, + -0.005, + -0.017, + -0.03, + -0.025, + -0.029, + -0.02, + -0.03, + -0.017, + -0.015, + -0.004, + 0.0, + -0.002, + -0.01, + -0.002, + -0.019, + 0.0, + 0.017, + 0.012, + 0.011, + -0.0, + -0.002, + 0.009, + 0.019, + 0.027, + -0.001, + -0.048, + -0.045, + 0.016, + -0.02, + -0.014, + -0.037, + -0.024, + -0.014, + -0.007, + -0.036, + -0.043, + null, + null, + null, + null, + null, + null, + 0.017, + -0.008, + null, + null, + null, + null, + -0.024, + 0.007, + -0.028, + -0.065, + -0.075, + null, + null, + null, + null, + null, + -0.013, + null, + null, + null, + null, + null, + null, + -0.025, + -0.043, + -0.034, + null, + -0.023, + null, + null, + null, + null, + null, + null, + -0.051, + null, + null, + -0.064, + -0.026, + -0.007, + -0.028, + -0.016, + -0.014, + -0.04, + -0.027, + -0.034, + -0.046, + -0.05, + -0.039, + -0.004, + -0.032, + -0.017, + -0.01, + -0.0, + -0.027, + -0.01, + -0.009, + -0.03, + -0.031, + -0.023, + -0.016, + null, + null, + null, + null, + -0.023, + 0.021, + -0.018, + -0.031, + -0.012, + -0.029, + 0.013, + 0.013, + 0.003, + 0.003, + 0.004, + -0.025, + 0.003, + 0.012, + 0.022, + -0.012, + -0.041, + -0.022, + -0.007, + -0.018, + -0.009, + -0.017, + -0.009, + -0.002, + -0.002, + -0.034, + null, + null, + null, + null, + null, + null, + 0.019, + 0.003, + null, + null, + null, + null, + null, + -0.028, + -0.014, + -0.04, + -0.082, + -0.079, + -0.057, + -0.04, + -0.045, + -0.044, + -0.018, + -0.012, + null, + -0.007, + -0.036, + -0.036, + -0.025, + -0.028, + -0.025, + -0.016, + -0.013, + null, + null, + null, + null, + null, + null, + -0.026, + -0.027, + null, + null, + -0.088, + -0.047, + -0.014, + -0.028, + -0.023, + -0.027, + -0.036, + -0.038, + -0.037, + -0.05, + -0.046, + -0.045, + -0.021, + -0.019, + -0.045, + -0.031, + -0.013, + -0.039, + -0.009, + -0.005, + -0.033, + -0.049, + -0.023, + -0.004, + -0.01, + 0.013, + -0.014, + -0.045, + -0.021, + 0.017, + 0.017, + -0.026, + -0.018, + 0.004, + 0.005, + 0.008, + -0.009, + -0.015, + -0.014, + -0.019, + -0.02, + -0.018, + 0.029, + -0.004, + -0.034, + -0.031, + -0.026, + -0.027, + -0.028, + -0.01, + -0.004, + 0.004, + 0.003, + -0.021, + null, + null, + null, + null, + null, + null, + 0.027, + null, + null, + null, + null, + null, + -0.015, + -0.013, + -0.02, + -0.029, + -0.068, + -0.07, + -0.066, + -0.044, + -0.047, + -0.049, + -0.035, + -0.019, + -0.013, + -0.004, + -0.027, + -0.032, + -0.021, + -0.036, + -0.036, + -0.018, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.064, + -0.045, + -0.031, + -0.035, + -0.026, + -0.033, + -0.038, + -0.055, + -0.052, + -0.039, + -0.03, + -0.036, + -0.017, + -0.017, + -0.028, + -0.022, + -0.042, + -0.037, + -0.016, + -0.044, + -0.051, + -0.042, + -0.012, + -0.009, + -0.0, + -0.0, + -0.037, + 0.003, + 0.012, + 0.02, + 0.007, + 0.002, + 0.014, + 0.006, + 0.015, + -0.006, + -0.02, + -0.012, + -0.024, + -0.044, + -0.024, + 0.003, + 0.009, + -0.021, + -0.041, + -0.037, + -0.038, + -0.034, + -0.02, + -0.005, + 0.003, + 0.01, + -0.005, + null, + null, + null, + null, + null, + null, + 0.007, + -0.008, + null, + null, + null, + null, + -0.018, + -0.025, + -0.021, + -0.027, + -0.051, + -0.065, + -0.065, + -0.061, + -0.058, + -0.049, + -0.035, + -0.017, + -0.021, + -0.009, + -0.012, + -0.007, + -0.016, + -0.012, + -0.036, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.084, + -0.071, + -0.044, + -0.047, + -0.046, + -0.029, + -0.035, + -0.064, + -0.049, + -0.048, + -0.021, + -0.017, + -0.023, + -0.01, + -0.019, + -0.012, + -0.02, + -0.054, + -0.011, + -0.03, + -0.049, + -0.041, + -0.016, + -0.021, + 0.018, + -0.002, + 0.017, + -0.016, + -0.002, + 0.004, + 0.026, + 0.007, + -0.007, + 0.001, + 0.021, + -0.015, + -0.014, + -0.024, + -0.047, + -0.049, + -0.037, + -0.014, + 0.01, + -0.007, + -0.037, + -0.044, + -0.042, + -0.024, + -0.025, + -0.004, + 0.001, + -0.001, + -0.003, + null, + null, + null, + null, + null, + null, + -0.008, + -0.009, + null, + null, + null, + null, + -0.035, + -0.032, + -0.016, + -0.022, + -0.038, + -0.059, + -0.073, + -0.067, + -0.044, + -0.046, + -0.05, + -0.022, + -0.004, + -0.031, + -0.016, + -0.01, + -0.016, + -0.009, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.063, + -0.076, + -0.062, + -0.052, + -0.043, + -0.042, + -0.042, + -0.052, + -0.042, + -0.044, + -0.009, + -0.01, + -0.027, + -0.015, + -0.01, + -0.005, + -0.024, + -0.05, + -0.02, + -0.025, + -0.036, + -0.036, + -0.036, + -0.011, + 0.016, + 0.0, + 0.022, + 0.011, + -0.024, + -0.007, + 0.028, + 0.029, + 0.003, + -0.003, + -0.007, + 0.004, + 0.005, + -0.014, + -0.037, + -0.06, + -0.058, + -0.039, + -0.022, + -0.012, + -0.024, + -0.034, + -0.036, + -0.036, + -0.036, + -0.032, + -0.017, + -0.017, + -0.018, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.046, + -0.032, + -0.018, + -0.003, + -0.032, + -0.03, + -0.055, + -0.065, + -0.051, + -0.044, + -0.027, + -0.032, + -0.0, + -0.024, + -0.022, + -0.02, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.044, + -0.056, + -0.051, + -0.042, + -0.017, + -0.033, + -0.023, + -0.035, + -0.03, + -0.006, + 0.002, + 0.002, + -0.011, + -0.022, + -0.007, + -0.001, + -0.022, + -0.046, + -0.033, + -0.024, + -0.019, + -0.034, + -0.04, + -0.044, + -0.015, + -0.003, + -0.008, + 0.005, + -0.002, + -0.024, + -0.002, + 0.043, + 0.047, + 0.012, + 0.002, + -0.006, + 0.001, + -0.015, + -0.05, + -0.064, + -0.071, + -0.044, + -0.039, + -0.026, + -0.022, + -0.037, + -0.031, + -0.028, + -0.03, + -0.034, + -0.027, + -0.015, + -0.031, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.04, + -0.029, + -0.02, + -0.001, + -0.008, + -0.017, + -0.026, + -0.052, + -0.052, + -0.039, + -0.043, + -0.034, + null, + null, + -0.008, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.048, + -0.052, + -0.027, + -0.041, + -0.009, + -0.019, + 0.009, + -0.021, + -0.026, + 0.001, + -0.005, + -0.004, + 0.008, + -0.011, + -0.008, + -0.003, + -0.027, + -0.025, + -0.037, + -0.0, + -0.011, + -0.019, + -0.031, + -0.039, + -0.029, + -0.024, + -0.012, + null, + null, + -0.013, + -0.013, + 0.024, + 0.077, + 0.023, + 0.007, + 0.002, + -0.015, + -0.027, + -0.044, + -0.046, + -0.055, + -0.055, + -0.05, + -0.042, + -0.023, + -0.04, + -0.049, + -0.02, + -0.016, + -0.038, + -0.032, + -0.019, + -0.027, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.014, + -0.021, + -0.022, + -0.007, + 0.012, + 0.007, + -0.003, + -0.004, + -0.047, + -0.032, + -0.026, + null, + null, + 0.01, + 0.002, + -0.02, + 0.023, + null, + null, + null, + null, + null, + null, + null, + null, + -0.027, + null, + null, + null, + null, + null, + -0.039, + -0.027, + -0.041, + -0.042, + -0.026, + -0.012, + -0.009, + 0.012, + -0.005, + -0.025, + -0.027, + -0.008, + -0.012, + 0.011, + -0.027, + -0.011, + -0.01, + 0.0, + -0.042, + -0.032, + -0.017, + -0.007, + -0.012, + -0.006, + -0.038, + -0.036, + -0.037, + null, + null, + null, + null, + -0.009, + null, + 0.044, + 0.011, + 0.011, + 0.007, + -0.01, + -0.02, + -0.026, + -0.029, + -0.064, + -0.057, + -0.056, + -0.044, + -0.042, + -0.045, + -0.045, + -0.035, + -0.02, + -0.038, + -0.046, + -0.019, + -0.013, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.009, + -0.013, + -0.01, + 0.005, + 0.006, + -0.004, + 0.021, + -0.014, + -0.01, + -0.018, + null, + null, + null, + null, + -0.049, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.014, + -0.013, + -0.012, + -0.003, + -0.017, + -0.031, + -0.02, + -0.016, + -0.01, + -0.028, + -0.016, + -0.024, + 0.003, + -0.022, + -0.041, + -0.042, + -0.041, + -0.025, + -0.032, + -0.039, + -0.061, + null, + null, + null, + null, + null, + null, + null, + null, + 0.008, + 0.01, + 0.028, + -0.004, + -0.023, + -0.012, + -0.014, + -0.06, + -0.059, + -0.062, + -0.066, + -0.035, + -0.045, + -0.037, + -0.037, + -0.028, + -0.033, + -0.034, + -0.032, + -0.012, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.016, + -0.014, + -0.008, + -0.0, + 0.022, + 0.017, + 0.024, + 0.012, + 0.009, + -0.014, + -0.035, + -0.041, + -0.027, + -0.012, + -0.033, + -0.027, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.006, + -0.005, + -0.014, + -0.011, + -0.008, + -0.03, + -0.004, + -0.002, + -0.014, + -0.017, + -0.017, + -0.011, + 0.012, + -0.024, + -0.036, + -0.025, + -0.043, + -0.059, + -0.048, + -0.04, + -0.044, + -0.041, + -0.037, + null, + null, + null, + null, + null, + -0.004, + -0.0, + 0.016, + 0.026, + 0.011, + -0.03, + -0.013, + -0.011, + -0.052, + -0.05, + -0.065, + -0.07, + -0.044, + -0.014, + -0.043, + -0.037, + -0.037, + -0.03, + -0.038, + -0.034, + -0.022, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.025, + -0.005, + -0.016, + 0.002, + 0.008, + 0.028, + 0.003, + 0.02, + 0.028, + 0.023, + null, + null, + null, + null, + null, + -0.017, + 0.024, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.0, + null, + null, + null, + null, + null, + null, + null, + -0.021, + -0.011, + -0.008, + -0.013, + -0.012, + -0.032, + -0.02, + -0.021, + -0.031, + -0.056, + -0.02, + -0.013, + 0.021, + 0.009, + -0.026, + -0.0, + -0.022, + -0.055, + -0.066, + -0.052, + -0.022, + -0.02, + -0.012, + -0.004, + null, + null, + null, + null, + null, + -0.001, + -0.006, + 0.024, + 0.004, + -0.027, + -0.016, + -0.029, + -0.022, + -0.042, + -0.053, + -0.059, + -0.067, + -0.044, + -0.011, + -0.02, + -0.026, + -0.048, + -0.02, + -0.029, + -0.021, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.024, + 0.022, + -0.004, + -0.018, + 0.013, + 0.003, + 0.023, + 0.003, + -0.001, + 0.024, + 0.001, + null, + null, + null, + null, + null, + null, + 0.017, + -0.001, + null, + null, + null, + -0.021, + 0.006, + -0.018, + -0.024, + null, + null, + null, + -0.017, + -0.015, + null, + null, + null, + null, + -0.011, + null, + -0.024, + -0.017, + -0.01, + -0.02, + -0.03, + -0.031, + -0.037, + -0.035, + -0.073, + -0.037, + -0.002, + 0.008, + 0.016, + 0.002, + -0.008, + -0.01, + -0.041, + -0.059, + -0.051, + -0.033, + -0.012, + -0.003, + 0.022, + 0.016, + -0.028, + -0.031, + null, + null, + null, + -0.013, + 0.002, + 0.001, + -0.018, + -0.027, + -0.016, + -0.06, + -0.051, + -0.062, + -0.056, + -0.078, + -0.066, + -0.052, + -0.02, + -0.012, + -0.015, + -0.029, + -0.018, + -0.014, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.006, + 0.003, + 0.022, + -0.0, + -0.008, + 0.021, + 0.003, + 0.01, + -0.018, + 0.003, + -0.028, + -0.027, + null, + null, + null, + null, + null, + null, + 0.005, + -0.019, + -0.023, + null, + -0.033, + -0.027, + -0.024, + -0.042, + -0.023, + null, + null, + null, + -0.029, + null, + null, + null, + null, + null, + null, + -0.024, + -0.026, + -0.041, + 0.012, + -0.009, + -0.03, + -0.037, + -0.054, + -0.06, + -0.051, + -0.017, + -0.008, + 0.0, + 0.01, + -0.019, + -0.023, + -0.035, + -0.055, + -0.06, + -0.05, + -0.038, + -0.018, + 0.0, + null, + 0.016, + null, + null, + null, + null, + null, + null, + null, + null, + -0.046, + -0.015, + -0.038, + null, + -0.033, + -0.073, + -0.046, + -0.055, + -0.062, + -0.044, + -0.029, + -0.012, + -0.026, + -0.018, + 0.013, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.02, + -0.01, + 0.019, + 0.002, + 0.001, + 0.002, + 0.013, + 0.008, + -0.002, + -0.024, + -0.018, + -0.045, + -0.036, + null, + null, + null, + null, + null, + 0.006, + -0.017, + -0.03, + -0.032, + -0.046, + -0.046, + -0.045, + -0.038, + -0.019, + -0.005, + null, + null, + -0.06, + null, + null, + null, + null, + null, + null, + null, + -0.028, + -0.014, + -0.011, + 0.003, + -0.023, + -0.021, + -0.025, + -0.032, + -0.058, + -0.009, + 0.005, + 0.007, + 0.009, + -0.014, + -0.041, + -0.025, + -0.05, + -0.068, + -0.055, + -0.027, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.003, + null, + -0.022, + null, + -0.054, + null, + null, + null, + -0.066, + -0.057, + -0.038, + -0.017, + 0.001, + -0.015, + -0.028, + -0.024 + ], + "n_frames": [ + 6, + 4, + 4, + 4, + 4, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 7, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 7, + 4, + 4, + 4, + 4, + 5, + 6, + 5, + 4, + 5, + 5, + 5, + 7, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 8, + 8, + 8, + 7, + 6, + 7, + 8, + 8, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 7, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 7, + 5, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 7, + 5, + 5, + 5, + 4, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 8, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 8, + 8, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 7, + 5, + 4, + 4, + 4, + 5, + 5, + 5, + 4, + 5, + 4, + 4, + 5, + 7, + 8, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 7, + 6, + 6, + 7, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 8, + 8, + 8, + 7, + 7, + 7, + 9, + 8, + 8, + 8, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 6, + 5, + 4, + 4, + 4, + 5, + 5, + 5, + 4, + 4, + 4, + 4, + 7, + 7, + 8, + 8, + 9, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 6, + 6, + 7, + 6, + 7, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 7, + 8, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 6, + 5, + 4, + 4, + 4, + 5, + 6, + 5, + 4, + 4, + 5, + 5, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 8, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 6, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 6, + 5, + 4, + 4, + 4, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 8, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 5, + 4, + 4, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 7, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 8, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 8, + 9, + 9, + 7, + 8, + 9, + 9, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 4, + 5, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 6, + 6, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 7, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 4, + 4, + 6, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 8, + 6, + 6, + 6, + 6, + 6, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 9, + 10, + 9, + 8, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 6, + 4, + 4, + 5, + 5, + 6, + 7, + 7, + 5, + 4, + 4, + 4, + 6, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 6, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 7, + 5, + 5, + 5, + 6, + 7, + 7, + 7, + 6, + 5, + 5, + 5, + 6, + 7, + 8, + 7, + 7, + 8, + 8, + 9, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 7, + 6, + 6, + 6, + 7, + 8, + 8, + 10, + 10, + 10, + 10, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 6, + 5, + 5, + 5, + 5, + 7, + 7, + 7, + 6, + 5, + 5, + 5, + 6, + 7, + 7, + 7, + 8, + 8, + 8, + 9, + 10, + 11, + 11, + 11, + 10, + 9, + 9, + 8, + 8, + 8, + 6, + 6, + 6, + 7, + 7, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 10, + 9, + 9, + 10, + 10, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 6, + 4, + 5, + 5, + 5, + 7, + 7, + 7, + 6, + 5, + 6, + 6, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 9, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 7, + 5, + 4, + 5, + 5, + 6, + 7, + 7, + 6, + 6, + 6, + 6, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 7, + 6, + 4, + 5, + 5, + 6, + 7, + 7, + 7, + 6, + 6, + 6, + 7, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 8, + 8, + 7, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 6, + 6, + 5, + 5, + 6, + 7, + 8, + 8, + 7, + 7, + 6, + 6, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 7, + 7, + 7, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 11, + 10, + 10, + 10, + 9, + 9, + 8, + 8, + 9, + 8, + 7, + 8, + 8, + 9, + 8, + 8, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 5, + 6, + 5, + 5, + 5, + 7, + 8, + 8, + 7, + 7, + 7, + 6, + 7, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 8, + 9, + 9, + 8, + 7, + 7, + 8, + 7, + 8, + 9, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 5, + 4, + 4, + 4, + 4, + 6, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 10, + 9, + 9, + 7, + 7, + 9, + 9, + 8, + 8, + 8, + 10, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 6, + 5, + 4, + 4, + 4, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 7, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 10, + 10, + 10, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 6, + 6, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 9, + 8, + 8, + 9, + 8, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 6, + 5, + 4, + 4, + 4, + 7, + 7, + 7, + 6, + 6, + 6, + 6, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 8, + 8, + 9, + 7, + 7, + 6, + 6, + 7, + 8, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 8, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 6, + 5, + 4, + 5, + 5, + 7, + 7, + 7, + 5, + 5, + 6, + 6, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 8, + 6, + 8, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 11, + 11, + 12, + 12, + 12, + 6, + 5, + 4, + 5, + 5, + 7, + 7, + 6, + 5, + 5, + 6, + 6, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 8, + 7, + 7, + 7, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 11, + 12, + 12, + 12, + 6, + 5, + 4, + 4, + 5, + 6, + 7, + 6, + 5, + 5, + 6, + 6, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 11, + 9, + 9, + 8, + 8, + 7, + 8, + 7, + 6, + 7, + 8, + 8, + 9, + 9, + 10, + 9, + 11, + 11, + 12, + 12, + 6, + 5, + 4, + 4, + 4, + 6, + 8, + 7, + 6, + 6, + 7, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 8, + 8, + 7, + 8, + 7, + 7, + 7, + 8, + 8, + 9, + 8, + 9, + 10, + 10, + 11, + 11, + 11, + 6, + 4, + 4, + 4, + 4, + 6, + 7, + 6, + 5, + 5, + 7, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 11, + 11, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 10, + 10, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 8, + 8, + 7, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 6, + 4, + 4, + 4, + 4, + 6, + 7, + 7, + 6, + 5, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 8, + 8, + 8, + 10, + 10, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 6, + 6, + 9, + 10, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 7, + 4, + 4, + 4, + 4, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 8, + 7, + 7, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 7, + 6, + 4, + 4, + 3, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 6, + 7, + 7, + 8, + 9, + 9, + 10, + 10, + 10, + 10, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 6, + 4, + 4, + 3, + 3, + 6, + 6, + 7, + 6, + 5, + 5, + 6, + 7, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 10, + 9, + 9, + 9, + 8, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 11, + 5, + 4, + 3, + 4, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 7, + 8, + 8, + 9, + 9, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 8, + 7, + 10, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 11, + 11, + 11, + 6, + 5, + 4, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 7, + 8, + 8, + 9, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 10, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 6, + 7, + 4, + 4, + 4, + 4, + 4, + 4, + 3, + 6, + 6, + 6, + 7, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 10, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 10, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 10, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 7, + 6, + 4, + 4, + 3, + 4, + 4, + 4, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 9, + 9, + 9, + 10, + 10, + 10, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 10, + 10, + 9, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 11, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 9, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 11, + 11, + 12, + 6, + 6, + 5, + 3, + 3, + 4, + 4, + 4, + 3, + 3, + 4, + 4, + 5, + 6, + 8, + 9, + 9, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 10, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 12, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 9, + 10, + 9, + 10, + 10, + 10, + 9, + 8, + 8, + 8, + 10, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 5, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 3, + 4, + 4, + 4, + 5, + 6, + 8, + 8, + 9, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 7, + 7, + 7, + 6, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 10, + 10, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 3, + 2, + 2, + 2, + 3, + 4, + 4, + 4, + 3, + 4, + 4, + 4, + 5, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 9, + 9, + 7, + 7, + 7, + 7, + 6, + 5, + 5, + 6, + 7, + 7, + 8, + 10, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 3, + 2, + 2, + 2, + 2, + 4, + 4, + 4, + 3, + 4, + 4, + 4, + 6, + 7, + 8, + 8, + 7, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 10, + 10, + 10, + 8, + 8, + 7, + 7, + 6, + 5, + 5, + 7, + 7, + 7, + 8, + 8, + 10, + 10, + 10, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 8, + 8, + 10, + 10, + 10, + 10, + 10, + 10, + 8, + 8, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 2, + 2, + 2, + 2, + 2, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 6, + 7, + 8, + 8, + 7, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 7, + 6, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 10, + 10, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 9, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 9, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 3, + 3, + 2, + 2, + 2, + 4, + 4, + 5, + 4, + 3, + 3, + 4, + 4, + 6, + 6, + 7, + 7, + 7, + 8, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 8, + 6, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 10, + 10, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 9, + 10, + 9, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 3, + 4, + 3, + 3, + 2, + 3, + 4, + 4, + 3, + 3, + 3, + 3, + 4, + 5, + 6, + 7, + 6, + 8, + 8, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 8, + 6, + 6, + 6, + 7, + 7, + 8, + 9, + 9, + 9, + 10, + 11, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 8, + 8, + 8, + 8, + 7, + 8, + 10, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 3, + 3, + 3, + 3, + 4, + 3, + 4, + 4, + 3, + 3, + 3, + 3, + 3, + 4, + 6, + 7, + 6, + 7, + 8, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 8, + 6, + 6, + 7, + 7, + 8, + 8, + 8, + 8, + 10, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 9, + 10, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 9, + 10, + 3, + 4, + 4, + 3, + 4, + 3, + 5, + 5, + 4, + 3, + 3, + 3, + 3, + 4, + 5, + 6, + 7, + 6, + 6, + 8, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 7, + 6, + 6, + 6, + 8, + 8, + 8, + 8, + 8, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 9, + 8, + 8, + 8, + 10, + 10, + 10, + 10, + 11, + 11, + 9, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 11, + 4, + 4, + 3, + 3, + 4, + 4, + 4, + 6, + 5, + 5, + 4, + 3, + 3, + 4, + 5, + 7, + 7, + 6, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 8, + 7, + 6, + 7, + 7, + 7, + 7, + 7, + 6, + 9, + 9, + 10, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 12, + 12, + 10, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 10, + 10, + 11, + 4, + 3, + 3, + 4, + 4, + 5, + 4, + 4, + 5, + 5, + 4, + 4, + 4, + 5, + 7, + 7, + 7, + 8, + 6, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 9, + 9, + 10, + 9, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 7, + 8, + 8, + 8, + 7, + 8, + 7, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 11, + 11, + 4, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 4, + 4, + 4, + 4, + 4, + 7, + 7, + 7, + 8, + 7, + 6, + 6, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 10, + 10, + 11, + 5, + 5, + 4, + 4, + 5, + 5, + 5, + 5, + 3, + 4, + 5, + 5, + 5, + 7, + 7, + 7, + 6, + 7, + 7, + 6, + 7, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 9, + 11, + 11, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 10, + 10, + 11, + 10, + 10, + 10, + 11, + 5, + 5, + 4, + 5, + 5, + 5, + 5, + 5, + 3, + 3, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 11, + 5, + 4, + 4, + 5, + 5, + 5, + 6, + 6, + 4, + 4, + 6, + 5, + 5, + 5, + 5, + 5, + 4, + 4, + 6, + 8, + 8, + 9, + 10, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 9, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 8, + 8, + 8, + 8, + 8, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 9, + 9, + 10, + 5, + 5, + 4, + 5, + 5, + 5, + 7, + 6, + 4, + 4, + 5, + 5, + 4, + 5, + 5, + 5, + 4, + 4, + 5, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 9, + 10, + 10, + 10, + 8, + 8, + 9, + 5, + 5, + 4, + 5, + 5, + 6, + 6, + 6, + 3, + 3, + 5, + 4, + 4, + 6, + 5, + 5, + 4, + 4, + 5, + 6, + 7, + 8, + 8, + 7, + 8, + 8, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 8, + 9, + 9, + 10, + 10, + 9, + 9, + 10, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 6, + 4, + 4, + 6, + 6, + 5, + 5, + 5, + 4, + 3, + 4, + 3, + 5, + 6, + 6, + 5, + 5, + 3, + 4, + 6, + 6, + 6, + 6, + 7, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 8, + 9, + 8, + 9, + 9, + 8, + 8, + 8, + 7, + 8, + 8, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 11, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 8, + 9, + 9, + 10, + 9, + 9, + 10, + 10, + 6, + 5, + 6, + 6, + 5, + 4, + 4, + 4, + 2, + 2, + 3, + 3, + 3, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 7, + 7, + 8, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 8, + 9, + 9, + 10, + 9, + 10, + 10, + 10, + 6, + 6, + 6, + 6, + 4, + 4, + 4, + 4, + 3, + 3, + 3, + 3, + 3, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 7, + 8, + 8, + 9, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 10, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 10, + 10, + 10, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 11, + 10, + 10, + 10, + 9, + 7, + 6, + 6, + 5, + 4, + 4, + 4, + 4, + 4, + 3, + 3, + 3, + 3, + 4, + 6, + 5, + 5, + 6, + 6, + 6, + 7, + 6, + 7, + 7, + 6, + 7, + 7, + 8, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 8, + 10, + 11, + 11, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 11, + 10, + 10, + 8, + 8, + 6, + 6, + 6, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 3, + 4, + 4, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 7, + 7, + 7, + 5, + 5, + 7, + 7, + 9, + 9, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 12, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 10, + 11, + 9, + 9, + 8, + 8, + 5, + 6, + 5, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 7, + 8, + 9, + 10, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 10, + 9, + 8, + 8, + 5, + 5, + 6, + 4, + 4, + 4, + 4, + 4, + 5, + 4, + 4, + 4, + 6, + 7, + 7, + 6, + 5, + 5, + 5, + 6, + 7, + 5, + 5, + 6, + 6, + 5, + 6, + 7, + 8, + 8, + 10, + 10, + 10, + 11, + 10, + 10, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 9, + 10, + 9, + 9, + 10, + 9, + 9, + 8, + 7, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 11, + 10, + 9, + 10, + 10, + 8, + 8, + 5, + 5, + 4, + 5, + 4, + 4, + 4, + 4, + 4, + 4, + 5, + 4, + 5, + 6, + 6, + 8, + 7, + 8, + 7, + 6, + 7, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 7, + 8, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 9, + 8, + 8, + 7, + 8, + 7, + 9, + 9, + 8, + 7, + 8, + 8, + 8, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 9, + 10, + 10, + 10, + 9, + 5, + 5, + 4, + 4, + 4, + 5, + 4, + 5, + 5, + 4, + 3, + 3, + 5, + 6, + 6, + 7, + 9, + 8, + 8, + 7, + 7, + 4, + 4, + 5, + 6, + 6, + 6, + 8, + 8, + 7, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 10, + 8, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 11, + 10, + 10, + 5, + 4, + 4, + 4, + 5, + 6, + 5, + 6, + 4, + 3, + 3, + 4, + 5, + 6, + 7, + 7, + 7, + 8, + 7, + 6, + 7, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 9, + 10, + 10, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 6, + 5, + 5, + 7, + 7, + 8, + 10, + 10, + 10, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 11, + 10, + 5, + 4, + 4, + 4, + 5, + 8, + 7, + 7, + 3, + 4, + 4, + 4, + 5, + 5, + 7, + 7, + 7, + 6, + 6, + 7, + 7, + 6, + 6, + 6, + 5, + 6, + 5, + 7, + 7, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 9, + 9, + 10, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 6, + 5, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 10, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 10, + 9, + 6, + 5, + 5, + 5, + 6, + 8, + 7, + 6, + 4, + 4, + 4, + 4, + 6, + 6, + 7, + 7, + 7, + 6, + 5, + 6, + 7, + 6, + 6, + 6, + 6, + 4, + 5, + 5, + 7, + 6, + 6, + 8, + 8, + 9, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 9, + 10, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 6, + 6, + 6, + 5, + 6, + 6, + 7, + 7, + 10, + 10, + 10, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 10, + 9, + 6, + 5, + 4, + 5, + 5, + 7, + 6, + 6, + 4, + 4, + 4, + 4, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 7, + 6, + 5, + 5, + 4, + 4, + 4, + 5, + 5, + 4, + 6, + 7, + 8, + 9, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 10, + 9, + 8, + 8, + 8, + 9, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 10, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 8, + 10, + 10, + 6, + 4, + 5, + 5, + 5, + 7, + 7, + 5, + 4, + 4, + 4, + 4, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 4, + 4, + 3, + 2, + 4, + 4, + 4, + 5, + 7, + 7, + 7, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 8, + 9, + 9, + 10, + 9, + 10, + 11, + 11, + 10, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 6, + 6, + 6, + 6, + 8, + 7, + 5, + 6, + 6, + 8, + 9, + 9, + 10, + 10, + 9, + 9, + 10, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 5, + 5, + 5, + 5, + 5, + 7, + 7, + 5, + 4, + 4, + 4, + 4, + 5, + 5, + 6, + 7, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 3, + 2, + 4, + 6, + 6, + 5, + 6, + 7, + 7, + 8, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 9, + 8, + 8, + 8, + 8, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 6, + 6, + 7, + 7, + 8, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 6, + 5, + 5, + 5, + 5, + 7, + 7, + 7, + 4, + 4, + 4, + 4, + 5, + 5, + 7, + 6, + 6, + 4, + 4, + 5, + 6, + 7, + 6, + 5, + 5, + 3, + 3, + 4, + 5, + 6, + 5, + 5, + 6, + 7, + 7, + 10, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 9, + 10, + 11, + 11, + 10, + 10, + 11, + 11, + 9, + 9, + 8, + 8, + 7, + 7, + 5, + 5, + 6, + 5, + 6, + 7, + 6, + 6, + 7, + 7, + 7, + 9, + 10, + 10, + 10, + 10, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 11, + 11, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 6, + 6, + 5, + 5, + 6, + 7, + 7, + 7, + 6, + 5, + 5, + 5, + 6, + 7, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 7, + 6, + 5, + 6, + 4, + 3, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 7, + 8, + 10, + 10, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 11, + 11, + 10, + 10, + 11, + 11, + 11, + 9, + 9, + 9, + 7, + 7, + 8, + 7, + 7, + 6, + 7, + 6, + 7, + 6, + 6, + 7, + 7, + 7, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 11, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 6, + 6, + 5, + 6, + 6, + 7, + 7, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 7, + 6, + 5, + 5, + 5, + 5, + 4, + 4, + 6, + 6, + 6, + 6, + 4, + 4, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 8, + 8, + 7, + 7, + 7, + 6, + 7, + 7, + 6, + 6, + 7, + 7, + 7, + 8, + 10, + 10, + 11, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 8, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 5, + 6, + 5, + 5, + 6, + 6, + 7, + 6, + 5, + 6, + 5, + 5, + 7, + 8, + 9, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 10, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 10, + 10, + 8, + 8, + 7, + 7, + 7, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 9, + 9, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 7, + 7, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 7, + 7, + 6, + 6, + 6, + 5, + 7, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 8, + 7, + 8, + 10, + 10, + 10, + 9, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 7, + 7, + 6, + 6, + 5, + 6, + 7, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 7, + 6, + 4, + 5, + 4, + 5, + 6, + 5, + 6, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 9, + 8, + 8, + 9, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 9, + 7, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 6, + 5, + 5, + 5, + 4, + 4, + 4, + 5, + 5, + 5, + 7, + 8, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 10, + 10, + 11, + 11, + 10, + 10, + 11, + 10, + 10, + 10, + 8, + 8, + 8, + 8, + 7, + 6, + 6, + 6, + 6, + 7, + 9, + 7, + 6, + 7, + 7, + 8, + 9, + 10, + 10, + 10, + 9, + 10, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 9, + 9, + 9, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 6, + 5, + 5, + 5, + 5, + 5, + 4, + 4, + 6, + 5, + 7, + 7, + 7, + 7, + 7, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 8, + 8, + 8, + 7, + 6, + 7, + 7, + 7, + 8, + 8, + 7, + 7, + 5, + 8, + 8, + 10, + 10, + 10, + 10, + 10, + 11, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 11, + 11, + 10, + 9, + 9, + 9, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 8, + 8, + 9, + 7, + 6, + 7, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 4, + 4, + 4, + 6, + 6, + 7, + 6, + 6, + 7, + 8, + 10, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 10, + 11, + 11, + 11, + 9, + 9, + 8, + 8, + 7, + 6, + 6, + 7, + 6, + 7, + 7, + 7, + 6, + 6, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 11, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 8, + 8, + 8, + 9, + 9, + 7, + 6, + 5, + 6, + 6, + 5, + 5, + 4, + 6, + 5, + 6, + 7, + 5, + 5, + 5, + 5, + 6, + 7, + 6, + 5, + 6, + 7, + 9, + 10, + 10, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 10, + 11, + 11, + 11, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 8, + 8, + 9, + 9, + 10, + 10, + 10, + 11, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 12, + 12, + 11, + 10, + 11, + 10, + 7, + 6, + 5, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 8, + 9, + 9, + 9, + 7, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 3, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 6, + 6, + 6, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 11, + 10, + 7, + 6, + 6, + 6, + 7, + 8, + 8, + 6, + 6, + 6, + 6, + 6, + 7, + 8, + 10, + 9, + 8, + 6, + 6, + 6, + 6, + 7, + 7, + 5, + 5, + 4, + 4, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 7, + 7, + 6, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 8, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 6, + 7, + 9, + 9, + 9, + 8, + 9, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 11, + 10, + 11, + 11, + 10, + 6, + 6, + 6, + 6, + 7, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 10, + 9, + 8, + 6, + 6, + 6, + 7, + 7, + 7, + 5, + 5, + 5, + 4, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 7, + 7, + 6, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 9, + 9, + 8, + 8, + 10, + 10, + 10, + 9, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 10, + 10, + 11, + 10, + 6, + 5, + 5, + 6, + 7, + 8, + 8, + 8, + 7, + 7, + 7, + 6, + 7, + 8, + 9, + 8, + 7, + 6, + 6, + 6, + 7, + 7, + 7, + 6, + 5, + 5, + 4, + 4, + 6, + 5, + 5, + 4, + 4, + 6, + 6, + 7, + 6, + 5, + 5, + 6, + 7, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 10, + 9, + 10, + 10, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 10, + 11, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 11, + 10, + 11, + 10, + 6, + 5, + 5, + 6, + 7, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 7, + 8, + 9, + 8, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 6, + 5, + 5, + 6, + 4, + 5, + 5, + 5, + 5, + 4, + 7, + 6, + 5, + 6, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 12, + 12, + 12, + 12, + 11, + 11, + 10, + 10, + 10, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 11, + 10, + 9, + 9, + 8, + 9, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 6, + 5, + 5, + 6, + 6, + 8, + 8, + 8, + 7, + 6, + 6, + 6, + 7, + 8, + 9, + 9, + 7, + 6, + 6, + 6, + 7, + 7, + 7, + 6, + 7, + 5, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 8, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 11, + 11, + 10, + 10, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 10, + 11, + 11, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 6, + 6, + 6, + 6, + 6, + 7, + 8, + 8, + 7, + 6, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 6, + 6, + 6, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 6, + 7, + 8, + 8, + 9, + 7, + 8, + 6, + 6, + 6, + 7, + 7, + 7, + 8, + 7, + 7, + 10, + 11, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 10, + 10, + 9, + 9, + 7, + 7, + 7, + 7, + 8, + 9, + 9, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 12, + 11, + 6, + 6, + 5, + 5, + 5, + 7, + 8, + 8, + 6, + 6, + 6, + 6, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 6, + 6, + 6, + 6, + 8, + 8, + 7, + 7, + 9, + 9, + 11, + 11, + 9, + 9, + 9, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 12, + 6, + 5, + 5, + 5, + 5, + 6, + 9, + 7, + 6, + 6, + 6, + 7, + 8, + 9, + 9, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 6, + 6, + 7, + 7, + 6, + 7, + 7, + 7, + 8, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 6, + 5, + 5, + 5, + 5, + 6, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 8, + 7, + 7, + 7, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 10, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 10, + 10, + 9, + 10, + 10, + 9, + 9, + 11, + 10, + 10, + 10, + 9, + 9, + 10, + 10, + 11, + 11, + 4, + 4, + 4, + 4, + 4, + 5, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 7, + 6, + 6, + 7, + 7, + 7, + 7, + 9, + 9, + 10, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 11, + 10, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 10, + 10, + 10, + 10, + 9, + 10, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 4, + 4, + 4, + 4, + 4, + 5, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 7, + 7, + 7, + 7, + 6, + 7, + 6, + 6, + 7, + 6, + 6, + 6, + 8, + 8, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 11, + 11, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 4, + 4, + 4, + 4, + 4, + 6, + 7, + 7, + 6, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 7, + 8, + 7, + 7, + 7, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 6, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 8, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 12, + 12, + 12, + 11, + 11, + 11, + 10, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 10, + 10, + 8, + 9, + 8, + 8, + 8, + 10, + 10, + 10, + 10, + 9, + 10, + 9, + 10, + 10, + 11, + 11, + 11, + 11, + 4, + 4, + 4, + 4, + 5, + 6, + 7, + 7, + 6, + 6, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 7, + 5, + 5, + 6, + 6, + 7, + 7, + 7, + 8, + 7, + 6, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 11, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 11, + 11, + 11, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 8, + 7, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 11, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 3, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 7, + 8, + 8, + 8, + 8, + 8, + 9, + 10, + 10, + 10, + 8, + 7, + 7, + 7, + 7, + 8, + 7, + 7, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 5, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 10, + 10, + 10, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 10, + 10, + 10, + 10, + 8, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 5, + 4, + 4, + 4, + 3, + 4, + 6, + 6, + 5, + 5, + 6, + 6, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 6, + 6, + 6, + 6, + 7, + 6, + 7, + 7, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 7, + 8, + 9, + 11, + 11, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 9, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 5, + 3, + 3, + 3, + 4, + 5, + 6, + 6, + 5, + 5, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 7, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 6, + 7, + 8, + 7, + 7, + 7, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 9, + 9, + 9, + 11, + 11, + 10, + 10, + 10, + 10, + 10, + 8, + 8, + 8, + 7, + 6, + 6, + 7, + 7, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 10, + 10, + 9, + 9, + 9, + 5, + 4, + 3, + 3, + 4, + 5, + 6, + 6, + 5, + 5, + 6, + 7, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 11, + 10, + 10, + 10, + 10, + 10, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 8, + 8, + 5, + 4, + 3, + 3, + 3, + 5, + 5, + 5, + 4, + 4, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 6, + 6, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 8, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 7, + 8, + 9, + 8, + 8, + 8, + 9, + 9, + 10, + 10, + 9, + 9, + 5, + 5, + 3, + 3, + 3, + 4, + 5, + 5, + 5, + 4, + 5, + 5, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 8, + 7, + 7, + 7, + 6, + 6, + 7, + 7, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 11, + 10, + 10, + 10, + 10, + 9, + 7, + 7, + 7, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 8, + 9, + 9, + 8, + 9, + 9, + 9, + 9 + ] + } + } +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/ephemeris_2030.csv b/papers/dark_comet/data/2016_TA56/ephemeris_2030.csv new file mode 100644 index 0000000000000000000000000000000000000000..d95614d85238be87b2c5aa2e44fda8dd27873a1e --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/ephemeris_2030.csv @@ -0,0 +1,184 @@ +date_0h_utc,ra_accel_deg,dec_accel_deg,ra_grav_deg,dec_grav_deg,separation_arcsec,separation_pa_deg,accel_sigma_major_arcsec,accel_sigma_minor_arcsec,accel_ellipse_pa_deg,grav_sigma_major_arcsec,grav_sigma_minor_arcsec,grav_ellipse_pa_deg,V,r_au,delta_au,elongation_deg,phase_deg +2030-06-01,93.947905,13.350660,93.947007,13.350104,3.73,57.5,0.665,0.035,58.3,0.408,0.041,57.7,19.63,0.6692,1.4189,25.7,41.0 +2030-06-02,95.242705,13.772065,95.241789,13.771489,3.82,57.1,0.680,0.035,57.8,0.417,0.041,57.3,19.60,0.6604,1.4048,25.8,41.9 +2030-06-03,96.555884,14.200310,96.554950,14.199713,3.90,56.6,0.696,0.035,57.3,0.427,0.042,56.8,19.58,0.6520,1.3906,25.9,42.8 +2030-06-04,97.887387,14.635429,97.886436,14.634811,3.99,56.1,0.712,0.035,56.8,0.436,0.042,56.4,19.55,0.6440,1.3764,26.0,43.8 +2030-06-05,99.237129,15.077431,99.236160,15.076791,4.08,55.6,0.728,0.035,56.3,0.445,0.042,55.9,19.53,0.6364,1.3622,26.2,44.8 +2030-06-06,100.604990,15.526289,100.604005,15.525627,4.17,55.1,0.744,0.035,55.8,0.455,0.042,55.4,19.51,0.6293,1.3480,26.4,45.8 +2030-06-07,101.990822,15.981941,101.989820,15.981256,4.26,54.6,0.760,0.035,55.3,0.464,0.042,54.9,19.50,0.6227,1.3339,26.6,46.8 +2030-06-08,103.394446,16.444279,103.393427,16.443572,4.34,54.1,0.776,0.035,54.8,0.474,0.042,54.4,19.48,0.6167,1.3198,26.8,47.9 +2030-06-09,104.815658,16.913150,104.814622,16.912420,4.43,53.6,0.792,0.035,54.3,0.483,0.042,53.9,19.47,0.6111,1.3058,27.0,48.9 +2030-06-10,106.254231,17.388348,106.253179,17.387594,4.52,53.1,0.808,0.035,53.8,0.492,0.042,53.4,19.46,0.6062,1.2918,27.2,50.1 +2030-06-11,107.709924,17.869607,107.708857,17.868830,4.60,52.6,0.824,0.035,53.2,0.502,0.042,52.9,19.45,0.6018,1.2778,27.5,51.2 +2030-06-12,109.182485,18.356603,109.181402,18.355802,4.69,52.1,0.839,0.035,52.7,0.511,0.042,52.4,19.45,0.5980,1.2640,27.8,52.3 +2030-06-13,110.671658,18.848943,110.670560,18.848118,4.78,51.6,0.855,0.035,52.2,0.520,0.042,51.9,19.45,0.5949,1.2502,28.1,53.5 +2030-06-14,112.177192,19.346163,112.176079,19.345315,4.86,51.1,0.870,0.035,51.7,0.529,0.043,51.4,19.45,0.5924,1.2366,28.4,54.6 +2030-06-15,113.698847,19.847729,113.697719,19.846858,4.94,50.6,0.885,0.035,51.3,0.538,0.043,50.9,19.45,0.5906,1.2231,28.7,55.7 +2030-06-16,115.236401,20.353031,115.235258,20.352136,5.02,50.1,0.900,0.035,50.8,0.546,0.042,50.5,19.45,0.5894,1.2097,29.1,56.9 +2030-06-17,116.789655,20.861383,116.788497,20.860466,5.11,49.7,0.915,0.035,50.3,0.555,0.042,50.0,19.46,0.5888,1.1965,29.5,58.0 +2030-06-18,118.358439,21.372026,118.357266,21.371087,5.18,49.3,0.929,0.035,49.9,0.564,0.042,49.6,19.47,0.5890,1.1834,29.8,59.1 +2030-06-19,119.942612,21.884129,119.941424,21.883168,5.26,48.9,0.944,0.035,49.5,0.572,0.042,49.2,19.48,0.5898,1.1705,30.3,60.2 +2030-06-20,121.542065,22.396790,121.540863,22.395809,5.34,48.6,0.957,0.035,49.2,0.580,0.042,48.9,19.49,0.5913,1.1578,30.7,61.3 +2030-06-21,123.156725,22.909044,123.155508,22.908042,5.41,48.2,0.971,0.035,48.8,0.588,0.043,48.6,19.51,0.5934,1.1454,31.1,62.3 +2030-06-22,124.786550,23.419861,124.785316,23.418840,5.49,48.0,0.985,0.035,48.6,0.596,0.043,48.3,19.53,0.5961,1.1332,31.6,63.3 +2030-06-23,126.431527,23.928157,126.430277,23.927119,5.56,47.7,0.998,0.035,48.3,0.603,0.043,48.1,19.54,0.5995,1.1212,32.1,64.3 +2030-06-24,128.091674,24.432797,128.090407,24.431742,5.63,47.5,1.010,0.035,48.1,0.611,0.043,47.9,19.56,0.6036,1.1095,32.6,65.2 +2030-06-25,129.767028,24.932600,129.765744,24.931529,5.70,47.4,1.023,0.036,48.0,0.618,0.043,47.7,19.58,0.6082,1.0981,33.1,66.0 +2030-06-26,131.457644,25.426344,131.456341,25.425259,5.76,47.3,1.035,0.036,47.9,0.625,0.043,47.7,19.61,0.6134,1.0870,33.7,66.8 +2030-06-27,133.163580,25.912777,133.162258,25.911678,5.83,47.3,1.047,0.036,47.8,0.632,0.043,47.6,19.63,0.6191,1.0762,34.3,67.6 +2030-06-28,134.884890,26.390619,134.883547,26.389509,5.89,47.3,1.059,0.037,47.8,0.639,0.043,47.7,19.65,0.6254,1.0657,34.9,68.3 +2030-06-29,136.621611,26.858571,136.620247,26.857451,5.95,47.4,1.070,0.037,47.9,0.646,0.044,47.7,19.67,0.6322,1.0556,35.5,68.9 +2030-06-30,138.373752,27.315323,138.372365,27.314194,6.01,47.5,1.081,0.038,48.0,0.652,0.044,47.9,19.70,0.6395,1.0458,36.1,69.5 +2030-07-01,140.141278,27.759557,140.139868,27.758421,6.07,47.7,1.092,0.039,48.2,0.659,0.044,48.1,19.72,0.6473,1.0363,36.7,70.0 +2030-07-02,141.924099,28.189958,141.922665,28.188817,6.13,47.9,1.102,0.039,48.5,0.665,0.045,48.3,19.74,0.6555,1.0272,37.4,70.4 +2030-07-03,143.722055,28.605220,143.720596,28.604077,6.18,48.3,1.113,0.040,48.8,0.670,0.045,48.6,19.76,0.6641,1.0185,38.1,70.8 +2030-07-04,145.534906,29.004053,145.533420,29.002908,6.24,48.6,1.122,0.041,49.1,0.676,0.045,49.0,19.78,0.6731,1.0102,38.8,71.1 +2030-07-05,147.362315,29.385190,147.360802,29.384045,6.29,49.0,1.131,0.041,49.5,0.681,0.046,49.4,19.81,0.6824,1.0023,39.5,71.4 +2030-07-06,149.203844,29.747393,149.202302,29.746250,6.33,49.5,1.140,0.042,50.0,0.686,0.046,49.9,19.83,0.6921,0.9948,40.2,71.6 +2030-07-07,151.058938,30.089463,151.057368,30.088325,6.38,50.0,1.148,0.043,50.5,0.691,0.047,50.4,19.85,0.7021,0.9877,41.0,71.7 +2030-07-08,152.926922,30.410248,152.925324,30.409116,6.42,50.6,1.157,0.044,51.1,0.696,0.048,50.9,19.87,0.7125,0.9809,41.7,71.8 +2030-07-09,154.806997,30.708644,154.805369,30.707520,6.46,51.2,1.164,0.045,51.7,0.700,0.048,51.6,19.89,0.7230,0.9746,42.5,71.8 +2030-07-10,156.698232,30.983612,156.696574,30.982498,6.50,51.9,1.171,0.046,52.3,0.704,0.049,52.2,19.90,0.7339,0.9687,43.3,71.8 +2030-07-11,158.599566,31.234177,158.597879,31.233075,6.54,52.6,1.177,0.047,53.0,0.708,0.050,52.9,19.92,0.7450,0.9633,44.1,71.8 +2030-07-12,160.509812,31.459440,160.508096,31.458352,6.57,53.4,1.184,0.048,53.8,0.712,0.050,53.7,19.94,0.7563,0.9582,44.9,71.6 +2030-07-13,162.427660,31.658584,162.425914,31.657511,6.60,54.2,1.189,0.049,54.5,0.715,0.051,54.4,19.96,0.7678,0.9536,45.7,71.5 +2030-07-14,164.351682,31.830881,164.349908,31.829825,6.62,55.0,1.193,0.050,55.3,0.717,0.052,55.3,19.97,0.7795,0.9494,46.6,71.3 +2030-07-15,166.280346,31.975699,166.278545,31.974662,6.65,55.8,1.197,0.051,56.2,0.720,0.053,56.1,19.99,0.7913,0.9457,47.4,71.0 +2030-07-16,168.212021,32.092513,168.210194,32.091497,6.67,56.7,1.202,0.052,57.0,0.722,0.054,57.0,20.00,0.8033,0.9423,48.2,70.7 +2030-07-17,170.144992,32.180905,170.143140,32.179911,6.68,57.6,1.205,0.053,57.9,0.724,0.055,57.8,20.02,0.8155,0.9394,49.1,70.4 +2030-07-18,172.077474,32.240576,172.075599,32.239606,6.69,58.5,1.207,0.055,58.8,0.725,0.056,58.7,20.03,0.8277,0.9370,49.9,70.0 +2030-07-19,174.007622,32.271345,174.005726,32.270399,6.70,59.5,1.208,0.056,59.7,0.725,0.057,59.7,20.05,0.8401,0.9349,50.8,69.6 +2030-07-20,175.933554,32.273153,175.931638,32.272233,6.71,60.4,1.209,0.057,60.6,0.726,0.058,60.6,20.06,0.8526,0.9333,51.7,69.2 +2030-07-21,177.853363,32.246065,177.851429,32.245173,6.71,61.4,1.209,0.058,61.6,0.726,0.059,61.5,20.08,0.8652,0.9322,52.5,68.7 +2030-07-22,179.765138,32.190268,179.763188,32.189403,6.71,62.4,1.208,0.060,62.5,0.726,0.060,62.5,20.09,0.8779,0.9314,53.4,68.3 +2030-07-23,181.666984,32.106065,181.665021,32.105230,6.70,63.3,1.207,0.061,63.4,0.725,0.061,63.5,20.11,0.8906,0.9311,54.2,67.8 +2030-07-24,183.557037,31.993880,183.555063,31.993074,6.69,64.3,1.205,0.062,64.4,0.724,0.062,64.4,20.12,0.9034,0.9312,55.1,67.2 +2030-07-25,185.433485,31.854245,185.431502,31.853469,6.68,65.3,1.203,0.063,65.3,0.722,0.063,65.3,20.14,0.9163,0.9318,55.9,66.7 +2030-07-26,187.294582,31.687796,187.292592,31.687050,6.66,66.2,1.198,0.065,66.3,0.720,0.065,66.3,20.15,0.9292,0.9327,56.8,66.1 +2030-07-27,189.138664,31.495269,189.136670,31.494555,6.64,67.2,1.194,0.066,67.2,0.718,0.066,67.2,20.17,0.9422,0.9341,57.6,65.5 +2030-07-28,190.964161,31.277492,190.962166,31.276808,6.61,68.1,1.190,0.067,68.1,0.715,0.067,68.2,20.18,0.9552,0.9359,58.4,65.0 +2030-07-29,192.769608,31.035372,192.767615,31.034719,6.58,69.1,1.185,0.068,69.0,0.712,0.068,69.1,20.20,0.9682,0.9381,59.3,64.3 +2030-07-30,194.553656,30.769890,194.551665,30.769268,6.55,70.0,1.178,0.069,69.9,0.708,0.070,70.0,20.22,0.9813,0.9407,60.1,63.7 +2030-07-31,196.315072,30.482092,196.313087,30.481500,6.52,70.9,1.172,0.071,70.8,0.704,0.071,70.9,20.23,0.9944,0.9438,60.9,63.1 +2030-08-01,198.052751,30.173076,198.050773,30.172514,6.48,71.8,1.164,0.072,71.6,0.700,0.072,71.7,20.25,1.0075,0.9472,61.7,62.5 +2030-08-02,199.765711,29.843984,199.763744,29.843451,6.43,72.7,1.157,0.073,72.4,0.695,0.074,72.6,20.27,1.0206,0.9510,62.4,61.8 +2030-08-03,201.453102,29.495990,201.451147,29.495487,6.39,73.5,1.147,0.074,73.3,0.690,0.075,73.4,20.29,1.0337,0.9552,63.2,61.2 +2030-08-04,203.114196,29.130293,203.112255,29.129818,6.34,74.3,1.138,0.075,74.0,0.685,0.076,74.2,20.31,1.0468,0.9599,64.0,60.6 +2030-08-05,204.748393,28.748104,204.746467,28.747657,6.29,75.2,1.129,0.076,74.8,0.679,0.078,75.0,20.33,1.0600,0.9649,64.7,59.9 +2030-08-06,206.355210,28.350640,206.353300,28.350219,6.24,75.9,1.119,0.077,75.5,0.673,0.079,75.7,20.34,1.0731,0.9703,65.4,59.3 +2030-08-07,207.934282,27.939110,207.932392,27.938715,6.18,76.7,1.108,0.078,76.3,0.667,0.080,76.5,20.37,1.0862,0.9760,66.1,58.6 +2030-08-08,209.485358,27.514714,209.483487,27.514344,6.12,77.4,1.097,0.079,77.0,0.661,0.081,77.2,20.39,1.0993,0.9822,66.8,58.0 +2030-08-09,211.008288,27.078632,211.006438,27.078287,6.06,78.1,1.085,0.080,77.6,0.654,0.083,77.9,20.41,1.1124,0.9887,67.5,57.3 +2030-08-10,212.503025,26.632018,212.501198,26.631696,6.00,78.8,1.073,0.081,78.3,0.647,0.084,78.6,20.43,1.1255,0.9955,68.1,56.7 +2030-08-11,213.969616,26.175996,213.967811,26.175696,5.93,79.5,1.061,0.082,78.9,0.639,0.085,79.2,20.45,1.1385,1.0027,68.8,56.1 +2030-08-12,215.408192,25.711655,215.406411,25.711376,5.86,80.1,1.048,0.083,79.5,0.632,0.086,79.8,20.47,1.1516,1.0103,69.4,55.4 +2030-08-13,216.818965,25.240046,216.817209,25.239788,5.79,80.7,1.036,0.084,80.0,0.625,0.087,80.4,20.50,1.1646,1.0182,70.0,54.8 +2030-08-14,218.202221,24.762184,218.200489,24.761945,5.72,81.3,1.023,0.084,80.6,0.617,0.088,81.0,20.52,1.1776,1.0265,70.5,54.2 +2030-08-15,219.558305,24.279040,219.556600,24.278819,5.65,81.9,1.009,0.085,81.1,0.609,0.090,81.5,20.55,1.1906,1.0351,71.1,53.6 +2030-08-16,220.887622,23.791545,220.885942,23.791341,5.58,82.4,0.996,0.086,81.6,0.601,0.091,82.0,20.57,1.2036,1.0440,71.6,53.0 +2030-08-17,222.190621,23.300587,222.188968,23.300399,5.51,83.0,0.982,0.086,82.1,0.593,0.092,82.5,20.60,1.2165,1.0533,72.1,52.4 +2030-08-18,223.467792,22.807011,223.466166,22.806839,5.43,83.5,0.968,0.087,82.5,0.585,0.093,83.0,20.62,1.2294,1.0628,72.6,51.8 +2030-08-19,224.719658,22.311618,224.718059,22.311461,5.36,83.9,0.955,0.088,82.9,0.577,0.093,83.4,20.65,1.2423,1.0727,73.1,51.2 +2030-08-20,225.946767,21.815166,225.945194,21.815023,5.28,84.4,0.940,0.088,83.3,0.569,0.094,83.9,20.68,1.2551,1.0829,73.5,50.6 +2030-08-21,227.149688,21.318369,227.148142,21.318239,5.21,84.8,0.927,0.089,83.7,0.561,0.095,84.3,20.70,1.2679,1.0934,74.0,50.1 +2030-08-22,228.329007,20.821896,228.327487,20.821777,5.13,85.2,0.912,0.089,84.1,0.552,0.096,84.7,20.73,1.2807,1.1042,74.4,49.5 +2030-08-23,229.485318,20.326373,229.483825,20.326266,5.06,85.6,0.898,0.090,84.4,0.544,0.097,85.0,20.76,1.2935,1.1153,74.7,49.0 +2030-08-24,230.619228,19.832387,230.617761,19.832290,4.98,86.0,0.885,0.090,84.7,0.536,0.098,85.4,20.79,1.3062,1.1266,75.1,48.4 +2030-08-25,231.731343,19.340479,231.729902,19.340393,4.90,86.4,0.870,0.090,85.0,0.528,0.098,85.7,20.81,1.3189,1.1383,75.4,47.9 +2030-08-26,232.822273,18.851156,232.820858,18.851079,4.83,86.7,0.856,0.091,85.3,0.519,0.099,86.0,20.84,1.3315,1.1502,75.8,47.4 +2030-08-27,233.892623,18.364884,233.891234,18.364816,4.75,87.0,0.843,0.091,85.6,0.511,0.100,86.3,20.87,1.3441,1.1623,76.1,46.9 +2030-08-28,234.942994,17.882093,234.941631,17.882032,4.68,87.3,0.829,0.091,85.8,0.503,0.100,86.6,20.90,1.3567,1.1748,76.4,46.4 +2030-08-29,235.973981,17.403178,235.972642,17.403125,4.60,87.6,0.815,0.091,86.1,0.495,0.101,86.9,20.93,1.3692,1.1875,76.6,45.9 +2030-08-30,236.986166,16.928500,236.984852,16.928454,4.53,87.9,0.801,0.092,86.3,0.487,0.101,87.2,20.96,1.3818,1.2004,76.9,45.4 +2030-08-31,237.980120,16.458390,237.978830,16.458351,4.46,88.2,0.788,0.092,86.5,0.479,0.102,87.4,20.99,1.3942,1.2136,77.1,44.9 +2030-09-01,238.956401,15.993146,238.955135,15.993112,4.38,88.4,0.774,0.092,86.7,0.471,0.102,87.6,21.02,1.4066,1.2270,77.3,44.4 +2030-09-02,239.915552,15.533034,239.914310,15.533006,4.31,88.6,0.761,0.092,86.9,0.463,0.103,87.8,21.05,1.4190,1.2407,77.5,44.0 +2030-09-03,240.858102,15.078294,240.856883,15.078271,4.24,88.9,0.748,0.092,87.0,0.456,0.103,88.0,21.08,1.4314,1.2545,77.6,43.5 +2030-09-04,241.784567,14.629137,241.783371,14.629118,4.17,89.1,0.735,0.092,87.2,0.448,0.103,88.2,21.11,1.4437,1.2686,77.8,43.1 +2030-09-05,242.695447,14.185746,242.694273,14.185732,4.10,89.3,0.723,0.092,87.3,0.440,0.104,88.4,21.14,1.4560,1.2829,77.9,42.6 +2030-09-06,243.591229,13.748281,243.590077,13.748270,4.03,89.4,0.710,0.092,87.4,0.433,0.104,88.6,21.17,1.4682,1.2975,78.0,42.2 +2030-09-07,244.472389,13.316878,244.471258,13.316870,3.96,89.6,0.697,0.092,87.5,0.426,0.104,88.7,21.20,1.4804,1.3122,78.1,41.8 +2030-09-08,245.339391,12.891649,245.338281,12.891645,3.89,89.8,0.685,0.092,87.6,0.419,0.105,88.9,21.23,1.4926,1.3271,78.2,41.4 +2030-09-09,246.192687,12.472691,246.191598,12.472690,3.83,89.9,0.673,0.092,87.7,0.411,0.105,89.0,21.26,1.5047,1.3422,78.2,40.9 +2030-09-10,247.032720,12.060078,247.031651,12.060080,3.76,90.1,0.661,0.092,87.8,0.404,0.105,89.1,21.30,1.5168,1.3576,78.3,40.5 +2030-09-11,247.859921,11.653873,247.858872,11.653877,3.70,90.2,0.650,0.092,87.9,0.398,0.105,89.3,21.33,1.5288,1.3731,78.3,40.2 +2030-09-12,248.674712,11.254122,248.673682,11.254129,3.64,90.3,0.638,0.092,87.9,0.391,0.105,89.3,21.36,1.5408,1.3887,78.3,39.8 +2030-09-13,249.477505,10.860860,249.476494,10.860868,3.57,90.5,0.627,0.092,88.0,0.384,0.105,89.5,21.39,1.5528,1.4046,78.3,39.4 +2030-09-14,250.268698,10.474110,250.267706,10.474120,3.51,90.6,0.616,0.092,88.0,0.378,0.106,89.5,21.42,1.5647,1.4206,78.2,39.0 +2030-09-15,251.048681,10.093886,251.047707,10.093898,3.45,90.7,0.605,0.092,88.1,0.371,0.106,89.6,21.45,1.5765,1.4368,78.2,38.6 +2030-09-16,251.817831,9.720194,251.816875,9.720207,3.39,90.8,0.594,0.092,88.1,0.365,0.106,89.7,21.48,1.5884,1.4532,78.2,38.3 +2030-09-17,252.576511,9.353033,252.575572,9.353047,3.34,90.9,0.584,0.091,88.1,0.359,0.106,89.8,21.51,1.6002,1.4697,78.1,37.9 +2030-09-18,253.325074,8.992391,253.324152,8.992407,3.28,91.0,0.573,0.091,88.2,0.353,0.106,89.8,21.54,1.6119,1.4864,78.0,37.6 +2030-09-19,254.063859,8.638255,254.062954,8.638271,3.22,91.0,0.563,0.091,88.2,0.347,0.106,89.9,21.57,1.6237,1.5033,77.9,37.2 +2030-09-20,254.793194,8.290601,254.792305,8.290618,3.17,91.1,0.554,0.091,88.2,0.341,0.106,90.0,21.60,1.6353,1.5203,77.8,36.9 +2030-09-21,255.513394,7.949403,255.512520,7.949421,3.11,91.2,0.544,0.091,88.2,0.335,0.106,90.0,21.63,1.6470,1.5374,77.7,36.6 +2030-09-22,256.224762,7.614629,256.223905,7.614648,3.06,91.2,0.534,0.090,88.1,0.329,0.106,90.0,21.66,1.6586,1.5547,77.5,36.2 +2030-09-23,256.927592,7.286243,256.926750,7.286262,3.01,91.3,0.525,0.090,88.1,0.324,0.106,90.1,21.69,1.6701,1.5721,77.4,35.9 +2030-09-24,257.622164,6.964204,257.621337,6.964223,2.96,91.4,0.516,0.090,88.1,0.318,0.105,90.1,21.72,1.6817,1.5896,77.2,35.6 +2030-09-25,258.308748,6.648469,258.307935,6.648489,2.91,91.4,0.507,0.090,88.1,0.313,0.105,90.2,21.75,1.6931,1.6073,77.0,35.3 +2030-09-26,258.987603,6.338992,258.986804,6.339012,2.86,91.4,0.498,0.090,88.1,0.308,0.105,90.2,21.78,1.7046,1.6250,76.9,35.0 +2030-09-27,259.658973,6.035725,259.658188,6.035745,2.81,91.5,0.489,0.089,88.0,0.303,0.105,90.2,21.81,1.7160,1.6430,76.7,34.6 +2030-09-28,260.323094,5.738614,260.322323,5.738635,2.76,91.5,0.481,0.089,88.0,0.298,0.105,90.2,21.84,1.7274,1.6610,76.5,34.3 +2030-09-29,260.980188,5.447606,260.979430,5.447627,2.72,91.6,0.472,0.089,87.9,0.293,0.105,90.2,21.87,1.7387,1.6791,76.2,34.0 +2030-09-30,261.630466,5.162644,261.629721,5.162664,2.67,91.6,0.464,0.088,87.9,0.288,0.105,90.2,21.90,1.7500,1.6973,76.0,33.7 +2030-10-01,262.274126,4.883665,262.273394,4.883686,2.63,91.6,0.456,0.088,87.9,0.284,0.105,90.3,21.93,1.7612,1.7157,75.8,33.4 +2030-10-02,262.911359,4.610607,262.910639,4.610627,2.59,91.6,0.448,0.088,87.8,0.279,0.105,90.2,21.96,1.7724,1.7341,75.5,33.2 +2030-10-03,263.542346,4.343402,263.541638,4.343422,2.54,91.7,0.441,0.088,87.7,0.274,0.104,90.2,21.99,1.7836,1.7527,75.3,32.9 +2030-10-04,264.167259,4.081979,264.166563,4.082000,2.50,91.7,0.433,0.087,87.7,0.270,0.104,90.2,22.02,1.7947,1.7713,75.0,32.6 +2030-10-05,264.786266,3.826267,264.785581,3.826288,2.46,91.7,0.426,0.087,87.6,0.266,0.104,90.3,22.04,1.8058,1.7900,74.7,32.3 +2030-10-06,265.399530,3.576192,265.398857,3.576212,2.42,91.7,0.419,0.087,87.5,0.261,0.104,90.2,22.07,1.8169,1.8088,74.4,32.0 +2030-10-07,266.007208,3.331677,266.006546,3.331697,2.38,91.7,0.412,0.087,87.5,0.257,0.104,90.3,22.10,1.8279,1.8277,74.1,31.7 +2030-10-08,266.609455,3.092647,266.608804,3.092666,2.34,91.7,0.405,0.086,87.4,0.253,0.103,90.2,22.13,1.8389,1.8467,73.8,31.5 +2030-10-09,267.206421,2.859024,267.205780,2.859044,2.30,91.7,0.398,0.086,87.3,0.249,0.103,90.2,22.15,1.8498,1.8657,73.5,31.2 +2030-10-10,267.798252,2.630734,267.797622,2.630753,2.27,91.8,0.392,0.086,87.2,0.245,0.103,90.1,22.18,1.8607,1.8848,73.2,30.9 +2030-10-11,268.385093,2.407700,268.384473,2.407719,2.23,91.8,0.385,0.085,87.1,0.242,0.103,90.2,22.21,1.8716,1.9040,72.9,30.7 +2030-10-12,268.967083,2.189847,268.966473,2.189865,2.20,91.8,0.379,0.085,87.1,0.238,0.103,90.2,22.23,1.8824,1.9232,72.5,30.4 +2030-10-13,269.544359,1.977101,269.543759,1.977119,2.16,91.8,0.373,0.085,87.0,0.234,0.102,90.1,22.26,1.8932,1.9425,72.2,30.1 +2030-10-14,270.117054,1.769390,270.116463,1.769408,2.13,91.8,0.367,0.085,86.9,0.231,0.102,90.2,22.29,1.9040,1.9619,71.9,29.9 +2030-10-15,270.685296,1.566642,270.684714,1.566660,2.09,91.8,0.361,0.084,86.8,0.227,0.102,90.0,22.31,1.9147,1.9813,71.5,29.6 +2030-10-16,271.249209,1.368788,271.248636,1.368806,2.06,91.8,0.355,0.084,86.7,0.224,0.102,90.1,22.34,1.9254,2.0008,71.1,29.3 +2030-10-17,271.808913,1.175758,271.808350,1.175775,2.03,91.8,0.349,0.084,86.6,0.220,0.102,90.0,22.37,1.9360,2.0203,70.8,29.1 +2030-10-18,272.364525,0.987484,272.363970,0.987501,2.00,91.8,0.344,0.083,86.5,0.217,0.101,90.0,22.39,1.9466,2.0399,70.4,28.8 +2030-10-19,272.916156,0.803901,272.915610,0.803918,1.97,91.7,0.338,0.083,86.4,0.214,0.101,90.0,22.42,1.9572,2.0595,70.0,28.6 +2030-10-20,273.463913,0.624942,273.463376,0.624959,1.94,91.7,0.333,0.083,86.3,0.211,0.101,90.0,22.44,1.9678,2.0792,69.6,28.3 +2030-10-21,274.007901,0.450544,274.007371,0.450560,1.91,91.7,0.328,0.082,86.2,0.208,0.101,89.9,22.47,1.9783,2.0989,69.2,28.1 +2030-10-22,274.548217,0.280644,274.547696,0.280659,1.88,91.7,0.323,0.082,86.1,0.205,0.100,89.9,22.49,1.9887,2.1187,68.8,27.8 +2030-10-23,275.084959,0.115179,275.084445,0.115195,1.85,91.7,0.318,0.082,86.0,0.201,0.100,89.8,22.51,1.9992,2.1384,68.4,27.6 +2030-10-24,275.618215,-0.045910,275.617709,-0.045895,1.82,91.7,0.312,0.082,85.9,0.199,0.100,89.8,22.54,2.0096,2.1582,68.0,27.3 +2030-10-25,276.148073,-0.202683,276.147575,-0.202668,1.79,91.7,0.308,0.081,85.8,0.196,0.100,89.7,22.56,2.0199,2.1780,67.6,27.1 +2030-10-26,276.674613,-0.355198,276.674122,-0.355184,1.77,91.7,0.303,0.081,85.7,0.193,0.099,89.7,22.59,2.0303,2.1979,67.1,26.8 +2030-10-27,277.197909,-0.503514,277.197426,-0.503500,1.74,91.7,0.298,0.081,85.6,0.190,0.099,89.7,22.61,2.0405,2.2178,66.7,26.6 +2030-10-28,277.718032,-0.647689,277.717556,-0.647675,1.72,91.7,0.294,0.081,85.5,0.188,0.099,89.7,22.63,2.0508,2.2376,66.3,26.3 +2030-10-29,278.235046,-0.787780,278.234577,-0.787766,1.69,91.7,0.289,0.080,85.4,0.185,0.099,89.6,22.65,2.0610,2.2575,65.8,26.1 +2030-10-30,278.749009,-0.923847,278.748547,-0.923833,1.67,91.7,0.285,0.080,85.3,0.182,0.099,89.5,22.68,2.0712,2.2774,65.4,25.8 +2030-10-31,279.259977,-1.055947,279.259521,-1.055934,1.64,91.7,0.281,0.080,85.1,0.180,0.098,89.5,22.70,2.0814,2.2974,65.0,25.6 +2030-11-01,279.768002,-1.184140,279.767553,-1.184127,1.62,91.7,0.277,0.079,85.0,0.178,0.098,89.5,22.72,2.0915,2.3173,64.5,25.4 +2030-11-02,280.273136,-1.308487,280.272693,-1.308474,1.59,91.6,0.273,0.079,84.9,0.175,0.098,89.3,22.74,2.1016,2.3372,64.0,25.1 +2030-11-03,280.775428,-1.429045,280.774991,-1.429032,1.57,91.6,0.269,0.079,84.8,0.173,0.098,89.2,22.77,2.1116,2.3571,63.6,24.9 +2030-11-04,281.274928,-1.545873,281.274498,-1.545861,1.55,91.6,0.265,0.079,84.7,0.170,0.097,89.3,22.79,2.1217,2.3770,63.1,24.6 +2030-11-05,281.771686,-1.659029,281.771262,-1.659017,1.53,91.6,0.261,0.078,84.5,0.168,0.097,89.3,22.81,2.1317,2.3969,62.6,24.4 +2030-11-06,282.265751,-1.768571,282.265333,-1.768559,1.51,91.6,0.257,0.078,84.4,0.166,0.097,89.1,22.83,2.1416,2.4168,62.2,24.2 +2030-11-07,282.757172,-1.874552,282.756759,-1.874541,1.48,91.6,0.253,0.078,84.3,0.164,0.097,89.1,22.85,2.1515,2.4367,61.7,23.9 +2030-11-08,283.245997,-1.977029,283.245590,-1.977018,1.46,91.6,0.250,0.078,84.1,0.162,0.097,89.0,22.87,2.1614,2.4565,61.2,23.7 +2030-11-09,283.732274,-2.076054,283.731873,-2.076043,1.44,91.6,0.246,0.077,84.0,0.160,0.096,89.0,22.89,2.1713,2.4764,60.7,23.5 +2030-11-10,284.216051,-2.171679,284.215655,-2.171668,1.42,91.6,0.243,0.077,83.9,0.158,0.096,88.9,22.91,2.1811,2.4962,60.2,23.2 +2030-11-11,284.697375,-2.263954,284.696985,-2.263944,1.40,91.6,0.239,0.077,83.8,0.156,0.096,88.9,22.93,2.1909,2.5160,59.7,23.0 +2030-11-12,285.176292,-2.352930,285.175907,-2.352919,1.38,91.6,0.236,0.077,83.6,0.154,0.096,88.9,22.95,2.2007,2.5358,59.2,22.7 +2030-11-13,285.652846,-2.438653,285.652467,-2.438643,1.37,91.6,0.233,0.076,83.5,0.152,0.095,88.9,22.97,2.2104,2.5555,58.7,22.5 +2030-11-14,286.127083,-2.521171,286.126708,-2.521161,1.35,91.6,0.229,0.076,83.4,0.150,0.095,88.8,22.99,2.2201,2.5752,58.2,22.3 +2030-11-15,286.599043,-2.600530,286.598674,-2.600520,1.33,91.6,0.226,0.076,83.3,0.148,0.095,88.6,23.01,2.2298,2.5949,57.7,22.0 +2030-11-16,287.068769,-2.676774,287.068405,-2.676764,1.31,91.6,0.223,0.076,83.1,0.146,0.095,88.6,23.02,2.2394,2.6145,57.2,21.8 +2030-11-17,287.536300,-2.749947,287.535941,-2.749937,1.29,91.6,0.220,0.075,83.0,0.144,0.095,88.6,23.04,2.2490,2.6342,56.7,21.6 +2030-11-18,288.001675,-2.820090,288.001321,-2.820081,1.28,91.6,0.217,0.075,82.9,0.143,0.094,88.4,23.06,2.2586,2.6537,56.2,21.3 +2030-11-19,288.464931,-2.887247,288.464581,-2.887237,1.26,91.6,0.214,0.075,82.7,0.141,0.094,88.4,23.08,2.2681,2.6732,55.7,21.1 +2030-11-20,288.926102,-2.951457,288.925757,-2.951448,1.24,91.6,0.211,0.075,82.6,0.139,0.094,88.4,23.10,2.2776,2.6927,55.2,20.9 +2030-11-21,289.385223,-3.012761,289.384882,-3.012751,1.23,91.6,0.208,0.075,82.5,0.138,0.094,88.2,23.11,2.2871,2.7122,54.6,20.6 +2030-11-22,289.842325,-3.071197,289.841988,-3.071187,1.21,91.6,0.206,0.074,82.3,0.136,0.094,88.1,23.13,2.2965,2.7315,54.1,20.4 +2030-11-23,290.297436,-3.126803,290.297103,-3.126794,1.20,91.6,0.203,0.074,82.2,0.134,0.093,88.1,23.15,2.3059,2.7509,53.6,20.2 +2030-11-24,290.750582,-3.179619,290.750254,-3.179610,1.18,91.6,0.200,0.074,82.1,0.133,0.093,88.1,23.16,2.3153,2.7701,53.1,19.9 +2030-11-25,291.201785,-3.229681,291.201461,-3.229672,1.16,91.6,0.198,0.074,81.9,0.131,0.093,88.0,23.18,2.3247,2.7893,52.5,19.7 +2030-11-26,291.651065,-3.277029,291.650746,-3.277020,1.15,91.6,0.195,0.074,81.8,0.130,0.093,87.8,23.20,2.3340,2.8085,52.0,19.5 +2030-11-27,292.098438,-3.321701,292.098122,-3.321692,1.14,91.6,0.193,0.073,81.6,0.128,0.093,87.9,23.21,2.3433,2.8275,51.5,19.2 +2030-11-28,292.543916,-3.363736,292.543604,-3.363727,1.12,91.6,0.190,0.073,81.5,0.127,0.093,87.6,23.23,2.3526,2.8465,50.9,19.0 +2030-11-29,292.987512,-3.403174,292.987204,-3.403165,1.11,91.7,0.188,0.073,81.3,0.126,0.092,87.8,23.24,2.3618,2.8655,50.4,18.8 +2030-11-30,293.429239,-3.440054,293.428935,-3.440045,1.09,91.7,0.186,0.073,81.2,0.124,0.092,87.6,23.26,2.3710,2.8843,49.8,18.5 diff --git a/papers/dark_comet/data/2016_TA56/field_20070914.json b/papers/dark_comet/data/2016_TA56/field_20070914.json new file mode 100644 index 0000000000000000000000000000000000000000..93dae0e4184ca88d77bc41d0203ee15809f97d66 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/field_20070914.json @@ -0,0 +1,201 @@ +{ + "track": { + "mjd": 54357.4924316656, + "ra": 36.34647535476084, + "dec": -4.505423545628145, + "rate": 34.698032824390566, + "pa": 209.47139422793276, + "n": 11, + "ours_across_rms": 0.02002067921393501 + }, + "reports": { + "n": 12, + "across_mean": 0.061645223507520684, + "across_rms": 0.0965204169512215, + "by_site": { + "568": 0.13801658512661832, + "T14": 0.02345954269797186 + } + }, + "n_known": 20, + "density_per_deg2": 25.464790894703256, + "nearest_arcsec": 149.55019815664758, + "known_rate_mean": 18.683157410734914, + "known_rate_sd": 5.1680214161301725, + "known_pa_mean": 207.8805261295994, + "known_pa_sd": 31.491131622239507, + "n_within_5_10": 0, + "n_within_10_20": 1, + "motion_fraction": 1.605309603147427e-05, + "expected_10x_30arcsec": 8.918386684152372e-07, + "objects": [ + { + "name": "2016 TA56", + "cls": "NEA>Apollo", + "V": 23.4, + "rate": 34.20855968116752, + "pa": 208.1795128520024, + "sep": 1.822862363186048 + }, + { + "name": "2015 KU103", + "cls": "MB>Middle", + "V": 22.6, + "rate": 18.33335470010876, + "pa": 222.02772489103998, + "sep": 149.55019815664758 + }, + { + "name": "2003 SJ212", + "cls": "MB>Inner", + "V": 20.3, + "rate": 30.828671658863282, + "pa": 143.50831442688343, + "sep": 591.2671381562122 + }, + { + "name": "2001 PP", + "cls": "MB>Outer", + "V": 18.4, + "rate": 20.42380987597564, + "pa": 193.87696268350967, + "sep": 625.4698614538534 + }, + { + "name": "2014 HZ203", + "cls": "MB>Middle", + "V": 22.9, + "rate": 17.663957043652477, + "pa": 221.90625143660534, + "sep": 844.4291498161936 + }, + { + "name": "2014 HE201", + "cls": "MB>Middle", + "V": 23.5, + "rate": 19.402886558705642, + "pa": 217.5646850605764, + "sep": 964.2287938145342 + }, + { + "name": "2010 NK43", + "cls": "MB>Outer", + "V": 23.2, + "rate": 17.44547198157734, + "pa": 219.5869480856986, + "sep": 1045.2240532903008 + }, + { + "name": "2016 TA100", + "cls": "MB>Middle", + "V": 21.2, + "rate": 17.32854605903219, + "pa": 203.8778880052936, + "sep": 1130.8371171787448 + }, + { + "name": "2008 XR43", + "cls": "MB>Middle", + "V": 21.1, + "rate": 21.089103452257046, + "pa": 199.36578327911013, + "sep": 1159.0888576152654 + }, + { + "name": "2014 AB81", + "cls": "MB>Outer", + "V": 22.3, + "rate": 19.46663407294646, + "pa": 195.7061763540441, + "sep": 1188.3989648125432 + }, + { + "name": "2015 DD268", + "cls": "MB>Outer", + "V": 22.1, + "rate": 25.905560299866128, + "pa": 192.3281356011376, + "sep": 1247.4893186489282 + }, + { + "name": "2018 VX113", + "cls": "MB>Outer", + "V": 21.7, + "rate": 13.703091658454307, + "pa": 215.82202296400155, + "sep": 1250.1431920608702 + }, + { + "name": "2011 HV106", + "cls": "MB>Outer", + "V": 21.8, + "rate": 17.052703161962327, + "pa": 210.0964514662512, + "sep": 1275.8275551465097 + }, + { + "name": "2011 YW4", + "cls": "MB>Inner", + "V": 20.4, + "rate": 14.706851783437541, + "pa": 182.79950727156398, + "sep": 1331.9626110179909 + }, + { + "name": "2014 KH36", + "cls": "MB>Middle", + "V": 21.9, + "rate": 18.2355208384625, + "pa": 219.19560704327108, + "sep": 1403.1165780318318 + }, + { + "name": "2001 QJ27", + "cls": "MB>Outer", + "V": 18.6, + "rate": 22.152983473338306, + "pa": 192.9343467893606, + "sep": 1420.5625307204823 + }, + { + "name": "2009 BY99", + "cls": "MB>Middle", + "V": 21.5, + "rate": 19.71975242871979, + "pa": 208.18884382410366, + "sep": 1499.5467524719288 + }, + { + "name": "2018 XA51", + "cls": "MB>Inner", + "V": 22.3, + "rate": 15.856486844506257, + "pa": 163.47695588341102, + "sep": 1612.9424227610386 + }, + { + "name": "2017 KJ34", + "cls": "MB>Outer", + "V": 22.5, + "rate": 21.385228405841264, + "pa": 219.75191974478298, + "sep": 1681.7647137240028 + }, + { + "name": "2007 RZ311", + "cls": "MB>Middle", + "V": 20.6, + "rate": 3.810060044146286, + "pa": 306.8786197005783, + "sep": 1691.4969739389178 + }, + { + "name": "2010 AB109", + "cls": "MB>Middle", + "V": 22.5, + "rate": 19.15247387284473, + "pa": 228.7173780807642, + "sep": 1745.5300387002828 + } + ] +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/forecast.json b/papers/dark_comet/data/2016_TA56/forecast.json new file mode 100644 index 0000000000000000000000000000000000000000..cc3db0356202d9c04a8d116eb20d08d627835cac --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/forecast.json @@ -0,0 +1,3711 @@ +{ + "desig": "2016 TA56", + "weighting": "one position a night", + "A2": -3.448859897611447e-12, + "A2_sigma": 3.701484681570248e-13, + "sig_new": 0.2, + "visible": [ + "2030-07-30", + "2030-10-22" + ], + "rows": [ + { + "date": "2030-06-01", + "ra_accel": 93.94790535776237, + "dec_accel": 13.350660414293168, + "ra_grav": 93.94700663437376, + "dec_grav": 13.350104306880317, + "sep": 3.730636831377136, + "sep_pa": 57.54520453119015, + "accel_major": 0.6647425386329755, + "accel_minor": 0.03541556074338703, + "accel_pa": 58.25583910864411, + "grav_major": 0.4082098004388147, + "grav_minor": 0.041115174834856875, + "grav_pa": 57.74120553415935, + "V": 19.627537825495278, + "r": 0.6692471675302631, + "delta": 1.4189465191240327, + "elong": 25.664575247330056, + "phase": 41.00963263105745 + }, + { + "date": "2030-06-02", + "ra_accel": 95.24270524184908, + "dec_accel": 13.772065451764474, + "ra_grav": 95.24178894896555, + "dec_grav": 13.771489172169689, + "sep": 3.816864192217895, + "sep_pa": 57.075262714251494, + "accel_major": 0.6800944307315333, + "accel_minor": 0.03541683498869388, + "accel_pa": 57.777900603043605, + "grav_major": 0.4174435721667897, + "grav_minor": 0.04133140891862364, + "grav_pa": 57.28055306497005, + "V": 19.601579837669643, + "r": 0.660412486823223, + "delta": 1.4047564412974531, + "elong": 25.778626505089697, + "phase": 41.89893327685144 + }, + { + "date": "2030-06-03", + "ra_accel": 96.55588352213167, + "dec_accel": 14.200309543253447, + "ra_grav": 96.55494972864123, + "dec_grav": 14.199712571536088, + "sep": 3.903754480020452, + "sep_pa": 56.59724811965617, + "accel_major": 0.6958728008918084, + "accel_minor": 0.03540761602185405, + "accel_pa": 57.29809809235485, + "grav_major": 0.4266319308632494, + "grav_minor": 0.04154389731142974, + "grav_pa": 56.83129684531127, + "V": 19.577207923585586, + "r": 0.6519770302264813, + "delta": 1.3905644328748312, + "elong": 25.906820860524743, + "phase": 42.819482728661136 + }, + { + "date": "2030-06-04", + "ra_accel": 97.88738676799375, + "dec_accel": 14.6354287756983, + "ra_grav": 97.88643558078746, + "dec_grav": 14.634810612508469, + "sep": 3.9911683219004406, + "sep_pa": 56.11153765047707, + "accel_major": 0.7121641550957182, + "accel_minor": 0.035387187938081946, + "accel_pa": 56.81102810183276, + "grav_major": 0.4359914316500206, + "grav_minor": 0.04172493452446395, + "grav_pa": 56.354072673782085, + "V": 19.55454820365118, + "r": 0.6439654867260977, + "delta": 1.3763766142709377, + "elong": 26.04969826618239, + "phase": 43.77079446521873 + }, + { + "date": "2030-06-05", + "ra_accel": 99.23712862296917, + "dec_accel": 15.077430524763091, + "ra_grav": 99.23616018685182, + "dec_grav": 15.076790698075111, + "sep": 4.0789544471313315, + "sep_pa": 55.61870031572372, + "accel_major": 0.727693444264839, + "accel_minor": 0.035355563946567414, + "accel_pa": 56.314432730303835, + "grav_major": 0.4453895118234477, + "grav_minor": 0.041887011769679856, + "grav_pa": 55.86947701737495, + "V": 19.533725140935818, + "r": 0.636402736163199, + "delta": 1.3621997299320254, + "elong": 26.207786749860418, + "phase": 44.752059269988315 + }, + { + "date": "2030-06-06", + "ra_accel": 100.60499039368433, + "dec_accel": 15.526289008806447, + "ra_grav": 100.60400488796873, + "dec_grav": 15.52562707975889, + "sep": 4.166960415261697, + "sep_pa": 55.11952303260093, + "accel_major": 0.7436809179928273, + "accel_minor": 0.035313803519219464, + "accel_pa": 55.81198553857425, + "grav_major": 0.4549531946135156, + "grav_minor": 0.042020797475910816, + "grav_pa": 55.365975156627414, + "V": 19.51485948796586, + "r": 0.6293136330119942, + "delta": 1.3480412109654927, + "elong": 26.38159802640434, + "phase": 45.76210981319956 + }, + { + "date": "2030-06-07", + "ra_accel": 101.99082239845156, + "dec_accel": 15.981940605909275, + "ra_grav": 101.9898200348535, + "dec_grav": 15.981256176700915, + "sep": 4.255023846973601, + "sep_pa": 54.61503214014065, + "accel_major": 0.7596816975760736, + "accel_minor": 0.03526263962221695, + "accel_pa": 55.30378905410596, + "grav_major": 0.4642336620876287, + "grav_minor": 0.04215200698321992, + "grav_pa": 54.881584630697944, + "V": 19.498065995875514, + "r": 0.6227227614399696, + "delta": 1.3339092348076014, + "elong": 26.571623326112757, + "phase": 46.799388485392356 + }, + { + "date": "2030-06-08", + "ra_accel": 103.39444615985691, + "dec_accel": 16.444278997531914, + "ra_grav": 103.39342717643312, + "dec_grav": 16.443571717969093, + "sep": 4.342985412066201, + "sep_pa": 54.106517009328016, + "accel_major": 0.7760277418149943, + "accel_minor": 0.03520421193757782, + "accel_pa": 54.796967477349696, + "grav_major": 0.4737666653427082, + "grav_minor": 0.04225252545257682, + "grav_pa": 54.377762284051045, + "V": 19.483450923106375, + "r": 0.6166541640001063, + "delta": 1.3198127796075814, + "elong": 26.77832955141176, + "phase": 47.86192026670798 + }, + { + "date": "2030-06-09", + "ra_accel": 104.81565753226435, + "dec_accel": 16.913150216341556, + "ra_grav": 104.81462218854963, + "dec_grav": 16.912419792338106, + "sep": 4.430680099392783, + "sep_pa": 53.595546944294334, + "accel_major": 0.7920717370402437, + "accel_minor": 0.03513834238073639, + "accel_pa": 54.27976683216714, + "grav_major": 0.4831328069114779, + "grav_minor": 0.042324744038738676, + "grav_pa": 53.859317739143506, + "V": 19.47110939813707, + "r": 0.6111310478125213, + "delta": 1.305761670520056, + "elong": 27.0021558663061, + "phase": 48.94729250257524 + }, + { + "date": "2030-06-10", + "ra_accel": 106.25423084477063, + "dec_accel": 17.388347692057028, + "ra_grav": 106.25317941312007, + "dec_grav": 17.387593892647324, + "sep": 4.517949520646757, + "sep_pa": 53.08398747294811, + "accel_major": 0.8079480597570879, + "accel_minor": 0.03506827387179635, + "accel_pa": 53.76332088640625, + "grav_major": 0.49246405415430444, + "grav_minor": 0.04238910913131583, + "grav_pa": 53.35524217467609, + "V": 19.46112270840443, + "r": 0.6061754736865183, + "delta": 1.2917666141407815, + "elong": 27.24351082842323, + "phase": 50.0526434617152 + }, + { + "date": "2030-06-11", + "ra_accel": 107.70992406728244, + "dec_accel": 17.869607389485207, + "ra_grav": 107.70885682447737, + "dec_grav": 17.868830054881325, + "sep": 4.604637300949182, + "sep_pa": 52.5740082894531, + "accel_major": 0.8237191694574053, + "accel_minor": 0.034996175977914434, + "accel_pa": 53.247973708413184, + "grav_major": 0.5016272853823147, + "grav_minor": 0.04244885095289155, + "grav_pa": 52.869437703946375, + "V": 19.45355560467209, + "r": 0.6018080354364747, + "delta": 1.277839216887303, + "elong": 27.50277016910514, + "phase": 51.17466138519141 + }, + { + "date": "2030-06-12", + "ra_accel": 109.18248496969626, + "dec_accel": 18.356603170580176, + "ra_grav": 109.18140218585403, + "dec_grav": 18.355802218992654, + "sep": 4.690597407058383, + "sep_pa": 52.06808648657355, + "accel_major": 0.838875634217621, + "accel_minor": 0.03492406049126263, + "accel_pa": 52.73292800591021, + "grav_major": 0.5108046190849662, + "grav_minor": 0.04248094987872742, + "grav_pa": 52.371994338218855, + "V": 19.448453724470074, + "r": 0.5980475379566825, + "delta": 1.2639919817314045, + "elong": 27.780275343730345, + "phase": 52.3095955286677 + }, + { + "date": "2030-06-13", + "ra_accel": 110.67165807157828, + "dec_accel": 18.848942534077008, + "ra_grav": 110.67055999861472, + "dec_grav": 18.84811796852431, + "sep": 4.77569356012165, + "sep_pa": 51.56900022671765, + "accel_major": 0.8548624582103991, + "accel_minor": 0.034857658923046805, + "accel_pa": 52.23170043306661, + "grav_major": 0.5200641150975307, + "grav_minor": 0.04248568149545466, + "grav_pa": 51.863680634064536, + "V": 19.445841250743968, + "r": 0.5949106840236951, + "delta": 1.2502382779589991, + "elong": 28.076332958881455, + "phase": 53.45328030550547 + }, + { + "date": "2030-06-14", + "ra_accel": 112.17719201895697, + "dec_accel": 19.346162939337944, + "ra_grav": 112.1760788796721, + "dec_grav": 19.345314854891804, + "sep": 4.859794836679344, + "sep_pa": 51.07981263930906, + "accel_major": 0.8696714001839245, + "accel_minor": 0.03479678981071198, + "accel_pa": 51.73316980062708, + "grav_major": 0.528741704965197, + "grav_minor": 0.042506367188326004, + "grav_pa": 51.399972450342204, + "V": 19.445718930713724, + "r": 0.5924117805226874, + "delta": 1.2365922799875069, + "elong": 28.391215129393462, + "phase": 54.6011731770243 + }, + { + "date": "2030-06-15", + "ra_accel": 113.69884687026652, + "dec_accel": 19.847728976446096, + "ra_grav": 113.69771884331335, + "dec_grav": 19.846857563982436, + "sep": 4.942792834971216, + "sep_pa": 50.60384860672268, + "accel_major": 0.8854793448945086, + "accel_minor": 0.03474904704372921, + "accel_pa": 51.25360572080035, + "grav_major": 0.5377467957626428, + "grav_minor": 0.04250098842636369, + "grav_pa": 50.926814682681766, + "V": 19.448062584714002, + "r": 0.5905624749921197, + "delta": 1.223068874728651, + "elong": 28.72516069915462, + "phase": 55.74840637400081 + }, + { + "date": "2030-06-16", + "ra_accel": 115.23640067863147, + "dec_accel": 20.353030625645818, + "ra_grav": 115.23525788744415, + "dec_grav": 20.352136177546022, + "sep": 5.024585394388428, + "sep_pa": 50.14465587329342, + "accel_major": 0.899690991879464, + "accel_minor": 0.03471497362657112, + "accel_pa": 50.78579004060026, + "grav_major": 0.5463363761743966, + "grav_minor": 0.042495620841183204, + "grav_pa": 50.47653151982047, + "V": 19.45282223066269, + "r": 0.5893715330671586, + "delta": 1.2096835434771132, + "elong": 29.07837704109239, + "phase": 56.88985169932532 + }, + { + "date": "2030-06-17", + "ra_accel": 116.78965493362355, + "dec_accel": 20.861382789351065, + "ra_grav": 116.78849743248145, + "dec_grav": 20.86046570161646, + "sep": 5.105091305703953, + "sep_pa": 49.70596015078977, + "accel_major": 0.9149102548514585, + "accel_minor": 0.03470292227427776, + "accel_pa": 50.34422287737283, + "grav_major": 0.5551813640421289, + "grav_minor": 0.04246970323201879, + "grav_pa": 50.02367798819441, + "V": 19.45992193032901, + "r": 0.5888446661449285, + "delta": 1.1964522287041184, + "elong": 29.45104198041415, + "phase": 58.02019675939514 + }, + { + "date": "2030-06-18", + "ra_accel": 118.35843870002876, + "dec_accel": 21.37202611548304, + "ra_grav": 118.35726646410447, + "dec_grav": 21.371086890942102, + "sep": 5.184236955716128, + "sep_pa": 49.291606988075294, + "accel_major": 0.9292467558396522, + "accel_minor": 0.03471374594302667, + "accel_pa": 49.924403132566965, + "grav_major": 0.5636282465526893, + "grav_minor": 0.04246257568723216, + "grav_pa": 49.61501781760305, + "V": 19.469260424540156, + "r": 0.5889844168527946, + "delta": 1.183391197604898, + "elong": 29.843305321482507, + "phase": 59.13402991389183 + }, + { + "date": "2030-06-19", + "ra_accel": 119.94261154160911, + "dec_accel": 21.884128976698022, + "ra_grav": 119.94142445626989, + "dec_grav": 21.883168225311717, + "sep": 5.261965133041633, + "sep_pa": 48.90549973776574, + "accel_major": 0.9437333914043533, + "accel_minor": 0.03475107085571304, + "accel_pa": 49.52953017981727, + "grav_major": 0.5719229757724889, + "grav_minor": 0.042461675891942136, + "grav_pa": 49.2343178052767, + "V": 19.480712570725732, + "r": 0.5897901074858045, + "delta": 1.1705169100416821, + "elong": 30.255289605099613, + "phase": 60.225930427822604 + }, + { + "date": "2030-06-20", + "ra_accel": 121.54206539254845, + "dec_accel": 22.39679039531958, + "ra_grav": 121.54086324498803, + "dec_grav": 22.39580883359226, + "sep": 5.338231962909595, + "sep_pa": 48.55153155976501, + "accel_major": 0.9569233581302212, + "accel_minor": 0.03482011135150971, + "accel_pa": 49.166657822823254, + "grav_major": 0.5800610759248495, + "grav_minor": 0.04247097888401515, + "grav_pa": 48.88544403361189, + "V": 19.494131540560574, + "r": 0.5912578537691967, + "delta": 1.1578458922286756, + "elong": 30.687089981044537, + "phase": 61.290559936637095 + }, + { + "date": "2030-06-21", + "ra_accel": 123.15672539812344, + "dec_accel": 22.909043719302318, + "ra_grav": 123.15550787255263, + "dec_grav": 22.908042169579407, + "sep": 5.412999714953097, + "sep_pa": 48.233515531267436, + "accel_major": 0.9705901227264238, + "accel_minor": 0.03492663482633215, + "accel_pa": 48.84187326938067, + "grav_major": 0.587789021505181, + "grav_minor": 0.04251023457685877, + "grav_pa": 48.58994201129593, + "V": 19.50935168960916, + "r": 0.5933806433199537, + "delta": 1.1453946135541584, + "elong": 31.13877329401237, + "phase": 62.322751415578736 + }, + { + "date": "2030-06-22", + "ra_accel": 124.78654954303141, + "dec_accel": 23.419860917897783, + "ra_grav": 124.78531621657733, + "dec_grav": 23.418840305165293, + "sep": 5.486243181962403, + "sep_pa": 47.95511789496626, + "accel_major": 0.984578875877352, + "accel_minor": 0.03507488298297789, + "accel_pa": 48.559054615546046, + "grav_major": 0.5957831544394245, + "grav_minor": 0.04254707766918786, + "grav_pa": 48.3105644468078, + "V": 19.52619197832416, + "r": 0.5961484752253894, + "delta": 1.133179363976952, + "elong": 31.610376563342896, + "phase": 63.31759224333476 + }, + { + "date": "2030-06-23", + "ra_accel": 126.43152680244445, + "dec_accel": 23.928157423865503, + "ra_grav": 126.43027714675021, + "dec_grav": 23.927118774013092, + "sep": 5.557934896973678, + "sep_pa": 47.71979226710775, + "accel_major": 0.9977094857688981, + "accel_minor": 0.03526432848554206, + "accel_pa": 48.31727391915777, + "grav_major": 0.6034377738315735, + "grav_minor": 0.042609846275521085, + "grav_pa": 48.07878876713886, + "V": 19.544459802056004, + "r": 0.599548554502805, + "delta": 1.1212161320290097, + "elong": 32.10190501400108, + "phase": 64.27049850349353 + }, + { + "date": "2030-06-24", + "ra_accel": 128.09167358119885, + "dec_accel": 24.432797472837667, + "ra_grav": 128.09040696421846, + "dec_grav": 24.431741908027586, + "sep": 5.628055020015799, + "sep_pa": 47.53072293993927, + "accel_major": 1.0099597888289935, + "accel_minor": 0.03549592757324867, + "accel_pa": 48.11805616107779, + "grav_major": 0.6109887998518646, + "grav_minor": 0.04268661581049228, + "grav_pa": 47.88127535240335, + "V": 19.563955074080262, + "r": 0.6035655330627431, + "delta": 1.1095204861955181, + "elong": 32.613329761712826, + "phase": 65.17727829079105 + }, + { + "date": "2030-06-25", + "ra_accel": 129.76702829143184, + "dec_accel": 24.932599878104906, + "ra_grav": 129.76574398384938, + "dec_grav": 24.93152861293521, + "sep": 5.696581889123922, + "sep_pa": 47.390773198523775, + "accel_major": 1.0231393097821746, + "accel_minor": 0.035780874968835655, + "accel_pa": 47.97364060285318, + "grav_major": 0.6183038030554044, + "grav_minor": 0.04280218782246936, + "grav_pa": 47.744371222641036, + "V": 19.584474399298813, + "r": 0.608181787209334, + "delta": 1.0981074641841928, + "elong": 33.14458520879939, + "phase": 66.03418244088068 + }, + { + "date": "2030-06-26", + "ra_accel": 131.45764407760433, + "dec_accel": 25.426344175575494, + "ra_grav": 131.45634126221057, + "dec_grav": 25.425258512892228, + "sep": 5.763489738368342, + "sep_pa": 47.30244344187332, + "accel_major": 1.0354319956574711, + "accel_minor": 0.036111194224179424, + "accel_pa": 47.87694710855297, + "grav_major": 0.6254607334252247, + "grav_minor": 0.04295098169776427, + "grav_pa": 47.661601569433884, + "V": 19.605815179288303, + "r": 0.6133777209103658, + "delta": 1.0869914744996687, + "elong": 33.695566207809584, + "phase": 66.83794182214811 + }, + { + "date": "2030-06-27", + "ra_accel": 133.16357980369006, + "dec_accel": 25.912777065997535, + "ra_grav": 133.16225758668506, + "dec_grav": 25.911678391742143, + "sep": 5.8287504779244435, + "sep_pa": 47.26783936082959, + "accel_major": 1.047009644111399, + "accel_minor": 0.03649085271952776, + "accel_pa": 47.833114472673515, + "grav_major": 0.6322488603203213, + "grav_minor": 0.04313814775160402, + "grav_pa": 47.63788749933025, + "V": 19.627779501396024, + "r": 0.6191320839249115, + "delta": 1.0761862138782117, + "elong": 34.266125063325184, + "phase": 67.58579102895129 + }, + { + "date": "2030-06-28", + "ra_accel": 134.8848895237834, + "dec_accel": 26.39061908126936, + "ra_grav": 134.883546947695, + "dec_grav": 26.389508858378832, + "sep": 5.8923360349506435, + "sep_pa": 47.2886499834423, + "accel_major": 1.0591235465646411, + "accel_minor": 0.036924888024092856, + "accel_pa": 47.847107910385716, + "grav_major": 0.6392258087896806, + "grav_minor": 0.04334180765445218, + "grav_pa": 47.65102576718422, + "V": 19.650177684951196, + "r": 0.6254222943782504, + "delta": 1.065704602942625, + "elong": 34.8560684604437, + "phase": 68.2754789552644 + }, + { + "date": "2030-06-29", + "ra_accel": 136.62161070029723, + "dec_accel": 26.858571403605502, + "ra_grav": 136.62024676395552, + "dec_grav": 26.85745116962955, + "sep": 5.9541961509478645, + "sep_pa": 47.36613230830873, + "accel_major": 1.0700814527633489, + "accel_minor": 0.03740662209293677, + "accel_pa": 47.9149431943668, + "grav_major": 0.6457825601161632, + "grav_minor": 0.043596262403258694, + "grav_pa": 47.73567554013081, + "V": 19.672831383877877, + "r": 0.632224756285255, + "delta": 1.0555587412155423, + "elong": 35.46515441633185, + "phase": 68.90526726505274 + }, + { + "date": "2030-06-30", + "ra_accel": 138.37375151696867, + "dec_accel": 27.315322798006253, + "ra_grav": 138.37236518947796, + "dec_grav": 27.31419415616605, + "sep": 6.014291809108242, + "sep_pa": 47.50111157660747, + "accel_major": 1.0810013726547671, + "accel_minor": 0.037942262254953577, + "accel_pa": 48.04190823284256, + "grav_major": 0.652263380449961, + "grav_minor": 0.04387407129046481, + "grav_pa": 47.86412017763112, + "V": 19.695576175574555, + "r": 0.6395151640610411, + "delta": 1.0457598809428883, + "elong": 36.093089378657375, + "phase": 69.47391821968759 + }, + { + "date": "2030-07-01", + "ra_accel": 140.14127763373253, + "dec_accel": 27.759556610917162, + "ra_grav": 140.13986787794886, + "dec_grav": 27.758421227367144, + "sep": 6.072560169209702, + "sep_pa": 47.69398117506334, + "accel_major": 1.0916746808019846, + "accel_minor": 0.03852679287856807, + "accel_pa": 48.22547891411901, + "grav_major": 0.658700846856193, + "grav_minor": 0.0441909632049717, + "grav_pa": 48.051913239869236, + "V": 19.718263595661913, + "r": 0.6472687874700045, + "delta": 1.036318418746731, + "elong": 36.73952557151682, + "phase": 69.98067354522938 + }, + { + "date": "2030-07-02", + "ra_accel": 141.92409875172848, + "dec_accel": 28.189957824083343, + "ra_grav": 141.92266454403193, + "dec_grav": 28.188817420995573, + "sep": 6.128935410485874, + "sep_pa": 47.94471604422089, + "accel_major": 1.1020654733618438, + "accel_minor": 0.03916065630237195, + "accel_pa": 48.46643377444076, + "grav_major": 0.6645073069626016, + "grav_minor": 0.044563556500367994, + "grav_pa": 48.313531953818426, + "V": 19.74076260759048, + "r": 0.6554607322511885, + "delta": 1.0272439027927975, + "elong": 37.40405870148209, + "phase": 70.42522618840965 + }, + { + "date": "2030-07-03", + "ra_accel": 143.72205535182127, + "dec_accel": 28.605220154221, + "ra_grav": 143.72059570303412, + "dec_grav": 28.604076502884343, + "sep": 6.183347012447507, + "sep_pa": 48.25288883841404, + "accel_major": 1.1126825743742341, + "accel_minor": 0.039843599109399656, + "accel_pa": 48.76487879385968, + "grav_major": 0.6702268632727647, + "grav_minor": 0.044959391376191836, + "grav_pa": 48.617900871499046, + "V": 19.76296052109685, + "r": 0.664066173187041, + "delta": 1.0185450530105422, + "elong": 38.086226110055556, + "phase": 70.8076867875578 + }, + { + "date": "2030-07-04", + "ra_accel": 145.53490597070967, + "dec_accel": 29.004053210406102, + "ra_grav": 145.53341995023163, + "dec_grav": 29.00290812611669, + "sep": 6.235708075307092, + "sep_pa": 48.617689220737915, + "accel_major": 1.1217577194600337, + "accel_minor": 0.040571365051590716, + "accel_pa": 49.11809361242703, + "grav_major": 0.675834849880079, + "grav_minor": 0.04539432337793109, + "grav_pa": 48.97916025201593, + "V": 19.784763394705344, + "r": 0.6730605579668849, + "delta": 1.0102297914304499, + "elong": 38.78550545121338, + "phase": 71.12854660588336 + }, + { + "date": "2030-07-05", + "ra_accel": 147.3623153358524, + "dec_accel": 29.385189718324877, + "ra_grav": 147.36080209248456, + "dec_grav": 29.384045052250695, + "sep": 6.28592971852149, + "sep_pa": 49.03794929919694, + "accel_major": 1.1313801515158473, + "accel_minor": 0.041341266807051955, + "accel_pa": 49.5248767992299, + "grav_major": 0.681214547789543, + "grav_minor": 0.04586751216309531, + "grav_pa": 49.39501310722713, + "V": 19.80609597286158, + "r": 0.6824197813542449, + "delta": 1.0023052799295333, + "elong": 39.50131393893626, + "phase": 71.3886384955734 + }, + { + "date": "2030-07-06", + "ra_accel": 149.20384368127662, + "dec_accel": 29.747392818446492, + "ra_grav": 149.20230246501188, + "dec_grav": 29.7462504500386, + "sep": 6.333915855914944, + "sep_pa": 49.512168880471975, + "accel_major": 1.140481036781716, + "accel_minor": 0.042163474599478654, + "accel_pa": 49.988939383160385, + "grav_major": 0.6863549004648984, + "grav_minor": 0.04637885333834781, + "grav_pa": 49.863933697296005, + "V": 19.82690121892729, + "r": 0.6921203302755753, + "delta": 0.9947779628889224, + "elong": 40.23300819059056, + "phase": 71.5890972430484 + }, + { + "date": "2030-07-07", + "ra_accel": 151.05893755907073, + "dec_accel": 30.08946343466113, + "ra_grav": 151.05736774411474, + "dec_grav": 30.088325264916175, + "sep": 6.379555792372537, + "sep_pa": 50.038541800674274, + "accel_major": 1.1482758083475058, + "accel_minor": 0.04301841041801999, + "accel_pa": 50.50007784508264, + "grav_major": 0.6912440255883311, + "grav_minor": 0.04692837605801058, + "grav_pa": 50.38409472008678, + "V": 19.84713951062384, + "r": 0.7021394013040259, + "delta": 0.9876536125190454, + "elong": 40.97988467829549, + "phase": 71.73132039888168 + }, + { + "date": "2030-07-08", + "ra_accel": 152.92692243712506, + "dec_accel": 30.410247691310413, + "ra_grav": 152.92532353813863, + "dec_grav": 30.40911563139267, + "sep": 6.422747783147064, + "sep_pa": 50.614986421643714, + "accel_major": 1.1568181796275152, + "accel_minor": 0.0439220183394706, + "accel_pa": 51.06441645029631, + "grav_major": 0.6960304040810313, + "grav_minor": 0.04751126399435826, + "grav_pa": 50.94921697690691, + "V": 19.866787564819244, + "r": 0.7124549925275143, + "delta": 0.980937374834604, + "elong": 41.7411807906096, + "phase": 71.81693043754483 + }, + { + "date": "2030-07-09", + "ra_accel": 154.8069973725784, + "dec_accel": 30.708644331375382, + "ra_grav": 154.80536906694738, + "dec_grav": 30.70752029603084, + "sep": 6.463369314370508, + "sep_pa": 51.23917040915955, + "accel_major": 1.163823729722804, + "accel_minor": 0.04485800370574577, + "accel_pa": 51.672959785648374, + "grav_major": 0.7002181683373567, + "grav_minor": 0.04814238907859781, + "grav_pa": 51.569487805891754, + "V": 19.885837154950128, + "r": 0.7230459721086991, + "delta": 0.9746338144778347, + "elong": 42.51607650945464, + "phase": 71.84773883116178 + }, + { + "date": "2030-07-10", + "ra_accel": 156.6982320375502, + "dec_accel": 30.983612108334626, + "ra_grav": 156.6965741779079, + "dec_grav": 30.982498003255213, + "sep": 6.501309360624389, + "sep_pa": 51.90854245038312, + "accel_major": 1.1710640042894491, + "accel_minor": 0.04583450949199029, + "accel_pa": 52.32760571055779, + "grav_major": 0.7042523227615262, + "grav_minor": 0.04880245449329765, + "grav_pa": 52.22601219344904, + "V": 19.904293678489317, + "r": 0.7338921262450795, + "delta": 0.9687469558696266, + "elong": 43.30369675252623, + "phase": 71.82571243021114 + }, + { + "date": "2030-07-11", + "ra_accel": 158.5995662963648, + "dec_accel": 31.234177122431234, + "ra_grav": 158.5978789269976, + "dec_grav": 31.233074835359737, + "sep": 6.536444868617409, + "sep_pa": 52.62035758023046, + "accel_major": 1.1772855050036204, + "accel_minor": 0.04684019255874359, + "accel_pa": 53.02167438363223, + "grav_major": 0.7080637750521617, + "grav_minor": 0.04951281655918247, + "grav_pa": 52.93377933068224, + "V": 19.9221746242346, + "r": 0.7449741890716571, + "delta": 0.963280318341877, + "elong": 44.10311443240023, + "phase": 71.75294235928145 + }, + { + "date": "2030-07-12", + "ra_accel": 160.50981241653884, + "dec_accel": 31.45944013309199, + "ra_grav": 160.50809578169086, + "dec_grav": 31.458351520882406, + "sep": 6.568663199751103, + "sep_pa": 53.37170719576374, + "accel_major": 1.1840243637253662, + "accel_minor": 0.0478825678321245, + "accel_pa": 53.756188516250575, + "grav_major": 0.7115035686448612, + "grav_minor": 0.05024839918703062, + "grav_pa": 53.66892422425698, + "V": 19.93950798369456, + "r": 0.7562738571533213, + "delta": 0.9582369425127336, + "elong": 44.91335429796198, + "phase": 71.63161557649221 + }, + { + "date": "2030-07-13", + "ra_accel": 162.42765981024593, + "dec_accel": 31.65858389915464, + "ra_grav": 162.4259143659511, + "dec_grav": 31.657510778649005, + "sep": 6.597838468310889, + "sep_pa": 54.15954342899418, + "accel_major": 1.1893832504928128, + "accel_minor": 0.04895304511530243, + "accel_pa": 54.52520584849198, + "grav_major": 0.7145779343439763, + "grav_minor": 0.05103303713708533, + "grav_pa": 54.44793301780011, + "V": 19.95633064823707, + "r": 0.7677737909324756, + "delta": 0.9536194065227487, + "elong": 45.73339754349837, + "phase": 71.46398922110987 + }, + { + "date": "2030-07-14", + "ra_accel": 164.3516820425289, + "dec_accel": 31.830880601223505, + "ra_grav": 164.34990845794522, + "dec_grav": 31.829824735348684, + "sep": 6.623860715404394, + "sep_pa": 54.98070826094745, + "accel_major": 1.1932618430523567, + "accel_minor": 0.05005038578050474, + "accel_pa": 55.325888522572384, + "grav_major": 0.7173710282302279, + "grav_minor": 0.05185005256218216, + "grav_pa": 55.25411916643057, + "V": 19.972686835127398, + "r": 0.7794576055920823, + "delta": 0.949429832717777, + "elong": 46.56218705805583, + "phase": 71.25236791325534 + }, + { + "date": "2030-07-15", + "ra_accel": 166.28034568754822, + "dec_accel": 31.97569927352574, + "ra_grav": 166.27854484663024, + "dec_grav": 31.974662359769386, + "sep": 6.6466228750539935, + "sep_pa": 55.83195690977343, + "accel_major": 1.1974138798053946, + "accel_minor": 0.05117510093930154, + "accel_pa": 56.15637551169269, + "grav_major": 0.7197776759378577, + "grav_minor": 0.05270931747890369, + "grav_pa": 56.092086253044044, + "V": 19.988626586148, + "r": 0.7913098531977693, + "delta": 0.9456698888955296, + "elong": 47.398632988362685, + "phase": 70.9990841379164 + }, + { + "date": "2030-07-16", + "ra_accel": 168.21202070983153, + "dec_accel": 32.09251299762251, + "ra_grav": 168.21019371006673, + "dec_grav": 32.09149665691556, + "sep": 6.666020218332483, + "sep_pa": 56.7099814156795, + "accel_major": 1.201829553746996, + "accel_minor": 0.0523236728334748, + "accel_pa": 57.01295701950866, + "grav_major": 0.7218172189042421, + "grav_minor": 0.05360736554942583, + "grav_pa": 56.955934323246595, + "V": 20.004204378237233, + "r": 0.8033159980153916, + "delta": 0.9423407902581372, + "elong": 48.2416182129915, + "phase": 70.70648170926124 + }, + { + "date": "2030-07-17", + "ra_accel": 170.14499225305318, + "dec_accel": 32.180905437566736, + "ra_grav": 170.14314039951824, + "dec_grav": 32.17991120279863, + "sep": 6.681956083646739, + "sep_pa": 57.611434006381735, + "accel_major": 1.204702916373965, + "accel_minor": 0.05349265361067461, + "accel_pa": 57.89139987051627, + "grav_major": 0.7235474988761413, + "grav_minor": 0.054540298928400496, + "grav_pa": 57.83965348225951, + "V": 20.019477871693514, + "r": 0.8154623867134285, + "delta": 0.9394433078206991, + "elong": 49.09000339457203, + "phase": 70.37690206217705 + }, + { + "date": "2030-07-18", + "ra_accel": 172.0774738823885, + "dec_accel": 32.240576239155956, + "ra_grav": 172.07559867652722, + "dec_grav": 32.23960554333425, + "sep": 6.694349640376323, + "sep_pa": 58.53295025674101, + "accel_major": 1.2066879675785847, + "accel_minor": 0.05468103274239319, + "accel_pa": 58.78897026678911, + "grav_major": 0.7247534096764235, + "grav_minor": 0.05551836338426071, + "grav_pa": 58.74797057159962, + "V": 20.034506801569428, + "r": 0.8277362146699051, + "delta": 0.93697778598758, + "elong": 49.942631471930206, + "phase": 70.01267288518213 + }, + { + "date": "2030-07-19", + "ra_accel": 174.0076224086096, + "dec_accel": 32.271344932631685, + "ra_grav": 174.0057255385676, + "dec_grav": 32.27039910035937, + "sep": 6.703119775550663, + "sep_pa": 59.47116985627749, + "accel_major": 1.2078558689067265, + "accel_minor": 0.055886508760595366, + "accel_pa": 59.70237852737486, + "grav_major": 0.7254557571744756, + "grav_minor": 0.05653198736554417, + "grav_pa": 59.67082248897293, + "V": 20.049352001518066, + "r": 0.8401254896465227, + "delta": 0.9349441677155673, + "elong": 50.798331714128345, + "phase": 69.6160985183648 + }, + { + "date": "2030-07-20", + "ra_accel": 175.93355425744775, + "dec_accel": 32.273153175713816, + "ra_grav": 175.93163757814142, + "dec_grav": 32.272233412028264, + "sep": 6.708211886573778, + "sep_pa": 60.422761818075706, + "accel_major": 1.2089525783214834, + "accel_minor": 0.05709997871932998, + "accel_pa": 60.62669951398783, + "grav_major": 0.7262211300020708, + "grav_minor": 0.05757574669629481, + "grav_pa": 60.6018515106298, + "V": 20.064074541944763, + "r": 0.8526189937810232, + "delta": 0.9333420230083964, + "elong": 51.65592358426463, + "phase": 69.18945162842266 + }, + { + "date": "2030-07-21", + "ra_accel": 177.8533631273909, + "dec_accel": 32.24606534494109, + "ra_grav": 177.85142864649825, + "dec_grav": 32.24517272963554, + "sep": 6.709568528906524, + "sep_pa": 61.38444402590064, + "accel_major": 1.208824174128009, + "accel_minor": 0.05833348290997086, + "accel_pa": 61.56245393207024, + "grav_major": 0.7258679459487389, + "grav_minor": 0.05866178040530304, + "grav_pa": 61.5472560841698, + "V": 20.078734966404102, + "r": 0.8652062447158588, + "delta": 0.9321705763435801, + "elong": 52.51422064950705, + "phase": 68.73496584327133 + }, + { + "date": "2030-07-22", + "ra_accel": 179.76513847131648, + "dec_accel": 32.190267590751745, + "ra_grav": 179.763188325674, + "dec_grav": 32.189403070545175, + "sep": 6.70715601422416, + "sep_pa": 62.353007837144354, + "accel_major": 1.208289738322839, + "accel_minor": 0.059565553214664224, + "accel_pa": 62.50145356094173, + "grav_major": 0.7257536292719288, + "grav_minor": 0.05977467823651434, + "grav_pa": 62.494186300319214, + "V": 20.093392616182665, + "r": 0.8778774565302309, + "delta": 0.9314287299493434, + "elong": 53.372034676458384, + "phase": 68.25482920123987 + }, + { + "date": "2030-07-23", + "ra_accel": 181.66698423442685, + "dec_accel": 32.106065484521885, + "ra_grav": 181.6650206696396, + "dec_grav": 32.10522986910137, + "sep": 6.700947771225334, + "sep_pa": 63.32533746297487, + "accel_major": 1.2069798046984324, + "accel_minor": 0.060807548037958736, + "accel_pa": 63.4444019463249, + "grav_major": 0.7250997678778033, + "grav_minor": 0.06092759502525799, + "grav_pa": 63.45038158354187, + "V": 20.1081050385382, + "r": 0.8906235009097778, + "delta": 0.9311150819679667, + "elong": 54.22817992627952, + "phase": 67.75117836092538 + }, + { + "date": "2030-07-24", + "ra_accel": 183.5570373011006, + "dec_accel": 31.99388038807327, + "ra_grav": 183.55506264807644, + "dec_grav": 31.993074346869488, + "sep": 6.690931326795988, + "sep_pa": 64.29843024137845, + "accel_major": 1.2053221286625673, + "accel_minor": 0.06205326435771654, + "accel_pa": 64.38754241183183, + "grav_major": 0.7238506289270785, + "grav_minor": 0.06210075679526366, + "grav_pa": 64.39941652136562, + "V": 20.122927477070448, + "r": 0.9034358691520745, + "delta": 0.9312279397192175, + "elong": 55.08147760890482, + "phase": 67.2260935544643 + }, + { + "date": "2030-07-25", + "ra_accel": 185.43348510107316, + "dec_accel": 31.854244649338092, + "ra_grav": 185.43150174994722, + "dec_grav": 31.853468709240953, + "sep": 6.677115108684673, + "sep_pa": 65.26941503477968, + "accel_major": 1.2026099264954677, + "accel_minor": 0.06329784670096471, + "accel_pa": 65.32716084084632, + "grav_major": 0.7223970858877047, + "grav_minor": 0.06330580498996015, + "grav_pa": 65.34930158312014, + "V": 20.13791244292567, + "r": 0.9163066350972474, + "delta": 0.9317653292646312, + "elong": 55.930760383938974, + "phase": 66.68159427263053 + }, + { + "date": "2030-07-26", + "ra_accel": 187.29458194613224, + "dec_accel": 31.687795729184128, + "ra_grav": 187.29259232451145, + "dec_grav": 31.68705027570894, + "sep": 6.659513605726345, + "sep_pa": 66.2355665239175, + "accel_major": 1.198363126079304, + "accel_minor": 0.06454803230209649, + "accel_pa": 66.26277232760103, + "grav_major": 0.7203599279902807, + "grav_minor": 0.06453537780570083, + "grav_pa": 66.2934576209453, + "V": 20.153109365082933, + "r": 0.9292284193512445, + "delta": 0.9327250025078864, + "elong": 56.774876814193846, + "phase": 66.11963565349387 + }, + { + "date": "2030-07-27", + "ra_accel": 189.138663742678, + "dec_accel": 31.495269359293026, + "ra_grav": 189.13667028916822, + "dec_grav": 31.494554637387914, + "sep": 6.638164568356979, + "sep_pa": 67.1943201627578, + "accel_major": 1.1944078645146423, + "accel_minor": 0.06578277760947891, + "accel_pa": 67.18796819035558, + "grav_major": 0.71777886945741, + "grav_minor": 0.06579558956645341, + "grav_pa": 67.23619146860781, + "V": 20.168564316808638, + "r": 0.9421943550046983, + "delta": 0.9341044431289822, + "elong": 57.612695674017395, + "phase": 65.54210553362667 + }, + { + "date": "2030-07-28", + "ra_accel": 190.96416078662367, + "dec_accel": 31.27749183687389, + "ra_grav": 190.96216592971444, + "dec_grav": 31.27680795496419, + "sep": 6.613113872390362, + "sep_pa": 68.1432817178526, + "accel_major": 1.190229803573218, + "accel_minor": 0.06700434553156079, + "accel_pa": 68.10152010128664, + "grav_major": 0.7150235922613409, + "grav_minor": 0.06706131111892959, + "grav_pa": 68.15847845600962, + "V": 20.18431981407506, + "r": 0.9551980547894428, + "delta": 0.9359008725088436, + "elong": 58.44311001237386, + "phase": 64.95082211912622 + }, + { + "date": "2030-07-29", + "ra_accel": 192.76960847898388, + "dec_accel": 31.035371572529424, + "ra_grav": 192.76761461468502, + "dec_grav": 31.034718507026682, + "sep": 6.5844237717150795, + "sep_pa": 69.08023646486657, + "accel_major": 1.1845192079118223, + "accel_minor": 0.06821971964132019, + "accel_pa": 69.0029979390228, + "grav_major": 0.7118063469575486, + "grav_minor": 0.06834868653188277, + "grav_pa": 69.07272163163239, + "V": 20.200414680962425, + "r": 0.9682335798822179, + "delta": 0.9381112564953527, + "elong": 59.26504091158479, + "phase": 64.3475322156905 + }, + { + "date": "2030-07-30", + "ra_accel": 194.55365587888429, + "dec_accel": 30.769890007235755, + "ra_grav": 194.55166535132452, + "dec_grav": 30.769267608768175, + "sep": 6.552168169138753, + "sep_pa": 70.00315474163307, + "accel_major": 1.1779629379999297, + "accel_minor": 0.06943112236492861, + "accel_pa": 69.89186142594043, + "grav_major": 0.7081389856494044, + "grav_minor": 0.06964526661581281, + "grav_pa": 69.96983800133987, + "V": 20.21688397606211, + "r": 0.981295410392709, + "delta": 0.9407323137661592, + "elong": 60.0774408922185, + "phase": 63.7339099454597 + }, + { + "date": "2030-07-31", + "ra_accel": 196.31507208106518, + "dec_accel": 30.482092030217697, + "ra_grav": 196.31308716186734, + "dec_grav": 30.481500030008714, + "sep": 6.516442465409042, + "sep_pa": 70.91019636653718, + "accel_major": 1.1718097681501571, + "accel_minor": 0.07060594980312868, + "accel_pa": 70.75961766663967, + "grav_major": 0.7042175940837194, + "grav_minor": 0.07095804319870766, + "grav_pa": 70.85630226810262, + "V": 20.23375897269466, + "r": 0.9943784174162866, + "delta": 0.9437605261686076, + "elong": 60.879296935896136, + "phase": 63.1115558751329 + }, + { + "date": "2030-08-01", + "ra_accel": 198.05275051975653, + "dec_accel": 30.173076032143175, + "ra_grav": 198.05077339600183, + "dec_grav": 30.17251405126864, + "sep": 6.477341780430957, + "sep_pa": 71.79971012502743, + "accel_major": 1.1643834942913482, + "accel_minor": 0.0717725163717621, + "accel_pa": 71.61123079135986, + "grav_major": 0.6998677627456892, + "grav_minor": 0.07227324345878355, + "grav_pa": 71.72223748056969, + "V": 20.251067185301586, + "r": 1.0074778367280224, + "delta": 0.947192151225838, + "elong": 61.66963313855232, + "phase": 62.48199645784339 + }, + { + "date": "2030-08-02", + "ra_accel": 199.7657113428265, + "dec_accel": 29.843983758295952, + "ra_grav": 199.7637441009423, + "dec_grav": 29.843451315749117, + "sep": 6.434981034989649, + "sep_pa": 72.6702347235413, + "accel_major": 1.1566540568510337, + "accel_minor": 0.07291751280573863, + "accel_pa": 72.44313370490357, + "grav_major": 0.6949795935417764, + "grav_minor": 0.07358914987634008, + "grav_pa": 72.56743799300632, + "V": 20.2688324335573, + "r": 1.020589244093578, + "delta": 0.951023236455004, + "elong": 62.44751303359977, + "phase": 61.846683703749065 + }, + { + "date": "2030-08-03", + "ra_accel": 201.4531020317178, + "dec_accel": 29.495990127223617, + "ra_grav": 201.4511466469443, + "dec_grav": 29.495486649507228, + "sep": 6.3894834488049055, + "sep_pa": 73.52049516003683, + "accel_major": 1.1471186811454916, + "accel_minor": 0.07404482703658968, + "accel_pa": 73.25452837243775, + "grav_major": 0.6899374535400898, + "grav_minor": 0.07490557153542063, + "grav_pa": 73.3935979421922, + "V": 20.28707493611238, + "r": 1.033708532031641, + "delta": 0.9552496351415358, + "elong": 63.21204162353291, + "phase": 61.20699500453024 + }, + { + "date": "2030-08-04", + "ra_accel": 203.11419648798133, + "dec_accel": 29.13029319706848, + "ra_grav": 203.11225481556323, + "dec_grav": 29.129818027960745, + "sep": 6.3409815604755915, + "sep_pa": 74.34939845417546, + "accel_major": 1.137897626713384, + "accel_minor": 0.07514142380870371, + "accel_pa": 74.04306238804466, + "grav_major": 0.6845705401763666, + "grav_minor": 0.0762175996451411, + "grav_pa": 74.19827651344352, + "V": 20.305811426819517, + "r": 1.0468318881465286, + "delta": 0.9598670229261805, + "elong": 63.962367184519955, + "phase": 60.56423305660908 + }, + { + "date": "2030-08-05", + "ra_accel": 204.74839276923106, + "dec_accel": 28.748104455328225, + "ra_grav": 204.74646653728234, + "dec_grav": 28.747656865697444, + "sep": 6.2896181059434735, + "sep_pa": 75.15602783360809, + "accel_major": 1.1285041432707177, + "accel_minor": 0.07620979190324624, + "accel_pa": 74.80860469668252, + "grav_major": 0.6792787836731209, + "grav_minor": 0.07753013802025933, + "grav_pa": 74.98812406302615, + "V": 20.325055287292983, + "r": 1.0599557747957034, + "delta": 0.964870914663779, + "elong": 64.69768287251587, + "phase": 59.91962586530005 + }, + { + "date": "2030-08-06", + "ra_accel": 206.3552096879956, + "dec_accel": 28.350639588367667, + "ra_grav": 206.35330049500195, + "dec_grav": 28.350218786568078, + "sep": 6.235536800385823, + "sep_pa": 75.93963484738661, + "accel_major": 1.1189891074970708, + "accel_minor": 0.07724270546841375, + "accel_pa": 75.549170398513, + "grav_major": 0.6729963014506894, + "grav_minor": 0.07880860323548124, + "grav_pa": 75.73417808512421, + "V": 20.344816691050152, + "r": 1.0730769100972615, + "delta": 0.9702566811150976, + "elong": 65.4172281644383, + "phase": 59.27432682030652 + }, + { + "date": "2030-08-07", + "ra_accel": 207.93428248934472, + "dec_accel": 27.93910986295836, + "ra_grav": 207.93239179994987, + "dec_grav": 27.93871500423557, + "sep": 6.17889327089468, + "sep_pa": 76.69963192804673, + "accel_major": 1.107747875225117, + "accel_minor": 0.07826252181887103, + "accel_pa": 76.26865486375168, + "grav_major": 0.6666993861882611, + "grav_minor": 0.08009255024255905, + "grav_pa": 76.47375849193878, + "V": 20.365102755129392, + "r": 1.0861922502745789, + "delta": 0.9760195650892707, + "elong": 66.12029016388814, + "phase": 58.62941483809167 + }, + { + "date": "2030-08-08", + "ra_accel": 209.48535779844914, + "dec_accel": 27.514714241982926, + "ra_grav": 209.48348694293577, + "dec_grav": 27.514344438077153, + "sep": 6.119847746051056, + "sep_pa": 77.43558266765758, + "accel_major": 1.096656566210028, + "accel_minor": 0.079239554550451, + "accel_pa": 76.96127482535522, + "grav_major": 0.6605971674029122, + "grav_minor": 0.08136059905296077, + "grav_pa": 77.19098266597791, + "V": 20.38591769482459, + "r": 1.0992989731269127, + "delta": 0.9821546964069972, + "elong": 66.80620479853015, + "phase": 57.985894577569624 + }, + { + "date": "2030-08-09", + "ra_accel": 211.0082880440495, + "dec_accel": 27.078632340304285, + "ra_grav": 211.0064382211937, + "dec_grav": 27.07828666898703, + "sep": 6.05855810448511, + "sep_pa": 78.14719152278012, + "accel_major": 1.0851580347971397, + "accel_minor": 0.08018296422568187, + "accel_pa": 77.62881333276584, + "grav_major": 0.6535041784459603, + "grav_minor": 0.08259128775132527, + "grav_pa": 77.86686392134742, + "V": 20.407262977716083, + "r": 1.1123944626720257, + "delta": 0.9886571048990429, + "elong": 67.47435795819028, + "phase": 57.344696733343596 + }, + { + "date": "2030-08-10", + "ra_accel": 212.50302548475344, + "dec_accel": 26.632018341719476, + "ra_grav": 212.50119776128182, + "dec_grav": 26.6316958549463, + "sep": 5.995194358589611, + "sep_pa": 78.83429450816574, + "accel_major": 1.0733543172859432, + "accel_minor": 0.08108679513279193, + "accel_pa": 78.26999855754069, + "grav_major": 0.6467498834669823, + "grav_minor": 0.08383274769889322, + "grav_pa": 78.55023648117316, + "V": 20.429137473682893, + "r": 1.1254762948371562, + "delta": 0.995521730155783, + "elong": 68.12418660845778, + "phase": 56.706678462585465 + }, + { + "date": "2030-08-11", + "ra_accel": 213.96961588393432, + "dec_accel": 26.175995974343817, + "ra_grav": 213.9678112022278, + "dec_grav": 26.17569570713795, + "sep": 5.929914403292867, + "sep_pa": 79.49684685143052, + "accel_major": 1.0613333974409873, + "accel_minor": 0.0819632198278497, + "accel_pa": 78.88802628380496, + "grav_major": 0.639324844479255, + "grav_minor": 0.08501240593972029, + "grav_pa": 79.1729824380028, + "V": 20.451537600438627, + "r": 1.1385422241135679, + "delta": 1.0027434270130877, + "elong": 68.75517986140355, + "phase": 56.07262406155048 + }, + { + "date": "2030-08-12", + "ra_accel": 215.40819179719293, + "dec_accel": 25.711654590471376, + "ra_grav": 215.4064109757145, + "dec_grav": 25.711375567753695, + "sep": 5.862889908537031, + "sep_pa": 80.13491380002145, + "accel_major": 1.0484435446427347, + "accel_minor": 0.0827939604625182, + "accel_pa": 79.47807757237528, + "grav_major": 0.6320203936655524, + "grav_minor": 0.08617416654251199, + "grav_pa": 79.78020390513446, + "V": 20.47445746811251, + "r": 1.1515901712322576, + "delta": 1.0103169664955218, + "elong": 69.3668799070228, + "phase": 55.443246068062656 + }, + { + "date": "2030-08-13", + "ra_accel": 216.81896535607717, + "dec_accel": 25.24004630043379, + "ra_grav": 216.817209096412, + "dec_grav": 25.239787544223297, + "sep": 5.794286163593487, + "sep_pa": 80.74865816602858, + "accel_major": 1.0356288095948232, + "accel_minor": 0.08359308367470591, + "accel_pa": 80.04474363329949, + "grav_major": 0.6247599003995773, + "grav_minor": 0.0873295897008845, + "grav_pa": 80.38650091619112, + "V": 20.497889029525357, + "r": 1.1646182115742556, + "delta": 1.0182370332561599, + "elong": 69.95888259590117, + "phase": 54.8191869915435 + }, + { + "date": "2030-08-14", + "ra_accel": 218.2022205387247, + "dec_accel": 24.76218397936368, + "ra_grav": 218.2004894325159, + "dec_grav": 24.761944515126764, + "sep": 5.724263334363972, + "sep_pa": 81.33832937549269, + "accel_major": 1.022717949672893, + "accel_minor": 0.08435727515798636, + "accel_pa": 80.58742935279031, + "grav_major": 0.6170578559961007, + "grav_minor": 0.08844301464094442, + "grav_pa": 80.95755496438237, + "V": 20.521822244175663, + "r": 1.1776245645308678, + "delta": 1.0264982220713268, + "elong": 70.53083745986318, + "phase": 54.20102177197861 + }, + { + "date": "2030-08-15", + "ra_accel": 219.55830500288312, + "dec_accel": 24.279039893952397, + "ra_grav": 219.5565995363815, + "dec_grav": 24.278818755873463, + "sep": 5.652984830296654, + "sep_pa": 81.90425312277209, + "accel_major": 1.00927743451842, + "accel_minor": 0.08507879308036287, + "accel_pa": 81.10413479364179, + "grav_major": 0.6089950640709016, + "grav_minor": 0.08950518974449462, + "grav_pa": 81.4840700079364, + "V": 20.54624525985555, + "r": 1.1906075835032348, + "delta": 1.035095036338998, + "elong": 71.08244699410805, + "phase": 53.58926093620416 + }, + { + "date": "2030-08-16", + "ra_accel": 220.88762175974614, + "dec_accel": 23.79154468598884, + "ra_grav": 220.88594232090128, + "dec_grav": 23.791340921903465, + "sep": 5.5806090518148315, + "sep_pa": 82.4468204841746, + "accel_major": 0.9955688128068029, + "accel_minor": 0.08577228102289196, + "accel_pa": 81.59915548244166, + "grav_major": 0.6013146726951204, + "grav_minor": 0.09055062713793777, + "grav_pa": 82.00635351074644, + "V": 20.57114461034444, + "r": 1.203565746677294, + "delta": 1.0440218910136623, + "elong": 71.61346519527177, + "phase": 52.9843542405854 + }, + { + "date": "2030-08-17", + "ra_accel": 222.1906210167399, + "dec_accel": 23.300586546681682, + "ra_grav": 222.18896790135994, + "dec_grav": 23.300399222217763, + "sep": 5.507292254270359, + "sep_pa": 82.96647837605141, + "accel_major": 0.9824090742901183, + "accel_minor": 0.08641071381784866, + "accel_pa": 82.06715003434154, + "grav_major": 0.5933081903047583, + "grav_minor": 0.09155858219084932, + "grav_pa": 82.5027725014294, + "V": 20.59650542134766, + "r": 1.216497648439839, + "delta": 1.0532731205671786, + "elong": 72.12369549477374, + "phase": 52.38669452103051 + }, + { + "date": "2030-08-18", + "ra_accel": 223.46779249289904, + "dec_accel": 22.807010521592424, + "ra_grav": 223.46616591297686, + "dec_grav": 22.80683872392831, + "sep": 5.433180852901552, + "sep_pa": 83.46372025529405, + "accel_major": 0.968167746681882, + "accel_minor": 0.08703198352165675, + "accel_pa": 82.51607785122582, + "grav_major": 0.5852218714759005, + "grav_minor": 0.0925307692612618, + "grav_pa": 82.9769761583096, + "V": 20.622311614655164, + "r": 1.2294019913297023, + "delta": 1.0628429911021393, + "elong": 72.612988310419, + "phase": 51.79662149014737 + }, + { + "date": "2030-08-19", + "ra_accel": 224.71965842437714, + "dec_accel": 22.311617978638395, + "ra_grav": 224.7180585126959, + "dec_grav": 22.311460819278427, + "sep": 5.358423097435562, + "sep_pa": 83.93907866105461, + "accel_major": 0.9549496022501467, + "accel_minor": 0.08758677670606296, + "accel_pa": 82.93657776764256, + "grav_major": 0.5768456766602357, + "grav_minor": 0.09345964541858923, + "grav_pa": 83.42091315889438, + "V": 20.64854610181966, + "r": 1.2422775787035951, + "delta": 1.0727257147410745, + "elong": 73.08123846044454, + "phase": 51.21442530961464 + }, + { + "date": "2030-08-20", + "ra_accel": 225.9467672982788, + "dec_accel": 21.815166313373457, + "ra_grav": 225.94519411656756, + "dec_grav": 21.815022930782245, + "sep": 5.283156367293969, + "sep_pa": 84.39311730523845, + "accel_major": 0.9403384208397771, + "accel_minor": 0.0881419589084999, + "accel_pa": 83.34292235409433, + "grav_major": 0.5689467830962621, + "grav_minor": 0.09437254771047215, + "grav_pa": 83.87118910116122, + "V": 20.675190961363622, + "r": 1.2551233077333839, + "delta": 1.082915464248215, + "elong": 73.52838258665257, + "phase": 50.640349894315456 + }, + { + "date": "2030-08-21", + "ra_accel": 227.14968832351713, + "dec_accel": 21.318368948806082, + "ra_grav": 227.1481418688196, + "dec_grav": 21.31823851036524, + "sep": 5.207512099753236, + "sep_pa": 84.82642482180383, + "accel_major": 0.9265037187634052, + "accel_minor": 0.08864732369172257, + "accel_pa": 83.7257000545958, + "grav_major": 0.560633404248168, + "grav_minor": 0.0952218060157875, + "grav_pa": 84.26691433353506, + "V": 20.70222759792945, + "r": 1.2679381630876823, + "delta": 1.0934063864582664, + "elong": 73.95439669885205, + "phase": 50.07459595766008 + }, + { + "date": "2030-08-22", + "ra_accel": 228.3290065236114, + "dec_accel": 20.82189566766044, + "ra_grav": 228.32748673297058, + "dec_grav": 20.821777371068784, + "sep": 5.131620369402873, + "sep_pa": 85.2396090811845, + "accel_major": 0.9122825700032985, + "accel_minor": 0.08910555599356831, + "accel_pa": 84.08433589442188, + "grav_major": 0.552377580864611, + "grav_minor": 0.0960446999832935, + "grav_pa": 84.6576584728373, + "V": 20.729636883436335, + "r": 1.280721210890847, + "delta": 1.1041926135132387, + "elong": 74.35929384483774, + "phase": 49.51732387490933 + }, + { + "date": "2030-08-23", + "ra_accel": 229.48531837960485, + "dec_accel": 20.326373269043625, + "ra_grav": 229.4838251374328, + "dec_grav": 20.326266343557332, + "sep": 5.05559970642923, + "sep_pa": 85.63329150364855, + "accel_major": 0.8982274052361111, + "accel_minor": 0.08953390366311927, + "accel_pa": 84.42454620749423, + "grav_major": 0.544114093456855, + "grav_minor": 0.09682961277977141, + "grav_pa": 85.0291174582464, + "V": 20.757399282738884, + "r": 1.293471593226244, + "delta": 1.1152682717052336, + "elong": 74.74312190530807, + "phase": 48.9686564246474 + }, + { + "date": "2030-08-24", + "ra_accel": 230.61922790601068, + "dec_accel": 19.832386527508906, + "ra_grav": 230.61776104869614, + "dec_grav": 19.832290234614423, + "sep": 4.97956521664675, + "sep_pa": 86.00810267674748, + "accel_major": 0.8847380568254368, + "accel_minor": 0.08991873607944291, + "accel_pa": 84.74381268110515, + "grav_major": 0.5357816919301247, + "grav_minor": 0.09758105783081246, + "grav_pa": 85.38844585740175, + "V": 20.785494966093097, + "r": 1.3061885229501993, + "delta": 1.1266274878650364, + "elong": 75.10596146857208, + "phase": 48.42868148152936 + }, + { + "date": "2030-08-25", + "ra_accel": 231.73134308478433, + "dec_accel": 19.340479397324465, + "ra_grav": 231.72990240733395, + "dec_grav": 19.34039303124748, + "sep": 4.903620520387185, + "sep_pa": 86.36467786480954, + "accel_major": 0.8703795136079941, + "accel_minor": 0.09028349992483575, + "accel_pa": 85.04648707875936, + "grav_major": 0.5275412198123479, + "grav_minor": 0.09829029565782861, + "grav_pa": 85.72347569080479, + "V": 20.81390391174323, + "r": 1.3188712789137833, + "delta": 1.1382643938832884, + "elong": 75.44792373688996, + "phase": 47.89745470444064 + }, + { + "date": "2030-08-26", + "ra_accel": 232.82227257773962, + "dec_accel": 18.85115640526657, + "ra_grav": 232.82085783726916, + "dec_grav": 18.85107929300709, + "sep": 4.827867277554346, + "sep_pa": 86.70365357172166, + "accel_major": 0.8564080379349737, + "accel_minor": 0.0906099984918744, + "accel_pa": 85.33011172890349, + "grav_major": 0.5193965786141745, + "grav_minor": 0.09895756543442742, + "grav_pa": 86.0341279531722, + "V": 20.84260600128904, + "r": 1.3315192014948458, + "delta": 1.1501731299076547, + "elong": 75.76914841094418, + "phase": 47.37500225873124 + }, + { + "date": "2030-08-27", + "ra_accel": 233.89262267074147, + "dec_accel": 18.36488414958425, + "ra_grav": 233.89123359106998, + "dec_grav": 18.36481565080519, + "sep": 4.752400358482763, + "sep_pa": 87.02566404455679, + "accel_major": 0.8425014893350213, + "accel_minor": 0.09090430560687152, + "accel_pa": 85.5961666081181, + "grav_major": 0.5111508641744714, + "grav_minor": 0.09959666380324922, + "grav_pa": 86.3420301652232, + "V": 20.87158111090342, + "r": 1.3441316884341599, + "delta": 1.162347847375858, + "elong": 76.06980148881979, + "phase": 46.86132358207362 + }, + { + "date": "2030-08-28", + "ra_accel": 234.94299443505992, + "dec_accel": 17.88209282535766, + "ra_grav": 234.94163071182783, + "dec_grav": 17.882032332091118, + "sep": 4.677304980432063, + "sep_pa": 87.33133832093097, + "accel_major": 0.8288537568475122, + "accel_minor": 0.09115584358068995, + "accel_pa": 85.84238376303432, + "grav_major": 0.5030358007716764, + "grav_minor": 0.100198588790259, + "grav_pa": 86.63359760336505, + "V": 20.900809200672352, + "r": 1.35670819100598, + "delta": 1.1747827130937618, + "elong": 76.35007293417083, + "phase": 46.3563941761496 + }, + { + "date": "2030-08-29", + "ra_accel": 235.97398111878192, + "dec_accel": 17.403177697975106, + "ra_grav": 235.9726424233175, + "dec_grav": 17.403124634087668, + "sep": 4.602659970942047, + "sep_pa": 87.62129782651955, + "accel_major": 0.814945041514261, + "accel_minor": 0.0914001338671831, + "accel_pa": 86.07808533068895, + "grav_major": 0.4949442604838294, + "grav_minor": 0.10075671252330803, + "grav_pa": 86.89608423452376, + "V": 20.930270403086016, + "r": 1.3692482103613492, + "delta": 1.1874719156625144, + "elong": 76.61017417816727, + "phase": 45.86016837354344 + }, + { + "date": "2030-08-30", + "ra_accel": 236.98616585463748, + "dec_accel": 16.92850045716665, + "ra_grav": 236.98485183668578, + "dec_grav": 16.928454277644136, + "sep": 4.5285407580061054, + "sep_pa": 87.8961542882456, + "accel_major": 0.8013229891658706, + "accel_minor": 0.09160353387794912, + "accel_pa": 86.29518823743932, + "grav_major": 0.486930836420842, + "grav_minor": 0.10128333287088179, + "grav_pa": 87.15045645870282, + "V": 20.95994511053999, + "r": 1.3817512942419126, + "delta": 1.200409675498302, + "elong": 76.85033547882051, + "phase": 45.372581977666414 + }, + { + "date": "2030-08-31", + "ra_accel": 237.98011976468968, + "dec_accel": 16.458390432300376, + "ra_grav": 237.9788300557401, + "dec_grav": 16.458350622452116, + "sep": 4.455016477349748, + "sep_pa": 88.15650792119065, + "accel_major": 0.7878215906506797, + "accel_minor": 0.09177868115305865, + "accel_pa": 86.49719183846199, + "grav_major": 0.47898718120619993, + "grav_minor": 0.10177530725672326, + "grav_pa": 87.39052873039077, + "V": 20.989814058735742, + "r": 1.3942170338062334, + "delta": 1.2135902586821998, + "elong": 77.07080320286092, + "phase": 44.893554664842476 + }, + { + "date": "2030-09-01", + "ra_accel": 238.95640057685128, + "dec_accel": 15.99314568419393, + "ra_grav": 238.9551347939832, + "dec_grav": 15.993111758776974, + "sep": 4.382147386925927, + "sep_pa": 88.40294605484932, + "accel_major": 0.7744518992660734, + "accel_minor": 0.09192652751291919, + "accel_pa": 86.68468553338127, + "grav_major": 0.4711197052208501, + "grav_minor": 0.10223338136621299, + "grav_pa": 87.61686521020775, + "V": 21.019858402061242, + "r": 1.4066450607510237, + "delta": 1.2270079942139251, + "elong": 77.27183716176589, + "phase": 44.422992026856065 + }, + { + "date": "2030-09-02", + "ra_accel": 239.91555179809848, + "dec_accel": 15.53303404724534, + "ra_grav": 239.91430954631318, + "dec_grav": 15.533005549467122, + "sep": 4.309989365378038, + "sep_pa": 88.6360421265493, + "accel_major": 0.7612239228605562, + "accel_minor": 0.09204810585876415, + "accel_pa": 86.85824431485018, + "grav_major": 0.46333437698857555, + "grav_minor": 0.102658460560387, + "grav_pa": 87.83004578071741, + "V": 21.050059775744018, + "r": 1.4190350445892823, + "delta": 1.2406572928519848, + "elong": 77.45370815285507, + "phase": 43.960787189792725 + }, + { + "date": "2030-09-03", + "ra_accel": 240.85810243105755, + "dec_accel": 15.078294205053911, + "ra_grav": 240.85688330578284, + "dec_grav": 15.078270705534097, + "sep": 4.238592672158, + "sep_pa": 88.8563548909574, + "accel_major": 0.7481464261672546, + "accel_minor": 0.09214446227813762, + "accel_pa": 87.0184268487468, + "grav_major": 0.4556363993472141, + "grav_minor": 0.10305128802368124, + "grav_pa": 88.03061000520836, + "V": 21.080400341374897, + "r": 1.431386690100809, + "delta": 1.2545326654795221, + "elong": 77.61669583012393, + "phase": 43.50682200682023 + }, + { + "date": "2030-09-04", + "ra_accel": 241.78456715121837, + "dec_accel": 14.629136881767616, + "ra_grav": 241.78337074057532, + "dec_grav": 14.629117977459888, + "sep": 4.168002182661538, + "sep_pa": 89.06442787611988, + "accel_major": 0.735275980105492, + "accel_minor": 0.09219611575245865, + "accel_pa": 87.15956683907523, + "grav_major": 0.44803048747589524, + "grav_minor": 0.10341282357952529, + "grav_pa": 88.21909457515918, + "V": 21.110862814496322, + "r": 1.4436997350395382, + "delta": 1.268628738821046, + "elong": 77.76108698609222, + "phase": 43.06096789107077 + }, + { + "date": "2030-09-05", + "ra_accel": 242.69544679774629, + "dec_accel": 14.185746197644894, + "ra_grav": 242.69427268458952, + "dec_grav": 14.185731510732877, + "sep": 4.098257643749304, + "sep_pa": 89.26078900633055, + "accel_major": 0.7225051176087219, + "accel_minor": 0.09225289135210409, + "accel_pa": 87.29693921237599, + "grav_major": 0.44049743968708466, + "grav_minor": 0.10374010814205421, + "grav_pa": 88.38686347270662, + "V": 21.1414304750635, + "r": 1.455973947849722, + "delta": 1.2829402669475083, + "elong": 77.88717423863243, + "phase": 42.62308640124798 + }, + { + "date": "2030-09-06", + "ra_accel": 243.59122906452828, + "dec_accel": 13.748281194666548, + "ra_grav": 243.590076828272, + "dec_grav": 13.748270371445962, + "sep": 4.029393945570356, + "sep_pa": 89.4459503538214, + "accel_major": 0.7098911920367008, + "accel_minor": 0.09229226694971192, + "accel_pa": 87.4240772272121, + "grav_major": 0.4330865529676672, + "grav_minor": 0.10404186122865422, + "grav_pa": 88.55241981729273, + "V": 21.17208716380196, + "r": 1.4682091256731093, + "delta": 1.2974621379422078, + "elong": 77.9952550972059, + "phase": 42.19302967999368 + }, + { + "date": "2030-09-07", + "ra_accel": 244.47238926412507, + "dec_accel": 13.316877516844976, + "ra_grav": 244.4712584823672, + "dec_grav": 13.316870226602248, + "sep": 3.9614414054752234, + "sep_pa": 89.62040799038186, + "accel_major": 0.6974853460940575, + "accel_minor": 0.09229777471558612, + "accel_pa": 87.53603191985955, + "grav_major": 0.4256609030799619, + "grav_minor": 0.10431190607662374, + "grav_pa": 88.69907417712248, + "V": 21.20281726718516, + "r": 1.4804050924351042, + "delta": 1.312189375428976, + "elong": 78.08563134277331, + "phase": 41.77064084003409 + }, + { + "date": "2030-09-08", + "ra_accel": 245.33939107499546, + "dec_accel": 12.89164921811508, + "ra_grav": 245.33828132460394, + "dec_grav": 12.89164515200898, + "sep": 3.894427283647509, + "sep_pa": 89.78464187394171, + "accel_major": 0.6852605081942181, + "accel_minor": 0.09228299030597933, + "accel_pa": 87.63716476329878, + "grav_major": 0.4185601472505447, + "grav_minor": 0.10456842936929485, + "grav_pa": 88.87279622186783, + "V": 21.233605693775253, + "r": 1.4925616970241253, + "delta": 1.327117134884537, + "elong": 78.15860867205369, + "phase": 41.35575436824019 + }, + { + "date": "2030-09-09", + "ra_accel": 246.1926871975216, + "dec_accel": 12.47269065986182, + "ra_grav": 246.19159805694315, + "dec_grav": 12.472689529826914, + "sep": 3.8283711728456016, + "sep_pa": 89.93911601974003, + "accel_major": 0.6733768642584985, + "accel_minor": 0.09224334611571774, + "accel_pa": 87.72658097848289, + "grav_major": 0.4114813831005253, + "grav_minor": 0.10477984896545188, + "grav_pa": 88.98744766354977, + "V": 21.264437844981362, + "r": 1.5046788116461467, + "delta": 1.3422406949811345, + "elong": 78.21449654992566, + "phase": 40.948196607737394 + }, + { + "date": "2030-09-10", + "ra_accel": 247.03271983469676, + "dec_accel": 12.06007845670964, + "ra_grav": 247.03165088399402, + "dec_grav": 12.060079994363061, + "sep": 3.7632926883988156, + "sep_pa": 90.08427829714286, + "accel_major": 0.6613676058985047, + "accel_minor": 0.09219636022439953, + "accel_pa": 87.80879957773894, + "grav_major": 0.4043844490799075, + "grav_minor": 0.10497019727058197, + "grav_pa": 89.104441901222, + "V": 21.295299583413218, + "r": 1.5167563302718539, + "delta": 1.3575554443777809, + "elong": 78.25360819296552, + "phase": 40.54778638428184 + }, + { + "date": "2030-09-11", + "ra_accel": 247.85992092993024, + "dec_accel": 11.653873412998172, + "ra_grav": 247.85887175175264, + "dec_grav": 11.653877368581263, + "sep": 3.6992079692439903, + "sep_pa": 90.22056061778648, + "accel_major": 0.6495824185491774, + "accel_minor": 0.09214132100659357, + "accel_pa": 87.88491374426741, + "grav_major": 0.39761343419306955, + "grav_minor": 0.1051493087633691, + "grav_pa": 89.25298560406004, + "V": 21.326177202785374, + "r": 1.5287941671691427, + "delta": 1.3730568650477224, + "elong": 78.27626058353866, + "phase": 40.15433583244264 + }, + { + "date": "2030-09-12", + "ra_accel": 248.67471213276178, + "dec_accel": 11.254122371515942, + "ra_grav": 248.67368231414554, + "dec_grav": 11.254128512860955, + "sep": 3.636126552449143, + "sep_pa": 90.34837927844048, + "accel_major": 0.6381147979926739, + "accel_minor": 0.0920548470202486, + "accel_pa": 87.94735689635496, + "grav_major": 0.3908599481706358, + "grav_minor": 0.10528688939648732, + "grav_pa": 89.33933664018159, + "V": 21.357057403703767, + "r": 1.5407922555421025, + "delta": 1.3887405141658637, + "elong": 78.28277439042499, + "phase": 39.767651443420874 + }, + { + "date": "2030-09-13", + "ra_accel": 249.47750451767945, + "dec_accel": 10.860859899061383, + "ra_grav": 249.47649364910512, + "dec_grav": 10.86086801059027, + "sep": 3.5740608826253073, + "sep_pa": 90.4681345966716, + "accel_major": 0.6270999325185829, + "accel_minor": 0.09193128527125531, + "accel_pa": 87.99454263676057, + "grav_major": 0.38438754391095775, + "grav_minor": 0.10541946523987436, + "grav_pa": 89.47548654682112, + "V": 21.387927278344925, + "r": 1.5527505462863471, + "delta": 1.4046020068353682, + "elong": 78.27347369583708, + "phase": 39.38753530660657 + }, + { + "date": "2030-09-14", + "ra_accel": 250.26869813196546, + "dec_accel": 10.4741097519527, + "ra_grav": 250.26770581018195, + "dec_grav": 10.474119633703001, + "sep": 3.513012887341768, + "sep_pa": 90.58021197579696, + "accel_major": 0.6158722558629702, + "accel_minor": 0.0918197865622198, + "accel_pa": 88.04144507215747, + "grav_major": 0.3777053693931667, + "grav_minor": 0.10551267653922967, + "grav_pa": 89.54527308404242, + "V": 21.418774304742087, + "r": 1.5646690067486695, + "delta": 1.4206370016785599, + "elong": 78.24868547456214, + "phase": 39.01378646674859 + }, + { + "date": "2030-09-15", + "ra_accel": 251.04868149990108, + "dec_accel": 10.093886095489102, + "ra_grav": 251.04770732619016, + "dec_grav": 10.093897562188666, + "sep": 3.4529899842266514, + "sep_pa": 90.68498110808335, + "accel_major": 0.6051201798243164, + "accel_minor": 0.09168212872328636, + "accel_pa": 88.07717599716898, + "grav_major": 0.37125320857235233, + "grav_minor": 0.10559526898819445, + "grav_pa": 89.64395272726684, + "V": 21.449586349479702, + "r": 1.5765476196639125, + "delta": 1.4368411906726257, + "elong": 78.20873884807129, + "phase": 38.64620228100094 + }, + { + "date": "2030-09-16", + "ra_accel": 251.8178311860387, + "dec_accel": 9.7201944956414, + "ra_grav": 251.81687476788855, + "dec_grav": 9.720207375809283, + "sep": 3.39399295390766, + "sep_pa": 90.78279714244175, + "accel_major": 0.5943230388706574, + "accel_minor": 0.09152148792561475, + "accel_pa": 88.10077471607755, + "grav_major": 0.36494480921993916, + "grav_minor": 0.10564744913037148, + "grav_pa": 89.69781410399776, + "V": 21.48035167526405, + "r": 1.5883863821019206, + "delta": 1.4532102932496853, + "elong": 78.15396418364271, + "phase": 38.28457967359488 + }, + { + "date": "2030-09-17", + "ra_accel": 252.57651149808044, + "dec_accel": 9.353032729348627, + "ra_grav": 252.57557244950345, + "dec_grav": 9.353046864438419, + "sep": 3.3360206698646913, + "sep_pa": 90.87400076909829, + "accel_major": 0.5835584461639044, + "accel_minor": 0.09141429884345942, + "accel_pa": 88.14105104985875, + "grav_major": 0.35875018199384673, + "grav_minor": 0.10568735265552617, + "grav_pa": 89.77003442481758, + "V": 21.511058949543404, + "r": 1.6001853044595922, + "delta": 1.4697400537503997, + "elong": 78.08469214737744, + "phase": 37.92871621443043 + }, + { + "date": "2030-09-18", + "ra_accel": 253.32507436841146, + "dec_accel": 8.992391465948442, + "ra_grav": 253.32415230934066, + "dec_grav": 8.992406709540793, + "sep": 3.279073332562268, + "sep_pa": 90.95891829576351, + "accel_major": 0.5733757103523457, + "accel_minor": 0.09123260567242038, + "accel_pa": 88.1526706877172, + "grav_major": 0.352668793775857, + "grav_minor": 0.10570887917500069, + "grav_pa": 89.83592799850652, + "V": 21.54169725125974, + "r": 1.611944409603441, + "delta": 1.4864262410064084, + "elong": 78.00125280892865, + "phase": 37.57841098923789 + }, + { + "date": "2030-09-19", + "ra_accel": 254.0638593932888, + "dec_accel": 8.638254874171846, + "ra_grav": 254.06295395069463, + "dec_grav": 8.638271091191921, + "sep": 3.223146332009816, + "sep_pa": 91.03786272600213, + "accel_major": 0.5634569764227674, + "accel_minor": 0.0910297654092851, + "accel_pa": 88.15404055328148, + "grav_major": 0.34660492795661474, + "grav_minor": 0.10571033704102405, + "grav_pa": 89.8847222999177, + "V": 21.572256073381904, + "r": 1.6236637319658223, + "delta": 1.5032646484784844, + "elong": 77.90397486429438, + "phase": 37.233465276343175 + }, + { + "date": "2030-09-20", + "ra_accel": 254.79319400142282, + "dec_accel": 8.290601192532124, + "ra_grav": 254.7923048089172, + "dec_grav": 8.290618258520185, + "sep": 3.1682356027835317, + "sep_pa": 91.111133708519, + "accel_major": 0.553559298633084, + "accel_minor": 0.09083845471439961, + "accel_pa": 88.15673747319059, + "grav_major": 0.34102002552889865, + "grav_minor": 0.10570966557470192, + "grav_pa": 89.99253371667774, + "V": 21.60272532072474, + "r": 1.6353433167671876, + "delta": 1.5202510938195792, + "elong": 77.79318502347529, + "phase": 36.893683063414755 + }, + { + "date": "2030-09-21", + "ra_accel": 255.51339369457207, + "dec_accel": 7.949403285644341, + "ra_grav": 255.5125203936513, + "dec_grav": 7.949421086046472, + "sep": 3.1143317801104176, + "sep_pa": 91.17901877130689, + "accel_major": 0.5437917950356798, + "accel_minor": 0.09063794891587214, + "accel_pa": 88.1533351064715, + "grav_major": 0.33500643161437466, + "grav_minor": 0.10566941464686916, + "grav_pa": 89.98704663970048, + "V": 21.63309530334972, + "r": 1.64698321927799, + "delta": 1.5373814170599118, + "elong": 77.66920756510314, + "phase": 36.558871456940416 + }, + { + "date": "2030-09-22", + "ra_accel": 256.2247622996157, + "dec_accel": 7.614629197265825, + "ra_grav": 256.22390453809504, + "dec_grav": 7.6146476267966285, + "sep": 3.061430203338451, + "sep_pa": 91.24179255112136, + "accel_major": 0.5340741542917686, + "accel_minor": 0.09043472049924245, + "accel_pa": 88.14603898425338, + "grav_major": 0.3294063963464605, + "grav_minor": 0.10562520908787194, + "grav_pa": 90.02663415593997, + "V": 21.66335672660952, + "r": 1.6585835040955934, + "delta": 1.5546514769200142, + "elong": 77.53236404375438, + "phase": 36.22884104257977 + }, + { + "date": "2030-09-23", + "ra_accel": 256.92759217845656, + "dec_accel": 7.28624269157517, + "ra_grav": 256.92674961163743, + "dec_grav": 7.286261653584075, + "sep": 3.0095211868122536, + "sep_pa": 91.29971856243368, + "accel_major": 0.5248168497112586, + "accel_minor": 0.09022626232052096, + "accel_pa": 88.1360417677345, + "grav_major": 0.32388212565646973, + "grav_minor": 0.10556757015546965, + "grav_pa": 90.06495137749957, + "V": 21.693500679995076, + "r": 1.670144244498354, + "delta": 1.5720571454959715, + "elong": 77.38297310366706, + "phase": 35.9034062511619 + }, + { + "date": "2030-09-24", + "ra_accel": 257.62216434080966, + "dec_accel": 6.964203766603921, + "ra_grav": 257.6213366309726, + "dec_grav": 6.964223172497905, + "sep": 2.95859599796266, + "sep_pa": 91.35304888850476, + "accel_major": 0.5156418256577626, + "accel_minor": 0.08996752853260981, + "accel_pa": 88.10268647597005, + "grav_major": 0.31843275698560547, + "grav_minor": 0.10549715140162085, + "grav_pa": 90.10203702944335, + "V": 21.723518627199923, + "r": 1.6816655218356664, + "delta": 1.5895943018955605, + "elong": 77.22135033238239, + "phase": 35.58238578412581 + }, + { + "date": "2030-09-25", + "ra_accel": 258.3087484230224, + "dec_accel": 6.648469107521761, + "ra_grav": 258.3079352402012, + "dec_grav": 6.648488876203819, + "sep": 2.9086422994363272, + "sep_pa": 91.40202538216697, + "accel_major": 0.5066420736696815, + "accel_minor": 0.0897665749246614, + "accel_pa": 88.09143488149228, + "grav_major": 0.31319000152200127, + "grav_minor": 0.10541842170828655, + "grav_pa": 90.15953791355285, + "V": 21.753402400501358, + "r": 1.693147424930011, + "delta": 1.6072588262690393, + "elong": 77.04780805454742, + "phase": 35.26560313657723 + }, + { + "date": "2030-09-26", + "ra_accel": 258.98760253259513, + "dec_accel": 6.3389924385981145, + "ra_grav": 258.9868035537694, + "dec_grav": 6.339012495960935, + "sep": 2.859649818303008, + "sep_pa": 91.44687918529881, + "accel_major": 0.4977252643099093, + "accel_minor": 0.08951611090979013, + "accel_pa": 88.05679892683821, + "grav_major": 0.3080032338764083, + "grav_minor": 0.10531945884259604, + "grav_pa": 90.16864658128783, + "V": 21.78314420266111, + "r": 1.7045900495741975, + "delta": 1.6250465964289316, + "elong": 76.86265495347727, + "phase": 34.95288722523926 + }, + { + "date": "2030-09-27", + "ra_accel": 259.6589729990285, + "dec_accel": 6.03572473219373, + "ra_grav": 259.6581879080974, + "dec_grav": 6.03574501063305, + "sep": 2.811607582959917, + "sep_pa": 91.48783155181657, + "accel_major": 0.4891704214328888, + "accel_minor": 0.0892534872071323, + "accel_pa": 88.01593715555403, + "grav_major": 0.30288543533246853, + "grav_minor": 0.1052148592645635, + "grav_pa": 90.20614299250018, + "V": 21.812736618307493, + "r": 1.7159934979874645, + "delta": 1.64295348968718, + "elong": 76.66619540323386, + "phase": 34.64407308303957 + }, + { + "date": "2030-09-28", + "ra_accel": 260.3230941485067, + "dec_accel": 5.738614249106121, + "ra_grav": 260.3223226369646, + "dec_grav": 5.738634687051348, + "sep": 2.7645014333751443, + "sep_pa": 91.52509476314754, + "accel_major": 0.48070407873488663, + "accel_minor": 0.08900115281367728, + "accel_pa": 87.97704205912892, + "grav_major": 0.29782283534572207, + "grav_minor": 0.10509179869999954, + "grav_pa": 90.19313912008676, + "V": 21.842172634726488, + "r": 1.7273578783673358, + "delta": 1.6609753923779742, + "elong": 76.4587284575272, + "phase": 34.33900251514924 + }, + { + "date": "2030-09-29", + "ra_accel": 260.98018825563776, + "dec_accel": 5.447606426433559, + "ra_grav": 260.9794300217694, + "dec_grav": 5.447626967929139, + "sep": 2.7183193488471225, + "sep_pa": 91.55887143555366, + "accel_major": 0.4723288356411785, + "accel_minor": 0.08875981672655674, + "accel_pa": 87.94069807354883, + "grav_major": 0.29295941821528737, + "grav_minor": 0.10496318196787754, + "grav_pa": 90.20290314213814, + "V": 21.87144566790951, + "r": 1.7386833044230778, + "delta": 1.6791082178140975, + "elong": 76.24054654421771, + "phase": 34.03752456659103 + }, + { + "date": "2030-09-30", + "ra_accel": 261.6304658349746, + "dec_accel": 5.162643675430743, + "ra_grav": 261.62972058380313, + "dec_grav": 5.16266426973195, + "sep": 2.6730487836059775, + "sep_pa": 91.58935534540005, + "accel_major": 0.46430017846506383, + "accel_minor": 0.08847509757038699, + "accel_pa": 87.88406683114081, + "grav_major": 0.2881309206133187, + "grav_minor": 0.10482622931065315, + "grav_pa": 90.21568010174066, + "V": 21.900549586730346, + "r": 1.7499698949739286, + "delta": 1.6973479311222048, + "elong": 76.01193404408086, + "phase": 33.73949564425979 + }, + { + "date": "2030-10-01", + "ra_accel": 262.2741263505084, + "dec_accel": 4.88366519624912, + "ra_grav": 262.2733937944218, + "dec_grav": 4.8836857974314825, + "sep": 2.628674261541086, + "sep_pa": 91.61673239492191, + "accel_major": 0.4561467395455685, + "accel_minor": 0.08826245780684468, + "accel_pa": 87.85672213109854, + "grav_major": 0.28364223361323043, + "grav_minor": 0.10468710465302637, + "grav_pa": 90.27264996075718, + "V": 21.929478726428002, + "r": 1.7612177735309922, + "delta": 1.715690576457896, + "elong": 75.77316602825543, + "phase": 33.44477920931342 + }, + { + "date": "2030-10-02", + "ra_accel": 262.9113593063486, + "dec_accel": 4.610606915445843, + "ra_grav": 262.91063916432824, + "dec_grav": 4.610627482061685, + "sep": 2.585182414742152, + "sep_pa": 91.6411798116341, + "accel_major": 0.4483555874022563, + "accel_minor": 0.08799230170413747, + "accel_pa": 87.80249234913872, + "grav_major": 0.2788313154434992, + "grav_minor": 0.1045254176064894, + "grav_pa": 90.22473091652347, + "V": 21.958227885249773, + "r": 1.7724270679663618, + "delta": 1.734132301059184, + "elong": 75.52450741775141, + "phase": 33.15324507112803 + }, + { + "date": "2030-10-03", + "ra_accel": 263.54234555778663, + "dec_accel": 4.3434016122129195, + "ra_grav": 263.5416375553496, + "dec_grav": 4.34342210695948, + "sep": 2.5425594555766073, + "sep_pa": 91.66286708862535, + "accel_major": 0.4408217295986051, + "accel_minor": 0.08768696390951305, + "accel_pa": 87.73026286055988, + "grav_major": 0.27432461927251384, + "grav_minor": 0.10436321340125836, + "grav_pa": 90.22457566353606, + "V": 21.986792302729803, + "r": 1.783597910131433, + "delta": 1.7526693714562356, + "elong": 75.26621269970447, + "phase": 32.864768429152186 + }, + { + "date": "2030-10-04", + "ra_accel": 264.1672586495015, + "dec_accel": 4.08197923677892, + "ra_grav": 264.1665625190644, + "dec_grav": 4.08199962618167, + "sep": 2.50078968714123, + "sep_pa": 91.68195683391885, + "accel_major": 0.433435628256409, + "accel_minor": 0.08738759261556077, + "accel_pa": 87.6586504224493, + "grav_major": 0.2699111052766299, + "grav_minor": 0.10419384692424885, + "grav_pa": 90.22151697337362, + "V": 22.015167623430624, + "r": 1.7947304355437512, + "delta": 1.7712981798673288, + "elong": 74.99852618350481, + "phase": 32.57922885168356 + }, + { + "date": "2030-10-05", + "ra_accel": 264.7862660146853, + "dec_accel": 3.826267373953713, + "ra_grav": 264.7855814952485, + "dec_grav": 3.826287628082103, + "sep": 2.4598579704237413, + "sep_pa": 91.69860453175552, + "accel_major": 0.4261142542813698, + "accel_minor": 0.08710797810966306, + "accel_pa": 87.59385686182354, + "grav_major": 0.26578941541508777, + "grav_minor": 0.10402446806626572, + "grav_pa": 90.27104999317712, + "V": 22.043349852424218, + "r": 1.805824783088362, + "delta": 1.790015241476194, + "elong": 74.72168265296777, + "phase": 32.296509353484616 + }, + { + "date": "2030-10-06", + "ra_accel": 265.39952994745624, + "dec_accel": 3.5761917846616047, + "ra_grav": 265.3988567847115, + "dec_grav": 3.5762118768577995, + "sep": 2.419748229647197, + "sep_pa": 91.71295936716974, + "accel_major": 0.4188590007407047, + "accel_minor": 0.0868484039811119, + "accel_pa": 87.53643269982557, + "grav_major": 0.26135675053666213, + "grav_minor": 0.10383557665044459, + "grav_pa": 90.20720896511335, + "V": 22.071335308642652, + "r": 1.8168810947325702, + "delta": 1.8088171848928476, + "elong": 74.43590823853722, + "phase": 32.01649566173237 + }, + { + "date": "2030-10-07", + "ra_accel": 266.0072083317024, + "dec_accel": 3.331676965577895, + "ra_grav": 266.00654627729716, + "dec_grav": 3.3316968722178903, + "sep": 2.3804465093793477, + "sep_pa": 91.72516362502527, + "accel_major": 0.41184010029651347, + "accel_minor": 0.08656429940225333, + "accel_pa": 87.46572741203586, + "grav_major": 0.25740843443382294, + "grav_minor": 0.10365403939415609, + "grav_pa": 90.25389099182965, + "V": 22.099120580317265, + "r": 1.8278995152581903, + "delta": 1.8277007383315598, + "elong": 74.14142136684329, + "phase": 31.739075691667573 + }, + { + "date": "2030-10-08", + "ra_accel": 266.6094551486377, + "dec_accel": 3.0926466862266966, + "ra_grav": 266.6088039608859, + "dec_grav": 3.0926663864754786, + "sep": 2.3419358049960963, + "sep_pa": 91.73535470990227, + "accel_major": 0.4050528780058776, + "accel_minor": 0.08628952099668427, + "accel_pa": 87.3986879065107, + "grav_major": 0.25321433402222976, + "grav_minor": 0.10345840432881417, + "grav_pa": 90.22010514642665, + "V": 22.12670248465146, + "r": 1.8388801920051143, + "delta": 1.8466627134625608, + "elong": 73.8384337006176, + "phase": 31.464139214429135 + }, + { + "date": "2030-10-09", + "ra_accel": 267.2064207964951, + "dec_accel": 2.8590244802184572, + "ra_grav": 267.2057802394332, + "dec_grav": 2.8590439558280853, + "sep": 2.3042020332952777, + "sep_pa": 91.74366350328528, + "accel_major": 0.39828257629982367, + "accel_minor": 0.08597458833583614, + "accel_pa": 87.30779849823801, + "grav_major": 0.24921194922176318, + "grav_minor": 0.10325579070730241, + "grav_pa": 90.16435138770333, + "V": 22.154078032621033, + "r": 1.8498232746507428, + "delta": 1.865699988231868, + "elong": 73.52715102632708, + "phase": 31.19157768886627 + }, + { + "date": "2030-10-10", + "ra_accel": 267.79825224788095, + "dec_accel": 2.630734077101109, + "ra_grav": 267.79762209193507, + "dec_grav": 2.6307533121985216, + "sep": 2.2672282700530024, + "sep_pa": 91.75021668134373, + "accel_major": 0.3917311498565418, + "accel_minor": 0.0857135676450646, + "accel_pa": 87.24382218016824, + "grav_major": 0.24528324195564805, + "grav_minor": 0.10305063673109578, + "grav_pa": 90.12364771699369, + "V": 22.18124439923399, + "r": 1.8607289149630208, + "delta": 1.8848094895361387, + "elong": 73.20777406156266, + "phase": 30.92128423427874 + }, + { + "date": "2030-10-11", + "ra_accel": 268.38509307284755, + "dec_accel": 2.4076997648429788, + "ra_grav": 268.38447309371344, + "dec_grav": 2.4077187457597438, + "sep": 2.2310011992164656, + "sep_pa": 91.75513464123219, + "accel_major": 0.3851222026833823, + "accel_minor": 0.0854032758333445, + "accel_pa": 87.14990592635068, + "grav_major": 0.24166851118470753, + "grav_minor": 0.10285252783164514, + "grav_pa": 90.19169130292721, + "V": 22.208198899774636, + "r": 1.871597266633257, + "delta": 1.9039881766623796, + "elong": 72.88049916095655, + "phase": 30.653153723032794 + }, + { + "date": "2030-10-12", + "ra_accel": 268.96708334893566, + "dec_accel": 2.189846675212186, + "ra_grav": 268.96647332859624, + "dec_grav": 2.1898653902948864, + "sep": 2.1955034516633707, + "sep_pa": 91.75853471788683, + "accel_major": 0.37891936743403737, + "accel_minor": 0.08510568844820164, + "accel_pa": 87.06335406089045, + "grav_major": 0.23793639873703099, + "grav_minor": 0.102641767076768, + "grav_pa": 90.17091652037766, + "V": 22.234938972135314, + "r": 1.882428485040332, + "delta": 1.9232330263682476, + "elong": 72.54551888672201, + "phase": 30.387082972044507 + }, + { + "date": "2030-10-13", + "ra_accel": 269.54435949935385, + "dec_accel": 1.9771009883461532, + "ra_grav": 269.5437592253404, + "dec_grav": 1.9771194278058608, + "sep": 2.1607199447364023, + "sep_pa": 91.76052901151967, + "accel_major": 0.3726878940186934, + "accel_minor": 0.08485688009473166, + "accel_pa": 87.0000031573263, + "grav_major": 0.23428219631273786, + "grav_minor": 0.10242755518553226, + "grav_pa": 90.1483182485338, + "V": 22.26146216533002, + "r": 1.893222727092949, + "delta": 1.9425410205419351, + "elong": 72.20302242709742, + "phase": 30.12297099993888 + }, + { + "date": "2030-10-14", + "ra_accel": 270.1170540987028, + "dec_accel": 1.7693900600364025, + "ra_grav": 270.1164633635842, + "dec_grav": 1.7694082158053144, + "sep": 2.126637086237236, + "sep_pa": 91.76122480078102, + "accel_major": 0.3666296373065012, + "accel_minor": 0.08456567990338366, + "accel_pa": 86.91197297219323, + "grav_major": 0.23069919526413313, + "grav_minor": 0.10221400817297584, + "grav_pa": 90.17048966925194, + "V": 22.287766133326873, + "r": 1.9039801510626395, + "delta": 1.9619091369748527, + "elong": 71.85319585467087, + "phase": 29.860719311395105 + }, + { + "date": "2030-10-15", + "ra_accel": 270.6852956893529, + "dec_accel": 1.5666424831886676, + "ra_grav": 270.68471429132416, + "dec_grav": 1.566660348771941, + "sep": 2.093238841076712, + "sep_pa": 91.76072651918804, + "accel_major": 0.36069714546313497, + "accel_minor": 0.08427436111003779, + "accel_pa": 86.82182587658843, + "grav_major": 0.2270129119735239, + "grav_minor": 0.1019818648928289, + "grav_pa": 90.0020736850097, + "V": 22.313848632809748, + "r": 1.9147009164073323, + "delta": 1.9813343433132373, + "elong": 71.49622224376442, + "phase": 29.600232167590747 + }, + { + "date": "2030-10-16", + "ra_accel": 271.24920864319154, + "dec_accel": 1.368788101778142, + "ra_grav": 271.2486363850268, + "dec_grav": 1.3688056721379613, + "sep": 2.060512635587463, + "sep_pa": 91.75913326121035, + "accel_major": 0.3549667456609341, + "accel_minor": 0.08396876284000493, + "accel_pa": 86.72228951977448, + "grav_major": 0.22376976944297972, + "grav_minor": 0.1017674928294465, + "grav_pa": 90.06981129584409, + "V": 22.339707523101822, + "r": 1.925385183615108, + "delta": 2.000813593677276, + "elong": 71.13228169117109, + "phase": 29.34141680921716 + }, + { + "date": "2030-10-17", + "ra_accel": 271.80891308922116, + "dec_accel": 1.1757579961621185, + "ra_grav": 271.80834977937144, + "dec_grav": 1.1757752675824877, + "sep": 2.028441661716486, + "sep_pa": 91.75654264835188, + "accel_major": 0.34927648067009065, + "accel_minor": 0.08367774248658517, + "accel_pa": 86.6280249450666, + "grav_major": 0.22023440088483068, + "grav_minor": 0.10153914502515074, + "grav_pa": 89.99478286918465, + "V": 22.36534076658576, + "r": 1.9360331140821823, + "delta": 2.020343827159, + "elong": 70.76155128913118, + "phase": 29.084183611401556 + }, + { + "date": "2030-10-18", + "ra_accel": 272.3645249048211, + "dec_accel": 0.987484460278394, + "ra_grav": 272.36397035604006, + "dec_grav": 0.9875014302705136, + "sep": 1.9970137884102264, + "sep_pa": 91.75304664795709, + "accel_major": 0.3436269216572198, + "accel_minor": 0.08340159562268523, + "accel_pa": 86.5394715502229, + "grav_major": 0.21700222987459908, + "grav_minor": 0.1013139691137996, + "grav_pa": 89.9828502723992, + "V": 22.390746428029864, + "r": 1.9466448699746006, + "delta": 2.0399219669461726, + "elong": 70.38420511052635, + "phase": 28.828446169589157 + }, + { + "date": "2030-10-19", + "ra_accel": 272.91615575836965, + "dec_accel": 0.8039009833971097, + "ra_grav": 272.9156097881097, + "dec_grav": 0.8039176505897847, + "sep": 1.9662152099329, + "sep_pa": 91.74873485863354, + "accel_major": 0.3381089281628998, + "accel_minor": 0.08307586789820731, + "accel_pa": 86.41928607614244, + "grav_major": 0.21389976277286551, + "grav_minor": 0.10108754840831559, + "grav_pa": 89.97714577196929, + "V": 22.415922672090655, + "r": 1.9572206140983295, + "delta": 2.059544919110752, + "elong": 70.00041424914144, + "phase": 28.574121327798377 + }, + { + "date": "2030-10-20", + "ra_accel": 273.4639131754474, + "dec_accel": 0.6249422447056068, + "ra_grav": 273.4633756060526, + "dec_grav": 0.6249586087466789, + "sep": 1.9360311925584086, + "sep_pa": 91.7436944492922, + "accel_major": 0.3328277927285531, + "accel_minor": 0.08279618005090222, + "accel_pa": 86.3260133400806, + "grav_major": 0.21074058718452776, + "grav_minor": 0.10086129577764028, + "grav_pa": 89.9962405984806, + "V": 22.440867758779877, + "r": 1.967760509772334, + "delta": 2.0792095701421824, + "elong": 69.61034695000643, + "phase": 28.321129175286295 + }, + { + "date": "2030-10-21", + "ra_accel": 274.00790059354574, + "dec_accel": 0.4505441210039072, + "ra_grav": 274.00737125161305, + "dec_grav": 0.4505601824781023, + "sep": 1.9064490835611485, + "sep_pa": 91.73800864097514, + "accel_major": 0.32759713481047126, + "accel_minor": 0.08249027032101341, + "accel_pa": 86.21368842009136, + "grav_major": 0.20765643215881538, + "grav_minor": 0.10062685847213569, + "grav_pa": 89.90836025933463, + "V": 22.465580037516965, + "r": 1.9782647207433535, + "delta": 2.0989127827275587, + "elong": 69.21416884491755, + "phase": 28.069393046842997 + }, + { + "date": "2030-10-22", + "ra_accel": 274.5482173603271, + "dec_accel": 0.28064369958346275, + "ra_grav": 274.5476960767452, + "dec_grav": 0.28065945992897867, + "sep": 1.877455886607582, + "sep_pa": 91.73175819935918, + "accel_major": 0.32258063411580806, + "accel_minor": 0.08219075320647774, + "accel_pa": 86.10437300235343, + "grav_major": 0.20463136691891842, + "grav_minor": 0.10039504788710825, + "grav_pa": 89.87203212152704, + "V": 22.490057941051116, + "r": 1.98873341106815, + "delta": 2.1186513897664487, + "elong": 68.81204327867127, + "phase": 27.81883957024809 + }, + { + "date": "2030-10-23", + "ra_accel": 275.08495863319683, + "dec_accel": 0.11517927956410298, + "ra_grav": 275.0844452431729, + "dec_grav": 0.11519474099589022, + "sep": 1.8490383186924988, + "sep_pa": 91.72502162410318, + "accel_major": 0.3175174133624268, + "accel_minor": 0.08194656447229542, + "accel_pa": 86.02529672565338, + "grav_major": 0.2014687398699676, + "grav_minor": 0.1001571241899702, + "grav_pa": 89.75281704696499, + "V": 22.514299981557578, + "r": 1.9991667450025374, + "delta": 2.138422187421847, + "elong": 68.40413168132149, + "phase": 27.569398806269206 + }, + { + "date": "2030-10-24", + "ra_accel": 275.61821515114985, + "dec_accel": -0.045909666019396965, + "ra_grav": 275.6177094934562, + "dec_grav": -0.04589450057365854, + "sep": 1.82118563185323, + "sep_pa": 91.71787345025223, + "accel_major": 0.31247082549654964, + "accel_minor": 0.0816402364256736, + "accel_pa": 85.90329058374266, + "grav_major": 0.19876753188770047, + "grav_minor": 0.0999296693058681, + "grav_pa": 89.79579338118418, + "V": 22.538304752170454, + "r": 2.009564886954818, + "delta": 2.1582219292752414, + "elong": 67.99059388629074, + "phase": 27.321004516683217 + }, + { + "date": "2030-10-25", + "ra_accel": 276.1480728709949, + "dec_accel": -0.20268259815155512, + "ra_grav": 276.14757478893347, + "dec_grav": -0.20266772512590245, + "sep": 1.7938834401010606, + "sep_pa": 91.7103884057995, + "accel_major": 0.3077797805339616, + "accel_minor": 0.08137881040335299, + "accel_pa": 85.81173087199736, + "grav_major": 0.19573061468833997, + "grav_minor": 0.09969112676434294, + "grav_pa": 89.67078396500295, + "V": 22.562070937061442, + "r": 2.0199280013525565, + "delta": 2.1780473245665073, + "elong": 67.57158824726513, + "phase": 27.073594571922644 + }, + { + "date": "2030-10-26", + "ra_accel": 276.67461253140834, + "dec_accel": -0.3551981186649214, + "ra_grav": 276.6741218714563, + "dec_grav": -0.3551835339050549, + "sep": 1.767122079099662, + "sep_pa": 91.70263589164433, + "accel_major": 0.3029935398131548, + "accel_minor": 0.08106730759266559, + "accel_pa": 85.68195714015451, + "grav_major": 0.19314306873217277, + "grav_minor": 0.09946339421487674, + "grav_pa": 89.71494893462116, + "V": 22.585597332765232, + "r": 2.030256252606953, + "delta": 2.19789504473219, + "elong": 67.14727137647738, + "phase": 26.827111449008665 + }, + { + "date": "2030-10-27", + "ra_accel": 277.197909267093, + "dec_accel": -0.5035142793289377, + "ra_grav": 277.1974258798526, + "dec_grav": -0.5034999781577125, + "sep": 1.7408883211381432, + "sep_pa": 91.69468565498522, + "accel_major": 0.2984357550085785, + "accel_minor": 0.08081750667848837, + "accel_pa": 85.59256952980894, + "grav_major": 0.19041751450523556, + "grav_minor": 0.09923043998642354, + "grav_pa": 89.67301684945272, + "V": 22.608882879708926, + "r": 2.0405498049857567, + "delta": 2.217761741455436, + "elong": 66.71779736493863, + "phase": 26.58150270058817 + }, + { + "date": "2030-10-28", + "ra_accel": 277.71803246363055, + "dec_accel": -0.6476889565051498, + "ra_grav": 277.7175562031151, + "dec_grav": -0.6476749337716248, + "sep": 1.7151713738345624, + "sep_pa": 91.68660357906113, + "accel_major": 0.2939060023006469, + "accel_minor": 0.08053954978729046, + "accel_pa": 85.48099644787486, + "grav_major": 0.18774277983545296, + "grav_minor": 0.0990012479854807, + "grav_pa": 89.69234614992251, + "V": 22.63192669869198, + "r": 2.050808822596941, + "delta": 2.237644076913473, + "elong": 66.28331649071313, + "phase": 26.33672121037055 + }, + { + "date": "2030-10-29", + "ra_accel": 278.2350460084245, + "dec_accel": -0.7877802073935583, + "ra_grav": 278.2345767321131, + "dec_grav": -0.7877664575253625, + "sep": 1.6899601225789205, + "sep_pa": 91.67845356038579, + "accel_major": 0.28946830255526274, + "accel_minor": 0.08026354860014544, + "accel_pa": 85.36816586952044, + "grav_major": 0.1851280404584188, + "grav_minor": 0.09876923305144958, + "grav_pa": 89.64973550702653, + "V": 22.654728121930564, + "r": 2.0610334692902947, + "delta": 2.2575387616766407, + "elong": 65.84397363918194, + "phase": 26.09272506442843 + }, + { + "date": "2030-10-30", + "ra_accel": 278.7490089908432, + "dec_accel": -0.9238465093907442, + "ra_grav": 278.74854655959444, + "dec_grav": -0.9238330264424913, + "sep": 1.6652436452790698, + "sep_pa": 91.67029711810655, + "accel_major": 0.28512059968777076, + "accel_minor": 0.07998957990219233, + "accel_pa": 85.25410350182281, + "grav_major": 0.1824693848840981, + "grav_minor": 0.09853269559509913, + "grav_pa": 89.50686569039357, + "V": 22.677286708215018, + "r": 2.0712239086065707, + "delta": 2.277442591872378, + "elong": 65.39990683392473, + "phase": 25.849476968672814 + }, + { + "date": "2030-10-31", + "ra_accel": 279.25997673094395, + "dec_accel": -1.055946813007664, + "ra_grav": 279.25952100878067, + "dec_grav": -1.0559335907056928, + "sep": 1.6410116844423437, + "sep_pa": 91.66219300982657, + "accel_major": 0.28081282461490864, + "accel_minor": 0.07968269875108856, + "accel_pa": 85.11329518609811, + "grav_major": 0.18006362440438312, + "grav_minor": 0.09830417134356029, + "grav_pa": 89.49537532022377, + "V": 22.699602236074284, + "r": 2.0813803036974092, + "delta": 2.297352476236471, + "elong": 64.95124628427287, + "phase": 25.60694330997638 + }, + { + "date": "2030-11-01", + "ra_accel": 279.76800190894596, + "dec_accel": -1.1841404062883247, + "ra_grav": 279.7675527634003, + "dec_grav": -1.1841274380744993, + "sep": 1.6172526388883333, + "sep_pa": 91.65419903560611, + "accel_major": 0.27662357667305376, + "accel_minor": 0.07943567073252501, + "accel_pa": 85.01228428742769, + "grav_major": 0.1776009619645393, + "grav_minor": 0.09807820153713395, + "grav_pa": 89.51647948949646, + "V": 22.72167467700863, + "r": 2.0915028173012673, + "delta": 2.3172654476953722, + "elong": 64.49811415714731, + "phase": 25.365093078823524 + }, + { + "date": "2030-11-02", + "ra_accel": 280.27313556014974, + "dec_accel": -1.308486647049554, + "ra_grav": 280.27269286190966, + "dec_grav": -1.3084739261178893, + "sep": 1.5939560845543108, + "sep_pa": 91.64637008793343, + "accel_major": 0.27259754251798524, + "accel_minor": 0.07918074909396615, + "accel_pa": 84.90492260094543, + "grav_major": 0.17504836938792914, + "grav_minor": 0.09784111090594307, + "grav_pa": 89.29980433131415, + "V": 22.743504156645898, + "r": 2.1015916116895124, + "delta": 2.3371786595897834, + "elong": 64.04062501951643, + "phase": 25.123896887790274 + }, + { + "date": "2030-11-03", + "ra_accel": 280.7754278018165, + "dec_accel": -1.4290446447779213, + "ra_grav": 280.7749914242608, + "dec_grav": -1.4290321641080663, + "sep": 1.5711131818131236, + "sep_pa": 91.63875779531752, + "accel_major": 0.26854400842268006, + "accel_minor": 0.0788804582969504, + "accel_pa": 84.75959171166129, + "grav_major": 0.1726656101247624, + "grav_minor": 0.09761420000996988, + "grav_pa": 89.24967868257698, + "V": 22.765090913388477, + "r": 2.111646848601936, + "delta": 2.3570893712186227, + "elong": 63.57888670832319, + "phase": 24.88332623117571 + }, + { + "date": "2030-11-04", + "ra_accel": 281.27492827470144, + "dec_accel": -1.5458729597607828, + "ra_grav": 281.2744980946331, + "dec_grav": -1.5458607121516224, + "sep": 1.5487123718128477, + "sep_pa": 91.63141469367058, + "accel_major": 0.264663060891958, + "accel_minor": 0.07865305085818391, + "accel_pa": 84.66659842235408, + "grav_major": 0.17049284276126722, + "grav_minor": 0.09739217460822418, + "grav_pa": 89.26450178048763, + "V": 22.786435261550952, + "r": 2.1216686892184264, + "delta": 2.3769949285465177, + "elong": 63.1130013542347, + "phase": 24.643353017991334 + }, + { + "date": "2030-11-05", + "ra_accel": 281.7716863521475, + "dec_accel": -1.6590293543800565, + "ra_grav": 281.7712622491853, + "dec_grav": -1.659017332475856, + "sep": 1.5267442087600873, + "sep_pa": 91.62438995638799, + "accel_major": 0.26081445765873873, + "accel_minor": 0.07839282628075003, + "accel_pa": 84.54585978034547, + "grav_major": 0.1682680845179393, + "grav_minor": 0.09717011002178301, + "grav_pa": 89.2531577978492, + "V": 22.807537561862198, + "r": 2.1316572941333183, + "delta": 2.3968927443739436, + "elong": 62.6430663694045, + "phase": 24.403949334822986 + }, + { + "date": "2030-11-06", + "ra_accel": 282.2657511942527, + "dec_accel": -1.768570605461916, + "ra_grav": 282.26533305089134, + "dec_grav": -1.7685588017778047, + "sep": 1.5051989619135282, + "sep_pa": 91.61773173957798, + "accel_major": 0.2570425689693918, + "accel_minor": 0.07813504949735366, + "accel_pa": 84.42408644193925, + "grav_major": 0.1658811647904038, + "grav_minor": 0.09694208176338572, + "grav_pa": 89.09231996833346, + "V": 22.828398199281494, + "r": 2.1416128232906346, + "delta": 2.4167802803225107, + "elong": 62.16917530432459, + "phase": 24.16508736590365 + }, + { + "date": "2030-11-07", + "ra_accel": 282.757171715599, + "dec_accel": -1.8745523710915761, + "ra_grav": 282.75675941701013, + "dec_grav": -1.8745407780360719, + "sep": 1.4840675525023042, + "sep_pa": 91.61148637769345, + "accel_major": 0.2532873640616822, + "accel_minor": 0.07784855315932554, + "accel_pa": 84.2759526423503, + "grav_major": 0.16384007478975143, + "grav_minor": 0.09672490263435239, + "grav_pa": 89.10891310559957, + "V": 22.8490175668608, + "r": 2.1515354359778813, + "delta": 2.4366550313789412, + "elong": 61.69141856038963, + "phase": 23.926739405883122 + }, + { + "date": "2030-11-08", + "ra_accel": 283.24599650236235, + "dec_accel": -1.9770290996761262, + "ra_grav": 283.24558993669416, + "dec_grav": -1.9770177095716654, + "sep": 1.4633397655945208, + "sep_pa": 91.60570039962002, + "accel_major": 0.24967881051087, + "accel_minor": 0.07759145738662221, + "accel_pa": 84.14887919727518, + "grav_major": 0.16160967753482822, + "grav_minor": 0.09650224576018393, + "grav_pa": 88.98314892975226, + "V": 22.86939605388148, + "r": 2.1614252907804006, + "delta": 2.4565145125852483, + "elong": 61.20988398579497, + "phase": 23.688877926693895 + }, + { + "date": "2030-11-09", + "ra_accel": 283.7322737008516, + "dec_accel": -2.076053972486265, + "ra_grav": 283.73187275865655, + "dec_grav": -2.076042777587404, + "sep": 1.4430073906943008, + "sep_pa": 91.60041726680386, + "accel_major": 0.24612716700536555, + "accel_minor": 0.07734125214074626, + "accel_pa": 84.02375594335699, + "grav_major": 0.1596634481030367, + "grav_minor": 0.09629081508898675, + "grav_pa": 89.04435449004265, + "V": 22.88953403725292, + "r": 2.1712825455475118, + "delta": 2.4763562475445804, + "elong": 60.7246573824426, + "phase": 23.45147567702302 + }, + { + "date": "2030-11-10", + "ra_accel": 284.21605088748663, + "dec_accel": -2.1716788744754196, + "ra_grav": 284.2156554621368, + "dec_grav": -2.1716678669852927, + "sep": 1.4230606745997973, + "sep_pa": 91.59568132699114, + "accel_major": 0.24264554979045602, + "accel_minor": 0.07709359714770075, + "accel_pa": 83.89764970869784, + "grav_major": 0.1575471740889836, + "grav_minor": 0.0960719807471218, + "grav_pa": 88.91380731064851, + "V": 22.909431875651592, + "r": 2.1811073573929454, + "delta": 2.4961777585804215, + "elong": 60.235822939629045, + "phase": 23.214505804678982 + }, + { + "date": "2030-11-11", + "ra_accel": 284.697374920694, + "dec_accel": -2.2639543891045637, + "ra_grav": 284.69698490794156, + "dec_grav": -2.263943561190037, + "sep": 1.4034913990820144, + "sep_pa": 91.59153446411952, + "accel_major": 0.23927354711350562, + "accel_minor": 0.0768844009957412, + "accel_pa": 83.80050220297596, + "grav_major": 0.15561602607738986, + "grav_minor": 0.09586241515165618, + "grav_pa": 88.93489824371504, + "V": 22.929089905927032, + "r": 2.1908998826285253, + "delta": 2.5159765583311637, + "elong": 59.743463605836816, + "phase": 22.97794199892143 + }, + { + "date": "2030-11-12", + "ra_accel": 285.17629179025226, + "dec_accel": -2.352929815917669, + "ra_grav": 285.1759070881634, + "dec_grav": -2.352919159723154, + "sep": 1.3842915420340056, + "sep_pa": 91.58801760083752, + "accel_major": 0.2358855496626858, + "accel_minor": 0.07660624561082646, + "accel_pa": 83.64263107767742, + "grav_major": 0.15365271335588185, + "grav_minor": 0.09565129755538657, + "grav_pa": 88.87891871227522, + "V": 22.9485084418707, + "r": 2.200660276791387, + "delta": 2.5357501431984666, + "elong": 59.24766139005883, + "phase": 22.74175864152086 + }, + { + "date": "2030-11-13", + "ra_accel": 285.65284646788814, + "dec_accel": -2.4386532058986967, + "ra_grav": 285.6524669771199, + "dec_grav": -2.4386427135576874, + "sep": 1.3654520482566062, + "sep_pa": 91.58517232801749, + "accel_major": 0.23264444240889692, + "accel_minor": 0.07640252527685479, + "accel_pa": 83.54446116194468, + "grav_major": 0.15172196165170093, + "grav_minor": 0.09544612538871271, + "grav_pa": 88.91056325724404, + "V": 22.967687774629027, + "r": 2.2103886945771007, + "delta": 2.5554959884303194, + "elong": 58.748497595199154, + "phase": 22.505930958478643 + }, + { + "date": "2030-11-14", + "ra_accel": 286.1270827765221, + "dec_accel": -2.521171409497213, + "ra_grav": 286.1267083999023, + "dec_grav": -2.5211610731442, + "sep": 1.3469653379241637, + "sep_pa": 91.58303786383212, + "accel_major": 0.22942630338879133, + "accel_minor": 0.07616560550638243, + "accel_pa": 83.41505162299805, + "grav_major": 0.14984242286558674, + "grav_minor": 0.09523555344117299, + "grav_pa": 88.76429446251018, + "V": 22.986628174402874, + "r": 2.220085289843037, + "delta": 2.5752115448402106, + "elong": 58.246052991120365, + "phase": 22.270435158216447 + }, + { + "date": "2030-11-15", + "ra_accel": 286.5990432860593, + "dec_accel": -2.6005301309277047, + "ra_grav": 286.59867392863555, + "dec_grav": -2.6005199427081376, + "sep": 1.328823623363129, + "sep_pa": 91.5816531421516, + "accel_major": 0.22627058736112635, + "accel_minor": 0.07593138890750381, + "accel_pa": 83.28471918205902, + "grav_major": 0.14784140120102426, + "grav_minor": 0.09502481716961092, + "grav_pa": 88.57058947451024, + "V": 23.00532989257279, + "r": 2.2297502155994886, + "delta": 2.5948942367251067, + "elong": 57.74040794042362, + "phase": 22.03524854574522 + }, + { + "date": "2030-11-16", + "ra_accel": 287.0687692348027, + "dec_accel": -2.6767739811798164, + "ra_grav": 287.0684048036669, + "dec_grav": -2.6767639332598328, + "sep": 1.3110197179336092, + "sep_pa": 91.58105579185357, + "accel_major": 0.2231757353311938, + "accel_minor": 0.07568093526923643, + "accel_pa": 83.13735528233366, + "grav_major": 0.1461817160584257, + "grav_minor": 0.09482890412290927, + "grav_pa": 88.64614417429257, + "V": 23.023793163389964, + "r": 2.239383623961843, + "delta": 2.614541460123136, + "elong": 57.23164251421381, + "phase": 21.800349611178024 + }, + { + "date": "2030-11-17", + "ra_accel": 287.536300476085, + "dec_accel": -2.749946526114213, + "ra_grav": 287.53594088063784, + "dec_grav": -2.7499366106876444, + "sep": 1.2935454587932167, + "sep_pa": 91.58128435476668, + "accel_major": 0.22014060354219128, + "accel_minor": 0.07547124773376915, + "accel_pa": 83.02139028154112, + "grav_major": 0.14440534828716656, + "grav_minor": 0.09462913407411154, + "grav_pa": 88.5855045682553, + "V": 23.042018204914932, + "r": 2.2489856661718206, + "delta": 2.634150580880863, + "elong": 56.719836625912095, + "phase": 21.565718094026977 + }, + { + "date": "2030-11-18", + "ra_accel": 288.0016754273388, + "dec_accel": -2.820090326942095, + "ra_grav": 288.001320578896, + "dec_grav": -2.8200805362393684, + "sep": 1.2763940734060706, + "sep_pa": 91.58237505708918, + "accel_major": 0.21704038740153614, + "accel_minor": 0.07526875637110497, + "accel_pa": 82.90438618018196, + "grav_major": 0.1425984450746859, + "grav_minor": 0.09442771844606737, + "grav_pa": 88.43180118259711, + "V": 23.060005218801443, + "r": 2.2585564925570885, + "delta": 2.6537189315172065, + "elong": 56.205070227942464, + "phase": 21.33133504127824 + }, + { + "date": "2030-11-19", + "ra_accel": 288.46493100260886, + "dec_accel": -2.8872469773895486, + "ra_grav": 288.4645808143463, + "dec_grav": -2.8872373036846253, + "sep": 1.2595589648814396, + "sep_pa": 91.58436344870275, + "accel_major": 0.21419307610680793, + "accel_minor": 0.0749895673757152, + "accel_pa": 82.72392283896944, + "grav_major": 0.14089206834284793, + "grav_minor": 0.0942328342294453, + "grav_pa": 88.36677216949288, + "V": 23.07775438961514, + "r": 2.268096252545944, + "delta": 2.673243806721653, + "elong": 55.68742359312602, + "phase": 21.09718288039248 + }, + { + "date": "2030-11-20", + "ra_accel": 288.9261024895352, + "dec_accel": -2.9514571455366827, + "ra_grav": 288.9257568766397, + "dec_grav": -2.95144758115199, + "sep": 1.2430329737862882, + "sep_pa": 91.58728558722966, + "accel_major": 0.21134361417939077, + "accel_minor": 0.07476527998843395, + "accel_pa": 82.58576536504977, + "grav_major": 0.1392830454728392, + "grav_minor": 0.09404475158024482, + "grav_pa": 88.39731238380966, + "V": 23.0952658846812, + "r": 2.2776050946163955, + "delta": 2.69272245736319, + "elong": 55.16697770053441, + "phase": 20.863245543726915 + }, + { + "date": "2030-11-21", + "ra_accel": 289.3852233437677, + "dec_accel": -3.012760637086616, + "ra_grav": 289.38488222347326, + "dec_grav": -3.0127511743976467, + "sep": 1.2268087932129963, + "sep_pa": 91.59117755638755, + "accel_major": 0.20845195099710034, + "accel_minor": 0.0746079775456762, + "accel_pa": 82.50046150988766, + "grav_major": 0.1375239988219721, + "grav_minor": 0.0938482735094368, + "grav_pa": 88.17792259526483, + "V": 23.112539856900067, + "r": 2.2870831663309077, + "delta": 2.712152084446369, + "elong": 54.64381469423291, + "phase": 20.629508677716057 + }, + { + "date": "2030-11-22", + "ra_accel": 289.842324870374, + "dec_accel": -3.0711965002351964, + "ra_grav": 289.84198816128963, + "dec_grav": -3.071187131679383, + "sep": 1.2108815147405885, + "sep_pa": 91.59607135095601, + "accel_major": 0.2057653303787982, + "accel_minor": 0.07433668511389889, + "accel_pa": 82.31526394576993, + "grav_major": 0.13591670715788626, + "grav_minor": 0.09366116939636021, + "grav_pa": 88.1076910854944, + "V": 23.129576453248063, + "r": 2.296530614305502, + "delta": 2.7315298352475104, + "elong": 54.11801834037278, + "phase": 20.395959969282497 + }, + { + "date": "2030-11-23", + "ra_accel": 290.29743580718275, + "dec_accel": -3.1268031942334185, + "ra_grav": 290.2971034298496, + "dec_grav": -3.126793912310986, + "sep": 1.19524421285235, + "sep_pa": 91.60200182481019, + "accel_major": 0.20307596774311934, + "accel_minor": 0.07412107122843449, + "accel_pa": 82.17442420915448, + "grav_major": 0.13439427965085587, + "grav_minor": 0.09347939107667724, + "grav_pa": 88.09379365403461, + "V": 23.14637583230776, + "r": 2.3059475842022383, + "delta": 2.7508528059132855, + "elong": 53.589674316630735, + "phase": 20.16258958555355 + }, + { + "date": "2030-11-24", + "ra_accel": 290.75058187402396, + "dec_accel": -3.17961882972505, + "ra_grav": 290.7502537507503, + "dec_grav": -3.1796096270043157, + "sep": 1.1798905411727947, + "sep_pa": 91.60900258025012, + "accel_major": 0.20044825811501774, + "accel_minor": 0.0739493056263548, + "accel_pa": 82.07100378965622, + "grav_major": 0.13290917280458575, + "grav_minor": 0.09330244090096197, + "grav_pa": 88.12957884577466, + "V": 23.162938192435796, + "r": 2.315334220713926, + "delta": 2.770118055052732, + "elong": 53.058870124937584, + "phase": 19.92939067146879 + }, + { + "date": "2030-11-25", + "ra_accel": 291.20178543213007, + "dec_accel": -3.2296814620990113, + "ra_grav": 291.20146148664486, + "dec_grav": -3.229672331223727, + "sep": 1.1648153850647684, + "sep_pa": 91.61710457574588, + "accel_major": 0.19782202778058025, + "accel_minor": 0.07370592430719686, + "accel_pa": 81.89553869362165, + "grav_major": 0.131357069739168, + "grav_minor": 0.09312107479382067, + "grav_pa": 87.99455507228753, + "V": 23.17926380863533, + "r": 2.3246906675977956, + "delta": 2.789322631810604, + "elong": 52.52569441146739, + "phase": 19.696359768758878 + }, + { + "date": "2030-11-26", + "ra_accel": 291.6510654251117, + "dec_accel": -3.2770293787196234, + "ra_grav": 291.65074558290814, + "dec_grav": -3.27702031241162, + "sep": 1.1500123839379308, + "sep_pa": 91.62634023231723, + "accel_major": 0.1952555048743412, + "accel_minor": 0.0735063564886056, + "accel_pa": 81.75748904859809, + "grav_major": 0.12979504486647375, + "grav_minor": 0.09294040760983743, + "grav_pa": 87.81088242867067, + "V": 23.195353070379326, + "r": 2.3340170676009038, + "delta": 2.808463616726332, + "elong": 51.99023564545199, + "phase": 19.46349697700146 + }, + { + "date": "2030-11-27", + "ra_accel": 292.09843774061494, + "dec_accel": -3.321701296821118, + "ra_grav": 292.09812192852564, + "dec_grav": -3.321692287889356, + "sep": 1.1354766917913475, + "sep_pa": 91.63673841479996, + "accel_major": 0.19279681954566197, + "accel_minor": 0.0733199407148994, + "accel_pa": 81.63116044957512, + "grav_major": 0.12844751627461745, + "grav_minor": 0.09277513066843322, + "grav_pa": 87.9134003937572, + "V": 23.211206509312568, + "r": 2.3433135625216797, + "delta": 2.827538167808617, + "elong": 51.45258036813228, + "phase": 19.230805704858717 + }, + { + "date": "2030-11-28", + "ra_accel": 292.54391596757927, + "dec_accel": -3.363736401694524, + "ra_grav": 292.54360411412324, + "dec_grav": -3.3637274430379422, + "sep": 1.1212022065497202, + "sep_pa": 91.64832933064248, + "accel_major": 0.19033867431077509, + "accel_minor": 0.07312254774370369, + "accel_pa": 81.4885770265467, + "grav_major": 0.12688764487596058, + "grav_minor": 0.09259709127330683, + "grav_pa": 87.64738169216119, + "V": 23.22682480628227, + "r": 2.3525802931589945, + "delta": 2.846543559162529, + "elong": 50.91281148370214, + "phase": 18.998292004841456 + }, + { + "date": "2030-11-29", + "ra_accel": 292.9875123727665, + "dec_accel": -3.403174212808011, + "ra_grav": 292.9872044077477, + "dec_grav": -3.403165297424201, + "sep": 1.1071842591400036, + "sep_pa": 91.66113954847235, + "accel_major": 0.1879266545400861, + "accel_minor": 0.07292813904034087, + "accel_pa": 81.34505584137482, + "grav_major": 0.1256158171939913, + "grav_minor": 0.09243824099099436, + "grav_pa": 87.76039564661954, + "V": 23.242208775153145, + "r": 2.361817399323019, + "delta": 2.865477201834149, + "elong": 50.37100708681804, + "phase": 18.765963650246622 + }, + { + "date": "2030-11-30", + "ra_accel": 293.42923883594335, + "dec_accel": -3.440054329936117, + "ra_grav": 293.42893469079513, + "dec_grav": -3.4400454509225944, + "sep": 1.0934169359452777, + "sep_pa": 91.67519717358968, + "accel_major": 0.18555986905511937, + "accel_minor": 0.07275658628460192, + "accel_pa": 81.22020000865106, + "grav_major": 0.12420625116302722, + "grav_minor": 0.09227118967445092, + "grav_pa": 87.60581365054682, + "V": 23.25735932949456, + "r": 2.3710250198465155, + "delta": 2.8843366434778748, + "elong": 49.8272400963968, + "phase": 18.533829208518537 + } + ], + "scenarios": { + "one night": { + "dates": [ + "2030-07-30" + ], + "A2_sigma_without": 3.854922562060082e-13, + "z_without": 8.946638595428402, + "A2_sigma_with": 2.1112721382605384e-13, + "z_with": 16.335458774409524 + }, + "three nights 30 days apart": { + "dates": [ + "2030-07-30", + "2030-08-29", + "2030-09-28" + ], + "A2_sigma_without": 3.7837123328204706e-13, + "z_without": 9.115016138239515, + "A2_sigma_with": 2.0764959401733963e-13, + "z_with": 16.609037517903612 + }, + "six nights 15 days apart": { + "dates": [ + "2030-07-30", + "2030-08-14", + "2030-08-29", + "2030-09-13", + "2030-09-28", + "2030-10-13" + ], + "A2_sigma_without": 3.7445956335161667e-13, + "z_without": 9.210233187109113, + "A2_sigma_with": 2.0378051341061386e-13, + "z_with": 16.924385162687564 + } + }, + "A2_sigma_without_now": 6.829100738706318e-12, + "A2_sigma_with_now": 3.701524160555835e-13 +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/frames_20070914.json b/papers/dark_comet/data/2016_TA56/frames_20070914.json new file mode 100644 index 0000000000000000000000000000000000000000..55da0bec767a424db1d47bcebd7c97b99e3fb903 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/frames_20070914.json @@ -0,0 +1,242 @@ +[ + { + "image": "942300p", + "ext": 15, + "filter": "r.MP9601", + "mjd_mid": 54357.457641232715, + "exptime": 420.0450134, + "snr": 7.314579867686738, + "trail_arcsec": 4.056368942536245, + "ra": 36.35046045699963, + "dec": -4.4983938078333985, + "wcs_rms": 0.021025493905743202, + "accel": { + "dE": -0.03386699628800988, + "dN": -0.11100838024802329 + }, + "grav": { + "dE": 3.3996912143586693, + "dN": 0.04609520909610865 + } + }, + { + "image": "942301p", + "ext": 15, + "filter": "r.MP9601", + "mjd_mid": 54357.463064103045, + "exptime": 420.0570068, + "snr": 6.026060389239871, + "trail_arcsec": 4.0573132127198095, + "ra": 36.349822475170406, + "dec": -4.499511155195457, + "wcs_rms": 0.01988389474242527, + "accel": { + "dE": -0.11998158984098996, + "dN": -0.20528528203733742 + }, + "grav": { + "dE": 3.3137039891469513, + "dN": -0.04823342585176249 + } + }, + { + "image": "942302p", + "ext": 24, + "filter": "r.MP9601", + "mjd_mid": 54357.46854417245, + "exptime": 420.073, + "snr": 7.605918062505546, + "trail_arcsec": 4.057158677152282, + "ra": 36.349207559846384, + "dec": -4.500608966270559, + "wcs_rms": 0.019789228051523288, + "accel": { + "dE": -0.09701188912760601, + "dN": -0.18776448790340794 + }, + "grav": { + "dE": 3.336802440409797, + "dN": -0.030764927635829054 + } + }, + { + "image": "942303p", + "ext": 24, + "filter": "r.MP9601", + "mjd_mid": 54357.47396276626, + "exptime": 420.0660095, + "snr": 4.409694181932807, + "trail_arcsec": 4.057368026804487, + "ra": 36.34884973069889, + "dec": -4.501241373566714, + "wcs_rms": 0.017611717059636885, + "accel": { + "dE": 0.8264948582675586, + "dN": 1.4607046218792163 + }, + "grav": { + "dE": 4.260438524900811, + "dN": 1.6176524561888783 + } + }, + { + "image": "942304p", + "ext": 24, + "filter": "r.MP9601", + "mjd_mid": 54357.479380937555, + "exptime": 420.0660095, + "snr": 4.425918110243373, + "trail_arcsec": 3.9400109404931554, + "ra": 36.34795864875728, + "dec": -4.502816006161254, + "wcs_rms": 0.018011723027116365, + "accel": { + "dE": -0.16120782132002542, + "dN": -0.283122390776569 + }, + "grav": { + "dE": 3.272860620359873, + "dN": -0.126226294808518 + } + }, + { + "image": "942305p", + "ext": 15, + "filter": "r.MP9601", + "mjd_mid": 54357.48480532986, + "exptime": 420.061, + "snr": 6.785413166421252, + "trail_arcsec": 4.056701777284237, + "ra": 36.34733634165655, + "dec": -4.503888176625614, + "wcs_rms": 0.0193595136824771, + "accel": { + "dE": -0.1791427394366802, + "dN": -0.21356482872398885 + }, + "grav": { + "dE": 3.255052894888075, + "dN": -0.056720546717059506 + } + }, + { + "image": "942306p", + "ext": 24, + "filter": "r.MP9601", + "mjd_mid": 54357.490224068235, + "exptime": 420.0589905, + "snr": 4.497147180690777, + "trail_arcsec": 4.058243197375976, + "ra": 36.34671034570644, + "dec": -4.505005240923991, + "wcs_rms": 0.01896788227025617, + "accel": { + "dE": -0.21013602738018738, + "dN": -0.30971070636418574 + }, + "grav": { + "dE": 3.2241863455605615, + "dN": -0.1529182003263685 + } + }, + { + "image": "942307p", + "ext": 24, + "filter": "g.MP9401", + "mjd_mid": 54357.50091793974, + "exptime": 300.0799866, + "snr": 4.765981792160207, + "trail_arcsec": 2.8995355515361187, + "ra": 36.3455122053586, + "dec": -4.507135843234486, + "wcs_rms": 0.0215826991665822, + "accel": { + "dE": -0.13079792709279783, + "dN": -0.23332392746837627 + }, + "grav": { + "dE": 3.303774612064203, + "dN": -0.07663364738625944 + } + }, + { + "image": "942309p", + "ext": 15, + "filter": "g.MP9401", + "mjd_mid": 54357.508976330944, + "exptime": 300.0499878, + "snr": 9.662594542290373, + "trail_arcsec": 2.8983868763318545, + "ra": 36.3446030434323, + "dec": -4.508734018616744, + "wcs_rms": 0.02510360809583515, + "accel": { + "dE": -0.08820989750956869, + "dN": -0.14932914684955279 + }, + "grav": { + "dE": 3.346550929601454, + "dN": 0.007284060944812154 + } + }, + { + "image": "942311p", + "ext": 24, + "filter": "g.MP9401", + "mjd_mid": 54357.51703601856, + "exptime": 300.0440063, + "snr": 5.830358102255573, + "trail_arcsec": 2.8985489785940173, + "ra": 36.34368161329443, + "dec": -4.510371024473037, + "wcs_rms": 0.0263325293591294, + "accel": { + "dE": -0.08497507209074434, + "dN": -0.204205381260536 + }, + "grav": { + "dE": 3.349973672304628, + "dN": -0.04766929152211219 + } + }, + { + "image": "942312p", + "ext": 24, + "filter": "g.MP9401", + "mjd_mid": 54357.52106410293, + "exptime": 300.0369873, + "snr": 5.916873522705563, + "trail_arcsec": 2.813203557633442, + "ra": 36.34318141191299, + "dec": -4.511221212432109, + "wcs_rms": 0.03525717404932897, + "accel": { + "dE": -0.22438352104091872, + "dN": -0.34699480086715084 + }, + "grav": { + "dE": 3.210658909101959, + "dN": -0.1904972656227244 + } + }, + { + "image": "942313p", + "ext": 24, + "filter": "g.MP9401", + "mjd_mid": 54357.52509408561, + "exptime": 300.0379944, + "snr": 6.084641595781298, + "trail_arcsec": 2.8987124319470676, + "ra": 36.34275480023422, + "dec": -4.5119735501429385, + "wcs_rms": 0.02879963415786873, + "accel": { + "dE": -0.09804987277601798, + "dN": -0.13615727755507123 + }, + "grav": { + "dE": 3.337086699057852, + "dN": 0.020301676960343684 + } + } +] \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/locus_20070914.json b/papers/dark_comet/data/2016_TA56/locus_20070914.json new file mode 100644 index 0000000000000000000000000000000000000000..55fd5c55804041fa40dcf736487209c06ca0de44 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/locus_20070914.json @@ -0,0 +1,7734 @@ +{ + "desig": "2016 TA56", + "night": "2007-09-14", + "site": "568", + "grid": [ + -1.6e-11, + -1.575e-11, + -1.5499999999999998e-11, + -1.525e-11, + -1.5e-11, + -1.475e-11, + -1.45e-11, + -1.425e-11, + -1.4e-11, + -1.375e-11, + -1.35e-11, + -1.325e-11, + -1.3e-11, + -1.275e-11, + -1.25e-11, + -1.225e-11, + -1.2e-11, + -1.175e-11, + -1.1499999999999999e-11, + -1.125e-11, + -1.0999999999999999e-11, + -1.075e-11, + -1.05e-11, + -1.025e-11, + -1e-11, + -9.75e-12, + -9.5e-12, + -9.25e-12, + -9e-12, + -8.75e-12, + -8.5e-12, + -8.25e-12, + -8e-12, + -7.749999999999999e-12, + -7.5e-12, + -7.25e-12, + -7e-12, + -6.75e-12, + -6.5e-12, + -6.25e-12, + -6e-12, + -5.7499999999999995e-12, + -5.4999999999999996e-12, + -5.25e-12, + -5e-12, + -4.75e-12, + -4.5e-12, + -4.25e-12, + -4e-12, + -3.75e-12, + -3.5e-12, + -3.25e-12, + -3e-12, + -2.7499999999999998e-12, + -2.5e-12, + -2.25e-12, + -2e-12, + -1.75e-12, + -1.5e-12, + -1.25e-12, + -1e-12, + -7.5e-13, + -5e-13, + -2.5e-13, + 0.0, + 2.5e-13, + 5e-13, + 7.5e-13, + 1e-12, + 1.25e-12, + 1.5e-12, + 1.75e-12, + 2e-12, + 2.25e-12, + 2.5e-12, + 2.7499999999999998e-12, + 3e-12, + 3.25e-12, + 3.5e-12, + 3.75e-12, + 4e-12, + 4.25e-12, + 4.5e-12, + 4.75e-12, + 5e-12, + 5.25e-12, + 5.4999999999999996e-12, + 5.7499999999999995e-12, + 6e-12, + 6.25e-12, + 6.5e-12, + 6.75e-12, + 7e-12, + 7.25e-12, + 7.5e-12, + 7.749999999999999e-12, + 8e-12, + 8.25e-12, + 8.5e-12, + 8.75e-12, + 9e-12, + 9.25e-12, + 9.5e-12, + 9.75e-12, + 1e-11, + 1.025e-11, + 1.05e-11, + 1.075e-11, + 1.0999999999999999e-11, + 1.125e-11, + 1.1499999999999999e-11, + 1.175e-11, + 1.2e-11 + ], + "rest_A2": { + "A2": -2.237621902583837e-12, + "A2_sigma": 4.3438197747298636e-12 + }, + "rest_A1A2": { + "A1": 5.23387196741053e-10, + "A1_sigma": 3.1669532219761374e-10, + "A2": -1.9696975875949866e-12, + "A2_sigma": 4.3468208769517964e-12 + }, + "a1a2_ellipse": { + "frame": "942307p", + "major": 4.046419670570955, + "minor": 0.1705932445051471, + "pa": 85.90048565101131, + "centre_from_grav": [ + 2.4031951999785797, + -0.06024223165113085 + ] + }, + "frames": [ + { + "image": "942299p", + "ext": 15, + "mjd_mid": 54357.452220920095, + "exptime": 420.0549927, + "filter": "r.MP9601", + "found": false, + "accel": [ + 36.35108271844515, + -4.497272338358349 + ], + "grav": [ + 36.350126044959715, + -4.497315993712557 + ], + "motion": [ + -0.26840489884221175, + -0.5022828808876056 + ], + "locus": [ + [ + 36.354257309331246, + -4.497009952427688 + ], + [ + 36.35419274665603, + -4.497014735219633 + ], + [ + 36.3541281843521, + -4.497019517983073 + ], + [ + 36.3540636224158, + -4.49702430071777 + ], + [ + 36.353999060853546, + -4.497029083424109 + ], + [ + 36.353934499657484, + -4.497033866101799 + ], + [ + 36.35386993883134, + -4.49703864875086 + ], + [ + 36.35380537837604, + -4.497043431371303 + ], + [ + 36.353740818286695, + -4.497048213963192 + ], + [ + 36.35367625857164, + -4.497052996526554 + ], + [ + 36.35361169922195, + -4.497057779061308 + ], + [ + 36.35354714024749, + -4.497062561567548 + ], + [ + 36.353482581635014, + -4.497067344044986 + ], + [ + 36.353418023400685, + -4.497072126494166 + ], + [ + 36.35335346552701, + -4.497076908914465 + ], + [ + 36.35328890802557, + -4.4970816913062714 + ], + [ + 36.35322435090105, + -4.497086473669563 + ], + [ + 36.353159794136594, + -4.49709125600414 + ], + [ + 36.3530952377443, + -4.49709603831019 + ], + [ + 36.3530306817224, + -4.497100820587663 + ], + [ + 36.35296612606779, + -4.497105602836544 + ], + [ + 36.35290157078556, + -4.497110385056894 + ], + [ + 36.352837015875195, + -4.4971151672487135 + ], + [ + 36.352772461329124, + -4.497119949411816 + ], + [ + 36.35270790715134, + -4.4971247315463865 + ], + [ + 36.352643353345414, + -4.497129513652377 + ], + [ + 36.352578799912465, + -4.497134295729877 + ], + [ + 36.3525142468512, + -4.497139077778846 + ], + [ + 36.35244969414954, + -4.497143859798938 + ], + [ + 36.352385141823255, + -4.4971486417907265 + ], + [ + 36.3523205898652, + -4.497153423753796 + ], + [ + 36.35225603827765, + -4.497158205688286 + ], + [ + 36.35219148705877, + -4.497162987594221 + ], + [ + 36.35212693620965, + -4.497167769471595 + ], + [ + 36.35206238573195, + -4.49717255132049 + ], + [ + 36.35199783561983, + -4.497177333140625 + ], + [ + 36.35193328588205, + -4.4971821149322855 + ], + [ + 36.35186873651126, + -4.497186896695307 + ], + [ + 36.351804187509174, + -4.497191678429925 + ], + [ + 36.35173963887395, + -4.497196460135681 + ], + [ + 36.351675090614066, + -4.497201241813115 + ], + [ + 36.3516105427191, + -4.497206023461747 + ], + [ + 36.35154599519501, + -4.497210805082006 + ], + [ + 36.35148144804356, + -4.4972155866737875 + ], + [ + 36.35141690125875, + -4.4972203682367535 + ], + [ + 36.35135235484062, + -4.497225149771197 + ], + [ + 36.351287808792726, + -4.497229931277001 + ], + [ + 36.35122326311802, + -4.497234712754347 + ], + [ + 36.35115871780995, + -4.497239494203053 + ], + [ + 36.35109417287428, + -4.4972442756233395 + ], + [ + 36.35102962830201, + -4.497249057014794 + ], + [ + 36.35096508410732, + -4.497253838377906 + ], + [ + 36.3509005402788, + -4.497258619712379 + ], + [ + 36.350835996821026, + -4.497263401018303 + ], + [ + 36.35077145372704, + -4.497268182295549 + ], + [ + 36.35070691100372, + -4.4972729635442885 + ], + [ + 36.35064236865542, + -4.497277744764347 + ], + [ + 36.350577826672826, + -4.497282525956039 + ], + [ + 36.3505132850578, + -4.497287307118971 + ], + [ + 36.3504487438196, + -4.497292088253577 + ], + [ + 36.35038420294376, + -4.497296869359365 + ], + [ + 36.3503196624394, + -4.497301650436701 + ], + [ + 36.350255122304986, + -4.4973064314854545 + ], + [ + 36.35019058254074, + -4.497311212505661 + ], + [ + 36.350126043144776, + -4.4973159934973586 + ], + [ + 36.35006150411851, + -4.497320774460393 + ], + [ + 36.34999696546324, + -4.497325555394794 + ], + [ + 36.349932427173485, + -4.49733033630068 + ], + [ + 36.349867889256174, + -4.497335117178039 + ], + [ + 36.349803351709866, + -4.49733989802687 + ], + [ + 36.34973881452848, + -4.497344678846929 + ], + [ + 36.34967427772076, + -4.49734945963868 + ], + [ + 36.34960974127756, + -4.497354240401665 + ], + [ + 36.349545205206844, + -4.4973590211362975 + ], + [ + 36.349480669507045, + -4.4973638018422335 + ], + [ + 36.34941613417509, + -4.497368582519496 + ], + [ + 36.34935159921227, + -4.49737336316835 + ], + [ + 36.34928706462116, + -4.497378143788685 + ], + [ + 36.349222530395856, + -4.49738292438029 + ], + [ + 36.34915799654258, + -4.497387704943443 + ], + [ + 36.34909346305425, + -4.497392485477963 + ], + [ + 36.34902892994437, + -4.4973972659840635 + ], + [ + 36.34896439719662, + -4.497402046461468 + ], + [ + 36.34889986481841, + -4.497406826910278 + ], + [ + 36.34883533281174, + -4.497411607330631 + ], + [ + 36.34877080117173, + -4.497416387722201 + ], + [ + 36.348706269907225, + -4.4974211680855305 + ], + [ + 36.348641739005636, + -4.497425948420241 + ], + [ + 36.348577208474495, + -4.497430728726156 + ], + [ + 36.348512678313774, + -4.497435509003622 + ], + [ + 36.34844814852478, + -4.497440289252496 + ], + [ + 36.348383619103195, + -4.497445069472827 + ], + [ + 36.348319090053664, + -4.497449849664784 + ], + [ + 36.34825456137017, + -4.497454629828047 + ], + [ + 36.3481900330548, + -4.4974594099627145 + ], + [ + 36.3481255051146, + -4.497464190068777 + ], + [ + 36.34806097753889, + -4.497468970146361 + ], + [ + 36.347996450334335, + -4.497473750195366 + ], + [ + 36.34793192349928, + -4.497478530215915 + ], + [ + 36.34786739703276, + -4.497483310207688 + ], + [ + 36.347802870936775, + -4.497488090171098 + ], + [ + 36.34773834520722, + -4.497492870105761 + ], + [ + 36.34767381985197, + -4.497497650012086 + ], + [ + 36.34760929486203, + -4.497502429889767 + ], + [ + 36.347544770239764, + -4.497507209738714 + ], + [ + 36.347480245990376, + -4.497511989559299 + ], + [ + 36.347415722113446, + -4.497516769351355 + ], + [ + 36.34735119860122, + -4.497521549114775 + ], + [ + 36.34728667545672, + -4.497526328849618 + ], + [ + 36.347222152685696, + -4.4975311085558785 + ], + [ + 36.347157630283164, + -4.497535888233784 + ], + [ + 36.34709310824792, + -4.497540667882928 + ], + [ + 36.34702858658321, + -4.497545447503563 + ] + ] + }, + { + "image": "942300p", + "ext": 15, + "mjd_mid": 54357.457641232715, + "exptime": 420.0450134, + "filter": "r.MP9601", + "found": true, + "accel": [ + 36.350469893571294, + -4.498362972159729 + ], + "grav": [ + 36.34951318311641, + -4.4984066131552 + ], + "motion": [ + -0.2684956384314898, + -0.5023231415943741 + ], + "locus": [ + [ + 36.35364460683674, + -4.498100630457676 + ], + [ + 36.353580041670966, + -4.498105412334035 + ], + [ + 36.35351547687649, + -4.498110194181893 + ], + [ + 36.353450912449645, + -4.498114976001014 + ], + [ + 36.353386348396896, + -4.498119757791781 + ], + [ + 36.35332178471035, + -4.498124539553905 + ], + [ + 36.35325722139375, + -4.498129321287404 + ], + [ + 36.35319265844801, + -4.498134102992292 + ], + [ + 36.35312809586826, + -4.49813888466863 + ], + [ + 36.35306353366282, + -4.4981436663164445 + ], + [ + 36.35299897182277, + -4.498148447935659 + ], + [ + 36.35293441035798, + -4.498153229526361 + ], + [ + 36.352869849255185, + -4.498158011088269 + ], + [ + 36.35280528853056, + -4.498162792621923 + ], + [ + 36.352740728166616, + -4.498167574126703 + ], + [ + 36.35267616817494, + -4.498172355602992 + ], + [ + 36.35261160856021, + -4.498177137050773 + ], + [ + 36.35254704930556, + -4.498181918469844 + ], + [ + 36.352482490423085, + -4.498186699860392 + ], + [ + 36.35241793191104, + -4.498191481222371 + ], + [ + 36.35235337376631, + -4.49819626255576 + ], + [ + 36.35228881599397, + -4.498201043860625 + ], + [ + 36.35222425859354, + -4.498205825136964 + ], + [ + 36.352159701557405, + -4.498210606384593 + ], + [ + 36.3520951448896, + -4.498215387603692 + ], + [ + 36.35203058859367, + -4.498220168794215 + ], + [ + 36.351966032670745, + -4.498224949956256 + ], + [ + 36.35190147711952, + -4.49822973108977 + ], + [ + 36.351836921927934, + -4.498234512194411 + ], + [ + 36.35177236711173, + -4.498239293270754 + ], + [ + 36.35170781266379, + -4.498244074318385 + ], + [ + 36.35164325858638, + -4.4982488553374385 + ], + [ + 36.35157870487766, + -4.498253636327943 + ], + [ + 36.35151415153872, + -4.498258417289893 + ], + [ + 36.351449598571236, + -4.498263198223367 + ], + [ + 36.35138504596934, + -4.498267979128088 + ], + [ + 36.351320493741824, + -4.498272760004339 + ], + [ + 36.35125594188131, + -4.498277540851956 + ], + [ + 36.35119139038952, + -4.498282321671172 + ], + [ + 36.35112683926464, + -4.498287102461535 + ], + [ + 36.351062288515095, + -4.498291883223578 + ], + [ + 36.350997738130516, + -4.4982966639568245 + ], + [ + 36.35093318811683, + -4.4983014446617045 + ], + [ + 36.350868638475795, + -4.498306225338112 + ], + [ + 36.35080408920144, + -4.498311005985707 + ], + [ + 36.35073954029378, + -4.498315786604784 + ], + [ + 36.350674991756364, + -4.498320567195229 + ], + [ + 36.35061044359219, + -4.49832534775722 + ], + [ + 36.35054589579467, + -4.498330128290579 + ], + [ + 36.350481348369556, + -4.49833490879552 + ], + [ + 36.35041680130787, + -4.498339689271635 + ], + [ + 36.35035225462381, + -4.498344469719412 + ], + [ + 36.35028770830591, + -4.498349250138556 + ], + [ + 36.35022316235881, + -4.498354030529155 + ], + [ + 36.3501586167755, + -4.498358810891081 + ], + [ + 36.350094071562886, + -4.498363591224507 + ], + [ + 36.35002952672532, + -4.4983683715292555 + ], + [ + 36.34996498225348, + -4.498373151805644 + ], + [ + 36.34990043814925, + -4.498377932053277 + ], + [ + 36.34983589442185, + -4.498382712272588 + ], + [ + 36.34977135105684, + -4.4983874924630864 + ], + [ + 36.349706808063324, + -4.49839227262514 + ], + [ + 36.34964226543979, + -4.498397052758614 + ], + [ + 36.349577723186435, + -4.498401832863546 + ], + [ + 36.34951318130139, + -4.498406612939974 + ], + [ + 36.34944863978606, + -4.4984113929877445 + ], + [ + 36.34938409864178, + -4.4984161730068895 + ], + [ + 36.34931955786301, + -4.498420952997518 + ], + [ + 36.34925501745672, + -4.49842573295963 + ], + [ + 36.34919047742145, + -4.498430512893217 + ], + [ + 36.34912593775113, + -4.498435292798035 + ], + [ + 36.34906139845451, + -4.498440072674554 + ], + [ + 36.348996859522416, + -4.498444852522309 + ], + [ + 36.34893232096283, + -4.4984496323417185 + ], + [ + 36.34886778277419, + -4.4984544121324355 + ], + [ + 36.34880324495342, + -4.498459191894482 + ], + [ + 36.34873870750182, + -4.49846397162813 + ], + [ + 36.34867417042193, + -4.498468751333261 + ], + [ + 36.34860963370788, + -4.498473531009668 + ], + [ + 36.348545097365886, + -4.498478310657627 + ], + [ + 36.348480561388854, + -4.498483090276958 + ], + [ + 36.3484160257903, + -4.4984878698678745 + ], + [ + 36.348351490553895, + -4.4984926494301005 + ], + [ + 36.34828695568707, + -4.498497428963738 + ], + [ + 36.3482224211918, + -4.498502208468922 + ], + [ + 36.348157887063216, + -4.498506987945329 + ], + [ + 36.34809335331015, + -4.498511767393498 + ], + [ + 36.34802881992003, + -4.498516546813057 + ], + [ + 36.34796428690037, + -4.498521326203823 + ], + [ + 36.34789975425117, + -4.498526105566145 + ], + [ + 36.34783522197372, + -4.498530884899882 + ], + [ + 36.3477706900637, + -4.498535664205081 + ], + [ + 36.34770615852575, + -4.498540443481908 + ], + [ + 36.347641627353866, + -4.498545222730048 + ], + [ + 36.34757709655013, + -4.498550001949598 + ], + [ + 36.34751256612159, + -4.498554781140547 + ], + [ + 36.34744803605757, + -4.498559560303022 + ], + [ + 36.34738350636472, + -4.498564339436925 + ], + [ + 36.3473189770414, + -4.498569118542375 + ], + [ + 36.34725444808663, + -4.498573897619056 + ], + [ + 36.34718991950242, + -4.498578676667377 + ], + [ + 36.34712539128467, + -4.498583455686959 + ], + [ + 36.347060863441236, + -4.498588234678204 + ], + [ + 36.34699633596315, + -4.498593013640814 + ], + [ + 36.34693180885276, + -4.498597792574692 + ], + [ + 36.34686728211526, + -4.498602571480214 + ], + [ + 36.34680275575026, + -4.498607350357213 + ], + [ + 36.34673822974997, + -4.498612129205579 + ], + [ + 36.346673704117435, + -4.498616908025375 + ], + [ + 36.3466091788584, + -4.498621686816594 + ], + [ + 36.34654465396789, + -4.498626465579462 + ], + [ + 36.346480129444686, + -4.4986312443135725 + ], + [ + 36.346415605292044, + -4.49863602301918 + ] + ] + }, + { + "image": "942301p", + "ext": 15, + "mjd_mid": 54357.463064103045, + "exptime": 420.0570068, + "filter": "r.MP9601", + "found": true, + "accel": [ + 36.34985590642847, + -4.499454131493505 + ], + "grav": [ + 36.34889915901622, + -4.499497758118734 + ], + "motion": [ + -0.2685864316201383, + -0.5023634071644523 + ], + "locus": [ + [ + 36.35303074203323, + -4.499191834058804 + ], + [ + 36.352966174377705, + -4.499196615018792 + ], + [ + 36.352901607093486, + -4.499201395950284 + ], + [ + 36.35283704017693, + -4.4992061768530425 + ], + [ + 36.352772473634495, + -4.499210957727454 + ], + [ + 36.35270790745829, + -4.499215738573226 + ], + [ + 36.35264334165205, + -4.49922051939038 + ], + [ + 36.35257877621669, + -4.499225300178925 + ], + [ + 36.352514211147344, + -4.4992300809389265 + ], + [ + 36.35244964645233, + -4.499234861670409 + ], + [ + 36.35238508212274, + -4.499239642373296 + ], + [ + 36.35232051816842, + -4.4992444230476805 + ], + [ + 36.35225595457613, + -4.499249203693271 + ], + [ + 36.35219139136204, + -4.499253984310615 + ], + [ + 36.35212682850863, + -4.4992587648990865 + ], + [ + 36.35206226602753, + -4.499263545459075 + ], + [ + 36.35199770392339, + -4.499268325990559 + ], + [ + 36.35193314217936, + -4.49927310649334 + ], + [ + 36.35186858080754, + -4.4992778869676044 + ], + [ + 36.35180401980616, + -4.499282667413301 + ], + [ + 36.35173945917213, + -4.499287447830413 + ], + [ + 36.3516748989105, + -4.499292228219009 + ], + [ + 36.351610339020795, + -4.499297008579081 + ], + [ + 36.35154577949543, + -4.499301788910449 + ], + [ + 36.35148122033841, + -4.499306569213292 + ], + [ + 36.35141666155329, + -4.499311349487566 + ], + [ + 36.351352103141195, + -4.49931612973336 + ], + [ + 36.35128754510083, + -4.499320909950635 + ], + [ + 36.35122298742012, + -4.499325690139041 + ], + [ + 36.35115843011482, + -4.499330470299153 + ], + [ + 36.35109387317781, + -4.499335250430557 + ], + [ + 36.35102931661136, + -4.49934003053339 + ], + [ + 36.35096476041362, + -4.499344810607679 + ], + [ + 36.350900204585685, + -4.499349590653421 + ], + [ + 36.35083564912921, + -4.49935437067069 + ], + [ + 36.350771094038365, + -4.499359150659209 + ], + [ + 36.35070653932191, + -4.499363930619263 + ], + [ + 36.3506419849725, + -4.49936871055069 + ], + [ + 36.35057743099184, + -4.499373490453722 + ], + [ + 36.350512877378094, + -4.499378270327906 + ], + [ + 36.35044832413972, + -4.499383050173773 + ], + [ + 36.35038377126633, + -4.499387829990852 + ], + [ + 36.35031921876385, + -4.499392609779565 + ], + [ + 36.35025466663406, + -4.499397389539813 + ], + [ + 36.35019011487096, + -4.499402169271254 + ], + [ + 36.350125563474585, + -4.499406948974182 + ], + [ + 36.35006101244849, + -4.499411728648482 + ], + [ + 36.349996461795634, + -4.499416508294332 + ], + [ + 36.34993191150947, + -4.499421287911555 + ], + [ + 36.34986736159574, + -4.499426067500368 + ], + [ + 36.34980281204547, + -4.499430847060357 + ], + [ + 36.34973826287283, + -4.499435626592016 + ], + [ + 36.349673714066384, + -4.499440406095045 + ], + [ + 36.34960916563076, + -4.4994451855695345 + ], + [ + 36.349544617558955, + -4.499449965015357 + ], + [ + 36.349480069857854, + -4.499454744432681 + ], + [ + 36.34941552253184, + -4.499459523821336 + ], + [ + 36.349350975571575, + -4.499464303181636 + ], + [ + 36.34928642897892, + -4.499469082513183 + ], + [ + 36.34922188276315, + -4.4994738618164165 + ], + [ + 36.34915733690978, + -4.4994786410908425 + ], + [ + 36.34909279142793, + -4.499483420336825 + ], + [ + 36.34902824631608, + -4.499488199554236 + ], + [ + 36.348963701574434, + -4.499492978743108 + ], + [ + 36.34889915720114, + -4.499497757903481 + ], + [ + 36.34883461319757, + -4.499502537035205 + ], + [ + 36.34877006956506, + -4.499507316138303 + ], + [ + 36.34870552629811, + -4.499512095212893 + ], + [ + 36.348640983403655, + -4.499516874258971 + ], + [ + 36.34857644088024, + -4.499521653276529 + ], + [ + 36.348511898721796, + -4.499526432265324 + ], + [ + 36.34844735693708, + -4.499531211225823 + ], + [ + 36.348382815516906, + -4.499535990157566 + ], + [ + 36.34831827446927, + -4.4995407690609674 + ], + [ + 36.3482537337926, + -4.4995455479356785 + ], + [ + 36.34818919348384, + -4.499550326781727 + ], + [ + 36.34812465354426, + -4.499555105599381 + ], + [ + 36.348060113976416, + -4.499559884388525 + ], + [ + 36.34799557477444, + -4.499564663148946 + ], + [ + 36.34793103594454, + -4.499569441880928 + ], + [ + 36.34786649747963, + -4.499574220584285 + ], + [ + 36.3478019593932, + -4.499578999259234 + ], + [ + 36.347737421668974, + -4.499583777905499 + ], + [ + 36.347672884314335, + -4.499588556523176 + ], + [ + 36.34760834733127, + -4.499593335112406 + ], + [ + 36.34754381071492, + -4.499598113672865 + ], + [ + 36.34747927447412, + -4.499602892205091 + ], + [ + 36.347414738596285, + -4.499607670708714 + ], + [ + 36.34735020308893, + -4.4996124491835445 + ], + [ + 36.34728566795206, + -4.499617227629939 + ], + [ + 36.34722113318696, + -4.499622006047751 + ], + [ + 36.34715659878932, + -4.499626784437034 + ], + [ + 36.34709206476378, + -4.499631562797949 + ], + [ + 36.34702753110432, + -4.499636341130178 + ], + [ + 36.34696299781303, + -4.499641119433825 + ], + [ + 36.34689846489697, + -4.499645897708876 + ], + [ + 36.34683393234545, + -4.49965067595546 + ], + [ + 36.346769400165115, + -4.4996554541734755 + ], + [ + 36.34670486835433, + -4.499660232363042 + ], + [ + 36.34664033691213, + -4.499665010523845 + ], + [ + 36.346575805840516, + -4.499669788656293 + ], + [ + 36.34651127513538, + -4.499674566760006 + ], + [ + 36.346446744804595, + -4.499679344835389 + ], + [ + 36.34638221483917, + -4.499684122882142 + ], + [ + 36.34631768524146, + -4.499688900900167 + ], + [ + 36.34625315601667, + -4.499693678889843 + ], + [ + 36.3461886271644, + -4.499698456850998 + ], + [ + 36.346124098676874, + -4.499703234783528 + ], + [ + 36.34605957055713, + -4.499708012687491 + ], + [ + 36.345995042810905, + -4.499712790562882 + ], + [ + 36.345930515433224, + -4.499717568409927 + ], + [ + 36.345865988422865, + -4.49972234622822 + ], + [ + 36.3458014617831, + -4.499727124018015 + ] + ] + }, + { + "image": "942302p", + "ext": 24, + "mjd_mid": 54357.46854417245, + "exptime": 420.073, + "filter": "r.MP9601", + "found": true, + "accel": [ + 36.3492345909474, + -4.50055680945586 + ], + "grav": [ + 36.34827780621782, + -4.500600421554523 + ], + "motion": [ + -0.2686781928838897, + -0.5024040828480736 + ], + "locus": [ + [ + 36.35240955008296, + -4.500294556773464 + ], + [ + 36.35234497991341, + -4.500299336807056 + ], + [ + 36.35228041011521, + -4.500304116812161 + ], + [ + 36.35221584068469, + -4.500308896788536 + ], + [ + 36.352151271628315, + -4.500313676736568 + ], + [ + 36.3520867029382, + -4.500318456655969 + ], + [ + 36.35202213461807, + -4.500323236546754 + ], + [ + 36.35195756666885, + -4.500328016408936 + ], + [ + 36.35189299908566, + -4.5003327962425805 + ], + [ + 36.35182843187683, + -4.500337576047713 + ], + [ + 36.35176386503344, + -4.500342355824251 + ], + [ + 36.35169929856536, + -4.500347135572293 + ], + [ + 36.351634732459324, + -4.500351915291547 + ], + [ + 36.351570166731506, + -4.500356694982557 + ], + [ + 36.35150560136441, + -4.500361474644703 + ], + [ + 36.35144103636963, + -4.500366254278369 + ], + [ + 36.35137647175184, + -4.500371033883535 + ], + [ + 36.351311907494186, + -4.500375813460006 + ], + [ + 36.35124734360876, + -4.500380593007961 + ], + [ + 36.3511827800938, + -4.500385372527357 + ], + [ + 36.35111821694622, + -4.500390152018175 + ], + [ + 36.35105365417106, + -4.500394931480477 + ], + [ + 36.35098909176785, + -4.500399710914263 + ], + [ + 36.350924529729014, + -4.500404490319349 + ], + [ + 36.350859968058536, + -4.500409269695918 + ], + [ + 36.350795406759985, + -4.50041404904392 + ], + [ + 36.350730845834484, + -4.50041882836345 + ], + [ + 36.350666285280724, + -4.5004236076544615 + ], + [ + 36.350601725086655, + -4.500428386916612 + ], + [ + 36.35053716526802, + -4.500433166150473 + ], + [ + 36.3504726058177, + -4.500437945355633 + ], + [ + 36.35040804673795, + -4.500442724532225 + ], + [ + 36.350343488026944, + -4.500447503680281 + ], + [ + 36.35027892968577, + -4.50045228279979 + ], + [ + 36.35021437171609, + -4.500457061890833 + ], + [ + 36.35014981411205, + -4.500461840953134 + ], + [ + 36.35008525688243, + -4.500466619986974 + ], + [ + 36.350020700019876, + -4.5004713989921905 + ], + [ + 36.349956143526086, + -4.500476177969019 + ], + [ + 36.34989158739925, + -4.500480956917 + ], + [ + 36.349827031647806, + -4.500485735836675 + ], + [ + 36.349762476261354, + -4.500490514727563 + ], + [ + 36.349697921245856, + -4.5004952935900935 + ], + [ + 36.34963336660306, + -4.5005000724241615 + ], + [ + 36.349568812327, + -4.500504851229428 + ], + [ + 36.34950425841766, + -4.500509630006186 + ], + [ + 36.349439704878634, + -4.500514408754324 + ], + [ + 36.34937515171288, + -4.500519187474016 + ], + [ + 36.34931059891383, + -4.500523966165083 + ], + [ + 36.349246046487245, + -4.500528744827747 + ], + [ + 36.34918149442414, + -4.500533523461594 + ], + [ + 36.34911694273869, + -4.500538302067114 + ], + [ + 36.34905239141947, + -4.500543080644009 + ], + [ + 36.34898784047107, + -4.500547859192371 + ], + [ + 36.34892328988653, + -4.5005526377120715 + ], + [ + 36.34885873967272, + -4.500557416203278 + ], + [ + 36.34879418983402, + -4.500562194665818 + ], + [ + 36.348729640361086, + -4.5005669731000095 + ], + [ + 36.34866509125579, + -4.500571751505455 + ], + [ + 36.34860054252741, + -4.500576529882591 + ], + [ + 36.34853599416144, + -4.500581308230922 + ], + [ + 36.348471446167025, + -4.500586086550818 + ], + [ + 36.34840689854263, + -4.500590864842146 + ], + [ + 36.34834235128847, + -4.500595643104941 + ], + [ + 36.34827780440267, + -4.500600421339244 + ], + [ + 36.348213257886634, + -4.500605199544899 + ], + [ + 36.34814871174168, + -4.500609977721935 + ], + [ + 36.3480841659623, + -4.500614755870468 + ], + [ + 36.348019620555434, + -4.500619533990495 + ], + [ + 36.34795507551964, + -4.500624312082006 + ], + [ + 36.34789053084886, + -4.50062909014476 + ], + [ + 36.3478259865518, + -4.500633868179222 + ], + [ + 36.34776144261934, + -4.500638646184933 + ], + [ + 36.347696899059414, + -4.500643424162308 + ], + [ + 36.3476323558705, + -4.500648202110999 + ], + [ + 36.347567813049494, + -4.500652980031031 + ], + [ + 36.3475032705977, + -4.500657757922673 + ], + [ + 36.34743872851768, + -4.5006625357858105 + ], + [ + 36.347374186803535, + -4.500667313620232 + ], + [ + 36.34730964546149, + -4.5006720914262175 + ], + [ + 36.34724510448448, + -4.500676869203584 + ], + [ + 36.34718056388596, + -4.500681646952549 + ], + [ + 36.34711602364967, + -4.500686424672829 + ], + [ + 36.34705148378299, + -4.500691202364533 + ], + [ + 36.34698694428791, + -4.500695980027793 + ], + [ + 36.34692240515956, + -4.500700757662285 + ], + [ + 36.34685786640679, + -4.500705535268554 + ], + [ + 36.346793328017014, + -4.500710312846219 + ], + [ + 36.34672878999774, + -4.500715090395101 + ], + [ + 36.34666425234898, + -4.500719867915549 + ], + [ + 36.34659971507202, + -4.5007246454074235 + ], + [ + 36.34653517816252, + -4.500729422870769 + ], + [ + 36.346470641625146, + -4.5007342003057556 + ], + [ + 36.34640610545388, + -4.500738977712061 + ], + [ + 36.346341569650825, + -4.500743755089789 + ], + [ + 36.34627703422301, + -4.5007485324389265 + ], + [ + 36.34621249915975, + -4.500753309759599 + ], + [ + 36.346147964467725, + -4.500758087051708 + ], + [ + 36.346083430145256, + -4.500762864315378 + ], + [ + 36.3460188961914, + -4.500767641550286 + ], + [ + 36.34595436260815, + -4.500772418756846 + ], + [ + 36.34588982939141, + -4.500777195934678 + ], + [ + 36.34582529654903, + -4.50078197308418 + ], + [ + 36.34576076407205, + -4.500786750205059 + ], + [ + 36.345696231962805, + -4.500791527297215 + ], + [ + 36.34563170022651, + -4.500796304361026 + ], + [ + 36.34556716886275, + -4.500801081396325 + ], + [ + 36.34550263786376, + -4.500805858403002 + ], + [ + 36.345438107232575, + -4.500810635381115 + ], + [ + 36.345373576974914, + -4.500815412330664 + ], + [ + 36.34530904708585, + -4.500820189251869 + ], + [ + 36.34524451756412, + -4.5008249661443305 + ], + [ + 36.34517998841301, + -4.500829743008298 + ] + ] + }, + { + "image": "942303p", + "ext": 24, + "mjd_mid": 54357.47396276626, + "exptime": 420.0660095, + "filter": "r.MP9601", + "found": true, + "accel": [ + 36.34861943849191, + -4.501647124838058 + ], + "grav": [ + 36.34766261689302, + -4.501690722568479 + ], + "motion": [ + -0.2687689339234209, + -0.5024442875996016 + ], + "locus": [ + [ + 36.3517945196752, + -4.501384916423607 + ], + [ + 36.35172994702183, + -4.501389695540851 + ], + [ + 36.35166537473982, + -4.50139447462961 + ], + [ + 36.35160080282553, + -4.501399253689646 + ], + [ + 36.351536231285394, + -4.501404032721345 + ], + [ + 36.35147166011154, + -4.501408811724414 + ], + [ + 36.3514070893077, + -4.501413590698875 + ], + [ + 36.351342518874795, + -4.501418369644739 + ], + [ + 36.351277948807954, + -4.5014231485620675 + ], + [ + 36.35121337911548, + -4.50142792745089 + ], + [ + 36.35114880978848, + -4.501432706311125 + ], + [ + 36.351084240836805, + -4.501437485142866 + ], + [ + 36.3510196722472, + -4.501442263945825 + ], + [ + 36.35095510403584, + -4.501447042720547 + ], + [ + 36.35089053618522, + -4.501451821466408 + ], + [ + 36.35082596870696, + -4.501456600183795 + ], + [ + 36.350761401605695, + -4.501461378872689 + ], + [ + 36.35069683486459, + -4.50146615753289 + ], + [ + 36.35063226849575, + -4.501470936164583 + ], + [ + 36.350567702497386, + -4.501475714767718 + ], + [ + 36.35050313686643, + -4.501480493342281 + ], + [ + 36.35043857160792, + -4.501485271888334 + ], + [ + 36.35037400672138, + -4.501490050405878 + ], + [ + 36.35030944219923, + -4.501494828894726 + ], + [ + 36.350244878045466, + -4.5014996073550595 + ], + [ + 36.35018031426366, + -4.501504385786833 + ], + [ + 36.350115750854926, + -4.501509164190139 + ], + [ + 36.35005118781796, + -4.501513942564933 + ], + [ + 36.34998662514071, + -4.50151872091087 + ], + [ + 36.3499220628389, + -4.501523499228523 + ], + [ + 36.34985750090544, + -4.501528277517479 + ], + [ + 36.34979293934258, + -4.501533055777872 + ], + [ + 36.34972837814848, + -4.501537834009733 + ], + [ + 36.349663817324235, + -4.501542612213056 + ], + [ + 36.34959925687151, + -4.501547390387915 + ], + [ + 36.34953469678445, + -4.501552168534038 + ], + [ + 36.34947013707184, + -4.501556946651706 + ], + [ + 36.34940557772631, + -4.501561724740753 + ], + [ + 36.34934101874957, + -4.501566502801419 + ], + [ + 36.349276460139805, + -4.501571280833241 + ], + [ + 36.34921190190545, + -4.501576058836764 + ], + [ + 36.34914734403613, + -4.501580836811503 + ], + [ + 36.349082786537785, + -4.50158561475789 + ], + [ + 36.34901822941216, + -4.501590392675821 + ], + [ + 36.34895367265328, + -4.501595170564954 + ], + [ + 36.34888911626116, + -4.501599948425586 + ], + [ + 36.34882456023937, + -4.501604726257599 + ], + [ + 36.34876000459088, + -4.5016095040611726 + ], + [ + 36.348695449309126, + -4.50161428183613 + ], + [ + 36.348630894399854, + -4.501619059582685 + ], + [ + 36.348566339854074, + -4.501623837300429 + ], + [ + 36.34850178568598, + -4.501628614989851 + ], + [ + 36.34843723188415, + -4.501633392650655 + ], + [ + 36.34837267845315, + -4.501638170282928 + ], + [ + 36.34830812538605, + -4.501642947886545 + ], + [ + 36.34824357268969, + -4.501647725461676 + ], + [ + 36.34817902036847, + -4.5016525030081445 + ], + [ + 36.34811446841304, + -4.501657280526267 + ], + [ + 36.348049916825275, + -4.5016620580156514 + ], + [ + 36.34798536561442, + -4.501666835476729 + ], + [ + 36.347920814766034, + -4.501671612909008 + ], + [ + 36.34785626428921, + -4.501676390312857 + ], + [ + 36.34779171418245, + -4.501681167688145 + ], + [ + 36.34772716444593, + -4.501685945034901 + ], + [ + 36.34766261507779, + -4.501690722353171 + ], + [ + 36.34759806607945, + -4.501695499642799 + ], + [ + 36.347533517452206, + -4.501700276903815 + ], + [ + 36.347468969190565, + -4.501705054136331 + ], + [ + 36.34740442130147, + -4.501709831340345 + ], + [ + 36.34733987378347, + -4.501714608515849 + ], + [ + 36.34727532663048, + -4.5017193856626 + ], + [ + 36.34721077985125, + -4.501724162781066 + ], + [ + 36.347146233436646, + -4.501728939870785 + ], + [ + 36.34708168739461, + -4.501733716932175 + ], + [ + 36.3470171417236, + -4.501738493964884 + ], + [ + 36.34695259642053, + -4.501743270968939 + ], + [ + 36.34688805148668, + -4.501748047944608 + ], + [ + 36.34682350692463, + -4.5017528248917795 + ], + [ + 36.346758962728494, + -4.501757601810241 + ], + [ + 36.34669441890448, + -4.501762378700269 + ], + [ + 36.3466298754455, + -4.501767155561684 + ], + [ + 36.34656533236507, + -4.501771932394701 + ], + [ + 36.34650078964686, + -4.501776709199041 + ], + [ + 36.34643624729829, + -4.501781485974809 + ], + [ + 36.34637170532136, + -4.501786262722139 + ], + [ + 36.34630716371118, + -4.501791039440705 + ], + [ + 36.3462426224766, + -4.50179581613105 + ], + [ + 36.34617808160504, + -4.501800592792799 + ], + [ + 36.34611354110399, + -4.501805369425772 + ], + [ + 36.34604900097349, + -4.501810146030314 + ], + [ + 36.3459844612148, + -4.501814922606286 + ], + [ + 36.34591992182362, + -4.501819699153736 + ], + [ + 36.34585538280459, + -4.501824475672829 + ], + [ + 36.34579084415168, + -4.50182925216325 + ], + [ + 36.345726305867, + -4.5018340286250975 + ], + [ + 36.34566176795758, + -4.501838805058359 + ], + [ + 36.34559723041275, + -4.50184358146316 + ], + [ + 36.34553269323917, + -4.501848357839405 + ], + [ + 36.34546815643518, + -4.501853134187214 + ], + [ + 36.34540361999982, + -4.501857910506266 + ], + [ + 36.34533908393509, + -4.501862686796976 + ], + [ + 36.345274548236894, + -4.501867463058959 + ], + [ + 36.345210012913086, + -4.501872239292623 + ], + [ + 36.345145477954695, + -4.501877015497664 + ], + [ + 36.34508094336407, + -4.501881791673991 + ], + [ + 36.34501640914641, + -4.501886567821977 + ], + [ + 36.34495187530132, + -4.501891343941456 + ], + [ + 36.34488734182101, + -4.501896120032314 + ], + [ + 36.344822808708535, + -4.50190089609462 + ], + [ + 36.34475827596962, + -4.501905672128362 + ], + [ + 36.3446937435993, + -4.501910448133769 + ], + [ + 36.34462921159636, + -4.501915224110433 + ], + [ + 36.34456467996406, + -4.501920000058609 + ] + ] + }, + { + "image": "942304p", + "ext": 24, + "mjd_mid": 54357.479380937555, + "exptime": 420.0660095, + "filter": "r.MP9601", + "found": true, + "accel": [ + 36.34800356735361, + -4.502737361040185 + ], + "grav": [ + 36.34704670891728, + -4.502780944398925 + ], + "motion": [ + -0.2688596764578214, + -0.5024844744742296 + ], + "locus": [ + [ + 36.351178770479024, + -4.502475196907667 + ], + [ + 36.35111419534397, + -4.502479975108289 + ], + [ + 36.35104962058031, + -4.50248475328043 + ], + [ + 36.35098504618438, + -4.502489531423855 + ], + [ + 36.35092047216264, + -4.502494309538944 + ], + [ + 36.3508558985072, + -4.502499087625415 + ], + [ + 36.3507913252218, + -4.502503865683278 + ], + [ + 36.35072675230736, + -4.502508643712549 + ], + [ + 36.350662179759006, + -4.502513421713292 + ], + [ + 36.350597607585044, + -4.502518199685532 + ], + [ + 36.35053303577657, + -4.502522977629191 + ], + [ + 36.350468464343464, + -4.502527755544361 + ], + [ + 36.350403893272436, + -4.5025325334307515 + ], + [ + 36.350339322579686, + -4.502537311288912 + ], + [ + 36.3502747522477, + -4.502542089118219 + ], + [ + 36.35021018228808, + -4.5025468669190545 + ], + [ + 36.3501456127055, + -4.502551644691401 + ], + [ + 36.3500810434831, + -4.50255642243506 + ], + [ + 36.35001647463297, + -4.502561200150215 + ], + [ + 36.34995190615337, + -4.502565977836822 + ], + [ + 36.34988733804117, + -4.502570755494858 + ], + [ + 36.34982277030146, + -4.50257553312439 + ], + [ + 36.34975820293375, + -4.502580310725419 + ], + [ + 36.34969363593043, + -4.502585088297754 + ], + [ + 36.34962906929554, + -4.502589865841582 + ], + [ + 36.349564503032624, + -4.502594643356855 + ], + [ + 36.349499937142795, + -4.502599420843664 + ], + [ + 36.349435371624786, + -4.502604198301968 + ], + [ + 36.34937080646648, + -4.502608975731418 + ], + [ + 36.34930624168367, + -4.502613753132591 + ], + [ + 36.34924167726921, + -4.502618530505071 + ], + [ + 36.34917711322539, + -4.502623307848994 + ], + [ + 36.34911254955034, + -4.50262808516439 + ], + [ + 36.34904798624518, + -4.502632862451252 + ], + [ + 36.34898342331156, + -4.502637639709657 + ], + [ + 36.34891886074363, + -4.502642416939327 + ], + [ + 36.348854298550165, + -4.5026471941405495 + ], + [ + 36.34878973672381, + -4.502651971313157 + ], + [ + 36.34872517526627, + -4.502656748457387 + ], + [ + 36.34866061417572, + -4.502661525572779 + ], + [ + 36.348596053460625, + -4.502666302659875 + ], + [ + 36.34853149311057, + -4.502671079718196 + ], + [ + 36.34846693313151, + -4.5026758567481675 + ], + [ + 36.3484023735252, + -4.502680633749687 + ], + [ + 36.34833781428567, + -4.502685410722417 + ], + [ + 36.34827325541293, + -4.502690187666647 + ], + [ + 36.34820869691052, + -4.502694964582265 + ], + [ + 36.34814413878145, + -4.502699741469449 + ], + [ + 36.348079581019114, + -4.502704518328021 + ], + [ + 36.3480150236293, + -4.502709295158196 + ], + [ + 36.34795046660301, + -4.502714071959568 + ], + [ + 36.34788590995443, + -4.502718848732621 + ], + [ + 36.34782135367212, + -4.502723625477057 + ], + [ + 36.34775679776069, + -4.50272840219297 + ], + [ + 36.34769224221315, + -4.5027331788802325 + ], + [ + 36.3476276870364, + -4.502737955539015 + ], + [ + 36.347563132234804, + -4.502742732169138 + ], + [ + 36.34749857779902, + -4.5027475087709234 + ], + [ + 36.347434023730926, + -4.502752285343972 + ], + [ + 36.34736947003978, + -4.50275706188872 + ], + [ + 36.34730491671111, + -4.502761838404674 + ], + [ + 36.34724036375403, + -4.502766614892203 + ], + [ + 36.347175811167034, + -4.5027713913511755 + ], + [ + 36.34711125895031, + -4.502776167781625 + ], + [ + 36.34704670710198, + -4.50278094418359 + ], + [ + 36.34698215562348, + -4.502785720556918 + ], + [ + 36.34691760451611, + -4.502790496901639 + ], + [ + 36.34685305377434, + -4.502795273217866 + ], + [ + 36.34678850340516, + -4.5028000495055975 + ], + [ + 36.346723953407086, + -4.502804825764822 + ], + [ + 36.34665940377406, + -4.5028096019953 + ], + [ + 36.34659485451482, + -4.502814378197496 + ], + [ + 36.34653030562022, + -4.502819154370952 + ], + [ + 36.346465757098215, + -4.50282393051608 + ], + [ + 36.34640120894725, + -4.502828706632537 + ], + [ + 36.34633666116425, + -4.502833482720343 + ], + [ + 36.34627211375051, + -4.502838258779771 + ], + [ + 36.34620756670858, + -4.502843034810702 + ], + [ + 36.34614302003259, + -4.502847810812929 + ], + [ + 36.34607847372874, + -4.502852586786729 + ], + [ + 36.34601392778997, + -4.50285736273192 + ], + [ + 36.34594938222975, + -4.502862138648719 + ], + [ + 36.34588483703178, + -4.502866914536845 + ], + [ + 36.345820292203484, + -4.502871690396404 + ], + [ + 36.345755747746836, + -4.502876466227529 + ], + [ + 36.345691203656976, + -4.502881242029899 + ], + [ + 36.34562665994273, + -4.50288601780405 + ], + [ + 36.34556211659152, + -4.502890793549611 + ], + [ + 36.34549757361087, + -4.502895569266399 + ], + [ + 36.345433031000766, + -4.502900344954762 + ], + [ + 36.34536848876252, + -4.502905120614562 + ], + [ + 36.34530394689178, + -4.502909896245844 + ], + [ + 36.34523940539324, + -4.502914671848775 + ], + [ + 36.34517486426083, + -4.502919447423037 + ], + [ + 36.34511032349667, + -4.502924222968731 + ], + [ + 36.34504578310781, + -4.502928998485845 + ], + [ + 36.34498124308355, + -4.502933773974505 + ], + [ + 36.34491670343056, + -4.50293854943461 + ], + [ + 36.3448521641472, + -4.502943324866284 + ], + [ + 36.34478762523248, + -4.50294810026921 + ], + [ + 36.34472308668842, + -4.502952875643796 + ], + [ + 36.344658548510914, + -4.5029576509896625 + ], + [ + 36.34459401070782, + -4.502962426307213 + ], + [ + 36.34452947327017, + -4.502967201596147 + ], + [ + 36.3444649362003, + -4.5029719768563705 + ], + [ + 36.34440039950344, + -4.5029767520882595 + ], + [ + 36.34433586317916, + -4.502981527291645 + ], + [ + 36.34427132721968, + -4.502986302466416 + ], + [ + 36.34420679162807, + -4.502991077612639 + ], + [ + 36.34414225641004, + -4.502995852730304 + ], + [ + 36.34407772156062, + -4.503000627819637 + ], + [ + 36.34401318707861, + -4.503005402880235 + ], + [ + 36.343948652967256, + -4.503010177912349 + ] + ] + }, + { + "image": "942305p", + "ext": 15, + "mjd_mid": 54357.48480532986, + "exptime": 420.061, + "filter": "r.MP9601", + "found": true, + "accel": [ + 36.34738625767256, + -4.503828853049553 + ], + "grav": [ + 36.346429362385365, + -4.503872422015602 + ], + "motion": [ + -0.2689505309718261, + -0.5025246925271176 + ], + "locus": [ + [ + 36.35056158278453, + -4.503566733267122 + ], + [ + 36.35049700516689, + -4.503571510549728 + ], + [ + 36.35043242792067, + -4.50357628780386 + ], + [ + 36.35036785104221, + -4.503581065029279 + ], + [ + 36.35030327453796, + -4.503585842226371 + ], + [ + 36.350238698400034, + -4.503590619394844 + ], + [ + 36.35017412263216, + -4.503595396534717 + ], + [ + 36.35010954723528, + -4.503600173646001 + ], + [ + 36.3500449722045, + -4.503604950728763 + ], + [ + 36.34998039754815, + -4.50360972778303 + ], + [ + 36.34991582325732, + -4.503614504808719 + ], + [ + 36.34985124934185, + -4.503619281805922 + ], + [ + 36.349786675788515, + -4.503624058774356 + ], + [ + 36.349722102613455, + -4.5036288357145615 + ], + [ + 36.3496575297992, + -4.503633612625915 + ], + [ + 36.34959295735733, + -4.503638389508807 + ], + [ + 36.34952838529252, + -4.503643166363216 + ], + [ + 36.34946381358792, + -4.5036479431889385 + ], + [ + 36.34939924225561, + -4.503652719986166 + ], + [ + 36.349334671293846, + -4.503657496754847 + ], + [ + 36.34927010069951, + -4.503662273494964 + ], + [ + 36.349205530477704, + -4.503667050206582 + ], + [ + 36.3491409606279, + -4.5036718268897 + ], + [ + 36.34907639114253, + -4.503676603544132 + ], + [ + 36.349011822025595, + -4.503681380170061 + ], + [ + 36.34894725328066, + -4.503686156767439 + ], + [ + 36.34888268490885, + -4.503690933336359 + ], + [ + 36.34881811690886, + -4.503695709876779 + ], + [ + 36.34875354926863, + -4.50370048638835 + ], + [ + 36.3486889820039, + -4.503705262871648 + ], + [ + 36.34862441510755, + -4.50371003932626 + ], + [ + 36.34855984858185, + -4.503714815752319 + ], + [ + 36.348495282424956, + -4.5037195921498565 + ], + [ + 36.348430716637964, + -4.5037243685188635 + ], + [ + 36.34836615122254, + -4.503729144859419 + ], + [ + 36.34830158617283, + -4.503733921171246 + ], + [ + 36.34823702149762, + -4.503738697454631 + ], + [ + 36.34817245718954, + -4.503743473709406 + ], + [ + 36.348107893250294, + -4.503748249935806 + ], + [ + 36.34804332967808, + -4.503753026133376 + ], + [ + 36.347978766481305, + -4.503757802302654 + ], + [ + 36.34791420364962, + -4.503762578443159 + ], + [ + 36.34784964118895, + -4.503767354555323 + ], + [ + 36.34778507910106, + -4.50377213063904 + ], + [ + 36.34772051737996, + -4.503776906693972 + ], + [ + 36.34765595602567, + -4.503781682720409 + ], + [ + 36.34759139504175, + -4.503786458718238 + ], + [ + 36.347526834431186, + -4.5037912346876405 + ], + [ + 36.34746227418739, + -4.503796010628434 + ], + [ + 36.34739771431614, + -4.503800786540837 + ], + [ + 36.347333154808425, + -4.5038055624244375 + ], + [ + 36.34726859567844, + -4.503810338279729 + ], + [ + 36.34720403691476, + -4.503815114106408 + ], + [ + 36.34713947852198, + -4.50381988990457 + ], + [ + 36.347074920493114, + -4.503824665674084 + ], + [ + 36.347010362835064, + -4.503829441415121 + ], + [ + 36.34694580555218, + -4.503834217127507 + ], + [ + 36.34688124863515, + -4.503838992811559 + ], + [ + 36.346816692085824, + -4.503843768466882 + ], + [ + 36.346752135913476, + -4.503848544093908 + ], + [ + 36.34668758010362, + -4.503853319692145 + ], + [ + 36.34662302466538, + -4.503858095261962 + ], + [ + 36.34655846959725, + -4.503862870803227 + ], + [ + 36.3464939148994, + -4.503867646315973 + ], + [ + 36.34642936056999, + -4.503872421800242 + ], + [ + 36.346364806610424, + -4.503877197255878 + ], + [ + 36.34630025302201, + -4.503881972682913 + ], + [ + 36.34623569979924, + -4.503886748081458 + ], + [ + 36.346171146949054, + -4.503891523451511 + ], + [ + 36.346106594470015, + -4.503896298793063 + ], + [ + 36.34604204235604, + -4.503901074105874 + ], + [ + 36.34597749061588, + -4.50390584939041 + ], + [ + 36.34591293924038, + -4.503910624646207 + ], + [ + 36.3458483882375, + -4.503915399873686 + ], + [ + 36.34578383760569, + -4.503920175072494 + ], + [ + 36.34571928734185, + -4.503924950242659 + ], + [ + 36.34565473744731, + -4.503929725384451 + ], + [ + 36.3455901879246, + -4.50393450049775 + ], + [ + 36.34552563876785, + -4.50393927558235 + ], + [ + 36.34546108998327, + -4.503944050638528 + ], + [ + 36.34539654156379, + -4.503948825666105 + ], + [ + 36.345331993522876, + -4.503953600665291 + ], + [ + 36.34526744584426, + -4.503958375635812 + ], + [ + 36.34520289853533, + -4.503963150577769 + ], + [ + 36.34513835159807, + -4.503967925491299 + ], + [ + 36.3450738050276, + -4.503972700376075 + ], + [ + 36.345009258832796, + -4.5039774752326425 + ], + [ + 36.344944713001034, + -4.503982250060621 + ], + [ + 36.34488016753987, + -4.503987024859834 + ], + [ + 36.34481562244928, + -4.503991799630627 + ], + [ + 36.34475107773055, + -4.50399657437286 + ], + [ + 36.344686533379374, + -4.504001349086582 + ], + [ + 36.344621989400395, + -4.504006123771956 + ], + [ + 36.344557445787586, + -4.5040108984286675 + ], + [ + 36.34449290254305, + -4.5040156730568155 + ], + [ + 36.344428359673834, + -4.504020447656388 + ], + [ + 36.34436381716925, + -4.5040252222275114 + ], + [ + 36.344299275035965, + -4.504029996770088 + ], + [ + 36.344234733272316, + -4.504034771284236 + ], + [ + 36.34417019187733, + -4.504039545769642 + ], + [ + 36.344105650853045, + -4.504044320226711 + ], + [ + 36.34404111019533, + -4.504049094655067 + ], + [ + 36.34397656991205, + -4.504053869055113 + ], + [ + 36.343912029994236, + -4.504058643426547 + ], + [ + 36.343847490444226, + -4.504063417769276 + ], + [ + 36.34378295126725, + -4.504068192083674 + ], + [ + 36.34371841246287, + -4.504072966369574 + ], + [ + 36.34365387402333, + -4.504077740626865 + ], + [ + 36.34358933595166, + -4.504082514855613 + ], + [ + 36.34352479825361, + -4.504087289055808 + ], + [ + 36.3434602609242, + -4.504092063227676 + ], + [ + 36.34339572396221, + -4.504096837370813 + ], + [ + 36.343331187370914, + -4.504101611485473 + ] + ] + }, + { + "image": "942306p", + "ext": 24, + "mjd_mid": 54357.490224068235, + "exptime": 420.0589905, + "filter": "r.MP9601", + "found": true, + "accel": [ + 36.34676889772668, + -4.504919210159688 + ], + "grav": [ + 36.34581196565559, + -4.5049627647436035 + ], + "motion": [ + -0.26904129771045415, + -0.502564853553622 + ], + "locus": [ + [ + 36.349944344603415, + -4.5046571346982685 + ], + [ + 36.34987976450772, + -4.504661911063479 + ], + [ + 36.349815184783445, + -4.504666687400221 + ], + [ + 36.34975060542696, + -4.504671463708252 + ], + [ + 36.34968602644471, + -4.504676239987962 + ], + [ + 36.34962144782881, + -4.50468101623906 + ], + [ + 36.34955686958298, + -4.504685792461562 + ], + [ + 36.349492291708174, + -4.504690568655482 + ], + [ + 36.3494277141995, + -4.504695344820884 + ], + [ + 36.34936313706526, + -4.504700120957793 + ], + [ + 36.34929856029657, + -4.504704897066132 + ], + [ + 36.34923398390328, + -4.504709673145991 + ], + [ + 36.34916940787212, + -4.504714449197082 + ], + [ + 36.34910483221928, + -4.504719225219953 + ], + [ + 36.34904025692726, + -4.504724001213977 + ], + [ + 36.348975682007655, + -4.504728777179542 + ], + [ + 36.348911107465135, + -4.504733553116629 + ], + [ + 36.34884653328284, + -4.504738329025038 + ], + [ + 36.34878195947286, + -4.504743104904954 + ], + [ + 36.34871738603345, + -4.504747880756331 + ], + [ + 36.348652812961504, + -4.504752656579146 + ], + [ + 36.34858824026209, + -4.504757432373469 + ], + [ + 36.348523667934714, + -4.504762208139297 + ], + [ + 36.3484590959718, + -4.504766983876444 + ], + [ + 36.34839452437734, + -4.504771759585093 + ], + [ + 36.3483299531549, + -4.504776535265196 + ], + [ + 36.34826538230561, + -4.504781310916848 + ], + [ + 36.34820081182817, + -4.504786086540003 + ], + [ + 36.3481362417105, + -4.504790862134313 + ], + [ + 36.34807167196836, + -4.504795637700357 + ], + [ + 36.348007102594636, + -4.504800413237719 + ], + [ + 36.34794253359158, + -4.504805188746534 + ], + [ + 36.34787796495734, + -4.504809964226831 + ], + [ + 36.34781339669305, + -4.504814739678604 + ], + [ + 36.347748828800334, + -4.504819515101931 + ], + [ + 36.347684261273365, + -4.504824290496533 + ], + [ + 36.34761969412091, + -4.504829065862697 + ], + [ + 36.347555127335596, + -4.5048338412002575 + ], + [ + 36.34749056091917, + -4.50483861650945 + ], + [ + 36.347425994869766, + -4.504843391789816 + ], + [ + 36.34736142919587, + -4.504848167041893 + ], + [ + 36.34729686388706, + -4.504852942265204 + ], + [ + 36.347232298949294, + -4.50485771746018 + ], + [ + 36.34716773438432, + -4.504862492626712 + ], + [ + 36.347103170186166, + -4.504867267764464 + ], + [ + 36.34703860635485, + -4.5048720428737274 + ], + [ + 36.34697404289393, + -4.50487681795439 + ], + [ + 36.346909479806385, + -4.504881593006628 + ], + [ + 36.34684491708563, + -4.504886368030261 + ], + [ + 36.34678035473743, + -4.50489114302551 + ], + [ + 36.346715792752825, + -4.504895917991964 + ], + [ + 36.346651231145955, + -4.50490069293011 + ], + [ + 36.34658666990541, + -4.504905467839651 + ], + [ + 36.34652210903579, + -4.504910242720679 + ], + [ + 36.34645754853012, + -4.504915017573064 + ], + [ + 36.34639298839527, + -4.504919792396979 + ], + [ + 36.34632842863562, + -4.504924567192247 + ], + [ + 36.346263869241845, + -4.504929341959186 + ], + [ + 36.3461993102158, + -4.504934116697399 + ], + [ + 36.34613475156675, + -4.504938891407322 + ], + [ + 36.34607019328023, + -4.504943666088462 + ], + [ + 36.34600563536534, + -4.504948440741185 + ], + [ + 36.34594107782058, + -4.504953215365361 + ], + [ + 36.345876520646144, + -4.504957989961026 + ], + [ + 36.34581196384015, + -4.504962764528215 + ], + [ + 36.345747407404026, + -4.504967539066779 + ], + [ + 36.345682851339085, + -4.5049723135767445 + ], + [ + 36.345618295639795, + -4.504977088058227 + ], + [ + 36.345553740313136, + -4.504981862511222 + ], + [ + 36.345489185357636, + -4.504986636935723 + ], + [ + 36.345424630767226, + -4.504991411331487 + ], + [ + 36.345360076550655, + -4.504996185698978 + ], + [ + 36.34529552269876, + -4.505000960037738 + ], + [ + 36.345230969219514, + -4.505005734348185 + ], + [ + 36.34516641611136, + -4.505010508629965 + ], + [ + 36.34510186337122, + -4.505015282883109 + ], + [ + 36.345037311000375, + -4.50502005710788 + ], + [ + 36.34497275900141, + -4.505024831304168 + ], + [ + 36.344908207368405, + -4.505029605471761 + ], + [ + 36.34484365610761, + -4.5050343796109384 + ], + [ + 36.34477910521192, + -4.5050391537215155 + ], + [ + 36.34471455469484, + -4.50504392780371 + ], + [ + 36.344650004540064, + -4.505048701857245 + ], + [ + 36.34458545475499, + -4.505053475882218 + ], + [ + 36.34452090534164, + -4.505058249878771 + ], + [ + 36.3444563562951, + -4.505063023846576 + ], + [ + 36.34439180762423, + -4.505067797786175 + ], + [ + 36.344327259316444, + -4.505072571697193 + ], + [ + 36.344262711379265, + -4.505077345579448 + ], + [ + 36.34419816381269, + -4.505082119433289 + ], + [ + 36.344133616618, + -4.505086893258576 + ], + [ + 36.34406906979088, + -4.505091667055355 + ], + [ + 36.344004523336, + -4.5050964408237935 + ], + [ + 36.343939977247295, + -4.505101214563574 + ], + [ + 36.34387543152688, + -4.505105988274794 + ], + [ + 36.34381088618183, + -4.505110761957445 + ], + [ + 36.34374634120143, + -4.505115535611653 + ], + [ + 36.343681796592335, + -4.505120309237316 + ], + [ + 36.34361725235292, + -4.505125082834558 + ], + [ + 36.34355270848219, + -4.505129856403062 + ], + [ + 36.343488164982176, + -4.505134629943236 + ], + [ + 36.34342362184876, + -4.505139403454701 + ], + [ + 36.3433590790898, + -4.505144176937861 + ], + [ + 36.34329453669633, + -4.505148950392413 + ], + [ + 36.34322999467069, + -4.505153723818266 + ], + [ + 36.34316545301811, + -4.505158497215793 + ], + [ + 36.34310091173815, + -4.505163270584826 + ], + [ + 36.34303637082304, + -4.5051680439252575 + ], + [ + 36.34297183027585, + -4.505172817237147 + ], + [ + 36.342907290102275, + -4.505177590520492 + ], + [ + 36.34284275029738, + -4.505182363775514 + ], + [ + 36.34277821085993, + -4.50518713700181 + ], + [ + 36.34271367179319, + -4.505191910199634 + ] + ] + }, + { + "image": "942307p", + "ext": 24, + "mjd_mid": 54357.50091793974, + "exptime": 300.0799866, + "filter": "g.MP9401", + "found": true, + "accel": [ + 36.34554865082538, + -4.507071031019862 + ], + "grav": [ + 36.344591646244005, + -4.507114557207833 + ], + "motion": [ + -0.26922044291981373, + -0.5026440663563392 + ], + "locus": [ + [ + 36.34872433773076, + -4.506809043075577 + ], + [ + 36.34865975275016, + -4.506813817629331 + ], + [ + 36.348595168141046, + -4.506818592154623 + ], + [ + 36.34853058389976, + -4.5068233666512185 + ], + [ + 36.348466000032744, + -4.5068281411195015 + ], + [ + 36.348401416532134, + -4.5068329155591815 + ], + [ + 36.34833683340166, + -4.506837689970279 + ], + [ + 36.34827225064223, + -4.506842464352801 + ], + [ + 36.34820766824899, + -4.506847238706815 + ], + [ + 36.34814308623023, + -4.506852013032348 + ], + [ + 36.34807850457706, + -4.506856787329318 + ], + [ + 36.34801392329934, + -4.5068615615978205 + ], + [ + 36.3479493423838, + -4.5068663358375645 + ], + [ + 36.347884761846636, + -4.506871110049096 + ], + [ + 36.34782018167033, + -4.506875884231794 + ], + [ + 36.347755601866474, + -4.506880658386043 + ], + [ + 36.347691022439754, + -4.506885432511822 + ], + [ + 36.347626443373315, + -4.506890206608935 + ], + [ + 36.34756186467924, + -4.506894980677564 + ], + [ + 36.34749728635578, + -4.5068997547176615 + ], + [ + 36.34743270839983, + -4.506904528729211 + ], + [ + 36.34736813081645, + -4.506909302712277 + ], + [ + 36.347303553605165, + -4.506914076666858 + ], + [ + 36.34723897675838, + -4.506918850592768 + ], + [ + 36.3471744002801, + -4.506923624490188 + ], + [ + 36.34710982417389, + -4.506928398359074 + ], + [ + 36.34704524844088, + -4.506933172199517 + ], + [ + 36.346980673079756, + -4.506937946011475 + ], + [ + 36.34691609807845, + -4.5069427197945995 + ], + [ + 36.34685152345273, + -4.506947493549465 + ], + [ + 36.346786949195454, + -4.5069522672756595 + ], + [ + 36.34672237530891, + -4.506957040973316 + ], + [ + 36.346657801791224, + -4.506961814642465 + ], + [ + 36.34659322864353, + -4.506966588283101 + ], + [ + 36.346528655867466, + -4.5069713618953 + ], + [ + 36.346464083457185, + -4.506976135478786 + ], + [ + 36.34639951142147, + -4.5069809090338415 + ], + [ + 36.34633493975296, + -4.506985682560305 + ], + [ + 36.34627036845336, + -4.506990456058408 + ], + [ + 36.34620579752084, + -4.506995229527695 + ], + [ + 36.346141226963866, + -4.507000002968708 + ], + [ + 36.346076656772034, + -4.507004776380961 + ], + [ + 36.346012086951276, + -4.507009549764888 + ], + [ + 36.345947517503376, + -4.507014323120382 + ], + [ + 36.34588294842234, + -4.507019096447106 + ], + [ + 36.345818379708184, + -4.5070238697453515 + ], + [ + 36.345753811364474, + -4.507028643015006 + ], + [ + 36.345689243394176, + -4.507033416256245 + ], + [ + 36.345624675790724, + -4.507038189468891 + ], + [ + 36.34556010855989, + -4.507042962653162 + ], + [ + 36.345495541692664, + -4.507047735808647 + ], + [ + 36.34543097520324, + -4.507052508935836 + ], + [ + 36.34536640908019, + -4.507057282034429 + ], + [ + 36.3453018433281, + -4.507062055104519 + ], + [ + 36.34523727794001, + -4.507066828145977 + ], + [ + 36.34517271292278, + -4.507071601158971 + ], + [ + 36.345108148280815, + -4.507076374143332 + ], + [ + 36.34504358400476, + -4.507081147099373 + ], + [ + 36.34497902009648, + -4.507085920026697 + ], + [ + 36.344914456565256, + -4.5070906929257415 + ], + [ + 36.34484989339658, + -4.507095465796012 + ], + [ + 36.344785330599606, + -4.507100238637878 + ], + [ + 36.3447207681728, + -4.507105011451204 + ], + [ + 36.34465620611636, + -4.50710978423603 + ], + [ + 36.34459164442842, + -4.507114556992391 + ], + [ + 36.3445270831104, + -4.507119329720138 + ], + [ + 36.34446252216359, + -4.5071241024192945 + ], + [ + 36.3443979615825, + -4.507128875089979 + ], + [ + 36.34433340137407, + -4.507133647732187 + ], + [ + 36.34426884153685, + -4.507138420345907 + ], + [ + 36.34420428206477, + -4.507143192930901 + ], + [ + 36.344139722966574, + -4.5071479654876345 + ], + [ + 36.34407516423311, + -4.5071527380156455 + ], + [ + 36.34401060587233, + -4.507157510515352 + ], + [ + 36.343946047882696, + -4.507162282986406 + ], + [ + 36.34388149026111, + -4.5071670554288294 + ], + [ + 36.34381693300888, + -4.507171827842894 + ], + [ + 36.34375237612856, + -4.507176600228481 + ], + [ + 36.34368781961426, + -4.507181372585385 + ], + [ + 36.34362326347221, + -4.507186144913883 + ], + [ + 36.34355870769533, + -4.5071909172137925 + ], + [ + 36.34349415229708, + -4.507195689485327 + ], + [ + 36.343429597261206, + -4.507200461728211 + ], + [ + 36.34336504259508, + -4.507205233942546 + ], + [ + 36.34330048830069, + -4.50721000612847 + ], + [ + 36.34323593437318, + -4.507214778285656 + ], + [ + 36.343171380821396, + -4.5072195504146455 + ], + [ + 36.34310682763273, + -4.507224322515063 + ], + [ + 36.34304227481472, + -4.507229094586729 + ], + [ + 36.342977722367365, + -4.507233866629992 + ], + [ + 36.342913170291936, + -4.50723863864471 + ], + [ + 36.34284861858413, + -4.507243410630929 + ], + [ + 36.34278406724859, + -4.5072481825888175 + ], + [ + 36.342719516279296, + -4.507252954518057 + ], + [ + 36.34265496567835, + -4.507257726418749 + ], + [ + 36.342590415452776, + -4.50726249829088 + ], + [ + 36.342525865591924, + -4.507267270134578 + ], + [ + 36.34246131610242, + -4.507272041949743 + ], + [ + 36.342396766982645, + -4.507276813736495 + ], + [ + 36.342332218231604, + -4.5072815854945185 + ], + [ + 36.34226766985131, + -4.507286357224222 + ], + [ + 36.34220312183767, + -4.507291128925228 + ], + [ + 36.34213857419854, + -4.507295900597936 + ], + [ + 36.34207402692494, + -4.5073006722420494 + ], + [ + 36.342009480019215, + -4.507305443857471 + ], + [ + 36.341944933486594, + -4.507310215444578 + ], + [ + 36.34188038732665, + -4.507314987003202 + ], + [ + 36.3418158415316, + -4.5073197585332325 + ], + [ + 36.341751296104505, + -4.507324530034732 + ], + [ + 36.34168675105109, + -4.5073293015076965 + ], + [ + 36.34162220636639, + -4.507334072952348 + ], + [ + 36.34155766204918, + -4.507338844368285 + ], + [ + 36.34149311810273, + -4.507343615755758 + ] + ] + }, + { + "image": "942308p", + "ext": 15, + "mjd_mid": 54357.5049470254, + "exptime": 300.04599, + "filter": "g.MP9401", + "found": false, + "accel": [ + 36.34508830153308, + -4.507881763001264 + ], + "grav": [ + 36.344131269660366, + -4.507925278486275 + ], + "motion": [ + -0.2692879437087144, + -0.5026738954043708 + ], + "locus": [ + [ + 36.348264078780055, + -4.50761980804735 + ], + [ + 36.348199491960884, + -4.507624581918276 + ], + [ + 36.34813490551321, + -4.507629355760747 + ], + [ + 36.34807031943339, + -4.507634129574522 + ], + [ + 36.34800573372787, + -4.5076389033599895 + ], + [ + 36.34794114838876, + -4.5076436771168575 + ], + [ + 36.3478765634198, + -4.507648450845144 + ], + [ + 36.3478119788219, + -4.507653224544864 + ], + [ + 36.347747394590215, + -4.507657998216077 + ], + [ + 36.34768281073303, + -4.507662771858812 + ], + [ + 36.347618227241455, + -4.50766754547299 + ], + [ + 36.347553644125334, + -4.507672319058701 + ], + [ + 36.34748906137143, + -4.507677092615662 + ], + [ + 36.3474244789959, + -4.507681866144412 + ], + [ + 36.347359896981246, + -4.507686639644331 + ], + [ + 36.347295315339075, + -4.507691413115804 + ], + [ + 36.34723073407405, + -4.507696186558814 + ], + [ + 36.34716615316932, + -4.507700959973159 + ], + [ + 36.34710157263698, + -4.507705733359024 + ], + [ + 36.34703699247526, + -4.507710506716363 + ], + [ + 36.34697241268107, + -4.507715280045157 + ], + [ + 36.34690783325948, + -4.507720053345471 + ], + [ + 36.34684325420999, + -4.507724826617303 + ], + [ + 36.34677867552502, + -4.507729599860469 + ], + [ + 36.34671409720858, + -4.50773437307515 + ], + [ + 36.34664951926423, + -4.507739146261299 + ], + [ + 36.34658494169308, + -4.507743919419008 + ], + [ + 36.34652036449385, + -4.507748692548238 + ], + [ + 36.34645578765445, + -4.507753465648635 + ], + [ + 36.34639121119064, + -4.50775823872078 + ], + [ + 36.34632663509532, + -4.507763011764256 + ], + [ + 36.34626205937072, + -4.507767784779198 + ], + [ + 36.34619748401502, + -4.507772557765637 + ], + [ + 36.34613290902932, + -4.507777330723566 + ], + [ + 36.34606833441527, + -4.507782103653063 + ], + [ + 36.34600376016702, + -4.507786876553848 + ], + [ + 36.34593918629334, + -4.50779164942621 + ], + [ + 36.34587461278689, + -4.507796422269981 + ], + [ + 36.34581003964938, + -4.507801195085396 + ], + [ + 36.34574546687896, + -4.507805967871999 + ], + [ + 36.3456808944841, + -4.5078107406303305 + ], + [ + 36.345616322454404, + -4.507815513359907 + ], + [ + 36.3455517507958, + -4.507820286061161 + ], + [ + 36.345487179510066, + -4.507825058733988 + ], + [ + 36.34542260859122, + -4.507829831378045 + ], + [ + 36.34535803803927, + -4.507834603993629 + ], + [ + 36.34529346785778, + -4.507839376580625 + ], + [ + 36.345228898049726, + -4.507844149139211 + ], + [ + 36.345164328608526, + -4.507848921669206 + ], + [ + 36.34509975953996, + -4.50785369417083 + ], + [ + 36.34503519083503, + -4.507858466643673 + ], + [ + 36.344970622507915, + -4.507863239088222 + ], + [ + 36.34490605454719, + -4.507868011504181 + ], + [ + 36.34484148695744, + -4.507872783891639 + ], + [ + 36.34477691973172, + -4.507877556250468 + ], + [ + 36.344712352876876, + -4.507882328580839 + ], + [ + 36.34464778639731, + -4.507887100882579 + ], + [ + 36.34458322028367, + -4.507891873156003 + ], + [ + 36.34451865453782, + -4.507896645400716 + ], + [ + 36.34445408916905, + -4.50790141761715 + ], + [ + 36.34438952416284, + -4.507906189804817 + ], + [ + 36.34432495952836, + -4.50791096196408 + ], + [ + 36.34426039526405, + -4.50791573409481 + ], + [ + 36.34419583137013, + -4.507920506197043 + ], + [ + 36.34413126784474, + -4.507925278270813 + ], + [ + 36.34406670468926, + -4.507930050315973 + ], + [ + 36.34400214190504, + -4.507934822332546 + ], + [ + 36.34393757948653, + -4.507939594320651 + ], + [ + 36.343873017440714, + -4.507944366280284 + ], + [ + 36.34380845576612, + -4.507949138211434 + ], + [ + 36.343743894456686, + -4.5079539101138595 + ], + [ + 36.34367933352115, + -4.507958681988029 + ], + [ + 36.34361477295036, + -4.507963453833481 + ], + [ + 36.34355021275228, + -4.507968225650632 + ], + [ + 36.34348565292535, + -4.507972997439131 + ], + [ + 36.34342109346651, + -4.507977769199006 + ], + [ + 36.34335653437702, + -4.507982540930525 + ], + [ + 36.343291975659476, + -4.507987312633572 + ], + [ + 36.34322741730797, + -4.507992084307938 + ], + [ + 36.34316285932872, + -4.507996855953902 + ], + [ + 36.343098301714654, + -4.50800162757128 + ], + [ + 36.34303374447925, + -4.508006399160291 + ], + [ + 36.34296918760622, + -4.508011170720652 + ], + [ + 36.34290463110296, + -4.508015942252468 + ], + [ + 36.34284007497147, + -4.508020713755875 + ], + [ + 36.34277551920687, + -4.508025485230549 + ], + [ + 36.34271096381801, + -4.508030256677032 + ], + [ + 36.34264640879229, + -4.508035028094948 + ], + [ + 36.34258185413724, + -4.508039799484114 + ], + [ + 36.34251729985286, + -4.508044570844878 + ], + [ + 36.34245274594043, + -4.508049342177103 + ], + [ + 36.34238819239563, + -4.508054113480834 + ], + [ + 36.342323639223125, + -4.508058884756238 + ], + [ + 36.34225908641688, + -4.508063656002997 + ], + [ + 36.342194533979, + -4.508068427221211 + ], + [ + 36.342129981916514, + -4.5080731984108695 + ], + [ + 36.34206543021875, + -4.508077969572096 + ], + [ + 36.34200087889238, + -4.508082740704794 + ], + [ + 36.341936327935734, + -4.5080875118090855 + ], + [ + 36.34187177734784, + -4.508092282884649 + ], + [ + 36.34180722713073, + -4.508097053931898 + ], + [ + 36.34174267728027, + -4.508101824950452 + ], + [ + 36.34167812780436, + -4.508106595940714 + ], + [ + 36.34161357869398, + -4.508111366902382 + ], + [ + 36.341549029951494, + -4.508116137835364 + ], + [ + 36.34148448158213, + -4.508120908740035 + ], + [ + 36.341419933585456, + -4.508125679616227 + ], + [ + 36.341355385953705, + -4.508130450463829 + ], + [ + 36.34129083868993, + -4.508135221282904 + ], + [ + 36.34122629179984, + -4.508139992073446 + ], + [ + 36.34116174527849, + -4.5081447628356806 + ], + [ + 36.341097199124654, + -4.508149533569204 + ], + [ + 36.34103265334158, + -4.508154304274267 + ] + ] + }, + { + "image": "942308p", + "ext": 24, + "mjd_mid": 54357.5049470254, + "exptime": 300.04599, + "filter": "g.MP9401", + "found": false, + "accel": [ + 36.34508830153308, + -4.507881763001264 + ], + "grav": [ + 36.344131269660366, + -4.507925278486275 + ], + "motion": [ + -0.2692879437087144, + -0.5026738954043708 + ], + "locus": [ + [ + 36.348264078780055, + -4.50761980804735 + ], + [ + 36.348199491960884, + -4.507624581918276 + ], + [ + 36.34813490551321, + -4.507629355760747 + ], + [ + 36.34807031943339, + -4.507634129574522 + ], + [ + 36.34800573372787, + -4.5076389033599895 + ], + [ + 36.34794114838876, + -4.5076436771168575 + ], + [ + 36.3478765634198, + -4.507648450845144 + ], + [ + 36.3478119788219, + -4.507653224544864 + ], + [ + 36.347747394590215, + -4.507657998216077 + ], + [ + 36.34768281073303, + -4.507662771858812 + ], + [ + 36.347618227241455, + -4.50766754547299 + ], + [ + 36.347553644125334, + -4.507672319058701 + ], + [ + 36.34748906137143, + -4.507677092615662 + ], + [ + 36.3474244789959, + -4.507681866144412 + ], + [ + 36.347359896981246, + -4.507686639644331 + ], + [ + 36.347295315339075, + -4.507691413115804 + ], + [ + 36.34723073407405, + -4.507696186558814 + ], + [ + 36.34716615316932, + -4.507700959973159 + ], + [ + 36.34710157263698, + -4.507705733359024 + ], + [ + 36.34703699247526, + -4.507710506716363 + ], + [ + 36.34697241268107, + -4.507715280045157 + ], + [ + 36.34690783325948, + -4.507720053345471 + ], + [ + 36.34684325420999, + -4.507724826617303 + ], + [ + 36.34677867552502, + -4.507729599860469 + ], + [ + 36.34671409720858, + -4.50773437307515 + ], + [ + 36.34664951926423, + -4.507739146261299 + ], + [ + 36.34658494169308, + -4.507743919419008 + ], + [ + 36.34652036449385, + -4.507748692548238 + ], + [ + 36.34645578765445, + -4.507753465648635 + ], + [ + 36.34639121119064, + -4.50775823872078 + ], + [ + 36.34632663509532, + -4.507763011764256 + ], + [ + 36.34626205937072, + -4.507767784779198 + ], + [ + 36.34619748401502, + -4.507772557765637 + ], + [ + 36.34613290902932, + -4.507777330723566 + ], + [ + 36.34606833441527, + -4.507782103653063 + ], + [ + 36.34600376016702, + -4.507786876553848 + ], + [ + 36.34593918629334, + -4.50779164942621 + ], + [ + 36.34587461278689, + -4.507796422269981 + ], + [ + 36.34581003964938, + -4.507801195085396 + ], + [ + 36.34574546687896, + -4.507805967871999 + ], + [ + 36.3456808944841, + -4.5078107406303305 + ], + [ + 36.345616322454404, + -4.507815513359907 + ], + [ + 36.3455517507958, + -4.507820286061161 + ], + [ + 36.345487179510066, + -4.507825058733988 + ], + [ + 36.34542260859122, + -4.507829831378045 + ], + [ + 36.34535803803927, + -4.507834603993629 + ], + [ + 36.34529346785778, + -4.507839376580625 + ], + [ + 36.345228898049726, + -4.507844149139211 + ], + [ + 36.345164328608526, + -4.507848921669206 + ], + [ + 36.34509975953996, + -4.50785369417083 + ], + [ + 36.34503519083503, + -4.507858466643673 + ], + [ + 36.344970622507915, + -4.507863239088222 + ], + [ + 36.34490605454719, + -4.507868011504181 + ], + [ + 36.34484148695744, + -4.507872783891639 + ], + [ + 36.34477691973172, + -4.507877556250468 + ], + [ + 36.344712352876876, + -4.507882328580839 + ], + [ + 36.34464778639731, + -4.507887100882579 + ], + [ + 36.34458322028367, + -4.507891873156003 + ], + [ + 36.34451865453782, + -4.507896645400716 + ], + [ + 36.34445408916905, + -4.50790141761715 + ], + [ + 36.34438952416284, + -4.507906189804817 + ], + [ + 36.34432495952836, + -4.50791096196408 + ], + [ + 36.34426039526405, + -4.50791573409481 + ], + [ + 36.34419583137013, + -4.507920506197043 + ], + [ + 36.34413126784474, + -4.507925278270813 + ], + [ + 36.34406670468926, + -4.507930050315973 + ], + [ + 36.34400214190504, + -4.507934822332546 + ], + [ + 36.34393757948653, + -4.507939594320651 + ], + [ + 36.343873017440714, + -4.507944366280284 + ], + [ + 36.34380845576612, + -4.507949138211434 + ], + [ + 36.343743894456686, + -4.5079539101138595 + ], + [ + 36.34367933352115, + -4.507958681988029 + ], + [ + 36.34361477295036, + -4.507963453833481 + ], + [ + 36.34355021275228, + -4.507968225650632 + ], + [ + 36.34348565292535, + -4.507972997439131 + ], + [ + 36.34342109346651, + -4.507977769199006 + ], + [ + 36.34335653437702, + -4.507982540930525 + ], + [ + 36.343291975659476, + -4.507987312633572 + ], + [ + 36.34322741730797, + -4.507992084307938 + ], + [ + 36.34316285932872, + -4.507996855953902 + ], + [ + 36.343098301714654, + -4.50800162757128 + ], + [ + 36.34303374447925, + -4.508006399160291 + ], + [ + 36.34296918760622, + -4.508011170720652 + ], + [ + 36.34290463110296, + -4.508015942252468 + ], + [ + 36.34284007497147, + -4.508020713755875 + ], + [ + 36.34277551920687, + -4.508025485230549 + ], + [ + 36.34271096381801, + -4.508030256677032 + ], + [ + 36.34264640879229, + -4.508035028094948 + ], + [ + 36.34258185413724, + -4.508039799484114 + ], + [ + 36.34251729985286, + -4.508044570844878 + ], + [ + 36.34245274594043, + -4.508049342177103 + ], + [ + 36.34238819239563, + -4.508054113480834 + ], + [ + 36.342323639223125, + -4.508058884756238 + ], + [ + 36.34225908641688, + -4.508063656002997 + ], + [ + 36.342194533979, + -4.508068427221211 + ], + [ + 36.342129981916514, + -4.5080731984108695 + ], + [ + 36.34206543021875, + -4.508077969572096 + ], + [ + 36.34200087889238, + -4.508082740704794 + ], + [ + 36.341936327935734, + -4.5080875118090855 + ], + [ + 36.34187177734784, + -4.508092282884649 + ], + [ + 36.34180722713073, + -4.508097053931898 + ], + [ + 36.34174267728027, + -4.508101824950452 + ], + [ + 36.34167812780436, + -4.508106595940714 + ], + [ + 36.34161357869398, + -4.508111366902382 + ], + [ + 36.341549029951494, + -4.508116137835364 + ], + [ + 36.34148448158213, + -4.508120908740035 + ], + [ + 36.341419933585456, + -4.508125679616227 + ], + [ + 36.341355385953705, + -4.508130450463829 + ], + [ + 36.34129083868993, + -4.508135221282904 + ], + [ + 36.34122629179984, + -4.508139992073446 + ], + [ + 36.34116174527849, + -4.5081447628356806 + ], + [ + 36.341097199124654, + -4.508149533569204 + ], + [ + 36.34103265334158, + -4.508154304274267 + ] + ] + }, + { + "image": "942309p", + "ext": 15, + "mjd_mid": 54357.508976330944, + "exptime": 300.0499878, + "filter": "g.MP9401", + "found": true, + "accel": [ + 36.344627622247785, + -4.508692538285612 + ], + "grav": [ + 36.34367056309738, + -4.508736043064734 + ], + "motion": [ + -0.2693554502944597, + -0.5027037174308191 + ], + "locus": [ + [ + 36.347803489791126, + -4.50843061633302 + ], + [ + 36.347738901134306, + -4.508435389520902 + ], + [ + 36.347674312849, + -4.5084401626803325 + ], + [ + 36.34760972493157, + -4.508444935811073 + ], + [ + 36.347545137388444, + -4.508449708913505 + ], + [ + 36.347480550211756, + -4.508454481987345 + ], + [ + 36.34741596340524, + -4.508459255032607 + ], + [ + 36.347351376969804, + -4.508464028049304 + ], + [ + 36.34728679090058, + -4.5084688010375 + ], + [ + 36.347222205205895, + -4.508473573997223 + ], + [ + 36.347157619876825, + -4.5084783469283884 + ], + [ + 36.34709303492323, + -4.508483119831095 + ], + [ + 36.34702845033187, + -4.508487892705051 + ], + [ + 36.346963866118905, + -4.508492665550804 + ], + [ + 36.34689928226683, + -4.508497438367728 + ], + [ + 36.34683469878725, + -4.50850221115621 + ], + [ + 36.34677011568485, + -4.508506983916233 + ], + [ + 36.34670553294274, + -4.508511756647593 + ], + [ + 36.346640950573054, + -4.508516529350478 + ], + [ + 36.346576368574, + -4.508521302024842 + ], + [ + 36.3465117869425, + -4.508526074670662 + ], + [ + 36.34644720568361, + -4.508530847288007 + ], + [ + 36.346382624796846, + -4.508535619876875 + ], + [ + 36.346318044274604, + -4.508540392437078 + ], + [ + 36.34625346412092, + -4.508545164968803 + ], + [ + 36.34618888433934, + -4.508549937471998 + ], + [ + 36.34612430493099, + -4.508554709946758 + ], + [ + 36.34605972589456, + -4.50855948239304 + ], + [ + 36.345995147217984, + -4.508564254810495 + ], + [ + 36.34593056891702, + -4.508569027199701 + ], + [ + 36.345865990984564, + -4.508573799560242 + ], + [ + 36.34580141342284, + -4.508578571892255 + ], + [ + 36.34573683623004, + -4.508583344195766 + ], + [ + 36.34567225940725, + -4.508588116470771 + ], + [ + 36.34560768295612, + -4.508592888717348 + ], + [ + 36.34554310687082, + -4.508597660935218 + ], + [ + 36.34547853116012, + -4.508602433124666 + ], + [ + 36.34541395581665, + -4.5086072052855295 + ], + [ + 36.34534938084214, + -4.50861197741804 + ], + [ + 36.34528480623474, + -4.508616749521741 + ], + [ + 36.345220232002916, + -4.508621521597174 + ], + [ + 36.345155658136264, + -4.508626293643858 + ], + [ + 36.345091084640735, + -4.508631065662223 + ], + [ + 36.34502651151809, + -4.508635837652164 + ], + [ + 36.34496193876236, + -4.50864060961334 + ], + [ + 36.34489736637353, + -4.508645381546044 + ], + [ + 36.34483279435518, + -4.508650153450166 + ], + [ + 36.344768222710286, + -4.508654925325881 + ], + [ + 36.34470365143227, + -4.508659697173009 + ], + [ + 36.344639080526896, + -4.508664468991769 + ], + [ + 36.34457450998517, + -4.508669240781752 + ], + [ + 36.34450993982129, + -4.5086740125434455 + ], + [ + 36.344445370023806, + -4.508678784276552 + ], + [ + 36.34438080059733, + -4.508683555981162 + ], + [ + 36.34431623153489, + -4.508688327657146 + ], + [ + 36.344251662843355, + -4.5086930993046765 + ], + [ + 36.34418709452709, + -4.508697870923581 + ], + [ + 36.34412252657679, + -4.508702642514171 + ], + [ + 36.344057958994306, + -4.508707414076053 + ], + [ + 36.34399339178889, + -4.508712185609662 + ], + [ + 36.34392882494608, + -4.5087169571145065 + ], + [ + 36.343864258475, + -4.508721728590952 + ], + [ + 36.34379969237411, + -4.5087265000388665 + ], + [ + 36.343735126643644, + -4.508731271458288 + ], + [ + 36.3436705612817, + -4.508736042849253 + ], + [ + 36.3436059962897, + -4.508740814211608 + ], + [ + 36.34354143166897, + -4.508745585545382 + ], + [ + 36.343476867413976, + -4.508750356850692 + ], + [ + 36.34341230353169, + -4.508755128127532 + ], + [ + 36.34334774002065, + -4.508759899375895 + ], + [ + 36.34328317687477, + -4.508764670595536 + ], + [ + 36.343218614102824, + -4.508769441786925 + ], + [ + 36.34315405169562, + -4.5087742129496 + ], + [ + 36.34308948966116, + -4.5087789840839765 + ], + [ + 36.343024927997874, + -4.508783755189707 + ], + [ + 36.34296036670268, + -4.508788526266816 + ], + [ + 36.34289580577686, + -4.508793297315573 + ], + [ + 36.342831245223, + -4.508798068335863 + ], + [ + 36.3427666850352, + -4.5088028393274735 + ], + [ + 36.34270212521967, + -4.5088076102906856 + ], + [ + 36.342637565769344, + -4.508812381225319 + ], + [ + 36.3425730066977, + -4.508817152131585 + ], + [ + 36.342508447988436, + -4.508821923009206 + ], + [ + 36.34244388964898, + -4.508826693858287 + ], + [ + 36.3423793316813, + -4.508831464678965 + ], + [ + 36.34231477408053, + -4.508836235470911 + ], + [ + 36.342250216855504, + -4.508841006234668 + ], + [ + 36.34218565999365, + -4.508845776969862 + ], + [ + 36.342121103502485, + -4.508850547676312 + ], + [ + 36.34205654738199, + -4.508855318354365 + ], + [ + 36.341991991633485, + -4.50886008900388 + ], + [ + 36.34192743625262, + -4.508864859624905 + ], + [ + 36.34186288124406, + -4.508869630217607 + ], + [ + 36.34179832660179, + -4.508874400781668 + ], + [ + 36.34173377232789, + -4.508879171317188 + ], + [ + 36.341669218429416, + -4.5088839418241555 + ], + [ + 36.34160466489568, + -4.508888712302696 + ], + [ + 36.34154011173333, + -4.508893482752709 + ], + [ + 36.34147555894075, + -4.508898253174322 + ], + [ + 36.34141100651693, + -4.50890302356721 + ], + [ + 36.34134645446391, + -4.5089077939317885 + ], + [ + 36.34128190277757, + -4.508912564267674 + ], + [ + 36.34121735146576, + -4.508917334575272 + ], + [ + 36.34115280051953, + -4.508922104854279 + ], + [ + 36.341088249941215, + -4.508926875104606 + ], + [ + 36.341023699736034, + -4.508931645326622 + ], + [ + 36.340959149903554, + -4.508936415520163 + ], + [ + 36.340894600436016, + -4.5089411856851225 + ], + [ + 36.340830051336475, + -4.508945955821554 + ], + [ + 36.34076550261063, + -4.508950725929458 + ], + [ + 36.34070095425355, + -4.508955496009061 + ], + [ + 36.34063640626398, + -4.508960266059952 + ], + [ + 36.34057185864522, + -4.5089650360823885 + ] + ] + }, + { + "image": "942311p", + "ext": 24, + "mjd_mid": 54357.51703601856, + "exptime": 300.0440063, + "filter": "g.MP9401", + "found": true, + "accel": [ + 36.34370529081129, + -4.510314300743445 + ], + "grav": [ + 36.342748177143, + -4.510357784101003 + ], + "motion": [ + -0.2694904868438172, + -0.5027633433574152 + ], + "locus": [ + [ + 36.346881338823046, + -4.510052444829494 + ], + [ + 36.34681674649345, + -4.510057216650573 + ], + [ + 36.346752154535416, + -4.510061988443206 + ], + [ + 36.346687562945284, + -4.510066760207157 + ], + [ + 36.34662297172949, + -4.5100715319428115 + ], + [ + 36.34655838088019, + -4.5100763036498766 + ], + [ + 36.34649379040107, + -4.510081075328373 + ], + [ + 36.34642920029307, + -4.510085846978312 + ], + [ + 36.346364610551326, + -4.510090618599757 + ], + [ + 36.34630002118415, + -4.510095390192735 + ], + [ + 36.34623543218262, + -4.510100161757166 + ], + [ + 36.346170843556614, + -4.510104933293144 + ], + [ + 36.34610625529287, + -4.510109704800379 + ], + [ + 36.346041667407555, + -4.510114476279419 + ], + [ + 36.34597707988317, + -4.510119247729636 + ], + [ + 36.34591249273131, + -4.510124019151421 + ], + [ + 36.34584790595666, + -4.510128790544752 + ], + [ + 36.34578331954235, + -4.51013356190943 + ], + [ + 36.34571873350049, + -4.510138333245642 + ], + [ + 36.34565414782929, + -4.510143104553336 + ], + [ + 36.34558956252569, + -4.510147875832495 + ], + [ + 36.345524977594735, + -4.5101526470831885 + ], + [ + 36.34546039303594, + -4.510157418305411 + ], + [ + 36.34539580884171, + -4.510162189498976 + ], + [ + 36.34533122501606, + -4.510166960664071 + ], + [ + 36.34526664156255, + -4.510171731800641 + ], + [ + 36.34520205848231, + -4.510176502908787 + ], + [ + 36.345137475774024, + -4.510181273988462 + ], + [ + 36.34507289342563, + -4.510186045039317 + ], + [ + 36.34500831145288, + -4.510190816061931 + ], + [ + 36.34494372984867, + -4.510195587055886 + ], + [ + 36.344879148615234, + -4.510200358021321 + ], + [ + 36.344814567750745, + -4.510205128958263 + ], + [ + 36.344749987256314, + -4.5102098998667035 + ], + [ + 36.34468540713359, + -4.510214670746726 + ], + [ + 36.34462082737671, + -4.51021944159805 + ], + [ + 36.34455624799446, + -4.510224212420957 + ], + [ + 36.34449166897949, + -4.5102289832152875 + ], + [ + 36.34442709033351, + -4.510233753981274 + ], + [ + 36.34436251205467, + -4.510238524718458 + ], + [ + 36.34429793415145, + -4.510243295427383 + ], + [ + 36.34423335661344, + -4.510248066107565 + ], + [ + 36.34416877944658, + -4.510252836759434 + ], + [ + 36.34410420265265, + -4.510257607382885 + ], + [ + 36.34403962622565, + -4.510262377977582 + ], + [ + 36.343975050165604, + -4.510267148543814 + ], + [ + 36.34391047447607, + -4.510271919081471 + ], + [ + 36.34384589916002, + -4.510276689590729 + ], + [ + 36.34378132421089, + -4.5102814600714085 + ], + [ + 36.34371674963443, + -4.510286230523729 + ], + [ + 36.34365217542167, + -4.510291000947275 + ], + [ + 36.34358760158676, + -4.510295771342541 + ], + [ + 36.3435230281183, + -4.510300541709228 + ], + [ + 36.343458455020894, + -4.510305312047426 + ], + [ + 36.343393882287536, + -4.510310082357006 + ], + [ + 36.34332930992513, + -4.51031485263814 + ], + [ + 36.343264737938036, + -4.510319622890654 + ], + [ + 36.34320016631693, + -4.510324393114862 + ], + [ + 36.34313559506368, + -4.510329163310369 + ], + [ + 36.34307102418754, + -4.510333933477614 + ], + [ + 36.34300645367403, + -4.510338703616099 + ], + [ + 36.34294188353229, + -4.510343473726191 + ], + [ + 36.34287731376078, + -4.510348243807762 + ], + [ + 36.342812744359705, + -4.510353013860847 + ], + [ + 36.34274817532721, + -4.510357783885481 + ], + [ + 36.3426836066647, + -4.5103625538815155 + ], + [ + 36.342619038373485, + -4.510367323848977 + ], + [ + 36.342554470448036, + -4.510372093787978 + ], + [ + 36.34248990289533, + -4.51037686369852 + ], + [ + 36.34242533571391, + -4.51038163358059 + ], + [ + 36.34236076889769, + -4.510386403433948 + ], + [ + 36.34229620245544, + -4.510391173259061 + ], + [ + 36.34223163637796, + -4.5103959430554665 + ], + [ + 36.34216707067326, + -4.510400712823582 + ], + [ + 36.34210250533977, + -4.5104054825630575 + ], + [ + 36.34203794037441, + -4.510410252273921 + ], + [ + 36.34197337577846, + -4.5104150219564385 + ], + [ + 36.3419088115545, + -4.510419791610498 + ], + [ + 36.34184424769663, + -4.510424561235883 + ], + [ + 36.341779684211076, + -4.510429330832881 + ], + [ + 36.34171512109075, + -4.510434100401303 + ], + [ + 36.34165055834916, + -4.5104388699413684 + ], + [ + 36.34158599596998, + -4.510443639452797 + ], + [ + 36.34152143396063, + -4.510448408935692 + ], + [ + 36.34145687232309, + -4.51045317839019 + ], + [ + 36.341392311052495, + -4.510457947815963 + ], + [ + 36.341327750157696, + -4.510462717213559 + ], + [ + 36.3412631896261, + -4.510467486582597 + ], + [ + 36.34119862946521, + -4.510472255922897 + ], + [ + 36.34113406967506, + -4.510477025234809 + ], + [ + 36.3410695102569, + -4.510481794518189 + ], + [ + 36.341004951206436, + -4.51048656377309 + ], + [ + 36.34094039252831, + -4.510491332999673 + ], + [ + 36.3408758342165, + -4.510496102197623 + ], + [ + 36.3408112762731, + -4.510500871367039 + ], + [ + 36.340746718705155, + -4.51050564050791 + ], + [ + 36.34068216150198, + -4.510510409620362 + ], + [ + 36.34061760467025, + -4.5105151787042965 + ], + [ + 36.34055304820831, + -4.5105199477598354 + ], + [ + 36.340488492115156, + -4.510524716786657 + ], + [ + 36.34042393639285, + -4.510529485785176 + ], + [ + 36.34035938103725, + -4.510534254755012 + ], + [ + 36.34029482605623, + -4.510539023696565 + ], + [ + 36.34023027144082, + -4.510543792609537 + ], + [ + 36.340165717193344, + -4.510548561493835 + ], + [ + 36.34010116331905, + -4.510553330349831 + ], + [ + 36.34003660981749, + -4.510558099177362 + ], + [ + 36.339972056680914, + -4.5105628679763115 + ], + [ + 36.33990750391236, + -4.510567636746746 + ], + [ + 36.33984295151755, + -4.510572405488659 + ], + [ + 36.33977839949152, + -4.510577174202278 + ], + [ + 36.33971384783306, + -4.510581942887193 + ], + [ + 36.339649296545424, + -4.510586711543662 + ] + ] + }, + { + "image": "942312p", + "ext": 24, + "mjd_mid": 54357.52106410293, + "exptime": 300.0369873, + "filter": "g.MP9401", + "found": true, + "accel": [ + 36.34324393437025, + -4.511124824974843 + ], + "grav": [ + 36.34228679347696, + -4.511168297622878 + ], + "motion": [ + -0.26955797750460686, + -0.502793130189616 + ], + "locus": [ + [ + 36.34642007250377, + -4.510863002079242 + ], + [ + 36.34635547834008, + -4.510867773216953 + ], + [ + 36.34629088454796, + -4.510872544326222 + ], + [ + 36.34622629112377, + -4.510877315406815 + ], + [ + 36.346161698073935, + -4.510882086459113 + ], + [ + 36.3460971053906, + -4.510886857482826 + ], + [ + 36.34603251307747, + -4.5108916284779745 + ], + [ + 36.34596792113548, + -4.51089639944457 + ], + [ + 36.34590332955976, + -4.510901170382674 + ], + [ + 36.34583873835863, + -4.510905941292315 + ], + [ + 36.345774147523166, + -4.5109107121734136 + ], + [ + 36.34570955706323, + -4.510915483026062 + ], + [ + 36.34564496696558, + -4.510920253849971 + ], + [ + 36.34558037724638, + -4.510925024645689 + ], + [ + 36.345515787888125, + -4.51092979541259 + ], + [ + 36.34545119890241, + -4.510934566151058 + ], + [ + 36.34538661029393, + -4.510939336861081 + ], + [ + 36.345322022045806, + -4.510944107542453 + ], + [ + 36.34525743417014, + -4.510948878195358 + ], + [ + 36.345192846665185, + -4.510953648819755 + ], + [ + 36.345128259527804, + -4.51095841941562 + ], + [ + 36.345063672763104, + -4.51096318998302 + ], + [ + 36.34499908637058, + -4.510967960521955 + ], + [ + 36.34493450034264, + -4.510972731032237 + ], + [ + 36.3448699146833, + -4.510977501514049 + ], + [ + 36.34480532939612, + -4.510982271967346 + ], + [ + 36.3447407444822, + -4.510987042392219 + ], + [ + 36.34467615994028, + -4.510991812788624 + ], + [ + 36.34461157575827, + -4.5109965831562135 + ], + [ + 36.34454699195191, + -4.511001353495565 + ], + [ + 36.34448240851411, + -4.511006123806264 + ], + [ + 36.3444178254471, + -4.511010894088443 + ], + [ + 36.344353242749065, + -4.511015664342134 + ], + [ + 36.34428866042111, + -4.511020434567333 + ], + [ + 36.344224078464855, + -4.51102520476411 + ], + [ + 36.344159496874475, + -4.511029974932193 + ], + [ + 36.34409491565875, + -4.511034745071869 + ], + [ + 36.34403033481031, + -4.511039515182967 + ], + [ + 36.343965754330874, + -4.511044285265724 + ], + [ + 36.34390117421862, + -4.5110490553196865 + ], + [ + 36.343836594481985, + -4.51105382534539 + ], + [ + 36.343772015110574, + -4.511058595342354 + ], + [ + 36.34370743611034, + -4.511063365311012 + ], + [ + 36.34364285748305, + -4.511068135251255 + ], + [ + 36.343578279222704, + -4.511072905162746 + ], + [ + 36.34351370132933, + -4.511077675045779 + ], + [ + 36.343449123806494, + -4.511082444900238 + ], + [ + 36.34338454665715, + -4.5110872147263015 + ], + [ + 36.34331996987474, + -4.511091984523791 + ], + [ + 36.343255393465036, + -4.511096754292924 + ], + [ + 36.34319081741903, + -4.511101524033289 + ], + [ + 36.343126241750916, + -4.511106293745375 + ], + [ + 36.34306166644926, + -4.5111110634288885 + ], + [ + 36.34299709151866, + -4.511115833083916 + ], + [ + 36.342932516952146, + -4.511120602710328 + ], + [ + 36.342867942756584, + -4.511125372308299 + ], + [ + 36.34280336893635, + -4.511130141877652 + ], + [ + 36.342738795482134, + -4.511134911418704 + ], + [ + 36.34267422239578, + -4.511139680931059 + ], + [ + 36.342609649686565, + -4.511144450415156 + ], + [ + 36.34254507733999, + -4.511149219870494 + ], + [ + 36.34248050536521, + -4.511153989297448 + ], + [ + 36.342415933760684, + -4.51115875869588 + ], + [ + 36.3423513625266, + -4.511163528065833 + ], + [ + 36.34228679166111, + -4.511168297407336 + ], + [ + 36.34222222116563, + -4.511173066720244 + ], + [ + 36.342157651041454, + -4.511177836004585 + ], + [ + 36.34209308128308, + -4.511182605260468 + ], + [ + 36.342028511897446, + -4.511187374487894 + ], + [ + 36.341963942883126, + -4.511192143686854 + ], + [ + 36.34189937423402, + -4.511196912857104 + ], + [ + 36.34183480595889, + -4.511201681999114 + ], + [ + 36.34177023804857, + -4.511206451112419 + ], + [ + 36.34170567051103, + -4.511211220197438 + ], + [ + 36.34164110334473, + -4.511215989253824 + ], + [ + 36.34157653654657, + -4.511220758281597 + ], + [ + 36.34151197011784, + -4.511225527281032 + ], + [ + 36.341447404061114, + -4.511230296252008 + ], + [ + 36.3413828383705, + -4.511235065194318 + ], + [ + 36.341318273052224, + -4.511239834108242 + ], + [ + 36.34125370809919, + -4.511244602993594 + ], + [ + 36.341189143524886, + -4.511249371850594 + ], + [ + 36.34112457931304, + -4.511254140678961 + ], + [ + 36.34106001547104, + -4.511258909478798 + ], + [ + 36.34099545200087, + -4.511263678250241 + ], + [ + 36.34093088889765, + -4.511268446992966 + ], + [ + 36.34086632617024, + -4.511273215707512 + ], + [ + 36.340801763806056, + -4.511277984393507 + ], + [ + 36.34073720181261, + -4.511282753050768 + ], + [ + 36.34067264018989, + -4.511287521679642 + ], + [ + 36.340608078939205, + -4.511292290279993 + ], + [ + 36.34054351805622, + -4.511297058851864 + ], + [ + 36.34047895754559, + -4.511301827395424 + ], + [ + 36.3404143974013, + -4.511306595910352 + ], + [ + 36.34034983762543, + -4.51131136439675 + ], + [ + 36.340285278225046, + -4.511316132854609 + ], + [ + 36.340220719189446, + -4.511320901284052 + ], + [ + 36.340156160525304, + -4.511325669684981 + ], + [ + 36.34009160223095, + -4.511330438057516 + ], + [ + 36.34002704430544, + -4.511335206401341 + ], + [ + 36.339962486750764, + -4.511339974716867 + ], + [ + 36.339897929562824, + -4.51134474300371 + ], + [ + 36.33983337274948, + -4.511349511262278 + ], + [ + 36.33976881630176, + -4.5113542794922665 + ], + [ + 36.339704260222, + -4.511359047693585 + ], + [ + 36.33963970451544, + -4.511363815866606 + ], + [ + 36.33957514918163, + -4.511368584011163 + ], + [ + 36.33951059421281, + -4.511373352127144 + ], + [ + 36.339446039612035, + -4.511378120214616 + ], + [ + 36.33938148538502, + -4.51138288827357 + ], + [ + 36.33931693152681, + -4.511387656304229 + ], + [ + 36.339252378036186, + -4.511392424306194 + ], + [ + 36.33918782491641, + -4.511397192279713 + ] + ] + }, + { + "image": "942313p", + "ext": 24, + "mjd_mid": 54357.52509408561, + "exptime": 300.0379944, + "filter": "g.MP9401", + "found": true, + "accel": [ + 36.34278212098291, + -4.5119357286643655 + ], + "grav": [ + 36.34182495286623, + -4.5119791905955875 + ], + "motion": [ + -0.2696255008675644, + -0.5028229222624248 + ], + "locus": [ + [ + 36.34595834923273, + -4.511673938811544 + ], + [ + 36.34589375323505, + -4.511678709265393 + ], + [ + 36.34582915760897, + -4.511683479690804 + ], + [ + 36.345764562350816, + -4.511688250087542 + ], + [ + 36.345699967467056, + -4.511693020455987 + ], + [ + 36.34563537294979, + -4.511697790795853 + ], + [ + 36.34557077880277, + -4.511702561107158 + ], + [ + 36.3455061850269, + -4.511707331389911 + ], + [ + 36.34544159161732, + -4.511712101644181 + ], + [ + 36.345376998582346, + -4.511716871869989 + ], + [ + 36.345312405913056, + -4.5117216420672595 + ], + [ + 36.34524781361931, + -4.511726412236082 + ], + [ + 36.345183221687854, + -4.511731182376172 + ], + [ + 36.345118630134884, + -4.511735952488071 + ], + [ + 36.34505403894286, + -4.511740722571157 + ], + [ + 36.344989448123414, + -4.511745492625818 + ], + [ + 36.344924857681214, + -4.511750262652034 + ], + [ + 36.34486026759939, + -4.511755032649602 + ], + [ + 36.344795677890026, + -4.511759802618711 + ], + [ + 36.3447310885514, + -4.511764572559311 + ], + [ + 36.34466649958036, + -4.511769342471384 + ], + [ + 36.344601910982036, + -4.511774112354999 + ], + [ + 36.34453732275589, + -4.51177888221015 + ], + [ + 36.344472734894346, + -4.511783652036652 + ], + [ + 36.34440814740143, + -4.511788421834689 + ], + [ + 36.34434356028067, + -4.511793191604212 + ], + [ + 36.34427897353323, + -4.511797961345317 + ], + [ + 36.34421438715778, + -4.511802731057958 + ], + [ + 36.344149801142244, + -4.511807500741786 + ], + [ + 36.3440852155024, + -4.51181227039738 + ], + [ + 36.34402063023112, + -4.511817040024326 + ], + [ + 36.34395604533066, + -4.511821809622758 + ], + [ + 36.34389146079917, + -4.511826579192702 + ], + [ + 36.343826876637785, + -4.511831348734156 + ], + [ + 36.343762292848126, + -4.5118361182471975 + ], + [ + 36.343697709424355, + -4.511840887731546 + ], + [ + 36.34363312637526, + -4.5118456571874885 + ], + [ + 36.34356854369347, + -4.51185042661486 + ], + [ + 36.3435039613807, + -4.511855196013896 + ], + [ + 36.34343937943512, + -4.511859965384137 + ], + [ + 36.34337479786518, + -4.511864734726125 + ], + [ + 36.34331021666049, + -4.511869504039378 + ], + [ + 36.343245635826996, + -4.511874273324327 + ], + [ + 36.34318105536644, + -4.511879042580867 + ], + [ + 36.34311647527288, + -4.511883811808658 + ], + [ + 36.34305189554629, + -4.511888581007993 + ], + [ + 36.342987316190246, + -4.511893350178759 + ], + [ + 36.34292273720773, + -4.511898119321133 + ], + [ + 36.34285815859217, + -4.511902888434937 + ], + [ + 36.342793580349316, + -4.511907657520388 + ], + [ + 36.342729002470186, + -4.511912426577075 + ], + [ + 36.34266442496896, + -4.511917195605489 + ], + [ + 36.34259984783421, + -4.51192196460533 + ], + [ + 36.34253527107054, + -4.51192673357669 + ], + [ + 36.34247069467096, + -4.51193150251944 + ], + [ + 36.342406118642366, + -4.511936271433751 + ], + [ + 36.342341542989125, + -4.511941040319449 + ], + [ + 36.3422769677019, + -4.51194580917685 + ], + [ + 36.34221239278256, + -4.511950578005558 + ], + [ + 36.34214781824038, + -4.511955346806008 + ], + [ + 36.34208324406086, + -4.511960115577708 + ], + [ + 36.342018670253125, + -4.511964884321024 + ], + [ + 36.341954096815684, + -4.511969653035824 + ], + [ + 36.34188952374871, + -4.5119744217221465 + ], + [ + 36.34182495105034, + -4.511979190380026 + ], + [ + 36.34176037872199, + -4.511983959009313 + ], + [ + 36.34169580676498, + -4.511988727610034 + ], + [ + 36.34163123517377, + -4.511993496182304 + ], + [ + 36.341566663955334, + -4.51199826472612 + ], + [ + 36.34150209310822, + -4.512003033241473 + ], + [ + 36.34143752262634, + -4.51200780172812 + ], + [ + 36.34137295251845, + -4.512012570186531 + ], + [ + 36.34130838277539, + -4.512017338616241 + ], + [ + 36.34124381340513, + -4.512022107017669 + ], + [ + 36.34117924440613, + -4.5120268753904655 + ], + [ + 36.34111467577527, + -4.512031643734656 + ], + [ + 36.34105010751388, + -4.512036412050509 + ], + [ + 36.340985539624505, + -4.512041180337911 + ], + [ + 36.34092097210126, + -4.512045948596648 + ], + [ + 36.34085640495036, + -4.512050716827003 + ], + [ + 36.34079183816472, + -4.5120554850287915 + ], + [ + 36.34072727175785, + -4.512060253202229 + ], + [ + 36.340662705713434, + -4.512065021347038 + ], + [ + 36.340598140038885, + -4.512069789463323 + ], + [ + 36.34053357473618, + -4.512074557551215 + ], + [ + 36.34046900980045, + -4.512079325610392 + ], + [ + 36.34040444524056, + -4.5120840936413975 + ], + [ + 36.34033988104389, + -4.512088861643852 + ], + [ + 36.34027531721798, + -4.51209362961758 + ], + [ + 36.34021075376283, + -4.512098397562923 + ], + [ + 36.34014619067972, + -4.512103165479746 + ], + [ + 36.340081627964324, + -4.5121079333680925 + ], + [ + 36.34001706562131, + -4.512112701228133 + ], + [ + 36.339952503644646, + -4.512117469059545 + ], + [ + 36.33988794203643, + -4.5121222368624325 + ], + [ + 36.33982338080371, + -4.512127004636782 + ], + [ + 36.33975881993579, + -4.51213177238272 + ], + [ + 36.33969425943934, + -4.512136540100148 + ], + [ + 36.33962969931271, + -4.512141307789185 + ], + [ + 36.33956513955493, + -4.512146075449516 + ], + [ + 36.33950058016801, + -4.512150843081553 + ], + [ + 36.33943602114784, + -4.51215561068491 + ], + [ + 36.339371462502285, + -4.5121603782599955 + ], + [ + 36.33930690422237, + -4.512165145806505 + ], + [ + 36.339242346310435, + -4.51216991332435 + ], + [ + 36.3391777887717, + -4.5121746808138985 + ], + [ + 36.33911323160575, + -4.512179448274989 + ], + [ + 36.339048674804815, + -4.512184215707507 + ], + [ + 36.33898411837193, + -4.512188983111519 + ], + [ + 36.338919562312824, + -4.512193750487017 + ], + [ + 36.338855006622545, + -4.512198517834226 + ], + [ + 36.338790451299865, + -4.512203285152741 + ], + [ + 36.33872589634804, + -4.512208052442814 + ] + ] + }, + { + "image": "942329p", + "ext": 25, + "mjd_mid": 54357.62660626736, + "exptime": 120.043, + "filter": "r.MP9601", + "found": false, + "accel": [ + 36.33112030997352, + -4.532360716673036 + ], + "grav": [ + 36.330162460182635, + -4.532403907983284 + ], + "motion": [ + -0.2713256831845872, + -0.5035704551044518 + ], + "locus": [ + [ + 36.334298794705454, + -4.532099761846288 + ], + [ + 36.334234152785186, + -4.5321045150213894 + ], + [ + 36.33416951123695, + -4.532109268168148 + ], + [ + 36.33410487005708, + -4.532114021286327 + ], + [ + 36.33404022925205, + -4.532118774376315 + ], + [ + 36.33397558881396, + -4.5321235274378155 + ], + [ + 36.333910948746535, + -4.53212828047085 + ], + [ + 36.33384630905072, + -4.532133033475429 + ], + [ + 36.33378166972163, + -4.532137786451617 + ], + [ + 36.33371703076757, + -4.532142539399444 + ], + [ + 36.33365239217966, + -4.5321472923188235 + ], + [ + 36.333587753967734, + -4.532152045209856 + ], + [ + 36.333523116118535, + -4.532156798072247 + ], + [ + 36.33345847864826, + -4.532161550906546 + ], + [ + 36.33339384153937, + -4.532166303712124 + ], + [ + 36.3333292048035, + -4.532171056489372 + ], + [ + 36.333264568445315, + -4.532175809238274 + ], + [ + 36.33319993244795, + -4.532180561958621 + ], + [ + 36.333135296823485, + -4.5321853146506035 + ], + [ + 36.33307066157018, + -4.5321900673141755 + ], + [ + 36.33300602668494, + -4.532194819949313 + ], + [ + 36.33294139217282, + -4.532199572556089 + ], + [ + 36.33287675803334, + -4.532204325134498 + ], + [ + 36.3328121242589, + -4.532209077684349 + ], + [ + 36.332747490853514, + -4.532213830205831 + ], + [ + 36.33268285782076, + -4.5322185826988965 + ], + [ + 36.332618225161724, + -4.532223335163638 + ], + [ + 36.33255359287514, + -4.532228087600014 + ], + [ + 36.33248896094891, + -4.532232840007672 + ], + [ + 36.33242432939881, + -4.53223759238719 + ], + [ + 36.332359698217715, + -4.532242344738153 + ], + [ + 36.33229506740788, + -4.532247097060698 + ], + [ + 36.33223043696747, + -4.5322518493548545 + ], + [ + 36.33216580689758, + -4.532256601620613 + ], + [ + 36.33210117719988, + -4.532261353858055 + ], + [ + 36.3320365478685, + -4.532266106066898 + ], + [ + 36.33197191891223, + -4.5322708582474345 + ], + [ + 36.33190729032371, + -4.532275610399492 + ], + [ + 36.331842662104656, + -4.5322803625233075 + ], + [ + 36.33177803425322, + -4.532285114618426 + ], + [ + 36.33171340677788, + -4.532289866685388 + ], + [ + 36.33164877966822, + -4.532294618723708 + ], + [ + 36.33158415293019, + -4.532299370733821 + ], + [ + 36.331519526565565, + -4.53230412271562 + ], + [ + 36.33145490056835, + -4.532308874668763 + ], + [ + 36.331390274938556, + -4.532313626593547 + ], + [ + 36.33132564967975, + -4.5323183784898555 + ], + [ + 36.331261024794905, + -4.53232313035787 + ], + [ + 36.33119640027746, + -4.532327882197409 + ], + [ + 36.33113177613317, + -4.532332634008691 + ], + [ + 36.331067152353036, + -4.532337385791303 + ], + [ + 36.331002528951245, + -4.532342137545737 + ], + [ + 36.33093790591639, + -4.532346889271695 + ], + [ + 36.33087328325303, + -4.532351640969268 + ], + [ + 36.33080866095421, + -4.532356392638324 + ], + [ + 36.33074403902682, + -4.532361144279036 + ], + [ + 36.33067941747522, + -4.532365895891232 + ], + [ + 36.33061479629007, + -4.532370647475225 + ], + [ + 36.33055017547326, + -4.532375399030618 + ], + [ + 36.33048555503404, + -4.532380150557854 + ], + [ + 36.33042093495793, + -4.532384902056432 + ], + [ + 36.33035631525406, + -4.532389653526722 + ], + [ + 36.330291695920884, + -4.532394404968592 + ], + [ + 36.33022707695865, + -4.532399156382078 + ], + [ + 36.33016245836544, + -4.532403907767216 + ], + [ + 36.3300978401427, + -4.532408659123858 + ], + [ + 36.33003322229173, + -4.532413410452031 + ], + [ + 36.329968604807, + -4.532418161751844 + ], + [ + 36.3299039876955, + -4.532422913023301 + ], + [ + 36.329839370955746, + -4.5324276642663905 + ], + [ + 36.32977475458169, + -4.5324324154808675 + ], + [ + 36.329710138582044, + -4.532437166667204 + ], + [ + 36.32964552294768, + -4.532441917824936 + ], + [ + 36.329580907686555, + -4.532446668954481 + ], + [ + 36.32951629279711, + -4.532451420055491 + ], + [ + 36.32945167827628, + -4.53245617112799 + ], + [ + 36.329387064125335, + -4.532460922172244 + ], + [ + 36.32932245034686, + -4.532465673188144 + ], + [ + 36.329257836934936, + -4.5324704241754725 + ], + [ + 36.329193223895814, + -4.532475175134517 + ], + [ + 36.329128611222394, + -4.532479926065085 + ], + [ + 36.329063998928184, + -4.532484676967407 + ], + [ + 36.32899938699686, + -4.532489427841188 + ], + [ + 36.32893477543583, + -4.532494178686538 + ], + [ + 36.32887016424711, + -4.532498929503597 + ], + [ + 36.3288055534258, + -4.532503680292033 + ], + [ + 36.328740942980765, + -4.532508431052395 + ], + [ + 36.3286763328994, + -4.532513181784299 + ], + [ + 36.328611723189226, + -4.532517932487571 + ], + [ + 36.32854711385024, + -4.532522683162554 + ], + [ + 36.32848250488375, + -4.532527433809112 + ], + [ + 36.328417896285416, + -4.532532184427292 + ], + [ + 36.32835328805991, + -4.532536935017257 + ], + [ + 36.32828868020118, + -4.532541685578692 + ], + [ + 36.32822407271134, + -4.532546436111693 + ], + [ + 36.32815946559744, + -4.532551186616255 + ], + [ + 36.32809485884878, + -4.532555937092501 + ], + [ + 36.32803025247205, + -4.532560687540329 + ], + [ + 36.32796564646556, + -4.532565437959865 + ], + [ + 36.32790104082835, + -4.532570188350787 + ], + [ + 36.32783643556246, + -4.532574938713513 + ], + [ + 36.32777183066376, + -4.532579689047651 + ], + [ + 36.3277072261401, + -4.532584439353616 + ], + [ + 36.327642621982534, + -4.5325891896311 + ], + [ + 36.32757801819337, + -4.532593939880009 + ], + [ + 36.327513414777876, + -4.5325986901007225 + ], + [ + 36.32744881173559, + -4.532603440293072 + ], + [ + 36.32738420905875, + -4.532608190456944 + ], + [ + 36.32731960675041, + -4.532612940592404 + ], + [ + 36.3272550048163, + -4.532617690699445 + ], + [ + 36.32719040325145, + -4.532622440778295 + ], + [ + 36.327125802054624, + -4.532627190828541 + ], + [ + 36.32706120122911, + -4.532631940850445 + ] + ] + } + ], + "locus_at_zero_from_grav": [ + -6.515871381876553e-06, + 7.755907915907301e-07 + ], + "arcsec_per_1e-12": [ + -0.926800053487116, + -0.06872666326280807 + ] +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/neowise.json b/papers/dark_comet/data/2016_TA56/neowise.json new file mode 100644 index 0000000000000000000000000000000000000000..241cee6d2eb189a0625ca9339cd4bee93611fdd9 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/neowise.json @@ -0,0 +1,761 @@ +[ + { + "mpc": { + "jd_utc": 2457740.07152, + "ra": 28.356749999999998, + "dec": -35.17758333333333, + "site": "C51", + "mag": "20", + "band": "R", + "sat_km": [ + 5088.404, + 1838.4945, + -4229.379 + ] + }, + "neowise": { + "ra": "28.3567502", + "dec": "-35.1775815", + "mjd": "57739.57151698", + "w1mpro": "16.629", + "w1sigmpro": "", + "w1snr": "0.9", + "w2mpro": "14.016", + "w2sigmpro": "0.149", + "w2snr": "7.3", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "UB", + "nb": "1" + }, + "r": 1.623484622318, + "delta": 1.12702453772248, + "alpha": 36.6015 + }, + { + "mpc": { + "jd_utc": 2457740.07164, + "ra": 28.356583333333333, + "dec": -35.177388888888885, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5140.5832, + 1842.603, + -4163.9474 + ] + }, + "neowise": { + "ra": "28.3567502", + "dec": "-35.1775815", + "mjd": "57739.57151698", + "w1mpro": "16.629", + "w1sigmpro": "", + "w1snr": "0.9", + "w2mpro": "14.016", + "w2sigmpro": "0.149", + "w2snr": "7.3", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "UB", + "nb": "1" + }, + "r": 1.623483212845, + "delta": 1.12702440492158, + "alpha": 36.6016 + }, + { + "mpc": { + "jd_utc": 2457740.20255, + "ra": 28.313708333333334, + "dec": -35.17402777777777, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5101.3768, + 1851.5776, + -4207.9882 + ] + }, + "neowise": { + "ra": "28.3108106", + "dec": "-35.1736614", + "mjd": "57739.70254796", + "w1mpro": "15.790", + "w1sigmpro": "0.162", + "w1snr": "6.7", + "w2mpro": "15.077", + "w2sigmpro": "0.537", + "w2snr": "2.0", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BC", + "nb": "1" + }, + "r": 1.621945250068, + "delta": 1.12688922703649, + "alpha": 36.6578 + }, + { + "mpc": { + "jd_utc": 2457740.53006, + "ra": 28.208041666666666, + "dec": -35.16469444444444, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5107.4262, + 1882.2507, + -4186.9998 + ] + }, + "neowise": { + "ra": "28.2080599", + "dec": "-35.1647017", + "mjd": "57740.03006174", + "w1mpro": "17.049", + "w1sigmpro": "", + "w1snr": "-0.3", + "w2mpro": "13.889", + "w2sigmpro": "0.164", + "w2snr": "6.6", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "UB", + "nb": "1" + }, + "r": 1.618094536323, + "delta": 1.12655017591137, + "alpha": 36.7983 + }, + { + "mpc": { + "jd_utc": 2457740.66109, + "ra": 28.16658333333333, + "dec": -35.15991666666667, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5120.3704, + 1895.4761, + -4165.1647 + ] + }, + "neowise": { + "ra": "28.1665996", + "dec": "-35.1599122", + "mjd": "57740.16109324", + "w1mpro": "17.199", + "w1sigmpro": "", + "w1snr": "-1.3", + "w2mpro": "14.074", + "w2sigmpro": "0.228", + "w2snr": "4.8", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "UB", + "nb": "1" + }, + "r": 1.616552725791, + "delta": 1.12641414699053, + "alpha": 36.8545 + }, + { + "mpc": { + "jd_utc": 2457740.72655, + "ra": 28.144791666666666, + "dec": -35.159055555555554, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5100.7812, + 1899.7975, + -4187.192 + ] + }, + "neowise": { + "ra": "28.1448028", + "dec": "-35.1590570", + "mjd": "57740.22654505", + "w1mpro": "16.448", + "w1sigmpro": "", + "w1snr": "1.7", + "w2mpro": "14.291", + "w2sigmpro": "0.220", + "w2snr": "4.9", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "UB", + "nb": "1" + }, + "r": 1.615782206605, + "delta": 1.12634610448557, + "alpha": 36.8826 + }, + { + "mpc": { + "jd_utc": 2457740.79212, + "ra": 28.124, + "dec": -35.156666666666666, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5132.9733, + 1908.7195, + -4143.5466 + ] + }, + "neowise": { + "ra": "28.1240003", + "dec": "-35.1566671", + "mjd": "57740.29212418", + "w1mpro": "15.705", + "w1sigmpro": "0.183", + "w1snr": "5.9", + "w2mpro": "14.054", + "w2sigmpro": "0.157", + "w2snr": "6.9", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "BB", + "nb": "1" + }, + "r": 1.615010218188, + "delta": 1.12627787819786, + "alpha": 36.9107 + }, + { + "mpc": { + "jd_utc": 2457740.92303, + "ra": 28.082291666666666, + "dec": -35.15236111111111, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5093.8842, + 1917.3031, + -4187.6258 + ] + }, + "neowise": { + "ra": "28.0822751", + "dec": "-35.1523655", + "mjd": "57740.42302784", + "w1mpro": "16.752", + "w1sigmpro": "0.386", + "w1snr": "2.8", + "w2mpro": "13.947", + "w2sigmpro": "0.159", + "w2snr": "6.8", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "CB", + "nb": "1" + }, + "r": 1.61346842698, + "delta": 1.1261414864433, + "alpha": 36.9667 + }, + { + "mpc": { + "jd_utc": 2457740.92316, + "ra": 28.082124999999998, + "dec": -35.15263888888889, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5145.4915, + 1922.0022, + -4121.8208 + ] + }, + "neowise": { + "ra": "28.0822751", + "dec": "-35.1523655", + "mjd": "57740.42302784", + "w1mpro": "16.752", + "w1sigmpro": "0.386", + "w1snr": "2.8", + "w2mpro": "13.947", + "w2sigmpro": "0.159", + "w2snr": "6.8", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "CB", + "nb": "1" + }, + "r": 1.613466895565, + "delta": 1.12614134328919, + "alpha": 36.9668 + }, + { + "mpc": { + "jd_utc": 2457741.05406, + "ra": 28.041, + "dec": -35.14805555555556, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 5106.517, + 1930.5954, + -4166.0735 + ] + }, + "neowise": { + "ra": "28.0409852", + "dec": "-35.1480524", + "mjd": "57740.55405873", + "w1mpro": "16.332", + "w1sigmpro": "", + "w1snr": "1.6", + "w2mpro": "13.736", + "w2sigmpro": "0.118", + "w2snr": "9.2", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "UB", + "nb": "1" + }, + "r": 1.611924525444, + "delta": 1.12600469000857, + "alpha": 37.0228 + }, + { + "mpc": { + "jd_utc": 2457907.68019, + "ra": 324.17645833333336, + "dec": 36.721333333333334, + "site": "C51", + "mag": "18", + "band": "R", + "sat_km": [ + 4539.5742, + 803.2645, + 5073.7415 + ] + }, + "neowise": { + "ra": "324.1750709", + "dec": "36.7238945", + "mjd": "57907.18019252", + "w1mpro": "14.700", + "w1sigmpro": "0.144", + "w1snr": "7.5", + "w2mpro": "14.890", + "w2sigmpro": "0.350", + "w2snr": "3.1", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BB", + "nb": "1" + }, + "r": 1.389107999605, + "delta": 0.96032483334405, + "alpha": 46.9001 + }, + { + "mpc": { + "jd_utc": 2457907.8111, + "ra": 324.1349166666667, + "dec": 36.72925, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4513.5334, + 815.59, + 5094.9209 + ] + }, + "neowise": { + "ra": "324.1349267", + "dec": "36.7292406", + "mjd": "57907.31109579", + "w1mpro": "15.569", + "w1sigmpro": "0.155", + "w1snr": "7.0", + "w2mpro": "12.857", + "w2sigmpro": "0.061", + "w2snr": "17.7", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BA", + "nb": "2" + }, + "r": 1.390747232999, + "delta": 0.96072326814695, + "alpha": 46.8302 + }, + { + "mpc": { + "jd_utc": 2457907.942, + "ra": 324.09312500000004, + "dec": 36.73675, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4487.4248, + 827.7774, + 5115.9321 + ] + }, + "neowise": { + "ra": "324.0931253", + "dec": "36.7367403", + "mjd": "57907.44199913", + "w1mpro": "15.970", + "w1sigmpro": "0.230", + "w1snr": "4.7", + "w2mpro": "12.646", + "w2sigmpro": "0.112", + "w2snr": "9.7", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BB", + "nb": "1" + }, + "r": 1.392385674292, + "delta": 0.96112019856188, + "alpha": 46.7605 + }, + { + "mpc": { + "jd_utc": 2457908.00745, + "ra": 324.07216666666665, + "dec": 36.74080555555555, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4474.3043, + 833.823, + 5126.4148 + ] + }, + "neowise": { + "ra": "324.0715406", + "dec": "36.7437620", + "mjd": "57907.50745076", + "w1mpro": "15.896", + "w1sigmpro": "0.336", + "w1snr": "3.2", + "w2mpro": "15.282", + "w2sigmpro": "", + "w2snr": "-0.6", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BU", + "nb": "1" + }, + "r": 1.393204644643, + "delta": 0.96131811321854, + "alpha": 46.7256 + }, + { + "mpc": { + "jd_utc": 2457908.0729, + "ra": 324.051375, + "dec": 36.74444444444445, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4461.1771, + 839.8321, + 5136.8398 + ] + }, + "neowise": { + "ra": "324.0513816", + "dec": "36.7444327", + "mjd": "57907.57290244", + "w1mpro": "15.923", + "w1sigmpro": "0.212", + "w1snr": "5.1", + "w2mpro": "12.757", + "w2sigmpro": "0.082", + "w2snr": "13.2", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "BA", + "nb": "1" + }, + "r": 1.394023448008, + "delta": 0.96151566307482, + "alpha": 46.6907 + }, + { + "mpc": { + "jd_utc": 2457908.13835, + "ra": 324.0304583333334, + "dec": 36.748555555555555, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4448.3094, + 845.787, + 5146.9958 + ] + }, + "neowise": { + "ra": "324.0303252", + "dec": "36.7485087", + "mjd": "57907.63848205", + "w1mpro": "16.543", + "w1sigmpro": "0.427", + "w1snr": "2.5", + "w2mpro": "13.007", + "w2sigmpro": "0.066", + "w2snr": "16.5", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "CA", + "nb": "1" + }, + "r": 1.394842084298, + "delta": 0.96171284980122, + "alpha": 46.6559 + }, + { + "mpc": { + "jd_utc": 2457908.13848, + "ra": 324.0303333333334, + "dec": 36.7485, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4511.8199, + 841.1053, + 5092.3623 + ] + }, + "neowise": { + "ra": "324.0303252", + "dec": "36.7485087", + "mjd": "57907.63848205", + "w1mpro": "16.543", + "w1sigmpro": "0.427", + "w1snr": "2.5", + "w2mpro": "13.007", + "w2sigmpro": "0.066", + "w2snr": "16.5", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "CA", + "nb": "1" + }, + "r": 1.394843710153, + "delta": 0.96171316798381, + "alpha": 46.6558 + }, + { + "mpc": { + "jd_utc": 2457908.26939, + "ra": 323.9880833333333, + "dec": 36.756083333333336, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4485.6876, + 853.1498, + 5113.3596 + ] + }, + "neowise": { + "ra": "323.9881002", + "dec": "36.7560800", + "mjd": "57907.76938540", + "w1mpro": "16.359", + "w1sigmpro": "0.318", + "w1snr": "3.4", + "w2mpro": "13.177", + "w2sigmpro": "0.093", + "w2snr": "11.6", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BA", + "nb": "1" + }, + "r": 1.396480605501, + "delta": 0.96210648013096, + "alpha": 46.5862 + }, + { + "mpc": { + "jd_utc": 2457908.334837, + "ra": 323.96709166666665, + "dec": 36.75976111111111, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4472.5743, + 859.1215, + 5123.8089 + ] + }, + "neowise": { + "ra": "323.9670901", + "dec": "36.7597603", + "mjd": "57907.83483708", + "w1mpro": "15.359", + "w1sigmpro": "0.139", + "w1snr": "7.8", + "w2mpro": "12.796", + "w2sigmpro": "0.060", + "w2snr": "18.2", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BA", + "nb": "1" + }, + "r": 1.397298702181, + "delta": 0.96230257858884, + "alpha": 46.5514 + }, + { + "mpc": { + "jd_utc": 2457908.400288, + "ra": 323.9462208333333, + "dec": 36.76343055555556, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4459.4625, + 865.0569, + 5134.2056 + ] + }, + "neowise": { + "ra": "323.9488434", + "dec": "36.7620103", + "mjd": "57907.90028880", + "w1mpro": "14.133", + "w1sigmpro": "0.057", + "w1snr": "18.9", + "w2mpro": "13.851", + "w2sigmpro": "0.129", + "w2snr": "8.4", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "AB", + "nb": "1" + }, + "r": 1.398116681436, + "delta": 0.96249833042056, + "alpha": 46.5166 + }, + { + "mpc": { + "jd_utc": 2457908.46574, + "ra": 323.9237083333333, + "dec": 36.76675, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4446.3023, + 870.9621, + 5144.602 + ] + }, + "neowise": { + "ra": "323.9234718", + "dec": "36.7643963", + "mjd": "57907.96574047", + "w1mpro": "12.093", + "w1sigmpro": "0.023", + "w1snr": "47.9", + "w2mpro": "12.318", + "w2sigmpro": "0.057", + "w2snr": "19.1", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "AA", + "nb": "2" + }, + "r": 1.398934505672, + "delta": 0.96269372992569, + "alpha": 46.4818 + }, + { + "mpc": { + "jd_utc": 2457908.66222, + "ra": 323.8610833333333, + "dec": 36.77811111111111, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4470.5587, + 884.4379, + 5121.3365 + ] + }, + "neowise": { + "ra": "323.8611027", + "dec": "36.7781060", + "mjd": "57908.16222292", + "w1mpro": "16.433", + "w1sigmpro": "0.336", + "w1snr": "3.2", + "w2mpro": "12.967", + "w2sigmpro": "0.089", + "w2snr": "12.2", + "qual_frame": "5", + "cc_flags": "0000", + "ph_qual": "BA", + "nb": "1" + }, + "r": 1.401388520676, + "delta": 0.96327811443735, + "alpha": 46.3775 + }, + { + "mpc": { + "jd_utc": 2457908.79313, + "ra": 323.81837499999995, + "dec": 36.78511111111111, + "site": "C51", + "mag": "", + "band": "", + "sat_km": [ + 4444.1916, + 896.1389, + 5142.1707 + ] + }, + "neowise": { + "ra": "323.8183919", + "dec": "36.7850983", + "mjd": "57908.29312617", + "w1mpro": "15.744", + "w1sigmpro": "0.169", + "w1snr": "6.4", + "w2mpro": "12.823", + "w2sigmpro": "0.068", + "w2snr": "15.9", + "qual_frame": "10", + "cc_flags": "0000", + "ph_qual": "BA", + "nb": "1" + }, + "r": 1.403022733598, + "delta": 0.96366577431055, + "alpha": 46.308 + } +] \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/neowise_detections.csv b/papers/dark_comet/data/2016_TA56/neowise_detections.csv new file mode 100644 index 0000000000000000000000000000000000000000..a7df57215b944cc96865a80743931ac16709b523 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/neowise_detections.csv @@ -0,0 +1,21 @@ +mjd,ra_deg,dec_deg,r_au,delta_au,phase_deg,w1mpro,w1sigmpro,w1snr,w2mpro,w2sigmpro,w2snr,qual_frame,cc_flags,ph_qual,nb,w2_in_fit,w2_note,w1_model_mag_eta1.4 +57739.571517,28.3567502,-35.1775815,1.6235,1.1270,36.6,16.629,,0.9,14.016,0.149,7.3,10,0000,UB,1,yes,used, +57739.702548,28.3108106,-35.1736614,1.6219,1.1269,36.7,15.790,0.162,6.7,15.077,0.537,2.0,5,0000,BC,1,no,S/N below 4,17.69 +57740.030062,28.2080599,-35.1647017,1.6181,1.1266,36.8,17.049,,-0.3,13.889,0.164,6.6,10,0000,UB,1,yes,used, +57740.161093,28.1665996,-35.1599122,1.6166,1.1264,36.9,17.199,,-1.3,14.074,0.228,4.8,10,0000,UB,1,yes,used, +57740.226545,28.1448028,-35.1590570,1.6158,1.1263,36.9,16.448,,1.7,14.291,0.220,4.9,10,0000,UB,1,yes,used, +57740.292124,28.1240003,-35.1566671,1.6150,1.1263,36.9,15.705,0.183,5.9,14.054,0.157,6.9,10,0000,BB,1,yes,used,17.67 +57740.423028,28.0822751,-35.1523655,1.6135,1.1261,37.0,16.752,0.386,2.8,13.947,0.159,6.8,10,0000,CB,1,yes,used, +57740.554059,28.0409852,-35.1480524,1.6119,1.1260,37.0,16.332,,1.6,13.736,0.118,9.2,10,0000,UB,1,yes,used, +57907.180193,324.1750709,36.7238945,1.3891,0.9603,46.9,14.700,0.144,7.5,14.890,0.350,3.1,5,0000,BB,1,no,S/N below 4,16.52 +57907.311096,324.1349267,36.7292406,1.3907,0.9607,46.8,15.569,0.155,7.0,12.857,0.061,17.7,5,0000,BA,2,yes,used,16.52 +57907.441999,324.0931253,36.7367403,1.3924,0.9611,46.8,15.970,0.230,4.7,12.646,0.112,9.7,5,0000,BB,1,yes,used,16.53 +57907.507451,324.0715406,36.7437620,1.3932,0.9613,46.7,15.896,0.336,3.2,15.282,,-0.6,5,0000,BU,1,no,S/N below 4, +57907.572902,324.0513816,36.7444327,1.3940,0.9615,46.7,15.923,0.212,5.1,12.757,0.082,13.2,10,0000,BA,1,yes,used,16.54 +57907.638482,324.0303252,36.7485087,1.3948,0.9617,46.7,16.543,0.427,2.5,13.007,0.066,16.5,10,0000,CA,1,yes,used, +57907.769385,323.9881002,36.7560800,1.3965,0.9621,46.6,16.359,0.318,3.4,13.177,0.093,11.6,5,0000,BA,1,yes,used, +57907.834837,323.9670901,36.7597603,1.3973,0.9623,46.6,15.359,0.139,7.8,12.796,0.060,18.2,5,0000,BA,1,yes,used,16.55 +57907.900289,323.9488434,36.7620103,1.3981,0.9625,46.5,14.133,0.057,18.9,13.851,0.129,8.4,5,0000,AB,1,no,set aside: differs from its apparition's median by more than 3 robust sd,16.56 +57907.965740,323.9234718,36.7643963,1.3989,0.9627,46.5,12.093,0.023,47.9,12.318,0.057,19.1,5,0000,AA,2,yes,used,16.56 +57908.162223,323.8611027,36.7781060,1.4014,0.9633,46.4,16.433,0.336,3.2,12.967,0.089,12.2,5,0000,BA,1,yes,used, +57908.293126,323.8183919,36.7850983,1.4030,0.9637,46.3,15.744,0.169,6.4,12.823,0.068,15.9,10,0000,BA,1,yes,used,16.58 diff --git a/papers/dark_comet/data/2016_TA56/obs80.txt b/papers/dark_comet/data/2016_TA56/obs80.txt new file mode 100644 index 0000000000000000000000000000000000000000..b00ffdc61b0f04fc2bb3ed65718b3893305c5ba1 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/obs80.txt @@ -0,0 +1,125 @@ +~16ZjK16T56A OC2007 09 14.47153202 25 23.74 -04 30 04.4 V~5HJn568 +~16Zj 3C2007 09 14.47424102 25 23.662-04 30 06.09 22.20GV~9pjoT14 +~16ZjK16T56A OC2007 09 14.47639402 25 23.60 -04 30 07.8 V~5HJn568 +~16Zj 3C2007 09 14.47966202 25 23.514-04 30 10.06 22.15GV~9pjoT14 +~16ZjK16T56A OC2007 09 14.48779302 25 23.29 -04 30 16.1 V~5HJn568 +~16Zj 3C2007 09 14.49052702 25 23.215-04 30 17.97 22.44GV~9pjoT14 +~16ZjK16T56A OC2007 09 14.49265502 25 23.17 -04 30 19.6 V~5HJn568 +~16Zj 3C2007 09 14.50118902 25 22.927-04 30 25.67 22.17GV~9pjoT14 +~16Zj 3C2007 09 14.51327802 25 22.591-04 30 34.52 22.34GV~9pjoT14 +~16Zj 3C2007 09 14.51730702 25 22.481-04 30 37.38 22.18GV~9pjoT14 +~16Zj 3C2007 09 14.52133602 25 22.369-04 30 40.29 22.28GV~9pjoT14 +~16Zj 3C2007 09 14.52538202 25 22.261-04 30 43.15 22.16GV~9pjoT14 +~16Zj 0C2016 10 07.55123803 37 11.506-16 02 35.71 21.66GV~9pjoF51 +~16Zj 0C2016 10 07.58673403 37 10.462-16 03 23.84 21.59GV~9pjoF51 +~16Zj 0C2016 10 10.52218003 35 41.218-17 10 49.42 21.21GV~9pjoF51 +~16Zj 0C2016 10 10.53481303 35 40.757-17 11 07.07 21.80GV~9pjoF51 +~16Zj 0C2016 10 10.54743903 35 40.296-17 11 24.74 21.56GV~9pjpF51 +~16Zj 0C2016 10 10.56006903 35 39.843-17 11 42.31 21.68GV~9pjpF51 +~16ZjK16T56A C2016 10 11.35882 03 35 12.16 -17 30 22.1 21.0 Ro~1zRY926 +~16ZjK16T56A C2016 10 11.37191 03 35 11.68 -17 30 41.0 20.9 Ro~1zRY926 +~16ZjK16T56A C2016 10 11.38500 03 35 11.16 -17 30 58.3 20.5 Ro~1zRY926 +~16ZjK16T56A KC2016 10 13.31950 03 33 57.62 -18 16 38.1 20.8 Ro~1zRY291 +~16ZjK16T56A KC2016 10 13.34053 03 33 56.76 -18 17 08.0 o~1zRY291 +~16ZjK16T56A KC2016 10 13.35710 03 33 56.03 -18 17 31.9 20.7 Ro~1zRY291 +~16ZjK16T56A HC2016 10 26.28861 03 21 46.51 -23 32 23.7 20.6 Vo~20Fy691 +~16ZjK16T56A HC2016 10 26.30285 03 21 45.41 -23 32 45.3 20.9 Vo~20Fy691 +~16ZjK16T56A HC2016 10 29.31725 03 17 55.00 -24 45 50.9 o~20rt691 +~16ZjK16T56A HC2016 10 29.32203 03 17 54.57 -24 45 57.0 o~20rt691 +~16ZjK16T56A HC2016 10 29.32679 03 17 54.22 -24 46 03.8 o~20rt691 +~16ZjK16T56A |C2016 11 09.30811 03 00 59.30 -28 55 00.7 21.2 Vu~21T1807 +~16ZjK16T56A |C2016 11 09.31248 03 00 58.85 -28 55 06.4 21.1 Vu~21T1807 +~16ZjK16T56A |C2016 11 09.31684 03 00 58.36 -28 55 11.6 21.0 Vu~21T1807 +~16ZjK16T56A |C2016 11 25.15480 02 31 21.92 -33 20 19.1 21.3 Vu~22Eq807 +~16ZjK16T56A |C2016 11 25.15819 02 31 21.53 -33 20 21.4 21.3 Vu~22Eq807 +~16ZjK16T56A |C2016 11 25.16142 02 31 21.13 -33 20 23.7 21.0 Vu~22Eq807 +~16ZjK16T56A |C2016 12 06.12772 02 11 00.11 -34 52 52.4 21.4 Vu~23Mf807 +~16ZjK16T56A |C2016 12 06.13065 02 10 59.77 -34 52 53.5 21.1 Vu~23Mf807 +~16ZjK16T56A |C2016 12 06.13348 02 10 59.48 -34 52 54.1 21.2 Vu~23Mf807 +~16ZjK16T56A S2016 12 17.57152 01 53 25.62 -35 10 39.3 20 RL~24DOC51 +~16ZjK16T56A s2016 12 17.57152 1 + 5088.4040 + 1838.4945 - 4229.3790 ~24DOC51 +~16ZjK16T56A S2016 12 17.57164 01 53 25.58 -35 10 38.6 L~24DOC51 +~16ZjK16T56A s2016 12 17.57164 1 + 5140.5832 + 1842.6030 - 4163.9474 ~24DOC51 +~16ZjK16T56A S2016 12 17.70255 01 53 15.29 -35 10 26.5 L~24DOC51 +~16ZjK16T56A s2016 12 17.70255 1 + 5101.3768 + 1851.5776 - 4207.9882 ~24DOC51 +~16ZjK16T56A S2016 12 18.03006 01 52 49.93 -35 09 52.9 L~24DOC51 +~16ZjK16T56A s2016 12 18.03006 1 + 5107.4262 + 1882.2507 - 4186.9998 ~24DOC51 +~16ZjK16T56A S2016 12 18.16109 01 52 39.98 -35 09 35.7 L~24DOC51 +~16ZjK16T56A s2016 12 18.16109 1 + 5120.3704 + 1895.4761 - 4165.1647 ~24DOC51 +~16ZjK16T56A S2016 12 18.22655 01 52 34.75 -35 09 32.6 L~24DOC51 +~16ZjK16T56A s2016 12 18.22655 1 + 5100.7812 + 1899.7975 - 4187.1920 ~24DOC51 +~16ZjK16T56A S2016 12 18.29212 01 52 29.76 -35 09 24.0 L~24DOC51 +~16ZjK16T56A s2016 12 18.29212 1 + 5132.9733 + 1908.7195 - 4143.5466 ~24DOC51 +~16ZjK16T56A S2016 12 18.42303 01 52 19.75 -35 09 08.5 L~24DOC51 +~16ZjK16T56A s2016 12 18.42303 1 + 5093.8842 + 1917.3031 - 4187.6258 ~24DOC51 +~16ZjK16T56A S2016 12 18.42316 01 52 19.71 -35 09 09.5 L~24DOC51 +~16ZjK16T56A s2016 12 18.42316 1 + 5145.4915 + 1922.0022 - 4121.8208 ~24DOC51 +~16ZjK16T56A S2016 12 18.55406 01 52 09.84 -35 08 53.0 L~24DOC51 +~16ZjK16T56A s2016 12 18.55406 1 + 5106.5170 + 1930.5954 - 4166.0735 ~24DOC51 +~16Zj 0C2016 12 23.21566601 46 45.458-34 54 26.09 21.46GV~9pjpF51 +~16Zj 0C2016 12 23.22493601 46 44.852-34 54 23.30 21.39GV~9pjpF51 +~16Zj 0C2016 12 23.23418601 46 44.240-34 54 21.38 21.62GV~9pjpF51 +~16Zj 0C2016 12 23.24342501 46 43.618-34 54 19.12 21.30GV~9pjpF51 +~16ZjK16T56A |C2017 01 09.04557 01 35 43.50 -32 52 27.3 21.8 Vu~25nu807 +~16ZjK16T56A |C2017 01 09.05018 01 35 43.39 -32 52 24.7 21.7 Vu~25nu807 +~16ZjK16T56A |C2017 01 09.05480 01 35 43.34 -32 52 21.5 21.5 Vu~25nu807 +~16ZjK16T56A |C2017 01 16.04936 01 34 50.11 -31 37 39.8 21.0 Vu~25nu807 +~16ZjK16T56A |C2017 01 16.05169 01 34 50.13 -31 37 38.1 20.8 Vu~25nu807 +~16ZjK16T56A |C2017 01 16.05392 01 34 50.13 -31 37 36.6 21.1 Vu~25nu807 +~16ZjK16T56A |C2017 01 28.03322 01 37 23.77 -29 03 32.7 20.4 Vu~26fz807 +~16ZjK16T56A |C2017 01 28.03695 01 37 23.88 -29 03 30.0 20.5 Vu~26fz807 +~16ZjK16T56A |C2017 01 28.04069 01 37 23.98 -29 03 26.8 20.5 Vu~26fz807 +~16ZjK16T56A HC2017 02 22.09814 01 48 51.47 -21 18 20.2 19.6 Ro~28Ex691 +~16ZjK16T56A HC2017 02 22.10039 01 48 51.50 -21 18 17.5 19.7 Ro~28Ex691 +~16ZjK16T56A C2017 04 19.47006 22 12 35.15 +29 35 57.6 19.5 Vq~2Y51G96 +~16ZjK16T56A C2017 04 19.47671 22 12 34.61 +29 36 05.3 20.0 Vq~2Y51G96 +~16ZjK16T56A C2017 04 19.48002 22 12 34.25 +29 36 11.0 19.5 Vq~2Y51G96 +~16ZjK16T56A C2017 04 30.45772 22 02 27.38 +32 10 01.9 20.8 Ro~2F8y926 +~16ZjK16T56A C2017 04 30.46461 22 02 27.13 +32 10 06.3 20.6 Ro~2F8y926 +~16ZjK16T56A C2017 04 30.47192 22 02 26.81 +32 10 11.2 20.1 Ro~2F8y926 +~16ZjK16T56A "C2017 05 13.36877821 55 11.99 +34 23 58.5 20.3 Rt~2Fae705 +~16ZjK16T56A "C2017 05 13.36979221 55 11.92 +34 23 58.6 20.3 Rt~2Fae705 +~16ZjK16T56A "C2017 05 13.37080421 55 11.91 +34 23 59.5 20.3 Rt~2Fae705 +~16ZjK16T56A S2017 06 03.18019 21 36 42.35 +36 43 16.8 18 RL~2GdsC51 +~16ZjK16T56A s2017 06 03.18019 1 + 4539.5742 + 803.2645 + 5073.7415 ~2GdsC51 +~16ZjK16T56A S2017 06 03.31110 21 36 32.38 +36 43 45.3 L~2GdsC51 +~16ZjK16T56A s2017 06 03.31110 1 + 4513.5334 + 815.5900 + 5094.9209 ~2GdsC51 +~16ZjK16T56A S2017 06 03.44200 21 36 22.35 +36 44 12.3 L~2GdsC51 +~16ZjK16T56A s2017 06 03.44200 1 + 4487.4248 + 827.7774 + 5115.9321 ~2GdsC51 +~16ZjK16T56A S2017 06 03.50745 21 36 17.32 +36 44 26.9 L~2GdsC51 +~16ZjK16T56A s2017 06 03.50745 1 + 4474.3043 + 833.8230 + 5126.4148 ~2GdsC51 +~16ZjK16T56A S2017 06 03.57290 21 36 12.33 +36 44 40.0 L~2GdsC51 +~16ZjK16T56A s2017 06 03.57290 1 + 4461.1771 + 839.8321 + 5136.8398 ~2GdsC51 +~16ZjK16T56A S2017 06 03.63835 21 36 07.31 +36 44 54.8 L~2GdsC51 +~16ZjK16T56A s2017 06 03.63835 1 + 4448.3094 + 845.7870 + 5146.9958 ~2GdsC51 +~16ZjK16T56A S2017 06 03.63848 21 36 07.28 +36 44 54.6 L~2GdsC51 +~16ZjK16T56A s2017 06 03.63848 1 + 4511.8199 + 841.1053 + 5092.3623 ~2GdsC51 +~16ZjK16T56A S2017 06 03.76939 21 35 57.14 +36 45 21.9 L~2GdsC51 +~16ZjK16T56A s2017 06 03.76939 1 + 4485.6876 + 853.1498 + 5113.3596 ~2GdsC51 +~16ZjK16T56A S2017 06 03.83483721 35 52.102+36 45 35.14 L~6Ep0C51 +~16ZjK16T56A s2017 06 03.8348371 + 4472.5743 + 859.1215 + 5123.8089 ~6Ep0C51 +~16ZjK16T56A S2017 06 03.90028821 35 47.093+36 45 48.35 L~6Ep0C51 +~16ZjK16T56A s2017 06 03.9002881 + 4459.4625 + 865.0569 + 5134.2056 ~6Ep0C51 +~16ZjK16T56A S2017 06 03.96574 21 35 41.69 +36 46 00.3 L~2GdsC51 +~16ZjK16T56A s2017 06 03.96574 1 + 4446.3023 + 870.9621 + 5144.6020 ~2GdsC51 +~16ZjK16T56A S2017 06 04.16222 21 35 26.66 +36 46 41.2 L~2GdsC51 +~16ZjK16T56A s2017 06 04.16222 1 + 4470.5587 + 884.4379 + 5121.3365 ~2GdsC51 +~16ZjK16T56A S2017 06 04.29313 21 35 16.41 +36 47 06.4 L~2GdsC51 +~16ZjK16T56A s2017 06 04.29313 1 + 4444.1916 + 896.1389 + 5142.1707 ~2GdsC51 +~16ZjK16T56A ^C2017 06 06.40753 21 32 25.86 +36 53 08.0 20.4 Ro~2Gds695 +~16ZjK16T56A ^C2017 06 06.41118 21 32 25.54 +36 53 08.7 20.7 Ro~2Gds695 +~16ZjK16T56A ^C2017 06 06.41484 21 32 25.22 +36 53 09.3 20.3 Ro~2Gds695 +~16ZjK16T56A ^C2017 06 14.32528 21 20 10.94 +36 58 17.5 19.3 Ro~2Gih695 +~16ZjK16T56A ^C2017 06 14.32956 21 20 10.50 +36 58 17.4 19.7 Ro~2Gih695 +~16ZjK16T56A ^C2017 06 14.33384 21 20 10.04 +36 58 17.2 19.8 Ro~2Gih695 +~16ZjK16T56A &C2020 11 21.17707200 51 20.76 -16 16 32.9 V~5HJnW84 +~16ZjK16T56A &C2020 11 21.18535900 51 20.42 -16 16 33.7 V~5HJnW84 +~16Zj 0C2022 08 19.35430922 13 12.324+06 15 33.54 23.37GV~9pjpF52 +~16Zj 0C2022 08 19.36582922 13 11.681+06 15 28.35 23.78GV~9pjpF52 +~16Zj 0C2022 08 19.37739222 13 11.005+06 15 22.62 22.97GV~9pjpF52 +~16Zj 0C2022 08 19.38892422 13 10.355+06 15 17.05 24.39GV~9pjpF52 +~16Zj |C2025 10 17.32901006 30 54.690-23 00 59.10 21.0 GV~9DEZ807 +~16Zj |C2025 10 17.33815006 30 56.110-23 01 20.20 20.6 GV~9DEZ807 +~16Zj |C2025 10 17.34729006 30 57.420-23 01 38.70 21.0 GV~9DEZ807 +~16Zj 2C2026 06 10.37108322 02 49.887+18 54 45.65 22.5 GWEM016G37 +~16Zj 2C2026 06 10.38250522 02 49.670+18 54 48.67 22.7 GWEM016G37 diff --git a/papers/dark_comet/data/2016_TA56/precovery_20070914.json b/papers/dark_comet/data/2016_TA56/precovery_20070914.json new file mode 100644 index 0000000000000000000000000000000000000000..0ee7c9cd6a108295cd4571bac7fd84f7aa98749a --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/precovery_20070914.json @@ -0,0 +1,495 @@ +[ + { + "image": "942299p", + "ext": 15, + "mjd_mid": 54357.452220920095, + "exptime": 420.0549927, + "filter": "r.MP9601", + "n_gaia": 12, + "shift_px": [ + -5.5, + -0.5 + ], + "wcs_rms_arcsec": 0.020206635785942416, + "pred_ra": 36.35108, + "pred_dec": -4.49728, + "pred_V": "23.078", + "trail_px": 21.080318154468515, + "scale": 0.1868147964, + "found": false + }, + { + "image": "942300p", + "ext": 15, + "mjd_mid": 54357.457641232715, + "exptime": 420.0450134, + "filter": "r.MP9601", + "n_gaia": 14, + "shift_px": [ + -5.5, + -0.5 + ], + "wcs_rms_arcsec": 0.021025493905743202, + "pred_ra": 36.35047, + "pred_dec": -4.49837, + "pred_V": "23.078", + "trail_px": 21.71105674322135, + "scale": 0.18683424720000003, + "found": true, + "matched_peak_sigma": 7.314579867686738, + "ra": 36.35046045699963, + "dec": -4.4983938078333985, + "pix": [ + 456.0685425285999, + 731.3217083650231 + ], + "obs_minus_pred": [ + -0.034248973627454285, + -0.08570820023301451 + ] + }, + { + "image": "942301p", + "ext": 15, + "mjd_mid": 54357.463064103045, + "exptime": 420.0570068, + "filter": "r.MP9601", + "n_gaia": 15, + "shift_px": [ + -5.5, + 0.5 + ], + "wcs_rms_arcsec": 0.01988389474242527, + "pred_ra": 36.34986, + "pred_dec": -4.49947, + "pred_V": "23.078", + "trail_px": 21.71226354911905, + "scale": 0.1868673528, + "found": true, + "matched_peak_sigma": 6.026060389239871, + "ra": 36.349822475170406, + "dec": -4.499511155195457, + "pix": [ + 285.1975614070825, + 731.1820361626588 + ], + "obs_minus_pred": [ + -0.13467304908046704, + -0.14815870364799366 + ] + }, + { + "image": "942302p", + "ext": 24, + "mjd_mid": 54357.46854417245, + "exptime": 420.073, + "filter": "r.MP9601", + "n_gaia": 13, + "shift_px": [ + 4.5, + -1.5 + ], + "wcs_rms_arcsec": 0.019789228051523288, + "pred_ra": 36.34924, + "pred_dec": -4.50057, + "pred_V": "23.078", + "trail_px": 21.717418235374726, + "scale": 0.1868158836, + "found": true, + "matched_peak_sigma": 7.605918062505546, + "ra": 36.349207559846384, + "dec": -4.500608966270559, + "pix": [ + 1911.060199189883, + 669.9565599150609 + ], + "obs_minus_pred": [ + -0.11642445411136133, + -0.14027857401437416 + ] + }, + { + "image": "942303p", + "ext": 24, + "mjd_mid": 54357.47396276626, + "exptime": 420.0660095, + "filter": "r.MP9601", + "n_gaia": 17, + "shift_px": [ + 4.5, + -0.5 + ], + "wcs_rms_arcsec": 0.017611717059636885, + "pred_ra": 36.34862, + "pred_dec": -4.50166, + "pred_V": "23.078", + "trail_px": 21.7189573866142, + "scale": 0.1868122836, + "found": true, + "matched_peak_sigma": 4.409694181932807, + "ra": 36.34884973069889, + "dec": -4.501241373566714, + "pix": [ + 1760.2432088436994, + 679.157063899152 + ], + "obs_minus_pred": [ + 0.8244791766200688, + 1.5070551598309834 + ], + "obs_minus_mpc": { + "site": "T14", + "dt_s": -24.0394189953804, + "offset": [ + 0.9261644724029275, + 1.6210551598309308 + ] + } + }, + { + "image": "942304p", + "ext": 24, + "mjd_mid": 54357.479380937555, + "exptime": 420.0660095, + "filter": "r.MP9601", + "n_gaia": 16, + "shift_px": [ + 4.5, + -1.5 + ], + "wcs_rms_arcsec": 0.018011723027116365, + "pred_ra": 36.348, + "pred_dec": -4.50275, + "pred_V": "23.078", + "trail_px": 21.087579067915897, + "scale": 0.1868403636, + "found": true, + "matched_peak_sigma": 4.425918110243373, + "ra": 36.34795864875728, + "dec": -4.502816006161254, + "pix": [ + 1739.9075421995965, + 669.9727802852407 + ], + "obs_minus_pred": [ + -0.1484050135205536, + -0.23762218051466277 + ], + "obs_minus_mpc": { + "site": "T14", + "dt_s": -24.283795058727264, + "offset": [ + -0.058682788944657394, + -0.07762218051361458 + ] + } + }, + { + "image": "942305p", + "ext": 15, + "mjd_mid": 54357.48480532986, + "exptime": 420.061, + "filter": "r.MP9601", + "n_gaia": 12, + "shift_px": [ + -6.5, + 0.5 + ], + "wcs_rms_arcsec": 0.0193595136824771, + "pred_ra": 36.34739, + "pred_dec": -4.50384, + "pred_V": "23.078", + "trail_px": 21.709869407115747, + "scale": 0.1868597964, + "found": true, + "matched_peak_sigma": 6.785413166421252, + "ra": 36.34733634165655, + "dec": -4.503888176625614, + "pix": [ + 197.04489088988996, + 730.0188727921216 + ], + "obs_minus_pred": [ + -0.192573541510439, + -0.1734358522078594 + ] + }, + { + "image": "942306p", + "ext": 24, + "mjd_mid": 54357.490224068235, + "exptime": 420.0589905, + "filter": "r.MP9601", + "n_gaia": 16, + "shift_px": [ + 5.5, + -0.5 + ], + "wcs_rms_arcsec": 0.01896788227025617, + "pred_ra": 36.34677, + "pred_dec": -4.50493, + "pred_V": "23.077", + "trail_px": 21.719917820181422, + "scale": 0.18684431640000002, + "found": true, + "matched_peak_sigma": 4.497147180690777, + "ra": 36.34671034570644, + "dec": -4.505005240923991, + "pix": [ + 1765.0729652610114, + 670.3261640054492 + ], + "obs_minus_pred": [ + -0.21409198677699406, + -0.27086732636689703 + ], + "obs_minus_mpc": { + "site": "T14", + "dt_s": -26.17330402135849, + "offset": [ + -0.06754612599264215, + -0.04886732636784075 + ] + } + }, + { + "image": "942307p", + "ext": 24, + "mjd_mid": 54357.50091793974, + "exptime": 300.0799866, + "filter": "g.MP9401", + "n_gaia": 11, + "shift_px": [ + 5.5, + -0.5 + ], + "wcs_rms_arcsec": 0.0215826991665822, + "pred_ra": 36.34555, + "pred_dec": -4.50708, + "pred_V": "23.077", + "trail_px": 15.518905544605582, + "scale": 0.18683892, + "found": true, + "matched_peak_sigma": 4.765981792160207, + "ra": 36.3455122053586, + "dec": -4.507135843234486, + "pix": [ + 1878.823802171347, + 671.8315580014561 + ], + "obs_minus_pred": [ + -0.1356399591211664, + -0.2010356441477512 + ], + "obs_minus_mpc": { + "site": "T14", + "dt_s": -23.419587314128876, + "offset": [ + -0.06087188254816725, + -0.019035644148956976 + ] + } + }, + { + "image": "942308p", + "ext": 15, + "mjd_mid": 54357.5049470254, + "exptime": 300.04599, + "filter": "g.MP9401", + "n_gaia": 11, + "shift_px": [ + -5.5, + -0.5 + ], + "wcs_rms_arcsec": 0.024173921886871074, + "pred_ra": 36.34509, + "pred_dec": -4.50789, + "pred_V": "23.077", + "trail_px": 15.510808985182996, + "scale": 0.18680508, + "found": false + }, + { + "image": "942308p", + "ext": 24, + "mjd_mid": 54357.5049470254, + "exptime": 300.04599, + "filter": "g.MP9401", + "n_gaia": 11, + "shift_px": [ + 4.5, + -1.5 + ], + "wcs_rms_arcsec": 0.020253275722670876, + "pred_ra": 36.34509, + "pred_dec": -4.50789, + "pred_V": "23.077", + "trail_px": 15.51595914633232, + "scale": 0.1868281164, + "found": false + }, + { + "image": "942309p", + "ext": 15, + "mjd_mid": 54357.508976330944, + "exptime": 300.0499878, + "filter": "g.MP9401", + "n_gaia": 11, + "shift_px": [ + -5.5, + 0.5 + ], + "wcs_rms_arcsec": 0.02510360809583515, + "pred_ra": 36.34463, + "pred_dec": -4.5087, + "pred_V": "23.077", + "trail_px": 15.510247257128219, + "scale": 0.18686916, + "found": true, + "matched_peak_sigma": 9.662594542290373, + "ra": 36.3446030434323, + "dec": -4.508734018616744, + "pix": [ + 180.23531564156534, + 728.1927919527964 + ], + "obs_minus_pred": [ + -0.09674333328703948, + -0.12246702027844947 + ] + }, + { + "image": "942311p", + "ext": 24, + "mjd_mid": 54357.51703601856, + "exptime": 300.0440063, + "filter": "g.MP9401", + "n_gaia": 19, + "shift_px": [ + 5.5, + -0.5 + ], + "wcs_rms_arcsec": 0.0263325293591294, + "pred_ra": 36.34371, + "pred_dec": -4.51033, + "pred_V": "23.077", + "trail_px": 15.513565422166396, + "scale": 0.18683964, + "found": true, + "matched_peak_sigma": 5.830358102255573, + "ra": 36.34368161329443, + "dec": -4.510371024473037, + "pix": [ + 1863.9389797203771, + 672.616736302932 + ], + "obs_minus_pred": [ + -0.10187566855009773, + -0.14768810293439572 + ], + "obs_minus_mpc": { + "site": "T14", + "dt_s": -23.412787914276123, + "offset": [ + 0.03868767580423979, + 0.044311897066862116 + ] + } + }, + { + "image": "942312p", + "ext": 24, + "mjd_mid": 54357.52106410293, + "exptime": 300.0369873, + "filter": "g.MP9401", + "n_gaia": 15, + "shift_px": [ + 2.5, + -1.5 + ], + "wcs_rms_arcsec": 0.03525717404932897, + "pred_ra": 36.34324, + "pred_dec": -4.51114, + "pred_V": "23.076", + "trail_px": 15.061249845612975, + "scale": 0.18678420359999998, + "found": true, + "matched_peak_sigma": 5.916873522705563, + "ra": 36.34318141191299, + "dec": -4.511221212432109, + "pix": [ + 2031.7435541201141, + 672.8444316034582 + ], + "obs_minus_pred": [ + -0.21026370476617712, + -0.2923647555924447 + ], + "obs_minus_mpc": { + "site": "T14", + "dt_s": -23.491886258125305, + "offset": [ + -0.08166333311819614, + -0.10636475559202552 + ] + } + }, + { + "image": "942313p", + "ext": 24, + "mjd_mid": 54357.52509408561, + "exptime": 300.0379944, + "filter": "g.MP9401", + "n_gaia": 18, + "shift_px": [ + 5.5, + -0.5 + ], + "wcs_rms_arcsec": 0.02879963415786873, + "pred_ra": 36.34278, + "pred_dec": -4.51195, + "pred_V": "23.076", + "trail_px": 15.515756256218493, + "scale": 0.1868237928, + "found": true, + "matched_peak_sigma": 6.084641595781298, + "ra": 36.34275480023422, + "dec": -4.5119735501429385, + "pix": [ + 1843.9900421595705, + 673.8495614288839 + ], + "obs_minus_pred": [ + -0.0904380134562844, + -0.08478051457991853 + ], + "obs_minus_mpc": { + "site": "T14", + "dt_s": -24.875785410404205, + "offset": [ + 0.0022737745723807774, + 0.045219485420133765 + ] + } + }, + { + "image": "942329p", + "ext": 25, + "mjd_mid": 54357.62660626736, + "exptime": 120.043, + "filter": "r.MP9601", + "n_gaia": 21, + "shift_px": [ + 3.5, + 0.5 + ], + "wcs_rms_arcsec": 0.0257173865773939, + "pred_ra": 36.33112, + "pred_dec": -4.53237, + "pred_V": "23.073", + "trail_px": 6.2149651422132735, + "scale": 0.18675935999999999, + "found": false, + "matched_peak_sigma": -65.66776034389606 + } +] \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/refit.json b/papers/dark_comet/data/2016_TA56/refit.json new file mode 100644 index 0000000000000000000000000000000000000000..8460d8eeb1ef247446c09d0e01745cb218690d61 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/refit.json @@ -0,0 +1,7094 @@ +{ + "t0_tdb": 2457746.5, + "a2_jpl": -3.185843703887927e-12, + "site_rms": { + "926": 0.447069436545395, + "691": 0.4804397094532931, + "807": 0.32945623746068126, + "F51": 0.1954784356757225, + "T14": 0.04363807615514413, + "695": 0.1599582874351997, + "C51": 0.49576336328560067 + }, + "fits": { + "with A2": { + "n_obs": 102, + "n_kept": 97, + "chi2": 121.17710873955006, + "dof": 187, + "weighting": "none", + "rms": 0.3301070700335537, + "A2": -3.535614407721552e-12, + "A2_sigma": 1.740487767581757e-13, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.2996455341651183, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": 0.16799161511147023, + "cross": 0.1760343696805175, + "kept": true + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -0.042876093908408415, + "cross": -0.007127565242890883, + "kept": true + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": 0.11295469159781163, + "cross": 0.020355571616610346, + "kept": true + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -0.004137776865538581, + "cross": 0.011827584025168569, + "kept": true + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": 0.14117324775624704, + "cross": 0.05811154781015261, + "kept": true + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": 0.04524591434750798, + "cross": 0.003269958294201116, + "kept": true + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": 0.02991689505833809, + "cross": 0.21932257537567937, + "kept": true + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -0.003698901299703082, + "cross": 0.04495767011636856, + "kept": true + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": 0.10828807219257776, + "cross": 0.03253138248806965, + "kept": true + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": 0.051774931056908294, + "cross": 0.014017980611658098, + "kept": true + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": 0.053036829686822516, + "cross": -0.006427574458416264, + "kept": true + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -0.0325830263175022, + "cross": 0.0033137102927662727, + "kept": true + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.18177512863675124, + "cross": 0.14915775718831525, + "kept": true + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.22123253404067308, + "cross": 0.1080887398122392, + "kept": true + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.09302470330926542, + "cross": 0.16610084304713058, + "kept": true + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": -0.06635774807571276, + "cross": 0.12038244950698986, + "kept": true + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": -0.003976365795252465, + "cross": 0.08788447318948572, + "kept": true + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": -0.07239777193240417, + "cross": 0.13526292915382845, + "kept": true + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.006760007833693057, + "cross": -0.3794694903098777, + "kept": true + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.3711141921674539, + "cross": -0.0008568120790671052, + "kept": true + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.5687744256597591, + "cross": -0.6931799270694745, + "kept": true + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": -0.01489960112880783, + "cross": -0.4407455991358716, + "kept": true + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.3473609389349272, + "cross": -0.07712342834931432, + "kept": true + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": -0.012031546237750346, + "cross": -0.3184480471392169, + "kept": true + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.284468737136715, + "cross": -0.012693457445732505, + "kept": true + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5144917636585166, + "cross": 0.0183395088661793, + "kept": true + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.151364854858934, + "cross": 1.0990378908920169, + "kept": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.7923290782534598, + "cross": 0.23845475508484637, + "kept": true + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.37184004863212233, + "cross": 0.6711196560098536, + "kept": true + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.13426473027759617, + "cross": -0.18049434464563668, + "kept": true + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.0393863226672393, + "cross": 0.1316954823112076, + "kept": true + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.12490722279583022, + "cross": -0.28039620181413905, + "kept": true + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.3090808047969063, + "cross": -0.08278984814826106, + "kept": true + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.10066135530498257, + "cross": -0.12367877072808021, + "kept": true + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.2705984107997951, + "cross": -0.2225005684667672, + "kept": true + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.07431087405710066, + "cross": -0.1527888770505997, + "kept": true + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.28612254783624824, + "cross": 0.03219182492841648, + "kept": true + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.07156316092225011, + "cross": -0.13305974456170971, + "kept": true + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.2538191503935622, + "cross": 0.8208991073882824, + "kept": true + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.7282889225968543, + "cross": 0.07492267679071865, + "kept": true + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.0602815504112302, + "cross": 0.5000638399650503, + "kept": true + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.20236269995488948, + "cross": 0.04418344880270215, + "kept": true + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.7885171225358172, + "cross": -3.1796505027263104, + "kept": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.10286118415564684, + "cross": 1.2955686362634105, + "kept": true + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.22979981504670685, + "cross": 0.01115862537953562, + "kept": true + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.21381523048023512, + "cross": -0.20996091597432498, + "kept": true + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.06220116857503733, + "cross": 0.7478993299293479, + "kept": true + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -0.9989282261615207, + "cross": -0.11486389020503408, + "kept": true + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.0614678576549466, + "cross": 0.1281115945849734, + "kept": true + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.05641139374143883, + "cross": -0.41559227411022515, + "kept": true + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.23710352997962028, + "cross": -0.09323776817039224, + "kept": true + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.19195567404261893, + "cross": -0.040939129118983904, + "kept": true + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.43195225481287264, + "cross": 0.35248608480253757, + "kept": true + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.35744706009235855, + "cross": 0.6635081362835262, + "kept": true + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.5935194673385471, + "cross": 0.06790312857853734, + "kept": true + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.05621825795740706, + "cross": 0.31020189605672566, + "kept": true + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.11644000512398223, + "cross": -0.00693318502955768, + "kept": true + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.043620368724455495, + "cross": -0.0663922469029015, + "kept": true + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.24292117328862894, + "cross": 0.7167892761230591, + "kept": true + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.12704757878436773, + "cross": 0.1376099651305843, + "kept": true + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.08292600239430942, + "cross": -0.14637822630657324, + "kept": true + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8095449833718189, + "cross": 0.7433122854239562, + "kept": true + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.019129742422100617, + "cross": 0.4236861993339912, + "kept": true + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.08024759006659833, + "cross": 0.4238130523021211, + "kept": true + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.11387309356712665, + "cross": -0.3341187424781933, + "kept": true + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.3545918772208183, + "cross": -1.2611080556884704, + "kept": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.9155787647902067, + "cross": 0.14835677173346903, + "kept": true + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.14471988942518904, + "cross": 0.24827376329179415, + "kept": true + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.09625536689399593, + "cross": 0.785945478698865, + "kept": true + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.18661371628978313, + "cross": 0.11723213655181713, + "kept": true + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.30847440020262534, + "cross": 0.7324340983701666, + "kept": true + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.273178144531063, + "cross": 0.2669576223244555, + "kept": true + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.524850384142807, + "cross": -0.6310298641859782, + "kept": true + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.23560324885668216, + "cross": -0.5879016863422482, + "kept": true + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.031139293694444476, + "cross": 0.5949665688573638, + "kept": true + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.44235538525093027, + "cross": -0.026929075080773246, + "kept": true + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.05073792589752236, + "cross": 0.584083031839786, + "kept": true + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.08601221636735405, + "cross": -0.5017916107156142, + "kept": true + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.19932498288706496, + "cross": -0.13123270364432452, + "kept": true + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.826891817063474, + "cross": -0.1627946962173775, + "kept": true + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.534578524118422, + "cross": -0.04388961730068656, + "kept": true + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.20800559346433026, + "cross": -0.08962615059328538, + "kept": true + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.3092387174162154, + "cross": 1.9787997899065837, + "kept": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.2882570917393437, + "cross": -0.38113341107917503, + "kept": true + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.1619031056941437, + "cross": -0.021217549648808405, + "kept": true + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.17212344009966285, + "cross": 0.008512268299376277, + "kept": true + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.12562149767370004, + "cross": -0.10246706738428017, + "kept": true + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.10610655107394577, + "cross": -0.1171344399488317, + "kept": true + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.05904393617199607, + "cross": 0.05637433065416837, + "kept": true + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": -0.024744216465365242, + "cross": -0.059490761338657466, + "kept": true + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.13187292612660928, + "cross": -0.09240037136149933, + "kept": true + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": -0.1338038841952329, + "cross": 0.17266208498952804, + "kept": true + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.3379134542993336, + "cross": -0.16358560497643157, + "kept": true + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.11653262113174166, + "cross": 0.08145474734828459, + "kept": true + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.24050497906064636, + "cross": -0.10773170050652278, + "kept": true + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.04832546460415863, + "cross": -0.07238588856982522, + "kept": true + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": -0.05550045414995614, + "cross": 0.018963972476890696, + "kept": true + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -0.38458306164286465, + "cross": 0.2121940799552886, + "kept": true + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": 0.4715545258204332, + "cross": -0.3348882239473841, + "kept": true + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -1.5817224146790754, + "cross": -0.136379833661768, + "kept": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.19918692531749257, + "cross": 0.08409041420032642, + "kept": true + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -0.1750138244903636, + "cross": 0.07782244422050251, + "kept": true + } + ] + }, + "with A2, Veres nights": { + "n_obs": 102, + "n_kept": 97, + "chi2": 105.79578526881788, + "dof": 187, + "weighting": "veres", + "rms": 0.3301478351913197, + "A2": -3.5572285157388517e-12, + "A2_sigma": 1.9199493158021394e-13, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.3072135860723222 + }, + "with A2, one position a night": { + "n_obs": 102, + "n_kept": 101, + "chi2": 58.2195425020477, + "dof": 195, + "weighting": "night", + "rms": 0.5164163361109722, + "A2": -3.448861162569296e-12, + "A2_sigma": 3.7015920693110115e-13, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "G96", + "jd": 2457862.98002 + } + ], + "resid_max": 3.8400140530359024 + }, + "with A1 and A2": { + "n_obs": 102, + "n_kept": 97, + "chi2": 117.33434978048554, + "dof": 186, + "weighting": "none", + "rms": 0.3266653833808835, + "A2": -3.3199354655753657e-12, + "A2_sigma": 2.0572906864154638e-13, + "A1": 3.674028066266294e-10, + "A1_sigma": 1.8745117384533225e-10, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.2877599175751937, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": 0.1340589056993951, + "cross": 0.15450134497859785, + "kept": true + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -0.07680857262568228, + "cross": -0.028662209976776563, + "kept": true + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": 0.07902237684629695, + "cross": -0.0011803242265623801, + "kept": true + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -0.038069835504107086, + "cross": -0.00971025053422448, + "kept": true + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": 0.10724181989609319, + "cross": 0.03656893769065057, + "kept": true + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": 0.011314707312237108, + "cross": -0.018274273927844333, + "kept": true + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": -0.004014167529101211, + "cross": 0.1977770881167241, + "kept": true + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -0.03762927210429736, + "cross": 0.023407148754629105, + "kept": true + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": 0.07435866156875083, + "cross": 0.010973748468097507, + "kept": true + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": 0.017845843714734203, + "cross": -0.007542034091184612, + "kept": true + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": 0.019108066252029675, + "cross": -0.02798996325952928, + "kept": true + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -0.0665114666648288, + "cross": -0.018251071947046605, + "kept": true + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.09527758936614829, + "cross": 0.1321586135638432, + "kept": true + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.13475564417678224, + "cross": 0.09114828822634208, + "kept": true + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.008598531573516323, + "cross": 0.15374089124063375, + "kept": true + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": 0.01805797258389926, + "cross": 0.10804220216985372, + "kept": true + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.08042889167078442, + "cross": 0.07556391820100244, + "kept": true + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": 0.01199700845538727, + "cross": 0.12296207411676947, + "kept": true + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.09047188934457674, + "cross": -0.3905752663275396, + "kept": true + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.4548143785446272, + "cross": -0.011942621885666284, + "kept": true + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.4850859654987986, + "cross": -0.7042457215994337, + "kept": true + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.06691979513600653, + "cross": -0.44899935054294643, + "kept": true + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.26556363998372673, + "cross": -0.08534652055270123, + "kept": true + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.06974826888851554, + "cross": -0.3266469765909994, + "kept": true + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.22252236289884425, + "cross": -0.005322682092279386, + "kept": true + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5764095333486016, + "cross": 0.025724501688322313, + "kept": true + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.2070169575826195, + "cross": 1.1091682797159994, + "kept": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.8479706832327784, + "cross": 0.2485894016047546, + "kept": true + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.4274712561668907, + "cross": 0.6812585366090159, + "kept": true + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.10507976298377872, + "cross": -0.16353588850421708, + "kept": true + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.010212706112289832, + "cross": 0.1486557475171181, + "kept": true + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.15406947167298857, + "cross": -0.26343412814767864, + "kept": true + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.297173445889181, + "cross": -0.06542434401322876, + "kept": true + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.08874551920060231, + "cross": -0.10631439129910733, + "kept": true + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.2586745039178097, + "cross": -0.20513728489907096, + "kept": true + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.11056923136066901, + "cross": -0.1428344395794814, + "kept": true + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.24985849128516088, + "cross": 0.04214326306183829, + "kept": true + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.03529350158337356, + "cross": -0.12311113764913618, + "kept": true + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.20051066220170471, + "cross": 0.8135556288128413, + "kept": true + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.6749799918031645, + "cross": 0.06757871882708417, + "kept": true + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.0068504863559478, + "cross": 0.49244488353732685, + "kept": true + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.2560904938682468, + "cross": 0.03586796033922158, + "kept": true + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.842361257418229, + "cross": -3.188247960560403, + "kept": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.048962682983918614, + "cross": 1.2868287613308484, + "kept": true + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.28375497148990714, + "cross": 0.0022761621905562704, + "kept": true + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.2678807335428601, + "cross": -0.21912965006425872, + "kept": true + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.008136064267802714, + "cross": 0.7387301360852911, + "kept": true + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -1.0531016840480765, + "cross": -0.12432108781764525, + "kept": true + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.11776034828168014, + "cross": 0.10697877134469151, + "kept": true + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.11270501934899387, + "cross": -0.4367511962044988, + "kept": true + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.2933976938476883, + "cross": -0.11442264112352918, + "kept": true + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.24825055060826065, + "cross": -0.06215002372460042, + "kept": true + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.41111848423081493, + "cross": 0.2818082065913028, + "kept": true + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.33663112181940164, + "cross": 0.5928218992932536, + "kept": true + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.572720572616735, + "cross": -0.0027918471651283074, + "kept": true + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.0612902226858386, + "cross": 0.23216581532696692, + "kept": true + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.12151952969655638, + "cross": -0.0849703748091572, + "kept": true + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.04870729692232394, + "cross": -0.14443037595105, + "kept": true + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.27859909696226887, + "cross": 0.637336031205518, + "kept": true + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.09136345645155745, + "cross": 0.058156267004704366, + "kept": true + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.0472354147007362, + "cross": -0.22583272120772505, + "kept": true + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8358601065269095, + "cross": 0.6069268082232647, + "kept": true + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.04543194046941305, + "cross": 0.287290761262089, + "kept": true + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.027811075397627668, + "cross": 0.33962200460757364, + "kept": true + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.1663319230122767, + "cross": -0.4182677370683461, + "kept": true + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.4070639565523138, + "cross": -1.3452286718969784, + "kept": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.9741195343003186, + "cross": 0.11902538666976868, + "kept": true + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.2032518777185484, + "cross": 0.21896274901395107, + "kept": true + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.03773405765793122, + "cross": 0.7566579106684335, + "kept": true + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.15129432852399788, + "cross": 0.1100350948905863, + "kept": true + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.27315833950033974, + "cross": 0.7252375289357398, + "kept": true + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.23786295355379156, + "cross": 0.25976189462665306, + "kept": true + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.5193252721387027, + "cross": -0.6184750441145043, + "kept": true + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.2301944148727069, + "cross": -0.5751656532352863, + "kept": true + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.036430773869794084, + "cross": 0.6078842972276391, + "kept": true + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.4475904034664445, + "cross": -0.013919851023114372, + "kept": true + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.04556114937220318, + "cross": 0.597182407142766, + "kept": true + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.09113363286929668, + "cross": -0.4886009292303757, + "kept": true + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.2044456744426229, + "cross": -0.11804162248397927, + "kept": true + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.8318989068225675, + "cross": -0.14942002484925396, + "kept": true + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.5395288805144149, + "cross": -0.030423955925682897, + "kept": true + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.2031115306672347, + "cross": -0.07607009534362498, + "kept": true + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.314073286609963, + "cross": 1.992453262589014, + "kept": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.2929277612377494, + "cross": -0.3672087029068453, + "kept": true + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.16646239522738648, + "cross": -0.007108477237290274, + "kept": true + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.1692589794763536, + "cross": 0.02566607684920286, + "kept": true + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.12275971490417327, + "cross": -0.08530782170294818, + "kept": true + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.10324759844641825, + "cross": -0.09996978431916867, + "kept": true + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.05675592070420869, + "cross": 0.08563633178126832, + "kept": true + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": -0.02703452172835293, + "cross": -0.030222070984735484, + "kept": true + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.12958022479041414, + "cross": -0.06312469461612019, + "kept": true + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": -0.15372901111713874, + "cross": 0.243668392966741, + "kept": true + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.3578504547325801, + "cross": -0.09258366470081691, + "kept": true + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.10583914967787805, + "cross": 0.16275413203261915, + "kept": true + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.25119967850461505, + "cross": -0.026429325799578372, + "kept": true + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.0376294652933663, + "cross": 0.008919612295233104, + "kept": true + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": -0.06619775632814977, + "cross": 0.10027250868045182, + "kept": true + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -0.3519379804349809, + "cross": 0.16227099516454047, + "kept": true + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": 0.5041933085962048, + "cross": -0.3848005853663247, + "kept": true + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -1.549090324883645, + "cross": -0.18628243174004466, + "kept": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.2662846094629622, + "cross": 0.10139831560624979, + "kept": true + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -0.24210854716585656, + "cross": 0.09518997179158589, + "kept": true + } + ] + }, + "gravity only": { + "n_obs": 102, + "n_kept": 83, + "chi2": 112.84553068598336, + "dof": 160, + "weighting": "none", + "rms": 0.34747984658398035, + "A2": null, + "A2_sigma": null, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "568", + "jd": 2454357.971532 + }, + { + "site": "T14", + "jd": 2454357.974241 + }, + { + "site": "568", + "jd": 2454357.976394 + }, + { + "site": "T14", + "jd": 2454357.979662 + }, + { + "site": "568", + "jd": 2454357.987793 + }, + { + "site": "T14", + "jd": 2454357.990527 + }, + { + "site": "568", + "jd": 2454357.992655 + }, + { + "site": "T14", + "jd": 2454358.001189 + }, + { + "site": "T14", + "jd": 2454358.013278 + }, + { + "site": "T14", + "jd": 2454358.017307 + }, + { + "site": "T14", + "jd": 2454358.021336 + }, + { + "site": "T14", + "jd": 2454358.025382 + }, + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.82901 + }, + { + "site": "807", + "jd": 2460965.83815 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.2960336092308113, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": -1.7972477787414751, + "cross": 3.500620870459207, + "kept": false + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -2.008295177959757, + "cross": 3.3174231793158815, + "kept": false + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": -1.8526129323649876, + "cross": 3.3448891079375938, + "kept": false + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -1.96992946662798, + "cross": 3.336322613656395, + "kept": false + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": -1.8251776978222627, + "cross": 3.3825258150733806, + "kept": false + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": -1.9212907182195513, + "cross": 3.327651975272724, + "kept": false + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": -1.9367732941381024, + "cross": 3.5436814293121497, + "kept": false + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -1.9709680991774512, + "cross": 3.369224886100279, + "kept": false + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": -1.859809030322578, + "cross": 3.356673775427418, + "kept": false + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": -1.9165975845419214, + "cross": 3.338115383068407, + "kept": false + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": -1.915610914514911, + "cross": 3.3176267981220944, + "kept": false + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -2.0015082632375383, + "cross": 3.3273217689672214, + "kept": false + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.11880248498701204, + "cross": 0.17428333973380225, + "kept": true + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.15829453953601122, + "cross": 0.13325142026291598, + "kept": true + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.03306465698853974, + "cross": 0.19405809150519834, + "kept": true + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": -0.0064112569608179275, + "cross": 0.14835123826031307, + "kept": true + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.05595656930390974, + "cross": 0.11586478064504528, + "kept": true + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": -0.012478399073292382, + "cross": 0.16325476585903814, + "kept": true + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.06582054425955752, + "cross": -0.35078630995612103, + "kept": true + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.4301604285542606, + "cross": 0.02783774765489521, + "kept": true + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.5097426589253384, + "cross": -0.6644737738817998, + "kept": true + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.04197044922834978, + "cross": -0.410479423314724, + "kept": true + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.2905151266754403, + "cross": -0.04684065871831511, + "kept": true + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.044795080893223975, + "cross": -0.2881522963051724, + "kept": true + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.24468570878929008, + "cross": 0.02398366315621149, + "kept": true + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5542538430321823, + "cross": 0.05501986819850809, + "kept": true + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.1866547954360729, + "cross": 1.1362026496332016, + "kept": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.827611507254727, + "cross": 0.27562019905525564, + "kept": true + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.4071153483049555, + "cross": 0.70828575848936, + "kept": true + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.11585889881231072, + "cross": -0.1446884097766471, + "kept": true + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.020987118135903284, + "cross": 0.16749994748485522, + "kept": true + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.14329954443421114, + "cross": -0.24459320632777756, + "kept": true + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.3050820753963977, + "cross": -0.05672931086253287, + "kept": true + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.09665838120174636, + "cross": -0.097621064285775, + "kept": true + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.2665913730498259, + "cross": -0.19644573674968524, + "kept": true + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.08946786501099141, + "cross": -0.13816109184953065, + "kept": true + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.27096335863343085, + "cross": 0.04681586877719671, + "kept": true + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.05640159916467593, + "cross": -0.11843895668040474, + "kept": true + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.233589064262082, + "cross": 0.8197491727588715, + "kept": true + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.7080581297958577, + "cross": 0.07377208955270569, + "kept": true + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.0400472822265097, + "cross": 0.49870970473958787, + "kept": true + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.2226003112019701, + "cross": 0.042319811463968446, + "kept": true + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.808756281026219, + "cross": -3.1817178172396554, + "kept": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.08262775220916307, + "cross": 1.2933969888710524, + "kept": true + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.25003270276342354, + "cross": 0.008884330088168796, + "kept": true + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.23404358048828838, + "cross": -0.21244101465411316, + "kept": true + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.04197377935439928, + "cross": 0.7454187315082629, + "kept": true + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -1.0191500814300545, + "cross": -0.11754973699520523, + "kept": true + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.08027764384050427, + "cross": 0.11785123145531763, + "kept": true + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.07521661296202735, + "cross": -0.42586805240534337, + "kept": true + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.2559032218226049, + "cross": -0.10352872794166347, + "kept": true + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.21075013899488057, + "cross": -0.05124547994992905, + "kept": true + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.4421592688878249, + "cross": 0.32456563978853803, + "kept": true + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.36766535328249, + "cross": 0.6355883512753241, + "kept": true + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.6037484607449715, + "cross": 0.03998376849585027, + "kept": true + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.08211365951599552, + "cross": 0.2863290513712826, + "kept": true + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.14233997494569736, + "cross": -0.030804035568505143, + "kept": true + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.06952476005601682, + "cross": -0.09026115213963957, + "kept": true + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.28888194003462603, + "cross": 0.7035375458495873, + "kept": true + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.08108131894297242, + "cross": 0.12436058299061101, + "kept": true + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.03695421679440841, + "cross": -0.1596252706447822, + "kept": true + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8866878342190265, + "cross": 0.6798127031093347, + "kept": true + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.096268985783748, + "cross": 0.36017232073885425, + "kept": true + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.10984540368764298, + "cross": 0.3025105079157835, + "kept": true + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.0843153757216244, + "cross": -0.45538971410645135, + "kept": true + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.325056722759404, + "cross": -1.38235561242849, + "kept": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.920033838805476, + "cross": 0.07258169351568869, + "kept": true + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.14917996204044978, + "cross": 0.17251924205453856, + "kept": true + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.09179159399528945, + "cross": 0.710215020406965, + "kept": true + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.19009972817770343, + "cross": 0.07589541534897039, + "kept": true + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.31196358256055845, + "cross": 0.6910992182666059, + "kept": true + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.27666714926879726, + "cross": 0.22562511598725044, + "kept": true + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.5375138505137543, + "cross": -0.6280246207244692, + "kept": true + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.24818584287724857, + "cross": -0.5846563391427086, + "kept": true + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.018637201643696314, + "cross": 0.5984511075680179, + "kept": true + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.42989596080002473, + "cross": -0.023324843475238183, + "kept": true + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.0631562557409755, + "cross": 0.5878053727185537, + "kept": true + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.07363795640803589, + "cross": -0.49795042353526625, + "kept": true + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.18695026141289703, + "cross": -0.1273911391366784, + "kept": true + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.8146029694874843, + "cross": -0.15871553875877506, + "kept": true + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.5223329106745932, + "cross": -0.039692910971204275, + "kept": true + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.22020738091759198, + "cross": -0.08531277344497908, + "kept": true + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.2970779075805914, + "cross": 1.9832359695656459, + "kept": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.27623428241522624, + "cross": -0.376350136407453, + "kept": true + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.14997097416412386, + "cross": -0.01620126599360535, + "kept": true + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.18240979265243926, + "cross": 0.01717229292131622, + "kept": true + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.13590452848694942, + "cross": -0.09380089128761616, + "kept": true + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.11638638295625087, + "cross": -0.1084621322240928, + "kept": true + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.05728264166014993, + "cross": 0.07670240585225727, + "kept": true + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": -0.02649993798107877, + "cross": -0.039157299972435056, + "kept": true + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.13012269520279057, + "cross": -0.07206128277341771, + "kept": true + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": 0.06349879954229154, + "cross": 0.08430676897033278, + "kept": true + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.1406190673242217, + "cross": -0.25192034526715573, + "kept": true + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.2975748308131663, + "cross": 0.02956008014162933, + "kept": true + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.05945126486736915, + "cross": -0.15963474095226915, + "kept": true + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.22939069033182719, + "cross": -0.12429711200836474, + "kept": true + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": 0.12557621003004812, + "cross": -0.03295554815105969, + "kept": true + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -1.2479480677116195, + "cross": -0.8134006616905413, + "kept": false + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": -0.39192785717958645, + "cross": -1.360697476725913, + "kept": false + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -2.445323931286463, + "cross": -1.1623831215011091, + "kept": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.11608542388987715, + "cross": 0.0493743041649667, + "kept": true + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -0.09193475767657086, + "cross": 0.04304551782989128, + "kept": true + } + ], + "by_apparition": [ + { + "ym": "2016-10", + "n": 75, + "dra": -0.09623665638545469, + "ddec": -9.262741212978653e-05 + }, + { + "ym": "2020-11", + "n": 2, + "dra": 0.017413450378883057, + "ddec": 0.09059240713753525 + }, + { + "ym": "2022-08", + "n": 4, + "dra": -0.16433585190396674, + "ddec": -0.01178730258759586 + }, + { + "ym": "2026-06", + "n": 2, + "dra": 0.0398096713078462, + "ddec": -0.10662479271346115 + } + ] + }, + "without 2007-09": { + "n_obs": 90, + "n_kept": 85, + "chi2": 118.23984093546696, + "dof": 163, + "weighting": "none", + "rms": 0.349459871667768, + "A2": -2.237568453288944e-12, + "A2_sigma": 4.343786147740588e-12, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.2996442861812931 + }, + "without 2016-10": { + "n_obs": 23, + "n_kept": 21, + "chi2": 2.474079554487817, + "dof": 35, + "weighting": "none", + "rms": 0.09795088966127749, + "A2": -4.801598464226938e-12, + "A2_sigma": 3.1980393377347533e-12, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "807", + "jd": 2460965.83815 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 0.31216095487205575 + }, + "without 2020-11": { + "n_obs": 100, + "n_kept": 95, + "chi2": 120.4156369727686, + "dof": 183, + "weighting": "none", + "rms": 0.331709468372006, + "A2": -3.5455300093665297e-12, + "A2_sigma": 1.7480726958276742e-13, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.2980888992487838 + }, + "without 2022-08": { + "n_obs": 98, + "n_kept": 93, + "chi2": 120.77308571580194, + "dof": 179, + "weighting": "none", + "rms": 0.3362916561569385, + "A2": -3.5351715621831315e-12, + "A2_sigma": 1.7546669920193956e-13, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.300205281219146 + }, + "without 2025-10": { + "n_obs": 99, + "n_kept": 95, + "chi2": 116.08495233144606, + "dof": 183, + "weighting": "none", + "rms": 0.3286881863057149, + "A2": -3.7928477526660215e-12, + "A2_sigma": 5.688133066656257e-13, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + } + ], + "resid_max": 1.2994843596965828 + }, + "without 2026-06": { + "n_obs": 100, + "n_kept": 95, + "chi2": 120.83188532388118, + "dof": 183, + "weighting": "none", + "rms": 0.33278286468230645, + "A2": -3.5353140711495156e-12, + "A2_sigma": 1.740523023171616e-13, + "A1": null, + "A1_sigma": null, + "rejected": [ + { + "site": "691", + "jd": 2457690.81725 + }, + { + "site": "C51", + "jd": 2457740.66109 + }, + { + "site": "G96", + "jd": 2457862.98002 + }, + { + "site": "C51", + "jd": 2457908.46574 + }, + { + "site": "807", + "jd": 2460965.84729 + } + ], + "resid_max": 1.2971881599479074 + } + }, + "apparitions": [ + "2007-09", + "2016-10", + "2020-11", + "2022-08", + "2025-10", + "2026-06" + ], + "left_out": { + "2007-09": { + "n": 12, + "along": -1.7802187233255893, + "along_sd": 0.06468855667436167, + "cross": 2.9585015753716912, + "cross_sd": 0.0707776518768351, + "rate": 0.5773522552978384, + "clock_s": -185.00512021804388, + "pred_along": 0.07620200077385897, + "pred_cross": 0.20307002455604206, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": -1.5900697368568364, + "cross": 3.129925638955569, + "left_out": true + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -1.8010973284178322, + "cross": 2.946731298999814, + "left_out": true + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": -1.6453986986223972, + "cross": 2.9741986361474253, + "left_out": true + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -1.7626905207211951, + "cross": 2.9656356665914916, + "left_out": true + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": -1.6178770674210143, + "cross": 3.0118459533286392, + "left_out": true + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": -1.713969610924665, + "cross": 2.9569750661446195, + "left_out": true + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": -1.7294352381598013, + "cross": 3.1730066012119473, + "left_out": true + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -1.763566191132223, + "cross": 2.998558263837198, + "left_out": true + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": -1.6523158081817466, + "cross": 2.9860182185754027, + "left_out": true + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": -1.7090739854129229, + "cross": 2.967463893771797, + "left_out": true + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": -1.7080569591490715, + "cross": 2.946979156621901, + "left_out": true + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -1.793923700498332, + "cross": 2.956678338590125, + "left_out": true + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.12860443051200796, + "cross": 0.17196190946593162, + "left_out": false + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.16809276625032535, + "cross": 0.1309250039273949, + "left_out": false + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.0425387743068128, + "cross": 0.19135751561905923, + "left_out": false + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": -0.015883874631701773, + "cross": 0.14564910652951032, + "left_out": false + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.04648545157436584, + "cross": 0.11316109610619048, + "left_out": false + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": -0.02194801733332574, + "cross": 0.1605495251764977, + "left_out": false + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.05644613601553672, + "cross": -0.3535842706326915, + "left_out": false + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.42078760630082074, + "cross": 0.025038256734034866, + "left_out": false + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.5191138582766245, + "cross": -0.6672748414364978, + "left_out": false + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.03284168332848942, + "cross": -0.4134901978328681, + "left_out": false + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.2996411572120595, + "cross": -0.04985368238749318, + "left_out": false + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.03567122585085463, + "cross": -0.2911670722534529, + "left_out": false + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.25179841311216095, + "cross": 0.020087669354099943, + "left_out": false + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5471437001588604, + "cross": 0.05112338960389418, + "left_out": false + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.1800941191207368, + "cross": 1.1322285866657595, + "left_out": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.8210517727655811, + "cross": 0.2716460156990977, + "left_out": false + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.4005564905254874, + "cross": 0.7043114565126052, + "left_out": false + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.12028482550551589, + "cross": -0.14855246528896385, + "left_out": false + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.02541219157235538, + "cross": 0.16363604866686626, + "left_out": false + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.13887536529001582, + "cross": -0.24845694712577418, + "left_out": false + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.30360586600729184, + "cross": -0.05949828311433693, + "left_out": false + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.09518274348994053, + "cross": -0.10038972550754786, + "left_out": false + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.2651162841593896, + "cross": -0.19921407385987902, + "left_out": false + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.08942957114071252, + "cross": -0.1396641171871161, + "left_out": false + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.27100195904902696, + "cross": 0.045313257515388145, + "left_out": false + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.05644052905483454, + "cross": -0.11994122103519073, + "left_out": false + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.2343721883373748, + "cross": 0.8198990016044783, + "left_out": false + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.7088413516630105, + "cross": 0.07392200709832678, + "left_out": false + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.0408323327792888, + "cross": 0.4988799796541016, + "left_out": false + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.22181128894113092, + "cross": 0.04254083769669831, + "left_out": false + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.8079655837799908, + "cross": -3.181476599204075, + "left_out": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.08341839826410448, + "cross": 1.2936486502128812, + "left_out": false + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.24924138091625003, + "cross": 0.009146170389632882, + "left_out": false + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.2332513601034479, + "cross": -0.2121587682820729, + "left_out": false + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.042765867352662544, + "cross": 0.7457010431700292, + "left_out": false + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -1.0183571975679673, + "cross": -0.1172471505740288, + "left_out": false + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.07959634448719421, + "cross": 0.11888105016176637, + "left_out": false + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.0745357018192408, + "cross": -0.4248367962795467, + "left_out": false + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.255222833713874, + "cross": -0.1024960672424812, + "left_out": false + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.2100702315405145, + "cross": -0.0502113834455205, + "left_out": false + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.43997380148283544, + "cross": 0.3267881881075123, + "left_out": false + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.365478791176666, + "cross": 0.6378106323632295, + "left_out": false + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.6015608939792907, + "cross": 0.042205815384456315, + "left_out": false + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.07841939088643497, + "cross": 0.2878741060436186, + "left_out": false + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.13864527317258257, + "cross": -0.02925924851202653, + "left_out": false + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.06582963324361728, + "cross": -0.08871662759326976, + "left_out": false + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.2831218955703576, + "cross": 0.7038196980145673, + "left_out": false + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.08684197446669166, + "cross": 0.1246425032197843, + "left_out": false + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.04271549204084629, + "cross": -0.15934357399839932, + "left_out": false + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8769271453804668, + "cross": 0.6878686510158446, + "left_out": false + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.08650886434986, + "cross": 0.3682303097891118, + "left_out": false + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.10211803650719108, + "cross": 0.32108282259587523, + "left_out": false + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.09203690284419923, + "cross": -0.43682094951234884, + "left_out": false + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.3327749893898897, + "cross": -1.3637895818780124, + "left_out": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.9225036753388467, + "cross": 0.08603191538821708, + "left_out": false + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.15164891496063626, + "cross": 0.18596707906441057, + "left_out": false + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.089323391228957, + "cross": 0.7236600570478766, + "left_out": false + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.18614555920950224, + "cross": 0.0848140225329926, + "left_out": false + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.3080089323780169, + "cross": 0.7000175251528773, + "left_out": false + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.27271239774123024, + "cross": 0.2345430576579819, + "left_out": false + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.5302198019238635, + "cross": -0.6273253101546745, + "left_out": false + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.24089296832270474, + "cross": -0.5840061451255614, + "left_out": false + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.025928855604812832, + "cross": 0.5990523347293915, + "left_out": false + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.4371866999698842, + "cross": -0.022748087441180006, + "left_out": false + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.05586627241323016, + "cross": 0.5883578275891672, + "left_out": false + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.08092682602222054, + "cross": -0.4974223274102644, + "left_out": false + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.19423919202886117, + "cross": -0.12686310849143445, + "left_out": false + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.8218898610105037, + "cross": -0.15823617270461582, + "left_out": false + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.5296187198600475, + "cross": -0.03923773112793895, + "left_out": false + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.21292273936194334, + "cross": -0.08488167969578378, + "left_out": false + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.3043616600835866, + "cross": 1.9836423932210585, + "left_out": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.2835136255020296, + "cross": -0.37601557774339667, + "left_out": false + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.1572474073268866, + "cross": -0.015914680987304527, + "left_out": false + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.17521172642950214, + "cross": 0.016704312114068733, + "left_out": false + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.12870666290065813, + "cross": -0.09427014723143161, + "left_out": false + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.10918870354796102, + "cross": -0.10893266307837164, + "left_out": false + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.06377736986543683, + "cross": 0.07375399991445034, + "left_out": false + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": -0.020005741534373313, + "cross": -0.04210689839124539, + "left_out": false + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.13661636954523912, + "cross": -0.0750120956146069, + "left_out": false + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": 0.012401414170305746, + "cross": 0.12166043866365905, + "left_out": false + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.191715556886904, + "cross": -0.21457247605167415, + "left_out": false + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.23961128284237787, + "cross": 0.07160231426797069, + "left_out": false + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.11741618669386743, + "cross": -0.11758963140861345, + "left_out": false + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.1714243922817737, + "cross": -0.08224917751541043, + "left_out": false + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": 0.0676085543791159, + "cross": 0.009095238240381316, + "left_out": false + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -0.3528057243260214, + "cross": 0.17161730559251562, + "left_out": false + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": 0.5033426398446312, + "cross": -0.3754604298707684, + "left_out": false + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -1.5499237600065987, + "cross": -0.176947957288394, + "left_out": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.35165296287734493, + "cross": 0.07457549753845916, + "left_out": false + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -0.32749979262421713, + "cross": 0.06844094870557063, + "left_out": false + } + ] + }, + "2016-10": { + "n": 79, + "along": 2.4304778785843815, + "along_sd": 1.2682125396724517, + "cross": -1.8575987697757963, + "cross_sd": 2.6986769874333483, + "rate": 1.0910188350177952, + "clock_s": 133.66283700563642, + "pred_along": 0.36154697442261013, + "pred_cross": 0.5301513376957463, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": 0.1452532954633072, + "cross": 0.16187467086028834, + "left_out": false + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -0.0656174499381285, + "cross": -0.021290791655298614, + "left_out": false + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": 0.0902111246703079, + "cross": 0.006189163373001439, + "left_out": false + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -0.02688475825260045, + "cross": -0.0023432386092522256, + "left_out": false + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": 0.11841784803024606, + "cross": 0.04392923376199326, + "left_out": false + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": 0.022487601168189958, + "cross": -0.010916048728401061, + "left_out": false + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": 0.007156617756529896, + "cross": 0.2051336249549681, + "left_out": false + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -0.026468278391636214, + "cross": 0.03075688513757884, + "left_out": false + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": 0.0855060776025677, + "cross": 0.018313653970587537, + "left_out": false + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": 0.02898871436842674, + "cross": -0.0002052833834432616, + "left_out": false + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": 0.03024638837721387, + "cross": -0.02065644083227424, + "left_out": false + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -0.05537767441110258, + "cross": -0.01092067967581992, + "left_out": false + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": 0.12165298844715648, + "cross": -1.9775713967048438, + "left_out": true + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": 0.08317301405549482, + "cross": -2.019314133280103, + "left_out": true + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": 0.28866187922087305, + "cross": -2.0171538249301095, + "left_out": true + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": 0.31565313181012755, + "cross": -2.063102815845545, + "left_out": true + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.3783587855611985, + "cross": -2.0958314480819524, + "left_out": true + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": 0.3102635105610877, + "cross": -2.0486809795347294, + "left_out": true + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.40947752617375793, + "cross": -2.5782174594286578, + "left_out": true + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.7741674988692813, + "cross": -2.19984774862584, + "left_out": true + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.16540323578688104, + "cross": -2.8923918908003987, + "left_out": true + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.43540153533329706, + "cross": -2.6750829218046666, + "left_out": true + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": 0.10344865977730065, + "cross": -2.3118267462148316, + "left_out": true + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.4391674064870849, + "cross": -2.5534494281467426, + "left_out": true + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": 0.415133786034168, + "cross": -2.4566409922163106, + "left_out": true + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 1.2142964046968372, + "cross": -2.4258203980842383, + "left_out": true + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.8909781028862784, + "cross": -1.3869553992264572, + "left_out": true + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 1.5319890658734183, + "cross": -2.2475973720618763, + "left_out": true + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 1.111564755902398, + "cross": -1.8149872967991427, + "left_out": true + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": 0.690709817694667, + "cross": -2.7941244684581594, + "left_out": true + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": 0.785607722768152, + "cross": -2.4819740828998524, + "left_out": true + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.9499134216567842, + "cross": -2.8941077393903756, + "left_out": true + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 1.1681527009512103, + "cross": -2.8004573423652874, + "left_out": true + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.9597421091342186, + "cross": -2.8413525515965, + "left_out": true + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 1.1296858052032743, + "cross": -2.940185116686299, + "left_out": true + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": 0.8676140643217106, + "cross": -2.875908823725023, + "left_out": true + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 1.2280875682169485, + "cross": -2.6909243289823954, + "left_out": true + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 1.0135648966862183, + "cross": -2.8561637751075484, + "left_out": true + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 1.5055985072581146, + "cross": -1.8020455548759462, + "left_out": true + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 1.9800574627050214, + "cross": -2.5480342212411964, + "left_out": true + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 2.317854445565564, + "cross": -2.12049150209461, + "left_out": true + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": 1.0699755145797496, + "cross": -2.570123257305642, + "left_out": true + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -0.5102319927802348, + "cross": -5.791351000806175, + "left_out": true + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 1.3842864191121462, + "cross": -1.314880462200361, + "left_out": true + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": 1.0546498493541367, + "cross": -2.5979705831659605, + "left_out": true + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": 1.076776023531359, + "cross": -2.8164324189983687, + "left_out": true + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 1.3528225385384292, + "cross": -1.8585791282235122, + "left_out": true + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": 0.2978834902324416, + "cross": -2.7186089217936034, + "left_out": true + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": 1.5007682628831511, + "cross": -2.341939198380444, + "left_out": true + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": 1.5064103696066176, + "cross": -2.8852964903177862, + "left_out": true + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": 1.3263335863084778, + "cross": -2.562587863909063, + "left_out": true + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": 1.372086452950492, + "cross": -2.509942862866528, + "left_out": true + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 3.2655865903224788, + "cross": -0.6765206055678761, + "left_out": true + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 3.1913316348008576, + "cross": -0.3649739284900537, + "left_out": true + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 3.4275866134045225, + "cross": -0.9600778204354693, + "left_out": true + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 3.125159521838131, + "cross": -0.03283122086710736, + "left_out": true + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 3.1854061818538653, + "cross": -0.34979594883833326, + "left_out": true + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 3.1126279035220503, + "cross": -0.4090824429371231, + "left_out": true + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 3.557155156677489, + "cross": 0.7574990970062948, + "left_out": true + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": 3.187245969303986, + "cross": 0.1782836891001694, + "left_out": true + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": 3.2314484938555843, + "cross": -0.10576980221448397, + "left_out": true + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 3.942616171821482, + "cross": -4.209909986255906, + "left_out": true + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 3.151544810257748, + "cross": -4.53046489290933, + "left_out": true + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -1.9531530106170079, + "cross": -9.271445228715226, + "left_out": true + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": -1.7547089665624107, + "cross": -10.027449393088341, + "left_out": true + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 0.4883321814740808, + "cross": -10.953005672681499, + "left_out": true + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 3.4362420980248993, + "cross": -6.36458371725597, + "left_out": true + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 2.666681585119071, + "cross": -6.263138777661008, + "left_out": true + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": 2.426978358491916, + "cross": -5.723695705041275, + "left_out": true + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": 2.9287571094173197, + "cross": -4.493750394149314, + "left_out": true + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": 2.806737713459394, + "cross": -3.8785210931519956, + "left_out": true + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": 2.842074789708281, + "cross": -4.3439351448140435, + "left_out": true + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": 1.0871001444991615, + "cross": -5.036033633374463, + "left_out": true + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": 1.3689837230434478, + "cross": -4.992233406902417, + "left_out": true + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 1.6283582230896183, + "cross": -3.808682537626663, + "left_out": true + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 2.035982913496653, + "cross": -4.430215593628527, + "left_out": true + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": 1.5392424386005674, + "cross": -3.818889214052594, + "left_out": true + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 1.6724571992047952, + "cross": -4.904409934035063, + "left_out": true + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 1.785742881454091, + "cross": -4.5338482575797805, + "left_out": true + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 2.4061620165772797, + "cross": -4.564675161399831, + "left_out": true + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 2.1102901498190425, + "cross": -4.445431382167308, + "left_out": true + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": 1.3641713733798424, + "cross": -4.490850400331883, + "left_out": true + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 4.8777799668705395, + "cross": -2.4218733367469647, + "left_out": true + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 1.8464461509610124, + "cross": -4.780870271977656, + "left_out": true + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 1.7131628156218768, + "cross": -4.420211362028308, + "left_out": true + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": 1.2753602630588092, + "cross": -4.377015907659064, + "left_out": true + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": 1.3217067561549258, + "cross": -4.487969940804962, + "left_out": true + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": 1.341061469622184, + "cross": -4.502613096623323, + "left_out": true + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 1.240214492037991, + "cross": -4.25980470037275, + "left_out": true + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": 1.1563324829811354, + "cross": -4.375635886001585, + "left_out": true + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 1.3128539611348586, + "cross": -4.408504017328743, + "left_out": true + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": -0.021130936882315633, + "cross": -0.014685581705385517, + "left_out": false + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.2252460847352409, + "cross": -0.35092189735546386, + "left_out": false + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.25594824716814935, + "cross": -0.08473509887668716, + "left_out": false + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.10106612019925353, + "cross": -0.2739222163834359, + "left_out": false + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.1877875346322736, + "cross": -0.23857654250602403, + "left_out": false + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": 0.08398470791624287, + "cross": -0.14722714055306624, + "left_out": false + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -0.4242869893022767, + "cross": 0.25636815673547425, + "left_out": false + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": 0.4317762891086747, + "cross": -0.29073074932170334, + "left_out": false + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -1.6215743949131212, + "cross": -0.09223718434255655, + "left_out": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.326375870499165, + "cross": -0.06775430886451532, + "left_out": false + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -0.30235284891208397, + "cross": -0.07392175032729012, + "left_out": false + } + ] + }, + "2020-11": { + "n": 2, + "along": -0.038052503534163486, + "along_sd": 0.10205876938279584, + "cross": -0.08717556337735058, + "cross_sd": 0.16811346876623726, + "rate": 0.42270513589851577, + "clock_s": -5.401283348963032, + "pred_along": 0.0762962996871725, + "pred_cross": 0.08129424749200792, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": -1.8025898405686736, + "cross": 3.5025806669351582, + "left_out": false + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -2.0136373968776704, + "cross": 3.3193827393521063, + "left_out": false + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": -1.857955279217591, + "cross": 3.346848486538034, + "left_out": false + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -1.9752720076139534, + "cross": 3.338281709493389, + "left_out": false + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": -1.8305207204989447, + "cross": 3.384484216970333, + "left_out": false + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": -1.9266339021944197, + "cross": 3.329610140450016, + "left_out": false + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": -1.9421166084891333, + "cross": 3.545639411662715, + "left_out": false + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -1.9763119140654721, + "cross": 3.3711821362162033, + "left_out": false + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": -1.8651535593825457, + "cross": 3.3586299905181694, + "left_out": false + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": -1.921942350470778, + "cross": 3.340071251596174, + "left_out": false + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": -1.9209559176163282, + "cross": 3.3195823209134616, + "left_out": false + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -2.006853505700929, + "cross": 3.3292769426392765, + "left_out": false + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.1210174015468999, + "cross": 0.17387701054294974, + "left_out": false + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.16050909976127034, + "cross": 0.13284373502472382, + "left_out": false + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.03524550018974192, + "cross": 0.19354432020076082, + "left_out": false + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": -0.008591932978558415, + "cross": 0.1478370221250093, + "left_out": false + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.05377606076921264, + "cross": 0.1153501203065701, + "left_out": false + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": -0.01465873983258712, + "cross": 0.16273966111509638, + "left_out": false + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.0636510171216566, + "cross": -0.3513287052389773, + "left_out": false + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.4279910839606579, + "cross": 0.027294904757484147, + "left_out": false + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.5119118171911048, + "cross": -0.6650170691708519, + "left_out": false + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.03983029018716632, + "cross": -0.4110861551498586, + "left_out": false + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.2926549498620042, + "cross": -0.04744807036477983, + "left_out": false + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.042655524996783455, + "cross": -0.28876024153373636, + "left_out": false + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.24653471645871752, + "cross": 0.023047128509917483, + "left_out": false + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5524052431447062, + "cross": 0.05408306548096638, + "left_out": false + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.1848961174893393, + "cross": 1.1352139929082035, + "left_out": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.8258529848916574, + "cross": 0.27463146266954014, + "left_out": false + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.40535697209561466, + "cross": 0.7072969435761852, + "left_out": false + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.11723495715681245, + "cross": -0.1457830188370897, + "left_out": false + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.02236301269473936, + "cross": 0.16640532260240304, + "left_out": false + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.14192382071855475, + "cross": -0.24568784709324037, + "left_out": false + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.30433853908596004, + "cross": -0.05776068192215943, + "left_out": false + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.09591498295092195, + "cross": -0.09865239994188628, + "left_out": false + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.26584810724346436, + "cross": -0.1974770337394843, + "left_out": false + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.08978918638598843, + "cross": -0.13901282202359666, + "left_out": false + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.27064214001015424, + "cross": 0.04596420715099618, + "left_out": false + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.05608048614405119, + "cross": -0.11929056205103857, + "left_out": false + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.23362821025344058, + "cross": 0.8192031029910695, + "left_out": false + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.7080973005691741, + "cross": 0.07322603846759054, + "left_out": false + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.0400898034028245, + "cross": 0.4981679237148157, + "left_out": false + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.22254946541933102, + "cross": 0.04178873330918774, + "left_out": false + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.8087020550723398, + "cross": -3.182244613562128, + "left_out": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.08268347553512642, + "cross": 1.292872419484171, + "left_out": false + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.2499753130005256, + "cross": 0.008361929305914194, + "left_out": false + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.23398295167300798, + "cross": -0.2129590526129854, + "left_out": false + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.04203438187771351, + "cross": 0.7449007070837423, + "left_out": false + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -1.019086245264112, + "cross": -0.11806341326435195, + "left_out": false + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.08011867865597254, + "cross": 0.11750574831574111, + "left_out": false + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.07505747792022101, + "cross": -0.4262131773133139, + "left_out": false + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.25574395084118867, + "cross": -0.10387350248724594, + "left_out": false + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.21059072191136685, + "cross": -0.051589895766950125, + "left_out": false + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.44211465937017447, + "cross": 0.32482977890652265, + "left_out": false + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.36762054860641336, + "cross": 0.6358525768314748, + "left_out": false + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.6037034914809881, + "cross": 0.04024809154221228, + "left_out": false + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.08175794566472575, + "cross": 0.28664966662285957, + "left_out": false + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.1419841596244415, + "cross": -0.030483421856357787, + "left_out": false + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.06916884307562206, + "cross": -0.08994054250076126, + "left_out": false + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.2879783458177102, + "cross": 0.7037622532861296, + "left_out": false + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.08198508059909626, + "cross": 0.12458525810627688, + "left_out": false + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.03785814786130365, + "cross": -0.15940062565191612, + "left_out": false + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8846590656008706, + "cross": 0.6812571891273814, + "left_out": false + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.0942402504585942, + "cross": 0.3616171535069107, + "left_out": false + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.10969648755887076, + "cross": 0.3055051339435229, + "left_out": false + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.08446337047606077, + "cross": -0.45239602052585304, + "left_out": false + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.325204192558086, + "cross": -1.3793625870177897, + "left_out": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.9194664879416622, + "cross": 0.07425001662277127, + "left_out": false + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.1486125563388825, + "cross": 0.17418698948287234, + "left_out": false + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.09235901186066994, + "cross": 0.7118820933120622, + "left_out": false + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.1904093602450659, + "cross": 0.07667167752671356, + "left_out": false + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.312273133792458, + "cross": 0.6918754387425349, + "left_out": false + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.2769767082193634, + "cross": 0.2264012807134375, + "left_out": false + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.537668348481659, + "cross": -0.6282116656100033, + "left_out": false + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.24834287400226204, + "cross": -0.5848485328288038, + "left_out": false + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.018477650375013706, + "cross": 0.5982537836736559, + "left_out": false + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.4297350851421131, + "cross": -0.02352473787451834, + "left_out": false + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.06331841252682287, + "cross": 0.5876029507885543, + "left_out": false + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.07347443857112301, + "cross": -0.4981553955826632, + "left_out": false + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.18678675549176083, + "cross": -0.12759611985111724, + "left_out": false + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.8144368052040386, + "cross": -0.15892562220692114, + "left_out": false + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.5221654098559504, + "cross": -0.03990551329666772, + "left_out": false + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.22037623365914796, + "cross": -0.08552787140253917, + "left_out": false + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.2969077823941997, + "cross": 1.9830182004139274, + "left_out": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.2760599299284497, + "cross": -0.37657532413722833, + "left_out": false + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.14979384349777278, + "cross": -0.016431455375843344, + "left_out": false + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.18263635875310893, + "cross": 0.016863744274494524, + "left_out": false + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.13613119323297768, + "cross": -0.09410957279997416, + "left_out": false + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.11661314310584155, + "cross": -0.1087709459949032, + "left_out": false + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.05680949361237858, + "cross": 0.07614099416920916, + "left_out": false + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": -0.02697324627415575, + "cross": -0.039718827373212466, + "left_out": false + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.12964922893115552, + "cross": -0.07262293343299356, + "left_out": false + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": 0.06400626446693888, + "cross": 0.08093790660776805, + "left_out": true + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.14011127515193345, + "cross": -0.2552890303939787, + "left_out": true + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.2969721858844397, + "cross": 0.025757385769169132, + "left_out": false + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.060054103555071986, + "cross": -0.16343741923552865, + "left_out": false + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.2287876592697634, + "cross": -0.12809977815119294, + "left_out": false + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": 0.12497298735950674, + "cross": -0.036758199271059784, + "left_out": false + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -1.267742933640402, + "cross": -0.8336043004237678, + "left_out": false + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": -0.411725231212314, + "cross": -1.3809059339396752, + "left_out": false + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -2.465123823416185, + "cross": -1.1825958700576829, + "left_out": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.10943932818491181, + "cross": 0.04721624609183333, + "left_out": false + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -0.08528999654096842, + "cross": 0.04088169482477201, + "left_out": false + } + ] + }, + "2022-08": { + "n": 4, + "along": 0.17862035886475258, + "along_sd": 0.1341106587778036, + "cross": -0.0875566081916906, + "cross_sd": 0.07557057768611851, + "rate": 0.6776359759831184, + "clock_s": 15.815602936866721, + "pred_along": 0.10741387168079686, + "pred_cross": 0.10688965560689354, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": -1.8700779615910816, + "cross": 3.6307406889690985, + "left_out": false + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -2.081132294462219, + "cross": 3.447541833373788, + "left_out": false + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": -1.9254557911201737, + "cross": 3.4750072888912085, + "left_out": false + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -2.0427809845372775, + "cross": 3.4664395767768363, + "left_out": false + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": -1.8980508319152676, + "cross": 3.5126403557785135, + "left_out": false + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": -1.9941710254957734, + "cross": 3.4577654958056634, + "left_out": false + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": -2.009659549123534, + "cross": 3.6737942341846246, + "left_out": false + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -2.043876720289621, + "cross": 3.4993348718259814, + "left_out": false + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": -1.9327496476715122, + "cross": 3.486779969004148, + "left_out": false + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": -1.9895488447304774, + "cross": 3.468220176229667, + "left_out": false + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": -1.988572810834515, + "cross": 3.4477302697040932, + "left_out": false + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -2.0744808850774636, + "cross": 3.4574237883534202, + "left_out": false + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.11537574165006728, + "cross": 0.173619929510119, + "left_out": false + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.15486806910461415, + "cross": 0.1325898772504206, + "left_out": false + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.029669450260435208, + "cross": 0.19354119126915006, + "left_out": false + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": -0.003016222598569088, + "cross": 0.1478349452977305, + "left_out": false + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.0593514307166871, + "cross": 0.1153490941778409, + "left_out": false + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": -0.009083710516847128, + "cross": 0.1627396873742993, + "left_out": false + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.06920368853556605, + "cross": -0.35126439507399093, + "left_out": false + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.43354337810339105, + "cross": 0.027360269629215523, + "left_out": false + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.5063599149126614, + "cross": -0.6649506314646092, + "left_out": false + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.04532017072672153, + "cross": -0.4108706462638223, + "left_out": false + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.2871657963219645, + "cross": -0.04723096163721296, + "left_out": false + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.048144095263361164, + "cross": -0.2885418804920314, + "left_out": false + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.24172212851144506, + "cross": 0.02402605422421257, + "left_out": false + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5572168564270245, + "cross": 0.055062595591106746, + "left_out": false + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.1894926141066497, + "cross": 1.1363106114096915, + "left_out": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.8304491042674821, + "cross": 0.2757282627631454, + "left_out": false + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.409952745173132, + "cross": 0.7083939248305218, + "left_out": false + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.11355262118462002, + "cross": -0.14445588764024456, + "left_out": false + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.01868106364826117, + "cross": 0.16773248560900864, + "left_out": false + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.14560536242031713, + "cross": -0.24436065377284424, + "left_out": false + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.3065724497348514, + "cross": -0.056588137870245615, + "left_out": false + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.09814859129654463, + "cross": -0.09747993177239847, + "left_out": false + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.26808142461460804, + "cross": -0.19630465352182447, + "left_out": false + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.08842910234593657, + "cross": -0.138224509008369, + "left_out": false + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.27200202910620686, + "cross": 0.04675237223148405, + "left_out": false + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.057440168741819314, + "cross": -0.11850250795196088, + "left_out": false + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.2343895502983931, + "cross": 0.8194091475394354, + "left_out": false + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.7088585770457649, + "cross": 0.07343203461041985, + "left_out": false + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.040846984676021, + "cross": 0.4983665388257319, + "left_out": false + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.22180231605953873, + "cross": 0.04196902221696052, + "left_out": false + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.8079590354412802, + "cross": -3.182071576454029, + "left_out": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.08342496663806195, + "cross": 1.2930416026673017, + "left_out": false + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.2492358116941697, + "cross": 0.008527439303113702, + "left_out": false + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.23324717003201262, + "cross": -0.21280093540198375, + "left_out": false + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.04277024096995109, + "cross": 0.7450587911875489, + "left_out": false + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -1.0183540796963904, + "cross": -0.11791263365750224, + "left_out": false + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.0794575791414244, + "cross": 0.1173934399895593, + "left_out": false + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.0743964582663825, + "cross": -0.4263260012904889, + "left_out": false + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.2550829234143242, + "cross": -0.10398682152549683, + "left_out": false + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.2099297135416442, + "cross": -0.05170373222486415, + "left_out": false + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.4436658938051964, + "cross": 0.32435783109111466, + "left_out": false + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.36917223439207053, + "cross": 0.6353807767238743, + "left_out": false + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.6052555469932368, + "cross": 0.03977641060507155, + "left_out": false + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.08396192038918218, + "cross": 0.2865093872398754, + "left_out": false + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.14418833295201788, + "cross": -0.030623570618141287, + "left_out": false + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.0713732181783944, + "cross": -0.09008055985518833, + "left_out": false + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.2913123961392577, + "cross": 0.7042985297857097, + "left_out": false + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.07865065377434106, + "cross": 0.12512169607339427, + "left_out": false + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.03452334140216355, + "cross": -0.15886402831014793, + "left_out": false + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8913693327560417, + "cross": 0.6788662711818543, + "left_out": false + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.10095061803740189, + "cross": 0.3592252830421361, + "left_out": false + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.10818038646081632, + "cross": 0.3009398798730642, + "left_out": false + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.0859810817047449, + "cross": -0.45695856486182584, + "left_out": false + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.32672285315134, + "cross": -1.3839232702517268, + "left_out": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.9219145347181206, + "cross": 0.0735451654474679, + "left_out": false + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.15106049883511474, + "cross": 0.17348385294115368, + "left_out": false + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.0899113057875089, + "cross": 0.7111809445970506, + "left_out": false + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.1881208798133359, + "cross": 0.07857589611348278, + "left_out": false + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.3099847771079175, + "cross": 0.6937797686909036, + "left_out": false + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.2746881970195286, + "cross": 0.22830576049982007, + "left_out": false + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.5327227264653538, + "cross": -0.6249207497448495, + "left_out": false + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.24337332906611725, + "cross": -0.5815567073436968, + "left_out": false + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.02347098374288844, + "cross": 0.6015464505537621, + "left_out": false + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.4347404921562883, + "cross": -0.020231630347925314, + "left_out": false + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.05830109372627152, + "cross": 0.5908963372106751, + "left_out": false + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.07850390983217564, + "cross": -0.49486164523958837, + "left_out": false + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.19181620242641698, + "cross": -0.12430235522657768, + "left_out": false + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.8194902773219565, + "cross": -0.15563111967985563, + "left_out": false + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.5272308868971329, + "cross": -0.03661076277477639, + "left_out": false + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.2152987199290796, + "cross": -0.08223296040493672, + "left_out": false + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.3019970285384885, + "cross": 1.9863139366381477, + "left_out": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.28118567677250866, + "cross": -0.3732793772317821, + "left_out": false + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.15494366285543557, + "cross": -0.013135140119605575, + "left_out": false + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.17709437866448216, + "cross": 0.020157873517231695, + "left_out": false + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.13058851021379866, + "cross": -0.09081545338210634, + "left_out": false + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.11106976692701245, + "cross": -0.1054768402637194, + "left_out": false + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.06384533646850463, + "cross": 0.07931224528546833, + "left_out": false + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": -0.01993657240656495, + "cross": -0.03654769982515499, + "left_out": false + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.13668672658405112, + "cross": -0.06945190126403948, + "left_out": false + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": 0.08623348909565305, + "cross": 0.06904015782350893, + "left_out": false + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.1178847657868156, + "cross": -0.2671843696071567, + "left_out": false + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.3269950444629891, + "cross": 0.011975927724468757, + "left_out": true + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.030030583372907406, + "cross": -0.1772204447778023, + "left_out": true + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.2588118414131228, + "cross": -0.14188434873104655, + "left_out": true + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": 0.15499782229756104, + "cross": -0.05054432728833133, + "left_out": true + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -1.5865463841294396, + "cross": -1.1832011005005794, + "left_out": false + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": -0.7305743148527696, + "cross": -1.7305801259801832, + "left_out": false + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -2.7840190991560783, + "cross": -1.5323400785608536, + "left_out": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.023470075947755832, + "cross": 0.04611954862352778, + "left_out": false + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": 0.0006855197215395477, + "cross": 0.03971466286875989, + "left_out": false + } + ] + }, + "2025-10": { + "n": 3, + "along": 6.7433090271060045, + "along_sd": 0.8424659959701972, + "cross": 8.02735445028541, + "cross_sd": 0.22162361371860578, + "rate": 2.076757736895501, + "clock_s": 194.8222146658212, + "pred_along": 0.31128945170186806, + "pred_cross": 0.3790517372487808, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": 0.1409354671042261, + "cross": 0.1665596354243754, + "left_out": false + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -0.06993264184360856, + "cross": -0.01660406698943648, + "left_out": false + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": 0.08589785043681603, + "cross": 0.01087762012068717, + "left_out": false + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -0.03119506965882727, + "cross": 0.0023474812222434153, + "left_out": false + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": 0.11411484223244765, + "cross": 0.04862603138680167, + "left_out": false + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": 0.018187125259041523, + "cross": -0.006217358266101627, + "left_out": false + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": 0.002857844401048422, + "cross": 0.20983384985229275, + "left_out": false + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -0.030759147446961833, + "cross": 0.03546328829886079, + "left_out": false + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": 0.08122617016630174, + "cross": 0.023028966595259683, + "left_out": false + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": 0.02471247632133177, + "cross": 0.0045129003796326355, + "left_out": false + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": 0.025973822524858338, + "cross": -0.015935327096617484, + "left_out": false + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -0.05964658332591028, + "cross": -0.006196713630981834, + "left_out": false + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.1480094540051072, + "cross": 0.13916104721067063, + "left_out": false + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.18745543507477225, + "cross": 0.09811358842393236, + "left_out": false + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.05839095752245826, + "cross": 0.15787877819008186, + "left_out": false + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": -0.03172063177532507, + "cross": 0.11216788657294606, + "left_out": false + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.03066410990127127, + "cross": 0.079677407493581, + "left_out": false + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": -0.037753940503304564, + "cross": 0.12706336825948975, + "left_out": false + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.04160810594626741, + "cross": -0.38719924564031505, + "left_out": false + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.4059656031181626, + "cross": -0.008578868482310176, + "left_out": false + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.5339197382238029, + "cross": -0.7008942397752459, + "left_out": false + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.02040021228521767, + "cross": -0.4473353346570343, + "left_out": false + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.31205654782228415, + "cross": -0.0837009843566395, + "left_out": false + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.023276405469029645, + "cross": -0.3250160297158272, + "left_out": false + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.24797061273305102, + "cross": -0.012265351769066122, + "left_out": false + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5509895051702899, + "cross": 0.018774681975162282, + "left_out": false + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.1876854502673502, + "cross": 1.1009403832374718, + "left_out": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.8286492113146999, + "cross": 0.2403595545937875, + "left_out": false + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.40815981382545646, + "cross": 0.6730267564039328, + "left_out": false + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.10004439807772363, + "cross": -0.17393725839474417, + "left_out": false + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.005167249287274147, + "cross": 0.1382541741161825, + "left_out": false + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.1591249618450229, + "cross": -0.2738359133914362, + "left_out": false + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.33670865906439673, + "cross": -0.07150093948912961, + "left_out": false + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.1282874283254649, + "cross": -0.11238904950285222, + "left_out": false + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.2982227692733108, + "cross": -0.21121014888015577, + "left_out": false + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.05303480919477604, + "cross": -0.13955325851011666, + "left_out": false + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.3073968183815638, + "cross": 0.0454277115269164, + "left_out": false + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.09283562176271012, + "cross": -0.11982343640510881, + "left_out": false + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.26743142849708423, + "cross": 0.8350021104777274, + "left_out": false + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.7419008179994444, + "cross": 0.08902546818802382, + "left_out": false + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.0737998302589877, + "cross": 0.5141688585342652, + "left_out": false + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.18907988901675385, + "cross": 0.058294092737870104, + "left_out": false + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.7753300373927863, + "cross": -3.1655374691951232, + "left_out": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.11600292631872224, + "cross": 1.3096815199684393, + "left_out": false + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.21670592919288173, + "cross": 0.02527235413963784, + "left_out": false + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.20081602255714068, + "cross": -0.19584599105572276, + "left_out": false + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.07520068577722855, + "cross": 0.7620141266579568, + "left_out": false + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -0.9860237998625717, + "cross": -0.10074760733194921, + "left_out": false + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.05202214336833435, + "cross": 0.14209093232358747, + "left_out": false + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.04697296644892212, + "cross": -0.4016135880934414, + "left_out": false + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.2276719165443708, + "cross": -0.07925963063885481, + "left_out": false + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.18253100790298596, + "cross": -0.02696167410837227, + "left_out": false + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.43105589316504217, + "cross": 0.3613650523733729, + "left_out": false + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.3565498630441525, + "cross": 0.6723849595162337, + "left_out": false + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.5926208044491549, + "cross": 0.07677759783529152, + "left_out": false + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.05521647351999571, + "cross": 0.3160905388474176, + "left_out": false + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.11543848501026428, + "cross": -0.0010453784591561979, + "left_out": false + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.042619214923201955, + "cross": -0.06050518261403244, + "left_out": false + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.2463438458146485, + "cross": 0.7203484456815842, + "left_out": false + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.12362307992530848, + "cross": 0.14116893138065106, + "left_out": false + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.07949963280174978, + "cross": -0.14281951794838024, + "left_out": false + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8313202647005806, + "cross": 0.7395131789907937, + "left_out": false + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.040906811346583305, + "cross": 0.4198845374808805, + "left_out": false + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.05965215039316599, + "cross": 0.4085049584284093, + "left_out": false + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.13447165714718742, + "cross": -0.34941531959957384, + "left_out": false + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.37519247943177, + "cross": -1.2763970637164688, + "left_out": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.9361165121806676, + "cross": 0.1489929876350014, + "left_out": false + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.16525579823917974, + "cross": 0.2489164953268063, + "left_out": false + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.07572183943695619, + "cross": 0.7865956951339561, + "left_out": false + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.16839573028103708, + "cross": 0.1253666513675025, + "left_out": false + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.2902569314458483, + "cross": 0.7405687211998769, + "left_out": false + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.25496022207790275, + "cross": 0.27509248704541267, + "left_out": false + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.5004614016544, + "cross": -0.6239484729602651, + "left_out": false + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.21115511636202877, + "cross": -0.5808411848350485, + "left_out": false + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.05564614052976159, + "cross": 0.6020061598755698, + "left_out": false + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.4668922392466158, + "cross": -0.019899780666329345, + "left_out": false + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.02617162414074137, + "cross": 0.5911014961382415, + "left_out": false + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.11060882647539787, + "cross": -0.49478360957137746, + "left_out": false + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.2239214883608092, + "cross": -0.1242246875744033, + "left_out": false + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.8515479776074297, + "cross": -0.1558074044652759, + "left_out": false + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.5592645056542719, + "cross": -0.036913043520738216, + "left_out": false + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.18328966572568192, + "cross": -0.08266055871128102, + "left_out": false + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.333983507148328, + "cross": 1.9857568788087137, + "left_out": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.31309319849359474, + "cross": -0.374209791446781, + "left_out": false + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.18679922866774537, + "cross": -0.0143151149457742, + "left_out": false + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.14623890985227647, + "cross": 0.015071604911350673, + "left_out": false + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.09973513055157449, + "cross": -0.09590830386071618, + "left_out": false + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.08021838434336018, + "cross": -0.11057626508960292, + "left_out": false + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.08893205345369386, + "cross": 0.061649002084678876, + "left_out": false + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": 0.005146277151102692, + "cross": -0.05421686547784989, + "left_out": false + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.161765771512455, + "cross": -0.08712714648510812, + "left_out": false + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": -0.38421855504219615, + "cross": 0.4740291760150535, + "left_out": false + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.5883347223588148, + "cross": 0.1377492037687094, + "left_out": false + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": -0.2199256556567017, + "cross": 0.46763301255895534, + "left_out": false + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.5769605893744049, + "cross": 0.27846427779455124, + "left_out": false + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": -0.2881275015836078, + "cross": 0.313827557769897, + "left_out": false + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": -0.39195068754168794, + "cross": 0.40519499616349913, + "left_out": false + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": 6.999666938705169, + "cross": 8.201167008032444, + "left_out": true + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": 7.856865064407403, + "cross": 7.655884171730553, + "left_out": true + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": 5.804660812495961, + "cross": 7.8560200685825015, + "left_out": true + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -2.3226671504478325, + "cross": 0.2899329928931127, + "left_out": false + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -2.298489269880964, + "cross": 0.28542803757519203, + "left_out": false + } + ] + }, + "2026-06": { + "n": 2, + "along": -0.35608345295422184, + "along_sd": 0.012079044421599905, + "cross": 0.07856894609110644, + "cross_sd": 0.003059814066657618, + "rate": 0.24951519998565724, + "clock_s": -85.62607479817432, + "pred_along": 0.07547925204756872, + "pred_cross": 0.061010622909494626, + "resid": [ + { + "jd": 2454357.9722864265, + "site": "568", + "along": -1.588099985168027, + "cross": 3.151415220992503, + "left_out": false + }, + { + "jd": 2454357.9749954264, + "site": "T14", + "along": -1.7991285910492658, + "cross": 2.9682213868038465, + "left_out": false + }, + { + "jd": 2454357.977148426, + "site": "568", + "along": -1.643430804524401, + "cross": 2.9956891965517234, + "left_out": false + }, + { + "jd": 2454357.9804164264, + "site": "T14", + "along": -1.7607238974773904, + "cross": 2.9871268661171024, + "left_out": false + }, + { + "jd": 2454357.988547426, + "site": "568", + "along": -1.6159136180223448, + "cross": 3.0333388381486217, + "left_out": false + }, + { + "jd": 2454357.991281426, + "site": "T14", + "along": -1.7120072145100167, + "cross": 2.9784684850766223, + "left_out": false + }, + { + "jd": 2454357.9934094264, + "site": "568", + "along": -1.727473718301375, + "cross": 3.194500448268198, + "left_out": false + }, + { + "jd": 2454358.001943426, + "site": "T14", + "along": -1.761607954159052, + "cross": 3.0200538360329827, + "left_out": false + }, + { + "jd": 2454358.0140324263, + "site": "T14", + "along": -1.650362272212459, + "cross": 3.00751626593086, + "left_out": false + }, + { + "jd": 2454358.018061426, + "site": "T14", + "along": -1.7071220140621393, + "cross": 2.9889627441634223, + "left_out": false + }, + { + "jd": 2454358.022090426, + "site": "T14", + "along": -1.7061065511431603, + "cross": 2.9684788227023002, + "left_out": false + }, + { + "jd": 2454358.0261364263, + "site": "T14", + "along": -1.7919748695172157, + "cross": 2.978178804002721, + "left_out": false + }, + { + "jd": 2457669.0520271473, + "site": "F51", + "along": -0.1233764999059559, + "cross": 0.17302393462420995, + "left_out": false + }, + { + "jd": 2457669.0875231475, + "site": "F51", + "along": -0.16286761792341006, + "cross": 0.13198927510797562, + "left_out": false + }, + { + "jd": 2457672.0229691477, + "site": "F51", + "along": -0.03755445627987256, + "cross": 0.1925825152257913, + "left_out": false + }, + { + "jd": 2457672.0356021477, + "site": "F51", + "along": -0.010900654023310963, + "cross": 0.14687474182126692, + "left_out": false + }, + { + "jd": 2457672.048228148, + "site": "F51", + "along": 0.05146757470732149, + "cross": 0.1143873650424005, + "left_out": false + }, + { + "jd": 2457672.0608581477, + "site": "F51", + "along": -0.016966991179026034, + "cross": 0.1617764301544976, + "left_out": false + }, + { + "jd": 2457672.859609148, + "site": "926", + "along": 0.06135735278706824, + "cross": -0.35232036303268693, + "left_out": false + }, + { + "jd": 2457672.872699148, + "site": "926", + "along": 0.42569766793563313, + "cross": 0.026302763861712878, + "left_out": false + }, + { + "jd": 2457672.8857891476, + "site": "926", + "along": -0.5142049782842041, + "cross": -0.6660097022007624, + "left_out": false + }, + { + "jd": 2457674.820289148, + "site": "291", + "along": 0.03757433576431012, + "cross": -0.41214677397703586, + "left_out": false + }, + { + "jd": 2457674.841319148, + "site": "291", + "along": -0.29491047402143034, + "cross": -0.04850945228288692, + "left_out": false + }, + { + "jd": 2457674.857889148, + "site": "291", + "along": 0.04040034257294743, + "cross": -0.2898222224261095, + "left_out": false + }, + { + "jd": 2457687.789399149, + "site": "691", + "along": -0.24847560737385807, + "cross": 0.021557234705247858, + "left_out": false + }, + { + "jd": 2457687.803639149, + "site": "691", + "along": 0.5504647658035409, + "cross": 0.05259270534724068, + "left_out": false + }, + { + "jd": 2457690.818039149, + "site": "691", + "along": 1.1830425717330249, + "cross": 1.133629172109914, + "left_out": false + }, + { + "jd": 2457690.822819149, + "site": "691", + "along": 0.8239995867071719, + "cross": 0.2730464853891172, + "left_out": false + }, + { + "jd": 2457690.827579149, + "site": "691", + "along": 0.40350371910071203, + "cross": 0.7057118119438905, + "left_out": false + }, + { + "jd": 2457701.808899151, + "site": "807", + "along": -0.11875136964748562, + "cross": -0.14769940963355752, + "left_out": false + }, + { + "jd": 2457701.813269151, + "site": "807", + "along": -0.023879285559749434, + "cross": 0.16448879889131318, + "left_out": false + }, + { + "jd": 2457701.817629151, + "site": "807", + "along": 0.1404076868235645, + "cross": -0.24760450457259198, + "left_out": false + }, + { + "jd": 2457717.655589155, + "site": "807", + "along": 0.3033142508430104, + "cross": -0.0601507277590887, + "left_out": false + }, + { + "jd": 2457717.6589791547, + "site": "807", + "along": 0.09489080630422213, + "cross": -0.1010425528731853, + "left_out": false + }, + { + "jd": 2457717.6622091546, + "site": "807", + "along": 0.264824036092221, + "cross": -0.19986729084919103, + "left_out": false + }, + { + "jd": 2457728.628509158, + "site": "807", + "along": -0.09043897131738715, + "cross": -0.14176126828185112, + "left_out": false + }, + { + "jd": 2457728.6314391578, + "site": "807", + "along": 0.2699924764452944, + "cross": 0.04321565401998438, + "left_out": false + }, + { + "jd": 2457728.6342691574, + "site": "807", + "along": 0.055430936106640724, + "cross": -0.12203921120779088, + "left_out": false + }, + { + "jd": 2457740.0723091615, + "site": "C51", + "along": 0.23359805996935776, + "cross": 0.8160540019381034, + "left_out": false + }, + { + "jd": 2457740.0724291615, + "site": "C51", + "along": 0.7080671317129578, + "cross": 0.07007692132413738, + "left_out": false + }, + { + "jd": 2457740.2033391614, + "site": "C51", + "along": 1.0400697740825857, + "cross": 0.49501448072698084, + "left_out": false + }, + { + "jd": 2457740.530849161, + "site": "C51", + "along": -0.22254375658782388, + "cross": 0.03862463813584715, + "left_out": false + }, + { + "jd": 2457740.6618791614, + "site": "C51", + "along": -1.808685986814528, + "cross": -3.1854128933716543, + "left_out": false + }, + { + "jd": 2457740.727339161, + "site": "C51", + "along": 0.08270498022330572, + "cross": 1.2897019651587276, + "left_out": false + }, + { + "jd": 2457740.792909161, + "site": "C51", + "along": -0.24994855018190137, + "cross": 0.005189381937290487, + "left_out": false + }, + { + "jd": 2457740.923819162, + "site": "C51", + "along": -0.23394552546735572, + "cross": -0.21613579031144237, + "left_out": false + }, + { + "jd": 2457740.9239491615, + "site": "C51", + "along": 0.0420718529521099, + "cross": 0.7417239592473034, + "left_out": false + }, + { + "jd": 2457741.0548491618, + "site": "C51", + "along": -1.0190380324303592, + "cross": -0.12124428771173801, + "left_out": false + }, + { + "jd": 2457745.716455163, + "site": "F51", + "along": -0.07961188129444172, + "cross": 0.11420248549033217, + "left_out": false + }, + { + "jd": 2457745.7257251632, + "site": "F51", + "along": -0.07454962484670964, + "cross": -0.4295166099467649, + "left_out": false + }, + { + "jd": 2457745.7349751634, + "site": "F51", + "along": -0.2552349962335818, + "cross": -0.10717709413585418, + "left_out": false + }, + { + "jd": 2457745.744214163, + "site": "F51", + "along": -0.21008068107385203, + "cross": -0.054893657503115714, + "left_out": false + }, + { + "jd": 2457762.546370743, + "site": "807", + "along": 0.4453518442726329, + "cross": 0.32239826514042463, + "left_out": false + }, + { + "jd": 2457762.5509807426, + "site": "807", + "along": 0.37085848211478833, + "cross": 0.6334216664848418, + "left_out": false + }, + { + "jd": 2457762.555600743, + "site": "807", + "along": 0.6069420967989684, + "cross": 0.03781775588255216, + "left_out": false + }, + { + "jd": 2457769.550160745, + "site": "807", + "along": 0.08589366033952253, + "cross": 0.285140463161415, + "left_out": false + }, + { + "jd": 2457769.552490745, + "site": "807", + "along": 0.1461200917573551, + "cross": -0.031992336925973905, + "left_out": false + }, + { + "jd": 2457769.554720745, + "site": "807", + "along": 0.07330499861879096, + "cross": -0.09144917299544823, + "left_out": false + }, + { + "jd": 2457781.534020749, + "site": "807", + "along": 0.2930569585605972, + "cross": 0.7033308550337577, + "left_out": false + }, + { + "jd": 2457781.537750749, + "site": "807", + "along": -0.07690623646485259, + "cross": 0.1241540552530431, + "left_out": false + }, + { + "jd": 2457781.541490749, + "site": "807", + "along": -0.03277906215412624, + "cross": -0.1598316450269327, + "left_out": false + }, + { + "jd": 2457806.5989407552, + "site": "691", + "along": 0.8909507915889039, + "cross": 0.6781759047957009, + "left_out": false + }, + { + "jd": 2457806.601190755, + "site": "691", + "along": 0.10053180861779996, + "cross": 0.3585351247694315, + "left_out": false + }, + { + "jd": 2457862.9708607593, + "site": "G96", + "along": -0.10915961285269547, + "cross": 0.30504543156981734, + "left_out": false + }, + { + "jd": 2457862.977510759, + "site": "G96", + "along": 0.08500114550352032, + "cross": -0.45285401252232615, + "left_out": false + }, + { + "jd": 2457862.980820759, + "site": "G96", + "along": 2.325742516501859, + "cross": -1.3798193366715163, + "left_out": false + }, + { + "jd": 2457873.9585207575, + "site": "926", + "along": 0.9202530933335402, + "cross": 0.0760903909276683, + "left_out": false + }, + { + "jd": 2457873.965410758, + "site": "926", + "along": 0.14939898253210845, + "cross": 0.17602831588802484, + "left_out": false + }, + { + "jd": 2457873.9727207576, + "site": "926", + "along": -0.09157286444696147, + "cross": 0.7137245461230481, + "left_out": false + }, + { + "jd": 2457886.8695787555, + "site": "705", + "along": -0.18954206726868297, + "cross": 0.07998202866523056, + "left_out": false + }, + { + "jd": 2457886.8705927553, + "site": "705", + "along": -0.3114058664101584, + "cross": 0.695185853185175, + "left_out": false + }, + { + "jd": 2457886.8716047555, + "site": "705", + "along": -0.2761093065486297, + "cross": 0.22971177764787248, + "left_out": false + }, + { + "jd": 2457907.6809907504, + "site": "C51", + "along": -0.5342052423168181, + "cross": -0.6244162580492791, + "left_out": false + }, + { + "jd": 2457907.8119007503, + "site": "C51", + "along": -0.24486086595914425, + "cross": -0.5810556744929717, + "left_out": false + }, + { + "jd": 2457907.94280075, + "site": "C51", + "along": 0.021978452311410965, + "cross": 0.6020440549622191, + "left_out": false + }, + { + "jd": 2457908.00825075, + "site": "C51", + "along": 0.4332453770707881, + "cross": -0.019735746936324478, + "left_out": false + }, + { + "jd": 2457908.0737007502, + "site": "C51", + "along": -0.05979873145782428, + "cross": 0.591390563645176, + "left_out": false + }, + { + "jd": 2457908.1391507504, + "site": "C51", + "along": 0.07700364146469164, + "cross": -0.49436910827184927, + "left_out": false + }, + { + "jd": 2457908.1392807504, + "site": "C51", + "along": 0.19031595276211302, + "cross": -0.12380983105885658, + "left_out": false + }, + { + "jd": 2457908.2701907502, + "site": "C51", + "along": 0.8179848610893307, + "cross": -0.15514197487270373, + "left_out": false + }, + { + "jd": 2457908.33563775, + "site": "C51", + "along": 0.5257228801767919, + "cross": -0.03612325909246154, + "left_out": false + }, + { + "jd": 2457908.40108875, + "site": "C51", + "along": -0.21680933688933546, + "cross": -0.08174706322106616, + "left_out": false + }, + { + "jd": 2457908.46654075, + "site": "C51", + "along": 3.300483915923794, + "cross": 1.9867979728725944, + "left_out": false + }, + { + "jd": 2457908.66302075, + "site": "C51", + "along": 0.2796645168685978, + "cross": -0.3728000541043563, + "left_out": false + }, + { + "jd": 2457908.7939307503, + "site": "C51", + "along": 0.1534172039293071, + "cross": -0.012659035680911672, + "left_out": false + }, + { + "jd": 2457910.9083307493, + "site": "695", + "along": -0.1787117969089401, + "cross": 0.020585681308328208, + "left_out": false + }, + { + "jd": 2457910.911980749, + "site": "695", + "along": -0.13220609333073505, + "cross": -0.0903877256853718, + "left_out": false + }, + { + "jd": 2457910.9156407495, + "site": "695", + "along": -0.11268751085425324, + "cross": -0.10504919136188366, + "left_out": false + }, + { + "jd": 2457918.826080747, + "site": "695", + "along": 0.06183582166180687, + "cross": 0.07962352133719003, + "left_out": false + }, + { + "jd": 2457918.830360747, + "site": "695", + "along": -0.021946311553917706, + "cross": -0.03623645983164955, + "left_out": false + }, + { + "jd": 2457918.834640747, + "site": "695", + "along": 0.13467676579105906, + "cross": -0.06914070678882225, + "left_out": false + }, + { + "jd": 2459174.6778727276, + "site": "W84", + "along": 0.01047159524579646, + "cross": 0.131153364297587, + "left_out": false + }, + { + "jd": 2459174.6861597276, + "site": "W84", + "along": -0.19364643841881504, + "cross": -0.2050802403675319, + "left_out": false + }, + { + "jd": 2459810.8551097275, + "site": "F52", + "along": 0.24326177325672035, + "cross": 0.08769520908346162, + "left_out": false + }, + { + "jd": 2459810.866629727, + "site": "F52", + "along": -0.11376466702077054, + "cross": -0.10149686139135394, + "left_out": false + }, + { + "jd": 2459810.8781927275, + "site": "F52", + "along": 0.17507693997145637, + "cross": -0.06615652806587545, + "left_out": false + }, + { + "jd": 2459810.8897247273, + "site": "F52", + "along": 0.07126212764714655, + "cross": 0.025187762663552927, + "left_out": false + }, + { + "jd": 2460965.8298107223, + "site": "807", + "along": -0.3350125439687336, + "cross": 0.19248898581057808, + "left_out": false + }, + { + "jd": 2460965.8389507225, + "site": "807", + "along": 0.5211369011411051, + "cross": -0.3545837833005206, + "left_out": false + }, + { + "jd": 2460965.848090722, + "site": "807", + "along": -1.5321283817734268, + "cross": -0.15606676197993757, + "left_out": false + }, + { + "jd": 2461201.8718837486, + "site": "G37", + "along": -0.36816249568799975, + "cross": 0.08162875961735355, + "left_out": true + }, + { + "jd": 2461201.8833057485, + "site": "G37", + "along": -0.3440044070113155, + "cross": 0.07550913109849683, + "left_out": true + } + ] + } + }, + "prediction": { + "without": "2007-09", + "rows": [ + { + "date": "2026-06-11", + "sep": 0.1533847971336388, + "V": 22.36785731230646, + "elong": 98.30650171003336, + "r": 2.209691032178667 + }, + { + "date": "2026-06-21", + "sep": 0.16327353804746092, + "V": 22.357500366944446, + "elong": 107.27661578652354, + "r": 2.3053075667754546 + }, + { + "date": "2026-07-01", + "sep": 0.17240770498992483, + "V": 22.329430010169943, + "elong": 116.72753445018002, + "r": 2.3978876202676793 + }, + { + "date": "2026-07-11", + "sep": 0.17991221396940008, + "V": 22.2923984439599, + "elong": 126.4325732562154, + "r": 2.4875707128683535 + }, + { + "date": "2026-07-21", + "sep": 0.18483181093406184, + "V": 22.25911414784844, + "elong": 135.91717286949424, + "r": 2.574486558656658 + }, + { + "date": "2026-07-31", + "sep": 0.186419935450776, + "V": 22.24924418869701, + "elong": 144.22483959689512, + "r": 2.658755317447112 + }, + { + "date": "2026-08-10", + "sep": 0.18446178298489418, + "V": 22.292927891387585, + "elong": 149.7083573504509, + "r": 2.740488107978777 + }, + { + "date": "2026-08-20", + "sep": 0.17933614087922672, + "V": 22.423316225493508, + "elong": 150.48126011862777, + "r": 2.8197876473294015 + }, + { + "date": "2030-07-30", + "sep": 6.716295795518234, + "V": 20.216887346611934, + "elong": 60.08322448933063, + "r": 0.9813586732007213 + }, + { + "date": "2030-08-09", + "sep": 6.210937521844582, + "V": 20.40727038461985, + "elong": 67.48029477218353, + "r": 1.112461422209315 + }, + { + "date": "2030-08-19", + "sep": 5.494520259747611, + "V": 20.648570847284432, + "elong": 73.08719169807216, + "r": 1.2423496123373527 + }, + { + "date": "2030-08-29", + "sep": 4.721030932399102, + "V": 20.930317839829307, + "elong": 76.61602876238615, + "r": 1.3693266389949184 + }, + { + "date": "2030-09-08", + "sep": 3.995897449497755, + "V": 21.233676917835734, + "elong": 78.16428009140971, + "r": 1.4926475004541353 + }, + { + "date": "2030-09-18", + "sep": 3.3655779927984533, + "V": 21.54179128317491, + "elong": 78.00668717079105, + "r": 1.6120381980456815 + }, + { + "date": "2030-09-28", + "sep": 2.8382640828715444, + "V": 21.842287725506857, + "elong": 76.46389412292497, + "r": 1.7274599478909314 + }, + { + "date": "2030-10-08", + "sep": 2.4050703959068764, + "V": 22.126836580192784, + "elong": 73.84331514055894, + "r": 1.8389905652503908 + }, + { + "date": "2030-10-18", + "sep": 2.051360945211263, + "V": 22.390897380932813, + "elong": 70.38879875433068, + "r": 1.9467633542478386 + } + ] + } +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/robust.json b/papers/dark_comet/data/2016_TA56/robust.json new file mode 100644 index 0000000000000000000000000000000000000000..8c2a2e7109d1ed51346b9fb97249c9e39b36c219 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/robust.json @@ -0,0 +1,4629 @@ +{ + "desig": "2016 TA56", + "n_positions": 102, + "n_nights": 28, + "held": [ + 2454358 + ], + "boot": 200, + "fits": { + "gravity rest none": { + "tag": "gravity rest none", + "A2": null, + "A2_sigma": null, + "n": 90, + "kept": 85, + "chi2": 118.50516905896872, + "dof": 164 + }, + "gravity rest night": { + "tag": "gravity rest night", + "A2": null, + "A2_sigma": null, + "n": 90, + "kept": 89, + "chi2": 57.676612195862795, + "dof": 172 + }, + "jack none 2454358": { + "tag": "jack none 2454358", + "A2": -2.237621902583837e-12, + "A2_sigma": 4.3438197747298636e-12, + "n": 90, + "kept": 85, + "chi2": 118.23984106246266, + "dof": 163 + }, + "jack night 2454358": { + "tag": "jack night 2454358", + "A2": -5.812586784901973e-13, + "A2_sigma": 6.829114819854848e-12, + "n": 90, + "kept": 89, + "chi2": 57.669365476398006, + "dof": 171 + }, + "jack none 2457675": { + "tag": "jack none 2457675", + "A2": -3.524953501879122e-12, + "A2_sigma": 1.749196268246576e-13, + "n": 99, + "kept": 94, + "chi2": 119.46904982226074, + "dof": 181 + }, + "jack none 2457691": { + "tag": "jack none 2457691", + "A2": -3.5283378044375088e-12, + "A2_sigma": 1.748006265412821e-13, + "n": 99, + "kept": 95, + "chi2": 115.59678840237399, + "dof": 183 + }, + "jack none 2457672": { + "tag": "jack none 2457672", + "A2": -3.628303053080593e-12, + "A2_sigma": 1.830670211213216e-13, + "n": 98, + "kept": 93, + "chi2": 118.3065340672189, + "dof": 179 + }, + "jack none 2457688": { + "tag": "jack none 2457688", + "A2": -3.5317378511508724e-12, + "A2_sigma": 1.7478070838811077e-13, + "n": 100, + "kept": 95, + "chi2": 119.6753491928111, + "dof": 183 + }, + "jack night 2457672": { + "tag": "jack night 2457672", + "A2": -3.5223337926150775e-12, + "A2_sigma": 3.8122361469473e-13, + "n": 98, + "kept": 97, + "chi2": 57.51148277670564, + "dof": 187 + }, + "base night": { + "tag": "base night", + "A2": -3.448859897611447e-12, + "A2_sigma": 3.701484681570248e-13, + "n": 102, + "kept": 101, + "chi2": 58.21954255180611, + "dof": 195 + }, + "jack night 2457673": { + "tag": "jack night 2457673", + "A2": -3.4201932727746706e-12, + "A2_sigma": 3.720256579923342e-13, + "n": 99, + "kept": 98, + "chi2": 56.464930194538915, + "dof": 189 + }, + "jack night 2457688": { + "tag": "jack night 2457688", + "A2": -3.445833304667191e-12, + "A2_sigma": 3.7192862708638707e-13, + "n": 100, + "kept": 99, + "chi2": 57.428456518842104, + "dof": 191 + }, + "base none": { + "tag": "base none", + "A2": -3.535611872094858e-12, + "A2_sigma": 1.7404439502954455e-13, + "n": 102, + "kept": 97, + "chi2": 121.17710872145157, + "dof": 187 + }, + "jack none 2457673": { + "tag": "jack none 2457673", + "A2": -3.5140674236692432e-12, + "A2_sigma": 1.7511002792444123e-13, + "n": 99, + "kept": 94, + "chi2": 115.69858571118584, + "dof": 181 + }, + "jack none 2457669": { + "tag": "jack none 2457669", + "A2": -3.591721274563867e-12, + "A2_sigma": 1.7784328580945064e-13, + "n": 100, + "kept": 95, + "chi2": 117.77039577338596, + "dof": 183 + }, + "jack night 2457669": { + "tag": "jack night 2457669", + "A2": -3.5194609598636774e-12, + "A2_sigma": 3.809379736371233e-13, + "n": 100, + "kept": 99, + "chi2": 56.65549112733178, + "dof": 191 + }, + "jack night 2457675": { + "tag": "jack night 2457675", + "A2": -3.4320668592284883e-12, + "A2_sigma": 3.716548482940979e-13, + "n": 99, + "kept": 98, + "chi2": 57.716983820699205, + "dof": 189 + }, + "jack night 2457691": { + "tag": "jack night 2457691", + "A2": -3.4640250006992924e-12, + "A2_sigma": 3.719719610208906e-13, + "n": 99, + "kept": 98, + "chi2": 52.227500697441265, + "dof": 189 + }, + "jack none 2457702": { + "tag": "jack none 2457702", + "A2": -3.5290095890300284e-12, + "A2_sigma": 1.767814487763612e-13, + "n": 99, + "kept": 94, + "chi2": 119.65118426365106, + "dof": 181 + }, + "jack night 2457702": { + "tag": "jack night 2457702", + "A2": -3.4379317050549074e-12, + "A2_sigma": 3.744489922935045e-13, + "n": 99, + "kept": 98, + "chi2": 57.76828140639094, + "dof": 189 + }, + "jack night 2457718": { + "tag": "jack night 2457718", + "A2": -3.401220744633096e-12, + "A2_sigma": 3.7453109306707173e-13, + "n": 99, + "kept": 98, + "chi2": 57.416963072251896, + "dof": 189 + }, + "jack none 2457718": { + "tag": "jack none 2457718", + "A2": -3.4931563370641973e-12, + "A2_sigma": 1.7673967243947781e-13, + "n": 99, + "kept": 94, + "chi2": 118.71854443030065, + "dof": 181 + }, + "jack none 2457729": { + "tag": "jack none 2457729", + "A2": -3.5206323022978906e-12, + "A2_sigma": 1.765173716216372e-13, + "n": 99, + "kept": 94, + "chi2": 119.90790902054744, + "dof": 181 + }, + "jack none 2457740": { + "tag": "jack none 2457740", + "A2": -3.484804889598388e-12, + "A2_sigma": 1.7497410563640903e-13, + "n": 99, + "kept": 94, + "chi2": 110.20365889503434, + "dof": 181 + }, + "jack night 2457729": { + "tag": "jack night 2457729", + "A2": -3.4303732046550925e-12, + "A2_sigma": 3.743286066422066e-13, + "n": 99, + "kept": 98, + "chi2": 57.830309749099655, + "dof": 189 + }, + "jack night 2457740": { + "tag": "jack night 2457740", + "A2": -3.3927187796563376e-12, + "A2_sigma": 3.718016271019187e-13, + "n": 99, + "kept": 98, + "chi2": 54.459377455100096, + "dof": 189 + }, + "jack none 2457746": { + "tag": "jack none 2457746", + "A2": -3.64423070538842e-12, + "A2_sigma": 1.8275878437144483e-13, + "n": 98, + "kept": 93, + "chi2": 112.63569704947693, + "dof": 179 + }, + "jack none 2457782": { + "tag": "jack none 2457782", + "A2": -3.516671406625288e-12, + "A2_sigma": 1.7574745541014062e-13, + "n": 99, + "kept": 94, + "chi2": 115.27757459767287, + "dof": 181 + }, + "jack none 2457770": { + "tag": "jack none 2457770", + "A2": -3.5303086100277653e-12, + "A2_sigma": 1.7570013017694437e-13, + "n": 99, + "kept": 94, + "chi2": 120.06449267601639, + "dof": 181 + }, + "jack none 2457741": { + "tag": "jack none 2457741", + "A2": -3.5514539116445042e-12, + "A2_sigma": 1.7593281459541704e-13, + "n": 95, + "kept": 91, + "chi2": 106.94267353999912, + "dof": 175 + }, + "jack night 2457746": { + "tag": "jack night 2457746", + "A2": -3.5345200389154217e-12, + "A2_sigma": 3.8175141764474617e-13, + "n": 98, + "kept": 97, + "chi2": 56.19682431174047, + "dof": 187 + }, + "jack night 2457782": { + "tag": "jack night 2457782", + "A2": -3.4238070821846946e-12, + "A2_sigma": 3.7477893020829994e-13, + "n": 99, + "kept": 98, + "chi2": 56.29518352950071, + "dof": 189 + }, + "jack night 2457741": { + "tag": "jack night 2457741", + "A2": -3.484560528493021e-12, + "A2_sigma": 3.717990581030415e-13, + "n": 95, + "kept": 94, + "chi2": 48.48107353210737, + "dof": 181 + }, + "jack none 2457763": { + "tag": "jack none 2457763", + "A2": -3.4902239799123958e-12, + "A2_sigma": 1.7575049636846955e-13, + "n": 99, + "kept": 94, + "chi2": 109.41227380520283, + "dof": 181 + }, + "jack night 2457763": { + "tag": "jack night 2457763", + "A2": -3.3941711798031593e-12, + "A2_sigma": 3.737820286972699e-13, + "n": 99, + "kept": 98, + "chi2": 54.465882918629816, + "dof": 189 + }, + "jack night 2457770": { + "tag": "jack night 2457770", + "A2": -3.441414314344806e-12, + "A2_sigma": 3.7396337297763977e-13, + "n": 99, + "kept": 98, + "chi2": 57.88122463575212, + "dof": 189 + }, + "jack none 2457807": { + "tag": "jack none 2457807", + "A2": -3.5219016496935242e-12, + "A2_sigma": 1.749834895789894e-13, + "n": 100, + "kept": 95, + "chi2": 115.11633548526065, + "dof": 183 + }, + "jack night 2457863": { + "tag": "jack night 2457863", + "A2": -3.4471628774272703e-12, + "A2_sigma": 3.7388220975698486e-13, + "n": 99, + "kept": 99, + "chi2": 57.80908434913663, + "dof": 191 + }, + "jack none 2457874": { + "tag": "jack none 2457874", + "A2": -3.504020775880921e-12, + "A2_sigma": 1.7480417529814662e-13, + "n": 99, + "kept": 94, + "chi2": 113.108636232062, + "dof": 181 + }, + "jack night 2457807": { + "tag": "jack night 2457807", + "A2": -3.4236802768928105e-12, + "A2_sigma": 3.7560806701020213e-13, + "n": 100, + "kept": 99, + "chi2": 55.26031441046512, + "dof": 191 + }, + "jack night 2457874": { + "tag": "jack night 2457874", + "A2": -3.4051801455328983e-12, + "A2_sigma": 3.727828728361982e-13, + "n": 99, + "kept": 98, + "chi2": 55.569467156032374, + "dof": 189 + }, + "jack none 2457863": { + "tag": "jack none 2457863", + "A2": -3.5330960165660326e-12, + "A2_sigma": 1.749753017224361e-13, + "n": 99, + "kept": 95, + "chi2": 119.93238372571226, + "dof": 183 + }, + "jack night 2457887": { + "tag": "jack night 2457887", + "A2": -3.438863744015768e-12, + "A2_sigma": 3.710297949076386e-13, + "n": 99, + "kept": 98, + "chi2": 57.18883329797548, + "dof": 189 + }, + "jack none 2457887": { + "tag": "jack none 2457887", + "A2": -3.530842875719088e-12, + "A2_sigma": 1.7439928316355785e-13, + "n": 99, + "kept": 94, + "chi2": 117.76431776785128, + "dof": 181 + }, + "jack none 2457908": { + "tag": "jack none 2457908", + "A2": -3.5182004072172134e-12, + "A2_sigma": 1.753496726968901e-13, + "n": 91, + "kept": 87, + "chi2": 107.48483666659494, + "dof": 167 + }, + "jack none 2457909": { + "tag": "jack none 2457909", + "A2": -3.5290285770825826e-12, + "A2_sigma": 1.7427865538750962e-13, + "n": 100, + "kept": 95, + "chi2": 120.12106010716471, + "dof": 183 + }, + "jack night 2457908": { + "tag": "jack night 2457908", + "A2": -3.4324376165934213e-12, + "A2_sigma": 3.707572758835571e-13, + "n": 91, + "kept": 90, + "chi2": 51.4866891892394, + "dof": 173 + }, + "jack night 2457909": { + "tag": "jack night 2457909", + "A2": -3.437205131192615e-12, + "A2_sigma": 3.7075653552126467e-13, + "n": 100, + "kept": 99, + "chi2": 57.64332595148038, + "dof": 191 + }, + "jack none 2457911": { + "tag": "jack none 2457911", + "A2": -3.602131156605343e-12, + "A2_sigma": 1.792982792170444e-13, + "n": 99, + "kept": 94, + "chi2": 116.62996324984715, + "dof": 181 + }, + "jack night 2457919": { + "tag": "jack night 2457919", + "A2": -3.3946661886112056e-12, + "A2_sigma": 3.815981090696018e-13, + "n": 99, + "kept": 98, + "chi2": 57.54923551125746, + "dof": 189 + }, + "jack night 2457911": { + "tag": "jack night 2457911", + "A2": -3.51456845677544e-12, + "A2_sigma": 3.7949003927706386e-13, + "n": 99, + "kept": 98, + "chi2": 56.32392417232353, + "dof": 189 + }, + "jack none 2459175": { + "tag": "jack none 2459175", + "A2": -3.5455272154892996e-12, + "A2_sigma": 1.7480660706764436e-13, + "n": 100, + "kept": 95, + "chi2": 120.41563692870291, + "dof": 183 + }, + "jack none 2457919": { + "tag": "jack none 2457919", + "A2": -3.4933171524371874e-12, + "A2_sigma": 1.803062976273821e-13, + "n": 99, + "kept": 94, + "chi2": 119.41306367778829, + "dof": 181 + }, + "jack night 2459175": { + "tag": "jack night 2459175", + "A2": -3.4701781271735e-12, + "A2_sigma": 3.7380699527602563e-13, + "n": 100, + "kept": 99, + "chi2": 57.81563494332859, + "dof": 191 + }, + "jack none 2459811": { + "tag": "jack none 2459811", + "A2": -3.5351688178643986e-12, + "A2_sigma": 1.7546302658572992e-13, + "n": 98, + "kept": 93, + "chi2": 120.77308552618047, + "dof": 179 + }, + "boot held 1": { + "tag": "boot held 1", + "A2": -3.5479979939368916e-12, + "A2_sigma": 3.6221350988733614e-13, + "n": 89, + "kept": 89, + "chi2": 59.01570857273756, + "dof": 171 + }, + "jack none 2460966": { + "tag": "jack none 2460966", + "A2": -3.792854227181726e-12, + "A2_sigma": 5.688131523952035e-13, + "n": 99, + "kept": 95, + "chi2": 116.08495221787705, + "dof": 183 + }, + "jack night 2459811": { + "tag": "jack night 2459811", + "A2": -3.4495738117239087e-12, + "A2_sigma": 3.7454912013811125e-13, + "n": 98, + "kept": 97, + "chi2": 58.11466625803958, + "dof": 187 + }, + "jack night 2460966": { + "tag": "jack night 2460966", + "A2": -3.957559526879713e-12, + "A2_sigma": 9.112135487709889e-13, + "n": 99, + "kept": 98, + "chi2": 50.14789020296106, + "dof": 189 + }, + "boot free 2": { + "tag": "boot free 2", + "A2": -3.336745192044642e-12, + "A2_sigma": 3.2892825206701085e-13, + "n": 114, + "kept": 114, + "chi2": 68.10863080541185, + "dof": 221 + }, + "jack none 2461202": { + "tag": "jack none 2461202", + "A2": -3.5353104534409543e-12, + "A2_sigma": 1.74047064297782e-13, + "n": 100, + "kept": 95, + "chi2": 120.83188526975526, + "dof": 183 + }, + "boot free 0": { + "tag": "boot free 0", + "A2": -3.520046008512543e-12, + "A2_sigma": 3.635139113841231e-13, + "n": 89, + "kept": 88, + "chi2": 39.97918604363648, + "dof": 169 + }, + "boot free 1": { + "tag": "boot free 1", + "A2": -3.724230149140596e-12, + "A2_sigma": 3.4553744494132406e-13, + "n": 100, + "kept": 98, + "chi2": 34.4263724227348, + "dof": 189 + }, + "jack night 2461202": { + "tag": "jack night 2461202", + "A2": -3.4591074008692686e-12, + "A2_sigma": 3.7066578262320843e-13, + "n": 100, + "kept": 99, + "chi2": 57.915756009214896, + "dof": 191 + }, + "boot held 3": { + "tag": "boot held 3", + "A2": -3.2576122949142533e-12, + "A2_sigma": 3.6615742330895046e-13, + "n": 113, + "kept": 113, + "chi2": 87.80999319330766, + "dof": 219 + }, + "boot held 4": { + "tag": "boot held 4", + "A2": -3.5724292274833908e-12, + "A2_sigma": 3.737602886525737e-13, + "n": 117, + "kept": 117, + "chi2": 85.9787708122581, + "dof": 227 + }, + "boot held 5": { + "tag": "boot held 5", + "A2": -3.59144908637496e-12, + "A2_sigma": 3.628428991297379e-13, + "n": 100, + "kept": 100, + "chi2": 49.17465947296514, + "dof": 193 + }, + "boot free 5": { + "tag": "boot free 5", + "A2": -3.6784509941936805e-12, + "A2_sigma": 6.457469967035327e-12, + "n": 105, + "kept": 104, + "chi2": 80.88434572173742, + "dof": 201 + }, + "boot held 2": { + "tag": "boot held 2", + "A2": -3.686555833872492e-12, + "A2_sigma": 9.208038306768402e-13, + "n": 108, + "kept": 106, + "chi2": 61.912685318866636, + "dof": 205 + }, + "boot free 3": { + "tag": "boot free 3", + "A2": -3.5167154706548116e-12, + "A2_sigma": 3.5695116343731324e-13, + "n": 108, + "kept": 108, + "chi2": 60.35316741231727, + "dof": 209 + }, + "boot held 0": { + "tag": "boot held 0", + "A2": -3.5051130851991975e-12, + "A2_sigma": 3.66199862299156e-13, + "n": 97, + "kept": 96, + "chi2": 49.06011222727949, + "dof": 185 + }, + "boot held 6": { + "tag": "boot held 6", + "A2": -3.6047156804074682e-12, + "A2_sigma": 4.054679146689674e-13, + "n": 100, + "kept": 100, + "chi2": 57.267653963383594, + "dof": 193 + }, + "boot free 12": { + "tag": "boot free 12", + "A2": 8.693026338545304e-11, + "A2_sigma": 7.962047910759663e-11, + "n": 103, + "kept": 102, + "chi2": 53.878506951881235, + "dof": 197 + }, + "boot free 9": { + "tag": "boot free 9", + "A2": -2.4125676467868088e-12, + "A2_sigma": 4.054383054362099e-12, + "n": 85, + "kept": 84, + "chi2": 37.886268355042866, + "dof": 161 + }, + "boot free 10": { + "tag": "boot free 10", + "A2": -1.4305608892999048e-12, + "A2_sigma": 5.232854664072293e-12, + "n": 101, + "kept": 99, + "chi2": 56.87049746020039, + "dof": 191 + }, + "boot free 4": { + "tag": "boot free 4", + "A2": -3.232829336221565e-12, + "A2_sigma": 3.658520446245389e-13, + "n": 124, + "kept": 123, + "chi2": 62.726461802047154, + "dof": 239 + }, + "boot free 8": { + "tag": "boot free 8", + "A2": -4.036548861009526e-12, + "A2_sigma": 9.105697374368803e-13, + "n": 104, + "kept": 103, + "chi2": 59.000407827378325, + "dof": 199 + }, + "boot held 7": { + "tag": "boot held 7", + "A2": -3.4815773763971277e-12, + "A2_sigma": 3.9252976034532346e-13, + "n": 100, + "kept": 98, + "chi2": 60.50417705809624, + "dof": 189 + }, + "boot free 6": { + "tag": "boot free 6", + "A2": -3.981890206998658e-12, + "A2_sigma": 8.978636432270417e-13, + "n": 112, + "kept": 110, + "chi2": 49.006539231480595, + "dof": 213 + }, + "boot free 7": { + "tag": "boot free 7", + "A2": -3.6334750981083175e-12, + "A2_sigma": 4.2325222154381767e-13, + "n": 102, + "kept": 101, + "chi2": 57.884378427009416, + "dof": 195 + }, + "boot held 13": { + "tag": "boot held 13", + "A2": -5.212967583450755e-12, + "A2_sigma": 2.5629368902950633e-12, + "n": 101, + "kept": 101, + "chi2": 55.01966559289393, + "dof": 195 + }, + "boot free 13": { + "tag": "boot free 13", + "A2": -3.393401246457352e-12, + "A2_sigma": 1.1124043531588207e-12, + "n": 101, + "kept": 101, + "chi2": 59.59794261639497, + "dof": 195 + }, + "boot free 15": { + "tag": "boot free 15", + "A2": 3.83405123999084e-12, + "A2_sigma": 1.0541962665274338e-11, + "n": 105, + "kept": 105, + "chi2": 62.27558996026756, + "dof": 203 + }, + "boot held 8": { + "tag": "boot held 8", + "A2": -3.670386480573826e-12, + "A2_sigma": 3.9749774401473216e-13, + "n": 101, + "kept": 99, + "chi2": 46.40971479428087, + "dof": 191 + }, + "boot free 14": { + "tag": "boot free 14", + "A2": -3.6350088074359825e-12, + "A2_sigma": 3.7852738384809045e-13, + "n": 103, + "kept": 103, + "chi2": 60.686131802726266, + "dof": 199 + }, + "boot held 9": { + "tag": "boot held 9", + "A2": -2.4457444950327883e-12, + "A2_sigma": 3.2661939665058876e-12, + "n": 107, + "kept": 106, + "chi2": 63.74062500763685, + "dof": 205 + }, + "boot held 12": { + "tag": "boot held 12", + "A2": -4.027589527619325e-12, + "A2_sigma": 6.578323535238325e-13, + "n": 109, + "kept": 109, + "chi2": 52.68107901442796, + "dof": 211 + }, + "boot free 18": { + "tag": "boot free 18", + "A2": 5.819758821519775e-12, + "A2_sigma": 8.653709551862175e-12, + "n": 84, + "kept": 84, + "chi2": 56.66768545933128, + "dof": 161 + }, + "boot held 10": { + "tag": "boot held 10", + "A2": -3.3222650446532626e-12, + "A2_sigma": 3.637747527647149e-13, + "n": 96, + "kept": 95, + "chi2": 53.627027995366035, + "dof": 183 + }, + "boot free 16": { + "tag": "boot free 16", + "A2": -1.1619670815360821e-11, + "A2_sigma": 2.967307017865139e-11, + "n": 82, + "kept": 80, + "chi2": 30.04890647436318, + "dof": 153 + }, + "boot held 11": { + "tag": "boot held 11", + "A2": -3.4668592518892102e-12, + "A2_sigma": 3.760758165461213e-13, + "n": 101, + "kept": 98, + "chi2": 64.19913244945818, + "dof": 189 + }, + "boot free 19": { + "tag": "boot free 19", + "A2": -1.7077213846997725e-11, + "A2_sigma": 8.810372882999343e-11, + "n": 102, + "kept": 101, + "chi2": 67.61402472966193, + "dof": 195 + }, + "boot free 11": { + "tag": "boot free 11", + "A2": -3.619113230648932e-12, + "A2_sigma": 8.697034583435691e-13, + "n": 126, + "kept": 124, + "chi2": 58.42296789887778, + "dof": 241 + }, + "boot held 14": { + "tag": "boot held 14", + "A2": -3.8811778877613735e-12, + "A2_sigma": 4.420161570902488e-13, + "n": 115, + "kept": 113, + "chi2": 60.06528590564911, + "dof": 219 + }, + "boot free 17": { + "tag": "boot free 17", + "A2": -3.249613496715853e-12, + "A2_sigma": 3.661299324828449e-13, + "n": 96, + "kept": 96, + "chi2": 53.36559099545819, + "dof": 185 + }, + "boot held 17": { + "tag": "boot held 17", + "A2": -3.354564529476647e-12, + "A2_sigma": 3.518849108560919e-13, + "n": 89, + "kept": 89, + "chi2": 38.46564713228573, + "dof": 171 + }, + "boot held 18": { + "tag": "boot held 18", + "A2": -3.5702838741382767e-12, + "A2_sigma": 3.5133297659512555e-13, + "n": 95, + "kept": 95, + "chi2": 42.64375809483004, + "dof": 183 + }, + "boot held 16": { + "tag": "boot held 16", + "A2": -4.044148448717515e-12, + "A2_sigma": 4.636446591794198e-13, + "n": 100, + "kept": 99, + "chi2": 61.012940840377205, + "dof": 191 + }, + "boot held 15": { + "tag": "boot held 15", + "A2": -3.9754235566841146e-12, + "A2_sigma": 8.901389494233824e-13, + "n": 114, + "kept": 113, + "chi2": 49.22374947857963, + "dof": 219 + }, + "boot held 20": { + "tag": "boot held 20", + "A2": -3.7350763315984345e-12, + "A2_sigma": 8.920791336828724e-13, + "n": 88, + "kept": 88, + "chi2": 56.56778661984325, + "dof": 169 + }, + "boot free 24": { + "tag": "boot free 24", + "A2": 1.4599250493591656e-12, + "A2_sigma": 8.207836917889752e-12, + "n": 77, + "kept": 74, + "chi2": 34.96012099273661, + "dof": 141 + }, + "boot free 25": { + "tag": "boot free 25", + "A2": -1.3576465628532075e-12, + "A2_sigma": 5.065309044581101e-12, + "n": 78, + "kept": 76, + "chi2": 36.71515713015558, + "dof": 145 + }, + "boot free 26": { + "tag": "boot free 26", + "A2": -1.186409063020962e-12, + "A2_sigma": 1.4083814639911375e-11, + "n": 78, + "kept": 78, + "chi2": 46.276201878033476, + "dof": 149 + }, + "boot held 24": { + "tag": "boot held 24", + "A2": 4.43678587445756e-12, + "A2_sigma": 1.241128175085014e-11, + "n": 105, + "kept": 103, + "chi2": 46.888253082699954, + "dof": 199 + }, + "boot free 21": { + "tag": "boot free 21", + "A2": -3.4821507373718788e-12, + "A2_sigma": 3.6659076216530557e-13, + "n": 112, + "kept": 110, + "chi2": 67.7292256024335, + "dof": 213 + }, + "boot held 19": { + "tag": "boot held 19", + "A2": -3.225768145433719e-12, + "A2_sigma": 3.6478797616679106e-13, + "n": 110, + "kept": 108, + "chi2": 63.08563020324265, + "dof": 209 + }, + "boot free 20": { + "tag": "boot free 20", + "A2": -3.935289988931752e-12, + "A2_sigma": 9.061311813825858e-13, + "n": 86, + "kept": 85, + "chi2": 42.45473619848257, + "dof": 163 + }, + "boot held 22": { + "tag": "boot held 22", + "A2": -3.346109342046651e-12, + "A2_sigma": 3.4520148103377424e-13, + "n": 89, + "kept": 87, + "chi2": 41.87927723546387, + "dof": 167 + }, + "boot free 23": { + "tag": "boot free 23", + "A2": -3.936988477656714e-12, + "A2_sigma": 7.137583357044867e-13, + "n": 92, + "kept": 91, + "chi2": 52.51042183037559, + "dof": 175 + }, + "boot held 21": { + "tag": "boot held 21", + "A2": -3.3994508128207135e-12, + "A2_sigma": 4.3422036652034314e-13, + "n": 118, + "kept": 117, + "chi2": 92.35401305044289, + "dof": 227 + }, + "boot held 23": { + "tag": "boot held 23", + "A2": -3.2067007308064873e-12, + "A2_sigma": 3.694615646044563e-13, + "n": 100, + "kept": 99, + "chi2": 77.10793059309714, + "dof": 191 + }, + "boot free 22": { + "tag": "boot free 22", + "A2": -3.902693167498456e-12, + "A2_sigma": 7.164950735662735e-13, + "n": 101, + "kept": 100, + "chi2": 33.239004831650405, + "dof": 193 + }, + "boot held 28": { + "tag": "boot held 28", + "A2": -3.899088643228347e-12, + "A2_sigma": 7.283150470785818e-13, + "n": 88, + "kept": 88, + "chi2": 38.14793981674312, + "dof": 169 + }, + "boot free 27": { + "tag": "boot free 27", + "A2": -4.629260427706127e-12, + "A2_sigma": 2.200398922790317e-12, + "n": 139, + "kept": 138, + "chi2": 93.8487913519009, + "dof": 269 + }, + "boot held 25": { + "tag": "boot held 25", + "A2": -3.3345589562583416e-12, + "A2_sigma": 3.7246708656257587e-13, + "n": 91, + "kept": 89, + "chi2": 40.831003526714575, + "dof": 171 + }, + "boot held 26": { + "tag": "boot held 26", + "A2": -3.784558493692077e-12, + "A2_sigma": 7.224175187897553e-13, + "n": 121, + "kept": 120, + "chi2": 78.00859188818933, + "dof": 233 + }, + "boot free 34": { + "tag": "boot free 34", + "A2": 4.775765519436917e-12, + "A2_sigma": 7.556156743132712e-12, + "n": 102, + "kept": 102, + "chi2": 102.48360860808917, + "dof": 197 + }, + "boot held 27": { + "tag": "boot held 27", + "A2": -4.022962151041234e-12, + "A2_sigma": 6.76991437780618e-13, + "n": 113, + "kept": 111, + "chi2": 55.69569718254561, + "dof": 215 + }, + "boot free 32": { + "tag": "boot free 32", + "A2": -3.7444333368542445e-12, + "A2_sigma": 8.368215381076589e-12, + "n": 86, + "kept": 83, + "chi2": 55.412051447622375, + "dof": 159 + }, + "boot free 28": { + "tag": "boot free 28", + "A2": -3.5039379309513106e-12, + "A2_sigma": 3.64920615358988e-13, + "n": 103, + "kept": 101, + "chi2": 50.886914481435895, + "dof": 195 + }, + "boot held 32": { + "tag": "boot held 32", + "A2": -3.4483956882906175e-12, + "A2_sigma": 3.6834402042734827e-13, + "n": 93, + "kept": 93, + "chi2": 63.49224580924406, + "dof": 179 + }, + "boot held 31": { + "tag": "boot held 31", + "A2": -3.584633975572337e-12, + "A2_sigma": 3.803456956320747e-13, + "n": 98, + "kept": 98, + "chi2": 57.889912336982576, + "dof": 189 + }, + "boot free 29": { + "tag": "boot free 29", + "A2": -4.1053988901299566e-12, + "A2_sigma": 9.074465619779797e-13, + "n": 89, + "kept": 87, + "chi2": 22.262346090288712, + "dof": 167 + }, + "boot free 30": { + "tag": "boot free 30", + "A2": -3.4174041319596116e-12, + "A2_sigma": 3.2509571069665054e-13, + "n": 112, + "kept": 110, + "chi2": 49.44070564975621, + "dof": 213 + }, + "boot free 33": { + "tag": "boot free 33", + "A2": -3.755969024792487e-12, + "A2_sigma": 3.862210220954732e-13, + "n": 117, + "kept": 117, + "chi2": 80.4968818776045, + "dof": 227 + }, + "boot held 29": { + "tag": "boot held 29", + "A2": -3.4971404999157864e-12, + "A2_sigma": 3.755184712409292e-13, + "n": 90, + "kept": 89, + "chi2": 49.73468249103639, + "dof": 171 + }, + "boot free 35": { + "tag": "boot free 35", + "A2": 1.2972487470203353e-11, + "A2_sigma": 2.2898165394578158e-11, + "n": 79, + "kept": 77, + "chi2": 45.68484314515572, + "dof": 147 + }, + "boot held 30": { + "tag": "boot held 30", + "A2": -3.4700483855356145e-12, + "A2_sigma": 3.761377284715142e-13, + "n": 89, + "kept": 88, + "chi2": 40.78939991247567, + "dof": 169 + }, + "boot free 37": { + "tag": "boot free 37", + "A2": -3.564770915390159e-12, + "A2_sigma": 7.006425928753138e-12, + "n": 110, + "kept": 110, + "chi2": 63.80328590729661, + "dof": 213 + }, + "boot free 31": { + "tag": "boot free 31", + "A2": -3.41318131345724e-12, + "A2_sigma": 3.7744961169823444e-13, + "n": 99, + "kept": 98, + "chi2": 63.183081743947284, + "dof": 189 + }, + "boot free 36": { + "tag": "boot free 36", + "A2": -3.483530066243068e-12, + "A2_sigma": 3.036517630251867e-13, + "n": 109, + "kept": 109, + "chi2": 44.67085576698099, + "dof": 211 + }, + "boot held 37": { + "tag": "boot held 37", + "A2": -3.722966498130219e-12, + "A2_sigma": 2.1821009473876185e-12, + "n": 92, + "kept": 92, + "chi2": 36.06760765419601, + "dof": 177 + }, + "boot held 34": { + "tag": "boot held 34", + "A2": -4.2826758229222165e-12, + "A2_sigma": 2.6842242219508786e-12, + "n": 103, + "kept": 102, + "chi2": 42.14064095248476, + "dof": 197 + }, + "boot free 41": { + "tag": "boot free 41", + "A2": 3.1461311705307164e-12, + "A2_sigma": 1.3110897379383462e-11, + "n": 121, + "kept": 121, + "chi2": 53.063006437188015, + "dof": 235 + }, + "boot held 33": { + "tag": "boot held 33", + "A2": -3.2834150416565177e-12, + "A2_sigma": 3.733184116853421e-13, + "n": 104, + "kept": 103, + "chi2": 64.26998874429678, + "dof": 199 + }, + "boot free 38": { + "tag": "boot free 38", + "A2": -3.5595119933394868e-12, + "A2_sigma": 3.7994236623222817e-13, + "n": 88, + "kept": 88, + "chi2": 51.47506123639127, + "dof": 169 + }, + "boot held 39": { + "tag": "boot held 39", + "A2": -3.892955504748146e-12, + "A2_sigma": 4.254879345584119e-13, + "n": 109, + "kept": 109, + "chi2": 51.89551004083181, + "dof": 211 + }, + "boot free 39": { + "tag": "boot free 39", + "A2": -3.1802751416467185e-12, + "A2_sigma": 3.231631514794843e-13, + "n": 120, + "kept": 120, + "chi2": 61.81803994756133, + "dof": 233 + }, + "boot held 35": { + "tag": "boot held 35", + "A2": -3.2476316070122436e-12, + "A2_sigma": 3.6916591517059027e-13, + "n": 104, + "kept": 103, + "chi2": 88.22071299678863, + "dof": 199 + }, + "boot held 42": { + "tag": "boot held 42", + "A2": -3.579990795581185e-12, + "A2_sigma": 3.8179330095295894e-13, + "n": 89, + "kept": 89, + "chi2": 48.37832151029603, + "dof": 171 + }, + "boot held 38": { + "tag": "boot held 38", + "A2": -3.5424644618032235e-12, + "A2_sigma": 3.8359490477838515e-13, + "n": 105, + "kept": 104, + "chi2": 58.026201042713, + "dof": 201 + }, + "boot held 36": { + "tag": "boot held 36", + "A2": -3.2992707821373202e-12, + "A2_sigma": 3.734948034561674e-13, + "n": 93, + "kept": 92, + "chi2": 54.82644898746678, + "dof": 177 + }, + "boot held 41": { + "tag": "boot held 41", + "A2": -3.179089991438557e-12, + "A2_sigma": 3.535181323673227e-13, + "n": 93, + "kept": 93, + "chi2": 63.81769991367811, + "dof": 179 + }, + "boot held 43": { + "tag": "boot held 43", + "A2": -3.74389879341394e-12, + "A2_sigma": 3.674338858640685e-13, + "n": 92, + "kept": 92, + "chi2": 63.05989412213711, + "dof": 177 + }, + "boot free 42": { + "tag": "boot free 42", + "A2": -4.0646831579671425e-12, + "A2_sigma": 3.7042497043023257e-13, + "n": 113, + "kept": 110, + "chi2": 53.37483700965321, + "dof": 213 + }, + "boot free 46": { + "tag": "boot free 46", + "A2": 1.026940678679247e-10, + "A2_sigma": 9.568268231756095e-11, + "n": 98, + "kept": 96, + "chi2": 40.1161528512376, + "dof": 185 + }, + "boot free 47": { + "tag": "boot free 47", + "A2": 2.5451802320482604e-11, + "A2_sigma": 7.499676953051592e-11, + "n": 96, + "kept": 95, + "chi2": 45.59666467377077, + "dof": 183 + }, + "boot free 40": { + "tag": "boot free 40", + "A2": -3.3741423127341573e-12, + "A2_sigma": 3.8739713265904124e-13, + "n": 84, + "kept": 82, + "chi2": 52.50957765248104, + "dof": 157 + }, + "boot free 44": { + "tag": "boot free 44", + "A2": -4.152908757875586e-12, + "A2_sigma": 6.630034736929102e-13, + "n": 92, + "kept": 92, + "chi2": 34.94175654869648, + "dof": 177 + }, + "boot held 40": { + "tag": "boot held 40", + "A2": -3.8923522055804994e-12, + "A2_sigma": 3.8607133266021324e-13, + "n": 87, + "kept": 86, + "chi2": 42.6016302760356, + "dof": 165 + }, + "boot free 45": { + "tag": "boot free 45", + "A2": -3.400158185745981e-12, + "A2_sigma": 3.835637103035272e-13, + "n": 110, + "kept": 110, + "chi2": 73.54671689635845, + "dof": 213 + }, + "boot free 43": { + "tag": "boot free 43", + "A2": -3.926572813030442e-12, + "A2_sigma": 3.6237844304328355e-13, + "n": 101, + "kept": 99, + "chi2": 60.26161619065002, + "dof": 191 + }, + "boot free 50": { + "tag": "boot free 50", + "A2": -1.3029644856543458e-10, + "A2_sigma": 1.018724707127018e-10, + "n": 112, + "kept": 111, + "chi2": 78.2343486248681, + "dof": 215 + }, + "boot held 47": { + "tag": "boot held 47", + "A2": -3.925064970254759e-12, + "A2_sigma": 7.035502916656627e-13, + "n": 109, + "kept": 109, + "chi2": 53.266771309225234, + "dof": 211 + }, + "boot held 44": { + "tag": "boot held 44", + "A2": -3.473259645786729e-12, + "A2_sigma": 3.751047609477553e-13, + "n": 85, + "kept": 84, + "chi2": 55.15797327738426, + "dof": 161 + }, + "boot held 45": { + "tag": "boot held 45", + "A2": -4.493339780293568e-12, + "A2_sigma": 9.366006912593768e-13, + "n": 103, + "kept": 101, + "chi2": 45.64661878032276, + "dof": 195 + }, + "boot free 49": { + "tag": "boot free 49", + "A2": -3.4005366404611083e-12, + "A2_sigma": 3.101335260424584e-13, + "n": 114, + "kept": 114, + "chi2": 46.75392210636275, + "dof": 221 + }, + "boot held 49": { + "tag": "boot held 49", + "A2": -3.4676844103347212e-12, + "A2_sigma": 3.7255785836215415e-13, + "n": 101, + "kept": 101, + "chi2": 60.7233221667805, + "dof": 195 + }, + "boot free 51": { + "tag": "boot free 51", + "A2": -3.666979542378495e-12, + "A2_sigma": 3.447823269058065e-13, + "n": 113, + "kept": 113, + "chi2": 51.56978240340494, + "dof": 219 + }, + "boot held 46": { + "tag": "boot held 46", + "A2": -3.5063639399531393e-12, + "A2_sigma": 3.9192103812749314e-13, + "n": 105, + "kept": 103, + "chi2": 53.715688265810186, + "dof": 199 + }, + "boot free 48": { + "tag": "boot free 48", + "A2": -3.694190891950092e-12, + "A2_sigma": 3.395031900816047e-13, + "n": 108, + "kept": 107, + "chi2": 49.64495904956923, + "dof": 207 + }, + "boot held 48": { + "tag": "boot held 48", + "A2": -3.4852624853058e-12, + "A2_sigma": 3.861657217304453e-13, + "n": 100, + "kept": 97, + "chi2": 62.57830016905258, + "dof": 187 + }, + "boot free 52": { + "tag": "boot free 52", + "A2": -3.630345014430619e-12, + "A2_sigma": 4.093065335334734e-12, + "n": 96, + "kept": 94, + "chi2": 42.2534166970526, + "dof": 181 + }, + "boot held 52": { + "tag": "boot held 52", + "A2": -3.799239868796357e-12, + "A2_sigma": 4.493492570626168e-13, + "n": 93, + "kept": 93, + "chi2": 48.50260315309174, + "dof": 179 + }, + "boot free 54": { + "tag": "boot free 54", + "A2": -3.547014110260882e-12, + "A2_sigma": 2.637263869905939e-12, + "n": 102, + "kept": 102, + "chi2": 40.084402236029874, + "dof": 197 + }, + "boot held 51": { + "tag": "boot held 51", + "A2": -3.2748552888461162e-12, + "A2_sigma": 3.561776532891289e-13, + "n": 94, + "kept": 94, + "chi2": 51.62165764723895, + "dof": 181 + }, + "boot held 55": { + "tag": "boot held 55", + "A2": -4.706655286147788e-12, + "A2_sigma": 4.134111252604268e-12, + "n": 105, + "kept": 105, + "chi2": 61.55710688084855, + "dof": 203 + }, + "boot free 55": { + "tag": "boot free 55", + "A2": -3.5040162637105664e-12, + "A2_sigma": 3.732257487819514e-13, + "n": 88, + "kept": 88, + "chi2": 54.87339066239993, + "dof": 169 + }, + "boot free 56": { + "tag": "boot free 56", + "A2": -3.4470123811689454e-12, + "A2_sigma": 4.097291613229762e-12, + "n": 95, + "kept": 95, + "chi2": 52.2290946640786, + "dof": 183 + }, + "boot held 50": { + "tag": "boot held 50", + "A2": -3.4077303803042002e-12, + "A2_sigma": 3.571496916984642e-13, + "n": 102, + "kept": 101, + "chi2": 75.17527891301285, + "dof": 195 + }, + "boot free 53": { + "tag": "boot free 53", + "A2": -4.105253660912102e-12, + "A2_sigma": 4.503319150407088e-13, + "n": 84, + "kept": 82, + "chi2": 36.00608263047947, + "dof": 157 + }, + "boot held 53": { + "tag": "boot held 53", + "A2": -3.305332117895653e-12, + "A2_sigma": 3.6649962651839557e-13, + "n": 91, + "kept": 90, + "chi2": 56.1907428948288, + "dof": 173 + }, + "boot free 58": { + "tag": "boot free 58", + "A2": 3.078875804432715e-12, + "A2_sigma": 5.5449321264777266e-12, + "n": 80, + "kept": 79, + "chi2": 66.13918190782283, + "dof": 151 + }, + "boot held 54": { + "tag": "boot held 54", + "A2": -3.4530591345174437e-12, + "A2_sigma": 3.6931558662368273e-13, + "n": 105, + "kept": 104, + "chi2": 58.91915853277423, + "dof": 201 + }, + "boot free 63": { + "tag": "boot free 63", + "A2": 4.636025520912365e-12, + "A2_sigma": 7.687127284557461e-12, + "n": 85, + "kept": 83, + "chi2": 47.34262981045014, + "dof": 159 + }, + "boot held 59": { + "tag": "boot held 59", + "A2": -3.417240621102456e-12, + "A2_sigma": 4.2724345687804883e-13, + "n": 95, + "kept": 95, + "chi2": 68.67075783592459, + "dof": 183 + }, + "boot held 56": { + "tag": "boot held 56", + "A2": -3.711464651175457e-12, + "A2_sigma": 3.8505148900969773e-13, + "n": 97, + "kept": 93, + "chi2": 64.93443510305158, + "dof": 179 + }, + "boot free 57": { + "tag": "boot free 57", + "A2": -3.371593710532448e-12, + "A2_sigma": 3.2245984219423415e-13, + "n": 117, + "kept": 115, + "chi2": 37.635509036355614, + "dof": 223 + }, + "boot free 61": { + "tag": "boot free 61", + "A2": -3.65359842546549e-12, + "A2_sigma": 7.347974270079645e-13, + "n": 108, + "kept": 108, + "chi2": 60.8584525740001, + "dof": 209 + }, + "boot held 61": { + "tag": "boot held 61", + "A2": -3.565402737355199e-12, + "A2_sigma": 3.7249625765019725e-13, + "n": 93, + "kept": 93, + "chi2": 55.631699985994295, + "dof": 179 + }, + "boot held 57": { + "tag": "boot held 57", + "A2": -3.414496097706829e-12, + "A2_sigma": 4.083898773200466e-13, + "n": 113, + "kept": 112, + "chi2": 58.06020614594439, + "dof": 217 + }, + "boot free 62": { + "tag": "boot free 62", + "A2": -3.5028456203511784e-12, + "A2_sigma": 3.8096851957723645e-13, + "n": 101, + "kept": 101, + "chi2": 60.76780000793644, + "dof": 195 + }, + "boot free 60": { + "tag": "boot free 60", + "A2": -5.33055558874126e-12, + "A2_sigma": 3.244845997492465e-12, + "n": 98, + "kept": 96, + "chi2": 54.77510697238357, + "dof": 185 + }, + "boot free 59": { + "tag": "boot free 59", + "A2": -3.78292930725123e-12, + "A2_sigma": 9.278039619529311e-13, + "n": 91, + "kept": 90, + "chi2": 39.01118061127043, + "dof": 173 + }, + "boot held 58": { + "tag": "boot held 58", + "A2": -3.791611783426073e-12, + "A2_sigma": 3.965729257321876e-13, + "n": 106, + "kept": 105, + "chi2": 60.02707958649312, + "dof": 203 + }, + "boot free 64": { + "tag": "boot free 64", + "A2": -3.3949977200830978e-12, + "A2_sigma": 3.6687429363243674e-13, + "n": 96, + "kept": 96, + "chi2": 55.07786201338644, + "dof": 185 + }, + "boot held 60": { + "tag": "boot held 60", + "A2": -3.4441857005824713e-12, + "A2_sigma": 3.8432889189945627e-13, + "n": 99, + "kept": 97, + "chi2": 75.770013562726, + "dof": 187 + }, + "boot held 62": { + "tag": "boot held 62", + "A2": -3.2504333553778443e-12, + "A2_sigma": 3.722761361659136e-13, + "n": 109, + "kept": 106, + "chi2": 73.63091881768055, + "dof": 205 + }, + "boot held 63": { + "tag": "boot held 63", + "A2": -3.944868766022312e-12, + "A2_sigma": 9.042255410996892e-13, + "n": 97, + "kept": 96, + "chi2": 35.815060522498484, + "dof": 185 + }, + "boot free 66": { + "tag": "boot free 66", + "A2": -2.0572712311241937e-12, + "A2_sigma": 5.652517750032602e-12, + "n": 88, + "kept": 86, + "chi2": 53.48124061545724, + "dof": 165 + }, + "boot free 68": { + "tag": "boot free 68", + "A2": 2.3248648808800544e-12, + "A2_sigma": 6.55302619281956e-12, + "n": 106, + "kept": 105, + "chi2": 80.82354260473502, + "dof": 203 + }, + "boot held 66": { + "tag": "boot held 66", + "A2": -3.4252695364654464e-12, + "A2_sigma": 3.656733539874085e-13, + "n": 98, + "kept": 98, + "chi2": 56.700906414010866, + "dof": 189 + }, + "boot held 64": { + "tag": "boot held 64", + "A2": -3.3714490784344426e-12, + "A2_sigma": 3.579732531833302e-13, + "n": 103, + "kept": 101, + "chi2": 47.21301489777433, + "dof": 195 + }, + "boot held 67": { + "tag": "boot held 67", + "A2": -3.3945976838701897e-12, + "A2_sigma": 4.283375458294516e-13, + "n": 85, + "kept": 85, + "chi2": 41.24634419202945, + "dof": 163 + }, + "boot free 70": { + "tag": "boot free 70", + "A2": -3.518968597893111e-12, + "A2_sigma": 3.854378943933652e-13, + "n": 84, + "kept": 84, + "chi2": 48.58813770805213, + "dof": 161 + }, + "boot held 65": { + "tag": "boot held 65", + "A2": -3.2475997823656927e-12, + "A2_sigma": 3.6837220169689745e-13, + "n": 96, + "kept": 94, + "chi2": 58.197246354391396, + "dof": 181 + }, + "boot free 65": { + "tag": "boot free 65", + "A2": -3.366490598252869e-12, + "A2_sigma": 3.5602271217444115e-13, + "n": 88, + "kept": 87, + "chi2": 38.1366644420213, + "dof": 167 + }, + "boot free 69": { + "tag": "boot free 69", + "A2": -3.2289945231324222e-12, + "A2_sigma": 3.1491924426028774e-13, + "n": 108, + "kept": 106, + "chi2": 36.04120579618503, + "dof": 205 + }, + "boot held 68": { + "tag": "boot held 68", + "A2": -3.5842417669552363e-12, + "A2_sigma": 2.696777878385914e-12, + "n": 88, + "kept": 85, + "chi2": 28.131805798804447, + "dof": 163 + }, + "boot free 67": { + "tag": "boot free 67", + "A2": -3.853821690263822e-12, + "A2_sigma": 9.180507734090632e-13, + "n": 99, + "kept": 96, + "chi2": 47.0968299599106, + "dof": 185 + }, + "boot held 71": { + "tag": "boot held 71", + "A2": -3.4166058609029e-12, + "A2_sigma": 3.7587580498991253e-13, + "n": 109, + "kept": 109, + "chi2": 71.17404850043013, + "dof": 211 + }, + "boot held 72": { + "tag": "boot held 72", + "A2": -3.637353986107202e-12, + "A2_sigma": 3.9537121163113073e-13, + "n": 103, + "kept": 103, + "chi2": 61.01720050689762, + "dof": 199 + }, + "boot held 69": { + "tag": "boot held 69", + "A2": -3.3868521951555815e-12, + "A2_sigma": 3.724440199725199e-13, + "n": 105, + "kept": 104, + "chi2": 44.14558976878308, + "dof": 201 + }, + "boot free 74": { + "tag": "boot free 74", + "A2": -3.369947031619844e-12, + "A2_sigma": 3.5746960291918734e-13, + "n": 95, + "kept": 95, + "chi2": 48.92577338411441, + "dof": 183 + }, + "boot free 73": { + "tag": "boot free 73", + "A2": -3.859151995856547e-12, + "A2_sigma": 8.939003291615145e-13, + "n": 113, + "kept": 113, + "chi2": 41.79062134187322, + "dof": 219 + }, + "boot held 73": { + "tag": "boot held 73", + "A2": -3.7487719583431435e-12, + "A2_sigma": 9.146210870357334e-13, + "n": 102, + "kept": 102, + "chi2": 41.696497503198366, + "dof": 197 + }, + "boot held 70": { + "tag": "boot held 70", + "A2": -4.173354499919147e-12, + "A2_sigma": 6.803558556213732e-13, + "n": 90, + "kept": 89, + "chi2": 36.441949644598246, + "dof": 171 + }, + "boot free 71": { + "tag": "boot free 71", + "A2": -3.3122375507910434e-12, + "A2_sigma": 3.7893582724369385e-13, + "n": 89, + "kept": 88, + "chi2": 56.24547541852398, + "dof": 169 + }, + "boot free 75": { + "tag": "boot free 75", + "A2": -2.8900370608085893e-12, + "A2_sigma": 8.152063886716736e-12, + "n": 115, + "kept": 114, + "chi2": 64.70794298764369, + "dof": 221 + }, + "boot free 72": { + "tag": "boot free 72", + "A2": -3.467354012015143e-12, + "A2_sigma": 3.30984780595685e-13, + "n": 111, + "kept": 110, + "chi2": 81.00961326885889, + "dof": 213 + }, + "boot held 76": { + "tag": "boot held 76", + "A2": -3.712238941793829e-12, + "A2_sigma": 4.625357806580062e-13, + "n": 103, + "kept": 103, + "chi2": 55.209739817640724, + "dof": 199 + }, + "boot held 77": { + "tag": "boot held 77", + "A2": -3.5639311653233193e-12, + "A2_sigma": 3.713915570651011e-13, + "n": 120, + "kept": 120, + "chi2": 79.96391478360685, + "dof": 233 + }, + "boot free 77": { + "tag": "boot free 77", + "A2": -3.6789438782758354e-12, + "A2_sigma": 3.7941837458982644e-13, + "n": 117, + "kept": 117, + "chi2": 44.30868546653201, + "dof": 227 + }, + "boot free 76": { + "tag": "boot free 76", + "A2": -3.706539499336172e-12, + "A2_sigma": 3.825588839991623e-13, + "n": 97, + "kept": 96, + "chi2": 57.714413272292845, + "dof": 185 + }, + "boot held 78": { + "tag": "boot held 78", + "A2": -3.2508842962657295e-12, + "A2_sigma": 3.56975115899664e-13, + "n": 100, + "kept": 100, + "chi2": 47.83811589959618, + "dof": 193 + }, + "boot held 74": { + "tag": "boot held 74", + "A2": -3.2681653993034178e-12, + "A2_sigma": 4.1054733896615207e-13, + "n": 98, + "kept": 95, + "chi2": 61.091331433219395, + "dof": 183 + }, + "boot held 75": { + "tag": "boot held 75", + "A2": -3.639936620530824e-12, + "A2_sigma": 4.1111290442768407e-13, + "n": 107, + "kept": 104, + "chi2": 55.30551442477493, + "dof": 201 + }, + "boot free 79": { + "tag": "boot free 79", + "A2": -3.5367135879255245e-12, + "A2_sigma": 3.8536605102506575e-13, + "n": 129, + "kept": 129, + "chi2": 82.53427320737214, + "dof": 251 + }, + "boot held 79": { + "tag": "boot held 79", + "A2": -3.794420267665984e-12, + "A2_sigma": 7.653610004480802e-13, + "n": 114, + "kept": 114, + "chi2": 86.85722065027977, + "dof": 221 + }, + "boot free 81": { + "tag": "boot free 81", + "A2": -4.208057359531292e-13, + "A2_sigma": 7.749576907796536e-12, + "n": 86, + "kept": 84, + "chi2": 51.35067300559783, + "dof": 161 + }, + "boot free 85": { + "tag": "boot free 85", + "A2": 8.150199973796294e-11, + "A2_sigma": 9.909992005964289e-11, + "n": 101, + "kept": 97, + "chi2": 41.66860473007175, + "dof": 187 + }, + "boot free 78": { + "tag": "boot free 78", + "A2": -3.2294811449605608e-12, + "A2_sigma": 3.2910885210084937e-13, + "n": 117, + "kept": 116, + "chi2": 64.37605563991318, + "dof": 225 + }, + "boot held 80": { + "tag": "boot held 80", + "A2": -3.863778292149068e-12, + "A2_sigma": 7.19652067948678e-13, + "n": 92, + "kept": 92, + "chi2": 51.916509058464065, + "dof": 177 + }, + "boot free 80": { + "tag": "boot free 80", + "A2": -4.307958183788676e-12, + "A2_sigma": 4.031172425235605e-12, + "n": 113, + "kept": 108, + "chi2": 43.71399351594703, + "dof": 209 + }, + "boot held 81": { + "tag": "boot held 81", + "A2": -4.077661913865566e-12, + "A2_sigma": 6.570861792328693e-13, + "n": 94, + "kept": 94, + "chi2": 33.27759368979416, + "dof": 181 + }, + "boot free 83": { + "tag": "boot free 83", + "A2": -4.192863662665099e-12, + "A2_sigma": 4.107361098075757e-12, + "n": 100, + "kept": 99, + "chi2": 54.190306045276884, + "dof": 191 + }, + "boot free 87": { + "tag": "boot free 87", + "A2": -1.469738181310314e-12, + "A2_sigma": 7.773389111568629e-12, + "n": 100, + "kept": 100, + "chi2": 65.64093017612845, + "dof": 193 + }, + "boot held 82": { + "tag": "boot held 82", + "A2": -3.806333160693512e-12, + "A2_sigma": 7.294001275842117e-13, + "n": 97, + "kept": 96, + "chi2": 35.23980726114705, + "dof": 185 + }, + "boot held 85": { + "tag": "boot held 85", + "A2": -3.3025990204595102e-12, + "A2_sigma": 3.739803953752729e-13, + "n": 119, + "kept": 119, + "chi2": 71.59928871862714, + "dof": 231 + }, + "boot free 82": { + "tag": "boot free 82", + "A2": -3.322459240881784e-12, + "A2_sigma": 3.849833023495915e-13, + "n": 94, + "kept": 93, + "chi2": 81.10719037209206, + "dof": 179 + }, + "boot free 91": { + "tag": "boot free 91", + "A2": -1.3049729555163828e-12, + "A2_sigma": 5.935416823692618e-12, + "n": 87, + "kept": 87, + "chi2": 36.106413550606334, + "dof": 167 + }, + "boot held 83": { + "tag": "boot held 83", + "A2": -3.5916685574244522e-12, + "A2_sigma": 3.817652288845977e-13, + "n": 101, + "kept": 99, + "chi2": 56.05839354675002, + "dof": 191 + }, + "boot held 86": { + "tag": "boot held 86", + "A2": -4.209474215091253e-12, + "A2_sigma": 9.175022816425146e-13, + "n": 85, + "kept": 85, + "chi2": 42.363609992123465, + "dof": 163 + }, + "boot held 87": { + "tag": "boot held 87", + "A2": -3.1772081840854874e-12, + "A2_sigma": 3.628095996418171e-13, + "n": 104, + "kept": 104, + "chi2": 68.4091506371596, + "dof": 201 + }, + "boot held 84": { + "tag": "boot held 84", + "A2": -3.792174533208086e-12, + "A2_sigma": 8.991225382210714e-13, + "n": 88, + "kept": 86, + "chi2": 42.04502961719095, + "dof": 165 + }, + "boot free 84": { + "tag": "boot free 84", + "A2": -3.820210908115457e-12, + "A2_sigma": 8.715106864188711e-13, + "n": 122, + "kept": 121, + "chi2": 46.91241986986736, + "dof": 235 + }, + "boot free 89": { + "tag": "boot free 89", + "A2": -3.6434811875300394e-12, + "A2_sigma": 3.791849159908789e-13, + "n": 89, + "kept": 89, + "chi2": 49.07757694147882, + "dof": 171 + }, + "boot free 94": { + "tag": "boot free 94", + "A2": 1.269512647378563e-11, + "A2_sigma": 8.061177435290395e-11, + "n": 94, + "kept": 93, + "chi2": 63.81432147279098, + "dof": 179 + }, + "boot free 86": { + "tag": "boot free 86", + "A2": -3.2657373070471437e-12, + "A2_sigma": 3.1551499923722037e-13, + "n": 118, + "kept": 116, + "chi2": 46.26055324447058, + "dof": 225 + }, + "boot held 88": { + "tag": "boot held 88", + "A2": -3.5758844947758335e-12, + "A2_sigma": 3.5303598690685827e-13, + "n": 101, + "kept": 100, + "chi2": 64.64035177489866, + "dof": 193 + }, + "boot free 88": { + "tag": "boot free 88", + "A2": -3.658780405253775e-12, + "A2_sigma": 6.821042083009832e-13, + "n": 98, + "kept": 96, + "chi2": 23.415544138081863, + "dof": 185 + }, + "boot held 90": { + "tag": "boot held 90", + "A2": -3.921760540963219e-12, + "A2_sigma": 8.930778779120467e-13, + "n": 106, + "kept": 105, + "chi2": 51.69945256279805, + "dof": 203 + }, + "boot free 96": { + "tag": "boot free 96", + "A2": -1.6916067426550985e-12, + "A2_sigma": 6.6286659638534645e-12, + "n": 98, + "kept": 98, + "chi2": 54.812948512816604, + "dof": 189 + }, + "boot free 97": { + "tag": "boot free 97", + "A2": -2.1277515429117633e-11, + "A2_sigma": 3.003534162163295e-11, + "n": 96, + "kept": 96, + "chi2": 97.22727021620257, + "dof": 185 + }, + "boot held 91": { + "tag": "boot held 91", + "A2": -3.6467053813832644e-12, + "A2_sigma": 4.290645720298738e-13, + "n": 101, + "kept": 99, + "chi2": 66.17629069758726, + "dof": 191 + }, + "boot free 93": { + "tag": "boot free 93", + "A2": -3.0732646102348253e-12, + "A2_sigma": 3.336976397479123e-13, + "n": 110, + "kept": 110, + "chi2": 71.62133025288136, + "dof": 213 + }, + "boot held 89": { + "tag": "boot held 89", + "A2": -3.237595537091493e-12, + "A2_sigma": 4.044523338552504e-13, + "n": 113, + "kept": 111, + "chi2": 68.70672399679924, + "dof": 215 + }, + "boot free 90": { + "tag": "boot free 90", + "A2": -3.4794727707923825e-12, + "A2_sigma": 3.8289932852980573e-13, + "n": 95, + "kept": 91, + "chi2": 36.140768277361076, + "dof": 175 + }, + "boot free 99": { + "tag": "boot free 99", + "A2": 3.5253876997280254e-13, + "A2_sigma": 2.5792509288528197e-11, + "n": 98, + "kept": 97, + "chi2": 55.54597882990028, + "dof": 187 + }, + "boot free 92": { + "tag": "boot free 92", + "A2": -3.657458542433012e-12, + "A2_sigma": 3.317648824279664e-13, + "n": 102, + "kept": 99, + "chi2": 48.364305371811454, + "dof": 191 + }, + "boot free 98": { + "tag": "boot free 98", + "A2": 2.664235501551285e-12, + "A2_sigma": 6.878077983066671e-12, + "n": 97, + "kept": 93, + "chi2": 51.18334997572804, + "dof": 179 + }, + "boot held 98": { + "tag": "boot held 98", + "A2": -3.6129461795851127e-12, + "A2_sigma": 3.943341215824721e-13, + "n": 103, + "kept": 103, + "chi2": 61.2109126025886, + "dof": 199 + }, + "boot held 94": { + "tag": "boot held 94", + "A2": -3.5584186906061498e-12, + "A2_sigma": 3.6552607706411973e-13, + "n": 103, + "kept": 102, + "chi2": 61.50884229435164, + "dof": 197 + }, + "boot held 92": { + "tag": "boot held 92", + "A2": -4.860770230101485e-12, + "A2_sigma": 1.0296750220899797e-12, + "n": 103, + "kept": 102, + "chi2": 42.695390299319335, + "dof": 197 + }, + "boot held 93": { + "tag": "boot held 93", + "A2": -3.548385943011727e-12, + "A2_sigma": 3.6754943151562884e-13, + "n": 110, + "kept": 109, + "chi2": 69.21580358404972, + "dof": 211 + }, + "boot held 95": { + "tag": "boot held 95", + "A2": -3.3770883487564163e-12, + "A2_sigma": 3.648816349050725e-13, + "n": 91, + "kept": 90, + "chi2": 32.69655961069473, + "dof": 173 + }, + "boot free 95": { + "tag": "boot free 95", + "A2": -3.2259557401899733e-12, + "A2_sigma": 4.0957354398295223e-13, + "n": 107, + "kept": 106, + "chi2": 63.763120399127835, + "dof": 205 + }, + "boot free 100": { + "tag": "boot free 100", + "A2": -9.13087867978791e-13, + "A2_sigma": 7.792399504956247e-12, + "n": 86, + "kept": 85, + "chi2": 61.62268480107561, + "dof": 163 + }, + "boot held 96": { + "tag": "boot held 96", + "A2": -4.013768342110288e-12, + "A2_sigma": 6.775393100675441e-13, + "n": 97, + "kept": 96, + "chi2": 39.70599537041156, + "dof": 185 + }, + "boot held 97": { + "tag": "boot held 97", + "A2": -3.300563260695862e-12, + "A2_sigma": 3.635463705686071e-13, + "n": 108, + "kept": 105, + "chi2": 69.92635630467589, + "dof": 203 + }, + "boot free 104": { + "tag": "boot free 104", + "A2": -1.7185280541637908e-12, + "A2_sigma": 9.795453783004229e-12, + "n": 107, + "kept": 107, + "chi2": 62.56140302707193, + "dof": 207 + }, + "boot free 103": { + "tag": "boot free 103", + "A2": -2.044529809745804e-11, + "A2_sigma": 9.62653084579958e-11, + "n": 119, + "kept": 117, + "chi2": 66.59183447730973, + "dof": 227 + }, + "boot held 100": { + "tag": "boot held 100", + "A2": -3.487971312129063e-12, + "A2_sigma": 3.849786419338695e-13, + "n": 106, + "kept": 106, + "chi2": 61.8721163460955, + "dof": 205 + }, + "boot free 109": { + "tag": "boot free 109", + "A2": 1.0793391903220174e-10, + "A2_sigma": 2.125043806404859e-10, + "n": 86, + "kept": 85, + "chi2": 43.07373298175111, + "dof": 163 + }, + "boot free 102": { + "tag": "boot free 102", + "A2": -4.113028225757573e-12, + "A2_sigma": 9.348227987954066e-13, + "n": 103, + "kept": 103, + "chi2": 60.61810076032019, + "dof": 199 + }, + "boot held 102": { + "tag": "boot held 102", + "A2": -4.031610141984372e-12, + "A2_sigma": 6.494730200730958e-13, + "n": 82, + "kept": 82, + "chi2": 38.783303852603865, + "dof": 157 + }, + "boot held 103": { + "tag": "boot held 103", + "A2": -3.847227786200247e-12, + "A2_sigma": 9.531526243429792e-13, + "n": 101, + "kept": 101, + "chi2": 54.66287214815496, + "dof": 195 + }, + "boot held 99": { + "tag": "boot held 99", + "A2": -4.129463089583465e-12, + "A2_sigma": 7.383724817294495e-13, + "n": 97, + "kept": 96, + "chi2": 54.73152971224251, + "dof": 185 + }, + "boot free 101": { + "tag": "boot free 101", + "A2": -3.715318566074491e-12, + "A2_sigma": 4.0461871828452785e-13, + "n": 91, + "kept": 89, + "chi2": 46.12268040160972, + "dof": 171 + }, + "boot held 105": { + "tag": "boot held 105", + "A2": -3.3216044815204782e-12, + "A2_sigma": 3.626284382113594e-13, + "n": 111, + "kept": 111, + "chi2": 60.872397614884065, + "dof": 215 + }, + "boot free 106": { + "tag": "boot free 106", + "A2": -1.2389769500742602e-12, + "A2_sigma": 8.066820190130776e-12, + "n": 111, + "kept": 109, + "chi2": 68.84942229617107, + "dof": 211 + }, + "boot free 105": { + "tag": "boot free 105", + "A2": -3.4714354604909037e-12, + "A2_sigma": 3.335655257565011e-13, + "n": 100, + "kept": 100, + "chi2": 46.66666977339184, + "dof": 193 + }, + "boot held 101": { + "tag": "boot held 101", + "A2": -3.796208117686788e-12, + "A2_sigma": 9.342412016378448e-13, + "n": 123, + "kept": 122, + "chi2": 79.85354262293384, + "dof": 237 + }, + "boot held 106": { + "tag": "boot held 106", + "A2": 4.171484970993274e-12, + "A2_sigma": 1.2155321699990795e-11, + "n": 103, + "kept": 100, + "chi2": 39.59241962281563, + "dof": 193 + }, + "boot free 108": { + "tag": "boot free 108", + "A2": -2.430972731337174e-13, + "A2_sigma": 6.829174462491146e-12, + "n": 106, + "kept": 105, + "chi2": 67.54244510365886, + "dof": 203 + }, + "boot held 108": { + "tag": "boot held 108", + "A2": -3.812741668957932e-12, + "A2_sigma": 7.179542284567908e-13, + "n": 88, + "kept": 88, + "chi2": 40.32329792386213, + "dof": 169 + }, + "boot held 104": { + "tag": "boot held 104", + "A2": -3.2018017460582353e-12, + "A2_sigma": 3.8095930239874575e-13, + "n": 101, + "kept": 99, + "chi2": 77.19111384469132, + "dof": 191 + }, + "boot free 114": { + "tag": "boot free 114", + "A2": -4.575706117016509e-13, + "A2_sigma": 6.897191056932658e-12, + "n": 97, + "kept": 97, + "chi2": 78.76812146415557, + "dof": 187 + }, + "boot held 107": { + "tag": "boot held 107", + "A2": -3.791241674946868e-12, + "A2_sigma": 2.1698677094383265e-12, + "n": 96, + "kept": 95, + "chi2": 36.32282595621975, + "dof": 183 + }, + "boot free 112": { + "tag": "boot free 112", + "A2": 6.568310369827772e-13, + "A2_sigma": 6.662671059381204e-12, + "n": 82, + "kept": 81, + "chi2": 51.30937579583093, + "dof": 155 + }, + "boot free 111": { + "tag": "boot free 111", + "A2": -3.4309718290907083e-12, + "A2_sigma": 3.723659964804375e-13, + "n": 108, + "kept": 107, + "chi2": 54.33836117671623, + "dof": 207 + }, + "boot free 107": { + "tag": "boot free 107", + "A2": -4.165885291814623e-12, + "A2_sigma": 7.165725048056159e-13, + "n": 110, + "kept": 109, + "chi2": 45.96940580308329, + "dof": 211 + }, + "boot free 110": { + "tag": "boot free 110", + "A2": -3.272310512027456e-12, + "A2_sigma": 3.0640810539815303e-13, + "n": 108, + "kept": 107, + "chi2": 51.31540031206184, + "dof": 207 + }, + "boot free 115": { + "tag": "boot free 115", + "A2": -3.4574146651528153e-12, + "A2_sigma": 3.675079688720351e-13, + "n": 108, + "kept": 108, + "chi2": 84.5403076296333, + "dof": 209 + }, + "boot held 115": { + "tag": "boot held 115", + "A2": -4.033681544474398e-12, + "A2_sigma": 2.667979540983206e-12, + "n": 95, + "kept": 95, + "chi2": 40.45877668773725, + "dof": 183 + }, + "boot held 109": { + "tag": "boot held 109", + "A2": -3.6020865298572486e-12, + "A2_sigma": 3.9289296680299647e-13, + "n": 100, + "kept": 99, + "chi2": 50.77714929834657, + "dof": 191 + }, + "boot held 110": { + "tag": "boot held 110", + "A2": -3.1953390908067287e-12, + "A2_sigma": 3.5828582120275666e-13, + "n": 100, + "kept": 99, + "chi2": 44.99616511103642, + "dof": 191 + }, + "boot held 114": { + "tag": "boot held 114", + "A2": -3.724992941436097e-12, + "A2_sigma": 8.910358245815523e-13, + "n": 107, + "kept": 107, + "chi2": 57.44790584674179, + "dof": 207 + }, + "boot free 117": { + "tag": "boot free 117", + "A2": -1.5624510082828087e-12, + "A2_sigma": 5.038061601531208e-12, + "n": 87, + "kept": 87, + "chi2": 36.602913218052564, + "dof": 167 + }, + "boot held 112": { + "tag": "boot held 112", + "A2": -3.544448612999806e-12, + "A2_sigma": 3.6204244058865665e-13, + "n": 103, + "kept": 103, + "chi2": 49.187671734965086, + "dof": 199 + }, + "boot free 116": { + "tag": "boot free 116", + "A2": -3.2114829121109222e-12, + "A2_sigma": 2.970181122088374e-13, + "n": 106, + "kept": 106, + "chi2": 50.46223218056056, + "dof": 205 + }, + "boot free 113": { + "tag": "boot free 113", + "A2": -3.4413172259597494e-12, + "A2_sigma": 3.5638080462878795e-13, + "n": 92, + "kept": 90, + "chi2": 47.730443217992, + "dof": 173 + }, + "boot held 113": { + "tag": "boot held 113", + "A2": -3.567549908918175e-12, + "A2_sigma": 9.268043531116652e-13, + "n": 104, + "kept": 102, + "chi2": 47.397454146588245, + "dof": 197 + }, + "boot held 111": { + "tag": "boot held 111", + "A2": -4.070392086627682e-12, + "A2_sigma": 7.319965075787476e-13, + "n": 99, + "kept": 98, + "chi2": 55.45121316579807, + "dof": 189 + }, + "boot free 118": { + "tag": "boot free 118", + "A2": -3.706321158481063e-12, + "A2_sigma": 8.802041013332901e-13, + "n": 127, + "kept": 127, + "chi2": 70.43544348591843, + "dof": 247 + }, + "boot free 124": { + "tag": "boot free 124", + "A2": 5.783936864378485e-12, + "A2_sigma": 8.725192908574998e-12, + "n": 87, + "kept": 87, + "chi2": 55.64860163428281, + "dof": 167 + }, + "boot held 116": { + "tag": "boot held 116", + "A2": -3.9947920329471896e-12, + "A2_sigma": 7.176933436309062e-13, + "n": 102, + "kept": 100, + "chi2": 39.82631787418504, + "dof": 193 + }, + "boot free 122": { + "tag": "boot free 122", + "A2": -1.8045308711986478e-12, + "A2_sigma": 1.0290800872583268e-11, + "n": 86, + "kept": 84, + "chi2": 72.10643671811789, + "dof": 161 + }, + "boot held 120": { + "tag": "boot held 120", + "A2": -6.066575519491414e-12, + "A2_sigma": 2.6325739198176398e-12, + "n": 97, + "kept": 94, + "chi2": 46.04680474456201, + "dof": 181 + }, + "boot held 122": { + "tag": "boot held 122", + "A2": -4.0703333205255155e-12, + "A2_sigma": 2.662475912894559e-12, + "n": 98, + "kept": 98, + "chi2": 50.93715351233488, + "dof": 189 + }, + "boot held 118": { + "tag": "boot held 118", + "A2": -3.971237282215023e-12, + "A2_sigma": 2.1722600994817305e-12, + "n": 108, + "kept": 107, + "chi2": 49.40150864268367, + "dof": 207 + }, + "boot free 119": { + "tag": "boot free 119", + "A2": -3.685274635915591e-12, + "A2_sigma": 3.477129750699225e-13, + "n": 107, + "kept": 104, + "chi2": 43.44151954013464, + "dof": 201 + }, + "boot held 117": { + "tag": "boot held 117", + "A2": -3.616759379166568e-12, + "A2_sigma": 3.8575752754659744e-13, + "n": 94, + "kept": 92, + "chi2": 50.3248059319306, + "dof": 177 + }, + "boot free 127": { + "tag": "boot free 127", + "A2": 2.5768781303802892e-12, + "A2_sigma": 7.55973147595659e-12, + "n": 100, + "kept": 100, + "chi2": 112.25505921727323, + "dof": 193 + }, + "boot free 126": { + "tag": "boot free 126", + "A2": 2.755628704289486e-12, + "A2_sigma": 5.2723984967534946e-12, + "n": 79, + "kept": 79, + "chi2": 46.49678001806122, + "dof": 151 + }, + "boot free 125": { + "tag": "boot free 125", + "A2": -3.895510234221196e-12, + "A2_sigma": 1.0847428579190883e-11, + "n": 100, + "kept": 98, + "chi2": 54.74283839245772, + "dof": 189 + }, + "boot held 124": { + "tag": "boot held 124", + "A2": -3.617076897154267e-12, + "A2_sigma": 7.136286482050018e-13, + "n": 100, + "kept": 100, + "chi2": 44.617491937303434, + "dof": 193 + }, + "boot held 119": { + "tag": "boot held 119", + "A2": -4.430193124431934e-12, + "A2_sigma": 7.392700665687657e-13, + "n": 92, + "kept": 91, + "chi2": 46.15117980153546, + "dof": 175 + }, + "boot free 121": { + "tag": "boot free 121", + "A2": -3.454580039035761e-12, + "A2_sigma": 3.4807374730040125e-13, + "n": 108, + "kept": 106, + "chi2": 28.81492018156517, + "dof": 205 + }, + "boot free 120": { + "tag": "boot free 120", + "A2": -4.103761342796805e-12, + "A2_sigma": 7.199120151060061e-13, + "n": 99, + "kept": 98, + "chi2": 34.23621538597653, + "dof": 189 + }, + "boot held 121": { + "tag": "boot held 121", + "A2": -3.292056895119763e-12, + "A2_sigma": 3.870224500538499e-13, + "n": 115, + "kept": 114, + "chi2": 73.67474605155564, + "dof": 221 + }, + "boot free 123": { + "tag": "boot free 123", + "A2": -4.01479275077031e-12, + "A2_sigma": 8.957464653135733e-13, + "n": 117, + "kept": 116, + "chi2": 52.148129761363855, + "dof": 225 + }, + "boot held 123": { + "tag": "boot held 123", + "A2": -3.550307213826134e-12, + "A2_sigma": 3.6499873423841527e-13, + "n": 106, + "kept": 105, + "chi2": 56.203192974603226, + "dof": 203 + }, + "boot held 126": { + "tag": "boot held 126", + "A2": -3.403809934374746e-12, + "A2_sigma": 3.705353599163871e-13, + "n": 103, + "kept": 103, + "chi2": 45.67930003815203, + "dof": 199 + }, + "boot held 130": { + "tag": "boot held 130", + "A2": -3.402387184357396e-12, + "A2_sigma": 2.4553159303195716e-12, + "n": 106, + "kept": 106, + "chi2": 55.696748060706696, + "dof": 205 + }, + "boot held 125": { + "tag": "boot held 125", + "A2": -3.4286620387508518e-12, + "A2_sigma": 3.744197140765582e-13, + "n": 102, + "kept": 101, + "chi2": 51.5878925795844, + "dof": 195 + }, + "boot free 133": { + "tag": "boot free 133", + "A2": 8.199251804652921e-12, + "A2_sigma": 1.204195009760356e-11, + "n": 75, + "kept": 75, + "chi2": 63.00126465523112, + "dof": 143 + }, + "boot free 128": { + "tag": "boot free 128", + "A2": -3.8155138592283415e-12, + "A2_sigma": 5.977228137703801e-13, + "n": 111, + "kept": 111, + "chi2": 42.806698426574066, + "dof": 215 + }, + "boot free 130": { + "tag": "boot free 130", + "A2": -3.4904276368613757e-12, + "A2_sigma": 3.7146868397405745e-13, + "n": 92, + "kept": 92, + "chi2": 39.46011947760471, + "dof": 177 + }, + "boot held 129": { + "tag": "boot held 129", + "A2": -3.408433860532282e-12, + "A2_sigma": 3.795642215773585e-13, + "n": 98, + "kept": 98, + "chi2": 58.486052878058125, + "dof": 189 + }, + "boot free 135": { + "tag": "boot free 135", + "A2": -7.182031322403846e-14, + "A2_sigma": 7.752700451379029e-12, + "n": 95, + "kept": 95, + "chi2": 79.21251472286855, + "dof": 183 + }, + "boot held 127": { + "tag": "boot held 127", + "A2": -4.557170430164348e-12, + "A2_sigma": 9.885158653675332e-13, + "n": 103, + "kept": 102, + "chi2": 47.52155077301278, + "dof": 197 + }, + "boot held 128": { + "tag": "boot held 128", + "A2": -3.675263080096135e-12, + "A2_sigma": 3.9043374110044086e-13, + "n": 96, + "kept": 94, + "chi2": 57.921160450947916, + "dof": 181 + }, + "boot held 133": { + "tag": "boot held 133", + "A2": -3.1950533550599835e-12, + "A2_sigma": 3.730449717035893e-13, + "n": 102, + "kept": 102, + "chi2": 56.14323386987267, + "dof": 197 + }, + "boot free 129": { + "tag": "boot free 129", + "A2": -3.2751251310926348e-12, + "A2_sigma": 3.7302260196375035e-13, + "n": 99, + "kept": 96, + "chi2": 55.14145798200496, + "dof": 185 + }, + "boot held 134": { + "tag": "boot held 134", + "A2": -4.136913575713608e-12, + "A2_sigma": 7.516496024293995e-13, + "n": 96, + "kept": 96, + "chi2": 50.561464322007566, + "dof": 185 + }, + "boot held 131": { + "tag": "boot held 131", + "A2": -4.081170203519142e-12, + "A2_sigma": 9.26017898369856e-13, + "n": 91, + "kept": 88, + "chi2": 35.67822735284017, + "dof": 169 + }, + "boot free 131": { + "tag": "boot free 131", + "A2": -3.3229228352093327e-12, + "A2_sigma": 3.6840657970844294e-13, + "n": 111, + "kept": 110, + "chi2": 62.81162910026816, + "dof": 213 + }, + "boot free 132": { + "tag": "boot free 132", + "A2": -3.3096974768916523e-12, + "A2_sigma": 3.089998044343022e-13, + "n": 101, + "kept": 99, + "chi2": 34.67009665831305, + "dof": 191 + }, + "boot held 132": { + "tag": "boot held 132", + "A2": -3.3503656565044914e-12, + "A2_sigma": 3.774164632218372e-13, + "n": 97, + "kept": 96, + "chi2": 78.29066351216055, + "dof": 185 + }, + "boot free 137": { + "tag": "boot free 137", + "A2": -3.7068880692251993e-13, + "A2_sigma": 6.846814150112293e-12, + "n": 81, + "kept": 79, + "chi2": 58.23356838350389, + "dof": 151 + }, + "boot free 136": { + "tag": "boot free 136", + "A2": -3.5641115532114996e-12, + "A2_sigma": 3.346243913043187e-13, + "n": 112, + "kept": 111, + "chi2": 76.83759880830192, + "dof": 215 + }, + "boot held 135": { + "tag": "boot held 135", + "A2": -4.803166333663101e-12, + "A2_sigma": 3.0857189538520243e-12, + "n": 98, + "kept": 96, + "chi2": 52.174481994019914, + "dof": 185 + }, + "boot held 136": { + "tag": "boot held 136", + "A2": -4.212957305111444e-12, + "A2_sigma": 6.785828181531049e-13, + "n": 94, + "kept": 94, + "chi2": 31.89760792330455, + "dof": 181 + }, + "boot free 134": { + "tag": "boot free 134", + "A2": -3.423001848992862e-12, + "A2_sigma": 3.690387836161846e-13, + "n": 97, + "kept": 96, + "chi2": 59.12646227312575, + "dof": 185 + }, + "boot held 138": { + "tag": "boot held 138", + "A2": -4.14269678188943e-12, + "A2_sigma": 4.804359155622412e-13, + "n": 92, + "kept": 92, + "chi2": 108.01236400780408, + "dof": 177 + }, + "boot free 139": { + "tag": "boot free 139", + "A2": 2.4558914524796144e-12, + "A2_sigma": 8.919899240284465e-12, + "n": 96, + "kept": 95, + "chi2": 81.76645927195895, + "dof": 183 + }, + "boot free 140": { + "tag": "boot free 140", + "A2": -4.158277741083292e-13, + "A2_sigma": 5.09839851902218e-12, + "n": 99, + "kept": 97, + "chi2": 54.315621477327205, + "dof": 187 + }, + "boot free 138": { + "tag": "boot free 138", + "A2": -3.300078698107485e-12, + "A2_sigma": 3.2695877677779107e-13, + "n": 132, + "kept": 131, + "chi2": 47.7831270536279, + "dof": 255 + }, + "boot free 146": { + "tag": "boot free 146", + "A2": 1.7810333884458211e-12, + "A2_sigma": 5.514799820092556e-12, + "n": 94, + "kept": 94, + "chi2": 51.04774629511994, + "dof": 181 + }, + "boot free 142": { + "tag": "boot free 142", + "A2": 1.933990541092692e-13, + "A2_sigma": 6.360018756935759e-12, + "n": 101, + "kept": 100, + "chi2": 72.6205337029817, + "dof": 193 + }, + "boot free 144": { + "tag": "boot free 144", + "A2": 2.0581885728974084e-12, + "A2_sigma": 4.5268961629512915e-12, + "n": 86, + "kept": 86, + "chi2": 45.74640182971513, + "dof": 165 + }, + "boot free 141": { + "tag": "boot free 141", + "A2": -2.4275063193904366e-12, + "A2_sigma": 6.3550939638628e-12, + "n": 87, + "kept": 85, + "chi2": 47.629276959422945, + "dof": 163 + }, + "boot held 137": { + "tag": "boot held 137", + "A2": -3.3322395187495055e-12, + "A2_sigma": 3.791176218820974e-13, + "n": 92, + "kept": 90, + "chi2": 41.775371897598056, + "dof": 173 + }, + "boot held 144": { + "tag": "boot held 144", + "A2": -3.3534303384635176e-12, + "A2_sigma": 3.622355717556961e-13, + "n": 89, + "kept": 89, + "chi2": 72.40066335797633, + "dof": 171 + }, + "boot held 142": { + "tag": "boot held 142", + "A2": -3.347218118437441e-12, + "A2_sigma": 3.723204677011998e-13, + "n": 98, + "kept": 98, + "chi2": 46.62808374974973, + "dof": 189 + }, + "boot held 139": { + "tag": "boot held 139", + "A2": -3.2817920182575642e-12, + "A2_sigma": 3.647298350860272e-13, + "n": 107, + "kept": 106, + "chi2": 68.93742860828905, + "dof": 205 + }, + "boot held 140": { + "tag": "boot held 140", + "A2": -3.8651297631620575e-12, + "A2_sigma": 4.665926305927796e-13, + "n": 104, + "kept": 102, + "chi2": 72.50619208895822, + "dof": 197 + }, + "boot held 141": { + "tag": "boot held 141", + "A2": -4.6524493306528296e-12, + "A2_sigma": 2.2028451268039356e-12, + "n": 89, + "kept": 88, + "chi2": 37.799017500460025, + "dof": 169 + }, + "boot held 145": { + "tag": "boot held 145", + "A2": -4.466297920843758e-12, + "A2_sigma": 2.3770418605606084e-12, + "n": 93, + "kept": 92, + "chi2": 49.73483012610949, + "dof": 177 + }, + "boot free 143": { + "tag": "boot free 143", + "A2": -3.979684294535673e-12, + "A2_sigma": 4.151450740379331e-13, + "n": 99, + "kept": 98, + "chi2": 46.781900568905094, + "dof": 189 + }, + "boot free 145": { + "tag": "boot free 145", + "A2": -3.545091684046606e-12, + "A2_sigma": 3.270721729380882e-13, + "n": 119, + "kept": 118, + "chi2": 56.19595867611006, + "dof": 229 + }, + "boot held 147": { + "tag": "boot held 147", + "A2": -3.4797500701334424e-12, + "A2_sigma": 3.6573217397498235e-13, + "n": 96, + "kept": 96, + "chi2": 52.893160955981664, + "dof": 185 + }, + "boot free 148": { + "tag": "boot free 148", + "A2": -2.53902563715922e-12, + "A2_sigma": 5.289878888826905e-12, + "n": 88, + "kept": 87, + "chi2": 64.18879000819506, + "dof": 167 + }, + "boot free 147": { + "tag": "boot free 147", + "A2": -5.146220095120396e-12, + "A2_sigma": 2.3758662030405854e-12, + "n": 104, + "kept": 99, + "chi2": 45.29204532089134, + "dof": 191 + }, + "boot held 149": { + "tag": "boot held 149", + "A2": -3.3010166238937837e-12, + "A2_sigma": 3.7261648366770183e-13, + "n": 102, + "kept": 102, + "chi2": 48.94572555027088, + "dof": 197 + }, + "boot held 143": { + "tag": "boot held 143", + "A2": -3.4571371542529563e-12, + "A2_sigma": 3.6190531736007307e-13, + "n": 98, + "kept": 95, + "chi2": 47.649798440418635, + "dof": 183 + }, + "boot held 146": { + "tag": "boot held 146", + "A2": -3.814013902567759e-12, + "A2_sigma": 6.563329083673963e-13, + "n": 101, + "kept": 100, + "chi2": 63.148161881621085, + "dof": 193 + }, + "boot free 150": { + "tag": "boot free 150", + "A2": -3.4492884482991115e-12, + "A2_sigma": 3.6346549770510835e-13, + "n": 106, + "kept": 106, + "chi2": 69.41457554718356, + "dof": 205 + }, + "boot free 153": { + "tag": "boot free 153", + "A2": -3.8830284048328554e-13, + "A2_sigma": 5.014188667753198e-12, + "n": 103, + "kept": 103, + "chi2": 57.86823487515718, + "dof": 199 + }, + "boot free 154": { + "tag": "boot free 154", + "A2": -2.1709678743410105e-12, + "A2_sigma": 4.3120312951409824e-12, + "n": 102, + "kept": 102, + "chi2": 75.55120814849694, + "dof": 197 + }, + "boot free 149": { + "tag": "boot free 149", + "A2": -3.911805822921602e-12, + "A2_sigma": 6.095663325273984e-13, + "n": 100, + "kept": 99, + "chi2": 28.09361424726679, + "dof": 191 + }, + "boot held 153": { + "tag": "boot held 153", + "A2": -3.495575560973228e-12, + "A2_sigma": 4.4012215190875453e-13, + "n": 108, + "kept": 108, + "chi2": 64.91864901686743, + "dof": 209 + }, + "boot held 151": { + "tag": "boot held 151", + "A2": -3.408343114029384e-12, + "A2_sigma": 3.7274163404468737e-13, + "n": 88, + "kept": 87, + "chi2": 53.66944367068315, + "dof": 167 + }, + "boot free 155": { + "tag": "boot free 155", + "A2": -1.7706266677508821e-12, + "A2_sigma": 8.286521764952417e-12, + "n": 94, + "kept": 93, + "chi2": 54.21915744595715, + "dof": 179 + }, + "boot held 150": { + "tag": "boot held 150", + "A2": -3.4816642982269662e-12, + "A2_sigma": 1.5837262707237854e-12, + "n": 108, + "kept": 107, + "chi2": 42.94549302979789, + "dof": 207 + }, + "boot held 148": { + "tag": "boot held 148", + "A2": -4.272572679032371e-12, + "A2_sigma": 9.176161255603333e-13, + "n": 98, + "kept": 96, + "chi2": 39.00406827305732, + "dof": 185 + }, + "boot held 152": { + "tag": "boot held 152", + "A2": -3.626441059037964e-12, + "A2_sigma": 4.2842300959238566e-13, + "n": 91, + "kept": 91, + "chi2": 57.43942602281934, + "dof": 175 + }, + "boot free 160": { + "tag": "boot free 160", + "A2": 1.005824723560601e-10, + "A2_sigma": 2.2363636139807235e-10, + "n": 94, + "kept": 90, + "chi2": 44.43464104374106, + "dof": 173 + }, + "boot free 151": { + "tag": "boot free 151", + "A2": -4.469676315489735e-12, + "A2_sigma": 7.127303730283411e-13, + "n": 117, + "kept": 115, + "chi2": 37.645971197510924, + "dof": 223 + }, + "boot free 156": { + "tag": "boot free 156", + "A2": -3.5554368140135412e-12, + "A2_sigma": 3.711352726654471e-13, + "n": 98, + "kept": 96, + "chi2": 43.38445785858323, + "dof": 185 + }, + "boot free 152": { + "tag": "boot free 152", + "A2": -3.4510538772694182e-12, + "A2_sigma": 3.799791644116569e-13, + "n": 102, + "kept": 101, + "chi2": 48.34956672933339, + "dof": 195 + }, + "boot held 156": { + "tag": "boot held 156", + "A2": -3.671773158836383e-12, + "A2_sigma": 1.8915938128963752e-12, + "n": 103, + "kept": 101, + "chi2": 50.34911900881597, + "dof": 195 + }, + "boot free 159": { + "tag": "boot free 159", + "A2": -6.642279149704914e-12, + "A2_sigma": 1.0460949921440193e-11, + "n": 111, + "kept": 107, + "chi2": 29.32217960519383, + "dof": 207 + }, + "boot held 155": { + "tag": "boot held 155", + "A2": -3.820834025772506e-12, + "A2_sigma": 2.322965294499678e-12, + "n": 89, + "kept": 87, + "chi2": 27.391399797861602, + "dof": 167 + }, + "boot held 154": { + "tag": "boot held 154", + "A2": -3.646127661182831e-12, + "A2_sigma": 3.718242376087195e-13, + "n": 99, + "kept": 98, + "chi2": 57.57581796440583, + "dof": 189 + }, + "boot free 164": { + "tag": "boot free 164", + "A2": 2.0232168327248477e-10, + "A2_sigma": 2.1831834858227524e-10, + "n": 95, + "kept": 94, + "chi2": 52.625931127907116, + "dof": 181 + }, + "boot held 157": { + "tag": "boot held 157", + "A2": -3.848705017223375e-12, + "A2_sigma": 7.140275495927695e-13, + "n": 94, + "kept": 92, + "chi2": 48.3069798390672, + "dof": 177 + }, + "boot held 162": { + "tag": "boot held 162", + "A2": -3.258283773305986e-12, + "A2_sigma": 3.20393749588125e-12, + "n": 97, + "kept": 97, + "chi2": 59.889151507240506, + "dof": 187 + }, + "boot free 158": { + "tag": "boot free 158", + "A2": -3.95330087416147e-12, + "A2_sigma": 7.095418051373398e-13, + "n": 105, + "kept": 104, + "chi2": 46.980340989440975, + "dof": 201 + }, + "boot free 157": { + "tag": "boot free 157", + "A2": -3.619021184903687e-12, + "A2_sigma": 3.526278807201656e-13, + "n": 96, + "kept": 95, + "chi2": 58.395798594445424, + "dof": 183 + }, + "boot free 161": { + "tag": "boot free 161", + "A2": -3.4126564098035973e-12, + "A2_sigma": 2.3958498784808035e-12, + "n": 101, + "kept": 99, + "chi2": 44.08905629069789, + "dof": 191 + }, + "boot held 158": { + "tag": "boot held 158", + "A2": -4.50378816310408e-12, + "A2_sigma": 1.0036208300477047e-12, + "n": 87, + "kept": 85, + "chi2": 45.146025198023914, + "dof": 163 + }, + "boot held 163": { + "tag": "boot held 163", + "A2": -3.5263475039529483e-12, + "A2_sigma": 3.5818372739561964e-13, + "n": 107, + "kept": 107, + "chi2": 69.59233189225847, + "dof": 207 + }, + "boot held 159": { + "tag": "boot held 159", + "A2": -3.602251475884715e-12, + "A2_sigma": 3.6696079283910485e-13, + "n": 99, + "kept": 98, + "chi2": 60.1225639917024, + "dof": 189 + }, + "boot free 163": { + "tag": "boot free 163", + "A2": -3.8275605378339126e-12, + "A2_sigma": 2.103110175705148e-12, + "n": 103, + "kept": 102, + "chi2": 44.395541642381545, + "dof": 197 + }, + "boot free 162": { + "tag": "boot free 162", + "A2": -3.6687068381498035e-12, + "A2_sigma": 2.133085414949682e-12, + "n": 94, + "kept": 90, + "chi2": 34.22190270896692, + "dof": 173 + }, + "boot held 160": { + "tag": "boot held 160", + "A2": -3.3583041185008753e-12, + "A2_sigma": 3.9074995855948423e-13, + "n": 97, + "kept": 96, + "chi2": 60.23467070732776, + "dof": 185 + }, + "boot free 167": { + "tag": "boot free 167", + "A2": -2.128224008348173e-12, + "A2_sigma": 5.361531351611384e-12, + "n": 87, + "kept": 86, + "chi2": 50.61036865371027, + "dof": 165 + }, + "boot held 161": { + "tag": "boot held 161", + "A2": -3.270147751269542e-12, + "A2_sigma": 3.7250060885975264e-13, + "n": 111, + "kept": 110, + "chi2": 64.12165996270524, + "dof": 213 + }, + "boot held 164": { + "tag": "boot held 164", + "A2": -3.935663136012673e-12, + "A2_sigma": 8.887021767674032e-13, + "n": 99, + "kept": 99, + "chi2": 55.54900050882886, + "dof": 191 + }, + "boot free 165": { + "tag": "boot free 165", + "A2": -3.5495271185357843e-12, + "A2_sigma": 6.886192983401029e-13, + "n": 115, + "kept": 115, + "chi2": 45.415401527744464, + "dof": 223 + }, + "boot free 169": { + "tag": "boot free 169", + "A2": -1.510425458445396e-13, + "A2_sigma": 5.766615113271509e-12, + "n": 116, + "kept": 115, + "chi2": 78.43305938804902, + "dof": 223 + }, + "boot held 168": { + "tag": "boot held 168", + "A2": -4.855736844053251e-12, + "A2_sigma": 3.0695115501415594e-12, + "n": 113, + "kept": 113, + "chi2": 45.19577029896475, + "dof": 219 + }, + "boot free 168": { + "tag": "boot free 168", + "A2": -3.1901802680992976e-12, + "A2_sigma": 4.0835222335082147e-13, + "n": 94, + "kept": 94, + "chi2": 53.572598996786915, + "dof": 181 + }, + "boot held 167": { + "tag": "boot held 167", + "A2": -3.2905711800135183e-12, + "A2_sigma": 3.5971358411282725e-13, + "n": 101, + "kept": 101, + "chi2": 56.02746220374602, + "dof": 195 + }, + "boot held 165": { + "tag": "boot held 165", + "A2": -4.124678132559707e-12, + "A2_sigma": 9.185697164880254e-13, + "n": 99, + "kept": 95, + "chi2": 41.23229932103073, + "dof": 183 + }, + "boot held 166": { + "tag": "boot held 166", + "A2": -4.356952405938726e-12, + "A2_sigma": 9.184709221900906e-13, + "n": 103, + "kept": 101, + "chi2": 39.06545053931267, + "dof": 195 + }, + "boot free 170": { + "tag": "boot free 170", + "A2": -4.683371199924451e-12, + "A2_sigma": 8.617527660098442e-12, + "n": 89, + "kept": 87, + "chi2": 68.79643564378819, + "dof": 167 + }, + "boot held 170": { + "tag": "boot held 170", + "A2": -6.169388489772838e-12, + "A2_sigma": 2.501290157230411e-12, + "n": 101, + "kept": 100, + "chi2": 53.76759057432832, + "dof": 193 + }, + "boot held 169": { + "tag": "boot held 169", + "A2": -3.62411040101942e-12, + "A2_sigma": 3.783282631049493e-13, + "n": 121, + "kept": 121, + "chi2": 62.03618297584756, + "dof": 235 + }, + "boot free 166": { + "tag": "boot free 166", + "A2": -3.926493982729753e-12, + "A2_sigma": 9.34247219886141e-13, + "n": 97, + "kept": 94, + "chi2": 59.8963152495994, + "dof": 181 + }, + "boot held 172": { + "tag": "boot held 172", + "A2": -3.6375517025179133e-12, + "A2_sigma": 4.3175318907313715e-13, + "n": 119, + "kept": 119, + "chi2": 78.46222801672613, + "dof": 231 + }, + "boot free 171": { + "tag": "boot free 171", + "A2": -3.3651571656747363e-12, + "A2_sigma": 3.6411320256459027e-13, + "n": 99, + "kept": 98, + "chi2": 64.16586369686163, + "dof": 189 + }, + "boot held 178": { + "tag": "boot held 178", + "A2": -3.3440968685778772e-12, + "A2_sigma": 3.6067158705466525e-13, + "n": 89, + "kept": 89, + "chi2": 46.724653380637044, + "dof": 171 + }, + "boot free 174": { + "tag": "boot free 174", + "A2": -4.21383731755115e-12, + "A2_sigma": 7.37296461016656e-13, + "n": 105, + "kept": 105, + "chi2": 55.3153253308046, + "dof": 203 + }, + "boot held 171": { + "tag": "boot held 171", + "A2": -3.933833786069378e-12, + "A2_sigma": 6.549976662596734e-13, + "n": 100, + "kept": 99, + "chi2": 52.1947555223149, + "dof": 191 + }, + "boot free 173": { + "tag": "boot free 173", + "A2": -3.4305014640785696e-12, + "A2_sigma": 3.5020246085554664e-13, + "n": 114, + "kept": 112, + "chi2": 69.67899487453519, + "dof": 217 + }, + "boot held 174": { + "tag": "boot held 174", + "A2": -3.22588016458331e-12, + "A2_sigma": 3.776004886660103e-13, + "n": 93, + "kept": 92, + "chi2": 55.0071088186884, + "dof": 177 + }, + "boot held 175": { + "tag": "boot held 175", + "A2": -3.972459118301655e-12, + "A2_sigma": 3.2447923305648585e-12, + "n": 115, + "kept": 113, + "chi2": 62.96252297901092, + "dof": 219 + }, + "boot free 178": { + "tag": "boot free 178", + "A2": -1.9421899472632816e-12, + "A2_sigma": 6.321568614764149e-12, + "n": 84, + "kept": 83, + "chi2": 46.58321945158088, + "dof": 159 + }, + "boot free 172": { + "tag": "boot free 172", + "A2": -3.831193214084447e-12, + "A2_sigma": 6.936905487223263e-13, + "n": 118, + "kept": 117, + "chi2": 63.40551542596502, + "dof": 227 + }, + "boot held 173": { + "tag": "boot held 173", + "A2": -3.692006506170341e-12, + "A2_sigma": 4.103059076556896e-13, + "n": 86, + "kept": 84, + "chi2": 51.23371459320587, + "dof": 161 + }, + "boot free 175": { + "tag": "boot free 175", + "A2": -3.5888297476622798e-12, + "A2_sigma": 3.395446490839472e-13, + "n": 103, + "kept": 102, + "chi2": 44.88355763851926, + "dof": 197 + }, + "boot free 176": { + "tag": "boot free 176", + "A2": -3.282251185791941e-12, + "A2_sigma": 2.915261180942928e-13, + "n": 122, + "kept": 121, + "chi2": 50.40687943906535, + "dof": 235 + }, + "boot free 179": { + "tag": "boot free 179", + "A2": -3.593810113815937e-12, + "A2_sigma": 3.5954504027388054e-13, + "n": 94, + "kept": 94, + "chi2": 45.71934202971677, + "dof": 181 + }, + "boot free 182": { + "tag": "boot free 182", + "A2": 5.408066154591997e-13, + "A2_sigma": 4.5720586675549846e-12, + "n": 87, + "kept": 87, + "chi2": 62.47235133588109, + "dof": 167 + }, + "boot held 177": { + "tag": "boot held 177", + "A2": -5.6045434645657614e-12, + "A2_sigma": 2.8187005823121716e-12, + "n": 106, + "kept": 104, + "chi2": 52.52926878521974, + "dof": 201 + }, + "boot free 181": { + "tag": "boot free 181", + "A2": -3.37544049002184e-12, + "A2_sigma": 3.5409520717183926e-13, + "n": 104, + "kept": 104, + "chi2": 58.20045933946541, + "dof": 201 + }, + "boot held 179": { + "tag": "boot held 179", + "A2": -3.4236318890974747e-12, + "A2_sigma": 3.7653670684695737e-13, + "n": 111, + "kept": 111, + "chi2": 73.0577096259563, + "dof": 215 + }, + "boot held 176": { + "tag": "boot held 176", + "A2": -3.577005856320727e-12, + "A2_sigma": 3.820872935205741e-13, + "n": 98, + "kept": 97, + "chi2": 71.03206864329313, + "dof": 187 + }, + "boot free 177": { + "tag": "boot free 177", + "A2": -3.2207545516311236e-12, + "A2_sigma": 2.970011850975687e-13, + "n": 127, + "kept": 126, + "chi2": 54.005567323799895, + "dof": 245 + }, + "boot free 180": { + "tag": "boot free 180", + "A2": -3.710373310231758e-12, + "A2_sigma": 3.340788664950415e-13, + "n": 114, + "kept": 114, + "chi2": 52.88035250130168, + "dof": 221 + }, + "boot free 185": { + "tag": "boot free 185", + "A2": 2.8856602883883564e-13, + "A2_sigma": 8.096669519233495e-12, + "n": 79, + "kept": 79, + "chi2": 42.95065067443492, + "dof": 151 + }, + "boot free 183": { + "tag": "boot free 183", + "A2": -3.2930786468591928e-12, + "A2_sigma": 3.4913088880722527e-13, + "n": 110, + "kept": 110, + "chi2": 64.8585107245599, + "dof": 213 + }, + "boot free 186": { + "tag": "boot free 186", + "A2": 2.910170074142999e-12, + "A2_sigma": 1.930244201351678e-11, + "n": 99, + "kept": 98, + "chi2": 66.4123209346714, + "dof": 189 + }, + "boot free 188": { + "tag": "boot free 188", + "A2": 5.687117360553404e-13, + "A2_sigma": 9.557267631692714e-12, + "n": 96, + "kept": 96, + "chi2": 71.24600053758805, + "dof": 185 + }, + "boot free 187": { + "tag": "boot free 187", + "A2": -2.990873875111364e-12, + "A2_sigma": 6.23245914149206e-12, + "n": 84, + "kept": 83, + "chi2": 60.593848012822136, + "dof": 159 + }, + "boot held 182": { + "tag": "boot held 182", + "A2": -4.095981774729283e-12, + "A2_sigma": 3.252092150293877e-12, + "n": 105, + "kept": 103, + "chi2": 52.403728113420414, + "dof": 199 + }, + "boot held 184": { + "tag": "boot held 184", + "A2": -4.148511387910745e-12, + "A2_sigma": 9.288986738185902e-13, + "n": 105, + "kept": 105, + "chi2": 51.79589448393761, + "dof": 203 + }, + "boot held 180": { + "tag": "boot held 180", + "A2": -3.492033714269239e-12, + "A2_sigma": 3.6222090434326777e-13, + "n": 96, + "kept": 94, + "chi2": 49.870329456997545, + "dof": 181 + }, + "boot held 185": { + "tag": "boot held 185", + "A2": -3.419041866703315e-12, + "A2_sigma": 4.3546159630417314e-13, + "n": 105, + "kept": 105, + "chi2": 62.97935128875954, + "dof": 203 + }, + "boot held 189": { + "tag": "boot held 189", + "A2": -4.0287308912028636e-12, + "A2_sigma": 9.228901307544465e-13, + "n": 93, + "kept": 93, + "chi2": 43.34472770212682, + "dof": 179 + }, + "boot held 181": { + "tag": "boot held 181", + "A2": -4.2839724391108435e-12, + "A2_sigma": 7.528517617645429e-13, + "n": 98, + "kept": 97, + "chi2": 37.802487538098596, + "dof": 187 + }, + "boot free 189": { + "tag": "boot free 189", + "A2": -3.885197383571171e-12, + "A2_sigma": 3.9394718456409927e-13, + "n": 116, + "kept": 116, + "chi2": 70.1722110626706, + "dof": 225 + }, + "boot held 183": { + "tag": "boot held 183", + "A2": -3.4390909328427298e-12, + "A2_sigma": 3.820081948877857e-13, + "n": 98, + "kept": 97, + "chi2": 52.2500616254213, + "dof": 187 + }, + "boot free 184": { + "tag": "boot free 184", + "A2": -3.1729331905114174e-12, + "A2_sigma": 3.477749092117569e-13, + "n": 105, + "kept": 102, + "chi2": 53.318728205043094, + "dof": 197 + }, + "boot held 186": { + "tag": "boot held 186", + "A2": -3.56669845977375e-12, + "A2_sigma": 4.0859492050715996e-13, + "n": 86, + "kept": 85, + "chi2": 32.89477602943923, + "dof": 163 + }, + "boot free 193": { + "tag": "boot free 193", + "A2": -1.2055590373378227e-12, + "A2_sigma": 5.234173286657471e-12, + "n": 80, + "kept": 80, + "chi2": 45.1910275303521, + "dof": 153 + }, + "boot held 187": { + "tag": "boot held 187", + "A2": -3.5837677821382675e-12, + "A2_sigma": 3.842017905494894e-13, + "n": 108, + "kept": 106, + "chi2": 70.19117872985258, + "dof": 205 + }, + "boot free 192": { + "tag": "boot free 192", + "A2": -3.5888288157185003e-12, + "A2_sigma": 3.219650803261708e-13, + "n": 97, + "kept": 97, + "chi2": 51.959834386106074, + "dof": 187 + }, + "boot held 192": { + "tag": "boot held 192", + "A2": 6.638216962167265e-12, + "A2_sigma": 1.2509903232485321e-11, + "n": 95, + "kept": 93, + "chi2": 52.78740892884375, + "dof": 179 + }, + "boot held 188": { + "tag": "boot held 188", + "A2": -3.6014946688018744e-12, + "A2_sigma": 3.803605709314475e-13, + "n": 87, + "kept": 84, + "chi2": 45.11456840758725, + "dof": 161 + }, + "boot held 190": { + "tag": "boot held 190", + "A2": -4.013115374700376e-12, + "A2_sigma": 2.4480683586177744e-12, + "n": 108, + "kept": 107, + "chi2": 65.96097321864242, + "dof": 207 + }, + "boot free 190": { + "tag": "boot free 190", + "A2": -3.357738436765709e-12, + "A2_sigma": 4.101428397830159e-13, + "n": 102, + "kept": 101, + "chi2": 50.03454195897588, + "dof": 195 + }, + "boot held 194": { + "tag": "boot held 194", + "A2": -4.797402532630498e-12, + "A2_sigma": 2.375864895078717e-12, + "n": 105, + "kept": 105, + "chi2": 37.283973642624126, + "dof": 203 + }, + "boot held 191": { + "tag": "boot held 191", + "A2": -3.700640415003717e-12, + "A2_sigma": 3.86671233655339e-13, + "n": 104, + "kept": 103, + "chi2": 59.68353315714479, + "dof": 199 + }, + "boot held 195": { + "tag": "boot held 195", + "A2": -3.4847038520708516e-12, + "A2_sigma": 3.921308596514378e-13, + "n": 118, + "kept": 118, + "chi2": 74.78166945766313, + "dof": 229 + }, + "boot held 193": { + "tag": "boot held 193", + "A2": -3.2591859308751093e-12, + "A2_sigma": 3.847997372256142e-13, + "n": 97, + "kept": 94, + "chi2": 63.07133805771401, + "dof": 181 + }, + "boot free 196": { + "tag": "boot free 196", + "A2": -5.488927139738211e-12, + "A2_sigma": 3.0729483545325325e-12, + "n": 91, + "kept": 90, + "chi2": 50.13724733404396, + "dof": 173 + }, + "boot free 191": { + "tag": "boot free 191", + "A2": -4.168736482407629e-12, + "A2_sigma": 7.313355821287922e-13, + "n": 95, + "kept": 94, + "chi2": 47.896334203051545, + "dof": 181 + }, + "boot held 196": { + "tag": "boot held 196", + "A2": -5.153318065640186e-12, + "A2_sigma": 1.0044262986909017e-12, + "n": 115, + "kept": 115, + "chi2": 87.38733311220915, + "dof": 223 + }, + "boot free 198": { + "tag": "boot free 198", + "A2": -3.3047147565989463e-12, + "A2_sigma": 3.752503366256434e-13, + "n": 92, + "kept": 92, + "chi2": 55.401679794042444, + "dof": 177 + }, + "boot free 194": { + "tag": "boot free 194", + "A2": -3.814710535903175e-12, + "A2_sigma": 6.979541559578672e-13, + "n": 113, + "kept": 110, + "chi2": 34.99050000780486, + "dof": 213 + }, + "boot held 197": { + "tag": "boot held 197", + "A2": -4.20153261663185e-12, + "A2_sigma": 9.375001179864966e-13, + "n": 111, + "kept": 111, + "chi2": 56.02340174170253, + "dof": 215 + }, + "boot free 195": { + "tag": "boot free 195", + "A2": -3.799231760687401e-12, + "A2_sigma": 8.984805134065004e-13, + "n": 95, + "kept": 93, + "chi2": 39.249240074733514, + "dof": 179 + }, + "boot free 199": { + "tag": "boot free 199", + "A2": -3.0766383871317176e-12, + "A2_sigma": 4.640029595883442e-13, + "n": 89, + "kept": 89, + "chi2": 38.49218191548622, + "dof": 171 + }, + "boot held 199": { + "tag": "boot held 199", + "A2": -3.2656072364088057e-12, + "A2_sigma": 3.703521873895715e-13, + "n": 111, + "kept": 111, + "chi2": 85.87465187645458, + "dof": 215 + }, + "clip 1e+09 none": { + "tag": "clip 1e+09 none", + "A2": -3.3717795828090868e-12, + "A2_sigma": 1.6715365377919365e-13, + "n": 102, + "kept": 102, + "chi2": 292.5331781069485, + "dof": 197 + }, + "boot free 197": { + "tag": "boot free 197", + "A2": -3.90773261315821e-12, + "A2_sigma": 8.906671604558192e-13, + "n": 104, + "kept": 103, + "chi2": 42.5154835047921, + "dof": 199 + }, + "clip 12 night": { + "tag": "clip 12 night", + "A2": -3.440525544946955e-12, + "A2_sigma": 3.685958697977079e-13, + "n": 102, + "kept": 102, + "chi2": 67.85038987116017, + "dof": 197 + }, + "boot held 198": { + "tag": "boot held 198", + "A2": -3.937488630525426e-12, + "A2_sigma": 7.17501036900477e-13, + "n": 90, + "kept": 89, + "chi2": 38.424383968552974, + "dof": 171 + }, + "clip 1e+09 night": { + "tag": "clip 1e+09 night", + "A2": -3.440525544946955e-12, + "A2_sigma": 3.685958697977079e-13, + "n": 102, + "kept": 102, + "chi2": 67.85038987116017, + "dof": 197 + }, + "clip 6 none": { + "tag": "clip 6 none", + "A2": -3.523932524606276e-12, + "A2_sigma": 1.743514810788372e-13, + "n": 102, + "kept": 96, + "chi2": 114.2412409376351, + "dof": 185 + }, + "clip 6 night": { + "tag": "clip 6 night", + "A2": -3.4751463151670747e-12, + "A2_sigma": 3.7037653428652424e-13, + "n": 102, + "kept": 100, + "chi2": 50.55925589133174, + "dof": 193 + }, + "clip 12 none": { + "tag": "clip 12 none", + "A2": -3.5394782228506814e-12, + "A2_sigma": 1.7368746834496425e-13, + "n": 102, + "kept": 98, + "chi2": 132.08369176242488, + "dof": 189 + }, + "floor 0.10 night": { + "tag": "floor 0.10 night", + "A2": -3.414194222857172e-12, + "A2_sigma": 3.2206531361863716e-13, + "n": 102, + "kept": 101, + "chi2": 58.40872590943138, + "dof": 195 + }, + "floor 0.10 none": { + "tag": "floor 0.10 none", + "A2": -3.5152142415834457e-12, + "A2_sigma": 1.611741865441073e-13, + "n": 102, + "kept": 97, + "chi2": 122.47440747537507, + "dof": 187 + }, + "default 0.8 night": { + "tag": "default 0.8 night", + "A2": -3.449499591528898e-12, + "A2_sigma": 3.806641913334124e-13, + "n": 102, + "kept": 102, + "chi2": 60.27439507554027, + "dof": 197 + }, + "floor 0.25 none": { + "tag": "floor 0.25 none", + "A2": -3.6884329851856985e-12, + "A2_sigma": 2.145251151599413e-13, + "n": 102, + "kept": 97, + "chi2": 111.616905133068, + "dof": 187 + }, + "floor 0.25 night": { + "tag": "floor 0.25 night", + "A2": -3.582016504775408e-12, + "A2_sigma": 4.824513152847194e-13, + "n": 102, + "kept": 101, + "chi2": 55.15518343721252, + "dof": 195 + }, + "default 0.3 night": { + "tag": "default 0.3 night", + "A2": -3.4380062118096116e-12, + "A2_sigma": 3.4574330674289593e-13, + "n": 102, + "kept": 101, + "chi2": 62.975767201597144, + "dof": 195 + }, + "default 0.3 none": { + "tag": "default 0.3 none", + "A2": -3.5368070106472726e-12, + "A2_sigma": 1.662783106160733e-13, + "n": 102, + "kept": 97, + "chi2": 135.5912911136425, + "dof": 187 + }, + "default 0.8 none": { + "tag": "default 0.8 none", + "A2": -3.534450815563226e-12, + "A2_sigma": 1.7732256223459507e-13, + "n": 102, + "kept": 97, + "chi2": 116.06444732899719, + "dof": 187 + } + }, + "jackknife_none": { + "A2": -3.535611872094858e-12, + "formal": 1.7404439502954455e-13, + "se_rest": 3.1506956306023805e-13, + "range_rest": [ + -3.792854227181726e-12, + -3.484804889598388e-12 + ] + }, + "jackknife_night": { + "A2": -3.448859897611447e-12, + "formal": 3.701484681570248e-13, + "se_rest": 5.301299309612109e-13, + "range_rest": [ + -3.957559526879713e-12, + -3.3927187796563376e-12 + ] + }, + "bootstrap_free": { + "percentiles": [ + -6.76671394134631e-12, + -3.914155928490906e-12, + -3.420202990476237e-12, + -2.938521445071014e-14, + 8.163770632915022e-11 + ], + "frac_same_sign": 0.84, + "frac_3sigma_same_sign": 0.575 + }, + "bootstrap_held": { + "percentiles": [ + -4.8680839259899525e-12, + -4.0715552589857435e-12, + -3.588041530973648e-12, + -3.3048948223058703e-12, + -3.1790429462547304e-12 + ], + "frac_same_sign": 0.985, + "frac_3sigma_same_sign": 0.855 + }, + "prediction": { + "none": [ + { + "date": "2026-06-11", + "sep": 0.1533833957048258, + "sigma_accel": 0.06359743759681438, + "sigma_grav": 0.0724560779484102, + "across_accel": 0.04845887767671892, + "across_grav": 0.05116370666416506, + "z_0p2": 0.690842487241968 + }, + { + "date": "2026-06-21", + "sep": 0.16327202051296436, + "sigma_accel": 0.06792020761957399, + "sigma_grav": 0.07738439030927788, + "across_accel": 0.0525232721506477, + "across_grav": 0.05609030583731176, + "z_0p2": 0.7258219174222381 + }, + { + "date": "2026-07-01", + "sep": 0.17240608820299322, + "sigma_accel": 0.07212556566418414, + "sigma_grav": 0.08202316828472785, + "across_accel": 0.05688148864615898, + "across_grav": 0.061679953161438233, + "z_0p2": 0.7565608535056446 + }, + { + "date": "2026-07-11", + "sep": 0.1799105156838134, + "sigma_accel": 0.07582887874148143, + "sigma_grav": 0.08602805955551443, + "across_accel": 0.0611073430424407, + "across_grav": 0.06755725260047908, + "z_0p2": 0.780371604180442 + }, + { + "date": "2026-07-21", + "sep": 0.18483004690812763, + "sigma_accel": 0.07852589152362903, + "sigma_grav": 0.08897306833449112, + "across_accel": 0.06461127399203624, + "across_grav": 0.07306409348574817, + "z_0p2": 0.794774828114395 + }, + { + "date": "2026-07-31", + "sep": 0.18641811723314855, + "sigma_accel": 0.0797112080962513, + "sigma_grav": 0.09045811648274689, + "across_accel": 0.06682334185353216, + "across_grav": 0.07731841893052253, + "z_0p2": 0.7982598695813695 + }, + { + "date": "2026-08-10", + "sep": 0.1844599171662518, + "sigma_accel": 0.07909136355801206, + "sigma_grav": 0.09028036823942426, + "across_accel": 0.06746102047891647, + "across_grav": 0.07952167041260957, + "z_0p2": 0.7908218422254564 + }, + { + "date": "2026-08-20", + "sep": 0.1793342321258638, + "sigma_accel": 0.07670210578721874, + "sigma_grav": 0.08851072118054622, + "across_accel": 0.06658729623901827, + "across_grav": 0.07931390264414007, + "z_0p2": 0.7737592680701051 + }, + { + "date": "2030-07-30", + "sep": 6.716293859870045, + "sigma_accel": 0.7225593170627942, + "sigma_grav": 0.4932549105871046, + "across_accel": 0.03914553114990392, + "across_grav": 0.039295950137293735, + "z_0p2": 7.483864802399451 + }, + { + "date": "2030-08-09", + "sep": 6.210935777834, + "sigma_accel": 0.6652112177643689, + "sigma_grav": 0.4546498593607483, + "across_accel": 0.04461452710252215, + "across_grav": 0.04672587309727244, + "z_0p2": 7.4813587163737605 + }, + { + "date": "2030-08-19", + "sep": 5.494518687271837, + "sigma_accel": 0.5852090442942125, + "sigma_grav": 0.4007526814046864, + "across_accel": 0.04785724777400451, + "across_grav": 0.05311156932219877, + "z_0p2": 7.4559126963034394 + }, + { + "date": "2030-08-29", + "sep": 4.721029504077229, + "sigma_accel": 0.4997191871372255, + "sigma_grav": 0.343141631862928, + "across_accel": 0.04901405198510117, + "across_grav": 0.05749493624321723, + "z_0p2": 7.395904966849559 + }, + { + "date": "2030-09-08", + "sep": 3.9958961509668947, + "sigma_accel": 0.4202297110281483, + "sigma_grav": 0.2895717521176073, + "across_accel": 0.04866117393420657, + "across_grav": 0.05987344099286209, + "z_0p2": 7.290072375299661 + }, + { + "date": "2030-09-18", + "sep": 3.3655768220678173, + "sigma_accel": 0.3516227544087983, + "sigma_grav": 0.24334111008517847, + "across_accel": 0.04739982460792244, + "across_grav": 0.060696503320594224, + "z_0p2": 7.129348098442407 + }, + { + "date": "2030-09-28", + "sep": 2.83826303280383, + "sigma_accel": 0.2945875148532673, + "sigma_grav": 0.2049212828320609, + "across_accel": 0.04568256217765426, + "across_grav": 0.060475166357477135, + "z_0p2": 6.908745254928787 + }, + { + "date": "2030-10-08", + "sep": 2.4050694509356045, + "sigma_accel": 0.247995678293263, + "sigma_grav": 0.17355869790723363, + "across_accel": 0.04381144681990129, + "across_grav": 0.059637719724165275, + "z_0p2": 6.6291720546937905 + }, + { + "date": "2030-10-18", + "sep": 2.0513600913231924, + "sigma_accel": 0.21014838827203644, + "sigma_grav": 0.1481129790780685, + "across_accel": 0.04196256703007709, + "across_grav": 0.05848639165810172, + "z_0p2": 6.297738452204746 + } + ], + "night": [ + { + "date": "2026-06-11", + "sep": 0.13182712852935075, + "sigma_accel": 0.10413408590379065, + "sigma_grav": 0.113224699147637, + "across_accel": 0.0880768812864335, + "across_grav": 0.08922129505915322, + "z_0p2": 0.5224668223018192 + }, + { + "date": "2026-06-21", + "sep": 0.14034007558069805, + "sigma_accel": 0.11131838438939722, + "sigma_grav": 0.12080337028749605, + "across_accel": 0.09608356472984063, + "across_grav": 0.09725764643462624, + "z_0p2": 0.5422407560329796 + }, + { + "date": "2026-07-01", + "sep": 0.14833936321823096, + "sigma_accel": 0.11832713511268723, + "sigma_grav": 0.12795060231429983, + "across_accel": 0.10502087627231477, + "across_grav": 0.10614815932799332, + "z_0p2": 0.5591835714339256 + }, + { + "date": "2026-07-11", + "sep": 0.1549895435440408, + "sigma_accel": 0.1246083193116936, + "sigma_grav": 0.13414777892601562, + "across_accel": 0.11424158838302828, + "across_grav": 0.1151881591300794, + "z_0p2": 0.5715986619300192 + }, + { + "date": "2026-07-21", + "sep": 0.15934739657608848, + "sigma_accel": 0.12941994014936192, + "sigma_grav": 0.1387362492677418, + "across_accel": 0.12263555322496843, + "across_grav": 0.12323518345784923, + "z_0p2": 0.5780241488588609 + }, + { + "date": "2026-07-31", + "sep": 0.1606350170036612, + "sigma_accel": 0.13198452106009628, + "sigma_grav": 0.14106638132024177, + "across_accel": 0.12860968793381858, + "across_grav": 0.12890363680196035, + "z_0p2": 0.577690623153846 + }, + { + "date": "2026-08-10", + "sep": 0.1585764827354402, + "sigma_accel": 0.13180200741834114, + "sigma_grav": 0.1407661165779465, + "across_accel": 0.1305865085158554, + "across_grav": 0.1311542184169256, + "z_0p2": 0.5707777948868432 + }, + { + "date": "2026-08-20", + "sep": 0.15349651928399805, + "sigma_accel": 0.1288497705465631, + "sigma_grav": 0.13789555065759992, + "across_accel": 0.12841955456881826, + "across_grav": 0.1297591361637167, + "z_0p2": 0.5581970392476224 + }, + { + "date": "2030-07-30", + "sep": 6.5520810713038715, + "sigma_accel": 1.178248141571653, + "sigma_grav": 0.7082062304908462, + "across_accel": 0.06943553225002748, + "across_grav": 0.06965950627685553, + "z_0p2": 4.716505299255798 + }, + { + "date": "2030-08-09", + "sep": 6.058459206170292, + "sigma_accel": 1.0850474415856086, + "sigma_grav": 0.653600219214449, + "across_accel": 0.08019032658186899, + "across_grav": 0.08261198565900998, + "z_0p2": 4.724354194691718 + }, + { + "date": "2030-08-19", + "sep": 5.358306862123876, + "sigma_accel": 0.9543715040684811, + "sigma_grav": 0.576963010791141, + "across_accel": 0.08761138957274696, + "across_grav": 0.09347901512206319, + "z_0p2": 4.729267745117203 + }, + { + "date": "2030-08-29", + "sep": 4.602533039877579, + "sigma_accel": 0.8146253677360846, + "sigma_grav": 0.49489868657932456, + "across_accel": 0.09140766158736567, + "across_grav": 0.10076764108886206, + "z_0p2": 4.725734005415677 + }, + { + "date": "2030-09-08", + "sep": 3.8942979607574633, + "sigma_accel": 0.6847548868862215, + "sigma_grav": 0.41853885757685194, + "across_accel": 0.09228934992821627, + "across_grav": 0.10457444031606958, + "z_0p2": 4.708480756302583 + }, + { + "date": "2030-09-18", + "sep": 3.2789486205313527, + "sigma_accel": 0.5727691601126516, + "sigma_grav": 0.3526271931604642, + "across_accel": 0.09122169581873249, + "across_grav": 0.10572107255887439, + "z_0p2": 4.672733169156429 + }, + { + "date": "2030-09-28", + "sep": 2.7643842069128497, + "sigma_accel": 0.4797720525662442, + "sigma_grav": 0.29785863341869234, + "across_accel": 0.08902156196749095, + "across_grav": 0.10510472147522186, + "z_0p2": 4.614355774034054 + }, + { + "date": "2030-10-08", + "sep": 2.3418286481199435, + "sigma_accel": 0.4038859774530608, + "sigma_grav": 0.25317229415708736, + "across_accel": 0.08628222885502557, + "across_grav": 0.10346555151829225, + "z_0p2": 4.530233203842041 + }, + { + "date": "2030-10-18", + "sep": 1.9969172282938121, + "sigma_accel": 0.3423055528474515, + "sigma_grav": 0.21694861027959353, + "across_accel": 0.08337892965505442, + "across_grav": 0.10132041232281355, + "z_0p2": 4.4186528748833425 + } + ] + } +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/sbdb.json b/papers/dark_comet/data/2016_TA56/sbdb.json new file mode 100644 index 0000000000000000000000000000000000000000..836cb3404e402fe709dfb210d567dd5e824e80ce --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/sbdb.json @@ -0,0 +1,286 @@ +{ + "object": { + "kind": "an", + "spkid": "20883607", + "orbit_id": "23", + "prefix": null, + "des": "883607", + "orbit_class": { + "code": "APO", + "name": "Apollo" + }, + "pha": false, + "neo": true, + "fullname": "883607 (2016 TA56)" + }, + "phys_par": [ + { + "notes": null, + "title": "absolute magnitude", + "ref": "MPO987240", + "desc": "absolute magnitude (magnitude at 1 au from Sun and observer)", + "name": "H", + "sigma": null, + "units": null, + "value": "18.13" + } + ], + "orbit": { + "not_valid_before": null, + "producer": "Davide Farnocchia", + "first_obs": "2007-09-14", + "source": "JPL", + "elements": [ + { + "label": "e", + "title": "eccentricity", + "name": "e", + "sigma": "9.238E-8", + "units": null, + "value": ".7815565756214315" + }, + { + "name": "a", + "sigma": "2.192E-7", + "units": "au", + "value": "2.693698737545613", + "label": "a", + "title": "semi-major axis" + }, + { + "value": ".5884207764736904", + "name": "q", + "sigma": "2.2764E-7", + "units": "au", + "title": "perihelion distance", + "label": "q" + }, + { + "label": "i", + "title": "inclination; angle with respect to x-y ecliptic plane", + "sigma": "1.7717E-5", + "units": "deg", + "name": "i", + "value": "32.32754328068912" + }, + { + "value": "173.87593814558", + "name": "om", + "sigma": "3.0013E-5", + "units": "deg", + "title": "longitude of the ascending node", + "label": "node" + }, + { + "label": "peri", + "title": "argument of perihelion", + "name": "w", + "units": "deg", + "sigma": "2.9016E-5", + "value": "359.7022642910391" + }, + { + "sigma": "3.8277E-5", + "units": "deg", + "name": "ma", + "value": "32.68239786852716", + "label": "M", + "title": "mean anomaly" + }, + { + "title": "time of perihelion passage", + "label": "tp", + "value": "2461053.900201656160", + "name": "tp", + "sigma": ".00015583", + "units": "TDB" + }, + { + "title": "sidereal orbital period", + "label": "period", + "value": "1614.811973591607", + "name": "per", + "sigma": ".00019711", + "units": "d" + }, + { + "value": ".2229361720667087", + "units": "deg/d", + "sigma": "2.7212E-8", + "name": "n", + "title": "mean motion", + "label": "n" + }, + { + "title": "aphelion distance", + "label": "Q", + "value": "4.798976698617535", + "units": "au", + "sigma": "3.9052E-7", + "name": "ad" + } + ], + "pe_used": "DE441", + "epoch": "2461200.5", + "moid": ".405159", + "moid_jup": ".184583", + "last_obs": "2026-06-10", + "model_pars": [ + { + "value": "-3.185843703887927E-12", + "n": 1, + "kind": "EST", + "units": "au/d^2", + "sigma": "3.583E-13", + "name": "A2", + "desc": "non-gravitational transverse acceleration parameter", + "title": "non-grav. transverse accel." + } + ], + "soln_date": "2026-06-17 07:50:46", + "two_body": null, + "t_jup": "2.690", + "data_arc": "6844", + "orbit_id": "23", + "comment": null, + "n_dop_obs_used": null, + "not_valid_after": null, + "condition_code": "0", + "n_obs_used": 94, + "n_del_obs_used": null, + "rms": ".43456", + "equinox": "J2000", + "covariance": { + "data": [ + [ + "7.223053295137666E-15", + "-1.980341734498169E-14", + "-9.088127746831707E-13", + "2.935483749766625E-13", + "4.414787440488117E-13", + "2.906092204819207E-13", + "9.330306763724469E-21" + ], + [ + "-1.980341734498169E-14", + "5.490703228540107E-14", + "1.977120782319064E-12", + "-6.114439746760004E-13", + "-1.691347428623225E-12", + "-7.19799629370127E-13", + "-3.240950049239162E-20" + ], + [ + "-9.088127746831707E-13", + "1.977120782319064E-12", + "2.357531279775001E-9", + "3.289169407799687E-11", + "3.831461593610377E-10", + "1.297609874577145E-10", + "2.931713209724467E-18" + ], + [ + "2.935483749766625E-13", + "-6.114439746760004E-13", + "3.289169407799687E-11", + "9.00565934830162E-10", + "-6.955055971594468E-10", + "3.547855123248691E-10", + "-2.878824130272169E-18" + ], + [ + "4.414787440488117E-13", + "-1.691347428623225E-12", + "3.831461593610377E-10", + "-6.955055971594468E-10", + "8.37341760577407E-10", + "-2.42983531400047E-10", + "6.920370329627274E-18" + ], + [ + "2.906092204819207E-13", + "-7.19799629370127E-13", + "1.297609874577145E-10", + "3.547855123248691E-10", + "-2.42983531400047E-10", + "3.151591066351769E-10", + "-1.348219300668681E-18" + ], + [ + "9.330306763724469E-21", + "-3.240950049239162E-20", + "2.931713209724467E-18", + "-2.878824130272169E-18", + "6.920370329627274E-18", + "-1.348219300668681E-18", + "1.283722703079549E-25" + ] + ], + "labels": [ + "e", + "q", + "tp", + "node", + "peri", + "i", + "A2" + ], + "epoch": "2457517.5", + "elements": [ + { + "sigma": 8.498854802347e-08, + "units": null, + "name": "e", + "value": ".7835525289944338", + "label": "e", + "title": "eccentricity" + }, + { + "value": ".5815177224841316", + "units": "au", + "sigma": 2.34322496328033e-07, + "name": "q", + "title": "perihelion distance", + "label": "q" + }, + { + "sigma": 4.85544156568175e-05, + "units": "TDB", + "name": "tp", + "value": "2457833.521559488156", + "label": "tp", + "title": "time of perihelion passage" + }, + { + "name": "om", + "sigma": 3.00094307648473e-05, + "units": "deg", + "value": "173.8787349768098", + "label": "node", + "title": "longitude of the ascending node" + }, + { + "title": "argument of perihelion", + "label": "peri", + "value": "359.6388166737792", + "name": "w", + "sigma": 2.89368581670057e-05, + "units": "deg" + }, + { + "label": "i", + "title": "inclination", + "sigma": 1.77527211050919e-05, + "units": "deg", + "name": "i", + "value": "32.41822338660582" + } + ] + }, + "sb_used": "SB441-N16" + }, + "signature": { + "source": "NASA/JPL Small-Body Database (SBDB) API", + "version": "1.3" + } +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/thermal.json b/papers/dark_comet/data/2016_TA56/thermal.json new file mode 100644 index 0000000000000000000000000000000000000000..673d7980303f27af21d4b44b808ad67518412e62 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/thermal.json @@ -0,0 +1,271 @@ +{ + "H": 18.13, + "n_epochs": 20, + "n_w2": 16, + "clipped": [ + 2457908.400288 + ], + "D_km": 2.4423643723469524, + "D_err": 0.05922533777423117, + "eta": 1.4, + "pv": 0.016574065454550476, + "D_range": [ + 1.4102470457492262, + 3.719856863542183 + ], + "pv_range": [ + 0.007144922195869788, + 0.049711808697525534 + ], + "chi2": 28.43082001412748, + "scan": [ + { + "eta": 0.9, + "D_km": 1.4102470457492262, + "D_err": 0.03471874033877372, + "pv": 0.049711808697525534, + "chi2": 30.996432340847434 + }, + { + "eta": 1.0, + "D_km": 1.5972076280752303, + "D_err": 0.039191433594511424, + "pv": 0.03875495264458057, + "chi2": 30.242447942173023 + }, + { + "eta": 1.2, + "D_km": 2.000320752753069, + "D_err": 0.04875399041596062, + "pv": 0.0247087446121756, + "chi2": 29.137222545521233 + }, + { + "eta": 1.4, + "D_km": 2.4423643723469524, + "D_err": 0.05922533777423117, + "pv": 0.016574065454550476, + "chi2": 28.43082001412748 + }, + { + "eta": 1.6, + "D_km": 2.923588178427228, + "D_err": 0.07069422809512685, + "pv": 0.011566915624456981, + "chi2": 28.01100560334759 + }, + { + "eta": 1.9, + "D_km": 3.719856863542183, + "D_err": 0.08993640406037035, + "pv": 0.007144922195869788, + "chi2": 27.762523376396246 + } + ], + "r": [ + 1.390747232999, + 1.623484622318 + ], + "alpha": [ + 36.6015, + 46.8302 + ], + "w1": [ + { + "jd": 2457740.20255, + "mag": 15.79, + "model": 17.69455033767815 + }, + { + "jd": 2457740.79212, + "mag": 15.705, + "model": 17.671160067075025 + }, + { + "jd": 2457907.68019, + "mag": 14.7, + "model": 16.516726723863513 + }, + { + "jd": 2457907.8111, + "mag": 15.569, + "model": 16.524293393021484 + }, + { + "jd": 2457907.942, + "mag": 15.97, + "model": 16.53184701595183 + }, + { + "jd": 2457908.0729, + "mag": 15.923, + "model": 16.539382305459988 + }, + { + "jd": 2457908.334837, + "mag": 15.359, + "model": 16.554418995626975 + }, + { + "jd": 2457908.400288, + "mag": 14.133, + "model": 16.558166251601737 + }, + { + "jd": 2457908.46574, + "mag": 12.093, + "model": 16.561903439442588 + }, + { + "jd": 2457908.79313, + "mag": 15.744, + "model": 16.58051377355058 + } + ], + "fluxes": [ + { + "jy": 0.00042519710160803133, + "err": 7.219990819024854e-05, + "r": 1.623484622318, + "delta": 1.12702453772248, + "alpha": 36.6015, + "jd": 2457740.07152, + "model": 0.0004433328889342322 + }, + { + "jy": 0.0004779586166180362, + "err": 8.658306584911199e-05, + "r": 1.618094536323, + "delta": 1.12655017591137, + "alpha": 36.7983, + "jd": 2457740.53006, + "model": 0.000450952503060747 + }, + { + "jy": 0.00040307911416691993, + "err": 9.375226762298357e-05, + "r": 1.616552725791, + "delta": 1.12641414699053, + "alpha": 36.8545, + "jd": 2457740.66109, + "model": 0.00045315838936109507 + }, + { + "jy": 0.0003300580241221116, + "err": 7.457989460110433e-05, + "r": 1.615782206605, + "delta": 1.12634610448557, + "alpha": 36.8826, + "jd": 2457740.72655, + "model": 0.0004542650470231789 + }, + { + "jy": 0.00041057291439490593, + "err": 7.218362012120379e-05, + "r": 1.615010218188, + "delta": 1.12627787819786, + "alpha": 36.9107, + "jd": 2457740.79212, + "model": 0.000455377048621301 + }, + { + "jy": 0.00045309607019015756, + "err": 8.034757324409765e-05, + "r": 1.61346842698, + "delta": 1.1261414864433, + "alpha": 36.9667, + "jd": 2457740.92303, + "model": 0.00045760738116802294 + }, + { + "jy": 0.0005502883206977014, + "err": 8.127104735049538e-05, + "r": 1.611924525444, + "delta": 1.12600469000857, + "alpha": 37.0228, + "jd": 2457741.05406, + "model": 0.0004598524559029791 + }, + { + "jy": 0.0012364891090265726, + "err": 0.00014182771586822488, + "r": 1.390747232999, + "delta": 0.96072326814695, + "alpha": 46.8302, + "jd": 2457907.8111, + "model": 0.0012201990056365656 + }, + { + "jy": 0.0015017246013227733, + "err": 0.00021575304881237025, + "r": 1.392385674292, + "delta": 0.96112019856188, + "alpha": 46.7605, + "jd": 2457907.942, + "model": 0.0012130459177576863 + }, + { + "jy": 0.0013557833478161504, + "err": 0.00016990077373210292, + "r": 1.394023448008, + "delta": 0.96151566307482, + "alpha": 46.6907, + "jd": 2457908.0729, + "model": 0.0012059455372411818 + }, + { + "jy": 0.00107693699333938, + "err": 0.00012603020940476806, + "r": 1.394842084298, + "delta": 0.96171284980122, + "alpha": 46.6559, + "jd": 2457908.13835, + "model": 0.0012024123149554286 + }, + { + "jy": 0.0009208529748786167, + "err": 0.0001212486754689581, + "r": 1.396480605501, + "delta": 0.96210648013096, + "alpha": 46.5862, + "jd": 2457908.26939, + "model": 0.001195376619875634 + }, + { + "jy": 0.0013079474498934476, + "err": 0.00014943775168936143, + "r": 1.397298702181, + "delta": 0.96230257858884, + "alpha": 46.5514, + "jd": 2457908.334837, + "model": 0.0011918810537335281 + }, + { + "jy": 0.0020313758987250243, + "err": 0.00022942984518884666, + "r": 1.398934505672, + "delta": 0.96269372992569, + "alpha": 46.4818, + "jd": 2457908.46574, + "model": 0.0011849361367571637 + }, + { + "jy": 0.0011173527326352184, + "err": 0.00014447769889729565, + "r": 1.401388520676, + "delta": 0.96327811443735, + "alpha": 46.3775, + "jd": 2457908.66222, + "model": 0.0011746414893353094 + }, + { + "jy": 0.001275822613086165, + "err": 0.0001505392634486885, + "r": 1.403022733598, + "delta": 0.96366577431055, + "alpha": 46.308, + "jd": 2457908.79313, + "model": 0.0011678424683581575 + } + ] +} \ No newline at end of file diff --git a/papers/dark_comet/data/2016_TA56/thermal_variants.json b/papers/dark_comet/data/2016_TA56/thermal_variants.json new file mode 100644 index 0000000000000000000000000000000000000000..42bd90d4a3d4f70a624508842ee25ecff958e859 --- /dev/null +++ b/papers/dark_comet/data/2016_TA56/thermal_variants.json @@ -0,0 +1,86 @@ +{ + "reference": { + "D_km": 2.4423643723469524, + "pv": 0.016574065454550476, + "chi2": 28.43082001412748 + }, + "variants": [ + { + "variant": "G 0.05", + "D_km": 2.44035792712529, + "pv": 0.01660133082006141, + "chi2": 28.419260443993753, + "D_range": [ + 1.4055076657978476, + 3.719809484729916 + ], + "change": -0.0008215175607619862 + }, + { + "variant": "G 0.25", + "D_km": 2.4443632093929124, + "pv": 0.016546970208948606, + "chi2": 28.442498432484694, + "D_range": [ + 1.414949040810585, + 3.7199021257658247 + ], + "change": 0.0008184024745003793 + }, + { + "variant": "p_IR/p_V 1.0", + "D_km": 2.445868669793, + "pv": 0.016526606775495698, + "chi2": 28.389598977428403, + "D_range": [ + 1.4122351128659025, + 3.725195671689691 + ], + "change": 0.001434797152187528 + }, + { + "variant": "p_IR/p_V 2.0", + "D_km": 2.440025380189892, + "pv": 0.016605856263064978, + "chi2": 28.459007851587614, + "D_range": [ + 1.408920103141284, + 3.7162933861373086 + ], + "change": -0.0009576753507966052 + }, + { + "variant": "emissivity 0.95", + "D_km": 2.555900871200142, + "pv": 0.01513428645585668, + "chi2": 28.237205728922742, + "D_range": [ + 1.4641095046726895, + 3.915067146011252 + ], + "change": 0.04648630652276031 + }, + { + "variant": "floor 0.05", + "D_km": 2.4605457009621237, + "pv": 0.01633003404852991, + "chi2": 57.270615265287226, + "D_range": [ + 1.425193727149747, + 3.7387128438120953 + ], + "change": 0.007444150766783508 + }, + { + "variant": "floor 0.20", + "D_km": 2.423066294948767, + "pv": 0.016839119104183967, + "chi2": 10.305211046381775, + "D_range": [ + 1.3937753139892426, + 3.7015190492225893 + ], + "change": -0.007901391625542376 + } + ] +} \ No newline at end of file diff --git a/papers/dark_comet/data/sbdb_A2.json b/papers/dark_comet/data/sbdb_A2.json new file mode 100644 index 0000000000000000000000000000000000000000..99e5a1cf2f1ecaf1aeee8fb52c034b77e2549b09 --- /dev/null +++ b/papers/dark_comet/data/sbdb_A2.json @@ -0,0 +1 @@ +{"signature": {"source": "NASA/JPL SBDB (Small-Body DataBase) Query API", "version": "1.0"}, "fields": ["full_name", "pdes", "kind", "class", "H", "diameter", "albedo", "rot_per", "A1", "A1_sigma", "A2", "A2_sigma", "A3", "A3_sigma", "DT", "e", "q", "a", "i", "om", "w", "n_obs_used", "data_arc", "condition_code"], "data": [[" 1221 Amor (1932 EA1)", "1221", "an", "AMO", "17.37", "1.0", null, null, null, null, "-7.234472974487445E-15", "2.121E-15", null, null, null, ".4347308670361279", "1.085156427482211", "1.919716404453958", "11.8701297472913", "171.2356185587788", "26.75303650761265", 734, "34548", "0"], [" 1566 Icarus (1949 MA)", "1566", "an", "APO", "16.53", "1.0", "0.51", "2.2726", null, null, "-3.752585476090296E-15", "2.832E-16", null, null, null, ".8270188506942974", ".1864726778363724", "1.077994212576463", "22.8016402405493", "87.94856455261704", "31.44439445693802", 1796, "28192", "0"], [" 1580 Betulia (1950 KA)", "1580", "an", "AMO", "14.54", "5.8", "0.08", "6.1324", null, null, "-2.942172018383549E-15", "4.921E-16", null, null, null, ".4876366719217214", "1.124513590468122", "2.194758150794741", "52.19064411030264", "62.22083601961318", "159.7072540224905", 2259, "26991", "0"], [" 1620 Geographos (1951 RA)", "1620", "an", "APO", "15.27", "2.56", "0.290", "5.22204", null, null, "-3.666769818138181E-15", "2.383E-16", null, null, null, ".3355177775596695", ".8278143599512814", "1.245803622723132", "13.33675506038655", "337.1348663004627", "277.0290683650101", 10218, "27424", "0"], [" 1627 Ivar (1929 SH)", "1627", "an", "AMO", "12.79", "9.12", "0.15", "4.795", null, null, "1.704721503244914E-15", "3.756E-16", null, null, null, ".3973348248652037", "1.122831708772996", "1.863110322447046", "8.456346737454068", "133.0740277833649", "167.8308291531453", 14572, "35448", "0"], [" 1685 Toro (1948 OA)", "1685", "an", "APO", "14.26", "3.4", "0.31", "10.1995", null, null, "-2.426426693205172E-15", "2.336E-16", null, null, null, ".4359922205677362", ".7714833637235538", "1.367859437151979", "9.381775895529044", "274.2078473261322", "127.2700377793279", 5560, "28569", "0"], [" 1862 Apollo (1932 HA)", "1862", "an", "APO", "16.09", "1.5", "0.25", "3.065", null, null, "-3.656897510338764E-15", "1.995E-16", null, null, null, ".5601800481295997", ".6468498628096396", "1.470715141636512", "6.352178986018433", "35.50294307615321", "286.0977380402823", 3701, "34822", "0"], [" 1865 Cerberus (1971 UA)", "1865", "an", "APO", "16.77", "1.2", "0.22", "6.8039", null, null, "-4.126488539856504E-15", "1.887E-15", null, null, null, ".4668681387892947", ".5757574623597586", "1.079953205295691", "16.10126664145764", "212.8810647138463", "325.2950763600671", 2643, "20062", "0"], [" 2062 Aten (1976 AA)", "2062", "an", "ATE", "17.11", "1.1", "0.26", "42.15", null, null, "-1.060848761330574E-14", "1.147E-15", null, null, null, ".1828582815030813", ".7901488700548153", ".9669667478344453", "18.93555636228816", "108.5278436050604", "148.0681858555706", 1024, "23339", "0"], [" 2063 Bacchus (1977 HB)", "2063", "an", "APO", "17.21", "1.024", "0.203", "14.904", null, null, "-8.146607576849435E-15", "7.874E-16", null, null, null, ".3492309859328742", ".7012041148778181", "1.07750077173387", "9.432222639330311", "33.02243517219349", "55.39240380359246", 1561, "17584", "0"], [" 2100 Ra-Shalom (1978 RA)", "2100", "an", "ATE", "16.24", "2.3", "0.13", "19.797", null, null, "-5.13542482459645E-15", "5.65E-16", null, null, null, ".436499569805015", ".4688538248443376", ".8320380956623273", "15.75910219462338", "170.7613746850092", "356.0814951474854", 4245, "18599", "0"], [" 2101 Adonis (1936 CA)", "2101", "an", "APO", "18.69", "0.6", null, null, null, null, "-3.267855330422292E-14", "5.273E-15", null, null, null, ".7641209908755124", ".4419862378525967", "1.873783680426323", "1.319989940107121", "349.4052156282278", "43.70507826589166", 155, "32656", "0"], [" 2340 Hathor (1976 UA)", "2340", "an", "ATE", "20.41", "0.3", null, "3.35", null, null, "-2.960055031505014E-14", "6.336E-16", null, null, null, ".4499561430699934", ".4640994340749517", ".8437498723561032", "5.860185941757463", "211.2073161458129", "40.20390513814882", 572, "16477", "0"], [" 3103 Eger (1982 BB)", "3103", "an", "APO", "15.30", "1.5", "0.64", "5.7103", null, null, "-4.906706858357678E-15", "7.726E-16", null, null, null, ".3541203011077341", ".9068382508224095", "1.404035848127303", "20.93089854402653", "129.730266484795", "254.0974676803032", 8989, "16332", "0"], [" 3200 Phaethon (1983 TB)", "3200", "an", "APO", "14.38", "6.25", "0.1066", "3.604", null, null, "-6.211322373903533E-15", "3.56E-16", null, null, null, ".8896722843984632", ".1402777870773155", "1.271464620766258", "22.31052728903618", "265.0988060336058", "322.300168494526", 8682, "15692", "0"], [" 3361 Orpheus (1982 HR)", "3361", "an", "APO", "19.50", "0.3", "0.357", "3.5327", null, null, "1.980183299586718E-14", "1.985E-15", null, null, null, ".3227822723951292", ".819081021700381", "1.20947959321331", "2.646502985515577", "188.2569504564323", "302.8557815468492", 3216, "16130", "0"], [" 3908 Nyx (1980 PA)", "3908", "an", "AMO", "17.45", "1.0", "0.23", "4.42601", null, null, "1.105625855085435E-14", "2.334E-15", null, null, null, ".4590009472127612", "1.04298133821056", "1.927880155865519", "2.186308372065981", "261.1885329246588", "126.6703594112456", 1985, "16395", "0"], [" 4034 Vishnu (1986 PA)", "4034", "an", "APO", "18.50", "0.42", "0.52", "44.4", null, null, "-3.752395633871825E-14", "3.879E-15", null, null, null, ".4440100931741494", ".5889987654051491", "1.059369528428575", "11.16925767742132", "157.8636791748433", "296.7083209769903", 1333, "14574", "0"], [" 4179 Toutatis (1989 AC)", "4179", "an", "APO", "15.29", "5.4", "0.405", "176.", "-3.148561365334624E-13", "9.279E-14", "-7.654593431691022E-15", "9.761E-16", null, null, null, ".6246302247178447", ".9545830393451017", "2.543047155641573", ".4480836624628189", "125.3654799655549", "277.8615384113277", 7141, "33698", "0"], [" 4581 Asclepius (1989 FC)", "4581", "an", "APO", "20.74", null, null, "8.008", null, null, "-3.577228513197383E-14", "5.996E-15", null, null, null, ".3563837704716197", ".6573108979793151", "1.021277692858941", "4.926001892399088", "180.2134412024837", "255.4625327200767", 424, "11706", "0"], [" 4660 Nereus (1982 DB)", "4660", "an", "APO", "18.75", "0.33", "0.55", "15.1749", null, null, "1.35583643358465E-14", "6.569E-15", null, null, null, ".3587435768252949", ".9523380015635986", "1.485112611970113", "1.453541710528756", "313.105557499926", "159.5568090407644", 5002, "16336", "0"], [" 4688 (1980 WF)", "4688", "an", "AMO", "19.60", "0.6", "0.18", null, null, null, "-3.775571321861965E-14", "8.015E-15", null, null, null, ".5177956101234057", "1.076824783484926", "2.233129366077539", "6.373928529711114", "241.2184851763873", "213.8484792218767", 332, "14739", "0"], [" 4769 Castalia (1989 PB)", "4769", "an", "APO", "17.38", "1.4", "0.092", "4.095", null, null, "-8.628187166084008E-15", "9.847E-16", null, null, null, ".4831758015789954", ".5494298574051537", "1.06308849137437", "8.885190449241405", "325.4991410102804", "121.4523453593787", 746, "13488", "0"], [" 4947 Ninkasi (1988 TJ1)", "4947", "an", "AMO", "18.07", null, null, "21.1", null, null, "-3.073817195102781E-14", "6.841E-15", null, null, null, ".1684262211609183", "1.139276584871456", "1.370024661506214", "15.6521251950767", "215.4157621457978", "192.9387211989296", 996, "17621", "0"], [" 5381 Sekhmet (1991 JY)", "5381", "an", "ATE", "16.75", "0.935", "0.507", "2.8233", null, null, "5.375968069704913E-15", "1.115E-15", null, null, null, ".2964041668502215", ".6666486504535115", ".947488059258586", "48.96564104092601", "58.52850616417064", "37.43962501668038", 1473, "12875", "0"], [" 5604 (1992 FE)", "5604", "an", "ATE", "17.32", "0.55", "0.48", "5.3375", null, null, "-6.812160657164344E-15", "7.209E-15", null, null, null, ".4065044367890649", ".5519202723005122", ".9299484385603628", "4.697971083283851", "311.9273285124261", "82.76504197776825", 1572, "15082", "0"], [" 6239 Minos (1989 QF)", "6239", "an", "APO", "18.59", null, null, "3.5558", null, null, "1.214398790877543E-14", "1.042E-15", null, null, null, ".4123646091939666", ".6763315877293392", "1.150937466175489", "3.941399682182683", "344.4790088245431", "239.7946514487727", 2120, "15939", "0"], [" 6489 Golevka (1991 JX)", "6489", "an", "APO", "19.22", "0.53", "0.151", "6.026", null, null, "-1.21850835735243E-14", "1.45E-15", null, null, null, ".6190939112625774", ".9425058266735333", "2.474378474226095", "2.260612192245343", "208.5519487506632", "69.78033485126763", 1017, "8968", "0"], [" 7335 (1989 JA)", "7335", "an", "APO", "17.70", "1.8", "0.448", "2.58988", null, null, "-2.110565217102676E-14", "1.168E-14", null, null, null, ".4846564288797887", ".9133631992772367", "1.772338398035787", "15.15630744776688", "61.20660240436186", "232.4334474834381", 2578, "13444", "0"], [" 7341 (1991 VK)", "7341", "an", "APO", "16.96", "0.982", "0.235", "4.2096", null, null, "-5.580369674652098E-15", "1.76E-15", null, null, null, ".506151369628592", ".909432146513229", "1.841520033839668", "5.409871075321786", "294.7229769452683", "173.520365823244", 2864, "12815", "0"], [" 7350 (1993 VA)", "7350", "an", "APO", "17.16", "1.921", "0.069", "3.58264", null, null, "-1.468543506588079E-14", "2.456E-15", null, null, null, ".3911115870278131", ".8256696326002242", "1.356027828760702", "7.263515407420584", "133.0421096387706", "336.7178303997468", 2218, "23008", "0"], [" 7753 (1988 XB)", "7753", "an", "APO", "18.01", null, null, "42.2", null, null, "-1.053865667037453E-14", "3.735E-15", null, null, null, ".4814931823071283", ".7607649065171892", "1.467222571734466", "3.124762482067461", "73.38514071552868", "280.0698819580158", 1335, "13289", "0"], [" 7822 (1991 CS)", "7822", "an", "APO", "17.34", "1.602", "0.075", "2.3896", null, null, "-8.479352770349041E-15", "4.069E-15", null, null, null, ".1645913305886299", ".9379170385357222", "1.122704459359489", "37.12309321232198", "156.8372246037425", "249.4549825114854", 3809, "11845", "0"], [" 8014 (1990 MF)", "8014", "an", "APO", "18.88", "0.7", null, "50.09", null, null, "-2.220868415270429E-14", "4.283E-15", null, null, null, ".4563665089347919", ".9499114307625308", "1.747337951716794", "1.867585576891053", "209.753295510043", "114.8558169018197", 1297, "13005", "0"], [" 10115 (1992 SK)", "10115", "an", "APO", "17.14", "0.938", "0.318", "7.319", null, null, "-8.47900387982285E-15", "1.109E-15", null, null, null, ".324882155112954", ".8428954476991231", "1.248516024398893", "15.31841222155863", "8.869008324971883", "233.7260443518928", 2903, "26641", "0"], [" 10302 (1989 ML)", "10302", "an", "AMO", "19.48", null, null, "19.2406", null, null, "3.937321950839579E-14", "2.95E-15", null, null, null, ".1368708207950084", "1.098566963556793", "1.272772361338378", "4.379082407736592", "104.2712111695817", "183.6695979959225", 1419, "13393", "0"], [" 10563 Izhdubar (1993 WD)", "10563", "an", "APO", "16.94", null, null, null, null, null, "-6.312999427027716E-15", "1.009E-15", null, null, null, ".266196921611605", ".7387941390291678", "1.006801634917823", "63.46447629951305", "56.55626763285888", "132.1901666575179", 659, "11187", "0"], [" 11054 (1991 FA)", "11054", "an", "AMO", "17.07", null, null, "2.57223", null, null, "-1.22012163800303E-14", "2.69E-15", null, null, null, ".4464326413195586", "1.095700155315463", "1.979343865085043", "3.077901585564284", "339.0292357125784", "92.39545161491094", 1792, "32461", "0"], [" 11066 Sigurd (1992 CC1)", "11066", "an", "APO", "15.17", "2.104", "0.190", "8.4958", null, null, "-4.524786895557302E-15", "9.646E-16", null, null, null, ".375345025616139", ".869276148019782", "1.391610062622502", "36.87743145221111", "349.2160290966024", "22.02671872600773", 2680, "18013", "0"], [" 11398 (1998 YP11)", "11398", "an", "AMO", "16.36", "1.316", "0.318", "38.6", null, null, "-1.358796709877202E-14", "2.953E-15", null, null, null, ".3890888482991534", "1.051382268320272", "1.721006836089183", "15.02181724655901", "144.7083193601426", "74.78136274648077", 5443, "15978", "0"], [" 11500 Tomaiyowit (1989 UR)", "11500", "an", "APO", "18.38", "0.738", "0.142", "73", null, null, "-1.733883509482842E-14", "2.599E-15", null, null, null, ".3558264820928857", ".6955983360428674", "1.079830692672418", "10.31047603833365", "234.3822933560772", "289.5304792578415", 1457, "13503", "0"], [" 13651 (1997 BR)", "13651", "an", "APO", "17.86", "0.562", "0.511", "33.644", null, null, "-7.56744511322608E-15", "1.578E-15", null, null, null, ".3055700479680548", ".927479673980464", "1.335598603237952", "17.25133100963922", "116.6318428592888", "133.857631630789", 1174, "16820", "0"], [" 15817 Lucianotesi (1994 QC)", "15817", "an", "AMO", "18.47", null, null, "11", null, null, "-3.006624939165893E-14", "3.486E-15", null, null, null, ".1180821327164264", "1.168016682757716", "1.324405283176046", "13.87314414786011", "162.4587726647979", "94.36962006266607", 2483, "11732", "0"], [" 17511 (1992 QN)", "17511", "an", "APO", "17.32", null, null, "5.9902", null, null, "1.745684001305129E-14", "2.457E-15", null, null, null, ".358680802878137", ".7629575103487151", "1.189668910228705", "9.58014325179381", "355.8825513321106", "202.4377501703898", 2898, "12462", "0"], [" 22099 (2000 EX106)", "22099", "an", "APO", "18.09", "0.524", "0.444", "6.334", null, null, "9.645709491817393E-15", "3.207E-15", null, null, null, ".2764328750759454", ".7992918351356513", "1.10465471357553", "9.848369644079112", "136.4157421727424", "186.6392168269325", 2345, "11016", "0"], [" 22753 (1998 WT)", "22753", "an", "APO", "17.68", null, null, "10.24", null, null, "-1.359693373983141E-14", "4.357E-15", null, null, null, ".5698609189126077", ".5243031064256553", "1.218915298512788", "3.205277689404138", "307.3437100672211", "324.8337263631269", 1466, "25672", "0"], [" 22771 (1999 CU3)", "22771", "an", "APO", "16.96", null, null, "3.782", null, null, "-3.537367490494941E-15", "9.546E-16", null, null, null, ".5239828354040134", ".7503120611449947", "1.576229003804542", "11.40517799839807", "338.8732404028905", "305.893316064415", 2777, "9843", "0"], [" 25143 Itokawa (1998 SF36)", "25143", "an", "APO", "19.26", "0.33", null, "12.132", null, null, "-2.855043652646294E-14", "7.198E-15", null, null, null, ".2801776414987972", ".9530824380945183", "1.324052284342771", "1.620940810523569", "69.07449749929083", "162.8409022415483", 1025, "9588", "0"], [" 29075 (1950 DA)", "29075", "an", "APO", "17.28", "1.3", "0.070", "2.1216", null, null, "-5.235609506233212E-15", "1.04E-15", null, null, null, ".5075684257205274", ".8363717727774796", "1.698452772857349", "12.15583901482289", "356.5443015442993", "224.8228670600174", 1184, "27983", "0"], [" 33342 (1998 WT24)", "33342", "an", "ATE", "18.02", "0.432", "0.654", "3.697", null, null, "-2.245308874799028E-14", "3.417E-16", null, null, null, ".4176323341477639", ".418546543271774", ".7186981142905206", "7.368421100520266", "81.65755294657905", "167.5121134476977", 1983, "9571", "0"], [" 35107 (1991 VH)", "35107", "an", "APO", "16.86", "0.929", "0.408", "2.6236", null, null, "2.620774536001929E-15", "9.373E-16", null, null, null, ".1437417409888352", ".9732104391622846", "1.136585170327209", "13.91995440611548", "139.3010291409591", "207.0293694382725", 6255, "12673", "0"], [" 37655 Illapa (1994 PM)", "37655", "an", "APO", "17.85", null, null, "2.6556", null, null, "-1.181558919446576E-14", "3.246E-15", null, null, null, ".7523782827017306", ".3659388868240449", "1.477814186965104", "18.03420930483809", "139.5066881446564", "303.9260932191344", 658, "10923", "0"], [" 38086 Beowulf (1999 JB)", "38086", "an", "APO", "17.36", "0.643", "0.469", "2.4104", null, null, "-2.197873973317458E-14", "7.426E-15", null, null, null, ".5662761080094962", ".6159227279699074", "1.420080238474372", "23.67485773718949", "165.3130719872619", "178.9599260132926", 1293, "12507", "0"], [" 52387 Huitzilopochtli (1993 OM7)", "52387", "an", "AMO", "17.75", "0.890", "0.171", "26", null, null, "1.431755892805394E-14", "6.848E-16", null, null, null, ".1896808163169712", "1.038882469796423", "1.282065747320134", "24.15232096411907", "297.5643861821763", "195.5493140384009", 1761, "11930", "0"], [" 53789 (2000 ED104)", "53789", "an", "APO", "17.35", "0.843", "0.222", "43", null, null, "-1.774396678662555E-14", "5.763E-15", null, null, null, ".2691823290040714", "1.00166868984058", "1.370613669584024", "40.78349692175721", "190.0126939056311", "218.3539479243554", 1354, "26105", "0"], [" 54071 (2000 GQ146)", "54071", "an", "AMO", "17.42", null, null, "51", null, null, "8.865540442740262E-15", "2.859E-15", null, null, null, ".197391713739952", "1.066922710696567", "1.329319331685644", "23.44272922014398", "36.32296411569575", "128.3424673343369", 2058, "13828", "0"], [" 54509 YORP (2000 PH5)", "54509", "an", "APO", "22.66", null, null, "0.2029", null, null, "-8.720499998186807E-14", "3.077E-14", null, null, null, ".2299839852065449", ".7745530103544149", "1.0058920794812", "1.599355324389884", "278.1836108209721", "278.9866340945716", 550, "1826", "0"], [" 65679 (1989 UQ)", "65679", "an", "ATE", "19.62", "0.918", "0.033", "7.746", null, null, "-3.960380273723158E-14", "8.412E-15", null, null, null, ".2645383350767826", ".6727821914705462", ".9147753357624494", "1.30319645920924", "178.0496581779361", "15.0051219966126", 1164, "25910", "0"], [" 65717 (1993 BX3)", "65717", "an", "APO", "20.87", null, null, "20.33", null, null, "8.169598332941075E-14", "5.567E-15", null, null, null, ".2808936726236798", "1.003195336326293", "1.395058419227764", "2.809326978775386", "174.737925604987", "290.980556848776", 5611, "12271", "0"], [" 66391 Moshup (1999 KW4)", "66391", "an", "ATE", "16.64", "1.317", null, "2.7645", null, null, "-6.111334114444808E-15", "1.111E-16", null, null, null, ".6883840168509753", ".2001787815786712", ".6423893266185235", "38.87861960632899", "244.8955891771853", "192.6539401611728", 3871, "10188", "0"], [" 66400 (1999 LT7)", "66400", "an", "ATE", "19.27", "0.411", "0.182", null, null, null, "-2.284965995883879E-14", "2.693E-15", null, null, null, ".5725100143583141", ".3656564433074393", ".855356746564645", "9.063485260470253", "79.79187570808163", "341.4144907751639", 835, "13942", "0"], [" 68950 (2002 QF15)", "68950", "an", "APO", "16.39", "1.650", "0.178", "45.24", null, null, "-6.484930870882051E-15", "2.356E-15", null, null, null, ".3442881057690048", ".6930574217468533", "1.056954171251775", "25.15147283752495", "236.2000565723965", "255.5812037934231", 2954, "25963", "0"], [" 69230 Hermes (1937 UB)", "69230", "an", "APO", "17.68", null, null, "13.894", null, null, "-1.245203671984868E-14", "1.713E-15", null, null, null, ".6239316611845052", ".6224279927934584", "1.655092781152288", "6.067204709668276", "34.0340326841086", "92.93110407558876", 2716, "32466", "0"], [" 85236 (1993 KH)", "85236", "an", "APO", "18.75", null, null, "5.057", null, null, "-1.779783187446943E-14", "3.718E-15", null, null, null, ".3111169951456499", ".8499286753162169", "1.233777970028331", "12.80616969785869", "54.35635462096898", "293.8224373271698", 1178, "11938", "0"], [" 85770 (1998 UP1)", "85770", "an", "ATE", "20.72", null, null, null, null, null, "-4.556229204935677E-14", "9.811E-15", null, null, null, ".3451936138336726", ".6532846559850037", ".9976760608731493", "33.17703972157087", "18.31454857354581", "234.2372625825293", 468, "12791", "0"], [" 85774 (1998 UT18)", "85774", "an", "APO", "19.09", "0.939", "0.042", "55.", null, null, "-6.731289495382915E-15", "1.306E-15", null, null, null, ".3288710083978487", ".941518442836348", "1.402887454748021", "13.58665222904914", "64.61660845994622", "50.16918921993694", 903, "13589", "0"], [" 85953 (1999 FK21)", "85953", "an", "ATE", "18.09", "0.59", "0.32", "28.08", null, null, "-1.277106341023058E-14", "6.51E-16", null, null, null, ".703060429497521", ".2194085432197601", ".7388996449630427", "12.59613380715973", "180.4294888581157", "172.4289209415697", 2132, "20138", "0"], [" 85989 (1999 JD6)", "85989", "an", "ATE", "17.07", "1.462", "0.056", "7.6638", null, null, "-6.247491411828325E-15", "1.919E-15", null, null, null, ".6328223978541245", ".3242415787279528", ".8830646990257738", "17.06759913269018", "130.1422777346038", "309.2644815743415", 3852, "12805", "0"], [" 85990 (1999 JV6)", "85990", "an", "APO", "20.27", "0.451", "0.095", "6.538", null, null, "-3.563530472085752E-14", "2.664E-15", null, null, null, ".3115668280302594", ".6946842182109111", "1.009080106095535", "5.360648094219497", "124.2002593096167", "235.7094077421562", 1203, "9026", "0"], [" 86666 (2000 FL10)", "86666", "an", "APO", "16.88", "1.165", "0.228", "206", null, null, "-2.075862413145538E-14", "4.171E-15", null, null, null, ".4269914942943743", ".8383873258315546", "1.463132427326067", "29.01203481143463", "186.8951299834533", "258.8999093008417", 2114, "9223", "0"], [" 86667 (2000 FO10)", "86667", "an", "ATE", "17.54", "0.745", "0.349", "53.756", null, null, "1.254793368800552E-14", "2.005E-15", null, null, null, ".5945635502394542", ".3484419941289546", ".8594244408334459", "14.28769039143156", "208.3004708779644", "172.4909837456241", 2444, "13186", "0"], [" 87024 (2000 JS66)", "87024", "an", "APO", "18.72", null, null, "28.2", null, null, "2.356619726633656E-14", "2.316E-15", null, null, null, ".1898110428216893", ".9694173973133718", "1.196532473967079", "14.43336894461765", "230.4901928525669", "84.95878520785587", 3887, "17201", "0"], [" 89136 (2001 US16)", "89136", "an", "APO", "20.27", null, null, "14.39", null, null, "3.362213875621835E-14", "6.168E-15", null, null, null, ".2527708093178865", "1.01316720108004", "1.355898851000673", "1.9060443130402", "175.8853890925361", "67.22373886441589", 1355, "8874", "0"], [" 90403 (2003 YE45)", "90403", "an", "APO", "17.77", "0.572", "0.493", "505.", null, null, "-1.305499539986132E-14", "2.316E-15", null, null, null, ".2800085956003397", ".8887742623317952", "1.234423434642069", "19.00837087331439", "286.2231810714787", "306.8562720205377", 2228, "13535", "0"], [" 90416 (2003 YK118)", "90416", "an", "APO", "18.83", "0.968", "0.062", "43.58", null, null, "-3.27525003093449E-14", "5.561E-15", null, null, null, ".4922062760925185", ".8608333538642627", "1.695242208273342", "7.826236825922405", "326.7276145485773", "233.2761578848174", 932, "12084", "0"], [" 98943 Torifune (2001 CC21)", "98943", "an", "APO", "18.71", null, null, "5.0159", null, null, "1.308908312207101E-14", "5.669E-15", null, null, null, ".2191666914570141", ".8059611449102079", "1.03218079466168", "4.808321173612089", "75.35576942440626", "179.4132967801467", 2398, "15801", "0"], [" 99907 (1989 VA)", "99907", "an", "ATE", "17.96", "1.4", null, "2.5246", null, null, "1.542961998372385E-14", "9.239E-16", null, null, null, ".5946641738631883", ".2952403536305323", ".7283845507672464", "28.79884462546406", "225.5776274172069", "2.871400254986763", 1591, "13198", "0"], [" 99942 Apophis (2004 MN4)", "99942", "an", "ATE", "19.09", "0.34", "0.35", "30.56", "5.E-13", "4.892E-13", "-2.901766637153165E-14", "1.859E-16", null, null, null, ".1911492279663492", ".7460509677535309", ".9223592206975018", "3.340996879880978", "203.8936514240762", "126.6795706895841", 7370, "6599", "0"], ["136564 (1977 VA)", "136564", "an", "AMO", "19.28", "0.4", null, null, null, null, "-4.404952732045901E-14", "9.526E-15", null, null, null, ".3942424046408806", "1.130073986730148", "1.865554795165534", "2.985002357207399", "224.4442107473292", "172.6927258563331", 302, "17420", "0"], ["136582 (1992 BA)", "136582", "an", "AMO", "19.86", null, null, null, null, null, "-4.353869156666361E-14", "7.635E-15", null, null, null, ".06786143891611222", "1.250667958439752", "1.341718936061908", "10.49900181401886", "140.154209996997", "107.3670321299154", 517, "12427", "0"], ["136818 Selqet (1997 MW1)", "136818", "an", "ATE", "18.96", null, null, null, null, null, "2.076936228332497E-14", "2.502E-15", null, null, null, ".3463451201205434", ".6127753209016389", ".9374600263286392", "12.78209888373398", "259.9069704366783", "203.8356147077676", 781, "10627", "0"], ["137052 Tjelvar (1998 VO33)", "137052", "an", "APO", "17.04", null, null, "9.007", null, null, "8.726862736616755E-15", "1.709E-15", null, null, null, ".8096193563528543", ".2375800467415821", "1.247921228703883", "14.89058016939679", "64.2262109717332", "209.9828242055021", 1615, "10195", "0"], ["137126 (1999 CF9)", "137126", "an", "APO", "18.08", null, null, null, null, null, "-1.763935687003493E-14", "3.629E-15", null, null, null, ".6007455018665537", ".7067132650584621", "1.770082161534599", "5.543840910313252", "156.840494262276", "90.61413727168207", 1228, "9840", "0"], ["137799 (1999 YB)", "137799", "an", "AMO", "18.76", null, null, "9.39", null, null, "1.987303727834303E-14", "6.367E-15", null, null, null, ".07454787721353257", "1.222570533002026", "1.321052167799839", "6.78921145186432", "30.94448471092153", "192.8941545595729", 1181, "12902", "0"], ["137924 (2000 BD19)", "137924", "an", "ATE", "17.49", "0.970", "0.247", "10.57", null, null, "-3.814736528737917E-15", "4.424E-16", null, null, null, ".8949704258031533", ".09205605519599132", ".8764774674175071", "25.75725648159756", "333.6551697703725", "324.3875599574403", 1296, "10591", "0"], ["138175 (2000 EE104)", "138175", "an", "APO", "20.49", null, null, "13.324", null, null, "-8.594783508025985E-14", "4.302E-15", null, null, null, ".2932729985491432", ".7092377829755241", "1.003552689397055", "5.232931903639535", "25.443782299759", "280.8424001635115", 1621, "9442", "0"], ["138852 (2000 WN10)", "138852", "an", "APO", "20.29", null, null, "4.4622", null, null, "3.186435974570554E-14", "4.369E-15", null, null, null, ".2980046859811716", ".7032510647280708", "1.001788830614913", "21.51563547862504", "60.84415204760476", "225.435654114335", 1479, "9187", "0"], ["138911 (2001 AE2)", "138911", "an", "AMO", "19.45", null, null, "15.88", null, null, "-2.203269441897988E-14", "6.352E-15", null, null, null, ".08158965137730705", "1.239527996660239", "1.349645067174074", "1.662391608069646", "171.4191837078502", "43.23190841400014", 1023, "15162", "0"], ["138947 (2001 BA40)", "138947", "an", "APO", "18.83", "0.447", "0.292", null, null, null, "-3.647272851198432E-14", "8.88E-15", null, null, null, ".2537679229831704", ".8349297156382635", "1.118860661921711", "12.84599622103245", "270.8608521302474", ".1007214584618262", 538, "9363", "0"], ["139359 (2001 ME1)", "139359", "an", "APO", "16.52", null, null, null, null, null, "-2.375397559329012E-13", "1.944E-14", null, null, null, ".8696747013569716", ".3433615792712096", "2.634650239411342", "5.95480413405054", "84.58332817941987", "302.3804834506502", 740, "8772", "0"], ["141495 (2002 EZ11)", "141495", "an", "APO", "18.46", null, null, "2.327", null, null, "-1.333206816070673E-14", "3.443E-15", null, null, null, ".8020542313665646", ".2205394689217314", "1.114140860116773", "2.354166292629601", "51.88445740019698", "317.7638987386347", 1285, "8852", "0"], ["141531 (2002 GB)", "141531", "an", "ATE", "19.15", "0.303", "0.482", "73.", null, null, "2.412878480768608E-14", "3.831E-15", null, null, null, ".5289305859263954", ".4673526849630467", ".9921100181851816", "22.54793545439778", "40.80367513956031", "8.322785505149406", 900, "8435", "0"], ["142040 (2002 QE15)", "142040", "an", "AMO", "16.25", "1.232", "0.353", "3.853", null, null, "-1.151923777393242E-14", "3.637E-15", null, null, null, ".3443217964252531", "1.093042379102712", "1.667040894669767", "28.24925925596033", "226.3749918277344", "160.5445779798935", 2565, "11697", "0"], ["142561 (2002 TX68)", "142561", "an", "AMO", "18.20", null, null, null, null, null, "-2.636512393071454E-14", "7.01E-15", null, null, null, ".2935672174976", "1.182633756978129", "1.674092406624846", "16.65724092335852", "150.0959905093872", "122.5571911803772", 1454, "8772", "0"], ["152563 (1992 BF)", "152563", "an", "ATE", "19.71", "0.272", "0.287", "32.", null, null, "-2.694463198144286E-14", "6.926E-16", null, null, null, ".2716735401545003", ".6612199974085626", ".9078621111044457", "7.249843261890487", "315.1911590660847", "336.565138356917", 638, "25988", "0"], ["152664 (1998 FW4)", "152664", "an", "APO", "19.70", null, null, "17.38", null, null, "2.180902910647029E-14", "3.971E-15", null, null, null, ".7139285098943162", ".7208449011560304", "2.519806852789586", "3.413340519324435", "353.5329657416466", "85.60648581620121", 997, "11529", "0"], ["152667 (1998 FR11)", "152667", "an", "APO", "16.41", null, null, null, null, null, "2.599982121116447E-13", "5.801E-14", null, null, null, ".7077326296692875", ".8201941831341449", "2.806314581768268", "6.682095853336361", "129.8478478710275", "158.6215162205811", 393, "25630", "0"], ["152671 (1998 HL3)", "152671", "an", "APO", "20.24", "0.298", "0.200", null, null, null, "-4.946979085995592E-14", "7.048E-15", null, null, null, ".3659803595423455", ".715809158408108", "1.129001552525116", "2.680074269251455", "163.6290343101555", "188.150081147372", 538, "9399", "0"], ["152742 (1998 XE12)", "152742", "an", "ATE", "19.10", "0.413", "0.264", null, null, null, "1.772353344333314E-14", "4.65E-15", null, null, null, ".7391650374501798", ".2290444277320484", ".8781201166170365", "13.43332955610508", "280.0123582164832", "353.1741561684448", 565, "10285", "0"], ["152754 (1999 GS6)", "152754", "an", "APO", "19.22", "0.414", "0.216", "8.021", null, null, "-2.427829601300723E-14", "4.424E-15", null, null, null, ".4973954942260526", ".5985466742883413", "1.190889988872374", "2.019256503058494", "314.3592722063981", "135.0022865546547", 553, "9532", "0"], ["152828 (1999 VT25)", "152828", "an", "APO", "21.26", null, null, null, null, null, "7.639894414333639E-14", "9.062E-15", null, null, null, ".5230941864194426", ".554212661138507", "1.162100870562969", "5.150232911577346", "221.8821180307797", "319.2802463453432", 171, "9441", "0"], ["152978 (2000 GJ147)", "152978", "an", "APO", "19.57", "0.531", "0.109", "10.009", null, null, "1.545013974383806E-14", "4.147E-15", null, null, null, ".2367502464921518", ".8871504979553808", "1.162333160119728", "25.00589567523207", "57.83590218526967", "240.8096765730813", 864, "9400", "0"], ["153201 (2000 WO107)", "153201", "an", "ATE", "19.30", "0.510", "0.129", "5.022", null, null, "-1.564279908740417E-14", "3.248E-15", null, null, null, ".7807988998084086", ".1997275678653239", ".9111613385642372", "7.765850895402412", "69.18223127080445", "213.7710546745708", 1137, "8479", "0"], ["154244 (2002 KL6)", "154244", "an", "AMO", "17.57", null, null, "4.6063", null, null, "-5.523597566177241E-15", "6.538E-15", null, null, null, ".5501430826950169", "1.036746175916814", "2.304613169288994", "3.249888547615992", "212.8518820388429", "98.46427671224947", 3943, "11159", "0"], ["154590 (2003 MA3)", "154590", "an", "APO", "21.70", "0.086", "0.530", null, null, null, "-7.337823162303147E-14", "1.026E-14", null, null, null, ".4021483663128078", ".660712749352005", "1.105145009435072", "1.415997763861056", "152.6616170869523", "228.8639332929382", 123, "9980", "0"], ["159402 (1999 AP10)", "159402", "an", "AMO", "16.61", null, null, "7.9219", null, null, "-2.292655088507388E-14", "9.427E-15", null, null, null, ".5717120863686029", "1.019234394022985", "2.379787898708209", "7.571410797265652", "356.8129303330749", "47.65158853017505", 2112, "9979", "0"], ["161989 Cacus (1978 CA)", "161989", "an", "APO", "17.31", "1.9", "0.09", "3.7538", null, null, "-9.23649289660797E-15", "1.516E-15", null, null, null, ".2138661445274499", ".8825756330519963", "1.122678570459829", "26.06566728817256", "161.2027585311259", "102.1008071401297", 1798, "16425", "0"], ["162004 (1991 VE)", "162004", "an", "ATE", "18.28", null, null, "13.4895", null, null, "2.425297651340892E-14", "3.145E-15", null, null, null, ".6646220635992905", ".2987483132574934", ".8907810587174375", "7.216357907607097", "61.84304070205925", "193.6788962793371", 1890, "25965", "0"], ["162080 (1998 DG16)", "162080", "an", "ATE", "19.91", "0.777", "0.035", null, null, null, "-2.559351978422104E-14", "5.004E-15", null, null, null, ".3582167514327131", ".5754766076979958", ".8966837463936406", "16.20628151337795", "344.3152714788342", "356.8565044190241", 723, "16470", "0"], ["162117 (1998 SD15)", "162117", "an", "ATE", "19.04", null, null, "7.33", null, null, "-1.814998177588976E-14", "1.628E-15", null, null, null, ".3447589939178025", ".611109347668168", ".9326482042418246", "26.79810171693333", "183.9078049734995", "35.87694914349872", 837, "10246", "0"], ["162120 (1998 SH36)", "162120", "an", "APO", "20.64", null, null, null, null, null, "-1.548080591200913E-14", "4.456E-15", null, null, null, ".5709863443970986", ".4666830392734995", "1.087804626213263", "2.13266818950618", "217.8082790354997", "278.8588160436574", 280, "10132", "0"], ["162142 (1998 VR)", "162142", "an", "ATE", "18.78", "0.462", "0.250", "8.44", null, null, "1.728275993564131E-14", "2.519E-15", null, null, null, ".3178149617728093", ".5971402861794716", ".8753347738778811", "21.80792345661528", "46.34649510082951", "170.7395601304651", 773, "9902", "0"], ["162162 (1999 DB7)", "162162", "an", "APO", "19.99", null, null, null, null, null, "2.843220793986682E-14", "9.749E-15", null, null, null, ".1948999858613423", ".9707057025616794", "1.20569579619272", "10.84027724352103", "157.5746724570012", "29.90917271207593", 299, "9047", "0"], ["162173 Ryugu (1999 JU3)", "162173", "an", "APO", "19.55", "0.896", "0.045", "7.63262", null, null, "-2.487268497758912E-14", "5.013E-15", null, null, null, ".1910730046480051", ".9633664739388087", "1.190918932702464", "5.866442486408568", "251.2897123995624", "211.608993811871", 5124, "14345", "0"], ["162181 (1999 LF6)", "162181", "an", "APO", "18.20", "0.729", "0.175", "37.26", null, null, "-1.347159822127376E-14", "3.413E-15", null, null, null, ".2805675203968097", "1.014145992684089", "1.40964721698894", "18.94277392136631", "208.4914565766553", "140.8659472803019", 1914, "16459", "0"], ["162215 (1999 TL12)", "162215", "an", "APO", "19.17", null, null, null, null, null, "4.055572457813274E-14", "6.482E-15", null, null, null, ".4365340049305922", ".609471469374795", "1.081647294970693", "17.33740936110526", "202.3018429958374", "346.7912653865349", 429, "10208", "0"], ["162361 (2000 AF6)", "162361", "an", "ATE", "20.24", null, null, "3.4558", null, null, "3.515929089260693E-14", "5.355E-15", null, null, null, ".4108923543733871", ".5154327957889946", ".8749382215889373", "2.714836229400798", "109.718946597421", "201.5259052423165", 506, "11715", "0"], ["162421 (2000 ET70)", "162421", "an", "ATE", "18.11", null, null, "8.947", null, null, "-1.395253038235552E-14", "2.492E-15", null, null, null, ".1238510400373357", ".8293896100295418", ".9466308218466468", "22.32418716140079", "331.1115732136115", "46.04861298351022", 743, "17851", "0"], ["162783 (2000 YJ11)", "162783", "an", "APO", "20.91", null, null, null, null, null, "-9.002944621154369E-14", "2.426E-14", null, null, null, ".2322675920230955", "1.008572694154361", "1.313703425405876", "7.264031596296319", "64.91002354436367", "339.1497672993793", 139, "8740", "0"], ["162882 (2001 FD58)", "162882", "an", "APO", "18.79", null, null, null, null, null, "-2.265940602135072E-14", "4.015E-15", null, null, null, ".5751512978953113", ".4642338732742706", "1.092703993149723", "6.505100220623752", "341.1149606795128", "46.0788050424778", 956, "9500", "0"], ["163000 (2001 SW169)", "163000", "an", "AMO", "19.26", null, null, "69.97", null, null, "-2.368907077987246E-14", "3.29E-15", null, null, null, ".05152850032545944", "1.184017156937218", "1.248342367001541", "3.553278303139817", "8.393452111044047", "284.8099570655113", 1885, "10388", "0"], ["163023 (2001 XU1)", "163023", "an", "ATE", "19.52", null, null, null, null, null, "5.338878191922806E-14", "7.291E-15", null, null, null, ".5464493857466834", ".361647431434339", ".797369510853208", "27.14799021602589", "69.68081319873058", "208.5408879721218", 383, "8428", "0"], ["163249 (2002 GT)", "163249", "an", "APO", "18.70", null, null, "3.7663", null, null, "2.182492891518297E-14", "6.519E-15", null, null, null, ".3347323652199401", ".8942821265092147", "1.344244150408531", "6.970352861784591", "201.7112043871826", "135.1523316165361", 1636, "8367", "0"], ["163348 (2002 NN4)", "163348", "an", "ATE", "20.05", "0.735", "0.030", "14.5", null, null, "3.305722417827024E-14", "3.985E-15", null, null, null, ".4345768903161076", ".4951936458902201", ".8757930785090566", "5.419501786861168", "259.4071182403415", "222.2094128961415", 790, "8435", "0"], ["163899 (2003 SD220)", "163899", "an", "ATE", "17.56", "0.791", "0.340", "285", null, null, "-1.130172703430233E-14", "1.053E-15", null, null, null, ".2094483846218542", ".6544958463890725", ".8278976775931405", "8.548034550375521", "273.6264246410117", "327.0185839171129", 1935, "9153", "0"], ["164121 (2003 YT1)", "164121", "an", "APO", "16.15", "1.717", "0.198", "2.343", null, null, "-6.419656260250318E-15", "9.968E-17", null, null, null, ".2920960046659441", ".7857075524687869", "1.109906933210648", "44.05782197033246", "38.30847047157867", "91.01206924581963", 2597, "15580", "0"], ["164207 Cardea (2004 GU9)", "164207", "an", "APO", "21.19", "0.163", "0.219", null, null, null, "-5.661461817870703E-14", "7.325E-15", null, null, null, ".1359505998606398", ".8650413952382482", "1.001148076833024", "13.65196847672156", "38.37013954242411", "279.3128558067677", 363, "9082", "0"], ["164222 (2004 RN9)", "164222", "an", "APO", "20.85", null, null, null, null, null, "-8.231510861592853E-14", "2.386E-14", null, null, null, ".2469567856007827", ".9820830851200889", "1.304152359839802", "16.10962168810395", ".9349315751180782", "67.21678252358437", 258, "7902", "0"], ["175706 (1996 FG3)", "175706", "an", "APO", "18.31", "1.196", "0.072", "3.5942", null, null, "-1.225484787199723E-14", "1.541E-15", null, null, null, ".3501936262880359", ".6854732953621132", "1.054888537713788", "1.972616813185401", "299.4691274128914", "24.07594895179171", 3126, "14691", "0"], ["177016 (2003 BM47)", "177016", "an", "APO", "19.95", null, null, null, null, null, "-5.03235438101444E-14", "1.457E-14", null, null, null, ".5821642837478148", ".4847313216607005", "1.160100256647616", "13.81151162222494", "137.5513450035086", "155.388175971422", 156, "8006", "0"], ["185851 (2000 DP107)", "185851", "an", "APO", "18.31", "0.863", "0.137", "2.7754", null, null, "9.642476834401021E-15", "6.212E-16", null, null, null, ".3767096468877332", ".8508263444983428", "1.365056173659553", "8.671695212805274", "358.61640502714", "289.8243079171287", 2094, "9096", "0"], ["192559 (1998 VO)", "192559", "an", "APO", "20.43", null, null, null, null, null, "-3.246127949020991E-14", "7.137E-15", null, null, null, ".2266631883276823", ".8311543385940088", "1.074763707157121", "10.06054705969703", "228.1093180381771", "76.00217870300325", 575, "7308", "0"], ["203471 (2002 AU4)", "203471", "an", "ATE", "19.45", null, null, "13.26", null, null, "-3.775660872804425E-14", "8.988E-15", null, null, null, ".3736146143444075", ".5357860653151757", ".8553616951877109", "17.18508843443605", "99.4108686022432", "205.212980222846", 472, "11377", "0"], ["204131 (2003 YL)", "204131", "an", "APO", "19.94", null, null, "10.27", null, null, "-3.285831456403067E-14", "6.678E-15", null, null, null, ".6325294115860108", ".4213476177534508", "1.146615895361846", "5.654420467240556", "291.915381626479", "29.47123541203096", 376, "8721", "0"], ["216523 (2001 HY7)", "216523", "an", "ATE", "20.70", null, null, "0.042", null, null, "4.099473053014898E-14", "4.372E-15", null, null, null, ".4121055267968569", ".53716911383809", ".9137168970331085", "5.210950668753218", "205.0404732564266", "211.3448321207615", 353, "8111", "0"], ["216985 (2000 QK130)", "216985", "an", "APO", "21.34", null, null, null, null, null, "9.662974520935821E-14", "1.52E-14", null, null, null, ".2618719999287679", ".8713979372072569", "1.180551255504687", "4.719530468472939", "173.7937258768449", "66.41640052442584", 251, "8148", "0"], ["217837 (2001 LC)", "217837", "an", "APO", "19.27", null, null, null, null, null, "2.441272996835526E-14", "6.367E-15", null, null, null, ".6774571394620424", ".3401356037787363", "1.054543892899804", "16.96683213313058", "112.3559762992134", "2.507561257810948", 298, "9146", "0"], ["219071 (1997 US9)", "219071", "an", "APO", "17.20", "0.657", "0.383", "3.319", null, null, "-8.667722504521844E-15", "2.665E-15", null, null, null, ".2820300175662345", ".755892930783601", "1.052819685053245", "20.01753115243153", "212.1793647074565", "357.3900093462549", 3354, "10579", "0"], ["226514 (2003 UX34)", "226514", "an", "APO", "20.16", null, null, null, null, null, "2.163098799108496E-14", "3.209E-15", null, null, null, ".6157487805362398", ".4208774973439787", "1.09531857291522", "2.560677749744702", "4.240038211757208", "218.6266106284112", 484, "10977", "0"], ["230111 (2001 BE10)", "230111", "an", "ATE", "19.27", null, "0.253", "4.194", null, null, "-2.791548133321585E-14", "4.51E-15", null, null, null, ".3692862187232754", ".5191204522111695", ".8230681929295062", "17.50582890811797", "297.7381612682698", "30.59760764649095", 834, "8830", "0"], ["234341 (2001 FZ57)", "234341", "an", "ATE", "18.93", "0.344", "0.493", null, null, null, "-2.457086056836455E-14", "6.563E-15", null, null, null, ".6041957768548032", ".373725564849011", ".9442182346596983", "20.66610991438344", "22.08035968370617", "339.9834257374856", 545, "12369", "0"], ["242191 (2003 NZ6)", "242191", "an", "ATE", "19.02", "0.370", "0.334", "13.531", null, null, "2.886935233606966E-14", "3.646E-15", null, null, null, ".4923233626701068", ".4027922110643199", ".7934030866237826", "18.24707517142475", "124.5773054274846", "311.6286021551646", 647, "7996", "0"], ["247517 (2002 QY6)", "247517", "an", "ATE", "19.59", "0.269", "0.357", null, null, null, "-2.522914135626887E-14", "3.783E-15", null, null, null, ".6990889038541792", ".2458771373740488", ".817108908655523", "12.75420697229403", "164.1616834596122", "355.4174643906168", 666, "8459", "0"], ["251732 (1998 HG49)", "251732", "an", "AMO", "21.76", null, null, null, null, null, "-9.54502481919911E-14", "1.876E-14", null, null, null, ".1124612131949503", "1.065553173448777", "1.200570824949004", "4.194772507342625", "44.79911658925901", "324.2424981517177", 156, "9145", "0"], ["253062 (2002 TC70)", "253062", "an", "AMO", "21.10", null, null, "26.273", null, null, "-6.163294789545638E-14", "6.368E-15", null, null, null, ".1965576996855315", "1.099497308514341", "1.368483222857442", "2.148227788095202", "134.7219339232276", "162.1935944714913", 470, "8774", "0"], ["256004 (2006 UP)", "256004", "an", "AMO", "23.02", null, null, null, null, null, "-1.635469175187514E-13", "4.028E-14", null, null, null, ".3000123228475964", "1.108378949106635", "1.583426373469307", "2.284987487567801", "47.86075484668463", "335.2282392091578", 176, "8059", "0"], ["264308 (1999 NA5)", "264308", "an", "AMO", "20.43", null, null, null, null, null, "4.462021319389212E-14", "1.401E-14", null, null, null, ".2485254117062709", "1.079572345876043", "1.436605259437023", "4.278028044124189", "262.0900245048832", "318.9550969604875", 185, "9648", "0"], ["264357 (2000 AZ93)", "264357", "an", "ATE", "21.17", "0.113", "0.037", null, null, null, "-4.704125768046153E-14", "6.013E-15", null, null, null, ".3600198736933757", ".4779799478195266", ".7468668606601686", "8.588269243360163", "277.297734540903", "8.192805904771873", 160, "8000", "0"], ["265482 (2005 EE)", "265482", "an", "APO", "21.21", null, null, "2.6534", null, null, "9.089589312267186E-14", "9.489E-15", null, null, null, ".3276726154883666", ".7587836418374638", "1.128592497223106", "6.171342232331128", "110.7741441655489", "284.7514474168306", 474, "6907", "0"], ["267337 (2001 VK5)", "267337", "an", "APO", "18.05", "0.439", "0.578", "39.05", null, null, "-3.162132456116307E-14", "8.003E-15", null, null, null, ".5141334169527231", ".6166095199555655", "1.269092260036263", "19.42915901184455", "54.20353127717621", "263.94000984753", 1117, "8540", "0"], ["267759 (2003 MC7)", "267759", "an", "AMO", "18.91", null, null, null, null, null, "-3.107199389457698E-14", "5.718E-15", null, null, null, ".1843865899969435", "1.120353245030755", "1.373632693246861", "21.21268697503042", "137.0018385407725", "101.2670836866201", 613, "26155", "0"], ["267940 (2004 EM20)", "267940", "an", "APO", "20.43", null, null, "2.419", null, null, "-3.277310872762505E-14", "8.758E-15", null, null, null, ".5240769868415455", ".5260498043231068", "1.105325419823653", "14.1391811131565", "343.735501236211", "314.9341481466861", 282, "8032", "0"], ["276033 (2002 AJ129)", "276033", "an", "APO", "18.76", null, null, "3.9333", null, null, "9.916022484972572E-15", "1.444E-15", null, null, null, ".9149225462050926", ".1166146734128876", "1.370688334115001", "15.44223966107453", "138.0012126535561", "211.0452083707522", 725, "8828", "0"], ["276770 (2004 HC)", "276770", "an", "ATE", "19.94", null, null, null, null, null, "-6.035319572153001E-14", "9.648E-15", null, null, null, ".5986586788534011", ".3167254065338942", ".7891671997018298", "28.98360975122416", "202.9747160048715", "159.3739850130312", 220, "7680", "0"], ["277810 (2006 FV35)", "277810", "an", "APO", "21.73", null, null, null, null, null, "4.302635290924454E-14", "9.86E-15", null, null, null, ".3774606417777485", ".62341141920079", "1.001400812602481", "7.105303136318029", "179.4558224575786", "170.7616679374813", 296, "11328", "1"], ["283457 (2001 MQ3)", "283457", "an", "AMO", "19.10", null, null, null, null, null, "-5.560626690528099E-14", "8.363E-15", null, null, null, ".4556034235578259", "1.21632982628741", "2.234271630135074", "5.569541760228647", "313.2870668222355", "25.28876908368509", 502, "25573", "0"], ["294739 (2008 CM)", "294739", "an", "APO", "17.04", "0.740", "0.425", "3.05785", null, null, "-2.447195850874598E-14", "7.117E-15", null, null, null, ".4079779894651361", ".9269996684255496", "1.565819601180114", "36.01519512853759", "279.5394197670341", "130.6863256781655", 1912, "6471", "0"], ["297418 (2000 SP43)", "297418", "an", "ATE", "18.51", "0.407", "0.388", "6.314", null, null, "-2.164534603762011E-14", "2.118E-15", null, null, null, ".4668580174981959", ".4326319173526753", ".8114759886710128", "10.34208851067938", "350.5060887362264", "224.4931167628536", 1260, "9199", "0"], ["302169 (2001 TD45)", "302169", "an", "ATE", "20.00", null, null, null, null, null, "-2.289379425647727E-14", "2.609E-15", null, null, null, ".7776005553854728", ".1771780363712485", ".7966658220677734", "25.36074522025352", "30.22900417035989", "212.4739251900152", 298, "8428", "0"], ["303450 (2005 BY2)", "303450", "an", "APO", "20.51", "0.187", "0.317", null, null, null, "6.249334050537639E-14", "6.931E-15", null, null, null, ".3306475922260459", ".8495950974325114", "1.269279213109855", "7.291508523179973", "74.40037700756361", "130.2972427317927", 301, "7584", "0"], ["306383 (1993 VD)", "306383", "an", "ATE", "21.52", null, null, "0.94345", null, null, "-2.11402749500383E-14", "3.534E-15", null, null, null, ".5514589305275425", ".3928111159660913", ".8757528411569717", "2.06604548795592", "2.139600138316879", "254.2694393313664", 208, "11719", "0"], ["307070 (2002 AV31)", "307070", "an", "APO", "20.65", "0.282", "0.117", null, null, null, "-3.584449396233432E-14", "6.481E-15", null, null, null, ".2490048240570004", ".9830413080451909", "1.308984850416407", "14.97618527276694", "119.251693272306", "267.4982737117616", 612, "8804", "0"], ["310442 (2000 CH59)", "310442", "an", "ATE", "19.82", null, null, "6.0542", null, null, "3.814258620185015E-14", "3.561E-15", null, null, null, ".4230426421073786", ".4973955786057444", ".8621011099026761", "3.264401513542459", "213.4676956002594", "109.8360394428634", 573, "9133", "0"], ["310842 (2003 AK18)", "310842", "an", "ATE", "19.79", null, null, "5.3257", null, null, "-3.440081140785463E-14", "2.569E-15", null, null, null, ".3842517047008462", ".5399742545097193", ".8769399097522136", "7.402401467311176", "301.5337706095472", "23.94383927916905", 886, "8448", "0"], ["311554 (2006 BQ147)", "311554", "an", "ATE", "18.72", "0.382", "0.401", "9.15", null, null, "-2.598604801352834E-14", "5.446E-15", null, null, null, ".4223162263625863", ".4736457193300305", ".8199048353871832", "24.38333004684208", "146.7649948239015", "153.2290963926628", 622, "12481", "0"], ["313276 (2002 AX1)", "313276", "an", "ATE", "19.83", null, null, "131.", null, null, "3.647594564471462E-14", "4.4E-15", null, null, null, ".5418157889351285", ".403148037273536", ".8798819940490196", "33.00040926538254", "294.6857774937536", "25.35776294432851", 341, "8816", "0"], ["322756 (2001 CK32)", "322756", "an", "ATE", "19.23", null, null, "4.166", null, null, "-2.325707883851113E-14", "6.341E-15", null, null, null, ".3826806453227661", ".447030102995763", ".7241472336947755", "8.148153654795587", "109.2571295284124", "233.9728474792086", 1294, "7723", "0"], ["323300 (2003 UD22)", "323300", "an", "APO", "19.63", null, null, null, null, null, "-6.36057910116185E-14", "2.031E-14", null, null, null, ".3183759510867737", ".7965735671287859", "1.168640643473237", "10.07629255502207", "253.7770822447304", "23.57047943776096", 345, "7022", "0"], ["325102 (2008 EY5)", "325102", "an", "ATE", "20.17", "0.361", "0.124", null, null, null, "-5.497022055068002E-14", "1.4E-14", null, null, null, ".6268482047523505", ".2336575287251489", ".6261728650402913", "5.109750180923315", "245.4234561430248", "106.700224904975", 175, "4347", "1"], ["326290 Akhenaten (1998 HE3)", "326290", "an", "ATE", "21.81", null, null, null, null, null, "-2.782777839382593E-14", "1.136E-15", null, null, null, ".4400924943041801", ".4923200036034897", ".8792880941855986", "3.378928986602124", "53.39028737230415", "309.3556013310946", 561, "12086", "0"], ["326354 (2000 SJ344)", "326354", "an", "APO", "22.78", null, null, null, null, null, "-1.513550689857094E-13", "1.205E-14", null, null, null, ".1747265143559728", ".9412020672122196", "1.140472926350862", "5.754349893514456", "14.72936947486552", "18.85936370850346", 70, "8260", "0"], ["326386 (2001 OA14)", "326386", "an", "APO", "18.58", null, null, null, null, null, "1.513027867067189E-14", "4.879E-15", null, null, null, ".4215375544706241", ".6298964965451379", "1.088915108341549", "29.24523860036985", "309.5036407411718", "144.4175201971135", 565, "9227", "0"], ["326683 (2002 WP)", "326683", "an", "AMO", "18.48", "0.518", "0.315", "6.262", null, null, "1.510344301659746E-14", "4.674E-15", null, null, null, ".2158576512303198", "1.136996866982374", "1.449987835456563", "19.14972805488558", "76.2914490198514", "1.243764538902711", 1337, "8617", "0"], ["329275 (1999 VP6)", "329275", "an", "APO", "20.09", null, null, null, null, null, "-3.790818557949302E-14", "7.965E-15", null, null, null, ".3045696385067748", ".9585539160286007", "1.378360751995926", "12.81852485208197", "227.0654790332723", "108.9439404292714", 244, "9746", "0"], ["329437 (2002 OA22)", "329437", "an", "ATE", "19.41", null, null, "2.6214", null, null, "1.751707427136795E-14", "3.968E-15", null, null, null, ".2431921369451466", ".7081356805356838", ".9356875306201174", "6.89887276009113", "173.9834347842035", "318.7367765227017", 921, "7729", "0"], ["330659 (2008 GG2)", "330659", "an", "AMO", "23.02", null, null, null, null, null, "9.766292905441736E-14", "6.941E-15", null, null, null, ".2774892923917903", "1.146481382740954", "1.586801926488054", "13.016165765", "198.6308273957983", ".7751160742577402", 341, "8090", "0"], ["331876 (2004 CL)", "331876", "an", "APO", "20.56", null, null, null, null, null, "7.945511289633326E-14", "2.08E-14", null, null, null, ".5360741767440941", ".5958236856989139", "1.284308085110088", "13.30571412575474", "109.3849138271039", "274.6780501347579", 180, "7829", "0"], ["333889 (1998 SV4)", "333889", "an", "ATE", "18.24", "0.919", "0.110", "2.817", null, null, "9.585863865199018E-15", "1.932E-15", null, null, null, ".6419908498141375", ".2923118086360088", ".8164925630650877", "53.29845557752773", "177.2407103650552", "359.5234547386225", 1299, "10249", "0"], ["334412 (2002 EZ2)", "334412", "an", "AMO", "20.32", null, null, "34.077", null, null, "-4.867025689156619E-14", "5.085E-15", null, null, null, ".04600590332548803", "1.19173532073653", "1.249206179462483", "13.02470157007822", "181.0557389110195", "186.3159876996539", 653, "8985", "0"], ["337084 (1998 SE36)", "337084", "an", "AMO", "19.76", null, null, "11.855", null, null, "-4.792099802261392E-14", "9.906E-15", null, null, null, ".09918303712004611", "1.208431115737346", "1.341483526102722", "11.67566897374687", "199.2055067643479", "27.30048111008195", 434, "10242", "0"], ["337248 (2000 RH60)", "337248", "an", "ATE", "20.08", "0.846", "0.025", "25.2", null, null, "-3.353995604250558E-14", "4.465E-15", null, null, null, ".5513351314232046", ".3705407981458314", ".8258743309259302", "19.65087279614265", "177.8576415161021", "354.4098347446442", 628, "8813", "0"], ["337252 (2000 SD8)", "337252", "an", "APO", "20.82", null, null, null, null, null, "-8.15745626591803E-14", "6.684E-15", null, null, null, ".3136802727800011", ".7746485386534619", "1.12869921689596", "6.547662201698722", "19.02564463550936", "211.6535565440579", 232, "8794", "0"], ["338292 (2002 UA31)", "338292", "an", "ATE", "19.11", null, null, "2.5564", null, null, "-2.411400834395743E-14", "7.267E-15", null, null, null, ".4871104834893416", ".409655124189908", ".7987200186443953", "30.70704334320147", "209.3033965288257", "358.6775004102014", 548, "8342", "0"], ["339714 (2005 ST1)", "339714", "an", "APO", "20.35", null, null, "8.68", null, null, "-2.00988460785069E-14", "3.473E-15", null, null, null, ".3709327200329952", ".9129475350429709", "1.451271690829089", "20.22858184268784", "7.53655263521273", "80.71211101304091", 544, "12796", "0"], ["341843 (2008 EV5)", "341843", "an", "ATE", "20.05", "0.40", "0.137", "3.725", null, null, "-3.252981352093446E-14", "7.931E-15", null, null, null, ".08289135234564231", ".8802102630181334", ".9597666157323917", "7.447864888634731", "93.18792074829541", "235.9306323569786", 1486, "6624", "0"], ["344074 (1997 UH9)", "344074", "an", "ATE", "19.00", null, null, null, null, null, "2.317010493100229E-14", "4.648E-15", null, null, null, ".4747428890898489", ".4359567729727786", ".8299873793566824", "25.48752955664989", "42.38096557576588", "180.9265660236144", 803, "10290", "0"], ["345705 (2006 VB14)", "345705", "an", "ATE", "18.58", "0.406", "0.402", "3.204", null, null, "-1.427119821264348E-14", "1.599E-15", null, null, null, ".4210889025563214", ".444044721640193", ".7670343919834658", "31.02558035168713", "258.7093926714783", "346.4558593315166", 1416, "6651", "0"], ["348306 (2005 AY28)", "348306", "an", "ATE", "21.51", null, null, null, null, null, "-7.754620936198217E-14", "3.797E-15", null, null, null, ".5702329800745213", ".3750217029954597", ".8726162911721058", "5.885595190085118", "117.3970477795978", "156.0684140638516", 271, "7638", "0"], ["349507 (2008 QY)", "349507", "an", "APO", "18.50", null, null, null, null, null, "3.285418815367244E-14", "1.478E-14", null, null, null, ".5815965428042777", ".4886450454650535", "1.167880037942596", "13.56291723716985", "1.87449968669965", "254.9466534089925", 1035, "12491", "0"], ["350462 (1998 KG3)", "350462", "an", "AMO", "22.10", null, null, "13.335", null, null, "-6.838816999300537E-14", "5.869E-15", null, null, null, ".1170752413873924", "1.023431106045902", "1.159137396547902", "5.508117968815815", "207.8151940491108", "267.9879286548569", 312, "9131", "0"], ["350523 (2000 EA14)", "350523", "an", "APO", "21.20", null, null, null, null, null, "7.203078005112303E-14", "3.738E-15", null, null, null, ".2025324362991067", ".8910496076700961", "1.117349028636233", "3.563143301069624", "203.66640176", "205.9701316830613", 333, "9557", "0"], ["350751 (2002 AW)", "350751", "an", "APO", "20.82", null, null, "4.647", null, null, "-5.156113011317883E-14", "5.483E-15", null, null, null, ".2566891669273958", ".7965098824285871", "1.0715703942267", ".5744402234078143", "161.7524843491061", "119.3664504797581", 710, "8035", "0"], ["351545 (2005 TE15)", "351545", "an", "APO", "19.81", null, null, "10.61", null, null, "-4.336452379853568E-14", "9.275E-15", null, null, null, ".3434284232566506", ".7906312190672975", "1.204181306459983", "13.1325654920917", "10.82976423213316", "241.2396626783796", 481, "7379", "0"], ["354182 (2002 DU3)", "354182", "an", "APO", "20.77", null, null, "4.4", null, null, "3.534220517467281E-14", "8.239E-15", null, null, null, ".2381824400007021", ".8726269828305128", "1.14545401504176", "8.707826512681986", ".5990335961756049", "245.6234923767716", 286, "8333", "0"], ["357622 (2005 EY95)", "357622", "an", "APO", "20.32", null, null, "3.925", null, null, "-4.254272021242088E-14", "6.908E-15", null, null, null, ".5382806208895704", ".5003682605986277", "1.083706431301759", "3.169839217880055", "72.86083638010003", "342.1458627666928", 319, "7632", "0"], ["363027 (1998 ST27)", "363027", "an", "ATE", "19.58", "0.578", "0.059", "3", null, null, "1.633588047728656E-14", "1.602E-16", null, null, null, ".5298002406951601", ".385475005389424", ".8198111499659719", "21.05144598633631", "197.5125822774797", "322.4401500738809", 1054, "10208", "0"], ["363116 (2001 GQ2)", "363116", "an", "APO", "20.32", null, null, null, null, null, "-2.962793787535182E-14", "9.328E-15", null, null, null, ".5031592298305541", ".6033996609173623", "1.214472919989184", "21.82094446276523", "37.08571823997905", "280.3196092812864", 406, "8770", "0"], ["363305 (2002 NV16)", "363305", "an", "APO", "21.42", null, null, "0.9067", null, null, "-2.33620767306597E-14", "4.318E-15", null, null, null, ".2208123521555034", ".9655181555309057", "1.239134319187251", "3.454371866486248", "182.73672908499", "179.7892102449848", 629, "8226", "0"], ["363505 (2003 UC20)", "363505", "an", "ATE", "18.48", "1.876", "0.029", "29.6", null, null, "-8.06788964613139E-15", "4.073E-16", null, null, null, ".3368709366768247", ".5180862725422042", ".7812751713005759", "3.775904641730028", "187.916204861283", "60.1749365644514", 1075, "26234", "0"], ["363599 (2004 FG11)", "363599", "an", "APO", "21.04", "0.152", "0.306", "7.021", null, null, "-5.899805378368057E-14", "4.259E-15", null, null, null, ".7240470206974712", ".4376066651829501", "1.585801560428885", "3.138183381282569", "83.32709878113094", "228.9433188183664", 528, "8052", "0"], ["364136 (2006 CJ)", "364136", "an", "ATE", "20.18", null, null, null, null, null, "-3.163127693511722E-14", "1.378E-15", null, null, null, ".7548863078264129", ".165844243318015", ".6766013022257676", "10.22188433772046", "303.1981812979993", "29.69332219111609", 637, "7339", "0"], ["368184 (2000 RN77)", "368184", "an", "ATE", "19.36", "0.381", "0.193", null, null, null, "-2.188522079428345E-14", "6.345E-15", null, null, null, ".3181870237621525", ".64861994023681", ".9513165088406028", "16.10151664058456", "312.6757703586825", "211.7527527842323", 517, "9519", "0"], ["369984 (1998 QR52)", "369984", "an", "APO", "18.96", null, null, "234", null, null, "-2.763614819219021E-14", "4.611E-15", null, null, null, ".2878140401392685", ".7432742592919276", "1.04365194090217", "17.63453653063054", "316.1894123284044", "204.3499063140634", 495, "7648", "0"], ["369986 (1998 SO)", "369986", "an", "ATE", "20.44", null, null, null, null, null, "2.299105767564885E-14", "3.367E-15", null, null, null, ".6986205244422569", ".2204378962010987", ".7314296894078429", "30.34713557946246", "176.135787872873", "359.865168549015", 302, "9844", "0"], ["376848 (2001 RY47)", "376848", "an", "ATE", "19.61", null, null, null, null, null, "4.129557182928029E-14", "5.465E-15", null, null, null, ".3928492066576376", ".5503377834941741", ".9064268539691219", "17.60808157570951", "11.18076093195593", "214.1094622639101", 616, "9160", "0"], ["376879 (2001 WW1)", "376879", "an", "AMO", "22.35", null, null, null, null, null, "-6.28989333800208E-14", "1.421E-14", null, null, null, ".1214760227773869", "1.062706613620204", "1.209650096267003", "21.73943534541944", "59.76937585257043", "46.07377476282198", 106, "7295", "0"], ["377097 (2002 WQ4)", "377097", "an", "APO", "19.71", null, null, "36", null, null, "-2.194366013124338E-14", "4.528E-15", null, null, null, ".5561853415858142", ".8683208453657535", "1.956494290811372", "3.935947701991168", "266.856807592261", "244.6732460481475", 417, "27253", "0"], ["380818 (2005 YV128)", "380818", "an", "ATE", "20.67", null, null, null, null, null, "4.519668113678618E-14", "8.871E-15", null, null, null, ".5124086251891673", ".4500400401152377", ".9229860562850122", "14.14113656998469", "127.6887795780144", "191.8284834543535", 232, "6646", "0"], ["385186 (1994 AW1)", "385186", "an", "AMO", "17.64", "0.811", "0.223", "2.5193", null, null, "1.419053572510816E-14", "1.932E-15", null, null, null, ".07553959421453635", "1.021504322860666", "1.104973578606375", "24.09941109412459", "290.3371003662496", "37.15513912668489", 2792, "13614", "0"], ["387733 (2003 GS)", "387733", "an", "ATE", "18.93", "0.344", "0.411", "2.467", null, null, "-1.182858912040006E-14", "2.785E-15", null, null, null, ".2186184466963996", ".6976134721508217", ".8927949081999493", "12.02930704232246", "196.1765637846669", "181.8975142999537", 933, "8101", "0"], ["387746 (2003 MH4)", "387746", "an", "APO", "20.13", "0.366", "0.132", null, null, null, "-5.162192976340432E-14", "1.373E-14", null, null, null, ".513187316652574", ".9553671337793478", "1.96249433603505", "3.910778641986205", "259.4765569180962", "323.5282153357039", 581, "8250", "0"], ["388188 (2006 DP14)", "388188", "an", "APO", "19.01", null, null, "5.7868", null, null, "-3.93987758351203E-14", "6.603E-15", null, null, null, ".7761007004622648", ".3055362321796165", "1.364614506657366", "11.77356123394496", "317.0958654245475", "59.34208274347178", 531, "7377", "0"], ["388945 (2008 TZ3)", "388945", "an", "APO", "20.44", null, null, "39.15", null, null, "7.039946739546824E-14", "1.517E-14", null, null, null, ".3919667151922638", ".9686075683312064", "1.593017343840784", "8.685334965358786", "43.89927479536119", "219.8012738710823", 2416, "6578", "0"], ["390725 (2003 HB)", "390725", "an", "ATE", "19.69", "0.293", "0.271", null, null, null, "-4.266204560423661E-14", "8.048E-15", null, null, null, ".3803216781933627", ".5265369908453247", ".8496940627360268", "18.12070153483477", "70.33951866736916", "306.7546595583499", 499, "8067", "0"], ["393569 (2003 JC13)", "393569", "an", "APO", "20.3", "0.551", "0.048", null, null, null, "-4.104005719142831E-14", "7.624E-15", null, null, null, ".3152052558347642", ".7301956191641064", "1.06629851555624", "8.507341028213277", "205.7886566822689", "172.0211697960273", 522, "8408", "0"], ["396593 (2001 HC)", "396593", "an", "ATE", "19.06", null, null, "3.1881", null, null, "2.4073010822722E-14", "7.861E-15", null, null, null, ".4993634553177714", ".4378698878767394", ".8746262983152191", "23.73444404342739", "32.57995559661628", "28.1924505625129", 357, "8430", "0"], ["397326 (2006 TC1)", "397326", "an", "AMO", "19.09", null, null, null, null, null, "2.722912257399517E-14", "5.068E-15", null, null, null, ".3750274821740059", "1.075078037897585", "1.7202005003953", "4.494791601092483", "326.0341647959047", "160.9140362902614", 266, "26854", "0"], ["398188 Agni (2010 LE15)", "398188", "an", "ATE", "19.33", "0.462", "0.137", "21.99", null, null, "-3.35983942483115E-14", "4.324E-15", null, null, null, ".2733618518090965", ".6282334397519574", ".8645753616377805", "13.25234675857377", "134.1591607979944", "328.6467974408029", 1214, "9193", "0"], ["399308 (1993 GD)", "399308", "an", "APO", "20.62", null, null, null, null, null, "7.468526960643571E-14", "5.639E-15", null, null, null, ".2380124745708312", ".839987351463957", "1.102363652201336", "15.46346131062947", "201.4133147368012", "202.1193551580376", 163, "10884", "0"], ["401885 (2001 RV17)", "401885", "an", "ATE", "20.42", null, null, null, null, null, "-4.827054201480991E-14", "4.485E-15", null, null, null, ".3423315577012473", ".6015811713913933", ".9147180139717255", "7.529534765333985", "153.7749920569688", "4.667152329728984", 421, "7728", "0"], ["408982 (2002 SP)", "408982", "an", "ATE", "20.78", null, null, null, null, null, "4.503347591624353E-14", "6.114E-15", null, null, null, ".6004387104437714", ".3614244408988855", ".904553194580737", "20.8520527818709", "350.8725532461824", "169.4344059436717", 140, "8784", "0"], ["410622 (2008 QF)", "410622", "an", "AMO", "21.72", null, null, null, null, null, "-7.245572051689008E-14", "1.41E-14", null, null, null, ".3774409468201914", "1.293071734877661", "2.077026634297765", "3.785259345240917", "192.5341015044744", "136.4421241709288", 282, "8843", "0"], ["410777 (2009 FD)", "410777", "an", "APO", "22.18", "0.472", "0.01", "4", null, null, "8.184872662672221E-14", "1.036E-14", null, null, null, ".4930214865159493", ".590159011256051", "1.16407105145417", "3.12489947962882", "9.153118203448289", "281.6869942385883", 516, "5523", "0"], ["412976 (1987 WC)", "412976", "an", "AMO", "19.91", null, null, null, null, null, "6.354838259001724E-14", "1.254E-14", null, null, null, ".2337297308863067", "1.043733701173299", "1.362096042667209", "15.84417990813675", "51.80072472012441", "308.397372281798", 318, "13938", "0"], ["412983 (1996 FO3)", "412983", "an", "AMO", "20.16", null, null, null, null, null, "-8.137241065511603E-14", "9.049E-15", null, null, null, ".2900126102564498", "1.023837769557056", "1.442050639697797", "5.814869601975479", "333.5344392918876", "162.829420326741", 389, "11160", "0"], ["413260 (2003 TL4)", "413260", "an", "ATE", "19.57", null, null, "27.2", null, null, "-3.579785269915891E-14", "6.747E-15", null, null, null, ".381397201438586", ".4804815078849238", ".7767205531599648", "12.18849039510208", "219.9908992428072", "321.9739577398492", 463, "8028", "0"], ["413577 (2005 UL5)", "413577", "an", "ATE", "20.34", null, null, "3.4591", null, null, "-4.487815020006207E-14", "4.526E-15", null, null, null, ".5697333629499755", ".4028083589722681", ".936183111323679", "14.32036858809283", "58.85723735458274", "127.8038745029322", 420, "7279", "0"], ["416002 (2002 BN)", "416002", "an", "ATE", "20.49", null, null, null, null, null, "-5.013029040701545E-14", "9.04E-15", null, null, null, ".5463711144065653", ".3969227254966857", ".8749943799928739", "27.76082506487682", "115.7386370826703", "147.2707271858959", 138, "8388", "0"], ["416151 (2002 RQ25)", "416151", "an", "APO", "20.67", null, null, "12.191", null, null, "5.932881517473172E-14", "9.152E-15", null, null, null, ".3062601110425094", ".7711907737829814", "1.111642542195288", "4.574659055988018", "10.45063091929132", "225.753072059594", 318, "7392", "0"], ["417210 (2005 XV77)", "417210", "an", "ATE", "20.55", null, null, null, null, null, "-2.910294751604879E-14", "8.757E-15", null, null, null, ".4142160938770556", ".4594205779658759", ".7842833733801021", "16.84759205044412", "282.2272524060621", "9.289629315749218", 655, "6605", "0"], ["417217 (2005 YS)", "417217", "an", "ATE", "19.52", null, null, null, null, null, "3.193252044437285E-14", "1.047E-14", null, null, null, ".5502914492479083", ".3197625894567938", ".7110440504678495", "19.59863356701872", "288.5804284393444", "327.9327608984872", 357, "6598", "0"], ["422638 (1994 CB)", "422638", "an", "APO", "21.16", "0.193", "0.195", "8.676", null, null, "-4.382275289829485E-14", "4.347E-15", null, null, null, ".1451338902122646", ".9826733904771124", "1.14950561172803", "18.25591783191055", "310.6162765654562", "288.5146088050276", 205, "11704", "0"], ["422686 (2000 AC6)", "422686", "an", "ATE", "21.60", "0.176", "0.143", "2.4437", null, null, "5.098275719698691E-14", "2.689E-15", null, null, null, ".2865178724384863", ".6091096652274848", ".853713977824861", "4.700065902049597", "101.333345726727", "188.058503834745", 464, "9513", "0"], ["424392 (2007 YJ)", "424392", "an", "APO", "22.11", "0.239", "0.054", null, null, null, "-1.64567227730087E-13", "2.447E-14", null, null, null, ".2796821799272426", ".7946641224543649", "1.103213193273628", "3.308939350519134", "28.86654809393551", "199.3974561638066", 189, "5459", "0"], ["425755 (2011 CP4)", "425755", "an", "ATE", "21.12", null, null, null, null, null, "5.481450445990093E-14", "6.731E-15", null, null, null, ".8703488202791065", ".1182021824559993", ".9116938442863305", "9.471494147958269", "147.9628457634251", "159.9460848255703", 187, "8449", "0"], ["427684 (2004 DH2)", "427684", "an", "ATE", "20.22", null, null, "8.962", null, null, "3.547104090175979E-14", "5.492E-15", null, null, null, ".400307008794593", ".5662751062646263", ".9442750116628688", "23.02327681430911", "157.2815225536943", "216.1374689564276", 378, "8083", "0"], ["428209 (2006 VC)", "428209", "an", "APO", "20.09", null, null, "7.8", null, null, "6.446529221667156E-13", "1.748E-13", null, null, null, ".4920937620827983", ".9860155146727654", "1.941333736549825", "12.2533117971314", "87.52305914764197", "19.2385138617324", 177, "7139", "0"], ["433953 (1997 XR2)", "433953", "an", "APO", "20.91", "0.259", "0.115", "9.3205", null, null, "3.350524716087226E-14", "2.13E-15", null, null, null, ".2009078137738075", ".8602103138075924", "1.07648445152497", "7.190582736760533", "250.614071695786", "84.51160942887719", 548, "10332", "0"], ["434196 (2003 HG2)", "434196", "an", "APO", "21.54", null, null, null, null, null, "-3.015597788691346E-14", "8.961E-15", null, null, null, ".1345391287276858", ".9195216821178955", "1.062464766045525", "19.77934206951841", "214.2109201125043", "225.1520859876068", 259, "8464", "0"], ["434632 (2005 WE)", "434632", "an", "APO", "19.85", "1.150", "0.019", null, null, null, "-4.403077728363731E-14", "1.435E-14", null, null, null, ".2513944563174615", ".8617261262448543", "1.151108395492042", "12.36567726314282", "289.91013156656", "22.65960432071257", 260, "7427", "0"], ["437841 (1998 HD14)", "437841", "an", "ATE", "21.0", null, null, null, null, null, "-4.802397499337236E-14", "1.013E-14", null, null, null, ".3126111424422494", ".6621633536878336", ".9633024254138457", "7.81419644069851", "183.7496534864909", "260.9288444243292", 210, "7735", "0"], ["437844 (1999 MN)", "437844", "an", "ATE", "21.01", null, null, "5.495", null, null, "3.778771956988236E-14", "1.633E-15", null, null, null, ".6653173929060558", ".2256010870108077", ".6740747270068993", "2.031840389924316", "81.38441181766571", "9.20969790895418", 298, "9860", "0"], ["441823 (2009 QO5)", "441823", "an", "AMO", "22.11", null, null, null, null, null, "-2.723155099536089E-13", "6.695E-14", null, null, null, ".2383270934076941", "1.215667231002207", "1.596048934497425", "8.555594318762568", "145.7404605847709", "188.8424460757206", 105, "5794", "0"], ["441987 (2010 NY65)", "441987", "an", "APO", "21.35", "0.228", "0.071", "4.9706", null, null, "-3.840766205103097E-14", "1.473E-15", "-1.146662443901434E-13", "5.871E-14", null, ".3701568601249387", ".6321333034703273", "1.003636085638275", "11.54363911652526", "267.919405902854", "252.0951642457207", 999, "5134", "0"], ["443837 (2000 TJ1)", "443837", "an", "AMO", "19.68", "0.253", "0.399", "14.09", null, null, "-2.008911236687055E-14", "5.174E-15", null, null, null, ".08081271585110035", "1.066662548847767", "1.160440932160434", "39.53917801440286", "190.4073917017084", "52.50290949077585", 684, "9156", "0"], ["443880 (2001 UZ16)", "443880", "an", "APO", "19.38", "0.228", "0.593", "13.719", null, null, "-5.120724084272612E-14", "1.029E-14", null, null, null, ".4267233903539016", "1.008855842938336", "1.759806393568254", "12.67454253083187", "323.0925036430286", "28.61869460197386", 451, "7717", "0"], ["446789 (1998 FN9)", "446789", "an", "AMO", "20.91", null, null, null, null, null, "8.106301622551968E-14", "2.485E-14", null, null, null, ".235637809888659", "1.067609862988512", "1.396732958275969", "14.62810282342585", "183.8222577016051", "329.3419150190033", 147, "10272", "0"], ["446924 (2002 VV17)", "446924", "an", "ATE", "20.16", null, null, null, null, null, "-2.781175661442838E-14", "3.24E-15", null, null, null, ".4366513859142135", ".4717863706211378", ".8374678819202606", "9.693113239914615", "222.1265436739797", "348.9276184507943", 515, "12123", "0"], ["450237 (2002 XY38)", "450237", "an", "ATE", "23.18", "0.096", "0.134", null, null, null, "-1.118847906538185E-13", "7.765E-15", null, null, null, ".2177118042465844", ".7129422885251949", ".9113550382011911", "2.121508602441165", "158.6932235406773", "119.9324339169103", 145, "7342", "0"], ["450300 (2004 QD14)", "450300", "an", "ATE", "20.68", null, null, null, null, null, "-4.594752389443465E-14", "6.63E-15", null, null, null, ".3378132905659583", ".623633683315921", ".9417792209223419", "6.247393629390944", "75.23287971459474", "109.3690866231618", 193, "8076", "0"], ["450649 (2006 UY64)", "450649", "an", "ATE", "19.42", null, null, "2.824", null, null, "1.607269629793185E-14", "3.197E-15", null, null, null, ".1573488928147933", ".7849827184311718", ".9315631484225181", "26.21646024025905", "30.76223612865122", "210.8200441718521", 777, "6994", "0"], ["452334 (2001 LB)", "452334", "an", "APO", "21.07", null, null, null, null, null, "-2.652254308260587E-14", "5.02E-15", null, null, null, ".1890058930401017", "1.0023700795248", "1.23597701995924", "20.79835932032024", "80.86724071157383", "118.2289599938519", 176, "8039", "0"], ["452639 (2005 UY6)", "452639", "an", "APO", "18.14", "2.249", "0.018", null, null, null, "-5.381352489049309E-13", "4.775E-14", null, null, null, ".8728379282718522", ".2859568232530261", "2.248758764046847", "12.21905224178176", "343.5508413143991", "180.9173908437998", 219, "7587", "0"], ["452807 (2006 KV89)", "452807", "an", "APO", "21.52", null, null, null, null, null, "-7.884838920168889E-14", "9.376E-15", null, null, null, ".2726904677497374", ".8363447531742237", "1.149915842002801", "3.553893631175225", "71.69232407386494", "87.81029723776663", 176, "7439", "0"], ["455176 (1999 VF22)", "455176", "an", "APO", "20.71", null, null, "6.681", null, null, "-4.935333814653443E-14", "5.636E-15", null, null, null, ".7385524161085788", ".3432142326430733", "1.312745857256075", "3.918987041840221", "3.110491455309618", "272.1211025618449", 524, "9237", "0"], ["455184 (2000 ED14)", "455184", "an", "ATE", "21.23", null, null, null, null, null, "6.579782618565296E-14", "7.115E-15", null, null, null, ".5666569199005519", ".3618058071416493", ".834917698601806", "13.77931544120574", "3.839890010889429", "310.1471744458666", 168, "9055", "0"], ["455415 (2003 GA)", "455415", "an", "AMO", "21.45", null, null, "5.78", null, null, "6.949841436506986E-14", "2.097E-14", null, null, null, ".1912155910068799", "1.036502473719799", "1.281555952605678", "3.842612293972131", "192.8573256855872", "66.90126600536446", 362, "8323", "0"], ["456946 (2008 AF32)", "456946", "an", "AMO", "21.31", null, null, null, null, null, "6.459417763890485E-14", "1.61E-14", null, null, null, ".1108099689788354", "1.076392821712141", "1.210531814527867", "27.18366660670908", "105.2811110190139", "80.33423805976339", 161, "6018", "0"], ["457175 (2008 GO98)", "457175", "an", "OMB", "12.91", null, null, "10.74", "1.085626062709065E-8", "9.404E-10", "-1.150837244462713E-9", "1.031E-10", "-2.531599579953758E-9", "1.387E-9", null, ".2787245675397884", "2.864307509796164", "3.971170208898207", "15.55983689224037", "192.5212653377625", "53.36528640130194", 1742, "8774", "0"], ["457662 (2009 DZ)", "457662", "an", "APO", "22.00", null, null, null, null, null, "-8.616976488701334E-14", "1.872E-14", null, null, null, ".3022083589519442", "1.014209305527979", "1.453455796639634", "14.11470005539547", "151.4393891602783", "335.925394164371", 193, "5152", "0"], ["462959 (2011 DU)", "462959", "an", "APO", "21.08", null, null, "10.29", null, null, "8.609598609384466E-14", "1.055E-14", null, null, null, ".3179223759311483", ".7991246707179894", "1.171603703917023", "2.922935612447532", "176.4670016088359", "120.5887616365231", 650, "5394", "0"], ["465617 (2009 EK1)", "465617", "an", "APO", "21.36", null, null, null, null, null, "-9.389113249759669E-14", "3.13E-14", null, null, null, ".2290458278206791", ".956681012280072", "1.240905162463472", "9.124513686681428", "358.3743680144001", "21.86973770949852", 86, "7813", "0"], ["465824 (2010 FR)", "465824", "an", "APO", "21.69", null, null, null, null, null, "-4.75775655050249E-14", "9.645E-15", null, null, null, ".3654293740084928", ".718038208277663", "1.13153395204157", "14.24369935548462", "167.2443426117482", "272.769541718081", 265, "6017", "0"], ["467336 (2002 LT38)", "467336", "an", "ATE", "20.61", null, null, "14.95", null, null, "2.42302712521693E-14", "3.997E-15", null, null, null, ".3136534417662795", ".5801589535396814", ".8452857329578403", "6.176181697158422", "259.2618054054699", "162.8001195488243", 839, "7698", "0"], ["467351 (2003 KO2)", "467351", "an", "ATE", "20.37", null, null, "6.48", null, null, "3.273576715771244E-14", "3.844E-15", null, null, null, ".5108401874675466", ".3559544693198158", ".7276854316322232", "23.48993444351741", "215.4611390769721", "204.0440709587814", 484, "8414", "0"], ["467460 (2006 JF42)", "467460", "an", "ATE", "19.05", null, null, "13.98", null, null, "3.623362404895256E-14", "5.818E-15", null, null, null, ".5818843331891911", ".2807767787606286", ".6715289596830054", "5.935969884637553", "40.82413070720457", "17.80855647049587", 368, "6903", "0"], ["468468 (2004 KH17)", "468468", "an", "ATE", "22.01", "0.197", "0.072", null, null, null, "-6.673085202971823E-14", "4.061E-15", null, null, null, ".4981045719242602", ".3574255398940479", ".7121514162111667", "22.13213605672838", "79.1090350074727", "340.7275783938198", 248, "7673", "0"], ["468540 (2006 MD12)", "468540", "an", "ATE", "19.45", null, null, null, null, null, "-2.764201850459012E-14", "6.021E-15", null, null, null, ".6051741968959702", ".3310981804192008", ".8385930651345047", "27.2733472793922", "291.8102950216367", "174.5688613469492", 342, "7359", "0"], ["469219 Kamo`oalewa (2016 HO3)", "469219", "an", "APO", "24.31", null, null, "0.467", null, null, "-1.341168313541087E-13", "1.771E-14", null, null, null, ".1022388434937281", ".8984887574998687", "1.000810461656002", "7.802614368816799", "65.59324199512295", "304.3632127863176", 335, "7660", "0"], ["469445 (2002 LT24)", "469445", "an", "ATE", "22.14", "0.143", "0.136", null, null, null, "-5.985522181874092E-14", "1.277E-15", null, null, null, ".4957928132894216", ".3630801017656973", ".7201010047762569", ".7661254427709275", "165.6504523359123", "283.0980326014352", 287, "8065", "0"], ["469737 (2005 NW44)", "469737", "an", "ATE", "20.39", null, null, "31.5", null, null, "2.800353749681288E-14", "6.374E-15", null, null, null, ".4833613652812594", ".4026358310377653", ".7793374400986509", "6.073064554833538", "114.25528594218", ".9828700515468337", 377, "7331", "0"], ["470975 (2009 SC15)", "470975", "an", "AMO", "21.43", null, null, "10.354", null, null, "-1.102694858758432E-13", "2.109E-14", null, null, null, ".1790376257746059", "1.038419431802505", "1.264880662505744", "6.841481884747261", "178.568240790495", "333.9921464582379", 339, "8707", "0"], ["474158 (1999 FA)", "474158", "an", "APO", "20.71", null, null, "10.092", null, null, "-5.081328033777761E-14", "6.824E-15", null, null, null, ".1327005835173049", ".9351561458612847", "1.07823910415365", "12.02930719991203", "166.0731565158349", "297.0183816477498", 499, "17525", "0"], ["474163 (1999 SO5)", "474163", "an", "APO", "20.81", null, null, "1.38", null, null, "-5.766484187526932E-14", "4.099E-15", null, null, null, ".06446668650418924", "1.015168148223763", "1.085122393376224", "13.3691976068489", "196.0046004587336", "359.8493094916141", 351, "9504", "0"], ["474179 (1999 VS6)", "474179", "an", "APO", "19.08", null, null, "15.88", null, null, "-3.788490690419212E-14", "1.136E-14", null, null, null, ".223066745035346", ".9304057485379637", "1.197536265300282", "27.97084344803174", "35.27522842927591", "89.35468715257991", 632, "9113", "0"], ["474231 (2001 HZ7)", "474231", "an", "APO", "20.02", null, null, "65", null, null, "-3.243991681579248E-14", "9.509E-15", null, null, null, ".4984280093207868", ".7371014847674106", "1.469582629144125", "5.427074021395338", "156.2669343442027", "312.8905042156376", 323, "9164", "0"], ["475534 (2006 TS7)", "475534", "an", "ATE", "21.25", null, null, null, null, null, "3.891652257399514E-14", "6.912E-15", null, null, null, ".5803504910077816", ".3973673358195252", ".9469028970718839", "5.500677140526308", "225.1169989219567", "300.0472869417588", 224, "7254", "0"], ["477465 (2009 XZ1)", "477465", "an", "ATE", "21.70", null, null, null, null, null, "5.174092666436202E-14", "1.349E-14", null, null, null, ".5338126744608263", ".3989517503713417", ".855775626053175", "8.16038008932418", "81.96639626139751", "153.0078579041034", 191, "8409", "0"], ["477719 (2010 SG15)", "477719", "an", "AMO", "25.26", null, null, null, null, null, "-1.59199720365078E-13", "1.469E-14", null, null, null, ".4762113688892358", "1.088444611623165", "2.0780225972354", ".8281808953431232", "182.2011915722887", "199.7273104536422", 131, "5446", "0"], ["478784 (2012 UV136)", "478784", "an", "APO", "25.60", null, null, null, null, null, "-7.5633203495266E-14", "1.648E-14", null, null, null, ".1396687274636232", ".867912229521857", "1.008811672000636", "2.101766787981439", "207.8082333673404", "290.3270769620322", 148, "3146", "0"], ["480808 (1994 XL1)", "480808", "an", "ATE", "20.64", null, null, null, null, null, "-4.574276553252413E-14", "1.678E-15", null, null, null, ".5261707453157068", ".3178834146257773", ".6708817817455769", "28.16852267949661", "252.6425422093654", "356.5818084318553", 298, "10594", "0"], ["480820 (1998 VF32)", "480820", "an", "ATE", "20.97", null, null, null, null, null, "2.736865926540816E-14", "3.386E-15", null, null, null, ".4437798979956015", ".4732249703106564", ".8507872487983439", "23.74784802346278", "236.2501143205588", "320.9634344538692", 160, "9074", "0"], ["480883 (2001 YE4)", "480883", "an", "ATE", "20.90", null, null, null, null, null, "-6.949630407193808E-14", "9.158E-16", null, null, null, ".5404284807056908", ".3110611821726465", ".6768504337481436", "4.853290407699069", "305.3161951483377", "319.0021667426155", 456, "8762", "0"], ["481442 (2006 WO3)", "481442", "an", "ATE", "21.58", null, null, null, null, null, "-6.141290694965418E-14", "6.969E-15", null, null, null, ".4474337189788999", ".4418941268845539", ".7997124364301916", "21.21405738718898", "252.6022554848557", "9.697132144617346", 311, "7331", "0"], ["481965 (2009 EB1)", "481965", "an", "APO", "20.69", null, null, null, null, null, "-4.263823660255543E-14", "1.088E-14", null, null, null, ".4542766476302303", ".6038114508232998", "1.10644239100505", "12.50762899851746", "151.2910705360247", "187.5895925074825", 190, "8304", "0"], ["483422 (2000 CE59)", "483422", "an", "APO", "20.53", null, null, "3.623", null, null, "-2.484259807448553E-14", "7.653E-15", null, null, null, ".1667232001391012", ".947848161866793", "1.137494962088252", "12.2649802645358", "318.6073167866787", "307.5682503932244", 395, "8395", "0"], ["483423 (2000 DO1)", "483423", "an", "APO", "20.53", null, null, null, null, null, "-8.884890881946352E-14", "2.859E-14", null, null, null, ".6821556084068588", ".4544127555770368", "1.429670516756234", "3.460638760364191", "335.6825086709633", "302.9402534867678", 281, "8337", "0"], ["483459 (2002 EM6)", "483459", "an", "APO", "20.31", null, null, null, null, null, "4.400515072715558E-14", "9.232E-15", null, null, null, ".1414321988312837", ".9959406693331879", "1.160002352729131", "31.75875236340298", "169.4787906237706", "121.0330909922941", 369, "7489", "0"], ["483656 (2005 ES70)", "483656", "an", "ATE", "23.77", null, null, "1.69", null, null, "-1.384172359769473E-13", "2.878E-15", null, null, null, ".3862773829374639", ".4684583622511305", ".7633063361642355", "20.81479467776806", "352.8010984708139", "351.0032478177117", 227, "7312", "0"], ["484403 (2007 XF25)", "484403", "an", "AMO", "21.42", null, null, null, null, null, "-8.543301970339419E-14", "1.791E-14", null, null, null, ".132278900529922", "1.026562804856636", "1.183056174943266", "24.48859024955007", "272.7502357659465", "302.6468370894347", 106, "6609", "0"], ["488453 (1994 XD)", "488453", "an", "APO", "19.24", null, null, "2.7365", null, null, "2.193382680735358E-14", "2.31E-15", null, null, null, ".7335989561502413", ".6245170921784806", "2.344274193349961", "4.33030651901704", "96.01876212940356", "249.5332987224859", 658, "10641", "0"], ["488803 (2005 GB120)", "488803", "an", "ATE", "20.48", "0.209", "0.283", null, null, null, "-4.529081762626408E-14", "8.127E-15", null, null, null, ".3946966311441658", ".4788736327343991", ".7911299645326325", "9.150430865641122", "160.8398049738694", "243.8481413887805", 239, "6988", "0"], ["490354 (2009 FF19)", "490354", "an", "APO", "21.41", null, null, null, null, null, "-7.826789862346791E-14", "2.468E-14", null, null, null, ".4092812610048356", ".7164140905191644", "1.212783755155309", ".5584957522698182", "84.88386158956932", "244.7985575074508", 162, "7581", "0"], ["491007 (2011 GL62)", "491007", "an", "APO", "19.53", null, null, null, null, null, "-3.946009442017296E-14", "8.591E-15", null, null, null, ".7069662724348962", ".3340166193686571", "1.139857251737167", "15.69430140690266", "189.8056295615786", "244.4283567722141", 232, "9542", "0"], ["494710 (2005 MO13)", "494710", "an", "ATE", "20.75", null, null, null, null, null, "-5.358337315487564E-14", "5.332E-15", null, null, null, ".4107374972944662", ".5088182330690713", ".8634831348217279", "6.317469754701788", "176.5381284211994", "250.2176546662932", 449, "8787", "0"], ["497113 (2004 EK1)", "497113", "an", "APO", "22.29", null, null, null, null, null, "-4.190865998837816E-14", "4.867E-15", null, null, null, ".250721453031672", ".9362455732274257", "1.249529400001627", "11.64307303182196", "166.83053937952", "300.4785779063965", 262, "7713", "0"], ["499998 (2011 PT)", "499998", "an", "AMO", "24.01", null, null, null, null, null, "-2.121215657579154E-13", "3.011E-14", null, null, null, ".2165770488863741", "1.030902280412805", "1.315894918507801", "2.220712069309112", "70.5427383535505", "299.5766166968563", 205, "2300", "0"], ["506590 (2005 XB1)", "506590", "an", "APO", "21.97", "0.099", "0.287", null, null, null, "1.13735536717676E-13", "1.433E-14", null, null, null, ".4188608572086158", ".6575652907689893", "1.131510928020625", "8.709921432337019", "73.30625871284921", "232.9485952288401", 132, "6577", "0"], ["510529 (2012 EY11)", "510529", "an", "APO", "21.58", null, null, null, null, null, "-1.282910700195142E-13", "1.964E-14", null, null, null, ".1507539809091398", ".9752863672199628", "1.14841441148471", "9.020852860490134", "167.5749158746222", "238.8889340280286", 154, "8054", "0"], ["511684 (2015 BN509)", "511684", "an", "APO", "20.77", "0.315", "0.093", "5.6713", null, null, "7.671088989189398E-14", "1.287E-14", null, null, null, ".5684228983289809", ".4345375958119904", "1.006859710882502", "4.156586497443702", "120.0602942523542", "143.2241814581194", 592, "7342", "0"], ["513312 (2007 DM41)", "513312", "an", "APO", "22.06", null, null, null, null, null, "8.520662200729811E-14", "5.434E-15", null, null, null, ".527683752778621", ".5578545593799671", "1.181103895243509", "2.264045813783411", "1.658087063918582", "274.5711683641632", 221, "6579", "0"], ["516435 (2004 FJ29)", "516435", "an", "ATE", "21.40", null, null, null, null, null, "-5.118211916625607E-14", "6.806E-15", null, null, null, ".3491699241718544", ".5943587374859574", ".9132318243431951", "33.43914783819841", "195.4192406187133", "210.2676762290892", 170, "7702", "0"], ["522684 (2016 JP)", "522684", "an", "ATE", "21.14", null, null, "3.2905", null, null, "-5.908016262607015E-14", "1.676E-14", null, null, null, ".3842197053826363", ".6129058444223534", ".9953320198451684", "11.3156352813379", "202.5123959722027", "255.4901957365468", 763, "3700", "0"], ["523586 (1999 LK1)", "523586", "an", "ATE", "22.11", null, null, null, null, null, "-3.712398196161026E-14", "4.713E-15", null, null, null, ".3325733443923267", ".6052438008623735", ".9068319279386825", "11.92736909919365", "239.9154761407438", "223.6510386520827", 115, "9522", "0"], ["523590 (2001 QC96)", "523590", "an", "APO", "21.12", null, null, "10.", null, null, "-8.575033919690694E-14", "2.408E-14", null, null, null, ".3795375755084356", ".8286501843756228", "1.335536450985984", "20.59172046835727", "142.9262068687171", "277.491559569267", 609, "7546", "0"], ["523599 (2003 RM)", "523599", "an", "AMO", "19.63", null, null, null, null, null, "3.286870537542536E-12", "2.983E-14", null, null, null, ".6106030134649946", "1.130655113551072", "2.903605196362838", "11.19164741242581", "335.0057542883181", "326.1956637828101", 374, "7402", "0"], ["523605 (2004 RX10)", "523605", "an", "ATE", "21.49", null, null, null, null, null, "-4.965318791866469E-14", "1.203E-14", null, null, null, ".3513484843390399", ".596662066716143", ".9198499538047928", "5.958481479624394", "173.5856148336286", "334.1222107834313", 209, "7975", "0"], ["523801 (1993 TQ2)", "523801", "an", "AMO", "20.02", null, null, null, null, null, "4.029534383282589E-14", "8.638E-15", null, null, null, ".4191598303048344", "1.153251204058315", "1.985488029630526", "6.037295037209522", "13.1802524394478", "77.89850055286992", 805, "10399", "0"], ["523809 (2007 TV18)", "523809", "an", "APO", "23.79", null, null, null, null, null, "-6.990560541802049E-14", "1.768E-14", null, null, null, ".3482950858997187", ".8072963559921847", "1.238745233502968", ".9318635865204499", "353.1693785172368", "289.3972602855988", 117, "6381", "0"], ["523828 (1992 BC)", "523828", "an", "APO", "19.96", null, null, null, null, null, "-5.895718711144784E-14", "6.82E-15", null, null, null, ".3521605438280177", ".9209199166163249", "1.421524897631193", "14.34560398758781", "123.2919203308351", "77.29474700247445", 213, "12654", "0"], ["523950 (1998 SZ27)", "523950", "an", "ATE", "20.17", null, null, null, null, null, "-3.65751869235859E-14", "1.085E-14", null, null, null, ".5067480156438522", ".4464416654547836", ".9050985695222967", "23.6417349957347", "166.6709442258216", "47.73265690817077", 150, "9175", "0"], ["523971 (1999 AJ39)", "523971", "an", "APO", "21.21", null, null, null, null, null, "7.578243636801035E-14", "1.843E-14", null, null, null, ".2770543940450764", ".8373273448243799", "1.158216244662518", "10.08991884019113", "298.4618957235291", "1.687950425577353", 89, "9472", "0"], ["524471 (2002 JW15)", "524471", "an", "ATE", "20.36", null, null, "11.489", null, null, "5.041989229030815E-14", "6.796E-15", null, null, null, ".2663261132119466", ".6595491841442521", ".8989677784930967", "11.76188333563549", "218.3510347211459", "175.280540474112", 666, "10634", "0"], ["524522 Zoozve (2002 VE68)", "524522", "an", "ATE", "20.54", null, null, "13.5", null, null, "-5.826787786158261E-14", "1.122E-15", null, null, null, ".4101013527116298", ".4268289462915477", ".7235631887843501", "9.037338224915954", "231.4572412643378", "355.3998992972441", 610, "7622", "0"], ["525229 (2004 UU1)", "525229", "an", "APO", "21.17", null, null, null, null, null, "-5.964517534600307E-14", "2.641E-14", null, null, null, ".2732540693795102", ".8909826285896935", "1.225989153911023", "29.96900638373581", "217.7503458776751", "113.6269294256523", 227, "6962", "0"], ["525268 (2004 XL14)", "525268", "an", "ATE", "21.43", null, null, null, null, null, "-4.524067053063606E-14", "1.321E-14", null, null, null, ".4103576860668916", ".4478711264102833", ".7595640879685777", "21.46425354840927", "85.60199000541053", "157.5977718242664", 280, "5109", "0"], ["525484 (2005 GL)", "525484", "an", "APO", "21.30", null, null, null, null, null, "-1.185027397446215E-13", "3.036E-14", null, null, null, ".3063539787888411", ".7326787406266209", "1.056271813319577", "15.89554724925524", "43.59907748459547", "265.356435496006", 145, "5727", "0"], ["526742 (2006 WR127)", "526742", "an", "ATE", "20.46", null, null, null, null, null, "2.440382641786908E-14", "9.22E-15", null, null, null, ".3759789571361303", ".5660140587864485", ".9070432243579397", "16.78997161886168", "260.7650532345056", "351.4978775882803", 267, "11736", "0"], ["526798 (2007 AA9)", "526798", "an", "ATE", "22.58", null, null, null, null, null, "-1.199766751783174E-13", "2.103E-14", null, null, null, ".4204016266479797", ".4973724919424626", ".8581330017646244", "6.798217117159221", "270.8062304556252", "55.92319745090914", 77, "5880", "1"], ["526826 (2007 CA27)", "526826", "an", "ATE", "21.28", null, null, "17.11", null, null, "-1.279972855786745E-13", "3.592E-14", null, null, null, ".3436774371822413", ".5681756175615877", ".8656956956077606", "29.97207654930936", "122.9555334296888", "200.0727136246218", 115, "6213", "0"], ["527715 (2007 YQ56)", "527715", "an", "APO", "19.95", null, null, "60.8", null, null, "4.371165072580002E-14", "1.038E-14", null, null, null, ".2880074285345141", ".8122112782159449", "1.14075807918077", "26.45539255281865", "275.9899258944777", "273.0212982874361", 407, "6452", "0"], ["533638 (2014 KT86)", "533638", "an", "APO", "20.39", null, null, null, null, null, "-4.581921048495211E-14", "9.578E-15", null, null, null, ".1677187917475129", ".9881534550887311", "1.187283150563406", "22.45953935262569", "69.04512566119887", "288.9598687380123", 322, "8256", "0"], ["592968 (2015 FV118)", "592968", "an", "ATE", "21.66", null, null, null, null, null, "5.262196122709084E-14", "1.083E-14", null, null, null, ".5839140763124513", ".3570106024610341", ".8580213415946364", "6.24255960656016", "98.45916772970806", "267.6017453650386", 168, "8383", "0"], ["595116 (2001 QE96)", "595116", "an", "AMO", "22.77", null, null, null, null, null, "-1.456414169966194E-13", "1.202E-14", null, null, null, ".02821869034124281", "1.273809639402395", "1.310798660914455", "7.267158669787989", "150.2244757761195", "278.8531350546431", 95, "8779", "0"], ["612094 (1999 NW2)", "612094", "an", "APO", "23.29", null, null, "4.2", null, null, "-7.470571365322414E-14", "6.039E-15", null, null, null, ".1086146152129819", ".9947426268401692", "1.115951241536058", "8.679851422981162", "289.4925497524994", "52.9796010082053", 185, "9692", "0"], ["612103 (1999 SK10)", "612103", "an", "APO", "19.84", null, null, null, null, null, "-4.679998154993749E-14", "1.34E-14", null, null, null, ".4417870191210798", ".9849307213551249", "1.764435359070882", "6.96175147963837", "197.6343169925564", "269.4542369385125", 517, "7860", "0"], ["612197 (2000 WP19)", "612197", "an", "ATE", "22.93", null, null, null, null, null, "1.875347066609217E-13", "1.392E-14", null, null, null, ".2883946756648754", ".6080070441352947", ".8544160974390895", "7.678463628373778", "55.61646285604799", "222.1926625314437", 80, "6974", "0"], ["612199 (2000 WL63)", "612199", "an", "APO", "19.90", null, null, null, null, null, "-8.809873217198874E-14", "6.737E-15", null, null, null, ".2986915853373524", "1.004134110583285", "1.431801030173447", "18.27244422369074", "79.35783754207881", "71.87212716251314", 558, "8972", "0"], ["612227 (2001 QC34)", "612227", "an", "APO", "20.16", null, null, null, null, null, "-3.198369109199046E-14", "4.01E-15", null, null, null, ".1877925452497865", ".9169230772210401", "1.12892718708551", "6.234953150813954", "271.2970290605289", "215.4983295653155", 1165, "9125", "0"], ["612346 (2002 GQ5)", "612346", "an", "APO", "20.93", null, null, null, null, null, "-6.926854902806548E-14", "1.646E-14", null, null, null, ".4782609265000012", ".6021707060548877", "1.154160645886318", "6.268003478696962", "63.58536019501597", "12.98175995290402", 77, "8900", "0"], ["612358 (2002 JE9)", "612358", "an", "APO", "21.40", null, null, null, null, null, "-8.428815508487742E-14", "1.528E-14", null, null, null, ".4165761249443739", ".6218892553189957", "1.065930418530956", "8.773237467899813", "199.8160694038484", "255.9171888335854", 252, "8029", "0"], ["612472 (2002 SQ)", "612472", "an", "APO", "19.85", null, null, null, null, null, "5.888306157254894E-14", "1.424E-14", null, null, null, ".3825455117785561", ".8773545108726711", "1.42092174825688", "16.82068615398075", "183.6713043203621", "258.9826369239738", 380, "8253", "0"], ["612600 (2003 SM84)", "612600", "an", "AMO", "23.02", null, null, null, null, null, "-1.671389899676454E-13", "1.489E-14", null, null, null, ".08202845284245681", "1.033069040561847", "1.125382419270725", "2.796159022633185", "186.6313516824441", "87.34969491014583", 112, "6663", "1"], ["612781 (2004 MW2)", "612781", "an", "APO", "19.37", null, null, "3.63", null, null, "-2.482331199595678E-14", "8.337E-15", null, null, null, ".6384045318434572", ".4141581106931672", "1.145363112000809", "35.09322984533857", "96.09379647376336", "50.18005836115547", 183, "8048", "0"], ["612901 (2004 XP14)", "612901", "an", "APO", "19.79", null, null, "100", null, null, "-3.643033242041747E-14", "2.264E-14", null, null, null, ".1586300540873397", ".8850116080463825", "1.051869765904679", "32.94870822856556", "281.0091327109486", "273.7159769949781", 1382, "5785", "0"], ["612970 (2005 HN3)", "612970", "an", "ATE", "21.15", null, null, null, null, null, "-9.715384225263453E-14", "1.622E-14", null, null, null, ".3356187609291506", ".5683407682569979", ".855443734461608", "7.901583900097215", "59.28219328625256", "6.307119365653211", 245, "6990", "0"], ["613286 (2005 YQ96)", "613286", "an", "ATE", "20.63", null, null, null, null, null, "-5.074808911465745E-14", "6.77E-15", null, null, null, ".333613756500187", ".495342392635676", ".7433262578083442", "22.22675421316481", "282.6567614299997", "340.1496599384773", 99, "6559", "0"], ["613398 (2006 FK)", "613398", "an", "ATE", "21.25", null, null, null, null, null, "6.556010234551636E-14", "1.624E-14", null, null, null, ".3433003206107323", ".6058976660173578", ".9226404169724038", "14.61171198776639", "15.12103557059634", "3.224454975261208", 109, "5860", "0"], ["613471 (2006 RJ1)", "613471", "an", "ATE", "22.27", null, null, null, null, null, "-1.637492607550183E-13", "3.441E-14", null, null, null, ".3003608930266679", ".6649495426917335", ".9504179169862772", "1.414597214096328", "93.4489658791784", "110.3294936792025", 248, "5213", "0"], ["613569 (2006 TU7)", "613569", "an", "ATE", "21.95", null, null, null, null, null, "1.187790691286805E-13", "7.231E-15", null, null, null, ".4703713975408151", ".4508571052187956", ".8512703111677966", "2.950356573425706", "91.33995145268737", "69.21398746739472", 196, "8055", "0"], ["613714 (2007 DL41)", "613714", "an", "APO", "20.82", null, null, null, null, null, "-1.359509988385379E-13", "3.131E-14", null, null, null, ".4765305374346481", ".7629089650615473", "1.457408730822197", "4.674715995865939", "150.6820641245011", "140.3160411884611", 141, "5390", "0"], ["613862 (2007 UY1)", "613862", "an", "ATE", "23.10", null, null, null, null, null, "-1.769355861954511E-13", "2.17E-14", null, null, null, ".1760350059613773", ".782188276222671", ".9492979457644368", "1.022624642699792", "337.4487069779597", "274.1217583418457", 312, "5222", "0"], ["613995 (2008 NP3)", "613995", "an", "APO", "22.85", "0.193", "0.023", null, null, null, "-2.25410652826114E-13", "7.132E-15", null, null, null, ".3339629410225108", ".669308161266832", "1.004911291714555", "1.429823552083366", "78.32212900114219", "328.170103583571", 165, "6139", "0"], ["614134 (2008 TC4)", "614134", "an", "ATE", "21.65", null, null, null, null, null, "6.499408924418679E-14", "1.591E-14", null, null, null, ".5544325301131283", ".3477036239251825", ".7803613311659926", "10.64636513637541", "212.5309621192919", "324.3554176035126", 180, "4726", "0"], ["620071 (2011 WN15)", "620071", "an", "APO", "19.64", null, null, "2.9656", null, null, "2.010066381231611E-14", "8.618E-15", null, null, null, ".8581549283576654", ".1726019470245828", "1.216834289877919", "33.40895165102722", "75.51306164972407", "218.6107211680107", 288, "2981", "0"], ["620082 (2014 QL433)", "620082", "an", "APO", "19.88", null, null, null, null, null, "3.762927057125795E-14", "3.577E-14", null, null, null, ".7158556206499503", ".5945833900872486", "2.092539685097046", "4.425542996973029", "322.450161101093", "260.7655642114556", 366, "4398", "0"], ["628250 (2014 QL390)", "628250", "an", "AMO", "22.25", null, null, null, null, null, "-1.455192697207475E-13", "3.386E-14", null, null, null, ".4031046692561539", "1.244124901321289", "2.084326744139329", "3.59103922400658", "288.2938666809479", "34.54113268243886", 131, "7642", "0"], ["664078 (2008 DL5)", "664078", "an", "APO", "22.11", null, null, null, null, null, "-1.128340040183053E-13", "1.388E-14", null, null, null, ".4734525882256438", ".5769399044915851", "1.095703618687283", "18.63801229122011", "163.6875932981262", "243.9844827694518", 140, "5858", "0"], ["665390 (2009 HD82)", "665390", "an", "APO", "21.69", null, null, null, null, null, "-5.029892364171624E-14", "1.348E-14", null, null, null, ".4766416531439605", ".6561741749050407", "1.2537760768446", "5.801491078706569", "191.1881267676177", "147.9970838752623", 204, "5139", "0"], ["674590 (2015 RH2)", "674590", "an", "APO", "22.00", null, null, "10.672", null, null, "-1.267380019763368E-13", "3.802E-14", null, null, null, ".266551997338045", ".8932609183161383", "1.2178926318896", "5.355769436376213", "332.3714088102308", "115.3972938480959", 401, "3146", "0"], ["678964 (2018 CC14)", "678964", "an", "APO", "22.40", null, null, null, null, null, "9.405452289239728E-14", "2.982E-14", null, null, null, ".54575214678675", ".9450450855048868", "2.080461313839668", "5.888408239739527", "200.3644361907687", "343.065632841078", 97, "4517", "0"], ["679648 (2019 XS)", "679648", "an", "APO", "23.85", null, null, "2.35", null, null, "-1.665390995932376E-13", "1.634E-14", null, null, null, ".3264332858126502", ".6776201653831709", "1.006017891190944", "4.446461001402995", "49.44965636927756", "250.5468308184272", 137, "8648", "0"], ["741081 (2005 LW3)", "741081", "an", "APO", "21.67", null, null, "3.6", null, null, "-6.122367109744123E-14", "1.432E-14", null, null, null, ".4637038912853032", ".7716018505987851", "1.438760860018226", "6.020492256256797", "59.57629169999571", "288.6554791009256", 133, "6426", "0"], ["745311 (2010 XC15)", "745311", "an", "ATE", "21.48", null, null, "2.673", null, null, "-1.474366261926964E-13", "3.935E-14", null, null, null, ".4198619979451758", ".4249074364315348", ".7324247591547713", "8.240083167048816", "94.39929645552108", "158.1212464687955", 279, "4406", "0"], ["747011 (2012 PG6)", "747011", "an", "ATE", "20.24", null, null, "10.58", null, null, "6.59701392436208E-14", "6.014E-15", null, null, null, ".6160480296887064", ".3214736353122879", ".8372756494820156", "6.531207784260419", "311.8721657721437", "169.9321927473364", 480, "8424", "0"], ["756476 (2019 NC1)", "756476", "an", "ATE", "21.40", null, null, "13.91", null, null, "-7.74988826240744E-14", "2.573E-14", null, null, null, ".1276524788804191", ".8651160123168586", ".9917102890446214", "6.807094924719801", "310.4676355175093", "144.3909435254649", 1211, "4018", "0"], ["762379 (2011 CG2)", "762379", "an", "APO", "21.41", null, null, "10.813", null, null, "-1.071239412456042E-13", "2.326E-14", null, null, null, ".1585213719905477", ".9909250148673427", "1.177599741554234", "2.756876753665433", "293.1544420357432", "283.9557420340637", 450, "5155", "0"], ["794904 (2007 SQ6)", "794904", "an", "APO", "22.30", null, null, null, null, null, "9.187537039302234E-14", "7.108E-14", null, null, null, ".1465344653397579", ".8914619922896877", "1.044520201562178", "9.061083671639683", "191.2080051802594", "284.8154559344019", 376, "6490", "1"], ["796120 (2009 EM1)", "796120", "an", "AMO", "23.00", null, null, null, null, null, "-2.54872056585863E-13", "3.063E-14", null, null, null, ".554529475489983", "1.126637346024755", "2.529095156776015", "17.99888189973075", "347.5562193476147", "186.1336472949352", 125, "5851", "0"], ["808862 (2018 UY)", "808862", "an", "APO", "20.76", null, null, null, null, null, "-7.848152686632087E-14", "2.688E-14", null, null, null, ".5313587412774383", ".5853197457470257", "1.248971862491387", "1.746258344018557", "72.43649681481048", "114.5981392330589", 258, "6631", "0"], ["827103 (2000 CR101)", "827103", "an", "AMO", "20.29", null, null, null, null, null, "-5.085637029844193E-14", "1.631E-14", null, null, null, ".2460318220063558", "1.277980402433074", "1.695005757184419", ".5970650274481576", "333.5486014515444", "153.2902742526391", 245, "9355", "0"], ["827991 (2002 XQ40)", "827991", "an", "APO", "22.40", null, null, null, null, null, "-9.317319340725463E-14", "5.883E-15", null, null, null, ".3511781181097253", ".697582786132858", "1.075152989755098", "2.189632073991004", "270.067107398931", "73.29916932702969", 210, "7020", "0"], ["829223 (2006 CT)", "829223", "an", "APO", "22.28", null, null, "16.69", null, null, "-8.992422595940198E-14", "4.89E-15", null, null, null, ".2306294483519664", ".843719567133671", "1.096636159684534", "2.741637443027264", "285.4368331427037", "82.78938352365802", 137, "11315", "0"], ["836356 (2012 OQ)", "836356", "an", "APO", "21.88", null, null, null, null, null, "2.209383245503963E-13", "5.443E-14", null, null, null, ".3948303170070768", ".7200967880661929", "1.189908893824434", "7.097178403101129", "293.9852591910164", "100.8380929666669", 467, "4752", "0"], ["837610 (2013 RE6)", "837610", "an", "APO", "21.49", null, null, null, null, null, "9.192478349409363E-14", "9.078E-15", null, null, null, ".2000518212070413", ".8482125065997695", "1.060334318004995", "10.43258056438911", "192.288253342574", "344.9409744223454", 180, "9064", "0"], ["847431 (1994 CJ1)", "847431", "an", "APO", "21.51", null, null, "30", null, null, "-9.836854491280442E-14", "5.902E-15", null, null, null, ".3253784825619501", "1.00539063585533", "1.490303243918772", "2.307972493371933", "171.9926295362655", "65.38213544147999", 222, "11555", "0"], ["867840 (2016 AO131)", "867840", "an", "APO", "24.30", null, null, "0.0123", null, null, "-5.076550751624265E-14", "1.543E-14", null, null, null, ".2507993276639294", ".9804902903817148", "1.308715176835685", "4.521326022566805", "125.9291962834551", "306.875210686116", 152, "4533", "0"], ["875163 (1998 SH2)", "875163", "an", "APO", "20.88", "0.383", "0.058", null, null, null, "-6.960694820150765E-13", "4.9E-14", null, null, null, ".7137851249319995", ".7850306380528732", "2.742801672576806", "2.425778407997904", "6.073649319089816", "268.7210767774267", 394, "9900", "0"], ["875181 (1999 VR6)", "875181", "an", "APO", "21.05", null, null, null, null, null, "-3.761346361319891E-14", "7.047E-15", null, null, null, ".7613393462154155", ".521554975714843", "2.185341267796909", "8.62586658024372", "211.564860372234", "295.604921182566", 160, "9490", "0"], ["875272 (2002 LX)", "875272", "an", "APO", "21.27", null, null, null, null, null, "1.012479287260667E-13", "1.648E-14", null, null, null, ".6684871327112014", ".8342251699188695", "2.516418674006193", "3.241805975259226", "197.3160403825295", "345.5404929710252", 189, "8636", "0"], ["875496 (2004 PS42)", "875496", "an", "AMO", "21.21", null, null, null, null, null, "5.98522122129631E-14", "1.642E-14", null, null, null, ".1675167596063911", "1.034265173911724", "1.242385580546594", "23.19467183524088", "304.2876958604792", "323.5760373604894", 162, "7808", "0"], ["875759 (2005 XT77)", "875759", "an", "ATE", "21.42", null, null, null, null, null, "6.432383718413892E-14", "1.39E-14", null, null, null, ".2664148345032103", ".6170573089733433", ".8411529267436415", "17.21877853837978", "84.77615851786722", "150.026624120302", 125, "7267", "0"], ["876393 (2008 BP16)", "876393", "an", "ATE", "21.81", null, null, null, null, null, "-8.379373771086179E-14", "2.32E-14", null, null, null, ".6496131953025791", ".2903445116332026", ".8286399708571554", "29.18516259139886", "139.9003673467593", "155.3820356670025", 107, "6554", "1"], ["876653 (2008 UX)", "876653", "an", "ATE", "20.89", null, null, null, null, null, "-6.40930523754289E-14", "1.29E-14", null, null, null, ".6812433134066413", ".2605543204725936", ".8174081719107138", "21.74639378231316", "37.52782160168291", "158.1466183058748", 186, "6239", "0"], ["876912 (2009 BE58)", "876912", "an", "ATE", "21.71", null, null, null, null, null, "6.747634260646058E-14", "1.907E-14", null, null, null, ".5596155807233885", ".4127535142072771", ".9372573055270171", "1.866951412637401", "149.4131815016016", "121.0625314009878", 159, "6175", "0"], ["876954 (2009 FF)", "876954", "an", "APO", "21.97", null, null, null, null, null, "-3.725631440025525E-14", "1.509E-14", null, null, null, ".4682501295943856", ".7835499603546744", "1.473531079108658", ".9790441637387031", "263.3583558478957", "13.55074799452279", 598, "15195", "0"], ["877717 (2010 WT8)", "877717", "an", "APO", "22.04", null, null, null, null, null, "-1.417850275803209E-13", "4.153E-14", null, null, null, ".2838286728530913", ".824534763145528", "1.151309375132789", "4.536241114393338", "58.32716593041786", "162.1654007901494", 120, "5798", "0"], ["882844 (2016 ED157)", "882844", "an", "AMO", "24.68", null, null, null, null, null, "-1.196938787191337E-13", "2.162E-14", null, null, null, ".1533363291913697", "1.109757904968917", "1.310742320984449", "4.766665851687234", "165.7792259034661", "21.09322415140269", 122, "3341", "0"], ["883081 (2016 JE)", "883081", "an", "ATE", "21.94", null, null, null, null, null, "-1.294216422495857E-13", "2.117E-14", null, null, null, ".4720855196342956", ".4338947316038237", ".8219034478903668", "16.67641688312768", "51.34032305356485", "347.51374814812", 130, "4423", "1"], ["883607 (2016 TA56)", "883607", "an", "APO", "18.13", null, null, null, null, null, "-3.185843703887927E-12", "3.583E-13", null, null, null, ".7815565756214315", ".5884207764736904", "2.693698737545613", "32.32754328068912", "173.87593814558", "359.7022642910391", 94, "6844", "0"], ["886859 (2021 UN7)", "886859", "an", "ATE", "23.37", null, null, null, null, null, "-2.843415531191965E-13", "1.714E-14", null, null, null, ".3933230121473293", ".6061629201620288", ".9991526500906827", "20.29753577729738", "49.88614790573956", "227.2766439660342", 125, "4030", "0"], ["887324 (2004 MO3)", "887324", "an", "APO", "22.18", null, null, null, null, null, "-1.102263377737969E-13", "1.708E-14", null, null, null, ".3355378608968296", ".8182259144298655", "1.231410890520009", "2.543628330710373", "252.2783563303626", "298.3282141665709", 207, "7880", "0"], ["887773 (2007 DB61)", "887773", "an", "ATE", "23.79", null, null, null, null, null, "-2.459558138023725E-13", "4.18E-15", null, null, null, ".3649434576846992", ".5147839391747382", ".8106111895138178", "5.406825144935082", "158.979084945643", "209.28315411059", 165, "9850", "0"], ["891458 (2015 AJ44)", "891458", "an", "ATE", "22.38", null, null, null, null, null, "8.872523441972023E-14", "2.81E-14", null, null, null, ".4763610009174352", ".4643998700699123", ".8868702882779134", "6.322705856598936", "116.9551189577398", "192.6787545124838", 99, "4079", "0"], ["893065 (2016 CL136)", "893065", "an", "ATE", "21.30", "0.123", "0.320", null, null, null, "5.964724369661219E-14", "4.534E-15", null, null, null, ".6223170858057928", ".2755648792559056", ".7296196595067793", "21.52961982669297", "316.415100953713", "23.51980161187023", 291, "3662", "0"], ["894048 (2017 BM123)", "894048", "an", "APO", "23.81", null, null, "2.1503", null, null, "-1.230048591681054E-13", "1.779E-14", null, null, null, ".2974296273763938", ".922198801945783", "1.312607018286324", "7.820714966463812", "151.2890357221488", "59.78236365848405", 389, "3317", "0"], ["895359 (2020 FW6)", "895359", "an", "APO", "23.25", null, null, null, null, null, "-1.125977174302025E-13", "1.835E-14", null, null, null, ".2988013074833648", ".919410831125802", "1.311198724324475", "25.54562708645286", "194.8337871576537", "94.18839167527169", 94, "5474", "0"], [" (1994 WR12)", "1994 WR12", "au", "ATE", "22.41", null, null, null, null, null, "-2.218045691178069E-13", "1.2E-14", null, null, null, ".3975670477491596", ".4558321574068094", ".7566520983019043", "6.841066076854746", "62.4442620575325", "206.1217724887331", 153, "11345", "0"], [" (1995 CR)", "1995 CR", "au", "ATE", "21.76", null, null, "2.66", null, null, "-4.790734824802164E-14", "1.809E-15", null, null, null, ".8684421562684053", ".119314112224496", ".9069327137036504", "4.082994080303726", "342.3042083851241", "322.8506465593478", 264, "11333", "0"], [" (1995 FO)", "1995 FO", "au", "APO", "20.78", null, null, null, null, null, "8.018197243945782E-14", "1.143E-14", null, null, null, ".3644963528157697", ".9459480658073728", "1.488501395701897", "11.23796767486396", "180.7070766303525", "272.6760122953635", 237, "10607", "0"], [" (1996 AE2)", "1996 AE2", "au", "APO", "20.23", null, null, null, null, null, "5.597298409727525E-14", "6.977E-15", null, null, null, ".2565741901312151", "1.016622763835382", "1.367483816596059", "37.3669214284295", "118.9323779464349", "305.9374961693717", 311, "8785", "0"], [" (1996 GQ)", "1996 GQ", "au", "APO", "23.19", "0.208", "0.024", null, null, null, "-1.744238377794917E-13", "4.213E-14", null, null, null, ".4948098942801835", "1.005086221951295", "1.989520797362421", ".8847971683057602", "85.27833130938923", "59.25609037722128", 97, "10114", "0"], [" (1997 AC11)", "1997 AC11", "au", "ATE", "20.70", null, null, null, null, null, "-5.102091232085757E-14", "1.441E-14", null, null, null, ".367981518096722", ".5771672335246788", ".9132125880030935", "31.69728385442115", "116.9167664073317", "141.5847016084835", 171, "10204", "0"], [" (1997 QK1)", "1997 QK1", "au", "APO", "20.26", null, null, null, null, null, "-3.926129109192332E-14", "2.322E-14", null, null, null, ".6463631969527488", ".9845356857855708", "2.784030613618068", "2.85161001923393", "306.4685400705967", "3.24069735224898", 720, "10305", "0"], [" (1997 YM9)", "1997 YM9", "au", "APO", "24.36", null, null, null, null, null, "1.039444221072074E-13", "1.362E-14", null, null, null, ".104013073627786", ".9819722294715759", "1.095967140332628", "7.842548048700879", "94.68649852936592", "51.78423651224426", 71, "8656", "0"], [" (1998 KY26)", "1998 KY26", "au", "APO", "25.91", "0.011", "0.52", "0.089193", "3.655395414270661E-11", "3.867E-11", "-2.196384257496804E-13", "4.866E-14", "1.686333710048786E-12", "1.121E-12", null, ".2000498225862209", ".9830266245133115", "1.228859811859051", "1.491131387730072", "84.18217649998975", "210.0032740505378", 85, "9472", "2"], [" (1998 SU4)", "1998 SU4", "au", "APO", "21.41", null, null, null, null, null, "-5.337120260240299E-14", "1.258E-14", null, null, null, ".5804243894740508", ".4816402465280623", "1.14792241122956", "23.14349954563974", "350.5525975691814", "241.8801706630493", 96, "9915", "1"], [" (1998 SD9)", "1998 SD9", "au", "ATE", "24.09", null, null, null, null, null, "-2.872474946913939E-13", "2.626E-15", null, null, null, ".5043941844272868", ".3481596396085241", ".7024930472339133", "2.987454850743877", "165.7445537770788", "7.704469740672612", 150, "7302", "0"], [" (1998 WB2)", "1998 WB2", "au", "APO", "21.85", "0.150", "0.151", "0.313", null, null, "-1.679362103795218E-14", "6.625E-15", null, null, null, ".5866777003175694", ".8151647714605194", "1.97222548139028", "2.372576709835651", "52.11701170267368", "78.86717113328565", 320, "9147", "0"], [" (1999 AO10)", "1999 AO10", "au", "ATE", "24.32", null, null, null, null, null, "-2.036861479340806E-13", "2.424E-14", null, null, null, ".1109040287099387", ".8108684204874037", ".9120145031259664", "2.579727052454163", "312.1703869551433", "7.221835036429491", 230, "9927", "1"], [" (1999 SF10)", "1999 SF10", "au", "APO", "24.36", null, null, "0.0411", null, null, "-7.411155131188154E-14", "3.189E-15", null, null, null, ".2524907965165581", ".9548073926352865", "1.277318577732316", "1.167168852473727", "22.74970676281068", "30.68209803947905", 124, "9632", "0"], [" (1999 SG10)", "1999 SG10", "au", "APO", "20.73", null, null, null, null, null, "-4.990243167402321E-14", "1.308E-14", null, null, null, ".6133791019033651", ".5621442836997633", "1.453993528200994", "23.56361365442657", "13.36716692586971", "103.4354700049198", 108, "9723", "0"], [" (1999 SH10)", "1999 SH10", "au", "APO", "22.75", null, null, "0.1264", null, null, "-6.005110031461796E-14", "1.075E-14", null, null, null, ".1308965568975472", ".9548939694520354", "1.098711525112977", "9.588551612718526", "178.4733869559779", "119.1368917188692", 99, "8388", "0"], [" (1999 UQ)", "1999 UQ", "au", "AMO", "21.87", null, null, null, null, null, "-1.1833832833544E-13", "1.18E-14", null, null, null, ".01562384947325961", "1.077009439321248", "1.094103548470714", "24.81512883594358", "211.2935547540874", "7.398567271770069", 120, "8738", "0"], [" (2000 AA6)", "2000 AA6", "au", "APO", "22.44", "0.316", "0.026", null, null, null, "1.483133228648536E-13", "1.951E-14", null, null, null, ".5192271101952429", ".61834471630619", "1.286147221315456", "2.030911994489742", "279.6435888066589", "287.821505434854", 151, "6943", "0"], [" (2000 AH205)", "2000 AH205", "au", "APO", "22.6", null, null, null, null, null, "-1.601666674202442E-13", "4.787E-14", null, null, null, ".4069909376009952", ".6806255429608282", "1.147748974033167", "2.590688297562043", "247.8858835478159", "118.1057298613469", 81, "7459", "1"], [" (2000 CK59)", "2000 CK59", "au", "APO", "24.1", null, null, null, null, null, "-1.915408158712604E-13", "2.827E-14", null, null, null, ".3114702069448145", "1.016629015140068", "1.476521459774488", "5.707706763264625", "139.1919969651541", "341.5195695160835", 70, "6523", "0"], [" (2000 EB14)", "2000 EB14", "au", "ATE", "23.43", null, null, "1.79", null, null, "-2.71033441535033E-13", "8.163E-15", null, null, null, ".4955794726837506", ".4517313830131193", ".8955452019697518", "11.57393217654259", "162.7773422000812", "139.6635841623947", 80, "8041", "1"], [" (2000 EM26)", "2000 EM26", "au", "ATE", "22.51", null, null, null, null, null, "-1.595442369801633E-13", "1.88E-14", null, null, null, ".4667852861899059", ".4357356885264149", ".8171861676750416", "3.836169296480068", "344.9045809819076", "24.42494658361711", 93, "7358", "1"], [" (2000 PN8)", "2000 PN8", "au", "APO", "22.04", null, null, null, null, null, "1.325490211403198E-13", "7.698E-15", null, null, null, ".217084172882719", ".9806844083714104", "1.252605164443181", "22.39542931240598", "142.7257314890632", "112.341948747666", 180, "7680", "0"], [" (2000 TU28)", "2000 TU28", "au", "APO", "21.05", null, null, "128.5", null, null, "-8.391874605004229E-14", "6.418E-15", null, null, null, ".1828480898831574", ".8765175327227277", "1.072649432585181", "15.59547156069973", "202.9767269745838", "280.9707912800848", 276, "7915", "0"], [" (2000 YS134)", "2000 YS134", "au", "ATE", "24.02", null, null, null, null, null, "-2.132607059526886E-13", "3.759E-14", null, null, null, ".2245159387201569", ".6641133539078227", ".8563855623438391", "3.551875916374592", "96.28585423445055", "190.3205618843789", 58, "8435", "2"], [" (2001 BX15)", "2001 BX15", "au", "APO", "21.75", null, null, null, null, null, "5.964846666006605E-14", "1.278E-14", null, null, null, ".591478067678161", ".7860261053467178", "1.924073209189356", "12.15314162577973", "107.4348164520205", "87.7778839796831", 132, "8769", "0"], [" (2001 BB16)", "2001 BB16", "au", "ATE", "23.2", null, null, null, null, null, "3.180325179453752E-13", "2.589E-14", null, null, null, ".172331682831495", ".7079835630097873", ".8553952692448524", "2.029306237456455", "122.3182322128103", "196.0774326584045", 57, "6967", "0"], [" (2001 CQ36)", "2001 CQ36", "au", "ATE", "22.74", null, null, null, null, null, "-1.515533061806756E-13", "8.879E-15", null, null, null, ".1772347039727997", ".7712697589766786", ".937411632090983", "1.255032271736787", "30.53717701670867", "344.8851865310373", 159, "7751", "0"], [" (2001 EC16)", "2001 EC16", "au", "APO", "22.38", null, null, "200", null, null, "-1.204935401478204E-13", "2.003E-14", null, null, null, ".3639389259861158", ".8557093956640371", "1.345325835244177", "4.712318408997012", "175.460646024651", "70.63506401042555", 220, "9160", "0"], [" (2001 OT)", "2001 OT", "au", "ATE", "21.7", null, null, null, null, null, "7.7410277328879E-14", "1.88E-14", null, null, null, ".3227759300497082", ".6325235406271495", ".933994476412477", "12.05919482476244", "295.773799535096", "143.0148445521692", 98, "6616", "0"], [" (2001 QJ142)", "2001 QJ142", "au", "APO", "23.97", null, null, null, null, null, "-8.456995187814002E-14", "3.087E-15", null, null, null, ".08692819219797662", ".9707251707482936", "1.063142200266872", "3.089899011562213", "183.6951257639889", "63.03182723293512", 154, "8462", "0"], [" (2001 QM142)", "2001 QM142", "au", "APO", "22.54", null, null, null, null, null, "-2.404683652260076E-13", "3.272E-14", null, null, null, ".4282659263724726", ".7060076390732856", "1.234853180244833", "5.851727990945097", "151.2162837002136", "292.7651783329238", 40, "8027", "0"], [" (2002 AY1)", "2002 AY1", "au", "ATE", "20.86", null, null, null, null, null, "6.173216702356572E-14", "1.049E-15", null, null, null, ".4370748576322792", ".438624486630762", ".7791879481272812", "29.89760192782307", "287.8352684057795", "323.8144250707884", 270, "8801", "0"], [" (2002 BF25)", "2002 BF25", "au", "APO", "22.62", "0.152", "0.100", null, null, null, "1.663053400573732E-13", "3.409E-15", null, null, null, ".2215130418677884", ".8365566627697314", "1.074593034643565", "6.312905097668864", "305.7644352184544", "77.88370696109637", 147, "7315", "0"], [" (2002 EW8)", "2002 EW8", "au", "APO", "23.84", null, null, null, null, null, "1.614025426408538E-13", "3.672E-14", null, null, null, ".4600436976392205", ".9974365104435826", "1.84725413164477", "11.37684748426207", "176.4961141910341", "328.6533144716004", 112, "5518", "0"], [" (2002 GD10)", "2002 GD10", "au", "AMO", "22.71", null, null, "0.7356", null, null, "-2.484513205199073E-13", "5.02E-14", null, null, null, ".1304977280774213", "1.058032219101122", "1.216825134639016", "19.24126957757939", "205.8326374871104", "343.0114877998438", 97, "8610", "0"], [" (2002 JR100)", "2002 JR100", "au", "ATE", "24.36", "0.028", "0.441", null, null, null, "-3.004664763348847E-13", "1.024E-14", null, null, null, ".2990338348611741", ".6472554664388283", ".9233761893637757", "3.704973682148215", "202.2070860320714", "254.2169399261172", 165, "8776", "0"], [" (2002 LY1)", "2002 LY1", "au", "ATE", "22.48", null, null, "3.204", null, null, "-1.389402054202651E-13", "6.792E-14", null, null, null, ".3786713361559262", ".5937074045328944", ".9555448494194835", "2.894758730700963", "247.7597019294918", "134.3432983464234", 188, "5124", "0"], [" (2002 TB70)", "2002 TB70", "au", "APO", "21.79", null, null, null, null, null, "-7.649035272036046E-14", "2.522E-14", null, null, null, ".1327878891799713", ".9835543955577566", "1.134156665118198", "16.64738767910127", "194.9827033199835", "350.854301094148", 97, "8735", "0"], [" (2002 VU114)", "2002 VU114", "au", "APO", "22.95", null, null, null, null, null, "-1.036522204152512E-13", "1.309E-14", null, null, null, ".2857807224338414", ".8434194979557532", "1.18089713404246", "2.773217864716534", "352.7442457591318", "151.3383759043414", 66, "8586", "0"], [" (2003 AF23)", "2003 AF23", "au", "ATE", "21.01", null, null, "19.89", null, null, "-6.395791393664649E-14", "3.179E-15", null, null, null, ".4259343295987448", ".5019814366809053", ".8744320773092648", "23.23252845571351", "286.7397078072867", "43.94557146400768", 463, "8407", "0"], [" (2003 BM4)", "2003 BM4", "au", "APO", "24.95", null, null, null, null, null, "2.892132589166791E-13", "5.804E-14", null, null, null, ".3376381354217314", ".7943801187485411", "1.199314394789817", "9.631010456975375", "125.3325963028384", "84.7061647768751", 98, "7677", "0"], [" (2003 BN4)", "2003 BN4", "au", "AMO", "24.26", null, null, null, null, null, "-1.886004328357872E-13", "1.039E-14", null, null, null, ".1715078916734347", "1.052332393193461", "1.270177932435616", "5.588205874062293", "307.4998039343121", "193.4396045426681", 114, "7356", "0"], [" (2003 FF5)", "2003 FF5", "au", "APO", "23.3", null, null, null, null, null, "-7.145931826477071E-14", "2.293E-14", null, null, null, ".3040280766481352", ".9531639586949548", "1.369543693809413", "6.337853456389355", "192.7182302508489", "54.25430816239474", 158, "5978", "0"], [" (2003 FY6)", "2003 FY6", "au", "ATE", "22.61", null, null, null, null, null, "-6.972817635975827E-14", "3.725E-15", null, null, null, ".5820771520064114", ".3050706052227279", ".7299687171623794", "6.594880558734934", "359.0862415132121", "29.74551867030222", 204, "7332", "0"], [" (2003 GQ22)", "2003 GQ22", "au", "ATE", "21.34", null, null, null, null, null, "6.211014816186056E-14", "1.219E-14", null, null, null, ".1814005845365652", ".7140961037550124", ".872338887941595", "17.02469090797109", "199.4568544787162", "168.6904484197482", 318, "8058", "0"], [" (2003 HM)", "2003 HM", "au", "ATE", "22.11", null, null, null, null, null, "-1.167683803864719E-13", "1.909E-15", null, null, null, ".2696001277306563", ".5943629464539587", ".8137500689961515", "26.27292857744818", "30.43707013722109", "19.36370920623371", 147, "8053", "0"], [" (2003 LN6)", "2003 LN6", "au", "ATE", "24.74", null, null, null, null, null, "7.444587804393705E-13", "1.55E-14", null, null, null, ".2109227863634637", ".6752676156280686", ".8557687434871355", ".6588092166458214", "213.5652101924146", "212.3877634020604", 151, "8413", "0"], [" (2003 MS2)", "2003 MS2", "au", "APO", "21.21", null, null, "7", null, null, "-6.5061593542812E-14", "1.98E-14", null, null, null, ".1263176583948686", ".9105404812719797", "1.042187117573113", "20.02564562696427", "100.822819533178", "254.5066092917944", 282, "6896", "0"], [" (2003 MK4)", "2003 MK4", "au", "APO", "20.86", null, null, null, null, null, "-7.029144891951253E-14", "1.896E-14", null, null, null, ".1813241484864768", ".8846632019659039", "1.080602536804264", "22.3161858738638", "282.5741382967352", "109.7230111306671", 276, "7155", "0"], [" (2003 TG2)", "2003 TG2", "au", "ATE", "21.36", null, null, null, null, null, "-8.262039983176718E-14", "1.66E-14", null, null, null, ".3159484310127178", ".6209609736034596", ".9077692410277981", "25.45560596412055", "200.6427629209122", "355.1767620637123", 79, "7323", "0"], [" (2003 UY12)", "2003 UY12", "au", "ATE", "23.27", null, null, null, null, null, "-1.056595680201575E-13", "4.374E-15", null, null, null, ".5945163936370573", ".2842799607563177", ".70108866621321", "16.40273096341311", "22.85455021443036", "200.6802135371459", 93, "7323", "1"], [" (2003 YS17)", "2003 YS17", "au", "ATE", "21.6", null, null, null, null, null, "-8.775179470619833E-14", "2.389E-14", null, null, null, ".3127734435410947", ".6390682024008112", ".9299236131003999", "6.528265389511525", "98.90576949148874", "134.6522505907856", 209, "6228", "0"], [" (2003 YL118)", "2003 YL118", "au", "APO", "21.83", null, null, null, null, null, "-1.749731892466972E-13", "1.066E-14", null, null, null, ".4863865544859676", ".5809280428707967", "1.131060816154053", "7.606655622695325", "278.6727260642972", "65.73126874455295", 122, "8114", "0"], [" (2004 BM11)", "2004 BM11", "au", "APO", "21.96", null, null, null, null, null, "9.022581951936564E-14", "2.657E-14", null, null, null, ".524264173268733", ".6885943664652313", "1.447430123555112", "3.618391912618034", "42.47642819790855", "175.5724253608871", 51, "7172", "0"], [" (2004 FH)", "2004 FH", "au", "ATE", "26.41", null, null, "0.0504", null, null, "1.691205920439038E-13", "4.113E-14", null, null, null, ".288877607468105", ".5825882147948459", ".8192516800386311", ".0548629044584906", "258.1426126090025", "69.24615823895199", 273, "6184", "1"], [" (2004 JN1)", "2004 JN1", "au", "APO", "23.74", null, null, null, null, null, "-3.787124748067721E-13", "2.806E-14", null, null, null, ".1755878983713882", ".8947247747873104", "1.085288259378771", "1.502676801512792", "143.8083943980351", "1.999297213562696", 111, "6244", "0"], [" (2004 KG1)", "2004 KG1", "au", "ATE", "23.96", null, null, null, null, null, "-3.10300305540414E-13", "2.108E-14", null, null, null, ".4072489660557951", ".4920833377926629", ".8301686705096196", "1.907753928038832", "242.421901733085", "214.2282220895356", 113, "8111", "0"], [" (2004 XG)", "2004 XG", "au", "ATE", "24.16", null, null, null, null, null, "-3.539015115861545E-14", "9.466E-15", null, null, null, ".2987346927666343", ".5866414544447817", ".8365470933664202", "1.19833815500243", "283.6197563055107", "2.451771842725075", 96, "7373", "1"], [" (2005 EY169)", "2005 EY169", "au", "APO", "22.29", null, null, null, null, null, "-1.127286726950284E-13", "2.819E-14", null, null, null, ".2324735819134966", "1.002816399928751", "1.306556199627424", "20.88424348729876", "346.8720225687927", "227.8240328448262", 168, "6733", "0"], [" (2005 MF5)", "2005 MF5", "au", "ATE", "21.73", null, null, null, null, null, "6.829659646114001E-14", "1.973E-14", null, null, null, ".3817796021700421", ".4969056604818295", ".8037678184447482", "29.52041356030179", "98.03440661556409", "349.7574785170945", 95, "6586", "1"], [" (2005 NE21)", "2005 NE21", "au", "ATE", "21.24", null, null, null, null, null, "5.474608557411132E-14", "4.736E-15", null, null, null, ".4965338598779266", ".397312545846832", ".7891544518773341", "10.63365709286485", "289.6731620020973", "194.7800368735308", 189, "7707", "0"], [" (2005 NJ63)", "2005 NJ63", "au", "ATE", "21.03", null, null, null, null, null, "6.565494570200545E-14", "1.478E-14", null, null, null, ".4223162230895571", ".5021423630871027", ".8692339704823472", "26.54962894306957", "120.8330600432819", "1.746043704849555", 106, "7692", "0"], [" (2005 QQ87)", "2005 QQ87", "au", "APO", "22.84", null, null, null, null, null, "-6.803966731147511E-14", "2.491E-14", null, null, null, ".301548039494678", ".6995538646073749", "1.001577637639181", "33.96909293863152", "154.9875705740913", "54.87009637895846", 89, "6204", "0"], [" (2005 RZ2)", "2005 RZ2", "au", "APO", "23.3", null, null, null, null, null, "-1.200592407121365E-13", "1.54E-14", null, null, null, ".1032176840356221", ".9919946752976775", "1.106171093740749", "13.16151167876101", "154.929985252467", "280.2838920697983", 69, "7650", "0"], [" (2005 TG50)", "2005 TG50", "au", "ATE", "24.83", null, null, null, null, null, "-2.086477460591929E-13", "4.993E-14", null, null, null, ".1351130321331674", ".7980051619614209", ".9226698882162951", "2.394124905303182", "344.0142709063093", "201.5870813903474", 77, "5849", "0"], [" (2005 VL1)", "2005 VL1", "au", "ATE", "26.45", null, null, null, "-8.298571098423042E-10", "7.589E-10", "-8.320601552689281E-13", "5.612E-13", "-2.41448873986245E-11", "3.947E-12", null, ".2246224084495054", ".6909951496742942", ".8911724522403802", ".235612789151307", "37.8779507443325", "227.8003035717325", 79, "5874", "4"], [" (2005 YU128)", "2005 YU128", "au", "ATE", "25.26", null, null, null, null, null, "-9.17069976131174E-13", "3.004E-13", null, null, null, ".3218717253810619", ".5232246097627619", ".7715717355345173", "7.713773944294272", "100.4200911542844", "190.1390913643583", 39, "6962", "2"], [" (2006 BE55)", "2006 BE55", "au", "APO", "21.98", null, null, "5.61", null, null, "-8.296604414923711E-14", "3.876E-14", null, null, null, ".4242406310511641", ".68776018290583", "1.194527123651455", "2.400229527629266", "125.2466336837032", "126.468841067859", 213, "6243", "0"], [" (2006 CW)", "2006 CW", "au", "AMO", "22.55", null, null, null, null, null, "6.469258677478226E-14", "1.219E-14", null, null, null, ".4899327376172969", "1.137168168670265", "2.229447472002326", "6.507480853857251", "144.3552547920881", "42.16816803041013", 161, "7416", "0"], [" (2006 GB1)", "2006 GB1", "au", "APO", "24.10", null, null, null, null, null, "-7.167904315709418E-14", "2.247E-14", null, null, null, ".2884152582744646", ".8063190153872233", "1.13313140109211", ".8367782577061759", "76.09264634342684", "220.85238610418", 76, "6808", "0"], [" (2006 HJ18)", "2006 HJ18", "au", "APO", "21.88", null, null, null, null, null, "-1.416063818498666E-13", "4.353E-14", null, null, null, ".3173248656212392", ".7400462581061444", "1.084038689617122", "10.25128369077467", "75.16224649745158", "28.94133160373571", 75, "6618", "0"], [" (2006 RH120)", "2006 RH120", "au", "APO", "29.5", null, null, "0.04583", "1.424887854561484E-10", "7.995E-12", "-4.616415596097852E-11", "6.901E-12", "-1.181462801710624E-11", "3.431E-12", null, ".02449745482749494", "1.007921244496134", "1.033232818800996", ".5943471837144731", "51.21770220310715", "9.951749071640322", 136, "284", "2"], [" (2006 UE17)", "2006 UE17", "au", "APO", "21.93", null, null, null, null, null, "-1.858282996710205E-13", "6.461E-14", null, null, null, ".3326208507198505", ".7850057850484979", "1.176251589362993", "12.11632128107306", "27.63493375870581", "115.381410860161", 105, "7147", "0"], [" (2006 WB)", "2006 WB", "au", "ATE", "23.18", null, null, null, null, null, "-7.306461675607367E-14", "4.885E-15", null, null, null, ".176535604578773", ".7033018430138839", ".8540768088146952", "4.897568649456835", "64.70062276482392", "159.437249732635", 330, "6600", "0"], [" (2007 AM)", "2007 AM", "au", "ATE", "21.82", null, null, null, null, null, "-7.402370109620884E-14", "1.714E-14", null, null, null, ".4670678578565376", ".4256545956041498", ".7987031780296825", "11.71770998605702", "107.082181125835", "172.5586272044884", 98, "5501", "1"], [" (2007 CT26)", "2007 CT26", "au", "ATE", "23.55", null, null, null, null, null, "-1.417442521373126E-13", "3.775E-14", null, null, null, ".3868625038936767", ".5242872115268581", ".8550891355630648", "2.891006015847698", "321.5169991737324", "44.61926785428723", 118, "6963", "0"], [" (2007 DG8)", "2007 DG8", "au", "APO", "25.09", null, null, null, null, null, "-4.185802790085204E-13", "2.924E-14", null, null, null, ".3735608979230221", ".8503300677923769", "1.357402603019322", "3.052376413064834", "131.3989614486663", "90.62851407181485", 74, "6948", "0"], [" (2007 EC)", "2007 EC", "au", "ATE", "22.23", null, null, null, null, null, "-8.767784993242775E-14", "1.946E-14", null, null, null, ".1960430970370436", ".746621273879005", ".9286832056884606", "5.846167873442658", "307.479062815887", "46.36925100505034", 258, "6212", "0"], [" (2007 EG)", "2007 EG", "au", "ATE", "24.58", null, null, null, null, null, "-4.179161683853932E-13", "2.187E-14", null, null, null, ".3682943291677062", ".4769268944839937", ".7549827657168665", "3.106142917725418", "165.4225044847807", "169.5934734814824", 148, "6945", "0"], [" (2007 PB8)", "2007 PB8", "au", "ATE", "21.36", null, null, null, null, null, "-7.671593827901414E-14", "1.177E-14", null, null, null, ".4450986896791374", ".4885671359209157", ".8804577081254498", "16.56013959320797", "323.1198107155682", "169.4646355368832", 100, "8787", "0"], [" (2007 RY19)", "2007 RY19", "au", "APO", "22.75", null, null, null, null, null, "-1.280260062174087E-13", "2.857E-14", null, null, null, ".2534588646559462", ".8266532657220126", "1.107311073141386", "12.63111557294664", "352.4142840565658", "99.20382235027179", 67, "5111", "0"], [" (2007 SW2)", "2007 SW2", "au", "ATE", "21.46", null, null, null, null, null, "5.805073645807451E-14", "1.195E-14", null, null, null, ".4655102264442493", ".487353711764403", ".9118111063608009", "8.564759295060753", "339.6005415234775", "174.035999340839", 116, "6901", "0"], [" (2007 TF15)", "2007 TF15", "au", "AMO", "24.69", null, null, null, null, null, "-2.275085092812887E-13", "2.088E-14", null, null, null, ".04444231453404871", "1.059247563177669", "1.108512420849983", "4.255717214016712", "193.0461558612563", "28.66862458020852", 76, "5112", "0"], [" (2007 TQ24)", "2007 TQ24", "au", "ATE", "22.06", null, null, "52.3", null, null, "7.719273743453483E-14", "8.783E-15", null, null, null, ".5394045424247055", ".3653924942075309", ".7933045977723291", "10.58902230046886", "183.4719892637744", "30.00183393840884", 177, "6252", "0"], [" (2007 TF68)", "2007 TF68", "au", "AMO", "22.62", null, null, null, null, null, "-2.024966032285797E-13", "1.429E-14", null, null, null, ".2655771935989159", "1.033049333019468", "1.406613906887987", "26.19525340344726", "19.29792107696824", "62.54480006735791", 167, "7329", "0"], [" (2007 US12)", "2007 US12", "au", "ATE", "22.13", null, null, null, null, null, "-1.151552011291422E-13", "3.521E-14", null, null, null, ".5146568520481739", ".4398010019996683", ".9061650583832324", "8.802613545359186", "211.0605121792505", "44.69495641761134", 98, "5148", "0"], [" (2007 WQ3)", "2007 WQ3", "au", "AMO", "21.16", null, null, null, null, null, "-7.008261023842922E-14", "1.967E-14", null, null, null, ".1800330901508697", "1.123985717502779", "1.37076960545833", "17.21816568265807", "216.5280150818027", "248.6982112541444", 163, "5891", "0"], [" (2007 XB23)", "2007 XB23", "au", "APO", "27.1", null, null, null, null, null, "-2.000032207129024E-13", "6.075E-14", null, null, null, ".04165324840351066", ".9848496047902744", "1.027654763945967", "8.592095479634876", "259.7502775644594", "198.5519604387989", 22, "6208", "0"], [" (2008 CO)", "2008 CO", "au", "AMO", "22.59", null, null, null, null, null, "-9.415122175596613E-14", "1.877E-14", null, null, null, ".01157240579654132", "1.162435889371", "1.176045565894757", "8.071296910127355", "319.1901987337616", "79.9807206035738", 137, "6801", "0"], [" (2008 CE119)", "2008 CE119", "au", "APO", "25.55", null, null, null, null, null, "-2.033197184354903E-13", "5.018E-14", null, null, null, ".1760825053079252", ".9952024081846674", "1.207890856300615", "7.726239719076572", "147.215548198715", "50.33084221165274", 62, "6027", "0"], [" (2008 DB)", "2008 DB", "au", "APO", "25.8", null, null, null, null, null, "-1.040633972165397E-12", "1.421E-13", null, null, null, ".2328987575765863", ".8081325540836828", "1.053488782693981", "4.224047424511192", "141.4248359641689", "274.6548316578374", 74, "4769", "1"], [" (2008 GU20)", "2008 GU20", "au", "AMO", "23.16", null, null, null, null, null, "7.913576904888271E-14", "1.628E-14", null, null, null, ".4120353966448162", "1.131630430011186", "1.924657408887553", "5.621098943047261", "203.4286547596791", "349.9355134000352", 84, "8778", "0"], [" (2008 KV2)", "2008 KV2", "au", "ATE", "21.25", null, null, "0.038", null, null, "-4.067445634887838E-14", "8.211E-15", null, null, null, ".4120400764361393", ".4998221002519349", ".8500955255969027", "5.040454750435784", "66.76837684220921", "347.8537556083366", 337, "6582", "0"], [" (2008 LG2)", "2008 LG2", "au", "ATE", "25.34", null, null, null, null, null, "-5.797117314154492E-13", "1.192E-13", null, null, null, ".2295295706991057", ".6555968744343992", ".8509046544839775", "3.055397926433749", "86.14101601000198", "337.0707665638855", 119, "5490", "0"], [" (2008 UW91)", "2008 UW91", "au", "APO", "22.15", null, null, null, null, null, "-1.341092889611565E-13", "3.682E-14", null, null, null, ".57159567772042", ".4914182742335166", "1.147089907073377", "7.318547319151853", "247.952595828983", "282.8870069428305", 104, "5870", "0"], [" (2008 WT62)", "2008 WT62", "au", "ATE", "23.11", null, null, null, null, null, "-3.064384626837058E-13", "6.086E-14", null, null, null, ".3538531414139012", ".5713103416511417", ".8841803284493023", "18.19415369561274", "57.96624811216494", "148.3692567304794", 43, "3645", "1"], [" (2009 BD)", "2009 BD", "au", "APO", "28.1", null, null, null, "5.604736985528152E-11", "8.508E-12", "-1.14638955920583E-12", "8.37E-14", null, null, null, ".05190451794847847", "1.006986073126903", "1.062114620510534", "1.26723261398135", "253.1521631413366", "316.6261297702966", 180, "885", "1"], [" (2009 HG)", "2009 HG", "au", "AMO", "24.34", null, null, null, null, null, "-1.638466362993393E-13", "4.574E-14", null, null, null, ".2225582508532401", "1.061403855819123", "1.365251939433419", "3.639603527633645", "230.9366736236051", "356.7502331925284", 101, "5819", "0"], [" (2009 JR2)", "2009 JR2", "au", "AMO", "22.95", null, null, null, null, null, "-1.456505277575069E-13", "3.391E-14", null, null, null, ".1790072156680521", "1.026098938978224", "1.249826988203281", "19.73383724900736", "52.86411065424161", "255.3114273152854", 70, "5297", "0"], [" (2009 MW)", "2009 MW", "au", "ATE", "20.86", null, null, null, null, null, "-5.200436863110344E-14", "1.406E-14", null, null, null, ".299296304959445", ".6395763373703891", ".9127629009197276", "21.03147566467207", "87.53601418311804", "23.62821854645806", 146, "5140", "0"], [" (2009 OS5)", "2009 OS5", "au", "AMO", "24.4", null, null, null, null, null, "-3.260323694904692E-13", "3.583E-14", null, null, null, ".09929392882962777", "1.033966510734172", "1.147951083965318", "1.710996614567352", "144.3288085928196", "122.8493743724867", 113, "4071", "0"], [" (2009 UG)", "2009 UG", "au", "ATE", "23.50", null, null, "5.88", null, null, "9.419279723194275E-14", "3.527E-15", null, null, null, ".3754001958524337", ".4922156888875206", ".7880497009749799", "5.020258708666416", "13.68865795835183", "201.8912761428385", 279, "5114", "0"], [" (2009 WB105)", "2009 WB105", "au", "ATE", "23.50", null, null, null, null, null, "1.440689781795952E-13", "6.01E-15", null, null, null, ".2525153394477121", ".6170700063887308", ".8255286549061773", "38.40263626590737", "242.5841277227446", "347.439806061846", 196, "5480", "0"], [" (2010 FX9)", "2010 FX9", "au", "APO", "24.06", "0.030", "0.425", null, null, null, "-2.347948792814765E-13", "2.178E-14", null, null, null, ".3669034538582889", ".7163077591655912", "1.131435266123304", "3.771858995623022", "9.814264807150467", "75.38667974154745", 107, "6014", "0"], [" (2010 GD35)", "2010 GD35", "au", "ATE", "24.62", null, null, null, null, null, "1.896389263589951E-13", "1.278E-14", null, null, null, ".4810121235389025", ".3968188238002381", ".764601336173954", "7.820267620354581", "24.97154756591007", "14.00128481214954", 70, "4380", "1"], [" (2010 RF12)", "2010 RF12", "au", "APO", "28.42", null, null, null, "3.410408812498951E-11", "5.822E-11", "-2.121587352247006E-13", "2.125E-13", "-1.507549026996071E-11", "1.415E-12", null, ".188308686454983", ".8615539352960596", "1.061430522809552", ".8827508322867568", "163.6861833546806", "267.4411553649549", 339, "4375", "2"], [" (2010 VQ)", "2010 VQ", "au", "ATE", "27.72", null, null, null, null, null, "-8.542597525917424E-13", "5.56E-14", null, null, null, ".1974095129802564", ".6910794444458552", ".8610610960666106", ".345769747227788", "27.49476042300465", "199.2362030844427", 61, "4411", "2"], [" (2010 VK139)", "2010 VK139", "au", "ATE", "23.71", "0.055", "0.196", "0.0299522", null, null, "-9.815438165570491E-14", "3.809E-14", null, null, null, ".2821450465507187", ".5598666056250986", ".7799160581604246", "26.95826672949831", "233.3373540228336", "8.326778013791237", 96, "4022", "0"], [" (2010 XN)", "2010 XN", "au", "APO", "24.17", null, null, null, null, null, "-1.830304775160072E-13", "1.735E-14", null, null, null, ".3465778399689957", ".7366225823959945", "1.127330273526448", "1.080438586586369", "78.85286000052315", "101.8786974071445", 85, "4970", "1"], [" (2010 XA68)", "2010 XA68", "au", "APO", "21.72", null, null, null, null, null, "-8.956070865764939E-14", "2.047E-14", null, null, null, ".3012798933667672", ".8086557960444837", "1.157338665894379", "59.27545680836409", "74.32191202854055", "107.4570862095242", 93, "5476", "0"], [" (2010 XX72)", "2010 XX72", "au", "ATE", "22.06", null, null, null, null, null, "-1.26238955056499E-13", "2.882E-14", null, null, null, ".2836106134728162", ".6470491594071993", ".9032087459361693", "4.47368142602212", "278.8284198051144", "334.5003907350688", 139, "4394", "0"], [" (2011 AA37)", "2011 AA37", "au", "AMO", "22.90", null, null, "10.", null, null, "-1.486136817995751E-13", "1.312E-14", null, null, null, ".01683477972154746", "1.077301977097684", "1.095748664494631", "3.817627634437217", "275.669076764422", "131.2125563154187", 182, "5701", "0"], [" (2011 CL50)", "2011 CL50", "au", "ATE", "27.3", null, null, null, null, null, "4.381563756003236E-12", "2.932E-13", null, null, null, ".1474828832981303", ".7503817631518803", ".880195539128739", ".1882118872461576", "354.4854675877751", "309.4998286094597", 131, "3628", "0"], [" (2011 DP)", "2011 DP", "au", "ATE", "22.71", null, null, null, null, null, "8.635457381021389E-14", "2.121E-14", null, null, null, ".5846956056851914", ".3315381364841547", ".7983015374329089", "24.13568047216639", "153.0560173350756", "197.0593476652147", 43, "5483", "2"], [" (2011 EP51)", "2011 EP51", "au", "ATE", "25.2", null, null, null, null, null, "-3.26413448649107E-13", "1.919E-14", null, null, null, ".3074576503452056", ".5742369062252484", ".8291722614674514", "3.431054163865557", "159.4016037386486", "170.3358387886901", 318, "3240", "0"], [" (2011 JW10)", "2011 JW10", "au", "AMO", "23.15", null, null, null, null, null, "-1.861924440350947E-13", "3.668E-14", null, null, null, ".2153115941934239", "1.028192268200837", "1.310319179679945", "21.59432586849207", "219.2837480235877", "89.0893617008755", 58, "5458", "0"], [" (2011 KE3)", "2011 KE3", "au", "AMO", "23.98", null, null, null, null, null, "-1.636329432143826E-13", "3.651E-14", null, null, null, ".2869672547749771", "1.128648788436667", "1.58288493199633", "8.630573818220073", "231.3977079782522", "29.85593287128946", 79, "5129", "0"], [" (2011 MD)", "2011 MD", "au", "AMO", "27.98", null, null, "0.19372", "7.429319374830619E-11", "2.481E-11", "-6.279626034238839E-13", "3.788E-12", null, null, null, ".03767673356604647", "1.017260098172908", "1.057087710185509", "2.442637773457288", "271.3850278140916", "5.724116955153247", 532, "967", "2"], [" (2011 PU1)", "2011 PU1", "au", "APO", "25.6", null, null, null, null, null, "-3.03037037395545E-13", "4.996E-14", null, null, null, ".2459017754746773", ".9832912440889462", "1.303929928634817", "4.364999055965315", "301.7675218832703", "326.8616097051676", 110, "2090", "0"], [" (2011 WA)", "2011 WA", "au", "ATE", "21.68", null, null, null, null, null, "-5.865949524221587E-14", "8.65E-15", null, null, null, ".285699807840948", ".6033302425430563", ".8446452194271759", "30.38299493162884", "51.50165104768434", "206.1078835297259", 279, "5116", "0"], [" (2012 BV26)", "2012 BV26", "au", "APO", "22.11", null, null, null, null, null, "8.907016174728059E-14", "1.722E-14", null, null, null, ".1486410963886906", ".9639573709830286", "1.132257343987473", "21.36696661930464", "120.9421805006013", "106.46216621", 115, "4376", "0"], [" (2012 BA35)", "2012 BA35", "au", "APO", "23.75", null, null, null, null, null, "-1.491571534850425E-13", "7.061E-14", null, null, null, ".1158610819562795", ".946628478314622", "1.070678440905156", "5.806213645855697", "145.0586796455542", "234.3469300019692", 131, "3932", "0"], [" (2012 BB124)", "2012 BB124", "au", "APO", "21.10", null, null, null, null, null, "6.797864163063629E-14", "7.04E-15", null, null, null, ".2111606256140789", ".91091799694555", "1.154757263041873", "15.78835155708773", "137.6257974929193", "122.819228972106", 219, "16893", "0"], [" (2012 HN13)", "2012 HN13", "au", "APO", "22.96", null, null, null, null, null, "-9.904852410276796E-14", "2.152E-14", null, null, null, ".3081663891903402", ".9744373337613883", "1.408485101816598", "4.074289061831412", "183.4624114889898", "97.2745729715934", 180, "3810", "0"], [" (2012 HL31)", "2012 HL31", "au", "ATE", "22.43", null, null, null, null, null, "-1.255540044230574E-13", "1.956E-14", null, null, null, ".3739960398284689", ".555653852630316", ".8876203474464627", "19.80953742842286", "37.47581933594024", "17.54996577350448", 92, "3652", "0"], [" (2012 LA)", "2012 LA", "au", "AMO", "27.6", null, null, null, "6.712714728634003E-11", "1.186E-11", "1.898052969710651E-12", "7.876E-12", null, null, null, ".02159878393880795", "1.017961510043251", "1.040433610805718", "3.158929179136726", "234.0748042710196", "79.44951132353469", 103, "179", "2"], [" (2012 TC4)", "2012 TC4", "au", "APO", "26.71", null, null, "0.204155", "2.388329813813622E-11", "7.973E-12", "-2.655592804997814E-13", "6.545E-14", null, null, null, ".4037967031926717", ".9661257637428332", "1.620463638689087", ".5342599686391775", "19.69495712620723", "26.57472997626319", 805, "1897", "0"], [" (2012 TB53)", "2012 TB53", "au", "AMO", "23.13", null, null, null, null, null, "-1.708667458657676E-13", "2.12E-14", null, null, null, ".1604542991378481", "1.052286226872554", "1.253399577642924", "14.5614316390524", "358.9681814881014", "263.5691322407245", 49, "5106", "0"], [" (2012 UU136)", "2012 UU136", "au", "APO", "21.45", null, null, null, null, null, "9.831501753182624E-14", "1.477E-14", null, null, null, ".2119554537375095", ".9142712534056802", "1.160177121638432", "35.5885344441996", "36.07398765134774", "227.7457108280664", 91, "7313", "0"], [" (2012 UR158)", "2012 UR158", "au", "APO", "20.67", "0.629", "0.023", null, null, null, "-7.202400309280564E-12", "6.06E-14", null, null, null, ".8578302656570828", ".3173757013808317", "2.232371769193244", "3.191831444979138", "286.4290372783936", "239.449638472669", 148, "5034", "0"], [" (2012 UK171)", "2012 UK171", "au", "ATE", "24.46", null, null, null, null, null, "-5.527816996019539E-14", "2.765E-15", null, null, null, ".223026561830186", ".6671542210698035", ".8586576944526018", "1.288378171580574", "248.8619406635128", "359.8652477882498", 286, "4446", "0"], [" (2012 VM6)", "2012 VM6", "au", "APO", "25.31", null, null, null, null, null, "-2.454476262058331E-13", "1.623E-14", null, null, null, ".1661301431200378", ".9404857699909394", "1.127856777926828", "5.115288482501206", "226.6984038245372", "98.63690359197371", 68, "6593", "0"], [" (2013 BA74)", "2013 BA74", "au", "APO", "25.4", null, null, null, "2.461350513587601E-10", "1.842E-9", "3.645685115778328E-13", "4.571E-13", "1.916800638650594E-11", "5.303E-12", null, ".4447288151545136", ".9742551376438074", "1.754557348253017", "5.222478240029403", "310.5409985576862", "203.4298949363977", 99, "2559", "4"], [" (2013 GZ7)", "2013 GZ7", "au", "AMO", "24.00", null, null, null, null, null, "-6.216883440861686E-14", "7.984E-15", null, null, null, ".1916229365984298", "1.136305936674721", "1.405663258050964", "5.282272793239521", "21.76496133608298", "165.6375074363491", 89, "7353", "0"], [" (2013 JL22)", "2013 JL22", "au", "APO", "21.16", null, null, null, null, null, "-4.244218914380419E-14", "1.247E-14", null, null, null, ".5943650943286981", ".481467759634981", "1.186948541418496", "3.0629890233834", "37.94034595672519", "69.10623833382012", 111, "8688", "0"], [" (2013 MD6)", "2013 MD6", "au", "ATE", "21.79", null, null, null, null, null, "-9.500637357251678E-14", "1.097E-14", null, null, null, ".4337628390321815", ".4833378732610075", ".8535961723792224", "28.30272558369271", "91.92680368751785", "1.62720508621459", 79, "8038", "0"], [" (2013 RB6)", "2013 RB6", "au", "AMO", "21.83", null, null, null, null, null, "-3.358319057345431E-14", "1.087E-14", null, null, null, ".02017523565399721", "1.21052658905872", "1.235452126857298", "24.18848508443064", "343.3529904116101", "99.64683629833354", 144, "8062", "0"], [" (2013 XY20)", "2013 XY20", "au", "APO", "25.64", null, null, null, "-1.507858660004565E-10", "6.376E-11", "5.656670616384763E-13", "3.38E-13", "-9.216767541466917E-11", "9.207E-12", null, ".1093322140987145", "1.010181063564416", "1.13418390061362", "2.852646901565624", "78.0824512513605", "19.34285544771519", 72, "2250", "2"], [" (2014 EH45)", "2014 EH45", "au", "APO", "22.84", null, null, null, null, null, "-1.604781344194833E-13", "3.493E-14", null, null, null, ".1976871367718085", ".9534293793743881", "1.188351107245325", "21.26119271663127", "1.939288670591513", "270.6789704580733", 61, "8066", "0"], [" (2014 NV63)", "2014 NV63", "au", "APO", "23.23", null, null, null, null, null, "-2.079625545908469E-13", "4.371E-14", null, null, null, ".4710164753945319", ".6413235178488439", "1.212369550312861", "3.427660665956531", "160.94312297991", "14.26406480665602", 48, "4383", "0"], [" (2014 QH33)", "2014 QH33", "au", "APO", "24.44", null, null, null, null, null, "-1.782870367836159E-13", "4.665E-14", null, null, null, ".1845857752289055", ".8841866522506473", "1.084340480445823", "2.829840267631074", "335.8963451602702", "264.7977157837972", 124, "6207", "0"], [" (2014 RQ17)", "2014 RQ17", "au", "APO", "22.30", null, null, "0.5216", null, null, "-4.242204892423601E-14", "3.699E-15", null, null, null, ".4424788379831577", ".9851302897119514", "1.766982774516084", "3.663579884030946", ".8565410966177194", "42.96811007296873", 150, "24907", "0"], [" (2014 TG17)", "2014 TG17", "au", "AMO", "22.45", null, null, null, null, null, "-7.938873877021877E-14", "2.604E-14", null, null, null, ".5810002053945533", "1.056051427213374", "2.520410369670492", "15.61982310154727", "185.9851373387633", "225.5254277516188", 138, "5841", "0"], [" (2014 YD)", "2014 YD", "au", "APO", "24.29", null, null, "2.12", null, null, "-3.681312638590909E-13", "8.28E-14", null, null, null, ".0857410669664755", ".9788745145791149", "1.070675362537826", "1.737474993232534", "117.5078980423459", "34.22218844181838", 167, "3879", "0"], [" (2015 BM510)", "2015 BM510", "au", "ATE", "25.04", null, null, "0.806", null, null, "-2.198350183737618E-13", "5.085E-14", null, null, null, ".1212331219034044", ".8328012027827526", ".9476929815409015", "1.590833960729197", "267.6498199902174", "357.7717161673837", 68, "8403", "1"], [" (2015 CL)", "2015 CL", "au", "ATE", "25.52", null, null, null, null, null, "-5.901405919677342E-13", "1.859E-14", null, null, null, ".5645463476207897", ".3189819566393469", ".7325279163385332", "2.972085916255998", "319.914466097458", "331.0617398934695", 74, "3657", "1"], [" (2015 EG)", "2015 EG", "au", "ATE", "25.61", null, null, "1.29", null, null, "-2.028443287738129E-13", "2.008E-14", null, null, null, ".3558906585549001", ".5561340540151934", ".8634156007852202", "2.498549812671031", "167.537389040661", "223.7157298271618", 151, "2899", "0"], [" (2015 EX)", "2015 EX", "au", "APO", "26.16", null, null, null, null, null, "1.445849779000458E-12", "3.544E-13", null, null, null, ".4778585737265213", ".8907057313407475", "1.705870644468321", "7.423735439021375", "348.9069196136365", "131.4656068832286", 124, "4025", "1"], [" (2015 EQ7)", "2015 EQ7", "au", "AMO", "23.6", null, null, null, null, null, "-2.269636377292318E-13", "6.641E-14", null, null, null, ".05575524317873778", "1.073054363770273", "1.136415485517378", "11.08819508549754", "191.7727716647364", "334.9012773919735", 72, "4225", "0"], [" (2015 FS)", "2015 FS", "au", "AMO", "24.03", null, null, null, null, null, "-2.686256050794836E-13", "6.453E-14", null, null, null, ".2259749427556398", "1.090611327045452", "1.409012947110762", "8.112630487189293", "158.15112484314", "28.58083372040049", 53, "3611", "0"], [" (2015 JJ)", "2015 JJ", "au", "APO", "22.1", null, null, null, null, null, "-9.41588993924825E-14", "2.031E-14", null, null, null, ".1583100212709663", ".890996807145121", "1.058580747855097", "18.80436070996798", "223.1890538573497", "254.3167953580449", 300, "8552", "0"], [" (2015 KJ19)", "2015 KJ19", "au", "APO", "22.51", null, null, null, null, null, "2.575295853018109E-13", "3.061E-14", null, null, null, ".7451160154636729", ".5306441493334527", "2.08190463711863", "2.551078624995877", "105.8257932810807", "30.24754930771816", 242, "3299", "0"], [" (2015 LA2)", "2015 LA2", "au", "ATE", "23.01", null, null, null, null, null, "-9.116182384991087E-14", "6.039E-15", null, null, null, ".2807121492997773", ".6350046612945345", ".8828241164873853", "7.71227437845789", "85.29147523384181", "3.718378406847104", 122, "5536", "0"], [" (2015 MC)", "2015 MC", "au", "APO", "24.11", null, null, null, null, null, "-2.188380292513553E-13", "5.134E-14", null, null, null, ".2624367326862966", ".7867405847568951", "1.066675388570125", "1.739653043961918", "237.3634885972872", "288.308226250551", 121, "4642", "0"], [" (2015 MB54)", "2015 MB54", "au", "APO", "23.99", null, null, null, null, null, "-7.774034295875256E-14", "2.381E-14", null, null, null, ".2408645084559219", ".9948922139592778", "1.310559478566431", "2.703176494174982", "152.2250010644331", "47.57951333290171", 134, "3199", "0"], [" (2015 NJ24)", "2015 NJ24", "au", "APO", "21.39", null, null, null, null, null, "-1.295565686535924E-13", "2.594E-14", null, null, null, ".2770219762421299", ".8201009026146796", "1.134337249079837", "7.125175056065435", "122.6326964245125", "343.7369973738486", 99, "4420", "0"], [" (2015 SD)", "2015 SD", "au", "ATE", "24.30", null, null, null, null, null, "-3.841452912629689E-13", "7.875E-15", null, null, null, ".2657176149028288", ".6325650594873294", ".8614738312204222", "20.08209588789514", "176.2406965944691", "350.9142731030685", 102, "4397", "0"], [" (2015 TC25)", "2015 TC25", "au", "APO", "29.34", null, null, "0.03715", "1.599229182825786E-10", "2.134E-11", "-5.27364458235883E-12", "2.774E-12", null, null, null, ".1162856089052357", ".9088129628188475", "1.028401225528296", "3.743420398817443", "18.8499824211927", "80.57915782482895", 48, "562", "2"], [" (2015 TT238)", "2015 TT238", "au", "ATE", "24.62", null, null, null, null, null, "-5.643196466226072E-13", "2.64E-14", null, null, null, ".2503366816761108", ".6636688522078183", ".8852892171537233", "10.80245213916253", "4.436899691005306", "216.0030000343313", 48, "3643", "1"], [" (2015 XF261)", "2015 XF261", "au", "ATE", "25.25", null, null, null, null, null, "-4.048498794947963E-13", "4.448E-14", null, null, null, ".3190938167388311", ".6740254860041054", ".9898947939874643", ".7938553585726479", "209.8013526856336", "100.8832674757681", 73, "2991", "1"], [" (2015 XC352)", "2015 XC352", "au", "APO", "25.82", null, null, null, null, null, "-7.521671237763397E-13", "1.27E-13", null, null, null, ".1455272723830205", ".8674340850108628", "1.015168836845186", "4.484205467990293", "98.56902053943926", "83.01329719250592", 87, "1307", "1"], [" (2016 AG193)", "2016 AG193", "au", "AMO", "23.50", null, null, null, null, null, "-2.508765837956143E-13", "6.358E-14", null, null, null, ".1968681410519273", "1.052420307689345", "1.31039541759405", "28.80205868867811", "124.2297499363555", "320.4624387759093", 50, "3275", "0"], [" (2016 CA138)", "2016 CA138", "au", "ATE", "23.31", null, null, "5.3197", null, null, "-2.222150615364843E-13", "4.533E-14", null, null, null, ".04968257544573873", ".9483022019485681", ".9978794215978536", "27.72920532959273", "328.8685905151037", "326.8636772147362", 272, "3647", "0"], [" (2016 CO246)", "2016 CO246", "au", "ATE", "25.8", null, null, null, null, null, "-7.321513943114906E-13", "1.728E-13", null, null, null, ".1261841006278847", ".8691222524592723", ".9946285631604831", "6.29493421608501", "136.3281441828345", "121.0039014084649", 46, "1464", "0"], [" (2016 FT14)", "2016 FT14", "au", "ATE", "24.69", null, null, null, null, null, "1.442104351259813E-13", "1.522E-14", null, null, null, ".258969624675098", ".6367086555801958", ".8592207239831882", "4.322737387023492", "196.6820356616734", "183.8192758589437", 69, "2970", "0"], [" (2016 GE1)", "2016 GE1", "au", "APO", "26.7", null, null, "0.009438", null, null, "-1.438847282803142E-12", "4.378E-13", null, null, null, ".5196269086927915", ".9910345824686271", "2.063051824513709", "10.68051841370246", "15.46142066141817", "197.7416786366497", 127, "1098", "0"], [" (2016 GC135)", "2016 GC135", "au", "AMO", "23.57", null, null, null, null, null, "-3.795068499785151E-13", "7.428E-14", null, null, null, ".1327166704628531", "1.133821730734557", "1.307325636409564", "17.06064533463377", "181.4424346618706", "308.4951265659754", 59, "3310", "0"], [" (2016 GW221)", "2016 GW221", "au", "ATE", "24.75", null, null, "0.2856", "3.812772795208656E-11", "7.179E-11", "-1.702054023944971E-13", "1.764E-14", "3.470103124427388E-11", "6.633E-12", null, ".2667979401047085", ".6071339551081832", ".8280581688421442", "3.760609109768254", "33.04976946959108", "8.864368410261179", 209, "3300", "3"], [" (2016 NB1)", "2016 NB1", "au", "ATE", "23.90", null, null, null, null, null, "-1.714530010774622E-13", "5.577E-15", null, null, null, ".4351421298569342", ".4306594974270578", ".7624209915283318", "6.676940752278178", "112.7502644149591", ".7612075654267586", 117, "6595", "1"], [" (2016 NJ33)", "2016 NJ33", "au", "AMO", "25.53", null, null, null, "9.475402454443151E-10", "2.928E-10", "-5.486101259217607E-13", "1.909E-13", "8.484934726920783E-11", "1.621E-11", null, ".2099895743561496", "1.038475301587418", "1.314508350622172", "6.619681269649745", "279.4307800820562", "24.48275533347982", 90, "2261", "3"], [" (2016 PC2)", "2016 PC2", "au", "ATE", "23.00", null, null, null, null, null, "-1.642575791899261E-13", "8.727E-15", null, null, null, ".4605858739129488", ".4320838814267162", ".8010244087619351", "15.1962598628504", "130.21944606", "22.48914311767512", 126, "3653", "0"], [" (2016 RT17)", "2016 RT17", "au", "AMO", "23.53", null, null, null, null, null, "-2.29836910906393E-13", "4.928E-14", null, null, null, ".1831112855283537", "1.14945778588094", "1.407116741261869", "17.43165680940531", "324.8358874083137", "37.22975521034869", 54, "3628", "0"], [" (2016 RP40)", "2016 RP40", "au", "APO", "24.81", null, null, null, null, null, "-3.382049596070249E-13", "5.115E-14", null, null, null, ".3239736581521545", ".7837280425816039", "1.159315834408711", "7.394752731783033", "352.549544545304", "267.3739792865649", 63, "3661", "0"], [" (2016 TH94)", "2016 TH94", "au", "ATE", "24.58", null, null, null, null, null, "-2.371008631070153E-13", "2.009E-14", null, null, null, ".3728465672874092", ".5185909638129963", ".8268964766244913", "23.11212483324932", "30.62843793393346", "145.6031848998684", 130, "3301", "0"], [" (2016 UW80)", "2016 UW80", "au", "APO", "23.91", null, null, null, null, null, "-2.015292789724452E-13", "6.182E-14", null, null, null, ".1693484981970151", ".9673882828151321", "1.16461389730272", "12.98703541747575", "37.38781444907163", "108.559869371643", 121, "3642", "0"], [" (2016 WU1)", "2016 WU1", "au", "APO", "23.85", null, null, null, null, null, "3.09548294940417E-13", "5.845E-14", null, null, null, ".473518934409461", ".83664556126218", "1.589127541222662", "23.49794721594062", "51.90864518263378", "281.1331740932745", 46, "2924", "0"], [" (2017 AZ13)", "2017 AZ13", "au", "ATE", "21.97", null, null, null, null, null, "-1.476168762827719E-13", "2.264E-14", null, null, null, ".2657973435014441", ".6816290672488385", ".9283936270396472", "18.32042064893122", "121.9380470066137", "200.0261136508035", 116, "6583", "0"], [" (2017 BP32)", "2017 BP32", "au", "AMO", "23.37", null, null, null, null, null, "-1.186503580858803E-13", "3.336E-14", null, null, null, ".2102158170086957", "1.037179732915688", "1.313244497993584", "23.69837174750865", "315.3746130899628", "185.8438120129389", 242, "3297", "0"], [" (2017 DN109)", "2017 DN109", "au", "APO", "21.82", null, null, null, null, null, "1.130571502765899E-13", "3.652E-14", null, null, null, ".8268087472300445", ".2071113154482011", "1.195853209303247", "7.091859784006034", "66.12935776749532", "302.2828392324183", 70, "4741", "0"], [" (2017 EE23)", "2017 EE23", "au", "ATE", "21.93", null, null, null, null, null, "7.279979666013593E-14", "1.291E-14", null, null, null, ".3808958534320797", ".5420173875441383", ".8754866052002366", "16.12173955282233", "149.1382980018919", "244.1656351940107", 88, "6595", "0"], [" (2017 HX)", "2017 HX", "au", "ATE", "24.25", null, null, null, null, null, "-2.910482202749337E-13", "1.615E-14", null, null, null, ".4637411874703448", ".4195913692121806", ".7824419094072735", "10.98409761843997", "207.6292687618432", "169.5329859807499", 55, "6581", "2"], [" (2017 JF3)", "2017 JF3", "au", "ATE", "21.74", null, null, null, null, null, "-5.086831589298636E-14", "1.771E-14", null, null, null, ".3491627530919105", ".5899827424952895", ".9064981226844353", "5.821836755405479", "243.1949781296724", "130.364941681662", 126, "4858", "0"], [" (2017 OU18)", "2017 OU18", "au", "ATE", "23.98", null, null, null, null, null, "9.504823985908701E-14", "1.047E-14", null, null, null, ".3774589441901681", ".5140402651771344", ".8257130359192868", "30.38292756472392", "302.205112314701", "185.2605729608132", 33, "4379", "1"], [" (2017 SN17)", "2017 SN17", "au", "AMO", "22.77", null, null, null, null, null, "-1.940853057792747E-13", "2.383E-14", null, null, null, ".05497384129380533", "1.067196442270086", "1.129277144805336", "24.65305688379349", "191.9234989038715", "21.46574224484095", 70, "4406", "0"], [" (2017 TW4)", "2017 TW4", "au", "AMO", "25.01", null, null, null, null, null, "-2.303867940268895E-13", "1.721E-14", null, null, null, ".4581925390989183", "1.040542650679928", "1.920502624584383", "1.984489346622087", "306.4822229477095", "101.3653527425435", 73, "5843", "0"], [" 'Oumuamua (A/2017 U1)", "2017 U1", "au", "HYA", "22.08", null, null, "7.937", "2.790193364334668E-7", "3.574E-8", "1.441264159911234E-8", "2.445E-8", "1.57392261588653E-8", "2.249E-8", null, "1.201133796102373", ".2559115812959116", "-1.27234500742808", "122.7417062847286", "24.59690955523242", "241.8105360304898", 207, "80", null], [" (2018 BY6)", "2018 BY6", "au", "APO", "23.45", null, null, null, null, null, "2.133138627619386E-13", "3.544E-14", null, null, null, ".2802505450432554", ".8709506417016133", "1.210074749905793", "6.556122375849132", "288.1877815587404", "75.94128775956845", 44, "5879", "0"], [" (2018 CW2)", "2018 CW2", "au", "ATE", "25.66", null, null, null, null, null, "-5.500469359310484E-13", "3.852E-14", null, null, null, ".4225922294294032", ".4387026012165752", ".7597795242399448", "5.097519510495071", "331.8974238026039", "327.7364256003952", 161, "1471", "0"], [" (2018 GY)", "2018 GY", "au", "ATE", "24.83", null, null, null, null, null, "-3.94973476765098E-13", "6.322E-14", null, null, null, ".4061985119776272", ".4552931914683317", ".7667430962233924", "8.750017680055358", "176.9046902624619", "204.9807734128901", 34, "1471", "1"], [" (2018 HB)", "2018 HB", "au", "ATE", "22.22", null, null, null, null, null, "-8.256505703260594E-14", "1.773E-14", null, null, null, ".5883108591921502", ".3335302508565579", ".8101507127491335", "22.05577032351916", "14.37117486964907", "354.8419266124392", 60, "5841", "1"], [" (2018 HG2)", "2018 HG2", "au", "APO", "24.26", null, null, null, null, null, "-4.287970907548996E-13", "6.665E-14", null, null, null, ".3295424980855188", ".8011834932393183", "1.19498027981125", "14.28899894944034", "206.3623392848841", "268.7282643831094", 59, "7497", "1"], [" (2018 KR)", "2018 KR", "au", "ATE", "26.39", null, null, null, null, null, "-2.093215470673972E-13", "1.948E-14", null, null, null, ".2095894213586249", ".7011096632605673", ".8870195847652927", "1.181635253773412", "127.7293728502722", "271.0438794221383", 56, "3702", "0"], [" (2018 KC2)", "2018 KC2", "au", "APO", "22.89", null, null, null, null, null, "2.95271925098014E-13", "4.488E-14", null, null, null, ".2323788280206029", ".8916709512454131", "1.161602863227625", "4.483390076908575", "88.35418738610207", "19.91086274023442", 100, "3663", "0"], [" (2018 PK10)", "2018 PK10", "au", "AMO", "23.18", null, null, null, null, null, "-1.380734052998978E-13", "3.166E-14", null, null, null, ".2989255539519047", "1.232195416461028", "1.757581414365938", "15.30435157741436", "317.8172258573329", "8.867581864333101", 45, "5131", "0"], [" (2018 PD22)", "2018 PD22", "au", "ATE", "23.81", null, null, null, null, null, "1.015764205655081E-13", "2.419E-14", null, null, null, ".5433078853279267", ".3626421729530213", ".7940626984843294", "4.019260988406957", "122.8453868149304", "359.4896535042163", 40, "4386", "0"], [" (2018 QQ)", "2018 QQ", "au", "AMO", "25.58", null, null, null, null, null, "-4.61620571651124E-13", "1.316E-13", null, null, null, ".2146063264545128", "1.025691084528282", "1.30595791521725", "6.265008098603216", "148.7761773287", "143.1369290783322", 55, "2149", "0"], [" (2018 YH)", "2018 YH", "au", "APO", "21.85", null, null, null, null, null, "-1.165457231368911E-13", "3.457E-14", null, null, null, ".2638839916467218", ".8240546144284736", "1.119462971973558", "11.92179499208156", "320.4698025074812", "245.7306688191396", 106, "4761", "0"], [" (2019 ER1)", "2019 ER1", "au", "AMO", "23.39", null, null, "0.3324", null, null, "-1.857819779345961E-13", "5.039E-14", null, null, null, ".1304034504422095", "1.050513036043448", "1.208046463130124", "8.293635208574681", "344.8664191905057", "227.6009012362683", 108, "2999", "0"], [" (2019 JV1)", "2019 JV1", "au", "ATE", "22.97", null, null, null, null, null, "1.71884986209178E-13", "5.737E-14", null, null, null, ".3781008868823498", ".5116025234820765", ".8226455267275676", "32.89542885025757", "42.42836709117684", "32.55659480380987", 171, "3259", "1"], [" (2019 QU2)", "2019 QU2", "au", "ATE", "22.21", null, null, null, null, null, "-6.84086350139092E-14", "6.719E-15", null, null, null, ".7047418393358996", ".2432408205695659", ".8238242086940593", "11.32546462236962", "145.6690609982657", "355.8798157694305", 66, "7688", "0"], [" (2019 SV6)", "2019 SV6", "au", "ATE", "23.8", null, null, null, null, null, "-1.201411655495116E-13", "1.017E-14", null, null, null, ".5029778501311117", ".3932294936704395", ".7911709644613852", "6.174857932209274", "4.29630252183187", "173.9216135163547", 46, "5087", "1"], [" (2019 UH14)", "2019 UH14", "au", "APO", "23.59", null, null, null, null, null, "-2.027321127989095E-13", "6.719E-14", null, null, null, ".2361668843474915", ".889002608007775", "1.163870209068299", "14.49587018897011", "207.1261363988839", "108.5241423044848", 202, "3839", "0"], [" (2020 CJ1)", "2020 CJ1", "au", "AMO", "23.89", null, null, null, null, null, "-2.046491654229345E-13", "4.608E-14", null, null, null, ".2529478720299198", "1.047593062871856", "1.40230249489874", "3.758193258219878", "82.5115950403372", "82.16336584590978", 70, "3714", "0"], [" (2020 GE)", "2020 GE", "au", "ATE", "28.17", null, null, null, "1.763832253342219E-10", "1.258E-11", "-1.939815078655556E-12", "2.184E-14", null, null, null, ".04953894916812334", ".9383651636342493", ".9872736634635993", "1.671854881156746", "171.7261538369749", "68.13504377781186", 58, "1699", "1"], [" (2020 PP1)", "2020 PP1", "au", "APO", "26.68", null, null, null, null, null, "-2.092778022928141E-13", "2.801E-14", null, null, null, ".07013118368696189", ".9360427015697111", "1.006639522853506", "5.980337418165083", "139.5862169798588", "44.48325679800925", 59, "2508", "0"], [" (2020 QJ1)", "2020 QJ1", "au", "AMO", "24.89", null, null, null, null, null, "-3.667380154381463E-13", "2.223E-14", null, null, null, ".06692931753797333", "1.129079778208039", "1.210068861266562", "7.163806852557562", "151.2807861345803", "181.4144690176662", 40, "4425", "0"], [" (2020 UL3)", "2020 UL3", "au", "APO", "23.22", null, null, null, null, null, "-1.668645484185692E-13", "3.597E-14", null, null, null, ".3225725674701498", ".8176877488729802", "1.207048474283553", "10.39083049841004", "51.66330758393918", "72.27325639128419", 244, "3190", "0"], [" (2020 XA5)", "2020 XA5", "au", "ATE", "24.29", null, null, null, null, null, "-2.245739317077037E-13", "4.949E-14", null, null, null, ".383676000433221", ".505871324549748", ".8207879701347515", "4.399162602258591", "146.732885194096", "118.6388916289586", 53, "2245", "1"], [" (2021 JK2)", "2021 JK2", "au", "ATE", "24.76", null, null, null, null, null, "3.257916385316015E-13", "2.707E-14", null, null, null, ".2970840192919266", ".6219256383000107", ".8847794834220755", "3.693487695334086", "145.3898447878018", "281.3037479657368", 40, "5495", "0"], [" (2021 QH2)", "2021 QH2", "au", "APO", "25.05", null, null, null, null, null, "7.684416572788134E-13", "2.333E-13", null, null, null, ".2851109620948311", ".7181385144093233", "1.004545427796286", "10.32047235541853", "333.7110188473484", "132.6286046172187", 38, "1087", "1"], [" (2021 SF4)", "2021 SF4", "au", "AMO", "24.51", null, null, null, null, null, "-2.111496740437865E-13", "5.605E-14", null, null, null, ".2160834014031611", "1.025944251403394", "1.308741584550919", "12.29586319258389", "199.9186667239088", "225.7846116643121", 49, "2183", "0"], [" (2021 UT1)", "2021 UT1", "au", "AMO", "25.05", null, null, null, null, null, "-3.220403279719075E-13", "4.152E-14", null, null, null, ".1373501132217446", "1.046454830944382", "1.213070153932999", "25.19291275308487", "213.3806516682016", "201.5446122720968", 54, "2943", "0"], [" (2021 XF4)", "2021 XF4", "au", "AMO", "24.35", null, null, null, null, null, "-2.833708514694417E-13", "8.662E-14", null, null, null, ".0811803562212272", "1.109948924860459", "1.208016102371996", "10.10225405291231", "100.2093110036241", "338.9988502380008", 50, "2966", "0"], [" (2022 OS)", "2022 OS", "au", "ATE", "21.77", null, null, null, null, null, "-9.294737064418822E-14", "2.446E-14", null, null, null, ".4195439442981629", ".4972725341495656", ".8566928181123148", "27.01691409170033", "297.2980931837948", "206.8943764137232", 108, "4403", "1"], [" (2022 OB5)", "2022 OB5", "au", "APO", "28.99", null, null, null, null, null, "-1.657171700593495E-12", "6.493E-14", null, null, null, ".0548592073798253", ".9699026712142497", "1.026199142802237", "2.75583737844462", "296.0277557609091", "127.4142907418958", 49, "1268", "0"], [" (2022 OR6)", "2022 OR6", "au", "APO", "24.97", null, null, null, null, null, "-2.139726290790077E-13", "2.301E-14", null, null, null, ".3012829823494241", ".9809657139425592", "1.403952800864991", "6.49725563243399", "309.9514359471291", "63.09594437926138", 52, "3683", "0"], [" (2022 QX4)", "2022 QX4", "au", "ATE", "24.70", null, null, "0.088812", null, null, "-3.401964447814442E-13", "8.901E-14", null, null, null, ".5046236449777568", ".3372484149235235", ".6807923137719816", ".1283352526722294", "337.7435953208259", "173.8365701723295", 200, "3321", "2"], [" (2022 SU6)", "2022 SU6", "au", "AMO", "23.95", null, null, null, null, null, "-1.375865917915548E-13", "3.494E-14", null, null, null, ".5409673557195364", "1.155559623529091", "2.517380055486985", "4.762882785943637", "33.9369752851477", "336.0656608219467", 66, "5857", "0"], [" (2023 KR1)", "2023 KR1", "au", "AMO", "23.36", null, null, null, null, null, "-1.692719751142907E-13", "3.464E-14", null, null, null, ".1227017189154154", "1.151212101226988", "1.312224275424055", "10.34628351514447", "207.9525721192703", "312.1432450634778", 48, "4369", "0"], [" (2023 KH4)", "2023 KH4", "au", "ATE", "26.93", null, null, null, null, null, "8.741494082999295E-13", "2.549E-13", null, null, null, ".3252016853304511", ".5556897998841043", ".8234902011517731", "8.227794239456554", "240.4555885312459", "215.2838967577865", 33, "1100", "2"], [" (2023 YO1)", "2023 YO1", "au", "APO", "25.93", null, null, null, null, null, "8.315921907206817E-13", "1.115E-13", null, null, null, ".05167684905566673", ".957387294914628", "1.00955807517856", "4.489195487158086", "289.4138251256668", "236.6704314591286", 61, "930", "0"], [" (2025 PN7)", "2025 PN7", "au", "APO", "26.41", null, null, null, null, null, "-1.502790636735418E-13", "1.332E-14", null, null, null, ".1081889157584464", ".8930342221941148", "1.001371521361614", "1.976855312166221", "112.1947087920097", "79.90862988054327", 41, "4651", "0"], [" (2025 XA6)", "2025 XA6", "au", "AMO", "21.84", null, null, null, null, null, "-1.263521001859382E-13", "3.551E-14", null, null, null, ".2231338406515867", "1.139500560991073", "1.466791347877497", "8.393285887348775", "219.8973957901003", "197.8322157993868", 59, "9247", "0"]], "count": 611} \ No newline at end of file diff --git a/papers/dark_comet/data/table_S1_screen.csv b/papers/dark_comet/data/table_S1_screen.csv new file mode 100644 index 0000000000000000000000000000000000000000..b40d0d2c0af9ba4b7fc48d017e5a609f5caeeb7b --- /dev/null +++ b/papers/dark_comet/data/table_S1_screen.csv @@ -0,0 +1,612 @@ +designation,A2_au_d2,A2_snr,A1_snr,A3_snr,H,D_used_m,D_source,xi_500kgm3_albedo0.5,xi_2000kgm3_albedo0.14,T_J,q_au,orbit_class,n_obs,arc_days,damit_cos_obliquity,spin_sign,published_status +457175 (2008 GO98),-1.1508e-09,-11.16,11.54,-1.83,12.91,4921,H at albedo 0.5,8333,6.299e+04,2.927,2.8643,OMB,1742,8774,,,active comet 362P +2012 UR158,-7.2024e-12,-118.85,,,20.67,629,measured,6.666,26.66,3.003,0.3174,APO,148,5034,,,dark comet +883607 (2016 TA56),-3.1858e-12,-8.89,,,18.13,445,H at albedo 0.5,2.085,15.76,2.690,0.5884,APO,94,6844,,,dark-comet candidate (this paper) +452639 (2005 UY6),-5.3814e-13,-11.27,,,18.14,2249,measured,1.781,7.123,2.941,0.2860,APO,219,7587,,,dark comet +523599 (2003 RM),3.2869e-12,110.19,,,19.63,223,H at albedo 0.5,1.078,8.148,2.953,1.1307,AMO,374,7402,,,dark comet +875163 (1998 SH2),-6.9607e-13,-14.21,,,20.88,383,measured,0.3923,1.569,2.913,0.7850,APO,394,9900,,,"active comet, a weak tail imaged in 2025 (Farnocchia et al. 2026)" +152667 (1998 FR11),2.6000e-13,4.48,,,16.41,982,H at albedo 0.5,0.3756,2.839,2.885,0.8202,APO,393,25630,,,dark comet +139359 (2001 ME1),-2.3754e-13,-12.22,,,16.52,933,H at albedo 0.5,0.3262,2.466,2.673,0.3434,APO,740,8772,,,dark comet +428209 (2006 VC),6.4465e-13,3.69,,,20.09,180,H at albedo 0.5,0.171,1.293,3.719,0.9860,APO,177,7139,,, +2006 RH120,-4.6164e-11,-6.69,17.82,-3.44,29.50,2,H at albedo 0.5,0.1607,1.215,5.926,1.0079,APO,136,284,,,dark comet +434632 (2005 WE),-4.4031e-14,-3.07,,,19.85,1150,measured,0.07451,0.298,5.409,0.8617,APO,260,7427,,, +2000 AA6,1.4831e-13,7.60,,,22.44,316,measured,0.06896,0.2758,4.894,0.6183,APO,151,6943,,, +613995 (2008 NP3),-2.2541e-13,-31.61,,,22.85,193,measured,0.06401,0.2561,6.005,0.6693,APO,165,6139,,, +4179 Toutatis (1989 AC),-7.6546e-15,-7.84,-3.39,,15.29,5400,measured,0.06082,0.2433,3.138,0.9546,APO,7141,33698,,, +424392 (2007 YJ),-1.6457e-13,-6.73,,,22.11,239,measured,0.05787,0.2315,5.599,0.7947,APO,189,5459,,, +3200 Phaethon (1983 TB),-6.2113e-15,-17.45,,,14.38,6250,measured,0.05712,0.2285,4.509,0.1403,APO,8682,15692,-0.883,agrees, +410777 (2009 FD),8.1849e-14,7.90,,,22.18,472,measured,0.05685,0.2274,5.291,0.5902,APO,516,5523,,, +65679 (1989 UQ),-3.9604e-14,-4.71,,,19.62,918,measured,0.0535,0.214,6.496,0.6728,ATE,1164,25910,,, +1996 GQ,-1.7442e-13,-4.14,,,23.19,208,measured,0.05338,0.2135,3.690,1.0051,APO,97,10114,,, +90416 (2003 YK118),-3.2753e-14,-5.89,,,18.83,968,measured,0.04665,0.1866,4.053,0.8608,APO,932,12084,,, +2011 CL50,4.3816e-12,14.94,,,27.30,7,H at albedo 0.5,0.04202,0.3176,6.724,0.7504,ATE,131,3628,,, +337248 (2000 RH60),-3.3540e-14,-7.51,,,20.08,846,measured,0.04175,0.167,6.926,0.3705,ATE,628,8813,,, +7350 (1993 VA),-1.4685e-14,-5.98,,,17.16,1921,measured,0.04151,0.166,4.769,0.8257,APO,2218,23008,,, +2002 BF25,1.6631e-13,48.78,,,22.62,152,measured,0.0372,0.1488,5.722,0.8366,APO,147,7315,,, +163348 (2002 NN4),3.3057e-14,8.30,,,20.05,735,measured,0.03575,0.143,6.676,0.4952,ATE,790,8435,,, +86666 (2000 FL10),-2.0759e-14,-4.98,,,16.88,1165,measured,0.03558,0.1423,4.395,0.8384,APO,2114,9223,,, +511684 (2015 BN509),7.6711e-14,5.96,,,20.77,315,measured,0.03556,0.1422,5.889,0.4345,APO,592,7342,,, +4688 (1980 WF),-3.7756e-14,-4.71,,,19.60,600,measured,0.03333,0.1333,3.444,1.0768,AMO,332,14739,,, +393569 (2003 JC13),-4.1040e-14,-5.38,,,20.30,551,measured,0.03327,0.1331,5.729,0.7302,APO,522,8408,,, +162173 Ryugu (1999 JU3),-2.4873e-14,-4.96,,,19.55,896,measured,0.03279,0.1312,5.303,0.9634,APO,5124,14345,,, +99907 (1989 VA),1.5430e-14,16.70,,,17.96,1400,measured,0.03179,0.1271,7.670,0.2952,ATE,1591,13198,,, +162080 (1998 DG16),-2.5594e-14,-5.11,,,19.91,777,measured,0.02926,0.117,6.546,0.5755,ATE,723,16470,,, +325102 (2008 EY5),-5.4970e-14,-3.93,,,20.17,361,measured,0.0292,0.1168,8.847,0.2337,ATE,175,4347,,, +2101 Adonis (1936 CA),-3.2679e-14,-6.20,,,18.69,600,measured,0.02885,0.1154,3.551,0.4420,APO,155,32656,,, +441823 (2009 QO5),-2.7232e-13,-4.07,,,22.11,71,H at albedo 0.5,0.0285,0.2154,4.324,1.2157,AMO,105,5794,,, +387746 (2003 MH4),-5.1622e-14,-3.76,,,20.13,366,measured,0.0278,0.1112,3.703,0.9554,APO,581,8250,,, +294739 (2008 CM),-2.4472e-14,-3.44,,,17.04,740,measured,0.02665,0.1066,4.133,0.9270,APO,1912,6471,,, +11398 (1998 YP11),-1.3588e-14,-4.60,,,16.36,1316,measured,0.02631,0.1052,4.046,1.0514,AMO,5443,15978,,, +136564 (1977 VA),-4.4050e-14,-4.62,,,19.28,400,measured,0.02593,0.1037,3.888,1.1301,AMO,302,17420,,, +161989 Cacus (1978 CA),-9.2365e-15,-6.09,,,17.31,1900,measured,0.02582,0.1033,5.449,0.8826,APO,1798,16425,-1.000,agrees, +613714 (2007 DL41),-1.3595e-13,-4.34,,,20.82,129,H at albedo 0.5,0.02577,0.1948,4.497,0.7629,APO,141,5390,,, +836356 (2012 OQ),2.2094e-13,4.06,,,21.88,79,H at albedo 0.5,0.02571,0.1943,5.244,0.7201,APO,467,4752,,, +612199 (2000 WL63),-8.8099e-14,-13.08,,,19.90,197,H at albedo 0.5,0.02551,0.1929,4.584,1.0041,APO,558,8972,,, +1580 Betulia (1950 KA),-2.9422e-15,-5.98,,,14.54,5800,measured,0.02511,0.1004,3.066,1.1245,AMO,2259,26991,-0.462,agrees, +138947 (2001 BA40),-3.6473e-14,-4.11,,,18.83,447,measured,0.02399,0.09596,5.525,0.8349,APO,538,9363,,, +85990 (1999 JV6),-3.5635e-14,-13.38,,,20.27,451,measured,0.02365,0.09459,5.989,0.6947,APO,1203,9026,-0.939;-0.994,agrees, +2015 EX,1.4458e-12,4.08,,,26.16,11,H at albedo 0.5,0.02344,0.1772,4.047,0.8907,APO,124,4025,,, +283457 (2001 MQ3),-5.5606e-14,-6.65,,,19.10,284,H at albedo 0.5,0.02328,0.1759,3.490,1.2163,AMO,502,25573,,, +2003 LN6,7.4446e-13,48.03,,,24.74,21,H at albedo 0.5,0.02321,0.1754,6.872,0.6753,ATE,151,8413,,, +4034 Vishnu (1986 PA),-3.7524e-14,-9.67,,,18.50,420,measured,0.02319,0.09276,5.704,0.5890,APO,1333,14574,,, +1627 Ivar (1929 SH),1.7047e-15,4.54,,,12.79,9120,measured,0.02288,0.09151,3.879,1.1228,AMO,14572,35448,0.663;0.667,agrees, +8014 (1990 MF),-2.2209e-14,-5.19,,,18.88,700,measured,0.02287,0.0915,4.008,0.9499,APO,1297,13005,,, +398188 Agni (2010 LE15),-3.3598e-14,-7.77,,,19.33,462,measured,0.02284,0.09136,6.781,0.6282,ATE,1214,9193,,, +2005 YU128,-9.1707e-13,-3.05,,,25.26,17,H at albedo 0.5,0.0225,0.1701,7.465,0.5232,ATE,39,6962,,, +2015 KJ19,2.5753e-13,8.41,,,22.51,59,H at albedo 0.5,0.02242,0.1695,3.342,0.5306,APO,242,3299,,, +363505 (2003 UC20),-8.0679e-15,-19.81,,,18.48,1876,measured,0.02227,0.08908,7.387,0.5181,ATE,1075,26234,,, +53789 (2000 ED104),-1.7744e-14,-3.08,,,17.35,843,measured,0.02201,0.08804,4.544,1.0017,APO,1354,26105,,, +152671 (1998 HL3),-4.9470e-14,-7.02,,,20.24,298,measured,0.02169,0.08677,5.474,0.7158,APO,538,9399,,, +2018 KC2,2.9527e-13,6.58,,,22.89,50,H at albedo 0.5,0.02158,0.1631,5.395,0.8917,APO,100,3663,,, +175706 (1996 FG3),-1.2255e-14,-7.95,,,18.31,1196,measured,0.02157,0.08627,5.775,0.6855,APO,3126,14691,,, +412983 (1996 FO3),-8.1372e-14,-8.99,,,20.16,175,H at albedo 0.5,0.02091,0.158,4.610,1.0238,AMO,389,11160,,, +142040 (2002 QE15),-1.1519e-14,-3.17,,,16.25,1232,measured,0.02088,0.08353,4.057,1.0930,AMO,2565,11697,,, +323300 (2003 UD22),-6.3606e-14,-3.13,,,19.63,223,H at albedo 0.5,0.02086,0.1577,5.337,0.7966,APO,345,7022,,, +2003 YL118,-1.7497e-13,-16.41,,,21.83,81,H at albedo 0.5,0.02083,0.1575,5.407,0.5809,APO,122,8114,,, +2021 QH2,7.6844e-13,3.29,,,25.05,18,H at albedo 0.5,0.02077,0.157,6.008,0.7181,APO,38,1087,,, +4947 Ninkasi (1988 TJ1),-3.0738e-14,-4.49,,,18.07,457,H at albedo 0.5,0.02068,0.1563,4.772,1.1393,AMO,996,17621,,, +2001 QM142,-2.4047e-13,-7.35,,,22.54,58,H at albedo 0.5,0.02065,0.1561,5.089,0.7060,APO,40,8027,,, +745311 (2010 XC15),-1.4744e-13,-3.75,,,21.48,95,H at albedo 0.5,0.02062,0.1559,7.777,0.4249,ATE,279,4406,,, +267337 (2001 VK5),-3.1621e-14,-3.95,,,18.05,439,measured,0.02043,0.0817,4.898,0.6166,APO,1117,8540,,, +2016 GC135,-3.7951e-13,-5.11,,,23.57,36,H at albedo 0.5,0.02028,0.1533,4.930,1.1338,AMO,59,3310,,, +2008 WT62,-3.0644e-13,-5.04,,,23.11,45,H at albedo 0.5,0.02024,0.153,6.617,0.5713,ATE,43,3645,,, +1994 WR12,-2.2180e-13,-18.48,,,22.41,62,H at albedo 0.5,0.02022,0.1528,7.571,0.4558,ATE,153,11345,,, +2001 BB16,3.1803e-13,12.28,,,23.20,43,H at albedo 0.5,0.02015,0.1523,6.880,0.7080,ATE,57,6967,,, +2008 DB,-1.0406e-12,-7.32,,,25.80,13,H at albedo 0.5,0.01991,0.1505,5.811,0.8081,APO,74,4769,,, +2002 GD10,-2.4845e-13,-4.95,,,22.71,54,H at albedo 0.5,0.01973,0.1491,5.181,1.0580,AMO,97,8610,,, +526826 (2007 CA27),-1.2800e-13,-3.56,,,21.28,104,H at albedo 0.5,0.01963,0.1484,6.673,0.5682,ATE,115,6213,,, +468468 (2004 KH17),-6.6731e-14,-16.43,,,22.01,197,measured,0.01934,0.07737,7.900,0.3574,ATE,248,7673,,, +483423 (2000 DO1),-8.8849e-14,-3.11,,,20.53,147,H at albedo 0.5,0.01925,0.1455,4.404,0.4544,APO,281,8337,,, +341843 (2008 EV5),-3.2530e-14,-4.10,,,20.05,400,measured,0.01915,0.07658,6.270,0.8802,ATE,1486,6624,,, +138175 (2000 EE104),-8.5948e-14,-19.98,,,20.49,150,H at albedo 0.5,0.01897,0.1434,6.020,0.7092,APO,1621,9442,,, +2015 NJ24,-1.2956e-13,-4.99,,,21.39,99,H at albedo 0.5,0.01889,0.1428,5.477,0.8201,APO,99,4420,,, +11500 Tomaiyowit (1989 UR),-1.7339e-14,-6.67,,,18.38,738,measured,0.01883,0.07531,5.656,0.6956,APO,1457,13503,,, +52387 Huitzilopochtli (1993 OM7),1.4318e-14,20.91,,,17.75,890,measured,0.01875,0.075,4.947,1.0389,AMO,1761,11930,,, +2004 JN1,-3.7871e-13,-13.50,,,23.74,34,H at albedo 0.5,0.01871,0.1414,5.693,0.8947,APO,111,6244,,, +2015 TT238,-5.6432e-13,-21.38,,,24.62,22,H at albedo 0.5,0.01859,0.1405,6.661,0.6637,ATE,48,3643,,, +163023 (2001 XU1),5.3389e-14,7.32,,,19.52,234,H at albedo 0.5,0.01842,0.1392,7.108,0.3616,ATE,383,8428,,, +390725 (2003 HB),-4.2662e-14,-5.30,,,19.69,293,measured,0.01839,0.07357,6.833,0.5265,ATE,499,8067,,, +412976 (1987 WC),6.3548e-14,5.07,,,19.91,196,H at albedo 0.5,0.01832,0.1385,4.777,1.0437,AMO,318,13938,,, +2016 GE1,-1.4388e-12,-3.29,,,26.70,9,H at albedo 0.5,0.01819,0.1375,3.579,0.9910,APO,127,1098,,, +525484 (2005 GL),-1.1850e-13,-3.90,,,21.30,103,H at albedo 0.5,0.01801,0.1361,5.750,0.7327,APO,145,5727,,, +4769 Castalia (1989 PB),-8.6282e-15,-8.76,,,17.38,1400,measured,0.01777,0.0711,5.676,0.5494,APO,746,13488,,, +796120 (2009 EM1),-2.5487e-13,-8.32,,,23.00,47,H at albedo 0.5,0.01771,0.1338,3.161,1.1266,AMO,125,5851,,, +612472 (2002 SQ),5.8883e-14,4.14,,,19.85,201,H at albedo 0.5,0.01745,0.1319,4.586,0.8774,APO,380,8253,,, +2100 Ra-Shalom (1978 RA),-5.1354e-15,-9.09,,,16.24,2300,measured,0.01738,0.06952,6.945,0.4689,ATE,4245,18599,-0.971,agrees, +303450 (2005 BY2),6.2493e-14,9.02,,,20.51,187,measured,0.0172,0.06878,5.024,0.8496,APO,301,7584,,, +388188 (2006 DP14),-3.9399e-14,-5.97,,,19.01,297,H at albedo 0.5,0.01719,0.1299,4.445,0.3055,APO,531,7377,,, +443880 (2001 UZ16),-5.1207e-14,-4.98,,,19.38,228,measured,0.01718,0.06872,3.983,1.0089,APO,451,7717,,, +2062 Aten (1976 AA),-1.0608e-14,-9.25,,,17.11,1100,measured,0.01717,0.06868,6.182,0.7901,ATE,1024,23339,,, +276770 (2004 HC),-6.0353e-14,-6.26,,,19.94,193,H at albedo 0.5,0.01716,0.1297,7.138,0.3167,ATE,220,7680,,, +510529 (2012 EY11),-1.2829e-13,-6.53,,,21.58,91,H at albedo 0.5,0.01714,0.1296,5.448,0.9753,APO,154,8054,,, +331876 (2004 CL),7.9455e-14,3.82,,,20.56,145,H at albedo 0.5,0.01698,0.1283,4.867,0.5958,APO,180,7829,,, +385186 (1994 AW1),1.4191e-14,7.34,,,17.64,811,measured,0.01693,0.06774,5.547,1.0215,AMO,2792,13614,,, +15817 Lucianotesi (1994 QC),-3.0066e-14,-8.62,,,18.47,380,H at albedo 0.5,0.01682,0.1272,4.901,1.1680,AMO,2483,11732,,, +2007 TF68,-2.0250e-13,-14.17,,,22.62,56,H at albedo 0.5,0.01676,0.1267,4.598,1.0330,AMO,167,7329,,, +142561 (2002 TX68),-2.6365e-14,-3.76,,,18.20,431,H at albedo 0.5,0.0167,0.1263,4.147,1.1826,AMO,1454,8772,,, +2018 HG2,-4.2880e-13,-6.43,,,24.26,26,H at albedo 0.5,0.01667,0.126,5.231,0.8012,APO,59,7497,,, +886859 (2021 UN7),-2.8434e-13,-16.59,,,23.37,40,H at albedo 0.5,0.01666,0.1259,5.963,0.6062,ATE,125,4030,,, +523828 (1992 BC),-5.8957e-14,-8.64,,,19.96,191,H at albedo 0.5,0.01661,0.1255,4.608,0.9209,APO,213,12654,,, +17511 (1992 QN),1.7457e-14,7.10,,,17.32,646,H at albedo 0.5,0.01659,0.1254,5.253,0.7630,APO,2898,12462,,, +506590 (2005 XB1),1.1374e-13,7.94,,,21.97,99,measured,0.01657,0.06627,5.435,0.6576,APO,132,6577,,, +2017 AZ13,-1.4762e-13,-6.52,,,21.97,76,H at albedo 0.5,0.01648,0.1246,6.377,0.6816,ATE,116,6583,,, +2006 HJ18,-1.4161e-13,-3.25,,,21.88,79,H at albedo 0.5,0.01648,0.1245,5.651,0.7400,APO,75,6618,,, +162215 (1999 TL12),4.0556e-14,6.26,,,19.17,275,H at albedo 0.5,0.01644,0.1243,5.593,0.6095,APO,429,10208,,, +162783 (2000 YJ11),-9.0029e-14,-3.71,,,20.91,124,H at albedo 0.5,0.01637,0.1238,4.930,1.0086,APO,139,8740,,, +747011 (2012 PG6),6.5970e-14,10.97,,,20.24,168,H at albedo 0.5,0.01634,0.1235,6.842,0.3215,ATE,480,8424,,, +3908 Nyx (1980 PA),1.1056e-14,4.74,,,17.45,1000,measured,0.01627,0.06507,3.779,1.0430,AMO,1985,16395,0.938;0.920,agrees, +164121 (2003 YT1),-6.4197e-15,-64.40,,,16.15,1717,measured,0.01622,0.06488,5.322,0.7857,APO,2597,15580,,, +474179 (1999 VS6),-3.7885e-14,-3.33,,,19.08,287,H at albedo 0.5,0.016,0.121,5.171,0.9304,APO,632,9113,,, +613471 (2006 RJ1),-1.6375e-13,-4.76,,,22.27,66,H at albedo 0.5,0.01592,0.1203,6.289,0.6649,ATE,248,5213,,, +388945 (2008 TZ3),7.0399e-14,4.64,,,20.44,153,H at albedo 0.5,0.0159,0.1202,4.272,0.9686,APO,2416,6578,,, +612970 (2005 HN3),-9.7154e-14,-5.99,,,21.15,111,H at albedo 0.5,0.01582,0.1196,6.838,0.5683,ATE,245,6990,,, +450237 (2002 XY38),-1.1188e-13,-14.41,,,23.18,96,measured,0.0158,0.06322,6.525,0.7129,ATE,145,7342,,, +470975 (2009 SC15),-1.1027e-13,-5.23,,,21.43,97,H at albedo 0.5,0.01578,0.1193,5.076,1.0384,AMO,339,8707,,, +242191 (2003 NZ6),2.8869e-14,7.92,,,19.02,370,measured,0.01572,0.06287,7.203,0.4028,ATE,647,7996,,, +875272 (2002 LX),1.0125e-13,6.14,,,21.27,105,H at albedo 0.5,0.0156,0.1179,3.100,0.8342,APO,189,8636,,, +399308 (1993 GD),7.4685e-14,13.24,,,20.62,141,H at albedo 0.5,0.01552,0.1174,5.581,0.8400,APO,163,10884,,, +467460 (2006 JF42),3.6234e-14,6.23,,,19.05,291,H at albedo 0.5,0.01552,0.1173,8.329,0.2808,ATE,368,6903,,, +1995 FO,8.0182e-14,7.02,,,20.78,131,H at albedo 0.5,0.01548,0.117,4.472,0.9459,APO,237,10607,,, +762379 (2011 CG2),-1.0712e-13,-4.61,,,21.41,98,H at albedo 0.5,0.01548,0.117,5.356,0.9909,APO,450,5155,,, +337252 (2000 SD8),-8.1575e-14,-12.20,,,20.82,129,H at albedo 0.5,0.01546,0.1169,5.488,0.7746,APO,232,8794,,, +2000 EB14,-2.7103e-13,-33.20,,,23.43,39,H at albedo 0.5,0.01545,0.1168,6.515,0.4517,ATE,80,8041,,, +164222 (2004 RN9),-8.2315e-14,-3.45,,,20.85,127,H at albedo 0.5,0.01539,0.1163,4.921,0.9821,APO,258,7902,,, +877717 (2010 WT8),-1.4179e-13,-3.41,,,22.04,73,H at albedo 0.5,0.01533,0.1158,5.418,0.8245,APO,120,5798,,, +65717 (1993 BX3),8.1696e-14,14.68,,,20.87,126,H at albedo 0.5,0.01513,0.1144,4.722,1.0032,APO,5611,12271,,, +2017 SN17,-1.9409e-13,-8.14,,,22.77,52,H at albedo 0.5,0.01499,0.1133,5.453,1.0672,AMO,70,4406,,, +2023 YO1,8.3159e-13,7.46,,,25.93,12,H at albedo 0.5,0.01499,0.1133,6.030,0.9574,APO,61,930,,, +2025 XA6,-1.2635e-13,-3.56,,,21.84,81,H at albedo 0.5,0.01497,0.1132,4.571,1.1395,AMO,59,9247,,, +307070 (2002 AV31),-3.5844e-14,-5.53,,,20.65,282,measured,0.01487,0.05949,4.913,0.9830,APO,612,8804,,, +162004 (1991 VE),2.4253e-14,7.71,,,18.28,415,H at albedo 0.5,0.01481,0.112,6.454,0.2987,ATE,1890,25965,,, +337084 (1998 SE36),-4.7921e-14,-4.84,,,19.76,210,H at albedo 0.5,0.0148,0.1119,4.868,1.2084,AMO,434,10242,,, +152754 (1999 GS6),-2.4278e-14,-5.49,,,19.22,414,measured,0.01479,0.05916,5.198,0.5985,APO,553,9532,,, +446789 (1998 FN9),8.1063e-14,3.26,,,20.91,124,H at albedo 0.5,0.01474,0.1115,4.699,1.0676,AMO,147,10272,,, +2015 SD,-3.8415e-13,-48.78,,,24.30,26,H at albedo 0.5,0.01466,0.1109,6.776,0.6326,ATE,102,4397,,, +883081 (2016 JE),-1.2942e-13,-6.11,,,21.94,77,H at albedo 0.5,0.01465,0.1107,7.001,0.4339,ATE,130,4423,,, +311554 (2006 BQ147),-2.5986e-14,-4.77,,,18.72,382,measured,0.01461,0.05843,7.001,0.4736,ATE,622,12481,,, +2016 WU1,3.0955e-13,5.30,,,23.85,32,H at albedo 0.5,0.01454,0.1099,4.167,0.8366,APO,46,2924,,, +99942 Apophis (2004 MN4),-2.9018e-14,-156.09,1.02,,19.09,340,measured,0.01452,0.05807,6.466,0.7461,ATE,7370,6599,,, +462959 (2011 DU),8.6096e-14,8.16,,,21.08,114,H at albedo 0.5,0.01448,0.1095,5.339,0.7991,APO,650,5394,,, +162181 (1999 LF6),-1.3472e-14,-3.95,,,18.20,729,measured,0.01445,0.0578,4.636,1.0141,APO,1914,16459,,, +216985 (2000 QK130),9.6630e-14,6.36,,,21.34,101,H at albedo 0.5,0.01442,0.109,5.323,0.8714,APO,251,8148,,, +265482 (2005 EE),9.0896e-14,9.58,,,21.21,108,H at albedo 0.5,0.0144,0.1088,5.485,0.7588,APO,474,6907,,, +2000 PN8,1.3255e-13,17.22,,,22.04,73,H at albedo 0.5,0.01433,0.1083,5.039,0.9807,APO,180,7680,,, +2000 TU28,-8.3919e-14,-13.08,,,21.05,116,H at albedo 0.5,0.01431,0.1082,5.710,0.8765,APO,276,7915,,, +628250 (2014 QL390),-1.4552e-13,-4.30,,,22.25,67,H at albedo 0.5,0.01428,0.1079,3.652,1.2441,AMO,131,7642,,, +33342 (1998 WT24),-2.2453e-14,-65.71,,,18.02,432,measured,0.01427,0.05709,7.909,0.4185,ATE,1983,9571,,, +2015 XC352,-7.5217e-13,-5.92,,,25.82,13,H at albedo 0.5,0.01426,0.1078,5.996,0.8674,APO,87,1307,,, +177016 (2003 BM47),-5.0324e-14,-3.45,,,19.95,192,H at albedo 0.5,0.01424,0.1077,5.230,0.4847,APO,156,8006,,, +267759 (2003 MC7),-3.1072e-14,-5.43,,,18.91,310,H at albedo 0.5,0.0142,0.1073,4.729,1.1204,AMO,613,26155,,, +523590 (2001 QC96),-8.5750e-14,-3.56,,,21.12,112,H at albedo 0.5,0.01416,0.107,4.773,0.8287,APO,609,7546,,, +2014 YD,-3.6813e-13,-4.45,,,24.29,26,H at albedo 0.5,0.01412,0.1067,5.763,0.9789,APO,167,3879,,, +2007 EG,-4.1792e-13,-19.11,,,24.58,23,H at albedo 0.5,0.01402,0.106,7.598,0.4769,ATE,148,6945,,, +11066 Sigurd (1992 CC1),-4.5248e-15,-4.69,,,15.17,2104,measured,0.01401,0.05603,4.505,0.8693,APO,2680,18013,,, +2016 CO246,-7.3215e-13,-4.24,,,25.80,13,H at albedo 0.5,0.01401,0.1059,6.093,0.8691,ATE,46,1464,,, +674590 (2015 RH2),-1.2674e-13,-3.33,,,22.00,75,H at albedo 0.5,0.01395,0.1055,5.200,0.8933,APO,401,3146,,, +2012 UU136,9.8315e-14,6.66,,,21.45,96,H at albedo 0.5,0.01394,0.1054,5.235,0.9143,APO,91,7313,,, +612103 (1999 SK10),-4.6800e-14,-3.49,,,19.84,202,H at albedo 0.5,0.01393,0.1053,3.986,0.9849,APO,517,7860,,, +488803 (2005 GB120),-4.5291e-14,-5.57,,,20.48,209,measured,0.01393,0.05571,7.284,0.4789,ATE,239,6988,,, +1996 AE2,5.5973e-14,8.02,,,20.23,169,H at albedo 0.5,0.01392,0.1053,4.592,1.0166,APO,311,8785,,, +363027 (1998 ST27),1.6336e-14,101.97,,,19.58,578,measured,0.01389,0.05557,6.974,0.3855,ATE,1054,10208,,, +2000 EM26,-1.5954e-13,-8.49,,,22.51,59,H at albedo 0.5,0.01389,0.105,7.066,0.4357,ATE,93,7358,,, +25143 Itokawa (1998 SF36),-2.8550e-14,-3.97,,,19.26,330,measured,0.01386,0.05545,4.897,0.9531,APO,1025,9588,,, +2004 KG1,-3.1030e-13,-14.72,,,23.96,30,H at albedo 0.5,0.01385,0.1047,6.996,0.4921,ATE,113,8111,,, +2016 AG193,-2.5088e-13,-3.95,,,23.50,38,H at albedo 0.5,0.01384,0.1046,4.833,1.0524,AMO,50,3275,,, +10302 (1989 ML),3.9373e-14,13.35,,,19.48,239,H at albedo 0.5,0.01384,0.1046,5.065,1.0986,AMO,1419,13393,,, +1999 UQ,-1.1834e-13,-10.03,,,21.87,79,H at albedo 0.5,0.01383,0.1046,5.588,1.0770,AMO,120,8738,,, +66400 (1999 LT7),-2.2850e-14,-8.48,,,19.27,411,measured,0.01382,0.05527,6.739,0.3657,ATE,835,13942,,, +1620 Geographos (1951 RA),-3.6668e-15,-15.39,,,15.27,2560,measured,0.01381,0.05525,5.073,0.8278,APO,10218,27424,-0.884,agrees, +2008 UW91,-1.3411e-13,-3.64,,,22.15,70,H at albedo 0.5,0.01378,0.1042,5.300,0.4914,APO,104,5870,,, +86667 (2000 FO10),1.2548e-14,6.26,,,17.54,745,measured,0.01376,0.05502,6.687,0.3484,ATE,2444,13186,,, +2018 YH,-1.1655e-13,-3.37,,,21.85,80,H at albedo 0.5,0.01375,0.1039,5.523,0.8241,APO,106,4761,,, +2008 LG2,-5.7971e-13,-4.86,,,25.34,16,H at albedo 0.5,0.01371,0.1036,6.900,0.6556,ATE,119,5490,,, +376848 (2001 RY47),4.1296e-14,7.56,,,19.61,225,H at albedo 0.5,0.01367,0.1033,6.471,0.5503,ATE,616,9160,,, +164207 Cardea (2004 GU9),-5.6615e-14,-7.73,,,21.19,163,measured,0.01358,0.05431,6.041,0.8650,APO,363,9082,,, +847431 (1994 CJ1),-9.8369e-14,-16.67,,,21.51,94,H at albedo 0.5,0.01357,0.1026,4.502,1.0054,APO,222,11555,,, +491007 (2011 GL62),-3.9460e-14,-4.59,,,19.53,233,H at albedo 0.5,0.01355,0.1024,5.202,0.3340,APO,232,9542,,, +2017 DN109,1.1306e-13,3.10,,,21.82,81,H at albedo 0.5,0.01352,0.1022,4.886,0.2071,APO,70,4741,,, +2010 XX72,-1.2624e-13,-4.38,,,22.06,73,H at albedo 0.5,0.01352,0.1022,6.557,0.6470,ATE,139,4394,,, +612197 (2000 WP19),1.8753e-13,13.47,,,22.93,49,H at albedo 0.5,0.01345,0.1017,6.858,0.6080,ATE,80,6974,,, +203471 (2002 AU4),-3.7757e-14,-4.20,,,19.45,242,H at albedo 0.5,0.01345,0.1017,6.801,0.5358,ATE,472,11377,,, +85989 (1999 JD6),-6.2475e-15,-3.26,,,17.07,1462,measured,0.01344,0.05376,6.501,0.3242,ATE,3852,12805,-0.941,agrees, +2016 CA138,-2.2222e-13,-4.90,,,23.31,41,H at albedo 0.5,0.01338,0.1012,5.988,0.9483,ATE,272,3647,,, +613569 (2006 TU7),1.1878e-13,16.43,,,21.95,77,H at albedo 0.5,0.01338,0.1012,6.825,0.4509,ATE,196,8055,,, +2000 AH205,-1.6017e-13,-3.35,,,22.60,57,H at albedo 0.5,0.01338,0.1011,5.390,0.6806,APO,81,7459,,, +422686 (2000 AC6),5.0983e-14,18.96,,,21.60,176,measured,0.0132,0.05281,6.868,0.6091,ATE,464,9513,,, +363599 (2004 FG11),-5.8998e-14,-13.85,,,21.04,152,measured,0.0132,0.05278,4.041,0.4376,APO,528,8052,,, +163899 (2003 SD220),-1.1302e-14,-10.73,,,17.56,791,measured,0.01315,0.05262,7.056,0.6545,ATE,1935,9153,,, +351545 (2005 TE15),-4.3365e-14,-4.68,,,19.81,205,H at albedo 0.5,0.01309,0.09895,5.200,0.7906,APO,481,7379,,, +2003 MK4,-7.0291e-14,-3.71,,,20.86,126,H at albedo 0.5,0.01308,0.09889,5.644,0.8847,APO,276,7155,,, +2340 Hathor (1976 UA),-2.9601e-14,-46.72,,,20.41,300,measured,0.01307,0.05227,6.882,0.4641,ATE,572,16477,,, +11054 (1991 FA),-1.2201e-14,-4.54,,,17.07,725,H at albedo 0.5,0.01301,0.09832,3.731,1.0957,AMO,1792,32461,,, +2014 NV63,-2.0796e-13,-4.76,,,23.23,42,H at albedo 0.5,0.01299,0.09823,5.141,0.6413,APO,48,4383,,, +297418 (2000 SP43),-2.1645e-14,-10.22,,,18.51,407,measured,0.01296,0.05185,7.098,0.4326,ATE,1260,9199,,, +333889 (1998 SV4),9.5859e-15,4.96,,,18.24,919,measured,0.01296,0.05185,6.735,0.2923,ATE,1299,10249,,, +441987 (2010 NY65),-3.8408e-14,-26.07,,-1.95,21.35,228,measured,0.01289,0.05154,5.983,0.6321,APO,999,5134,,, +2015 CL,-5.9014e-13,-31.75,,,25.52,15,H at albedo 0.5,0.01285,0.0971,7.721,0.3190,ATE,74,3657,,, +136582 (1992 BA),-4.3539e-14,-5.70,,,19.86,200,H at albedo 0.5,0.01284,0.09708,4.874,1.2507,AMO,517,12427,,, +837610 (2013 RE6),9.1925e-14,10.13,,,21.49,95,H at albedo 0.5,0.0128,0.09676,5.777,0.8482,APO,180,9064,,, +433953 (1997 XR2),3.3505e-14,15.73,,,20.91,259,measured,0.01277,0.05108,5.717,0.8602,APO,548,10332,,, +480883 (2001 YE4),-6.9496e-14,-75.89,,,20.90,124,H at albedo 0.5,0.0127,0.09599,8.291,0.3111,ATE,456,8762,,, +469445 (2002 LT24),-5.9855e-14,-46.87,,,22.14,143,measured,0.01259,0.05038,7.871,0.3631,ATE,287,8065,,, +524522 Zoozve (2002 VE68),-5.8268e-14,-51.93,,,20.54,147,H at albedo 0.5,0.01257,0.09499,7.862,0.4268,ATE,610,7622,,, +2016 RT17,-2.2984e-13,-4.66,,,23.53,37,H at albedo 0.5,0.01251,0.09455,4.673,1.1495,AMO,54,3628,,, +612346 (2002 GQ5),-6.9269e-14,-4.21,,,20.93,122,H at albedo 0.5,0.01248,0.09436,5.330,0.6022,APO,77,8900,,, +2020 GE,-1.9398e-12,-88.82,14.02,,28.17,4,H at albedo 0.5,0.01246,0.09419,6.139,0.9384,ATE,58,1699,,, +422638 (1994 CB),-4.3823e-14,-10.08,,,21.16,193,measured,0.01245,0.04978,5.409,0.9827,APO,205,11704,,, +234341 (2001 FZ57),-2.4571e-14,-3.74,,,18.93,344,measured,0.01244,0.04975,6.145,0.3737,ATE,545,12369,,, +2002 JR100,-3.0047e-13,-29.34,,,24.36,28,measured,0.01238,0.04952,6.437,0.6473,ATE,165,8776,,, +527715 (2007 YQ56),4.3712e-14,4.21,,,19.95,192,H at albedo 0.5,0.01237,0.09351,5.364,0.8122,APO,407,6452,,, +369984 (1998 QR52),-2.7636e-14,-5.99,,,18.96,303,H at albedo 0.5,0.01234,0.09327,5.803,0.7433,APO,495,7648,,, +827103 (2000 CR101),-5.0856e-14,-3.12,,,20.29,164,H at albedo 0.5,0.01231,0.09303,4.176,1.2780,AMO,245,9355,,, +484403 (2007 XF25),-8.5433e-14,-4.77,,,21.42,98,H at albedo 0.5,0.01229,0.09287,5.258,1.0266,AMO,106,6609,,, +2063 Bacchus (1977 HB),-8.1466e-15,-10.35,,,17.21,1024,measured,0.01227,0.0491,5.670,0.7012,APO,1561,17584,,, +368184 (2000 RN77),-2.1885e-14,-3.45,,,19.36,381,measured,0.01227,0.04908,6.248,0.6486,ATE,517,9519,,, +185851 (2000 DP107),9.6425e-15,15.52,,,18.31,863,measured,0.01224,0.04898,4.749,0.8508,APO,2094,9096,,, +612358 (2002 JE9),-8.4288e-14,-5.52,,,21.40,99,H at albedo 0.5,0.01223,0.09248,5.694,0.6219,APO,252,8029,,, +2003 HM,-1.1677e-13,-61.17,,,22.11,71,H at albedo 0.5,0.01222,0.09238,7.076,0.5944,ATE,147,8053,,, +2003 TG2,-8.2620e-14,-4.98,,,21.36,100,H at albedo 0.5,0.01221,0.09233,6.447,0.6210,ATE,79,7323,,, +1685 Toro (1948 OA),-2.4264e-15,-10.39,,,14.26,3400,measured,0.01214,0.04856,4.714,0.7715,APO,5560,28569,-0.944,agrees, +1998 SD9,-2.8725e-13,-109.39,,,24.09,29,H at albedo 0.5,0.01208,0.09131,8.040,0.3482,ATE,150,7302,,, +152978 (2000 GJ147),1.5450e-14,3.73,,,19.57,531,measured,0.01207,0.04829,5.308,0.8872,APO,864,9400,,, +2011 JW10,-1.8619e-13,-5.08,,,23.15,44,H at albedo 0.5,0.01207,0.09125,4.882,1.0282,AMO,58,5458,,, +413260 (2003 TL4),-3.5798e-14,-5.31,,,19.57,229,H at albedo 0.5,0.01207,0.09123,7.396,0.4805,ATE,463,8028,,, +416151 (2002 RQ25),5.9329e-14,6.48,,,20.67,138,H at albedo 0.5,0.01205,0.0911,5.557,0.7712,APO,318,7392,,, +2018 BY6,2.1331e-13,6.02,,,23.45,38,H at albedo 0.5,0.01204,0.09105,5.219,0.8710,APO,44,5879,,, +523971 (1999 AJ39),7.5782e-14,4.11,,,21.21,108,H at albedo 0.5,0.012,0.09075,5.385,0.8373,APO,89,9472,,, +2014 EH45,-1.6048e-13,-4.59,,,22.84,51,H at albedo 0.5,0.012,0.09071,5.251,0.9534,APO,61,8066,,, +2015 EQ7,-2.2696e-13,-3.42,,,23.60,36,H at albedo 0.5,0.01196,0.09041,5.494,1.0731,AMO,72,4225,,, +2007 US12,-1.1516e-13,-3.27,,,22.13,70,H at albedo 0.5,0.01194,0.09027,6.449,0.4398,ATE,98,5148,,, +2009 OS5,-3.2603e-13,-9.10,,,24.40,25,H at albedo 0.5,0.01189,0.08985,5.466,1.0340,AMO,113,4071,,, +887773 (2007 DB61),-2.4596e-13,-58.84,,,23.79,33,H at albedo 0.5,0.01188,0.08977,7.150,0.5148,ATE,165,9850,,, +2001 CQ36,-1.5155e-13,-17.07,,,22.74,53,H at albedo 0.5,0.01187,0.08971,6.385,0.7713,ATE,159,7751,,, +66391 Moshup (1999 KW4),-6.1113e-15,-55.01,,,16.64,1317,measured,0.01184,0.04737,8.496,0.2002,ATE,3871,10188,,, +152828 (1999 VT25),7.6399e-14,8.43,,,21.26,105,H at albedo 0.5,0.01183,0.0894,5.279,0.5542,APO,171,9441,,, +524471 (2002 JW15),5.0420e-14,7.42,,,20.36,159,H at albedo 0.5,0.01181,0.0893,6.572,0.6595,ATE,666,10634,,, +2018 GY,-3.9497e-13,-6.25,,,24.83,20,H at albedo 0.5,0.01181,0.0893,7.479,0.4553,ATE,34,1471,,, +137126 (1999 CF9),-1.7639e-14,-4.86,,,18.08,455,H at albedo 0.5,0.01181,0.08928,3.867,0.7067,APO,1228,9840,,, +664078 (2008 DL5),-1.1283e-13,-8.13,,,22.11,71,H at albedo 0.5,0.01181,0.08927,5.514,0.5769,APO,140,5858,,, +876653 (2008 UX),-6.4093e-14,-4.97,,,20.89,125,H at albedo 0.5,0.01176,0.08893,6.904,0.2606,ATE,186,6239,,, +87024 (2000 JS66),2.3566e-14,10.18,,,18.72,339,H at albedo 0.5,0.01175,0.08883,5.260,0.9694,APO,3887,17201,,, +162142 (1998 VR),1.7283e-14,6.86,,,18.78,462,measured,0.01175,0.047,6.666,0.5971,ATE,773,9902,,, +153201 (2000 WO107),-1.5643e-14,-4.82,,,19.30,510,measured,0.01174,0.04696,6.228,0.1997,ATE,1137,8479,,, +613862 (2007 UY1),-1.7694e-13,-8.15,,,23.10,45,H at albedo 0.5,0.01174,0.08873,6.321,0.7822,ATE,312,5222,,, +251732 (1998 HG49),-9.5450e-14,-5.09,,,21.76,84,H at albedo 0.5,0.01174,0.08872,5.286,1.0656,AMO,156,9145,,, +10115 (1992 SK),-8.4790e-15,-7.65,,,17.14,938,measured,0.0117,0.04681,5.061,0.8429,APO,2903,26641,-0.947,agrees, +326354 (2000 SJ344),-1.5136e-13,-12.56,,,22.78,52,H at albedo 0.5,0.01164,0.08795,5.479,0.9412,APO,70,8260,,, +334412 (2002 EZ2),-4.8670e-14,-9.57,,,20.32,162,H at albedo 0.5,0.01162,0.08781,5.119,1.1917,AMO,653,8985,,, +2003 YS17,-8.7752e-14,-3.67,,,21.60,90,H at albedo 0.5,0.01162,0.0878,6.393,0.6391,ATE,209,6228,,, +2015 FS,-2.6863e-13,-4.16,,,24.03,29,H at albedo 0.5,0.01161,0.08778,4.696,1.0906,AMO,53,3611,,, +2013 MD6,-9.5006e-14,-8.66,,,21.79,82,H at albedo 0.5,0.01152,0.0871,6.738,0.4833,ATE,79,8038,,, +326683 (2002 WP),1.5103e-14,3.23,,,18.48,518,measured,0.01151,0.04605,4.562,1.1370,AMO,1337,8617,,, +612600 (2003 SM84),-1.6714e-13,-11.22,,,23.02,47,H at albedo 0.5,0.0115,0.08696,5.549,1.0331,AMO,112,6663,,, +2002 AY1,6.1732e-14,58.85,,,20.86,126,H at albedo 0.5,0.01149,0.08685,7.280,0.4386,ATE,270,8801,,, +350523 (2000 EA14),7.2031e-14,19.27,,,21.20,108,H at albedo 0.5,0.01146,0.08665,5.562,0.8910,APO,333,9557,,, +310442 (2000 CH59),3.8143e-14,10.71,,,19.82,204,H at albedo 0.5,0.01146,0.08663,6.771,0.4974,ATE,573,9133,,, +397326 (2006 TC1),2.7229e-14,5.37,,,19.09,286,H at albedo 0.5,0.01145,0.08656,4.087,1.0751,AMO,266,26854,,, +2016 PC2,-1.6426e-13,-18.82,,,23.00,47,H at albedo 0.5,0.01141,0.08626,7.167,0.4321,ATE,126,3653,,, +2022 OS,-9.2947e-14,-3.80,,,21.77,83,H at albedo 0.5,0.01138,0.086,6.729,0.4973,ATE,108,4403,,, +2017 HX,-2.9105e-13,-18.02,,,24.25,27,H at albedo 0.5,0.01137,0.08595,7.324,0.4196,ATE,55,6581,,, +2007 WQ3,-7.0083e-14,-3.56,,,21.16,110,H at albedo 0.5,0.01136,0.08588,4.760,1.1240,AMO,163,5891,,, +2007 PB8,-7.6716e-14,-6.52,,,21.36,100,H at albedo 0.5,0.01134,0.08573,6.615,0.4886,ATE,100,8787,,, +2012 HL31,-1.2555e-13,-6.42,,,22.43,61,H at albedo 0.5,0.01134,0.08572,6.582,0.5557,ATE,92,3652,,, +2012 BB124,6.7979e-14,9.66,,,21.10,113,H at albedo 0.5,0.01133,0.08563,5.392,0.9109,APO,219,16893,,, +490354 (2009 FF19),-7.8268e-14,-3.17,,,21.41,98,H at albedo 0.5,0.01131,0.08548,5.171,0.7164,APO,162,7581,,, +2005 NJ63,6.5655e-14,4.44,,,21.03,117,H at albedo 0.5,0.0113,0.08541,6.648,0.5021,ATE,106,7692,,, +256004 (2006 UP),-1.6355e-13,-4.06,,,23.02,47,H at albedo 0.5,0.01126,0.08509,4.337,1.1084,AMO,176,8059,,, +756476 (2019 NC1),-7.7499e-14,-3.01,,,21.40,99,H at albedo 0.5,0.01125,0.08503,6.106,0.8651,ATE,1211,4018,,, +595116 (2001 QE96),-1.4564e-13,-12.12,,,22.77,52,H at albedo 0.5,0.01125,0.08502,4.964,1.2738,AMO,95,8779,,, +2018 CW2,-5.5005e-13,-14.28,,,25.66,14,H at albedo 0.5,0.01122,0.08485,7.537,0.4387,ATE,161,1471,,, +2010 XA68,-8.9561e-14,-4.38,,,21.72,85,H at albedo 0.5,0.01122,0.0848,4.955,0.8087,APO,93,5476,,, +2012 TB53,-1.7087e-13,-8.06,,,23.13,44,H at albedo 0.5,0.01118,0.08451,5.089,1.0523,AMO,49,5106,,, +887324 (2004 MO3),-1.1023e-13,-6.45,,,22.18,69,H at albedo 0.5,0.01117,0.08444,5.141,0.8182,APO,207,7880,,, +2001 EC16,-1.2049e-13,-6.02,,,22.38,63,H at albedo 0.5,0.01114,0.08418,4.811,0.8557,APO,220,9160,,, +2003 AF23,-6.3958e-14,-20.12,,,21.01,118,H at albedo 0.5,0.01111,0.08398,6.631,0.5020,ATE,463,8407,,, +2007 DG8,-4.1858e-13,-14.32,,,25.09,18,H at albedo 0.5,0.01111,0.08395,4.779,0.8503,APO,74,6948,,, +85953 (1999 FK21),-1.2771e-14,-19.62,,,18.09,590,measured,0.01109,0.04435,7.564,0.2194,ATE,2132,20138,,, +416002 (2002 BN),-5.0130e-14,-5.55,,,20.49,150,H at albedo 0.5,0.01106,0.08363,6.554,0.3969,ATE,138,8388,,, +523801 (1993 TQ2),4.0295e-14,4.66,,,20.02,186,H at albedo 0.5,0.01104,0.08347,3.736,1.1533,AMO,805,10399,,, +417217 (2005 YS),3.1933e-14,3.05,,,19.52,234,H at albedo 0.5,0.01102,0.08327,7.898,0.3198,ATE,357,6598,,, +401885 (2001 RV17),-4.8271e-14,-10.76,,,20.42,155,H at albedo 0.5,0.011,0.08317,6.469,0.6016,ATE,421,7728,,, +90403 (2003 YE45),-1.3055e-14,-5.64,,,17.77,572,measured,0.01099,0.04395,5.099,0.8888,APO,2228,13535,,, +163249 (2002 GT),2.1825e-14,3.35,,,18.70,342,H at albedo 0.5,0.01098,0.08303,4.821,0.8943,APO,1636,8367,,, +474163 (1999 SO5),-5.7665e-14,-14.07,,,20.81,129,H at albedo 0.5,0.01098,0.08302,5.681,1.0152,APO,351,9504,,, +22753 (1998 WT),-1.3597e-14,-3.12,,,17.68,547,H at albedo 0.5,0.01095,0.08274,5.062,0.5243,APO,1466,25672,,, +162882 (2001 FD58),-2.2659e-14,-5.64,,,18.79,328,H at albedo 0.5,0.01094,0.0827,5.506,0.4642,APO,956,9500,,, +313276 (2002 AX1),3.6476e-14,8.29,,,19.83,203,H at albedo 0.5,0.01091,0.08246,6.493,0.4031,ATE,341,8816,,, +2005 EY169,-1.1273e-13,-4.00,,,22.29,65,H at albedo 0.5,0.01086,0.08209,4.893,1.0028,APO,168,6733,,, +3103 Eger (1982 BB),-4.9067e-15,-6.35,,,15.30,1500,measured,0.01083,0.04332,4.613,0.9068,APO,8989,16332,-1.000;-0.999,agrees, +452807 (2006 KV89),-7.8848e-14,-8.41,,,21.52,93,H at albedo 0.5,0.01083,0.08186,5.427,0.8363,APO,176,7439,,, +2011 AA37,-1.4861e-13,-11.33,,,22.90,49,H at albedo 0.5,0.01081,0.08172,5.664,1.0773,AMO,182,5701,,, +230111 (2001 BE10),-2.7915e-14,-6.19,,,19.27,263,H at albedo 0.5,0.0108,0.08168,7.026,0.5191,ATE,834,8830,,, +2022 QX4,-3.4020e-13,-3.82,,,24.70,22,H at albedo 0.5,0.0108,0.08166,8.267,0.3372,ATE,200,3321,,, +893065 (2016 CL136),5.9647e-14,13.16,,,21.30,123,measured,0.0108,0.04318,7.676,0.2756,ATE,291,3662,,, +2019 ER1,-1.8578e-13,-3.69,,,23.39,39,H at albedo 0.5,0.01078,0.08152,5.252,1.0505,AMO,108,2999,,, +152563 (1992 BF),-2.6945e-14,-38.90,,,19.71,272,measured,0.01078,0.04314,6.528,0.6612,ATE,638,25988,,, +152742 (1998 XE12),1.7724e-14,3.81,,,19.10,413,measured,0.01077,0.04308,6.463,0.2290,ATE,565,10285,,, +141531 (2002 GB),2.4129e-14,6.30,,,19.15,303,measured,0.01076,0.04303,5.929,0.4674,ATE,900,8435,,, +2019 UH14,-2.0273e-13,-3.02,,,23.59,36,H at albedo 0.5,0.01073,0.08113,5.360,0.8890,APO,202,3839,,, +348306 (2005 AY28),-7.7546e-14,-20.42,,,21.51,94,H at albedo 0.5,0.0107,0.08088,6.631,0.3750,ATE,271,7638,,, +2020 QJ1,-3.6674e-13,-16.50,,,24.89,20,H at albedo 0.5,0.01067,0.08065,5.254,1.1291,AMO,40,4425,,, +1221 Amor (1932 EA1),-7.2345e-15,-3.41,,,17.37,1000,measured,0.01065,0.04258,3.781,1.0852,AMO,734,34548,,, +413577 (2005 UL5),-4.4878e-14,-9.92,,,20.34,161,H at albedo 0.5,0.01061,0.08022,6.233,0.4028,ATE,420,7279,,, +533638 (2014 KT86),-4.5819e-14,-4.78,,,20.39,157,H at albedo 0.5,0.01059,0.08004,5.252,0.9882,APO,322,8256,,, +2021 XF4,-2.8337e-13,-3.27,,,24.35,25,H at albedo 0.5,0.01057,0.07991,5.252,1.1099,AMO,50,2966,,, +483459 (2002 EM6),4.4005e-14,4.77,,,20.31,163,H at albedo 0.5,0.01055,0.07976,5.280,0.9959,APO,369,7489,,, +613286 (2005 YQ96),-5.0748e-14,-7.50,,,20.63,141,H at albedo 0.5,0.0105,0.07937,7.659,0.4953,ATE,99,6559,,, +494710 (2005 MO13),-5.3583e-14,-10.05,,,20.75,133,H at albedo 0.5,0.01049,0.0793,6.764,0.5088,ATE,449,8787,,, +310842 (2003 AK18),-3.4401e-14,-13.39,,,19.79,207,H at albedo 0.5,0.01048,0.07922,6.684,0.5400,ATE,886,8448,,, +2020 UL3,-1.6686e-13,-4.64,,,23.22,43,H at albedo 0.5,0.01047,0.07918,5.207,0.8177,APO,244,3190,,, +2010 FX9,-2.3479e-13,-10.78,,,24.06,30,measured,0.01036,0.04146,5.464,0.7163,APO,107,6014,,, +2009 JR2,-1.4565e-13,-4.30,,,22.95,48,H at albedo 0.5,0.01035,0.07827,5.070,1.0261,AMO,70,5297,,, +455184 (2000 ED14),6.5798e-14,9.25,,,21.23,107,H at albedo 0.5,0.01033,0.07807,6.872,0.3618,ATE,168,9055,,, +2003 MS2,-6.5062e-14,-3.29,,,21.21,108,H at albedo 0.5,0.01031,0.07791,5.826,0.9105,APO,282,6896,,, +253062 (2002 TC70),-6.1633e-14,-9.68,,,21.10,113,H at albedo 0.5,0.01027,0.07764,4.807,1.0995,AMO,470,8774,,, +396593 (2001 HC),2.4073e-14,3.06,,,19.06,290,H at albedo 0.5,0.01026,0.07759,6.599,0.4379,ATE,357,8430,,, +1997 AC11,-5.1021e-14,-3.54,,,20.70,136,H at albedo 0.5,0.01022,0.07727,6.360,0.5772,ATE,171,10204,,, +2016 RP40,-3.3820e-13,-6.61,,,24.81,21,H at albedo 0.5,0.01021,0.07717,5.373,0.7837,APO,63,3661,,, +613398 (2006 FK),6.5560e-14,4.04,,,21.25,106,H at albedo 0.5,0.0102,0.07707,6.404,0.6059,ATE,109,5860,,, +344074 (1997 UH9),2.3170e-14,4.98,,,19.00,298,H at albedo 0.5,0.01016,0.07677,6.903,0.4360,ATE,803,10290,,, +357622 (2005 EY95),-4.2543e-14,-6.16,,,20.32,162,H at albedo 0.5,0.01015,0.07675,5.569,0.5004,APO,319,7632,,, +474158 (1999 FA),-5.0813e-14,-7.45,,,20.71,136,H at albedo 0.5,0.01013,0.0766,5.708,0.9352,APO,499,17525,,, +264308 (1999 NA5),4.4620e-14,3.18,,,20.43,154,H at albedo 0.5,0.01012,0.07652,4.637,1.0796,AMO,185,9648,,, +2004 BM11,9.0226e-14,3.40,,,21.96,76,H at albedo 0.5,0.01012,0.07649,4.491,0.6886,APO,51,7172,,, +526798 (2007 AA9),-1.1998e-13,-5.71,,,22.58,57,H at albedo 0.5,0.01011,0.07645,6.795,0.4974,ATE,77,5880,,, +876393 (2008 BP16),-8.3794e-14,-3.61,,,21.81,82,H at albedo 0.5,0.01007,0.07612,6.808,0.2903,ATE,107,6554,,, +2021 JK2,3.2579e-13,12.04,,,24.76,21,H at albedo 0.5,0.01006,0.07607,6.666,0.6219,ATE,40,5495,,, +329275 (1999 VP6),-3.7908e-14,-4.76,,,20.09,180,H at albedo 0.5,0.01006,0.07603,4.731,0.9586,APO,244,9746,,, +338292 (2002 UA31),-2.4114e-14,-3.32,,,19.11,283,H at albedo 0.5,0.01005,0.07595,7.102,0.4097,ATE,548,8342,,, +69230 Hermes (1937 UB),-1.2452e-14,-7.27,,,17.68,547,H at albedo 0.5,0.01002,0.07577,4.020,0.6224,APO,2716,32466,,, +29075 (1950 DA),-5.2356e-15,-5.03,,,17.28,1300,measured,0.01001,0.04006,4.026,0.8364,APO,1184,27983,,, +247517 (2002 QY6),-2.5229e-14,-6.67,,,19.59,269,measured,0.009986,0.03994,6.920,0.2459,ATE,666,8459,,, +2007 RY19,-1.2803e-13,-4.48,,,22.75,53,H at albedo 0.5,0.009979,0.07543,5.569,0.8267,APO,67,5111,,, +2015 XF261,-4.0485e-13,-9.10,,,25.25,17,H at albedo 0.5,0.009979,0.07543,6.082,0.6740,ATE,73,2991,,, +2023 KR1,-1.6927e-13,-4.89,,,23.36,40,H at albedo 0.5,0.009962,0.07531,4.945,1.1512,AMO,48,4369,,, +2023 KH4,8.7415e-13,3.43,,,26.93,8,H at albedo 0.5,0.00994,0.07514,7.062,0.5557,ATE,33,1100,,, +2015 JJ,-9.4159e-14,-4.64,,,22.10,71,H at albedo 0.5,0.0099,0.07484,5.758,0.8910,APO,300,8552,,, +1999 SG10,-4.9902e-14,-3.82,,,20.73,134,H at albedo 0.5,0.009861,0.07454,4.344,0.5621,APO,108,9723,,, +455415 (2003 GA),6.9498e-14,3.31,,,21.45,96,H at albedo 0.5,0.009857,0.07451,5.032,1.0365,AMO,362,8323,,, +468540 (2006 MD12),-2.7642e-14,-4.59,,,19.45,242,H at albedo 0.5,0.009848,0.07444,6.772,0.3311,ATE,342,7359,,, +455176 (1999 VF22),-4.9353e-14,-8.76,,,20.71,136,H at albedo 0.5,0.009842,0.0744,4.639,0.3432,APO,524,9237,,, +2001 OT,7.7410e-14,4.12,,,21.70,86,H at albedo 0.5,0.009785,0.07397,6.355,0.6325,ATE,98,6616,,, +350751 (2002 AW),-5.1561e-14,-9.40,,,20.82,129,H at albedo 0.5,0.009775,0.07389,5.732,0.7965,APO,710,8035,,, +2018 QQ,-4.6162e-13,-3.51,,,25.58,14,H at albedo 0.5,0.009774,0.07388,4.957,1.0257,AMO,55,2149,,, +456946 (2008 AF32),6.4594e-14,4.01,,,21.31,103,H at albedo 0.5,0.009772,0.07387,5.151,1.0764,AMO,161,6018,,, +137799 (1999 YB),1.9873e-14,3.12,,,18.76,333,H at albedo 0.5,0.009728,0.07354,4.936,1.2226,AMO,1181,12902,,, +2009 MW,-5.2004e-14,-3.70,,,20.86,126,H at albedo 0.5,0.009679,0.07316,6.446,0.6396,ATE,146,5140,,, +522684 (2016 JP),-5.9080e-14,-3.53,,,21.14,111,H at albedo 0.5,0.009665,0.07306,6.019,0.6129,ATE,763,3700,,, +6489 Golevka (1991 JX),-1.2185e-14,-8.40,,,19.22,530,measured,0.009503,0.03801,3.185,0.9425,APO,1017,8968,,, +457662 (2009 DZ),-8.6170e-14,-4.60,,,22.00,75,H at albedo 0.5,0.009487,0.07172,4.557,1.0142,APO,193,5152,,, +875496 (2004 PS42),5.9852e-14,3.65,,,21.21,108,H at albedo 0.5,0.009481,0.07167,5.073,1.0343,AMO,162,7808,,, +217837 (2001 LC),2.4413e-14,3.83,,,19.27,263,H at albedo 0.5,0.009449,0.07143,5.567,0.3401,APO,298,9146,,, +2020 CJ1,-2.0465e-13,-4.44,,,23.89,31,H at albedo 0.5,0.009436,0.07133,4.712,1.0476,AMO,70,3714,,, +137052 Tjelvar (1998 VO33),8.7269e-15,5.11,,,17.04,735,H at albedo 0.5,0.009433,0.0713,4.725,0.2376,APO,1615,10195,,, +480808 (1994 XL1),-4.5743e-14,-27.26,,,20.64,140,H at albedo 0.5,0.009421,0.07122,8.293,0.3179,ATE,298,10594,,, +523950 (1998 SZ27),-3.6575e-14,-3.37,,,20.17,174,H at albedo 0.5,0.009353,0.0707,6.407,0.4464,ATE,150,9175,,, +204131 (2003 YL),-3.2858e-14,-4.92,,,19.94,193,H at albedo 0.5,0.009342,0.07062,5.261,0.4213,APO,376,8721,,, +2012 BV26,8.9070e-14,5.17,,,22.11,71,H at albedo 0.5,0.009322,0.07047,5.454,0.9640,APO,115,4376,,, +85774 (1998 UT18),-6.7313e-15,-5.15,,,19.09,939,measured,0.0093,0.0372,4.662,0.9415,APO,903,13589,,, +450300 (2004 QD14),-4.5948e-14,-6.93,,,20.68,137,H at albedo 0.5,0.009291,0.07023,6.320,0.6236,ATE,193,8076,,, +154590 (2003 MA3),-7.3378e-14,-7.15,,,21.70,86,measured,0.009285,0.03714,5.551,0.6607,APO,123,9980,,, +2002 TB70,-7.6490e-14,-3.03,,,21.79,82,H at albedo 0.5,0.009277,0.07012,5.474,0.9836,APO,97,8735,,, +136818 Selqet (1997 MW1),2.0769e-14,8.30,,,18.96,303,H at albedo 0.5,0.009273,0.07009,6.326,0.6128,ATE,781,10627,,, +2003 GQ22,6.2110e-14,5.10,,,21.34,101,H at albedo 0.5,0.009267,0.07005,6.734,0.7141,ATE,318,8058,,, +2000 YS134,-2.1326e-13,-5.67,,,24.02,30,H at albedo 0.5,0.009262,0.07001,6.864,0.6641,ATE,58,8435,,, +499998 (2011 PT),-2.1212e-13,-7.04,,,24.01,30,H at albedo 0.5,0.009255,0.06996,4.935,1.0309,AMO,205,2300,,, +875759 (2005 XT77),6.4324e-14,4.63,,,21.42,98,H at albedo 0.5,0.00925,0.06992,6.925,0.6171,ATE,125,7267,,, +162421 (2000 ET70),-1.3953e-14,-5.60,,,18.11,449,H at albedo 0.5,0.009214,0.06965,6.279,0.8294,ATE,743,17851,,, +163000 (2001 SW169),-2.3689e-14,-7.20,,,19.26,264,H at albedo 0.5,0.009211,0.06963,5.144,1.1840,AMO,1885,10388,,, +2016 UW80,-2.0153e-13,-3.26,,,23.91,31,H at albedo 0.5,0.009207,0.0696,5.376,0.9674,APO,121,3642,,, +380818 (2005 YV128),4.5197e-14,5.09,,,20.67,138,H at albedo 0.5,0.009181,0.0694,6.338,0.4500,ATE,232,6646,,, +322756 (2001 CK32),-2.3257e-14,-3.67,,,19.23,268,H at albedo 0.5,0.009169,0.06931,7.867,0.4470,ATE,1294,7723,,, +513312 (2007 DM41),8.5207e-14,15.68,,,22.06,73,H at albedo 0.5,0.009125,0.06898,5.214,0.5579,APO,221,6579,,, +2015 MC,-2.1884e-13,-4.26,,,24.11,28,H at albedo 0.5,0.009118,0.06893,5.751,0.7867,APO,121,4642,,, +410622 (2008 QF),-7.2456e-14,-5.14,,,21.72,85,H at albedo 0.5,0.009075,0.0686,3.672,1.2931,AMO,282,8843,,, +425755 (2011 CP4),5.4815e-14,8.14,,,21.12,112,H at albedo 0.5,0.009051,0.06842,6.113,0.1182,ATE,187,8449,,, +85770 (1998 UP1),-4.5562e-14,-4.64,,,20.72,135,H at albedo 0.5,0.009045,0.06837,5.903,0.6533,ATE,468,12791,,, +474231 (2001 HZ7),-3.2440e-14,-3.41,,,20.02,186,H at albedo 0.5,0.008889,0.0672,4.458,0.7371,APO,323,9164,,, +427684 (2004 DH2),3.5471e-14,6.46,,,20.22,170,H at albedo 0.5,0.008864,0.06701,6.228,0.5663,ATE,378,8083,,, +2007 AM,-7.4024e-14,-4.32,,,21.82,81,H at albedo 0.5,0.008854,0.06693,7.192,0.4257,ATE,98,5501,,, +2018 PK10,-1.3807e-13,-4.36,,,23.18,43,H at albedo 0.5,0.008829,0.06674,4.030,1.2322,AMO,45,5131,,, +37655 Illapa (1994 PM),-1.1816e-14,-3.64,,,17.85,506,H at albedo 0.5,0.008795,0.06648,4.188,0.3659,APO,658,10923,,, +85236 (1993 KH),-1.7798e-14,-4.79,,,18.75,334,H at albedo 0.5,0.008753,0.06616,5.119,0.8499,APO,1178,11938,,, +3361 Orpheus (1982 HR),1.9802e-14,9.98,,,19.50,300,measured,0.008741,0.03496,5.213,0.8191,APO,3216,16130,,, +162361 (2000 AF6),3.5159e-14,6.57,,,20.24,168,H at albedo 0.5,0.008706,0.06581,6.693,0.5154,ATE,506,11715,,, +2021 UT1,-3.2204e-13,-7.76,,,25.05,18,H at albedo 0.5,0.008703,0.06579,5.154,1.0465,AMO,54,2943,,, +829223 (2006 CT),-8.9924e-14,-18.39,,,22.28,66,H at albedo 0.5,0.008703,0.06579,5.637,0.8437,APO,137,11315,,, +408982 (2002 SP),4.5033e-14,7.37,,,20.78,131,H at albedo 0.5,0.008696,0.06573,6.375,0.3614,ATE,140,8784,,, +2007 EC,-8.7678e-14,-4.51,,,22.23,67,H at albedo 0.5,0.008683,0.06564,6.426,0.7466,ATE,258,6212,,, +678964 (2018 CC14),9.4055e-14,3.15,,,22.40,62,H at albedo 0.5,0.008613,0.06511,3.555,0.9450,APO,97,4517,,, +2020 XA5,-2.2457e-13,-4.54,,,24.29,26,H at albedo 0.5,0.008613,0.06511,7.070,0.5059,ATE,53,2245,,, +488453 (1994 XD),2.1934e-14,9.50,,,19.24,267,H at albedo 0.5,0.008608,0.06507,3.129,0.6245,APO,658,10641,,, +481965 (2009 EB1),-4.2638e-14,-3.92,,,20.69,137,H at albedo 0.5,0.008582,0.06487,5.504,0.6038,APO,190,8304,,, +2005 NE21,5.4746e-14,11.56,,,21.24,106,H at albedo 0.5,0.008553,0.06466,7.257,0.3973,ATE,189,7707,,, +827991 (2002 XQ40),-9.3173e-14,-15.84,,,22.40,62,H at albedo 0.5,0.008532,0.0645,5.690,0.6976,APO,210,7020,,, +345705 (2006 VB14),-1.4271e-14,-8.93,,,18.58,406,measured,0.008526,0.0341,7.380,0.4440,ATE,1416,6651,,, +2005 MF5,6.8297e-14,3.46,,,21.73,85,H at albedo 0.5,0.008515,0.06437,7.105,0.4969,ATE,95,6586,,, +876912 (2009 BE58),6.7476e-14,3.54,,,21.71,86,H at albedo 0.5,0.00849,0.06418,6.254,0.4128,ATE,159,6175,,, +614134 (2008 TC4),6.4994e-14,4.09,,,21.65,88,H at albedo 0.5,0.008407,0.06355,7.300,0.3477,ATE,180,4726,,, +437841 (1998 HD14),-4.8024e-14,-4.74,,,21.00,119,H at albedo 0.5,0.00838,0.06335,6.211,0.6622,ATE,210,7735,,, +219071 (1997 US9),-8.6677e-15,-3.25,,,17.20,657,measured,0.008379,0.03352,5.753,0.7559,APO,3354,10579,,, +2017 EE23,7.2800e-14,5.64,,,21.93,77,H at albedo 0.5,0.008278,0.06257,6.671,0.5420,ATE,88,6595,,, +2007 TQ24,7.7193e-14,8.79,,,22.06,73,H at albedo 0.5,0.008267,0.06249,7.205,0.3654,ATE,177,6252,,, +2011 EP51,-3.2641e-13,-17.01,,,25.20,17,H at albedo 0.5,0.008233,0.06223,7.033,0.5742,ATE,318,3240,,, +612227 (2001 QC34),-3.1984e-14,-7.98,,,20.16,175,H at albedo 0.5,0.008217,0.06211,5.518,0.9169,APO,1165,9125,,, +2018 HB,-8.2565e-14,-4.66,,,22.22,68,H at albedo 0.5,0.008214,0.06209,7.013,0.3335,ATE,60,5841,,, +216523 (2001 HY7),4.0995e-14,9.38,,,20.70,136,H at albedo 0.5,0.008213,0.06209,6.454,0.5372,ATE,353,8111,,, +89136 (2001 US16),3.3622e-14,5.45,,,20.27,166,H at albedo 0.5,0.008211,0.06207,4.824,1.0132,APO,1355,8874,,, +481442 (2006 WO3),-6.1413e-14,-8.81,,,21.58,91,H at albedo 0.5,0.008204,0.06202,7.159,0.4419,ATE,311,7331,,, +891458 (2015 AJ44),8.8725e-14,3.16,,,22.38,63,H at albedo 0.5,0.0082,0.06199,6.588,0.4644,ATE,99,4079,,, +2007 SW2,5.8051e-14,4.86,,,21.46,96,H at albedo 0.5,0.008196,0.06195,6.439,0.4874,ATE,116,6901,,, +2003 BM4,2.8921e-13,4.98,,,24.95,19,H at albedo 0.5,0.008185,0.06187,5.229,0.7944,APO,98,7677,,, +1862 Apollo (1932 HA),-3.6569e-15,-18.33,,,16.09,1500,measured,0.008071,0.03229,4.413,0.6468,APO,3701,34822,-0.953,agrees, +7341 (1991 VK),-5.5804e-15,-3.17,,,16.96,982,measured,0.008063,0.03225,3.847,0.9094,APO,2864,12815,,, +364136 (2006 CJ),-3.1631e-14,-22.95,,,20.18,173,H at albedo 0.5,0.008052,0.06087,8.155,0.1658,ATE,637,7339,,, +326386 (2001 OA14),1.5130e-14,3.10,,,18.58,361,H at albedo 0.5,0.008047,0.06083,5.502,0.6299,APO,565,9227,,, +54071 (2000 GQ146),8.8655e-15,3.10,,,17.42,617,H at albedo 0.5,0.008044,0.06081,4.823,1.0669,AMO,2058,13828,,, +2000 CK59,-1.9154e-13,-6.78,,,24.10,28,H at albedo 0.5,0.008018,0.06061,4.531,1.0166,APO,70,6523,,, +2016 TH94,-2.3710e-13,-11.80,,,24.58,23,H at albedo 0.5,0.007956,0.06014,6.972,0.5186,ATE,130,3301,,, +2009 WB105,1.4407e-13,23.97,,,23.50,38,H at albedo 0.5,0.00795,0.06009,6.906,0.6171,ATE,196,5480,,, +2008 CO,-9.4151e-14,-5.02,,,22.59,57,H at albedo 0.5,0.0079,0.05972,5.365,1.1624,AMO,137,6801,,, +2016 NB1,-1.7145e-13,-30.74,,,23.90,31,H at albedo 0.5,0.007869,0.05948,7.508,0.4307,ATE,117,6595,,, +138911 (2001 AE2),-2.2033e-14,-3.47,,,19.45,242,H at albedo 0.5,0.00785,0.05934,4.870,1.2395,AMO,1023,15162,,, +741081 (2005 LW3),-6.1224e-14,-4.28,,,21.67,87,H at albedo 0.5,0.007847,0.05932,4.543,0.7716,APO,133,6426,,, +264357 (2000 AZ93),-4.7041e-14,-7.82,,,21.17,113,measured,0.007822,0.03129,7.665,0.4780,ATE,160,8000,,, +679648 (2019 XS),-1.6654e-13,-10.19,,,23.85,32,H at albedo 0.5,0.007822,0.05913,6.000,0.6776,APO,137,8648,,, +162117 (1998 SD15),-1.8150e-14,-11.15,,,19.04,292,H at albedo 0.5,0.00781,0.05904,6.288,0.6111,ATE,837,10246,,, +1998 SU4,-5.3371e-14,-4.24,,,21.41,98,H at albedo 0.5,0.007711,0.05829,5.236,0.4816,APO,96,9915,,, +138852 (2000 WN10),3.1864e-14,7.29,,,20.29,164,H at albedo 0.5,0.007711,0.05829,5.973,0.7033,APO,1479,9187,0.984,agrees, +1999 AO10,-2.0369e-13,-8.40,,,24.32,26,H at albedo 0.5,0.007704,0.05824,6.536,0.8109,ATE,230,9927,,, +2007 CT26,-1.4174e-13,-3.75,,,23.55,37,H at albedo 0.5,0.007643,0.05778,6.831,0.5243,ATE,118,6963,,, +467351 (2003 KO2),3.2736e-14,8.52,,,20.37,159,H at albedo 0.5,0.007635,0.05771,7.739,0.3560,ATE,484,8414,,, +2002 EW8,1.6140e-13,4.40,,,23.84,32,H at albedo 0.5,0.007615,0.05757,3.854,0.9974,APO,112,5518,,, +2009 BD,-1.1464e-12,-13.70,6.59,,28.10,5,H at albedo 0.5,0.007605,0.05749,5.801,1.0070,APO,180,885,,, +141495 (2002 EZ11),-1.3332e-14,-3.87,,,18.46,382,H at albedo 0.5,0.007493,0.05664,5.222,0.2205,APO,1285,8852,,, +2011 WA,-5.8659e-14,-6.78,,,21.68,87,H at albedo 0.5,0.007484,0.05657,6.826,0.6033,ATE,279,5116,,, +443837 (2000 TJ1),-2.0089e-14,-3.88,,,19.68,253,measured,0.007479,0.02991,5.209,1.0667,AMO,684,9156,,, +22099 (2000 EX106),9.6457e-15,3.01,,,18.09,524,measured,0.007437,0.02975,5.582,0.7993,APO,2345,11016,,, +267940 (2004 EM20),-3.2773e-14,-3.74,,,20.43,154,H at albedo 0.5,0.007435,0.05621,5.468,0.5260,APO,282,8032,,, +516435 (2004 FJ29),-5.1182e-14,-7.52,,,21.40,99,H at albedo 0.5,0.007428,0.05615,6.352,0.5944,ATE,170,7702,,, +2010 XN,-1.8303e-13,-10.55,,,24.17,28,H at albedo 0.5,0.007418,0.05608,5.488,0.7366,APO,85,4970,,, +5381 Sekhmet (1991 JY),5.3760e-15,4.82,,,16.75,935,measured,0.007396,0.02958,6.026,0.6666,ATE,1473,12875,,, +2001 BX15,5.9648e-14,4.67,,,21.75,84,H at albedo 0.5,0.007368,0.0557,3.663,0.7860,APO,132,8769,,, +2002 VU114,-1.0365e-13,-7.92,,,22.95,48,H at albedo 0.5,0.007368,0.0557,5.318,0.8434,APO,66,8586,,, +192559 (1998 VO),-3.2461e-14,-4.55,,,20.43,154,H at albedo 0.5,0.007365,0.05567,5.712,0.8312,APO,575,7308,,, +2003 BN4,-1.8860e-13,-18.15,,,24.26,26,H at albedo 0.5,0.007334,0.05544,5.065,1.0523,AMO,114,7356,,, +2021 SF4,-2.1115e-13,-3.77,,,24.51,24,H at albedo 0.5,0.007318,0.05532,4.932,1.0259,AMO,49,2183,,, +2022 OB5,-1.6572e-12,-25.52,,,28.99,3,H at albedo 0.5,0.007297,0.05516,5.956,0.9699,APO,49,1268,,, +2005 RZ2,-1.2006e-13,-7.80,,,23.30,41,H at albedo 0.5,0.007264,0.05491,5.596,0.9920,APO,69,7650,,, +2007 TF15,-2.2751e-13,-10.90,,,24.69,22,H at albedo 0.5,0.007257,0.05486,5.613,1.0592,AMO,76,5112,,, +2011 KE3,-1.6363e-13,-4.48,,,23.98,30,H at albedo 0.5,0.007239,0.05472,4.332,1.1286,AMO,79,5129,,, +350462 (1998 KG3),-6.8388e-14,-11.65,,,22.10,71,H at albedo 0.5,0.007191,0.05436,5.422,1.0234,AMO,312,9131,,, +10563 Izhdubar (1993 WD),-6.3130e-15,-6.26,,,16.94,769,H at albedo 0.5,0.007145,0.05401,5.546,0.7388,APO,659,11187,,, +446924 (2002 VV17),-2.7812e-14,-8.58,,,20.16,175,H at albedo 0.5,0.007145,0.05401,6.924,0.4718,ATE,515,12123,,, +2014 TG17,-7.9389e-14,-3.05,,,22.45,61,H at albedo 0.5,0.007105,0.05371,3.155,1.0561,AMO,138,5841,,, +363116 (2001 GQ2),-2.9628e-14,-3.18,,,20.32,162,H at albedo 0.5,0.007071,0.05345,5.059,0.6034,APO,406,8770,,, +4581 Asclepius (1989 FC),-3.5772e-14,-5.97,,,20.74,134,H at albedo 0.5,0.007036,0.05319,5.919,0.6573,APO,424,11706,,, +2012 HN13,-9.9049e-14,-4.60,,,22.96,48,H at albedo 0.5,0.007009,0.05298,4.681,0.9744,APO,180,3810,,, +895359 (2020 FW6),-1.1260e-13,-6.14,,,23.25,42,H at albedo 0.5,0.006971,0.0527,4.832,0.9194,APO,94,5474,,, +2017 BP32,-1.1865e-13,-3.56,,,23.37,40,H at albedo 0.5,0.006951,0.05254,4.861,1.0372,AMO,242,3297,,, +377097 (2002 WQ4),-2.1944e-14,-4.85,,,19.71,215,H at albedo 0.5,0.006936,0.05243,3.676,0.8683,APO,417,27253,,, +152664 (1998 FW4),2.1809e-14,5.49,,,19.70,216,H at albedo 0.5,0.006925,0.05235,3.038,0.7208,APO,997,11529,,, +523605 (2004 RX10),-4.9653e-14,-4.13,,,21.49,95,H at albedo 0.5,0.006914,0.05226,6.439,0.5967,ATE,209,7975,,, +2013 JL22,-4.2442e-14,-3.40,,,21.16,110,H at albedo 0.5,0.00688,0.05201,5.150,0.4815,APO,111,8688,,, +354182 (2002 DU3),3.5342e-14,4.29,,,20.77,132,H at albedo 0.5,0.006856,0.05183,5.443,0.8726,APO,286,8333,,, +2011 DP,8.6355e-14,4.07,,,22.71,54,H at albedo 0.5,0.006856,0.05183,7.097,0.3315,ATE,43,5483,,, +2019 QU2,-6.8409e-14,-10.18,,,22.21,68,H at albedo 0.5,0.006837,0.05169,6.869,0.2432,ATE,66,7688,,, +592968 (2015 FV118),5.2622e-14,4.86,,,21.66,88,H at albedo 0.5,0.006776,0.05122,6.719,0.3570,ATE,168,8383,,, +2010 VQ,-8.5426e-13,-15.36,,,27.72,5,H at albedo 0.5,0.006751,0.05103,6.840,0.6911,ATE,61,4411,,, +483656 (2005 ES70),-1.3842e-13,-48.09,,,23.77,33,H at albedo 0.5,0.006745,0.05099,7.476,0.4685,ATE,227,7312,,, +330659 (2008 GG2),9.7663e-14,14.07,,,23.02,47,H at albedo 0.5,0.006722,0.05081,4.313,1.1465,AMO,341,8090,,, +437844 (1999 MN),3.7788e-14,23.14,,,21.01,118,H at albedo 0.5,0.006563,0.04961,8.255,0.2256,ATE,298,9860,,, +477465 (2009 XZ1),5.1741e-14,3.84,,,21.70,86,H at albedo 0.5,0.006541,0.04944,6.758,0.3990,ATE,191,8409,,, +2003 UY12,-1.0566e-13,-24.16,,,23.27,42,H at albedo 0.5,0.006482,0.049,7.987,0.2843,ATE,93,7323,,, +525268 (2004 XL14),-4.5241e-14,-3.42,,,21.43,97,H at albedo 0.5,0.006476,0.04895,7.498,0.4479,ATE,280,5109,,, +469737 (2005 NW44),2.8004e-14,4.39,,,20.39,157,H at albedo 0.5,0.006471,0.04892,7.350,0.4026,ATE,377,7331,,, +6239 Minos (1989 QF),1.2144e-14,11.65,,,18.59,360,H at albedo 0.5,0.006429,0.0486,5.375,0.6763,APO,2120,15939,,, +875181 (1999 VR6),-3.7613e-14,-5.34,,,21.05,116,H at albedo 0.5,0.006414,0.04848,3.212,0.5216,APO,160,9490,,, +665390 (2009 HD82),-5.0299e-14,-3.73,,,21.69,86,H at albedo 0.5,0.006388,0.04829,5.008,0.6562,APO,204,5139,,, +2014 QH33,-1.7829e-13,-3.82,,,24.44,24,H at albedo 0.5,0.006381,0.04824,5.694,0.8842,APO,124,6207,,, +2011 PU1,-3.0304e-13,-6.07,,,25.60,14,H at albedo 0.5,0.006357,0.04806,4.958,0.9833,APO,110,2090,,, +329437 (2002 OA22),1.7517e-14,4.41,,,19.41,247,H at albedo 0.5,0.006357,0.04805,6.377,0.7081,ATE,921,7729,,, +2017 TW4,-2.3039e-13,-13.39,,,25.01,19,H at albedo 0.5,0.006342,0.04794,3.788,1.0405,AMO,73,5843,,, +302169 (2001 TD45),-2.2894e-14,-8.77,,,20.00,188,H at albedo 0.5,0.006331,0.04786,6.975,0.1772,ATE,298,8428,,, +2008 KV2,-4.0674e-14,-4.95,,,21.25,106,H at albedo 0.5,0.006326,0.04782,6.854,0.4998,ATE,337,6582,,, +2015 LA2,-9.1162e-14,-15.10,,,23.01,47,H at albedo 0.5,0.006304,0.04765,6.677,0.6350,ATE,122,5536,,, +13651 (1997 BR),-7.5674e-15,-4.80,,,17.86,562,measured,0.006258,0.02503,4.817,0.9275,APO,1174,16820,,, +417210 (2005 XV77),-2.9103e-14,-3.32,,,20.55,146,H at albedo 0.5,0.006248,0.04723,7.310,0.4594,ATE,655,6605,,, +2010 GD35,1.8964e-13,14.84,,,24.62,22,H at albedo 0.5,0.006248,0.04723,7.470,0.3968,ATE,70,4380,,, +2005 TG50,-2.0865e-13,-4.18,,,24.83,20,H at albedo 0.5,0.00624,0.04717,6.472,0.7980,ATE,77,5849,,, +2022 SU6,-1.3759e-13,-3.94,,,23.95,30,H at albedo 0.5,0.006171,0.04665,3.233,1.1556,AMO,66,5857,,, +2009 HG,-1.6385e-13,-3.58,,,24.34,25,H at albedo 0.5,0.006141,0.04642,4.808,1.0614,AMO,101,5819,,, +475534 (2006 TS7),3.8917e-14,5.63,,,21.25,106,H at albedo 0.5,0.006052,0.04575,6.186,0.3974,ATE,224,7254,,, +465824 (2010 FR),-4.7578e-14,-4.93,,,21.69,86,H at albedo 0.5,0.006042,0.04567,5.439,0.7180,APO,265,6017,,, +2022 OR6,-2.1397e-13,-9.30,,,24.97,19,H at albedo 0.5,0.006,0.04535,4.690,0.9810,APO,52,3683,,, +387733 (2003 GS),-1.1829e-14,-4.25,,,18.93,344,measured,0.005987,0.02395,6.618,0.6976,ATE,933,8101,,, +2015 BM510,-2.1984e-13,-4.32,,,25.04,18,H at albedo 0.5,0.005969,0.04512,6.337,0.8328,ATE,68,8403,,, +376879 (2001 WW1),-6.2899e-14,-4.43,,,22.35,64,H at albedo 0.5,0.005894,0.04456,5.190,1.0627,AMO,106,7295,,, +1995 CR,-4.7907e-14,-26.48,,,21.76,84,H at albedo 0.5,0.005891,0.04453,6.149,0.1193,ATE,264,11333,,, +2012 VM6,-2.4545e-13,-15.12,,,25.31,16,H at albedo 0.5,0.005885,0.04449,5.527,0.9405,APO,68,6593,,, +894048 (2017 BM123),-1.2300e-13,-6.91,,,23.81,33,H at albedo 0.5,0.005884,0.04448,4.914,0.9222,APO,389,3317,,, +450649 (2006 UY64),1.6073e-14,5.03,,,19.42,245,H at albedo 0.5,0.005806,0.04389,6.335,0.7850,ATE,777,6994,,, +2003 FY6,-6.9728e-14,-18.72,,,22.61,56,H at albedo 0.5,0.005797,0.04382,7.732,0.3051,ATE,204,7332,,, +2019 SV6,-1.2014e-13,-11.81,,,23.80,33,H at albedo 0.5,0.005774,0.04365,7.246,0.3932,ATE,46,5087,,, +226514 (2003 UX34),2.1631e-14,6.74,,,20.16,175,H at albedo 0.5,0.005557,0.04201,5.472,0.4209,APO,484,10977,,, +2006 CW,6.4693e-14,5.31,,,22.55,58,H at albedo 0.5,0.005529,0.04179,3.468,1.1372,AMO,161,7416,,, +1566 Icarus (1949 MA),-3.7526e-15,-13.25,,,16.53,1000,measured,0.005522,0.02209,5.298,0.1865,APO,1796,28192,,, +137924 (2000 BD19),-3.8147e-15,-8.62,,,17.49,970,measured,0.005445,0.02178,6.266,0.0921,ATE,1296,10591,,, +483422 (2000 CE59),-2.4843e-14,-3.25,,,20.53,147,H at albedo 0.5,0.005382,0.04069,5.475,0.9478,APO,395,8395,,, +277810 (2006 FV35),4.3026e-14,4.36,,,21.73,85,H at albedo 0.5,0.005364,0.04055,6.002,0.6234,APO,296,11328,,, +2016 GW221,-1.7021e-13,-9.65,0.53,5.23,24.75,21,H at albedo 0.5,0.005281,0.03992,7.050,0.6071,ATE,209,3300,,,dark comet +2009 UG,9.4193e-14,26.71,,,23.50,38,H at albedo 0.5,0.005198,0.03929,7.321,0.4922,ATE,279,5114,,, +369986 (1998 SO),2.2991e-14,6.83,,,20.44,153,H at albedo 0.5,0.005192,0.03925,7.576,0.2204,ATE,302,9844,,, +2008 GU20,7.9136e-14,4.86,,,23.16,44,H at albedo 0.5,0.005107,0.0386,3.806,1.1316,AMO,84,8778,,, +469219 Kamo`oalewa (2016 HO3),-1.3412e-13,-7.57,,,24.31,26,H at albedo 0.5,0.005096,0.03853,6.063,0.8985,APO,335,7660,,, +467336 (2002 LT38),2.4230e-14,6.06,,,20.61,142,H at albedo 0.5,0.00506,0.03825,6.916,0.5802,ATE,839,7698,,, +2018 PD22,1.0158e-13,4.20,,,23.81,33,H at albedo 0.5,0.004859,0.03673,7.206,0.3626,ATE,40,4386,,, +276033 (2002 AJ129),9.9160e-15,6.87,,,18.76,333,H at albedo 0.5,0.004854,0.03669,4.195,0.1166,APO,725,8828,,, +480820 (1998 VF32),2.7369e-14,8.08,,,20.97,120,H at albedo 0.5,0.004842,0.0366,6.778,0.4732,ATE,160,9074,,, +339714 (2005 ST1),-2.0099e-14,-5.79,,,20.35,160,H at albedo 0.5,0.004731,0.03576,4.505,0.9129,APO,544,12796,,, +1999 SH10,-6.0051e-14,-5.59,,,22.75,53,H at albedo 0.5,0.004681,0.03538,5.634,0.9549,APO,99,8388,,, +2006 WB,-7.3065e-14,-14.96,,,23.18,43,H at albedo 0.5,0.004672,0.03532,6.886,0.7033,ATE,330,6600,,, +2016 FT14,1.4421e-13,9.48,,,24.69,22,H at albedo 0.5,0.0046,0.03477,6.838,0.6367,ATE,69,2970,,, +612094 (1999 NW2),-7.4706e-14,-12.37,,,23.29,41,H at albedo 0.5,0.004541,0.03433,5.572,0.9947,APO,185,9692,,, +452334 (2001 LB),-2.6523e-14,-5.28,,,21.07,115,H at albedo 0.5,0.004481,0.03387,5.104,1.0024,APO,176,8039,,, +2008 CE119,-2.0332e-13,-4.05,,,25.55,15,H at albedo 0.5,0.004365,0.03299,5.247,0.9952,APO,62,6027,,, +2003 FF5,-7.1459e-14,-3.12,,,23.30,41,H at albedo 0.5,0.004324,0.03268,4.770,0.9532,APO,158,5978,,, +2015 EG,-2.0284e-13,-10.10,,,25.61,14,H at albedo 0.5,0.004236,0.03202,6.786,0.5561,ATE,151,2899,,, +2017 OU18,9.5048e-14,9.08,,,23.98,30,H at albedo 0.5,0.004205,0.03178,6.937,0.5140,ATE,33,4379,,, +434196 (2003 HG2),-3.0156e-14,-3.37,,,21.54,92,H at albedo 0.5,0.004103,0.03102,5.739,0.9195,APO,259,8464,,, +2014 RQ17,-4.2422e-14,-11.47,,,22.30,65,H at albedo 0.5,0.004068,0.03075,3.987,0.9851,APO,150,24907,,, +497113 (2004 EK1),-4.1909e-14,-8.61,,,22.29,65,H at albedo 0.5,0.004037,0.03052,5.093,0.9362,APO,262,7713,,, +2013 RB6,-3.3583e-14,-3.09,,,21.83,81,H at albedo 0.5,0.003999,0.03023,5.100,1.2105,AMO,144,8062,,, +22771 (1999 CU3),-3.5374e-15,-3.71,,,16.96,762,H at albedo 0.5,0.003967,0.02999,4.220,0.7503,APO,2777,9843,,, +477719 (2010 SG15),-1.5920e-13,-10.84,,,25.26,17,H at albedo 0.5,0.003906,0.02953,3.615,1.0884,AMO,131,5446,,, +523586 (1999 LK1),-3.7124e-14,-7.88,,,22.11,71,H at albedo 0.5,0.003885,0.02937,6.508,0.6052,ATE,115,9522,,, +1997 YM9,1.0394e-13,7.63,,,24.36,25,H at albedo 0.5,0.00386,0.02918,5.651,0.9820,APO,71,8656,,, +882844 (2016 ED157),-1.1969e-13,-5.54,,,24.68,22,H at albedo 0.5,0.003836,0.029,4.958,1.1098,AMO,122,3341,,, +2001 QJ142,-8.4570e-14,-27.40,,,23.97,30,H at albedo 0.5,0.003758,0.02841,5.793,0.9707,APO,154,8462,,, +1998 KY26,-2.1964e-13,-4.51,0.95,1.50,25.91,11,measured,0.003555,0.01422,5.186,0.9830,APO,85,9472,,,dark comet +2015 MB54,-7.7740e-14,-3.27,,,23.99,30,H at albedo 0.5,0.003423,0.02588,4.943,0.9949,APO,134,3199,,, +523809 (2007 TV18),-6.9906e-14,-3.95,,,23.79,33,H at albedo 0.5,0.003375,0.02551,5.115,0.8073,APO,117,6381,,, +363305 (2002 NV16),-2.3362e-14,-5.41,,,21.42,98,H at albedo 0.5,0.00336,0.0254,5.149,0.9655,APO,629,8226,,, +326290 Akhenaten (1998 HE3),-2.7828e-14,-24.50,,,21.81,82,H at albedo 0.5,0.003344,0.02528,6.654,0.4923,ATE,561,12086,,, +2012 TC4,-2.6556e-13,-4.06,3.00,,26.71,9,H at albedo 0.5,0.003341,0.02526,4.232,0.9661,APO,805,1897,,, +162120 (1998 SH36),-1.5481e-14,-3.47,,,20.64,140,H at albedo 0.5,0.003188,0.0241,5.533,0.4667,APO,280,10132,,, +2018 KR,-2.0932e-13,-10.75,,,26.39,10,H at albedo 0.5,0.003052,0.02307,6.673,0.7011,ATE,56,3702,,, +2006 GB1,-7.1679e-14,-3.19,,,24.10,28,H at albedo 0.5,0.003,0.02268,5.485,0.8063,APO,76,6808,,, +306383 (1993 VD),-2.1140e-14,-5.98,,,21.52,93,H at albedo 0.5,0.002903,0.02195,6.625,0.3928,ATE,208,11719,,, +1999 SF10,-7.4112e-14,-23.24,,,24.36,25,H at albedo 0.5,0.002752,0.0208,5.032,0.9548,APO,124,9632,,, +2013 GZ7,-6.2169e-14,-7.79,,,24.00,30,H at albedo 0.5,0.002725,0.0206,4.717,1.1363,AMO,89,7353,,, +2020 PP1,-2.0928e-13,-7.47,,,26.68,9,H at albedo 0.5,0.00267,0.02018,6.041,0.9360,APO,59,2508,,, +2004 FH,1.6912e-13,4.11,,,26.41,10,H at albedo 0.5,0.002443,0.01847,7.110,0.5826,ATE,273,6184,,, +2025 PN7,-1.5028e-13,-11.28,,,26.41,10,H at albedo 0.5,0.002171,0.01641,6.067,0.8930,APO,41,4651,,, +2007 XB23,-2.0000e-13,-3.29,,,27.10,7,H at albedo 0.5,0.002103,0.0159,5.941,0.9848,APO,22,6208,,, +2012 UK171,-5.5278e-14,-19.99,,,24.46,24,H at albedo 0.5,0.00196,0.01482,6.851,0.6672,ATE,286,4446,,, +867840 (2016 AO131),-5.0766e-14,-3.29,,,24.30,26,H at albedo 0.5,0.001938,0.01465,4.943,0.9805,APO,152,4533,,, +478784 (2012 UV136),-7.5633e-14,-4.59,,,25.60,14,H at albedo 0.5,0.001587,0.01199,6.029,0.8679,APO,148,3146,,, +2004 XG,-3.5390e-14,-3.74,,,24.16,28,H at albedo 0.5,0.001441,0.01089,6.984,0.5866,ATE,96,7373,,, +'Oumuamua (A/2017 U1),1.4413e-08,0.59,7.81,0.70,22.08,72,H at albedo 0.5,1529,1.156e+04,,0.2559,HYA,207,80,,, +7335 (1989 JA),-2.1106e-14,-1.81,,,17.70,1800,measured,0.0559,0.2236,3.921,0.9134,APO,2578,13444,,, +159402 (1999 AP10),-2.2927e-14,-2.43,,,16.61,895,H at albedo 0.5,0.03021,0.2283,3.286,1.0192,AMO,2112,9979,,, +2006 UE17,-1.8583e-13,-2.88,,,21.93,77,H at albedo 0.5,0.02113,0.1597,5.300,0.7850,APO,105,7147,,, +38086 Beowulf (1999 JB),-2.1979e-14,-2.96,,,17.36,643,measured,0.02079,0.08318,4.452,0.6159,APO,1293,12507,,, +7822 (1991 CS),-8.4794e-15,-2.08,,,17.34,1602,measured,0.01999,0.07995,5.365,0.9379,APO,3809,11845,,, +2015 TC25,-5.2736e-12,-1.90,7.49,,29.34,3,H at albedo 0.5,0.01976,0.1494,5.940,0.9088,APO,48,562,,, +349507 (2008 QY),3.2854e-14,2.22,,,18.50,375,H at albedo 0.5,0.01813,0.137,5.204,0.4886,APO,1035,12491,,, +2012 LA,1.8981e-12,0.24,5.66,,27.60,6,H at albedo 0.5,0.01585,0.1198,5.893,1.0180,AMO,103,179,,, +68950 (2002 QF15),-6.4849e-15,-2.75,,,16.39,1650,measured,0.01574,0.06298,5.688,0.6931,APO,2954,25963,,, +808862 (2018 UY),-7.8482e-14,-2.92,,,20.76,132,H at albedo 0.5,0.01529,0.1156,4.995,0.5853,APO,258,6631,,, +465617 (2009 EK1),-9.3891e-14,-3.00,,,21.36,100,H at albedo 0.5,0.01388,0.1049,5.131,0.9567,APO,86,7813,,, +2002 LY1,-1.3894e-13,-2.05,,,22.48,60,H at albedo 0.5,0.01226,0.0927,6.237,0.5937,ATE,188,5124,,, +2019 JV1,1.7188e-13,3.00,,,22.97,48,H at albedo 0.5,0.01211,0.09152,6.942,0.5116,ATE,171,3259,,, +2016 NJ33,-5.4861e-13,-2.87,3.24,5.23,25.53,15,H at albedo 0.5,0.01189,0.08985,4.934,1.0385,AMO,90,2261,,,dark comet +2005 VL1,-8.3206e-13,-1.48,-1.09,-6.12,26.45,10,H at albedo 0.5,0.0118,0.08921,6.645,0.6910,ATE,79,5874,,,dark comet +2013 XY20,5.6567e-13,1.67,-2.36,-10.01,25.64,14,H at albedo 0.5,0.01165,0.08807,5.514,1.0102,APO,72,2250,,,dark comet +612901 (2004 XP14),-3.6430e-14,-1.61,,,19.79,207,H at albedo 0.5,0.0111,0.08389,5.691,0.8850,APO,1382,5785,,, +620082 (2014 QL433),3.7629e-14,1.05,,,19.88,199,H at albedo 0.5,0.011,0.08314,3.369,0.5946,APO,366,4398,,, +1997 QK1,-3.9261e-14,-1.69,,,20.26,167,H at albedo 0.5,0.009633,0.07282,2.984,0.9845,APO,720,10305,,, +525229 (2004 UU1),-5.9645e-14,-2.26,,,21.17,110,H at albedo 0.5,0.009624,0.07275,5.053,0.8910,APO,227,6962,,, +2006 BE55,-8.2966e-14,-2.14,,,21.98,76,H at albedo 0.5,0.009219,0.06969,5.222,0.6878,APO,213,6243,,, +612781 (2004 MW2),-2.4823e-14,-2.98,,,19.37,251,H at albedo 0.5,0.009176,0.06936,5.133,0.4142,APO,183,8048,,, +794904 (2007 SQ6),9.1875e-14,1.29,,,22.30,65,H at albedo 0.5,0.00881,0.0666,5.856,0.8915,APO,376,6490,,, +2013 BA74,3.6457e-13,0.80,0.13,3.61,25.40,16,H at albedo 0.5,0.008386,0.06339,4.001,0.9743,APO,99,2559,,,dark comet +2010 VK139,-9.8154e-14,-2.58,,,23.71,55,measured,0.007943,0.03177,7.333,0.5599,ATE,96,4022,,, +162162 (1999 DB7),2.8432e-14,2.92,,,19.99,189,H at albedo 0.5,0.007899,0.05971,5.243,0.9707,APO,299,9047,,, +2012 BA35,-1.4916e-13,-2.11,,,23.75,33,H at albedo 0.5,0.007335,0.05545,5.756,0.9466,APO,131,3932,,, +7753 (1988 XB),-1.0539e-14,-2.82,,,18.01,470,H at albedo 0.5,0.007287,0.05509,4.475,0.7608,APO,1335,13289,,, +1865 Cerberus (1971 UA),-4.1265e-15,-2.19,,,16.77,1200,measured,0.007286,0.02914,5.592,0.5758,APO,2643,20062,-0.997,, +54509 YORP (2000 PH5),-8.7205e-14,-2.83,,,22.66,55,H at albedo 0.5,0.007085,0.05356,6.028,0.7746,APO,550,1826,,, +4660 Nereus (1982 DB),1.3558e-14,2.06,,,18.75,330,measured,0.006584,0.02633,4.500,0.9523,APO,5002,16336,,, +620071 (2011 WN15),2.0101e-14,2.33,,,19.64,222,H at albedo 0.5,0.006561,0.0496,4.690,0.1726,APO,288,2981,,, +98943 Torifune (2001 CC21),1.3089e-14,2.31,,,18.71,340,H at albedo 0.5,0.006557,0.04956,5.907,0.8060,APO,2398,15801,,, +2017 JF3,-5.0868e-14,-2.87,,,21.74,84,H at albedo 0.5,0.006313,0.04772,6.517,0.5900,ATE,126,4858,,, +5604 (1992 FE),-6.8122e-15,-0.94,,,17.32,550,measured,0.005513,0.02205,6.364,0.5519,ATE,1572,15082,,, +526742 (2006 WR127),2.4404e-14,2.65,,,20.46,152,H at albedo 0.5,0.005461,0.04128,6.477,0.5660,ATE,267,11736,,, +2005 QQ87,-6.8040e-14,-2.73,,,22.84,51,H at albedo 0.5,0.005088,0.03846,5.888,0.6996,APO,89,6204,,, +154244 (2002 KL6),-5.5236e-15,-0.84,,,17.57,575,H at albedo 0.5,0.004677,0.03536,3.367,1.0367,AMO,3943,11159,,, +2011 MD,-6.2796e-13,-0.17,2.99,,27.98,5,H at albedo 0.5,0.004403,0.03328,5.822,1.0173,AMO,532,967,,, +876954 (2009 FF),-3.7256e-14,-2.47,,,21.97,76,H at albedo 0.5,0.004159,0.03144,4.471,0.7835,APO,598,15195,,, +1998 WB2,-1.6794e-14,-2.53,,,21.85,150,measured,0.003707,0.01483,3.634,0.8152,APO,320,9147,,, +35107 (1991 VH),2.6208e-15,2.80,,,16.86,929,measured,0.003582,0.01433,5.475,0.9732,APO,6255,12673,,, +2010 RF12,-2.1216e-13,-1.00,0.59,-10.65,28.42,4,H at albedo 0.5,0.001215,0.009182,5.789,0.8616,APO,339,4375,,,dark comet diff --git a/papers/dark_comet/data/yarkovsky_sign.json b/papers/dark_comet/data/yarkovsky_sign.json new file mode 100644 index 0000000000000000000000000000000000000000..15bde4d20bc9f85164b1eb0b95951d97bb1a237b --- /dev/null +++ b/papers/dark_comet/data/yarkovsky_sign.json @@ -0,0 +1,14734 @@ +[ + { + "name": "1221 Amor (1932 EA1)", + "pdes": "1221", + "cls": "AMO", + "H": 17.37, + "d_min_m": 1000.0, + "d_src": "measured", + "A2": -7.234472974487445e-15, + "A2_snr": -3.410878347235948, + "xi": 0.01064501183695768, + "xi_typ": 0.04258004734783072, + "t_j": 3.780777535580071, + "q": 1.085156427482211, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "34548", + "n_obs": 734, + "cond": "0" + }, + { + "name": "1566 Icarus (1949 MA)", + "pdes": "1566", + "cls": "APO", + "H": 16.53, + "d_min_m": 1000.0, + "d_src": "measured", + "A2": -3.752585476090296e-15, + "A2_snr": -13.250654929697374, + "xi": 0.005521662317773304, + "xi_typ": 0.022086649271093217, + "t_j": 5.2979878419893875, + "q": 0.1864726778363724, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.2726, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "28192", + "n_obs": 1796, + "cond": "0" + }, + { + "name": "1580 Betulia (1950 KA)", + "pdes": "1580", + "cls": "AMO", + "H": 14.54, + "d_min_m": 5800.0, + "d_src": "measured", + "A2": -2.942172018383549e-15, + "A2_snr": -5.978809222482318, + "xi": 0.025109340406763977, + "xi_typ": 0.10043736162705591, + "t_j": 3.065709151380486, + "q": 1.124513590468122, + "known": null, + "cos_obl": [ + -0.462045395336692 + ], + "periods": [ + 6.13836 + ], + "rot_per": 6.1324, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "26991", + "n_obs": 2259, + "cond": "0" + }, + { + "name": "1620 Geographos (1951 RA)", + "pdes": "1620", + "cls": "APO", + "H": 15.27, + "d_min_m": 2560.0, + "d_src": "measured", + "A2": -3.666769818138181e-15, + "A2_snr": -15.387200243970547, + "xi": 0.01381220016069361, + "xi_typ": 0.05524880064277444, + "t_j": 5.073193301811843, + "q": 0.8278143599512814, + "known": null, + "cos_obl": [ + -0.8837723044255222 + ], + "periods": [ + 5.223336 + ], + "rot_per": 5.22204, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "27424", + "n_obs": 10218, + "cond": "0" + }, + { + "name": "1627 Ivar (1929 SH)", + "pdes": "1627", + "cls": "AMO", + "H": 12.79, + "d_min_m": 9120.0, + "d_src": "measured", + "A2": 1.704721503244914e-15, + "A2_snr": 4.538662149214361, + "xi": 0.022876391892008144, + "xi_typ": 0.09150556756803258, + "t_j": 3.8788026571048793, + "q": 1.122831708772996, + "known": null, + "cos_obl": [ + 0.6632963262115009, + 0.6669968426924922 + ], + "periods": [ + 4.795168, + 4.79517 + ], + "rot_per": 4.795, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "35448", + "n_obs": 14572, + "cond": "0" + }, + { + "name": "1685 Toro (1948 OA)", + "pdes": "1685", + "cls": "APO", + "H": 14.26, + "d_min_m": 3400.0, + "d_src": "measured", + "A2": -2.426426693205172e-15, + "A2_snr": -10.38710057022762, + "xi": 0.0121390679417848, + "xi_typ": 0.0485562717671392, + "t_j": 4.7140256752582514, + "q": 0.7714833637235538, + "known": null, + "cos_obl": [ + -0.9441136944824928 + ], + "periods": [ + 10.19782 + ], + "rot_per": 10.1995, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "28569", + "n_obs": 5560, + "cond": "0" + }, + { + "name": "1862 Apollo (1932 HA)", + "pdes": "1862", + "cls": "APO", + "H": 16.09, + "d_min_m": 1500.0, + "d_src": "measured", + "A2": -3.656897510338764e-15, + "A2_snr": -18.3303133350314, + "xi": 0.008071296434732042, + "xi_typ": 0.03228518573892817, + "t_j": 4.412918804140495, + "q": 0.6468498628096396, + "known": null, + "cos_obl": [ + -0.9526158501860661 + ], + "periods": [ + 3.065448 + ], + "rot_per": 3.065, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "34822", + "n_obs": 3701, + "cond": "0" + }, + { + "name": "1865 Cerberus (1971 UA)", + "pdes": "1865", + "cls": "APO", + "H": 16.77, + "d_min_m": 1200.0, + "d_src": "measured", + "A2": -4.126488539856504e-15, + "A2_snr": -2.1867983783023335, + "xi": 0.007286200861915006, + "xi_typ": 0.029144803447660024, + "t_j": 5.591635831892941, + "q": 0.5757574623597586, + "known": null, + "cos_obl": [ + -0.9968612643335645 + ], + "periods": [ + 6.803286 + ], + "rot_per": 6.8039, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "20062", + "n_obs": 2643, + "cond": "0" + }, + { + "name": "2062 Aten (1976 AA)", + "pdes": "2062", + "cls": "ATE", + "H": 17.11, + "d_min_m": 1100.0, + "d_src": "measured", + "A2": -1.060848761330574e-14, + "A2_snr": -9.248899401312764, + "xi": 0.017170597537030024, + "xi_typ": 0.0686823901481201, + "t_j": 6.1821528648911945, + "q": 0.7901488700548153, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 42.15, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "23339", + "n_obs": 1024, + "cond": "0" + }, + { + "name": "2063 Bacchus (1977 HB)", + "pdes": "2063", + "cls": "APO", + "H": 17.21, + "d_min_m": 1024.0, + "d_src": "measured", + "A2": -8.146607576849435e-15, + "A2_snr": -10.346212315023413, + "xi": 0.012274844624874914, + "xi_typ": 0.049099378499499656, + "t_j": 5.669739436560061, + "q": 0.7012041148778181, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 14.904, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "17584", + "n_obs": 1561, + "cond": "0" + }, + { + "name": "2100 Ra-Shalom (1978 RA)", + "pdes": "2100", + "cls": "ATE", + "H": 16.24, + "d_min_m": 2300.0, + "d_src": "measured", + "A2": -5.13542482459645e-15, + "A2_snr": -9.089247477161859, + "xi": 0.017379747487946046, + "xi_typ": 0.06951898995178418, + "t_j": 6.945390610128984, + "q": 0.4688538248443376, + "known": null, + "cos_obl": [ + -0.9714043650806142 + ], + "periods": [ + 19.8201 + ], + "rot_per": 19.797, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "18599", + "n_obs": 4245, + "cond": "0" + }, + { + "name": "2101 Adonis (1936 CA)", + "pdes": "2101", + "cls": "APO", + "H": 18.69, + "d_min_m": 600.0, + "d_src": "measured", + "A2": -3.267855330422292e-14, + "A2_snr": -6.197336109278005, + "xi": 0.028850498547567077, + "xi_typ": 0.11540199419026831, + "t_j": 3.550578370528121, + "q": 0.4419862378525967, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "32656", + "n_obs": 155, + "cond": "0" + }, + { + "name": "2340 Hathor (1976 UA)", + "pdes": "2340", + "cls": "ATE", + "H": 20.41, + "d_min_m": 300.0, + "d_src": "measured", + "A2": -2.960055031505014e-14, + "A2_snr": -46.7180402699655, + "xi": 0.013066530606806, + "xi_typ": 0.052266122427224, + "t_j": 6.881574242461225, + "q": 0.4640994340749517, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.35, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "16477", + "n_obs": 572, + "cond": "0" + }, + { + "name": "3103 Eger (1982 BB)", + "pdes": "3103", + "cls": "APO", + "H": 15.3, + "d_min_m": 1500.0, + "d_src": "measured", + "A2": -4.906706858357678e-15, + "A2_snr": -6.350901965257155, + "xi": 0.010829804625415612, + "xi_typ": 0.04331921850166245, + "t_j": 4.6130008968311635, + "q": 0.9068382508224095, + "known": null, + "cos_obl": [ + -0.9998580922253764, + -0.999458160629944 + ], + "periods": [ + 5.710153, + 5.710151 + ], + "rot_per": 5.7103, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "16332", + "n_obs": 8989, + "cond": "0" + }, + { + "name": "3200 Phaethon (1983 TB)", + "pdes": "3200", + "cls": "APO", + "H": 14.38, + "d_min_m": 6250.0, + "d_src": "measured", + "A2": -6.211322373903533e-15, + "A2_snr": -17.44753475815599, + "xi": 0.05712199114791747, + "xi_typ": 0.22848796459166987, + "t_j": 4.5094689159646855, + "q": 0.1402777870773155, + "known": null, + "cos_obl": [ + -0.8831058019716889 + ], + "periods": [ + 3.603957 + ], + "rot_per": 3.604, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "15692", + "n_obs": 8682, + "cond": "0" + }, + { + "name": "3361 Orpheus (1982 HR)", + "pdes": "3361", + "cls": "APO", + "H": 19.5, + "d_min_m": 300.0, + "d_src": "measured", + "A2": 1.980183299586718e-14, + "A2_snr": 9.975734506734096, + "xi": 0.008741096167384587, + "xi_typ": 0.03496438466953835, + "t_j": 5.2132446070271845, + "q": 0.819081021700381, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.5327, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "16130", + "n_obs": 3216, + "cond": "0" + }, + { + "name": "3908 Nyx (1980 PA)", + "pdes": "3908", + "cls": "AMO", + "H": 17.45, + "d_min_m": 1000.0, + "d_src": "measured", + "A2": 1.105625855085435e-14, + "A2_snr": 4.73704308091446, + "xi": 0.01626849717475759, + "xi_typ": 0.06507398869903036, + "t_j": 3.77947206033794, + "q": 1.04298133821056, + "known": null, + "cos_obl": [ + 0.9384685342043695, + 0.9196217339324835 + ], + "periods": [ + 4.42601, + 4.42601 + ], + "rot_per": 4.42601, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "16395", + "n_obs": 1985, + "cond": "0" + }, + { + "name": "4034 Vishnu (1986 PA)", + "pdes": "4034", + "cls": "APO", + "H": 18.5, + "d_min_m": 420.0, + "d_src": "measured", + "A2": -3.752395633871825e-14, + "A2_snr": -9.673615967702565, + "xi": 0.023189808509561045, + "xi_typ": 0.09275923403824418, + "t_j": 5.704370489657518, + "q": 0.5889987654051491, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 44.4, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "14574", + "n_obs": 1333, + "cond": "0" + }, + { + "name": "4179 Toutatis (1989 AC)", + "pdes": "4179", + "cls": "APO", + "H": 15.29, + "d_min_m": 5400.0, + "d_src": "measured", + "A2": -7.654593431691022e-15, + "A2_snr": -7.8420176536123565, + "xi": 0.060821221540799414, + "xi_typ": 0.24328488616319766, + "t_j": 3.137732909476837, + "q": 0.9545830393451017, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 176.0, + "A1_snr": -3.3932119466910486, + "A3_snr": null, + "verdict": null, + "arc": "33698", + "n_obs": 7141, + "cond": "0" + }, + { + "name": "4581 Asclepius (1989 FC)", + "pdes": "4581", + "cls": "APO", + "H": 20.74, + "d_min_m": 133.67185618828248, + "d_src": "H at albedo 0.5", + "A2": -3.577228513197383e-14, + "A2_snr": -5.966024871910245, + "xi": 0.007036001325715776, + "xi_typ": 0.05318717066332773, + "t_j": 5.919084454550028, + "q": 0.6573108979793151, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.008, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11706", + "n_obs": 424, + "cond": "0" + }, + { + "name": "4660 Nereus (1982 DB)", + "pdes": "4660", + "cls": "APO", + "H": 18.75, + "d_min_m": 330.0, + "d_src": "measured", + "A2": 1.35583643358465e-14, + "A2_snr": 2.0639921351570254, + "xi": 0.006583555331089176, + "xi_typ": 0.026334221324356703, + "t_j": 4.500281548259372, + "q": 0.9523380015635986, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 15.1749, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "16336", + "n_obs": 5002, + "cond": "0" + }, + { + "name": "4688 (1980 WF)", + "pdes": "4688", + "cls": "AMO", + "H": 19.6, + "d_min_m": 600.0, + "d_src": "measured", + "A2": -3.775571321861965e-14, + "A2_snr": -4.710631717856476, + "xi": 0.03333290611844139, + "xi_typ": 0.13333162447376556, + "t_j": 3.4437886365670316, + "q": 1.076824783484926, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "14739", + "n_obs": 332, + "cond": "0" + }, + { + "name": "4769 Castalia (1989 PB)", + "pdes": "4769", + "cls": "APO", + "H": 17.38, + "d_min_m": 1400.0, + "d_src": "measured", + "A2": -8.628187166084008e-15, + "A2_snr": -8.762249584730382, + "xi": 0.017774068238791234, + "xi_typ": 0.07109627295516494, + "t_j": 5.675894342780146, + "q": 0.5494298574051537, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.095, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13488", + "n_obs": 746, + "cond": "0" + }, + { + "name": "4947 Ninkasi (1988 TJ1)", + "pdes": "4947", + "cls": "AMO", + "H": 18.07, + "d_min_m": 457.1302685904148, + "d_src": "H at albedo 0.5", + "A2": -3.073817195102781e-14, + "A2_snr": -4.49322788350063, + "xi": 0.020675559204961197, + "xi_typ": 0.1562925367814847, + "t_j": 4.771595993172574, + "q": 1.139276584871456, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 21.1, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "17621", + "n_obs": 996, + "cond": "0" + }, + { + "name": "5381 Sekhmet (1991 JY)", + "pdes": "5381", + "cls": "ATE", + "H": 16.75, + "d_min_m": 935.0, + "d_src": "measured", + "A2": 5.375968069704913e-15, + "A2_snr": 4.821496026641178, + "xi": 0.007396181184572575, + "xi_typ": 0.0295847247382903, + "t_j": 6.0260964324127695, + "q": 0.6666486504535115, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.8233, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12875", + "n_obs": 1473, + "cond": "0" + }, + { + "name": "5604 (1992 FE)", + "pdes": "5604", + "cls": "ATE", + "H": 17.32, + "d_min_m": 550.0, + "d_src": "measured", + "A2": -6.812160657164344e-15, + "A2_snr": -0.9449522343132672, + "xi": 0.005512985133481714, + "xi_typ": 0.022051940533926857, + "t_j": 6.364461556055402, + "q": 0.5519202723005122, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.3375, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "15082", + "n_obs": 1572, + "cond": "0" + }, + { + "name": "6239 Minos (1989 QF)", + "pdes": "6239", + "cls": "APO", + "H": 18.59, + "d_min_m": 359.78245323627544, + "d_src": "H at albedo 0.5", + "A2": 1.214398790877543e-14, + "A2_snr": 11.65449895275953, + "xi": 0.006428957503512601, + "xi_typ": 0.04859835069627715, + "t_j": 5.375272833192199, + "q": 0.6763315877293392, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.5558, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "15939", + "n_obs": 2120, + "cond": "0" + }, + { + "name": "6489 Golevka (1991 JX)", + "pdes": "6489", + "cls": "APO", + "H": 19.22, + "d_min_m": 530.0, + "d_src": "measured", + "A2": -1.21850835735243e-14, + "A2_snr": -8.40350591277538, + "xi": 0.00950262589215734, + "xi_typ": 0.03801050356862936, + "t_j": 3.1849186120304176, + "q": 0.9425058266735333, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 6.026, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8968", + "n_obs": 1017, + "cond": "0" + }, + { + "name": "7335 (1989 JA)", + "pdes": "7335", + "cls": "APO", + "H": 17.7, + "d_min_m": 1800.0, + "d_src": "measured", + "A2": -2.110565217102676e-14, + "A2_snr": -1.8069907680673594, + "xi": 0.055899835739696896, + "xi_typ": 0.22359934295878758, + "t_j": 3.9209949167708, + "q": 0.9133631992772367, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.58988, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13444", + "n_obs": 2578, + "cond": "0" + }, + { + "name": "7341 (1991 VK)", + "pdes": "7341", + "cls": "APO", + "H": 16.96, + "d_min_m": 982.0, + "d_src": "measured", + "A2": -5.580369674652098e-15, + "A2_snr": -3.17066458787051, + "xi": 0.008063316515887776, + "xi_typ": 0.032253266063551105, + "t_j": 3.8468121540519267, + "q": 0.909432146513229, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.2096, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12815", + "n_obs": 2864, + "cond": "0" + }, + { + "name": "7350 (1993 VA)", + "pdes": "7350", + "cls": "APO", + "H": 17.16, + "d_min_m": 1921.0, + "d_src": "measured", + "A2": -1.468543506588079e-14, + "A2_snr": -5.9794116717755665, + "xi": 0.04151006680029214, + "xi_typ": 0.16604026720116857, + "t_j": 4.768837508699444, + "q": 0.8256696326002242, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.58264, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "23008", + "n_obs": 2218, + "cond": "0" + }, + { + "name": "7753 (1988 XB)", + "pdes": "7753", + "cls": "APO", + "H": 18.01, + "d_min_m": 469.93736647787836, + "d_src": "H at albedo 0.5", + "A2": -1.053865667037453e-14, + "A2_snr": -2.8215948247321365, + "xi": 0.0072872636956242106, + "xi_typ": 0.05508653564791756, + "t_j": 4.475381706001471, + "q": 0.7607649065171892, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 42.2, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13289", + "n_obs": 1335, + "cond": "0" + }, + { + "name": "7822 (1991 CS)", + "pdes": "7822", + "cls": "APO", + "H": 17.34, + "d_min_m": 1602.0, + "d_src": "measured", + "A2": -8.479352770349041e-15, + "A2_snr": -2.0838910716021237, + "xi": 0.019987775627516774, + "xi_typ": 0.0799511025100671, + "t_j": 5.364678152885513, + "q": 0.9379170385357222, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.3896, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11845", + "n_obs": 3809, + "cond": "0" + }, + { + "name": "8014 (1990 MF)", + "pdes": "8014", + "cls": "APO", + "H": 18.88, + "d_min_m": 700.0, + "d_src": "measured", + "A2": -2.220868415270429e-14, + "A2_snr": -5.185310332174711, + "xi": 0.022874948122102678, + "xi_typ": 0.09149979248841071, + "t_j": 4.0082233414214095, + "q": 0.9499114307625308, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 50.09, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13005", + "n_obs": 1297, + "cond": "0" + }, + { + "name": "10115 (1992 SK)", + "pdes": "10115", + "cls": "APO", + "H": 17.14, + "d_min_m": 938.0, + "d_src": "measured", + "A2": -8.47900387982285e-15, + "A2_snr": -7.645630189200045, + "xi": 0.011702722917284865, + "xi_typ": 0.04681089166913946, + "t_j": 5.0607133913619124, + "q": 0.8428954476991231, + "known": null, + "cos_obl": [ + -0.9467801563230207 + ], + "periods": [ + 7.32023 + ], + "rot_per": 7.319, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "26641", + "n_obs": 2903, + "cond": "0" + }, + { + "name": "10302 (1989 ML)", + "pdes": "10302", + "cls": "AMO", + "H": 19.48, + "d_min_m": 238.8031101877767, + "d_src": "H at albedo 0.5", + "A2": 3.937321950839579e-14, + "A2_snr": 13.34685407064264, + "xi": 0.013835031647768356, + "xi_typ": 0.10458300891629489, + "t_j": 5.064667108313536, + "q": 1.098566963556793, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 19.2406, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13393", + "n_obs": 1419, + "cond": "0" + }, + { + "name": "10563 Izhdubar (1993 WD)", + "pdes": "10563", + "cls": "APO", + "H": 16.94, + "d_min_m": 769.201245487266, + "d_src": "H at albedo 0.5", + "A2": -6.312999427027716e-15, + "A2_snr": -6.256689224011611, + "xi": 0.007145209694151775, + "xi_typ": 0.05401270833180994, + "t_j": 5.54633071250911, + "q": 0.7387941390291678, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11187", + "n_obs": 659, + "cond": "0" + }, + { + "name": "11054 (1991 FA)", + "pdes": "11054", + "cls": "AMO", + "H": 17.07, + "d_min_m": 724.5026507568683, + "d_src": "H at albedo 0.5", + "A2": -1.22012163800303e-14, + "A2_snr": -4.535768171014982, + "xi": 0.013007156270340731, + "xi_typ": 0.09832485930135998, + "t_j": 3.7307163089379385, + "q": 1.095700155315463, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.57223, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "32461", + "n_obs": 1792, + "cond": "0" + }, + { + "name": "11066 Sigurd (1992 CC1)", + "pdes": "11066", + "cls": "APO", + "H": 15.17, + "d_min_m": 2104.0, + "d_src": "measured", + "A2": -4.524786895557302e-15, + "A2_snr": -4.690842728133219, + "xi": 0.014008225219689962, + "xi_typ": 0.056032900878759846, + "t_j": 4.50547005633471, + "q": 0.869276148019782, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.4958, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "18013", + "n_obs": 2680, + "cond": "0" + }, + { + "name": "11398 (1998 YP11)", + "pdes": "11398", + "cls": "AMO", + "H": 16.36, + "d_min_m": 1316.0, + "d_src": "measured", + "A2": -1.358796709877202e-14, + "A2_snr": -4.601411140796484, + "xi": 0.026311743452438245, + "xi_typ": 0.10524697380975298, + "t_j": 4.046442960626017, + "q": 1.051382268320272, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 38.6, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "15978", + "n_obs": 5443, + "cond": "0" + }, + { + "name": "11500 Tomaiyowit (1989 UR)", + "pdes": "11500", + "cls": "APO", + "H": 18.38, + "d_min_m": 738.0, + "d_src": "measured", + "A2": -1.733883509482842e-14, + "A2_snr": -6.671348632100201, + "xi": 0.018828491562565813, + "xi_typ": 0.07531396625026325, + "t_j": 5.655759505193435, + "q": 0.6955983360428674, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 73.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13503", + "n_obs": 1457, + "cond": "0" + }, + { + "name": "13651 (1997 BR)", + "pdes": "13651", + "cls": "APO", + "H": 17.86, + "d_min_m": 562.0, + "d_src": "measured", + "A2": -7.56744511322608e-15, + "A2_snr": -4.795592593932877, + "xi": 0.006257845625593461, + "xi_typ": 0.025031382502373845, + "t_j": 4.816802386939932, + "q": 0.927479673980464, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 33.644, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "16820", + "n_obs": 1174, + "cond": "0" + }, + { + "name": "15817 Lucianotesi (1994 QC)", + "pdes": "15817", + "cls": "AMO", + "H": 18.47, + "d_min_m": 380.2243960879402, + "d_src": "H at albedo 0.5", + "A2": -3.006624939165893e-14, + "A2_snr": -8.624856394623905, + "xi": 0.016821258480457138, + "xi_typ": 0.1271567619383595, + "t_j": 4.901054455698032, + "q": 1.168016682757716, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 11.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11732", + "n_obs": 2483, + "cond": "0" + }, + { + "name": "17511 (1992 QN)", + "pdes": "17511", + "cls": "APO", + "H": 17.32, + "d_min_m": 645.7136671674447, + "d_src": "H at albedo 0.5", + "A2": 1.745684001305129e-14, + "A2_snr": 7.1049409902528655, + "xi": 0.016586122194107312, + "xi_typ": 0.12537929868724834, + "t_j": 5.2534466036269905, + "q": 0.7629575103487151, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.9902, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12462", + "n_obs": 2898, + "cond": "0" + }, + { + "name": "22099 (2000 EX106)", + "pdes": "22099", + "cls": "APO", + "H": 18.09, + "d_min_m": 524.0, + "d_src": "measured", + "A2": 9.645709491817393e-15, + "A2_snr": 3.007704861807731, + "xi": 0.007437118729872311, + "xi_typ": 0.029748474919489246, + "t_j": 5.582324644329362, + "q": 0.7992918351356513, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 6.334, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11016", + "n_obs": 2345, + "cond": "0" + }, + { + "name": "22753 (1998 WT)", + "pdes": "22753", + "cls": "APO", + "H": 17.68, + "d_min_m": 547.0663205095157, + "d_src": "H at albedo 0.5", + "A2": -1.359693373983141e-14, + "A2_snr": -3.1207100619305503, + "xi": 0.010945112000546552, + "xi_typ": 0.08273726978627091, + "t_j": 5.062479193630507, + "q": 0.5243031064256553, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.24, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "25672", + "n_obs": 1466, + "cond": "0" + }, + { + "name": "22771 (1999 CU3)", + "pdes": "22771", + "cls": "APO", + "H": 16.96, + "d_min_m": 762.1491660800868, + "d_src": "H at albedo 0.5", + "A2": -3.537367490494941e-15, + "A2_snr": -3.705601812795874, + "xi": 0.00396697450238538, + "xi_typ": 0.02998750854470263, + "t_j": 4.219775917581421, + "q": 0.7503120611449947, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.782, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9843", + "n_obs": 2777, + "cond": "0" + }, + { + "name": "25143 Itokawa (1998 SF36)", + "pdes": "25143", + "cls": "APO", + "H": 19.26, + "d_min_m": 330.0, + "d_src": "measured", + "A2": -2.855043652646294e-14, + "A2_snr": -3.9664401953963515, + "xi": 0.01386327833821136, + "xi_typ": 0.05545311335284544, + "t_j": 4.89745918436658, + "q": 0.9530824380945183, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 12.132, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9588", + "n_obs": 1025, + "cond": "0" + }, + { + "name": "29075 (1950 DA)", + "pdes": "29075", + "cls": "APO", + "H": 17.28, + "d_min_m": 1300.0, + "d_src": "measured", + "A2": -5.235609506233212e-15, + "A2_snr": -5.034239909839627, + "xi": 0.010014974549398484, + "xi_typ": 0.04005989819759394, + "t_j": 4.025660474500546, + "q": 0.8363717727774796, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.1216, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "27983", + "n_obs": 1184, + "cond": "0" + }, + { + "name": "33342 (1998 WT24)", + "pdes": "33342", + "cls": "ATE", + "H": 18.02, + "d_min_m": 432.0, + "d_src": "measured", + "A2": -2.245308874799028e-14, + "A2_snr": -65.709946584695, + "xi": 0.014272468391205557, + "xi_typ": 0.05708987356482223, + "t_j": 7.9087642490695105, + "q": 0.418546543271774, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.697, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9571", + "n_obs": 1983, + "cond": "0" + }, + { + "name": "35107 (1991 VH)", + "pdes": "35107", + "cls": "APO", + "H": 16.86, + "d_min_m": 929.0, + "d_src": "measured", + "A2": 2.620774536001929e-15, + "A2_snr": 2.7960893374607156, + "xi": 0.003582487011305014, + "xi_typ": 0.014329948045220055, + "t_j": 5.475324820721517, + "q": 0.9732104391622846, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.6236, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12673", + "n_obs": 6255, + "cond": "0" + }, + { + "name": "37655 Illapa (1994 PM)", + "pdes": "37655", + "cls": "APO", + "H": 17.85, + "d_min_m": 505.8712275982513, + "d_src": "H at albedo 0.5", + "A2": -1.181558919446576e-14, + "A2_snr": -3.640045962558768, + "xi": 0.008794975051492822, + "xi_typ": 0.0664837622093357, + "t_j": 4.188136755903513, + "q": 0.3659388868240449, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.6556, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10923", + "n_obs": 658, + "cond": "0" + }, + { + "name": "38086 Beowulf (1999 JB)", + "pdes": "38086", + "cls": "APO", + "H": 17.36, + "d_min_m": 643.0, + "d_src": "measured", + "A2": -2.197873973317458e-14, + "A2_snr": -2.9597010144323432, + "xi": 0.020794716757096893, + "xi_typ": 0.08317886702838757, + "t_j": 4.452339919860824, + "q": 0.6159227279699074, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.4104, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12507", + "n_obs": 1293, + "cond": "0" + }, + { + "name": "52387 Huitzilopochtli (1993 OM7)", + "pdes": "52387", + "cls": "AMO", + "H": 17.75, + "d_min_m": 890.0, + "d_src": "measured", + "A2": 1.431755892805394e-14, + "A2_snr": 20.907650303817082, + "xi": 0.018749868922674575, + "xi_typ": 0.0749994756906983, + "t_j": 4.947454639153898, + "q": 1.038882469796423, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 26.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11930", + "n_obs": 1761, + "cond": "0" + }, + { + "name": "53789 (2000 ED104)", + "pdes": "53789", + "cls": "APO", + "H": 17.35, + "d_min_m": 843.0, + "d_src": "measured", + "A2": -1.774396678662555e-14, + "A2_snr": -3.0789461715470328, + "xi": 0.022009873201912784, + "xi_typ": 0.08803949280765114, + "t_j": 4.544409353040082, + "q": 1.00166868984058, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 43.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "26105", + "n_obs": 1354, + "cond": "0" + }, + { + "name": "54071 (2000 GQ146)", + "pdes": "54071", + "cls": "AMO", + "H": 17.42, + "d_min_m": 616.6517648376221, + "d_src": "H at albedo 0.5", + "A2": 8.865540442740262e-15, + "A2_snr": 3.10092355464857, + "xi": 0.008044229347212141, + "xi_typ": 0.06080865811968793, + "t_j": 4.822997692934455, + "q": 1.066922710696567, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 51.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13828", + "n_obs": 2058, + "cond": "0" + }, + { + "name": "54509 YORP (2000 PH5)", + "pdes": "54509", + "cls": "APO", + "H": 22.66, + "d_min_m": 55.212826284958126, + "d_src": "H at albedo 0.5", + "A2": -8.720499998186807e-14, + "A2_snr": -2.8340916471195343, + "xi": 0.0070846861392416085, + "xi_typ": 0.053555193261084606, + "t_j": 6.0276369369743295, + "q": 0.7745530103544149, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.2029, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1826", + "n_obs": 550, + "cond": "0" + }, + { + "name": "65679 (1989 UQ)", + "pdes": "65679", + "cls": "ATE", + "H": 19.62, + "d_min_m": 918.0, + "d_src": "measured", + "A2": -3.960380273723158e-14, + "A2_snr": -4.708012688686588, + "xi": 0.05349569325633213, + "xi_typ": 0.21398277302532853, + "t_j": 6.4958551264514055, + "q": 0.6727821914705462, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.746, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "25910", + "n_obs": 1164, + "cond": "0" + }, + { + "name": "65717 (1993 BX3)", + "pdes": "65717", + "cls": "APO", + "H": 20.87, + "d_min_m": 125.90413069164043, + "d_src": "H at albedo 0.5", + "A2": 8.169598332941075e-14, + "A2_snr": 14.675046403702309, + "xi": 0.015134913157719945, + "xi_typ": 0.11440918951396076, + "t_j": 4.722071993524442, + "q": 1.003195336326293, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 20.33, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12271", + "n_obs": 5611, + "cond": "0" + }, + { + "name": "66391 Moshup (1999 KW4)", + "pdes": "66391", + "cls": "ATE", + "H": 16.64, + "d_min_m": 1317.0, + "d_src": "measured", + "A2": -6.111334114444808e-15, + "A2_snr": -55.00750778078135, + "xi": 0.011842981554311864, + "xi_typ": 0.04737192621724746, + "t_j": 8.49566239161671, + "q": 0.2001787815786712, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.7645, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10188", + "n_obs": 3871, + "cond": "0" + }, + { + "name": "66400 (1999 LT7)", + "pdes": "66400", + "cls": "ATE", + "H": 19.27, + "d_min_m": 411.0, + "d_src": "measured", + "A2": -2.284965995883879e-14, + "A2_snr": -8.484834741492309, + "xi": 0.01381849715293971, + "xi_typ": 0.05527398861175884, + "t_j": 6.738967866727153, + "q": 0.3656564433074393, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13942", + "n_obs": 835, + "cond": "0" + }, + { + "name": "68950 (2002 QF15)", + "pdes": "68950", + "cls": "APO", + "H": 16.39, + "d_min_m": 1650.0, + "d_src": "measured", + "A2": -6.484930870882051e-15, + "A2_snr": -2.7525173475730265, + "xi": 0.015744488106822493, + "xi_typ": 0.06297795242728997, + "t_j": 5.688363244000365, + "q": 0.6930574217468533, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 45.24, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "25963", + "n_obs": 2954, + "cond": "0" + }, + { + "name": "69230 Hermes (1937 UB)", + "pdes": "69230", + "cls": "APO", + "H": 17.68, + "d_min_m": 547.0663205095157, + "d_src": "H at albedo 0.5", + "A2": -1.245203671984868e-14, + "A2_snr": -7.269139941534547, + "xi": 0.010023505235920344, + "xi_typ": 0.07577057748399722, + "t_j": 4.020003367104667, + "q": 0.6224279927934584, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.894, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "32466", + "n_obs": 2716, + "cond": "0" + }, + { + "name": "85236 (1993 KH)", + "pdes": "85236", + "cls": "APO", + "H": 18.75, + "d_min_m": 334.2258056097242, + "d_src": "H at albedo 0.5", + "A2": -1.779783187446943e-14, + "A2_snr": -4.786937029174134, + "xi": 0.008752786371314405, + "xi_typ": 0.06616484576392391, + "t_j": 5.1193977022115496, + "q": 0.8499286753162169, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.057, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11938", + "n_obs": 1178, + "cond": "0" + }, + { + "name": "85770 (1998 UP1)", + "pdes": "85770", + "cls": "ATE", + "H": 20.72, + "d_min_m": 134.90870664525144, + "d_src": "H at albedo 0.5", + "A2": -4.556229204935677e-14, + "A2_snr": -4.644000820442032, + "xi": 0.009044504774810428, + "xi_typ": 0.06837002961681324, + "t_j": 5.902705940387872, + "q": 0.6532846559850037, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12791", + "n_obs": 468, + "cond": "0" + }, + { + "name": "85774 (1998 UT18)", + "pdes": "85774", + "cls": "APO", + "H": 19.09, + "d_min_m": 939.0, + "d_src": "measured", + "A2": -6.731289495382915e-15, + "A2_snr": -5.154126719282478, + "xi": 0.00930043177379763, + "xi_typ": 0.03720172709519052, + "t_j": 4.661836610653261, + "q": 0.941518442836348, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 55.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13589", + "n_obs": 903, + "cond": "0" + }, + { + "name": "85953 (1999 FK21)", + "pdes": "85953", + "cls": "ATE", + "H": 18.09, + "d_min_m": 590.0, + "d_src": "measured", + "A2": -1.277106341023058e-14, + "A2_snr": -19.617608925085378, + "xi": 0.011087109147356146, + "xi_typ": 0.044348436589424584, + "t_j": 7.564105684453201, + "q": 0.2194085432197601, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 28.08, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "20138", + "n_obs": 2132, + "cond": "0" + }, + { + "name": "85989 (1999 JD6)", + "pdes": "85989", + "cls": "ATE", + "H": 17.07, + "d_min_m": 1462.0, + "d_src": "measured", + "A2": -6.247491411828325e-15, + "A2_snr": -3.2555974006400863, + "xi": 0.013439784048823107, + "xi_typ": 0.05375913619529243, + "t_j": 6.501433588595852, + "q": 0.3242415787279528, + "known": null, + "cos_obl": [ + -0.9405357306358223 + ], + "periods": [ + 7.664354 + ], + "rot_per": 7.6638, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "12805", + "n_obs": 3852, + "cond": "0" + }, + { + "name": "85990 (1999 JV6)", + "pdes": "85990", + "cls": "APO", + "H": 20.27, + "d_min_m": 451.0, + "d_src": "measured", + "A2": -3.563530472085752e-14, + "A2_snr": -13.37661588620778, + "xi": 0.02364810084979177, + "xi_typ": 0.09459240339916708, + "t_j": 5.9890920494038244, + "q": 0.6946842182109111, + "known": null, + "cos_obl": [ + -0.9390970539742864, + -0.9940854939146295 + ], + "periods": [ + 6.53678, + 6.53679 + ], + "rot_per": 6.538, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "9026", + "n_obs": 1203, + "cond": "0" + }, + { + "name": "86666 (2000 FL10)", + "pdes": "86666", + "cls": "APO", + "H": 16.88, + "d_min_m": 1165.0, + "d_src": "measured", + "A2": -2.075862413145538e-14, + "A2_snr": -4.976893821974437, + "xi": 0.035584735396742034, + "xi_typ": 0.14233894158696814, + "t_j": 4.394524401426066, + "q": 0.8383873258315546, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 206.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9223", + "n_obs": 2114, + "cond": "0" + }, + { + "name": "86667 (2000 FO10)", + "pdes": "86667", + "cls": "ATE", + "H": 17.54, + "d_min_m": 745.0, + "d_src": "measured", + "A2": 1.254793368800552e-14, + "A2_snr": 6.258321041399262, + "xi": 0.01375522623643411, + "xi_typ": 0.05502090494573644, + "t_j": 6.686960723952489, + "q": 0.3484419941289546, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 53.756, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13186", + "n_obs": 2444, + "cond": "0" + }, + { + "name": "87024 (2000 JS66)", + "pdes": "87024", + "cls": "APO", + "H": 18.72, + "d_min_m": 338.8753497147137, + "d_src": "H at albedo 0.5", + "A2": 2.356619726633656e-14, + "A2_snr": 10.175387420697996, + "xi": 0.011750835255710204, + "xi_typ": 0.08882796509685509, + "t_j": 5.260045783181421, + "q": 0.9694173973133718, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 28.2, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "17201", + "n_obs": 3887, + "cond": "0" + }, + { + "name": "89136 (2001 US16)", + "pdes": "89136", + "cls": "APO", + "H": 20.27, + "d_min_m": 165.97396869634161, + "d_src": "H at albedo 0.5", + "A2": 3.362213875621835e-14, + "A2_snr": 5.4510601096333255, + "xi": 0.008211160950249161, + "xi_typ": 0.062070542427097385, + "t_j": 4.8243270164287155, + "q": 1.01316720108004, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 14.39, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8874", + "n_obs": 1355, + "cond": "0" + }, + { + "name": "90403 (2003 YE45)", + "pdes": "90403", + "cls": "APO", + "H": 17.77, + "d_min_m": 572.0, + "d_src": "measured", + "A2": -1.305499539986132e-14, + "A2_snr": -5.636871934309723, + "xi": 0.01098783178295587, + "xi_typ": 0.04395132713182348, + "t_j": 5.098839205552261, + "q": 0.8887742623317952, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 505.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13535", + "n_obs": 2228, + "cond": "0" + }, + { + "name": "90416 (2003 YK118)", + "pdes": "90416", + "cls": "APO", + "H": 18.83, + "d_min_m": 968.0, + "d_src": "measured", + "A2": -3.27525003093449e-14, + "A2_snr": -5.889678171074428, + "xi": 0.04665079689448887, + "xi_typ": 0.1866031875779555, + "t_j": 4.053473450196026, + "q": 0.8608333538642627, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 43.58, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12084", + "n_obs": 932, + "cond": "0" + }, + { + "name": "98943 Torifune (2001 CC21)", + "pdes": "98943", + "cls": "APO", + "H": 18.71, + "d_min_m": 340.4395272595145, + "d_src": "H at albedo 0.5", + "A2": 1.308908312207101e-14, + "A2_snr": 2.3088874796385626, + "xi": 0.0065567474280438945, + "xi_typ": 0.049564351725904315, + "t_j": 5.906514448415693, + "q": 0.8059611449102079, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.0159, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "15801", + "n_obs": 2398, + "cond": "0" + }, + { + "name": "99907 (1989 VA)", + "pdes": "99907", + "cls": "ATE", + "H": 17.96, + "d_min_m": 1400.0, + "d_src": "measured", + "A2": 1.542961998372385e-14, + "A2_snr": 16.700530342811827, + "xi": 0.031785021953087106, + "xi_typ": 0.12714008781234842, + "t_j": 7.669889348563528, + "q": 0.2952403536305323, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.5246, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13198", + "n_obs": 1591, + "cond": "0" + }, + { + "name": "99942 Apophis (2004 MN4)", + "pdes": "99942", + "cls": "ATE", + "H": 19.09, + "d_min_m": 340.0, + "d_src": "measured", + "A2": -2.901766637153165e-14, + "A2_snr": -156.0928798898959, + "xi": 0.014517126133770307, + "xi_typ": 0.05806850453508123, + "t_j": 6.465714918371117, + "q": 0.7460509677535309, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 30.56, + "A1_snr": 1.0220768601798855, + "A3_snr": null, + "verdict": null, + "arc": "6599", + "n_obs": 7370, + "cond": "0" + }, + { + "name": "136564 (1977 VA)", + "pdes": "136564", + "cls": "AMO", + "H": 19.28, + "d_min_m": 400.0, + "d_src": "measured", + "A2": -4.404952732045901e-14, + "A2_snr": -4.624136817180244, + "xi": 0.025926297127229152, + "xi_typ": 0.10370518850891661, + "t_j": 3.8879074907180176, + "q": 1.130073986730148, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "17420", + "n_obs": 302, + "cond": "0" + }, + { + "name": "136582 (1992 BA)", + "pdes": "136582", + "cls": "AMO", + "H": 19.86, + "d_min_m": 200.4656556590212, + "d_src": "H at albedo 0.5", + "A2": -4.353869156666361e-14, + "A2_snr": -5.702513630211343, + "xi": 0.012842648679719473, + "xi_typ": 0.09708129880545635, + "t_j": 4.873922033504474, + "q": 1.250667958439752, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12427", + "n_obs": 517, + "cond": "0" + }, + { + "name": "136818 Selqet (1997 MW1)", + "pdes": "136818", + "cls": "ATE", + "H": 18.96, + "d_min_m": 303.41704804785087, + "d_src": "H at albedo 0.5", + "A2": 2.076936228332497e-14, + "A2_snr": 8.301104030105904, + "xi": 0.00927261847019288, + "xi_typ": 0.07009440707004157, + "t_j": 6.326371709250015, + "q": 0.6127753209016389, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10627", + "n_obs": 781, + "cond": "0" + }, + { + "name": "137052 Tjelvar (1998 VO33)", + "pdes": "137052", + "cls": "APO", + "H": 17.04, + "d_min_m": 734.5814865987943, + "d_src": "H at albedo 0.5", + "A2": 8.726862736616755e-15, + "A2_snr": 5.106414708377271, + "xi": 0.009432729358335482, + "xi_typ": 0.0713047316192387, + "t_j": 4.7246403924259335, + "q": 0.2375800467415821, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 9.007, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10195", + "n_obs": 1615, + "cond": "0" + }, + { + "name": "137126 (1999 CF9)", + "pdes": "137126", + "cls": "APO", + "H": 18.08, + "d_min_m": 455.02994579025767, + "d_src": "H at albedo 0.5", + "A2": -1.763935687003493e-14, + "A2_snr": -4.860665987885073, + "xi": 0.011810328447640074, + "xi_typ": 0.08927769135556331, + "t_j": 3.8674386732490373, + "q": 0.7067132650584621, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9840", + "n_obs": 1228, + "cond": "0" + }, + { + "name": "137799 (1999 YB)", + "pdes": "137799", + "cls": "AMO", + "H": 18.76, + "d_min_m": 332.6901775225977, + "d_src": "H at albedo 0.5", + "A2": 1.987303727834303e-14, + "A2_snr": 3.1212560512553837, + "xi": 0.009728446077963785, + "xi_typ": 0.0735401399011253, + "t_j": 4.936185401605887, + "q": 1.222570533002026, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 9.39, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12902", + "n_obs": 1181, + "cond": "0" + }, + { + "name": "137924 (2000 BD19)", + "pdes": "137924", + "cls": "ATE", + "H": 17.49, + "d_min_m": 970.0, + "d_src": "measured", + "A2": -3.814736528737917e-15, + "A2_snr": -8.622822171649903, + "xi": 0.005444719771170616, + "xi_typ": 0.021778879084682463, + "t_j": 6.2656432033896845, + "q": 0.09205605519599132, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.57, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10591", + "n_obs": 1296, + "cond": "0" + }, + { + "name": "138175 (2000 EE104)", + "pdes": "138175", + "cls": "APO", + "H": 20.49, + "d_min_m": 149.98228946405098, + "d_src": "H at albedo 0.5", + "A2": -8.594783508025985e-14, + "A2_snr": -19.978576262264028, + "xi": 0.018967678102423044, + "xi_typ": 0.14338216916381968, + "t_j": 6.020453050895777, + "q": 0.7092377829755241, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.324, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9442", + "n_obs": 1621, + "cond": "0" + }, + { + "name": "138852 (2000 WN10)", + "pdes": "138852", + "cls": "APO", + "H": 20.29, + "d_min_m": 164.45231020496766, + "d_src": "H at albedo 0.5", + "A2": 3.186435974570554e-14, + "A2_snr": 7.293284446258992, + "xi": 0.007710533447705736, + "xi_typ": 0.058286154223642354, + "t_j": 5.972681162786662, + "q": 0.7032510647280708, + "known": null, + "cos_obl": [ + 0.9844677514016076 + ], + "periods": [ + 4.4636677 + ], + "rot_per": 4.4622, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "9187", + "n_obs": 1479, + "cond": "0" + }, + { + "name": "138911 (2001 AE2)", + "pdes": "138911", + "cls": "AMO", + "H": 19.45, + "d_min_m": 242.12519236871776, + "d_src": "H at albedo 0.5", + "A2": -2.203269441897988e-14, + "A2_snr": -3.4686231767915428, + "xi": 0.007849587590431552, + "xi_typ": 0.059337304739144635, + "t_j": 4.869628465850882, + "q": 1.239527996660239, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 15.88, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "15162", + "n_obs": 1023, + "cond": "0" + }, + { + "name": "138947 (2001 BA40)", + "pdes": "138947", + "cls": "APO", + "H": 18.83, + "d_min_m": 447.0, + "d_src": "measured", + "A2": -3.647272851198432e-14, + "A2_snr": -4.10728924684508, + "xi": 0.023989159232899716, + "xi_typ": 0.09595663693159887, + "t_j": 5.524580503551516, + "q": 0.8349297156382635, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9363", + "n_obs": 538, + "cond": "0" + }, + { + "name": "139359 (2001 ME1)", + "pdes": "139359", + "cls": "APO", + "H": 16.52, + "d_min_m": 933.3402150380235, + "d_src": "H at albedo 0.5", + "A2": -2.375397559329012e-13, + "A2_snr": -12.219123247577222, + "xi": 0.3262237192542517, + "xi_typ": 2.4660195226208668, + "t_j": 2.6734447079742742, + "q": 0.3433615792712096, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8772", + "n_obs": 740, + "cond": "0" + }, + { + "name": "141495 (2002 EZ11)", + "pdes": "141495", + "cls": "APO", + "H": 18.46, + "d_min_m": 381.9794321590114, + "d_src": "H at albedo 0.5", + "A2": -1.333206816070673e-14, + "A2_snr": -3.87222426973765, + "xi": 0.007493362700305525, + "xi_typ": 0.05664449768175955, + "t_j": 5.2219135593276915, + "q": 0.2205394689217314, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.327, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8852", + "n_obs": 1285, + "cond": "0" + }, + { + "name": "141531 (2002 GB)", + "pdes": "141531", + "cls": "ATE", + "H": 19.15, + "d_min_m": 303.0, + "d_src": "measured", + "A2": 2.412878480768608e-14, + "A2_snr": 6.298299349435156, + "xi": 0.010757647978075205, + "xi_typ": 0.04303059191230082, + "t_j": 5.928517810467383, + "q": 0.4673526849630467, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 73.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8435", + "n_obs": 900, + "cond": "0" + }, + { + "name": "142040 (2002 QE15)", + "pdes": "142040", + "cls": "AMO", + "H": 16.25, + "d_min_m": 1232.0, + "d_src": "measured", + "A2": -1.151923777393242e-14, + "A2_snr": -3.1672361215101517, + "xi": 0.020882077381288677, + "xi_typ": 0.0835283095251547, + "t_j": 4.057159112177416, + "q": 1.093042379102712, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.853, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11697", + "n_obs": 2565, + "cond": "0" + }, + { + "name": "142561 (2002 TX68)", + "pdes": "142561", + "cls": "AMO", + "H": 18.2, + "d_min_m": 430.5662442410041, + "d_src": "H at albedo 0.5", + "A2": -2.636512393071454e-14, + "A2_snr": -3.7610733139393067, + "xi": 0.016703560174718496, + "xi_typ": 0.1262670463763078, + "t_j": 4.146728118470362, + "q": 1.182633756978129, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8772", + "n_obs": 1454, + "cond": "0" + }, + { + "name": "152563 (1992 BF)", + "pdes": "152563", + "cls": "ATE", + "H": 19.71, + "d_min_m": 272.0, + "d_src": "measured", + "A2": -2.694463198144286e-14, + "A2_snr": -38.90359800959119, + "xi": 0.010784013189603177, + "xi_typ": 0.04313605275841271, + "t_j": 6.528223250703582, + "q": 0.6612199974085626, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 32.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "25988", + "n_obs": 638, + "cond": "0" + }, + { + "name": "152664 (1998 FW4)", + "pdes": "152664", + "cls": "APO", + "H": 19.7, + "d_min_m": 215.79430484443319, + "d_src": "H at albedo 0.5", + "A2": 2.180902910647029e-14, + "A2_snr": 5.492074819055726, + "xi": 0.00692493276231184, + "xi_typ": 0.05234757124263053, + "t_j": 3.037576939538326, + "q": 0.7208449011560304, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 17.38, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11529", + "n_obs": 997, + "cond": "0" + }, + { + "name": "152667 (1998 FR11)", + "pdes": "152667", + "cls": "APO", + "H": 16.41, + "d_min_m": 981.8383215259687, + "d_src": "H at albedo 0.5", + "A2": 2.599982121116447e-13, + "A2_snr": 4.481955044158674, + "xi": 0.37562076288721563, + "xi_typ": 2.8394260739198067, + "t_j": 2.8845800295586823, + "q": 0.8201941831341449, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "25630", + "n_obs": 393, + "cond": "0" + }, + { + "name": "152671 (1998 HL3)", + "pdes": "152671", + "cls": "APO", + "H": 20.24, + "d_min_m": 298.0, + "d_src": "measured", + "A2": -4.946979085995592e-14, + "A2_snr": -7.0189828121390345, + "xi": 0.021691799847435553, + "xi_typ": 0.08676719938974221, + "t_j": 5.474237080698615, + "q": 0.715809158408108, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9399", + "n_obs": 538, + "cond": "0" + }, + { + "name": "152742 (1998 XE12)", + "pdes": "152742", + "cls": "ATE", + "H": 19.1, + "d_min_m": 413.0, + "d_src": "measured", + "A2": 1.772353344333314e-14, + "A2_snr": 3.8115125684587396, + "xi": 0.010770592895494244, + "xi_typ": 0.043082371581976975, + "t_j": 6.462974955325251, + "q": 0.2290444277320484, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10285", + "n_obs": 565, + "cond": "0" + }, + { + "name": "152754 (1999 GS6)", + "pdes": "152754", + "cls": "APO", + "H": 19.22, + "d_min_m": 414.0, + "d_src": "measured", + "A2": -2.427829601300723e-14, + "A2_snr": -5.487860762433822, + "xi": 0.014789646492747457, + "xi_typ": 0.05915858597098983, + "t_j": 5.1982627100243395, + "q": 0.5985466742883413, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.021, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9532", + "n_obs": 553, + "cond": "0" + }, + { + "name": "152828 (1999 VT25)", + "pdes": "152828", + "cls": "APO", + "H": 21.26, + "d_min_m": 105.20587161371618, + "d_src": "H at albedo 0.5", + "A2": 7.639894414333639e-14, + "A2_snr": 8.430693460972897, + "xi": 0.011826781829944887, + "xi_typ": 0.08940206723500446, + "t_j": 5.279243060601108, + "q": 0.554212661138507, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9441", + "n_obs": 171, + "cond": "0" + }, + { + "name": "152978 (2000 GJ147)", + "pdes": "152978", + "cls": "APO", + "H": 19.57, + "d_min_m": 531.0, + "d_src": "measured", + "A2": 1.545013974383806e-14, + "A2_snr": 3.7256184576412013, + "xi": 0.012071637432334262, + "xi_typ": 0.04828654972933705, + "t_j": 5.308363165320555, + "q": 0.8871504979553808, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.009, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9400", + "n_obs": 864, + "cond": "0" + }, + { + "name": "153201 (2000 WO107)", + "pdes": "153201", + "cls": "ATE", + "H": 19.3, + "d_min_m": 510.0, + "d_src": "measured", + "A2": -1.564279908740417e-14, + "A2_snr": -4.816132723954486, + "xi": 0.011738805140091988, + "xi_typ": 0.04695522056036795, + "t_j": 6.227993116199615, + "q": 0.1997275678653239, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.022, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8479", + "n_obs": 1137, + "cond": "0" + }, + { + "name": "154244 (2002 KL6)", + "pdes": "154244", + "cls": "AMO", + "H": 17.57, + "d_min_m": 575.4929116287657, + "d_src": "H at albedo 0.5", + "A2": -5.523597566177241e-15, + "A2_snr": -0.8448451462491956, + "xi": 0.00467736496638858, + "xi_typ": 0.03535755569185763, + "t_j": 3.3672674493240144, + "q": 1.036746175916814, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.6063, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11159", + "n_obs": 3943, + "cond": "0" + }, + { + "name": "154590 (2003 MA3)", + "pdes": "154590", + "cls": "APO", + "H": 21.7, + "d_min_m": 86.0, + "d_src": "measured", + "A2": -7.337823162303147e-14, + "A2_snr": -7.1518744271960495, + "xi": 0.009285492480003061, + "xi_typ": 0.037141969920012244, + "t_j": 5.551322205455039, + "q": 0.660712749352005, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9980", + "n_obs": 123, + "cond": "0" + }, + { + "name": "159402 (1999 AP10)", + "pdes": "159402", + "cls": "AMO", + "H": 16.61, + "d_min_m": 895.447191726696, + "d_src": "H at albedo 0.5", + "A2": -2.292655088507388e-14, + "A2_snr": -2.4320092166196967, + "xi": 0.03020772036936921, + "xi_typ": 0.22834890220437468, + "t_j": 3.2862817462973943, + "q": 1.019234394022985, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.9219, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9979", + "n_obs": 2112, + "cond": "0" + }, + { + "name": "161989 Cacus (1978 CA)", + "pdes": "161989", + "cls": "APO", + "H": 17.31, + "d_min_m": 1900.0, + "d_src": "measured", + "A2": -9.23649289660797e-15, + "A2_snr": -6.092673414649057, + "xi": 0.02582259902965959, + "xi_typ": 0.10329039611863836, + "t_j": 5.44935965002289, + "q": 0.8825756330519963, + "known": null, + "cos_obl": [ + -0.9998657917716938 + ], + "periods": [ + 3.755067 + ], + "rot_per": 3.7538, + "A1_snr": null, + "A3_snr": null, + "verdict": "agrees", + "arc": "16425", + "n_obs": 1798, + "cond": "0" + }, + { + "name": "162004 (1991 VE)", + "pdes": "162004", + "cls": "ATE", + "H": 18.28, + "d_min_m": 414.9922427922466, + "d_src": "H at albedo 0.5", + "A2": 2.425297651340892e-14, + "A2_snr": 7.711598255455937, + "xi": 0.014809632274830503, + "xi_typ": 0.11195029716433506, + "t_j": 6.453938673121187, + "q": 0.2987483132574934, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.4895, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "25965", + "n_obs": 1890, + "cond": "0" + }, + { + "name": "162080 (1998 DG16)", + "pdes": "162080", + "cls": "ATE", + "H": 19.91, + "d_min_m": 777.0, + "d_src": "measured", + "A2": -2.559351978422104e-14, + "A2_snr": -5.114612267030584, + "xi": 0.029261075575826107, + "xi_typ": 0.11704430230330443, + "t_j": 6.546449094300593, + "q": 0.5754766076979958, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "16470", + "n_obs": 723, + "cond": "0" + }, + { + "name": "162117 (1998 SD15)", + "pdes": "162117", + "cls": "ATE", + "H": 19.04, + "d_min_m": 292.4421571708278, + "d_src": "H at albedo 0.5", + "A2": -1.814998177588976e-14, + "A2_snr": -11.14863745447774, + "xi": 0.007810078915928103, + "xi_typ": 0.05903864723238483, + "t_j": 6.287819462954361, + "q": 0.611109347668168, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.33, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10246", + "n_obs": 837, + "cond": "0" + }, + { + "name": "162120 (1998 SH36)", + "pdes": "162120", + "cls": "APO", + "H": 20.64, + "d_min_m": 139.97161668570473, + "d_src": "H at albedo 0.5", + "A2": -1.548080591200913e-14, + "A2_snr": -3.4741485439876865, + "xi": 0.0031883999573443923, + "xi_typ": 0.024102038192406312, + "t_j": 5.5329276853546485, + "q": 0.4666830392734995, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10132", + "n_obs": 280, + "cond": "0" + }, + { + "name": "162142 (1998 VR)", + "pdes": "162142", + "cls": "ATE", + "H": 18.78, + "d_min_m": 462.0, + "d_src": "measured", + "A2": 1.728275993564131e-14, + "A2_snr": 6.860960673140654, + "xi": 0.011748821973544545, + "xi_typ": 0.04699528789417818, + "t_j": 6.665719568550784, + "q": 0.5971402861794716, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.44, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9902", + "n_obs": 773, + "cond": "0" + }, + { + "name": "162162 (1999 DB7)", + "pdes": "162162", + "cls": "APO", + "H": 19.99, + "d_min_m": 188.8165155253624, + "d_src": "H at albedo 0.5", + "A2": 2.843220793986682e-14, + "A2_snr": 2.916423011577272, + "xi": 0.007899321967950602, + "xi_typ": 0.059713261294933206, + "t_j": 5.2425093487885635, + "q": 0.9707057025616794, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9047", + "n_obs": 299, + "cond": "0" + }, + { + "name": "162173 Ryugu (1999 JU3)", + "pdes": "162173", + "cls": "APO", + "H": 19.55, + "d_min_m": 896.0, + "d_src": "measured", + "A2": -2.487268497758912e-14, + "A2_snr": -4.96163673999384, + "xi": 0.03279215281273677, + "xi_typ": 0.1311686112509471, + "t_j": 5.302897916810018, + "q": 0.9633664739388087, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.63262, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "14345", + "n_obs": 5124, + "cond": "0" + }, + { + "name": "162181 (1999 LF6)", + "pdes": "162181", + "cls": "APO", + "H": 18.2, + "d_min_m": 729.0, + "d_src": "measured", + "A2": -1.347159822127376e-14, + "A2_snr": -3.947142754548421, + "xi": 0.014450600685319791, + "xi_typ": 0.057802402741279166, + "t_j": 4.635838237352625, + "q": 1.014145992684089, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 37.26, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "16459", + "n_obs": 1914, + "cond": "0" + }, + { + "name": "162215 (1999 TL12)", + "pdes": "162215", + "cls": "APO", + "H": 19.17, + "d_min_m": 275.44822542389994, + "d_src": "H at albedo 0.5", + "A2": 4.055572457813274e-14, + "A2_snr": 6.256668401439793, + "xi": 0.016437334527929014, + "xi_typ": 0.12425456965050126, + "t_j": 5.593064018319853, + "q": 0.609471469374795, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10208", + "n_obs": 429, + "cond": "0" + }, + { + "name": "162361 (2000 AF6)", + "pdes": "162361", + "cls": "ATE", + "H": 20.24, + "d_min_m": 168.28289659712405, + "d_src": "H at albedo 0.5", + "A2": 3.515929089260693e-14, + "A2_snr": 6.565693910850968, + "xi": 0.008706013501240057, + "xi_typ": 0.06581127610014832, + "t_j": 6.693152828520106, + "q": 0.5154327957889946, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.4558, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11715", + "n_obs": 506, + "cond": "0" + }, + { + "name": "162421 (2000 ET70)", + "pdes": "162421", + "cls": "ATE", + "H": 18.11, + "d_min_m": 448.7867008808127, + "d_src": "H at albedo 0.5", + "A2": -1.395253038235552e-14, + "A2_snr": -5.598928724861766, + "xi": 0.009213660504107936, + "xi_typ": 0.06964872673842173, + "t_j": 6.27901444072785, + "q": 0.8293896100295418, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.947, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "17851", + "n_obs": 743, + "cond": "0" + }, + { + "name": "162783 (2000 YJ11)", + "pdes": "162783", + "cls": "APO", + "H": 20.91, + "d_min_m": 123.6061213242373, + "d_src": "H at albedo 0.5", + "A2": -9.002944621154369e-14, + "A2_snr": -3.7110241637074894, + "xi": 0.016374340138315877, + "xi_typ": 0.12377837682504794, + "t_j": 4.92992955315599, + "q": 1.008572694154361, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8740", + "n_obs": 139, + "cond": "0" + }, + { + "name": "162882 (2001 FD58)", + "pdes": "162882", + "cls": "APO", + "H": 18.79, + "d_min_m": 328.12549716154393, + "d_src": "H at albedo 0.5", + "A2": -2.265940602135072e-14, + "A2_snr": -5.643687676550615, + "xi": 0.010940262693425023, + "xi_typ": 0.08270061247005794, + "t_j": 5.50619553707661, + "q": 0.4642338732742706, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9500", + "n_obs": 956, + "cond": "0" + }, + { + "name": "163000 (2001 SW169)", + "pdes": "163000", + "cls": "AMO", + "H": 19.26, + "d_min_m": 264.2652014216328, + "d_src": "H at albedo 0.5", + "A2": -2.368907077987246e-14, + "A2_snr": -7.200325465006827, + "xi": 0.009211434205707816, + "xi_typ": 0.0696318975043905, + "t_j": 5.144109747640597, + "q": 1.184017156937218, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 69.97, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10388", + "n_obs": 1885, + "cond": "0" + }, + { + "name": "163023 (2001 XU1)", + "pdes": "163023", + "cls": "ATE", + "H": 19.52, + "d_min_m": 234.4444622136245, + "d_src": "H at albedo 0.5", + "A2": 5.338878191922806e-14, + "A2_snr": 7.322559582941717, + "xi": 0.01841743904962092, + "xi_typ": 0.13922275289139066, + "t_j": 7.1081998746034065, + "q": 0.361647431434339, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8428", + "n_obs": 383, + "cond": "0" + }, + { + "name": "163249 (2002 GT)", + "pdes": "163249", + "cls": "APO", + "H": 18.7, + "d_min_m": 342.0109247198206, + "d_src": "H at albedo 0.5", + "A2": 2.182492891518297e-14, + "A2_snr": 3.3478952163189097, + "xi": 0.010983280288056969, + "xi_typ": 0.0830257949197617, + "t_j": 4.821173692993126, + "q": 0.8942821265092147, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.7663, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8367", + "n_obs": 1636, + "cond": "0" + }, + { + "name": "163348 (2002 NN4)", + "pdes": "163348", + "cls": "ATE", + "H": 20.05, + "d_min_m": 735.0, + "d_src": "measured", + "A2": 3.305722417827024e-14, + "A2_snr": 8.295413846491906, + "xi": 0.03575139333272477, + "xi_typ": 0.14300557333089908, + "t_j": 6.67618286502615, + "q": 0.4951936458902201, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 14.5, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8435", + "n_obs": 790, + "cond": "0" + }, + { + "name": "163899 (2003 SD220)", + "pdes": "163899", + "cls": "ATE", + "H": 17.56, + "d_min_m": 791.0, + "d_src": "measured", + "A2": -1.130172703430233e-14, + "A2_snr": -10.73288417312662, + "xi": 0.013154082076143027, + "xi_typ": 0.05261632830457211, + "t_j": 7.055573761306212, + "q": 0.6544958463890725, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 285.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9153", + "n_obs": 1935, + "cond": "0" + }, + { + "name": "164121 (2003 YT1)", + "pdes": "164121", + "cls": "APO", + "H": 16.15, + "d_min_m": 1717.0, + "d_src": "measured", + "A2": -6.419656260250318e-15, + "A2_snr": -64.4026510859783, + "xi": 0.016218897146481448, + "xi_typ": 0.06487558858592579, + "t_j": 5.322324020244019, + "q": 0.7857075524687869, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.343, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "15580", + "n_obs": 2597, + "cond": "0" + }, + { + "name": "164207 Cardea (2004 GU9)", + "pdes": "164207", + "cls": "APO", + "H": 21.19, + "d_min_m": 163.0, + "d_src": "measured", + "A2": -5.661461817870703e-14, + "A2_snr": -7.728958113134065, + "xi": 0.013578613824883274, + "xi_typ": 0.0543144552995331, + "t_j": 6.041273190136399, + "q": 0.8650413952382482, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9082", + "n_obs": 363, + "cond": "0" + }, + { + "name": "164222 (2004 RN9)", + "pdes": "164222", + "cls": "APO", + "H": 20.85, + "d_min_m": 127.0691072695143, + "d_src": "H at albedo 0.5", + "A2": -8.231510861592853e-14, + "A2_snr": -3.4499207299215646, + "xi": 0.015390714585766052, + "xi_typ": 0.11634286655288985, + "t_j": 4.921485746653453, + "q": 0.9820830851200889, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7902", + "n_obs": 258, + "cond": "0" + }, + { + "name": "175706 (1996 FG3)", + "pdes": "175706", + "cls": "APO", + "H": 18.31, + "d_min_m": 1196.0, + "d_src": "measured", + "A2": -1.225484787199723e-14, + "A2_snr": -7.952529443216892, + "xi": 0.021566434671415058, + "xi_typ": 0.08626573868566023, + "t_j": 5.774949932269841, + "q": 0.6854732953621132, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.5942, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "14691", + "n_obs": 3126, + "cond": "0" + }, + { + "name": "177016 (2003 BM47)", + "pdes": "177016", + "cls": "APO", + "H": 19.95, + "d_min_m": 192.3268766365206, + "d_src": "H at albedo 0.5", + "A2": -5.03235438101444e-14, + "A2_snr": -3.453915155123157, + "xi": 0.014241326576585823, + "xi_typ": 0.10765430988943123, + "t_j": 5.2302949017106615, + "q": 0.4847313216607005, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8006", + "n_obs": 156, + "cond": "0" + }, + { + "name": "185851 (2000 DP107)", + "pdes": "185851", + "cls": "APO", + "H": 18.31, + "d_min_m": 863.0, + "d_src": "measured", + "A2": 9.642476834401021e-15, + "A2_snr": 15.522338754670027, + "xi": 0.012244432177260837, + "xi_typ": 0.04897772870904335, + "t_j": 4.749412870979416, + "q": 0.8508263444983428, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.7754, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9096", + "n_obs": 2094, + "cond": "0" + }, + { + "name": "192559 (1998 VO)", + "pdes": "192559", + "cls": "APO", + "H": 20.43, + "d_min_m": 154.18423799936673, + "d_src": "H at albedo 0.5", + "A2": -3.246127949020991e-14, + "A2_snr": -4.548308741797661, + "xi": 0.007364527068996594, + "xi_typ": 0.055670591851909715, + "t_j": 5.712445160671123, + "q": 0.8311543385940088, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7308", + "n_obs": 575, + "cond": "0" + }, + { + "name": "203471 (2002 AU4)", + "pdes": "203471", + "cls": "ATE", + "H": 19.45, + "d_min_m": 242.12519236871776, + "d_src": "H at albedo 0.5", + "A2": -3.775660872804425e-14, + "A2_snr": -4.200779787276841, + "xi": 0.013451546220017787, + "xi_typ": 0.10168413156416571, + "t_j": 6.800981655267457, + "q": 0.5357860653151757, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.26, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11377", + "n_obs": 472, + "cond": "0" + }, + { + "name": "204131 (2003 YL)", + "pdes": "204131", + "cls": "APO", + "H": 19.94, + "d_min_m": 193.21461716397326, + "d_src": "H at albedo 0.5", + "A2": -3.285831456403067e-14, + "A2_snr": -4.920382534296296, + "xi": 0.00934166979138977, + "xi_typ": 0.07061638599457705, + "t_j": 5.26104150593396, + "q": 0.4213476177534508, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.27, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8721", + "n_obs": 376, + "cond": "0" + }, + { + "name": "216523 (2001 HY7)", + "pdes": "216523", + "cls": "ATE", + "H": 20.7, + "d_min_m": 136.15700153859294, + "d_src": "H at albedo 0.5", + "A2": 4.099473053014898e-14, + "A2_snr": 9.376653826658046, + "xi": 0.008213102916130508, + "xi_typ": 0.062085222309316276, + "t_j": 6.45440546218384, + "q": 0.53716911383809, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.042, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8111", + "n_obs": 353, + "cond": "0" + }, + { + "name": "216985 (2000 QK130)", + "pdes": "216985", + "cls": "APO", + "H": 21.34, + "d_min_m": 101.40047251695708, + "d_src": "H at albedo 0.5", + "A2": 9.662974520935821e-14, + "A2_snr": 6.35722007956304, + "xi": 0.014417503425645455, + "xi_typ": 0.10898608168765624, + "t_j": 5.3232727831931355, + "q": 0.8713979372072569, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8148", + "n_obs": 251, + "cond": "0" + }, + { + "name": "217837 (2001 LC)", + "pdes": "217837", + "cls": "APO", + "H": 19.27, + "d_min_m": 263.05101311258585, + "d_src": "H at albedo 0.5", + "A2": 2.441272996835526e-14, + "A2_snr": 3.8342594578852296, + "xi": 0.009449211639489958, + "xi_typ": 0.07142932595344954, + "t_j": 5.567004418668404, + "q": 0.3401356037787363, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9146", + "n_obs": 298, + "cond": "0" + }, + { + "name": "219071 (1997 US9)", + "pdes": "219071", + "cls": "APO", + "H": 17.2, + "d_min_m": 657.0, + "d_src": "measured", + "A2": -8.667722504521844e-15, + "A2_snr": -3.2524287071376525, + "xi": 0.008379336256208802, + "xi_typ": 0.03351734502483521, + "t_j": 5.752616047044696, + "q": 0.755892930783601, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.319, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10579", + "n_obs": 3354, + "cond": "0" + }, + { + "name": "226514 (2003 UX34)", + "pdes": "226514", + "cls": "APO", + "H": 20.16, + "d_min_m": 174.59828711568056, + "d_src": "H at albedo 0.5", + "A2": 2.163098799108496e-14, + "A2_snr": 6.740725456866613, + "xi": 0.005557194344618742, + "xi_typ": 0.04200844063747361, + "t_j": 5.47220596912987, + "q": 0.4208774973439787, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10977", + "n_obs": 484, + "cond": "0" + }, + { + "name": "230111 (2001 BE10)", + "pdes": "230111", + "cls": "ATE", + "H": 19.27, + "d_min_m": 263.05101311258585, + "d_src": "H at albedo 0.5", + "A2": -2.791548133321585e-14, + "A2_snr": -6.189685439737438, + "xi": 0.010804989506610236, + "xi_typ": 0.08167804329472335, + "t_j": 7.026011206983433, + "q": 0.5191204522111695, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.194, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8830", + "n_obs": 834, + "cond": "0" + }, + { + "name": "234341 (2001 FZ57)", + "pdes": "234341", + "cls": "ATE", + "H": 18.93, + "d_min_m": 344.0, + "d_src": "measured", + "A2": -2.457086056836455e-14, + "A2_snr": -3.7438458888259256, + "xi": 0.012437069468059614, + "xi_typ": 0.049748277872238456, + "t_j": 6.145197675745962, + "q": 0.373725564849011, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12369", + "n_obs": 545, + "cond": "0" + }, + { + "name": "242191 (2003 NZ6)", + "pdes": "242191", + "cls": "ATE", + "H": 19.02, + "d_min_m": 370.0, + "d_src": "measured", + "A2": 2.886935233606966e-14, + "A2_snr": 7.918088956683945, + "xi": 0.015717302617317255, + "xi_typ": 0.06286921046926902, + "t_j": 7.20295472907916, + "q": 0.4027922110643199, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.531, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7996", + "n_obs": 647, + "cond": "0" + }, + { + "name": "247517 (2002 QY6)", + "pdes": "247517", + "cls": "ATE", + "H": 19.59, + "d_min_m": 269.0, + "d_src": "measured", + "A2": -2.522914135626887e-14, + "A2_snr": -6.669083097084026, + "xi": 0.0099860560689509, + "xi_typ": 0.0399442242758036, + "t_j": 6.919842891819254, + "q": 0.2458771373740488, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8459", + "n_obs": 666, + "cond": "0" + }, + { + "name": "251732 (1998 HG49)", + "pdes": "251732", + "cls": "AMO", + "H": 21.76, + "d_min_m": 83.56799428155264, + "d_src": "H at albedo 0.5", + "A2": -9.54502481919911e-14, + "A2_snr": -5.087966321534707, + "xi": 0.01173697800884557, + "xi_typ": 0.08872321415668409, + "t_j": 5.285543561360269, + "q": 1.065553173448777, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9145", + "n_obs": 156, + "cond": "0" + }, + { + "name": "253062 (2002 TC70)", + "pdes": "253062", + "cls": "AMO", + "H": 21.1, + "d_min_m": 113.25046106177199, + "d_src": "H at albedo 0.5", + "A2": -6.163294789545638e-14, + "A2_snr": -9.678540812728702, + "xi": 0.010270513773428205, + "xi_typ": 0.077637786518156, + "t_j": 4.806755725693979, + "q": 1.099497308514341, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 26.273, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8774", + "n_obs": 470, + "cond": "0" + }, + { + "name": "256004 (2006 UP)", + "pdes": "256004", + "cls": "AMO", + "H": 23.02, + "d_min_m": 46.777820040799014, + "d_src": "H at albedo 0.5", + "A2": -1.635469175187514e-13, + "A2_snr": -4.06025117971081, + "xi": 0.011256972158364997, + "xi_typ": 0.08509471099031937, + "t_j": 4.337360326859647, + "q": 1.108378949106635, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8059", + "n_obs": 176, + "cond": "0" + }, + { + "name": "264308 (1999 NA5)", + "pdes": "264308", + "cls": "AMO", + "H": 20.43, + "d_min_m": 154.18423799936673, + "d_src": "H at albedo 0.5", + "A2": 4.462021319389212e-14, + "A2_snr": 3.1848831687289163, + "xi": 0.010123038064162657, + "xi_typ": 0.07652297494347171, + "t_j": 4.636609734941605, + "q": 1.079572345876043, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9648", + "n_obs": 185, + "cond": "0" + }, + { + "name": "264357 (2000 AZ93)", + "pdes": "264357", + "cls": "ATE", + "H": 21.17, + "d_min_m": 113.0, + "d_src": "measured", + "A2": -4.704125768046153e-14, + "A2_snr": -7.823259218436975, + "xi": 0.007821618294211475, + "xi_typ": 0.0312864731768459, + "t_j": 7.664936887279198, + "q": 0.4779799478195266, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8000", + "n_obs": 160, + "cond": "0" + }, + { + "name": "265482 (2005 EE)", + "pdes": "265482", + "cls": "APO", + "H": 21.21, + "d_min_m": 107.65643116910465, + "d_src": "H at albedo 0.5", + "A2": 9.089589312267186e-14, + "A2_snr": 9.579080316437123, + "xi": 0.014398706861723266, + "xi_typ": 0.10884399302011158, + "t_j": 5.484796727170397, + "q": 0.7587836418374638, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.6534, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6907", + "n_obs": 474, + "cond": "0" + }, + { + "name": "267337 (2001 VK5)", + "pdes": "267337", + "cls": "APO", + "H": 18.05, + "d_min_m": 439.0, + "d_src": "measured", + "A2": -3.162132456116307e-14, + "A2_snr": -3.9511838761918114, + "xi": 0.02042602354291256, + "xi_typ": 0.08170409417165024, + "t_j": 4.898459130630109, + "q": 0.6166095199555655, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 39.05, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8540", + "n_obs": 1117, + "cond": "0" + }, + { + "name": "267759 (2003 MC7)", + "pdes": "267759", + "cls": "AMO", + "H": 18.91, + "d_min_m": 310.4845390058789, + "d_src": "H at albedo 0.5", + "A2": -3.107199389457698e-14, + "A2_snr": -5.434066788138682, + "xi": 0.014195423439683092, + "xi_typ": 0.10730731479045301, + "t_j": 4.729090585526828, + "q": 1.120353245030755, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "26155", + "n_obs": 613, + "cond": "0" + }, + { + "name": "267940 (2004 EM20)", + "pdes": "267940", + "cls": "APO", + "H": 20.43, + "d_min_m": 154.18423799936673, + "d_src": "H at albedo 0.5", + "A2": -3.277310872762505e-14, + "A2_snr": -3.7420768129281856, + "xi": 0.007435272119589593, + "xi_typ": 0.05620537416721759, + "t_j": 5.468185169970416, + "q": 0.5260498043231068, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.419, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8032", + "n_obs": 282, + "cond": "0" + }, + { + "name": "276033 (2002 AJ129)", + "pdes": "276033", + "cls": "APO", + "H": 18.76, + "d_min_m": 332.6901775225977, + "d_src": "H at albedo 0.5", + "A2": 9.916022484972572e-15, + "A2_snr": 6.867051582390978, + "xi": 0.004854189558536136, + "xi_typ": 0.03669422396758008, + "t_j": 4.195007176449658, + "q": 0.1166146734128876, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.9333, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8828", + "n_obs": 725, + "cond": "0" + }, + { + "name": "276770 (2004 HC)", + "pdes": "276770", + "cls": "ATE", + "H": 19.94, + "d_min_m": 193.21461716397326, + "d_src": "H at albedo 0.5", + "A2": -6.035319572153001e-14, + "A2_snr": -6.255513652729064, + "xi": 0.017158507147010862, + "xi_typ": 0.1297061222289004, + "t_j": 7.138311354527228, + "q": 0.3167254065338942, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7680", + "n_obs": 220, + "cond": "0" + }, + { + "name": "277810 (2006 FV35)", + "pdes": "277810", + "cls": "APO", + "H": 21.73, + "d_min_m": 84.730540885244, + "d_src": "H at albedo 0.5", + "A2": 4.302635290924454e-14, + "A2_snr": 4.3637274755826105, + "xi": 0.005364308720614408, + "xi_typ": 0.040550362372916524, + "t_j": 6.001626140274987, + "q": 0.62341141920079, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11328", + "n_obs": 296, + "cond": "1" + }, + { + "name": "283457 (2001 MQ3)", + "pdes": "283457", + "cls": "AMO", + "H": 19.1, + "d_min_m": 284.4722965032693, + "d_src": "H at albedo 0.5", + "A2": -5.560626690528099e-14, + "A2_snr": -6.649081299208537, + "xi": 0.023275711676476192, + "xi_typ": 0.17594784195428073, + "t_j": 3.489757089563268, + "q": 1.21632982628741, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "25573", + "n_obs": 502, + "cond": "0" + }, + { + "name": "294739 (2008 CM)", + "pdes": "294739", + "cls": "APO", + "H": 17.04, + "d_min_m": 740.0, + "d_src": "measured", + "A2": -2.447195850874598e-14, + "A2_snr": -3.4385216395596436, + "xi": 0.026646470834735553, + "xi_typ": 0.10658588333894221, + "t_j": 4.132878111817359, + "q": 0.9269996684255496, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.05785, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6471", + "n_obs": 1912, + "cond": "0" + }, + { + "name": "297418 (2000 SP43)", + "pdes": "297418", + "cls": "ATE", + "H": 18.51, + "d_min_m": 407.0, + "d_src": "measured", + "A2": -2.164534603762011e-14, + "A2_snr": -10.219710121633668, + "xi": 0.012962781255582359, + "xi_typ": 0.051851125022329435, + "t_j": 7.098442620795439, + "q": 0.4326319173526753, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 6.314, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9199", + "n_obs": 1260, + "cond": "0" + }, + { + "name": "302169 (2001 TD45)", + "pdes": "302169", + "cls": "ATE", + "H": 20.0, + "d_min_m": 187.94898243938434, + "d_src": "H at albedo 0.5", + "A2": -2.289379425647727e-14, + "A2_snr": -8.774930723065264, + "xi": 0.0063313599459212675, + "xi_typ": 0.04786058250783722, + "t_j": 6.975131150178284, + "q": 0.1771780363712485, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8428", + "n_obs": 298, + "cond": "0" + }, + { + "name": "303450 (2005 BY2)", + "pdes": "303450", + "cls": "APO", + "H": 20.51, + "d_min_m": 187.0, + "d_src": "measured", + "A2": 6.249334050537639e-14, + "A2_snr": 9.016496970909882, + "xi": 0.017195491610586252, + "xi_typ": 0.06878196644234501, + "t_j": 5.023625917843609, + "q": 0.8495950974325114, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7584", + "n_obs": 301, + "cond": "0" + }, + { + "name": "306383 (1993 VD)", + "pdes": "306383", + "cls": "ATE", + "H": 21.52, + "d_min_m": 93.33402150380226, + "d_src": "H at albedo 0.5", + "A2": -2.11402749500383e-14, + "A2_snr": -5.981968010763525, + "xi": 0.002903286270196829, + "xi_typ": 0.021946781302197384, + "t_j": 6.624785422401721, + "q": 0.3928111159660913, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.94345, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11719", + "n_obs": 208, + "cond": "0" + }, + { + "name": "307070 (2002 AV31)", + "pdes": "307070", + "cls": "APO", + "H": 20.65, + "d_min_m": 282.0, + "d_src": "measured", + "A2": -3.584449396233432e-14, + "A2_snr": -5.530704206501206, + "xi": 0.014873418977410307, + "xi_typ": 0.059493675909641226, + "t_j": 4.913128771632065, + "q": 0.9830413080451909, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8804", + "n_obs": 612, + "cond": "0" + }, + { + "name": "310442 (2000 CH59)", + "pdes": "310442", + "cls": "ATE", + "H": 19.82, + "d_min_m": 204.19259045490102, + "d_src": "H at albedo 0.5", + "A2": 3.814258620185015e-14, + "A2_snr": 10.711200842979542, + "xi": 0.011460125279678754, + "xi_typ": 0.08663040423907005, + "t_j": 6.771293827116114, + "q": 0.4973955786057444, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 6.0542, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9133", + "n_obs": 573, + "cond": "0" + }, + { + "name": "310842 (2003 AK18)", + "pdes": "310842", + "cls": "ATE", + "H": 19.79, + "d_min_m": 207.03319234529107, + "d_src": "H at albedo 0.5", + "A2": -3.440081140785463e-14, + "A2_snr": -13.39074013540468, + "xi": 0.010479677434152939, + "xi_typ": 0.07921891517412612, + "t_j": 6.684435496184278, + "q": 0.5399742545097193, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.3257, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8448", + "n_obs": 886, + "cond": "0" + }, + { + "name": "311554 (2006 BQ147)", + "pdes": "311554", + "cls": "ATE", + "H": 18.72, + "d_min_m": 382.0, + "d_src": "measured", + "A2": -2.598604801352834e-14, + "A2_snr": -4.771584284525953, + "xi": 0.014606388558773324, + "xi_typ": 0.0584255542350933, + "t_j": 7.000865743003866, + "q": 0.4736457193300305, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 9.15, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12481", + "n_obs": 622, + "cond": "0" + }, + { + "name": "313276 (2002 AX1)", + "pdes": "313276", + "cls": "ATE", + "H": 19.83, + "d_min_m": 203.25441072185026, + "d_src": "H at albedo 0.5", + "A2": 3.647594564471462e-14, + "A2_snr": 8.28998764652605, + "xi": 0.010909021275205492, + "xi_typ": 0.08246444954658982, + "t_j": 6.492610949095768, + "q": 0.403148037273536, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 131.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8816", + "n_obs": 341, + "cond": "0" + }, + { + "name": "322756 (2001 CK32)", + "pdes": "322756", + "cls": "ATE", + "H": 19.23, + "d_min_m": 267.94149657539054, + "d_src": "H at albedo 0.5", + "A2": -2.325707883851113e-14, + "A2_snr": -3.6677304586833515, + "xi": 0.009169262245489931, + "xi_typ": 0.06931310745000009, + "t_j": 7.866856147798253, + "q": 0.447030102995763, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.166, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7723", + "n_obs": 1294, + "cond": "0" + }, + { + "name": "323300 (2003 UD22)", + "pdes": "323300", + "cls": "APO", + "H": 19.63, + "d_min_m": 222.86402962644044, + "d_src": "H at albedo 0.5", + "A2": -6.36057910116185e-14, + "A2_snr": -3.1317474648753567, + "xi": 0.02085815482567186, + "xi_typ": 0.15767282993259868, + "t_j": 5.336550058818637, + "q": 0.7965735671287859, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7022", + "n_obs": 345, + "cond": "0" + }, + { + "name": "325102 (2008 EY5)", + "pdes": "325102", + "cls": "ATE", + "H": 20.17, + "d_min_m": 361.0, + "d_src": "measured", + "A2": -5.497022055068002e-14, + "A2_snr": -3.926444325048573, + "xi": 0.02919940026489451, + "xi_typ": 0.11679760105957804, + "t_j": 8.847028742092832, + "q": 0.2336575287251489, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4347", + "n_obs": 175, + "cond": "1" + }, + { + "name": "326290 Akhenaten (1998 HE3)", + "pdes": "326290", + "cls": "ATE", + "H": 21.81, + "d_min_m": 81.66575449255562, + "d_src": "H at albedo 0.5", + "A2": -2.782777839382593e-14, + "A2_snr": -24.49628379738198, + "xi": 0.003343934523481672, + "xi_typ": 0.025277768998902227, + "t_j": 6.6538585106645085, + "q": 0.4923200036034897, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12086", + "n_obs": 561, + "cond": "0" + }, + { + "name": "326354 (2000 SJ344)", + "pdes": "326354", + "cls": "APO", + "H": 22.78, + "d_min_m": 52.24442801486141, + "d_src": "H at albedo 0.5", + "A2": -1.513550689857094e-13, + "A2_snr": -12.560586637818208, + "xi": 0.011635262861476505, + "xi_typ": 0.087954319915236, + "t_j": 5.479142927745507, + "q": 0.9412020672122196, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8260", + "n_obs": 70, + "cond": "0" + }, + { + "name": "326386 (2001 OA14)", + "pdes": "326386", + "cls": "APO", + "H": 18.58, + "d_min_m": 361.44313358626084, + "d_src": "H at albedo 0.5", + "A2": 1.513027867067189e-14, + "A2_snr": 3.101102412517297, + "xi": 0.008046854632951914, + "xi_typ": 0.06082850341451057, + "t_j": 5.501747297181501, + "q": 0.6298964965451379, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9227", + "n_obs": 565, + "cond": "0" + }, + { + "name": "326683 (2002 WP)", + "pdes": "326683", + "cls": "AMO", + "H": 18.48, + "d_min_m": 518.0, + "d_src": "measured", + "A2": 1.510344301659746e-14, + "A2_snr": 3.2313742012403637, + "xi": 0.011511846000859138, + "xi_typ": 0.04604738400343655, + "t_j": 4.5619391458220395, + "q": 1.136996866982374, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 6.262, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8617", + "n_obs": 1337, + "cond": "0" + }, + { + "name": "329275 (1999 VP6)", + "pdes": "329275", + "cls": "APO", + "H": 20.09, + "d_min_m": 180.31837244512244, + "d_src": "H at albedo 0.5", + "A2": -3.790818557949302e-14, + "A2_snr": -4.759345333269683, + "xi": 0.010058013794418235, + "xi_typ": 0.07603143766653651, + "t_j": 4.73057822806612, + "q": 0.9585539160286007, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9746", + "n_obs": 244, + "cond": "0" + }, + { + "name": "329437 (2002 OA22)", + "pdes": "329437", + "cls": "ATE", + "H": 19.41, + "d_min_m": 246.62663577772202, + "d_src": "H at albedo 0.5", + "A2": 1.751707427136795e-14, + "A2_snr": 4.414585249840713, + "xi": 0.006356832970300878, + "xi_typ": 0.048053140472549036, + "t_j": 6.376943545995538, + "q": 0.7081356805356838, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.6214, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7729", + "n_obs": 921, + "cond": "0" + }, + { + "name": "330659 (2008 GG2)", + "pdes": "330659", + "cls": "AMO", + "H": 23.02, + "d_min_m": 46.777820040799014, + "d_src": "H at albedo 0.5", + "A2": 9.766292905441736e-14, + "A2_snr": 14.070440722434428, + "xi": 0.0067221619945475415, + "xi_typ": 0.05081476831503634, + "t_j": 4.312567711937124, + "q": 1.146481382740954, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8090", + "n_obs": 341, + "cond": "0" + }, + { + "name": "331876 (2004 CL)", + "pdes": "331876", + "cls": "APO", + "H": 20.56, + "d_min_m": 145.22452971940533, + "d_src": "H at albedo 0.5", + "A2": 7.945511289633326e-14, + "A2_snr": 3.819957350785253, + "xi": 0.016978568765857488, + "xi_typ": 0.12834591592076502, + "t_j": 4.86722986290512, + "q": 0.5958236856989139, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7829", + "n_obs": 180, + "cond": "0" + }, + { + "name": "333889 (1998 SV4)", + "pdes": "333889", + "cls": "ATE", + "H": 18.24, + "d_min_m": 919.0, + "d_src": "measured", + "A2": 9.585863865199018e-15, + "A2_snr": 4.961627259419782, + "xi": 0.012962417893314367, + "xi_typ": 0.05184967157325747, + "t_j": 6.734944415992007, + "q": 0.2923118086360088, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.817, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10249", + "n_obs": 1299, + "cond": "0" + }, + { + "name": "334412 (2002 EZ2)", + "pdes": "334412", + "cls": "AMO", + "H": 20.32, + "d_min_m": 162.19593991981966, + "d_src": "H at albedo 0.5", + "A2": -4.867025689156619e-14, + "A2_snr": -9.571338621743596, + "xi": 0.011615632612876223, + "xi_typ": 0.08780592918389107, + "t_j": 5.118525047038383, + "q": 1.19173532073653, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 34.077, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8985", + "n_obs": 653, + "cond": "0" + }, + { + "name": "337084 (1998 SE36)", + "pdes": "337084", + "cls": "AMO", + "H": 19.76, + "d_min_m": 209.91331094430225, + "d_src": "H at albedo 0.5", + "A2": -4.792099802261392e-14, + "A2_snr": -4.8375729883519, + "xi": 0.014801477971066589, + "xi_typ": 0.11188865642183737, + "t_j": 4.867902289549946, + "q": 1.208431115737346, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 11.855, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10242", + "n_obs": 434, + "cond": "0" + }, + { + "name": "337248 (2000 RH60)", + "pdes": "337248", + "cls": "ATE", + "H": 20.08, + "d_min_m": 846.0, + "d_src": "measured", + "A2": -3.353995604250558e-14, + "A2_snr": -7.511748273797443, + "xi": 0.04175150185367183, + "xi_typ": 0.16700600741468732, + "t_j": 6.92558659111769, + "q": 0.3705407981458314, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 25.2, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8813", + "n_obs": 628, + "cond": "0" + }, + { + "name": "337252 (2000 SD8)", + "pdes": "337252", + "cls": "APO", + "H": 20.82, + "d_min_m": 128.8368146359561, + "d_src": "H at albedo 0.5", + "A2": -8.15745626591803e-14, + "A2_snr": -12.20445282154104, + "xi": 0.015464432346813434, + "xi_typ": 0.11690012044700371, + "t_j": 5.488146235131801, + "q": 0.774648538653462, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8794", + "n_obs": 232, + "cond": "0" + }, + { + "name": "338292 (2002 UA31)", + "pdes": "338292", + "cls": "ATE", + "H": 19.11, + "d_min_m": 283.1652650257843, + "d_src": "H at albedo 0.5", + "A2": -2.411400834395743e-14, + "A2_snr": -3.318289300117989, + "xi": 0.010047283013708112, + "xi_typ": 0.07595032058901492, + "t_j": 7.102098909797911, + "q": 0.409655124189908, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.5564, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8342", + "n_obs": 548, + "cond": "0" + }, + { + "name": "339714 (2005 ST1)", + "pdes": "339714", + "cls": "APO", + "H": 20.35, + "d_min_m": 159.9705281955904, + "d_src": "H at albedo 0.5", + "A2": -2.00988460785069e-14, + "A2_snr": -5.787171344228881, + "xi": 0.004730971732452818, + "xi_typ": 0.03576278475356159, + "t_j": 4.5053098648731496, + "q": 0.9129475350429709, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.68, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12796", + "n_obs": 544, + "cond": "0" + }, + { + "name": "341843 (2008 EV5)", + "pdes": "341843", + "cls": "ATE", + "H": 20.05, + "d_min_m": 400.0, + "d_src": "measured", + "A2": -3.252981352093446e-14, + "A2_snr": -4.1016030161309365, + "xi": 0.019146121698459008, + "xi_typ": 0.07658448679383603, + "t_j": 6.269532830454748, + "q": 0.8802102630181334, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.725, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6624", + "n_obs": 1486, + "cond": "0" + }, + { + "name": "344074 (1997 UH9)", + "pdes": "344074", + "cls": "ATE", + "H": 19.0, + "d_min_m": 297.8790627981737, + "d_src": "H at albedo 0.5", + "A2": 2.317010493100229e-14, + "A2_snr": 4.984962334552989, + "xi": 0.01015563840942369, + "xi_typ": 0.0767694103898018, + "t_j": 6.902936161998215, + "q": 0.4359567729727786, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10290", + "n_obs": 803, + "cond": "0" + }, + { + "name": "345705 (2006 VB14)", + "pdes": "345705", + "cls": "ATE", + "H": 18.58, + "d_min_m": 406.0, + "d_src": "measured", + "A2": -1.427119821264348e-14, + "A2_snr": -8.925077056062214, + "xi": 0.008525615096134968, + "xi_typ": 0.03410246038453987, + "t_j": 7.379634631328612, + "q": 0.444044721640193, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.204, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6651", + "n_obs": 1416, + "cond": "0" + }, + { + "name": "348306 (2005 AY28)", + "pdes": "348306", + "cls": "ATE", + "H": 21.51, + "d_min_m": 93.76483177290298, + "d_src": "H at albedo 0.5", + "A2": -7.754620936198217e-14, + "A2_snr": -20.42302063786731, + "xi": 0.010698916602209787, + "xi_typ": 0.08087620750647788, + "t_j": 6.631391970282184, + "q": 0.3750217029954597, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7638", + "n_obs": 271, + "cond": "0" + }, + { + "name": "349507 (2008 QY)", + "pdes": "349507", + "cls": "APO", + "H": 18.5, + "d_min_m": 375.00752179805113, + "d_src": "H at albedo 0.5", + "A2": 3.285418815367244e-14, + "A2_snr": 2.2228814718316943, + "xi": 0.018128838030943412, + "xi_typ": 0.13704113425270323, + "t_j": 5.204082167041686, + "q": 0.4886450454650535, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12491", + "n_obs": 1035, + "cond": "0" + }, + { + "name": "350462 (1998 KG3)", + "pdes": "350462", + "cls": "AMO", + "H": 22.1, + "d_min_m": 71.45621017269329, + "d_src": "H at albedo 0.5", + "A2": -6.838816999300537e-14, + "A2_snr": -11.652439937468968, + "xi": 0.0071905185568398935, + "xi_typ": 0.05435521113998119, + "t_j": 5.421549699820675, + "q": 1.023431106045902, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.335, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9131", + "n_obs": 312, + "cond": "0" + }, + { + "name": "350523 (2000 EA14)", + "pdes": "350523", + "cls": "APO", + "H": 21.2, + "d_min_m": 108.15335067750168, + "d_src": "H at albedo 0.5", + "A2": 7.203078005112303e-14, + "A2_snr": 19.269871602761643, + "xi": 0.011462975041786613, + "xi_typ": 0.08665194641573601, + "t_j": 5.562096418477198, + "q": 0.8910496076700961, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9557", + "n_obs": 333, + "cond": "0" + }, + { + "name": "350751 (2002 AW)", + "pdes": "350751", + "cls": "APO", + "H": 20.82, + "d_min_m": 128.8368146359561, + "d_src": "H at albedo 0.5", + "A2": -5.156113011317883e-14, + "A2_snr": -9.40381727397024, + "xi": 0.009774659922994568, + "xi_typ": 0.07388948373278109, + "t_j": 5.732335207063607, + "q": 0.7965098824285871, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.647, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8035", + "n_obs": 710, + "cond": "0" + }, + { + "name": "351545 (2005 TE15)", + "pdes": "351545", + "cls": "APO", + "H": 19.81, + "d_min_m": 205.1351006288432, + "d_src": "H at albedo 0.5", + "A2": -4.336452379853568e-14, + "A2_snr": -4.67542035563727, + "xi": 0.013089221302191674, + "xi_typ": 0.09894521263168055, + "t_j": 5.200490476596927, + "q": 0.7906312190672975, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.61, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7379", + "n_obs": 481, + "cond": "0" + }, + { + "name": "354182 (2002 DU3)", + "pdes": "354182", + "cls": "APO", + "H": 20.77, + "d_min_m": 131.8378095647483, + "d_src": "H at albedo 0.5", + "A2": 3.534220517467281e-14, + "A2_snr": 4.2896231550762, + "xi": 0.006856032579443969, + "xi_typ": 0.05182673481647264, + "t_j": 5.442885051903901, + "q": 0.8726269828305128, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.4, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8333", + "n_obs": 286, + "cond": "0" + }, + { + "name": "357622 (2005 EY95)", + "pdes": "357622", + "cls": "APO", + "H": 20.32, + "d_min_m": 162.19593991981966, + "d_src": "H at albedo 0.5", + "A2": -4.254272021242088e-14, + "A2_snr": -6.1584713683296, + "xi": 0.010153236080935806, + "xi_typ": 0.07675125049338347, + "t_j": 5.568846099034607, + "q": 0.5003682605986277, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.925, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7632", + "n_obs": 319, + "cond": "0" + }, + { + "name": "363027 (1998 ST27)", + "pdes": "363027", + "cls": "ATE", + "H": 19.58, + "d_min_m": 578.0, + "d_src": "measured", + "A2": 1.633588047728656e-14, + "A2_snr": 101.97178824773135, + "xi": 0.013893435068471375, + "xi_typ": 0.0555737402738855, + "t_j": 6.9744970183088855, + "q": 0.385475005389424, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10208", + "n_obs": 1054, + "cond": "0" + }, + { + "name": "363116 (2001 GQ2)", + "pdes": "363116", + "cls": "APO", + "H": 20.32, + "d_min_m": 162.19593991981966, + "d_src": "H at albedo 0.5", + "A2": -2.962793787535182e-14, + "A2_snr": -3.176236907734972, + "xi": 0.007070997019883054, + "xi_typ": 0.05345171324539829, + "t_j": 5.059074353457028, + "q": 0.6033996609173623, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8770", + "n_obs": 406, + "cond": "0" + }, + { + "name": "363305 (2002 NV16)", + "pdes": "363305", + "cls": "APO", + "H": 21.42, + "d_min_m": 97.7327184210278, + "d_src": "H at albedo 0.5", + "A2": -2.33620767306597e-14, + "A2_snr": -5.410392943645136, + "xi": 0.00335962399858514, + "xi_typ": 0.0253963702826877, + "t_j": 5.148819290378052, + "q": 0.9655181555309057, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.9067, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8226", + "n_obs": 629, + "cond": "0" + }, + { + "name": "363505 (2003 UC20)", + "pdes": "363505", + "cls": "ATE", + "H": 18.48, + "d_min_m": 1876.0, + "d_src": "measured", + "A2": -8.06788964613139e-15, + "A2_snr": -19.80822402683867, + "xi": 0.022270605932988373, + "xi_typ": 0.08908242373195349, + "t_j": 7.387265021057698, + "q": 0.5180862725422042, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 29.6, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "26234", + "n_obs": 1075, + "cond": "0" + }, + { + "name": "363599 (2004 FG11)", + "pdes": "363599", + "cls": "APO", + "H": 21.04, + "d_min_m": 152.0, + "d_src": "measured", + "A2": -5.899805378368057e-14, + "A2_snr": -13.852560174613892, + "xi": 0.013195338130521476, + "xi_typ": 0.052781352522085906, + "t_j": 4.041212653186136, + "q": 0.4376066651829501, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.021, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8052", + "n_obs": 528, + "cond": "0" + }, + { + "name": "364136 (2006 CJ)", + "pdes": "364136", + "cls": "ATE", + "H": 20.18, + "d_min_m": 172.99756039777577, + "d_src": "H at albedo 0.5", + "A2": -3.163127693511722e-14, + "A2_snr": -22.95448253636954, + "xi": 0.008051855147275133, + "xi_typ": 0.060866303749729574, + "t_j": 8.154842419966648, + "q": 0.165844243318015, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7339", + "n_obs": 637, + "cond": "0" + }, + { + "name": "368184 (2000 RN77)", + "pdes": "368184", + "cls": "ATE", + "H": 19.36, + "d_min_m": 381.0, + "d_src": "measured", + "A2": -2.188522079428345e-14, + "A2_snr": -3.4492073749855714, + "xi": 0.012269169270943125, + "xi_typ": 0.0490766770837725, + "t_j": 6.247817651248449, + "q": 0.64861994023681, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9519", + "n_obs": 517, + "cond": "0" + }, + { + "name": "369984 (1998 QR52)", + "pdes": "369984", + "cls": "APO", + "H": 18.96, + "d_min_m": 303.41704804785087, + "d_src": "H at albedo 0.5", + "A2": -2.763614819219021e-14, + "A2_snr": -5.993525957967948, + "xi": 0.012338340228078774, + "xi_typ": 0.09326908524228683, + "t_j": 5.8025513635068275, + "q": 0.7432742592919276, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 234.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7648", + "n_obs": 495, + "cond": "0" + }, + { + "name": "369986 (1998 SO)", + "pdes": "369986", + "cls": "ATE", + "H": 20.44, + "d_min_m": 153.47582577478687, + "d_src": "H at albedo 0.5", + "A2": 2.299105767564885e-14, + "A2_snr": 6.828350958018666, + "xi": 0.005192041794847661, + "xi_typ": 0.03924814681662957, + "t_j": 7.575951790409848, + "q": 0.2204378962010987, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9844", + "n_obs": 302, + "cond": "0" + }, + { + "name": "376848 (2001 RY47)", + "pdes": "376848", + "cls": "ATE", + "H": 19.61, + "d_min_m": 224.92616510316475, + "d_src": "H at albedo 0.5", + "A2": 4.129557182928029e-14, + "A2_snr": 7.556371789438296, + "xi": 0.013667299551807684, + "xi_typ": 0.10331507345116477, + "t_j": 6.471403128203116, + "q": 0.5503377834941741, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9160", + "n_obs": 616, + "cond": "0" + }, + { + "name": "376879 (2001 WW1)", + "pdes": "376879", + "cls": "AMO", + "H": 22.35, + "d_min_m": 63.685414351894885, + "d_src": "H at albedo 0.5", + "A2": -6.28989333800208e-14, + "A2_snr": -4.426385178045095, + "xi": 0.0058941679928185275, + "xi_typ": 0.044555721984670185, + "t_j": 5.19007347546242, + "q": 1.062706613620204, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7295", + "n_obs": 106, + "cond": "0" + }, + { + "name": "377097 (2002 WQ4)", + "pdes": "377097", + "cls": "APO", + "H": 19.71, + "d_min_m": 214.8028200757555, + "d_src": "H at albedo 0.5", + "A2": -2.194366013124338e-14, + "A2_snr": -4.846214693295799, + "xi": 0.006935668017815074, + "xi_typ": 0.052428722146408514, + "t_j": 3.6760129965570423, + "q": 0.8683208453657535, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 36.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "27253", + "n_obs": 417, + "cond": "0" + }, + { + "name": "380818 (2005 YV128)", + "pdes": "380818", + "cls": "ATE", + "H": 20.67, + "d_min_m": 138.05113410774572, + "d_src": "H at albedo 0.5", + "A2": 4.519668113678618e-14, + "A2_snr": 5.094880074037445, + "xi": 0.00918091092759169, + "xi_typ": 0.06940116320983696, + "t_j": 6.338185876867752, + "q": 0.4500400401152377, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6646", + "n_obs": 232, + "cond": "0" + }, + { + "name": "385186 (1994 AW1)", + "pdes": "385186", + "cls": "AMO", + "H": 17.64, + "d_min_m": 811.0, + "d_src": "measured", + "A2": 1.419053572510816e-14, + "A2_snr": 7.344997787323065, + "xi": 0.016933974274794962, + "xi_typ": 0.06773589709917985, + "t_j": 5.547318918341977, + "q": 1.021504322860666, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.5193, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13614", + "n_obs": 2792, + "cond": "0" + }, + { + "name": "387733 (2003 GS)", + "pdes": "387733", + "cls": "ATE", + "H": 18.93, + "d_min_m": 344.0, + "d_src": "measured", + "A2": -1.182858912040006e-14, + "A2_snr": -4.247249235332158, + "xi": 0.005987294754704703, + "xi_typ": 0.023949179018818812, + "t_j": 6.618029939398905, + "q": 0.6976134721508217, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.467, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8101", + "n_obs": 933, + "cond": "0" + }, + { + "name": "387746 (2003 MH4)", + "pdes": "387746", + "cls": "APO", + "H": 20.13, + "d_min_m": 366.0, + "d_src": "measured", + "A2": -5.162192976340432e-14, + "A2_snr": -3.759790951449695, + "xi": 0.027800625732603675, + "xi_typ": 0.1112025029304147, + "t_j": 3.702827720498589, + "q": 0.9553671337793478, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8250", + "n_obs": 581, + "cond": "0" + }, + { + "name": "388188 (2006 DP14)", + "pdes": "388188", + "cls": "APO", + "H": 19.01, + "d_min_m": 296.51043282489735, + "d_src": "H at albedo 0.5", + "A2": -3.93987758351203e-14, + "A2_snr": -5.966799308665804, + "xi": 0.017189449042778224, + "xi_typ": 0.12994002097545274, + "t_j": 4.44484520244597, + "q": 0.3055362321796165, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.7868, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7377", + "n_obs": 531, + "cond": "0" + }, + { + "name": "388945 (2008 TZ3)", + "pdes": "388945", + "cls": "APO", + "H": 20.44, + "d_min_m": 153.47582577478687, + "d_src": "H at albedo 0.5", + "A2": 7.039946739546824e-14, + "A2_snr": 4.640703190208849, + "xi": 0.015898223657601726, + "xi_typ": 0.12017927453056532, + "t_j": 4.272343828376709, + "q": 0.9686075683312064, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 39.15, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6578", + "n_obs": 2416, + "cond": "0" + }, + { + "name": "390725 (2003 HB)", + "pdes": "390725", + "cls": "ATE", + "H": 19.69, + "d_min_m": 293.0, + "d_src": "measured", + "A2": -4.266204560423661e-14, + "A2_snr": -5.300950000526417, + "xi": 0.01839282954541467, + "xi_typ": 0.07357131818165868, + "t_j": 6.83335779128892, + "q": 0.5265369908453247, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8067", + "n_obs": 499, + "cond": "0" + }, + { + "name": "393569 (2003 JC13)", + "pdes": "393569", + "cls": "APO", + "H": 20.3, + "d_min_m": 551.0, + "d_src": "measured", + "A2": -4.104005719142831e-14, + "A2_snr": -5.383008550816935, + "xi": 0.03327352452199086, + "xi_typ": 0.13309409808796344, + "t_j": 5.728949602661155, + "q": 0.7301956191641064, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8408", + "n_obs": 522, + "cond": "0" + }, + { + "name": "396593 (2001 HC)", + "pdes": "396593", + "cls": "ATE", + "H": 19.06, + "d_min_m": 289.7610313582077, + "d_src": "H at albedo 0.5", + "A2": 2.4073010822722e-14, + "A2_snr": 3.0623344132708303, + "xi": 0.01026383448453177, + "xi_typ": 0.07758729583999965, + "t_j": 6.598748107039542, + "q": 0.4378698878767394, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.1881, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8430", + "n_obs": 357, + "cond": "0" + }, + { + "name": "397326 (2006 TC1)", + "pdes": "397326", + "cls": "AMO", + "H": 19.09, + "d_min_m": 285.785360963942, + "d_src": "H at albedo 0.5", + "A2": 2.722912257399517e-14, + "A2_snr": 5.372755046171107, + "xi": 0.011450194813248361, + "xi_typ": 0.08655533696884807, + "t_j": 4.087229981027812, + "q": 1.075078037897585, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "26854", + "n_obs": 266, + "cond": "0" + }, + { + "name": "398188 Agni (2010 LE15)", + "pdes": "398188", + "cls": "ATE", + "H": 19.33, + "d_min_m": 462.0, + "d_src": "measured", + "A2": -3.35983942483115e-14, + "A2_snr": -7.770211435779717, + "xi": 0.022840191849585342, + "xi_typ": 0.09136076739834137, + "t_j": 6.7808888381654375, + "q": 0.6282334397519574, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 21.99, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9193", + "n_obs": 1214, + "cond": "0" + }, + { + "name": "399308 (1993 GD)", + "pdes": "399308", + "cls": "APO", + "H": 20.62, + "d_min_m": 141.26675810886675, + "d_src": "H at albedo 0.5", + "A2": 7.46852696064357e-14, + "A2_snr": 13.244417380109185, + "xi": 0.015524377042528695, + "xi_typ": 0.11735325975351808, + "t_j": 5.581294040748987, + "q": 0.839987351463957, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10884", + "n_obs": 163, + "cond": "0" + }, + { + "name": "401885 (2001 RV17)", + "pdes": "401885", + "cls": "ATE", + "H": 20.42, + "d_min_m": 154.8959201062059, + "d_src": "H at albedo 0.5", + "A2": -4.827054201480991e-14, + "A2_snr": -10.76266265659084, + "xi": 0.011001740685349364, + "xi_typ": 0.08316534240644492, + "t_j": 6.4688069735082125, + "q": 0.6015811713913933, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7728", + "n_obs": 421, + "cond": "0" + }, + { + "name": "408982 (2002 SP)", + "pdes": "408982", + "cls": "ATE", + "H": 20.78, + "d_min_m": 131.23206985250923, + "d_src": "H at albedo 0.5", + "A2": 4.503347591624353e-14, + "A2_snr": 7.365632305568127, + "xi": 0.00869590323076891, + "xi_typ": 0.06573484963913614, + "t_j": 6.374770548268466, + "q": 0.3614244408988855, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8784", + "n_obs": 140, + "cond": "0" + }, + { + "name": "410622 (2008 QF)", + "pdes": "410622", + "cls": "AMO", + "H": 21.72, + "d_min_m": 85.12163929214539, + "d_src": "H at albedo 0.5", + "A2": -7.245572051689008e-14, + "A2_snr": -5.138703582758162, + "xi": 0.009075110220489192, + "xi_typ": 0.06860138503975698, + "t_j": 3.6724979851529715, + "q": 1.293071734877661, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8843", + "n_obs": 282, + "cond": "0" + }, + { + "name": "410777 (2009 FD)", + "pdes": "410777", + "cls": "APO", + "H": 22.18, + "d_min_m": 472.0, + "d_src": "measured", + "A2": 8.184872662672221e-14, + "A2_snr": 7.9004562381006, + "xi": 0.05684511847028407, + "xi_typ": 0.22738047388113627, + "t_j": 5.291162025541116, + "q": 0.590159011256051, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5523", + "n_obs": 516, + "cond": "0" + }, + { + "name": "412976 (1987 WC)", + "pdes": "412976", + "cls": "AMO", + "H": 19.91, + "d_min_m": 195.90250023330623, + "d_src": "H at albedo 0.5", + "A2": 6.354838259001724e-14, + "A2_snr": 5.067654114036462, + "xi": 0.01831823939606693, + "xi_typ": 0.13847287399582603, + "t_j": 4.776755616633495, + "q": 1.043733701173299, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "13938", + "n_obs": 318, + "cond": "0" + }, + { + "name": "412983 (1996 FO3)", + "pdes": "412983", + "cls": "AMO", + "H": 20.16, + "d_min_m": 174.59828711568056, + "d_src": "H at albedo 0.5", + "A2": -8.137241065511603e-14, + "A2_snr": -8.992420229319928, + "xi": 0.020905300325947954, + "xi_typ": 0.15802921641593087, + "t_j": 4.610296287755381, + "q": 1.023837769557056, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11160", + "n_obs": 389, + "cond": "0" + }, + { + "name": "413260 (2003 TL4)", + "pdes": "413260", + "cls": "ATE", + "H": 19.57, + "d_min_m": 229.1078547221218, + "d_src": "H at albedo 0.5", + "A2": -3.579785269915891e-14, + "A2_snr": -5.305743693368743, + "xi": 0.012068025121122199, + "xi_typ": 0.09122569510334134, + "t_j": 7.396419448571012, + "q": 0.4804815078849238, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 27.2, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8028", + "n_obs": 463, + "cond": "0" + }, + { + "name": "413577 (2005 UL5)", + "pdes": "413577", + "cls": "ATE", + "H": 20.34, + "d_min_m": 160.70891860446557, + "d_src": "H at albedo 0.5", + "A2": -4.487815020006207e-14, + "A2_snr": -9.915631948754324, + "xi": 0.010612413822801934, + "xi_typ": 0.08022230795782342, + "t_j": 6.232820900668002, + "q": 0.4028083589722681, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.4591, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7279", + "n_obs": 420, + "cond": "0" + }, + { + "name": "416002 (2002 BN)", + "pdes": "416002", + "cls": "ATE", + "H": 20.49, + "d_min_m": 149.98228946405098, + "d_src": "H at albedo 0.5", + "A2": -5.013029040701545e-14, + "A2_snr": -5.545386106970735, + "xi": 0.011063166521103491, + "xi_typ": 0.08362967807924411, + "t_j": 6.553754870060937, + "q": 0.3969227254966857, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8388", + "n_obs": 138, + "cond": "0" + }, + { + "name": "416151 (2002 RQ25)", + "pdes": "416151", + "cls": "APO", + "H": 20.67, + "d_min_m": 138.05113410774572, + "d_src": "H at albedo 0.5", + "A2": 5.932881517473172e-14, + "A2_snr": 6.482606553183099, + "xi": 0.012051605424528164, + "xi_typ": 0.09110157386393863, + "t_j": 5.557364459402159, + "q": 0.7711907737829814, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 12.191, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7392", + "n_obs": 318, + "cond": "0" + }, + { + "name": "417210 (2005 XV77)", + "pdes": "417210", + "cls": "ATE", + "H": 20.55, + "d_min_m": 145.8948556918686, + "d_src": "H at albedo 0.5", + "A2": -2.910294751604879e-14, + "A2_snr": -3.323392430746693, + "xi": 0.006247642995002404, + "xi_typ": 0.04722774184311746, + "t_j": 7.310013943304212, + "q": 0.4594205779658759, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6605", + "n_obs": 655, + "cond": "0" + }, + { + "name": "417217 (2005 YS)", + "pdes": "417217", + "cls": "ATE", + "H": 19.52, + "d_min_m": 234.4444622136245, + "d_src": "H at albedo 0.5", + "A2": 3.193252044437285e-14, + "A2_snr": 3.0499064416784, + "xi": 0.011015708316304555, + "xi_typ": 0.08327092777190825, + "t_j": 7.898442185779519, + "q": 0.3197625894567938, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6598", + "n_obs": 357, + "cond": "0" + }, + { + "name": "422638 (1994 CB)", + "pdes": "422638", + "cls": "APO", + "H": 21.16, + "d_min_m": 193.0, + "d_src": "measured", + "A2": -4.382275289829485e-14, + "A2_snr": -10.081148584838935, + "xi": 0.012445037657929722, + "xi_typ": 0.04978015063171889, + "t_j": 5.409277289916318, + "q": 0.9826733904771124, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.676, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11704", + "n_obs": 205, + "cond": "0" + }, + { + "name": "422686 (2000 AC6)", + "pdes": "422686", + "cls": "ATE", + "H": 21.6, + "d_min_m": 176.0, + "d_src": "measured", + "A2": 5.098275719698691e-14, + "A2_snr": 18.959746075487878, + "xi": 0.013203079452111207, + "xi_typ": 0.05281231780844483, + "t_j": 6.867671569217809, + "q": 0.6091096652274848, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.4437, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9513", + "n_obs": 464, + "cond": "0" + }, + { + "name": "424392 (2007 YJ)", + "pdes": "424392", + "cls": "APO", + "H": 22.11, + "d_min_m": 239.0, + "d_src": "measured", + "A2": -1.64567227730087e-13, + "A2_snr": -6.725264721294933, + "xi": 0.057873600787264265, + "xi_typ": 0.23149440314905706, + "t_j": 5.598611473276413, + "q": 0.7946641224543649, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5459", + "n_obs": 189, + "cond": "0" + }, + { + "name": "425755 (2011 CP4)", + "pdes": "425755", + "cls": "ATE", + "H": 21.12, + "d_min_m": 112.2121745938383, + "d_src": "H at albedo 0.5", + "A2": 5.481450445990093e-14, + "A2_snr": 8.143590025241558, + "xi": 0.009050544773054158, + "xi_typ": 0.0684156877118766, + "t_j": 6.113182020372519, + "q": 0.1182021824559993, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8449", + "n_obs": 187, + "cond": "0" + }, + { + "name": "427684 (2004 DH2)", + "pdes": "427684", + "cls": "ATE", + "H": 20.22, + "d_min_m": 169.8399990679919, + "d_src": "H at albedo 0.5", + "A2": 3.547104090175979e-14, + "A2_snr": 6.458674599737762, + "xi": 0.008864477906798632, + "xi_typ": 0.06700915441090165, + "t_j": 6.2282387399946, + "q": 0.5662751062646263, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 8.962, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8083", + "n_obs": 378, + "cond": "0" + }, + { + "name": "428209 (2006 VC)", + "pdes": "428209", + "cls": "APO", + "H": 20.09, + "d_min_m": 180.31837244512244, + "d_src": "H at albedo 0.5", + "A2": 6.446529221667156e-13, + "A2_snr": 3.6879457789857875, + "xi": 0.17104295245595783, + "xi_typ": 1.292963187739168, + "t_j": 3.7192355561464527, + "q": 0.9860155146727654, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.8, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7139", + "n_obs": 177, + "cond": "0" + }, + { + "name": "433953 (1997 XR2)", + "pdes": "433953", + "cls": "APO", + "H": 20.91, + "d_min_m": 259.0, + "d_src": "measured", + "A2": 3.350524716087226e-14, + "A2_snr": 15.730162986325004, + "xi": 0.01276885161591378, + "xi_typ": 0.05107540646365512, + "t_j": 5.717148699228273, + "q": 0.8602103138075924, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 9.3205, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10332", + "n_obs": 548, + "cond": "0" + }, + { + "name": "434196 (2003 HG2)", + "pdes": "434196", + "cls": "APO", + "H": 21.54, + "d_min_m": 92.47833005127588, + "d_src": "H at albedo 0.5", + "A2": -3.015597788691346e-14, + "A2_snr": -3.3652469464248926, + "xi": 0.004103483061280952, + "xi_typ": 0.031019416255186904, + "t_j": 5.739482281876272, + "q": 0.9195216821178955, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8464", + "n_obs": 259, + "cond": "0" + }, + { + "name": "434632 (2005 WE)", + "pdes": "434632", + "cls": "APO", + "H": 19.85, + "d_min_m": 1150.0, + "d_src": "measured", + "A2": -4.403077728363731e-14, + "A2_snr": -3.068346849033959, + "xi": 0.07450637649512681, + "xi_typ": 0.29802550598050725, + "t_j": 5.4090651151501445, + "q": 0.8617261262448543, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7427", + "n_obs": 260, + "cond": "0" + }, + { + "name": "437841 (1998 HD14)", + "pdes": "437841", + "cls": "ATE", + "H": 21.0, + "d_min_m": 118.58779085770836, + "d_src": "H at albedo 0.5", + "A2": -4.802397499337236e-14, + "A2_snr": -4.740767521556995, + "xi": 0.008379870998739295, + "xi_typ": 0.06334587051847608, + "t_j": 6.2106725711180095, + "q": 0.6621633536878336, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7735", + "n_obs": 210, + "cond": "0" + }, + { + "name": "437844 (1999 MN)", + "pdes": "437844", + "cls": "ATE", + "H": 21.01, + "d_min_m": 118.04292945151283, + "d_src": "H at albedo 0.5", + "A2": 3.778771956988236e-14, + "A2_snr": 23.140060973596057, + "xi": 0.006563415715237116, + "xi_typ": 0.04961475923900152, + "t_j": 8.25524848015894, + "q": 0.2256010870108077, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.495, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9860", + "n_obs": 298, + "cond": "0" + }, + { + "name": "441823 (2009 QO5)", + "pdes": "441823", + "cls": "AMO", + "H": 22.11, + "d_min_m": 71.12789870930823, + "d_src": "H at albedo 0.5", + "A2": -2.723155099536089e-13, + "A2_snr": -4.067446003788034, + "xi": 0.02850044273372634, + "xi_typ": 0.21544309636765066, + "t_j": 4.323535496424592, + "q": 1.215667231002207, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5794", + "n_obs": 105, + "cond": "0" + }, + { + "name": "441987 (2010 NY65)", + "pdes": "441987", + "cls": "APO", + "H": 21.35, + "d_min_m": 228.0, + "d_src": "measured", + "A2": -3.840766205103097e-14, + "A2_snr": -26.07444809981736, + "xi": 0.01288522387766471, + "xi_typ": 0.05154089551065884, + "t_j": 5.983281015358436, + "q": 0.6321333034703273, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.9706, + "A1_snr": null, + "A3_snr": -1.9530956291967876, + "verdict": null, + "arc": "5134", + "n_obs": 999, + "cond": "0" + }, + { + "name": "443837 (2000 TJ1)", + "pdes": "443837", + "cls": "AMO", + "H": 19.68, + "d_min_m": 253.0, + "d_src": "measured", + "A2": -2.008911236687055e-14, + "A2_snr": -3.882704361590752, + "xi": 0.00747860368577555, + "xi_typ": 0.0299144147431022, + "t_j": 5.209350986598791, + "q": 1.066662548847767, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 14.09, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9156", + "n_obs": 684, + "cond": "0" + }, + { + "name": "443880 (2001 UZ16)", + "pdes": "443880", + "cls": "APO", + "H": 19.38, + "d_min_m": 228.0, + "d_src": "measured", + "A2": -5.120724084272612e-14, + "A2_snr": -4.976408245162888, + "xi": 0.01717930035781261, + "xi_typ": 0.06871720143125044, + "t_j": 3.9826857231149915, + "q": 1.008855842938336, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.719, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7717", + "n_obs": 451, + "cond": "0" + }, + { + "name": "446789 (1998 FN9)", + "pdes": "446789", + "cls": "AMO", + "H": 20.91, + "d_min_m": 123.6061213242373, + "d_src": "H at albedo 0.5", + "A2": 8.106301622551968e-14, + "A2_snr": 3.2620932082704095, + "xi": 0.01474354731890246, + "xi_typ": 0.11145074185351146, + "t_j": 4.6992883119541675, + "q": 1.067609862988512, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10272", + "n_obs": 147, + "cond": "0" + }, + { + "name": "446924 (2002 VV17)", + "pdes": "446924", + "cls": "ATE", + "H": 20.16, + "d_min_m": 174.59828711568056, + "d_src": "H at albedo 0.5", + "A2": -2.781175661442838e-14, + "A2_snr": -8.583875498280364, + "xi": 0.0071450891025094665, + "xi_typ": 0.05401179674467926, + "t_j": 6.92387735650843, + "q": 0.4717863706211378, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12123", + "n_obs": 515, + "cond": "0" + }, + { + "name": "450237 (2002 XY38)", + "pdes": "450237", + "cls": "ATE", + "H": 23.18, + "d_min_m": 96.0, + "d_src": "measured", + "A2": -1.118847906538185e-13, + "A2_snr": -14.408859066815003, + "xi": 0.015804528236986328, + "xi_typ": 0.06321811294794531, + "t_j": 6.525077061640209, + "q": 0.7129422885251949, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7342", + "n_obs": 145, + "cond": "0" + }, + { + "name": "450300 (2004 QD14)", + "pdes": "450300", + "cls": "ATE", + "H": 20.68, + "d_min_m": 137.41684676237233, + "d_src": "H at albedo 0.5", + "A2": -4.594752389443465e-14, + "A2_snr": -6.930244931287278, + "xi": 0.009290548207117562, + "xi_typ": 0.0702299431414002, + "t_j": 6.320375717701319, + "q": 0.623633683315921, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8076", + "n_obs": 193, + "cond": "0" + }, + { + "name": "450649 (2006 UY64)", + "pdes": "450649", + "cls": "ATE", + "H": 19.42, + "d_min_m": 245.49348931632633, + "d_src": "H at albedo 0.5", + "A2": 1.607269629793185e-14, + "A2_snr": 5.027430809487598, + "xi": 0.005805878825481465, + "xi_typ": 0.043888318612570656, + "t_j": 6.3345938766215495, + "q": 0.7849827184311718, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.824, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6994", + "n_obs": 777, + "cond": "0" + }, + { + "name": "452334 (2001 LB)", + "pdes": "452334", + "cls": "APO", + "H": 21.07, + "d_min_m": 114.82593191045915, + "d_src": "H at albedo 0.5", + "A2": -2.652254308260587e-14, + "A2_snr": -5.283375116056946, + "xi": 0.0044812006718085735, + "xi_typ": 0.03387469300737444, + "t_j": 5.104174107485001, + "q": 1.0023700795248, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8039", + "n_obs": 176, + "cond": "0" + }, + { + "name": "452639 (2005 UY6)", + "pdes": "452639", + "cls": "APO", + "H": 18.14, + "d_min_m": 2249.0, + "d_src": "measured", + "A2": -5.381352489049309e-13, + "A2_snr": -11.269848144605882, + "xi": 1.7808204967953305, + "xi_typ": 7.123281987181322, + "t_j": 2.9406883779976996, + "q": 0.2859568232530261, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7587", + "n_obs": 219, + "cond": "0" + }, + { + "name": "452807 (2006 KV89)", + "pdes": "452807", + "cls": "APO", + "H": 21.52, + "d_min_m": 93.33402150380226, + "d_src": "H at albedo 0.5", + "A2": -7.88483892016889e-14, + "A2_snr": -8.409597824412211, + "xi": 0.010828593589128535, + "xi_typ": 0.08185647338692124, + "t_j": 5.427227366857809, + "q": 0.8363447531742237, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7439", + "n_obs": 176, + "cond": "0" + }, + { + "name": "455176 (1999 VF22)", + "pdes": "455176", + "cls": "APO", + "H": 20.71, + "d_min_m": 135.5314169418554, + "d_src": "H at albedo 0.5", + "A2": -4.935333814653443e-14, + "A2_snr": -8.756802368086309, + "xi": 0.009842281032618222, + "xi_typ": 0.07440065127404516, + "t_j": 4.638883311527646, + "q": 0.3432142326430733, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 6.681, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9237", + "n_obs": 524, + "cond": "0" + }, + { + "name": "455184 (2000 ED14)", + "pdes": "455184", + "cls": "ATE", + "H": 21.23, + "d_min_m": 106.66943107549822, + "d_src": "H at albedo 0.5", + "A2": 6.579782618565296e-14, + "A2_snr": 9.247761937547851, + "xi": 0.010327394677787897, + "xi_typ": 0.07806776573896801, + "t_j": 6.872426722648014, + "q": 0.3618058071416493, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9055", + "n_obs": 168, + "cond": "0" + }, + { + "name": "455415 (2003 GA)", + "pdes": "455415", + "cls": "AMO", + "H": 21.45, + "d_min_m": 96.39177525363137, + "d_src": "H at albedo 0.5", + "A2": 6.949841436506986e-14, + "A2_snr": 3.3141828500271746, + "xi": 0.009857212633146482, + "xi_typ": 0.07451352356454213, + "t_j": 5.031722765150871, + "q": 1.036502473719799, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.78, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8323", + "n_obs": 362, + "cond": "0" + }, + { + "name": "456946 (2008 AF32)", + "pdes": "456946", + "cls": "AMO", + "H": 21.31, + "d_min_m": 102.81109360402209, + "d_src": "H at albedo 0.5", + "A2": 6.459417763890485e-14, + "A2_snr": 4.012060722913345, + "xi": 0.009771755735581688, + "xi_typ": 0.07386753013948051, + "t_j": 5.15067197143114, + "q": 1.076392821712141, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6018", + "n_obs": 161, + "cond": "0" + }, + { + "name": "457175 (2008 GO98)", + "pdes": "457175", + "cls": "OMB", + "H": 12.91, + "d_min_m": 4920.848322348447, + "d_src": "H at albedo 0.5", + "A2": -1.150837244462713e-09, + "A2_snr": -11.162339907494792, + "xi": 8332.841811188167, + "xi_typ": 62990.36327669978, + "t_j": 2.9266924503386953, + "q": 2.864307509796164, + "known": "active comet 362P", + "cos_obl": [], + "periods": [], + "rot_per": 10.74, + "A1_snr": 11.544300964579595, + "A3_snr": -1.825234015828232, + "verdict": null, + "arc": "8774", + "n_obs": 1742, + "cond": "0" + }, + { + "name": "457662 (2009 DZ)", + "pdes": "457662", + "cls": "APO", + "H": 22.0, + "d_min_m": 74.82383760735217, + "d_src": "H at albedo 0.5", + "A2": -8.616976488701334e-14, + "A2_snr": -4.603085731143875, + "xi": 0.00948711438499252, + "xi_typ": 0.07171584377803912, + "t_j": 4.5567292801041885, + "q": 1.014209305527979, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5152", + "n_obs": 193, + "cond": "0" + }, + { + "name": "462959 (2011 DU)", + "pdes": "462959", + "cls": "APO", + "H": 21.08, + "d_min_m": 114.2983546761089, + "d_src": "H at albedo 0.5", + "A2": 8.609598609384466e-14, + "A2_snr": 8.160756975719872, + "xi": 0.014479785668254964, + "xi_typ": 0.10945689118777095, + "t_j": 5.339263148661068, + "q": 0.7991246707179894, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.29, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5394", + "n_obs": 650, + "cond": "0" + }, + { + "name": "465617 (2009 EK1)", + "pdes": "465617", + "cls": "APO", + "H": 21.36, + "d_min_m": 100.4708273970221, + "d_src": "H at albedo 0.5", + "A2": -9.389113249759669e-14, + "A2_snr": -2.9997166932139514, + "xi": 0.0138804583192993, + "xi_typ": 0.10492640227561006, + "t_j": 5.131349477283323, + "q": 0.956681012280072, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7813", + "n_obs": 86, + "cond": "0" + }, + { + "name": "465824 (2010 FR)", + "pdes": "465824", + "cls": "APO", + "H": 21.69, + "d_min_m": 86.30579925087679, + "d_src": "H at albedo 0.5", + "A2": -4.75775655050249e-14, + "A2_snr": -4.932873561951778, + "xi": 0.006042010069661092, + "xi_typ": 0.04567330303791796, + "t_j": 5.439355372840794, + "q": 0.718038208277663, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6017", + "n_obs": 265, + "cond": "0" + }, + { + "name": "467336 (2002 LT38)", + "pdes": "467336", + "cls": "ATE", + "H": 20.61, + "d_min_m": 141.91881583760627, + "d_src": "H at albedo 0.5", + "A2": 2.42302712521693e-14, + "A2_snr": 6.062114398841456, + "xi": 0.005059848398605456, + "xi_typ": 0.03824885866970987, + "t_j": 6.9158785328689465, + "q": 0.5801589535396814, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 14.95, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7698", + "n_obs": 839, + "cond": "0" + }, + { + "name": "467351 (2003 KO2)", + "pdes": "467351", + "cls": "ATE", + "H": 20.37, + "d_min_m": 158.50390957756028, + "d_src": "H at albedo 0.5", + "A2": 3.273576715771244e-14, + "A2_snr": 8.516068459342467, + "xi": 0.007634871849538322, + "xi_typ": 0.0577142063020747, + "t_j": 7.739253302637284, + "q": 0.3559544693198158, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 6.48, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8414", + "n_obs": 484, + "cond": "0" + }, + { + "name": "467460 (2006 JF42)", + "pdes": "467460", + "cls": "ATE", + "H": 19.05, + "d_min_m": 291.09850750980854, + "d_src": "H at albedo 0.5", + "A2": 3.623362404895256e-14, + "A2_snr": 6.227848753687273, + "xi": 0.01551997447833678, + "xi_typ": 0.11731997949642434, + "t_j": 8.32863126468534, + "q": 0.2807767787606286, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.98, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6903", + "n_obs": 368, + "cond": "0" + }, + { + "name": "468468 (2004 KH17)", + "pdes": "468468", + "cls": "ATE", + "H": 22.01, + "d_min_m": 197.0, + "d_src": "measured", + "A2": -6.673085202971823e-14, + "A2_snr": -16.432123129701605, + "xi": 0.01934337032062782, + "xi_typ": 0.07737348128251129, + "t_j": 7.899820537006808, + "q": 0.3574255398940479, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7673", + "n_obs": 248, + "cond": "0" + }, + { + "name": "468540 (2006 MD12)", + "pdes": "468540", + "cls": "ATE", + "H": 19.45, + "d_min_m": 242.12519236871776, + "d_src": "H at albedo 0.5", + "A2": -2.764201850459012e-14, + "A2_snr": -4.590934812255459, + "xi": 0.009848021367790392, + "xi_typ": 0.07444404412921009, + "t_j": 6.772132460015013, + "q": 0.3310981804192008, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7359", + "n_obs": 342, + "cond": "0" + }, + { + "name": "469219 Kamo`oalewa (2016 HO3)", + "pdes": "469219", + "cls": "APO", + "H": 24.31, + "d_min_m": 25.824979103260414, + "d_src": "H at albedo 0.5", + "A2": -1.341168313541087e-13, + "A2_snr": -7.572943611186261, + "xi": 0.005096388336238136, + "xi_typ": 0.03852507463513237, + "t_j": 6.062905575932424, + "q": 0.8984887574998687, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.467, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7660", + "n_obs": 335, + "cond": "0" + }, + { + "name": "469445 (2002 LT24)", + "pdes": "469445", + "cls": "ATE", + "H": 22.14, + "d_min_m": 143.0, + "d_src": "measured", + "A2": -5.985522181874092e-14, + "A2_snr": -46.871747704573934, + "xi": 0.012594395641893935, + "xi_typ": 0.05037758256757574, + "t_j": 7.870946814671202, + "q": 0.3630801017656973, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8065", + "n_obs": 287, + "cond": "0" + }, + { + "name": "469737 (2005 NW44)", + "pdes": "469737", + "cls": "ATE", + "H": 20.39, + "d_min_m": 157.05073699984126, + "d_src": "H at albedo 0.5", + "A2": 2.800353749681288e-14, + "A2_snr": 4.393400925135375, + "xi": 0.006471308815324503, + "xi_typ": 0.04891849652128184, + "t_j": 7.349508171484372, + "q": 0.4026358310377653, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 31.5, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7331", + "n_obs": 377, + "cond": "0" + }, + { + "name": "470975 (2009 SC15)", + "pdes": "470975", + "cls": "AMO", + "H": 21.43, + "d_min_m": 97.28367736878269, + "d_src": "H at albedo 0.5", + "A2": -1.102694858758432e-13, + "A2_snr": -5.228519956180332, + "xi": 0.01578463626305431, + "xi_typ": 0.11932063453615319, + "t_j": 5.076426401501253, + "q": 1.038419431802505, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.354, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8707", + "n_obs": 339, + "cond": "0" + }, + { + "name": "474158 (1999 FA)", + "pdes": "474158", + "cls": "APO", + "H": 20.71, + "d_min_m": 135.5314169418554, + "d_src": "H at albedo 0.5", + "A2": -5.081328033777761e-14, + "A2_snr": -7.446260307411725, + "xi": 0.010133429754816677, + "xi_typ": 0.07660152874110614, + "t_j": 5.707714937667196, + "q": 0.9351561458612847, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.092, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "17525", + "n_obs": 499, + "cond": "0" + }, + { + "name": "474163 (1999 SO5)", + "pdes": "474163", + "cls": "APO", + "H": 20.81, + "d_min_m": 129.43149835245205, + "d_src": "H at albedo 0.5", + "A2": -5.766484187526932e-14, + "A2_snr": -14.068026805384074, + "xi": 0.01098222492922042, + "xi_typ": 0.08301781715683186, + "t_j": 5.681277035039935, + "q": 1.015168148223763, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 1.38, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9504", + "n_obs": 351, + "cond": "0" + }, + { + "name": "474179 (1999 VS6)", + "pdes": "474179", + "cls": "APO", + "H": 19.08, + "d_min_m": 287.10448625478716, + "d_src": "H at albedo 0.5", + "A2": -3.788490690419212e-14, + "A2_snr": -3.334938988045081, + "xi": 0.01600462317525517, + "xi_typ": 0.12098357928293169, + "t_j": 5.170521085213652, + "q": 0.9304057485379637, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 15.88, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9113", + "n_obs": 632, + "cond": "0" + }, + { + "name": "474231 (2001 HZ7)", + "pdes": "474231", + "cls": "APO", + "H": 20.02, + "d_min_m": 186.22585581103198, + "d_src": "H at albedo 0.5", + "A2": -3.243991681579248e-14, + "A2_snr": -3.4114961421592676, + "xi": 0.00888912392379156, + "xi_typ": 0.0671954607873918, + "t_j": 4.457570814544768, + "q": 0.7371014847674106, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 65.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9164", + "n_obs": 323, + "cond": "0" + }, + { + "name": "475534 (2006 TS7)", + "pdes": "475534", + "cls": "ATE", + "H": 21.25, + "d_min_m": 105.69147985314103, + "d_src": "H at albedo 0.5", + "A2": 3.891652257399514e-14, + "A2_snr": 5.630283937209945, + "xi": 0.006052199779180514, + "xi_typ": 0.04575033000169048, + "t_j": 6.185985833263136, + "q": 0.3973673358195252, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7254", + "n_obs": 224, + "cond": "0" + }, + { + "name": "477465 (2009 XZ1)", + "pdes": "477465", + "cls": "ATE", + "H": 21.7, + "d_min_m": 85.90926012317615, + "d_src": "H at albedo 0.5", + "A2": 5.174092666436202e-14, + "A2_snr": 3.835502347246999, + "xi": 0.0065405373701871205, + "xi_typ": 0.049441815206398634, + "t_j": 6.758360589376118, + "q": 0.3989517503713417, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8409", + "n_obs": 191, + "cond": "0" + }, + { + "name": "477719 (2010 SG15)", + "pdes": "477719", + "cls": "AMO", + "H": 25.26, + "d_min_m": 16.674006972751677, + "d_src": "H at albedo 0.5", + "A2": -1.59199720365078e-13, + "A2_snr": -10.837285252898436, + "xi": 0.003905903680846709, + "xi_typ": 0.029525856527120538, + "t_j": 3.61498267717279, + "q": 1.088444611623165, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5446", + "n_obs": 131, + "cond": "0" + }, + { + "name": "478784 (2012 UV136)", + "pdes": "478784", + "cls": "APO", + "H": 25.6, + "d_min_m": 14.257388332807077, + "d_src": "H at albedo 0.5", + "A2": -7.5633203495266e-14, + "A2_snr": -4.589393415974879, + "xi": 0.0015866886842003673, + "xi_typ": 0.01199423904706992, + "t_j": 6.028631424003654, + "q": 0.867912229521857, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3146", + "n_obs": 148, + "cond": "0" + }, + { + "name": "480808 (1994 XL1)", + "pdes": "480808", + "cls": "ATE", + "H": 20.64, + "d_min_m": 139.97161668570473, + "d_src": "H at albedo 0.5", + "A2": -4.574276553252413e-14, + "A2_snr": -27.26028935192141, + "xi": 0.00942110071669946, + "xi_typ": 0.07121682735108328, + "t_j": 8.293272897486096, + "q": 0.3178834146257773, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10594", + "n_obs": 298, + "cond": "0" + }, + { + "name": "480820 (1998 VF32)", + "pdes": "480820", + "cls": "ATE", + "H": 20.97, + "d_min_m": 120.23751135999066, + "d_src": "H at albedo 0.5", + "A2": 2.736865926540816e-14, + "A2_snr": 8.082888146901405, + "xi": 0.004842088820204259, + "xi_typ": 0.036602750983847465, + "t_j": 6.778449489386617, + "q": 0.4732249703106564, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9074", + "n_obs": 160, + "cond": "0" + }, + { + "name": "480883 (2001 YE4)", + "pdes": "480883", + "cls": "ATE", + "H": 20.9, + "d_min_m": 124.17666125739603, + "d_src": "H at albedo 0.5", + "A2": -6.949630407193808e-14, + "A2_snr": -75.88589656250063, + "xi": 0.012698164168922452, + "xi_typ": 0.09598909856582852, + "t_j": 8.29127247635589, + "q": 0.3110611821726465, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8762", + "n_obs": 456, + "cond": "0" + }, + { + "name": "481442 (2006 WO3)", + "pdes": "481442", + "cls": "ATE", + "H": 21.58, + "d_min_m": 90.7904103017633, + "d_src": "H at albedo 0.5", + "A2": -6.141290694965418e-14, + "A2_snr": -8.812298313912208, + "xi": 0.00820424996461571, + "xi_typ": 0.06201830028623895, + "t_j": 7.159326360451578, + "q": 0.4418941268845539, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7331", + "n_obs": 311, + "cond": "0" + }, + { + "name": "481965 (2009 EB1)", + "pdes": "481965", + "cls": "APO", + "H": 20.69, + "d_min_m": 136.78547370263013, + "d_src": "H at albedo 0.5", + "A2": -4.263823660255543e-14, + "A2_snr": -3.918955570087815, + "xi": 0.00858180148275038, + "xi_typ": 0.06487232149795104, + "t_j": 5.504260551169324, + "q": 0.6038114508232998, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8304", + "n_obs": 190, + "cond": "0" + }, + { + "name": "483422 (2000 CE59)", + "pdes": "483422", + "cls": "APO", + "H": 20.53, + "d_min_m": 147.24480417075992, + "d_src": "H at albedo 0.5", + "A2": -2.484259807448553e-14, + "A2_snr": -3.2461254507363817, + "xi": 0.005382403372308434, + "xi_typ": 0.04068714508275289, + "t_j": 5.474777908927785, + "q": 0.947848161866793, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.623, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8395", + "n_obs": 395, + "cond": "0" + }, + { + "name": "483423 (2000 DO1)", + "pdes": "483423", + "cls": "APO", + "H": 20.53, + "d_min_m": 147.24480417075992, + "d_src": "H at albedo 0.5", + "A2": -8.884890881946352e-14, + "A2_snr": -3.10769180900537, + "xi": 0.019250026306506133, + "xi_typ": 0.145516520967047, + "t_j": 4.404238775624664, + "q": 0.4544127555770368, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8337", + "n_obs": 281, + "cond": "0" + }, + { + "name": "483459 (2002 EM6)", + "pdes": "483459", + "cls": "APO", + "H": 20.31, + "d_min_m": 162.944602362497, + "d_src": "H at albedo 0.5", + "A2": 4.400515072715558e-14, + "A2_snr": 4.766589116892936, + "xi": 0.010550735647089143, + "xi_typ": 0.07975606477423432, + "t_j": 5.279903469799233, + "q": 0.9959406693331879, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7489", + "n_obs": 369, + "cond": "0" + }, + { + "name": "483656 (2005 ES70)", + "pdes": "483656", + "cls": "ATE", + "H": 23.77, + "d_min_m": 33.116160500563545, + "d_src": "H at albedo 0.5", + "A2": -1.384172359769473e-13, + "A2_snr": -48.09493953333819, + "xi": 0.006744805051061539, + "xi_typ": 0.05098593373348897, + "t_j": 7.476367464127045, + "q": 0.4684583622511305, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 1.69, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7312", + "n_obs": 227, + "cond": "0" + }, + { + "name": "484403 (2007 XF25)", + "pdes": "484403", + "cls": "AMO", + "H": 21.42, + "d_min_m": 97.7327184210278, + "d_src": "H at albedo 0.5", + "A2": -8.543301970339419e-14, + "A2_snr": -4.770129520010842, + "xi": 0.012285843702004454, + "xi_typ": 0.09287224880603692, + "t_j": 5.2578966169614185, + "q": 1.026562804856636, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6609", + "n_obs": 106, + "cond": "0" + }, + { + "name": "488453 (1994 XD)", + "pdes": "488453", + "cls": "APO", + "H": 19.24, + "d_min_m": 266.7104172244195, + "d_src": "H at albedo 0.5", + "A2": 2.193382680735358e-14, + "A2_snr": 9.495163120066485, + "xi": 0.008607829156412585, + "xi_typ": 0.06506907221713887, + "t_j": 3.1290352118528997, + "q": 0.6245170921784806, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.7365, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10641", + "n_obs": 658, + "cond": "0" + }, + { + "name": "488803 (2005 GB120)", + "pdes": "488803", + "cls": "ATE", + "H": 20.48, + "d_min_m": 209.0, + "d_src": "measured", + "A2": -4.529081762626408e-14, + "A2_snr": -5.572882690570208, + "xi": 0.013928222540935979, + "xi_typ": 0.055712890163743915, + "t_j": 7.283633312630956, + "q": 0.4788736327343991, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6988", + "n_obs": 239, + "cond": "0" + }, + { + "name": "490354 (2009 FF19)", + "pdes": "490354", + "cls": "APO", + "H": 21.41, + "d_min_m": 98.18383215259686, + "d_src": "H at albedo 0.5", + "A2": -7.826789862346791e-14, + "A2_snr": -3.171308696250726, + "xi": 0.011307403828570236, + "xi_typ": 0.08547593858336132, + "t_j": 5.170808590736364, + "q": 0.7164140905191644, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7581", + "n_obs": 162, + "cond": "0" + }, + { + "name": "491007 (2011 GL62)", + "pdes": "491007", + "cls": "APO", + "H": 19.53, + "d_min_m": 233.36728775550702, + "d_src": "H at albedo 0.5", + "A2": -3.946009442017296e-14, + "A2_snr": -4.593189898751363, + "xi": 0.013549939277238241, + "xi_typ": 0.10242791316456762, + "t_j": 5.201661040505937, + "q": 0.3340166193686571, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9542", + "n_obs": 232, + "cond": "0" + }, + { + "name": "494710 (2005 MO13)", + "pdes": "494710", + "cls": "ATE", + "H": 20.75, + "d_min_m": 133.0576897972504, + "d_src": "H at albedo 0.5", + "A2": -5.358337315487564e-14, + "A2_snr": -10.049394815242993, + "xi": 0.010490816206759172, + "xi_typ": 0.0793031163804878, + "t_j": 6.76351041242259, + "q": 0.5088182330690713, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8787", + "n_obs": 449, + "cond": "0" + }, + { + "name": "497113 (2004 EK1)", + "pdes": "497113", + "cls": "APO", + "H": 22.29, + "d_min_m": 65.46964390668565, + "d_src": "H at albedo 0.5", + "A2": -4.190865998837816e-14, + "A2_snr": -8.610778711398842, + "xi": 0.004037225461446617, + "xi_typ": 0.03051855587910209, + "t_j": 5.092968255593605, + "q": 0.9362455732274257, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7713", + "n_obs": 262, + "cond": "0" + }, + { + "name": "499998 (2011 PT)", + "pdes": "499998", + "cls": "AMO", + "H": 24.01, + "d_min_m": 29.651043282489734, + "d_src": "H at albedo 0.5", + "A2": -2.121215657579154e-13, + "A2_snr": -7.044887604049, + "xi": 0.009254736392646306, + "xi_typ": 0.06995923126971755, + "t_j": 4.934891941209385, + "q": 1.030902280412805, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2300", + "n_obs": 205, + "cond": "0" + }, + { + "name": "506590 (2005 XB1)", + "pdes": "506590", + "cls": "APO", + "H": 21.97, + "d_min_m": 99.0, + "d_src": "measured", + "A2": 1.13735536717676e-13, + "A2_snr": 7.936883232217445, + "xi": 0.016568020608037342, + "xi_typ": 0.06627208243214937, + "t_j": 5.4351081957565, + "q": 0.6575652907689893, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6577", + "n_obs": 132, + "cond": "0" + }, + { + "name": "510529 (2012 EY11)", + "pdes": "510529", + "cls": "APO", + "H": 21.58, + "d_min_m": 90.7904103017633, + "d_src": "H at albedo 0.5", + "A2": -1.282910700195142e-13, + "A2_snr": -6.532131874720682, + "xi": 0.017138612369073627, + "xi_typ": 0.1295557318437267, + "t_j": 5.447674114870105, + "q": 0.9752863672199628, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8054", + "n_obs": 154, + "cond": "0" + }, + { + "name": "511684 (2015 BN509)", + "pdes": "511684", + "cls": "APO", + "H": 20.77, + "d_min_m": 315.0, + "d_src": "measured", + "A2": 7.671088989189398e-14, + "A2_snr": 5.960442105042268, + "xi": 0.035555502819318546, + "xi_typ": 0.14222201127727419, + "t_j": 5.8891282276140995, + "q": 0.4345375958119904, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.6713, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7342", + "n_obs": 592, + "cond": "0" + }, + { + "name": "513312 (2007 DM41)", + "pdes": "513312", + "cls": "APO", + "H": 22.06, + "d_min_m": 72.78468030489037, + "d_src": "H at albedo 0.5", + "A2": 8.520662200729811e-14, + "A2_snr": 15.680276409145769, + "xi": 0.009125414009857044, + "xi_typ": 0.06898164594453274, + "t_j": 5.213693398325911, + "q": 0.5578545593799671, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6579", + "n_obs": 221, + "cond": "0" + }, + { + "name": "516435 (2004 FJ29)", + "pdes": "516435", + "cls": "ATE", + "H": 21.4, + "d_min_m": 98.63702813054255, + "d_src": "H at albedo 0.5", + "A2": -5.118211916625607e-14, + "A2_snr": -7.520146806678824, + "xi": 0.007428437821277281, + "xi_typ": 0.05615371172801758, + "t_j": 6.352133274970449, + "q": 0.5943587374859574, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7702", + "n_obs": 170, + "cond": "0" + }, + { + "name": "522684 (2016 JP)", + "pdes": "522684", + "cls": "ATE", + "H": 21.14, + "d_min_m": 111.18340719345971, + "d_src": "H at albedo 0.5", + "A2": -5.908016262607015e-14, + "A2_snr": -3.5250693690972645, + "xi": 0.009665424015063052, + "xi_typ": 0.0730637378852807, + "t_j": 6.0189424038594, + "q": 0.6129058444223534, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.2905, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3700", + "n_obs": 763, + "cond": "0" + }, + { + "name": "523586 (1999 LK1)", + "pdes": "523586", + "cls": "ATE", + "H": 22.11, + "d_min_m": 71.12789870930823, + "d_src": "H at albedo 0.5", + "A2": -3.712398196161026e-14, + "A2_snr": -7.876932306728254, + "xi": 0.0038853825187004963, + "xi_typ": 0.029370731122397933, + "t_j": 6.507578640665006, + "q": 0.6052438008623735, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9522", + "n_obs": 115, + "cond": "0" + }, + { + "name": "523590 (2001 QC96)", + "pdes": "523590", + "cls": "APO", + "H": 21.12, + "d_min_m": 112.2121745938383, + "d_src": "H at albedo 0.5", + "A2": -8.575033919690694e-14, + "A2_snr": -3.561060597878195, + "xi": 0.014158429267091651, + "xi_typ": 0.1070276651314943, + "t_j": 4.773118551014809, + "q": 0.8286501843756228, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7546", + "n_obs": 609, + "cond": "0" + }, + { + "name": "523599 (2003 RM)", + "pdes": "523599", + "cls": "AMO", + "H": 19.63, + "d_min_m": 222.86402962644044, + "d_src": "H at albedo 0.5", + "A2": 3.286870537542536e-12, + "A2_snr": 110.18674279391674, + "xi": 1.0778586898082663, + "xi_typ": 8.14784583343595, + "t_j": 2.95252813137735, + "q": 1.130655113551072, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7402", + "n_obs": 374, + "cond": "0" + }, + { + "name": "523605 (2004 RX10)", + "pdes": "523605", + "cls": "ATE", + "H": 21.49, + "d_min_m": 94.63242707929723, + "d_src": "H at albedo 0.5", + "A2": -4.965318791866469e-14, + "A2_snr": -4.127447042283016, + "xi": 0.006913952091934023, + "xi_typ": 0.05226456517677775, + "t_j": 6.439018401523353, + "q": 0.596662066716143, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7975", + "n_obs": 209, + "cond": "0" + }, + { + "name": "523801 (1993 TQ2)", + "pdes": "523801", + "cls": "AMO", + "H": 20.02, + "d_min_m": 186.22585581103198, + "d_src": "H at albedo 0.5", + "A2": 4.029534383282589e-14, + "A2_snr": 4.6648927799057525, + "xi": 0.01104165300163175, + "xi_typ": 0.08346705115824991, + "t_j": 3.7358446992282346, + "q": 1.153251204058315, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10399", + "n_obs": 805, + "cond": "0" + }, + { + "name": "523809 (2007 TV18)", + "pdes": "523809", + "cls": "APO", + "H": 23.79, + "d_min_m": 32.81254971615439, + "d_src": "H at albedo 0.5", + "A2": -6.990560541802049e-14, + "A2_snr": -3.953936958032833, + "xi": 0.003375135633720689, + "xi_typ": 0.02551362722267809, + "t_j": 5.114579543532814, + "q": 0.8072963559921847, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6381", + "n_obs": 117, + "cond": "0" + }, + { + "name": "523828 (1992 BC)", + "pdes": "523828", + "cls": "APO", + "H": 19.96, + "d_min_m": 191.44321490629133, + "d_src": "H at albedo 0.5", + "A2": -5.895718711144784e-14, + "A2_snr": -8.644748843320796, + "xi": 0.01660794828064924, + "xi_typ": 0.1255442883932018, + "t_j": 4.607826903583547, + "q": 0.9209199166163249, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "12654", + "n_obs": 213, + "cond": "0" + }, + { + "name": "523950 (1998 SZ27)", + "pdes": "523950", + "cls": "ATE", + "H": 20.17, + "d_min_m": 173.7960808552455, + "d_src": "H at albedo 0.5", + "A2": -3.65751869235859e-14, + "A2_snr": -3.370984969915751, + "xi": 0.009353319791667612, + "xi_typ": 0.07070445171888846, + "t_j": 6.4069000818451665, + "q": 0.4464416654547836, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9175", + "n_obs": 150, + "cond": "0" + }, + { + "name": "523971 (1999 AJ39)", + "pdes": "523971", + "cls": "APO", + "H": 21.21, + "d_min_m": 107.65643116910465, + "d_src": "H at albedo 0.5", + "A2": 7.578243636801035e-14, + "A2_snr": 4.111906476831815, + "xi": 0.012004602727843275, + "xi_typ": 0.09074626687428831, + "t_j": 5.384601757255377, + "q": 0.8373273448243799, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9472", + "n_obs": 89, + "cond": "0" + }, + { + "name": "524471 (2002 JW15)", + "pdes": "524471", + "cls": "ATE", + "H": 20.36, + "d_min_m": 159.23553038247593, + "d_src": "H at albedo 0.5", + "A2": 5.041989229030815e-14, + "A2_snr": 7.419054192217208, + "xi": 0.011813569549610091, + "xi_typ": 0.08930219178352464, + "t_j": 6.571817427525838, + "q": 0.6595491841442521, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 11.489, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10634", + "n_obs": 666, + "cond": "0" + }, + { + "name": "524522 Zoozve (2002 VE68)", + "pdes": "524522", + "cls": "ATE", + "H": 20.54, + "d_min_m": 146.56827574843922, + "d_src": "H at albedo 0.5", + "A2": -5.826787786158261e-14, + "A2_snr": -51.93215495684724, + "xi": 0.012566329122954802, + "xi_typ": 0.09499251929236233, + "t_j": 7.862060343216222, + "q": 0.4268289462915477, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.5, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7622", + "n_obs": 610, + "cond": "0" + }, + { + "name": "525229 (2004 UU1)", + "pdes": "525229", + "cls": "APO", + "H": 21.17, + "d_min_m": 109.65791365749081, + "d_src": "H at albedo 0.5", + "A2": -5.964517534600307e-14, + "A2_snr": -2.258431478455247, + "xi": 0.009623976381912393, + "xi_typ": 0.07275042322885533, + "t_j": 5.052648950000588, + "q": 0.8909826285896935, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6962", + "n_obs": 227, + "cond": "0" + }, + { + "name": "525268 (2004 XL14)", + "pdes": "525268", + "cls": "ATE", + "H": 21.43, + "d_min_m": 97.28367736878269, + "d_src": "H at albedo 0.5", + "A2": -4.524067053063606e-14, + "A2_snr": -3.42472903335625, + "xi": 0.006476021203425328, + "xi_typ": 0.048954118826984715, + "t_j": 7.498007959014473, + "q": 0.4478711264102833, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5109", + "n_obs": 280, + "cond": "0" + }, + { + "name": "525484 (2005 GL)", + "pdes": "525484", + "cls": "APO", + "H": 21.3, + "d_min_m": 103.28564805039065, + "d_src": "H at albedo 0.5", + "A2": -1.185027397446215e-13, + "A2_snr": -3.9032522972536725, + "xi": 0.01800974733840436, + "xi_typ": 0.13614089323578674, + "t_j": 5.75047652925, + "q": 0.7326787406266209, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5727", + "n_obs": 145, + "cond": "0" + }, + { + "name": "526742 (2006 WR127)", + "pdes": "526742", + "cls": "ATE", + "H": 20.46, + "d_min_m": 152.06875094645548, + "d_src": "H at albedo 0.5", + "A2": 2.440382641786908e-14, + "A2_snr": 2.6468358370790757, + "xi": 0.0054605596562242766, + "xi_typ": 0.041277951056005104, + "t_j": 6.476610545251642, + "q": 0.5660140587864485, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11736", + "n_obs": 267, + "cond": "0" + }, + { + "name": "526798 (2007 AA9)", + "pdes": "526798", + "cls": "ATE", + "H": 22.58, + "d_min_m": 57.284876188267724, + "d_src": "H at albedo 0.5", + "A2": -1.199766751783174e-13, + "A2_snr": -5.705024972815854, + "xi": 0.010112907883740535, + "xi_typ": 0.07644639797737701, + "t_j": 6.794512752547931, + "q": 0.4973724919424626, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5880", + "n_obs": 77, + "cond": "1" + }, + { + "name": "526826 (2007 CA27)", + "pdes": "526826", + "cls": "ATE", + "H": 21.28, + "d_min_m": 104.24133838515733, + "d_src": "H at albedo 0.5", + "A2": -1.279972855786745e-13, + "A2_snr": -3.563398819005415, + "xi": 0.019632698112469763, + "xi_typ": 0.14840924791657767, + "t_j": 6.673417012922837, + "q": 0.5681756175615877, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 17.11, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6213", + "n_obs": 115, + "cond": "0" + }, + { + "name": "527715 (2007 YQ56)", + "pdes": "527715", + "cls": "APO", + "H": 19.95, + "d_min_m": 192.3268766365206, + "d_src": "H at albedo 0.5", + "A2": 4.371165072580002e-14, + "A2_snr": 4.21114168842004, + "xi": 0.01237019188347154, + "xi_typ": 0.0935098611251868, + "t_j": 5.363572924918752, + "q": 0.8122112782159449, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 60.8, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6452", + "n_obs": 407, + "cond": "0" + }, + { + "name": "533638 (2014 KT86)", + "pdes": "533638", + "cls": "APO", + "H": 20.39, + "d_min_m": 157.05073699984126, + "d_src": "H at albedo 0.5", + "A2": -4.581921048495211e-14, + "A2_snr": -4.783797294315318, + "xi": 0.010588314449780702, + "xi_typ": 0.08004013382134696, + "t_j": 5.252386089546696, + "q": 0.9881534550887311, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8256", + "n_obs": 322, + "cond": "0" + }, + { + "name": "592968 (2015 FV118)", + "pdes": "592968", + "cls": "ATE", + "H": 21.66, + "d_min_m": 87.50643251556819, + "d_src": "H at albedo 0.5", + "A2": 5.262196122709084e-14, + "A2_snr": 4.858906853840336, + "xi": 0.006775576594534466, + "xi_typ": 0.05121854473773747, + "t_j": 6.718941198155084, + "q": 0.3570106024610341, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8383", + "n_obs": 168, + "cond": "0" + }, + { + "name": "595116 (2001 QE96)", + "pdes": "595116", + "cls": "AMO", + "H": 22.77, + "d_min_m": 52.4855773377927, + "d_src": "H at albedo 0.5", + "A2": -1.456414169966194e-13, + "A2_snr": -12.116590432331064, + "xi": 0.011247710366720941, + "xi_typ": 0.08502469842636204, + "t_j": 4.964463670426697, + "q": 1.273809639402395, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8779", + "n_obs": 95, + "cond": "0" + }, + { + "name": "612094 (1999 NW2)", + "pdes": "612094", + "cls": "APO", + "H": 23.29, + "d_min_m": 41.3085526634263, + "d_src": "H at albedo 0.5", + "A2": -7.470571365322414e-14, + "A2_snr": -12.37054374121943, + "xi": 0.004540807046535988, + "xi_typ": 0.03432527484761119, + "t_j": 5.572286011583962, + "q": 0.9947426268401692, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 4.2, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9692", + "n_obs": 185, + "cond": "0" + }, + { + "name": "612103 (1999 SK10)", + "pdes": "612103", + "cls": "APO", + "H": 19.84, + "d_min_m": 202.32054153312197, + "d_src": "H at albedo 0.5", + "A2": -4.679998154993749e-14, + "A2_snr": -3.4925359365624993, + "xi": 0.01393236715419628, + "xi_typ": 0.10531879618413728, + "t_j": 3.985784547899541, + "q": 0.9849307213551249, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7860", + "n_obs": 517, + "cond": "0" + }, + { + "name": "612197 (2000 WP19)", + "pdes": "612197", + "cls": "ATE", + "H": 22.93, + "d_min_m": 48.75733713754819, + "d_src": "H at albedo 0.5", + "A2": 1.875347066609217e-13, + "A2_snr": 13.47232088081334, + "xi": 0.013454293033539056, + "xi_typ": 0.1017048955226661, + "t_j": 6.858177868516789, + "q": 0.6080070441352947, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6974", + "n_obs": 80, + "cond": "0" + }, + { + "name": "612199 (2000 WL63)", + "pdes": "612199", + "cls": "APO", + "H": 19.9, + "d_min_m": 196.80674508939674, + "d_src": "H at albedo 0.5", + "A2": -8.809873217198874e-14, + "A2_snr": -13.076849068129546, + "xi": 0.02551225736630699, + "xi_typ": 0.1928545382146399, + "t_j": 4.584425968809268, + "q": 1.004134110583285, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8972", + "n_obs": 558, + "cond": "0" + }, + { + "name": "612227 (2001 QC34)", + "pdes": "612227", + "cls": "APO", + "H": 20.16, + "d_min_m": 174.59828711568056, + "d_src": "H at albedo 0.5", + "A2": -3.198369109199046e-14, + "A2_snr": -7.975982815957721, + "xi": 0.008216896395564372, + "xi_typ": 0.06211389831841813, + "t_j": 5.518107909338255, + "q": 0.91692307722104, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9125", + "n_obs": 1165, + "cond": "0" + }, + { + "name": "612346 (2002 GQ5)", + "pdes": "612346", + "cls": "APO", + "H": 20.93, + "d_min_m": 122.47289359234556, + "d_src": "H at albedo 0.5", + "A2": -6.926854902806548e-14, + "A2_snr": -4.208295809724513, + "xi": 0.01248289505618896, + "xi_typ": 0.09436181703083896, + "t_j": 5.33003092022824, + "q": 0.6021707060548877, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8900", + "n_obs": 77, + "cond": "0" + }, + { + "name": "612358 (2002 JE9)", + "pdes": "612358", + "cls": "APO", + "H": 21.4, + "d_min_m": 98.63702813054255, + "d_src": "H at albedo 0.5", + "A2": -8.428815508487742e-14, + "A2_snr": -5.516240516026009, + "xi": 0.012233360582126698, + "xi_typ": 0.09247551371110739, + "t_j": 5.694170381402539, + "q": 0.6218892553189957, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8029", + "n_obs": 252, + "cond": "0" + }, + { + "name": "612472 (2002 SQ)", + "pdes": "612472", + "cls": "APO", + "H": 19.85, + "d_min_m": 201.3909630835641, + "d_src": "H at albedo 0.5", + "A2": 5.888306157254894e-14, + "A2_snr": 4.135046458746414, + "xi": 0.01744896259025164, + "xi_typ": 0.13190175899964363, + "t_j": 4.585818984157282, + "q": 0.8773545108726711, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8253", + "n_obs": 380, + "cond": "0" + }, + { + "name": "612600 (2003 SM84)", + "pdes": "612600", + "cls": "AMO", + "H": 23.02, + "d_min_m": 46.777820040799014, + "d_src": "H at albedo 0.5", + "A2": -1.671389899676454e-13, + "A2_snr": -11.224915377276385, + "xi": 0.011504215335806072, + "xi_typ": 0.08696369373565224, + "t_j": 5.548909470979408, + "q": 1.033069040561847, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6663", + "n_obs": 112, + "cond": "1" + }, + { + "name": "612781 (2004 MW2)", + "pdes": "612781", + "cls": "APO", + "H": 19.37, + "d_min_m": 251.21176726794704, + "d_src": "H at albedo 0.5", + "A2": -2.482331199595678e-14, + "A2_snr": -2.9774873450829773, + "xi": 0.009175694693551437, + "xi_typ": 0.06936173218683463, + "t_j": 5.133307883164966, + "q": 0.4141581106931672, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.63, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8048", + "n_obs": 183, + "cond": "0" + }, + { + "name": "612901 (2004 XP14)", + "pdes": "612901", + "cls": "APO", + "H": 19.79, + "d_min_m": 207.03319234529107, + "d_src": "H at albedo 0.5", + "A2": -3.643033242041747e-14, + "A2_snr": -1.609113622809959, + "xi": 0.01109793975667007, + "xi_typ": 0.08389253903235908, + "t_j": 5.691142236070186, + "q": 0.8850116080463825, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 100.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5785", + "n_obs": 1382, + "cond": "0" + }, + { + "name": "612970 (2005 HN3)", + "pdes": "612970", + "cls": "ATE", + "H": 21.15, + "d_min_m": 110.67256583997059, + "d_src": "H at albedo 0.5", + "A2": -9.715384225263453e-14, + "A2_snr": -5.989755995846766, + "xi": 0.015821192316010917, + "xi_typ": 0.119596972321974, + "t_j": 6.838453601403468, + "q": 0.5683407682569979, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6990", + "n_obs": 245, + "cond": "0" + }, + { + "name": "613286 (2005 YQ96)", + "pdes": "613286", + "cls": "ATE", + "H": 20.63, + "d_min_m": 140.61769631325407, + "d_src": "H at albedo 0.5", + "A2": -5.074808911465745e-14, + "A2_snr": -7.496024980008486, + "xi": 0.010500232674281849, + "xi_typ": 0.07937429818418414, + "t_j": 7.65879305987399, + "q": 0.495342392635676, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6559", + "n_obs": 99, + "cond": "0" + }, + { + "name": "613398 (2006 FK)", + "pdes": "613398", + "cls": "ATE", + "H": 21.25, + "d_min_m": 105.69147985314103, + "d_src": "H at albedo 0.5", + "A2": 6.556010234551636e-14, + "A2_snr": 4.036952114871697, + "xi": 0.010195742340137166, + "xi_typ": 0.07707256761055617, + "t_j": 6.4042856543559905, + "q": 0.6058976660173578, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5860", + "n_obs": 109, + "cond": "0" + }, + { + "name": "613471 (2006 RJ1)", + "pdes": "613471", + "cls": "ATE", + "H": 22.27, + "d_min_m": 66.07542706323537, + "d_src": "H at albedo 0.5", + "A2": -1.637492607550183e-13, + "A2_snr": -4.758769565679113, + "xi": 0.01592056869145791, + "xi_typ": 0.1203481871094818, + "t_j": 6.289118222668327, + "q": 0.6649495426917335, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5213", + "n_obs": 248, + "cond": "0" + }, + { + "name": "613569 (2006 TU7)", + "pdes": "613569", + "cls": "ATE", + "H": 21.95, + "d_min_m": 76.56670867915675, + "d_src": "H at albedo 0.5", + "A2": 1.187790691286805e-13, + "A2_snr": 16.42636829327624, + "xi": 0.013381942093306787, + "xi_typ": 0.1011579738227339, + "t_j": 6.824551211652847, + "q": 0.4508571052187956, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8055", + "n_obs": 196, + "cond": "0" + }, + { + "name": "613714 (2007 DL41)", + "pdes": "613714", + "cls": "APO", + "H": 20.82, + "d_min_m": 128.8368146359561, + "d_src": "H at albedo 0.5", + "A2": -1.359509988385379e-13, + "A2_snr": -4.342095140164097, + "xi": 0.025772801661274724, + "xi_typ": 0.19482406795750068, + "t_j": 4.497295280169855, + "q": 0.7629089650615473, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5390", + "n_obs": 141, + "cond": "0" + }, + { + "name": "613862 (2007 UY1)", + "pdes": "613862", + "cls": "ATE", + "H": 23.1, + "d_min_m": 45.08582061718112, + "d_src": "H at albedo 0.5", + "A2": -1.769355861954511e-13, + "A2_snr": -8.153713649559958, + "xi": 0.011738008457672873, + "xi_typ": 0.08873100361764356, + "t_j": 6.321316976975198, + "q": 0.782188276222671, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5222", + "n_obs": 312, + "cond": "0" + }, + { + "name": "613995 (2008 NP3)", + "pdes": "613995", + "cls": "APO", + "H": 22.85, + "d_min_m": 193.0, + "d_src": "measured", + "A2": -2.25410652826114e-13, + "A2_snr": -31.605531803998037, + "xi": 0.06401341489043387, + "xi_typ": 0.2560536595617355, + "t_j": 6.0054387075861735, + "q": 0.669308161266832, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6139", + "n_obs": 165, + "cond": "0" + }, + { + "name": "614134 (2008 TC4)", + "pdes": "614134", + "cls": "ATE", + "H": 21.65, + "d_min_m": 87.91034385607054, + "d_src": "H at albedo 0.5", + "A2": 6.499408924418679e-14, + "A2_snr": 4.085109317673589, + "xi": 0.008407233146203714, + "xi_typ": 0.06355270891141189, + "t_j": 7.300444758804714, + "q": 0.3477036239251825, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4726", + "n_obs": 180, + "cond": "0" + }, + { + "name": "620071 (2011 WN15)", + "pdes": "620071", + "cls": "APO", + "H": 19.64, + "d_min_m": 221.84006242294993, + "d_src": "H at albedo 0.5", + "A2": 2.010066381231611e-14, + "A2_snr": 2.3324047124989686, + "xi": 0.006561295974249519, + "xi_typ": 0.04959873550329566, + "t_j": 4.690041194505218, + "q": 0.1726019470245828, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.9656, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2981", + "n_obs": 288, + "cond": "0" + }, + { + "name": "620082 (2014 QL433)", + "pdes": "620082", + "cls": "APO", + "H": 19.88, + "d_min_m": 198.6277754808318, + "d_src": "H at albedo 0.5", + "A2": 3.762927057125795e-14, + "A2_snr": 1.0519784895515223, + "xi": 0.010997780021524095, + "xi_typ": 0.08313540260213523, + "t_j": 3.36927944371637, + "q": 0.5945833900872486, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4398", + "n_obs": 366, + "cond": "0" + }, + { + "name": "628250 (2014 QL390)", + "pdes": "628250", + "cls": "AMO", + "H": 22.25, + "d_min_m": 66.68681546231969, + "d_src": "H at albedo 0.5", + "A2": -1.455192697207475e-13, + "A2_snr": -4.297674829319182, + "xi": 0.014279063845563975, + "xi_typ": 0.10793957682907392, + "t_j": 3.6522851521542017, + "q": 1.244124901321289, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7642", + "n_obs": 131, + "cond": "0" + }, + { + "name": "664078 (2008 DL5)", + "pdes": "664078", + "cls": "APO", + "H": 22.11, + "d_min_m": 71.12789870930823, + "d_src": "H at albedo 0.5", + "A2": -1.128340040183053e-13, + "A2_snr": -8.12925100996436, + "xi": 0.0118091660313017, + "xi_typ": 0.08926890431398826, + "t_j": 5.514233916001298, + "q": 0.576939904491585, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5858", + "n_obs": 140, + "cond": "0" + }, + { + "name": "665390 (2009 HD82)", + "pdes": "665390", + "cls": "APO", + "H": 21.69, + "d_min_m": 86.30579925087679, + "d_src": "H at albedo 0.5", + "A2": -5.029892364171624e-14, + "A2_snr": -3.7313741573973473, + "xi": 0.0063876030627138085, + "xi_typ": 0.04828574050781499, + "t_j": 5.008235507842768, + "q": 0.6561741749050407, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5139", + "n_obs": 204, + "cond": "0" + }, + { + "name": "674590 (2015 RH2)", + "pdes": "674590", + "cls": "APO", + "H": 22.0, + "d_min_m": 74.82383760735217, + "d_src": "H at albedo 0.5", + "A2": -1.267380019763368e-13, + "A2_snr": -3.3334561277311097, + "xi": 0.013953594085483292, + "xi_typ": 0.10547925670208723, + "t_j": 5.2003872477431505, + "q": 0.8932609183161383, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.672, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3146", + "n_obs": 401, + "cond": "0" + }, + { + "name": "678964 (2018 CC14)", + "pdes": "678964", + "cls": "APO", + "H": 22.4, + "d_min_m": 62.235757336665216, + "d_src": "H at albedo 0.5", + "A2": 9.405452289239728e-14, + "A2_snr": 3.154075214366106, + "xi": 0.008613088578562503, + "xi_typ": 0.06510882971156341, + "t_j": 3.5548841613640603, + "q": 0.9450450855048868, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4517", + "n_obs": 97, + "cond": "0" + }, + { + "name": "679648 (2019 XS)", + "pdes": "679648", + "cls": "APO", + "H": 23.85, + "d_min_m": 31.918316641432796, + "d_src": "H at albedo 0.5", + "A2": -1.665390995932376e-13, + "A2_snr": -10.192111358215275, + "xi": 0.007821597099904045, + "xi_typ": 0.05912571651911464, + "t_j": 6.000272491501437, + "q": 0.6776201653831709, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.35, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8648", + "n_obs": 137, + "cond": "0" + }, + { + "name": "741081 (2005 LW3)", + "pdes": "741081", + "cls": "APO", + "H": 21.67, + "d_min_m": 87.10437697910226, + "d_src": "H at albedo 0.5", + "A2": -6.122367109744123e-14, + "A2_snr": -4.275396026357628, + "xi": 0.007846908637600966, + "xi_typ": 0.059317053759248055, + "t_j": 4.542732264301397, + "q": 0.771601850598785, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.6, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6426", + "n_obs": 133, + "cond": "0" + }, + { + "name": "745311 (2010 XC15)", + "pdes": "745311", + "cls": "ATE", + "H": 21.48, + "d_min_m": 95.06923051623073, + "d_src": "H at albedo 0.5", + "A2": -1.474366261926964e-13, + "A2_snr": -3.746801173893174, + "xi": 0.020624556248937644, + "xi_typ": 0.15590699067357763, + "t_j": 7.777291303499761, + "q": 0.4249074364315348, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.673, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4406", + "n_obs": 279, + "cond": "0" + }, + { + "name": "747011 (2012 PG6)", + "pdes": "747011", + "cls": "ATE", + "H": 20.24, + "d_min_m": 168.28289659712405, + "d_src": "H at albedo 0.5", + "A2": 6.59701392436208e-14, + "A2_snr": 10.969427875560491, + "xi": 0.016335281752067905, + "xi_typ": 0.12348312317755183, + "t_j": 6.841626223955663, + "q": 0.3214736353122879, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.58, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8424", + "n_obs": 480, + "cond": "0" + }, + { + "name": "756476 (2019 NC1)", + "pdes": "756476", + "cls": "ATE", + "H": 21.4, + "d_min_m": 98.63702813054255, + "d_src": "H at albedo 0.5", + "A2": -7.74988826240744e-14, + "A2_snr": -3.01200476580157, + "xi": 0.011247983478787922, + "xi_typ": 0.08502676295953142, + "t_j": 6.106036851149252, + "q": 0.8651160123168586, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 13.91, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4018", + "n_obs": 1211, + "cond": "0" + }, + { + "name": "762379 (2011 CG2)", + "pdes": "762379", + "cls": "APO", + "H": 21.41, + "d_min_m": 98.18383215259686, + "d_src": "H at albedo 0.5", + "A2": -1.071239412456042e-13, + "A2_snr": -4.605500483473955, + "xi": 0.015476251243174203, + "xi_typ": 0.11698946290569467, + "t_j": 5.356372452227731, + "q": 0.9909250148673427, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.813, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5155", + "n_obs": 450, + "cond": "0" + }, + { + "name": "794904 (2007 SQ6)", + "pdes": "794904", + "cls": "APO", + "H": 22.3, + "d_min_m": 65.1688382167903, + "d_src": "H at albedo 0.5", + "A2": 9.187537039302234e-14, + "A2_snr": 1.2925628924173092, + "xi": 0.00881004916063291, + "xi_typ": 0.06659771176368005, + "t_j": 5.856260657485315, + "q": 0.8914619922896877, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6490", + "n_obs": 376, + "cond": "1" + }, + { + "name": "796120 (2009 EM1)", + "pdes": "796120", + "cls": "AMO", + "H": 23.0, + "d_min_m": 47.210649880552225, + "d_src": "H at albedo 0.5", + "A2": -2.54872056585863e-13, + "A2_snr": -8.320994338421908, + "xi": 0.017705225081499163, + "xi_typ": 0.13383892134877165, + "t_j": 3.160721499795777, + "q": 1.126637346024755, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5851", + "n_obs": 125, + "cond": "0" + }, + { + "name": "808862 (2018 UY)", + "pdes": "808862", + "cls": "APO", + "H": 20.76, + "d_min_m": 132.44634524446212, + "d_src": "H at albedo 0.5", + "A2": -7.848152686632087e-14, + "A2_snr": -2.9196996602053895, + "xi": 0.015294901081495773, + "xi_typ": 0.11561858453991616, + "t_j": 4.995267317388766, + "q": 0.5853197457470257, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6631", + "n_obs": 258, + "cond": "0" + }, + { + "name": "827103 (2000 CR101)", + "pdes": "827103", + "cls": "AMO", + "H": 20.29, + "d_min_m": 164.45231020496766, + "d_src": "H at albedo 0.5", + "A2": -5.085637029844193e-14, + "A2_snr": -3.1181097669185736, + "xi": 0.012306217584299449, + "xi_typ": 0.09302626087973251, + "t_j": 4.175797347980556, + "q": 1.277980402433074, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9355", + "n_obs": 245, + "cond": "0" + }, + { + "name": "827991 (2002 XQ40)", + "pdes": "827991", + "cls": "APO", + "H": 22.4, + "d_min_m": 62.235757336665216, + "d_src": "H at albedo 0.5", + "A2": -9.317319340725463e-14, + "A2_snr": -15.837700732152749, + "xi": 0.008532380403251074, + "xi_typ": 0.06449873325258099, + "t_j": 5.689600673084093, + "q": 0.697582786132858, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7020", + "n_obs": 210, + "cond": "0" + }, + { + "name": "829223 (2006 CT)", + "pdes": "829223", + "cls": "APO", + "H": 22.28, + "d_min_m": 65.77183805256007, + "d_src": "H at albedo 0.5", + "A2": -8.992422595940198e-14, + "A2_snr": -18.389412261636394, + "xi": 0.008702738561443548, + "xi_typ": 0.06578651988226182, + "t_j": 5.636596613032875, + "q": 0.843719567133671, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 16.69, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11315", + "n_obs": 137, + "cond": "0" + }, + { + "name": "836356 (2012 OQ)", + "pdes": "836356", + "cls": "APO", + "H": 21.88, + "d_min_m": 79.07514169000936, + "d_src": "H at albedo 0.5", + "A2": 2.209383245503963e-13, + "A2_snr": 4.059127770538238, + "xi": 0.02570693415434313, + "xi_typ": 0.19432615640658404, + "t_j": 5.244305765728507, + "q": 0.7200967880661929, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4752", + "n_obs": 467, + "cond": "0" + }, + { + "name": "837610 (2013 RE6)", + "pdes": "837610", + "cls": "APO", + "H": 21.49, + "d_min_m": 94.63242707929723, + "d_src": "H at albedo 0.5", + "A2": 9.192478349409363e-14, + "A2_snr": 10.12610525381071, + "xi": 0.012800055258902356, + "xi_typ": 0.09675932280840034, + "t_j": 5.7765925212499365, + "q": 0.8482125065997695, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9064", + "n_obs": 180, + "cond": "0" + }, + { + "name": "847431 (1994 CJ1)", + "pdes": "847431", + "cls": "APO", + "H": 21.51, + "d_min_m": 93.76483177290298, + "d_src": "H at albedo 0.5", + "A2": -9.836854491280442e-14, + "A2_snr": -16.666984905592074, + "xi": 0.013571738283042242, + "xi_typ": 0.10259269815938431, + "t_j": 4.502324899638824, + "q": 1.00539063585533, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 30.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11555", + "n_obs": 222, + "cond": "0" + }, + { + "name": "867840 (2016 AO131)", + "pdes": "867840", + "cls": "APO", + "H": 24.3, + "d_min_m": 25.944181790744988, + "d_src": "H at albedo 0.5", + "A2": -5.076550751624265e-14, + "A2_snr": -3.290052334169971, + "xi": 0.0019379740666631289, + "xi_typ": 0.014649706936237565, + "t_j": 4.943363333820665, + "q": 0.9804902903817148, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.0123, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4533", + "n_obs": 152, + "cond": "0" + }, + { + "name": "875163 (1998 SH2)", + "pdes": "875163", + "cls": "APO", + "H": 20.88, + "d_min_m": 383.0, + "d_src": "measured", + "A2": -6.960694820150765e-13, + "A2_snr": -14.205499632960745, + "xi": 0.3922749875885099, + "xi_typ": 1.5690999503540397, + "t_j": 2.9129557891567495, + "q": 0.7850306380528732, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9900", + "n_obs": 394, + "cond": "0" + }, + { + "name": "875181 (1999 VR6)", + "pdes": "875181", + "cls": "APO", + "H": 21.05, + "d_min_m": 115.88840317707587, + "d_src": "H at albedo 0.5", + "A2": -3.761346361319891e-14, + "A2_snr": -5.337514348403421, + "xi": 0.006413905484714196, + "xi_typ": 0.048484568129219856, + "t_j": 3.2115849818796716, + "q": 0.521554975714843, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9490", + "n_obs": 160, + "cond": "0" + }, + { + "name": "875272 (2002 LX)", + "pdes": "875272", + "cls": "APO", + "H": 21.27, + "d_min_m": 104.72249454148259, + "d_src": "H at albedo 0.5", + "A2": 1.012479287260667e-13, + "A2_snr": 6.143684995513756, + "xi": 0.01560146482555334, + "xi_typ": 0.11793598861924526, + "t_j": 3.1002883915667705, + "q": 0.8342251699188695, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8636", + "n_obs": 189, + "cond": "0" + }, + { + "name": "875496 (2004 PS42)", + "pdes": "875496", + "cls": "AMO", + "H": 21.21, + "d_min_m": 107.65643116910465, + "d_src": "H at albedo 0.5", + "A2": 5.98522122129631e-14, + "A2_snr": 3.645079915527594, + "xi": 0.009481115472588434, + "xi_typ": 0.07167049626273037, + "t_j": 5.07324279179365, + "q": 1.034265173911724, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7808", + "n_obs": 162, + "cond": "0" + }, + { + "name": "875759 (2005 XT77)", + "pdes": "875759", + "cls": "ATE", + "H": 21.42, + "d_min_m": 97.7327184210278, + "d_src": "H at albedo 0.5", + "A2": 6.432383718413892e-14, + "A2_snr": 4.627614185909275, + "xi": 0.009250201066299382, + "xi_typ": 0.06992494742506475, + "t_j": 6.925465100517527, + "q": 0.6170573089733433, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7267", + "n_obs": 125, + "cond": "0" + }, + { + "name": "876393 (2008 BP16)", + "pdes": "876393", + "cls": "ATE", + "H": 21.81, + "d_min_m": 81.66575449255562, + "d_src": "H at albedo 0.5", + "A2": -8.379373771086179e-14, + "A2_snr": -3.611799039261284, + "xi": 0.010069103196721094, + "xi_typ": 0.07611526566848426, + "t_j": 6.808273312919769, + "q": 0.2903445116332026, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6554", + "n_obs": 107, + "cond": "1" + }, + { + "name": "876653 (2008 UX)", + "pdes": "876653", + "cls": "ATE", + "H": 20.89, + "d_min_m": 124.74983468323141, + "d_src": "H at albedo 0.5", + "A2": -6.40930523754289e-14, + "A2_snr": -4.968453672513868, + "xi": 0.01176495265575876, + "xi_typ": 0.08893468261024737, + "t_j": 6.903792612469011, + "q": 0.2605543204725936, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6239", + "n_obs": 186, + "cond": "0" + }, + { + "name": "876912 (2009 BE58)", + "pdes": "876912", + "cls": "ATE", + "H": 21.71, + "d_min_m": 85.51454292727092, + "d_src": "H at albedo 0.5", + "A2": 6.747634260646058e-14, + "A2_snr": 3.5383504250897, + "xi": 0.008490451070445248, + "xi_typ": 0.06418177728902932, + "t_j": 6.254019486197117, + "q": 0.4127535142072771, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6175", + "n_obs": 159, + "cond": "0" + }, + { + "name": "876954 (2009 FF)", + "pdes": "876954", + "cls": "APO", + "H": 21.97, + "d_min_m": 75.86474087460675, + "d_src": "H at albedo 0.5", + "A2": -3.725631440025525e-14, + "A2_snr": -2.468940649453628, + "xi": 0.004158906136383708, + "xi_typ": 0.03143837532266218, + "t_j": 4.471053051266187, + "q": 0.7835499603546744, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "15195", + "n_obs": 598, + "cond": "0" + }, + { + "name": "877717 (2010 WT8)", + "pdes": "877717", + "cls": "APO", + "H": 22.04, + "d_min_m": 73.4581486598795, + "d_src": "H at albedo 0.5", + "A2": -1.417850275803209e-13, + "A2_snr": -3.4140387088928703, + "xi": 0.015325321740396632, + "xi_typ": 0.11584854310611734, + "t_j": 5.4181769332790966, + "q": 0.824534763145528, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5798", + "n_obs": 120, + "cond": "0" + }, + { + "name": "882844 (2016 ED157)", + "pdes": "882844", + "cls": "AMO", + "H": 24.68, + "d_min_m": 21.779102496315602, + "d_src": "H at albedo 0.5", + "A2": -1.196938787191337e-13, + "A2_snr": -5.536257110043186, + "xi": 0.0038357577353396156, + "xi_typ": 0.02899560302057409, + "t_j": 4.9577707368966095, + "q": 1.109757904968917, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3341", + "n_obs": 122, + "cond": "0" + }, + { + "name": "883081 (2016 JE)", + "pdes": "883081", + "cls": "ATE", + "H": 21.94, + "d_min_m": 76.92012454872668, + "d_src": "H at albedo 0.5", + "A2": -1.294216422495857e-13, + "A2_snr": -6.113445547925636, + "xi": 0.014648263215036782, + "xi_typ": 0.11073046173143651, + "t_j": 7.001241307540928, + "q": 0.4338947316038237, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4423", + "n_obs": 130, + "cond": "1" + }, + { + "name": "883607 (2016 TA56)", + "pdes": "883607", + "cls": "APO", + "H": 18.13, + "d_min_m": 444.67219967574437, + "d_src": "H at albedo 0.5", + "A2": -3.185843703887927e-12, + "A2_snr": -8.891553736779032, + "xi": 2.084508615998898, + "xi_typ": 15.75740401058434, + "t_j": 2.690013772567481, + "q": 0.5884207764736904, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6844", + "n_obs": 94, + "cond": "0" + }, + { + "name": "886859 (2021 UN7)", + "pdes": "886859", + "cls": "ATE", + "H": 23.37, + "d_min_m": 39.81438198090946, + "d_src": "H at albedo 0.5", + "A2": -2.843415531191965e-13, + "A2_snr": -16.589355491201665, + "xi": 0.016657873515996183, + "xi_typ": 0.1259216876985572, + "t_j": 5.962797889127701, + "q": 0.6061629201620288, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4030", + "n_obs": 125, + "cond": "0" + }, + { + "name": "887324 (2004 MO3)", + "pdes": "887324", + "cls": "APO", + "H": 22.18, + "d_min_m": 68.87156928261622, + "d_src": "H at albedo 0.5", + "A2": -1.102263377737969e-13, + "A2_snr": -6.453532656545486, + "xi": 0.011170294088629969, + "xi_typ": 0.08443948637134223, + "t_j": 5.140616526383087, + "q": 0.8182259144298655, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7880", + "n_obs": 207, + "cond": "0" + }, + { + "name": "887773 (2007 DB61)", + "pdes": "887773", + "cls": "ATE", + "H": 23.79, + "d_min_m": 32.81254971615439, + "d_src": "H at albedo 0.5", + "A2": -2.459558138023725e-13, + "A2_snr": -58.84110378047189, + "xi": 0.011875073916049136, + "xi_typ": 0.08976712109250264, + "t_j": 7.149853751225868, + "q": 0.5147839391747382, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9850", + "n_obs": 165, + "cond": "0" + }, + { + "name": "891458 (2015 AJ44)", + "pdes": "891458", + "cls": "ATE", + "H": 22.38, + "d_min_m": 62.8116177091975, + "d_src": "H at albedo 0.5", + "A2": 8.872523441972023e-14, + "A2_snr": 3.157481651947339, + "xi": 0.008200236621610903, + "xi_typ": 0.0619879622647626, + "t_j": 6.587873178737855, + "q": 0.4643998700699123, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4079", + "n_obs": 99, + "cond": "0" + }, + { + "name": "893065 (2016 CL136)", + "pdes": "893065", + "cls": "ATE", + "H": 21.3, + "d_min_m": 123.0, + "d_src": "measured", + "A2": 5.964724369661219e-14, + "A2_snr": 13.155545588136787, + "xi": 0.010795300631306947, + "xi_typ": 0.04318120252522779, + "t_j": 7.675931595407268, + "q": 0.2755648792559056, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3662", + "n_obs": 291, + "cond": "0" + }, + { + "name": "894048 (2017 BM123)", + "pdes": "894048", + "cls": "APO", + "H": 23.81, + "d_min_m": 32.511722452147914, + "d_src": "H at albedo 0.5", + "A2": -1.230048591681054e-13, + "A2_snr": -6.914269767740607, + "xi": 0.005884390652986599, + "xi_typ": 0.04448181224273005, + "t_j": 4.9137636949659, + "q": 0.922198801945783, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.1503, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3317", + "n_obs": 389, + "cond": "0" + }, + { + "name": "895359 (2020 FW6)", + "pdes": "895359", + "cls": "APO", + "H": 23.25, + "d_min_m": 42.0765359959459, + "d_src": "H at albedo 0.5", + "A2": -1.125977174302025e-13, + "A2_snr": -6.13611539129169, + "xi": 0.006971220432432474, + "xi_typ": 0.05269747313950994, + "t_j": 4.83232769322545, + "q": 0.919410831125802, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5474", + "n_obs": 94, + "cond": "0" + }, + { + "name": "(1994 WR12)", + "pdes": "1994 WR12", + "cls": "ATE", + "H": 22.41, + "d_min_m": 61.94981000589151, + "d_src": "H at albedo 0.5", + "A2": -2.218045691178069e-13, + "A2_snr": -18.483714093150574, + "xi": 0.020218536534415327, + "xi_typ": 0.1528377701249619, + "t_j": 7.570688328000223, + "q": 0.4558321574068094, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11345", + "n_obs": 153, + "cond": "0" + }, + { + "name": "(1995 CR)", + "pdes": "1995 CR", + "cls": "ATE", + "H": 21.76, + "d_min_m": 83.56799428155264, + "d_src": "H at albedo 0.5", + "A2": -4.790734824802164e-14, + "A2_snr": -26.48277957325685, + "xi": 0.005890896079370445, + "xi_typ": 0.04453098864382746, + "t_j": 6.149432654869583, + "q": 0.119314112224496, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.66, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "11333", + "n_obs": 264, + "cond": "0" + }, + { + "name": "(1995 FO)", + "pdes": "1995 FO", + "cls": "APO", + "H": 20.78, + "d_min_m": 131.23206985250923, + "d_src": "H at albedo 0.5", + "A2": 8.018197243945782e-14, + "A2_snr": 7.015045707739092, + "xi": 0.015483030323542176, + "xi_typ": 0.11704070793647006, + "t_j": 4.472276740908006, + "q": 0.9459480658073728, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10607", + "n_obs": 237, + "cond": "0" + }, + { + "name": "(1996 AE2)", + "pdes": "1996 AE2", + "cls": "APO", + "H": 20.23, + "d_min_m": 169.05965515525716, + "d_src": "H at albedo 0.5", + "A2": 5.597298409727525e-14, + "A2_snr": 8.022500228934392, + "xi": 0.01392379722709107, + "xi_typ": 0.1052540136244963, + "t_j": 4.592154439436375, + "q": 1.016622763835382, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8785", + "n_obs": 311, + "cond": "0" + }, + { + "name": "(1996 GQ)", + "pdes": "1996 GQ", + "cls": "APO", + "H": 23.19, + "d_min_m": 208.0, + "d_src": "measured", + "A2": -1.744238377794917e-13, + "A2_snr": -4.1401338186444745, + "xi": 0.05338366947619973, + "xi_typ": 0.2135346779047989, + "t_j": 3.6896406529577868, + "q": 1.005086221951295, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10114", + "n_obs": 97, + "cond": "0" + }, + { + "name": "(1997 AC11)", + "pdes": "1997 AC11", + "cls": "ATE", + "H": 20.7, + "d_min_m": 136.15700153859294, + "d_src": "H at albedo 0.5", + "A2": -5.102091232085757e-14, + "A2_snr": -3.5406601194210667, + "xi": 0.010221801640039989, + "xi_typ": 0.07726955740165135, + "t_j": 6.359943623609245, + "q": 0.5771672335246788, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10204", + "n_obs": 171, + "cond": "0" + }, + { + "name": "(1997 QK1)", + "pdes": "1997 QK1", + "cls": "APO", + "H": 20.26, + "d_min_m": 166.74006972751678, + "d_src": "H at albedo 0.5", + "A2": -3.926129109192332e-14, + "A2_snr": -1.6908394096435537, + "xi": 0.009632606203017955, + "xi_typ": 0.07281565854458186, + "t_j": 2.983691861769523, + "q": 0.9845356857855708, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "10305", + "n_obs": 720, + "cond": "0" + }, + { + "name": "(1997 YM9)", + "pdes": "1997 YM9", + "cls": "APO", + "H": 24.36, + "d_min_m": 25.2371308101121, + "d_src": "H at albedo 0.5", + "A2": 1.039444221072074e-13, + "A2_snr": 7.631749053392614, + "xi": 0.0038599387913273884, + "xi_typ": 0.029178394622238597, + "t_j": 5.651470889711785, + "q": 0.9819722294715759, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8656", + "n_obs": 71, + "cond": "0" + }, + { + "name": "(1998 KY26)", + "pdes": "1998 KY26", + "cls": "APO", + "H": 25.91, + "d_min_m": 11.0, + "d_src": "measured", + "A2": -2.196384257496804e-13, + "A2_snr": -4.513736657412257, + "xi": 0.0035550053407089016, + "xi_typ": 0.014220021362835606, + "t_j": 5.185720136132753, + "q": 0.9830266245133115, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": 0.089193, + "A1_snr": 0.9452793933981538, + "A3_snr": 1.5043119625769723, + "verdict": null, + "arc": "9472", + "n_obs": 85, + "cond": "2" + }, + { + "name": "(1998 SU4)", + "pdes": "1998 SU4", + "cls": "APO", + "H": 21.41, + "d_min_m": 98.18383215259686, + "d_src": "H at albedo 0.5", + "A2": -5.337120260240299e-14, + "A2_snr": -4.242543927059061, + "xi": 0.007710565266931269, + "xi_typ": 0.05828639475437855, + "t_j": 5.23563389272452, + "q": 0.4816402465280623, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9915", + "n_obs": 96, + "cond": "1" + }, + { + "name": "(1998 SD9)", + "pdes": "1998 SD9", + "cls": "ATE", + "H": 24.09, + "d_min_m": 28.57853609639423, + "d_src": "H at albedo 0.5", + "A2": -2.872474946913939e-13, + "A2_snr": -109.38594618864963, + "xi": 0.012079125079759803, + "xi_typ": 0.09130960290367907, + "t_j": 8.03963219123063, + "q": 0.3481596396085241, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7302", + "n_obs": 150, + "cond": "0" + }, + { + "name": "(1998 WB2)", + "pdes": "1998 WB2", + "cls": "APO", + "H": 21.85, + "d_min_m": 150.0, + "d_src": "measured", + "A2": -1.679362103795218e-14, + "A2_snr": -2.5348861944078758, + "xi": 0.003706592630136572, + "xi_typ": 0.014826370520546289, + "t_j": 3.6342893072838067, + "q": 0.8151647714605194, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.313, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9147", + "n_obs": 320, + "cond": "0" + }, + { + "name": "(1999 AO10)", + "pdes": "1999 AO10", + "cls": "ATE", + "H": 24.32, + "d_min_m": 25.706324102375408, + "d_src": "H at albedo 0.5", + "A2": -2.036861479340806e-13, + "A2_snr": -8.402893891669992, + "xi": 0.007704433728775215, + "xi_typ": 0.058240044682620784, + "t_j": 6.535881746945642, + "q": 0.8108684204874037, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9927", + "n_obs": 230, + "cond": "1" + }, + { + "name": "(1999 SF10)", + "pdes": "1999 SF10", + "cls": "APO", + "H": 24.36, + "d_min_m": 25.2371308101121, + "d_src": "H at albedo 0.5", + "A2": -7.411155131188154e-14, + "A2_snr": -23.23974641325856, + "xi": 0.0027521058465180136, + "xi_typ": 0.020803964718895885, + "t_j": 5.0317462944333995, + "q": 0.9548073926352865, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.0411, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9632", + "n_obs": 124, + "cond": "0" + }, + { + "name": "(1999 SG10)", + "pdes": "1999 SG10", + "cls": "APO", + "H": 20.73, + "d_min_m": 134.2888574425713, + "d_src": "H at albedo 0.5", + "A2": -4.990243167402321e-14, + "A2_snr": -3.815170617280062, + "xi": 0.009860545412224756, + "xi_typ": 0.07453871700630166, + "t_j": 4.343565036443765, + "q": 0.5621442836997633, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9723", + "n_obs": 108, + "cond": "0" + }, + { + "name": "(1999 SH10)", + "pdes": "1999 SH10", + "cls": "APO", + "H": 22.75, + "d_min_m": 52.97122040556835, + "d_src": "H at albedo 0.5", + "A2": -6.005110031461796e-14, + "A2_snr": -5.58614886647609, + "xi": 0.0046805856655418076, + "xi_typ": 0.035381901889021045, + "t_j": 5.633642637709496, + "q": 0.9548939694520354, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.1264, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8388", + "n_obs": 99, + "cond": "0" + }, + { + "name": "(1999 UQ)", + "pdes": "1999 UQ", + "cls": "AMO", + "H": 21.87, + "d_min_m": 79.44013596028462, + "d_src": "H at albedo 0.5", + "A2": -1.1833832833544e-13, + "A2_snr": -10.028671892833898, + "xi": 0.013832626767458011, + "xi_typ": 0.10456482972991193, + "t_j": 5.5875072067515665, + "q": 1.077009439321248, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8738", + "n_obs": 120, + "cond": "0" + }, + { + "name": "(2000 AA6)", + "pdes": "2000 AA6", + "cls": "APO", + "H": 22.44, + "d_min_m": 316.0, + "d_src": "measured", + "A2": 1.483133228648536e-13, + "A2_snr": 7.601913012037601, + "xi": 0.06896146799379159, + "xi_typ": 0.27584587197516636, + "t_j": 4.894428904716852, + "q": 0.61834471630619, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6943", + "n_obs": 151, + "cond": "0" + }, + { + "name": "(2000 AH205)", + "pdes": "2000 AH205", + "cls": "APO", + "H": 22.6, + "d_min_m": 56.75968528656264, + "d_src": "H at albedo 0.5", + "A2": -1.601666674202442e-13, + "A2_snr": -3.3458672951795316, + "xi": 0.013376773336248279, + "xi_typ": 0.10111890169197926, + "t_j": 5.390059444407313, + "q": 0.6806255429608282, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7459", + "n_obs": 81, + "cond": "1" + }, + { + "name": "(2000 CK59)", + "pdes": "2000 CK59", + "cls": "APO", + "H": 24.1, + "d_min_m": 28.447229650326932, + "d_src": "H at albedo 0.5", + "A2": -1.915408158712604e-13, + "A2_snr": -6.775409121728348, + "xi": 0.008017529412809882, + "xi_typ": 0.06060682558697332, + "t_j": 4.530997823767679, + "q": 1.016629015140068, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6523", + "n_obs": 70, + "cond": "0" + }, + { + "name": "(2000 EB14)", + "pdes": "2000 EB14", + "cls": "ATE", + "H": 23.43, + "d_min_m": 38.72932953832534, + "d_src": "H at albedo 0.5", + "A2": -2.71033441535033e-13, + "A2_snr": -33.20267567500098, + "xi": 0.015445504865006409, + "xi_typ": 0.11675704213327207, + "t_j": 6.515484220506973, + "q": 0.4517313830131193, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 1.79, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8041", + "n_obs": 80, + "cond": "1" + }, + { + "name": "(2000 EM26)", + "pdes": "2000 EM26", + "cls": "ATE", + "H": 22.51, + "d_min_m": 59.16160926106289, + "d_src": "H at albedo 0.5", + "A2": -1.595442369801633e-13, + "A2_snr": -8.48639558405124, + "xi": 0.013888660123422736, + "xi_typ": 0.10498840208707486, + "t_j": 7.065904625921183, + "q": 0.4357356885264149, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7358", + "n_obs": 93, + "cond": "1" + }, + { + "name": "(2000 PN8)", + "pdes": "2000 PN8", + "cls": "APO", + "H": 22.04, + "d_min_m": 73.4581486598795, + "d_src": "H at albedo 0.5", + "A2": 1.325490211403198e-13, + "A2_snr": 17.218630961330188, + "xi": 0.01432701625846408, + "xi_typ": 0.10830206299850013, + "t_j": 5.039125540366442, + "q": 0.9806844083714104, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7680", + "n_obs": 180, + "cond": "0" + }, + { + "name": "(2000 TU28)", + "pdes": "2000 TU28", + "cls": "APO", + "H": 21.05, + "d_min_m": 115.88840317707587, + "d_src": "H at albedo 0.5", + "A2": -8.391874605004229e-14, + "A2_snr": -13.07552914459992, + "xi": 0.014309953241632025, + "xi_typ": 0.10817307871520261, + "t_j": 5.710184380721699, + "q": 0.8765175327227277, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 128.5, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7915", + "n_obs": 276, + "cond": "0" + }, + { + "name": "(2000 YS134)", + "pdes": "2000 YS134", + "cls": "ATE", + "H": 24.02, + "d_min_m": 29.514809113514904, + "d_src": "H at albedo 0.5", + "A2": -2.132607059526886e-13, + "A2_snr": -5.673336151973626, + "xi": 0.009261686392513905, + "xi_typ": 0.07001176833046495, + "t_j": 6.864269197784907, + "q": 0.6641133539078227, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8435", + "n_obs": 58, + "cond": "2" + }, + { + "name": "(2001 BX15)", + "pdes": "2001 BX15", + "cls": "APO", + "H": 21.75, + "d_min_m": 83.95372661714255, + "d_src": "H at albedo 0.5", + "A2": 5.964846666006605e-14, + "A2_snr": 4.667329159629581, + "xi": 0.007368490245366698, + "xi_typ": 0.055700550649273116, + "t_j": 3.662677440524815, + "q": 0.7860261053467178, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8769", + "n_obs": 132, + "cond": "0" + }, + { + "name": "(2001 BB16)", + "pdes": "2001 BB16", + "cls": "ATE", + "H": 23.2, + "d_min_m": 43.05662442410041, + "d_src": "H at albedo 0.5", + "A2": 3.180325179453752e-13, + "A2_snr": 12.283990650651804, + "xi": 0.02014887286317354, + "xi_typ": 0.15231116226918612, + "t_j": 6.880433651429827, + "q": 0.7079835630097873, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6967", + "n_obs": 57, + "cond": "0" + }, + { + "name": "(2001 CQ36)", + "pdes": "2001 CQ36", + "cls": "ATE", + "H": 22.74, + "d_min_m": 53.21572444975108, + "d_src": "H at albedo 0.5", + "A2": -1.515533061806756e-13, + "A2_snr": -17.068735914030366, + "xi": 0.011867101145099616, + "xi_typ": 0.08970685260909547, + "t_j": 6.385278096658046, + "q": 0.7712697589766786, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7751", + "n_obs": 159, + "cond": "0" + }, + { + "name": "(2001 EC16)", + "pdes": "2001 EC16", + "cls": "APO", + "H": 22.38, + "d_min_m": 62.8116177091975, + "d_src": "H at albedo 0.5", + "A2": -1.204935401478204e-13, + "A2_snr": -6.01565352710037, + "xi": 0.011136353113631097, + "xi_typ": 0.08418291671676488, + "t_j": 4.81124959080515, + "q": 0.8557093956640371, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 200.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9160", + "n_obs": 220, + "cond": "0" + }, + { + "name": "(2001 OT)", + "pdes": "2001 OT", + "cls": "ATE", + "H": 21.7, + "d_min_m": 85.90926012317615, + "d_src": "H at albedo 0.5", + "A2": 7.7410277328879e-14, + "A2_snr": 4.117567943025479, + "xi": 0.009785383531888178, + "xi_typ": 0.07397054659646571, + "t_j": 6.3546187497100135, + "q": 0.6325235406271495, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6616", + "n_obs": 98, + "cond": "0" + }, + { + "name": "(2001 QJ142)", + "pdes": "2001 QJ142", + "cls": "APO", + "H": 23.97, + "d_min_m": 30.202297334363983, + "d_src": "H at albedo 0.5", + "A2": -8.456995187814002e-14, + "A2_snr": -27.395514051875615, + "xi": 0.003758333476182862, + "xi_typ": 0.028410330634367844, + "t_j": 5.792972981734132, + "q": 0.9707251707482936, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8462", + "n_obs": 154, + "cond": "0" + }, + { + "name": "(2001 QM142)", + "pdes": "2001 QM142", + "cls": "APO", + "H": 22.54, + "d_min_m": 58.34988155111586, + "d_src": "H at albedo 0.5", + "A2": -2.404683652260076e-13, + "A2_snr": -7.349277665831528, + "xi": 0.020646059747103918, + "xi_typ": 0.156069541840623, + "t_j": 5.089043524014148, + "q": 0.7060076390732856, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8027", + "n_obs": 40, + "cond": "0" + }, + { + "name": "(2002 AY1)", + "pdes": "2002 AY1", + "cls": "ATE", + "H": 20.86, + "d_min_m": 126.48527775409691, + "d_src": "H at albedo 0.5", + "A2": 6.173216702356572e-14, + "A2_snr": 58.84858629510555, + "xi": 0.011489225446070839, + "xi_typ": 0.08685038082016734, + "t_j": 7.280460299954745, + "q": 0.438624486630762, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8801", + "n_obs": 270, + "cond": "0" + }, + { + "name": "(2002 BF25)", + "pdes": "2002 BF25", + "cls": "APO", + "H": 22.62, + "d_min_m": 152.0, + "d_src": "measured", + "A2": 1.663053400573732e-13, + "A2_snr": 48.78420066218046, + "xi": 0.03719538280049849, + "xi_typ": 0.14878153120199397, + "t_j": 5.722458962776244, + "q": 0.8365566627697314, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7315", + "n_obs": 147, + "cond": "0" + }, + { + "name": "(2002 EW8)", + "pdes": "2002 EW8", + "cls": "APO", + "H": 23.84, + "d_min_m": 32.06564489708911, + "d_src": "H at albedo 0.5", + "A2": 1.614025426408538e-13, + "A2_snr": 4.395494080633274, + "xi": 0.007615345313025616, + "xi_typ": 0.057566599560420297, + "t_j": 3.8537502941912765, + "q": 0.9974365104435826, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5518", + "n_obs": 112, + "cond": "0" + }, + { + "name": "(2002 GD10)", + "pdes": "2002 GD10", + "cls": "AMO", + "H": 22.71, + "d_min_m": 53.956028919828434, + "d_src": "H at albedo 0.5", + "A2": -2.484513205199073e-13, + "A2_snr": -4.949229492428432, + "xi": 0.019725160162188306, + "xi_typ": 0.1491081953144821, + "t_j": 5.180951939870576, + "q": 1.058032219101122, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.7356, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8610", + "n_obs": 97, + "cond": "0" + }, + { + "name": "(2002 JR100)", + "pdes": "2002 JR100", + "cls": "ATE", + "H": 24.36, + "d_min_m": 28.0, + "d_src": "measured", + "A2": -3.004664763348847e-13, + "A2_snr": -29.342429329578582, + "xi": 0.012379220689226747, + "xi_typ": 0.04951688275690699, + "t_j": 6.436664816833284, + "q": 0.6472554664388283, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8776", + "n_obs": 165, + "cond": "0" + }, + { + "name": "(2002 LY1)", + "pdes": "2002 LY1", + "cls": "ATE", + "H": 22.48, + "d_min_m": 59.98462922829627, + "d_src": "H at albedo 0.5", + "A2": -1.389402054202651e-13, + "A2_snr": -2.045644956128756, + "xi": 0.012263294715699034, + "xi_typ": 0.0927017944915205, + "t_j": 6.236928177843607, + "q": 0.5937074045328944, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 3.204, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5124", + "n_obs": 188, + "cond": "0" + }, + { + "name": "(2002 TB70)", + "pdes": "2002 TB70", + "cls": "APO", + "H": 21.79, + "d_min_m": 82.42139841524181, + "d_src": "H at albedo 0.5", + "A2": -7.649035272036046e-14, + "A2_snr": -3.032924374320399, + "xi": 0.009276537242102595, + "xi_typ": 0.07012403020123553, + "t_j": 5.47393990520739, + "q": 0.9835543955577566, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8735", + "n_obs": 97, + "cond": "0" + }, + { + "name": "(2002 VU114)", + "pdes": "2002 VU114", + "cls": "APO", + "H": 22.95, + "d_min_m": 48.31032718378928, + "d_src": "H at albedo 0.5", + "A2": -1.036522204152512e-13, + "A2_snr": -7.9184278392094125, + "xi": 0.007368139483928711, + "xi_typ": 0.055697899142031895, + "t_j": 5.317678243544423, + "q": 0.8434194979557532, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8586", + "n_obs": 66, + "cond": "0" + }, + { + "name": "(2003 AF23)", + "pdes": "2003 AF23", + "cls": "ATE", + "H": 21.01, + "d_min_m": 118.04292945151283, + "d_src": "H at albedo 0.5", + "A2": -6.395791393664649e-14, + "A2_snr": -20.11887824367615, + "xi": 0.01110896297060869, + "xi_typ": 0.08397586669730264, + "t_j": 6.631380480604594, + "q": 0.5019814366809053, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 19.89, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8407", + "n_obs": 463, + "cond": "0" + }, + { + "name": "(2003 BM4)", + "pdes": "2003 BM4", + "cls": "APO", + "H": 24.95, + "d_min_m": 19.23268766365204, + "d_src": "H at albedo 0.5", + "A2": 2.892132589166791e-13, + "A2_snr": 4.982998947565112, + "xi": 0.008184599411460396, + "xi_typ": 0.061869756066885204, + "t_j": 5.229103452786532, + "q": 0.7943801187485411, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7677", + "n_obs": 98, + "cond": "0" + }, + { + "name": "(2003 BN4)", + "pdes": "2003 BN4", + "cls": "AMO", + "H": 24.26, + "d_min_m": 26.426520142163284, + "d_src": "H at albedo 0.5", + "A2": -1.886004328357872e-13, + "A2_snr": -18.152110956283657, + "xi": 0.007333679291933052, + "xi_typ": 0.055437404575883156, + "t_j": 5.064908380052217, + "q": 1.052332393193461, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7356", + "n_obs": 114, + "cond": "0" + }, + { + "name": "(2003 FF5)", + "pdes": "2003 FF5", + "cls": "APO", + "H": 23.3, + "d_min_m": 41.11875710412533, + "d_src": "H at albedo 0.5", + "A2": -7.145931826477071e-14, + "A2_snr": -3.116411612070245, + "xi": 0.004323526224054938, + "xi_typ": 0.032682786216329966, + "t_j": 4.770377023482108, + "q": 0.9531639586949548, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5978", + "n_obs": 158, + "cond": "0" + }, + { + "name": "(2003 FY6)", + "pdes": "2003 FY6", + "cls": "ATE", + "H": 22.61, + "d_min_m": 56.49889822141224, + "d_src": "H at albedo 0.5", + "A2": -6.972817635975827e-14, + "A2_snr": -18.71897351939819, + "xi": 0.005796789577950095, + "xi_typ": 0.04381961035950577, + "t_j": 7.732287302554612, + "q": 0.3050706052227279, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7332", + "n_obs": 204, + "cond": "0" + }, + { + "name": "(2003 GQ22)", + "pdes": "2003 GQ22", + "cls": "ATE", + "H": 21.34, + "d_min_m": 101.40047251695708, + "d_src": "H at albedo 0.5", + "A2": 6.211014816186056e-14, + "A2_snr": 5.095172121563623, + "xi": 0.009267056142503916, + "xi_typ": 0.07005235982496828, + "t_j": 6.734046447155896, + "q": 0.7140961037550124, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8058", + "n_obs": 318, + "cond": "0" + }, + { + "name": "(2003 HM)", + "pdes": "2003 HM", + "cls": "ATE", + "H": 22.11, + "d_min_m": 71.12789870930823, + "d_src": "H at albedo 0.5", + "A2": -1.167683803864719e-13, + "A2_snr": -61.167302454935516, + "xi": 0.012220936438330521, + "xi_typ": 0.09238159601185712, + "t_j": 7.076369003316293, + "q": 0.5943629464539587, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8053", + "n_obs": 147, + "cond": "0" + }, + { + "name": "(2003 LN6)", + "pdes": "2003 LN6", + "cls": "ATE", + "H": 24.74, + "d_min_m": 21.185561489644993, + "d_src": "H at albedo 0.5", + "A2": 7.444587804393705e-13, + "A2_snr": 48.02959873802391, + "xi": 0.02320704719138568, + "xi_typ": 0.17542878723584712, + "t_j": 6.872289263930118, + "q": 0.6752676156280686, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8413", + "n_obs": 151, + "cond": "0" + }, + { + "name": "(2003 MS2)", + "pdes": "2003 MS2", + "cls": "APO", + "H": 21.21, + "d_min_m": 107.65643116910465, + "d_src": "H at albedo 0.5", + "A2": -6.5061593542812e-14, + "A2_snr": -3.2859390678187874, + "xi": 0.010306327174927925, + "xi_typ": 0.07790851038664623, + "t_j": 5.826287663110718, + "q": 0.9105404812719797, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6896", + "n_obs": 282, + "cond": "0" + }, + { + "name": "(2003 MK4)", + "pdes": "2003 MK4", + "cls": "APO", + "H": 20.86, + "d_min_m": 126.48527775409691, + "d_src": "H at albedo 0.5", + "A2": -7.029144891951253e-14, + "A2_snr": -3.7073549008181717, + "xi": 0.013082228318000884, + "xi_typ": 0.09889235063999186, + "t_j": 5.643781717823321, + "q": 0.8846632019659039, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7155", + "n_obs": 276, + "cond": "0" + }, + { + "name": "(2003 TG2)", + "pdes": "2003 TG2", + "cls": "ATE", + "H": 21.36, + "d_min_m": 100.4708273970221, + "d_src": "H at albedo 0.5", + "A2": -8.262039983176718e-14, + "A2_snr": -4.977132519985974, + "xi": 0.012214242023527002, + "xi_typ": 0.0923309909925908, + "t_j": 6.446873980717277, + "q": 0.6209609736034596, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7323", + "n_obs": 79, + "cond": "0" + }, + { + "name": "(2003 UY12)", + "pdes": "2003 UY12", + "cls": "ATE", + "H": 23.27, + "d_min_m": 41.69077599521366, + "d_src": "H at albedo 0.5", + "A2": -1.056595680201575e-13, + "A2_snr": -24.156279839999428, + "xi": 0.006481687066873604, + "xi_typ": 0.048996948728832104, + "t_j": 7.987064920882581, + "q": 0.2842799607563177, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7323", + "n_obs": 93, + "cond": "1" + }, + { + "name": "(2003 YS17)", + "pdes": "2003 YS17", + "cls": "ATE", + "H": 21.6, + "d_min_m": 89.9580388169084, + "d_src": "H at albedo 0.5", + "A2": -8.775179470619833e-14, + "A2_snr": -3.6731600965340445, + "xi": 0.011615428513588221, + "xi_typ": 0.08780438633829445, + "t_j": 6.392579943766484, + "q": 0.6390682024008112, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6228", + "n_obs": 209, + "cond": "0" + }, + { + "name": "(2003 YL118)", + "pdes": "2003 YL118", + "cls": "APO", + "H": 21.83, + "d_min_m": 80.91703835499425, + "d_src": "H at albedo 0.5", + "A2": -1.749731892466972e-13, + "A2_snr": -16.413995238902174, + "xi": 0.020832948327779446, + "xi_typ": 0.1574822867187524, + "t_j": 5.407374772376688, + "q": 0.5809280428707967, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8114", + "n_obs": 122, + "cond": "0" + }, + { + "name": "(2004 BM11)", + "pdes": "2004 BM11", + "cls": "APO", + "H": 21.96, + "d_min_m": 76.21491660800868, + "d_src": "H at albedo 0.5", + "A2": 9.022581951936564e-14, + "A2_snr": 3.3957779269614465, + "xi": 0.010118358537864795, + "xi_typ": 0.07648760104964965, + "t_j": 4.490900784148228, + "q": 0.6885943664652313, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7172", + "n_obs": 51, + "cond": "0" + }, + { + "name": "(2004 FH)", + "pdes": "2004 FH", + "cls": "ATE", + "H": 26.41, + "d_min_m": 9.818383215259686, + "d_src": "H at albedo 0.5", + "A2": 1.691205920439038e-13, + "A2_snr": 4.111854900167853, + "xi": 0.002443293947582633, + "xi_typ": 0.018469566186094084, + "t_j": 7.110241659293439, + "q": 0.5825882147948459, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.0504, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6184", + "n_obs": 273, + "cond": "1" + }, + { + "name": "(2004 JN1)", + "pdes": "2004 JN1", + "cls": "APO", + "H": 23.74, + "d_min_m": 33.57685218340469, + "d_src": "H at albedo 0.5", + "A2": -3.787124748067721e-13, + "A2_snr": -13.4965244050881, + "xi": 0.018710648489410044, + "xi_typ": 0.1414392079192152, + "t_j": 5.692714245655296, + "q": 0.8947247747873104, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6244", + "n_obs": 111, + "cond": "0" + }, + { + "name": "(2004 KG1)", + "pdes": "2004 KG1", + "cls": "ATE", + "H": 23.96, + "d_min_m": 30.34170480478512, + "d_src": "H at albedo 0.5", + "A2": -3.10300305540414e-13, + "A2_snr": -14.72012834631945, + "xi": 0.01385356134295286, + "xi_typ": 0.1047230802458036, + "t_j": 6.99618156725103, + "q": 0.4920833377926629, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8111", + "n_obs": 113, + "cond": "0" + }, + { + "name": "(2004 XG)", + "pdes": "2004 XG", + "cls": "ATE", + "H": 24.16, + "d_min_m": 27.67196366650132, + "d_src": "H at albedo 0.5", + "A2": -3.539015115861545e-14, + "A2_snr": -3.7386595350322676, + "xi": 0.0014409922546091203, + "xi_typ": 0.010892877562474285, + "t_j": 6.984329514072903, + "q": 0.5866414544447817, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7373", + "n_obs": 96, + "cond": "1" + }, + { + "name": "(2005 EY169)", + "pdes": "2005 EY169", + "cls": "APO", + "H": 22.29, + "d_min_m": 65.46964390668565, + "d_src": "H at albedo 0.5", + "A2": -1.127286726950284e-13, + "A2_snr": -3.998888708585612, + "xi": 0.010859594837097137, + "xi_typ": 0.08209082079394285, + "t_j": 4.892684314808768, + "q": 1.002816399928751, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6733", + "n_obs": 168, + "cond": "0" + }, + { + "name": "(2005 MF5)", + "pdes": "2005 MF5", + "cls": "ATE", + "H": 21.73, + "d_min_m": 84.730540885244, + "d_src": "H at albedo 0.5", + "A2": 6.829659646114e-14, + "A2_snr": 3.461560895141409, + "xi": 0.008514875261622753, + "xi_typ": 0.06436640681997097, + "t_j": 7.105009646258828, + "q": 0.4969056604818295, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6586", + "n_obs": 95, + "cond": "1" + }, + { + "name": "(2005 NE21)", + "pdes": "2005 NE21", + "cls": "ATE", + "H": 21.24, + "d_min_m": 106.17932955835651, + "d_src": "H at albedo 0.5", + "A2": 5.474608557411132e-14, + "A2_snr": 11.559561987776885, + "xi": 0.008553272348166269, + "xi_typ": 0.06465666151158117, + "t_j": 7.25714314824732, + "q": 0.397312545846832, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7707", + "n_obs": 189, + "cond": "0" + }, + { + "name": "(2005 NJ63)", + "pdes": "2005 NJ63", + "cls": "ATE", + "H": 21.03, + "d_min_m": 116.9607053692821, + "d_src": "H at albedo 0.5", + "A2": 6.565494570200545e-14, + "A2_snr": 4.442147882409029, + "xi": 0.011299173448863073, + "xi_typ": 0.0854137227607877, + "t_j": 6.648149683200476, + "q": 0.5021423630871027, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7692", + "n_obs": 106, + "cond": "0" + }, + { + "name": "(2005 QQ87)", + "pdes": "2005 QQ87", + "cls": "APO", + "H": 22.84, + "d_min_m": 50.82062230927199, + "d_src": "H at albedo 0.5", + "A2": -6.803966731147511e-14, + "A2_snr": -2.7314198037525133, + "xi": 0.005087933311237331, + "xi_typ": 0.03846116065375821, + "t_j": 5.888298257919586, + "q": 0.6995538646073749, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6204", + "n_obs": 89, + "cond": "0" + }, + { + "name": "(2005 RZ2)", + "pdes": "2005 RZ2", + "cls": "APO", + "H": 23.3, + "d_min_m": 41.11875710412533, + "d_src": "H at albedo 0.5", + "A2": -1.200592407121365e-13, + "A2_snr": -7.7960545916971755, + "xi": 0.00726398303627466, + "xi_typ": 0.054910550405070355, + "t_j": 5.596442125190585, + "q": 0.9919946752976775, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7650", + "n_obs": 69, + "cond": "0" + }, + { + "name": "(2005 TG50)", + "pdes": "2005 TG50", + "cls": "ATE", + "H": 24.83, + "d_min_m": 20.32544107218505, + "d_src": "H at albedo 0.5", + "A2": -2.086477460591929e-13, + "A2_snr": -4.178805248531803, + "xi": 0.006240119784566092, + "xi_typ": 0.04717087171775951, + "t_j": 6.47243837597104, + "q": 0.7980051619614209, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5849", + "n_obs": 77, + "cond": "0" + }, + { + "name": "(2005 VL1)", + "pdes": "2005 VL1", + "cls": "ATE", + "H": 26.45, + "d_min_m": 9.639177525363136, + "d_src": "H at albedo 0.5", + "A2": -8.320601552689281e-13, + "A2_snr": -1.4826446102439919, + "xi": 0.011801411512745176, + "xi_typ": 0.08921028566359514, + "t_j": 6.64452079104309, + "q": 0.6909951496742942, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": -1.093499947084338, + "A3_snr": -6.1172757533885225, + "verdict": null, + "arc": "5874", + "n_obs": 79, + "cond": "4" + }, + { + "name": "(2005 YU128)", + "pdes": "2005 YU128", + "cls": "ATE", + "H": 25.26, + "d_min_m": 16.674006972751677, + "d_src": "H at albedo 0.5", + "A2": -9.17069976131174e-13, + "A2_snr": -3.0528294811290744, + "xi": 0.022499957833785868, + "xi_typ": 0.17008369410753416, + "t_j": 7.465480916652336, + "q": 0.5232246097627619, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6962", + "n_obs": 39, + "cond": "2" + }, + { + "name": "(2006 BE55)", + "pdes": "2006 BE55", + "cls": "APO", + "H": 21.98, + "d_min_m": 75.51617405255342, + "d_src": "H at albedo 0.5", + "A2": -8.296604414923711e-14, + "A2_snr": -2.1405068149957978, + "xi": 0.00921891078450524, + "xi_typ": 0.06968841512769208, + "t_j": 5.222422912235043, + "q": 0.68776018290583, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.61, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6243", + "n_obs": 213, + "cond": "0" + }, + { + "name": "(2006 CW)", + "pdes": "2006 CW", + "cls": "AMO", + "H": 22.55, + "d_min_m": 58.08178819780067, + "d_src": "H at albedo 0.5", + "A2": 6.469258677478226e-14, + "A2_snr": 5.307021064379185, + "xi": 0.005528836485051346, + "xi_typ": 0.041794075368532406, + "t_j": 3.467570191013344, + "q": 1.137168168670265, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7416", + "n_obs": 161, + "cond": "0" + }, + { + "name": "(2006 GB1)", + "pdes": "2006 GB1", + "cls": "APO", + "H": 24.1, + "d_min_m": 28.447229650326932, + "d_src": "H at albedo 0.5", + "A2": -7.167904315709418e-14, + "A2_snr": -3.1899885695191, + "xi": 0.0030003466059178472, + "xi_typ": 0.022680488475015255, + "t_j": 5.484971511149855, + "q": 0.8063190153872233, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6808", + "n_obs": 76, + "cond": "0" + }, + { + "name": "(2006 HJ18)", + "pdes": "2006 HJ18", + "cls": "APO", + "H": 21.88, + "d_min_m": 79.07514169000936, + "d_src": "H at albedo 0.5", + "A2": -1.416063818498666e-13, + "A2_snr": -3.2530756225560897, + "xi": 0.01647638969588973, + "xi_typ": 0.12454979897003243, + "t_j": 5.651211173114892, + "q": 0.7400462581061444, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6618", + "n_obs": 75, + "cond": "0" + }, + { + "name": "(2006 RH120)", + "pdes": "2006 RH120", + "cls": "APO", + "H": 29.5, + "d_min_m": 2.366137501137964, + "d_src": "H at albedo 0.5", + "A2": -4.616415596097852e-11, + "A2_snr": -6.689487894649836, + "xi": 0.16072525684200245, + "xi_typ": 1.2149687400312028, + "t_j": 5.926238233276627, + "q": 1.007921244496134, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": 0.04583, + "A1_snr": 17.82223708019367, + "A3_snr": -3.4434940300513674, + "verdict": null, + "arc": "284", + "n_obs": 136, + "cond": "2" + }, + { + "name": "(2006 UE17)", + "pdes": "2006 UE17", + "cls": "APO", + "H": 21.93, + "d_min_m": 77.27517171183159, + "d_src": "H at albedo 0.5", + "A2": -1.858282996710205e-13, + "A2_snr": -2.8761538410620724, + "xi": 0.021129590580514536, + "xi_typ": 0.1597246913732982, + "t_j": 5.299883845946448, + "q": 0.7850057850484979, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7147", + "n_obs": 105, + "cond": "0" + }, + { + "name": "(2006 WB)", + "pdes": "2006 WB", + "cls": "ATE", + "H": 23.18, + "d_min_m": 43.45502246474315, + "d_src": "H at albedo 0.5", + "A2": -7.306461675607367e-14, + "A2_snr": -14.956932805746913, + "xi": 0.004671822559815029, + "xi_typ": 0.035315659036262124, + "t_j": 6.886192225185328, + "q": 0.7033018430138839, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6600", + "n_obs": 330, + "cond": "0" + }, + { + "name": "(2007 AM)", + "pdes": "2007 AM", + "cls": "ATE", + "H": 21.82, + "d_min_m": 81.29053443398972, + "d_src": "H at albedo 0.5", + "A2": -7.402370109620884e-14, + "A2_snr": -4.3187690254497575, + "xi": 0.008854214204214495, + "xi_typ": 0.06693156811213491, + "t_j": 7.192273740842207, + "q": 0.4256545956041498, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5501", + "n_obs": 98, + "cond": "1" + }, + { + "name": "(2007 CT26)", + "pdes": "2007 CT26", + "cls": "ATE", + "H": 23.55, + "d_min_m": 36.64713084394533, + "d_src": "H at albedo 0.5", + "A2": -1.417442521373126e-13, + "A2_snr": -3.7548146261539763, + "xi": 0.0076433665211650004, + "xi_typ": 0.05777841998376998, + "t_j": 6.8310155969421364, + "q": 0.5242872115268581, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6963", + "n_obs": 118, + "cond": "0" + }, + { + "name": "(2007 DG8)", + "pdes": "2007 DG8", + "cls": "APO", + "H": 25.09, + "d_min_m": 18.031837244512246, + "d_src": "H at albedo 0.5", + "A2": -4.185802790085204e-13, + "A2_snr": -14.315331019443244, + "xi": 0.011106008256477038, + "xi_typ": 0.08395353115790938, + "t_j": 4.779043927466812, + "q": 0.8503300677923769, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6948", + "n_obs": 74, + "cond": "0" + }, + { + "name": "(2007 EC)", + "pdes": "2007 EC", + "cls": "ATE", + "H": 22.23, + "d_min_m": 67.30386096860947, + "d_src": "H at albedo 0.5", + "A2": -8.767784993242775e-14, + "A2_snr": -4.5055421342460305, + "xi": 0.008682986388365245, + "xi_typ": 0.06563720748849525, + "t_j": 6.4264131023845, + "q": 0.746621273879005, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6212", + "n_obs": 258, + "cond": "0" + }, + { + "name": "(2007 EG)", + "pdes": "2007 EG", + "cls": "ATE", + "H": 24.58, + "d_min_m": 22.8055199748187, + "d_src": "H at albedo 0.5", + "A2": -4.179161683853932e-13, + "A2_snr": -19.109106922057304, + "xi": 0.014023886957177123, + "xi_typ": 0.10601062086620851, + "t_j": 7.598307289584932, + "q": 0.4769268944839937, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6945", + "n_obs": 148, + "cond": "0" + }, + { + "name": "(2007 PB8)", + "pdes": "2007 PB8", + "cls": "ATE", + "H": 21.36, + "d_min_m": 100.4708273970221, + "d_src": "H at albedo 0.5", + "A2": -7.671593827901414e-14, + "A2_snr": -6.517921688956172, + "xi": 0.011341352003982383, + "xi_typ": 0.08573256266794688, + "t_j": 6.6151795722084215, + "q": 0.4885671359209157, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8787", + "n_obs": 100, + "cond": "0" + }, + { + "name": "(2007 RY19)", + "pdes": "2007 RY19", + "cls": "APO", + "H": 22.75, + "d_min_m": 52.97122040556835, + "d_src": "H at albedo 0.5", + "A2": -1.280260062174087e-13, + "A2_snr": -4.48113427432302, + "xi": 0.009978779512419692, + "xi_typ": 0.07543248279373964, + "t_j": 5.569365297670668, + "q": 0.8266532657220126, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5111", + "n_obs": 67, + "cond": "0" + }, + { + "name": "(2007 SW2)", + "pdes": "2007 SW2", + "cls": "ATE", + "H": 21.46, + "d_min_m": 95.94889527559556, + "d_src": "H at albedo 0.5", + "A2": 5.805073645807451e-14, + "A2_snr": 4.8578022140648125, + "xi": 0.008195717168620715, + "xi_typ": 0.06195379841140807, + "t_j": 6.438554137559954, + "q": 0.487353711764403, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6901", + "n_obs": 116, + "cond": "0" + }, + { + "name": "(2007 TF15)", + "pdes": "2007 TF15", + "cls": "AMO", + "H": 24.69, + "d_min_m": 21.67903660988668, + "d_src": "H at albedo 0.5", + "A2": -2.275085092812887e-13, + "A2_snr": -10.89600140236057, + "xi": 0.007257330036939043, + "xi_typ": 0.054860258457314015, + "t_j": 5.613049568952967, + "q": 1.059247563177669, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5112", + "n_obs": 76, + "cond": "0" + }, + { + "name": "(2007 TQ24)", + "pdes": "2007 TQ24", + "cls": "ATE", + "H": 22.06, + "d_min_m": 72.78468030489037, + "d_src": "H at albedo 0.5", + "A2": 7.719273743453483e-14, + "A2_snr": 8.788880500345535, + "xi": 0.008267147212853784, + "xi_typ": 0.062493758791919644, + "t_j": 7.204559238850809, + "q": 0.3653924942075309, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 52.3, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6252", + "n_obs": 177, + "cond": "0" + }, + { + "name": "(2007 TF68)", + "pdes": "2007 TF68", + "cls": "AMO", + "H": 22.62, + "d_min_m": 56.23930936398632, + "d_src": "H at albedo 0.5", + "A2": -2.024966032285797e-13, + "A2_snr": -14.170511072678774, + "xi": 0.016757027077144646, + "xi_typ": 0.12667121816828653, + "t_j": 4.598291077214474, + "q": 1.033049333019468, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7329", + "n_obs": 167, + "cond": "0" + }, + { + "name": "(2007 US12)", + "pdes": "2007 US12", + "cls": "ATE", + "H": 22.13, + "d_min_m": 70.47579421427957, + "d_src": "H at albedo 0.5", + "A2": -1.151552011291422e-13, + "A2_snr": -3.2705254509838735, + "xi": 0.011941607348621859, + "xi_typ": 0.0902700665680995, + "t_j": 6.448565835171117, + "q": 0.4398010019996683, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5148", + "n_obs": 98, + "cond": "0" + }, + { + "name": "(2007 WQ3)", + "pdes": "2007 WQ3", + "cls": "AMO", + "H": 21.16, + "d_min_m": 110.1640715893001, + "d_src": "H at albedo 0.5", + "A2": -7.008261023842922e-14, + "A2_snr": -3.562918669976066, + "xi": 0.01136029208537906, + "xi_typ": 0.08587573622562383, + "t_j": 4.759957966441222, + "q": 1.123985717502779, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5891", + "n_obs": 163, + "cond": "0" + }, + { + "name": "(2007 XB23)", + "pdes": "2007 XB23", + "cls": "APO", + "H": 27.1, + "d_min_m": 7.14562101726933, + "d_src": "H at albedo 0.5", + "A2": -2.000032207129024e-13, + "A2_snr": -3.2922340858090924, + "xi": 0.0021028883652113506, + "xi_typ": 0.015896341855086867, + "t_j": 5.940736981836512, + "q": 0.9848496047902744, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6208", + "n_obs": 22, + "cond": "0" + }, + { + "name": "(2008 CO)", + "pdes": "2008 CO", + "cls": "AMO", + "H": 22.59, + "d_min_m": 57.02167609011321, + "d_src": "H at albedo 0.5", + "A2": -9.415122175596613e-14, + "A2_snr": -5.016048042406294, + "xi": 0.007899601596157987, + "xi_typ": 0.05971537508549407, + "t_j": 5.365219145765613, + "q": 1.162435889371, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6801", + "n_obs": 137, + "cond": "0" + }, + { + "name": "(2008 CE119)", + "pdes": "2008 CE119", + "cls": "APO", + "H": 25.55, + "d_min_m": 14.589485569186857, + "d_src": "H at albedo 0.5", + "A2": -2.033197184354903e-13, + "A2_snr": -4.051807860412321, + "xi": 0.004364743515854754, + "xi_typ": 0.03299435965580967, + "t_j": 5.2471899669354585, + "q": 0.9952024081846674, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6027", + "n_obs": 62, + "cond": "0" + }, + { + "name": "(2008 DB)", + "pdes": "2008 DB", + "cls": "APO", + "H": 25.8, + "d_min_m": 13.002892700426536, + "d_src": "H at albedo 0.5", + "A2": -1.040633972165397e-12, + "A2_snr": -7.323251035646708, + "xi": 0.019910273622499378, + "xi_typ": 0.15050752154394992, + "t_j": 5.811306182143463, + "q": 0.8081325540836828, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4769", + "n_obs": 74, + "cond": "1" + }, + { + "name": "(2008 GU20)", + "pdes": "2008 GU20", + "cls": "AMO", + "H": 23.16, + "d_min_m": 43.85710683706923, + "d_src": "H at albedo 0.5", + "A2": 7.913576904888271e-14, + "A2_snr": 4.860919474747095, + "xi": 0.0051068377035488575, + "xi_typ": 0.03860406442730992, + "t_j": 3.80619640711938, + "q": 1.131630430011186, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8778", + "n_obs": 84, + "cond": "0" + }, + { + "name": "(2008 KV2)", + "pdes": "2008 KV2", + "cls": "ATE", + "H": 21.25, + "d_min_m": 105.69147985314103, + "d_src": "H at albedo 0.5", + "A2": -4.067445634887838e-14, + "A2_snr": -4.95365440858341, + "xi": 0.006325589221516551, + "xi_typ": 0.047816959931667014, + "t_j": 6.8538022106397225, + "q": 0.4998221002519349, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.038, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6582", + "n_obs": 337, + "cond": "0" + }, + { + "name": "(2008 LG2)", + "pdes": "2008 LG2", + "cls": "ATE", + "H": 25.34, + "d_min_m": 16.070891860446558, + "d_src": "H at albedo 0.5", + "A2": -5.797117314154492e-13, + "A2_snr": -4.863353451471888, + "xi": 0.013708543610394277, + "xi_typ": 0.10362684922853362, + "t_j": 6.900320453120406, + "q": 0.6555968744343992, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5490", + "n_obs": 119, + "cond": "0" + }, + { + "name": "(2008 UW91)", + "pdes": "2008 UW91", + "cls": "APO", + "H": 22.15, + "d_min_m": 69.82966824919716, + "d_src": "H at albedo 0.5", + "A2": -1.341092889611565e-13, + "A2_snr": -3.6422946485919745, + "xi": 0.013779646892284612, + "xi_typ": 0.10416433951791178, + "t_j": 5.299776050490451, + "q": 0.4914182742335166, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5870", + "n_obs": 104, + "cond": "0" + }, + { + "name": "(2008 WT62)", + "pdes": "2008 WT62", + "cls": "ATE", + "H": 23.11, + "d_min_m": 44.878670088081265, + "d_src": "H at albedo 0.5", + "A2": -3.064384626837058e-13, + "A2_snr": -5.035137408539366, + "xi": 0.020235899031898416, + "xi_typ": 0.15296901826918832, + "t_j": 6.616693947701968, + "q": 0.5713103416511417, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3645", + "n_obs": 43, + "cond": "1" + }, + { + "name": "(2009 BD)", + "pdes": "2009 BD", + "cls": "APO", + "H": 28.1, + "d_min_m": 4.508582061718111, + "d_src": "H at albedo 0.5", + "A2": -1.14638955920583e-12, + "A2_snr": -13.696410504251254, + "xi": 0.0076052142087920235, + "xi_typ": 0.05749001561096727, + "t_j": 5.800563434492452, + "q": 1.006986073126903, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": 6.587608116511697, + "A3_snr": null, + "verdict": null, + "arc": "885", + "n_obs": 180, + "cond": "1" + }, + { + "name": "(2009 HG)", + "pdes": "2009 HG", + "cls": "AMO", + "H": 24.34, + "d_min_m": 25.470647106400424, + "d_src": "H at albedo 0.5", + "A2": -1.638466362993393e-13, + "A2_snr": -3.5821302207988475, + "xi": 0.006140684136652134, + "xi_typ": 0.046419208872516896, + "t_j": 4.807548268423847, + "q": 1.061403855819123, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5819", + "n_obs": 101, + "cond": "0" + }, + { + "name": "(2009 JR2)", + "pdes": "2009 JR2", + "cls": "AMO", + "H": 22.95, + "d_min_m": 48.31032718378928, + "d_src": "H at albedo 0.5", + "A2": -1.456505277575069e-13, + "A2_snr": -4.29520872183742, + "xi": 0.01035359783057032, + "xi_typ": 0.0782658429556198, + "t_j": 5.070450439284621, + "q": 1.026098938978224, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5297", + "n_obs": 70, + "cond": "0" + }, + { + "name": "(2009 MW)", + "pdes": "2009 MW", + "cls": "ATE", + "H": 20.86, + "d_min_m": 126.48527775409691, + "d_src": "H at albedo 0.5", + "A2": -5.200436863110344e-14, + "A2_snr": -3.6987459908323927, + "xi": 0.009678745201917747, + "xi_typ": 0.07316443659266855, + "t_j": 6.445908257138404, + "q": 0.6395763373703891, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5140", + "n_obs": 146, + "cond": "0" + }, + { + "name": "(2009 OS5)", + "pdes": "2009 OS5", + "cls": "AMO", + "H": 24.4, + "d_min_m": 24.77650126055383, + "d_src": "H at albedo 0.5", + "A2": -3.260323694904692e-13, + "A2_snr": -9.099424211288563, + "xi": 0.011886115584359416, + "xi_typ": 0.08985058825938338, + "t_j": 5.466482011459662, + "q": 1.033966510734172, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4071", + "n_obs": 113, + "cond": "0" + }, + { + "name": "(2009 UG)", + "pdes": "2009 UG", + "cls": "ATE", + "H": 23.5, + "d_min_m": 37.50075217980511, + "d_src": "H at albedo 0.5", + "A2": 9.419279723194275e-14, + "A2_snr": 26.706208458163523, + "xi": 0.005197529023429875, + "xi_typ": 0.03928962636581672, + "t_j": 7.320559865423664, + "q": 0.4922156888875206, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.88, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5114", + "n_obs": 279, + "cond": "0" + }, + { + "name": "(2009 WB105)", + "pdes": "2009 WB105", + "cls": "ATE", + "H": 23.5, + "d_min_m": 37.50075217980511, + "d_src": "H at albedo 0.5", + "A2": 1.440689781795952e-13, + "A2_snr": 23.971543790282063, + "xi": 0.007949681052792822, + "xi_typ": 0.06009394019420555, + "t_j": 6.906243540034486, + "q": 0.6170700063887308, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5480", + "n_obs": 196, + "cond": "0" + }, + { + "name": "(2010 FX9)", + "pdes": "2010 FX9", + "cls": "APO", + "H": 24.06, + "d_min_m": 30.0, + "d_src": "measured", + "A2": -2.347948792814765e-13, + "A2_snr": -10.780297487671097, + "xi": 0.01036451837482514, + "xi_typ": 0.04145807349930056, + "t_j": 5.463988898211289, + "q": 0.7163077591655912, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6014", + "n_obs": 107, + "cond": "0" + }, + { + "name": "(2010 GD35)", + "pdes": "2010 GD35", + "cls": "ATE", + "H": 24.62, + "d_min_m": 22.38927232477938, + "d_src": "H at albedo 0.5", + "A2": 1.896389263589951e-13, + "A2_snr": 14.83872663215924, + "xi": 0.006247506501689579, + "xi_typ": 0.04722671005065644, + "t_j": 7.470273588094462, + "q": 0.3968188238002381, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4380", + "n_obs": 70, + "cond": "1" + }, + { + "name": "(2010 RF12)", + "pdes": "2010 RF12", + "cls": "APO", + "H": 28.42, + "d_min_m": 3.8908096001097086, + "d_src": "H at albedo 0.5", + "A2": -2.121587352247006e-13, + "A2_snr": -0.998394048116238, + "xi": 0.0012146192130168079, + "xi_typ": 0.009181658215095598, + "t_j": 5.78860150089424, + "q": 0.8615539352960596, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": 0.5857795967878652, + "A3_snr": -10.654056727887427, + "verdict": null, + "arc": "4375", + "n_obs": 339, + "cond": "2" + }, + { + "name": "(2010 VQ)", + "pdes": "2010 VQ", + "cls": "ATE", + "H": 27.72, + "d_min_m": 5.3708123485572905, + "d_src": "H at albedo 0.5", + "A2": -8.542597525917424e-13, + "A2_snr": -15.364384039419829, + "xi": 0.006751016577998966, + "xi_typ": 0.05103288846359871, + "t_j": 6.839702123705895, + "q": 0.6910794444458552, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4411", + "n_obs": 61, + "cond": "2" + }, + { + "name": "(2010 VK139)", + "pdes": "2010 VK139", + "cls": "ATE", + "H": 23.71, + "d_min_m": 55.0, + "d_src": "measured", + "A2": -9.815438165570491e-14, + "A2_snr": -2.5769068431531874, + "xi": 0.007943495083089272, + "xi_typ": 0.03177398033235709, + "t_j": 7.3328925477057645, + "q": 0.5598666056250986, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.0299522, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4022", + "n_obs": 96, + "cond": "0" + }, + { + "name": "(2010 XN)", + "pdes": "2010 XN", + "cls": "APO", + "H": 24.17, + "d_min_m": 27.544822542389994, + "d_src": "H at albedo 0.5", + "A2": -1.830304775160072e-13, + "A2_snr": -10.549307061441338, + "xi": 0.0074182700938830535, + "xi_typ": 0.05607685093349237, + "t_j": 5.488107890858118, + "q": 0.7366225823959945, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4970", + "n_obs": 85, + "cond": "1" + }, + { + "name": "(2010 XA68)", + "pdes": "2010 XA68", + "cls": "APO", + "H": 21.72, + "d_min_m": 85.12163929214539, + "d_src": "H at albedo 0.5", + "A2": -8.956070865764939e-14, + "A2_snr": -4.37521781424765, + "xi": 0.011217517356739612, + "xi_typ": 0.08479646072423892, + "t_j": 4.954863006753901, + "q": 0.8086557960444837, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5476", + "n_obs": 93, + "cond": "0" + }, + { + "name": "(2010 XX72)", + "pdes": "2010 XX72", + "cls": "ATE", + "H": 22.06, + "d_min_m": 72.78468030489037, + "d_src": "H at albedo 0.5", + "A2": -1.26238955056499e-13, + "A2_snr": -4.3802552066793545, + "xi": 0.013519873243697187, + "xi_typ": 0.10220063531411118, + "t_j": 6.556802803622543, + "q": 0.6470491594071993, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4394", + "n_obs": 139, + "cond": "0" + }, + { + "name": "(2011 AA37)", + "pdes": "2011 AA37", + "cls": "AMO", + "H": 22.9, + "d_min_m": 49.435619261961975, + "d_src": "H at albedo 0.5", + "A2": -1.486136817995751e-13, + "A2_snr": -11.327262332284688, + "xi": 0.010810306874074256, + "xi_typ": 0.08171823881455005, + "t_j": 5.663677621126276, + "q": 1.077301977097684, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 10.0, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5701", + "n_obs": 182, + "cond": "0" + }, + { + "name": "(2011 CL50)", + "pdes": "2011 CL50", + "cls": "ATE", + "H": 27.3, + "d_min_m": 6.516883821679031, + "d_src": "H at albedo 0.5", + "A2": 4.381563756003236e-12, + "A2_snr": 14.943941869042414, + "xi": 0.04201538663268081, + "xi_typ": 0.31760646933800263, + "t_j": 6.724370919269913, + "q": 0.7503817631518803, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3628", + "n_obs": 131, + "cond": "0" + }, + { + "name": "(2011 DP)", + "pdes": "2011 DP", + "cls": "ATE", + "H": 22.71, + "d_min_m": 53.956028919828434, + "d_src": "H at albedo 0.5", + "A2": 8.635457381021389e-14, + "A2_snr": 4.071408477614988, + "xi": 0.006855901572909927, + "xi_typ": 0.05182574450016065, + "t_j": 7.0970893127996035, + "q": 0.3315381364841547, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5483", + "n_obs": 43, + "cond": "2" + }, + { + "name": "(2011 EP51)", + "pdes": "2011 EP51", + "cls": "ATE", + "H": 25.2, + "d_min_m": 17.1411509230632, + "d_src": "H at albedo 0.5", + "A2": -3.26413448649107e-13, + "A2_snr": -17.00955959609729, + "xi": 0.008232794457248083, + "xi_typ": 0.062234076368541176, + "t_j": 7.032853030925976, + "q": 0.5742369062252484, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3240", + "n_obs": 318, + "cond": "0" + }, + { + "name": "(2011 JW10)", + "pdes": "2011 JW10", + "cls": "AMO", + "H": 23.15, + "d_min_m": 44.05954204444629, + "d_src": "H at albedo 0.5", + "A2": -1.861924440350947e-13, + "A2_snr": -5.0761298810004005, + "xi": 0.012070945290394014, + "xi_typ": 0.09124776950813973, + "t_j": 4.8818563805221755, + "q": 1.028192268200837, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5458", + "n_obs": 58, + "cond": "0" + }, + { + "name": "(2011 KE3)", + "pdes": "2011 KE3", + "cls": "AMO", + "H": 23.98, + "d_min_m": 30.063530383087443, + "d_src": "H at albedo 0.5", + "A2": -1.636329432143826e-13, + "A2_snr": -4.481866426030748, + "xi": 0.00723852320264501, + "xi_typ": 0.054718092153055696, + "t_j": 4.331592977231411, + "q": 1.128648788436667, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5129", + "n_obs": 79, + "cond": "0" + }, + { + "name": "(2011 MD)", + "pdes": "2011 MD", + "cls": "AMO", + "H": 27.98, + "d_min_m": 4.7647484645503155, + "d_src": "H at albedo 0.5", + "A2": -6.279626034238839e-13, + "A2_snr": -0.1657768224455871, + "xi": 0.004402638328683817, + "xi_typ": 0.033280817515024076, + "t_j": 5.821696316588608, + "q": 1.017260098172908, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.19372, + "A1_snr": 2.9944858423339857, + "A3_snr": null, + "verdict": null, + "arc": "967", + "n_obs": 532, + "cond": "2" + }, + { + "name": "(2011 PU1)", + "pdes": "2011 PU1", + "cls": "APO", + "H": 25.6, + "d_min_m": 14.257388332807077, + "d_src": "H at albedo 0.5", + "A2": -3.03037037395545e-13, + "A2_snr": -6.065593222488891, + "xi": 0.006357332704533802, + "xi_typ": 0.04805691810826888, + "t_j": 4.957639428571625, + "q": 0.9832912440889462, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2090", + "n_obs": 110, + "cond": "0" + }, + { + "name": "(2011 WA)", + "pdes": "2011 WA", + "cls": "ATE", + "H": 21.68, + "d_min_m": 86.70416872002806, + "d_src": "H at albedo 0.5", + "A2": -5.865949524221587e-14, + "A2_snr": -6.781444536672356, + "xi": 0.00748372034941088, + "xi_typ": 0.05657160836027025, + "t_j": 6.825715443481436, + "q": 0.6033302425430563, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5116", + "n_obs": 279, + "cond": "0" + }, + { + "name": "(2012 BV26)", + "pdes": "2012 BV26", + "cls": "APO", + "H": 22.11, + "d_min_m": 71.12789870930823, + "d_src": "H at albedo 0.5", + "A2": 8.907016174728059e-14, + "A2_snr": 5.172483260585399, + "xi": 0.009322050898219397, + "xi_typ": 0.07046808110221374, + "t_j": 5.45413209137626, + "q": 0.9639573709830286, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4376", + "n_obs": 115, + "cond": "0" + }, + { + "name": "(2012 BA35)", + "pdes": "2012 BA35", + "cls": "APO", + "H": 23.75, + "d_min_m": 33.42258056097243, + "d_src": "H at albedo 0.5", + "A2": -1.491571534850425e-13, + "A2_snr": -2.112408348463992, + "xi": 0.00733539180174355, + "xi_typ": 0.05545034993324413, + "t_j": 5.755725080904716, + "q": 0.946628478314622, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3932", + "n_obs": 131, + "cond": "0" + }, + { + "name": "(2012 BB124)", + "pdes": "2012 BB124", + "cls": "APO", + "H": 21.1, + "d_min_m": 113.25046106177199, + "d_src": "H at albedo 0.5", + "A2": 6.797864163063629e-14, + "A2_snr": 9.656057049806291, + "xi": 0.011327960109106836, + "xi_typ": 0.08563132945816224, + "t_j": 5.391617523317124, + "q": 0.91091799694555, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "16893", + "n_obs": 219, + "cond": "0" + }, + { + "name": "(2012 HN13)", + "pdes": "2012 HN13", + "cls": "APO", + "H": 22.96, + "d_min_m": 48.088361392768526, + "d_src": "H at albedo 0.5", + "A2": -9.904852410276796e-14, + "A2_snr": -4.602626584701113, + "xi": 0.007008534854222951, + "xi_typ": 0.05297954365486356, + "t_j": 4.681237988268099, + "q": 0.9744373337613883, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3810", + "n_obs": 180, + "cond": "0" + }, + { + "name": "(2012 HL31)", + "pdes": "2012 HL31", + "cls": "ATE", + "H": 22.43, + "d_min_m": 61.38185073387498, + "d_src": "H at albedo 0.5", + "A2": -1.255540044230574e-13, + "A2_snr": -6.418916381546902, + "xi": 0.011339914955277553, + "xi_typ": 0.08572169960081868, + "t_j": 6.582103746278035, + "q": 0.555653852630316, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3652", + "n_obs": 92, + "cond": "0" + }, + { + "name": "(2012 LA)", + "pdes": "2012 LA", + "cls": "AMO", + "H": 27.6, + "d_min_m": 5.675968528656265, + "d_src": "H at albedo 0.5", + "A2": 1.898052969710651e-12, + "A2_snr": 0.24099199716996583, + "xi": 0.01585212751501825, + "xi_typ": 0.11983082044577886, + "t_j": 5.893237886460236, + "q": 1.017961510043251, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": 5.659961828527827, + "A3_snr": null, + "verdict": null, + "arc": "179", + "n_obs": 103, + "cond": "2" + }, + { + "name": "(2012 TC4)", + "pdes": "2012 TC4", + "cls": "APO", + "H": 26.71, + "d_min_m": 8.551454292727092, + "d_src": "H at albedo 0.5", + "A2": -2.655592804997814e-13, + "A2_snr": -4.057437440791159, + "xi": 0.003341494204177804, + "xi_typ": 0.025259321918909006, + "t_j": 4.231666299731407, + "q": 0.9661257637428332, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.204155, + "A1_snr": 2.9955221545385955, + "A3_snr": null, + "verdict": null, + "arc": "1897", + "n_obs": 805, + "cond": "0" + }, + { + "name": "(2012 TB53)", + "pdes": "2012 TB53", + "cls": "AMO", + "H": 23.13, + "d_min_m": 44.467219967574486, + "d_src": "H at albedo 0.5", + "A2": -1.708667458657676e-13, + "A2_snr": -8.059752163479605, + "xi": 0.01117987061042015, + "xi_typ": 0.08451187807157598, + "t_j": 5.088615897942213, + "q": 1.052286226872554, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5106", + "n_obs": 49, + "cond": "0" + }, + { + "name": "(2012 UU136)", + "pdes": "2012 UU136", + "cls": "APO", + "H": 21.45, + "d_min_m": 96.39177525363137, + "d_src": "H at albedo 0.5", + "A2": 9.831501753182624e-14, + "A2_snr": 6.656399291254315, + "xi": 0.0139443761659376, + "xi_typ": 0.10540957578002066, + "t_j": 5.234912955986195, + "q": 0.9142712534056802, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7313", + "n_obs": 91, + "cond": "0" + }, + { + "name": "(2012 UR158)", + "pdes": "2012 UR158", + "cls": "APO", + "H": 20.67, + "d_min_m": 629.0, + "d_src": "measured", + "A2": -7.202400309280564e-12, + "A2_snr": -118.8514902521545, + "xi": 6.666028272965308, + "xi_typ": 26.664113091861232, + "t_j": 3.002782890103489, + "q": 0.3173757013808317, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5034", + "n_obs": 148, + "cond": "0" + }, + { + "name": "(2012 UK171)", + "pdes": "2012 UK171", + "cls": "ATE", + "H": 24.46, + "d_min_m": 24.10127281611019, + "d_src": "H at albedo 0.5", + "A2": -5.527816996019539e-14, + "A2_snr": -19.992104868063432, + "xi": 0.001960346698980443, + "xi_typ": 0.014818828139910424, + "t_j": 6.8508384401830575, + "q": 0.6671542210698035, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4446", + "n_obs": 286, + "cond": "0" + }, + { + "name": "(2012 VM6)", + "pdes": "2012 VM6", + "cls": "APO", + "H": 25.31, + "d_min_m": 16.294460236249698, + "d_src": "H at albedo 0.5", + "A2": -2.454476262058331e-13, + "A2_snr": -15.123082329379734, + "xi": 0.005884886147441869, + "xi_typ": 0.044485557828743354, + "t_j": 5.527430454686089, + "q": 0.9404857699909394, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6593", + "n_obs": 68, + "cond": "0" + }, + { + "name": "(2013 BA74)", + "pdes": "2013 BA74", + "cls": "APO", + "H": 25.4, + "d_min_m": 15.6329154408692, + "d_src": "H at albedo 0.5", + "A2": 3.645685115778328e-13, + "A2_snr": 0.797568391113176, + "xi": 0.008386068084768028, + "xi_typ": 0.06339271608557694, + "t_j": 4.001151617580869, + "q": 0.9742551376438074, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": 0.13362380638369167, + "A3_snr": 3.614559001792559, + "verdict": null, + "arc": "2559", + "n_obs": 99, + "cond": "4" + }, + { + "name": "(2013 GZ7)", + "pdes": "2013 GZ7", + "cls": "AMO", + "H": 24.0, + "d_min_m": 29.78790627981737, + "d_src": "H at albedo 0.5", + "A2": -6.216883440861686e-14, + "A2_snr": -7.7866776563898865, + "xi": 0.002724908689319167, + "xi_typ": 0.02059837353513566, + "t_j": 4.717158909251947, + "q": 1.136305936674721, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7353", + "n_obs": 89, + "cond": "0" + }, + { + "name": "(2013 JL22)", + "pdes": "2013 JL22", + "cls": "APO", + "H": 21.16, + "d_min_m": 110.1640715893001, + "d_src": "H at albedo 0.5", + "A2": -4.244218914380419e-14, + "A2_snr": -3.4035436362312903, + "xi": 0.006879818884829917, + "xi_typ": 0.05200654238407337, + "t_j": 5.150315443705178, + "q": 0.481467759634981, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8688", + "n_obs": 111, + "cond": "0" + }, + { + "name": "(2013 MD6)", + "pdes": "2013 MD6", + "cls": "ATE", + "H": 21.79, + "d_min_m": 82.42139841524181, + "d_src": "H at albedo 0.5", + "A2": -9.500637357251678e-14, + "A2_snr": -8.660562768688859, + "xi": 0.011522108754088253, + "xi_typ": 0.0870989552638794, + "t_j": 6.737593826156018, + "q": 0.4833378732610075, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8038", + "n_obs": 79, + "cond": "0" + }, + { + "name": "(2013 RB6)", + "pdes": "2013 RB6", + "cls": "AMO", + "H": 21.83, + "d_min_m": 80.91703835499425, + "d_src": "H at albedo 0.5", + "A2": -3.358319057345431e-14, + "A2_snr": -3.089529951559734, + "xi": 0.003998537586877469, + "xi_typ": 0.030226103036634592, + "t_j": 5.099954462946189, + "q": 1.21052658905872, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8062", + "n_obs": 144, + "cond": "0" + }, + { + "name": "(2013 XY20)", + "pdes": "2013 XY20", + "cls": "APO", + "H": 25.64, + "d_min_m": 13.997161668570472, + "d_src": "H at albedo 0.5", + "A2": 5.656670616384763e-13, + "A2_snr": 1.6735711882795157, + "xi": 0.011650380771198326, + "xi_typ": 0.08806860057085619, + "t_j": 5.5141550398697206, + "q": 1.010181063564416, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": -2.3648975219645, + "A3_snr": -10.010608820969823, + "verdict": null, + "arc": "2250", + "n_obs": 72, + "cond": "2" + }, + { + "name": "(2014 EH45)", + "pdes": "2014 EH45", + "cls": "APO", + "H": 22.84, + "d_min_m": 50.82062230927199, + "d_src": "H at albedo 0.5", + "A2": -1.604781344194833e-13, + "A2_snr": -4.594278111064509, + "xi": 0.012000382690001858, + "xi_typ": 0.0907143663867121, + "t_j": 5.251216296952654, + "q": 0.9534293793743881, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8066", + "n_obs": 61, + "cond": "0" + }, + { + "name": "(2014 NV63)", + "pdes": "2014 NV63", + "cls": "APO", + "H": 23.23, + "d_min_m": 42.465865390017946, + "d_src": "H at albedo 0.5", + "A2": -2.079625545908469e-13, + "A2_snr": -4.757779789312444, + "xi": 0.012994643592482065, + "xi_typ": 0.0982302723475043, + "t_j": 5.141403978382847, + "q": 0.6413235178488439, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4383", + "n_obs": 48, + "cond": "0" + }, + { + "name": "(2014 QH33)", + "pdes": "2014 QH33", + "cls": "APO", + "H": 24.44, + "d_min_m": 24.32427914778077, + "d_src": "H at albedo 0.5", + "A2": -1.782870367836159e-13, + "A2_snr": -3.821801431588765, + "xi": 0.006381150619088017, + "xi_typ": 0.04823696461872212, + "t_j": 5.694222340927873, + "q": 0.8841866522506473, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6207", + "n_obs": 124, + "cond": "0" + }, + { + "name": "(2014 RQ17)", + "pdes": "2014 RQ17", + "cls": "APO", + "H": 22.3, + "d_min_m": 65.1688382167903, + "d_src": "H at albedo 0.5", + "A2": -4.242204892423601e-14, + "A2_snr": -11.468518227692892, + "xi": 0.004067905630404709, + "xi_typ": 0.030750476156943683, + "t_j": 3.9874578545548207, + "q": 0.9851302897119514, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.5216, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "24907", + "n_obs": 150, + "cond": "0" + }, + { + "name": "(2014 TG17)", + "pdes": "2014 TG17", + "cls": "AMO", + "H": 22.45, + "d_min_m": 60.81909854376283, + "d_src": "H at albedo 0.5", + "A2": -7.938873877021877e-14, + "A2_snr": -3.048722687028371, + "xi": 0.007104575458940941, + "xi_typ": 0.05370554238585802, + "t_j": 3.1553412657702493, + "q": 1.056051427213374, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5841", + "n_obs": 138, + "cond": "0" + }, + { + "name": "(2014 YD)", + "pdes": "2014 YD", + "cls": "APO", + "H": 24.29, + "d_min_m": 26.063934692835662, + "d_src": "H at albedo 0.5", + "A2": -3.681312638590909e-13, + "A2_snr": -4.4460297567523055, + "xi": 0.014118284549268017, + "xi_typ": 0.10672419958916803, + "t_j": 5.76271456353011, + "q": 0.9788745145791149, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 2.12, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3879", + "n_obs": 167, + "cond": "0" + }, + { + "name": "(2015 BM510)", + "pdes": "2015 BM510", + "cls": "ATE", + "H": 25.04, + "d_min_m": 18.451852690256473, + "d_src": "H at albedo 0.5", + "A2": -2.198350183737618e-13, + "A2_snr": -4.323205867723929, + "xi": 0.005968649865194195, + "xi_typ": 0.045118752017494386, + "t_j": 6.336728358865399, + "q": 0.8328012027827526, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.806, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8403", + "n_obs": 68, + "cond": "1" + }, + { + "name": "(2015 CL)", + "pdes": "2015 CL", + "cls": "ATE", + "H": 25.52, + "d_min_m": 14.792445530639544, + "d_src": "H at albedo 0.5", + "A2": -5.901405919677342e-13, + "A2_snr": -31.745056049905017, + "xi": 0.012845017990040014, + "xi_typ": 0.09709920910799032, + "t_j": 7.720858598393319, + "q": 0.3189819566393469, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3657", + "n_obs": 74, + "cond": "1" + }, + { + "name": "(2015 EG)", + "pdes": "2015 EG", + "cls": "ATE", + "H": 25.61, + "d_min_m": 14.191881583760628, + "d_src": "H at albedo 0.5", + "A2": -2.028443287738129e-13, + "A2_snr": -10.101809201883112, + "xi": 0.004235864887482378, + "xi_typ": 0.03202012879871132, + "t_j": 6.7862953153286, + "q": 0.5561340540151934, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 1.29, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2899", + "n_obs": 151, + "cond": "0" + }, + { + "name": "(2015 EX)", + "pdes": "2015 EX", + "cls": "APO", + "H": 26.16, + "d_min_m": 11.01640715893001, + "d_src": "H at albedo 0.5", + "A2": 1.445849779000458e-12, + "A2_snr": 4.07971156602838, + "xi": 0.023437020603463914, + "xi_typ": 0.17716722282589276, + "t_j": 4.047400668123127, + "q": 0.8907057313407475, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4025", + "n_obs": 124, + "cond": "1" + }, + { + "name": "(2015 EQ7)", + "pdes": "2015 EQ7", + "cls": "AMO", + "H": 23.6, + "d_min_m": 35.81294030194105, + "d_src": "H at albedo 0.5", + "A2": -2.269636377292318e-13, + "A2_snr": -3.4176123735767474, + "xi": 0.011960119322500726, + "xi_typ": 0.09041000393712925, + "t_j": 5.493937574116156, + "q": 1.073054363770273, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4225", + "n_obs": 72, + "cond": "0" + }, + { + "name": "(2015 FS)", + "pdes": "2015 FS", + "cls": "AMO", + "H": 24.03, + "d_min_m": 29.37920088368897, + "d_src": "H at albedo 0.5", + "A2": -2.686256050794836e-13, + "A2_snr": -4.162801876328586, + "xi": 0.011612524295279517, + "xi_typ": 0.08778243251144338, + "t_j": 4.6961265501149265, + "q": 1.090611327045452, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3611", + "n_obs": 53, + "cond": "0" + }, + { + "name": "(2015 JJ)", + "pdes": "2015 JJ", + "cls": "APO", + "H": 22.1, + "d_min_m": 71.45621017269329, + "d_src": "H at albedo 0.5", + "A2": -9.41588993924825e-14, + "A2_snr": -4.636085642170483, + "xi": 0.009900123273404067, + "xi_typ": 0.07483789751517107, + "t_j": 5.757927564676892, + "q": 0.890996807145121, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "8552", + "n_obs": 300, + "cond": "0" + }, + { + "name": "(2015 KJ19)", + "pdes": "2015 KJ19", + "cls": "APO", + "H": 22.51, + "d_min_m": 59.16160926106289, + "d_src": "H at albedo 0.5", + "A2": 2.575295853018109e-13, + "A2_snr": 8.413250091532536, + "xi": 0.0224184900042962, + "xi_typ": 0.16946785520272883, + "t_j": 3.3419140109455605, + "q": 0.5306441493334527, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3299", + "n_obs": 242, + "cond": "0" + }, + { + "name": "(2015 LA2)", + "pdes": "2015 LA2", + "cls": "ATE", + "H": 23.01, + "d_min_m": 46.99373664778783, + "d_src": "H at albedo 0.5", + "A2": -9.116182384991087e-14, + "A2_snr": -15.09551645138448, + "xi": 0.006303652070152651, + "xi_typ": 0.047651130654575415, + "t_j": 6.676720938780118, + "q": 0.6350046612945345, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5536", + "n_obs": 122, + "cond": "0" + }, + { + "name": "(2015 MC)", + "pdes": "2015 MC", + "cls": "APO", + "H": 24.11, + "d_min_m": 28.316526502578427, + "d_src": "H at albedo 0.5", + "A2": -2.188380292513553e-13, + "A2_snr": -4.262524917244941, + "xi": 0.00911805114557599, + "xi_typ": 0.06892598792217619, + "t_j": 5.7508518411648994, + "q": 0.7867405847568951, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4642", + "n_obs": 121, + "cond": "0" + }, + { + "name": "(2015 MB54)", + "pdes": "2015 MB54", + "cls": "APO", + "H": 23.99, + "d_min_m": 29.925401008037483, + "d_src": "H at albedo 0.5", + "A2": -7.774034295875256e-14, + "A2_snr": -3.2650291036855337, + "xi": 0.003423148037888407, + "xi_typ": 0.025876566883461235, + "t_j": 4.9429198971075925, + "q": 0.9948922139592778, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3199", + "n_obs": 134, + "cond": "0" + }, + { + "name": "(2015 NJ24)", + "pdes": "2015 NJ24", + "cls": "APO", + "H": 21.39, + "d_min_m": 99.09231596607704, + "d_src": "H at albedo 0.5", + "A2": -1.295565686535924e-13, + "A2_snr": -4.994470649714433, + "xi": 0.018890291772750707, + "xi_typ": 0.1427971834975652, + "t_j": 5.476867943349399, + "q": 0.8201009026146796, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4420", + "n_obs": 99, + "cond": "0" + }, + { + "name": "(2015 SD)", + "pdes": "2015 SD", + "cls": "ATE", + "H": 24.3, + "d_min_m": 25.944181790744988, + "d_src": "H at albedo 0.5", + "A2": -3.841452912629689e-13, + "A2_snr": -48.78035444609129, + "xi": 0.014664752677990925, + "xi_typ": 0.11085511035494984, + "t_j": 6.776070007395755, + "q": 0.6325650594873294, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4397", + "n_obs": 102, + "cond": "0" + }, + { + "name": "(2015 TC25)", + "pdes": "2015 TC25", + "cls": "APO", + "H": 29.34, + "d_min_m": 2.5470647106400426, + "d_src": "H at albedo 0.5", + "A2": -5.27364458235883e-12, + "A2_snr": -1.901097542306716, + "xi": 0.01976469359436152, + "xi_typ": 0.14940703997163404, + "t_j": 5.940206940026915, + "q": 0.9088129628188475, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.03715, + "A1_snr": 7.494044905462914, + "A3_snr": null, + "verdict": null, + "arc": "562", + "n_obs": 48, + "cond": "2" + }, + { + "name": "(2015 TT238)", + "pdes": "2015 TT238", + "cls": "ATE", + "H": 24.62, + "d_min_m": 22.38927232477938, + "d_src": "H at albedo 0.5", + "A2": -5.643196466226072e-13, + "A2_snr": -21.375744190250273, + "xi": 0.01859107056233698, + "xi_typ": 0.14053528375542107, + "t_j": 6.661315681200021, + "q": 0.6636688522078183, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3643", + "n_obs": 48, + "cond": "1" + }, + { + "name": "(2015 XF261)", + "pdes": "2015 XF261", + "cls": "ATE", + "H": 25.25, + "d_min_m": 16.750970692038422, + "d_src": "H at albedo 0.5", + "A2": -4.048498794947963e-13, + "A2_snr": -9.101840815980134, + "xi": 0.009978683388546314, + "xi_typ": 0.07543175616555674, + "t_j": 6.082421746474931, + "q": 0.6740254860041054, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2991", + "n_obs": 73, + "cond": "1" + }, + { + "name": "(2015 XC352)", + "pdes": "2015 XC352", + "cls": "APO", + "H": 25.82, + "d_min_m": 12.883681463595607, + "d_src": "H at albedo 0.5", + "A2": -7.521671237763397e-13, + "A2_snr": -5.922575777766455, + "xi": 0.014259147974515581, + "xi_typ": 0.10778902699496741, + "t_j": 5.996245219886894, + "q": 0.8674340850108628, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1307", + "n_obs": 87, + "cond": "1" + }, + { + "name": "(2016 AG193)", + "pdes": "2016 AG193", + "cls": "AMO", + "H": 23.5, + "d_min_m": 37.50075217980511, + "d_src": "H at albedo 0.5", + "A2": -2.508765837956143e-13, + "A2_snr": -3.945841204712398, + "xi": 0.01384329124832965, + "xi_typ": 0.10464544562776326, + "t_j": 4.8326049896048895, + "q": 1.052420307689345, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3275", + "n_obs": 50, + "cond": "0" + }, + { + "name": "(2016 CA138)", + "pdes": "2016 CA138", + "cls": "ATE", + "H": 23.31, + "d_min_m": 40.929833576207955, + "d_src": "H at albedo 0.5", + "A2": -2.222150615364843e-13, + "A2_snr": -4.902163281193124, + "xi": 0.01338297666027366, + "xi_typ": 0.10116579441390243, + "t_j": 5.98801478153739, + "q": 0.9483022019485681, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 5.3197, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3647", + "n_obs": 272, + "cond": "0" + }, + { + "name": "(2016 CO246)", + "pdes": "2016 CO246", + "cls": "ATE", + "H": 25.8, + "d_min_m": 13.002892700426536, + "d_src": "H at albedo 0.5", + "A2": -7.321513943114906e-13, + "A2_snr": -4.236987235598904, + "xi": 0.014008128682848064, + "xi_typ": 0.10589149950916217, + "t_j": 6.0929568127760945, + "q": 0.8691222524592723, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1464", + "n_obs": 46, + "cond": "0" + }, + { + "name": "(2016 FT14)", + "pdes": "2016 FT14", + "cls": "ATE", + "H": 24.69, + "d_min_m": 21.67903660988668, + "d_src": "H at albedo 0.5", + "A2": 1.442104351259813e-13, + "A2_snr": 9.475061440603238, + "xi": 0.00460019155233377, + "xi_typ": 0.03477417951638664, + "t_j": 6.8378391518885575, + "q": 0.6367086555801958, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2970", + "n_obs": 69, + "cond": "0" + }, + { + "name": "(2016 GE1)", + "pdes": "2016 GE1", + "cls": "APO", + "H": 26.7, + "d_min_m": 8.590926012317615, + "d_src": "H at albedo 0.5", + "A2": -1.438847282803142e-12, + "A2_snr": -3.2865401617248557, + "xi": 0.018188376262012557, + "xi_typ": 0.13749120097530226, + "t_j": 3.579206917167504, + "q": 0.9910345824686271, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.009438, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1098", + "n_obs": 127, + "cond": "0" + }, + { + "name": "(2016 GC135)", + "pdes": "2016 GC135", + "cls": "AMO", + "H": 23.57, + "d_min_m": 36.31114792884604, + "d_src": "H at albedo 0.5", + "A2": -3.795068499785151e-13, + "A2_snr": -5.1091390681006335, + "xi": 0.020276773411645816, + "xi_typ": 0.15327799953720442, + "t_j": 4.929541247757178, + "q": 1.133821730734557, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3310", + "n_obs": 59, + "cond": "0" + }, + { + "name": "(2016 GW221)", + "pdes": "2016 GW221", + "cls": "ATE", + "H": 24.75, + "d_min_m": 21.08822267642648, + "d_src": "H at albedo 0.5", + "A2": -1.702054023944971e-13, + "A2_snr": -9.648832335288951, + "xi": 0.0052814426656630845, + "xi_typ": 0.03992395387711592, + "t_j": 7.0502173557638095, + "q": 0.6071339551081832, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": 0.2856, + "A1_snr": 0.531100821174071, + "A3_snr": 5.231574136028024, + "verdict": null, + "arc": "3300", + "n_obs": 209, + "cond": "3" + }, + { + "name": "(2016 NB1)", + "pdes": "2016 NB1", + "cls": "ATE", + "H": 23.9, + "d_min_m": 31.191767052261472, + "d_src": "H at albedo 0.5", + "A2": -1.714530010774622e-13, + "A2_snr": -30.742872705300737, + "xi": 0.007869086516632734, + "xi_typ": 0.05948470276646212, + "t_j": 7.508454812942602, + "q": 0.4306594974270578, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6595", + "n_obs": 117, + "cond": "1" + }, + { + "name": "(2016 NJ33)", + "pdes": "2016 NJ33", + "cls": "AMO", + "H": 25.53, + "d_min_m": 14.724480417075991, + "d_src": "H at albedo 0.5", + "A2": -5.486101259217607e-13, + "A2_snr": -2.873808936206185, + "xi": 0.011886200400579439, + "xi_typ": 0.08985122940974147, + "t_j": 4.93417530406314, + "q": 1.038475301587418, + "known": "dark comet", + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": 3.236134718047524, + "A3_snr": 5.234382928390366, + "verdict": null, + "arc": "2261", + "n_obs": 90, + "cond": "3" + }, + { + "name": "(2016 PC2)", + "pdes": "2016 PC2", + "cls": "ATE", + "H": 23.0, + "d_min_m": 47.210649880552225, + "d_src": "H at albedo 0.5", + "A2": -1.642575791899261e-13, + "A2_snr": -18.82176912913098, + "xi": 0.011410499251494344, + "xi_typ": 0.08625526672726481, + "t_j": 7.167150638788063, + "q": 0.4320838814267162, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3653", + "n_obs": 126, + "cond": "0" + }, + { + "name": "(2016 RT17)", + "pdes": "2016 RT17", + "cls": "AMO", + "H": 23.53, + "d_min_m": 36.98622257068166, + "d_src": "H at albedo 0.5", + "A2": -2.29836910906393e-13, + "A2_snr": -4.6638983544316766, + "xi": 0.01250832062080544, + "xi_typ": 0.09455401623346353, + "t_j": 4.6729248831299115, + "q": 1.14945778588094, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3628", + "n_obs": 54, + "cond": "0" + }, + { + "name": "(2016 RP40)", + "pdes": "2016 RP40", + "cls": "APO", + "H": 24.81, + "d_min_m": 20.51351006288432, + "d_src": "H at albedo 0.5", + "A2": -3.382049596070249e-13, + "A2_snr": -6.612022670714074, + "xi": 0.010208435776584337, + "xi_typ": 0.07716852097090478, + "t_j": 5.373404615934756, + "q": 0.7837280425816039, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3661", + "n_obs": 63, + "cond": "0" + }, + { + "name": "(2016 TH94)", + "pdes": "2016 TH94", + "cls": "ATE", + "H": 24.58, + "d_min_m": 22.8055199748187, + "d_src": "H at albedo 0.5", + "A2": -2.371008631070153e-13, + "A2_snr": -11.801934450324305, + "xi": 0.007956322232059701, + "xi_typ": 0.06014414279064086, + "t_j": 6.972186493555804, + "q": 0.5185909638129963, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3301", + "n_obs": 130, + "cond": "0" + }, + { + "name": "(2016 UW80)", + "pdes": "2016 UW80", + "cls": "APO", + "H": 23.91, + "d_min_m": 31.04845390058789, + "d_src": "H at albedo 0.5", + "A2": -2.015292789724452e-13, + "A2_snr": -3.25993657347857, + "xi": 0.009206983820266447, + "xi_typ": 0.06959825575262978, + "t_j": 5.375969783746947, + "q": 0.9673882828151321, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3642", + "n_obs": 121, + "cond": "0" + }, + { + "name": "(2016 WU1)", + "pdes": "2016 WU1", + "cls": "APO", + "H": 23.85, + "d_min_m": 31.918316641432796, + "d_src": "H at albedo 0.5", + "A2": 3.09548294940417e-13, + "A2_snr": 5.295950298381813, + "xi": 0.014538099772964788, + "xi_typ": 0.10989770438488404, + "t_j": 4.1667104716909575, + "q": 0.83664556126218, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2924", + "n_obs": 46, + "cond": "0" + }, + { + "name": "(2017 AZ13)", + "pdes": "2017 AZ13", + "cls": "ATE", + "H": 21.97, + "d_min_m": 75.86474087460675, + "d_src": "H at albedo 0.5", + "A2": -1.476168762827719e-13, + "A2_snr": -6.520180047825615, + "xi": 0.01647840755289548, + "xi_typ": 0.12456505253522818, + "t_j": 6.377061865302701, + "q": 0.6816290672488385, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6583", + "n_obs": 116, + "cond": "0" + }, + { + "name": "(2017 BP32)", + "pdes": "2017 BP32", + "cls": "AMO", + "H": 23.37, + "d_min_m": 39.81438198090946, + "d_src": "H at albedo 0.5", + "A2": -1.186503580858803e-13, + "A2_snr": -3.5566654102482103, + "xi": 0.0069510159030246, + "xi_typ": 0.05254474125330901, + "t_j": 4.861175650896236, + "q": 1.037179732915688, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3297", + "n_obs": 242, + "cond": "0" + }, + { + "name": "(2017 DN109)", + "pdes": "2017 DN109", + "cls": "APO", + "H": 21.82, + "d_min_m": 81.29053443398972, + "d_src": "H at albedo 0.5", + "A2": 1.130571502765899e-13, + "A2_snr": 3.095759865185923, + "xi": 0.013523131254487671, + "xi_typ": 0.10222526356074084, + "t_j": 4.885754637476868, + "q": 0.2071113154482011, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4741", + "n_obs": 70, + "cond": "0" + }, + { + "name": "(2017 EE23)", + "pdes": "2017 EE23", + "cls": "ATE", + "H": 21.93, + "d_min_m": 77.27517171183159, + "d_src": "H at albedo 0.5", + "A2": 7.279979666013593e-14, + "A2_snr": 5.639023753689847, + "xi": 0.00827769451959994, + "xi_typ": 0.06257348893663921, + "t_j": 6.671280957601453, + "q": 0.5420173875441383, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6595", + "n_obs": 88, + "cond": "0" + }, + { + "name": "(2017 HX)", + "pdes": "2017 HX", + "cls": "ATE", + "H": 24.25, + "d_min_m": 26.548499416927335, + "d_src": "H at albedo 0.5", + "A2": -2.910482202749337e-13, + "A2_snr": -18.02156162693088, + "xi": 0.011369573585690147, + "xi_typ": 0.08594589777310013, + "t_j": 7.323766392710159, + "q": 0.4195913692121806, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "6581", + "n_obs": 55, + "cond": "2" + }, + { + "name": "(2017 JF3)", + "pdes": "2017 JF3", + "cls": "ATE", + "H": 21.74, + "d_min_m": 84.34123941229696, + "d_src": "H at albedo 0.5", + "A2": -5.086831589298636e-14, + "A2_snr": -2.872293387520404, + "xi": 0.006312866255687187, + "xi_typ": 0.047720783350170826, + "t_j": 6.517490549956029, + "q": 0.5899827424952895, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4858", + "n_obs": 126, + "cond": "0" + }, + { + "name": "(2017 OU18)", + "pdes": "2017 OU18", + "cls": "ATE", + "H": 23.98, + "d_min_m": 30.063530383087443, + "d_src": "H at albedo 0.5", + "A2": 9.504823985908701e-14, + "A2_snr": 9.078150893895607, + "xi": 0.004204586656423942, + "xi_typ": 0.031783687596338074, + "t_j": 6.93723787119274, + "q": 0.5140402651771344, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4379", + "n_obs": 33, + "cond": "1" + }, + { + "name": "(2017 SN17)", + "pdes": "2017 SN17", + "cls": "AMO", + "H": 22.77, + "d_min_m": 52.4855773377927, + "d_src": "H at albedo 0.5", + "A2": -1.940853057792747e-13, + "A2_snr": -8.144578505215053, + "xi": 0.014988973266391823, + "xi_typ": 0.1133059876316236, + "t_j": 5.452598718107756, + "q": 1.067196442270086, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4406", + "n_obs": 70, + "cond": "0" + }, + { + "name": "(2017 TW4)", + "pdes": "2017 TW4", + "cls": "AMO", + "H": 25.01, + "d_min_m": 18.708543530586986, + "d_src": "H at albedo 0.5", + "A2": -2.303867940268895e-13, + "A2_snr": -13.386798025966849, + "xi": 0.00634215439204713, + "xi_typ": 0.04794218085066498, + "t_j": 3.7884136053256277, + "q": 1.040542650679928, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5843", + "n_obs": 73, + "cond": "0" + }, + { + "name": "'Oumuamua (A/2017 U1)", + "pdes": "2017 U1", + "cls": "HYA", + "H": 22.08, + "d_min_m": 72.11738634489292, + "d_src": "H at albedo 0.5", + "A2": 1.441264159911234e-08, + "A2_snr": 0.5894740940332246, + "xi": 1529.4060927860614, + "xi_typ": 11561.223357539699, + "t_j": null, + "q": 0.2559115812959116, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 7.937, + "A1_snr": 7.806920437422126, + "A3_snr": 0.6998321991491907, + "verdict": null, + "arc": "80", + "n_obs": 207, + "cond": null + }, + { + "name": "(2018 BY6)", + "pdes": "2018 BY6", + "cls": "APO", + "H": 23.45, + "d_min_m": 38.37425691085185, + "d_src": "H at albedo 0.5", + "A2": 2.133138627619386e-13, + "A2_snr": 6.0190141862849496, + "xi": 0.01204476438734973, + "xi_typ": 0.09104986048369895, + "t_j": 5.219248783210022, + "q": 0.8709506417016133, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5879", + "n_obs": 44, + "cond": "0" + }, + { + "name": "(2018 CW2)", + "pdes": "2018 CW2", + "cls": "ATE", + "H": 25.66, + "d_min_m": 13.868834919048192, + "d_src": "H at albedo 0.5", + "A2": -5.500469359310484e-13, + "A2_snr": -14.279515470691805, + "xi": 0.011224809485697975, + "xi_typ": 0.0848515840378162, + "t_j": 7.5374729461598875, + "q": 0.4387026012165752, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1471", + "n_obs": 161, + "cond": "0" + }, + { + "name": "(2018 GY)", + "pdes": "2018 GY", + "cls": "ATE", + "H": 24.83, + "d_min_m": 20.32544107218505, + "d_src": "H at albedo 0.5", + "A2": -3.94973476765098e-13, + "A2_snr": -6.247603238929105, + "xi": 0.011812645251588382, + "xi_typ": 0.08929520474723106, + "t_j": 7.4787565190882015, + "q": 0.4552931914683317, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1471", + "n_obs": 34, + "cond": "1" + }, + { + "name": "(2018 HB)", + "pdes": "2018 HB", + "cls": "ATE", + "H": 22.22, + "d_min_m": 67.61452147576681, + "d_src": "H at albedo 0.5", + "A2": -8.256505703260594e-14, + "A2_snr": -4.656799607027971, + "xi": 0.008214393703513017, + "xi_typ": 0.06209497974477224, + "t_j": 7.013261588959188, + "q": 0.3335302508565579, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5841", + "n_obs": 60, + "cond": "1" + }, + { + "name": "(2018 HG2)", + "pdes": "2018 HG2", + "cls": "APO", + "H": 24.26, + "d_min_m": 26.426520142163284, + "d_src": "H at albedo 0.5", + "A2": -4.287970907548996e-13, + "A2_snr": -6.433564752511622, + "xi": 0.016673664517240925, + "xi_typ": 0.1260410564478323, + "t_j": 5.230690540662684, + "q": 0.8011834932393183, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7497", + "n_obs": 59, + "cond": "1" + }, + { + "name": "(2018 KR)", + "pdes": "2018 KR", + "cls": "ATE", + "H": 26.39, + "d_min_m": 9.909231596607704, + "d_src": "H at albedo 0.5", + "A2": -2.093215470673972e-13, + "A2_snr": -10.745459295040925, + "xi": 0.0030520606863240363, + "xi_typ": 0.02307141017797289, + "t_j": 6.672567676239286, + "q": 0.7011096632605673, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3702", + "n_obs": 56, + "cond": "0" + }, + { + "name": "(2018 KC2)", + "pdes": "2018 KC2", + "cls": "APO", + "H": 22.89, + "d_min_m": 49.663803712757755, + "d_src": "H at albedo 0.5", + "A2": 2.95271925098014e-13, + "A2_snr": 6.579142716087656, + "xi": 0.021577512874938518, + "xi_typ": 0.16311066565251905, + "t_j": 5.395165186714137, + "q": 0.8916709512454131, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3663", + "n_obs": 100, + "cond": "0" + }, + { + "name": "(2018 PK10)", + "pdes": "2018 PK10", + "cls": "AMO", + "H": 23.18, + "d_min_m": 43.45502246474315, + "d_src": "H at albedo 0.5", + "A2": -1.380734052998978e-13, + "A2_snr": -4.361130931771882, + "xi": 0.008828547639469072, + "xi_typ": 0.06673754711977568, + "t_j": 4.030058408138363, + "q": 1.232195416461028, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5131", + "n_obs": 45, + "cond": "0" + }, + { + "name": "(2018 PD22)", + "pdes": "2018 PD22", + "cls": "ATE", + "H": 23.81, + "d_min_m": 32.511722452147914, + "d_src": "H at albedo 0.5", + "A2": 1.015764205655081e-13, + "A2_snr": 4.1991079192024845, + "xi": 0.004859282338778503, + "xi_typ": 0.03673272176758924, + "t_j": 7.206234116817751, + "q": 0.3626421729530213, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4386", + "n_obs": 40, + "cond": "0" + }, + { + "name": "(2018 QQ)", + "pdes": "2018 QQ", + "cls": "AMO", + "H": 25.58, + "d_min_m": 14.389310322801604, + "d_src": "H at albedo 0.5", + "A2": -4.61620571651124e-13, + "A2_snr": -3.5077551037319457, + "xi": 0.00977382105270683, + "xi_typ": 0.07388314246945654, + "t_j": 4.956589054216855, + "q": 1.025691084528282, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2149", + "n_obs": 55, + "cond": "0" + }, + { + "name": "(2018 YH)", + "pdes": "2018 YH", + "cls": "APO", + "H": 21.85, + "d_min_m": 80.17518648824154, + "d_src": "H at albedo 0.5", + "A2": -1.165457231368911e-13, + "A2_snr": -3.3712965905956356, + "xi": 0.013749141126979718, + "xi_typ": 0.10393373760776763, + "t_j": 5.522957761142413, + "q": 0.8240546144284736, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4761", + "n_obs": 106, + "cond": "0" + }, + { + "name": "(2019 ER1)", + "pdes": "2019 ER1", + "cls": "AMO", + "H": 23.39, + "d_min_m": 39.44936153284812, + "d_src": "H at albedo 0.5", + "A2": -1.857819779345961e-13, + "A2_snr": -3.686881880027706, + "xi": 0.010784072804359794, + "xi_typ": 0.08151992788785976, + "t_j": 5.252143894489743, + "q": 1.050513036043448, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.3324, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2999", + "n_obs": 108, + "cond": "0" + }, + { + "name": "(2019 JV1)", + "pdes": "2019 JV1", + "cls": "ATE", + "H": 22.97, + "d_min_m": 47.867415441919924, + "d_src": "H at albedo 0.5", + "A2": 1.71884986209178e-13, + "A2_snr": 2.9960778492100055, + "xi": 0.012106460029434248, + "xi_typ": 0.09151623570064778, + "t_j": 6.942434484398808, + "q": 0.5116025234820765, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3259", + "n_obs": 171, + "cond": "1" + }, + { + "name": "(2019 QU2)", + "pdes": "2019 QU2", + "cls": "ATE", + "H": 22.21, + "d_min_m": 67.92661592667297, + "d_src": "H at albedo 0.5", + "A2": -6.84086350139092e-14, + "A2_snr": -10.181371485921893, + "xi": 0.0068373868710335, + "xi_typ": 0.0516857865094077, + "t_j": 6.86882174757435, + "q": 0.2432408205695659, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "7688", + "n_obs": 66, + "cond": "0" + }, + { + "name": "(2019 SV6)", + "pdes": "2019 SV6", + "cls": "ATE", + "H": 23.8, + "d_min_m": 32.66178974457641, + "d_src": "H at albedo 0.5", + "A2": -1.201411655495116e-13, + "A2_snr": -11.81329061450458, + "xi": 0.005773924088817822, + "xi_typ": 0.04364676350850621, + "t_j": 7.246003710830049, + "q": 0.3932294936704395, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5087", + "n_obs": 46, + "cond": "1" + }, + { + "name": "(2019 UH14)", + "pdes": "2019 UH14", + "cls": "APO", + "H": 23.59, + "d_min_m": 35.97824532362755, + "d_src": "H at albedo 0.5", + "A2": -2.027321127989095e-13, + "A2_snr": -3.0172959190193405, + "xi": 0.010732521701867698, + "xi_typ": 0.08113023818213036, + "t_j": 5.3600236152373455, + "q": 0.889002608007775, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3839", + "n_obs": 202, + "cond": "0" + }, + { + "name": "(2020 CJ1)", + "pdes": "2020 CJ1", + "cls": "AMO", + "H": 23.89, + "d_min_m": 31.335741707387186, + "d_src": "H at albedo 0.5", + "A2": -2.046491654229345e-13, + "A2_snr": -4.441171124629655, + "xi": 0.009436027692397054, + "xi_typ": 0.07132966468114654, + "t_j": 4.712456407190859, + "q": 1.047593062871856, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3714", + "n_obs": 70, + "cond": "0" + }, + { + "name": "(2020 GE)", + "pdes": "2020 GE", + "cls": "ATE", + "H": 28.17, + "d_min_m": 4.365560173498333, + "d_src": "H at albedo 0.5", + "A2": -1.939815078655556e-12, + "A2_snr": -88.81937173331299, + "xi": 0.012460617354873213, + "xi_typ": 0.09419341343808571, + "t_j": 6.139464871530604, + "q": 0.9383651636342493, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": 14.020924112418275, + "A3_snr": null, + "verdict": null, + "arc": "1699", + "n_obs": 58, + "cond": "1" + }, + { + "name": "(2020 PP1)", + "pdes": "2020 PP1", + "cls": "APO", + "H": 26.68, + "d_min_m": 8.670416872002807, + "d_src": "H at albedo 0.5", + "A2": -2.092778022928141e-13, + "A2_snr": -7.471538818022639, + "xi": 0.0026699454900382075, + "xi_typ": 0.02018289080211308, + "t_j": 6.04108780277412, + "q": 0.9360427015697111, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2508", + "n_obs": 59, + "cond": "0" + }, + { + "name": "(2020 QJ1)", + "pdes": "2020 QJ1", + "cls": "AMO", + "H": 24.89, + "d_min_m": 19.771516375010286, + "d_src": "H at albedo 0.5", + "A2": -3.667380154381463e-13, + "A2_snr": -16.497436591909416, + "xi": 0.01066928114658282, + "xi_typ": 0.08065218451910917, + "t_j": 5.254299405737387, + "q": 1.129079778208039, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4425", + "n_obs": 40, + "cond": "0" + }, + { + "name": "(2020 UL3)", + "pdes": "2020 UL3", + "cls": "APO", + "H": 23.22, + "d_min_m": 42.6618789186488, + "d_src": "H at albedo 0.5", + "A2": -1.668645484185692e-13, + "A2_snr": -4.638992171770064, + "xi": 0.010474741313515173, + "xi_typ": 0.07918160160941484, + "t_j": 5.207078874583978, + "q": 0.8176877488729802, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3190", + "n_obs": 244, + "cond": "0" + }, + { + "name": "(2020 XA5)", + "pdes": "2020 XA5", + "cls": "ATE", + "H": 24.29, + "d_min_m": 26.063934692835662, + "d_src": "H at albedo 0.5", + "A2": -2.245739317077037e-13, + "A2_snr": -4.537763825170816, + "xi": 0.008612685151921378, + "xi_typ": 0.06510578009280721, + "t_j": 7.069978022537837, + "q": 0.505871324549748, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2245", + "n_obs": 53, + "cond": "1" + }, + { + "name": "(2021 JK2)", + "pdes": "2021 JK2", + "cls": "ATE", + "H": 24.76, + "d_min_m": 20.991331094430244, + "d_src": "H at albedo 0.5", + "A2": 3.257916385316015e-13, + "A2_snr": 12.035154729649115, + "xi": 0.010062807453650274, + "xi_typ": 0.07606767432424498, + "t_j": 6.666014256932513, + "q": 0.6219256383000107, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5495", + "n_obs": 40, + "cond": "0" + }, + { + "name": "(2021 QH2)", + "pdes": "2021 QH2", + "cls": "APO", + "H": 25.05, + "d_min_m": 18.36707412805365, + "d_src": "H at albedo 0.5", + "A2": 7.684416572788134e-13, + "A2_snr": 3.293791930042064, + "xi": 0.02076778259719779, + "xi_typ": 0.15698968009840128, + "t_j": 6.0077837470020485, + "q": 0.7181385144093233, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1087", + "n_obs": 38, + "cond": "1" + }, + { + "name": "(2021 SF4)", + "pdes": "2021 SF4", + "cls": "AMO", + "H": 24.51, + "d_min_m": 23.552660868313357, + "d_src": "H at albedo 0.5", + "A2": -2.111496740437865e-13, + "A2_snr": -3.7671663522531045, + "xi": 0.007317616480791447, + "xi_typ": 0.055315981136919504, + "t_j": 4.932209749213197, + "q": 1.025944251403394, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2183", + "n_obs": 49, + "cond": "0" + }, + { + "name": "(2021 UT1)", + "pdes": "2021 UT1", + "cls": "AMO", + "H": 25.05, + "d_min_m": 18.36707412805365, + "d_src": "H at albedo 0.5", + "A2": -3.220403279719075e-13, + "A2_snr": -7.75626994151993, + "xi": 0.008703410929769806, + "xi_typ": 0.06579160250906387, + "t_j": 5.1543888266574465, + "q": 1.046454830944382, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2943", + "n_obs": 54, + "cond": "0" + }, + { + "name": "(2021 XF4)", + "pdes": "2021 XF4", + "cls": "AMO", + "H": 24.35, + "d_min_m": 25.35362011315999, + "d_src": "H at albedo 0.5", + "A2": -2.833708514694417e-13, + "A2_snr": -3.2714252074514163, + "xi": 0.010571446201816048, + "xi_typ": 0.07991262185229596, + "t_j": 5.252389382962862, + "q": 1.109948924860459, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "2966", + "n_obs": 50, + "cond": "0" + }, + { + "name": "(2022 OS)", + "pdes": "2022 OS", + "cls": "ATE", + "H": 21.77, + "d_min_m": 83.18403422505898, + "d_src": "H at albedo 0.5", + "A2": -9.294737064418822e-14, + "A2_snr": -3.7999742699995185, + "xi": 0.011376700825569803, + "xi_typ": 0.0859997746424026, + "t_j": 6.729195442752619, + "q": 0.4972725341495656, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4403", + "n_obs": 108, + "cond": "1" + }, + { + "name": "(2022 OB5)", + "pdes": "2022 OB5", + "cls": "APO", + "H": 28.99, + "d_min_m": 2.9925401008037484, + "d_src": "H at albedo 0.5", + "A2": -1.657171700593495e-12, + "A2_snr": -25.522434939065075, + "xi": 0.007297040171717097, + "xi_typ": 0.05516043886060427, + "t_j": 5.955663658375208, + "q": 0.9699026712142497, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1268", + "n_obs": 49, + "cond": "0" + }, + { + "name": "(2022 OR6)", + "pdes": "2022 OR6", + "cls": "APO", + "H": 24.97, + "d_min_m": 19.056361323291508, + "d_src": "H at albedo 0.5", + "A2": -2.139726290790077e-13, + "A2_snr": -9.299114692699161, + "xi": 0.005999809367839007, + "xi_typ": 0.04535429571742189, + "t_j": 4.689995389950139, + "q": 0.9809657139425592, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3683", + "n_obs": 52, + "cond": "0" + }, + { + "name": "(2022 QX4)", + "pdes": "2022 QX4", + "cls": "ATE", + "H": 24.7, + "d_min_m": 21.57943048444334, + "d_src": "H at albedo 0.5", + "A2": -3.401964447814442e-13, + "A2_snr": -3.8220025253504573, + "xi": 0.010802120051231935, + "xi_typ": 0.0816563522509257, + "t_j": 8.26658623496766, + "q": 0.3372484149235235, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": 0.088812, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "3321", + "n_obs": 200, + "cond": "2" + }, + { + "name": "(2022 SU6)", + "pdes": "2022 SU6", + "cls": "AMO", + "H": 23.95, + "d_min_m": 30.48175575085297, + "d_src": "H at albedo 0.5", + "A2": -1.375865917915548e-13, + "A2_snr": -3.937795987165278, + "xi": 0.006170997089525944, + "xi_typ": 0.04664835325768296, + "t_j": 3.232704262387786, + "q": 1.155559623529091, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "5857", + "n_obs": 66, + "cond": "0" + }, + { + "name": "(2023 KR1)", + "pdes": "2023 KR1", + "cls": "AMO", + "H": 23.36, + "d_min_m": 39.998156818197316, + "d_src": "H at albedo 0.5", + "A2": -1.692719751142907e-13, + "A2_snr": -4.886604362421787, + "xi": 0.009962407237007254, + "xi_typ": 0.07530872002477515, + "t_j": 4.9453597230841115, + "q": 1.151212101226988, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4369", + "n_obs": 48, + "cond": "0" + }, + { + "name": "(2023 KH4)", + "pdes": "2023 KH4", + "cls": "ATE", + "H": 26.93, + "d_min_m": 7.727517171183159, + "d_src": "H at albedo 0.5", + "A2": 8.741494082999295e-13, + "A2_snr": 3.4293817508824223, + "xi": 0.009939508210684535, + "xi_typ": 0.07513561965644534, + "t_j": 7.062447495350551, + "q": 0.5556897998841043, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "1100", + "n_obs": 33, + "cond": "2" + }, + { + "name": "(2023 YO1)", + "pdes": "2023 YO1", + "cls": "APO", + "H": 25.93, + "d_min_m": 12.247289359234555, + "d_src": "H at albedo 0.5", + "A2": 8.315921907206817e-13, + "A2_snr": 7.4582259257460235, + "xi": 0.01498613467723514, + "xi_typ": 0.11328452991452968, + "t_j": 6.030486844512597, + "q": 0.957387294914628, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "930", + "n_obs": 61, + "cond": "0" + }, + { + "name": "(2025 PN7)", + "pdes": "2025 PN7", + "cls": "APO", + "H": 26.41, + "d_min_m": 9.818383215259686, + "d_src": "H at albedo 0.5", + "A2": -1.502790636735418e-13, + "A2_snr": -11.282211987503137, + "xi": 0.0021710894119069237, + "xi_typ": 0.016411893308546265, + "t_j": 6.067244816641088, + "q": 0.8930342221941148, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "4651", + "n_obs": 41, + "cond": "0" + }, + { + "name": "(2025 XA6)", + "pdes": "2025 XA6", + "cls": "AMO", + "H": 21.84, + "d_min_m": 80.54525833460244, + "d_src": "H at albedo 0.5", + "A2": -1.263521001859382e-13, + "A2_snr": -3.55821177656824, + "xi": 0.0149748228652728, + "xi_typ": 0.11319902065358721, + "t_j": 4.571014074689383, + "q": 1.139500560991073, + "known": null, + "cos_obl": [], + "periods": [], + "rot_per": null, + "A1_snr": null, + "A3_snr": null, + "verdict": null, + "arc": "9247", + "n_obs": 59, + "cond": "0" + } +] \ No newline at end of file diff --git a/papers/dark_comet/make_numbers.py b/papers/dark_comet/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..30c3e4dc74c911f56d63d7c6894856353fae96c3 --- /dev/null +++ b/papers/dark_comet/make_numbers.py @@ -0,0 +1,311 @@ +"""Numbers, tables and figures of the 2016 TA56 paper from the darkcomet refit, thermal, robustness, covariance, precovery, field, locus, census and forecast results and the Yarkovsky screen; Table S1 as CSV and the precovery cutouts as PDF beside this file.""" +import csv +import json +import os +import sys + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import core # noqa: E402 +from setitools import solar_system as ss # noqa: E402 + +DESIG = "2016 TA56" +NIGHT = "20070914" + + +def results(name): + """Result file from data/, else the results directory.""" + p = os.path.join(HERE, "data", name) + return p if os.path.exists(p) else core.results(name) + + +def darkcomet(name): + """darkcomet result file from data/, else the darkcomet directory.""" + p = os.path.join(HERE, "data", DESIG.replace(" ", "_"), name) + return json.load(open(p if os.path.exists(p) else os.path.join(ss.darkcomet_dir(DESIG), name))) + + +def load(): + d = os.path.join(HERE, "data", DESIG.replace(" ", "_")) + if not os.path.exists(os.path.join(d, "refit.json")): + d = ss.darkcomet_dir(DESIG) + return json.load(open(os.path.join(d, "refit.json"))), json.load(open(os.path.join(d, "thermal.json"))) + + +def year(jd): + return 2000.0 + (jd - 2451545.0) / 365.25 + + +def fits(): + rf, th = load() + print("== fits") + for name, f in rf["fits"].items(): + print("%-32s %3d obs %3d kept chi2 %6.1f/%3d rms %.2f%s%s" % ( + name, f["n_obs"], f["n_kept"], f["chi2"], f["dof"], f["rms"], + " A2 %+.3e +- %.2e (%.1f sigma)" % (f["A2"], f["A2_sigma"], f["A2"] / f["A2_sigma"]) if f["A2"] else "", + " A1 %+.3e +- %.2e (%.1f sigma)" % (f["A1"], f["A1_sigma"], f["A1"] / f["A1_sigma"]) if f.get("A1") else "")) + for app, x in rf["left_out"].items(): + print("%s left out: %d positions, along %+.2f +- %.2f, cross %+.2f +- %.2f arcsec (prediction %.2f, %.2f); %.2f arcsec/min" + % (app, x["n"], x["along"], x["along_sd"], x["cross"], x["cross_sd"], x["pred_along"], x["pred_cross"], x["rate"])) + print("NEATM: D %.2f +- %.2f km, pV %.3f, eta %.1f, chi2 %.1f for %d fluxes; eta scan %s" % ( + th["D_km"], th["D_err"], th["pv"], th["eta"], th["chi2"], th["n_w2"], + ", ".join("%.1f: D %.2f pV %.3f chi2 %.1f" % (s["eta"], s["D_km"], s["pv"], s["chi2"]) for s in th["scan"]))) + + +def screen(): + """Published dark comets in the screen and how many the transverse screen flags.""" + d = json.load(open(results("yarkovsky_sign.json"))) + known = [x for x in d if x.get("known") == "dark comet"] + gen = [x for x in known if x["xi"] and x["xi"] > 1] + typ = [x for x in known if x["xi_typ"] and x["xi_typ"] > 1] + print("== screen: %d published dark comets carry a transverse term; %d exceed sunlight at 500 kg/m^3 and albedo 0.5 (%s), " + "%d at 2000 kg/m^3 and albedo 0.14 (%s); the others: %s" % ( + len(known), len(gen), ", ".join(x["name"] for x in gen), len(typ), ", ".join(x["name"] for x in typ), + "; ".join("%s xi_typ %.3f, D>=%.0f m, A1 %s sigma, A3 %s sigma" % ( + x["name"], x["xi_typ"], x["d_min_m"], "%.1f" % x["A1_snr"] if x["A1_snr"] is not None else "-", + "%.1f" % x["A3_snr"] if x["A3_snr"] is not None else "-") for x in known if x not in typ))) + + +def spins(): + """Obliquities of the significant drifts with DAMIT poles, and the efficiencies of all significant drifts at typical assumptions.""" + import math + d = json.load(open(results("yarkovsky_sign.json"))) + sig = [x for x in d if x["A2_snr"] is not None and abs(x["A2_snr"]) >= 3] + print("== spins") + for x in sig: + if x["cos_obl"]: + print("%-28s A2 %+.2e (%.1f sigma) obliquities %s, %s" % (x["name"], x["A2"], x["A2_snr"], + ", ".join("%.0f" % math.degrees(math.acos(max(-1.0, min(1.0, c)))) for c in x["cos_obl"]), x["verdict"])) + xt = sorted(x["xi_typ"] for x in sig if x["xi_typ"] is not None) + q = [xt[int(round(p * (len(xt) - 1)))] for p in (0.16, 0.5, 0.84, 0.95)] + print("%d significant terms: xi at 2000 kg/m^3 and albedo 0.14, 16/50/84/95 per cent %.3f %.3f %.3f %.3f; %d above one" % ( + len(xt), *q, sum(v > 1 for v in xt))) + + +def covariance(): + """A2 under the night-level covariance, and the error the precovery night would have to share to lose it.""" + b = darkcomet("blockcov.json") + print("== block covariance: %d positions on %d nights, s %.2f, tau %.3f (%.3f-%.3f)" % (b["n_kept"], b["n_nights"], b["s_hat"], b["tau_hat"], *b["tau_95"])) + for k in ("site_fit", "at_estimate", "at_upper_tau", "without_decisive"): + print(" %-18s A2 %+.3e +- %.2e (%.1f sigma)" % (k, b[k]["A2"], b[k]["A2_sigma"], abs(b[k]["A2"]) / b[k]["A2_sigma"])) + print(" shared error of the precovery night for 5 and 3 sigma: %.2f, %.2f arcsec" % (b["shared_error_for_5_sigma"], b["shared_error_for_3_sigma"])) + + +def locus(): + """The positions the later apparitions allow in 2007, what the frames show there, and the figure of the flux along them.""" + lo = darkcomet("locus_%s.json" % NIGHT) + c = darkcomet("census_%s.json" % NIGHT) + L = c["locus"] + print("== locus: without 2007 A2 %+.2e +- %.2e; with A1, A1 %+.2e +- %.2e; per 1e-12 of A2 E %+.2f N %+.2f arcsec; A1 ellipse %.2f x %.2f at PA %.0f" + % (lo["rest_A2"]["A2"], lo["rest_A2"]["A2_sigma"], lo["rest_A1A2"]["A1"], lo["rest_A1A2"]["A1_sigma"], *lo["arcsec_per_1e-12"], + lo["a1a2_ellipse"]["major"], lo["a1a2_ellipse"]["minor"], lo["a1a2_ellipse"]["pa"])) + print(" " + json.dumps({k: v for k, v in L.items() if k not in ("grid", "flux", "n_frames", "map", "frames")})) + print(r"\begin{tikzpicture}") + print(r"\begin{axis}[width=0.95\textwidth,height=0.36\textwidth,xmin=-16,xmax=12,ymin=-0.2,ymax=1.1,xlabel={$A_2$ ($10^{-12}$\,au\,d$^{-2}$)}," + r"ylabel={relative flux},tick label style={font=\footnotesize},label style={font=\small}]") + print(r"\addplot[black,thick] coordinates {%s};" % " ".join("(%.2f,%.3f)" % (g * 1e12, f) for g, f in zip(L["grid"], L["flux"]) if f is not None)) + s3 = 3 * L["null_sd"] + print(r"\addplot[black!50,densely dotted] coordinates {(-16,%.3f) (12,%.3f)};" % (s3, s3)) + print(r"\addplot[black!50,densely dotted] coordinates {(-16,%.3f) (12,%.3f)};" % (-s3, -s3)) + print(r"\addplot[black!50,dashed] coordinates {(0,-0.2) (0,1.1)};") + print(r"\end{axis}") + print(r"\end{tikzpicture}") + + +def census(): + """Moving sources in the whole 2007 frames, the injected copies recovered, and the chance tracks.""" + c = darkcomet("census_%s.json" % NIGHT) + m = c["movers"] + print("== census: %d CCD images, %d registered, WCS rms %.3f, FWHM %.2f; the object r %.2f" % ( + c["n_ccd"], c["n_registered"], c["wcs_rms_median"], c["fwhm_median"], c["object_mag"].get("r", float("nan")))) + for k in ("filter_A", "filter_B"): + print(" %s %s" % (k, json.dumps(c[k]))) + print(" object recovered %s; injections %s" % (json.dumps(c["object_recovered"]), json.dumps(c["injection"]))) + print(" movers %d over %.3f deg^2 (%.0f per deg^2), %d known of %d known on the frames; rates %.1f +- %.1f, PA offset %+.0f +- %.0f; " + "within 5/10: %d, 10/20: %d; expected within 30 arcsec %s" % ( + m["n"], m["area_deg2"], m["density_per_deg2"], m["n_known"], m["n_known_covered"], m["rate_mean"], m["rate_sd"], m["pa_offset_mean"], + m["pa_offset_sd"], m["within_5_10"], m["within_10_20"], m["expected_30arcsec"])) + for t in sorted(m["tracks"], key=lambda t: t["rate"]): + print(" %5.1f arcsec/h PA %3.0f, %2d detections, support %d/%d, r %s%s" % ( + t["rate"], t["pa"], t["n"], t["support"], t["coverage"], "%.1f" % t["mag"] if t["mag"] else "-", + ", %s" % t["known"]["name"] if t.get("known") else "")) + + +def forecast(): + """A2 from the 2030 apparition with and without the precovery.""" + f = darkcomet("forecast.json") + print("== forecast: A2 %+.3e +- %.2e; without the precovery now +- %.2e; visible %s" % (f["A2"], f["A2_sigma"], f["A2_sigma_without_now"], f["visible"])) + for k, s in f["scenarios"].items(): + print(" %-28s %s: +- %.2e without (%.1f sigma), +- %.2e with" % (k, ",".join(s["dates"]), s["A2_sigma_without"], s["z_without"], s["A2_sigma_with"])) + + +def thermal_variants(): + t = darkcomet("thermal_variants.json") + print("== NEATM variants: reference D %.2f km" % t["reference"]["D_km"]) + for v in t["variants"]: + print(" %-16s D %.2f km (%+.1f per cent)" % (v["variant"], v["D_km"], 100 * v["change"])) + + +def figure(): + """pgfplots code: cross- and along-track offsets against time for the orbits without 2007, without 2025, and with A2.""" + rf, _ = load() + panels = [("(a) gravity only, fitted without 2007 September", rf["left_out"]["2007-09"]["resid"]), + ("(b) gravity only, fitted without 2025 October", rf["left_out"]["2025-10"]["resid"]), + ("(c) with $A_2$", rf["fits"]["with A2"]["resid"])] + print("== figure") + print(r"\begin{tikzpicture}") + for k, (title, res) in enumerate(panels): + at = "" if k == 0 else "at={(p%d.south)},anchor=north,yshift=-0.9cm," % (k - 1) + ymin, ymax = (-12, 12) if k < 2 else (-1.5, 1.5) + print(r"\begin{axis}[name=p%d,%swidth=0.95\textwidth,height=0.3\textwidth,xmin=2006.5,xmax=2027,ymin=%g,ymax=%g," % (k, at, ymin, ymax)) + print(r" xlabel={%s},ylabel={offset (arcsec)},title={%s},title style={font=\small},tick label style={font=\footnotesize}," + % ("year" if k == 2 else "", title)) + print(r" label style={font=\small},x tick label style={/pgf/number format/1000 sep={}},legend style={font=\scriptsize," + r"at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend columns=2]") + for key, mark, col, lab in (("cross", "*", "black", "across the motion"), ("along", "o", "black!60", "along the motion")): + kept = [r for r in res if r.get("kept", True)] + print(r"\addplot[only marks,mark=%s,mark size=1.3pt,%s] coordinates {%s};" + % (mark, col, " ".join("(%.3f,%.2f)" % (year(r["jd"]), r[key]) for r in kept))) + print(r"\addlegendentry{%s}" % lab) + if k == 2 and any(not r.get("kept", True) for r in res): + print(r"\addplot[only marks,mark=%s,mark size=1.3pt,%s,opacity=0.35,forget plot] coordinates {%s};" + % (mark, col, " ".join("(%.3f,%.2f)" % (year(r["jd"]), max(min(r[key], ymax), ymin)) for r in res if not r.get("kept", True)))) + print(r"\addplot[black!40,densely dotted,forget plot] coordinates {(2006.5,0) (2027,0)};") + print(r"\end{axis}") + print(r"\end{tikzpicture}") + + +def robust(): + """Night jackknife and bootstrap, weighting variants and the prediction table.""" + r = darkcomet("robust.json") + print("== robustness") + for k in ("jackknife_none", "jackknife_night", "bootstrap_free", "bootstrap_held"): + print(k, json.dumps(r[k])) + for k in sorted(t for t in r["fits"] if t.startswith(("clip", "floor", "default"))): + f = r["fits"][k] + print("%-22s A2 %+.3e +- %.2e (%.1f sigma), chi2/dof %.2f" % (k, f["A2"], f["A2_sigma"], abs(f["A2"] / f["A2_sigma"]), f["chi2"] / f["dof"])) + night = {x["date"]: x for x in r["prediction"]["night"]} + site = {x["date"]: x for x in r["prediction"]["none"]} + for dt in ("2030-07-30", "2030-08-19", "2030-09-08", "2030-09-28"): + n, s = night[dt], site[dt] + print("%s & %.2f & %.2f & %.2f & %.1f & %.2f & %.2f & %.2f & %.1f \\\\ %% across %.2f %.2f" + % (dt, n["sep"], n["sigma_accel"], n["sigma_grav"], n["z_0p2"], s["sep"], s["sigma_accel"], s["sigma_grav"], s["z_0p2"], + n["across_accel"], n["across_grav"])) + + +def precovery(): + """The re-measured 2007 frames against both orbits, as table rows, and the known asteroids around the track.""" + from astropy.time import Time + print("== precovery frames") + for f in darkcomet("frames_%s.json" % NIGHT): + print("%s & %s & %s & %.0f & %.1f & %.2f & %.6f & $%+.6f$ & $%+.2f$, $%+.2f$ & $%+.2f$, $%+.2f$ \\\\" % ( + f["image"], Time(f["mjd_mid"], format="mjd").iso[11:19], f["filter"][:1], f["exptime"], f["snr"], f["trail_arcsec"], + f["ra"], f["dec"], f["accel"]["dE"], f["accel"]["dN"], f["grav"]["dE"], f["grav"]["dN"])) + fl = darkcomet("field_%s.json" % NIGHT) + print("field:", json.dumps({k: v for k, v in fl.items() if k != "objects"})) + + +def table_s1(): + """Table S1: every asteroid of the screen, significant drifts first, with the published status the store records.""" + rows = json.load(open(results("yarkovsky_sign.json"))) + cols = ["designation", "A2_au_d2", "A2_snr", "A1_snr", "A3_snr", "H", "D_used_m", "D_source", "xi_500kgm3_albedo0.5", + "xi_2000kgm3_albedo0.14", "T_J", "q_au", "orbit_class", "n_obs", "arc_days", "damit_cos_obliquity", "spin_sign", "published_status"] + + def f(x, fmt): + return "" if x is None else fmt % x + out = os.path.join(HERE, "data", "table_S1_screen.csv") + with open(out, "w", newline="", encoding="utf-8") as fh: + w = csv.writer(fh) + w.writerow(cols) + for x in sorted(rows, key=lambda r: (abs(r["A2_snr"] or 0) < 3, -(r["xi"] or 0))): + known = next((v for k, v in ss.yarkovsky_KNOWN.items() if "(%s)" % k in x["name"] or x["pdes"] == k), None) + if x["pdes"] == "883607": + known = "dark-comet candidate (this paper)" + name = x["name"][1:-1] if x["name"].startswith("(") and x["name"].endswith(")") else x["name"] + w.writerow([name, f(x["A2"], "%.4e"), f(x["A2_snr"], "%.2f"), f(x["A1_snr"], "%.2f"), f(x["A3_snr"], "%.2f"), f(x["H"], "%.2f"), + f(x["d_min_m"], "%.0f"), x["d_src"], f(x["xi"], "%.4g"), f(x["xi_typ"], "%.4g"), f(x["t_j"], "%.3f"), f(x["q"], "%.4f"), + x["cls"], x["n_obs"], x["arc"], ";".join("%.3f" % c for c in x["cos_obl"]), x["verdict"] or "", known or ""]) + print("== Table S1: %d rows to %s" % (len(rows), out)) + + +def cutouts(): + """Figure: the object in each re-measured frame, north up and east left, with the positions both orbits give.""" + import matplotlib + matplotlib.use("Agg") + import matplotlib.pyplot as plt + from astropy.io import fits as pyfits + from astropy.time import Time + from astropy.visualization import AsinhStretch, ImageNormalize, ZScaleInterval + pre = {(x["image"], x["ext"]): x for x in darkcomet("precovery_%s.json" % NIGHT) if x["found"]} + frames = darkcomet("frames_%s.json" % NIGHT) + cdir = os.path.join(ss.darkcomet_dir(DESIG), "cfht_%s" % NIGHT) + plt.rcParams.update({"font.family": "serif", "mathtext.fontset": "cm", "font.size": 8}) + half = 8.0 + fig, axes = plt.subplots(4, 4, figsize=(6.6, 7.0)) + for ax in axes.flat: + ax.set_xticks([]) + ax.set_yticks([]) + for ax, f in zip(axes.flat, frames): + e = pre[(f["image"], f["ext"])] + h = pyfits.open(os.path.join(cdir, "%s_%d.fits" % (f["image"], f["ext"])))[-1] + img = h.data.astype(float) + n = int(round(half / e["scale"])) + xi, yi = (int(round(v)) for v in e["pix"]) + cut = img[max(yi - n, 0):yi + n + 1, max(xi - n, 0):xi + n + 1] + # north up, east left: flip x where RA grows with x, flip y where Dec falls with y + if h.header["CD1_1"] > 0: + cut = cut[:, ::-1] + if h.header["CD2_2"] < 0: + cut = cut[::-1, :] + ax.imshow(cut, origin="lower", cmap="gray_r", extent=[half, -half, -half, half], interpolation="nearest", + norm=ImageNormalize(cut, interval=ZScaleInterval(contrast=0.15), stretch=AsinhStretch(0.3))) + ax.plot(0, 0, marker="+", ms=7, mew=0.8, color="#1f6fb4") + ax.add_patch(plt.Circle((-f["accel"]["dE"], -f["accel"]["dN"]), 0.9, fill=False, lw=0.9, color="#c0392b")) + ax.add_patch(plt.Rectangle((-f["grav"]["dE"] - 0.8, -f["grav"]["dN"] - 0.8), 1.6, 1.6, fill=False, lw=0.9, color="#2e8b57")) + ax.set_xlim(half, -half) + ax.set_ylim(-half, half) + box = dict(facecolor="white", edgecolor="none", alpha=0.75, pad=0.8) + ax.text(0.04, 0.95, "%s %s UT" % (f["image"][:6], Time(f["mjd_mid"], format="mjd").iso[11:16]), transform=ax.transAxes, + va="top", fontsize=6.5, bbox=box) + ax.text(0.04, 0.05, "%s, %.0f s, S/N %.1f" % (f["filter"][:1], f["exptime"], f["snr"]), transform=ax.transAxes, va="bottom", + fontsize=6.5, bbox=box) + for ax in axes.flat[len(frames):]: + ax.axis("off") + key = axes.flat[len(frames)] + key.set_xlim(0, 1) + key.set_ylim(0, 1) + key.set_aspect("equal") + key.plot(0.16, 0.88, marker="+", ms=7, mew=0.8, color="#1f6fb4") + key.text(0.30, 0.88, "our centroid", va="center", fontsize=7) + key.add_patch(plt.Circle((0.16, 0.74), 0.045, fill=False, lw=0.9, color="#c0392b")) + key.text(0.30, 0.74, "orbit with $A_2$", va="center", fontsize=7) + key.add_patch(plt.Rectangle((0.12, 0.56), 0.08, 0.08, fill=False, lw=0.9, color="#2e8b57")) + key.text(0.30, 0.60, "gravity only,\nfitted without 2007", va="center", fontsize=7) + # compass, north up and east left, and a 4 arcsec bar: a quarter of a panel's 16 arcsec + key.annotate("", xy=(0.36, 0.38), xytext=(0.36, 0.16), arrowprops=dict(arrowstyle="->", lw=0.8)) + key.text(0.36, 0.40, "N", ha="center", va="bottom", fontsize=7) + key.annotate("", xy=(0.14, 0.16), xytext=(0.36, 0.16), arrowprops=dict(arrowstyle="->", lw=0.8)) + key.text(0.12, 0.16, "E", ha="right", va="center", fontsize=7) + key.plot([0.56, 0.81], [0.16, 0.16], color="k", lw=1.2) + key.text(0.685, 0.20, "4$''$", ha="center", va="bottom", fontsize=7) + fig.subplots_adjust(left=0.01, right=0.99, top=0.99, bottom=0.01, wspace=0.04, hspace=0.04) + fig.savefig(os.path.join(HERE, "cfht2007_cutouts.pdf")) + print("== cutouts: %d frames to cfht2007_cutouts.pdf" % len(frames)) + + +if __name__ == "__main__": + fits() + screen() + spins() + figure() + robust() + covariance() + precovery() + locus() + census() + forecast() + thermal_variants() + table_s1() + cutouts() diff --git a/papers/dyson_infrared/data/dark_companion_ds.json b/papers/dyson_infrared/data/dark_companion_ds.json new file mode 100644 index 0000000000000000000000000000000000000000..93d825c51c8870e5662e54a443fef9680b3064c6 --- /dev/null +++ b/papers/dyson_infrared/data/dark_companion_ds.json @@ -0,0 +1,4438 @@ +[ +{ +"source_id": "2954775944455492096", +"m1": 0.77900624, +"m2": 0.980772, +"d_pc": 101.8, +"L_pred": 0.925, +"method": "Orbital+SB2", +"w3_pred_jy": 8.463587031238848, +"w3_meas_jy": 0.029342891812724686, +"w3_detected": true, +"w3_ratio": 0.003466956942064983, +"w4_pred_jy": 9.241015089719115, +"w4_meas_jy": 0.009314554685626199, +"w4_detected": true, +"w4_ratio": 0.0010079579564791425 +}, +{ +"source_id": "5882977513221448704", +"m1": 0.52452457, +"m2": 0.5895248, +"d_pc": 156.2, +"L_pred": 0.121, +"method": "Orbital+M1", +"w3_pred_jy": 0.4693847494570558, +"w3_ratio": null, +"w4_pred_jy": 0.5125003779847429, +"w4_ratio": null +}, +{ +"source_id": "1469032407560115968", +"m1": 0.8716994, +"m2": 0.5580115, +"d_pc": 149.9, +"L_pred": 0.097, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 0.40937434887851715, +"w3_meas_jy": 0.003081079556591162, +"w3_detected": true, +"w3_ratio": 0.007526313177735227, +"w4_pred_jy": 0.4469776846823039, +"w4_meas_jy": 0.003208943694051928, +"w4_detected": false, +"w4_ratio": 0.007179203356276573 +}, +{ +"source_id": "1393426655138609408", +"m1": 0.84738624, +"m2": 0.6119457, +"d_pc": 159.0, +"L_pred": 0.14, +"method": "Orbital+M1", +"w3_pred_jy": 0.5260241663547917, +"w3_meas_jy": 0.005349373382280755, +"w3_detected": true, +"w3_ratio": 0.010169444151873283, +"w4_pred_jy": 0.5743424438006901, +"w4_meas_jy": 0.0014519848895271552, +"w4_detected": false, +"w4_ratio": 0.002528082166309525 +}, +{ +"source_id": "201846424781270144", +"m1": 0.74500066, +"m2": 0.9112023, +"d_pc": 143.1, +"L_pred": 0.689, +"method": "Orbital+M1", +"w3_pred_jy": 3.1937975874682825, +"w3_meas_jy": 0.0022485518802600342, +"w3_detected": true, +"w3_ratio": 0.0007040370651799688, +"w4_pred_jy": 3.4871658541901756, +"w4_meas_jy": 0.003875806589754572, +"w4_detected": false, +"w4_ratio": 0.0011114488819329903 +}, +{ +"source_id": "304619975649100416", +"m1": 0.61006516, +"m2": 0.6851829, +"d_pc": 174.5, +"L_pred": 0.22, +"method": "Orbital+M1", +"w3_pred_jy": 0.6863440078973327, +"w3_meas_jy": 0.0006660439877833338, +"w3_detected": true, +"w3_ratio": 0.0009704229659173545, +"w4_pred_jy": 0.7493885642467564, +"w4_meas_jy": 0.002301240966967991, +"w4_detected": false, +"w4_ratio": 0.0030708247720340784 +}, +{ +"source_id": "3072288654854260864", +"m1": 0.49327743, +"m2": 0.5918348, +"d_pc": 129.2, +"L_pred": 0.123, +"method": "Orbital+M1", +"w3_pred_jy": 0.6971454564449066, +"w3_meas_jy": 0.001571458485466932, +"w3_detected": true, +"w3_ratio": 0.0022541328655867384, +"w4_pred_jy": 0.7611821865785803, +"w4_meas_jy": 0.0027489199730508667, +"w4_detected": false, +"w4_ratio": 0.0036113824279137715 +}, +{ +"source_id": "4142263208424467200", +"m1": 0.44961816, +"m2": 0.64385164, +"d_pc": 178.1, +"L_pred": 0.172, +"method": "Orbital+M1", +"w3_pred_jy": 0.5136723480457298, +"w3_meas_jy": 0.0009851512492193319, +"w3_detected": false, +"w3_ratio": 0.001917859220897031, +"w4_pred_jy": 0.5608560415272557, +"w4_meas_jy": 0.002500127152631339, +"w4_detected": false, +"w4_ratio": 0.0044576985313794495 +}, +{ +"source_id": "4220988103536975872", +"m1": 0.6236182, +"m2": 0.56414014, +"d_pc": 197.7, +"L_pred": 0.101, +"method": "Orbital+M1", +"w3_pred_jy": 0.24589545420473824, +"w3_meas_jy": 0.000739780556036071, +"w3_detected": true, +"w3_ratio": 0.0030085166007994303, +"w4_pred_jy": 0.26848233431194624, +"w4_meas_jy": 0.002468096276261099, +"w4_detected": false, +"w4_ratio": 0.00919276973133528 +}, +{ +"source_id": "5854275999140478976", +"m1": 0.5768811, +"m2": 0.61337805, +"d_pc": 168.7, +"L_pred": 0.142, +"method": "Orbital+M1", +"w3_pred_jy": 0.4719714922415358, +"w3_meas_jy": 0.002039402335822087, +"w3_detected": true, +"w3_ratio": 0.004321028641234976, +"w4_pred_jy": 0.5153247276388994, +"w4_meas_jy": 0.0037356148811585038, +"w4_detected": false, +"w4_ratio": 0.007249050318765492 +}, +{ +"source_id": "1201305479427403008", +"m1": 0.9053726, +"m2": 0.80303055, +"d_pc": 88.4, +"L_pred": 0.416, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 5.046207247363684, +"w3_meas_jy": 0.02506703182382329, +"w3_detected": true, +"w3_ratio": 0.004967499469412238, +"w4_pred_jy": 5.509729757208161, +"w4_meas_jy": 0.008692848220369418, +"w4_detected": true, +"w4_ratio": 0.0015777267857823535 +}, +{ +"source_id": "1499093536498936576", +"m1": 0.55071414, +"m2": 0.549595, +"d_pc": 176.5, +"L_pred": 0.091, +"method": "Orbital+M1", +"w3_pred_jy": 0.2778712202004868, +"w3_meas_jy": 0.0009486432314593317, +"w3_detected": true, +"w3_ratio": 0.0034139671995353687, +"w4_pred_jy": 0.30339525421002267, +"w4_meas_jy": 0.0018774228389804477, +"w4_detected": false, +"w4_ratio": 0.006188042867937606 +}, +{ +"source_id": "1532066550185228672", +"m1": 0.55017626, +"m2": 0.5997161, +"d_pc": 129.3, +"L_pred": 0.129, +"method": "Orbital+M1", +"w3_pred_jy": 0.7336337066344566, +"w3_meas_jy": 0.0023286429980674773, +"w3_detected": true, +"w3_ratio": 0.003174122149798873, +"w4_pred_jy": 0.801022087716777, +"w4_meas_jy": 0.0027012333115101206, +"w4_detected": false, +"w4_ratio": 0.003372233241669629 +}, +{ +"source_id": "1853477782085605632", +"m1": 0.6902478, +"m2": 0.76372236, +"d_pc": 162.4, +"L_pred": 0.34, +"method": "Orbital+M1", +"w3_pred_jy": 1.2236641733600118, +"w3_meas_jy": 0.0030472137012504167, +"w3_detected": true, +"w3_ratio": 0.002490236919238382, +"w4_pred_jy": 1.336064608189343, +"w4_meas_jy": 0.0015558298400416394, +"w4_detected": false, +"w4_ratio": 0.0011644869795257326 +}, +{ +"source_id": "1860726205116568960", +"m1": 0.70107, +"m2": 0.6070466, +"d_pc": 159.2, +"L_pred": 0.136, +"method": "Orbital+M1", +"w3_pred_jy": 0.5085180243860293, +"w3_meas_jy": 0.0014965902528742477, +"w3_detected": true, +"w3_ratio": 0.0029430426869946047, +"w4_pred_jy": 0.5552282642573129, +"w4_meas_jy": 0.0018028603886707038, +"w4_detected": false, +"w4_ratio": 0.0032470616226323683 +}, +{ +"source_id": "2937859236510622464", +"m1": 0.6300023, +"m2": 0.5968648, +"d_pc": 140.7, +"L_pred": 0.127, +"method": "Orbital+M1", +"w3_pred_jy": 0.6082694468566738, +"w3_meas_jy": 0.001227730125174344, +"w3_detected": true, +"w3_ratio": 0.0020183984770545827, +"w4_pred_jy": 0.664142415771301, +"w4_meas_jy": 0.002986497095995192, +"w4_detected": false, +"w4_ratio": 0.0044967721155511915 +}, +{ +"source_id": "3024789615097417856", +"m1": 0.85800946, +"m2": 0.59227633, +"d_pc": 195.7, +"L_pred": 0.123, +"method": "Orbital+M1", +"w3_pred_jy": 0.30491526277802367, +"w3_meas_jy": 0.0016853997004016438, +"w3_detected": true, +"w3_ratio": 0.005527436327871209, +"w4_pred_jy": 0.33292344416347835, +"w4_meas_jy": 0.0036371574082850076, +"w4_detected": false, +"w4_ratio": 0.010924906227087515 +}, +{ +"source_id": "322346817508374016", +"m1": 0.5693452, +"m2": 0.6652455, +"d_pc": 98.8, +"L_pred": 0.196, +"method": "Orbital+M1", +"w3_pred_jy": 1.9014444219360096, +"w3_meas_jy": 0.0014345077945867274, +"w3_detected": true, +"w3_ratio": 0.0007544305676450657, +"w4_pred_jy": 2.076102783668183, +"w4_meas_jy": 0.0015444081927100818, +"w4_detected": false, +"w4_ratio": 0.0007438977515271805 +}, +{ +"source_id": "3947593059814523776", +"m1": 0.5322881, +"m2": 0.61568516, +"d_pc": 194.5, +"L_pred": 0.144, +"method": "Orbital+M1", +"w3_pred_jy": 0.3603456511186285, +"w3_meas_jy": 0.000475010174797021, +"w3_detected": true, +"w3_ratio": 0.001318207041828969, +"w4_pred_jy": 0.39344542535110977, +"w4_meas_jy": 0.0021162262482645636, +"w4_detected": false, +"w4_ratio": 0.005378703403085824 +}, +{ +"source_id": "4151793736559867264", +"m1": 0.8231315, +"m2": 0.8706765, +"d_pc": 121.0, +"L_pred": 0.575, +"method": "Orbital+M1", +"w3_pred_jy": 3.724796207420004, +"w3_meas_jy": 0.0062965537116480555, +"w3_detected": true, +"w3_ratio": 0.0016904424728270949, +"w4_pred_jy": 4.066939683121385, +"w4_meas_jy": 0.004328745935602596, +"w4_detected": false, +"w4_ratio": 0.0010643742648969593 +}, +{ +"source_id": "4331195482581546240", +"m1": 0.840735, +"m2": 0.92717683, +"d_pc": 182.5, +"L_pred": 0.739, +"method": "Orbital+M1", +"w3_pred_jy": 2.105488733583777, +"w3_meas_jy": 0.0040429922830290494, +"w3_detected": true, +"w3_ratio": 0.0019202155863106542, +"w4_pred_jy": 2.298889712655711, +"w4_meas_jy": 0.004724567920355288, +"w4_detected": false, +"w4_ratio": 0.0020551520563800336 +}, +{ +"source_id": "4609083547421818496", +"m1": 0.64071375, +"m2": 0.56455314, +"d_pc": 187.3, +"L_pred": 0.102, +"method": "Orbital+M1", +"w3_pred_jy": 0.2747929950659413, +"w3_meas_jy": 0.0010683238214461, +"w3_detected": true, +"w3_ratio": 0.0038877403741304885, +"w4_pred_jy": 0.3000342767884052, +"w4_meas_jy": 0.001889566134635802, +"w4_detected": false, +"w4_ratio": 0.006297834217016447 +}, +{ +"source_id": "4852417805793321728", +"m1": 0.61887574, +"m2": 0.56424564, +"d_pc": 125.4, +"L_pred": 0.101, +"method": "Orbital+M1", +"w3_pred_jy": 0.6116674897327364, +"w3_meas_jy": 0.0018685422076828626, +"w3_detected": true, +"w3_ratio": 0.003054833286136081, +"w4_pred_jy": 0.6678525879922876, +"w4_meas_jy": 0.002346184151419015, +"w4_detected": false, +"w4_ratio": 0.0035130269667325285 +}, +{ +"source_id": "1711084527998207872", +"m1": 0.8224635, +"m2": 0.82589275, +"d_pc": 196.5, +"L_pred": 0.465, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 1.1431547772318147, +"w3_meas_jy": 0.0022589307241694043, +"w3_detected": true, +"w3_ratio": 0.0019760497608551975, +"w4_pred_jy": 1.2481599713327947, +"w4_meas_jy": 0.0021456658879102594, +"w4_detected": false, +"w4_ratio": 0.0017190632107990942 +}, +{ +"source_id": "2978347480888326784", +"m1": 0.84918773, +"m2": 1.0884774, +"d_pc": 160.9, +"L_pred": 1.404, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 5.145173521471674, +"w3_meas_jy": 0.00553481249097372, +"w3_detected": true, +"w3_ratio": 0.001075729024079755, +"w4_pred_jy": 5.617786640067596, +"w4_meas_jy": 0.0030336264117476145, +"w4_detected": false, +"w4_ratio": 0.0005400038495785793 +}, +{ +"source_id": "6259070138408794112", +"m1": 0.6896204, +"m2": 0.52677125, +"d_pc": 164.6, +"L_pred": 0.077, +"method": "Orbital+M1", +"w3_pred_jy": 0.2694801658607768, +"w3_meas_jy": 0.001537102795413502, +"w3_detected": true, +"w3_ratio": 0.005703955207626022, +"w4_pred_jy": 0.2942334343473913, +"w4_meas_jy": 0.0027794706778184438, +"w4_detected": false, +"w4_ratio": 0.009446481444174757 +}, +{ +"source_id": "1518603820576991360", +"m1": 0.61423796, +"m2": 0.5958736, +"d_pc": 185.8, +"L_pred": 0.126, +"method": "Orbital+M1", +"w3_pred_jy": 0.3462971467552072, +"w3_meas_jy": 0.001699428559239177, +"w3_detected": true, +"w3_ratio": 0.004907428707290159, +"w4_pred_jy": 0.3781064868689757, +"w4_meas_jy": 0.0030085836899074727, +"w4_detected": false, +"w4_ratio": 0.007956974541275273 +}, +{ +"source_id": "1721933241726893312", +"m1": 0.69737613, +"m2": 0.583757, +"d_pc": 179.6, +"L_pred": 0.116, +"method": "Orbital+M1", +"w3_pred_jy": 0.3413781993507459, +"w3_meas_jy": 0.0011898793084798363, +"w3_detected": true, +"w3_ratio": 0.0034855163884009643, +"w4_pred_jy": 0.3727357064868062, +"w4_meas_jy": 0.0023920050752539645, +"w4_detected": false, +"w4_ratio": 0.006417429383945095 +}, +{ +"source_id": "2238305511775896064", +"m1": 0.817194, +"m2": 0.6697842, +"d_pc": 199.8, +"L_pred": 0.201, +"method": "Orbital+M1", +"w3_pred_jy": 0.47824073815639695, +"w3_meas_jy": 0.0028993651362869124, +"w3_detected": true, +"w3_ratio": 0.006062564112509265, +"w4_pred_jy": 0.5221698390422038, +"w4_meas_jy": 0.0021496219931296016, +"w4_detected": false, +"w4_ratio": 0.004116710373530136 +}, +{ +"source_id": "2343910098928012928", +"m1": 0.69941866, +"m2": 0.59364456, +"d_pc": 190.6, +"L_pred": 0.124, +"method": "Orbital+M1", +"w3_pred_jy": 0.3241306211331317, +"w3_meas_jy": 0.001724657702613084, +"w3_detected": true, +"w3_ratio": 0.005320872482161157, +"w4_pred_jy": 0.35390384122899077, +"w4_meas_jy": 0.003118617393703483, +"w4_detected": false, +"w4_ratio": 0.008812047314529163 +}, +{ +"source_id": "2935923718096310400", +"m1": 0.7189302, +"m2": 0.5819804, +"d_pc": 175.7, +"L_pred": 0.115, +"method": "Orbital+M1", +"w3_pred_jy": 0.352569852967963, +"w3_meas_jy": 0.0008707689056335771, +"w3_detected": true, +"w3_ratio": 0.002469776976968877, +"w4_pred_jy": 0.3849553764179931, +"w4_meas_jy": 0.0025070448119443455, +"w4_detected": false, +"w4_ratio": 0.006512559547219157 +}, +{ +"source_id": "4065778224715865344", +"m1": 0.38773784, +"m2": 0.5778254, +"d_pc": 165.8, +"L_pred": 0.111, +"method": "Orbital+M1", +"w3_pred_jy": 0.3844807175511014, +"w3_ratio": null, +"w4_pred_jy": 0.41979743334377884, +"w4_ratio": null +}, +{ +"source_id": "4055726558125681280", +"m1": 0.6268873, +"m2": 0.6024826, +"d_pc": 157.9, +"L_pred": 0.132, +"method": "Orbital+M1", +"w3_pred_jy": 0.5015824577989398, +"w3_ratio": null, +"w4_pred_jy": 0.5476556268814007, +"w4_ratio": null +}, +{ +"source_id": "4631795128323136896", +"m1": 0.49174708, +"m2": 0.58759046, +"d_pc": 115.2, +"L_pred": 0.119, +"method": "Orbital+M1", +"w3_pred_jy": 0.8522801923505765, +"w3_meas_jy": 0.0012773294118725404, +"w3_detected": true, +"w3_ratio": 0.0014987200492712195, +"w4_pred_jy": 0.9305669202798467, +"w4_meas_jy": 0.0019969265759002906, +"w4_detected": false, +"w4_ratio": 0.002145924739404836 +}, +{ +"source_id": "5534280594604579584", +"m1": 0.8113224, +"m2": 0.96858233, +"d_pc": 76.1, +"L_pred": 0.88, +"method": "Orbital+SB2", +"w3_pred_jy": 14.406360829274455, +"w3_meas_jy": 0.050292463845848616, +"w3_detected": true, +"w3_ratio": 0.0034909901564905816, +"w4_pred_jy": 15.729666076556782, +"w4_meas_jy": 0.012121659956739741, +"w4_detected": true, +"w4_ratio": 0.000770624112282056 +}, +{ +"source_id": "6018012487600483200", +"m1": 0.74721056, +"m2": 0.5752476, +"d_pc": 109.2, +"L_pred": 0.11, +"method": "Orbital+M1", +"w3_pred_jy": 0.8714440853139843, +"w3_meas_jy": 0.007654254750081008, +"w3_detected": true, +"w3_ratio": 0.00878341465513895, +"w4_pred_jy": 0.9514911245680481, +"w4_meas_jy": 0.005237959025473018, +"w4_detected": false, +"w4_ratio": 0.0055050004043399915 +}, +{ +"source_id": "6309321461930024448", +"m1": 0.645186, +"m2": 0.56172746, +"d_pc": 148.5, +"L_pred": 0.1, +"method": "Orbital+M1", +"w3_pred_jy": 0.4285269616414325, +"w3_meas_jy": 0.0014719834000852057, +"w3_detected": true, +"w3_ratio": 0.0034349843343506573, +"w4_pred_jy": 0.46788957262017034, +"w4_meas_jy": 0.0026962620359851793, +"w4_detected": false, +"w4_ratio": 0.0057626033871329444 +}, +{ +"source_id": "1076202294800574848", +"m1": 0.5407653, +"m2": 0.5558026, +"d_pc": 146.8, +"L_pred": 0.095, +"method": "Orbital+M1", +"w3_pred_jy": 0.4198019736150077, +"w3_meas_jy": 0.001131104974513353, +"w3_detected": true, +"w3_ratio": 0.0026943774579551347, +"w4_pred_jy": 0.45836314538403344, +"w4_meas_jy": 0.0016427145233493237, +"w4_detected": false, +"w4_ratio": 0.003583871303555606 +}, +{ +"source_id": "6593522402843124992", +"m1": 0.6593033, +"m2": 0.602402, +"d_pc": 182.0, +"L_pred": 0.132, +"method": "Orbital+M1", +"w3_pred_jy": 0.3769715746338626, +"w3_meas_jy": 0.001133190467095638, +"w3_detected": true, +"w3_ratio": 0.0030060369092716355, +"w4_pred_jy": 0.4115985334266471, +"w4_meas_jy": 0.003241619952274117, +"w4_detected": false, +"w4_ratio": 0.007875683922600326 +}, +{ +"source_id": "6898820601071896576", +"m1": 0.5743916, +"m2": 0.5884819, +"d_pc": 175.0, +"L_pred": 0.12, +"method": "Orbital+M1", +"w3_pred_jy": 0.37154108531287133, +"w3_meas_jy": 0.0011002792237581802, +"w3_detected": true, +"w3_ratio": 0.0029613931466869812, +"w4_pred_jy": 0.4056692231265799, +"w4_meas_jy": 0.0023182597595862295, +"w4_detected": false, +"w4_ratio": 0.005714655259570601 +}, +{ +"source_id": "3482193667796615296", +"m1": 0.62427646, +"m2": 0.596515, +"d_pc": 158.9, +"L_pred": 0.127, +"method": "Orbital+M1", +"w3_pred_jy": 0.47553723063727205, +"w3_meas_jy": 0.0011986790428329221, +"w3_detected": true, +"w3_ratio": 0.0025206839036063713, +"w4_pred_jy": 0.5192179991559721, +"w4_meas_jy": 0.002114278029185267, +"w4_detected": false, +"w4_ratio": 0.00407204301973773 +}, +{ +"source_id": "3587540900511161856", +"m1": 0.8925072, +"m2": 0.92873615, +"d_pc": 76.7, +"L_pred": 0.744, +"method": "Orbital+M1", +"w3_pred_jy": 12.01118477270075, +"w3_meas_jy": 0.014031461610304915, +"w3_detected": true, +"w3_ratio": 0.0011681996302476247, +"w4_pred_jy": 13.114479631419968, +"w4_meas_jy": 0.003050437258138853, +"w4_detected": false, +"w4_ratio": 0.0002326007088249652 +}, +{ +"source_id": "4246017970343178752", +"m1": 0.6131663, +"m2": 0.55689794, +"d_pc": 114.4, +"L_pred": 0.096, +"method": "Orbital+M1", +"w3_pred_jy": 0.6973975959754011, +"w3_meas_jy": 0.0019226618650046233, +"w3_detected": true, +"w3_ratio": 0.0027569092238058706, +"w4_pred_jy": 0.761457486542699, +"w4_meas_jy": 0.0036741941113247506, +"w4_detected": false, +"w4_ratio": 0.004825212406810737 +}, +{ +"source_id": "5005110352796333824", +"m1": 0.56606007, +"m2": 0.6258809, +"d_pc": 137.8, +"L_pred": 0.153, +"method": "Orbital+M1", +"w3_pred_jy": 0.7661536045748775, +"w3_meas_jy": 0.0015584860253174283, +"w3_detected": true, +"w3_ratio": 0.002034169148342256, +"w4_pred_jy": 0.8365291211382275, +"w4_meas_jy": 0.001720133273696901, +"w4_detected": false, +"w4_ratio": 0.0020562742291103902 +}, +{ +"source_id": "5214734787253670400", +"m1": 0.6831441, +"m2": 0.5442657, +"d_pc": 171.4, +"L_pred": 0.088, +"method": "Orbital+M1", +"w3_pred_jy": 0.2833021731075301, +"w3_meas_jy": 0.0013375280924368014, +"w3_detected": true, +"w3_ratio": 0.00472120661047358, +"w4_pred_jy": 0.3093250706791274, +"w4_meas_jy": 0.0013377103793304468, +"w4_detected": false, +"w4_ratio": 0.004324610276152158 +}, +{ +"source_id": "5391297628620054784", +"m1": 0.61965585, +"m2": 0.94923437, +"d_pc": 177.4, +"L_pred": 0.812, +"method": "Orbital+M1", +"w3_pred_jy": 2.447962829349859, +"w3_meas_jy": 0.0021872725990414255, +"w3_detected": true, +"w3_ratio": 0.0008935072758528491, +"w4_pred_jy": 2.6728219798056854, +"w4_meas_jy": 0.0037736541638986884, +"w4_detected": false, +"w4_ratio": 0.0014118613930932406 +}, +{ +"source_id": "2035577729682322176", +"m1": 0.6429483, +"m2": 0.7479973, +"d_pc": 28.4, +"L_pred": 0.313, +"method": "Orbital+SB2", +"w3_pred_jy": 36.766196029046284, +"w3_meas_jy": 0.14083250765816555, +"w3_detected": true, +"w3_ratio": 0.0038304889509620218, +"w4_pred_jy": 40.14337786590423, +"w4_meas_jy": 0.040922494290972396, +"w4_detected": true, +"w4_ratio": 0.0010194083424586427 +}, +{ +"source_id": "5870842443949476096", +"m1": 0.5661364, +"m2": 0.55003726, +"d_pc": 150.8, +"L_pred": 0.092, +"method": "Orbital+M1", +"w3_pred_jy": 0.3818106780451421, +"w3_meas_jy": 0.0015729065189617935, +"w3_detected": true, +"w3_ratio": 0.004119598034855971, +"w4_pred_jy": 0.41688213569590854, +"w4_meas_jy": 0.0019786186430073398, +"w4_detected": false, +"w4_ratio": 0.00474623034566928 +}, +{ +"source_id": "1202251476040990208", +"m1": 0.70096064, +"m2": 0.77780473, +"d_pc": 102.7, +"L_pred": 0.366, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 3.293291544388079, +"w3_meas_jy": 0.006407710946545558, +"w3_detected": true, +"w3_ratio": 0.0019456859072998238, +"w4_pred_jy": 3.5957988904947733, +"w4_meas_jy": 0.0026011302321213817, +"w4_detected": false, +"w4_ratio": 0.0007233803422647679 +}, +{ +"source_id": "1827987597904124672", +"m1": 0.83825934, +"m2": 0.6537696, +"d_pc": 149.0, +"L_pred": 0.183, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 0.7802794682861133, +"w3_meas_jy": 0.0043082699960130455, +"w3_detected": true, +"w3_ratio": 0.005521444778594747, +"w4_pred_jy": 0.8519525248592544, +"w4_meas_jy": 0.002207812036979426, +"w4_detected": false, +"w4_ratio": 0.00259147308395402 +}, +{ +"source_id": "5752674248460386816", +"m1": 0.6438897, +"m2": 0.85058224, +"d_pc": 62.9, +"L_pred": 0.523, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 12.547547170468203, +"w3_meas_jy": 0.01578712008267051, +"w3_detected": true, +"w3_ratio": 0.0012581837603947757, +"w4_pred_jy": 13.700109931319119, +"w4_meas_jy": 0.0030814994658436203, +"w4_detected": true, +"w4_ratio": 0.000224925163468883 +}, +{ +"source_id": "6642282410641730944", +"m1": 0.85963345, +"m2": 0.6206331, +"d_pc": 147.6, +"L_pred": 0.148, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 0.6463213283841833, +"w3_meas_jy": 0.004175446393703565, +"w3_detected": true, +"w3_ratio": 0.006460325863208424, +"w4_pred_jy": 0.7056895765779464, +"w4_meas_jy": 0.0037218776877200803, +"w4_detected": false, +"w4_ratio": 0.005274100413624266 +}, +{ +"source_id": "1277688006750319616", +"m1": 0.38864148, +"m2": 0.5522823, +"d_pc": 182.0, +"L_pred": 0.093, +"method": "Orbital+M1", +"w3_pred_jy": 0.26638905606108715, +"w3_meas_jy": 0.00029047108863466335, +"w3_detected": true, +"w3_ratio": 0.0010904017339513144, +"w4_pred_jy": 0.2908583887316874, +"w4_meas_jy": 0.0013500880610739896, +"w4_detected": false, +"w4_ratio": 0.004641736712360825 +}, +{ +"source_id": "875505688604417920", +"m1": 0.27396795, +"m2": 1.0934972, +"d_pc": 178.2, +"L_pred": 1.43, +"method": "Orbital+M1", +"w3_pred_jy": 4.269068452596755, +"w3_meas_jy": 0.0005103908880639541, +"w3_detected": false, +"w3_ratio": 0.00011955556434179396, +"w4_pred_jy": 4.6612063943904305, +"w4_meas_jy": 0.002346184151419015, +"w4_detected": false, +"w4_ratio": 0.0005033426870439702 +}, +{ +"source_id": "1808811015563438336", +"m1": 0.3845135, +"m2": 0.6826981, +"d_pc": 163.7, +"L_pred": 0.217, +"method": "Orbital+M1", +"w3_pred_jy": 0.7692836105473629, +"w3_meas_jy": 0.0005925198611394628, +"w3_detected": true, +"w3_ratio": 0.0007702229100108753, +"w4_pred_jy": 0.8399466357589066, +"w4_meas_jy": 0.0020061439701759974, +"w4_detected": false, +"w4_ratio": 0.002388418364654096 +}, +{ +"source_id": "987843891126698240", +"m1": 0.6296102, +"m2": 0.56766415, +"d_pc": 187.3, +"L_pred": 0.104, +"method": "Orbital+M1", +"w3_pred_jy": 0.2806704360357143, +"w3_meas_jy": 0.0009109675612060754, +"w3_detected": true, +"w3_ratio": 0.003245684063034548, +"w4_pred_jy": 0.3064515937593462, +"w4_meas_jy": 0.0028970907319777867, +"w4_detected": false, +"w4_ratio": 0.009453665084388 +}, +{ +"source_id": "2916890518978420864", +"m1": 1.1641549, +"m2": 1.0062019, +"d_pc": 145.8, +"L_pred": 1.025, +"method": "Orbital+M1", +"w3_pred_jy": 4.575204322830555, +"w3_meas_jy": 0.019262068030502122, +"w3_detected": true, +"w3_ratio": 0.004210100067964878, +"w4_pred_jy": 4.9954625656678155, +"w4_meas_jy": 0.0051140161687899055, +"w4_detected": true, +"w4_ratio": 0.0010237322573362615 +}, +{ +"source_id": "2995158395204088064", +"m1": 0.64970714, +"m2": 0.6397344, +"d_pc": 176.2, +"L_pred": 0.167, +"method": "Orbital+M1", +"w3_pred_jy": 0.5119271599121875, +"w3_meas_jy": 0.0014965902528742477, +"w3_detected": true, +"w3_ratio": 0.002923443743697761, +"w4_pred_jy": 0.5589505480506792, +"w4_meas_jy": 0.0020852690471062176, +"w4_detected": false, +"w4_ratio": 0.003730686112355595 +}, +{ +"source_id": "4253952974053909504", +"m1": 0.6069226, +"m2": 0.5394245, +"d_pc": 139.9, +"L_pred": 0.085, +"method": "Orbital+M1", +"w3_pred_jy": 0.4106407912842368, +"w3_meas_jy": 0.0013750006782270456, +"w3_detected": true, +"w3_ratio": 0.0033484269157159777, +"w4_pred_jy": 0.4483604569440316, +"w4_meas_jy": 0.0021496219931296016, +"w4_detected": false, +"w4_ratio": 0.0047944058398484875 +}, +{ +"source_id": "4486205735675856000", +"m1": 0.55990237, +"m2": 0.57093555, +"d_pc": 154.2, +"L_pred": 0.106, +"method": "Orbital+M1", +"w3_pred_jy": 0.4236508861104079, +"w3_meas_jy": 0.001200889126166203, +"w3_detected": true, +"w3_ratio": 0.002834619649192091, +"w4_pred_jy": 0.46256560213407577, +"w4_meas_jy": 0.002098756705844683, +"w4_detected": false, +"w4_ratio": 0.004537208768144314 +}, +{ +"source_id": "4516942686337929984", +"m1": 0.8082717, +"m2": 0.6045937, +"d_pc": 160.6, +"L_pred": 0.134, +"method": "Orbital+M1", +"w3_pred_jy": 0.4913482583912388, +"w3_ratio": null, +"w4_pred_jy": 0.5364813587125157, +"w4_ratio": null +}, +{ +"source_id": "5420353735212060416", +"m1": 0.6155414, +"m2": 0.5383772, +"d_pc": 186.2, +"L_pred": 0.084, +"method": "Orbital+M1", +"w3_pred_jy": 0.22981241578274994, +"w3_meas_jy": 0.0009512680542320129, +"w3_detected": true, +"w3_ratio": 0.004139324026475929, +"w4_pred_jy": 0.2509219783780425, +"w4_meas_jy": 0.0020415597589937017, +"w4_detected": false, +"w4_ratio": 0.008136233311208236 +}, +{ +"source_id": "5761922554295015936", +"m1": 0.6198879, +"m2": 0.6536147, +"d_pc": 124.7, +"L_pred": 0.183, +"method": "Orbital+M1", +"w3_pred_jy": 1.1136062132691782, +"w3_meas_jy": 0.0021276633483609713, +"w3_detected": true, +"w3_ratio": 0.0019106065708046455, +"w4_pred_jy": 1.2158972056224164, +"w4_meas_jy": 0.004137729510499858, +"w4_detected": false, +"w4_ratio": 0.003403025758564647 +}, +{ +"source_id": "424883797289750272", +"m1": 0.8098088, +"m2": 1.0352029, +"d_pc": 167.8, +"L_pred": 1.148, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 3.8677459385867423, +"w3_meas_jy": 0.004482320558367013, +"w3_detected": true, +"w3_ratio": 0.0011588973602554757, +"w4_pred_jy": 4.223020150883735, +"w4_meas_jy": 0.0018262578544736988, +"w4_detected": true, +"w4_ratio": 0.000432453028691214 +}, +{ +"source_id": "4873248568978164608", +"m1": 0.7310507, +"m2": 0.55828774, +"d_pc": 120.9, +"L_pred": 0.097, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 0.6303511961894959, +"w3_meas_jy": 0.0061249551423681855, +"w3_detected": true, +"w3_ratio": 0.009716734384568226, +"w4_pred_jy": 0.6882524979431782, +"w4_meas_jy": 0.0025583625950984833, +"w4_detected": false, +"w4_ratio": 0.0037171860657884605 +}, +{ +"source_id": "1045412116636456832", +"m1": 0.7035987, +"m2": 0.73868304, +"d_pc": 189.6, +"L_pred": 0.298, +"method": "Orbital+M1", +"w3_pred_jy": 0.7859615534442083, +"w3_meas_jy": 0.0021672195633188718, +"w3_detected": true, +"w3_ratio": 0.0027574116746827775, +"w4_pred_jy": 0.8581565414887545, +"w4_meas_jy": 0.0019604785582520512, +"w4_detected": false, +"w4_ratio": 0.002284523234946105 +}, +{ +"source_id": "1396651213505240832", +"m1": 0.55213875, +"m2": 0.63786966, +"d_pc": 145.4, +"L_pred": 0.166, +"method": "Orbital+M1", +"w3_pred_jy": 0.7429331165932602, +"w3_meas_jy": 0.0012563276335028786, +"w3_detected": true, +"w3_ratio": 0.0016910373295294773, +"w4_pred_jy": 0.8111757007696824, +"w4_meas_jy": 0.0013193563048495636, +"w4_detected": false, +"w4_ratio": 0.0016264741456107415 +}, +{ +"source_id": "1517420677347202816", +"m1": 0.9580981, +"m2": 0.7804326, +"d_pc": 198.2, +"L_pred": 0.371, +"method": "Orbital+M1", +"w3_pred_jy": 0.8955872003257085, +"w3_meas_jy": 0.006484894459084509, +"w3_detected": true, +"w3_ratio": 0.0072409414256100054, +"w4_pred_jy": 0.977851920447229, +"w4_meas_jy": 0.0032958094662041064, +"w4_detected": false, +"w4_ratio": 0.0033704586525705646 +}, +{ +"source_id": "813135719719859456", +"m1": 0.37119058, +"m2": 0.60749274, +"d_pc": 84.9, +"L_pred": 0.136, +"method": "Orbital+M1", +"w3_pred_jy": 1.7942347919921888, +"w3_meas_jy": 0.000961840173378651, +"w3_detected": true, +"w3_ratio": 0.0005360726353492973, +"w4_pred_jy": 1.9590453463880662, +"w4_meas_jy": 0.0023289603604473236, +"w4_detected": false, +"w4_ratio": 0.0011888241202488129 +}, +{ +"source_id": "2272505820956464896", +"m1": 0.794741, +"m2": 0.5582563, +"d_pc": 197.5, +"L_pred": 0.097, +"method": "Orbital+M1", +"w3_pred_jy": 0.23620177978879628, +"w3_meas_jy": 0.001619954857306136, +"w3_detected": true, +"w3_ratio": 0.006858351612568904, +"w4_pred_jy": 0.257898241394616, +"w4_meas_jy": 0.0011823936720247827, +"w4_detected": false, +"w4_ratio": 0.0045847294872227344 +}, +{ +"source_id": "2429401251156528384", +"m1": 0.44902188, +"m2": 0.61621463, +"d_pc": 79.8, +"L_pred": 0.144, +"method": "Orbital+M1", +"w3_pred_jy": 2.1490925731396886, +"w3_meas_jy": 0.0025159552506656864, +"w3_detected": true, +"w3_ratio": 0.0011707058514422366, +"w4_pred_jy": 2.3464988100536117, +"w4_meas_jy": 0.002236464952623522, +"w4_detected": false, +"w4_ratio": 0.0009531072178862192 +}, +{ +"source_id": "3253873309421802624", +"m1": 0.4451234, +"m2": 0.5890645, +"d_pc": 84.9, +"L_pred": 0.12, +"method": "Orbital+M1", +"w3_pred_jy": 1.585648884156534, +"w3_meas_jy": 0.0022464818408786144, +"w3_detected": true, +"w3_ratio": 0.0014167586931287139, +"w4_pred_jy": 1.7312996500659827, +"w4_meas_jy": 0.0021755150737390147, +"w4_detected": false, +"w4_ratio": 0.0012565791679424773 +}, +{ +"source_id": "3396221960268240512", +"m1": 0.47161147, +"m2": 0.55075103, +"d_pc": 195.4, +"L_pred": 0.092, +"method": "Orbital+M1", +"w3_pred_jy": 0.2286272531383125, +"w3_meas_jy": 0.0009824329329445615, +"w3_detected": true, +"w3_ratio": 0.004297094591563061, +"w4_pred_jy": 0.2496279518806964, +"w4_meas_jy": 0.0037287399582297104, +"w4_detected": false, +"w4_ratio": 0.01493718924558485 +}, +{ +"source_id": "4071380820557119104", +"m1": 0.6065128, +"m2": 0.55256176, +"d_pc": 38.9, +"L_pred": 0.093, +"method": "Orbital+M1", +"w3_pred_jy": 5.8510316978189305, +"w3_meas_jy": 0.01633438969123001, +"w3_detected": true, +"w3_ratio": 0.002791711023770205, +"w4_pred_jy": 6.388481858862061, +"w4_meas_jy": 0.006052880457054284, +"w4_detected": true, +"w4_ratio": 0.0009474677381540604 +}, +{ +"source_id": "4174870153465477632", +"m1": 1.2916489, +"m2": 0.9488002, +"d_pc": 163.7, +"L_pred": 0.81, +"method": "Orbital+M1", +"w3_pred_jy": 2.8671307083831334, +"w3_meas_jy": 0.01066357707655175, +"w3_detected": true, +"w3_ratio": 0.0037192504148390506, +"w4_pred_jy": 3.1304927854552216, +"w4_meas_jy": 0.0027137016379690676, +"w4_detected": false, +"w4_ratio": 0.0008668608503355659 +}, +{ +"source_id": "4470220623321441152", +"m1": 0.8251972, +"m2": 0.7920483, +"d_pc": 168.0, +"L_pred": 0.394, +"method": "Orbital+M1", +"w3_pred_jy": 1.3234785474277442, +"w3_meas_jy": 0.002427185183720414, +"w3_detected": true, +"w3_ratio": 0.0018339437299061527, +"w4_pred_jy": 1.44504749375858, +"w4_meas_jy": 0.003499146267642398, +"w4_detected": false, +"w4_ratio": 0.0024214749222816827 +}, +{ +"source_id": "4847354520387625856", +"m1": 0.67538583, +"m2": 0.5611919, +"d_pc": 189.1, +"L_pred": 0.099, +"method": "Orbital+M1", +"w3_pred_jy": 0.2631436458505515, +"w3_meas_jy": 0.0016638068668606819, +"w3_detected": true, +"w3_ratio": 0.006322808447389287, +"w4_pred_jy": 0.28731486934479006, +"w4_meas_jy": 0.0018499589718569485, +"w4_detected": false, +"w4_ratio": 0.006438786047083833 +}, +{ +"source_id": "513410735478322944", +"m1": 0.3500789, +"m2": 0.7589344, +"d_pc": 168.8, +"L_pred": 0.332, +"method": "Orbital+M1", +"w3_pred_jy": 1.1049016954998907, +"w3_ratio": null, +"w4_pred_jy": 1.206393128951636, +"w4_ratio": null +}, +{ +"source_id": "5157761114062220544", +"m1": 0.8452456, +"m2": 0.7309454, +"d_pc": 170.0, +"L_pred": 0.285, +"method": "Orbital+M1", +"w3_pred_jy": 0.9370577811528308, +"w3_meas_jy": 0.0031441475048833057, +"w3_detected": true, +"w3_ratio": 0.0033553400527928665, +"w4_pred_jy": 1.0231318073070628, +"w4_meas_jy": 0.002352675862301804, +"w4_detected": false, +"w4_ratio": 0.0022994846270043856 +}, +{ +"source_id": "5236177841023169152", +"m1": 0.6851388, +"m2": 0.62877434, +"d_pc": 180.8, +"L_pred": 0.156, +"method": "Orbital+M1", +"w3_pred_jy": 0.45372105067807733, +"w3_meas_jy": 0.001559922105230963, +"w3_detected": true, +"w3_ratio": 0.0034380642090546375, +"w4_pred_jy": 0.4953978803979523, +"w4_meas_jy": 0.0011802176272168307, +"w4_detected": false, +"w4_ratio": 0.002382363094223907 +}, +{ +"source_id": "5299929002634004480", +"m1": 0.45309615, +"m2": 0.5936591, +"d_pc": 196.6, +"L_pred": 0.124, +"method": "Orbital+M1", +"w3_pred_jy": 0.30492979513745416, +"w3_meas_jy": 0.0004167762016950806, +"w3_detected": true, +"w3_ratio": 0.0013667939582854116, +"w4_pred_jy": 0.332939311401836, +"w4_meas_jy": 0.0016594420726827052, +"w4_detected": false, +"w4_ratio": 0.004984217891529988 +}, +{ +"source_id": "5813943438711536128", +"m1": 1.0531571, +"m2": 0.83930737, +"d_pc": 144.9, +"L_pred": 0.496, +"method": "Orbital+M1", +"w3_pred_jy": 2.2434777131108823, +"w3_meas_jy": 0.012448095525261866, +"w3_detected": true, +"w3_ratio": 0.005548571065589466, +"w4_pred_jy": 2.449553755846659, +"w4_meas_jy": 0.002910463095214074, +"w4_detected": false, +"w4_ratio": 0.001188160532614279 +}, +{ +"source_id": "3027629168300439040", +"m1": 0.71673274, +"m2": 1.0718355, +"d_pc": 143.0, +"L_pred": 1.32, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 6.1254604150406315, +"w3_meas_jy": 0.0051511347680578716, +"w3_detected": true, +"w3_ratio": 0.0008409383816128543, +"w4_pred_jy": 6.688118396837946, +"w4_meas_jy": 0.003118617393703483, +"w4_detected": false, +"w4_ratio": 0.0004662921929100305 +}, +{ +"source_id": "6350719930141819520", +"m1": 0.74057853, +"m2": 0.865056, +"d_pc": 117.9, +"L_pred": 0.56, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 3.820209582007039, +"w3_meas_jy": 0.0060187029903631195, +"w3_detected": true, +"w3_ratio": 0.0015754902607204731, +"w4_pred_jy": 4.171117312661369, +"w4_meas_jy": 0.0015134291575698662, +"w4_detected": false, +"w4_ratio": 0.00036283543332043736 +}, +{ +"source_id": "1205002316694534656", +"m1": 0.72130907, +"m2": 0.55191153, +"d_pc": 89.5, +"L_pred": 0.093, +"method": "Orbital+M1", +"w3_pred_jy": 1.0995723284967307, +"w3_meas_jy": 0.0076683674026321764, +"w3_detected": true, +"w3_ratio": 0.006973954512947691, +"w4_pred_jy": 1.200574229622891, +"w4_meas_jy": 0.0022426530789319984, +"w4_detected": false, +"w4_ratio": 0.0018679836894686902 +}, +{ +"source_id": "1759496613381384960", +"m1": 1.0477492, +"m2": 0.96681, +"d_pc": 147.8, +"L_pred": 0.874, +"method": "Orbital+M1", +"w3_pred_jy": 3.795314405321131, +"w3_meas_jy": 0.00675309582614983, +"w3_detected": true, +"w3_ratio": 0.0017793244788051844, +"w4_pred_jy": 4.143935374014485, +"w4_meas_jy": 0.0030085836899074727, +"w4_detected": false, +"w4_ratio": 0.0007260209000298363 +}, +{ +"source_id": "2200029003760692096", +"m1": 1.0416768, +"m2": 0.65734255, +"d_pc": 153.8, +"L_pred": 0.187, +"method": "Orbital+M1", +"w3_pred_jy": 0.748268564545393, +"w3_meas_jy": 0.006461047180270638, +"w3_detected": true, +"w3_ratio": 0.008634663390137224, +"w4_pred_jy": 0.817001239616756, +"w4_meas_jy": 0.002787161259155241, +"w4_detected": false, +"w4_ratio": 0.0034114529134162143 +}, +{ +"source_id": "2391092857295041536", +"m1": 0.814477, +"m2": 0.6574197, +"d_pc": 143.5, +"L_pred": 0.187, +"method": "Orbital+M1", +"w3_pred_jy": 0.8610793572336275, +"w3_meas_jy": 0.003066923281921879, +"w3_detected": true, +"w3_ratio": 0.0035617196674821265, +"w4_pred_jy": 0.9401743379339781, +"w4_meas_jy": 0.002502430915595426, +"w4_detected": false, +"w4_ratio": 0.002661666900092687 +}, +{ +"source_id": "3047635233349460736", +"m1": 0.47659108, +"m2": 0.549693, +"d_pc": 119.6, +"L_pred": 0.091, +"method": "Orbital+M1", +"w3_pred_jy": 0.6056017895237, +"w3_meas_jy": 0.00100069772483808, +"w3_detected": true, +"w3_ratio": 0.00165240219257793, +"w4_pred_jy": 0.6612297191123995, +"w4_meas_jy": 0.0038793779839806863, +"w4_detected": false, +"w4_ratio": 0.005866914132637841 +}, +{ +"source_id": "3619399009406031360", +"m1": 0.63315636, +"m2": 0.8341136, +"d_pc": 135.3, +"L_pred": 0.484, +"method": "Orbital+M1", +"w3_pred_jy": 2.509001985494416, +"w3_meas_jy": 0.0013179620719101868, +"w3_detected": true, +"w3_ratio": 0.0005252933554974742, +"w4_pred_jy": 2.7394679256574417, +"w4_meas_jy": 0.002157556099410563, +"w4_detected": false, +"w4_ratio": 0.0007875821721448969 +}, +{ +"source_id": "4271998639836225920", +"m1": 0.4370083, +"m2": 1.1269524, +"d_pc": 178.6, +"L_pred": 1.613, +"method": "Orbital+M1", +"w3_pred_jy": 4.7972851229061835, +"w3_meas_jy": 0.0003846829274520955, +"w3_detected": false, +"w3_ratio": 8.018763062785302e-05, +"w4_pred_jy": 5.237942735962158, +"w4_meas_jy": 0.002530242211978409, +"w4_detected": false, +"w4_ratio": 0.0004830603043073606 +}, +{ +"source_id": "4471428879219155072", +"m1": 0.7643757, +"m2": 0.55336004, +"d_pc": 188.5, +"L_pred": 0.094, +"method": "Orbital+M1", +"w3_pred_jy": 0.2502056030673129, +"w3_meas_jy": 0.001145784419536984, +"w3_detected": true, +"w3_ratio": 0.004579371546802385, +"w4_pred_jy": 0.273188394582961, +"w4_meas_jy": 0.0022530046952115466, +"w4_detected": false, +"w4_ratio": 0.00824707322816878 +}, +{ +"source_id": "539382029057972096", +"m1": 0.60423696, +"m2": 0.5928362, +"d_pc": 165.5, +"L_pred": 0.124, +"method": "Orbital+M1", +"w3_pred_jy": 0.4275487631317502, +"w3_meas_jy": 0.001435829633728144, +"w3_detected": true, +"w3_ratio": 0.003358282744664822, +"w4_pred_jy": 0.4668215210770896, +"w4_meas_jy": 0.002303361464601706, +"w4_detected": false, +"w4_ratio": 0.004934137267894587 +}, +{ +"source_id": "5764337356707279360", +"m1": 0.63627744, +"m2": 0.60669136, +"d_pc": 150.7, +"L_pred": 0.135, +"method": "Orbital+M1", +"w3_pred_jy": 0.5660999702539098, +"w3_meas_jy": 0.0012903362919167475, +"w3_detected": true, +"w3_ratio": 0.00227934350771649, +"w4_pred_jy": 0.6180994356290315, +"w4_meas_jy": 0.003101430809118363, +"w4_detected": false, +"w4_ratio": 0.005017689113341575 +}, +{ +"source_id": "2282548141690487424", +"m1": 0.75062937, +"m2": 0.8111198, +"d_pc": 150.4, +"L_pred": 0.433, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 1.8145867330643701, +"w3_meas_jy": 0.00444531880149053, +"w3_detected": true, +"w3_ratio": 0.002449769261777601, +"w4_pred_jy": 1.9812667276840734, +"w4_meas_jy": 0.001705933496514597, +"w4_detected": false, +"w4_ratio": 0.0008610317190904847 +}, +{ +"source_id": "1581117310088807552", +"m1": 0.5621478, +"m2": 1.3129072, +"d_pc": 134.1, +"L_pred": 2.971, +"method": "Orbital+M1", +"w3_pred_jy": 15.665192589756726, +"w3_meas_jy": 0.0004507159346060572, +"w3_detected": true, +"w3_ratio": 2.8771809348885674e-05, +"w4_pred_jy": 17.104128612488378, +"w4_meas_jy": 0.0016778846338843557, +"w4_detected": false, +"w4_ratio": 9.809822364521207e-05 +}, +{ +"source_id": "159844874438662400", +"m1": 0.47507775, +"m2": 0.6302545, +"d_pc": 103.8, +"L_pred": 0.158, +"method": "Orbital+M1", +"w3_pred_jy": 1.3890965117087422, +"w3_meas_jy": 0.0021159378747010447, +"w3_detected": true, +"w3_ratio": 0.0015232475618977743, +"w4_pred_jy": 1.516692837020159, +"w4_meas_jy": 0.003583951276083784, +"w4_detected": false, +"w4_ratio": 0.002363004023362542 +}, +{ +"source_id": "953936498713470208", +"m1": 0.88699245, +"m2": 0.8866063, +"d_pc": 118.7, +"L_pred": 0.618, +"method": "Orbital+M1", +"w3_pred_jy": 4.156850693604819, +"w3_meas_jy": 0.011217676523107739, +"w3_detected": true, +"w3_ratio": 0.0026985998174930297, +"w4_pred_jy": 4.538680803249065, +"w4_meas_jy": 0.006420400158370378, +"w4_detected": true, +"w4_ratio": 0.001414596098887206 +}, +{ +"source_id": "2024549009598558208", +"m1": 0.6461675, +"m2": 0.5996638, +"d_pc": 168.9, +"L_pred": 0.129, +"method": "Orbital+M1", +"w3_pred_jy": 0.42979719506718134, +"w3_meas_jy": 0.0010932082799723917, +"w3_detected": true, +"w3_ratio": 0.0025435444728798494, +"w4_pred_jy": 0.4692764841284335, +"w4_meas_jy": 0.002181534556425964, +"w4_detected": false, +"w4_ratio": 0.00464871910314797 +}, +{ +"source_id": "248938336000512256", +"m1": 0.7193735, +"m2": 0.5612152, +"d_pc": 185.5, +"L_pred": 0.099, +"method": "Orbital+M1", +"w3_pred_jy": 0.2734780195745537, +"w3_meas_jy": 0.0016455190422092526, +"w3_detected": true, +"w3_ratio": 0.006017006576137877, +"w4_pred_jy": 0.29859851340419574, +"w4_meas_jy": 0.0038473535450486555, +"w4_detected": false, +"w4_ratio": 0.012884704284648305 +}, +{ +"source_id": "2509669104677052800", +"m1": 0.8818398, +"m2": 0.80372155, +"d_pc": 157.1, +"L_pred": 0.417, +"method": "Orbital+M1", +"w3_pred_jy": 1.603407804719423, +"w3_meas_jy": 0.004565653119250555, +"w3_detected": true, +"w3_ratio": 0.0028474684392904583, +"w4_pred_jy": 1.7506898273386984, +"w4_meas_jy": 0.0026446128071988153, +"w4_detected": false, +"w4_ratio": 0.0015106118547675627 +}, +{ +"source_id": "2968250081499798144", +"m1": 0.7427594, +"m2": 0.60115755, +"d_pc": 134.3, +"L_pred": 0.131, +"method": "Orbital+M1", +"w3_pred_jy": 0.6870266947280466, +"w3_meas_jy": 0.004137165671068792, +"w3_detected": true, +"w3_ratio": 0.006021841222205277, +"w4_pred_jy": 0.7501339597015314, +"w4_meas_jy": 0.0033601765511296817, +"w4_detected": false, +"w4_ratio": 0.004479435316415554 +}, +{ +"source_id": "3436902619186567552", +"m1": 0.7822035, +"m2": 0.5738507, +"d_pc": 186.0, +"L_pred": 0.108, +"method": "Orbital+M1", +"w3_pred_jy": 0.29721356657455955, +"w3_meas_jy": 0.0016592159441086243, +"w3_detected": true, +"w3_ratio": 0.005582571358472596, +"w4_pred_jy": 0.32451430385807917, +"w4_meas_jy": 0.002997520050469579, +"w4_detected": false, +"w4_ratio": 0.009236942762869687 +}, +{ +"source_id": "4154266710007159296", +"m1": 0.59207314, +"m2": 0.582542, +"d_pc": 95.6, +"L_pred": 0.115, +"method": "Orbital+M1", +"w3_pred_jy": 1.194131377692061, +"w3_meas_jy": 0.00838499701593163, +"w3_detected": true, +"w3_ratio": 0.0070218379422686324, +"w4_pred_jy": 1.3038190591801806, +"w4_meas_jy": 0.01323006862150145, +"w4_detected": true, +"w4_ratio": 0.01014716614882152 +}, +{ +"source_id": "4255577674234698624", +"m1": 0.5843773, +"m2": 0.5364352, +"d_pc": 179.5, +"L_pred": 0.083, +"method": "Orbital+M1", +"w3_pred_jy": 0.2437617812277669, +"w3_meas_jy": 0.0033845654155279133, +"w3_detected": true, +"w3_ratio": 0.013884725482726238, +"w4_pred_jy": 0.26615267147467153, +"w4_meas_jy": 0.0035806518546438243, +"w4_detected": false, +"w4_ratio": 0.013453375593806795 +}, +{ +"source_id": "453918914380604928", +"m1": 0.5611493, +"m2": 0.56029034, +"d_pc": 146.7, +"L_pred": 0.099, +"method": "Orbital+M1", +"w3_pred_jy": 0.4345305683084534, +"w3_meas_jy": 0.001892792090081104, +"w3_detected": true, +"w3_ratio": 0.004355946918646924, +"w4_pred_jy": 0.474444644317065, +"w4_meas_jy": 0.0019840933284321523, +"w4_detected": false, +"w4_ratio": 0.004181927970307552 +}, +{ +"source_id": "4563055963458318208", +"m1": 0.96587825, +"m2": 0.87387335, +"d_pc": 59.2, +"L_pred": 0.583, +"method": "Orbital+M1", +"w3_pred_jy": 15.777166795442874, +"w3_meas_jy": 0.08894118519436633, +"w3_detected": true, +"w3_ratio": 0.005637335672971169, +"w4_pred_jy": 17.22638827858335, +"w4_meas_jy": 0.024074767230015177, +"w4_detected": true, +"w4_ratio": 0.001397551642322265 +}, +{ +"source_id": "4599830504238392832", +"m1": 0.7130172, +"m2": 0.540625, +"d_pc": 150.7, +"L_pred": 0.085, +"method": "Orbital+M1", +"w3_pred_jy": 0.35657837014065447, +"w3_meas_jy": 0.0027816527427489447, +"w3_detected": true, +"w3_ratio": 0.007800957589356038, +"w4_pred_jy": 0.3893320984323726, +"w4_meas_jy": 0.0016038439003168425, +"w4_detected": false, +"w4_ratio": 0.004119475139025641 +}, +{ +"source_id": "4770265728644083328", +"m1": 0.78334254, +"m2": 0.6033015, +"d_pc": 177.7, +"L_pred": 0.132, +"method": "Orbital+M1", +"w3_pred_jy": 0.3979372607979985, +"w3_meas_jy": 0.002529897421356975, +"w3_detected": true, +"w3_ratio": 0.006357528360836773, +"w4_pred_jy": 0.4344900357523149, +"w4_meas_jy": 0.0015630112242921415, +"w4_detected": false, +"w4_ratio": 0.0035973465342785233 +}, +{ +"source_id": "4880892167656006784", +"m1": 0.6683162, +"m2": 0.53694034, +"d_pc": 168.4, +"L_pred": 0.083, +"method": "Orbital+M1", +"w3_pred_jy": 0.2779583186818123, +"w3_meas_jy": 0.0011145586131515014, +"w3_detected": true, +"w3_ratio": 0.004009804845694767, +"w4_pred_jy": 0.3034903531766014, +"w4_meas_jy": 0.0021755150737390147, +"w4_detected": false, +"w4_ratio": 0.0071683170518210175 +}, +{ +"source_id": "5226519967060929664", +"m1": 0.7038451, +"m2": 0.5481312, +"d_pc": 122.3, +"L_pred": 0.09, +"method": "Orbital+M1", +"w3_pred_jy": 0.5724467210793497, +"w3_meas_jy": 0.003176163951899389, +"w3_detected": true, +"w3_ratio": 0.005548400986402235, +"w4_pred_jy": 0.6250291712047513, +"w4_meas_jy": 0.001702793943406665, +"w4_detected": false, +"w4_ratio": 0.0027243431536555472 +}, +{ +"source_id": "5983827326751931648", +"m1": 0.37343895, +"m2": 0.58383095, +"d_pc": 141.1, +"L_pred": 0.116, +"method": "Orbital+M1", +"w3_pred_jy": 0.5533739679394254, +"w3_meas_jy": 0.0006331446075727825, +"w3_detected": false, +"w3_ratio": 0.001144153220525345, +"w4_pred_jy": 0.6042044784452878, +"w4_meas_jy": 0.002246788005809814, +"w4_detected": false, +"w4_ratio": 0.003718588798929709 +}, +{ +"source_id": "1336739232927984256", +"m1": 0.8579512, +"m2": 1.0749376, +"d_pc": 126.8, +"L_pred": 1.335, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 7.875097421184768, +"w3_meas_jy": 0.00958303142678514, +"w3_detected": true, +"w3_ratio": 0.001216877825664209, +"w4_pred_jy": 8.598469399980203, +"w4_meas_jy": 0.0024612860871852846, +"w4_detected": true, +"w4_ratio": 0.0002862470019595524 +}, +{ +"source_id": "2095172531182273664", +"m1": 1.1137232, +"m2": 0.55891824, +"d_pc": 196.4, +"L_pred": 0.098, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 0.2399825146308938, +"w3_meas_jy": 0.014719834000852056, +"w3_detected": true, +"w3_ratio": 0.061337110428615865, +"w4_pred_jy": 0.2620262579905457, +"w4_meas_jy": 0.004153001584289158, +"w4_detected": true, +"w4_ratio": 0.015849562620701182 +}, +{ +"source_id": "2181041533154711296", +"m1": 0.7252017, +"m2": 1.0057302, +"d_pc": 171.2, +"L_pred": 1.023, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 3.3129153406241656, +"w3_meas_jy": 0.004148612889904761, +"w3_detected": true, +"w3_ratio": 0.0012522544234780074, +"w4_pred_jy": 3.6172252427572267, +"w4_meas_jy": 0.002940099964138156, +"w4_detected": false, +"w4_ratio": 0.0008128053319392041 +}, +{ +"source_id": "4621655088495137408", +"m1": 0.78799844, +"m2": 1.4894187, +"d_pc": 175.4, +"L_pred": 4.921, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 15.177121016454008, +"w3_meas_jy": 0.005099210171005619, +"w3_detected": true, +"w3_ratio": 0.00033598006930809875, +"w4_pred_jy": 16.571224920814142, +"w4_meas_jy": 0.0018095146218238658, +"w4_detected": true, +"w4_ratio": 0.00010919618980918186 +}, +{ +"source_id": "6064093737158445184", +"m1": 0.9238146, +"m2": 0.6740724, +"d_pc": 199.7, +"L_pred": 0.206, +"method": "Orbital+M1", +"w3_pred_jy": 0.49111055040766793, +"w3_meas_jy": 0.0024182595547569425, +"w3_detected": true, +"w3_ratio": 0.0049240635387481696, +"w4_pred_jy": 0.5362218159140524, +"w4_meas_jy": 0.001624658536351234, +"w4_detected": false, +"w4_ratio": 0.0030298255090233784 +}, +{ +"source_id": "6288097863856594944", +"m1": 0.77695066, +"m2": 0.7627927, +"d_pc": 151.4, +"L_pred": 0.339, +"method": "Orbital+M1", +"w3_pred_jy": 1.4019483716903753, +"w3_meas_jy": 0.005099210171005619, +"w3_detected": true, +"w3_ratio": 0.003637231066403204, +"w4_pred_jy": 1.53072521260546, +"w4_meas_jy": 0.002267577279266033, +"w4_detected": false, +"w4_ratio": 0.00148137448876691 +}, +{ +"source_id": "6338526140031035392", +"m1": 0.773009, +"m2": 0.53479004, +"d_pc": 74.6, +"L_pred": 0.082, +"method": "Orbital+M1", +"w3_pred_jy": 1.3960123662519635, +"w3_meas_jy": 0.014746973926246191, +"w3_detected": true, +"w3_ratio": 0.010563641327790745, +"w4_pred_jy": 1.5242439516901347, +"w4_meas_jy": 0.00404354328790773, +"w4_detected": true, +"w4_ratio": 0.002652818981780514 +}, +{ +"source_id": "6345215740573418240", +"m1": 0.51063895, +"m2": 0.76870495, +"d_pc": 123.8, +"L_pred": 0.349, +"method": "Orbital+M1", +"w3_pred_jy": 2.1601075968040604, +"w3_meas_jy": 0.0012390901721554945, +"w3_detected": true, +"w3_ratio": 0.0005736242833406832, +"w4_pred_jy": 2.3585256255776175, +"w4_meas_jy": 0.0012893240888017167, +"w4_detected": false, +"w4_ratio": 0.0005466652873385479 +}, +{ +"source_id": "634969549884105216", +"m1": 0.7009501, +"m2": 0.5869172, +"d_pc": 184.9, +"L_pred": 0.119, +"method": "Orbital+M1", +"w3_pred_jy": 0.3290767853294887, +"w3_meas_jy": 0.0016095442183663208, +"w3_detected": true, +"w3_ratio": 0.004891090134950607, +"w4_pred_jy": 0.35930433841842807, +"w4_meas_jy": 0.0022098464437483424, +"w4_detected": false, +"w4_ratio": 0.006150347233422115 +}, +{ +"source_id": "6565536670821170048", +"m1": 0.31973714, +"m2": 0.7053108, +"d_pc": 109.3, +"L_pred": 0.247, +"method": "Orbital+M1", +"w3_pred_jy": 1.9645180374578062, +"w3_meas_jy": 0.00038291546994846047, +"w3_detected": false, +"w3_ratio": 0.00019491573131289445, +"w4_pred_jy": 2.1449700654304813, +"w4_meas_jy": 0.0020396802786322547, +"w4_detected": false, +"w4_ratio": 0.0009509131672767212 +}, +{ +"source_id": "938413829775139968", +"m1": 1.0502758, +"m2": 0.99354213, +"d_pc": 187.6, +"L_pred": 0.974, +"method": "Orbital+M1", +"w3_pred_jy": 2.6277251309221676, +"w3_meas_jy": 0.006642061804282318, +"w3_detected": true, +"w3_ratio": 0.002527685154783053, +"w4_pred_jy": 2.869096459557705, +"w4_meas_jy": 0.0037910725601024396, +"w4_detected": true, +"w4_ratio": 0.0013213471953769252 +}, +{ +"source_id": "987859623590422784", +"m1": 0.25936356, +"m2": 1.5855951, +"d_pc": 155.3, +"L_pred": 6.321, +"method": "Orbital+M1", +"w3_pred_jy": 24.861688457971216, +"w3_meas_jy": 0.00038326831059383156, +"w3_detected": false, +"w3_ratio": 1.5416020969040302e-05, +"w4_pred_jy": 27.145374336911438, +"w4_meas_jy": 0.0018722424881847009, +"w4_detected": false, +"w4_ratio": 6.897095854887084e-05 +}, +{ +"source_id": "190921776028568064", +"m1": 0.73223287, +"m2": 0.7254258, +"d_pc": 183.5, +"L_pred": 0.277, +"method": "Orbital+M1", +"w3_pred_jy": 0.7804885618914181, +"w3_meas_jy": 0.0024361437565638077, +"w3_detected": true, +"w3_ratio": 0.0031213061606695587, +"w4_pred_jy": 0.8521808248879131, +"w4_meas_jy": 0.004028673731465283, +"w4_detected": false, +"w4_ratio": 0.004727486953247479 +}, +{ +"source_id": "2565373864137735040", +"m1": 1.0628563, +"m2": 1.0794641, +"d_pc": 123.7, +"L_pred": 1.358, +"method": "Orbital+M1", +"w3_pred_jy": 8.411390351807512, +"w3_meas_jy": 0.02676103539125272, +"w3_detected": true, +"w3_ratio": 0.003181523419074479, +"w4_pred_jy": 9.184023851786796, +"w4_meas_jy": 0.007964565657023017, +"w4_detected": true, +"w4_ratio": 0.0008672196180624545 +}, +{ +"source_id": "2912857132367340160", +"m1": 0.565621, +"m2": 0.5827653, +"d_pc": 146.1, +"L_pred": 0.115, +"method": "Orbital+M1", +"w3_pred_jy": 0.512762625614159, +"w3_meas_jy": 0.0011670861423069571, +"w3_detected": true, +"w3_ratio": 0.0022760749009526297, +"w4_pred_jy": 0.5598627559750929, +"w4_meas_jy": 0.0017634457217892093, +"w4_detected": false, +"w4_ratio": 0.0031497821617333323 +}, +{ +"source_id": "336078854450095488", +"m1": 0.8242553, +"m2": 0.57154274, +"d_pc": 118.0, +"L_pred": 0.107, +"method": "Orbital+M1", +"w3_pred_jy": 0.7271506447237908, +"w3_meas_jy": 0.004574071113979616, +"w3_detected": true, +"w3_ratio": 0.00629040371093542, +"w4_pred_jy": 0.7939435201161933, +"w4_meas_jy": 0.002883779809169585, +"w4_detected": false, +"w4_ratio": 0.0036322228673741743 +}, +{ +"source_id": "4690360374658814080", +"m1": 0.45004576, +"m2": 0.5419719, +"d_pc": 91.3, +"L_pred": 0.086, +"method": "Orbital+M1", +"w3_pred_jy": 0.9822854636054402, +"w3_meas_jy": 0.0016006740799811828, +"w3_detected": true, +"w3_ratio": 0.0016295406368999612, +"w4_pred_jy": 1.072513906702384, +"w4_meas_jy": 0.0015444081927100818, +"w4_detected": false, +"w4_ratio": 0.0014399889670975107 +}, +{ +"source_id": "4779053132947770368", +"m1": 0.5517182, +"m2": 0.55247736, +"d_pc": 173.6, +"L_pred": 0.093, +"method": "Orbital+M1", +"w3_pred_jy": 0.29324253555334173, +"w3_meas_jy": 0.0010772162901467135, +"w3_detected": true, +"w3_ratio": 0.003673465338560219, +"w4_pred_jy": 0.32017851130896596, +"w4_meas_jy": 0.0010045281158811963, +"w4_detected": false, +"w4_ratio": 0.003137400170218939 +}, +{ +"source_id": "4940545518185889664", +"m1": 0.61028737, +"m2": 0.54932374, +"d_pc": 161.3, +"L_pred": 0.091, +"method": "Orbital+M1", +"w3_pred_jy": 0.3318708029437404, +"w3_meas_jy": 0.0011920731671645388, +"w3_detected": true, +"w3_ratio": 0.00359197963963893, +"w4_pred_jy": 0.36235500226095047, +"w4_meas_jy": 0.003039219708145094, +"w4_detected": false, +"w4_ratio": 0.008387409278695138 +}, +{ +"source_id": "5220320649921581824", +"m1": 0.7731949, +"m2": 0.617147, +"d_pc": 187.1, +"L_pred": 0.145, +"method": "Orbital+M1", +"w3_pred_jy": 0.3930450270110698, +"w3_meas_jy": 0.001307082236003267, +"w3_detected": true, +"w3_ratio": 0.003325527983251787, +"w4_pred_jy": 0.4291484227836555, +"w4_meas_jy": 0.0008928162717867059, +"w4_detected": false, +"w4_ratio": 0.0020804370338716053 +}, +{ +"source_id": "540623996161699968", +"m1": 1.0034896, +"m2": 0.7899372, +"d_pc": 166.0, +"L_pred": 0.389, +"method": "Orbital+M1", +"w3_pred_jy": 1.3407304490455478, +"w3_meas_jy": 0.014200476333686379, +"w3_detected": true, +"w3_ratio": 0.010591596799935104, +"w4_pred_jy": 1.463884079545202, +"w4_meas_jy": 0.003759777086397832, +"w4_detected": true, +"w4_ratio": 0.002568357111695563 +}, +{ +"source_id": "5406275553988543104", +"m1": 0.7027366, +"m2": 0.5242633, +"d_pc": 192.1, +"L_pred": 0.076, +"method": "Orbital+M1", +"w3_pred_jy": 0.19421771164116927, +"w3_meas_jy": 0.0006703520045471634, +"w3_detected": true, +"w3_ratio": 0.0034515492891075005, +"w4_pred_jy": 0.2120577005166158, +"w4_meas_jy": 0.0018843522769869362, +"w4_detected": false, +"w4_ratio": 0.008886035604442894 +}, +{ +"source_id": "5560274870544002944", +"m1": 0.5923221, +"m2": 0.59692174, +"d_pc": 177.3, +"L_pred": 0.127, +"method": "Orbital+M1", +"w3_pred_jy": 0.3830282766156432, +"w3_meas_jy": 0.000913488138300321, +"w3_detected": true, +"w3_ratio": 0.002384910446747454, +"w4_pred_jy": 0.4182115775415102, +"w4_meas_jy": 0.0017814026612870285, +"w4_detected": false, +"w4_ratio": 0.004259572802262301 +}, +{ +"source_id": "5655052704135368320", +"m1": 0.57863355, +"m2": 0.5439802, +"d_pc": 190.9, +"L_pred": 0.088, +"method": "Orbital+M1", +"w3_pred_jy": 0.2278594281917969, +"w3_meas_jy": 0.0006593301145802524, +"w3_detected": true, +"w3_ratio": 0.0028935827664118958, +"w4_pred_jy": 0.2487895978954625, +"w4_meas_jy": 0.0018619246293950966, +"w4_detected": false, +"w4_ratio": 0.007483932789575262 +}, +{ +"source_id": "6835553877376016896", +"m1": 0.44467396, +"m2": 0.5625914, +"d_pc": 155.9, +"L_pred": 0.1, +"method": "Orbital+M1", +"w3_pred_jy": 0.3907566554698587, +"w3_meas_jy": 0.0007775045019540759, +"w3_detected": true, +"w3_ratio": 0.001989740906701074, +"w4_pred_jy": 0.42664985144916545, +"w4_meas_jy": 0.002028439676400608, +"w4_detected": false, +"w4_ratio": 0.004754342863382652 +}, +{ +"source_id": "3509370326763016704", +"m1": 0.6761712, +"m2": 3.6860275, +"d_pc": 122.4, +"L_pred": 184.601, +"method": "Orbital+M1", +"w3_pred_jy": 1168.3826137171718, +"w3_meas_jy": 0.002994352413967259, +"w3_detected": true, +"w3_ratio": 2.562818360024053e-06, +"w4_pred_jy": 1275.7051264522106, +"w4_meas_jy": 0.002907783693738769, +"w4_detected": false, +"w4_ratio": 2.279354086963213e-06 +}, +{ +"source_id": "4067985970987796352", +"m1": 1.0401618, +"m2": 1.103237, +"d_pc": 118.9, +"L_pred": 1.481, +"method": "Orbital+M1", +"w3_pred_jy": 9.942800773170763, +"w3_meas_jy": 0.02343704815690121, +"w3_detected": true, +"w3_ratio": 0.0023571877473541215, +"w4_pred_jy": 10.856102931276034, +"w4_meas_jy": 0.0032836895947468492, +"w4_detected": true, +"w4_ratio": 0.0003024740660192766 +}, +{ +"source_id": "4264780895793865472", +"m1": 0.69488436, +"m2": 0.790117, +"d_pc": 167.2, +"L_pred": 0.39, +"method": "Orbital+M1", +"w3_pred_jy": 1.3231482540393484, +"w3_meas_jy": 0.003437976568134442, +"w3_detected": true, +"w3_ratio": 0.0025983305783300395, +"w4_pred_jy": 1.4446868610652632, +"w4_meas_jy": 0.003410060599217025, +"w4_detected": false, +"w4_ratio": 0.002360415042954403 +}, +{ +"source_id": "4333863383125689344", +"m1": 0.6874545, +"m2": 0.6193077, +"d_pc": 174.0, +"L_pred": 0.147, +"method": "Orbital+M1", +"w3_pred_jy": 0.46075426744387943, +"w3_meas_jy": 0.0006007626334844178, +"w3_detected": true, +"w3_ratio": 0.001303867757573383, +"w4_pred_jy": 0.5030771376705663, +"w4_meas_jy": 0.0025513033352289696, +"w4_detected": false, +"w4_ratio": 0.0050713959037026616 +}, +{ +"source_id": "4405926302922368768", +"m1": 0.727303, +"m2": 0.56046605, +"d_pc": 132.7, +"L_pred": 0.099, +"method": "Orbital+M1", +"w3_pred_jy": 0.5312386197621698, +"w3_meas_jy": 0.0017811599134079116, +"w3_detected": true, +"w3_ratio": 0.0033528434250606988, +"w4_pred_jy": 0.5800358740737365, +"w4_meas_jy": 0.002344024230790922, +"w4_detected": false, +"w4_ratio": 0.004041171133654641 +}, +{ +"source_id": "5449026524561550464", +"m1": 0.32533398, +"m2": 1.1816846, +"d_pc": 135.3, +"L_pred": 1.95, +"method": "Orbital+M1", +"w3_pred_jy": 10.110251190075289, +"w3_meas_jy": 0.0010062430931376079, +"w3_detected": true, +"w3_ratio": 9.952701216023048e-05, +"w4_pred_jy": 11.038934610525391, +"w4_meas_jy": 0.0029319873808284396, +"w4_detected": false, +"w4_ratio": 0.0002656041986183025 +}, +{ +"source_id": "4854284497363037696", +"m1": 0.7492192, +"m2": 0.77315074, +"d_pc": 124.4, +"L_pred": 0.357, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 2.1918090082778154, +"w3_meas_jy": 0.006771781122289364, +"w3_detected": true, +"w3_ratio": 0.0030895854048935585, +"w4_pred_jy": 2.393138989948195, +"w4_meas_jy": 0.0021976680621032295, +"w4_detected": false, +"w4_ratio": 0.000918320277816711 +}, +{ +"source_id": "5798216333634994560", +"m1": 0.71886575, +"m2": 0.69297314, +"d_pc": 138.4, +"L_pred": 0.231, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 1.1422195256634091, +"w3_meas_jy": 0.006520830513765772, +"w3_detected": true, +"w3_ratio": 0.005708911787319016, +"w4_pred_jy": 1.247138811649032, +"w4_meas_jy": 0.0033850266857766874, +"w4_detected": false, +"w4_ratio": 0.0027142340966045536 +}, +{ +"source_id": "3523436692550394752", +"m1": 0.94281787, +"m2": 1.1328627, +"d_pc": 134.5, +"L_pred": 1.647, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 8.639289820052792, +"w3_meas_jy": 0.004860745831318484, +"w3_detected": true, +"w3_ratio": 0.0005626325696397093, +"w4_pred_jy": 9.432857167639794, +"w4_meas_jy": 0.0034606852090622708, +"w4_detected": false, +"w4_ratio": 0.00036687560805377623 +}, +{ +"source_id": "1208719761211402624", +"m1": 0.80244905, +"m2": 0.73526686, +"d_pc": 191.8, +"L_pred": 0.292, +"method": "Orbital+M1", +"w3_pred_jy": 0.753994372690445, +"w3_meas_jy": 0.002513639037063283, +"w3_detected": true, +"w3_ratio": 0.00333376365674186, +"w4_pred_jy": 0.8232529954354134, +"w4_meas_jy": 0.0025162981411588187, +"w4_detected": false, +"w4_ratio": 0.0030565308053667807 +}, +{ +"source_id": "6509024934249557376", +"m1": 1.2173474, +"m2": 0.78045803, +"d_pc": 82.4, +"L_pred": 0.371, +"method": "Orbital+M1", +"w3_pred_jy": 5.187801441991285, +"w3_meas_jy": 0.09042799724050354, +"w3_detected": true, +"w3_ratio": 0.017430890185687924, +"w4_pred_jy": 5.664330174778245, +"w4_meas_jy": 0.02479488491059205, +"w4_detected": true, +"w4_ratio": 0.004377372812940368 +}, +{ +"source_id": "1608834555116168448", +"m1": 0.78028554, +"m2": 0.62321484, +"d_pc": 192.7, +"L_pred": 0.151, +"method": "Orbital+M1", +"w3_pred_jy": 0.3852570384270356, +"w3_meas_jy": 0.0021513095859516697, +"w3_detected": true, +"w3_ratio": 0.005584088988316067, +"w4_pred_jy": 0.42064506365731996, +"w4_meas_jy": 0.0024749253086056764, +"w4_detected": false, +"w4_ratio": 0.005883642820118491 +}, +{ +"source_id": "766249382814904448", +"m1": 1.0488081, +"m2": 1.0808631, +"d_pc": 198.3, +"L_pred": 1.365, +"method": "Orbital+M1", +"w3_pred_jy": 3.292490905001013, +"w3_meas_jy": 0.0072494141703793175, +"w3_detected": true, +"w3_ratio": 0.0022018023373635066, +"w4_pred_jy": 3.5949247078781132, +"w4_meas_jy": 0.0020910388259867243, +"w4_detected": false, +"w4_ratio": 0.0005816641504074642 +}, +{ +"source_id": "2009304139089565824", +"m1": 0.85426074, +"m2": 0.5861504, +"d_pc": 194.3, +"L_pred": 0.118, +"method": "Orbital+M1", +"w3_pred_jy": 0.2965357938249826, +"w3_meas_jy": 0.00263695617685755, +"w3_detected": true, +"w3_ratio": 0.008892539220455456, +"w4_pred_jy": 0.32377427387042446, +"w4_meas_jy": 0.0019017879739342371, +"w4_detected": false, +"w4_ratio": 0.005873808166412069 +}, +{ +"source_id": "2271349272164191104", +"m1": 0.69809234, +"m2": 0.5800907, +"d_pc": 179.6, +"L_pred": 0.113, +"method": "Orbital+M1", +"w3_pred_jy": 0.3329784595932616, +"w3_meas_jy": 0.0015642382895768106, +"w3_detected": true, +"w3_ratio": 0.0046977161570377615, +"w4_pred_jy": 0.363564403401941, +"w4_meas_jy": 0.0011167657773715255, +"w4_detected": false, +"w4_ratio": 0.0030717137511861352 +}, +{ +"source_id": "2433942436041462144", +"m1": 0.8341959, +"m2": 0.7244388, +"d_pc": 154.5, +"L_pred": 0.275, +"method": "Orbital+M1", +"w3_pred_jy": 1.0943301354235502, +"w3_meas_jy": 0.0038150735266426774, +"w3_detected": true, +"w3_ratio": 0.0034862181010542025, +"w4_pred_jy": 1.1948505116397616, +"w4_meas_jy": 0.00350237058508115, +"w4_detected": false, +"w4_ratio": 0.00293122072674568 +}, +{ +"source_id": "3041386502606163072", +"m1": 0.6450141, +"m2": 0.5591149, +"d_pc": 130.0, +"L_pred": 0.098, +"method": "Orbital+M1", +"w3_pred_jy": 0.5487555883179436, +"w3_meas_jy": 0.0019929798710695665, +"w3_detected": true, +"w3_ratio": 0.0036318169937521504, +"w4_pred_jy": 0.5991618746870185, +"w4_meas_jy": 0.007733250828645351, +"w4_detected": false, +"w4_ratio": 0.012906780546884652 +}, +{ +"source_id": "3192979056939164928", +"m1": 0.60479385, +"m2": 0.6091611, +"d_pc": 124.1, +"L_pred": 0.138, +"method": "Orbital+M1", +"w3_pred_jy": 0.8485998066265638, +"w3_meas_jy": 0.0016561623686997943, +"w3_detected": true, +"w3_ratio": 0.0019516412280171634, +"w4_pred_jy": 0.9265484704327481, +"w4_meas_jy": 0.0018567870426270854, +"w4_detected": false, +"w4_ratio": 0.002003982632187462 +}, +{ +"source_id": "4069921356289901312", +"m1": 0.5660131, +"m2": 0.6214613, +"d_pc": 179.9, +"L_pred": 0.149, +"method": "Orbital+M1", +"w3_pred_jy": 0.43737403453957574, +"w3_meas_jy": 0.0025650918002597042, +"w3_detected": false, +"w3_ratio": 0.005864755558614676, +"w4_pred_jy": 0.47754929890996084, +"w4_meas_jy": 0.01313294413264149, +"w4_detected": false, +"w4_ratio": 0.02750070864436057 +}, +{ +"source_id": "4496448133165072768", +"m1": 0.6965268, +"m2": 0.6210912, +"d_pc": 195.5, +"L_pred": 0.149, +"method": "Orbital+M1", +"w3_pred_jy": 0.3692580445464225, +"w3_meas_jy": 0.0012254706444043888, +"w3_detected": true, +"w3_ratio": 0.0033187378379520302, +"w4_pred_jy": 0.4031764722284883, +"w4_meas_jy": 0.0017683250403100622, +"w4_detected": false, +"w4_ratio": 0.0043859827200132765 +}, +{ +"source_id": "753320633605030272", +"m1": 0.8217961, +"m2": 1.2009447, +"d_pc": 198.8, +"L_pred": 2.08, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 4.992845290160175, +"w3_meas_jy": 0.0032771997449233367, +"w3_detected": true, +"w3_ratio": 0.0006563791895138416, +"w4_pred_jy": 5.45146620418809, +"w4_meas_jy": 0.0021715113156059638, +"w4_detected": false, +"w4_ratio": 0.0003983352797707339 +}, +{ +"source_id": "922887454279801472", +"m1": 0.8309232, +"m2": 1.0736357, +"d_pc": 147.3, +"L_pred": 1.329, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 5.80935895384064, +"w3_meas_jy": 0.0044988644939096736, +"w3_detected": true, +"w3_ratio": 0.0007744166834337923, +"w4_pred_jy": 6.3429812390288856, +"w4_meas_jy": 0.001955069032785323, +"w4_detected": false, +"w4_ratio": 0.00030822557392344503 +}, +{ +"source_id": "1584485320363119104", +"m1": 0.92298007, +"m2": 0.6168683, +"d_pc": 155.5, +"L_pred": 0.145, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 0.568316121494852, +"w3_meas_jy": 0.00490120550215885, +"w3_detected": true, +"w3_ratio": 0.00862408317622087, +"w4_pred_jy": 0.6205191528225875, +"w4_meas_jy": 0.0020699606843055463, +"w4_detected": false, +"w4_ratio": 0.003335853010966397 +}, +{ +"source_id": "2888404504863074688", +"m1": 0.6849364, +"m2": 1.2858665, +"d_pc": 92.0, +"L_pred": 2.734, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 30.631207115792062, +"w3_meas_jy": 0.006384147499142502, +"w3_detected": true, +"w3_ratio": 0.0002084197163699476, +"w4_pred_jy": 33.444855724714266, +"w4_meas_jy": 0.002265489724911736, +"w4_detected": false, +"w4_ratio": 6.773806242607408e-05 +}, +{ +"source_id": "6259582820065293696", +"m1": 0.54405797, +"m2": 0.5478415, +"d_pc": 102.9, +"L_pred": 0.09, +"method": "Orbital+M1", +"w3_pred_jy": 0.8066698804338263, +"w3_meas_jy": 0.002083065434039557, +"w3_detected": true, +"w3_ratio": 0.002582302233621623, +"w4_pred_jy": 0.8807670447526275, +"w4_meas_jy": 0.0038936965001325026, +"w4_detected": false, +"w4_ratio": 0.004420801758342454 +}, +{ +"source_id": "6668123369139821312", +"m1": 0.6886253, +"m2": 0.5929498, +"d_pc": 163.9, +"L_pred": 0.124, +"method": "Orbital+M1", +"w3_pred_jy": 0.43662370935461803, +"w3_meas_jy": 0.0012749786499389184, +"w3_detected": true, +"w3_ratio": 0.0029200856999348226, +"w4_pred_jy": 0.47673005213778274, +"w4_meas_jy": 0.0031358992177789773, +"w4_detected": false, +"w4_ratio": 0.0065779348369518174 +}, +{ +"source_id": "1402274837523864960", +"m1": 1.1418588, +"m2": 1.0172427, +"d_pc": 139.9, +"L_pred": 1.071, +"method": "Orbital+M1", +"w3_pred_jy": 5.193208373214428, +"w3_meas_jy": 0.015090475076074734, +"w3_detected": true, +"w3_ratio": 0.0029058096636192204, +"w4_pred_jy": 5.670233763036713, +"w4_meas_jy": 0.004892852196657893, +"w4_detected": true, +"w4_ratio": 0.0008629013196164084 +}, +{ +"source_id": "1705634699832082944", +"m1": 0.70099807, +"m2": 0.5854771, +"d_pc": 193.2, +"L_pred": 0.118, +"method": "Orbital+M1", +"w3_pred_jy": 0.29862852264714407, +"w3_meas_jy": 0.0016792018822533506, +"w3_detected": true, +"w3_ratio": 0.005623045874413931, +"w4_pred_jy": 0.3260592316020464, +"w4_meas_jy": 0.0017781242168030287, +"w4_detected": false, +"w4_ratio": 0.0054533779278889425 +}, +{ +"source_id": "3418769439060150272", +"m1": 0.5345405, +"m2": 0.64634985, +"d_pc": 114.4, +"L_pred": 0.175, +"method": "Orbital+M1", +"w3_pred_jy": 1.265987448602685, +"w3_meas_jy": 0.0011521337860244728, +"w3_detected": true, +"w3_ratio": 0.0009100673054034805, +"w4_pred_jy": 1.3822755142413872, +"w4_meas_jy": 0.004312827586909028, +"w4_detected": false, +"w4_ratio": 0.003120092588253631 +}, +{ +"source_id": "382891425292611584", +"m1": 0.5588068, +"m2": 0.5522954, +"d_pc": 154.1, +"L_pred": 0.093, +"method": "Orbital+M1", +"w3_pred_jy": 0.3715352841195185, +"w3_meas_jy": 0.001605103021903123, +"w3_detected": true, +"w3_ratio": 0.004320190007543887, +"w4_pred_jy": 0.4056628890609983, +"w4_meas_jy": 0.0036911534207847456, +"w4_detected": false, +"w4_ratio": 0.009099066047990696 +}, +{ +"source_id": "4262379351911463040", +"m1": 0.7051303, +"m2": 0.59471524, +"d_pc": 190.5, +"L_pred": 0.125, +"method": "Orbital+M1", +"w3_pred_jy": 0.32695143404811633, +"w3_meas_jy": 0.0006821861726724372, +"w3_detected": true, +"w3_ratio": 0.002086506134033479, +"w4_pred_jy": 0.356983761671285, +"w4_meas_jy": 0.0035576407976012367, +"w4_detected": false, +"w4_ratio": 0.009965833686511365 +}, +{ +"source_id": "4832647933890967424", +"m1": 1.0079341, +"m2": 0.6484606, +"d_pc": 146.2, +"L_pred": 0.177, +"method": "Orbital+M1", +"w3_pred_jy": 0.7850009338192424, +"w3_meas_jy": 0.0068723127015088105, +"w3_detected": true, +"w3_ratio": 0.008754528059059937, +"w4_pred_jy": 0.8571076835497948, +"w4_meas_jy": 0.0019914164798464197, +"w4_detected": true, +"w4_ratio": 0.0023234145697991816 +}, +{ +"source_id": "509507095547683456", +"m1": 0.31369936, +"m2": 0.57744, +"d_pc": 105.4, +"L_pred": 0.111, +"method": "Orbital+M1", +"w3_pred_jy": 0.9501922469734627, +"w3_meas_jy": 0.0009752207030475565, +"w3_detected": true, +"w3_ratio": 0.0010263404128520455, +"w4_pred_jy": 1.037472747666731, +"w4_meas_jy": 0.0017962306255153648, +"w4_detected": false, +"w4_ratio": 0.001731352104963793 +}, +{ +"source_id": "5467622873958750848", +"m1": 0.28789362, +"m2": 0.56179273, +"d_pc": 169.7, +"L_pred": 0.1, +"method": "Orbital+M1", +"w3_pred_jy": 0.32823796912361236, +"w3_meas_jy": 0.0005113319292892204, +"w3_detected": false, +"w3_ratio": 0.0015578085943392368, +"w4_pred_jy": 0.3583884722274864, +"w4_meas_jy": 0.0026987465290692395, +"w4_detected": false, +"w4_ratio": 0.007530226941440838 +}, +{ +"source_id": "5643961827278816256", +"m1": 0.9762, +"m2": 0.97013104, +"d_pc": 159.7, +"L_pred": 0.886, +"method": "Orbital+M1", +"w3_pred_jy": 3.293578707074562, +"w3_meas_jy": 0.010614582390345175, +"w3_detected": true, +"w3_ratio": 0.0032228112136944527, +"w4_pred_jy": 3.59611243068869, +"w4_meas_jy": 0.0030224706812550847, +"w4_detected": false, +"w4_ratio": 0.0008404828101206648 +}, +{ +"source_id": "493705361103260800", +"m1": 0.7756746, +"m2": 0.8346698, +"d_pc": 170.5, +"L_pred": 0.485, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 1.582838302567652, +"w3_meas_jy": 0.002509013004883738, +"w3_detected": true, +"w3_ratio": 0.0015851353867376483, +"w4_pred_jy": 1.728230900754623, +"w4_meas_jy": 0.0023483460623239427, +"w4_detected": false, +"w4_ratio": 0.001358814994743208 +}, +{ +"source_id": "4457910044451190912", +"m1": 0.8918327, +"m2": 1.3176204, +"d_pc": 96.9, +"L_pred": 3.014, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 30.4745956870708, +"w3_meas_jy": 0.02133550429008548, +"w3_detected": true, +"w3_ratio": 0.0007001078704757785, +"w4_pred_jy": 33.27385865565903, +"w4_meas_jy": 0.005305937094072299, +"w4_detected": true, +"w4_ratio": 0.0001594626324822082 +}, +{ +"source_id": "5106602663384029952", +"m1": 0.68584687, +"m2": 0.7062164, +"d_pc": 91.2, +"L_pred": 0.249, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 2.8379450713843872, +"w3_meas_jy": 0.00961840173378652, +"w3_detected": true, +"w3_ratio": 0.0033892134949231193, +"w4_pred_jy": 3.0986262835910576, +"w4_meas_jy": 0.0029782564896243167, +"w4_detected": false, +"w4_ratio": 0.0009611538201285629 +}, +{ +"source_id": "6808640031752341120", +"m1": 0.62401325, +"m2": 0.77432215, +"d_pc": 179.8, +"L_pred": 0.359, +"method": "Orbital+M1", +"w3_pred_jy": 1.0545320428909806, +"w3_meas_jy": 0.0006007626334844178, +"w3_detected": true, +"w3_ratio": 0.0005696959495298387, +"w4_pred_jy": 1.1513967405285215, +"w4_meas_jy": 0.002106503071864045, +"w4_detected": false, +"w4_ratio": 0.0018295197456413717 +}, +{ +"source_id": "1572491572650125824", +"m1": 0.64801335, +"m2": 0.53459084, +"d_pc": 165.3, +"L_pred": 0.082, +"method": "Orbital+M1", +"w3_pred_jy": 0.28341691870255786, +"w3_meas_jy": 0.001724657702613084, +"w3_detected": true, +"w3_ratio": 0.006085231998528247, +"w4_pred_jy": 0.30945035630225814, +"w4_meas_jy": 0.003112877975988278, +"w4_detected": false, +"w4_ratio": 0.010059377578960515 +}, +{ +"source_id": "1806246194232678784", +"m1": 0.8325579, +"m2": 0.61374104, +"d_pc": 154.9, +"L_pred": 0.142, +"method": "Orbital+M1", +"w3_pred_jy": 0.5606549744094946, +"w3_meas_jy": 0.003643366933070406, +"w3_detected": true, +"w3_ratio": 0.0064984118564322966, +"w4_pred_jy": 0.6121542862997956, +"w4_meas_jy": 0.003130127995069854, +"w4_detected": false, +"w4_ratio": 0.005113299155332401 +}, +{ +"source_id": "240446670258072832", +"m1": 0.80597854, +"m2": 0.83570313, +"d_pc": 119.9, +"L_pred": 0.488, +"method": "Orbital+M1", +"w3_pred_jy": 3.218601870341336, +"w3_meas_jy": 0.008493817245257936, +"w3_detected": true, +"w3_ratio": 0.0026389772912041335, +"w4_pred_jy": 3.51424854991641, +"w4_meas_jy": 0.003560919015311256, +"w4_detected": false, +"w4_ratio": 0.0010132803541730011 +}, +{ +"source_id": "2914334326239306624", +"m1": 0.5869903, +"m2": 0.57101506, +"d_pc": 178.5, +"L_pred": 0.106, +"method": "Orbital+M1", +"w3_pred_jy": 0.31644870695049093, +"w3_meas_jy": 0.0005919743814208938, +"w3_detected": true, +"w3_ratio": 0.0018706803612046658, +"w4_pred_jy": 0.3455163000342594, +"w4_meas_jy": 0.0016082816128875663, +"w4_detected": false, +"w4_ratio": 0.004654719944408117 +}, +{ +"source_id": "3153931894346695808", +"m1": 0.5981789, +"m2": 0.5865013, +"d_pc": 110.5, +"L_pred": 0.118, +"method": "Orbital+M1", +"w3_pred_jy": 0.9187725343086034, +"w3_meas_jy": 0.0014665703900859394, +"w3_detected": true, +"w3_ratio": 0.0015962279403460467, +"w4_pred_jy": 1.0031669577246027, +"w4_meas_jy": 0.003840272981354727, +"w4_detected": false, +"w4_ratio": 0.0038281493940602747 +}, +{ +"source_id": "3278793396865760896", +"m1": 0.6899387, +"m2": 0.5675133, +"d_pc": 196.1, +"L_pred": 0.104, +"method": "Orbital+M1", +"w3_pred_jy": 0.25584985301507457, +"w3_meas_jy": 0.0008540885749287419, +"w3_detected": true, +"w3_ratio": 0.0033382414133277588, +"w4_pred_jy": 0.2793511006253159, +"w4_meas_jy": 0.002940099964138156, +"w4_detected": false, +"w4_ratio": 0.01052474809498464 +}, +{ +"source_id": "1097717538333601408", +"m1": 0.9364071, +"m2": 1.2284167, +"d_pc": 90.6, +"L_pred": 2.277, +"method": "Orbital+SB2", +"w3_pred_jy": 26.30031246512737, +"w3_meas_jy": 0.03310571045675447, +"w3_detected": true, +"w3_ratio": 0.001258757305665119, +"w4_pred_jy": 28.71614404832259, +"w4_meas_jy": 0.006943238712180389, +"w4_detected": true, +"w4_ratio": 0.00024178868515551858 +}, +{ +"source_id": "5652543721681115776", +"m1": 0.48236212, +"m2": 1.0318172, +"d_pc": 126.1, +"L_pred": 1.133, +"method": "Orbital+M1", +"w3_pred_jy": 6.758878642764381, +"w3_meas_jy": 0.0012075438554877567, +"w3_detected": true, +"w3_ratio": 0.00017866038426070502, +"w4_pred_jy": 7.379719650407323, +"w4_meas_jy": 0.0024567564039354277, +"w4_detected": false, +"w4_ratio": 0.0003329064680390436 +}, +{ +"source_id": "631415065014727552", +"m1": 0.96589494, +"m2": 1.245085, +"d_pc": 68.1, +"L_pred": 2.403, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 49.13922542184404, +"w3_meas_jy": 0.0344114452024469, +"w3_detected": true, +"w3_ratio": 0.0007002846485070937, +"w4_pred_jy": 53.65293958038286, +"w4_meas_jy": 0.00924617474076867, +"w4_detected": true, +"w4_ratio": 0.00017233305039915 +}, +{ +"source_id": "2198952203922798080", +"m1": 0.8671677, +"m2": 1.2091411, +"d_pc": 154.0, +"L_pred": 2.138, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 8.554147593060737, +"w3_meas_jy": 0.00758408012072747, +"w3_detected": true, +"w3_ratio": 0.0008865968278218391, +"w4_pred_jy": 9.33989414835473, +"w4_meas_jy": 0.002659267933978422, +"w4_detected": true, +"w4_ratio": 0.00028472142100741745 +}, +{ +"source_id": "5643738626414534656", +"m1": 0.8950898, +"m2": 1.7745665, +"d_pc": 170.9, +"L_pred": 9.917, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 32.18934093337545, +"w3_meas_jy": 0.00739780556036071, +"w3_detected": true, +"w3_ratio": 0.00022982159142905317, +"w4_pred_jy": 35.14611289462867, +"w4_meas_jy": 0.0023375563922533775, +"w4_detected": false, +"w4_ratio": 6.65096706216585e-05 +}, +{ +"source_id": "1103388063397068672", +"m1": 0.5660906, +"m2": 0.79364324, +"d_pc": 171.3, +"L_pred": 0.397, +"method": "Orbital+M1", +"w3_pred_jy": 1.2821217498667654, +"w3_meas_jy": 0.0010732549801553085, +"w3_detected": true, +"w3_ratio": 0.0008370928737983255, +"w4_pred_jy": 1.3998918417976738, +"w4_meas_jy": 0.002215960918692475, +"w4_detected": false, +"w4_ratio": 0.001582951519916599 +}, +{ +"source_id": "6870490137799119616", +"m1": 0.65947837, +"m2": 0.5539536, +"d_pc": 151.5, +"L_pred": 0.094, +"method": "Orbital+M1", +"w3_pred_jy": 0.3890104586737292, +"w3_meas_jy": 0.0016745684802160778, +"w3_detected": true, +"w3_ratio": 0.004304687554995974, +"w4_pred_jy": 0.42474325665867146, +"w4_meas_jy": 0.002891759005840672, +"w4_detected": false, +"w4_ratio": 0.006808251715611162 +}, +{ +"source_id": "724882972238781056", +"m1": 0.5629423, +"m2": 0.5373605, +"d_pc": 177.0, +"L_pred": 0.083, +"method": "Orbital+M1", +"w3_pred_jy": 0.2524391147370799, +"w3_meas_jy": 0.0007803742173608525, +"w3_detected": true, +"w3_ratio": 0.003091336373024549, +"w4_pred_jy": 0.27562706685834487, +"w4_meas_jy": 0.002114278029185267, +"w4_detected": false, +"w4_ratio": 0.007670792470725939 +}, +{ +"source_id": "198931207138840448", +"m1": 0.5387697, +"m2": 0.58755517, +"d_pc": 185.3, +"L_pred": 0.119, +"method": "Orbital+M1", +"w3_pred_jy": 0.329219108043625, +"w3_meas_jy": 0.0006233083034017454, +"w3_detected": true, +"w3_ratio": 0.0018932932146792359, +"w4_pred_jy": 0.3594597342741202, +"w4_meas_jy": 0.004073447250877084, +"w4_detected": false, +"w4_ratio": 0.01133213782373387 +}, +{ +"source_id": "2038294210577929216", +"m1": 0.57570696, +"m2": 0.5788546, +"d_pc": 120.1, +"L_pred": 0.112, +"method": "Orbital+M1", +"w3_pred_jy": 0.7377711283843775, +"w3_meas_jy": 0.0026736398914045363, +"w3_detected": true, +"w3_ratio": 0.0036239421529810456, +"w4_pred_jy": 0.8055395549186183, +"w4_meas_jy": 0.002654373890380589, +"w4_detected": false, +"w4_ratio": 0.0032951502805455084 +}, +{ +"source_id": "209710612977619840", +"m1": 0.7152629, +"m2": 0.6001603, +"d_pc": 175.0, +"L_pred": 0.13, +"method": "Orbital+M1", +"w3_pred_jy": 0.40183075808989777, +"w3_meas_jy": 0.0004878686508402029, +"w3_detected": true, +"w3_ratio": 0.0012141147510939337, +"w4_pred_jy": 0.43874117266310925, +"w4_meas_jy": 0.0033263052157253507, +"w4_detected": false, +"w4_ratio": 0.0075814749628694625 +}, +{ +"source_id": "2562077463853732096", +"m1": 0.585124, +"m2": 0.55560625, +"d_pc": 196.4, +"L_pred": 0.095, +"method": "Orbital+M1", +"w3_pred_jy": 0.2344517433033408, +"w3_meas_jy": 0.0009512680542320129, +"w3_detected": true, +"w3_ratio": 0.004057415145773659, +"w4_pred_jy": 0.2559874542177414, +"w4_meas_jy": 0.002899760280334519, +"w4_detected": false, +"w4_ratio": 0.01132774373336281 +}, +{ +"source_id": "3382203461893841920", +"m1": 0.58335394, +"m2": 0.6116164, +"d_pc": 178.8, +"L_pred": 0.14, +"method": "Orbital+M1", +"w3_pred_jy": 0.415125569193625, +"w3_meas_jy": 0.001971073923244794, +"w3_detected": true, +"w3_ratio": 0.004748139043985112, +"w4_pred_jy": 0.4532571869217262, +"w4_meas_jy": 0.006041740902265244, +"w4_detected": false, +"w4_ratio": 0.01332960861204966 +}, +{ +"source_id": "3383404918865076864", +"m1": 0.97870016, +"m2": 0.8070924, +"d_pc": 126.2, +"L_pred": 0.424, +"method": "Orbital+M1", +"w3_pred_jy": 2.5261840648042577, +"w3_meas_jy": 0.011002792237581802, +"w3_detected": true, +"w3_ratio": 0.004355499027516175, +"w4_pred_jy": 2.7582282755645147, +"w4_meas_jy": 0.003610456333310322, +"w4_detected": true, +"w4_ratio": 0.0013089766228907885 +}, +{ +"source_id": "3588412607072828672", +"m1": 0.76914984, +"m2": 0.57482076, +"d_pc": 146.7, +"L_pred": 0.109, +"method": "Orbital+M1", +"w3_pred_jy": 0.481417583678367, +"w3_meas_jy": 0.0011595858638983204, +"w3_detected": true, +"w3_ratio": 0.0024086902996734634, +"w4_pred_jy": 0.5256384956883604, +"w4_meas_jy": 0.0028207337623141204, +"w4_detected": false, +"w4_ratio": 0.005366299815275462 +}, +{ +"source_id": "3597514707925243648", +"m1": 0.51486665, +"m2": 0.565114, +"d_pc": 153.3, +"L_pred": 0.102, +"method": "Orbital+M1", +"w3_pred_jy": 0.4116712951016947, +"w3_meas_jy": 0.0010411250893986985, +"w3_detected": true, +"w3_ratio": 0.002529020365973077, +"w4_pred_jy": 0.4494856183315135, +"w4_meas_jy": 0.003072996720549097, +"w4_detected": false, +"w4_ratio": 0.0068366964263640575 +}, +{ +"source_id": "4457595343607518848", +"m1": 0.6542035, +"m2": 0.6072634, +"d_pc": 115.5, +"L_pred": 0.136, +"method": "Orbital+M1", +"w3_pred_jy": 0.9663536053457444, +"w3_meas_jy": 0.001974708121783994, +"w3_detected": true, +"w3_ratio": 0.0020434632942435992, +"w4_pred_jy": 1.0551186176787457, +"w4_meas_jy": 0.0028678874057874925, +"w4_detected": false, +"w4_ratio": 0.002718071084838619 +}, +{ +"source_id": "464389941567939584", +"m1": 0.69339055, +"m2": 0.60725754, +"d_pc": 178.5, +"L_pred": 0.136, +"method": "Orbital+M1", +"w3_pred_jy": 0.40484693564626956, +"w3_meas_jy": 0.0012844077351792098, +"w3_detected": true, +"w3_ratio": 0.003172576156785948, +"w4_pred_jy": 0.44203440308761216, +"w4_meas_jy": 0.003220787683553153, +"w4_detected": false, +"w4_ratio": 0.007286282834675169 +}, +{ +"source_id": "5297840411571635328", +"m1": 0.56045955, +"m2": 0.61026055, +"d_pc": 124.7, +"L_pred": 0.139, +"method": "Orbital+M1", +"w3_pred_jy": 0.8457692124396512, +"w3_meas_jy": 0.0017438250515407388, +"w3_detected": true, +"w3_ratio": 0.002061821388024534, +"w4_pred_jy": 0.9234578702537007, +"w4_meas_jy": 0.0019950881852942226, +"w4_detected": false, +"w4_ratio": 0.0021604539303413093 +}, +{ +"source_id": "534854721213752960", +"m1": 0.25294602, +"m2": 1.4366664, +"d_pc": 114.6, +"L_pred": 4.26, +"method": "Orbital+M1", +"w3_pred_jy": 30.792441627710925, +"w3_meas_jy": 0.0007025915340075215, +"w3_detected": true, +"w3_ratio": 2.2817012775474128e-05, +"w4_pred_jy": 33.62090053315379, +"w4_meas_jy": 0.001907050074813948, +"w4_detected": false, +"w4_ratio": 5.672215926915442e-05 +}, +{ +"source_id": "576397706481154176", +"m1": 0.65416586, +"m2": 0.7254309, +"d_pc": 163.7, +"L_pred": 0.277, +"method": "Orbital+M1", +"w3_pred_jy": 0.980295291996168, +"w3_meas_jy": 0.00206206766594258, +"w3_detected": true, +"w3_ratio": 0.002103516851278156, +"w4_pred_jy": 1.0703409266403212, +"w4_meas_jy": 0.0015358970165422212, +"w4_detected": false, +"w4_ratio": 0.001434960560989878 +}, +{ +"source_id": "6630806395470461952", +"m1": 0.58885586, +"m2": 0.6067591, +"d_pc": 74.8, +"L_pred": 0.136, +"method": "Orbital+M1", +"w3_pred_jy": 2.2974665741139106, +"w3_meas_jy": 0.011259080192238542, +"w3_detected": true, +"w3_ratio": 0.004900650272390125, +"w4_pred_jy": 2.5085017973052346, +"w4_meas_jy": 0.004993006101700626, +"w4_detected": true, +"w4_ratio": 0.0019904335356922516 +}, +{ +"source_id": "1496909184851679616", +"m1": 0.447589, +"m2": 0.5788745, +"d_pc": 174.1, +"L_pred": 0.112, +"method": "Orbital+M1", +"w3_pred_jy": 0.35132419155224354, +"w3_meas_jy": 0.0004937452293006877, +"w3_detected": true, +"w3_ratio": 0.0014053835208990026, +"w4_pred_jy": 0.383595293997046, +"w4_meas_jy": 0.0016825272114634698, +"w4_detected": false, +"w4_ratio": 0.0043862039962263635 +}, +{ +"source_id": "918884823934253568", +"m1": 0.4662133, +"m2": 0.540717, +"d_pc": 187.8, +"L_pred": 0.085, +"method": "Orbital+M1", +"w3_pred_jy": 0.23003282058157287, +"w3_meas_jy": 0.0005710878392398602, +"w3_detected": false, +"w3_ratio": 0.0024826363377018386, +"w4_pred_jy": 0.25116262859694516, +"w4_meas_jy": 0.0021417170633982064, +"w4_detected": false, +"w4_ratio": 0.008527212329964664 +}, +{ +"source_id": "4070665794467574656", +"m1": 0.4858951, +"m2": 0.6315518, +"d_pc": 113.2, +"L_pred": 0.159, +"method": "Orbital+M1", +"w3_pred_jy": 1.1772166124181938, +"w3_meas_jy": 0.0038681464860856, +"w3_detected": true, +"w3_ratio": 0.003285840893919939, +"w4_pred_jy": 1.2853505776063594, +"w4_meas_jy": 0.012222557717887541, +"w4_detected": true, +"w4_ratio": 0.009509123760343241 +}, +{ +"source_id": "4387013397254806912", +"m1": 0.731977, +"m2": 0.66066295, +"d_pc": 166.8, +"L_pred": 0.191, +"method": "Orbital+M1", +"w3_pred_jy": 0.6497161146669712, +"w3_meas_jy": 0.0009408121391142188, +"w3_detected": true, +"w3_ratio": 0.001448035715716327, +"w4_pred_jy": 0.7093961930692548, +"w4_meas_jy": 0.0018313109693289412, +"w4_detected": false, +"w4_ratio": 0.002581506621011933 +}, +{ +"source_id": "5334123401959324672", +"m1": 0.50911903, +"m2": 0.61131734, +"d_pc": 184.9, +"L_pred": 0.14, +"method": "Orbital+M1", +"w3_pred_jy": 0.38731981697426465, +"w3_meas_jy": 0.014665703900859394, +"w3_detected": true, +"w3_ratio": 0.03786458440321388, +"w4_pred_jy": 0.4228973200128503, +"w4_meas_jy": 0.027489199730508666, +"w4_detected": true, +"w4_ratio": 0.06500206652923071 +}, +{ +"source_id": "5100228549666390144", +"m1": 0.6947668, +"m2": 0.6414196, +"d_pc": 100.0, +"L_pred": 0.169, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 1.6051671551086573, +"w3_ratio": null, +"w4_pred_jy": 1.7526107839537846, +"w4_ratio": null +}, +{ +"source_id": "4382179737978845824", +"m1": 0.80940104, +"m2": 1.0126382, +"d_pc": 180.6, +"L_pred": 1.052, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 3.0585951922171413, +"w3_meas_jy": 0.003586764910512302, +"w3_detected": true, +"w3_ratio": 0.0011726837600605448, +"w4_pred_jy": 3.339544358709542, +"w4_meas_jy": 0.003701366558068645, +"w4_detected": false, +"w4_ratio": 0.0011083447801540558 +}, +{ +"source_id": "6081932321190956928", +"m1": 0.56189823, +"m2": 0.5732852, +"d_pc": 169.8, +"L_pred": 0.108, +"method": "Orbital+M1", +"w3_pred_jy": 0.3555279692085284, +"w3_meas_jy": 0.0010136847486493324, +"w3_detected": true, +"w3_ratio": 0.0028512095712356577, +"w4_pred_jy": 0.3881852122683616, +"w4_meas_jy": 0.0015673359559925603, +"w4_detected": false, +"w4_ratio": 0.004037598307348771 +}, +{ +"source_id": "6672016812829462528", +"m1": 0.710688, +"m2": 0.5982898, +"d_pc": 180.0, +"L_pred": 0.128, +"method": "Orbital+M1", +"w3_pred_jy": 0.3753195643887697, +"w3_meas_jy": 0.0011670861423069571, +"w3_detected": true, +"w3_ratio": 0.00310957981688918, +"w4_pred_jy": 0.4097947767515013, +"w4_meas_jy": 0.0021615341273943187, +"w4_detected": false, +"w4_ratio": 0.00527467466649793 +}, +{ +"source_id": "737640502576656384", +"m1": 0.60963297, +"m2": 0.6061057, +"d_pc": 143.9, +"L_pred": 0.135, +"method": "Orbital+M1", +"w3_pred_jy": 0.6178070221777714, +"w3_meas_jy": 0.0007890470716296375, +"w3_detected": true, +"w3_ratio": 0.0012771740095284844, +"w4_pred_jy": 0.6745560710142005, +"w4_meas_jy": 0.002363535320675235, +"w4_detected": false, +"w4_ratio": 0.0035038381866783004 +}, +{ +"source_id": "780762798862741248", +"m1": 0.48016697, +"m2": 0.7046404, +"d_pc": 127.6, +"L_pred": 0.247, +"method": "Orbital+M1", +"w3_pred_jy": 1.4373860283351982, +"w3_meas_jy": 0.0012656187854344029, +"w3_detected": true, +"w3_ratio": 0.0008805002695763374, +"w4_pred_jy": 1.569418017274494, +"w4_meas_jy": 0.0020415597589937017, +"w4_detected": false, +"w4_ratio": 0.0013008387418280984 +}, +{ +"source_id": "1731612242586804224", +"m1": 0.6854412, +"m2": 0.57648855, +"d_pc": 185.5, +"L_pred": 0.11, +"method": "Orbital+M1", +"w3_pred_jy": 0.30455996870966795, +"w3_meas_jy": 0.001507658263358047, +"w3_detected": true, +"w3_ratio": 0.004950283747879134, +"w4_pred_jy": 0.3325355143371712, +"w4_meas_jy": 0.002452235056990093, +"w4_detected": false, +"w4_ratio": 0.007374355373374263 +}, +{ +"source_id": "2048417654648426880", +"m1": 0.49476558, +"m2": 0.59172, +"d_pc": 169.2, +"L_pred": 0.123, +"method": "Orbital+M1", +"w3_pred_jy": 0.40611860672917655, +"w3_meas_jy": 0.0008133976482043749, +"w3_detected": true, +"w3_ratio": 0.0020028573789203303, +"w4_pred_jy": 0.44342288430992716, +"w4_meas_jy": 0.0017392503394248189, +"w4_detected": false, +"w4_ratio": 0.003922328776809775 +}, +{ +"source_id": "2917460993713363968", +"m1": 1.5665636, +"m2": 1.2704743, +"d_pc": 178.8, +"L_pred": 2.605, +"method": "Orbital+M1", +"w3_pred_jy": 7.726500446985176, +"w3_meas_jy": 0.023806903545132634, +"w3_detected": true, +"w3_ratio": 0.0030812013418600025, +"w4_pred_jy": 8.43622295815871, +"w4_meas_jy": 0.006036178815079326, +"w4_detected": true, +"w4_ratio": 0.0007155072649237783 +}, +{ +"source_id": "3727207533258624640", +"m1": 0.6965959, +"m2": 0.58941936, +"d_pc": 160.6, +"L_pred": 0.121, +"method": "Orbital+M1", +"w3_pred_jy": 0.44395051112038736, +"w3_meas_jy": 0.0015090475076074735, +"w3_detected": true, +"w3_ratio": 0.0033991345201948887, +"w4_pred_jy": 0.48472986184340167, +"w4_meas_jy": 0.0017929248920536419, +"w4_detected": false, +"w4_ratio": 0.0036988125411445555 +}, +{ +"source_id": "4163244158035804928", +"m1": 0.51858765, +"m2": 0.5563867, +"d_pc": 171.2, +"L_pred": 0.096, +"method": "Orbital+M1", +"w3_pred_jy": 0.3102703516144878, +"w3_meas_jy": 0.0006313975790912059, +"w3_detected": false, +"w3_ratio": 0.0020349916639012936, +"w4_pred_jy": 0.3387704280205473, +"w4_meas_jy": 0.007826401013989055, +"w4_detected": false, +"w4_ratio": 0.023102373662657365 +}, +{ +"source_id": "4129482893281612416", +"m1": 0.61402947, +"m2": 0.6053761, +"d_pc": 199.7, +"L_pred": 0.134, +"method": "Orbital+M1", +"w3_pred_jy": 0.31959878129718, +"w3_meas_jy": 0.001457145476334702, +"w3_detected": true, +"w3_ratio": 0.004559296097502231, +"w4_pred_jy": 0.34895572642215467, +"w4_meas_jy": 0.004032385986390867, +"w4_detected": false, +"w4_ratio": 0.011555580496514405 +}, +{ +"source_id": "4333515761355480448", +"m1": 0.7720401, +"m2": 0.6590545, +"d_pc": 90.1, +"L_pred": 0.189, +"method": "Orbital+M1", +"w3_pred_jy": 2.202300373665502, +"w3_meas_jy": 0.016036253479851884, +"w3_detected": true, +"w3_ratio": 0.00728159231665624, +"w4_pred_jy": 2.4045940462383384, +"w4_meas_jy": 0.0063439842599690615, +"w4_detected": true, +"w4_ratio": 0.002638276622988968 +}, +{ +"source_id": "4429564978284010624", +"m1": 0.56011647, +"m2": 0.744993, +"d_pc": 187.0, +"L_pred": 0.308, +"method": "Orbital+M1", +"w3_pred_jy": 0.8354768220121951, +"w3_meas_jy": 0.0007445655058222948, +"w3_detected": true, +"w3_ratio": 0.0008911863096681176, +"w4_pred_jy": 0.9122200658926954, +"w4_meas_jy": 0.0031620016832324114, +"w4_detected": false, +"w4_ratio": 0.0034662706965759267 +}, +{ +"source_id": "5467096104810463616", +"m1": 0.39326048, +"m2": 0.6172101, +"d_pc": 91.9, +"L_pred": 0.145, +"method": "Orbital+M1", +"w3_pred_jy": 1.6297643455821982, +"w3_meas_jy": 0.002698378776729778, +"w3_detected": true, +"w3_ratio": 0.001655686470282819, +"w4_pred_jy": 1.779467364679158, +"w4_meas_jy": 0.0034959249185425737, +"w4_detected": false, +"w4_ratio": 0.0019645906342164905 +}, +{ +"source_id": "1092014470303207552", +"m1": 0.74709904, +"m2": 0.9601648, +"d_pc": 132.9, +"L_pred": 0.85, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 4.563681163118625, +"w3_meas_jy": 0.00540384535892849, +"w3_detected": true, +"w3_ratio": 0.001184097916962221, +"w4_pred_jy": 4.9828809389431035, +"w4_meas_jy": 0.0024635540597264887, +"w4_detected": false, +"w4_ratio": 0.0004944035568806952 +}, +{ +"source_id": "1220563739126355712", +"m1": 1.1360682, +"m2": 0.7146289, +"d_pc": 93.0, +"L_pred": 0.261, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 2.859430335268766, +"w3_meas_jy": 0.026369561768575498, +"w3_detected": true, +"w3_ratio": 0.009221963355192896, +"w4_pred_jy": 3.1220850897720926, +"w4_meas_jy": 0.00713119146220476, +"w4_detected": true, +"w4_ratio": 0.0022841118217970563 +}, +{ +"source_id": "5997959594529689600", +"m1": 0.7896622, +"m2": 0.8023078, +"d_pc": 164.6, +"L_pred": 0.414, +"method": "Orbital+M1", +"w3_pred_jy": 1.4512325808457558, +"w3_meas_jy": 0.0041562619601534226, +"w3_detected": true, +"w3_ratio": 0.0028639530389616926, +"w4_pred_jy": 1.5845364534905297, +"w4_meas_jy": 0.004118718370286838, +"w4_detected": false, +"w4_ratio": 0.0025993206790628463 +}, +{ +"source_id": "3257341650131342976", +"m1": 0.8396977, +"m2": 0.8940823, +"d_pc": 158.3, +"L_pred": 0.639, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 2.4177349223124422, +"w3_meas_jy": 0.002907387456358007, +"w3_detected": true, +"w3_ratio": 0.0012025253180266912, +"w4_pred_jy": 2.63981746953925, +"w4_meas_jy": 0.004073447250877084, +"w4_detected": false, +"w4_ratio": 0.0015430791325083766 +}, +{ +"source_id": "6210089609813519104", +"m1": 0.5110364, +"m2": 0.7173473, +"d_pc": 79.8, +"L_pred": 0.265, +"method": "Orbital+M1", +"w3_pred_jy": 3.9411178990261218, +"w3_meas_jy": 0.0036066409749210978, +"w3_detected": true, +"w3_ratio": 0.0009151314594806525, +"w4_pred_jy": 4.303131738450565, +"w4_meas_jy": 0.004013858855705848, +"w4_detected": false, +"w4_ratio": 0.000932776196424589 +}, +{ +"source_id": "6507560831437561472", +"m1": 0.38671052, +"m2": 0.5648121, +"d_pc": 141.2, +"L_pred": 0.102, +"method": "Orbital+M1", +"w3_pred_jy": 0.48393219163181944, +"w3_meas_jy": 0.0002945119439940129, +"w3_detected": false, +"w3_ratio": 0.0006085810142138273, +"w4_pred_jy": 0.5283840845216543, +"w4_meas_jy": 0.001709078838222938, +"w4_detected": false, +"w4_ratio": 0.003234538829401279 +}, +{ +"source_id": "6594897135975007360", +"m1": 0.62007636, +"m2": 0.6034296, +"d_pc": 122.5, +"L_pred": 0.133, +"method": "Orbital+M1", +"w3_pred_jy": 0.8376754784139562, +"w3_meas_jy": 0.0015202076455294393, +"w3_detected": true, +"w3_ratio": 0.0018147930609211345, +"w4_pred_jy": 0.9146206812477206, +"w4_meas_jy": 0.0020490950150334006, +"w4_detected": false, +"w4_ratio": 0.002240376865563587 +}, +{ +"source_id": "284476097995697664", +"m1": 1.764777, +"m2": 1.2338939, +"d_pc": 194.1, +"L_pred": 2.318, +"method": "Orbital+M1", +"w3_pred_jy": 5.838139748940399, +"w3_meas_jy": 0.010221224149436697, +"w3_detected": true, +"w3_ratio": 0.0017507672972870872, +"w4_pred_jy": 6.374405711989267, +"w4_meas_jy": 0.0039954168494540036, +"w4_detected": true, +"w4_ratio": 0.0006267904852587662 +}, +{ +"source_id": "3144682493295790080", +"m1": 0.8160548, +"m2": 0.55213004, +"d_pc": 163.6, +"L_pred": 0.093, +"method": "Orbital+M1", +"w3_pred_jy": 0.32938891116299607, +"w3_meas_jy": 0.004336136172581505, +"w3_detected": true, +"w3_ratio": 0.01316418381320613, +"w4_pred_jy": 0.3596451347647865, +"w4_meas_jy": 0.004929037210761979, +"w4_detected": false, +"w4_ratio": 0.013705279828088446 +}, +{ +"source_id": "3785850879279638784", +"m1": 0.39989638, +"m2": 0.60927284, +"d_pc": 158.5, +"L_pred": 0.138, +"method": "Orbital+M1", +"w3_pred_jy": 0.520576668013693, +"w3_meas_jy": 0.0006771781122289357, +"w3_detected": true, +"w3_ratio": 0.0013008230176983723, +"w4_pred_jy": 0.5683945621063791, +"w4_meas_jy": 0.003124367393560341, +"w4_detected": false, +"w4_ratio": 0.005496828439001838 +}, +{ +"source_id": "3842861411877272960", +"m1": 0.80347824, +"m2": 0.914902, +"d_pc": 185.3, +"L_pred": 0.701, +"method": "Orbital+M1", +"w3_pred_jy": 1.9351870105737528, +"w3_meas_jy": 0.003437976568134442, +"w3_detected": true, +"w3_ratio": 0.0017765603785833265, +"w4_pred_jy": 2.1129448188025375, +"w4_meas_jy": 0.0021456658879102594, +"w4_detected": false, +"w4_ratio": 0.0010154860026710332 +}, +{ +"source_id": "4037114609474235264", +"m1": 0.5930563, +"m2": 0.56068444, +"d_pc": 159.0, +"L_pred": 0.099, +"method": "Orbital+M1", +"w3_pred_jy": 0.371012602861856, +"w3_meas_jy": 0.0011447295989247108, +"w3_detected": true, +"w3_ratio": 0.003085419713763586, +"w4_pred_jy": 0.40509219659085005, +"w4_meas_jy": 0.0030448233172707586, +"w4_detected": false, +"w4_ratio": 0.0075163711937558785 +}, +{ +"source_id": "5152756278867291392", +"m1": 0.9243377, +"m2": 1.372724, +"d_pc": 158.1, +"L_pred": 3.551, +"method": "Orbital+M1", +"w3_pred_jy": 13.4682922660584, +"w3_meas_jy": 0.005801000626684362, +"w3_detected": true, +"w3_ratio": 0.0004307153803978201, +"w4_pred_jy": 14.705430641170487, +"w4_meas_jy": 0.002222092311917945, +"w4_detected": false, +"w4_ratio": 0.0001511069186710384 +}, +{ +"source_id": "2243824441672677120", +"m1": 0.7189673, +"m2": 1.0400889, +"d_pc": 123.3, +"L_pred": 1.17, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 7.300121990980178, +"w3_meas_jy": 0.005019990697801328, +"w3_detected": true, +"w3_ratio": 0.0006876584670782057, +"w4_pred_jy": 7.970679243498451, +"w4_meas_jy": 0.002299122421485634, +"w4_detected": false, +"w4_ratio": 0.0002884474900129734 +}, +{ +"source_id": "6276650676500243072", +"m1": 0.41834676, +"m2": 0.5445949, +"d_pc": 198.0, +"L_pred": 0.088, +"method": "Orbital+M1", +"w3_pred_jy": 0.21288533753942995, +"w3_meas_jy": 0.00031937646703339347, +"w3_detected": false, +"w3_ratio": 0.001500227637679554, +"w4_pred_jy": 0.23244005281929042, +"w4_meas_jy": 0.001907050074813948, +"w4_detected": false, +"w4_ratio": 0.008204481334792057 +}, +{ +"source_id": "1141313208734964480", +"m1": 0.6045066, +"m2": 0.60733926, +"d_pc": 191.3, +"L_pred": 0.136, +"method": "Orbital+M1", +"w3_pred_jy": 0.3526869855600578, +"w3_meas_jy": 0.0009833382039437753, +"w3_detected": true, +"w3_ratio": 0.002788132945655082, +"w4_pred_jy": 0.38508326829729334, +"w4_meas_jy": 0.002671542557055726, +"w4_detected": false, +"w4_ratio": 0.006937571109927405 +}, +{ +"source_id": "995363863464649344", +"m1": 0.7159266, +"m2": 0.6347518, +"d_pc": 185.7, +"L_pred": 0.162, +"method": "Orbital+M1", +"w3_pred_jy": 0.44650298624060814, +"w3_meas_jy": 0.001559922105230963, +"w3_detected": true, +"w3_ratio": 0.0034936431632068953, +"w4_pred_jy": 0.4875167961556541, +"w4_meas_jy": 0.002805188803353783, +"w4_detected": false, +"w4_ratio": 0.0057540351952471884 +}, +{ +"source_id": "3906148309035700864", +"m1": 0.5140381, +"m2": 0.5885335, +"d_pc": 169.2, +"L_pred": 0.12, +"method": "Orbital+M1", +"w3_pred_jy": 0.3976498942733446, +"w3_meas_jy": 0.000693590142801923, +"w3_detected": true, +"w3_ratio": 0.0017442231289143738, +"w4_pred_jy": 0.4341762729965464, +"w4_meas_jy": 0.0032897439490699866, +"w4_detected": false, +"w4_ratio": 0.007576977724658285 +}, +{ +"source_id": "3981295977423773312", +"m1": 0.62341, +"m2": 0.62677836, +"d_pc": 131.7, +"L_pred": 0.154, +"method": "Orbital+M1", +"w3_pred_jy": 0.8446748130370137, +"w3_meas_jy": 0.0016334389691229994, +"w3_detected": true, +"w3_ratio": 0.0019338080689892928, +"w4_pred_jy": 0.922262944112264, +"w4_meas_jy": 0.0020623486977290775, +"w4_detected": false, +"w4_ratio": 0.002236182978937984 +}, +{ +"source_id": "4228485634664394496", +"m1": 1.0851659, +"m2": 0.7210236, +"d_pc": 76.3, +"L_pred": 0.27, +"method": "Orbital+M1", +"w3_pred_jy": 4.408775948463826, +"w3_meas_jy": 0.02173216092967274, +"w3_detected": true, +"w3_ratio": 0.004929295837146135, +"w4_pred_jy": 4.813746809310167, +"w4_meas_jy": 0.006630741493109295, +"w4_detected": true, +"w4_ratio": 0.001377459545708743 +}, +{ +"source_id": "4809379793946450048", +"m1": 1.088126, +"m2": 0.84894675, +"d_pc": 192.7, +"L_pred": 0.519, +"method": "Orbital+M1", +"w3_pred_jy": 1.3271755810625037, +"w3_meas_jy": 0.009609546936816926, +"w3_detected": true, +"w3_ratio": 0.007240599566429457, +"w4_pred_jy": 1.4490841207206364, +"w4_meas_jy": 0.002106503071864045, +"w4_detected": false, +"w4_ratio": 0.0014536789422662855 +}, +{ +"source_id": "5038059005428889600", +"m1": 0.66274333, +"m2": 0.57447624, +"d_pc": 131.7, +"L_pred": 0.109, +"method": "Orbital+M1", +"w3_pred_jy": 0.5958328870745726, +"w3_meas_jy": 0.0017877340516059455, +"w3_detected": true, +"w3_ratio": 0.003000395061077248, +"w4_pred_jy": 0.6505634880440381, +"w4_meas_jy": 0.0020623486977290775, +"w4_detected": false, +"w4_ratio": 0.003170095979301981 +}, +{ +"source_id": "5780641155646533504", +"m1": 0.3356854, +"m2": 0.5657142, +"d_pc": 146.5, +"L_pred": 0.102, +"method": "Orbital+M1", +"w3_pred_jy": 0.45269680318208516, +"w3_meas_jy": 0.0003501893324633587, +"w3_detected": false, +"w3_ratio": 0.0007735626361878779, +"w4_pred_jy": 0.4942795500102414, +"w4_meas_jy": 0.0027087074160788843, +"w4_detected": false, +"w4_ratio": 0.005480112248266716 +}, +{ +"source_id": "5879292706186247680", +"m1": 0.55944884, +"m2": 0.5785637, +"d_pc": 190.0, +"L_pred": 0.112, +"method": "Orbital+M1", +"w3_pred_jy": 0.29450805232075306, +"w3_meas_jy": 0.002358864054149829, +"w3_detected": true, +"w3_ratio": 0.008009506142741237, +"w4_pred_jy": 0.32156027290730194, +"w4_meas_jy": 0.0063439842599690615, +"w4_detected": true, +"w4_ratio": 0.01972875630006036 +}, +{ +"source_id": "1751218012380971008", +"m1": 0.92710656, +"m2": 1.0929691, +"d_pc": 176.2, +"L_pred": 1.427, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 4.361584799301522, +"w3_meas_jy": 0.008926946096487027, +"w3_detected": true, +"w3_ratio": 0.0020467207465315394, +"w4_pred_jy": 4.762220887747545, +"w4_meas_jy": 0.0026446128071988153, +"w4_detected": true, +"w4_ratio": 0.0005553318230162304 +}, +{ +"source_id": "2052479731636511616", +"m1": 0.8409497, +"m2": 0.5693703, +"d_pc": 99.6, +"L_pred": 0.105, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 1.0043921211891895, +"w3_meas_jy": 0.007535341034282296, +"w3_detected": true, +"w3_ratio": 0.00750238962981961, +"w4_pred_jy": 1.0966511850880922, +"w4_meas_jy": 0.002608327359177758, +"w4_detected": false, +"w4_ratio": 0.002378447581733325 +}, +{ +"source_id": "4376781891803577856", +"m1": 0.9613186, +"m2": 0.60378873, +"d_pc": 88.2, +"L_pred": 0.133, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 1.6201087969022696, +"w3_meas_jy": 0.03832683105938315, +"w3_detected": true, +"w3_ratio": 0.02365694892384141, +"w4_pred_jy": 1.7689248995610696, +"w4_meas_jy": 0.010422264647148707, +"w4_detected": true, +"w4_ratio": 0.005891863837596964 +}, +{ +"source_id": "1034675424248243456", +"m1": 0.52311975, +"m2": 0.573586, +"d_pc": 175.4, +"L_pred": 0.108, +"method": "Orbital+M1", +"w3_pred_jy": 0.33357369471928905, +"w3_meas_jy": 0.0009896985007782268, +"w3_detected": true, +"w3_ratio": 0.0029669560773102443, +"w4_pred_jy": 0.36421431422122463, +"w4_meas_jy": 0.0021996931216221073, +"w4_detected": false, +"w4_ratio": 0.006039557029288004 +}, +{ +"source_id": "1453369108506290560", +"m1": 0.4359032, +"m2": 0.5512583, +"d_pc": 159.6, +"L_pred": 0.092, +"method": "Orbital+M1", +"w3_pred_jy": 0.3439995546716603, +"w3_meas_jy": 0.0006629837936339437, +"w3_detected": true, +"w3_ratio": 0.0019272809648452787, +"w4_pred_jy": 0.3755978480334904, +"w4_meas_jy": 0.0016686378740084732, +"w4_detected": false, +"w4_ratio": 0.004442618302380924 +}, +{ +"source_id": "868863951177644160", +"m1": 0.45646682, +"m2": 0.554947, +"d_pc": 125.2, +"L_pred": 0.095, +"method": "Orbital+M1", +"w3_pred_jy": 0.5743152659853555, +"w3_meas_jy": 0.0005684639289629339, +"w3_detected": true, +"w3_ratio": 0.0009898116289623914, +"w4_pred_jy": 0.6270693524669616, +"w4_meas_jy": 0.002759066046776271, +"w4_detected": false, +"w4_ratio": 0.004399937639946513 +}, +{ +"source_id": "1803080360967961856", +"m1": 0.8019465, +"m2": 0.69219905, +"d_pc": 188.0, +"L_pred": 0.23, +"method": "Orbital+M1", +"w3_pred_jy": 0.6162476927260764, +"w3_meas_jy": 0.0018412082508133913, +"w3_detected": true, +"w3_ratio": 0.0029877730538324515, +"w4_pred_jy": 0.6728535083844581, +"w4_meas_jy": 0.0023570136454164614, +"w4_detected": false, +"w4_ratio": 0.0035030116006613734 +}, +{ +"source_id": "1808940444398553984", +"m1": 0.81426996, +"m2": 0.67092156, +"d_pc": 156.3, +"L_pred": 0.203, +"method": "Orbital+M1", +"w3_pred_jy": 0.7867433878603086, +"w3_meas_jy": 0.0017680840744900078, +"w3_detected": true, +"w3_ratio": 0.002247345324755297, +"w4_pred_jy": 0.859010191792128, +"w4_meas_jy": 0.0032655933033950055, +"w4_detected": false, +"w4_ratio": 0.0038015769016454776 +}, +{ +"source_id": "1872478579977275520", +"m1": 1.035663, +"m2": 0.80338037, +"d_pc": 175.3, +"L_pred": 0.417, +"method": "Orbital+M1", +"w3_pred_jy": 1.2860099310392674, +"w3_meas_jy": 0.013838942739665615, +"w3_detected": true, +"w3_ratio": 0.01076114764407916, +"w4_pred_jy": 1.4041371742736122, +"w4_meas_jy": 0.0036038117487321723, +"w4_detected": false, +"w4_ratio": 0.0025665667249330504 +}, +{ +"source_id": "1966726242802331008", +"m1": 0.57014704, +"m2": 0.59049165, +"d_pc": 180.9, +"L_pred": 0.122, +"method": "Orbital+M1", +"w3_pred_jy": 0.35243725643681356, +"w3_meas_jy": 0.000294240813348677, +"w3_detected": false, +"w3_ratio": 0.0008348743158526707, +"w4_pred_jy": 0.38481060014988433, +"w4_meas_jy": 0.0017748518058781236, +"w4_detected": false, +"w4_ratio": 0.004612273687852715 +}, +{ +"source_id": "2010851637288786816", +"m1": 0.4524806, +"m2": 0.605009, +"d_pc": 118.0, +"L_pred": 0.134, +"method": "Orbital+M1", +"w3_pred_jy": 0.9132476708438053, +"w3_meas_jy": 0.0013362967506788431, +"w3_detected": true, +"w3_ratio": 0.0014632358705543229, +"w4_pred_jy": 0.9971346044849662, +"w4_meas_jy": 0.0012704632202116626, +"w4_detected": false, +"w4_ratio": 0.0012741140609274857 +}, +{ +"source_id": "2300870781411307008", +"m1": 0.34819645, +"m2": 0.57757145, +"d_pc": 181.9, +"L_pred": 0.111, +"method": "Orbital+M1", +"w3_pred_jy": 0.31913702879420325, +"w3_meas_jy": 0.0010942156258366951, +"w3_detected": true, +"w3_ratio": 0.00342867021721351, +"w4_pred_jy": 0.3484515593554045, +"w4_meas_jy": 0.0018028603886707038, +"w4_detected": false, +"w4_ratio": 0.005173919703518587 +}, +{ +"source_id": "2989538791273939200", +"m1": 0.40842703, +"m2": 0.55383426, +"d_pc": 184.7, +"L_pred": 0.094, +"method": "Orbital+M1", +"w3_pred_jy": 0.2616550024535152, +"w3_ratio": null, +"w4_pred_jy": 0.28568948568128566, +"w4_ratio": null +}, +{ +"source_id": "3640889032890567040", +"m1": 1.0112219, +"m2": 123.468704, +"d_pc": 79.2, +"L_pred": 232395416.478, +"method": "Orbital+M1", +"w3_pred_jy": 3510264717.506014, +"w3_meas_jy": 0.025298974213569754, +"w3_detected": true, +"w3_ratio": 7.207141412270544e-12, +"w4_pred_jy": 3832702269.5758286, +"w4_meas_jy": 0.006052880457054284, +"w4_detected": true, +"w4_ratio": 1.5792722813619871e-12 +}, +{ +"source_id": "4007976417346062336", +"m1": 1.634677, +"m2": 1.1583339, +"d_pc": 136.9, +"L_pred": 1.8, +"method": "Orbital+M1", +"w3_pred_jy": 9.10566845667101, +"w3_meas_jy": 0.04612144573916496, +"w3_detected": true, +"w3_ratio": 0.005065135630473718, +"w4_pred_jy": 9.942075304418468, +"w4_meas_jy": 0.01309670655409741, +"w4_detected": true, +"w4_ratio": 0.0013173010818251353 +}, +{ +"source_id": "4505797933387041024", +"m1": 0.5682806, +"m2": 0.53995013, +"d_pc": 167.3, +"L_pred": 0.085, +"method": "Orbital+M1", +"w3_pred_jy": 0.28806195722953315, +"w3_meas_jy": 0.00042296352065605245, +"w3_detected": false, +"w3_ratio": 0.0014683074597005089, +"w4_pred_jy": 0.31452206773639013, +"w4_meas_jy": 0.002664171001046092, +"w4_detected": false, +"w4_ratio": 0.008470537600811557 +}, +{ +"source_id": "4528708938201223808", +"m1": 0.9739208, +"m2": 0.95439893, +"d_pc": 139.0, +"L_pred": 0.83, +"method": "Orbital+M1", +"w3_pred_jy": 4.071732872014071, +"w3_meas_jy": 0.017262469028010943, +"w3_detected": true, +"w3_ratio": 0.004239587804656771, +"w4_pred_jy": 4.445744431138646, +"w4_meas_jy": 0.0047158729554411805, +"w4_detected": true, +"w4_ratio": 0.001060761145514914 +}, +{ +"source_id": "4690739122056717184", +"m1": 0.5295103, +"m2": 0.62203, +"d_pc": 195.6, +"L_pred": 0.15, +"method": "Orbital+M1", +"w3_pred_jy": 0.37125228623204526, +"w3_meas_jy": 0.0004144793635327724, +"w3_detected": true, +"w3_ratio": 0.0011164358548184368, +"w4_pred_jy": 0.4053538962262999, +"w4_meas_jy": 0.0026789345095932036, +"w4_detected": false, +"w4_ratio": 0.006608878154454978 +}, +{ +"source_id": "4870107539134887168", +"m1": 0.70246136, +"m2": 0.58414996, +"d_pc": 197.7, +"L_pred": 0.116, +"method": "Orbital+M1", +"w3_pred_jy": 0.2825329247880437, +"w3_meas_jy": 0.0011290233200142873, +"w3_detected": true, +"w3_ratio": 0.003996076991243697, +"w4_pred_jy": 0.30848516257611175, +"w4_meas_jy": 0.002784595370585137, +"w4_detected": false, +"w4_ratio": 0.009026675212938649 +}, +{ +"source_id": "4878690223822897408", +"m1": 0.68881744, +"m2": 0.5306445, +"d_pc": 196.2, +"L_pred": 0.079, +"method": "Orbital+M1", +"w3_pred_jy": 0.1954404499907191, +"w3_meas_jy": 0.0012187171212151842, +"w3_detected": true, +"w3_ratio": 0.00623574659837847, +"w4_pred_jy": 0.2133927542588722, +"w4_meas_jy": 0.0017217183048122483, +"w4_detected": false, +"w4_ratio": 0.008068307243101553 +}, +{ +"source_id": "595390807776621824", +"m1": 0.7915816, +"m2": 0.93316084, +"d_pc": 26.3, +"L_pred": 0.758, +"method": "Orbital+SB2", +"w3_pred_jy": 103.70915861606494, +"w3_meas_jy": 0.17778819156704334, +"w3_detected": true, +"w3_ratio": 0.0017142959593879424, +"w4_pred_jy": 113.2354279782065, +"w4_meas_jy": 0.04883847525988113, +"w4_detected": true, +"w4_ratio": 0.00043130031061728024 +}, +{ +"source_id": "5788346533133183744", +"m1": 1.0188442, +"m2": 1.2307396, +"d_pc": 142.6, +"L_pred": 2.294, +"method": "Orbital+M1", +"w3_pred_jy": 10.701994772049135, +"w3_meas_jy": 0.007370601180563667, +"w3_detected": true, +"w3_ratio": 0.0006887128369576284, +"w4_pred_jy": 11.68503316780157, +"w4_meas_jy": 0.0027616084111385625, +"w4_detected": true, +"w4_ratio": 0.00023633723340625598 +}, +{ +"source_id": "2019792041262803840", +"m1": 0.86439717, +"m2": 1.0740471, +"d_pc": 120.7, +"L_pred": 1.331, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 8.659428634253004, +"w3_meas_jy": 0.011053578819027228, +"w3_detected": true, +"w3_ratio": 0.0012764790017789382, +"w4_pred_jy": 9.454845845162257, +"w4_meas_jy": 0.0030420202224293318, +"w4_detected": false, +"w4_ratio": 0.0003217419164994463 +}, +{ +"source_id": "4706972071208550400", +"m1": 1.1505731, +"m2": 0.6667689, +"d_pc": 191.4, +"L_pred": 0.198, +"method": "Orbital+SB1+M1", +"w3_pred_jy": 0.5115728490874888, +"w3_meas_jy": 0.006967916094402584, +"w3_detected": true, +"w3_ratio": 0.0136205744828552, +"w4_pred_jy": 0.5585636917844877, +"w4_meas_jy": 0.0031416810812707175, +"w4_detected": true, +"w4_ratio": 0.005624570890445349 +}, +{ +"source_id": "6228042951071367296", +"m1": 0.9195461, +"m2": 0.78374153, +"d_pc": 105.1, +"L_pred": 0.377, +"method": "Orbital+M1", +"w3_pred_jy": 3.2415897119243624, +"w3_meas_jy": 0.019584068178337764, +"w3_detected": true, +"w3_ratio": 0.006041501213523943, +"w4_pred_jy": 3.5393479540065127, +"w4_meas_jy": 0.005706398499106778, +"w4_detected": true, +"w4_ratio": 0.001612273947987279 +}, +{ +"source_id": "6431873337203393024", +"m1": 0.6073586, +"m2": 0.6256986, +"d_pc": 102.7, +"L_pred": 0.153, +"method": "Orbital+M1", +"w3_pred_jy": 1.3773817676061415, +"w3_meas_jy": 0.00373510583701632, +"w3_detected": true, +"w3_ratio": 0.0027117433415049844, +"w4_pred_jy": 1.5039020278012354, +"w4_meas_jy": 0.0037321758366847158, +"w4_detected": false, +"w4_ratio": 0.0024816615495500765 +}, +{ +"source_id": "1543546619812246016", +"m1": 0.49483204, +"m2": 0.5844122, +"d_pc": 179.4, +"L_pred": 0.117, +"method": "Orbital+M1", +"w3_pred_jy": 0.3436235564679765, +"w3_meas_jy": 0.0007717966912465887, +"w3_detected": true, +"w3_ratio": 0.0022460529166850505, +"w4_pred_jy": 0.37518731228060853, +"w4_meas_jy": 0.0023570136454164614, +"w4_detected": false, +"w4_ratio": 0.006282231750026807 +}, +{ +"source_id": "215348015251767936", +"m1": 0.7645602, +"m2": 0.6275713, +"d_pc": 193.4, +"L_pred": 0.155, +"method": "Orbital+M1", +"w3_pred_jy": 0.39357930829481386, +"w3_meas_jy": 0.002163231072015143, +"w3_detected": true, +"w3_ratio": 0.005496302845257191, +"w4_pred_jy": 0.4297317808075064, +"w4_meas_jy": 0.0020852690471062176, +"w4_detected": false, +"w4_ratio": 0.004852489716231369 +}, +{ +"source_id": "3363639445008582272", +"m1": 0.7545628, +"m2": 0.554839, +"d_pc": 199.3, +"L_pred": 0.095, +"method": "Orbital+M1", +"w3_pred_jy": 0.2262582361636681, +"w3_meas_jy": 0.0007796557970404824, +"w3_detected": true, +"w3_ratio": 0.003445867033439189, +"w4_pred_jy": 0.2470413273762533, +"w4_meas_jy": 0.0020061439701759974, +"w4_detected": false, +"w4_ratio": 0.008120681634456102 +}, +{ +"source_id": "4519160126399215232", +"m1": 0.50321853, +"m2": 0.5680514, +"d_pc": 76.8, +"L_pred": 0.104, +"method": "Orbital+M1", +"w3_pred_jy": 1.6747080272400616, +"w3_meas_jy": 0.0020715857378284293, +"w3_detected": true, +"w3_ratio": 0.001236983225811861, +"w4_pred_jy": 1.8285393762098356, +"w4_meas_jy": 0.002114278029185267, +"w4_detected": false, +"w4_ratio": 0.0011562660649767932 +}, +{ +"source_id": "4642684279167472768", +"m1": 0.95195884, +"m2": 0.7142211, +"d_pc": 199.4, +"L_pred": 0.26, +"method": "Orbital+M1", +"w3_pred_jy": 0.6207611637939455, +"w3_meas_jy": 0.010306303143283128, +"w3_detected": true, +"w3_ratio": 0.016602686740732037, +"w4_pred_jy": 0.6777815671485783, +"w4_meas_jy": 0.003056061549798704, +"w4_detected": true, +"w4_ratio": 0.004508918061397761 +} +] \ No newline at end of file diff --git a/papers/dyson_infrared/data/hz_stack.json b/papers/dyson_infrared/data/hz_stack.json new file mode 100644 index 0000000000000000000000000000000000000000..68676370c50c5a6b1eda8bf46e550acea4a1ce2c --- /dev/null +++ b/papers/dyson_infrared/data/hz_stack.json @@ -0,0 +1,2468 @@ +{ + "W3": { + "hz": [ + 0.0004234436461748033, + 0.004539201992195979, + 69 + ], + "other": [ + -0.001060004676148413, + 0.0035762209781781385, + 124 + ], + "null": [ + 0.0017982260249989799, + 0.0005890516020987325, + 4219 + ], + "bound_mag": 0.0077797436090991795, + "covering_fraction": 1.5327907340354733e-05, + "hosts": { + "hz": [ + { + "host": "HD 2039", + "dx": -0.023999999999999133, + "sd": 0.03443526489026363, + "n": 23, + "teff": 5945.0 + }, + { + "host": "HD 221287", + "dx": 0.017999999999999794, + "sd": 0.0327804789358335, + "n": 23, + "teff": 6304.0 + }, + { + "host": "HD 188015", + "dx": -0.022499999999999964, + "sd": 0.03222796909922543, + "n": 16, + "teff": 5746.0 + }, + { + "host": "HD 165155", + "dx": -0.04600000000000115, + "sd": 0.03307848398231692, + "n": 19, + "teff": 5426.0 + }, + { + "host": "TOI-1266", + "dx": 0.025000000000000355, + "sd": 0.037304148590740216, + "n": 21, + "teff": 3563.0 + }, + { + "host": "HD 142415", + "dx": -0.0014999999999996128, + "sd": 0.034810270032994375, + "n": 16, + "teff": 5940.0 + }, + { + "host": "HD 222582", + "dx": 0.008000000000000007, + "sd": 0.030431025858118996, + "n": 12, + "teff": 5790.0 + }, + { + "host": "HD 28185", + "dx": 0.0019999999999997797, + "sd": 0.03905828999103795, + "n": 15, + "teff": 5602.0 + }, + { + "host": "HIP 71135", + "dx": -0.003000000000001002, + "sd": 0.04665811446511631, + "n": 7, + "teff": 4146.0 + }, + { + "host": "K2-18", + "dx": -0.03649999999999931, + "sd": 0.04154638416393725, + "n": 12, + "teff": 3457.0 + }, + { + "host": "TOI-700", + "dx": 0.01849999999999863, + "sd": 0.03584266768590884, + "n": 16, + "teff": 3459.0 + }, + { + "host": "LP 890-9", + "dx": -0.0259999999999998, + "sd": 0.12674383693909178, + "n": 13, + "teff": 2850.0 + }, + { + "host": "K2-72", + "dx": -0.019999999999999574, + "sd": 0.10212895953406441, + "n": 17, + "teff": 3360.47 + }, + { + "host": "Kepler-1649", + "dx": -0.0389999999999997, + "sd": 0.2946637305915005, + "n": 14, + "teff": 3240.0 + }, + { + "host": "HD 331093", + "dx": -0.0259999999999998, + "sd": 0.035392364212638125, + "n": 17, + "teff": 5544.0 + }, + { + "host": "HD 73534", + "dx": -0.03500000000000014, + "sd": 0.03929506412566434, + "n": 7, + "teff": 4917.0 + }, + { + "host": "HD 23596", + "dx": -0.009000000000000341, + "sd": 0.03391525700235801, + "n": 15, + "teff": 6040.0 + }, + { + "host": "HD 99109", + "dx": -0.016000000000000902, + "sd": 0.031278999769309104, + "n": 19, + "teff": 5282.0 + }, + { + "host": "TOI-715", + "dx": 0.010999999999998344, + "sd": 0.1146149550753756, + "n": 20, + "teff": 3075.0 + }, + { + "host": "TOI-1736", + "dx": -0.010999999999999677, + "sd": 0.038950311613714296, + "n": 22, + "teff": 5636.0 + }, + { + "host": "HD 202206", + "dx": -0.006999999999999673, + "sd": 0.03600974585058892, + "n": 15, + "teff": 5764.23 + }, + { + "host": "HD 164509", + "dx": 0.0050000000000003375, + "sd": 0.03249715497599907, + "n": 22, + "teff": 5859.0 + }, + { + "host": "HD 196885 A", + "dx": -0.015999999999999126, + "sd": 0.03081713509762033, + "n": 6, + "teff": 6254.0 + }, + { + "host": "HD 45350", + "dx": -0.001500000000000501, + "sd": 0.02766589581705245, + "n": 12, + "teff": 5566.0 + }, + { + "host": "HD 8535", + "dx": -0.02450000000000019, + "sd": 0.03588662734066829, + "n": 20, + "teff": 6136.0 + }, + { + "host": "HD 4203", + "dx": -0.004000000000000448, + "sd": 0.037517120969915996, + "n": 23, + "teff": 5582.0 + }, + { + "host": "HD 13908", + "dx": -0.019000000000000128, + "sd": 0.04219647818100386, + "n": 21, + "teff": 6255.0 + }, + { + "host": "K2-9", + "dx": -0.2159999999999993, + "sd": 0.23658671853830024, + "n": 21, + "teff": 3390.0 + }, + { + "host": "HD 17674", + "dx": -0.007000000000000117, + "sd": 0.035428437995239016, + "n": 16, + "teff": 5904.0 + }, + { + "host": "HD 34445", + "dx": -0.007000000000000117, + "sd": 0.03434591667521234, + "n": 16, + "teff": 5836.0 + }, + { + "host": "HD 137388", + "dx": 0.029000000000000803, + "sd": 0.0335056500300468, + "n": 15, + "teff": 5181.0 + }, + { + "host": "HD 7199", + "dx": 0.029999999999999805, + "sd": 0.02750855704721743, + "n": 6, + "teff": 5371.0 + }, + { + "host": "HD 24040", + "dx": -0.0039999999999995595, + "sd": 0.03440268394180863, + "n": 15, + "teff": 5802.0 + }, + { + "host": "K2-155", + "dx": 0.02800000000000047, + "sd": 0.06046586009346221, + "n": 19, + "teff": 4258.0 + }, + { + "host": "HD 16175", + "dx": -0.018500000000000405, + "sd": 0.028026666821439904, + "n": 18, + "teff": 5981.0 + }, + { + "host": "HD 108874", + "dx": -0.025500000000000522, + "sd": 0.03229206477558578, + "n": 16, + "teff": 5600.0 + }, + { + "host": "K2-288 B", + "dx": -0.0024999999999995026, + "sd": 0.05596641847179533, + "n": 22, + "teff": 3341.0 + }, + { + "host": "HD 23127", + "dx": 0.028999999999999915, + "sd": 0.03525438038978778, + "n": 23, + "teff": 5843.0 + }, + { + "host": "HD 38801", + "dx": -0.0259999999999998, + "sd": 0.031573327550762184, + "n": 13, + "teff": 5338.0 + }, + { + "host": "HD 109286", + "dx": -0.021000000000000796, + "sd": 0.04601502405862438, + "n": 19, + "teff": 5694.0 + }, + { + "host": "TOI-2257", + "dx": 0.2480000000000011, + "sd": 0.056254268912501425, + "n": 21, + "teff": 3430.0, + "galaxies": [ + { + "sep": 7.297337014251726, + "i_psf": 19.486099243164062, + "i_kron": 19.114099502563477, + "r": 19.986799240112305 + } + ] + }, + { + "host": "HIP 34222", + "dx": 0.01499999999999968, + "sd": 0.05377340462068559, + "n": 8, + "teff": 4050.0 + }, + { + "host": "HD 136118", + "dx": -0.03249999999999975, + "sd": 0.03728397982049442, + "n": 18, + "teff": 6097.0 + }, + { + "host": "HD 125612", + "dx": 0.01049999999999951, + "sd": 0.034464535521242984, + "n": 18, + "teff": 5900.0 + }, + { + "host": "HD 183263", + "dx": -0.02200000000000024, + "sd": 0.033156353338689326, + "n": 21, + "teff": 5948.0 + }, + { + "host": "HD 43197", + "dx": -0.008999999999999897, + "sd": 0.03335734559991248, + "n": 20, + "teff": 5508.0 + }, + { + "host": "HD 4113", + "dx": 0.019000000000000128, + "sd": 0.0672155534548362, + "n": 7, + "teff": 5688.0 + }, + { + "host": "HD 135872", + "dx": 0.001000000000000334, + "sd": 0.03498563041582477, + "n": 11, + "teff": 4992.0 + }, + { + "host": "HD 45364", + "dx": 0.014499999999999513, + "sd": 0.037405811662093516, + "n": 14, + "teff": 5466.0 + }, + { + "host": "K2-3", + "dx": 0.027500000000000746, + "sd": 0.03994425438808299, + "n": 18, + "teff": 3844.0 + }, + { + "host": "HD 100777", + "dx": -0.007500000000000284, + "sd": 0.04245702849211201, + "n": 18, + "teff": 5533.0 + }, + { + "host": "TOI-904", + "dx": -0.014999999999998792, + "sd": 0.03904888152203878, + "n": 17, + "teff": 3770.2 + }, + { + "host": "TOI-4633", + "dx": 0.02300000000000013, + "sd": 0.0344929575579387, + "n": 24, + "teff": 5800.0 + }, + { + "host": "TOI-6002", + "dx": 0.17099999999999937, + "sd": 0.08433068429614399, + "n": 15, + "teff": 3229.0 + }, + { + "host": "TOI-7166", + "dx": 0.04249999999999865, + "sd": 0.07594523958188981, + "n": 20, + "teff": 3099.0 + }, + { + "host": "HD 93083", + "dx": -0.026000000000000245, + "sd": 0.04300626172035911, + "n": 12, + "teff": 5033.8 + }, + { + "host": "HD 5388", + "dx": -0.0019999999999993356, + "sd": 0.047729708303318734, + "n": 6, + "teff": 6297.0 + }, + { + "host": "BD+14 4559", + "dx": 0.00550000000000006, + "sd": 0.03435890436808246, + "n": 18, + "teff": 4864.0 + }, + { + "host": "HD 132406", + "dx": 0.0029999999999992255, + "sd": 0.028679859934652153, + "n": 23, + "teff": 5766.0 + }, + { + "host": "HD 190647", + "dx": 0.03799999999999937, + "sd": 0.049097879901437984, + "n": 15, + "teff": 5656.0 + }, + { + "host": "HD 28254", + "dx": 0.07750000000000012, + "sd": 0.03432928778754374, + "n": 8, + "teff": 5664.0 + }, + { + "host": "HD 70573", + "dx": 0.01699999999999946, + "sd": 0.039998391676013476, + "n": 23, + "teff": 5737.0 + }, + { + "host": "HD 48265", + "dx": 0.0, + "sd": 0.03148247164405694, + "n": 17, + "teff": 5733.0 + }, + { + "host": "HD 564", + "dx": 0.009999999999999787, + "sd": 0.033958371173853315, + "n": 17, + "teff": 5902.0 + }, + { + "host": "HIP 109384", + "dx": 0.0044999999999997264, + "sd": 0.03278566413083634, + "n": 14, + "teff": 5180.0 + }, + { + "host": "TOI-2094", + "dx": 0.017499999999998295, + "sd": 0.06816750534070422, + "n": 18, + "teff": 3435.0 + }, + { + "host": "HD 210193", + "dx": -0.010000000000000675, + "sd": 0.031573327550762184, + "n": 13, + "teff": 5790.0 + }, + { + "host": "HD 224538", + "dx": 0.0129999999999999, + "sd": 0.030025985400359865, + "n": 23, + "teff": 6097.0 + }, + { + "host": "HD 27969", + "dx": -0.014000000000000679, + "sd": 0.036452264124561914, + "n": 22, + "teff": 5966.0 + } + ], + "other": [ + { + "host": "LHS 1478", + "dx": -0.021999999999999353, + "sd": 0.03808402019456446, + "n": 6, + "teff": 3415.0 + }, + { + "host": "GJ 3470", + "dx": -0.02200000000000024, + "sd": 0.03740313269757953, + "n": 11, + "teff": 3600.0 + }, + { + "host": "KELT-24", + "dx": 0.00550000000000006, + "sd": 0.03531364774997152, + "n": 22, + "teff": 6426.0 + }, + { + "host": "HD 106515 A", + "dx": -0.0600000000000005, + "sd": 0.034583232931581165, + "n": 5, + "teff": 5362.0 + }, + { + "host": "K2-147", + "dx": 0.062000000000001165, + "sd": 0.07258138280639265, + "n": 20, + "teff": 3690.0 + }, + { + "host": "TOI-1695", + "dx": -0.01750000000000007, + "sd": 0.04540591233672171, + "n": 16, + "teff": 3690.0 + }, + { + "host": "HD 167677", + "dx": -0.13299999999999912, + "sd": 0.04493886712501727, + "n": 21, + "teff": 5474.0 + }, + { + "host": "HD 107148", + "dx": -0.019000000000000128, + "sd": 0.035151326484283804, + "n": 17, + "teff": 5797.0 + }, + { + "host": "HD 179079", + "dx": -0.027000000000000135, + "sd": 0.03858323026302216, + "n": 17, + "teff": 5646.0 + }, + { + "host": "TOI-682", + "dx": -0.006999999999999673, + "sd": 0.03607041288837103, + "n": 12, + "teff": 5085.0 + }, + { + "host": "WASP-29", + "dx": -0.002000000000000668, + "sd": 0.041136117293391374, + "n": 23, + "teff": 4800.0 + }, + { + "host": "HD 108236", + "dx": -0.02400000000000002, + "sd": 0.04653897452673362, + "n": 24, + "teff": 5660.0 + }, + { + "host": "TOI-4898", + "dx": -0.03500000000000014, + "sd": 0.05683645343541145, + "n": 19, + "teff": 4201.57 + }, + { + "host": "TOI-912", + "dx": 0.0039999999999995595, + "sd": 0.04139958998058003, + "n": 7, + "teff": 3572.0 + }, + { + "host": "HD 93351", + "dx": 0.05400000000000027, + "sd": 0.031685467928572436, + "n": 19, + "teff": 5408.0 + }, + { + "host": "TOI-1301", + "dx": 0.0, + "sd": 0.03826674491931549, + "n": 21, + "teff": 4820.0 + }, + { + "host": "TOI-1235", + "dx": -0.02200000000000024, + "sd": 0.04122397485425212, + "n": 15, + "teff": 3997.0 + }, + { + "host": "HD 27631", + "dx": 0.0045000000000001705, + "sd": 0.03347779917617027, + "n": 18, + "teff": 5737.0 + }, + { + "host": "TOI-1756", + "dx": -0.03199999999999914, + "sd": 0.05135258349878768, + "n": 18, + "teff": 3891.86 + }, + { + "host": "TOI-782", + "dx": 0.028500000000001968, + "sd": 0.05824428004379457, + "n": 18, + "teff": 3370.0 + }, + { + "host": "TOI-1776", + "dx": 0.001000000000000334, + "sd": 0.03434626118705484, + "n": 17, + "teff": 5785.0 + }, + { + "host": "Kepler-409", + "dx": 0.008000000000000007, + "sd": 0.03655303300685154, + "n": 21, + "teff": 5421.0 + }, + { + "host": "HD 63454", + "dx": 0.007000000000000561, + "sd": 0.04241374836724504, + "n": 7, + "teff": 4812.0 + }, + { + "host": "TOI-2274", + "dx": 0.009000000000002117, + "sd": 0.05070260983669692, + "n": 19, + "teff": 3943.0 + }, + { + "host": "HD 208487", + "dx": 0.021999999999999797, + "sd": 0.04610452059071857, + "n": 14, + "teff": 6134.0 + }, + { + "host": "TOI-873", + "dx": 0.005999999999998451, + "sd": 0.06546798553558808, + "n": 20, + "teff": 3694.0 + }, + { + "host": "2MASS J22501512+2325342", + "dx": 0.02999999999999936, + "sd": 0.05154167888612128, + "n": 15, + "teff": 3352.0 + }, + { + "host": "TOI-6000", + "dx": -0.0754999999999999, + "sd": 0.07345930155875444, + "n": 18, + "teff": 3419.0 + }, + { + "host": "HR 2562", + "dx": -0.004000000000000448, + "sd": 0.028745468527119386, + "n": 11, + "teff": 6597.0 + }, + { + "host": "HD 135694", + "dx": 0.0114999999999994, + "sd": 0.032717554368316526, + "n": 24, + "teff": 5712.0 + }, + { + "host": "HD 56957", + "dx": -0.006000000000000227, + "sd": 0.03337088182240188, + "n": 17, + "teff": 5743.0 + }, + { + "host": "TOI-969", + "dx": 0.04049999999999798, + "sd": 0.043820566300432844, + "n": 16, + "teff": 4435.0 + }, + { + "host": "HD 20003", + "dx": 0.002000000000000224, + "sd": 0.04278564201195353, + "n": 18, + "teff": 5494.0 + }, + { + "host": "TOI-206", + "dx": -0.01750000000000007, + "sd": 0.06448299876779902, + "n": 20, + "teff": 3383.0 + }, + { + "host": "HD 235088", + "dx": -0.02600000000000069, + "sd": 0.030050472742406218, + "n": 19, + "teff": 5075.0 + }, + { + "host": "TOI-697", + "dx": 0.030999999999998806, + "sd": 0.03096273178225749, + "n": 18, + "teff": 5681.95 + }, + { + "host": "HIP 91258", + "dx": 0.018999999999999684, + "sd": 0.04135728818626542, + "n": 22, + "teff": 5519.0 + }, + { + "host": "TOI-2015", + "dx": 0.011000000000001009, + "sd": 0.08421299467944439, + "n": 21, + "teff": 3297.0 + }, + { + "host": "K2-321", + "dx": -0.07700000000000085, + "sd": 0.08084754747097646, + "n": 20, + "teff": 3750.0 + }, + { + "host": "TOI-512", + "dx": -0.02200000000000113, + "sd": 0.03028889536933876, + "n": 19, + "teff": 5277.0 + }, + { + "host": "HD 68988", + "dx": -0.004999999999999893, + "sd": 0.04493514899585809, + "n": 21, + "teff": 5932.0 + }, + { + "host": "HD 164595", + "dx": -0.0019999999999997797, + "sd": 0.037407245784312315, + "n": 5, + "teff": 5790.0 + }, + { + "host": "TOI-4567", + "dx": -0.01899999999999835, + "sd": 0.08194545346128733, + "n": 15, + "teff": 3830.0 + }, + { + "host": "HD 43691", + "dx": -0.017000000000000348, + "sd": 0.03317519534354671, + "n": 16, + "teff": 6093.0 + }, + { + "host": "TOI-1243", + "dx": -0.03699999999999992, + "sd": 0.04503557659450982, + "n": 20, + "teff": 3515.0 + }, + { + "host": "HD 206255", + "dx": -0.015499999999999847, + "sd": 0.03154598133431564, + "n": 6, + "teff": 5635.0 + }, + { + "host": "K2-344", + "dx": 0.0030000000000001137, + "sd": 0.05719455249217427, + "n": 18, + "teff": 4374.0 + }, + { + "host": "HD 194490", + "dx": 0.04700000000000015, + "sd": 0.043165479964370805, + "n": 20, + "teff": 5861.32 + }, + { + "host": "Kepler-42", + "dx": 0.12299999999999933, + "sd": 0.15415609832255026, + "n": 5, + "teff": 3068.0 + }, + { + "host": "HD 109749", + "dx": -0.0519999999999996, + "sd": 0.04201645438534607, + "n": 19, + "teff": 5824.0 + }, + { + "host": "TOI-5788", + "dx": 0.016499999999999737, + "sd": 0.0348030171105897, + "n": 16, + "teff": 5615.0 + }, + { + "host": "TOI-1130", + "dx": -0.0039999999999995595, + "sd": 0.03816077380683078, + "n": 15, + "teff": 4360.0 + }, + { + "host": "HIP 54515", + "dx": 0.012499999999999734, + "sd": 0.0396822896837493, + "n": 6, + "teff": 8100.0 + }, + { + "host": "TOI-6098", + "dx": -0.008999999999999453, + "sd": 0.04081055964428848, + "n": 21, + "teff": 5599.26 + }, + { + "host": "HD 183579", + "dx": 0.006000000000000227, + "sd": 0.03698018882957888, + "n": 23, + "teff": 5784.0 + }, + { + "host": "K2-184", + "dx": -0.032999999999999474, + "sd": 0.040672406586480636, + "n": 15, + "teff": 5245.0 + }, + { + "host": "HIP 8923", + "dx": 0.006999999999999673, + "sd": 0.03310704305995859, + "n": 23, + "teff": 5980.0 + }, + { + "host": "HD 17156", + "dx": -0.03200000000000003, + "sd": 0.03536325493026093, + "n": 23, + "teff": 6046.0 + }, + { + "host": "PZ Tel", + "dx": 0.08649999999999913, + "sd": 0.04469750499546902, + "n": 8, + "teff": 5169.0 + }, + { + "host": "HIP 116454", + "dx": -0.032999999999999474, + "sd": 0.03335082355804711, + "n": 21, + "teff": 5048.0 + }, + { + "host": "TOI-257", + "dx": 0.02200000000000024, + "sd": 0.028519774832210725, + "n": 21, + "teff": 6095.0 + }, + { + "host": "TOI-283", + "dx": -0.023999999999999133, + "sd": 0.035097707039848616, + "n": 18, + "teff": 5213.0 + }, + { + "host": "TOI-1105", + "dx": -0.023999999999999133, + "sd": 0.0352904687230809, + "n": 19, + "teff": 4678.46 + }, + { + "host": "TOI-4364", + "dx": -0.021999999999999353, + "sd": 0.052520591668868334, + "n": 20, + "teff": 3528.0 + }, + { + "host": "TOI-5800", + "dx": -0.0034999999999998366, + "sd": 0.03923257251443004, + "n": 14, + "teff": 4850.0 + }, + { + "host": "TOI-1278", + "dx": 0.05399999999999938, + "sd": 0.06425727292540899, + "n": 16, + "teff": 3799.0 + }, + { + "host": "K2-26", + "dx": -0.12899999999999956, + "sd": 0.1101974060703814, + "n": 16, + "teff": 3785.0 + }, + { + "host": "TOI-4616", + "dx": 0.016499999999999737, + "sd": 0.06276743697109181, + "n": 18, + "teff": 3150.0 + }, + { + "host": "HD 213519", + "dx": 0.005499999999999172, + "sd": 0.031729401188330286, + "n": 16, + "teff": 5840.0 + }, + { + "host": "TOI-1782", + "dx": 0.008999999999999453, + "sd": 0.06022655459392405, + "n": 18, + "teff": 4336.0 + }, + { + "host": "HD 108341", + "dx": -0.03300000000000036, + "sd": 0.03449153022887488, + "n": 17, + "teff": 5122.0 + }, + { + "host": "TOI-5817", + "dx": 0.026999999999999247, + "sd": 0.03388641072924852, + "n": 23, + "teff": 5770.0 + }, + { + "host": "TOI-3353", + "dx": 0.07900000000000018, + "sd": 0.040270297678685535, + "n": 16, + "teff": 6365.0 + }, + { + "host": "HD 21520", + "dx": 0.008999999999999453, + "sd": 0.03211454135932841, + "n": 21, + "teff": 5871.0 + }, + { + "host": "TOI-2453", + "dx": -0.028999999999999915, + "sd": 0.07620499897765293, + "n": 15, + "teff": 3720.23 + }, + { + "host": "HD 185269", + "dx": 0.033500000000000085, + "sd": 0.0321509200269606, + "n": 8, + "teff": 5923.0 + }, + { + "host": "TOI-1685", + "dx": 0.008499999999998842, + "sd": 0.04874095096416225, + "n": 10, + "teff": 3470.0 + }, + { + "host": "HD 102117", + "dx": -0.0009999999999994458, + "sd": 0.026930437097974994, + "n": 5, + "teff": 5655.0 + }, + { + "host": "TOI-836", + "dx": -0.054999999999999716, + "sd": 0.02696823528311992, + "n": 7, + "teff": 4552.0 + }, + { + "host": "TOI-5489", + "dx": 0.0029999999999983373, + "sd": 0.07315199655990949, + "n": 17, + "teff": 3547.0 + }, + { + "host": "HD 83443", + "dx": -0.001000000000000334, + "sd": 0.034522276109057136, + "n": 12, + "teff": 5442.0 + }, + { + "host": "HD 6718", + "dx": -0.02950000000000008, + "sd": 0.03884320479764746, + "n": 20, + "teff": 5746.0 + }, + { + "host": "TOI-1262", + "dx": 0.006000000000000227, + "sd": 0.031444584665120075, + "n": 21, + "teff": 5396.0 + }, + { + "host": "HD 95544", + "dx": -0.0019999999999997797, + "sd": 0.030022950495912294, + "n": 21, + "teff": 5722.0 + }, + { + "host": "TOI-5159", + "dx": -0.03249999999999975, + "sd": 0.04280806717810261, + "n": 14, + "teff": 5156.16 + }, + { + "host": "TOI-4342", + "dx": -0.01750000000000096, + "sd": 0.04198133816465384, + "n": 18, + "teff": 3866.0 + }, + { + "host": "TOI-2345", + "dx": -0.007500000000000284, + "sd": 0.0455612936934191, + "n": 20, + "teff": 4687.0 + }, + { + "host": "BD+60 1417", + "dx": 0.01499999999999968, + "sd": 0.04126256497577401, + "n": 18, + "teff": 4993.0 + }, + { + "host": "HAT-P-17", + "dx": 0.021999999999999353, + "sd": 0.03690687075626968, + "n": 18, + "teff": 5246.0 + }, + { + "host": "HD 24085", + "dx": 0.0029999999999992255, + "sd": 0.02487492522123242, + "n": 21, + "teff": 6034.0 + }, + { + "host": "TOI-4443", + "dx": 0.022999999999999687, + "sd": 0.031106843181525286, + "n": 21, + "teff": 5834.0 + }, + { + "host": "HD 22946", + "dx": 0.028999999999999915, + "sd": 0.040163121145821726, + "n": 23, + "teff": 6169.0 + }, + { + "host": "TOI-2104", + "dx": -0.0129999999999999, + "sd": 0.03656002862033838, + "n": 21, + "teff": 4856.13 + }, + { + "host": "TOI-1064", + "dx": -0.0024999999999995026, + "sd": 0.03810665439290091, + "n": 18, + "teff": 4734.0 + }, + { + "host": "TOI-251", + "dx": 0.016499999999999737, + "sd": 0.035927716178460765, + "n": 20, + "teff": 5875.0 + }, + { + "host": "K2-136", + "dx": -0.04800000000000004, + "sd": 0.042767449097648944, + "n": 13, + "teff": 4500.0 + }, + { + "host": "TOI-762 A", + "dx": 0.04600000000000026, + "sd": 0.14094593567386896, + "n": 16, + "teff": 3266.0 + }, + { + "host": "HD 28192", + "dx": 0.04800000000000004, + "sd": 0.039434484234516565, + "n": 17, + "teff": 5919.87 + }, + { + "host": "TOI-2768", + "dx": 0.011500000000000732, + "sd": 0.05396662077451178, + "n": 18, + "teff": 4008.0 + }, + { + "host": "K2-266", + "dx": 0.007999999999999119, + "sd": 0.03926621883604263, + "n": 21, + "teff": 4285.0 + }, + { + "host": "K2-25", + "dx": 0.008000000000000895, + "sd": 0.0750933633891491, + "n": 19, + "teff": 3207.0 + }, + { + "host": "TOI-1136", + "dx": 0.04300000000000148, + "sd": 0.04922193155871112, + "n": 20, + "teff": 5770.0 + }, + { + "host": "DMPP-1", + "dx": -0.000500000000000167, + "sd": 0.03372290089109351, + "n": 20, + "teff": 6196.0 + }, + { + "host": "TOI-1823", + "dx": -0.00300000000000189, + "sd": 0.039048881522040474, + "n": 17, + "teff": 4927.0 + }, + { + "host": "TOI-1749", + "dx": 0.05999999999999961, + "sd": 0.05443940291434719, + "n": 16, + "teff": 3985.0 + }, + { + "host": "TOI-5720", + "dx": -0.011999999999998678, + "sd": 0.061595455106662915, + "n": 13, + "teff": 3325.0 + }, + { + "host": "TOI-3235", + "dx": -0.02999999999999936, + "sd": 0.11946351313099639, + "n": 14, + "teff": 3388.8 + }, + { + "host": "TOI-1054", + "dx": -0.018000000000000682, + "sd": 0.03315961096368025, + "n": 23, + "teff": 6122.0 + }, + { + "host": "HIP 94235", + "dx": 0.04300000000000015, + "sd": 0.03971562474657289, + "n": 19, + "teff": 5991.0 + }, + { + "host": "TOI-2407", + "dx": 0.0070000000000014495, + "sd": 0.062438331802354474, + "n": 23, + "teff": 3530.0 + }, + { + "host": "TOI-7182", + "dx": -0.0030000000000001137, + "sd": 0.03191169568560173, + "n": 22, + "teff": 6156.0 + }, + { + "host": "HD 166724", + "dx": -0.025500000000000078, + "sd": 0.043597386106250385, + "n": 12, + "teff": 5127.0 + }, + { + "host": "TOI-480", + "dx": 0.009000000000000341, + "sd": 0.04166570426672396, + "n": 19, + "teff": 6174.0 + }, + { + "host": "Kepler-37", + "dx": 0.015500000000000291, + "sd": 0.03512502754172335, + "n": 22, + "teff": 5357.0 + }, + { + "host": "K2-28", + "dx": -0.1070000000000011, + "sd": 0.11187771453410632, + "n": 24, + "teff": 3214.0 + }, + { + "host": "TOI-1062", + "dx": 0.013999999999999346, + "sd": 0.030822070014844882, + "n": 20, + "teff": 5328.0 + }, + { + "host": "TOI-797", + "dx": 0.006000000000000227, + "sd": 0.03832463238532925, + "n": 16, + "teff": 3607.0 + }, + { + "host": "HD 108147", + "dx": -0.0050000000000003375, + "sd": 0.028297862092585568, + "n": 10, + "teff": 6255.73 + }, + { + "host": "TOI-4438", + "dx": -0.005999999999998451, + "sd": 0.038134559883865216, + "n": 15, + "teff": 3501.0 + }, + { + "host": "HD 30177", + "dx": -0.006000000000000227, + "sd": 0.040243033912467724, + "n": 21, + "teff": 5680.0 + }, + { + "host": "TOI-1742", + "dx": 0.017999999999999794, + "sd": 0.03542809439202864, + "n": 23, + "teff": 5815.0 + }, + { + "host": "TOI-1696", + "dx": 0.1634999999999991, + "sd": 0.28610023853327565, + "n": 12, + "teff": 3185.0 + }, + { + "host": "TOI-4479", + "dx": 0.032999999999999474, + "sd": 0.09403186118420215, + "n": 17, + "teff": 3400.0 + }, + { + "host": "TOI-1435", + "dx": 0.01499999999999968, + "sd": 0.0370881963618482, + "n": 18, + "teff": 5142.0 + } + ] + } + }, + "W4": { + "hz": [ + -0.0004552516252185441, + 0.009410735341941995, + 63 + ], + "other": [ + -0.006012768043846362, + 0.010573656131621126, + 88 + ], + "null": [ + 0.012274008906601139, + 0.0016752067082992082, + 3264 + ], + "bound_mag": 0.006388088363004285, + "covering_fraction": 8.589541626914814e-06, + "hosts": { + "hz": [ + { + "host": "HD 2039", + "dx": 0.08000000000000007, + "sd": 0.14430560467621084, + "n": 23, + "teff": 5945.0 + }, + { + "host": "HD 221287", + "dx": -0.07400000000000073, + "sd": 0.11658436475664745, + "n": 23, + "teff": 6304.0 + }, + { + "host": "HD 188015", + "dx": -0.10800000000000054, + "sd": 0.08882463729358055, + "n": 15, + "teff": 5746.0 + }, + { + "host": "HD 1605", + "dx": 0.015000000000000568, + "sd": 0.03773318205987495, + "n": 11, + "teff": 4915.0 + }, + { + "host": "HD 165155", + "dx": -0.3689999999999998, + "sd": 0.32159277060518654, + "n": 21, + "teff": 5426.0 + }, + { + "host": "HD 153950", + "dx": 0.04600000000000026, + "sd": 0.10544830386907084, + "n": 15, + "teff": 6124.0 + }, + { + "host": "TOI-1266", + "dx": 0.22049999999999947, + "sd": 0.26801088076792734, + "n": 14, + "teff": 3563.0 + }, + { + "host": "HD 142415", + "dx": -0.043499999999998984, + "sd": 0.06706306815096247, + "n": 16, + "teff": 5940.0 + }, + { + "host": "HD 163607", + "dx": 0.0039999999999995595, + "sd": 0.06692536822760195, + "n": 9, + "teff": 5522.0 + }, + { + "host": "HD 222582", + "dx": 0.051499999999999435, + "sd": 0.0686669031891641, + "n": 12, + "teff": 5790.0 + }, + { + "host": "HD 28185", + "dx": 0.010999999999999677, + "sd": 0.06839203997938989, + "n": 16, + "teff": 5602.0 + }, + { + "host": "HIP 71135", + "dx": -0.026000000000000245, + "sd": 0.16827164473606326, + "n": 6, + "teff": 4146.0 + }, + { + "host": "TOI-700", + "dx": -0.0804999999999998, + "sd": 0.13728196099169437, + "n": 14, + "teff": 3459.0 + }, + { + "host": "HD 331093", + "dx": -0.10750000000000037, + "sd": 0.10575742152442487, + "n": 18, + "teff": 5544.0 + }, + { + "host": "HD 73534", + "dx": 0.04099999999999948, + "sd": 0.06133254974791106, + "n": 8, + "teff": 4917.0 + }, + { + "host": "HD 23596", + "dx": -0.05349999999999966, + "sd": 0.06303547519089957, + "n": 16, + "teff": 6040.0 + }, + { + "host": "HD 99109", + "dx": -0.125, + "sd": 0.14911901604882116, + "n": 19, + "teff": 5282.0 + }, + { + "host": "TOI-1736", + "dx": -0.041999999999999815, + "sd": 0.15186914489575196, + "n": 23, + "teff": 5636.0 + }, + { + "host": "HD 202206", + "dx": 0.07600000000000051, + "sd": 0.13277742547550767, + "n": 15, + "teff": 5764.23 + }, + { + "host": "HD 164509", + "dx": -0.07349999999999968, + "sd": 0.09075413434935055, + "n": 24, + "teff": 5859.0 + }, + { + "host": "HD 196885 A", + "dx": 0.02300000000000013, + "sd": 0.03771314444169301, + "n": 6, + "teff": 6254.0 + }, + { + "host": "HD 45350", + "dx": -0.0030000000000001137, + "sd": 0.0811656779864308, + "n": 13, + "teff": 5566.0 + }, + { + "host": "HD 8535", + "dx": 0.0055000000000005045, + "sd": 0.06458647342321767, + "n": 20, + "teff": 6136.0 + }, + { + "host": "HD 4203", + "dx": 0.019000000000000128, + "sd": 0.134197596780141, + "n": 23, + "teff": 5582.0 + }, + { + "host": "HD 13908", + "dx": -0.05549999999999988, + "sd": 0.07102780470780767, + "n": 22, + "teff": 6255.0 + }, + { + "host": "HD 17674", + "dx": 0.03699999999999992, + "sd": 0.06574321997576017, + "n": 17, + "teff": 5904.0 + }, + { + "host": "HD 34445", + "dx": -0.02400000000000002, + "sd": 0.06657733685303334, + "n": 17, + "teff": 5836.0 + }, + { + "host": "HD 137388", + "dx": -0.03699999999999992, + "sd": 0.10784208139949776, + "n": 15, + "teff": 5181.0 + }, + { + "host": "HD 7199", + "dx": 0.02800000000000047, + "sd": 0.05552568833107855, + "n": 7, + "teff": 5371.0 + }, + { + "host": "HD 24040", + "dx": -0.011999999999999567, + "sd": 0.06056855633927522, + "n": 15, + "teff": 5802.0 + }, + { + "host": "HD 16175", + "dx": -0.01849999999999996, + "sd": 0.05178916014978418, + "n": 18, + "teff": 5981.0 + }, + { + "host": "HD 108874", + "dx": 0.014000000000000234, + "sd": 0.14071926347504765, + "n": 17, + "teff": 5600.0 + }, + { + "host": "HD 92788", + "dx": -0.06850000000000023, + "sd": 0.054308045431823146, + "n": 6, + "teff": 5744.0 + }, + { + "host": "HD 23127", + "dx": 0.04099999999999948, + "sd": 0.12160920878820684, + "n": 24, + "teff": 5843.0 + }, + { + "host": "HD 38801", + "dx": -0.06699999999999928, + "sd": 0.07008159314763597, + "n": 13, + "teff": 5338.0 + }, + { + "host": "HD 109286", + "dx": -0.09799999999999986, + "sd": 0.15118292961964674, + "n": 19, + "teff": 5694.0 + }, + { + "host": "HIP 34222", + "dx": 0.028999999999999027, + "sd": 0.10349350291955638, + "n": 7, + "teff": 4050.0 + }, + { + "host": "HD 136118", + "dx": -0.03750000000000009, + "sd": 0.044237289541516844, + "n": 18, + "teff": 6097.0 + }, + { + "host": "HD 125612", + "dx": -0.02800000000000047, + "sd": 0.11185332970052644, + "n": 19, + "teff": 5900.0 + }, + { + "host": "HD 183263", + "dx": 0.017000000000000348, + "sd": 0.11583273070250964, + "n": 21, + "teff": 5948.0 + }, + { + "host": "HD 43197", + "dx": -0.01200000000000001, + "sd": 0.12544291514826364, + "n": 20, + "teff": 5508.0 + }, + { + "host": "HD 4113", + "dx": 0.043999999999999595, + "sd": 0.07808779803682574, + "n": 7, + "teff": 5688.0 + }, + { + "host": "HD 135872", + "dx": 0.02600000000000069, + "sd": 0.042555845925667656, + "n": 13, + "teff": 4992.0 + }, + { + "host": "HD 45364", + "dx": 0.03200000000000003, + "sd": 0.06585776116887158, + "n": 15, + "teff": 5466.0 + }, + { + "host": "K2-3", + "dx": -0.06350000000000033, + "sd": 0.3900040801998347, + "n": 16, + "teff": 3844.0 + }, + { + "host": "HD 100777", + "dx": -0.036999999999999034, + "sd": 0.12240772247072783, + "n": 17, + "teff": 5533.0 + }, + { + "host": "TOI-904", + "dx": -0.09799999999999898, + "sd": 0.23337958272208478, + "n": 11, + "teff": 3770.2 + }, + { + "host": "TOI-4633", + "dx": 0.036499999999999755, + "sd": 0.09772570716727391, + "n": 24, + "teff": 5800.0 + }, + { + "host": "HD 93083", + "dx": 0.0009999999999994458, + "sd": 0.07544968382697206, + "n": 12, + "teff": 5033.8 + }, + { + "host": "HD 5388", + "dx": 0.04400000000000048, + "sd": 0.05622156917909645, + "n": 7, + "teff": 6297.0 + }, + { + "host": "BD+14 4559", + "dx": 0.11400000000000032, + "sd": 0.15091191242575924, + "n": 18, + "teff": 4864.0 + }, + { + "host": "HD 142245", + "dx": 0.03700000000000081, + "sd": 0.046583258795408464, + "n": 5, + "teff": 4922.0 + }, + { + "host": "HD 132406", + "dx": 0.030000000000001137, + "sd": 0.09453899361523098, + "n": 23, + "teff": 5766.0 + }, + { + "host": "HD 190647", + "dx": 0.03949999999999987, + "sd": 0.08570459641024256, + "n": 16, + "teff": 5656.0 + }, + { + "host": "HD 28254", + "dx": 0.028500000000000636, + "sd": 0.06551014459226884, + "n": 8, + "teff": 5664.0 + }, + { + "host": "HD 156411", + "dx": -0.011500000000000732, + "sd": 0.04526726196800529, + "n": 6, + "teff": 5900.0 + }, + { + "host": "HD 70573", + "dx": -0.03500000000000014, + "sd": 0.134901485885367, + "n": 23, + "teff": 5737.0 + }, + { + "host": "HD 48265", + "dx": 0.015000000000000568, + "sd": 0.07143967263692233, + "n": 17, + "teff": 5733.0 + }, + { + "host": "HD 564", + "dx": -0.018000000000000682, + "sd": 0.10377449336159188, + "n": 18, + "teff": 5902.0 + }, + { + "host": "HIP 109384", + "dx": -0.009999999999999787, + "sd": 0.12741372019875094, + "n": 16, + "teff": 5180.0 + }, + { + "host": "HD 210193", + "dx": 0.020999999999999464, + "sd": 0.06920168558929746, + "n": 14, + "teff": 5790.0 + }, + { + "host": "HD 224538", + "dx": 0.010999999999999233, + "sd": 0.09916743978263953, + "n": 23, + "teff": 6097.0 + }, + { + "host": "HD 27969", + "dx": -0.041000000000000814, + "sd": 0.0742724205231993, + "n": 24, + "teff": 5966.0 + } + ], + "other": [ + { + "host": "LHS 1478", + "dx": 0.027499999999999858, + "sd": 0.2391338233368612, + "n": 6, + "teff": 3415.0 + }, + { + "host": "GJ 3470", + "dx": -0.22999999999999954, + "sd": 0.22906647169324013, + "n": 12, + "teff": 3600.0 + }, + { + "host": "KELT-24", + "dx": -0.10299999999999976, + "sd": 0.15724027362413123, + "n": 23, + "teff": 6426.0 + }, + { + "host": "HD 106515 A", + "dx": 0.01499999999999968, + "sd": 0.07985608160404617, + "n": 5, + "teff": 5362.0 + }, + { + "host": "TOI-1695", + "dx": -0.12100000000000133, + "sd": 0.3118958345643682, + "n": 10, + "teff": 3690.0 + }, + { + "host": "HD 107148", + "dx": -0.008500000000000174, + "sd": 0.08151105538956052, + "n": 18, + "teff": 5797.0 + }, + { + "host": "HD 179079", + "dx": -0.06700000000000017, + "sd": 0.08908972917737919, + "n": 17, + "teff": 5646.0 + }, + { + "host": "TOI-682", + "dx": -0.19300000000000006, + "sd": 0.29473592418450995, + "n": 12, + "teff": 5085.0 + }, + { + "host": "HD 108236", + "dx": 0.09499999999999975, + "sd": 0.1588851901512263, + "n": 23, + "teff": 5660.0 + }, + { + "host": "TOI-912", + "dx": 0.051999999999998714, + "sd": 0.13332807342851677, + "n": 7, + "teff": 3572.0 + }, + { + "host": "HD 93351", + "dx": -0.028999999999999915, + "sd": 0.17531960961674653, + "n": 19, + "teff": 5408.0 + }, + { + "host": "TOI-1301", + "dx": -0.6930000000000014, + "sd": 0.3784107125415339, + "n": 5, + "teff": 4820.0 + }, + { + "host": "TOI-1235", + "dx": -0.1234999999999995, + "sd": 0.29579232358613716, + "n": 16, + "teff": 3997.0 + }, + { + "host": "HD 27631", + "dx": -0.02699999999999969, + "sd": 0.0790581913656009, + "n": 18, + "teff": 5737.0 + }, + { + "host": "TOI-1776", + "dx": 0.11800000000000033, + "sd": 0.09416197628682169, + "n": 17, + "teff": 5785.0 + }, + { + "host": "Kepler-409", + "dx": -0.032999999999999474, + "sd": 0.254323868359602, + "n": 23, + "teff": 5421.0 + }, + { + "host": "HD 63454", + "dx": -0.09199999999999964, + "sd": 0.06611184096786293, + "n": 7, + "teff": 4812.0 + }, + { + "host": "TOI-2274", + "dx": 0.03800000000000203, + "sd": 0.25551746385848906, + "n": 19, + "teff": 3943.0 + }, + { + "host": "HD 208487", + "dx": 0.0259999999999998, + "sd": 0.09979186488559093, + "n": 15, + "teff": 6134.0 + }, + { + "host": "HD 150706", + "dx": 0.031000000000000583, + "sd": 0.06259415844540131, + "n": 5, + "teff": 5961.0 + }, + { + "host": "HR 2562", + "dx": -0.005000000000001226, + "sd": 0.037946067392550714, + "n": 12, + "teff": 6597.0 + }, + { + "host": "HD 135694", + "dx": 0.0730000000000004, + "sd": 0.1287772622043344, + "n": 24, + "teff": 5712.0 + }, + { + "host": "HD 56957", + "dx": -0.05400000000000027, + "sd": 0.06976014462599665, + "n": 17, + "teff": 5743.0 + }, + { + "host": "TOI-969", + "dx": 0.3409999999999993, + "sd": 0.3230519696367151, + "n": 8, + "teff": 4435.0 + }, + { + "host": "HD 20003", + "dx": -0.00749999999999984, + "sd": 0.07407634350303778, + "n": 18, + "teff": 5494.0 + }, + { + "host": "HD 235088", + "dx": -0.15700000000000092, + "sd": 0.09510775462080065, + "n": 19, + "teff": 5075.0 + }, + { + "host": "TOI-697", + "dx": 0.02200000000000024, + "sd": 0.2471686014459052, + "n": 14, + "teff": 5681.95 + }, + { + "host": "HIP 91258", + "dx": -0.009500000000000508, + "sd": 0.10430988923091992, + "n": 22, + "teff": 5519.0 + }, + { + "host": "TOI-2322", + "dx": 0.03799999999999848, + "sd": 0.21154840135248087, + "n": 12, + "teff": 4664.0 + }, + { + "host": "TOI-512", + "dx": -0.16600000000000037, + "sd": 0.23102080832313254, + "n": 19, + "teff": 5277.0 + }, + { + "host": "HD 68988", + "dx": -0.017999999999999794, + "sd": 0.09065041667902106, + "n": 21, + "teff": 5932.0 + }, + { + "host": "HD 164595", + "dx": -0.04300000000000015, + "sd": 0.05253794800515137, + "n": 5, + "teff": 5790.0 + }, + { + "host": "HD 43691", + "dx": 0.020000000000000462, + "sd": 0.11440066188270005, + "n": 19, + "teff": 6093.0 + }, + { + "host": "HD 206255", + "dx": -0.07150000000000034, + "sd": 0.06028477786825623, + "n": 6, + "teff": 5635.0 + }, + { + "host": "HD 194490", + "dx": 0.22599999999999998, + "sd": 0.12959872575639017, + "n": 21, + "teff": 5861.32 + }, + { + "host": "HD 109749", + "dx": -0.012000000000000455, + "sd": 0.0907335757411725, + "n": 19, + "teff": 5824.0 + }, + { + "host": "TOI-5788", + "dx": 0.15700000000000003, + "sd": 0.2607548511107218, + "n": 11, + "teff": 5615.0 + }, + { + "host": "HIP 54515", + "dx": -0.08499999999999996, + "sd": 0.1490084502052816, + "n": 6, + "teff": 8100.0 + }, + { + "host": "TOI-6098", + "dx": -0.1609999999999996, + "sd": 0.19378883567820818, + "n": 19, + "teff": 5599.26 + }, + { + "host": "HD 183579", + "dx": 0.025000000000000355, + "sd": 0.14032406076653595, + "n": 23, + "teff": 5784.0 + }, + { + "host": "HIP 8923", + "dx": -0.0470000000000006, + "sd": 0.09792178403795347, + "n": 23, + "teff": 5980.0 + }, + { + "host": "HD 17156", + "dx": 0.00849999999999973, + "sd": 0.09561372722313348, + "n": 24, + "teff": 6046.0 + }, + { + "host": "PZ Tel", + "dx": 0.06300000000000017, + "sd": 0.08108313759507142, + "n": 8, + "teff": 5169.0 + }, + { + "host": "HIP 116454", + "dx": 0.012000000000000455, + "sd": 0.2457423730078298, + "n": 21, + "teff": 5048.0 + }, + { + "host": "TOI-257", + "dx": 0.0420000000000007, + "sd": 0.05908552174331697, + "n": 21, + "teff": 6095.0 + }, + { + "host": "TOI-283", + "dx": -0.1565000000000003, + "sd": 0.2150558985240823, + "n": 14, + "teff": 5213.0 + }, + { + "host": "HIP 97166", + "dx": 0.040000000000000924, + "sd": 0.15479713796604827, + "n": 21, + "teff": 5216.0 + }, + { + "host": "TOI-1105", + "dx": 0.21700000000000053, + "sd": 0.3387231503609909, + "n": 10, + "teff": 4678.46 + }, + { + "host": "TOI-5800", + "dx": -0.01750000000000007, + "sd": 0.15059230798550088, + "n": 14, + "teff": 4850.0 + }, + { + "host": "HD 213519", + "dx": -0.0420000000000007, + "sd": 0.06360563442333793, + "n": 17, + "teff": 5840.0 + }, + { + "host": "HD 108341", + "dx": -0.11650000000000071, + "sd": 0.1716036092974004, + "n": 18, + "teff": 5122.0 + }, + { + "host": "TOI-5817", + "dx": -0.14500000000000046, + "sd": 0.14445963427569566, + "n": 23, + "teff": 5770.0 + }, + { + "host": "TOI-3353", + "dx": 0.1544999999999992, + "sd": 0.20124457119318703, + "n": 16, + "teff": 6365.0 + }, + { + "host": "HD 21520", + "dx": 0.056999999999999496, + "sd": 0.13399622215570162, + "n": 21, + "teff": 5871.0 + }, + { + "host": "HD 185269", + "dx": 0.05349999999999966, + "sd": 0.04104884417708974, + "n": 10, + "teff": 5923.0 + }, + { + "host": "TOI-1685", + "dx": -0.021000000000000796, + "sd": 0.3422810813390184, + "n": 5, + "teff": 3470.0 + }, + { + "host": "HD 102117", + "dx": -0.02200000000000024, + "sd": 0.04034205637594613, + "n": 7, + "teff": 5655.0 + }, + { + "host": "TOI-836", + "dx": -0.13199999999999967, + "sd": 0.11421806143408274, + "n": 7, + "teff": 4552.0 + }, + { + "host": "HD 83443", + "dx": 0.0009999999999994458, + "sd": 0.09781088369517335, + "n": 13, + "teff": 5442.0 + }, + { + "host": "HD 6718", + "dx": -0.046999999999999265, + "sd": 0.10116241071792656, + "n": 20, + "teff": 5746.0 + }, + { + "host": "TOI-1262", + "dx": 0.1269999999999989, + "sd": 0.2879689287521416, + "n": 15, + "teff": 5396.0 + }, + { + "host": "HD 95544", + "dx": 0.006500000000000394, + "sd": 0.08246380994818565, + "n": 22, + "teff": 5722.0 + }, + { + "host": "TOI-5159", + "dx": -0.1160000000000001, + "sd": 0.17730418928983352, + "n": 14, + "teff": 5156.16 + }, + { + "host": "TOI-4342", + "dx": -0.27700000000000014, + "sd": 0.40132729306655085, + "n": 8, + "teff": 3866.0 + }, + { + "host": "TOI-2345", + "dx": -0.379999999999999, + "sd": 0.3117086306793584, + "n": 9, + "teff": 4687.0 + }, + { + "host": "BD+60 1417", + "dx": 0.12550000000000017, + "sd": 0.14147955928196806, + "n": 18, + "teff": 4993.0 + }, + { + "host": "HD 24085", + "dx": -0.008999999999999453, + "sd": 0.061444080812393526, + "n": 21, + "teff": 6034.0 + }, + { + "host": "TOI-4443", + "dx": 0.0829999999999993, + "sd": 0.10484330211320123, + "n": 21, + "teff": 5834.0 + }, + { + "host": "HD 22946", + "dx": 0.09100000000000019, + "sd": 0.12266597485319676, + "n": 23, + "teff": 6169.0 + }, + { + "host": "TOI-2104", + "dx": 0.30400000000000027, + "sd": 0.30098495719221574, + "n": 17, + "teff": 4856.13 + }, + { + "host": "TOI-1064", + "dx": 0.1869999999999994, + "sd": 0.24980465070450525, + "n": 9, + "teff": 4734.0 + }, + { + "host": "TOI-251", + "dx": -0.20650000000000013, + "sd": 0.3124280425268036, + "n": 16, + "teff": 5875.0 + }, + { + "host": "HD 330075", + "dx": -0.29600000000000026, + "sd": 0.1613116926909477, + "n": 17, + "teff": 5000.0 + }, + { + "host": "HD 28192", + "dx": 0.005999999999999339, + "sd": 0.088415576610513, + "n": 17, + "teff": 5919.87 + }, + { + "host": "TOI-1136", + "dx": -0.10699999999999932, + "sd": 0.23421284292259015, + "n": 20, + "teff": 5770.0 + }, + { + "host": "DMPP-1", + "dx": 0.07400000000000073, + "sd": 0.08922841450286144, + "n": 20, + "teff": 6196.0 + }, + { + "host": "TOI-1823", + "dx": 0.04400000000000048, + "sd": 0.2547400660727887, + "n": 13, + "teff": 4927.0 + }, + { + "host": "TOI-1054", + "dx": 0.052999999999999936, + "sd": 0.193356469899959, + "n": 23, + "teff": 6122.0 + }, + { + "host": "HIP 94235", + "dx": 0.08500000000000041, + "sd": 0.08969565025713355, + "n": 20, + "teff": 5991.0 + }, + { + "host": "TOI-7182", + "dx": -0.028999999999999915, + "sd": 0.15998434978559606, + "n": 21, + "teff": 6156.0 + }, + { + "host": "HD 166724", + "dx": -0.056999999999999496, + "sd": 0.12480306404461029, + "n": 13, + "teff": 5127.0 + }, + { + "host": "TOI-480", + "dx": 0.00849999999999973, + "sd": 0.06672733890724264, + "n": 20, + "teff": 6174.0 + }, + { + "host": "Kepler-37", + "dx": -0.28949999999999987, + "sd": 0.25293171693218175, + "n": 22, + "teff": 5357.0 + }, + { + "host": "TOI-1062", + "dx": -0.16449999999999942, + "sd": 0.22512475753661554, + "n": 18, + "teff": 5328.0 + }, + { + "host": "HD 108147", + "dx": -0.024999999999999467, + "sd": 0.05450369558472837, + "n": 11, + "teff": 6255.73 + }, + { + "host": "TOI-4438", + "dx": 0.049000000000001265, + "sd": 0.294225420436441, + "n": 12, + "teff": 3501.0 + }, + { + "host": "HD 30177", + "dx": -0.031000000000000583, + "sd": 0.1037784053063066, + "n": 21, + "teff": 5680.0 + }, + { + "host": "TOI-1742", + "dx": 0.11800000000000033, + "sd": 0.08976114421560122, + "n": 23, + "teff": 5815.0 + } + ] + } + } +} \ No newline at end of file diff --git a/papers/dyson_infrared/data/pma_dark.json b/papers/dyson_infrared/data/pma_dark.json new file mode 100644 index 0000000000000000000000000000000000000000..2c5c77421dbad317c5c7e8223d2de75f18784f57 --- /dev/null +++ b/papers/dyson_infrared/data/pma_dark.json @@ -0,0 +1,9524 @@ +[ + { + "hip": "518", + "name": "HD 123", + "gaia": "423075173674854528", + "sptype": "G3V+G8V", + "d_pc": 21.25714771591948, + "m1": 1.0, + "m2": 0.7020246857011943, + "snr": 115.68, + "ruwe": 7.086, + "dms": "1", + "ks": 4.329, + "e_ks": 0.02, + "g_ks": 1.8916000000000004, + "L2": 0.2428899441339971, + "qph": "BBAA", + "ccf": "HHH0", + "W3": 4.327, + "W3_err": 0.014, + "ks_W3": 0.0019999999999997797, + "W3_allsky": 4.325, + "ks_W3_allsky": 0.0039999999999995595, + "W3_pred_200": 34.881414475840856, + "W3_pred_300": 50.98934474375094, + "W3_pred_600": 26.385514450400212, + "W4": 4.285, + "W4_err": 0.023, + "ks_W4": 0.043999999999999595, + "W4_allsky": 4.292, + "ks_W4_allsky": 0.03699999999999992, + "W4_pred_200": 88.07708682403413, + "W4_pred_300": 55.673002764989825, + "W4_pred_600": 13.732417814501538, + "W3_excess_mag": -0.028999999999999915, + "W3_excess_sig": -0.6720408298460868, + "W3_excess_err": 0.043152140036851035, + "W3_excess_mag_allsky": -0.02600000000000069, + "W4_excess_mag": -0.02400000000000002, + "W4_excess_sig": -0.2514759075539058, + "W4_excess_err": 0.09543657773600216, + "W4_excess_mag_allsky": -0.019000000000000128, + "W3_excess_jy": 0.07455052372742454, + "W3_frac_200": 0.0021372563254009906, + "W3_frac_300": 0.0014620804425332643, + "W3_frac_600": 0.0028254337760806394, + "W4_excess_jy": 0.04875211299267217, + "W4_frac_200": 0.0005535164110283548, + "W4_frac_300": 0.0008756867884146194, + "W4_frac_600": 0.0035501478072702945 + }, + { + "hip": "1144", + "name": "HD 1002", + "gaia": "2323040096922657920", + "sptype": "G5V", + "d_pc": 47.083196007344974, + "m1": 1.22, + "m2": 0.5060759662838761, + "snr": 9.98, + "ruwe": 18.761, + "dms": "1", + "ks": 5.865, + "e_ks": 0.02, + "g_ks": 1.4117999999999995, + "L2": 0.06559380917159982, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.882, + "W3_err": 0.015, + "ks_W3": -0.01699999999999946, + "W3_allsky": 5.881, + "ks_W3_allsky": -0.016000000000000014, + "W3_pred_200": 1.9201073740349126, + "W3_pred_300": 2.80679606348803, + "W3_pred_600": 1.4524359641151539, + "W4": 5.815, + "W4_err": 0.044, + "ks_W4": 0.04999999999999982, + "W4_allsky": 5.821, + "ks_W4_allsky": 0.04400000000000048, + "W4_pred_200": 4.8483545302176125, + "W4_pred_300": 3.064616064172556, + "W4_pred_600": 0.7559245261460166, + "W3_excess_mag": -0.017999999999998906, + "W3_excess_sig": -0.46093276775839753, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": -0.019000000000000128, + "W4_excess_mag": -0.005000000000000782, + "W4_excess_sig": -0.08789531924184249, + "W4_excess_err": 0.05688585061331157, + "W4_excess_mag_allsky": -0.009999999999999787, + "W3_excess_jy": 0.016016815912797674, + "W3_frac_200": 0.008341625124401219, + "W3_frac_300": 0.005706440920717781, + "W3_frac_600": 0.011027553922182975, + "W4_excess_jy": 0.0067195745457171874, + "W4_frac_200": 0.0013859495018025399, + "W4_frac_300": 0.002192631770182758, + "W4_frac_600": 0.008889213556776718 + }, + { + "hip": "1399", + "name": "CD-60 31", + "gaia": "4905808544248368640", + "sptype": "K7.1", + "d_pc": 48.31618108904672, + "m1": 0.7, + "m2": 0.4411733822083489, + "snr": 10.48, + "ruwe": 41.47, + "dms": "0", + "ks": 7.645, + "e_ks": 0.023, + "g_ks": 3.0180000000000007, + "L2": 0.037882375726252394, + "qph": "AAAA", + "ccf": "0000", + "W3": 7.46, + "W3_err": 0.017, + "ks_W3": 0.1849999999999996, + "W3_allsky": 7.461, + "ks_W3_allsky": 0.18399999999999928, + "W3_pred_200": 1.0530440538056025, + "W3_pred_300": 1.5393305316514558, + "W3_pred_600": 0.7965591280089842, + "W4": 7.439, + "W4_err": 0.099, + "ks_W4": 0.20599999999999952, + "W4_allsky": 7.51, + "ks_W4_allsky": 0.1349999999999998, + "W4_pred_200": 2.6589819808141004, + "W4_pred_300": 1.6807266964411762, + "W4_pred_600": 0.41457151727464114, + "W3_excess_mag": 0.09499999999999975, + "W3_excess_sig": 1.9792021166244476, + "W3_excess_err": 0.047999140260633594, + "W3_excess_mag_allsky": 0.09499999999999886, + "W4_excess_mag": 0.03699999999999992, + "W4_excess_sig": 0.24739999861548764, + "W4_excess_err": 0.1495553767464074, + "W4_excess_mag_allsky": 0.04300000000000015, + "W3_excess_jy": 0.004660698840987376, + "W3_frac_200": 0.004425929593490459, + "W3_frac_300": 0.003027744038823936, + "W3_frac_600": 0.005851039398213774, + "W4_excess_jy": 0.004526682063807348, + "W4_frac_200": 0.0017024117111246516, + "W4_frac_300": 0.002693288607476925, + "W4_frac_600": 0.01091894130490532 + }, + { + "hip": "1573", + "name": "HD 1539", + "gaia": "2430993550151504896", + "sptype": "F7IV", + "d_pc": 40.317703503608435, + "m1": 1.2, + "m2": 0.4260431283828289, + "snr": 19.38, + "ruwe": 2.344, + "dms": "0", + "ks": 5.816, + "e_ks": 0.021, + "g_ks": 1.1143, + "L2": 0.03231997643924017, + "qph": "AAAA", + "ccf": "HH00", + "W3": 5.715, + "W3_err": 0.02, + "ks_W3": 0.10099999999999998, + "W3_allsky": 5.831, + "ks_W3_allsky": -0.015000000000000568, + "W3_pred_200": 1.2902503800864338, + "W3_pred_300": 1.8860766521251267, + "W3_pred_600": 0.975990238927497, + "W4": 5.825, + "W4_err": 0.053, + "ks_W4": -0.009000000000000341, + "W4_allsky": 5.837, + "ks_W4_allsky": -0.020999999999999908, + "W4_pred_200": 3.257938259078481, + "W4_pred_300": 2.0593233977891776, + "W4_pred_600": 0.5079569613479444, + "W3_excess_mag": 0.12299999999999933, + "W3_excess_sig": 2.947852341801343, + "W3_excess_err": 0.04172529209005013, + "W3_excess_mag_allsky": -0.0010000000000012221, + "W4_excess_mag": -0.05600000000000094, + "W4_excess_sig": -0.8235459554267517, + "W4_excess_err": 0.06799863399363355, + "W4_excess_mag_allsky": -0.06299999999999972, + "W3_excess_jy": 0.020034333979673725, + "W3_frac_200": 0.01552747768098439, + "W3_frac_300": 0.010622226809870187, + "W3_frac_600": 0.02052718683097609, + "W4_excess_jy": 0.00808531633193876, + "W4_frac_200": 0.002481727917773899, + "W4_frac_300": 0.003926200392137967, + "W4_frac_600": 0.0159173255751493 + }, + { + "hip": "1976", + "name": "HD 2098", + "gaia": "2317008279211780480", + "sptype": "G2V", + "d_pc": 41.63544008660171, + "m1": 1.16, + "m2": 0.5691457372776999, + "snr": 12.14, + "ruwe": 14.85, + "dms": "0", + "ks": 6.141, + "e_ks": 0.021, + "g_ks": 1.3034, + "L2": 0.10492861727733072, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.164, + "W3_err": 0.016, + "ks_W3": -0.022999999999999687, + "W3_allsky": 6.161, + "ks_W3_allsky": -0.019999999999999574, + "W3_pred_200": 3.9279157541930716, + "W3_pred_300": 5.74179268600698, + "W3_pred_600": 2.971212017907069, + "W4": 6.159, + "W4_err": 0.047, + "ks_W4": -0.017999999999999794, + "W4_allsky": 6.2, + "ks_W4_allsky": -0.05900000000000016, + "W4_pred_200": 9.918157910688196, + "W4_pred_300": 6.269208629578274, + "W4_pred_600": 1.5463759451068508, + "W3_excess_mag": -0.007999999999999119, + "W3_excess_sig": -0.20018776408451733, + "W3_excess_err": 0.03996248240537617, + "W3_excess_mag_allsky": -0.006999999999999673, + "W4_excess_mag": -0.08000000000000007, + "W4_excess_sig": -1.0043239195796057, + "W4_excess_err": 0.07965557569662068, + "W4_excess_mag_allsky": -0.09199999999999964, + "W3_excess_jy": 0.012657571984657327, + "W3_frac_200": 0.003222465240285589, + "W3_frac_300": 0.002204463427511834, + "W3_frac_600": 0.0042600702704391185, + "W4_excess_jy": 0.0070801881644748385, + "W4_frac_200": 0.0007138612057028201, + "W4_frac_300": 0.0011293591556469096, + "W4_frac_600": 0.004578568482572726 + }, + { + "hip": "1987", + "name": "HD 2057", + "gaia": "392562179817077120", + "sptype": "F8", + "d_pc": 48.42380514260811, + "m1": 1.24, + "m2": 0.3879072520213447, + "snr": 11.64, + "ruwe": 18.408, + "dms": "1", + "ks": 6.022, + "e_ks": 0.016, + "g_ks": 1.3727, + "L2": 0.0260496566569413, + "qph": "BAAA", + "ccf": "0h00", + "W3": 6.019, + "W3_err": 0.014, + "ks_W3": 0.0030000000000001137, + "W3_allsky": 6.007, + "ks_W3_allsky": 0.015000000000000568, + "W3_pred_200": 0.7209061169095878, + "W3_pred_300": 1.0538142181258459, + "W3_pred_600": 0.5453184468271567, + "W4": 5.956, + "W4_err": 0.039, + "ks_W4": 0.06599999999999984, + "W4_allsky": 5.947, + "ks_W4_allsky": 0.07500000000000018, + "W4_pred_200": 1.8203192618521942, + "W4_pred_300": 1.150612979522473, + "W4_pred_600": 0.28381257329140197, + "W3_excess_mag": 0.002000000000000668, + "W3_excess_sig": 0.05439282932206028, + "W3_excess_err": 0.03676955262170047, + "W3_excess_mag_allsky": 0.012000000000000455, + "W4_excess_mag": 0.007000000000000561, + "W4_excess_sig": 0.1313322735747896, + "W4_excess_err": 0.05329992247499074, + "W4_excess_mag_allsky": 0.022999999999999687, + "W3_excess_jy": 0.013250635091949094, + "W3_frac_200": 0.018380528034291764, + "W3_frac_300": 0.0125739763841056, + "W3_frac_600": 0.024298893919774175, + "W4_excess_jy": 0.005501206833122211, + "W4_frac_200": 0.0030221109826221774, + "W4_frac_300": 0.004781109661569539, + "W4_frac_600": 0.019383238625844446 + }, + { + "hip": "2081", + "name": "alf Phe", + "gaia": "4993479684438433792", + "sptype": "K0.5III", + "d_pc": 25.03943711345369, + "m1": 2.79, + "m2": 0.5880370762812986, + "snr": 48.77, + "ruwe": 3.826, + "dms": "", + "ks": -0.166, + "e_ks": 0.376, + "g_ks": 2.256, + "L2": 0.11956906644481984, + "qph": "UUBA", + "ccf": "HHHH", + "W3": -0.182, + "W3_err": 0.135, + "ks_W3": 0.015999999999999986, + "W3_allsky": -0.218, + "ks_W3_allsky": 0.05199999999999999, + "W3_pred_200": 12.375542576511025, + "W3_pred_300": 18.090459240457076, + "W3_pred_600": 9.361290601051618, + "W4": -0.239, + "W4_err": 0.01, + "ks_W4": 0.07299999999999998, + "W4_allsky": -0.26, + "ks_W4_allsky": 0.094, + "W4_pred_200": 31.248782607736185, + "W4_pred_300": 19.752169642017908, + "W4_pred_600": 4.87211094778018, + "W3_excess_mag": -0.05199999999999963, + "W3_excess_sig": -0.128751544360833, + "W3_excess_err": 0.40387865060683764, + "W3_excess_mag_allsky": -0.015999999999999626, + "W4_excess_mag": -0.0059999999999997555, + "W4_excess_sig": -0.015892164555766704, + "W4_excess_err": 0.3775445427175978, + "W4_excess_mag_allsky": 0.03799999999999995, + "W3_excess_jy": 76.87482795952216, + "W3_frac_200": 6.211834954649326, + "W3_frac_300": 4.2494680172408845, + "W3_frac_600": 8.211990337196271, + "W4_excess_jy": 19.15891902645484, + "W4_frac_200": 0.6131092934708987, + "W4_frac_300": 0.9699652936201463, + "W4_frac_600": 3.9323650942686315 + }, + { + "hip": "2235", + "name": "HD 2454", + "gaia": "2751054066372848768", + "sptype": "F5VSr", + "d_pc": 38.032936523028944, + "m1": 1.5, + "m2": 0.356453506686904, + "snr": 24.37, + "ruwe": 1.647, + "dms": "0", + "ks": 4.942, + "e_ks": 0.02, + "g_ks": 1.0140000000000002, + "L2": 0.021445416563316097, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.947, + "W3_err": 0.016, + "ks_W3": -0.004999999999999893, + "W3_allsky": 4.931, + "ks_W3_allsky": 0.01100000000000012, + "W3_pred_200": 0.9620758275548641, + "W3_pred_300": 1.4063539789878865, + "W3_pred_600": 0.7277475994533242, + "W4": 4.903, + "W4_err": 0.041, + "ks_W4": 0.03900000000000059, + "W4_allsky": 4.911, + "ks_W4_allsky": 0.031000000000000583, + "W4_pred_200": 2.4292832578089314, + "W4_pred_300": 1.5355354997054111, + "W4_pred_600": 0.37875835689995324, + "W3_excess_mag": -0.0030000000000001137, + "W3_excess_sig": -0.06312758801055257, + "W3_excess_err": 0.047522804126440346, + "W3_excess_mag_allsky": 0.0019999999999997797, + "W4_excess_mag": -0.013999999999999346, + "W4_excess_sig": -0.25641713750560596, + "W4_excess_err": 0.05459853477887479, + "W4_excess_mag_allsky": -0.023999999999999133, + "W3_excess_jy": 0.04666889900407237, + "W3_frac_200": 0.048508545446653985, + "W3_frac_300": 0.033184318956212336, + "W3_frac_600": 0.06412786389007606, + "W4_excess_jy": 0.014890555605112973, + "W4_frac_200": 0.006129608623139059, + "W4_frac_300": 0.009697304691405501, + "W4_frac_600": 0.03931413085374173 + }, + { + "hip": "3092", + "name": "del And", + "gaia": "2858629802998456576", + "sptype": "K3III-IIIbCN0.5", + "d_pc": 31.633556877135266, + "m1": 2.17, + "m2": 1.5048731826990083, + "snr": 100.92, + "ruwe": 5.477, + "dms": "0", + "ks": 0.467, + "e_ks": 0.19, + "g_ks": 2.3387, + "L2": 5.12860925814783, + "qph": "UUAA", + "ccf": "hh00", + "W3": 0.349, + "W3_err": 0.032, + "ks_W3": 0.11800000000000005, + "W3_allsky": 0.395, + "ks_W3_allsky": 0.07200000000000001, + "W3_pred_200": 332.58150340728434, + "W3_pred_300": 486.1647151486452, + "W3_pred_600": 251.57621031012363, + "W4": 0.372, + "W4_err": 0.009, + "ks_W4": 0.09500000000000003, + "W4_allsky": 0.382, + "ks_W4_allsky": 0.08500000000000002, + "W4_pred_200": 839.7827436716943, + "W4_pred_300": 530.8216778766931, + "W4_pred_600": 130.93357109492044, + "W3_excess_mag": 0.06400000000000067, + "W3_excess_sig": 0.31881438035121, + "W3_excess_err": 0.2007437679865552, + "W3_excess_mag_allsky": 0.017000000000000293, + "W4_excess_mag": 0.02199999999999963, + "W4_excess_sig": 0.11424756747772286, + "W4_excess_err": 0.19256427498370512, + "W4_excess_mag_allsky": 0.02899999999999997, + "W3_excess_jy": 17.0271263058358, + "W3_frac_200": 0.051196852895887365, + "W3_frac_300": 0.03502336919006914, + "W3_frac_600": 0.06768178233087334, + "W4_excess_jy": 4.170462427061318, + "W4_frac_200": 0.004966120652619321, + "W4_frac_300": 0.007856616639590393, + "W4_frac_600": 0.03185174277449392 + }, + { + "hip": "3185", + "name": "HD 3795", + "gaia": "2347427402266219008", + "sptype": "K0VFe-1.5CH-1.3", + "d_pc": 28.504646257339946, + "m1": 1.1, + "m2": 0.34328016266216105, + "snr": 24.75, + "ruwe": 1.532, + "dms": "0", + "ks": 4.333, + "e_ks": 0.02, + "g_ks": 1.6312999999999995, + "L2": 0.019666173343287827, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.296, + "W3_err": 0.017, + "ks_W3": 0.03699999999999992, + "W3_allsky": 4.298, + "ks_W3_allsky": 0.03500000000000014, + "W3_pred_200": 1.5706632592867562, + "W3_pred_300": 2.2959817314628927, + "W3_pred_600": 1.1881042884120137, + "W4": 4.251, + "W4_err": 0.027, + "ks_W4": 0.08199999999999985, + "W4_allsky": 4.246, + "ks_W4_allsky": 0.08699999999999974, + "W4_pred_200": 3.9659929603868296, + "W4_pred_300": 2.506880563507641, + "W4_pred_600": 0.6183523359510367, + "W3_excess_mag": 0.019999999999999574, + "W3_excess_sig": 0.5017276633856343, + "W3_excess_err": 0.0398622628559895, + "W3_excess_mag_allsky": 0.016000000000000014, + "W4_excess_mag": 0.009999999999999787, + "W4_excess_sig": 0.18724121153520187, + "W4_excess_err": 0.05340704601305017, + "W4_excess_mag_allsky": 0.024999999999999467, + "W3_excess_jy": 0.07053402375020107, + "W3_frac_200": 0.04490715838239625, + "W3_frac_300": 0.030720638053709632, + "W3_frac_600": 0.05936686235218866, + "W4_excess_jy": 0.02650915024944071, + "W4_frac_200": 0.006684114297281833, + "W4_frac_300": 0.010574556536650058, + "W4_frac_600": 0.042870623604371404 + }, + { + "hip": "3579", + "name": "HD 4457", + "gaia": "4703649725026569088", + "sptype": "K2V", + "d_pc": 46.66355576294914, + "m1": 0.85, + "m2": 0.3422682971066373, + "snr": 6.74, + "ruwe": 8.58, + "dms": "0", + "ks": 7.353, + "e_ks": 0.023, + "g_ks": 2.1089, + "L2": 0.019533100584972308, + "qph": "AAAA", + "ccf": "0000", + "W3": 7.268, + "W3_err": 0.015, + "ks_W3": 0.08499999999999996, + "W3_allsky": 7.271, + "ks_W3_allsky": 0.08199999999999985, + "W3_pred_200": 0.5821167046713793, + "W3_pred_300": 0.8509330765856135, + "W3_pred_600": 0.4403333108399061, + "W4": 7.225, + "W4_err": 0.083, + "ks_W4": 0.1280000000000001, + "W4_allsky": 7.23, + "ks_W4_allsky": 0.12299999999999933, + "W4_pred_200": 1.46986996684359, + "W4_pred_300": 0.9290960643572135, + "W4_pred_600": 0.22917275361309666, + "W3_excess_mag": 0.040000000000000036, + "W3_excess_sig": 0.524393295801315, + "W3_excess_err": 0.07627862583345356, + "W3_excess_mag_allsky": 0.02200000000000024, + "W4_excess_mag": 0.028999999999999915, + "W4_excess_sig": 0.2205767569051097, + "W4_excess_err": 0.13147350793844284, + "W4_excess_mag_allsky": 0.03999999999999915, + "W3_excess_jy": 0.009201813598522911, + "W3_frac_200": 0.015807506509742896, + "W3_frac_300": 0.01081379235538167, + "W3_frac_600": 0.020897382441884927, + "W4_excess_jy": 0.0047191829761320464, + "W4_frac_200": 0.003210612559331392, + "W4_frac_300": 0.005079327269992225, + "W4_frac_600": 0.020592251485965288 + }, + { + "hip": "4041", + "name": "HD 4741", + "gaia": "563920276727925376", + "sptype": "G7V", + "d_pc": 42.27257355427799, + "m1": 0.95, + "m2": 0.3924320093167999, + "snr": 11.2, + "ruwe": 8.911, + "dms": "0", + "ks": 6.481, + "e_ks": 0.023, + "g_ks": 1.7763000000000009, + "L2": 0.026753832968569223, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.45, + "W3_err": 0.016, + "ks_W3": 0.030999999999999694, + "W3_allsky": 6.435, + "ks_W3_allsky": 0.04600000000000026, + "W3_pred_200": 0.9715455524243496, + "W3_pred_300": 1.4201967394737922, + "W3_pred_600": 0.7349108285293177, + "W4": 6.415, + "W4_err": 0.055, + "ks_W4": 0.06599999999999984, + "W4_allsky": 6.37, + "ks_W4_allsky": 0.11099999999999977, + "W4_pred_200": 2.453194724475716, + "W4_pred_300": 1.550649795578008, + "W4_pred_600": 0.3824864803275803, + "W3_excess_mag": -0.0060000000000011156, + "W3_excess_sig": -0.14616766114025598, + "W3_excess_err": 0.04104875150354758, + "W3_excess_mag_allsky": 0.014000000000000234, + "W4_excess_mag": -0.019000000000000128, + "W4_excess_sig": -0.2204026060747557, + "W4_excess_err": 0.08620587722794779, + "W4_excess_mag_allsky": 0.026999999999999247, + "W3_excess_jy": 0.010006030377658555, + "W3_frac_200": 0.01029908515631611, + "W3_frac_300": 0.007045524116162923, + "W3_frac_600": 0.013615298603889582, + "W4_excess_jy": 0.006110062345062002, + "W4_frac_200": 0.0024906552603025886, + "W4_frac_300": 0.003940323832296681, + "W4_frac_600": 0.015974583833209065 + }, + { + "hip": "4395", + "name": "HD 5562", + "gaia": "4709059081717167104", + "sptype": "G8IV", + "d_pc": 47.682624451649815, + "m1": 1.19, + "m2": 0.3999159960670886, + "snr": 9.07, + "ruwe": 4.6, + "dms": "0", + "ks": 5.32, + "e_ks": 0.021, + "g_ks": 1.6654, + "L2": 0.027941905529466248, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.303, + "W3_err": 0.015, + "ks_W3": 0.017000000000000348, + "W3_allsky": 5.298, + "ks_W3_allsky": 0.02200000000000024, + "W3_pred_200": 0.7974991919598658, + "W3_pred_300": 1.1657773012579116, + "W3_pred_600": 0.6032561113086078, + "W4": 5.255, + "W4_err": 0.039, + "ks_W4": 0.06500000000000039, + "W4_allsky": 5.258, + "ks_W4_allsky": 0.06200000000000028, + "W4_pred_200": 2.0137201036097867, + "W4_pred_300": 1.2728605013942305, + "W4_pred_600": 0.31396639945049826, + "W3_excess_mag": -0.017999999999999794, + "W3_excess_sig": -0.4548588261473368, + "W3_excess_err": 0.03957271787481876, + "W3_excess_mag_allsky": -0.0129999999999999, + "W4_excess_mag": -0.010999999999999233, + "W4_excess_sig": -0.19360595511065581, + "W4_excess_err": 0.05681643415210118, + "W4_excess_mag_allsky": -0.012999999999999012, + "W3_excess_jy": 0.027685711312521285, + "W3_frac_200": 0.03471566064472523, + "W3_frac_300": 0.0237487136545269, + "W3_frac_600": 0.04589379335497209, + "W4_excess_jy": 0.011240063208695663, + "W4_frac_200": 0.005581740574842934, + "W4_frac_300": 0.008830553855967592, + "W4_frac_600": 0.03580021055873476 + }, + { + "hip": "5313", + "name": "HD 6664", + "gaia": "371013469896837248", + "sptype": "G1V", + "d_pc": 40.61738424045491, + "m1": 1.08, + "m2": 0.3746384489819296, + "snr": 11.18, + "ruwe": 25.477, + "dms": "0", + "ks": 6.245, + "e_ks": 0.02, + "g_ks": 1.3947000000000003, + "L2": 0.024045634067221874, + "qph": "AAAA", + "ccf": "hh00", + "W3": 6.221, + "W3_err": 0.016, + "ks_W3": 0.02400000000000002, + "W3_allsky": 6.22, + "ks_W3_allsky": 0.025000000000000355, + "W3_pred_200": 0.9458164527677159, + "W3_pred_300": 1.3825861679974816, + "W3_pred_600": 0.7154484431591346, + "W4": 6.136, + "W4_err": 0.044, + "ks_W4": 0.10899999999999999, + "W4_allsky": 6.136, + "ks_W4_allsky": 0.10899999999999999, + "W4_pred_200": 2.388227630153004, + "W4_pred_300": 1.5095844816321935, + "W4_pred_600": 0.3723572251988768, + "W3_excess_mag": 0.023000000000000576, + "W3_excess_sig": 0.5830731455479174, + "W3_excess_err": 0.03944616584663204, + "W3_excess_mag_allsky": 0.02200000000000024, + "W4_excess_mag": 0.05399999999999938, + "W4_excess_sig": 0.9492694478117396, + "W4_excess_err": 0.05688585061331157, + "W4_excess_mag_allsky": 0.054999999999999716, + "W3_excess_jy": 0.011846424503172881, + "W3_frac_200": 0.012525077639014446, + "W3_frac_300": 0.008568308274290837, + "W3_frac_600": 0.016558040787486798, + "W4_excess_jy": 0.004999675023096592, + "W4_frac_200": 0.0020934667030781664, + "W4_frac_300": 0.003311954437747559, + "W4_frac_600": 0.0134270928150414 + }, + { + "hip": "5346", + "name": "e Psc", + "gaia": "2576176638895865984", + "sptype": "F2V", + "d_pc": 34.51131971286582, + "m1": 1.6, + "m2": 0.5360405509894327, + "snr": 17.94, + "ruwe": 3.764, + "dms": "0", + "ks": 4.676, + "e_ks": 0.018, + "g_ks": 0.7565999999999997, + "L2": 0.08256397234454724, + "qph": "BBAA", + "ccf": "hh00", + "W3": 4.694, + "W3_err": 0.019, + "ks_W3": -0.017999999999999794, + "W3_allsky": 4.675, + "ks_W3_allsky": 0.001000000000000334, + "W3_pred_200": 4.498440486988721, + "W3_pred_300": 6.575780720107552, + "W3_pred_600": 3.402776758262325, + "W4": 4.587, + "W4_err": 0.028, + "ks_W4": 0.08900000000000041, + "W4_allsky": 4.591, + "ks_W4_allsky": 0.08499999999999996, + "W4_pred_200": 11.358757644982369, + "W4_pred_300": 7.1798031540184, + "W4_pred_600": 1.7709850706823937, + "W3_excess_mag": -0.0259999999999998, + "W3_excess_sig": -0.392858143755249, + "W3_excess_err": 0.06618164956813985, + "W3_excess_mag_allsky": -0.004999999999999893, + "W4_excess_mag": 0.004000000000000448, + "W4_excess_sig": 0.05364824001683996, + "W4_excess_err": 0.07455976186254878, + "W4_excess_mag_allsky": 0.01699999999999946, + "W3_excess_jy": 0.08424640487096267, + "W3_frac_200": 0.018727913621317607, + "W3_frac_300": 0.012811620164485163, + "W3_frac_600": 0.02475813456360395, + "W4_excess_jy": 0.027987696484359784, + "W4_frac_200": 0.0024639751422747456, + "W4_frac_300": 0.003898114737128357, + "W4_frac_600": 0.015803462687336827 + }, + { + "hip": "6273", + "name": "HD 8129", + "gaia": "2353617309132684032", + "sptype": "G7V", + "d_pc": 29.632263608617063, + "m1": 1.0, + "m2": 0.5865192779480131, + "snr": 5.34, + "ruwe": 28.274, + "dms": "0", + "ks": 5.848, + "e_ks": 0.023, + "g_ks": 1.5610999999999997, + "L2": 0.11833934604605782, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.815, + "W3_err": 0.015, + "ks_W3": 0.032999999999999474, + "W3_allsky": 5.813, + "ks_W3_allsky": 0.03500000000000014, + "W3_pred_200": 8.745689241843401, + "W3_pred_300": 12.784371576529002, + "W3_pred_600": 6.615543358460842, + "W4": 5.752, + "W4_err": 0.043, + "ks_W4": 0.09600000000000009, + "W4_allsky": 5.755, + "ks_W4_allsky": 0.09299999999999997, + "W4_pred_200": 22.0832452543854, + "W4_pred_300": 13.958687990709768, + "W4_pred_600": 3.4430788014048757, + "W3_excess_mag": 0.015999999999999126, + "W3_excess_sig": 0.3934161916839012, + "W3_excess_err": 0.04066939881532551, + "W3_excess_mag_allsky": 0.010000000000000675, + "W4_excess_mag": 0.020000000000000462, + "W4_excess_sig": 0.2895288777601416, + "W4_excess_err": 0.06907773813349748, + "W4_excess_mag_allsky": 0.018000000000000682, + "W3_excess_jy": 0.01778270088747885, + "W3_frac_200": 0.0020333103996421718, + "W3_frac_300": 0.001390971842536738, + "W3_frac_600": 0.0026880181904840746, + "W4_excess_jy": 0.00879838217479581, + "W4_frac_200": 0.00039841889511454774, + "W4_frac_300": 0.0006303158420513153, + "W4_frac_600": 0.002555382168774591 + }, + { + "hip": "6339", + "name": "BD+30 206", + "gaia": "310361075612875392", + "sptype": "K2V", + "d_pc": 29.048656499636895, + "m1": 0.87, + "m2": 0.406311750050116, + "snr": 14.62, + "ruwe": 25.707, + "dms": "0", + "ks": 6.285, + "e_ks": 0.016, + "g_ks": 1.9433000000000007, + "L2": 0.02898040257758535, + "qph": "AAAA", + "ccf": "hh00", + "W3": 6.322, + "W3_err": 0.013, + "ks_W3": -0.03699999999999992, + "W3_allsky": 6.255, + "ks_W3_allsky": 0.03000000000000025, + "W3_pred_200": 2.2286755346148137, + "W3_pred_300": 3.257858285395658, + "W3_pred_600": 1.6858476471635415, + "W4": 6.215, + "W4_err": 0.056, + "ks_W4": 0.07000000000000028, + "W4_allsky": 6.184, + "ks_W4_allsky": 0.10099999999999998, + "W4_pred_200": 5.627502540094104, + "W4_pred_300": 3.5571108874272426, + "W4_pred_600": 0.8774043161433589, + "W3_excess_mag": -0.05900000000000016, + "W3_excess_sig": -1.6208546545945348, + "W3_excess_err": 0.03640054944640259, + "W3_excess_mag_allsky": 0.017000000000000348, + "W4_excess_mag": 0.02600000000000069, + "W4_excess_sig": 0.23892954704425734, + "W4_excess_err": 0.10881868869564576, + "W4_excess_mag_allsky": 0.06899999999999995, + "W3_excess_jy": 0.00991816104962745, + "W3_frac_200": 0.004450248991198095, + "W3_frac_300": 0.00304438074979769, + "W3_frac_600": 0.00588318942480649, + "W4_excess_jy": 0.009580506433343615, + "W4_frac_200": 0.0017024437332698935, + "W4_frac_300": 0.002693339267889094, + "W4_frac_600": 0.010919146688786357 + }, + { + "hip": "6712", + "name": "HD 8765", + "gaia": "2482274463233174016", + "sptype": "G6V", + "d_pc": 45.854732208363906, + "m1": 1.08, + "m2": 0.353055165764579, + "snr": 7.51, + "ruwe": 18.338, + "dms": "0", + "ks": 6.514, + "e_ks": 0.021, + "g_ks": 1.4784999999999995, + "L2": 0.020978080504939708, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.515, + "W3_err": 0.016, + "ks_W3": -0.0009999999999994458, + "W3_allsky": 6.516, + "ks_W3_allsky": -0.0019999999999997797, + "W3_pred_200": 0.6474287162496863, + "W3_pred_300": 0.9464056004014318, + "W3_pred_600": 0.48973758676104723, + "W4": 6.391, + "W4_err": 0.062, + "ks_W4": 0.12300000000000022, + "W4_allsky": 6.449, + "ks_W4_allsky": 0.06500000000000039, + "W4_pred_200": 1.6347856332773316, + "W4_pred_300": 1.033338276315233, + "W4_pred_600": 0.2548853528518709, + "W3_excess_mag": -0.009999999999998899, + "W3_excess_sig": -0.25023470510564666, + "W3_excess_err": 0.03996248240537617, + "W3_excess_mag_allsky": -0.026999999999999247, + "W4_excess_mag": 0.0730000000000004, + "W4_excess_sig": 1.013791112825319, + "W4_excess_err": 0.07200694410957877, + "W4_excess_mag_allsky": 0.008000000000000895, + "W3_excess_jy": 0.009161158687036975, + "W3_frac_200": 0.014150065415856372, + "W3_frac_300": 0.00967994978384652, + "W3_frac_600": 0.018706260117026485, + "W4_excess_jy": 0.00511273962879584, + "W4_frac_200": 0.0031274679228408013, + "W4_frac_300": 0.004947788876095144, + "W4_frac_600": 0.0200589777780097 + }, + { + "hip": "7372", + "name": "HD 9770", + "gaia": "5022972468944971648", + "sptype": "K1V", + "d_pc": 21.837398729063395, + "m1": 0.9, + "m2": 0.9185734604847409, + "snr": 15.11, + "ruwe": 2.908, + "dms": "1", + "ks": 4.69, + "e_ks": 0.018, + "g_ks": 2.1536, + "L2": 0.7119599671328791, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.59, + "W3_err": 0.014, + "ks_W3": 0.10000000000000053, + "W3_allsky": 4.583, + "ks_W3_allsky": 0.1070000000000002, + "W3_pred_200": 96.88316099791697, + "W3_pred_300": 141.6229522288611, + "W3_pred_600": 73.28579081222497, + "W4": 4.526, + "W4_err": 0.026, + "ks_W4": 0.1640000000000006, + "W4_allsky": 4.525, + "ks_W4_allsky": 0.16500000000000004, + "W4_pred_200": 244.6341901906118, + "W4_pred_300": 154.63181671872164, + "W4_pred_600": 38.14180319248489, + "W3_excess_mag": 0.055000000000000604, + "W3_excess_sig": 0.73599236992066, + "W3_excess_err": 0.07472903558216182, + "W3_excess_mag_allsky": 0.0600000000000005, + "W4_excess_mag": 0.08500000000000085, + "W4_excess_sig": 0.8744084582898375, + "W4_excess_err": 0.09720857477321676, + "W4_excess_mag_allsky": 0.08499999999999996, + "W3_excess_jy": 0.10597364916887424, + "W3_frac_200": 0.001093829392820417, + "W3_frac_300": 0.0007482801869404757, + "W3_frac_600": 0.001446032689207149, + "W4_excess_jy": 0.039874336155954135, + "W4_frac_200": 0.00016299576165083556, + "W4_frac_300": 0.0002578663111000393, + "W4_frac_600": 0.0010454234676511205 + }, + { + "hip": "7535", + "name": "pi Psc", + "gaia": "2585868490297270144", + "sptype": "F0V", + "d_pc": 32.90556103981573, + "m1": 1.54, + "m2": 0.6841452122531192, + "snr": 24.43, + "ruwe": 10.05, + "dms": "0", + "ks": 4.578, + "e_ks": 0.024, + "g_ks": 0.8769, + "L2": 0.21907517546510544, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.589, + "W3_err": 0.014, + "ks_W3": -0.01100000000000012, + "W3_allsky": 4.586, + "ks_W3_allsky": -0.008000000000000007, + "W3_pred_200": 13.129527646088901, + "W3_pred_300": 19.192627980517056, + "W3_pred_600": 9.93163111756112, + "W4": 4.493, + "W4_err": 0.027, + "ks_W4": 0.08499999999999996, + "W4_allsky": 4.51, + "ks_W4_allsky": 0.0680000000000005, + "W4_pred_200": 33.15262766204816, + "W4_pred_300": 20.95557877820542, + "W4_pred_600": 5.168946330087016, + "W3_excess_mag": -0.019000000000000128, + "W3_excess_sig": -0.2842792118107496, + "W3_excess_err": 0.06683569958906742, + "W3_excess_mag_allsky": -0.017000000000000348, + "W4_excess_mag": 0.02799999999999958, + "W4_excess_sig": 0.3628055533307985, + "W4_excess_err": 0.07717632694136235, + "W4_excess_mag_allsky": 0.009000000000000341, + "W3_excess_jy": 0.0938051603626528, + "W3_frac_200": 0.007144595212501496, + "W3_frac_300": 0.00488756206069731, + "W3_frac_600": 0.009445091068352954, + "W4_excess_jy": 0.03170819342825403, + "W4_frac_200": 0.0009564307768144827, + "W4_frac_300": 0.0015131146585763468, + "W4_frac_600": 0.0061343630603570695 + }, + { + "hip": "9480", + "name": "48 Cas", + "gaia": "522185735919412480", + "sptype": "A3Va", + "d_pc": 34.652436066255454, + "m1": 2.0, + "m2": 0.6642229158910623, + "snr": 29.39, + "ruwe": 8.155, + "dms": "1", + "ks": 4.254, + "e_ks": 0.268, + "g_ks": 0.8093000000000004, + "L2": 0.19465045321492858, + "qph": "BBAA", + "ccf": "dd00", + "W3": 4.099, + "W3_err": 0.014, + "ks_W3": 0.15499999999999936, + "W3_allsky": 4.089, + "ks_W3_allsky": 0.16499999999999915, + "W3_pred_200": 10.51919270114301, + "W3_pred_300": 15.376863327489817, + "W3_pred_600": 7.957083025253741, + "W4": 4.04, + "W4_err": 0.028, + "ks_W4": 0.21399999999999952, + "W4_allsky": 4.046, + "ks_W4_allsky": 0.2079999999999993, + "W4_pred_200": 26.561418531321902, + "W4_pred_300": 16.789314686243905, + "W4_pred_600": 4.141287026746028, + "W3_excess_mag": 0.15899999999999892, + "W3_excess_sig": 0.5817012254504985, + "W3_excess_err": 0.27333619570228923, + "W3_excess_mag_allsky": 0.16199999999999903, + "W4_excess_mag": 0.12899999999999956, + "W4_excess_sig": 0.4675479519845413, + "W4_excess_err": 0.2759075287410621, + "W4_excess_mag_allsky": 0.1399999999999988, + "W3_excess_jy": 0.8193548386220773, + "W3_frac_200": 0.07789141827709331, + "W3_frac_300": 0.05328491391071186, + "W3_frac_600": 0.10297175937735664, + "W4_excess_jy": 0.23149077046931035, + "W4_frac_200": 0.008715301488748823, + "W4_frac_300": 0.013787982106201102, + "W4_frac_600": 0.05589826760962322 + }, + { + "hip": "9685", + "name": "HD 12894", + "gaia": "4743518532046419072", + "sptype": "F4V", + "d_pc": 45.78335317278638, + "m1": 1.5, + "m2": 0.4242389530055271, + "snr": 23.54, + "ruwe": 3.99, + "dms": "0", + "ks": 5.448, + "e_ks": 0.018, + "g_ks": 0.9236999999999993, + "L2": 0.03200605029112185, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.44, + "W3_err": 0.016, + "ks_W3": 0.008000000000000007, + "W3_allsky": 5.442, + "ks_W3_allsky": 0.006000000000000227, + "W3_pred_200": 0.9908580053207877, + "W3_pred_300": 1.4484275131789688, + "W3_pred_600": 0.7495194392358755, + "W4": 5.347, + "W4_err": 0.036, + "ks_W4": 0.10099999999999998, + "W4_allsky": 5.353, + "ks_W4_allsky": 0.09500000000000064, + "W4_pred_200": 2.501959506985404, + "W4_pred_300": 1.5814737245860135, + "W4_pred_600": 0.3900895743013196, + "W3_excess_mag": 0.011999999999999567, + "W3_excess_sig": 0.18353235656363578, + "W3_excess_err": 0.06538356628052576, + "W3_excess_mag_allsky": 0.0030000000000001137, + "W4_excess_mag": 0.043999999999999595, + "W4_excess_sig": 0.555619980531929, + "W4_excess_err": 0.0791908166403154, + "W4_excess_mag_allsky": 0.036000000000000476, + "W3_excess_jy": 0.04182048315514668, + "W3_frac_200": 0.04220633322895485, + "W3_frac_300": 0.028873024555685384, + "W3_frac_600": 0.05579639561821381, + "W4_excess_jy": 0.014859848919053249, + "W4_frac_200": 0.005939284339960318, + "W4_frac_300": 0.009396203482889448, + "W4_frac_600": 0.03809342750487085 + }, + { + "hip": "11072", + "name": "kap For", + "gaia": "5119953517683718400", + "sptype": "G0V", + "d_pc": 23.2910213112845, + "m1": 1.34, + "m2": 1.0059661884170032, + "snr": 62.49, + "ruwe": 4.44, + "dms": "0", + "ks": 3.741, + "e_ks": 0.194, + "g_ks": 1.2754999999999996, + "L2": 1.0240791768359625, + "qph": "CBAA", + "ccf": "HHH0", + "W3": 3.636, + "W3_err": 0.027, + "ks_W3": 0.10499999999999998, + "W3_allsky": 3.631, + "ks_W3_allsky": 0.11000000000000032, + "W3_pred_200": 122.50420706169709, + "W3_pred_300": 179.07557191394963, + "W3_pred_600": 92.6664406886358, + "W4": 3.583, + "W4_err": 0.022, + "ks_W4": 0.15799999999999992, + "W4_allsky": 3.594, + "ks_W4_allsky": 0.14700000000000024, + "W4_pred_200": 309.3284444974461, + "W4_pred_300": 195.52467011314744, + "W4_pred_600": 48.22851884548988, + "W3_excess_mag": 0.12299999999999978, + "W3_excess_sig": 0.6207293927219171, + "W3_excess_err": 0.19815398053029368, + "W3_excess_mag_allsky": 0.12300000000000022, + "W4_excess_mag": 0.10900000000000043, + "W4_excess_sig": 0.5518014856349625, + "W4_excess_err": 0.1975348070594142, + "W4_excess_mag_allsky": 0.11099999999999977, + "W3_excess_jy": 0.8109726521980728, + "W3_frac_200": 0.006619957564311572, + "W3_frac_300": 0.004528661522788635, + "W3_frac_600": 0.008751524782558385, + "W4_excess_jy": 0.2239242047011676, + "W4_frac_200": 0.000723904344021671, + "W4_frac_300": 0.0011452478327751978, + "W4_frac_600": 0.004642983240239152 + }, + { + "hip": "11349", + "name": "HD 15096", + "gaia": "2517082767985498112", + "sptype": "G5", + "d_pc": 29.2107261786528, + "m1": 0.96, + "m2": 0.592943669635442, + "snr": 21.5, + "ruwe": 17.825, + "dms": "0", + "ks": 6.094, + "e_ks": 0.018, + "g_ks": 1.6642000000000001, + "L2": 0.12361004009468048, + "qph": "BAAA", + "ccf": "0000", + "W3": 6.134, + "W3_err": 0.017, + "ks_W3": -0.040000000000000036, + "W3_allsky": 6.132, + "ks_W3_allsky": -0.03799999999999937, + "W3_pred_200": 9.400773165841692, + "W3_pred_300": 13.741967492255773, + "W3_pred_600": 7.111071610471758, + "W4": 6.029, + "W4_err": 0.047, + "ks_W4": 0.06500000000000039, + "W4_allsky": 6.069, + "ks_W4_allsky": 0.025000000000000355, + "W4_pred_200": 23.73736061977542, + "W4_pred_300": 15.004244475734673, + "W4_pred_600": 3.7009779228449844, + "W3_excess_mag": -0.07500000000000018, + "W3_excess_sig": -1.9281543627339826, + "W3_excess_err": 0.03889730067755345, + "W3_excess_mag_allsky": -0.07299999999999951, + "W4_excess_mag": -0.010999999999999233, + "W4_excess_sig": -0.17846452960165998, + "W4_excess_err": 0.061636897956987166, + "W4_excess_mag_allsky": -0.049999999999998934, + "W3_excess_jy": 0.012646393764702163, + "W3_frac_200": 0.0013452503896864186, + "W3_frac_300": 0.0009202753369798746, + "W3_frac_600": 0.001778409001827389, + "W4_excess_jy": 0.006018755247476123, + "W4_frac_200": 0.0002535562122463583, + "W4_frac_300": 0.0004011368421255625, + "W4_frac_600": 0.0016262607810557908 + }, + { + "hip": "11783", + "name": "sig Cet", + "gaia": "5145955421492456960", + "sptype": "F5V", + "d_pc": 23.03828963737732, + "m1": 1.47, + "m2": 0.9663602432295695, + "snr": 70.48, + "ruwe": 3.282, + "dms": "0", + "ks": 3.473, + "e_ks": 0.172, + "g_ks": 1.1204, + "L2": 0.872079781458308, + "qph": "CBAA", + "ccf": "0000", + "W3": 3.575, + "W3_err": 0.014, + "ks_W3": -0.10200000000000031, + "W3_allsky": 3.538, + "ks_W3_allsky": -0.06499999999999995, + "W3_pred_200": 106.62284917956612, + "W3_pred_300": 155.86034270896073, + "W3_pred_600": 80.65322952195066, + "W4": 3.532, + "W4_err": 0.02, + "ks_W4": -0.05900000000000016, + "W4_allsky": 3.538, + "ks_W4_allsky": -0.06499999999999995, + "W4_pred_200": 269.22732594800146, + "W4_pred_300": 170.1769915694333, + "W4_pred_600": 41.97620811852381, + "W3_excess_mag": -0.0810000000000004, + "W3_excess_sig": -0.46244207502235346, + "W3_excess_err": 0.17515707236649053, + "W3_excess_mag_allsky": -0.0510000000000006, + "W4_excess_mag": -0.10600000000000076, + "W4_excess_sig": -0.5985948469064104, + "W4_excess_err": 0.17708137740880642, + "W4_excess_mag_allsky": -0.10699999999999976, + "W3_excess_jy": 0.7325750508996022, + "W3_frac_200": 0.006870713515316542, + "W3_frac_300": 0.004700201720122902, + "W3_frac_600": 0.009083021910489323, + "W4_excess_jy": 0.20403486317773606, + "W4_frac_200": 0.0007578534699599673, + "W4_frac_300": 0.0011989568113530114, + "W4_frac_600": 0.004860726404863066 + }, + { + "hip": "12067", + "name": "HD 15851", + "gaia": "465464366292834816", + "sptype": "G3V", + "d_pc": 48.657065005838845, + "m1": 1.08, + "m2": 0.4664986588008439, + "snr": 12.66, + "ruwe": 3.704, + "dms": "0", + "ks": 6.774, + "e_ks": 0.02, + "g_ks": 1.4913999999999996, + "L2": 0.04735889905907543, + "qph": "AAAB", + "ccf": "hh00", + "W3": 6.747, + "W3_err": 0.02, + "ks_W3": 0.027000000000000135, + "W3_allsky": 6.646, + "ks_W3_allsky": 0.1280000000000001, + "W3_pred_200": 1.2980885346509485, + "W3_pred_300": 1.897534397496137, + "W3_pred_600": 0.9819192915084844, + "W4": 6.846, + "W4_err": 0.196, + "ks_W4": -0.07200000000000006, + "W4_allsky": 6.284, + "ks_W4_allsky": 0.4900000000000002, + "W4_pred_200": 3.277729939848683, + "W4_pred_300": 2.0718336014979433, + "W4_pred_600": 0.5110427540255639, + "W3_excess_mag": 0.018000000000000682, + "W3_excess_sig": 0.4365641250654159, + "W3_excess_err": 0.0412310562561766, + "W3_excess_mag_allsky": 0.11500000000000021, + "W4_excess_mag": -0.1590000000000007, + "W4_excess_sig": -0.7789557368680339, + "W4_excess_err": 0.20411942871015473, + "W4_excess_mag_allsky": 0.42100000000000026, + "W3_excess_jy": 0.007647117791695546, + "W3_frac_200": 0.0058910602686679065, + "W3_frac_300": 0.004030028547459369, + "W3_frac_600": 0.0077879290669068905, + "W4_excess_jy": 0.011573268997311686, + "W4_frac_200": 0.0035308793615394583, + "W4_frac_300": 0.005586003137001046, + "W4_frac_600": 0.022646381161159673 + }, + { + "hip": "12413", + "name": "s Eri", + "gaia": "4946915263923114368", + "sptype": "F0V", + "d_pc": 44.286979627989375, + "m1": 2.2, + "m2": 1.0964231507202382, + "snr": 5.69, + "ruwe": 5.364, + "dms": "0", + "ks": 4.46, + "e_ks": 0.024, + "g_ks": 0.2243000000000004, + "L2": 1.445149536603448, + "qph": "BBAA", + "ccf": "hh00", + "W3": 4.474, + "W3_err": 0.018, + "ks_W3": -0.014000000000000234, + "W3_allsky": 4.456, + "ks_W3_allsky": 0.0039999999999995595, + "W3_pred_200": 47.81401316310599, + "W3_pred_300": 69.89410370512465, + "W3_pred_600": 36.168181657901286, + "W4": 4.42, + "W4_err": 0.025, + "ks_W4": 0.040000000000000036, + "W4_allsky": 4.428, + "ks_W4_allsky": 0.03200000000000003, + "W4_pred_200": 120.73246031032346, + "W4_pred_300": 76.31427013599314, + "W4_pred_600": 18.82383544390425, + "W3_excess_mag": 0.0039999999999995595, + "W3_excess_sig": 0.04755684298240436, + "W3_excess_err": 0.08410987250519397, + "W3_excess_mag_allsky": 0.01499999999999968, + "W4_excess_mag": 0.020000000000000462, + "W4_excess_sig": 0.24045365903957627, + "W4_excess_err": 0.08317611002421328, + "W4_excess_mag_allsky": 0.014000000000000234, + "W3_excess_jy": 0.13452087390215203, + "W3_frac_200": 0.0028134194350778814, + "W3_frac_300": 0.0019246383710660407, + "W3_frac_600": 0.0037193153688102167, + "W4_excess_jy": 0.03686537672672603, + "W4_frac_200": 0.00030534768058208605, + "W4_frac_300": 0.00048307317440147686, + "W4_frac_600": 0.001958441298352095 + }, + { + "hip": "12716", + "name": "UX For", + "gaia": "4952751402923758592", + "sptype": "G5/8V+(G)", + "d_pc": 47.9570305006714, + "m1": 0.9, + "m2": 0.8130626115677234, + "snr": 8.36, + "ruwe": 40.75, + "dms": "0", + "ks": 5.984, + "e_ks": 0.024, + "g_ks": 1.9443000000000001, + "L2": 0.43701461626947263, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.846, + "W3_err": 0.014, + "ks_W3": 0.1379999999999999, + "W3_allsky": 5.847, + "ks_W3_allsky": 0.13699999999999957, + "W3_pred_200": 12.33064880663166, + "W3_pred_300": 18.02483392268761, + "W3_pred_600": 9.327331392926459, + "W4": 5.764, + "W4_err": 0.035, + "ks_W4": 0.21999999999999975, + "W4_allsky": 5.761, + "ks_W4_allsky": 0.22299999999999986, + "W4_pred_200": 31.13542388857467, + "W4_pred_300": 19.680516269808592, + "W4_pred_600": 4.854436779042598, + "W3_excess_mag": 0.12400000000000011, + "W3_excess_sig": 2.6768597967653647, + "W3_excess_err": 0.046322934114755625, + "W3_excess_mag_allsky": 0.12399999999999967, + "W4_excess_mag": 0.17600000000000016, + "W4_excess_sig": 2.1571788022482985, + "W4_excess_err": 0.08158804444794557, + "W4_excess_mag_allsky": 0.19099999999999984, + "W3_excess_jy": 0.019842029104274024, + "W3_frac_200": 0.0016091634280916832, + "W3_frac_300": 0.0011008161955544642, + "W3_frac_600": 0.002127299681806263, + "W4_excess_jy": 0.010463034019148955, + "W4_frac_200": 0.0003360491913196154, + "W4_frac_300": 0.000531644285937765, + "W4_frac_600": 0.0021553548836642784 + }, + { + "hip": "14668", + "name": "kap Per", + "gaia": "433103132037681536", + "sptype": "G9.5III", + "d_pc": 34.76447071093342, + "m1": 2.34, + "m2": 0.6204167740580582, + "snr": 43.67, + "ruwe": 2.901, + "dms": "0", + "ks": 1.242, + "e_ks": 0.168, + "g_ks": 2.2233, + "L2": 0.14816107651350213, + "qph": "UUAA", + "ccf": "HHHH", + "W3": 1.611, + "W3_err": 0.025, + "ks_W3": -0.369, + "W3_allsky": 1.358, + "ks_W3_allsky": -0.1160000000000001, + "W3_pred_200": 7.955315631744018, + "W3_pred_300": 11.629010388133588, + "W3_pred_600": 6.017677284969577, + "W4": 1.573, + "W4_err": 0.02, + "ks_W4": -0.33099999999999996, + "W4_allsky": 1.563, + "ks_W4_allsky": -0.32099999999999995, + "W4_pred_200": 20.087517554513482, + "W4_pred_300": 12.697200380712916, + "W4_pred_600": 3.131917662828971, + "W3_excess_mag": -0.4369999999999996, + "W3_excess_sig": -2.448334777249416, + "W3_excess_err": 0.1784886626047716, + "W3_excess_mag_allsky": -0.17099999999999982, + "W4_excess_mag": -0.41400000000000015, + "W4_excess_sig": -2.276404192532213, + "W4_excess_err": 0.18186576942624466, + "W4_excess_mag_allsky": -0.4149999999999999, + "W3_excess_jy": 4.579269111328959, + "W3_frac_200": 0.5756238122163685, + "W3_frac_300": 0.393779776480526, + "W3_frac_600": 0.7609695393215342, + "W4_excess_jy": 1.2822992317674269, + "W4_frac_200": 0.06383562470014151, + "W4_frac_300": 0.1009907060862994, + "W4_frac_600": 0.4094294198683253 + }, + { + "hip": "15244", + "name": "14 Eri", + "gaia": "5166645550267371776", + "sptype": "F5VFe-0.7CH-0.5", + "d_pc": 37.60246672181695, + "m1": 1.4, + "m2": 0.38410798323739703, + "snr": 17.92, + "ruwe": 15.862, + "dms": "0", + "ks": 5.085, + "e_ks": 0.02, + "g_ks": 0.9767999999999999, + "L2": 0.02546657280661699, + "qph": "AAAA", + "ccf": "hh00", + "W3": 5.036, + "W3_err": 0.016, + "ks_W3": 0.04900000000000038, + "W3_allsky": 4.965, + "ks_W3_allsky": 0.1200000000000001, + "W3_pred_200": 1.168778908114298, + "W3_pred_300": 1.7085107232776042, + "W3_pred_600": 0.8841049949603395, + "W4": 5.028, + "W4_err": 0.033, + "ks_W4": 0.057000000000000384, + "W4_allsky": 5.026, + "ks_W4_allsky": 0.05900000000000016, + "W4_pred_200": 2.951217515544897, + "W4_pred_300": 1.8654470399466372, + "W4_pred_600": 0.46013501861052425, + "W3_excess_mag": 0.05400000000000027, + "W3_excess_sig": 1.3689543417211703, + "W3_excess_err": 0.03944616584663204, + "W3_excess_mag_allsky": 0.11699999999999999, + "W4_excess_mag": 0.011000000000000565, + "W4_excess_sig": 0.22505289829779188, + "W4_excess_err": 0.04887739763939975, + "W4_excess_mag_allsky": 0.013000000000000345, + "W3_excess_jy": 0.035284770012693006, + "W3_frac_200": 0.030189430839080825, + "W3_frac_300": 0.02065235502005089, + "W3_frac_600": 0.03991015797199049, + "W4_excess_jy": 0.011784836114171308, + "W4_frac_200": 0.003993211632859064, + "W4_frac_300": 0.006317432691366261, + "W4_frac_600": 0.025611691433001845 + }, + { + "hip": "15394", + "name": "HD 20512", + "gaia": "30321099016072320", + "sptype": "G8V", + "d_pc": 49.370525796099734, + "m1": 1.12, + "m2": 0.3003999732714759, + "snr": 14.48, + "ruwe": 28.102, + "dms": "0", + "ks": 5.492, + "e_ks": 0.021, + "g_ks": 1.7411000000000003, + "L2": 0.014468968871578176, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.502, + "W3_err": 0.015, + "ks_W3": -0.009999999999999787, + "W3_allsky": 5.502, + "ks_W3_allsky": -0.009999999999999787, + "W3_pred_200": 0.38520916459506377, + "W3_pred_300": 0.5630953671788141, + "W3_pred_600": 0.2913856026649745, + "W4": 5.424, + "W4_err": 0.041, + "ks_W4": 0.06799999999999962, + "W4_allsky": 5.436, + "ks_W4_allsky": 0.05600000000000005, + "W4_pred_200": 0.9726698743524854, + "W4_pred_300": 0.6148188428669918, + "W4_pred_600": 0.15165248524707345, + "W3_excess_mag": -0.04899999999999949, + "W3_excess_sig": -1.2382268045121958, + "W3_excess_err": 0.03957271787481876, + "W3_excess_mag_allsky": -0.05600000000000005, + "W4_excess_mag": -0.017000000000000348, + "W4_excess_sig": -0.21613928655649187, + "W4_excess_err": 0.07865298470649432, + "W4_excess_mag_allsky": -0.02800000000000047, + "W3_excess_jy": 0.02304919096301318, + "W3_frac_200": 0.059835520754660004, + "W3_frac_300": 0.04093301473690473, + "W3_frac_600": 0.07910202409524802, + "W4_excess_jy": 0.013737900350025773, + "W4_frac_200": 0.014123908545200096, + "W4_frac_300": 0.022344631283523937, + "W4_frac_600": 0.09058803307867903 + }, + { + "hip": "16788", + "name": "HD 22309", + "gaia": "44197073198840064", + "sptype": "G0", + "d_pc": 42.96270836913559, + "m1": 1.16, + "m2": 0.4542512672184198, + "snr": 18.52, + "ruwe": 1.31, + "dms": "0", + "ks": 6.236, + "e_ks": 0.017, + "g_ks": 1.2911000000000001, + "L2": 0.04257793455616971, + "qph": "AAAA", + "ccf": "HH00", + "W3": 6.26, + "W3_err": 0.016, + "ks_W3": -0.02400000000000002, + "W3_allsky": 6.26, + "ks_W3_allsky": -0.02400000000000002, + "W3_pred_200": 1.4969104518952452, + "W3_pred_300": 2.188170526601638, + "W3_pred_600": 1.1323151011204802, + "W4": 6.194, + "W4_err": 0.061, + "ks_W4": 0.041999999999999815, + "W4_allsky": 6.239, + "ks_W4_allsky": -0.0030000000000001137, + "W4_pred_200": 3.7797639178507967, + "W4_pred_300": 2.3891662932713458, + "W4_pred_600": 0.5893166910005098, + "W3_excess_mag": -0.016000000000000014, + "W3_excess_sig": -0.42090691341172554, + "W3_excess_err": 0.03801315561749642, + "W3_excess_mag_allsky": -0.01699999999999946, + "W4_excess_mag": -0.008000000000000007, + "W4_excess_sig": -0.10451843530533447, + "W4_excess_err": 0.07654152089656951, + "W4_excess_mag_allsky": -0.04099999999999948, + "W3_excess_jy": 0.010991103052448617, + "W3_frac_200": 0.007342525425306992, + "W3_frac_300": 0.005022964581064196, + "W3_frac_600": 0.009706753042127932, + "W4_excess_jy": 0.006558282592093801, + "W4_frac_200": 0.0017351037616716793, + "W4_frac_300": 0.00274500883867482, + "W4_frac_600": 0.011128621829732172 + }, + { + "hip": "19233", + "name": "HD 26491", + "gaia": "4675955810263106432", + "sptype": "G1V", + "d_pc": 23.59158252335567, + "m1": 1.16, + "m2": 0.30925856983304223, + "snr": 58.47, + "ruwe": 1.126, + "dms": "0", + "ks": 4.773, + "e_ks": 0.018, + "g_ks": 1.4573, + "L2": 0.015469199673406337, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.783, + "W3_err": 0.015, + "ks_W3": -0.010000000000000675, + "W3_allsky": 4.782, + "ks_W3_allsky": -0.009000000000000341, + "W3_pred_200": 1.8036332387975744, + "W3_pred_300": 2.6365351975056526, + "W3_pred_600": 1.3643308793706352, + "W4": 4.721, + "W4_err": 0.027, + "ks_W4": 0.0519999999999996, + "W4_allsky": 4.729, + "ks_W4_allsky": 0.043999999999999595, + "W4_pred_200": 4.554252279027123, + "W4_pred_300": 2.8787157802947543, + "W4_pred_600": 0.7100699782815748, + "W3_excess_mag": -0.014000000000000234, + "W3_excess_sig": -0.35928590857881604, + "W3_excess_err": 0.03896618171132385, + "W3_excess_mag_allsky": -0.010000000000000675, + "W4_excess_mag": 0.0019999999999997797, + "W4_excess_sig": 0.037957344055802034, + "W4_excess_err": 0.052690725596067266, + "W4_excess_mag_allsky": -0.0129999999999999, + "W3_excess_jy": 0.043972094940477345, + "W3_frac_200": 0.024379731973553646, + "W3_frac_300": 0.01667798517618048, + "W3_frac_600": 0.03222978795346305, + "W4_excess_jy": 0.01694693407958308, + "W4_frac_200": 0.0037211232582845134, + "W4_frac_300": 0.005886977170718767, + "W4_frac_600": 0.02386656892690491 + }, + { + "hip": "19758", + "name": "HD 27019", + "gaia": "4837303163043957248", + "sptype": "F8/G0V", + "d_pc": 48.83527860526444, + "m1": 1.34, + "m2": 0.4799392880666686, + "snr": 7.75, + "ruwe": 20.052, + "dms": "", + "ks": 5.367, + "e_ks": 0.018, + "g_ks": 1.4120999999999997, + "L2": 0.05305730807848827, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.371, + "W3_err": 0.014, + "ks_W3": -0.004000000000000448, + "W3_allsky": 5.368, + "ks_W3_allsky": -0.001000000000000334, + "W3_pred_200": 1.443684873181004, + "W3_pred_300": 2.110365843992628, + "W3_pred_600": 1.0920534231639218, + "W4": 5.313, + "W4_err": 0.026, + "ks_W4": 0.05400000000000027, + "W4_allsky": 5.316, + "ks_W4_allsky": 0.051000000000000156, + "W4_pred_200": 3.645367019441742, + "W4_pred_300": 2.304214813078979, + "W4_pred_600": 0.5683623834901639, + "W3_excess_mag": -0.004999999999999893, + "W3_excess_sig": -0.132686223108566, + "W3_excess_err": 0.03768288736283354, + "W3_excess_mag_allsky": -0.004000000000000448, + "W4_excess_mag": -0.001000000000000334, + "W4_excess_sig": -0.02294157338706384, + "W4_excess_err": 0.04358898943540673, + "W4_excess_mag_allsky": -0.0030000000000001137, + "W3_excess_jy": 0.02469732485635632, + "W3_frac_200": 0.017107143889329827, + "W3_frac_300": 0.011702864186633695, + "W3_frac_600": 0.022615491451693517, + "W4_excess_jy": 0.008023275196261335, + "W4_frac_200": 0.0022009512769142333, + "W4_frac_300": 0.0034819996602401546, + "W4_frac_600": 0.014116478200039405 + }, + { + "hip": "19780", + "name": "alf Ret", + "gaia": "4676528209144882304", + "sptype": "G8IIIa:", + "d_pc": 49.14487910359741, + "m1": 3.19, + "m2": 0.5916072434300333, + "snr": 32.09, + "ruwe": 4.092, + "dms": "0", + "ks": 1.439, + "e_ks": 0.312, + "g_ks": 1.5537, + "L2": 0.12249939133597398, + "qph": "UUAA", + "ccf": "hh00", + "W3": 1.363, + "W3_err": 0.009, + "ks_W3": 0.07600000000000007, + "W3_allsky": 1.346, + "ks_W3_allsky": 0.09299999999999997, + "W3_pred_200": 3.291333744113963, + "W3_pred_300": 4.811242705240723, + "W3_pred_600": 2.489679256744515, + "W4": 1.269, + "W4_err": 0.012, + "ks_W4": 0.17000000000000015, + "W4_allsky": 1.234, + "ks_W4_allsky": 0.20500000000000007, + "W4_pred_200": 8.310760681679918, + "W4_pred_300": 5.253182400715815, + "W4_pred_600": 1.295760817625246, + "W3_excess_mag": 0.05899999999999972, + "W3_excess_sig": 0.18815685013907546, + "W3_excess_err": 0.31356817440550305, + "W3_excess_mag_allsky": 0.0680000000000005, + "W4_excess_mag": 0.09400000000000053, + "W4_excess_sig": 0.29805052314168556, + "W4_excess_err": 0.3153827713810633, + "W4_excess_mag_allsky": 0.13000000000000078, + "W3_excess_jy": 12.441503051448763, + "W3_frac_200": 3.7800794506781483, + "W3_frac_300": 2.585922975346194, + "W3_frac_600": 4.997231276978695, + "W4_excess_jy": 3.613121007414163, + "W4_frac_200": 0.4347521419283385, + "W4_frac_300": 0.6877966024788761, + "W4_frac_600": 2.7884166261764007 + }, + { + "hip": "20591", + "name": "56 Per", + "gaia": "172817599818083712", + "sptype": "F4IV-V+DA+?", + "d_pc": 41.95862879201108, + "m1": 1.54, + "m2": 0.46751052435636764, + "snr": 23.1, + "ruwe": 2.068, + "dms": "1", + "ks": 4.709, + "e_ks": 0.02, + "g_ks": 0.9852000000000007, + "L2": 0.047771135865731916, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.588, + "W3_err": 0.017, + "ks_W3": 0.12099999999999955, + "W3_allsky": 4.599, + "ks_W3_allsky": 0.10999999999999943, + "W3_pred_200": 1.760830399244806, + "W3_pred_300": 2.5739663832885813, + "W3_pred_600": 1.331953323629025, + "W4": 4.56, + "W4_err": 0.034, + "ks_W4": 0.14900000000000002, + "W4_allsky": 4.565, + "ks_W4_allsky": 0.14399999999999924, + "W4_pred_200": 4.446173249771716, + "W4_pred_300": 2.8103996686754513, + "W4_pred_600": 0.6932189851318331, + "W3_excess_mag": 0.12599999999999945, + "W3_excess_sig": 3.16088427932955, + "W3_excess_err": 0.0398622628559895, + "W3_excess_mag_allsky": 0.10699999999999932, + "W4_excess_mag": 0.1030000000000002, + "W4_excess_sig": 2.0783708540985026, + "W4_excess_err": 0.049558046773455475, + "W4_excess_mag_allsky": 0.09799999999999942, + "W3_excess_jy": 0.050721584932994, + "W3_frac_200": 0.02880549140607053, + "W3_frac_300": 0.019705612809204794, + "W3_frac_600": 0.03808060240038933, + "W4_excess_jy": 0.018405486305645428, + "W4_frac_200": 0.004139624182793695, + "W4_frac_300": 0.006549063647705303, + "W4_frac_600": 0.02655075337001216, + "reading": "known DA white-dwarf companion (56 Per B)" + }, + { + "hip": "20598", + "name": "HD 27983", + "gaia": "3191904249963463808", + "sptype": "G5V", + "d_pc": 43.557801202195314, + "m1": 0.87, + "m2": 0.46051337858090635, + "snr": 8.28, + "ruwe": 11.737, + "dms": "1", + "ks": 6.443, + "e_ks": 0.026, + "g_ks": 1.9055, + "L2": 0.044974775731922205, + "qph": "AAAA", + "ccf": "0h00", + "W3": 6.316, + "W3_err": 0.015, + "ks_W3": 0.12699999999999978, + "W3_allsky": 6.452, + "ks_W3_allsky": -0.009000000000000341, + "W3_pred_200": 1.5382667158455192, + "W3_pred_300": 2.2486247493320435, + "W3_pred_600": 1.1635984167907865, + "W4": 6.298, + "W4_err": 0.046, + "ks_W4": 0.14499999999999957, + "W4_allsky": 6.383, + "ks_W4_allsky": 0.05999999999999961, + "W4_pred_200": 3.88419028086967, + "W4_pred_300": 2.455173576285856, + "W4_pred_600": 0.6055981837193707, + "W3_excess_mag": 0.1039999999999992, + "W3_excess_sig": 2.4506228740566014, + "W3_excess_err": 0.042438190347845885, + "W3_excess_mag_allsky": -0.03900000000000059, + "W4_excess_mag": 0.09199999999999964, + "W4_excess_sig": 0.9002493196059494, + "W4_excess_err": 0.10219391228228776, + "W4_excess_mag_allsky": 0.022999999999999687, + "W3_excess_jy": 0.011726499964784046, + "W3_frac_200": 0.007623190337534211, + "W3_frac_300": 0.005214965266333307, + "W3_frac_600": 0.010077789549702057, + "W4_excess_jy": 0.008255479114554501, + "W4_frac_200": 0.002125405430113506, + "W4_frac_300": 0.003362482878723078, + "W4_frac_600": 0.013631941667744538 + }, + { + "hip": "20713", + "name": "71 Tau", + "gaia": "3312759303913978624", + "sptype": "F0V", + "d_pc": 46.652670865407046, + "m1": 2.19, + "m2": 1.0131542522218084, + "snr": 13.65, + "ruwe": 5.043, + "dms": "0", + "ks": 4.028, + "e_ks": 0.236, + "g_ks": 0.3611000000000004, + "L2": 1.0536643494872218, + "qph": "BBAA", + "ccf": "0000", + "W3": 3.799, + "W3_err": 0.016, + "ks_W3": 0.22899999999999965, + "W3_allsky": 3.784, + "ks_W3_allsky": 0.24399999999999977, + "W3_pred_200": 31.41548691741983, + "W3_pred_300": 45.92288233708456, + "W3_pred_600": 23.763766363317984, + "W4": 3.768, + "W4_err": 0.026, + "ks_W4": 0.2599999999999998, + "W4_allsky": 3.766, + "ks_W4_allsky": 0.26199999999999957, + "W4_pred_200": 79.32546917675403, + "W4_pred_300": 50.14115729820487, + "W4_pred_600": 12.367921389621817, + "W3_excess_mag": 0.24299999999999988, + "W3_excess_sig": 0.988727129331988, + "W3_excess_err": 0.24577053950585692, + "W3_excess_mag_allsky": 0.24299999999999944, + "W4_excess_mag": 0.23500000000000032, + "W4_excess_sig": 0.9431040327180832, + "W4_excess_err": 0.24917717648043136, + "W4_excess_mag_allsky": 0.23799999999999955, + "W3_excess_jy": 0.9306902432904665, + "W3_frac_200": 0.029625205101449514, + "W3_frac_300": 0.020266372577813937, + "W3_frac_600": 0.03916425658548345, + "W4_excess_jy": 0.25770207419046914, + "W4_frac_200": 0.0032486675069800606, + "W4_frac_300": 0.005139531835251343, + "W4_frac_600": 0.02083632860140204 + }, + { + "hip": "20885", + "name": "tet01 Tau", + "gaia": "3312748824193704832", + "sptype": "G9IIIFe-0.5", + "d_pc": 40.325832728445846, + "m1": 2.67, + "m2": 1.0753362543791825, + "snr": 31.58, + "ruwe": 5.744, + "dms": "0", + "ks": 1.644, + "e_ks": 0.218, + "g_ks": 1.8877, + "L2": 1.3371408358247128, + "qph": "UUAA", + "ccf": "h000", + "W3": 1.806, + "W3_err": 0.034, + "ks_W3": -0.16200000000000014, + "W3_allsky": 1.847, + "ks_W3_allsky": -0.20300000000000007, + "W3_pred_200": 53.35867014777345, + "W3_pred_300": 77.9992344954161, + "W3_pred_600": 40.36235294338006, + "W4": 1.686, + "W4_err": 0.021, + "ks_W4": -0.04200000000000004, + "W4_allsky": 1.712, + "ks_W4_allsky": -0.06800000000000006, + "W4_pred_200": 134.73296006030586, + "W4_pred_300": 85.16390276348051, + "W4_pred_600": 21.006704100342592, + "W3_excess_mag": -0.19299999999999984, + "W3_excess_sig": -0.8635877765159331, + "W3_excess_err": 0.22348625727270122, + "W3_excess_mag_allsky": -0.23300000000000032, + "W4_excess_mag": -0.10999999999999965, + "W4_excess_sig": -0.4727545121195912, + "W4_excess_err": 0.23267890031723973, + "W4_excess_mag_allsky": -0.12400000000000011, + "W3_excess_jy": 5.127680279061886, + "W3_frac_200": 0.09609835224268336, + "W3_frac_300": 0.06574013594150378, + "W3_frac_600": 0.1270411634885347, + "W4_excess_jy": 1.5965312461586185, + "W4_frac_200": 0.011849596753786292, + "W4_frac_300": 0.01874657213153498, + "W4_frac_600": 0.07600103464743815 + }, + { + "hip": "20916", + "name": "HD 28363", + "gaia": "3312892757136810880", + "sptype": "F8V", + "d_pc": 45.020709526382134, + "m1": 1.32, + "m2": 0.8014452494821349, + "snr": 7.63, + "ruwe": 15.833, + "dms": "1", + "ks": 5.22, + "e_ks": 0.02, + "g_ks": 1.2397, + "L2": 0.4125679013886965, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.267, + "W3_err": 0.015, + "ks_W3": -0.0470000000000006, + "W3_allsky": 5.273, + "ks_W3_allsky": -0.052999999999999936, + "W3_pred_200": 13.208858845945715, + "W3_pred_300": 19.30859363039734, + "W3_pred_600": 9.991639994828386, + "W4": 5.256, + "W4_err": 0.039, + "ks_W4": -0.036000000000000476, + "W4_allsky": 5.266, + "ks_W4_allsky": -0.04600000000000026, + "W4_pred_200": 33.352942387888284, + "W4_pred_300": 21.082196525087134, + "W4_pred_600": 5.20017812497062, + "W3_excess_mag": -0.02800000000000047, + "W3_excess_sig": -0.7170065276242295, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": -0.03599999999999959, + "W4_excess_mag": -0.07699999999999996, + "W4_excess_sig": -1.4322357395938563, + "W4_excess_err": 0.053762099262957296, + "W4_excess_mag_allsky": -0.0730000000000004, + "W3_excess_jy": 0.02822124597813409, + "W3_frac_200": 0.002136539295882947, + "W3_frac_300": 0.0014615899282123606, + "W3_frac_600": 0.0028244858694609935, + "W4_excess_jy": 0.010580148284250374, + "W4_frac_200": 0.00031721783827061764, + "W4_frac_300": 0.0005018522748168265, + "W4_frac_600": 0.0020345742068806827 + }, + { + "hip": "21459", + "name": "V1116 Tau", + "gaia": "146740207663868032", + "sptype": "F5IV", + "d_pc": 43.50095702105446, + "m1": 1.55, + "m2": 0.30314919289403097, + "snr": 5.04, + "ruwe": 3.435, + "dms": "0", + "ks": 4.985, + "e_ks": 0.02, + "g_ks": 0.9480999999999993, + "L2": 0.014775343747908622, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.037, + "W3_err": 0.015, + "ks_W3": -0.0519999999999996, + "W3_allsky": 5.041, + "ks_W3_allsky": -0.05600000000000005, + "W3_pred_200": 0.5066808658950064, + "W3_pred_300": 0.740661631255707, + "W3_pred_600": 0.38327102010365677, + "W4": 4.932, + "W4_err": 0.032, + "ks_W4": 0.052999999999999936, + "W4_allsky": 4.894, + "ks_W4_allsky": 0.09100000000000019, + "W4_pred_200": 1.2793911969487441, + "W4_pred_300": 0.8086955667316051, + "W4_pred_600": 0.19947451826825388, + "W3_excess_mag": -0.04699999999999971, + "W3_excess_sig": -1.0807861857746268, + "W3_excess_err": 0.04348686226620635, + "W3_excess_mag_allsky": -0.05900000000000016, + "W4_excess_mag": 0.007000000000000117, + "W4_excess_sig": 0.10909998792872891, + "W4_excess_err": 0.06416132698908239, + "W4_excess_mag_allsky": 0.04500000000000037, + "W3_excess_jy": 0.039085104015278135, + "W3_frac_200": 0.07713949084348745, + "W3_frac_300": 0.05277052619698122, + "W3_frac_600": 0.10197771802498257, + "W4_excess_jy": 0.017270215473081725, + "W4_frac_200": 0.01349877622596587, + "W4_frac_300": 0.021355645045613898, + "W4_frac_600": 0.08657855460944987 + }, + { + "hip": "22221", + "name": "HD 30311", + "gaia": "3292800109852528512", + "sptype": "F9.5V", + "d_pc": 42.44121891180715, + "m1": 1.2, + "m2": 0.5103429842397167, + "snr": 18.54, + "ruwe": 6.794, + "dms": "0", + "ks": 5.841, + "e_ks": 0.02, + "g_ks": 1.2781000000000002, + "L2": 0.06783418247801176, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.843, + "W3_err": 0.016, + "ks_W3": -0.0019999999999997797, + "W3_allsky": 5.83, + "ks_W3_allsky": 0.01100000000000012, + "W3_pred_200": 2.4438099701253297, + "W3_pred_300": 3.572339910161637, + "W3_pred_600": 1.8485828126446588, + "W4": 5.731, + "W4_err": 0.042, + "ks_W4": 0.11000000000000032, + "W4_allsky": 5.731, + "ks_W4_allsky": 0.11000000000000032, + "W4_pred_200": 6.170726335345386, + "W4_pred_300": 3.900479417717692, + "W4_pred_600": 0.9621003068051919, + "W3_excess_mag": 0.017999999999999794, + "W3_excess_sig": 0.45631811390704924, + "W3_excess_err": 0.03944616584663204, + "W3_excess_mag_allsky": 0.02800000000000047, + "W4_excess_mag": 0.06600000000000072, + "W4_excess_sig": 1.192338466324388, + "W4_excess_err": 0.05535341001239219, + "W4_excess_mag_allsky": 0.07800000000000029, + "W3_excess_jy": 0.01677981973985777, + "W3_frac_200": 0.00686625390066529, + "W3_frac_300": 0.004697150932397845, + "W3_frac_600": 0.009077126339745563, + "W4_excess_jy": 0.007049181337544244, + "W4_frac_200": 0.0011423584444455338, + "W4_frac_300": 0.001807260232043211, + "W4_frac_600": 0.007326867362668431 + }, + { + "hip": "22395", + "name": "HD 30774", + "gaia": "4874946833406791168", + "sptype": "G5V", + "d_pc": 41.60772239327619, + "m1": 1.07, + "m2": 0.42118426453602154, + "snr": 15.72, + "ruwe": 5.01, + "dms": "1", + "ks": 6.127, + "e_ks": 0.023, + "g_ks": 1.5840000000000005, + "L2": 0.031478479924459096, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.094, + "W3_err": 0.015, + "ks_W3": 0.032999999999999474, + "W3_allsky": 6.09, + "ks_W3_allsky": 0.03699999999999992, + "W3_pred_200": 1.179941292480253, + "W3_pred_300": 1.7248277985209874, + "W3_pred_600": 0.8925486105193594, + "W4": 5.995, + "W4_err": 0.049, + "ks_W4": 0.13199999999999967, + "W4_allsky": 5.999, + "ks_W4_allsky": 0.1280000000000001, + "W4_pred_200": 2.979403020970556, + "W4_pred_300": 1.8832629302999404, + "W4_pred_600": 0.4645295229109598, + "W3_excess_mag": 0.015999999999999126, + "W3_excess_sig": 0.3934161916839012, + "W3_excess_err": 0.04066939881532551, + "W3_excess_mag_allsky": 0.009999999999999787, + "W4_excess_mag": 0.05600000000000005, + "W4_excess_sig": 0.9048751049805595, + "W4_excess_err": 0.06188699378706321, + "W4_excess_mag_allsky": 0.053000000000000824, + "W3_excess_jy": 0.013753008884041453, + "W3_frac_200": 0.011655672169191094, + "W3_frac_300": 0.007973554748963602, + "W3_frac_600": 0.015408694520334084, + "W4_excess_jy": 0.006237630143634492, + "W4_frac_200": 0.002093583882318328, + "W4_frac_300": 0.0033121398203494867, + "W4_frac_600": 0.013427844380151724 + }, + { + "hip": "23395", + "name": "HD 32092", + "gaia": "3420438360271164288", + "sptype": "G2V", + "d_pc": 36.770113251948814, + "m1": 1.27, + "m2": 0.42831505293202365, + "snr": 11.25, + "ruwe": 14.725, + "dms": "1", + "ks": 5.467, + "e_ks": 0.031, + "g_ks": 1.2168, + "L2": 0.03271775627029572, + "qph": "BAAA", + "ccf": "hh00", + "W3": 5.507, + "W3_err": 0.015, + "ks_W3": -0.040000000000000036, + "W3_allsky": 5.512, + "ks_W3_allsky": -0.04499999999999993, + "W3_pred_200": 1.570319817192429, + "W3_pred_300": 2.2954796908315047, + "W3_pred_600": 1.1878444968731983, + "W4": 5.493, + "W4_err": 0.036, + "ks_W4": -0.02600000000000069, + "W4_allsky": 5.502, + "ks_W4_allsky": -0.03500000000000014, + "W4_pred_200": 3.9651257541792937, + "W4_pred_300": 2.5063324076213505, + "W4_pred_600": 0.6182171266883032, + "W3_excess_mag": -0.009000000000000341, + "W3_excess_sig": -0.19705404644300487, + "W3_excess_err": 0.04567274898667694, + "W3_excess_mag_allsky": -0.017999999999999794, + "W4_excess_mag": -0.0600000000000005, + "W4_excess_sig": -1.0678591159617559, + "W4_excess_err": 0.05618718715152059, + "W4_excess_mag_allsky": -0.05600000000000005, + "W3_excess_jy": 0.026708457195548, + "W3_frac_200": 0.017008291497779087, + "W3_frac_300": 0.011635240033804544, + "W3_frac_600": 0.02248480947283381, + "W4_excess_jy": 0.008919586116541183, + "W4_frac_200": 0.0022495090116977563, + "W4_frac_300": 0.003558820086840105, + "W4_frac_600": 0.014427918172248113 + }, + { + "hip": "23662", + "name": "HD 32662", + "gaia": "3240019600349499264", + "sptype": "G0", + "d_pc": 44.80688233712698, + "m1": 1.16, + "m2": 0.34976182975839326, + "snr": 6.75, + "ruwe": 14.048, + "dms": "0", + "ks": 6.322, + "e_ks": 0.017, + "g_ks": 1.2530999999999999, + "L2": 0.020530729650235884, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.342, + "W3_err": 0.015, + "ks_W3": -0.019999999999999574, + "W3_allsky": 6.339, + "ks_W3_allsky": -0.017000000000000348, + "W3_pred_200": 0.6636047169144905, + "W3_pred_300": 0.9700515358334402, + "W3_pred_600": 0.501973675970861, + "W4": 6.262, + "W4_err": 0.058, + "ks_W4": 0.0600000000000005, + "W4_allsky": 6.295, + "ks_W4_allsky": 0.027000000000000135, + "W4_pred_200": 1.6756307376525106, + "W4_pred_300": 1.0591562238747239, + "W4_pred_600": 0.2612536611052704, + "W3_excess_mag": 0.002000000000000668, + "W3_excess_sig": 0.046030995624428514, + "W3_excess_err": 0.04344898416534084, + "W3_excess_mag_allsky": 0.0030000000000001137, + "W4_excess_mag": 0.019000000000001016, + "W4_excess_sig": 0.2794612272789906, + "W4_excess_err": 0.06798796450225639, + "W4_excess_mag_allsky": -0.009000000000000341, + "W3_excess_jy": 0.011738420003324434, + "W3_frac_200": 0.01768887366850498, + "W3_frac_300": 0.012100821007658242, + "W3_frac_600": 0.023384533024807135, + "W4_excess_jy": 0.005405330640557509, + "W4_frac_200": 0.0032258483442062858, + "W4_frac_300": 0.00510343093749015, + "W4_frac_600": 0.02068997087998498 + }, + { + "hip": "23824", + "name": "HD 35877", + "gaia": "4614931093854496640", + "sptype": "F8V", + "d_pc": 47.2411186696901, + "m1": 1.33, + "m2": 0.5612990062716573, + "snr": 12.72, + "ruwe": 13.779, + "dms": "1", + "ks": 5.401, + "e_ks": 0.021, + "g_ks": 1.282, + "L2": 0.09926064509884393, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.423, + "W3_err": 0.015, + "ks_W3": -0.02200000000000024, + "W3_allsky": 5.421, + "ks_W3_allsky": -0.020000000000000462, + "W3_pred_200": 2.8862322872714765, + "W3_pred_300": 4.219068960295725, + "W3_pred_600": 2.1832464327316368, + "W4": 5.38, + "W4_err": 0.031, + "ks_W4": 0.020999999999999908, + "W4_allsky": 5.38, + "ks_W4_allsky": 0.020999999999999908, + "W4_pred_200": 7.2878619052678895, + "W4_pred_300": 4.6066141675808385, + "W4_pred_600": 1.1362769622191733, + "W3_excess_mag": -0.004000000000000448, + "W3_excess_sig": -0.10107973914386509, + "W3_excess_err": 0.03957271787481876, + "W3_excess_mag_allsky": -0.007000000000000561, + "W4_excess_mag": -0.02799999999999958, + "W4_excess_sig": -0.5835866811556201, + "W4_excess_err": 0.04797916214358062, + "W4_excess_mag_allsky": -0.015000000000000568, + "W3_excess_jy": 0.024788810418409357, + "W3_frac_200": 0.008588640120107472, + "W3_frac_300": 0.005875421959605004, + "W3_frac_600": 0.01135410554061644, + "W4_excess_jy": 0.008354436741364582, + "W4_frac_200": 0.0011463494849327125, + "W4_frac_300": 0.001813574229888654, + "W4_frac_600": 0.007352465128790597 + }, + { + "hip": "24493", + "name": "HD 34180", + "gaia": "3215139851235339904", + "sptype": "F2/3V", + "d_pc": 44.148161229084806, + "m1": 1.49, + "m2": 1.0957453917160667, + "snr": 46.95, + "ruwe": 13.463, + "dms": "0", + "ks": 5.009, + "e_ks": 0.026, + "g_ks": 1.0543999999999993, + "L2": 1.4415795452367153, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.033, + "W3_err": 0.014, + "ks_W3": -0.02400000000000002, + "W3_allsky": 5.053, + "ks_W3_allsky": -0.043999999999999595, + "W3_pred_200": 47.99631613233189, + "W3_pred_300": 70.16059258137442, + "W3_pred_600": 36.306081961003734, + "W4": 4.984, + "W4_err": 0.031, + "ks_W4": 0.025000000000000355, + "W4_allsky": 5.001, + "ks_W4_allsky": 0.008000000000000007, + "W4_pred_200": 121.1927832269847, + "W4_pred_300": 76.6052375139591, + "W4_pred_600": 18.895606058136885, + "W3_excess_mag": -0.019000000000000128, + "W3_excess_sig": -0.4212046188380658, + "W3_excess_err": 0.045108717118092126, + "W3_excess_mag_allsky": -0.040000000000000036, + "W4_excess_mag": -0.01499999999999968, + "W4_excess_sig": -0.26354685407451844, + "W4_excess_err": 0.05691587574693036, + "W4_excess_mag_allsky": -0.03399999999999981, + "W3_excess_jy": 0.04078557923882264, + "W3_frac_200": 0.0008497647845799593, + "W3_frac_300": 0.0005813174851896849, + "W3_frac_600": 0.0011233814566559486, + "W4_excess_jy": 0.014454045894455987, + "W4_frac_200": 0.00011926490595883649, + "W4_frac_300": 0.00018868221499635914, + "W4_frac_600": 0.0007649421696231723 + }, + { + "hip": "26412", + "name": "nu01 Col", + "gaia": "2907602738096182784", + "sptype": "F0IV", + "d_pc": 43.29941545789132, + "m1": 1.5, + "m2": 0.6289889935756083, + "snr": 10.53, + "ruwe": 9.207, + "dms": "0", + "ks": 5.234, + "e_ks": 0.02, + "g_ks": 0.8479000000000001, + "L2": 0.1565208450132017, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.197, + "W3_err": 0.015, + "ks_W3": 0.03699999999999992, + "W3_allsky": 5.195, + "ks_W3_allsky": 0.0389999999999997, + "W3_pred_200": 5.417546537541205, + "W3_pred_300": 7.919321857183483, + "W3_pred_600": 4.098020524684107, + "W4": 5.119, + "W4_err": 0.031, + "ks_W4": 0.11500000000000021, + "W4_allsky": 5.125, + "ks_W4_allsky": 0.10899999999999999, + "W4_pred_200": 13.679540349223748, + "W4_pred_300": 8.646756099093714, + "W4_pred_600": 2.1328267130494165, + "W3_excess_mag": 0.04099999999999948, + "W3_excess_sig": 0.8243634582948973, + "W3_excess_err": 0.04973534378246623, + "W3_excess_mag_allsky": 0.03599999999999959, + "W4_excess_mag": 0.05400000000000027, + "W4_excess_sig": 0.7731690233167198, + "W4_excess_err": 0.06984242561652627, + "W4_excess_mag_allsky": 0.04099999999999948, + "W3_excess_jy": 0.03891776263799052, + "W3_frac_200": 0.007183650822066338, + "W3_frac_300": 0.004914279699680204, + "W3_frac_600": 0.009496722235423765, + "W4_excess_jy": 0.015953556234254658, + "W4_frac_200": 0.0011662348168854921, + "W4_frac_300": 0.0018450336810039993, + "W4_frac_600": 0.007480005823560323 + }, + { + "hip": "27165", + "name": "HD 38007", + "gaia": "215521394490842624", + "sptype": "G0", + "d_pc": 46.71150971599402, + "m1": 1.3, + "m2": 0.40694177954695154, + "snr": 16.26, + "ruwe": 8.373, + "dms": "0", + "ks": 5.26, + "e_ks": 0.018, + "g_ks": 1.4472000000000005, + "L2": 0.029083862302968173, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.287, + "W3_err": 0.015, + "ks_W3": -0.027000000000000135, + "W3_allsky": 5.281, + "ks_W3_allsky": -0.020999999999999908, + "W3_pred_200": 0.8649655399742261, + "W3_pred_300": 1.2643990151189914, + "W3_pred_600": 0.6542900021985995, + "W4": 5.226, + "W4_err": 0.039, + "ks_W4": 0.03399999999999981, + "W4_allsky": 5.203, + "ks_W4_allsky": 0.056999999999999496, + "W4_pred_200": 2.1840755631304143, + "W4_pred_300": 1.380541174210659, + "W4_pred_600": 0.340527136544272, + "W3_excess_mag": -0.030999999999999694, + "W3_excess_sig": -0.8143807531137293, + "W3_excess_err": 0.03806573262134856, + "W3_excess_mag_allsky": -0.02200000000000024, + "W4_excess_mag": -0.017999999999999794, + "W4_excess_sig": -0.2911077339128854, + "W4_excess_err": 0.06183277839463493, + "W4_excess_mag_allsky": 0.005999999999999339, + "W3_excess_jy": 0.02696954674824823, + "W3_frac_200": 0.03117990891180689, + "W3_frac_300": 0.021329933372108922, + "W3_frac_600": 0.041219561138979545, + "W4_excess_jy": 0.012653350523604452, + "W4_frac_200": 0.005793458219672825, + "W4_frac_300": 0.009165500283495099, + "W4_frac_600": 0.03715812681483429 + }, + { + "hip": "27246", + "name": "HD 37393", + "gaia": "499849844393678336", + "sptype": "G0", + "d_pc": 37.429352097915185, + "m1": 1.09, + "m2": 0.6757257271590443, + "snr": 19.87, + "ruwe": 25.908, + "dms": "0", + "ks": 5.629, + "e_ks": 0.018, + "g_ks": 1.5499, + "L2": 0.20848836194795647, + "qph": "BAAA", + "ccf": "hh00", + "W3": 5.62, + "W3_err": 0.01, + "ks_W3": 0.008999999999999453, + "W3_allsky": 5.538, + "ks_W3_allsky": 0.0909999999999993, + "W3_pred_200": 9.657211252087587, + "W3_pred_300": 14.116826430217587, + "W3_pred_600": 7.305050293158505, + "W4": 5.583, + "W4_err": 0.039, + "ks_W4": 0.045999999999999375, + "W4_allsky": 5.526, + "ks_W4_allsky": 0.10299999999999976, + "W4_pred_200": 24.38487792739241, + "W4_pred_300": 15.413536314931862, + "W4_pred_600": 3.8019346929988678, + "W3_excess_mag": -0.015000000000000568, + "W3_excess_sig": -0.41223728244700014, + "W3_excess_err": 0.03638681079732051, + "W3_excess_mag_allsky": 0.06599999999999984, + "W4_excess_mag": -0.05000000000000071, + "W4_excess_sig": -0.8227062822846768, + "W4_excess_err": 0.06077503123125474, + "W4_excess_mag_allsky": 0.02800000000000047, + "W3_excess_jy": 0.018925999667091086, + "W3_frac_200": 0.0019597789851599112, + "W3_frac_300": 0.0013406695733383309, + "W3_frac_600": 0.0025908103171878366, + "W4_excess_jy": 0.008938392295350152, + "W4_frac_200": 0.0003665547279738208, + "W4_frac_300": 0.000579905358038511, + "W4_frac_600": 0.002351011528896037 + }, + { + "hip": "27371", + "name": "HD 39012", + "gaia": "4805123721874344576", + "sptype": "G7V", + "d_pc": 46.83402023229674, + "m1": 0.98, + "m2": 0.7307005737086782, + "snr": 25.84, + "ruwe": 33.331, + "dms": "0", + "ks": 6.955, + "e_ks": 0.024, + "g_ks": 1.6654999999999998, + "L2": 0.28507412062916, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.874, + "W3_err": 0.017, + "ks_W3": 0.0810000000000004, + "W3_allsky": 6.878, + "ks_W3_allsky": 0.07699999999999996, + "W3_pred_200": 8.433919442920251, + "W3_pred_300": 12.328629227863845, + "W3_pred_600": 6.379709844874896, + "W4": 6.913, + "W4_err": 0.07, + "ks_W4": 0.041999999999999815, + "W4_allsky": 6.945, + "ks_W4_allsky": 0.009999999999999787, + "W4_pred_200": 21.296012968610835, + "W4_pred_300": 13.461083144739124, + "W4_pred_600": 3.3203385626533435, + "W3_excess_mag": 0.05400000000000027, + "W3_excess_sig": 1.1697447715513105, + "W3_excess_err": 0.046163916534019384, + "W3_excess_mag_allsky": 0.04800000000000004, + "W4_excess_mag": -0.03399999999999981, + "W4_excess_sig": -0.42579912323777824, + "W4_excess_err": 0.07984985911070852, + "W4_excess_mag_allsky": -0.0649999999999995, + "W3_excess_jy": 0.007669997592260122, + "W3_frac_200": 0.0009094226763926001, + "W3_frac_300": 0.0006221289853477965, + "W3_frac_600": 0.001202248656876107, + "W4_excess_jy": 0.0035450602537624894, + "W4_frac_200": 0.00016646591354859314, + "W4_frac_300": 0.00026335624077531783, + "W4_frac_600": 0.0010676803545387754 + }, + { + "hip": "27890", + "name": "36 Dor", + "gaia": "4756622820871136640", + "sptype": "K2III-IV", + "d_pc": 27.3224043715847, + "m1": 1.77, + "m2": 0.30578386169897953, + "snr": 47.04, + "ruwe": 2.207, + "dms": "0", + "ks": 2.304, + "e_ks": 0.254, + "g_ks": 2.0192, + "L2": 0.015072362349957997, + "qph": "UUAA", + "ccf": "hh00", + "W3": 2.29, + "W3_err": 0.009, + "ks_W3": 0.01399999999999979, + "W3_allsky": 2.232, + "ks_W3_allsky": 0.07199999999999962, + "W3_pred_200": 1.3102013142328957, + "W3_pred_300": 1.915240752103309, + "W3_pred_600": 0.9910818190463325, + "W4": 2.192, + "W4_err": 0.016, + "ks_W4": 0.11199999999999966, + "W4_allsky": 2.18, + "ks_W4_allsky": 0.12399999999999967, + "W4_pred_200": 3.3083152344805415, + "W4_pred_300": 2.0911663843363377, + "W4_pred_600": 0.515811418158421, + "W3_excess_mag": -0.04400000000000093, + "W3_excess_sig": -0.1648434283300085, + "W3_excess_err": 0.2669199521373401, + "W3_excess_mag_allsky": 0.012999999999999456, + "W4_excess_mag": -0.01600000000000046, + "W4_excess_sig": -0.05934676870290758, + "W4_excess_err": 0.26960187302019983, + "W4_excess_mag_allsky": 0.022999999999999687, + "W3_excess_jy": 4.192100207295759, + "W3_frac_200": 3.199584797966849, + "W3_frac_300": 2.188811094736791, + "W3_frac_600": 4.229822530020381, + "W4_excess_jy": 1.2286801861027954, + "W4_frac_200": 0.3713915086739665, + "W4_frac_300": 0.587557353305837, + "W4_frac_600": 2.3820337100902083 + }, + { + "hip": "28902", + "name": "HD 40647", + "gaia": "1107146846976017152", + "sptype": "G5V", + "d_pc": 32.29661208539224, + "m1": 0.9, + "m2": 0.5095506744179387, + "snr": 25.81, + "ruwe": 13.24, + "dms": "0", + "ks": 6.328, + "e_ks": 0.02, + "g_ks": 1.7628999999999992, + "L2": 0.06741391093879909, + "qph": "BAAA", + "ccf": "0000", + "W3": 6.262, + "W3_err": 0.014, + "ks_W3": 0.06600000000000072, + "W3_allsky": 6.269, + "ks_W3_allsky": 0.05900000000000016, + "W3_pred_200": 4.194016378292201, + "W3_pred_300": 6.130776236777701, + "W3_pred_600": 3.1724997801132444, + "W4": 6.364, + "W4_err": 0.062, + "ks_W4": -0.03599999999999959, + "W4_allsky": 6.38, + "ks_W4_allsky": -0.0519999999999996, + "W4_pred_200": 10.590073546131867, + "W4_pred_300": 6.693922506691745, + "W4_pred_600": 1.6511367469762757, + "W3_excess_mag": 0.028999999999999915, + "W3_excess_sig": 0.7497771504927755, + "W3_excess_err": 0.038678159211627434, + "W3_excess_mag_allsky": 0.022999999999999687, + "W4_excess_mag": -0.12099999999999955, + "W4_excess_sig": -1.3426675579994685, + "W4_excess_err": 0.09011910601331997, + "W4_excess_mag_allsky": -0.1509999999999998, + "W3_excess_jy": 0.011173241860792478, + "W3_frac_200": 0.002664091136749974, + "W3_frac_300": 0.0018224840426838132, + "W3_frac_600": 0.0035219046919504095, + "W4_excess_jy": 0.006732382943456874, + "W4_frac_200": 0.000635725796816203, + "W4_frac_300": 0.0010057455754420043, + "W4_frac_600": 0.0040774229970872355 + }, + { + "hip": "30480", + "name": "HD 45701", + "gaia": "5477304657957793280", + "sptype": "G1V", + "d_pc": 32.032801588826956, + "m1": 1.22, + "m2": 0.44207069694626616, + "snr": 48.61, + "ruwe": 2.775, + "dms": "0", + "ks": 4.933, + "e_ks": 0.024, + "g_ks": 1.3837000000000002, + "L2": 0.03819151733162449, + "qph": "BAAA", + "ccf": "00p0", + "W3": 4.971, + "W3_err": 0.015, + "ks_W3": -0.038000000000000256, + "W3_allsky": 4.97, + "ks_W3_allsky": -0.03699999999999992, + "W3_pred_200": 2.415302880054786, + "W3_pred_300": 3.530668496743043, + "W3_pred_600": 1.827019058757438, + "W4": 4.929, + "W4_err": 0.026, + "ks_W4": 0.0039999999999995595, + "W4_allsky": 4.934, + "ks_W4_allsky": -0.001000000000000334, + "W4_pred_200": 6.098744694549746, + "W4_pred_300": 3.854980250663604, + "W4_pred_600": 0.9508773883138714, + "W3_excess_mag": -0.04100000000000037, + "W3_excess_sig": -0.9941037221861965, + "W3_excess_err": 0.04124318125460256, + "W3_excess_mag_allsky": -0.04999999999999982, + "W4_excess_mag": -0.054999999999999716, + "W4_excess_sig": -1.142890178648414, + "W4_excess_err": 0.04812360892368759, + "W4_excess_mag_allsky": -0.055000000000000604, + "W3_excess_jy": 0.039267467150570994, + "W3_frac_200": 0.016257781777530234, + "W3_frac_300": 0.011121822166763684, + "W3_frac_600": 0.021492642324857265, + "W4_excess_jy": 0.012697297329804097, + "W4_frac_200": 0.0020819525928264006, + "W4_frac_300": 0.003293738619703268, + "W4_frac_600": 0.01335324352629668 + }, + { + "hip": "33478", + "name": "HD 51733", + "gaia": "2921519634732224000", + "sptype": "F3V", + "d_pc": 40.43344654698367, + "m1": 1.65, + "m2": 0.3130482927155226, + "snr": 61.98, + "ruwe": 10.199, + "dms": "1", + "ks": 4.486, + "e_ks": 0.023, + "g_ks": 0.8287000000000004, + "L2": 0.015908671608377632, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.485, + "W3_err": 0.015, + "ks_W3": 0.0009999999999994458, + "W3_allsky": 4.473, + "ks_W3_allsky": 0.0129999999999999, + "W3_pred_200": 0.631461571921925, + "W3_pred_300": 0.9230649693250936, + "W3_pred_600": 0.4776594837447958, + "W4": 4.446, + "W4_err": 0.027, + "ks_W4": 0.040000000000000036, + "W4_allsky": 4.451, + "ks_W4_allsky": 0.03500000000000014, + "W4_pred_200": 1.5944679002260487, + "W4_pred_300": 1.0078536770331672, + "W4_pred_600": 0.24859926897287185, + "W3_excess_mag": 0.004999999999999005, + "W3_excess_sig": 0.07496150154786563, + "W3_excess_err": 0.06670090508801141, + "W3_excess_mag_allsky": 0.009999999999999787, + "W4_excess_mag": -0.04900000000000038, + "W4_excess_sig": -0.6716557405951502, + "W4_excess_err": 0.07295404034897664, + "W4_excess_mag_allsky": -0.05600000000000005, + "W3_excess_jy": 0.10300696632805313, + "W3_frac_200": 0.16312467917016665, + "W3_frac_300": 0.1115923252979338, + "W3_frac_600": 0.21564936912900856, + "W4_excess_jy": 0.031111135171305634, + "W4_frac_200": 0.01951192317317582, + "W4_frac_300": 0.03086870235259538, + "W4_frac_600": 0.12514572267185792 + }, + { + "hip": "35642", + "name": "HD 57517", + "gaia": "3048519339470667520", + "sptype": "G1V", + "d_pc": 33.03600925008259, + "m1": 1.27, + "m2": 0.32260374008419485, + "snr": 7.47, + "ruwe": 13.513, + "dms": "0", + "ks": 5.173, + "e_ks": 0.021, + "g_ks": 1.2614, + "L2": 0.01704776505636867, + "qph": "BAAA", + "ccf": "0h00", + "W3": 5.191, + "W3_err": 0.016, + "ks_W3": -0.017999999999999794, + "W3_allsky": 5.186, + "ks_W3_allsky": -0.0129999999999999, + "W3_pred_200": 1.0136472046638894, + "W3_pred_300": 1.4817405642464445, + "W3_pred_600": 0.7667579818126659, + "W4": 5.149, + "W4_err": 0.034, + "ks_W4": 0.02400000000000002, + "W4_allsky": 5.156, + "ks_W4_allsky": 0.017000000000000348, + "W4_pred_200": 2.559503225305164, + "W4_pred_300": 1.617846766709037, + "W4_pred_600": 0.3990614239737057, + "W3_excess_mag": 0.0019999999999997797, + "W3_excess_sig": 0.047661192155687614, + "W3_excess_err": 0.04196286138766068, + "W3_excess_mag_allsky": 0.004000000000000448, + "W4_excess_mag": -0.024999999999999467, + "W4_excess_sig": -0.5003002702702731, + "W4_excess_err": 0.049969990994595946, + "W4_excess_mag_allsky": -0.019000000000000128, + "W3_excess_jy": 0.03265772336863278, + "W3_frac_200": 0.032218037220811555, + "W3_frac_300": 0.022040108880491655, + "W3_frac_600": 0.04259195749280339, + "W4_excess_jy": 0.010794318189054427, + "W4_frac_200": 0.004217348930188374, + "W4_frac_300": 0.006672027543752999, + "W4_frac_600": 0.027049264951667363 + }, + { + "hip": "36165", + "name": "HD 59099", + "gaia": "5591534810757825280", + "sptype": "F6V", + "d_pc": 49.18839153959666, + "m1": 1.37, + "m2": 0.4513684049753238, + "snr": 5.67, + "ruwe": 11.868, + "dms": "1", + "ks": 5.798, + "e_ks": 0.024, + "g_ks": 1.1346999999999996, + "L2": 0.04150731335589457, + "qph": "BAAA", + "ccf": "hh00", + "W3": 5.68, + "W3_err": 0.018, + "ks_W3": 0.11800000000000033, + "W3_allsky": 5.792, + "ks_W3_allsky": 0.006000000000000227, + "W3_pred_200": 1.1132531037259688, + "W3_pred_300": 1.627343591018919, + "W3_pred_600": 0.8421033463439087, + "W4": 5.685, + "W4_err": 0.036, + "ks_W4": 0.11300000000000043, + "W4_allsky": 5.756, + "ks_W4_allsky": 0.041999999999999815, + "W4_pred_200": 2.8110124473853917, + "W4_pred_300": 1.7768242501976497, + "W4_pred_600": 0.4382751383044967, + "W3_excess_mag": 0.13999999999999968, + "W3_excess_sig": 3.299831645537214, + "W3_excess_err": 0.042426406871192854, + "W3_excess_mag_allsky": 0.021000000000000796, + "W4_excess_mag": 0.0730000000000004, + "W4_excess_sig": 1.3865203469256024, + "W4_excess_err": 0.052649786324352736, + "W4_excess_mag_allsky": 0.0, + "W3_excess_jy": 0.02048365523578094, + "W3_frac_200": 0.018399818664078988, + "W3_frac_300": 0.012587172954026034, + "W3_frac_600": 0.02432439596008394, + "W4_excess_jy": 0.006968325271664576, + "W4_frac_200": 0.0024789378923405435, + "W4_frac_300": 0.003921786451805482, + "W4_frac_600": 0.015899430888601424, + "reading": "release-dependent photometry: AllWISE W3 5.680 against All-Sky 5.792, where the All-Sky excess is +0.021 mag" + }, + { + "hip": "36366", + "name": "rho Gem", + "gaia": "892160231749198848", + "sptype": "F1V", + "d_pc": 17.811342262752923, + "m1": 1.5, + "m2": 0.6971371841499852, + "snr": 16.91, + "ruwe": 3.836, + "dms": "0", + "ks": 2.978, + "e_ks": 0.316, + "g_ks": 1.0514999999999994, + "L2": 0.2361962464259466, + "qph": "CBAA", + "ccf": "0000", + "W3": 3.322, + "W3_err": 0.009, + "ks_W3": -0.34399999999999986, + "W3_allsky": 3.283, + "ks_W3_allsky": -0.3049999999999997, + "W3_pred_200": 48.31413705966484, + "W3_pred_300": 70.62518041630243, + "W3_pred_600": 36.546492758466975, + "W4": 3.233, + "W4_err": 0.02, + "ks_W4": -0.2549999999999999, + "W4_allsky": 3.227, + "ks_W4_allsky": -0.24899999999999967, + "W4_pred_200": 121.99529487485916, + "W4_pred_300": 77.11250035384288, + "W4_pred_600": 19.020728557608663, + "W3_excess_mag": -0.33899999999999997, + "W3_excess_sig": -1.0675537242284647, + "W3_excess_err": 0.31754842150450063, + "W3_excess_mag_allsky": -0.29799999999999915, + "W4_excess_mag": -0.2940000000000005, + "W4_excess_sig": -0.9231836501486776, + "W4_excess_err": 0.3184631789705679, + "W4_excess_mag_allsky": -0.2869999999999999, + "W3_excess_jy": 2.0868042168249, + "W3_frac_200": 0.04319241414263142, + "W3_frac_300": 0.02954759484541016, + "W3_frac_600": 0.05709998578020694, + "W4_excess_jy": 0.6006457033611577, + "W4_frac_200": 0.004923515320630116, + "W4_frac_300": 0.007789213170432812, + "W4_frac_600": 0.03157848036903338 + }, + { + "hip": "36546", + "name": "L 456-55", + "gaia": "5586383388320768256", + "sptype": "M1", + "d_pc": 30.970299482795998, + "m1": 0.63, + "m2": 0.5886957434825358, + "snr": 8.53, + "ruwe": 3.693, + "dms": "1", + "ks": 7.44, + "e_ks": 0.02, + "g_ks": 3.9171000000000005, + "L2": 0.1201056900559389, + "qph": "AAAA", + "ccf": "ddd0", + "W3": 7.092, + "W3_err": 0.016, + "ks_W3": 0.34800000000000075, + "W3_allsky": 7.069, + "ks_W3_allsky": 0.37100000000000044, + "W3_pred_200": 8.125822032130255, + "W3_pred_300": 11.878255143856762, + "W3_pred_600": 6.146654253331705, + "W4": 7.075, + "W4_err": 0.091, + "ks_W4": 0.3650000000000002, + "W4_allsky": 7.082, + "ks_W4_allsky": 0.35800000000000054, + "W4_pred_200": 20.51805362240355, + "W4_pred_300": 12.969339668720462, + "W4_pred_600": 3.199044101516605, + "W3_excess_mag": 0.2580000000000009, + "W3_excess_sig": 5.574659423274835, + "W3_excess_err": 0.04628085420300685, + "W3_excess_mag_allsky": 0.27200000000000024, + "W4_excess_mag": 0.19399999999999995, + "W4_excess_sig": 1.4131990800571257, + "W4_excess_err": 0.13727719097592245, + "W4_excess_mag_allsky": 0.22300000000000075, + "W3_excess_jy": 0.009754827931872725, + "W3_frac_200": 0.0012004727513476457, + "W3_frac_300": 0.0008212340797307896, + "W3_frac_600": 0.0015870142568349705, + "W4_excess_jy": 0.00570589994990783, + "W4_frac_200": 0.0002780916774521726, + "W4_frac_300": 0.0004399530042126475, + "W4_frac_600": 0.0017836265361902241, + "reading": "W3 flagged as a diffraction spike (ccf ddd0)" + }, + { + "hip": "36836", + "name": "HD 60552", + "gaia": "3030303665919123328", + "sptype": "F7II/III", + "d_pc": 46.138230137491924, + "m1": 1.4, + "m2": 0.5934782401176055, + "snr": 27.81, + "ruwe": 6.318, + "dms": "0", + "ks": 5.505, + "e_ks": 0.018, + "g_ks": 1.104, + "L2": 0.1240564075693982, + "qph": "BAAA", + "ccf": "00p0", + "W3": 5.533, + "W3_err": 0.015, + "ks_W3": -0.02800000000000047, + "W3_allsky": 5.539, + "ks_W3_allsky": -0.03399999999999981, + "W3_pred_200": 3.7817417869249748, + "W3_pred_300": 5.528116866904031, + "W3_pred_600": 2.860640947794761, + "W4": 5.406, + "W4_err": 0.038, + "ks_W4": 0.0990000000000002, + "W4_allsky": 5.463, + "ks_W4_allsky": 0.041999999999999815, + "W4_pred_200": 9.549062293438995, + "W4_pred_300": 6.03590548501908, + "W4_pred_600": 1.4888289097502694, + "W3_excess_mag": -0.016000000000000014, + "W3_excess_sig": -0.42032554999418736, + "W3_excess_err": 0.03806573262134856, + "W3_excess_mag_allsky": -0.03000000000000025, + "W4_excess_mag": 0.05900000000000016, + "W4_excess_sig": 1.1087010411922789, + "W4_excess_err": 0.05321542761117328, + "W4_excess_mag_allsky": 0.0, + "W3_excess_jy": 0.021501742064023183, + "W3_frac_200": 0.005685671649598998, + "W3_frac_300": 0.0038895237893306384, + "W3_frac_600": 0.007516407146656646, + "W4_excess_jy": 0.009114167647741634, + "W4_frac_200": 0.0009544568217974481, + "W4_frac_300": 0.0015099917767703124, + "W4_frac_600": 0.006121702492511655 + }, + { + "hip": "37635", + "name": "HD 62848", + "gaia": "5492744309474814080", + "sptype": "F9V", + "d_pc": 29.699147634462893, + "m1": 1.16, + "m2": 0.36776539992554197, + "snr": 17.3, + "ruwe": 17.535, + "dms": "0", + "ks": 5.321, + "e_ks": 0.018, + "g_ks": 1.2431999999999999, + "L2": 0.023043096120309605, + "qph": "BAAA", + "ccf": "0o00", + "W3": 5.354, + "W3_err": 0.014, + "ks_W3": -0.03300000000000036, + "W3_allsky": 5.353, + "ks_W3_allsky": -0.03200000000000003, + "W3_pred_200": 1.6953032498771603, + "W3_pred_300": 2.478179372945399, + "W3_pred_600": 1.2823863100054507, + "W4": 5.28, + "W4_err": 0.032, + "ks_W4": 0.04099999999999948, + "W4_allsky": 5.3, + "ks_W4_allsky": 0.020999999999999908, + "W4_pred_200": 4.28071435107416, + "W4_pred_300": 2.7058140828342134, + "W4_pred_600": 0.6674216885820328, + "W3_excess_mag": -0.014000000000000234, + "W3_excess_sig": -0.3627669462559982, + "W3_excess_err": 0.03859227017370177, + "W3_excess_mag_allsky": -0.01499999999999968, + "W4_excess_mag": 0.008999999999999453, + "W4_excess_sig": 0.1560494679212362, + "W4_excess_err": 0.05767401914207152, + "W4_excess_mag_allsky": -0.006000000000000227, + "W3_excess_jy": 0.02572534924383527, + "W3_frac_200": 0.015174482350399138, + "W3_frac_300": 0.010380745447517721, + "W3_frac_600": 0.020060530156256834, + "W4_excess_jy": 0.011163570190542146, + "W4_frac_200": 0.0026078755261352282, + "W4_frac_300": 0.0041257713386016635, + "W4_frac_600": 0.016726412074290917 + }, + { + "hip": "38134", + "name": "HD 63598", + "gaia": "5614460246679693184", + "sptype": "G2V", + "d_pc": 49.31452805996647, + "m1": 1.16, + "m2": 0.41785274492396696, + "snr": 15.15, + "ruwe": 5.507, + "dms": "0", + "ks": 6.368, + "e_ks": 0.024, + "g_ks": 1.4310999999999998, + "L2": 0.03090874223495234, + "qph": "AAAA", + "ccf": "hh00", + "W3": 6.395, + "W3_err": 0.016, + "ks_W3": -0.026999999999999247, + "W3_allsky": 6.389, + "ks_W3_allsky": -0.020999999999999908, + "W3_pred_200": 0.8247571776789738, + "W3_pred_300": 1.205622784927001, + "W3_pred_600": 0.6238749992432833, + "W4": 6.333, + "W4_err": 0.051, + "ks_W4": 0.03500000000000014, + "W4_allsky": 6.347, + "ks_W4_allsky": 0.020999999999999908, + "W4_pred_200": 2.0825477016561043, + "W4_pred_300": 1.3163660167843536, + "W4_pred_600": 0.32469755970593356, + "W3_excess_mag": -0.0259999999999998, + "W3_excess_sig": -0.6247401307318717, + "W3_excess_err": 0.041617304093369625, + "W3_excess_mag_allsky": -0.02400000000000002, + "W4_excess_mag": -0.019000000000000128, + "W4_excess_sig": -0.2850428854061594, + "W4_excess_err": 0.06665663650200182, + "W4_excess_mag_allsky": -0.03500000000000014, + "W3_excess_jy": 0.010680299505805043, + "W3_frac_200": 0.01294962904822662, + "W3_frac_300": 0.008858740593934381, + "W3_frac_600": 0.017119293959141652, + "W4_excess_jy": 0.004954616827208854, + "W4_frac_200": 0.0023791132482914048, + "W4_frac_300": 0.0037638595679582304, + "W4_frac_600": 0.015259174820088161 + }, + { + "hip": "38160", + "name": "HD 64185", + "gaia": "5293984115052147968", + "sptype": "F4V", + "d_pc": 33.74502260916515, + "m1": 1.5, + "m2": 0.5770592895940129, + "snr": 48.87, + "ruwe": 1.344, + "dms": "0", + "ks": 4.737, + "e_ks": 0.026, + "g_ks": 0.9520999999999997, + "L2": 0.11088728419533066, + "qph": "BBAA", + "ccf": "hh00", + "W3": 4.725, + "W3_err": 0.015, + "ks_W3": 0.012000000000000455, + "W3_allsky": 4.728, + "ks_W3_allsky": 0.009000000000000341, + "W3_pred_200": 6.319123362211352, + "W3_pred_300": 9.237238926112042, + "W3_pred_600": 4.780004575300983, + "W4": 4.676, + "W4_err": 0.025, + "ks_W4": 0.06099999999999994, + "W4_allsky": 4.689, + "ks_W4_allsky": 0.04800000000000004, + "W4_pred_200": 15.956060996630645, + "W4_pred_300": 10.08573126128148, + "W4_pred_600": 2.4877672977214367, + "W3_excess_mag": 0.017000000000000348, + "W3_excess_sig": 0.36518146360047093, + "W3_excess_err": 0.046552198549155564, + "W3_excess_mag_allsky": 0.006000000000000227, + "W4_excess_mag": 0.008000000000000007, + "W4_excess_sig": 0.17052182252779516, + "W4_excess_err": 0.0469148164229596, + "W4_excess_mag_allsky": -0.006999999999999673, + "W3_excess_jy": 0.05601066363848203, + "W3_frac_200": 0.008863676245573614, + "W3_frac_300": 0.0060635720355949425, + "W3_frac_600": 0.011717700842358547, + "W4_excess_jy": 0.015599905929444323, + "W4_frac_200": 0.0009776790106742804, + "W4_frac_300": 0.0015467302791748409, + "W4_frac_600": 0.006270645145843176 + }, + { + "hip": "40001", + "name": "HD 67587", + "gaia": "905909246695984256", + "sptype": "F8", + "d_pc": 47.69854519437157, + "m1": 1.36, + "m2": 0.427770936548393, + "snr": 20.36, + "ruwe": 13.28, + "dms": "0", + "ks": 5.249, + "e_ks": 0.018, + "g_ks": 1.2802000000000007, + "L2": 0.03262223917687898, + "qph": "BAAA", + "ccf": "0h00", + "W3": 5.298, + "W3_err": 0.015, + "ks_W3": -0.04900000000000038, + "W3_allsky": 5.286, + "ks_W3_allsky": -0.03699999999999992, + "W3_pred_200": 0.9304607002731263, + "W3_pred_300": 1.3601392641229662, + "W3_pred_600": 0.703832818178577, + "W4": 5.2, + "W4_err": 0.035, + "ks_W4": 0.04899999999999949, + "W4_allsky": 5.211, + "ks_W4_allsky": 0.03799999999999937, + "W4_pred_200": 2.34945368803976, + "W4_pred_300": 1.4850757034207516, + "W4_pred_600": 0.36631183936001327, + "W3_excess_mag": -0.031000000000000583, + "W3_excess_sig": -0.8143807531137527, + "W3_excess_err": 0.03806573262134856, + "W3_excess_mag_allsky": -0.02400000000000002, + "W4_excess_mag": 0.004999999999999893, + "W4_excess_sig": 0.10103587612624221, + "W4_excess_err": 0.04948737212663449, + "W4_excess_mag_allsky": 0.005999999999999339, + "W3_excess_jy": 0.02669768765105119, + "W3_frac_200": 0.028692977192066663, + "W3_frac_300": 0.01962864270980823, + "W3_frac_600": 0.03793185961424923, + "W4_excess_jy": 0.010192580180083703, + "W4_frac_200": 0.004338276694693125, + "W4_frac_300": 0.006863340472546902, + "W4_frac_600": 0.027824872376200703 + }, + { + "hip": "40359", + "name": "CD-53 2191", + "gaia": "5320512749357084544", + "sptype": "K6+Vk:", + "d_pc": 39.8120869495979, + "m1": 0.7, + "m2": 0.9476598222553148, + "snr": 18.68, + "ruwe": 2.741, + "dms": "1", + "ks": 7.047, + "e_ks": 0.017, + "g_ks": 3.0942, + "L2": 0.8065102166330745, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.949, + "W3_err": 0.016, + "ks_W3": 0.09799999999999986, + "W3_allsky": 6.978, + "ks_W3_allsky": 0.06899999999999995, + "W3_pred_200": 33.01980613412676, + "W3_pred_300": 48.26806205095057, + "W3_pred_600": 24.9773291878644, + "W4": 6.82, + "W4_err": 0.059, + "ks_W4": 0.22699999999999942, + "W4_allsky": 6.967, + "ks_W4_allsky": 0.08000000000000007, + "W4_pred_200": 83.37644489166463, + "W4_pred_300": 52.701754955433266, + "W4_pred_600": 12.999523694823987, + "W3_excess_mag": 0.008000000000000007, + "W3_excess_sig": 0.1679726360721389, + "W3_excess_err": 0.04762680509797002, + "W3_excess_mag_allsky": -0.03000000000000025, + "W4_excess_mag": 0.05799999999999983, + "W4_excess_sig": 0.46132380691424735, + "W4_excess_err": 0.12572513954559708, + "W4_excess_mag_allsky": -0.054999999999999716, + "W3_excess_jy": 0.007400153240408525, + "W3_frac_200": 0.0002241125586973174, + "W3_frac_300": 0.00015331365971555077, + "W3_frac_600": 0.00029627480123070956, + "W4_excess_jy": 0.006498271333124881, + "W4_frac_200": 7.793893517010018e-05, + "W4_frac_300": 0.00012330275032814528, + "W4_frac_600": 0.0004998853408538571 + }, + { + "hip": "40918", + "name": "HD 69433", + "gaia": "1091831474634102016", + "sptype": "G0V", + "d_pc": 36.7403923873907, + "m1": 1.04, + "m2": 0.4575827868304744, + "snr": 19.33, + "ruwe": 12.735, + "dms": "0", + "ks": 6.154, + "e_ks": 0.023, + "g_ks": 1.6738, + "L2": 0.04384082477307907, + "qph": "AAAA", + "ccf": "0h00", + "W3": 6.127, + "W3_err": 0.015, + "ks_W3": 0.027000000000000135, + "W3_allsky": 6.125, + "ks_W3_allsky": 0.028999999999999915, + "W3_pred_200": 2.1075877662781477, + "W3_pred_300": 3.080853251146087, + "W3_pred_600": 1.594252649964484, + "W4": 6.076, + "W4_err": 0.044, + "ks_W4": 0.07800000000000029, + "W4_allsky": 6.1, + "ks_W4_allsky": 0.05400000000000027, + "W4_pred_200": 5.321750664908431, + "W4_pred_300": 3.3638469455053133, + "W4_pred_600": 0.8297334331814209, + "W3_excess_mag": -0.008000000000000007, + "W3_excess_sig": -0.19670809584196153, + "W3_excess_err": 0.04066939881532551, + "W3_excess_mag_allsky": -0.006000000000000227, + "W4_excess_mag": 0.002000000000000668, + "W4_excess_sig": 0.032742446962672575, + "W4_excess_err": 0.06108278963636197, + "W4_excess_mag_allsky": -0.03000000000000025, + "W3_excess_jy": 0.013341286897011856, + "W3_frac_200": 0.006330121625526245, + "W3_frac_300": 0.004330387009523695, + "W3_frac_600": 0.008368364259773423, + "W4_excess_jy": 0.005707460538801035, + "W4_frac_200": 0.0010724780054871738, + "W4_frac_300": 0.0016967063696007925, + "W4_frac_600": 0.006878667666695192 + }, + { + "hip": "41573", + "name": "HD 71640", + "gaia": "3077874483161655552", + "sptype": "F6V", + "d_pc": 45.14061300952467, + "m1": 1.2, + "m2": 0.45265710167339657, + "snr": 14.91, + "ruwe": 6.391, + "dms": "0", + "ks": 6.012, + "e_ks": 0.016, + "g_ks": 1.2723000000000004, + "L2": 0.04198337550715564, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.02, + "W3_err": 0.016, + "ks_W3": -0.008000000000000007, + "W3_allsky": 6.013, + "ks_W3_allsky": -0.001000000000000334, + "W3_pred_200": 1.3370171622650264, + "W3_pred_300": 1.9544399227921403, + "W3_pred_600": 1.0113662586650751, + "W4": 6.039, + "W4_err": 0.06, + "ks_W4": -0.027000000000000135, + "W4_allsky": 6.038, + "ks_W4_allsky": -0.02600000000000069, + "W4_pred_200": 3.3760264156604776, + "W4_pred_300": 2.133966219264832, + "W4_pred_600": 0.5263685138141161, + "W3_excess_mag": 0.009999999999999787, + "W3_excess_sig": 0.26612314770616907, + "W3_excess_err": 0.03757658845611187, + "W3_excess_mag_allsky": 0.011999999999999567, + "W4_excess_mag": -0.07699999999999996, + "W4_excess_sig": -1.1165284718390518, + "W4_excess_err": 0.06896375859826667, + "W4_excess_mag_allsky": -0.06400000000000006, + "W3_excess_jy": 0.013544351190926885, + "W3_frac_200": 0.010130274743804743, + "W3_frac_300": 0.006930042224872911, + "W3_frac_600": 0.013392132746058166, + "W4_excess_jy": 0.006742408736071127, + "W4_frac_200": 0.0019971433590670108, + "W4_frac_300": 0.0031595667612741964, + "W4_frac_600": 0.012809293411596744 + }, + { + "hip": "41598", + "name": "HD 71244", + "gaia": "1029035891669372800", + "sptype": "G0", + "d_pc": 41.82700351346829, + "m1": 1.27, + "m2": 0.31598843036742175, + "snr": 6.8, + "ruwe": 1.267, + "dms": "0", + "ks": 5.793, + "e_ks": 0.018, + "g_ks": 1.2146, + "L2": 0.016254422858032393, + "qph": "BAAA", + "ccf": "hh00", + "W3": 5.806, + "W3_err": 0.015, + "ks_W3": -0.0129999999999999, + "W3_allsky": 5.805, + "ks_W3_allsky": -0.011999999999999567, + "W3_pred_200": 0.6029101310961891, + "W3_pred_300": 0.8813287243628211, + "W3_pred_600": 0.4560621814046348, + "W4": 5.751, + "W4_err": 0.037, + "ks_W4": 0.041999999999999815, + "W4_allsky": 5.756, + "ks_W4_allsky": 0.03699999999999992, + "W4_pred_200": 1.5223742718469202, + "W4_pred_300": 0.9622837232935741, + "W4_pred_600": 0.23735889009154582, + "W3_excess_mag": 0.020000000000000462, + "W3_excess_sig": 0.5254069374927459, + "W3_excess_err": 0.03806573262134856, + "W3_excess_mag_allsky": 0.016000000000000014, + "W4_excess_mag": 0.009999999999999787, + "W4_excess_sig": 0.19638067190858072, + "W4_excess_err": 0.050921508225896056, + "W4_excess_mag_allsky": 0.02799999999999958, + "W3_excess_jy": 0.01672143895624574, + "W3_frac_200": 0.027734546317613594, + "W3_frac_300": 0.01897298759703416, + "W3_frac_600": 0.03666482255718958, + "W4_excess_jy": 0.006326614493990883, + "W4_frac_200": 0.004155755001242589, + "W4_frac_300": 0.006574583296844101, + "W4_frac_600": 0.026654213337241345 + }, + { + "hip": "41820", + "name": "HD 71974", + "gaia": "903616971110812544", + "sptype": "G5V", + "d_pc": 29.323793325904642, + "m1": 1.02, + "m2": 0.9055051213761373, + "snr": 22.95, + "ruwe": 26.49, + "dms": "1", + "ks": 5.467, + "e_ks": 0.024, + "g_ks": 1.6180000000000003, + "L2": 0.6723008243922426, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.465, + "W3_err": 0.015, + "ks_W3": 0.0019999999999997797, + "W3_allsky": 5.47, + "ks_W3_allsky": -0.0030000000000001137, + "W3_pred_200": 50.736193094717606, + "W3_pred_300": 74.16572061559752, + "W3_pred_600": 38.37862013841674, + "W4": 5.391, + "W4_err": 0.036, + "ks_W4": 0.07599999999999962, + "W4_allsky": 5.392, + "ks_W4_allsky": 0.07499999999999929, + "W4_pred_200": 128.1110915791405, + "W4_pred_300": 80.97825907844525, + "W4_pred_600": 19.974264586559443, + "W3_excess_mag": -0.015000000000000568, + "W3_excess_sig": -0.3636964837266678, + "W3_excess_err": 0.04124318125460256, + "W3_excess_mag_allsky": -0.025000000000000355, + "W4_excess_mag": 0.0039999999999995595, + "W4_excess_sig": 0.07140458581868118, + "W4_excess_err": 0.0560188110348658, + "W4_excess_mag_allsky": 0.012999999999999012, + "W3_excess_jy": 0.024913393584177955, + "W3_frac_200": 0.0004910378974959359, + "W3_frac_300": 0.00033591520957916115, + "W3_frac_600": 0.0006491477154291906, + "W4_excess_jy": 0.009766470983595373, + "W4_frac_200": 7.623439050600975e-05, + "W4_frac_300": 0.00012060608729726331, + "W4_frac_600": 0.000488952719198842 + }, + { + "hip": "42080", + "name": "2 UMa", + "gaia": "1092518738120160256", + "sptype": "A2m", + "d_pc": 45.83581610670578, + "m1": 1.87, + "m2": 0.8342163292190499, + "snr": 50.55, + "ruwe": 2.82, + "dms": "0", + "ks": null, + "e_ks": 9.995, + "g_ks": null, + "L2": 0.48430030934678314, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.065, + "W3_err": 0.014, + "ks_W3": null, + "W3_allsky": 5.059, + "ks_W3_allsky": null, + "W3_pred_200": 14.958889129606078, + "W3_pred_300": 21.86677249975959, + "W3_pred_600": 11.315423735597848, + "W4": 5.023, + "W4_err": 0.031, + "ks_W4": null, + "W4_allsky": 5.016, + "ks_W4_allsky": null, + "W4_pred_200": 37.771844876644856, + "W4_pred_300": 23.87535850791096, + "W4_pred_600": 5.889145226918267 + }, + { + "hip": "42734", + "name": "HD 74011", + "gaia": "711192403208467968", + "sptype": "F8", + "d_pc": 48.00998607710404, + "m1": 1.17, + "m2": 0.31832717622688705, + "snr": 7.81, + "ruwe": 1.333, + "dms": "0", + "ks": 5.787, + "e_ks": 0.024, + "g_ks": 1.4977, + "L2": 0.016532456346593612, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.788, + "W3_err": 0.016, + "ks_W3": -0.001000000000000334, + "W3_allsky": 5.786, + "ks_W3_allsky": 0.001000000000000334, + "W3_pred_200": 0.4654454168150748, + "W3_pred_300": 0.6803840146396642, + "W3_pred_600": 0.3520790930010203, + "W4": 5.754, + "W4_err": 0.056, + "ks_W4": 0.03300000000000036, + "W4_allsky": 5.75, + "ks_W4_allsky": 0.03699999999999992, + "W4_pred_200": 1.1752698967257655, + "W4_pred_300": 0.7428811120960955, + "W4_pred_600": 0.1832405889955054, + "W3_excess_mag": -0.016000000000000014, + "W3_excess_sig": -0.3844554650657705, + "W3_excess_err": 0.041617304093369625, + "W3_excess_mag_allsky": -0.023999999999999133, + "W4_excess_mag": -0.05400000000000027, + "W4_excess_sig": -0.6666798166284641, + "W4_excess_err": 0.08099840231115633, + "W4_excess_mag_allsky": -0.03700000000000081, + "W3_excess_jy": 0.01868028215478483, + "W3_frac_200": 0.0401342058164613, + "W3_frac_300": 0.027455498296323183, + "W3_frac_600": 0.05305706168338344, + "W4_excess_jy": 0.010474674768384632, + "W4_frac_200": 0.008912569612789772, + "W4_frac_300": 0.014100068769859473, + "W4_frac_600": 0.05716350741833491 + }, + { + "hip": "42783", + "name": "BD+24 1981", + "gaia": "690287388628672640", + "sptype": "K7V", + "d_pc": 38.7551835057939, + "m1": 0.7, + "m2": 0.4096814532680394, + "snr": 10.1, + "ruwe": 3.095, + "dms": "0", + "ks": 6.928, + "e_ks": 0.02, + "g_ks": 2.6705999999999994, + "L2": 0.029536180531417523, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.86, + "W3_err": 0.016, + "ks_W3": 0.06799999999999962, + "W3_allsky": 6.862, + "ks_W3_allsky": 0.06599999999999984, + "W3_pred_200": 1.276113409376065, + "W3_pred_300": 1.8654113527381841, + "W3_pred_600": 0.965296542855577, + "W4": 6.689, + "W4_err": 0.092, + "ks_W4": 0.23899999999999988, + "W4_allsky": 6.753, + "ks_W4_allsky": 0.17499999999999982, + "W4_pred_200": 3.2222417939151105, + "W4_pred_300": 2.036759874455225, + "W4_pred_600": 0.5023913960936854, + "W3_excess_mag": -0.02200000000000024, + "W3_excess_sig": -0.4753585554730515, + "W3_excess_err": 0.04628085420300685, + "W3_excess_mag_allsky": -0.03000000000000025, + "W4_excess_mag": 0.08999999999999986, + "W4_excess_sig": 0.7058352948150693, + "W4_excess_err": 0.12750850044071554, + "W4_excess_mag_allsky": 0.08300000000000018, + "W3_excess_jy": 0.007790504849937031, + "W3_frac_200": 0.006104868730864658, + "W3_frac_300": 0.004176293254837101, + "W3_frac_600": 0.008070581944581365, + "W4_excess_jy": 0.007454991190409543, + "W4_frac_200": 0.002313603902875187, + "W4_frac_300": 0.0036602209636536266, + "W4_frac_600": 0.014839010477439275 + }, + { + "hip": "43299", + "name": "HD 75393", + "gaia": "5733507394262989056", + "sptype": "F7V", + "d_pc": 40.1429087551684, + "m1": 1.16, + "m2": 0.6064129366056684, + "snr": 28.35, + "ruwe": 5.843, + "dms": "0", + "ks": 5.906, + "e_ks": 0.017, + "g_ks": 1.2496, + "L2": 0.13523024351986448, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.887, + "W3_err": 0.014, + "ks_W3": 0.019000000000000128, + "W3_allsky": 5.886, + "ks_W3_allsky": 0.019999999999999574, + "W3_pred_200": 5.445662063093577, + "W3_pred_300": 7.960420885034961, + "W3_pred_600": 4.119288085558294, + "W4": 5.797, + "W4_err": 0.041, + "ks_W4": 0.10899999999999999, + "W4_allsky": 5.815, + "ks_W4_allsky": 0.0909999999999993, + "W4_pred_200": 13.75053327260117, + "W4_pred_300": 8.691630303747898, + "W4_pred_600": 2.143895477024767, + "W3_excess_mag": 0.04100000000000037, + "W3_excess_sig": 1.101688890545951, + "W3_excess_err": 0.03721558813185679, + "W3_excess_mag_allsky": 0.040000000000000036, + "W4_excess_mag": 0.0680000000000005, + "W4_excess_sig": 1.2693107680091569, + "W4_excess_err": 0.0535723809439155, + "W4_excess_mag_allsky": 0.06399999999999917, + "W3_excess_jy": 0.015154632691528967, + "W3_frac_200": 0.0027828815883077234, + "W3_frac_300": 0.0019037476674152525, + "W3_frac_600": 0.003678944608088763, + "W4_excess_jy": 0.006403830691411351, + "W4_frac_200": 0.00046571507915052273, + "W4_frac_300": 0.0007367813019670164, + "W4_frac_600": 0.0029870069506832456 + }, + { + "hip": "43751", + "name": "BD+17 1972", + "gaia": "611482710204031232", + "sptype": "G5V", + "d_pc": 48.716324840454035, + "m1": 0.98, + "m2": 1.4864973223746385, + "snr": 15.47, + "ruwe": 1.858, + "dms": "1", + "ks": 6.283, + "e_ks": 0.017, + "g_ks": 2.387199999999999, + "L2": 4.882660465354585, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.234, + "W3_err": 0.016, + "ks_W3": 0.04900000000000038, + "W3_allsky": 6.237, + "ks_W3_allsky": 0.04600000000000026, + "W3_pred_200": 133.50638092066916, + "W3_pred_300": 195.1584528479886, + "W3_pred_600": 100.98886745096752, + "W4": 6.21, + "W4_err": 0.067, + "ks_W4": 0.0730000000000004, + "W4_allsky": 6.232, + "ks_W4_allsky": 0.051000000000000156, + "W4_pred_200": 337.1094114333187, + "W4_pred_300": 213.08485409294823, + "W4_pred_600": 52.55995008385996, + "W3_excess_mag": -0.03500000000000014, + "W3_excess_sig": -0.6619276905766184, + "W3_excess_err": 0.052875866198483015, + "W3_excess_mag_allsky": -0.025999999999999746, + "W4_excess_mag": -0.009999999999999787, + "W4_excess_sig": -0.13270958953000425, + "W4_excess_err": 0.07535250493513802, + "W4_excess_mag_allsky": -0.019999999999999574, + "W3_excess_jy": 0.015990758155687297, + "W3_frac_200": 0.00011977523505179252, + "W3_frac_300": 8.193730746647547e-05, + "W3_frac_600": 0.0001583417911231769, + "W4_excess_jy": 0.006351150294880481, + "W4_frac_200": 1.884002664854926e-05, + "W4_frac_300": 2.9805733128784887e-05, + "W4_frac_600": 0.000120836307583001 + }, + { + "hip": "44014", + "name": "HD 76493", + "gaia": "719601571215916544", + "sptype": "F5", + "d_pc": 44.292864419542006, + "m1": 1.3, + "m2": 0.4206878776597268, + "snr": 16.99, + "ruwe": 21.241, + "dms": "0", + "ks": 5.809, + "e_ks": 0.021, + "g_ks": 1.1758999999999995, + "L2": 0.031393217641138865, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.84, + "W3_err": 0.015, + "ks_W3": -0.030999999999999694, + "W3_allsky": 5.836, + "ks_W3_allsky": -0.027000000000000135, + "W3_pred_200": 1.0383955791304724, + "W3_pred_300": 1.517917520269775, + "W3_pred_600": 0.7854785125573184, + "W4": 5.762, + "W4_err": 0.041, + "ks_W4": 0.0470000000000006, + "W4_allsky": 5.755, + "ks_W4_allsky": 0.05400000000000027, + "W4_pred_200": 2.6219939459196246, + "W4_pred_300": 1.6573467795614798, + "W4_pred_600": 0.40880457870271614, + "W3_excess_mag": -0.009999999999999787, + "W3_excess_sig": -0.25269934785962905, + "W3_excess_err": 0.03957271787481876, + "W3_excess_mag_allsky": -0.008000000000000007, + "W4_excess_mag": 0.025000000000001243, + "W4_excess_sig": 0.37805706614940043, + "W4_excess_err": 0.06612758294569676, + "W4_excess_mag_allsky": 0.04499999999999993, + "W3_excess_jy": 0.016883235798746486, + "W3_frac_200": 0.016258963479875467, + "W3_frac_300": 0.011122630560154466, + "W3_frac_600": 0.021494204524804838, + "W4_excess_jy": 0.008310405106194282, + "W4_frac_200": 0.0031694982054123444, + "W4_frac_300": 0.00501428259232093, + "W4_frac_600": 0.020328551927099703 + }, + { + "hip": "44248", + "name": "10 UMa", + "gaia": "816649002967779584", + "sptype": "F3V+G5V", + "d_pc": 18.725539763683688, + "m1": 1.6, + "m2": 0.6985977070744677, + "snr": 45.7, + "ruwe": 8.008, + "dms": "1", + "ks": 3.003, + "e_ks": 0.358, + "g_ks": 1.6993999999999998, + "L2": 0.23818182767984394, + "qph": "UUAA", + "ccf": "HHH0", + "W3": 2.904, + "W3_err": 0.015, + "ks_W3": 0.0990000000000002, + "W3_allsky": 2.942, + "ks_W3_allsky": 0.06099999999999994, + "W3_pred_200": 44.079277450259895, + "W3_pred_300": 64.43469990368183, + "W3_pred_600": 33.3430977385557, + "W4": 2.839, + "W4_err": 0.018, + "ks_W4": 0.16400000000000015, + "W4_allsky": 2.857, + "ks_W4_allsky": 0.1459999999999999, + "W4_pred_200": 111.3020903959097, + "W4_pred_300": 70.35338939786261, + "W4_pred_600": 17.353512293131086, + "W3_excess_mag": 0.06599999999999984, + "W3_excess_sig": 0.18355370173266694, + "W3_excess_err": 0.3595677961108308, + "W3_excess_mag_allsky": 0.028999999999999915, + "W4_excess_mag": 0.08599999999999985, + "W4_excess_sig": 0.23893324892187928, + "W4_excess_err": 0.35993316287310895, + "W4_excess_mag_allsky": 0.07399999999999984, + "W3_excess_jy": 3.7131165496128, + "W3_frac_200": 0.08423723718708341, + "W3_frac_300": 0.05762603931054594, + "W3_frac_600": 0.11136087530701155, + "W4_excess_jy": 1.0425425626748115, + "W4_frac_200": 0.00936678330987685, + "W4_frac_300": 0.01481865439032401, + "W4_frac_600": 0.06007674671642544 + }, + { + "hip": "44874", + "name": "HD 78643", + "gaia": "5650153795719308672", + "sptype": "G0/1V", + "d_pc": 46.19151000046191, + "m1": 1.32, + "m2": 0.3150815697280373, + "snr": 25.96, + "ruwe": 1.618, + "dms": "0", + "ks": 5.281, + "e_ks": 0.02, + "g_ks": 1.3759000000000006, + "L2": 0.0161473305979217, + "qph": "BAAA", + "ccf": "hh00", + "W3": 5.285, + "W3_err": 0.015, + "ks_W3": -0.004000000000000448, + "W3_allsky": 5.281, + "ks_W3_allsky": 0.0, + "W3_pred_200": 0.4911011504855978, + "W3_pred_300": 0.7178873403630579, + "W3_pred_600": 0.37148598178897524, + "W4": 5.2, + "W4_err": 0.033, + "ks_W4": 0.08099999999999952, + "W4_allsky": 5.225, + "ks_W4_allsky": 0.05600000000000005, + "W4_pred_200": 1.240051738746479, + "W4_pred_300": 0.7838293291635584, + "W4_pred_600": 0.19334096076641547, + "W3_excess_mag": -0.007000000000000561, + "W3_excess_sig": -0.17925163190606874, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": -0.0129999999999999, + "W4_excess_mag": 0.02200000000000024, + "W4_excess_sig": 0.4501057965955656, + "W4_excess_err": 0.04887739763939975, + "W4_excess_mag_allsky": 0.0039999999999995595, + "W3_excess_jy": 0.027757233838556404, + "W3_frac_200": 0.056520400758805434, + "W3_frac_300": 0.038665166911173984, + "W3_frac_600": 0.07471946506537105, + "W4_excess_jy": 0.010058275973546346, + "W4_frac_200": 0.008111174444796856, + "W4_frac_300": 0.012832227117961706, + "W4_frac_600": 0.05202351293628997 + }, + { + "hip": "45336", + "name": "tet Hya", + "gaia": "3845263368043470080", + "sptype": "B9.5V+DA1.6", + "d_pc": 36.88539707129947, + "m1": 2.5, + "m2": 0.42240613992382375, + "snr": 6.32, + "ruwe": 7.534, + "dms": "0", + "ks": 3.943, + "e_ks": 0.016, + "g_ks": -0.11450000000000005, + "L2": 0.03168891337393511, + "qph": "BBAA", + "ccf": "hh00", + "W3": 4.071, + "W3_err": 0.015, + "ks_W3": -0.12799999999999967, + "W3_allsky": 4.076, + "ks_W3_allsky": -0.13299999999999956, + "W3_pred_200": 1.5114471113934334, + "W3_pred_300": 2.209420087541576, + "W3_pred_600": 1.1433111356854098, + "W4": 4.028, + "W4_err": 0.027, + "ks_W4": -0.08499999999999952, + "W4_allsky": 4.033, + "ks_W4_allsky": -0.0900000000000003, + "W4_pred_200": 3.8164696145661656, + "W4_pred_300": 2.4123677458671646, + "W4_pred_600": 0.5950396092036841, + "W3_excess_mag": -0.11399999999999944, + "W3_excess_sig": -1.5308663825247104, + "W3_excess_err": 0.0744676356482466, + "W3_excess_mag_allsky": -0.1339999999999999, + "W4_excess_mag": -0.10999999999999899, + "W4_excess_sig": -1.2791849919714058, + "W4_excess_err": 0.08599225341947873, + "W4_excess_mag_allsky": -0.11400000000000032, + "W3_excess_jy": 0.17026047978729544, + "W3_frac_200": 0.11264732884389775, + "W3_frac_300": 0.07706116222413116, + "W3_frac_600": 0.1489187627698781, + "W4_excess_jy": 0.05490790128376131, + "W4_frac_200": 0.014387092477874456, + "W4_frac_300": 0.02276099959379277, + "W4_frac_600": 0.0922760442069431 + }, + { + "hip": "45699", + "name": "83 Cnc", + "gaia": "632104703618657792", + "sptype": "F5", + "d_pc": 42.28329809725159, + "m1": 1.34, + "m2": 0.5767251830426606, + "snr": 26.77, + "ruwe": 3.585, + "dms": "0", + "ks": 5.306, + "e_ks": 0.02, + "g_ks": 1.1913999999999998, + "L2": 0.11063070047230487, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.341, + "W3_err": 0.014, + "ks_W3": -0.03500000000000014, + "W3_allsky": 5.337, + "ks_W3_allsky": -0.030999999999999694, + "W3_pred_200": 4.015433944327127, + "W3_pred_300": 5.869726006233581, + "W3_pred_600": 3.0374138192145934, + "W4": 5.272, + "W4_err": 0.036, + "ks_W4": 0.03399999999999981, + "W4_allsky": 5.299, + "ks_W4_allsky": 0.006999999999999673, + "W4_pred_200": 10.13914514262681, + "W4_pred_300": 6.408893344620288, + "W4_pred_600": 1.5808308653372858, + "W3_excess_mag": -0.004000000000000448, + "W3_excess_sig": -0.1034175379990154, + "W3_excess_err": 0.038678159211627434, + "W3_excess_mag_allsky": -0.0039999999999995595, + "W4_excess_mag": 0.012000000000000455, + "W4_excess_sig": 0.17195470876990132, + "W4_excess_err": 0.06978581793917653, + "W4_excess_mag_allsky": -0.0129999999999999, + "W3_excess_jy": 0.026096315831605012, + "W3_frac_200": 0.0064990026466437145, + "W3_frac_300": 0.004445917203612405, + "W3_frac_600": 0.008591623461551555, + "W4_excess_jy": 0.013844277974365445, + "W4_frac_200": 0.001365428522781628, + "W4_frac_300": 0.0021601666980441358, + "W4_frac_600": 0.00875759594396054 + }, + { + "hip": "46404", + "name": "HD 81809", + "gaia": "5745464991235898752", + "sptype": "G1.5IV-V", + "d_pc": 30.930067118245642, + "m1": 1.52, + "m2": 0.6939870366658076, + "snr": 21.53, + "ruwe": 4.911, + "dms": "1", + "ks": 3.568, + "e_ks": 0.178, + "g_ks": 1.5825, + "L2": 0.2319559047246283, + "qph": "CBAA", + "ccf": "0000", + "W3": 3.766, + "W3_err": 0.015, + "ks_W3": -0.19799999999999995, + "W3_allsky": 3.758, + "ks_W3_allsky": -0.18999999999999995, + "W3_pred_200": 15.733967229034048, + "W3_pred_300": 22.99977484524751, + "W3_pred_600": 11.901719753117717, + "W4": 3.706, + "W4_err": 0.028, + "ks_W4": -0.1379999999999999, + "W4_allsky": 3.716, + "ks_W4_allsky": -0.14800000000000013, + "W4_pred_200": 39.728950747624, + "W4_pred_300": 25.112433489558367, + "W4_pred_600": 6.194284696178798, + "W3_excess_mag": -0.2280000000000002, + "W3_excess_sig": -1.2587467151889116, + "W3_excess_err": 0.18113254815189897, + "W3_excess_mag_allsky": -0.21900000000000075, + "W4_excess_mag": -0.21999999999999975, + "W4_excess_sig": -1.204363520226178, + "W4_excess_err": 0.182669099740487, + "W4_excess_mag_allsky": -0.23499999999999988, + "W3_excess_jy": 0.6410607384401545, + "W3_frac_200": 0.04074374435312149, + "W3_frac_300": 0.027872478872227664, + "W3_frac_600": 0.05386286618555485, + "W4_excess_jy": 0.18081139295348858, + "W4_frac_200": 0.00455112429477645, + "W4_frac_300": 0.007200074537924376, + "W4_frac_600": 0.029190035947981145 + }, + { + "hip": "46662", + "name": "BD+18 2213", + "gaia": "633143119335924736", + "sptype": "K8", + "d_pc": 40.59759662227996, + "m1": 0.76, + "m2": 0.3537233788672834, + "snr": 5.57, + "ruwe": 8.108, + "dms": "0", + "ks": 7.364, + "e_ks": 0.031, + "g_ks": 2.3328999999999995, + "L2": 0.021069512891268845, + "qph": "AAAB", + "ccf": "0000", + "W3": 7.267, + "W3_err": 0.018, + "ks_W3": 0.09699999999999953, + "W3_allsky": 7.268, + "ks_W3_allsky": 0.09600000000000009, + "W3_pred_200": 0.829561103486497, + "W3_pred_300": 1.212645121400565, + "W3_pred_600": 0.6275088557172186, + "W4": 7.296, + "W4_err": 0.139, + "ks_W4": 0.06799999999999962, + "W4_allsky": 7.171, + "ks_W4_allsky": 0.19299999999999962, + "W4_pred_200": 2.0946778230059278, + "W4_pred_300": 1.3240333943487095, + "W4_pred_600": 0.3265888108874035, + "W3_excess_mag": 0.04300000000000015, + "W3_excess_sig": 0.6439420394638211, + "W3_excess_err": 0.06677619624866259, + "W3_excess_mag_allsky": 0.04100000000000037, + "W4_excess_mag": -0.01100000000000012, + "W4_excess_sig": -0.07558040300552833, + "W4_excess_err": 0.14554037240573492, + "W4_excess_mag_allsky": 0.13699999999999957, + "W3_excess_jy": 0.007954320924281178, + "W3_frac_200": 0.009588589545544734, + "W3_frac_300": 0.006559479590446215, + "W3_frac_600": 0.012676029751308758, + "W4_excess_jy": 0.0049956178022578296, + "W4_frac_200": 0.002384909864128395, + "W4_frac_300": 0.0037730300637282403, + "W4_frac_600": 0.01529635319925319 + }, + { + "hip": "47328", + "name": "HD 83610", + "gaia": "5432546322733015808", + "sptype": "F6V", + "d_pc": 43.35949356111521, + "m1": 1.36, + "m2": 0.4022070124192178, + "snr": 24.54, + "ruwe": 11.855, + "dms": "1", + "ks": 5.402, + "e_ks": 0.018, + "g_ks": 1.1818, + "L2": 0.028311442899102354, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.446, + "W3_err": 0.015, + "ks_W3": -0.043999999999999595, + "W3_allsky": 5.439, + "ks_W3_allsky": -0.03699999999999992, + "W3_pred_200": 0.9772105240907824, + "W3_pred_300": 1.4284777452071857, + "W3_pred_600": 0.7391960100224391, + "W4": 5.387, + "W4_err": 0.033, + "ks_W4": 0.015000000000000568, + "W4_allsky": 5.393, + "ks_W4_allsky": 0.009000000000000341, + "W4_pred_200": 2.467499024023708, + "W4_pred_300": 1.5596914582510437, + "W4_pred_600": 0.3847167155115533, + "W3_excess_mag": -0.02200000000000024, + "W3_excess_sig": -0.5779476312420135, + "W3_excess_err": 0.03806573262134856, + "W3_excess_mag_allsky": -0.01699999999999946, + "W4_excess_mag": -0.01899999999999924, + "W4_excess_sig": -0.3670781683749596, + "W4_excess_err": 0.05176009263670319, + "W4_excess_mag_allsky": -0.010999999999999233, + "W3_excess_jy": 0.02329558643692837, + "W3_frac_200": 0.023838861599042933, + "W3_frac_300": 0.01630797995634828, + "W3_frac_600": 0.031514762148433684, + "W4_excess_jy": 0.009002853877691067, + "W4_frac_200": 0.00364857444320698, + "W4_frac_300": 0.005772201822395307, + "W4_frac_600": 0.023401254779689202 + }, + { + "hip": "48095", + "name": "HD 85643", + "gaia": "5205327090890523264", + "sptype": "F5V", + "d_pc": 48.80429477794046, + "m1": 1.4, + "m2": 0.4083259352596963, + "snr": 25.2, + "ruwe": 8.979, + "dms": "0", + "ks": 5.597, + "e_ks": 0.017, + "g_ks": 1.1103999999999994, + "L2": 0.029311892323374725, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.621, + "W3_err": 0.014, + "ks_W3": -0.02400000000000002, + "W3_allsky": 5.611, + "ks_W3_allsky": -0.013999999999999346, + "W3_pred_200": 0.7985871303785693, + "W3_pred_300": 1.16736764006512, + "W3_pred_600": 0.6040790657472167, + "W4": 5.546, + "W4_err": 0.035, + "ks_W4": 0.051000000000000156, + "W4_allsky": 5.554, + "ks_W4_allsky": 0.04300000000000015, + "W4_pred_200": 2.0164671953778037, + "W4_pred_300": 1.2745969217631519, + "W4_pred_600": 0.3143947084840219, + "W3_excess_mag": -0.0030000000000001137, + "W3_excess_sig": -0.06958301795477603, + "W3_excess_err": 0.0431139678642553, + "W3_excess_mag_allsky": 0.0010000000000012221, + "W4_excess_mag": 0.01100000000000012, + "W4_excess_sig": 0.135622453636499, + "W4_excess_err": 0.08110751357944594, + "W4_excess_mag_allsky": 0.001000000000000334, + "W3_excess_jy": 0.02261741651025949, + "W3_frac_200": 0.028321789382628453, + "W3_frac_300": 0.019374716014055184, + "W3_frac_600": 0.037441152644948614, + "W4_excess_jy": 0.012705538925138468, + "W4_frac_200": 0.006300890465395332, + "W4_frac_300": 0.009968279938698484, + "W4_frac_600": 0.04041269964880528 + }, + { + "hip": "48390", + "name": "g Leo", + "gaia": "643101503523246848", + "sptype": "A5IV", + "d_pc": 36.79717397703857, + "m1": 1.7, + "m2": 0.7476540947144344, + "snr": 11.8, + "ruwe": 2.461, + "dms": "0", + "ks": 4.662, + "e_ks": 0.02, + "g_ks": 0.5810000000000004, + "L2": 0.3124660696721121, + "qph": "BBAA", + "ccf": "HHH0", + "W3": 4.756, + "W3_err": 0.031, + "ks_W3": -0.0940000000000003, + "W3_allsky": 4.735, + "ks_W3_allsky": -0.0730000000000004, + "W3_pred_200": 14.975056376714932, + "W3_pred_300": 21.890405639320537, + "W3_pred_600": 11.32765320331365, + "W4": 4.663, + "W4_err": 0.032, + "ks_W4": -0.001000000000000334, + "W4_allsky": 4.692, + "ks_W4_allsky": -0.03000000000000025, + "W4_pred_200": 37.812667877911004, + "W4_pred_300": 23.901162484226685, + "W4_pred_600": 5.895510088995832, + "W3_excess_mag": -0.09700000000000042, + "W3_excess_sig": -1.117420264003344, + "W3_excess_err": 0.0868070887245966, + "W3_excess_mag_allsky": -0.08200000000000074, + "W4_excess_mag": -0.0860000000000003, + "W4_excess_sig": -0.8093321625203017, + "W4_excess_err": 0.10626045026085693, + "W4_excess_mag_allsky": -0.09800000000000075, + "W3_excess_jy": 0.10749291910362213, + "W3_frac_200": 0.007178131180244864, + "W3_frac_300": 0.0049105037556059945, + "W3_frac_600": 0.009489425318227211, + "W4_excess_jy": 0.03892653819257815, + "W4_frac_200": 0.0010294575965457819, + "W4_frac_300": 0.0016286462308378223, + "W4_frac_600": 0.006602743037491505 + }, + { + "hip": "50506", + "name": "BD+33 1968", + "gaia": "743066420661381760", + "sptype": "G8V", + "d_pc": 42.30297389906511, + "m1": 0.96, + "m2": 0.6849088843704956, + "snr": 9.87, + "ruwe": 7.567, + "dms": "0", + "ks": 6.855, + "e_ks": 0.016, + "g_ks": 1.7523999999999997, + "L2": 0.22005497877248967, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.818, + "W3_err": 0.016, + "ks_W3": 0.03700000000000081, + "W3_allsky": 6.819, + "ks_W3_allsky": 0.036000000000000476, + "W3_pred_200": 7.979651671557407, + "W3_pred_300": 11.664584596989194, + "W3_pred_600": 6.036085911449057, + "W4": 6.69, + "W4_err": 0.081, + "ks_W4": 0.16500000000000004, + "W4_allsky": 6.658, + "ks_W4_allsky": 0.19700000000000006, + "W4_pred_200": 20.14896711221653, + "W4_pred_300": 12.73604228068111, + "W4_pred_600": 3.1414984860750934, + "W3_excess_mag": -0.0019999999999988916, + "W3_excess_sig": -0.05322462954120545, + "W3_excess_err": 0.03757658845611187, + "W3_excess_mag_allsky": -0.009999999999999787, + "W4_excess_mag": 0.08699999999999974, + "W4_excess_sig": 0.8849152342705247, + "W4_excess_err": 0.09831450135641269, + "W4_excess_mag_allsky": 0.12199999999999989, + "W3_excess_jy": 0.006494686703823153, + "W3_frac_200": 0.0008139060414093953, + "W3_frac_300": 0.00055678679766269, + "W3_frac_600": 0.001075976518409759, + "W4_excess_jy": 0.005504271715114079, + "W4_frac_200": 0.0002731788525168013, + "W4_frac_300": 0.00043218070369186275, + "W4_frac_600": 0.0017521166218962508 + }, + { + "hip": "52472", + "name": "HD 92987", + "gaia": "5394489064197253376", + "sptype": "G2/3V", + "d_pc": 43.47448047995827, + "m1": 1.25, + "m2": 0.3299349924110084, + "snr": 13.73, + "ruwe": 2.051, + "dms": "0", + "ks": 5.517, + "e_ks": 0.018, + "g_ks": 1.3700999999999999, + "L2": 0.017952011046843803, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.521, + "W3_err": 0.015, + "ks_W3": -0.0039999999999995595, + "W3_allsky": 5.514, + "ks_W3_allsky": 0.0030000000000001137, + "W3_pred_200": 0.6163662335092462, + "W3_pred_300": 0.9009987364640162, + "W3_pred_600": 0.46624084502825863, + "W4": 5.47, + "W4_err": 0.033, + "ks_W4": 0.0470000000000006, + "W4_allsky": 5.465, + "ks_W4_allsky": 0.05200000000000049, + "W4_pred_200": 1.5563515149821951, + "W4_pred_300": 0.9837605366082115, + "W4_pred_600": 0.24265640520862364, + "W3_excess_mag": -0.006999999999999673, + "W3_excess_sig": -0.18389242812244824, + "W3_excess_err": 0.03806573262134856, + "W3_excess_mag_allsky": -0.009999999999999787, + "W4_excess_mag": -0.011999999999999567, + "W4_excess_sig": -0.24111743261029278, + "W4_excess_err": 0.049768280418756056, + "W4_excess_mag_allsky": -0.0019999999999997797, + "W3_excess_jy": 0.02174070623185144, + "W3_frac_200": 0.03527238360880342, + "W3_frac_300": 0.024129563507683912, + "W3_frac_600": 0.046629776141843056, + "W4_excess_jy": 0.007996773128652001, + "W4_frac_200": 0.005138153592984092, + "W4_frac_300": 0.008128780156422115, + "W4_frac_600": 0.03295512896837313 + }, + { + "hip": "55598", + "name": "lam Crt", + "gaia": "3546303712614228736", + "sptype": "F5III", + "d_pc": 45.30627038782168, + "m1": 1.82, + "m2": 0.40863140410664683, + "snr": 13.44, + "ruwe": 2.127, + "dms": "0", + "ks": 4.093, + "e_ks": 0.268, + "g_ks": 0.8696999999999999, + "L2": 0.029362351806731114, + "qph": "CBAA", + "ccf": "0000", + "W3": 3.989, + "W3_err": 0.014, + "ks_W3": 0.10400000000000009, + "W3_allsky": 3.989, + "ks_W3_allsky": 0.10400000000000009, + "W3_pred_200": 0.9282580975964057, + "W3_pred_300": 1.3569195189118135, + "W3_pred_600": 0.7021666929474641, + "W4": 3.94, + "W4_err": 0.024, + "ks_W4": 0.15300000000000002, + "W4_allsky": 3.936, + "ks_W4_allsky": 0.15700000000000003, + "W4_pred_200": 2.3438920205984712, + "W4_pred_300": 1.4815602065077413, + "W4_pred_600": 0.36544469963272336, + "W3_excess_mag": 0.10300000000000065, + "W3_excess_sig": 0.37720838912395643, + "W3_excess_err": 0.27305861420317795, + "W3_excess_mag_allsky": 0.09799999999999986, + "W4_excess_mag": 0.09599999999999964, + "W4_excess_sig": 0.3467364483331841, + "W4_excess_err": 0.2768673453900982, + "W4_excess_mag_allsky": 0.09799999999999986, + "W3_excess_jy": 0.9054061758475972, + "W3_frac_200": 0.9753819311590383, + "W3_frac_300": 0.6672511989315998, + "W3_frac_600": 1.2894462026488336, + "W4_excess_jy": 0.25508819041475084, + "W4_frac_200": 0.10883103324427829, + "W4_frac_300": 0.172175379234862, + "W4_frac_600": 0.6980213166892768 + }, + { + "hip": "55605", + "name": "LP 552-48", + "gaia": "3817534337625985280", + "sptype": "K4V", + "d_pc": 36.9508184606289, + "m1": 0.7, + "m2": 0.34454976755729927, + "snr": 6.77, + "ruwe": 27.55, + "dms": "0", + "ks": 7.045, + "e_ks": 0.02, + "g_ks": 2.7866, + "L2": 0.019833864728720344, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.955, + "W3_err": 0.016, + "ks_W3": 0.08999999999999986, + "W3_allsky": 6.946, + "ks_W3_allsky": 0.0990000000000002, + "W3_pred_200": 0.9426571275466888, + "W3_pred_300": 1.377967894189688, + "W3_pred_600": 0.7130586197381074, + "W4": 6.816, + "W4_err": 0.089, + "ks_W4": 0.2290000000000001, + "W4_allsky": 6.76, + "ks_W4_allsky": 0.28500000000000014, + "W4_pred_200": 2.3802501967266596, + "W4_pred_300": 1.5045419934071949, + "W4_pred_600": 0.3711134346416709, + "W3_excess_mag": -0.006999999999999673, + "W3_excess_sig": -0.1736292195173935, + "W3_excess_err": 0.04031579488438834, + "W3_excess_mag_allsky": 0.009999999999999787, + "W4_excess_mag": 0.06599999999999984, + "W4_excess_sig": 0.47004011029216025, + "W4_excess_err": 0.14041354887559826, + "W4_excess_mag_allsky": 0.1930000000000005, + "W3_excess_jy": 0.006165794983244469, + "W3_frac_200": 0.006540867090552056, + "W3_frac_300": 0.004474556344340849, + "W3_frac_600": 0.008646967882541054, + "W4_excess_jy": 0.007442804807096776, + "W4_frac_200": 0.0031269001961777734, + "W4_frac_300": 0.004946890708076386, + "W4_frac_600": 0.02005533648837905 + }, + { + "hip": "57001", + "name": "HD 101563", + "gaia": "3480675173518741120", + "sptype": "G2III/IV", + "d_pc": 43.211476968282774, + "m1": 1.36, + "m2": 0.45411762459787897, + "snr": 30.26, + "ruwe": 2.388, + "dms": "0", + "ks": 4.935, + "e_ks": 0.026, + "g_ks": 1.3635000000000002, + "L2": 0.042527850239215396, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.934, + "W3_err": 0.015, + "ks_W3": 0.0009999999999994458, + "W3_allsky": 4.936, + "ks_W3_allsky": -0.001000000000000334, + "W3_pred_200": 1.477984032086901, + "W3_pred_300": 2.1605040526677604, + "W3_pred_600": 1.117998499260963, + "W4": 4.876, + "W4_err": 0.027, + "ks_W4": 0.058999999999999275, + "W4_allsky": 4.886, + "ks_W4_allsky": 0.04899999999999949, + "W4_pred_200": 3.731973885658087, + "W4_pred_300": 2.3589584981416185, + "W4_pred_600": 0.5818655738813673, + "W3_excess_mag": -0.002000000000000668, + "W3_excess_sig": -0.04712736296264305, + "W3_excess_err": 0.042438190347845885, + "W3_excess_mag_allsky": -0.014000000000000234, + "W4_excess_mag": -8.881784197001252e-16, + "W4_excess_sig": -1.7875165577359476e-14, + "W4_excess_err": 0.04968784293808635, + "W4_excess_mag_allsky": -0.005000000000000782, + "W3_excess_jy": 0.041876310045456555, + "W3_frac_200": 0.028333398153380287, + "W3_frac_300": 0.019382657483909032, + "W3_frac_600": 0.03745649933621404, + "W4_excess_jy": 0.013796309094388594, + "W4_frac_200": 0.003696786075435195, + "W4_frac_300": 0.005848474699854741, + "W4_frac_600": 0.0237104749166711 + }, + { + "hip": "57112", + "name": "HD 101728", + "gaia": "4004906065485481344", + "sptype": "G5", + "d_pc": 41.389015355324695, + "m1": 0.8, + "m2": 0.4467004591578606, + "snr": 9.2, + "ruwe": 7.654, + "dms": "1", + "ks": 6.698, + "e_ks": 0.021, + "g_ks": 2.089599999999999, + "L2": 0.03981673049023305, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.64, + "W3_err": 0.016, + "ks_W3": 0.05800000000000072, + "W3_allsky": 6.638, + "ks_W3_allsky": 0.0600000000000005, + "W3_pred_200": 1.5083076710690548, + "W3_pred_300": 2.204830881300727, + "W3_pred_600": 1.1409363538914423, + "W4": 6.599, + "W4_err": 0.076, + "ks_W4": 0.0990000000000002, + "W4_allsky": 6.618, + "ks_W4_allsky": 0.08000000000000007, + "W4_pred_200": 3.808542391367672, + "W4_pred_300": 2.407356995228578, + "W4_pred_600": 0.5938036471050737, + "W3_excess_mag": 0.013000000000000789, + "W3_excess_sig": 0.17126879976318157, + "W3_excess_err": 0.07590407603706147, + "W3_excess_mag_allsky": 8.881784197001252e-16, + "W4_excess_mag": -0.028999999999999915, + "W4_excess_sig": -0.25327510670367254, + "W4_excess_err": 0.11450000111510922, + "W4_excess_mag_allsky": -0.027000000000000135, + "W3_excess_jy": 0.016319358013184418, + "W3_frac_200": 0.010819647957911413, + "W3_frac_300": 0.0074016370831838625, + "W3_frac_600": 0.014303477978875209, + "W4_excess_jy": 0.007136319124324786, + "W4_frac_200": 0.0018737664941053966, + "W4_frac_300": 0.0029643792501357676, + "W4_frac_600": 0.012017977927747574 + }, + { + "hip": "58057", + "name": "HD 103437", + "gaia": "3460420279549683712", + "sptype": "F7V", + "d_pc": 49.9151442547669, + "m1": 1.43, + "m2": 0.5797607797092319, + "snr": 8.09, + "ruwe": 25.025, + "dms": "1", + "ks": 5.086, + "e_ks": 0.017, + "g_ks": 1.2534, + "L2": 0.11297837647641361, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.113, + "W3_err": 0.014, + "ks_W3": -0.027000000000000135, + "W3_allsky": 5.114, + "ks_W3_allsky": -0.02799999999999958, + "W3_pred_200": 2.94255915302397, + "W3_pred_300": 4.301407077007651, + "W3_pred_600": 2.225854032010259, + "W4": 5.054, + "W4_err": 0.031, + "ks_W4": 0.03200000000000003, + "W4_allsky": 5.05, + "ks_W4_allsky": 0.036000000000000476, + "W4_pred_200": 7.430089688170564, + "W4_pred_300": 4.696515503289393, + "W4_pred_600": 1.1584522113115034, + "W3_excess_mag": -0.007000000000000561, + "W3_excess_sig": -0.15321223260022973, + "W3_excess_err": 0.04568825792301695, + "W3_excess_mag_allsky": -0.010999999999999233, + "W4_excess_mag": -0.011999999999999567, + "W4_excess_sig": -0.2442985625191413, + "W4_excess_err": 0.04912022353410017, + "W4_excess_mag_allsky": 0.009000000000000341, + "W3_excess_jy": 0.03840659004751619, + "W3_frac_200": 0.01305210466475993, + "W3_frac_300": 0.008928843366816238, + "W3_frac_600": 0.017254765809072235, + "W4_excess_jy": 0.011567107962918526, + "W4_frac_200": 0.0015567925083508083, + "W4_frac_300": 0.0024629127604959547, + "W4_frac_600": 0.00998496774400664 + }, + { + "hip": "58684", + "name": "67 UMa", + "gaia": "1537396673318780544", + "sptype": "F0Vam", + "d_pc": 33.29781566329249, + "m1": 1.6, + "m2": 0.4489723837070554, + "snr": 33.51, + "ruwe": 5.162, + "dms": "0", + "ks": 4.553, + "e_ks": 0.016, + "g_ks": 0.6097000000000001, + "L2": 0.040632964943275875, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.519, + "W3_err": 0.013, + "ks_W3": 0.03399999999999981, + "W3_allsky": 4.564, + "ks_W3_allsky": -0.01100000000000012, + "W3_pred_200": 2.3781626697102363, + "W3_pred_300": 3.4763772640745585, + "W3_pred_600": 1.798924912592128, + "W4": 4.533, + "W4_err": 0.03, + "ks_W4": 0.019999999999999574, + "W4_allsky": 4.538, + "ks_W4_allsky": 0.01499999999999968, + "W4_pred_200": 6.004964050033583, + "W4_pred_300": 3.795702063001903, + "W4_pred_600": 0.9362557081488345, + "W3_excess_mag": 0.030999999999999694, + "W3_excess_sig": 0.38159892524485045, + "W3_excess_err": 0.081237126074474, + "W3_excess_mag_allsky": -0.02400000000000002, + "W4_excess_mag": -0.06900000000000084, + "W4_excess_sig": -0.6237607879310556, + "W4_excess_err": 0.11061932929267015, + "W4_excess_mag_allsky": -0.07000000000000028, + "W3_excess_jy": 0.12413894259869686, + "W3_frac_200": 0.05219951695475162, + "W3_frac_300": 0.035709283880541, + "W3_frac_600": 0.06900729526271394, + "W4_excess_jy": 0.045967500511607286, + "W4_frac_200": 0.007654916853557218, + "W4_frac_300": 0.012110407968968201, + "W4_frac_600": 0.049097164494189584 + }, + { + "hip": "60574", + "name": "HD 108081", + "gaia": "3692997981308734592", + "sptype": "G5V", + "d_pc": 47.68489819274236, + "m1": 1.04, + "m2": 0.4932367288104853, + "snr": 21.85, + "ruwe": 5.401, + "dms": "0", + "ks": 6.301, + "e_ks": 0.017, + "g_ks": 1.6498, + "L2": 0.05918636052443355, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.266, + "W3_err": 0.016, + "ks_W3": 0.03500000000000014, + "W3_allsky": 6.263, + "ks_W3_allsky": 0.038000000000000256, + "W3_pred_200": 1.6890964507982815, + "W3_pred_300": 2.469106328668272, + "W3_pred_600": 1.2776912714226571, + "W4": 6.229, + "W4_err": 0.06, + "ks_W4": 0.07200000000000006, + "W4_allsky": 6.229, + "ks_W4_allsky": 0.07200000000000006, + "W4_pred_200": 4.2650419137723885, + "W4_pred_300": 2.695907628423671, + "W4_pred_600": 0.664978142082482, + "W3_excess_mag": 0.017999999999999794, + "W3_excess_sig": 0.4735202775881854, + "W3_excess_err": 0.03801315561749642, + "W3_excess_mag_allsky": 0.016000000000000014, + "W4_excess_mag": -0.0019999999999997797, + "W4_excess_sig": -0.02727998302451906, + "W4_excess_err": 0.07331382861207038, + "W4_excess_mag_allsky": 0.009999999999999787, + "W3_excess_jy": 0.010930531491898715, + "W3_frac_200": 0.00647122992102248, + "W3_frac_300": 0.004426918097850474, + "W3_frac_600": 0.008554908166295927, + "W4_excess_jy": 0.006054461852180618, + "W4_frac_200": 0.0014195550652456555, + "W4_frac_300": 0.002245797218104514, + "W4_frac_600": 0.009104753177630973 + }, + { + "hip": "61597", + "name": "HD 110010", + "gaia": "1717627794711189760", + "sptype": "G0", + "d_pc": 34.92961682210346, + "m1": 1.16, + "m2": 0.48284124211269897, + "snr": 29.6, + "ruwe": 15.625, + "dms": "0", + "ks": 5.601, + "e_ks": 0.017, + "g_ks": 1.2670000000000003, + "L2": 0.0543522383345945, + "qph": "AAAA", + "ccf": "hhh0", + "W3": 5.652, + "W3_err": 0.011, + "ks_W3": -0.051000000000000156, + "W3_allsky": 5.629, + "ks_W3_allsky": -0.02799999999999958, + "W3_pred_200": 2.890841792528049, + "W3_pred_300": 4.225807094518702, + "W3_pred_600": 2.1867332227424234, + "W4": 5.539, + "W4_err": 0.034, + "ks_W4": 0.06200000000000028, + "W4_allsky": 5.54, + "ks_W4_allsky": 0.06099999999999994, + "W4_pred_200": 7.299501106280801, + "W4_pred_300": 4.613971237319858, + "W4_pred_600": 1.1380916722317285, + "W3_excess_mag": -0.04300000000000015, + "W3_excess_sig": -1.1880447725904102, + "W3_excess_err": 0.03619392214170771, + "W3_excess_mag_allsky": -0.02099999999999902, + "W4_excess_mag": 0.013000000000000789, + "W4_excess_sig": 0.26845526680844656, + "W4_excess_err": 0.04842520005121301, + "W4_excess_mag_allsky": 0.024999999999999467, + "W3_excess_jy": 0.01827396616031703, + "W3_frac_200": 0.006321330419239718, + "W3_frac_300": 0.004324373013623884, + "W3_frac_600": 0.008356742363569756, + "W4_excess_jy": 0.007288019072309454, + "W4_frac_200": 0.0009984270111334777, + "W4_frac_300": 0.0015795545090009889, + "W4_frac_600": 0.006403718830503427 + }, + { + "hip": "63490", + "name": "HD 112935", + "gaia": "6180149633308111616", + "sptype": "F3V", + "d_pc": 39.27729772191673, + "m1": 1.5, + "m2": 0.9567093368462252, + "snr": 18.12, + "ruwe": 13.653, + "dms": "1", + "ks": 5.032, + "e_ks": 0.024, + "g_ks": 0.8875000000000002, + "L2": 0.8377608277376136, + "qph": "BBAA", + "ccf": "0h00", + "W3": 4.998, + "W3_err": 0.014, + "ks_W3": 0.03399999999999981, + "W3_allsky": 4.996, + "ks_W3_allsky": 0.03599999999999959, + "W3_pred_200": 35.23963340991231, + "W3_pred_300": 51.51298602944935, + "W3_pred_600": 26.656483704468044, + "W4": 4.916, + "W4_err": 0.028, + "ks_W4": 0.11599999999999966, + "W4_allsky": 4.923, + "ks_W4_allsky": 0.10899999999999999, + "W4_pred_200": 88.98160519384042, + "W4_pred_300": 56.24474344714722, + "W4_pred_600": 13.873444551681066, + "W3_excess_mag": 0.03300000000000036, + "W3_excess_sig": 0.5484224181294208, + "W3_excess_err": 0.060172594899672346, + "W3_excess_mag_allsky": 0.02999999999999936, + "W4_excess_mag": 0.058999999999999275, + "W4_excess_sig": 0.7873299167753439, + "W4_excess_err": 0.07493681967737838, + "W4_excess_mag_allsky": 0.04999999999999982, + "W3_excess_jy": 0.05739872603018828, + "W3_frac_200": 0.0016288116667536898, + "W3_frac_300": 0.0011142574029269848, + "W3_frac_600": 0.0021532744778549827, + "W4_excess_jy": 0.020787004866805257, + "W4_frac_200": 0.00023361013572998789, + "W4_frac_300": 0.0003695812904958604, + "W4_frac_600": 0.0014983304823376732 + }, + { + "hip": "64006", + "name": "HD 113870", + "gaia": "6179271776352879872", + "sptype": "F6V", + "d_pc": 39.89467804994814, + "m1": 1.16, + "m2": 0.4730948767146826, + "snr": 14.86, + "ruwe": 20.815, + "dms": "0", + "ks": 6.094, + "e_ks": 0.027, + "g_ks": 1.104, + "L2": 0.05009483839048615, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.042, + "W3_err": 0.015, + "ks_W3": 0.05200000000000049, + "W3_allsky": 6.04, + "ks_W3_allsky": 0.05400000000000027, + "W3_pred_200": 2.0424789256747298, + "W3_pred_300": 2.9856777208735688, + "W3_pred_600": 1.545002059631338, + "W4": 5.946, + "W4_err": 0.049, + "ks_W4": 0.14800000000000058, + "W4_allsky": 5.967, + "ks_W4_allsky": 0.12700000000000067, + "W4_pred_200": 5.157348014012169, + "W4_pred_300": 3.2599290076175027, + "W4_pred_600": 0.8041008200543591, + "W3_excess_mag": 0.0730000000000004, + "W3_excess_sig": 1.6250809726598523, + "W3_excess_err": 0.044920838547827927, + "W3_excess_mag_allsky": 0.06799999999999962, + "W4_excess_mag": 0.10800000000000054, + "W4_excess_sig": 1.6676913098965636, + "W4_excess_err": 0.06476018634809526, + "W4_excess_mag_allsky": 0.08500000000000085, + "W3_excess_jy": 0.016031676837793808, + "W3_frac_200": 0.007849127173979417, + "W3_frac_300": 0.0053695269002788275, + "W3_frac_600": 0.010376476029824335, + "W4_excess_jy": 0.006856500069739112, + "W4_frac_200": 0.0013294623614909175, + "W4_frac_300": 0.0021032666827153204, + "W4_frac_600": 0.008526915902505355 + }, + { + "hip": "64185", + "name": "HD 238197", + "gaia": "1566676083851443584", + "sptype": "K2", + "d_pc": 44.14231482298932, + "m1": 0.8, + "m2": 0.32655574329161774, + "snr": 15.03, + "ruwe": 13.093, + "dms": "0", + "ks": 7.2, + "e_ks": 0.02, + "g_ks": 2.2665999999999995, + "L2": 0.017531928326918533, + "qph": "AAAA", + "ccf": "0000", + "W3": 7.091, + "W3_err": 0.017, + "ks_W3": 0.10899999999999999, + "W3_allsky": 7.094, + "ks_W3_allsky": 0.10599999999999987, + "W3_pred_200": 0.5838671112619148, + "W3_pred_300": 0.8534918055370545, + "W3_pred_600": 0.4416573792322771, + "W4": 7.099, + "W4_err": 0.087, + "ks_W4": 0.10099999999999998, + "W4_allsky": 7.177, + "ks_W4_allsky": 0.023000000000000576, + "W4_pred_200": 1.4742898195235534, + "W4_pred_300": 0.931889826950248, + "W4_pred_600": 0.22986186886279905, + "W3_excess_mag": 0.055000000000000604, + "W3_excess_sig": 0.7977474822334538, + "W3_excess_err": 0.0689441223255473, + "W3_excess_mag_allsky": 0.051000000000000156, + "W4_excess_mag": 0.02799999999999958, + "W4_excess_sig": 0.2946082261790947, + "W4_excess_err": 0.09504147376719262, + "W4_excess_mag_allsky": -0.047999999999999154, + "W3_excess_jy": 0.009687686156535983, + "W3_frac_200": 0.016592279252718892, + "W3_frac_300": 0.01135064928999531, + "W3_frac_600": 0.021934844999931542, + "W4_excess_jy": 0.00363366010124402, + "W4_frac_200": 0.002464685066073583, + "W4_frac_300": 0.0038992378671368574, + "W4_frac_600": 0.01580801600204902 + }, + { + "hip": "64872", + "name": "HD 115638", + "gaia": "1550827242214051840", + "sptype": "K0III", + "d_pc": 38.728166995856085, + "m1": 0.94, + "m2": 0.3102036140782955, + "snr": 7.55, + "ruwe": 10.889, + "dms": "0", + "ks": 6.662, + "e_ks": 0.021, + "g_ks": 1.8169999999999993, + "L2": 0.01557813986238931, + "qph": "AAAA", + "ccf": "HH00", + "W3": 6.623, + "W3_err": 0.024, + "ks_W3": 0.0389999999999997, + "W3_allsky": 6.653, + "ks_W3_allsky": 0.009000000000000341, + "W3_pred_200": 0.6739943371871857, + "W3_pred_300": 0.9852389913251899, + "W3_pred_600": 0.5098327459070654, + "W4": 6.655, + "W4_err": 0.069, + "ks_W4": 0.006999999999999673, + "W4_allsky": 6.641, + "ks_W4_allsky": 0.020999999999999908, + "W4_pred_200": 1.7018649801732868, + "W4_pred_300": 1.075738732550499, + "W4_pred_600": 0.2653439369344654, + "W3_excess_mag": 0.005999999999999339, + "W3_excess_sig": 0.13703774196549123, + "W3_excess_err": 0.043783558557979274, + "W3_excess_mag_allsky": -0.022999999999999687, + "W4_excess_mag": -0.06099999999999994, + "W4_excess_sig": -0.5719078524823763, + "W4_excess_err": 0.10666053934253279, + "W4_excess_mag_allsky": -0.0389999999999997, + "W3_excess_jy": 0.009135784565371946, + "W3_frac_200": 0.013554690390276531, + "W3_frac_300": 0.009272658355800467, + "W3_frac_600": 0.017919179650020475, + "W4_excess_jy": 0.006242085485053436, + "W4_frac_200": 0.003667791251229493, + "W4_frac_300": 0.005802603639876293, + "W4_frac_600": 0.023524507690541676 + }, + { + "hip": "66229", + "name": "HD 117987", + "gaia": "6188826566757373696", + "sptype": "K3V", + "d_pc": 36.90717844620779, + "m1": 0.85, + "m2": 0.49892608608493944, + "snr": 8.14, + "ruwe": 15.009, + "dms": "0", + "ks": 6.776, + "e_ks": 0.021, + "g_ks": 2.182500000000001, + "L2": 0.061964770503374525, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.708, + "W3_err": 0.015, + "ks_W3": 0.06799999999999962, + "W3_allsky": 6.708, + "ks_W3_allsky": 0.06799999999999962, + "W3_pred_200": 2.9520090860527826, + "W3_pred_300": 4.3152209059550195, + "W3_pred_600": 2.2330022898499675, + "W4": 6.704, + "W4_err": 0.068, + "ks_W4": 0.07200000000000006, + "W4_allsky": 6.72, + "ks_W4_allsky": 0.05600000000000005, + "W4_pred_200": 7.45395117957988, + "W4_pred_300": 4.711598210098959, + "W4_pred_600": 1.1621725429156187, + "W3_excess_mag": 0.009999999999998899, + "W3_excess_sig": 0.1483566326333114, + "W3_excess_err": 0.06740514274623365, + "W3_excess_mag_allsky": 0.0129999999999999, + "W4_excess_mag": -0.028999999999999915, + "W4_excess_sig": -0.2735426620542832, + "W4_excess_err": 0.10601636973996037, + "W4_excess_mag_allsky": -0.03799999999999995, + "W3_excess_jy": 0.01344817913527584, + "W3_frac_200": 0.004555602216407061, + "W3_frac_300": 0.0031164520724112424, + "W3_frac_600": 0.006022465447708701, + "W4_excess_jy": 0.005925069700442435, + "W4_frac_200": 0.0007948897916951992, + "W4_frac_300": 0.0012575498665702203, + "W4_frac_600": 0.005098270249594628 + }, + { + "hip": "66290", + "name": "HD 118244", + "gaia": "1442169070750037760", + "sptype": "F5V", + "d_pc": 34.133187698399155, + "m1": 1.16, + "m2": 0.32537205150968435, + "snr": 14.14, + "ruwe": 37.428, + "dms": "0", + "ks": null, + "e_ks": 9.998, + "g_ks": null, + "L2": 0.017386109113946075, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.631, + "W3_err": 0.015, + "ks_W3": null, + "W3_allsky": 5.635, + "ks_W3_allsky": null, + "W3_pred_200": 0.9683742590054332, + "W3_pred_300": 1.415560970659637, + "W3_pred_600": 0.7325119519473706, + "W4": 5.589, + "W4_err": 0.038, + "ks_W4": null, + "W4_allsky": 5.592, + "ks_W4_allsky": null, + "W4_pred_200": 2.4451870708297934, + "W4_pred_300": 1.5455882053319407, + "W4_pred_600": 0.3812379780264163 + }, + { + "hip": "66618", + "name": "HD 118475", + "gaia": "5850562123751996928", + "sptype": "F9VFe+0.3", + "d_pc": 33.73022565520964, + "m1": 1.16, + "m2": 0.6102885726013537, + "snr": 20.74, + "ruwe": 23.209, + "dms": "0", + "ks": 5.557, + "e_ks": 0.02, + "g_ks": 1.2883999999999993, + "L2": 0.13872059796701208, + "qph": "BAAA", + "ccf": "0h00", + "W3": 5.555, + "W3_err": 0.015, + "ks_W3": 0.002000000000000668, + "W3_allsky": 5.554, + "ks_W3_allsky": 0.0030000000000001137, + "W3_pred_200": 7.912195190236096, + "W3_pred_300": 11.565977306173192, + "W3_pred_600": 5.985059484068673, + "W4": 5.493, + "W4_err": 0.038, + "ks_W4": 0.06400000000000006, + "W4_allsky": 5.525, + "ks_W4_allsky": 0.03200000000000003, + "W4_pred_200": 19.978636566524468, + "W4_pred_300": 12.628377355747547, + "W4_pred_600": 3.1149416333866244, + "W3_excess_mag": 0.020000000000000462, + "W3_excess_sig": 0.5121475197315958, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": 0.016000000000000014, + "W4_excess_mag": 0.020000000000000462, + "W4_excess_sig": 0.3647354598119205, + "W4_excess_err": 0.054834262646998075, + "W4_excess_mag_allsky": -0.005999999999999339, + "W3_excess_jy": 0.021645926732141392, + "W3_frac_200": 0.0027357675350139447, + "W3_frac_300": 0.001871517309703535, + "W3_frac_600": 0.0036166602503717115, + "W4_excess_jy": 0.008688142228098016, + "W4_frac_200": 0.00043487162896068565, + "W4_frac_300": 0.0006879856361073804, + "W4_frac_600": 0.0027891829930219592 + }, + { + "hip": "68552", + "name": "HD 122391", + "gaia": "6289569349715912704", + "sptype": "K0/1V", + "d_pc": 39.86763943706893, + "m1": 0.81, + "m2": 0.43872008553127717, + "snr": 8.49, + "ruwe": 21.552, + "dms": "0", + "ks": 7.122, + "e_ks": 0.016, + "g_ks": 2.0919000000000008, + "L2": 0.03704674628712572, + "qph": "AAAA", + "ccf": "0000", + "W3": 7.06, + "W3_err": 0.016, + "ks_W3": 0.06200000000000028, + "W3_allsky": 7.062, + "ks_W3_allsky": 0.05999999999999961, + "W3_pred_200": 1.5125284804796724, + "W3_pred_300": 2.211000823356394, + "W3_pred_600": 1.1441291208525806, + "W4": 6.956, + "W4_err": 0.086, + "ks_W4": 0.16599999999999948, + "W4_allsky": 6.986, + "ks_W4_allsky": 0.13600000000000012, + "W4_pred_200": 3.819200118484333, + "W4_pred_300": 2.4140936811548483, + "W4_pred_600": 0.5954653319654204, + "W3_excess_mag": 0.017000000000000348, + "W3_excess_sig": 0.22765167088569904, + "W3_excess_err": 0.07467548968061749, + "W3_excess_mag_allsky": -8.881784197001252e-16, + "W4_excess_mag": 0.053999999999999826, + "W4_excess_sig": 0.4631199126899207, + "W4_excess_err": 0.11660047110985534, + "W4_excess_mag_allsky": 0.05600000000000005, + "W3_excess_jy": 0.010885624745852196, + "W3_frac_200": 0.007196971750508796, + "W3_frac_300": 0.004923392443304183, + "W3_frac_600": 0.009514332383866307, + "W4_excess_jy": 0.005246821729474697, + "W4_frac_200": 0.0013738012061952182, + "W4_frac_300": 0.002173412643607408, + "W4_frac_600": 0.008811296725128892 + }, + { + "hip": "69488", + "name": "HD 124754", + "gaia": "1609586552350380928", + "sptype": "K0", + "d_pc": 41.467965996267885, + "m1": 0.8, + "m2": 0.3128000992773753, + "snr": 13.73, + "ruwe": 19.935, + "dms": "1", + "ks": 6.774, + "e_ks": 0.017, + "g_ks": 2.1169000000000002, + "L2": 0.015879677025832643, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.729, + "W3_err": 0.015, + "ks_W3": 0.04499999999999993, + "W3_allsky": 6.727, + "ks_W3_allsky": 0.04699999999999971, + "W3_pred_200": 0.5992537097679622, + "W3_pred_300": 0.8759837998396917, + "W3_pred_600": 0.4532963372081645, + "W4": 6.595, + "W4_err": 0.052, + "ks_W4": 0.17900000000000027, + "W4_allsky": 6.653, + "ks_W4_allsky": 0.12100000000000044, + "W4_pred_200": 1.5131416491557006, + "W4_pred_300": 0.9564478373991726, + "W4_pred_600": 0.23591939842701365, + "W3_excess_mag": -0.013000000000000789, + "W3_excess_sig": -0.16769996304489354, + "W3_excess_err": 0.07751939692747975, + "W3_excess_mag_allsky": -0.013000000000000789, + "W4_excess_mag": 0.08000000000000007, + "W4_excess_sig": 0.7219233412604688, + "W4_excess_err": 0.11081508995168533, + "W4_excess_mag_allsky": 0.038000000000000256, + "W3_excess_jy": 0.015390465759886332, + "W3_frac_200": 0.02568272087267627, + "W3_frac_300": 0.01756934975590056, + "W3_frac_600": 0.033952327642168136, + "W4_excess_jy": 0.006895126016357623, + "W4_frac_200": 0.004556827855610841, + "W4_frac_300": 0.00720909781667471, + "W4_frac_600": 0.029226617490255968 + }, + { + "hip": "70663", + "name": "HD 126504", + "gaia": "6093066628770287104", + "sptype": "A1mA5/7-F2", + "d_pc": 48.45900368288428, + "m1": 1.7, + "m2": 0.44810370667353977, + "snr": 5.57, + "ruwe": 7.333, + "dms": "0", + "ks": 5.108, + "e_ks": 0.016, + "g_ks": 0.6721000000000004, + "L2": 0.04031940787433464, + "qph": "BAAA", + "ccf": "hh00", + "W3": 5.147, + "W3_err": 0.015, + "ks_W3": -0.03900000000000059, + "W3_allsky": 5.14, + "ks_W3_allsky": -0.03200000000000003, + "W3_pred_200": 1.1141911832888174, + "W3_pred_300": 1.6287148674693128, + "W3_pred_600": 0.8428129423345849, + "W4": 5.134, + "W4_err": 0.036, + "ks_W4": -0.02600000000000069, + "W4_allsky": 5.132, + "ks_W4_allsky": -0.02400000000000002, + "W4_pred_200": 2.8133811390324044, + "W4_pred_300": 1.7783214861005239, + "W4_pred_600": 0.43864444960376203, + "W3_excess_mag": -0.040000000000000036, + "W3_excess_sig": -0.6931939328601285, + "W3_excess_err": 0.05770390954658163, + "W3_excess_mag_allsky": -0.03300000000000036, + "W4_excess_mag": -0.11100000000000065, + "W4_excess_sig": -1.4326268574360341, + "W4_excess_err": 0.0774800496192406, + "W4_excess_mag_allsky": -0.09200000000000053, + "W3_excess_jy": 0.04781755373686821, + "W3_frac_200": 0.04291683012220811, + "W3_frac_300": 0.02935906995873798, + "W3_frac_600": 0.05673566616622424, + "W4_excess_jy": 0.01764680155380086, + "W4_frac_200": 0.006272453209048689, + "W4_frac_300": 0.009923290975073632, + "W4_frac_600": 0.040230308555691596 + }, + { + "hip": "71572", + "name": "HD 128731", + "gaia": "1179916752747453952", + "sptype": "G5", + "d_pc": 49.05086574778045, + "m1": 1.11, + "m2": 0.40907051557413826, + "snr": 11.65, + "ruwe": 15.053, + "dms": "0", + "ks": 6.538, + "e_ks": 0.016, + "g_ks": 1.561399999999999, + "L2": 0.0294349732686465, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.546, + "W3_err": 0.016, + "ks_W3": -0.008000000000000007, + "W3_allsky": 6.546, + "ks_W3_allsky": -0.008000000000000007, + "W3_pred_200": 0.7938982145050802, + "W3_pred_300": 1.1605134241011037, + "W3_pred_600": 0.6005322067853376, + "W4": 6.438, + "W4_err": 0.052, + "ks_W4": 0.10000000000000053, + "W4_allsky": 6.474, + "ks_W4_allsky": 0.06400000000000006, + "W4_pred_200": 2.0046274791075263, + "W4_pred_300": 1.2671131075224658, + "W4_pred_600": 0.31254873541098627, + "W3_excess_mag": -0.03200000000000003, + "W3_excess_sig": -0.85159407265976, + "W3_excess_err": 0.03757658845611187, + "W3_excess_mag_allsky": -0.03500000000000014, + "W4_excess_mag": 0.018000000000000682, + "W4_excess_sig": 0.266486382181906, + "W4_excess_err": 0.06754566538305781, + "W4_excess_mag_allsky": -0.0129999999999999, + "W3_excess_jy": 0.008343690884403059, + "W3_frac_200": 0.01050977408937058, + "W3_frac_300": 0.007189654777897819, + "W3_frac_600": 0.013893827491895936, + "W4_excess_jy": 0.00456366811221623, + "W4_frac_200": 0.002276566673748285, + "W4_frac_300": 0.0036016264729037354, + "W4_frac_600": 0.014601460812872048 + }, + { + "hip": "72603", + "name": "alf01 Lib", + "gaia": "6309706875115188224", + "sptype": "F3V", + "d_pc": 23.915435021763045, + "m1": 1.4, + "m2": 0.367393109768321, + "snr": 68.83, + "ruwe": 3.567, + "dms": "0", + "ks": 4.297, + "e_ks": 0.28, + "g_ks": 0.7366000000000001, + "L2": 0.022989480229689135, + "qph": "BBAA", + "ccf": "hh00", + "W3": 4.129, + "W3_err": 0.013, + "ks_W3": 0.16800000000000015, + "W3_allsky": 4.128, + "ks_W3_allsky": 0.1689999999999996, + "W3_pred_200": 2.608357503198562, + "W3_pred_300": 3.8128740460813804, + "W3_pred_600": 1.9730522866302558, + "W4": 4.079, + "W4_err": 0.026, + "ks_W4": 0.21799999999999997, + "W4_allsky": 4.087, + "ks_W4_allsky": 0.20999999999999996, + "W4_pred_200": 6.586216004412838, + "W4_pred_300": 4.163107966514164, + "W4_pred_600": 1.026880806921441, + "W3_excess_mag": 0.17900000000000027, + "W3_excess_sig": 0.6212426348114874, + "W3_excess_err": 0.28813218856802514, + "W3_excess_mag_allsky": 0.1769999999999996, + "W4_excess_mag": 0.17200000000000015, + "W4_excess_sig": 0.5882768969781478, + "W4_excess_err": 0.2923793215125857, + "W4_excess_mag_allsky": 0.16400000000000015, + "W3_excess_jy": 0.8597666934148046, + "W3_frac_200": 0.32961995905871594, + "W3_frac_300": 0.2254904523527117, + "W3_frac_600": 0.4357546423076229, + "W4_excess_jy": 0.242817499817063, + "W4_frac_200": 0.03686752752329601, + "W4_frac_300": 0.05832601550816322, + "W4_frac_600": 0.23646123111894832 + }, + { + "hip": "73012", + "name": "HD 131588", + "gaia": "6218244378325611264", + "sptype": "G1V", + "d_pc": 45.04707419253119, + "m1": 1.0, + "m2": 0.3535038231335376, + "snr": 6.52, + "ruwe": 11.432, + "dms": "0", + "ks": 6.744, + "e_ks": 0.016, + "g_ks": 1.5044000000000004, + "L2": 0.021039446029067828, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.74, + "W3_err": 0.017, + "ks_W3": 0.0039999999999995595, + "W3_allsky": 6.747, + "ks_W3_allsky": -0.0030000000000001137, + "W3_pred_200": 0.6728149866754796, + "W3_pred_300": 0.9835150271248061, + "W3_pred_600": 0.5089406441836603, + "W4": 6.722, + "W4_err": 0.074, + "ks_W4": 0.021999999999999353, + "W4_allsky": 6.734, + "ks_W4_allsky": 0.009999999999999787, + "W4_pred_200": 1.6988870688994349, + "W4_pred_300": 1.073856412544681, + "W4_pred_600": 0.26487963999525416, + "W3_excess_mag": -0.004999999999999893, + "W3_excess_sig": -0.13153341044116132, + "W3_excess_err": 0.03801315561749642, + "W3_excess_mag_allsky": -0.016000000000000014, + "W4_excess_mag": -0.04500000000000082, + "W4_excess_sig": -0.499207631185905, + "W4_excess_err": 0.09014285277069975, + "W4_excess_mag_allsky": -0.05900000000000016, + "W3_excess_jy": 0.007063846931574325, + "W3_frac_200": 0.010498944095282835, + "W3_frac_300": 0.007182246063107622, + "W3_frac_600": 0.013879510336425814, + "W4_excess_jy": 0.004842817166336675, + "W4_frac_200": 0.002850582157573267, + "W4_frac_300": 0.004509743676867204, + "W4_frac_600": 0.018283085730648997 + }, + { + "hip": "73593", + "name": "HD 133161", + "gaia": "1186966374628267648", + "sptype": "G2V", + "d_pc": 38.4571011037188, + "m1": 1.24, + "m2": 0.46702368338154016, + "snr": 20.06, + "ruwe": 3.549, + "dms": "0", + "ks": 5.582, + "e_ks": 0.02, + "g_ks": 1.3064999999999998, + "L2": 0.04757246103375874, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.621, + "W3_err": 0.014, + "ks_W3": -0.03900000000000059, + "W3_allsky": 5.618, + "ks_W3_allsky": -0.036000000000000476, + "W3_pred_200": 2.087358595635674, + "W3_pred_300": 3.051282427506361, + "W3_pred_600": 1.5789506020880628, + "W4": 5.566, + "W4_err": 0.035, + "ks_W4": 0.016000000000000014, + "W4_allsky": 5.572, + "ks_W4_allsky": 0.009999999999999787, + "W4_pred_200": 5.270671130267157, + "W4_pred_300": 3.331559875441342, + "W4_pred_600": 0.821769437813753, + "W3_excess_mag": -0.031000000000000583, + "W3_excess_sig": -0.8014859194922948, + "W3_excess_err": 0.038678159211627434, + "W3_excess_mag_allsky": -0.03500000000000014, + "W4_excess_mag": -0.04600000000000026, + "W4_excess_sig": -0.6306691351030687, + "W4_excess_err": 0.07293840373602967, + "W4_excess_mag_allsky": -0.02799999999999958, + "W3_excess_jy": 0.0201641165856068, + "W3_frac_200": 0.009660111409590414, + "W3_frac_300": 0.006608407141808168, + "W3_frac_600": 0.0127705810168735, + "W4_excess_jy": 0.011086974950750802, + "W4_frac_200": 0.0021035224313433556, + "W4_frac_300": 0.00332786303271289, + "W4_frac_600": 0.013491588322202328 + }, + { + "hip": "73934", + "name": "HD 134043", + "gaia": "1295779817749391104", + "sptype": "K0", + "d_pc": 33.6123155524184, + "m1": 0.9, + "m2": 0.3108050058707294, + "snr": 11.89, + "ruwe": 34.782, + "dms": "0", + "ks": 6.437, + "e_ks": 0.018, + "g_ks": 1.8747999999999996, + "L2": 0.015647690500336753, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.415, + "W3_err": 0.015, + "ks_W3": 0.02200000000000024, + "W3_allsky": 6.447, + "ks_W3_allsky": -0.009999999999999787, + "W3_pred_200": 0.8987686534727685, + "W3_pred_300": 1.3138121089825754, + "W3_pred_600": 0.6798598523060844, + "W4": 6.384, + "W4_err": 0.043, + "ks_W4": 0.052999999999999936, + "W4_allsky": 6.405, + "ks_W4_allsky": 0.03200000000000003, + "W4_pred_200": 2.269429893144636, + "W4_pred_300": 1.434493138589083, + "W4_pred_600": 0.35383503947677797, + "W3_excess_mag": -0.008999999999999453, + "W3_excess_sig": -0.18380348605725713, + "W3_excess_err": 0.04896533897728054, + "W3_excess_mag_allsky": -0.03599999999999959, + "W4_excess_mag": -0.01499999999999968, + "W4_excess_sig": -0.14742671309228778, + "W4_excess_err": 0.10174546854754753, + "W4_excess_mag_allsky": -0.02400000000000002, + "W3_excess_jy": 0.01246519298738091, + "W3_frac_200": 0.013869189740003087, + "W3_frac_300": 0.009487804916818764, + "W3_frac_600": 0.018334944981820856, + "W4_excess_jy": 0.007588407576919318, + "W4_frac_200": 0.003343750604432393, + "W4_frac_300": 0.0052899573882821144, + "W4_frac_600": 0.0214461733019444 + }, + { + "hip": "74782", + "name": "HD 135549", + "gaia": "6007104988639551488", + "sptype": "F3V", + "d_pc": 46.68534080298786, + "m1": 1.4, + "m2": 0.34738490029305924, + "snr": 9.8, + "ruwe": 3.653, + "dms": "0", + "ks": 5.789, + "e_ks": 0.023, + "g_ks": 0.9792000000000005, + "L2": 0.020211241501198574, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.794, + "W3_err": 0.015, + "ks_W3": -0.004999999999999893, + "W3_allsky": 5.796, + "ks_W3_allsky": -0.007000000000000561, + "W3_pred_200": 0.6017643535329069, + "W3_pred_300": 0.87965383680302, + "W3_pred_600": 0.4551954754264737, + "W4": 5.756, + "W4_err": 0.042, + "ks_W4": 0.032999999999999474, + "W4_allsky": 5.767, + "ks_W4_allsky": 0.021999999999999353, + "W4_pred_200": 1.5194811337262706, + "W4_pred_300": 0.9604549878937282, + "W4_pred_600": 0.23690781044188397, + "W3_excess_mag": -0.001000000000000334, + "W3_excess_sig": -0.02167869553687992, + "W3_excess_err": 0.046128236742802545, + "W3_excess_mag_allsky": -0.013000000000000789, + "W4_excess_mag": -0.020000000000000462, + "W4_excess_sig": -0.35394072520105213, + "W4_excess_err": 0.056506636778346664, + "W4_excess_mag_allsky": -0.02600000000000069, + "W3_excess_jy": 0.02072228162961709, + "W3_frac_200": 0.034435874288595444, + "W3_frac_300": 0.02355731398265635, + "W3_frac_600": 0.045523918290713096, + "W4_excess_jy": 0.007043743174321491, + "W4_frac_200": 0.004635623975829105, + "W4_frac_300": 0.007333756670646665, + "W4_frac_600": 0.0297320006511537 + }, + { + "hip": "75090", + "name": "BD+15 2847", + "gaia": "1207257552481630720", + "sptype": "K2", + "d_pc": 30.65603923973023, + "m1": 0.8, + "m2": 0.3481390265089684, + "snr": 14.77, + "ruwe": 11.023, + "dms": "1", + "ks": 6.244, + "e_ks": 0.017, + "g_ks": 2.2714, + "L2": 0.020312298511698412, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.19, + "W3_err": 0.015, + "ks_W3": 0.05399999999999938, + "W3_allsky": 6.189, + "ks_W3_allsky": 0.054999999999999716, + "W3_pred_200": 1.402560220933889, + "W3_pred_300": 2.0502501892118463, + "W3_pred_600": 1.0609453066371257, + "W4": 6.161, + "W4_err": 0.041, + "ks_W4": 0.08300000000000018, + "W4_allsky": 6.188, + "ks_W4_allsky": 0.05600000000000005, + "W4_pred_200": 3.5415254860347156, + "W4_pred_300": 2.2385771973839903, + "W4_pred_600": 0.5521720736756176, + "W3_excess_mag": -0.014000000000000234, + "W3_excess_sig": -0.220507595465991, + "W3_excess_err": 0.06348987648436565, + "W3_excess_mag_allsky": -0.006000000000000227, + "W4_excess_mag": 0.009999999999999787, + "W4_excess_sig": 0.1645477576155275, + "W4_excess_err": 0.06077263005531313, + "W4_excess_mag_allsky": -0.01499999999999968, + "W3_excess_jy": 0.02029808238006904, + "W3_frac_200": 0.014472164600927899, + "W3_frac_300": 0.009900295333162239, + "W3_frac_600": 0.01913207236328496, + "W4_excess_jy": 0.005248567313001471, + "W4_frac_200": 0.0014820074947076132, + "W4_frac_300": 0.002344599649784232, + "W4_frac_600": 0.009505311049259666 + }, + { + "hip": "75152", + "name": "14 UMi", + "gaia": "1697598231905663616", + "sptype": "F5", + "d_pc": 49.37783922575549, + "m1": 1.3, + "m2": 0.4800729306872095, + "snr": 13.25, + "ruwe": 23.243, + "dms": "0", + "ks": 6.26, + "e_ks": 0.02, + "g_ks": 1.0286, + "L2": 0.05311642955581113, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.249, + "W3_err": 0.015, + "ks_W3": 0.01100000000000012, + "W3_allsky": 6.248, + "ks_W3_allsky": 0.011999999999999567, + "W3_pred_200": 1.4137064695500676, + "W3_pred_300": 2.0665436773581916, + "W3_pred_600": 1.0693767165541068, + "W4": 6.193, + "W4_err": 0.039, + "ks_W4": 0.06700000000000017, + "W4_allsky": 6.205, + "ks_W4_allsky": 0.054999999999999716, + "W4_pred_200": 3.5696702479912403, + "W4_pred_300": 2.2563673340327646, + "W4_pred_600": 0.5565602255141185, + "W3_excess_mag": 0.016000000000000014, + "W3_excess_sig": 0.37840856545267737, + "W3_excess_err": 0.04228234099526726, + "W3_excess_mag_allsky": 0.01499999999999968, + "W4_excess_mag": 0.016000000000000014, + "W4_excess_sig": 0.30124402353524593, + "W4_excess_err": 0.05311308689955801, + "W4_excess_mag_allsky": 0.011999999999999567, + "W3_excess_jy": 0.012424394743589797, + "W3_frac_200": 0.008788525065987736, + "W3_frac_300": 0.006012161697677146, + "W3_frac_600": 0.01161835165406013, + "W4_excess_jy": 0.004405732170679233, + "W4_frac_200": 0.001234212648397557, + "W4_frac_300": 0.0019525775365684572, + "W4_frac_600": 0.007916002561285204 + }, + { + "hip": "75695", + "name": "bet CrB", + "gaia": "1273423791421021568", + "sptype": "F2VpSrCrEuSi", + "d_pc": 35.766658321113056, + "m1": 2.55, + "m2": 0.6183166757352732, + "snr": 5.02, + "ruwe": 7.296, + "dms": "0", + "ks": 3.456, + "e_ks": 0.298, + "g_ks": 0.00990000000000002, + "L2": 0.14616515032763344, + "qph": "UBAA", + "ccf": "0h00", + "W3": 3.32, + "W3_err": 0.011, + "ks_W3": 0.13600000000000012, + "W3_allsky": 3.264, + "ks_W3_allsky": 0.19200000000000017, + "W3_pred_200": 7.414496070891514, + "W3_pred_300": 10.838445112990525, + "W3_pred_600": 5.608582569277465, + "W4": 3.273, + "W4_err": 0.019, + "ks_W4": 0.18299999999999983, + "W4_allsky": 3.282, + "ks_W4_allsky": 0.17399999999999993, + "W4_pred_200": 18.72192466978877, + "W4_pred_300": 11.834017239801135, + "W4_pred_600": 2.9190031270085943, + "W3_excess_mag": 0.15399999999999991, + "W3_excess_sig": 0.49998769372302765, + "W3_excess_err": 0.30800758085319896, + "W3_excess_mag_allsky": 0.2030000000000003, + "W4_excess_mag": 0.16300000000000026, + "W4_excess_sig": 0.530400022998168, + "W4_excess_err": 0.30731522046062065, + "W4_excess_mag_allsky": 0.15600000000000014, + "W3_excess_jy": 1.9975340034785645, + "W3_frac_200": 0.2694092739924242, + "W3_frac_300": 0.18430079062580668, + "W3_frac_600": 0.3561566543426854, + "W4_excess_jy": 0.5489116558822764, + "W4_frac_200": 0.029319189429708858, + "W4_frac_300": 0.04638421972516077, + "W4_frac_600": 0.18804764229382762 + }, + { + "hip": "76203", + "name": "HD 138648", + "gaia": "6255498752849053568", + "sptype": "G9IV-V", + "d_pc": 37.91325447376403, + "m1": 0.9, + "m2": 0.4219097530475291, + "snr": 8.27, + "ruwe": 8.656, + "dms": "", + "ks": 6.04, + "e_ks": 0.016, + "g_ks": 2.0705, + "L2": 0.03160332920616355, + "qph": "BAAA", + "ccf": "0000", + "W3": 6.032, + "W3_err": 0.016, + "ks_W3": 0.008000000000000007, + "W3_allsky": 6.019, + "ks_W3_allsky": 0.020999999999999908, + "W3_pred_200": 1.4267413133173172, + "W3_pred_300": 2.085597897277788, + "W3_pred_600": 1.0792367254943314, + "W4": 6.022, + "W4_err": 0.051, + "ks_W4": 0.017999999999999794, + "W4_allsky": 6.009, + "ks_W4_allsky": 0.030999999999999694, + "W4_pred_200": 3.6025837947460873, + "W4_pred_300": 2.2771717911914027, + "W4_pred_600": 0.56169189587349, + "W3_excess_mag": -0.05000000000000071, + "W3_excess_sig": -0.7241414816575269, + "W3_excess_err": 0.06904728049213944, + "W3_excess_mag_allsky": -0.03900000000000059, + "W4_excess_mag": -0.11000000000000032, + "W4_excess_sig": -1.1879392372060307, + "W4_excess_err": 0.09259732868047563, + "W4_excess_mag_allsky": -0.07600000000000051, + "W3_excess_jy": 0.025735538024683702, + "W3_frac_200": 0.018037984730985314, + "W3_frac_300": 0.012339645172386697, + "W3_frac_600": 0.023846054731778935, + "W4_excess_jy": 0.009512612801694926, + "W4_frac_200": 0.00264049730517521, + "W4_frac_300": 0.004177380397250566, + "W4_frac_600": 0.016935641891186293 + }, + { + "hip": "76568", + "name": "HD 139798", + "gaia": "1401050531326713984", + "sptype": "F2V", + "d_pc": 36.07373471375492, + "m1": 1.54, + "m2": 0.5035558482965339, + "snr": 32.39, + "ruwe": 4.952, + "dms": "0", + "ks": 4.754, + "e_ks": 0.016, + "g_ks": 0.9184000000000001, + "L2": 0.06429698031449892, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.787, + "W3_err": 0.015, + "ks_W3": -0.03300000000000036, + "W3_allsky": 4.778, + "ks_W3_allsky": -0.02400000000000002, + "W3_pred_200": 3.206290706604249, + "W3_pred_300": 4.686927541340419, + "W3_pred_600": 2.4253497469228127, + "W4": 4.709, + "W4_err": 0.026, + "ks_W4": 0.04499999999999993, + "W4_allsky": 4.713, + "ks_W4_allsky": 0.04099999999999948, + "W4_pred_200": 8.096023317640093, + "W4_pred_300": 5.117448190003096, + "W4_pred_600": 1.2622803369495963, + "W3_excess_mag": -0.04100000000000037, + "W3_excess_sig": -0.8494596723587462, + "W3_excess_err": 0.048265975812781296, + "W3_excess_mag_allsky": -0.03000000000000025, + "W4_excess_mag": -0.016000000000000014, + "W4_excess_sig": -0.1995754664886009, + "W4_excess_err": 0.08017017462872313, + "W4_excess_mag_allsky": -0.027000000000001023, + "W3_excess_jy": 0.05498222650254134, + "W3_frac_200": 0.017148234996062623, + "W3_frac_300": 0.01173097429341033, + "W3_frac_600": 0.022669813527842985, + "W4_excess_jy": 0.027112000349834884, + "W4_frac_200": 0.003348804627422658, + "W4_frac_300": 0.005297953070203624, + "W4_frac_600": 0.021478588833407048 + }, + { + "hip": "78400", + "name": "49 Lib", + "gaia": "6250364583302109312", + "sptype": "F8V", + "d_pc": 28.331019633396608, + "m1": 1.4, + "m2": 0.6195862806304113, + "snr": 10.8, + "ruwe": 4.327, + "dms": "0", + "ks": 4.248, + "e_ks": 0.016, + "g_ks": 1.0838999999999999, + "L2": 0.14736935095674625, + "qph": "AAAA", + "ccf": "ddd0", + "W3": 5.623, + "W3_err": 0.013, + "ks_W3": -1.375, + "W3_allsky": 4.234, + "ks_W3_allsky": 0.014000000000000234, + "W3_pred_200": 11.914540402534692, + "W3_pred_300": 17.41657031910102, + "W3_pred_600": 9.012572531388953, + "W4": 4.821, + "W4_err": 0.032, + "ks_W4": -0.5729999999999995, + "W4_allsky": 4.183, + "ks_W4_allsky": 0.06500000000000039, + "W4_pred_200": 30.08473209219575, + "W4_pred_300": 19.016380234044593, + "W4_pred_600": 4.690619613166406, + "W3_excess_mag": -1.3730000000000002, + "W3_excess_sig": -35.58282592484492, + "W3_excess_err": 0.0385860303197935, + "W3_excess_mag_allsky": 0.017999999999999794, + "W4_excess_mag": -0.6269999999999989, + "W4_excess_sig": -11.20965414784512, + "W4_excess_err": 0.05593392906957168, + "W4_excess_mag_allsky": 0.023000000000000576, + "W3_excess_jy": 0.020076464891947712, + "W3_frac_200": 0.0016850389703388523, + "W3_frac_300": 0.0011527220643394725, + "W3_frac_600": 0.002227606471074211, + "W4_excess_jy": 0.016482643406348457, + "W4_frac_200": 0.0005478740297848357, + "W4_frac_300": 0.0008667602984105227, + "W4_frac_600": 0.0035139586591251717 + }, + { + "hip": "78709", + "name": "HD 144287", + "gaia": "1219254942328596736", + "sptype": "G8+V", + "d_pc": 21.6169476869866, + "m1": 1.0, + "m2": 0.3758125948623959, + "snr": 54.29, + "ruwe": 10.743, + "dms": "0", + "ks": 5.168, + "e_ks": 0.017, + "g_ks": 1.7385000000000002, + "L2": 0.02421931729489553, + "qph": "BAAA", + "ccf": "hh00", + "W3": 5.138, + "W3_err": 0.015, + "ks_W3": 0.03000000000000025, + "W3_allsky": 5.142, + "ks_W3_allsky": 0.0259999999999998, + "W3_pred_200": 3.363316108891337, + "W3_pred_300": 4.916465892667541, + "W3_pred_600": 2.5441292196989376, + "W4": 5.083, + "W4_err": 0.029, + "ks_W4": 0.08499999999999996, + "W4_allsky": 5.093, + "ks_W4_allsky": 0.07500000000000018, + "W4_pred_200": 8.492519279706016, + "W4_pred_300": 5.368070929564233, + "W4_pred_600": 1.3240994593705053, + "W3_excess_mag": -0.007000000000000561, + "W3_excess_sig": -0.1861544126432146, + "W3_excess_err": 0.03760319135392633, + "W3_excess_mag_allsky": -0.020000000000000462, + "W4_excess_mag": 0.006999999999999673, + "W4_excess_sig": 0.11097501074135022, + "W4_excess_err": 0.06307726355003104, + "W4_excess_mag_allsky": -0.009000000000000341, + "W3_excess_jy": 0.030540897850120582, + "W3_frac_200": 0.009080590958840291, + "W3_frac_300": 0.006211961705189399, + "W3_frac_600": 0.012004460156208053, + "W4_excess_jy": 0.01475121450215226, + "W4_frac_200": 0.001736965677240464, + "W4_frac_300": 0.002747954469250973, + "W4_frac_600": 0.011140563798104098 + }, + { + "hip": "78914", + "name": "del Nor", + "gaia": "5991049095268550016", + "sptype": "kA3hA7mF0III:", + "d_pc": 32.15951117543013, + "m1": 1.8, + "m2": 0.5167482841242114, + "snr": 22.46, + "ruwe": 2.602, + "dms": "0", + "ks": 4.267, + "e_ks": 0.316, + "g_ks": 0.4119999999999999, + "L2": 0.071304374232414, + "qph": "BBAA", + "ccf": "HHH0", + "W3": 4.317, + "W3_err": 0.016, + "ks_W3": -0.04999999999999982, + "W3_allsky": 4.315, + "ks_W3_allsky": -0.04800000000000004, + "W3_pred_200": 4.473957237860844, + "W3_pred_300": 6.539991321971389, + "W3_pred_600": 3.384256777540106, + "W4": 4.296, + "W4_err": 0.023, + "ks_W4": -0.028999999999999915, + "W4_allsky": 4.296, + "ks_W4_allsky": -0.028999999999999915, + "W4_pred_200": 11.296936377365371, + "W4_pred_300": 7.14072629842425, + "W4_pred_600": 1.7613462927964398, + "W3_excess_mag": -0.05099999999999927, + "W3_excess_sig": -0.15516997744649852, + "W3_excess_err": 0.32867182711026494, + "W3_excess_mag_allsky": -0.0519999999999996, + "W4_excess_mag": -0.06899999999999995, + "W4_excess_sig": -0.2080807249583646, + "W4_excess_err": 0.3316020742132955, + "W4_excess_mag_allsky": -0.06099999999999994, + "W3_excess_jy": 0.8792014617208412, + "W3_frac_200": 0.19651539229758447, + "W3_frac_300": 0.13443465265269164, + "W3_frac_600": 0.2597915936981298, + "W4_excess_jy": 0.23989663492892813, + "W4_frac_200": 0.0212355480207525, + "W4_frac_300": 0.03359555105506093, + "W4_frac_600": 0.13620072095422586 + }, + { + "hip": "79119", + "name": "tau CrB", + "gaia": "1378163509599547520", + "sptype": "K1-III-IV", + "d_pc": 34.42222298716051, + "m1": 1.99, + "m2": 0.343929283961931, + "snr": 12.09, + "ruwe": 1.271, + "dms": "0", + "ks": 2.338, + "e_ks": 0.212, + "g_ks": 2.0736999999999997, + "L2": 0.019751809746809738, + "qph": "UUAA", + "ccf": "hh00", + "W3": 2.376, + "W3_err": 0.007, + "ks_W3": -0.03799999999999981, + "W3_allsky": 2.312, + "ks_W3_allsky": 0.026000000000000245, + "W3_pred_200": 1.0817417709108985, + "W3_pred_300": 1.581280601992039, + "W3_pred_600": 0.8182670788118316, + "W4": 2.319, + "W4_err": 0.02, + "ks_W4": 0.019000000000000128, + "W4_allsky": 2.319, + "ks_W4_allsky": 0.019000000000000128, + "W4_pred_200": 2.731444963153459, + "W4_pred_300": 1.72653011662239, + "W4_pred_600": 0.4258694834705143, + "W3_excess_mag": -0.09600000000000053, + "W3_excess_sig": -0.43258814205330576, + "W3_excess_err": 0.22192009134677324, + "W3_excess_mag_allsky": -0.03400000000000025, + "W4_excess_mag": -0.10899999999999999, + "W4_excess_sig": -0.4823704685867501, + "W4_excess_err": 0.22596739870777827, + "W4_excess_mag_allsky": -0.08800000000000008, + "W3_excess_jy": 3.0049086042139472, + "W3_frac_200": 2.7778428133394666, + "W3_frac_300": 1.900300680618275, + "W3_frac_600": 3.6722833925779326, + "W4_excess_jy": 0.8566765024159274, + "W4_frac_200": 0.3136349126459764, + "W4_frac_300": 0.49618393225126195, + "W4_frac_600": 2.011594010997599 + }, + { + "hip": "79375", + "name": "psi Sco", + "gaia": "4344947181887184000", + "sptype": "A1V", + "d_pc": 44.08976676513381, + "m1": 2.13, + "m2": 0.6159492921714063, + "snr": 8.83, + "ruwe": 5.482, + "dms": "0", + "ks": 4.632, + "e_ks": 0.016, + "g_ks": 0.28020000000000067, + "L2": 0.1439394510053292, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.687, + "W3_err": 0.015, + "ks_W3": -0.055000000000000604, + "W3_allsky": 4.693, + "ks_W3_allsky": -0.06099999999999994, + "W3_pred_200": 4.80505953221567, + "W3_pred_300": 7.023993742343365, + "W3_pred_600": 3.6347140627029755, + "W4": 4.607, + "W4_err": 0.035, + "ks_W4": 0.024999999999999467, + "W4_allsky": 4.608, + "ks_W4_allsky": 0.02400000000000002, + "W4_pred_200": 12.132984053921753, + "W4_pred_300": 7.669187062590732, + "W4_pred_600": 1.8916975160408331, + "W3_excess_mag": -0.04100000000000037, + "W3_excess_sig": -0.46960344010099353, + "W3_excess_err": 0.08730770794861055, + "W3_excess_mag_allsky": -0.06200000000000028, + "W4_excess_mag": 0.004999999999999893, + "W4_excess_sig": 0.058932664953331, + "W4_excess_err": 0.08484259118367399, + "W4_excess_mag_allsky": 0.006000000000000227, + "W3_excess_jy": 0.1152894731985183, + "W3_frac_200": 0.02399334959859633, + "W3_frac_300": 0.016413663996240276, + "W3_frac_600": 0.031718993904236485, + "W4_excess_jy": 0.031730179735007184, + "W4_frac_200": 0.002615199986581291, + "W4_frac_300": 0.004137358950309447, + "W4_frac_600": 0.016773389754941283 + }, + { + "hip": "80065", + "name": "HD 146884", + "gaia": "5990405876616295808", + "sptype": "G7V", + "d_pc": 49.433980918483364, + "m1": 1.04, + "m2": 0.3280258121175673, + "snr": 8.83, + "ruwe": 6.673, + "dms": "0", + "ks": 6.784, + "e_ks": 0.029, + "g_ks": 1.6627999999999998, + "L2": 0.017713985326503656, + "qph": "AAAB", + "ccf": "hh00", + "W3": 6.772, + "W3_err": 0.018, + "ks_W3": 0.011999999999999567, + "W3_allsky": 6.766, + "ks_W3_allsky": 0.017999999999999794, + "W3_pred_200": 0.470391692356714, + "W3_pred_300": 0.6876144367019608, + "W3_pred_600": 0.35582062776217444, + "W4": 6.904, + "W4_err": 0.121, + "ks_W4": -0.1200000000000001, + "W4_allsky": 7.003, + "ks_W4_allsky": -0.2190000000000003, + "W4_pred_200": 1.1877594573380021, + "W4_pred_300": 0.750775689080547, + "W4_pred_600": 0.18518788165505293, + "W3_excess_mag": -0.023000000000000576, + "W3_excess_sig": -0.5061366753560235, + "W3_excess_err": 0.045442271070007055, + "W3_excess_mag_allsky": -0.017000000000000348, + "W4_excess_mag": -0.19599999999999973, + "W4_excess_sig": -1.5313434686404024, + "W4_excess_err": 0.12799218726156686, + "W4_excess_mag_allsky": -0.2939999999999996, + "W3_excess_jy": 0.008285342968777747, + "W3_frac_200": 0.017613710240644915, + "W3_frac_300": 0.012049402290791258, + "W3_frac_600": 0.023285167644399623, + "W4_excess_jy": 0.006143257328055505, + "W4_frac_200": 0.005172139266163982, + "W4_frac_300": 0.008182546954309311, + "W4_frac_600": 0.03317310653997582 + }, + { + "hip": "80628", + "name": "ups Oph", + "gaia": "4350816684193728000", + "sptype": "kA2hA5VmA5", + "d_pc": 39.786743057213336, + "m1": 2.0, + "m2": 0.4896951993661522, + "snr": 26.41, + "ruwe": 2.329, + "dms": "1", + "ks": 4.165, + "e_ks": 0.036, + "g_ks": 0.40920000000000023, + "L2": 0.05750470582209708, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.162, + "W3_err": 0.013, + "ks_W3": 0.0030000000000001137, + "W3_allsky": 4.156, + "ks_W3_allsky": 0.009000000000000341, + "W3_pred_200": 2.35733411437762, + "W3_pred_300": 3.4459302651690358, + "W3_pred_600": 1.7831694693003906, + "W4": 4.147, + "W4_err": 0.025, + "ks_W4": 0.017999999999999794, + "W4_allsky": 4.147, + "ks_W4_allsky": 0.017999999999999794, + "W4_pred_200": 5.952371043012018, + "W4_pred_300": 3.7624583360473496, + "W4_pred_600": 0.9280557418172498, + "W3_excess_mag": 0.017000000000000348, + "W3_excess_sig": 0.21038333123418107, + "W3_excess_err": 0.08080488078723963, + "W3_excess_mag_allsky": 0.008000000000000007, + "W4_excess_mag": -0.02200000000000024, + "W4_excess_sig": -0.20518732009169816, + "W4_excess_err": 0.10721910101544505, + "W4_excess_mag_allsky": -0.014000000000000234, + "W3_excess_jy": 0.17144391243432022, + "W3_frac_200": 0.0727278799338059, + "W3_frac_300": 0.0497525774584734, + "W3_frac_600": 0.09614560779889564, + "W4_excess_jy": 0.06326299025197286, + "W4_frac_200": 0.010628200055882359, + "W4_frac_300": 0.016814269980311276, + "W4_frac_600": 0.0681672311278372 + }, + { + "hip": "82020", + "name": "HD 151613", + "gaia": "1430517198137007872", + "sptype": "F2V", + "d_pc": 26.77376171352075, + "m1": 1.56, + "m2": 0.47161526198726583, + "snr": 9.17, + "ruwe": 7.459, + "dms": "0", + "ks": 3.815, + "e_ks": 0.036, + "g_ks": 0.9063000000000003, + "L2": 0.04947108137405462, + "qph": "CBAA", + "ccf": "0h00", + "W3": 3.834, + "W3_err": 0.014, + "ks_W3": -0.019000000000000128, + "W3_allsky": 3.83, + "ks_W3_allsky": -0.015000000000000124, + "W3_pred_200": 4.478444015434269, + "W3_pred_300": 6.546550053947075, + "W3_pred_600": 3.387650732065124, + "W4": 3.769, + "W4_err": 0.021, + "ks_W4": 0.04599999999999982, + "W4_allsky": 3.769, + "ks_W4_allsky": 0.04599999999999982, + "W4_pred_200": 11.30826568564696, + "W4_pred_300": 7.147887486810807, + "W4_pred_600": 1.7631126863101454, + "W3_excess_mag": -0.019999999999999574, + "W3_excess_sig": -0.3149310774772708, + "W3_excess_err": 0.06350595870121142, + "W3_excess_mag_allsky": -0.02100000000000035, + "W4_excess_mag": -0.011000000000000565, + "W4_excess_sig": -0.14209790907614922, + "W4_excess_err": 0.07741141352126263, + "W4_excess_mag_allsky": -0.013000000000000345, + "W3_excess_jy": 0.17781767872390647, + "W3_frac_200": 0.03970523648639688, + "W3_frac_300": 0.027162043711358448, + "W3_frac_600": 0.05248996805981477, + "W4_excess_jy": 0.06197812878806431, + "W4_frac_200": 0.005480781095082527, + "W4_frac_300": 0.008670831613176002, + "W4_frac_600": 0.03515267587222265 + }, + { + "hip": "82369", + "name": "20 Oph", + "gaia": "4334491925818303488", + "sptype": "F7V", + "d_pc": 46.54410053525716, + "m1": 2.01, + "m2": 0.46586862930400835, + "snr": 8.38, + "ruwe": 4.645, + "dms": "0", + "ks": 3.561, + "e_ks": 0.262, + "g_ks": 0.9272, + "L2": 0.047103574747605396, + "qph": "CCAA", + "ccf": "0000", + "W3": 3.481, + "W3_err": 0.013, + "ks_W3": 0.08000000000000007, + "W3_allsky": 3.473, + "ks_W3_allsky": 0.08800000000000008, + "W3_pred_200": 1.4109743446835536, + "W3_pred_300": 2.0625498812695007, + "W3_pred_600": 1.0673100423314883, + "W4": 3.444, + "W4_err": 0.029, + "ks_W4": 0.11699999999999999, + "W4_allsky": 3.419, + "ks_W4_allsky": 0.1419999999999999, + "W4_pred_200": 3.562771514017918, + "W4_pred_300": 2.2520066853167258, + "W4_pred_600": 0.555484618898041, + "W3_excess_mag": 0.08499999999999996, + "W3_excess_sig": 0.3200461075347584, + "W3_excess_err": 0.2655867326577893, + "W3_excess_mag_allsky": 0.09500000000000064, + "W4_excess_mag": 0.06400000000000006, + "W4_excess_sig": 0.2389526370992387, + "W4_excess_err": 0.26783550404350803, + "W4_excess_mag_allsky": 0.09399999999999986, + "W3_excess_jy": 1.389824144367627, + "W3_frac_200": 0.9850102162412668, + "W3_frac_300": 0.6738378339301978, + "W3_frac_600": 1.3021747095451495, + "W4_excess_jy": 0.3842326903214299, + "W4_frac_200": 0.10784657079738219, + "W4_frac_300": 0.17061791726759054, + "W4_frac_600": 0.691707163888107 + }, + { + "hip": "82621", + "name": "HD 152311", + "gaia": "4127420626087054976", + "sptype": "G2IV-V", + "d_pc": 30.253524535608395, + "m1": 1.32, + "m2": 0.8480197027406283, + "snr": 23.86, + "ruwe": 4.577, + "dms": "0", + "ks": 4.41, + "e_ks": 0.25, + "g_ks": 1.2938999999999998, + "L2": 0.5171586234310266, + "qph": "BBAA", + "ccf": "hh00", + "W3": 4.212, + "W3_err": 0.03, + "ks_W3": 0.1980000000000004, + "W3_allsky": 4.24, + "ks_W3_allsky": 0.16999999999999993, + "W3_pred_200": 36.666237730704566, + "W3_pred_300": 53.59838367225946, + "W3_pred_600": 27.735616804054313, + "W4": 4.163, + "W4_err": 0.026, + "ks_W4": 0.2469999999999999, + "W4_allsky": 4.147, + "ks_W4_allsky": 0.2629999999999999, + "W4_pred_200": 92.58384307650968, + "W4_pred_300": 58.52169658937208, + "W4_pred_600": 14.435082515149007, + "W3_excess_mag": 0.2160000000000002, + "W3_excess_sig": 0.8518208472631077, + "W3_excess_err": 0.2535744466621193, + "W3_excess_mag_allsky": 0.18700000000000028, + "W4_excess_mag": 0.1980000000000004, + "W4_excess_sig": 0.777222101530196, + "W4_excess_err": 0.254753434842084, + "W4_excess_mag_allsky": 0.23099999999999987, + "W3_excess_jy": 0.6643505732678197, + "W3_frac_200": 0.018118863957277184, + "W3_frac_300": 0.012394974022540589, + "W3_frac_600": 0.023952976346670134, + "W4_excess_jy": 0.18469731356178304, + "W4_frac_200": 0.001994919495933566, + "W4_frac_300": 0.003156048514070682, + "W4_frac_600": 0.012795029981155358 + }, + { + "hip": "82956", + "name": "HD 152931", + "gaia": "4132641244733978368", + "sptype": "G3V", + "d_pc": 49.84547901505333, + "m1": 1.1, + "m2": 0.7128020084576687, + "snr": 13.19, + "ruwe": 8.347, + "dms": "0", + "ks": 6.62, + "e_ks": 0.057, + "g_ks": 1.405499999999999, + "L2": 0.25815209803092254, + "qph": "AAAA", + "ccf": "hh00", + "W3": 6.564, + "W3_err": 0.016, + "ks_W3": 0.05600000000000005, + "W3_allsky": 6.559, + "ks_W3_allsky": 0.06099999999999994, + "W3_pred_200": 6.742464130864715, + "W3_pred_300": 9.856074736566383, + "W3_pred_600": 5.10023424879898, + "W4": 6.59, + "W4_err": 0.098, + "ks_W4": 0.03000000000000025, + "W4_allsky": 6.607, + "ks_W4_allsky": 0.0129999999999999, + "W4_pred_200": 17.02501482769333, + "W4_pred_300": 10.761410620560197, + "W4_pred_600": 2.6544317636101895, + "W3_excess_mag": 0.05999999999999961, + "W3_excess_sig": 0.9040205315438825, + "W3_excess_err": 0.06637017402418047, + "W3_excess_mag_allsky": 0.06099999999999994, + "W4_excess_mag": -0.025000000000000355, + "W4_excess_sig": -0.21317746190085263, + "W4_excess_err": 0.11727318534089538, + "W4_excess_mag_allsky": -0.04100000000000037, + "W3_excess_jy": 0.01509743994353931, + "W3_frac_200": 0.002239157621088164, + "W3_frac_300": 0.0015317903269876068, + "W3_frac_600": 0.0029601463789814173, + "W4_excess_jy": 0.007399801188133327, + "W4_frac_200": 0.00043464286304741533, + "W4_frac_300": 0.0006876237185853356, + "W4_frac_600": 0.0027877157324508297 + }, + { + "hip": "83431", + "name": "eps02 Ara", + "gaia": "5923907314622859520", + "sptype": "F5VFe+0.5", + "d_pc": 26.7401128432762, + "m1": 1.4, + "m2": 0.35642486898250236, + "snr": 34.72, + "ruwe": 1.245, + "dms": "1", + "ks": 4.126, + "e_ks": 0.036, + "g_ks": 1.0427999999999997, + "L2": 0.021441454011510583, + "qph": "BBAA", + "ccf": "0h00", + "W3": 4.125, + "W3_err": 0.014, + "ks_W3": 0.001000000000000334, + "W3_allsky": 4.113, + "ks_W3_allsky": 0.0129999999999999, + "W3_pred_200": 1.9459079626172902, + "W3_pred_300": 2.8445111368469296, + "W3_pred_600": 1.471952426193854, + "W4": 4.064, + "W4_err": 0.026, + "ks_W4": 0.06200000000000028, + "W4_allsky": 4.05, + "ks_W4_allsky": 0.07600000000000051, + "W4_pred_200": 4.913502137183355, + "W4_pred_300": 3.1057954790864772, + "W4_pred_600": 0.7660819256551065, + "W3_excess_mag": 0.006000000000000227, + "W3_excess_sig": 0.11424723028460033, + "W3_excess_err": 0.05251768454301848, + "W3_excess_mag_allsky": 0.020000000000000462, + "W4_excess_mag": 0.022999999999999687, + "W4_excess_sig": 0.3783574124619833, + "W4_excess_err": 0.060789082604033005, + "W4_excess_mag_allsky": 0.04499999999999993, + "W3_excess_jy": 0.11073808470249089, + "W3_frac_200": 0.05690818210823582, + "W3_frac_300": 0.0389304451186791, + "W3_frac_600": 0.0752321085463579, + "W4_excess_jy": 0.03622167059453469, + "W4_frac_200": 0.007371864218888611, + "W4_frac_300": 0.011662606516894262, + "W4_frac_600": 0.047281719332511504 + }, + { + "hip": "84520", + "name": "HD 156728", + "gaia": "1414660320615051264", + "sptype": "G5", + "d_pc": 41.4576510094938, + "m1": 1.08, + "m2": 0.33123323501054824, + "snr": 19.34, + "ruwe": 12.179, + "dms": "0", + "ks": 6.507, + "e_ks": 0.017, + "g_ks": 1.4021, + "L2": 0.01811489496587366, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.482, + "W3_err": 0.014, + "ks_W3": 0.024999999999999467, + "W3_allsky": 6.484, + "ks_W3_allsky": 0.022999999999999687, + "W3_pred_200": 0.6839446728013381, + "W3_pred_300": 0.9997843043685428, + "W3_pred_600": 0.5173595256572213, + "W4": 6.412, + "W4_err": 0.048, + "ks_W4": 0.09499999999999975, + "W4_allsky": 6.437, + "ks_W4_allsky": 0.0699999999999994, + "W4_pred_200": 1.726990009848416, + "W4_pred_300": 1.0916201143833077, + "W4_pred_600": 0.26926127136890177, + "W3_excess_mag": 0.028999999999999027, + "W3_excess_sig": 0.7792433616056395, + "W3_excess_err": 0.03721558813185679, + "W3_excess_mag_allsky": 0.022999999999999687, + "W4_excess_mag": 0.04099999999999948, + "W4_excess_sig": 0.6937205566415892, + "W4_excess_err": 0.05910160742314883, + "W4_excess_mag_allsky": 0.017999999999998906, + "W3_excess_jy": 0.008760833258858368, + "W3_frac_200": 0.01280927187132735, + "W3_frac_300": 0.008762723340002474, + "W3_frac_600": 0.016933743024696704, + "W4_excess_jy": 0.0040411200976451555, + "W4_frac_200": 0.0023399788502539505, + "W4_frac_300": 0.003701947265719007, + "W4_frac_600": 0.01500817431745917 + }, + { + "hip": "85019", + "name": "HD 157060", + "gaia": "5975317763881135872", + "sptype": "F9V:", + "d_pc": 39.33755556429723, + "m1": 1.33, + "m2": 0.5760856076443579, + "snr": 33.59, + "ruwe": 17.511, + "dms": "0", + "ks": 5.077, + "e_ks": 0.02, + "g_ks": 1.2313999999999998, + "L2": 0.1101407682687246, + "qph": "BAAA", + "ccf": "hhdH", + "W3": 5.173, + "W3_err": 0.018, + "ks_W3": -0.09600000000000009, + "W3_allsky": 5.23, + "ks_W3_allsky": -0.15300000000000047, + "W3_pred_200": 4.618786591859241, + "W3_pred_300": 6.7517015972285375, + "W3_pred_600": 3.49381073543403, + "W4": 5.459, + "W4_err": 0.074, + "ks_W4": -0.3819999999999997, + "W4_allsky": 5.314, + "ks_W4_allsky": -0.2370000000000001, + "W4_pred_200": 11.662636787697656, + "W4_pred_300": 7.371883352883407, + "W4_pred_600": 1.818363969137743, + "W3_excess_mag": -0.06899999999999995, + "W3_excess_sig": -1.7122062510998537, + "W3_excess_err": 0.040298883359219766, + "W3_excess_mag_allsky": -0.12600000000000033, + "W4_excess_mag": -0.4159999999999995, + "W4_excess_sig": -5.053667119798565, + "W4_excess_err": 0.0823164625090267, + "W4_excess_mag_allsky": -0.258, + "W3_excess_jy": 0.031812407017745084, + "W3_frac_200": 0.006887611363949023, + "W3_frac_300": 0.004711761407050862, + "W3_frac_600": 0.00910536071548051, + "W4_excess_jy": 0.013994949750408188, + "W4_frac_200": 0.0011999816169505318, + "W4_frac_300": 0.001898422571341184, + "W4_frac_600": 0.00769645130894477 + }, + { + "hip": "86170", + "name": "Q Sco", + "gaia": "5961830948155839360", + "sptype": "G8/K0III/IV", + "d_pc": 48.26021910139472, + "m1": 2.08, + "m2": 0.898794352644692, + "snr": 8.04, + "ruwe": 2.592, + "dms": "0", + "ks": 1.528, + "e_ks": 0.266, + "g_ks": 2.3412, + "L2": 0.6525913904307435, + "qph": "UUAA", + "ccf": "0h00", + "W3": 1.73, + "W3_err": 0.022, + "ks_W3": -0.20199999999999996, + "W3_allsky": 1.401, + "ks_W3_allsky": 0.127, + "W3_pred_200": 18.18265485415721, + "W3_pred_300": 26.579244868564327, + "W3_pred_600": 13.753992193558819, + "W4": 1.627, + "W4_err": 0.019, + "ks_W4": -0.09899999999999998, + "W4_allsky": 1.583, + "ks_W4_allsky": -0.05499999999999994, + "W4_pred_200": 45.911993373727576, + "W4_pred_300": 29.020697961416257, + "W4_pred_600": 7.158305280512631, + "W3_excess_mag": -0.2699999999999996, + "W3_excess_sig": -0.9908727087907929, + "W3_excess_err": 0.2724870688279354, + "W3_excess_mag_allsky": 0.07200000000000029, + "W4_excess_mag": -0.17799999999999971, + "W4_excess_sig": -0.663288533050292, + "W4_excess_err": 0.26835983306001665, + "W4_excess_mag_allsky": -0.1140000000000001, + "W3_excess_jy": 7.230159294367285, + "W3_frac_200": 0.3976404629775068, + "W3_frac_300": 0.2720227504626553, + "W3_frac_600": 0.5256771410524187, + "W4_excess_jy": 2.0539826299683184, + "W4_frac_200": 0.044737387315090485, + "W4_frac_300": 0.07077647245766244, + "W4_frac_600": 0.2869369982808592 + }, + { + "hip": "86184", + "name": "HD 160933", + "gaia": "1638750067484668672", + "sptype": "F9V", + "d_pc": 44.714720085852264, + "m1": 1.4, + "m2": 0.3457430052406999, + "snr": 12.0, + "ruwe": 18.208, + "dms": "0", + "ks": 4.825, + "e_ks": 0.02, + "g_ks": 1.3740999999999994, + "L2": 0.019992203418413422, + "qph": "BBAA", + "ccf": "h000", + "W3": 4.818, + "W3_err": 0.015, + "ks_W3": 0.007000000000000561, + "W3_allsky": 4.807, + "ks_W3_allsky": 0.017999999999999794, + "W3_pred_200": 0.6488647221628013, + "W3_pred_300": 0.9485047412091706, + "W3_pred_600": 0.49082383155188275, + "W4": 4.766, + "W4_err": 0.024, + "ks_W4": 0.05900000000000016, + "W4_allsky": 4.771, + "ks_W4_allsky": 0.05400000000000027, + "W4_pred_200": 1.638411610589028, + "W4_pred_300": 1.0356302350093611, + "W4_pred_600": 0.2554506921157545, + "W3_excess_mag": 0.0060000000000011156, + "W3_excess_sig": 0.15364425591950373, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": 0.01499999999999968, + "W4_excess_mag": 8.881784197001252e-16, + "W4_excess_sig": 1.966517076661856e-14, + "W4_excess_err": 0.04516504993731352, + "W4_excess_mag_allsky": 0.0019999999999997797, + "W3_excess_jy": 0.042675260820978354, + "W3_frac_200": 0.06576911852864002, + "W3_frac_300": 0.04499214286116818, + "W3_frac_600": 0.08694618736430965, + "W4_excess_jy": 0.013789303795686467, + "W4_frac_200": 0.008416263475286928, + "W4_frac_300": 0.013314891096784003, + "W4_frac_600": 0.05398029530269585 + }, + { + "hip": "87261", + "name": "G Sco", + "gaia": "4039970797062166400", + "sptype": "K2III", + "d_pc": 40.379567938623055, + "m1": 2.92, + "m2": 0.3637370295063815, + "snr": 29.99, + "ruwe": 1.688, + "dms": "0", + "ks": 0.621, + "e_ks": 0.266, + "g_ks": 2.13, + "L2": 0.022466691522134756, + "qph": "UUAA", + "ccf": "00hd", + "W3": 0.444, + "W3_err": 0.024, + "ks_W3": 0.177, + "W3_allsky": 0.255, + "ks_W3_allsky": 0.366, + "W3_pred_200": 0.8941498757777756, + "W3_pred_300": 1.3070604203907084, + "W3_pred_600": 0.6763660483005495, + "W4": 0.433, + "W4_err": 0.017, + "ks_W4": 0.188, + "W4_allsky": 0.341, + "ks_W4_allsky": 0.27999999999999997, + "W4_pred_200": 2.257767278821913, + "W4_pred_300": 1.4271212694361766, + "W4_pred_600": 0.3520166790102359, + "W3_excess_mag": 0.13200000000000006, + "W3_excess_sig": 0.4775704013968591, + "W3_excess_err": 0.27639903899803997, + "W3_excess_mag_allsky": 0.3190000000000003, + "W4_excess_mag": 0.10900000000000026, + "W4_excess_sig": 0.3865965176851932, + "W4_excess_err": 0.28194770261422614, + "W4_excess_mag_allsky": 0.1999999999999999, + "W3_excess_jy": 24.120123367892106, + "W3_frac_200": 26.975481428000236, + "W3_frac_300": 18.453717205117485, + "W3_frac_600": 35.661345551712415, + "W4_excess_jy": 6.61947838332079, + "W4_frac_200": 2.931869216731136, + "W4_frac_300": 4.638343303464321, + "W4_frac_600": 18.804445294844424 + }, + { + "hip": "87991", + "name": "BD+04 3562", + "gaia": "4472789731012285824", + "sptype": "K4V", + "d_pc": 42.1460783074135, + "m1": 0.8, + "m2": 0.3388126807755091, + "snr": 5.19, + "ruwe": 19.118, + "dms": "1", + "ks": 6.794, + "e_ks": 0.024, + "g_ks": 2.546500000000001, + "L2": 0.01908249009427681, + "qph": "AAAA", + "ccf": "hh00", + "W3": 6.678, + "W3_err": 0.016, + "ks_W3": 0.11599999999999966, + "W3_allsky": 6.687, + "ks_W3_allsky": 0.10699999999999932, + "W3_pred_200": 0.6971323554335722, + "W3_pred_300": 1.0190619427960754, + "W3_pred_600": 0.5273351472278748, + "W4": 6.625, + "W4_err": 0.073, + "ks_W4": 0.1689999999999996, + "W4_allsky": 6.613, + "ks_W4_allsky": 0.18099999999999916, + "W4_pred_200": 1.7602894813767735, + "W4_pred_300": 1.11266851229609, + "W4_pred_600": 0.2744531126583745, + "W3_excess_mag": 0.030999999999999694, + "W3_excess_sig": 0.6767805325672499, + "W3_excess_err": 0.04580510004093433, + "W3_excess_mag_allsky": 0.026999999999999247, + "W4_excess_mag": 0.07399999999999957, + "W4_excess_sig": 0.6668380486908485, + "W4_excess_err": 0.11097147222669437, + "W4_excess_mag_allsky": 0.10999999999999943, + "W3_excess_jy": 0.009111430539394389, + "W3_frac_200": 0.013069871837647896, + "W3_frac_300": 0.008940997751711427, + "W3_frac_600": 0.01727825385296594, + "W4_excess_jy": 0.00671820521653732, + "W4_frac_200": 0.003816534318709225, + "W4_frac_300": 0.006037921575289039, + "W4_frac_600": 0.024478517118877805 + }, + { + "hip": "88178", + "name": "HD 163693", + "gaia": "6653317212423426432", + "sptype": "G5V", + "d_pc": 45.359702440351995, + "m1": 1.0, + "m2": 0.48433040274158295, + "snr": 5.11, + "ruwe": 9.432, + "dms": "0", + "ks": 6.762, + "e_ks": 0.021, + "g_ks": 1.5572000000000008, + "L2": 0.05502587116703216, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.747, + "W3_err": 0.017, + "ks_W3": 0.01499999999999968, + "W3_allsky": 6.749, + "ks_W3_allsky": 0.0129999999999999, + "W3_pred_200": 1.7354858089120575, + "W3_pred_300": 2.5369178841584574, + "W3_pred_600": 1.3127817944776659, + "W4": 6.618, + "W4_err": 0.07, + "ks_W4": 0.14399999999999924, + "W4_allsky": 6.637, + "ks_W4_allsky": 0.125, + "W4_pred_200": 4.382177058195162, + "W4_pred_300": 2.7699480565812817, + "W4_pred_600": 0.6832411069690155, + "W3_excess_mag": -0.009000000000000341, + "W3_excess_sig": -0.2229198320781399, + "W3_excess_err": 0.0403732584763727, + "W3_excess_mag_allsky": -0.014000000000000234, + "W4_excess_mag": 0.06799999999999962, + "W4_excess_sig": 0.7948302029215776, + "W4_excess_err": 0.08555286368088466, + "W4_excess_mag_allsky": 0.05000000000000071, + "W3_excess_jy": 0.007478986923548479, + "W3_frac_200": 0.004309448619598285, + "W3_frac_300": 0.002948060309815427, + "W3_frac_600": 0.0056970525909252456, + "W4_excess_jy": 0.005024999559275056, + "W4_frac_200": 0.0011466902164251314, + "W4_frac_300": 0.0018141132817764817, + "W4_frac_600": 0.007354650515053007 + }, + { + "hip": "88635", + "name": "gam02 Sgr", + "gaia": "4049975081571729920", + "sptype": "K0+III", + "d_pc": 30.95112816862175, + "m1": 2.79, + "m2": 0.4994320188627014, + "snr": 24.63, + "ruwe": 4.933, + "dms": "0", + "ks": 0.545, + "e_ks": 0.272, + "g_ks": 2.0621, + "L2": 0.0622164929688489, + "qph": "UUAA", + "ccf": "HHHH", + "W3": 0.728, + "W3_err": 0.062, + "ks_W3": -0.18299999999999994, + "W3_allsky": 0.609, + "ks_W3_allsky": -0.06399999999999995, + "W3_pred_200": 4.214510045500448, + "W3_pred_300": 6.160733699169851, + "W3_pred_600": 3.1880019023863935, + "W4": 0.563, + "W4_err": 0.013, + "ks_W4": -0.017999999999999905, + "W4_allsky": 0.588, + "ks_W4_allsky": -0.04299999999999993, + "W4_pred_200": 10.641820946091629, + "W4_pred_300": 6.7266317304515715, + "W4_pred_600": 1.6592048716462173, + "W3_excess_mag": -0.24100000000000066, + "W3_excess_sig": -0.834898967596894, + "W3_excess_err": 0.2886576811727001, + "W3_excess_mag_allsky": -0.12400000000000044, + "W4_excess_mag": -0.1529999999999997, + "W4_excess_sig": -0.5463988585112118, + "W4_excess_err": 0.28001522627057285, + "W4_excess_mag_allsky": -0.16400000000000037, + "W3_excess_jy": 19.76645058614161, + "W3_frac_200": 4.690094547821741, + "W3_frac_300": 3.2084572311257515, + "W3_frac_600": 6.200263108797188, + "W4_excess_jy": 5.814720204456533, + "W4_frac_200": 0.5464027476042131, + "W4_frac_300": 0.864432666669293, + "W4_frac_600": 3.5045221381777454 + }, + { + "hip": "88728", + "name": "HD 165670", + "gaia": "4482248936925366400", + "sptype": "F5", + "d_pc": 43.17416457991538, + "m1": 1.3, + "m2": 0.31478564678255394, + "snr": 15.85, + "ruwe": 32.367, + "dms": "0", + "ks": 5.735, + "e_ks": 0.027, + "g_ks": 1.1303, + "L2": 0.016112471268290664, + "qph": "BAAA", + "ccf": "0h00", + "W3": 5.757, + "W3_err": 0.015, + "ks_W3": -0.021999999999999353, + "W3_allsky": 5.735, + "ks_W3_allsky": 0.0, + "W3_pred_200": 0.5609301760145087, + "W3_pred_300": 0.8199627954246602, + "W3_pred_600": 0.4243070840819042, + "W4": 5.647, + "W4_err": 0.038, + "ks_W4": 0.08800000000000008, + "W4_allsky": 5.673, + "ks_W4_allsky": 0.06200000000000028, + "W4_pred_200": 1.4163730616276757, + "W4_pred_300": 0.8952809887297201, + "W4_pred_600": 0.22083185723813553, + "W3_excess_mag": -0.0009999999999994458, + "W3_excess_sig": -0.02173504081054676, + "W3_excess_err": 0.046008655273111036, + "W3_excess_mag_allsky": 0.015000000000000568, + "W4_excess_mag": 0.04800000000000004, + "W4_excess_sig": 0.8658844835323009, + "W4_excess_err": 0.055434646206140796, + "W4_excess_mag_allsky": 0.020000000000000462, + "W3_excess_jy": 0.021381441791566598, + "W3_frac_200": 0.038117831248596544, + "W3_frac_300": 0.02607611212468867, + "W3_frac_600": 0.05039143251126896, + "W4_excess_jy": 0.007628261405555847, + "W4_frac_200": 0.005385771314225333, + "W4_frac_300": 0.00852052205015466, + "W4_frac_600": 0.03454330141022117 + }, + { + "hip": "89234", + "name": "HD 165259", + "gaia": "6417978327725636096", + "sptype": "F5V", + "d_pc": 42.20477758082215, + "m1": 1.5, + "m2": 0.44970741812003023, + "snr": 35.38, + "ruwe": 1.376, + "dms": "1", + "ks": 4.68, + "e_ks": 0.021, + "g_ks": 1.1364, + "L2": 0.04089970786872527, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.661, + "W3_err": 0.015, + "ks_W3": 0.019000000000000128, + "W3_allsky": 4.663, + "ks_W3_allsky": 0.01699999999999946, + "W3_pred_200": 1.490017975952416, + "W3_pred_300": 2.1780951659183616, + "W3_pred_600": 1.1271013927224298, + "W4": 4.626, + "W4_err": 0.023, + "ks_W4": 0.05399999999999938, + "W4_allsky": 4.632, + "ks_W4_allsky": 0.04800000000000004, + "W4_pred_200": 3.762360116681276, + "W4_pred_300": 2.3781654540568544, + "W4_pred_600": 0.5866032012855532, + "W3_excess_mag": 0.04099999999999948, + "W3_excess_sig": 1.0360673262244882, + "W3_excess_err": 0.03957271787481876, + "W3_excess_mag_allsky": 0.03200000000000003, + "W4_excess_mag": 0.013999999999999346, + "W4_excess_sig": 0.2891787944088983, + "W4_excess_err": 0.04841295513599579, + "W4_excess_mag_allsky": 0.006000000000000227, + "W3_excess_jy": 0.0500098654463023, + "W3_frac_200": 0.03356326316421526, + "W3_frac_300": 0.02296036749395951, + "W3_frac_600": 0.04437033417686334, + "W4_excess_jy": 0.016892431212336658, + "W4_frac_200": 0.0044898496391773445, + "W4_frac_300": 0.007103135395193077, + "W4_frac_600": 0.02879703209139763 + }, + { + "hip": "90397", + "name": "HD 169586", + "gaia": "4047715482087935360", + "sptype": "G0V", + "d_pc": 48.19741661846925, + "m1": 1.33, + "m2": 0.5171587578873011, + "snr": 17.33, + "ruwe": 2.202, + "dms": "0", + "ks": 5.427, + "e_ks": 0.017, + "g_ks": 1.2146000000000008, + "L2": 0.07153120395188377, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.446, + "W3_err": 0.015, + "ks_W3": -0.019000000000000128, + "W3_allsky": 5.444, + "ks_W3_allsky": -0.017000000000000348, + "W3_pred_200": 1.9982165288464218, + "W3_pred_300": 2.9209753386744057, + "W3_pred_600": 1.511520444029667, + "W4": 5.41, + "W4_err": 0.04, + "ks_W4": 0.01699999999999946, + "W4_allsky": 5.418, + "ks_W4_allsky": 0.008999999999999453, + "W4_pred_200": 5.045583539231856, + "W4_pred_300": 3.1892833478001754, + "W4_pred_600": 0.7866752157360887, + "W3_excess_mag": 0.014000000000000234, + "W3_excess_sig": 0.3723088252864056, + "W3_excess_err": 0.03760319135392633, + "W3_excess_mag_allsky": 0.010999999999999233, + "W4_excess_mag": -0.017000000000000348, + "W4_excess_sig": -0.3219027332387089, + "W4_excess_err": 0.05281098370604358, + "W4_excess_mag_allsky": -0.012000000000000455, + "W3_excess_jy": 0.022997562109084956, + "W3_frac_200": 0.0115090440786022, + "W3_frac_300": 0.007873247611710987, + "W3_frac_600": 0.015214853493991893, + "W4_excess_jy": 0.009006480750270029, + "W4_frac_200": 0.0017850226203253356, + "W4_frac_300": 0.002823982621827031, + "W4_frac_600": 0.01144879178867063 + }, + { + "hip": "92161", + "name": "111 Her", + "gaia": "4512265810537057664", + "sptype": "A5III", + "d_pc": 28.54288568574283, + "m1": 1.8, + "m2": 0.5321076395849442, + "snr": 26.22, + "ruwe": 1.321, + "dms": "0", + "ks": 4.079, + "e_ks": 0.026, + "g_ks": 0.22280000000000033, + "L2": 0.08016743289259867, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.138, + "W3_err": 0.014, + "ks_W3": -0.05900000000000016, + "W3_allsky": 4.126, + "ks_W3_allsky": -0.0470000000000006, + "W3_pred_200": 6.385527126954287, + "W3_pred_300": 9.334307365097093, + "W3_pred_600": 4.830234691267158, + "W4": 4.11, + "W4_err": 0.024, + "ks_W4": -0.031000000000000583, + "W4_allsky": 4.114, + "ks_W4_allsky": -0.03500000000000014, + "W4_pred_200": 16.123733387231578, + "W4_pred_300": 10.191715982190651, + "W4_pred_600": 2.5139097078159995, + "W3_excess_mag": -0.04499999999999993, + "W3_excess_sig": -0.5026870664555093, + "W3_excess_err": 0.08951891346101042, + "W3_excess_mag_allsky": -0.04800000000000093, + "W4_excess_mag": -0.05600000000000005, + "W4_excess_sig": -0.6397736845202127, + "W4_excess_err": 0.08753095251486671, + "W4_excess_mag_allsky": -0.05900000000000016, + "W3_excess_jy": 0.19662220325253188, + "W3_frac_200": 0.030791851532907828, + "W3_frac_300": 0.02106446633498946, + "W3_frac_600": 0.040706552749500094, + "W4_excess_jy": 0.05193943733341907, + "W4_frac_200": 0.003221303409454167, + "W4_frac_300": 0.005096240655075141, + "W4_frac_600": 0.02066082054257323 + }, + { + "hip": "92250", + "name": "HD 173872", + "gaia": "4203266415718729856", + "sptype": "K2V", + "d_pc": 28.468129928544993, + "m1": 0.87, + "m2": 0.4653531506247793, + "snr": 22.72, + "ruwe": 7.274, + "dms": "1", + "ks": 6.094, + "e_ks": 0.023, + "g_ks": 2.0890999999999993, + "L2": 0.046895442094961104, + "qph": "AAAA", + "ccf": "hh00", + "W3": 5.981, + "W3_err": 0.016, + "ks_W3": 0.11300000000000043, + "W3_allsky": 5.991, + "ks_W3_allsky": 0.10300000000000065, + "W3_pred_200": 3.754977071568228, + "W3_pred_300": 5.488992441510137, + "W3_pred_600": 2.840395186709143, + "W4": 5.953, + "W4_err": 0.052, + "ks_W4": 0.14100000000000001, + "W4_allsky": 5.987, + "ks_W4_allsky": 0.1070000000000002, + "W4_pred_200": 9.481480224485644, + "W4_pred_300": 5.993187261161144, + "W4_pred_600": 1.4782919444497478, + "W3_excess_mag": 0.0680000000000005, + "W3_excess_sig": 1.0367534895880177, + "W3_excess_err": 0.06558936206428605, + "W3_excess_mag_allsky": 0.04300000000000104, + "W4_excess_mag": 0.02900000000000036, + "W4_excess_sig": 0.29532444655523593, + "W4_excess_err": 0.09819708574168563, + "W4_excess_mag_allsky": 0.027000000000000135, + "W3_excess_jy": 0.025496528163307965, + "W3_frac_200": 0.006790062276641172, + "W3_frac_300": 0.004645028834525655, + "W3_frac_600": 0.008976401693191157, + "W4_excess_jy": 0.010836954490218811, + "W4_frac_200": 0.0011429601954168185, + "W4_frac_300": 0.0018082122279822132, + "W4_frac_600": 0.007330726877668646 + }, + { + "hip": "92549", + "name": "HD 175225", + "gaia": "2146204847257954944", + "sptype": "G9IVa", + "d_pc": 26.51957144372547, + "m1": 1.35, + "m2": 0.35737945912922287, + "snr": 89.29, + "ruwe": 1.452, + "dms": "0", + "ks": 3.608, + "e_ks": 0.5, + "g_ks": 1.7019999999999995, + "L2": 0.02157376216410059, + "qph": "CBAA", + "ccf": "0h00", + "W3": 3.541, + "W3_err": 0.015, + "ks_W3": 0.06700000000000017, + "W3_allsky": 3.527, + "ks_W3_allsky": 0.08099999999999996, + "W3_pred_200": 1.9906156635099455, + "W3_pred_300": 2.9098644606089286, + "W3_pred_600": 1.5057708852693694, + "W4": 3.508, + "W4_err": 0.023, + "ks_W4": 0.10000000000000009, + "W4_allsky": 3.509, + "ks_W4_allsky": 0.0990000000000002, + "W4_pred_200": 5.026391024070459, + "W4_pred_300": 3.1771518731093464, + "W4_pred_600": 0.7836828411400255, + "W3_excess_mag": 0.03399999999999981, + "W3_excess_sig": 0.06784751444618722, + "W3_excess_err": 0.5011237372146723, + "W3_excess_mag_allsky": 0.04899999999999993, + "W4_excess_mag": 0.021999999999999797, + "W4_excess_sig": 0.04370573727163742, + "W4_excess_err": 0.5033664084709667, + "W4_excess_mag_allsky": 0.027000000000000135, + "W3_excess_jy": 3.634755750145146, + "W3_frac_200": 1.8259455186523434, + "W3_frac_300": 1.2491151389864132, + "W3_frac_600": 2.413883669622766, + "W4_excess_jy": 0.9975184787528728, + "W4_frac_200": 0.19845620326312477, + "W4_frac_300": 0.31396625612884, + "W4_frac_600": 1.2728599203496405 + }, + { + "hip": "94371", + "name": "HD 179558", + "gaia": "4513495442518338688", + "sptype": "G5V", + "d_pc": 45.378227526432816, + "m1": 1.0, + "m2": 0.5011120975209294, + "snr": 15.57, + "ruwe": 6.277, + "dms": "0", + "ks": 6.115, + "e_ks": 0.023, + "g_ks": 1.6453999999999995, + "L2": 0.06305790665413584, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.1, + "W3_err": 0.015, + "ks_W3": 0.015000000000000568, + "W3_allsky": 6.096, + "ks_W3_allsky": 0.019000000000000128, + "W3_pred_200": 1.9871883216873405, + "W3_pred_300": 2.9048544024913454, + "W3_pred_600": 1.5031783247741684, + "W4": 6.046, + "W4_err": 0.04, + "ks_W4": 0.06899999999999995, + "W4_allsky": 5.912, + "ks_W4_allsky": 0.2030000000000003, + "W4_pred_200": 5.017736837082304, + "W4_pred_300": 3.1716816129827508, + "W4_pred_600": 0.7823335354823169, + "W3_excess_mag": -0.011999999999999567, + "W3_excess_sig": -0.2601443464424628, + "W3_excess_err": 0.046128236742802545, + "W3_excess_mag_allsky": -0.009999999999999787, + "W4_excess_mag": -0.004999999999999893, + "W4_excess_sig": -0.08316121221423312, + "W4_excess_err": 0.06012418370140279, + "W4_excess_mag_allsky": 0.14100000000000001, + "W3_excess_jy": 0.015632828797868148, + "W3_frac_200": 0.007866807905047552, + "W3_frac_300": 0.005381622150996851, + "W3_frac_600": 0.010399849798404167, + "W4_excess_jy": 0.0057674261111470655, + "W4_frac_200": 0.00114940785027313, + "W4_frac_300": 0.0018184126955048284, + "W4_frac_600": 0.007372080895894852 + }, + { + "hip": "94648", + "name": "tau Dra", + "gaia": "2265035532800158848", + "sptype": "K2+IIIbCN1", + "d_pc": 46.10206998294224, + "m1": 1.99, + "m2": 0.4765218553414092, + "snr": 29.01, + "ruwe": 3.399, + "dms": "0", + "ks": 1.775, + "e_ks": 0.242, + "g_ks": 2.2658, + "L2": 0.051562183033064986, + "qph": "UUAA", + "ccf": "dh00", + "W3": 1.615, + "W3_err": 0.02, + "ks_W3": 0.15999999999999992, + "W3_allsky": 1.815, + "ks_W3_allsky": -0.040000000000000036, + "W3_pred_200": 1.5742908761877743, + "W3_pred_300": 2.301284549927791, + "W3_pred_600": 1.1908483439384492, + "W4": 1.621, + "W4_err": 0.02, + "ks_W4": 0.15399999999999991, + "W4_allsky": 1.606, + "ks_W4_allsky": 0.16899999999999982, + "W4_pred_200": 3.9751528506480627, + "W4_pred_300": 2.512670475665607, + "W4_pred_600": 0.6197804876388139, + "W3_excess_mag": 0.10600000000000054, + "W3_excess_sig": 0.4222193142711966, + "W3_excess_err": 0.2510543606537039, + "W3_excess_mag_allsky": -0.10099999999999998, + "W4_excess_mag": 0.08099999999999952, + "W4_excess_sig": 0.33060430901414456, + "W4_excess_err": 0.2450058810229664, + "W4_excess_mag_allsky": 0.11299999999999977, + "W3_excess_jy": 7.164291684909833, + "W3_frac_200": 4.550805567938329, + "W3_frac_300": 3.113170722470905, + "W3_frac_600": 6.016124321268007, + "W4_excess_jy": 1.818866328900621, + "W4_frac_200": 0.45755884043656186, + "W4_frac_300": 0.7238777812354416, + "W4_frac_600": 2.9346944041913625 + }, + { + "hip": "95203", + "name": "HD 181544", + "gaia": "6758629982320718976", + "sptype": "G1V", + "d_pc": 47.22104169617982, + "m1": 1.27, + "m2": 0.3532174460895215, + "snr": 15.88, + "ruwe": 1.83, + "dms": "0", + "ks": 5.659, + "e_ks": 0.026, + "g_ks": 1.3251, + "L2": 0.02100026485056103, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.674, + "W3_err": 0.015, + "ks_W3": -0.015000000000000568, + "W3_allsky": 5.676, + "ks_W3_allsky": -0.017000000000000348, + "W3_pred_200": 0.6111505104723481, + "W3_pred_300": 0.8933744384241381, + "W3_pred_600": 0.4622954908152097, + "W4": 5.582, + "W4_err": 0.044, + "ks_W4": 0.07699999999999996, + "W4_allsky": 5.626, + "ks_W4_allsky": 0.032999999999999474, + "W4_pred_200": 1.5431815877394461, + "W4_pred_300": 0.9754359039229237, + "W4_pred_600": 0.2406030341219375, + "W3_excess_mag": -0.013000000000000789, + "W3_excess_sig": -0.30059403916427013, + "W3_excess_err": 0.04324769724690543, + "W3_excess_mag_allsky": -0.020000000000000462, + "W4_excess_mag": 0.021999999999999353, + "W4_excess_sig": 0.371232018884544, + "W4_excess_err": 0.059262129560116214, + "W4_excess_mag_allsky": -0.016000000000000014, + "W3_excess_jy": 0.02161074919274334, + "W3_frac_200": 0.0353607643656237, + "W3_frac_300": 0.024190024096574194, + "W3_frac_600": 0.04674661471310275, + "W4_excess_jy": 0.008705198032870275, + "W4_frac_200": 0.005641071732602915, + "W4_frac_300": 0.00892441830145934, + "W4_frac_600": 0.036180749193954406 + }, + { + "hip": "95457", + "name": "HD 182346", + "gaia": "6772298492399894656", + "sptype": "F6V", + "d_pc": 47.58279406166731, + "m1": 1.2, + "m2": 0.4906116059070039, + "snr": 18.03, + "ruwe": 5.007, + "dms": "0", + "ks": 6.132, + "e_ks": 0.018, + "g_ks": 1.3422, + "L2": 0.05793636861536616, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.072, + "W3_err": 0.015, + "ks_W3": 0.05999999999999961, + "W3_allsky": 6.068, + "ks_W3_allsky": 0.06400000000000006, + "W3_pred_200": 1.6605269321345988, + "W3_pred_300": 2.4273436576815643, + "W3_pred_600": 1.2560802943774552, + "W4": 5.96, + "W4_err": 0.05, + "ks_W4": 0.1719999999999997, + "W4_allsky": 5.964, + "ks_W4_allsky": 0.16799999999999926, + "W4_pred_200": 4.192902638067131, + "W4_pred_300": 2.6503088212807078, + "W4_pred_600": 0.6537306461611047, + "W3_excess_mag": 0.06399999999999917, + "W3_excess_sig": 1.6813021999767261, + "W3_excess_err": 0.03806573262134856, + "W3_excess_mag_allsky": 0.06400000000000006, + "W4_excess_mag": 0.11300000000000043, + "W4_excess_sig": 1.8122659076794647, + "W4_excess_err": 0.06235288073409299, + "W4_excess_mag_allsky": 0.11599999999999877, + "W3_excess_jy": 0.013088010891509592, + "W3_frac_200": 0.007881841985354025, + "W3_frac_300": 0.005391906848497251, + "W3_frac_600": 0.010419724718312167, + "W4_excess_jy": 0.006494777549448444, + "W4_frac_200": 0.0015489931701448822, + "W4_frac_300": 0.0024505738717309085, + "W4_frac_600": 0.009934944288733679 + }, + { + "hip": "95722", + "name": "HD 183063", + "gaia": "4187404036259094528", + "sptype": "G8V", + "d_pc": 37.22730995458269, + "m1": 1.06, + "m2": 0.5567074276659317, + "snr": 29.72, + "ruwe": 1.396, + "dms": "1", + "ks": 5.821, + "e_ks": 0.021, + "g_ks": 2.1701000000000006, + "L2": 0.09605236511580231, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.824, + "W3_err": 0.016, + "ks_W3": -0.0030000000000001137, + "W3_allsky": 5.821, + "ks_W3_allsky": 0.0, + "W3_pred_200": 4.497584030313891, + "W3_pred_300": 6.574528759276626, + "W3_pred_600": 3.4021289046615046, + "W4": 5.751, + "W4_err": 0.049, + "ks_W4": 0.0699999999999994, + "W4_allsky": 5.777, + "ks_W4_allsky": 0.043999999999999595, + "W4_pred_200": 11.356595054673356, + "W4_pred_300": 7.178436193545539, + "W4_pred_600": 1.7706478933896854, + "W3_excess_mag": -0.06500000000000039, + "W3_excess_sig": -0.8888124472020474, + "W3_excess_err": 0.0731312890639845, + "W3_excess_mag_allsky": -0.05999999999999961, + "W4_excess_mag": -0.05800000000000072, + "W4_excess_sig": -0.6269165719963747, + "W4_excess_err": 0.09251629736840983, + "W4_excess_mag_allsky": -0.06300000000000061, + "W3_excess_jy": 0.03320629922985331, + "W3_frac_200": 0.007383141483525726, + "W3_frac_300": 0.005050749710844202, + "W3_frac_600": 0.009760447108384088, + "W4_excess_jy": 0.01219744634103476, + "W4_frac_200": 0.0010740407914796067, + "W4_frac_300": 0.0016991787643110964, + "W4_frac_600": 0.0068886910754934255 + }, + { + "hip": "96635", + "name": "HD 185181", + "gaia": "6767000667417725952", + "sptype": "K1V", + "d_pc": 36.70128821521635, + "m1": 0.85, + "m2": 0.47337170785723154, + "snr": 13.92, + "ruwe": 6.962, + "dms": "0", + "ks": 6.963, + "e_ks": 0.021, + "g_ks": 1.7320000000000002, + "L2": 0.05021219318665984, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.91, + "W3_err": 0.017, + "ks_W3": 0.052999999999999936, + "W3_allsky": 6.911, + "ks_W3_allsky": 0.05200000000000049, + "W3_pred_200": 2.419029185700744, + "W3_pred_300": 3.5361155775468887, + "W3_pred_600": 1.8298377658811453, + "W4": 6.791, + "W4_err": 0.096, + "ks_W4": 0.1719999999999997, + "W4_allsky": 6.784, + "ks_W4_allsky": 0.17900000000000027, + "W4_pred_200": 6.1081537781790605, + "W4_pred_300": 3.860927676467517, + "W4_pred_600": 0.9523443926427891, + "W3_excess_mag": 0.019999999999999574, + "W3_excess_sig": 0.49537740461805935, + "W3_excess_err": 0.0403732584763727, + "W3_excess_mag_allsky": 0.016000000000000014, + "W4_excess_mag": 0.09399999999999942, + "W4_excess_sig": 0.9078468708057623, + "W4_excess_err": 0.10354169081022378, + "W4_excess_mag_allsky": 0.10400000000000009, + "W3_excess_jy": 0.006436396261221708, + "W3_frac_200": 0.002660735264902235, + "W3_frac_300": 0.001820188316832911, + "W3_frac_600": 0.0035174682593362627, + "W4_excess_jy": 0.005322055929298233, + "W4_frac_200": 0.0008713035268219498, + "W4_frac_300": 0.0013784396847774025, + "W4_frac_600": 0.005588373250699089 + }, + { + "hip": "97196", + "name": "HD 185655", + "gaia": "6426760779929152896", + "sptype": "K2/4", + "d_pc": 49.82064567556796, + "m1": 0.7, + "m2": 0.3506114149889745, + "snr": 11.12, + "ruwe": 15.043, + "dms": "1", + "ks": 7.335, + "e_ks": 0.02, + "g_ks": 2.4015999999999993, + "L2": 0.020645611675797735, + "qph": "AAAA", + "ccf": "0000", + "W3": 7.267, + "W3_err": 0.018, + "ks_W3": 0.06799999999999962, + "W3_allsky": 7.274, + "ks_W3_allsky": 0.06099999999999994, + "W3_pred_200": 0.5397635887336938, + "W3_pred_300": 0.7890216643917526, + "W3_pred_600": 0.40829594167394906, + "W4": 7.186, + "W4_err": 0.103, + "ks_W4": 0.14900000000000002, + "W4_allsky": 7.264, + "ks_W4_allsky": 0.07099999999999973, + "W4_pred_200": 1.3629265092525693, + "W4_pred_300": 0.8614977408334407, + "W4_pred_600": 0.2124988115570729, + "W3_excess_mag": -0.016000000000000902, + "W3_excess_sig": -0.2800128347371896, + "W3_excess_err": 0.057140237928800484, + "W3_excess_mag_allsky": -0.011000000000000065, + "W4_excess_mag": 0.06599999999999984, + "W4_excess_sig": 0.6047923482755917, + "W4_excess_err": 0.10912836478203088, + "W4_excess_mag_allsky": 0.011999999999999567, + "W3_excess_jy": 0.006713933232037415, + "W3_frac_200": 0.012438655315354935, + "W3_frac_300": 0.008509187434305884, + "W3_frac_600": 0.016443791247376466, + "W4_excess_jy": 0.003930227972993275, + "W4_frac_200": 0.002883668302224613, + "W4_frac_300": 0.004562087381901949, + "W4_frac_600": 0.018495293899268208 + }, + { + "hip": "98533", + "name": "HD 188769", + "gaia": "6428553842878813312", + "sptype": "F3IV", + "d_pc": 48.97399480875655, + "m1": 1.4, + "m2": 0.9030900083049342, + "snr": 17.66, + "ruwe": 24.429, + "dms": "0", + "ks": 5.737, + "e_ks": 0.024, + "g_ks": 0.9996, + "L2": 0.6651569745377136, + "qph": "AAAA", + "ccf": "0000", + "W3": 5.766, + "W3_err": 0.015, + "ks_W3": -0.028999999999999915, + "W3_allsky": 5.758, + "ks_W3_allsky": -0.020999999999999908, + "W3_pred_200": 17.996482198608817, + "W3_pred_300": 26.30709931889944, + "W3_pred_600": 13.613164725204754, + "W4": 5.703, + "W4_err": 0.037, + "ks_W4": 0.03399999999999981, + "W4_allsky": 5.73, + "ks_W4_allsky": 0.006999999999999673, + "W4_pred_200": 45.44189933100021, + "W4_pred_300": 28.72355431277523, + "W4_pred_600": 7.0850112146026465, + "W3_excess_mag": -0.025000000000000355, + "W3_excess_sig": -0.6061608062110986, + "W3_excess_err": 0.04124318125460256, + "W3_excess_mag_allsky": -0.03000000000000025, + "W4_excess_mag": -0.019000000000000128, + "W4_excess_sig": -0.3562152150563077, + "W4_excess_err": 0.05333854141237835, + "W4_excess_mag_allsky": -0.04800000000000004, + "W3_excess_jy": 0.01888134331995168, + "W3_frac_200": 0.001049168560365162, + "W3_frac_300": 0.0007177280585392029, + "W3_frac_600": 0.0013869914675309044, + "W4_excess_jy": 0.00695018351339416, + "W4_frac_200": 0.00015294658928687832, + "W4_frac_300": 0.00024196808785265694, + "W4_frac_600": 0.0009809700087798593 + }, + { + "hip": "98878", + "name": "HD 190412", + "gaia": "4237555510387302400", + "sptype": "G6/8V", + "d_pc": 34.04139433551198, + "m1": 0.97, + "m2": 0.426701795584066, + "snr": 6.65, + "ruwe": 34.676, + "dms": "0", + "ks": 5.767, + "e_ks": 0.02, + "g_ks": 1.7367, + "L2": 0.03243501610687504, + "qph": "AAAA", + "ccf": "0000", + "W3": 5.734, + "W3_err": 0.015, + "ks_W3": 0.03300000000000036, + "W3_allsky": 5.735, + "ks_W3_allsky": 0.03200000000000003, + "W3_pred_200": 1.8163267145636945, + "W3_pred_300": 2.6550904086850453, + "W3_pred_600": 1.373932665688238, + "W4": 5.682, + "W4_err": 0.04, + "ks_W4": 0.08499999999999996, + "W4_allsky": 5.683, + "ks_W4_allsky": 0.08400000000000052, + "W4_pred_200": 4.586303856749858, + "W4_pred_300": 2.898975391954539, + "W4_pred_600": 0.7150672559252134, + "W3_excess_mag": -0.004000000000000448, + "W3_excess_sig": -0.10242950394632824, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": -0.014000000000000234, + "W4_excess_mag": 0.006999999999999673, + "W4_excess_sig": 0.10052718902648246, + "W4_excess_err": 0.06963290297668248, + "W4_excess_mag_allsky": 0.009000000000000341, + "W3_excess_jy": 0.018355921176828778, + "W3_frac_200": 0.010106067939015096, + "W3_frac_300": 0.00691348253783934, + "W3_frac_600": 0.013360131566297558, + "W4_excess_jy": 0.009467230396091143, + "W4_frac_200": 0.002064239677917942, + "W4_frac_300": 0.0032657160258639426, + "W4_frac_600": 0.013239636296646885 + }, + { + "hip": "99500", + "name": "68 Dra", + "gaia": "2243923260280193920", + "sptype": "F5V", + "d_pc": 47.741812279194114, + "m1": 1.66, + "m2": 0.4175663678799508, + "snr": 15.68, + "ruwe": 1.911, + "dms": "0", + "ks": 4.465, + "e_ks": 0.016, + "g_ks": 1.1250999999999998, + "L2": 0.030860042049849358, + "qph": "BBAA", + "ccf": "0h00", + "W3": 4.486, + "W3_err": 0.015, + "ks_W3": -0.020999999999999908, + "W3_allsky": 4.484, + "ks_W3_allsky": -0.019000000000000128, + "W3_pred_200": 0.8786041403636209, + "W3_pred_300": 1.2843358011561161, + "W3_pred_600": 0.6646067136354836, + "W4": 4.427, + "W4_err": 0.026, + "ks_W4": 0.038000000000000256, + "W4_allsky": 4.427, + "ks_W4_allsky": 0.038000000000000256, + "W4_pred_200": 2.2185136215837784, + "W4_pred_300": 1.4023092661472765, + "W4_pred_600": 0.34589649904767367, + "W3_excess_mag": 0.0009999999999994458, + "W3_excess_sig": 0.025442066333422532, + "W3_excess_err": 0.0393049836005566, + "W3_excess_mag_allsky": -0.005000000000000782, + "W4_excess_mag": -0.009000000000000341, + "W4_excess_sig": -0.15952690170443906, + "W4_excess_err": 0.05641681687440372, + "W4_excess_mag_allsky": -0.0039999999999995595, + "W3_excess_jy": 0.05833697009994439, + "W3_frac_200": 0.06639733119832662, + "W3_frac_300": 0.045421898266350125, + "W3_frac_600": 0.08777667890357849, + "W4_excess_jy": 0.02391428163457398, + "W4_frac_200": 0.010779416182940437, + "W4_frac_300": 0.017053500402430057, + "W4_frac_600": 0.06913710228468649 + }, + { + "hip": "100341", + "name": "BD+44 3436", + "gaia": "2081388160059813120", + "sptype": "K0", + "d_pc": 44.95190146543199, + "m1": 0.86, + "m2": 0.34458795116316815, + "snr": 20.18, + "ruwe": 4.296, + "dms": "1", + "ks": 6.756, + "e_ks": 0.017, + "g_ks": 2.3239, + "L2": 0.019838920546857167, + "qph": "AAAA", + "ccf": "hhdH", + "W3": 6.725, + "W3_err": 0.017, + "ks_W3": 0.031000000000000583, + "W3_allsky": 6.766, + "ks_W3_allsky": -0.009999999999999787, + "W3_pred_200": 0.6371129571040682, + "W3_pred_300": 0.9313261144553064, + "W3_pred_600": 0.48193438794890986, + "W4": 7.042, + "W4_err": 0.088, + "ks_W4": -0.2859999999999996, + "W4_allsky": 6.897, + "ks_W4_allsky": -0.14100000000000001, + "W4_pred_200": 1.6087378933110035, + "W4_pred_300": 1.0168736547949464, + "W4_pred_600": 0.2508241553118598, + "W3_excess_mag": -0.036999999999999034, + "W3_excess_sig": -0.5781980969908906, + "W3_excess_err": 0.06399190898855892, + "W3_excess_mag_allsky": -0.07099999999999973, + "W4_excess_mag": -0.3649999999999993, + "W4_excess_sig": -3.861839296738543, + "W4_excess_err": 0.09451454914456292, + "W4_excess_mag_allsky": -0.20000000000000018, + "W3_excess_jy": 0.01250793603335677, + "W3_frac_200": 0.019632211044977508, + "W3_frac_300": 0.013430243004269387, + "W3_frac_600": 0.025953607682136896, + "W4_excess_jy": 0.0038053960839104007, + "W4_frac_200": 0.0023654543724822524, + "W4_frac_300": 0.0037422506384805127, + "W4_frac_600": 0.015171569417542732 + }, + { + "hip": "101432", + "name": "HD 195521", + "gaia": "6679646117855733632", + "sptype": "G5V", + "d_pc": 40.48910842983238, + "m1": 1.2, + "m2": 0.37111601134053096, + "snr": 5.66, + "ruwe": 8.514, + "dms": "0", + "ks": 5.23, + "e_ks": 0.017, + "g_ks": 1.4204999999999997, + "L2": 0.023528818914686542, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.208, + "W3_err": 0.015, + "ks_W3": 0.02200000000000024, + "W3_allsky": 5.201, + "ks_W3_allsky": 0.029000000000000803, + "W3_pred_200": 0.9313613972517671, + "W3_pred_300": 1.3614558950407112, + "W3_pred_600": 0.7045141366830723, + "W4": 5.143, + "W4_err": 0.033, + "ks_W4": 0.08700000000000063, + "W4_allsky": 5.145, + "ks_W4_allsky": 0.08500000000000085, + "W4_pred_200": 2.3517279870377212, + "W4_pred_300": 1.4865132742915377, + "W4_pred_600": 0.36666643355926865, + "W3_excess_mag": 0.0259999999999998, + "W3_excess_sig": 0.6914306755318792, + "W3_excess_err": 0.03760319135392633, + "W3_excess_mag_allsky": 0.030000000000001137, + "W4_excess_mag": 0.03300000000000036, + "W4_excess_sig": 0.6914122662068501, + "W4_excess_err": 0.0477283982551269, + "W4_excess_mag_allsky": 0.03300000000000036, + "W3_excess_jy": 0.028633985481677348, + "W3_frac_200": 0.030744226211403693, + "W3_frac_300": 0.021031886222668356, + "W3_frac_600": 0.04064359249977468, + "W4_excess_jy": 0.010334455560752484, + "W4_frac_200": 0.004394409395012537, + "W4_frac_300": 0.006952144820689755, + "W4_frac_600": 0.028184896720528423 + }, + { + "hip": "102815", + "name": "HD 198483", + "gaia": "1843877121426321920", + "sptype": "G0V", + "d_pc": 47.82858236081882, + "m1": 1.16, + "m2": 0.36862453105759047, + "snr": 10.82, + "ruwe": 6.283, + "dms": "0", + "ks": 6.292, + "e_ks": 0.023, + "g_ks": 1.2570000000000006, + "L2": 0.023167094601822986, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.299, + "W3_err": 0.016, + "ks_W3": -0.007000000000000561, + "W3_allsky": 6.299, + "ks_W3_allsky": -0.007000000000000561, + "W3_pred_200": 0.6571902150491878, + "W3_pred_300": 0.960674873450787, + "W3_pred_600": 0.497121523780293, + "W4": 6.242, + "W4_err": 0.046, + "ks_W4": 0.04999999999999982, + "W4_allsky": 6.243, + "ks_W4_allsky": 0.04899999999999949, + "W4_pred_200": 1.6594338417922674, + "W4_pred_300": 1.0489182623284579, + "W4_pred_600": 0.2587283443711327, + "W3_excess_mag": 0.01499999999999968, + "W3_excess_sig": 0.3228372383132932, + "W3_excess_err": 0.04646304149536531, + "W3_excess_mag_allsky": 0.0129999999999999, + "W4_excess_mag": 0.009000000000000341, + "W4_excess_sig": 0.14970165667954755, + "W4_excess_err": 0.060119575157847494, + "W4_excess_mag_allsky": 0.021999999999999353, + "W3_excess_jy": 0.013115459715267693, + "W3_frac_200": 0.01995687004299974, + "W3_frac_300": 0.013652339701731115, + "W3_frac_600": 0.026382803978256594, + "W4_excess_jy": 0.004814441428396997, + "W4_frac_200": 0.0029012554204614575, + "W4_frac_300": 0.004589910959991852, + "W4_frac_600": 0.01860809429325967 + }, + { + "hip": "103287", + "name": "BD+13 4571", + "gaia": "1761587197303801984", + "sptype": "K0", + "d_pc": 43.248853905371504, + "m1": 0.91, + "m2": 0.7001345972106877, + "snr": 7.52, + "ruwe": 51.514, + "dms": "0", + "ks": 6.938, + "e_ks": 0.02, + "g_ks": 1.9081000000000001, + "L2": 0.24028472064213427, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.874, + "W3_err": 0.015, + "ks_W3": 0.06400000000000006, + "W3_allsky": 6.879, + "ks_W3_allsky": 0.05900000000000016, + "W3_pred_200": 8.33626444273248, + "W3_pred_300": 12.18587800789901, + "W3_pred_600": 6.305840208068945, + "W4": 6.923, + "W4_err": 0.09, + "ks_W4": 0.01499999999999968, + "W4_allsky": 6.976, + "ks_W4_allsky": -0.038000000000000256, + "W4_pred_200": 21.049429850936626, + "W4_pred_300": 13.30521942254878, + "W4_pred_600": 3.2818928951136135, + "W3_excess_mag": 0.04099999999999948, + "W3_excess_sig": 1.0499024154497338, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": 0.04600000000000026, + "W4_excess_mag": -0.051000000000000156, + "W4_excess_sig": -0.3703325091606021, + "W4_excess_err": 0.13771407785829298, + "W4_excess_mag_allsky": -0.0860000000000003, + "W3_excess_jy": 0.006423565902184707, + "W3_frac_200": 0.0007705568778812846, + "W3_frac_300": 0.0005271319717808505, + "W3_frac_600": 0.0010186693113417495, + "W4_excess_jy": 0.006588443062015612, + "W4_frac_200": 0.00031299864693116374, + "W4_frac_300": 0.0004951773325023086, + "W4_frac_600": 0.0020075131250703203 + }, + { + "hip": "103581", + "name": "HD 199704", + "gaia": "6890278254718505088", + "sptype": "K2IV", + "d_pc": 32.326889506691664, + "m1": 0.9, + "m2": 0.32162051223307275, + "snr": 7.49, + "ruwe": 2.629, + "dms": "0", + "ks": 6.256, + "e_ks": 0.017, + "g_ks": 1.9817999999999998, + "L2": 0.016928498382817216, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.233, + "W3_err": 0.015, + "ks_W3": 0.023000000000000576, + "W3_allsky": 6.243, + "ks_W3_allsky": 0.0129999999999999, + "W3_pred_200": 1.0511994679068122, + "W3_pred_300": 1.5366341322159334, + "W3_pred_600": 0.7951638191140067, + "W4": 6.121, + "W4_err": 0.058, + "ks_W4": 0.1349999999999998, + "W4_allsky": 6.208, + "ks_W4_allsky": 0.04800000000000004, + "W4_pred_200": 2.65432432128958, + "W4_pred_300": 1.6777826175559936, + "W4_pred_600": 0.41384532469794755, + "W3_excess_mag": 0.001000000000000334, + "W3_excess_sig": 0.011066392338691918, + "W3_excess_err": 0.09036368577896788, + "W3_excess_mag_allsky": -0.017000000000000348, + "W4_excess_mag": 0.0649999999999995, + "W4_excess_sig": 0.640393751480008, + "W4_excess_err": 0.1015000534433364, + "W4_excess_mag_allsky": -0.011999999999999567, + "W3_excess_jy": 0.028856225859269752, + "W3_frac_200": 0.027450761477961317, + "W3_frac_300": 0.018778852593660057, + "W3_frac_600": 0.036289661533421065, + "W4_excess_jy": 0.00964156897921168, + "W4_frac_200": 0.0036324004952519927, + "W4_frac_300": 0.005746613940521354, + "W4_frac_600": 0.02329751818810265 + }, + { + "hip": "103749", + "name": "HD 200325", + "gaia": "1873204223289046272", + "sptype": "F5", + "d_pc": 49.04364884747425, + "m1": 1.31, + "m2": 0.5560392145632274, + "snr": 10.26, + "ruwe": 5.438, + "dms": "1", + "ks": 5.85, + "e_ks": 0.023, + "g_ks": 1.1986000000000008, + "L2": 0.09559203008471322, + "qph": "AAAA", + "ccf": "0000", + "W3": 5.884, + "W3_err": 0.015, + "ks_W3": -0.034000000000000696, + "W3_allsky": 5.877, + "ks_W3_allsky": -0.027000000000000135, + "W3_pred_200": 2.5789960085071546, + "W3_pred_300": 3.7699536715062925, + "W3_pred_600": 1.9508422313871674, + "W4": 5.92, + "W4_err": 0.041, + "ks_W4": -0.07000000000000028, + "W4_allsky": 5.942, + "ks_W4_allsky": -0.09200000000000053, + "W4_pred_200": 6.512076954833596, + "W4_pred_300": 4.11624511419861, + "W4_pred_600": 1.0153215190078175, + "W3_excess_mag": -0.003000000000001002, + "W3_excess_sig": -0.07376553594076014, + "W3_excess_err": 0.04066939881532551, + "W3_excess_mag_allsky": 0.0009999999999994458, + "W4_excess_mag": -0.10200000000000031, + "W4_excess_sig": -1.829026413308129, + "W4_excess_err": 0.05576737397439474, + "W4_excess_mag_allsky": -0.1120000000000001, + "W3_excess_jy": 0.016687747640241682, + "W3_frac_200": 0.006470637249997662, + "W3_frac_300": 0.004426512656208335, + "W3_frac_600": 0.008554124660493781, + "W4_excess_jy": 0.005970754681436631, + "W4_frac_200": 0.000916874097595673, + "W4_frac_300": 0.001450534289331085, + "W4_frac_600": 0.005880654127444588 + }, + { + "hip": "104101", + "name": "4 Equ", + "gaia": "1736325127380047744", + "sptype": "F8V", + "d_pc": 44.770773638968485, + "m1": 1.5, + "m2": 1.0469085598098458, + "snr": 19.76, + "ruwe": 20.906, + "dms": "0", + "ks": 4.576, + "e_ks": 0.016, + "g_ks": 1.2552000000000003, + "L2": 1.201254431773443, + "qph": "BBAA", + "ccf": "0h00", + "W3": 4.566, + "W3_err": 0.015, + "ks_W3": 0.009999999999999787, + "W3_allsky": 4.561, + "ks_W3_allsky": 0.01499999999999968, + "W3_pred_200": 38.890214492134476, + "W3_pred_300": 56.84937333236002, + "W3_pred_600": 29.417910135842966, + "W4": 4.532, + "W4_err": 0.027, + "ks_W4": 0.043999999999999595, + "W4_allsky": 4.529, + "ks_W4_allsky": 0.04699999999999971, + "W4_pred_200": 98.19948101019395, + "W4_pred_300": 62.07130792964948, + "W4_pred_600": 15.31063697750747, + "W3_excess_mag": 0.03200000000000003, + "W3_excess_sig": 0.8610991073627604, + "W3_excess_err": 0.03716180835212409, + "W3_excess_mag_allsky": 0.03500000000000014, + "W4_excess_mag": 0.0030000000000001137, + "W4_excess_sig": 0.06786074192362526, + "W4_excess_err": 0.04420818156359831, + "W4_excess_mag_allsky": 0.019999999999999574, + "W3_excess_jy": 0.051083958907344115, + "W3_frac_200": 0.0013135427401069187, + "W3_frac_300": 0.0008985843803183299, + "W3_frac_600": 0.001736491772238542, + "W4_excess_jy": 0.01672078117909732, + "W4_frac_200": 0.00017027362066568925, + "W4_frac_300": 0.00026938019733768715, + "W4_frac_600": 0.0010921022556841667 + }, + { + "hip": "104383", + "name": "BD-05 5480", + "gaia": "6912161147450851840", + "sptype": "M1", + "d_pc": 28.66397225327486, + "m1": 0.7, + "m2": 0.31677119428773254, + "snr": 13.07, + "ruwe": 23.868, + "dms": "1", + "ks": 6.428, + "e_ks": 0.018, + "g_ks": 2.5651, + "L2": 0.01634718225320605, + "qph": "AAAA", + "ccf": "hh00", + "W3": 6.343, + "W3_err": 0.016, + "ks_W3": 0.08499999999999996, + "W3_allsky": 6.342, + "ks_W3_allsky": 0.0860000000000003, + "W3_pred_200": 1.2911142922526324, + "W3_pred_300": 1.88733951132773, + "W3_pred_600": 0.9766437321211546, + "W4": 6.337, + "W4_err": 0.067, + "ks_W4": 0.09100000000000019, + "W4_allsky": 6.374, + "ks_W4_allsky": 0.05400000000000027, + "W4_pred_200": 3.2601196748270684, + "W4_pred_300": 2.0607022577104352, + "W4_pred_600": 0.5082970737831638, + "W3_excess_mag": -0.004000000000000448, + "W3_excess_sig": -0.10162097481833664, + "W3_excess_err": 0.03936195265939017, + "W3_excess_mag_allsky": -0.0030000000000001137, + "W4_excess_mag": -0.009999999999999787, + "W4_excess_sig": -0.08171225414735578, + "W4_excess_err": 0.12238066498528224, + "W4_excess_mag_allsky": -0.03099999999999975, + "W3_excess_jy": 0.01056349630569769, + "W3_frac_200": 0.008181689544515343, + "W3_frac_300": 0.005597030233456165, + "W3_frac_600": 0.010816120513828544, + "W4_excess_jy": 0.009821264874946129, + "W4_frac_200": 0.003012547346277125, + "W4_frac_300": 0.00476597957720401, + "W4_frac_600": 0.019321899301619462 + }, + { + "hip": "104440", + "name": "HD 200525", + "gaia": "6371557530914670976", + "sptype": "F9.5V", + "d_pc": 21.273879930221675, + "m1": 1.24, + "m2": 0.6626573880504405, + "snr": 23.62, + "ruwe": 21.07, + "dms": "0", + "ks": 4.187, + "e_ks": 0.036, + "g_ks": 1.3169999999999993, + "L2": 0.19282181981965688, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.137, + "W3_err": 0.013, + "ks_W3": 0.05000000000000071, + "W3_allsky": 4.11, + "ks_W3_allsky": 0.07699999999999996, + "W3_pred_200": 27.647591463200236, + "W3_pred_300": 40.415005917489225, + "W3_pred_600": 20.913599262905073, + "W4": 4.075, + "W4_err": 0.023, + "ks_W4": 0.1120000000000001, + "W4_allsky": 4.078, + "ks_W4_allsky": 0.10899999999999999, + "W4_pred_200": 69.81136947489028, + "W4_pred_300": 44.12735145938922, + "W4_pred_600": 10.884543624234988, + "W3_excess_mag": 0.05800000000000072, + "W3_excess_sig": 1.192648375671379, + "W3_excess_err": 0.04863126566315131, + "W3_excess_mag_allsky": 0.07800000000000029, + "W4_excess_mag": 0.056999999999999496, + "W4_excess_sig": 0.8626460782041988, + "W4_excess_err": 0.06607576553139664, + "W4_excess_mag_allsky": 0.07600000000000051, + "W3_excess_jy": 0.10086044193241124, + "W3_frac_200": 0.0036480733617125197, + "W3_frac_300": 0.002495618635769265, + "W3_frac_600": 0.004822720406205244, + "W4_excess_jy": 0.03926898833588344, + "W4_frac_200": 0.000562501332250869, + "W4_frac_300": 0.000889901320545445, + "W4_frac_600": 0.003607775363998638 + }, + { + "hip": "104732", + "name": "zet Cyg", + "gaia": "1851924859353116928", + "sptype": "G8+III-IIIaBa0.5", + "d_pc": 45.78335317278638, + "m1": 3.19, + "m2": 0.5348377674045649, + "snr": 41.97, + "ruwe": 3.192, + "dms": "0", + "ks": 1.16, + "e_ks": 0.194, + "g_ks": 1.7172000000000003, + "L2": 0.08182542486280577, + "qph": "UUAA", + "ccf": "hh00", + "W3": 1.107, + "W3_err": 0.013, + "ks_W3": 0.052999999999999936, + "W3_allsky": 1.057, + "ks_W3_allsky": 0.10299999999999998, + "W3_pred_200": 2.533189085395387, + "W3_pred_300": 3.7029935143769386, + "W3_pred_600": 1.9161922824141684, + "W4": 1.033, + "W4_err": 0.017, + "ks_W4": 0.127, + "W4_allsky": 1.041, + "ks_W4_allsky": 0.119, + "W4_pred_200": 6.3964124840922665, + "W4_pred_300": 4.043134290128576, + "W4_pred_600": 0.9972878521849537, + "W3_excess_mag": 0.019999999999999574, + "W3_excess_sig": 0.10165914663883462, + "W3_excess_err": 0.1967358635328089, + "W3_excess_mag_allsky": 0.0669999999999995, + "W4_excess_mag": 0.04899999999999971, + "W4_excess_sig": 0.24815652014592632, + "W4_excess_err": 0.19745602481524838, + "W4_excess_mag_allsky": 0.04399999999999982, + "W3_excess_jy": 8.251997507401306, + "W3_frac_200": 3.2575529221156865, + "W3_frac_300": 2.2284666379681135, + "W3_frac_600": 4.306455872478933, + "W4_excess_jy": 2.3435609351982234, + "W4_frac_200": 0.3663867739966124, + "W4_frac_300": 0.579639647616972, + "W4_frac_600": 2.3499343043873697 + }, + { + "hip": "105214", + "name": "HD 202457", + "gaia": "6451858850820471680", + "sptype": "G5V", + "d_pc": 29.06807743735829, + "m1": 1.1, + "m2": 0.5999789990167722, + "snr": 32.07, + "ruwe": 22.665, + "dms": "0", + "ks": 4.932, + "e_ks": 0.016, + "g_ks": 1.5089999999999995, + "L2": 0.12958185610311815, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.9, + "W3_err": 0.014, + "ks_W3": 0.03200000000000003, + "W3_allsky": 4.903, + "ks_W3_allsky": 0.029000000000000803, + "W3_pred_200": 9.951902512002842, + "W3_pred_300": 14.547603520842642, + "W3_pred_600": 7.527965006158061, + "W4": 4.865, + "W4_err": 0.027, + "ks_W4": 0.06700000000000017, + "W4_allsky": 4.863, + "ks_W4_allsky": 0.06899999999999995, + "W4_pred_200": 25.128986160268603, + "W4_pred_300": 15.883882703534985, + "W4_pred_600": 3.917951304373416, + "W3_excess_mag": 0.023000000000000576, + "W3_excess_sig": 0.6255175372035, + "W3_excess_err": 0.03676955262170047, + "W3_excess_mag_allsky": 0.016000000000000902, + "W4_excess_mag": -0.028999999999999915, + "W4_excess_sig": -0.37285572392229577, + "W4_excess_err": 0.07777807376786738, + "W4_excess_mag_allsky": -0.005000000000000782, + "W3_excess_jy": 0.03713955485937729, + "W3_frac_200": 0.003731905011587867, + "W3_frac_300": 0.002552967215951872, + "W3_frac_600": 0.004933545098708113, + "W4_excess_jy": 0.022704842684680468, + "W4_frac_200": 0.0009035319825428953, + "W4_frac_300": 0.0014294264890049502, + "W4_frac_600": 0.005795080367470665 + }, + { + "hip": "105382", + "name": "tet01 Mic", + "gaia": "6582113664036653824", + "sptype": "ApCrEuSr", + "d_pc": 49.5000495000495, + "m1": 2.41, + "m2": 1.1449354219765746, + "snr": 13.96, + "ruwe": 4.454, + "dms": "1", + "ks": 4.66, + "e_ks": 0.023, + "g_ks": 0.047399999999999665, + "L2": 1.7183988250416593, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.731, + "W3_err": 0.016, + "ks_W3": -0.07099999999999973, + "W3_allsky": 4.713, + "ks_W3_allsky": -0.052999999999999936, + "W3_pred_200": 45.51004178348488, + "W3_pred_300": 66.52617861606032, + "W3_pred_600": 34.425377616155615, + "W4": 4.686, + "W4_err": 0.027, + "ks_W4": -0.0259999999999998, + "W4_allsky": 4.692, + "ks_W4_allsky": -0.03200000000000003, + "W4_pred_200": 114.91483249068537, + "W4_pred_300": 72.63698219008877, + "W4_pred_600": 17.916788006377764, + "W3_excess_mag": -0.056999999999999496, + "W3_excess_sig": -0.7452777018621338, + "W3_excess_err": 0.07648155829374823, + "W3_excess_mag_allsky": -0.05400000000000027, + "W4_excess_mag": -0.05099999999999927, + "W4_excess_sig": -0.5648824247417557, + "W4_excess_err": 0.09028427468479776, + "W4_excess_mag_allsky": -0.05600000000000005, + "W3_excess_jy": 0.0954889984102799, + "W3_frac_200": 0.00209819623687825, + "W3_frac_300": 0.0014353597395300797, + "W3_frac_600": 0.002773796687867485, + "W4_excess_jy": 0.03164224312560546, + "W4_frac_200": 0.0002753538637248614, + "W4_frac_300": 0.0004356216650465829, + "W4_frac_600": 0.0017660667254834907 + }, + { + "hip": "105791", + "name": "HD 204079", + "gaia": "1847354223872439040", + "sptype": "K1V", + "d_pc": 25.167996375808524, + "m1": 0.85, + "m2": 0.3525205952824155, + "snr": 5.42, + "ruwe": 14.54, + "dms": "0", + "ks": 6.202, + "e_ks": 0.016, + "g_ks": 1.8588000000000005, + "L2": 0.02090509637805621, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.167, + "W3_err": 0.016, + "ks_W3": 0.03500000000000014, + "W3_allsky": 6.17, + "ks_W3_allsky": 0.03200000000000003, + "W3_pred_200": 2.1416545600138606, + "W3_pred_300": 3.1306517904601274, + "W3_pred_600": 1.6200219569693648, + "W4": 6.082, + "W4_err": 0.055, + "ks_W4": 0.1200000000000001, + "W4_allsky": 6.09, + "ks_W4_allsky": 0.1120000000000001, + "W4_pred_200": 5.4077707989759585, + "W4_pred_300": 3.418219760666127, + "W4_pred_600": 0.8431451440368755, + "W3_excess_mag": 0.004000000000000448, + "W3_excess_sig": 0.08232815507509196, + "W3_excess_err": 0.048586051714046376, + "W3_excess_mag_allsky": 0.006000000000000227, + "W4_excess_mag": 0.05400000000000027, + "W4_excess_sig": 0.5692648434639133, + "W4_excess_err": 0.09485918658074206, + "W4_excess_mag_allsky": 0.05600000000000005, + "W3_excess_jy": 0.015534209819166405, + "W3_frac_200": 0.007253368544675977, + "W3_frac_300": 0.004961973051906633, + "W3_frac_600": 0.009588888442121381, + "W4_excess_jy": 0.009251164108938231, + "W4_frac_200": 0.001710716754247439, + "W4_frac_300": 0.002706427543188565, + "W4_frac_600": 0.01097220825425714 + }, + { + "hip": "105906", + "name": "HD 205521", + "gaia": "2297894128558108288", + "sptype": "G5", + "d_pc": 48.38397522740468, + "m1": 1.06, + "m2": 0.4223584104164877, + "snr": 10.88, + "ruwe": 21.201, + "dms": "0", + "ks": 6.282, + "e_ks": 0.024, + "g_ks": 1.5991, + "L2": 0.031680678441989164, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.265, + "W3_err": 0.015, + "ks_W3": 0.017000000000000348, + "W3_allsky": 6.267, + "ks_W3_allsky": 0.01499999999999968, + "W3_pred_200": 0.8781847937964647, + "W3_pred_300": 1.2837228040342639, + "W3_pred_600": 0.6642895053148439, + "W4": 6.208, + "W4_err": 0.038, + "ks_W4": 0.07399999999999984, + "W4_allsky": 6.234, + "ks_W4_allsky": 0.04800000000000004, + "W4_pred_200": 2.217454753285007, + "W4_pred_300": 1.4016399617929778, + "W4_pred_600": 0.34573140705367633, + "W3_excess_mag": 0.0019999999999997797, + "W3_excess_sig": 0.04849286449688186, + "W3_excess_err": 0.04124318125460256, + "W3_excess_mag_allsky": -0.012000000000000455, + "W4_excess_mag": -0.008000000000000007, + "W4_excess_sig": -0.1329201340534956, + "W4_excess_err": 0.060186517693251, + "W4_excess_mag_allsky": -0.0389999999999997, + "W3_excess_jy": 0.011924299871265313, + "W3_frac_200": 0.013578349289920619, + "W3_frac_300": 0.009288843225182001, + "W3_frac_600": 0.017950456504071552, + "W4_excess_jy": 0.004973595926221112, + "W4_frac_200": 0.002242930061528007, + "W4_frac_300": 0.003548411904480012, + "W4_frac_600": 0.014385722051132425 + }, + { + "hip": "106694", + "name": "L 1578-44", + "gaia": "1953952387283004544", + "sptype": "M0V", + "d_pc": 20.85897248701529, + "m1": 0.68, + "m2": 0.5509226113768054, + "snr": 15.36, + "ruwe": 9.427, + "dms": "1", + "ks": 6.302, + "e_ks": 0.021, + "g_ks": 3.3552999999999997, + "L2": 0.09212179454906239, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.054, + "W3_err": 0.016, + "ks_W3": 0.24799999999999933, + "W3_allsky": 6.047, + "ks_W3_allsky": 0.2549999999999999, + "W3_pred_200": 13.739505447046794, + "W3_pred_300": 20.08428816249215, + "W3_pred_600": 10.393039530134097, + "W4": 5.944, + "W4_err": 0.047, + "ks_W4": 0.35799999999999965, + "W4_allsky": 5.942, + "ks_W4_allsky": 0.35999999999999943, + "W4_pred_200": 34.69284810732031, + "W4_pred_300": 21.929142961585413, + "W4_pred_600": 5.4090876817551425, + "W3_excess_mag": 0.15799999999999947, + "W3_excess_sig": 3.3817260978053767, + "W3_excess_err": 0.04672170229946654, + "W3_excess_mag_allsky": 0.1559999999999997, + "W4_excess_mag": 0.1869999999999994, + "W4_excess_sig": 1.6519571820227443, + "W4_excess_err": 0.11319905989998277, + "W4_excess_mag_allsky": 0.22499999999999964, + "W3_excess_jy": 0.01624870759343637, + "W3_frac_200": 0.0011826268169593333, + "W3_frac_300": 0.0008090258147053072, + "W3_frac_600": 0.001563422090941159, + "W4_excess_jy": 0.012873308288915239, + "W4_frac_200": 0.0003710651904130906, + "W4_frac_300": 0.0005870411037707301, + "W4_frac_600": 0.0023799407675229446, + "reading": "Ks-W3 +0.16 within the M0 photospheric colour range" + }, + { + "hip": "107133", + "name": "CD-31 18409", + "gaia": "6785377870401276288", + "sptype": "K6+Vk:", + "d_pc": 31.921345803939094, + "m1": 0.68, + "m2": 0.4340616856152811, + "snr": 6.0, + "ruwe": 5.668, + "dms": "0", + "ks": 7.186, + "e_ks": 0.02, + "g_ks": 2.7330000000000005, + "L2": 0.035498157370290356, + "qph": "AAAA", + "ccf": "0000", + "W3": 7.062, + "W3_err": 0.017, + "ks_W3": 0.12399999999999967, + "W3_allsky": 7.064, + "ks_W3_allsky": 0.12199999999999989, + "W3_pred_200": 2.260674097101326, + "W3_pred_300": 3.3046335024689015, + "W3_pred_600": 1.7100524721560793, + "W4": 6.936, + "W4_err": 0.093, + "ks_W4": 0.25, + "W4_allsky": 6.951, + "ks_W4_allsky": 0.23500000000000032, + "W4_pred_200": 5.708300300412017, + "W4_pred_300": 3.6081826711996903, + "W4_pred_600": 0.8900017877806564, + "W3_excess_mag": 0.03399999999999981, + "W3_excess_sig": 0.8120870949573029, + "W3_excess_err": 0.04186743049006021, + "W3_excess_mag_allsky": 0.032999999999999474, + "W4_excess_mag": 0.08699999999999974, + "W4_excess_sig": 0.6276555223311151, + "W4_excess_err": 0.13861106435721524, + "W4_excess_mag_allsky": 0.14300000000000068, + "W3_excess_jy": 0.005814853210813217, + "W3_frac_200": 0.002572176687594695, + "W3_frac_300": 0.0017596060823292274, + "W3_frac_600": 0.003400394610980385, + "W4_excess_jy": 0.0065610705726157695, + "W4_frac_200": 0.001149391277144652, + "W4_frac_300": 0.001818386476102184, + "W4_frac_600": 0.007371974599036159 + }, + { + "hip": "107143", + "name": "HD 206276", + "gaia": "6578350001374194816", + "sptype": "K3.5V", + "d_pc": 29.918621349928195, + "m1": 0.8, + "m2": 0.3819410636043415, + "snr": 10.44, + "ruwe": 33.003, + "dms": "0", + "ks": 6.153, + "e_ks": 0.02, + "g_ks": 2.319400000000001, + "L2": 0.02513734746459952, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.045, + "W3_err": 0.015, + "ks_W3": 0.10799999999999965, + "W3_allsky": 6.044, + "ks_W3_allsky": 0.10899999999999999, + "W3_pred_200": 1.8223459552039498, + "W3_pred_300": 2.6638892816870032, + "W3_pred_600": 1.3784858285481874, + "W4": 5.981, + "W4_err": 0.053, + "ks_W4": 0.1719999999999997, + "W4_allsky": 5.988, + "ks_W4_allsky": 0.16499999999999915, + "W4_pred_200": 4.601502700846438, + "W4_pred_300": 2.9085824909166575, + "W4_pred_600": 0.717436962791753, + "W3_excess_mag": 0.05400000000000027, + "W3_excess_sig": 0.8761039966015449, + "W3_excess_err": 0.061636518278046, + "W3_excess_mag_allsky": 0.05400000000000027, + "W4_excess_mag": 0.09899999999999931, + "W4_excess_sig": 1.5444260701320869, + "W4_excess_err": 0.06410148204214938, + "W4_excess_mag_allsky": 0.1089999999999991, + "W3_excess_jy": 0.02246180171929338, + "W3_frac_200": 0.012325761557595984, + "W3_frac_300": 0.008431957691976086, + "W3_frac_600": 0.016294546707781542, + "W4_excess_jy": 0.006565314308574178, + "W4_frac_200": 0.0014267761501838305, + "W4_frac_300": 0.0022572212853090097, + "W4_frac_600": 0.00915106782765507 + }, + { + "hip": "107788", + "name": "13 Peg", + "gaia": "1773172957482270464", + "sptype": "F2III-IV", + "d_pc": 31.90097936006635, + "m1": 1.55, + "m2": 0.7218228853441775, + "snr": 31.88, + "ruwe": 12.416, + "dms": "1", + "ks": 4.278, + "e_ks": 0.017, + "g_ks": 0.9041000000000006, + "L2": 0.27147046627410487, + "qph": "BAAA", + "ccf": "0000", + "W3": 4.345, + "W3_err": 0.015, + "ks_W3": -0.06700000000000017, + "W3_allsky": 4.356, + "ks_W3_allsky": -0.07800000000000029, + "W3_pred_200": 17.310479193118788, + "W3_pred_300": 25.30430616191875, + "W3_pred_600": 13.094248205150453, + "W4": 4.286, + "W4_err": 0.026, + "ks_W4": -0.008000000000000007, + "W4_allsky": 4.288, + "ks_W4_allsky": -0.010000000000000675, + "W4_pred_200": 43.70971194169747, + "W4_pred_300": 27.628648965748962, + "W4_pred_600": 6.81493960096675, + "W3_excess_mag": -0.06799999999999962, + "W3_excess_sig": -1.2610478975800314, + "W3_excess_err": 0.053923407771023266, + "W3_excess_mag_allsky": -0.08400000000000052, + "W4_excess_mag": -0.06500000000000039, + "W4_excess_sig": -1.2536418330783634, + "W4_excess_err": 0.05184893985261366, + "W4_excess_mag_allsky": -0.06900000000000084, + "W3_excess_jy": 0.0930321089420419, + "W3_frac_200": 0.005374323142886984, + "W3_frac_300": 0.003676532695531833, + "W3_frac_600": 0.00710480720118387, + "W4_excess_jy": 0.024864493500472564, + "W4_frac_200": 0.0005688551215720263, + "W4_frac_300": 0.0008999532887509953, + "W4_frac_600": 0.0036485273467347164 + }, + { + "hip": "108431", + "name": "del Ind", + "gaia": "6413081274731392256", + "sptype": "F0IV", + "d_pc": 47.067683328626565, + "m1": 2.18, + "m2": 0.6226218772969826, + "snr": 11.84, + "ruwe": 11.62, + "dms": "1", + "ks": 3.416, + "e_ks": 0.24, + "g_ks": 0.8706999999999998, + "L2": 0.15027872658349467, + "qph": "CBAA", + "ccf": "0000", + "W3": 3.643, + "W3_err": 0.013, + "ks_W3": -0.22699999999999987, + "W3_allsky": 3.632, + "ks_W3_allsky": -0.2160000000000002, + "W3_pred_200": 4.401963064835292, + "W3_pred_300": 6.434750873351287, + "W3_pred_600": 3.329797882416284, + "W4": 3.603, + "W4_err": 0.023, + "ks_W4": -0.18700000000000028, + "W4_allsky": 3.6, + "ks_W4_allsky": -0.18400000000000016, + "W4_pred_200": 11.11514796299966, + "W4_pred_300": 7.0258189228448895, + "W4_pred_600": 1.733003002277612, + "W3_excess_mag": -0.23499999999999988, + "W3_excess_sig": -0.9624553739021521, + "W3_excess_err": 0.2441671649119922, + "W3_excess_mag_allsky": -0.22500000000000053, + "W4_excess_mag": -0.24800000000000022, + "W4_excess_sig": -0.9988478869297289, + "W4_excess_err": 0.24828605360752748, + "W4_excess_mag_allsky": -0.25200000000000067, + "W3_excess_jy": 1.064860862856687, + "W3_frac_200": 0.24190590588168207, + "W3_frac_300": 0.16548595024349344, + "W3_frac_600": 0.31979744731051524, + "W4_excess_jy": 0.29851526077639284, + "W4_frac_200": 0.026856616013578655, + "W4_frac_300": 0.0424883225791305, + "W4_frac_600": 0.17225317000839985 + }, + { + "hip": "109110", + "name": "NT Aqr", + "gaia": "2621051110039687936", + "sptype": "G5V", + "d_pc": 36.39937393076839, + "m1": 1.11, + "m2": 0.5574233702759721, + "snr": 19.93, + "ruwe": 2.121, + "dms": "0", + "ks": 5.884, + "e_ks": 0.017, + "g_ks": 1.5389999999999997, + "L2": 0.09654742408492367, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.854, + "W3_err": 0.016, + "ks_W3": 0.03000000000000025, + "W3_allsky": 5.857, + "ks_W3_allsky": 0.027000000000000135, + "W3_pred_200": 4.728761354250569, + "W3_pred_300": 6.91246173717548, + "W3_pred_600": 3.576999468627905, + "W4": 5.788, + "W4_err": 0.054, + "ks_W4": 0.09600000000000009, + "W4_allsky": 5.81, + "ks_W4_allsky": 0.07400000000000073, + "W4_pred_200": 11.940327840114762, + "W4_pred_300": 7.5474102156180605, + "W4_pred_600": 1.8616597875241852, + "W3_excess_mag": 0.0129999999999999, + "W3_excess_sig": 0.3419868671470241, + "W3_excess_err": 0.03801315561749642, + "W3_excess_mag_allsky": 0.002000000000000668, + "W4_excess_mag": 0.0, + "W4_excess_sig": 0.0, + "W4_excess_err": 0.07780579141015105, + "W4_excess_mag_allsky": -0.0029999999999992255, + "W3_excess_jy": 0.01597501519154844, + "W3_frac_200": 0.0033782663143253964, + "W3_frac_300": 0.0023110457314554386, + "W3_frac_600": 0.0044660378989869595, + "W4_excess_jy": 0.009707121471898738, + "W4_frac_200": 0.0008129694261230134, + "W4_frac_300": 0.0012861526264746454, + "W4_frac_600": 0.0052142295477135515 + }, + { + "hip": "109361", + "name": "HD 210388", + "gaia": "1900442940229593216", + "sptype": "G0", + "d_pc": 45.32064355313845, + "m1": 1.2, + "m2": 0.30308237158376056, + "snr": 26.91, + "ruwe": 5.741, + "dms": "0", + "ks": 6.007, + "e_ks": 0.015, + "g_ks": 1.3313000000000006, + "L2": 0.014767854093587296, + "qph": "BAAA", + "ccf": "dd00", + "W3": 6.033, + "W3_err": 0.015, + "ks_W3": -0.02600000000000069, + "W3_allsky": 6.033, + "ks_W3_allsky": -0.02600000000000069, + "W3_pred_200": 0.4665732008585709, + "W3_pred_300": 0.6820325994305749, + "W3_pred_600": 0.352932188055328, + "W4": 5.971, + "W4_err": 0.043, + "ks_W4": 0.03599999999999959, + "W4_allsky": 5.985, + "ks_W4_allsky": 0.021999999999999353, + "W4_pred_200": 1.1781176004273044, + "W4_pred_300": 0.7446811286698316, + "W4_pred_600": 0.1836845848002209, + "W3_excess_mag": -0.027000000000000135, + "W3_excess_sig": -0.7348469228349571, + "W3_excess_err": 0.03674234614174767, + "W3_excess_mag_allsky": -0.029000000000000803, + "W4_excess_mag": -0.023000000000000576, + "W4_excess_sig": -0.42175219731275776, + "W4_excess_err": 0.05453439281774392, + "W4_excess_mag_allsky": -0.030000000000001137, + "W3_excess_jy": 0.013070693548540107, + "W3_frac_200": 0.028014239833080632, + "W3_frac_300": 0.019164323757328832, + "W3_frac_600": 0.0370345748869215, + "W4_excess_jy": 0.005561103076130514, + "W4_frac_200": 0.00472032934073262, + "W4_frac_300": 0.007467764204074699, + "W4_frac_600": 0.030275284570988267 + }, + { + "hip": "109857", + "name": "eps Cep", + "gaia": "2198483880690116480", + "sptype": "F0V(Sr)", + "d_pc": 26.187608023883097, + "m1": 1.8, + "m2": 0.37554530962131416, + "snr": 30.57, + "ruwe": 3.828, + "dms": "0", + "ks": 3.538, + "e_ks": 0.31, + "g_ks": 0.5619000000000001, + "L2": 0.024179717532745188, + "qph": "CBAA", + "ccf": "HHH0", + "W3": 3.475, + "W3_err": 0.012, + "ks_W3": 0.06299999999999972, + "W3_allsky": 3.44, + "ks_W3_allsky": 0.09799999999999986, + "W3_pred_200": 2.287989848386465, + "W3_pred_300": 3.344563427334109, + "W3_pred_600": 1.730715055972936, + "W4": 3.425, + "W4_err": 0.021, + "ks_W4": 0.11299999999999999, + "W4_allsky": 3.419, + "ks_W4_allsky": 0.11899999999999977, + "W4_pred_200": 5.77727375902194, + "W4_pred_300": 3.651780384184599, + "W4_pred_600": 0.9007556896851892, + "W3_excess_mag": 0.06200000000000028, + "W3_excess_sig": 0.1941664012932166, + "W3_excess_err": 0.3193137411367695, + "W3_excess_mag_allsky": 0.09699999999999953, + "W4_excess_mag": 0.07299999999999995, + "W4_excess_sig": 0.22409520105679903, + "W4_excess_err": 0.3257544099817533, + "W4_excess_mag_allsky": 0.08399999999999963, + "W3_excess_jy": 1.8276873350293206, + "W3_frac_200": 0.7988179389511895, + "W3_frac_300": 0.5464651440281212, + "W3_frac_600": 1.0560301816995927, + "W4_excess_jy": 0.520792492409033, + "W4_frac_200": 0.09014502586029441, + "W4_frac_300": 0.14261331121239376, + "W4_frac_600": 0.5781728590479935 + }, + { + "hip": "110483", + "name": "HD 212146", + "gaia": "6614498095403935744", + "sptype": "G8V", + "d_pc": 38.48522167487685, + "m1": 0.91, + "m2": 0.48338535849632963, + "snr": 5.16, + "ruwe": 4.178, + "dms": "1", + "ks": 6.193, + "e_ks": 0.023, + "g_ks": 1.8047000000000004, + "L2": 0.054597652097140174, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.186, + "W3_err": 0.015, + "ks_W3": 0.006999999999999673, + "W3_allsky": 6.182, + "ks_W3_allsky": 0.010999999999999233, + "W3_pred_200": 2.392106524303918, + "W3_pred_300": 3.496760268021443, + "W3_pred_600": 1.8094725289203215, + "W4": 6.196, + "W4_err": 0.053, + "ks_W4": -0.0030000000000001137, + "W4_allsky": 6.204, + "ks_W4_allsky": -0.01100000000000012, + "W4_pred_200": 6.040172888613222, + "W4_pred_300": 3.817957360472318, + "W4_pred_600": 0.9417452457751747, + "W3_excess_mag": -0.02800000000000047, + "W3_excess_sig": -0.6884783354468763, + "W3_excess_err": 0.04066939881532551, + "W3_excess_mag_allsky": -0.021000000000000796, + "W4_excess_mag": -0.08800000000000008, + "W4_excess_sig": -1.0359787875736937, + "W4_excess_err": 0.08494382419363992, + "W4_excess_mag_allsky": -0.0860000000000003, + "W3_excess_jy": 0.01263565395197621, + "W3_frac_200": 0.005282228790230432, + "W3_frac_300": 0.003613531664590146, + "W3_frac_600": 0.006983059289391737, + "W4_excess_jy": 0.007352813147971447, + "W4_frac_200": 0.0012173183257440828, + "W4_frac_300": 0.0019258499909128985, + "W4_frac_600": 0.007807645624926047 + }, + { + "hip": "111965", + "name": "HD 214810", + "gaia": "2625365215709552512", + "sptype": "G9VFe-0.7", + "d_pc": 34.492273730684325, + "m1": 1.33, + "m2": 0.31005087965482026, + "snr": 6.04, + "ruwe": 17.455, + "dms": "1", + "ks": 4.967, + "e_ks": 0.027, + "g_ks": 1.2393, + "L2": 0.015560504089210642, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.03, + "W3_err": 0.015, + "ks_W3": -0.06300000000000061, + "W3_allsky": 5.039, + "ks_W3_allsky": -0.07200000000000006, + "W3_pred_200": 0.8487397601497272, + "W3_pred_300": 1.2406803129493704, + "W3_pred_600": 0.6420162583019794, + "W4": 4.983, + "W4_err": 0.032, + "ks_W4": -0.016000000000000014, + "W4_allsky": 4.996, + "ks_W4_allsky": -0.029000000000000803, + "W4_pred_200": 2.143104764214565, + "W4_pred_300": 1.354643775879548, + "W4_pred_600": 0.33413923079949626, + "W3_excess_mag": -0.04400000000000048, + "W3_excess_sig": -1.0218750876277172, + "W3_excess_err": 0.04305810028322197, + "W3_excess_mag_allsky": -0.054999999999999716, + "W4_excess_mag": -0.056999999999999496, + "W4_excess_sig": -1.092450615225606, + "W4_excess_err": 0.052176271591213505, + "W4_excess_mag_allsky": -0.05600000000000094, + "W3_excess_jy": 0.038926529114959973, + "W3_frac_200": 0.04586391605843103, + "W3_frac_300": 0.031375148544449005, + "W3_frac_600": 0.0606316874558813, + "W4_excess_jy": 0.013173885359314312, + "W4_frac_200": 0.0061471028291715185, + "W4_frac_300": 0.009724981278388648, + "W4_frac_600": 0.03942633532672325 + }, + { + "hip": "112222", + "name": "HD 215243", + "gaia": "2717610530428304000", + "sptype": "G8IV", + "d_pc": 36.89492325855962, + "m1": 1.3, + "m2": 0.3131532976316619, + "snr": 6.58, + "ruwe": 14.019, + "dms": "0", + "ks": 5.322, + "e_ks": 0.017, + "g_ks": 1.0923999999999996, + "L2": 0.015920947547527077, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.324, + "W3_err": 0.016, + "ks_W3": -0.0019999999999997797, + "W3_allsky": 5.325, + "ks_W3_allsky": -0.0030000000000001137, + "W3_pred_200": 0.7589798087855838, + "W3_pred_300": 1.1094700058828793, + "W3_pred_600": 0.574118710872354, + "W4": 5.282, + "W4_err": 0.036, + "ks_W4": 0.040000000000000036, + "W4_allsky": 5.294, + "ks_W4_allsky": 0.02800000000000047, + "W4_pred_200": 1.9164569877863373, + "W4_pred_300": 1.211381064330324, + "W4_pred_600": 0.29880175456281793, + "W3_excess_mag": 0.019000000000000128, + "W3_excess_sig": 0.3593321748844429, + "W3_excess_err": 0.0528758661984842, + "W3_excess_mag_allsky": 0.0009999999999994458, + "W4_excess_mag": -0.013999999999999346, + "W4_excess_sig": -0.21795310803260276, + "W4_excess_err": 0.06423400026901722, + "W4_excess_mag_allsky": -0.01499999999999968, + "W3_excess_jy": 0.03697166889997875, + "W3_frac_200": 0.048712322082896754, + "W3_frac_300": 0.03332372096941722, + "W3_frac_600": 0.06439725478342545, + "W4_excess_jy": 0.012526630877102717, + "W4_frac_200": 0.006536348562443861, + "W4_frac_300": 0.010340784783545954, + "W4_frac_600": 0.04192288259963751 + }, + { + "hip": "112379", + "name": "Ross 223", + "gaia": "1982413731100652416", + "sptype": "K6V", + "d_pc": 40.37793749495276, + "m1": 0.7, + "m2": 0.3506495985948433, + "snr": 23.66, + "ruwe": 1.305, + "dms": "1", + "ks": 7.263, + "e_ks": 0.018, + "g_ks": 2.8894, + "L2": 0.020650783422187572, + "qph": "AAAA", + "ccf": "0000", + "W3": 7.145, + "W3_err": 0.016, + "ks_W3": 0.11800000000000033, + "W3_allsky": 7.148, + "ks_W3_allsky": 0.11500000000000021, + "W3_pred_200": 0.8219450849082747, + "W3_pred_300": 1.201512092459644, + "W3_pred_600": 0.6217478345181103, + "W4": 7.1, + "W4_err": 0.094, + "ks_W4": 0.16300000000000026, + "W4_allsky": 7.171, + "ks_W4_allsky": 0.09199999999999964, + "W4_pred_200": 2.0754470452508533, + "W4_pred_300": 1.3118777340999754, + "W4_pred_600": 0.3235904706316896, + "W3_excess_mag": 0.02800000000000047, + "W3_excess_sig": 0.6160295536709361, + "W3_excess_err": 0.045452364798324596, + "W3_excess_mag_allsky": 0.0259999999999998, + "W4_excess_mag": -0.008000000000000007, + "W4_excess_sig": -0.054113079060155674, + "W4_excess_err": 0.1478385658133901, + "W4_excess_mag_allsky": -0.04300000000000015, + "W3_excess_jy": 0.005877777325733585, + "W3_frac_200": 0.007151058426719004, + "W3_frac_300": 0.00489198349531468, + "W3_frac_600": 0.009453635379830787, + "W4_excess_jy": 0.006099093278078349, + "W4_frac_200": 0.0029386889403102885, + "W4_frac_300": 0.004649132399722206, + "W4_frac_600": 0.01884818569030215 + }, + { + "hip": "112506", + "name": "HD 215775", + "gaia": "2829924436319213440", + "sptype": "K0", + "d_pc": 44.245829830538476, + "m1": 1.02, + "m2": 0.6986549824832708, + "snr": 26.81, + "ruwe": 12.075, + "dms": "0", + "ks": 6.185, + "e_ks": 0.018, + "g_ks": 1.6465000000000005, + "L2": 0.2382599478292997, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.2, + "W3_err": 0.016, + "ks_W3": -0.015000000000000568, + "W3_allsky": 6.201, + "ks_W3_allsky": -0.016000000000000014, + "W3_pred_200": 7.897704616240274, + "W3_pred_300": 11.544795112615082, + "W3_pred_600": 5.974098310179747, + "W4": 6.179, + "W4_err": 0.054, + "ks_W4": 0.005999999999999339, + "W4_allsky": 6.208, + "ks_W4_allsky": -0.023000000000000576, + "W4_pred_200": 19.94204723770456, + "W4_pred_300": 12.605249458606382, + "W4_pred_600": 3.1092368585237695, + "W3_excess_mag": -0.0420000000000007, + "W3_excess_sig": -1.0917380143110946, + "W3_excess_err": 0.03847076812334269, + "W3_excess_mag_allsky": -0.04499999999999993, + "W4_excess_mag": -0.0680000000000005, + "W4_excess_sig": -1.0568387826723635, + "W4_excess_err": 0.06434283176858165, + "W4_excess_mag_allsky": -0.09500000000000064, + "W3_excess_jy": 0.011762986971697907, + "W3_frac_200": 0.0014894184504582943, + "W3_frac_300": 0.0010188995869527737, + "W3_frac_600": 0.0019689978907200113, + "W4_excess_jy": 0.005493342947376894, + "W4_frac_200": 0.00027546534625545337, + "W4_frac_300": 0.0004357980352087558, + "W4_frac_600": 0.0017667817529942286 + }, + { + "hip": "112816", + "name": "HD 216013", + "gaia": "6392352869207924224", + "sptype": "G8V", + "d_pc": 42.06098843322818, + "m1": 1.0, + "m2": 0.3787813702186966, + "snr": 6.22, + "ruwe": 12.089, + "dms": "1", + "ks": 6.507, + "e_ks": 0.02, + "g_ks": 1.7354000000000003, + "L2": 0.02466162222148271, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.456, + "W3_err": 0.015, + "ks_W3": 0.05099999999999927, + "W3_allsky": 6.457, + "ks_W3_allsky": 0.04999999999999982, + "W3_pred_200": 0.9046013375938698, + "W3_pred_300": 1.3223382753064281, + "W3_pred_600": 0.6842718973299046, + "W4": 6.351, + "W4_err": 0.056, + "ks_W4": 0.1559999999999997, + "W4_allsky": 6.357, + "ks_W4_allsky": 0.14999999999999947, + "W4_pred_200": 2.284157673926211, + "W4_pred_300": 1.4438024812313175, + "W4_pred_600": 0.35613130115465386, + "W3_excess_mag": 0.017999999999998906, + "W3_excess_sig": 0.46093276775839753, + "W3_excess_err": 0.03905124837953327, + "W3_excess_mag_allsky": 0.013999999999999346, + "W4_excess_mag": 0.0779999999999994, + "W4_excess_sig": 1.1500620419207503, + "W4_excess_err": 0.06782242797069404, + "W4_excess_mag_allsky": 0.07499999999999929, + "W3_excess_jy": 0.00944009107163748, + "W3_frac_200": 0.01043563687043287, + "W3_frac_300": 0.007138938082579443, + "W3_frac_600": 0.013795818750519542, + "W4_excess_jy": 0.004966622281816737, + "W4_frac_200": 0.0021743780381323985, + "W4_frac_300": 0.0034399596526396427, + "W4_frac_600": 0.013946042557095894 + }, + { + "hip": "113010", + "name": "HD 216405", + "gaia": "6547730797267255424", + "sptype": "K1/2V", + "d_pc": 49.307233371135545, + "m1": 0.8, + "m2": 0.37928730299645846, + "snr": 10.2, + "ruwe": 13.287, + "dms": "1", + "ks": 7.037, + "e_ks": 0.021, + "g_ks": 2.0980999999999996, + "L2": 0.024737450399702647, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.919, + "W3_err": 0.017, + "ks_W3": 0.11800000000000033, + "W3_allsky": 6.918, + "ks_W3_allsky": 0.11899999999999977, + "W3_pred_200": 0.6602800874713538, + "W3_pred_300": 0.9651916217683516, + "W3_pred_600": 0.499458810689957, + "W4": 6.801, + "W4_err": 0.086, + "ks_W4": 0.23599999999999977, + "W4_allsky": 6.803, + "ks_W4_allsky": 0.23399999999999999, + "W4_pred_200": 1.6672359038844107, + "W4_pred_300": 1.0538498993760854, + "W4_pred_600": 0.25994479214804483, + "W3_excess_mag": 0.0730000000000004, + "W3_excess_sig": 1.1201689983628147, + "W3_excess_err": 0.0651687380267564, + "W3_excess_mag_allsky": 0.05900000000000016, + "W4_excess_mag": 0.12400000000000011, + "W4_excess_sig": 1.0562981540533785, + "W4_excess_err": 0.11739109788668053, + "W4_excess_mag_allsky": 0.15399999999999991, + "W3_excess_jy": 0.010671537194391447, + "W3_frac_200": 0.016162136942914292, + "W3_frac_300": 0.011056392278706128, + "W3_frac_600": 0.02136620070762129, + "W4_excess_jy": 0.006100017178252373, + "W4_frac_200": 0.003658760685299689, + "W4_frac_300": 0.005788316895853753, + "W4_frac_600": 0.02346658737743923 + }, + { + "hip": "114382", + "name": "HD 218630", + "gaia": "6541741997949120512", + "sptype": "F5V", + "d_pc": 34.54947484798231, + "m1": 1.4, + "m2": 0.35009593630974545, + "snr": 40.22, + "ruwe": 1.47, + "dms": "1", + "ks": 4.584, + "e_ks": 0.017, + "g_ks": 1.1712000000000007, + "L2": 0.020575864749065725, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.596, + "W3_err": 0.013, + "ks_W3": -0.012000000000000455, + "W3_allsky": 4.604, + "ks_W3_allsky": -0.020000000000000462, + "W3_pred_200": 1.118586900671599, + "W3_pred_300": 1.635140488459596, + "W3_pred_600": 0.8461380157659845, + "W4": 4.562, + "W4_err": 0.025, + "ks_W4": 0.021999999999999353, + "W4_allsky": 4.564, + "ks_W4_allsky": 0.019999999999999574, + "W4_pred_200": 2.8244805163769, + "W4_pred_300": 1.7853373365092047, + "W4_pred_600": 0.4403749937517531, + "W3_excess_mag": 0.009999999999998899, + "W3_excess_sig": 0.27136267706459866, + "W3_excess_err": 0.03685105154537656, + "W3_excess_mag_allsky": -0.001000000000000334, + "W4_excess_mag": -0.012000000000000455, + "W4_excess_sig": -0.25700544377522205, + "W4_excess_err": 0.04669161798181871, + "W4_excess_mag_allsky": 0.010999999999999233, + "W3_excess_jy": 0.04925473212308671, + "W3_frac_200": 0.04403299564255061, + "W3_frac_300": 0.030122630116931257, + "W3_frac_600": 0.058211227016549794, + "W4_excess_jy": 0.017239079683138727, + "W4_frac_200": 0.006103451442905382, + "W4_frac_300": 0.009655922906337454, + "W4_frac_600": 0.03914636373030911 + }, + { + "hip": "114430", + "name": "6 And", + "gaia": "1931708859034495488", + "sptype": "F5IV", + "d_pc": 28.10172825628776, + "m1": 1.3, + "m2": 0.8160886623328274, + "snr": 18.73, + "ruwe": 10.055, + "dms": "0", + "ks": 4.674, + "e_ks": 0.018, + "g_ks": 1.1281999999999996, + "L2": 0.4435569387783572, + "qph": "BBAA", + "ccf": "0000", + "W3": 4.67, + "W3_err": 0.016, + "ks_W3": 0.004000000000000448, + "W3_allsky": 4.678, + "ks_W3_allsky": -0.0039999999999995595, + "W3_pred_200": 36.44834821069334, + "W3_pred_300": 53.27987468921356, + "W3_pred_600": 27.57079759688515, + "W4": 4.616, + "W4_err": 0.027, + "ks_W4": 0.05800000000000072, + "W4_allsky": 4.6, + "ks_W4_allsky": 0.07400000000000073, + "W4_pred_200": 92.03366257321134, + "W4_pred_300": 58.17393076529837, + "W4_pred_600": 14.349301878923152, + "W3_excess_mag": 0.0259999999999998, + "W3_excess_sig": 0.675837818383042, + "W3_excess_err": 0.03847076812334269, + "W3_excess_mag_allsky": 0.011000000000001009, + "W4_excess_mag": 0.018000000000000682, + "W4_excess_sig": 0.3653879654183977, + "W4_excess_err": 0.04926270622895114, + "W4_excess_mag_allsky": 0.03200000000000092, + "W3_excess_jy": 0.04814127808432611, + "W3_frac_200": 0.0013208082244506834, + "W3_frac_300": 0.0009035546416942353, + "W3_frac_600": 0.0017460966776588626, + "W4_excess_jy": 0.017368813274690132, + "W4_frac_200": 0.00018872239557861246, + "W4_frac_300": 0.0002985669533792427, + "W4_frac_600": 0.0012104291498809545 + }, + { + "hip": "114859", + "name": "L 10-21", + "gaia": "6350952476849650432", + "sptype": "K7", + "d_pc": 22.383382576775002, + "m1": 0.7, + "m2": 0.6803554893706388, + "snr": 35.34, + "ruwe": 1.937, + "dms": "1", + "ks": 6.346, + "e_ks": 0.023, + "g_ks": 3.1173, + "L2": 0.21426121966576295, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.134, + "W3_err": 0.015, + "ks_W3": 0.21199999999999974, + "W3_allsky": 6.133, + "ks_W3_allsky": 0.21300000000000008, + "W3_pred_200": 27.75151333776695, + "W3_pred_300": 40.56691799927619, + "W3_pred_600": 20.99220938133911, + "W4": 6.08, + "W4_err": 0.04, + "ks_W4": 0.266, + "W4_allsky": 6.093, + "ks_W4_allsky": 0.2530000000000001, + "W4_pred_200": 70.07377672260866, + "W4_pred_300": 44.29321752007041, + "W4_pred_600": 10.925456489239492, + "W3_excess_mag": 0.12199999999999989, + "W3_excess_sig": 2.5777679671183846, + "W3_excess_err": 0.047327766329713646, + "W3_excess_mag_allsky": 0.12399999999999967, + "W4_excess_mag": 0.09700000000000042, + "W4_excess_sig": 0.854047193319985, + "W4_excess_err": 0.11357686174569223, + "W4_excess_mag_allsky": 0.16100000000000048, + "W3_excess_jy": 0.015571194408575961, + "W3_frac_200": 0.0005610935237677713, + "W3_frac_300": 0.00038383971907488234, + "W3_frac_600": 0.0007417606277506872, + "W4_excess_jy": 0.011401860222239147, + "W4_frac_200": 0.0001627122263921083, + "W4_frac_300": 0.00025741774611593, + "W4_frac_600": 0.0010436049270315492 + }, + { + "hip": "115004", + "name": "BD+08 5036", + "gaia": "2762224039359326336", + "sptype": "K5", + "d_pc": 34.79229002852968, + "m1": 0.7, + "m2": 0.3368175873688632, + "snr": 5.59, + "ruwe": 9.084, + "dms": "0", + "ks": 6.799, + "e_ks": 0.017, + "g_ks": 2.4815999999999994, + "L2": 0.018825034706844254, + "qph": "AAAA", + "ccf": "h000", + "W3": 6.715, + "W3_err": 0.017, + "ks_W3": 0.08400000000000052, + "W3_allsky": 6.719, + "ks_W3_allsky": 0.08000000000000007, + "W3_pred_200": 1.009169901693043, + "W3_pred_300": 1.4751956821614354, + "W3_pred_600": 0.7633711942063918, + "W4": 6.716, + "W4_err": 0.082, + "ks_W4": 0.08300000000000018, + "W4_allsky": 6.74, + "ks_W4_allsky": 0.05900000000000016, + "W4_pred_200": 2.548197840806669, + "W4_pred_300": 1.6107007004034897, + "W4_pred_600": 0.3972987605037264, + "W3_excess_mag": -0.0009999999999994458, + "W3_excess_sig": -0.019279397125465367, + "W3_excess_err": 0.05186884182589852, + "W3_excess_mag_allsky": 0.008000000000000063, + "W4_excess_mag": -0.011999999999999844, + "W4_excess_sig": -0.1035766421589113, + "W4_excess_err": 0.11585623698429014, + "W4_excess_mag_allsky": -0.025999999999999857, + "W3_excess_jy": 0.010057715083422578, + "W3_frac_200": 0.009966324864177142, + "W3_frac_300": 0.0068178853863550895, + "W3_frac_600": 0.013175392469293628, + "W4_excess_jy": 0.0064959851167902425, + "W4_frac_200": 0.002549246770703583, + "W4_frac_300": 0.00403301812382832, + "W4_frac_600": 0.0163503785125182 + }, + { + "hip": "115112", + "name": "HD 219829", + "gaia": "2661015540211140864", + "sptype": "K1V", + "d_pc": 32.68828451882845, + "m1": 0.9, + "m2": 0.3649779966971181, + "snr": 13.05, + "ruwe": 1.776, + "dms": "1", + "ks": 5.913, + "e_ks": 0.017, + "g_ks": 2.1220999999999997, + "L2": 0.02264337750689515, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.942, + "W3_err": 0.015, + "ks_W3": -0.028999999999999915, + "W3_allsky": 5.936, + "ks_W3_allsky": -0.022999999999999687, + "W3_pred_200": 1.3751544607230999, + "W3_pred_300": 2.0101886900911516, + "W3_pred_600": 1.0402146369400351, + "W4": 5.913, + "W4_err": 0.047, + "ks_W4": 0.0, + "W4_allsky": 5.945, + "ks_W4_allsky": -0.03200000000000003, + "W4_pred_200": 3.47232475097748, + "W4_pred_300": 2.194835824308404, + "W4_pred_600": 0.5413827362764919, + "W3_excess_mag": -0.08700000000000063, + "W3_excess_sig": -1.122299752684997, + "W3_excess_err": 0.07751939692747975, + "W3_excess_mag_allsky": -0.0829999999999993, + "W4_excess_mag": -0.0990000000000002, + "W4_excess_sig": -0.890293411259254, + "W4_excess_err": 0.11119929536485286, + "W4_excess_mag_allsky": -0.11500000000000021, + "W3_excess_jy": 0.03177252740994318, + "W3_frac_200": 0.02310469719396916, + "W3_frac_300": 0.01580574379239118, + "W3_frac_600": 0.030544203361151857, + "W4_excess_jy": 0.012974410336861603, + "W4_frac_200": 0.0037365198440063043, + "W4_frac_300": 0.005911335232078171, + "W4_frac_600": 0.023965319666631162 + }, + { + "hip": "115126", + "name": "94 Aqr", + "gaia": "2411855072801158656", + "sptype": "G8.5IV", + "d_pc": 25.35689834419454, + "m1": 1.39, + "m2": 0.654715198029726, + "snr": 13.5, + "ruwe": 14.081, + "dms": "0", + "ks": 3.352, + "e_ks": 0.256, + "g_ks": 1.5913, + "L2": 0.1837425289862771, + "qph": "UUAA", + "ccf": "HHH0", + "W3": 3.221, + "W3_err": 0.011, + "ks_W3": 0.13099999999999978, + "W3_allsky": 3.154, + "ks_W3_allsky": 0.19799999999999995, + "W3_pred_200": 18.54436488875799, + "W3_pred_300": 27.107989414296767, + "W3_pred_600": 14.02760223742398, + "W4": 3.243, + "W4_err": 0.019, + "ks_W4": 0.10899999999999999, + "W4_allsky": 3.224, + "ks_W4_allsky": 0.12799999999999967, + "W4_pred_200": 46.82532692402621, + "W4_pred_300": 29.598010666736773, + "W4_pred_600": 7.300706424430579, + "W3_excess_mag": 0.11599999999999921, + "W3_excess_sig": 0.44963604602393314, + "W3_excess_err": 0.2579864337518545, + "W3_excess_mag_allsky": 0.17899999999999983, + "W4_excess_mag": 0.03300000000000036, + "W4_excess_sig": 0.1273352220455708, + "W4_excess_err": 0.25915845961449935, + "W4_excess_mag_allsky": 0.05300000000000038, + "W3_excess_jy": 1.6952944473865472, + "W3_frac_200": 0.09141830726240038, + "W3_frac_300": 0.06253855354143115, + "W3_frac_600": 0.12085418581827923, + "W4_excess_jy": 0.4414272031317724, + "W4_frac_200": 0.009427103495678423, + "W4_frac_300": 0.014914083520750365, + "W4_frac_600": 0.060463628787292556 + }, + { + "hip": "116478", + "name": "HD 221914", + "gaia": "2821292758941963776", + "sptype": "G5V", + "d_pc": 34.51846738004833, + "m1": 1.08, + "m2": 0.34719398226371506, + "snr": 5.15, + "ruwe": 3.162, + "dms": "0", + "ks": 5.975, + "e_ks": 0.017, + "g_ks": 1.5054000000000007, + "L2": 0.020185702631605348, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.951, + "W3_err": 0.015, + "ks_W3": 0.02400000000000002, + "W3_allsky": 5.95, + "ks_W3_allsky": 0.024999999999999467, + "W3_pred_200": 1.099348517596845, + "W3_pred_300": 1.6070179893679846, + "W3_pred_600": 0.8315854340473492, + "W4": 5.87, + "W4_err": 0.041, + "ks_W4": 0.10499999999999954, + "W4_allsky": 5.898, + "ks_W4_allsky": 0.07699999999999996, + "W4_pred_200": 2.77590276338461, + "W4_pred_300": 1.7546316277468341, + "W4_pred_600": 0.4328010602279008, + "W3_excess_mag": 0.020000000000000462, + "W3_excess_sig": 0.48841594584935766, + "W3_excess_err": 0.0409487040092853, + "W3_excess_mag_allsky": 0.023999999999999133, + "W4_excess_mag": 0.052999999999999936, + "W4_excess_sig": 0.6717192757951467, + "W4_excess_err": 0.07890200848749095, + "W4_excess_mag_allsky": 0.011999999999999567, + "W3_excess_jy": 0.015803048176551843, + "W3_frac_200": 0.014374921076982036, + "W3_frac_300": 0.009833771794158284, + "W3_frac_600": 0.019003517293031423, + "W4_excess_jy": 0.00914214369234983, + "W4_frac_200": 0.003293394787792557, + "W4_frac_300": 0.0052102923187868685, + "W4_frac_600": 0.02112320077851897 + }, + { + "hip": "116936", + "name": "BD-03 5691", + "gaia": "2639991331699321472", + "sptype": "K7V", + "d_pc": 24.792363951902814, + "m1": 0.65, + "m2": 0.47226438328703574, + "snr": 14.05, + "ruwe": 9.225, + "dms": "0", + "ks": 6.857, + "e_ks": 0.02, + "g_ks": 2.8592000000000004, + "L2": 0.049744008015951115, + "qph": "AAAA", + "ccf": "0000", + "W3": 6.768, + "W3_err": 0.017, + "ks_W3": 0.08900000000000041, + "W3_allsky": 6.768, + "ks_W3_allsky": 0.08900000000000041, + "W3_pred_200": 5.251694214172462, + "W3_pred_300": 7.676880390291188, + "W3_pred_600": 3.972564061962122, + "W4": 6.686, + "W4_err": 0.092, + "ks_W4": 0.17100000000000026, + "W4_allsky": 6.668, + "ks_W4_allsky": 0.18900000000000006, + "W4_pred_200": 13.260756027979147, + "W4_pred_300": 8.382045020250183, + "W4_pred_600": 2.067532531771795, + "W3_excess_mag": -0.008999999999999453, + "W3_excess_sig": -0.19298391786437807, + "W3_excess_err": 0.046636010397116706, + "W3_excess_mag_allsky": -0.009999999999999787, + "W4_excess_mag": 0.002000000000000668, + "W4_excess_sig": 0.013834020968177952, + "W4_excess_err": 0.14457112683298784, + "W4_excess_mag_allsky": 0.09700000000000042, + "W3_excess_jy": 0.008548763020432225, + "W3_frac_200": 0.0016278105068193312, + "W3_frac_300": 0.0011135725171963979, + "W3_frac_600": 0.0021519509533623063, + "W4_excess_jy": 0.008690944915838694, + "W4_frac_200": 0.0006553883426783124, + "W4_frac_300": 0.0010368525693720612, + "W4_frac_600": 0.004203534784717942 + }, + { + "hip": "117258", + "name": "HD 223084", + "gaia": "2435977498921201280", + "sptype": "F9V", + "d_pc": 36.94945314809341, + "m1": 1.16, + "m2": 0.4121442958465783, + "snr": 22.23, + "ruwe": 2.824, + "dms": "0", + "ks": 5.751, + "e_ks": 0.026, + "g_ks": 1.3474999999999993, + "L2": 0.029946164855852143, + "qph": "BAAA", + "ccf": "0h00", + "W3": 5.743, + "W3_err": 0.015, + "ks_W3": 0.008000000000000007, + "W3_allsky": 5.738, + "ks_W3_allsky": 0.0129999999999999, + "W3_pred_200": 1.4233762474187486, + "W3_pred_300": 2.080678873557967, + "W3_pred_600": 1.0766912726728948, + "W4": 5.696, + "W4_err": 0.044, + "ks_W4": 0.055000000000000604, + "W4_allsky": 5.691, + "ks_W4_allsky": 0.0600000000000005, + "W4_pred_200": 3.5940868571714337, + "W4_pred_300": 2.2718009274838784, + "W4_pred_600": 0.5603671075417416, + "W3_excess_mag": 0.007000000000000561, + "W3_excess_sig": 0.15036883795314732, + "W3_excess_err": 0.04655219854915456, + "W3_excess_mag_allsky": 0.009999999999999787, + "W4_excess_mag": -0.010999999999999233, + "W4_excess_sig": -0.16235755622362352, + "W4_excess_err": 0.06775169727763307, + "W4_excess_mag_allsky": 0.006000000000000227, + "W3_excess_jy": 0.02193162030145547, + "W3_frac_200": 0.015408167967694997, + "W3_frac_300": 0.010540607962223567, + "W3_frac_600": 0.02036946045546561, + "W4_excess_jy": 0.009069100540223706, + "W4_frac_200": 0.0025233392793854565, + "W4_frac_300": 0.0039920313573725595, + "W4_frac_600": 0.016184212845769416 + }, + { + "hip": "117374", + "name": "HD 223226", + "gaia": "6389245614987683072", + "sptype": "F5V", + "d_pc": 46.624393882879524, + "m1": 1.4, + "m2": 0.5920654467004592, + "snr": 35.41, + "ruwe": 1.641, + "dms": "0", + "ks": 5.706, + "e_ks": 0.027, + "g_ks": 0.9441999999999995, + "L2": 0.12287933843849036, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.71, + "W3_err": 0.014, + "ks_W3": -0.0039999999999995595, + "W3_allsky": 5.703, + "ks_W3_allsky": 0.0030000000000001137, + "W3_pred_200": 3.668149267984944, + "W3_pred_300": 5.362068322268438, + "W3_pred_600": 2.7747156177877037, + "W4": 5.695, + "W4_err": 0.032, + "ks_W4": 0.01100000000000012, + "W4_allsky": 5.692, + "ks_W4_allsky": 0.014000000000000234, + "W4_pred_200": 9.262236248578592, + "W4_pred_300": 5.854604447889103, + "W4_pred_600": 1.4441088215850781, + "W3_excess_mag": 0.001000000000000334, + "W3_excess_sig": 0.019431905043531785, + "W3_excess_err": 0.05146175826611502, + "W3_excess_mag_allsky": 0.010000000000000675, + "W4_excess_mag": -0.041999999999999815, + "W4_excess_sig": -0.8154186971826398, + "W4_excess_err": 0.051507281038703646, + "W4_excess_mag_allsky": -0.03399999999999981, + "W3_excess_jy": 0.025166761811647374, + "W3_frac_200": 0.006860888140866865, + "W3_frac_300": 0.004693480257819711, + "W3_frac_600": 0.009070032853209287, + "W4_excess_jy": 0.006743703831638064, + "W4_frac_200": 0.0007280859233830244, + "W4_frac_300": 0.0011518632713213492, + "W4_frac_600": 0.004669803086055566 + }, + { + "hip": "117570", + "name": "HD 223551", + "gaia": "6522076205992297984", + "sptype": "G8/K0V", + "d_pc": 35.05205229766203, + "m1": 1.01, + "m2": 0.5646114340807775, + "snr": 24.44, + "ruwe": 1.449, + "dms": "1", + "ks": 5.824, + "e_ks": 0.02, + "g_ks": 2.218, + "L2": 0.10162455937905725, + "qph": "BAAA", + "ccf": "0000", + "W3": 5.793, + "W3_err": 0.015, + "ks_W3": 0.030999999999999694, + "W3_allsky": 5.786, + "ks_W3_allsky": 0.038000000000000256, + "W3_pred_200": 5.367428986710747, + "W3_pred_300": 7.846060462386073, + "W3_pred_600": 4.060109867059497, + "W4": 5.745, + "W4_err": 0.039, + "ks_W4": 0.07899999999999974, + "W4_allsky": 5.741, + "ks_W4_allsky": 0.08300000000000018, + "W4_pred_200": 13.552991356236106, + "W4_pred_300": 8.566765233244764, + "W4_pred_600": 2.113096000915594, + "W3_excess_mag": -0.03699999999999992, + "W3_excess_sig": -0.5749082519135164, + "W3_excess_err": 0.06435809518623128, + "W3_excess_mag_allsky": -0.01699999999999946, + "W4_excess_mag": -0.004000000000000448, + "W4_excess_sig": -0.03508011347529393, + "W4_excess_err": 0.11402471667651674, + "W4_excess_mag_allsky": -0.010999999999999815, + "W3_excess_jy": 0.029695453960186156, + "W3_frac_200": 0.005532528522260718, + "W3_frac_300": 0.003784759766069333, + "W3_frac_600": 0.007313953299912266, + "W4_excess_jy": 0.015594362384682668, + "W4_frac_200": 0.0011506214366105436, + "W4_frac_300": 0.001820332641329558, + "W4_frac_600": 0.007379864605264365 + } +] \ No newline at end of file diff --git a/papers/dyson_infrared/dyson_infrared.pdf b/papers/dyson_infrared/dyson_infrared.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e8788464f4d1f260dcc7c0f4d0a3372991a4566d Binary files /dev/null and b/papers/dyson_infrared/dyson_infrared.pdf differ diff --git a/papers/dyson_infrared/dyson_infrared.tex b/papers/dyson_infrared/dyson_infrared.tex new file mode 100644 index 0000000000000000000000000000000000000000..5ba4d8839db6166b73ca6f64aa8d4407f0d14a82 --- /dev/null +++ b/papers/dyson_infrared/dyson_infrared.tex @@ -0,0 +1,476 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{A Search for Waste Heat from Dyson Spheres\\ Around Nearby Stars in Archival Infrared Surveys} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +A structure that intercepts a star's light re-radiates it as heat, so a Dyson sphere +shows as infrared emission beyond what the star alone gives. We test nearby stars for +that emission in ten ways with archival surveys. None of the $279$ optically dark Gaia +DR3 astrometric companions of $0.5\,M_\odot$ or more within $200$\,pc re-radiates more +than $6$ per cent of a main-sequence star's light at $300$\,K (median bound $0.3$ per +cent), nor do the $191$ companions of $0.3\,M_\odot$ or more at $3$ to $30$\,au implied by +Hipparcos-Gaia proper-motion anomalies within $50$\,pc (median bound $0.39$ per cent). +Stacked against matched field stars, the WISE colours of habitable-zone planet hosts +within $100$\,pc limit the mean fraction of their light intercepted by $300$\,K swarms to +$\sci{1.5}{-5}$. No bright, cold, moving AllWISE source without a Gaia star is an +enclosed star, no star within $50$\,pc has a $30$ to $100$\,K shell in the AKARI +far-infrared survey, none of $203$ stars within $15$\,pc brightened at $4.6$\um\ over the +decade of NEOWISE by more than about $9$ per cent, and no star that vanished from the +Palomar plates reappears with the $12$\um\ emission an enclosure requires. SPHEREx +spectra trace the excess of earlier Dyson-sphere candidates to background galaxies and a +radio source, and put the excesses of $37$ extreme mid-infrared stars at $486$ to +$2133$\,K, the temperatures of warm dust and cool companions, none below $400$\,K within +the $5$\um\ reach of the spectra. Each test's reach is stated: the enclosed-star search +finds a $300$\,K shell around a star of $0.01\,L_\odot$ to $210$\,pc, the AKARI match +finds a $30$ to $100$\,K shell holding $0.2$ per cent of a solar luminosity at $50$\,pc, +and a vanished source of $R=19$ enclosed at $200$ to $600$\,K would have been detected +by WISE. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Dyson proposed that a civilization using much of its star's output would surround the +star with collectors and re-radiate the energy as waste heat, and that the heat, at a +few hundred kelvin, would make the system a source of infrared emission that its +starlight does not explain~\cite{Dyson1960}. Searches have since used each infrared +survey in turn: IRAS for whole-sky limits on spheres at $100$ to $600$\,K~\cite{Carrigan2009}, +WISE for galaxies whose stellar light is converted to mid-infrared +emission~\cite{Wright2014,Griffith2015}, and Gaia with 2MASS and WISE for partial spheres +around individual Milky Way stars~\cite{Suazo2022,Suazo2024,Contardo2024}. A detected +excess has natural rivals: debris discs, red companions, background galaxies and +young stars embedded in their clouds. + +The nearest stars allow tests that need a known distance, mass or history. A companion +whose mass Gaia's astrometry measures but whose light it does not see is either a dim +remnant or a star enclosed; a structure built within a decade brightens its star in the +infrared from one epoch to the next; a star enclosed during the twentieth century would +vanish from the Palomar plates and reappear in the mid-infrared. This paper applies +these tests and the stacking and spectroscopic ones to archival surveys, and states each +result as a fraction of a star's light re-radiated at the temperature tested. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item Limits on the fraction of light re-radiated at $300$\,K by $279$ Gaia DR3 dark +companions and by $191$ companions inferred from proper-motion anomalies. +\item A stacked limit on warm swarms around habitable-zone planet hosts, and searches +for fully enclosed moving stars, cold far-infrared shells, decade-long brightening and +stars that vanished from the optical sky into the infrared. +\item SPHEREx $0.75$ to $5$\um\ spectra of published Dyson-sphere candidates against +matched controls, which place every excess in a natural class. +\end{enumerate} + +% ============================================================================= +\section{Tests}\label{sec:tests} +% ============================================================================= + +Table~\ref{tab:tests} lists the ten tests, their samples and results. Each compares a +measured infrared flux with what the star or its catalogued companions would give, and +expresses the difference as the fraction of the star's light that a black body at the +tested temperature would need to re-radiate. + +\emph{Dark astrometric companions.} Gaia DR3's orbital solutions~\cite{Arenou2023} give +the mass of each companion and the flux ratio its orbit allows in the $G$ band. Within +$200$\,pc, $279$ companions of $0.5\,M_\odot$ or more are dark, contributing less than a +third of the light of a main-sequence star of their mass. Inside a complete sphere such +a star would re-radiate its main-sequence luminosity as a $300$\,K black body, whose +$12$ and $22$\um\ flux at the Gaia distance we compare with the AllWISE~\cite{Wright2010} +counterpart within $3''$. + +\emph{Companions from proper-motion anomalies.} The difference between a star's +Hipparcos-Gaia long-term proper motion and its Gaia proper motion gives the least mass +of a companion anywhere between $3$ and $30$\,au~\cite{Kervella2022}. For the $191$ +Hipparcos stars within $50$\,pc whose anomaly, at a signal-to-noise ratio of $5$, +requires a companion of $0.3\,M_\odot$ or more, a star of that mass inside a shell at +$200$, $300$ or $600$\,K would add predictable $12$ and $22$\um\ flux; the star's +$K_s-W3$ and $K_s-W4$ colours, against the $15$ sample stars nearest in $G-K_s$, bound +the fraction re-radiated. An excess is read again from the WISE All-Sky release, which +processed the same cryogenic $12$ and $22$\um\ exposures apart from AllWISE, against the +same neighbours. + +\emph{Stacking at habitable-zone hosts.} A swarm intercepting a fraction $f$ of the +starlight at $300$\,K adds $12$ and $22$\um\ flux in proportion to $f$, so a population +of modest swarms shows as a mean colour excess. Hosts of planets receiving $0.32$ to +$1.78$ times the Earth's insolation~\cite{Kopparapu2013} within $100$\,pc in the NASA +Exoplanet Archive~\cite{Akeson2013}, and the other hosts as comparison, each receive up +to $25$ field stars matched in Gaia colour, magnitude and parallax. The inverse-variance +mean of the hosts' $W1-W3$ and $W1-W4$ excesses over their controls, against the same +statistic with a control standing for its host, limits the mean $f$. + +\emph{Fully enclosed stars.} A shell that absorbs all of a star's light re-radiates it +at the shell's temperature: at $300$\,K around an M dwarf of $0.01\,L_\odot$ at $100$\,pc +it gives $W3\approx6.4$ with $W2-W3\approx5.7$, and Gaia sees nothing. Of the $36603$ +AllWISE point sources with $W3<8$ at a signal-to-noise ratio above $10$ and +$W2-W3>1.5$, we keep those that CatWISE2020~\cite{Marocco2021} finds moving faster than +$40$\,mas\,yr$^{-1}$ at $5\sigma$, as a star within $100$\,pc would, with no Gaia DR3 +source within $3''$, clean flags and unsaturated $W1$ and $W2$, and check each against +SIMBAD and for young stars, cores and clouds within $30'$. The $W3<8$ cut reaches a +$300$\,K shell around a star of $0.001$, $0.01$ and $0.1\,L_\odot$ to $67$, $210$ and +$670$\,pc, and shells at $200$ and $500$\,K to within $20$ per cent of those distances; +the motion cut keeps stars whose tangential velocity exceeds $19$\,km\,s$^{-1}$ at +$100$\,pc and $40$\,km\,s$^{-1}$ at $210$\,pc, about three quarters of the disc +population at the first and a third at the second. + +\emph{Cold shells.} A structure at $30$ to $100$\,K peaks beyond the WISE bands, and a +main-sequence photosphere at $65$ to $160$\um\ lies far below the AKARI Far-Infrared +Surveyor's bright source catalogue~\cite{Murakami2007}. We match the $27394$ Gaia DR3 +main-sequence stars within $50$\,pc to that catalogue within $20''$, and take the chance +count from the same match with every position moved by $3'$. The catalogue's $0.55$\,Jy +limit at $90$\um\ corresponds, for a shell at $30$ to $100$\,K, to $0.2$ to $0.6$ per +cent of a solar luminosity at $50$\,pc and $0.03$ to $0.09$ per cent at $20$\,pc; for +the M dwarfs that make up most of the sample, of $0.01\,L_\odot$ at $10$\,pc, it needs +$1$ to $2$ per cent of the star's light, so the test bounds complete or nearly complete +cold shells around the M dwarfs and partial ones around the solar-type stars. + +\emph{Decade trends.} A structure assembled during 2014 to 2024 at $600$ to $1000$\,K +brightens its star year by year, more at $4.6$ than at $3.4$\um. For the $298$ Gaia DR3 +stars within $15$\,pc with $W1$ of $8$ to $12.5$, the NEOWISE-R single +exposures~\cite{Mainzer2014} from December 2013 to August 2024 give $W1$ and $W2$ light +curves differential against field stars on the same frames, and a linear trend per +decade is judged against stars of similar brightness, since the photometry drifts with +brightness. + +\emph{Vanished in the optical, present in the infrared.} A star enclosed after the 1950s +leaves the first Palomar survey's plates and returns at its enclosure's temperature: at +$300$\,K a star of $R=19$ appears near $W2=16.8$ and $W3=11.1$, at $200$\,K near +$W3=11.6$ and $W4=9.0$, and at $600$\,K near $W2=14.1$, against AllWISE's $5\sigma$ +limits of about $17.5$, $11.6$ and $8.0$ in $W2$, $W3$ and $W4$, so an enclosure at any +of those temperatures of a source brighter than $R\approx19$, which is most of the +catalogue, would be detected in at least one band. The archive of +vanishing objects~\cite{Solano2022} built for the VASCO project~\cite{Villarroel2020} +lists Palomar sources absent from Pan-STARRS and Gaia; we keep those whose only +counterpart is infrared and red in $W1-W2$, away from the ecliptic, with a fixed +CatWISE2020 counterpart and no Legacy Surveys source~\cite{Dey2019} to $r=24$. + +\emph{Breakthrough Listen targets.} The FGK stars of Breakthrough Listen's nearby-star +sample~\cite{Isaacson2017} observed in a set of 2016 L-band sessions, $170$ in all, are +tested for $K_s-W3$ or $K_s-W4$ above $0.25$\,mag at $5\sigma$ with clean photometry. + +\emph{SPHEREx spectra.} SPHEREx images the sky in $102$ bands from $0.75$ to +$5$\um~\cite{Dore2014}. We measure each target, carried by proper motion to the epoch +of the images, by a point-spread fit after the zodiacal model in every image covering +it, and the same for two Gaia stars of matching colour, magnitude and distance that WISE +does not detect at $12$\um. Normalised at $1.0$ to $1.6$\um, a target's excess over its +controls at $2$ to $3$, $3$ to $4$ and $4$ to $5$\um\ is judged against one control +measured against the other. The targets are candidates of Project +Hephaistos~\cite{Suazo2024} and the $53$ FGK stars with the most extreme Gaia-predicted +$W2$ excesses of Contardo and Hogg~\cite{Contardo2024}, of which $51$ have controls. A black body +fitted from $1.6$ to $5$\um\ gives the temperature of each excess and the fraction of +the star's light it holds. The Hephaistos targets are ten candidates of that search and +one M dwarf with a warm excess, eleven in all. + +\begin{table}[t] +\centering\small +\caption{The ten tests. $f$ is the fraction of a star's light intercepted and re-radiated +at the temperature tested.} +\label{tab:tests} +\begin{tabular}{>{\raggedright\arraybackslash}p{0.2\textwidth} >{\raggedright\arraybackslash}p{0.3\textwidth} >{\raggedright\arraybackslash}p{0.42\textwidth}} +\toprule +Test & Sample & Result \\ +\midrule +Dark companions & $279$ Gaia DR3 orbital companions $\geq0.5\,M_\odot$, $<200$\,pc & none above $6$ per cent of its light at $300$\,K; median bound $0.3$ per cent \\ +Proper-motion companions & $191$ stars $<50$\,pc, companion $\geq0.3\,M_\odot$ at $3$--$30$\,au & median bound $0.39$ per cent at $300$\,K; four $3\sigma$ excesses, all explained \\ +Habitable-zone stacking & $69$ hosts ($W3$), $63$ ($W4$), $<100$\,pc, $25$ controls each & mean $f<\sci{1.5}{-5}$ ($12$\um) and $\sci{8.6}{-6}$ ($22$\um) at $300$\,K \\ +Fully enclosed stars & $36603$ cold AllWISE sources & $72$ clean movers without Gaia stars, all among young stars, cores and clouds \\ +Cold shells & $27394$ stars $<50$\,pc, AKARI FIS & $35$ matches against $26$ by chance; clouds and known young discs \\ +Decade trends & $203$ stars $<15$\,pc, NEOWISE 2013--2024 & none brightens at $4.6$\um\ at $5\sigma$; bound about $9$ per cent \\ +Vanished stars & $5893$ red infrared-only counterparts of vanishing Palomar sources & four red CatWISE sources left, none detected at $12$\um \\ +Breakthrough Listen targets & $170$ FGK stars & three excesses: a debris disc, a blend, a catalogued $22$\um\ excess \\ +SPHEREx, Hephaistos & $11$ candidates, $2$ controls each & background galaxies and a radio source \\ +SPHEREx, Contardo and Hogg & $51$ stars, $2$ controls each & $37$ excesses at $486$--$2133$\,K, none below $400$\,K \\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +\emph{Companions.} No dark astrometric companion shows the $12$ or $22$\um\ flux that a +star of its mass inside a $300$\,K sphere would give: the measured flux bounds the +re-radiated fraction below $6$ per cent for every one of the $279$ and below $0.3$ per +cent for half of them. The proper-motion companions give a median bound of $0.39$ per +cent at $300$\,K, and $154$ of $189$ with both bands are bounded below $1$ per cent. +Three of their four $3\sigma$ colour excesses are a diffraction spike from a neighbour, +the photosphere of an M0 star and the white-dwarf companion of 56~Per. The fourth, +$0.14$\,mag at $12$\um\ ($3.3\sigma$) in the F6~V star HD~59099, whose astrometry +(RUWE $11.9$) marks the companion, belongs to the AllWISE measurement: the All-Sky +release puts the star $0.11$\,mag fainter at $12$\um\ and $0.07$\,mag fainter at +$22$\um, where the two releases agree for the sample's stars to a median of +$0.002$\,mag with a scatter of $0.007$\,mag, and against the same neighbours its +All-Sky excess is $+0.02$\,mag at $12$\um\ and nothing at $22$\um. + +\emph{Habitable-zone hosts.} The $69$ habitable-zone hosts with clean $12$\um\ +photometry and controls show a mean $W1-W3$ excess of $+0.0004\pm0.0045$\,mag over their +controls, the $124$ other hosts $-0.0011\pm0.0036$\,mag, and controls standing for their +hosts $+0.0018\pm0.0006$\,mag; at $22$\um\ the $63$ habitable-zone hosts give +$-0.0005\pm0.0094$\,mag, the $88$ other hosts $-0.0060\pm0.0106$\,mag, and controls +standing for their hosts $+0.0123\pm0.0017$\,mag. The control null is offset from zero +in both bands, by $0.0018$\,mag at $12$\um\ and $0.012$\,mag at $22$\um: a control +measured against the mean of the others is systematically redder than that mean, which +the hosts share, so the hosts' excesses are read against the null and fall below it by +$0.3\sigma$ and $1.3\sigma$. A $300$\,K swarm therefore intercepts on average less than +$\sci{1.5}{-5}$ of a habitable-zone host's light ($\sci{8.6}{-6}$ at $22$\um). The one +host above $3\sigma$, TOI-2257, has a galaxy $7.3''$ away. + +\emph{Enclosed stars and cold shells.} Of the $36603$ cold AllWISE sources, $7817$ move +at $5\sigma$, $1491$ of these have no Gaia source, and $72$ have clean flags below +saturation; every one of the $72$ lies among young stars, dense cores or clouds, where +variability and nebulosity bias CatWISE motions. Within $50$\,pc, $35$ stars have an +AKARI $90$\um\ source within $20''$ against $26$ when the positions are moved; the +matches within $8''$ are alignments with clouds in fields of $43$ to $349$ sources per +square degree (V854~Ori, V1497~Cyg, HD~324218) or known young discs (HD~98800 in the TW +Hya association, and HD~164249~A in the $\beta$~Pictoris group at $\sci{7}{-4}$ of its +light). + +\emph{Decade trends and vanished stars.} Of the $203$ stars within $15$\,pc with both +NEOWISE light curves, none brightens at $4.6$\um\ at $5\sigma$, the most extreme trend +being $-2.8\sigma$, and the median slope error of $0.018$\,mag per decade bounds any gain +at about $9$ per cent of the $4.6$\um\ flux. Of the $5893$ red infrared-only +counterparts of vanished Palomar sources, those near the ecliptic are asteroids caught +in single NEOWISE exposures and those detected in one exposure without a CatWISE source +are transients; four red CatWISE counterparts remain, and none is detected at $12$\um, +where an enclosure's energy would appear, consistent with brown dwarfs and obscured +quasars aligned by chance. + +\emph{Breakthrough Listen targets.} Three of the $170$ stars exceed the colour criterion: +HR~8799, whose debris disc is known, a blended binary, and a star with a catalogued +$22$\um\ excess. + +\emph{SPHEREx spectra.} The SPHEREx spectra of the Project Hephaistos candidates show +excesses only where a background galaxy (candidates D and E) or a radio source +(candidate G) lies within the WISE beam. JWST imaging of candidates D and E has since +resolved the galaxies, within about $1''$ of each star, as the source of their +mid-infrared excess~\cite{Zackrisson2026}, which SPHEREx's $6''$ pixels could attribute +only by the spectral shape. For the Contardo and Hogg stars, the ratio to +the controls shows a $4$ to $5$\um\ excess above $3\sigma$, with a systematic floor of +$0.063$ from $50$ control pairs, in $37$ of $51$ and a $3$ to $4$\um\ excess in $36$, +against $1$ and $0$ control pairs. A black body puts every excess between $486$ and +$2133$\,K holding $0.6$ to $7$ per cent of the star's light: $22$ at $400$ to $1000$\,K, +as warm dust, and nine above $1700$\,K, as cool companions or blends; none lies below +$400$\,K, and no $3.3$\um\ aromatic band reaches $2\sigma$. The absence of cooler +components is a property of the spectra's reach as much as of the stars: a $300$\,K +body emits at $5$\um\ a hundredth of what it emits at its $10$\um\ peak, so the fit from +$1.6$ to $5$\um\ is sensitive to components above about $400$\,K, and a cooler +component that the $12$ and $22$\um\ WISE excesses of these stars might hold is not +excluded. In the $41$ stars that the +Legacy Surveys cover, the excess sits in the star's own deblended source, whose $W2/W1$ +ratio exceeds its controls' by up to $0.85$, and no source within $8''$ carries more than +$6$ per cent of it; the unWISE $W2$ centroid of every star lies within $3\sigma$ of its +$W1$ centroid against the controls' $0.12''$ scatter, which leaves only a red source +within about $0.5''$. The eleven with the largest excesses keep them at every NEOWISE +visit from 2014 to 2024, with a visit-to-visit scatter of $0.02$ to $0.06$\,mag in +$W1-W2$. + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +\emph{Waste-heat searches.} Carrigan's IRAS search set whole-sky limits on spheres at +$100$ to $600$\,K~\cite{Carrigan2009}, and the $\hat{G}$ search found no galaxy +re-radiating most of its starlight~\cite{Wright2014,Griffith2015}. Project Hephaistos +selected partial-sphere candidates among Milky Way stars with Gaia, 2MASS and +WISE~\cite{Suazo2022,Suazo2024}, and radio and optical images later showed background +sources near several of them~\cite{Ren2024}, as the SPHEREx spectra here do. Three +further studies of those candidates have appeared: archival diagnostics find +background contamination in candidates B and C and suggestive signs in five +more~\cite{Ren2026}, their stellar parameters are those of ordinary M dwarfs whose +infrared colours resemble transitional discs without the signs of +youth~\cite{Korn2026}, and JWST resolves background galaxies within about $1''$ of +candidates D and E~\cite{Zackrisson2026}, the two whose SPHEREx spectra attribute the +excess to a galaxy here. Contardo and +Hogg modelled the mid-infrared colours of five million FGK stars from their Gaia spectra +and published the most extreme excesses~\cite{Contardo2024}. + +\emph{Companions and vanishing sources.} Kervella et al.\ derived companion masses from +the Hipparcos-Gaia proper-motion anomaly~\cite{Kervella2022}, and the VASCO project +catalogued Palomar sources missing from modern surveys~\cite{Villarroel2020,Solano2022}; +we find no earlier use of either as a test for enclosed stars. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No nearby star shows the infrared emission of a Dyson sphere in these tests. Optically +dark companions of known mass re-radiate at most a few tenths of a per cent of a star's +light at $300$\,K, habitable-zone hosts carry no mean warm excess at the level of +$10^{-5}$ of their light, no star within $15$\,pc brightened over a decade, and no star +that vanished from the Palomar sky reappears in the mid-infrared. The candidate +excesses that SPHEREx resolves are background sources, warm dust and cool companions. +The last of the companions' excesses, $3.3\sigma$ at $12$\um\ in HD~59099, is absent +from the WISE All-Sky release of the same exposures. + +The limits apply to structures re-radiating as black bodies at the temperatures tested, +and to the epochs and sensitivities of the surveys: a $300$\,K enclosure of a star of +$0.01\,L_\odot$ within $210$\,pc moving faster than $19$ to $40$\,km\,s$^{-1}$ across +the line of sight, a $30$ to $100$\,K shell holding more than $0.2$ per cent of a solar +luminosity at $50$\,pc, and an enclosure at $200$ to $600$\,K of a vanished source +brighter than $R\approx19$. A sphere at a few tens of kelvin +around a star beyond $50$\,pc, one that emits mostly outside the WISE and AKARI bands, +a slow-moving enclosed star, or one whose waste heat is directed away from the Sun is +not constrained, and the SPHEREx fits do not reach components below $400$\,K. SPHEREx's +spectra of the dark companions and of the habitable-zone hosts would extend the +stacked test to $5$\um\ with resolved spectral shapes. + +\section*{Acknowledgements} + +This work has made use of data from the European Space Agency mission Gaia, processed by +the Gaia Data Processing and Analysis Consortium (DPAC), funded by national institutions, +in particular those participating in the Gaia Multilateral Agreement; of the Wide-field +Infrared Survey Explorer and NEOWISE, projects of the Jet Propulsion Laboratory, +California Institute of Technology, funded by NASA; of SPHEREx data from the NASA/IPAC +Infrared Science Archive; of AKARI, a JAXA project with the participation of ESA; of +the NASA Exoplanet Archive; of the Legacy Surveys; of the Spanish Virtual Observatory's +archive of vanishing objects; and of the SIMBAD and VizieR services at CDS, Strasbourg. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Dyson1960} +F.~J. Dyson, Search for artificial stellar sources of infrared radiation, \emph{Science} +\textbf{131}, 1667 (1960). + +\bibitem{Carrigan2009} +R.~A. Carrigan, IRAS-based whole-sky upper limit on Dyson spheres, \emph{Astrophys. J.} +\textbf{698}, 2075 (2009). + +\bibitem{Wright2014} +J.~T. Wright, B.~Mullan, S.~Sigurdsson and M.~S. Povich, The $\hat{G}$ infrared search +for extraterrestrial civilizations with large energy supplies. I. Background and +justification, \emph{Astrophys. J.} \textbf{792}, 26 (2014). + +\bibitem{Griffith2015} +R.~L. Griffith, J.~T. Wright, J.~Maldonado, M.~S. Povich, S.~Sigurdsson and B.~Mullan, +The $\hat{G}$ infrared search for extraterrestrial civilizations with large energy +supplies. III. The reddest extended sources in WISE, \emph{Astrophys. J. Suppl.} +\textbf{217}, 25 (2015). + +\bibitem{Suazo2022} +M.~Suazo, E.~Zackrisson, J.~T. Wright, et al., Project Hephaistos -- I. Upper limits on +partial Dyson spheres in the Milky Way, \emph{Mon. Not. R. Astron. Soc.} \textbf{512}, +2988 (2022). + +\bibitem{Suazo2024} +M.~Suazo, E.~Zackrisson, P.~K. Mahto, et al., Project Hephaistos -- II. Dyson sphere +candidates from Gaia DR3, 2MASS, and WISE, \emph{Mon. Not. R. Astron. Soc.} +\textbf{531}, 695 (2024). + +\bibitem{Ren2024} +T.~Ren, M.~A. Garrett and A.~P.~V. Siemion, Background contamination of the Project +Hephaistos Dyson sphere candidates, \emph{Res. Notes AAS} \textbf{8}, 145 (2024). + +\bibitem{Ren2026} +T.~Ren, M.~A. Garrett, E.~Zackrisson, et al., Archival diagnostics for potential +background contaminants of Project Hephaistos Dyson sphere candidates, \emph{Mon. Not. +R. Astron. Soc.}, in press, arXiv:2607.03619 (2026). + +\bibitem{Korn2026} +A.~J. Korn, M.~Suazo, E.~Zackrisson, et al., Project Hephaistos -- III. Characterizing +anomalous infrared sources identified as Dyson-sphere candidates, arXiv:2607.25701 +(2026). + +\bibitem{Zackrisson2026} +E.~Zackrisson, A.~Bik, A.~Ali Asgar, et al., Project Hephaistos -- IV. James Webb Space +Telescope observations of two Dyson sphere candidates, arXiv:2607.09460 (2026). + +\bibitem{Contardo2024} +G.~Contardo and D.~W. Hogg, A data-driven search for mid-infrared excesses among five +million main-sequence FGK stars, \emph{Astron. J.} \textbf{168}, 157 (2024). + +\bibitem{Arenou2023} +Gaia Collaboration, F.~Arenou, C.~Babusiaux, et al., Gaia Data Release 3: stellar +multiplicity, a teaser for the hidden treasure, \emph{Astron. Astrophys.} \textbf{674}, +A34 (2023). + +\bibitem{Wright2010} +E.~L. Wright, P.~R.~M. Eisenhardt, A.~K. Mainzer, et al., The Wide-field Infrared Survey +Explorer (WISE): mission description and initial on-orbit performance, \emph{Astron. J.} +\textbf{140}, 1868 (2010). + +\bibitem{Kervella2022} +P.~Kervella, F.~Arenou and F.~Th\'evenin, Stellar and substellar companions from Gaia +EDR3: proper-motion anomaly and resolved common proper-motion pairs, \emph{Astron. +Astrophys.} \textbf{657}, A7 (2022). + +\bibitem{Kopparapu2013} +R.~K. Kopparapu, R.~Ramirez, J.~F. Kasting, et al., Habitable zones around +main-sequence stars: new estimates, \emph{Astrophys. J.} \textbf{765}, 131 (2013). + +\bibitem{Akeson2013} +R.~L. Akeson, X.~Chen, D.~Ciardi, et al., The NASA Exoplanet Archive: data and tools for +exoplanet research, \emph{Publ. Astron. Soc. Pac.} \textbf{125}, 989 (2013). + +\bibitem{Marocco2021} +F.~Marocco, P.~R.~M. Eisenhardt, J.~W. Fowler, et al., The CatWISE2020 catalog, +\emph{Astrophys. J. Suppl.} \textbf{253}, 8 (2021). + +\bibitem{Murakami2007} +H.~Murakami, H.~Baba, P.~Barthel, et al., The infrared astronomical mission AKARI, +\emph{Publ. Astron. Soc. Jpn.} \textbf{59}, S369 (2007). + +\bibitem{Mainzer2014} +A.~Mainzer, J.~Bauer, R.~M. Cutri, et al., Initial performance of the NEOWISE +reactivation mission, \emph{Astrophys. J.} \textbf{792}, 30 (2014). + +\bibitem{Solano2022} +E.~Solano, B.~Villarroel and C.~Rodrigo, Discovering vanishing objects in POSS I red +images using the Virtual Observatory, \emph{Mon. Not. R. Astron. Soc.} \textbf{515}, +1380 (2022). + +\bibitem{Villarroel2020} +B.~Villarroel, I.~Imaz, J.~Bergstedt, et al., Exploring the Gaia Data Release 2 for +vanishing sources, \emph{Astron. J.} \textbf{159}, 8 (2020). + +\bibitem{Dey2019} +A.~Dey, D.~J. Schlegel, D.~Lang, et al., Overview of the DESI Legacy Imaging Surveys, +\emph{Astron. J.} \textbf{157}, 168 (2019). + +\bibitem{Isaacson2017} +H.~Isaacson, A.~P.~V. Siemion, G.~W. Marcy, et al., The Breakthrough Listen search for +intelligent life: target selection of nearby stars and galaxies, \emph{Publ. Astron. +Soc. Pac.} \textbf{129}, 054501 (2017). + +\bibitem{Dore2014} +O.~Dor\'e, J.~Bock, M.~Ashby, et al., Cosmology with the SPHEREX all-sky spectral +survey, arXiv:1412.4872 (2014). + +\end{thebibliography} + +\end{document} diff --git a/papers/dyson_infrared/make_numbers.py b/papers/dyson_infrared/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..4cc9f283d08257ec2c0d08f3645546a4eaaf7418 --- /dev/null +++ b/papers/dyson_infrared/make_numbers.py @@ -0,0 +1,83 @@ +"""Coverage-store records and result-file numbers of the infrared waste-heat paper.""" +import json +import os +import sqlite3 +import sys + +HERE = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, os.path.dirname(os.path.dirname(HERE))) +from setitools import core # noqa: E402 + +RUNS = ("dark_companions_wise", "pma_dark_companions", "hz_stack_wise", "enclosed_stars", "cold_shells_akari", + "neowise_decade_trends", "vasco_ir_red", "ir_excess_bl", "spherex_hephaistos", "spherex_contardo53") + + +def results(name): + """Result file from data/, else the results directory.""" + p = os.path.join(HERE, "data", name) + return p if os.path.exists(p) else core.results(name) + + +def sensitivities(): + """Reach of the enclosed-star, AKARI and vanished-star tests: WISE and AKARI black-body fluxes.""" + import math + h, c, k, sigma = 6.62607e-34, 2.99792e8, 1.380649e-23, 5.670374e-8 + Lsun, pc = 3.828e26, 3.0857e16 + zp = {"W2": (4.6028e-6, 171.787), "W3": (11.5608e-6, 31.674), "W4": (22.0883e-6, 8.363)} # Jarrett et al. (2011) + + def fnu(L, T, d, lam): + nu = c / lam + return L / (4 * math.pi * d ** 2) * math.pi * (2 * h * nu ** 3 / c ** 2 / math.expm1(h * nu / (k * T))) / (sigma * T ** 4) * 1e26 + + def mag(L, T, d, band): + return -2.5 * math.log10(fnu(L, T, d, zp[band][0]) / zp[band][1]) + print("== sensitivities") + for T in (200, 300, 500): + for L in (0.001, 0.01, 0.1): + m = mag(L * Lsun, T, 100 * pc, "W3") + print("enclosed star: %d K shell around %.3f Lsun: W3 %.2f at 100 pc, W3 < 8 to %.0f pc" % (T, L, m, 100 * 10 ** (-0.2 * (m - 8)))) + for T in (30, 50, 100): + for L, d in ((1.0, 50), (1.0, 20), (0.01, 10)): + print("AKARI 90 um, 0.55 Jy: %d K shell around %.2f Lsun at %d pc detectable above f = %.1e" % (T, L, d, 0.55 / fnu(L * Lsun, T, d * pc, 90e-6))) + Fbol = 2.7e-8 * 10 ** (-0.4 * 19.5) # a solar-type star of V 19.5 (R 19) + for T in (200, 300, 600): + print("vanished star of R 19 enclosed at %d K: %s" % (T, ", ".join("%s %.1f" % (b, -2.5 * math.log10( + Fbol * math.pi * (2 * h * (c / lam) ** 3 / c ** 2 / math.expm1(h * (c / lam) / (k * T))) / (sigma * T ** 4) * 1e26 / z)) + for b, (lam, z) in zp.items()))) + + +def main(): + sensitivities() + con = sqlite3.connect(core.COVERAGE) + cols = [r[1] for r in con.execute("pragma table_info(searches)")] + for run in RUNS: + r = dict(zip(cols, con.execute("select * from searches where id = ?", (run,)).fetchone())) + print("== %s (%s, %s targets)" % (run, r["code"], r["n_targets"])) + for k in ("selection", "null_summary", "sensitivity", "result"): + if r[k]: + print(" %s: %s" % (k, r[k])) + hz = json.load(open(results("hz_stack.json"))) + for band in ("W3", "W4"): + x = hz[band] + print("habitable-zone stack %s: hosts %+.4f +- %.4f (%d), other hosts %+.4f +- %.4f (%d), controls as hosts " + "%+.4f +- %.4f (%d); covering fraction bound %.2g" + % (band, *x["hz"], *x["other"], *x["null"], x["covering_fraction"])) + pma = json.load(open(results("pma_dark.json"))) + print("proper-motion companions: %d stars" % len(pma)) + import numpy as np + for band in ("W3", "W4"): + d = np.array([o[band] - o[band + "_allsky"] for o in pma if o.get(band) is not None and o.get(band + "_allsky") is not None]) + print(" %s AllWISE minus All-Sky over %d stars: median %+.3f, robust scatter %.3f, 5-95 per cent %s" + % (band, len(d), np.median(d), 1.4826 * np.median(np.abs(d - np.median(d))), np.percentile(d, [5, 95]).round(3))) + for o in pma: + if "reading" in o: + print(" %s: Ks-W3 %+.3f (%.1f sigma), Ks-W4 %+.3f (%.1f sigma); All-Sky %+.3f and %+.3f; W3 %.3f against %s, W4 %.3f against %s; %s" % ( + o["name"], o["W3_excess_mag"], o["W3_excess_sig"], o["W4_excess_mag"], o["W4_excess_sig"], + o.get("W3_excess_mag_allsky") or 0, o.get("W4_excess_mag_allsky") or 0, o["W3"], o["W3_allsky"], o["W4"], o["W4_allsky"], + o["reading"])) + dark = json.load(open(results("dark_companion_ds.json"))) + print("dark companions: %d" % len(dark)) + + +if __name__ == "__main__": + main() diff --git a/papers/hd31435/hd31435.pdf b/papers/hd31435/hd31435.pdf new file mode 100644 index 0000000000000000000000000000000000000000..27a5391f50ab818cb35d3188473b9dd2f1a96152 Binary files /dev/null and b/papers/hd31435/hd31435.pdf differ diff --git a/papers/hd31435/hd31435.tex b/papers/hd31435/hd31435.tex new file mode 100644 index 0000000000000000000000000000000000000000..df814e57b9e221a75c58568786b50963a38b12d8 --- /dev/null +++ b/papers/hd31435/hd31435.tex @@ -0,0 +1,395 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{HD 31435: a Five Per Cent Polarisation\\ Assigned to an Unreddened Sun-like Star at 100\,pc} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +Starlight from a quiet dwarf in front of the interstellar dust is polarised at parts +per million, and a structure that reflects part of a star's light polarises it, so a +nearby, unreddened dwarf polarised at the per cent level has no ordinary explanation at +the star. We test the $28704$ stars of the Panopoulou et al.\ compilation of optical +polarimetry that have five or more neighbours within $3^\circ$ and $20$ per cent in +distance for a Stokes vector their neighbours do not share. Four dwarfs within +$200$\,pc are discordant at $5\sigma$; three are a cloud's own dust, a binary in a +crowded field and an interstellar sightline that Gaia and Planck recognise. The fourth, +HD~31435, an F9/G0 dwarf at $100$\,pc, is listed at $5.48\pm0.15$ per cent and +$47^\circ$ in Johnson $V$ from one measurement of 1977 November, where the eleven +stars of its field within $130$\,pc read $0.27$ per cent or less. Nothing at the star +accounts for it: Gaia gives no reddening, the star is single and steady in Gaia's +astrometry and velocities and in TESS, K2, Hipparcos and the Harvard plates, and WISE +sees its photosphere to $22$\um. A reflector would have to return several per cent of +its light, grey to $0.3$ per cent from $400$ to $700$\,nm in its Gaia XP spectrum +against $40$ twins; Gaia's image statistics and Pan-STARRS leave no room for it from +$10$ to $1300$\,au, and within $10$\,au only one that absorbs nothing and holds still +escapes WISE and the light curves. The angle is the interstellar field's behind the +Taurus clouds: the $40$ stars of the field beyond $160$\,pc read a median $48^\circ$, +and Planck's $353$\,GHz polarisation at the position predicts $49$ to $54^\circ$. The +amount is what background stars there reach on efficient sightlines, three of those +$40$ at $5.5$ per cent or more. HD~283904, a reddened A2 star of the same brightness +behind the cloud, lies $5'$ west at the same declination to $27''$, $23$\,s of right +ascension away. The measurement is that of a star behind the cloud, most likely +HD~283904 through a slipped setting, and one polarimetric measurement of the two stars +decides. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +The light of a nearby, inactive dwarf is polarised at a few parts per million: the +brightest southern stars within the Local Bubble, measured at that level, carry +interstellar polarisations of tens of ppm and intrinsic ones too small to +separate~\cite{Cotton2016}. Interstellar polarisation grows with the dust in front of a +star and is bounded by it, $p\le9\,E(B-V)$ per cent in the visible~\cite{Serkowski1975}, +so a star in front of the dust carries almost none. Reflection polarises: sunlight +scattered from a planet's atmosphere or reflected from a flat surface is polarised by +an amount set by the scattering angle and the material, and a structure that returns +part of a star's light toward Earth would add that polarised light to the star's. A +dwarf in front of the dust whose polarisation reaches the per cent level therefore has +no explanation at the star that the archives would not show, and one that a reflector +would give. + +Optical polarimetry of stars has been gathered from many programmes into +compilations~\cite{Heiles2000,Panopoulou2025}, and with Gaia distances each star can be +set against its neighbours on the sky at the same distance, which share its +interstellar column. This note reports that test and the one star it leaves, HD~31435, +and reads its measurement against every archive that bears on it. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item A test of $28704$ stars with optical polarimetry and Gaia distances against their +neighbours' Stokes vectors, with the measurements reassigned among neighbours as the +null. +\item For HD~31435, the one discordant dwarf left, the constraints of Gaia, WISE, TESS, +K2, Hipparcos, DASCH, Gaia XP and Pan-STARRS on any source of polarised light at the +star, and the reading of its measurement against the field, Planck's dust polarisation +and the star of the same brightness beside it. +\end{enumerate} + +% ============================================================================= +\section{The screen}\label{sec:screen} +% ============================================================================= + +The compilation of Panopoulou et al.~\cite{Panopoulou2025} holds $55742$ measurements +from $81$ publications, with Gaia EDR3 identifiers and distances; $37210$ stars carry +Stokes $q$ and $u$. Of these, $29442$ are unflagged and have five or more neighbours +within $3^\circ$ and within $20$ per cent of their distance, and $28704$ of them can be +judged against neighbours from their own catalogue, which removes the zero-point +differences between programmes. A star's residual is its Stokes vector less the +neighbours' mean, divided by its own error and the neighbours' scatter in quadrature. +The same statistic with each field's measurements reassigned among its stars is the +null. Residuals above $3\sigma$ occur in $8.3$ per cent of the stars against $7.4$ per +cent in the null, and above $5\sigma$ in $1.2$ against $0.9$ per cent, so discordance +at that level is mostly the scatter of real sightlines. + +We keep dwarfs within $200$\,pc, where the interstellar column is small, whose residual +reaches $5\sigma$, exceeds $0.1$ per cent and five times the field's scatter, and +departs from the field in angle or lies in an unpolarised field. Four remain. HD~142832, +an F3 dwarf at $158$\,pc, was measured in the survey of the Lupus~1 cloud of Alves and +Franco~\cite{AlvesFranco2006} and lies at the cloud's distance, where its dust +polarises it and not its nearer neighbours. Dachs SMC~2-61, a G5 dwarf at $134$\,pc +with a renormalised unit weight error (RUWE) of $8.9$ and an X-ray counterpart, was +measured in a crowded field toward the Small Magellanic Cloud and is a binary or a +blend. HD~127769, an A7 dwarf at $187$\,pc, read $1.3$ per cent at $43^\circ$ in the +compilation of Heiles~\cite{Heiles2000} against its field's $0.4$ per cent at $87^\circ$; +Gaia gives it an extinction $A_G=0.32$\,mag where its nearer neighbours have none, and +Planck's $353$\,GHz dust emission at its position is polarised at $18$ per cent with a +field that predicts $52^\circ$ and $1.9$ per cent for starlight behind the full column, +so its measurement sits on that sightline. The fourth is HD~31435. + +% ============================================================================= +\section{HD 31435}\label{sec:hd} +% ============================================================================= + +\subsection{The measurement} + +HD~31435 (Gaia DR3 154235505416809344) is an F9/G0 dwarf at $100.1$\,pc with +$G=8.90$, $G_\mathrm{BP}-G_\mathrm{RP}=0.73$ and $M_G=3.85$, at the main-sequence +turnoff of an $8$ to $9$\,Gyr population. The compilation gives +$q=-0.38\pm0.15$ and $u=+5.47\pm0.15$ per cent, $p=5.48\pm0.15$ per cent at position +angle $47.0\pm0.8^\circ$ in Johnson $V$, from a Minipol~\cite{Frecker1976} measurement on +JD~2443471.5, 1977 November 22, published by name in Table~2 of Moneti et +al.~\cite{Moneti1984}, whose survey measured field stars toward the Taurus dark clouds. +Against the mean of its neighbours, $0.04$ per cent at $77^\circ$, the residual is +$5.46$ per cent at $46.8^\circ$, $28.9\sigma$. No other polarimetry of the star is found +among the $135$ VizieR catalogues with entries at its position, and the other $93$ stars +of that programme read below $0.4$ per cent within $130$\,pc and rise with reddening +beyond it. + +Figure~\ref{fig:field} shows the field. The compilation holds $58$ stars within $3^\circ$ +of HD~31435: the $11$ within $130$\,pc read $0.27$ per cent or less, and the $40$ +beyond $160$\,pc, behind the Taurus clouds, read a median of $3.2$ per cent, with a +$90$th percentile of $4.9$ per cent and three of the $40$ at $5.5$ per cent or more, at +a median angle of $48^\circ$ and a $16$th to $84$th percentile range of $35$ to +$61^\circ$. HD~31435 lies at the distance of the unpolarised stars with the +polarisation of the background ones. + +\begin{figure}[tp] +\centering +\begin{tikzpicture} +\begin{semilogxaxis}[width=0.78\textwidth,height=0.42\textwidth,xmin=25,xmax=1400,ymin=-0.3,ymax=9.3, + xlabel={distance (pc)},ylabel={polarisation (per cent)},tick label style={font=\footnotesize},label style={font=\small}, + xtick={30,50,100,200,500,1000},xticklabels={$30$,$50$,$100$,$200$,$500$,$1000$}, + legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend cell align=left] +\addplot[only marks,mark=o,mark size=1.4pt,black] coordinates {(33,0.070) (65,0.030) (79,0.170) (86,0.180) (92,0.050) (100,0.190) (105,0.060) (114,0.120) (117,0.120) (124,0.030) (127,0.270) (145,0.330) (155,0.000) (155,0.460) (156,0.460) (158,0.260) (159,0.400) (161,0.720) (164,1.550) (168,2.170) (171,0.340) (194,1.040) (240,4.050) (243,3.070) (247,3.040) (260,2.970) (271,3.270) (281,2.260) (299,3.120) (313,2.350) (333,4.650) (343,5.690) (350,3.260) (367,3.830) (383,2.870) (414,4.910) (426,8.670) (428,0.750) (447,3.480) (451,4.200) (461,3.050) (484,3.530) (501,3.950) (525,3.590) (543,4.870) (580,2.780) (583,6.480) (600,3.340) (600,3.420) (634,2.970) (634,1.820) (705,3.570) (742,4.000) (804,4.780) (1014,0.000) (1031,2.540) (1131,2.370)}; +\addlegendentry{stars within $3^\circ$} +\addplot[only marks,mark=*,mark size=2.6pt,black] coordinates {(100.15,5.48)}; +\addlegendentry{HD 31435} +\addplot[black!40,densely dotted,forget plot] coordinates {(214,0) (214,9.3)}; +\node[font=\scriptsize,text=black!60,anchor=south west,rotate=90] at (axis cs:205,6.4) {HD 283904}; +\end{semilogxaxis} +\end{tikzpicture} +\caption{Optical polarisation against Gaia distance for the $58$ stars of the +compilation within $3^\circ$ of HD~31435, with HD~31435 filled. The dotted line marks +the distance of HD~283904, which has no measurement.} +\label{fig:field} +\end{figure} + +\subsection{The star} + +Nothing at the star gives per cent polarisation. Interstellar polarisation of +$5.48$ per cent needs $E(B-V)\ge0.6$\,mag~\cite{Serkowski1975}; Gaia's astrophysical +parameters give $E(G_\mathrm{BP}-G_\mathrm{RP})=0.00$, and the star's $B-V$ of $0.565$ +lies $0.015$\,mag blueward of the intrinsic colour of its type. The WISE +photometry~\cite{Wright2010} follows the photosphere from $3.4$ to $22$\um, with no warm +dust. Its astrometry carries no companion: RUWE $0.99$, no multiple image peaks, and a +Hipparcos--Gaia proper-motion anomaly~\cite{Kervella2022} of $20\pm32$\,m\,s$^{-1}$. Gaia's +radial velocity, from $17$ transits over $920$ days, varies by less than +$1$\,km\,s$^{-1}$. TESS~\cite{Ricker2015}, +K2~\cite{Howell2014} and Hipparcos~\cite{Perryman1997} photometry is flat to $0.03$ per +cent, and the Harvard plates~\cite{Grindlay2009} show no dimming around 1977 against +matched stars on the same plates. The star is an old, single, quiet dwarf in front of the +dust, whose intrinsic polarisation would be of order ten ppm. + +\subsection{A reflector} + +Light reflected by a structure near the star and seen together with it is polarised by +$p\approx fP_r$, with $f$ the fraction of the star's light returned toward Earth and +$P_r$ the polarisation of the reflected light, so $5.48$ per cent needs $f\ge0.055$ even +if every reflected photon is polarised. Specular reflection from metals polarises +weakly away from grazing incidence: by the Fresnel relations aluminium gives $3$ to $14$ +per cent at incidence angles of $45$ to $80^\circ$ and silver less than $2$ per cent, so +a metal mirror needs $f$ of order one, and a dielectric reaches $98$ per cent at +Brewster's angle while reflecting $9$ per cent of what falls on it, so it must +intercept more than half of the star's light. Only a reflector that sends back one +polarisation and passes or absorbs the other, as a conducting grid does, gives +$5.5$ per cent with $f\approx0.06$. + +The reflected light carries the reflector's colour. Against the median of $40$ Gaia XP +spectra~\cite{DeAngeli2023} of unreddened twins matched in temperature, gravity and +metallicity, HD~31435's spectrum agrees to $0.3$ per cent from $400$ to $700$\,nm +($0.9998\pm0.0013$, $0.9970\pm0.0005$ and $1.0013\pm0.0011$ in the three $100$\,nm +bands) and lies $0.35$ and $0.66$ per cent high at $700$ to $800$ and $800$ to $900$\,nm, +within the twins' own spread of $0.7$ to $1.0$ per cent there; its slope, +$+0.0014$ per $100$\,nm, lies inside the twins' $-0.005$ to $+0.006$. Aluminium's +reflectance dips by about six per cent near $830$\,nm, so a tenth of the light +reflected from aluminium would take $0.6$ per cent out of the $800$ to $900$\,nm band, +where HD~31435 lies above its twins rather than below them. The spectrum is that of a +star with nothing coloured added to it, and leaves a grey reflector. + +The reflector must also lie where no archive sees it. A structure within about +$10$\,au that absorbs as little as a per cent of what it intercepts would radiate above +the photosphere at $22$\um, which WISE excludes; one that absorbs nothing is not +excluded there, and TESS, K2 and Hipparcos, flat to $0.03$ per cent over years, exclude +one whose reflected light changes along an orbit, so what is left inside $10$\,au is a +perfect reflector that holds still. Gaia's image parameters, with RUWE $0.99$ and no +second peak, exclude a resolved source of a few per cent of the star's light at $0.1$ to +$2''$, $10$ to $200$\,au. Pan-STARRS~\cite{Chambers2016} images in $g$, $r$, $i$, $z$ +and $y$, with each radial profile normalised at $13$ to $25''$ against three stars of +like brightness in the same frames, show no excess light at $2$ to $13''$ in any filter, +so no extended reflector lies at $200$ to $1300$\,au. + +\subsection{The sightline} + +The measured angle is the field's. Planck's $353$\,GHz maps~\cite{Planck2020}, read at +HD~31435's position on the HEALPix grid~\cite{Gorski2005}, give dust emission polarised +at $6$ to $8$ per cent with a polarised intensity of $0.12$ to $0.15$\,MJy\,sr$^{-1}$ +within $5$ to $20'$; turned through $90^\circ$ and into the equatorial frame, the field +predicts $49$ to $54^\circ$ for starlight behind the column, against the measured +$47^\circ$ and the background stars' median of $48^\circ$. The ratio of polarised +submillimetre intensity to optical polarisation, $5.4$\,MJy\,sr$^{-1}$~\cite{Planck2015}, +predicts $2.3$ to $2.8$ per cent for a star behind the whole column, half the measured +value; sightlines scatter about that ratio, and three of the field's $40$ background +stars reach $5.5$ per cent or more. + +The star of the same brightness beside HD~31435 is behind the cloud. HD~283904, an A2 +star at $214$\,pc with $A_G=1.3$\,mag and the $1.527$\um\ diffuse interstellar +band~\cite{Zasowski2015} in its APOGEE spectrum~\cite{Majewski2017}, lies $5'$ west of +HD~31435, at the same declination to $27''$ and $23$\,s of right ascension away, and has +never been measured. A setting that slipped by $23$\,s of hour angle would have placed it +in the aperture in place of HD~31435, and its polarisation would be the field's: the +angle exactly, and the amount on an efficient sightline. + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +Polarimetry of nearby stars at parts per million~\cite{Cotton2016} measures the +interstellar polarisation inside the Local Bubble and bounds the intrinsic polarisation +of dwarfs, and the compilations of optical +polarimetry~\cite{Heiles2000,Panopoulou2025}, joined to Gaia distances, are used to map +the interstellar field and the dust in three dimensions. Planck's comparison of +submillimetre and optical polarisation~\cite{Planck2015} gives the ratio used here to +predict a star's polarisation from the dust emission at its position. We find no earlier +use of these compilations to look for stars whose polarisation their neighbours do not +share, nor any discussion of HD~31435's measurement. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +Among $28704$ stars with optical polarimetry, one dwarf within $200$\,pc carries a +polarisation that neither its neighbours nor anything at the star accounts for: HD~31435, +listed at $5.48$ per cent from a single measurement of 1977. A reflector that made it +would have to return at least six per cent of the star's light, be grey across the +visible to a third of a per cent and polarise like a conducting grid, either lie within +$10$\,au, absorb nothing and hold still or lie beyond $1300$\,au, and be aligned by +chance with the Galaxy's field behind the Taurus clouds. The measurement has instead +every property of a star behind those clouds, and a star of the same brightness behind +them sits $23$\,s of right ascension away. The measurement most likely belongs to +HD~283904. + +Measuring both stars in one night with any polarimeter of $0.1$ per cent precision +decides between the two readings, and measuring HD~31435 at parts per million would +bound what a reflector could hide at the level the Local Bubble's stars set. + +\section*{Acknowledgements} + +This work uses the compilation of optical starlight polarisation of Panopoulou et al.\ +and the agglomeration of Heiles through VizieR at CDS, Strasbourg; data from the +European Space Agency mission Gaia, processed by the Gaia Data Processing and Analysis +Consortium (DPAC), funded by national institutions, in particular those participating +in the Gaia Multilateral Agreement; Planck maps from the NASA/IPAC Infrared Science +Archive; WISE, TESS and K2 data from IRSA and MAST; the Pan-STARRS1 image cutout service; +SDSS-IV's APOGEE; the DASCH project's digitised Harvard plates; and the software astropy, +astropy-healpix, NumPy and SciPy. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Cotton2016} +D.~V. Cotton, J.~Bailey, L.~Kedziora-Chudczer, et al., The linear polarization of +Southern bright stars measured at the parts-per-million level, \emph{Mon. Not. R. Astron. +Soc.} \textbf{455}, 1607 (2016). + +\bibitem{Serkowski1975} +K.~Serkowski, D.~S. Mathewson and V.~L. Ford, Wavelength dependence of interstellar +polarization and ratio of total to selective extinction, \emph{Astrophys. J.} +\textbf{196}, 261 (1975). + +\bibitem{Heiles2000} +C.~Heiles, 9286 stars: an agglomeration of stellar polarization catalogs, \emph{Astron. +J.} \textbf{119}, 923 (2000). + +\bibitem{Panopoulou2025} +G.~V. Panopoulou, L.~Markopoulioti, F.~Bouzelou, et al., A compilation of optical +starlight polarization catalogs, \emph{Astrophys. J. Suppl.} \textbf{276}, 15 (2025). + +\bibitem{AlvesFranco2006} +F.~O. Alves and G.~A.~P. Franco, The magnetic field in the Lupus I molecular cloud, +\emph{Mon. Not. R. Astron. Soc.} \textbf{366}, 238 (2006). + +\bibitem{Frecker1976} +J.~E. Frecker and K.~Serkowski, Linear polarimeter with rapid modulation, achromatic in +the $0.3$--$1.1$\,$\mu$m range, \emph{Appl. Opt.} \textbf{15}, 605 (1976). + +\bibitem{Moneti1984} +A.~Moneti, J.~L. Pipher, H.~L. Helfer, R.~S. McMillan and M.~L. Perry, Magnetic field +structure in the Taurus dark cloud, \emph{Astrophys. J.} \textbf{282}, 508 (1984). + +\bibitem{Wright2010} +E.~L. Wright, P.~R.~M. Eisenhardt, A.~K. Mainzer, et al., The Wide-field Infrared Survey +Explorer (WISE): mission description and initial on-orbit performance, \emph{Astron. J.} +\textbf{140}, 1868 (2010). + +\bibitem{Kervella2022} +P.~Kervella, F.~Arenou and F.~Th\'evenin, Stellar and substellar companions from Gaia +EDR3: proper-motion anomaly and resolved common proper-motion pairs, \emph{Astron. +Astrophys.} \textbf{657}, A7 (2022). + +\bibitem{Ricker2015} +G.~R. Ricker, J.~N. Winn, R.~Vanderspek, et al., Transiting Exoplanet Survey Satellite, +\emph{J. Astron. Telesc. Instrum. Syst.} \textbf{1}, 014003 (2015). + +\bibitem{Howell2014} +S.~B. Howell, C.~Sobeck, M.~Haas, et al., The K2 mission: characterization and early +results, \emph{Publ. Astron. Soc. Pac.} \textbf{126}, 398 (2014). + +\bibitem{Perryman1997} +M.~A.~C. Perryman, L.~Lindegren, J.~Kovalevsky, et al., The Hipparcos catalogue, +\emph{Astron. Astrophys.} \textbf{323}, L49 (1997). + +\bibitem{Grindlay2009} +J.~Grindlay, S.~Tang, R.~Simcoe, et al., DASCH to measure (and preserve) the Harvard +plates: opening the $\sim$100-year time domain astronomy window, in \emph{Preserving +Astronomy's Photographic Legacy}, ASP Conf. Ser. \textbf{410}, 101 (2009). + +\bibitem{DeAngeli2023} +F.~De~Angeli, M.~Weiler, P.~Montegriffo, et al., Gaia Data Release 3: processing and +validation of BP/RP low-resolution spectral data, \emph{Astron. Astrophys.} +\textbf{674}, A2 (2023). + +\bibitem{Chambers2016} +K.~C. Chambers, E.~A. Magnier, N.~Metcalfe, et al., The Pan-STARRS1 surveys, +arXiv:1612.05560 (2016). + +\bibitem{Planck2020} +Planck Collaboration, Planck 2018 results. III. High Frequency Instrument data +processing and frequency maps, \emph{Astron. Astrophys.} \textbf{641}, A3 (2020). + +\bibitem{Gorski2005} +K.~M. G\'orski, E.~Hivon, A.~J. Banday, et al., HEALPix: a framework for +high-resolution discretization and fast analysis of data distributed on the sphere, +\emph{Astrophys. J.} \textbf{622}, 759 (2005). + +\bibitem{Planck2015} +Planck Collaboration, Planck intermediate results. XXI. Comparison of polarized thermal +emission from Galactic dust at 353 GHz with interstellar polarization in the visible, +\emph{Astron. Astrophys.} \textbf{576}, A106 (2015). + +\bibitem{Zasowski2015} +G.~Zasowski, B.~M\'enard, D.~Bizyaev, et al., Mapping the interstellar medium with +near-infrared diffuse interstellar bands, \emph{Astrophys. J.} \textbf{798}, 35 (2015). + +\bibitem{Majewski2017} +S.~R. Majewski, R.~P. Schiavon, P.~M. Frinchaboy, et al., The Apache Point Observatory +Galactic Evolution Experiment (APOGEE), \emph{Astron. J.} \textbf{154}, 94 (2017). + +\end{thebibliography} + +\end{document} diff --git a/papers/kic2557430/kic2557430.pdf b/papers/kic2557430/kic2557430.pdf new file mode 100644 index 0000000000000000000000000000000000000000..de561120a725c19cb03380075e6ea386269055f5 Binary files /dev/null and b/papers/kic2557430/kic2557430.pdf differ diff --git a/papers/kic2557430/kic2557430.tex b/papers/kic2557430/kic2557430.tex new file mode 100644 index 0000000000000000000000000000000000000000..eb7521dbda3a90d2f40efee46e6f04366daa6e27 --- /dev/null +++ b/papers/kic2557430/kic2557430.tex @@ -0,0 +1,216 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{Missing Light in Detached Eclipsing Binaries:\\ the Case of KIC 2557430} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +A detached eclipsing binary's light curve and radial velocities give each component's +radius and temperature, and so its luminosity, independently of its distance; with a +Gaia parallax the system's apparent brightness follows, and a structure that intercepts +part of the light would leave the system fainter than its components predict. We test +the $117$ systems of DEBCat with components below $8000$\,K within $1$\,kpc and +renormalised unit weight error (RUWE) of $1.4$ or less. The observed minus predicted +$G$ has a median of $-0.04$\,mag and a robust scatter of $0.12$\,mag; $12$ systems are +too bright, by the light of third stars and blends, and one is too faint by $0.3$\,mag at +$3\sigma$: KIC~2557430, by $1.05\pm0.19$\,mag. Gaia resolves it into the eclipsing pair, +$G=11.44$ at $343$\,pc, and a co-moving K star $2.4''$ away at $339$\,pc, inside +Kepler's pixels. The pair's colour and Gaia temperature, $6130$\,K with no extinction, +lie $900$\,K below the published $7050$\,K primary, and Gaia's luminosities for the two +sources sum to $2.9\,L_\odot$ against the solution's $9.7\,L_\odot$. The light is not +missing from the system: the published temperatures, and the extinction the test inferred +from them, are too high, and a spectroscopic orbit free of the companion's light decides +the radii. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +A structure that intercepts part of a star's light and re-radiates it in the infrared +leaves the star fainter in the optical than its size and temperature imply. For a single +star the size comes from models or interferometry, but a detached eclipsing binary +gives both components' radii from its light curve and its velocities, and their +temperatures from spectra and the eclipse depths, with uncertainties of one or two per +cent for the best systems~\cite{Southworth2015}. With a Gaia parallax~\cite{Gaia2023} +the system's luminosity then predicts its apparent magnitude, and a shortfall is light +that the system does not send us. Detached eclipsing binaries have been used the other +way, to test Gaia's parallaxes against their own distances~\cite{Stassun2021}; here +the parallaxes are taken as given and the light is tested. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item A comparison of the predicted and observed Gaia $G$ magnitudes of the $117$ clean +detached eclipsing binaries of DEBCat. +\item The resolution of the one system too faint, KIC~2557430, by Gaia's view of the +system and its companion. +\end{enumerate} + +% ============================================================================= +\section{Data and method}\label{sec:method} +% ============================================================================= + +DEBCat~\cite{Southworth2015} lists $388$ detached eclipsing binaries with masses and +radii measured to a few per cent, and for $252$ of them both components' luminosities +and temperatures and a Gaia DR3 counterpart through CDS XMatch on their SIMBAD names. +For each component, $\log L$ and $\log T_\mathrm{eff}$ give an absolute $G$ through +bolometric corrections in temperature, and the two components summed and carried to +the Gaia distance predict $G$. The extinction applied is the larger of Gaia's $A_G$ and +$2.7\,E(B-V)$, with $E(B-V)$ the catalogue's $B-V$ less the intrinsic colour of the +components' combined light. We keep the $117$ systems whose components are cooler than +$8000$\,K, which lie within $1$\,kpc and whose RUWE is $1.4$ or less, so that the +parallax and the photometry belong to an unresolved, well-measured source; BG~Ind, +IM~Per and the other systems of high RUWE are set aside. A system is too faint when +$G_\mathrm{obs}-G_\mathrm{pred}$ exceeds $0.3$\,mag at $3\sigma$, with the error from +the luminosities, the parallax and the photometry. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +Across the $117$ systems $G_\mathrm{obs}-G_\mathrm{pred}$ has a median of $-0.04$\,mag +and a robust scatter of $0.12$\,mag. Twelve systems are too bright, as light from a +third star or a blend in Gaia's photometry makes them, and one is too faint: +KIC~2557430 (KOI-6277), an F2 and F9 pair with a period of $1.298$\,d, by +$1.05\pm0.19$\,mag ($5.6\sigma$), a factor of $2.6$ in flux. + +Its published solution~\cite{Hoyman2020} gives radii of $1.88$ and $1.23\,R_\odot$ and +temperatures of $7050$ and $6050$\,K, luminosities of $7.9$ and $1.8\,L_\odot$, and the +catalogue's $B-V$ of $0.58$ against the $0.38$ of those components set the extinction +in the test at $0.54$\,mag; without it the system would be $1.6$\,mag too faint. +Table~\ref{tab:gaia} gives Gaia's view. The system is the visual double +WDS~J19074+3749AB, and Gaia resolves it into two sources at the same parallax: the +eclipsing pair, $G=11.44$, $G_\mathrm{BP}-G_\mathrm{RP}=0.68$, $2.916\pm0.012$\,mas, +with RUWE $0.81$ and a radial velocity that varies by $20$\,km\,s$^{-1}$ over $20$ +transits, and a K star $2.4''$ away, $G=13.30$, $G_\mathrm{BP}-G_\mathrm{RP}=1.39$, +$2.946\pm0.015$\,mas. The test matched the eclipsing pair's source; adding the K star +brings the system to $G=11.26$, still $0.86$\,mag below the prediction. + +\begin{table}[t] +\centering\small +\caption{Gaia DR3 for the two sources of KIC~2557430: parallax, $G$, colour, RUWE, and the +temperature, radius and luminosity of the astrophysical parameters (GSP-Phot and FLAME), +which treat each source as a single star.} +\label{tab:gaia} +\begin{tabular}{lrrrrrrr} +\toprule +Source & $\varpi$ (mas) & $G$ & BP$-$RP & RUWE & $T_\mathrm{eff}$ (K) & $R$ ($R_\odot$) & $L$ ($L_\odot$) \\ +\midrule +2099133865420292992 & $2.916\pm0.012$ & $11.44$ & $0.68$ & $0.81$ & $6131$ & $1.31$ & $2.20$ \\ +2099133865420292480 & $2.946\pm0.015$ & $13.30$ & $1.39$ & $1.55$ & $4698$ & $1.31$ & $0.74$ \\ +\bottomrule +\end{tabular} +\end{table} + +Gaia's colours tell against the published temperatures rather than for missing light. +Gaia gives the eclipsing pair $A_G=0.001$\,mag, so the catalogue's $B-V$ of $0.58$ is +the pair's own colour, that of a star near $6000$\,K, where a $7050$\,K primary carrying +four fifths of the light would give about $0.4$; Gaia's photometric temperature for the +pair is $6130$\,K. At its parallax the pair's light corresponds to $2.2\,L_\odot$, and +the K star's to $0.7\,L_\odot$, together $2.9\,L_\odot$ against the solution's +$9.7\,L_\odot$. A primary at $6100$\,K with the published radius would hold $4.4\,L_\odot$, +which halves the deficit, and the rest lies within what radii from a spectroscopic orbit +contaminated by a third star can carry, since the K star, $1.9$\,mag fainter in $G$, +falls inside Kepler's $4''$ pixels and any spectrograph's fibre or slit at that +separation. An earlier analysis of the Kepler light curve read the system as a triple +holding a $\gamma$~Doradus pulsator and two flaring components~\cite{Kamil2017}, and the +K star is a flaring component that such a reading needs. + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +Detached eclipsing binaries serve as distance standards, and their luminosities have +been used to test Gaia's parallaxes~\cite{Stassun2021}; searches for intercepted light +around single stars use their infrared excess against models of their +photospheres~\cite{Suazo2024}. We find no earlier search of eclipsing binaries for +light that their measured components should send and do not. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No clean detached eclipsing binary of DEBCat is fainter than its components predict +beyond the scatter of the comparison, $0.12$\,mag, save KIC~2557430, and Gaia shows +that its deficit belongs to its published solution: the pair's colour and temperature +are those of a $6100$\,K star with no extinction, and a resolved co-moving K star sits +inside the apertures that gave the solution. The test bounds light intercepted from the +other $116$ systems at about $0.36$\,mag, three times the scatter, a third of the flux. +A new spectroscopic orbit of KIC~2557430 that separates the K star's light, with +temperatures from high-resolution spectra, would place it among them. + +\section*{Acknowledgements} + +This work uses DEBCat, maintained by J.~Southworth; data from the European Space Agency +mission Gaia, processed by the Gaia Data Processing and Analysis Consortium (DPAC), funded +by national institutions, in particular those participating in the Gaia Multilateral +Agreement; the SIMBAD and VizieR services and the XMatch service at CDS, Strasbourg; and +the Washington Double Star Catalog maintained at the U.S. Naval Observatory. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Southworth2015} +J.~Southworth, DEBCat: a catalog of detached eclipsing binary stars, in \emph{Living +Together: Planets, Host Stars and Binaries}, ASP Conf. Ser. \textbf{496}, 164 (2015). + +\bibitem{Gaia2023} +Gaia Collaboration, A.~Vallenari, A.~G.~A. Brown, et al., Gaia Data Release 3: summary +of the content and survey properties, \emph{Astron. Astrophys.} \textbf{674}, A1 (2023). + +\bibitem{Stassun2021} +K.~G. Stassun and G.~Torres, Parallax systematics and photocenter motions of benchmark +eclipsing binaries in Gaia EDR3, \emph{Astrophys. J. Lett.} \textbf{907}, L33 (2021). + +\bibitem{Hoyman2020} +B.~Hoyman, \"O.~\c{C}ak\i rl\i\ and O.~\"Ozdarcan, Updated pulsation period relations of +$\gamma$~Dor-type stars in eclipsing binaries: the case of KIC~2557430, \emph{Mon. Not. +R. Astron. Soc.} \textbf{491}, 5980 (2020). + +\bibitem{Kamil2017} +C.~Kamil and H.~A. Dal, KIC~2557430: a triple system containing one $\gamma$~Dor and two +flaring components?, \emph{Publ. Astron. Soc. Aust.} \textbf{34} (2017), +arXiv:1707.04727. + +\bibitem{Suazo2024} +M.~Suazo, E.~Zackrisson, P.~K. Mahto, et al., Project Hephaistos -- II. Dyson sphere +candidates from Gaia DR3, 2MASS, and WISE, \emph{Mon. Not. R. Astron. Soc.} +\textbf{531}, 695 (2024). + +\end{thebibliography} + +\end{document} diff --git a/papers/ml_signals/README.md b/papers/ml_signals/README.md new file mode 100644 index 0000000000000000000000000000000000000000..76a60096dcc0c4dd7e16b1a12b16370b571aca63 --- /dev/null +++ b/papers/ml_signals/README.md @@ -0,0 +1,26 @@ +# The eight Breakthrough Listen signals of interest of Ma et al. (2023) traced through their sessions + +`ml_signals.tex` and `ml_signals.pdf` are the note; `mlc8_session.pdf` is its Figure 1. `make_numbers.py` prints every +number in the text and Table 1 from the files in `data/`, and draws Figure 1 from `data/MLc8_waterfall.npz`. + +## Data + +| File | Contents | +|------|----------| +| `data/MLc1.jsonl` to `data/MLc8.jsonl` | each signal's line (reference MJD, Hz from the tabulated frequency, drift, and the S/N of its ON tracks), then one record per scan of its session: target, cadence, ON or OFF, the power on the line with its parallel-track null, and the tracks above S/N 8 within 25 kHz | +| `data/table.json` | Table 1: each signal's line, its power on the line in the ON and OFF scans of its cadence, the OFF scans' combined significance, and the scans pointed at other stars that hold it | +| `data/listing_.json` | the mid-resolution scans of each of the six sessions in the Breakthrough Listen pipeline directory | +| `data/MLc8_waterfall.npz` | every scan of AGBT16A_999_213 over the band MLc8's line crosses, unit-noise spectra as float16 with their MJDs | +| `data/stars.json` | the five stars' SIMBAD positions | + +## Commands + +Each result comes from `python -I seti.py breakthrough soi `, reading the 2.84 Hz products (`gpuspec.0000.h5`) +of the Breakthrough Listen open data by byte range. + +| Result | Command | +|--------|---------| +| the traces | `soi trace` (all eight; `--tag MLc8` for one) | +| Table 1 | `soi table` | +| Figure 1's spectra | `soi waterfall --tag MLc8` | +| the store's record | `soi record` | diff --git a/papers/ml_signals/data/MLc1.jsonl b/papers/ml_signals/data/MLc1.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..6ed4a1516d8572006414476c0ecfcc562324fed0 --- /dev/null +++ b/papers/ml_signals/data/MLc1.jsonl @@ -0,0 +1,28 @@ +{"t0": 57541.695924691834, "hz": -2067.600817779112, "drift": -0.9736999842713888, "on_snr": [10.6, 9.8, 5.9], "tag": "MLc1", "star": "HIP13402", "session": "AGBT16A_999_212", "f0": 1188.539231} +{"file": "spliced_blc0001020304050607_guppi_57541_55054_HIP10644_0002.gpuspec.0002.h5", "target": "HIP10644", "cadence": "HIP10644", "on": true, "mjd": 57541.63886, "on_line": -0.2, "null_mean": 0.14, "null_std": 0.75, "null_n": 200, "as_high": 138, "tracks": [[9.2, -19190.8, -0.086]]} +{"file": "spliced_blc0001020304050607_guppi_57541_55424_HIP10169_0003.gpuspec.0002.h5", "target": "HIP10169", "cadence": "HIP10644", "on": false, "mjd": 57541.64315, "on_line": -0.64, "null_mean": 0.11, "null_std": 0.67, "null_n": 200, "as_high": 175, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_55794_HIP10644_0004.gpuspec.0002.h5", "target": "HIP10644", "cadence": "HIP10644", "on": true, "mjd": 57541.64743, "on_line": 1.67, "null_mean": 0.24, "null_std": 0.72, "null_n": 200, "as_high": 2, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_56163_HIP10199_0005.gpuspec.0002.h5", "target": "HIP10199", "cadence": "HIP10644", "on": false, "mjd": 57541.6517, "on_line": 0.24, "null_mean": 0.27, "null_std": 0.74, "null_n": 200, "as_high": 100, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_56532_HIP10644_0006.gpuspec.0002.h5", "target": "HIP10644", "cadence": "HIP10644", "on": true, "mjd": 57541.65597, "on_line": 1.03, "null_mean": 0.33, "null_std": 0.62, "null_n": 200, "as_high": 25, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_56902_HIP10453_0007.gpuspec.0002.h5", "target": "HIP10453", "cadence": "HIP10644", "on": false, "mjd": 57541.66025, "on_line": 0.16, "null_mean": 0.27, "null_std": 0.71, "null_n": 200, "as_high": 117, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_57267_HIP10670_0008.gpuspec.0002.h5", "target": "HIP10670", "cadence": "HIP10670", "on": true, "mjd": 57541.66448, "on_line": 1.54, "null_mean": 0.31, "null_std": 0.68, "null_n": 200, "as_high": 5, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_57630_HIP10169_0009.gpuspec.0002.h5", "target": "HIP10169", "cadence": "HIP10670", "on": false, "mjd": 57541.66868, "on_line": 0.46, "null_mean": 0.28, "null_std": 0.64, "null_n": 200, "as_high": 74, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_57992_HIP10670_0010.gpuspec.0002.h5", "target": "HIP10670", "cadence": "HIP10670", "on": true, "mjd": 57541.67287, "on_line": -0.19, "null_mean": 0.25, "null_std": 0.72, "null_n": 200, "as_high": 143, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_58354_HIP10199_0011.gpuspec.0002.h5", "target": "HIP10199", "cadence": "HIP10670", "on": false, "mjd": 57541.67706, "on_line": 0.8, "null_mean": 0.15, "null_std": 0.67, "null_n": 200, "as_high": 35, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_58714_HIP10670_0012.gpuspec.0002.h5", "target": "HIP10670", "cadence": "HIP10670", "on": true, "mjd": 57541.68123, "on_line": -1.2, "null_mean": 0.31, "null_std": 0.67, "null_n": 200, "as_high": 198, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_59084_HIP11548_0013.gpuspec.0002.h5", "target": "HIP11548", "cadence": "HIP10670", "on": false, "mjd": 57541.68551, "on_line": 0.09, "null_mean": 0.13, "null_std": 0.7, "null_n": 200, "as_high": 108, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_59531_HIP13402_0014.gpuspec.0002.h5", "target": "HIP13402", "cadence": "HIP13402", "on": true, "mjd": 57541.69068, "on_line": 3.8, "null_mean": 0.14, "null_std": 0.88, "null_n": 200, "as_high": 1, "tracks": [[15.2, -14367.6, -0.414], [14.8, -13868.5, -0.402], [11.9, 18133.0, -0.402], [11.4, -16366.6, -0.402], [11.4, -1639.0, -1.514], [11.3, -14018.8, -0.414], [10.8, -14217.3, -0.394], [10.5, 19632.9, -0.414], [9.9, -15867.6, -0.408], [9.4, -10616.2, -0.394], [9.3, -13718.3, -0.408], [9.3, 7383.6, -0.388], [8.7, -14517.9, -0.408], [8.7, -14866.6, -0.414], [8.5, -23617.0, -0.4], [8.5, 19984.5, -0.388], [8.3, -22369.4, -0.414], [8.1, -16219.2, -0.414], [8.1, 19783.2, -0.394]]} +{"file": "spliced_blc0001020304050607_guppi_57541_59890_HIP12402_0015.gpuspec.0002.h5", "target": "HIP12402", "cadence": "HIP13402", "on": false, "mjd": 57541.69484, "on_line": 2.16, "null_mean": 0.27, "null_std": 0.7, "null_n": 200, "as_high": 1, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_60248_HIP13402_0016.gpuspec.0002.h5", "target": "HIP13402", "cadence": "HIP13402", "on": true, "mjd": 57541.69898, "on_line": 7.1, "null_mean": 0.24, "null_std": 0.79, "null_n": 200, "as_high": 0, "tracks": [[12.0, -2313.9, -0.85]]} +{"file": "spliced_blc0001020304050607_guppi_57541_60602_HIP12482_0017.gpuspec.0002.h5", "target": "HIP12482", "cadence": "HIP13402", "on": false, "mjd": 57541.70308, "on_line": 0.23, "null_mean": 0.21, "null_std": 0.7, "null_n": 200, "as_high": 96, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_60955_HIP13402_0018.gpuspec.0002.h5", "target": "HIP13402", "cadence": "HIP13402", "on": true, "mjd": 57541.70716, "on_line": 3.43, "null_mean": 0.26, "null_std": 0.69, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_61313_HIP12549_0019.gpuspec.0002.h5", "target": "HIP12549", "cadence": "HIP13402", "on": false, "mjd": 57541.71131, "on_line": 0.07, "null_mean": 0.21, "null_std": 0.68, "null_n": 200, "as_high": 109, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_61711_HIP21556_0020.gpuspec.0002.h5", "target": "HIP21556", "cadence": "HIP21556", "on": true, "mjd": 57541.71591, "on_line": 0.93, "null_mean": 0.21, "null_std": 0.74, "null_n": 200, "as_high": 36, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_62066_HIP20806_0021.gpuspec.0002.h5", "target": "HIP20806", "cadence": "HIP21556", "on": false, "mjd": 57541.72002, "on_line": 1.04, "null_mean": 0.3, "null_std": 0.65, "null_n": 200, "as_high": 28, "tracks": [[10.2, 1307.1, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57541_62422_HIP21556_0022.gpuspec.0002.h5", "target": "HIP21556", "cadence": "HIP21556", "on": true, "mjd": 57541.72414, "on_line": 1.55, "null_mean": 0.24, "null_std": 0.63, "null_n": 200, "as_high": 5, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_62773_HIP21210_0023.gpuspec.0002.h5", "target": "HIP21210", "cadence": "HIP21556", "on": false, "mjd": 57541.7282, "on_line": 1.74, "null_mean": 0.3, "null_std": 0.73, "null_n": 200, "as_high": 3, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_63124_HIP21556_0024.gpuspec.0002.h5", "target": "HIP21556", "cadence": "HIP21556", "on": true, "mjd": 57541.73227, "on_line": -0.61, "null_mean": 0.24, "null_std": 0.64, "null_n": 200, "as_high": 183, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_63477_HIP21222_0025.gpuspec.0002.h5", "target": "HIP21222", "cadence": "HIP21556", "on": false, "mjd": 57541.73635, "on_line": -0.24, "null_mean": 0.21, "null_std": 0.75, "null_n": 200, "as_high": 149, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_63820_HIP21594_0026.gpuspec.0002.h5", "target": "HIP21594", "cadence": null, "on": null, "mjd": 57541.74032, "on_line": -0.58, "null_mean": 0.29, "null_std": 0.73, "null_n": 200, "as_high": 179, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57541_64171_HIP20761_0027.gpuspec.0002.h5", "target": "HIP20761", "cadence": null, "on": null, "mjd": 57541.74439, "on_line": -0.97, "null_mean": 0.33, "null_std": 0.84, "null_n": 200, "as_high": 190, "tracks": [[31.0, -16979.1, -0.282], [18.0, -16480.0, -0.278], [18.0, -16828.8, -0.282], [17.7, 11770.1, -0.292], [16.8, -2228.8, -0.292], [15.1, 23769.9, -0.292], [14.3, -17129.4, -0.282], [13.6, 24770.9, -0.282], [13.5, -16630.3, -0.292], [13.2, -17478.1, -0.292], [12.4, 11520.6, -0.292], [12.4, 14770.0, -0.292], [12.3, -16729.6, -0.282], [11.9, 21521.4, -0.282], [11.7, -8481.1, -0.278], [11.7, -17327.9, -0.278], [11.1, -15479.1, -0.278], [10.5, -18229.5, -0.282], [10.5, -17829.7, -0.282], [10.4, -17228.6, -0.282], [10.3, -17980.0, -0.292], [10.3, -13630.4, -0.278], [10.2, -8228.7, -0.282], [9.9, 24521.3, -0.292], [9.8, 19769.0, -0.278], [9.7, -7979.2, -0.282], [9.7, 13871.2, -0.282], [9.7, -13480.1, -0.278], [9.1, 14021.5, -0.3], [9.1, 19519.5, -0.278], [9.0, 11370.3, -0.272], [9.0, -8129.5, -0.278], [8.9, 20021.4, -0.296], [8.7, 19369.2, -0.292], [8.6, -24479.0, -0.292], [8.4, -17628.4, -0.282], [8.4, 3170.0, -0.282], [8.2, -13729.6, -0.282], [8.2, 9269.2, -0.01], [8.0, 20770.0, -0.282]]} +{"file": "spliced_blc0001020304050607_guppi_57541_64523_HIP21594_0028.gpuspec.0002.h5", "target": "HIP21594", "cadence": null, "on": null, "mjd": 57541.74825, "on_line": -1.45, "null_mean": 0.33, "null_std": 0.72, "null_n": 200, "as_high": 200, "tracks": [[12.8, -17069.8, -0.262], [9.8, -13729.6, -0.014], [9.0, -16567.9, -0.262], [9.0, 11682.2, -0.262], [8.7, 9269.2, 0.014], [8.5, 23682.0, -0.254], [8.5, -2319.5, -0.262], [8.4, -16967.7, -0.262]]} diff --git a/papers/ml_signals/data/MLc2.jsonl b/papers/ml_signals/data/MLc2.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..248eaba6832dca6c0e1b1c0e2cd090aae79e0123 --- /dev/null +++ b/papers/ml_signals/data/MLc2.jsonl @@ -0,0 +1,57 @@ +{"t0": 57752.92167684734, "hz": -120.58149834509736, "drift": 0.4254538945132102, "on_snr": [9.6, 34.6, 25.4], "tag": "MLc2", "star": "HIP118212", "session": "AGBT16B_999_105", "f0": 1347.862244} +{"file": "spliced_blc0001020304050607_guppi_57752_71642_DIAG_PSR_J2013%2B3845_0002.gpuspec.0002.h5", "target": "DIAG_PSR_J2013%2B3845", "cadence": null, "on": null, "mjd": 57752.83088, "on_line": 0.08, "null_mean": 0.31, "null_std": 0.61, "null_n": 200, "as_high": 123, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_72187_HIP114622_0003.gpuspec.0002.h5", "target": "HIP114622", "cadence": "HIP114622", "on": true, "mjd": 57752.83719, "on_line": -0.13, "null_mean": 0.25, "null_std": 0.62, "null_n": 200, "as_high": 146, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_72531_HIP115104_0004.gpuspec.0002.h5", "target": "HIP115104", "cadence": "HIP114622", "on": false, "mjd": 57752.84117, "on_line": 0.05, "null_mean": 0.28, "null_std": 0.6, "null_n": 200, "as_high": 123, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_72875_HIP114622_0005.gpuspec.0002.h5", "target": "HIP114622", "cadence": "HIP114622", "on": true, "mjd": 57752.84515, "on_line": -0.11, "null_mean": 0.17, "null_std": 0.63, "null_n": 200, "as_high": 131, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_73221_HIP115186_0006.gpuspec.0002.h5", "target": "HIP115186", "cadence": "HIP114622", "on": false, "mjd": 57752.84916, "on_line": 0.3, "null_mean": 0.14, "null_std": 0.62, "null_n": 200, "as_high": 75, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_73566_HIP114622_0007.gpuspec.0002.h5", "target": "HIP114622", "cadence": "HIP114622", "on": true, "mjd": 57752.85315, "on_line": 0.29, "null_mean": 0.26, "null_std": 0.7, "null_n": 200, "as_high": 103, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_73910_HIP115508_0008.gpuspec.0002.h5", "target": "HIP115508", "cadence": "HIP114622", "on": false, "mjd": 57752.85713, "on_line": -0.29, "null_mean": 0.33, "null_std": 0.61, "null_n": 200, "as_high": 170, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_74294_HIP117712_0009.gpuspec.0002.h5", "target": "HIP117712", "cadence": "HIP117712", "on": true, "mjd": 57752.86157, "on_line": -0.47, "null_mean": 0.24, "null_std": 0.6, "null_n": 200, "as_high": 177, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_74639_HIP116666_0010.gpuspec.0002.h5", "target": "HIP116666", "cadence": "HIP117712", "on": false, "mjd": 57752.86557, "on_line": 1.15, "null_mean": 0.25, "null_std": 0.63, "null_n": 200, "as_high": 19, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_74983_HIP117712_0011.gpuspec.0002.h5", "target": "HIP117712", "cadence": "HIP117712", "on": true, "mjd": 57752.86955, "on_line": 0.46, "null_mean": 0.27, "null_std": 0.66, "null_n": 200, "as_high": 71, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_75328_HIP117172_0012.gpuspec.0002.h5", "target": "HIP117172", "cadence": "HIP117712", "on": false, "mjd": 57752.87354, "on_line": 0.99, "null_mean": 0.22, "null_std": 0.71, "null_n": 200, "as_high": 29, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_75673_HIP117712_0013.gpuspec.0002.h5", "target": "HIP117712", "cadence": "HIP117712", "on": true, "mjd": 57752.87754, "on_line": 1.03, "null_mean": 0.26, "null_std": 0.6, "null_n": 200, "as_high": 18, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_76017_HIP117376_0014.gpuspec.0002.h5", "target": "HIP117376", "cadence": "HIP117712", "on": false, "mjd": 57752.88152, "on_line": 0.48, "null_mean": 0.26, "null_std": 0.65, "null_n": 200, "as_high": 80, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_76405_HIP117795_0015.gpuspec.0002.h5", "target": "HIP117795", "cadence": "HIP117795", "on": true, "mjd": 57752.88601, "on_line": -0.54, "null_mean": 0.27, "null_std": 0.67, "null_n": 200, "as_high": 179, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_76764_HIP116707_0016.gpuspec.0002.h5", "target": "HIP116707", "cadence": "HIP117795", "on": false, "mjd": 57752.89016, "on_line": -0.82, "null_mean": 0.24, "null_std": 0.64, "null_n": 200, "as_high": 190, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_77122_HIP117795_0017.gpuspec.0002.h5", "target": "HIP117795", "cadence": "HIP117795", "on": true, "mjd": 57752.89431, "on_line": -0.04, "null_mean": 0.25, "null_std": 0.65, "null_n": 200, "as_high": 137, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_77474_HIP116944_0018.gpuspec.0002.h5", "target": "HIP116944", "cadence": "HIP117795", "on": false, "mjd": 57752.89838, "on_line": 0.62, "null_mean": 0.24, "null_std": 0.65, "null_n": 200, "as_high": 56, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_77825_HIP117795_0019.gpuspec.0002.h5", "target": "HIP117795", "cadence": "HIP117795", "on": true, "mjd": 57752.90244, "on_line": 0.54, "null_mean": 0.27, "null_std": 0.62, "null_n": 200, "as_high": 69, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_78176_HIP117217_0020.gpuspec.0002.h5", "target": "HIP117217", "cadence": "HIP117795", "on": false, "mjd": 57752.9065, "on_line": 0.17, "null_mean": 0.19, "null_std": 0.64, "null_n": 200, "as_high": 99, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_78580_HIP118212_0021.gpuspec.0002.h5", "target": "HIP118212", "cadence": "HIP118212", "on": true, "mjd": 57752.91118, "on_line": 1.98, "null_mean": 0.21, "null_std": 0.67, "null_n": 200, "as_high": 2, "tracks": [[10.1, -536.8, 0.542]]} +{"file": "spliced_blc0001020304050607_guppi_57752_78958_HIP117207_0022.gpuspec.0002.h5", "target": "HIP117207", "cadence": "HIP118212", "on": false, "mjd": 57752.91556, "on_line": 2.42, "null_mean": 0.18, "null_std": 0.63, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_79336_HIP118212_0023.gpuspec.0002.h5", "target": "HIP118212", "cadence": "HIP118212", "on": true, "mjd": 57752.91993, "on_line": 10.65, "null_mean": 0.27, "null_std": 0.59, "null_n": 200, "as_high": 0, "tracks": [[33.9, -179.2, 0.416]]} +{"file": "spliced_blc0001020304050607_guppi_57752_79709_HIP117286_0024.gpuspec.0002.h5", "target": "HIP117286", "cadence": "HIP118212", "on": false, "mjd": 57752.92425, "on_line": 2.19, "null_mean": 0.21, "null_std": 0.66, "null_n": 200, "as_high": 1, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_80082_HIP118212_0025.gpuspec.0002.h5", "target": "HIP118212", "cadence": "HIP118212", "on": true, "mjd": 57752.92857, "on_line": 8.77, "null_mean": 0.22, "null_std": 0.62, "null_n": 200, "as_high": 0, "tracks": [[24.0, 128.2, 0.436]]} +{"file": "spliced_blc0001020304050607_guppi_57752_80454_HIP117334_0026.gpuspec.0002.h5", "target": "HIP117334", "cadence": "HIP118212", "on": false, "mjd": 57752.93287, "on_line": 2.75, "null_mean": 0.26, "null_std": 0.64, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_80887_HIP98906_0027.gpuspec.0002.h5", "target": "HIP98906", "cadence": "HIP98906", "on": true, "mjd": 57752.93788, "on_line": 1.2, "null_mean": 0.2, "null_std": 0.66, "null_n": 200, "as_high": 14, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_81232_HIP100055_0028.gpuspec.0002.h5", "target": "HIP100055", "cadence": "HIP98906", "on": false, "mjd": 57752.94188, "on_line": 0.0, "null_mean": 0.28, "null_std": 0.62, "null_n": 200, "as_high": 129, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_81577_HIP98906_0029.gpuspec.0002.h5", "target": "HIP98906", "cadence": "HIP98906", "on": true, "mjd": 57752.94587, "on_line": 0.17, "null_mean": 0.25, "null_std": 0.68, "null_n": 200, "as_high": 114, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_81929_HIP97653_0030.gpuspec.0002.h5", "target": "HIP97653", "cadence": "HIP98906", "on": false, "mjd": 57752.94994, "on_line": 0.59, "null_mean": 0.22, "null_std": 0.65, "null_n": 200, "as_high": 52, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_82281_HIP98906_0031.gpuspec.0002.h5", "target": "HIP98906", "cadence": "HIP98906", "on": true, "mjd": 57752.95402, "on_line": -0.81, "null_mean": 0.33, "null_std": 0.6, "null_n": 200, "as_high": 192, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_82632_HIP97870_0032.gpuspec.0002.h5", "target": "HIP97870", "cadence": "HIP98906", "on": false, "mjd": 57752.95808, "on_line": 0.15, "null_mean": 0.29, "null_std": 0.61, "null_n": 200, "as_high": 114, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_83026_HIP99427_0033.gpuspec.0002.h5", "target": "HIP99427", "cadence": "HIP99427", "on": true, "mjd": 57752.96264, "on_line": -0.02, "null_mean": 0.24, "null_std": 0.61, "null_n": 200, "as_high": 123, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_83371_HIP100670_0034.gpuspec.0002.h5", "target": "HIP100670", "cadence": "HIP99427", "on": false, "mjd": 57752.96663, "on_line": -0.3, "null_mean": 0.29, "null_std": 0.61, "null_n": 200, "as_high": 165, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_83716_HIP99427_0035.gpuspec.0002.h5", "target": "HIP99427", "cadence": "HIP99427", "on": true, "mjd": 57752.97063, "on_line": 1.22, "null_mean": 0.25, "null_std": 0.6, "null_n": 200, "as_high": 12, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_84066_HIP99560_0036.gpuspec.0002.h5", "target": "HIP99560", "cadence": "HIP99427", "on": false, "mjd": 57752.97468, "on_line": -1.29, "null_mean": 0.27, "null_std": 0.66, "null_n": 200, "as_high": 197, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_84416_HIP99427_0037.gpuspec.0002.h5", "target": "HIP99427", "cadence": "HIP99427", "on": true, "mjd": 57752.97873, "on_line": -0.29, "null_mean": 0.22, "null_std": 0.64, "null_n": 200, "as_high": 157, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_84766_HIP99759_0038.gpuspec.0002.h5", "target": "HIP99759", "cadence": "HIP99427", "on": false, "mjd": 57752.98278, "on_line": -0.1, "null_mean": 0.22, "null_std": 0.63, "null_n": 200, "as_high": 139, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_85465_HIP9153_0039.gpuspec.0002.h5", "target": "HIP9153", "cadence": "HIP9153", "on": true, "mjd": 57752.99087, "on_line": -0.18, "null_mean": 0.22, "null_std": 0.65, "null_n": 200, "as_high": 154, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_85832_HIP10053_0040.gpuspec.0002.h5", "target": "HIP10053", "cadence": "HIP9153", "on": false, "mjd": 57752.99512, "on_line": 1.02, "null_mean": 0.3, "null_std": 0.6, "null_n": 200, "as_high": 23, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57752_86200_HIP9153_0041.gpuspec.0002.h5", "target": "HIP9153", "cadence": "HIP9153", "on": true, "mjd": 57752.99938, "on_line": 0.93, "null_mean": 0.26, "null_std": 0.66, "null_n": 200, "as_high": 31, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_00171_HIP10098_0042.gpuspec.0002.h5", "target": "HIP10098", "cadence": "HIP9153", "on": false, "mjd": 57753.00367, "on_line": 0.19, "null_mean": 0.23, "null_std": 0.67, "null_n": 200, "as_high": 111, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_00542_HIP9153_0043.gpuspec.0002.h5", "target": "HIP9153", "cadence": "HIP9153", "on": true, "mjd": 57753.00796, "on_line": 0.7, "null_mean": 0.31, "null_std": 0.63, "null_n": 200, "as_high": 51, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_00915_HIP10221_0044.gpuspec.0002.h5", "target": "HIP10221", "cadence": "HIP9153", "on": false, "mjd": 57753.01228, "on_line": 0.97, "null_mean": 0.22, "null_std": 0.7, "null_n": 200, "as_high": 29, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_01276_HIP9269_0045.gpuspec.0002.h5", "target": "HIP9269", "cadence": "HIP9269", "on": true, "mjd": 57753.01646, "on_line": 0.64, "null_mean": 0.24, "null_std": 0.64, "null_n": 200, "as_high": 58, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_01679_HIP10022_0046.gpuspec.0002.h5", "target": "HIP10022", "cadence": "HIP9269", "on": false, "mjd": 57753.02112, "on_line": -0.09, "null_mean": 0.26, "null_std": 0.61, "null_n": 200, "as_high": 137, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_02092_HIP9269_0047.gpuspec.0002.h5", "target": "HIP9269", "cadence": "HIP9269", "on": true, "mjd": 57753.0259, "on_line": 0.81, "null_mean": 0.31, "null_std": 0.61, "null_n": 200, "as_high": 39, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_02493_HIP10064_0048.gpuspec.0002.h5", "target": "HIP10064", "cadence": "HIP9269", "on": false, "mjd": 57753.03054, "on_line": 0.3, "null_mean": 0.19, "null_std": 0.66, "null_n": 200, "as_high": 81, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_02889_HIP9269_0049.gpuspec.0002.h5", "target": "HIP9269", "cadence": "HIP9269", "on": true, "mjd": 57753.03513, "on_line": -0.33, "null_mean": 0.17, "null_std": 0.63, "null_n": 200, "as_high": 152, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_03300_HIP8194_0050.gpuspec.0002.h5", "target": "HIP8194", "cadence": "HIP9269", "on": false, "mjd": 57753.03988, "on_line": 0.42, "null_mean": 0.15, "null_std": 0.67, "null_n": 200, "as_high": 71, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_03792_HIP9716_0051.gpuspec.0002.h5", "target": "HIP9716", "cadence": "HIP9716", "on": true, "mjd": 57753.04558, "on_line": 0.45, "null_mean": 0.23, "null_std": 0.69, "null_n": 200, "as_high": 79, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_04131_HIP10072_0052.gpuspec.0002.h5", "target": "HIP10072", "cadence": "HIP9716", "on": false, "mjd": 57753.0495, "on_line": -0.17, "null_mean": 0.26, "null_std": 0.58, "null_n": 200, "as_high": 164, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_04470_HIP9716_0053.gpuspec.0002.h5", "target": "HIP9716", "cadence": "HIP9716", "on": true, "mjd": 57753.05343, "on_line": 1.03, "null_mean": 0.28, "null_std": 0.63, "null_n": 200, "as_high": 22, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_04816_HIP10444_0054.gpuspec.0002.h5", "target": "HIP10444", "cadence": "HIP9716", "on": false, "mjd": 57753.05743, "on_line": -0.17, "null_mean": 0.23, "null_std": 0.72, "null_n": 200, "as_high": 135, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_05162_HIP9716_0055.gpuspec.0002.h5", "target": "HIP9716", "cadence": "HIP9716", "on": true, "mjd": 57753.06144, "on_line": -0.04, "null_mean": 0.33, "null_std": 0.65, "null_n": 200, "as_high": 145, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_05509_HIP10646_0056.gpuspec.0002.h5", "target": "HIP10646", "cadence": "HIP9716", "on": false, "mjd": 57753.06545, "on_line": 0.17, "null_mean": 0.27, "null_std": 0.59, "null_n": 200, "as_high": 120, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57753_05858_HIP9724_0057.gpuspec.0002.h5", "target": "HIP9724", "cadence": null, "on": null, "mjd": 57753.06949, "on_line": -0.34, "null_mean": 0.23, "null_std": 0.61, "null_n": 200, "as_high": 156, "tracks": []} diff --git a/papers/ml_signals/data/MLc3.jsonl b/papers/ml_signals/data/MLc3.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a82ab16ab4d2d10928294bae2b869d8b1833621e --- /dev/null +++ b/papers/ml_signals/data/MLc3.jsonl @@ -0,0 +1,57 @@ +{"t0": 57543.110496409645, "hz": -1723.0606027526471, "drift": 0.05583632165910627, "on_snr": [55.2, 66.6, 31.9], "tag": "MLc3", "star": "HIP62207", "session": "AGBT16A_999_213", "f0": 1351.62541} +{"file": "spliced_blc0001020304050607_guppi_57542_83841_DIAG_PSR_J0820-1350_0002.gpuspec.0002.h5", "target": "DIAG_PSR_J0820-1350", "cadence": null, "on": null, "mjd": 57542.97205, "on_line": -0.32, "null_mean": 0.18, "null_std": 0.89, "null_n": 200, "as_high": 171, "tracks": [[30.2, -2166.0, 0.016]]} +{"file": "spliced_blc0001020304050607_guppi_57542_84369_GJ411_0003.gpuspec.0002.h5", "target": "GJ411", "cadence": "GJ411", "on": true, "mjd": 57542.97816, "on_line": 0.15, "null_mean": 0.07, "null_std": 0.45, "null_n": 200, "as_high": 90, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_84744_HIP52936_0004.gpuspec.0002.h5", "target": "HIP52936", "cadence": "GJ411", "on": false, "mjd": 57542.9825, "on_line": 0.24, "null_mean": 0.13, "null_std": 0.44, "null_n": 200, "as_high": 80, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_85092_GJ411_0005.gpuspec.0002.h5", "target": "GJ411", "cadence": "GJ411", "on": true, "mjd": 57542.98653, "on_line": -0.03, "null_mean": 0.09, "null_std": 0.47, "null_n": 200, "as_high": 120, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_85446_HIP52941_0006.gpuspec.0002.h5", "target": "HIP52941", "cadence": "GJ411", "on": false, "mjd": 57542.99062, "on_line": 0.46, "null_mean": 0.11, "null_std": 0.45, "null_n": 200, "as_high": 43, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_85812_GJ411_0007.gpuspec.0002.h5", "target": "GJ411", "cadence": "GJ411", "on": true, "mjd": 57542.99486, "on_line": 0.22, "null_mean": 0.12, "null_std": 0.45, "null_n": 200, "as_high": 81, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_86169_HIP53002_0008.gpuspec.0002.h5", "target": "HIP53002", "cadence": "GJ411", "on": false, "mjd": 57542.99899, "on_line": 0.59, "null_mean": 0.1, "null_std": 0.43, "null_n": 200, "as_high": 25, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_00151_HIP46843_0009.gpuspec.0002.h5", "target": "HIP46843", "cadence": "HIP46843", "on": true, "mjd": 57543.00341, "on_line": 0.4, "null_mean": 0.09, "null_std": 0.42, "null_n": 200, "as_high": 54, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_00498_HIP45671_0010.gpuspec.0002.h5", "target": "HIP45671", "cadence": "HIP46843", "on": false, "mjd": 57543.00743, "on_line": -0.07, "null_mean": 0.11, "null_std": 0.46, "null_n": 200, "as_high": 133, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_00844_HIP46843_0011.gpuspec.0002.h5", "target": "HIP46843", "cadence": "HIP46843", "on": true, "mjd": 57543.01143, "on_line": -0.17, "null_mean": 0.13, "null_std": 0.46, "null_n": 200, "as_high": 152, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_01187_HIP45844_0012.gpuspec.0002.h5", "target": "HIP45844", "cadence": "HIP46843", "on": false, "mjd": 57543.0154, "on_line": -0.35, "null_mean": 0.11, "null_std": 0.41, "null_n": 200, "as_high": 170, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_01530_HIP46843_0013.gpuspec.0002.h5", "target": "HIP46843", "cadence": "HIP46843", "on": true, "mjd": 57543.01937, "on_line": 0.1, "null_mean": 0.07, "null_std": 0.41, "null_n": 200, "as_high": 91, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_01870_HIP45954_0014.gpuspec.0002.h5", "target": "HIP45954", "cadence": "HIP46843", "on": false, "mjd": 57543.02331, "on_line": 0.68, "null_mean": 0.15, "null_std": 0.43, "null_n": 200, "as_high": 21, "tracks": [[8.6, -2072.4, 0.032]]} +{"file": "spliced_blc0001020304050607_guppi_57543_02240_HIP47080_0015.gpuspec.0002.h5", "target": "HIP47080", "cadence": "HIP47080", "on": true, "mjd": 57543.02759, "on_line": -0.09, "null_mean": 0.13, "null_std": 0.59, "null_n": 200, "as_high": 134, "tracks": [[27.2, -2061.0, 0.024]]} +{"file": "spliced_blc0001020304050607_guppi_57543_02588_HIP46135_0016.gpuspec.0002.h5", "target": "HIP46135", "cadence": "HIP47080", "on": false, "mjd": 57543.03162, "on_line": -0.7, "null_mean": 0.15, "null_std": 0.45, "null_n": 200, "as_high": 195, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_02935_HIP47080_0017.gpuspec.0002.h5", "target": "HIP47080", "cadence": "HIP47080", "on": true, "mjd": 57543.03564, "on_line": 0.25, "null_mean": 0.12, "null_std": 0.38, "null_n": 200, "as_high": 71, "tracks": [[35.8, -2038.4, 0.032]]} +{"file": "spliced_blc0001020304050607_guppi_57543_03276_HIP46174_0018.gpuspec.0002.h5", "target": "HIP46174", "cadence": "HIP47080", "on": false, "mjd": 57543.03958, "on_line": -0.65, "null_mean": 0.09, "null_std": 0.43, "null_n": 200, "as_high": 192, "tracks": [[30.2, -2027.0, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_03617_HIP47080_0019.gpuspec.0002.h5", "target": "HIP47080", "cadence": "HIP47080", "on": true, "mjd": 57543.04353, "on_line": -0.11, "null_mean": 0.14, "null_std": 0.42, "null_n": 200, "as_high": 146, "tracks": [[11.4, -2012.8, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_03970_HIP46269_0020.gpuspec.0002.h5", "target": "HIP46269", "cadence": "HIP47080", "on": false, "mjd": 57543.04761, "on_line": -0.26, "null_mean": 0.1, "null_std": 0.38, "null_n": 200, "as_high": 163, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_04323_HIP47201_0021.gpuspec.0002.h5", "target": "HIP47201", "cadence": "HIP47201", "on": true, "mjd": 57543.0517, "on_line": 1.06, "null_mean": 0.09, "null_std": 0.42, "null_n": 200, "as_high": 1, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_04666_HIP46100_0022.gpuspec.0002.h5", "target": "HIP46100", "cadence": "HIP47201", "on": false, "mjd": 57543.05567, "on_line": 0.12, "null_mean": 0.06, "null_std": 0.4, "null_n": 200, "as_high": 82, "tracks": [[9.4, -1970.3, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_05009_HIP47201_0023.gpuspec.0002.h5", "target": "HIP47201", "cadence": "HIP47201", "on": true, "mjd": 57543.05964, "on_line": -0.32, "null_mean": 0.09, "null_std": 0.43, "null_n": 200, "as_high": 163, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_05349_HIP46272_0024.gpuspec.0002.h5", "target": "HIP46272", "cadence": "HIP47201", "on": false, "mjd": 57543.06358, "on_line": -0.29, "null_mean": 0.08, "null_std": 0.42, "null_n": 200, "as_high": 157, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_05689_HIP47201_0025.gpuspec.0002.h5", "target": "HIP47201", "cadence": "HIP47201", "on": true, "mjd": 57543.06751, "on_line": -0.07, "null_mean": 0.09, "null_std": 0.44, "null_n": 200, "as_high": 130, "tracks": [[11.3, -1922.1, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_06028_HIP46304_0026.gpuspec.0002.h5", "target": "HIP46304", "cadence": "HIP47201", "on": false, "mjd": 57543.07143, "on_line": 2.84, "null_mean": 0.14, "null_std": 0.41, "null_n": 200, "as_high": 0, "tracks": [[12.9, -1907.9, 0.054]]} +{"file": "spliced_blc0001020304050607_guppi_57543_06379_HIP47513_0027.gpuspec.0002.h5", "target": "HIP47513", "cadence": "HIP47513", "on": true, "mjd": 57543.0755, "on_line": 6.04, "null_mean": 0.19, "null_std": 0.47, "null_n": 200, "as_high": 0, "tracks": [[34.6, -1888.1, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_06729_HIP46367_0028.gpuspec.0002.h5", "target": "HIP46367", "cadence": "HIP47513", "on": false, "mjd": 57543.07955, "on_line": 17.4, "null_mean": 0.1, "null_std": 0.47, "null_n": 200, "as_high": 0, "tracks": [[38.1, -1871.1, 0.044], [9.1, -1933.4, -0.45], [8.9, -1800.2, 0.596]]} +{"file": "spliced_blc0001020304050607_guppi_57543_07078_HIP47513_0029.gpuspec.0002.h5", "target": "HIP47513", "cadence": "HIP47513", "on": true, "mjd": 57543.08359, "on_line": 19.26, "null_mean": 0.15, "null_std": 0.41, "null_n": 200, "as_high": 0, "tracks": [[48.1, -1851.2, 0.054]]} +{"file": "spliced_blc0001020304050607_guppi_57543_07425_HIP46447_0030.gpuspec.0002.h5", "target": "HIP46447", "cadence": "HIP47513", "on": false, "mjd": 57543.0876, "on_line": 22.28, "null_mean": 0.16, "null_std": 0.4, "null_n": 200, "as_high": 0, "tracks": [[64.4, -1834.2, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_07772_HIP47513_0031.gpuspec.0002.h5", "target": "HIP47513", "cadence": "HIP47513", "on": true, "mjd": 57543.09162, "on_line": 23.19, "null_mean": 0.09, "null_std": 0.42, "null_n": 200, "as_high": 0, "tracks": [[60.7, -1814.4, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_08116_HIP46454_0032.gpuspec.0002.h5", "target": "HIP46454", "cadence": "HIP47513", "on": false, "mjd": 57543.0956, "on_line": 61.44, "null_mean": 0.14, "null_std": 0.46, "null_n": 200, "as_high": 0, "tracks": [[176.7, -1794.5, 0.054], [17.6, -1732.1, -0.426], [16.6, -1856.9, 0.754], [13.8, -1916.4, 1.034], [13.3, -1672.6, -0.892], [11.0, -1978.8, 1.542], [10.6, -1596.0, -1.502], [8.8, -1536.5, -1.986]]} +{"file": "spliced_blc0001020304050607_guppi_57543_08647_HIP62207_0033.gpuspec.0002.h5", "target": "HIP62207", "cadence": "HIP62207", "on": true, "mjd": 57543.10175, "on_line": 27.9, "null_mean": 0.14, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": [[61.1, -1766.1, 0.038], [9.4, -1678.2, 1.24], [8.7, -1825.7, -1.058]]} +{"file": "spliced_blc0001020304050607_guppi_57543_09023_HIP61072_0034.gpuspec.0002.h5", "target": "HIP61072", "cadence": "HIP62207", "on": false, "mjd": 57543.1061, "on_line": 3.78, "null_mean": 0.03, "null_std": 0.38, "null_n": 200, "as_high": 0, "tracks": [[9.8, -1743.5, 0.054]]} +{"file": "spliced_blc0001020304050607_guppi_57543_09397_HIP62207_0035.gpuspec.0002.h5", "target": "HIP62207", "cadence": "HIP62207", "on": true, "mjd": 57543.11043, "on_line": 25.36, "null_mean": 0.1, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": [[72.1, -1723.6, 0.068], [10.9, -1661.2, 0.754], [10.0, -1797.3, -0.758], [8.3, -1593.2, 1.504]]} +{"file": "spliced_blc0001020304050607_guppi_57543_09782_HIP61074_0036.gpuspec.0002.h5", "target": "HIP61074", "cadence": "HIP62207", "on": false, "mjd": 57543.11488, "on_line": 1.57, "null_mean": 0.08, "null_std": 0.41, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_10165_HIP62207_0037.gpuspec.0002.h5", "target": "HIP62207", "cadence": "HIP62207", "on": true, "mjd": 57543.11932, "on_line": 12.17, "null_mean": 0.07, "null_std": 0.42, "null_n": 200, "as_high": 0, "tracks": [[35.4, -1678.2, 0.054]]} +{"file": "spliced_blc0001020304050607_guppi_57543_10527_HIP61114_0038.gpuspec.0002.h5", "target": "HIP61114", "cadence": "HIP62207", "on": false, "mjd": 57543.12351, "on_line": 2.94, "null_mean": 0.09, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_10898_HIP66459_0039.gpuspec.0002.h5", "target": "HIP66459", "cadence": "HIP66459", "on": true, "mjd": 57543.1278, "on_line": 0.78, "null_mean": 0.1, "null_std": 0.42, "null_n": 200, "as_high": 11, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_11264_HIP65343_0040.gpuspec.0002.h5", "target": "HIP65343", "cadence": "HIP66459", "on": false, "mjd": 57543.13204, "on_line": 2.38, "null_mean": 0.17, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_11629_HIP66459_0041.gpuspec.0002.h5", "target": "HIP66459", "cadence": "HIP66459", "on": true, "mjd": 57543.13626, "on_line": 3.03, "null_mean": 0.13, "null_std": 0.38, "null_n": 200, "as_high": 0, "tracks": [[9.1, -1596.0, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_12010_HIP65430_0042.gpuspec.0002.h5", "target": "HIP65430", "cadence": "HIP66459", "on": false, "mjd": 57543.14067, "on_line": 1.54, "null_mean": 0.12, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_12389_HIP66459_0043.gpuspec.0002.h5", "target": "HIP66459", "cadence": "HIP66459", "on": true, "mjd": 57543.14506, "on_line": 4.07, "null_mean": 0.07, "null_std": 0.43, "null_n": 200, "as_high": 0, "tracks": [[11.4, -1553.5, 0.044]]} +{"file": "spliced_blc0001020304050607_guppi_57543_12765_HIP65451_0044.gpuspec.0002.h5", "target": "HIP65451", "cadence": "HIP66459", "on": false, "mjd": 57543.14941, "on_line": 2.51, "null_mean": 0.12, "null_std": 0.43, "null_n": 200, "as_high": 0, "tracks": [[8.3, -1530.8, 0.062]]} +{"file": "spliced_blc0001020304050607_guppi_57543_13131_HIP68337_0045.gpuspec.0002.h5", "target": "HIP68337", "cadence": "HIP68337", "on": true, "mjd": 57543.15364, "on_line": 2.1, "null_mean": 0.07, "null_std": 0.4, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_13494_HIP67120_0046.gpuspec.0002.h5", "target": "HIP67120", "cadence": "HIP68337", "on": false, "mjd": 57543.15785, "on_line": -0.13, "null_mean": 0.1, "null_std": 0.45, "null_n": 200, "as_high": 138, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_13856_HIP68337_0047.gpuspec.0002.h5", "target": "HIP68337", "cadence": "HIP68337", "on": true, "mjd": 57543.16204, "on_line": 0.24, "null_mean": 0.13, "null_std": 0.48, "null_n": 200, "as_high": 81, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_14204_HIP67142_0048.gpuspec.0002.h5", "target": "HIP67142", "cadence": "HIP68337", "on": false, "mjd": 57543.16606, "on_line": 0.7, "null_mean": 0.08, "null_std": 0.4, "null_n": 200, "as_high": 9, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_14552_HIP68337_0049.gpuspec.0002.h5", "target": "HIP68337", "cadence": "HIP68337", "on": true, "mjd": 57543.17009, "on_line": -0.75, "null_mean": 0.11, "null_std": 0.41, "null_n": 200, "as_high": 196, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_14904_HIP67155_0050.gpuspec.0002.h5", "target": "HIP67155", "cadence": "HIP68337", "on": false, "mjd": 57543.17417, "on_line": 1.21, "null_mean": 0.1, "null_std": 0.45, "null_n": 200, "as_high": 2, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_15275_HIP68469_0051.gpuspec.0002.h5", "target": "HIP68469", "cadence": "HIP68469", "on": true, "mjd": 57543.17846, "on_line": 0.32, "null_mean": 0.17, "null_std": 0.47, "null_n": 200, "as_high": 72, "tracks": [[21.3, -1383.4, 0.068]]} +{"file": "spliced_blc0001020304050607_guppi_57543_15628_HIP67315_0052.gpuspec.0002.h5", "target": "HIP67315", "cadence": "HIP68469", "on": false, "mjd": 57543.18255, "on_line": -0.2, "null_mean": 0.11, "null_std": 0.38, "null_n": 200, "as_high": 160, "tracks": [[25.4, -1360.7, 0.072]]} +{"file": "spliced_blc0001020304050607_guppi_57543_15981_HIP68469_0053.gpuspec.0002.h5", "target": "HIP68469", "cadence": "HIP68469", "on": true, "mjd": 57543.18663, "on_line": 0.87, "null_mean": 0.11, "null_std": 0.43, "null_n": 200, "as_high": 7, "tracks": [[25.2, -1338.0, 0.054]]} +{"file": "spliced_blc0001020304050607_guppi_57543_16336_HIP67344_0054.gpuspec.0002.h5", "target": "HIP67344", "cadence": "HIP68469", "on": false, "mjd": 57543.19074, "on_line": 0.53, "null_mean": 0.1, "null_std": 0.43, "null_n": 200, "as_high": 33, "tracks": [[13.0, -1318.1, 0.062]]} +{"file": "spliced_blc0001020304050607_guppi_57543_16691_HIP68469_0055.gpuspec.0002.h5", "target": "HIP68469", "cadence": "HIP68469", "on": true, "mjd": 57543.19485, "on_line": -0.24, "null_mean": 0.09, "null_std": 0.45, "null_n": 200, "as_high": 161, "tracks": [[86.6, -1295.5, 0.054], [8.1, -1224.6, -0.594]]} +{"file": "spliced_blc0001020304050607_guppi_57543_17047_HIP67369_0056.gpuspec.0002.h5", "target": "HIP67369", "cadence": "HIP68469", "on": false, "mjd": 57543.19897, "on_line": 0.79, "null_mean": 0.16, "null_std": 0.46, "null_n": 200, "as_high": 22, "tracks": [[41.6, -1275.6, 0.054]]} +{"file": "spliced_blc0001020304050607_guppi_57543_17448_HIP68634_0057.gpuspec.0002.h5", "target": "HIP68634", "cadence": null, "on": null, "mjd": 57543.20361, "on_line": -0.11, "null_mean": 0.05, "null_std": 0.44, "null_n": 200, "as_high": 131, "tracks": []} diff --git a/papers/ml_signals/data/MLc4.jsonl b/papers/ml_signals/data/MLc4.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..01a62b91c22cf495277a6717fd34e3ad9cb9b241 --- /dev/null +++ b/papers/ml_signals/data/MLc4.jsonl @@ -0,0 +1,29 @@ +{"t0": 57517.11259632844, "hz": -3025.029183715405, "drift": 0.1239311972455108, "on_snr": [40.8, 22.4, 18.9], "tag": "MLc4", "star": "HIP54677", "session": "AGBT16A_999_182", "f0": 1372.987594} +{"file": "spliced_blc0001020304050607_guppi_57517_06261_DIAG_PSR_J1136%2B1551_0002.gpuspec.0002.h5", "target": "DIAG_PSR_J1136%2B1551", "cadence": null, "on": null, "mjd": 57517.07413, "on_line": 0.85, "null_mean": 0.17, "null_std": 0.46, "null_n": 200, "as_high": 15, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_06643_HIP53985_0003.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP53985", "on": true, "mjd": 57517.07855, "on_line": 0.27, "null_mean": 0.07, "null_std": 0.47, "null_n": 200, "as_high": 66, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_06999_HIP53034_0004.gpuspec.0002.h5", "target": "HIP53034", "cadence": "HIP53985", "on": false, "mjd": 57517.08267, "on_line": 0.03, "null_mean": 0.14, "null_std": 0.44, "null_n": 200, "as_high": 126, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_07355_HIP53985_0005.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP53985", "on": true, "mjd": 57517.08679, "on_line": 0.61, "null_mean": 0.15, "null_std": 0.44, "null_n": 200, "as_high": 32, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_07692_HIP53070_0006.gpuspec.0002.h5", "target": "HIP53070", "cadence": "HIP53985", "on": false, "mjd": 57517.09069, "on_line": 1.04, "null_mean": 0.14, "null_std": 0.45, "null_n": 200, "as_high": 6, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_08028_HIP53985_0007.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP53985", "on": true, "mjd": 57517.09458, "on_line": 1.37, "null_mean": 0.11, "null_std": 0.46, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_08361_HIP53287_0008.gpuspec.0002.h5", "target": "HIP53287", "cadence": "HIP53985", "on": false, "mjd": 57517.09844, "on_line": 2.34, "null_mean": 0.05, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_08789_HIP54677_0009.gpuspec.0002.h5", "target": "HIP54677", "cadence": "HIP54677", "on": true, "mjd": 57517.10339, "on_line": 28.37, "null_mean": 0.07, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": [[44.8, -3124.6, 0.116], [8.6, -3240.9, 1.032], [8.1, -3053.8, -0.43]]} +{"file": "spliced_blc0001020304050607_guppi_57517_09209_HIP53759_0010.gpuspec.0002.h5", "target": "HIP53759", "cadence": "HIP54677", "on": false, "mjd": 57517.10825, "on_line": 2.5, "null_mean": 0.1, "null_std": 0.39, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_09628_HIP54677_0011.gpuspec.0002.h5", "target": "HIP54677", "cadence": "HIP54677", "on": true, "mjd": 57517.1131, "on_line": 15.21, "null_mean": 0.13, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": [[25.2, -3019.7, 0.116], [10.9, 24416.6, -0.236]]} +{"file": "spliced_blc0001020304050607_guppi_57517_10032_HIP53820_0012.gpuspec.0002.h5", "target": "HIP53820", "cadence": "HIP54677", "on": false, "mjd": 57517.11778, "on_line": 1.64, "null_mean": 0.15, "null_std": 0.49, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_10436_HIP54677_0013.gpuspec.0002.h5", "target": "HIP54677", "cadence": "HIP54677", "on": true, "mjd": 57517.12245, "on_line": 13.3, "null_mean": 0.07, "null_std": 0.42, "null_n": 200, "as_high": 0, "tracks": [[21.8, -2920.5, 0.124]]} +{"file": "spliced_blc0001020304050607_guppi_57517_10836_HIP53839_0014.gpuspec.0002.h5", "target": "HIP53839", "cadence": "HIP54677", "on": false, "mjd": 57517.12708, "on_line": -0.05, "null_mean": 0.1, "null_std": 0.43, "null_n": 200, "as_high": 126, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_11190_HIP54872_0015.gpuspec.0002.h5", "target": "HIP54872", "cadence": "HIP54872", "on": true, "mjd": 57517.13118, "on_line": 1.8, "null_mean": 0.18, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_11534_HIP53985_0016.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP54872", "on": false, "mjd": 57517.13516, "on_line": 0.85, "null_mean": 0.05, "null_std": 0.43, "null_n": 200, "as_high": 5, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_11878_HIP54872_0017.gpuspec.0002.h5", "target": "HIP54872", "cadence": "HIP54872", "on": true, "mjd": 57517.13914, "on_line": 0.8, "null_mean": 0.79, "null_std": 0.43, "null_n": 200, "as_high": 99, "tracks": [[16.5, 4488.7, 1.988], [15.6, 4264.7, -2.0], [13.8, 4429.1, 1.342], [13.7, 4335.6, -1.522], [10.8, 4576.6, 1.84], [8.9, 12870.4, -1.906], [8.7, 17288.1, -1.67], [8.7, 13653.0, 1.814], [8.5, 15221.1, 1.85], [8.3, -8738.9, 1.686], [8.3, -20718.9, -1.992], [8.3, 3847.9, -1.992], [8.3, 18396.8, 1.448], [8.3, 17427.1, -1.83], [8.2, 18053.7, -1.992], [8.2, -6462.0, 1.878], [8.1, -20279.4, 1.274], [8.1, 18314.6, 1.706], [8.1, 6496.2, -1.396]]} +{"file": "spliced_blc0001020304050607_guppi_57517_12225_HIP54077_0018.gpuspec.0002.h5", "target": "HIP54077", "cadence": "HIP54872", "on": false, "mjd": 57517.14316, "on_line": 0.49, "null_mean": 0.09, "null_std": 0.41, "null_n": 200, "as_high": 25, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_12572_HIP54872_0019.gpuspec.0002.h5", "target": "HIP54872", "cadence": "HIP54872", "on": true, "mjd": 57517.14717, "on_line": 0.92, "null_mean": 0.13, "null_std": 0.43, "null_n": 200, "as_high": 7, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_12915_HIP54244_0020.gpuspec.0002.h5", "target": "HIP54244", "cadence": "HIP54872", "on": false, "mjd": 57517.15114, "on_line": 0.2, "null_mean": 0.13, "null_std": 0.47, "null_n": 200, "as_high": 71, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_13252_HIP54906_0021.gpuspec.0002.h5", "target": "HIP54906", "cadence": "HIP54906", "on": true, "mjd": 57517.15505, "on_line": -0.5, "null_mean": 0.12, "null_std": 0.4, "null_n": 200, "as_high": 185, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_13589_HIP54077_0022.gpuspec.0002.h5", "target": "HIP54077", "cadence": "HIP54906", "on": false, "mjd": 57517.15895, "on_line": -0.47, "null_mean": 0.1, "null_std": 0.44, "null_n": 200, "as_high": 183, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_13926_HIP54906_0023.gpuspec.0002.h5", "target": "HIP54906", "cadence": "HIP54906", "on": true, "mjd": 57517.16285, "on_line": -0.36, "null_mean": 0.05, "null_std": 0.43, "null_n": 200, "as_high": 171, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_14269_HIP54217_0024.gpuspec.0002.h5", "target": "HIP54217", "cadence": "HIP54906", "on": false, "mjd": 57517.16682, "on_line": -0.08, "null_mean": 0.13, "null_std": 0.44, "null_n": 200, "as_high": 141, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_14612_HIP54906_0025.gpuspec.0002.h5", "target": "HIP54906", "cadence": "HIP54906", "on": true, "mjd": 57517.17079, "on_line": 0.16, "null_mean": 0.13, "null_std": 0.44, "null_n": 200, "as_high": 92, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_14946_HIP54388_0026.gpuspec.0002.h5", "target": "HIP54388", "cadence": "HIP54906", "on": false, "mjd": 57517.17465, "on_line": 0.2, "null_mean": 0.07, "null_std": 0.44, "null_n": 200, "as_high": 79, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_15327_HIP55846_0027.gpuspec.0002.h5", "target": "HIP55846", "cadence": null, "on": null, "mjd": 57517.17906, "on_line": 0.16, "null_mean": 0.46, "null_std": 0.71, "null_n": 200, "as_high": 130, "tracks": [[24.2, -2384.6, 0.086], [21.6, -4222.0, -1.978], [20.6, -4740.9, 1.878], [20.0, -4301.4, -1.522], [19.3, -4675.7, 1.498], [17.7, -4366.6, -1.04], [17.6, -4979.1, 1.988], [17.2, -4431.8, -1.978], [17.1, -4800.4, 1.994], [16.5, -4905.3, 1.564], [15.0, -4491.4, -1.708], [14.6, -4570.8, 0.716], [13.4, -4162.4, -2.0], [12.8, -6470.5, 1.978], [11.7, -5943.1, -1.914], [11.6, -5095.3, 1.564], [11.3, -6269.2, 1.994], [11.2, -5160.5, 1.988], [10.8, -6195.5, 1.51], [10.6, -6002.7, -1.564], [10.3, -5739.0, -1.88], [9.9, -6062.2, -1.188], [9.9, -6396.8, 1.498], [9.6, -5353.4, 1.972], [9.6, -5843.9, -1.186], [9.1, -2316.5, -0.426], [8.7, -5293.8, 1.504], [8.6, -6136.0, -0.612], [8.5, -2515.0, 1.02], [8.5, -6331.6, 1.034], [8.4, -2447.0, 0.596], [8.1, -4080.2, -1.274], [8.0, -5220.1, 1.0], [8.0, -6530.1, 1.98]]} +{"file": "spliced_blc0001020304050607_guppi_57517_15666_HIP54998_0028.gpuspec.0002.h5", "target": "HIP54998", "cadence": null, "on": null, "mjd": 57517.18298, "on_line": -0.31, "null_mean": 0.12, "null_std": 0.42, "null_n": 200, "as_high": 169, "tracks": [[94.9, -2350.6, 0.096], [16.5, -2291.0, -0.556], [15.4, -2421.4, 0.732], [11.7, -2188.9, -1.704], [11.2, -2509.3, 1.564], [8.8, -2617.1, 1.98]]} +{"file": "spliced_blc0001020304050607_guppi_57517_16005_HIP55846_0029.gpuspec.0002.h5", "target": "HIP55846", "cadence": null, "on": null, "mjd": 57517.18597, "on_line": 0.04, "null_mean": 0.18, "null_std": 0.68, "null_n": 200, "as_high": 114, "tracks": [[63.1, -2325.0, 0.12], [17.8, -2387.4, 1.538], [12.7, -2242.8, 1.854], [9.7, -2447.0, -2.0]]} diff --git a/papers/ml_signals/data/MLc5.jsonl b/papers/ml_signals/data/MLc5.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..97667329fc0312036fa4bbbaf5cb57c1b7cf5ba1 --- /dev/null +++ b/papers/ml_signals/data/MLc5.jsonl @@ -0,0 +1,29 @@ +{"t0": 57517.112980977545, "hz": -4166.014723119368, "drift": 0.12468919530637239, "on_snr": [59.5, 35.3, 28.3], "tag": "MLc5", "star": "HIP54677", "session": "AGBT16A_999_182", "f0": 1376.988694} +{"file": "spliced_blc0001020304050607_guppi_57517_06261_DIAG_PSR_J1136%2B1551_0002.gpuspec.0002.h5", "target": "DIAG_PSR_J1136%2B1551", "cadence": null, "on": null, "mjd": 57517.07413, "on_line": 0.24, "null_mean": 0.12, "null_std": 0.43, "null_n": 200, "as_high": 80, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_06643_HIP53985_0003.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP53985", "on": true, "mjd": 57517.07855, "on_line": 0.47, "null_mean": 0.09, "null_std": 0.45, "null_n": 200, "as_high": 38, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_06999_HIP53034_0004.gpuspec.0002.h5", "target": "HIP53034", "cadence": "HIP53985", "on": false, "mjd": 57517.08267, "on_line": 0.43, "null_mean": 0.08, "null_std": 0.41, "null_n": 200, "as_high": 42, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_07355_HIP53985_0005.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP53985", "on": true, "mjd": 57517.08679, "on_line": 1.32, "null_mean": 0.09, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_07692_HIP53070_0006.gpuspec.0002.h5", "target": "HIP53070", "cadence": "HIP53985", "on": false, "mjd": 57517.09069, "on_line": 1.9, "null_mean": 0.11, "null_std": 0.45, "null_n": 200, "as_high": 1, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_08028_HIP53985_0007.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP53985", "on": true, "mjd": 57517.09458, "on_line": 2.49, "null_mean": 0.12, "null_std": 0.41, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_08361_HIP53287_0008.gpuspec.0002.h5", "target": "HIP53287", "cadence": "HIP53985", "on": false, "mjd": 57517.09844, "on_line": 1.14, "null_mean": 0.11, "null_std": 0.44, "null_n": 200, "as_high": 1, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_08789_HIP54677_0009.gpuspec.0002.h5", "target": "HIP54677", "cadence": "HIP54677", "on": true, "mjd": 57517.10339, "on_line": 38.26, "null_mean": 0.03, "null_std": 0.48, "null_n": 200, "as_high": 0, "tracks": [[63.5, -4267.9, 0.116], [12.3, -4330.3, 0.62], [9.9, -4202.7, -0.45], [9.6, -4409.7, 1.25], [9.3, -4140.3, -0.914], [8.3, -4483.4, 1.832]]} +{"file": "spliced_blc0001020304050607_guppi_57517_09209_HIP53759_0010.gpuspec.0002.h5", "target": "HIP53759", "cadence": "HIP54677", "on": false, "mjd": 57517.10825, "on_line": 1.76, "null_mean": 0.14, "null_std": 0.43, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_09628_HIP54677_0011.gpuspec.0002.h5", "target": "HIP54677", "cadence": "HIP54677", "on": true, "mjd": 57517.1131, "on_line": 26.44, "null_mean": 0.06, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": [[40.4, -4165.8, 0.11], [10.6, -4106.3, -0.746], [8.9, -4043.9, -1.332], [8.8, -4287.7, 1.832], [8.1, -4225.3, -0.424]]} +{"file": "spliced_blc0001020304050607_guppi_57517_10032_HIP53820_0012.gpuspec.0002.h5", "target": "HIP53820", "cadence": "HIP54677", "on": false, "mjd": 57517.11778, "on_line": 2.51, "null_mean": 0.14, "null_std": 0.46, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_10436_HIP54677_0013.gpuspec.0002.h5", "target": "HIP54677", "cadence": "HIP54677", "on": true, "mjd": 57517.12245, "on_line": 16.79, "null_mean": 0.11, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": [[30.3, -4063.7, 0.124]]} +{"file": "spliced_blc0001020304050607_guppi_57517_10836_HIP53839_0014.gpuspec.0002.h5", "target": "HIP53839", "cadence": "HIP54677", "on": false, "mjd": 57517.12708, "on_line": 1.46, "null_mean": 0.11, "null_std": 0.47, "null_n": 200, "as_high": 1, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_11190_HIP54872_0015.gpuspec.0002.h5", "target": "HIP54872", "cadence": "HIP54872", "on": true, "mjd": 57517.13118, "on_line": 2.89, "null_mean": 0.34, "null_std": 0.41, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_11534_HIP53985_0016.gpuspec.0002.h5", "target": "HIP53985", "cadence": "HIP54872", "on": false, "mjd": 57517.13516, "on_line": 1.21, "null_mean": 0.1, "null_std": 0.39, "null_n": 200, "as_high": 1, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_11878_HIP54872_0017.gpuspec.0002.h5", "target": "HIP54872", "cadence": "HIP54872", "on": true, "mjd": 57517.13914, "on_line": 4.25, "null_mean": 4.21, "null_std": 1.51, "null_n": 200, "as_high": 83, "tracks": [[47.7, -6167.7, 1.98], [47.0, -16919.9, -2.0], [45.7, -18161.8, -1.976], [45.1, -17994.5, 1.972], [44.4, -16741.3, 1.978], [43.0, -6227.2, -1.992], [42.8, -6031.6, -1.976], [41.9, -5702.6, -2.0], [40.5, -18221.4, -2.0], [39.6, -17935.0, 1.988], [39.0, -16800.8, 1.656], [38.9, -16979.4, -2.0], [38.6, -7361.4, -2.0], [38.0, -6105.3, 1.972], [37.0, -7301.9, 1.978], [36.2, -18054.1, 1.972], [35.8, -17875.5, 1.988], [35.4, -6519.3, 1.98], [35.1, -16860.3, -1.608], [34.9, -6870.9, -1.978], [34.8, -5844.4, 1.994], [34.7, -7165.8, 1.994], [34.5, -5387.9, -2.0], [34.2, -16681.7, 1.994], [34.1, -18280.9, -1.992], [33.6, -6811.3, 1.98], [33.6, -5972.0, 1.814], [33.5, -16222.4, -1.986], [33.4, -17815.9, 1.994], [33.3, -6680.9, 1.98], [33.2, -17436.0, -1.976], [33.0, -17328.2, 1.978], [32.7, -16006.9, 1.978], [32.7, -5643.1, 1.972], [32.6, -19970.9, 1.988], [32.6, -5762.2, -1.986], [32.4, -4920.0, 1.994], [32.4, -17716.7, 1.98], [32.0, -20331.0, -1.978], [31.7, -17257.3, 1.988]]} +{"file": "spliced_blc0001020304050607_guppi_57517_12225_HIP54077_0018.gpuspec.0002.h5", "target": "HIP54077", "cadence": "HIP54872", "on": false, "mjd": 57517.14316, "on_line": 0.33, "null_mean": 0.09, "null_std": 0.43, "null_n": 200, "as_high": 66, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_12572_HIP54872_0019.gpuspec.0002.h5", "target": "HIP54872", "cadence": "HIP54872", "on": true, "mjd": 57517.14717, "on_line": 0.24, "null_mean": 0.08, "null_std": 0.4, "null_n": 200, "as_high": 67, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_12915_HIP54244_0020.gpuspec.0002.h5", "target": "HIP54244", "cadence": "HIP54872", "on": false, "mjd": 57517.15114, "on_line": -0.27, "null_mean": 0.1, "null_std": 0.44, "null_n": 200, "as_high": 154, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_13252_HIP54906_0021.gpuspec.0002.h5", "target": "HIP54906", "cadence": "HIP54906", "on": true, "mjd": 57517.15505, "on_line": -0.43, "null_mean": 0.13, "null_std": 0.41, "null_n": 200, "as_high": 183, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_13589_HIP54077_0022.gpuspec.0002.h5", "target": "HIP54077", "cadence": "HIP54906", "on": false, "mjd": 57517.15895, "on_line": -0.6, "null_mean": 0.12, "null_std": 0.43, "null_n": 200, "as_high": 194, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_13926_HIP54906_0023.gpuspec.0002.h5", "target": "HIP54906", "cadence": "HIP54906", "on": true, "mjd": 57517.16285, "on_line": 0.09, "null_mean": 0.15, "null_std": 0.41, "null_n": 200, "as_high": 116, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_14269_HIP54217_0024.gpuspec.0002.h5", "target": "HIP54217", "cadence": "HIP54906", "on": false, "mjd": 57517.16682, "on_line": -0.67, "null_mean": 0.02, "null_std": 0.42, "null_n": 200, "as_high": 188, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_14612_HIP54906_0025.gpuspec.0002.h5", "target": "HIP54906", "cadence": "HIP54906", "on": true, "mjd": 57517.17079, "on_line": -0.3, "null_mean": 0.12, "null_std": 0.44, "null_n": 200, "as_high": 163, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_14946_HIP54388_0026.gpuspec.0002.h5", "target": "HIP54388", "cadence": "HIP54906", "on": false, "mjd": 57517.17465, "on_line": 0.24, "null_mean": 0.07, "null_std": 0.41, "null_n": 200, "as_high": 72, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57517_15327_HIP55846_0027.gpuspec.0002.h5", "target": "HIP55846", "cadence": null, "on": null, "mjd": 57517.17906, "on_line": -0.64, "null_mean": 0.07, "null_std": 0.47, "null_n": 200, "as_high": 187, "tracks": [[41.9, -3527.8, 0.114], [14.4, 12932.3, -1.976], [14.3, 12518.3, 1.56], [13.3, 12458.8, 1.988], [12.5, 12872.7, -1.684], [12.4, -3462.6, -0.426], [11.6, -3587.4, 0.57], [11.2, 12813.2, -1.126], [11.0, 12580.7, 1.372], [10.2, 12994.7, -2.0], [10.0, -3394.5, -0.934], [9.6, 12753.6, -0.738], [8.8, -3663.9, 1.184], [8.8, 12668.6, 0.28], [8.3, -3298.1, -1.712]]} +{"file": "spliced_blc0001020304050607_guppi_57517_15666_HIP54998_0028.gpuspec.0002.h5", "target": "HIP54998", "cadence": null, "on": null, "mjd": 57517.18298, "on_line": -0.62, "null_mean": 0.1, "null_std": 0.42, "null_n": 200, "as_high": 190, "tracks": [[88.0, -3493.8, 0.096], [14.3, -3556.2, 0.596], [12.6, -3434.2, -0.558], [9.7, -3615.7, 1.056], [8.5, -3374.7, -0.892]]} +{"file": "spliced_blc0001020304050607_guppi_57517_16005_HIP55846_0029.gpuspec.0002.h5", "target": "HIP55846", "cadence": null, "on": null, "mjd": 57517.18597, "on_line": 0.05, "null_mean": 0.61, "null_std": 0.53, "null_n": 200, "as_high": 171, "tracks": [[53.3, -3468.3, 0.12], [13.6, -3530.6, 1.538], [11.9, -3408.7, -1.234], [10.7, 3586.5, -2.0], [10.6, 3444.7, 1.972], [9.3, -3346.3, -2.0]]} diff --git a/papers/ml_signals/data/MLc6.jsonl b/papers/ml_signals/data/MLc6.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..61ad2c2f8749b6bfc61186764af8d4a91a30553d --- /dev/null +++ b/papers/ml_signals/data/MLc6.jsonl @@ -0,0 +1,28 @@ +{"t0": 57522.16460576465, "hz": 3312.065966581583, "drift": 0.18201505817214256, "on_snr": [14.7, 45.7, 53.3], "tag": "MLc6", "star": "HIP56802", "session": "AGBT16A_999_188", "f0": 1435.940307} +{"file": "spliced_blc0001020304050607_guppi_57522_10620_DIAG_PSR_J1239%2B2453_0002.gpuspec.0002.h5", "target": "DIAG_PSR_J1239%2B2453", "cadence": null, "on": null, "mjd": 57522.12458, "on_line": 0.0, "null_mean": 0.09, "null_std": 0.45, "null_n": 200, "as_high": 113, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_11008_GJ473AB_0003.gpuspec.0002.h5", "target": "GJ473AB", "cadence": "GJ473AB", "on": true, "mjd": 57522.12907, "on_line": 0.63, "null_mean": 0.09, "null_std": 0.41, "null_n": 200, "as_high": 16, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_11359_HIP60272_0004.gpuspec.0002.h5", "target": "HIP60272", "cadence": "GJ473AB", "on": false, "mjd": 57522.13314, "on_line": -0.2, "null_mean": 0.1, "null_std": 0.42, "null_n": 200, "as_high": 144, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_11709_GJ473AB_0005.gpuspec.0002.h5", "target": "GJ473AB", "cadence": "GJ473AB", "on": true, "mjd": 57522.13719, "on_line": 0.06, "null_mean": 0.12, "null_std": 0.48, "null_n": 200, "as_high": 110, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_12066_HIP60325_0006.gpuspec.0002.h5", "target": "HIP60325", "cadence": "GJ473AB", "on": false, "mjd": 57522.14132, "on_line": 24.02, "null_mean": 23.35, "null_std": 1.04, "null_n": 200, "as_high": 53, "tracks": [[121.8, 3430.7, 1.972], [121.4, -5864.1, -1.992], [120.6, -1171.3, 1.98], [120.6, -22049.1, -1.986], [120.3, -23580.3, -1.992], [120.3, 1165.2, -1.992], [120.3, 24549.6, 1.994], [120.2, 1567.8, -2.0], [120.2, -6434.0, 1.994], [120.1, 12215.1, 1.994], [120.0, 19445.7, -1.992], [119.8, 13465.6, 1.98], [119.8, 5747.3, 1.994], [119.8, 13131.0, -1.986], [119.8, 2058.3, -1.986], [119.7, -5974.6, -1.986], [119.7, -20342.1, -1.978], [119.6, -13874.3, 1.978], [119.6, 19726.4, 1.988], [119.5, 16757.6, -1.986], [119.4, -20685.2, -2.0], [119.4, -4395.3, -2.0], [119.4, 21016.5, -1.986], [119.4, -15303.4, -2.0], [119.3, -8384.8, -2.0], [119.3, 13573.3, -2.0], [119.3, 958.2, -1.976], [119.2, 23177.2, 1.988], [119.0, -21595.4, -1.986], [119.0, 4797.4, -1.976], [119.0, 10683.9, -1.976], [119.0, 13930.6, -1.986], [119.0, -7987.8, 1.988], [118.9, -20449.9, 1.972], [118.9, -4710.0, -2.0], [118.9, 23647.9, -1.978], [118.9, -24612.4, -1.976], [118.9, 18705.6, -1.986], [118.8, -16001.0, 1.98], [118.8, 14012.8, -2.0]]} +{"file": "spliced_blc0001020304050607_guppi_57522_12423_GJ473AB_0007.gpuspec.0002.h5", "target": "GJ473AB", "cadence": "GJ473AB", "on": true, "mjd": 57522.14545, "on_line": 0.47, "null_mean": 0.04, "null_std": 0.43, "null_n": 200, "as_high": 30, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_12774_HIP60510_0008.gpuspec.0002.h5", "target": "HIP60510", "cadence": "GJ473AB", "on": false, "mjd": 57522.14951, "on_line": -0.1, "null_mean": 0.11, "null_std": 0.44, "null_n": 200, "as_high": 131, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_13197_HIP56802_0009.gpuspec.0002.h5", "target": "HIP56802", "cadence": "HIP56802", "on": true, "mjd": 57522.15441, "on_line": 0.48, "null_mean": 0.09, "null_std": 0.43, "null_n": 200, "as_high": 38, "tracks": [[14.6, 3138.7, 0.204]]} +{"file": "spliced_blc0001020304050607_guppi_57522_13603_HIP55875_0010.gpuspec.0002.h5", "target": "HIP55875", "cadence": "HIP56802", "on": false, "mjd": 57522.15911, "on_line": 2.16, "null_mean": 0.12, "null_std": 0.47, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_14009_HIP56802_0011.gpuspec.0002.h5", "target": "HIP56802", "cadence": "HIP56802", "on": true, "mjd": 57522.16381, "on_line": 21.19, "null_mean": 0.06, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": [[45.6, 3300.3, 0.194], [8.0, 3365.5, -0.278]]} +{"file": "spliced_blc0001020304050607_guppi_57522_14414_HIP55884_0012.gpuspec.0002.h5", "target": "HIP55884", "cadence": "HIP56802", "on": false, "mjd": 57522.16849, "on_line": 2.5, "null_mean": 0.09, "null_std": 0.42, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_14818_HIP56802_0013.gpuspec.0002.h5", "target": "HIP56802", "cadence": "HIP56802", "on": true, "mjd": 57522.17317, "on_line": 25.9, "null_mean": 0.09, "null_std": 0.41, "null_n": 200, "as_high": 0, "tracks": [[53.4, 3444.9, 0.158], [8.5, 3374.0, 1.194]]} +{"file": "spliced_blc0001020304050607_guppi_57522_15220_HIP55937_0014.gpuspec.0002.h5", "target": "HIP55937", "cadence": "HIP56802", "on": false, "mjd": 57522.17782, "on_line": 0.87, "null_mean": 0.15, "null_std": 0.39, "null_n": 200, "as_high": 6, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_15605_HIP59816_0015.gpuspec.0002.h5", "target": "HIP59816", "cadence": null, "on": null, "mjd": 57522.18228, "on_line": -0.4, "null_mean": 0.09, "null_std": 0.45, "null_n": 200, "as_high": 173, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_15953_HIP58843_0016.gpuspec.0002.h5", "target": "HIP58843", "cadence": null, "on": null, "mjd": 57522.18631, "on_line": -0.33, "null_mean": 0.07, "null_std": 0.4, "null_n": 200, "as_high": 168, "tracks": [[14.0, 3620.7, 0.138]]} +{"file": "spliced_blc0001020304050607_guppi_57522_16652_HIP58862_0018.gpuspec.0002.h5", "target": "HIP58862", "cadence": null, "on": null, "mjd": 57522.1944, "on_line": -0.11, "null_mean": 0.15, "null_std": 0.42, "null_n": 200, "as_high": 140, "tracks": [[11.0, 3711.4, 0.116]]} +{"file": "spliced_blc0001020304050607_guppi_57522_17003_HIP59816_0019.gpuspec.0002.h5", "target": "HIP59816", "cadence": null, "on": null, "mjd": 57522.19846, "on_line": -0.29, "null_mean": 0.09, "null_std": 0.42, "null_n": 200, "as_high": 157, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_17354_HIP58864_0020.gpuspec.0002.h5", "target": "HIP58864", "cadence": null, "on": null, "mjd": 57522.20252, "on_line": -0.19, "null_mean": 0.12, "null_std": 0.42, "null_n": 200, "as_high": 153, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_17744_HIP60759_0021.gpuspec.0002.h5", "target": "HIP60759", "cadence": "HIP60759", "on": true, "mjd": 57522.20704, "on_line": -0.05, "null_mean": 0.08, "null_std": 0.44, "null_n": 200, "as_high": 134, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_18089_HIP59833_0022.gpuspec.0002.h5", "target": "HIP59833", "cadence": "HIP60759", "on": false, "mjd": 57522.21103, "on_line": 0.57, "null_mean": 0.13, "null_std": 0.4, "null_n": 200, "as_high": 23, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_18434_HIP60759_0023.gpuspec.0002.h5", "target": "HIP60759", "cadence": "HIP60759", "on": true, "mjd": 57522.21502, "on_line": -0.68, "null_mean": 0.06, "null_std": 0.44, "null_n": 200, "as_high": 187, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_18787_HIP59877_0024.gpuspec.0002.h5", "target": "HIP59877", "cadence": "HIP60759", "on": false, "mjd": 57522.21911, "on_line": -0.33, "null_mean": 0.1, "null_std": 0.38, "null_n": 200, "as_high": 172, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_19140_HIP60759_0025.gpuspec.0002.h5", "target": "HIP60759", "cadence": "HIP60759", "on": true, "mjd": 57522.22319, "on_line": 0.29, "null_mean": 0.09, "null_std": 0.41, "null_n": 200, "as_high": 64, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_19489_HIP59910_0026.gpuspec.0002.h5", "target": "HIP59910", "cadence": "HIP60759", "on": false, "mjd": 57522.22723, "on_line": -0.68, "null_mean": 0.1, "null_std": 0.39, "null_n": 200, "as_high": 196, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_19859_HIP61099_0027.gpuspec.0002.h5", "target": "HIP61099", "cadence": null, "on": null, "mjd": 57522.23151, "on_line": -0.51, "null_mean": 0.08, "null_std": 0.43, "null_n": 200, "as_high": 183, "tracks": [[8.5, 3873.1, -0.156]]} +{"file": "spliced_blc0001020304050607_guppi_57522_20213_HIP60087_0028.gpuspec.0002.h5", "target": "HIP60087", "cadence": null, "on": null, "mjd": 57522.23561, "on_line": 0.21, "null_mean": 0.13, "null_std": 0.47, "null_n": 200, "as_high": 83, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57522_20566_HIP61099_0029.gpuspec.0002.h5", "target": "HIP61099", "cadence": null, "on": null, "mjd": 57522.23876, "on_line": 0.2, "null_mean": 0.05, "null_std": 0.62, "null_n": 200, "as_high": 80, "tracks": []} diff --git a/papers/ml_signals/data/MLc7.jsonl b/papers/ml_signals/data/MLc7.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..efb0e27a7bef5fde4838d3f72ea4501e0268dd0a --- /dev/null +++ b/papers/ml_signals/data/MLc7.jsonl @@ -0,0 +1,58 @@ +{"t0": 57544.607417705934, "hz": -5419.50598881929, "drift": -0.10033964748299144, "on_snr": [93.0, 109.0, 125.5], "tag": "MLc7", "star": "HIP13402", "session": "AGBT16A_999_215", "f0": 1487.482046} +{"file": "spliced_blc0001020304050607_guppi_57544_40295_DIAG_PSR_J1939%2B2134_0002.gpuspec.0002.h5", "target": "DIAG_PSR_J1939%2B2134", "cadence": null, "on": null, "mjd": 57544.46804, "on_line": 0.11, "null_mean": 0.1, "null_std": 0.44, "null_n": 200, "as_high": 99, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_40783_HIP115142_0003.gpuspec.0002.h5", "target": "HIP115142", "cadence": "HIP115142", "on": true, "mjd": 57544.47369, "on_line": 0.13, "null_mean": 0.12, "null_std": 0.43, "null_n": 200, "as_high": 89, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_41139_HIP113631_0004.gpuspec.0002.h5", "target": "HIP113631", "cadence": "HIP115142", "on": false, "mjd": 57544.47781, "on_line": -0.04, "null_mean": 0.13, "null_std": 0.62, "null_n": 200, "as_high": 127, "tracks": [[38.4, -5191.5, -0.014], [9.5, -5120.6, 0.57]]} +{"file": "spliced_blc0001020304050607_guppi_57544_41495_HIP115142_0005.gpuspec.0002.h5", "target": "HIP115142", "cadence": "HIP115142", "on": true, "mjd": 57544.48193, "on_line": -0.5, "null_mean": 0.1, "null_std": 0.39, "null_n": 200, "as_high": 188, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_41842_HIP113769_0006.gpuspec.0002.h5", "target": "HIP113769", "cadence": "HIP115142", "on": false, "mjd": 57544.48595, "on_line": 0.15, "null_mean": 0.08, "null_std": 0.43, "null_n": 200, "as_high": 84, "tracks": [[66.1, -5191.5, -0.01], [10.3, -5131.9, -0.45], [9.3, -5287.9, -0.766], [8.6, -5072.4, -0.914]]} +{"file": "spliced_blc0001020304050607_guppi_57544_42189_HIP115142_0007.gpuspec.0002.h5", "target": "HIP115142", "cadence": "HIP115142", "on": true, "mjd": 57544.48996, "on_line": 0.63, "null_mean": 0.11, "null_std": 0.44, "null_n": 200, "as_high": 26, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_42540_HIP113771_0008.gpuspec.0002.h5", "target": "HIP113771", "cadence": "HIP115142", "on": false, "mjd": 57544.49403, "on_line": -0.28, "null_mean": 0.14, "null_std": 0.77, "null_n": 200, "as_high": 160, "tracks": [[66.4, -5185.8, 0.016], [13.3, -5114.9, 0.552], [12.1, -5052.5, 1.06], [12.0, -5256.7, -0.556], [8.9, -5330.4, 1.362], [8.4, -4990.1, -1.522], [8.1, -5401.3, -1.688]]} +{"file": "spliced_blc0001020304050607_guppi_57544_42886_HIP115445_0009.gpuspec.0002.h5", "target": "HIP115445", "cadence": "HIP115445", "on": true, "mjd": 57544.49803, "on_line": 0.54, "null_mean": 0.11, "null_std": 0.43, "null_n": 200, "as_high": 29, "tracks": [[31.6, -5180.1, 0.014]]} +{"file": "spliced_blc0001020304050607_guppi_57544_43238_HIP114042_0010.gpuspec.0002.h5", "target": "HIP114042", "cadence": "HIP115445", "on": false, "mjd": 57544.50211, "on_line": -0.08, "null_mean": 0.13, "null_std": 0.51, "null_n": 200, "as_high": 132, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_43591_HIP115445_0011.gpuspec.0002.h5", "target": "HIP115445", "cadence": "HIP115445", "on": true, "mjd": 57544.50619, "on_line": 0.05, "null_mean": 0.16, "null_std": 0.6, "null_n": 200, "as_high": 115, "tracks": [[33.9, -5177.3, -0.01], [8.6, -5273.7, -0.766]]} +{"file": "spliced_blc0001020304050607_guppi_57544_43948_HIP114111_0012.gpuspec.0002.h5", "target": "HIP114111", "cadence": "HIP115445", "on": false, "mjd": 57544.51032, "on_line": -0.26, "null_mean": 0.1, "null_std": 0.43, "null_n": 200, "as_high": 157, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_44305_HIP115445_0013.gpuspec.0002.h5", "target": "HIP115445", "cadence": "HIP115445", "on": true, "mjd": 57544.51445, "on_line": 0.61, "null_mean": 0.15, "null_std": 0.52, "null_n": 200, "as_high": 28, "tracks": [[36.1, -5174.4, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_44663_HIP114137_0014.gpuspec.0002.h5", "target": "HIP114137", "cadence": "HIP115445", "on": false, "mjd": 57544.5186, "on_line": 0.31, "null_mean": 0.1, "null_std": 0.44, "null_n": 200, "as_high": 64, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_45061_HIP115738_0015.gpuspec.0002.h5", "target": "HIP115738", "cadence": "HIP115738", "on": true, "mjd": 57544.5232, "on_line": -0.68, "null_mean": 0.1, "null_std": 0.41, "null_n": 200, "as_high": 193, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_45411_HIP114223_0016.gpuspec.0002.h5", "target": "HIP114223", "cadence": "HIP115738", "on": false, "mjd": 57544.52726, "on_line": 0.68, "null_mean": 0.17, "null_std": 0.46, "null_n": 200, "as_high": 28, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_45761_HIP115738_0017.gpuspec.0002.h5", "target": "HIP115738", "cadence": "HIP115738", "on": true, "mjd": 57544.53131, "on_line": -0.17, "null_mean": 0.08, "null_std": 0.43, "null_n": 200, "as_high": 143, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_46119_HIP114257_0018.gpuspec.0002.h5", "target": "HIP114257", "cadence": "HIP115738", "on": false, "mjd": 57544.53545, "on_line": -0.3, "null_mean": 0.21, "null_std": 0.52, "null_n": 200, "as_high": 182, "tracks": [[18.3, -5185.8, -0.016]]} +{"file": "spliced_blc0001020304050607_guppi_57544_46477_HIP115738_0019.gpuspec.0002.h5", "target": "HIP115738", "cadence": "HIP115738", "on": true, "mjd": 57544.53959, "on_line": -0.22, "null_mean": 0.08, "null_std": 0.42, "null_n": 200, "as_high": 157, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_46841_HIP114330_0020.gpuspec.0002.h5", "target": "HIP114330", "cadence": "HIP115738", "on": false, "mjd": 57544.54381, "on_line": 0.11, "null_mean": 0.07, "null_std": 0.74, "null_n": 200, "as_high": 79, "tracks": [[52.9, -5197.1, -0.016], [8.6, -5256.7, -0.568], [8.4, -5114.9, 0.62]]} +{"file": "spliced_blc0001020304050607_guppi_57544_47204_HIP114233_0021.gpuspec.0002.h5", "target": "HIP114233", "cadence": "HIP114233", "on": true, "mjd": 57544.54801, "on_line": 0.37, "null_mean": 0.02, "null_std": 0.46, "null_n": 200, "as_high": 46, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_47557_HIP112662_0022.gpuspec.0002.h5", "target": "HIP112662", "cadence": "HIP114233", "on": false, "mjd": 57544.55209, "on_line": -0.19, "null_mean": 0.14, "null_std": 0.94, "null_n": 200, "as_high": 145, "tracks": [[64.6, -5214.1, -0.03], [9.8, -5154.6, -0.568], [9.7, -5276.5, -0.618]]} +{"file": "spliced_blc0001020304050607_guppi_57544_47910_HIP114233_0023.gpuspec.0002.h5", "target": "HIP114233", "cadence": "HIP114233", "on": true, "mjd": 57544.55618, "on_line": -0.25, "null_mean": 0.06, "null_std": 0.43, "null_n": 200, "as_high": 153, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_48263_HIP112669_0024.gpuspec.0002.h5", "target": "HIP112669", "cadence": "HIP114233", "on": false, "mjd": 57544.56026, "on_line": 0.18, "null_mean": 0.25, "null_std": 1.14, "null_n": 200, "as_high": 98, "tracks": [[75.7, -5228.3, -0.016], [11.5, -5287.9, 0.538], [10.2, -5168.8, -0.492], [10.1, -5395.6, 1.564], [9.7, -5109.2, -1.36]]} +{"file": "spliced_blc0001020304050607_guppi_57544_48616_HIP114233_0025.gpuspec.0002.h5", "target": "HIP114233", "cadence": "HIP114233", "on": true, "mjd": 57544.56435, "on_line": 0.45, "null_mean": 0.04, "null_std": 0.39, "null_n": 200, "as_high": 23, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_48967_HIP112742_0026.gpuspec.0002.h5", "target": "HIP112742", "cadence": "HIP114233", "on": false, "mjd": 57544.56841, "on_line": -0.13, "null_mean": 0.12, "null_std": 0.55, "null_n": 200, "as_high": 141, "tracks": [[19.2, -5245.3, -0.042]]} +{"file": "spliced_blc0001020304050607_guppi_57544_49383_HIP114886_0027.gpuspec.0002.h5", "target": "HIP114886", "cadence": "HIP114886", "on": true, "mjd": 57544.57323, "on_line": -0.07, "null_mean": 0.11, "null_std": 0.45, "null_n": 200, "as_high": 131, "tracks": [[11.0, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_49732_HIP113336_0028.gpuspec.0002.h5", "target": "HIP113336", "cadence": "HIP114886", "on": false, "mjd": 57544.57727, "on_line": -0.15, "null_mean": 0.13, "null_std": 0.44, "null_n": 200, "as_high": 150, "tracks": [[9.7, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_50080_HIP114886_0029.gpuspec.0002.h5", "target": "HIP114886", "cadence": "HIP114886", "on": true, "mjd": 57544.5813, "on_line": -0.13, "null_mean": 0.1, "null_std": 0.41, "null_n": 200, "as_high": 140, "tracks": [[9.3, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_50437_HIP113357_0030.gpuspec.0002.h5", "target": "HIP113357", "cadence": "HIP114886", "on": false, "mjd": 57544.58543, "on_line": 0.49, "null_mean": 0.14, "null_std": 0.43, "null_n": 200, "as_high": 37, "tracks": [[10.7, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_50793_HIP114886_0031.gpuspec.0002.h5", "target": "HIP114886", "cadence": "HIP114886", "on": true, "mjd": 57544.58955, "on_line": 0.03, "null_mean": 0.09, "null_std": 0.46, "null_n": 200, "as_high": 112, "tracks": [[10.7, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_51142_HIP113384_0032.gpuspec.0002.h5", "target": "HIP113384", "cadence": "HIP114886", "on": false, "mjd": 57544.59359, "on_line": 0.11, "null_mean": 0.09, "null_std": 0.38, "null_n": 200, "as_high": 97, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_51645_HIP13402_0033.gpuspec.0002.h5", "target": "HIP13402", "cadence": "HIP13402", "on": true, "mjd": 57544.59941, "on_line": 50.46, "null_mean": 0.14, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": [[110.6, -5353.1, -0.094], [16.4, -5285.0, 0.45], [14.8, -5415.5, 0.404], [12.2, -5211.3, 1.034], [10.9, -5475.0, 0.886], [10.5, -5148.9, -1.712], [9.8, -5537.4, 1.372], [9.2, -5596.9, 1.88]]} +{"file": "spliced_blc0001020304050607_guppi_57544_51992_HIP11915_0034.gpuspec.0002.h5", "target": "HIP11915", "cadence": "HIP13402", "on": false, "mjd": 57544.60342, "on_line": 2.14, "null_mean": 0.19, "null_std": 0.46, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_52338_HIP13402_0035.gpuspec.0002.h5", "target": "HIP13402", "cadence": "HIP13402", "on": true, "mjd": 57544.60743, "on_line": 44.42, "null_mean": 0.13, "null_std": 0.4, "null_n": 200, "as_high": 0, "tracks": [[127.3, -5415.5, -0.1], [20.6, -5477.8, -0.62], [20.0, -5355.9, -0.578], [15.8, -5537.4, -1.082], [15.6, -5296.4, -1.06], [14.0, -5236.8, -1.522], [13.8, -5596.9, -1.544], [11.6, -5177.3, -1.986], [8.6, -5656.5, 1.666]]} +{"file": "spliced_blc0001020304050607_guppi_57544_52683_HIP12005_0036.gpuspec.0002.h5", "target": "HIP12005", "cadence": "HIP13402", "on": false, "mjd": 57544.61142, "on_line": 1.99, "null_mean": 0.13, "null_std": 0.42, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_53028_HIP13402_0037.gpuspec.0002.h5", "target": "HIP13402", "cadence": "HIP13402", "on": true, "mjd": 57544.61542, "on_line": 81.04, "null_mean": 0.11, "null_std": 0.47, "null_n": 200, "as_high": 0, "tracks": [[138.9, -5492.0, -0.112], [25.1, -5432.5, -0.578], [24.0, -5554.4, -1.032], [19.1, -5370.1, -1.224], [17.3, -5613.9, -1.874], [16.9, -5310.5, -1.544], [13.4, -5679.2, 1.372], [12.0, -5251.0, -2.0], [11.2, -5755.7, 1.98]]} +{"file": "spliced_blc0001020304050607_guppi_57544_53376_HIP12038_0038.gpuspec.0002.h5", "target": "HIP12038", "cadence": "HIP13402", "on": false, "mjd": 57544.61944, "on_line": -0.0, "null_mean": 0.13, "null_std": 0.43, "null_n": 200, "as_high": 120, "tracks": [[9.5, -5534.6, -0.156]]} +{"file": "spliced_blc0001020304050607_guppi_57544_53771_HIP12493_0039.gpuspec.0002.h5", "target": "HIP12493", "cadence": "HIP12493", "on": true, "mjd": 57544.62401, "on_line": -0.06, "null_mean": 0.11, "null_std": 0.42, "null_n": 200, "as_high": 134, "tracks": [[9.7, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_54124_HIP11000_0040.gpuspec.0002.h5", "target": "HIP11000", "cadence": "HIP12493", "on": false, "mjd": 57544.6281, "on_line": 0.08, "null_mean": 0.1, "null_std": 0.46, "null_n": 200, "as_high": 104, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_54478_HIP12493_0041.gpuspec.0002.h5", "target": "HIP12493", "cadence": "HIP12493", "on": true, "mjd": 57544.6322, "on_line": 0.17, "null_mean": 0.06, "null_std": 0.42, "null_n": 200, "as_high": 80, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_54845_HIP11029_0042.gpuspec.0002.h5", "target": "HIP11029", "cadence": "HIP12493", "on": false, "mjd": 57544.63645, "on_line": 0.27, "null_mean": 0.04, "null_std": 0.48, "null_n": 200, "as_high": 69, "tracks": [[51.0, -5716.0, -0.136], [8.9, -5798.3, -0.766], [8.4, -5633.8, 0.618]]} +{"file": "spliced_blc0001020304050607_guppi_57544_55212_HIP12493_0043.gpuspec.0002.h5", "target": "HIP12493", "cadence": "HIP12493", "on": true, "mjd": 57544.64069, "on_line": 0.62, "null_mean": 0.08, "null_std": 0.42, "null_n": 200, "as_high": 21, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_55579_HIP11124_0044.gpuspec.0002.h5", "target": "HIP11124", "cadence": "HIP12493", "on": false, "mjd": 57544.64494, "on_line": 0.5, "null_mean": 0.08, "null_std": 0.49, "null_n": 200, "as_high": 35, "tracks": [[72.3, -5812.4, -0.128], [14.5, -5872.0, -0.62], [11.4, -5747.2, -1.032], [9.8, -5951.4, -1.676], [8.8, -5684.8, -1.532]]} +{"file": "spliced_blc0001020304050607_guppi_57544_55945_HIP12530_0045.gpuspec.0002.h5", "target": "HIP12530", "cadence": "HIP12530", "on": true, "mjd": 57544.64918, "on_line": 0.17, "null_mean": 0.07, "null_std": 0.46, "null_n": 200, "as_high": 80, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_56311_HIP11124_0046.gpuspec.0002.h5", "target": "HIP11124", "cadence": "HIP12530", "on": false, "mjd": 57544.65341, "on_line": 0.08, "null_mean": 0.07, "null_std": 0.41, "null_n": 200, "as_high": 93, "tracks": [[30.9, -5889.0, -0.094], [9.3, -5991.1, 0.716]]} +{"file": "spliced_blc0001020304050607_guppi_57544_56677_HIP12530_0047.gpuspec.0002.h5", "target": "HIP12530", "cadence": "HIP12530", "on": true, "mjd": 57544.65765, "on_line": -0.81, "null_mean": 0.06, "null_std": 0.4, "null_n": 200, "as_high": 199, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_57034_HIP11136_0048.gpuspec.0002.h5", "target": "HIP11136", "cadence": "HIP12530", "on": false, "mjd": 57544.66178, "on_line": -0.53, "null_mean": 0.13, "null_std": 0.7, "null_n": 200, "as_high": 188, "tracks": [[46.1, -5954.2, -0.084], [8.5, -6081.8, 0.862], [8.3, -5866.3, -0.766]]} +{"file": "spliced_blc0001020304050607_guppi_57544_57391_HIP12530_0049.gpuspec.0002.h5", "target": "HIP12530", "cadence": "HIP12530", "on": true, "mjd": 57544.66591, "on_line": -0.47, "null_mean": 0.12, "null_std": 0.45, "null_n": 200, "as_high": 186, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_57743_HIP11139_0050.gpuspec.0002.h5", "target": "HIP11139", "cadence": "HIP12530", "on": false, "mjd": 57544.66999, "on_line": -0.21, "null_mean": 0.12, "null_std": 0.39, "null_n": 200, "as_high": 162, "tracks": [[14.9, -6005.2, -0.084]]} +{"file": "spliced_blc0001020304050607_guppi_57544_58175_HIP13081_0051.gpuspec.0002.h5", "target": "HIP13081", "cadence": "HIP13081", "on": true, "mjd": 57544.67499, "on_line": -0.75, "null_mean": 0.1, "null_std": 0.39, "null_n": 200, "as_high": 196, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57544_58540_HIP11619_0052.gpuspec.0002.h5", "target": "HIP11619", "cadence": "HIP13081", "on": false, "mjd": 57544.67921, "on_line": -0.08, "null_mean": 0.12, "null_std": 0.44, "null_n": 200, "as_high": 133, "tracks": [[10.0, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_58904_HIP13081_0053.gpuspec.0002.h5", "target": "HIP13081", "cadence": "HIP13081", "on": true, "mjd": 57544.68342, "on_line": -0.11, "null_mean": 0.09, "null_std": 0.43, "null_n": 200, "as_high": 141, "tracks": [[10.0, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_59256_HIP11678_0054.gpuspec.0002.h5", "target": "HIP11678", "cadence": "HIP13081", "on": false, "mjd": 57544.6875, "on_line": 0.75, "null_mean": 0.1, "null_std": 0.44, "null_n": 200, "as_high": 16, "tracks": [[15.2, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_59608_HIP13081_0055.gpuspec.0002.h5", "target": "HIP13081", "cadence": "HIP13081", "on": true, "mjd": 57544.69157, "on_line": 0.17, "null_mean": 0.09, "null_std": 0.43, "null_n": 200, "as_high": 72, "tracks": [[10.1, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_59957_HIP11686_0056.gpuspec.0002.h5", "target": "HIP11686", "cadence": "HIP13081", "on": false, "mjd": 57544.69561, "on_line": -0.06, "null_mean": 0.07, "null_std": 0.43, "null_n": 200, "as_high": 118, "tracks": [[12.1, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_60332_HIP13375_0057.gpuspec.0002.h5", "target": "HIP13375", "cadence": null, "on": null, "mjd": 57544.69995, "on_line": -0.24, "null_mean": 0.15, "null_std": 0.39, "null_n": 200, "as_high": 171, "tracks": [[9.1, 17954.8, -0.01]]} +{"file": "spliced_blc0001020304050607_guppi_57544_60698_HIP11993_0058.gpuspec.0002.h5", "target": "HIP11993", "cadence": null, "on": null, "mjd": 57544.70419, "on_line": -0.01, "null_mean": 0.11, "null_std": 0.43, "null_n": 200, "as_high": 131, "tracks": [[11.0, 17954.8, -0.01]]} diff --git a/papers/ml_signals/data/MLc8.jsonl b/papers/ml_signals/data/MLc8.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..8b90f81207edac4c59cd266c4baa017f525275eb --- /dev/null +++ b/papers/ml_signals/data/MLc8.jsonl @@ -0,0 +1,57 @@ +{"t0": 57543.111072803855, "hz": -1793.823615329434, "drift": 0.14244233438450415, "on_snr": [19.5, 37.1, 40.4], "tag": "MLc8", "star": "HIP62207", "session": "AGBT16A_999_213", "f0": 1724.972561} +{"file": "spliced_blc0001020304050607_guppi_57542_83841_DIAG_PSR_J0820-1350_0002.gpuspec.0002.h5", "target": "DIAG_PSR_J0820-1350", "cadence": null, "on": null, "mjd": 57542.97205, "on_line": -0.5, "null_mean": 0.13, "null_std": 0.45, "null_n": 200, "as_high": 186, "tracks": [[14.7, -3036.4, 0.038]]} +{"file": "spliced_blc0001020304050607_guppi_57542_84369_GJ411_0003.gpuspec.0002.h5", "target": "GJ411", "cadence": "GJ411", "on": true, "mjd": 57542.97816, "on_line": 0.69, "null_mean": 0.09, "null_std": 0.44, "null_n": 200, "as_high": 16, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_84744_HIP52936_0004.gpuspec.0002.h5", "target": "HIP52936", "cadence": "GJ411", "on": false, "mjd": 57542.9825, "on_line": 0.17, "null_mean": 0.16, "null_std": 0.42, "null_n": 200, "as_high": 98, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_85092_GJ411_0005.gpuspec.0002.h5", "target": "GJ411", "cadence": "GJ411", "on": true, "mjd": 57542.98653, "on_line": -0.65, "null_mean": 0.14, "null_std": 0.43, "null_n": 200, "as_high": 196, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_85446_HIP52941_0006.gpuspec.0002.h5", "target": "HIP52941", "cadence": "GJ411", "on": false, "mjd": 57542.99062, "on_line": 0.33, "null_mean": 0.14, "null_std": 0.46, "null_n": 200, "as_high": 68, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_85812_GJ411_0007.gpuspec.0002.h5", "target": "GJ411", "cadence": "GJ411", "on": true, "mjd": 57542.99486, "on_line": -0.42, "null_mean": 0.06, "null_std": 0.41, "null_n": 200, "as_high": 179, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57542_86169_HIP53002_0008.gpuspec.0002.h5", "target": "HIP53002", "cadence": "GJ411", "on": false, "mjd": 57542.99899, "on_line": 0.2, "null_mean": 0.09, "null_std": 0.48, "null_n": 200, "as_high": 80, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_00151_HIP46843_0009.gpuspec.0002.h5", "target": "HIP46843", "cadence": "HIP46843", "on": true, "mjd": 57543.00341, "on_line": 0.55, "null_mean": 0.11, "null_std": 0.42, "null_n": 200, "as_high": 25, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_00498_HIP45671_0010.gpuspec.0002.h5", "target": "HIP45671", "cadence": "HIP46843", "on": false, "mjd": 57543.00743, "on_line": 0.06, "null_mean": 0.1, "null_std": 0.47, "null_n": 200, "as_high": 109, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_00844_HIP46843_0011.gpuspec.0002.h5", "target": "HIP46843", "cadence": "HIP46843", "on": true, "mjd": 57543.01143, "on_line": 0.46, "null_mean": 0.19, "null_std": 0.42, "null_n": 200, "as_high": 48, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_01187_HIP45844_0012.gpuspec.0002.h5", "target": "HIP45844", "cadence": "HIP46843", "on": false, "mjd": 57543.0154, "on_line": 0.41, "null_mean": 0.11, "null_std": 0.44, "null_n": 200, "as_high": 48, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_01530_HIP46843_0013.gpuspec.0002.h5", "target": "HIP46843", "cadence": "HIP46843", "on": true, "mjd": 57543.01937, "on_line": 0.15, "null_mean": 0.08, "null_std": 0.41, "null_n": 200, "as_high": 82, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_01870_HIP45954_0014.gpuspec.0002.h5", "target": "HIP45954", "cadence": "HIP46843", "on": false, "mjd": 57543.02331, "on_line": 0.53, "null_mean": 0.11, "null_std": 0.41, "null_n": 200, "as_high": 31, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_02240_HIP47080_0015.gpuspec.0002.h5", "target": "HIP47080", "cadence": "HIP47080", "on": true, "mjd": 57543.02759, "on_line": 0.39, "null_mean": 0.21, "null_std": 1.26, "null_n": 200, "as_high": 55, "tracks": [[40.9, -2704.7, 0.074], [8.2, -2645.1, 0.618]]} +{"file": "spliced_blc0001020304050607_guppi_57543_02588_HIP46135_0016.gpuspec.0002.h5", "target": "HIP46135", "cadence": "HIP47080", "on": false, "mjd": 57543.03162, "on_line": 0.38, "null_mean": 0.08, "null_std": 0.46, "null_n": 200, "as_high": 57, "tracks": [[12.9, -2670.6, 0.11]]} +{"file": "spliced_blc0001020304050607_guppi_57543_02935_HIP47080_0017.gpuspec.0002.h5", "target": "HIP47080", "cadence": "HIP47080", "on": true, "mjd": 57543.03564, "on_line": -0.2, "null_mean": 0.04, "null_std": 0.43, "null_n": 200, "as_high": 141, "tracks": [[10.1, -2639.5, 0.11]]} +{"file": "spliced_blc0001020304050607_guppi_57543_03276_HIP46174_0018.gpuspec.0002.h5", "target": "HIP46174", "cadence": "HIP47080", "on": false, "mjd": 57543.03958, "on_line": 0.17, "null_mean": 0.14, "null_std": 0.42, "null_n": 200, "as_high": 93, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_03617_HIP47080_0019.gpuspec.0002.h5", "target": "HIP47080", "cadence": "HIP47080", "on": true, "mjd": 57543.04353, "on_line": 0.13, "null_mean": 0.08, "null_std": 0.45, "null_n": 200, "as_high": 92, "tracks": [[17.2, -2560.1, 0.102]]} +{"file": "spliced_blc0001020304050607_guppi_57543_03970_HIP46269_0020.gpuspec.0002.h5", "target": "HIP46269", "cadence": "HIP47080", "on": false, "mjd": 57543.04761, "on_line": 0.13, "null_mean": 0.13, "null_std": 0.46, "null_n": 200, "as_high": 95, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_04323_HIP47201_0021.gpuspec.0002.h5", "target": "HIP47201", "cadence": "HIP47201", "on": true, "mjd": 57543.0517, "on_line": 0.75, "null_mean": 0.06, "null_std": 0.46, "null_n": 200, "as_high": 9, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_04666_HIP46100_0022.gpuspec.0002.h5", "target": "HIP46100", "cadence": "HIP47201", "on": false, "mjd": 57543.05567, "on_line": 0.73, "null_mean": 0.09, "null_std": 0.39, "null_n": 200, "as_high": 8, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_05009_HIP47201_0023.gpuspec.0002.h5", "target": "HIP47201", "cadence": "HIP47201", "on": true, "mjd": 57543.05964, "on_line": 0.83, "null_mean": 0.09, "null_std": 0.48, "null_n": 200, "as_high": 9, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_05349_HIP46272_0024.gpuspec.0002.h5", "target": "HIP46272", "cadence": "HIP47201", "on": false, "mjd": 57543.06358, "on_line": 0.06, "null_mean": 0.11, "null_std": 0.43, "null_n": 200, "as_high": 111, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_05689_HIP47201_0025.gpuspec.0002.h5", "target": "HIP47201", "cadence": "HIP47201", "on": true, "mjd": 57543.06751, "on_line": -0.2, "null_mean": 0.12, "null_std": 0.43, "null_n": 200, "as_high": 152, "tracks": [[11.4, -2307.7, 0.124]]} +{"file": "spliced_blc0001020304050607_guppi_57543_06028_HIP46304_0026.gpuspec.0002.h5", "target": "HIP46304", "cadence": "HIP47201", "on": false, "mjd": 57543.07143, "on_line": 0.07, "null_mean": 0.1, "null_std": 0.4, "null_n": 200, "as_high": 107, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_06379_HIP47513_0027.gpuspec.0002.h5", "target": "HIP47513", "cadence": "HIP47513", "on": true, "mjd": 57543.0755, "on_line": -0.35, "null_mean": 0.1, "null_std": 0.4, "null_n": 200, "as_high": 175, "tracks": [[8.1, -2217.0, 0.138]]} +{"file": "spliced_blc0001020304050607_guppi_57543_06729_HIP46367_0028.gpuspec.0002.h5", "target": "HIP46367", "cadence": "HIP47513", "on": false, "mjd": 57543.07955, "on_line": 4.55, "null_mean": 0.13, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": [[100.5, -2171.6, 0.124], [18.9, -2234.0, 0.71], [18.2, -2109.2, 0.62], [16.3, -2307.7, 1.392], [15.7, -2032.7, 1.226], [12.2, -1973.1, 1.71], [11.6, -2372.9, 1.994], [8.0, -2438.1, -1.762]]} +{"file": "spliced_blc0001020304050607_guppi_57543_07078_HIP47513_0029.gpuspec.0002.h5", "target": "HIP47513", "cadence": "HIP47513", "on": true, "mjd": 57543.08359, "on_line": 0.81, "null_mean": 0.07, "null_std": 0.4, "null_n": 200, "as_high": 8, "tracks": [[19.4, -2123.4, 0.116]]} +{"file": "spliced_blc0001020304050607_guppi_57543_07425_HIP46447_0030.gpuspec.0002.h5", "target": "HIP46447", "cadence": "HIP47513", "on": false, "mjd": 57543.0876, "on_line": 32.6, "null_mean": 0.11, "null_std": 0.45, "null_n": 200, "as_high": 0, "tracks": [[157.8, -2075.2, 0.138], [29.3, -2015.6, 0.62], [26.6, -2140.4, 0.71], [21.5, -1944.8, 1.184], [18.4, -1862.5, 1.832], [17.8, -2231.1, 1.564], [13.6, -2307.7, 1.978], [10.9, -2367.2, -1.964], [9.4, -1780.3, -1.986]]} +{"file": "spliced_blc0001020304050607_guppi_57543_07772_HIP47513_0031.gpuspec.0002.h5", "target": "HIP47513", "cadence": "HIP47513", "on": true, "mjd": 57543.09162, "on_line": 7.81, "null_mean": 0.13, "null_std": 0.42, "null_n": 200, "as_high": 0, "tracks": [[13.4, -2029.8, 0.138]]} +{"file": "spliced_blc0001020304050607_guppi_57543_08116_HIP46454_0032.gpuspec.0002.h5", "target": "HIP46454", "cadence": "HIP47513", "on": false, "mjd": 57543.0956, "on_line": 72.73, "null_mean": 0.11, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": [[110.8, -1984.5, 0.138], [23.4, -2052.5, 0.76], [21.7, -1924.9, 0.62], [17.3, -2140.4, 1.396], [16.6, -1865.4, 1.08], [15.3, -1771.8, 1.814], [14.5, -2200.0, 1.88], [9.2, -1700.9, -1.88]]} +{"file": "spliced_blc0001020304050607_guppi_57543_08647_HIP62207_0033.gpuspec.0002.h5", "target": "HIP62207", "cadence": "HIP62207", "on": true, "mjd": 57543.10175, "on_line": 11.58, "null_mean": 0.11, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": [[21.6, -1910.7, 0.124]]} +{"file": "spliced_blc0001020304050607_guppi_57543_09023_HIP61072_0034.gpuspec.0002.h5", "target": "HIP61072", "cadence": "HIP62207", "on": false, "mjd": 57543.1061, "on_line": 1.24, "null_mean": 0.1, "null_std": 0.43, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_09397_HIP62207_0035.gpuspec.0002.h5", "target": "HIP62207", "cadence": "HIP62207", "on": true, "mjd": 57543.11043, "on_line": 22.44, "null_mean": 0.1, "null_std": 0.39, "null_n": 200, "as_high": 0, "tracks": [[38.7, -1800.1, 0.138]]} +{"file": "spliced_blc0001020304050607_guppi_57543_09782_HIP61074_0036.gpuspec.0002.h5", "target": "HIP61074", "cadence": "HIP62207", "on": false, "mjd": 57543.11488, "on_line": 1.19, "null_mean": 0.05, "null_std": 0.43, "null_n": 200, "as_high": 3, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_10165_HIP62207_0037.gpuspec.0002.h5", "target": "HIP62207", "cadence": "HIP62207", "on": true, "mjd": 57543.11932, "on_line": 25.87, "null_mean": 0.09, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": [[41.6, -1692.4, 0.138], [8.3, -1630.0, 1.314]]} +{"file": "spliced_blc0001020304050607_guppi_57543_10527_HIP61114_0038.gpuspec.0002.h5", "target": "HIP61114", "cadence": "HIP62207", "on": false, "mjd": 57543.12351, "on_line": 1.77, "null_mean": 0.09, "null_std": 0.44, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_10898_HIP66459_0039.gpuspec.0002.h5", "target": "HIP66459", "cadence": "HIP66459", "on": true, "mjd": 57543.1278, "on_line": 1.43, "null_mean": 0.11, "null_std": 0.42, "null_n": 200, "as_high": 0, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_11264_HIP65343_0040.gpuspec.0002.h5", "target": "HIP65343", "cadence": "HIP66459", "on": false, "mjd": 57543.13204, "on_line": 0.49, "null_mean": 0.06, "null_std": 0.42, "null_n": 200, "as_high": 30, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_11629_HIP66459_0041.gpuspec.0002.h5", "target": "HIP66459", "cadence": "HIP66459", "on": true, "mjd": 57543.13626, "on_line": 0.37, "null_mean": 0.13, "null_std": 0.45, "null_n": 200, "as_high": 65, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_12010_HIP65430_0042.gpuspec.0002.h5", "target": "HIP65430", "cadence": "HIP66459", "on": false, "mjd": 57543.14067, "on_line": 0.64, "null_mean": 0.1, "null_std": 0.46, "null_n": 200, "as_high": 17, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_12389_HIP66459_0043.gpuspec.0002.h5", "target": "HIP66459", "cadence": "HIP66459", "on": true, "mjd": 57543.14506, "on_line": -0.02, "null_mean": 0.16, "null_std": 0.5, "null_n": 200, "as_high": 130, "tracks": [[11.2, -1425.9, 0.086]]} +{"file": "spliced_blc0001020304050607_guppi_57543_12765_HIP65451_0044.gpuspec.0002.h5", "target": "HIP65451", "cadence": "HIP66459", "on": false, "mjd": 57543.14941, "on_line": 0.4, "null_mean": 0.06, "null_std": 0.44, "null_n": 200, "as_high": 40, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_13131_HIP68337_0045.gpuspec.0002.h5", "target": "HIP68337", "cadence": "HIP68337", "on": true, "mjd": 57543.15364, "on_line": -0.44, "null_mean": 0.08, "null_std": 0.43, "null_n": 200, "as_high": 175, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_13494_HIP67120_0046.gpuspec.0002.h5", "target": "HIP67120", "cadence": "HIP68337", "on": false, "mjd": 57543.15785, "on_line": -0.23, "null_mean": 0.11, "null_std": 0.45, "null_n": 200, "as_high": 155, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_13856_HIP68337_0047.gpuspec.0002.h5", "target": "HIP68337", "cadence": "HIP68337", "on": true, "mjd": 57543.16204, "on_line": 0.34, "null_mean": 0.1, "null_std": 0.51, "null_n": 200, "as_high": 62, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_14204_HIP67142_0048.gpuspec.0002.h5", "target": "HIP67142", "cadence": "HIP68337", "on": false, "mjd": 57543.16606, "on_line": 0.02, "null_mean": 0.1, "null_std": 0.42, "null_n": 200, "as_high": 113, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_14552_HIP68337_0049.gpuspec.0002.h5", "target": "HIP68337", "cadence": "HIP68337", "on": true, "mjd": 57543.17009, "on_line": 0.22, "null_mean": 0.09, "null_std": 0.43, "null_n": 200, "as_high": 72, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_14904_HIP67155_0050.gpuspec.0002.h5", "target": "HIP67155", "cadence": "HIP68337", "on": false, "mjd": 57543.17417, "on_line": 0.17, "null_mean": 0.09, "null_std": 0.42, "null_n": 200, "as_high": 87, "tracks": []} +{"file": "spliced_blc0001020304050607_guppi_57543_15275_HIP68469_0051.gpuspec.0002.h5", "target": "HIP68469", "cadence": "HIP68469", "on": true, "mjd": 57543.17846, "on_line": 1.21, "null_mean": 0.17, "null_std": 0.99, "null_n": 200, "as_high": 1, "tracks": [[30.4, -1136.6, 0.096], [8.6, -1221.7, 0.876]]} +{"file": "spliced_blc0001020304050607_guppi_57543_15628_HIP67315_0052.gpuspec.0002.h5", "target": "HIP67315", "cadence": "HIP68469", "on": false, "mjd": 57543.18255, "on_line": -0.3, "null_mean": 0.11, "null_std": 0.43, "null_n": 200, "as_high": 163, "tracks": [[21.9, -1102.6, 0.086]]} +{"file": "spliced_blc0001020304050607_guppi_57543_15981_HIP68469_0053.gpuspec.0002.h5", "target": "HIP68469", "cadence": "HIP68469", "on": true, "mjd": 57543.18663, "on_line": 0.84, "null_mean": 0.08, "null_std": 0.44, "null_n": 200, "as_high": 9, "tracks": [[28.2, -1062.9, 0.116], [8.2, -1125.3, 0.71]]} +{"file": "spliced_blc0001020304050607_guppi_57543_16336_HIP67344_0054.gpuspec.0002.h5", "target": "HIP67344", "cadence": "HIP68469", "on": false, "mjd": 57543.19074, "on_line": 0.13, "null_mean": 0.15, "null_std": 0.4, "null_n": 200, "as_high": 102, "tracks": [[8.7, -1023.2, 0.102]]} +{"file": "spliced_blc0001020304050607_guppi_57543_16691_HIP68469_0055.gpuspec.0002.h5", "target": "HIP68469", "cadence": "HIP68469", "on": true, "mjd": 57543.19485, "on_line": 0.95, "null_mean": 0.19, "null_std": 2.09, "null_n": 200, "as_high": 5, "tracks": [[104.7, -983.5, 0.088], [22.8, -1043.1, 0.62], [19.2, -915.5, 0.62], [18.3, -1102.6, 1.056], [16.2, -1199.0, 1.832], [14.8, -850.3, -1.018], [13.3, -782.2, 1.69], [9.5, -722.7, -1.762]]} +{"file": "spliced_blc0001020304050607_guppi_57543_17047_HIP67369_0056.gpuspec.0002.h5", "target": "HIP67369", "cadence": "HIP68469", "on": false, "mjd": 57543.19897, "on_line": 0.77, "null_mean": 0.11, "null_std": 0.47, "null_n": 200, "as_high": 16, "tracks": [[13.2, -946.7, 0.11]]} +{"file": "spliced_blc0001020304050607_guppi_57543_17448_HIP68634_0057.gpuspec.0002.h5", "target": "HIP68634", "cadence": null, "on": null, "mjd": 57543.20361, "on_line": 0.19, "null_mean": 0.13, "null_std": 0.45, "null_n": 200, "as_high": 83, "tracks": [[9.2, -901.3, 0.074]]} diff --git a/papers/ml_signals/data/MLc8_waterfall.npz b/papers/ml_signals/data/MLc8_waterfall.npz new file mode 100644 index 0000000000000000000000000000000000000000..6fbb171c7e3e018d28f73c3b978d9c38d07bbbc1 --- /dev/null +++ b/papers/ml_signals/data/MLc8_waterfall.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af9581761b8874ca637b9ef1a8bd196d1defae824c9d326ce1508ed453868b06 +size 2518852 diff --git a/papers/ml_signals/data/listing_AGBT16A_999_182.json b/papers/ml_signals/data/listing_AGBT16A_999_182.json new file mode 100644 index 0000000000000000000000000000000000000000..3d812e9bdcd928b1647fda72825caf81579ec8e7 --- /dev/null +++ b/papers/ml_signals/data/listing_AGBT16A_999_182.json @@ -0,0 +1 @@ +[[57517, 6261, "DIAG_PSR_J1136%2B1551", "spliced_blc0001020304050607_guppi_57517_06261_DIAG_PSR_J1136%2B1551_0002.gpuspec.0002.h5"], [57517, 6643, "HIP53985", "spliced_blc0001020304050607_guppi_57517_06643_HIP53985_0003.gpuspec.0002.h5"], [57517, 6999, "HIP53034", "spliced_blc0001020304050607_guppi_57517_06999_HIP53034_0004.gpuspec.0002.h5"], [57517, 7355, "HIP53985", "spliced_blc0001020304050607_guppi_57517_07355_HIP53985_0005.gpuspec.0002.h5"], [57517, 7692, "HIP53070", "spliced_blc0001020304050607_guppi_57517_07692_HIP53070_0006.gpuspec.0002.h5"], [57517, 8028, "HIP53985", "spliced_blc0001020304050607_guppi_57517_08028_HIP53985_0007.gpuspec.0002.h5"], [57517, 8361, "HIP53287", "spliced_blc0001020304050607_guppi_57517_08361_HIP53287_0008.gpuspec.0002.h5"], [57517, 8789, "HIP54677", "spliced_blc0001020304050607_guppi_57517_08789_HIP54677_0009.gpuspec.0002.h5"], [57517, 9209, "HIP53759", "spliced_blc0001020304050607_guppi_57517_09209_HIP53759_0010.gpuspec.0002.h5"], [57517, 9628, "HIP54677", "spliced_blc0001020304050607_guppi_57517_09628_HIP54677_0011.gpuspec.0002.h5"], [57517, 10032, "HIP53820", "spliced_blc0001020304050607_guppi_57517_10032_HIP53820_0012.gpuspec.0002.h5"], [57517, 10436, "HIP54677", "spliced_blc0001020304050607_guppi_57517_10436_HIP54677_0013.gpuspec.0002.h5"], [57517, 10836, "HIP53839", "spliced_blc0001020304050607_guppi_57517_10836_HIP53839_0014.gpuspec.0002.h5"], [57517, 11190, "HIP54872", "spliced_blc0001020304050607_guppi_57517_11190_HIP54872_0015.gpuspec.0002.h5"], [57517, 11534, "HIP53985", "spliced_blc0001020304050607_guppi_57517_11534_HIP53985_0016.gpuspec.0002.h5"], [57517, 11878, "HIP54872", "spliced_blc0001020304050607_guppi_57517_11878_HIP54872_0017.gpuspec.0002.h5"], [57517, 12225, "HIP54077", "spliced_blc0001020304050607_guppi_57517_12225_HIP54077_0018.gpuspec.0002.h5"], [57517, 12572, "HIP54872", "spliced_blc0001020304050607_guppi_57517_12572_HIP54872_0019.gpuspec.0002.h5"], [57517, 12915, "HIP54244", "spliced_blc0001020304050607_guppi_57517_12915_HIP54244_0020.gpuspec.0002.h5"], [57517, 13252, "HIP54906", "spliced_blc0001020304050607_guppi_57517_13252_HIP54906_0021.gpuspec.0002.h5"], [57517, 13589, "HIP54077", "spliced_blc0001020304050607_guppi_57517_13589_HIP54077_0022.gpuspec.0002.h5"], [57517, 13926, "HIP54906", "spliced_blc0001020304050607_guppi_57517_13926_HIP54906_0023.gpuspec.0002.h5"], [57517, 14269, "HIP54217", "spliced_blc0001020304050607_guppi_57517_14269_HIP54217_0024.gpuspec.0002.h5"], [57517, 14612, "HIP54906", "spliced_blc0001020304050607_guppi_57517_14612_HIP54906_0025.gpuspec.0002.h5"], [57517, 14946, "HIP54388", "spliced_blc0001020304050607_guppi_57517_14946_HIP54388_0026.gpuspec.0002.h5"], [57517, 15327, "HIP55846", "spliced_blc0001020304050607_guppi_57517_15327_HIP55846_0027.gpuspec.0002.h5"], [57517, 15666, "HIP54998", "spliced_blc0001020304050607_guppi_57517_15666_HIP54998_0028.gpuspec.0002.h5"], [57517, 16005, "HIP55846", "spliced_blc0001020304050607_guppi_57517_16005_HIP55846_0029.gpuspec.0002.h5"]] \ No newline at end of file diff --git a/papers/ml_signals/data/listing_AGBT16A_999_188.json b/papers/ml_signals/data/listing_AGBT16A_999_188.json new file mode 100644 index 0000000000000000000000000000000000000000..5b135b5e40490132f7743d6a1fd0671ffaef2d95 --- /dev/null +++ b/papers/ml_signals/data/listing_AGBT16A_999_188.json @@ -0,0 +1 @@ +[[57522, 10620, "DIAG_PSR_J1239%2B2453", "spliced_blc0001020304050607_guppi_57522_10620_DIAG_PSR_J1239%2B2453_0002.gpuspec.0002.h5"], [57522, 11008, "GJ473AB", "spliced_blc0001020304050607_guppi_57522_11008_GJ473AB_0003.gpuspec.0002.h5"], [57522, 11359, "HIP60272", "spliced_blc0001020304050607_guppi_57522_11359_HIP60272_0004.gpuspec.0002.h5"], [57522, 11709, "GJ473AB", "spliced_blc0001020304050607_guppi_57522_11709_GJ473AB_0005.gpuspec.0002.h5"], [57522, 12066, "HIP60325", "spliced_blc0001020304050607_guppi_57522_12066_HIP60325_0006.gpuspec.0002.h5"], [57522, 12423, "GJ473AB", "spliced_blc0001020304050607_guppi_57522_12423_GJ473AB_0007.gpuspec.0002.h5"], [57522, 12774, "HIP60510", "spliced_blc0001020304050607_guppi_57522_12774_HIP60510_0008.gpuspec.0002.h5"], [57522, 13197, "HIP56802", "spliced_blc0001020304050607_guppi_57522_13197_HIP56802_0009.gpuspec.0002.h5"], [57522, 13603, "HIP55875", "spliced_blc0001020304050607_guppi_57522_13603_HIP55875_0010.gpuspec.0002.h5"], [57522, 14009, "HIP56802", "spliced_blc0001020304050607_guppi_57522_14009_HIP56802_0011.gpuspec.0002.h5"], [57522, 14414, "HIP55884", "spliced_blc0001020304050607_guppi_57522_14414_HIP55884_0012.gpuspec.0002.h5"], [57522, 14818, "HIP56802", "spliced_blc0001020304050607_guppi_57522_14818_HIP56802_0013.gpuspec.0002.h5"], [57522, 15220, "HIP55937", "spliced_blc0001020304050607_guppi_57522_15220_HIP55937_0014.gpuspec.0002.h5"], [57522, 15605, "HIP59816", "spliced_blc0001020304050607_guppi_57522_15605_HIP59816_0015.gpuspec.0002.h5"], [57522, 15953, "HIP58843", "spliced_blc0001020304050607_guppi_57522_15953_HIP58843_0016.gpuspec.0002.h5"], [57522, 16652, "HIP58862", "spliced_blc0001020304050607_guppi_57522_16652_HIP58862_0018.gpuspec.0002.h5"], [57522, 17003, "HIP59816", "spliced_blc0001020304050607_guppi_57522_17003_HIP59816_0019.gpuspec.0002.h5"], [57522, 17354, "HIP58864", "spliced_blc0001020304050607_guppi_57522_17354_HIP58864_0020.gpuspec.0002.h5"], [57522, 17744, "HIP60759", "spliced_blc0001020304050607_guppi_57522_17744_HIP60759_0021.gpuspec.0002.h5"], [57522, 18089, "HIP59833", "spliced_blc0001020304050607_guppi_57522_18089_HIP59833_0022.gpuspec.0002.h5"], [57522, 18434, "HIP60759", "spliced_blc0001020304050607_guppi_57522_18434_HIP60759_0023.gpuspec.0002.h5"], [57522, 18787, "HIP59877", "spliced_blc0001020304050607_guppi_57522_18787_HIP59877_0024.gpuspec.0002.h5"], [57522, 19140, "HIP60759", "spliced_blc0001020304050607_guppi_57522_19140_HIP60759_0025.gpuspec.0002.h5"], [57522, 19489, "HIP59910", "spliced_blc0001020304050607_guppi_57522_19489_HIP59910_0026.gpuspec.0002.h5"], [57522, 19859, "HIP61099", "spliced_blc0001020304050607_guppi_57522_19859_HIP61099_0027.gpuspec.0002.h5"], [57522, 20213, "HIP60087", "spliced_blc0001020304050607_guppi_57522_20213_HIP60087_0028.gpuspec.0002.h5"], [57522, 20566, "HIP61099", "spliced_blc0001020304050607_guppi_57522_20566_HIP61099_0029.gpuspec.0002.h5"]] \ No newline at end of file diff --git a/papers/ml_signals/data/listing_AGBT16A_999_212.json b/papers/ml_signals/data/listing_AGBT16A_999_212.json new file mode 100644 index 0000000000000000000000000000000000000000..77ae8ebc66f34ab54b197e7d391c518e2203644c --- /dev/null +++ b/papers/ml_signals/data/listing_AGBT16A_999_212.json @@ -0,0 +1 @@ +[[57541, 55054, "HIP10644", "spliced_blc0001020304050607_guppi_57541_55054_HIP10644_0002.gpuspec.0002.h5"], [57541, 55424, "HIP10169", "spliced_blc0001020304050607_guppi_57541_55424_HIP10169_0003.gpuspec.0002.h5"], [57541, 55794, "HIP10644", "spliced_blc0001020304050607_guppi_57541_55794_HIP10644_0004.gpuspec.0002.h5"], [57541, 56163, "HIP10199", "spliced_blc0001020304050607_guppi_57541_56163_HIP10199_0005.gpuspec.0002.h5"], [57541, 56532, "HIP10644", "spliced_blc0001020304050607_guppi_57541_56532_HIP10644_0006.gpuspec.0002.h5"], [57541, 56902, "HIP10453", "spliced_blc0001020304050607_guppi_57541_56902_HIP10453_0007.gpuspec.0002.h5"], [57541, 57267, "HIP10670", "spliced_blc0001020304050607_guppi_57541_57267_HIP10670_0008.gpuspec.0002.h5"], [57541, 57630, "HIP10169", "spliced_blc0001020304050607_guppi_57541_57630_HIP10169_0009.gpuspec.0002.h5"], [57541, 57992, "HIP10670", "spliced_blc0001020304050607_guppi_57541_57992_HIP10670_0010.gpuspec.0002.h5"], [57541, 58354, "HIP10199", "spliced_blc0001020304050607_guppi_57541_58354_HIP10199_0011.gpuspec.0002.h5"], [57541, 58714, "HIP10670", "spliced_blc0001020304050607_guppi_57541_58714_HIP10670_0012.gpuspec.0002.h5"], [57541, 59084, "HIP11548", "spliced_blc0001020304050607_guppi_57541_59084_HIP11548_0013.gpuspec.0002.h5"], [57541, 59531, "HIP13402", "spliced_blc0001020304050607_guppi_57541_59531_HIP13402_0014.gpuspec.0002.h5"], [57541, 59890, "HIP12402", "spliced_blc0001020304050607_guppi_57541_59890_HIP12402_0015.gpuspec.0002.h5"], [57541, 60248, "HIP13402", "spliced_blc0001020304050607_guppi_57541_60248_HIP13402_0016.gpuspec.0002.h5"], [57541, 60602, "HIP12482", "spliced_blc0001020304050607_guppi_57541_60602_HIP12482_0017.gpuspec.0002.h5"], [57541, 60955, "HIP13402", "spliced_blc0001020304050607_guppi_57541_60955_HIP13402_0018.gpuspec.0002.h5"], [57541, 61313, "HIP12549", "spliced_blc0001020304050607_guppi_57541_61313_HIP12549_0019.gpuspec.0002.h5"], [57541, 61711, "HIP21556", "spliced_blc0001020304050607_guppi_57541_61711_HIP21556_0020.gpuspec.0002.h5"], [57541, 62066, "HIP20806", "spliced_blc0001020304050607_guppi_57541_62066_HIP20806_0021.gpuspec.0002.h5"], [57541, 62422, "HIP21556", "spliced_blc0001020304050607_guppi_57541_62422_HIP21556_0022.gpuspec.0002.h5"], [57541, 62773, "HIP21210", "spliced_blc0001020304050607_guppi_57541_62773_HIP21210_0023.gpuspec.0002.h5"], [57541, 63124, "HIP21556", "spliced_blc0001020304050607_guppi_57541_63124_HIP21556_0024.gpuspec.0002.h5"], [57541, 63477, "HIP21222", "spliced_blc0001020304050607_guppi_57541_63477_HIP21222_0025.gpuspec.0002.h5"], [57541, 63820, "HIP21594", "spliced_blc0001020304050607_guppi_57541_63820_HIP21594_0026.gpuspec.0002.h5"], [57541, 64171, "HIP20761", "spliced_blc0001020304050607_guppi_57541_64171_HIP20761_0027.gpuspec.0002.h5"], [57541, 64523, "HIP21594", "spliced_blc0001020304050607_guppi_57541_64523_HIP21594_0028.gpuspec.0002.h5"]] \ No newline at end of file diff --git a/papers/ml_signals/data/listing_AGBT16A_999_213.json b/papers/ml_signals/data/listing_AGBT16A_999_213.json new file mode 100644 index 0000000000000000000000000000000000000000..eebb485cf62629366ff4e5b18ad38bdb2f1a7f08 --- /dev/null +++ b/papers/ml_signals/data/listing_AGBT16A_999_213.json @@ -0,0 +1 @@ +[[57542, 83841, "DIAG_PSR_J0820-1350", "spliced_blc0001020304050607_guppi_57542_83841_DIAG_PSR_J0820-1350_0002.gpuspec.0002.h5"], [57542, 84369, "GJ411", "spliced_blc0001020304050607_guppi_57542_84369_GJ411_0003.gpuspec.0002.h5"], [57542, 84744, "HIP52936", "spliced_blc0001020304050607_guppi_57542_84744_HIP52936_0004.gpuspec.0002.h5"], [57542, 85092, "GJ411", "spliced_blc0001020304050607_guppi_57542_85092_GJ411_0005.gpuspec.0002.h5"], [57542, 85446, "HIP52941", "spliced_blc0001020304050607_guppi_57542_85446_HIP52941_0006.gpuspec.0002.h5"], [57542, 85812, "GJ411", "spliced_blc0001020304050607_guppi_57542_85812_GJ411_0007.gpuspec.0002.h5"], [57542, 86169, "HIP53002", "spliced_blc0001020304050607_guppi_57542_86169_HIP53002_0008.gpuspec.0002.h5"], [57543, 151, "HIP46843", "spliced_blc0001020304050607_guppi_57543_00151_HIP46843_0009.gpuspec.0002.h5"], [57543, 498, "HIP45671", "spliced_blc0001020304050607_guppi_57543_00498_HIP45671_0010.gpuspec.0002.h5"], [57543, 844, "HIP46843", "spliced_blc0001020304050607_guppi_57543_00844_HIP46843_0011.gpuspec.0002.h5"], [57543, 1187, "HIP45844", "spliced_blc0001020304050607_guppi_57543_01187_HIP45844_0012.gpuspec.0002.h5"], [57543, 1530, "HIP46843", "spliced_blc0001020304050607_guppi_57543_01530_HIP46843_0013.gpuspec.0002.h5"], [57543, 1870, "HIP45954", "spliced_blc0001020304050607_guppi_57543_01870_HIP45954_0014.gpuspec.0002.h5"], [57543, 2240, "HIP47080", "spliced_blc0001020304050607_guppi_57543_02240_HIP47080_0015.gpuspec.0002.h5"], [57543, 2588, "HIP46135", "spliced_blc0001020304050607_guppi_57543_02588_HIP46135_0016.gpuspec.0002.h5"], [57543, 2935, "HIP47080", "spliced_blc0001020304050607_guppi_57543_02935_HIP47080_0017.gpuspec.0002.h5"], [57543, 3276, "HIP46174", "spliced_blc0001020304050607_guppi_57543_03276_HIP46174_0018.gpuspec.0002.h5"], [57543, 3617, "HIP47080", "spliced_blc0001020304050607_guppi_57543_03617_HIP47080_0019.gpuspec.0002.h5"], [57543, 3970, "HIP46269", "spliced_blc0001020304050607_guppi_57543_03970_HIP46269_0020.gpuspec.0002.h5"], [57543, 4323, "HIP47201", "spliced_blc0001020304050607_guppi_57543_04323_HIP47201_0021.gpuspec.0002.h5"], [57543, 4666, "HIP46100", "spliced_blc0001020304050607_guppi_57543_04666_HIP46100_0022.gpuspec.0002.h5"], [57543, 5009, "HIP47201", "spliced_blc0001020304050607_guppi_57543_05009_HIP47201_0023.gpuspec.0002.h5"], [57543, 5349, "HIP46272", "spliced_blc0001020304050607_guppi_57543_05349_HIP46272_0024.gpuspec.0002.h5"], [57543, 5689, "HIP47201", "spliced_blc0001020304050607_guppi_57543_05689_HIP47201_0025.gpuspec.0002.h5"], [57543, 6028, "HIP46304", "spliced_blc0001020304050607_guppi_57543_06028_HIP46304_0026.gpuspec.0002.h5"], [57543, 6379, "HIP47513", "spliced_blc0001020304050607_guppi_57543_06379_HIP47513_0027.gpuspec.0002.h5"], [57543, 6729, "HIP46367", "spliced_blc0001020304050607_guppi_57543_06729_HIP46367_0028.gpuspec.0002.h5"], [57543, 7078, "HIP47513", "spliced_blc0001020304050607_guppi_57543_07078_HIP47513_0029.gpuspec.0002.h5"], [57543, 7425, "HIP46447", "spliced_blc0001020304050607_guppi_57543_07425_HIP46447_0030.gpuspec.0002.h5"], [57543, 7772, "HIP47513", "spliced_blc0001020304050607_guppi_57543_07772_HIP47513_0031.gpuspec.0002.h5"], [57543, 8116, "HIP46454", "spliced_blc0001020304050607_guppi_57543_08116_HIP46454_0032.gpuspec.0002.h5"], [57543, 8647, "HIP62207", "spliced_blc0001020304050607_guppi_57543_08647_HIP62207_0033.gpuspec.0002.h5"], [57543, 9023, "HIP61072", "spliced_blc0001020304050607_guppi_57543_09023_HIP61072_0034.gpuspec.0002.h5"], [57543, 9397, "HIP62207", "spliced_blc0001020304050607_guppi_57543_09397_HIP62207_0035.gpuspec.0002.h5"], [57543, 9782, "HIP61074", "spliced_blc0001020304050607_guppi_57543_09782_HIP61074_0036.gpuspec.0002.h5"], [57543, 10165, "HIP62207", "spliced_blc0001020304050607_guppi_57543_10165_HIP62207_0037.gpuspec.0002.h5"], [57543, 10527, "HIP61114", "spliced_blc0001020304050607_guppi_57543_10527_HIP61114_0038.gpuspec.0002.h5"], [57543, 10898, "HIP66459", "spliced_blc0001020304050607_guppi_57543_10898_HIP66459_0039.gpuspec.0002.h5"], [57543, 11264, "HIP65343", "spliced_blc0001020304050607_guppi_57543_11264_HIP65343_0040.gpuspec.0002.h5"], [57543, 11629, "HIP66459", "spliced_blc0001020304050607_guppi_57543_11629_HIP66459_0041.gpuspec.0002.h5"], [57543, 12010, "HIP65430", "spliced_blc0001020304050607_guppi_57543_12010_HIP65430_0042.gpuspec.0002.h5"], [57543, 12389, "HIP66459", "spliced_blc0001020304050607_guppi_57543_12389_HIP66459_0043.gpuspec.0002.h5"], [57543, 12765, "HIP65451", "spliced_blc0001020304050607_guppi_57543_12765_HIP65451_0044.gpuspec.0002.h5"], [57543, 13131, "HIP68337", "spliced_blc0001020304050607_guppi_57543_13131_HIP68337_0045.gpuspec.0002.h5"], [57543, 13494, "HIP67120", "spliced_blc0001020304050607_guppi_57543_13494_HIP67120_0046.gpuspec.0002.h5"], [57543, 13856, "HIP68337", "spliced_blc0001020304050607_guppi_57543_13856_HIP68337_0047.gpuspec.0002.h5"], [57543, 14204, "HIP67142", "spliced_blc0001020304050607_guppi_57543_14204_HIP67142_0048.gpuspec.0002.h5"], [57543, 14552, "HIP68337", "spliced_blc0001020304050607_guppi_57543_14552_HIP68337_0049.gpuspec.0002.h5"], [57543, 14904, "HIP67155", "spliced_blc0001020304050607_guppi_57543_14904_HIP67155_0050.gpuspec.0002.h5"], [57543, 15275, "HIP68469", "spliced_blc0001020304050607_guppi_57543_15275_HIP68469_0051.gpuspec.0002.h5"], [57543, 15628, "HIP67315", "spliced_blc0001020304050607_guppi_57543_15628_HIP67315_0052.gpuspec.0002.h5"], [57543, 15981, "HIP68469", "spliced_blc0001020304050607_guppi_57543_15981_HIP68469_0053.gpuspec.0002.h5"], [57543, 16336, "HIP67344", "spliced_blc0001020304050607_guppi_57543_16336_HIP67344_0054.gpuspec.0002.h5"], [57543, 16691, "HIP68469", "spliced_blc0001020304050607_guppi_57543_16691_HIP68469_0055.gpuspec.0002.h5"], [57543, 17047, "HIP67369", "spliced_blc0001020304050607_guppi_57543_17047_HIP67369_0056.gpuspec.0002.h5"], [57543, 17448, "HIP68634", "spliced_blc0001020304050607_guppi_57543_17448_HIP68634_0057.gpuspec.0002.h5"]] \ No newline at end of file diff --git a/papers/ml_signals/data/listing_AGBT16A_999_215.json b/papers/ml_signals/data/listing_AGBT16A_999_215.json new file mode 100644 index 0000000000000000000000000000000000000000..50d6c12dbc6e4c146fdb522677a9431f667409b4 --- /dev/null +++ b/papers/ml_signals/data/listing_AGBT16A_999_215.json @@ -0,0 +1 @@ +[[57544, 40295, "DIAG_PSR_J1939%2B2134", "spliced_blc0001020304050607_guppi_57544_40295_DIAG_PSR_J1939%2B2134_0002.gpuspec.0002.h5"], [57544, 40783, "HIP115142", "spliced_blc0001020304050607_guppi_57544_40783_HIP115142_0003.gpuspec.0002.h5"], [57544, 41139, "HIP113631", "spliced_blc0001020304050607_guppi_57544_41139_HIP113631_0004.gpuspec.0002.h5"], [57544, 41495, "HIP115142", "spliced_blc0001020304050607_guppi_57544_41495_HIP115142_0005.gpuspec.0002.h5"], [57544, 41842, "HIP113769", "spliced_blc0001020304050607_guppi_57544_41842_HIP113769_0006.gpuspec.0002.h5"], [57544, 42189, "HIP115142", "spliced_blc0001020304050607_guppi_57544_42189_HIP115142_0007.gpuspec.0002.h5"], [57544, 42540, "HIP113771", "spliced_blc0001020304050607_guppi_57544_42540_HIP113771_0008.gpuspec.0002.h5"], [57544, 42886, "HIP115445", "spliced_blc0001020304050607_guppi_57544_42886_HIP115445_0009.gpuspec.0002.h5"], [57544, 43238, "HIP114042", "spliced_blc0001020304050607_guppi_57544_43238_HIP114042_0010.gpuspec.0002.h5"], [57544, 43591, "HIP115445", "spliced_blc0001020304050607_guppi_57544_43591_HIP115445_0011.gpuspec.0002.h5"], [57544, 43948, "HIP114111", "spliced_blc0001020304050607_guppi_57544_43948_HIP114111_0012.gpuspec.0002.h5"], [57544, 44305, "HIP115445", "spliced_blc0001020304050607_guppi_57544_44305_HIP115445_0013.gpuspec.0002.h5"], [57544, 44663, "HIP114137", "spliced_blc0001020304050607_guppi_57544_44663_HIP114137_0014.gpuspec.0002.h5"], [57544, 45061, "HIP115738", "spliced_blc0001020304050607_guppi_57544_45061_HIP115738_0015.gpuspec.0002.h5"], [57544, 45411, "HIP114223", "spliced_blc0001020304050607_guppi_57544_45411_HIP114223_0016.gpuspec.0002.h5"], [57544, 45761, "HIP115738", "spliced_blc0001020304050607_guppi_57544_45761_HIP115738_0017.gpuspec.0002.h5"], [57544, 46119, "HIP114257", "spliced_blc0001020304050607_guppi_57544_46119_HIP114257_0018.gpuspec.0002.h5"], [57544, 46477, "HIP115738", "spliced_blc0001020304050607_guppi_57544_46477_HIP115738_0019.gpuspec.0002.h5"], [57544, 46841, "HIP114330", "spliced_blc0001020304050607_guppi_57544_46841_HIP114330_0020.gpuspec.0002.h5"], [57544, 47204, "HIP114233", "spliced_blc0001020304050607_guppi_57544_47204_HIP114233_0021.gpuspec.0002.h5"], [57544, 47557, "HIP112662", "spliced_blc0001020304050607_guppi_57544_47557_HIP112662_0022.gpuspec.0002.h5"], [57544, 47910, "HIP114233", "spliced_blc0001020304050607_guppi_57544_47910_HIP114233_0023.gpuspec.0002.h5"], [57544, 48263, "HIP112669", "spliced_blc0001020304050607_guppi_57544_48263_HIP112669_0024.gpuspec.0002.h5"], [57544, 48616, "HIP114233", "spliced_blc0001020304050607_guppi_57544_48616_HIP114233_0025.gpuspec.0002.h5"], [57544, 48967, "HIP112742", "spliced_blc0001020304050607_guppi_57544_48967_HIP112742_0026.gpuspec.0002.h5"], [57544, 49383, "HIP114886", "spliced_blc0001020304050607_guppi_57544_49383_HIP114886_0027.gpuspec.0002.h5"], [57544, 49732, "HIP113336", "spliced_blc0001020304050607_guppi_57544_49732_HIP113336_0028.gpuspec.0002.h5"], [57544, 50080, "HIP114886", "spliced_blc0001020304050607_guppi_57544_50080_HIP114886_0029.gpuspec.0002.h5"], [57544, 50437, "HIP113357", "spliced_blc0001020304050607_guppi_57544_50437_HIP113357_0030.gpuspec.0002.h5"], [57544, 50793, "HIP114886", "spliced_blc0001020304050607_guppi_57544_50793_HIP114886_0031.gpuspec.0002.h5"], [57544, 51142, "HIP113384", "spliced_blc0001020304050607_guppi_57544_51142_HIP113384_0032.gpuspec.0002.h5"], [57544, 51645, "HIP13402", "spliced_blc0001020304050607_guppi_57544_51645_HIP13402_0033.gpuspec.0002.h5"], [57544, 51992, "HIP11915", "spliced_blc0001020304050607_guppi_57544_51992_HIP11915_0034.gpuspec.0002.h5"], [57544, 52338, "HIP13402", "spliced_blc0001020304050607_guppi_57544_52338_HIP13402_0035.gpuspec.0002.h5"], [57544, 52683, "HIP12005", "spliced_blc0001020304050607_guppi_57544_52683_HIP12005_0036.gpuspec.0002.h5"], [57544, 53028, "HIP13402", "spliced_blc0001020304050607_guppi_57544_53028_HIP13402_0037.gpuspec.0002.h5"], [57544, 53376, "HIP12038", "spliced_blc0001020304050607_guppi_57544_53376_HIP12038_0038.gpuspec.0002.h5"], [57544, 53771, "HIP12493", "spliced_blc0001020304050607_guppi_57544_53771_HIP12493_0039.gpuspec.0002.h5"], [57544, 54124, "HIP11000", "spliced_blc0001020304050607_guppi_57544_54124_HIP11000_0040.gpuspec.0002.h5"], [57544, 54478, "HIP12493", "spliced_blc0001020304050607_guppi_57544_54478_HIP12493_0041.gpuspec.0002.h5"], [57544, 54845, "HIP11029", "spliced_blc0001020304050607_guppi_57544_54845_HIP11029_0042.gpuspec.0002.h5"], [57544, 55212, "HIP12493", "spliced_blc0001020304050607_guppi_57544_55212_HIP12493_0043.gpuspec.0002.h5"], [57544, 55579, "HIP11124", "spliced_blc0001020304050607_guppi_57544_55579_HIP11124_0044.gpuspec.0002.h5"], [57544, 55945, "HIP12530", "spliced_blc0001020304050607_guppi_57544_55945_HIP12530_0045.gpuspec.0002.h5"], [57544, 56311, "HIP11124", "spliced_blc0001020304050607_guppi_57544_56311_HIP11124_0046.gpuspec.0002.h5"], [57544, 56677, "HIP12530", "spliced_blc0001020304050607_guppi_57544_56677_HIP12530_0047.gpuspec.0002.h5"], [57544, 57034, "HIP11136", "spliced_blc0001020304050607_guppi_57544_57034_HIP11136_0048.gpuspec.0002.h5"], [57544, 57391, "HIP12530", "spliced_blc0001020304050607_guppi_57544_57391_HIP12530_0049.gpuspec.0002.h5"], [57544, 57743, "HIP11139", "spliced_blc0001020304050607_guppi_57544_57743_HIP11139_0050.gpuspec.0002.h5"], [57544, 58175, "HIP13081", "spliced_blc0001020304050607_guppi_57544_58175_HIP13081_0051.gpuspec.0002.h5"], [57544, 58540, "HIP11619", "spliced_blc0001020304050607_guppi_57544_58540_HIP11619_0052.gpuspec.0002.h5"], [57544, 58904, "HIP13081", "spliced_blc0001020304050607_guppi_57544_58904_HIP13081_0053.gpuspec.0002.h5"], [57544, 59256, "HIP11678", "spliced_blc0001020304050607_guppi_57544_59256_HIP11678_0054.gpuspec.0002.h5"], [57544, 59608, "HIP13081", "spliced_blc0001020304050607_guppi_57544_59608_HIP13081_0055.gpuspec.0002.h5"], [57544, 59957, "HIP11686", "spliced_blc0001020304050607_guppi_57544_59957_HIP11686_0056.gpuspec.0002.h5"], [57544, 60332, "HIP13375", "spliced_blc0001020304050607_guppi_57544_60332_HIP13375_0057.gpuspec.0002.h5"], [57544, 60698, "HIP11993", "spliced_blc0001020304050607_guppi_57544_60698_HIP11993_0058.gpuspec.0002.h5"]] \ No newline at end of file diff --git a/papers/ml_signals/data/listing_AGBT16B_999_105.json b/papers/ml_signals/data/listing_AGBT16B_999_105.json new file mode 100644 index 0000000000000000000000000000000000000000..f214533512a63b16cfe74f6812a2f00c2bcb5f3a --- /dev/null +++ b/papers/ml_signals/data/listing_AGBT16B_999_105.json @@ -0,0 +1 @@ +[[57752, 71642, "DIAG_PSR_J2013%2B3845", "spliced_blc0001020304050607_guppi_57752_71642_DIAG_PSR_J2013%2B3845_0002.gpuspec.0002.h5"], [57752, 72187, "HIP114622", "spliced_blc0001020304050607_guppi_57752_72187_HIP114622_0003.gpuspec.0002.h5"], [57752, 72531, "HIP115104", "spliced_blc0001020304050607_guppi_57752_72531_HIP115104_0004.gpuspec.0002.h5"], [57752, 72875, "HIP114622", "spliced_blc0001020304050607_guppi_57752_72875_HIP114622_0005.gpuspec.0002.h5"], [57752, 73221, "HIP115186", "spliced_blc0001020304050607_guppi_57752_73221_HIP115186_0006.gpuspec.0002.h5"], [57752, 73566, "HIP114622", "spliced_blc0001020304050607_guppi_57752_73566_HIP114622_0007.gpuspec.0002.h5"], [57752, 73910, "HIP115508", "spliced_blc0001020304050607_guppi_57752_73910_HIP115508_0008.gpuspec.0002.h5"], [57752, 74294, "HIP117712", "spliced_blc0001020304050607_guppi_57752_74294_HIP117712_0009.gpuspec.0002.h5"], [57752, 74639, "HIP116666", "spliced_blc0001020304050607_guppi_57752_74639_HIP116666_0010.gpuspec.0002.h5"], [57752, 74983, "HIP117712", "spliced_blc0001020304050607_guppi_57752_74983_HIP117712_0011.gpuspec.0002.h5"], [57752, 75328, "HIP117172", "spliced_blc0001020304050607_guppi_57752_75328_HIP117172_0012.gpuspec.0002.h5"], [57752, 75673, "HIP117712", "spliced_blc0001020304050607_guppi_57752_75673_HIP117712_0013.gpuspec.0002.h5"], [57752, 76017, "HIP117376", "spliced_blc0001020304050607_guppi_57752_76017_HIP117376_0014.gpuspec.0002.h5"], [57752, 76405, "HIP117795", "spliced_blc0001020304050607_guppi_57752_76405_HIP117795_0015.gpuspec.0002.h5"], [57752, 76764, "HIP116707", "spliced_blc0001020304050607_guppi_57752_76764_HIP116707_0016.gpuspec.0002.h5"], [57752, 77122, "HIP117795", "spliced_blc0001020304050607_guppi_57752_77122_HIP117795_0017.gpuspec.0002.h5"], [57752, 77474, "HIP116944", "spliced_blc0001020304050607_guppi_57752_77474_HIP116944_0018.gpuspec.0002.h5"], [57752, 77825, "HIP117795", "spliced_blc0001020304050607_guppi_57752_77825_HIP117795_0019.gpuspec.0002.h5"], [57752, 78176, "HIP117217", "spliced_blc0001020304050607_guppi_57752_78176_HIP117217_0020.gpuspec.0002.h5"], [57752, 78580, "HIP118212", "spliced_blc0001020304050607_guppi_57752_78580_HIP118212_0021.gpuspec.0002.h5"], [57752, 78958, "HIP117207", "spliced_blc0001020304050607_guppi_57752_78958_HIP117207_0022.gpuspec.0002.h5"], [57752, 79336, "HIP118212", "spliced_blc0001020304050607_guppi_57752_79336_HIP118212_0023.gpuspec.0002.h5"], [57752, 79709, "HIP117286", "spliced_blc0001020304050607_guppi_57752_79709_HIP117286_0024.gpuspec.0002.h5"], [57752, 80082, "HIP118212", "spliced_blc0001020304050607_guppi_57752_80082_HIP118212_0025.gpuspec.0002.h5"], [57752, 80454, "HIP117334", "spliced_blc0001020304050607_guppi_57752_80454_HIP117334_0026.gpuspec.0002.h5"], [57752, 80887, "HIP98906", "spliced_blc0001020304050607_guppi_57752_80887_HIP98906_0027.gpuspec.0002.h5"], [57752, 81232, "HIP100055", "spliced_blc0001020304050607_guppi_57752_81232_HIP100055_0028.gpuspec.0002.h5"], [57752, 81577, "HIP98906", "spliced_blc0001020304050607_guppi_57752_81577_HIP98906_0029.gpuspec.0002.h5"], [57752, 81929, "HIP97653", "spliced_blc0001020304050607_guppi_57752_81929_HIP97653_0030.gpuspec.0002.h5"], [57752, 82281, "HIP98906", "spliced_blc0001020304050607_guppi_57752_82281_HIP98906_0031.gpuspec.0002.h5"], [57752, 82632, "HIP97870", "spliced_blc0001020304050607_guppi_57752_82632_HIP97870_0032.gpuspec.0002.h5"], [57752, 83026, "HIP99427", "spliced_blc0001020304050607_guppi_57752_83026_HIP99427_0033.gpuspec.0002.h5"], [57752, 83371, "HIP100670", "spliced_blc0001020304050607_guppi_57752_83371_HIP100670_0034.gpuspec.0002.h5"], [57752, 83716, "HIP99427", "spliced_blc0001020304050607_guppi_57752_83716_HIP99427_0035.gpuspec.0002.h5"], [57752, 84066, "HIP99560", "spliced_blc0001020304050607_guppi_57752_84066_HIP99560_0036.gpuspec.0002.h5"], [57752, 84416, "HIP99427", "spliced_blc0001020304050607_guppi_57752_84416_HIP99427_0037.gpuspec.0002.h5"], [57752, 84766, "HIP99759", "spliced_blc0001020304050607_guppi_57752_84766_HIP99759_0038.gpuspec.0002.h5"], [57752, 85465, "HIP9153", "spliced_blc0001020304050607_guppi_57752_85465_HIP9153_0039.gpuspec.0002.h5"], [57752, 85832, "HIP10053", "spliced_blc0001020304050607_guppi_57752_85832_HIP10053_0040.gpuspec.0002.h5"], [57752, 86200, "HIP9153", "spliced_blc0001020304050607_guppi_57752_86200_HIP9153_0041.gpuspec.0002.h5"], [57753, 171, "HIP10098", "spliced_blc0001020304050607_guppi_57753_00171_HIP10098_0042.gpuspec.0002.h5"], [57753, 542, "HIP9153", "spliced_blc0001020304050607_guppi_57753_00542_HIP9153_0043.gpuspec.0002.h5"], [57753, 915, "HIP10221", "spliced_blc0001020304050607_guppi_57753_00915_HIP10221_0044.gpuspec.0002.h5"], [57753, 1276, "HIP9269", "spliced_blc0001020304050607_guppi_57753_01276_HIP9269_0045.gpuspec.0002.h5"], [57753, 1679, "HIP10022", "spliced_blc0001020304050607_guppi_57753_01679_HIP10022_0046.gpuspec.0002.h5"], [57753, 2092, "HIP9269", "spliced_blc0001020304050607_guppi_57753_02092_HIP9269_0047.gpuspec.0002.h5"], [57753, 2493, "HIP10064", "spliced_blc0001020304050607_guppi_57753_02493_HIP10064_0048.gpuspec.0002.h5"], [57753, 2889, "HIP9269", "spliced_blc0001020304050607_guppi_57753_02889_HIP9269_0049.gpuspec.0002.h5"], [57753, 3300, "HIP8194", "spliced_blc0001020304050607_guppi_57753_03300_HIP8194_0050.gpuspec.0002.h5"], [57753, 3792, "HIP9716", "spliced_blc0001020304050607_guppi_57753_03792_HIP9716_0051.gpuspec.0002.h5"], [57753, 4131, "HIP10072", "spliced_blc0001020304050607_guppi_57753_04131_HIP10072_0052.gpuspec.0002.h5"], [57753, 4470, "HIP9716", "spliced_blc0001020304050607_guppi_57753_04470_HIP9716_0053.gpuspec.0002.h5"], [57753, 4816, "HIP10444", "spliced_blc0001020304050607_guppi_57753_04816_HIP10444_0054.gpuspec.0002.h5"], [57753, 5162, "HIP9716", "spliced_blc0001020304050607_guppi_57753_05162_HIP9716_0055.gpuspec.0002.h5"], [57753, 5509, "HIP10646", "spliced_blc0001020304050607_guppi_57753_05509_HIP10646_0056.gpuspec.0002.h5"], [57753, 5858, "HIP9724", "spliced_blc0001020304050607_guppi_57753_05858_HIP9724_0057.gpuspec.0002.h5"]] \ No newline at end of file diff --git a/papers/ml_signals/data/stars.json b/papers/ml_signals/data/stars.json new file mode 100644 index 0000000000000000000000000000000000000000..bdeae8e3ae2af731aefde3bd2fd13c01851ea189 --- /dev/null +++ b/papers/ml_signals/data/stars.json @@ -0,0 +1,22 @@ +{ + "HIP118212": [ + 359.6812006710607, + 46.7290936826221 + ], + "HIP13402": [ + 43.13386744000459, + -12.769713348950832 + ], + "HIP54677": [ + 167.8881203565775, + -14.991368496247503 + ], + "HIP56802": [ + 174.66674200322, + -13.20193923808 + ], + "HIP62207": [ + 191.24752068427662, + 39.27891614786027 + ] +} \ No newline at end of file diff --git a/papers/ml_signals/data/table.json b/papers/ml_signals/data/table.json new file mode 100644 index 0000000000000000000000000000000000000000..a728718b0116bc1d8bab37f0c899d0b87e03aff6 --- /dev/null +++ b/papers/ml_signals/data/table.json @@ -0,0 +1,765 @@ +[ + { + "tag": "MLc1", + "star": "HIP13402", + "session": "AGBT16A_999_212", + "f0": 1188.539231, + "drift_tabulated": 1.11, + "mhz": 1188.537163, + "drift": -0.9737, + "t0": 57541.695924691834, + "on_snr": [ + 10.6, + 9.8, + 5.9 + ], + "on_line": [ + 3.8, + 7.1, + 3.43 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57541_59890_HIP12402_0015.gpuspec.0002.h5", + "on_line": 2.16, + "null_mean": 0.27, + "null_std": 0.7, + "as_high": 1, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57541_60602_HIP12482_0017.gpuspec.0002.h5", + "on_line": 0.23, + "null_mean": 0.21, + "null_std": 0.7, + "as_high": 96, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57541_61313_HIP12549_0019.gpuspec.0002.h5", + "on_line": 0.07, + "null_mean": 0.21, + "null_std": 0.68, + "as_high": 109, + "null_n": 200 + } + ], + "off_z": 1.5, + "other": [], + "scans": 27, + "failed": 0 + }, + { + "tag": "MLc2", + "star": "HIP118212", + "session": "AGBT16B_999_105", + "f0": 1347.862244, + "drift_tabulated": -0.44, + "mhz": 1347.862123, + "drift": 0.4255, + "t0": 57752.92167684734, + "on_snr": [ + 9.6, + 34.6, + 25.4 + ], + "on_line": [ + 1.98, + 10.65, + 8.77 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57752_78958_HIP117207_0022.gpuspec.0002.h5", + "on_line": 2.42, + "null_mean": 0.18, + "null_std": 0.63, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57752_79709_HIP117286_0024.gpuspec.0002.h5", + "on_line": 2.19, + "null_mean": 0.21, + "null_std": 0.66, + "as_high": 1, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57752_80454_HIP117334_0026.gpuspec.0002.h5", + "on_line": 2.75, + "null_mean": 0.26, + "null_std": 0.64, + "as_high": 0, + "null_n": 200 + } + ], + "off_z": 6.0, + "other": [], + "scans": 56, + "failed": 0 + }, + { + "tag": "MLc3", + "star": "HIP62207", + "session": "AGBT16A_999_213", + "f0": 1351.62541, + "drift_tabulated": -0.05, + "mhz": 1351.623687, + "drift": 0.0558, + "t0": 57543.110496409645, + "on_snr": [ + 55.2, + 66.6, + 31.9 + ], + "on_line": [ + 27.9, + 25.36, + 12.17 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57543_09023_HIP61072_0034.gpuspec.0002.h5", + "on_line": 3.78, + "null_mean": 0.03, + "null_std": 0.38, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_09782_HIP61074_0036.gpuspec.0002.h5", + "on_line": 1.57, + "null_mean": 0.08, + "null_std": 0.41, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_10527_HIP61114_0038.gpuspec.0002.h5", + "on_line": 2.94, + "null_mean": 0.09, + "null_std": 0.44, + "as_high": 0, + "null_n": 200 + } + ], + "off_z": 11.5, + "other": [ + { + "file": "spliced_blc0001020304050607_guppi_57542_83841_DIAG_PSR_J0820-1350_0002.gpuspec.0002.h5", + "target": "DIAG_PSR_J0820-1350", + "on": null, + "hours": -3.32, + "snr": 30.2 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_01870_HIP45954_0014.gpuspec.0002.h5", + "target": "HIP45954", + "on": false, + "hours": -2.09, + "snr": 8.6 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_02240_HIP47080_0015.gpuspec.0002.h5", + "target": "HIP47080", + "on": true, + "hours": -1.99, + "snr": 27.2 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_02935_HIP47080_0017.gpuspec.0002.h5", + "target": "HIP47080", + "on": true, + "hours": -1.8, + "snr": 35.8 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_03276_HIP46174_0018.gpuspec.0002.h5", + "target": "HIP46174", + "on": false, + "hours": -1.7, + "snr": 30.2 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_03617_HIP47080_0019.gpuspec.0002.h5", + "target": "HIP47080", + "on": true, + "hours": -1.61, + "snr": 11.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_04666_HIP46100_0022.gpuspec.0002.h5", + "target": "HIP46100", + "on": false, + "hours": -1.32, + "snr": 9.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_05689_HIP47201_0025.gpuspec.0002.h5", + "target": "HIP47201", + "on": true, + "hours": -1.03, + "snr": 11.3 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_06028_HIP46304_0026.gpuspec.0002.h5", + "target": "HIP46304", + "on": false, + "hours": -0.94, + "snr": 12.9 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_06379_HIP47513_0027.gpuspec.0002.h5", + "target": "HIP47513", + "on": true, + "hours": -0.84, + "snr": 34.6 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_06729_HIP46367_0028.gpuspec.0002.h5", + "target": "HIP46367", + "on": false, + "hours": -0.74, + "snr": 38.1 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_07078_HIP47513_0029.gpuspec.0002.h5", + "target": "HIP47513", + "on": true, + "hours": -0.65, + "snr": 48.1 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_07425_HIP46447_0030.gpuspec.0002.h5", + "target": "HIP46447", + "on": false, + "hours": -0.55, + "snr": 64.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_07772_HIP47513_0031.gpuspec.0002.h5", + "target": "HIP47513", + "on": true, + "hours": -0.45, + "snr": 60.7 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_08116_HIP46454_0032.gpuspec.0002.h5", + "target": "HIP46454", + "on": false, + "hours": -0.36, + "snr": 176.7 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_09023_HIP61072_0034.gpuspec.0002.h5", + "target": "HIP61072", + "on": false, + "hours": -0.11, + "snr": 9.8 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_11629_HIP66459_0041.gpuspec.0002.h5", + "target": "HIP66459", + "on": true, + "hours": 0.62, + "snr": 9.1 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_12389_HIP66459_0043.gpuspec.0002.h5", + "target": "HIP66459", + "on": true, + "hours": 0.83, + "snr": 11.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_12765_HIP65451_0044.gpuspec.0002.h5", + "target": "HIP65451", + "on": false, + "hours": 0.93, + "snr": 8.3 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_15275_HIP68469_0051.gpuspec.0002.h5", + "target": "HIP68469", + "on": true, + "hours": 1.63, + "snr": 21.3 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_15628_HIP67315_0052.gpuspec.0002.h5", + "target": "HIP67315", + "on": false, + "hours": 1.73, + "snr": 25.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_15981_HIP68469_0053.gpuspec.0002.h5", + "target": "HIP68469", + "on": true, + "hours": 1.83, + "snr": 25.2 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_16336_HIP67344_0054.gpuspec.0002.h5", + "target": "HIP67344", + "on": false, + "hours": 1.93, + "snr": 13.0 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_16691_HIP68469_0055.gpuspec.0002.h5", + "target": "HIP68469", + "on": true, + "hours": 2.02, + "snr": 86.6 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_17047_HIP67369_0056.gpuspec.0002.h5", + "target": "HIP67369", + "on": false, + "hours": 2.12, + "snr": 41.6 + } + ], + "scans": 56, + "failed": 0 + }, + { + "tag": "MLc4", + "star": "HIP54677", + "session": "AGBT16A_999_182", + "f0": 1372.987594, + "drift_tabulated": -0.11, + "mhz": 1372.984569, + "drift": 0.1239, + "t0": 57517.11259632844, + "on_snr": [ + 40.8, + 22.4, + 18.9 + ], + "on_line": [ + 28.37, + 15.21, + 13.3 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57517_09209_HIP53759_0010.gpuspec.0002.h5", + "on_line": 2.5, + "null_mean": 0.1, + "null_std": 0.39, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_10032_HIP53820_0012.gpuspec.0002.h5", + "on_line": 1.64, + "null_mean": 0.15, + "null_std": 0.49, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_10836_HIP53839_0014.gpuspec.0002.h5", + "on_line": -0.05, + "null_mean": 0.1, + "null_std": 0.43, + "as_high": 126, + "null_n": 200 + } + ], + "off_z": 5.1, + "other": [ + { + "file": "spliced_blc0001020304050607_guppi_57517_15327_HIP55846_0027.gpuspec.0002.h5", + "target": "HIP55846", + "on": null, + "hours": 1.6, + "snr": 24.2 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_15666_HIP54998_0028.gpuspec.0002.h5", + "target": "HIP54998", + "on": null, + "hours": 1.69, + "snr": 94.9 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_16005_HIP55846_0029.gpuspec.0002.h5", + "target": "HIP55846", + "on": null, + "hours": 1.76, + "snr": 63.1 + } + ], + "scans": 28, + "failed": 0 + }, + { + "tag": "MLc5", + "star": "HIP54677", + "session": "AGBT16A_999_182", + "f0": 1376.988694, + "drift_tabulated": -0.11, + "mhz": 1376.984528, + "drift": 0.1247, + "t0": 57517.112980977545, + "on_snr": [ + 59.5, + 35.3, + 28.3 + ], + "on_line": [ + 38.26, + 26.44, + 16.79 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57517_09209_HIP53759_0010.gpuspec.0002.h5", + "on_line": 1.76, + "null_mean": 0.14, + "null_std": 0.43, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_10032_HIP53820_0012.gpuspec.0002.h5", + "on_line": 2.51, + "null_mean": 0.14, + "null_std": 0.46, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_10836_HIP53839_0014.gpuspec.0002.h5", + "on_line": 1.46, + "null_mean": 0.11, + "null_std": 0.47, + "as_high": 1, + "null_n": 200 + } + ], + "off_z": 6.8, + "other": [ + { + "file": "spliced_blc0001020304050607_guppi_57517_15327_HIP55846_0027.gpuspec.0002.h5", + "target": "HIP55846", + "on": null, + "hours": 1.59, + "snr": 41.9 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_15666_HIP54998_0028.gpuspec.0002.h5", + "target": "HIP54998", + "on": null, + "hours": 1.68, + "snr": 88.0 + }, + { + "file": "spliced_blc0001020304050607_guppi_57517_16005_HIP55846_0029.gpuspec.0002.h5", + "target": "HIP55846", + "on": null, + "hours": 1.75, + "snr": 53.3 + } + ], + "scans": 28, + "failed": 0 + }, + { + "tag": "MLc6", + "star": "HIP56802", + "session": "AGBT16A_999_188", + "f0": 1435.940307, + "drift_tabulated": -0.18, + "mhz": 1435.943619, + "drift": 0.182, + "t0": 57522.16460576465, + "on_snr": [ + 14.7, + 45.7, + 53.3 + ], + "on_line": [ + 0.48, + 21.19, + 25.9 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57522_13603_HIP55875_0010.gpuspec.0002.h5", + "on_line": 2.16, + "null_mean": 0.12, + "null_std": 0.47, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57522_14414_HIP55884_0012.gpuspec.0002.h5", + "on_line": 2.5, + "null_mean": 0.09, + "null_std": 0.42, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57522_15220_HIP55937_0014.gpuspec.0002.h5", + "on_line": 0.87, + "null_mean": 0.15, + "null_std": 0.39, + "as_high": 6, + "null_n": 200 + } + ], + "off_z": 6.9, + "other": [ + { + "file": "spliced_blc0001020304050607_guppi_57522_15953_HIP58843_0016.gpuspec.0002.h5", + "target": "HIP58843", + "on": null, + "hours": 0.52, + "snr": 14.0 + } + ], + "scans": 27, + "failed": 0 + }, + { + "tag": "MLc7", + "star": "HIP13402", + "session": "AGBT16A_999_215", + "f0": 1487.482046, + "drift_tabulated": 0.1, + "mhz": 1487.476626, + "drift": -0.1003, + "t0": 57544.607417705934, + "on_snr": [ + 93.0, + 109.0, + 125.5 + ], + "on_line": [ + 50.46, + 44.42, + 81.04 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57544_51992_HIP11915_0034.gpuspec.0002.h5", + "on_line": 2.14, + "null_mean": 0.19, + "null_std": 0.46, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57544_52683_HIP12005_0036.gpuspec.0002.h5", + "on_line": 1.99, + "null_mean": 0.13, + "null_std": 0.42, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57544_53376_HIP12038_0038.gpuspec.0002.h5", + "on_line": -0.0, + "null_mean": 0.13, + "null_std": 0.43, + "as_high": 120, + "null_n": 200 + } + ], + "off_z": 4.8, + "other": [ + { + "file": "spliced_blc0001020304050607_guppi_57544_54845_HIP11029_0042.gpuspec.0002.h5", + "target": "HIP11029", + "on": false, + "hours": 0.7, + "snr": 51.0 + }, + { + "file": "spliced_blc0001020304050607_guppi_57544_55579_HIP11124_0044.gpuspec.0002.h5", + "target": "HIP11124", + "on": false, + "hours": 0.9, + "snr": 72.3 + }, + { + "file": "spliced_blc0001020304050607_guppi_57544_56311_HIP11124_0046.gpuspec.0002.h5", + "target": "HIP11124", + "on": false, + "hours": 1.1, + "snr": 30.9 + }, + { + "file": "spliced_blc0001020304050607_guppi_57544_57034_HIP11136_0048.gpuspec.0002.h5", + "target": "HIP11136", + "on": false, + "hours": 1.3, + "snr": 46.1 + }, + { + "file": "spliced_blc0001020304050607_guppi_57544_57743_HIP11139_0050.gpuspec.0002.h5", + "target": "HIP11139", + "on": false, + "hours": 1.5, + "snr": 14.9 + } + ], + "scans": 57, + "failed": 0 + }, + { + "tag": "MLc8", + "star": "HIP62207", + "session": "AGBT16A_999_213", + "f0": 1724.972561, + "drift_tabulated": -0.126, + "mhz": 1724.970767, + "drift": 0.1424, + "t0": 57543.111072803855, + "on_snr": [ + 19.5, + 37.1, + 40.4 + ], + "on_line": [ + 11.58, + 22.44, + 25.87 + ], + "off": [ + { + "file": "spliced_blc0001020304050607_guppi_57543_09023_HIP61072_0034.gpuspec.0002.h5", + "on_line": 1.24, + "null_mean": 0.1, + "null_std": 0.43, + "as_high": 0, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_09782_HIP61074_0036.gpuspec.0002.h5", + "on_line": 1.19, + "null_mean": 0.05, + "null_std": 0.43, + "as_high": 3, + "null_n": 200 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_10527_HIP61114_0038.gpuspec.0002.h5", + "on_line": 1.77, + "null_mean": 0.09, + "null_std": 0.44, + "as_high": 0, + "null_n": 200 + } + ], + "off_z": 5.3, + "other": [ + { + "file": "spliced_blc0001020304050607_guppi_57543_02588_HIP46135_0016.gpuspec.0002.h5", + "target": "HIP46135", + "on": false, + "hours": -1.91, + "snr": 12.9 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_02935_HIP47080_0017.gpuspec.0002.h5", + "target": "HIP47080", + "on": true, + "hours": -1.81, + "snr": 10.1 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_03617_HIP47080_0019.gpuspec.0002.h5", + "target": "HIP47080", + "on": true, + "hours": -1.62, + "snr": 17.2 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_05689_HIP47201_0025.gpuspec.0002.h5", + "target": "HIP47201", + "on": true, + "hours": -1.05, + "snr": 11.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_06379_HIP47513_0027.gpuspec.0002.h5", + "target": "HIP47513", + "on": true, + "hours": -0.85, + "snr": 8.1 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_06729_HIP46367_0028.gpuspec.0002.h5", + "target": "HIP46367", + "on": false, + "hours": -0.76, + "snr": 100.5 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_07078_HIP47513_0029.gpuspec.0002.h5", + "target": "HIP47513", + "on": true, + "hours": -0.66, + "snr": 19.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_07425_HIP46447_0030.gpuspec.0002.h5", + "target": "HIP46447", + "on": false, + "hours": -0.56, + "snr": 157.8 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_07772_HIP47513_0031.gpuspec.0002.h5", + "target": "HIP47513", + "on": true, + "hours": -0.47, + "snr": 13.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_08116_HIP46454_0032.gpuspec.0002.h5", + "target": "HIP46454", + "on": false, + "hours": -0.37, + "snr": 110.8 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_15275_HIP68469_0051.gpuspec.0002.h5", + "target": "HIP68469", + "on": true, + "hours": 1.62, + "snr": 30.4 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_15981_HIP68469_0053.gpuspec.0002.h5", + "target": "HIP68469", + "on": true, + "hours": 1.81, + "snr": 28.2 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_16336_HIP67344_0054.gpuspec.0002.h5", + "target": "HIP67344", + "on": false, + "hours": 1.91, + "snr": 8.7 + }, + { + "file": "spliced_blc0001020304050607_guppi_57543_17047_HIP67369_0056.gpuspec.0002.h5", + "target": "HIP67369", + "on": false, + "hours": 2.11, + "snr": 13.2 + } + ], + "scans": 56, + "failed": 0 + } +] \ No newline at end of file diff --git a/papers/ml_signals/make_numbers.py b/papers/ml_signals/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..fa2fd982f0b710c35b520802cf0493f70f29854e --- /dev/null +++ b/papers/ml_signals/make_numbers.py @@ -0,0 +1,166 @@ +"""Numbers, Table 1 and Figure 1 of the note on Ma et al. (2023)'s eight signals of interest, from the soi approach's results in data/ (else the approach's results directory): each signal's line and its power in every scan of its session, the table of the eight, and the waterfall of MLc8's session as mlc8_session.pdf beside this file.""" +import json +import os +import sys + +import numpy as np + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import breakthrough as B # noqa: E402 +from setitools import core, science # noqa: E402 + + +def data(name): + """A result file from data/, else the soi results directory.""" + p = os.path.join(HERE, "data", name) + return p if os.path.exists(p) else os.path.join(B.soi_ROOT, name) + + +def scans(tag): + rows = [json.loads(l) for l in open(data("%s.jsonl" % tag))] + return rows[0], rows[1:] + + +def utc(mjd): + s = round(mjd % 1 * 86400) + return "%02d:%02d" % (s // 3600 % 24, s % 3600 // 60) + + +def date(mjd): + import datetime + return (datetime.datetime(1858, 11, 17) + datetime.timedelta(days=float(mjd))).strftime("%Y %B %-d" if os.name != "nt" else "%Y %B %#d") + + +ERR = dict(MLc1=0.25, MLc2=0.07, MLc3=0.10, MLc4=0.03, MLc5=0.02, MLc6=0.04, MLc7=0.02, MLc8=0.010) # Ma et al. (2023), Table 1 + + +T = json.load(open(data("table.json"))) +print("Table 1") +for t in T: + away = t["other"] + print(" %s & HIP~%s & %.6f & $%+.3f$ & $%+.3f$ & %s & %.1f & %s \\\\" % ( + t["tag"], t["star"][3:], t["mhz"], t["drift"], t["drift_tabulated"], ", ".join("%.0f" % x for x in t["on_snr"]), t["off_z"], + "%d (%.0f)" % (len(away), max(a["snr"] for a in away)) if away else "0")) +print("\nmeasured minus tabulated frequency (kHz): %s" % ", ".join("%s %+.2f" % (t["tag"], (t["mhz"] - t["f0"]) * 1e3) for t in T)) +print("drift signs opposite to the tabulated ones: %d of %d" % (sum(1 for t in T if t["drift"] * t["drift_tabulated"] < 0), len(T))) +print("|drift| minus |tabulated| in tabulated errors: %s" % ", ".join( + "%s %+.1f" % (t["tag"], (abs(t["drift"]) - abs(t["drift_tabulated"])) / ERR[t["tag"]]) for t in T)) +print("sessions: %s" % ", ".join("%s %s (%s to %s UTC)" % (t["tag"], date(t["t0"]), utc(min(r["mjd"] for r in scans(t["tag"])[1] if "mjd" in r)), + utc(max(r["mjd"] for r in scans(t["tag"])[1] if "mjd" in r))) for t in T)) +print("own OFF scans on the line, combined: %s sigma" % ", ".join("%s %.1f" % (t["tag"], t["off_z"]) for t in T)) +print("scans away from the star holding the signal: %s" % ", ".join("%s %d" % (t["tag"], len(t["other"])) for t in T)) +print("scans in the sessions: %d, failed reads %d" % (sum(t["scans"] for t in T), sum(t["failed"] for t in T))) + + + +def stars(): + """The stars' SIMBAD positions, kept in data/stars.json.""" + p = os.path.join(HERE, "data", "stars.json") + if not os.path.exists(p): + out = {} + for s in sorted({t["star"] for t in T}): + r = core.simbad("SELECT b.ra, b.dec FROM basic AS b JOIN ident AS i ON i.oidref = b.oid WHERE i.id = 'HIP %s'" % s[3:])[0] + out[s] = [float(r["ra"]), float(r["dec"])] + json.dump(out, open(p, "w"), indent=1) + return json.load(open(p)) + + +def skyfixed(star, mhz, mjd): + """Drift (Hz/s) at the GBT of a transmitter at rest at the star: the observatory's barycentric velocity toward it over 60 s.""" + import astropy.units as u + from astropy.coordinates import SkyCoord + from astropy.time import Time + from astropy.utils import iers + iers.conf.auto_download = False # the bundled Earth-orientation tables cover 2016 + src = SkyCoord(*S[star], unit="deg") + v = [src.radial_velocity_correction(kind="barycentric", obstime=Time(mjd + dt / 86400, format="mjd", scale="utc"), + location=science.location("GBT")).to(u.km / u.s).value for dt in (-30.0, 30.0)] + return mhz * 1e6 * (v[1] - v[0]) / 60.0 / science.C + + +S = stars() +print("drift of a transmitter at rest at the star, against the line's: %s" % ", ".join( + "%s %+.3f (%+.3f)" % (t["tag"], skyfixed(t["star"], t["mhz"], t["t0"]), t["drift"]) for t in T)) +print("OFF level against ON on the line: %s" % ", ".join( + "%s %.3f" % (t["tag"], np.mean([o["on_line"] for o in t["off"]]) / np.mean(t["on_line"])) for t in T)) +m1 = [t for t in T if t["tag"] == "MLc1"][0] +line1, rows1 = scans("MLc1") +d1 = [max(q for q in r["tracks"] if abs(q[1] - (line1["hz"] + line1["drift"] * (r["mjd"] - line1["t0"]) * 86400)) <= 3000)[2] + for r in rows1 if r.get("cadence") == "HIP13402" and r["on"] and r["tracks"] and abs(r["mjd"] - line1["t0"]) < 0.05 + and any(abs(q[1] - (line1["hz"] + line1["drift"] * (r["mjd"] - line1["t0"]) * 86400)) <= 3000 for q in r["tracks"])] +c = science.C * 1e3 / (m1["mhz"] * 1e6) # m/s^2 per Hz/s +print("MLc1: line-of-sight acceleration of its own at HIP 13402 %.3f m/s^2; ON tracks' drifts %s Hz/s, a change of %.3f m/s^2; " + "session %s to %s UTC" % ((m1["drift"] - skyfixed("HIP13402", m1["mhz"], m1["t0"])) * c, d1, abs(d1[1] - d1[0]) * c, + utc(rows1[0]["mjd"] - 150 / 86400), utc(rows1[-1]["mjd"] + 150 / 86400))) + +m4, m5 = [t for t in T if t["tag"] in ("MLc4", "MLc5")] +print("\nMLc4 and MLc5: %.6f MHz apart, drifts %+.4f and %+.4f Hz/s, away scans %s and %s" % ( + m5["mhz"] - m4["mhz"], m4["drift"], m5["drift"], [(a["target"], a["snr"]) for a in m4["other"]], [(a["target"], a["snr"]) for a in m5["other"]])) + +for tag in ("MLc8", "MLc1"): + line, rows = scans(tag) + t = [x for x in T if x["tag"] == tag][0] + print("\n%s: %.6f MHz at %s UTC (MJD %.5f), %+.4f Hz/s; ON tracks S/N %s" % (tag, t["mhz"], utc(line["t0"]), line["t0"], line["drift"], t["on_snr"])) + for r in rows: + if r.get("cadence") != line["star"] or abs(r["mjd"] - line["t0"]) > 0.05: + continue + pred = line["hz"] + line["drift"] * (r["mjd"] - line["t0"]) * 86400 + near = [q for q in r["tracks"] if abs(q[1] - pred) <= 3000] + print(" %s %-9s %-3s on the line %.2f against %.2f +- %.2f (%d of %d parallel tracks as high); tracks within 3 kHz %s" % ( + utc(r["mjd"]), r["target"], "ON" if r["on"] else "OFF", r["on_line"], r["null_mean"], r["null_std"], r["as_high"], r["null_n"], near[:2])) + on = [r["on_line"] for r in rows if r.get("cadence") == line["star"] and r["on"] and abs(r["mjd"] - line["t0"]) < 0.05] + off = [r["on_line"] for r in rows if r.get("cadence") == line["star"] and r["on"] is False and abs(r["mjd"] - line["t0"]) < 0.05] + print(" OFF level against ON on the line: %.3f" % (np.mean(off) / np.mean(on))) + if t["other"]: + a = sorted(t["other"], key=lambda a: a["hours"]) + print(" away from the star: %d scans (%d ON, %d OFF, %d neither) from %s to %s UTC, %d stars' cadences; S/N %s" % ( + len(a), sum(1 for x in a if x["on"]), sum(1 for x in a if x["on"] is False), sum(1 for x in a if x["on"] is None), + utc(line["t0"] + a[0]["hours"] / 24), utc(line["t0"] + a[-1]["hours"] / 24), + len({r["cadence"] for r in rows for x in a if r["file"] == x["file"]}), [x["snr"] for x in a])) + print(" strongest: %s" % [(utc(line["t0"] + x["hours"] / 24), x["target"], "ON" if x["on"] else "OFF", x["snr"]) + for x in sorted(a, key=lambda x: -x["snr"])[:4]]) + for x in a: + r = [r for r in rows if r["file"] == x["file"]][0] + pred = line["hz"] + line["drift"] * (r["mjd"] - line["t0"]) * 86400 + q = max([q for q in r["tracks"] if abs(q[1] - pred) <= B.soi_NEAR[0] and abs(q[2] - line["drift"]) <= B.soi_NEAR[1]]) + print(" %s %-9s %-3s %.6f MHz %+.3f Hz/s S/N %.1f" % (utc(r["mjd"]), r["target"], "ON" if r["on"] else "OFF", + t["f0"] + q[1] / 1e6, q[2], q[0])) + +# Figure 1: MLc8's session +import matplotlib # noqa: E402 + +matplotlib.use("Agg") +import matplotlib.pyplot as plt # noqa: E402 + +w = np.load(data("MLc8_waterfall.npz")) +z, tm, hz, on, tgt, cad = w["z"], w["t"], w["hz"], w["on"], w["target"], w["cadence"] +x = (hz + (1724.972561 - 1724.97) * 1e6) / 1e3 # kHz above 1724.97 MHz +plt.rcParams.update({"font.size": 9}) +fig, ax = plt.subplots(figsize=(6.0, 7.6)) +dt = np.nanmedian(np.diff(tm, axis=1)) * 24 +day0 = np.floor(np.nanmax(tm)) # the session's second day +hours = (tm - day0) * 24 # hours from 0 UTC on that day +for i in range(len(z)): + k = np.isfinite(tm[i]) + h = hours[i][k] + ax.imshow(np.clip(z[i][k].astype(float), -1, 8)[:, ::-1] if hz[0] > hz[-1] else np.clip(z[i][k].astype(float), -1, 8), + extent=[x.min(), x.max(), h[-1] + dt / 2, h[0] - dt / 2], aspect="auto", cmap="gray_r", vmin=-1, vmax=8, + interpolation="nearest") + ax.add_patch(plt.Rectangle((x.min() - 0.17, h[0] - dt / 2), 0.11, len(h) * dt, + color={1: "tab:orange", 0: "tab:blue", -1: "0.6"}[int(on[i])], clip_on=False)) +for c in sorted({str(v) for v in cad if v}): + hs = [hours[i][0] for i in range(len(z)) if str(cad[i]) == c] + he = [hours[i][np.isfinite(hours[i])][-1] for i in range(len(z)) if str(cad[i]) == c] + ax.text(x.max() + 0.06, (min(hs) + max(he)) / 2, c.replace("HIP", "HIP "), va="center", fontsize=8) + if c == "HIP62207": + ax.add_patch(plt.Rectangle((x.min(), min(hs) - dt), x.max() - x.min(), max(he) - min(hs) + 2 * dt, fill=False, ec="tab:red", lw=1.2)) +ax.set_xlim(x.min() - 0.19, x.max()) +ax.set_ylim(np.nanmax(hours) + dt, np.nanmin(hours) - dt) +ax.set_xlabel(r"$\nu - 1724.97$ MHz (kHz)") +ax.set_ylabel("UTC (h) from 0 h on %s" % date(day0)) +fig.tight_layout() +fig.savefig(os.path.join(HERE, "mlc8_session.pdf")) +print("\nFigure 1: mlc8_session.pdf, %d scans, %.2f to %.2f kHz above 1724.97 MHz" % (len(z), x.min(), x.max())) diff --git a/papers/ml_signals/ml_signals.pdf b/papers/ml_signals/ml_signals.pdf new file mode 100644 index 0000000000000000000000000000000000000000..28f0aac98817c27236088bb61c30330b877ae49c --- /dev/null +++ b/papers/ml_signals/ml_signals.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49c7b774ebad4492274a7a46eba2b9a3dc0395cd4f3c58b5917a5e9c9899d14c +size 263925 diff --git a/papers/ml_signals/ml_signals.tex b/papers/ml_signals/ml_signals.tex new file mode 100644 index 0000000000000000000000000000000000000000..ebd3478992855eafad015bdb45dd4bdab29bf656 --- /dev/null +++ b/papers/ml_signals/ml_signals.tex @@ -0,0 +1,229 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{enumitem} +\usepackage{graphicx} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\hzs}{Hz\,s$^{-1}$} +\newcommand{\mss}{m\,s$^{-2}$} + +% ---- front matter ----------------------------------------------------------- +\title{The Eight Breakthrough Listen Signals of Interest\\ of Ma et al.\ (2023) Traced Through Their Sessions} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +Ma et al.\ (2023) reported eight narrowband signals of interest from a deep-learning search of Breakthrough Listen's +Green Bank Telescope observations of 820 nearby stars, each present in the three ON scans of its cadence and absent from +its three OFF scans. We trace each signal through every scan of its observing session, $335$ scans in six sessions, in +the product of $2.84$\,Hz channels. Seven are terrestrial: each lies on its own drifting line in its cadence's OFF +scans, at $4.8$ to $11.5\sigma$ combined, and six of them recur in $1$ to $25$ scans pointed at other stars. MLc8, +toward HIP~62207 at $1724.97$\,MHz, is a carrier that rises $1.72$\,kHz between 00:45 and 04:46\,UTC on 2016 June 4 +through the cadences of four other stars; it is received at S/N $101$ to $158$ in three OFF pointings of the cadence before +HIP~62207's, against $20$ to $40$ in its own ON scans, and at $7$ per cent of its ON level in its own OFF scans. MLc1, at +$1188.54$\,MHz in the band of aeronautical radionavigation, is in its ON scans alone, with drifts of $-1.51$ and +$-0.85$\,\hzs\ in the first two where a transmitter at rest at HIP~13402 would drift at $-0.08$\,\hzs. Table~1 of +Ma et al.\ gives the drift rates with the sign opposite to $d\nu/dt$ and, for seven of the signals, each scan's file +label in place of its MJD. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Breakthrough Listen observes nearby stars with the Green Bank Telescope (GBT) in cadences of six five-minute scans, three +ON the target alternating with three OFF it on other stars~\cite{Isaacson2017,Enriquez2017}. A narrowband signal from +the target's direction appears in the ON scans alone, while a transmitter on the ground, received through the +telescope's sidelobes, usually appears in both. Ma et al.~\cite{Ma2023} searched the observations of 820 stars with a +deep-learning classifier and reported eight signals that passed this test, MLc1 to MLc8; re-observations of their +targets found none of them again. Pardo et al.~\cite{Pardo2025} later passed the eight through the filters of an +anomaly search, which set aside five and left MLc3, MLc7 and MLc8 below its threshold for human vetting, MLc8 by a +narrow margin. + +The ON--OFF test compares six scans. A transmitter on the ground passes it whenever the telescope's gain toward it is +higher in the three ON pointings than in the three OFF ones, and the session around a cadence holds tens of other +scans, each pointed elsewhere, that sample that gain again. We trace each signal of interest through every scan of its +session. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item A trace of each of the eight signals through every scan of its session in Breakthrough Listen's high-resolution +product: its power on its own line in the OFF scans of its cadence, and the tracks near that line in the scans pointed +at other stars. +\item The identification of seven of the eight as terrestrial transmitters, MLc8 among them, and the case of MLc1, +which its session does not settle. +\item The sign convention of the drift rates in Ma et al.'s Table~1 and the content of its MJD column. +\end{enumerate} + +% ============================================================================= +\section{Data and method}\label{sec:method} +% ============================================================================= + +Breakthrough Listen's pipeline reduces each scan to three products~\cite{MacMahon2018,Lebofsky2019}; the finest holds +$16$ spectra of $18.0$\,s in channels of $2.84$\,Hz ($18.3$\,s and $2.79$\,Hz in MLc2's session, AGBT16B\_999\_105). +For each signal we list every scan of its session in the pipeline's directory, mark the ON and OFF scans of each +cadence, and read from every scan the coarse channel holding the tabulated frequency by HTTP byte ranges against the +file's chunk index. Within $25$\,kHz of that frequency each spectrum is divided by a level, either each channel's +median over the scan or, for the session sweep, a $256$-channel block median of the scan's median spectrum, which keeps +a steady tone, and scaled to unit noise by the median absolute deviation. + +A track is a straight line in frequency and time. For each drift from $-2$ to $+2$\,\hzs\ in steps of +$0.002$\,\hzs, each spectrum is first summed over the channels that a track of that drift crosses within it, up to +$13$ at $2$\,\hzs, with the noise kept unit, and the sum along the track over the $16$ spectra, divided by $4$, is its +S/N. In each ON scan the signal is the strongest track within $6$\,kHz of the tabulated frequency. A weighted +least-squares line through the per-spectrum peaks of the three ON scans, each peak placed by a parabola through it and +its neighbours, gives the signal's frequency and drift: its line. + +In every scan of the session we carry the line to the scan's time and take the mean over spectra of the power in the +three channels about it. The same sum along $200$ parallel tracks, $20$ to $2000$ channels away in the same scan, is +its null, and the cadence's three OFF scans give a combined significance $\sum_i z_i/\sqrt{3}$. In every scan we also +list the tracks above S/N $8$ within $25$\,kHz, and count the scans pointed at other stars that hold one within +$500$\,Hz of the line carried to their time and within $0.05$\,\hzs\ of its drift. A transmitter at rest at the star +drifts at the GBT by the rate of change of the observatory's barycentric velocity toward it, $-0.08$ to $-0.13$\,\hzs\ +for these signals. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +Table~\ref{tab:soi} gives the eight. Each signal lies within $5.5$\,kHz of its tabulated frequency, and each line's +drift has the magnitude of the tabulated rate within $1.6$ times its error and the opposite sign, in all eight. The table's MJD +column holds, for every signal but MLc1, the scan's GUPPI file label, its MJD and second of the day, read as a decimal: +$57543.10165$ for MLc8 names the scan that starts at MJD $57543.11765$. + +\begin{table}[t] +\centering\small +\caption{The eight signals in the high-resolution product: the frequency of each line at its reference time and its +drift; the drift rate of Ma et al.'s Table~1; the S/N of the strongest track within $6$\,kHz in each ON scan; the +combined significance of the power on the line in the cadence's three OFF scans against parallel tracks; and the scans +of the session pointed at other stars that hold a track within $500$\,Hz and $0.05$\,\hzs\ of the line, with the +largest S/N among them.} +\label{tab:soi} +\begin{tabular}{llrrrlrl} +\toprule +Signal & Star & $\nu$ (MHz) & $\dot\nu$ (\hzs) & Tabulated & ON S/N & OFF ($\sigma$) & Other stars \\ +\midrule +MLc1 & HIP~13402 & 1188.537163 & $-0.974$ & $+1.110$ & 11, 10, 6 & 1.5 & 0 \\ +MLc2 & HIP~118212 & 1347.862123 & $+0.425$ & $-0.440$ & 10, 35, 25 & 6.0 & 0 \\ +MLc3 & HIP~62207 & 1351.623687 & $+0.056$ & $-0.050$ & 55, 67, 32 & 11.5 & 25 (177) \\ +MLc4 & HIP~54677 & 1372.984569 & $+0.124$ & $-0.110$ & 41, 22, 19 & 5.1 & 3 (95) \\ +MLc5 & HIP~54677 & 1376.984528 & $+0.125$ & $-0.110$ & 60, 35, 28 & 6.8 & 3 (88) \\ +MLc6 & HIP~56802 & 1435.943619 & $+0.182$ & $-0.180$ & 15, 46, 53 & 6.9 & 1 (14) \\ +MLc7 & HIP~13402 & 1487.476626 & $-0.100$ & $+0.100$ & 93, 109, 126 & 4.8 & 5 (72) \\ +MLc8 & HIP~62207 & 1724.970767 & $+0.142$ & $-0.126$ & 20, 37, 40 & 5.3 & 14 (158) \\ +\bottomrule +\end{tabular} +\end{table} + +MLc2 to MLc8 each lie on their line in the OFF scans of their cadence, at $4.8$ to $11.5\sigma$ combined and $2$ to +$34$ per cent of their ON level, and six of them recur in scans pointed at other stars of their session: MLc3 in $25$, +with S/N to $177$, MLc8 in $14$, MLc7 in $5$, MLc4 and MLc5 in the same three scans $1.6$ to $1.8$\,h after the middle +of their cadence, and MLc6 in one. MLc4 and MLc5 lie $3.99996$\,MHz apart with drifts equal to within $0.001$\,\hzs: +two carriers of one transmitter. MLc3 and MLc8 share the cadence of HIP~62207. + +Figure~\ref{fig:mlc8} shows MLc8's session. Above S/N $8$ the carrier is in $14$ scans pointed at four other stars +between 00:45 and 04:46\,UTC on 2016 June 4, eight ON and six OFF, rising from $1724.969890$ to $1724.971614$\,MHz, a +mean drift of $0.12$\,\hzs\ and a part per million in four hours, and the waterfall shows it fainter in earlier scans. +It is strongest in the three OFF pointings of the cadence of HIP~47513, which ended four minutes before HIP~62207's +began, at S/N $101$, $158$ and $111$, against $20$ to $40$ in HIP~62207's ON scans. In HIP~62207's own OFF scans it lies +on its line at $1.24$, $1.19$ and $1.77$ against parallel tracks at $0.05$ to $0.10$ with a scatter of $0.43$ to +$0.44$, $7$ per cent of its ON level and below the threshold of a per-scan search. A source at the star is received most strongly when the telescope +points at it; MLc8 is received several times more strongly at pointings of other stars. + +\begin{figure}[t] +\centering +\includegraphics[width=0.82\textwidth]{mlc8_session.pdf} +\caption{Session AGBT16A\_999\_213 near MLc8: every scan's $16$ spectra at their times, in the $2.84$\,Hz channels, +each over a level from block medians of its median spectrum and scaled to unit noise, with the ON scans marked orange, +the OFF scans blue and the scans outside a cadence grey, and the cadence of HIP~62207 boxed. Each cadence is labelled +by its target.} +\label{fig:mlc8} +\end{figure} + +MLc1 is the one signal its session does not settle. It lies on its line in its three ON scans, at $3.80$, $7.10$ and +$3.43$ against parallel tracks at $0.14$ to $0.26$ with a scatter of $0.69$ to $0.88$, $4$ to $9\sigma$ each; in its +first OFF scan at $2.16$ against $0.27\pm0.70$, $2.7\sigma$, and not in the other two; and in no scan pointed at another star of its +session, which holds $27$ scans from 15:17 to 17:59\,UTC on 2016 June 2. Its strongest tracks in the first two ON scans +drift at $-1.51$ and $-0.85$\,\hzs. A transmitter at rest at HIP~13402 would drift at $-0.08$\,\hzs, so one at the +star would need a line-of-sight acceleration of its own of $0.23$\,\mss, changing by $0.17$\,\mss\ in the $12$ minutes +between those scans. At $1188.54$\,MHz it lies in the $960$--$1215$\,MHz band of aeronautical radionavigation, used by +DME and TACAN beacons and by the GPS L5, Galileo E5 and BeiDou B2 signals of $1164$--$1215$\,MHz. + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +Sheikh et al.~\cite{Sheikh2021} examined blc1, a signal from the direction of Proxima Centauri, by finding look-alikes +of it at related frequencies in observations of other targets, and set out the verification framework that a trace +through the session follows. Pardo et al.~\cite{Pardo2025} passed Ma et al.'s eight through the filters of an anomaly +search. We find no earlier analysis of the eight beyond their cadences. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +A cadence holds six scans of a session that holds tens. Traced through their sessions in the $2.84$\,Hz product, seven +of Ma et al.'s eight signals of interest are transmitters on the ground that the ON--OFF test passed because the +telescope received them more weakly in three OFF pointings; the trace reads one coarse channel of each scan and +settles them without re-observation. MLc1 remains, in the band of aeronautical radionavigation with a drift that +changes by $0.66$\,\hzs\ between scans $12$ minutes apart; the Doppler rates at the GBT of the navigation satellites +above it on 2016 June 2 between 16:34 and 16:58\,UTC would decide whether one of them carried it. + +\section*{Acknowledgements} + +This work uses data from Breakthrough Listen, funded by the Breakthrough Prize Foundation, taken with the Green Bank +Telescope; the Green Bank Observatory is a facility of the National Science Foundation operated under cooperative +agreement by Associated Universities, Inc. It uses the SIMBAD database, operated at CDS, Strasbourg, and Astropy. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Ma2023} +P.~X. Ma, C.~Ng, L.~Rizk, et al., A deep-learning search for technosignatures from 820 nearby stars, \emph{Nat. +Astron.} \textbf{7}, 492 (2023). + +\bibitem{Pardo2025} +S.~Pardo, D.~Poznanski, S.~Croft, A.~P.~V. Siemion and M.~Lebofsky, Using anomaly detection to search for +technosignatures in Breakthrough Listen observations, \emph{Astron. J.} \textbf{170}, 12 (2025). + +\bibitem{Isaacson2017} +H.~Isaacson, A.~P.~V. Siemion, G.~W. Marcy, et al., The Breakthrough Listen search for intelligent life: target +selection of nearby stars and galaxies, \emph{Publ. Astron. Soc. Pac.} \textbf{129}, 054501 (2017). + +\bibitem{Enriquez2017} +J.~E. Enriquez, A.~Siemion, G.~Foster, et al., The Breakthrough Listen search for intelligent life: 1.1--1.9\,GHz +observations of 692 nearby stars, \emph{Astrophys. J.} \textbf{849}, 104 (2017). + +\bibitem{MacMahon2018} +D.~H.~E. MacMahon, D.~C. Price, M.~Lebofsky, et al., The Breakthrough Listen search for intelligent life: a wideband +data recorder system for the Robert C. Byrd Green Bank Telescope, \emph{Publ. Astron. Soc. Pac.} \textbf{130}, 044502 +(2018). + +\bibitem{Lebofsky2019} +M.~Lebofsky, S.~Croft, A.~P.~V. Siemion, et al., The Breakthrough Listen search for intelligent life: public data, +formats, reduction, and archiving, \emph{Publ. Astron. Soc. Pac.} \textbf{131}, 124505 (2019). + +\bibitem{Sheikh2021} +S.~Z. Sheikh, S.~Smith, D.~C. Price, et al., Analysis of the Breakthrough Listen signal of interest blc1 with a +technosignature verification framework, \emph{Nat. Astron.} \textbf{5}, 1153 (2021). + +\end{thebibliography} + +\end{document} diff --git a/papers/ml_signals/mlc8_session.pdf b/papers/ml_signals/mlc8_session.pdf new file mode 100644 index 0000000000000000000000000000000000000000..32042fafcca22652273a6b996fc3c4f3e5c471f1 --- /dev/null +++ b/papers/ml_signals/mlc8_session.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d34fd4a8252ab33a452ffe0229c267c8b9a7ddf0a70d87e500e588d24f3bd64 +size 216282 diff --git a/papers/photometric/data/kepler_glints_1.jsonl b/papers/photometric/data/kepler_glints_1.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..b023f76e374d496c95050eaf79cfc14b75362087 --- /dev/null +++ b/papers/photometric/data/kepler_glints_1.jsonl @@ -0,0 +1,383 @@ +{"kic": "10666592", "days": 1242.9760266203705, "n_flash": 31, "flashes": [[138.11812946056307, 5.45064175223176, 1], [184.32729157932044, 6.537868414584932, 1], [188.83979396062932, 5.081577682113103, 1], [189.99771743388555, 5.906019082289216, 1], [224.978912539671, 5.483285786437255, 1], [274.57857845418766, 5.791273603612051, 1], [307.7207185392326, 5.152886261840557, 1], [314.51122599931114, 5.346897077735644, 1], [321.269041507112, 5.5303965158623445, 1], [588.0036086448308, 5.974067823420806, 1], [670.4439931570887, 5.592176272745333, 1], [711.9424317932207, 5.448521987389859, 1], [712.085462287243, 5.098534313210666, 1], [764.8752237471272, 6.010912151314035, 1], [796.0679513442956, 8.333071568807174, 1], [882.9916935658839, 5.598060141266227, 1], [1014.2381805046753, 9.54562327343441, 1], [1058.2901372852066, 7.905121503172549, 1], [1058.6048028374425, 5.225579552946911, 1], [1189.4491717610508, 6.541081842880819, 1], [1194.1510690418, 5.045374222223788, 1], [1199.3508886065465, 7.145886040999874, 1], [1201.5795802871726, 13.664118678107219, 1], [1205.5267935606025, 5.113682311823158, 1], [1225.4570443148623, 5.012684470447715, 1], [1283.845258632071, 5.521062309764306, 1], [1317.1104236322426, 5.102979229180173, 1], [1449.3122226128908, 5.284387609673687, 1], [1493.209212536589, 5.19953361118654, 1], [1562.388917450975, 5.143464565538554, 1], [1563.1524730269666, 5.96410981483812, 1]], "kois": [{"koi": "K00002.01", "period": 2.204735417, "t0": 121.3585417, "dur_h": 3.88864, "prad": "16.1", "n_cluster": 2, "fap": 0.5012468827930174}]} +{"kic": "8554498", "days": 1205.2227980324074, "n_flash": 24, "flashes": [[221.07770033651468, 5.065205181178119, 1], [320.15104581820924, 5.187716842172354, 1], [353.44232824818755, 6.260887044786291, 1], [563.602626832675, 5.03221419397634, 1], [565.7583969041079, 5.15433102045982, 1], [626.6043542561165, 5.241585828943296, 1], [673.0114717293254, 5.305181300219008, 1], [773.3426704781305, 5.271125637477611, 1], [783.8401899665187, 8.409884869410718, 1], [793.6552888862207, 5.001201594814732, 1], [856.0166054384827, 5.3945641360382295, 1], [944.2397976930733, 6.1327739329441915, 1], [1050.6616076399878, 5.0888114646836575, 1], [1081.5375781883922, 6.920762146493622, 1], [1112.99492218675, 5.908813050339332, 1], [1143.412167270406, 5.198780502581295, 1], [1151.0795879511134, 5.1360191932147625, 1], [1203.7001253209673, 8.357706622041475, 1], [1237.3876089829282, 5.047735331264168, 1], [1275.4213266779188, 5.751470830059762, 1], [1323.1155257999635, 5.854996563132399, 1], [1325.0887344237344, 7.068188629357051, 1], [1349.8765688880958, 12.095641691771002, 1], [1536.6372473117663, 5.422847714555827, 1]], "kois": [{"koi": "K00005.01", "period": 4.780327581, "t0": 132.974086, "dur_h": 2.0253, "prad": "7.14", "n_cluster": 2, "fap": 0.19950124688279303}]} +{"kic": "11554435", "days": 1178.0707430555556, "n_flash": 16, "flashes": [[353.44274091023544, 8.22828100846555, 1], [568.4047683817407, 5.3861781092012295, 1], [608.9429230384048, 6.230608232039891, 1], [860.6455456869226, 5.283949738272319, 1], [974.7337216943488, 5.057248832459673, 1], [1036.8572422329235, 5.096117931072853, 1], [1119.8405301516977, 5.998555418382073, 1], [1122.376990864621, 5.6332716346251255, 1], [1147.5551786375363, 5.0753494977880615, 1], [1160.4025599279921, 5.60468449656156, 1], [1270.8375854907717, 5.059795708539046, 1], [1276.7620702174754, 5.259434027423007, 1], [1313.2012756224576, 5.23125890115382, 1], [1338.4225380870994, 5.091843538685269, 1], [1431.4224532869557, 6.778809885402763, 1], [1490.8016203037623, 5.232366645574312, 1]], "kois": [{"koi": "K00063.01", "period": 9.43414171, "t0": 177.84346, "dur_h": 2.8112, "prad": "5.73", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7199397", "days": 1153.8257690972223, "n_flash": 11, "flashes": [[264.50862588520977, 5.048465125309626, 1], [474.97720092206873, 5.136788645076109, 1], [524.4592170242322, 5.279327586790381, 1], [570.8813318435859, 5.0350731539239, 1], [632.5696074531152, 5.014322738112292, 1], [644.4758526946534, 5.216435640565231, 1], [671.4252789976454, 5.846634653559786, 1], [685.4019114963085, 5.058297518789583, 1], [1234.447061973624, 5.386484532893227, 1], [1284.6174947394538, 5.066875022033776, 1], [1396.260351801, 5.005120523982709, 1]], "kois": [{"koi": "K00075.01", "period": 105.8817667, "t0": 156.97935, "dur_h": 18.044, "prad": "10.16", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11512246", "days": 1157.2225856481482, "n_flash": 15, "flashes": [[294.4687932947418, 5.24428894827461, 1], [353.4428677525284, 6.599931221530791, 1], [608.9431379566886, 5.605136910649102, 1], [648.8199390446607, 5.3614035504604765, 1], [679.3658125121146, 5.01371754546796, 1], [927.4153935417125, 5.47519013068627, 1], [941.4678314418561, 5.416667406703947, 1], [964.7207769409433, 5.018591105891972, 1], [1018.9576050366086, 8.082964336151255, 1], [1081.5381211501517, 6.754342236238892, 1], [1128.4558821853498, 5.3166465105801874, 1], [1278.1323576006762, 6.818089129004097, 1], [1308.5859524923653, 5.29882154169635, 1], [1328.2106163321878, 6.5644525459219984, 1], [1501.8975795338993, 6.709509170838756, 1]], "kois": [{"koi": "K00168.03", "period": 7.10695741, "t0": 138.32271, "dur_h": 5.1462, "prad": "1.72", "n_cluster": 1, "fap": 1.0}, {"koi": "K00168.01", "period": 10.74241765, "t0": 133.2867, "dur_h": 6.0633, "prad": "3.06", "n_cluster": 1, "fap": 1.0}, {"koi": "K00168.02", "period": 15.27443889, "t0": 147.57983, "dur_h": 6.0765, "prad": "2.17", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5866724", "days": 1144.004494212963, "n_flash": 29, "flashes": [[301.3929378357352, 5.116647392754898, 1], [413.43810861477687, 5.230970259460298, 1], [422.7369589598384, 6.312200775264213, 1], [473.68052292893117, 5.1677055515375505, 1], [511.95432113169954, 8.850504388644197, 1], [558.0293004931227, 5.029787678982445, 1], [700.3931412603924, 7.595485571554519, 1], [751.8891780223203, 8.045694002828009, 1], [783.8399773594283, 5.96342209665468, 1], [885.449939307211, 6.153454319545677, 1], [885.4996629359739, 5.080155491694831, 1], [888.6785721189735, 5.054462396374989, 1], [944.3586479141377, 5.240250759988825, 1], [974.111147433061, 5.552934077371259, 1], [984.6778265812245, 9.273006428343013, 1], [997.5029573954744, 7.236212295603657, 1], [1030.3241080229272, 5.322032470960179, 1], [1087.079346522194, 5.419440972588187, 1], [1109.9330080448126, 5.135741675744913, 1], [1124.7546607071781, 5.730541512943939, 1], [1169.0905782748014, 5.9487814945639785, 1], [1174.514490556634, 6.060583610753817, 1], [1266.9680423489845, 5.275871928480313, 1], [1297.572932523719, 5.829133543672971, 1], [1366.0625254236147, 5.272849962585787, 1], [1368.2672440792157, 5.14532337605657, 1], [1411.4253029412866, 5.375940719952288, 1], [1454.565536726448, 8.658986322796663, 1], [1489.8179917744783, 5.4996809687633785, 1]], "kois": [{"koi": "K00085.01", "period": 5.859935955, "t0": 132.040528, "dur_h": 4.0185, "prad": "2.56", "n_cluster": 2, "fap": 0.23192019950124687}, {"koi": "K00085.02", "period": 2.154911236, "t0": 133.498613, "dur_h": 3.1341, "prad": "1.42", "n_cluster": 1, "fap": 1.0}, {"koi": "K00085.03", "period": 8.13121389, "t0": 137.99254, "dur_h": 4.2386, "prad": "1.58", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6541920", "days": 1158.7401527777777, "n_flash": 14, "flashes": [[353.44234945102653, 5.016638874941795, 1], [359.13153646993305, 5.096476485843483, 1], [427.02362966047804, 5.525405727005992, 1], [660.1502585975759, 5.1409714808503955, 1], [771.0673152808013, 5.519419911930616, 1], [1018.9579846252964, 8.650992745986414, 1], [1050.6879233814107, 5.013945198651968, 1], [1087.2221339914468, 5.599287970699179, 1], [1258.438864177493, 5.436293289588705, 2], [1259.7255570112175, 5.064809005966108, 1], [1337.5195777967529, 5.073144234774745, 1], [1349.8770737913583, 8.358185234128724, 1], [1353.0626364618656, 6.9072231510288535, 1], [1548.6042262957199, 5.376891773005578, 1]], "kois": [{"koi": "K00157.05", "period": 118.3786735, "t0": 287.28744, "dur_h": 9.5574, "prad": "3.4", "n_cluster": 1, "fap": 1.0}, {"koi": "K00157.06", "period": 10.30401132, "t0": 138.50377, "dur_h": 4.2246, "prad": "1.84", "n_cluster": 1, "fap": 1.0}, {"koi": "K00157.01", "period": 13.02493307, "t0": 138.176157, "dur_h": 4.5706, "prad": "2.88", "n_cluster": 1, "fap": 1.0}, {"koi": "K00157.02", "period": 22.687155, "t0": 148.455435, "dur_h": 5.4921, "prad": "3.2", "n_cluster": 1, "fap": 1.0}, {"koi": "K00157.03", "period": 31.99552485, "t0": 154.160745, "dur_h": 4.2817, "prad": "4.12", "n_cluster": 1, "fap": 1.0}, {"koi": "K00157.04", "period": 46.6856205, "t0": 225.04604, "dur_h": 6.3794, "prad": "2.52", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8349582", "days": 1152.4635005787036, "n_flash": 12, "flashes": [[467.70031595337787, 5.223158247955368, 1], [577.5193106776642, 5.054148640607172, 1], [628.272044124169, 5.102820783420652, 1], [659.7488552339928, 5.280708411628873, 1], [871.6670041027028, 5.246698125117037, 1], [933.9800078536064, 5.156227422450021, 1], [1108.7495042414957, 5.008679627753062, 1], [1287.0682533153304, 5.340958077205535, 1], [1422.6705583355142, 5.216445282509246, 1], [1468.552700170112, 6.091398310927028, 1], [1495.0731078955432, 5.155010633140736, 1], [1528.1751001679804, 5.003781833178806, 1]], "kois": [{"koi": "K00122.01", "period": 11.523067458, "t0": 131.969055, "dur_h": 3.8757, "prad": "3.13", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8395660", "days": 1152.1712939814815, "n_flash": 14, "flashes": [[346.85517430322216, 8.956379352885412, 1], [353.44269849355624, 10.166346202895026, 1], [595.842463553483, 5.15692466822571, 1], [779.3648241422343, 7.58408026359653, 1], [875.2943965230079, 5.256717253274351, 1], [1018.9581755517793, 7.989529494169764, 1], [1072.5109701141118, 8.631508845723415, 2], [1081.538117744829, 7.341829341287167, 1], [1160.1933129727113, 9.18222775155838, 1], [1283.8466272072037, 5.071403609445948, 1], [1445.4643084146082, 5.688363422388966, 1], [1472.8305083586674, 5.039418819152532, 1], [1547.288909525545, 5.09829025501975, 1], [1568.9503475172096, 5.219327387613102, 1]], "kois": [{"koi": "K00116.01", "period": 13.57078281, "t0": 136.279194, "dur_h": 3.3539, "prad": "2.64", "n_cluster": 1, "fap": 1.0}, {"koi": "K00116.02", "period": 43.84439721, "t0": 151.93538, "dur_h": 6.802, "prad": "2.87", "n_cluster": 1, "fap": 1.0}, {"koi": "K00116.04", "period": 23.9800854, "t0": 147.537, "dur_h": 5.351, "prad": "1.31", "n_cluster": 1, "fap": 1.0}, {"koi": "K00116.03", "period": 6.164876, "t0": 135.63916, "dur_h": 3.262, "prad": "0.79", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10593626", "days": 1089.1779542824074, "n_flash": 6, "flashes": [[346.8549898071724, 7.010317319963169, 2], [353.4425823805068, 5.233817845408309, 1], [554.0991957190563, 5.323926458791069, 1], [1018.9573360760041, 6.280258261941188, 1], [1333.509796832339, 5.077707302018744, 1], [1500.514121390741, 5.163571284775431, 1]], "kois": [{"koi": "K00087.01", "period": 289.864067, "t0": 133.69719, "dur_h": 7.565, "prad": "2.34", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10723750", "days": 1085.01009375, "n_flash": 11, "flashes": [[408.5971412404251, 5.262329819119272, 1], [578.5795628762135, 5.032594123875711, 1], [615.9897835389202, 5.432716326257643, 1], [646.3942392899335, 5.214375305823296, 1], [704.9269868169722, 5.1269878518976055, 1], [926.0090800694306, 5.282018378958867, 1], [1040.2558947482903, 5.561899444618495, 1], [1299.4297038863442, 5.08285113414543, 1], [1349.8762829846382, 20.601590035469844, 1], [1445.7042972787676, 5.275111015492087, 1], [1464.6470314184626, 5.083896941570847, 1]], "kois": [{"koi": "K00209.01", "period": 50.79034648, "t0": 135.632759, "dur_h": 10.8474, "prad": "10.6", "n_cluster": 1, "fap": 1.0}, {"koi": "K00209.02", "period": 18.79591276, "t0": 145.821854, "dur_h": 7.5235, "prad": "7.39", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5446285", "days": 1075.2923512731481, "n_flash": 21, "flashes": [[370.4934215915273, 5.222250300330755, 1], [452.12740953930916, 5.548177015286968, 1], [463.2471581369973, 5.3032476417113354, 1], [487.3680769756611, 5.460538469839516, 1], [501.53057317080675, 5.0482753899545365, 1], [558.7506392523937, 5.184872005056466, 1], [618.1630849023204, 5.001520522912644, 1], [783.8398359912972, 5.187259846488057, 1], [921.3024360829077, 5.703271816937495, 1], [1125.1748526601586, 5.396206767391044, 1], [1198.5259961066404, 5.140021963842006, 1], [1229.363042367855, 5.244399960833666, 1], [1261.748330009068, 5.054245037766604, 1], [1267.4433962110925, 5.257956224078704, 1], [1325.0891354766136, 5.012689484440237, 1], [1349.8769348596834, 6.654009481782593, 1], [1515.9217334586065, 5.533375925676444, 1], [1539.6979400086057, 5.028544552122075, 1], [1565.3483678553239, 5.129413254818745, 1], [1587.2527488997366, 5.037797893816031, 1], [1588.284692624933, 5.094926178694897, 1]], "kois": [{"koi": "K00142.01", "period": 10.916108342, "t0": 133.009227, "dur_h": 3.6496, "prad": "3.93", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7051180", "days": 1074.090830439815, "n_flash": 22, "flashes": [[262.4486602756151, 5.187429704027369, 1], [286.67929695235216, 5.150049725005547, 1], [372.90136282690946, 5.128888859873159, 1], [454.1098545469504, 6.1020649220816106, 1], [463.8386589388683, 5.375661533363534, 1], [534.135992904754, 7.284644365529364, 1], [623.7074486786878, 5.170749861700386, 1], [639.5954938140712, 5.0559370383050934, 1], [670.6301542494184, 6.92993361450056, 1], [713.6041139180234, 7.095188582609589, 1], [758.4865242571323, 5.87004430569914, 1], [846.2287068528312, 5.672889340160817, 1], [946.5177229905094, 5.194745206151524, 1], [996.5790899458807, 8.399526289626786, 1], [1034.642137152463, 5.338625129518069, 1], [1106.4828219681076, 5.125281389056165, 1], [1123.2808594846283, 5.267941908430545, 1], [1157.6479555443366, 5.162042032233895, 1], [1514.0507305668943, 5.117067789982324, 1], [1535.4686484232589, 5.003165403771665, 1], [1548.6042864897754, 5.445637030713983, 1], [1571.47899309887, 5.202342514328222, 1]], "kois": [{"koi": "K00064.01", "period": 1.951082219, "t0": 157.54316, "dur_h": 1.6975, "prad": "10.35", "n_cluster": 3, "fap": 0.004987531172069825}]} +{"kic": "11295426", "days": 978.6032997685185, "n_flash": 12, "flashes": [[239.14801239235385, 5.909048193861718, 1], [240.36652112565207, 5.021658266245176, 1], [501.43884571668605, 12.004832325730971, 1], [699.3503285258339, 5.063829599273539, 1], [746.8313022171424, 5.178600318282848, 1], [909.4273773940367, 5.3041978063426845, 1], [945.1868112250013, 5.3937094283796645, 1], [1248.3646299369138, 5.051859527297524, 1], [1252.041438598615, 5.1169594399639715, 1], [1377.768355787397, 5.045142471718305, 1], [1411.484165577931, 5.950609660834983, 1], [1523.5741722306702, 5.181420885627731, 1]], "kois": [{"koi": "K00246.01", "period": 5.398752862, "t0": 173.858666, "dur_h": 3.4303, "prad": "2.21", "n_cluster": 1, "fap": 1.0}, {"koi": "K00246.02", "period": 9.60505976, "t0": 136.37863, "dur_h": 3.0063, "prad": "0.91", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4349452", "days": 1007.0610891203704, "n_flash": 14, "flashes": [[492.72366120015795, 5.105466382629281, 1], [573.0407602256746, 5.0106890116246126, 1], [581.1201892419485, 5.421828990877018, 1], [595.3200304956335, 5.102004715074288, 1], [679.265541384535, 5.186709894934693, 1], [970.1477993962617, 6.725032192206876, 1], [1269.7759359354386, 5.041012168621905, 1], [1332.0719266064843, 5.444990829459525, 1], [1377.5954207559116, 5.12970627807442, 1], [1398.6717634697488, 5.181339960187699, 1], [1405.343699583289, 6.732076587084612, 1], [1531.778552874479, 5.203294944379864, 1], [1551.7972799628988, 5.23536401466265, 1], [1553.5811989316207, 5.031973019487114, 1]], "kois": [{"koi": "K00244.01", "period": 12.720370263, "t0": 178.528297, "dur_h": 2.7306, "prad": "4.75", "n_cluster": 1, "fap": 1.0}, {"koi": "K00244.02", "period": 6.238535444, "t0": 171.706325, "dur_h": 3.5255, "prad": "2.53", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5897826", "days": 1038.4307274305556, "n_flash": 18, "flashes": [[366.41513680003845, 5.566410570750018, 1], [392.47493232832494, 5.108949275204522, 1], [443.9954682828684, 5.528265715429948, 1], [607.2213605482757, 12.121692868501652, 1], [641.2574675526848, 5.025002942373752, 1], [843.7628933239466, 5.080528579409908, 1], [860.6459202092083, 5.115435456036736, 1], [881.8794868098994, 5.7586305854259265, 1], [977.0586555424597, 5.2991848450501475, 1], [1018.9580293900144, 6.736427892252702, 1], [1021.5087232714286, 5.34640437338462, 1], [1097.719765406633, 5.239756267161434, 1], [1249.3400658571409, 7.345876617362646, 1], [1266.6487965369306, 5.070225202724662, 1], [1277.145260618665, 5.242616430725817, 1], [1333.5105776906712, 5.275069131324164, 1], [1526.89926038064, 5.739556529139189, 1], [1557.5168600359466, 5.531160031103319, 1]], "kois": [{"koi": "K00126.02", "period": 0.875197345, "t0": 131.8135915, "dur_h": 0.052, "prad": "0.73", "n_cluster": 2, "fap": 0.4389027431421446}]} +{"kic": "11446443", "days": 995.3544346064815, "n_flash": 16, "flashes": [[127.75206858543243, 10.036570478544279, 1], [152.40456084854668, 5.120158739824874, 1], [194.15251501581952, 5.0396728314394, 1], [367.93728537674906, 5.248725184688901, 1], [579.1665435576433, 5.115090711421274, 1], [673.6318714190711, 5.430324978181265, 1], [846.7088510508256, 6.810188092334704, 1], [866.1248057363991, 5.111616317590132, 1], [981.3356812548809, 5.024459589603514, 1], [1088.8092346790945, 6.476025811373363, 1], [1194.9722370116579, 14.827168858477041, 1], [1196.8181240099511, 5.439854863074129, 1], [1227.7249060701579, 5.124173727197709, 1], [1282.081856316836, 5.644023487316348, 1], [1350.8684905471455, 5.2533792893401685, 1], [1396.5276456422944, 5.05591922588667, 1]], "kois": [{"koi": "K00001.01", "period": 2.470613377, "t0": 122.763305, "dur_h": 1.74319, "prad": "13.04", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8292840", "days": 965.9532743055555, "n_flash": 8, "flashes": [[509.56869932643895, 5.105415971553445, 1], [561.3208894428026, 12.631900671645933, 1], [571.5050985783746, 9.916784216493742, 1], [577.707407117945, 7.057892984309457, 1], [603.051037490055, 7.542555505849643, 1], [817.7641632600134, 5.015653389826608, 1], [1159.5807415640447, 5.188319636618772, 1], [1526.8997913901549, 5.460302211972186, 1]], "kois": [{"koi": "K00260.02", "period": 100.2830675, "t0": 245.04318, "dur_h": 10.8636, "prad": "2.51", "n_cluster": 1, "fap": 1.0}, {"koi": "K00260.03", "period": 21.86965714, "t0": 140.29513, "dur_h": 5.5177, "prad": "1.51", "n_cluster": 1, "fap": 1.0}, {"koi": "K00260.01", "period": 10.49566303, "t0": 172.79335, "dur_h": 4.7356, "prad": "1.34", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9941662", "days": 936.1802146990741, "n_flash": 24, "flashes": [[196.59049575429526, 5.891455402526782, 1], [208.0823938024696, 6.183173002840122, 1], [224.69006460632227, 10.69780447667525, 1], [229.793640476797, 5.194447802680088, 1], [307.46903186948475, 7.581003901704828, 1], [334.4833367140527, 6.016542907636973, 1], [660.1924699014489, 6.815851309928697, 1], [674.2025915699633, 12.875002330931947, 1], [679.0656071027988, 5.881104590842451, 1], [698.4482230388166, 5.30239683536019, 1], [738.1945854797304, 5.6790538546458755, 1], [778.4105040064896, 5.155213394091352, 1], [801.3762154374563, 6.476348517622281, 1], [915.3454165322837, 5.052694030431507, 1], [985.2753786335161, 5.118492703761405, 1], [994.3940190600842, 5.814227162178851, 1], [1039.7646833307008, 6.08715734618887, 1], [1073.7887794013513, 5.361727488825722, 1], [1100.7773816503977, 5.206095716769693, 1], [1129.5672791237012, 5.7725706492187365, 1], [1167.935108074169, 5.490891274132048, 1], [1204.1859740405998, 5.001817725656443, 1], [1275.816982136137, 8.56404363130428, 1], [1578.9579993608131, 5.28398199385492, 1]], "kois": [{"koi": "K00013.01", "period": 1.763587535, "t0": 120.5659254, "dur_h": 3.16877, "prad": "21.42", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4141376", "days": 947.0511174768518, "n_flash": 13, "flashes": [[243.089322077205, 5.052801846432963, 1], [600.5720544879878, 5.1046386620874635, 1], [749.2851325339507, 5.172815543770014, 1], [749.9689724079581, 5.120334346154795, 1], [754.9758630813521, 5.0183097176169, 1], [757.9434997904027, 5.032921892066082, 1], [1051.612009827135, 5.056300097317734, 1], [1116.2099418847865, 6.272082195949133, 1], [1119.2749499000201, 5.32994879970123, 1], [1120.313649048032, 6.213335455756283, 1], [1137.0725908335517, 5.303276836204348, 1], [1254.468577824191, 5.017694788630226, 1], [1339.8550068409168, 5.106843441100374, 1]], "kois": [{"koi": "K00280.01", "period": 11.87290814, "t0": 180.895933, "dur_h": 2.5342, "prad": "2.25", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12314973", "days": 919.3916174768518, "n_flash": 22, "flashes": [[555.9576020555833, 5.079675680558204, 1], [615.6043742652182, 6.016541836372982, 2], [647.3603769669135, 7.3001642355757435, 1], [714.6651297421413, 5.46663238551967, 1], [884.2071704750706, 5.51957152470791, 1], [938.2758943712397, 5.083614418190609, 1], [973.1406839053743, 5.8870344609284, 1], [989.4534233282247, 5.051976844881824, 1], [1014.3656369351374, 5.310521455728858, 1], [1097.8969078723676, 7.647961337602502, 1], [1111.3725020628408, 5.006634379561429, 1], [1114.8795086117534, 5.4200599049297145, 1], [1123.3170546390902, 5.379102740578947, 1], [1176.2944414550075, 5.070201525066916, 1], [1206.6457313278806, 5.044609282448537, 1], [1260.161660256228, 5.817373429781337, 1], [1262.436674810575, 5.1260024885001965, 1], [1323.3874265699487, 5.86066023814192, 1], [1349.8708430319675, 5.225153666152676, 1], [1406.0806174289246, 6.18785056635833, 1], [1511.5170623326776, 5.472375843317338, 1], [1571.36142661755, 11.793182110820792, 1]], "kois": [{"koi": "K00279.01", "period": 28.45489091, "t0": 176.706265, "dur_h": 8.1593, "prad": "6.08", "n_cluster": 1, "fap": 1.0}, {"koi": "K00279.02", "period": 15.4130812, "t0": 136.94324, "dur_h": 6.6358, "prad": "2.59", "n_cluster": 1, "fap": 1.0}, {"koi": "K00279.03", "period": 7.5143967, "t0": 136.1851, "dur_h": 4.865, "prad": "0.96", "n_cluster": 2, "fap": 0.12468827930174564}]} +{"kic": "5084942", "days": 971.5712696759259, "n_flash": 14, "flashes": [[269.92309957111866, 6.509642034232049, 1], [518.9287235058655, 5.201210062897712, 1], [526.4138088051332, 5.036172706975203, 1], [528.1030405305792, 5.006127803842628, 1], [605.7790555500833, 5.064810593228901, 1], [647.5323288963336, 5.038562236092158, 1], [934.4721876296098, 5.13959898887854, 1], [967.2414689111174, 5.390335381851523, 1], [1031.1324399830773, 5.114123254749299, 1], [1142.445377416465, 5.17422344642089, 1], [1221.8407226404015, 5.040631954507069, 1], [1233.8821152177552, 5.299372335011371, 1], [1262.3043935651367, 5.086775271232254, 1], [1333.5103903635172, 5.461312019614863, 1]], "kois": [{"koi": "K00161.01", "period": 3.105507835, "t0": 133.210427, "dur_h": 1.7458, "prad": "2.68", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7670943", "days": 906.7490844907408, "n_flash": 4, "flashes": [[256.38623932908376, 5.167989824626189, 1], [637.7913013539655, 5.0157409288869115, 1], [1122.693840623746, 5.000840388574887, 1], [1475.7948747507544, 5.09129289374034, 1]], "kois": [{"koi": "K00269.01", "period": 18.01164974, "t0": 185.09162, "dur_h": 6.7367, "prad": "1.83", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8077137", "days": 900.1747766203704, "n_flash": 11, "flashes": [[553.1944273265981, 5.242434903409117, 1], [597.5419866425218, 5.820731130332288, 1], [773.3428516060521, 5.757406829277603, 1], [919.7601924619157, 5.098960681374207, 1], [989.3374111863668, 5.0009793994366305, 1], [1034.6411148010811, 5.216483987729906, 1], [1331.4863538013524, 5.1414880639560785, 1], [1406.8227673855217, 5.455374963799784, 1], [1410.3174532342746, 5.1883939912634505, 1], [1432.4107433450408, 5.5005623198491, 1], [1530.7471097608213, 5.198525594908029, 1]], "kois": [{"koi": "K00274.01", "period": 15.0896415, "t0": 175.95371, "dur_h": 4.3349, "prad": "1.42", "n_cluster": 1, "fap": 1.0}, {"koi": "K00274.02", "period": 22.8030252, "t0": 153.37541, "dur_h": 4.768, "prad": "1.29", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8711794", "days": 970.1585972222222, "n_flash": 13, "flashes": [[320.1516315799163, 5.085120593680027, 1], [552.828958899896, 5.100482937792841, 1], [871.6660183580025, 5.0649895783416845, 1], [1018.9580355556027, 6.31059242544024, 1], [1072.5115636950795, 6.368381804999714, 1], [1081.5380485099668, 8.025432303618825, 1], [1146.6956519753148, 5.242155507745771, 1], [1235.5968975444412, 5.275885078116238, 1], [1264.7398667373782, 5.0226727688308666, 1], [1281.6840285682338, 5.238837310509992, 1], [1299.568088918204, 5.101386531100474, 1], [1328.4086236327203, 5.006967926196443, 1], [1349.451195452515, 5.042956127717817, 1]], "kois": [{"koi": "K00105.01", "period": 8.981014925, "t0": 136.649307, "dur_h": 1.8478, "prad": "3.14", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11133306", "days": 890.9188431712963, "n_flash": 6, "flashes": [[656.3301469779617, 5.044099994722465, 1], [995.5321757510392, 5.241649783090765, 1], [1058.4051199696914, 5.252045748490285, 1], [1254.9622723962239, 5.13308713370137, 1], [1501.897558224773, 5.609105269247361, 1], [1526.9001240450743, 5.218065332228376, 1]], "kois": [{"koi": "K00276.01", "period": 41.74598855, "t0": 210.399151, "dur_h": 4.6125, "prad": "2.4", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11807274", "days": 892.5399427083333, "n_flash": 9, "flashes": [[671.5069389309574, 5.0456163227222035, 1], [680.861815760858, 6.341852746939898, 1], [755.1430107598644, 5.223605142122721, 1], [788.0493373591889, 5.0806202637398235, 1], [1274.4257657481066, 5.151449156412459, 1], [1299.1781608741512, 5.420887141237497, 1], [1406.0937567718065, 5.334389022495682, 1], [1433.0032402242869, 5.48040870025906, 1], [1553.7947066733832, 5.572117035395523, 1]], "kois": [{"koi": "K00262.01", "period": 7.81285862, "t0": 172.6138, "dur_h": 4.098, "prad": "1.68", "n_cluster": 1, "fap": 1.0}, {"koi": "K00262.02", "period": 9.37663713, "t0": 136.95319, "dur_h": 2.1033, "prad": "1.89", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4143755", "days": 897.394386574074, "n_flash": 7, "flashes": [[600.5782253740981, 5.085746216589178, 1], [608.943559805768, 7.162341876325908, 1], [1089.5154502183286, 5.828455786911576, 1], [1314.9418534096767, 6.552429695361171, 1], [1489.5324513491141, 5.253800054968395, 1], [1510.0647451229452, 5.0636979040605565, 1], [1515.181358145819, 5.192971867517326, 1]], "kois": [{"koi": "K00281.01", "period": 19.55662003, "t0": 189.04354, "dur_h": 8.087, "prad": "2.45", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5364071", "days": 916.8128431712963, "n_flash": 12, "flashes": [[573.6346458416956, 5.247415477116308, 1], [574.093043256973, 5.404855602261036, 1], [606.3330075509148, 6.349017121736893, 1], [608.9436941034146, 6.737765700296738, 2], [842.0835943059792, 5.513671997951057, 1], [1122.461997758306, 9.380012010492901, 1], [1129.1477959716794, 5.11593474821242, 1], [1170.8102357450916, 5.811913155061936, 1], [1207.7473093910885, 7.021646311353413, 1], [1348.332894640691, 5.657608498304922, 1], [1532.5705122275613, 5.010659510783604, 1], [1542.0355544267295, 5.143988282327023, 1]], "kois": [{"koi": "K00248.01", "period": 7.203855862, "t0": 170.285731, "dur_h": 2.5418, "prad": "2.25", "n_cluster": 1, "fap": 1.0}, {"koi": "K00248.02", "period": 10.91274065, "t0": 169.85247, "dur_h": 2.1801, "prad": "2.13", "n_cluster": 1, "fap": 1.0}, {"koi": "K00248.03", "period": 2.576571021, "t0": 172.126911, "dur_h": 1.5997, "prad": "1.57", "n_cluster": 1, "fap": 1.0}, {"koi": "K00248.04", "period": 18.59611518, "t0": 141.26331, "dur_h": 2.3052, "prad": "1.53", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6291837", "days": 898.4535503472222, "n_flash": 10, "flashes": [[608.9436984342974, 5.054256328827578, 1], [697.648673414893, 5.102540957517368, 1], [995.0417330692217, 5.211873186424715, 1], [1110.9466335079996, 5.036895901584169, 1], [1115.1408712897755, 5.277119283169441, 1], [1120.3629135096853, 5.22375123382846, 1], [1169.8967982337272, 5.092045231649113, 1], [1276.138643389604, 5.034789207962103, 1], [1284.4356472362851, 5.910019170092515, 1], [1426.05203586071, 5.250971676493737, 1]], "kois": [{"koi": "K00308.01", "period": 35.5969684, "t0": 187.52765, "dur_h": 6.691, "prad": "3.72", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8156120", "days": 893.30621875, "n_flash": 7, "flashes": [[656.6889877853973, 5.02600259446269, 1], [708.9281152474068, 5.039398789386814, 1], [772.6125219512178, 5.582018999213538, 1], [901.3510155886252, 5.004846575550048, 1], [1072.4298643205766, 5.028252765287425, 1], [1421.9284227603857, 5.561915455556978, 1], [1504.0263344900231, 5.0090250847418085, 1]], "kois": [{"koi": "K00318.01", "period": 38.5833679, "t0": 174.84868, "dur_h": 12.391, "prad": "8.56", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9579641", "days": 893.3893171296296, "n_flash": 20, "flashes": [[270.0946696399478, 12.55992932766302, 1], [279.5789433803511, 5.050415028108945, 1], [302.96772219763807, 6.273172445039768, 1], [393.7117580061822, 5.8503138638568295, 1], [430.0213579349074, 5.053688765363795, 1], [608.9431091769584, 5.87767053738368, 1], [783.8403763324313, 5.483230333919836, 1], [792.4478263080746, 6.003875132747993, 1], [796.6361151269666, 6.5484314586400245, 1], [1112.6912720830805, 8.132407111434157, 1], [1122.637545301106, 5.301311956180496, 1], [1128.9869023970386, 9.528413924505964, 1], [1160.490930322354, 5.705267844359665, 1], [1165.830323765782, 5.167652697645806, 1], [1302.1612175364571, 5.588753127025597, 1], [1307.4883212407804, 5.377363815711367, 1], [1328.408332728759, 8.478252148768988, 1], [1465.8306118695036, 7.611178276797816, 1], [1506.9859715858474, 8.256395344760373, 1], [1573.62389924335, 5.1362633620973135, 1]], "kois": [{"koi": "K00115.01", "period": 5.412203927, "t0": 133.143089, "dur_h": 2.9472, "prad": "2.94", "n_cluster": 1, "fap": 1.0}, {"koi": "K00115.02", "period": 7.12594387, "t0": 139.00492, "dur_h": 3.0014, "prad": "1.79", "n_cluster": 1, "fap": 1.0}, {"koi": "K00115.03", "period": 3.43591631, "t0": 132.6624, "dur_h": 3.133, "prad": "0.55", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11904151", "days": 908.9116857638888, "n_flash": 17, "flashes": [[283.08163961330865, 5.074335371904559, 1], [316.61484678357374, 8.33452875166788, 1], [453.6394005376278, 5.102140122656313, 1], [463.65010262667056, 5.27403083587607, 1], [529.2172614321389, 5.118197665345112, 1], [550.3180576999948, 5.232775163265933, 1], [566.2203372654185, 5.073700375197169, 1], [570.0455305518553, 5.109677188925413, 1], [809.8109402742411, 5.429859961740868, 1], [930.4832292767096, 6.067851076642816, 1], [1019.2015635254429, 5.270600700330182, 1], [1207.056414334329, 5.179116894759274, 1], [1217.8504458569369, 6.09689759575836, 1], [1365.2064031058544, 6.7595540928928495, 1], [1388.7139784606115, 6.137416597765721, 1], [1421.3440776832213, 5.043281564940723, 1], [1575.4502346065638, 5.9379186868629965, 1]], "kois": [{"koi": "K00072.01", "period": 0.837491225, "t0": 131.574858, "dur_h": 1.796, "prad": "1.43", "n_cluster": 1, "fap": 1.0}, {"koi": "K00072.02", "period": 45.29422297, "t0": 138.678725, "dur_h": 6.83, "prad": "2.26", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11187837", "days": 885.5174484953703, "n_flash": 17, "flashes": [[608.9430185702149, 10.184249346653752, 2], [699.1643438421597, 5.157344554502518, 1], [746.5268238189892, 5.008805288371917, 1], [779.3654934369697, 11.16122894843956, 1], [783.8404826192709, 11.711376475777367, 1], [1053.7471543973443, 5.634070591479135, 1], [1055.2673600447233, 5.195578032868382, 1], [1065.546459230609, 5.116896619843094, 1], [1201.8358230546364, 5.105010437948031, 1], [1239.7223341638237, 5.130942318922287, 1], [1271.5772955540888, 5.104473872655153, 1], [1288.3230219362813, 5.1749859889304775, 1], [1328.2106018077466, 7.787314322190751, 1], [1392.6524433879604, 5.387501940888019, 1], [1490.8015632518727, 5.302286247915636, 1], [1515.9026981651114, 7.190926273702757, 1], [1526.9001057240966, 5.307736281015529, 1]], "kois": [{"koi": "K00252.01", "period": 17.60461401, "t0": 170.4984, "dur_h": 3.716, "prad": "2.64", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7021681", "days": 887.1957633101852, "n_flash": 3, "flashes": [[591.8590890261185, 5.237094377927507, 1], [689.5890326539156, 5.107349320330006, 1], [1119.8398978071855, 6.080403140243497, 1]], "kois": [{"koi": "K00255.01", "period": 27.52194772, "t0": 189.824523, "dur_h": 4.047, "prad": "2.47", "n_cluster": 1, "fap": 1.0}, {"koi": "K00255.02", "period": 13.6032081, "t0": 140.3975, "dur_h": 2.592, "prad": "0.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8191672", "days": 881.7759780092592, "n_flash": 36, "flashes": [[187.0847744663115, 5.296995122406962, 1], [204.44417309677374, 6.346249861129383, 1], [216.10985354545846, 5.317594108038072, 1], [222.22770687458979, 11.043465273287458, 1], [222.37414816609817, 5.825254676312994, 1], [239.13441572032025, 5.270955233057784, 1], [400.9809267325036, 5.220387152542174, 1], [401.31194912096544, 5.0379670159621615, 1], [428.5548411090858, 5.303676835074471, 1], [467.19856185177923, 5.242214356315602, 1], [479.07368141672487, 5.088624932751429, 1], [479.11931842786, 5.672581019745756, 1], [486.1228940600704, 5.444368094151927, 1], [521.7150248134203, 5.369021541897551, 1], [594.6995362441085, 5.105145706256627, 1], [619.2094537456214, 5.287921410787775, 1], [692.7773328556214, 5.592027873111464, 1], [697.2895418415792, 5.120586765665634, 1], [701.1785564305683, 5.5159472241359175, 1], [747.9949182191995, 5.001472681945396, 1], [758.5418384773147, 5.295481686824061, 1], [778.0271192367654, 5.391420617894314, 1], [780.8156233918126, 5.32746830296118, 1], [783.8398018898733, 11.269271007896222, 1], [811.0631404332162, 5.171459985316323, 1], [849.7452571756148, 5.135690674138385, 1], [941.7578071122553, 6.0410793354296075, 1], [959.9677994172671, 5.53125295313252, 1], [974.0254654914024, 5.022087282269752, 1], [1020.1472848468547, 5.462130256895968, 1], [1034.4216595005928, 6.282967191719352, 1], [1034.6423333197308, 5.189107081844828, 1], [1081.5380208696151, 5.610742230888634, 1], [1114.6017434395835, 5.752627107785892, 1], [1129.9960579788385, 5.440071229047685, 1], [1147.1124169991526, 5.640081822317542, 1]], "kois": [{"koi": "K00018.01", "period": 3.548465446, "t0": 122.9014315, "dur_h": 4.56904, "prad": "14.92", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9414417", "days": 822.1651510416667, "n_flash": 7, "flashes": [[184.49637121488922, 5.013724145015138, 1], [839.6849892971732, 5.385052046134389, 1], [1140.2163187568876, 5.2596886877371, 1], [1202.5213423828536, 5.055772597640444, 1], [1385.264958983993, 5.291688936896042, 1], [1517.1759950310006, 5.104339989719044, 1], [1545.1423057732463, 5.274802206384812, 1]], "kois": [{"koi": "K00974.01", "period": 53.5057611, "t0": 172.98304, "dur_h": 10.5616, "prad": "2.52", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10875245", "days": 823.4388721064814, "n_flash": 17, "flashes": [[261.761850742354, 5.156132639916293, 1], [289.2674244874652, 5.358971988603333, 1], [296.85687503641384, 6.246033600503727, 1], [352.93680436201976, 5.233665631030738, 1], [433.5601461887636, 5.136511540964605, 1], [445.14963274069305, 6.414311009774281, 1], [546.7876810101734, 5.17466718875252, 1], [599.4533220980229, 7.185731436068629, 1], [607.3685940863143, 5.077856228048227, 1], [780.0708745405864, 5.055779159865356, 1], [798.1649316458788, 7.74907398030353, 1], [997.315052955375, 5.495757517375311, 1], [1119.4351841788011, 6.113378365771472, 1], [1370.6600371306922, 7.230426915611741, 1], [1490.8015454682682, 5.52168569107562, 1], [1491.3150983438463, 6.212865529344197, 1], [1590.050421411841, 5.190219922784049, 1]], "kois": [{"koi": "K00117.02", "period": 4.90144976, "t0": 138.60548, "dur_h": 4.1654, "prad": "1.7", "n_cluster": 1, "fap": 1.0}, {"koi": "K00117.01", "period": 14.74914825, "t0": 138.77799, "dur_h": 6.0995, "prad": "2.89", "n_cluster": 1, "fap": 1.0}, {"koi": "K00117.04", "period": 7.95825328, "t0": 137.80219, "dur_h": 4.377, "prad": "1.06", "n_cluster": 1, "fap": 1.0}, {"koi": "K00117.03", "period": 3.180027898, "t0": 133.49863, "dur_h": 3.5797, "prad": "1.53", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3323887", "days": 824.3767939814815, "n_flash": 14, "flashes": [[638.9511938485375, 5.173514869992974, 1], [658.0318770050362, 5.36303377929372, 1], [662.699362307234, 5.125097168724768, 1], [673.6342015326518, 6.397278891717715, 1], [773.3423318129207, 6.978331883454058, 2], [824.743363398833, 5.116933037936117, 1], [859.1558725971554, 5.038924694579864, 1], [967.4629088484871, 17.696771673441667, 1], [1009.4055994653027, 5.210548366130411, 1], [1193.8591478015514, 5.695553141421236, 1], [1246.0565125625944, 5.217957045614535, 1], [1307.713153873803, 5.137496464855961, 1], [1311.5288081471735, 5.426091363461085, 1], [1381.615178832406, 6.594084106996003, 1]], "kois": [{"koi": "K00377.01", "period": 19.270825843, "t0": 182.5436, "dur_h": 4.1281, "prad": "7.74", "n_cluster": 1, "fap": 1.0}, {"koi": "K00377.02", "period": 38.90787517, "t0": 175.425847, "dur_h": 4.5271, "prad": "7.98", "n_cluster": 1, "fap": 1.0}, {"koi": "K00377.03", "period": 1.59295975, "t0": 182.08924, "dur_h": 1.9313, "prad": "1.48", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5792202", "days": 831.5143998842592, "n_flash": 8, "flashes": [[956.0099503190286, 5.0484288664168995, 1], [1166.5007196346778, 5.302823869181384, 1], [1240.3683189880903, 5.136416365056128, 1], [1274.399118723326, 5.544381812766158, 1], [1298.5312153559134, 5.313333157996187, 1], [1302.5526292746872, 5.325458731517191, 1], [1338.1447734902613, 5.152046225941471, 1], [1378.4076013753147, 5.011080033509252, 1]], "kois": [{"koi": "K00841.01", "period": 15.33528675, "t0": 174.00278, "dur_h": 3.897, "prad": "5", "n_cluster": 1, "fap": 1.0}, {"koi": "K00841.02", "period": 31.33046135, "t0": 153.43031, "dur_h": 5.176, "prad": "6.5", "n_cluster": 1, "fap": 1.0}, {"koi": "K00841.03", "period": 6.54626149, "t0": 133.85964, "dur_h": 2.75, "prad": "2.19", "n_cluster": 1, "fap": 1.0}, {"koi": "K00841.04", "period": 269.306232, "t0": 285.6272, "dur_h": 14.931, "prad": "24", "n_cluster": 1, "fap": 1.0}, {"koi": "K00841.05", "period": 499.47338, "t0": 455.5672, "dur_h": 12.248, "prad": "3.71", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6029239", "days": 819.7471244212963, "n_flash": 15, "flashes": [[550.4101377648403, 7.405346024411836, 1], [583.0918536749377, 5.030890183137419, 1], [609.0680202849253, 5.110695301018742, 1], [708.1970572343489, 5.146923212380761, 1], [710.4719167178337, 5.101120978907475, 1], [1026.1230403780282, 5.511927461834829, 1], [1053.9503036055467, 5.106128608023668, 1], [1057.599581847462, 5.073744695059177, 1], [1074.7174294526485, 6.091109820282395, 1], [1198.0787819824836, 5.0834970028059585, 1], [1237.231269093034, 5.083198321430595, 1], [1250.8433389075726, 5.182338411000073, 1], [1306.9261630334731, 5.16612049863844, 1], [1307.0187961954143, 5.0445806578403065, 1], [1334.0422299606653, 6.83123903657105, 1]], "kois": [{"koi": "K00304.01", "period": 8.512037736, "t0": 174.909816, "dur_h": 2.1861, "prad": "2.14", "n_cluster": 2, "fap": 0.04488778054862843}, {"koi": "K00304.02", "period": 5.518195, "t0": 136.584, "dur_h": 1.81, "prad": "0.46", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7434875", "days": 830.4593229166667, "n_flash": 22, "flashes": [[754.4891894967659, 5.3775147830034085, 1], [792.7527606500298, 5.062224377377442, 1], [809.5407383331694, 5.006735317458656, 1], [935.2095638051469, 5.286205944746723, 1], [1002.6750956085307, 5.639357951218935, 1], [1018.9573717300591, 5.000500369996627, 1], [1056.9949480314099, 5.293722171607535, 1], [1076.3447525586525, 5.0011593003498405, 1], [1085.7248005498695, 5.8649519074939915, 1], [1114.0525444839222, 5.1462501926752235, 1], [1148.2058457189487, 5.30505634931283, 1], [1152.8674860259998, 5.921096269398114, 1], [1169.2296636541869, 5.006117657377718, 1], [1230.452292860944, 5.007416855917542, 1], [1342.5342588164785, 5.010582833727092, 1], [1403.3564602891784, 5.032877519342794, 1], [1499.846902643556, 9.935669136087558, 1], [1503.8396113210692, 5.278757843437069, 1], [1513.099446250686, 5.698183896941718, 1], [1513.2077448108757, 9.390586665607339, 1], [1549.9125843878937, 5.325413162646869, 1], [1553.207260894982, 6.3967051653305615, 1]], "kois": [{"koi": "K00884.01", "period": 9.439459486, "t0": 177.186096, "dur_h": 2.8979, "prad": "4.16", "n_cluster": 1, "fap": 1.0}, {"koi": "K00884.02", "period": 20.47748843, "t0": 178.66786, "dur_h": 2.8364, "prad": "2.92", "n_cluster": 1, "fap": 1.0}, {"koi": "K00884.03", "period": 3.336123113, "t0": 135.31623, "dur_h": 1.9616, "prad": "1.74", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8150320", "days": 828.9499293981481, "n_flash": 10, "flashes": [[635.6279504463455, 5.124701984912013, 1], [656.3012101720742, 5.028780344089532, 1], [685.3075704588045, 5.097251737063605, 1], [686.5853013281157, 5.076166493291492, 1], [763.9664058312555, 5.170114597053509, 1], [796.636158611349, 12.053204006092438, 1], [910.793012030801, 5.058755990884946, 1], [1160.0372967621079, 12.96391455520544, 1], [1349.8763962197263, 13.85050766108895, 1], [1501.8965114335151, 6.544476465053434, 1]], "kois": [{"koi": "K00904.01", "period": 2.211116989, "t0": 170.150139, "dur_h": 1.6485, "prad": "1.85", "n_cluster": 1, "fap": 1.0}, {"koi": "K00904.02", "period": 27.9541337, "t0": 178.73791, "dur_h": 3.95, "prad": "1.9", "n_cluster": 1, "fap": 1.0}, {"koi": "K00904.03", "period": 42.1406089, "t0": 139.0604, "dur_h": 5.083, "prad": "1.85", "n_cluster": 1, "fap": 1.0}, {"koi": "K00904.04", "period": 4.617490562, "t0": 135.04909, "dur_h": 2.2618, "prad": "1.62", "n_cluster": 1, "fap": 1.0}, {"koi": "K00904.05", "period": 10.19849255, "t0": 137.92067, "dur_h": 2.4283, "prad": "1.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8686097", "days": 805.5563732638889, "n_flash": 8, "flashes": [[758.0570013371398, 5.003545010286082, 1], [1078.662731830198, 5.030554422243629, 1], [1112.9949516033885, 5.107480641377542, 1], [1133.7899848401576, 5.013474950970432, 1], [1146.695854868478, 5.010718605809798, 1], [1211.4950924577788, 5.386009926011699, 1], [1408.6663989192311, 5.107240286765357, 1], [1433.3423422933774, 5.013859743744064, 1]], "kois": [{"koi": "K00374.01", "period": 172.7046083, "t0": 236.92574, "dur_h": 11.347, "prad": "2.85", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6922244", "days": 854.1253327546297, "n_flash": 31, "flashes": [[177.53780178384477, 6.66585399759977, 1], [198.73844386345445, 5.67072138492504, 1], [231.50125003672292, 7.896756346451272, 1], [235.0123383274622, 5.002818268257771, 1], [266.0737726017542, 5.207381856441146, 1], [293.3228854293993, 5.30029155415832, 1], [310.8426009797913, 5.253597799044932, 1], [316.680250261481, 5.24568868410584, 1], [344.96284628318244, 5.182481435676686, 1], [346.85427107050054, 7.1779609366585175, 1], [374.5563962924789, 5.4801812299385855, 1], [381.7701332992001, 5.324486253775572, 1], [384.5892979166092, 5.344072592897778, 1], [403.9632966019926, 5.073077147091385, 1], [508.4562879948062, 5.1568065787471875, 1], [523.9862869708377, 5.194330927165927, 1], [585.7799790325953, 5.227903121348875, 1], [608.9430265940246, 15.312165401158891, 1], [809.8109654708242, 5.296895454509144, 1], [863.9560591273912, 5.640638411544504, 1], [900.4427847944535, 43.72942998306228, 2], [995.0068774758183, 5.1443552617772665, 1], [998.0976948192547, 5.088395075403497, 1], [1018.956828211718, 5.802604867694091, 1], [1025.6601333348517, 5.354185249445475, 1], [1033.1378341933741, 5.15329684426083, 1], [1045.7019253774488, 5.2633939325224555, 1], [1046.1303320849984, 5.031122963343483, 1], [1125.7867537263592, 5.072417060035804, 1], [1138.0681166894065, 5.467317820036701, 1], [1160.3602425606223, 5.033873771938198, 1]], "kois": [{"koi": "K00010.01", "period": 3.522498429, "t0": 121.1194228, "dur_h": 3.19843, "prad": "14.59", "n_cluster": 2, "fap": 0.3541147132169576}]} +{"kic": "7447200", "days": 796.852839699074, "n_flash": 25, "flashes": [[642.0151166669311, 5.61374153910872, 1], [646.7991286276374, 8.902742517533696, 1], [703.6531686399248, 5.393486376603143, 1], [753.6302782316634, 5.650696447604488, 1], [789.0751313886722, 6.439684034581135, 1], [859.1347693595744, 5.276350727778087, 1], [997.6501929405786, 5.903879696104412, 1], [1014.0843872624318, 5.338628245926338, 1], [1018.9576225824931, 11.03285941567566, 1], [1059.0268725913193, 6.41338231983155, 1], [1072.5103897957379, 6.194698454739686, 1], [1081.536902965796, 9.352789070586766, 1], [1109.6049641185891, 5.06364558060247, 1], [1112.018797641329, 5.073712528005579, 1], [1160.1601726647204, 14.001136285489777, 1], [1238.3233990877561, 5.041148785612679, 1], [1274.8117159875183, 5.040762455343924, 1], [1285.79648296495, 6.897767336297155, 1], [1419.1831995146204, 5.993845647250899, 1], [1422.0662509983158, 5.7320126363900155, 1], [1425.3552311023595, 5.033677670082593, 1], [1444.0300333671767, 5.137180767957593, 1], [1504.5560918369301, 5.093187441236396, 1], [1526.899592492482, 5.478784025048343, 1], [1529.8202688157835, 5.147331707714009, 1]], "kois": [{"koi": "K00676.01", "period": 7.972510087, "t0": 171.585057, "dur_h": 2.9754, "prad": "3.22", "n_cluster": 2, "fap": 0.11970074812967581}, {"koi": "K00676.02", "period": 2.453236139, "t0": 170.892059, "dur_h": 1.6691, "prad": "2.26", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9818381", "days": 854.523115162037, "n_flash": 27, "flashes": [[286.2153267808899, 5.198129788694048, 1], [290.34684935133555, 5.771668701912046, 1], [301.7946874606132, 5.5141423466148805, 1], [353.41038008319447, 5.290500023197544, 1], [353.4423919874389, 5.2287438254648935, 1], [534.6639631564103, 5.374880194107477, 1], [550.3183936743808, 5.698586711115912, 1], [909.5769396144096, 5.054960618490142, 1], [913.0166649912935, 5.2509660468649235, 1], [915.6724013523199, 5.56624344357461, 1], [985.2677956831176, 6.058796948367758, 1], [1005.6681498320831, 5.476885446346928, 1], [1034.641337907262, 5.09623203721093, 1], [1044.4811161569305, 5.003411848320951, 1], [1048.5772207146147, 5.4106579681913445, 1], [1079.0685335998642, 5.141783437394605, 1], [1081.537520850121, 5.374834936140138, 1], [1106.2704787906841, 5.443156140341583, 1], [1155.1537516045646, 5.097662311755316, 1], [1237.38782192285, 5.087839710376113, 1], [1288.3723895257353, 5.732090357748853, 1], [1304.0404077299027, 5.7410295241070886, 1], [1331.9268658449728, 6.224663006076657, 1], [1333.509777600295, 5.340613316843239, 1], [1362.8608265094808, 5.227437561351522, 1], [1382.3852421198899, 5.192976760763727, 1], [1400.5909671589689, 5.172204953378669, 1]], "kois": [{"koi": "K00135.01", "period": 3.024092505, "t0": 132.4168573, "dur_h": 2.8021, "prad": "12.14", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3102384", "days": 752.4885219907408, "n_flash": 3, "flashes": [[677.134438720248, 8.09496998652969, 1], [759.1987093369389, 5.570800313494865, 1], [768.4456228140989, 5.228070124894103, 1]], "kois": [{"koi": "K00273.01", "period": 10.573751447, "t0": 175.067739, "dur_h": 1.7259, "prad": "2.07", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9592705", "days": 779.7584131944444, "n_flash": 12, "flashes": [[885.6250456639318, 5.183638570835466, 1], [978.1731177146648, 5.4711934957503905, 1], [1018.9576441512254, 5.626270643610656, 1], [1019.6571317732814, 6.532420498445146, 1], [1059.4200757475337, 5.1651201583436555, 1], [1119.18567030946, 6.088259055523263, 1], [1134.4398320562032, 5.055806903254778, 1], [1172.7312495722945, 5.3041204744319295, 1], [1238.3231776677349, 5.245672782387657, 1], [1297.5682787017067, 5.648249984535283, 1], [1400.255095784276, 6.161101661589885, 1], [1476.5274189740667, 5.15572612294843, 1]], "kois": [{"koi": "K00288.01", "period": 10.27532513, "t0": 177.27227, "dur_h": 6.3093, "prad": "3.04", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7445445", "days": 746.0933524305556, "n_flash": 13, "flashes": [[773.3424862216634, 5.570260248915449, 1], [776.1507587608867, 5.00982453322087, 1], [780.8941171881816, 6.80034860024933, 2], [893.0382772834128, 5.111799577891573, 1], [953.2178507180652, 5.1457953813975505, 1], [970.3622694314909, 5.28014530669191, 1], [1195.9955287230114, 7.018362946740095, 1], [1301.5559471244778, 5.5590035518589165, 1], [1392.652629106953, 5.328252566507901, 1], [1474.4667953011449, 5.070660444846039, 1], [1499.841423452759, 5.395288052960407, 1], [1511.706470404868, 5.04179564624545, 1], [1548.604590603034, 6.924390211664984, 1]], "kois": [{"koi": "K00567.01", "period": 10.68758211, "t0": 169.93115, "dur_h": 3.3812, "prad": "2.64", "n_cluster": 1, "fap": 1.0}, {"koi": "K00567.02", "period": 20.30303506, "t0": 176.8028, "dur_h": 4.5038, "prad": "2.16", "n_cluster": 1, "fap": 1.0}, {"koi": "K00567.03", "period": 29.02235217, "t0": 198.37025, "dur_h": 4.0263, "prad": "2.55", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11853905", "days": 770.5249571759259, "n_flash": 15, "flashes": [[193.34257286320644, 5.092821290722657, 1], [287.4481628219364, 7.931475868380766, 1], [352.85420907614025, 5.1521097028095895, 1], [631.6882954420798, 5.203146582261767, 1], [809.5412105612704, 5.3007090742463205, 1], [913.3044649972871, 5.082303382432817, 1], [957.530626425214, 5.084198091422851, 1], [976.5364608861855, 5.382825710736722, 1], [1019.2015609227456, 10.13968275672397, 1], [1065.3194602639705, 5.004574640168131, 1], [1183.9760493206559, 7.3182710544418255, 1], [1188.0962439946888, 5.053241204694968, 1], [1223.5938328569173, 5.359061937774644, 1], [1233.0467082807227, 5.170691808817046, 1], [1244.566158202324, 5.131994209760539, 1]], "kois": [{"koi": "K00007.01", "period": 3.213668926, "t0": 123.611878, "dur_h": 3.98235, "prad": "4.13", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8056665", "days": 704.3643431712962, "n_flash": 8, "flashes": [[381.12041177025094, 5.3000112492338305, 1], [718.63489267962, 5.122494036444731, 1], [1018.9581231849079, 5.61612203351947, 1], [1069.397651256084, 5.3582774822236185, 1], [1081.5380290366666, 8.057194332772196, 1], [1110.0424550961034, 5.048493114977041, 1], [1166.6422123021039, 6.3677754389084, 1], [1587.79834575321, 5.2190985448495, 1]], "kois": [{"koi": "K00089.01", "period": 84.6877524, "t0": 150.57084, "dur_h": 10.0248, "prad": "3.37", "n_cluster": 1, "fap": 1.0}, {"koi": "K00089.02", "period": 207.5829306, "t0": 289.88311, "dur_h": 7.0686, "prad": "4.52", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12105051", "days": 737.8202957175926, "n_flash": 12, "flashes": [[389.5811713036819, 5.032038101434426, 1], [445.1502564690163, 7.670271025013287, 2], [467.9350037747063, 5.178926671436054, 1], [529.2171521939381, 9.883790999061807, 1], [565.5357500612299, 5.024807175606704, 1], [575.277883507064, 5.2511845525609795, 1], [715.5243621119298, 5.034040551055352, 1], [742.5200070103674, 5.457172063266414, 1], [780.5665322534624, 5.061710670539919, 1], [783.8407013613323, 11.15717621000473, 1], [986.5924357890472, 5.011574763418756, 1], [1035.9084082032132, 5.068445799097571, 1]], "kois": [{"koi": "K00141.01", "period": 2.624234833, "t0": 132.304988, "dur_h": 1.3874, "prad": "5.11", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6071903", "days": 714.8912731481481, "n_flash": 11, "flashes": [[546.393848224383, 5.288219063925902, 1], [978.1743658895284, 6.027807986732964, 1], [998.0988447451236, 5.1509523707786515, 1], [1019.2026629282263, 6.60209844763309, 1], [1093.1606295642632, 5.081012865322364, 1], [1144.2705650992357, 5.0906706205801875, 1], [1223.593037326893, 6.9131295711683185, 1], [1312.5604249948665, 5.202328016263878, 1], [1314.9443923420258, 5.087151269890577, 1], [1349.8771939953003, 6.676760246590178, 1], [1369.492460566733, 5.829058719884143, 1]], "kois": [{"koi": "K00306.01", "period": 24.30784323, "t0": 178.36629, "dur_h": 2.6054, "prad": "2.14", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9002278", "days": 729.304074074074, "n_flash": 15, "flashes": [[645.0541565863386, 5.112492476190095, 1], [669.1655793815517, 5.026196454318511, 1], [714.5525174239083, 5.122159830835088, 1], [791.3432285340023, 5.0026194734485525, 1], [847.5183964882308, 6.370038633919769, 2], [879.6595517137102, 5.195401057046674, 1], [1034.4211865070538, 5.06156180522363, 1], [1079.60573861593, 5.077938538817162, 1], [1089.89174071663, 5.168715787640979, 1], [1337.5106776129905, 7.195206244445817, 1], [1349.8762091375102, 13.216644844595205, 1], [1435.294610764402, 5.095405496152867, 1], [1470.450996015963, 6.287065578392666, 1], [1490.9933138179622, 5.006599685032727, 1], [1501.8966604180023, 5.941069329535824, 2]], "kois": [{"koi": "K00701.01", "period": 18.16407304, "t0": 180.812425, "dur_h": 2.9355, "prad": "1.98", "n_cluster": 1, "fap": 1.0}, {"koi": "K00701.02", "period": 5.71489692, "t0": 170.921904, "dur_h": 2.3572, "prad": "1.33", "n_cluster": 1, "fap": 1.0}, {"koi": "K00701.03", "period": 122.3858681, "t0": 150.41158, "dur_h": 7.123, "prad": "1.72", "n_cluster": 1, "fap": 1.0}, {"koi": "K00701.05", "period": 12.4418003, "t0": 134.6507, "dur_h": 3.572, "prad": "0.57", "n_cluster": 1, "fap": 1.0}, {"koi": "K00701.04", "period": 267.282521, "t0": 589.71975, "dur_h": 7.788, "prad": "1.43", "n_cluster": 1, "fap": 1.0}]} +{"kic": "2162635", "days": 678.8143159722222, "n_flash": 5, "flashes": [[1035.9079154072097, 5.023428773987322, 1], [1061.7489319140295, 5.079908710368795, 1], [1072.5107452776138, 6.896588643722522, 1], [1445.4634014671901, 8.45861180892009, 2], [1462.4027900736037, 5.139382483096953, 1]], "kois": [{"koi": "K01032.01", "period": 1500.1406772, "t0": 176.08226, "dur_h": 25.727, "prad": "18.35", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3640905", "days": 663.9696759259259, "n_flash": 8, "flashes": [[982.8043332822199, 6.2344197300424495, 1], [1022.120532379944, 5.038298117435336, 1], [1115.3932571026671, 5.102539027929007, 1], [1230.5102253338118, 5.067774275394145, 1], [1254.1761732573286, 6.313406525502633, 1], [1420.9537677112385, 5.093315094495304, 1], [1425.8521355380726, 5.595638351450051, 1], [1445.4633592104947, 5.603904277352277, 1]], "kois": [{"koi": "K01221.01", "period": 30.1599411, "t0": 138.51774, "dur_h": 7.874, "prad": "4.54", "n_cluster": 1, "fap": 1.0}, {"koi": "K01221.02", "period": 51.0771048, "t0": 152.35694, "dur_h": 11.233, "prad": "3.66", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6949607", "days": 664.7216481481481, "n_flash": 9, "flashes": [[773.3424292264681, 7.053869843375981, 1], [940.8146267542979, 5.665535772251174, 1], [1020.3558945995537, 5.055742631846878, 1], [1081.5368400178777, 11.195886215550953, 1], [1277.3728829113752, 5.200922184792863, 1], [1297.2648616220467, 5.200190406497602, 1], [1445.4636705200828, 5.07150840914926, 1], [1563.178221758426, 5.149134931983234, 1], [1568.9516023178003, 5.486073025814748, 2]], "kois": [{"koi": "K00870.01", "period": 5.912273234, "t0": 172.184012, "dur_h": 2.3254, "prad": "1.73", "n_cluster": 1, "fap": 1.0}, {"koi": "K00870.02", "period": 8.98581901, "t0": 175.68418, "dur_h": 2.8606, "prad": "1.65", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7869917", "days": 671.896035300926, "n_flash": 10, "flashes": [[834.7279410585252, 5.25191460501765, 1], [1176.3541096506306, 5.283760085109775, 1], [1227.540167843079, 5.233260773145213, 1], [1234.871344821935, 5.023338021005101, 1], [1248.0623914568496, 5.371754601369572, 1], [1353.1353643125622, 5.000510516333771, 1], [1458.6357030931977, 5.253901228081646, 1], [1489.818220961788, 5.500316747462733, 1], [1512.3463403869973, 5.004231825829948, 1], [1523.211048574718, 5.018236401550538, 1]], "kois": [{"koi": "K01525.01", "period": 7.71467686, "t0": 133.55635, "dur_h": 4.5871, "prad": "4.65", "n_cluster": 1, "fap": 1.0}, {"koi": "K01525.02", "period": 11.8061737, "t0": 138.2641, "dur_h": 4.472, "prad": "2.87", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8561063", "days": 685.0712152777778, "n_flash": 9, "flashes": [[921.2938566996017, 17.140247597891186, 3], [978.1738462918584, 5.413580913781115, 1], [1020.1467791179748, 5.772243333770877, 1], [1080.1686917170664, 5.092040128981856, 1], [1100.100305618871, 5.3289075615873704, 1], [1221.3736523838961, 8.085873966347433, 2], [1349.8766756286059, 12.980268586044408, 1], [1406.080401471634, 5.117680685957675, 1], [1495.648628329218, 5.031933385163403, 1]], "kois": [{"koi": "K00961.01", "period": 1.213770423, "t0": 170.483645, "dur_h": 0.5532, "prad": "0.78", "n_cluster": 1, "fap": 1.0}, {"koi": "K00961.02", "period": 0.453287416, "t0": 133.869741, "dur_h": 0.4445, "prad": "0.76", "n_cluster": 1, "fap": 1.0}, {"koi": "K00961.03", "period": 1.865114193, "t0": 133.792344, "dur_h": 0.4279, "prad": "0.66", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8962094", "days": 648.4936244212963, "n_flash": 8, "flashes": [[773.0741987110523, 6.138440328575786, 1], [782.0472946262089, 5.304029149281248, 1], [909.0141587092294, 5.430551234878812, 1], [1118.9499243442551, 5.035747260741783, 1], [1206.6211926964534, 5.013039135241707, 1], [1223.512252801047, 5.282459857923859, 1], [1475.9920184874936, 5.306149997095504, 1], [1501.8971726199743, 5.087512935167354, 1]], "kois": [{"koi": "K00700.01", "period": 30.86436512, "t0": 172.93477, "dur_h": 2.9557, "prad": "2.23", "n_cluster": 1, "fap": 1.0}, {"koi": "K00700.02", "period": 9.36059705, "t0": 171.97292, "dur_h": 3.2069, "prad": "1.42", "n_cluster": 1, "fap": 1.0}, {"koi": "K00700.03", "period": 14.6672293, "t0": 145.42058, "dur_h": 3.742, "prad": "1.21", "n_cluster": 1, "fap": 1.0}, {"koi": "K00700.04", "period": 68.1609897, "t0": 187.03346, "dur_h": 5.662, "prad": "1.45", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9451706", "days": 643.4375648148148, "n_flash": 19, "flashes": [[423.1849542084601, 5.138908531597817, 1], [427.4148069778894, 5.017630424876846, 1], [637.7719904784462, 5.101115905259099, 1], [649.7661076263248, 5.099908097551948, 1], [675.7580400490042, 5.005821842473687, 1], [698.0087427570252, 5.366882525495018, 1], [698.1919578401212, 5.305226523722376, 1], [703.7728724116823, 5.296216696870888, 1], [704.5370648765456, 5.2203493716201095, 1], [706.5885345612405, 5.1426957053509605, 1], [707.7402734445641, 5.693224608281151, 1], [802.2147730483339, 5.293477223107625, 1], [1018.9570651975737, 5.963245925575663, 1], [1020.3553557792693, 5.494733661946015, 1], [1046.2526207508927, 5.046189348845866, 1], [1085.376152908204, 5.266662009762037, 1], [1090.3100551396783, 5.245074318043344, 1], [1179.2454574114527, 5.07936515888476, 1], [1568.5591335057688, 5.007329049744371, 1]], "kois": [{"koi": "K00271.03", "period": 14.4359459, "t0": 141.51253, "dur_h": 3.414, "prad": "1.46", "n_cluster": 1, "fap": 1.0}, {"koi": "K00271.01", "period": 48.6303805, "t0": 172.54736, "dur_h": 7.0805, "prad": "2.48", "n_cluster": 1, "fap": 1.0}, {"koi": "K00271.02", "period": 29.39337161, "t0": 209.06737, "dur_h": 7.0445, "prad": "2.5", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10810838", "days": 645.5545300925926, "n_flash": 6, "flashes": [[353.4428442638746, 6.6482044943685965, 1], [508.0885889758065, 5.376103501749264, 1], [565.3016618567126, 5.014505898125253, 1], [1349.8711180824903, 5.258627485624145, 1], [1349.8765670564171, 6.360833111933657, 1], [1351.7639406675153, 5.0593949477393005, 1]], "kois": [{"koi": "K00174.01", "period": 56.35407916, "t0": 144.83768, "dur_h": 3.4449, "prad": "2.59", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11804465", "days": 698.1653402777778, "n_flash": 22, "flashes": [[198.324330756579, 5.13076358452623, 1], [212.54410594614455, 5.199874216813911, 1], [222.6566558895138, 5.260175656988885, 1], [231.89596805003384, 5.286833317819595, 1], [238.29160441997374, 5.348667543199535, 1], [244.97396806109464, 5.482097285081186, 1], [248.07164637010283, 5.210584333830446, 1], [273.14919194092363, 7.67049405050301, 1], [346.85505300113437, 8.033323421409385, 2], [353.44269018004707, 7.460285672873591, 1], [362.7622787235887, 5.363689464439942, 1], [449.7446132846744, 5.322202027293166, 1], [450.2908858368464, 5.002321666102893, 1], [490.38484274889197, 5.953465807428442, 1], [550.3180706172061, 5.699317027605728, 1], [572.6133907105832, 5.111799214446258, 1], [590.4219543121872, 5.1131725146585705, 1], [616.2939946172337, 5.238418006751326, 1], [815.7034080618541, 6.003095408486067, 1], [881.6323240281126, 5.122461517846701, 1], [926.6478140914041, 5.12888439921133, 1], [1041.4987508661288, 5.421228550885867, 1]], "kois": [{"koi": "K00020.01", "period": 4.437962934, "t0": 171.0091259, "dur_h": 4.69813, "prad": "18.05", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3662838", "days": 651.1643518518518, "n_flash": 7, "flashes": [[359.3430657233039, 5.27267455751934, 1], [745.3210783618051, 5.220693077533462, 1], [773.3413677417338, 5.620513324453411, 1], [780.5864831422732, 5.863414928575149, 1], [835.2527300176589, 5.0642540237710545, 1], [1406.0806499564133, 5.788244537884693, 1], [1491.0710960001816, 6.382895326723768, 1]], "kois": [{"koi": "K00302.01", "period": 24.85466504, "t0": 173.99971, "dur_h": 9.182, "prad": "7.61", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5972334", "days": 645.059345486111, "n_flash": 20, "flashes": [[375.1134811655138, 5.055080754211622, 1], [446.8904672899298, 5.176691952508972, 1], [455.04513394831156, 5.15532937336897, 1], [479.75926885719673, 5.007181635921117, 1], [695.8895093569299, 5.143429393683079, 1], [773.3422542483022, 5.02824243992353, 1], [783.8397362716787, 5.628630931987496, 1], [795.0824682507955, 5.051245577330231, 1], [900.1371312550473, 5.443235053896229, 1], [903.9508683377644, 5.066314173826434, 1], [1083.6530878397607, 5.122744172238157, 1], [1093.498956889067, 6.868881312924883, 1], [1160.1531205163192, 5.860119228228415, 1], [1160.1905826141083, 8.129462077957275, 1], [1168.7401457087908, 5.448222159410237, 1], [1170.1330650239106, 5.033971081399562, 1], [1179.2459929712277, 6.45690861187684, 1], [1207.055695204901, 5.098855176299503, 1], [1222.4728483930012, 5.2442436454228405, 1], [1226.275036470688, 5.0122046636790145, 1]], "kois": [{"koi": "K00191.01", "period": 15.358767771, "t0": 132.385085, "dur_h": 4.1223, "prad": "10.89", "n_cluster": 1, "fap": 1.0}, {"koi": "K00191.02", "period": 2.418406841, "t0": 132.505587, "dur_h": 2.0744, "prad": "2.25", "n_cluster": 1, "fap": 1.0}, {"koi": "K00191.03", "period": 0.708621057, "t0": 133.36565, "dur_h": 1.5041, "prad": "1.2", "n_cluster": 2, "fap": 0.5685785536159601}, {"koi": "K00191.04", "period": 38.6520796, "t0": 164.04455, "dur_h": 5.607, "prad": "2.07", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10874614", "days": 659.4489878472223, "n_flash": 20, "flashes": [[171.02524040432763, 5.030401565822476, 1], [173.29752346887108, 5.191320208553938, 1], [192.7882535758181, 6.062129939366451, 1], [203.99763655971037, 5.537058919139625, 1], [226.8248548108022, 5.080782129935905, 1], [229.22920673035696, 5.546428052199433, 2], [252.89587348536588, 7.585509063931304, 1], [471.413697485179, 5.226380353824628, 1], [482.92434261409653, 5.646527232087922, 1], [496.1269810201702, 5.144790129729677, 1], [496.7325195570156, 5.335071901410305, 1], [524.1608761440002, 5.192747207440207, 1], [608.9433245865148, 5.336659142482418, 1], [834.1445273151257, 5.356374093455785, 1], [855.8409777677953, 5.267638468081684, 1], [864.2279191813504, 5.52540604181815, 1], [881.8791291212619, 5.745565848037098, 1], [927.6913208683545, 5.5679556864787845, 1], [966.1090668193938, 5.09085027371214, 1], [1141.4629618486942, 5.287608303654406, 1]], "kois": [{"koi": "K00017.01", "period": 3.234699282, "t0": 121.4865708, "dur_h": 3.59385, "prad": "13.06", "n_cluster": 1, "fap": 1.0}]} +{"kic": "1871056", "days": 652.4060596064814, "n_flash": 11, "flashes": [[824.6168150759113, 5.069980194871943, 1], [1035.9079194129445, 5.457618752095298, 1], [1068.4439977668953, 5.093796938090564, 1], [1072.5107403935253, 5.496999594110912, 1], [1200.15108420662, 5.090509332743313, 1], [1254.1761305147447, 5.03238928598102, 1], [1331.4871826013768, 5.023439435835644, 1], [1331.488544895321, 5.469305193501548, 1], [1420.704600583711, 5.944130535290364, 1], [1445.4633964686363, 5.329470157569726, 2], [1496.1622279534058, 5.187001074498822, 1]], "kois": [{"koi": "K01001.01", "period": 40.8065333, "t0": 155.71586, "dur_h": 13.135, "prad": "3.71", "n_cluster": 2, "fap": 0.0024937655860349127}, {"koi": "K01001.02", "period": 140.10765, "t0": 216.21749, "dur_h": 18.503, "prad": "3.42", "n_cluster": 2, "fap": 0.0024937655860349127}]} +{"kic": "6185476", "days": 623.7486979166666, "n_flash": 4, "flashes": [[681.4211247029089, 5.084817089424828, 1], [1274.4859206254914, 5.120515861886955, 1], [1408.6659168450715, 5.275582827300209, 1], [1507.4842266663763, 5.236743612328004, 1]], "kois": [{"koi": "K00227.01", "period": 17.65737838, "t0": 136.585509, "dur_h": 3.509, "prad": "2.45", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8008067", "days": 634.9070393518518, "n_flash": 5, "flashes": [[776.2737530740051, 5.13960249223513, 1], [1018.9568976903611, 5.699046938267017, 1], [1105.2158145973153, 5.159093294281359, 1], [1125.3502638129794, 5.149854839681453, 1], [1135.4213439953382, 5.281576540792566, 1]], "kois": [{"koi": "K00316.01", "period": 15.77111067, "t0": 184.90347, "dur_h": 5.0574, "prad": "2.62", "n_cluster": 1, "fap": 1.0}, {"koi": "K00316.02", "period": 157.0659976, "t0": 481.26942, "dur_h": 8.1289, "prad": "2.63", "n_cluster": 1, "fap": 1.0}, {"koi": "K00316.03", "period": 7.305706326, "t0": 131.77905, "dur_h": 1.4228, "prad": "2.11", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9139084", "days": 635.8517725694444, "n_flash": 4, "flashes": [[783.8398254075801, 8.329430363928305, 2], [811.6002377397454, 5.136091521750654, 1], [1033.5828211615444, 6.621146177335454, 1], [1157.6310016036368, 5.680335456647507, 1]], "kois": [{"koi": "K00323.01", "period": 5.83599485, "t0": 169.87446, "dur_h": 2.062, "prad": "1.92", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11075737", "days": 619.2286909722222, "n_flash": 10, "flashes": [[552.8288390121379, 5.10230705280867, 1], [608.942923486371, 8.283756847697724, 2], [631.1510636466483, 5.037863927720531, 1], [890.9231166336467, 5.852538724599681, 1], [940.0927166395777, 9.511938717295944, 1], [1018.9571776667653, 6.293817035194607, 1], [1030.6373355611431, 5.8833078332410595, 1], [1410.2143406139949, 5.1097295814564685, 1], [1418.573425066279, 5.518971174522123, 1], [1573.786772208994, 5.414148559743125, 1]], "kois": [{"koi": "K00292.01", "period": 2.586639524, "t0": 171.842572, "dur_h": 2.253, "prad": "1.44", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5031857", "days": 586.4259461805556, "n_flash": 6, "flashes": [[980.9812249767929, 5.309398053591472, 1], [1018.958008534908, 7.9395882744366855, 1], [1331.488401011804, 6.381386582678529, 1], [1392.6530507998032, 6.5693091726831225, 1], [1445.4638327923967, 7.821120798405708, 1], [1536.4901769720454, 5.028099327910222, 1]], "kois": [{"koi": "K01573.01", "period": 24.81097206, "t0": 156.506971, "dur_h": 3.2245, "prad": "4.22", "n_cluster": 1, "fap": 1.0}, {"koi": "K01573.02", "period": 7.136922, "t0": 131.75317, "dur_h": 2.8005, "prad": "1.38", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7287995", "days": 585.8340405092592, "n_flash": 6, "flashes": [[638.6805526377211, 5.240875214523366, 1], [776.777320323803, 5.087919308633097, 1], [778.116409663904, 7.653568782858604, 1], [921.300795115123, 6.747462535770131, 1], [929.3565898257439, 5.137838367055449, 1], [980.8650987445508, 6.659010012597168, 1]], "kois": [{"koi": "K00877.01", "period": 5.95489993, "t0": 170.955871, "dur_h": 2.3892, "prad": "2.33", "n_cluster": 1, "fap": 1.0}, {"koi": "K00877.02", "period": 12.03987488, "t0": 181.22536, "dur_h": 2.7363, "prad": "2.18", "n_cluster": 1, "fap": 1.0}, {"koi": "K00877.03", "period": 20.83762895, "t0": 132.08488, "dur_h": 2.3734, "prad": "1.42", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8564587", "days": 615.374152199074, "n_flash": 7, "flashes": [[1065.5464184026205, 5.10967421529271, 1], [1199.048320866692, 5.030111437741821, 1], [1213.6507090542, 5.015222726024051, 1], [1364.2767576634797, 5.099527135905473, 1], [1365.6621270035394, 5.019733443694044, 1], [1424.1866142246145, 5.308429594639726, 1], [1574.479695916285, 5.253834628074717, 1]], "kois": [{"koi": "K01270.01", "period": 5.729317577, "t0": 138.559971, "dur_h": 1.1816, "prad": "2.41", "n_cluster": 1, "fap": 1.0}, {"koi": "K01270.02", "period": 11.60908533, "t0": 133.99324, "dur_h": 2.2603, "prad": "1.71", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10904857", "days": 609.8556024305556, "n_flash": 4, "flashes": [[608.9427258357391, 8.678999603128634, 1], [1207.748638236364, 5.205623238095949, 1], [1349.8753147149328, 17.189514293929737, 1], [1402.1873258887426, 5.001455311411532, 1]], "kois": [{"koi": "K00194.01", "period": 3.120828136, "t0": 139.466594, "dur_h": 2.1878, "prad": "14.16", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9597345", "days": 607.6003668981482, "n_flash": 9, "flashes": [[1018.5831501284047, 5.396231430539123, 1], [1053.555303572226, 5.006690086009835, 1], [1065.5466030313837, 5.427757950442677, 1], [1242.05030035675, 5.230103922966398, 1], [1349.8760052966754, 9.319902409308286, 2], [1374.803875457772, 5.130758282287915, 1], [1391.257918405041, 5.0864041395027995, 1], [1508.2322915080222, 5.217109228718561, 1], [1554.1905185781216, 5.281462255985511, 1]], "kois": [{"koi": "K00711.01", "period": 44.6996563, "t0": 174.82144, "dur_h": 6.2289, "prad": "3.05", "n_cluster": 1, "fap": 1.0}, {"koi": "K00711.02", "period": 3.619309734, "t0": 135.44164, "dur_h": 3.0504, "prad": "1.47", "n_cluster": 1, "fap": 1.0}, {"koi": "K00711.03", "period": 124.5245224, "t0": 254.17788, "dur_h": 9.654, "prad": "2.69", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11905011", "days": 589.7437511574074, "n_flash": 3, "flashes": [[1018.9570840900342, 9.116493151941587, 1], [1081.5378395099979, 5.0281121860260924, 1], [1233.6951112253591, 5.142596846317011, 1]], "kois": [{"koi": "K00297.01", "period": 5.65178922, "t0": 172.27915, "dur_h": 3.0933, "prad": "2.03", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4139816", "days": 575.237634837963, "n_flash": 3, "flashes": [[849.6258018936715, 5.928362828883361, 1], [967.462862923574, 8.678685066968681, 1], [1491.3142453747205, 5.008191721752936, 1]], "kois": [{"koi": "K00812.02", "period": 20.06036336, "t0": 147.46554, "dur_h": 3.3203, "prad": "1.96", "n_cluster": 1, "fap": 1.0}, {"koi": "K00812.03", "period": 46.1842039, "t0": 165.23729, "dur_h": 4.758, "prad": "1.83", "n_cluster": 1, "fap": 1.0}, {"koi": "K00812.04", "period": 7.82502168, "t0": 136.54995, "dur_h": 2.186, "prad": "1.2", "n_cluster": 1, "fap": 1.0}, {"koi": "K00812.01", "period": 3.340218842, "t0": 171.979062, "dur_h": 1.9104, "prad": "2.03", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5088536", "days": 526.4990729166667, "n_flash": 10, "flashes": [[543.2147378409645, 5.088121947810809, 1], [557.4776719619476, 5.006948479432204, 1], [614.9263604586959, 5.250998803330585, 1], [641.1608175784058, 5.067477375929448, 1], [1136.9261756182677, 9.497723602402939, 1], [1152.3734463150686, 5.179637218684979, 1], [1286.6803171058782, 5.833443471950329, 1], [1374.3371561616223, 5.177677239392605, 1], [1392.6524233909513, 6.490243215000304, 1], [1567.5064335418356, 5.1714119317739735, 1]], "kois": [{"koi": "K00282.02", "period": 8.45744892, "t0": 139.06689, "dur_h": 3.2893, "prad": "1.02", "n_cluster": 1, "fap": 1.0}, {"koi": "K00282.03", "period": 87.5177787, "t0": 201.15451, "dur_h": 2.55, "prad": "1.85", "n_cluster": 1, "fap": 1.0}, {"koi": "K00282.01", "period": 27.50871575, "t0": 182.103494, "dur_h": 5.9291, "prad": "2.98", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6266741", "days": 542.2904895833333, "n_flash": 9, "flashes": [[946.7370152679432, 5.6531226744212, 1], [967.2419464728955, 7.251127097185773, 2], [1156.6689514540267, 5.324691640719303, 1], [1157.647742613677, 5.695191197079921, 1], [1173.2083541593674, 5.258818565497604, 1], [1301.681491007621, 8.364418286789732, 1], [1319.4431259139383, 5.027891378982326, 1], [1492.6984751023847, 5.28004995592194, 1], [1501.896301489658, 5.785644352559167, 1]], "kois": [{"koi": "K00508.01", "period": 7.930583519, "t0": 169.516944, "dur_h": 3.6083, "prad": "3.05", "n_cluster": 1, "fap": 1.0}, {"koi": "K00508.02", "period": 16.6658994, "t0": 180.20215, "dur_h": 4.1934, "prad": "2.85", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7419318", "days": 553.9337986111111, "n_flash": 6, "flashes": [[571.8429752469092, 5.178100570766012, 1], [626.6046372359706, 7.148786152366532, 2], [767.5027929922217, 5.132191821513799, 1], [900.4427040913943, 39.38191933108196, 3], [1034.4210812008387, 5.187982882532528, 1], [1150.184757592855, 7.454276266409858, 1]], "kois": [{"koi": "K00313.01", "period": 18.73577127, "t0": 177.634372, "dur_h": 3.0356, "prad": "2.1", "n_cluster": 1, "fap": 1.0}, {"koi": "K00313.02", "period": 8.43639829, "t0": 179.88704, "dur_h": 3.2451, "prad": "1.5", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7887791", "days": 514.5621950231481, "n_flash": 10, "flashes": [[1018.9575007722524, 6.581379431213451, 1], [1066.2102588496782, 5.248975432086468, 1], [1244.6424993214896, 5.18875629298734, 1], [1300.861845247331, 5.340477339677666, 1], [1301.9618733716925, 5.678804357789281, 1], [1341.4377117436816, 6.513143741375064, 1], [1349.8766873288114, 7.083375638426554, 1], [1361.4739022327412, 6.306293729710416, 1], [1474.0227232883626, 6.550950932556354, 1], [1474.883636210885, 5.550830469618139, 1]], "kois": [{"koi": "K01964.01", "period": 2.229326354, "t0": 133.09423, "dur_h": 1.9946, "prad": "0.6", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9955262", "days": 537.387004050926, "n_flash": 5, "flashes": [[372.3105067533688, 5.512359166588506, 1], [645.537730273667, 5.711066352856336, 1], [650.2556980462032, 5.72505859584456, 1], [750.6337082038954, 5.003922282105234, 1], [1233.4189117176065, 5.510642530391595, 1]], "kois": [{"koi": "K00076.01", "period": 77.4794704, "t0": 154.70734, "dur_h": 10.1151, "prad": "10.33", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10585852", "days": 536.3482743055556, "n_flash": 8, "flashes": [[843.1765797317275, 5.314604248194192, 1], [852.0423407581184, 6.143818886082989, 1], [1211.4218965208202, 5.007424211000008, 1], [1256.8459260734453, 5.04400368967724, 1], [1383.1848264894652, 6.9739369538153015, 1], [1434.3753891395754, 5.302674632047927, 1], [1576.3377860030741, 5.045826077217141, 1], [1578.0753799046797, 5.4850402905512174, 2]], "kois": [{"koi": "K01314.01", "period": 8.57504983, "t0": 140.14063, "dur_h": 8.653, "prad": "4.26", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10982872", "days": 495.37941087962963, "n_flash": 12, "flashes": [[603.557666807741, 5.189514256858952, 1], [608.5550135374142, 6.508410810596148, 1], [685.4337087036401, 5.2463403561833495, 1], [779.3653037356416, 10.529655785226465, 1], [1349.8764852034074, 7.357823271791041, 1], [1403.05789107101, 7.781227351975742, 1], [1434.295624107268, 5.283795882939676, 1], [1434.8854514534833, 5.172188044945315, 1], [1498.309395430544, 5.542878322470437, 1], [1527.5020151725112, 5.118958636129199, 1], [1543.120908815501, 5.0661253182407435, 1], [1552.1486170377684, 5.013496589509802, 1]], "kois": [{"koi": "K00343.01", "period": 4.761705895, "t0": 170.335759, "dur_h": 3.3061, "prad": "2.75", "n_cluster": 1, "fap": 1.0}, {"koi": "K00343.02", "period": 2.024143568, "t0": 170.496204, "dur_h": 2.5273, "prad": "1.94", "n_cluster": 1, "fap": 1.0}, {"koi": "K00343.03", "period": 41.8085031, "t0": 148.70814, "dur_h": 7.797, "prad": "1.67", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11758544", "days": 499.9341556712963, "n_flash": 11, "flashes": [[1037.5165498592178, 5.249423104290707, 1], [1052.8058273576826, 6.612231337521545, 1], [1115.1810897516116, 6.7896131714890045, 1], [1147.7391133172932, 6.057709228309819, 1], [1223.5936114930955, 6.164265884890099, 1], [1237.0747742380918, 5.168935534027861, 1], [1252.9181285881132, 5.253444445514991, 1], [1342.522827389941, 6.9710785649304325, 1], [1399.97892184784, 5.152460027758238, 1], [1437.1287061260737, 5.2163462101657805, 1], [1514.6645380566843, 5.050165490077136, 1]], "kois": [{"koi": "K01883.01", "period": 2.7073064, "t0": 132.43068, "dur_h": 3.4378, "prad": "1.36", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7269974", "days": 502.96928993055553, "n_flash": 5, "flashes": [[1003.4399183893256, 5.151167581881243, 1], [1018.9573119881607, 7.7496526128923335, 1], [1194.1512619325003, 6.1315643144508085, 1], [1388.6087029855844, 5.216665294412758, 1], [1406.7550400705877, 5.042572019000194, 1]], "kois": [{"koi": "K00456.01", "period": 13.69942266, "t0": 171.48036, "dur_h": 4.3409, "prad": "3.85", "n_cluster": 1, "fap": 1.0}, {"koi": "K00456.02", "period": 4.309381978, "t0": 134.03552, "dur_h": 2.8977, "prad": "1.89", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11122894", "days": 465.7023912037037, "n_flash": 4, "flashes": [[1018.9569141904867, 11.537268987955125, 1], [1055.4297100259355, 5.121401529720321, 1], [1148.93867963527, 5.0682088311113205, 1], [1526.9003727072122, 6.634541869546168, 2]], "kois": [{"koi": "K01426.02", "period": 74.92768653, "t0": 124.99266, "dur_h": 4.74, "prad": "6.39", "n_cluster": 1, "fap": 1.0}, {"koi": "K01426.03", "period": 150.0189511, "t0": 224.685714, "dur_h": 4.3823, "prad": "32.6", "n_cluster": 1, "fap": 1.0}, {"koi": "K01426.01", "period": 38.86848956, "t0": 171.30369, "dur_h": 6.0573, "prad": "2.81", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8018547", "days": 473.0402505787037, "n_flash": 4, "flashes": [[990.7257853618576, 5.191138308619027, 1], [1065.5460484800133, 5.084966983124172, 1], [1113.965434040474, 5.110401406543103, 1], [1115.0129814919273, 5.024357654095664, 1]], "kois": [{"koi": "K00902.01", "period": 83.92494032, "t0": 236.76334, "dur_h": 6.7904, "prad": "4.78", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10386984", "days": 473.8249172453704, "n_flash": 5, "flashes": [[782.0043601022262, 5.270081859996815, 1], [855.2786035823956, 5.06813795357108, 1], [893.1309515499743, 6.035228094754536, 1], [1081.5368368509153, 6.820958841473138, 2], [1135.1710013341362, 5.803660382580822, 1]], "kois": [{"koi": "K00739.01", "period": 1.287076693, "t0": 169.815491, "dur_h": 1.4942, "prad": "1.39", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10858691", "days": 501.15542939814816, "n_flash": 5, "flashes": [[1050.2258903473266, 5.168525082437049, 1], [1083.6649586228305, 6.080240226125689, 1], [1096.6548982253153, 5.591881940643767, 1], [1283.729482582581, 5.439917699443298, 1], [1325.0883922837602, 5.014263850063661, 1]], "kois": [{"koi": "K01306.01", "period": 1.796320953, "t0": 133.33662, "dur_h": 1.9139, "prad": "1.2", "n_cluster": 1, "fap": 1.0}, {"koi": "K01306.02", "period": 3.468073, "t0": 136.00831, "dur_h": 2.361, "prad": "1.29", "n_cluster": 1, "fap": 1.0}, {"koi": "K01306.03", "period": 5.9142668, "t0": 133.49193, "dur_h": 2.661, "prad": "1.31", "n_cluster": 1, "fap": 1.0}, {"koi": "K01306.04", "period": 29.2214959, "t0": 139.32807, "dur_h": 4.014, "prad": "1.81", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11250587", "days": 476.31786863425924, "n_flash": 8, "flashes": [[291.77168747628457, 5.162783437031311, 1], [353.4428451082931, 6.994472656255287, 1], [378.2438513078596, 5.036462694090526, 1], [395.74636823445326, 5.060496304636346, 1], [453.3656476871547, 6.3630638185390485, 1], [569.2943881216706, 5.889427929252001, 1], [750.9717550910646, 6.421822204703698, 1], [786.0934767001891, 5.1125473711442835, 1]], "kois": [{"koi": "K00107.01", "period": 7.256962446, "t0": 134.023923, "dur_h": 4.9402, "prad": "3.53", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11600889", "days": 514.7951429398148, "n_flash": 5, "flashes": [[1018.9570799915164, 5.44437880571831, 1], [1025.660464628294, 5.3130141985863695, 1], [1238.323507881134, 5.236364925953986, 1], [1377.71012845949, 5.023000777145241, 1], [1397.1078903297748, 5.677824508335045, 1]], "kois": [{"koi": "K01442.01", "period": 0.669310092, "t0": 134.131388, "dur_h": 1.6274, "prad": "1.13", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3531558", "days": 473.42100462962964, "n_flash": 9, "flashes": [[320.8807157719857, 5.087406490610309, 1], [346.85417275228974, 8.978225464332013, 2], [561.5632216382583, 8.289210161552841, 2], [626.6044707478068, 5.1085858842309895, 1], [631.4443255043734, 5.318575464446715, 1], [646.0394242153343, 5.199116996327774, 1], [648.1031231196175, 5.1110490046782875, 1], [750.3571560865821, 5.169002560173644, 1], [760.1638943329235, 5.207280447262052, 1]], "kois": [{"koi": "K00118.01", "period": 24.99324319, "t0": 138.68167, "dur_h": 5.9409, "prad": "2.29", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5124667", "days": 469.6114207175926, "n_flash": 5, "flashes": [[1018.9580826462989, 6.24503746651814, 1], [1132.5205926409253, 5.496289158138632, 1], [1160.1195555056693, 5.687867329861272, 1], [1349.8772285219893, 7.998777263901891, 1], [1421.9290079628045, 5.05407391632959, 1]], "kois": [{"koi": "K01822.01", "period": 150.8783198, "t0": 206.69223, "dur_h": 8.6797, "prad": "4.37", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5780885", "days": 478.59694386574074, "n_flash": 22, "flashes": [[274.65677363664145, 5.1612255704751755, 1], [297.0305601196378, 5.083040279583815, 1], [302.80959140634513, 5.392424479190975, 1], [311.5738328586085, 5.383852807039869, 1], [394.5361371517138, 5.807334806683459, 1], [420.6315686219823, 5.152480759405394, 1], [458.15917289948266, 5.037482712868246, 1], [458.92614628813317, 5.204543545452315, 1], [461.43549920119403, 11.574419789403203, 1], [465.22950171602133, 5.800823532864737, 1], [481.2174616353077, 5.142576896819267, 1], [500.5287523630104, 5.887098503192617, 1], [502.1955241546966, 5.231715009925731, 1], [505.53655830454227, 7.879304436545179, 1], [548.594265191794, 5.030709340987206, 1], [554.5957271231528, 7.334677135375039, 1], [588.5347427924935, 5.278907287852813, 1], [637.5816610452821, 5.104397811774315, 1], [639.8231404277394, 5.120901690723597, 1], [667.7982448243565, 5.0460712685889595, 1], [682.6439273489668, 5.6386999519105485, 1], [754.9446571388835, 5.101556152138017, 1]], "kois": [{"koi": "K00097.01", "period": 4.885488596, "t0": 134.2768785, "dur_h": 5.16165, "prad": "16.66", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7031517", "days": 491.87838078703703, "n_flash": 7, "flashes": [[1012.6880624010955, 5.129612526129964, 1], [1033.603052586499, 6.397895243151241, 1], [1050.6514037741945, 5.003234244692781, 1], [1081.5374769602058, 8.054558315058324, 1], [1191.2473173267354, 5.069485629398124, 1], [1349.8767789241538, 13.254353987165427, 1], [1392.6525794886475, 5.15022907550773, 1]], "kois": [{"koi": "K00871.01", "period": 12.940668656, "t0": 179.423014, "dur_h": 2.4845, "prad": "22.94", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8247638", "days": 429.39452951388887, "n_flash": 3, "flashes": [[1119.586679565553, 5.218163405625115, 1], [1249.8726162697567, 5.125192374107818, 1], [1534.705888733879, 8.166765471494125, 1]], "kois": [{"koi": "K00907.01", "period": 16.51410989, "t0": 176.11686, "dur_h": 4.1575, "prad": "2.72", "n_cluster": 1, "fap": 1.0}, {"koi": "K00907.02", "period": 30.1329298, "t0": 190.38336, "dur_h": 5.172, "prad": "3.14", "n_cluster": 1, "fap": 1.0}, {"koi": "K00907.03", "period": 4.79090809, "t0": 136.31106, "dur_h": 2.603, "prad": "1.36", "n_cluster": 1, "fap": 1.0}, {"koi": "K00907.04", "period": 99.6415962, "t0": 198.68664, "dur_h": 4.448, "prad": "2.64", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9651668", "days": 482.14905902777775, "n_flash": 22, "flashes": [[380.25422743114905, 8.066065258467528, 1], [384.7121000291954, 5.145031321143233, 1], [509.0275348537689, 5.139721989695195, 1], [530.3895656003951, 5.270607995567979, 1], [541.2714486443365, 5.493292224627494, 1], [550.3183132882041, 5.80292727383624, 1], [558.7500743142155, 5.3331198385534035, 1], [582.7216934658063, 5.181207956712015, 1], [608.9433289241497, 6.1427348952439695, 1], [626.6044625919822, 5.3609937862913055, 1], [637.2105727259623, 5.114839913270533, 1], [651.9052761458297, 5.226122070034551, 1], [659.2066230829587, 5.172262904051993, 1], [665.1866323662252, 5.1338319619974335, 1], [691.2214071063572, 5.48907995936554, 1], [711.4580695152617, 5.064944385025081, 1], [783.8401798649284, 11.006259825954311, 1], [1199.8576035189399, 5.032582787268927, 1], [1238.323228127374, 5.358556075701842, 1], [1262.4391896627058, 5.300893788718829, 1], [1263.0236113093124, 5.025310283225767, 1], [1270.6653581351566, 5.247512836420896, 1]], "kois": [{"koi": "K00183.01", "period": 2.684328541, "t0": 133.3548095, "dur_h": 2.69382, "prad": "12.73", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9718066", "days": 470.73188657407405, "n_flash": 6, "flashes": [[1114.7210517301937, 5.114626217619124, 1], [1137.4142627416077, 5.644618890099452, 1], [1160.4191114556816, 5.147026239660173, 1], [1175.6593858937194, 5.222001505092013, 1], [1219.8619727030236, 5.297701957760671, 1], [1422.311705382359, 5.066932071474797, 1]], "kois": [{"koi": "K02287.01", "period": 16.09227518, "t0": 142.51659, "dur_h": 2.1072, "prad": "0.98", "n_cluster": 1, "fap": 1.0}, {"koi": "K02287.02", "period": 28.9060526, "t0": 158.82431, "dur_h": 3.099, "prad": "0.79", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10358759", "days": 415.0982025462963, "n_flash": 2, "flashes": [[1235.7446870558051, 5.0713434510047275, 1], [1331.48774799682, 8.583469597657903, 1]], "kois": [{"koi": "K00738.01", "period": 10.3392408, "t0": 170.38549, "dur_h": 3.075, "prad": "2.98", "n_cluster": 2, "fap": 1.0}, {"koi": "K00738.02", "period": 13.28689997, "t0": 172.11932, "dur_h": 3.2825, "prad": "2.78", "n_cluster": 2, "fap": 1.0}]} +{"kic": "10978763", "days": 421.90137152777777, "n_flash": 15, "flashes": [[1115.4241462440114, 5.517166007213775, 1], [1119.3459612631123, 5.732359928589592, 1], [1136.4221082484219, 5.1807335617999675, 1], [1211.4213224579798, 5.069399013484196, 1], [1219.0773668922484, 5.002362277005813, 1], [1224.6906717701713, 6.039533904216087, 1], [1234.6564941879406, 5.220309905359738, 1], [1328.2106877450715, 5.527400694070522, 1], [1349.876409782577, 9.018251220421776, 1], [1394.5099981168532, 5.06069810879769, 1], [1425.2512721771636, 5.024491323668691, 1], [1501.1428315790254, 5.039498993515808, 1], [1529.943234751503, 5.864237177788042, 1], [1548.6047922887374, 5.138013120657465, 1], [1569.431149518321, 5.030599524664671, 1]], "kois": [{"koi": "K01931.01", "period": 4.97760447, "t0": 134.67304, "dur_h": 2.5719, "prad": "1.75", "n_cluster": 1, "fap": 1.0}, {"koi": "K01931.02", "period": 10.55840479, "t0": 136.34449, "dur_h": 3.366, "prad": "1.41", "n_cluster": 1, "fap": 1.0}, {"koi": "K01931.03", "period": 6.98800953, "t0": 132.56964, "dur_h": 3.103, "prad": "1.39", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11253827", "days": 413.8905515046296, "n_flash": 6, "flashes": [[1120.5440807781197, 5.513170215372617, 1], [1276.0677874740213, 5.194906747885134, 1], [1297.4276370062871, 5.709324620195635, 1], [1299.5091892887358, 7.234212966849123, 1], [1299.8313666293034, 5.281742613628864, 1], [1302.1404158803416, 5.92336754363712, 1]], "kois": [{"koi": "K02672.01", "period": 88.5122014, "t0": 182.67266, "dur_h": 6.8214, "prad": "4.7", "n_cluster": 1, "fap": 1.0}, {"koi": "K02672.02", "period": 42.9923284, "t0": 162.50532, "dur_h": 4.726, "prad": "3.32", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11754553", "days": 452.22342534722225, "n_flash": 4, "flashes": [[633.2208517723848, 5.292327654885918, 1], [656.8162454588164, 5.374564562751022, 1], [1190.6524774999343, 5.081693187335146, 1], [1258.438882566108, 6.783729077045004, 2]], "kois": [{"koi": "K00775.01", "period": 16.38489988, "t0": 172.72782, "dur_h": 3.0249, "prad": "2", "n_cluster": 1, "fap": 1.0}, {"koi": "K00775.02", "period": 7.8774163, "t0": 176.3759, "dur_h": 2.0805, "prad": "2.16", "n_cluster": 1, "fap": 1.0}, {"koi": "K00775.03", "period": 36.4454001, "t0": 151.60125, "dur_h": 4.007, "prad": "1.99", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12058204", "days": 421.4089114583333, "n_flash": 3, "flashes": [[1140.2168676978545, 6.170482460008763, 1], [1239.4144561003995, 5.019078592543282, 1], [1301.698274072165, 6.7069273850568685, 1]], "kois": [{"koi": "K02218.01", "period": 5.53533152, "t0": 132.76087, "dur_h": 2.793, "prad": "1.75", "n_cluster": 1, "fap": 1.0}, {"koi": "K02218.02", "period": 16.7261969, "t0": 143.74673, "dur_h": 2.708, "prad": "1.56", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3231341", "days": 435.08744965277776, "n_flash": 5, "flashes": [[1020.35585967519, 7.914302526011921, 1], [1025.660854232192, 6.0959634089823, 1], [1093.4985531244092, 5.086259466995239, 1], [1314.9419621141133, 7.8617918719598165, 1], [1406.0802527327833, 6.841668607937299, 1]], "kois": [{"koi": "K01102.02", "period": 8.14515981, "t0": 140.56811, "dur_h": 5.073, "prad": "3.43", "n_cluster": 1, "fap": 1.0}, {"koi": "K01102.03", "period": 18.9985279, "t0": 144.74157, "dur_h": 4.529, "prad": "43.17", "n_cluster": 1, "fap": 1.0}, {"koi": "K01102.04", "period": 4.24439049, "t0": 137.06643, "dur_h": 3.282, "prad": "2.07", "n_cluster": 1, "fap": 1.0}, {"koi": "K01102.01", "period": 12.33343853, "t0": 137.58782, "dur_h": 6.221, "prad": "4.12", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3962243", "days": 418.6428252314815, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01203.01", "period": 31.8841473, "t0": 160.20696, "dur_h": 6.122, "prad": "3.7", "n_cluster": 0, "fap": 1.0}, {"koi": "K01203.02", "period": 14.12847677, "t0": 142.8971, "dur_h": 3.685, "prad": "2.73", "n_cluster": 0, "fap": 1.0}, {"koi": "K01203.03", "period": 48.6478543, "t0": 172.1271, "dur_h": 5.464, "prad": "4.14", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4636578", "days": 421.2406712962963, "n_flash": 9, "flashes": [[1114.1584715562858, 5.21027695752614, 1], [1135.6613734063285, 5.02470886241007, 1], [1145.4961688059338, 5.132673149040463, 1], [1149.7212245200644, 5.016811649901035, 1], [1167.5016122064335, 5.443089065959083, 1], [1183.6596709612058, 6.163248092631521, 1], [1201.4117687188264, 5.406627830874481, 1], [1202.4661898638587, 5.026738966331399, 1], [1207.056466039554, 5.151199864381482, 1]], "kois": [{"koi": "K02025.01", "period": 17.84850835, "t0": 148.39117, "dur_h": 5.8919, "prad": "3.29", "n_cluster": 2, "fap": 0.00997506234413965}, {"koi": "K02025.02", "period": 26.1363443, "t0": 131.61796, "dur_h": 6.613, "prad": "2.8", "n_cluster": 1, "fap": 1.0}, {"koi": "K02025.03", "period": 11.1895709, "t0": 140.63504, "dur_h": 5.3, "prad": "1.81", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5042210", "days": 412.6086568287037, "n_flash": 3, "flashes": [[1331.4884347885454, 9.056594299376517, 1], [1349.8772774725367, 10.803601947068397, 1], [1358.1384759307402, 5.107938471758625, 1]], "kois": [{"koi": "K02462.01", "period": 12.14684625, "t0": 131.55623, "dur_h": 6.197, "prad": "1.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5299459", "days": 419.87908391203706, "n_flash": 3, "flashes": [[1112.850276207675, 5.117367372716941, 1], [1275.921959873689, 5.121669163778305, 1], [1403.455891269121, 5.518878113130996, 1]], "kois": [{"koi": "K01576.01", "period": 10.41572666, "t0": 143.04774, "dur_h": 2.7719, "prad": "3.01", "n_cluster": 1, "fap": 1.0}, {"koi": "K01576.02", "period": 13.08424286, "t0": 132.63129, "dur_h": 3.0401, "prad": "2.71", "n_cluster": 1, "fap": 1.0}, {"koi": "K01576.03", "period": 23.3397956, "t0": 146.3627, "dur_h": 1.923, "prad": "1.23", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5358241", "days": 424.9167528935185, "n_flash": 3, "flashes": [[1081.5366359851832, 6.50438318900253, 2], [1143.1761352996473, 5.664331124057319, 1], [1527.9851942503665, 5.268374686742133, 1]], "kois": [{"koi": "K00829.01", "period": 18.64932728, "t0": 174.771, "dur_h": 4.4056, "prad": "3.12", "n_cluster": 1, "fap": 1.0}, {"koi": "K00829.02", "period": 9.75192101, "t0": 138.78608, "dur_h": 4.793, "prad": "2.76", "n_cluster": 1, "fap": 1.0}, {"koi": "K00829.03", "period": 38.5576546, "t0": 163.85063, "dur_h": 5.794, "prad": "4.02", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6768394", "days": 420.0670769675926, "n_flash": 4, "flashes": [[1331.4880277367847, 5.173719612116951, 1], [1519.657925997868, 7.352476779123632, 1], [1519.8731620395556, 5.1548056281587815, 1], [1546.9516157367689, 5.086927733264787, 1]], "kois": [{"koi": "K02086.01", "period": 7.1329472, "t0": 135.99259, "dur_h": 4.368, "prad": "1.64", "n_cluster": 1, "fap": 1.0}, {"koi": "K02086.02", "period": 8.91901228, "t0": 140.0777, "dur_h": 4.141, "prad": "1.84", "n_cluster": 1, "fap": 1.0}, {"koi": "K02086.03", "period": 11.8984948, "t0": 133.34685, "dur_h": 3.015, "prad": "1.69", "n_cluster": 1, "fap": 1.0}, {"koi": "K02086.04", "period": 335.56311, "t0": 340.6688, "dur_h": 13.06, "prad": "1.83", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6962977", "days": 423.3249421296296, "n_flash": 7, "flashes": [[1120.9167230773019, 5.250666144892704, 1], [1160.040094418131, 7.405492535500106, 1], [1184.0479866084133, 5.675738359168015, 1], [1207.0556611397406, 5.003557508919904, 1], [1373.608090964779, 5.601871144841882, 1], [1474.8836656183266, 5.591146061134697, 1], [1559.4575500732462, 5.589540110625358, 1]], "kois": [{"koi": "K01364.01", "period": 20.8341497, "t0": 186.03921, "dur_h": 4.522, "prad": "2.26", "n_cluster": 1, "fap": 1.0}, {"koi": "K01364.02", "period": 7.0556584, "t0": 181.91205, "dur_h": 3.0479, "prad": "2.13", "n_cluster": 1, "fap": 1.0}, {"koi": "K01364.03", "period": 11.97884409, "t0": 178.96957, "dur_h": 3.751, "prad": "2.11", "n_cluster": 1, "fap": 1.0}, {"koi": "K01364.04", "period": 3.71545593, "t0": 169.78318, "dur_h": 2.558, "prad": "1.46", "n_cluster": 1, "fap": 1.0}, {"koi": "K01364.05", "period": 2.58083264, "t0": 171.56048, "dur_h": 2.1729, "prad": "1.31", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7455287", "days": 423.79969270833334, "n_flash": 2, "flashes": [[1331.4881118454578, 7.475397562933178, 1], [1491.3145978896282, 5.1399258243187145, 1]], "kois": [{"koi": "K00886.01", "period": 8.01078456, "t0": 170.20739, "dur_h": 2.312, "prad": "1.72", "n_cluster": 2, "fap": 1.0}, {"koi": "K00886.02", "period": 12.07134205, "t0": 143.45948, "dur_h": 4.3224, "prad": "1.29", "n_cluster": 2, "fap": 1.0}, {"koi": "K00886.03", "period": 20.99587872, "t0": 152.31554, "dur_h": 2.6333, "prad": "1.3", "n_cluster": 2, "fap": 1.0}]} +{"kic": "8167996", "days": 422.2194612268519, "n_flash": 7, "flashes": [[1160.0492040229874, 9.768971992221694, 1], [1328.2110966496984, 6.218609860057232, 1], [1406.0804301698736, 6.2901271110377355, 1], [1423.9025221314514, 5.239998438546609, 1], [1443.1392459102062, 5.176464430181769, 1], [1448.87880888168, 5.126195139409205, 1], [1501.8964201542403, 6.508019438526786, 2]], "kois": [{"koi": "K01867.01", "period": 2.549562652, "t0": 132.60803, "dur_h": 1.6999, "prad": "1.11", "n_cluster": 1, "fap": 1.0}, {"koi": "K01867.02", "period": 13.96950181, "t0": 132.17062, "dur_h": 1.5871, "prad": "2.04", "n_cluster": 1, "fap": 1.0}, {"koi": "K01867.03", "period": 5.21230171, "t0": 132.71052, "dur_h": 2.098, "prad": "1.04", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8806123", "days": 435.44640740740743, "n_flash": 2, "flashes": [[1208.0447536281572, 5.222897251188282, 1], [1349.8763657291565, 10.130792564358073, 1]], "kois": [{"koi": "K00523.01", "period": 49.41121127, "t0": 198.238709, "dur_h": 5.278, "prad": "6.77", "n_cluster": 2, "fap": 1.0}, {"koi": "K00523.02", "period": 36.8567758, "t0": 138.90683, "dur_h": 7.495, "prad": "2.68", "n_cluster": 2, "fap": 1.0}]} +{"kic": "9006186", "days": 418.12380092592593, "n_flash": 20, "flashes": [[1100.2350686947248, 5.405588370959484, 1], [1106.8377259693516, 5.121676223264603, 1], [1124.7836934596562, 5.083973084383053, 1], [1126.8645080627466, 5.002116455817039, 1], [1192.7626588130734, 9.984270025206882, 1], [1207.6327198071886, 5.300784935694428, 1], [1217.4977521561523, 5.13410266365636, 1], [1237.262557407019, 5.160704611296565, 1], [1240.1199603228306, 6.341758771961515, 1], [1274.4984787870635, 5.240196125153266, 1], [1281.509411229832, 6.576244209416686, 1], [1354.9886902792496, 5.10547345868148, 1], [1419.4742700269126, 5.37763888558806, 1], [1420.2146187241306, 5.512277246716378, 1], [1420.7036439509975, 5.58802693038443, 1], [1432.805323624205, 5.835988287416633, 1], [1527.9755623947494, 5.97285499491252, 1], [1560.072765229561, 5.366047343198029, 1], [1570.1168998085413, 8.979112840409163, 1], [1590.0969225535955, 5.931153556121624, 1]], "kois": [{"koi": "K02169.01", "period": 5.45298742, "t0": 134.15183, "dur_h": 2.1328, "prad": "0.92", "n_cluster": 1, "fap": 1.0}, {"koi": "K02169.02", "period": 3.26662733, "t0": 136.08452, "dur_h": 2.056, "prad": "0.68", "n_cluster": 1, "fap": 1.0}, {"koi": "K02169.03", "period": 4.27226421, "t0": 133.21863, "dur_h": 2.113, "prad": "0.64", "n_cluster": 1, "fap": 1.0}, {"koi": "K02169.04", "period": 2.19251903, "t0": 132.2332, "dur_h": 1.845, "prad": "0.37", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9753154", "days": 414.67589930555556, "n_flash": 8, "flashes": [[1150.9226776987343, 5.109649810369501, 1], [1158.163790781051, 5.073110741636478, 1], [1211.4221103327218, 5.230823354819094, 1], [1301.6796519438067, 5.3795099925605205, 1], [1325.0890850869982, 6.9780118465865755, 1], [1340.7962336582787, 5.094895829118309, 1], [1516.9360068865572, 5.2578500565471415, 1], [1578.076262452174, 5.033416949999364, 1]], "kois": [{"koi": "K02457.01", "period": 3.70429015, "t0": 132.21478, "dur_h": 3.37, "prad": "1.45", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3545478", "days": 426.3198894675926, "n_flash": 6, "flashes": [[784.5174059435085, 5.207548557160903, 1], [884.208174143947, 5.213008978319475, 1], [977.0579275812197, 5.17463899963004, 1], [1020.3559508293183, 5.802154470106139, 1], [1053.7700424394716, 5.141409003170859, 1], [1065.5460149846695, 5.2617152057671, 1]], "kois": [{"koi": "K00366.01", "period": 75.1122132, "t0": 207.713987, "dur_h": 4.9458, "prad": "23.23", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7296438", "days": 414.10578993055555, "n_flash": 4, "flashes": [[716.1554784541368, 5.808897045408109, 1], [923.0294770758846, 5.253504565054504, 1], [986.6410162944012, 5.001218660862057, 1], [988.9138734931621, 5.008410425376102, 1]], "kois": [{"koi": "K00364.01", "period": 173.92851338, "t0": 223.7546088, "dur_h": 2.64, "prad": "", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9595827", "days": 442.6936759259259, "n_flash": 16, "flashes": [[558.6458446961478, 5.223375252242639, 1], [607.8713472306263, 5.19897288285209, 1], [1259.3432851506077, 5.380880276938944, 1], [1267.6430380126403, 5.584381963143355, 1], [1337.517793694591, 5.203983110363609, 1], [1378.19437569414, 5.1128859416382735, 1], [1401.5015782667106, 5.208474788575355, 1], [1406.0805797683352, 5.107929663946411, 1], [1408.426949539251, 5.057073970671472, 1], [1433.9481509215693, 5.250918609538832, 1], [1445.5096899189302, 5.285773457038882, 1], [1447.8260865436168, 5.098415038655858, 1], [1469.7546279289236, 5.042331258024443, 1], [1474.8839577215986, 5.060323414490402, 1], [1491.2767398608266, 5.278616305140105, 1], [1504.040728588152, 6.012824068482967, 1]], "kois": [{"koi": "K00217.01", "period": 3.905081685, "t0": 133.4150433, "dur_h": 2.8213, "prad": "12.78", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11774991", "days": 385.0540515046296, "n_flash": 5, "flashes": [[1232.5821123362475, 5.200035756766641, 1], [1331.4875044135915, 6.181783676667134, 1], [1349.8764360835921, 5.547361421037091, 1], [1392.6514773198505, 6.067176739779075, 1], [1555.4806727197283, 5.160801327484184, 1]], "kois": [{"koi": "K02173.01", "period": 37.8154157, "t0": 141.10346, "dur_h": 4.662, "prad": "1.21", "n_cluster": 1, "fap": 1.0}, {"koi": "K02173.02", "period": 53.5783052, "t0": 171.1857, "dur_h": 5.194, "prad": "1.16", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12024120", "days": 371.7031388888889, "n_flash": 4, "flashes": [[1143.7414727349242, 5.003379034243809, 1], [1158.1634672400542, 5.303918794943188, 1], [1160.3519110125053, 6.305892586736822, 1], [1194.2373576590326, 5.076617722546316, 1]], "kois": [{"koi": "K00265.01", "period": 3.568099612, "t0": 169.74278, "dur_h": 3.2131, "prad": "1.36", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3859079", "days": 392.4062146990741, "n_flash": 3, "flashes": [[1018.9578163720944, 5.010870671218042, 1], [1054.9307661355924, 5.240746397701496, 1], [1170.7998541827255, 5.065373775683686, 1]], "kois": [{"koi": "K01199.01", "period": 53.5292702, "t0": 147.86464, "dur_h": 5.668, "prad": "2.28", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4545187", "days": 397.05359375, "n_flash": 4, "flashes": [[585.7803504978219, 5.147516569239751, 1], [773.3424044380372, 8.690749913970606, 1], [1034.3804756662212, 5.199795542202254, 1], [1072.5098413419837, 6.470232156710994, 2]], "kois": [{"koi": "K00223.01", "period": 3.177414601, "t0": 134.478892, "dur_h": 1.5262, "prad": "2.65", "n_cluster": 2, "fap": 0.00997506234413965}, {"koi": "K00223.02", "period": 41.0081117, "t0": 147.03382, "dur_h": 4.376, "prad": "2.64", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5511081", "days": 392.16781770833336, "n_flash": 11, "flashes": [[1018.9569893254011, 5.358696120299684, 1], [1046.3837805447984, 5.0656864660203365, 1], [1067.2782966959494, 5.034134867889511, 1], [1081.5370135155827, 6.136934595504421, 1], [1107.7288509624632, 5.5381279471175135, 1], [1111.9626428682386, 5.021322994210307, 1], [1341.2244450243597, 5.025364982419728, 1], [1342.7841785026976, 5.418088520036981, 1], [1393.6961374123712, 5.5861004046204625, 1], [1401.315487468688, 6.671935592555759, 1], [1501.896258710287, 5.034392933516406, 1]], "kois": [{"koi": "K01930.01", "period": 13.72710334, "t0": 138.74473, "dur_h": 7.3419, "prad": "2.38", "n_cluster": 1, "fap": 1.0}, {"koi": "K01930.02", "period": 24.3110031, "t0": 137.0394, "dur_h": 8.7682, "prad": "2.3", "n_cluster": 1, "fap": 1.0}, {"koi": "K01930.03", "period": 44.4304059, "t0": 143.5462, "dur_h": 10.306, "prad": "2.61", "n_cluster": 1, "fap": 1.0}, {"koi": "K01930.04", "period": 9.34145925, "t0": 132.38581, "dur_h": 6.18, "prad": "1.56", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6020753", "days": 369.28579340277776, "n_flash": 4, "flashes": [[787.6859674622465, 5.001464036791773, 1], [907.4864234154738, 6.728166114003278, 1], [1123.3230264826416, 5.037513488455397, 1], [1515.901623028818, 7.584289334612579, 1]], "kois": [{"koi": "K00657.01", "period": 4.069425638, "t0": 171.017743, "dur_h": 2.0396, "prad": "1.53", "n_cluster": 1, "fap": 1.0}, {"koi": "K00657.02", "period": 16.28247625, "t0": 180.79815, "dur_h": 2.9227, "prad": "1.88", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6309763", "days": 404.13466550925926, "n_flash": 5, "flashes": [[665.8537879433061, 5.158277668392266, 1], [747.6575369156053, 5.1465451153505795, 1], [829.5247918774912, 5.374533570962053, 1], [939.557991627531, 5.253444150877981, 1], [978.1743059444852, 5.017172026354929, 1]], "kois": [{"koi": "K00611.01", "period": 3.251659087, "t0": 171.0604906, "dur_h": 1.5286, "prad": "9.83", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7040629", "days": 378.33329976851854, "n_flash": 9, "flashes": [[1253.2977246489827, 7.574195689768722, 1], [1285.0601738187106, 5.782940142781558, 1], [1308.2624076903594, 5.1910334528057, 1], [1492.6978876374415, 5.237626617095107, 1], [1493.9136656353003, 5.980588793747315, 1], [1494.2290188179104, 7.609535490593401, 1], [1499.0083665997809, 5.8115203636060775, 1], [1506.7730573442313, 5.806850086053573, 1], [1578.8069822924153, 7.573483486105676, 1]], "kois": [{"koi": "K00671.01", "period": 4.22865217, "t0": 170.74053, "dur_h": 3.3275, "prad": "1.83", "n_cluster": 1, "fap": 1.0}, {"koi": "K00671.02", "period": 7.46662068, "t0": 132.7755, "dur_h": 3.87, "prad": "1.65", "n_cluster": 1, "fap": 1.0}, {"koi": "K00671.03", "period": 16.25951967, "t0": 144.53203, "dur_h": 3.854, "prad": "1.72", "n_cluster": 1, "fap": 1.0}, {"koi": "K00671.04", "period": 11.1317901, "t0": 134.42272, "dur_h": 4.051, "prad": "1.47", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7277317", "days": 371.53149305555553, "n_flash": 7, "flashes": [[921.2354813674901, 5.012799607522749, 1], [1155.9372421863663, 5.6028434661546, 1], [1328.2111600932549, 5.155670249271795, 1], [1349.8767228282668, 9.543774388789537, 1], [1365.8718078242819, 5.053433098323627, 1], [1501.8970176157673, 5.762552267702328, 1], [1527.5555846862917, 5.0200293441746995, 1]], "kois": [{"koi": "K00674.01", "period": 16.33888067, "t0": 177.917586, "dur_h": 9.3599, "prad": "10.47", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7595157", "days": 402.3889184027778, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00568.01", "period": 3.383540239, "t0": 169.63859, "dur_h": 1.403, "prad": "1.65", "n_cluster": 0, "fap": 1.0}, {"koi": "K00568.02", "period": 2.358952404, "t0": 132.68957, "dur_h": 1.593, "prad": "0.96", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8689373", "days": 392.59012094907405, "n_flash": 4, "flashes": [[773.3419453170281, 5.266056182805328, 1], [977.0581522392094, 6.191300429618372, 1], [978.1738127966091, 9.00565980188565, 1], [1108.0092753498466, 5.124551443241316, 1]], "kois": [{"koi": "K00921.01", "period": 10.28194593, "t0": 175.33988, "dur_h": 3.4366, "prad": "2.53", "n_cluster": 1, "fap": 1.0}, {"koi": "K00921.02", "period": 18.11993039, "t0": 182.61535, "dur_h": 4.2309, "prad": "2.95", "n_cluster": 1, "fap": 1.0}, {"koi": "K00921.03", "period": 3.78402867, "t0": 133.28133, "dur_h": 1.9012, "prad": "1.7", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8878187", "days": 373.47068229166666, "n_flash": 10, "flashes": [[784.3531471996757, 6.382776962202203, 1], [932.6714882608503, 6.617508203105984, 1], [993.5653152438244, 5.758042674035647, 1], [1108.7441686533057, 5.454818319156953, 1], [1143.4122294143017, 5.196181652274372, 1], [1146.6959279537841, 5.134914902316563, 1], [1160.0964368317655, 8.214388596416326, 1], [1299.710603534215, 5.642925641349241, 1], [1315.0516501107704, 5.083813977496829, 1], [1349.876499346472, 8.054916887993352, 1]], "kois": [{"koi": "K00697.01", "period": 3.032147946, "t0": 171.734281, "dur_h": 3.8627, "prad": "3.62", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9696358", "days": 373.23977777777776, "n_flash": 5, "flashes": [[337.659823284921, 5.1638368712647695, 1], [1216.7280798233332, 5.26080262250931, 1], [1297.3544853511994, 5.616460688234802, 1], [1322.5124685706978, 5.176515591583683, 1], [1563.8695159763738, 6.291922154890927, 1]], "kois": [{"koi": "K02545.01", "period": 6.98141327, "t0": 132.7883, "dur_h": 6.527, "prad": "1.42", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10136549", "days": 347.48268576388887, "n_flash": 5, "flashes": [[1199.1023982896659, 5.860240577704731, 1], [1328.210772066319, 5.895888655596588, 2], [1386.5307423231789, 5.14068923735436, 1], [1394.315697651793, 5.971179554242167, 1], [1519.2761442066403, 5.978242039734777, 1]], "kois": [{"koi": "K01929.01", "period": 9.69315023, "t0": 132.81362, "dur_h": 5.6725, "prad": "1.89", "n_cluster": 1, "fap": 1.0}, {"koi": "K01929.02", "period": 3.29276797, "t0": 133.00741, "dur_h": 4.8069, "prad": "1.39", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10272640", "days": 356.33606886574074, "n_flash": 9, "flashes": [[1264.9028788875148, 5.029930263610563, 1], [1280.0888699063726, 5.336129936842407, 1], [1323.1220900101907, 5.2711480014818095, 1], [1342.8010016378103, 5.1059886963636805, 1], [1349.8764167262852, 14.148191092712446, 1], [1355.355279558018, 5.22884125910943, 1], [1397.2771810128252, 5.225800700322944, 1], [1567.5179382853894, 5.147433332096616, 1], [1573.0460767515324, 5.039156898816716, 1]], "kois": [{"koi": "K01074.01", "period": 3.770551475, "t0": 357.11836, "dur_h": 3.8077, "prad": "12.05", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11709124", "days": 355.38043749999997, "n_flash": 3, "flashes": [[1238.3232763852502, 6.772940378057116, 1], [1275.0414670680111, 5.748889426851766, 1], [1383.0004661893036, 5.042491135058177, 1]], "kois": [{"koi": "K00435.01", "period": 20.5498184, "t0": 178.946396, "dur_h": 5.5484, "prad": "4.04", "n_cluster": 1, "fap": 1.0}, {"koi": "K00435.02", "period": 934.09418462, "t0": 657.26877, "dur_h": 17.489, "prad": "7.89", "n_cluster": 1, "fap": 1.0}, {"koi": "K00435.05", "period": 62.3026877, "t0": 179.09948, "dur_h": 7.509, "prad": "3.05", "n_cluster": 1, "fap": 1.0}, {"koi": "K00435.06", "period": 9.91937693, "t0": 136.87361, "dur_h": 4.326, "prad": "1.32", "n_cluster": 1, "fap": 1.0}, {"koi": "K00435.03", "period": 33.0405509, "t0": 161.22146, "dur_h": 3.3613, "prad": "2.36", "n_cluster": 1, "fap": 1.0}, {"koi": "K00435.04", "period": 3.93276627, "t0": 134.64964, "dur_h": 2.9403, "prad": "1.5", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12066335", "days": 352.973990162037, "n_flash": 4, "flashes": [[1183.9762562215838, 5.140003602758835, 1], [1314.9407947895088, 9.860774729038543, 1], [1353.0618594787666, 5.004724506308645, 1], [1421.9289771226395, 5.0189725055992405, 1]], "kois": [{"koi": "K00784.01", "period": 19.27153892, "t0": 186.77093, "dur_h": 2.7594, "prad": "1.93", "n_cluster": 1, "fap": 1.0}, {"koi": "K00784.02", "period": 10.06524317, "t0": 136.28906, "dur_h": 1.369, "prad": "1.91", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12557548", "days": 354.4193570601852, "n_flash": 2, "flashes": [[1325.0880939066337, 5.026496378895858, 1], [1443.9977598818514, 5.424638019445189, 1]], "kois": [{"koi": "K03794.01", "period": 0.65355361, "t0": 132.058957, "dur_h": 1.63, "prad": "22.95", "n_cluster": 2, "fap": 1.0}]} +{"kic": "7102316", "days": 356.22776851851853, "n_flash": 5, "flashes": [[1386.8677367940181, 7.304115848844393, 1], [1445.4633964448876, 5.5084553172295205, 1], [1489.8181498019912, 5.091049849269738, 1], [1501.337862102133, 5.501440868304652, 1], [1536.4901867321387, 5.002835646430244, 1]], "kois": [{"koi": "K02028.01", "period": 57.2488518, "t0": 184.6864, "dur_h": 6.083, "prad": "3.19", "n_cluster": 1, "fap": 1.0}, {"koi": "K02028.02", "period": 37.0551726, "t0": 200.20176, "dur_h": 5.439, "prad": "3.19", "n_cluster": 1, "fap": 1.0}, {"koi": "K02028.03", "period": 142.545, "t0": 202.88, "dur_h": 8.75, "prad": "2.52", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7765528", "days": 355.4056394675926, "n_flash": 4, "flashes": [[1365.2073301471391, 5.059173626084871, 1], [1392.0365303704675, 5.18315819991079, 1], [1453.6275191979876, 5.0177885786607845, 1], [1467.9611252191025, 5.002783724157468, 1]], "kois": [{"koi": "K01840.01", "period": 7.03932913, "t0": 133.85433, "dur_h": 3.514, "prad": "4.67", "n_cluster": 1, "fap": 1.0}, {"koi": "K01840.02", "period": 9.3888216, "t0": 134.42144, "dur_h": 4.154, "prad": "20.91", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8313667", "days": 354.8185017361111, "n_flash": 4, "flashes": [[1323.4282809865617, 5.018604027128396, 1], [1380.2658163986926, 5.386935358821014, 1], [1447.7634185024726, 5.402346708474293, 1], [1570.0486271138361, 5.745716350883554, 1]], "kois": [{"koi": "K01145.01", "period": 30.5872153, "t0": 162.8842, "dur_h": 5.3698, "prad": "2.32", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8692861", "days": 382.27161805555556, "n_flash": 4, "flashes": [[344.94440175734053, 5.124434879090189, 1], [563.9016188873575, 5.223850845452902, 1], [574.0817723520377, 5.009748298525649, 1], [668.8039286017665, 5.102623293992599, 1]], "kois": [{"koi": "K00172.01", "period": 13.7223682, "t0": 137.84083, "dur_h": 5.1231, "prad": "2.23", "n_cluster": 1, "fap": 1.0}, {"koi": "K00172.02", "period": 242.467406, "t0": 150.85827, "dur_h": 12.808, "prad": "1.73", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9334289", "days": 347.01134085648147, "n_flash": 3, "flashes": [[871.665986390828, 6.392506150930224, 2], [1140.2164721551453, 6.7620260659570794, 1], [1160.044746217085, 5.877279463093126, 1]], "kois": [{"koi": "K00934.01", "period": 5.826657508, "t0": 173.011411, "dur_h": 2.9183, "prad": "4.09", "n_cluster": 1, "fap": 1.0}, {"koi": "K00934.02", "period": 12.41216347, "t0": 142.54039, "dur_h": 3.739, "prad": "2.58", "n_cluster": 1, "fap": 1.0}, {"koi": "K00934.03", "period": 18.74649011, "t0": 147.13074, "dur_h": 3.895, "prad": "3.05", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9821454", "days": 352.81801041666665, "n_flash": 3, "flashes": [[1199.1257572674804, 5.001945003242097, 1], [1406.0800667356743, 5.795119767677933, 1], [1532.2278505406866, 5.273646256307375, 1]], "kois": [{"koi": "K01529.01", "period": 17.9776037, "t0": 147.7515, "dur_h": 4.605, "prad": "1.58", "n_cluster": 1, "fap": 1.0}, {"koi": "K01529.02", "period": 11.8693144, "t0": 137.721, "dur_h": 4.653, "prad": "1.09", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10166274", "days": 324.5141574074074, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01078.01", "period": 3.353732008, "t0": 134.869597, "dur_h": 1.4598, "prad": "1.65", "n_cluster": 0, "fap": 1.0}, {"koi": "K01078.02", "period": 6.877446033, "t0": 132.08426, "dur_h": 1.3692, "prad": "2.05", "n_cluster": 0, "fap": 1.0}, {"koi": "K01078.03", "period": 28.46464804, "t0": 158.03986, "dur_h": 2.6657, "prad": "1.87", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10984090", "days": 359.81734606481484, "n_flash": 9, "flashes": [[293.12031051858503, 5.005736159058681, 1], [400.98136942027486, 8.704860222918684, 1], [477.4193979964184, 5.002973658015451, 1], [482.97344570846326, 5.160282615130801, 1], [549.2711283872923, 5.089297849544325, 1], [593.635159985839, 5.574257224597284, 1], [593.7352847579023, 5.36248435275178, 1], [597.5441100805037, 6.769968951373079, 1], [705.2440399868938, 5.355786997336443, 1]], "kois": [{"koi": "K00112.02", "period": 3.709214104, "t0": 133.98318, "dur_h": 2.6302, "prad": "1.16", "n_cluster": 1, "fap": 1.0}, {"koi": "K00112.01", "period": 51.07926451, "t0": 185.18087, "dur_h": 6.3729, "prad": "2.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11402995", "days": 363.13855671296295, "n_flash": 2, "flashes": [[353.44279600128357, 7.139349944272921, 1], [526.1145137573985, 5.054708414653977, 1]], "kois": [{"koi": "K00173.01", "period": 10.06083238, "t0": 138.96723, "dur_h": 4.5718, "prad": "2.58", "n_cluster": 2, "fap": 1.0}]} +{"kic": "11502867", "days": 365.94619212962965, "n_flash": 8, "flashes": [[352.62473516870523, 6.958838461880888, 2], [371.43824235346983, 5.131949640065701, 1], [423.1992440289614, 5.879477526651202, 1], [593.3801667050939, 5.036393497059372, 1], [608.8421327521428, 5.4392947693791625, 1], [628.5425208952656, 5.14094017864503, 1], [707.9859010501241, 5.292718986915709, 1], [1260.5871146178688, 5.249199015391187, 1]], "kois": [{"koi": "K00195.01", "period": 3.217518511, "t0": 133.6320632, "dur_h": 2.11481, "prad": "11.38", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12019440", "days": 365.2575653935185, "n_flash": 3, "flashes": [[419.68580683555047, 5.351196317823729, 1], [1183.9761971830085, 5.0107553064656605, 1], [1244.2393261387479, 5.25352450779593, 1]], "kois": [{"koi": "K00186.01", "period": 3.24325988, "t0": 133.6690203, "dur_h": 3.03318, "prad": "12.91", "n_cluster": 1, "fap": 1.0}]} +{"kic": "2441495", "days": 361.614859375, "n_flash": 2, "flashes": [[479.75966737193085, 5.050255235738141, 1], [607.22268382935, 16.8834197391612, 1]], "kois": [{"koi": "K00166.01", "period": 12.49340725, "t0": 138.462232, "dur_h": 2.2614, "prad": "2.2", "n_cluster": 2, "fap": 1.0}]} +{"kic": "6442377", "days": 357.98237037037035, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00176.01", "period": 30.22910274, "t0": 134.52081, "dur_h": 6.6751, "prad": "3.49", "n_cluster": 0, "fap": 1.0}]} +{"kic": "6851425", "days": 364.04855208333333, "n_flash": 5, "flashes": [[436.8877554196297, 5.275411232212157, 1], [485.36496885951783, 5.023902542382949, 1], [486.65438461441954, 5.158740558268392, 1], [608.0647362301315, 5.920430830731389, 1], [608.9433629355844, 12.056097302631654, 1]], "kois": [{"koi": "K00163.01", "period": 11.1199028, "t0": 139.753524, "dur_h": 3.3759, "prad": "2.08", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7831264", "days": 363.0173148148148, "n_flash": 4, "flashes": [[316.2125776736866, 5.069177244980604, 1], [459.33233538953937, 7.145895559361526, 1], [594.3282771500235, 5.120098431148808, 1], [650.5814219725944, 5.636430772810877, 1]], "kois": [{"koi": "K00171.01", "period": 5.968724048, "t0": 137.158607, "dur_h": 3.651, "prad": "3.26", "n_cluster": 1, "fap": 1.0}, {"koi": "K00171.02", "period": 13.07141889, "t0": 144.44217, "dur_h": 3.0946, "prad": "2.47", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8107380", "days": 364.84207349537036, "n_flash": 2, "flashes": [[302.8101484243234, 5.094808960436625, 1], [343.87648134504707, 5.2712969308969795, 1]], "kois": [{"koi": "K00162.01", "period": 14.00640392, "t0": 142.20885, "dur_h": 4.6919, "prad": "3.11", "n_cluster": 2, "fap": 1.0}]} +{"kic": "8557374", "days": 348.8197523148148, "n_flash": 7, "flashes": [[1247.8683482690103, 5.292186481590003, 1], [1247.9616655078062, 5.049118012292796, 1], [1277.3993166262153, 9.973493805770094, 1], [1380.8702410934784, 7.362375441314513, 1], [1398.1619118532326, 9.164042138437788, 1], [1508.847962545151, 6.5112174597541355, 1], [1516.352546403723, 6.421343404937708, 1]], "kois": [{"koi": "K00692.01", "period": 2.462344253, "t0": 171.84315, "dur_h": 1.8113, "prad": "1.33", "n_cluster": 1, "fap": 1.0}, {"koi": "K00692.02", "period": 4.822969318, "t0": 134.43535, "dur_h": 0.8752, "prad": "2.22", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8972058", "days": 362.97644675925926, "n_flash": 4, "flashes": [[346.8551020117811, 29.97089084077152, 1], [607.3715666886637, 5.004735680182294, 1], [626.6054413168313, 5.182443748790492, 1], [688.848752392747, 5.320310390004219, 1]], "kois": [{"koi": "K00159.01", "period": 8.99088621, "t0": 136.73923, "dur_h": 4.2447, "prad": "2.78", "n_cluster": 1, "fap": 1.0}, {"koi": "K00159.02", "period": 2.403640701, "t0": 134.73065, "dur_h": 1.4012, "prad": "1.24", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9450647", "days": 363.2366400462963, "n_flash": 2, "flashes": [[449.00153350815526, 5.0108457057492535, 1], [473.20121652814123, 5.2684013672468195, 1]], "kois": [{"koi": "K00110.01", "period": 9.940666412, "t0": 135.21559, "dur_h": 3.9092, "prad": "2.87", "n_cluster": 2, "fap": 1.0}]} +{"kic": "9552608", "days": 356.8653101851852, "n_flash": 3, "flashes": [[331.25150095144636, 5.4895042006646335, 1], [528.3587307073612, 5.063623079816822, 1], [684.3326567813347, 5.0163326324791075, 1]], "kois": [{"koi": "K00080.01", "period": 9.250572762, "t0": 135.407531, "dur_h": 3.6373, "prad": "96.08", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9950612", "days": 313.9763292824074, "n_flash": 2, "flashes": [[1144.7003210867188, 5.055973599096063, 1], [1239.2305667658657, 5.074930779126869, 1]], "kois": [{"koi": "K00719.01", "period": 9.034190783, "t0": 171.015329, "dur_h": 1.5501, "prad": "1.8", "n_cluster": 2, "fap": 1.0}, {"koi": "K00719.02", "period": 28.1224393, "t0": 146.91763, "dur_h": 4.174, "prad": "0.9", "n_cluster": 2, "fap": 1.0}, {"koi": "K00719.03", "period": 45.9029768, "t0": 166.55667, "dur_h": 5.0041, "prad": "1.18", "n_cluster": 2, "fap": 1.0}, {"koi": "K00719.04", "period": 4.159816554, "t0": 133.78616, "dur_h": 1.6261, "prad": "0.86", "n_cluster": 2, "fap": 1.0}]} +{"kic": "10872983", "days": 324.71372974537036, "n_flash": 7, "flashes": [[773.0744460457645, 5.583494780139757, 1], [946.7364862478498, 5.143543864732146, 1], [987.368077823332, 6.557947543838751, 1], [1194.1508424765707, 7.055866302587633, 1], [1202.3415350302384, 5.0112647186563235, 1], [1248.0612755360708, 5.185965527492818, 1], [1272.722115595956, 5.665714182692023, 1]], "kois": [{"koi": "K00756.01", "period": 11.09432054, "t0": 171.20116, "dur_h": 4.5945, "prad": "3.9", "n_cluster": 1, "fap": 1.0}, {"koi": "K00756.02", "period": 4.13443512, "t0": 172.97937, "dur_h": 3.1402, "prad": "2.77", "n_cluster": 1, "fap": 1.0}, {"koi": "K00756.03", "period": 2.56658897, "t0": 179.55437, "dur_h": 2.429, "prad": "1.59", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11853255", "days": 345.24924652777776, "n_flash": 3, "flashes": [[839.8137535316273, 5.008983654113674, 1], [1021.0296070602053, 5.5312799479505115, 1], [1034.4213893202395, 7.651829710017565, 1]], "kois": [{"koi": "K00778.01", "period": 2.243380573, "t0": 170.679233, "dur_h": 1.1196, "prad": "1.99", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3453214", "days": 323.02996585648145, "n_flash": 3, "flashes": [[1140.4534751377578, 5.042249694642865, 1], [1425.1570070751623, 5.02908619038231, 1], [1464.676427102102, 5.150793306940428, 1]], "kois": [{"koi": "K00802.01", "period": 19.620346923, "t0": 181.881819, "dur_h": 2.0038, "prad": "13.6", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5115978", "days": 319.77550636574074, "n_flash": 9, "flashes": [[772.6120007047575, 6.302624648156775, 1], [779.3653280564831, 5.05209487121317, 1], [783.8396420725912, 6.218889959633879, 1], [1002.1587293343109, 5.2026360535623155, 1], [1016.9848267453272, 6.064830189363206, 1], [1048.1201170718778, 5.141004132233798, 1], [1054.7028100186362, 7.206071729236058, 1], [1093.2060458059568, 5.992860638805182, 1], [1093.498915746728, 5.066008002600092, 1]], "kois": [{"koi": "K00823.01", "period": 1.028436523, "t0": 170.228582, "dur_h": 1.8606, "prad": "72.77", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5561278", "days": 310.9738894675926, "n_flash": 1, "flashes": [[1018.9581161906754, 5.371996795484316, 1]], "kois": [{"koi": "K01621.01", "period": 20.31047472, "t0": 146.82534, "dur_h": 5.3357, "prad": "2.41", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6278762", "days": 273.2397326388889, "n_flash": 8, "flashes": [[388.85425453056087, 5.395900518247776, 1], [550.9304822585473, 11.442746375428024, 1], [1499.8324373881915, 5.249264067797516, 1], [1515.7270483005777, 6.134448461893929, 1], [1519.6625899798455, 5.058035276283053, 1], [1526.6707174818657, 5.103500090639105, 1], [1528.6575750475167, 6.888363875579095, 1], [1534.3627401453923, 5.005277355709882, 1]], "kois": [{"koi": "K03158.02", "period": 4.54586982, "t0": 131.52442, "dur_h": 1.756, "prad": "0.65", "n_cluster": 1, "fap": 1.0}, {"koi": "K03158.03", "period": 6.18943952, "t0": 134.78, "dur_h": 2.3316, "prad": "0.65", "n_cluster": 1, "fap": 1.0}, {"koi": "K03158.04", "period": 7.74347801, "t0": 135.09417, "dur_h": 2.7878, "prad": "0.62", "n_cluster": 1, "fap": 1.0}, {"koi": "K03158.05", "period": 9.74048508, "t0": 134.87916, "dur_h": 1.6993, "prad": "0.95", "n_cluster": 1, "fap": 1.0}, {"koi": "K03158.01", "period": 3.60011712, "t0": 133.25983, "dur_h": 2.396, "prad": "0.5", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7747425", "days": 322.7459328703704, "n_flash": 2, "flashes": [[1349.8766603742406, 11.603824628935175, 1], [1377.708562057538, 6.020359042515153, 1]], "kois": [{"koi": "K01952.04", "period": 42.4729078, "t0": 146.28712, "dur_h": 7.253, "prad": "2.03", "n_cluster": 2, "fap": 1.0}, {"koi": "K01952.01", "period": 8.0103929, "t0": 135.31823, "dur_h": 4.2713, "prad": "1.88", "n_cluster": 2, "fap": 1.0}, {"koi": "K01952.02", "period": 27.6666375, "t0": 143.86343, "dur_h": 6.315, "prad": "2.04", "n_cluster": 2, "fap": 1.0}, {"koi": "K01952.03", "period": 5.19559398, "t0": 132.72178, "dur_h": 3.748, "prad": "1.18", "n_cluster": 2, "fap": 1.0}]} +{"kic": "8176564", "days": 290.63590162037036, "n_flash": 2, "flashes": [[1328.6777224849575, 5.273741742127966, 1], [1466.1446772787604, 5.566840004917934, 1]], "kois": [{"koi": "K02720.01", "period": 6.57159435, "t0": 132.74598, "dur_h": 3.1044, "prad": "1.26", "n_cluster": 2, "fap": 1.0}]} +{"kic": "9146018", "days": 318.0420196759259, "n_flash": 3, "flashes": [[754.4914457500709, 5.1312834894743276, 1], [843.1770845465071, 6.043774322294814, 2], [1059.0267212053586, 5.691729053241784, 1]], "kois": [{"koi": "K00584.01", "period": 9.9267215, "t0": 175.68671, "dur_h": 3.8428, "prad": "2.76", "n_cluster": 1, "fap": 1.0}, {"koi": "K00584.02", "period": 21.22349325, "t0": 170.37387, "dur_h": 4.9416, "prad": "2.63", "n_cluster": 1, "fap": 1.0}, {"koi": "K00584.03", "period": 6.47027706, "t0": 136.50567, "dur_h": 3.343, "prad": "1.15", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9663113", "days": 315.9277789351852, "n_flash": 5, "flashes": [[353.44270714414597, 6.725561971595755, 1], [471.3012968893963, 5.134528597535844, 1], [607.148742199679, 5.016851003181896, 1], [779.3650807310332, 6.215334341286889, 1], [791.7935402883013, 5.014710629080241, 1]], "kois": [{"koi": "K00179.01", "period": 20.74028645, "t0": 142.80003, "dur_h": 10.3939, "prad": "4.24", "n_cluster": 1, "fap": 1.0}, {"koi": "K00179.02", "period": 572.376632, "t0": 306.51006, "dur_h": 24.42, "prad": "5.8", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9884104", "days": 288.66333680555556, "n_flash": 5, "flashes": [[917.4126293650988, 5.1292337930494245, 1], [978.1735471119318, 6.808699341952165, 1], [1171.8413110543333, 5.939050495444765, 1], [1174.5753863434875, 6.731588443184666, 1], [1176.2938915206178, 6.031121105922594, 1]], "kois": [{"koi": "K00718.01", "period": 4.585466941, "t0": 169.86095, "dur_h": 3.4437, "prad": "3.29", "n_cluster": 1, "fap": 1.0}, {"koi": "K00718.02", "period": 22.71443351, "t0": 147.29684, "dur_h": 6.0875, "prad": "4.01", "n_cluster": 1, "fap": 1.0}, {"koi": "K00718.03", "period": 47.903427, "t0": 141.98347, "dur_h": 6.191, "prad": "3.55", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10271806", "days": 274.44397800925924, "n_flash": 5, "flashes": [[843.1761770412195, 5.204943249312083, 1], [881.8794983234911, 5.116507227536788, 1], [890.70166313972, 5.8334486202592695, 1], [1101.0935677220623, 5.008396942319815, 1], [1567.4117035749514, 5.141809607971756, 1]], "kois": [{"koi": "K00733.01", "period": 5.924993927, "t0": 169.71629, "dur_h": 2.8874, "prad": "3.15", "n_cluster": 1, "fap": 1.0}, {"koi": "K00733.02", "period": 11.34934848, "t0": 134.31805, "dur_h": 3.1101, "prad": "2.39", "n_cluster": 1, "fap": 1.0}, {"koi": "K00733.03", "period": 3.13295351, "t0": 135.67494, "dur_h": 2.2207, "prad": "1.39", "n_cluster": 1, "fap": 1.0}, {"koi": "K00733.04", "period": 18.64349986, "t0": 141.62687, "dur_h": 1.8491, "prad": "2.14", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11074835", "days": 278.99531712962965, "n_flash": 5, "flashes": [[1193.6406032512823, 5.322602128381785, 1], [1242.4021957270234, 6.851854929055685, 1], [1268.4490017671196, 9.023916772417586, 1], [1331.4860691337599, 6.14283197893959, 1], [1465.4888416507602, 5.077476797976134, 1]], "kois": [{"koi": "K02533.01", "period": 6.03355539, "t0": 137.121, "dur_h": 10.049, "prad": "3.34", "n_cluster": 1, "fap": 1.0}, {"koi": "K02533.03", "period": 26.1152887, "t0": 145.5641, "dur_h": 12.54, "prad": "2.38", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3939150", "days": 283.1352511574074, "n_flash": 3, "flashes": [[904.0610837253407, 5.3445416513039214, 1], [921.2311395183497, 5.09131588865667, 1], [1564.569434378558, 5.283600172290568, 1]], "kois": [{"koi": "K01215.01", "period": 17.32419108, "t0": 142.09977, "dur_h": 8.045, "prad": "3.14", "n_cluster": 1, "fap": 1.0}, {"koi": "K01215.02", "period": 33.0063185, "t0": 145.38821, "dur_h": 7.118, "prad": "3.13", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4851530", "days": 268.90226967592594, "n_flash": 3, "flashes": [[1464.19985246953, 6.5352931225241075, 1], [1518.0323738084408, 11.649844296236582, 1], [1540.210568878727, 5.033291337637859, 1]], "kois": [{"koi": "K01884.01", "period": 23.11707222, "t0": 149.56221, "dur_h": 3.9948, "prad": "4.37", "n_cluster": 1, "fap": 1.0}, {"koi": "K01884.02", "period": 4.77502117, "t0": 355.45644, "dur_h": 1.7087, "prad": "1.73", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5546761", "days": 268.2776695601852, "n_flash": 2, "flashes": [[1384.4164822063467, 5.105719604909672, 1], [1518.0324490311323, 13.073628895528477, 1]], "kois": [{"koi": "K02160.01", "period": 17.6700291, "t0": 131.60103, "dur_h": 6.693, "prad": "2.89", "n_cluster": 2, "fap": 1.0}, {"koi": "K02160.02", "period": 15.40877383, "t0": 139.4831786, "dur_h": 3.49, "prad": "", "n_cluster": 2, "fap": 1.0}]} +{"kic": "6196457", "days": 253.35538020833334, "n_flash": 3, "flashes": [[757.8537423406742, 5.099434444438173, 1], [777.3549516617204, 5.043179406274849, 1], [1567.981168269558, 8.536220776033776, 1]], "kois": [{"koi": "K00285.01", "period": 13.74883059, "t0": 179.279158, "dur_h": 6.0968, "prad": "3.63", "n_cluster": 1, "fap": 1.0}, {"koi": "K00285.02", "period": 26.723169, "t0": 147.93696, "dur_h": 8.501, "prad": "2.31", "n_cluster": 1, "fap": 1.0}, {"koi": "K00285.03", "period": 49.3567907, "t0": 134.29533, "dur_h": 10.954, "prad": "1.91", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6867155", "days": 285.62888368055553, "n_flash": 7, "flashes": [[1026.7745734272685, 5.1334155445114655, 1], [1167.9495245409707, 5.141619890699347, 1], [1184.1782852270844, 5.271515091626534, 1], [1210.4684472985682, 5.345568086435564, 1], [1373.6072189286351, 5.109270142125903, 1], [1393.0824877673367, 5.368639254505814, 1], [1406.1383305858617, 5.334002546553346, 1]], "kois": [{"koi": "K00868.01", "period": 235.9986399, "t0": 208.399822, "dur_h": 8.2284, "prad": "10.59", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7582689", "days": 263.2447685185185, "n_flash": 8, "flashes": [[1280.089575880549, 5.948196342740058, 1], [1340.797131555155, 5.999536138060937, 1], [1380.3676455993118, 5.370139467162446, 1], [1407.266727940936, 5.111114908119859, 1], [1422.0348383958772, 5.335853461309524, 1], [1423.8506326555726, 5.528272244917292, 1], [1448.1861860847566, 5.020549953699039, 1], [1505.5146296452149, 6.325171502843907, 1]], "kois": [{"koi": "K03097.01", "period": 11.9216035, "t0": 137.47581, "dur_h": 5.009, "prad": "0.87", "n_cluster": 1, "fap": 1.0}, {"koi": "K03097.02", "period": 6.80257947, "t0": 138.0478, "dur_h": 4.608, "prad": "0.73", "n_cluster": 1, "fap": 1.0}, {"koi": "K03097.03", "period": 8.70312154, "t0": 140.15531, "dur_h": 4.807, "prad": "0.72", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9941859", "days": 268.78102777777775, "n_flash": 4, "flashes": [[813.8764246527062, 5.230190949027458, 1], [849.6255194082842, 5.0539323406900785, 1], [1001.6804412223428, 5.1466973294389415, 1], [1140.2165900632608, 5.002332868643163, 1]], "kois": [{"koi": "K00528.01", "period": 9.57665962, "t0": 176.683759, "dur_h": 3.3603, "prad": "2.88", "n_cluster": 1, "fap": 1.0}, {"koi": "K00528.02", "period": 96.6781852, "t0": 140.18339, "dur_h": 5.6957, "prad": "3.29", "n_cluster": 1, "fap": 1.0}, {"koi": "K00528.03", "period": 20.55280311, "t0": 145.02837, "dur_h": 2.2013, "prad": "2.99", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10602291", "days": 280.8970439814815, "n_flash": 1, "flashes": [[599.6371242782843, 7.507343150891507, 1]], "kois": [{"koi": "K00210.01", "period": 20.92735802, "t0": 139.325791, "dur_h": 3.4256, "prad": "17.36", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10937029", "days": 283.4383559027778, "n_flash": 1, "flashes": [[1501.897467673327, 5.972946730849874, 1]], "kois": [{"koi": "K00433.01", "period": 4.030466786, "t0": 171.092308, "dur_h": 2.7734, "prad": "4.48", "n_cluster": 1, "fap": 1.0}, {"koi": "K00433.02", "period": 328.240201, "t0": 199.203375, "dur_h": 12.2726, "prad": "10.99", "n_cluster": 1, "fap": 1.0}]} +{"kic": "2987027", "days": 280.7049641203704, "n_flash": 3, "flashes": [[364.0233960560945, 5.1225484941871, 1], [375.70232666444645, 5.221503409148047, 1], [424.1084912217775, 5.112068469723234, 1]], "kois": [{"koi": "K00197.01", "period": 17.276296682, "t0": 133.839172, "dur_h": 3.94738, "prad": "7.31", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3861595", "days": 251.00751041666666, "n_flash": 8, "flashes": [[173.29841916276928, 5.050192990471663, 1], [175.39156505184656, 5.457467881506298, 1], [250.67381961700448, 5.0716257686178805, 1], [417.8671310975842, 5.685942625290548, 1], [638.1345133292634, 5.7946575026523925, 1], [683.2599723342646, 5.289078275460571, 1], [684.6119255656813, 5.31835332118929, 1], [783.2987947801012, 5.085365713355524, 1]], "kois": [{"koi": "K00004.01", "period": 3.849371737, "t0": 157.526686, "dur_h": 2.632, "prad": "12.94", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5728139", "days": 280.9426799768519, "n_flash": 9, "flashes": [[400.9806957314431, 5.026378369108149, 1], [450.1114363935267, 5.18996332391628, 1], [451.1106748892562, 5.190725996698813, 1], [468.1025724852225, 5.102092526358372, 1], [486.12719453842874, 5.457738759954643, 1], [487.35939953607885, 5.030120780986868, 1], [526.9547462311966, 5.037788422544478, 1], [592.1925689254131, 5.339289913796393, 1], [601.366521972901, 5.070937728744902, 1]], "kois": [{"koi": "K00206.01", "period": 5.334082429, "t0": 131.981761, "dur_h": 6.2226, "prad": "13.08", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6471021", "days": 280.26699479166666, "n_flash": 2, "flashes": [[1406.0808998118664, 5.1164458220907125, 1], [1497.3695622043306, 5.192422049791078, 1]], "kois": [{"koi": "K00372.01", "period": 125.6291479, "t0": 253.35079, "dur_h": 9.108, "prad": "10.02", "n_cluster": 2, "fap": 1.0}]} +{"kic": "7046804", "days": 283.2176684027778, "n_flash": 3, "flashes": [[353.4423329389101, 5.895259337982582, 1], [423.4042046286995, 5.1050280269032795, 1], [482.762414169214, 5.066171450875457, 1]], "kois": [{"koi": "K00205.01", "period": 11.720123999, "t0": 142.173999, "dur_h": 3.0039, "prad": "7.94", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7877496", "days": 282.3955393518518, "n_flash": 10, "flashes": [[387.1728369360935, 5.428852369524661, 1], [413.7687761230627, 5.100297302740391, 1], [470.12506690304144, 5.825961008624572, 1], [487.31246245755756, 5.562262986777893, 1], [499.004348743365, 5.011558349373553, 1], [503.01084853438806, 5.348798204958127, 1], [546.5935532403237, 5.4627178729567865, 1], [584.6363985828066, 5.017558672598659, 1], [588.7360307585986, 5.225143774573311, 1], [593.7183734968567, 5.120335575714958, 1]], "kois": [{"koi": "K00202.01", "period": 1.72086129, "t0": 133.0209998, "dur_h": 2.0243, "prad": "13.25", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9305831", "days": 284.65281828703706, "n_flash": 3, "flashes": [[420.1232467578957, 5.357940534164408, 1], [433.82549939394085, 5.262035416729643, 1], [609.1561358059262, 5.424760832528522, 1]], "kois": [{"koi": "K00204.01", "period": 3.246732048, "t0": 133.379165, "dur_h": 3.0535, "prad": "12.4", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9527334", "days": 281.6973767361111, "n_flash": 2, "flashes": [[365.56612770687207, 5.469736395145576, 1], [433.8259184348499, 5.947031625857603, 1]], "kois": [{"koi": "K00049.01", "period": 8.31377304, "t0": 175.99137, "dur_h": 2.964, "prad": "2.74", "n_cluster": 2, "fap": 1.0}]} +{"kic": "10905746", "days": 243.54772800925926, "n_flash": 4, "flashes": [[1281.0126308080726, 5.30122595432624, 1], [1398.7900551495404, 5.200090919051788, 1], [1422.2695055612203, 5.334736102330487, 1], [1468.6586134307872, 5.775660161330198, 1]], "kois": [{"koi": "K01725.01", "period": 9.8786461, "t0": 138.41159, "dur_h": 1.8915, "prad": "1.6", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10975146", "days": 261.40366261574076, "n_flash": 9, "flashes": [[813.8605392827012, 5.074789490345199, 1], [813.8877849261262, 8.332781126223011, 1], [869.4362588948425, 5.038262014742954, 1], [963.8782461248702, 5.3233538989830995, 1], [978.1728353954022, 7.372614473396131, 1], [1020.3557693313123, 5.914228641037868, 1], [1034.526695313376, 5.3752242645957065, 1], [1081.537939747417, 7.6091925641481115, 1], [1085.3766075334934, 7.160920472382869, 1]], "kois": [{"koi": "K01300.01", "period": 0.63133171, "t0": 133.94488, "dur_h": 1.1487, "prad": "1.2", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11391755", "days": 257.0192013888889, "n_flash": 3, "flashes": [[1349.8753762124907, 19.039548092423285, 1], [1451.8436324725626, 5.370623973846198, 1], [1464.6470063503439, 5.184057230621043, 1]], "kois": [{"koi": "K02639.01", "period": 25.1123362, "t0": 146.3464, "dur_h": 7.922, "prad": "2.22", "n_cluster": 1, "fap": 1.0}, {"koi": "K02639.02", "period": 2.121023807, "t0": 170.85004, "dur_h": 0.3673, "prad": "5.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11517719", "days": 234.9150324074074, "n_flash": 15, "flashes": [[1119.6968321826862, 5.975319353693116, 1], [1125.6803558025204, 5.355724018445437, 1], [1125.7253090007653, 5.350394479662249, 1], [1140.2166281074387, 6.262561815302443, 1], [1194.2373575419188, 5.85622321848442, 1], [1219.393201777064, 5.873753238964973, 1], [1222.307129468958, 5.718066490994079, 1], [1243.0574965212727, 5.075858787362365, 1], [1248.061184315935, 5.3095965625115085, 1], [1272.3242054365983, 5.337708991581187, 1], [1279.5286116827774, 5.209491175983868, 1], [1285.8564062260048, 5.055102595464095, 1], [1289.207611556987, 6.548066556985937, 1], [1328.210647989239, 7.43386581369306, 1], [1349.876453615274, 7.90915818647366, 1]], "kois": [{"koi": "K01416.01", "period": 2.495780169, "t0": 135.336948, "dur_h": 4.2721, "prad": "15.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11870545", "days": 261.3614322916667, "n_flash": 5, "flashes": [[915.044514206842, 7.0516389964110155, 1], [978.1728471458991, 13.062672748175258, 1], [988.9596611235975, 6.380783705171287, 1], [1076.4061420222788, 6.72189154345501, 1], [1081.5382035893927, 6.872566492686515, 1]], "kois": [{"koi": "K01510.01", "period": 0.839961456, "t0": 178.354, "dur_h": 1.3008, "prad": "1.63", "n_cluster": 2, "fap": 0.0199501246882793}]} +{"kic": "12061969", "days": 257.13158854166664, "n_flash": 3, "flashes": [[1191.1432994917704, 5.514231073147866, 1], [1314.9400974326927, 7.244421846119146, 2], [1325.0881929977259, 5.201647373653634, 1]], "kois": [{"koi": "K02061.02", "period": 1.090011003, "t0": 131.58066, "dur_h": 1.5, "prad": "1.04", "n_cluster": 1, "fap": 1.0}, {"koi": "K02061.01", "period": 14.092583189, "t0": 141.1447066, "dur_h": 4.1536, "prad": "1.82", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12785320", "days": 227.27679282407408, "n_flash": 2, "flashes": [[673.0450517602221, 5.025795513351046, 1], [773.3432717853866, 5.173213919493128, 1]], "kois": [{"koi": "K00298.01", "period": 19.96367208, "t0": 178.30806, "dur_h": 2.6403, "prad": "1.5", "n_cluster": 2, "fap": 1.0}, {"koi": "K00298.02", "period": 57.3840375, "t0": 170.72723, "dur_h": 4.336, "prad": "1.62", "n_cluster": 2, "fap": 1.0}]} +{"kic": "4061149", "days": 262.21216898148145, "n_flash": 5, "flashes": [[885.8816709445236, 6.037351686981076, 1], [1053.7469689014615, 5.0087737281193565, 1], [1068.8936415454373, 5.094409584976149, 1], [1072.5108731675573, 5.730689515148523, 1], [1081.785263921127, 5.18450302031352, 1]], "kois": [{"koi": "K01201.01", "period": 2.757584622, "t0": 133.05017, "dur_h": 0.9267, "prad": "1.01", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5164255", "days": 246.86280844907407, "n_flash": 1, "flashes": [[1533.001420882836, 5.269871778531442, 1]], "kois": [{"koi": "K00824.01", "period": 15.37562369, "t0": 173.61402, "dur_h": 3.3169, "prad": "11.01", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5809890", "days": 258.4298304398148, "n_flash": 4, "flashes": [[809.8098717739049, 6.243904372578712, 1], [860.6459672351775, 6.947033815940882, 2], [873.4468670024435, 5.02681226324887, 1], [1018.9579867587236, 8.293973497817257, 1]], "kois": [{"koi": "K01050.01", "period": 1.269091415, "t0": 133.343682, "dur_h": 1.4647, "prad": "1.41", "n_cluster": 1, "fap": 1.0}, {"koi": "K01050.02", "period": 2.853133997, "t0": 133.79678, "dur_h": 1.465, "prad": "1.36", "n_cluster": 2, "fap": 0.014962593516209476}]} +{"kic": "6060203", "days": 261.62435011574075, "n_flash": 7, "flashes": [[812.4731524994713, 5.0328126566397, 1], [860.6459723123407, 5.207140568189972, 2], [866.8069946204268, 5.018605900170981, 1], [1020.1471562295774, 7.366452168421534, 1], [1034.4221434912906, 6.81480650459733, 1], [1038.713683192691, 5.047104293235004, 1], [1081.5370174979253, 6.0473168699907, 1]], "kois": [{"koi": "K01059.01", "period": 1.022678654, "t0": 133.45422, "dur_h": 1.3712, "prad": "1.14", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6289257", "days": 226.46488078703703, "n_flash": 5, "flashes": [[663.1671819633848, 5.732443925291776, 1], [677.1431123601433, 5.1111718444850585, 1], [687.3764543698708, 5.000179446901897, 1], [741.2305758838047, 5.979015708504827, 1], [772.6121717909264, 5.885040607719107, 1]], "kois": [{"koi": "K00307.01", "period": 19.67409703, "t0": 176.27119, "dur_h": 3.7535, "prad": "1.78", "n_cluster": 1, "fap": 1.0}, {"koi": "K00307.02", "period": 5.21104597, "t0": 131.53797, "dur_h": 3.3447, "prad": "1.18", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6516185", "days": 273.53806944444443, "n_flash": 1, "flashes": [[1548.60463918373, 7.650262701820599, 1]], "kois": [{"koi": "K02445.01", "period": 47.3659328, "t0": 175.0355, "dur_h": 7.929, "prad": "11.97", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6934291", "days": 261.0426614583333, "n_flash": 5, "flashes": [[851.4790588324831, 5.09506048276086, 1], [884.2082058002998, 5.182722907796965, 1], [1026.7741461048063, 5.090269291270775, 1], [1065.5459130497038, 5.242567768628079, 1], [1067.0157105204926, 5.593441772133898, 1]], "kois": [{"koi": "K01367.01", "period": 0.567856484, "t0": 134.063088, "dur_h": 1.0258, "prad": "1.55", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7265298", "days": 256.30605381944446, "n_flash": 1, "flashes": [[1354.1940306865363, 5.191061706946906, 1]], "kois": [{"koi": "K02051.01", "period": 25.7626846, "t0": 147.6963, "dur_h": 6.908, "prad": "2.66", "n_cluster": 1, "fap": 1.0}, {"koi": "K02051.02", "period": 11.0317836, "t0": 362.3431, "dur_h": 4.753, "prad": "1.45", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7376983", "days": 192.06419502314816, "n_flash": 3, "flashes": [[1138.8299923838786, 5.010050228544429, 1], [1159.3201766264829, 5.073375270120727, 1], [1271.7055760035655, 5.006249687114911, 1]], "kois": [{"koi": "K01358.01", "period": 5.644914154, "t0": 356.73699, "dur_h": 2.2599, "prad": "2.66", "n_cluster": 1, "fap": 1.0}, {"koi": "K01358.02", "period": 8.74292005, "t0": 358.59286, "dur_h": 2.6277, "prad": "1.92", "n_cluster": 1, "fap": 1.0}, {"koi": "K01358.03", "period": 3.64830183, "t0": 355.39128, "dur_h": 1.9985, "prad": "1.33", "n_cluster": 1, "fap": 1.0}, {"koi": "K01358.04", "period": 2.345863002, "t0": 354.11185, "dur_h": 1.6795, "prad": "1.23", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7811397", "days": 232.14281597222222, "n_flash": 2, "flashes": [[1081.5374093287828, 5.893335592594464, 1], [1155.2392553282261, 5.042162896689187, 1]], "kois": [{"koi": "K01477.01", "period": 169.4976085, "t0": 228.99997, "dur_h": 7.77, "prad": "9.06", "n_cluster": 2, "fap": 1.0}]} +{"kic": "8240617", "days": 245.7757181712963, "n_flash": 2, "flashes": [[1322.1954387037986, 5.051813797436767, 1], [1406.1391435472833, 5.399166348953419, 1]], "kois": [{"koi": "K02474.01", "period": 176.845697, "t0": 197.27794, "dur_h": 3.812, "prad": "42.05", "n_cluster": 2, "fap": 1.0}]} +{"kic": "9388479", "days": 260.8212928240741, "n_flash": 4, "flashes": [[849.5529245584185, 5.165278653648886, 1], [895.5511539228391, 5.13020560676881, 1], [983.8156433598051, 5.888522630892589, 1], [1018.956965283076, 9.130032763426025, 1]], "kois": [{"koi": "K00936.01", "period": 9.467821474, "t0": 178.415842, "dur_h": 2.4327, "prad": "2.13", "n_cluster": 1, "fap": 1.0}, {"koi": "K00936.02", "period": 0.893040969, "t0": 134.540342, "dur_h": 1.0981, "prad": "1.24", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9480189", "days": 241.85442824074073, "n_flash": 1, "flashes": [[783.84001624331, 9.927923365226096, 1]], "kois": [{"koi": "K00941.01", "period": 6.581477136, "t0": 174.787814, "dur_h": 3.0896, "prad": "4.56", "n_cluster": 1, "fap": 1.0}, {"koi": "K00941.02", "period": 2.382652873, "t0": 170.66626, "dur_h": 1.8888, "prad": "2.74", "n_cluster": 1, "fap": 1.0}, {"koi": "K00941.03", "period": 24.66461416, "t0": 189.02031, "dur_h": 2.8579, "prad": "5.34", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9602613", "days": 231.17901099537036, "n_flash": 2, "flashes": [[1123.1191106750193, 5.40023019268569, 1], [1123.5196013325767, 5.491345813382915, 1]], "kois": [{"koi": "K02612.01", "period": 4.61225043, "t0": 133.86134, "dur_h": 2.695, "prad": "0.51", "n_cluster": 2, "fap": 1.0}, {"koi": "K02612.02", "period": 7.57299816, "t0": 131.94317, "dur_h": 2.645, "prad": "0.53", "n_cluster": 2, "fap": 1.0}]} +{"kic": "10586004", "days": 186.61580208333334, "n_flash": 4, "flashes": [[657.7438011897248, 5.422275719646829, 1], [695.1237407715307, 5.183668822928684, 1], [701.9211041715971, 6.1711162416309415, 1], [1570.1516503722014, 5.290051351620192, 1]], "kois": [{"koi": "K00275.01", "period": 15.79196594, "t0": 176.81888, "dur_h": 7.2772, "prad": "2.4", "n_cluster": 1, "fap": 1.0}, {"koi": "K00275.02", "period": 82.2001239, "t0": 208.79417, "dur_h": 10.627, "prad": "2.57", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11391018", "days": 220.51244849537036, "n_flash": 2, "flashes": [[478.90499919224385, 5.45703694925272, 1], [482.2371446528341, 5.984513705515219, 1]], "kois": [{"koi": "K00189.01", "period": 30.360445359, "t0": 148.091546, "dur_h": 6.0134, "prad": "10.99", "n_cluster": 2, "fap": 1.0}]} +{"kic": "4262040", "days": 182.86070891203704, "n_flash": 4, "flashes": [[1392.6526877474462, 5.178953440612471, 1], [1445.463478388614, 6.974598375936024, 1], [1506.2517508884266, 5.473595747108184, 1], [1507.968850760808, 5.079012945326171, 1]], "kois": [{"koi": "K03202.01", "period": 92.461135, "t0": 211.1951, "dur_h": 14.344, "prad": "2.86", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7219825", "days": 186.82627256944446, "n_flash": 1, "flashes": [[608.9437579818987, 6.536707105269087, 1]], "kois": [{"koi": "K00238.01", "period": 17.23232894, "t0": 135.0922, "dur_h": 4.5568, "prad": "2.79", "n_cluster": 1, "fap": 1.0}, {"koi": "K00238.02", "period": 26.6951944, "t0": 143.9999, "dur_h": 4.576, "prad": "1.4", "n_cluster": 1, "fap": 1.0}, {"koi": "K00238.03", "period": 362.97828, "t0": 256.5011, "dur_h": 14.083, "prad": "1.96", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8801316", "days": 197.53847106481481, "n_flash": 3, "flashes": [[1280.9856935112257, 5.863003109375465, 1], [1325.0892365959517, 9.266957665161934, 1], [1411.4270373732215, 5.41625767297233, 1]], "kois": [{"koi": "K02956.01", "period": 3.93766786, "t0": 135.27724, "dur_h": 4.655, "prad": "1.36", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11013201", "days": 167.77358506944444, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00972.01", "period": 13.118962443, "t0": 261.539434, "dur_h": 4.3045, "prad": "8.25", "n_cluster": 0, "fap": 1.0}, {"koi": "K00972.02", "period": 7.82187328, "t0": 123.49907, "dur_h": 3.8417, "prad": "2.78", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11547513", "days": 191.47092708333332, "n_flash": 2, "flashes": [[608.9427408400443, 6.500177161772883, 2], [1238.4339303555607, 5.16238101201756, 1]], "kois": [{"koi": "K00295.01", "period": 5.317440164, "t0": 171.875619, "dur_h": 2.9331, "prad": "1.94", "n_cluster": 2, "fap": 1.0}, {"koi": "K00295.02", "period": 10.10575764, "t0": 135.50958, "dur_h": 2.0138, "prad": "1.28", "n_cluster": 2, "fap": 1.0}]} +{"kic": "3762468", "days": 198.38035300925927, "n_flash": 8, "flashes": [[363.5406741425395, 8.110865257076792, 2], [368.8852678371695, 6.551508591339868, 1], [384.5888546017086, 5.8964679033850285, 1], [402.93609754504723, 5.882168252915562, 1], [426.7981111732297, 5.0783292949488015, 1], [447.846042205485, 5.07505500636727, 1], [486.0531727476118, 6.738026268152226, 1], [688.1488632936162, 9.96393486946854, 2]], "kois": [{"koi": "K00208.01", "period": 3.003879547, "t0": 134.709874, "dur_h": 3.2848, "prad": "10.96", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6685609", "days": 204.706046875, "n_flash": 4, "flashes": [[813.8876786852124, 6.678261381206969, 1], [862.1572356580582, 5.2771177049359865, 1], [966.9730772117036, 5.602503751631146, 1], [976.5372409540578, 5.260688088768751, 1]], "kois": [{"koi": "K00665.01", "period": 5.868066282, "t0": 170.324046, "dur_h": 4.1246, "prad": "3.6", "n_cluster": 1, "fap": 1.0}, {"koi": "K00665.02", "period": 1.61189046, "t0": 133.5704, "dur_h": 3.0792, "prad": "1.72", "n_cluster": 1, "fap": 1.0}, {"koi": "K00665.03", "period": 3.07155284, "t0": 133.30255, "dur_h": 4.0935, "prad": "1.65", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10027247", "days": 157.11179050925927, "n_flash": 2, "flashes": [[1364.05609903398, 5.106943919032454, 1], [1490.8014398460436, 5.2100668630243145, 1]], "kois": [{"koi": "K02418.01", "period": 86.829519, "t0": 189.26162, "dur_h": 7.464, "prad": "1.68", "n_cluster": 2, "fap": 1.0}]} +{"kic": "10158418", "days": 166.8881105324074, "n_flash": 4, "flashes": [[1199.4533907990117, 5.192459934930547, 1], [1200.2925552135785, 5.374349518769528, 1], [1288.1213611572093, 6.192613826996234, 1], [1331.487768558327, 7.0150106746672085, 1]], "kois": [{"koi": "K01784.01", "period": 5.007414194, "t0": 135.024066, "dur_h": 1.3584, "prad": "8.8", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10482160", "days": 179.71250636574075, "n_flash": 3, "flashes": [[871.666094260152, 5.098000310396883, 1], [881.8791975199201, 5.188422473517069, 1], [946.7365395404559, 5.223501550198776, 1]], "kois": [{"koi": "K01170.01", "period": 7.34373964, "t0": 137.29874, "dur_h": 1.1784, "prad": "1.84", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10854555", "days": 145.1551597222222, "n_flash": 4, "flashes": [[647.3600321273843, 5.144910592674757, 1], [695.6954049119668, 5.071459915658484, 1], [773.3429837285948, 5.607976012956742, 2], [790.2798686940005, 5.051090037598526, 1]], "kois": [{"koi": "K00755.01", "period": 2.525591777, "t0": 171.59555, "dur_h": 1.6545, "prad": "2.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11074541", "days": 137.55233912037036, "n_flash": 1, "flashes": [[1571.6964054337368, 5.283471323948327, 1]], "kois": [{"koi": "K00345.01", "period": 29.88487723, "t0": 173.194404, "dur_h": 4.5612, "prad": "2.81", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11502218", "days": 102.88669212962962, "n_flash": 7, "flashes": [[1024.2235365127344, 5.93256429127703, 1], [1027.8892123109472, 5.124468851408299, 1], [1039.7873136557319, 5.698126115035046, 1], [1100.2402762216443, 5.0661048252962395, 1], [1111.9764224751489, 7.406546918659501, 1], [1113.0907162739604, 5.3261584915278295, 1], [1119.0626894153684, 7.376276287868867, 1]], "kois": [{"koi": "K00970.01", "period": 3.9886021, "t0": 171.01852, "dur_h": 1.7376, "prad": "34.39", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11802615", "days": 166.03464930555555, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00296.01", "period": 28.86236571, "t0": 178.48498, "dur_h": 5.4033, "prad": "2.53", "n_cluster": 0, "fap": 1.0}]} +{"kic": "2446113", "days": 143.5122638888889, "n_flash": 1, "flashes": [[647.3604414712463, 5.053642815421733, 1]], "kois": [{"koi": "K00379.02", "period": 23.1375919, "t0": 152.17335, "dur_h": 3.35, "prad": "1.83", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3342970", "days": 144.78394155092593, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00800.01", "period": 2.711504086, "t0": 170.03417, "dur_h": 3.0099, "prad": "3.12", "n_cluster": 0, "fap": 1.0}, {"koi": "K00800.02", "period": 7.21203748, "t0": 172.81782, "dur_h": 4.0491, "prad": "3.32", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4178389", "days": 168.93083217592593, "n_flash": 1, "flashes": [[464.44965904524724, 12.344035493570832, 2]], "kois": [{"koi": "K00185.01", "period": 23.210509958, "t0": 134.386378, "dur_h": 3.09802, "prad": "21.19", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4454752", "days": 144.85886631944445, "n_flash": 2, "flashes": [[773.3416086699945, 7.043449190449654, 1], [780.9859232519157, 5.246549509074928, 1]], "kois": [{"koi": "K00496.01", "period": 1.616883373, "t0": 169.80396, "dur_h": 1.6325, "prad": "4.47", "n_cluster": 2, "fap": 1.0}]} +{"kic": "5374854", "days": 143.78335532407408, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00645.01", "period": 8.50339249, "t0": 170.86894, "dur_h": 2.9569, "prad": "1.95", "n_cluster": 0, "fap": 1.0}, {"koi": "K00645.02", "period": 23.7832097, "t0": 179.75013, "dur_h": 7.939, "prad": "2.01", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5542466", "days": 175.84911284722222, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01590.01", "period": 12.89006728, "t0": 201.22989, "dur_h": 3.555, "prad": "1.93", "n_cluster": 0, "fap": 1.0}, {"koi": "K01590.02", "period": 2.35574505, "t0": 177.88824, "dur_h": 1.796, "prad": "1.34", "n_cluster": 0, "fap": 1.0}, {"koi": "K01590.03", "period": 4.74666128, "t0": 134.63784, "dur_h": 2.093, "prad": "1.3", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5791986", "days": 144.72059606481483, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00413.01", "period": 15.22895514, "t0": 176.56001, "dur_h": 2.5967, "prad": "3", "n_cluster": 0, "fap": 1.0}, {"koi": "K00413.02", "period": 24.67458244, "t0": 146.77261, "dur_h": 3.2648, "prad": "2.33", "n_cluster": 0, "fap": 1.0}]} +{"kic": "6062088", "days": 143.35219733796296, "n_flash": 3, "flashes": [[641.2574327263428, 5.093114484152425, 1], [676.5208898553756, 5.0824778593871205, 1], [798.9743674737983, 5.482689308592245, 1]], "kois": [{"koi": "K00658.01", "period": 3.162692075, "t0": 169.64186, "dur_h": 1.9529, "prad": "2.61", "n_cluster": 1, "fap": 1.0}, {"koi": "K00658.02", "period": 5.370639542, "t0": 172.23815, "dur_h": 2.1121, "prad": "2.54", "n_cluster": 1, "fap": 1.0}, {"koi": "K00658.03", "period": 11.32977062, "t0": 133.96755, "dur_h": 3.845, "prad": "1.37", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6300348", "days": 173.54756018518518, "n_flash": 4, "flashes": [[490.5275295000756, 5.46187346408404, 1], [498.1387205307183, 12.338310183032977, 1], [515.1892937739904, 6.187900265837699, 1], [574.6201669258735, 5.149415414542665, 1]], "kois": [{"koi": "K00212.01", "period": 5.69590202, "t0": 139.231637, "dur_h": 3.5661, "prad": "6.61", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6616218", "days": 148.30676793981482, "n_flash": 5, "flashes": [[1114.8030944628626, 5.3808887334351505, 1], [1168.0345667424408, 5.543197107153634, 1], [1180.9884158279965, 5.581062861328785, 1], [1222.1759212606776, 5.420301729659303, 1], [1254.2458622074482, 5.544202462282784, 1]], "kois": [{"koi": "K01692.01", "period": 5.960400011, "t0": 137.265171, "dur_h": 2.8617, "prad": "2.85", "n_cluster": 1, "fap": 1.0}, {"koi": "K01692.02", "period": 2.46106962, "t0": 133.32138, "dur_h": 2.184, "prad": "0.84", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7017274", "days": 157.95231018518518, "n_flash": 2, "flashes": [[1501.8963785902451, 5.09696783706466, 1], [1522.7115600613397, 5.097483859364852, 1]], "kois": [{"koi": "K03209.02", "period": 6.77067637, "t0": 133.34914, "dur_h": 5.982, "prad": "1.9", "n_cluster": 2, "fap": 1.0}, {"koi": "K03209.01", "period": 11.91256675, "t0": 143.15988, "dur_h": 6.126, "prad": "2.61", "n_cluster": 2, "fap": 1.0}]} +{"kic": "7363829", "days": 149.70513657407406, "n_flash": 3, "flashes": [[1019.8838865499056, 5.017007086612639, 1], [1022.1205978935977, 5.203468482924189, 1], [1081.145245125117, 5.100726812167283, 1]], "kois": [{"koi": "K01356.01", "period": 384.02570682, "t0": 335.816169, "dur_h": 14.56, "prad": "", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8265218", "days": 168.0467199074074, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00522.01", "period": 12.82993461, "t0": 169.944919, "dur_h": 2.942, "prad": "3.31", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8639908", "days": 174.33563252314815, "n_flash": 4, "flashes": [[1279.4785929037462, 5.420564184373618, 1], [1325.0895047395534, 5.941688843592134, 1], [1366.8746579818835, 6.040710610427074, 1], [1406.1386450314458, 5.63670047984616, 1]], "kois": [{"koi": "K02700.01", "period": 0.910020582, "t0": 131.99239, "dur_h": 1.7956, "prad": "1.12", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8845205", "days": 173.79685532407407, "n_flash": 4, "flashes": [[1318.2093789080463, 5.002923009050545, 1], [1349.8769220034737, 22.777406768399825, 1], [1368.6701825268174, 5.175759780166693, 1], [1376.5703261658055, 5.220027007421057, 1]], "kois": [{"koi": "K00463.01", "period": 18.47762694, "t0": 185.269061, "dur_h": 1.94, "prad": "1.55", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9530945", "days": 144.00404282407408, "n_flash": 1, "flashes": [[665.5136151222105, 5.077406983972008, 1]], "kois": [{"koi": "K00708.01", "period": 17.40665216, "t0": 171.00688, "dur_h": 6.864, "prad": "2.95", "n_cluster": 1, "fap": 1.0}, {"koi": "K00708.02", "period": 7.69363627, "t0": 176.5035, "dur_h": 5.0324, "prad": "2.12", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9823457", "days": 144.9964554398148, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00954.01", "period": 8.11528727, "t0": 174.52257, "dur_h": 3.211, "prad": "3.1", "n_cluster": 0, "fap": 1.0}, {"koi": "K00954.02", "period": 36.9250409, "t0": 174.22246, "dur_h": 4.9381, "prad": "3.01", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10026544", "days": 96.78577256944445, "n_flash": 1, "flashes": [[1501.8973388942322, 5.2273962013247885, 1]], "kois": [{"koi": "K02312.01", "period": 176.331289, "t0": 170.8589, "dur_h": 13.89, "prad": "2.38", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10973664", "days": 97.09977546296297, "n_flash": 4, "flashes": [[1490.8015271930417, 6.852870866051708, 1], [1520.0091321702857, 7.397463555789728, 2], [1535.4693141663956, 5.251895538431257, 1], [1545.7319067865465, 5.0328658007470946, 1]], "kois": [{"koi": "K00601.01", "period": 5.40426917, "t0": 172.18553, "dur_h": 2.5315, "prad": "2.85", "n_cluster": 1, "fap": 1.0}, {"koi": "K00601.02", "period": 11.67894236, "t0": 131.5119, "dur_h": 1.2641, "prad": "4.17", "n_cluster": 1, "fap": 1.0}, {"koi": "K00601.03", "period": 1.208462378, "t0": 133.67712, "dur_h": 1.544, "prad": "1.64", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11395587", "days": 112.90413368055556, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00350.01", "period": 12.99065074, "t0": 177.23865, "dur_h": 2.3748, "prad": "2.02", "n_cluster": 0, "fap": 1.0}]} +{"kic": "2854698", "days": 103.70541550925925, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00986.01", "period": 8.18739443, "t0": 260.86931, "dur_h": 3.0472, "prad": "1.92", "n_cluster": 0, "fap": 1.0}, {"koi": "K00986.02", "period": 76.0498163, "t0": 161.71445, "dur_h": 7.158, "prad": "1.75", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3338885", "days": 97.17742476851852, "n_flash": 2, "flashes": [[1546.3253496795296, 5.01113400522002, 1], [1578.0851733990712, 5.008601366403423, 1]], "kois": [{"koi": "K01845.01", "period": 1.970340203, "t0": 131.948389, "dur_h": 1.7901, "prad": "3.97", "n_cluster": 2, "fap": 1.0}, {"koi": "K01845.02", "period": 5.05821338, "t0": 135.702454, "dur_h": 1.132, "prad": "10.69", "n_cluster": 2, "fap": 1.0}]} +{"kic": "4932442", "days": 97.12293402777777, "n_flash": 1, "flashes": [[1476.1489257431167, 5.066720294118863, 1]], "kois": [{"koi": "K01665.01", "period": 6.93365167, "t0": 137.07375, "dur_h": 4.608, "prad": "1.7", "n_cluster": 1, "fap": 1.0}, {"koi": "K01665.02", "period": 5.91393977, "t0": 137.17182, "dur_h": 0.562, "prad": "1.07", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6383785", "days": 133.83743287037038, "n_flash": 3, "flashes": [[546.5430594825884, 5.513275681849983, 1], [556.862325458882, 5.4102112131550495, 1], [596.6865188784723, 5.289808274740074, 1]], "kois": [{"koi": "K00239.02", "period": 3.62275506, "t0": 132.99267, "dur_h": 2.7868, "prad": "1.62", "n_cluster": 1, "fap": 1.0}, {"koi": "K00239.01", "period": 5.640676975, "t0": 138.556259, "dur_h": 2.8354, "prad": "4.59", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9008737", "days": 97.53025231481482, "n_flash": 1, "flashes": [[1568.9520593867055, 6.602007598965996, 1]], "kois": [{"koi": "K02768.01", "period": 11.8288843, "t0": 137.6991, "dur_h": 3.337, "prad": "1.18", "n_cluster": 1, "fap": 1.0}, {"koi": "K02768.02", "period": 14.7512034, "t0": 137.1559, "dur_h": 1.25, "prad": "1.63", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9150827", "days": 127.83391550925926, "n_flash": 1, "flashes": [[1175.0050417692619, 5.514745364001602, 1]], "kois": [{"koi": "K01408.01", "period": 14.53410833, "t0": 145.42643, "dur_h": 3.3094, "prad": "1.36", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10189546", "days": 66.5154849537037, "n_flash": 1, "flashes": [[1500.5046146774548, 5.42821782149213, 1]], "kois": [{"koi": "K00427.01", "period": 24.61480613, "t0": 191.741225, "dur_h": 2.6602, "prad": "4.2", "n_cluster": 1, "fap": 1.0}, {"koi": "K00427.02", "period": 42.949522, "t0": 153.73786, "dur_h": 5.4154, "prad": "2.98", "n_cluster": 1, "fap": 1.0}, {"koi": "K00427.03", "period": 117.033521, "t0": 245.65151, "dur_h": 6.822, "prad": "2.68", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10386922", "days": 109.32136747685185, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00289.01", "period": 26.62941953, "t0": 191.99627, "dur_h": 7.8709, "prad": "3.13", "n_cluster": 0, "fap": 1.0}, {"koi": "K00289.02", "period": 296.6375817, "t0": 403.672042, "dur_h": 16.425, "prad": "7.56", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11015108", "days": 109.87853530092593, "n_flash": 1, "flashes": [[638.6797251808966, 5.310883332378976, 1]], "kois": [{"koi": "K00344.01", "period": 39.30944096, "t0": 171.334861, "dur_h": 5.77, "prad": "2.87", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11194032", "days": 112.21346354166667, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00348.01", "period": 28.51117639, "t0": 187.363955, "dur_h": 4.5941, "prad": "3.27", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11361646", "days": 112.07314988425927, "n_flash": 3, "flashes": [[570.2588459737599, 7.73327763344914, 1], [608.9432607438866, 5.62740957097453, 1], [612.4877853328726, 6.440825597242211, 1]], "kois": [{"koi": "K00330.01", "period": 7.97420583, "t0": 174.52718, "dur_h": 5.3503, "prad": "1.85", "n_cluster": 1, "fap": 1.0}, {"koi": "K00330.02", "period": 1.88899036, "t0": 132.09517, "dur_h": 3.486, "prad": "0.83", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3541946", "days": 84.31829108796296, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00624.01", "period": 17.79001678, "t0": 182.43745, "dur_h": 4.4116, "prad": "2.7", "n_cluster": 0, "fap": 1.0}, {"koi": "K00624.02", "period": 49.5674085, "t0": 169.54227, "dur_h": 4.002, "prad": "2.91", "n_cluster": 0, "fap": 1.0}, {"koi": "K00624.03", "period": 1.311842968, "t0": 133.11058, "dur_h": 1.7876, "prad": "1.43", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3847907", "days": 111.41926099537037, "n_flash": 4, "flashes": [[555.1278539521663, 5.014871772493617, 1], [575.4799638619224, 5.046038451853852, 1], [607.2225933334339, 6.042609563529, 1], [638.6805034231438, 6.644261248068226, 1]], "kois": [{"koi": "K00229.01", "period": 3.573202801, "t0": 134.934397, "dur_h": 2.88, "prad": "5.81", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5796675", "days": 98.96472106481481, "n_flash": 2, "flashes": [[735.7783075864209, 5.1108528645441185, 1], [1260.1488310555214, 5.353053736259327, 1]], "kois": [{"koi": "K00652.01", "period": 16.080657264, "t0": 182.7601, "dur_h": 2.8701, "prad": "4.43", "n_cluster": 2, "fap": 1.0}]} +{"kic": "5959753", "days": 112.70932928240741, "n_flash": 1, "flashes": [[608.943618863028, 9.450895686093613, 2]], "kois": [{"koi": "K00226.01", "period": 8.30865307, "t0": 138.10788, "dur_h": 3.2747, "prad": "2.42", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6504954", "days": 118.06032002314815, "n_flash": 3, "flashes": [[1308.2924613524665, 5.129360345740693, 1], [1317.5271175999515, 6.01439422592124, 1], [1433.9684951470845, 5.089754483449134, 1]], "kois": [{"koi": "K01790.01", "period": 130.3543929, "t0": 144.06022, "dur_h": 6.474, "prad": "7.7", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6936909", "days": 75.95260011574074, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01363.01", "period": 3.546531809, "t0": 134.90127, "dur_h": 2.2746, "prad": "2.18", "n_cluster": 0, "fap": 1.0}, {"koi": "K01363.02", "period": 5.70070626, "t0": 132.69229, "dur_h": 1.6408, "prad": "2.03", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7440748", "days": 75.7761863425926, "n_flash": 2, "flashes": [[1496.1627329593466, 5.600644785244779, 1], [1512.2159736658286, 5.063982880835554, 1]], "kois": [{"koi": "K00457.01", "period": 4.9213639, "t0": 174.299322, "dur_h": 1.8806, "prad": "2.14", "n_cluster": 2, "fap": 1.0}, {"koi": "K00457.02", "period": 7.064252021, "t0": 135.379512, "dur_h": 1.3867, "prad": "2.37", "n_cluster": 2, "fap": 1.0}]} +{"kic": "8026752", "days": 113.75487037037037, "n_flash": 1, "flashes": [[558.7503238232166, 5.159677070173572, 1]], "kois": [{"koi": "K00240.01", "period": 4.286866229, "t0": 138.614882, "dur_h": 4.4726, "prad": "4.14", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8107225", "days": 113.11664756944444, "n_flash": 1, "flashes": [[565.3300230535024, 5.29588394306974, 1]], "kois": [{"koi": "K00235.01", "period": 5.63252508, "t0": 133.81818, "dur_h": 2.1448, "prad": "2.04", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8525286", "days": 114.10224884259259, "n_flash": 1, "flashes": [[463.5195980154749, 5.177693238540575, 1]], "kois": [{"koi": "K05533.01", "period": 113.05980069, "t0": 241.0089927, "dur_h": 19.03, "prad": "", "n_cluster": 1, "fap": 1.0}]} +{"kic": "8738735", "days": 107.33245543981481, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00693.01", "period": 28.7796446, "t0": 193.30374, "dur_h": 8.349, "prad": "1.95", "n_cluster": 0, "fap": 1.0}, {"koi": "K00693.02", "period": 15.66057688, "t0": 146.3487, "dur_h": 7.012, "prad": "2.05", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8978528", "days": 75.70058043981481, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01874.01", "period": 18.6848377, "t0": 136.14587, "dur_h": 3.7965, "prad": "1.93", "n_cluster": 0, "fap": 1.0}, {"koi": "K01874.02", "period": 7.41634701, "t0": 135.85372, "dur_h": 2.1362, "prad": "1.24", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9758089", "days": 72.1396105324074, "n_flash": 1, "flashes": [[1173.095483679659, 5.727735046385644, 1]], "kois": [{"koi": "K01871.01", "period": 92.7297248, "t0": 177.43808, "dur_h": 6.83, "prad": "2.81", "n_cluster": 1, "fap": 1.0}, {"koi": "K01871.02", "period": 32.376183, "t0": 150.41557, "dur_h": 4.4639, "prad": "2.26", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10000941", "days": 66.74502719907407, "n_flash": 1, "flashes": [[1142.7789840915793, 6.533954106727408, 3]], "kois": [{"koi": "K04146.02", "period": 2.5738437, "t0": 132.17126, "dur_h": 1.92, "prad": "0.57", "n_cluster": 1, "fap": 1.0}, {"koi": "K04146.01", "period": 3.50472344, "t0": 133.72225, "dur_h": 1.9464, "prad": "0.8", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10290666", "days": 84.41160648148148, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00332.01", "period": 5.45849914, "t0": 172.08857, "dur_h": 4.0448, "prad": "1.91", "n_cluster": 0, "fap": 1.0}, {"koi": "K00332.02", "period": 6.86674226, "t0": 135.3543, "dur_h": 4.216, "prad": "0.79", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10426656", "days": 68.28098495370371, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01161.01", "period": 6.05729966, "t0": 135.92756, "dur_h": 3.7419, "prad": "1.94", "n_cluster": 0, "fap": 1.0}, {"koi": "K01161.02", "period": 10.93725572, "t0": 136.98549, "dur_h": 3.0822, "prad": "2.41", "n_cluster": 0, "fap": 1.0}, {"koi": "K01161.03", "period": 2.97136658, "t0": 134.38662, "dur_h": 2.716, "prad": "1.52", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10471621", "days": 67.98537268518518, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02554.01", "period": 39.7557642, "t0": 150.60745, "dur_h": 1.958, "prad": "13.72", "n_cluster": 0, "fap": 1.0}, {"koi": "K02554.02", "period": 10.27127527, "t0": 135.17631, "dur_h": 3.029, "prad": "0.94", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10554999", "days": 62.33400173611111, "n_flash": 1, "flashes": [[783.8401094767323, 7.488417812230957, 1]], "kois": [{"koi": "K00534.01", "period": 6.400157105, "t0": 174.02214, "dur_h": 2.0004, "prad": "2.52", "n_cluster": 1, "fap": 1.0}, {"koi": "K00534.02", "period": 2.735900074, "t0": 171.0964, "dur_h": 1.9359, "prad": "1.56", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10843590", "days": 94.0346712962963, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00431.01", "period": 18.87022157, "t0": 178.71167, "dur_h": 3.1404, "prad": "2.82", "n_cluster": 0, "fap": 1.0}, {"koi": "K00431.02", "period": 46.9026431, "t0": 154.30327, "dur_h": 3.9264, "prad": "2.6", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11080405", "days": 71.56200868055555, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02442.01", "period": 25.1933989, "t0": 146.4301, "dur_h": 4.62, "prad": "1.95", "n_cluster": 0, "fap": 1.0}, {"koi": "K02442.02", "period": 12.3101351, "t0": 141.8765, "dur_h": 3.797, "prad": "1.51", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11358389", "days": 71.15945833333333, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02163.01", "period": 10.66489514, "t0": 132.00872, "dur_h": 3.159, "prad": "1.76", "n_cluster": 0, "fap": 1.0}, {"koi": "K02163.02", "period": 17.7838298, "t0": 146.91035, "dur_h": 3.997, "prad": "1.6", "n_cluster": 0, "fap": 1.0}, {"koi": "K02163.03", "period": 28.2251049, "t0": 153.7452, "dur_h": 2.354, "prad": "1.59", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11404644", "days": 71.72411863425926, "n_flash": 1, "flashes": [[1474.5020926651923, 5.726069667859678, 1]], "kois": [{"koi": "K06085.01", "period": 5.902596818, "t0": 136.388994, "dur_h": 5.5711, "prad": "25.8", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11601584", "days": 76.77132349537037, "n_flash": 2, "flashes": [[1568.9514282475575, 6.211036229288295, 1], [1571.1072335936624, 5.161558396388079, 1]], "kois": [{"koi": "K01831.01", "period": 51.8098276, "t0": 182.97335, "dur_h": 6.343, "prad": "2.6", "n_cluster": 2, "fap": 1.0}, {"koi": "K01831.02", "period": 4.38536428, "t0": 139.22548, "dur_h": 2.5126, "prad": "1.15", "n_cluster": 2, "fap": 1.0}, {"koi": "K01831.03", "period": 34.205785079, "t0": 148.8050925, "dur_h": 5.1691, "prad": "1.1", "n_cluster": 2, "fap": 1.0}, {"koi": "K01831.04", "period": 13.97945055, "t0": 142.33829, "dur_h": 1.2325, "prad": "1.97", "n_cluster": 2, "fap": 1.0}]} +{"kic": "12366084", "days": 85.17175231481481, "n_flash": 1, "flashes": [[978.1727902213679, 12.994183038714732, 1]], "kois": [{"koi": "K00787.01", "period": 4.431238488, "t0": 171.015, "dur_h": 3.15, "prad": "3.25", "n_cluster": 1, "fap": 1.0}, {"koi": "K00787.02", "period": 11.37936986, "t0": 133.84992, "dur_h": 2.6255, "prad": "3.95", "n_cluster": 1, "fap": 1.0}, {"koi": "K00787.03", "period": 0.589376952, "t0": 131.8694, "dur_h": 1.71, "prad": "0.93", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3114811", "days": 53.04128703703704, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01117.01", "period": 11.08956602, "t0": 141.76142, "dur_h": 6.2877, "prad": "3.51", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3554031", "days": 67.68022453703703, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01194.01", "period": 8.70798309, "t0": 363.05638, "dur_h": 2.4904, "prad": "2.01", "n_cluster": 0, "fap": 1.0}, {"koi": "K01194.02", "period": 14.8623076, "t0": 354.57297, "dur_h": 3.161, "prad": "1.57", "n_cluster": 0, "fap": 1.0}, {"koi": "K01194.03", "period": 4.17634276, "t0": 352.99674, "dur_h": 2.335, "prad": "1.23", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3942670", "days": 42.27051099537037, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00392.01", "period": 33.4160553, "t0": 171.33696, "dur_h": 8.605, "prad": "2.98", "n_cluster": 0, "fap": 1.0}, {"koi": "K00392.02", "period": 12.6119685, "t0": 138.1189, "dur_h": 6.372, "prad": "1.33", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4278221", "days": 52.48480034722222, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01615.01", "period": 1.340596782, "t0": 132.24549, "dur_h": 1.6484, "prad": "1.16", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5113822", "days": 42.392434027777774, "n_flash": 1, "flashes": [[1567.5174744825563, 5.719138750422467, 1]], "kois": [{"koi": "K00638.01", "period": 23.6421965, "t0": 172.58844, "dur_h": 5.018, "prad": "2.9", "n_cluster": 1, "fap": 1.0}, {"koi": "K00638.02", "period": 67.0930642, "t0": 146.57047, "dur_h": 7.334, "prad": "3.51", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5438757", "days": 67.89750636574074, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01601.01", "period": 10.35078415, "t0": 133.71163, "dur_h": 6.253, "prad": "1.97", "n_cluster": 0, "fap": 1.0}, {"koi": "K01601.02", "period": 62.9224936, "t0": 151.6882, "dur_h": 11.64, "prad": "2.75", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5621125", "days": 65.99101157407408, "n_flash": 1, "flashes": [[1160.3888959786054, 5.7243183071422346, 1]], "kois": [{"koi": "K01814.01", "period": 14.80075082, "t0": 132.82179, "dur_h": 5.762, "prad": "17.38", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6037581", "days": 67.60461863425925, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01916.01", "period": 20.67876365, "t0": 151.69245, "dur_h": 4.6395, "prad": "2.42", "n_cluster": 0, "fap": 1.0}, {"koi": "K01916.02", "period": 9.59993246, "t0": 136.58227, "dur_h": 4.3206, "prad": "2.08", "n_cluster": 0, "fap": 1.0}, {"koi": "K01916.03", "period": 2.0248205, "t0": 132.35465, "dur_h": 2.55, "prad": "1.01", "n_cluster": 0, "fap": 1.0}]} +{"kic": "6382217", "days": 71.62671643518519, "n_flash": 1, "flashes": [[1531.7482648307196, 5.276937909881516, 1]], "kois": [{"koi": "K02036.01", "period": 8.41100305, "t0": 133.79856, "dur_h": 2.4553, "prad": "1.8", "n_cluster": 1, "fap": 1.0}, {"koi": "K02036.02", "period": 5.79529495, "t0": 136.77974, "dur_h": 2.272, "prad": "1.05", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6707833", "days": 93.43527314814814, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00563.01", "period": 15.28467725, "t0": 175.62345, "dur_h": 6.0768, "prad": "2.7", "n_cluster": 0, "fap": 1.0}]} +{"kic": "6922710", "days": 81.09175810185185, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02087.01", "period": 23.1274171, "t0": 145.66194, "dur_h": 4.901, "prad": "1.44", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7630229", "days": 81.2899681712963, "n_flash": 2, "flashes": [[1014.4198655003856, 5.011338450422963, 1], [1023.0636547362374, 5.120880010080189, 1]], "kois": [{"koi": "K00683.01", "period": 278.1243979, "t0": 177.51831, "dur_h": 3.978, "prad": "5.86", "n_cluster": 2, "fap": 1.0}]} +{"kic": "8164257", "days": 68.35386631944445, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02073.01", "period": 49.5004725, "t0": 139.04294, "dur_h": 5.772, "prad": "2.49", "n_cluster": 0, "fap": 1.0}, {"koi": "K02073.02", "period": 6.47539108, "t0": 137.5825, "dur_h": 2.7048, "prad": "1.92", "n_cluster": 0, "fap": 1.0}, {"koi": "K02073.03", "period": 16.85825609, "t0": 142.34289, "dur_h": 2.0728, "prad": "2.51", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8361905", "days": 61.54592939814815, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00689.01", "period": 15.87360981, "t0": 182.40408, "dur_h": 3.5246, "prad": "1.53", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8678594", "days": 68.23943576388889, "n_flash": 1, "flashes": [[1160.4677285761572, 5.540272252594694, 1]], "kois": [{"koi": "K01261.01", "period": 133.460999, "t0": 216.04334, "dur_h": 11.4997, "prad": "11.21", "n_cluster": 1, "fap": 1.0}, {"koi": "K01261.02", "period": 15.19423359, "t0": 142.73422, "dur_h": 3.106, "prad": "3.69", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9015738", "days": 69.86734664351852, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01616.01", "period": 13.93291548, "t0": 139.41058, "dur_h": 2.6239, "prad": "1.66", "n_cluster": 0, "fap": 1.0}, {"koi": "K01616.02", "period": 34.775371, "t0": 162.2065, "dur_h": 2.93, "prad": "0.67", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9549648", "days": 80.92351793981481, "n_flash": 1, "flashes": [[1092.817059016219, 5.292375184597355, 1]], "kois": [{"koi": "K01886.01", "period": 5.99185827, "t0": 136.88244, "dur_h": 1.7215, "prad": "2.75", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10538176", "days": 54.50232002314815, "n_flash": 1, "flashes": [[1272.0486217069847, 5.217903532632358, 1]], "kois": [{"koi": "K01301.01", "period": 12.69905011, "t0": 184.9868, "dur_h": 2.9899, "prad": "2.62", "n_cluster": 1, "fap": 1.0}, {"koi": "K01301.02", "period": 37.5142128, "t0": 189.30015, "dur_h": 5.303, "prad": "2.68", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10743597", "days": 25.928056712962963, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00989.03", "period": 16.15811112, "t0": 143.00233, "dur_h": 6.049, "prad": "86.13", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11768142", "days": 25.917158564814816, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02626.01", "period": 38.0970717, "t0": 140.00353, "dur_h": 4.307, "prad": "1.58", "n_cluster": 0, "fap": 1.0}]} +{"kic": "12302530", "days": 66.65647974537038, "n_flash": 1, "flashes": [[1530.382932593886, 5.009745031854664, 1]], "kois": [{"koi": "K00438.01", "period": 5.931196562, "t0": 174.796908, "dur_h": 2.4999, "prad": "2.01", "n_cluster": 1, "fap": 1.0}, {"koi": "K00438.02", "period": 52.6615266, "t0": 183.52054, "dur_h": 3.1592, "prad": "1.87", "n_cluster": 1, "fap": 1.0}]} +{"kic": "3642335", "days": 56.822944444444445, "n_flash": 0, "flashes": [], "kois": [{"koi": "K03010.01", "period": 60.8660974, "t0": 179.28674, "dur_h": 4.397, "prad": "1.39", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4270253", "days": 25.803409143518518, "n_flash": 1, "flashes": [[1565.1553828878168, 5.101768390287108, 1]], "kois": [{"koi": "K00551.01", "period": 11.6370303, "t0": 178.84448, "dur_h": 3.3372, "prad": "2.9", "n_cluster": 1, "fap": 1.0}, {"koi": "K00551.02", "period": 5.68798675, "t0": 133.95607, "dur_h": 2.2682, "prad": "2.76", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6696580", "days": 66.31727488425926, "n_flash": 1, "flashes": [[1536.4904832672764, 5.005879644469043, 1]], "kois": [{"koi": "K02092.01", "period": 57.6896212, "t0": 139.92753, "dur_h": 5.118, "prad": "5.14", "n_cluster": 1, "fap": 1.0}, {"koi": "K02092.02", "period": 25.5638626, "t0": 375.27811, "dur_h": 4.685, "prad": "4", "n_cluster": 1, "fap": 1.0}, {"koi": "K02092.03", "period": 77.086191, "t0": 202.7483, "dur_h": 4.77, "prad": "29.77", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7094486", "days": 25.79251099537037, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01907.01", "period": 11.35010642, "t0": 134.04612, "dur_h": 2.2792, "prad": "1.75", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8277797", "days": 25.60860474537037, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01820.01", "period": 4.33722007, "t0": 132.85152, "dur_h": 2.4973, "prad": "1.63", "n_cluster": 0, "fap": 1.0}, {"koi": "K01820.02", "period": 1.653889476, "t0": 132.18845, "dur_h": 1.7242, "prad": "0.97", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8367644", "days": 25.986634259259258, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01879.01", "period": 22.08551599, "t0": 135.23432, "dur_h": 2.1727, "prad": "3.34", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8733898", "days": 25.808177083333334, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02842.01", "period": 1.565412613, "t0": 132.91281, "dur_h": 0.7572, "prad": "1.73", "n_cluster": 0, "fap": 1.0}, {"koi": "K02842.02", "period": 5.14892346, "t0": 133.31971, "dur_h": 0.9613, "prad": "1.72", "n_cluster": 0, "fap": 1.0}, {"koi": "K02842.03", "period": 3.036208739, "t0": 134.06146, "dur_h": 0.9324, "prad": "1.4", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9605514", "days": 25.765265625, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00945.01", "period": 25.8474958, "t0": 188.874, "dur_h": 5.985, "prad": "2.4", "n_cluster": 0, "fap": 1.0}, {"koi": "K00945.02", "period": 40.715561, "t0": 146.36485, "dur_h": 6.894, "prad": "2.7", "n_cluster": 0, "fap": 1.0}, {"koi": "K00945.03", "period": 66.789347, "t0": 184.4713, "dur_h": 4.08, "prad": "2.07", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9837661", "days": 26.156236689814815, "n_flash": 1, "flashes": [[1578.4330138576188, 5.343902611620289, 1]], "kois": [{"koi": "K02715.01", "period": 11.12827427, "t0": 139.54417, "dur_h": 2.6118, "prad": "4.04", "n_cluster": 1, "fap": 1.0}, {"koi": "K02715.02", "period": 2.226496196, "t0": 133.37195, "dur_h": 1.7073, "prad": "2.1", "n_cluster": 1, "fap": 1.0}, {"koi": "K02715.03", "period": 5.72084599, "t0": 134.66576, "dur_h": 2.744, "prad": "1.78", "n_cluster": 1, "fap": 1.0}]} +{"kic": "10005758", "days": 34.705152777777776, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01783.01", "period": 134.4785189, "t0": 169.28141, "dur_h": 5.9288, "prad": "10.52", "n_cluster": 0, "fap": 1.0}, {"koi": "K01783.02", "period": 284.063137, "t0": 200.83619, "dur_h": 8.297, "prad": "6.36", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10055126", "days": 35.625365162037035, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01608.01", "period": 9.17617167, "t0": 138.71393, "dur_h": 4.2642, "prad": "1.66", "n_cluster": 0, "fap": 1.0}, {"koi": "K01608.02", "period": 19.7383992, "t0": 133.28544, "dur_h": 4.894, "prad": "1.61", "n_cluster": 0, "fap": 1.0}, {"koi": "K01608.03", "period": 232.040326, "t0": 262.2531, "dur_h": 12.235, "prad": "2.05", "n_cluster": 0, "fap": 1.0}]} +{"kic": "1026957", "days": 25.81158275462963, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00958.01", "period": 21.76129812, "t0": 166.540438, "dur_h": 1.243, "prad": "2.53", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10295951", "days": 28.944800347222223, "n_flash": 2, "flashes": [[449.66881508746883, 5.0100787093821175, 1], [458.6543942531207, 5.806805455580119, 1]], "kois": [{"koi": "K01154.01", "period": 6.810823723, "t0": 136.04667, "dur_h": 7.98574, "prad": "26.06", "n_cluster": 2, "fap": 1.0}]} +{"kic": "10337517", "days": 35.72412962962963, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01165.01", "period": 7.053934488, "t0": 136.357253, "dur_h": 1.7244, "prad": "2.36", "n_cluster": 0, "fap": 1.0}, {"koi": "K01165.02", "period": 4.29263699, "t0": 134.80018, "dur_h": 2.7, "prad": "0.68", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10528068", "days": 29.058549768518517, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01162.01", "period": 158.6850022, "t0": 173.94993, "dur_h": 11.5372, "prad": "3.08", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10713616", "days": 27.58729976851852, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01311.01", "period": 83.5781976, "t0": 202.45865, "dur_h": 7.2487, "prad": "6.63", "n_cluster": 0, "fap": 1.0}]} +{"kic": "10854768", "days": 30.413325810185185, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01309.01", "period": 10.1171684, "t0": 137.44489, "dur_h": 4.6677, "prad": "3.07", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11043167", "days": 27.94489525462963, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01444.01", "period": 44.9306706, "t0": 140.2077, "dur_h": 6.539, "prad": "2.49", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11081504", "days": 24.161875578703704, "n_flash": 1, "flashes": [[402.2443206887401, 5.130626746596765, 1]], "kois": [{"koi": "K04287.01", "period": 13.12297275, "t0": 136.08882, "dur_h": 2.234, "prad": "1.29", "n_cluster": 1, "fap": 1.0}, {"koi": "K04287.02", "period": 9.6183111, "t0": 138.3435, "dur_h": 4.215, "prad": "0.85", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11251991", "days": 27.599560185185187, "n_flash": 2, "flashes": [[282.28880197077524, 5.066933573518029, 1], [283.9077739524655, 5.145659425445016, 1]], "kois": [{"koi": "K05881.01", "period": 134.35872, "t0": 201.2636, "dur_h": 13.3, "prad": "1.27", "n_cluster": 2, "fap": 1.0}]} +{"kic": "11566064", "days": 19.492700231481482, "n_flash": 1, "flashes": [[783.8403542794113, 12.986700827165045, 1]], "kois": [{"koi": "K00353.01", "period": 152.1060435, "t0": 176.52741, "dur_h": 7.4517, "prad": "11.58", "n_cluster": 1, "fap": 1.0}, {"koi": "K00353.02", "period": 30.6528935, "t0": 135.04211, "dur_h": 4.99, "prad": "2.86", "n_cluster": 1, "fap": 1.0}, {"koi": "K00353.03", "period": 11.1619384, "t0": 133.5538, "dur_h": 5.195, "prad": "1.97", "n_cluster": 1, "fap": 1.0}]} +{"kic": "11622600", "days": 4.077269675925926, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01876.01", "period": 82.5341188, "t0": 209.12763, "dur_h": 4.8556, "prad": "2.45", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11656246", "days": 35.202380787037036, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01532.01", "period": 18.11473813, "t0": 147.4904, "dur_h": 5.2706, "prad": "2.49", "n_cluster": 0, "fap": 1.0}]} +{"kic": "11764462", "days": 35.60561226851852, "n_flash": 1, "flashes": [[839.6436476961317, 5.125181265754663, 1]], "kois": [{"koi": "K01531.01", "period": 5.69919592, "t0": 136.58738, "dur_h": 2.3906, "prad": "1.16", "n_cluster": 1, "fap": 1.0}]} +{"kic": "12159249", "days": 34.67654513888889, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01536.01", "period": 3.74443645, "t0": 133.55997, "dur_h": 2.9191, "prad": "1.1", "n_cluster": 0, "fap": 1.0}]} +{"kic": "12356617", "days": 19.368052662037037, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00375.01", "period": 988.8811177, "t0": 239.224189, "dur_h": 5.9504, "prad": "10.81", "n_cluster": 0, "fap": 1.0}]} +{"kic": "1718189", "days": 21.886206018518518, "n_flash": 1, "flashes": [[1561.180350773735, 5.323569535633054, 1]], "kois": [{"koi": "K00993.01", "period": 21.85362905, "t0": 144.32031, "dur_h": 3.439, "prad": "1.75", "n_cluster": 1, "fap": 1.0}, {"koi": "K00993.02", "period": 13.0607936, "t0": 137.63148, "dur_h": 3.215, "prad": "1.45", "n_cluster": 1, "fap": 1.0}, {"koi": "K00993.03", "period": 86.723653, "t0": 195.3511, "dur_h": 4.852, "prad": "1.43", "n_cluster": 1, "fap": 1.0}]} +{"kic": "2849805", "days": 35.11383333333333, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01116.01", "period": 3.749105745, "t0": 135.10837, "dur_h": 1.9826, "prad": "1.68", "n_cluster": 0, "fap": 1.0}]} +{"kic": "2853446", "days": 30.495743055555554, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01118.01", "period": 7.37290344, "t0": 137.60991, "dur_h": 2.172, "prad": "2.67", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3442055", "days": 34.74670196759259, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01218.01", "period": 29.6193891, "t0": 133.68205, "dur_h": 4.9595, "prad": "1.74", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3532985", "days": 27.278745949074075, "n_flash": 2, "flashes": [[282.9803436905495, 5.112690987133917, 1], [287.17720019144326, 6.180671558257963, 1]], "kois": [{"koi": "K05987.01", "period": 5.288547653, "t0": 135.807213, "dur_h": 3.2646, "prad": "55.28", "n_cluster": 2, "fap": 1.0}]} +{"kic": "3644071", "days": 26.893905092592593, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01192.01", "period": 1295.362215, "t0": 176.10646, "dur_h": 28.297, "prad": "57.82", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3831053", "days": 16.41261111111111, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00388.01", "period": 6.14955931, "t0": 169.55182, "dur_h": 5.5694, "prad": "3.26", "n_cluster": 0, "fap": 1.0}]} +{"kic": "3937519", "days": 21.828309606481483, "n_flash": 1, "flashes": [[1567.518180840787, 5.219173119810868, 1]], "kois": [{"koi": "K00221.01", "period": 3.413036353, "t0": 132.443054, "dur_h": 2.61366, "prad": "6.62", "n_cluster": 1, "fap": 1.0}, {"koi": "K00221.02", "period": 5.89661966, "t0": 134.03046, "dur_h": 3.154, "prad": "1.28", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4049901", "days": 28.06341261574074, "n_flash": 1, "flashes": [[228.44982491204428, 5.119124997573636, 1]], "kois": [{"koi": "K02295.01", "period": 16.2908527, "t0": 132.11774, "dur_h": 3.176, "prad": "0.52", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4155328", "days": 27.09892650462963, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01335.01", "period": 127.8334997, "t0": 293.41845, "dur_h": 10.914, "prad": "9.46", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4466677", "days": 21.85827951388889, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01338.01", "period": 3.222975318, "t0": 178.0701, "dur_h": 2.9247, "prad": "1.47", "n_cluster": 0, "fap": 1.0}, {"koi": "K01338.02", "period": 42.0370662, "t0": 178.25006, "dur_h": 6.282, "prad": "1.66", "n_cluster": 0, "fap": 1.0}, {"koi": "K01338.03", "period": 21.0112068, "t0": 132.6336, "dur_h": 4.507, "prad": "1.4", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4563268", "days": 16.584256944444444, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00627.02", "period": 4.16536757, "t0": 132.04068, "dur_h": 3.2935, "prad": "1", "n_cluster": 0, "fap": 1.0}, {"koi": "K00627.01", "period": 7.75192755, "t0": 176.17197, "dur_h": 3.5413, "prad": "1.89", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4656049", "days": 19.717474537037038, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00629.01", "period": 40.6992062, "t0": 172.57123, "dur_h": 7.074, "prad": "3.2", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4742414", "days": 16.548837962962963, "n_flash": 1, "flashes": [[738.1381453730428, 5.151397903509118, 1]], "kois": [{"koi": "K00631.01", "period": 15.458056682, "t0": 173.782454, "dur_h": 8.79536, "prad": "9.11", "n_cluster": 1, "fap": 1.0}]} +{"kic": "4841374", "days": 35.021880208333336, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00633.01", "period": 161.4746786, "t0": 170.60338, "dur_h": 10.572, "prad": "3.25", "n_cluster": 0, "fap": 1.0}]} +{"kic": "4939265", "days": 34.34347048611111, "n_flash": 0, "flashes": [], "kois": [{"koi": "K06475.01", "period": 4.84505985, "t0": 134.94868, "dur_h": 2.078, "prad": "1.54", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5020319", "days": 16.68097800925926, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00635.01", "period": 16.71987303, "t0": 171.40143, "dur_h": 3.317, "prad": "2.52", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5121511", "days": 16.443262152777777, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00640.01", "period": 30.99664113, "t0": 191.78502, "dur_h": 2.9182, "prad": "2.43", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5185897", "days": 21.73908101851852, "n_flash": 1, "flashes": [[1569.5271750182874, 5.9007373025475935, 1]], "kois": [{"koi": "K02693.01", "period": 4.081411554, "t0": 133.85992, "dur_h": 2.3239, "prad": "1", "n_cluster": 1, "fap": 1.0}, {"koi": "K02693.02", "period": 11.41941928, "t0": 142.11859, "dur_h": 3.3075, "prad": "0.99", "n_cluster": 1, "fap": 1.0}, {"koi": "K02693.03", "period": 6.83440674, "t0": 136.86023, "dur_h": 2.2726, "prad": "1.01", "n_cluster": 1, "fap": 1.0}]} +{"kic": "5460434", "days": 24.069241319444444, "n_flash": 0, "flashes": [], "kois": [{"koi": "K07729.01", "period": 50.563697, "t0": 145.8658, "dur_h": 5.381, "prad": "1.57", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5531694", "days": 16.66190625, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00647.01", "period": 5.16949729, "t0": 170.31339, "dur_h": 4.5122, "prad": "2.06", "n_cluster": 0, "fap": 1.0}, {"koi": "K00647.02", "period": 8.1134681, "t0": 132.8253, "dur_h": 4.961, "prad": "0.92", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5613330", "days": 16.67893460648148, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00649.01", "period": 23.44970494, "t0": 182.92295, "dur_h": 8.6567, "prad": "2.71", "n_cluster": 0, "fap": 1.0}, {"koi": "K00649.02", "period": 10.2090268, "t0": 140.6805, "dur_h": 6.264, "prad": "0.92", "n_cluster": 0, "fap": 1.0}]} +{"kic": "5786676", "days": 16.562460648148146, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00650.01", "period": 11.95474513, "t0": 178.721694, "dur_h": 2.1433, "prad": "5.15", "n_cluster": 0, "fap": 1.0}]} +{"kic": "6125481", "days": 25.47987037037037, "n_flash": 1, "flashes": [[780.8932961134196, 6.679332715562335, 2]], "kois": [{"koi": "K00659.01", "period": 23.20579353, "t0": 180.7628, "dur_h": 4.3243, "prad": "5.86", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6347299", "days": 25.87492824074074, "n_flash": 1, "flashes": [[771.5164788965121, 5.356377762647886, 1]], "kois": [{"koi": "K00661.01", "period": 14.40090414, "t0": 174.98964, "dur_h": 4.1682, "prad": "2.71", "n_cluster": 1, "fap": 1.0}, {"koi": "K00661.02", "period": 25.6613816, "t0": 155.13806, "dur_h": 4.459, "prad": "1.78", "n_cluster": 1, "fap": 1.0}]} +{"kic": "6365156", "days": 25.476464699074075, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00662.01", "period": 10.21418792, "t0": 170.70466, "dur_h": 5.8201, "prad": "2.29", "n_cluster": 0, "fap": 1.0}]} +{"kic": "6607447", "days": 30.192638310185185, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01242.01", "period": 99.6442783, "t0": 283.236289, "dur_h": 5.1772, "prad": "8.48", "n_cluster": 0, "fap": 1.0}]} +{"kic": "6707835", "days": 25.919883101851852, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00666.01", "period": 22.24814617, "t0": 174.13676, "dur_h": 4.1483, "prad": "2.72", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7033671", "days": 25.304818865740742, "n_flash": 1, "flashes": [[773.3424451948085, 8.398659034574901, 1]], "kois": [{"koi": "K00670.01", "period": 9.48965527, "t0": 171.92604, "dur_h": 3.587, "prad": "2.16", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7106173", "days": 21.520436921296294, "n_flash": 0, "flashes": [], "kois": [{"koi": "K03083.01", "period": 10.18318233, "t0": 133.21404, "dur_h": 3.137, "prad": "0.79", "n_cluster": 0, "fap": 1.0}, {"koi": "K03083.02", "period": 6.2321233, "t0": 135.2369, "dur_h": 2.85, "prad": "0.61", "n_cluster": 0, "fap": 1.0}, {"koi": "K03083.03", "period": 8.2942929, "t0": 134.8478, "dur_h": 3.976, "prad": "0.65", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7175184", "days": 25.38042476851852, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00369.01", "period": 5.88527364, "t0": 174.42554, "dur_h": 1.9531, "prad": "1.59", "n_cluster": 0, "fap": 1.0}, {"koi": "K00369.02", "period": 10.10463142, "t0": 135.55718, "dur_h": 2.369, "prad": "1.59", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7364176", "days": 16.529766203703705, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00373.01", "period": 135.1879934, "t0": 190.93292, "dur_h": 8.8191, "prad": "2.32", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7592529", "days": 24.225902199074074, "n_flash": 0, "flashes": [], "kois": [{"koi": "K06889.01", "period": 75.906736, "t0": 185.6963, "dur_h": 11.64, "prad": "0.63", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7755741", "days": 30.337719907407408, "n_flash": 1, "flashes": [[144.07638985986705, 10.869234513849193, 1]], "kois": [{"koi": "K06913.02", "period": 1.75173647, "t0": 132.2995, "dur_h": 5.122, "prad": "3.86", "n_cluster": 1, "fap": 1.0}]} +{"kic": "7764367", "days": 25.950534143518517, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00685.01", "period": 3.173914037, "t0": 170.92525, "dur_h": 3.6069, "prad": "3.07", "n_cluster": 0, "fap": 1.0}]} +{"kic": "7826659", "days": 31.08901099537037, "n_flash": 0, "flashes": [], "kois": [{"koi": "K02686.01", "period": 211.032819, "t0": 279.12891, "dur_h": 7.119, "prad": "3.43", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8009811", "days": 26.915701388888888, "n_flash": 0, "flashes": [], "kois": [{"koi": "K05459.01", "period": 53.554546, "t0": 160.3983, "dur_h": 5.533, "prad": "3.1", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8223568", "days": 23.839017939814816, "n_flash": 2, "flashes": [[244.92057658021804, 5.096266455216396, 1], [254.93414064726676, 5.380502398487911, 1]], "kois": [{"koi": "K06176.01", "period": 143.09688, "t0": 143.701, "dur_h": 17.74, "prad": "1.48", "n_cluster": 2, "fap": 1.0}, {"koi": "K06176.02", "period": 73.4567573, "t0": 172.3647107, "dur_h": 2.74, "prad": "", "n_cluster": 2, "fap": 1.0}]} +{"kic": "8279146", "days": 23.87988599537037, "n_flash": 0, "flashes": [], "kois": [{"koi": "K05497.01", "period": 93.359737, "t0": 155.8348, "dur_h": 5.397, "prad": "1.05", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8410727", "days": 27.42246527777778, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01148.01", "period": 11.47609015, "t0": 135.39622, "dur_h": 5.046, "prad": "2.07", "n_cluster": 0, "fap": 1.0}, {"koi": "K01148.02", "period": 25.2630467, "t0": 134.18397, "dur_h": 6.22, "prad": "1.71", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8583696", "days": 35.387649305555556, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01275.01", "period": 50.28635977, "t0": 167.63351, "dur_h": 6.3212, "prad": "3.88", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8802165", "days": 25.888550925925927, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00694.01", "period": 17.42115972, "t0": 184.245906, "dur_h": 4.9974, "prad": "3.11", "n_cluster": 0, "fap": 1.0}]} +{"kic": "8868481", "days": 24.674769675925926, "n_flash": 0, "flashes": [], "kois": [{"koi": "K05578.01", "period": 388.048463, "t0": 295.8353, "dur_h": 3.456, "prad": "3", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9072639", "days": 24.588946759259258, "n_flash": 2, "flashes": [[238.44093401155988, 6.184293695477044, 1], [257.26319376372703, 5.578484965926059, 1]], "kois": [{"koi": "K04198.01", "period": 1.182862515, "t0": 131.97137, "dur_h": 2.928, "prad": "1.26", "n_cluster": 2, "fap": 1.0}]} +{"kic": "9173014", "days": 23.406497685185187, "n_flash": 1, "flashes": [[384.58943822734, 5.619510314845978, 1]], "kois": [{"koi": "K05633.01", "period": 151.77884, "t0": 204.5209, "dur_h": 2.615, "prad": "4.35", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9266431", "days": 19.53901736111111, "n_flash": 1, "flashes": [[801.6624042880067, 5.289918558067965, 1]], "kois": [{"koi": "K00704.01", "period": 18.39629744, "t0": 185.13946, "dur_h": 2.7838, "prad": "2.47", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9394953", "days": 29.586428819444443, "n_flash": 0, "flashes": [], "kois": [{"koi": "K05665.01", "period": 100.494129, "t0": 153.8021, "dur_h": 2.679, "prad": "1.33", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9457728", "days": 23.55021701388889, "n_flash": 0, "flashes": [], "kois": [{"koi": "K04637.01", "period": 4.37992345, "t0": 133.99121, "dur_h": 4.949, "prad": "0.81", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9578686", "days": 19.59418923611111, "n_flash": 2, "flashes": [[796.6361408743105, 7.134224123606887, 1], [798.9751580890152, 6.079506063128208, 1]], "kois": [{"koi": "K00709.01", "period": 21.3851584, "t0": 178.78285, "dur_h": 4.0819, "prad": "2.17", "n_cluster": 2, "fap": 1.0}]} +{"kic": "9775385", "days": 26.53699074074074, "n_flash": 1, "flashes": [[170.3314249275063, 5.316222451924974, 1]], "kois": [{"koi": "K04462.01", "period": 45.163025, "t0": 159.8536, "dur_h": 7.03, "prad": "2.35", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9846348", "days": 19.659578125, "n_flash": 1, "flashes": [[783.839381457401, 11.767695050644967, 2]], "kois": [{"koi": "K00716.01", "period": 26.89316101, "t0": 179.95245, "dur_h": 2.3266, "prad": "6.78", "n_cluster": 1, "fap": 1.0}]} +{"kic": "9886661", "days": 35.28139236111111, "n_flash": 0, "flashes": [], "kois": [{"koi": "K01606.01", "period": 5.082748362, "t0": 133.21176, "dur_h": 1.7732, "prad": "1.4", "n_cluster": 0, "fap": 1.0}]} +{"kic": "9965439", "days": 19.52130787037037, "n_flash": 0, "flashes": [], "kois": [{"koi": "K00722.01", "period": 46.40626, "t0": 192.99633, "dur_h": 7.0281, "prad": "2.66", "n_cluster": 0, "fap": 1.0}]} diff --git a/papers/photometric/data/phase_curves_1.jsonl b/papers/photometric/data/phase_curves_1.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a5656a89f655d088319e91f25d4479a73f3b234c --- /dev/null +++ b/papers/photometric/data/phase_curves_1.jsonl @@ -0,0 +1,65 @@ +{"tic": 410153553, "tmag": 11.9238, "sectors": [1, 27, 28, 67, 68], "days": 107.92222222222223, "tois": [{"toi": "136.01", "period": 0.4629303673466454, "radius": 1.3560230560637, "teq": 723.3722133357637, "n_eclipse": 3807, "n_oot": 68595, "night_ppm": 11.686681079647876, "e_night_ppm": 66.36508957492745, "depth_ppm": 32.83916782859109, "e_depth_ppm": 65.22428345772441, "amp_ppm": 14.763101336414312, "scatter_ppm": 3244.8766974347814}]} +{"tic": 55650590, "tmag": 12.4312, "sectors": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 61, 62, 63, 65], "days": 627.4916666666667, "tois": [{"toi": "206.01", "period": 0.736313219931196, "radius": 1.53326821385743, "teq": 840.170655424035, "n_eclipse": 17247, "n_oot": 408094, "night_ppm": 34.27237547615203, "e_night_ppm": 37.040059150172, "depth_ppm": 58.512078099703935, "e_depth_ppm": 36.613206189335905, "amp_ppm": 12.136110110355482, "scatter_ppm": 4117.10410624091}]} +{"tic": 32090583, "tmag": 13.3292, "sectors": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 61, 62, 63, 64, 66, 67, 68, 69], "days": 689.8722222222223, "tois": [{"toi": "218.01", "period": 0.43848143401066025, "radius": 0.6505971759639849, "teq": 900.949155578608, "n_eclipse": 24630, "n_oot": 437653, "night_ppm": -7.057004007382517, "e_night_ppm": 109.72734080802364, "depth_ppm": 4.227582621751935, "e_depth_ppm": 107.87754127497153, "amp_ppm": 26.876729737300636, "scatter_ppm": 9551.116828699376}]} +{"tic": 31374837, "tmag": 8.1705, "sectors": [5, 6, 32], "days": 68.26944444444445, "tois": [{"toi": "431.02", "period": 0.490058941306193, "radius": 1.47415294335489, "teq": 1730.71926889427, "n_eclipse": 4255, "n_oot": 39727, "night_ppm": 2.020989845585852, "e_night_ppm": 14.596978496186757, "depth_ppm": 9.116318202773144, "e_depth_ppm": 14.114826482581542, "amp_ppm": 5.368771329844665, "scatter_ppm": 437.99240345761024}]} +{"tic": 134200185, "tmag": 9.4022, "sectors": [6, 7, 8, 33, 34, 35, 61], "days": 149.14166666666668, "tois": [{"toi": "500.01", "period": 0.548157295169223, "radius": 1.35917742978813, "teq": 1577.39118254255, "n_eclipse": 7655, "n_oot": 89851, "night_ppm": -21.545515757059874, "e_night_ppm": 11.783785302846828, "depth_ppm": -4.180015745314236, "e_depth_ppm": 11.502893062303782, "amp_ppm": 8.983887656214025, "scatter_ppm": 756.0320691122191}]} +{"tic": 148479278, "tmag": 9.3777, "sectors": [6, 7, 33, 34, 61, 87], "days": 135.28611111111113, "tois": [{"toi": "520.01", "period": 0.5236130194615874, "radius": 1.486164458167921, "teq": 3256.1988827292544, "n_eclipse": 17924, "n_oot": 59842, "night_ppm": -87.4372224825004, "e_night_ppm": 15.83667393279813, "depth_ppm": -26.86515982552873, "e_depth_ppm": 14.590060844369901, "amp_ppm": 31.27941361472021, "scatter_ppm": 736.3873904253594}]} +{"tic": 238004786, "tmag": 10.5958, "sectors": [2, 6, 8, 9, 12, 29, 32, 33, 34, 35, 39, 61, 62], "days": 285.73333333333335, "tois": [{"toi": "539.01", "period": 0.309606164048421, "radius": 1.55269650295888, "teq": 2138.47372129614, "n_eclipse": 28473, "n_oot": 144565, "night_ppm": -6.520778631058377, "e_night_ppm": 18.19538434012725, "depth_ppm": -1.6004128993163391, "e_depth_ppm": 17.154989528321526, "amp_ppm": 4.870316331609181, "scatter_ppm": 1432.0895954070088}]} +{"tic": 377064495, "tmag": 9.5273, "sectors": [8, 35, 45, 46, 72], "days": 103.38472222222222, "tois": [{"toi": "561.02", "period": 0.4465713, "radius": 1.48867, "teq": 2262.0, "n_eclipse": 7359, "n_oot": 58086, "night_ppm": -5.666066580700679, "e_night_ppm": 17.09389237047993, "depth_ppm": 14.487168195520539, "e_depth_ppm": 16.487660876900048, "amp_ppm": 12.084402453956868, "scatter_ppm": 829.6385272699263}]} +{"tic": 77156829, "tmag": 10.4276, "sectors": [4, 5, 31, 32], "days": 91.5875, "tois": [{"toi": "696.01", "period": 0.860240578952471, "radius": 0.971879488175763, "teq": 830.440581380087, "n_eclipse": 1650, "n_oot": 61334, "night_ppm": 9.375076875706156, "e_night_ppm": 36.794857753407065, "depth_ppm": 8.989839132222954, "e_depth_ppm": 36.49706931663053, "amp_ppm": 6.855879916790183, "scatter_ppm": 1295.5656799254818}]} +{"tic": 149788158, "tmag": 11.0002, "sectors": [8, 34, 61], "days": 62.91388888888889, "tois": [{"toi": "727.02", "period": 0.749971114993437, "radius": 1.07971471610617, "teq": 1005.07053323142, "n_eclipse": 2676, "n_oot": 39091, "night_ppm": -70.7358830388527, "e_night_ppm": 50.11162752424371, "depth_ppm": -15.481290148500193, "e_depth_ppm": 49.08354218918796, "amp_ppm": 40.94962399401368, "scatter_ppm": 1889.3356240168769}]} +{"tic": 36724087, "tmag": 10.5848, "sectors": [9, 35, 62], "days": 62.954166666666666, "tois": [{"toi": "732.01", "period": 0.768390381110759, "radius": 1.14064469559338, "teq": 830.890481743322, "n_eclipse": 2452, "n_oot": 39480, "night_ppm": -186.89647812863973, "e_night_ppm": 68.5081115904057, "depth_ppm": -116.99851557978036, "e_depth_ppm": 67.38637722602364, "amp_ppm": 35.00897298599483, "scatter_ppm": 2190.760519314596}]} +{"tic": 181804752, "tmag": 13.5571, "sectors": [9, 36, 63], "days": 66.46388888888889, "tois": [{"toi": "736.02", "period": 0.947994543578216, "radius": 1.19263920929957, "teq": 542.829237002035, "n_eclipse": 1182, "n_oot": 44480, "night_ppm": -273.3303496581518, "e_night_ppm": 355.96859249853804, "depth_ppm": -160.94100522034972, "e_depth_ppm": 353.8334389912408, "amp_ppm": 220.64768244539445, "scatter_ppm": 9393.492652421866}]} +{"tic": 177258735, "tmag": 7.5412, "sectors": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 61, 62, 63, 64, 66, 67, 68, 87, 88, 89, 90, 93, 94, 95, 96], "days": 862.7236111111112, "tois": [{"toi": "801.01", "period": 0.7757009693013109, "radius": 0.9322076909203177, "teq": 2659.2231949598754, "n_eclipse": 40384, "n_oot": 528517, "night_ppm": 0.456024753736628, "e_night_ppm": 2.544600856607811, "depth_ppm": -3.371055719236793, "e_depth_ppm": 2.4843043067967168, "amp_ppm": 2.4284334773542464, "scatter_ppm": 338.64883475802515}]} +{"tic": 238898571, "tmag": 9.954701, "sectors": [5, 6, 7, 32, 33, 34, 61, 68], "days": 179.09722222222223, "tois": [{"toi": "863.01", "period": 0.525125102653592, "radius": 1.43813911511335, "teq": 2038.14393771018, "n_eclipse": 10631, "n_oot": 105062, "night_ppm": 14.369397689728558, "e_night_ppm": 16.96079280934299, "depth_ppm": 5.181033745360608, "e_depth_ppm": 16.443563476825428, "amp_ppm": 5.215824169274107, "scatter_ppm": 1024.6047366677312}]} +{"tic": 231728511, "tmag": 11.4966, "sectors": [4, 5, 6, 27, 31, 32, 33, 37, 64, 67], "days": 211.99027777777778, "tois": [{"toi": "864.01", "period": 0.52067099987634, "radius": 1.00474380108532, "teq": 1005.83089383074, "n_eclipse": 6946, "n_oot": 135621, "night_ppm": -48.29302351028186, "e_night_ppm": 36.17290111381926, "depth_ppm": -35.26202369075193, "e_depth_ppm": 35.68245194242827, "amp_ppm": 23.275559769132986, "scatter_ppm": 2461.112541739729}]} +{"tic": 351601843, "tmag": 11.1186, "sectors": [13, 27, 67], "days": 58.395833333333336, "tois": [{"toi": "1075.01", "period": 0.604739240679989, "radius": 1.86255872685732, "teq": 1222.59730953138, "n_eclipse": 2982, "n_oot": 35166, "night_ppm": 52.343366152562965, "e_night_ppm": 48.116189337201874, "depth_ppm": 20.900448435945407, "e_depth_ppm": 46.99423153943022, "amp_ppm": 29.326067031653757, "scatter_ppm": 1999.9759982646412}]} +{"tic": 370133522, "tmag": 10.1165, "sectors": [13, 27, 67], "days": 65.44444444444444, "tois": [{"toi": "1078.01", "period": 0.518242460936129, "radius": 1.34851205589838, "teq": 1019.32959786217, "n_eclipse": 3268, "n_oot": 39673, "night_ppm": 10.524733343619808, "e_night_ppm": 27.918908405845684, "depth_ppm": 20.11181603800427, "e_depth_ppm": 27.23486664861675, "amp_ppm": 12.608508978343151, "scatter_ppm": 1197.0459658906727}]} +{"tic": 153951307, "tmag": 11.2582, "sectors": [14, 15, 21, 22, 41, 49, 74, 76], "days": 171.84027777777777, "tois": [{"toi": "1238.02", "period": 0.7645806584932745, "radius": 1.2407225796577788, "teq": 1140.0845694137004, "n_eclipse": 7184, "n_oot": 106806, "night_ppm": -36.885606725545195, "e_night_ppm": 35.78399505136621, "depth_ppm": 33.483375249776515, "e_depth_ppm": 35.117744868767794, "amp_ppm": 35.21546870923692, "scatter_ppm": 2128.6655690820035}]} +{"tic": 229747848, "tmag": 10.7157, "sectors": [14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 40, 41, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "days": 602.2375000000001, "tois": [{"toi": "1347.01", "period": 0.847421801745099, "radius": 1.75365438158192, "teq": 1678.55498136637, "n_eclipse": 18742, "n_oot": 387690, "night_ppm": 15.495563275624846, "e_night_ppm": 20.65142870314358, "depth_ppm": 29.681960711069877, "e_depth_ppm": 20.355609490332224, "amp_ppm": 14.789243167425655, "scatter_ppm": 1577.99976755241}]} +{"tic": 153976959, "tmag": 9.9802, "sectors": [14, 15, 41, 48, 49, 75, 76], "days": 151.56944444444446, "tois": [{"toi": "1435.01", "period": 0.685817831603683, "radius": 0.9996713676402442, "teq": 1707.7366899284823, "n_eclipse": 9198, "n_oot": 88499, "night_ppm": -13.321340370131551, "e_night_ppm": 15.977756752916116, "depth_ppm": -6.105543659318258, "e_depth_ppm": 15.487010279714678, "amp_ppm": 3.7187433496537827, "scatter_ppm": 1056.3999483202258}]} +{"tic": 154383539, "tmag": 11.0906, "sectors": [15, 16, 22, 23, 49, 50], "days": 121.03055555555557, "tois": [{"toi": "1436.01", "period": 0.867588348400582, "radius": 1.43024233396102, "teq": 1474.8095115343, "n_eclipse": 5756, "n_oot": 73851, "night_ppm": -25.16522680329203, "e_night_ppm": 32.8762791893723, "depth_ppm": 5.283894763064012, "e_depth_ppm": 32.09665379879272, "amp_ppm": 17.3520326446167, "scatter_ppm": 1842.930799094064}]} +{"tic": 235683377, "tmag": 12.4934, "sectors": [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 40, 41, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86], "days": 869.1402777777778, "tois": [{"toi": "1442.01", "period": 0.4090674830756468, "radius": 1.1438468728088567, "teq": 967.4427062048995, "n_eclipse": 38193, "n_oot": 537048, "night_ppm": -34.98429277570825, "e_night_ppm": 31.01471945254482, "depth_ppm": -26.16039746650145, "e_depth_ppm": 30.34849363706448, "amp_ppm": 4.419131734728399, "scatter_ppm": 4538.4134434573225}]} +{"tic": 258514800, "tmag": 10.1522, "sectors": [15, 16, 17, 18, 19, 22, 24, 25, 26, 49, 52, 56, 57, 58, 59, 60, 73, 76, 77, 78], "days": 406.65972222222223, "tois": [{"toi": "1444.01", "period": 0.4702718938030589, "radius": 1.4344026468024238, "teq": 2147.7419001688786, "n_eclipse": 34413, "n_oot": 218147, "night_ppm": 1.3800008640263428, "e_night_ppm": 11.082579319633583, "depth_ppm": 18.2618027479986, "e_depth_ppm": 10.55115155927753, "amp_ppm": 8.666538946815338, "scatter_ppm": 1147.9279899791577}]} +{"tic": 201186294, "tmag": 11.0136, "sectors": [18], "days": 19.709722222222222, "tois": [{"toi": "1634.01", "period": 0.989330011005163, "radius": 1.83038541096635, "teq": 848.009857892309, "n_eclipse": 616, "n_oot": 12677, "night_ppm": -138.24402670270518, "e_night_ppm": 113.15121234486054, "depth_ppm": -139.04950865717413, "e_depth_ppm": 111.55692640987188, "amp_ppm": 34.87054539351911, "scatter_ppm": 2049.85359379413}]} +{"tic": 28900646, "tmag": 11.1117, "sectors": [19, 59, 86], "days": 60.984722222222224, "tois": [{"toi": "1685.01", "period": 0.6691445196560234, "radius": 1.4774735213459134, "teq": 964.7050445815437, "n_eclipse": 2718, "n_oot": 37576, "night_ppm": -46.441277113506985, "e_night_ppm": 53.14838062267134, "depth_ppm": 71.28477580686798, "e_depth_ppm": 52.024529786892785, "amp_ppm": 58.89320985585238, "scatter_ppm": 2091.6868585111647}]} +{"tic": 287139872, "tmag": 12.7463, "sectors": [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 40, 41, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60], "days": 613.3361111111111, "tois": [{"toi": "1752.01", "period": 0.935189077550389, "radius": 1.80329352986338, "teq": 952.065635028463, "n_eclipse": 15080, "n_oot": 402579, "night_ppm": -46.45233904487789, "e_night_ppm": 52.221762760289984, "depth_ppm": -87.65826515921837, "e_depth_ppm": 51.68291943692795, "amp_ppm": 33.395815707657874, "scatter_ppm": 5340.4511764156505}]} +{"tic": 198153540, "tmag": 10.5191, "sectors": [16, 22, 23, 49, 50, 76, 77], "days": 124.33333333333334, "tois": [{"toi": "1798.02", "period": 0.4378083364617078, "radius": 1.3740019833030837, "teq": 1943.165730564101, "n_eclipse": 9677, "n_oot": 68301, "night_ppm": -21.34722865476668, "e_night_ppm": 22.974208210304614, "depth_ppm": 23.163663859793182, "e_depth_ppm": 22.033946813735657, "amp_ppm": 23.378132509266596, "scatter_ppm": 1332.3558454730335}]} +{"tic": 166648874, "tmag": 12.6196, "sectors": [22, 48], "days": 42.795833333333334, "tois": [{"toi": "1806.03", "period": 0.501903071830712, "radius": 1.84518623815888, "teq": 961.1999156055, "n_eclipse": 2382, "n_oot": 25366, "night_ppm": -461.30147834377857, "e_night_ppm": 151.04966377233848, "depth_ppm": -242.6467000188337, "e_depth_ppm": 147.09240959920274, "amp_ppm": 116.59271265886322, "scatter_ppm": 5229.1562295509375}]} +{"tic": 180695581, "tmag": 9.0363, "sectors": [22, 23, 49], "days": 57.09583333333334, "tois": [{"toi": "1807.01", "period": 0.54937, "radius": 1.53904, "teq": 1706.0, "n_eclipse": 2728, "n_oot": 34807, "night_ppm": -0.07878531338434414, "e_night_ppm": 70.71561726613983, "depth_ppm": -12.116636027403871, "e_depth_ppm": 69.18122607256394, "amp_ppm": 17.81992250591024, "scatter_ppm": 1057.1820963192772}]} +{"tic": 232568235, "tmag": 9.75874, "sectors": [23, 24, 25, 50, 52, 77], "days": 118.15277777777779, "tois": [{"toi": "2260.01", "period": 0.3524597, "radius": 1.76224, "teq": 1825.0, "n_eclipse": 5852, "n_oot": 71743, "night_ppm": -5.633088335121883, "e_night_ppm": 47.0483578742997, "depth_ppm": 5.1917686076929925, "e_depth_ppm": 45.87388947190776, "amp_ppm": 5.707862264835118, "scatter_ppm": 1556.2516570031505}]} +{"tic": 321688498, "tmag": 11.1079, "sectors": [17, 18, 24, 25, 57, 58], "days": 138.71666666666667, "tois": [{"toi": "2290.01", "period": 0.386219721665312, "radius": 1.19887820951043, "teq": 1386.59859372226, "n_eclipse": 9920, "n_oot": 78194, "night_ppm": 15.033140350562135, "e_night_ppm": 55.99624779942229, "depth_ppm": 23.69355338927015, "e_depth_ppm": 53.75612819297449, "amp_ppm": 14.731960458925963, "scatter_ppm": 2845.1327603989603}]} +{"tic": 10837041, "tmag": 10.4238, "sectors": [30, 97], "days": 63.231944444444444, "tois": [{"toi": "2411.01", "period": 0.7827074550330908, "radius": 1.7489088050751456, "teq": 1586.2917522913422, "n_eclipse": 2492, "n_oot": 39610, "night_ppm": -10.720587483858957, "e_night_ppm": 37.97117345220001, "depth_ppm": -30.0981544327783, "e_depth_ppm": 37.31546114596559, "amp_ppm": 13.796536947784528, "scatter_ppm": 1319.3468235868716}]} +{"tic": 439867639, "tmag": 13.1292, "sectors": [4, 31], "days": 42.97777777777778, "tois": [{"toi": "2445.01", "period": 0.371133443173804, "radius": 1.40621466263836, "teq": 964.464766372473, "n_eclipse": 1723, "n_oot": 26865, "night_ppm": -171.3323621410634, "e_night_ppm": 205.95079243638418, "depth_ppm": -279.9181441097698, "e_depth_ppm": 202.05061074205793, "amp_ppm": 176.84293033017505, "scatter_ppm": 6768.943853725573}]} +{"tic": 234832821, "sectors": [], "tois": []} +{"tic": 34729329, "sectors": [], "tois": []} +{"tic": 122617317, "tmag": 10.7236, "sectors": [3, 4, 30, 31], "days": 82.75694444444444, "tois": [{"toi": "4311.02", "period": 0.990289193656433, "radius": 1.41565286303946, "teq": 1540.13099973546, "n_eclipse": 3426, "n_oot": 51515, "night_ppm": -62.853100806448126, "e_night_ppm": 31.445418408419084, "depth_ppm": -47.339223127051966, "e_depth_ppm": 30.837117961514387, "amp_ppm": 8.579910689410777, "scatter_ppm": 1468.1506144346758}]} +{"tic": 178170828, "tmag": 11.0876, "sectors": [30, 31], "days": 44.99861111111111, "tois": [{"toi": "4401.01", "period": 0.45026401558072, "radius": 1.70327986096932, "teq": 2118.71790702615, "n_eclipse": 3538, "n_oot": 24656, "night_ppm": -78.10230655291849, "e_night_ppm": 49.70341247125152, "depth_ppm": 18.025890992756644, "e_depth_ppm": 47.579720649380164, "amp_ppm": 53.08390839738806, "scatter_ppm": 1868.934712609845}]} +{"tic": 239332587, "tmag": 8.72762, "sectors": [41, 55, 56, 75, 76, 82], "days": 157.5625, "tois": [{"toi": "4481.01", "period": 0.9263237, "radius": 1.67823, "teq": 1162.0, "n_eclipse": 4176, "n_oot": 102836, "night_ppm": -13.160913655219098, "e_night_ppm": 13.839852528010775, "depth_ppm": 1.5260143357842537, "e_depth_ppm": 13.685173340860157, "amp_ppm": 9.8733165775392, "scatter_ppm": 604.3706683089971}]} +{"tic": 333657795, "tmag": 8.1359, "sectors": [42, 43, 70], "days": 61.56527777777778, "tois": [{"toi": "4524.01", "period": 0.9260632, "radius": 1.67736, "teq": 1576.0, "n_eclipse": 2042, "n_oot": 39312, "night_ppm": 26.233205986381236, "e_night_ppm": 13.435116020337295, "depth_ppm": 30.128230390724653, "e_depth_ppm": 13.244636586898581, "amp_ppm": 2.0142396625567076, "scatter_ppm": 447.41455164738574}]} +{"tic": 380887434, "tmag": 9.16764, "sectors": [42, 43], "days": 37.668055555555554, "tois": [{"toi": "4527.01", "period": 0.399444495232738, "radius": 0.908661736316413, "teq": 1247.02501864391, "n_eclipse": 2235, "n_oot": 22060, "night_ppm": 18.528434306608332, "e_night_ppm": 25.509957066931868, "depth_ppm": 6.899902705859162, "e_depth_ppm": 24.764415553654207, "amp_ppm": 10.64322612871821, "scatter_ppm": 796.1313306889635}]} +{"tic": 248250955, "tmag": 11.9251, "sectors": [39], "days": 25.381944444444446, "tois": [{"toi": "4552.01", "period": 0.301150580637201, "radius": 1.28011238337802, "teq": 1027.59641804422, "n_eclipse": 1610, "n_oot": 14665, "night_ppm": -77.07280245561333, "e_night_ppm": 164.36994979949728, "depth_ppm": -14.457717979921014, "e_depth_ppm": 159.27744620020633, "amp_ppm": 49.331724927270635, "scatter_ppm": 4484.1043705666325}]} +{"tic": 307849973, "tmag": 11.9212, "sectors": [9, 11, 35, 36, 37, 38, 62, 63, 64, 65, 69], "days": 243.30972222222223, "tois": [{"toi": "4567.01", "period": 0.84094286383014, "radius": 1.67320842055334, "teq": 1088.33033428015, "n_eclipse": 10253, "n_oot": 151298, "night_ppm": 114.82131843121302, "e_night_ppm": 39.912764235786895, "depth_ppm": 85.52211674217602, "e_depth_ppm": 39.08743227029742, "amp_ppm": 18.216704818172847, "scatter_ppm": 3114.8119727039903}]} +{"tic": 219742885, "tmag": 8.5954, "sectors": [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 40, 41, 47, 48, 50, 51, 52, 53, 54, 55], "days": 516.3000000000001, "tois": [{"toi": "4580.01", "period": 0.916799170796793, "radius": 0.611587058155063, "teq": 1792.04506555304, "n_eclipse": 22936, "n_oot": 318308, "night_ppm": -1.2041839170251478, "e_night_ppm": 5.000102704068358, "depth_ppm": 6.0283115455028735, "e_depth_ppm": 4.89871029608503, "amp_ppm": 3.733198762556509, "scatter_ppm": 534.6845957943821}]} +{"tic": 387423096, "tmag": 11.0505, "sectors": [42, 43, 44], "days": 61.55416666666667, "tois": [{"toi": "4644.01", "period": 0.3181853, "radius": 1.78228, "teq": 1776.0, "n_eclipse": 4422, "n_oot": 34537, "night_ppm": -50.394082488747216, "e_night_ppm": 41.38954970457494, "depth_ppm": -15.648631364273413, "e_depth_ppm": 39.83867061166726, "amp_ppm": 17.384780554656245, "scatter_ppm": 1779.744322137252}]} +{"tic": 244170332, "tmag": 11.3978, "sectors": [3, 30, 42], "days": 55.37638888888889, "tois": [{"toi": "5530.01", "period": 0.477438201731769, "radius": 1.11803100592468, "teq": 1266.92701936189, "n_eclipse": 3295, "n_oot": 32420, "night_ppm": -16.95984838234743, "e_night_ppm": 60.471311752790434, "depth_ppm": -113.9090228057249, "e_depth_ppm": 58.70939072341444, "amp_ppm": 49.54803812324444, "scatter_ppm": 2380.6391283829994}]} +{"tic": 55315929, "tmag": 8.89098, "sectors": [45, 46], "days": 45.65555555555556, "tois": [{"toi": "5556.01", "period": 0.719571209844274, "radius": 1.61084174422069, "teq": 2301.93999511406, "n_eclipse": 3309, "n_oot": 25469, "night_ppm": 5.604747735477034, "e_night_ppm": 18.644911547082156, "depth_ppm": 10.960268893134284, "e_depth_ppm": 18.02475379220346, "amp_ppm": 5.521542403788473, "scatter_ppm": 675.64741173846}]} +{"tic": 310380289, "tmag": 11.982, "sectors": [16, 49, 50, 76, 77], "days": 81.07222222222222, "tois": [{"toi": "5736.01", "period": 0.6489868032686127, "radius": 1.6921774481448562, "teq": 1202.092066714087, "n_eclipse": 4250, "n_oot": 48704, "night_ppm": 133.1885930495602, "e_night_ppm": 66.56276113943709, "depth_ppm": 59.421181382468546, "e_depth_ppm": 64.85414569551497, "amp_ppm": 40.44697720715407, "scatter_ppm": 3124.0855937038446}]} +{"tic": 198162530, "tmag": 12.1898, "sectors": [14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 47, 48, 49, 50, 51, 52, 54, 55, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86], "days": 625.9833333333333, "tois": [{"toi": "5738.01", "period": 0.7682030082489881, "radius": 1.304055617462239, "teq": 1063.3130158666042, "n_eclipse": 28425, "n_oot": 385180, "night_ppm": 17.593289306727655, "e_night_ppm": 30.891639087220724, "depth_ppm": 0.8829677886623699, "e_depth_ppm": 30.185967129640904, "amp_ppm": 10.554995324855767, "scatter_ppm": 3723.4551932651566}]} +{"tic": 4918918, "tmag": 10.7818, "sectors": [21, 48], "days": 45.44861111111111, "tois": [{"toi": "5747.01", "period": 0.57347655188524, "radius": 1.49695306428875, "teq": 988.250735719129, "n_eclipse": 2133, "n_oot": 27791, "night_ppm": 31.504367550061474, "e_night_ppm": 100.3278343882296, "depth_ppm": 0.012187805653596229, "e_depth_ppm": 97.9997749788263, "amp_ppm": 21.7015373529483, "scatter_ppm": 1888.1267414580218}]} +{"tic": 434116397, "tmag": 10.3224, "sectors": [56], "days": 25.70416666666667, "tois": [{"toi": "5955.01", "period": 0.590238672714306, "radius": 1.68029012004386, "teq": 1216.16850928088, "n_eclipse": 1385, "n_oot": 15429, "night_ppm": 20.21931178286529, "e_night_ppm": 48.06595290008831, "depth_ppm": 5.8665429187865215, "e_depth_ppm": 46.631675664583746, "amp_ppm": 8.931135090214305, "scatter_ppm": 1303.7545384402606}]} +{"tic": 266023807, "tmag": 9.64057, "sectors": [15, 41, 55], "days": 68.90833333333333, "tois": [{"toi": "5978.01", "period": 0.739481789312516, "radius": 1.30977476336697, "teq": 1941.92634605663, "n_eclipse": 3537, "n_oot": 41679, "night_ppm": -36.69962165830931, "e_night_ppm": 19.67210252750588, "depth_ppm": -37.830148120088225, "e_depth_ppm": 19.10552063526335, "amp_ppm": 4.992350055277069, "scatter_ppm": 884.8400298966917}]} +{"tic": 259233660, "tmag": 13.1638, "sectors": [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 40, 47, 48, 49, 51, 52, 53, 54, 55], "days": 462.72361111111115, "tois": [{"toi": "6000.01", "period": 0.448958911953033, "radius": 1.01526302392795, "teq": 1022.91390701111, "n_eclipse": 23704, "n_oot": 279118, "night_ppm": -40.94986679636925, "e_night_ppm": 64.39271208105279, "depth_ppm": 25.854679184922347, "e_depth_ppm": 62.73356989903658, "amp_ppm": 40.693835614541754, "scatter_ppm": 7414.333829146557}]} +{"tic": 286201103, "tmag": 12.2936, "sectors": [15, 16, 41, 55, 56], "days": 120.23194444444445, "tois": [{"toi": "6008.01", "period": 0.857372697894355, "radius": 1.24654783562971, "teq": 649.327222700256, "n_eclipse": 2321, "n_oot": 80139, "night_ppm": -13.963468742606011, "e_night_ppm": 122.22931046942294, "depth_ppm": -28.09542425952216, "e_depth_ppm": 121.29776147012758, "amp_ppm": 20.864686740708752, "scatter_ppm": 5132.2667116290995}]} +{"tic": 261135533, "tmag": 10.4458, "sectors": [16, 56], "days": 45.97361111111111, "tois": [{"toi": "6255.01", "period": 0.238182333577565, "radius": 0.961738557272788, "teq": 1256.4567155639, "n_eclipse": 2762, "n_oot": 26912, "night_ppm": -15.660961341756874, "e_night_ppm": 40.05952641460117, "depth_ppm": 32.59340204508909, "e_depth_ppm": 38.85064646372519, "amp_ppm": 24.681944527542267, "scatter_ppm": 1433.3482034651397}]} +{"tic": 435878153, "tmag": 12.0398, "sectors": [17, 57], "days": 42.736111111111114, "tois": [{"toi": "6258.01", "period": 0.557086891906361, "radius": 1.21514782321363, "teq": 946.40671080547, "n_eclipse": 2295, "n_oot": 25575, "night_ppm": 20.010162134598275, "e_night_ppm": 200.03268058423185, "depth_ppm": 86.43248823125838, "e_depth_ppm": 194.4133808502251, "amp_ppm": 144.1835827661987, "scatter_ppm": 4835.221778541783}]} +{"tic": 372207328, "tmag": 10.97, "sectors": [16, 17, 18, 24, 58], "days": 108.38611111111112, "tois": [{"toi": "6324.01", "period": 0.2792211, "radius": 1.05678, "teq": 1143.0, "n_eclipse": 4768, "n_oot": 66950, "night_ppm": -21.27212455815819, "e_night_ppm": 34.30754504678696, "depth_ppm": 19.55680927245851, "e_depth_ppm": 33.549660260682344, "amp_ppm": 22.70779650495333, "scatter_ppm": 1810.372683238307}]} +{"tic": 418343229, "tmag": 10.8861, "sectors": [19, 20, 26, 40, 52, 53, 59, 60], "days": 185.73611111111111, "tois": [{"toi": "6662.01", "period": 0.293949334013454, "radius": 0.937285212520233, "teq": 1113.59414402699, "n_eclipse": 10292, "n_oot": 110481, "night_ppm": 23.660603515662793, "e_night_ppm": 26.00390198526366, "depth_ppm": -3.907360721977504, "e_depth_ppm": 25.275485905750774, "amp_ppm": 13.99281674462488, "scatter_ppm": 1901.910489219174}]} +{"tic": 34986694, "tmag": 13.9087, "sectors": [36, 45, 62], "days": 66.03611111111111, "tois": [{"toi": "6717.01", "period": 0.470747585270121, "radius": 1.85290696497255, "teq": 816.546115743047, "n_eclipse": 2131, "n_oot": 42352, "night_ppm": -260.6686284102322, "e_night_ppm": 423.583999428729, "depth_ppm": 140.70517625375257, "e_depth_ppm": 417.1131609182322, "amp_ppm": 275.94363887237034, "scatter_ppm": 15928.297242403269}]} +{"tic": 301235044, "tmag": 10.0298, "sectors": [42, 70], "days": 35.05277777777778, "tois": [{"toi": "6835.01", "period": 0.2803246, "radius": 1.64829, "teq": 2211.0, "n_eclipse": 3225, "n_oot": 18252, "night_ppm": -27.61937286632765, "e_night_ppm": 67.69124862992079, "depth_ppm": 44.46842531558026, "e_depth_ppm": 64.31955241083479, "amp_ppm": 69.23530578935424, "scatter_ppm": 1173.7239302004334}]} +{"tic": 262584907, "tmag": 7.13, "sectors": [42, 70], "days": 33.1, "tois": [{"toi": "6837.01", "period": 0.9494413, "radius": 1.37109, "teq": null, "n_eclipse": 1419, "n_oot": 20528, "night_ppm": -7.51696890166631, "e_night_ppm": 13.594940902193477, "depth_ppm": -7.880135890814266, "e_depth_ppm": 13.335106626369418, "amp_ppm": 6.597194635943173, "scatter_ppm": 313.84289942124826}]} +{"tic": 29953537, "tmag": 10.2097, "sectors": [8, 9, 62], "days": 63.487500000000004, "tois": [{"toi": "7033.01", "period": 0.7312783, "radius": 1.7324, "teq": 1936.0, "n_eclipse": 3375, "n_oot": 37998, "night_ppm": 76.04377234171622, "e_night_ppm": 29.136256728176186, "depth_ppm": 17.684308232679413, "e_depth_ppm": 28.38907965537961, "amp_ppm": 32.81207408528751, "scatter_ppm": 1166.6681041763236}]} +{"tic": 271017537, "tmag": 8.715, "sectors": [84, 85], "days": 47.84444444444445, "tois": [{"toi": "7336.01", "period": 0.5418555, "radius": 0.923696, "teq": 1585.0, "n_eclipse": 2065, "n_oot": 29634, "night_ppm": 3.0875924730278115, "e_night_ppm": 15.068457564779168, "depth_ppm": 4.754913337512434, "e_depth_ppm": 14.780242784122418, "amp_ppm": 15.178334249458123, "scatter_ppm": 520.5071942781356}]} +{"tic": 76835246, "tmag": 12.3001, "sectors": [92], "days": 21.372222222222224, "tois": [{"toi": "7483.01", "period": 0.5127743563872414, "radius": 1.2625993838157459, "teq": 891.5683370537455, "n_eclipse": 798, "n_oot": 13519, "night_ppm": -111.1307778283166, "e_night_ppm": 202.10038956470433, "depth_ppm": -57.121289778860884, "e_depth_ppm": 197.91600189657595, "amp_ppm": 30.806759057677148, "scatter_ppm": 4691.324216529798}]} +{"tic": 231949697, "tmag": 11.3301, "sectors": [87], "days": 20.605555555555558, "tois": [{"toi": "7537.01", "period": 0.9072055892059492, "radius": 1.7330574332430326, "teq": 982.9093350761717, "n_eclipse": 382, "n_oot": 13742, "night_ppm": -85.4400241783182, "e_night_ppm": 122.68809618365265, "depth_ppm": -45.898762545126814, "e_depth_ppm": 122.14789004634106, "amp_ppm": 37.531952222191954, "scatter_ppm": 2027.7690248228314}]} +{"tic": 200001699, "tmag": 10.6396, "sectors": [98], "days": 36.71805555555556, "tois": [{"toi": "7715.01", "period": 0.3236317459834564, "radius": 1.5426605870657477, "teq": 1625.2116526270968, "n_eclipse": 3245, "n_oot": 19412, "night_ppm": 3.0691147913097794, "e_night_ppm": 65.21725674433678, "depth_ppm": -0.05631968125197062, "e_depth_ppm": 62.29916843328659, "amp_ppm": 4.308502156354174, "scatter_ppm": 1486.4710111146994}]} diff --git a/papers/photometric/make_numbers.py b/papers/photometric/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..f458e362fd2427078a3d91b19f658991b1369d22 --- /dev/null +++ b/papers/photometric/make_numbers.py @@ -0,0 +1,155 @@ +"""Sensitivities of the photometric paper: flash-detector scatter of Kepler short-cadence, TESS two-minute and 20 s samples as 5-sigma amplitudes and reflector areas, glint durations, and nightside limits against intercepted starlight.""" +import csv +import glob +import io +import json +import math +import os +import random +import re +import sys + +import numpy as np + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import core, science # noqa: E402 +from setitools import flashes, transits # noqa: E402 + +RSUN = 6.957e8 +AU = 1.495978707e11 + + +def results(name): + p = os.path.join(HERE, "data", name) + return p if os.path.exists(p) else core.results(name) + + +def results_glob(pattern): + """Files in data/ matching the pattern, else in the results directory.""" + return sorted(glob.glob(os.path.join(HERE, "data", pattern))) or sorted(glob.glob(core.results(pattern))) + + +def scatter_kepler(n=40, seed=3): + """Robust scatter about a 30-minute running median, one short-cadence file each of n Kepler hosts.""" + from astropy.io import fits + from scipy.ndimage import median_filter + random.seed(seed) + kics = [re.search(r'"kic": "(\d+)"', ln).group(1) for ln in open(results_glob("kepler_glints_*.jsonl")[0])] + out = [] + for kic in random.sample(kics, min(3 * n, len(kics))): + k = int(kic) + prefix = "kepler/public/lightcurves/%04d/%09d/" % (k // 100000, k) + b = core.get(flashes.kepler_S3 + "?list-type=2&prefix=" + prefix, timeout=60, retries=2, soft=True) + keys = re.findall(r"([^<]*_slc\.fits)", b.decode()) if b else [] + fb = core.get(flashes.kepler_S3 + keys[0], timeout=120, retries=2, soft=True) if keys else None + if not fb: + continue + with fits.open(io.BytesIO(fb)) as h: + d = h[1].data + t, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["SAP_QUALITY"], int) + kp = h[0].header.get("KEPMAG") + good = (q == 0) & np.isfinite(f) & np.isfinite(t) + if good.sum() < 1000: + continue + r = f[good] / median_filter(f[good], size=31, mode="nearest") - 1.0 + out.append(dict(kic=k, kepmag=kp, sig_ppm=1e6 * float(1.4826 * np.median(np.abs(r - np.median(r)))))) + if len(out) >= n: + break + return out + + +def scatter_toi(n=40, seed=3): + """Robust scatter of the two-minute flash detector, one sector each of n TOI hosts.""" + random.seed(seed) + ts = [t for t in json.load(open(os.path.join(flashes.toi_ROOT, "targets.json"))) if t["sectors"]] + out = [] + for t in random.sample(ts, min(3 * n, len(ts))): + b = core.spoc_bytes(t["tic"], t["sectors"][0]) + if not b: + continue + try: + tt, f, _ = core.read(b, columns=("PDCSAP_FLUX",), normalise=False) + except Exception: + continue + if len(tt) < 1000: + continue + _, sig = science.flash_events(tt, f, flashes.toi_CAD, quiet=4) + out.append(dict(tic=t["tic"], tmag=t["tmag"], sig_ppm=1e6 * float(sig))) + if len(out) >= n: + break + return out + + +def scatter_tess20(n=150, seed=1): + """Robust scatter of the 20 s flash detector over n cached light curves.""" + from astropy.io import fits + files = sorted(glob.glob(os.path.join(flashes.tess20_DL, "*fast-lc.fits"))) + rng = np.random.default_rng(seed) + out = [] + for f in (files[i] for i in rng.choice(len(files), min(n, len(files)), replace=False)): + try: + with fits.open(f) as h: + d = h[1].data + r = flashes.tess20_flashes(np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"], int)) + tic = int(h[0].header["TICID"]) + except Exception: + continue + if r is not None: + out.append(dict(tic=tic, sig_ppm=1e6 * float(r[2]))) + return out + + +def glints(): + print("== glint sensitivity") + for name, rows, rstar in (("Kepler short cadence", scatter_kepler(), 1.0), ("TESS two-minute", scatter_toi(), 0.8), + ("TESS 20 s", scatter_tess20(), 0.35)): + s = np.array([x["sig_ppm"] for x in rows]) + amp = 5 * np.median(s) * 1e-6 + area = amp * math.pi * (rstar * RSUN) ** 2 + print("%s: %d curves, per-cadence scatter median %.0f ppm (10-90%% %.0f-%.0f); 5 sigma flash %.2f per cent; a perfect flat " + "reflector of %.1e m2 (%.0f km square) around a star of %.2f solar radii" % ( + name, len(s), np.median(s), *np.percentile(s, [10, 90]), 100 * amp, area, math.sqrt(area) / 1e3, rstar)) + for a_au in (0.05, 0.1, 1.0): + P = 365.25 * a_au ** 1.5 + print("a mirror whose orientation follows its orbit at %.2f au (P %.1f d) sweeps its reflection of a solar disc across the " + "observer in %.0f minutes" % (a_au, P, RSUN * P * 86400 / (2 * math.pi * a_au * AU) / 60)) + + +def nightside(): + print("== nightside limits against intercepted starlight") + toi = {r["TOI"]: r for r in csv.DictReader(open(os.path.join(transits.nightside_ROOT, "..", "tess_toi", "toi.csv"), encoding="utf-8", errors="replace"))} \ + if os.path.exists(os.path.join(transits.nightside_ROOT, "..", "tess_toi", "toi.csv")) else \ + {r["TOI"]: r for r in csv.DictReader(open(os.path.join(core.DATA, "tess_toi", "toi.csv"), encoding="utf-8", errors="replace"))} + rows = [] + for p in results_glob("phase_curves_*.jsonl"): + for line in open(p): + d = json.loads(line) + for t in d["tois"]: + r = toi.get(t["toi"]) + if not r: + continue + try: + S, R, T = float(r["Planet Insolation (Earth Flux)"]), float(r["Stellar Radius (R_Sun)"]), float(r["Stellar Eff Temp (K)"]) + Rp = float(r["Planet Radius (R_Earth)"]) + except ValueError: + continue + L = R ** 2 * (T / 5772.0) ** 4 + a_au = math.sqrt(L / S) + rows.append(dict(toi=t["toi"], f_int_ppm=1e6 * (Rp * 6371.0 / (2 * a_au * 1.495978707e8)) ** 2, + lim_ppm=3 * t["e_night_ppm"], night_W=3 * t["e_night_ppm"] * 1e-6 * L * 3.828e26)) + f = np.array([x["f_int_ppm"] for x in rows]) + lim = np.array([x["lim_ppm"] for x in rows]) + W = np.array([x["night_W"] for x in rows]) + print("%d planets: intercepted starlight (R_p/2a)^2 median %.1f ppm (%.1f-%.1f); 3 sigma nightside limit median %.0f ppm; " + "limit over intercepted median %.0f (min %.1f); non-stellar power the limits allow median %.1e W (%.1e-%.1e)" + % (len(rows), np.median(f), f.min(), f.max(), np.median(lim), np.median(lim / f), (lim / f).min(), np.median(W), W.min(), W.max())) + + +if __name__ == "__main__": + import warnings + warnings.filterwarnings("ignore") + nightside() + glints() diff --git a/papers/photometric/photometric.pdf b/papers/photometric/photometric.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ca921a8048ff6ecd61f41a6695886f0045a883f4 Binary files /dev/null and b/papers/photometric/photometric.pdf differ diff --git a/papers/photometric/photometric.tex b/papers/photometric/photometric.tex new file mode 100644 index 0000000000000000000000000000000000000000..98deb419bd27e9c17c973ffd6921c2c482c9df89 --- /dev/null +++ b/papers/photometric/photometric.tex @@ -0,0 +1,366 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{Glints, Nightside Light, Satellite Belts, Timing Steps and Occulter Shapes:\\ Photometric Technosignature Searches in Kepler, TESS and Cepheid Timing} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +Artificial objects around other stars could show in their photometry as glints of +reflected light at an orbital period, as light from a planet's dark side, as a belt of +satellites crossing the star with its planet, as a timing signal written into a regular +clock, or as an occulter whose shape no planet has. We search the Kepler and TESS +archives for each. Folded at the periods of $816$ Kepler and +$794$ TESS planet candidates whose hosts show three or more brief flashes in $252239$ +and $317274$ star-days of short-cadence photometry, the flashes gather at one phase no +more often than chance predicts, and the flashes in $2149$ TESS $20$\,s light curves of +stars within $30$\,pc recur at no period beyond chance. The nightsides of $63$ +ultra-short-period rocky planets emit no light above $3\sigma$, with a median limit of +$102$\,ppm of the star's flux. Belts of satellites $3$ to $90$ planetary radii from +$461$ Kepler planets add no shoulders to their transits once each transit is timed and +measured from its own light curve, with a median $3\sigma$ limit of $117$\,ppm six radii +out. Of $1810$ Kepler planet candidates with $20$ or more +transit times, none shows a phase step held from one transit on that a sinusoidal +timing variation or chance does not explain, nor do the times of maximum of $2939$ LMC +Cepheids over $14.6$ years. Those of $1116$ Kepler and $255$ TESS rejected candidates +whose light curves fold to a stable profile are eclipsing binaries, stellar variability, +heartbeat binaries and smooth dips of constant depth. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +The photometric archives of Kepler~\cite{Borucki2010} and TESS~\cite{Ricker2015} hold +years of precise light curves of hundreds of thousands of stars, and several kinds of +artificial object would leave marks in them. Flat surfaces in orbit, such as mirrors or +solar panels, reflect sunlight specularly and appear as brief glints repeating at the +orbital period~\cite{Jaiswal2023}. Artificial lighting on a planet's nightside would +show as light before and after transit that the planet's own heat does not +explain~\cite{LoebTurner2012}. An occulter of non-planetary shape would give a transit +profile no limb-darkened disc produces~\cite{Arnold2005,Wright2016}. And a civilization +could signal by shifting the phase of a regular clock: the transits of a body it +controls, or the pulsations of a Cepheid it perturbs~\cite{Learned2012}. + +Where these ideas have been tested, it has been on individual objects. This paper +applies each to the whole of an archive, with nulls drawn from the same light curves, +so that the number of signals expected by chance is known. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item Searches for glints at every Kepler and TESS planet-candidate period and at any +period in the TESS $20$\,s light curves of the nearest stars. +\item A uniform limit on the nightside light of $63$ ultra-short-period rocky planets. +\item A search of the transits of $461$ Kepler planets for the shoulders of satellite +belts. +\item Searches for held phase steps in the transit times of $1810$ Kepler candidates and +in the pulsation timing of $2939$ LMC Cepheids. +\item Shape tests of $1116$ Kepler and $255$ TESS rejected candidates. +\end{enumerate} + +% ============================================================================= +\section{Searches}\label{sec:searches} +% ============================================================================= + +\emph{Glints at planet periods.} For the $765$ hosts of Kepler planet candidates with +short-cadence data and the $6355$ hosts of TESS objects of interest (TOIs) that are +neither false positives nor false alarms~\cite{Guerrero2021}, each light curve, divided +by a running median of $30$ (Kepler) or $62$ (TESS) minutes, gives flashes: brightenings +five robust deviations high lasting one to three cadences, with quiet flux on either +side. For every candidate on a star with three or more flashes, the flashes are folded at +its period, and the busiest window of $2.5$ cadences in phase is compared with the same +statistic for $400$ sets of flash times drawn from the star's own good cadences. The +per-cadence scatter of the detrended light curves has a median of $780$\,ppm in the +Kepler short-cadence sample and $1600$\,ppm in the TESS two-minute sample, so a flash +must reach about $0.4$ and $0.8$ per cent of the star's flux. The quiet flux required on +either side, four cadences within two robust deviations, passes a flash in white noise +with probability $0.954^8=0.69$, and the package's end-to-end test of the detector on +synthetic Kepler cadences recovers $0.62$ of isolated flashes at ten deviations, so the +searches see about two thirds of the flashes above their thresholds. A flat mirror of area $A$ +and reflectivity $\rho$ that reflects the star's disc toward the observer adds a glint +of $\rho A/\pi R_\star^2$ of the star's flux, whatever its distance from the star, so +those thresholds correspond to perfect reflectors of $6\times10^{15}$ and +$8\times10^{15}$\,m$^2$, $80\,000$ to $90\,000$\,km on a side, around a star of solar +radius. A mirror whose orientation follows its orbit sweeps its reflection across the +observer in $R_\star P/2\pi a$, $1.5$ to $6$ hours at $0.05$ to $1$\,au from a solar +radius, longer than the running median and the one-to-three-cadence window, so what the +search covers is a reflector that spins, whose beam crosses the observer in minutes and +recurs at the orbital phase where the geometry repeats. + +\emph{Glints at any period.} The TESS $20$\,s light curves of Gaia DR3 stars within +$30$\,pc give flashes in the same way, over a $10$\,minute running median. For a star with +three or more flashes, every period implied by a pair of flashes, and its fractions down +to a fifth, is tested for flashes within $40$\,s of the predicted times, against the same +count for flash times drawn from the star's good cadences. The $20$\,s cadences scatter +by a median of $3000$\,ppm, so a flash must reach $1.5$ per cent of the flux, a +reflector of $3\times10^{15}$\,m$^2$ around an M dwarf of $0.35$ solar radii. + +\emph{Nightside light.} A rocky planet's nightside faces us just before and after +transit and is hidden in secondary eclipse, and below about $1500$\,K it emits next to +nothing in the TESS band. Every TOI with a period below $1$\,d and a radius below +$2\,R_\oplus$ is folded over its two-minute sectors and fitted outside transit and +eclipse with a sinusoid and its first harmonic; the nightside flux is the fit at phase +zero less the mean flux in eclipse. + +\emph{Satellite belts.} A belt of satellites $k$ planetary radii from a planet, such as +one at its synchronous radius~\cite{SocasNavarro2018}, crosses the star with the planet +and dims it for $kR_p/v$ before the planet's first contact and as long after its last, +where $v$ is the planet's speed across the star. The long-cadence light curves of the +$1243$ hosts of confirmed Kepler planets brighter than Kepler magnitude $15$, detrended by +a running median that skips each transit and its shoulders and with the system's other +transits masked, are folded on Holczer et al.'s measured transit times where they +exist~\cite{Holczer2016} and on the catalogue ephemeris otherwise. For $k$ from $3$, +beyond the Roche limit inside which natural rings lie, to $90$ or half the planet's Hill +radius, the flux from $18$ minutes beyond each contact to $kR_p/v$ beyond it is compared +with the flux just outside, for both shoulders together and each alone, against the same +statistic at $40$ random phases away from transit and eclipse. Every test above $z=4$ is +measured again with each transit's time and the transit's duration fitted from the light +curve, against a null whose phases are detrended with the same gap as the transit, and a +shoulder must exceed $z=5$ in both. + +\emph{Phase steps in transit times.} Holczer et al.\ give the time of every transit of +$2599$ Kepler candidates~\cite{Holczer2016}. A perturbing planet moves transit times +sinusoidally, tides and precession move them smoothly, and the spacecraft's quarterly +rolls shift them at quarter boundaries; a step held from one transit on needs an +impulsive change of the orbit, which natural dynamics makes only in a close encounter +and which a civilization that moves a body, or that times an artificial occulter, would +make at will. The held step is the simplest symbol such a clock could carry, and the one +that a search without a model of the message can test. For each candidate +with $20$ or more good times, the observed minus calculated times are fitted with a +linear ephemeris, with a step held from one transit on (six or more transits each side) +and with the best sinusoid. A step counts when it beats the sinusoid by $10$ in $\chi^2$, +has a false-alarm probability below $0.01$ against $300$ permutations of the residuals, +and lies more than two days from a quarter boundary. + +\emph{Phase steps in Cepheid timing.} Learned et al.\ proposed that a civilization could +advance a Cepheid's pulsation and write information into its times of +maximum~\cite{Learned2012}. Poleski's times of maximum of LMC Cepheids from MACHO +(1992--1999) and OGLE (1997--2008)~\cite{Poleski2008} give each of $2939$ stars a median +of $82$ maxima over $14.6$ years; each star's timing is fitted with a quadratic ephemeris +with offsets between sources, then with a step held from one cycle on or with a +companion's light-travel orbit of $1$ to $30$ years, and random walks of the star's own +excess scatter give the null. + +\emph{Occulter shapes.} The Kepler DR25 candidates flagged only as not +transit-like~\cite{Thompson2018}, $1116$ of them, and the $255$ TESS false positives and +false alarms at $T\le11.5$ whose dispositions name no binary, blend or offset, are folded +at their periods with stellar variability removed, fitted with a symmetric trapezoid, and +measured for their departure from it, their ingress-egress asymmetry, their number of +dips and the agreement between halves of the data and between odd and even events. A +periodic, stable profile that no trapezoid describes and that has no secondary eclipse +is listed. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +\emph{Glints.} The Kepler light curves hold $3634$ flashes in $252239$ star-days; of the +$816$ candidates on stars with three or more, $9$ gather their flashes at one phase at a +false-alarm probability below $0.01$, against at most $8.2$ by chance, and $2$ reach the +$1/401$ floor of the draws, against $2.0$. The TESS light curves hold $8710$ flashes in +$317274$ star-days, and none of the $794$ TOIs on stars with three or more falls below a +false-alarm probability of $0.01$, against at most $7.9$ by chance. The $2149$ TESS +$20$\,s light curves, $1.13$ million star-hours, hold $19695$ flashes, $0.42$ a star-day, +mostly cosmic rays and instrumental events; in the $1232$ stars with three or more, the +best periodic family of each reaches $p\le0.01$ in $6$ stars against $12.3$ expected for +uniform $p$, and $p\le0.05$ in $38$ against $61.6$. + +\emph{Nightside light.} For the $63$ planets the nightside flux divided by its error has +a median of $-0.33$ and a spread of $0.87$, and none exceeds $+3$; the highest, TOI~4567.01 +at $2.9$, has an equally high level in eclipse, an offset of the eclipse level rather +than light from the planet. The median $3\sigma$ limit is $102$\,ppm of the star's flux. +That is far more than the starlight the planets receive: a planet of radius $R_p$ at +distance $a$ intercepts $(R_p/2a)^2$ of its star's light, $0.5$ to $33$\,ppm for these +$63$ (median $6.8$\,ppm), so the limits lie $3$ to $100$ times (median $21$) above all +the starlight a nightside could re-emit, and constrain only light powered by something +other than the star: at the median limit, $4\times10^{21}$\,W, with a range of +$2\times10^{20}$ to $10^{23}$\,W, which is $10^{4}$ to $10^{6}$ times humanity's +output. A nightside lit by its star's own energy, at or below a few parts per million, +needs a precision these light curves do not reach. + +\emph{Satellite belts.} The $1243$ stars give $1522$ tests of $461$ planets. Eight exceed +$z=5$ with both shoulders above $z=2$, where no null phase reaches $z=5$, and every test +above $z=4$ falls below $z=5$ when measured again: with each transit's own time and fitted +duration, against the null detrended as the transit is, the largest of the $22$ planets +on the $16$ stars concerned reaches $z=3.3$ (KOI-1353.02). The excesses come from +transit-timing variations that a linear ephemeris smears across the contacts (KOI-134.01, +whose transits wander by about ten hours, falls from $z=28.7$ against the matched null to +$1.0$ on its own times, and KOI-1474.01 from $16.8$ to $-0.2$), from catalogue durations +shorter than the transit (KOI-620.01 lasts $7.4$\,h against the catalogue's $5.8$\,h), and +from the running median's gap at the transit, which the matched null reproduces +(KOI-1375.01 falls from $6.8$ to $3.0$). A shoulder six planetary radii out is excluded at +$3\sigma$ down to $117$\,ppm of the star's flux for the median planet and $22$\,ppm for the +best. + +\emph{Phase steps.} Of the $1810$ Kepler candidates, $8$ steps beat the sinusoid by $10$ +in $\chi^2$, one at a quarter boundary, where steps are set aside. The strongest of the +other seven follow the long-period timing variations that Holczer et al.\ list (KOI-12.01, +KOI-824.01 and KOI-2310.01), and the rest are low-signal timings at false-alarm +probabilities of $0.0012$ to $0.0020$, of which two to four are expected among the +trials. Among the Cepheids, four steps pass the tests: three fall at the start of +OGLE-II's first season (HJD $2450467$), where the data change source, and one on a date +that $15$ other stars share, so steps at a season's start or on a date other stars share +are excluded and none remains. + +\emph{Occulter shapes.} Of the Kepler rejects, $129$ fold to periodic, stable profiles +at S/N $15$ or more without a secondary eclipse: $81$ are Kepler eclipsing binaries, +among them the one strongly asymmetric profile (KOI-3716.01), and the $48$ others are +rotational and pulsational variability, heartbeat binaries, or smooth V- and U-shaped +dips of constant depth (KOI-3198, KOI-8060, KOI-8240 and KOI-7698). Of the TESS rejects, +$63$ are periodic and stable over three or more events; the strongest departures are +stellar variability (TOI~1447.01), an eclipse on a blue supergiant (TOI~796.01), an +eclipse whose depth changes between sectors (TOI~7247.01) and a grazing eclipsing binary +(TOI~1090.01). + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +\emph{Transit anomalies.} Arnold showed how the transits of artificial occulters differ +from planets'~\cite{Arnold2005}, the $\hat{G}$ search set out the signatures of +transiting megastructures~\cite{Wright2016}, and Breakthrough Listen searched $218$ +Kepler systems transit by transit for anomalies~\cite{Zuckerman2023b}. + +\emph{Glints, nightsides and clocks.} Specular reflections from artificial surfaces were +proposed as a technosignature by Jaiswal~\cite{Jaiswal2023}, artificial illumination +detectable by its light curve by Loeb and Turner~\cite{LoebTurner2012}, and phase coding +of Cepheids by Learned et al.~\cite{Learned2012}, whose idea Hippke et al.\ tested on one +Kepler RR~Lyrae star~\cite{Hippke2015}. Socas-Navarro showed that a belt of satellites at +a planet's synchronous radius would add shoulders to its transits~\cite{SocasNavarro2018}. +We find no earlier archive-wide search for glints at planet periods, for nightside light +across the ultra-short-period planets, for the shoulders of satellite belts, or for held +phase steps in transit or Cepheid timing. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No glint repeats at a planet-candidate period in Kepler or TESS, or at any period in the +fast light curves of the nearest stars, beyond what chance gives; no ultra-short-period +rocky planet shows light from its nightside above a hundredth of a per cent of its star, +twenty times what its star could power; no Kepler planet's transits carry the +shoulders of a satellite belt once each transit is timed and measured from the light +curve; no transit or Cepheid timing holds a phase +step that natural timing variations, instrument changes or chance do not explain; and +the rejected candidates with stable, non-planetary profiles are eclipsing binaries, +variable stars and smooth dips. + +The glint searches apply to flashes lasting one to three cadences at five robust +deviations, $0.4$ to $1.5$ per cent of the star's flux, which perfect reflectors of +$3$ to $8\times10^{15}$\,m$^2$ would give, and to reflectors whose beam crosses the +observer in minutes; the nightside limit, $102$\,ppm, is $21$ times the starlight the +median planet intercepts and bounds only light of a non-stellar source above about +$4\times10^{21}$\,W; the belt +search applies to belts $3$ to $90$ planetary radii out whose shoulders outlast $18$ minutes +beyond contact, and the timing searches to single held steps. A glint shorter than a +cadence or longer than three, a reflector smaller than a planet, a signal at a period +other than a candidate's in the longer-cadence data, a belt +inside the Roche limit, or timing coded in many small shifts is not constrained. + +\section*{Acknowledgements} + +This work uses data from the Kepler and TESS missions, obtained from the Mikulski Archive +for Space Telescopes at the Space Telescope Science Institute, from ExoFOP, from the +OGLE and MACHO projects through Poleski's compilation, and from the European Space Agency +mission Gaia. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Borucki2010} +W.~J. Borucki, D.~Koch, G.~Basri, et al., Kepler planet-detection mission: introduction +and first results, \emph{Science} \textbf{327}, 977 (2010). + +\bibitem{Ricker2015} +G.~R. Ricker, J.~N. Winn, R.~Vanderspek, et al., Transiting Exoplanet Survey Satellite, +\emph{J. Astron. Telesc. Instrum. Syst.} \textbf{1}, 014003 (2015). + +\bibitem{Jaiswal2023} +B.~Jaiswal, Specular reflections from artificial surfaces as technosignature, +\emph{Astrobiology} \textbf{23}, 291 (2023). + +\bibitem{LoebTurner2012} +A.~Loeb and E.~L. Turner, Detection technique for artificially illuminated objects in +the outer solar system and beyond, \emph{Astrobiology} \textbf{12}, 290 (2012). + +\bibitem{Arnold2005} +L.~F.~A. Arnold, Transit light-curve signatures of artificial objects, \emph{Astrophys. +J.} \textbf{627}, 534 (2005). + +\bibitem{Wright2016} +J.~T. Wright, K.~M.~S. Cartier, M.~Zhao, D.~Jontof-Hutter and E.~B. Ford, The $\hat{G}$ +search for extraterrestrial civilizations with large energy supplies. IV. The +signatures and information content of transiting megastructures, \emph{Astrophys. J.} +\textbf{816}, 17 (2016). + +\bibitem{SocasNavarro2018} +H.~Socas-Navarro, Possible photometric signatures of moderately advanced civilizations: +the Clarke exobelt, \emph{Astrophys. J.} \textbf{855}, 110 (2018). + +\bibitem{Learned2012} +J.~G. Learned, R.-P. Kudritzki, S.~Pakvasa and A.~Zee, The Cepheid galactic internet, +\emph{Contemp. Phys.} \textbf{53}, 113 (2012). + +\bibitem{Guerrero2021} +N.~M. Guerrero, S.~Seager, C.~X. Huang, et al., The TESS objects of interest catalog +from the TESS prime mission, \emph{Astrophys. J. Suppl.} \textbf{254}, 39 (2021). + +\bibitem{Holczer2016} +T.~Holczer, T.~Mazeh, G.~Nachmani, et al., Transit timing observations from Kepler. IX. +Catalog of the full long-cadence data set, \emph{Astrophys. J. Suppl.} \textbf{225}, 9 +(2016). + +\bibitem{Poleski2008} +R.~Poleski, Period changes of LMC Cepheids in the OGLE and MACHO data, \emph{Acta +Astron.} \textbf{58}, 313 (2008). + +\bibitem{Thompson2018} +S.~E. Thompson, J.~L. Coughlin, K.~Hoffman, et al., Planetary candidates observed by +Kepler. VIII. A fully automated catalog with measured completeness and reliability +based on data release 25, \emph{Astrophys. J. Suppl.} \textbf{235}, 38 (2018). + +\bibitem{Zuckerman2023b} +A.~Zuckerman, J.~Davenport, S.~Croft, A.~Siemion and I.~de~Pater, The Breakthrough +Listen search for intelligent life: detection and characterization of anomalous +transits in Kepler lightcurves, arXiv:2312.07903 (2023). + +\bibitem{Hippke2015} +M.~Hippke, J.~G. Learned, A.~Zee, et al., Pulsation period variations in the RRc Lyrae +star KIC 5520878, \emph{Astrophys. J.} \textbf{798}, 42 (2015). + +\end{thebibliography} + +\end{document} diff --git a/papers/short_lived_elements/curves_of_growth.jl b/papers/short_lived_elements/curves_of_growth.jl new file mode 100644 index 0000000000000000000000000000000000000000..92efe8a4e9bc2c6caa0d84754fc8915f88dd9be7 --- /dev/null +++ b/papers/short_lived_elements/curves_of_growth.jl @@ -0,0 +1,35 @@ +# Curves of growth of the Tc I and Pm II lines in MARCS dwarf atmospheres, computed with Korg with hydrogen lines left +# out of the synthesis. Prints one row per atmosphere and line: Teff, log g, [M/H], element, air wavelength (A), log gf, +# lower level (cm^-1), then the equivalent width (mA) at each abundance A(X) = log10(N_X/N_H) + 12 of the grid. +# +# julia curves_of_growth.jl > curves_of_growth.txt +using Korg + +const CM1_TO_EV = 1.239841984e-4 +const TC = [(4238.19, -0.575, 0.0), (4262.27, -0.377, 0.0), (4297.06, -0.237, 0.0)] +const PM = [(4137.95, 0.30, 2950.31), (4157.86, 0.36, 1983.52), (4186.03, 0.32, 1133.45), (4297.78, 0.08, 0.00)] +const SETS = [("Tc", 43, Korg.species"Tc I", TC), ("Pm", 61, Korg.species"Pm II", PM)] +const ABUNDANCES = -1.0:0.5:3.5 + +function ew(atm, line, Z, A) + A_X = format_A_X(0.0) + A_X[Z] = A + wls = (line.wl * 1e8 - 1.5):0.002:(line.wl * 1e8 + 1.5) + r = synthesize(atm, [line], A_X, wls; hydrogen_lines=false) + return sum(1 .- r.flux ./ r.cntm) * 0.002 * 1000.0 +end + +println("# teff logg m_h element lambda_air loggf e_low_cm ", join(["ew_A$(a)" for a in ABUNDANCES], " ")) +models = [(t, 4.55 - 0.2 * (t - 5100) / 1400, 0.0) for t in 5100:100:6500] +append!(models, [(5800, 4.45, -0.3), (5800, 4.45, 0.3)]) +for (teff, logg, mh) in models + atm = interpolate_marcs(teff, logg, mh) + for (el, Z, spec, lines) in SETS + for (lam_air, loggf, elo) in lines + line = Korg.Line(Korg.air_to_vacuum(lam_air), loggf, spec, elo * CM1_TO_EV) + ews = [ew(atm, line, Z, A) for A in ABUNDANCES] + println("$teff $(round(logg, digits=3)) $mh $el $lam_air $loggf $elo ", + join([string(round(e, sigdigits=5)) for e in ews], " ")) + end + end +end diff --git a/papers/short_lived_elements/curves_of_growth.txt b/papers/short_lived_elements/curves_of_growth.txt new file mode 100644 index 0000000000000000000000000000000000000000..95bef6f1fc01568211397b812d7a2984ccb9e6e9 --- /dev/null +++ b/papers/short_lived_elements/curves_of_growth.txt @@ -0,0 +1,120 @@ +# teff logg m_h element lambda_air loggf e_low_cm ew_A-1.0 ew_A-0.5 ew_A0.0 ew_A0.5 ew_A1.0 ew_A1.5 ew_A2.0 ew_A2.5 ew_A3.0 ew_A3.5 +5100 4.55 0.0 Tc 4238.19 -0.575 0.0 0.082871 0.26177 0.82223 2.5384 7.4504 19.151 37.755 55.731 72.986 95.61 +5100 4.55 0.0 Tc 4262.27 -0.377 0.0 0.1329 0.41918 1.3103 3.9866 11.24 26.381 45.764 63.123 82.151 110.64 +5100 4.55 0.0 Tc 4297.06 -0.237 0.0 0.18376 0.57873 1.8001 5.3992 14.661 31.882 50.999 68.494 89.729 124.23 +5100 4.55 0.0 Pm 4137.95 0.3 2950.31 0.39433 1.2334 3.7517 10.545 24.594 43.053 61.887 86.163 127.24 203.75 +5100 4.55 0.0 Pm 4157.86 0.36 1983.52 0.61026 1.8952 5.645 15.038 31.676 50.453 70.674 100.21 153.29 251.81 +5100 4.55 0.0 Pm 4186.03 0.32 1133.45 0.72598 2.246 6.6174 17.165 34.571 53.221 73.819 104.88 161.4 266.14 +5100 4.55 0.0 Pm 4297.78 0.08 0.0 0.59344 1.8431 5.4966 14.69 31.082 49.367 67.972 93.334 137.48 220.16 +5200 4.536 0.0 Tc 4238.19 -0.575 0.0 0.062145 0.19639 0.61802 1.9196 5.7327 15.391 32.731 51.207 67.934 87.969 +5200 4.536 0.0 Tc 4262.27 -0.377 0.0 0.09998 0.31503 0.98664 3.0288 8.7619 21.787 40.841 58.475 76.192 100.55 +5200 4.536 0.0 Tc 4297.06 -0.237 0.0 0.13768 0.43422 1.3565 4.1203 11.568 26.907 46.216 63.565 82.803 111.78 +5200 4.536 0.0 Pm 4137.95 0.3 2950.31 0.38429 1.2021 3.6586 10.301 24.112 42.362 60.886 84.414 123.84 197.3 +5200 4.536 0.0 Pm 4157.86 0.36 1983.52 0.59165 1.8379 5.4813 14.647 31.021 49.588 69.37 97.829 148.68 243.3 +5200 4.536 0.0 Pm 4186.03 0.32 1133.45 0.70067 2.1687 6.4008 16.673 33.808 52.25 72.342 102.16 156.15 256.47 +5200 4.536 0.0 Pm 4297.78 0.08 0.0 0.56893 1.7679 5.2815 14.18 30.247 48.351 66.564 90.888 132.74 211.18 +5300 4.521 0.0 Tc 4238.19 -0.575 0.0 0.046392 0.1467 0.46238 1.4429 4.3691 12.16 27.754 46.578 63.221 81.485 +5300 4.521 0.0 Tc 4262.27 -0.377 0.0 0.074293 0.2351 0.7385 2.2836 6.7444 17.624 35.752 53.887 70.852 92.241 +5300 4.521 0.0 Tc 4297.06 -0.237 0.0 0.10273 0.32432 1.0165 3.1185 8.9954 22.214 41.254 58.846 76.765 101.64 +5300 4.521 0.0 Pm 4137.95 0.3 2950.31 0.37486 1.1728 3.5713 10.072 23.663 41.725 59.969 82.824 120.77 191.46 +5300 4.521 0.0 Pm 4157.86 0.36 1983.52 0.57437 1.7847 5.329 14.283 30.413 48.791 68.178 95.676 144.53 235.62 +5300 4.521 0.0 Pm 4186.03 0.32 1133.45 0.67735 2.0975 6.2007 16.217 33.102 51.355 70.996 99.711 151.41 247.76 +5300 4.521 0.0 Pm 4297.78 0.08 0.0 0.54671 1.6998 5.0862 13.713 29.481 47.418 65.288 88.702 128.52 203.19 +5400 4.507 0.0 Tc 4238.19 -0.575 0.0 0.034661 0.10965 0.34599 1.0835 3.3159 9.4985 23.075 41.832 58.747 75.859 +5400 4.507 0.0 Tc 4262.27 -0.377 0.0 0.055444 0.17562 0.55279 1.7185 5.1576 14.04 30.688 49.302 65.966 85.273 +5400 4.507 0.0 Tc 4297.06 -0.237 0.0 0.076673 0.24226 0.76128 2.3533 6.9351 18.016 36.2 54.258 71.393 93.292 +5400 4.507 0.0 Pm 4137.95 0.3 2950.31 0.36569 1.1443 3.4867 9.8513 23.234 41.127 59.115 81.357 117.95 186.09 +5400 4.507 0.0 Pm 4157.86 0.36 1983.52 0.55784 1.7339 5.1837 13.937 29.838 48.047 67.074 93.698 140.71 228.56 +5400 4.507 0.0 Pm 4186.03 0.32 1133.45 0.65526 2.0302 6.0115 15.786 32.437 50.52 69.753 97.469 147.09 239.8 +5400 4.507 0.0 Pm 4297.78 0.08 0.0 0.52613 1.6366 4.9048 13.28 28.767 46.554 64.116 86.719 124.72 195.97 +5500 4.493 0.0 Tc 4238.19 -0.575 0.0 0.026769 0.08337 0.26068 0.81501 2.5112 7.3542 18.837 36.961 54.369 70.792 +5500 4.493 0.0 Tc 4262.27 -0.377 0.0 0.041388 0.1309 0.41349 1.2909 3.9226 11.037 25.811 44.615 61.348 79.184 +5500 4.493 0.0 Tc 4297.06 -0.237 0.0 0.057242 0.18098 0.56979 1.7716 5.3088 14.383 31.155 49.678 66.446 86.168 +5500 4.493 0.0 Pm 4137.95 0.3 2950.31 0.35742 1.1186 3.4103 9.6522 22.85 40.595 58.342 80.006 115.32 181.06 +5500 4.493 0.0 Pm 4157.86 0.36 1983.52 0.54299 1.6883 5.053 13.625 29.324 47.379 66.067 91.875 137.17 221.98 +5500 4.493 0.0 Pm 4186.03 0.32 1133.45 0.63556 1.97 5.842 15.399 31.841 49.769 68.621 95.406 143.09 232.39 +5500 4.493 0.0 Pm 4297.78 0.08 0.0 0.50805 1.581 4.745 12.896 28.134 45.784 63.059 84.913 121.22 189.29 +5600 4.479 0.0 Tc 4238.19 -0.575 0.0 0.019504 0.061775 0.19599 0.61599 1.9091 5.6898 15.219 32.177 50.119 66.253 +5600 4.479 0.0 Tc 4262.27 -0.377 0.0 0.031128 0.098518 0.31187 0.97659 2.9943 8.6448 21.409 39.934 57.024 73.937 +5600 4.479 0.0 Tc 4297.06 -0.237 0.0 0.043079 0.13627 0.42968 1.3418 4.0722 11.406 26.409 45.152 61.928 80.163 +5600 4.479 0.0 Pm 4137.95 0.3 2950.31 0.3488 1.0915 3.3299 9.4423 22.448 40.059 57.588 78.716 112.82 176.27 +5600 4.479 0.0 Pm 4157.86 0.36 1983.52 0.52787 1.6414 4.9181 13.303 28.798 46.719 65.099 90.145 133.82 215.73 +5600 4.479 0.0 Pm 4186.03 0.32 1133.45 0.61541 1.9085 5.6691 15.004 31.238 49.031 67.535 93.453 139.3 225.37 +5600 4.479 0.0 Pm 4297.78 0.08 0.0 0.48995 1.5254 4.585 12.51 27.5 45.032 62.052 83.221 117.97 183.06 +5700 4.464 0.0 Tc 4238.19 -0.575 0.0 0.014741 0.046741 0.14784 0.46698 1.4549 4.394 12.172 27.547 45.849 61.997 +5700 4.464 0.0 Tc 4262.27 -0.377 0.0 0.023509 0.074443 0.23546 0.74086 2.2874 6.7376 17.51 35.219 52.803 69.178 +5700 4.464 0.0 Tc 4297.06 -0.237 0.0 0.032557 0.10303 0.32516 1.0188 3.1223 8.9804 22.032 40.567 57.624 74.848 +5700 4.464 0.0 Pm 4137.95 0.3 2950.31 0.33972 1.0637 3.2479 9.2296 22.046 39.539 56.867 77.474 110.39 171.58 +5700 4.464 0.0 Pm 4157.86 0.36 1983.52 0.51223 1.5941 4.7831 12.982 28.28 46.085 64.172 88.478 130.56 209.63 +5700 4.464 0.0 Pm 4186.03 0.32 1133.45 0.59577 1.8481 5.4994 14.616 30.651 48.329 66.504 91.59 135.66 218.58 +5700 4.464 0.0 Pm 4297.78 0.08 0.0 0.47257 1.472 4.431 12.139 26.891 44.323 61.106 81.628 114.87 177.08 +5800 4.45 0.0 Tc 4238.19 -0.575 0.0 0.01121 0.035598 0.11266 0.35536 1.114 3.3998 9.6838 23.255 41.558 57.964 +5800 4.45 0.0 Tc 4262.27 -0.377 0.0 0.017871 0.056644 0.17904 0.56531 1.7548 5.2496 14.189 30.618 48.65 64.817 +5800 4.45 0.0 Tc 4297.06 -0.237 0.0 0.024769 0.078403 0.24768 0.77796 2.4019 7.0532 18.164 35.995 53.486 70.088 +5800 4.45 0.0 Pm 4137.95 0.3 2950.31 0.33081 1.0358 3.1655 9.0161 21.643 39.027 56.169 76.277 108.04 167.01 +5800 4.45 0.0 Pm 4157.86 0.36 1983.52 0.49708 1.5473 4.6496 12.663 27.767 45.47 63.279 86.877 127.41 203.68 +5800 4.45 0.0 Pm 4186.03 0.32 1133.45 0.57624 1.7888 5.3324 14.233 30.073 47.649 65.513 89.801 132.14 211.96 +5800 4.45 0.0 Pm 4297.78 0.08 0.0 0.45577 1.4203 4.2818 11.778 26.297 43.641 60.207 80.114 111.92 171.32 +5900 4.436 0.0 Tc 4238.19 -0.575 0.0 0.008606 0.027334 0.086505 0.27308 0.858 2.6408 7.6878 19.412 37.265 54.098 +5900 4.436 0.0 Tc 4262.27 -0.377 0.0 0.013681 0.04342 0.13732 0.4337 1.3538 4.0983 11.433 26.268 44.527 60.756 +5900 4.436 0.0 Tc 4297.06 -0.237 0.0 0.018982 0.060129 0.19005 0.59803 1.8568 5.5408 14.85 31.532 49.448 65.754 +5900 4.436 0.0 Pm 4137.95 0.3 2950.31 0.32128 1.0062 3.0778 8.7877 21.211 38.493 55.467 75.092 105.72 162.45 +5900 4.436 0.0 Pm 4157.86 0.36 1983.52 0.48117 1.4984 4.5093 12.327 27.227 44.842 62.392 85.3 124.3 197.77 +5900 4.436 0.0 Pm 4186.03 0.32 1133.45 0.55622 1.7274 5.1592 13.834 29.472 46.961 64.534 88.048 128.68 205.42 +5900 4.436 0.0 Pm 4297.78 0.08 0.0 0.43969 1.3688 4.1311 11.409 25.689 42.959 59.328 78.65 109.05 165.68 +6000 4.421 0.0 Tc 4238.19 -0.575 0.0 0.0066254 0.021089 0.0668 0.21102 0.66354 2.0581 6.0951 16.048 33.007 50.315 +6000 4.421 0.0 Tc 4262.27 -0.377 0.0 0.010554 0.033481 0.10593 0.33424 1.0491 3.2058 9.1716 22.259 40.393 56.892 +6000 4.421 0.0 Tc 4297.06 -0.237 0.0 0.014629 0.046366 0.14666 0.46216 1.4413 4.3552 12.059 27.262 45.438 61.715 +6000 4.421 0.0 Pm 4137.95 0.3 2950.31 0.3101 0.97146 2.9744 8.5187 20.704 37.886 54.72 73.872 103.35 157.78 +6000 4.421 0.0 Pm 4157.86 0.36 1983.52 0.46296 1.4424 4.3481 11.941 26.607 44.153 61.466 83.687 121.13 191.7 +6000 4.421 0.0 Pm 4186.03 0.32 1133.45 0.53369 1.6585 4.9638 13.383 28.792 46.22 63.522 86.269 125.17 198.73 +6000 4.421 0.0 Pm 4297.78 0.08 0.0 0.42286 1.3137 3.9655 10.999 25.008 42.224 58.432 77.188 106.2 160.02 +6100 4.407 0.0 Tc 4238.19 -0.575 0.0 0.0051431 0.016422 0.052077 0.16465 0.51834 1.6151 4.8491 13.21 28.93 46.604 +6100 4.407 0.0 Tc 4262.27 -0.377 0.0 0.0082013 0.02606 0.082519 0.26053 0.81936 2.5239 7.365 18.715 36.318 53.182 +6100 4.407 0.0 Tc 4297.06 -0.237 0.0 0.011378 0.03713 0.11837 0.36595 1.1349 3.4508 9.7878 23.355 41.489 57.923 +6100 4.407 0.0 Pm 4137.95 0.3 2950.31 0.30025 0.94079 2.883 8.2797 20.247 37.332 54.028 72.724 101.1 153.28 +6100 4.407 0.0 Pm 4157.86 0.36 1983.52 0.44686 1.3929 4.2049 11.595 26.043 43.52 60.604 82.17 118.11 185.86 +6100 4.407 0.0 Pm 4186.03 0.32 1133.45 0.51376 1.5975 4.7902 12.977 28.172 45.537 62.578 84.596 121.84 192.31 +6100 4.407 0.0 Pm 4297.78 0.08 0.0 0.40453 1.2614 3.815 10.628 24.382 41.532 57.568 75.793 103.5 154.59 +6200 4.393 0.0 Tc 4238.19 -0.575 0.0 0.0040086 0.012855 0.040834 0.12922 0.40727 1.2717 3.8644 10.825 25.081 42.91 +6200 4.393 0.0 Tc 4262.27 -0.377 0.0 0.0064064 0.020404 0.064676 0.20432 0.6424 1.9942 5.9126 15.617 32.314 49.573 +6200 4.393 0.0 Tc 4297.06 -0.237 0.0 0.0088963 0.028281 0.089592 0.2828 0.89125 2.7329 7.9192 19.807 37.548 54.283 +6200 4.393 0.0 Pm 4137.95 0.3 2950.31 0.2876 0.90148 2.7657 7.9719 19.653 36.629 53.222 71.473 98.711 148.51 +6200 4.393 0.0 Pm 4157.86 0.36 1983.52 0.42673 1.331 4.026 11.159 25.328 42.75 59.632 80.54 114.91 179.66 +6200 4.393 0.0 Pm 4186.03 0.32 1133.45 0.48933 1.5227 4.5763 12.474 27.396 44.722 61.532 82.819 118.34 185.53 +6200 4.393 0.0 Pm 4297.78 0.08 0.0 0.38275 1.1985 3.6333 10.177 23.612 40.709 56.618 74.322 100.67 148.94 +6300 4.379 0.0 Tc 4238.19 -0.575 0.0 0.0031706 0.01017 0.032312 0.10225 0.32257 1.0099 3.0947 8.8661 21.571 39.258 +6300 4.379 0.0 Tc 4262.27 -0.377 0.0 0.0050396 0.016104 0.051117 0.16157 0.50874 1.5854 4.7621 12.985 28.496 46.054 +6300 4.379 0.0 Tc 4297.06 -0.237 0.0 0.0070081 0.022362 0.070833 0.22373 0.70489 2.1787 6.4193 16.705 33.706 50.781 +6300 4.379 0.0 Pm 4137.95 0.3 2950.31 0.27455 0.8609 2.6436 7.651 19.027 35.883 52.396 70.221 96.339 143.75 +6300 4.379 0.0 Pm 4157.86 0.36 1983.52 0.40616 1.2676 3.8418 10.707 24.574 41.945 58.649 78.917 111.74 173.44 +6300 4.379 0.0 Pm 4186.03 0.32 1133.45 0.46451 1.4466 4.3579 11.954 26.582 43.877 60.478 81.058 114.88 178.77 +6300 4.379 0.0 Pm 4297.78 0.08 0.0 0.36238 1.1347 3.4488 9.7145 22.809 39.854 55.661 72.873 97.922 143.37 +6400 4.364 0.0 Tc 4238.19 -0.575 0.0 0.0025059 0.0080869 0.025752 0.081566 0.25752 0.80801 2.4912 7.2697 18.443 35.671 +6400 4.364 0.0 Tc 4262.27 -0.377 0.0 0.0039897 0.012838 0.040734 0.12885 0.40609 1.2679 3.8524 10.781 24.935 42.609 +6400 4.364 0.0 Tc 4297.06 -0.237 0.0 0.0055871 0.017808 0.056442 0.17846 0.56154 1.7483 5.2198 14.038 30.02 47.401 +6400 4.364 0.0 Pm 4137.95 0.3 2950.31 0.26092 0.81846 2.5167 7.3125 18.354 35.073 51.528 68.95 93.972 139.0 +6400 4.364 0.0 Pm 4157.86 0.36 1983.52 0.38484 1.2018 3.6496 10.231 23.763 41.082 57.63 77.285 108.58 167.22 +6400 4.364 0.0 Pm 4186.03 0.32 1133.45 0.43897 1.3681 4.1319 11.41 25.709 42.976 59.394 79.296 111.44 172.01 +6400 4.364 0.0 Pm 4297.78 0.08 0.0 0.34151 1.0678 3.2587 9.2336 21.954 38.936 54.671 71.425 95.224 137.89 +6500 4.35 0.0 Tc 4238.19 -0.575 0.0 0.0019848 0.0064576 0.020632 0.065432 0.20676 0.64984 2.0119 5.9639 15.677 32.151 +6500 4.35 0.0 Tc 4262.27 -0.377 0.0 0.0031985 0.01027 0.032642 0.10334 0.32598 1.0204 3.1248 8.9356 21.648 39.197 +6500 4.35 0.0 Tc 4297.06 -0.237 0.0 0.004457 0.014256 0.045244 0.14315 0.451 1.4073 4.2528 11.755 26.512 44.086 +6500 4.35 0.0 Pm 4137.95 0.3 2950.31 0.24462 0.76773 2.3646 6.9037 17.524 34.057 50.495 67.539 91.468 134.03 +6500 4.35 0.0 Pm 4157.86 0.36 1983.52 0.3597 1.1242 3.4211 9.6605 22.767 40.018 56.454 75.509 105.25 160.67 +6500 4.35 0.0 Pm 4186.03 0.32 1133.45 0.40918 1.2765 3.8659 10.762 24.641 41.88 58.157 77.4 107.86 164.96 +6500 4.35 0.0 Pm 4297.78 0.08 0.0 0.31733 0.99301 3.0382 8.667 20.92 37.812 53.527 69.866 92.459 132.35 +5800 4.45 -0.3 Tc 4238.19 -0.575 0.0 0.011307 0.035921 0.11372 0.35871 1.1227 3.4273 9.7475 23.298 41.443 58.009 +5800 4.45 -0.3 Tc 4262.27 -0.377 0.0 0.01804 0.057172 0.18082 0.56932 1.7695 5.293 14.268 30.617 48.541 65.157 +5800 4.45 -0.3 Tc 4297.06 -0.237 0.0 0.024953 0.079082 0.24987 0.78494 2.4228 7.1047 18.225 35.913 53.384 70.67 +5800 4.45 -0.3 Pm 4137.95 0.3 2950.31 0.26983 0.84828 2.6051 7.5435 18.802 35.731 53.144 73.202 104.35 161.5 +5800 4.45 -0.3 Pm 4157.86 0.36 1983.52 0.40615 1.2675 3.8382 10.696 24.549 42.209 60.16 83.406 122.69 195.94 +5800 4.45 -0.3 Pm 4186.03 0.32 1133.45 0.4709 1.4648 4.4061 12.067 26.761 44.423 62.413 86.359 127.47 204.31 +5800 4.45 -0.3 Pm 4297.78 0.08 0.0 0.36979 1.1559 3.5141 9.8834 23.086 40.34 57.212 77.232 108.88 167.35 +5800 4.45 0.3 Tc 4238.19 -0.575 0.0 0.011062 0.03507 0.11092 0.34977 1.0946 3.3467 9.5644 23.121 41.627 57.983 +5800 4.45 0.3 Tc 4262.27 -0.377 0.0 0.017607 0.055734 0.17615 0.55439 1.7239 5.1702 14.039 30.535 48.755 64.605 +5800 4.45 0.3 Tc 4297.06 -0.237 0.0 0.024405 0.077248 0.24395 0.76623 2.3672 6.9652 18.031 36.016 53.624 69.702 +5800 4.45 0.3 Pm 4137.95 0.3 2950.31 0.41107 1.2834 3.8898 10.852 24.912 42.514 59.392 79.688 112.43 174.0 +5800 4.45 0.3 Pm 4157.86 0.36 1983.52 0.61777 1.9152 5.6886 15.062 31.341 48.906 66.659 90.841 133.2 213.61 +5800 4.45 0.3 Pm 4186.03 0.32 1133.45 0.71664 2.2142 6.5144 16.85 33.707 51.048 68.878 93.751 137.91 221.86 +5800 4.45 0.3 Pm 4297.78 0.08 0.0 0.56938 1.7675 5.2724 14.109 29.894 47.103 63.376 83.254 115.48 176.45 diff --git a/papers/short_lived_elements/data/element_Am_ESPRESSO.json b/papers/short_lived_elements/data/element_Am_ESPRESSO.json new file mode 100644 index 0000000000000000000000000000000000000000..2628c708235868504963fa76a1caaee2fd1ff01e --- /dev/null +++ b/papers/short_lived_elements/data/element_Am_ESPRESSO.json @@ -0,0 +1 @@ +{"lines": [[4509.45, 0.9712990131287732], [4575.59, 1.0], [4324.57, 0.355624487734312], [4441.36, 0.3750919549679658], [4699.7, 0.41999688359800125], [4872.22, 0.45139794335478456], [4188.12, 0.1671644906080934], [4593.31, 0.20107464428475946], [5020.96, 0.24025880836889185]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "3507879565090229888", "z": [-5.51, -1.34, -6.84, -1.89, 2.49, -1.4, -4.01, -2.64, 0.37], "ew_ma": [-0.24, -0.06, -0.74, -0.16, 0.15, -0.08, -0.6, -0.11, 0.02], "z_comb": -6.39, "p": 0.01624918754062297, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 3.1, "v": -7.2, "rv_gaia": -7.86, "ew_limit_ma": 0.315}, {"star": "6029992663310612096", "z": [-7.46, -0.05, -3.97, 0.92, -0.74, 2.48, -4.1, 1.91, 0.26], "ew_ma": [-0.86, -0.01, -0.58, 0.14, -0.1, 0.29, -1.26, 0.23, 0.04], "z_comb": -4.73, "p": 0.025148742562871855, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.67, "v": 14.8, "rv_gaia": 14.08, "ew_limit_ma": 0.423}, {"star": "3584074380866605440", "z": [-5.21, -1.9, -1.26, 0.99, -1.42, 1.68, -1.16, 1.31, -0.99], "ew_ma": [-1.27, -0.44, -0.4, 0.27, -0.36, 0.33, -0.45, 0.31, -0.28], "z_comb": -4.27, "p": 0.028098595070246486, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9961, "null_sd": 2.15, "v": 20.8, "rv_gaia": 19.78, "ew_limit_ma": 0.608}, {"star": "3945118643256370688", "z": [-1.5, -1.36, -0.58, -1.11, 1.06, -2.61, 1.79, -1.22, -2.61], "ew_ma": [-0.2, -0.18, -0.08, -0.17, 0.14, -0.32, 0.32, -0.16, -0.3], "z_comb": -2.88, "p": 0.03289835508224589, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 1.66, "v": -1.2, "rv_gaia": -1.67, "ew_limit_ma": 0.268}, {"star": "3948424496764080640", "z": [-0.26, -1.5, -3.25, -1.14, -3.32, -3.21, -4.39, 0.65, -0.68], "ew_ma": [-0.03, -0.17, -0.39, -0.19, -0.36, -0.42, -1.1, 0.07, -0.07], "z_comb": -4.22, "p": 0.04189790510474476, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.51, "v": -8.0, "rv_gaia": -8.56, "ew_limit_ma": 0.648}, {"star": "5596797039059063680", "z": [-2.69, -0.09, 1.2, -2.77, 0.35, -5.77, -2.35, -2.68, -1.28], "ew_ma": [-0.14, -0.01, 0.13, -0.25, 0.02, -0.42, -0.27, -0.18, -0.08], "z_comb": -4.25, "p": 0.052447377631118446, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.79, "v": -14.95, "rv_gaia": -15.71, "ew_limit_ma": 0.231}, {"star": "5524982093479504384", "z": [-6.56, 0.33, -0.87, 0.49, 2.48, 1.25, -4.8, -2.78, 0.09], "ew_ma": [-0.53, 0.03, -0.2, 0.05, 0.24, 0.09, -1.21, -0.2, 0.01], "z_comb": -3.58, "p": 0.09374531273436328, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.01, "v": 10.05, "rv_gaia": 9.31, "ew_limit_ma": 0.423}, {"star": "2494066897240089984", "z": [-3.42, -0.92, -5.12, -1.56, 2.45, 2.18, -1.02, 0.26, -2.28], "ew_ma": [-0.24, -0.07, -0.48, -0.16, 0.16, 0.14, -0.15, 0.02, -0.15], "z_comb": -3.21, "p": 0.1255437228138593, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9987, "null_sd": 2.78, "v": -4.6, "rv_gaia": -5.33, "ew_limit_ma": 0.436}, {"star": "4343064577465522816", "z": [-1.95, -0.88, 3.93, 1.05, 2.31, -3.8, -1.8, -1.29, -3.86], "ew_ma": [-0.23, -0.12, 1.18, 0.2, 0.38, -0.57, -0.56, -0.15, -0.68], "z_comb": -1.95, "p": 0.13944302784860757, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.48, "v": -31.3, "rv_gaia": -31.96, "ew_limit_ma": 0.559}, {"star": "6832155218215202944", "z": [-3.85, 0.41, -1.53, 0.5, 0.43, -4.4, -3.32, -1.12, -0.29], "ew_ma": [-0.42, 0.05, -0.32, 0.1, 0.06, -0.62, -1.12, -0.13, -0.04], "z_comb": -3.85, "p": 0.14419279036048196, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9958, "null_sd": 3.12, "v": 15.25, "rv_gaia": 14.63, "ew_limit_ma": 0.67}, {"star": "6226694571859532800", "z": [-0.97, 0.88, -11.17, -1.18, -1.87, 2.2, 2.54, 0.51, -2.41], "ew_ma": [-0.07, 0.07, -0.93, -0.12, -0.23, 0.18, 0.54, 0.04, -0.23], "z_comb": -2.62, "p": 0.15064246787660618, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 2.98, "v": 5.8, "rv_gaia": 5.14, "ew_limit_ma": 0.529}, {"star": "3945118265299248128", "z": [-2.87, -0.29, -2.5, 2.48, 1.85, -0.65, -3.54, 0.84, -1.02], "ew_ma": [-0.31, -0.03, -0.36, 0.35, 0.22, -0.08, -0.65, 0.09, -0.1], "z_comb": -1.96, "p": 0.15159242037898105, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9986, "null_sd": 1.88, "v": -0.85, "rv_gaia": -1.56, "ew_limit_ma": 0.338}, {"star": "5855730584310531200", "z": [-11.87, 0.88, 9.23, 2.06, -0.79, 4.67, 1.07, 0.57, 1.51], "ew_ma": [-1.3, 0.1, 1.72, 0.51, -0.1, 0.54, 0.28, 0.08, 0.24], "z_comb": -2.52, "p": 0.1614919254037298, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 3.73, "v": 105.3, "rv_gaia": 104.53, "ew_limit_ma": 1.662}, {"star": "4722111590409480064", "z": [-0.34, 0.26, -6.44, -0.51, -0.61, -5.41, -0.1, 1.95, -0.68], "ew_ma": [-0.02, 0.01, -0.44, -0.04, -0.03, -0.34, -0.01, 0.11, -0.06], "z_comb": -3.06, "p": 0.1648417579121044, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9977, "null_sd": 4.37, "v": 13.0, "rv_gaia": 12.44, "ew_limit_ma": 0.608}, {"star": "6321929733564266752", "z": [-4.92, 1.31, -5.84, 0.51, 2.45, 1.23, -2.83, -0.04, 1.9], "ew_ma": [-1.42, 0.43, -3.14, 0.24, 0.81, 0.49, -2.15, -0.01, 1.48], "z_comb": -2.3, "p": 0.16914154292285385, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9862, "null_sd": 2.62, "v": -31.55, "rv_gaia": -32.32, "ew_limit_ma": 2.073}, {"star": "3812355328621651328", "z": [1.14, -3.83, -3.24, 0.12, 3.95, -1.6, 0.71, -0.6, -1.91], "ew_ma": [0.09, -0.33, -0.28, 0.01, 0.33, -0.12, 0.08, -0.04, -0.18], "z_comb": -2.04, "p": 0.1735413229338533, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 2.49, "v": 4.75, "rv_gaia": 4.18, "ew_limit_ma": 0.33}, {"star": "2898239468873596800", "z": [-2.41, -0.68, -2.03, 2.81, 1.16, -1.79, 0.63, 1.16, -3.8], "ew_ma": [-0.08, -0.03, -0.11, 0.14, 0.05, -0.06, 0.05, 0.05, -0.15], "z_comb": -2.18, "p": 0.19639018049097545, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.6, "v": -3.2, "rv_gaia": -3.85, "ew_limit_ma": 0.22}, {"star": "6189254689097655552", "z": [-3.02, -0.38, 1.55, -1.58, 0.47, -0.31, -1.84, -1.07, 1.02], "ew_ma": [-0.15, -0.02, 0.1, -0.12, 0.04, -0.02, -0.3, -0.08, 0.08], "z_comb": -2.17, "p": 0.20343982800859958, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 3.57, "v": -3.2, "rv_gaia": -3.87, "ew_limit_ma": 0.326}, {"star": "2619706544757416192", "z": [-0.93, -1.25, 2.73, -3.77, -3.98, 1.43, 0.44, 1.08, 0.03], "ew_ma": [-0.06, -0.08, 0.3, -0.56, -0.33, 0.13, 0.06, 0.07, 0.0], "z_comb": -2.02, "p": 0.2200389980500975, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.57, "v": -20.2, "rv_gaia": -20.78, "ew_limit_ma": 0.393}, {"star": "4176501313320676992", "z": [1.42, -1.31, 0.78, -2.79, 2.21, -3.85, -0.79, -1.07, -0.24], "ew_ma": [0.05, -0.07, 0.08, -0.37, 0.12, -0.35, -0.13, -0.04, -0.01], "z_comb": -1.16, "p": 0.23313834308284587, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.47, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.196}, {"star": "5691782130578684544", "z": [0.94, -1.26, -4.2, -0.16, -1.12, -1.61, 1.07, -0.46, 0.72], "ew_ma": [0.06, -0.09, -0.29, -0.01, -0.1, -0.13, 0.15, -0.03, 0.05], "z_comb": -1.73, "p": 0.2541372931353432, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.43, "v": 8.9, "rv_gaia": 8.18, "ew_limit_ma": 0.536}, {"star": "627699888238838528", "z": [-1.14, -1.47, 2.31, -1.4, -0.58, -0.14, 0.69, -0.56, 3.37], "ew_ma": [-0.14, -0.21, 0.39, -0.23, -0.07, -0.02, 0.17, -0.07, 0.41], "z_comb": -1.07, "p": 0.2982350882455877, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9985, "null_sd": 1.98, "v": 31.5, "rv_gaia": 30.81, "ew_limit_ma": 0.752}, {"star": "6369544118965772416", "z": [0.48, 0.08, -8.33, -0.15, -0.42, 2.53, -1.71, -0.24, -0.77], "ew_ma": [0.02, 0.01, -0.92, -0.02, -0.04, 0.35, -0.29, -0.02, -0.05], "z_comb": -1.23, "p": 0.34633268336583173, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 3.35, "v": -10.25, "rv_gaia": -11.0, "ew_limit_ma": 0.531}, {"star": "4733035238430992768", "z": [-2.47, -1.1, -1.65, 3.78, 0.53, -0.53, 1.08, 1.88, 1.64], "ew_ma": [-0.11, -0.05, -0.13, 0.26, 0.02, -0.02, 0.09, 0.1, 0.07], "z_comb": -1.05, "p": 0.3590820458977051, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.13, "v": 1.35, "rv_gaia": 0.66, "ew_limit_ma": 0.428}, {"star": "4768170579173552896", "z": [2.89, -2.89, -0.83, -1.48, -1.3, 0.35, 1.05, -0.86, -0.37], "ew_ma": [0.11, -0.15, -0.04, -0.1, -0.07, 0.03, 0.08, -0.03, -0.02], "z_comb": -0.85, "p": 0.37213139343032847, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9994, "null_sd": 2.79, "v": -4.8, "rv_gaia": -5.53, "ew_limit_ma": 0.292}, {"star": "3480332916165099904", "z": [-0.79, 2.35, -2.52, -0.46, -3.44, 1.09, -2.21, 1.23, -4.33], "ew_ma": [-0.03, 0.1, -0.26, -0.03, -0.15, 0.05, -0.21, 0.05, -0.23], "z_comb": -0.97, "p": 0.3807809609519524, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.69, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.298}, {"star": "5640565607657897728", "z": [3.14, 3.24, -5.67, -0.63, 0.12, -8.2, -4.28, -1.86, -0.39], "ew_ma": [0.21, 0.19, -0.63, -0.07, 0.01, -0.64, -0.66, -0.16, -0.04], "z_comb": -0.48, "p": 0.408029598520074, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.89, "v": 15.2, "rv_gaia": 14.67, "ew_limit_ma": 1.15}, {"star": "5064574724769475968", "z": [0.91, 1.59, -1.75, -1.39, -1.0, -7.07, -1.8, -1.16, -0.26], "ew_ma": [0.07, 0.18, -0.28, -0.19, -0.13, -0.85, -0.37, -0.14, -0.04], "z_comb": -1.74, "p": 0.4150292485375731, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.82, "v": 9.9, "rv_gaia": 9.77, "ew_limit_ma": 1.178}, {"star": "3550081879381593728", "z": [0.57, -0.62, -0.64, 1.13, -0.01, -2.49, 0.77, -0.38, 1.5], "ew_ma": [0.14, -0.16, -0.2, 0.4, -0.0, -0.9, 0.34, -0.11, 0.42], "z_comb": -0.35, "p": 0.4193790310484476, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9786, "null_sd": 1.94, "v": 24.05, "rv_gaia": 23.76, "ew_limit_ma": 1.445}, {"star": "2376087581593256448", "z": [0.77, 0.62, -8.86, -0.61, 0.61, 2.2, -2.15, 0.6, 0.86], "ew_ma": [0.03, 0.04, -0.82, -0.07, 0.04, 0.21, -0.34, 0.04, 0.05], "z_comb": -0.48, "p": 0.43577821108944553, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.38, "v": -9.55, "rv_gaia": -10.26, "ew_limit_ma": 0.397}, {"star": "5760701787150565888", "z": [0.36, -0.15, -1.8, 1.33, -0.46, -5.02, 2.17, 0.35, 1.8], "ew_ma": [0.02, -0.01, -0.16, 0.15, -0.04, -0.64, 0.48, 0.02, 0.14], "z_comb": -0.93, "p": 0.43812809359532023, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.25, "v": 32.65, "rv_gaia": 31.99, "ew_limit_ma": 0.485}, {"star": "6166183842771027328", "z": [4.05, -1.68, -1.48, -0.12, -0.53, -4.98, -0.84, -2.13, 3.21], "ew_ma": [0.19, -0.09, -0.12, -0.01, -0.03, -0.24, -0.05, -0.1, 0.2], "z_comb": -0.36, "p": 0.4764761761911904, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 3.33, "v": -16.75, "rv_gaia": -17.46, "ew_limit_ma": 0.362}, {"star": "6501182220888038784", "z": [-1.25, 3.3, -2.23, -3.95, -2.16, 2.14, 0.54, -1.45, 1.8], "ew_ma": [-0.13, 0.35, -0.42, -0.54, -0.32, 0.29, 0.1, -0.13, 0.2], "z_comb": 0.06, "p": 0.47877606119694016, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9984, "null_sd": 2.27, "v": 23.95, "rv_gaia": 23.28, "ew_limit_ma": 0.586}, {"star": "4048636941542753152", "z": [-0.57, 1.62, 1.72, 1.92, 1.62, -7.76, 2.69, 0.24, -0.07], "ew_ma": [-0.05, 0.18, 0.22, 0.25, 0.19, -0.83, 0.62, 0.03, -0.01], "z_comb": 0.03, "p": 0.5002249887505624, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9978, "null_sd": 3.0, "v": 22.15, "rv_gaia": 21.37, "ew_limit_ma": 0.693}, {"star": "4341501106288171008", "z": [-1.58, -0.74, 0.43, 1.24, 3.63, 0.9, -0.29, 0.69, -1.27], "ew_ma": [-0.14, -0.07, 0.1, 0.19, 0.45, 0.09, -0.07, 0.08, -0.14], "z_comb": 0.04, "p": 0.5002249887505624, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9976, "null_sd": 3.18, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 0.915}, {"star": "5731252295913584768", "z": [-2.79, 0.99, -2.61, -2.07, -0.8, 6.51, 1.97, -1.01, 0.59], "ew_ma": [-0.17, 0.08, -0.51, -0.32, -0.08, 0.56, 0.38, -0.1, 0.08], "z_comb": -0.34, "p": 0.5018249087545623, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9968, "null_sd": 4.19, "v": 67.35, "rv_gaia": 66.88, "ew_limit_ma": 0.941}, {"star": "6786890622306367872", "z": [0.12, -2.42, 6.39, -0.78, -1.94, 4.09, -1.51, -1.26, -2.33], "ew_ma": [0.01, -0.29, 1.01, -0.09, -0.25, 0.51, -0.29, -0.16, -0.25], "z_comb": -0.22, "p": 0.5065746712664366, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9992, "null_sd": 1.73, "v": -28.75, "rv_gaia": -29.46, "ew_limit_ma": 0.446}, {"star": "3835743693290897152", "z": [1.79, -0.64, -0.05, -3.45, -1.19, 1.94, -0.62, -1.55, 1.16], "ew_ma": [0.09, -0.03, -0.0, -0.25, -0.06, 0.09, -0.06, -0.07, 0.08], "z_comb": 0.02, "p": 0.5174741262936853, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.33, "v": -17.1, "rv_gaia": -17.81, "ew_limit_ma": 0.223}, {"star": "4079684229322231040", "z": [2.77, 1.07, -2.18, -0.2, -2.46, -5.07, -2.51, -0.93, 2.16], "ew_ma": [0.08, 0.04, -0.13, -0.01, -0.08, -0.23, -0.17, -0.03, 0.08], "z_comb": -0.3, "p": 0.5241737913104345, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.93, "v": 37.75, "rv_gaia": 37.03, "ew_limit_ma": 0.329}, {"star": "3538141457982396928", "z": [-0.84, 0.14, -0.37, -2.27, 2.45, 4.64, 0.15, -1.44, -1.75], "ew_ma": [-0.04, 0.01, -0.03, -0.18, 0.14, 0.25, 0.01, -0.08, -0.12], "z_comb": 0.47, "p": 0.528473576321184, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.64, "v": 4.8, "rv_gaia": 4.25, "ew_limit_ma": 0.305}, {"star": "1212385193677160832", "z": [-3.04, -1.46, 8.03, 3.26, -1.11, 3.12, -2.53, 2.16, -0.89], "ew_ma": [-0.28, -0.17, 1.32, 0.64, -0.15, 0.45, -0.69, 0.21, -0.1], "z_comb": 0.24, "p": 0.5345732713364332, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.84, "v": -38.2, "rv_gaia": -38.94, "ew_limit_ma": 0.996}, {"star": "5381537023379295232", "z": [-1.76, 3.5, -9.06, -3.14, -0.28, 1.64, 1.03, -0.97, 7.65], "ew_ma": [-0.06, 0.09, -0.68, -0.2, -0.01, 0.08, 0.08, -0.02, 0.25], "z_comb": -0.1, "p": 0.5502224888755562, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 2.76, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 0.185}, {"star": "5287961677550103424", "z": [0.2, -0.95, 5.37, 1.7, -0.2, -4.42, 2.79, 0.44, -0.69], "ew_ma": [0.01, -0.07, 0.74, 0.15, -0.01, -0.29, 0.42, 0.03, -0.06], "z_comb": 0.06, "p": 0.552072396380181, "n_lines": 9, "n_spectra": 4, "twin_r": 0.999, "null_sd": 3.08, "v": 43.15, "rv_gaia": 42.58, "ew_limit_ma": 0.572}, {"star": "2835207319109249920", "z": [4.84, -3.33, 2.73, -0.61, -2.24, 2.02, -0.73, -2.24, -1.39], "ew_ma": [0.23, -0.18, 0.28, -0.04, -0.16, 0.09, -0.12, -0.11, -0.16], "z_comb": 0.71, "p": 0.5555222238888056, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.19, "v": -32.55, "rv_gaia": -33.33, "ew_limit_ma": 0.431}, {"star": "5461620846141553024", "z": [-2.89, 0.08, -2.56, 0.5, 2.26, 6.81, 0.99, -1.49, -2.04], "ew_ma": [-0.1, 0.0, -0.25, 0.03, 0.09, 0.29, 0.08, -0.06, -0.09], "z_comb": -0.03, "p": 0.5733213339333033, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.78, "v": 27.6, "rv_gaia": 26.94, "ew_limit_ma": 0.251}, {"star": "5951165616611763456", "z": [-2.55, -2.36, 4.29, -0.13, -1.04, 6.14, 3.91, 0.4, 3.18], "ew_ma": [-0.15, -0.09, 0.42, -0.01, -0.08, 0.41, 0.54, 0.02, 0.19], "z_comb": 0.29, "p": 0.6031198440077996, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.1, "v": 26.5, "rv_gaia": 25.96, "ew_limit_ma": 0.397}, {"star": "3975129194660883328", "z": [-1.09, 3.6, 0.04, -0.44, -2.19, -0.76, -1.95, 2.24, -1.28], "ew_ma": [-0.21, 0.61, 0.01, -0.11, -0.37, -0.15, -0.5, 0.4, -0.2], "z_comb": 0.57, "p": 0.6662166891655418, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 1.48, "v": 6.75, "rv_gaia": 5.97, "ew_limit_ma": 0.657}, {"star": "3574377616021489024", "z": [2.23, -1.38, 0.56, 2.83, -0.91, -1.43, -0.09, 2.2, -1.07], "ew_ma": [0.24, -0.14, 0.09, 0.36, -0.09, -0.12, -0.02, 0.22, -0.1], "z_comb": 0.72, "p": 0.6706664666766662, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 1.67, "v": 2.8, "rv_gaia": 1.88, "ew_limit_ma": 0.451}, {"star": "5266722205277801984", "z": [-0.4, 3.2, -2.71, 1.47, 4.73, -3.38, -3.78, -0.87, -0.16], "ew_ma": [-0.02, 0.17, -0.19, 0.11, 0.23, -0.16, -0.52, -0.05, -0.01], "z_comb": 1.22, "p": 0.6753662316884156, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.23, "v": 18.25, "rv_gaia": 17.57, "ew_limit_ma": 0.357}, {"star": "5493588665684618752", "z": [3.39, -0.64, -2.25, -1.34, -0.44, 1.78, -0.52, 0.89, 0.82], "ew_ma": [0.17, -0.03, -0.26, -0.1, -0.03, 0.12, -0.12, 0.04, 0.06], "z_comb": 1.37, "p": 0.6863156842157893, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.73, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 0.427}, {"star": "2966316109264052096", "z": [6.22, -0.21, 2.41, -1.7, 2.49, -8.19, -3.91, -1.18, 0.17], "ew_ma": [0.9, -0.03, 0.7, -0.39, 0.49, -1.63, -1.24, -0.24, 0.04], "z_comb": 1.55, "p": 0.7184640767961602, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9958, "null_sd": 2.97, "v": 43.05, "rv_gaia": 42.46, "ew_limit_ma": 1.36}, {"star": "2554032474712538880", "z": [-0.5, 2.3, -1.94, -1.44, 1.69, 2.52, -2.24, -2.5, 1.16], "ew_ma": [-0.04, 0.24, -0.25, -0.17, 0.17, 0.23, -0.37, -0.26, 0.1], "z_comb": 1.11, "p": 0.719614019299035, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.26, "v": 19.95, "rv_gaia": 19.4, "ew_limit_ma": 0.781}, {"star": "3975223065466473216", "z": [-0.04, 0.62, 1.56, 0.15, -1.4, -0.94, -0.57, 2.25, 1.39], "ew_ma": [-0.01, 0.11, 0.33, 0.03, -0.25, -0.14, -0.16, 0.44, 0.19], "z_comb": 0.53, "p": 0.7206139693015349, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9969, "null_sd": 1.49, "v": 6.45, "rv_gaia": 5.8, "ew_limit_ma": 0.692}, {"star": "5726982995343100928", "z": [3.53, -2.39, -0.09, 2.93, -0.42, -3.5, 4.57, 1.21, 3.8], "ew_ma": [0.13, -0.08, -0.01, 0.13, -0.02, -0.16, 0.41, 0.04, 0.18], "z_comb": 1.38, "p": 0.7219139043047847, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.66, "v": 30.7, "rv_gaia": 30.09, "ew_limit_ma": 0.284}, {"star": "3654496279558010624", "z": [6.0, 0.68, -4.1, -2.97, 0.75, -0.36, -0.87, -2.68, -1.37], "ew_ma": [0.42, 0.04, -0.49, -0.34, 0.08, -0.03, -0.17, -0.22, -0.14], "z_comb": 1.86, "p": 0.7353632318384081, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.36, "v": -18.55, "rv_gaia": -19.21, "ew_limit_ma": 0.761}, {"star": "5266348577487273344", "z": [4.05, 1.61, -7.89, -1.01, -1.56, 4.85, 1.76, -0.6, -1.9], "ew_ma": [0.18, 0.08, -0.65, -0.07, -0.07, 0.31, 0.18, -0.04, -0.15], "z_comb": 2.19, "p": 0.7458627068646567, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.68, "v": 14.3, "rv_gaia": 13.6, "ew_limit_ma": 0.751}, {"star": "6489771832811810432", "z": [1.12, 0.96, 2.7, -3.25, 2.06, 2.94, -2.16, -0.18, -0.63], "ew_ma": [0.13, 0.17, 0.41, -0.79, 0.38, 0.49, -0.67, -0.04, -0.11], "z_comb": 2.09, "p": 0.7515124243787811, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9968, "null_sd": 4.4, "v": -30.15, "rv_gaia": -31.05, "ew_limit_ma": 2.122}, {"star": "5663558453071724288", "z": [5.23, -1.86, 2.33, -1.4, -1.13, 0.2, 2.87, -1.95, 1.13], "ew_ma": [0.31, -0.14, 0.28, -0.16, -0.07, 0.02, 0.44, -0.16, 0.1], "z_comb": 2.13, "p": 0.7570121493925304, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9946, "null_sd": 3.55, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 0.699}, {"star": "648998734141447296", "z": [-0.97, 2.09, -0.17, -0.44, 0.85, 2.67, -0.49, 0.74, -0.41], "ew_ma": [-0.12, 0.29, -0.03, -0.07, 0.12, 0.45, -0.12, 0.08, -0.05], "z_comb": 1.48, "p": 0.7635118244087795, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.21, "v": 21.15, "rv_gaia": 20.52, "ew_limit_ma": 0.964}, {"star": "6128366415218881536", "z": [1.24, -0.07, -3.16, 0.79, -0.38, 3.81, 3.41, 1.83, -1.06], "ew_ma": [0.05, -0.0, -0.23, 0.05, -0.03, 0.2, 0.47, 0.12, -0.09], "z_comb": 1.55, "p": 0.7712114394280286, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 2.97, "v": 31.3, "rv_gaia": 30.47, "ew_limit_ma": 0.488}, {"star": "6564091190988411520", "z": [3.41, 0.43, 1.02, 1.17, 0.33, -4.46, -1.79, -1.54, 2.35], "ew_ma": [0.12, 0.01, 0.07, 0.05, 0.01, -0.16, -0.19, -0.05, 0.09], "z_comb": 1.59, "p": 0.7713614319284036, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.88, "v": -6.85, "rv_gaia": -7.55, "ew_limit_ma": 0.237}, {"star": "5452492082132835840", "z": [2.01, 1.03, 3.5, -0.26, 0.45, -1.02, -0.88, -0.59, -1.84], "ew_ma": [0.13, 0.06, 0.4, -0.02, 0.03, -0.09, -0.1, -0.04, -0.1], "z_comb": 1.91, "p": 0.7811609419529023, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.19, "v": 13.5, "rv_gaia": 12.83, "ew_limit_ma": 0.357}, {"star": "627699888238838272", "z": [3.49, -1.27, 1.59, 1.74, -1.67, -0.76, 1.43, 0.07, 1.46], "ew_ma": [0.3, -0.1, 0.2, 0.19, -0.14, -0.08, 0.2, 0.01, 0.13], "z_comb": 1.76, "p": 0.7945602719864007, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 1.99, "v": 31.15, "rv_gaia": 30.59, "ew_limit_ma": 0.419}, {"star": "3250489115709122560", "z": [5.06, -0.33, 5.75, -1.76, -1.39, 5.05, 0.03, -2.35, -0.76], "ew_ma": [0.53, -0.06, 2.21, -0.59, -0.42, 1.09, 0.01, -0.61, -0.22], "z_comb": 4.25, "p": 0.7962101894905255, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9721, "null_sd": 11.7, "v": 121.15, "rv_gaia": 120.58, "ew_limit_ma": 11.137}, {"star": "2391838429257482496", "z": [2.09, 1.87, -3.78, -0.23, -0.37, 1.13, 1.87, 0.56, 0.25], "ew_ma": [0.08, 0.07, -0.37, -0.01, -0.02, 0.05, 0.31, 0.02, 0.01], "z_comb": 2.01, "p": 0.8062596870156492, "n_lines": 9, "n_spectra": 4, "twin_r": 0.999, "null_sd": 2.38, "v": 12.85, "rv_gaia": 12.3, "ew_limit_ma": 0.3}, {"star": "6141742283401003264", "z": [3.99, 0.65, -3.83, -1.25, -0.52, 5.15, 2.12, 1.62, -2.11], "ew_ma": [0.22, 0.06, -0.56, -0.19, -0.06, 0.57, 0.43, 0.16, -0.16], "z_comb": 3.02, "p": 0.8194590270486476, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.31, "v": -12.3, "rv_gaia": -13.03, "ew_limit_ma": 1.365}, {"star": "5669349344592951936", "z": [1.2, -0.3, 0.3, 0.78, 0.03, 5.99, 1.06, -0.54, 0.6], "ew_ma": [0.1, -0.03, 0.06, 0.09, 0.0, 0.65, 0.18, -0.06, 0.07], "z_comb": 2.54, "p": 0.823858807059647, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.99, "v": 35.55, "rv_gaia": 35.32, "ew_limit_ma": 0.903}, {"star": "4623036865373793408", "z": [-0.06, 2.02, 1.33, 0.99, 1.41, 0.7, 1.01, 0.32, 1.22], "ew_ma": [-0.0, 0.09, 0.06, 0.07, 0.08, 0.04, 0.11, 0.01, 0.06], "z_comb": 2.58, "p": 0.8520073996300185, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9994, "null_sd": 2.73, "v": 11.55, "rv_gaia": 10.71, "ew_limit_ma": 0.315}, {"star": "5579783574073770112", "z": [2.32, -1.59, -0.23, -0.16, 0.18, 3.69, 5.27, 3.0, 0.51], "ew_ma": [0.19, -0.15, -0.04, -0.02, 0.02, 0.49, 1.63, 0.34, 0.06], "z_comb": 2.35, "p": 0.8604069796510174, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.23, "v": 37.45, "rv_gaia": 36.91, "ew_limit_ma": 1.036}, {"star": "5902750168276592256", "z": [1.43, -1.61, 16.06, 2.19, -1.26, 2.78, -1.23, 0.33, -1.2], "ew_ma": [0.06, -0.07, 2.75, 0.21, -0.12, 0.15, -0.13, 0.02, -0.06], "z_comb": 4.01, "p": 0.8668566571671417, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 3.36, "v": -68.1, "rv_gaia": -68.78, "ew_limit_ma": 0.479}, {"star": "6180035765135232128", "z": [-1.19, -0.07, 11.87, 1.42, -0.8, 2.89, 3.35, 2.45, -0.91], "ew_ma": [-0.07, -0.0, 1.62, 0.15, -0.04, 0.21, 0.54, 0.12, -0.08], "z_comb": 3.23, "p": 0.8683065846707665, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.16, "v": 65.7, "rv_gaia": 64.94, "ew_limit_ma": 0.59}, {"star": "1212385193677161088", "z": [-0.87, 2.46, 5.21, 4.41, -2.15, -0.27, -0.09, -0.21, 0.36], "ew_ma": [-0.09, 0.25, 0.85, 0.77, -0.29, -0.03, -0.02, -0.02, 0.05], "z_comb": 2.5, "p": 0.8786560671966401, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9972, "null_sd": 2.27, "v": -38.2, "rv_gaia": -38.72, "ew_limit_ma": 0.763}, {"star": "6569895822110445440", "z": [1.02, 2.63, -2.98, -0.33, -0.71, -0.04, 2.24, 0.4, 2.67], "ew_ma": [0.08, 0.23, -0.37, -0.03, -0.07, -0.0, 0.32, 0.04, 0.24], "z_comb": 1.95, "p": 0.8809559522023899, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9992, "null_sd": 1.8, "v": -18.4, "rv_gaia": -19.21, "ew_limit_ma": 0.504}, {"star": "6524024506237594368", "z": [6.32, 2.01, -10.21, -1.74, -0.2, 6.64, 1.19, 1.64, -0.2], "ew_ma": [0.32, 0.12, -1.05, -0.14, -0.01, 0.5, 0.17, 0.11, -0.01], "z_comb": 4.4, "p": 0.8916554172291385, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 4.34, "v": 33.15, "rv_gaia": 32.4, "ew_limit_ma": 0.999}, {"star": "6854626246593473792", "z": [4.03, -2.3, 12.77, 2.77, -2.7, -0.76, 0.5, -0.83, -0.54], "ew_ma": [0.3, -0.16, 2.23, 0.34, -0.23, -0.07, 0.14, -0.05, -0.05], "z_comb": 3.34, "p": 0.911504424778761, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.58, "v": -41.4, "rv_gaia": -42.09, "ew_limit_ma": 0.67}, {"star": "2533723670313663872", "z": [-0.47, 1.31, 2.28, 1.92, 3.67, 0.31, -1.88, 0.56, 2.38], "ew_ma": [-0.05, 0.16, 0.3, 0.28, 0.46, 0.04, -0.39, 0.07, 0.25], "z_comb": 2.69, "p": 0.9148042597870106, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.58, "v": 17.7, "rv_gaia": 16.81, "ew_limit_ma": 2.1}, {"star": "4367026303085396352", "z": [4.51, -0.63, 7.82, 5.56, 0.42, -3.02, -1.56, -0.49, -2.89], "ew_ma": [0.22, -0.03, 1.14, 0.42, 0.03, -0.14, -0.17, -0.02, -0.19], "z_comb": 3.87, "p": 0.9321033948302585, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9986, "null_sd": 2.6, "v": -35.2, "rv_gaia": -35.94, "ew_limit_ma": 0.437}, {"star": "3646061719703116032", "z": [3.7, -1.02, 8.6, 0.66, -3.51, 2.17, 3.96, 0.91, -2.46], "ew_ma": [0.25, -0.05, 1.45, 0.05, -0.17, 0.13, 0.49, 0.04, -0.15], "z_comb": 3.42, "p": 0.9393030348482576, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.57, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.484}, {"star": "3584074376569429248", "z": [1.99, 1.4, -0.13, -1.9, 0.41, 2.4, 1.86, -0.46, 1.18], "ew_ma": [0.31, 0.24, -0.03, -0.4, 0.08, 0.45, 0.56, -0.08, 0.22], "z_comb": 2.63, "p": 0.9445527723613819, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9964, "null_sd": 1.67, "v": 21.5, "rv_gaia": 20.73, "ew_limit_ma": 1.037}, {"star": "2964794041574370560", "z": [5.2, 0.51, 0.16, -0.47, 0.48, 1.27, -0.29, -0.87, 0.47], "ew_ma": [0.13, 0.01, 0.01, -0.02, 0.02, 0.06, -0.02, -0.02, 0.01], "z_comb": 3.7, "p": 0.9537023148842558, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.46, "v": 29.7, "rv_gaia": 29.0, "ew_limit_ma": 0.243}, {"star": "6692069568458919040", "z": [5.74, 1.85, -2.84, -1.19, -0.29, 4.35, -1.07, 0.17, -2.97], "ew_ma": [0.18, 0.07, -0.13, -0.06, -0.01, 0.18, -0.07, 0.01, -0.13], "z_comb": 4.21, "p": 0.9605519724013799, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9974, "null_sd": 2.56, "v": 15.8, "rv_gaia": 15.36, "ew_limit_ma": 0.346}, {"star": "3775795982881589376", "z": [5.95, 0.02, -3.31, 1.19, -1.82, 5.72, 8.23, 0.15, 0.41], "ew_ma": [0.44, 0.0, -0.31, 0.12, -0.1, 0.49, 2.18, 0.01, 0.03], "z_comb": 5.09, "p": 0.9657017149142543, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.93, "v": 30.5, "rv_gaia": 29.93, "ew_limit_ma": 0.96}, {"star": "3101382419728401408", "z": [4.66, -1.53, 9.74, 1.58, -0.1, 0.71, 5.53, 1.88, 0.05], "ew_ma": [0.27, -0.12, 1.76, 0.13, -0.01, 0.05, 1.06, 0.12, 0.01], "z_comb": 5.24, "p": 0.9771511424428778, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.34, "v": 54.45, "rv_gaia": 53.99, "ew_limit_ma": 0.561}, {"star": "5427207918907843072", "z": [2.62, -2.16, 23.44, 4.01, 0.67, -5.27, 2.53, 3.74, -0.59], "ew_ma": [0.19, -0.14, 2.99, 0.33, 0.03, -0.34, 0.66, 0.2, -0.05], "z_comb": 5.55, "p": 0.9800009999500024, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.69, "v": 65.7, "rv_gaia": 65.01, "ew_limit_ma": 0.657}, {"star": "5341673851394297600", "z": [3.5, -2.99, 11.23, 2.87, 2.23, 2.08, 6.21, 2.97, -2.32], "ew_ma": [0.39, -0.39, 3.32, 0.58, 0.25, 0.28, 2.27, 0.44, -0.38], "z_comb": 5.12, "p": 0.9830508474576272, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 2.87, "v": 50.2, "rv_gaia": 49.52, "ew_limit_ma": 1.589}, {"star": "2343647384368388608", "z": [6.36, -1.44, 15.57, 2.95, 0.22, 0.37, 6.36, 1.79, -1.55], "ew_ma": [0.32, -0.09, 1.73, 0.23, 0.01, 0.02, 1.12, 0.1, -0.11], "z_comb": 7.7, "p": 0.9892005399730014, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9989, "null_sd": 2.66, "v": 57.4, "rv_gaia": 56.73, "ew_limit_ma": 0.58}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Am_FEROS.json b/papers/short_lived_elements/data/element_Am_FEROS.json new file mode 100644 index 0000000000000000000000000000000000000000..7df3938edfeed03fff6e19dae865e0e4a23288ef --- /dev/null +++ b/papers/short_lived_elements/data/element_Am_FEROS.json @@ -0,0 +1 @@ +{"lines": [[4509.45, 0.9712990131287732], [4575.59, 1.0], [4324.57, 0.355624487734312], [4441.36, 0.3750919549679658], [4699.7, 0.41999688359800125], [4872.22, 0.45139794335478456], [4188.12, 0.1671644906080934], [4593.31, 0.20107464428475946], [5020.96, 0.24025880836889185]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "4634528720388462592", "z": [-7.0, -4.14, -8.98, -1.71, -0.33, 4.3, -0.2, 3.88, -3.07], "ew_ma": [-2.45, -1.15, -2.76, -0.77, -0.29, 1.52, -0.11, 1.07, -0.88], "z_comb": -7.86, "p": 0.01344932753362332, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9926, "null_sd": 4.25, "v": -5.55, "rv_gaia": -6.07, "ew_limit_ma": 1.014}, {"star": "4867596937475715968", "z": [-7.87, -1.98, -7.75, -2.36, -2.47, 4.89, -3.28, 2.0, -2.21], "ew_ma": [-2.58, -1.19, -3.48, -1.01, -1.77, 2.0, -2.95, 1.47, -0.84], "z_comb": -7.75, "p": 0.0215989200539973, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9757, "null_sd": 3.96, "v": -9.15, "rv_gaia": -9.94, "ew_limit_ma": 1.615}, {"star": "3650718804281798912", "z": [-6.01, -4.86, -3.84, 0.9, 0.29, -1.68, -5.31, 0.37, -2.39], "ew_ma": [-3.19, -2.01, -2.22, 0.43, 0.64, -0.66, -5.78, 0.13, -0.86], "z_comb": -8.35, "p": 0.024098795060246987, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9864, "null_sd": 5.31, "v": -12.2, "rv_gaia": -12.52, "ew_limit_ma": 2.249}, {"star": "3946438125929224320", "z": [-2.73, -2.78, 1.59, 1.15, -1.57, -10.62, -0.73, -1.99, 0.92], "ew_ma": [-0.43, -0.27, 0.24, 0.15, -0.8, -1.1, -0.16, -0.18, 0.1], "z_comb": -6.18, "p": 0.030148492575371232, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.32, "v": 2.25, "rv_gaia": 1.76, "ew_limit_ma": 0.357}, {"star": "6489909443564308224", "z": [-2.4, -1.06, -6.12, -0.19, -2.26, -7.39, -1.73, -4.83, -1.25], "ew_ma": [-0.25, -0.13, -1.07, -0.03, -0.37, -1.01, -0.33, -0.52, -0.15], "z_comb": -6.96, "p": 0.03094845257737113, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 3.64, "v": 0.75, "rv_gaia": 0.63, "ew_limit_ma": 0.473}, {"star": "5793182631952977920", "z": [-8.4, -4.39, 0.96, -0.91, 2.04, -0.16, 0.83, -1.17, 0.39], "ew_ma": [-1.3, -0.75, 0.16, -0.24, 2.03, -0.03, 0.23, -0.18, 0.06], "z_comb": -7.14, "p": 0.047097645117744114, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9938, "null_sd": 4.2, "v": -2.65, "rv_gaia": -3.17, "ew_limit_ma": 1.105}, {"star": "6018047019138644480", "z": [-2.76, -2.98, 3.14, 3.38, -1.56, -8.73, -8.42, 0.51, -0.02], "ew_ma": [-0.4, -0.48, 0.78, 0.66, -1.03, -0.95, -2.97, 0.07, -0.0], "z_comb": -5.57, "p": 0.06469676516174191, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.12, "v": 13.35, "rv_gaia": 12.85, "ew_limit_ma": 1.544}, {"star": "4763906879239461632", "z": [-2.81, -3.01, 1.93, -0.44, 0.36, -1.25, -7.36, -0.39, -4.13], "ew_ma": [-0.38, -0.44, 0.42, -0.09, 0.09, -0.2, -1.47, -0.06, -0.73], "z_comb": -4.81, "p": 0.08774561271936403, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9966, "null_sd": 4.45, "v": -1.05, "rv_gaia": -1.45, "ew_limit_ma": 1.194}, {"star": "6796392812250051712", "z": [-3.88, 1.18, -9.36, -1.41, -2.04, -3.56, -2.14, -1.1, -0.53], "ew_ma": [-0.79, 0.17, -3.55, -0.42, -1.34, -0.67, -1.21, -0.17, -0.1], "z_comb": -5.83, "p": 0.11259437028148593, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9934, "null_sd": 33.83, "v": 0.15, "rv_gaia": -0.34, "ew_limit_ma": 1.273}, {"star": "5945941905576552064", "z": [-4.56, -2.35, -13.54, -1.98, -1.68, 9.36, 2.84, 3.71, 3.22], "ew_ma": [-0.6, -0.29, -2.02, -0.35, -0.59, 1.06, 0.72, 0.48, 0.39], "z_comb": -4.14, "p": 0.1335933203339833, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 8.49, "v": -8.75, "rv_gaia": -9.54, "ew_limit_ma": 0.877}, {"star": "6698960688866464768", "z": [0.18, 0.38, -4.21, -8.58, -2.07, -3.26, -9.95, -10.27, -1.94], "ew_ma": [0.07, 0.25, -3.77, -5.32, -1.36, -1.83, -8.57, -6.33, -1.41], "z_comb": -6.49, "p": 0.13954302284885756, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9144, "null_sd": 5.41, "v": -3.5, "rv_gaia": -7.85, "ew_limit_ma": 4.972}, {"star": "6150200345317455232", "z": [-3.41, -1.17, -4.23, -0.75, 2.92, 1.96, 0.0, -2.62, -2.02], "ew_ma": [-0.72, -0.25, -1.0, -0.21, 2.74, 0.44, 0.0, -0.61, -0.5], "z_comb": -3.14, "p": 0.15609219539023048, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9955, "null_sd": 3.97, "v": -6.45, "rv_gaia": -7.11, "ew_limit_ma": 1.379}, {"star": "3330062833797919744", "z": [0.86, -7.3, 1.52, -3.56, -0.21, -0.48, 2.36, -1.92, 0.58], "ew_ma": [0.12, -0.98, 0.29, -0.55, -0.09, -0.07, 0.54, -0.24, 0.07], "z_comb": -4.5, "p": 0.16054197290135494, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 6.7, "v": 6.35, "rv_gaia": 5.83, "ew_limit_ma": 5.023}, {"star": "6427244702486210816", "z": [2.9, -2.41, -7.6, 1.01, -3.75, -0.55, -6.68, -1.73, -0.8], "ew_ma": [0.52, -0.35, -1.38, 0.23, -3.21, -0.1, -1.75, -0.28, -0.12], "z_comb": -3.28, "p": 0.18344082795860206, "n_lines": 9, "n_spectra": 2, "twin_r": 0.994, "null_sd": 3.69, "v": -10.1, "rv_gaia": -10.76, "ew_limit_ma": 1.174}, {"star": "4423865487962417024", "z": [-5.58, 0.9, -3.38, -2.48, -1.09, 1.87, -6.78, 0.64, 4.11], "ew_ma": [-0.93, 0.15, -0.78, -0.55, -0.33, 0.3, -1.78, 0.12, 0.8], "z_comb": -3.81, "p": 0.19584020798960053, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.25, "v": 19.55, "rv_gaia": 18.95, "ew_limit_ma": 1.393}, {"star": "6153706477443518976", "z": [2.7, -3.28, 3.26, -2.32, -4.54, -3.43, -2.1, -1.33, -2.86], "ew_ma": [0.49, -0.48, 0.96, -0.51, -5.02, -0.67, -0.79, -0.23, -0.45], "z_comb": -3.11, "p": 0.19694015299235038, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9911, "null_sd": 4.74, "v": -25.8, "rv_gaia": -26.31, "ew_limit_ma": 0.809}, {"star": "4745373133284418816", "z": [0.23, -2.19, -8.73, -0.73, 2.62, -6.77, -1.81, -0.65, 3.7], "ew_ma": [0.02, -0.61, -1.46, -0.1, 0.59, -0.93, -0.46, -0.19, 0.65], "z_comb": -4.15, "p": 0.20188990550472477, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9923, "null_sd": 4.56, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 1.19}, {"star": "6879764552737781888", "z": [1.31, -3.25, -8.79, -1.87, 0.88, 1.55, 0.24, 2.72, 0.28], "ew_ma": [0.36, -0.81, -2.57, -0.49, 1.0, 0.38, 0.09, 0.63, 0.06], "z_comb": -2.48, "p": 0.20658967051647417, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.79, "v": 27.4, "rv_gaia": 27.2, "ew_limit_ma": 1.781}, {"star": "5640565607657897728", "z": [-0.65, 3.34, -6.22, -0.09, -1.27, -4.22, -8.88, -3.95, -3.59], "ew_ma": [-0.15, 0.65, -1.75, -0.02, -0.66, -0.89, -3.32, -0.82, -0.85], "z_comb": -3.11, "p": 0.21058947052647367, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9894, "null_sd": 4.98, "v": 15.15, "rv_gaia": 14.67, "ew_limit_ma": 4.696}, {"star": "6629790584164277376", "z": [1.24, -5.61, 2.02, 2.72, -3.44, -2.67, -5.3, -0.31, 0.18], "ew_ma": [0.16, -0.83, 0.35, 0.49, -1.02, -0.38, -0.97, -0.04, 0.03], "z_comb": -3.78, "p": 0.21518924053797311, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9971, "null_sd": 24.24, "v": 0.75, "rv_gaia": 0.5, "ew_limit_ma": 3.438}, {"star": "3480332916165099904", "z": [0.12, 0.65, -9.71, -3.51, 2.86, -2.63, -5.22, -5.39, 3.11], "ew_ma": [0.02, 0.1, -2.27, -0.8, 1.74, -0.45, -1.38, -0.76, 0.44], "z_comb": -3.15, "p": 0.22203889805509724, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9973, "null_sd": 4.36, "v": 14.45, "rv_gaia": 14.0, "ew_limit_ma": 1.298}, {"star": "2473608009504466688", "z": [-0.28, -1.67, -2.38, -2.75, 0.78, -4.61, -5.45, 2.18, 2.71], "ew_ma": [-0.05, -0.47, -0.81, -0.48, 0.24, -1.05, -1.79, 1.08, 0.67], "z_comb": -3.27, "p": 0.22703864806759663, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9839, "null_sd": 5.51, "v": 8.7, "rv_gaia": 8.21, "ew_limit_ma": 6.524}, {"star": "6802426038708609536", "z": [4.1, 1.49, -8.97, -2.98, -2.41, -7.59, 0.36, -6.16, -1.59], "ew_ma": [0.45, 0.16, -1.39, -0.49, -0.31, -0.91, 0.07, -0.55, -0.21], "z_comb": -2.94, "p": 0.24068796560171993, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.62, "v": -15.95, "rv_gaia": -16.09, "ew_limit_ma": 0.84}, {"star": "5760701787150565888", "z": [2.03, 0.01, -14.78, -4.24, 0.01, -1.79, 1.47, -0.83, 3.14], "ew_ma": [0.27, 0.0, -3.67, -0.61, 0.0, -0.23, 0.39, -0.11, 0.49], "z_comb": -2.93, "p": 0.24768761561921904, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.18, "v": 32.5, "rv_gaia": 31.99, "ew_limit_ma": 0.849}, {"star": "3639760521643499776", "z": [1.44, 1.5, -3.88, -3.74, 0.21, -5.2, -6.01, -4.06, -2.32], "ew_ma": [0.25, 0.24, -1.15, -0.97, 0.05, -0.65, -1.88, -0.78, -0.35], "z_comb": -2.74, "p": 0.2600369981500925, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 4.03, "v": -11.95, "rv_gaia": -12.39, "ew_limit_ma": 1.318}, {"star": "4708607629114652032", "z": [-1.95, 2.88, -6.92, -2.72, -3.68, -1.26, 4.92, -4.65, 1.42], "ew_ma": [-0.26, 0.37, -1.63, -0.58, -1.8, -0.16, 1.6, -0.57, 0.19], "z_comb": -2.65, "p": 0.27638618069096543, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.73, "v": 95.75, "rv_gaia": 95.23, "ew_limit_ma": 0.917}, {"star": "3532823773073745536", "z": [-5.55, -2.88, 6.12, -2.13, 2.06, 2.08, -2.92, 3.36, 3.39], "ew_ma": [-1.81, -0.67, 2.56, -1.08, 2.94, 0.75, -1.34, 1.04, 1.34], "z_comb": -2.48, "p": 0.2915354232288386, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9932, "null_sd": 6.04, "v": 40.5, "rv_gaia": 39.76, "ew_limit_ma": 5.298}, {"star": "5317114850417299584", "z": [3.51, -1.34, -6.8, -2.6, -1.4, -2.57, -1.29, -0.54, 1.64], "ew_ma": [0.51, -0.22, -1.51, -0.44, -0.37, -0.37, -0.32, -0.08, 0.24], "z_comb": -1.82, "p": 0.3062846857657117, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 3.63, "v": -5.9, "rv_gaia": -6.29, "ew_limit_ma": 1.027}, {"star": "2382711653818308224", "z": [1.13, -1.86, -2.79, 1.76, -0.09, -3.78, -2.18, 1.0, 1.42], "ew_ma": [0.49, -0.73, -1.42, 0.84, -0.08, -1.96, -1.06, 0.42, 0.72], "z_comb": -1.62, "p": 0.3318834058297085, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9787, "null_sd": 3.98, "v": 7.3, "rv_gaia": 6.41, "ew_limit_ma": 4.252}, {"star": "5452492082132835840", "z": [-2.81, -1.21, 0.39, 2.26, 5.34, -1.05, 2.14, -0.53, 0.11], "ew_ma": [-0.88, -0.4, 0.13, 0.78, 5.03, -0.35, 0.79, -0.16, 0.03], "z_comb": -0.55, "p": 0.3509824508774561, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9939, "null_sd": 3.02, "v": 13.4, "rv_gaia": 12.83, "ew_limit_ma": 2.205}, {"star": "2423493369021649920", "z": [-2.27, 1.35, -1.97, -3.36, 0.77, 2.5, 4.27, -2.58, 0.41], "ew_ma": [-0.51, 0.26, -0.57, -0.79, 0.59, 0.5, 1.25, -0.55, 0.09], "z_comb": -0.64, "p": 0.3629818509074546, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9933, "null_sd": 3.88, "v": -1.95, "rv_gaia": -2.55, "ew_limit_ma": 1.832}, {"star": "5559265690666327168", "z": [-3.84, -1.2, 5.1, 2.98, 2.54, -1.81, -6.26, 6.12, 1.81], "ew_ma": [-0.73, -0.18, 1.28, 0.9, 0.97, -0.38, -2.2, 1.12, 0.5], "z_comb": -0.69, "p": 0.3670316484175791, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9948, "null_sd": 4.65, "v": 89.1, "rv_gaia": 88.55, "ew_limit_ma": 2.179}, {"star": "3732539683617410816", "z": [-2.99, -2.78, 5.66, -0.18, -0.09, 2.45, -0.3, 0.61, -1.96], "ew_ma": [-0.6, -0.65, 2.57, -0.07, -0.04, 0.9, -0.13, 0.15, -0.68], "z_comb": -1.87, "p": 0.384080795960202, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9902, "null_sd": 3.9, "v": -26.95, "rv_gaia": -27.25, "ew_limit_ma": 1.917}, {"star": "5888394257280681856", "z": [-1.37, -1.62, -6.35, -0.48, 1.93, 6.85, -3.01, 5.27, -1.84], "ew_ma": [-0.95, -1.58, -8.45, -0.53, 2.38, 6.73, -6.7, 5.13, -1.85], "z_comb": -0.84, "p": 0.39058047097645116, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9791, "null_sd": 6.01, "v": -8.6, "rv_gaia": -8.77, "ew_limit_ma": 15.018}, {"star": "2790914111658905216", "z": [1.17, 0.27, 1.17, -1.95, -2.97, 0.36, -0.99, -0.67, -1.35], "ew_ma": [0.26, 0.05, 0.26, -0.46, -2.97, 0.07, -0.32, -0.11, -0.25], "z_comb": -0.38, "p": 0.3967301634918254, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9879, "null_sd": 5.56, "v": -23.0, "rv_gaia": -23.67, "ew_limit_ma": 1.391}, {"star": "3835867938104798848", "z": [2.88, -3.5, 3.45, -0.52, -2.11, -1.24, -3.85, 0.52, 2.24], "ew_ma": [0.53, -0.5, 0.87, -0.11, -1.68, -0.19, -1.1, 0.08, 0.36], "z_comb": -0.68, "p": 0.39978001099945004, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9926, "null_sd": 4.71, "v": -21.45, "rv_gaia": -21.84, "ew_limit_ma": 3.052}, {"star": "1772187382746856320", "z": [-3.41, 1.63, 1.3, 0.24, 3.16, -4.52, 0.88, -0.86, 0.47], "ew_ma": [-0.79, 0.38, 0.39, 0.06, 4.86, -1.34, 0.34, -0.17, 0.1], "z_comb": -1.06, "p": 0.39988000599970003, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9903, "null_sd": 5.72, "v": -16.75, "rv_gaia": -16.94, "ew_limit_ma": 1.642}, {"star": "4906784051581971200", "z": [0.7, 1.08, -3.75, 0.55, -3.24, -1.0, -1.83, -1.79, -1.43], "ew_ma": [0.12, 0.17, -0.7, 0.13, -0.85, -0.17, -0.62, -0.31, -0.35], "z_comb": -1.33, "p": 0.41567921603919805, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9957, "null_sd": 6.16, "v": 3.45, "rv_gaia": 2.92, "ew_limit_ma": 1.837}, {"star": "3789271459953459328", "z": [-5.0, 2.34, 6.94, 1.11, -3.38, 0.22, -5.59, -2.18, 4.27], "ew_ma": [-1.19, 0.43, 1.66, 0.51, -3.37, 0.07, -1.56, -0.38, 0.77], "z_comb": -0.79, "p": 0.42177891105444726, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9917, "null_sd": 5.75, "v": 19.0, "rv_gaia": 18.5, "ew_limit_ma": 8.463}, {"star": "2913411183149615744", "z": [-4.64, 1.22, 4.76, 1.6, -0.22, -0.69, 0.7, 1.63, 2.22], "ew_ma": [-0.74, 0.18, 0.89, 0.29, -0.12, -0.1, 0.15, 0.24, 0.33], "z_comb": -0.25, "p": 0.43157842107894606, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.36, "v": 22.4, "rv_gaia": 21.69, "ew_limit_ma": 1.136}, {"star": "2477815222028038272", "z": [-0.64, -1.09, -0.62, 2.18, -1.54, 4.05, -6.23, 1.11, -0.01], "ew_ma": [-0.48, -0.37, -0.32, 1.0, -2.94, 1.56, -3.46, 0.37, -0.01], "z_comb": -0.47, "p": 0.43497825108744564, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9819, "null_sd": 3.84, "v": 11.9, "rv_gaia": 11.46, "ew_limit_ma": 4.564}, {"star": "5291028181119851776", "z": [-1.08, 2.14, -6.02, -2.63, -1.24, 3.18, 1.21, -1.93, 0.6], "ew_ma": [-0.11, 0.26, -0.87, -0.47, -0.59, 0.43, 0.27, -0.21, 0.07], "z_comb": -0.7, "p": 0.4407279636018199, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.68, "v": 15.6, "rv_gaia": 15.01, "ew_limit_ma": 1.312}, {"star": "3256786534197166208", "z": [-2.39, 3.62, -4.76, 0.81, 1.78, 3.59, -4.3, -8.0, -0.96], "ew_ma": [-0.34, 0.78, -1.08, 0.17, 0.38, 0.64, -0.82, -1.67, -0.19], "z_comb": -0.17, "p": 0.45932703364831756, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9948, "null_sd": 3.72, "v": 18.1, "rv_gaia": 17.62, "ew_limit_ma": 1.197}, {"star": "3250489115709122560", "z": [0.28, -0.81, 14.05, -1.27, -3.1, -6.76, 0.69, -3.81, -2.6], "ew_ma": [0.07, -0.3, 7.6, -0.6, -1.91, -2.14, 0.39, -2.05, -0.8], "z_comb": -1.0, "p": 0.4677766111694415, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9765, "null_sd": 6.59, "v": 121.05, "rv_gaia": 120.58, "ew_limit_ma": 8.232}, {"star": "3269362645115584640", "z": [-0.73, -0.63, 0.88, 1.99, 2.43, -2.74, 4.86, 0.47, 0.18], "ew_ma": [-0.09, -0.09, 0.16, 0.33, 0.56, -0.31, 1.38, 0.07, 0.03], "z_comb": 0.27, "p": 0.480025998700065, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 3.58, "v": 19.45, "rv_gaia": 18.73, "ew_limit_ma": 1.177}, {"star": "1237090738916392704", "z": [3.67, 1.38, -0.48, 1.69, -0.97, -10.18, -6.64, -2.26, 0.58], "ew_ma": [0.71, 0.3, -0.16, 0.46, -0.37, -2.9, -2.42, -0.7, 0.19], "z_comb": -0.62, "p": 0.48452577371131444, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.43, "v": 2.2, "rv_gaia": 1.59, "ew_limit_ma": 4.249}, {"star": "4367026303085396352", "z": [2.28, -3.82, 15.42, 2.34, -0.84, -3.16, -3.99, -0.26, -8.11], "ew_ma": [0.28, -0.53, 4.43, 0.58, -0.35, -0.6, -1.29, -0.04, -1.64], "z_comb": 0.19, "p": 0.48937553122343885, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.11, "v": -35.5, "rv_gaia": -35.94, "ew_limit_ma": 1.522}, {"star": "5927236979422123264", "z": [4.48, -0.02, -1.34, 0.76, 2.06, -9.15, -5.14, -3.46, -0.03], "ew_ma": [0.71, -0.0, -0.54, 0.21, 2.21, -1.69, -2.28, -0.63, -0.01], "z_comb": -0.42, "p": 0.49347532623368834, "n_lines": 9, "n_spectra": 3, "twin_r": 0.991, "null_sd": 5.38, "v": -8.4, "rv_gaia": -9.12, "ew_limit_ma": 3.317}, {"star": "5951165616611763456", "z": [-2.39, -2.69, 2.29, -0.81, 3.43, 0.76, 3.52, 1.75, 5.22], "ew_ma": [-0.45, -0.45, 0.55, -0.16, 8.87, 0.14, 1.02, 0.27, 0.99], "z_comb": -0.32, "p": 0.5260236988150593, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9894, "null_sd": 4.47, "v": 26.4, "rv_gaia": 25.96, "ew_limit_ma": 1.964}, {"star": "3113909602378333056", "z": [-0.91, 0.69, -0.43, -5.11, -2.72, 7.14, 4.8, -3.59, 3.33], "ew_ma": [-0.15, 0.1, -0.1, -0.88, -5.22, 1.35, 1.47, -0.57, 0.54], "z_comb": 0.42, "p": 0.5272736363181841, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9945, "null_sd": 4.68, "v": -7.65, "rv_gaia": -8.02, "ew_limit_ma": 1.218}, {"star": "4038724053986441856", "z": [1.67, 0.4, 0.54, -1.33, -1.83, -1.82, 0.38, 1.96, -2.27], "ew_ma": [0.21, 0.07, 0.09, -0.27, -0.49, -0.27, 0.1, 0.28, -0.42], "z_comb": 0.02, "p": 0.5474226288685565, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9943, "null_sd": 3.97, "v": 15.6, "rv_gaia": 14.99, "ew_limit_ma": 1.181}, {"star": "3285218186904332288", "z": [3.69, -0.04, -3.05, 0.09, 1.91, 2.05, -3.15, -7.38, -2.31], "ew_ma": [2.09, -0.02, -1.52, 0.03, 2.14, 0.73, -1.67, -2.63, -0.83], "z_comb": 1.0, "p": 0.5773211339433029, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9728, "null_sd": 4.56, "v": -7.1, "rv_gaia": -7.28, "ew_limit_ma": 11.116}, {"star": "6484716209628726912", "z": [1.61, 2.07, -0.92, -2.82, -3.3, 0.75, 1.82, -3.41, -1.52], "ew_ma": [0.34, 0.37, -0.23, -0.73, -1.62, 0.14, 0.48, -0.6, -0.3], "z_comb": 0.28, "p": 0.5904204789760512, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9926, "null_sd": 3.82, "v": -7.55, "rv_gaia": -7.8, "ew_limit_ma": 1.679}, {"star": "3407611182744289152", "z": [-3.48, 2.88, -7.94, 0.61, -0.18, 10.58, 1.01, 1.47, -0.34], "ew_ma": [-0.97, 0.86, -3.73, 0.28, -0.08, 3.76, 0.61, 0.48, -0.12], "z_comb": 1.2, "p": 0.6232688365581721, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 4.73, "v": 21.1, "rv_gaia": 20.6, "ew_limit_ma": 3.604}, {"star": "5765846127180770432", "z": [2.47, 2.22, -0.49, -0.34, 2.48, -7.01, -8.35, 1.77, 2.39], "ew_ma": [0.62, 0.3, -0.1, -0.06, 4.65, -1.12, -2.01, 0.24, 0.38], "z_comb": 1.05, "p": 0.6369681515924204, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 3.75, "v": -4.15, "rv_gaia": -4.87, "ew_limit_ma": 1.84}, {"star": "4315804351350378496", "z": [-6.26, -4.04, 23.88, 4.92, 0.85, 2.4, 1.68, 4.03, -2.85], "ew_ma": [-3.21, -2.14, 26.06, 3.34, 0.77, 1.14, 2.98, 2.78, -1.63], "z_comb": 1.26, "p": 0.6484675766211689, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9924, "null_sd": 4.26, "v": -100.05, "rv_gaia": -100.33, "ew_limit_ma": 7.003}, {"star": "4934923028038871296", "z": [-1.74, 6.0, -11.82, -6.82, 0.74, 8.01, 7.28, -1.22, 0.54], "ew_ma": [-0.22, 0.86, -2.85, -1.15, 0.27, 1.54, 2.51, -0.2, 0.08], "z_comb": 1.56, "p": 0.6529673516324184, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.66, "v": 12.25, "rv_gaia": 11.9, "ew_limit_ma": 2.266}, {"star": "5056511692465250304", "z": [3.97, -1.95, 3.06, -0.6, 1.76, -3.96, -1.25, -1.31, 2.47], "ew_ma": [0.7, -1.01, 0.63, -0.14, 2.49, -0.78, -0.32, -1.01, 0.48], "z_comb": 1.12, "p": 0.6545172741362932, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9771, "null_sd": 4.05, "v": 18.3, "rv_gaia": 17.69, "ew_limit_ma": 4.366}, {"star": "5129338021224785408", "z": [-0.45, -2.26, 1.0, 0.85, -1.6, 4.83, 5.64, 6.32, 2.41], "ew_ma": [-0.18, -1.39, 0.63, 0.57, -0.72, 2.76, 3.92, 4.01, 1.34], "z_comb": 1.38, "p": 0.6669666516674166, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9568, "null_sd": 3.86, "v": 29.85, "rv_gaia": 29.09, "ew_limit_ma": 5.227}, {"star": "5528591961953902720", "z": [0.84, -0.41, 2.21, 0.58, 0.81, 1.44, 1.01, 1.64, 0.97], "ew_ma": [0.16, -0.08, 0.59, 0.15, 0.91, 0.27, 0.31, 0.28, 0.17], "z_comb": 1.9, "p": 0.7277636118194091, "n_lines": 9, "n_spectra": 4, "twin_r": 0.994, "null_sd": 4.89, "v": -1.35, "rv_gaia": -1.8, "ew_limit_ma": 5.827}, {"star": "3855524182352238336", "z": [2.48, 1.32, 1.49, 2.52, -1.34, 1.93, 1.29, -1.22, -4.77], "ew_ma": [0.26, 0.14, 0.16, 0.36, -0.48, 0.24, 0.22, -0.12, -0.54], "z_comb": 2.64, "p": 0.7331133443327834, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 9.34, "v": 16.8, "rv_gaia": 16.57, "ew_limit_ma": 1.125}, {"star": "5357075947709011456", "z": [1.96, 3.86, -1.69, -0.41, -1.67, -2.54, 0.5, -1.04, -0.51], "ew_ma": [0.24, 0.62, -0.53, -0.07, -0.48, -0.45, 0.14, -0.15, -0.1], "z_comb": 1.77, "p": 0.7410129493525324, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9949, "null_sd": 7.36, "v": 21.6, "rv_gaia": 21.19, "ew_limit_ma": 3.147}, {"star": "6612242034982766848", "z": [0.32, -1.93, -0.75, 1.25, 2.84, 11.99, 3.55, 0.54, -1.74], "ew_ma": [0.04, -0.3, -0.15, 0.28, 0.52, 2.71, 0.97, 0.08, -0.32], "z_comb": 3.32, "p": 0.744112794360282, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 5.12, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 1.719}, {"star": "5567900121118276736", "z": [1.82, -0.39, 6.92, 1.52, -2.32, -7.38, 6.44, 6.1, 3.23], "ew_ma": [0.22, -0.06, 1.35, 0.25, -1.01, -1.39, 1.08, 0.8, 0.68], "z_comb": 1.93, "p": 0.7552622368881556, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9948, "null_sd": 3.86, "v": 28.4, "rv_gaia": 27.55, "ew_limit_ma": 1.54}, {"star": "6141742283401003264", "z": [2.29, -1.35, -7.02, 2.76, -1.67, 5.88, 4.74, 4.52, 2.95], "ew_ma": [0.34, -0.24, -1.77, 0.61, -0.53, 1.36, 2.02, 0.82, 0.54], "z_comb": 2.3, "p": 0.7633118344082795, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 4.63, "v": -12.35, "rv_gaia": -13.03, "ew_limit_ma": 2.355}, {"star": "6096524382383054720", "z": [3.13, 1.95, 2.44, -1.14, 1.61, -1.88, 0.48, -0.99, 0.86], "ew_ma": [0.54, 0.34, 0.57, -0.24, 1.75, -0.33, 0.13, -0.18, 0.17], "z_comb": 3.24, "p": 0.7718114094295285, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9956, "null_sd": 4.52, "v": 5.1, "rv_gaia": 4.39, "ew_limit_ma": 2.555}, {"star": "6062166950467100032", "z": [-0.81, -3.29, 25.98, 1.69, 1.0, 1.21, 1.01, -1.95, -0.49], "ew_ma": [-0.1, -0.49, 9.37, 0.35, 0.36, 0.24, 0.31, -0.25, -0.08], "z_comb": 3.9, "p": 0.8017099145042748, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 4.32, "v": -63.55, "rv_gaia": -63.57, "ew_limit_ma": 1.689}, {"star": "5553647083168192512", "z": [-2.29, -3.22, 17.73, 5.09, 2.97, -1.36, 6.99, -1.19, -1.75], "ew_ma": [-0.54, -1.26, 5.87, 1.06, 1.31, -0.28, 2.78, -0.91, -0.33], "z_comb": 2.38, "p": 0.8069096545172741, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9796, "null_sd": 4.0, "v": 60.7, "rv_gaia": 59.67, "ew_limit_ma": 3.3}, {"star": "6357835694518769408", "z": [3.21, -0.0, -4.78, -2.7, -1.85, 11.33, -0.27, -0.31, -2.35], "ew_ma": [0.73, -0.0, -1.11, -0.59, -0.77, 2.08, -0.09, -0.06, -0.49], "z_comb": 2.47, "p": 0.8085595720213989, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 3.56, "v": 14.8, "rv_gaia": 14.4, "ew_limit_ma": 2.356}, {"star": "5459060117921483008", "z": [5.73, -1.84, 11.03, 0.56, 1.18, -5.77, 5.46, 0.36, 0.36], "ew_ma": [1.14, -0.39, 3.65, 0.15, 0.61, -1.29, 1.92, 0.08, 0.08], "z_comb": 4.14, "p": 0.8245587720613969, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 4.31, "v": 44.65, "rv_gaia": 43.93, "ew_limit_ma": 2.713}, {"star": "3009908378049913216", "z": [1.74, -0.59, -0.37, 2.81, -4.01, 7.64, 3.05, 7.68, 2.65], "ew_ma": [0.9, -0.36, -0.33, 1.8, -2.79, 5.11, 3.1, 4.61, 2.3], "z_comb": 3.93, "p": 0.8313584320783961, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9144, "null_sd": 4.44, "v": 27.0, "rv_gaia": 21.1, "ew_limit_ma": 6.454}, {"star": "6718894388002453120", "z": [-1.62, -2.71, 19.98, 6.86, -2.28, 0.3, 6.04, 3.78, -3.9], "ew_ma": [-0.35, -0.45, 6.95, 1.32, -0.77, 0.07, 2.97, 0.91, -1.09], "z_comb": 3.28, "p": 0.8463576821158942, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.76, "v": 60.5, "rv_gaia": 60.01, "ew_limit_ma": 3.19}, {"star": "2980492387558410112", "z": [0.65, 2.82, 2.0, -0.95, -0.53, 5.67, 8.55, 1.69, 0.05], "ew_ma": [0.09, 0.34, 0.3, -0.15, -0.16, 0.74, 1.86, 0.19, 0.01], "z_comb": 4.81, "p": 0.8912054397280136, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.51, "v": 22.35, "rv_gaia": 21.6, "ew_limit_ma": 1.381}, {"star": "3101382419728401408", "z": [4.31, -1.7, 9.52, 9.17, -0.13, 2.99, 5.82, 2.74, -3.64], "ew_ma": [1.97, -0.58, 6.68, 3.36, -0.07, 1.25, 3.74, 1.03, -0.96], "z_comb": 6.83, "p": 0.9072046397680116, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 4.78, "v": 54.05, "rv_gaia": 53.99, "ew_limit_ma": 5.468}, {"star": "3551002857809958400", "z": [0.87, 2.87, -3.88, 2.04, 2.93, 11.73, 2.97, 5.29, 0.47], "ew_ma": [0.12, 0.61, -1.51, 0.53, 1.13, 3.12, 0.98, 1.11, 0.1], "z_comb": 6.86, "p": 0.9172041397930103, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 6.6, "v": -3.55, "rv_gaia": -4.08, "ew_limit_ma": 4.023}, {"star": "5663558453071724288", "z": [8.15, 1.72, 4.89, 0.84, -2.04, 3.72, 5.67, -0.03, -1.33], "ew_ma": [0.99, 0.27, 1.22, 0.14, -0.42, 0.56, 1.65, -0.0, -0.25], "z_comb": 7.97, "p": 0.9291535423228838, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9916, "null_sd": 6.16, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 5.012}, {"star": "5586381090520538880", "z": [0.35, 9.91, 1.16, -1.25, -2.54, 2.3, -1.05, -1.51, -2.27], "ew_ma": [0.06, 1.41, 0.21, -0.22, -1.25, 0.35, -0.21, -0.21, -0.25], "z_comb": 5.55, "p": 0.9443027848607569, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.96, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 1.81}, {"star": "5381537023379295232", "z": [6.22, 5.59, -1.91, -1.31, -2.26, -1.25, 3.13, -1.1, -0.37], "ew_ma": [0.8, 0.67, -0.42, -0.23, -0.86, -0.17, 0.66, -0.14, -0.04], "z_comb": 5.56, "p": 0.9514024298785061, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 3.5, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 1.495}, {"star": "5902750168276592256", "z": [0.06, -2.37, 41.16, 0.86, 0.61, 1.75, -0.97, 1.36, -2.46], "ew_ma": [0.01, -0.3, 14.08, 0.19, 0.26, 0.22, -0.28, 0.18, -0.31], "z_comb": 8.02, "p": 0.9792010399480026, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.29, "v": -68.35, "rv_gaia": -68.78, "ew_limit_ma": 2.577}, {"star": "5062172841616745856", "z": [2.65, 6.57, 8.2, -2.24, 0.78, 0.78, 2.52, -2.35, -2.59], "ew_ma": [0.41, 1.24, 1.81, -0.42, 0.24, 0.16, 0.86, -0.46, -0.49], "z_comb": 6.81, "p": 0.9798510074496275, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.74, "v": 11.8, "rv_gaia": 11.16, "ew_limit_ma": 2.823}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Am_HARPS.json b/papers/short_lived_elements/data/element_Am_HARPS.json new file mode 100644 index 0000000000000000000000000000000000000000..051c980daf5e340be24a297e429c2e659848f1d3 --- /dev/null +++ b/papers/short_lived_elements/data/element_Am_HARPS.json @@ -0,0 +1 @@ +{"lines": [[4509.45, 0.9712990131287732], [4575.59, 1.0], [4324.57, 0.355624487734312], [4441.36, 0.3750919549679658], [4699.7, 0.41999688359800125], [4872.22, 0.45139794335478456], [4188.12, 0.1671644906080934], [4593.31, 0.20107464428475946], [5020.96, 0.24025880836889185]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "4975284381908412672", "z": [-2.76, -2.76, 2.12, -3.88, -2.68, -5.49, -0.83, -0.25, 0.82], "ew_ma": [-0.17, -0.17, 0.16, -0.31, -0.2, -0.36, -0.08, -0.02, 0.06], "z_comb": -5.91, "p": 0.0015999200039998, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.95, "v": -10.2, "rv_gaia": -10.92, "ew_limit_ma": 0.009, "dominant": 4575.59, "shared": 17, "width": 3.1, "vet": "absorption at 4575.59 A shared by 17 other stars"}, {"star": "6213644846302305536", "z": [-3.5, -3.77, -2.93, 0.74, 1.61, 0.66, -3.07, 0.78, -2.11], "ew_ma": [-0.34, -0.46, -0.44, 0.11, 0.19, 0.08, -0.62, 0.1, -0.26], "z_comb": -4.75, "p": 0.026448677566121695, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.76, "v": -5.85, "rv_gaia": -6.56, "ew_limit_ma": 0.375}, {"star": "2585856120791459584", "z": [-2.93, -2.2, -2.83, 0.01, 0.21, 0.53, -3.67, -0.11, -0.47], "ew_ma": [-0.24, -0.22, -0.62, 0.0, 0.02, 0.07, -0.93, -0.01, -0.06], "z_comb": -3.92, "p": 0.028748562571871406, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.89, "v": -20.35, "rv_gaia": -20.97, "ew_limit_ma": 0.192}, {"star": "3346787986201584896", "z": [-6.2, 0.63, -14.36, -2.44, -0.57, 5.11, -0.32, -1.31, 2.52], "ew_ma": [-0.52, 0.05, -2.29, -0.36, -0.06, 0.5, -0.06, -0.13, 0.36], "z_comb": -5.5, "p": 0.029498525073746312, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 2.78, "v": 1.1, "rv_gaia": 0.26, "ew_limit_ma": 0.279}, {"star": "2533723670313663872", "z": [-14.21, 1.52, -1.85, -0.31, 1.36, 4.37, -0.29, -1.38, 2.32], "ew_ma": [-8.08, 0.91, -1.48, -0.26, 0.9, 3.36, -0.23, -0.99, 4.66], "z_comb": -6.24, "p": 0.03029848507574621, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9571, "null_sd": 3.04, "v": 18.1, "rv_gaia": 16.81, "ew_limit_ma": 2.445}, {"star": "3345968334645285376", "z": [-2.21, -1.87, -2.65, -0.28, -0.82, -1.57, -1.88, 2.33, 0.66], "ew_ma": [-0.3, -0.24, -0.39, -0.05, -0.12, -0.2, -0.46, 0.33, 0.1], "z_comb": -3.52, "p": 0.03624818759062047, "n_lines": 9, "n_spectra": 6, "twin_r": 0.997, "null_sd": 2.21, "v": -9.4, "rv_gaia": -10.01, "ew_limit_ma": 0.34}, {"star": "2525514785221197696", "z": [-2.22, -0.48, -1.52, -0.26, 2.19, -4.89, -5.28, -1.15, 1.24], "ew_ma": [-0.12, -0.03, -0.09, -0.02, 0.15, -0.35, -0.5, -0.07, 0.07], "z_comb": -3.26, "p": 0.07324633768311585, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.07, "v": -3.15, "rv_gaia": -3.83, "ew_limit_ma": 0.178}, {"star": "3480332916165099904", "z": [-0.64, -0.5, -8.38, -2.85, -3.56, 2.72, -0.26, 1.82, 0.72], "ew_ma": [-0.04, -0.03, -0.9, -0.26, -0.25, 0.16, -0.03, 0.09, 0.04], "z_comb": -3.01, "p": 0.07734613269336534, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.43, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.181}, {"star": "3532823773073745536", "z": [-2.39, -2.73, 0.7, -2.6, -1.41, 1.07, -0.25, 2.24, -0.94], "ew_ma": [-0.21, -0.21, 0.14, -0.33, -0.16, 0.1, -0.03, 0.2, -0.09], "z_comb": -3.46, "p": 0.08009599520024, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.49, "v": 40.35, "rv_gaia": 39.76, "ew_limit_ma": 0.298}, {"star": "4768170579173552896", "z": [-1.51, -1.79, -6.6, -1.56, -1.55, 0.55, -1.82, -0.69, 1.19], "ew_ma": [-0.1, -0.12, -0.74, -0.17, -0.14, 0.05, -0.36, -0.04, 0.1], "z_comb": -4.1, "p": 0.08634568271586421, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.77, "v": -4.85, "rv_gaia": -5.53, "ew_limit_ma": 0.294}, {"star": "2918894859953947392", "z": [-1.67, -0.7, -0.05, -0.37, -0.59, -1.03, -1.03, -2.7, -0.83], "ew_ma": [-0.1, -0.04, -0.0, -0.03, -0.03, -0.07, -0.1, -0.16, -0.06], "z_comb": -2.49, "p": 0.1079946002699865, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.67, "v": -9.9, "rv_gaia": -10.34, "ew_limit_ma": 0.486}, {"star": "4356054757585316992", "z": [0.5, 0.43, -8.8, -4.4, 0.56, -0.45, 0.51, -1.99, 0.94], "ew_ma": [0.03, 0.03, -0.77, -0.5, 0.04, -0.04, 0.07, -0.14, 0.09], "z_comb": -2.38, "p": 0.10919454027298635, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.33, "v": -19.7, "rv_gaia": -20.28, "ew_limit_ma": 0.214}, {"star": "5317114850417299584", "z": [-0.89, -1.59, 1.14, -1.59, -1.82, -1.83, -0.2, 0.36, -0.93], "ew_ma": [-0.05, -0.12, 0.13, -0.15, -0.13, -0.15, -0.03, 0.03, -0.1], "z_comb": -2.68, "p": 0.12844357782110893, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.78, "v": -6.25, "rv_gaia": -6.29, "ew_limit_ma": 0.483}, {"star": "6029992663310612096", "z": [-2.43, -2.45, -3.13, 0.45, -2.19, 4.19, 2.06, 1.03, -0.99], "ew_ma": [-0.5, -0.61, -0.77, 0.12, -0.67, 0.81, 1.13, 0.31, -0.28], "z_comb": -2.71, "p": 0.1289435528223589, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.79, "v": 14.75, "rv_gaia": 14.08, "ew_limit_ma": 1.197}, {"star": "3799626935341796096", "z": [-5.77, -1.29, -0.0, 1.31, 2.84, 2.62, -3.55, -1.27, -0.6], "ew_ma": [-0.77, -0.2, -0.0, 0.24, 0.4, 0.47, -0.81, -0.21, -0.09], "z_comb": -3.05, "p": 0.13489325533723315, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.66, "v": 2.5, "rv_gaia": 1.89, "ew_limit_ma": 0.766}, {"star": "6603827644293770624", "z": [-0.16, -0.8, 1.12, 1.6, -1.29, -6.74, 1.54, 1.5, -2.74], "ew_ma": [-0.01, -0.08, 0.14, 0.21, -0.14, -0.7, 0.22, 0.14, -0.28], "z_comb": -2.21, "p": 0.1535423228838558, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.16, "v": 1.1, "rv_gaia": 0.39, "ew_limit_ma": 0.361}, {"star": "6489771832811810432", "z": [-6.27, -0.24, -3.39, 0.39, 2.21, 1.92, -3.65, 0.28, -1.77], "ew_ma": [-0.95, -0.05, -0.93, 0.11, 0.66, 0.34, -1.31, 0.06, -0.35], "z_comb": -3.99, "p": 0.16204189790510473, "n_lines": 9, "n_spectra": 6, "twin_r": 0.996, "null_sd": 4.57, "v": -30.05, "rv_gaia": -31.05, "ew_limit_ma": 1.959}, {"star": "2477815222028038272", "z": [-0.94, 2.04, -1.33, 0.43, -0.5, -7.44, -3.29, 0.39, 0.85], "ew_ma": [-0.11, 0.24, -0.2, 0.08, -0.08, -0.93, -0.79, 0.05, 0.1], "z_comb": -1.84, "p": 0.1638918054097295, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.27, "v": 12.1, "rv_gaia": 11.46, "ew_limit_ma": 0.561}, {"star": "2390702771185162112", "z": [-4.7, 3.22, -0.29, 3.07, -1.36, -3.58, -2.47, -0.5, -1.21], "ew_ma": [-0.46, 0.32, -0.04, 0.39, -0.15, -0.36, -0.47, -0.04, -0.12], "z_comb": -1.99, "p": 0.167941602919854, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.61, "v": 10.85, "rv_gaia": 10.28, "ew_limit_ma": 0.578}, {"star": "5596797039059063680", "z": [-2.79, -0.48, 1.51, -1.53, 0.73, 0.09, -0.47, -1.46, -1.98], "ew_ma": [-0.16, -0.03, 0.18, -0.15, 0.06, 0.01, -0.07, -0.1, -0.14], "z_comb": -2.26, "p": 0.1721413929303535, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.5, "v": -15.0, "rv_gaia": -15.71, "ew_limit_ma": 0.274}, {"star": "4400452830957830656", "z": [-2.37, -1.57, 2.09, 4.01, -0.41, -4.15, -2.14, 0.89, -0.64], "ew_ma": [-0.31, -0.31, 0.87, 0.98, -0.06, -1.02, -1.02, 0.16, -0.15], "z_comb": -2.43, "p": 0.1824908754562272, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9918, "null_sd": 3.34, "v": -36.7, "rv_gaia": -37.09, "ew_limit_ma": 0.952}, {"star": "5586381090520538880", "z": [-2.76, -0.14, -1.96, 4.33, 1.68, -4.65, -1.57, 1.45, 0.15], "ew_ma": [-0.16, -0.01, -0.17, 0.36, 0.11, -0.36, -0.18, 0.1, 0.01], "z_comb": -1.96, "p": 0.19304034798260086, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 2.88, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 0.356}, {"star": "6153706477443518976", "z": [-0.31, -0.39, 1.76, -0.4, -2.03, -2.09, -1.8, -0.6, -0.99], "ew_ma": [-0.02, -0.03, 0.32, -0.06, -0.19, -0.25, -0.48, -0.05, -0.1], "z_comb": -1.62, "p": 0.19384030798460078, "n_lines": 9, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.3, "v": -25.7, "rv_gaia": -26.31, "ew_limit_ma": 0.318}, {"star": "6879764552737781888", "z": [1.36, -1.7, 1.07, -1.9, -1.54, -1.53, -0.38, 0.52, -3.53], "ew_ma": [0.08, -0.1, 0.15, -0.13, -0.09, -0.09, -0.04, 0.03, -0.22], "z_comb": -1.73, "p": 0.1990400479976001, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.45, "v": 27.3, "rv_gaia": 27.2, "ew_limit_ma": 0.203}, {"star": "5459060117921483008", "z": [1.51, -1.63, 1.2, -0.14, -0.93, -4.9, 2.94, -0.76, -1.53], "ew_ma": [0.12, -0.15, 0.12, -0.01, -0.08, -0.45, 0.33, -0.06, -0.16], "z_comb": -1.47, "p": 0.20788960551972402, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.61, "v": 44.6, "rv_gaia": 43.93, "ew_limit_ma": 0.396}, {"star": "5481848424118748672", "z": [-1.31, -1.37, -0.85, 1.26, 0.94, -2.09, -1.07, 1.39, 1.74], "ew_ma": [-0.37, -0.49, -0.5, 0.9, 0.33, -1.07, -0.7, 0.53, 1.01], "z_comb": -1.52, "p": 0.2407879606019699, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9787, "null_sd": 3.62, "v": 32.25, "rv_gaia": 31.45, "ew_limit_ma": 2.575}, {"star": "3182634954624823168", "z": [0.7, -1.16, -3.89, -1.11, -3.59, 3.71, -1.51, -1.34, -1.15], "ew_ma": [0.07, -0.11, -0.6, -0.15, -0.32, 0.39, -0.39, -0.12, -0.11], "z_comb": -1.76, "p": 0.24208789560521973, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.47, "v": 5.4, "rv_gaia": 4.81, "ew_limit_ma": 0.709}, {"star": "6133033601555979648", "z": [-2.42, -0.09, -9.3, -0.74, -0.23, 5.65, -1.03, 2.42, -1.77], "ew_ma": [-0.45, -0.02, -3.64, -0.19, -0.07, 1.08, -0.49, 0.63, -0.51], "z_comb": -2.23, "p": 0.2432878356082196, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.17, "v": 18.7, "rv_gaia": 18.05, "ew_limit_ma": 1.856}, {"star": "4657193606465368704", "z": [-3.43, 2.22, -1.68, -3.14, 1.33, -1.73, -3.85, -2.05, 1.82], "ew_ma": [-0.6, 0.49, -0.46, -0.9, 0.39, -0.38, -1.95, -0.56, 0.79], "z_comb": -2.26, "p": 0.2527873606319684, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9911, "null_sd": 3.29, "v": 14.5, "rv_gaia": 13.99, "ew_limit_ma": 1.152}, {"star": "6802426038708609536", "z": [0.95, -0.34, -0.81, -0.69, -1.6, -5.46, -1.1, -1.34, -1.04], "ew_ma": [0.06, -0.03, -0.13, -0.09, -0.13, -0.64, -0.19, -0.1, -0.12], "z_comb": -2.3, "p": 0.27088645567721614, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.06, "v": -15.9, "rv_gaia": -16.09, "ew_limit_ma": 0.622}, {"star": "5798962867668048768", "z": [-0.83, -1.37, -6.98, -0.71, -0.62, 6.37, -0.84, 0.87, -1.04], "ew_ma": [-0.1, -0.23, -1.5, -0.16, -0.12, 1.0, -0.3, 0.17, -0.27], "z_comb": -1.54, "p": 0.2727863606819659, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9961, "null_sd": 3.07, "v": 2.7, "rv_gaia": 1.94, "ew_limit_ma": 1.024}, {"star": "5765846127180770432", "z": [-0.47, 1.16, -0.57, -0.68, 2.22, -6.63, -0.74, -1.64, -0.33], "ew_ma": [-0.1, 0.22, -0.15, -0.22, 0.42, -1.35, -0.3, -0.31, -0.06], "z_comb": -1.42, "p": 0.28368581570921453, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 1.86, "v": -4.25, "rv_gaia": -4.87, "ew_limit_ma": 0.698}, {"star": "3786697056556771584", "z": [-2.54, 3.35, -1.85, -0.94, -2.14, 0.48, -4.58, 0.45, 0.46], "ew_ma": [-0.19, 0.26, -0.2, -0.09, -0.19, 0.04, -0.59, 0.04, 0.04], "z_comb": -0.84, "p": 0.29018549072546374, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.32, "v": 13.9, "rv_gaia": 13.2, "ew_limit_ma": 0.437}, {"star": "6764687466752221824", "z": [0.64, 0.98, -5.98, 0.37, -0.04, -0.41, -2.09, -1.54, -1.22], "ew_ma": [0.06, 0.11, -0.74, 0.05, -0.0, -0.05, -0.42, -0.17, -0.14], "z_comb": -0.94, "p": 0.2919854007299635, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.4, "v": -41.95, "rv_gaia": -42.55, "ew_limit_ma": 0.564}, {"star": "5452492082132835840", "z": [0.55, 1.05, -12.1, -1.72, 1.23, 3.24, -1.16, -3.06, 1.09], "ew_ma": [0.03, 0.06, -0.96, -0.14, 0.07, 0.2, -0.11, -0.15, 0.06], "z_comb": -1.18, "p": 0.29583520823958803, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.49, "v": 13.45, "rv_gaia": 12.83, "ew_limit_ma": 0.229}, {"star": "2633449134434620288", "z": [-3.09, 0.52, 2.1, 0.95, -0.24, -0.14, -3.48, 0.17, -0.05], "ew_ma": [-0.16, 0.03, 0.22, 0.08, -0.02, -0.01, -0.46, 0.01, -0.0], "z_comb": -1.27, "p": 0.30018499075046245, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 3.18, "v": -12.1, "rv_gaia": -12.6, "ew_limit_ma": 0.453}, {"star": "5528591961953902720", "z": [-5.77, 1.27, -2.22, 2.02, 2.01, 2.04, -1.43, -1.55, -1.08], "ew_ma": [-0.5, 0.12, -0.63, 0.36, 0.21, 0.18, -0.42, -0.13, -0.09], "z_comb": -2.08, "p": 0.30053497325133743, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.61, "v": -1.05, "rv_gaia": -1.8, "ew_limit_ma": 0.707}, {"star": "6489909443564308224", "z": [-1.03, 0.52, -1.4, -3.35, 2.29, -1.84, 1.0, 0.34, 1.02], "ew_ma": [-0.08, 0.04, -0.17, -0.34, 0.22, -0.16, 0.13, 0.03, 0.1], "z_comb": -0.99, "p": 0.3048847557622119, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9955, "null_sd": 3.17, "v": 0.85, "rv_gaia": 0.63, "ew_limit_ma": 0.517}, {"star": "5584019442620181760", "z": [1.57, -0.11, -2.93, -2.28, -1.78, -3.19, -0.62, -0.48, 0.33], "ew_ma": [0.09, -0.01, -0.34, -0.29, -0.15, -0.42, -0.1, -0.04, 0.03], "z_comb": -1.69, "p": 0.3054347282635868, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 4.55, "v": 29.0, "rv_gaia": 28.69, "ew_limit_ma": 1.924}, {"star": "4867596937475715968", "z": [-0.22, 1.79, -3.22, 0.56, -0.03, -3.35, -0.15, -0.38, -0.8], "ew_ma": [-0.02, 0.16, -0.35, 0.07, -0.0, -0.33, -0.02, -0.03, -0.08], "z_comb": -0.71, "p": 0.32913354332283384, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.11, "v": -9.4, "rv_gaia": -9.94, "ew_limit_ma": 0.446}, {"star": "2324785228033780608", "z": [-3.54, 2.59, -0.34, -0.82, 2.39, -2.29, -4.17, 0.06, -0.04], "ew_ma": [-0.34, 0.22, -0.04, -0.13, 0.25, -0.28, -1.14, 0.01, -0.0], "z_comb": -1.21, "p": 0.3685315734213289, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": -6.85, "rv_gaia": -7.42, "ew_limit_ma": 0.676}, {"star": "6914237987476826624", "z": [1.21, -0.72, -0.51, -0.03, 1.97, -4.16, -2.33, -0.11, -0.34], "ew_ma": [0.1, -0.07, -0.05, -0.0, 0.21, -0.42, -0.25, -0.01, -0.03], "z_comb": -0.78, "p": 0.4127793610319484, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.46, "v": 3.8, "rv_gaia": 3.1, "ew_limit_ma": 0.485}, {"star": "6606890608810806528", "z": [1.12, -2.5, 2.46, -1.88, -2.23, 0.75, 1.37, -0.55, 0.68], "ew_ma": [0.14, -0.31, 0.37, -0.32, -0.33, 0.11, 0.42, -0.06, 0.11], "z_comb": -0.94, "p": 0.4763261836908155, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.61, "v": -19.6, "rv_gaia": -20.32, "ew_limit_ma": 0.967}, {"star": "5609058277323483392", "z": [-2.61, 0.21, 1.68, -0.32, -3.13, 3.85, 1.62, 3.04, 0.88], "ew_ma": [-0.35, 0.03, 0.5, -0.07, -0.69, 0.58, 0.66, 0.41, 0.15], "z_comb": -0.2, "p": 0.47852607369631517, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.39, "v": 73.15, "rv_gaia": 72.42, "ew_limit_ma": 1.394}, {"star": "4923433303326992384", "z": [0.71, 0.31, -3.38, 2.6, -0.72, 1.71, 0.7, -1.03, -1.8], "ew_ma": [0.05, 0.02, -0.36, 0.25, -0.05, 0.12, 0.11, -0.07, -0.13], "z_comb": 0.44, "p": 0.51932403379831, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.04, "v": 7.25, "rv_gaia": 6.53, "ew_limit_ma": 0.311}, {"star": "6904703228801028864", "z": [-2.18, 1.84, -1.18, 0.22, 1.93, 2.61, -2.63, -1.41, -2.48], "ew_ma": [-0.19, 0.19, -0.13, 0.03, 0.25, 0.24, -0.67, -0.14, -0.27], "z_comb": 0.04, "p": 0.5299235038248088, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 3.02, "v": 10.05, "rv_gaia": 9.13, "ew_limit_ma": 1.026}, {"star": "5790389872417570816", "z": [1.26, 1.71, -1.77, -0.44, -0.6, 0.1, -0.89, 0.17, -0.5], "ew_ma": [0.08, 0.15, -0.2, -0.06, -0.06, 0.01, -0.18, 0.01, -0.05], "z_comb": 1.03, "p": 0.5328233588320584, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.5, "v": -20.35, "rv_gaia": -21.17, "ew_limit_ma": 0.389}, {"star": "2981583790287411200", "z": [0.42, -2.37, 1.85, 1.88, -1.0, 2.57, 2.4, 0.74, -1.54], "ew_ma": [0.03, -0.14, 0.18, 0.15, -0.05, 0.19, 0.24, 0.05, -0.11], "z_comb": 0.19, "p": 0.5350732463376832, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.32, "v": 41.15, "rv_gaia": 40.43, "ew_limit_ma": 0.361}, {"star": "5906633952564270848", "z": [3.15, 0.71, 0.5, -1.03, 0.33, -6.93, -2.2, -2.21, 0.96], "ew_ma": [0.31, 0.08, 0.09, -0.17, 0.05, -0.96, -0.48, -0.3, 0.13], "z_comb": -0.01, "p": 0.5368231588420579, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9978, "null_sd": 3.5, "v": -7.0, "rv_gaia": -7.68, "ew_limit_ma": 1.11}, {"star": "2417456431710276096", "z": [-0.12, 1.47, -0.39, 0.25, -0.68, -3.03, -1.52, 1.35, 2.32], "ew_ma": [-0.01, 0.1, -0.03, 0.02, -0.05, -0.31, -0.18, 0.09, 0.14], "z_comb": 0.14, "p": 0.5464226788660567, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": 8.6, "rv_gaia": 7.88, "ew_limit_ma": 0.386}, {"star": "3585098090614578688", "z": [0.81, -0.06, -2.43, -1.24, 0.47, 3.68, 0.69, -1.14, -0.58], "ew_ma": [0.06, -0.01, -0.43, -0.14, 0.04, 0.47, 0.11, -0.12, -0.07], "z_comb": 0.62, "p": 0.5482725863706814, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.16, "v": -22.15, "rv_gaia": -22.45, "ew_limit_ma": 1.482}, {"star": "6454967273273436416", "z": [1.75, -0.8, 5.35, -0.14, -2.15, -2.13, 0.05, 0.14, -0.1], "ew_ma": [0.15, -0.09, 0.88, -0.02, -0.23, -0.2, 0.01, 0.01, -0.01], "z_comb": 0.55, "p": 0.5594220288985551, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9969, "null_sd": 3.54, "v": -31.55, "rv_gaia": -31.9, "ew_limit_ma": 1.472}, {"star": "4418203587193988480", "z": [-7.81, 2.47, 11.97, 4.85, 0.78, 0.56, -1.96, 0.39, -0.43], "ew_ma": [-1.11, 0.35, 3.76, 1.21, 0.13, 0.11, -0.77, 0.07, -0.08], "z_comb": 0.72, "p": 0.5620718964051797, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.87, "v": -68.75, "rv_gaia": -69.63, "ew_limit_ma": 1.309}, {"star": "5855730584310531200", "z": [-6.13, -0.43, 14.49, 1.14, -1.27, 3.3, 2.45, 0.43, 1.03], "ew_ma": [-0.89, -0.06, 3.87, 0.35, -0.18, 0.51, 0.86, 0.07, 0.2], "z_comb": 0.54, "p": 0.5719214039298035, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9962, "null_sd": 3.79, "v": 105.15, "rv_gaia": 104.53, "ew_limit_ma": 2.687}, {"star": "5479222240596469632", "z": [-1.65, -1.06, 1.38, 0.05, 0.74, 4.75, 3.28, 2.17, 1.77], "ew_ma": [-0.22, -0.16, 0.24, 0.01, 0.13, 0.87, 1.14, 0.33, 0.31], "z_comb": 1.03, "p": 0.6103694815259237, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.88, "v": 22.85, "rv_gaia": 22.03, "ew_limit_ma": 1.054}, {"star": "6128366415218881536", "z": [3.77, 1.13, -10.87, -3.32, -2.11, 1.2, 2.8, -0.46, 2.24], "ew_ma": [0.3, 0.1, -0.97, -0.33, -0.17, 0.1, 0.45, -0.04, 0.21], "z_comb": 0.15, "p": 0.6200689965501724, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.82, "v": 31.2, "rv_gaia": 30.47, "ew_limit_ma": 0.618}, {"star": "5493588665684618752", "z": [4.31, -0.25, -8.58, -1.67, -3.57, 5.36, 3.69, -0.37, 0.5], "ew_ma": [0.3, -0.02, -1.16, -0.22, -0.47, 0.56, 0.77, -0.03, 0.06], "z_comb": 1.12, "p": 0.6426678666066696, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 3.08, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 0.703}, {"star": "4847282124418880256", "z": [3.39, 0.52, -9.16, -0.64, 0.8, 1.08, -0.18, 0.24, 1.06], "ew_ma": [0.21, 0.03, -1.26, -0.07, 0.05, 0.08, -0.03, 0.02, 0.07], "z_comb": 0.85, "p": 0.6450177491125444, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9947, "null_sd": 2.93, "v": 5.05, "rv_gaia": 4.36, "ew_limit_ma": 0.795}, {"star": "6270906415441316224", "z": [2.59, -0.52, 0.5, -2.12, -2.12, 1.35, 0.12, -2.23, -1.78], "ew_ma": [0.35, -0.07, 0.13, -0.42, -0.3, 0.22, 0.03, -0.37, -0.34], "z_comb": 0.15, "p": 0.6451177441127943, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9915, "null_sd": 7.13, "v": -21.9, "rv_gaia": -22.28, "ew_limit_ma": 3.863}, {"star": "4176501313320676992", "z": [0.31, 0.02, 0.53, -1.69, 0.22, 1.05, 2.44, 3.31, 0.26], "ew_ma": [0.02, 0.0, 0.05, -0.16, 0.02, 0.1, 0.28, 0.27, 0.02], "z_comb": 0.95, "p": 0.6617169141542922, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 1.95, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.382}, {"star": "5357075947709011456", "z": [-0.49, 2.12, -3.08, 0.86, 0.73, 0.04, 0.59, -1.66, 2.68], "ew_ma": [-0.03, 0.14, -0.4, 0.06, 0.05, 0.0, 0.08, -0.12, 0.22], "z_comb": 0.98, "p": 0.6697665116744163, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.54, "v": 21.5, "rv_gaia": 21.19, "ew_limit_ma": 0.392}, {"star": "5876112300125320448", "z": [3.41, 0.09, -10.22, -0.96, 1.24, 3.29, 0.03, 0.39, 1.95], "ew_ma": [0.19, 0.0, -0.74, -0.07, 0.07, 0.22, 0.0, 0.02, 0.11], "z_comb": 1.19, "p": 0.6818159092045398, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.62, "v": 38.6, "rv_gaia": 37.83, "ew_limit_ma": 0.452}, {"star": "5848156426657892480", "z": [0.48, -1.26, 6.05, 1.92, 0.81, 0.39, 1.06, -1.22, -1.98], "ew_ma": [0.03, -0.08, 0.51, 0.16, 0.05, 0.03, 0.11, -0.08, -0.14], "z_comb": 1.24, "p": 0.6938653067346633, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.37, "v": -30.0, "rv_gaia": -30.56, "ew_limit_ma": 0.366}, {"star": "6519024545827374336", "z": [-0.64, 3.23, -5.1, -0.62, 1.58, 2.48, -1.01, -0.85, 1.81], "ew_ma": [-0.06, 0.3, -0.83, -0.06, 0.14, 0.25, -0.17, -0.08, 0.21], "z_comb": 1.48, "p": 0.6948152592370381, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.32, "v": 19.15, "rv_gaia": 18.68, "ew_limit_ma": 0.57}, {"star": "5461620846141553024", "z": [-0.2, 0.24, 0.4, 1.62, 0.48, 1.87, 0.47, -3.68, 0.23], "ew_ma": [-0.01, 0.02, 0.04, 0.15, 0.04, 0.17, 0.08, -0.25, 0.02], "z_comb": 0.75, "p": 0.7068646567671616, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.42, "v": 27.55, "rv_gaia": 26.94, "ew_limit_ma": 0.461}, {"star": "6544549880063909248", "z": [0.65, -0.65, 1.59, -1.29, 3.62, 1.21, 0.13, -0.97, 0.89], "ew_ma": [0.05, -0.05, 0.2, -0.13, 0.36, 0.1, 0.02, -0.08, 0.08], "z_comb": 1.32, "p": 0.7208139593020348, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.29, "v": 21.4, "rv_gaia": 20.78, "ew_limit_ma": 0.529}, {"star": "4383374219923745024", "z": [-2.04, 3.41, -2.35, 0.03, 3.13, 2.0, -3.5, 2.17, 1.09], "ew_ma": [-0.31, 0.54, -0.51, 0.01, 0.49, 0.33, -0.94, 0.36, 0.16], "z_comb": 1.79, "p": 0.7311634418279086, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.09, "v": 10.95, "rv_gaia": 10.35, "ew_limit_ma": 1.023}, {"star": "4906784051581971200", "z": [-1.33, 2.22, -3.19, -1.04, 0.44, 5.15, 2.58, 0.85, 1.49], "ew_ma": [-0.06, 0.12, -0.29, -0.07, 0.02, 0.38, 0.21, 0.04, 0.09], "z_comb": 1.75, "p": 0.7485125743712814, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 2.2, "v": 3.55, "rv_gaia": 2.92, "ew_limit_ma": 0.301}, {"star": "5553647083168192512", "z": [-0.82, -2.84, 13.54, 3.21, 1.56, -0.81, 2.29, 1.88, -1.85], "ew_ma": [-0.08, -0.3, 2.49, 0.51, 0.2, -0.08, 0.61, 0.2, -0.3], "z_comb": 1.82, "p": 0.7668616569171541, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9979, "null_sd": 3.09, "v": 60.35, "rv_gaia": 59.67, "ew_limit_ma": 0.922}, {"star": "2966790170574625408", "z": [2.29, 0.13, 2.64, -1.75, 2.25, -1.73, -0.02, -0.5, -1.23], "ew_ma": [0.15, 0.01, 0.32, -0.16, 0.16, -0.14, -0.0, -0.04, -0.1], "z_comb": 1.46, "p": 0.7729113544322784, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 3.95, "v": 38.45, "rv_gaia": 37.83, "ew_limit_ma": 1.879}, {"star": "3646061719703116032", "z": [4.37, -2.09, -4.8, 0.65, -0.48, 2.14, 4.52, -0.15, -0.89], "ew_ma": [0.31, -0.14, -0.55, 0.05, -0.03, 0.17, 0.4, -0.01, -0.06], "z_comb": 1.19, "p": 0.7788610569471527, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 1.9, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.39}, {"star": "2523361151179609344", "z": [0.46, 1.51, 1.73, -0.46, -0.71, 0.29, -1.51, -1.4, 0.54], "ew_ma": [0.03, 0.08, 0.15, -0.04, -0.05, 0.02, -0.18, -0.09, 0.03], "z_comb": 1.11, "p": 0.7824108794560272, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 1.82, "v": 12.9, "rv_gaia": 12.23, "ew_limit_ma": 0.343}, {"star": "2341817487782612480", "z": [2.38, 1.12, -1.27, -1.87, -1.2, 0.71, 1.34, -0.08, 1.45], "ew_ma": [0.16, 0.09, -0.13, -0.17, -0.09, 0.06, 0.16, -0.01, 0.1], "z_comb": 1.61, "p": 0.7868106594670267, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.11, "v": 21.6, "rv_gaia": 20.93, "ew_limit_ma": 0.533}, {"star": "4041857799496807936", "z": [0.37, -1.48, 4.02, 2.2, 4.22, 1.25, -0.16, -2.53, -1.39], "ew_ma": [0.04, -0.14, 0.61, 0.2, 0.46, 0.1, -0.05, -0.22, -0.14], "z_comb": 1.58, "p": 0.8148092595370231, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.3, "v": 3.05, "rv_gaia": 2.44, "ew_limit_ma": 0.614}, {"star": "2423292879948720000", "z": [0.63, 2.67, 1.75, -1.87, -1.64, 2.71, -0.55, -0.38, -0.91], "ew_ma": [0.03, 0.14, 0.13, -0.11, -0.07, 0.14, -0.05, -0.02, -0.04], "z_comb": 2.03, "p": 0.824158792060397, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.17, "v": 29.65, "rv_gaia": 28.92, "ew_limit_ma": 0.285}, {"star": "2475331597059676288", "z": [2.75, 0.75, -0.54, 1.39, 1.04, -3.46, -0.75, -1.61, 2.54], "ew_ma": [0.4, 0.12, -0.12, 0.36, 0.2, -0.67, -0.23, -0.29, 0.49], "z_comb": 1.69, "p": 0.8261586920653967, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.5, "v": 22.4, "rv_gaia": 21.78, "ew_limit_ma": 1.16}, {"star": "3789271459953459328", "z": [0.68, 1.63, 3.5, 1.0, 0.52, -3.36, 0.3, -0.57, 2.25], "ew_ma": [0.08, 0.2, 0.59, 0.16, 0.08, -0.53, 0.08, -0.08, 0.32], "z_comb": 1.88, "p": 0.8338583070846458, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9937, "null_sd": 2.0, "v": 19.15, "rv_gaia": 18.5, "ew_limit_ma": 0.863}, {"star": "6370513647703084544", "z": [2.23, 1.06, -4.44, 0.58, 1.4, 1.28, 1.21, -1.06, 2.62], "ew_ma": [0.16, 0.09, -0.62, 0.05, 0.12, 0.1, 0.14, -0.08, 0.27], "z_comb": 2.21, "p": 0.8450577471126444, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.21, "v": 34.95, "rv_gaia": 34.33, "ew_limit_ma": 0.587}, {"star": "4117290138348536064", "z": [1.29, 1.94, -0.09, 2.19, -0.02, 1.31, 1.29, -0.99, -1.59], "ew_ma": [0.11, 0.17, -0.01, 0.31, -0.0, 0.19, 0.23, -0.1, -0.18], "z_comb": 2.54, "p": 0.848107594620269, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.59, "v": 10.6, "rv_gaia": 10.36, "ew_limit_ma": 0.637}, {"star": "3022685626580347392", "z": [-5.46, -0.85, 22.02, 6.29, -1.33, 2.69, 0.37, 2.27, -2.08], "ew_ma": [-0.52, -0.07, 7.53, 0.92, -0.15, 0.25, 0.07, 0.24, -0.25], "z_comb": 2.85, "p": 0.8606569671516424, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9982, "null_sd": 3.08, "v": 144.05, "rv_gaia": 143.42, "ew_limit_ma": 1.298}, {"star": "5395795730687103488", "z": [3.63, -1.76, 8.86, -0.99, -0.8, -0.82, 2.99, -0.14, -0.28], "ew_ma": [0.27, -0.14, 1.28, -0.11, -0.07, -0.07, 0.43, -0.01, -0.03], "z_comb": 2.57, "p": 0.8616069196540173, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9964, "null_sd": 2.43, "v": 44.0, "rv_gaia": 43.4, "ew_limit_ma": 0.584}, {"star": "6612242034982766848", "z": [-0.14, 1.93, -0.67, 0.57, 1.01, 9.5, 2.91, 1.08, -0.21], "ew_ma": [-0.01, 0.17, -0.12, 0.08, 0.12, 1.35, 0.51, 0.11, -0.03], "z_comb": 4.32, "p": 0.8702564871756412, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.72, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 0.903}, {"star": "5320952798822552064", "z": [5.83, -0.86, -1.44, -0.69, -1.07, 2.79, 0.73, 1.12, -0.27], "ew_ma": [0.33, -0.06, -0.12, -0.06, -0.06, 0.19, 0.06, 0.08, -0.02], "z_comb": 3.11, "p": 0.8767061646917654, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.88, "v": 12.4, "rv_gaia": 11.87, "ew_limit_ma": 0.453}, {"star": "5891531404470141824", "z": [2.76, 1.84, -0.91, -0.32, 1.76, -0.26, 0.04, -1.47, 1.13], "ew_ma": [0.23, 0.16, -0.1, -0.04, 0.16, -0.03, 0.01, -0.14, 0.13], "z_comb": 2.84, "p": 0.8831058447077647, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.42, "v": 35.2, "rv_gaia": 34.59, "ew_limit_ma": 0.719}, {"star": "6703245382605547520", "z": [-0.05, 0.78, 2.82, -0.29, 0.26, 1.83, 2.69, -2.06, 2.94], "ew_ma": [-0.0, 0.04, 0.23, -0.02, 0.02, 0.12, 0.27, -0.11, 0.15], "z_comb": 2.0, "p": 0.8908054597270136, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.83, "v": 33.15, "rv_gaia": 32.63, "ew_limit_ma": 0.307}, {"star": "3750995604764854400", "z": [2.06, -0.17, 3.69, 2.17, 0.57, 1.17, -0.75, -0.7, -0.41], "ew_ma": [0.11, -0.01, 0.28, 0.17, 0.03, 0.08, -0.06, -0.04, -0.03], "z_comb": 2.65, "p": 0.9076046197690115, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.97, "v": -17.45, "rv_gaia": -17.93, "ew_limit_ma": 0.302}, {"star": "2468730472844294016", "z": [0.92, 2.07, -0.08, 1.42, 2.28, -1.73, -0.34, -1.99, 1.96], "ew_ma": [0.08, 0.18, -0.01, 0.16, 0.23, -0.17, -0.05, -0.19, 0.18], "z_comb": 2.22, "p": 0.9104044797760112, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.67, "v": 8.85, "rv_gaia": 8.11, "ew_limit_ma": 0.498}, {"star": "5559265690666327168", "z": [0.17, 0.63, 15.44, 0.79, -0.8, 2.43, 1.59, 1.06, -2.0], "ew_ma": [0.02, 0.06, 2.72, 0.12, -0.09, 0.33, 0.36, 0.08, -0.22], "z_comb": 4.45, "p": 0.9146042697865107, "n_lines": 9, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.92, "v": 89.25, "rv_gaia": 88.55, "ew_limit_ma": 1.043}, {"star": "3811594088617869056", "z": [1.41, 3.29, 0.03, 0.7, -1.48, 2.0, 0.17, -1.26, -1.01], "ew_ma": [0.13, 0.29, 0.0, 0.09, -0.16, 0.22, 0.02, -0.1, -0.09], "z_comb": 2.87, "p": 0.9289535523223839, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.0, "v": 10.7, "rv_gaia": 10.06, "ew_limit_ma": 0.689}, {"star": "6088054505011960832", "z": [4.02, -2.1, 10.46, 4.33, -0.25, -1.32, 6.6, 4.45, -1.84], "ew_ma": [0.22, -0.12, 1.2, 0.34, -0.01, -0.09, 0.94, 0.3, -0.15], "z_comb": 4.86, "p": 0.9629518524073797, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.51, "v": 59.3, "rv_gaia": 58.66, "ew_limit_ma": 0.476}, {"star": "5540006949934104448", "z": [3.85, 0.15, 5.97, 2.26, 0.84, -2.38, 6.86, 3.14, 0.29], "ew_ma": [0.38, 0.01, 1.07, 0.38, 0.07, -0.18, 2.05, 0.26, 0.03], "z_comb": 4.84, "p": 0.9688515574221289, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9966, "null_sd": 2.5, "v": 50.1, "rv_gaia": 49.31, "ew_limit_ma": 0.905}, {"star": "5548164986925169024", "z": [1.11, -0.1, 14.71, 3.77, 0.57, -0.85, 2.33, 0.24, -1.49], "ew_ma": [0.06, -0.01, 1.04, 0.26, 0.03, -0.05, 0.24, 0.01, -0.11], "z_comb": 4.59, "p": 0.976001199940003, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.37, "v": 52.4, "rv_gaia": 51.69, "ew_limit_ma": 0.496}, {"star": "5725122999630404096", "z": [4.54, 1.6, 3.95, -0.3, -0.21, 4.41, 2.67, -0.07, 2.47], "ew_ma": [0.25, 0.12, 0.47, -0.03, -0.02, 0.4, 0.53, -0.01, 0.21], "z_comb": 6.21, "p": 0.9809509524523774, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9958, "null_sd": 2.75, "v": 33.35, "rv_gaia": 33.23, "ew_limit_ma": 0.657}, {"star": "5569858798004394624", "z": [4.16, 1.48, 8.98, 0.2, 1.23, 1.59, 3.29, 1.47, -0.69], "ew_ma": [0.27, 0.09, 0.94, 0.02, 0.07, 0.12, 0.5, 0.09, -0.05], "z_comb": 6.5, "p": 0.9908504574771262, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9974, "null_sd": 2.37, "v": 57.1, "rv_gaia": 56.33, "ew_limit_ma": 0.622}, {"star": "4777373903814124032", "z": [2.47, -0.18, 22.16, 3.93, 0.6, -2.45, 4.9, 0.96, -0.49], "ew_ma": [0.24, -0.02, 3.74, 0.49, 0.05, -0.28, 1.88, 0.09, -0.07], "z_comb": 7.05, "p": 0.9984000799960002, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.37, "v": 65.0, "rv_gaia": 64.22, "ew_limit_ma": 1.006}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Am_UVES.json b/papers/short_lived_elements/data/element_Am_UVES.json new file mode 100644 index 0000000000000000000000000000000000000000..f31f7776574b4600cb51356c87dc8c37fbc47a6d --- /dev/null +++ b/papers/short_lived_elements/data/element_Am_UVES.json @@ -0,0 +1 @@ +{"lines": [[4509.45, 0.9712990131287732], [4575.59, 1.0], [4324.57, 0.355624487734312], [4441.36, 0.3750919549679658], [4699.7, 0.41999688359800125], [4872.22, 0.45139794335478456], [4188.12, 0.1671644906080934], [4593.31, 0.20107464428475946], [5020.96, 0.24025880836889185]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "5155981730587168384", "z": [null, null, -18.95, -5.66, null, null, -3.58, null, null], "ew_ma": [null, null, -5.61, -1.1, null, null, -0.88, null, null], "z_comb": -17.42, "p": 9.99950002499875e-05, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9954, "null_sd": 4.26, "v": 7.2, "rv_gaia": 7.01, "ew_limit_ma": 0.0, "dominant": 4324.57, "shared": 6, "width": 4.0, "vet": "absorption at 4324.57 A shared by 6 other stars"}, {"star": "5320952798822552064", "z": [null, null, -9.96, -4.16, null, null, 1.82, null, null], "ew_ma": [null, null, -1.6, -0.65, null, null, 0.23, null, null], "z_comb": -8.83, "p": 0.003949802509874506, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 3.53, "v": 12.2, "rv_gaia": 11.87, "ew_limit_ma": 0.43, "dominant": 4324.57, "shared": 17, "width": 3.8, "vet": "absorption at 4324.57 A shared by 17 other stars"}, {"star": "3812355328621651328", "z": [-8.95, -5.33, -11.5, 1.03, 2.45, 2.83, -5.53, 3.42, null], "ew_ma": [-7.58, -4.9, -14.34, 1.24, 1.84, 2.29, -10.22, 2.99, null], "z_comb": -9.6, "p": 0.010249487525623718, "n_lines": 8, "n_spectra": 4, "twin_r": 0.9868, "null_sd": 3.74, "v": 4.0, "rv_gaia": 4.18, "ew_limit_ma": 2.871}, {"star": "2648914040357320576", "z": [-5.2, null, -13.57, -4.81, null, null, -1.03, null, null], "ew_ma": [-1.47, null, -6.16, -1.68, null, null, -0.62, null, null], "z_comb": -10.66, "p": 0.0103994800259987, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.01, "v": -13.55, "rv_gaia": -13.41, "ew_limit_ma": 1.276}, {"star": "2860924621205256704", "z": [-5.65, null, -6.07, 1.18, null, null, -5.36, null, null], "ew_ma": [-1.17, null, -1.94, 0.35, null, null, -2.21, null, null], "z_comb": -7.27, "p": 0.02424878756062197, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9937, "null_sd": 3.6, "v": -6.75, "rv_gaia": -6.75, "ew_limit_ma": 1.053}, {"star": "3482326708703712640", "z": [-3.63, null, -1.46, -5.23, null, null, -1.48, null, null], "ew_ma": [-1.15, null, -0.27, -0.78, null, null, -0.22, null, null], "z_comb": -5.62, "p": 0.025948702564871758, "n_lines": 4, "n_spectra": 1, "twin_r": 0.999, "null_sd": 3.07, "v": 7.55, "rv_gaia": 7.38, "ew_limit_ma": 1.691}, {"star": "4906784051581971200", "z": [null, null, -8.19, -2.05, null, null, -0.19, null, null], "ew_ma": [null, null, -2.59, -0.69, null, null, -0.06, null, null], "z_comb": -6.83, "p": 0.029598520073996302, "n_lines": 3, "n_spectra": 1, "twin_r": 0.996, "null_sd": 3.55, "v": 2.9, "rv_gaia": 2.92, "ew_limit_ma": 3.435}, {"star": "4657193606465368704", "z": [-7.85, null, -2.78, -1.41, null, null, -6.1, null, null], "ew_ma": [-1.63, null, -1.35, -0.58, null, null, -4.24, null, null], "z_comb": -9.13, "p": 0.039648017599120046, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9912, "null_sd": 4.24, "v": 14.75, "rv_gaia": 13.99, "ew_limit_ma": 1.287}, {"star": "6286606170175267840", "z": [-1.11, null, -8.13, -2.89, null, null, -6.36, null, null], "ew_ma": [-0.22, null, -3.0, -0.84, null, null, -3.68, null, null], "z_comb": -5.5, "p": 0.04909754512274386, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.68, "v": -23.0, "rv_gaia": -23.19, "ew_limit_ma": 1.098}, {"star": "5945941905576552064", "z": [-3.1, null, -4.15, -1.72, null, null, 1.7, null, null], "ew_ma": [-0.47, null, -0.86, -0.35, null, null, 0.33, null, null], "z_comb": -4.35, "p": 0.051347432628368585, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9979, "null_sd": 2.89, "v": -8.9, "rv_gaia": -9.54, "ew_limit_ma": 0.893}, {"star": "2423493369021649920", "z": [-3.91, null, -4.11, -3.03, null, null, -2.65, null, null], "ew_ma": [-1.01, null, -1.65, -1.16, null, null, -1.15, null, null], "z_comb": -6.14, "p": 0.05724713764311785, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.92, "v": -2.9, "rv_gaia": -2.55, "ew_limit_ma": 1.769}, {"star": "6384510877400590336", "z": [-6.07, null, 5.27, -1.31, null, null, -0.57, null, null], "ew_ma": [-0.89, null, 0.8, -0.22, null, null, -0.1, null, null], "z_comb": -4.14, "p": 0.07424628768561573, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 2.82, "v": -2.0, "rv_gaia": -2.29, "ew_limit_ma": 0.718}, {"star": "2430102808294101760", "z": [-1.01, null, -7.85, -1.72, null, null, -3.33, null, null], "ew_ma": [-0.12, null, -1.15, -0.29, null, null, -0.61, null, null], "z_comb": -4.47, "p": 0.08809559522023899, "n_lines": 4, "n_spectra": 4, "twin_r": 0.998, "null_sd": 3.51, "v": -9.8, "rv_gaia": -10.12, "ew_limit_ma": 0.958}, {"star": "5524982093479504384", "z": [-7.06, null, 2.38, 0.45, null, null, -3.03, null, null], "ew_ma": [-1.01, null, 0.72, 0.09, null, null, -1.12, null, null], "z_comb": -5.7, "p": 0.11019449027548622, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 4.11, "v": 9.5, "rv_gaia": 9.31, "ew_limit_ma": 1.342}, {"star": "6150200345317455232", "z": [-4.43, null, 0.78, 1.13, null, null, -6.84, null, null], "ew_ma": [-0.9, null, 0.22, 0.3, null, null, -2.08, null, null], "z_comb": -4.27, "p": 0.11619419029048547, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.7, "v": -6.75, "rv_gaia": -7.11, "ew_limit_ma": 1.668}, {"star": "4623036865373793408", "z": [null, null, -2.28, -0.57, null, null, -2.28, null, null], "ew_ma": [null, null, -0.49, -0.13, null, null, -0.54, null, null], "z_comb": -2.59, "p": 0.14419279036048196, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 2.65, "v": 10.9, "rv_gaia": 10.71, "ew_limit_ma": 2.562}, {"star": "3900151160301345152", "z": [-0.37, null, -0.58, -2.38, null, null, -4.46, null, null], "ew_ma": [-1.03, null, -1.07, -4.98, null, null, -10.11, null, null], "z_comb": -1.98, "p": 0.14979251037448127, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9284, "null_sd": 1.99, "v": 4.05, "rv_gaia": 4.92, "ew_limit_ma": 11.9}, {"star": "6764687466752221824", "z": [-2.16, null, -1.27, -0.35, null, null, -2.66, null, null], "ew_ma": [-0.65, null, -0.36, -0.11, null, null, -1.14, null, null], "z_comb": -2.81, "p": 0.16274186290685466, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.71, "v": -42.7, "rv_gaia": -42.55, "ew_limit_ma": 3.465}, {"star": "6128366415218881536", "z": [null, null, -6.57, -1.53, null, null, 4.82, null, null], "ew_ma": [null, null, -1.26, -0.36, null, null, 1.38, null, null], "z_comb": -3.87, "p": 0.16759162041897904, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 3.79, "v": 31.05, "rv_gaia": 30.47, "ew_limit_ma": 3.807}, {"star": "5292834403845151488", "z": [null, null, -0.42, -3.39, null, null, -0.68, null, null], "ew_ma": [null, null, -0.17, -1.56, null, null, -0.27, null, null], "z_comb": -2.82, "p": 0.18334083295835207, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9906, "null_sd": 3.71, "v": 18.6, "rv_gaia": 17.48, "ew_limit_ma": 6.372}, {"star": "3575733210781078016", "z": [-0.13, null, -9.02, -0.74, null, null, 1.98, null, null], "ew_ma": [-0.03, null, -2.42, -0.2, null, null, 1.47, null, null], "z_comb": -2.95, "p": 0.20493975301234937, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9921, "null_sd": 3.91, "v": 0.8, "rv_gaia": -0.41, "ew_limit_ma": 3.051}, {"star": "4733035238430992768", "z": [null, null, -4.01, -0.2, null, null, 0.44, null, null], "ew_ma": [null, null, -0.76, -0.03, null, null, 0.06, null, null], "z_comb": -2.63, "p": 0.20693965301734912, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9981, "null_sd": 3.23, "v": 0.45, "rv_gaia": 0.66, "ew_limit_ma": 2.294}, {"star": "3212075924646082176", "z": [2.19, null, -13.24, -1.97, null, null, 0.78, null, null], "ew_ma": [0.41, null, -4.87, -0.57, null, null, 0.3, null, null], "z_comb": -2.87, "p": 0.20833958302084896, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9938, "null_sd": 3.67, "v": 9.7, "rv_gaia": 10.31, "ew_limit_ma": 1.826}, {"star": "2898239468873596800", "z": [null, null, -2.49, -0.5, null, null, 0.69, null, null], "ew_ma": [null, null, -0.5, -0.08, null, null, 0.13, null, null], "z_comb": -1.76, "p": 0.2111394430278486, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.13, "v": -3.5, "rv_gaia": -3.85, "ew_limit_ma": 2.934}, {"star": "3946438125929224320", "z": [-3.55, null, -0.92, 1.27, null, null, -1.33, null, null], "ew_ma": [-0.66, null, -0.21, 0.27, null, null, -0.38, null, null], "z_comb": -3.17, "p": 0.2127893605319734, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.57, "v": 2.1, "rv_gaia": 1.76, "ew_limit_ma": 1.992}, {"star": "4675955810263106432", "z": [0.41, null, -13.12, 2.36, null, null, 3.38, null, null], "ew_ma": [0.09, null, -4.16, 0.65, null, null, 1.63, null, null], "z_comb": -2.53, "p": 0.23413829308534573, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 3.52, "v": 31.8, "rv_gaia": 28.42, "ew_limit_ma": 2.068}, {"star": "4745373133284418816", "z": [null, null, -6.17, 0.78, null, null, 1.53, null, null], "ew_ma": [null, null, -0.68, 0.19, null, null, 0.37, null, null], "z_comb": -3.03, "p": 0.24113794310284486, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.13, "v": 16.5, "rv_gaia": 16.94, "ew_limit_ma": 3.151}, {"star": "6226694571859532800", "z": [-1.11, null, -5.16, 0.31, null, null, 1.37, null, null], "ew_ma": [-0.16, null, -0.9, 0.06, null, null, 0.45, null, null], "z_comb": -2.3, "p": 0.24523773811309435, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.41, "v": 4.8, "rv_gaia": 5.14, "ew_limit_ma": 1.281}, {"star": "4341501106288171008", "z": [-1.52, null, -1.25, -1.13, null, null, 0.04, null, null], "ew_ma": [-0.54, null, -0.58, -0.29, null, null, 0.02, null, null], "z_comb": -2.1, "p": 0.25593720313984303, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 4.12, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 7.537}, {"star": "5129338021224785408", "z": [null, null, -2.91, -0.49, null, null, 1.0, null, null], "ew_ma": [null, null, -1.68, -0.41, null, null, 0.85, null, null], "z_comb": -1.93, "p": 0.27983600819959004, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9693, "null_sd": 3.85, "v": 25.65, "rv_gaia": 29.09, "ew_limit_ma": 16.444}, {"star": "5586381090520538880", "z": [0.81, null, -2.36, -1.48, null, null, -5.43, null, null], "ew_ma": [0.12, null, -0.42, -0.27, null, null, -0.98, null, null], "z_comb": -1.36, "p": 0.2832358382080896, "n_lines": 4, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.0, "v": 9.6, "rv_gaia": 9.18, "ew_limit_ma": 1.365}, {"star": "84625634714435968", "z": [-0.88, null, -1.45, 1.19, null, null, -2.67, null, null], "ew_ma": [-0.48, null, -0.82, 0.74, null, null, -1.43, null, null], "z_comb": -1.23, "p": 0.28608569571521425, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9924, "null_sd": 2.63, "v": 5.35, "rv_gaia": 4.34, "ew_limit_ma": 4.46}, {"star": "6515731817739456256", "z": [-1.35, null, -3.26, -1.23, null, null, 5.23, null, null], "ew_ma": [-0.16, null, -0.61, -0.2, null, null, 0.77, null, null], "z_comb": -1.85, "p": 0.3010849457527124, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.43, "v": -0.3, "rv_gaia": -1.09, "ew_limit_ma": 1.055}, {"star": "6912276699251278848", "z": [-0.01, null, -2.68, -2.28, null, null, 3.08, null, null], "ew_ma": [-0.0, null, -0.81, -0.8, null, null, 0.9, null, null], "z_comb": -1.17, "p": 0.31158442077896104, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.26, "v": -17.55, "rv_gaia": -17.49, "ew_limit_ma": 2.323}, {"star": "4976894960284258048", "z": [2.2, null, -11.44, 1.43, null, null, 0.32, null, null], "ew_ma": [0.34, null, -2.71, 0.31, null, null, 0.1, null, null], "z_comb": -1.21, "p": 0.3134843257837108, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 3.95, "v": 5.75, "rv_gaia": 5.76, "ew_limit_ma": 1.749}, {"star": "2750176827892427904", "z": [-0.3, null, -2.45, -1.26, null, null, -1.22, null, null], "ew_ma": [-0.12, null, -0.95, -0.47, null, null, -0.46, null, null], "z_comb": -1.65, "p": 0.31618419079046045, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.56, "v": -15.45, "rv_gaia": -14.72, "ew_limit_ma": 3.413}, {"star": "2531792756096759296", "z": [-1.36, null, 2.97, -0.32, null, null, -7.46, null, null], "ew_ma": [-0.19, null, 0.31, -0.05, null, null, -1.02, null, null], "z_comb": -1.47, "p": 0.3232338383080846, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 4.0, "v": 5.4, "rv_gaia": 5.96, "ew_limit_ma": 2.054}, {"star": "1244571953471006720", "z": [null, null, -3.68, -1.72, null, null, 2.88, null, null], "ew_ma": [null, null, -1.42, -0.96, null, null, 1.8, null, null], "z_comb": -2.72, "p": 0.3264836758162092, "n_lines": 3, "n_spectra": 4, "twin_r": 0.987, "null_sd": 4.3, "v": -16.2, "rv_gaia": -16.75, "ew_limit_ma": 10.803}, {"star": "5493588665684618752", "z": [-1.25, null, 0.56, -0.67, null, null, -6.2, null, null], "ew_ma": [-0.27, null, 0.28, -0.2, null, null, -2.64, null, null], "z_comb": -2.07, "p": 0.35153242337883106, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.92, "v": 5.7, "rv_gaia": 4.82, "ew_limit_ma": 3.362}, {"star": "2964794041574370560", "z": [null, null, 0.09, -1.56, null, null, -0.15, null, null], "ew_ma": [null, null, 0.02, -0.42, null, null, -0.03, null, null], "z_comb": -1.07, "p": 0.35713214339283034, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.31, "v": 29.95, "rv_gaia": 29.0, "ew_limit_ma": 5.476}, {"star": "3529518709839090176", "z": [-2.02, null, 2.97, 0.71, null, null, -0.74, null, null], "ew_ma": [-0.32, null, 0.66, 0.14, null, null, -0.14, null, null], "z_comb": -0.69, "p": 0.3575321233938303, "n_lines": 4, "n_spectra": 3, "twin_r": 0.998, "null_sd": 3.54, "v": -20.35, "rv_gaia": -20.24, "ew_limit_ma": 1.588}, {"star": "3256786534197166208", "z": [1.31, null, -0.74, -2.7, null, null, -5.82, null, null], "ew_ma": [0.38, null, -0.19, -0.89, null, null, -1.36, null, null], "z_comb": -0.87, "p": 0.3688815559222039, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.19, "v": 17.9, "rv_gaia": 17.62, "ew_limit_ma": 2.383}, {"star": "3269362645115584640", "z": [-0.62, null, -1.77, 0.55, null, null, -2.93, null, null], "ew_ma": [-0.11, null, -0.35, 0.15, null, null, -0.82, null, null], "z_comb": -1.36, "p": 0.3965301734913254, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9953, "null_sd": 2.87, "v": 19.15, "rv_gaia": 18.73, "ew_limit_ma": 1.342}, {"star": "5381537023379295232", "z": [null, null, -2.24, -0.13, null, null, 3.58, null, null], "ew_ma": [null, null, -2.11, -0.12, null, null, 2.12, null, null], "z_comb": -0.46, "p": 0.40922953852307387, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9861, "null_sd": 2.72, "v": 17.55, "rv_gaia": 16.94, "ew_limit_ma": 15.142}, {"star": "3265335443260522112", "z": [null, null, -4.37, 0.68, null, null, 4.58, null, null], "ew_ma": [null, null, -1.57, 0.22, null, null, 2.42, null, null], "z_comb": -0.98, "p": 0.4198290085495725, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9952, "null_sd": 4.52, "v": 20.25, "rv_gaia": 19.3, "ew_limit_ma": 8.306}, {"star": "3584074380866605440", "z": [-1.71, 3.55, 1.93, 0.43, -4.09, -2.77, 0.44, -3.48, null], "ew_ma": [-0.56, 0.64, 0.41, 0.09, -1.32, -0.48, 0.12, -0.93, null], "z_comb": -0.53, "p": 0.42352882355882204, "n_lines": 8, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.89, "v": 20.6, "rv_gaia": 19.78, "ew_limit_ma": 1.624}, {"star": "6963761190199424", "z": [1.37, null, -1.87, 0.51, null, null, -4.86, null, null], "ew_ma": [0.18, null, -0.4, 0.09, null, null, -0.97, null, null], "z_comb": 0.04, "p": 0.45167741612919354, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.77, "v": 25.7, "rv_gaia": 24.71, "ew_limit_ma": 2.117}, {"star": "5801950515627094400", "z": [1.52, null, -4.11, -2.84, null, null, 3.19, null, null], "ew_ma": [0.52, null, -2.08, -0.83, null, null, 1.54, null, null], "z_comb": -0.47, "p": 0.45477726113694317, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.0, "v": 59.6, "rv_gaia": 60.13, "ew_limit_ma": 4.196}, {"star": "2831490694929214464", "z": [-0.87, null, 0.5, -0.02, null, null, -0.24, null, null], "ew_ma": [-0.11, null, 0.09, -0.0, null, null, -0.05, null, null], "z_comb": -0.64, "p": 0.45627718614069296, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.59, "v": -1.2, "rv_gaia": -0.92, "ew_limit_ma": 1.785}, {"star": "5264749303462961280", "z": [null, null, -3.04, -0.28, null, null, 5.53, null, null], "ew_ma": [null, null, -1.31, -0.14, null, null, 3.62, null, null], "z_comb": -0.48, "p": 0.46182690865456727, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9914, "null_sd": 3.64, "v": 35.75, "rv_gaia": 36.06, "ew_limit_ma": 9.662}, {"star": "1787990525934491776", "z": [2.37, null, -5.0, -2.52, null, null, -2.08, null, null], "ew_ma": [1.68, null, -2.8, -1.66, null, null, -1.28, null, null], "z_comb": -0.69, "p": 0.46497675116244186, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9877, "null_sd": 3.5, "v": -44.35, "rv_gaia": -44.33, "ew_limit_ma": 10.32}, {"star": "5528591961953902720", "z": [null, null, -1.68, -0.43, null, null, 3.91, null, null], "ew_ma": [null, null, -0.2, -0.08, null, null, 0.87, null, null], "z_comb": -0.19, "p": 0.47072646367681614, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.38, "v": -1.5, "rv_gaia": -1.8, "ew_limit_ma": 2.789}, {"star": "4343066192373826176", "z": [0.14, null, 1.99, 1.83, null, null, -8.07, null, null], "ew_ma": [0.03, null, 0.84, 1.17, null, null, -3.26, null, null], "z_comb": 0.16, "p": 0.4873756312184391, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9741, "null_sd": 4.46, "v": -32.6, "rv_gaia": -30.57, "ew_limit_ma": 3.341}, {"star": "5730371484020807808", "z": [-0.56, null, -1.95, 3.39, null, null, 1.4, null, null], "ew_ma": [-0.1, null, -0.54, 0.69, null, null, 0.32, null, null], "z_comb": 0.24, "p": 0.49472526373681314, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 4.03, "v": 119.4, "rv_gaia": 119.47, "ew_limit_ma": 2.23}, {"star": "3261878613062758144", "z": [null, null, -0.85, 1.67, null, null, -1.61, null, null], "ew_ma": [null, null, -0.29, 0.47, null, null, -0.55, null, null], "z_comb": 0.11, "p": 0.5097745112744363, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.23, "v": 22.25, "rv_gaia": 22.59, "ew_limit_ma": 8.278}, {"star": "6382933589314905472", "z": [1.84, null, -0.21, -1.82, null, null, -1.14, null, null], "ew_ma": [0.44, null, -0.14, -0.61, null, null, -0.75, null, null], "z_comb": 0.76, "p": 0.607369631518424, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9788, "null_sd": 4.69, "v": 32.8, "rv_gaia": 32.35, "ew_limit_ma": 4.24}, {"star": "3511640513332581504", "z": [1.1, null, 2.38, -0.42, null, null, 1.3, null, null], "ew_ma": [0.19, null, 0.54, -0.13, null, null, 0.37, null, null], "z_comb": 1.78, "p": 0.6131693415329234, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 3.86, "v": -12.25, "rv_gaia": -12.25, "ew_limit_ma": 2.344}, {"star": "6577318075351824512", "z": [null, null, 3.03, -0.68, null, null, -2.5, null, null], "ew_ma": [null, null, 0.69, -0.17, null, null, -0.7, null, null], "z_comb": 0.74, "p": 0.6145692715364232, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 2.81, "v": 12.2, "rv_gaia": 11.95, "ew_limit_ma": 4.931}, {"star": "2473608009504466688", "z": [2.84, null, -4.15, -2.61, null, null, -0.94, null, null], "ew_ma": [0.45, null, -1.04, -0.65, null, null, -0.25, null, null], "z_comb": 0.13, "p": 0.6176691165441728, "n_lines": 4, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.17, "v": 9.25, "rv_gaia": 8.21, "ew_limit_ma": 3.182}, {"star": "6163964031871884672", "z": [3.06, null, -4.6, -1.49, null, null, 3.68, null, null], "ew_ma": [0.41, null, -0.94, -0.27, null, null, 0.84, null, null], "z_comb": 1.25, "p": 0.6183190840457977, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.72, "v": 3.35, "rv_gaia": 3.36, "ew_limit_ma": 1.506}, {"star": "5916947921402171264", "z": [-0.92, null, 3.73, 0.8, null, null, -2.53, null, null], "ew_ma": [-0.27, null, 1.42, 0.2, null, null, -1.1, null, null], "z_comb": 0.28, "p": 0.6185690715464227, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.96, "v": 99.0, "rv_gaia": 99.72, "ew_limit_ma": 6.377}, {"star": "3584074376569429248", "z": [0.79, null, 3.81, -2.27, null, null, 0.01, null, null], "ew_ma": [0.32, null, 0.92, -0.47, null, null, 0.0, null, null], "z_comb": 1.15, "p": 0.6257687115644218, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.84, "v": 20.8, "rv_gaia": 20.73, "ew_limit_ma": 3.563}, {"star": "6564091190988411520", "z": [null, null, -1.94, 3.17, null, null, -0.07, null, null], "ew_ma": [null, null, -0.42, 0.66, null, null, -0.02, null, null], "z_comb": 0.9, "p": 0.6268686565671716, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 2.76, "v": -7.05, "rv_gaia": -7.55, "ew_limit_ma": 3.714}, {"star": "3732539683617410816", "z": [0.89, null, 2.32, -0.95, null, null, -1.48, null, null], "ew_ma": [0.13, null, 0.58, -0.2, null, null, -0.48, null, null], "z_comb": 0.98, "p": 0.6296685165741713, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 3.57, "v": -27.0, "rv_gaia": -27.25, "ew_limit_ma": 2.005}, {"star": "2913411183149615744", "z": [null, null, 2.7, -1.69, null, null, 0.36, null, null], "ew_ma": [null, null, 0.94, -0.64, null, null, 0.16, null, null], "z_comb": 0.71, "p": 0.6353682315884206, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9953, "null_sd": 3.22, "v": 21.5, "rv_gaia": 21.69, "ew_limit_ma": 8.647}, {"star": "3630099250409312640", "z": [1.83, null, -2.07, 0.82, null, null, -1.14, null, null], "ew_ma": [2.92, null, -0.84, 0.94, null, null, -0.87, null, null], "z_comb": 1.04, "p": 0.6356682165891705, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9298, "null_sd": 3.86, "v": -10.6, "rv_gaia": -9.78, "ew_limit_ma": 28.771}, {"star": "6770313530317154560", "z": [1.43, null, 3.91, -1.07, null, null, -1.87, null, null], "ew_ma": [0.21, null, 0.84, -0.21, null, null, -0.43, null, null], "z_comb": 1.86, "p": 0.6826658667066646, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 4.01, "v": -24.95, "rv_gaia": -24.7, "ew_limit_ma": 3.039}, {"star": "2423292879948720000", "z": [null, null, 1.08, -1.32, null, null, 4.75, null, null], "ew_ma": [null, null, 0.19, -0.28, null, null, 1.01, null, null], "z_comb": 1.26, "p": 0.6836158192090396, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.54, "v": 29.05, "rv_gaia": 28.92, "ew_limit_ma": 4.756}, {"star": "5596797039059063680", "z": [null, null, 3.79, -0.96, null, null, -2.2, null, null], "ew_ma": [null, null, 0.63, -0.14, null, null, -0.45, null, null], "z_comb": 1.14, "p": 0.6846657667116645, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 3.57, "v": -15.4, "rv_gaia": -15.71, "ew_limit_ma": 4.34}, {"star": "4345775217221821312", "z": [1.27, null, 0.47, 0.63, null, null, -2.56, null, null], "ew_ma": [0.17, null, 0.08, 0.13, null, null, -0.62, null, null], "z_comb": 1.08, "p": 0.6988650567471626, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9964, "null_sd": 2.72, "v": 11.55, "rv_gaia": 11.71, "ew_limit_ma": 1.419}, {"star": "6141742283401003264", "z": [null, null, -1.4, 2.09, null, null, 2.81, null, null], "ew_ma": [null, null, -0.45, 0.66, null, null, 1.24, null, null], "z_comb": 1.39, "p": 0.7077646117694115, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.94, "v": -14.0, "rv_gaia": -13.03, "ew_limit_ma": 10.186}, {"star": "4768170579173552896", "z": [null, null, -1.83, 2.08, null, null, 5.29, null, null], "ew_ma": [null, null, -0.39, 0.38, null, null, 1.18, null, null], "z_comb": 1.86, "p": 0.7275136243187841, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 3.64, "v": -5.25, "rv_gaia": -5.53, "ew_limit_ma": 5.805}, {"star": "5760701787150565888", "z": [1.03, null, 3.27, 1.67, null, null, 3.1, null, null], "ew_ma": [0.17, null, 0.68, 0.5, null, null, 1.26, null, null], "z_comb": 2.97, "p": 0.7384630768461576, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.7, "v": 33.4, "rv_gaia": 31.99, "ew_limit_ma": 2.266}, {"star": "3750995604764854400", "z": [null, null, 4.61, 0.68, null, null, -4.2, null, null], "ew_ma": [null, null, 0.66, 0.14, null, null, -0.76, null, null], "z_comb": 2.19, "p": 0.7535123243837808, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.63, "v": -17.6, "rv_gaia": -17.93, "ew_limit_ma": 4.526}, {"star": "6133033601555979648", "z": [4.74, null, -7.31, -0.86, null, null, 5.84, null, null], "ew_ma": [0.89, null, -2.35, -0.25, null, null, 2.61, null, null], "z_comb": 2.38, "p": 0.7566621668916554, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 3.99, "v": 18.4, "rv_gaia": 18.05, "ew_limit_ma": 3.074}, {"star": "4912580642524184960", "z": [-0.32, null, 5.3, 0.36, null, null, 4.45, null, null], "ew_ma": [-0.04, null, 0.64, 0.05, null, null, 0.57, null, null], "z_comb": 2.2, "p": 0.7673616319184041, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9982, "null_sd": 2.92, "v": 28.45, "rv_gaia": 27.64, "ew_limit_ma": 1.406}, {"star": "4722135642226902656", "z": [3.86, null, -0.53, -3.01, null, null, -2.64, null, null], "ew_ma": [0.59, null, -0.12, -0.55, null, null, -0.53, null, null], "z_comb": 1.79, "p": 0.7700114994250288, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.62, "v": 12.2, "rv_gaia": 11.94, "ew_limit_ma": 1.809}, {"star": "4303294039306246656", "z": [3.19, null, -2.91, -0.27, null, null, 5.07, null, null], "ew_ma": [0.45, null, -0.5, -0.05, null, null, 1.14, null, null], "z_comb": 2.52, "p": 0.7817109144542773, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.96, "v": 0.1, "rv_gaia": -0.08, "ew_limit_ma": 2.553}, {"star": "5553647083168192512", "z": [-0.52, null, 5.97, 3.6, null, null, 5.63, null, null], "ew_ma": [-0.09, null, 1.65, 0.82, null, null, 1.55, null, null], "z_comb": 3.51, "p": 0.7961601919904004, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9937, "null_sd": 3.91, "v": 60.55, "rv_gaia": 59.67, "ew_limit_ma": 3.206}, {"star": "5062172841616745856", "z": [2.22, null, 2.39, 0.62, null, null, 3.38, null, null], "ew_ma": [0.35, null, 0.56, 0.14, null, null, 1.15, null, null], "z_comb": 3.41, "p": 0.7966601669916504, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9969, "null_sd": 3.81, "v": 11.7, "rv_gaia": 11.16, "ew_limit_ma": 3.002}, {"star": "3702148666829533952", "z": [5.1, null, -2.43, -2.25, null, null, 0.56, null, null], "ew_ma": [0.95, null, -1.28, -0.78, null, null, 0.23, null, null], "z_comb": 3.0, "p": 0.824608769561522, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9912, "null_sd": 3.96, "v": 3.8, "rv_gaia": 2.63, "ew_limit_ma": 3.546}, {"star": "5559265690666326016", "z": [-1.68, null, 16.92, 0.87, null, null, 2.6, null, null], "ew_ma": [-0.32, null, 5.8, 0.22, null, null, 1.21, null, null], "z_comb": 4.63, "p": 0.832408379581021, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9935, "null_sd": 4.39, "v": 89.85, "rv_gaia": 88.81, "ew_limit_ma": 3.439}, {"star": "5481848424118748672", "z": [null, null, -0.37, 4.53, null, null, 2.23, null, null], "ew_ma": [null, null, -0.24, 1.77, null, null, 1.07, null, null], "z_comb": 3.58, "p": 0.8353082345882706, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9838, "null_sd": 3.48, "v": 33.05, "rv_gaia": 31.45, "ew_limit_ma": 13.26}, {"star": "2980492387558410112", "z": [null, null, 3.07, 0.04, null, null, 2.26, null, null], "ew_ma": [null, null, 1.53, 0.02, null, null, 2.72, null, null], "z_comb": 2.74, "p": 0.83990800459977, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9691, "null_sd": 3.27, "v": 21.15, "rv_gaia": 21.6, "ew_limit_ma": 16.818}, {"star": "3282511876473223552", "z": [-2.79, null, 14.64, 7.8, null, null, -7.67, null, null], "ew_ma": [-0.43, null, 8.36, 2.59, null, null, -4.23, null, null], "z_comb": 3.72, "p": 0.8404579771011449, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9924, "null_sd": 4.08, "v": -46.3, "rv_gaia": -46.55, "ew_limit_ma": 3.748}, {"star": "2382711653818308224", "z": [5.2, null, -5.63, 2.96, null, null, -1.93, null, null], "ew_ma": [1.78, null, -2.06, 1.38, null, null, -0.88, null, null], "z_comb": 3.44, "p": 0.8413079346032698, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9906, "null_sd": 3.31, "v": 5.8, "rv_gaia": 6.41, "ew_limit_ma": 4.603}, {"star": "4423865487962417024", "z": [1.09, null, 5.46, 0.92, null, null, -0.56, null, null], "ew_ma": [0.19, null, 1.15, 0.27, null, null, -0.21, null, null], "z_comb": 2.92, "p": 0.8551572421378931, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.52, "v": 19.3, "rv_gaia": 18.95, "ew_limit_ma": 2.946}, {"star": "4421455530273900032", "z": [1.67, null, 4.72, 2.04, null, null, 3.32, null, null], "ew_ma": [0.33, null, 2.21, 0.57, null, null, 1.34, null, null], "z_comb": 4.15, "p": 0.8594570271486426, "n_lines": 4, "n_spectra": 1, "twin_r": 0.993, "null_sd": 4.48, "v": 54.65, "rv_gaia": 54.37, "ew_limit_ma": 4.614}, {"star": "4775347916201249792", "z": [3.14, null, 0.27, 0.8, null, null, -0.57, null, null], "ew_ma": [1.24, null, 0.09, 0.33, null, null, -0.19, null, null], "z_comb": 3.01, "p": 0.8822558872056397, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9812, "null_sd": 3.02, "v": -4.9, "rv_gaia": -4.59, "ew_limit_ma": 5.536}, {"star": "6166183842771027328", "z": [4.44, null, 5.9, -2.86, null, null, -4.03, null, null], "ew_ma": [0.66, null, 1.53, -0.6, null, null, -0.83, null, null], "z_comb": 4.19, "p": 0.887855607219639, "n_lines": 4, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.4, "v": -17.35, "rv_gaia": -17.46, "ew_limit_ma": 2.733}, {"star": "5951165616611763456", "z": [5.76, 1.71, 0.82, -0.5, -2.57, -1.51, 4.05, -0.47, null], "ew_ma": [1.33, 0.36, 0.38, -0.19, -0.68, -0.47, 1.82, -0.12, null], "z_comb": 3.82, "p": 0.8985550722463876, "n_lines": 8, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.01, "v": 25.75, "rv_gaia": 25.96, "ew_limit_ma": 2.216}, {"star": "4934923028038871296", "z": [6.02, null, -4.59, -0.87, null, null, 7.38, null, null], "ew_ma": [0.86, null, -0.87, -0.17, null, null, 1.93, null, null], "z_comb": 4.61, "p": 0.9153042347882606, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.64, "v": 12.95, "rv_gaia": 11.9, "ew_limit_ma": 2.34}, {"star": "4381250547575102208", "z": [null, null, 9.88, 0.76, null, null, -3.57, null, null], "ew_ma": [null, null, 6.98, 0.51, null, null, -1.75, null, null], "z_comb": 5.89, "p": 0.9187040647967601, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9907, "null_sd": 3.95, "v": 45.05, "rv_gaia": 44.84, "ew_limit_ma": 23.486}, {"star": "6161806515182527616", "z": [2.67, null, 6.9, 0.22, null, null, -2.1, null, null], "ew_ma": [0.76, null, 1.52, 0.04, null, null, -0.72, null, null], "z_comb": 4.29, "p": 0.92020398980051, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.27, "v": 81.9, "rv_gaia": 82.23, "ew_limit_ma": 4.354}, {"star": "2417456431710276096", "z": [null, null, 0.71, 4.8, null, null, 1.33, null, null], "ew_ma": [null, null, 0.08, 0.65, null, null, 0.16, null, null], "z_comb": 4.19, "p": 0.9258537073146342, "n_lines": 3, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.23, "v": 8.15, "rv_gaia": 7.88, "ew_limit_ma": 3.778}, {"star": "5567900121118276736", "z": [null, null, 2.57, 4.12, null, null, 0.72, null, null], "ew_ma": [null, null, 0.57, 0.85, null, null, 0.14, null, null], "z_comb": 4.75, "p": 0.9271036448177591, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.55, "v": 29.1, "rv_gaia": 27.55, "ew_limit_ma": 6.768}, {"star": "5609058277323483392", "z": [null, null, 5.23, 1.11, null, null, 4.29, null, null], "ew_ma": [null, null, 3.17, 0.53, null, null, 2.92, null, null], "z_comb": 5.5, "p": 0.9285535723213839, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.7, "v": 71.85, "rv_gaia": 72.42, "ew_limit_ma": 19.283}, {"star": "2899947933845777920", "z": [null, null, 3.48, 2.26, null, null, 2.6, null, null], "ew_ma": [null, null, 0.68, 0.38, null, null, 0.63, null, null], "z_comb": 4.64, "p": 0.9336033198340083, "n_lines": 3, "n_spectra": 1, "twin_r": 0.997, "null_sd": 3.28, "v": 37.85, "rv_gaia": 35.78, "ew_limit_ma": 5.547}, {"star": "4925088171405735680", "z": [6.22, null, -2.08, 1.14, null, null, 5.32, null, null], "ew_ma": [0.96, null, -0.51, 0.23, null, null, 1.32, null, null], "z_comb": 5.95, "p": 0.936653167341633, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 4.09, "v": 36.45, "rv_gaia": 36.66, "ew_limit_ma": 2.582}, {"star": "3400292798990117888", "z": [null, null, 6.45, 2.08, null, null, -1.23, null, null], "ew_ma": [null, null, 1.72, 0.5, null, null, -0.28, null, null], "z_comb": 5.28, "p": 0.9367031648417579, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.71, "v": 37.45, "rv_gaia": 37.7, "ew_limit_ma": 8.455}, {"star": "3639760521643499776", "z": [null, null, 3.53, 2.88, null, null, -0.23, null, null], "ew_ma": [null, null, 1.47, 1.57, null, null, -0.12, null, null], "z_comb": 4.23, "p": 0.944652767361632, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9961, "null_sd": 2.5, "v": -11.5, "rv_gaia": -12.39, "ew_limit_ma": 12.096}, {"star": "2477891500647336704", "z": [5.3, null, 0.43, 1.42, null, null, -0.08, null, null], "ew_ma": [1.31, null, 0.13, 0.39, null, null, -0.02, null, null], "z_comb": 5.23, "p": 0.9469026548672567, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.11, "v": -14.75, "rv_gaia": -14.92, "ew_limit_ma": 3.499}, {"star": "3118434397663311360", "z": [4.45, null, 7.38, 1.99, null, null, 2.11, null, null], "ew_ma": [0.78, null, 2.38, 0.41, null, null, 0.65, null, null], "z_comb": 7.23, "p": 0.952252387380631, "n_lines": 4, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.09, "v": 47.4, "rv_gaia": 47.33, "ew_limit_ma": 3.39}, {"star": "5409121433672765824", "z": [null, null, 10.1, 0.14, null, null, 1.06, null, null], "ew_ma": [null, null, 2.43, 0.03, null, null, 0.18, null, null], "z_comb": 7.03, "p": 0.9665016749162542, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9968, "null_sd": 3.6, "v": 47.85, "rv_gaia": 47.45, "ew_limit_ma": 7.473}, {"star": "4315804351350378496", "z": [-0.73, null, 18.32, 3.92, null, null, 4.03, null, null], "ew_ma": [-0.33, null, 19.28, 2.6, null, null, 5.58, null, null], "z_comb": 7.14, "p": 0.9724013799310034, "n_lines": 4, "n_spectra": 4, "twin_r": 0.992, "null_sd": 3.94, "v": -100.25, "rv_gaia": -100.33, "ew_limit_ma": 11.059}, {"star": "5266348577487273344", "z": [null, null, 2.15, 3.95, null, null, 3.63, null, null], "ew_ma": [null, null, 0.87, 1.54, null, null, 1.24, null, null], "z_comb": 5.25, "p": 0.976151192440378, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9972, "null_sd": 2.87, "v": 14.15, "rv_gaia": 13.6, "ew_limit_ma": 10.295}, {"star": "3250489115709122560", "z": [null, null, 11.06, -0.83, null, null, -0.34, null, null], "ew_ma": [null, null, 2.33, -0.16, null, null, -0.06, null, null], "z_comb": 6.56, "p": 0.9767511624418779, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.19, "v": 120.55, "rv_gaia": 120.58, "ew_limit_ma": 6.693}, {"star": "5902750168276592256", "z": [-0.64, null, 24.27, 1.74, null, null, -0.74, null, null], "ew_ma": [-0.14, null, 11.58, 0.53, null, null, -0.32, null, null], "z_comb": 7.67, "p": 0.983550822458877, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.53, "v": -68.4, "rv_gaia": -68.78, "ew_limit_ma": 4.734}, {"star": "6018047019138644480", "z": [6.49, null, 2.74, 1.43, null, null, -5.01, null, null], "ew_ma": [2.55, null, 0.98, 0.55, null, null, -2.03, null, null], "z_comb": 6.27, "p": 0.9872006399680016, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 3.06, "v": 12.85, "rv_gaia": 12.85, "ew_limit_ma": 6.506}, {"star": "3188395880157173120", "z": [1.02, null, 19.63, 1.92, null, null, 3.87, null, null], "ew_ma": [0.21, null, 8.26, 0.55, null, null, 2.09, null, null], "z_comb": 8.4, "p": 0.9875506224688766, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9939, "null_sd": 3.82, "v": 77.55, "rv_gaia": 77.12, "ew_limit_ma": 4.671}, {"star": "6062166950467100032", "z": [0.06, null, 25.99, 1.36, null, null, -2.42, null, null], "ew_ma": [0.01, null, 9.55, 0.32, null, null, -0.61, null, null], "z_comb": 8.45, "p": 0.9879506024698765, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9938, "null_sd": 4.6, "v": -64.15, "rv_gaia": -63.57, "ew_limit_ma": 4.521}, {"star": "2029433521248546304", "z": [-2.12, null, 29.92, 5.69, null, null, -1.92, null, null], "ew_ma": [-0.54, null, 16.91, 2.37, null, null, -0.76, null, null], "z_comb": 9.34, "p": 0.9905504724763762, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9962, "null_sd": 3.78, "v": -45.7, "rv_gaia": -45.34, "ew_limit_ma": 6.342}, {"star": "3482326708703712896", "z": [7.05, null, -1.82, 2.02, null, null, -0.21, null, null], "ew_ma": [1.42, null, -0.28, 0.35, null, null, -0.03, null, null], "z_comb": 6.22, "p": 0.9931503424828758, "n_lines": 4, "n_spectra": 1, "twin_r": 0.999, "null_sd": 2.82, "v": 5.45, "rv_gaia": 5.62, "ew_limit_ma": 2.778}, {"star": "5540006949934104448", "z": [null, null, 5.37, 4.09, null, null, 3.85, null, null], "ew_ma": [null, null, 8.44, 6.59, null, null, 5.3, null, null], "z_comb": 7.53, "p": 0.9994000299985001, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9836, "null_sd": 2.09, "v": 49.25, "rv_gaia": 49.31, "ew_limit_ma": 45.705}, {"star": "2966790170574625408", "z": [null, null, 14.35, 3.88, null, null, 2.43, null, null], "ew_ma": [null, null, 3.37, 0.59, null, null, 0.5, null, null], "z_comb": 12.82, "p": 1.0, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9974, "null_sd": 3.07, "v": 39.3, "rv_gaia": 37.83, "ew_limit_ma": 8.736}, {"star": "5569858798004394624", "z": [null, null, 16.42, 2.2, null, null, 7.92, null, null], "ew_ma": [null, null, 4.73, 0.49, null, null, 2.39, null, null], "z_comb": 14.7, "p": 1.0, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9952, "null_sd": 3.57, "v": 56.9, "rv_gaia": 56.33, "ew_limit_ma": 14.143}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Cm_ESPRESSO.json b/papers/short_lived_elements/data/element_Cm_ESPRESSO.json new file mode 100644 index 0000000000000000000000000000000000000000..b30b6630da00230dd1a2460d2409c559ce62d767 --- /dev/null +++ b/papers/short_lived_elements/data/element_Cm_ESPRESSO.json @@ -0,0 +1 @@ +{"lines": [[4207.66, 1.0]], "stable": [true], "results": [{"star": "4367026303085396352", "z": [-3.25], "ew_ma": [-0.27], "z_comb": -3.25, "p": 0.08728179551122195, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9986, "null_sd": 2.6, "v": -35.2, "rv_gaia": -35.94, "ew_limit_ma": 0.558}, {"star": "1212385193677161088", "z": [-2.64], "ew_ma": [-0.34], "z_comb": -2.64, "p": 0.09975062344139651, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9972, "null_sd": 2.27, "v": -38.2, "rv_gaia": -38.72, "ew_limit_ma": 0.788}, {"star": "5596797039059063680", "z": [-2.52], "ew_ma": [-0.28], "z_comb": -2.52, "p": 0.09975062344139651, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.79, "v": -14.95, "rv_gaia": -15.71, "ew_limit_ma": 1.12}, {"star": "5427207918907843072", "z": [-2.91], "ew_ma": [-0.36], "z_comb": -2.91, "p": 0.12219451371571072, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.69, "v": 65.7, "rv_gaia": 65.01, "ew_limit_ma": 0.685}, {"star": "2343647384368388608", "z": [-2.14], "ew_ma": [-0.18], "z_comb": -2.14, "p": 0.1770573566084788, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9989, "null_sd": 2.66, "v": 57.4, "rv_gaia": 56.73, "ew_limit_ma": 0.382}, {"star": "3975129194660883328", "z": [-1.31], "ew_ma": [-0.34], "z_comb": -1.31, "p": 0.19201995012468828, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 1.48, "v": 6.75, "rv_gaia": 5.97, "ew_limit_ma": 0.787}, {"star": "2966316109264052096", "z": [-1.69], "ew_ma": [-0.49], "z_comb": -1.69, "p": 0.2194513715710723, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9958, "null_sd": 2.97, "v": 43.05, "rv_gaia": 42.46, "ew_limit_ma": 3.355}, {"star": "3646061719703116032", "z": [-1.66], "ew_ma": [-0.24], "z_comb": -1.66, "p": 0.2194513715710723, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.57, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.935}, {"star": "3775795982881589376", "z": [-1.73], "ew_ma": [-0.29], "z_comb": -1.73, "p": 0.22942643391521197, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.93, "v": 30.5, "rv_gaia": 29.93, "ew_limit_ma": 2.388}, {"star": "4176501313320676992", "z": [-1.4], "ew_ma": [-0.2], "z_comb": -1.4, "p": 0.23940149625935161, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.47, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 1.116}, {"star": "6524024506237594368", "z": [-1.73], "ew_ma": [-0.24], "z_comb": -1.73, "p": 0.24438902743142144, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 4.34, "v": 33.15, "rv_gaia": 32.4, "ew_limit_ma": 3.574}, {"star": "2835207319109249920", "z": [-1.6], "ew_ma": [-0.2], "z_comb": -1.6, "p": 0.2593516209476309, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.19, "v": -32.55, "rv_gaia": -33.33, "ew_limit_ma": 1.199}, {"star": "5663558453071724288", "z": [-1.73], "ew_ma": [-0.27], "z_comb": -1.73, "p": 0.2593516209476309, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9946, "null_sd": 3.55, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 2.379}, {"star": "3250489115709122560", "z": [-2.41], "ew_ma": [-1.17], "z_comb": -2.41, "p": 0.26932668329177056, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9721, "null_sd": 11.7, "v": 121.15, "rv_gaia": 120.58, "ew_limit_ma": 83.376}, {"star": "5902750168276592256", "z": [-1.2], "ew_ma": [-0.12], "z_comb": -1.2, "p": 0.2942643391521197, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 3.36, "v": -68.1, "rv_gaia": -68.78, "ew_limit_ma": 1.34}, {"star": "3948424496764080640", "z": [-0.8], "ew_ma": [-0.15], "z_comb": -0.8, "p": 0.29925187032418954, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.51, "v": -8.0, "rv_gaia": -8.56, "ew_limit_ma": 2.839}, {"star": "3101382419728401408", "z": [-1.06], "ew_ma": [-0.08], "z_comb": -1.06, "p": 0.3117206982543641, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.34, "v": 54.45, "rv_gaia": 53.99, "ew_limit_ma": 0.438}, {"star": "5461620846141553024", "z": [-1.08], "ew_ma": [-0.1], "z_comb": -1.08, "p": 0.3192019950124688, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.78, "v": 27.6, "rv_gaia": 26.94, "ew_limit_ma": 0.892}, {"star": "6854626246593473792", "z": [-1.22], "ew_ma": [-0.2], "z_comb": -1.22, "p": 0.3192019950124688, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.58, "v": -41.4, "rv_gaia": -42.09, "ew_limit_ma": 1.805}, {"star": "3584074380866605440", "z": [-0.7], "ew_ma": [-0.24], "z_comb": -0.7, "p": 0.32169576059850374, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9961, "null_sd": 2.15, "v": 20.8, "rv_gaia": 19.78, "ew_limit_ma": 2.324}, {"star": "5341673851394297600", "z": [-1.13], "ew_ma": [-0.29], "z_comb": -1.13, "p": 0.32169576059850374, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 2.87, "v": 50.2, "rv_gaia": 49.52, "ew_limit_ma": 2.778}, {"star": "6180035765135232128", "z": [-1.21], "ew_ma": [-0.16], "z_comb": -1.21, "p": 0.32169576059850374, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.16, "v": 65.7, "rv_gaia": 64.94, "ew_limit_ma": 1.751}, {"star": "627699888238838272", "z": [-0.78], "ew_ma": [-0.1], "z_comb": -0.78, "p": 0.32418952618453867, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 1.99, "v": 31.15, "rv_gaia": 30.59, "ew_limit_ma": 0.643}, {"star": "6189254689097655552", "z": [-1.12], "ew_ma": [-0.12], "z_comb": -1.12, "p": 0.33665835411471323, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 3.57, "v": -3.2, "rv_gaia": -3.87, "ew_limit_ma": 1.354}, {"star": "6786890622306367872", "z": [-0.81], "ew_ma": [-0.12], "z_comb": -0.81, "p": 0.3491271820448878, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9992, "null_sd": 1.73, "v": -28.75, "rv_gaia": -29.46, "ew_limit_ma": 0.764}, {"star": "3538141457982396928", "z": [-0.56], "ew_ma": [-0.07], "z_comb": -0.56, "p": 0.36159600997506236, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.64, "v": 4.8, "rv_gaia": 4.25, "ew_limit_ma": 1.029}, {"star": "5731252295913584768", "z": [-1.12], "ew_ma": [-0.25], "z_comb": -1.12, "p": 0.3690773067331671, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9968, "null_sd": 4.19, "v": 67.35, "rv_gaia": 66.88, "ew_limit_ma": 5.037}, {"star": "4343064577465522816", "z": [-0.45], "ew_ma": [-0.13], "z_comb": -0.45, "p": 0.371571072319202, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.48, "v": -31.3, "rv_gaia": -31.96, "ew_limit_ma": 2.23}, {"star": "5064574724769475968", "z": [-1.26], "ew_ma": [-0.26], "z_comb": -1.26, "p": 0.371571072319202, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.82, "v": 9.9, "rv_gaia": 9.77, "ew_limit_ma": 5.662}, {"star": "5266722205277801984", "z": [-0.64], "ew_ma": [-0.08], "z_comb": -0.64, "p": 0.371571072319202, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.23, "v": 18.25, "rv_gaia": 17.57, "ew_limit_ma": 1.225}, {"star": "3835743693290897152", "z": [-0.63], "ew_ma": [-0.06], "z_comb": -0.63, "p": 0.38403990024937656, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.33, "v": -17.1, "rv_gaia": -17.81, "ew_limit_ma": 0.515}, {"star": "6564091190988411520", "z": [-0.82], "ew_ma": [-0.07], "z_comb": -0.82, "p": 0.3915211970074813, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.88, "v": -6.85, "rv_gaia": -7.55, "ew_limit_ma": 0.676}, {"star": "5287961677550103424", "z": [-0.58], "ew_ma": [-0.08], "z_comb": -0.58, "p": 0.3940149625935162, "n_lines": 1, "n_spectra": 4, "twin_r": 0.999, "null_sd": 3.08, "v": 43.15, "rv_gaia": 42.58, "ew_limit_ma": 1.861}, {"star": "5855730584310531200", "z": [-0.19], "ew_ma": [-0.04], "z_comb": -0.19, "p": 0.4014962593516209, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 3.73, "v": 105.3, "rv_gaia": 104.53, "ew_limit_ma": 6.647}, {"star": "5266348577487273344", "z": [-0.67], "ew_ma": [-0.06], "z_comb": -0.67, "p": 0.40648379052369077, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.68, "v": 14.3, "rv_gaia": 13.6, "ew_limit_ma": 2.803}, {"star": "2964794041574370560", "z": [-0.71], "ew_ma": [-0.06], "z_comb": -0.71, "p": 0.41895261845386533, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.46, "v": 29.7, "rv_gaia": 29.0, "ew_limit_ma": 0.888}, {"star": "5669349344592951936", "z": [-0.13], "ew_ma": [-0.03], "z_comb": -0.13, "p": 0.41895261845386533, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.99, "v": 35.55, "rv_gaia": 35.32, "ew_limit_ma": 3.089}, {"star": "6569895822110445440", "z": [-0.39], "ew_ma": [-0.05], "z_comb": -0.39, "p": 0.42643391521197005, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9992, "null_sd": 1.8, "v": -18.4, "rv_gaia": -19.21, "ew_limit_ma": 0.888}, {"star": "3654496279558010624", "z": [-0.81], "ew_ma": [-0.13], "z_comb": -0.81, "p": 0.44389027431421446, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.36, "v": -18.55, "rv_gaia": -19.21, "ew_limit_ma": 2.87}, {"star": "5452492082132835840", "z": [-0.21], "ew_ma": [-0.03], "z_comb": -0.21, "p": 0.44389027431421446, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.19, "v": 13.5, "rv_gaia": 12.83, "ew_limit_ma": 0.998}, {"star": "4722111590409480064", "z": [-0.28], "ew_ma": [-0.03], "z_comb": -0.28, "p": 0.4488778054862843, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9977, "null_sd": 4.37, "v": 13.0, "rv_gaia": 12.44, "ew_limit_ma": 2.488}, {"star": "5493588665684618752", "z": [-0.09], "ew_ma": [-0.02], "z_comb": -0.09, "p": 0.4538653366583541, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.73, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 2.261}, {"star": "4048636941542753152", "z": [-0.3], "ew_ma": [-0.07], "z_comb": -0.3, "p": 0.456359102244389, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9978, "null_sd": 3.0, "v": 22.15, "rv_gaia": 21.37, "ew_limit_ma": 1.877}, {"star": "3574377616021489024", "z": [-0.17], "ew_ma": [-0.03], "z_comb": -0.17, "p": 0.4613466334164589, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 1.67, "v": 2.8, "rv_gaia": 1.88, "ew_limit_ma": 1.156}, {"star": "5951165616611763456", "z": [-0.23], "ew_ma": [-0.03], "z_comb": -0.23, "p": 0.4688279301745636, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.1, "v": 26.5, "rv_gaia": 25.96, "ew_limit_ma": 1.285}, {"star": "6501182220888038784", "z": [0.01], "ew_ma": [0.0], "z_comb": 0.01, "p": 0.47880299251870323, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9984, "null_sd": 2.27, "v": 23.95, "rv_gaia": 23.28, "ew_limit_ma": 1.609}, {"star": "4079684229322231040", "z": [-0.28], "ew_ma": [-0.02], "z_comb": -0.28, "p": 0.4837905236907731, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.93, "v": 37.75, "rv_gaia": 37.03, "ew_limit_ma": 1.464}, {"star": "4341501106288171008", "z": [-0.09], "ew_ma": [-0.02], "z_comb": -0.09, "p": 0.486284289276808, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9976, "null_sd": 3.18, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 3.949}, {"star": "6692069568458919040", "z": [-0.1], "ew_ma": [-0.01], "z_comb": -0.1, "p": 0.4937655860349127, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9974, "null_sd": 2.56, "v": 15.8, "rv_gaia": 15.36, "ew_limit_ma": 0.718}, {"star": "5579783574073770112", "z": [-0.16], "ew_ma": [-0.05], "z_comb": -0.16, "p": 0.5012468827930174, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.23, "v": 37.45, "rv_gaia": 36.91, "ew_limit_ma": 4.413}, {"star": "2554032474712538880", "z": [-0.0], "ew_ma": [-0.0], "z_comb": -0.0, "p": 0.5062344139650873, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.26, "v": 19.95, "rv_gaia": 19.4, "ew_limit_ma": 2.167}, {"star": "3550081879381593728", "z": [0.22], "ew_ma": [0.1], "z_comb": 0.22, "p": 0.5112219451371571, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9786, "null_sd": 1.94, "v": 24.05, "rv_gaia": 23.76, "ew_limit_ma": 4.837}, {"star": "4623036865373793408", "z": [0.01], "ew_ma": [0.0], "z_comb": 0.01, "p": 0.513715710723192, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9994, "null_sd": 2.73, "v": 11.55, "rv_gaia": 10.71, "ew_limit_ma": 1.041}, {"star": "1212385193677160832", "z": [0.13], "ew_ma": [0.03], "z_comb": 0.13, "p": 0.516209476309227, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.84, "v": -38.2, "rv_gaia": -38.94, "ew_limit_ma": 3.114}, {"star": "5760701787150565888", "z": [-0.03], "ew_ma": [-0.01], "z_comb": -0.03, "p": 0.516209476309227, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.25, "v": 32.65, "rv_gaia": 31.99, "ew_limit_ma": 2.217}, {"star": "2391838429257482496", "z": [0.26], "ew_ma": [0.04], "z_comb": 0.26, "p": 0.5411471321695761, "n_lines": 1, "n_spectra": 4, "twin_r": 0.999, "null_sd": 2.38, "v": 12.85, "rv_gaia": 12.3, "ew_limit_ma": 1.728}, {"star": "3945118643256370688", "z": [0.21], "ew_ma": [0.05], "z_comb": 0.21, "p": 0.5511221945137157, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 1.66, "v": -1.2, "rv_gaia": -1.67, "ew_limit_ma": 1.706}, {"star": "3975223065466473216", "z": [0.04], "ew_ma": [0.01], "z_comb": 0.04, "p": 0.5511221945137157, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9969, "null_sd": 1.49, "v": 6.45, "rv_gaia": 5.8, "ew_limit_ma": 1.599}, {"star": "4768170579173552896", "z": [0.42], "ew_ma": [0.04], "z_comb": 0.42, "p": 0.5835411471321695, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9994, "null_sd": 2.79, "v": -4.8, "rv_gaia": -5.53, "ew_limit_ma": 1.123}, {"star": "6166183842771027328", "z": [0.18], "ew_ma": [0.01], "z_comb": 0.18, "p": 0.5860349127182045, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 3.33, "v": -16.75, "rv_gaia": -17.46, "ew_limit_ma": 0.68}, {"star": "6226694571859532800", "z": [0.83], "ew_ma": [0.17], "z_comb": 0.83, "p": 0.5910224438902744, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 2.98, "v": 5.8, "rv_gaia": 5.14, "ew_limit_ma": 3.595}, {"star": "5640565607657897728", "z": [0.43], "ew_ma": [0.06], "z_comb": 0.43, "p": 0.600997506234414, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.89, "v": 15.2, "rv_gaia": 14.67, "ew_limit_ma": 5.225}, {"star": "3812355328621651328", "z": [0.45], "ew_ma": [0.07], "z_comb": 0.45, "p": 0.6109725685785536, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 2.49, "v": 4.75, "rv_gaia": 4.18, "ew_limit_ma": 1.175}, {"star": "3507879565090229888", "z": [0.72], "ew_ma": [0.11], "z_comb": 0.72, "p": 0.6134663341645885, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 3.1, "v": -7.2, "rv_gaia": -7.86, "ew_limit_ma": 3.487}, {"star": "5524982093479504384", "z": [0.82], "ew_ma": [0.16], "z_comb": 0.82, "p": 0.6359102244389028, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.01, "v": 10.05, "rv_gaia": 9.31, "ew_limit_ma": 2.676}, {"star": "5726982995343100928", "z": [0.87], "ew_ma": [0.08], "z_comb": 0.87, "p": 0.6458852867830424, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.66, "v": 30.7, "rv_gaia": 30.09, "ew_limit_ma": 1.104}, {"star": "6369544118965772416", "z": [0.87], "ew_ma": [0.2], "z_comb": 0.87, "p": 0.6533665835411472, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 3.35, "v": -10.25, "rv_gaia": -11.0, "ew_limit_ma": 3.937}, {"star": "3584074376569429248", "z": [0.85], "ew_ma": [0.22], "z_comb": 0.85, "p": 0.7032418952618454, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9964, "null_sd": 1.67, "v": 21.5, "rv_gaia": 20.73, "ew_limit_ma": 1.461}, {"star": "3480332916165099904", "z": [1.07], "ew_ma": [0.1], "z_comb": 1.07, "p": 0.7082294264339152, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.69, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 1.335}, {"star": "5381537023379295232", "z": [1.26], "ew_ma": [0.07], "z_comb": 1.26, "p": 0.7182044887780549, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 2.76, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 0.516}, {"star": "5691782130578684544", "z": [1.51], "ew_ma": [0.18], "z_comb": 1.51, "p": 0.7256857855361596, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.43, "v": 8.9, "rv_gaia": 8.18, "ew_limit_ma": 2.246}, {"star": "6489771832811810432", "z": [1.33], "ew_ma": [0.43], "z_comb": 1.33, "p": 0.7331670822942643, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9968, "null_sd": 4.4, "v": -30.15, "rv_gaia": -31.05, "ew_limit_ma": 7.42}, {"star": "6832155218215202944", "z": [1.1], "ew_ma": [0.23], "z_comb": 1.1, "p": 0.7331670822942643, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9958, "null_sd": 3.12, "v": 15.25, "rv_gaia": 14.63, "ew_limit_ma": 2.54}, {"star": "2619706544757416192", "z": [1.25], "ew_ma": [0.16], "z_comb": 1.25, "p": 0.7381546134663342, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.57, "v": -20.2, "rv_gaia": -20.78, "ew_limit_ma": 1.584}, {"star": "6321929733564266752", "z": [1.7], "ew_ma": [1.2], "z_comb": 1.7, "p": 0.7406483790523691, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9862, "null_sd": 2.62, "v": -31.55, "rv_gaia": -32.32, "ew_limit_ma": 9.333}, {"star": "2376087581593256448", "z": [1.65], "ew_ma": [0.27], "z_comb": 1.65, "p": 0.7456359102244389, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.38, "v": -9.55, "rv_gaia": -10.26, "ew_limit_ma": 2.299}, {"star": "6141742283401003264", "z": [1.67], "ew_ma": [0.41], "z_comb": 1.67, "p": 0.7531172069825436, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.31, "v": -12.3, "rv_gaia": -13.03, "ew_limit_ma": 7.613}, {"star": "6029992663310612096", "z": [1.84], "ew_ma": [0.47], "z_comb": 1.84, "p": 0.7655860349127181, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.67, "v": 14.8, "rv_gaia": 14.08, "ew_limit_ma": 3.411}, {"star": "2533723670313663872", "z": [1.18], "ew_ma": [0.22], "z_comb": 1.18, "p": 0.7680798004987531, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.58, "v": 17.7, "rv_gaia": 16.81, "ew_limit_ma": 6.47}, {"star": "2898239468873596800", "z": [1.59], "ew_ma": [0.11], "z_comb": 1.59, "p": 0.8254364089775561, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.6, "v": -3.2, "rv_gaia": -3.85, "ew_limit_ma": 1.066}, {"star": "6128366415218881536", "z": [2.12], "ew_ma": [0.21], "z_comb": 2.12, "p": 0.8428927680798005, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 2.97, "v": 31.3, "rv_gaia": 30.47, "ew_limit_ma": 1.428}, {"star": "2494066897240089984", "z": [2.29], "ew_ma": [0.42], "z_comb": 2.29, "p": 0.8553615960099751, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9987, "null_sd": 2.78, "v": -4.6, "rv_gaia": -5.33, "ew_limit_ma": 3.326}, {"star": "627699888238838528", "z": [1.75], "ew_ma": [0.39], "z_comb": 1.75, "p": 0.8753117206982544, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9985, "null_sd": 1.98, "v": 31.5, "rv_gaia": 30.81, "ew_limit_ma": 3.076}, {"star": "4733035238430992768", "z": [2.53], "ew_ma": [0.26], "z_comb": 2.53, "p": 0.8877805486284289, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.13, "v": 1.35, "rv_gaia": 0.66, "ew_limit_ma": 2.409}, {"star": "648998734141447296", "z": [2.67], "ew_ma": [0.63], "z_comb": 2.67, "p": 0.9077306733167082, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.21, "v": 21.15, "rv_gaia": 20.52, "ew_limit_ma": 3.184}, {"star": "3945118265299248128", "z": [2.84], "ew_ma": [0.54], "z_comb": 2.84, "p": 0.940149625935162, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9986, "null_sd": 1.88, "v": -0.85, "rv_gaia": -1.56, "ew_limit_ma": 1.78}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Cm_FEROS.json b/papers/short_lived_elements/data/element_Cm_FEROS.json new file mode 100644 index 0000000000000000000000000000000000000000..3f3ef7a6fe8d4114a89e77c0d9719ee5a2b64ae1 --- /dev/null +++ b/papers/short_lived_elements/data/element_Cm_FEROS.json @@ -0,0 +1 @@ +{"lines": [[4207.66, 1.0]], "stable": [true], "results": [{"star": "6489909443564308224", "z": [-6.68], "ew_ma": [-1.16], "z_comb": -6.68, "p": 0.03740648379052369, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 3.64, "v": 0.75, "rv_gaia": 0.63, "ew_limit_ma": 1.818}, {"star": "4708607629114652032", "z": [-6.09], "ew_ma": [-1.39], "z_comb": -6.09, "p": 0.04987531172069826, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.73, "v": 95.75, "rv_gaia": 95.23, "ew_limit_ma": 1.716}, {"star": "2980492387558410112", "z": [-4.82], "ew_ma": [-0.81], "z_comb": -4.82, "p": 0.08977556109725686, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.51, "v": 22.35, "rv_gaia": 21.6, "ew_limit_ma": 0.634}, {"star": "4367026303085396352", "z": [-4.98], "ew_ma": [-0.95], "z_comb": -4.98, "p": 0.09476309226932668, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.11, "v": -35.5, "rv_gaia": -35.94, "ew_limit_ma": 2.951}, {"star": "6062166950467100032", "z": [-4.28], "ew_ma": [-1.12], "z_comb": -4.28, "p": 0.1371571072319202, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 4.32, "v": -63.55, "rv_gaia": -63.57, "ew_limit_ma": 2.371}, {"star": "6096524382383054720", "z": [-3.82], "ew_ma": [-1.01], "z_comb": -3.82, "p": 0.14214463840399003, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9956, "null_sd": 4.52, "v": 5.1, "rv_gaia": 4.39, "ew_limit_ma": 5.278}, {"star": "5459060117921483008", "z": [-3.86], "ew_ma": [-1.17], "z_comb": -3.86, "p": 0.14463840399002495, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 4.31, "v": 44.65, "rv_gaia": 43.93, "ew_limit_ma": 4.051}, {"star": "3250489115709122560", "z": [-3.99], "ew_ma": [-2.21], "z_comb": -3.99, "p": 0.14962593516209477, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9765, "null_sd": 6.59, "v": 121.05, "rv_gaia": 120.58, "ew_limit_ma": 32.449}, {"star": "5291028181119851776", "z": [-4.3], "ew_ma": [-0.71], "z_comb": -4.3, "p": 0.1571072319201995, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.68, "v": 15.6, "rv_gaia": 15.01, "ew_limit_ma": 2.226}, {"star": "3732539683617410816", "z": [-3.31], "ew_ma": [-1.02], "z_comb": -3.31, "p": 0.19201995012468828, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9902, "null_sd": 3.9, "v": -26.95, "rv_gaia": -27.25, "ew_limit_ma": 3.633}, {"star": "5663558453071724288", "z": [-3.47], "ew_ma": [-0.91], "z_comb": -3.47, "p": 0.19950124688279303, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9916, "null_sd": 6.16, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 17.272}, {"star": "4934923028038871296", "z": [-3.28], "ew_ma": [-0.77], "z_comb": -3.28, "p": 0.2119700748129676, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.66, "v": 12.25, "rv_gaia": 11.9, "ew_limit_ma": 6.332}, {"star": "5553647083168192512", "z": [-3.61], "ew_ma": [-0.83], "z_comb": -3.61, "p": 0.22693266832917705, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9796, "null_sd": 4.0, "v": 60.7, "rv_gaia": 59.67, "ew_limit_ma": 2.213}, {"star": "5927236979422123264", "z": [-2.7], "ew_ma": [-1.06], "z_comb": -2.7, "p": 0.26433915211970077, "n_lines": 1, "n_spectra": 3, "twin_r": 0.991, "null_sd": 5.38, "v": -8.4, "rv_gaia": -9.12, "ew_limit_ma": 15.058}, {"star": "6612242034982766848", "z": [-1.93], "ew_ma": [-0.45], "z_comb": -1.93, "p": 0.26932668329177056, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 5.12, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 3.503}, {"star": "6698960688866464768", "z": [-2.4], "ew_ma": [-1.93], "z_comb": -2.4, "p": 0.2743142144638404, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9144, "null_sd": 5.41, "v": -3.5, "rv_gaia": -7.85, "ew_limit_ma": 16.979}, {"star": "3835867938104798848", "z": [-1.74], "ew_ma": [-0.48], "z_comb": -1.74, "p": 0.2817955112219451, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9926, "null_sd": 4.71, "v": -21.45, "rv_gaia": -21.84, "ew_limit_ma": 11.364}, {"star": "3946438125929224320", "z": [-1.71], "ew_ma": [-0.31], "z_comb": -1.71, "p": 0.2817955112219451, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.32, "v": 2.25, "rv_gaia": 1.76, "ew_limit_ma": 1.317}, {"star": "5062172841616745856", "z": [-2.05], "ew_ma": [-0.72], "z_comb": -2.05, "p": 0.28428927680798005, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.74, "v": 11.8, "rv_gaia": 11.16, "ew_limit_ma": 6.547}, {"star": "2382711653818308224", "z": [-1.58], "ew_ma": [-0.75], "z_comb": -1.58, "p": 0.2967581047381546, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9787, "null_sd": 3.98, "v": 7.3, "rv_gaia": 6.41, "ew_limit_ma": 10.098}, {"star": "5129338021224785408", "z": [-1.42], "ew_ma": [-0.89], "z_comb": -1.42, "p": 0.30673316708229426, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9568, "null_sd": 3.86, "v": 29.85, "rv_gaia": 29.09, "ew_limit_ma": 9.494}, {"star": "5452492082132835840", "z": [-1.02], "ew_ma": [-0.37], "z_comb": -1.02, "p": 0.3266832917705736, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9939, "null_sd": 3.02, "v": 13.4, "rv_gaia": 12.83, "ew_limit_ma": 4.655}, {"star": "2790914111658905216", "z": [-1.24], "ew_ma": [-0.3], "z_comb": -1.24, "p": 0.32917705735660846, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9879, "null_sd": 5.56, "v": -23.0, "rv_gaia": -23.67, "ew_limit_ma": 2.589}, {"star": "3285218186904332288", "z": [-1.23], "ew_ma": [-0.62], "z_comb": -1.23, "p": 0.3316708229426434, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9728, "null_sd": 4.56, "v": -7.1, "rv_gaia": -7.28, "ew_limit_ma": 27.246}, {"star": "5945941905576552064", "z": [-1.33], "ew_ma": [-0.34], "z_comb": -1.33, "p": 0.341645885286783, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 8.49, "v": -8.75, "rv_gaia": -9.54, "ew_limit_ma": 3.51}, {"star": "3855524182352238336", "z": [-1.17], "ew_ma": [-0.17], "z_comb": -1.17, "p": 0.3516209476309227, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 9.34, "v": 16.8, "rv_gaia": 16.57, "ew_limit_ma": 1.743}, {"star": "2423493369021649920", "z": [-1.12], "ew_ma": [-0.33], "z_comb": -1.12, "p": 0.3566084788029925, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9933, "null_sd": 3.88, "v": -1.95, "rv_gaia": -2.55, "ew_limit_ma": 4.698}, {"star": "6484716209628726912", "z": [-1.48], "ew_ma": [-0.46], "z_comb": -1.48, "p": 0.4014962593516209, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9926, "null_sd": 3.82, "v": -7.55, "rv_gaia": -7.8, "ew_limit_ma": 4.206}, {"star": "5567900121118276736", "z": [-0.99], "ew_ma": [-0.16], "z_comb": -0.99, "p": 0.40399002493765584, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9948, "null_sd": 3.86, "v": 28.4, "rv_gaia": 27.55, "ew_limit_ma": 2.34}, {"star": "3256786534197166208", "z": [-0.78], "ew_ma": [-0.15], "z_comb": -0.78, "p": 0.4164588528678304, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9948, "null_sd": 3.72, "v": 18.1, "rv_gaia": 17.62, "ew_limit_ma": 1.713}, {"star": "6153706477443518976", "z": [-0.89], "ew_ma": [-0.29], "z_comb": -0.89, "p": 0.4239401496259352, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9911, "null_sd": 4.74, "v": -25.8, "rv_gaia": -26.31, "ew_limit_ma": 2.344}, {"star": "2913411183149615744", "z": [-0.42], "ew_ma": [-0.08], "z_comb": -0.42, "p": 0.44389027431421446, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.36, "v": 22.4, "rv_gaia": 21.69, "ew_limit_ma": 2.151}, {"star": "3480332916165099904", "z": [-0.52], "ew_ma": [-0.11], "z_comb": -0.52, "p": 0.4463840399002494, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9973, "null_sd": 4.36, "v": 14.45, "rv_gaia": 14.0, "ew_limit_ma": 3.742}, {"star": "2473608009504466688", "z": [-0.71], "ew_ma": [-0.25], "z_comb": -0.71, "p": 0.4488778054862843, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9839, "null_sd": 5.51, "v": 8.7, "rv_gaia": 8.21, "ew_limit_ma": 25.725}, {"star": "1772187382746856320", "z": [-0.41], "ew_ma": [-0.15], "z_comb": -0.41, "p": 0.456359102244389, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9903, "null_sd": 5.72, "v": -16.75, "rv_gaia": -16.94, "ew_limit_ma": 3.178}, {"star": "5951165616611763456", "z": [-0.68], "ew_ma": [-0.2], "z_comb": -0.68, "p": 0.4688279301745636, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9894, "null_sd": 4.47, "v": 26.4, "rv_gaia": 25.96, "ew_limit_ma": 4.433}, {"star": "5760701787150565888", "z": [-0.49], "ew_ma": [-0.12], "z_comb": -0.49, "p": 0.48129675810473815, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.18, "v": 32.5, "rv_gaia": 31.99, "ew_limit_ma": 2.78}, {"star": "6802426038708609536", "z": [-0.32], "ew_ma": [-0.06], "z_comb": -0.32, "p": 0.4837905236907731, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.62, "v": -15.95, "rv_gaia": -16.09, "ew_limit_ma": 3.159}, {"star": "5765846127180770432", "z": [-0.02], "ew_ma": [-0.01], "z_comb": -0.02, "p": 0.49625935162094764, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 3.75, "v": -4.15, "rv_gaia": -4.87, "ew_limit_ma": 4.823}, {"star": "6427244702486210816", "z": [0.24], "ew_ma": [0.08], "z_comb": 0.24, "p": 0.5012468827930174, "n_lines": 1, "n_spectra": 2, "twin_r": 0.994, "null_sd": 3.69, "v": -10.1, "rv_gaia": -10.76, "ew_limit_ma": 5.275}, {"star": "5902750168276592256", "z": [-0.21], "ew_ma": [-0.05], "z_comb": -0.21, "p": 0.5062344139650873, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.29, "v": -68.35, "rv_gaia": -68.78, "ew_limit_ma": 5.487}, {"star": "1237090738916392704", "z": [-0.19], "ew_ma": [-0.07], "z_comb": -0.19, "p": 0.516209476309227, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.43, "v": 2.2, "rv_gaia": 1.59, "ew_limit_ma": 14.36}, {"star": "6718894388002453120", "z": [-0.05], "ew_ma": [-0.01], "z_comb": -0.05, "p": 0.5236907730673317, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.76, "v": 60.5, "rv_gaia": 60.01, "ew_limit_ma": 6.975}, {"star": "6150200345317455232", "z": [0.29], "ew_ma": [0.12], "z_comb": 0.29, "p": 0.5336658354114713, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9955, "null_sd": 3.97, "v": -6.45, "rv_gaia": -7.11, "ew_limit_ma": 5.571}, {"star": "4423865487962417024", "z": [0.44], "ew_ma": [0.12], "z_comb": 0.44, "p": 0.5361596009975063, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.25, "v": 19.55, "rv_gaia": 18.95, "ew_limit_ma": 4.765}, {"star": "6879764552737781888", "z": [0.3], "ew_ma": [0.1], "z_comb": 0.3, "p": 0.5386533665835411, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.79, "v": 27.4, "rv_gaia": 27.2, "ew_limit_ma": 4.959}, {"star": "3113909602378333056", "z": [0.24], "ew_ma": [0.08], "z_comb": 0.24, "p": 0.543640897755611, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9945, "null_sd": 4.68, "v": -7.65, "rv_gaia": -8.02, "ew_limit_ma": 3.232}, {"star": "6018047019138644480", "z": [0.68], "ew_ma": [0.21], "z_comb": 0.68, "p": 0.5561097256857855, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.12, "v": 13.35, "rv_gaia": 12.85, "ew_limit_ma": 8.45}, {"star": "3269362645115584640", "z": [0.76], "ew_ma": [0.16], "z_comb": 0.76, "p": 0.571072319201995, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 3.58, "v": 19.45, "rv_gaia": 18.73, "ew_limit_ma": 3.178}, {"star": "3789271459953459328", "z": [0.73], "ew_ma": [0.34], "z_comb": 0.73, "p": 0.571072319201995, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9917, "null_sd": 5.75, "v": 19.0, "rv_gaia": 18.5, "ew_limit_ma": 38.562}, {"star": "4906784051581971200", "z": [0.0], "ew_ma": [0.0], "z_comb": 0.0, "p": 0.57356608478803, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9957, "null_sd": 6.16, "v": 3.45, "rv_gaia": 2.92, "ew_limit_ma": 6.181}, {"star": "3330062833797919744", "z": [0.35], "ew_ma": [0.08], "z_comb": 0.35, "p": 0.5785536159600998, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 6.7, "v": 6.35, "rv_gaia": 5.83, "ew_limit_ma": 18.656}, {"star": "5640565607657897728", "z": [0.75], "ew_ma": [0.24], "z_comb": 0.75, "p": 0.5885286783042394, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9894, "null_sd": 4.98, "v": 15.15, "rv_gaia": 14.67, "ew_limit_ma": 16.399}, {"star": "4763906879239461632", "z": [1.01], "ew_ma": [0.19], "z_comb": 1.01, "p": 0.600997506234414, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9966, "null_sd": 4.45, "v": -1.05, "rv_gaia": -1.45, "ew_limit_ma": 4.868}, {"star": "5381537023379295232", "z": [0.76], "ew_ma": [0.16], "z_comb": 0.76, "p": 0.628428927680798, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 3.5, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 2.284}, {"star": "3101382419728401408", "z": [1.21], "ew_ma": [0.79], "z_comb": 1.21, "p": 0.6334164588528678, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 4.78, "v": 54.05, "rv_gaia": 53.99, "ew_limit_ma": 11.005}, {"star": "6629790584164277376", "z": [0.92], "ew_ma": [0.21], "z_comb": 0.92, "p": 0.6359102244389028, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9971, "null_sd": 24.24, "v": 0.75, "rv_gaia": 0.5, "ew_limit_ma": 13.245}, {"star": "3551002857809958400", "z": [1.71], "ew_ma": [0.69], "z_comb": 1.71, "p": 0.6408977556109726, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 6.6, "v": -3.55, "rv_gaia": -4.08, "ew_limit_ma": 14.049}, {"star": "3650718804281798912", "z": [1.16], "ew_ma": [0.92], "z_comb": 1.16, "p": 0.6508728179551122, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9864, "null_sd": 5.31, "v": -12.2, "rv_gaia": -12.52, "ew_limit_ma": 15.627}, {"star": "5056511692465250304", "z": [1.29], "ew_ma": [0.35], "z_comb": 1.29, "p": 0.6508728179551122, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9771, "null_sd": 4.05, "v": 18.3, "rv_gaia": 17.69, "ew_limit_ma": 8.934}, {"star": "6141742283401003264", "z": [1.38], "ew_ma": [0.49], "z_comb": 1.38, "p": 0.655860349127182, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 4.63, "v": -12.35, "rv_gaia": -13.03, "ew_limit_ma": 6.879}, {"star": "5559265690666327168", "z": [1.97], "ew_ma": [0.51], "z_comb": 1.97, "p": 0.6583541147132169, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9948, "null_sd": 4.65, "v": 89.1, "rv_gaia": 88.55, "ew_limit_ma": 6.168}, {"star": "5586381090520538880", "z": [1.19], "ew_ma": [0.26], "z_comb": 1.19, "p": 0.6583541147132169, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.96, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 2.682}, {"star": "3532823773073745536", "z": [2.12], "ew_ma": [1.45], "z_comb": 2.12, "p": 0.6683291770573566, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9932, "null_sd": 6.04, "v": 40.5, "rv_gaia": 39.76, "ew_limit_ma": 24.6}, {"star": "2477815222028038272", "z": [1.97], "ew_ma": [1.39], "z_comb": 1.97, "p": 0.685785536159601, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9819, "null_sd": 3.84, "v": 11.9, "rv_gaia": 11.46, "ew_limit_ma": 12.35}, {"star": "4315804351350378496", "z": [1.71], "ew_ma": [2.06], "z_comb": 1.71, "p": 0.6907730673316709, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9924, "null_sd": 4.26, "v": -100.05, "rv_gaia": -100.33, "ew_limit_ma": 23.02}, {"star": "4745373133284418816", "z": [1.87], "ew_ma": [0.36], "z_comb": 1.87, "p": 0.6907730673316709, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9923, "null_sd": 4.56, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 3.958}, {"star": "3639760521643499776", "z": [2.01], "ew_ma": [0.61], "z_comb": 2.01, "p": 0.6932668329177057, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 4.03, "v": -11.95, "rv_gaia": -12.39, "ew_limit_ma": 4.826}, {"star": "4867596937475715968", "z": [2.34], "ew_ma": [2.03], "z_comb": 2.34, "p": 0.7331670822942643, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9757, "null_sd": 3.96, "v": -9.15, "rv_gaia": -9.94, "ew_limit_ma": 13.445}, {"star": "5793182631952977920", "z": [1.95], "ew_ma": [0.67], "z_comb": 1.95, "p": 0.7406483790523691, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9938, "null_sd": 4.2, "v": -2.65, "rv_gaia": -3.17, "ew_limit_ma": 8.097}, {"star": "6796392812250051712", "z": [2.5], "ew_ma": [1.43], "z_comb": 2.5, "p": 0.770573566084788, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9934, "null_sd": 33.83, "v": 0.15, "rv_gaia": -0.34, "ew_limit_ma": 11.626}, {"star": "4038724053986441856", "z": [2.69], "ew_ma": [0.64], "z_comb": 2.69, "p": 0.7905236907730673, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9943, "null_sd": 3.97, "v": 15.6, "rv_gaia": 14.99, "ew_limit_ma": 3.241}, {"star": "5528591961953902720", "z": [2.83], "ew_ma": [0.78], "z_comb": 2.83, "p": 0.8029925187032418, "n_lines": 1, "n_spectra": 4, "twin_r": 0.994, "null_sd": 4.89, "v": -1.35, "rv_gaia": -1.8, "ew_limit_ma": 17.634}, {"star": "5317114850417299584", "z": [2.65], "ew_ma": [0.52], "z_comb": 2.65, "p": 0.8104738154613467, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 3.63, "v": -5.9, "rv_gaia": -6.29, "ew_limit_ma": 2.925}, {"star": "3009908378049913216", "z": [4.08], "ew_ma": [3.69], "z_comb": 4.08, "p": 0.8403990024937655, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9144, "null_sd": 4.44, "v": 27.0, "rv_gaia": 21.1, "ew_limit_ma": 13.875}, {"star": "5357075947709011456", "z": [2.81], "ew_ma": [0.72], "z_comb": 2.81, "p": 0.8403990024937655, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9949, "null_sd": 7.36, "v": 21.6, "rv_gaia": 21.19, "ew_limit_ma": 12.286}, {"star": "5888394257280681856", "z": [4.27], "ew_ma": [9.53], "z_comb": 4.27, "p": 0.8403990024937655, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9791, "null_sd": 6.01, "v": -8.6, "rv_gaia": -8.77, "ew_limit_ma": 62.155}, {"star": "6357835694518769408", "z": [3.45], "ew_ma": [1.0], "z_comb": 3.45, "p": 0.8728179551122195, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 3.56, "v": 14.8, "rv_gaia": 14.4, "ew_limit_ma": 5.326}, {"star": "4634528720388462592", "z": [5.7], "ew_ma": [4.18], "z_comb": 5.7, "p": 0.9077306733167082, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9926, "null_sd": 4.25, "v": -5.55, "rv_gaia": -6.07, "ew_limit_ma": 14.702}, {"star": "3407611182744289152", "z": [5.01], "ew_ma": [2.47], "z_comb": 5.01, "p": 0.9102244389027432, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 4.73, "v": 21.1, "rv_gaia": 20.6, "ew_limit_ma": 11.202}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Cm_HARPS.json b/papers/short_lived_elements/data/element_Cm_HARPS.json new file mode 100644 index 0000000000000000000000000000000000000000..5b9e3f505336974623b55c64a83e82bfb5ae5873 --- /dev/null +++ b/papers/short_lived_elements/data/element_Cm_HARPS.json @@ -0,0 +1 @@ +{"lines": [[4207.66, 1.0]], "stable": [true], "results": [{"star": "2523361151179609344", "z": [-2.73], "ew_ma": [-0.27], "z_comb": -2.73, "p": 0.06842105263157895, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 1.82, "v": 12.9, "rv_gaia": 12.23, "ew_limit_ma": 0.643}, {"star": "4777373903814124032", "z": [-3.71], "ew_ma": [-0.5], "z_comb": -3.71, "p": 0.07792207792207792, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.37, "v": 65.0, "rv_gaia": 64.22, "ew_limit_ma": 0.486}, {"star": "4176501313320676992", "z": [-2.67], "ew_ma": [-0.25], "z_comb": -2.67, "p": 0.07894736842105263, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 1.95, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.314}, {"star": "5459060117921483008", "z": [-2.76], "ew_ma": [-0.34], "z_comb": -2.76, "p": 0.08421052631578947, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.61, "v": 44.6, "rv_gaia": 43.93, "ew_limit_ma": 1.025}, {"star": "5559265690666327168", "z": [-3.38], "ew_ma": [-0.55], "z_comb": -3.38, "p": 0.08753315649867374, "n_lines": 1, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.92, "v": 89.25, "rv_gaia": 88.55, "ew_limit_ma": 2.005}, {"star": "6088054505011960832", "z": [-2.81], "ew_ma": [-0.23], "z_comb": -2.81, "p": 0.0987012987012987, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.51, "v": 59.3, "rv_gaia": 58.66, "ew_limit_ma": 0.313}, {"star": "6764687466752221824", "z": [-2.52], "ew_ma": [-0.36], "z_comb": -2.52, "p": 0.10236220472440945, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.4, "v": -41.95, "rv_gaia": -42.55, "ew_limit_ma": 1.175}, {"star": "4356054757585316992", "z": [-2.06], "ew_ma": [-0.22], "z_comb": -2.06, "p": 0.13315926892950392, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.33, "v": -19.7, "rv_gaia": -20.28, "ew_limit_ma": 0.574}, {"star": "6879764552737781888", "z": [-2.04], "ew_ma": [-0.23], "z_comb": -2.04, "p": 0.15803108808290156, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.45, "v": 27.3, "rv_gaia": 27.2, "ew_limit_ma": 0.656}, {"star": "3750995604764854400", "z": [-1.8], "ew_ma": [-0.13], "z_comb": -1.8, "p": 0.17015706806282724, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.97, "v": -17.45, "rv_gaia": -17.93, "ew_limit_ma": 0.287}, {"star": "5320952798822552064", "z": [-2.01], "ew_ma": [-0.14], "z_comb": -2.01, "p": 0.17662337662337663, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.88, "v": 12.4, "rv_gaia": 11.87, "ew_limit_ma": 0.444}, {"star": "5596797039059063680", "z": [-2.15], "ew_ma": [-0.26], "z_comb": -2.15, "p": 0.18421052631578946, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.5, "v": -15.0, "rv_gaia": -15.71, "ew_limit_ma": 0.995}, {"star": "2341817487782612480", "z": [-1.58], "ew_ma": [-0.17], "z_comb": -1.58, "p": 0.19895287958115182, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.11, "v": 21.6, "rv_gaia": 20.93, "ew_limit_ma": 1.058}, {"star": "5848156426657892480", "z": [-1.74], "ew_ma": [-0.15], "z_comb": -1.74, "p": 0.20466321243523317, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.37, "v": -30.0, "rv_gaia": -30.56, "ew_limit_ma": 0.506}, {"star": "2468730472844294016", "z": [-1.36], "ew_ma": [-0.17], "z_comb": -1.36, "p": 0.20565552699228792, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.67, "v": 8.85, "rv_gaia": 8.11, "ew_limit_ma": 0.456}, {"star": "5569858798004394624", "z": [-1.92], "ew_ma": [-0.32], "z_comb": -1.92, "p": 0.2077922077922078, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9974, "null_sd": 2.37, "v": 57.1, "rv_gaia": 56.33, "ew_limit_ma": 1.154}, {"star": "2918894859953947392", "z": [-1.27], "ew_ma": [-0.13], "z_comb": -1.27, "p": 0.23342175066312998, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.67, "v": -9.9, "rv_gaia": -10.34, "ew_limit_ma": 2.126}, {"star": "6270906415441316224", "z": [-2.5], "ew_ma": [-0.74], "z_comb": -2.5, "p": 0.23376623376623376, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9915, "null_sd": 7.13, "v": -21.9, "rv_gaia": -22.28, "ew_limit_ma": 18.601}, {"star": "2423292879948720000", "z": [-1.24], "ew_ma": [-0.09], "z_comb": -1.24, "p": 0.24274406332453827, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.17, "v": 29.65, "rv_gaia": 28.92, "ew_limit_ma": 0.367}, {"star": "6606890608810806528", "z": [-1.92], "ew_ma": [-0.51], "z_comb": -1.92, "p": 0.24289405684754523, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.61, "v": -19.6, "rv_gaia": -20.32, "ew_limit_ma": 2.967}, {"star": "3345968334645285376", "z": [-1.31], "ew_ma": [-0.27], "z_comb": -1.31, "p": 0.24661246612466126, "n_lines": 1, "n_spectra": 6, "twin_r": 0.997, "null_sd": 2.21, "v": -9.4, "rv_gaia": -10.01, "ew_limit_ma": 1.466}, {"star": "6454967273273436416", "z": [-1.38], "ew_ma": [-0.27], "z_comb": -1.38, "p": 0.25839793281653745, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9969, "null_sd": 3.54, "v": -31.55, "rv_gaia": -31.9, "ew_limit_ma": 6.153}, {"star": "6519024545827374336", "z": [-1.08], "ew_ma": [-0.18], "z_comb": -1.08, "p": 0.25925925925925924, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.32, "v": 19.15, "rv_gaia": 18.68, "ew_limit_ma": 1.186}, {"star": "5540006949934104448", "z": [-1.31], "ew_ma": [-0.34], "z_comb": -1.31, "p": 0.2779220779220779, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9966, "null_sd": 2.5, "v": 50.1, "rv_gaia": 49.31, "ew_limit_ma": 2.39}, {"star": "3789271459953459328", "z": [-1.11], "ew_ma": [-0.26], "z_comb": -1.11, "p": 0.27851458885941643, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9937, "null_sd": 2.0, "v": 19.15, "rv_gaia": 18.5, "ew_limit_ma": 1.991}, {"star": "5395795730687103488", "z": [-1.14], "ew_ma": [-0.16], "z_comb": -1.14, "p": 0.29736842105263156, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9964, "null_sd": 2.43, "v": 44.0, "rv_gaia": 43.4, "ew_limit_ma": 1.141}, {"star": "5855730584310531200", "z": [-1.2], "ew_ma": [-0.31], "z_comb": -1.2, "p": 0.316622691292876, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9962, "null_sd": 3.79, "v": 105.15, "rv_gaia": 104.53, "ew_limit_ma": 9.483}, {"star": "6153706477443518976", "z": [-0.79], "ew_ma": [-0.15], "z_comb": -0.79, "p": 0.3263707571801567, "n_lines": 1, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.3, "v": -25.7, "rv_gaia": -26.31, "ew_limit_ma": 1.416}, {"star": "5765846127180770432", "z": [-0.76], "ew_ma": [-0.22], "z_comb": -0.76, "p": 0.3333333333333333, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 1.86, "v": -4.25, "rv_gaia": -4.87, "ew_limit_ma": 1.586}, {"star": "2981583790287411200", "z": [-0.94], "ew_ma": [-0.1], "z_comb": -0.94, "p": 0.33421750663129973, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.32, "v": 41.15, "rv_gaia": 40.43, "ew_limit_ma": 1.131}, {"star": "6802426038708609536", "z": [-1.31], "ew_ma": [-0.23], "z_comb": -1.31, "p": 0.33766233766233766, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.06, "v": -15.9, "rv_gaia": -16.09, "ew_limit_ma": 3.45}, {"star": "5609058277323483392", "z": [-0.61], "ew_ma": [-0.18], "z_comb": -0.61, "p": 0.34574468085106386, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.39, "v": 73.15, "rv_gaia": 72.42, "ew_limit_ma": 4.141}, {"star": "6703245382605547520", "z": [-0.75], "ew_ma": [-0.06], "z_comb": -0.75, "p": 0.3601036269430052, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.83, "v": 33.15, "rv_gaia": 32.63, "ew_limit_ma": 0.429}, {"star": "6612242034982766848", "z": [-0.16], "ew_ma": [-0.03], "z_comb": -0.16, "p": 0.3605263157894737, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.72, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 2.778}, {"star": "2633449134434620288", "z": [-0.68], "ew_ma": [-0.07], "z_comb": -0.68, "p": 0.36553524804177545, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 3.18, "v": -12.1, "rv_gaia": -12.6, "ew_limit_ma": 1.896}, {"star": "4847282124418880256", "z": [-0.75], "ew_ma": [-0.13], "z_comb": -0.75, "p": 0.38421052631578945, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9947, "null_sd": 2.93, "v": 5.05, "rv_gaia": 4.36, "ew_limit_ma": 4.571}, {"star": "3022685626580347392", "z": [-0.39], "ew_ma": [-0.06], "z_comb": -0.39, "p": 0.402088772845953, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9982, "null_sd": 3.08, "v": 144.05, "rv_gaia": 143.42, "ew_limit_ma": 3.446}, {"star": "5553647083168192512", "z": [-0.54], "ew_ma": [-0.09], "z_comb": -0.54, "p": 0.40310077519379844, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9979, "null_sd": 3.09, "v": 60.35, "rv_gaia": 59.67, "ew_limit_ma": 1.874}, {"star": "3646061719703116032", "z": [-0.36], "ew_ma": [-0.04], "z_comb": -0.36, "p": 0.40575916230366493, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 1.9, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.766}, {"star": "3786697056556771584", "z": [-0.16], "ew_ma": [-0.02], "z_comb": -0.16, "p": 0.41534391534391535, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.32, "v": 13.9, "rv_gaia": 13.2, "ew_limit_ma": 1.236}, {"star": "5584019442620181760", "z": [-0.61], "ew_ma": [-0.09], "z_comb": -0.61, "p": 0.4394736842105263, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 4.55, "v": 29.0, "rv_gaia": 28.69, "ew_limit_ma": 9.074}, {"star": "4041857799496807936", "z": [-0.57], "ew_ma": [-0.16], "z_comb": -0.57, "p": 0.4587628865979381, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.3, "v": 3.05, "rv_gaia": 2.44, "ew_limit_ma": 1.721}, {"star": "3811594088617869056", "z": [-0.06], "ew_ma": [-0.01], "z_comb": -0.06, "p": 0.46578947368421053, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.0, "v": 10.7, "rv_gaia": 10.06, "ew_limit_ma": 1.067}, {"star": "5891531404470141824", "z": [-0.22], "ew_ma": [-0.03], "z_comb": -0.22, "p": 0.47493403693931396, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.42, "v": 35.2, "rv_gaia": 34.59, "ew_limit_ma": 1.59}, {"star": "6914237987476826624", "z": [-0.43], "ew_ma": [-0.04], "z_comb": -0.43, "p": 0.4751958224543081, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.46, "v": 3.8, "rv_gaia": 3.1, "ew_limit_ma": 0.995}, {"star": "5725122999630404096", "z": [-0.28], "ew_ma": [-0.03], "z_comb": -0.28, "p": 0.47643979057591623, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9958, "null_sd": 2.75, "v": 33.35, "rv_gaia": 33.23, "ew_limit_ma": 0.899}, {"star": "5317114850417299584", "z": [-0.04], "ew_ma": [-0.01], "z_comb": -0.04, "p": 0.4909560723514212, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.78, "v": -6.25, "rv_gaia": -6.29, "ew_limit_ma": 2.366}, {"star": "2475331597059676288", "z": [-0.26], "ew_ma": [-0.07], "z_comb": -0.26, "p": 0.49222797927461137, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.5, "v": 22.4, "rv_gaia": 21.78, "ew_limit_ma": 2.194}, {"star": "4418203587193988480", "z": [0.11], "ew_ma": [0.03], "z_comb": 0.11, "p": 0.4961038961038961, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.87, "v": -68.75, "rv_gaia": -69.63, "ew_limit_ma": 4.448}, {"star": "6603827644293770624", "z": [-0.12], "ew_ma": [-0.02], "z_comb": -0.12, "p": 0.4961038961038961, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.16, "v": 1.1, "rv_gaia": 0.39, "ew_limit_ma": 1.165}, {"star": "4657193606465368704", "z": [-0.3], "ew_ma": [-0.14], "z_comb": -0.3, "p": 0.5064599483204134, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9911, "null_sd": 3.29, "v": 14.5, "rv_gaia": 13.99, "ew_limit_ma": 5.349}, {"star": "3532823773073745536", "z": [0.14], "ew_ma": [0.02], "z_comb": 0.14, "p": 0.5263157894736842, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.49, "v": 40.35, "rv_gaia": 39.76, "ew_limit_ma": 1.06}, {"star": "4923433303326992384", "z": [0.21], "ew_ma": [0.02], "z_comb": 0.21, "p": 0.5284974093264249, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.04, "v": 7.25, "rv_gaia": 6.53, "ew_limit_ma": 0.786}, {"star": "4906784051581971200", "z": [0.05], "ew_ma": [0.0], "z_comb": 0.05, "p": 0.5286458333333334, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 2.2, "v": 3.55, "rv_gaia": 2.92, "ew_limit_ma": 0.749}, {"star": "2390702771185162112", "z": [0.29], "ew_ma": [0.05], "z_comb": 0.29, "p": 0.5366492146596858, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.61, "v": 10.85, "rv_gaia": 10.28, "ew_limit_ma": 2.175}, {"star": "6029992663310612096", "z": [0.79], "ew_ma": [0.36], "z_comb": 0.79, "p": 0.5558441558441558, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.79, "v": 14.75, "rv_gaia": 14.08, "ew_limit_ma": 4.383}, {"star": "2477815222028038272", "z": [0.23], "ew_ma": [0.05], "z_comb": 0.23, "p": 0.5607235142118863, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.27, "v": 12.1, "rv_gaia": 11.46, "ew_limit_ma": 2.544}, {"star": "5906633952564270848", "z": [0.35], "ew_ma": [0.08], "z_comb": 0.35, "p": 0.5948051948051948, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9978, "null_sd": 3.5, "v": -7.0, "rv_gaia": -7.68, "ew_limit_ma": 4.279}, {"star": "5461620846141553024", "z": [0.44], "ew_ma": [0.06], "z_comb": 0.44, "p": 0.6119791666666666, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.42, "v": 27.55, "rv_gaia": 26.94, "ew_limit_ma": 1.72}, {"star": "3480332916165099904", "z": [0.79], "ew_ma": [0.07], "z_comb": 0.79, "p": 0.6169665809768637, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.43, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.734}, {"star": "2533723670313663872", "z": [1.31], "ew_ma": [1.11], "z_comb": 1.31, "p": 0.6178010471204188, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9571, "null_sd": 3.04, "v": 18.1, "rv_gaia": 16.81, "ew_limit_ma": 10.824}, {"star": "2966790170574625408", "z": [0.41], "ew_ma": [0.05], "z_comb": 0.41, "p": 0.625, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 3.95, "v": 38.45, "rv_gaia": 37.83, "ew_limit_ma": 7.224}, {"star": "4975284381908412672", "z": [0.42], "ew_ma": [0.04], "z_comb": 0.42, "p": 0.6358839050131926, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.95, "v": -10.2, "rv_gaia": -10.92, "ew_limit_ma": 0.524}, {"star": "6544549880063909248", "z": [0.61], "ew_ma": [0.12], "z_comb": 0.61, "p": 0.6373333333333333, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.29, "v": 21.4, "rv_gaia": 20.78, "ew_limit_ma": 1.979}, {"star": "4117290138348536064", "z": [0.6], "ew_ma": [0.08], "z_comb": 0.6, "p": 0.6391752577319587, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.59, "v": 10.6, "rv_gaia": 10.36, "ew_limit_ma": 1.454}, {"star": "5479222240596469632", "z": [0.97], "ew_ma": [0.33], "z_comb": 0.97, "p": 0.640625, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.88, "v": 22.85, "rv_gaia": 22.03, "ew_limit_ma": 2.999}, {"star": "6133033601555979648", "z": [1.4], "ew_ma": [0.7], "z_comb": 1.4, "p": 0.6430446194225722, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.17, "v": 18.7, "rv_gaia": 18.05, "ew_limit_ma": 9.418}, {"star": "4867596937475715968", "z": [0.79], "ew_ma": [0.11], "z_comb": 0.79, "p": 0.643979057591623, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.11, "v": -9.4, "rv_gaia": -9.94, "ew_limit_ma": 1.314}, {"star": "5790389872417570816", "z": [0.99], "ew_ma": [0.21], "z_comb": 0.99, "p": 0.6476683937823834, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.5, "v": -20.35, "rv_gaia": -21.17, "ew_limit_ma": 1.58}, {"star": "3585098090614578688", "z": [0.73], "ew_ma": [0.12], "z_comb": 0.73, "p": 0.6537467700258398, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.16, "v": -22.15, "rv_gaia": -22.45, "ew_limit_ma": 6.002}, {"star": "5493588665684618752", "z": [0.83], "ew_ma": [0.15], "z_comb": 0.83, "p": 0.6537467700258398, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 3.08, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 2.273}, {"star": "5548164986925169024", "z": [0.65], "ew_ma": [0.05], "z_comb": 0.65, "p": 0.6552631578947369, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.37, "v": 52.4, "rv_gaia": 51.69, "ew_limit_ma": 0.797}, {"star": "6489909443564308224", "z": [1.09], "ew_ma": [0.14], "z_comb": 1.09, "p": 0.6649350649350649, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9955, "null_sd": 3.17, "v": 0.85, "rv_gaia": 0.63, "ew_limit_ma": 1.872}, {"star": "2324785228033780608", "z": [0.81], "ew_ma": [0.16], "z_comb": 0.81, "p": 0.6710182767624021, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": -6.85, "rv_gaia": -7.42, "ew_limit_ma": 2.729}, {"star": "4768170579173552896", "z": [0.99], "ew_ma": [0.2], "z_comb": 0.99, "p": 0.6754617414248021, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.77, "v": -4.85, "rv_gaia": -5.53, "ew_limit_ma": 2.731}, {"star": "5528591961953902720", "z": [1.06], "ew_ma": [0.29], "z_comb": 1.06, "p": 0.6863753213367609, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.61, "v": -1.05, "rv_gaia": -1.8, "ew_limit_ma": 4.233}, {"star": "5481848424118748672", "z": [1.57], "ew_ma": [0.92], "z_comb": 1.57, "p": 0.6973684210526315, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9787, "null_sd": 3.62, "v": 32.25, "rv_gaia": 31.45, "ew_limit_ma": 10.031}, {"star": "5798962867668048768", "z": [1.59], "ew_ma": [0.44], "z_comb": 1.59, "p": 0.6997389033942559, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9961, "null_sd": 3.07, "v": 2.7, "rv_gaia": 1.94, "ew_limit_ma": 3.477}, {"star": "4383374219923745024", "z": [1.27], "ew_ma": [0.27], "z_comb": 1.27, "p": 0.7217847769028871, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.09, "v": 10.95, "rv_gaia": 10.35, "ew_limit_ma": 1.956}, {"star": "5876112300125320448", "z": [1.29], "ew_ma": [0.13], "z_comb": 1.29, "p": 0.7220779220779221, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.62, "v": 38.6, "rv_gaia": 37.83, "ew_limit_ma": 1.554}, {"star": "6370513647703084544", "z": [1.2], "ew_ma": [0.15], "z_comb": 1.2, "p": 0.7225130890052356, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.21, "v": 34.95, "rv_gaia": 34.33, "ew_limit_ma": 1.234}, {"star": "4400452830957830656", "z": [1.65], "ew_ma": [0.54], "z_comb": 1.65, "p": 0.7272727272727273, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9918, "null_sd": 3.34, "v": -36.7, "rv_gaia": -37.09, "ew_limit_ma": 4.589}, {"star": "2585856120791459584", "z": [1.77], "ew_ma": [0.3], "z_comb": 1.77, "p": 0.7376623376623377, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.89, "v": -20.35, "rv_gaia": -20.97, "ew_limit_ma": 1.529}, {"star": "5357075947709011456", "z": [1.2], "ew_ma": [0.15], "z_comb": 1.2, "p": 0.7461538461538462, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.54, "v": 21.5, "rv_gaia": 21.19, "ew_limit_ma": 1.312}, {"star": "6489771832811810432", "z": [1.84], "ew_ma": [0.67], "z_comb": 1.84, "p": 0.7584415584415585, "n_lines": 1, "n_spectra": 6, "twin_r": 0.996, "null_sd": 4.57, "v": -30.05, "rv_gaia": -31.05, "ew_limit_ma": 9.339}, {"star": "2417456431710276096", "z": [1.82], "ew_ma": [0.19], "z_comb": 1.82, "p": 0.7931937172774869, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": 8.6, "rv_gaia": 7.88, "ew_limit_ma": 1.17}, {"star": "3182634954624823168", "z": [1.57], "ew_ma": [0.37], "z_comb": 1.57, "p": 0.800524934383202, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.47, "v": 5.4, "rv_gaia": 4.81, "ew_limit_ma": 3.804}, {"star": "6904703228801028864", "z": [2.03], "ew_ma": [0.43], "z_comb": 2.03, "p": 0.8083989501312336, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 3.02, "v": 10.05, "rv_gaia": 9.13, "ew_limit_ma": 4.846}, {"star": "6128366415218881536", "z": [1.74], "ew_ma": [0.2], "z_comb": 1.74, "p": 0.8167539267015707, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.82, "v": 31.2, "rv_gaia": 30.47, "ew_limit_ma": 1.57}, {"star": "6213644846302305536", "z": [2.25], "ew_ma": [0.48], "z_comb": 2.25, "p": 0.8203753351206434, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.76, "v": -5.85, "rv_gaia": -6.56, "ew_limit_ma": 3.076}, {"star": "3346787986201584896", "z": [2.15], "ew_ma": [0.4], "z_comb": 2.15, "p": 0.8264248704663213, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 2.78, "v": 1.1, "rv_gaia": 0.26, "ew_limit_ma": 2.355}, {"star": "3799626935341796096", "z": [2.22], "ew_ma": [0.49], "z_comb": 2.22, "p": 0.856020942408377, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.66, "v": 2.5, "rv_gaia": 1.89, "ew_limit_ma": 3.073}, {"star": "5586381090520538880", "z": [2.78], "ew_ma": [0.33], "z_comb": 2.78, "p": 0.8926701570680629, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 2.88, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 1.738}, {"star": "5452492082132835840", "z": [3.64], "ew_ma": [0.29], "z_comb": 3.64, "p": 0.9399477806788512, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.49, "v": 13.45, "rv_gaia": 12.83, "ew_limit_ma": 0.982}, {"star": "2525514785221197696", "z": [3.13], "ew_ma": [0.3], "z_comb": 3.13, "p": 0.958974358974359, "n_lines": 1, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.07, "v": -3.15, "rv_gaia": -3.83, "ew_limit_ma": 1.219}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Cm_UVES.json b/papers/short_lived_elements/data/element_Cm_UVES.json new file mode 100644 index 0000000000000000000000000000000000000000..d9f63470911612607d43d31ac6c28c32561d899b --- /dev/null +++ b/papers/short_lived_elements/data/element_Cm_UVES.json @@ -0,0 +1 @@ +{"lines": [[4207.66, 1.0]], "stable": [true], "results": [{"star": "5381537023379295232", "z": [-6.83], "ew_ma": [-8.34], "z_comb": -6.83, "p": 0.017456359102244388, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9861, "null_sd": 2.72, "v": 17.55, "rv_gaia": 16.94, "ew_limit_ma": 3.694}, {"star": "5292834403845151488", "z": [-5.78], "ew_ma": [-2.3], "z_comb": -5.78, "p": 0.04488778054862843, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9906, "null_sd": 3.71, "v": 18.6, "rv_gaia": 17.48, "ew_limit_ma": 1.292}, {"star": "5596797039059063680", "z": [-5.03], "ew_ma": [-0.83], "z_comb": -5.03, "p": 0.0798004987531172, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 3.57, "v": -15.4, "rv_gaia": -15.71, "ew_limit_ma": 1.52}, {"star": "5409121433672765824", "z": [-4.31], "ew_ma": [-0.82], "z_comb": -4.31, "p": 0.09476309226932668, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9968, "null_sd": 3.6, "v": 47.85, "rv_gaia": 47.45, "ew_limit_ma": 1.246}, {"star": "3584074380866605440", "z": [-3.49], "ew_ma": [-0.9], "z_comb": -3.49, "p": 0.1015625, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.89, "v": 20.6, "rv_gaia": 19.78, "ew_limit_ma": 2.176}, {"star": "3256786534197166208", "z": [-3.47], "ew_ma": [-0.93], "z_comb": -3.47, "p": 0.1271186440677966, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.19, "v": 17.9, "rv_gaia": 17.62, "ew_limit_ma": 1.422}, {"star": "6062166950467100032", "z": [-5.15], "ew_ma": [-1.13], "z_comb": -5.15, "p": 0.13725490196078433, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9938, "null_sd": 4.6, "v": -64.15, "rv_gaia": -63.57, "ew_limit_ma": 2.123}, {"star": "1787990525934491776", "z": [-2.97], "ew_ma": [-1.64], "z_comb": -2.97, "p": 0.1396508728179551, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9877, "null_sd": 3.5, "v": -44.35, "rv_gaia": -44.33, "ew_limit_ma": 8.689}, {"star": "2029433521248546304", "z": [-3.93], "ew_ma": [-1.9], "z_comb": -3.93, "p": 0.14606741573033707, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9962, "null_sd": 3.78, "v": -45.7, "rv_gaia": -45.34, "ew_limit_ma": 3.4}, {"star": "6912276699251278848", "z": [-3.23], "ew_ma": [-1.19], "z_comb": -3.23, "p": 0.15211970074812967, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.26, "v": -17.55, "rv_gaia": -17.49, "ew_limit_ma": 2.32}, {"star": "2473608009504466688", "z": [-3.49], "ew_ma": [-0.97], "z_comb": -3.49, "p": 0.1657754010695187, "n_lines": 1, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.17, "v": 9.25, "rv_gaia": 8.21, "ew_limit_ma": 4.299}, {"star": "84625634714435968", "z": [-2.18], "ew_ma": [-1.3], "z_comb": -2.18, "p": 0.16957605985037408, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9924, "null_sd": 2.63, "v": 5.35, "rv_gaia": 4.34, "ew_limit_ma": 4.474}, {"star": "3702148666829533952", "z": [-3.0], "ew_ma": [-1.15], "z_comb": -3.0, "p": 0.1791907514450867, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9912, "null_sd": 3.96, "v": 3.8, "rv_gaia": 2.63, "ew_limit_ma": 4.059}, {"star": "4722135642226902656", "z": [-3.23], "ew_ma": [-0.75], "z_comb": -3.23, "p": 0.19318181818181818, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.62, "v": 12.2, "rv_gaia": 11.94, "ew_limit_ma": 1.239}, {"star": "4906784051581971200", "z": [-3.11], "ew_ma": [-1.16], "z_comb": -3.11, "p": 0.19451371571072318, "n_lines": 1, "n_spectra": 1, "twin_r": 0.996, "null_sd": 3.55, "v": 2.9, "rv_gaia": 2.92, "ew_limit_ma": 4.114}, {"star": "2423292879948720000", "z": [-3.27], "ew_ma": [-0.58], "z_comb": -3.27, "p": 0.1970074812967581, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.54, "v": 29.05, "rv_gaia": 28.92, "ew_limit_ma": 1.398}, {"star": "6161806515182527616", "z": [-2.32], "ew_ma": [-0.59], "z_comb": -2.32, "p": 0.20224719101123595, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.27, "v": 81.9, "rv_gaia": 82.23, "ew_limit_ma": 2.553}, {"star": "3282511876473223552", "z": [-3.08], "ew_ma": [-1.15], "z_comb": -3.08, "p": 0.20441988950276244, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9924, "null_sd": 4.08, "v": -46.3, "rv_gaia": -46.55, "ew_limit_ma": 4.925}, {"star": "5902750168276592256", "z": [-2.3], "ew_ma": [-0.91], "z_comb": -2.3, "p": 0.21212121212121213, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.53, "v": -68.4, "rv_gaia": -68.78, "ew_limit_ma": 4.288}, {"star": "3269362645115584640", "z": [-2.35], "ew_ma": [-0.58], "z_comb": -2.35, "p": 0.24858757062146894, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9953, "null_sd": 2.87, "v": 19.15, "rv_gaia": 18.73, "ew_limit_ma": 1.3}, {"star": "6770313530317154560", "z": [-2.62], "ew_ma": [-0.57], "z_comb": -2.62, "p": 0.2593516209476309, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 4.01, "v": -24.95, "rv_gaia": -24.7, "ew_limit_ma": 3.904}, {"star": "4343066192373826176", "z": [-2.61], "ew_ma": [-0.95], "z_comb": -2.61, "p": 0.2608695652173913, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9741, "null_sd": 4.46, "v": -32.6, "rv_gaia": -30.57, "ew_limit_ma": 3.871}, {"star": "4925088171405735680", "z": [-2.61], "ew_ma": [-0.61], "z_comb": -2.61, "p": 0.2647058823529412, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 4.09, "v": 36.45, "rv_gaia": 36.66, "ew_limit_ma": 1.561}, {"star": "4912580642524184960", "z": [-1.51], "ew_ma": [-0.21], "z_comb": -1.51, "p": 0.2916666666666667, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9982, "null_sd": 2.92, "v": 28.45, "rv_gaia": 27.64, "ew_limit_ma": 1.094}, {"star": "5320952798822552064", "z": [-2.17], "ew_ma": [-0.31], "z_comb": -2.17, "p": 0.2967581047381546, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 3.53, "v": 12.2, "rv_gaia": 11.87, "ew_limit_ma": 1.02}, {"star": "6163964031871884672", "z": [-1.35], "ew_ma": [-0.28], "z_comb": -1.35, "p": 0.3192019950124688, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.72, "v": 3.35, "rv_gaia": 3.36, "ew_limit_ma": 1.682}, {"star": "4423865487962417024", "z": [-2.22], "ew_ma": [-0.71], "z_comb": -2.22, "p": 0.3202247191011236, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.52, "v": 19.3, "rv_gaia": 18.95, "ew_limit_ma": 3.189}, {"star": "5264749303462961280", "z": [-1.77], "ew_ma": [-1.18], "z_comb": -1.77, "p": 0.32418952618453867, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9914, "null_sd": 3.64, "v": 35.75, "rv_gaia": 36.06, "ew_limit_ma": 5.336}, {"star": "6133033601555979648", "z": [-1.58], "ew_ma": [-0.97], "z_comb": -1.58, "p": 0.34413965087281795, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 3.99, "v": 18.4, "rv_gaia": 18.05, "ew_limit_ma": 5.915}, {"star": "5553647083168192512", "z": [-1.27], "ew_ma": [-0.29], "z_comb": -1.27, "p": 0.34759358288770054, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9937, "null_sd": 3.91, "v": 60.55, "rv_gaia": 59.67, "ew_limit_ma": 2.621}, {"star": "5569858798004394624", "z": [-1.18], "ew_ma": [-0.23], "z_comb": -1.18, "p": 0.3516209476309227, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9952, "null_sd": 3.57, "v": 56.9, "rv_gaia": 56.33, "ew_limit_ma": 2.988}, {"star": "5730371484020807808", "z": [-1.24], "ew_ma": [-0.31], "z_comb": -1.24, "p": 0.3563218390804598, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 4.03, "v": 119.4, "rv_gaia": 119.47, "ew_limit_ma": 2.849}, {"star": "4421455530273900032", "z": [-1.22], "ew_ma": [-0.4], "z_comb": -1.22, "p": 0.3567251461988304, "n_lines": 1, "n_spectra": 1, "twin_r": 0.993, "null_sd": 4.48, "v": 54.65, "rv_gaia": 54.37, "ew_limit_ma": 5.378}, {"star": "5916947921402171264", "z": [-1.73], "ew_ma": [-0.72], "z_comb": -1.73, "p": 0.3609467455621302, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.96, "v": 99.0, "rv_gaia": 99.72, "ew_limit_ma": 8.87}, {"star": "3946438125929224320", "z": [-1.0], "ew_ma": [-0.26], "z_comb": -1.0, "p": 0.371571072319202, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.57, "v": 2.1, "rv_gaia": 1.76, "ew_limit_ma": 3.343}, {"star": "2899947933845777920", "z": [-0.99], "ew_ma": [-0.18], "z_comb": -0.99, "p": 0.3765586034912718, "n_lines": 1, "n_spectra": 1, "twin_r": 0.997, "null_sd": 3.28, "v": 37.85, "rv_gaia": 35.78, "ew_limit_ma": 1.726}, {"star": "3750995604764854400", "z": [-1.1], "ew_ma": [-0.18], "z_comb": -1.1, "p": 0.38154613466334164, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.63, "v": -17.6, "rv_gaia": -17.93, "ew_limit_ma": 1.428}, {"star": "6515731817739456256", "z": [-1.13], "ew_ma": [-0.19], "z_comb": -1.13, "p": 0.38271604938271603, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.43, "v": -0.3, "rv_gaia": -1.09, "ew_limit_ma": 1.327}, {"star": "4976894960284258048", "z": [-0.78], "ew_ma": [-0.19], "z_comb": -0.78, "p": 0.385, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 3.95, "v": 5.75, "rv_gaia": 5.76, "ew_limit_ma": 2.878}, {"star": "6286606170175267840", "z": [-0.67], "ew_ma": [-0.29], "z_comb": -0.67, "p": 0.3875, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.68, "v": -23.0, "rv_gaia": -23.19, "ew_limit_ma": 3.826}, {"star": "4775347916201249792", "z": [-0.72], "ew_ma": [-0.32], "z_comb": -0.72, "p": 0.3953488372093023, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9812, "null_sd": 3.02, "v": -4.9, "rv_gaia": -4.59, "ew_limit_ma": 4.408}, {"star": "3482326708703712640", "z": [-0.4], "ew_ma": [-0.07], "z_comb": -0.4, "p": 0.39900249376558605, "n_lines": 1, "n_spectra": 1, "twin_r": 0.999, "null_sd": 3.07, "v": 7.55, "rv_gaia": 7.38, "ew_limit_ma": 2.57}, {"star": "2430102808294101760", "z": [-0.98], "ew_ma": [-0.21], "z_comb": -0.98, "p": 0.4, "n_lines": 1, "n_spectra": 4, "twin_r": 0.998, "null_sd": 3.51, "v": -9.8, "rv_gaia": -10.12, "ew_limit_ma": 2.219}, {"star": "6764687466752221824", "z": [-0.33], "ew_ma": [-0.11], "z_comb": -0.33, "p": 0.4093567251461988, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.71, "v": -42.7, "rv_gaia": -42.55, "ew_limit_ma": 5.036}, {"star": "3118434397663311360", "z": [-0.56], "ew_ma": [-0.16], "z_comb": -0.56, "p": 0.41081081081081083, "n_lines": 1, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.09, "v": 47.4, "rv_gaia": 47.33, "ew_limit_ma": 3.134}, {"star": "5801950515627094400", "z": [-0.77], "ew_ma": [-0.34], "z_comb": -0.77, "p": 0.4110429447852761, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.0, "v": 59.6, "rv_gaia": 60.13, "ew_limit_ma": 5.64}, {"star": "5760701787150565888", "z": [-0.63], "ew_ma": [-0.25], "z_comb": -0.63, "p": 0.41975308641975306, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.7, "v": 33.4, "rv_gaia": 31.99, "ew_limit_ma": 2.868}, {"star": "3250489115709122560", "z": [-0.69], "ew_ma": [-0.13], "z_comb": -0.69, "p": 0.42643391521197005, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.19, "v": 120.55, "rv_gaia": 120.58, "ew_limit_ma": 2.423}, {"star": "2966790170574625408", "z": [-0.42], "ew_ma": [-0.09], "z_comb": -0.42, "p": 0.4314214463840399, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9974, "null_sd": 3.07, "v": 39.3, "rv_gaia": 37.83, "ew_limit_ma": 3.016}, {"star": "6166183842771027328", "z": [-0.34], "ew_ma": [-0.07], "z_comb": -0.34, "p": 0.4339152119700748, "n_lines": 1, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.4, "v": -17.35, "rv_gaia": -17.46, "ew_limit_ma": 2.52}, {"star": "4303294039306246656", "z": [-0.79], "ew_ma": [-0.16], "z_comb": -0.79, "p": 0.4389027431421446, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.96, "v": 0.1, "rv_gaia": -0.08, "ew_limit_ma": 2.937}, {"star": "3732539683617410816", "z": [-0.79], "ew_ma": [-0.19], "z_comb": -0.79, "p": 0.44, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 3.57, "v": -27.0, "rv_gaia": -27.25, "ew_limit_ma": 2.54}, {"star": "6564091190988411520", "z": [-0.38], "ew_ma": [-0.08], "z_comb": -0.38, "p": 0.44139650872817954, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 2.76, "v": -7.05, "rv_gaia": -7.55, "ew_limit_ma": 1.684}, {"star": "4345775217221821312", "z": [-0.32], "ew_ma": [-0.08], "z_comb": -0.32, "p": 0.45098039215686275, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9964, "null_sd": 2.72, "v": 11.55, "rv_gaia": 11.71, "ew_limit_ma": 1.867}, {"star": "3188395880157173120", "z": [-0.47], "ew_ma": [-0.13], "z_comb": -0.47, "p": 0.45222929936305734, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9939, "null_sd": 3.82, "v": 77.55, "rv_gaia": 77.12, "ew_limit_ma": 2.921}, {"star": "3639760521643499776", "z": [-0.26], "ew_ma": [-0.13], "z_comb": -0.26, "p": 0.4538653366583541, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9961, "null_sd": 2.5, "v": -11.5, "rv_gaia": -12.39, "ew_limit_ma": 4.134}, {"star": "5945941905576552064", "z": [-0.28], "ew_ma": [-0.07], "z_comb": -0.28, "p": 0.45698924731182794, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9979, "null_sd": 2.89, "v": -8.9, "rv_gaia": -9.54, "ew_limit_ma": 2.246}, {"star": "5559265690666326016", "z": [0.13], "ew_ma": [0.04], "z_comb": 0.13, "p": 0.4623115577889447, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9935, "null_sd": 4.39, "v": 89.85, "rv_gaia": 88.81, "ew_limit_ma": 3.7}, {"star": "2531792756096759296", "z": [-0.21], "ew_ma": [-0.03], "z_comb": -0.21, "p": 0.46633416458852867, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 4.0, "v": 5.4, "rv_gaia": 5.96, "ew_limit_ma": 2.535}, {"star": "5129338021224785408", "z": [0.2], "ew_ma": [0.16], "z_comb": 0.2, "p": 0.47880299251870323, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9693, "null_sd": 3.85, "v": 25.65, "rv_gaia": 29.09, "ew_limit_ma": 10.408}, {"star": "6018047019138644480", "z": [-0.16], "ew_ma": [-0.06], "z_comb": -0.16, "p": 0.4912718204488778, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 3.06, "v": 12.85, "rv_gaia": 12.85, "ew_limit_ma": 4.173}, {"star": "3482326708703712896", "z": [-0.22], "ew_ma": [-0.04], "z_comb": -0.22, "p": 0.5012468827930174, "n_lines": 1, "n_spectra": 1, "twin_r": 0.999, "null_sd": 2.82, "v": 5.45, "rv_gaia": 5.62, "ew_limit_ma": 1.356}, {"star": "1244571953471006720", "z": [-0.27], "ew_ma": [-0.16], "z_comb": -0.27, "p": 0.5037406483790524, "n_lines": 1, "n_spectra": 4, "twin_r": 0.987, "null_sd": 4.3, "v": -16.2, "rv_gaia": -16.75, "ew_limit_ma": 7.811}, {"star": "5062172841616745856", "z": [0.44], "ew_ma": [0.15], "z_comb": 0.44, "p": 0.510752688172043, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9969, "null_sd": 3.81, "v": 11.7, "rv_gaia": 11.16, "ew_limit_ma": 4.633}, {"star": "4341501106288171008", "z": [0.31], "ew_ma": [0.15], "z_comb": 0.31, "p": 0.5112219451371571, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 4.12, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 12.119}, {"star": "5528591961953902720", "z": [0.09], "ew_ma": [0.02], "z_comb": 0.09, "p": 0.5187032418952618, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.38, "v": -1.5, "rv_gaia": -1.8, "ew_limit_ma": 1.625}, {"star": "4315804351350378496", "z": [0.12], "ew_ma": [0.1], "z_comb": 0.12, "p": 0.5229885057471264, "n_lines": 1, "n_spectra": 4, "twin_r": 0.992, "null_sd": 3.94, "v": -100.25, "rv_gaia": -100.33, "ew_limit_ma": 9.316}, {"star": "6128366415218881536", "z": [-0.33], "ew_ma": [-0.11], "z_comb": -0.33, "p": 0.5236907730673317, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 3.79, "v": 31.05, "rv_gaia": 30.47, "ew_limit_ma": 4.713}, {"star": "4934923028038871296", "z": [0.16], "ew_ma": [0.04], "z_comb": 0.16, "p": 0.5243243243243243, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.64, "v": 12.95, "rv_gaia": 11.9, "ew_limit_ma": 2.148}, {"star": "2417456431710276096", "z": [0.31], "ew_ma": [0.04], "z_comb": 0.31, "p": 0.5361596009975063, "n_lines": 1, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.23, "v": 8.15, "rv_gaia": 7.88, "ew_limit_ma": 1.586}, {"star": "2750176827892427904", "z": [0.2], "ew_ma": [0.08], "z_comb": 0.2, "p": 0.5361596009975063, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.56, "v": -15.45, "rv_gaia": -14.72, "ew_limit_ma": 3.989}, {"star": "3261878613062758144", "z": [0.36], "ew_ma": [0.12], "z_comb": 0.36, "p": 0.5361596009975063, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.23, "v": 22.25, "rv_gaia": 22.59, "ew_limit_ma": 5.2}, {"star": "4733035238430992768", "z": [0.1], "ew_ma": [0.01], "z_comb": 0.1, "p": 0.5361596009975063, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9981, "null_sd": 3.23, "v": 0.45, "rv_gaia": 0.66, "ew_limit_ma": 1.826}, {"star": "3630099250409312640", "z": [0.34], "ew_ma": [0.18], "z_comb": 0.34, "p": 0.5486284289276808, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9298, "null_sd": 3.86, "v": -10.6, "rv_gaia": -9.78, "ew_limit_ma": 14.812}, {"star": "6963761190199424", "z": [0.71], "ew_ma": [0.14], "z_comb": 0.71, "p": 0.5491329479768786, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.77, "v": 25.7, "rv_gaia": 24.71, "ew_limit_ma": 3.137}, {"star": "5586381090520538880", "z": [0.49], "ew_ma": [0.09], "z_comb": 0.49, "p": 0.5654761904761905, "n_lines": 1, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.0, "v": 9.6, "rv_gaia": 9.18, "ew_limit_ma": 1.925}, {"star": "4675955810263106432", "z": [0.43], "ew_ma": [0.18], "z_comb": 0.43, "p": 0.5657142857142857, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 3.52, "v": 31.8, "rv_gaia": 28.42, "ew_limit_ma": 4.562}, {"star": "4745373133284418816", "z": [0.62], "ew_ma": [0.12], "z_comb": 0.62, "p": 0.57356608478803, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.13, "v": 16.5, "rv_gaia": 16.94, "ew_limit_ma": 2.443}, {"star": "5493588665684618752", "z": [0.19], "ew_ma": [0.08], "z_comb": 0.19, "p": 0.5823529411764706, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.92, "v": 5.7, "rv_gaia": 4.82, "ew_limit_ma": 6.491}, {"star": "6382933589314905472", "z": [0.39], "ew_ma": [0.22], "z_comb": 0.39, "p": 0.5941176470588235, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9788, "null_sd": 4.69, "v": 32.8, "rv_gaia": 32.35, "ew_limit_ma": 9.527}, {"star": "4623036865373793408", "z": [0.81], "ew_ma": [0.22], "z_comb": 0.81, "p": 0.5985037406483791, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 2.65, "v": 10.9, "rv_gaia": 10.71, "ew_limit_ma": 2.382}, {"star": "2477891500647336704", "z": [0.97], "ew_ma": [0.3], "z_comb": 0.97, "p": 0.601123595505618, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.11, "v": -14.75, "rv_gaia": -14.92, "ew_limit_ma": 2.617}, {"star": "5524982093479504384", "z": [1.11], "ew_ma": [0.38], "z_comb": 1.11, "p": 0.6058394160583942, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 4.11, "v": 9.5, "rv_gaia": 9.31, "ew_limit_ma": 4.874}, {"star": "2423493369021649920", "z": [0.99], "ew_ma": [0.51], "z_comb": 0.99, "p": 0.6109725685785536, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.92, "v": -2.9, "rv_gaia": -2.55, "ew_limit_ma": 7.308}, {"star": "4657193606465368704", "z": [0.52], "ew_ma": [0.28], "z_comb": 0.52, "p": 0.6140350877192983, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9912, "null_sd": 4.24, "v": 14.75, "rv_gaia": 13.99, "ew_limit_ma": 7.138}, {"star": "3529518709839090176", "z": [1.47], "ew_ma": [0.29], "z_comb": 1.47, "p": 0.6408977556109726, "n_lines": 1, "n_spectra": 3, "twin_r": 0.998, "null_sd": 3.54, "v": -20.35, "rv_gaia": -20.24, "ew_limit_ma": 2.175}, {"star": "6150200345317455232", "z": [1.48], "ew_ma": [0.39], "z_comb": 1.48, "p": 0.6408977556109726, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.7, "v": -6.75, "rv_gaia": -7.11, "ew_limit_ma": 3.348}, {"star": "3400292798990117888", "z": [1.4], "ew_ma": [0.31], "z_comb": 1.4, "p": 0.655860349127182, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.71, "v": 37.45, "rv_gaia": 37.7, "ew_limit_ma": 2.894}, {"star": "4768170579173552896", "z": [1.31], "ew_ma": [0.31], "z_comb": 1.31, "p": 0.6583541147132169, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 3.64, "v": -5.25, "rv_gaia": -5.53, "ew_limit_ma": 4.077}, {"star": "5951165616611763456", "z": [1.08], "ew_ma": [0.48], "z_comb": 1.08, "p": 0.6683291770573566, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.01, "v": 25.75, "rv_gaia": 25.96, "ew_limit_ma": 4.793}, {"star": "3212075924646082176", "z": [1.18], "ew_ma": [0.35], "z_comb": 1.18, "p": 0.6686390532544378, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9938, "null_sd": 3.67, "v": 9.7, "rv_gaia": 10.31, "ew_limit_ma": 3.878}, {"star": "5609058277323483392", "z": [1.87], "ew_ma": [1.12], "z_comb": 1.87, "p": 0.6733167082294265, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.7, "v": 71.85, "rv_gaia": 72.42, "ew_limit_ma": 9.815}, {"star": "5540006949934104448", "z": [0.86], "ew_ma": [1.28], "z_comb": 0.86, "p": 0.7007481296758105, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9836, "null_sd": 2.09, "v": 49.25, "rv_gaia": 49.31, "ew_limit_ma": 14.372}, {"star": "5155981730587168384", "z": [2.38], "ew_ma": [0.65], "z_comb": 2.38, "p": 0.7057356608478803, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9954, "null_sd": 4.26, "v": 7.2, "rv_gaia": 7.01, "ew_limit_ma": 4.233}, {"star": "6384510877400590336", "z": [1.17], "ew_ma": [0.25], "z_comb": 1.17, "p": 0.7082294264339152, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 2.82, "v": -2.0, "rv_gaia": -2.29, "ew_limit_ma": 1.963}, {"star": "3511640513332581504", "z": [2.22], "ew_ma": [0.71], "z_comb": 2.22, "p": 0.7098765432098766, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 3.86, "v": -12.25, "rv_gaia": -12.25, "ew_limit_ma": 4.273}, {"star": "6577318075351824512", "z": [1.6], "ew_ma": [0.44], "z_comb": 1.6, "p": 0.71571072319202, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 2.81, "v": 12.2, "rv_gaia": 11.95, "ew_limit_ma": 2.978}, {"star": "5481848424118748672", "z": [1.99], "ew_ma": [0.85], "z_comb": 1.99, "p": 0.7231920199501247, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9838, "null_sd": 3.48, "v": 33.05, "rv_gaia": 31.45, "ew_limit_ma": 5.271}, {"star": "3584074376569429248", "z": [1.97], "ew_ma": [0.52], "z_comb": 1.97, "p": 0.7266666666666667, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.84, "v": 20.8, "rv_gaia": 20.73, "ew_limit_ma": 2.567}, {"star": "5567900121118276736", "z": [2.04], "ew_ma": [0.42], "z_comb": 2.04, "p": 0.7506234413965087, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.55, "v": 29.1, "rv_gaia": 27.55, "ew_limit_ma": 3.126}, {"star": "2913411183149615744", "z": [2.11], "ew_ma": [0.81], "z_comb": 2.11, "p": 0.7780548628428927, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9953, "null_sd": 3.22, "v": 21.5, "rv_gaia": 21.69, "ew_limit_ma": 4.793}, {"star": "6141742283401003264", "z": [2.02], "ew_ma": [0.79], "z_comb": 2.02, "p": 0.7780548628428927, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.94, "v": -14.0, "rv_gaia": -13.03, "ew_limit_ma": 6.259}, {"star": "3575733210781078016", "z": [2.63], "ew_ma": [2.03], "z_comb": 2.63, "p": 0.7783505154639175, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9921, "null_sd": 3.91, "v": 0.8, "rv_gaia": -0.41, "ew_limit_ma": 12.35}, {"star": "2980492387558410112", "z": [2.41], "ew_ma": [1.79], "z_comb": 2.41, "p": 0.7955112219451371, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9691, "null_sd": 3.27, "v": 21.15, "rv_gaia": 21.6, "ew_limit_ma": 12.867}, {"star": "3265335443260522112", "z": [2.89], "ew_ma": [1.35], "z_comb": 2.89, "p": 0.8029925187032418, "n_lines": 1, "n_spectra": 2, "twin_r": 0.9952, "null_sd": 4.52, "v": 20.25, "rv_gaia": 19.3, "ew_limit_ma": 7.247}, {"star": "6226694571859532800", "z": [3.2], "ew_ma": [1.08], "z_comb": 3.2, "p": 0.827930174563591, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.41, "v": 4.8, "rv_gaia": 5.14, "ew_limit_ma": 4.527}, {"star": "2898239468873596800", "z": [3.02], "ew_ma": [0.63], "z_comb": 3.02, "p": 0.830423940149626, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.13, "v": -3.5, "rv_gaia": -3.85, "ew_limit_ma": 2.917}, {"star": "5266348577487273344", "z": [2.73], "ew_ma": [1.21], "z_comb": 2.73, "p": 0.8428927680798005, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9972, "null_sd": 2.87, "v": 14.15, "rv_gaia": 13.6, "ew_limit_ma": 4.489}, {"star": "2860924621205256704", "z": [3.47], "ew_ma": [1.92], "z_comb": 3.47, "p": 0.8528678304239401, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9937, "null_sd": 3.6, "v": -6.75, "rv_gaia": -6.75, "ew_limit_ma": 8.133}, {"star": "2964794041574370560", "z": [3.0], "ew_ma": [0.69], "z_comb": 3.0, "p": 0.8603491271820449, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.31, "v": 29.95, "rv_gaia": 29.0, "ew_limit_ma": 3.487}, {"star": "2831490694929214464", "z": [3.9], "ew_ma": [1.03], "z_comb": 3.9, "p": 0.8653366583541147, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.59, "v": -1.2, "rv_gaia": -0.92, "ew_limit_ma": 4.849}, {"star": "2382711653818308224", "z": [4.08], "ew_ma": [1.84], "z_comb": 4.08, "p": 0.8877805486284289, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9906, "null_sd": 3.31, "v": 5.8, "rv_gaia": 6.41, "ew_limit_ma": 6.147}, {"star": "3900151160301345152", "z": [2.55], "ew_ma": [4.84], "z_comb": 2.55, "p": 0.8952618453865336, "n_lines": 1, "n_spectra": 3, "twin_r": 0.9284, "null_sd": 1.99, "v": 4.05, "rv_gaia": 4.92, "ew_limit_ma": 16.416}, {"star": "2648914040357320576", "z": [4.94], "ew_ma": [3.81], "z_comb": 4.94, "p": 0.9210526315789473, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.01, "v": -13.55, "rv_gaia": -13.41, "ew_limit_ma": 14.433}, {"star": "4381250547575102208", "z": [5.78], "ew_ma": [3.5], "z_comb": 5.78, "p": 0.9226932668329177, "n_lines": 1, "n_spectra": 1, "twin_r": 0.9907, "null_sd": 3.95, "v": 45.05, "rv_gaia": 44.84, "ew_limit_ma": 10.818}, {"star": "3812355328621651328", "z": [4.99], "ew_ma": [8.74], "z_comb": 4.99, "p": 0.9487179487179487, "n_lines": 1, "n_spectra": 4, "twin_r": 0.9868, "null_sd": 3.74, "v": 4.0, "rv_gaia": 4.18, "ew_limit_ma": 35.547}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pa_ESPRESSO.json b/papers/short_lived_elements/data/element_Pa_ESPRESSO.json new file mode 100644 index 0000000000000000000000000000000000000000..74ac4ac6bd46c83e2a25c0d69bd021f300396482 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pa_ESPRESSO.json @@ -0,0 +1 @@ +{"lines": [[4217.23, 0.9855285295751027], [4248.08, 1.0], [4176.18, 0.2918589695249923], [4291.34, 0.3081771793717691], [4601.43, 0.35432375163191754]], "stable": [true, true, true, true, true], "results": [{"star": "2343647384368388608", "z": [-4.13, -3.36, -3.51, -3.57, -0.67], "ew_ma": [-0.65, -0.31, -0.29, -0.26, -0.04], "z_comb": -6.49, "p": 0.0021498925053747312, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9989, "null_sd": 2.66, "v": 57.4, "rv_gaia": 56.73, "ew_limit_ma": 0.044, "dominant": 4217.23, "shared": 16, "width": 4.0, "vet": "absorption at 4217.23 A shared by 16 other stars"}, {"star": "3101382419728401408", "z": [-2.36, -1.89, -0.54, -5.24, -0.35], "ew_ma": [-0.33, -0.25, -0.06, -0.74, -0.03], "z_comb": -4.05, "p": 0.025848707564621768, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.34, "v": 54.45, "rv_gaia": 53.99, "ew_limit_ma": 0.277}, {"star": "3584074376569429248", "z": [-1.87, -3.55, 1.0, -0.12, 0.52], "ew_ma": [-0.53, -0.87, 0.29, -0.03, 0.1], "z_comb": -3.28, "p": 0.0263986800659967, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9964, "null_sd": 1.67, "v": 21.5, "rv_gaia": 20.73, "ew_limit_ma": 0.531}, {"star": "5452492082132835840", "z": [-5.21, -0.69, 1.14, 1.09, -0.67], "ew_ma": [-0.65, -0.1, 0.11, 0.12, -0.04], "z_comb": -3.57, "p": 0.02909854507274636, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.19, "v": 13.5, "rv_gaia": 12.83, "ew_limit_ma": 0.352}, {"star": "6180035765135232128", "z": [-6.03, -1.86, -1.27, -3.15, 1.14], "ew_ma": [-1.14, -0.33, -0.16, -0.49, 0.08], "z_comb": -5.79, "p": 0.035548222588870554, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.16, "v": 65.7, "rv_gaia": 64.94, "ew_limit_ma": 0.907}, {"star": "6501182220888038784", "z": [-4.8, -1.12, -0.41, -0.41, 0.9], "ew_ma": [-1.08, -0.26, -0.06, -0.05, 0.1], "z_comb": -3.83, "p": 0.039648017599120046, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9984, "null_sd": 2.27, "v": 23.95, "rv_gaia": 23.28, "ew_limit_ma": 0.726}, {"star": "3646061719703116032", "z": [-2.74, -2.94, -6.3, -1.47, 2.41], "ew_ma": [-0.44, -0.55, -0.62, -0.13, 0.12], "z_comb": -4.69, "p": 0.0455977201139943, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.57, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.592}, {"star": "5427207918907843072", "z": [-2.37, -4.3, 1.94, -2.23, 1.96], "ew_ma": [-0.62, -0.52, 0.24, -0.15, 0.14], "z_comb": -4.01, "p": 0.06529673516324183, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.69, "v": 65.7, "rv_gaia": 65.01, "ew_limit_ma": 0.539}, {"star": "6854626246593473792", "z": [-0.75, -4.26, -2.06, 0.69, -0.48], "ew_ma": [-0.16, -0.86, -0.34, 0.1, -0.03], "z_comb": -3.68, "p": 0.07939603019849008, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.58, "v": -41.4, "rv_gaia": -42.09, "ew_limit_ma": 1.066}, {"star": "5855730584310531200", "z": [-3.66, -2.53, -0.64, -0.67, 1.15], "ew_ma": [-0.58, -0.74, -0.13, -0.15, 0.11], "z_comb": -4.06, "p": 0.08059597020148992, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 3.73, "v": 105.3, "rv_gaia": 104.53, "ew_limit_ma": 4.655}, {"star": "5731252295913584768", "z": [-4.08, -2.81, -2.39, -0.37, 0.94], "ew_ma": [-0.99, -0.61, -0.44, -0.06, 0.08], "z_comb": -4.85, "p": 0.08374581270936453, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9968, "null_sd": 4.19, "v": 67.35, "rv_gaia": 66.88, "ew_limit_ma": 2.697}, {"star": "5951165616611763456", "z": [-2.45, -3.51, -3.6, 1.15, -0.04], "ew_ma": [-0.3, -0.45, -0.36, 0.11, -0.0], "z_comb": -4.4, "p": 0.08834558272086396, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.1, "v": 26.5, "rv_gaia": 25.96, "ew_limit_ma": 0.795}, {"star": "5493588665684618752", "z": [-2.17, -2.99, -0.7, -0.17, 0.93], "ew_ma": [-0.43, -0.42, -0.13, -0.02, 0.05], "z_comb": -3.35, "p": 0.1055447227638618, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.73, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 0.883}, {"star": "1212385193677161088", "z": [0.6, -3.76, -3.08, -0.34, 0.94], "ew_ma": [0.08, -0.59, -0.47, -0.05, 0.1], "z_comb": -2.55, "p": 0.1143442827858607, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9972, "null_sd": 2.27, "v": -38.2, "rv_gaia": -38.72, "ew_limit_ma": 0.767}, {"star": "6569895822110445440", "z": [-2.7, 0.55, -2.79, -0.21, -0.71], "ew_ma": [-0.33, 0.07, -0.36, -0.03, -0.06], "z_comb": -2.15, "p": 0.11479426028698565, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9992, "null_sd": 1.8, "v": -18.4, "rv_gaia": -19.21, "ew_limit_ma": 0.529}, {"star": "1212385193677160832", "z": [-1.82, -2.69, 1.11, 1.23, -0.1], "ew_ma": [-0.49, -0.58, 0.21, 0.19, -0.01], "z_comb": -2.53, "p": 0.15489225538723064, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.84, "v": -38.2, "rv_gaia": -38.94, "ew_limit_ma": 2.233}, {"star": "5341673851394297600", "z": [-1.6, -2.01, -3.01, -1.78, 1.16], "ew_ma": [-0.54, -0.55, -0.77, -0.28, 0.19], "z_comb": -3.05, "p": 0.15804209789510523, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 2.87, "v": 50.2, "rv_gaia": 49.52, "ew_limit_ma": 2.256}, {"star": "5596797039059063680", "z": [-1.34, -1.22, -2.81, 0.54, -0.5], "ew_ma": [-0.12, -0.14, -0.29, 0.05, -0.03], "z_comb": -2.24, "p": 0.1607419629018549, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.79, "v": -14.95, "rv_gaia": -15.71, "ew_limit_ma": 0.684}, {"star": "2391838429257482496", "z": [-2.24, -1.74, 0.15, 0.22, 1.24], "ew_ma": [-0.31, -0.26, 0.02, 0.03, 0.06], "z_comb": -2.26, "p": 0.1631418429078546, "n_lines": 5, "n_spectra": 4, "twin_r": 0.999, "null_sd": 2.38, "v": 12.85, "rv_gaia": 12.3, "ew_limit_ma": 0.777}, {"star": "3775795982881589376", "z": [-1.63, 1.91, -10.53, -2.68, -0.74], "ew_ma": [-0.28, 0.2, -2.14, -0.21, -0.08], "z_comb": -2.56, "p": 0.17464126793660317, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.93, "v": 30.5, "rv_gaia": 29.93, "ew_limit_ma": 1.274}, {"star": "6524024506237594368", "z": [0.23, -1.03, -2.0, -3.73, -4.55], "ew_ma": [0.03, -0.17, -0.22, -0.39, -0.29], "z_comb": -2.75, "p": 0.19174041297935104, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 4.34, "v": 33.15, "rv_gaia": 32.4, "ew_limit_ma": 2.238}, {"star": "6786890622306367872", "z": [0.18, -2.91, 1.12, 0.38, -0.51], "ew_ma": [0.03, -0.51, 0.22, 0.06, -0.06], "z_comb": -1.64, "p": 0.1943402829858507, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9992, "null_sd": 1.73, "v": -28.75, "rv_gaia": -29.46, "ew_limit_ma": 0.661}, {"star": "4176501313320676992", "z": [0.43, -2.76, 0.27, 2.47, -2.27], "ew_ma": [0.06, -0.36, 0.03, 0.19, -0.11], "z_comb": -1.52, "p": 0.19829008549572522, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.47, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.721}, {"star": "3948424496764080640", "z": [0.69, -2.0, -2.77, 0.82, -1.08], "ew_ma": [0.12, -0.4, -0.55, 0.12, -0.13], "z_comb": -1.49, "p": 0.2056397180140993, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.51, "v": -8.0, "rv_gaia": -8.56, "ew_limit_ma": 2.162}, {"star": "2619706544757416192", "z": [-1.65, -1.88, 0.01, 1.52, 0.57], "ew_ma": [-0.22, -0.19, 0.0, 0.17, 0.04], "z_comb": -1.88, "p": 0.22818859057047147, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.57, "v": -20.2, "rv_gaia": -20.78, "ew_limit_ma": 0.909}, {"star": "627699888238838528", "z": [-1.02, -2.07, 1.95, -0.09, 1.43], "ew_ma": [-0.23, -0.42, 0.44, -0.02, 0.18], "z_comb": -1.34, "p": 0.23883805809709516, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9985, "null_sd": 1.98, "v": 31.5, "rv_gaia": 30.81, "ew_limit_ma": 1.735}, {"star": "6489771832811810432", "z": [-2.67, -0.9, 0.72, 0.74, -0.27], "ew_ma": [-0.74, -0.21, 0.25, 0.15, -0.05], "z_comb": -2.11, "p": 0.24248787560621968, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9968, "null_sd": 4.4, "v": -30.15, "rv_gaia": -31.05, "ew_limit_ma": 4.145}, {"star": "5663558453071724288", "z": [-1.83, 0.8, -4.05, -0.7, -1.49], "ew_ma": [-0.29, 0.11, -0.54, -0.13, -0.13], "z_comb": -1.94, "p": 0.27168641567921603, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9946, "null_sd": 3.55, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 1.311}, {"star": "4367026303085396352", "z": [1.4, -1.41, -2.33, -4.45, -0.27], "ew_ma": [0.11, -0.19, -0.28, -0.3, -0.01], "z_comb": -1.44, "p": 0.27938603069846507, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9986, "null_sd": 2.6, "v": -35.2, "rv_gaia": -35.94, "ew_limit_ma": 0.694}, {"star": "3654496279558010624", "z": [-0.99, -0.49, -2.35, 0.77, -1.14], "ew_ma": [-0.14, -0.08, -0.35, 0.11, -0.09], "z_comb": -1.54, "p": 0.30818459077046145, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.36, "v": -18.55, "rv_gaia": -19.21, "ew_limit_ma": 1.795}, {"star": "5579783574073770112", "z": [-0.29, 0.41, -3.62, -3.05, -2.58], "ew_ma": [-0.08, 0.06, -0.86, -0.5, -0.32], "z_comb": -1.85, "p": 0.31248437578121097, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.23, "v": 37.45, "rv_gaia": 36.91, "ew_limit_ma": 1.901}, {"star": "2835207319109249920", "z": [1.66, -1.84, -2.07, -1.8, -0.84], "ew_ma": [0.17, -0.17, -0.25, -0.16, -0.04], "z_comb": -1.1, "p": 0.3168841557922104, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.19, "v": -32.55, "rv_gaia": -33.33, "ew_limit_ma": 0.836}, {"star": "6189254689097655552", "z": [-2.47, -0.63, -1.29, 1.58, 2.86], "ew_ma": [-0.26, -0.07, -0.14, 0.12, 0.17], "z_comb": -1.28, "p": 0.3180340982950852, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 3.57, "v": -3.2, "rv_gaia": -3.87, "ew_limit_ma": 0.857}, {"star": "3945118643256370688", "z": [0.56, -1.78, 2.21, 0.87, -1.27], "ew_ma": [0.12, -0.31, 0.4, 0.12, -0.17], "z_comb": -0.5, "p": 0.3289835508224589, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 1.66, "v": -1.2, "rv_gaia": -1.67, "ew_limit_ma": 1.052}, {"star": "3574377616021489024", "z": [-1.48, -0.2, 0.73, 0.72, 0.46], "ew_ma": [-0.25, -0.03, 0.12, 0.11, 0.05], "z_comb": -0.71, "p": 0.335883205839708, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 1.67, "v": 2.8, "rv_gaia": 1.88, "ew_limit_ma": 0.803}, {"star": "5669349344592951936", "z": [3.8, -0.9, -2.01, -3.64, -6.7], "ew_ma": [0.69, -0.16, -0.31, -0.74, -0.68], "z_comb": -0.82, "p": 0.34338283085845706, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.99, "v": 35.55, "rv_gaia": 35.32, "ew_limit_ma": 1.474}, {"star": "3584074380866605440", "z": [-0.34, -1.07, -0.59, 0.89, 1.26], "ew_ma": [-0.11, -0.32, -0.25, 0.27, 0.28], "z_comb": -0.57, "p": 0.3512324383780811, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9961, "null_sd": 2.15, "v": 20.8, "rv_gaia": 19.78, "ew_limit_ma": 2.471}, {"star": "3480332916165099904", "z": [-2.05, -0.65, 1.25, 1.5, 1.32], "ew_ma": [-0.21, -0.06, 0.11, 0.15, 0.05], "z_comb": -0.91, "p": 0.37313134343282833, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.69, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.918}, {"star": "5381537023379295232", "z": [-1.48, -1.75, 3.07, 0.97, 0.74], "ew_ma": [-0.12, -0.13, 0.13, 0.05, 0.02], "z_comb": -1.16, "p": 0.3778311084445778, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 2.76, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 0.453}, {"star": "2966316109264052096", "z": [-0.67, 0.04, -0.43, -1.47, 0.53], "ew_ma": [-0.17, 0.01, -0.14, -0.36, 0.11], "z_comb": -0.67, "p": 0.3913304334783261, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9958, "null_sd": 2.97, "v": 43.05, "rv_gaia": 42.46, "ew_limit_ma": 3.207}, {"star": "4768170579173552896", "z": [0.69, -2.09, 1.05, 1.93, -0.62], "ew_ma": [0.06, -0.17, 0.06, 0.11, -0.02], "z_comb": -0.48, "p": 0.43012849357532124, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9994, "null_sd": 2.79, "v": -4.8, "rv_gaia": -5.53, "ew_limit_ma": 0.634}, {"star": "3835743693290897152", "z": [1.38, -1.2, -2.05, 1.13, -0.92], "ew_ma": [0.12, -0.07, -0.19, 0.07, -0.04], "z_comb": -0.27, "p": 0.45532723363831806, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.33, "v": -17.1, "rv_gaia": -17.81, "ew_limit_ma": 0.384}, {"star": "3250489115709122560", "z": [0.08, 0.02, -2.53, -1.43, -2.05], "ew_ma": [0.03, 0.01, -1.19, -0.8, -0.44], "z_comb": -1.2, "p": 0.46352682365881703, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9721, "null_sd": 11.7, "v": 121.15, "rv_gaia": 120.58, "ew_limit_ma": 38.031}, {"star": "4079684229322231040", "z": [-0.84, 1.43, -3.57, -2.85, 1.63], "ew_ma": [-0.05, 0.11, -0.3, -0.17, 0.07], "z_comb": -0.49, "p": 0.47542622868856554, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.93, "v": 37.75, "rv_gaia": 37.03, "ew_limit_ma": 0.897}, {"star": "5902750168276592256", "z": [-1.52, 2.91, -1.39, -0.82, -1.6], "ew_ma": [-0.16, 0.37, -0.11, -0.12, -0.07], "z_comb": 0.13, "p": 0.49072546372681364, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 3.36, "v": -68.1, "rv_gaia": -68.78, "ew_limit_ma": 1.285}, {"star": "6141742283401003264", "z": [0.46, -0.24, 2.7, 0.95, -3.85], "ew_ma": [0.08, -0.04, 0.48, 0.16, -0.33], "z_comb": -0.05, "p": 0.5125243737813109, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.31, "v": -12.3, "rv_gaia": -13.03, "ew_limit_ma": 3.777}, {"star": "2898239468873596800", "z": [-1.63, 1.49, 1.34, -1.12, 0.13], "ew_ma": [-0.11, 0.1, 0.1, -0.06, 0.01], "z_comb": -0.02, "p": 0.5150242487875606, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.6, "v": -3.2, "rv_gaia": -3.85, "ew_limit_ma": 0.649}, {"star": "3975129194660883328", "z": [-0.07, -0.44, 2.27, -0.66, 0.29], "ew_ma": [-0.02, -0.1, 0.6, -0.14, 0.05], "z_comb": 0.03, "p": 0.5191240437978101, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 1.48, "v": 6.75, "rv_gaia": 5.97, "ew_limit_ma": 1.1}, {"star": "2376087581593256448", "z": [-0.6, 0.33, 1.85, 2.26, -2.0], "ew_ma": [-0.1, 0.05, 0.26, 0.37, -0.13], "z_comb": 0.18, "p": 0.5212239388030598, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.38, "v": -9.55, "rv_gaia": -10.26, "ew_limit_ma": 1.507}, {"star": "6166183842771027328", "z": [-3.07, 2.44, -1.79, 3.74, 0.02], "ew_ma": [-0.2, 0.18, -0.1, 0.28, 0.0], "z_comb": 0.03, "p": 0.5374731263436828, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 3.33, "v": -16.75, "rv_gaia": -17.46, "ew_limit_ma": 0.695}, {"star": "3812355328621651328", "z": [0.63, 0.3, -1.12, 0.66, -1.47], "ew_ma": [0.15, 0.04, -0.14, 0.08, -0.09], "z_comb": 0.18, "p": 0.5380230988450577, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 2.49, "v": 4.75, "rv_gaia": 4.18, "ew_limit_ma": 1.096}, {"star": "5266348577487273344", "z": [3.16, -0.58, 0.38, -1.58, -4.73], "ew_ma": [0.23, -0.07, 0.04, -0.14, -0.2], "z_comb": 0.32, "p": 0.5396230188490575, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.68, "v": 14.3, "rv_gaia": 13.6, "ew_limit_ma": 1.739}, {"star": "5726982995343100928", "z": [2.56, 0.78, -5.82, -1.7, -1.88], "ew_ma": [0.2, 0.05, -0.51, -0.08, -0.12], "z_comb": 0.28, "p": 0.5561221938903055, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.66, "v": 30.7, "rv_gaia": 30.09, "ew_limit_ma": 0.718}, {"star": "6369544118965772416", "z": [0.59, -1.14, 4.28, 2.54, -2.45], "ew_ma": [0.11, -0.17, 0.75, 0.33, -0.28], "z_comb": 0.4, "p": 0.5613219339033049, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 3.35, "v": -10.25, "rv_gaia": -11.0, "ew_limit_ma": 2.073}, {"star": "2554032474712538880", "z": [-0.36, -0.44, 0.31, 1.6, 1.9], "ew_ma": [-0.06, -0.06, 0.05, 0.19, 0.18], "z_comb": 0.31, "p": 0.5662216889155542, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.26, "v": 19.95, "rv_gaia": 19.4, "ew_limit_ma": 1.515}, {"star": "3975223065466473216", "z": [-0.79, 0.79, 1.07, 1.2, -1.62], "ew_ma": [-0.2, 0.2, 0.3, 0.27, -0.31], "z_comb": 0.07, "p": 0.5786710664466777, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9969, "null_sd": 1.49, "v": 6.45, "rv_gaia": 5.8, "ew_limit_ma": 1.405}, {"star": "6128366415218881536", "z": [0.31, 0.11, 0.11, 0.88, 0.14], "ew_ma": [0.03, 0.01, 0.01, 0.05, 0.01], "z_comb": 0.51, "p": 0.6251687415629219, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 2.97, "v": 31.3, "rv_gaia": 30.47, "ew_limit_ma": 0.964}, {"star": "5266722205277801984", "z": [-0.18, 1.32, 0.48, -1.12, 1.51], "ew_ma": [-0.02, 0.12, 0.06, -0.09, 0.08], "z_comb": 0.98, "p": 0.6488675566221689, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.23, "v": 18.25, "rv_gaia": 17.57, "ew_limit_ma": 0.941}, {"star": "648998734141447296", "z": [0.23, 0.61, 2.01, 0.23, -0.35], "ew_ma": [0.06, 0.15, 0.43, 0.03, -0.04], "z_comb": 0.91, "p": 0.6665666716664167, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.21, "v": 21.15, "rv_gaia": 20.52, "ew_limit_ma": 2.213}, {"star": "5640565607657897728", "z": [-0.25, 1.71, 2.86, -0.62, -0.0], "ew_ma": [-0.04, 0.24, 0.44, -0.07, -0.0], "z_comb": 1.4, "p": 0.6685665716714164, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.89, "v": 15.2, "rv_gaia": 14.67, "ew_limit_ma": 4.061}, {"star": "6692069568458919040", "z": [-1.66, 2.63, 1.5, 2.53, -1.58], "ew_ma": [-0.09, 0.12, 0.09, 0.16, -0.06], "z_comb": 1.09, "p": 0.6808659567021649, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9974, "null_sd": 2.56, "v": 15.8, "rv_gaia": 15.36, "ew_limit_ma": 0.483}, {"star": "5287961677550103424", "z": [3.36, -1.12, -1.61, -1.14, 0.36], "ew_ma": [0.59, -0.13, -0.21, -0.11, 0.03], "z_comb": 0.99, "p": 0.6850157492125394, "n_lines": 5, "n_spectra": 4, "twin_r": 0.999, "null_sd": 3.08, "v": 43.15, "rv_gaia": 42.58, "ew_limit_ma": 1.607}, {"star": "5760701787150565888", "z": [2.89, 1.39, -4.99, -3.74, -0.39], "ew_ma": [0.63, 0.21, -0.84, -0.36, -0.03], "z_comb": 0.99, "p": 0.6907154642267886, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.25, "v": 32.65, "rv_gaia": 31.99, "ew_limit_ma": 1.767}, {"star": "3538141457982396928", "z": [-0.83, 2.41, 0.41, 2.64, 0.17], "ew_ma": [-0.08, 0.18, 0.03, 0.18, 0.01], "z_comb": 1.72, "p": 0.727613619319034, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.64, "v": 4.8, "rv_gaia": 4.25, "ew_limit_ma": 0.744}, {"star": "4341501106288171008", "z": [1.65, 0.96, 1.29, 1.08, -1.61], "ew_ma": [0.4, 0.25, 0.32, 0.23, -0.18], "z_comb": 1.81, "p": 0.7421628918554072, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9976, "null_sd": 3.18, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 3.209}, {"star": "5064574724769475968", "z": [0.27, 0.06, -0.96, 1.06, 3.17], "ew_ma": [0.05, 0.01, -0.22, 0.22, 0.37], "z_comb": 0.99, "p": 0.7444127793610319, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.82, "v": 9.9, "rv_gaia": 9.77, "ew_limit_ma": 2.973}, {"star": "3507879565090229888", "z": [-2.42, 3.2, 4.96, 2.27, 0.08], "ew_ma": [-0.34, 0.37, 0.45, 0.19, 0.0], "z_comb": 1.98, "p": 0.7614119294035299, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 3.1, "v": -7.2, "rv_gaia": -7.86, "ew_limit_ma": 1.918}, {"star": "627699888238838272", "z": [0.6, 2.48, -0.59, -3.46, 2.55], "ew_ma": [0.08, 0.32, -0.08, -0.36, 0.24], "z_comb": 1.81, "p": 0.8100094995250238, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 1.99, "v": 31.15, "rv_gaia": 30.59, "ew_limit_ma": 0.847}, {"star": "6226694571859532800", "z": [2.88, 1.12, 2.0, -0.4, -0.89], "ew_ma": [0.53, 0.11, 0.36, -0.04, -0.09], "z_comb": 2.72, "p": 0.824408779561022, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 2.98, "v": 5.8, "rv_gaia": 5.14, "ew_limit_ma": 1.78}, {"star": "4048636941542753152", "z": [2.35, 3.6, -2.57, -0.37, -2.39], "ew_ma": [0.51, 0.59, -0.53, -0.06, -0.25], "z_comb": 2.79, "p": 0.8488075596220189, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9978, "null_sd": 3.0, "v": 22.15, "rv_gaia": 21.37, "ew_limit_ma": 2.04}, {"star": "4343064577465522816", "z": [4.24, 0.55, 0.87, 0.12, -0.76], "ew_ma": [1.22, 0.19, 0.23, 0.03, -0.1], "z_comb": 3.15, "p": 0.8589070546472677, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.48, "v": -31.3, "rv_gaia": -31.96, "ew_limit_ma": 3.135}, {"star": "6321929733564266752", "z": [2.13, 2.02, 1.76, -1.45, 0.39], "ew_ma": [1.71, 1.73, 1.53, -1.17, 0.12], "z_comb": 2.86, "p": 0.8841057947102645, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9862, "null_sd": 2.62, "v": -31.55, "rv_gaia": -32.32, "ew_limit_ma": 10.44}, {"star": "4722111590409480064", "z": [6.34, -0.11, 2.8, -0.79, -0.78], "ew_ma": [0.54, -0.01, 0.35, -0.07, -0.04], "z_comb": 4.26, "p": 0.8921553922303885, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9977, "null_sd": 4.37, "v": 13.0, "rv_gaia": 12.44, "ew_limit_ma": 2.317}, {"star": "2964794041574370560", "z": [2.18, 3.98, -5.04, -1.14, -1.0], "ew_ma": [0.19, 0.2, -0.33, -0.03, -0.04], "z_comb": 2.62, "p": 0.8969551522423879, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.46, "v": 29.7, "rv_gaia": 29.0, "ew_limit_ma": 0.561}, {"star": "4623036865373793408", "z": [3.0, 2.8, -0.92, -2.24, 0.1], "ew_ma": [0.35, 0.28, -0.06, -0.14, 0.0], "z_comb": 3.2, "p": 0.8983050847457628, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9994, "null_sd": 2.73, "v": 11.55, "rv_gaia": 10.71, "ew_limit_ma": 0.962}, {"star": "5691782130578684544", "z": [4.78, 2.52, 0.02, -1.52, -1.24], "ew_ma": [0.51, 0.29, 0.0, -0.13, -0.08], "z_comb": 4.2, "p": 0.8988550572471377, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.43, "v": 8.9, "rv_gaia": 8.18, "ew_limit_ma": 1.702}, {"star": "2533723670313663872", "z": [1.42, 3.01, 4.07, -2.98, 0.58], "ew_ma": [0.3, 0.6, 0.68, -0.45, 0.07], "z_comb": 3.23, "p": 0.9496025198740063, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.58, "v": 17.7, "rv_gaia": 16.81, "ew_limit_ma": 5.328}, {"star": "3550081879381593728", "z": [3.0, 2.33, -0.81, -4.44, 1.48], "ew_ma": [1.36, 0.99, -0.33, -1.8, 0.44], "z_comb": 2.79, "p": 0.952152392380381, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9786, "null_sd": 1.94, "v": 24.05, "rv_gaia": 23.76, "ew_limit_ma": 4.611}, {"star": "6564091190988411520", "z": [5.16, 2.3, 1.09, 0.99, 0.57], "ew_ma": [0.48, 0.26, 0.1, 0.09, 0.02], "z_comb": 5.45, "p": 0.9586520673966301, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.88, "v": -6.85, "rv_gaia": -7.55, "ew_limit_ma": 1.144}, {"star": "3945118265299248128", "z": [1.33, 2.64, 2.77, 1.26, 0.15], "ew_ma": [0.24, 0.42, 0.45, 0.17, 0.02], "z_comb": 3.45, "p": 0.9696515174241288, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9986, "null_sd": 1.88, "v": -0.85, "rv_gaia": -1.56, "ew_limit_ma": 1.588}, {"star": "6029992663310612096", "z": [2.9, 2.56, 7.82, -0.07, 2.59], "ew_ma": [0.85, 0.44, 2.04, -0.01, 0.33], "z_comb": 5.7, "p": 0.9718014099295035, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.67, "v": 14.8, "rv_gaia": 14.08, "ew_limit_ma": 3.11}, {"star": "4733035238430992768", "z": [5.38, 1.76, 3.01, -0.66, -0.06], "ew_ma": [0.55, 0.16, 0.25, -0.07, -0.0], "z_comb": 5.12, "p": 0.9721513924303785, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.13, "v": 1.35, "rv_gaia": 0.66, "ew_limit_ma": 1.679}, {"star": "6832155218215202944", "z": [3.88, 4.99, 2.99, 0.54, 0.37], "ew_ma": [0.91, 1.73, 0.63, 0.12, 0.05], "z_comb": 6.62, "p": 0.9788510574471276, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9958, "null_sd": 3.12, "v": 15.25, "rv_gaia": 14.63, "ew_limit_ma": 4.398}, {"star": "5461620846141553024", "z": [3.38, 4.89, 0.45, 1.75, -2.13], "ew_ma": [0.31, 0.47, 0.04, 0.15, -0.1], "z_comb": 5.39, "p": 0.9811009449527524, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.78, "v": 27.6, "rv_gaia": 26.94, "ew_limit_ma": 1.343}, {"star": "5524982093479504384", "z": [7.67, 2.82, 1.52, 3.99, 0.31], "ew_ma": [1.61, 0.8, 0.27, 0.97, 0.02], "z_comb": 8.06, "p": 0.9897005149742513, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.01, "v": 10.05, "rv_gaia": 9.31, "ew_limit_ma": 3.327}, {"star": "2494066897240089984", "z": [2.99, 3.66, 6.41, 4.43, 0.62], "ew_ma": [0.54, 0.33, 0.83, 0.38, 0.05], "z_comb": 6.67, "p": 0.9916004199790011, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9987, "null_sd": 2.78, "v": -4.6, "rv_gaia": -5.33, "ew_limit_ma": 1.989}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pa_FEROS.json b/papers/short_lived_elements/data/element_Pa_FEROS.json new file mode 100644 index 0000000000000000000000000000000000000000..02a01e53afc94217ae6d80e91225c5f728462154 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pa_FEROS.json @@ -0,0 +1 @@ +{"lines": [[4217.23, 0.9855285295751027], [4248.08, 1.0], [4176.18, 0.2918589695249923], [4291.34, 0.3081771793717691], [4601.43, 0.35432375163191754]], "stable": [true, true, true, true, true], "results": [{"star": "6153706477443518976", "z": [-4.06, -4.23, -4.72, 0.22, -2.91], "ew_ma": [-1.16, -1.51, -1.49, 0.07, -0.53], "z_comb": -7.0, "p": 0.017299135043247836, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9911, "null_sd": 4.74, "v": -25.8, "rv_gaia": -26.31, "ew_limit_ma": 0.775}, {"star": "3835867938104798848", "z": [-7.67, -5.81, -0.11, 1.73, 4.09], "ew_ma": [-1.99, -1.75, -0.03, 0.53, 0.59], "z_comb": -7.57, "p": 0.03619819009049548, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9926, "null_sd": 4.71, "v": -21.45, "rv_gaia": -21.84, "ew_limit_ma": 5.559}, {"star": "5459060117921483008", "z": [0.3, -5.03, -8.99, -3.48, -1.5], "ew_ma": [0.09, -1.43, -2.61, -1.27, -0.29], "z_comb": -5.94, "p": 0.05984700764961752, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 4.31, "v": 44.65, "rv_gaia": 43.93, "ew_limit_ma": 2.075}, {"star": "5902750168276592256", "z": [-7.06, 0.05, -3.44, -3.2, -3.93], "ew_ma": [-1.82, 0.02, -0.73, -1.25, -0.49], "z_comb": -6.82, "p": 0.06804659767011649, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.29, "v": -68.35, "rv_gaia": -68.78, "ew_limit_ma": 2.852}, {"star": "5357075947709011456", "z": [-6.19, -1.45, -2.89, -2.66, -1.37], "ew_ma": [-1.86, -0.58, -0.82, -1.09, -0.21], "z_comb": -6.43, "p": 0.0696465176741163, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9949, "null_sd": 7.36, "v": 21.6, "rv_gaia": 21.19, "ew_limit_ma": 6.306}, {"star": "6141742283401003264", "z": [-2.98, -5.6, -2.41, 0.14, -3.37], "ew_ma": [-1.21, -2.24, -0.87, 0.05, -0.61], "z_comb": -6.89, "p": 0.08004599770011499, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 4.63, "v": -12.35, "rv_gaia": -13.03, "ew_limit_ma": 3.526}, {"star": "4367026303085396352", "z": [-1.84, -3.58, -7.9, -1.55, 1.21], "ew_ma": [-0.31, -1.11, -1.81, -0.32, 0.21], "z_comb": -5.14, "p": 0.08009599520024, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.11, "v": -35.5, "rv_gaia": -35.94, "ew_limit_ma": 2.292}, {"star": "3330062833797919744", "z": [-3.44, -5.93, 1.4, 1.92, 2.19], "ew_ma": [-0.82, -1.39, 0.29, 0.47, 0.3], "z_comb": -5.0, "p": 0.11179441027948603, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 6.7, "v": 6.35, "rv_gaia": 5.83, "ew_limit_ma": 11.14}, {"star": "1237090738916392704", "z": [-5.44, -2.15, -2.07, -2.64, 5.33], "ew_ma": [-2.09, -0.91, -0.8, -0.84, 1.38], "z_comb": -4.67, "p": 0.1717914104294785, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.43, "v": 2.2, "rv_gaia": 1.59, "ew_limit_ma": 8.946}, {"star": "4038724053986441856", "z": [-4.72, -0.65, 2.03, -0.54, -2.17], "ew_ma": [-1.28, -0.16, 0.47, -0.13, -0.31], "z_comb": -3.74, "p": 0.176091195440228, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9943, "null_sd": 3.97, "v": 15.6, "rv_gaia": 14.99, "ew_limit_ma": 1.545}, {"star": "3113909602378333056", "z": [-5.81, 0.13, 3.09, 4.61, -2.33], "ew_ma": [-1.68, 0.03, 0.7, 1.13, -0.38], "z_comb": -2.72, "p": 0.19724013799310033, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9945, "null_sd": 4.68, "v": -7.65, "rv_gaia": -8.02, "ew_limit_ma": 1.82}, {"star": "6802426038708609536", "z": [-4.67, -0.13, -2.41, 4.2, -2.44], "ew_ma": [-0.81, -0.02, -0.43, 0.84, -0.2], "z_comb": -3.32, "p": 0.20898955052247387, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.62, "v": -15.95, "rv_gaia": -16.09, "ew_limit_ma": 1.302}, {"star": "5663558453071724288", "z": [4.82, -3.76, -8.13, -6.77, -5.18], "ew_ma": [1.27, -0.84, -1.97, -2.44, -0.83], "z_comb": -3.52, "p": 0.21173941302934854, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9916, "null_sd": 6.16, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 8.505}, {"star": "3532823773073745536", "z": [-1.68, -2.33, -4.55, -1.68, 3.36], "ew_ma": [-1.27, -1.32, -2.75, -0.93, 0.95], "z_comb": -3.08, "p": 0.2449377531123444, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9932, "null_sd": 6.04, "v": 40.5, "rv_gaia": 39.76, "ew_limit_ma": 14.26}, {"star": "6096524382383054720", "z": [-0.7, 0.08, -1.64, -0.34, -7.11], "ew_ma": [-0.16, 0.02, -0.4, -0.08, -1.05], "z_comb": -2.46, "p": 0.2622368881555922, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9956, "null_sd": 4.52, "v": 5.1, "rv_gaia": 4.39, "ew_limit_ma": 2.971}, {"star": "6612242034982766848", "z": [3.64, -4.41, 2.78, -4.24, -3.62], "ew_ma": [0.83, -1.04, 0.72, -1.1, -0.67], "z_comb": -1.72, "p": 0.2840357982100895, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 5.12, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 2.138}, {"star": "2790914111658905216", "z": [2.13, -4.22, -0.25, 0.44, -0.76], "ew_ma": [0.48, -1.09, -0.07, 0.1, -0.14], "z_comb": -1.54, "p": 0.2875356232188391, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9879, "null_sd": 5.56, "v": -23.0, "rv_gaia": -23.67, "ew_limit_ma": 2.1}, {"star": "2913411183149615744", "z": [-3.04, -0.15, 2.83, -0.55, 0.45], "ew_ma": [-0.61, -0.03, 0.61, -0.12, 0.07], "z_comb": -1.54, "p": 0.2940352982350882, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.36, "v": 22.4, "rv_gaia": 21.69, "ew_limit_ma": 1.626}, {"star": "5559265690666327168", "z": [0.07, -1.5, -3.38, -3.16, 3.6], "ew_ma": [0.02, -0.61, -1.2, -1.05, 0.67], "z_comb": -1.4, "p": 0.30808459577021147, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9948, "null_sd": 4.65, "v": 89.1, "rv_gaia": 88.55, "ew_limit_ma": 5.867}, {"star": "5765846127180770432", "z": [-3.64, -0.86, 0.13, 3.65, 3.16], "ew_ma": [-0.95, -0.21, 0.02, 0.82, 0.4], "z_comb": -1.44, "p": 0.34738263086845655, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 3.75, "v": -4.15, "rv_gaia": -4.87, "ew_limit_ma": 2.692}, {"star": "6718894388002453120", "z": [-2.42, -3.24, 6.86, -1.97, 1.47], "ew_ma": [-1.18, -1.02, 1.7, -0.57, 0.35], "z_comb": -2.46, "p": 0.3622818859057047, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.76, "v": 60.5, "rv_gaia": 60.01, "ew_limit_ma": 5.973}, {"star": "5951165616611763456", "z": [-2.17, 0.44, -4.12, 2.88, -1.6], "ew_ma": [-0.65, 0.13, -0.97, 0.81, -0.28], "z_comb": -1.71, "p": 0.3633318334083296, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9894, "null_sd": 4.47, "v": 26.4, "rv_gaia": 25.96, "ew_limit_ma": 3.71}, {"star": "2382711653818308224", "z": [-1.29, -1.38, 2.97, -6.48, 6.39], "ew_ma": [-0.63, -0.83, 1.71, -4.15, 2.04], "z_comb": -1.01, "p": 0.3851307434628269, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9787, "null_sd": 3.98, "v": 7.3, "rv_gaia": 6.41, "ew_limit_ma": 6.987}, {"star": "1772187382746856320", "z": [-2.53, 2.22, -2.28, 1.47, -3.8], "ew_ma": [-1.05, 0.73, -0.72, 0.55, -0.69], "z_comb": -1.21, "p": 0.3862806859657017, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9903, "null_sd": 5.72, "v": -16.75, "rv_gaia": -16.94, "ew_limit_ma": 2.674}, {"star": "3650718804281798912", "z": [-2.45, -2.06, 2.05, 3.86, 3.37], "ew_ma": [-1.69, -1.12, 1.39, 2.43, 1.28], "z_comb": -0.99, "p": 0.39873006349682516, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9864, "null_sd": 5.31, "v": -12.2, "rv_gaia": -12.52, "ew_limit_ma": 8.258}, {"star": "5553647083168192512", "z": [0.59, -2.17, -3.68, -3.93, 3.4], "ew_ma": [0.21, -0.61, -1.12, -1.34, 3.49], "z_comb": -1.77, "p": 0.40682965851707414, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9796, "null_sd": 4.0, "v": 60.7, "rv_gaia": 59.67, "ew_limit_ma": 3.574}, {"star": "5381537023379295232", "z": [-2.11, -1.26, 2.77, 4.11, -0.96], "ew_ma": [-0.5, -0.27, 0.48, 0.76, -0.11], "z_comb": -1.06, "p": 0.41142942852857356, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 3.5, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 1.905}, {"star": "3551002857809958400", "z": [3.12, -1.57, 3.3, -1.51, -9.92], "ew_ma": [0.86, -0.67, 1.2, -0.55, -1.66], "z_comb": -1.0, "p": 0.4126793660316984, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 6.6, "v": -3.55, "rv_gaia": -4.08, "ew_limit_ma": 6.475}, {"star": "3407611182744289152", "z": [-0.72, -0.2, 3.98, -1.86, -2.19], "ew_ma": [-0.34, -0.14, 2.4, -0.88, -0.69], "z_comb": -0.72, "p": 0.4372781360931953, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 4.73, "v": 21.1, "rv_gaia": 20.6, "ew_limit_ma": 8.295}, {"star": "3101382419728401408", "z": [4.18, -1.06, -5.04, -3.47, -1.78], "ew_ma": [2.54, -0.46, -2.02, -2.71, -0.89], "z_comb": -0.08, "p": 0.44512774361281937, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 4.78, "v": 54.05, "rv_gaia": 53.99, "ew_limit_ma": 5.628}, {"star": "3946438125929224320", "z": [2.09, -2.89, -2.96, -1.01, 5.07], "ew_ma": [0.41, -0.52, -0.48, -0.19, 0.48], "z_comb": -0.14, "p": 0.448227588620569, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.32, "v": 2.25, "rv_gaia": 1.76, "ew_limit_ma": 1.546}, {"star": "4763906879239461632", "z": [1.21, -3.08, -0.35, -4.32, 9.62], "ew_ma": [0.21, -0.64, -0.08, -0.87, 1.66], "z_comb": 0.06, "p": 0.4568271586420679, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9966, "null_sd": 4.45, "v": -1.05, "rv_gaia": -1.45, "ew_limit_ma": 2.716}, {"star": "5567900121118276736", "z": [-1.09, 3.78, -2.64, -0.56, -8.18], "ew_ma": [-0.2, 0.72, -0.54, -0.12, -1.34], "z_comb": -0.75, "p": 0.46957652117394133, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9948, "null_sd": 3.86, "v": 28.4, "rv_gaia": 27.55, "ew_limit_ma": 1.849}, {"star": "6062166950467100032", "z": [3.98, -1.54, -1.25, -6.98, 1.23], "ew_ma": [1.0, -0.45, -0.46, -4.06, 0.14], "z_comb": 0.2, "p": 0.4904754762261887, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 4.32, "v": -63.55, "rv_gaia": -63.57, "ew_limit_ma": 2.568}, {"star": "5586381090520538880", "z": [-2.03, 3.94, -6.12, -0.8, -0.57], "ew_ma": [-0.46, 0.81, -1.23, -0.15, -0.09], "z_comb": -0.2, "p": 0.4941252937353132, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.96, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 1.971}, {"star": "5291028181119851776", "z": [0.39, -1.92, -0.76, 2.98, 2.25], "ew_ma": [0.08, -0.3, -0.13, 0.56, 0.25], "z_comb": -0.03, "p": 0.4943252837358132, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.68, "v": 15.6, "rv_gaia": 15.01, "ew_limit_ma": 2.532}, {"star": "6698960688866464768", "z": [4.35, -3.6, 2.27, -0.95, -3.45], "ew_ma": [2.95, -3.15, 2.85, -0.86, -1.46], "z_comb": -0.11, "p": 0.5013249337533123, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9144, "null_sd": 5.41, "v": -3.5, "rv_gaia": -7.85, "ew_limit_ma": 11.189}, {"star": "4634528720388462592", "z": [0.69, -2.76, 2.53, 4.16, 4.75], "ew_ma": [0.41, -1.14, 1.31, 1.48, 1.22], "z_comb": 1.07, "p": 0.5129743512824358, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9926, "null_sd": 4.25, "v": -5.55, "rv_gaia": -6.07, "ew_limit_ma": 5.531}, {"star": "4934923028038871296", "z": [2.51, 0.41, 2.73, 1.01, -9.84], "ew_ma": [0.59, 0.13, 0.7, 0.28, -1.64], "z_comb": 0.33, "p": 0.5401229938503075, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.66, "v": 12.25, "rv_gaia": 11.9, "ew_limit_ma": 4.996}, {"star": "3009908378049913216", "z": [-3.19, 4.56, -2.12, 0.85, -1.52], "ew_ma": [-2.8, 4.56, -3.12, 1.07, -0.67], "z_comb": 0.34, "p": 0.5568221588920554, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9144, "null_sd": 4.44, "v": 27.0, "rv_gaia": 21.1, "ew_limit_ma": 8.672}, {"star": "6484716209628726912", "z": [-0.49, 3.46, -4.17, -1.02, -4.01], "ew_ma": [-0.14, 0.98, -1.15, -0.35, -0.58], "z_comb": 0.02, "p": 0.5586220688965552, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9926, "null_sd": 3.82, "v": -7.55, "rv_gaia": -7.8, "ew_limit_ma": 2.946}, {"star": "5760701787150565888", "z": [0.9, 3.88, -12.94, -0.22, -1.35], "ew_ma": [0.24, 0.83, -2.99, -0.04, -0.21], "z_comb": 0.3, "p": 0.5592220388980551, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.18, "v": 32.5, "rv_gaia": 31.99, "ew_limit_ma": 2.601}, {"star": "3639760521643499776", "z": [0.03, -1.86, 5.61, 4.38, -0.46], "ew_ma": [0.01, -0.44, 1.47, 1.19, -0.1], "z_comb": 0.66, "p": 0.5780710964451777, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 4.03, "v": -11.95, "rv_gaia": -12.39, "ew_limit_ma": 3.335}, {"star": "5640565607657897728", "z": [-0.12, 0.61, 4.08, -0.8, 1.16], "ew_ma": [-0.04, 0.22, 1.22, -0.26, 0.25], "z_comb": 1.23, "p": 0.6286685665716714, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9894, "null_sd": 4.98, "v": 15.15, "rv_gaia": 14.67, "ew_limit_ma": 12.306}, {"star": "5452492082132835840", "z": [-1.45, 3.48, 4.06, 1.17, -4.07], "ew_ma": [-0.56, 1.22, 1.56, 0.43, -1.16], "z_comb": 1.43, "p": 0.6328683565821709, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9939, "null_sd": 3.02, "v": 13.4, "rv_gaia": 12.83, "ew_limit_ma": 4.007}, {"star": "6427244702486210816", "z": [2.05, -2.0, -0.82, 1.9, 3.89], "ew_ma": [0.59, -0.58, -0.18, 0.37, 0.59], "z_comb": 1.16, "p": 0.6408679566021699, "n_lines": 5, "n_spectra": 2, "twin_r": 0.994, "null_sd": 3.69, "v": -10.1, "rv_gaia": -10.76, "ew_limit_ma": 3.613}, {"star": "3269362645115584640", "z": [1.78, 2.05, 1.41, -0.8, -3.8], "ew_ma": [0.37, 0.37, 0.3, -0.14, -0.55], "z_comb": 1.73, "p": 0.6568671566421679, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 3.58, "v": 19.45, "rv_gaia": 18.73, "ew_limit_ma": 2.385}, {"star": "2980492387558410112", "z": [2.77, 0.36, 2.38, 1.41, -4.97], "ew_ma": [0.51, 0.06, 0.36, 0.28, -0.7], "z_comb": 1.63, "p": 0.6622668866556672, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.51, "v": 22.35, "rv_gaia": 21.6, "ew_limit_ma": 1.72}, {"star": "5945941905576552064", "z": [0.13, 1.47, -0.8, 5.57, -0.77], "ew_ma": [0.03, 0.23, -0.2, 0.96, -0.11], "z_comb": 1.86, "p": 0.6659667016649168, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 8.49, "v": -8.75, "rv_gaia": -9.54, "ew_limit_ma": 2.747}, {"star": "6357835694518769408", "z": [-1.75, 1.43, -0.34, 1.68, 4.18], "ew_ma": [-0.51, 0.39, -0.1, 0.41, 0.84], "z_comb": 1.06, "p": 0.6670166491675417, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 3.56, "v": 14.8, "rv_gaia": 14.4, "ew_limit_ma": 3.479}, {"star": "5888394257280681856", "z": [2.87, 2.22, 1.39, -5.18, 0.49], "ew_ma": [5.73, 3.34, 2.35, -5.91, 0.49], "z_comb": 2.67, "p": 0.6735163241837908, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9791, "null_sd": 6.01, "v": -8.6, "rv_gaia": -8.77, "ew_limit_ma": 40.581}, {"star": "6796392812250051712", "z": [-1.27, -0.41, 5.65, 2.69, 4.26], "ew_ma": [-0.72, -0.14, 2.77, 0.88, 0.75], "z_comb": 1.54, "p": 0.6856157192140393, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9934, "null_sd": 33.83, "v": 0.15, "rv_gaia": -0.34, "ew_limit_ma": 6.284}, {"star": "2423493369021649920", "z": [1.59, 3.43, 1.0, -0.45, -4.49], "ew_ma": [0.5, 1.14, 0.33, -0.14, -0.99], "z_comb": 2.36, "p": 0.6934153292335383, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9933, "null_sd": 3.88, "v": -1.95, "rv_gaia": -2.55, "ew_limit_ma": 4.315}, {"star": "5528591961953902720", "z": [-1.64, 0.5, 6.93, 3.66, 1.78], "ew_ma": [-0.4, 0.15, 1.94, 1.0, 0.31], "z_comb": 1.77, "p": 0.7129143542822859, "n_lines": 5, "n_spectra": 4, "twin_r": 0.994, "null_sd": 4.89, "v": -1.35, "rv_gaia": -1.8, "ew_limit_ma": 10.282}, {"star": "4906784051581971200", "z": [3.57, 2.03, -1.05, 0.7, -6.77], "ew_ma": [1.18, 0.56, -0.35, 0.21, -0.97], "z_comb": 2.03, "p": 0.7170641467926604, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9957, "null_sd": 6.16, "v": 3.45, "rv_gaia": 2.92, "ew_limit_ma": 4.596}, {"star": "4708607629114652032", "z": [3.43, -0.78, -3.34, -1.41, 3.9], "ew_ma": [0.73, -0.22, -1.05, -0.56, 0.56], "z_comb": 1.71, "p": 0.7189640517974101, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.73, "v": 95.75, "rv_gaia": 95.23, "ew_limit_ma": 3.246}, {"star": "5062172841616745856", "z": [-1.68, 5.51, 4.17, -2.04, -6.42], "ew_ma": [-0.5, 1.45, 1.38, -0.57, -1.27], "z_comb": 1.44, "p": 0.7239138043097845, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.74, "v": 11.8, "rv_gaia": 11.16, "ew_limit_ma": 4.401}, {"star": "5793182631952977920", "z": [2.87, -2.7, 1.74, 4.77, 1.68], "ew_ma": [1.05, -0.58, 0.44, 0.96, 0.29], "z_comb": 1.79, "p": 0.7254137293135343, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9938, "null_sd": 4.2, "v": -2.65, "rv_gaia": -3.17, "ew_limit_ma": 4.292}, {"star": "3256786534197166208", "z": [7.39, -4.5, 4.13, -1.81, 1.01], "ew_ma": [1.72, -0.8, 0.77, -0.43, 0.21], "z_comb": 2.51, "p": 0.7489625518724063, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9948, "null_sd": 3.72, "v": 18.1, "rv_gaia": 17.62, "ew_limit_ma": 1.986}, {"star": "3250489115709122560", "z": [5.19, 0.44, -3.77, -3.11, 1.08], "ew_ma": [2.43, 0.28, -2.29, -2.3, 0.72], "z_comb": 2.56, "p": 0.7493125343732814, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9765, "null_sd": 6.59, "v": 121.05, "rv_gaia": 120.58, "ew_limit_ma": 21.77}, {"star": "4867596937475715968", "z": [2.5, 0.96, 4.32, 4.15, -3.88], "ew_ma": [1.83, 0.47, 3.53, 2.24, -3.23], "z_comb": 3.04, "p": 0.751862406879656, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9757, "null_sd": 3.96, "v": -9.15, "rv_gaia": -9.94, "ew_limit_ma": 9.372}, {"star": "3480332916165099904", "z": [-0.17, 1.96, 3.79, 4.21, -0.02], "ew_ma": [-0.05, 0.57, 0.98, 1.42, -0.0], "z_comb": 2.78, "p": 0.7551622418879056, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9973, "null_sd": 4.36, "v": 14.45, "rv_gaia": 14.0, "ew_limit_ma": 4.856}, {"star": "5927236979422123264", "z": [2.8, 0.73, -1.27, 1.74, 1.59], "ew_ma": [1.05, 0.43, -0.44, 0.75, 0.26], "z_comb": 2.8, "p": 0.7671116444177791, "n_lines": 5, "n_spectra": 3, "twin_r": 0.991, "null_sd": 5.38, "v": -8.4, "rv_gaia": -9.12, "ew_limit_ma": 11.805}, {"star": "4315804351350378496", "z": [2.37, 1.84, 1.17, -6.08, 4.55], "ew_ma": [1.97, 1.57, 1.48, -5.25, 2.81], "z_comb": 2.82, "p": 0.7727613619319034, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9924, "null_sd": 4.26, "v": -100.05, "rv_gaia": -100.33, "ew_limit_ma": 15.96}, {"star": "3732539683617410816", "z": [3.4, -2.96, 7.08, 3.26, -0.77], "ew_ma": [1.14, -0.91, 2.29, 1.32, -0.21], "z_comb": 2.12, "p": 0.7746112694365281, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9902, "null_sd": 3.9, "v": -26.95, "rv_gaia": -27.25, "ew_limit_ma": 4.041}, {"star": "5056511692465250304", "z": [1.7, 2.4, -0.6, 4.61, -2.8], "ew_ma": [0.54, 0.66, -0.16, 1.29, -2.34], "z_comb": 2.87, "p": 0.8059097045147743, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9771, "null_sd": 4.05, "v": 18.3, "rv_gaia": 17.69, "ew_limit_ma": 7.751}, {"star": "4423865487962417024", "z": [-3.07, 4.23, 2.12, 3.88, 4.79], "ew_ma": [-0.84, 1.38, 0.55, 0.97, 0.69], "z_comb": 3.12, "p": 0.8122093895305235, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.25, "v": 19.55, "rv_gaia": 18.95, "ew_limit_ma": 4.765}, {"star": "5129338021224785408", "z": [-0.06, 2.41, 1.67, 0.31, 4.44], "ew_ma": [-0.04, 1.6, 1.14, 0.24, 2.86], "z_comb": 2.99, "p": 0.8129593520323983, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9568, "null_sd": 3.86, "v": 29.85, "rv_gaia": 29.09, "ew_limit_ma": 9.041}, {"star": "6879764552737781888", "z": [4.18, 2.21, -1.04, 2.23, -1.62], "ew_ma": [1.46, 0.63, -0.31, 0.91, -0.36], "z_comb": 4.07, "p": 0.8545572721363932, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.79, "v": 27.4, "rv_gaia": 27.2, "ew_limit_ma": 3.878}, {"star": "3789271459953459328", "z": [1.71, 5.73, -0.27, -3.69, 0.61], "ew_ma": [0.79, 1.96, -0.07, -1.09, 0.12], "z_comb": 4.26, "p": 0.8688565571721414, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9917, "null_sd": 5.75, "v": 19.0, "rv_gaia": 18.5, "ew_limit_ma": 19.733}, {"star": "3855524182352238336", "z": [4.88, 3.74, -1.43, -6.11, 2.21], "ew_ma": [0.77, 0.53, -0.22, -0.88, 0.28], "z_comb": 4.66, "p": 0.8744562771861407, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 9.34, "v": 16.8, "rv_gaia": 16.57, "ew_limit_ma": 2.019}, {"star": "5317114850417299584", "z": [6.96, 0.44, -2.0, 6.5, -3.54], "ew_ma": [1.51, 0.11, -0.46, 1.71, -0.54], "z_comb": 4.94, "p": 0.9103544822758862, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 3.63, "v": -5.9, "rv_gaia": -6.29, "ew_limit_ma": 2.861}, {"star": "6018047019138644480", "z": [5.35, 1.17, -0.77, -0.28, 3.67], "ew_ma": [1.66, 0.37, -0.2, -0.1, 0.54], "z_comb": 4.92, "p": 0.9113544322783861, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.12, "v": 13.35, "rv_gaia": 12.85, "ew_limit_ma": 6.464}, {"star": "6489909443564308224", "z": [3.43, 2.28, -0.22, 4.8, 1.48], "ew_ma": [0.52, 0.4, -0.04, 0.85, 0.16], "z_comb": 5.04, "p": 0.9258537073146342, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 3.64, "v": 0.75, "rv_gaia": 0.63, "ew_limit_ma": 2.312}, {"star": "6150200345317455232", "z": [4.7, 2.97, 4.31, 4.16, -1.16], "ew_ma": [2.04, 0.95, 1.36, 1.1, -0.27], "z_comb": 6.45, "p": 0.9268036598170092, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9955, "null_sd": 3.97, "v": -6.45, "rv_gaia": -7.11, "ew_limit_ma": 5.512}, {"star": "3285218186904332288", "z": [4.12, 5.01, -3.02, 0.38, 3.69], "ew_ma": [2.45, 3.0, -1.63, 0.21, 1.24], "z_comb": 6.37, "p": 0.9596020198990051, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9728, "null_sd": 4.56, "v": -7.1, "rv_gaia": -7.28, "ew_limit_ma": 20.88}, {"star": "4745373133284418816", "z": [7.65, 4.57, -1.17, 1.88, -0.49], "ew_ma": [1.77, 0.95, -0.26, 0.48, -0.15], "z_comb": 8.07, "p": 0.9693515324233788, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9923, "null_sd": 4.56, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 4.383}, {"star": "2477815222028038272", "z": [4.28, 5.84, 4.48, -2.73, -0.0], "ew_ma": [3.49, 3.85, 2.6, -1.52, -0.0], "z_comb": 6.97, "p": 0.9732013399330034, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9819, "null_sd": 3.84, "v": 11.9, "rv_gaia": 11.46, "ew_limit_ma": 13.217}, {"star": "6629790584164277376", "z": [9.81, 2.14, -1.16, -1.27, 4.11], "ew_ma": [2.02, 0.46, -0.22, -0.32, 0.56], "z_comb": 8.31, "p": 0.9834508274586271, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9971, "null_sd": 24.24, "v": 0.75, "rv_gaia": 0.5, "ew_limit_ma": 8.485}, {"star": "2473608009504466688", "z": [11.19, 1.97, 2.06, 5.37, 1.01], "ew_ma": [4.18, 0.78, 0.75, 2.47, 0.46], "z_comb": 10.35, "p": 0.9864006799660017, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9839, "null_sd": 5.51, "v": 8.7, "rv_gaia": 8.21, "ew_limit_ma": 19.205}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pa_HARPS.json b/papers/short_lived_elements/data/element_Pa_HARPS.json new file mode 100644 index 0000000000000000000000000000000000000000..ef71165c5a4f125ff40ab8f13f8ac5c72f65a577 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pa_HARPS.json @@ -0,0 +1 @@ +{"lines": [[4217.23, 0.9855285295751027], [4248.08, 1.0], [4176.18, 0.2918589695249923], [4291.34, 0.3081771793717691], [4601.43, 0.35432375163191754]], "stable": [true, true, true, true, true], "results": [{"star": "2468730472844294016", "z": [-1.78, -3.14, 0.66, -0.97, -1.44], "ew_ma": [-0.25, -0.42, 0.08, -0.11, -0.13], "z_comb": -3.65, "p": 0.01639918004099795, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.67, "v": 8.85, "rv_gaia": 8.11, "ew_limit_ma": 0.223}, {"star": "5357075947709011456", "z": [-6.6, -1.87, 1.46, -3.4, 0.65], "ew_ma": [-0.88, -0.3, 0.21, -0.55, 0.05], "z_comb": -5.81, "p": 0.016999150042497874, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.54, "v": 21.5, "rv_gaia": 21.19, "ew_limit_ma": 0.346}, {"star": "6153706477443518976", "z": [-3.43, -3.34, -2.27, 1.39, -0.95], "ew_ma": [-0.75, -0.63, -0.4, 0.24, -0.09], "z_comb": -4.83, "p": 0.0175991200439978, "n_lines": 5, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.3, "v": -25.7, "rv_gaia": -26.31, "ew_limit_ma": 0.452}, {"star": "3646061719703116032", "z": [0.76, -3.1, -5.39, -4.95, -2.76], "ew_ma": [0.08, -0.27, -0.48, -0.42, -0.2], "z_comb": -4.27, "p": 0.018349082545872707, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 1.9, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.236}, {"star": "4906784051581971200", "z": [-4.33, -0.66, -0.25, -1.06, -3.28], "ew_ma": [-0.34, -0.06, -0.02, -0.08, -0.16], "z_comb": -4.3, "p": 0.019649017549122544, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 2.2, "v": 3.55, "rv_gaia": 2.92, "ew_limit_ma": 0.222}, {"star": "6606890608810806528", "z": [-2.71, -6.13, -3.03, 2.32, 0.16], "ew_ma": [-0.91, -1.41, -0.85, 0.46, 0.02], "z_comb": -5.9, "p": 0.02654867256637168, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.61, "v": -19.6, "rv_gaia": -20.32, "ew_limit_ma": 1.338}, {"star": "4847282124418880256", "z": [-5.5, -1.92, 0.95, -0.25, -0.56], "ew_ma": [-0.98, -0.37, 0.14, -0.05, -0.04], "z_comb": -4.86, "p": 0.02679866006699665, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9947, "null_sd": 2.93, "v": 5.05, "rv_gaia": 4.36, "ew_limit_ma": 2.182}, {"star": "6703245382605547520", "z": [-2.99, -0.1, -3.28, -2.39, -1.08], "ew_ma": [-0.28, -0.01, -0.28, -0.18, -0.06], "z_comb": -3.4, "p": 0.03984800759962002, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.83, "v": 33.15, "rv_gaia": 32.63, "ew_limit_ma": 0.198}, {"star": "5569858798004394624", "z": [-3.26, -2.24, -2.75, -3.51, 3.59], "ew_ma": [-0.6, -0.21, -0.32, -0.23, 0.25], "z_comb": -4.02, "p": 0.040897955102244886, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9974, "null_sd": 2.37, "v": 57.1, "rv_gaia": 56.33, "ew_limit_ma": 0.36}, {"star": "4356054757585316992", "z": [-3.5, -2.89, -1.93, 3.96, 1.02], "ew_ma": [-0.38, -0.35, -0.25, 0.29, 0.07], "z_comb": -3.53, "p": 0.04534773261336933, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.33, "v": -19.7, "rv_gaia": -20.28, "ew_limit_ma": 0.401}, {"star": "6764687466752221824", "z": [-3.04, -3.64, 0.16, 1.37, 0.93], "ew_ma": [-0.51, -0.67, 0.03, 0.19, 0.09], "z_comb": -3.87, "p": 0.050047497625118745, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.4, "v": -41.95, "rv_gaia": -42.55, "ew_limit_ma": 0.87}, {"star": "2525514785221197696", "z": [-2.14, -3.0, 1.35, -2.61, 1.33], "ew_ma": [-0.21, -0.22, 0.11, -0.17, 0.08], "z_comb": -3.35, "p": 0.062096895155242235, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.07, "v": -3.15, "rv_gaia": -3.83, "ew_limit_ma": 0.369}, {"star": "2981583790287411200", "z": [-0.95, -1.68, -2.73, -3.29, -1.42], "ew_ma": [-0.11, -0.15, -0.27, -0.37, -0.09], "z_comb": -3.27, "p": 0.06424678766061696, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.32, "v": 41.15, "rv_gaia": 40.43, "ew_limit_ma": 0.499}, {"star": "5540006949934104448", "z": [-1.62, -2.63, -5.4, -0.3, 2.08], "ew_ma": [-0.41, -0.5, -0.82, -0.03, 0.22], "z_comb": -3.42, "p": 0.07384630768461577, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9966, "null_sd": 2.5, "v": 50.1, "rv_gaia": 49.31, "ew_limit_ma": 0.997}, {"star": "5855730584310531200", "z": [-3.48, -2.06, -0.75, -2.04, 0.39], "ew_ma": [-0.78, -0.88, -0.22, -0.59, 0.06], "z_comb": -4.11, "p": 0.0943452827358632, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9962, "null_sd": 3.79, "v": 105.15, "rv_gaia": 104.53, "ew_limit_ma": 7.244}, {"star": "5559265690666327168", "z": [-2.1, -1.37, -2.81, -3.49, 2.28], "ew_ma": [-0.38, -0.3, -0.54, -0.63, 0.21], "z_comb": -3.0, "p": 0.1048447577621119, "n_lines": 5, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.92, "v": 89.25, "rv_gaia": 88.55, "ew_limit_ma": 1.573}, {"star": "5609058277323483392", "z": [-2.37, -3.77, -0.81, -1.51, 1.68], "ew_ma": [-0.86, -1.31, -0.2, -0.38, 0.25], "z_comb": -4.12, "p": 0.12184390780460977, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.39, "v": 73.15, "rv_gaia": 72.42, "ew_limit_ma": 2.995}, {"star": "5876112300125320448", "z": [-0.33, -0.56, -6.52, -1.59, -2.62], "ew_ma": [-0.05, -0.06, -0.55, -0.13, -0.13], "z_comb": -2.79, "p": 0.12184390780460977, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.62, "v": 38.6, "rv_gaia": 37.83, "ew_limit_ma": 0.775}, {"star": "4923433303326992384", "z": [-2.85, 0.19, -0.35, -1.17, 0.76], "ew_ma": [-0.32, 0.03, -0.04, -0.11, 0.05], "z_comb": -1.86, "p": 0.14119294035298235, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.04, "v": 7.25, "rv_gaia": 6.53, "ew_limit_ma": 0.473}, {"star": "5906633952564270848", "z": [-3.33, -1.5, -2.12, 0.73, 0.56], "ew_ma": [-0.8, -0.32, -0.48, 0.13, 0.08], "z_comb": -3.3, "p": 0.14759262036898155, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9978, "null_sd": 3.5, "v": -7.0, "rv_gaia": -7.68, "ew_limit_ma": 2.569}, {"star": "4777373903814124032", "z": [-0.33, -2.13, -1.02, -4.08, 0.64], "ew_ma": [-0.12, -0.33, -0.14, -0.43, 0.06], "z_comb": -2.51, "p": 0.15229238538073098, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.37, "v": 65.0, "rv_gaia": 64.22, "ew_limit_ma": 0.917}, {"star": "6088054505011960832", "z": [-1.39, -1.95, -2.51, -2.03, 3.63], "ew_ma": [-0.2, -0.2, -0.22, -0.19, 0.24], "z_comb": -2.25, "p": 0.16749162541872906, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.51, "v": 59.3, "rv_gaia": 58.66, "ew_limit_ma": 0.48}, {"star": "4400452830957830656", "z": [-6.7, -0.0, 1.82, 0.4, 5.69], "ew_ma": [-2.78, -0.0, 0.61, 0.25, 0.71], "z_comb": -2.61, "p": 0.16994150292485377, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9918, "null_sd": 3.34, "v": -36.7, "rv_gaia": -37.09, "ew_limit_ma": 2.88}, {"star": "5395795730687103488", "z": [-2.86, 0.23, -3.16, -1.47, 2.42], "ew_ma": [-0.45, 0.03, -0.42, -0.17, 0.2], "z_comb": -2.05, "p": 0.18894055297235138, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9964, "null_sd": 2.43, "v": 44.0, "rv_gaia": 43.4, "ew_limit_ma": 0.784}, {"star": "4383374219923745024", "z": [-0.86, -0.75, -1.44, 0.49, 0.83], "ew_ma": [-0.23, -0.18, -0.36, 0.1, 0.15], "z_comb": -1.04, "p": 0.21393930303484826, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.09, "v": 10.95, "rv_gaia": 10.35, "ew_limit_ma": 1.406}, {"star": "6454967273273436416", "z": [-1.61, -0.5, -1.58, -1.07, 1.31], "ew_ma": [-0.29, -0.1, -0.35, -0.26, 0.14], "z_comb": -1.6, "p": 0.25803709814509274, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9969, "null_sd": 3.54, "v": -31.55, "rv_gaia": -31.9, "ew_limit_ma": 3.263}, {"star": "3182634954624823168", "z": [-0.14, -2.59, 2.51, -0.85, 0.05], "ew_ma": [-0.03, -0.5, 0.56, -0.14, 0.01], "z_comb": -1.49, "p": 0.2626868656567172, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.47, "v": 5.4, "rv_gaia": 4.81, "ew_limit_ma": 2.077}, {"star": "5452492082132835840", "z": [-3.76, 0.84, 2.63, 3.29, -2.6], "ew_ma": [-0.4, 0.08, 0.24, 0.28, -0.15], "z_comb": -1.33, "p": 0.27098645067746613, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.49, "v": 13.45, "rv_gaia": 12.83, "ew_limit_ma": 0.54}, {"star": "5548164986925169024", "z": [-1.36, -1.2, 1.01, -0.53, 0.85], "ew_ma": [-0.17, -0.12, 0.08, -0.04, 0.04], "z_comb": -1.39, "p": 0.29138543072846357, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.37, "v": 52.4, "rv_gaia": 51.69, "ew_limit_ma": 0.62}, {"star": "6802426038708609536", "z": [-2.51, -2.46, -0.77, 3.69, 3.51], "ew_ma": [-0.45, -0.31, -0.12, 0.51, 0.28], "z_comb": -1.84, "p": 0.303684815759212, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.06, "v": -15.9, "rv_gaia": -16.09, "ew_limit_ma": 1.488}, {"star": "2417456431710276096", "z": [-1.46, 0.44, 0.85, -2.51, -1.28], "ew_ma": [-0.13, 0.04, 0.08, -0.23, -0.09], "z_comb": -1.31, "p": 0.30938453077346134, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": 8.6, "rv_gaia": 7.88, "ew_limit_ma": 0.612}, {"star": "3480332916165099904", "z": [-1.65, -0.98, 2.76, 1.4, 0.22], "ew_ma": [-0.16, -0.12, 0.3, 0.15, 0.01], "z_comb": -0.86, "p": 0.3128343582820859, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.43, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.731}, {"star": "5891531404470141824", "z": [-1.35, 1.71, -1.68, -3.93, 0.19], "ew_ma": [-0.19, 0.24, -0.3, -0.43, 0.02], "z_comb": -0.83, "p": 0.33598320083995803, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.42, "v": 35.2, "rv_gaia": 34.59, "ew_limit_ma": 1.191}, {"star": "5790389872417570816", "z": [-0.98, -1.08, 2.71, 2.16, -0.09], "ew_ma": [-0.19, -0.22, 0.48, 0.35, -0.01], "z_comb": -0.41, "p": 0.3406329683515824, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.5, "v": -20.35, "rv_gaia": -21.17, "ew_limit_ma": 0.989}, {"star": "3532823773073745536", "z": [2.07, -4.6, 2.19, -0.91, 2.8], "ew_ma": [0.31, -0.52, 0.25, -0.09, 0.26], "z_comb": -0.8, "p": 0.3494325283735813, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.49, "v": 40.35, "rv_gaia": 39.76, "ew_limit_ma": 0.94}, {"star": "5725122999630404096", "z": [0.21, -0.14, -1.48, -3.4, -1.2], "ew_ma": [0.03, -0.02, -0.23, -0.46, -0.11], "z_comb": -1.22, "p": 0.3537823108844558, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9958, "null_sd": 2.75, "v": 33.35, "rv_gaia": 33.23, "ew_limit_ma": 0.755}, {"star": "2341817487782612480", "z": [-3.15, 2.41, -1.17, 1.4, -1.2], "ew_ma": [-0.35, 0.24, -0.12, 0.13, -0.09], "z_comb": -0.68, "p": 0.3548822558872056, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.11, "v": 21.6, "rv_gaia": 20.93, "ew_limit_ma": 0.861}, {"star": "4975284381908412672", "z": [-1.05, -2.96, 0.66, 5.16, 2.29], "ew_ma": [-0.1, -0.27, 0.06, 0.37, 0.15], "z_comb": -0.93, "p": 0.36328183590820456, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.95, "v": -10.2, "rv_gaia": -10.92, "ew_limit_ma": 0.424}, {"star": "6612242034982766848", "z": [3.95, -2.75, 2.65, -1.79, -5.18], "ew_ma": [0.64, -0.56, 0.49, -0.38, -0.55], "z_comb": -0.31, "p": 0.3699315034248288, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.72, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 1.699}, {"star": "5493588665684618752", "z": [0.93, -1.15, 0.79, -0.61, -2.38], "ew_ma": [0.15, -0.2, 0.15, -0.08, -0.21], "z_comb": -0.68, "p": 0.3829808509574521, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 3.08, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 1.618}, {"star": "5481848424118748672", "z": [-2.37, 1.4, 2.53, -2.51, 2.81], "ew_ma": [-1.43, 1.18, 1.43, -2.04, 0.91], "z_comb": 0.02, "p": 0.4096295185240738, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9787, "null_sd": 3.62, "v": 32.25, "rv_gaia": 31.45, "ew_limit_ma": 7.031}, {"star": "2324785228033780608", "z": [-0.43, -2.55, -0.67, 4.56, 1.72], "ew_ma": [-0.1, -0.42, -0.12, 0.63, 0.17], "z_comb": -0.76, "p": 0.4151792410379481, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": -6.85, "rv_gaia": -7.42, "ew_limit_ma": 1.836}, {"star": "3345968334645285376", "z": [-0.83, -0.6, 1.26, 3.22, -0.65], "ew_ma": [-0.16, -0.11, 0.25, 0.43, -0.09], "z_comb": -0.19, "p": 0.4489275536223189, "n_lines": 5, "n_spectra": 6, "twin_r": 0.997, "null_sd": 2.21, "v": -9.4, "rv_gaia": -10.01, "ew_limit_ma": 1.273}, {"star": "4768170579173552896", "z": [-2.97, -1.14, 4.48, 4.62, 1.44], "ew_ma": [-0.64, -0.14, 0.57, 0.57, 0.11], "z_comb": -0.54, "p": 0.45017749112544375, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.77, "v": -4.85, "rv_gaia": -5.53, "ew_limit_ma": 1.257}, {"star": "3786697056556771584", "z": [1.51, -2.54, 4.54, -0.42, 0.19], "ew_ma": [0.19, -0.33, 0.55, -0.05, 0.01], "z_comb": 0.14, "p": 0.4645767711614419, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.32, "v": 13.9, "rv_gaia": 13.2, "ew_limit_ma": 1.174}, {"star": "4117290138348536064", "z": [4.69, -2.01, -1.9, -4.28, -3.06], "ew_ma": [0.61, -0.28, -0.29, -1.03, -0.27], "z_comb": -0.23, "p": 0.4864256787160642, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.59, "v": 10.6, "rv_gaia": 10.36, "ew_limit_ma": 0.797}, {"star": "6489771832811810432", "z": [-0.46, -0.57, 2.69, 1.59, 1.69], "ew_ma": [-0.16, -0.16, 1.0, 0.49, 0.39], "z_comb": 0.56, "p": 0.5692215389230538, "n_lines": 5, "n_spectra": 6, "twin_r": 0.996, "null_sd": 4.57, "v": -30.05, "rv_gaia": -31.05, "ew_limit_ma": 6.474}, {"star": "5848156426657892480", "z": [2.46, -1.35, -0.89, 1.33, -1.36], "ew_ma": [0.2, -0.11, -0.09, 0.12, -0.1], "z_comb": 0.49, "p": 0.5739213039348032, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.37, "v": -30.0, "rv_gaia": -30.56, "ew_limit_ma": 0.527}, {"star": "3346787986201584896", "z": [-0.31, 0.79, 1.28, 3.76, -3.16], "ew_ma": [-0.05, 0.13, 0.17, 0.65, -0.29], "z_comb": 0.6, "p": 0.5854707264636768, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 2.78, "v": 1.1, "rv_gaia": 0.26, "ew_limit_ma": 1.619}, {"star": "6213644846302305536", "z": [0.26, -1.23, 2.03, 4.39, 3.12], "ew_ma": [0.05, -0.25, 0.32, 0.63, 0.42], "z_comb": 1.37, "p": 0.6035198240087996, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.76, "v": -5.85, "rv_gaia": -6.56, "ew_limit_ma": 2.252}, {"star": "2423292879948720000", "z": [-3.27, 3.54, -1.43, 2.82, 0.26], "ew_ma": [-0.24, 0.28, -0.11, 0.15, 0.01], "z_comb": 0.57, "p": 0.6062696865156743, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.17, "v": 29.65, "rv_gaia": 28.92, "ew_limit_ma": 0.453}, {"star": "2475331597059676288", "z": [-0.55, 2.32, -0.32, -3.79, -0.53], "ew_ma": [-0.15, 0.59, -0.09, -0.76, -0.1], "z_comb": 0.22, "p": 0.6131193440327983, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.5, "v": 22.4, "rv_gaia": 21.78, "ew_limit_ma": 2.309}, {"star": "6904703228801028864", "z": [-0.63, 0.71, 3.78, 2.02, -2.13], "ew_ma": [-0.15, 0.09, 0.82, 0.21, -0.24], "z_comb": 0.7, "p": 0.616319184040798, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 3.02, "v": 10.05, "rv_gaia": 9.13, "ew_limit_ma": 2.418}, {"star": "5553647083168192512", "z": [1.38, -0.65, 2.78, -2.42, 0.61], "ew_ma": [0.4, -0.14, 0.49, -0.47, 0.06], "z_comb": 0.66, "p": 0.6199190040497975, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9979, "null_sd": 3.09, "v": 60.35, "rv_gaia": 59.67, "ew_limit_ma": 2.152}, {"star": "5320952798822552064", "z": [1.63, 0.21, -2.02, -1.55, 0.92], "ew_ma": [0.12, 0.02, -0.16, -0.12, 0.06], "z_comb": 0.72, "p": 0.6449177541122944, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.88, "v": 12.4, "rv_gaia": 11.87, "ew_limit_ma": 0.562}, {"star": "4657193606465368704", "z": [0.44, 0.23, -0.71, 1.59, 0.25], "ew_ma": [0.18, 0.08, -0.35, 0.5, 0.06], "z_comb": 0.68, "p": 0.6530673466326684, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9911, "null_sd": 3.29, "v": 14.5, "rv_gaia": 13.99, "ew_limit_ma": 3.975}, {"star": "5459060117921483008", "z": [2.77, -0.13, -3.08, -0.46, 0.26], "ew_ma": [0.33, -0.01, -0.37, -0.04, 0.02], "z_comb": 1.09, "p": 0.6552172391380431, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.61, "v": 44.6, "rv_gaia": 43.93, "ew_limit_ma": 0.922}, {"star": "5586381090520538880", "z": [1.34, 0.48, 1.34, -2.03, 0.91], "ew_ma": [0.16, 0.06, 0.13, -0.21, 0.06], "z_comb": 1.25, "p": 0.6856157192140393, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 2.88, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 1.169}, {"star": "6270906415441316224", "z": [3.93, -1.02, -3.15, -1.4, -1.11], "ew_ma": [0.89, -0.3, -0.79, -0.48, -0.14], "z_comb": 0.73, "p": 0.6905654717264137, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9915, "null_sd": 7.13, "v": -21.9, "rv_gaia": -22.28, "ew_limit_ma": 9.084}, {"star": "4418203587193988480", "z": [0.13, 2.84, 1.36, -2.07, -0.98], "ew_ma": [0.04, 0.76, 0.42, -0.54, -0.12], "z_comb": 1.58, "p": 0.6922153892305385, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.87, "v": -68.75, "rv_gaia": -69.63, "ew_limit_ma": 3.663}, {"star": "2633449134434620288", "z": [-1.76, 2.06, 0.55, 2.01, 2.46], "ew_ma": [-0.17, 0.32, 0.07, 0.26, 0.14], "z_comb": 1.31, "p": 0.6935653217339133, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 3.18, "v": -12.1, "rv_gaia": -12.6, "ew_limit_ma": 1.432}, {"star": "6370513647703084544", "z": [-0.13, 2.5, -1.93, 1.58, -0.93], "ew_ma": [-0.02, 0.21, -0.25, 0.13, -0.07], "z_comb": 1.3, "p": 0.7235138243087845, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.21, "v": 34.95, "rv_gaia": 34.33, "ew_limit_ma": 0.932}, {"star": "3585098090614578688", "z": [2.14, 1.55, 0.78, 0.29, -4.0], "ew_ma": [0.29, 0.25, 0.11, 0.05, -0.31], "z_comb": 1.7, "p": 0.7351632418379082, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.16, "v": -22.15, "rv_gaia": -22.45, "ew_limit_ma": 2.983}, {"star": "5479222240596469632", "z": [0.36, 2.73, -0.07, 0.9, -1.5], "ew_ma": [0.14, 0.61, -0.02, 0.17, -0.24], "z_comb": 1.86, "p": 0.7392130393480326, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.88, "v": 22.85, "rv_gaia": 22.03, "ew_limit_ma": 2.483}, {"star": "5798962867668048768", "z": [1.51, 1.36, 3.21, 0.37, -1.81], "ew_ma": [0.44, 0.35, 0.83, 0.08, -0.36], "z_comb": 2.16, "p": 0.7533623318834058, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9961, "null_sd": 3.07, "v": 2.7, "rv_gaia": 1.94, "ew_limit_ma": 3.474}, {"star": "3022685626580347392", "z": [0.93, 2.69, -0.77, -1.5, -0.46], "ew_ma": [0.16, 0.65, -0.13, -0.29, -0.04], "z_comb": 1.83, "p": 0.7605119744012799, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9982, "null_sd": 3.08, "v": 144.05, "rv_gaia": 143.42, "ew_limit_ma": 3.831}, {"star": "5584019442620181760", "z": [0.28, 2.82, -1.41, 0.63, -0.27], "ew_ma": [0.03, 0.35, -0.21, 0.09, -0.03], "z_comb": 1.84, "p": 0.7715614219289035, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 4.55, "v": 29.0, "rv_gaia": 28.69, "ew_limit_ma": 4.417}, {"star": "6914237987476826624", "z": [0.16, 1.8, -1.35, 2.78, -0.32], "ew_ma": [0.02, 0.18, -0.14, 0.28, -0.03], "z_comb": 1.53, "p": 0.7860106994650268, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.46, "v": 3.8, "rv_gaia": 3.1, "ew_limit_ma": 1.115}, {"star": "5765846127180770432", "z": [1.13, 1.05, 1.94, -1.43, -1.68], "ew_ma": [0.47, 0.3, 0.62, -0.4, -0.42], "z_comb": 1.12, "p": 0.7938603069846508, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 1.86, "v": -4.25, "rv_gaia": -4.87, "ew_limit_ma": 2.223}, {"star": "3789271459953459328", "z": [1.04, 1.62, 0.68, -1.54, 0.08], "ew_ma": [0.24, 0.31, 0.16, -0.26, 0.01], "z_comb": 1.59, "p": 0.7983600819959003, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9937, "null_sd": 2.0, "v": 19.15, "rv_gaia": 18.5, "ew_limit_ma": 1.736}, {"star": "2477815222028038272", "z": [2.89, 1.97, 0.41, -3.19, -2.31], "ew_ma": [0.71, 0.37, 0.09, -0.57, -0.33], "z_comb": 2.08, "p": 0.7997600119994001, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.27, "v": 12.1, "rv_gaia": 11.46, "ew_limit_ma": 2.15}, {"star": "3750995604764854400", "z": [-0.45, 2.75, -0.35, 2.02, -0.96], "ew_ma": [-0.03, 0.21, -0.03, 0.15, -0.05], "z_comb": 1.65, "p": 0.8034598270086496, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.97, "v": -17.45, "rv_gaia": -17.93, "ew_limit_ma": 0.505}, {"star": "2918894859953947392", "z": [2.08, 1.99, -2.53, -0.03, 0.43], "ew_ma": [0.2, 0.18, -0.23, -0.0, 0.03], "z_comb": 2.29, "p": 0.8188590570471477, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.67, "v": -9.9, "rv_gaia": -10.34, "ew_limit_ma": 1.297}, {"star": "6128366415218881536", "z": [2.9, 1.52, -6.16, 1.81, -0.99], "ew_ma": [0.47, 0.16, -0.67, 0.14, -0.08], "z_comb": 1.85, "p": 0.8204589770511475, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.82, "v": 31.2, "rv_gaia": 30.47, "ew_limit_ma": 1.379}, {"star": "5596797039059063680", "z": [2.54, 0.57, -0.12, 1.25, 0.83], "ew_ma": [0.35, 0.11, -0.01, 0.18, 0.06], "z_comb": 2.46, "p": 0.848357582120894, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.5, "v": -15.0, "rv_gaia": -15.71, "ew_limit_ma": 1.526}, {"star": "4867596937475715968", "z": [0.95, 1.99, -1.89, 3.63, 0.46], "ew_ma": [0.13, 0.25, -0.26, 0.37, 0.04], "z_comb": 2.42, "p": 0.8550072496375182, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.11, "v": -9.4, "rv_gaia": -9.94, "ew_limit_ma": 1.293}, {"star": "4176501313320676992", "z": [0.41, 1.98, -2.57, 3.85, 1.37], "ew_ma": [0.04, 0.18, -0.25, 0.3, 0.11], "z_comb": 2.19, "p": 0.8632068396580171, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 1.95, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.799}, {"star": "2533723670313663872", "z": [2.47, 1.3, 2.84, -1.19, 3.16], "ew_ma": [2.43, 1.44, 2.34, -1.42, 2.53], "z_comb": 3.52, "p": 0.8916054197290135, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9571, "null_sd": 3.04, "v": 18.1, "rv_gaia": 16.81, "ew_limit_ma": 15.788}, {"star": "6029992663310612096", "z": [2.47, 1.26, 2.66, 0.17, 1.61], "ew_ma": [1.14, 0.3, 1.15, 0.04, 0.48], "z_comb": 3.37, "p": 0.8930553472326384, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.79, "v": 14.75, "rv_gaia": 14.08, "ew_limit_ma": 3.845}, {"star": "3799626935341796096", "z": [1.92, 1.04, 2.05, -0.58, 2.84], "ew_ma": [0.4, 0.22, 0.44, -0.1, 0.42], "z_comb": 2.89, "p": 0.8940052997350133, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.66, "v": 2.5, "rv_gaia": 1.89, "ew_limit_ma": 2.746}, {"star": "2523361151179609344", "z": [2.07, 0.13, 2.57, 1.2, 0.09], "ew_ma": [0.22, 0.01, 0.26, 0.11, 0.01], "z_comb": 2.2, "p": 0.9140042997850107, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 1.82, "v": 12.9, "rv_gaia": 12.23, "ew_limit_ma": 0.876}, {"star": "2390702771185162112", "z": [3.84, 2.14, 0.94, -4.08, 0.06], "ew_ma": [0.78, 0.45, 0.17, -0.61, 0.01], "z_comb": 3.28, "p": 0.9141042947852608, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.61, "v": 10.85, "rv_gaia": 10.28, "ew_limit_ma": 2.57}, {"star": "6603827644293770624", "z": [2.82, 1.67, 0.18, -0.02, -0.45], "ew_ma": [0.53, 0.25, 0.02, -0.0, -0.04], "z_comb": 2.88, "p": 0.9163041847907605, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.16, "v": 1.1, "rv_gaia": 0.39, "ew_limit_ma": 1.576}, {"star": "6133033601555979648", "z": [5.05, 2.63, 5.06, -0.24, -4.85], "ew_ma": [2.42, 0.95, 2.05, -0.07, -1.07], "z_comb": 4.83, "p": 0.9178041097945103, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.17, "v": 18.7, "rv_gaia": 18.05, "ew_limit_ma": 7.093}, {"star": "6544549880063909248", "z": [0.05, 3.86, -1.3, 3.63, 0.93], "ew_ma": [0.01, 0.49, -0.2, 0.41, 0.07], "z_comb": 3.3, "p": 0.91990400479976, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.29, "v": 21.4, "rv_gaia": 20.78, "ew_limit_ma": 1.553}, {"star": "3811594088617869056", "z": [1.26, 3.14, 3.62, -2.33, -1.61], "ew_ma": [0.21, 0.45, 0.55, -0.22, -0.14], "z_comb": 2.75, "p": 0.920253987300635, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.0, "v": 10.7, "rv_gaia": 10.06, "ew_limit_ma": 1.469}, {"star": "6489909443564308224", "z": [3.59, 4.19, 0.3, 2.12, -2.48], "ew_ma": [0.45, 0.58, 0.04, 0.3, -0.21], "z_comb": 5.03, "p": 0.9530523473826309, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9955, "null_sd": 3.17, "v": 0.85, "rv_gaia": 0.63, "ew_limit_ma": 1.565}, {"star": "6879764552737781888", "z": [8.18, 0.27, -5.64, 1.9, -2.0], "ew_ma": [0.97, 0.04, -0.62, 0.42, -0.12], "z_comb": 4.34, "p": 0.9555522223888806, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.45, "v": 27.3, "rv_gaia": 27.2, "ew_limit_ma": 1.032}, {"star": "2585856120791459584", "z": [3.25, 2.26, 0.99, 4.31, 0.4], "ew_ma": [0.83, 0.39, 0.16, 0.62, 0.04], "z_comb": 4.79, "p": 0.9566521673916304, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.89, "v": -20.35, "rv_gaia": -20.97, "ew_limit_ma": 1.99}, {"star": "5461620846141553024", "z": [2.66, 3.22, 0.61, -1.1, -0.46], "ew_ma": [0.48, 0.4, 0.07, -0.11, -0.03], "z_comb": 3.66, "p": 0.9572521373931303, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.42, "v": 27.55, "rv_gaia": 26.94, "ew_limit_ma": 1.63}, {"star": "5317114850417299584", "z": [7.43, 0.72, -1.09, 1.98, -2.81], "ew_ma": [1.04, 0.11, -0.14, 0.42, -0.23], "z_comb": 4.86, "p": 0.9603519824008799, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.78, "v": -6.25, "rv_gaia": -6.29, "ew_limit_ma": 1.966}, {"star": "6519024545827374336", "z": [4.87, 2.0, 0.86, 1.63, -2.03], "ew_ma": [0.83, 0.42, 0.14, 0.29, -0.17], "z_comb": 4.53, "p": 0.9634518274086296, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.32, "v": 19.15, "rv_gaia": 18.68, "ew_limit_ma": 1.824}, {"star": "5528591961953902720", "z": [6.85, 2.96, 4.2, 1.28, -2.27], "ew_ma": [1.71, 0.98, 1.03, 0.41, -0.23], "z_comb": 6.98, "p": 0.9716514174291285, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.61, "v": -1.05, "rv_gaia": -1.8, "ew_limit_ma": 4.456}, {"star": "4041857799496807936", "z": [2.4, 4.29, 2.21, 0.39, -0.54], "ew_ma": [0.69, 0.79, 0.7, 0.06, -0.05], "z_comb": 4.79, "p": 0.9783510824458777, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.3, "v": 3.05, "rv_gaia": 2.44, "ew_limit_ma": 2.253}, {"star": "2966790170574625408", "z": [12.93, 1.44, -0.2, -0.45, -0.92], "ew_ma": [1.68, 0.23, -0.02, -0.09, -0.07], "z_comb": 9.05, "p": 0.9964001799910005, "n_lines": 5, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 3.95, "v": 38.45, "rv_gaia": 37.83, "ew_limit_ma": 5.952}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pa_UVES.json b/papers/short_lived_elements/data/element_Pa_UVES.json new file mode 100644 index 0000000000000000000000000000000000000000..d16fd8b28c2cca64a531288cd2561de882018b61 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pa_UVES.json @@ -0,0 +1 @@ +{"lines": [[4217.23, 0.9855285295751027], [4248.08, 1.0], [4176.18, 0.2918589695249923], [4291.34, 0.3081771793717691], [4601.43, 0.35432375163191754]], "stable": [true, true, true, true, true], "results": [{"star": "3118434397663311360", "z": [-9.51, -3.84, -2.67, -5.67, null], "ew_ma": [-2.67, -1.32, -0.67, -1.88, null], "z_comb": -10.73, "p": 0.0032998350082495873, "n_lines": 4, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.09, "v": 47.4, "rv_gaia": 47.33, "ew_limit_ma": 0.374, "dominant": 4217.23, "shared": 17, "width": 2.4, "vet": "absorption at 4217.23 A shared by 17 other stars"}, {"star": "6382933589314905472", "z": [-15.7, -1.63, -2.15, 2.45, null], "ew_ma": [-10.79, -1.67, -1.35, 2.64, null], "z_comb": -11.58, "p": 0.008249587520623968, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9788, "null_sd": 4.69, "v": 32.8, "rv_gaia": 32.35, "ew_limit_ma": 3.272, "dominant": 4217.23, "shared": 7, "width": 1.7, "vet": "absorption at 4217.23 A shared by 7 other stars"}, {"star": "2382711653818308224", "z": [-2.73, -6.86, 1.29, -5.1, null], "ew_ma": [-1.2, -2.65, 0.56, -2.09, null], "z_comb": -7.32, "p": 0.00974951252437378, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9906, "null_sd": 3.31, "v": 5.8, "rv_gaia": 6.41, "ew_limit_ma": 0.803, "dominant": 4248.08, "shared": 16, "width": 1.1, "vet": "absorption at 4248.08 A shared by 16 other stars"}, {"star": "5569858798004394624", "z": [-5.67, -5.95, -0.55, -2.67, null], "ew_ma": [-1.64, -1.7, -0.12, -0.55, null], "z_comb": -8.54, "p": 0.010199490025498725, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9952, "null_sd": 3.57, "v": 56.9, "rv_gaia": 56.33, "ew_limit_ma": 1.562}, {"star": "84625634714435968", "z": [-8.65, -0.23, 3.08, -4.46, null], "ew_ma": [-4.55, -0.12, 1.64, -2.58, null], "z_comb": -6.29, "p": 0.011499425028748563, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9924, "null_sd": 2.63, "v": 5.35, "rv_gaia": 4.34, "ew_limit_ma": 1.378}, {"star": "3702148666829533952", "z": [-10.46, -3.79, -2.55, 2.23, null], "ew_ma": [-3.81, -2.02, -0.91, 1.18, null], "z_comb": -9.65, "p": 0.013099345032748363, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9912, "null_sd": 3.96, "v": 3.8, "rv_gaia": 2.63, "ew_limit_ma": 2.081}, {"star": "5559265690666326016", "z": [-7.65, -2.45, 0.24, -7.08, null], "ew_ma": [-2.9, -1.16, 0.09, -2.82, null], "z_comb": -8.25, "p": 0.017649117544122794, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9935, "null_sd": 4.39, "v": 89.85, "rv_gaia": 88.81, "ew_limit_ma": 1.766}, {"star": "2898239468873596800", "z": [-7.87, -0.79, -0.59, -0.47, null], "ew_ma": [-1.88, -0.19, -0.11, -0.1, null], "z_comb": -6.04, "p": 0.01799910004499775, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.13, "v": -3.5, "rv_gaia": -3.85, "ew_limit_ma": 0.899}, {"star": "2029433521248546304", "z": [-1.96, -6.52, -0.72, -5.53, null], "ew_ma": [-0.8, -2.42, -0.22, -3.01, null], "z_comb": -7.07, "p": 0.022048897555122245, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9962, "null_sd": 3.78, "v": -45.7, "rv_gaia": -45.34, "ew_limit_ma": 1.607}, {"star": "5553647083168192512", "z": [-5.19, -3.0, -4.49, -4.52, null], "ew_ma": [-1.65, -1.0, -1.32, -1.6, null], "z_comb": -7.37, "p": 0.022848857557122144, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9937, "null_sd": 3.91, "v": 60.55, "rv_gaia": 59.67, "ew_limit_ma": 1.63}, {"star": "5609058277323483392", "z": [-3.15, -7.72, 5.67, -5.4, null], "ew_ma": [-2.43, -4.96, 3.59, -2.86, null], "z_comb": -7.39, "p": 0.024098795060246987, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.7, "v": 71.85, "rv_gaia": 72.42, "ew_limit_ma": 3.548}, {"star": "5801950515627094400", "z": [-4.83, -3.07, -1.44, -3.36, null], "ew_ma": [-2.43, -1.45, -0.74, -1.55, null], "z_comb": -6.33, "p": 0.0263986800659967, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.0, "v": 59.6, "rv_gaia": 60.13, "ew_limit_ma": 2.608}, {"star": "4722135642226902656", "z": [-8.68, -1.41, -2.15, 3.49, null], "ew_ma": [-2.1, -0.33, -0.46, 0.96, null], "z_comb": -6.49, "p": 0.03249837508124594, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.62, "v": 12.2, "rv_gaia": 11.94, "ew_limit_ma": 0.808}, {"star": "6163964031871884672", "z": [-5.38, -2.99, -0.43, 0.18, null], "ew_ma": [-1.17, -0.76, -0.08, 0.04, null], "z_comb": -5.69, "p": 0.03629818509074546, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.72, "v": 3.35, "rv_gaia": 3.36, "ew_limit_ma": 0.804}, {"star": "6764687466752221824", "z": [-0.28, -7.44, -2.31, -0.96, null], "ew_ma": [-0.11, -2.93, -0.83, -0.36, null], "z_comb": -5.92, "p": 0.043097845107744615, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.71, "v": -42.7, "rv_gaia": -42.55, "ew_limit_ma": 3.084}, {"star": "5902750168276592256", "z": [-10.2, 2.3, -2.44, -0.88, null], "ew_ma": [-4.64, 1.16, -0.9, -0.4, null], "z_comb": -5.96, "p": 0.046047697615119246, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.53, "v": -68.4, "rv_gaia": -68.78, "ew_limit_ma": 3.173}, {"star": "5409121433672765824", "z": [-2.5, -2.15, -7.46, -2.29, null], "ew_ma": [-0.4, -0.43, -1.35, -0.53, null], "z_comb": -5.11, "p": 0.06324683765811709, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9968, "null_sd": 3.6, "v": 47.85, "rv_gaia": 47.45, "ew_limit_ma": 0.926}, {"star": "5951165616611763456", "z": [-3.05, -2.75, -5.82, 0.04, 2.19], "ew_ma": [-1.47, -1.41, -2.27, 0.02, 0.55], "z_comb": -4.42, "p": 0.06344682765861707, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.01, "v": 25.75, "rv_gaia": 25.96, "ew_limit_ma": 2.284}, {"star": "5760701787150565888", "z": [1.88, -3.84, -8.69, -7.23, null], "ew_ma": [0.65, -1.16, -3.39, -2.28, null], "z_comb": -4.6, "p": 0.07619619019049048, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.7, "v": 33.4, "rv_gaia": 31.99, "ew_limit_ma": 1.595}, {"star": "2966790170574625408", "z": [2.47, -4.51, -6.6, -7.82, null], "ew_ma": [0.52, -0.9, -1.27, -1.86, null], "z_comb": -4.38, "p": 0.0783960801959902, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9974, "null_sd": 3.07, "v": 39.3, "rv_gaia": 37.83, "ew_limit_ma": 1.427}, {"star": "5540006949934104448", "z": [-1.9, -1.15, -3.11, -0.54, null], "ew_ma": [-2.89, -1.5, -3.98, -0.63, null], "z_comb": -2.8, "p": 0.08209589520523974, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9836, "null_sd": 2.09, "v": 49.25, "rv_gaia": 49.31, "ew_limit_ma": 6.55}, {"star": "5493588665684618752", "z": [-8.62, -2.24, 2.24, 2.32, null], "ew_ma": [-4.25, -1.08, 0.95, 1.03, null], "z_comb": -6.38, "p": 0.08234588270586471, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.92, "v": 5.7, "rv_gaia": 4.82, "ew_limit_ma": 4.724}, {"star": "4675955810263106432", "z": [-3.1, -2.77, -2.92, -0.89, null], "ew_ma": [-1.39, -0.93, -1.36, -0.3, null], "z_comb": -4.74, "p": 0.09609519524023799, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 3.52, "v": 31.8, "rv_gaia": 28.42, "ew_limit_ma": 2.551}, {"star": "3584074376569429248", "z": [-1.25, -2.38, -3.37, -1.01, null], "ew_ma": [-0.45, -0.6, -1.05, -0.27, null], "z_comb": -3.35, "p": 0.09654517274136293, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.84, "v": 20.8, "rv_gaia": 20.73, "ew_limit_ma": 1.62}, {"star": "3750995604764854400", "z": [-4.34, -4.06, 1.02, 3.33, null], "ew_ma": [-0.71, -0.67, 0.15, 0.52, null], "z_comb": -4.78, "p": 0.10289485525723714, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.63, "v": -17.6, "rv_gaia": -17.93, "ew_limit_ma": 0.946}, {"star": "4381250547575102208", "z": [-1.79, -2.99, -6.7, 0.75, null], "ew_ma": [-1.09, -2.07, -3.58, 0.46, null], "z_comb": -4.41, "p": 0.11349432528373582, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9907, "null_sd": 3.95, "v": 45.05, "rv_gaia": 44.84, "ew_limit_ma": 4.968}, {"star": "3639760521643499776", "z": [-0.67, -3.56, 0.38, 0.48, null], "ew_ma": [-0.34, -1.47, 0.2, 0.21, null], "z_comb": -2.7, "p": 0.11649417529123544, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9961, "null_sd": 2.5, "v": -11.5, "rv_gaia": -12.39, "ew_limit_ma": 2.329}, {"star": "6141742283401003264", "z": [-3.47, -2.97, -0.12, -0.78, null], "ew_ma": [-1.37, -1.25, -0.05, -0.3, null], "z_comb": -4.55, "p": 0.13719314034298286, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.94, "v": -14.0, "rv_gaia": -13.03, "ew_limit_ma": 4.038}, {"star": "3400292798990117888", "z": [-1.87, -3.98, 0.72, -1.45, null], "ew_ma": [-0.43, -1.11, 0.23, -0.52, null], "z_comb": -4.13, "p": 0.14524273786310685, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.71, "v": 37.45, "rv_gaia": 37.7, "ew_limit_ma": 1.679}, {"star": "6062166950467100032", "z": [-6.52, 0.01, 1.85, -7.3, null], "ew_ma": [-1.49, 0.0, 0.54, -3.0, null], "z_comb": -5.54, "p": 0.14689265536723164, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9938, "null_sd": 4.6, "v": -64.15, "rv_gaia": -63.57, "ew_limit_ma": 2.242}, {"star": "2831490694929214464", "z": [-3.81, -1.76, -1.57, 1.34, null], "ew_ma": [-1.01, -0.31, -0.33, 0.26, null], "z_comb": -3.79, "p": 0.15379231038448077, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.59, "v": -1.2, "rv_gaia": -0.92, "ew_limit_ma": 1.728}, {"star": "2423292879948720000", "z": [-7.06, 3.28, -4.35, -2.83, null], "ew_ma": [-1.41, 0.58, -0.9, -0.54, null], "z_comb": -3.97, "p": 0.1624918754062297, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.54, "v": 29.05, "rv_gaia": 28.92, "ew_limit_ma": 1.254}, {"star": "3261878613062758144", "z": [-4.85, 0.23, -1.63, -1.06, null], "ew_ma": [-1.54, 0.1, -0.43, -0.36, null], "z_comb": -3.65, "p": 0.16544172791360431, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.23, "v": 22.25, "rv_gaia": 22.59, "ew_limit_ma": 3.697}, {"star": "5481848424118748672", "z": [-3.16, 1.01, -2.74, -5.12, null], "ew_ma": [-1.53, 0.54, -1.36, -3.37, null], "z_comb": -3.05, "p": 0.16544172791360431, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9838, "null_sd": 3.48, "v": 33.05, "rv_gaia": 31.45, "ew_limit_ma": 3.098}, {"star": "4303294039306246656", "z": [-1.58, -4.27, 0.39, 0.51, null], "ew_ma": [-0.28, -1.05, 0.08, 0.09, null], "z_comb": -3.79, "p": 0.16799160041997901, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.96, "v": 0.1, "rv_gaia": -0.08, "ew_limit_ma": 1.828}, {"star": "4345775217221821312", "z": [-6.66, -0.44, 4.85, 5.65, null], "ew_ma": [-1.45, -0.09, 1.25, 1.61, null], "z_comb": -2.62, "p": 0.16909154542272886, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9964, "null_sd": 2.72, "v": 11.55, "rv_gaia": 11.71, "ew_limit_ma": 1.295}, {"star": "2477891500647336704", "z": [-1.37, -0.72, -3.84, -2.0, null], "ew_ma": [-0.43, -0.23, -1.2, -0.65, null], "z_comb": -2.59, "p": 0.17904104794760262, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.11, "v": -14.75, "rv_gaia": -14.92, "ew_limit_ma": 1.781}, {"star": "6161806515182527616", "z": [-1.31, -0.61, -0.95, -6.41, null], "ew_ma": [-0.51, -0.14, -0.34, -2.43, null], "z_comb": -2.83, "p": 0.18374081295935205, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.27, "v": 81.9, "rv_gaia": 82.23, "ew_limit_ma": 2.734}, {"star": "3511640513332581504", "z": [0.21, -4.02, 2.25, -1.92, null], "ew_ma": [0.06, -1.16, 0.76, -0.61, null], "z_comb": -2.56, "p": 0.18919054047297634, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 3.86, "v": -12.25, "rv_gaia": -12.25, "ew_limit_ma": 2.04}, {"star": "6963761190199424", "z": [-6.57, 1.02, 2.4, 3.75, null], "ew_ma": [-1.02, 0.22, 0.43, 0.74, null], "z_comb": -2.45, "p": 0.19944002799860008, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.77, "v": 25.7, "rv_gaia": 24.71, "ew_limit_ma": 1.871}, {"star": "4925088171405735680", "z": [3.14, -2.72, -10.59, -8.03, null], "ew_ma": [0.68, -0.63, -2.94, -2.29, null], "z_comb": -3.54, "p": 0.2063896805159742, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 4.09, "v": 36.45, "rv_gaia": 36.66, "ew_limit_ma": 1.337}, {"star": "2531792756096759296", "z": [-2.76, -1.13, 0.05, -0.11, null], "ew_ma": [-0.37, -0.13, 0.01, -0.01, null], "z_comb": -2.64, "p": 0.20903954802259886, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 4.0, "v": 5.4, "rv_gaia": 5.96, "ew_limit_ma": 1.328}, {"star": "3732539683617410816", "z": [-4.46, -1.18, 2.47, 2.42, null], "ew_ma": [-1.11, -0.28, 0.72, 0.8, null], "z_comb": -2.8, "p": 0.22218889055547222, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 3.57, "v": -27.0, "rv_gaia": -27.25, "ew_limit_ma": 1.947}, {"star": "6166183842771027328", "z": [-3.11, -1.21, -1.1, 3.82, null], "ew_ma": [-0.56, -0.32, -0.24, 0.93, null], "z_comb": -2.34, "p": 0.22603869806509674, "n_lines": 4, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.4, "v": -17.35, "rv_gaia": -17.46, "ew_limit_ma": 2.187}, {"star": "5266348577487273344", "z": [-0.48, -1.6, -1.93, -2.12, null], "ew_ma": [-0.18, -0.71, -0.72, -0.74, null], "z_comb": -2.24, "p": 0.24448777561121943, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9972, "null_sd": 2.87, "v": 14.15, "rv_gaia": 13.6, "ew_limit_ma": 2.335}, {"star": "4421455530273900032", "z": [-1.23, -1.88, 0.78, -2.18, null], "ew_ma": [-0.39, -0.67, 0.24, -0.71, null], "z_comb": -2.41, "p": 0.24673766311684417, "n_lines": 4, "n_spectra": 1, "twin_r": 0.993, "null_sd": 4.48, "v": 54.65, "rv_gaia": 54.37, "ew_limit_ma": 4.104}, {"star": "3584074380866605440", "z": [-1.25, -1.41, -0.43, 1.54, -0.91], "ew_ma": [-0.39, -0.35, -0.1, 0.37, -0.27], "z_comb": -1.73, "p": 0.26593670316484175, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.89, "v": 20.6, "rv_gaia": 19.78, "ew_limit_ma": 2.485}, {"star": "5320952798822552064", "z": [0.9, -4.13, 1.84, -2.51, null], "ew_ma": [0.1, -0.57, 0.24, -0.42, null], "z_comb": -2.37, "p": 0.2661366931653417, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 3.53, "v": 12.2, "rv_gaia": 11.87, "ew_limit_ma": 0.915}, {"star": "5381537023379295232", "z": [-2.09, -0.14, -1.8, 1.61, null], "ew_ma": [-1.54, -0.14, -1.71, 1.52, null], "z_comb": -1.52, "p": 0.27068646567671617, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9861, "null_sd": 2.72, "v": 17.55, "rv_gaia": 16.94, "ew_limit_ma": 7.317}, {"star": "4315804351350378496", "z": [-1.21, -1.23, 1.25, -6.21, null], "ew_ma": [-0.71, -1.03, 0.87, -4.94, null], "z_comb": -2.71, "p": 0.27713614319284036, "n_lines": 4, "n_spectra": 4, "twin_r": 0.992, "null_sd": 3.94, "v": -100.25, "rv_gaia": -100.33, "ew_limit_ma": 8.196}, {"star": "5062172841616745856", "z": [0.0, -1.06, 0.09, -3.96, null], "ew_ma": [0.0, -0.33, 0.03, -1.02, null], "z_comb": -1.53, "p": 0.27868606569671517, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9969, "null_sd": 3.81, "v": 11.7, "rv_gaia": 11.16, "ew_limit_ma": 3.587}, {"star": "6515731817739456256", "z": [-3.55, -1.71, 6.19, 2.54, null], "ew_ma": [-0.52, -0.29, 1.17, 0.54, null], "z_comb": -1.78, "p": 0.3055347232638368, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.43, "v": -0.3, "rv_gaia": -1.09, "ew_limit_ma": 1.232}, {"star": "2430102808294101760", "z": [-4.36, 0.46, -0.54, 5.81, null], "ew_ma": [-0.98, 0.08, -0.11, 1.1, null], "z_comb": -1.5, "p": 0.3307334633268337, "n_lines": 4, "n_spectra": 4, "twin_r": 0.998, "null_sd": 3.51, "v": -9.8, "rv_gaia": -10.12, "ew_limit_ma": 1.861}, {"star": "3282511876473223552", "z": [-0.24, -2.52, 1.52, -0.55, null], "ew_ma": [-0.09, -1.06, 0.74, -0.27, null], "z_comb": -1.69, "p": 0.3321833908304585, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9924, "null_sd": 4.08, "v": -46.3, "rv_gaia": -46.55, "ew_limit_ma": 5.898}, {"star": "1787990525934491776", "z": [-1.77, -0.48, 1.43, -1.87, null], "ew_ma": [-0.94, -0.29, 0.76, -1.15, null], "z_comb": -1.63, "p": 0.3326333683315834, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9877, "null_sd": 3.5, "v": -44.35, "rv_gaia": -44.33, "ew_limit_ma": 6.394}, {"star": "5264749303462961280", "z": [0.56, -0.55, -7.02, -0.91, null], "ew_ma": [0.36, -0.26, -4.2, -0.38, null], "z_comb": -1.58, "p": 0.344082795860207, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9914, "null_sd": 3.64, "v": 35.75, "rv_gaia": 36.06, "ew_limit_ma": 4.849}, {"star": "3265335443260522112", "z": [-2.88, 0.32, 4.57, -4.73, null], "ew_ma": [-1.41, 0.15, 1.83, -1.69, null], "z_comb": -1.8, "p": 0.34753262336883156, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9952, "null_sd": 4.52, "v": 20.25, "rv_gaia": 19.3, "ew_limit_ma": 4.478}, {"star": "4906784051581971200", "z": [-1.7, -0.93, 0.22, 1.35, null], "ew_ma": [-0.54, -0.42, 0.09, 0.51, null], "z_comb": -1.45, "p": 0.35638218089095547, "n_lines": 4, "n_spectra": 1, "twin_r": 0.996, "null_sd": 3.55, "v": 2.9, "rv_gaia": 2.92, "ew_limit_ma": 3.595}, {"star": "3575733210781078016", "z": [-0.47, -0.87, 0.31, -0.78, null], "ew_ma": [-0.33, -0.25, 0.26, -0.21, null], "z_comb": -1.01, "p": 0.3665316734163292, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9921, "null_sd": 3.91, "v": 0.8, "rv_gaia": -0.41, "ew_limit_ma": 4.957}, {"star": "3529518709839090176", "z": [-0.26, -0.72, 0.26, 0.85, null], "ew_ma": [-0.04, -0.15, 0.05, 0.15, null], "z_comb": -0.43, "p": 0.3871306434678266, "n_lines": 4, "n_spectra": 3, "twin_r": 0.998, "null_sd": 3.54, "v": -20.35, "rv_gaia": -20.24, "ew_limit_ma": 1.808}, {"star": "5528591961953902720", "z": [-1.54, -0.76, 1.73, 2.17, null], "ew_ma": [-0.29, -0.1, 0.25, 0.31, null], "z_comb": -0.76, "p": 0.40012999350032497, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.38, "v": -1.5, "rv_gaia": -1.8, "ew_limit_ma": 1.196}, {"star": "3188395880157173120", "z": [1.03, 0.3, -0.18, -6.46, null], "ew_ma": [0.4, 0.1, -0.08, -2.62, null], "z_comb": -0.5, "p": 0.40127993600319983, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9939, "null_sd": 3.82, "v": 77.55, "rv_gaia": 77.12, "ew_limit_ma": 3.84}, {"star": "6912276699251278848", "z": [3.34, -3.04, -0.64, -1.41, null], "ew_ma": [1.06, -0.95, -0.21, -0.38, null], "z_comb": -0.25, "p": 0.4197290135493225, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.26, "v": -17.55, "rv_gaia": -17.49, "ew_limit_ma": 2.837}, {"star": "5155981730587168384", "z": [-1.2, -3.97, 6.84, 6.04, null], "ew_ma": [-0.32, -1.14, 1.45, 1.79, null], "z_comb": -0.88, "p": 0.4248787560621969, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9954, "null_sd": 4.26, "v": 7.2, "rv_gaia": 7.01, "ew_limit_ma": 3.523}, {"star": "3482326708703712896", "z": [-4.29, 0.34, 2.0, 5.27, null], "ew_ma": [-0.72, 0.06, 0.29, 0.86, null], "z_comb": -1.15, "p": 0.4274786260686966, "n_lines": 4, "n_spectra": 1, "twin_r": 0.999, "null_sd": 2.82, "v": 5.45, "rv_gaia": 5.62, "ew_limit_ma": 1.135}, {"star": "5586381090520538880", "z": [-1.07, 0.77, -0.5, 0.46, null], "ew_ma": [-0.22, 0.17, -0.09, 0.1, null], "z_comb": -0.2, "p": 0.44697765111744414, "n_lines": 4, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.0, "v": 9.6, "rv_gaia": 9.18, "ew_limit_ma": 1.945}, {"star": "3630099250409312640", "z": [-3.11, -0.09, 6.15, 3.35, null], "ew_ma": [-2.27, -0.05, 5.05, 6.34, null], "z_comb": -0.22, "p": 0.47987600619969, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9298, "null_sd": 3.86, "v": -10.6, "rv_gaia": -9.78, "ew_limit_ma": 12.36}, {"star": "5129338021224785408", "z": [-2.09, 1.94, 2.92, -0.2, null], "ew_ma": [-1.68, 1.79, 2.6, -0.18, null], "z_comb": 0.46, "p": 0.5087245637718114, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9693, "null_sd": 3.85, "v": 25.65, "rv_gaia": 29.09, "ew_limit_ma": 9.462}, {"star": "6128366415218881536", "z": [1.7, 0.42, -7.35, -1.6, null], "ew_ma": [0.62, 0.11, -1.55, -0.27, null], "z_comb": -0.37, "p": 0.5092745362731863, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 3.79, "v": 31.05, "rv_gaia": 30.47, "ew_limit_ma": 3.535}, {"star": "3946438125929224320", "z": [4.46, -2.63, -1.3, -5.8, null], "ew_ma": [1.29, -0.67, -0.31, -1.44, null], "z_comb": -0.27, "p": 0.5114244287785611, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.57, "v": 2.1, "rv_gaia": 1.76, "ew_limit_ma": 3.154}, {"star": "3900151160301345152", "z": [-0.72, 0.78, -0.99, 1.72, null], "ew_ma": [-1.44, 1.59, -1.89, 2.93, null], "z_comb": 0.22, "p": 0.5150742462876856, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9284, "null_sd": 1.99, "v": 4.05, "rv_gaia": 4.92, "ew_limit_ma": 11.733}, {"star": "4775347916201249792", "z": [-0.29, 0.5, -0.3, -0.6, null], "ew_ma": [-0.12, 0.19, -0.13, -0.29, null], "z_comb": -0.04, "p": 0.5419729013549323, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9812, "null_sd": 3.02, "v": -4.9, "rv_gaia": -4.59, "ew_limit_ma": 3.897}, {"star": "4623036865373793408", "z": [2.05, -1.95, 0.65, 2.03, null], "ew_ma": [0.55, -0.47, 0.16, 0.46, null], "z_comb": 0.6, "p": 0.5473726313684316, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 2.65, "v": 10.9, "rv_gaia": 10.71, "ew_limit_ma": 2.051}, {"star": "2913411183149615744", "z": [-0.27, 0.44, -2.51, 1.92, null], "ew_ma": [-0.11, 0.17, -1.09, 0.74, null], "z_comb": 0.02, "p": 0.552522373881306, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9953, "null_sd": 3.22, "v": 21.5, "rv_gaia": 21.69, "ew_limit_ma": 3.92}, {"star": "6384510877400590336", "z": [-2.7, 0.66, 5.2, 2.63, null], "ew_ma": [-0.53, 0.11, 0.95, 0.43, null], "z_comb": 0.22, "p": 0.5901204939753012, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 2.82, "v": -2.0, "rv_gaia": -2.29, "ew_limit_ma": 1.58}, {"star": "1244571953471006720", "z": [0.88, -3.11, 3.73, 4.87, null], "ew_ma": [0.42, -1.33, 2.24, 2.44, null], "z_comb": 0.24, "p": 0.6016199190040498, "n_lines": 4, "n_spectra": 4, "twin_r": 0.987, "null_sd": 4.3, "v": -16.2, "rv_gaia": -16.75, "ew_limit_ma": 5.294}, {"star": "2964794041574370560", "z": [-2.46, 2.66, 1.19, 2.53, null], "ew_ma": [-0.48, 0.6, 0.24, 0.56, null], "z_comb": 0.93, "p": 0.6264686765661717, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.31, "v": 29.95, "rv_gaia": 29.0, "ew_limit_ma": 2.537}, {"star": "4343066192373826176", "z": [6.57, -4.74, -0.27, 2.95, null], "ew_ma": [2.85, -2.34, -0.19, 2.08, null], "z_comb": 1.75, "p": 0.6344182790860456, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9741, "null_sd": 4.46, "v": -32.6, "rv_gaia": -30.57, "ew_limit_ma": 5.46}, {"star": "5916947921402171264", "z": [-0.06, 1.81, -0.57, -2.7, null], "ew_ma": [-0.03, 0.7, -0.3, -1.12, null], "z_comb": 0.51, "p": 0.6423678816059197, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.96, "v": 99.0, "rv_gaia": 99.72, "ew_limit_ma": 7.766}, {"star": "6150200345317455232", "z": [-0.48, 1.47, 0.65, 3.89, null], "ew_ma": [-0.13, 0.5, 0.17, 1.05, null], "z_comb": 1.63, "p": 0.6542172891355432, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.7, "v": -6.75, "rv_gaia": -7.11, "ew_limit_ma": 3.908}, {"star": "2417456431710276096", "z": [0.34, 1.8, -1.55, 0.3, null], "ew_ma": [0.04, 0.22, -0.19, 0.04, null], "z_comb": 1.21, "p": 0.6616669166541673, "n_lines": 4, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.23, "v": 8.15, "rv_gaia": 7.88, "ew_limit_ma": 1.504}, {"star": "4912580642524184960", "z": [-0.61, 3.26, -4.86, 2.63, null], "ew_ma": [-0.08, 0.44, -0.68, 0.44, null], "z_comb": 1.4, "p": 0.6700664966751663, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9982, "null_sd": 2.92, "v": 28.45, "rv_gaia": 27.64, "ew_limit_ma": 1.213}, {"star": "2980492387558410112", "z": [-2.77, 2.92, -3.65, 8.14, null], "ew_ma": [-4.41, 2.91, -5.81, 13.94, null], "z_comb": 1.12, "p": 0.6729663516824159, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9691, "null_sd": 3.27, "v": 21.15, "rv_gaia": 21.6, "ew_limit_ma": 15.558}, {"star": "3250489115709122560", "z": [0.51, 0.82, -1.77, 4.0, null], "ew_ma": [0.08, 0.16, -0.37, 0.9, null], "z_comb": 1.39, "p": 0.6907154642267886, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.19, "v": 120.55, "rv_gaia": 120.58, "ew_limit_ma": 2.044}, {"star": "4745373133284418816", "z": [1.88, 2.39, 0.4, -4.21, null], "ew_ma": [0.5, 0.38, 0.06, -0.64, null], "z_comb": 2.09, "p": 0.7055647217639118, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.13, "v": 16.5, "rv_gaia": 16.94, "ew_limit_ma": 2.417}, {"star": "2473608009504466688", "z": [4.2, -1.38, -1.89, -0.39, null], "ew_ma": [1.07, -0.39, -0.57, -0.12, null], "z_comb": 1.42, "p": 0.7319634018299085, "n_lines": 4, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.17, "v": 9.25, "rv_gaia": 8.21, "ew_limit_ma": 4.297}, {"star": "4934923028038871296", "z": [-0.07, 2.69, 1.17, -0.45, null], "ew_ma": [-0.01, 0.61, 0.28, -0.1, null], "z_comb": 1.92, "p": 0.7425128743562822, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.64, "v": 12.95, "rv_gaia": 11.9, "ew_limit_ma": 2.589}, {"star": "4768170579173552896", "z": [1.56, 0.82, 1.32, 1.1, null], "ew_ma": [0.36, 0.2, 0.3, 0.29, null], "z_comb": 2.1, "p": 0.7513624318784061, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 3.64, "v": -5.25, "rv_gaia": -5.53, "ew_limit_ma": 3.328}, {"star": "2860924621205256704", "z": [2.0, -0.48, 4.83, 0.17, null], "ew_ma": [1.07, -0.18, 1.63, 0.07, null], "z_comb": 2.01, "p": 0.7616119194040298, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9937, "null_sd": 3.6, "v": -6.75, "rv_gaia": -6.75, "ew_limit_ma": 5.719}, {"star": "5596797039059063680", "z": [0.83, 1.47, -1.57, 5.27, null], "ew_ma": [0.13, 0.29, -0.27, 0.96, null], "z_comb": 2.36, "p": 0.7924603769811509, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 3.57, "v": -15.4, "rv_gaia": -15.71, "ew_limit_ma": 2.454}, {"star": "6577318075351824512", "z": [1.45, 1.95, 2.11, -1.73, null], "ew_ma": [0.37, 0.52, 0.56, -0.5, null], "z_comb": 2.36, "p": 0.8196590170491476, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 2.81, "v": 12.2, "rv_gaia": 11.95, "ew_limit_ma": 2.901}, {"star": "6226694571859532800", "z": [2.04, 3.57, -0.93, -2.06, null], "ew_ma": [0.61, 0.66, -0.27, -0.38, null], "z_comb": 3.18, "p": 0.8211589420528973, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.41, "v": 4.8, "rv_gaia": 5.14, "ew_limit_ma": 2.927}, {"star": "5567900121118276736", "z": [1.75, 1.98, 1.76, 1.23, null], "ew_ma": [0.35, 0.4, 0.36, 0.32, null], "z_comb": 3.13, "p": 0.840057997100145, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.55, "v": 29.1, "rv_gaia": 27.55, "ew_limit_ma": 2.371}, {"star": "2899947933845777920", "z": [6.51, 0.71, -5.88, -3.35, null], "ew_ma": [1.31, 0.12, -1.13, -0.83, null], "z_comb": 2.99, "p": 0.8465076746162692, "n_lines": 4, "n_spectra": 1, "twin_r": 0.997, "null_sd": 3.28, "v": 37.85, "rv_gaia": 35.78, "ew_limit_ma": 2.173}, {"star": "3256786534197166208", "z": [5.17, -0.52, 2.6, -0.39, null], "ew_ma": [1.43, -0.14, 0.71, -0.11, null], "z_comb": 3.55, "p": 0.8571571421428928, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.19, "v": 17.9, "rv_gaia": 17.62, "ew_limit_ma": 2.821}, {"star": "4423865487962417024", "z": [-3.65, 6.39, 5.03, 2.17, null], "ew_ma": [-1.12, 1.63, 1.74, 0.58, null], "z_comb": 3.36, "p": 0.8825058747062647, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.52, "v": 19.3, "rv_gaia": 18.95, "ew_limit_ma": 4.12}, {"star": "6133033601555979648", "z": [4.34, 2.56, 3.23, -2.44, null], "ew_ma": [2.41, 1.0, 0.97, -0.66, null], "z_comb": 4.8, "p": 0.8975051247437628, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 3.99, "v": 18.4, "rv_gaia": 18.05, "ew_limit_ma": 6.962}, {"star": "6286606170175267840", "z": [3.95, 3.74, -1.86, 1.83, null], "ew_ma": [1.67, 2.01, -0.75, 0.72, null], "z_comb": 5.22, "p": 0.8994550272486376, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.68, "v": -23.0, "rv_gaia": -23.19, "ew_limit_ma": 7.399}, {"star": "4976894960284258048", "z": [8.4, -0.24, -1.47, 4.68, null], "ew_ma": [2.06, -0.07, -0.51, 1.37, null], "z_comb": 6.17, "p": 0.9216539173041348, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 3.95, "v": 5.75, "rv_gaia": 5.76, "ew_limit_ma": 3.829}, {"star": "3482326708703712640", "z": [7.99, 0.25, -1.18, -2.35, null], "ew_ma": [1.77, 0.05, -0.18, -0.48, null], "z_comb": 4.81, "p": 0.9310034498275086, "n_lines": 4, "n_spectra": 1, "twin_r": 0.999, "null_sd": 3.07, "v": 7.55, "rv_gaia": 7.38, "ew_limit_ma": 2.683}, {"star": "6018047019138644480", "z": [0.26, 4.49, 1.61, 2.67, null], "ew_ma": [0.09, 1.59, 0.56, 0.91, null], "z_comb": 4.12, "p": 0.9354532273386331, "n_lines": 4, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 3.06, "v": 12.85, "rv_gaia": 12.85, "ew_limit_ma": 4.768}, {"star": "5945941905576552064", "z": [3.88, 2.54, 3.87, -2.11, null], "ew_ma": [0.81, 0.57, 0.83, -0.5, null], "z_comb": 4.66, "p": 0.9416529173541323, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9979, "null_sd": 2.89, "v": -8.9, "rv_gaia": -9.54, "ew_limit_ma": 3.19}, {"star": "4657193606465368704", "z": [3.77, 2.91, 1.59, 2.6, null], "ew_ma": [1.89, 1.8, 0.93, 1.42, null], "z_comb": 5.38, "p": 0.9453027348632569, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9912, "null_sd": 4.24, "v": 14.75, "rv_gaia": 13.99, "ew_limit_ma": 11.982}, {"star": "6770313530317154560", "z": [7.71, -0.28, 2.02, 4.75, null], "ew_ma": [1.45, -0.05, 0.48, 0.92, null], "z_comb": 6.4, "p": 0.9454027298635068, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 4.01, "v": -24.95, "rv_gaia": -24.7, "ew_limit_ma": 3.599}, {"star": "2423493369021649920", "z": [6.31, 1.85, 1.26, 2.27, null], "ew_ma": [3.55, 0.8, 0.49, 0.92, null], "z_comb": 6.23, "p": 0.9485525723713815, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.92, "v": -2.9, "rv_gaia": -2.55, "ew_limit_ma": 7.799}, {"star": "4733035238430992768", "z": [7.74, 1.42, 1.51, -4.85, null], "ew_ma": [1.19, 0.27, 0.21, -0.91, null], "z_comb": 5.45, "p": 0.951552422378881, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9981, "null_sd": 3.23, "v": 0.45, "rv_gaia": 0.66, "ew_limit_ma": 2.461}, {"star": "4341501106288171008", "z": [5.39, 3.3, 3.55, 1.69, null], "ew_ma": [2.45, 1.66, 1.62, 0.79, null], "z_comb": 6.93, "p": 0.9605519724013799, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 4.12, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 12.187}, {"star": "5730371484020807808", "z": [13.21, 1.77, -2.79, -2.26, null], "ew_ma": [3.07, 0.53, -0.64, -0.83, null], "z_comb": 9.06, "p": 0.968051597420129, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 4.03, "v": 119.4, "rv_gaia": 119.47, "ew_limit_ma": 4.528}, {"star": "6564091190988411520", "z": [4.69, 3.32, -0.05, 2.76, null], "ew_ma": [1.08, 0.95, -0.01, 0.57, null], "z_comb": 5.98, "p": 0.9745512724363782, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 2.76, "v": -7.05, "rv_gaia": -7.55, "ew_limit_ma": 3.215}, {"star": "3212075924646082176", "z": [11.6, 0.86, -6.34, 3.56, null], "ew_ma": [3.78, 0.34, -2.32, 1.76, null], "z_comb": 7.87, "p": 0.9777011149442528, "n_lines": 4, "n_spectra": 3, "twin_r": 0.9938, "null_sd": 3.67, "v": 9.7, "rv_gaia": 10.31, "ew_limit_ma": 5.406}, {"star": "5292834403845151488", "z": [4.74, 6.07, 3.31, -0.33, null], "ew_ma": [2.03, 2.24, 1.48, -0.15, null], "z_comb": 7.91, "p": 0.9782510874456277, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9906, "null_sd": 3.71, "v": 18.6, "rv_gaia": 17.48, "ew_limit_ma": 5.892}, {"star": "2648914040357320576", "z": [4.35, 5.82, 3.2, 1.88, null], "ew_ma": [2.77, 3.21, 1.67, 0.82, null], "z_comb": 7.93, "p": 0.9871006449677516, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.01, "v": -13.55, "rv_gaia": -13.41, "ew_limit_ma": 13.393}, {"star": "3812355328621651328", "z": [5.16, 3.96, 4.54, -2.51, 4.14], "ew_ma": [9.83, 6.9, 7.57, -4.08, 3.69], "z_comb": 7.33, "p": 0.9872006399680016, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9868, "null_sd": 3.74, "v": 4.0, "rv_gaia": 4.18, "ew_limit_ma": 35.764}, {"star": "5524982093479504384", "z": [6.01, 5.16, 3.35, 2.44, null], "ew_ma": [1.99, 1.73, 0.99, 0.85, null], "z_comb": 8.74, "p": 0.992250387480626, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 4.11, "v": 9.5, "rv_gaia": 9.31, "ew_limit_ma": 6.492}, {"star": "3269362645115584640", "z": [5.29, 3.49, 6.11, 1.35, null], "ew_ma": [1.41, 0.85, 1.68, 0.42, null], "z_comb": 7.44, "p": 0.9957002149892505, "n_lines": 4, "n_spectra": 4, "twin_r": 0.9953, "null_sd": 2.87, "v": 19.15, "rv_gaia": 18.73, "ew_limit_ma": 3.781}, {"star": "2750176827892427904", "z": [13.75, 3.18, -2.19, -0.47, null], "ew_ma": [5.43, 1.48, -0.83, -0.25, null], "z_comb": 10.87, "p": 0.9964501774911254, "n_lines": 4, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.56, "v": -15.45, "rv_gaia": -14.72, "ew_limit_ma": 7.708}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pm_ESPRESSO.json b/papers/short_lived_elements/data/element_Pm_ESPRESSO.json new file mode 100644 index 0000000000000000000000000000000000000000..2353437f46421b8fdc431b9a15d178302097494d --- /dev/null +++ b/papers/short_lived_elements/data/element_Pm_ESPRESSO.json @@ -0,0 +1 @@ +{"lines": [[4137.95, 0.5946083907023679], [4157.86, 0.8761025232840707], [4186.03, 1.0], [4297.78, 0.803513223740331], [4381.88, 0.12126304714981384], [5546.08, 0.13363452343538146], [5556.88, 0.10857201655999942], [5561.73, 0.17799874937638469], [5576.02, 0.2026213150981214]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "3945118643256370688", "z": [0.74, -2.87, -1.75, -1.3, -1.67, -0.46, -1.63, 0.52, -2.5], "ew_ma": [0.15, -0.53, -0.32, -0.23, -0.26, -0.04, -0.16, 0.05, -0.22], "z_comb": -3.38, "p": 0.01894905254737263, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 1.66, "v": -1.2, "rv_gaia": -1.67, "ew_limit_ma": 0.321}, {"star": "3945118265299248128", "z": [-0.75, -2.37, -0.46, -3.33, 0.37, -1.44, -1.23, 2.4, 1.64], "ew_ma": [-0.14, -0.39, -0.09, -0.49, 0.05, -0.12, -0.1, 0.21, 0.13], "z_comb": -3.05, "p": 0.057897105144742764, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9986, "null_sd": 1.88, "v": -0.85, "rv_gaia": -1.56, "ew_limit_ma": 0.401}, {"star": "4343064577465522816", "z": [-0.79, -0.89, -0.95, -2.14, -1.2, -1.21, 0.4, -2.51, -1.99], "ew_ma": [-0.28, -0.26, -0.29, -0.78, -0.73, -0.1, 0.03, -0.22, -0.14], "z_comb": -2.96, "p": 0.07049647517624119, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.48, "v": -31.3, "rv_gaia": -31.96, "ew_limit_ma": 0.982}, {"star": "2898239468873596800", "z": [-4.1, -0.12, -1.71, -2.26, -1.29, -3.35, 3.08, 1.76, -1.17], "ew_ma": [-0.3, -0.01, -0.12, -0.13, -0.12, -0.07, 0.07, 0.04, -0.03], "z_comb": -3.69, "p": 0.08349582520873956, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.6, "v": -3.2, "rv_gaia": -3.85, "ew_limit_ma": 0.305}, {"star": "5902750168276592256", "z": [0.21, 0.26, -1.12, -5.86, -5.39, -0.93, -1.29, -2.5, 3.85], "ew_ma": [0.03, 0.03, -0.11, -1.31, -0.79, -0.02, -0.03, -0.08, 0.11], "z_comb": -3.56, "p": 0.09409529523523824, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 3.36, "v": -68.1, "rv_gaia": -68.78, "ew_limit_ma": 0.578}, {"star": "5524982093479504384", "z": [-3.52, 0.41, -2.17, -1.54, 3.69, -4.8, -2.95, 0.92, -0.79], "ew_ma": [-0.6, 0.07, -0.61, -0.58, 1.0, -0.22, -0.14, 0.05, -0.04], "z_comb": -3.33, "p": 0.10874456277186141, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.01, "v": 10.05, "rv_gaia": 9.31, "ew_limit_ma": 1.023}, {"star": "6029992663310612096", "z": [-2.08, -1.62, 0.36, -2.2, 2.88, -0.69, -0.21, -3.81, 2.7], "ew_ma": [-0.49, -0.32, 0.12, -0.41, 0.46, -0.04, -0.01, -0.3, 0.21], "z_comb": -2.33, "p": 0.11469426528673567, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.67, "v": 14.8, "rv_gaia": 14.08, "ew_limit_ma": 1.214}, {"star": "1212385193677160832", "z": [1.11, 3.46, -3.17, -6.2, -2.85, -2.04, -1.75, -2.28, 2.0], "ew_ma": [0.28, 0.65, -0.82, -1.54, -1.13, -0.11, -0.1, -0.18, 0.14], "z_comb": -3.1, "p": 0.12469376531173441, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.84, "v": -38.2, "rv_gaia": -38.94, "ew_limit_ma": 1.443}, {"star": "2376087581593256448", "z": [0.82, 2.21, -3.16, -3.12, 3.14, -2.11, -2.51, -2.8, -9.41], "ew_ma": [0.14, 0.2, -0.46, -0.61, 0.84, -0.05, -0.07, -0.1, -0.31], "z_comb": -3.43, "p": 0.13984300784960751, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.38, "v": -9.55, "rv_gaia": -10.26, "ew_limit_ma": 0.673}, {"star": "4367026303085396352", "z": [2.69, -0.25, -3.72, -2.72, 0.22, 1.72, -0.32, -1.85, 0.63], "ew_ma": [0.38, -0.03, -0.44, -0.35, 0.07, 0.05, -0.01, -0.07, 0.02], "z_comb": -2.66, "p": 0.14299285035748213, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9986, "null_sd": 2.6, "v": -35.2, "rv_gaia": -35.94, "ew_limit_ma": 0.479}, {"star": "4341501106288171008", "z": [-2.75, 1.55, -3.49, -1.24, 2.03, -3.04, -2.38, -2.35, 1.42], "ew_ma": [-0.7, 0.42, -0.87, -0.3, 0.54, -0.17, -0.14, -0.17, 0.09], "z_comb": -3.13, "p": 0.1432928353582321, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9976, "null_sd": 3.18, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 1.506}, {"star": "648998734141447296", "z": [-3.61, 0.91, -3.55, -0.18, -0.23, 2.54, 0.42, 2.19, 1.86], "ew_ma": [-0.82, 0.24, -0.81, -0.03, -0.05, 0.24, 0.04, 0.2, 0.16], "z_comb": -2.31, "p": 0.14874256287185642, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.21, "v": 21.15, "rv_gaia": 20.52, "ew_limit_ma": 0.976}, {"star": "5266722205277801984", "z": [-0.31, 1.26, -3.83, 0.58, 1.63, 1.9, -4.08, 0.29, -2.55], "ew_ma": [-0.04, 0.16, -0.53, 0.05, 0.14, 0.07, -0.15, 0.01, -0.11], "z_comb": -1.71, "p": 0.17269136543172842, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.23, "v": 18.25, "rv_gaia": 17.57, "ew_limit_ma": 0.514}, {"star": "3584074376569429248", "z": [0.15, 1.56, -2.68, -2.2, -1.18, 0.44, -1.05, 0.18, 2.03], "ew_ma": [0.04, 0.44, -0.83, -0.57, -0.27, 0.06, -0.14, 0.02, 0.29], "z_comb": -1.62, "p": 0.17624118794060298, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9964, "null_sd": 1.67, "v": 21.5, "rv_gaia": 20.73, "ew_limit_ma": 0.777}, {"star": "6489771832811810432", "z": [-0.27, 2.89, -3.17, -6.45, -0.4, -1.73, -1.05, 1.52, 3.21], "ew_ma": [-0.1, 1.02, -0.97, -1.96, -0.1, -0.09, -0.05, 0.12, 0.25], "z_comb": -3.22, "p": 0.18204089795510225, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9968, "null_sd": 4.4, "v": -30.15, "rv_gaia": -31.05, "ew_limit_ma": 2.87}, {"star": "6141742283401003264", "z": [1.58, 2.63, -3.33, -4.01, 1.64, -11.69, 3.12, -1.34, -3.15], "ew_ma": [0.32, 0.54, -0.73, -0.9, 0.39, -0.34, 0.11, -0.06, -0.19], "z_comb": -3.07, "p": 0.22908854557272137, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.31, "v": -12.3, "rv_gaia": -13.03, "ew_limit_ma": 2.44}, {"star": "1212385193677161088", "z": [3.02, -0.43, 0.17, -4.67, -3.19, 0.12, 0.05, -2.12, 1.38], "ew_ma": [0.64, -0.07, 0.03, -1.18, -0.78, 0.01, 0.0, -0.17, 0.1], "z_comb": -1.55, "p": 0.23208839558022099, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9972, "null_sd": 2.27, "v": -38.2, "rv_gaia": -38.72, "ew_limit_ma": 0.743}, {"star": "2619706544757416192", "z": [1.62, 1.13, -2.6, -3.36, 1.07, -3.81, -0.56, -4.01, 6.25], "ew_ma": [0.31, 0.19, -0.41, -0.67, 0.22, -0.22, -0.03, -0.23, 0.34], "z_comb": -1.9, "p": 0.2327883605819709, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.57, "v": -20.2, "rv_gaia": -20.78, "ew_limit_ma": 0.915}, {"star": "6501182220888038784", "z": [-1.79, -1.23, -0.94, -0.62, -2.27, 2.36, 2.57, 0.72, 4.62], "ew_ma": [-0.29, -0.23, -0.15, -0.13, -0.6, 0.16, 0.18, 0.05, 0.28], "z_comb": -1.3, "p": 0.25593720313984303, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9984, "null_sd": 2.27, "v": 23.95, "rv_gaia": 23.28, "ew_limit_ma": 0.749}, {"star": "6369544118965772416", "z": [2.46, 1.28, -3.77, -0.26, 2.86, -8.04, 0.69, -0.61, -6.2], "ew_ma": [0.55, 0.14, -0.65, -0.05, 0.77, -0.24, 0.02, -0.02, -0.28], "z_comb": -2.01, "p": 0.2568371581420929, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 3.35, "v": -10.25, "rv_gaia": -11.0, "ew_limit_ma": 1.152}, {"star": "3584074380866605440", "z": [0.66, 0.57, 0.22, -4.24, -2.43, 2.75, 1.18, -0.67, 1.11], "ew_ma": [0.26, 0.24, 0.09, -1.38, -0.66, 0.42, 0.17, -0.1, 0.16], "z_comb": -1.17, "p": 0.25853707314634267, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9961, "null_sd": 2.15, "v": 20.8, "rv_gaia": 19.78, "ew_limit_ma": 1.894}, {"star": "3480332916165099904", "z": [0.21, -0.81, 0.26, -4.27, 0.71, 2.39, 0.19, 0.27, 2.77], "ew_ma": [0.02, -0.07, 0.03, -0.45, 0.11, 0.06, 0.0, 0.01, 0.08], "z_comb": -1.61, "p": 0.2854357282135893, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.69, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.558}, {"star": "5064574724769475968", "z": [1.75, -3.08, -2.52, -0.66, -0.63, 0.39, -0.41, 1.29, 0.42], "ew_ma": [0.44, -0.53, -0.55, -0.15, -0.14, 0.02, -0.02, 0.07, 0.02], "z_comb": -2.63, "p": 0.28928553572321386, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.82, "v": 9.9, "rv_gaia": 9.77, "ew_limit_ma": 2.111}, {"star": "3507879565090229888", "z": [-2.46, -0.78, 0.11, -1.67, 3.78, 0.89, -1.58, 3.77, 2.35], "ew_ma": [-0.33, -0.12, 0.02, -0.16, 0.37, 0.02, -0.04, 0.11, 0.06], "z_comb": -1.07, "p": 0.3175341232938353, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 3.1, "v": -7.2, "rv_gaia": -7.86, "ew_limit_ma": 1.155}, {"star": "2494066897240089984", "z": [-4.26, 0.28, 0.77, 0.45, -0.6, -3.46, 0.58, -0.44, -2.25], "ew_ma": [-0.55, 0.03, 0.11, 0.05, -0.08, -0.13, 0.02, -0.02, -0.08], "z_comb": -1.27, "p": 0.32923353832308383, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9987, "null_sd": 2.78, "v": -4.6, "rv_gaia": -5.33, "ew_limit_ma": 0.887}, {"star": "2533723670313663872", "z": [-1.38, -1.34, 0.25, 1.05, -0.03, 0.76, 0.36, -0.59, -1.62], "ew_ma": [-0.32, -0.24, 0.05, 0.17, -0.01, 0.06, 0.03, -0.05, -0.15], "z_comb": -0.71, "p": 0.3474326283685816, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.58, "v": 17.7, "rv_gaia": 16.81, "ew_limit_ma": 2.77}, {"star": "6569895822110445440", "z": [-1.98, 0.79, -0.52, -0.8, 1.26, -1.51, 0.45, -3.11, 4.3], "ew_ma": [-0.25, 0.12, -0.07, -0.11, 0.15, -0.08, 0.03, -0.21, 0.28], "z_comb": -0.78, "p": 0.35138243087845605, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9992, "null_sd": 1.8, "v": -18.4, "rv_gaia": -19.21, "ew_limit_ma": 0.522}, {"star": "6854626246593473792", "z": [1.9, -0.66, 1.95, -5.35, -3.75, -2.66, 3.33, -2.38, 4.54], "ew_ma": [0.57, -0.11, 0.46, -1.23, -2.29, -0.09, 0.11, -0.1, 0.17], "z_comb": -1.03, "p": 0.351582420878956, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.58, "v": -41.4, "rv_gaia": -42.09, "ew_limit_ma": 1.143}, {"star": "6692069568458919040", "z": [1.67, 2.6, -3.02, -1.54, 1.29, 0.48, 2.43, -0.13, -4.53], "ew_ma": [0.1, 0.14, -0.17, -0.09, 0.08, 0.01, 0.06, -0.0, -0.15], "z_comb": -0.85, "p": 0.3614819259037048, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9974, "null_sd": 2.56, "v": 15.8, "rv_gaia": 15.36, "ew_limit_ma": 0.348}, {"star": "3975129194660883328", "z": [0.05, 1.18, -0.99, -1.3, 2.79, -0.21, 1.92, -0.19, -2.36], "ew_ma": [0.01, 0.32, -0.26, -0.3, 0.62, -0.03, 0.27, -0.03, -0.31], "z_comb": -0.57, "p": 0.3617319134043298, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 1.48, "v": 6.75, "rv_gaia": 5.97, "ew_limit_ma": 0.736}, {"star": "6564091190988411520", "z": [1.47, -0.76, -0.6, -1.51, 0.62, -0.18, -3.33, -0.46, 1.07], "ew_ma": [0.1, -0.06, -0.06, -0.18, 0.06, -0.0, -0.07, -0.01, 0.02], "z_comb": -1.05, "p": 0.4006799660016999, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.88, "v": -6.85, "rv_gaia": -7.55, "ew_limit_ma": 0.433}, {"star": "5663558453071724288", "z": [-0.79, -0.35, -0.38, 2.74, -2.24, -1.13, -0.85, -2.06, -9.04], "ew_ma": [-0.11, -0.04, -0.06, 0.5, -0.31, -0.04, -0.03, -0.1, -0.32], "z_comb": -0.98, "p": 0.4041797910104495, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9946, "null_sd": 3.55, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 1.035}, {"star": "3948424496764080640", "z": [2.28, 0.93, -0.58, -2.21, -0.81, -2.24, 0.34, 2.23, -0.89], "ew_ma": [0.69, 0.24, -0.13, -0.41, -0.19, -0.18, 0.03, 0.19, -0.08], "z_comb": -0.19, "p": 0.41107944602769864, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.51, "v": -8.0, "rv_gaia": -8.56, "ew_limit_ma": 1.911}, {"star": "5452492082132835840", "z": [-0.61, 0.34, -0.85, 0.31, -1.58, 0.92, 1.62, 2.53, 1.26], "ew_ma": [-0.06, 0.03, -0.09, 0.04, -0.21, 0.05, 0.09, 0.15, 0.07], "z_comb": 0.09, "p": 0.4535773211339433, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.19, "v": 13.5, "rv_gaia": 12.83, "ew_limit_ma": 0.466}, {"star": "6189254689097655552", "z": [0.61, 0.44, -1.4, -2.21, -1.73, 3.1, 1.37, 1.11, 7.53], "ew_ma": [0.08, 0.05, -0.2, -0.17, -0.16, 0.09, 0.04, 0.05, 0.27], "z_comb": -0.21, "p": 0.47637618119094044, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 3.57, "v": -3.2, "rv_gaia": -3.87, "ew_limit_ma": 0.71}, {"star": "3812355328621651328", "z": [-3.65, -1.59, 0.53, 3.05, -1.89, 1.72, 1.79, 3.87, -2.2], "ew_ma": [-0.63, -0.19, 0.05, 0.58, -0.21, 0.08, 0.12, 0.3, -0.1], "z_comb": -0.08, "p": 0.47967601619919004, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 2.49, "v": 4.75, "rv_gaia": 4.18, "ew_limit_ma": 0.671}, {"star": "2966316109264052096", "z": [3.64, -2.25, -0.31, -0.4, -1.95, 1.72, 0.6, 1.21, -0.22], "ew_ma": [1.32, -0.71, -0.1, -0.1, -0.64, 0.16, 0.07, 0.16, -0.02], "z_comb": -0.12, "p": 0.4850257487125644, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9958, "null_sd": 2.97, "v": 43.05, "rv_gaia": 42.46, "ew_limit_ma": 2.17}, {"star": "5951165616611763456", "z": [-4.52, 2.89, 0.34, -2.23, -5.63, 1.36, -0.9, 0.59, 5.97], "ew_ma": [-0.49, 0.25, 0.05, -0.26, -0.87, 0.04, -0.02, 0.02, 0.17], "z_comb": -0.53, "p": 0.48597570121493927, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.1, "v": 26.5, "rv_gaia": 25.96, "ew_limit_ma": 0.824}, {"star": "4733035238430992768", "z": [-2.04, -0.32, 0.48, 1.03, 1.11, -3.56, -2.42, 1.33, 2.34], "ew_ma": [-0.17, -0.03, 0.04, 0.13, 0.18, -0.09, -0.07, 0.04, 0.07], "z_comb": -0.05, "p": 0.5025248737563122, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.13, "v": 1.35, "rv_gaia": 0.66, "ew_limit_ma": 0.826}, {"star": "6832155218215202944", "z": [-2.28, -5.33, 2.37, 2.0, 4.2, 5.05, 0.28, 3.07, -3.72], "ew_ma": [-0.61, -1.14, 0.9, 0.47, 1.15, 0.35, 0.02, 0.21, -0.34], "z_comb": -0.62, "p": 0.5158242087895605, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9958, "null_sd": 3.12, "v": 15.25, "rv_gaia": 14.63, "ew_limit_ma": 1.952}, {"star": "3654496279558010624", "z": [3.58, 0.91, -2.76, 0.52, 4.13, -0.16, 0.18, 1.14, -5.43], "ew_ma": [0.55, 0.15, -0.49, 0.11, 0.87, -0.01, 0.01, 0.05, -0.25], "z_comb": 0.11, "p": 0.5298735063246838, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.36, "v": -18.55, "rv_gaia": -19.21, "ew_limit_ma": 1.467}, {"star": "627699888238838528", "z": [-1.28, -1.8, 2.31, 1.0, -0.26, -2.69, 1.66, -2.42, -0.51], "ew_ma": [-0.29, -0.41, 0.57, 0.2, -0.05, -0.23, 0.14, -0.21, -0.05], "z_comb": 0.02, "p": 0.5322233888305584, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9985, "null_sd": 1.98, "v": 31.5, "rv_gaia": 30.81, "ew_limit_ma": 1.418}, {"star": "6128366415218881536", "z": [-3.42, 0.36, 1.16, 0.69, 1.09, -0.13, 1.38, -1.95, -1.02], "ew_ma": [-0.42, 0.04, 0.15, 0.05, 0.08, -0.0, 0.05, -0.08, -0.04], "z_comb": -0.17, "p": 0.536723163841808, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 2.97, "v": 31.3, "rv_gaia": 30.47, "ew_limit_ma": 0.798}, {"star": "5287961677550103424", "z": [-3.33, 1.38, 1.83, -0.85, -2.26, 0.87, 1.43, -0.42, -1.12], "ew_ma": [-0.49, 0.16, 0.29, -0.12, -0.36, 0.03, 0.06, -0.02, -0.05], "z_comb": 0.05, "p": 0.543972801359932, "n_lines": 9, "n_spectra": 4, "twin_r": 0.999, "null_sd": 3.08, "v": 43.15, "rv_gaia": 42.58, "ew_limit_ma": 1.131}, {"star": "5266348577487273344", "z": [2.62, 0.3, -0.32, 2.11, 0.34, -0.62, -1.29, -2.16, -9.27], "ew_ma": [0.27, 0.03, -0.03, 0.2, 0.05, -0.02, -0.03, -0.07, -0.28], "z_comb": 0.45, "p": 0.5466726663666817, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.68, "v": 14.3, "rv_gaia": 13.6, "ew_limit_ma": 1.166}, {"star": "4722111590409480064", "z": [-0.25, -2.79, 1.56, 3.08, 2.73, 1.38, -3.01, -0.89, -2.58], "ew_ma": [-0.03, -0.3, 0.18, 0.31, 0.43, 0.03, -0.06, -0.03, -0.06], "z_comb": 0.56, "p": 0.5507224638768061, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9977, "null_sd": 4.37, "v": 13.0, "rv_gaia": 12.44, "ew_limit_ma": 1.308}, {"star": "6321929733564266752", "z": [1.25, 0.92, -0.29, -0.19, -2.28, 0.51, 1.29, -1.8, 3.36], "ew_ma": [1.17, 0.73, -0.22, -0.15, -1.54, 0.12, 0.28, -0.41, 0.81], "z_comb": 0.82, "p": 0.5727213639318034, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9862, "null_sd": 2.62, "v": -31.55, "rv_gaia": -32.32, "ew_limit_ma": 6.572}, {"star": "2391838429257482496", "z": [-1.49, -1.2, 2.23, 0.2, 0.83, 2.38, 0.63, -1.37, 1.25], "ew_ma": [-0.14, -0.12, 0.3, 0.02, 0.11, 0.09, 0.02, -0.05, 0.05], "z_comb": 0.56, "p": 0.584320783960802, "n_lines": 9, "n_spectra": 4, "twin_r": 0.999, "null_sd": 2.38, "v": 12.85, "rv_gaia": 12.3, "ew_limit_ma": 0.692}, {"star": "2554032474712538880", "z": [-2.72, 1.08, -0.21, 0.18, 1.21, 1.45, -0.31, 1.18, 4.32], "ew_ma": [-0.46, 0.19, -0.03, 0.02, 0.14, 0.1, -0.02, 0.09, 0.27], "z_comb": 0.39, "p": 0.592070396480176, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.26, "v": 19.95, "rv_gaia": 19.4, "ew_limit_ma": 1.175}, {"star": "5726982995343100928", "z": [0.5, -3.55, 0.46, 2.73, 3.65, 0.82, -1.14, 2.82, 0.34], "ew_ma": [0.04, -0.28, 0.04, 0.21, 0.31, 0.02, -0.03, 0.08, 0.01], "z_comb": 0.49, "p": 0.5930703464826759, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.66, "v": 30.7, "rv_gaia": 30.09, "ew_limit_ma": 0.591}, {"star": "4176501313320676992", "z": [5.39, -0.14, 0.26, -1.74, 2.61, -1.11, 3.84, -1.8, -1.97], "ew_ma": [0.88, -0.02, 0.04, -0.21, 0.87, -0.03, 0.1, -0.05, -0.05], "z_comb": 1.06, "p": 0.6014199290035498, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.47, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.743}, {"star": "2835207319109249920", "z": [3.69, -0.79, -0.99, 0.99, 4.67, 1.17, 2.17, -4.09, 1.27], "ew_ma": [0.71, -0.12, -0.15, 0.21, 1.31, 0.04, 0.06, -0.14, 0.04], "z_comb": 1.06, "p": 0.6023198840057997, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.19, "v": -32.55, "rv_gaia": -33.33, "ew_limit_ma": 1.217}, {"star": "3250489115709122560", "z": [1.63, 0.19, -1.43, 0.24, -1.94, -1.72, -1.28, 0.1, 8.83], "ew_ma": [0.86, 0.08, -0.66, 0.15, -0.89, -0.05, -0.07, 0.01, 0.64], "z_comb": 0.64, "p": 0.6091695415229239, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9721, "null_sd": 11.7, "v": 121.15, "rv_gaia": 120.58, "ew_limit_ma": 26.125}, {"star": "5640565607657897728", "z": [6.0, -2.55, -0.08, -0.09, 3.66, 0.32, 2.24, 0.24, -0.24], "ew_ma": [0.99, -0.39, -0.01, -0.01, 0.61, 0.01, 0.09, 0.01, -0.01], "z_comb": 1.12, "p": 0.6194690265486725, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.89, "v": 15.2, "rv_gaia": 14.67, "ew_limit_ma": 2.476}, {"star": "4048636941542753152", "z": [-1.71, -0.97, 1.57, 3.4, 2.45, -1.1, -1.16, 2.69, -7.05], "ew_ma": [-0.34, -0.22, 0.35, 0.59, 0.41, -0.06, -0.07, 0.17, -0.42], "z_comb": 0.89, "p": 0.6250687465626719, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9978, "null_sd": 3.0, "v": 22.15, "rv_gaia": 21.37, "ew_limit_ma": 1.449}, {"star": "5596797039059063680", "z": [3.82, -0.81, 0.05, -0.88, 3.44, -0.13, 2.01, 0.1, 1.28], "ew_ma": [0.54, -0.07, 0.01, -0.1, 0.71, -0.0, 0.07, 0.0, 0.05], "z_comb": 1.06, "p": 0.6297685115744213, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.79, "v": -14.95, "rv_gaia": -15.71, "ew_limit_ma": 0.787}, {"star": "5461620846141553024", "z": [-1.33, 1.0, -2.9, 4.2, 3.29, 5.21, -4.89, 2.31, -4.35], "ew_ma": [-0.11, 0.07, -0.21, 0.43, 0.33, 0.12, -0.11, 0.06, -0.12], "z_comb": 0.38, "p": 0.6301684915754212, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.78, "v": 27.6, "rv_gaia": 26.94, "ew_limit_ma": 0.541}, {"star": "2964794041574370560", "z": [-1.28, 0.45, -0.14, 2.75, 1.51, -0.02, -0.63, 1.87, -8.56], "ew_ma": [-0.12, 0.02, -0.01, 0.13, 0.09, -0.0, -0.01, 0.04, -0.18], "z_comb": 0.24, "p": 0.6335183240837958, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.46, "v": 29.7, "rv_gaia": 29.0, "ew_limit_ma": 0.332}, {"star": "3646061719703116032", "z": [-1.44, 2.09, 1.41, -1.42, -5.52, 0.76, 2.59, -3.15, 3.92], "ew_ma": [-0.17, 0.21, 0.18, -0.2, -0.95, 0.02, 0.08, -0.11, 0.11], "z_comb": 0.7, "p": 0.6673166341682916, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.57, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.767}, {"star": "6524024506237594368", "z": [0.86, 4.93, -2.74, 2.74, -1.32, -3.87, -1.02, 0.27, -7.22], "ew_ma": [0.11, 0.46, -0.42, 0.31, -0.15, -0.1, -0.03, 0.01, -0.29], "z_comb": 1.23, "p": 0.6740162991850408, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 4.34, "v": 33.15, "rv_gaia": 32.4, "ew_limit_ma": 1.632}, {"star": "3975223065466473216", "z": [-0.56, 0.38, -0.93, 0.41, 3.2, 0.23, 2.02, 2.51, 0.73], "ew_ma": [-0.17, 0.11, -0.28, 0.09, 0.64, 0.03, 0.29, 0.36, 0.11], "z_comb": 0.37, "p": 0.6757162141892905, "n_lines": 9, "n_spectra": 1, "twin_r": 0.9969, "null_sd": 1.49, "v": 6.45, "rv_gaia": 5.8, "ew_limit_ma": 1.138}, {"star": "5381537023379295232", "z": [-4.09, 1.42, -1.49, 4.76, 1.59, 0.15, -0.49, 2.13, -1.33], "ew_ma": [-0.37, 0.08, -0.11, 0.34, 0.14, 0.0, -0.01, 0.04, -0.02], "z_comb": 0.83, "p": 0.6810159492025398, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 2.76, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 0.415}, {"star": "6180035765135232128", "z": [-1.9, 1.3, 1.61, 0.13, -5.06, -0.34, 0.52, -1.4, 6.24], "ew_ma": [-0.27, 0.12, 0.29, 0.03, -0.93, -0.01, 0.01, -0.05, 0.18], "z_comb": 1.26, "p": 0.6874656267186641, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.16, "v": 65.7, "rv_gaia": 64.94, "ew_limit_ma": 1.067}, {"star": "4768170579173552896", "z": [2.66, -0.4, 1.97, 0.55, -0.33, -3.44, 0.68, -1.87, -1.31], "ew_ma": [0.22, -0.03, 0.15, 0.04, -0.03, -0.11, 0.02, -0.07, -0.04], "z_comb": 1.54, "p": 0.7227638618069097, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9994, "null_sd": 2.79, "v": -4.8, "rv_gaia": -5.53, "ew_limit_ma": 0.554}, {"star": "6226694571859532800", "z": [-2.51, -0.62, 0.98, 4.32, 0.21, -0.35, 0.77, 2.24, 1.94], "ew_ma": [-0.7, -0.17, 0.21, 0.59, 0.03, -0.02, 0.06, 0.19, 0.1], "z_comb": 1.93, "p": 0.728013599320034, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 2.98, "v": 5.8, "rv_gaia": 5.14, "ew_limit_ma": 2.021}, {"star": "5341673851394297600", "z": [-2.76, 3.42, 3.19, -2.74, -4.78, -0.08, 0.57, 0.82, 2.78], "ew_ma": [-0.75, 0.69, 1.31, -0.71, -1.6, -0.0, 0.03, 0.05, 0.15], "z_comb": 1.49, "p": 0.7386130693465327, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 2.87, "v": 50.2, "rv_gaia": 49.52, "ew_limit_ma": 2.463}, {"star": "5493588665684618752", "z": [1.08, -1.36, 3.51, 0.02, -0.56, -1.14, -0.72, 1.81, 0.13], "ew_ma": [0.16, -0.22, 0.71, 0.0, -0.13, -0.05, -0.03, 0.09, 0.01], "z_comb": 1.78, "p": 0.7404629768511575, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.73, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 1.336}, {"star": "4079684229322231040", "z": [1.16, -0.48, 0.26, 0.33, 1.11, -2.07, 0.08, 2.08, 4.89], "ew_ma": [0.13, -0.03, 0.02, 0.02, 0.08, -0.04, 0.0, 0.06, 0.13], "z_comb": 1.19, "p": 0.7405129743512824, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.93, "v": 37.75, "rv_gaia": 37.03, "ew_limit_ma": 0.637}, {"star": "4623036865373793408", "z": [-2.21, 0.64, 0.76, 2.74, 0.75, 5.98, -0.78, 1.47, -3.68], "ew_ma": [-0.18, 0.04, 0.08, 0.23, 0.08, 0.11, -0.01, 0.04, -0.08], "z_comb": 1.49, "p": 0.7407629618519074, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9994, "null_sd": 2.73, "v": 11.55, "rv_gaia": 10.71, "ew_limit_ma": 0.546}, {"star": "3550081879381593728", "z": [-0.3, -2.53, 0.98, 3.58, -0.22, 0.09, 0.22, 2.12, 0.51], "ew_ma": [-0.14, -1.02, 0.46, 1.45, -0.09, 0.01, 0.04, 0.38, 0.12], "z_comb": 1.15, "p": 0.7458627068646567, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9786, "null_sd": 1.94, "v": 24.05, "rv_gaia": 23.76, "ew_limit_ma": 3.018}, {"star": "6166183842771027328", "z": [-1.53, -1.52, 4.05, 2.7, 7.61, 1.08, -1.8, -0.51, -5.89], "ew_ma": [-0.13, -0.14, 0.28, 0.36, 0.6, 0.03, -0.04, -0.02, -0.17], "z_comb": 2.1, "p": 0.7629118544072796, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 3.33, "v": -16.75, "rv_gaia": -17.46, "ew_limit_ma": 0.718}, {"star": "627699888238838272", "z": [-1.63, -1.54, 1.53, 4.84, -1.44, -0.39, 0.09, -0.2, -0.95], "ew_ma": [-0.26, -0.17, 0.21, 0.5, -0.17, -0.02, 0.01, -0.01, -0.07], "z_comb": 1.56, "p": 0.7654617269136543, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 1.99, "v": 31.15, "rv_gaia": 30.59, "ew_limit_ma": 0.589}, {"star": "6786890622306367872", "z": [3.31, 1.51, -0.37, -0.81, 0.2, 1.45, -0.16, 0.44, -2.99], "ew_ma": [0.55, 0.27, -0.07, -0.2, 0.06, 0.14, -0.01, 0.04, -0.26], "z_comb": 1.15, "p": 0.7895605219739013, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9992, "null_sd": 1.73, "v": -28.75, "rv_gaia": -29.46, "ew_limit_ma": 0.903}, {"star": "5760701787150565888", "z": [0.86, -2.99, 2.21, 4.17, 2.97, 0.98, 1.27, 0.15, -4.12], "ew_ma": [0.18, -0.38, 0.43, 0.55, 0.43, 0.03, 0.04, 0.01, -0.16], "z_comb": 1.93, "p": 0.791210439478026, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.25, "v": 32.65, "rv_gaia": 31.99, "ew_limit_ma": 1.331}, {"star": "5427207918907843072", "z": [-2.52, 2.39, 3.29, -0.63, -8.43, 4.24, 0.63, -1.01, 3.21], "ew_ma": [-0.65, 0.27, 0.84, -0.13, -0.89, 0.11, 0.02, -0.03, 0.14], "z_comb": 2.04, "p": 0.7964101794910254, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.69, "v": 65.7, "rv_gaia": 65.01, "ew_limit_ma": 1.204}, {"star": "3538141457982396928", "z": [-3.04, 2.05, 0.02, 4.2, 0.94, 2.72, -0.1, 2.7, -0.51], "ew_ma": [-0.28, 0.18, 0.0, 0.32, 0.08, 0.12, -0.0, 0.13, -0.02], "z_comb": 2.49, "p": 0.8062096895155242, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.64, "v": 4.8, "rv_gaia": 4.25, "ew_limit_ma": 0.654}, {"star": "5669349344592951936", "z": [0.69, 2.28, 0.97, 2.34, 1.08, -1.4, -0.61, -0.39, -4.26], "ew_ma": [0.15, 0.3, 0.19, 0.6, 0.25, -0.07, -0.03, -0.02, -0.22], "z_comb": 2.47, "p": 0.8167091645417729, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.99, "v": 35.55, "rv_gaia": 35.32, "ew_limit_ma": 1.607}, {"star": "5731252295913584768", "z": [-1.36, 1.92, -0.87, 3.72, -1.63, 0.58, 0.51, -1.4, 13.08], "ew_ma": [-0.29, 0.34, -0.18, 0.88, -0.29, 0.02, 0.02, -0.07, 0.6], "z_comb": 3.14, "p": 0.8225588720563972, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9968, "null_sd": 4.19, "v": 67.35, "rv_gaia": 66.88, "ew_limit_ma": 2.532}, {"star": "5579783574073770112", "z": [-2.79, 2.21, 1.7, 2.21, -0.79, 3.68, -0.01, -2.07, -1.48], "ew_ma": [-0.72, 0.39, 0.55, 0.36, -0.15, 0.2, -0.0, -0.12, -0.06], "z_comb": 2.05, "p": 0.8316084195790211, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.23, "v": 37.45, "rv_gaia": 36.91, "ew_limit_ma": 2.154}, {"star": "2343647384368388608", "z": [0.97, 1.4, 4.7, -1.16, -5.97, 0.81, -0.85, -3.19, 0.63], "ew_ma": [0.17, 0.11, 0.76, -0.16, -0.81, 0.03, -0.03, -0.12, 0.02], "z_comb": 2.61, "p": 0.8421578921053947, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9989, "null_sd": 2.66, "v": 57.4, "rv_gaia": 56.73, "ew_limit_ma": 0.782}, {"star": "5855730584310531200", "z": [-0.48, 2.39, 2.2, 0.89, -2.46, 0.11, 2.96, -1.33, 10.14], "ew_ma": [-0.15, 0.48, 0.55, 0.24, -0.67, 0.0, 0.13, -0.1, 0.58], "z_comb": 3.87, "p": 0.871756412179391, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 3.73, "v": 105.3, "rv_gaia": 104.53, "ew_limit_ma": 3.976}, {"star": "5691782130578684544", "z": [0.14, -0.97, 4.82, 2.68, 0.08, 3.77, 0.96, 2.67, -2.43], "ew_ma": [0.02, -0.12, 0.65, 0.32, 0.01, 0.11, 0.03, 0.12, -0.08], "z_comb": 4.01, "p": 0.8756562171891406, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.43, "v": 8.9, "rv_gaia": 8.18, "ew_limit_ma": 1.436}, {"star": "3101382419728401408", "z": [2.65, 1.19, 3.34, -0.04, -5.15, 1.73, -0.67, 2.78, 1.8], "ew_ma": [0.41, 0.08, 0.64, -0.01, -0.77, 0.06, -0.02, 0.11, 0.07], "z_comb": 3.72, "p": 0.9147042647867607, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.34, "v": 54.45, "rv_gaia": 53.99, "ew_limit_ma": 0.892}, {"star": "3835743693290897152", "z": [4.85, 0.65, 1.47, 0.96, 7.01, -2.32, -3.05, -1.01, 0.54], "ew_ma": [0.46, 0.07, 0.13, 0.08, 0.77, -0.07, -0.11, -0.04, 0.02], "z_comb": 3.44, "p": 0.9382530873456327, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.33, "v": -17.1, "rv_gaia": -17.81, "ew_limit_ma": 0.59}, {"star": "3574377616021489024", "z": [1.06, -0.79, 3.02, 1.65, 0.18, 1.74, 0.62, 1.34, 0.61], "ew_ma": [0.19, -0.13, 0.53, 0.25, 0.02, 0.15, 0.05, 0.11, 0.05], "z_comb": 2.93, "p": 0.9584020798960052, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 1.67, "v": 2.8, "rv_gaia": 1.88, "ew_limit_ma": 0.986}, {"star": "3775795982881589376", "z": [1.85, 1.27, 2.58, 4.14, -1.9, 0.78, 2.74, 1.75, 0.58], "ew_ma": [0.32, 0.17, 0.64, 0.4, -0.37, 0.03, 0.09, 0.06, 0.02], "z_comb": 5.14, "p": 0.9655517224138793, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.93, "v": 30.5, "rv_gaia": 29.93, "ew_limit_ma": 1.983}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pm_FEROS.json b/papers/short_lived_elements/data/element_Pm_FEROS.json new file mode 100644 index 0000000000000000000000000000000000000000..99ff64584f40872ff8590771cbf126bb9f840a45 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pm_FEROS.json @@ -0,0 +1 @@ +{"lines": [[4137.95, 0.5946083907023679], [4157.86, 0.8761025232840707], [4186.03, 1.0], [4297.78, 0.803513223740331], [4381.88, 0.12126304714981384], [5546.08, 0.13363452343538146], [5556.88, 0.10857201655999942], [5561.73, 0.17799874937638469], [5576.02, 0.2026213150981214]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "5888394257280681856", "z": [1.6, -0.07, -10.42, -10.45, 2.19, -15.42, -6.65, 4.5, -3.47], "ew_ma": [3.23, -0.11, -21.39, -14.23, 3.34, -7.9, -2.53, 1.84, -1.31], "z_comb": -11.98, "p": 0.03419829008549573, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9791, "null_sd": 6.01, "v": -8.6, "rv_gaia": -8.77, "ew_limit_ma": 16.206}, {"star": "3639760521643499776", "z": [-3.51, 0.83, -2.8, -8.02, 1.41, 0.99, -2.01, 3.58, 1.5], "ew_ma": [-1.06, 0.21, -0.93, -2.43, 0.42, 0.11, -0.22, 0.4, 0.12], "z_comb": -5.64, "p": 0.0839458027098645, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 4.03, "v": -11.95, "rv_gaia": -12.39, "ew_limit_ma": 1.715}, {"star": "5902750168276592256", "z": [1.53, -2.63, -1.11, -10.75, -4.61, -0.75, 4.88, -4.51, 7.59], "ew_ma": [0.53, -0.76, -0.3, -5.84, -2.48, -0.07, 0.45, -0.44, 0.76], "z_comb": -6.2, "p": 0.09134543272836358, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.29, "v": -68.35, "rv_gaia": -68.78, "ew_limit_ma": 2.347}, {"star": "3946438125929224320", "z": [0.74, -2.79, -3.1, -2.67, -0.35, 0.69, -2.09, -1.75, 3.96], "ew_ma": [0.11, -0.45, -0.55, -0.53, -0.05, 0.08, -0.19, -0.15, 0.34], "z_comb": -4.08, "p": 0.10414479276036198, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.32, "v": 2.25, "rv_gaia": 1.76, "ew_limit_ma": 0.788}, {"star": "3650718804281798912", "z": [1.11, -5.46, -3.08, -2.36, -0.48, 0.7, -1.78, 2.18, 1.06], "ew_ma": [1.17, -3.7, -3.38, -1.34, -0.37, 0.2, -0.47, 0.62, 0.27], "z_comb": -5.1, "p": 0.1063446827658617, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9864, "null_sd": 5.31, "v": -12.2, "rv_gaia": -12.52, "ew_limit_ma": 5.878}, {"star": "3256786534197166208", "z": [-2.16, -2.45, -2.26, -2.2, 4.32, 4.85, 1.04, -1.52, 1.67], "ew_ma": [-0.44, -0.42, -0.46, -0.54, 0.88, 0.54, 0.13, -0.22, 0.16], "z_comb": -3.6, "p": 0.1447927603619819, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9948, "null_sd": 3.72, "v": 18.1, "rv_gaia": 17.62, "ew_limit_ma": 0.902}, {"star": "3532823773073745536", "z": [-3.59, 2.71, -2.89, -4.45, -4.08, 6.0, -0.4, -5.13, -3.54], "ew_ma": [-3.51, 1.33, -1.42, -2.54, -2.43, 0.92, -0.05, -0.71, -0.53], "z_comb": -4.47, "p": 0.18359082045897704, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9932, "null_sd": 6.04, "v": 40.5, "rv_gaia": 39.76, "ew_limit_ma": 8.688}, {"star": "4867596937475715968", "z": [-2.33, -0.72, 0.56, -3.27, 0.19, -0.19, -5.94, -6.0, 3.94], "ew_ma": [-1.61, -0.49, 0.54, -1.78, 0.09, -0.05, -1.68, -1.84, 1.08], "z_comb": -2.94, "p": 0.18704064796760161, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9757, "null_sd": 3.96, "v": -9.15, "rv_gaia": -9.94, "ew_limit_ma": 5.71}, {"star": "6018047019138644480", "z": [0.74, 0.57, -1.29, -3.55, 3.25, -11.59, -5.21, 5.79, -2.2], "ew_ma": [0.2, 0.16, -0.45, -1.5, 1.03, -1.19, -0.53, 0.59, -0.22], "z_comb": -2.56, "p": 0.215939203039848, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.12, "v": 13.35, "rv_gaia": 12.85, "ew_limit_ma": 3.6}, {"star": "6489909443564308224", "z": [-1.82, -4.53, 0.01, 0.66, -2.84, -2.24, -6.55, 1.84, 3.42], "ew_ma": [-0.31, -0.63, 0.0, 0.13, -0.6, -0.23, -0.73, 0.23, 0.34], "z_comb": -2.85, "p": 0.21628918554072296, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 3.64, "v": 0.75, "rv_gaia": 0.63, "ew_limit_ma": 1.143}, {"star": "4763906879239461632", "z": [-2.59, -2.64, -0.69, -0.78, -0.69, 1.0, 0.62, 3.37, 0.69], "ew_ma": [-0.63, -0.5, -0.16, -0.2, -0.15, 0.12, 0.08, 0.42, 0.1], "z_comb": -2.53, "p": 0.21653917304134793, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9966, "null_sd": 4.45, "v": -1.05, "rv_gaia": -1.45, "ew_limit_ma": 2.088}, {"star": "5062172841616745856", "z": [-7.62, 3.01, -2.79, 1.21, 3.72, -3.23, -6.29, -0.31, -4.04], "ew_ma": [-2.41, 0.83, -0.93, 0.36, 0.95, -0.44, -0.79, -0.04, -0.62], "z_comb": -3.09, "p": 0.24043797810109493, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.74, "v": 11.8, "rv_gaia": 11.16, "ew_limit_ma": 2.766}, {"star": "4423865487962417024", "z": [-3.42, 0.58, -3.8, -1.64, 2.52, 9.39, -2.23, 1.82, -1.39], "ew_ma": [-1.29, 0.16, -1.14, -0.46, 0.71, 1.01, -0.2, 0.17, -0.13], "z_comb": -3.12, "p": 0.2456877156142193, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.25, "v": 19.55, "rv_gaia": 18.95, "ew_limit_ma": 2.614}, {"star": "3732539683617410816", "z": [6.41, -1.81, -3.95, -3.48, 3.29, 0.99, -0.05, -8.06, 0.33], "ew_ma": [3.85, -0.65, -1.65, -2.03, 4.41, 0.17, -0.01, -1.38, 0.05], "z_comb": -3.16, "p": 0.2582370881455927, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9902, "null_sd": 3.9, "v": -26.95, "rv_gaia": -27.25, "ew_limit_ma": 3.203}, {"star": "4367026303085396352", "z": [7.18, -1.89, -5.1, -3.74, 2.74, -2.47, 2.74, -1.05, 9.12], "ew_ma": [3.46, -0.51, -1.52, -1.8, 3.38, -0.26, 0.22, -0.1, 0.82], "z_comb": -2.08, "p": 0.26688665566721664, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.11, "v": -35.5, "rv_gaia": -35.94, "ew_limit_ma": 2.951}, {"star": "2477815222028038272", "z": [-3.3, 1.26, -0.67, -3.22, 2.03, 0.89, 1.68, 1.54, -1.37], "ew_ma": [-2.59, 0.82, -0.41, -1.82, 1.19, 0.19, 0.31, 0.33, -0.32], "z_comb": -2.1, "p": 0.27703614819259037, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9819, "null_sd": 3.84, "v": 11.9, "rv_gaia": 11.46, "ew_limit_ma": 5.698}, {"star": "4634528720388462592", "z": [0.82, -1.09, 3.71, -6.86, -0.5, -0.01, -3.66, 0.37, 3.79], "ew_ma": [0.48, -0.5, 1.97, -2.63, -0.21, -0.0, -0.68, 0.07, 0.66], "z_comb": -1.12, "p": 0.2789860506974651, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9926, "null_sd": 4.25, "v": -5.55, "rv_gaia": -6.07, "ew_limit_ma": 3.999}, {"star": "6427244702486210816", "z": [2.79, -0.27, -0.66, -5.85, 3.39, -10.76, 3.51, 2.72, 3.06], "ew_ma": [0.93, -0.07, -0.17, -1.37, 0.88, -1.23, 0.37, 0.33, 0.28], "z_comb": -2.05, "p": 0.2833358332083396, "n_lines": 9, "n_spectra": 2, "twin_r": 0.994, "null_sd": 3.69, "v": -10.1, "rv_gaia": -10.76, "ew_limit_ma": 2.073}, {"star": "2473608009504466688", "z": [4.04, -3.83, -1.99, -2.93, 2.41, -3.55, 2.33, 5.99, 2.92], "ew_ma": [1.12, -0.95, -0.63, -1.59, 1.08, -0.75, 0.46, 1.24, 0.47], "z_comb": -2.1, "p": 0.3194340282985851, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9839, "null_sd": 5.51, "v": 8.7, "rv_gaia": 8.21, "ew_limit_ma": 9.402}, {"star": "1772187382746856320", "z": [4.56, -2.78, -1.46, -1.64, 0.88, -1.3, 5.54, -4.22, -0.95], "ew_ma": [2.11, -0.86, -0.55, -0.58, 0.4, -0.22, 0.89, -0.68, -0.18], "z_comb": -1.71, "p": 0.33248337583120846, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9903, "null_sd": 5.72, "v": -16.75, "rv_gaia": -16.94, "ew_limit_ma": 2.278}, {"star": "3789271459953459328", "z": [-4.49, 2.04, -3.93, 3.49, -0.28, 2.84, 3.4, -2.5, -6.11], "ew_ma": [-1.72, 0.55, -1.08, 0.9, -0.09, 0.36, 0.45, -0.37, -0.78], "z_comb": -1.75, "p": 0.33563321833908305, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9917, "null_sd": 5.75, "v": 19.0, "rv_gaia": 18.5, "ew_limit_ma": 10.375}, {"star": "5291028181119851776", "z": [-8.38, 1.93, -8.42, 8.24, 2.21, 5.87, -2.05, -1.49, 5.13], "ew_ma": [-1.38, 0.29, -1.62, 1.4, 0.36, 0.48, -0.15, -0.14, 0.43], "z_comb": -2.06, "p": 0.33713314334283284, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.68, "v": 15.6, "rv_gaia": 15.01, "ew_limit_ma": 1.781}, {"star": "5452492082132835840", "z": [0.95, -4.14, 3.72, -2.93, 1.06, -1.24, 0.38, 4.04, -1.12], "ew_ma": [0.43, -1.68, 1.38, -1.01, 0.34, -0.32, 0.1, 0.99, -0.28], "z_comb": -0.7, "p": 0.3396830158492075, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9939, "null_sd": 3.02, "v": 13.4, "rv_gaia": 12.83, "ew_limit_ma": 2.659}, {"star": "4038724053986441856", "z": [-2.71, -3.51, -2.47, 4.42, -2.21, 7.57, 3.84, -2.72, -0.9], "ew_ma": [-0.65, -0.66, -0.58, 1.06, -0.74, 0.75, 0.37, -0.28, -0.08], "z_comb": -1.83, "p": 0.3528323583820809, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9943, "null_sd": 3.97, "v": 15.6, "rv_gaia": 14.99, "ew_limit_ma": 1.49}, {"star": "2790914111658905216", "z": [4.06, 0.22, -3.67, -0.08, 2.65, 3.61, -2.75, -5.75, 1.55], "ew_ma": [1.33, 0.08, -1.05, -0.02, 1.4, 0.62, -0.36, -0.78, 0.26], "z_comb": -0.78, "p": 0.3551322433878306, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9879, "null_sd": 5.56, "v": -23.0, "rv_gaia": -23.67, "ew_limit_ma": 1.998}, {"star": "4934923028038871296", "z": [-3.14, -3.16, 1.84, 2.96, 3.32, -0.53, -1.34, -3.91, -8.31], "ew_ma": [-1.07, -0.64, 0.64, 0.75, 0.87, -0.06, -0.12, -0.4, -0.73], "z_comb": -1.54, "p": 0.36458177091145444, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.66, "v": 12.25, "rv_gaia": 11.9, "ew_limit_ma": 3.586}, {"star": "3113909602378333056", "z": [-1.9, 3.34, -1.17, -3.17, -3.94, 2.85, -0.14, 2.48, 0.42], "ew_ma": [-0.58, 0.99, -0.33, -0.88, -1.15, 0.39, -0.02, 0.36, 0.06], "z_comb": -0.89, "p": 0.38423078846057696, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9945, "null_sd": 4.68, "v": -7.65, "rv_gaia": -8.02, "ew_limit_ma": 1.931}, {"star": "2382711653818308224", "z": [-1.55, -3.56, -0.38, 1.36, -1.93, 6.65, -3.88, 0.35, 5.88], "ew_ma": [-0.76, -1.56, -0.18, 0.96, -1.29, 1.18, -0.75, 0.08, 1.17], "z_comb": -1.09, "p": 0.38683065846707665, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9787, "null_sd": 3.98, "v": 7.3, "rv_gaia": 6.41, "ew_limit_ma": 5.076}, {"star": "6484716209628726912", "z": [-0.29, -3.77, 0.39, 2.49, -4.11, -1.07, 1.77, 1.22, -6.36], "ew_ma": [-0.1, -1.04, 0.11, 0.92, -1.63, -0.13, 0.23, 0.17, -0.82], "z_comb": -1.54, "p": 0.3880305984700765, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9926, "null_sd": 3.82, "v": -7.55, "rv_gaia": -7.8, "ew_limit_ma": 2.13}, {"star": "6062166950467100032", "z": [5.63, -1.52, 0.29, -2.83, -0.8, -2.53, 1.18, -5.12, -1.25], "ew_ma": [1.16, -0.29, 0.09, -1.64, -0.38, -0.48, 0.15, -0.63, -0.16], "z_comb": -0.85, "p": 0.38998050097495124, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 4.32, "v": -63.55, "rv_gaia": -63.57, "ew_limit_ma": 2.25}, {"star": "5528591961953902720", "z": [-1.61, 6.29, -6.24, -2.63, -2.17, -1.68, -0.06, 4.69, 7.37], "ew_ma": [-0.54, 1.86, -1.78, -0.9, -0.72, -0.27, -0.01, 0.76, 1.21], "z_comb": -1.16, "p": 0.4015299235038248, "n_lines": 9, "n_spectra": 4, "twin_r": 0.994, "null_sd": 4.89, "v": -1.35, "rv_gaia": -1.8, "ew_limit_ma": 7.986}, {"star": "5951165616611763456", "z": [-5.1, 1.37, -1.55, 0.22, -4.88, 0.73, 9.48, -0.96, 2.64], "ew_ma": [-1.51, 0.33, -0.41, 0.07, -1.56, 0.12, 1.25, -0.13, 0.39], "z_comb": -1.36, "p": 0.4105294735263237, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9894, "null_sd": 4.47, "v": 26.4, "rv_gaia": 25.96, "ew_limit_ma": 2.709}, {"star": "5381537023379295232", "z": [-2.05, -1.33, -3.65, 6.07, -1.97, 9.76, -7.03, 4.97, -9.62], "ew_ma": [-0.57, -0.26, -0.7, 1.43, -0.39, 1.03, -0.66, 0.51, -0.93], "z_comb": -1.13, "p": 0.41637918104094795, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 3.5, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 1.441}, {"star": "6802426038708609536", "z": [0.97, -5.75, 0.48, 1.01, 3.39, 2.06, -4.64, 1.66, 6.15], "ew_ma": [0.17, -0.83, 0.09, 0.24, 0.77, 0.17, -0.38, 0.14, 0.45], "z_comb": -0.85, "p": 0.4307784610769462, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.62, "v": -15.95, "rv_gaia": -16.09, "ew_limit_ma": 1.612}, {"star": "5793182631952977920", "z": [-0.2, -0.52, 1.79, -4.76, -1.33, -6.38, 2.09, 5.49, 3.16], "ew_ma": [-0.05, -0.12, 0.45, -1.01, -0.34, -0.7, 0.23, 0.65, 0.36], "z_comb": -1.05, "p": 0.43977801109944503, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9938, "null_sd": 4.2, "v": -2.65, "rv_gaia": -3.17, "ew_limit_ma": 2.703}, {"star": "2423493369021649920", "z": [-5.32, 3.77, -2.6, 2.21, 0.92, -4.7, 0.7, 5.21, 1.75], "ew_ma": [-2.16, 1.18, -0.91, 0.68, 0.47, -0.7, 0.1, 0.82, 0.27], "z_comb": 0.1, "p": 0.4463276836158192, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9933, "null_sd": 3.88, "v": -1.95, "rv_gaia": -2.55, "ew_limit_ma": 3.14}, {"star": "2913411183149615744", "z": [-0.73, -3.46, -2.53, 7.5, -1.46, 2.84, -0.76, 1.77, -1.27], "ew_ma": [-0.2, -0.67, -0.56, 1.69, -0.38, 0.34, -0.1, 0.26, -0.18], "z_comb": 0.12, "p": 0.4736763161841908, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.36, "v": 22.4, "rv_gaia": 21.69, "ew_limit_ma": 1.712}, {"star": "3269362645115584640", "z": [-3.47, 0.12, 4.25, -0.85, -2.16, -2.73, 4.03, -5.07, -0.35], "ew_ma": [-0.97, 0.03, 1.11, -0.16, -0.41, -0.35, 0.54, -0.69, -0.05], "z_comb": 0.27, "p": 0.48207589620518976, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 3.58, "v": 19.45, "rv_gaia": 18.73, "ew_limit_ma": 2.101}, {"star": "3407611182744289152", "z": [-1.5, 4.07, -1.58, 0.66, 0.19, -10.05, 2.1, -2.54, -3.03], "ew_ma": [-0.9, 2.45, -0.99, 0.35, 0.12, -1.93, 0.39, -0.53, -0.56], "z_comb": -0.32, "p": 0.4829258537073146, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 4.73, "v": 21.1, "rv_gaia": 20.6, "ew_limit_ma": 6.279}, {"star": "3551002857809958400", "z": [-0.24, 5.88, -1.43, -0.98, 2.57, -9.77, 2.74, -1.28, -10.32], "ew_ma": [-0.11, 1.74, -0.58, -0.43, 1.52, -1.11, 0.31, -0.18, -1.4], "z_comb": -0.14, "p": 0.5018749062546872, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 6.6, "v": -3.55, "rv_gaia": -4.08, "ew_limit_ma": 6.422}, {"star": "3480332916165099904", "z": [-1.18, -0.35, 0.22, -4.28, 4.01, 4.13, 0.64, 2.43, 14.21], "ew_ma": [-0.39, -0.08, 0.07, -1.53, 1.47, 0.51, 0.05, 0.22, 1.49], "z_comb": 0.12, "p": 0.5147242637868107, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9973, "null_sd": 4.36, "v": 14.45, "rv_gaia": 14.0, "ew_limit_ma": 3.239}, {"star": "5765846127180770432", "z": [2.29, -3.0, 3.14, -3.38, -1.9, -4.85, 3.86, 2.28, 4.76], "ew_ma": [0.48, -0.54, 0.67, -0.78, -0.41, -0.49, 0.37, 0.24, 0.49], "z_comb": 0.04, "p": 0.520273986300685, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 3.75, "v": -4.15, "rv_gaia": -4.87, "ew_limit_ma": 2.075}, {"star": "2980492387558410112", "z": [0.64, -2.36, -1.82, 5.35, -3.46, 1.18, 0.97, -1.13, 1.66], "ew_ma": [0.11, -0.38, -0.4, 1.12, -0.81, 0.15, 0.12, -0.13, 0.19], "z_comb": 0.45, "p": 0.5241737913104345, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.51, "v": 22.35, "rv_gaia": 21.6, "ew_limit_ma": 1.504}, {"star": "1237090738916392704", "z": [4.57, -1.88, -1.18, -1.08, -2.44, 7.21, -1.07, 1.06, 0.99], "ew_ma": [2.31, -0.86, -0.47, -0.37, -0.99, 0.83, -0.09, 0.13, 0.1], "z_comb": -0.02, "p": 0.5292735363231839, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.43, "v": 2.2, "rv_gaia": 1.59, "ew_limit_ma": 7.515}, {"star": "5559265690666327168", "z": [3.27, -1.14, 3.31, 0.61, -6.01, -4.2, 4.79, -2.51, -8.0], "ew_ma": [1.73, -0.42, 1.13, 0.24, -2.39, -0.46, 0.44, -0.26, -0.87], "z_comb": 1.13, "p": 0.535923203839808, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9948, "null_sd": 4.65, "v": 89.1, "rv_gaia": 88.55, "ew_limit_ma": 4.874}, {"star": "5567900121118276736", "z": [-1.85, 0.21, -0.16, 2.71, -7.15, 0.53, -2.5, -3.85, 1.0], "ew_ma": [-0.44, 0.04, -0.03, 0.67, -1.33, 0.07, -0.3, -0.52, 0.12], "z_comb": -0.27, "p": 0.5385230738463077, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9948, "null_sd": 3.86, "v": 28.4, "rv_gaia": 27.55, "ew_limit_ma": 1.785}, {"star": "6879764552737781888", "z": [10.27, -1.36, -6.22, 3.73, -2.64, 2.98, -0.16, 0.23, -1.68], "ew_ma": [3.8, -0.4, -2.12, 1.51, -0.74, 0.58, -0.03, 0.04, -0.34], "z_comb": 0.85, "p": 0.5503724813759312, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.79, "v": 27.4, "rv_gaia": 27.2, "ew_limit_ma": 3.002}, {"star": "6141742283401003264", "z": [6.27, 1.41, -2.89, -3.17, -0.66, -0.05, 4.93, 0.15, 2.67], "ew_ma": [2.1, 0.42, -1.3, -1.03, -0.28, -0.01, 0.54, 0.02, 0.37], "z_comb": 0.32, "p": 0.592720363981801, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 4.63, "v": -12.35, "rv_gaia": -13.03, "ew_limit_ma": 4.467}, {"star": "3835867938104798848", "z": [0.94, 3.73, -1.92, -2.63, 3.39, 0.73, -0.06, -1.45, 9.37], "ew_ma": [0.22, 0.94, -0.55, -0.92, 2.0, 0.07, -0.01, -0.17, 0.92], "z_comb": 1.14, "p": 0.6032698365081746, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9926, "null_sd": 4.71, "v": -21.45, "rv_gaia": -21.84, "ew_limit_ma": 5.175}, {"star": "6612242034982766848", "z": [7.88, 0.12, -2.02, 2.49, 1.47, -0.54, 4.89, -7.68, -5.68], "ew_ma": [2.52, 0.03, -0.61, 0.74, 0.38, -0.08, 0.53, -0.82, -0.67], "z_comb": 1.7, "p": 0.608269586520674, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 5.12, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 2.755}, {"star": "5760701787150565888", "z": [-0.69, -1.96, -0.39, 6.53, 4.48, 2.08, -3.44, 0.04, -8.01], "ew_ma": [-0.34, -0.47, -0.1, 1.68, 1.03, 0.2, -0.3, 0.0, -0.67], "z_comb": 0.92, "p": 0.6177691115444228, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.18, "v": 32.5, "rv_gaia": 31.99, "ew_limit_ma": 2.453}, {"star": "5317114850417299584", "z": [-0.98, -0.82, 2.48, -1.47, 0.12, -0.73, 1.34, 4.67, 3.54], "ew_ma": [-0.2, -0.15, 0.6, -0.45, 0.03, -0.09, 0.17, 0.65, 0.51], "z_comb": 0.95, "p": 0.623918804059797, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 3.63, "v": -5.9, "rv_gaia": -6.29, "ew_limit_ma": 1.943}, {"star": "3285218186904332288", "z": [3.74, -3.28, 0.98, -0.27, -0.08, 4.75, 9.52, 5.24, -2.11], "ew_ma": [1.95, -1.61, 0.52, -0.17, -0.05, 2.19, 3.8, 3.03, -2.29], "z_comb": 1.34, "p": 0.624468776561172, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9728, "null_sd": 4.56, "v": -7.1, "rv_gaia": -7.28, "ew_limit_ma": 13.627}, {"star": "5663558453071724288", "z": [0.24, 1.71, 2.63, 3.38, -2.09, 6.33, -3.6, -6.15, -14.22], "ew_ma": [0.06, 0.31, 0.72, 1.23, -0.68, 0.68, -0.4, -0.79, -1.55], "z_comb": 1.89, "p": 0.6348182590870457, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9916, "null_sd": 6.16, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 7.609}, {"star": "3855524182352238336", "z": [-3.46, 3.04, -1.2, 4.61, -2.02, 0.44, -2.75, 0.14, -0.6], "ew_ma": [-0.59, 0.41, -0.18, 0.74, -0.35, 0.06, -0.27, 0.01, -0.06], "z_comb": 1.48, "p": 0.6362681865906704, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 9.34, "v": 16.8, "rv_gaia": 16.57, "ew_limit_ma": 1.484}, {"star": "4745373133284418816", "z": [-1.01, -1.3, 1.15, 0.7, 0.09, -2.19, 8.74, 1.64, 4.42], "ew_ma": [-0.17, -0.19, 0.25, 0.25, 0.03, -0.3, 1.15, 0.21, 0.54], "z_comb": 1.08, "p": 0.6454677266136694, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9923, "null_sd": 4.56, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 2.373}, {"star": "5640565607657897728", "z": [6.98, -1.79, 0.31, -1.82, 4.27, 6.61, -5.07, 1.53, -0.79], "ew_ma": [2.43, -0.61, 0.1, -0.56, 1.72, 1.04, -0.73, 0.22, -0.12], "z_comb": 1.41, "p": 0.6495175241237938, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9894, "null_sd": 4.98, "v": 15.15, "rv_gaia": 14.67, "ew_limit_ma": 8.195}, {"star": "3330062833797919744", "z": [-0.39, -0.89, -1.24, 2.54, 1.24, -6.86, 1.72, 3.67, 6.67], "ew_ma": [-0.08, -0.17, -0.28, 0.62, 0.27, -0.79, 0.19, 0.37, 0.69], "z_comb": 0.72, "p": 0.6510174491275437, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 6.7, "v": 6.35, "rv_gaia": 5.83, "ew_limit_ma": 8.384}, {"star": "6357835694518769408", "z": [1.87, 4.34, -3.61, -0.96, 0.34, 2.57, 2.51, -0.37, 2.87], "ew_ma": [0.57, 1.32, -1.16, -0.29, 0.08, 0.38, 0.38, -0.06, 0.47], "z_comb": 1.0, "p": 0.663966801659917, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 3.56, "v": 14.8, "rv_gaia": 14.4, "ew_limit_ma": 3.088}, {"star": "5586381090520538880", "z": [-1.3, 0.46, 3.82, -2.04, 1.5, 3.66, 0.94, -0.8, -1.97], "ew_ma": [-0.25, 0.1, 0.77, -0.4, 0.25, 0.42, 0.11, -0.09, -0.25], "z_comb": 1.21, "p": 0.6669166541672916, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.96, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 1.721}, {"star": "6698960688866464768", "z": [1.73, -1.62, -0.29, 5.86, 3.47, -1.72, -6.56, -0.57, 0.06], "ew_ma": [1.43, -1.22, -0.37, 4.73, 2.19, -0.41, -1.62, -0.24, 0.02], "z_comb": 2.01, "p": 0.6733163341832908, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9144, "null_sd": 5.41, "v": -3.5, "rv_gaia": -7.85, "ew_limit_ma": 11.95}, {"star": "5357075947709011456", "z": [-6.51, 0.96, 2.85, 1.21, 0.04, 6.85, 0.32, 3.87, -2.03], "ew_ma": [-1.47, 0.22, 0.75, 0.57, 0.01, 1.07, 0.04, 0.45, -0.25], "z_comb": 1.2, "p": 0.6845657717114144, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9949, "null_sd": 7.36, "v": 21.6, "rv_gaia": 21.19, "ew_limit_ma": 5.312}, {"star": "6796392812250051712", "z": [2.12, -3.58, 1.9, -1.57, 3.24, -0.04, -0.02, 4.56, 12.57], "ew_ma": [1.02, -1.42, 1.08, -0.59, 1.3, -0.01, -0.0, 0.65, 1.48], "z_comb": 1.48, "p": 0.6902654867256637, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9934, "null_sd": 33.83, "v": 0.15, "rv_gaia": -0.34, "ew_limit_ma": 5.686}, {"star": "5945941905576552064", "z": [-2.96, 0.1, 2.51, 5.72, 0.28, -1.27, 2.83, -5.43, -3.43], "ew_ma": [-0.76, 0.02, 0.62, 1.1, 0.05, -0.13, 0.27, -0.49, -0.34], "z_comb": 2.32, "p": 0.696515174241288, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 8.49, "v": -8.75, "rv_gaia": -9.54, "ew_limit_ma": 2.764}, {"star": "6153706477443518976", "z": [6.92, -1.82, -0.68, -1.7, 5.98, 1.28, 6.56, 3.78, 2.27], "ew_ma": [2.26, -0.57, -0.23, -0.89, 4.73, 0.15, 0.77, 0.47, 0.27], "z_comb": 1.89, "p": 0.7067146642667866, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9911, "null_sd": 4.74, "v": -25.8, "rv_gaia": -26.31, "ew_limit_ma": 2.856}, {"star": "4906784051581971200", "z": [5.01, 2.73, 1.36, -1.16, 0.53, -7.98, 1.7, 4.65, -10.8], "ew_ma": [1.58, 0.69, 0.44, -0.35, 0.16, -1.19, 0.25, 0.63, -1.33], "z_comb": 2.13, "p": 0.7078146092695365, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9957, "null_sd": 6.16, "v": 3.45, "rv_gaia": 2.92, "ew_limit_ma": 3.718}, {"star": "3250489115709122560", "z": [1.78, 1.39, 0.2, 0.44, -4.81, 5.66, 2.16, -0.09, 1.11], "ew_ma": [1.04, 0.62, 0.11, 0.4, -2.81, 1.2, 0.39, -0.02, 0.2], "z_comb": 2.03, "p": 0.7091145442727863, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9765, "null_sd": 6.59, "v": 121.05, "rv_gaia": 120.58, "ew_limit_ma": 14.871}, {"star": "5927236979422123264", "z": [7.9, -1.15, 1.41, -0.54, 0.9, 2.0, -3.68, -1.62, -1.23], "ew_ma": [2.8, -0.31, 0.63, -0.25, 0.45, 0.29, -0.47, -0.23, -0.16], "z_comb": 2.42, "p": 0.7313134343282836, "n_lines": 9, "n_spectra": 3, "twin_r": 0.991, "null_sd": 5.38, "v": -8.4, "rv_gaia": -9.12, "ew_limit_ma": 7.219}, {"star": "6150200345317455232", "z": [1.3, -0.1, 3.81, -0.53, 2.94, -7.11, 4.98, 5.44, 1.77], "ew_ma": [0.47, -0.03, 1.3, -0.16, 1.04, -1.2, 0.74, 0.86, 0.25], "z_comb": 3.15, "p": 0.7342632868356582, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9955, "null_sd": 3.97, "v": -6.45, "rv_gaia": -7.11, "ew_limit_ma": 3.458}, {"star": "5056511692465250304", "z": [-0.15, 0.14, 1.8, 0.52, 2.15, -1.19, 6.99, 1.52, 1.1], "ew_ma": [-0.05, 0.04, 0.45, 0.13, 0.53, -0.3, 1.6, 0.31, 0.2], "z_comb": 2.12, "p": 0.7526623668816559, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9771, "null_sd": 4.05, "v": 18.3, "rv_gaia": 17.69, "ew_limit_ma": 4.574}, {"star": "6096524382383054720", "z": [2.52, 2.93, 1.64, 2.22, -2.63, -5.58, 0.74, 4.49, -4.74], "ew_ma": [0.72, 0.7, 0.41, 0.52, -0.61, -0.82, 0.08, 0.47, -0.55], "z_comb": 3.74, "p": 0.8033098345082745, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9956, "null_sd": 4.52, "v": 5.1, "rv_gaia": 4.39, "ew_limit_ma": 3.526}, {"star": "4315804351350378496", "z": [-0.14, -0.91, 7.8, -1.25, -1.12, -0.48, 0.43, -4.5, 5.22], "ew_ma": [-0.19, -1.04, 12.52, -1.22, -0.86, -0.16, 0.12, -1.41, 1.97], "z_comb": 3.55, "p": 0.8291085445727714, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9924, "null_sd": 4.26, "v": -100.05, "rv_gaia": -100.33, "ew_limit_ma": 17.483}, {"star": "6629790584164277376", "z": [5.32, -3.25, 3.89, -0.17, 3.04, -2.4, 0.59, 0.78, 3.4], "ew_ma": [1.06, -0.58, 0.69, -0.05, 0.6, -0.29, 0.05, 0.08, 0.29], "z_comb": 2.95, "p": 0.8302584870756462, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9971, "null_sd": 24.24, "v": 0.75, "rv_gaia": 0.5, "ew_limit_ma": 5.38}, {"star": "3101382419728401408", "z": [0.51, 12.57, -1.78, 0.18, -4.24, -1.94, -3.3, -0.13, 0.97], "ew_ma": [0.29, 5.6, -1.12, 0.14, -2.32, -0.43, -0.81, -0.04, 0.3], "z_comb": 5.14, "p": 0.8421578921053947, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 4.78, "v": 54.05, "rv_gaia": 53.99, "ew_limit_ma": 7.657}, {"star": "6718894388002453120", "z": [-1.22, 1.9, 6.52, 1.71, -9.02, -4.34, 2.14, -5.55, -0.78], "ew_ma": [-0.71, 0.57, 2.91, 0.7, -2.83, -0.47, 0.25, -0.79, -0.11], "z_comb": 3.68, "p": 0.8633568321583921, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.76, "v": 60.5, "rv_gaia": 60.01, "ew_limit_ma": 6.619}, {"star": "3009908378049913216", "z": [-2.18, 10.18, 1.55, -2.39, -2.86, -2.18, 8.04, 2.92, 5.74], "ew_ma": [-1.86, 9.46, 1.89, -3.39, -2.17, -0.75, 3.25, 1.27, 2.5], "z_comb": 5.4, "p": 0.896055197240138, "n_lines": 9, "n_spectra": 3, "twin_r": 0.9144, "null_sd": 4.44, "v": 27.0, "rv_gaia": 21.1, "ew_limit_ma": 11.738}, {"star": "5459060117921483008", "z": [0.8, 0.41, 6.47, 6.33, -7.15, 1.74, 2.13, -4.53, -4.23], "ew_ma": [0.27, 0.11, 2.27, 2.22, -2.31, 0.21, 0.24, -0.62, -0.57], "z_comb": 6.08, "p": 0.9098545072746362, "n_lines": 9, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 4.31, "v": 44.65, "rv_gaia": 43.93, "ew_limit_ma": 4.4}, {"star": "4708607629114652032", "z": [-1.22, 4.92, -0.97, 10.32, 0.86, 5.78, -5.69, -1.09, -2.33], "ew_ma": [-0.32, 1.04, -0.33, 4.58, 0.36, 0.49, -0.58, -0.12, -0.32], "z_comb": 6.18, "p": 0.959302034898255, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.73, "v": 95.75, "rv_gaia": 95.23, "ew_limit_ma": 3.815}, {"star": "5553647083168192512", "z": [0.82, 3.89, 5.24, 3.28, -2.67, -6.26, -6.08, 4.38, 1.51], "ew_ma": [0.3, 0.84, 1.97, 1.44, -1.17, -1.42, -1.26, 0.84, 0.27], "z_comb": 6.5, "p": 0.9713014349282536, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9796, "null_sd": 4.0, "v": 60.7, "rv_gaia": 59.67, "ew_limit_ma": 4.973}, {"star": "5129338021224785408", "z": [-0.55, 6.32, 4.46, -0.95, -0.3, -4.42, 0.48, 4.51, 9.77], "ew_ma": [-0.36, 4.08, 3.3, -0.79, -0.18, -1.57, 0.19, 2.05, 3.54], "z_comb": 6.55, "p": 0.9717014149292535, "n_lines": 9, "n_spectra": 2, "twin_r": 0.9568, "null_sd": 3.86, "v": 29.85, "rv_gaia": 29.09, "ew_limit_ma": 9.449}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pm_HARPS.json b/papers/short_lived_elements/data/element_Pm_HARPS.json new file mode 100644 index 0000000000000000000000000000000000000000..dc0b8176c3743667e98396a96dda80ba7c8930c6 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pm_HARPS.json @@ -0,0 +1 @@ +{"lines": [[4137.95, 0.5946083907023679], [4157.86, 0.8761025232840707], [4186.03, 1.0], [4297.78, 0.803513223740331], [4381.88, 0.12126304714981384], [5546.08, 0.13363452343538146], [5556.88, 0.10857201655999942], [5561.73, 0.17799874937638469], [5576.02, 0.2026213150981214]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "2525514785221197696", "z": [-1.91, -3.11, -1.25, -3.08, -3.17, -2.16, -2.88, 1.09, 0.99], "ew_ma": [-0.17, -0.3, -0.11, -0.26, -0.24, -0.12, -0.14, 0.06, 0.05], "z_comb": -4.81, "p": 0.020098995050247488, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.07, "v": -3.15, "rv_gaia": -3.83, "ew_limit_ma": 0.18}, {"star": "6904703228801028864", "z": [-3.58, 3.73, -3.85, -8.91, 1.24, -1.27, -2.97, 2.34, -3.51], "ew_ma": [-0.72, 0.69, -0.95, -1.05, 0.25, -0.07, -0.2, 0.19, -0.25], "z_comb": -6.18, "p": 0.029698515074246288, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 3.02, "v": 10.05, "rv_gaia": 9.13, "ew_limit_ma": 1.042}, {"star": "6213644846302305536", "z": [-3.82, -1.29, 0.38, -3.94, -1.8, 1.7, -4.76, -0.27, 1.12], "ew_ma": [-0.75, -0.22, 0.07, -0.63, -0.29, 0.12, -0.34, -0.02, 0.09], "z_comb": -3.84, "p": 0.04724763761811909, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.76, "v": -5.85, "rv_gaia": -6.56, "ew_limit_ma": 0.733}, {"star": "6489771832811810432", "z": [-1.28, 2.36, -6.26, -10.17, -1.16, -0.75, -3.59, 2.51, -1.31], "ew_ma": [-0.58, 0.86, -2.21, -3.36, -0.53, -0.07, -0.3, 0.28, -0.17], "z_comb": -7.99, "p": 0.04939753012349383, "n_lines": 9, "n_spectra": 6, "twin_r": 0.996, "null_sd": 4.57, "v": -30.05, "rv_gaia": -31.05, "ew_limit_ma": 2.639}, {"star": "2585856120791459584", "z": [1.44, -2.7, -2.43, -1.5, 2.68, -4.6, 0.82, -0.06, -1.35], "ew_ma": [0.28, -0.37, -0.6, -0.31, 0.89, -0.31, 0.05, -0.0, -0.09], "z_comb": -3.31, "p": 0.053697315134243286, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.89, "v": -20.35, "rv_gaia": -20.97, "ew_limit_ma": 0.463}, {"star": "5586381090520538880", "z": [-1.6, -6.18, 0.48, 0.19, -0.36, -0.71, 1.47, 0.39, -0.12], "ew_ma": [-0.19, -0.58, 0.06, 0.02, -0.04, -0.03, 0.06, 0.02, -0.01], "z_comb": -3.33, "p": 0.09144542772861357, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 2.88, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 0.498}, {"star": "5452492082132835840", "z": [-0.74, -0.65, -3.21, -2.28, 2.11, 3.67, -1.99, 0.57, 2.13], "ew_ma": [-0.07, -0.05, -0.3, -0.27, 0.21, 0.19, -0.1, 0.03, 0.12], "z_comb": -2.94, "p": 0.09554522273886305, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.49, "v": 13.45, "rv_gaia": 12.83, "ew_limit_ma": 0.277}, {"star": "3345968334645285376", "z": [3.82, -0.48, -3.19, -1.82, -1.65, -2.12, -1.33, -1.29, -2.92], "ew_ma": [1.12, -0.1, -0.72, -0.44, -0.46, -0.21, -0.12, -0.12, -0.26], "z_comb": -2.5, "p": 0.09639518024098795, "n_lines": 9, "n_spectra": 6, "twin_r": 0.997, "null_sd": 2.21, "v": -9.4, "rv_gaia": -10.01, "ew_limit_ma": 0.766}, {"star": "6489909443564308224", "z": [-4.16, 0.01, -0.89, -2.94, 0.52, -1.91, -0.41, 3.43, 2.18], "ew_ma": [-0.55, 0.0, -0.11, -0.45, 0.1, -0.11, -0.02, 0.24, 0.12], "z_comb": -2.88, "p": 0.11754412279386031, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9955, "null_sd": 3.17, "v": 0.85, "rv_gaia": 0.63, "ew_limit_ma": 0.662}, {"star": "4867596937475715968", "z": [-0.5, -3.55, -0.82, 2.76, -2.75, -2.66, -1.75, -1.26, -3.46], "ew_ma": [-0.08, -0.58, -0.12, 0.41, -0.37, -0.23, -0.14, -0.1, -0.28], "z_comb": -2.24, "p": 0.12034398280085996, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.11, "v": -9.4, "rv_gaia": -9.94, "ew_limit_ma": 0.546}, {"star": "4418203587193988480", "z": [0.43, -1.64, 0.88, -5.93, -2.16, -1.62, 1.68, -3.77, 5.94], "ew_ma": [0.22, -0.42, 0.32, -1.53, -0.59, -0.12, 0.12, -0.32, 0.5], "z_comb": -2.84, "p": 0.1296935153242338, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.87, "v": -68.75, "rv_gaia": -69.63, "ew_limit_ma": 1.76}, {"star": "3346787986201584896", "z": [-3.78, 1.02, -4.03, 0.1, 1.66, -1.65, 0.47, 1.57, 1.19], "ew_ma": [-0.62, 0.15, -0.73, 0.03, 0.46, -0.12, 0.04, 0.13, 0.1], "z_comb": -2.79, "p": 0.1343932803359832, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 2.78, "v": 1.1, "rv_gaia": 0.26, "ew_limit_ma": 0.871}, {"star": "6879764552737781888", "z": [0.79, -2.3, -1.78, -0.22, -2.19, 2.94, -3.75, 0.17, -0.13], "ew_ma": [0.06, -0.21, -0.19, -0.05, -0.29, 0.15, -0.18, 0.01, -0.01], "z_comb": -2.23, "p": 0.1375931203439828, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.45, "v": 27.3, "rv_gaia": 27.2, "ew_limit_ma": 0.332}, {"star": "5798962867668048768", "z": [-5.72, -0.02, -2.35, 0.16, 0.99, 1.07, -4.64, 3.04, 1.49], "ew_ma": [-2.19, -0.01, -0.81, 0.04, 0.27, 0.11, -0.5, 0.36, 0.15], "z_comb": -2.96, "p": 0.14699265036748163, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9961, "null_sd": 3.07, "v": 2.7, "rv_gaia": 1.94, "ew_limit_ma": 1.832}, {"star": "5317114850417299584", "z": [0.64, -2.92, -0.23, -2.08, 0.67, -1.33, -2.22, 1.32, 2.19], "ew_ma": [0.07, -0.32, -0.03, -0.5, 0.11, -0.08, -0.13, 0.09, 0.13], "z_comb": -2.2, "p": 0.16934153292335383, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.78, "v": -6.25, "rv_gaia": -6.29, "ew_limit_ma": 0.923}, {"star": "2423292879948720000", "z": [-0.43, -1.76, -2.52, 1.29, 1.55, 1.55, 0.08, -1.12, 0.73], "ew_ma": [-0.04, -0.13, -0.21, 0.07, 0.1, 0.07, 0.0, -0.05, 0.03], "z_comb": -1.72, "p": 0.17724113794310284, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.17, "v": 29.65, "rv_gaia": 28.92, "ew_limit_ma": 0.231}, {"star": "6519024545827374336", "z": [-0.29, 1.12, -2.79, 0.23, 2.86, -0.96, -1.52, 0.08, -2.98], "ew_ma": [-0.04, 0.14, -0.48, 0.05, 0.63, -0.07, -0.09, 0.0, -0.19], "z_comb": -1.37, "p": 0.2071896405179741, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.32, "v": 19.15, "rv_gaia": 18.68, "ew_limit_ma": 0.638}, {"star": "4400452830957830656", "z": [1.88, -2.43, -1.23, -1.47, 0.98, 1.61, -1.6, -4.06, 1.89], "ew_ma": [0.72, -0.68, -0.59, -1.01, 0.76, 0.14, -0.14, -0.41, 0.17], "z_comb": -2.12, "p": 0.20863956802159891, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9918, "null_sd": 3.34, "v": -36.7, "rv_gaia": -37.09, "ew_limit_ma": 2.373}, {"star": "2633449134434620288", "z": [1.7, -0.98, -2.37, -2.07, 2.6, -3.13, -2.01, -0.94, 4.29], "ew_ma": [0.21, -0.09, -0.32, -0.31, 0.47, -0.14, -0.09, -0.04, 0.2], "z_comb": -2.07, "p": 0.21168941552922355, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 3.18, "v": -12.1, "rv_gaia": -12.6, "ew_limit_ma": 0.833}, {"star": "2523361151179609344", "z": [-1.55, -1.26, 0.1, -1.28, 0.28, 1.03, -0.92, 0.47, 0.45], "ew_ma": [-0.15, -0.13, 0.01, -0.13, 0.03, 0.06, -0.05, 0.03, 0.03], "z_comb": -1.6, "p": 0.2126893655317234, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 1.82, "v": 12.9, "rv_gaia": 12.23, "ew_limit_ma": 0.402}, {"star": "3786697056556771584", "z": [1.31, -0.93, 0.25, -3.61, 2.74, -0.06, -0.98, -0.6, 1.12], "ew_ma": [0.18, -0.12, 0.04, -0.39, 0.44, -0.0, -0.06, -0.04, 0.07], "z_comb": -1.38, "p": 0.2153892305384731, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.32, "v": 13.9, "rv_gaia": 13.2, "ew_limit_ma": 0.677}, {"star": "5790389872417570816", "z": [1.89, 1.82, -0.66, -4.1, 1.98, 0.5, -0.58, -0.45, -2.4], "ew_ma": [0.44, 0.21, -0.13, -0.94, 0.97, 0.03, -0.03, -0.03, -0.16], "z_comb": -0.92, "p": 0.24428778561071945, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.5, "v": -20.35, "rv_gaia": -21.17, "ew_limit_ma": 0.632}, {"star": "2324785228033780608", "z": [3.17, -0.03, -2.03, -3.69, -3.24, -0.87, 1.64, -2.67, 2.5], "ew_ma": [0.9, -0.01, -0.45, -0.73, -0.69, -0.07, 0.11, -0.19, 0.2], "z_comb": -2.02, "p": 0.24808759562021898, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": -6.85, "rv_gaia": -7.42, "ew_limit_ma": 1.348}, {"star": "5528591961953902720", "z": [-1.62, 0.72, -2.45, -1.51, 2.36, -1.98, -5.3, 2.42, -1.38], "ew_ma": [-0.38, 0.17, -0.67, -0.57, 0.81, -0.12, -0.33, 0.17, -0.09], "z_comb": -2.59, "p": 0.24858757062146894, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.61, "v": -1.05, "rv_gaia": -1.8, "ew_limit_ma": 1.754}, {"star": "3022685626580347392", "z": [-1.84, 0.88, 1.54, -4.72, -3.32, 0.2, -0.73, -3.45, 3.69], "ew_ma": [-0.56, 0.11, 0.31, -1.39, -0.83, 0.01, -0.04, -0.22, 0.21], "z_comb": -1.7, "p": 0.2487875606219689, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9982, "null_sd": 3.08, "v": 144.05, "rv_gaia": 143.42, "ew_limit_ma": 1.866}, {"star": "3799626935341796096", "z": [-3.75, -1.47, 0.84, -1.49, -1.78, 1.48, 0.69, 3.11, 1.36], "ew_ma": [-1.01, -0.32, 0.2, -0.36, -0.33, 0.14, 0.06, 0.28, 0.15], "z_comb": -1.76, "p": 0.26263686815659215, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.66, "v": 2.5, "rv_gaia": 1.89, "ew_limit_ma": 1.526}, {"star": "5479222240596469632", "z": [-3.55, -0.46, 1.11, -0.18, -0.67, 0.15, 1.15, -2.81, -1.67], "ew_ma": [-1.07, -0.13, 0.37, -0.04, -0.14, 0.01, 0.11, -0.32, -0.16], "z_comb": -1.37, "p": 0.26463676816159193, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.88, "v": 22.85, "rv_gaia": 22.03, "ew_limit_ma": 1.482}, {"star": "2477815222028038272", "z": [0.61, -2.45, 0.15, -0.96, 3.08, 1.95, 0.03, 2.19, -2.41], "ew_ma": [0.14, -0.5, 0.03, -0.26, 0.65, 0.2, 0.0, 0.21, -0.24], "z_comb": -1.1, "p": 0.2663866806659667, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.27, "v": 12.1, "rv_gaia": 11.46, "ew_limit_ma": 1.171}, {"star": "3811594088617869056", "z": [-6.15, 1.67, 1.1, -2.09, 3.96, -1.51, -1.4, 1.57, 1.61], "ew_ma": [-1.09, 0.27, 0.18, -0.33, 0.79, -0.14, -0.12, 0.13, 0.15], "z_comb": -1.21, "p": 0.2703864806759662, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.0, "v": 10.7, "rv_gaia": 10.06, "ew_limit_ma": 0.724}, {"star": "3585098090614578688", "z": [-0.45, 2.84, -0.9, -0.86, 1.88, -3.38, -3.17, 0.3, -8.6], "ew_ma": [-0.07, 0.35, -0.15, -0.16, 0.5, -0.19, -0.16, 0.02, -0.48], "z_comb": -0.96, "p": 0.30118494075296237, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.16, "v": -22.15, "rv_gaia": -22.45, "ew_limit_ma": 2.186}, {"star": "2468730472844294016", "z": [2.22, -2.24, -0.99, -0.06, 0.64, 0.17, 1.79, -0.77, 0.49], "ew_ma": [0.31, -0.3, -0.13, -0.01, 0.11, 0.01, 0.13, -0.06, 0.04], "z_comb": -0.84, "p": 0.3127343632818359, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.67, "v": 8.85, "rv_gaia": 8.11, "ew_limit_ma": 0.441}, {"star": "6133033601555979648", "z": [-0.88, 1.2, -2.32, 0.7, 2.31, -3.0, -1.37, -1.45, -2.45], "ew_ma": [-0.51, 0.53, -1.12, 0.22, 0.85, -0.34, -0.16, -0.22, -0.25], "z_comb": -1.32, "p": 0.3246337683115844, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.17, "v": 18.7, "rv_gaia": 18.05, "ew_limit_ma": 3.96}, {"star": "5596797039059063680", "z": [3.22, 0.75, -2.4, -2.05, 2.53, -3.84, -2.85, -0.28, 1.23], "ew_ma": [0.4, 0.08, -0.34, -0.34, 0.58, -0.23, -0.17, -0.02, 0.07], "z_comb": -1.05, "p": 0.327983600819959, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.5, "v": -15.0, "rv_gaia": -15.71, "ew_limit_ma": 0.658}, {"star": "2533723670313663872", "z": [-0.48, 0.82, -2.14, -0.35, -0.78, 2.77, 2.91, -4.17, 2.84], "ew_ma": [-0.44, 0.88, -1.74, -0.44, -0.69, 2.13, 2.12, -3.38, 1.87], "z_comb": -0.92, "p": 0.34118294085295736, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9571, "null_sd": 3.04, "v": 18.1, "rv_gaia": 16.81, "ew_limit_ma": 7.961}, {"star": "6454967273273436416", "z": [0.81, -0.18, -2.16, 1.04, -0.78, -0.43, -1.94, 1.07, -2.39], "ew_ma": [0.15, -0.03, -0.51, 0.34, -0.24, -0.03, -0.12, 0.07, -0.17], "z_comb": -0.98, "p": 0.34538273086345683, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9969, "null_sd": 3.54, "v": -31.55, "rv_gaia": -31.9, "ew_limit_ma": 2.69}, {"star": "5584019442620181760", "z": [-3.24, -1.38, 0.21, 1.33, -2.67, 1.43, 1.94, -3.43, 0.78], "ew_ma": [-0.52, -0.16, 0.03, 0.27, -0.63, 0.07, 0.1, -0.17, 0.04], "z_comb": -1.31, "p": 0.35163241837908105, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 4.55, "v": 29.0, "rv_gaia": 28.69, "ew_limit_ma": 3.571}, {"star": "4906784051581971200", "z": [-1.23, 0.95, -2.6, 2.8, -1.19, 1.15, -2.02, 0.5, -1.86], "ew_ma": [-0.11, 0.07, -0.22, 0.26, -0.16, 0.04, -0.07, 0.02, -0.08], "z_comb": -0.44, "p": 0.3553322333883306, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 2.2, "v": 3.55, "rv_gaia": 2.92, "ew_limit_ma": 0.363}, {"star": "4383374219923745024", "z": [1.44, -1.33, 4.31, -5.28, -0.88, 0.68, 1.45, -1.3, 0.67], "ew_ma": [0.39, -0.41, 1.15, -1.12, -0.22, 0.09, 0.17, -0.15, 0.08], "z_comb": -0.12, "p": 0.3590820458977051, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.09, "v": 10.95, "rv_gaia": 10.35, "ew_limit_ma": 1.251}, {"star": "2417456431710276096", "z": [-0.29, -4.3, 0.05, 1.26, 2.7, 0.13, 0.46, 0.58, 3.5], "ew_ma": [-0.04, -0.4, 0.01, 0.12, 0.37, 0.01, 0.02, 0.03, 0.22], "z_comb": -0.99, "p": 0.3665316734163292, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": 8.6, "rv_gaia": 7.88, "ew_limit_ma": 0.543}, {"star": "3532823773073745536", "z": [-2.79, 2.59, -0.58, -1.24, -3.49, 1.8, 1.61, 0.72, -0.48], "ew_ma": [-0.39, 0.32, -0.07, -0.17, -0.46, 0.12, 0.1, 0.05, -0.03], "z_comb": -0.55, "p": 0.392030398480076, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.49, "v": 40.35, "rv_gaia": 39.76, "ew_limit_ma": 0.695}, {"star": "4923433303326992384", "z": [-3.53, -0.81, 0.64, 0.95, 2.3, 2.68, -1.07, 1.91, 0.96], "ew_ma": [-0.45, -0.1, 0.09, 0.11, 0.38, 0.16, -0.06, 0.11, 0.05], "z_comb": -0.21, "p": 0.40447977601119944, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.04, "v": 7.25, "rv_gaia": 6.53, "ew_limit_ma": 0.514}, {"star": "5891531404470141824", "z": [-0.81, -0.81, -1.02, 2.42, -4.18, -0.31, 1.55, -1.39, 0.88], "ew_ma": [-0.2, -0.11, -0.16, 0.3, -0.8, -0.02, 0.12, -0.11, 0.06], "z_comb": -0.42, "p": 0.4071796410179491, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.42, "v": 35.2, "rv_gaia": 34.59, "ew_limit_ma": 0.871}, {"star": "2341817487782612480", "z": [-1.18, -0.77, 0.21, 0.62, 0.36, 1.88, 1.21, 0.23, -0.98], "ew_ma": [-0.13, -0.08, 0.02, 0.07, 0.03, 0.13, 0.07, 0.01, -0.06], "z_comb": -0.24, "p": 0.44837758112094395, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.11, "v": 21.6, "rv_gaia": 20.93, "ew_limit_ma": 0.635}, {"star": "2390702771185162112", "z": [0.83, 0.95, -1.15, -1.16, 3.94, -1.73, 2.96, 3.19, -1.68], "ew_ma": [0.15, 0.17, -0.22, -0.2, 0.77, -0.16, 0.23, 0.26, -0.15], "z_comb": 0.02, "p": 0.44942752862356883, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.61, "v": 10.85, "rv_gaia": 10.28, "ew_limit_ma": 1.325}, {"star": "5876112300125320448", "z": [-2.94, 1.62, -3.39, 3.49, 5.15, -2.52, 1.98, 0.3, -0.76], "ew_ma": [-0.6, 0.14, -0.39, 0.35, 0.45, -0.1, 0.08, 0.01, -0.03], "z_comb": -0.3, "p": 0.45012749362531873, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.62, "v": 38.6, "rv_gaia": 37.83, "ew_limit_ma": 0.729}, {"star": "4768170579173552896", "z": [3.13, -2.03, 0.9, -2.63, 1.61, -0.74, 0.44, 1.4, -0.8], "ew_ma": [0.52, -0.18, 0.15, -0.39, 0.28, -0.04, 0.03, 0.09, -0.05], "z_comb": -0.53, "p": 0.47147642617869107, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.77, "v": -4.85, "rv_gaia": -5.53, "ew_limit_ma": 0.872}, {"star": "6029992663310612096", "z": [-2.93, 0.53, 0.08, 1.34, 0.95, 1.53, 0.79, -2.82, 2.9], "ew_ma": [-1.38, 0.3, 0.04, 0.32, 0.22, 0.22, 0.11, -0.48, 0.48], "z_comb": 0.22, "p": 0.4741262936853157, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.79, "v": 14.75, "rv_gaia": 14.08, "ew_limit_ma": 3.051}, {"star": "5357075947709011456", "z": [0.08, 0.42, -1.71, 1.94, 0.91, -2.4, 2.09, -0.22, -2.1], "ew_ma": [0.01, 0.04, -0.22, 0.38, 0.15, -0.13, 0.1, -0.01, -0.13], "z_comb": -0.1, "p": 0.48217589120543974, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.54, "v": 21.5, "rv_gaia": 21.19, "ew_limit_ma": 0.68}, {"star": "5848156426657892480", "z": [4.62, -0.63, -0.51, -1.3, 0.61, -1.78, 0.62, 0.94, -3.29], "ew_ma": [0.46, -0.06, -0.05, -0.2, 0.11, -0.09, 0.03, 0.04, -0.17], "z_comb": 0.03, "p": 0.49462526873656315, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.37, "v": -30.0, "rv_gaia": -30.56, "ew_limit_ma": 0.53}, {"star": "5609058277323483392", "z": [0.29, 1.37, -0.09, -2.01, -3.63, -2.26, 1.17, -2.38, 6.52], "ew_ma": [0.09, 0.39, -0.03, -0.62, -1.31, -0.25, 0.11, -0.25, 0.79], "z_comb": -0.03, "p": 0.49807509624518775, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.39, "v": 73.15, "rv_gaia": 72.42, "ew_limit_ma": 3.058}, {"star": "3480332916165099904", "z": [-3.56, 0.24, 1.52, 2.01, 2.87, 2.62, -0.37, -4.12, -2.25], "ew_ma": [-0.41, 0.02, 0.18, 0.26, 0.7, 0.14, -0.02, -0.19, -0.11], "z_comb": 0.41, "p": 0.512174391280436, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.43, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.642}, {"star": "6802426038708609536", "z": [3.59, -4.17, -1.58, 0.96, 0.74, 1.98, -0.83, 1.64, 3.72], "ew_ma": [0.59, -0.68, -0.27, 0.17, 0.14, 0.11, -0.04, 0.09, 0.23], "z_comb": -0.59, "p": 0.5136243187840608, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.06, "v": -15.9, "rv_gaia": -16.09, "ew_limit_ma": 1.455}, {"star": "6153706477443518976", "z": [3.24, 0.49, -0.73, -1.12, -1.63, -0.78, -0.29, 1.03, 0.78], "ew_ma": [0.69, 0.07, -0.17, -0.29, -0.78, -0.06, -0.02, 0.07, 0.05], "z_comb": 0.43, "p": 0.520273986300685, "n_lines": 9, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.3, "v": -25.7, "rv_gaia": -26.31, "ew_limit_ma": 1.048}, {"star": "4975284381908412672", "z": [-0.83, 1.53, 0.92, -1.55, -0.29, -0.66, -2.47, -0.59, -2.09], "ew_ma": [-0.08, 0.15, 0.09, -0.15, -0.03, -0.05, -0.16, -0.04, -0.15], "z_comb": -0.24, "p": 0.5209239538023099, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.95, "v": -10.2, "rv_gaia": -10.92, "ew_limit_ma": 0.396}, {"star": "6764687466752221824", "z": [5.53, 1.13, -1.63, -2.31, -2.39, -2.04, 0.25, -1.32, 3.75], "ew_ma": [1.13, 0.19, -0.34, -0.39, -1.08, -0.15, 0.02, -0.1, 0.3], "z_comb": 0.46, "p": 0.5239738013099345, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.4, "v": -41.95, "rv_gaia": -42.55, "ew_limit_ma": 1.166}, {"star": "5906633952564270848", "z": [4.37, -1.67, 0.15, -1.96, -4.61, 1.63, 0.34, 2.13, 2.02], "ew_ma": [0.97, -0.38, 0.03, -0.4, -1.07, 0.14, 0.03, 0.22, 0.18], "z_comb": 0.11, "p": 0.5498725063746812, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9978, "null_sd": 3.5, "v": -7.0, "rv_gaia": -7.68, "ew_limit_ma": 2.098}, {"star": "3750995604764854400", "z": [3.91, 0.28, -1.23, -0.65, 0.83, -0.22, 0.56, -2.26, -1.1], "ew_ma": [0.4, 0.02, -0.1, -0.05, 0.16, -0.01, 0.03, -0.11, -0.05], "z_comb": 0.19, "p": 0.5510224488775561, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.97, "v": -17.45, "rv_gaia": -17.93, "ew_limit_ma": 0.352}, {"star": "4041857799496807936", "z": [-5.37, 0.99, -1.11, 2.22, 4.31, 4.1, -2.18, 1.45, 1.27], "ew_ma": [-1.39, 0.3, -0.33, 0.47, 0.97, 0.32, -0.17, 0.12, 0.11], "z_comb": -0.18, "p": 0.5559222038898055, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.3, "v": 3.05, "rv_gaia": 2.44, "ew_limit_ma": 1.263}, {"star": "4117290138348536064", "z": [-2.15, -0.61, 0.87, 2.2, -1.14, -2.38, 0.86, -0.34, 0.69], "ew_ma": [-0.32, -0.09, 0.15, 0.53, -0.21, -0.19, 0.07, -0.03, 0.06], "z_comb": 0.32, "p": 0.5731713414329284, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.59, "v": 10.6, "rv_gaia": 10.36, "ew_limit_ma": 0.903}, {"star": "6370513647703084544", "z": [-1.03, -2.42, 1.28, 2.69, 3.89, -1.17, -0.22, -0.9, 0.34], "ew_ma": [-0.13, -0.29, 0.15, 0.33, 0.37, -0.07, -0.01, -0.06, 0.02], "z_comb": 0.54, "p": 0.5811709414529274, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.21, "v": 34.95, "rv_gaia": 34.33, "ew_limit_ma": 0.747}, {"star": "3789271459953459328", "z": [-2.0, 0.82, -1.3, 2.65, 1.18, -0.08, -0.07, 1.36, -0.33], "ew_ma": [-0.46, 0.18, -0.35, 0.49, 0.28, -0.01, -0.01, 0.18, -0.04], "z_comb": 0.39, "p": 0.5852207389630518, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9937, "null_sd": 2.0, "v": 19.15, "rv_gaia": 18.5, "ew_limit_ma": 1.396}, {"star": "3182634954624823168", "z": [0.14, -2.24, 2.89, -1.63, 2.84, 1.4, 0.37, 2.83, -0.99], "ew_ma": [0.03, -0.5, 0.76, -0.32, 0.68, 0.13, 0.03, 0.23, -0.09], "z_comb": 0.33, "p": 0.5869706514674267, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.47, "v": 5.4, "rv_gaia": 4.81, "ew_limit_ma": 1.93}, {"star": "5481848424118748672", "z": [-3.36, 1.52, 0.94, -0.14, -0.91, 2.3, 0.71, 0.71, 9.19], "ew_ma": [-2.26, 0.87, 0.63, -0.12, -0.82, 0.33, 0.11, 0.15, 1.81], "z_comb": 1.43, "p": 0.5885205739713014, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9787, "null_sd": 3.62, "v": 32.25, "rv_gaia": 31.45, "ew_limit_ma": 6.188}, {"star": "6270906415441316224", "z": [2.09, -2.19, -0.93, 0.94, -1.42, 1.0, 0.04, -1.69, 2.15], "ew_ma": [0.6, -0.44, -0.24, 0.3, -0.45, 0.05, 0.0, -0.11, 0.14], "z_comb": -0.44, "p": 0.5900204989750513, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9915, "null_sd": 7.13, "v": -21.9, "rv_gaia": -22.28, "ew_limit_ma": 6.056}, {"star": "6603827644293770624", "z": [-2.97, -0.26, 2.94, 1.05, 1.43, -1.87, 0.32, -0.3, -4.4], "ew_ma": [-0.4, -0.03, 0.4, 0.16, 0.2, -0.14, 0.02, -0.02, -0.35], "z_comb": 0.48, "p": 0.5907204639768011, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.16, "v": 1.1, "rv_gaia": 0.39, "ew_limit_ma": 0.818}, {"star": "4657193606465368704", "z": [3.29, 0.07, -3.26, 0.2, 0.22, 1.38, 1.46, 0.22, 6.43], "ew_ma": [2.02, 0.04, -1.62, 0.06, 0.08, 0.19, 0.22, 0.04, 0.82], "z_comb": 0.37, "p": 0.607969601519924, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9911, "null_sd": 3.29, "v": 14.5, "rv_gaia": 13.99, "ew_limit_ma": 3.201}, {"star": "2966790170574625408", "z": [0.08, 1.22, 1.66, -1.36, 1.71, -4.04, -1.99, -0.77, -1.41], "ew_ma": [0.01, 0.13, 0.21, -0.31, 0.29, -0.21, -0.1, -0.04, -0.07], "z_comb": 0.42, "p": 0.6267186640667967, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 3.95, "v": 38.45, "rv_gaia": 37.83, "ew_limit_ma": 3.094}, {"star": "5765846127180770432", "z": [-0.03, -1.88, 3.52, -0.57, -2.62, -1.07, -0.1, -0.06, -1.69], "ew_ma": [-0.01, -0.63, 1.36, -0.17, -0.76, -0.18, -0.02, -0.01, -0.29], "z_comb": 0.34, "p": 0.6460176991150443, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 1.86, "v": -4.25, "rv_gaia": -4.87, "ew_limit_ma": 1.597}, {"star": "6544549880063909248", "z": [-2.36, -0.79, -1.12, 5.21, 2.96, 2.12, -1.0, -0.22, -0.04], "ew_ma": [-0.43, -0.12, -0.2, 0.62, 0.46, 0.15, -0.07, -0.01, -0.0], "z_comb": 0.86, "p": 0.6488175591220439, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.29, "v": 21.4, "rv_gaia": 20.78, "ew_limit_ma": 0.944}, {"star": "6914237987476826624", "z": [2.03, -2.15, 2.16, -0.54, -1.82, -1.15, 0.95, 2.74, -1.42], "ew_ma": [0.22, -0.25, 0.22, -0.05, -0.2, -0.09, 0.07, 0.21, -0.11], "z_comb": 0.57, "p": 0.6552172391380431, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.46, "v": 3.8, "rv_gaia": 3.1, "ew_limit_ma": 0.685}, {"star": "4847282124418880256", "z": [1.2, -0.23, -1.27, 2.57, 1.52, 2.56, 0.72, -1.25, -0.72], "ew_ma": [0.19, -0.03, -0.24, 0.55, 0.33, 0.12, 0.04, -0.06, -0.04], "z_comb": 0.91, "p": 0.656367181640918, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9947, "null_sd": 2.93, "v": 5.05, "rv_gaia": 4.36, "ew_limit_ma": 1.922}, {"star": "5459060117921483008", "z": [-0.89, -1.38, 5.47, -0.96, -5.72, -2.78, 2.31, 0.27, -0.0], "ew_ma": [-0.11, -0.15, 0.61, -0.11, -0.54, -0.19, 0.16, 0.02, -0.0], "z_comb": 1.29, "p": 0.6588670566471676, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.61, "v": 44.6, "rv_gaia": 43.93, "ew_limit_ma": 0.72}, {"star": "4356054757585316992", "z": [5.63, -1.07, -0.75, 0.12, 5.6, -1.59, -1.51, -0.72, 1.69], "ew_ma": [0.84, -0.17, -0.12, 0.02, 2.25, -0.09, -0.08, -0.04, 0.1], "z_comb": 1.34, "p": 0.6892655367231638, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.33, "v": -19.7, "rv_gaia": -20.28, "ew_limit_ma": 0.943}, {"star": "6612242034982766848", "z": [2.02, 3.9, 0.62, 0.2, 2.28, -1.84, 0.01, -1.23, -4.37], "ew_ma": [0.43, 0.69, 0.13, 0.04, 0.56, -0.1, 0.0, -0.09, -0.3], "z_comb": 2.55, "p": 0.7224138793060347, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.72, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 1.925}, {"star": "5493588665684618752", "z": [-0.63, 2.32, -0.14, 3.24, -0.09, -0.9, 2.44, -1.45, -2.92], "ew_ma": [-0.17, 0.44, -0.03, 0.58, -0.02, -0.06, 0.15, -0.1, -0.19], "z_comb": 2.01, "p": 0.7461626918654067, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 3.08, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 1.754}, {"star": "6606890608810806528", "z": [5.39, 1.07, -0.26, -2.22, 0.51, -2.21, 4.16, -4.36, 0.66], "ew_ma": [2.48, 0.42, -0.09, -0.73, 0.34, -0.22, 0.33, -0.37, 0.05], "z_comb": 0.98, "p": 0.7564621768911555, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.61, "v": -19.6, "rv_gaia": -20.32, "ew_limit_ma": 3.068}, {"star": "5461620846141553024", "z": [-1.56, 0.03, -0.69, 2.34, 1.58, 1.26, 4.33, 2.27, 2.54], "ew_ma": [-0.25, 0.0, -0.1, 0.27, 0.25, 0.08, 0.28, 0.15, 0.15], "z_comb": 1.2, "p": 0.7659617019149042, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.42, "v": 27.55, "rv_gaia": 26.94, "ew_limit_ma": 0.964}, {"star": "5559265690666327168", "z": [0.23, 2.5, 0.38, 2.75, -3.21, 0.81, 2.01, -2.45, -0.6], "ew_ma": [0.05, 0.33, 0.09, 0.64, -0.63, 0.05, 0.12, -0.17, -0.05], "z_comb": 2.53, "p": 0.7684615769211539, "n_lines": 9, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.92, "v": 89.25, "rv_gaia": 88.55, "ew_limit_ma": 1.676}, {"star": "2981583790287411200", "z": [-0.32, -0.69, 0.64, 4.9, -4.89, 0.24, 0.61, -1.91, -0.57], "ew_ma": [-0.03, -0.05, 0.06, 0.6, -0.58, 0.01, 0.03, -0.08, -0.03], "z_comb": 1.67, "p": 0.7709614519274036, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.32, "v": 41.15, "rv_gaia": 40.43, "ew_limit_ma": 0.662}, {"star": "2918894859953947392", "z": [-0.16, 1.58, 1.56, 1.33, -1.87, -2.16, -0.24, 1.08, -0.07], "ew_ma": [-0.02, 0.15, 0.15, 0.11, -0.18, -0.11, -0.01, 0.05, -0.0], "z_comb": 2.1, "p": 0.7741612919354033, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.67, "v": -9.9, "rv_gaia": -10.34, "ew_limit_ma": 0.941}, {"star": "5725122999630404096", "z": [-1.76, 1.8, 0.81, 3.05, -2.07, -0.33, 4.16, 0.14, -5.02], "ew_ma": [-0.28, 0.16, 0.15, 0.5, -0.32, -0.02, 0.2, 0.01, -0.27], "z_comb": 1.74, "p": 0.783460826958652, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9958, "null_sd": 2.75, "v": 33.35, "rv_gaia": 33.23, "ew_limit_ma": 0.915}, {"star": "5395795730687103488", "z": [0.31, 0.87, 1.58, -0.01, -3.92, 0.41, -1.73, 0.57, 5.27], "ew_ma": [0.05, 0.09, 0.23, -0.0, -0.54, 0.04, -0.13, 0.04, 0.46], "z_comb": 1.81, "p": 0.7846607669616519, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9964, "null_sd": 2.43, "v": 44.0, "rv_gaia": 43.4, "ew_limit_ma": 0.892}, {"star": "5548164986925169024", "z": [1.86, 0.44, 2.55, -0.55, -2.15, 1.09, -0.27, -0.06, -1.34], "ew_ma": [0.24, 0.03, 0.25, -0.1, -0.27, 0.05, -0.01, -0.0, -0.06], "z_comb": 1.87, "p": 0.8105094745262736, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.37, "v": 52.4, "rv_gaia": 51.69, "ew_limit_ma": 0.643}, {"star": "3646061719703116032", "z": [1.07, 3.36, -1.58, 1.69, -3.64, -1.56, 1.01, -0.87, 0.14], "ew_ma": [0.15, 0.31, -0.14, 0.16, -0.34, -0.1, 0.06, -0.05, 0.01], "z_comb": 1.58, "p": 0.831658417079146, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 1.9, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.574}, {"star": "6128366415218881536", "z": [-0.18, -1.09, -2.46, 9.18, 2.87, 0.6, -0.01, 0.51, -4.55], "ew_ma": [-0.05, -0.13, -0.34, 0.81, 0.33, 0.03, -0.0, 0.03, -0.28], "z_comb": 2.03, "p": 0.8343082845857707, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.82, "v": 31.2, "rv_gaia": 30.47, "ew_limit_ma": 1.063}, {"star": "5569858798004394624", "z": [-1.36, 3.19, 0.63, 0.56, -5.5, 3.51, 1.68, -2.96, 3.16], "ew_ma": [-0.18, 0.31, 0.1, 0.07, -0.64, 0.18, 0.08, -0.16, 0.18], "z_comb": 1.86, "p": 0.8350582470876456, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9974, "null_sd": 2.37, "v": 57.1, "rv_gaia": 56.33, "ew_limit_ma": 0.803}, {"star": "6703245382605547520", "z": [-2.6, 2.2, -0.38, 3.39, -2.39, 0.55, 1.18, -0.19, 1.46], "ew_ma": [-0.24, 0.18, -0.04, 0.3, -0.21, 0.03, 0.05, -0.01, 0.08], "z_comb": 1.71, "p": 0.8512574371281436, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.83, "v": 33.15, "rv_gaia": 32.63, "ew_limit_ma": 0.455}, {"star": "5855730584310531200", "z": [-1.26, 1.68, 1.48, 2.68, -3.65, 1.62, 1.41, -1.72, 8.12], "ew_ma": [-0.47, 0.41, 0.54, 1.02, -1.28, 0.12, 0.11, -0.14, 0.7], "z_comb": 3.31, "p": 0.8525073746312685, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9962, "null_sd": 3.79, "v": 105.15, "rv_gaia": 104.53, "ew_limit_ma": 5.759}, {"star": "5540006949934104448", "z": [3.1, 1.16, 3.72, -1.15, -5.13, -1.79, 3.52, -1.89, -1.09], "ew_ma": [0.61, 0.16, 1.15, -0.22, -1.25, -0.11, 0.24, -0.14, -0.07], "z_comb": 2.72, "p": 0.8629068546572671, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9966, "null_sd": 2.5, "v": 50.1, "rv_gaia": 49.31, "ew_limit_ma": 1.668}, {"star": "2475331597059676288", "z": [2.38, -0.94, 1.93, 1.84, -1.78, -0.89, 0.65, 0.85, -0.58], "ew_ma": [0.91, -0.31, 0.58, 0.38, -0.54, -0.11, 0.07, 0.1, -0.07], "z_comb": 2.22, "p": 0.8695065246737663, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.5, "v": 22.4, "rv_gaia": 21.78, "ew_limit_ma": 2.207}, {"star": "5553647083168192512", "z": [-2.44, 2.23, 4.87, -0.67, -0.67, 4.58, -0.69, -2.71, 2.49], "ew_ma": [-0.76, 0.36, 1.2, -0.15, -0.19, 0.27, -0.04, -0.18, 0.19], "z_comb": 3.12, "p": 0.8772061396930153, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9979, "null_sd": 3.09, "v": 60.35, "rv_gaia": 59.67, "ew_limit_ma": 1.983}, {"star": "5320952798822552064", "z": [1.87, 0.95, 2.68, 4.18, 1.77, 0.5, 3.84, 1.89, -0.79], "ew_ma": [0.15, 0.07, 0.22, 0.34, 0.15, 0.03, 0.2, 0.1, -0.04], "z_comb": 5.22, "p": 0.9488525573721314, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.88, "v": 12.4, "rv_gaia": 11.87, "ew_limit_ma": 0.684}, {"star": "6088054505011960832", "z": [0.49, 2.1, 4.6, 2.0, -5.3, 3.05, -2.41, -2.01, 0.16], "ew_ma": [0.08, 0.2, 0.63, 0.28, -0.71, 0.15, -0.12, -0.1, 0.01], "z_comb": 4.43, "p": 0.9492025398730064, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.51, "v": 59.3, "rv_gaia": 58.66, "ew_limit_ma": 0.946}, {"star": "4176501313320676992", "z": [3.86, 2.22, 0.95, 0.4, 3.47, -1.9, -2.24, 2.46, -0.13], "ew_ma": [0.59, 0.27, 0.11, 0.05, 1.17, -0.14, -0.14, 0.15, -0.01], "z_comb": 3.44, "p": 0.9553522323883806, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 1.95, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.793}, {"star": "4777373903814124032", "z": [1.58, 1.11, 4.38, 0.45, -4.47, 0.23, -0.07, 1.66, 2.86], "ew_ma": [0.72, 0.2, 1.67, 0.09, -1.02, 0.02, -0.0, 0.11, 0.24], "z_comb": 4.13, "p": 0.9638518074096295, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.37, "v": 65.0, "rv_gaia": 64.22, "ew_limit_ma": 2.154}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pm_HARPS_inject.json b/papers/short_lived_elements/data/element_Pm_HARPS_inject.json new file mode 100644 index 0000000000000000000000000000000000000000..c7f68072e0198c7e4dc1860c898c9b91e628b15e --- /dev/null +++ b/papers/short_lived_elements/data/element_Pm_HARPS_inject.json @@ -0,0 +1 @@ +{"lines": [[4137.95, 0.5946083907023679], [4157.86, 0.8761025232840707], [4186.03, 1.0], [4297.78, 0.803513223740331], [4381.88, 0.12126304714981384], [5546.08, 0.13363452343538146], [5556.88, 0.10857201655999942], [5561.73, 0.17799874937638469], [5576.02, 0.2026213150981214]], "results": [{"star": "GaiaDR32324785228033780608", "z": [1.94, -2.64, -0.08, -0.68, -1.6, 0.28, 2.58, -2.62, -1.44], "ew_ma": [2.36, -2.56, -0.09, -0.57, -1.22, 0.05, 0.49, -0.6, -0.29], "z_comb": -1.43, "p": 0.33558322083895803, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9608}, {"star": "GaiaDR32341817487782612480", "z": [-1.71, 1.85, 0.8, -4.01, 0.66, -0.99, 2.03, 0.41, 0.53], "ew_ma": [-0.54, 0.58, 0.3, -1.32, 0.21, -0.09, 0.18, 0.03, 0.05], "z_comb": -0.87, "p": 0.30293485325733716, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973}, {"star": "GaiaDR32390702771185162112", "z": [-0.36, 0.67, 0.27, -1.08, -0.67, -0.88, -1.5, 6.52, -1.18], "ew_ma": [-0.22, 0.43, 0.15, -0.39, -0.21, -0.18, -0.31, 1.44, -0.26], "z_comb": 0.2, "p": 0.4823258837058147, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9889}, {"star": "GaiaDR32417456431710276096", "z": [-4.53, -0.91, 1.19, 1.29, -1.68, -1.4, -0.11, -0.59, 2.5], "ew_ma": [-2.05, -0.38, 0.53, 0.73, -0.74, -0.12, -0.01, -0.05, 0.22], "z_comb": -0.74, "p": 0.37398130093495324, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9917}, {"star": "GaiaDR32423292879948720000", "z": [4.42, -0.97, -0.01, 1.84, 0.94, 0.93, -2.07, 0.09, -0.3], "ew_ma": [3.32, -0.64, -0.01, 2.2, 0.99, 0.15, -0.47, 0.03, -0.09], "z_comb": 1.89, "p": 0.6498175091245437, "n_lines": 9, "n_spectra": 6, "twin_r": 0.958}, {"star": "GaiaDR32468730472844294016", "z": [-3.62, -0.53, -0.74, 1.92, 1.92, -1.03, -0.51, 1.96, 0.38], "ew_ma": [-3.26, -0.32, -0.64, 1.34, 1.16, -0.15, -0.06, 0.29, 0.07], "z_comb": -0.79, "p": 0.3511824408779561, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9747}, {"star": "GaiaDR32475331597059676288", "z": [3.73, 2.41, 1.1, 2.33, 1.63, -3.11, -2.45, -2.36, -0.65], "ew_ma": [4.53, 3.15, 1.33, 2.27, 1.49, -0.87, -0.79, -0.86, -0.23], "z_comb": 3.69, "p": 0.87975601219939, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9518}, {"star": "GaiaDR32477815222028038272", "z": [1.62, -0.12, -2.35, -0.75, 0.54, -1.58, -0.46, 1.72, 1.13], "ew_ma": [1.54, -0.1, -1.99, -0.72, 0.44, -0.45, -0.11, 0.51, 0.32], "z_comb": -1.03, "p": 0.2447877606119694, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9445}, {"star": "GaiaDR32523361151179609344", "z": [-2.12, 0.97, -1.49, 1.78, -1.28, -1.34, -1.33, -0.63, -1.23], "ew_ma": [-0.49, 0.2, -0.42, 0.48, -0.28, -0.09, -0.07, -0.03, -0.08], "z_comb": -0.77, "p": 0.3792310384480776, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9787}, {"star": "GaiaDR32533723670313663872", "z": [0.54, 1.56, 6.9, 2.21, -0.15, -1.95, -0.25, 0.96, 1.76], "ew_ma": [0.56, 1.75, 6.15, 2.4, -0.14, -1.58, -0.18, 0.9, 1.14], "z_comb": 6.23, "p": 0.9912004399780011, "n_lines": 9, "n_spectra": 6, "twin_r": 0.942}, {"star": "GaiaDR32585856120791459584", "z": [1.5, -1.91, -1.52, -3.86, 0.45, -13.27, 0.72, 1.29, -2.41], "ew_ma": [0.55, -0.64, -0.56, -1.26, 0.17, -1.5, 0.08, 0.15, -0.27], "z_comb": -4.3, "p": 0.096045197740113, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9844}, {"star": "GaiaDR32918894859953947392", "z": [1.2, -2.16, 1.99, 1.08, -1.38, 1.84, -0.48, 1.54, -0.4], "ew_ma": [0.83, -1.36, 1.48, 1.08, -1.04, 0.19, -0.06, 0.29, -0.1], "z_comb": 1.12, "p": 0.6903154842257887, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9655}, {"star": "GaiaDR32966790170574625408", "z": [-1.93, 0.24, -1.85, -1.94, 3.5, -3.97, 2.92, 0.25, -1.7], "ew_ma": [-0.51, 0.04, -0.57, -0.94, 1.47, -0.31, 0.19, 0.02, -0.15], "z_comb": -2.62, "p": 0.27073646317684114, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9945}, {"star": "GaiaDR32981583790287411200", "z": [-0.57, -0.47, 0.7, -5.1, 0.54, 0.18, 0.25, -2.1, 1.13], "ew_ma": [-0.7, -0.55, 1.09, -7.35, 0.68, 0.03, 0.05, -0.43, 0.34], "z_comb": -2.46, "p": 0.224038798060097, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9247}, {"star": "GaiaDR33182634954624823168", "z": [1.98, -0.81, 0.32, -0.66, 1.06, -0.8, -1.06, -3.87, -0.85], "ew_ma": [1.59, -0.57, 0.23, -0.37, 0.65, -0.14, -0.16, -0.62, -0.16], "z_comb": -0.41, "p": 0.391930403479826, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9903}, {"star": "GaiaDR33345968334645285376", "z": [3.41, 4.12, 1.65, 1.91, -7.72, -0.77, -0.73, 6.36, 1.2], "ew_ma": [2.12, 2.32, 1.09, 0.64, -2.43, -0.12, -0.11, 1.11, 0.21], "z_comb": 5.34, "p": 0.9707514624268787, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9905}, {"star": "GaiaDR33346787986201584896", "z": [-0.52, -4.09, -1.28, 2.01, 0.53, -0.71, -1.38, -0.07, 5.97], "ew_ma": [-0.32, -2.54, -1.23, 1.69, 0.42, -0.11, -0.24, -0.02, 2.06], "z_comb": -1.5, "p": 0.27298635068246585, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9793}, {"star": "GaiaDR33480332916165099904", "z": [9.67, 0.2, 1.36, -2.67, -0.61, 0.19, -0.48, 0.79, -1.9], "ew_ma": [3.69, 0.08, 0.56, -1.55, -0.38, 0.02, -0.06, 0.1, -0.24], "z_comb": 2.82, "p": 0.8108094595270237, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9917}, {"star": "GaiaDR33532823773073745536", "z": [1.5, -2.6, 2.0, 2.97, 1.12, -0.16, 0.02, 7.61, -0.06], "ew_ma": [2.8, -4.16, 3.89, 5.6, 1.95, -0.06, 0.01, 2.78, -0.03], "z_comb": 2.63, "p": 0.7247637618119094, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9247}, {"star": "GaiaDR33585098090614578688", "z": [0.57, 0.19, 1.24, 0.44, 3.61, -2.39, -0.18, -21.98, -5.39], "ew_ma": [0.19, 0.05, 0.45, 0.24, 1.63, -0.23, -0.02, -2.61, -0.54], "z_comb": -1.65, "p": 0.3622818859057047, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9779}, {"star": "GaiaDR33646061719703116032", "z": [0.38, -1.39, 1.97, -1.69, -0.89, 6.08, -3.23, 1.38, 1.16], "ew_ma": [0.33, -1.09, 2.06, -1.66, -0.79, 1.12, -0.46, 0.22, 0.24], "z_comb": 0.27, "p": 0.5318234088295585, "n_lines": 9, "n_spectra": 6, "twin_r": 0.981}, {"star": "GaiaDR33750995604764854400", "z": [-0.74, 0.93, -1.55, -0.23, 0.58, 11.11, -0.91, 5.76, -0.39], "ew_ma": [-0.49, 0.56, -1.02, -0.2, 0.37, 1.95, -0.16, 1.1, -0.08], "z_comb": 0.62, "p": 0.6607169641517924, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9409}, {"star": "GaiaDR33786697056556771584", "z": [3.57, 0.4, -0.06, -3.33, 0.63, 1.01, 1.37, 0.14, 0.87], "ew_ma": [2.3, 0.22, -0.03, -1.82, 0.31, 0.17, 0.2, 0.02, 0.15], "z_comb": 0.17, "p": 0.5135243237838109, "n_lines": 9, "n_spectra": 6, "twin_r": 0.96}, {"star": "GaiaDR33789271459953459328", "z": [-3.55, 1.21, -0.07, -0.36, -0.19, 0.97, -0.02, 0.13, -0.37], "ew_ma": [-2.47, 0.72, -0.05, -0.2, -0.1, 0.22, -0.0, 0.03, -0.1], "z_comb": -0.8, "p": 0.39888005599720017, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9465}, {"star": "GaiaDR33799626935341796096", "z": [2.08, -2.37, 2.7, -0.22, 0.49, -0.67, -5.5, 1.74, -5.2], "ew_ma": [1.79, -1.47, 1.8, -0.12, 0.28, -0.11, -0.79, 0.29, -1.06], "z_comb": 0.19, "p": 0.5378231088445578, "n_lines": 9, "n_spectra": 6, "twin_r": 0.987}, {"star": "GaiaDR33811594088617869056", "z": [1.49, 1.63, -5.07, -0.4, 1.56, -0.5, -1.3, -4.04, 2.37], "ew_ma": [0.42, 0.46, -1.25, -0.08, 0.34, -0.06, -0.16, -0.48, 0.29], "z_comb": -1.97, "p": 0.19619019049047548, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9889}, {"star": "GaiaDR34041857799496807936", "z": [-3.03, 2.71, -1.01, 3.14, 0.69, 4.68, 2.67, -1.15, 2.16], "ew_ma": [-1.01, 0.93, -0.31, 0.58, 0.16, 0.61, 0.34, -0.15, 0.3], "z_comb": 1.96, "p": 0.832158392080396, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9771}, {"star": "GaiaDR34176501313320676992", "z": [-1.1, -2.56, -0.77, -0.04, -1.6, -0.12, 0.63, 0.29, -0.08], "ew_ma": [-0.76, -1.56, -0.48, -0.03, -1.27, -0.02, 0.1, 0.05, -0.02], "z_comb": -2.24, "p": 0.263786810659467, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9409}, {"star": "GaiaDR34356054757585316992", "z": [0.42, 1.38, -1.1, -1.7, -1.55, -0.68, -0.75, 4.27, 0.32], "ew_ma": [0.22, 0.7, -0.57, -0.83, -0.7, -0.1, -0.11, 0.69, 0.05], "z_comb": -0.32, "p": 0.5291735413229338, "n_lines": 9, "n_spectra": 6, "twin_r": 0.987}, {"star": "GaiaDR34383374219923745024", "z": [2.48, -2.28, -0.09, 2.46, -0.52, 1.33, 2.38, -4.35, -1.83], "ew_ma": [2.37, -2.1, -0.09, 1.13, -0.24, 0.25, 0.47, -0.91, -0.42], "z_comb": 0.35, "p": 0.4653767311634418, "n_lines": 9, "n_spectra": 6, "twin_r": 0.987}, {"star": "GaiaDR34657193606465368704", "z": [-2.51, -0.39, -0.72, 0.95, -1.29, 1.34, -4.45, -1.11, -3.42], "ew_ma": [-2.11, -0.36, -0.56, 0.46, -0.69, 0.28, -0.99, -0.28, -0.86], "z_comb": -1.85, "p": 0.3882805859707015, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9425}, {"star": "GaiaDR34847282124418880256", "z": [-0.44, -0.66, 0.49, 0.07, -1.27, -2.46, -1.55, -1.07, -1.15], "ew_ma": [-0.34, -0.46, 0.39, 0.07, -0.89, -0.28, -0.21, -0.17, -0.27], "z_comb": -0.81, "p": 0.47497625118744063, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9434}, {"star": "GaiaDR34867596937475715968", "z": [-3.99, -2.93, -2.28, -2.86, 4.01, -2.51, 0.29, -4.03, -0.94], "ew_ma": [-3.11, -2.28, -1.93, -1.32, 1.85, -0.7, 0.08, -1.26, -0.27], "z_comb": -6.03, "p": 0.008499575021248937, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9905}, {"star": "GaiaDR34906784051581971200", "z": [-1.57, 1.69, -1.43, 1.28, 0.37, 4.18, 0.46, -0.6, 3.05], "ew_ma": [-1.21, 1.26, -1.34, 1.26, 0.3, 0.42, 0.06, -0.09, 0.73], "z_comb": 0.77, "p": 0.632218389080546, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9502}, {"star": "GaiaDR34975284381908412672", "z": [-2.53, 1.57, -1.43, -4.0, 2.93, 4.24, -1.75, -0.13, 1.6], "ew_ma": [-1.56, 0.78, -0.72, -3.06, 1.91, 0.6, -0.26, -0.02, 0.23], "z_comb": -2.21, "p": 0.23333833308334584, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9655}, {"star": "GaiaDR35320952798822552064", "z": [-2.96, -0.68, 0.46, -1.74, -1.28, 0.28, -0.81, 1.6, -0.95], "ew_ma": [-1.25, -0.27, 0.19, -0.81, -0.46, 0.04, -0.11, 0.25, -0.18], "z_comb": -2.01, "p": 0.22763861806909655, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9774}, {"star": "GaiaDR35395795730687103488", "z": [-1.48, -2.91, -1.88, 0.19, -3.85, 3.96, -0.05, 12.72, -0.94], "ew_ma": [-0.86, -1.52, -1.05, 0.13, -2.15, 0.45, -0.01, 1.69, -0.13], "z_comb": -1.79, "p": 0.2625868706564672, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9802}, {"star": "GaiaDR35452492082132835840", "z": [2.24, -0.93, 0.72, -1.39, -0.53, -1.01, 0.23, 0.36, 0.87], "ew_ma": [0.73, -0.31, 0.25, -0.49, -0.15, -0.12, 0.02, 0.05, 0.16], "z_comb": 0.11, "p": 0.49802509874506273, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9765}, {"star": "GaiaDR35459060117921483008", "z": [1.17, 1.16, -0.53, -2.18, 0.46, -1.68, -0.45, -6.78, -0.13], "ew_ma": [0.17, 0.12, -0.07, -0.3, 0.06, -0.11, -0.03, -0.47, -0.01], "z_comb": -1.19, "p": 0.37143142842857857, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9952}, {"star": "GaiaDR35479222240596469632", "z": [-3.68, -3.49, -1.32, -1.13, -4.8, 2.33, 2.31, 1.32, 0.13], "ew_ma": [-3.73, -3.72, -1.28, -0.77, -3.53, 0.9, 0.95, 0.61, 0.04], "z_comb": -4.26, "p": 0.1286435678216089, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9518}, {"star": "GaiaDR35481848424118748672", "z": [0.74, -1.08, 1.25, -0.52, 0.87, 1.83, 0.0, -4.64, 1.47], "ew_ma": [0.4, -0.49, 0.69, -0.34, 0.67, 0.3, 0.0, -1.08, 0.48], "z_comb": 0.09, "p": 0.4945752712364382, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9156}, {"star": "GaiaDR35493588665684618752", "z": [-1.13, 0.79, -0.85, -1.65, -1.02, 1.04, 1.63, 4.11, 0.96], "ew_ma": [-0.68, 0.4, -0.4, -0.62, -0.36, 0.16, 0.24, 0.59, 0.16], "z_comb": -0.61, "p": 0.4766761661916904, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9903}, {"star": "GaiaDR35540006949934104448", "z": [-1.68, 0.98, 3.62, 4.53, -2.36, -1.9, -2.18, 5.34, 1.33], "ew_ma": [-1.99, 1.15, 5.44, 4.66, -2.48, -0.56, -0.63, 1.82, 0.47], "z_comb": 4.45, "p": 0.8904554772261387, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9175}, {"star": "GaiaDR35548164986925169024", "z": [-0.38, -0.09, -1.46, -1.28, 0.32, 1.76, 3.66, 0.75, -1.74], "ew_ma": [-0.42, -0.1, -2.0, -1.34, 0.29, 0.41, 0.81, 0.2, -0.61], "z_comb": -1.38, "p": 0.2986350682465877, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9175}, {"star": "GaiaDR35553647083168192512", "z": [1.83, -2.32, -4.43, 1.13, 0.19, -0.55, 2.29, -2.92, 1.88], "ew_ma": [1.6, -1.98, -3.92, 0.72, 0.13, -0.14, 0.62, -0.99, 0.55], "z_comb": -2.59, "p": 0.1926903654817259, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9215}, {"star": "GaiaDR35584019442620181760", "z": [-3.15, 2.38, -1.46, -0.29, 0.45, -0.18, -0.31, -1.54, -2.03], "ew_ma": [-1.36, 0.93, -0.76, -0.21, 0.21, -0.01, -0.03, -0.15, -0.27], "z_comb": -1.27, "p": 0.3713814309284536, "n_lines": 9, "n_spectra": 6, "twin_r": 0.958}, {"star": "GaiaDR35586381090520538880", "z": [-0.82, -1.1, 1.18, -1.22, -0.48, -2.59, -0.53, 2.91, 1.86], "ew_ma": [-0.28, -0.41, 0.45, -0.48, -0.18, -0.25, -0.05, 0.3, 0.17], "z_comb": -0.48, "p": 0.4763261836908155, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9872}, {"star": "GaiaDR35725122999630404096", "z": [-4.8, -0.23, -1.08, 1.94, 2.58, -5.17, 3.47, -11.27, -0.94], "ew_ma": [-2.38, -0.11, -0.61, 1.77, 2.09, -0.61, 0.36, -1.34, -0.15], "z_comb": -2.82, "p": 0.11064446777661117, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9268}, {"star": "GaiaDR35790389872417570816", "z": [-0.67, 0.18, 0.03, -1.62, 3.2, 9.36, -1.84, -7.35, -2.33], "ew_ma": [-0.29, 0.07, 0.02, -0.66, 1.34, 0.87, -0.2, -1.07, -0.41], "z_comb": -1.09, "p": 0.3472326383680816, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9844}, {"star": "GaiaDR35798962867668048768", "z": [0.32, 0.7, 1.71, -1.79, -1.9, -5.94, 0.19, -0.39, 0.24], "ew_ma": [0.24, 0.58, 1.6, -0.63, -0.75, -1.36, 0.05, -0.09, 0.05], "z_comb": 0.03, "p": 0.5623218839058047, "n_lines": 9, "n_spectra": 6, "twin_r": 0.987}, {"star": "GaiaDR35848156426657892480", "z": [-0.06, -0.66, -1.05, -0.39, 2.97, 6.3, 13.29, -7.02, 0.81], "ew_ma": [-0.03, -0.3, -0.49, -0.26, 1.52, 0.52, 1.37, -0.93, 0.13], "z_comb": -0.24, "p": 0.5163241837908105, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9066}, {"star": "GaiaDR35876112300125320448", "z": [0.41, 2.17, 2.45, 0.26, -1.99, -5.32, 2.11, -5.56, 1.74], "ew_ma": [0.11, 0.5, 0.6, 0.05, -0.45, -0.32, 0.13, -0.4, 0.13], "z_comb": 2.03, "p": 0.728313584320784, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9952}, {"star": "GaiaDR35891531404470141824", "z": [4.28, -7.24, 4.11, -0.96, -1.64, -0.87, 1.97, 0.29, -3.01], "ew_ma": [3.53, -5.93, 4.36, -0.83, -1.01, -0.15, 0.37, 0.06, -0.9], "z_comb": -0.66, "p": 0.38908054597270136, "n_lines": 9, "n_spectra": 6, "twin_r": 0.977}, {"star": "GaiaDR35906633952564270848", "z": [-2.52, 2.86, 0.11, -2.61, 2.0, -0.65, -2.52, 2.15, 5.28], "ew_ma": [-2.33, 2.22, 0.1, -1.9, 1.09, -0.07, -0.38, 0.4, 1.0], "z_comb": 0.21, "p": 0.5214739263036848, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9608}, {"star": "GaiaDR36029992663310612096", "z": [2.45, 0.27, 0.99, 1.36, 2.24, -0.54, 0.0, 1.52, 2.34], "ew_ma": [4.63, 0.54, 2.21, 1.24, 1.96, -0.3, 0.0, 0.94, 1.41], "z_comb": 2.78, "p": 0.8735563221838908, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9465}, {"star": "GaiaDR36088054505011960832", "z": [4.28, 0.79, 3.67, -3.87, 0.88, -0.26, -10.51, 5.53, -2.62], "ew_ma": [3.68, 0.72, 3.73, -4.31, 0.7, -0.05, -1.9, 1.52, -0.71], "z_comb": 1.88, "p": 0.7176141192940353, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9215}, {"star": "GaiaDR36133033601555979648", "z": [1.76, -1.43, -1.3, 0.57, 1.67, 2.23, 2.56, -0.9, 1.61], "ew_ma": [2.15, -1.64, -1.69, 0.39, 1.21, 0.68, 0.71, -0.22, 0.44], "z_comb": -0.06, "p": 0.43272836358182093, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9787}, {"star": "GaiaDR36153706477443518976", "z": [-0.01, 0.91, -4.04, -1.32, -4.06, 2.47, -12.0, 12.05, 1.4], "ew_ma": [-0.01, 0.8, -3.82, -1.86, -3.93, 0.58, -3.43, 3.73, 0.46], "z_comb": -1.97, "p": 0.2697365131743413, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9391}, {"star": "GaiaDR36270906415441316224", "z": [-2.16, -0.29, -0.26, -0.27, 0.59, 5.96, 4.43, 16.29, 2.65], "ew_ma": [-1.13, -0.1, -0.1, -0.13, 0.3, 0.56, 0.48, 2.21, 0.38], "z_comb": 1.64, "p": 0.6809159542022899, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9779}, {"star": "GaiaDR36370513647703084544", "z": [-0.71, 4.08, -4.09, 0.07, -0.47, 1.5, -2.41, 3.94, 2.97], "ew_ma": [-0.89, 4.25, -5.56, 0.06, -0.39, 0.32, -0.55, 0.96, 0.93], "z_comb": 0.18, "p": 0.47717614119294033, "n_lines": 9, "n_spectra": 6, "twin_r": 0.977}, {"star": "GaiaDR36454967273273436416", "z": [-0.47, -5.29, 4.44, 1.72, -1.42, 1.35, 10.25, -3.49, 0.18], "ew_ma": [-0.26, -2.35, 2.29, 1.32, -0.73, 0.16, 1.34, -0.49, 0.03], "z_comb": 0.85, "p": 0.6247187640617969, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9391}, {"star": "GaiaDR36489771832811810432", "z": [0.47, 2.7, 1.01, 0.42, -1.98, -2.23, -19.05, -2.85, -5.61], "ew_ma": [0.78, 4.07, 1.47, 0.68, -2.37, -0.76, -8.2, -1.33, -2.54], "z_comb": -0.15, "p": 0.4309284535773211, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9066}, {"star": "GaiaDR36489909443564308224", "z": [0.16, -1.58, -0.41, 2.05, -1.14, -0.19, 0.21, 1.78, -3.01], "ew_ma": [0.09, -0.88, -0.31, 2.35, -1.16, -0.03, 0.03, 0.35, -0.55], "z_comb": -0.29, "p": 0.5098245087745613, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9171}, {"star": "GaiaDR36519024545827374336", "z": [-1.15, -1.34, 0.09, 2.1, -1.49, -3.06, 4.01, -2.98, 2.82], "ew_ma": [-0.61, -0.82, 0.06, 1.75, -1.28, -0.36, 0.41, -0.4, 0.41], "z_comb": -0.12, "p": 0.5264236788160592, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9456}, {"star": "GaiaDR36544549880063909248", "z": [1.68, -1.98, -1.76, 3.64, -1.16, 0.78, -1.9, -0.87, -0.73], "ew_ma": [0.55, -0.6, -0.61, 1.1, -0.38, 0.08, -0.18, -0.08, -0.08], "z_comb": -0.06, "p": 0.5325233738313084, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9973}, {"star": "GaiaDR36603827644293770624", "z": [0.02, 3.56, -0.7, -4.36, 1.57, 1.6, 2.8, -0.72, -6.07], "ew_ma": [0.01, 2.0, -0.45, -1.93, 0.72, 0.2, 0.3, -0.11, -0.88], "z_comb": -1.01, "p": 0.3393330333483326, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9793}, {"star": "GaiaDR36606890608810806528", "z": [-1.08, 1.54, 1.15, 2.31, -1.56, -8.01, 1.91, -0.2, 2.03], "ew_ma": [-1.42, 2.11, 2.07, 1.36, -1.01, -2.05, 0.56, -0.07, 0.77], "z_comb": 1.79, "p": 0.6938153092345383, "n_lines": 9, "n_spectra": 6, "twin_r": 0.987}, {"star": "GaiaDR36612242034982766848", "z": [-2.59, -2.36, 2.17, 0.27, 2.01, -0.84, -0.92, -5.59, 0.66], "ew_ma": [-0.63, -0.45, 0.46, 0.06, 0.6, -0.06, -0.06, -0.49, 0.05], "z_comb": -1.21, "p": 0.2896355182240888, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9961}, {"star": "GaiaDR36703245382605547520", "z": [-2.05, 3.98, 3.12, -0.36, -0.65, 3.61, -0.61, 6.99, -0.94], "ew_ma": [-2.23, 4.07, 3.8, -0.82, -0.89, 0.7, -0.15, 2.4, -0.34], "z_comb": 3.82, "p": 0.7941102944852757, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9268}, {"star": "GaiaDR36802426038708609536", "z": [1.81, 2.23, 0.12, -1.35, -1.52, -0.87, -0.1, 2.82, -1.12], "ew_ma": [0.34, 0.37, 0.02, -0.27, -0.32, -0.05, -0.01, 0.2, -0.08], "z_comb": 1.19, "p": 0.6383680815959202, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9961}, {"star": "GaiaDR36879764552737781888", "z": [-2.07, -0.74, 0.14, 2.49, -0.57, -3.27, 2.33, 2.11, 1.29], "ew_ma": [-0.76, -0.26, 0.06, 1.59, -0.25, -0.31, 0.23, 0.23, 0.19], "z_comb": 0.38, "p": 0.49322533873306335, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9312}, {"star": "GaiaDR36904703228801028864", "z": [-1.12, 2.0, -1.64, -0.65, 1.72, 1.85, -0.21, 0.5, -1.24], "ew_ma": [-0.63, 1.01, -1.05, -0.37, 0.9, 0.33, -0.04, 0.1, -0.32], "z_comb": -0.47, "p": 0.3248837558122094, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9872}, {"star": "GaiaDR36914237987476826624", "z": [3.02, -1.96, -1.16, -1.12, 2.18, 0.37, -1.08, 0.7, 1.13], "ew_ma": [1.44, -0.88, -0.57, -0.7, 1.26, 0.05, -0.14, 0.1, 0.14], "z_comb": -0.85, "p": 0.4505774711264437, "n_lines": 9, "n_spectra": 6, "twin_r": 0.9555}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pm_UVES.json b/papers/short_lived_elements/data/element_Pm_UVES.json new file mode 100644 index 0000000000000000000000000000000000000000..2f9cff5a54568571a635195f26a0346da6c0d464 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pm_UVES.json @@ -0,0 +1 @@ +{"lines": [[4137.95, 0.5946083907023679], [4157.86, 0.8761025232840707], [4186.03, 1.0], [4297.78, 0.803513223740331], [4381.88, 0.12126304714981384], [5546.08, 0.13363452343538146], [5556.88, 0.10857201655999942], [5561.73, 0.17799874937638469], [5576.02, 0.2026213150981214]], "stable": [true, true, true, true, true, true, true, true, true], "results": [{"star": "3482326708703712640", "z": [-4.58, -5.2, 1.45, -3.44, -4.45, null, null, null, null], "ew_ma": [-0.73, -0.7, 0.23, -0.74, -1.04, null, null, null, null], "z_comb": -5.48, "p": 0.029148542572871357, "n_lines": 5, "n_spectra": 1, "twin_r": 0.999, "null_sd": 3.07, "v": 7.55, "rv_gaia": 7.38, "ew_limit_ma": 0.615}, {"star": "3256786534197166208", "z": [0.21, -7.3, -3.25, 0.25, 0.86, null, null, null, null], "ew_ma": [0.05, -1.7, -0.77, 0.07, 0.22, null, null, null, null], "z_comb": -5.53, "p": 0.03809809509524524, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.19, "v": 17.9, "rv_gaia": 17.62, "ew_limit_ma": 0.727}, {"star": "2913411183149615744", "z": [-0.38, -4.35, -4.9, -0.35, -3.29, null, null, null, null], "ew_ma": [-0.15, -1.72, -2.14, -0.13, -1.6, null, null, null, null], "z_comb": -5.76, "p": 0.049497525123743814, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9953, "null_sd": 3.22, "v": 21.5, "rv_gaia": 21.69, "ew_limit_ma": 1.523}, {"star": "2029433521248546304", "z": [6.08, 1.08, -5.8, -5.99, -9.29, null, null, null, null], "ew_ma": [3.88, 0.45, -1.78, -6.82, -6.89, null, null, null, null], "z_comb": -4.3, "p": 0.08379581020948952, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9962, "null_sd": 3.78, "v": -45.7, "rv_gaia": -45.34, "ew_limit_ma": 2.365}, {"star": "3639760521643499776", "z": [-3.7, -0.79, -2.41, 0.39, -2.38, null, null, null, null], "ew_ma": [-1.81, -0.41, -1.23, 0.16, -1.24, null, null, null, null], "z_comb": -3.16, "p": 0.08429578521073947, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9961, "null_sd": 2.5, "v": -11.5, "rv_gaia": -12.39, "ew_limit_ma": 1.72}, {"star": "6577318075351824512", "z": [-1.51, -0.05, -3.04, -3.39, -0.55, null, null, null, null], "ew_ma": [-0.46, -0.01, -0.82, -0.91, -0.15, null, null, null, null], "z_comb": -4.06, "p": 0.0887955602219889, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 2.81, "v": 12.2, "rv_gaia": 11.95, "ew_limit_ma": 1.057}, {"star": "3732539683617410816", "z": [1.58, -0.11, -5.71, -4.08, 0.49, null, null, null, null], "ew_ma": [0.43, -0.02, -1.74, -1.6, 0.2, null, null, null, null], "z_comb": -4.85, "p": 0.09514524273786311, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 3.57, "v": -27.0, "rv_gaia": -27.25, "ew_limit_ma": 1.447}, {"star": "3584074376569429248", "z": [-5.56, -2.09, 0.22, -1.08, 2.29, null, null, null, null], "ew_ma": [-1.38, -0.63, 0.08, -0.32, 0.79, null, null, null, null], "z_comb": -3.3, "p": 0.09949502524873756, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.84, "v": 20.8, "rv_gaia": 20.73, "ew_limit_ma": 1.319}, {"star": "6515731817739456256", "z": [-8.25, 0.75, -3.45, 1.14, -0.82, null, null, null, null], "ew_ma": [-2.14, 0.13, -0.52, 0.25, -0.25, null, null, null, null], "z_comb": -4.13, "p": 0.10874456277186141, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.43, "v": -0.3, "rv_gaia": -1.09, "ew_limit_ma": 0.795}, {"star": "4423865487962417024", "z": [-7.57, 2.08, -4.19, -1.32, 0.69, null, null, null, null], "ew_ma": [-2.39, 0.69, -1.49, -0.38, 0.25, null, null, null, null], "z_comb": -4.7, "p": 0.13084345782710866, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.52, "v": 19.3, "rv_gaia": 18.95, "ew_limit_ma": 1.911}, {"star": "6963761190199424", "z": [2.72, -3.32, -2.09, -2.95, -0.95, null, null, null, null], "ew_ma": [0.6, -0.55, -0.41, -0.56, -0.19, null, null, null, null], "z_comb": -3.52, "p": 0.1422428878556072, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.77, "v": 25.7, "rv_gaia": 24.71, "ew_limit_ma": 1.443}, {"star": "2860924621205256704", "z": [-1.75, -2.56, -0.38, -4.04, 1.35, null, null, null, null], "ew_ma": [-0.71, -0.96, -0.16, -1.48, 0.62, null, null, null, null], "z_comb": -4.04, "p": 0.1551922403879806, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9937, "null_sd": 3.6, "v": -6.75, "rv_gaia": -6.75, "ew_limit_ma": 2.375}, {"star": "2417456431710276096", "z": [-1.88, -0.88, -1.3, -2.29, -4.08, null, null, null, null], "ew_ma": [-0.31, -0.12, -0.17, -0.29, -0.65, null, null, null, null], "z_comb": -3.32, "p": 0.1712414379281036, "n_lines": 5, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.23, "v": 8.15, "rv_gaia": 7.88, "ew_limit_ma": 0.794}, {"star": "6018047019138644480", "z": [0.21, -2.11, -3.56, -0.64, 3.23, null, null, null, null], "ew_ma": [0.08, -0.69, -1.42, -0.25, 1.27, null, null, null, null], "z_comb": -3.24, "p": 0.17384130793460326, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 3.06, "v": 12.85, "rv_gaia": 12.85, "ew_limit_ma": 2.076}, {"star": "6150200345317455232", "z": [-6.89, -2.12, 1.78, -1.45, -0.19, null, null, null, null], "ew_ma": [-2.1, -0.59, 0.48, -0.39, -0.06, null, null, null, null], "z_comb": -3.22, "p": 0.1800909954502275, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.7, "v": -6.75, "rv_gaia": -7.11, "ew_limit_ma": 1.84}, {"star": "6286606170175267840", "z": [2.34, -1.99, -2.73, -2.38, 7.5, null, null, null, null], "ew_ma": [0.89, -0.9, -1.44, -1.14, 5.55, null, null, null, null], "z_comb": -2.45, "p": 0.191990400479976, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.68, "v": -23.0, "rv_gaia": -23.19, "ew_limit_ma": 2.953}, {"star": "5481848424118748672", "z": [-1.71, 0.68, -1.67, -2.56, -2.94, null, null, null, null], "ew_ma": [-0.77, 0.28, -0.83, -1.77, -1.95, null, null, null, null], "z_comb": -2.7, "p": 0.19234038298085096, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9838, "null_sd": 3.48, "v": 33.05, "rv_gaia": 31.45, "ew_limit_ma": 2.69}, {"star": "5902750168276592256", "z": [1.28, 0.57, -3.17, -2.42, -4.88, null, null, null, null], "ew_ma": [0.55, 0.18, -1.32, -1.09, -2.08, null, null, null, null], "z_comb": -2.66, "p": 0.1928403579821009, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.53, "v": -68.4, "rv_gaia": -68.78, "ew_limit_ma": 2.786}, {"star": "2898239468873596800", "z": [-4.13, 2.22, -2.29, 0.13, -3.23, null, null, null, null], "ew_ma": [-0.67, 0.37, -0.42, 0.03, -0.77, null, null, null, null], "z_comb": -1.85, "p": 0.19409029548522574, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.13, "v": -3.5, "rv_gaia": -3.85, "ew_limit_ma": 1.091}, {"star": "6384510877400590336", "z": [-6.72, 1.92, -2.63, 1.51, -5.49, null, null, null, null], "ew_ma": [-1.09, 0.33, -0.52, 0.3, -0.99, null, null, null, null], "z_comb": -2.64, "p": 0.20298985050747462, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 2.82, "v": -2.0, "rv_gaia": -2.29, "ew_limit_ma": 0.869}, {"star": "2382711653818308224", "z": [4.92, -7.19, -1.23, 0.65, -0.56, null, null, null, null], "ew_ma": [1.8, -2.64, -0.55, 0.27, -0.24, null, null, null, null], "z_comb": -2.49, "p": 0.20488975551222438, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9906, "null_sd": 3.31, "v": 5.8, "rv_gaia": 6.41, "ew_limit_ma": 2.147}, {"star": "5801950515627094400", "z": [0.21, -3.1, -0.66, -0.39, -1.43, null, null, null, null], "ew_ma": [0.12, -1.47, -0.31, -0.21, -0.67, null, null, null, null], "z_comb": -2.24, "p": 0.24198790060496975, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.0, "v": 59.6, "rv_gaia": 60.13, "ew_limit_ma": 3.206}, {"star": "3946438125929224320", "z": [-1.87, -2.59, 0.56, -1.96, -4.57, null, null, null, null], "ew_ma": [-0.36, -0.52, 0.15, -0.51, -1.13, null, null, null, null], "z_comb": -2.97, "p": 0.24733763311834409, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.57, "v": 2.1, "rv_gaia": 1.76, "ew_limit_ma": 1.764}, {"star": "5524982093479504384", "z": [-4.0, 2.81, -3.17, -3.14, 4.21, null, null, null, null], "ew_ma": [-0.95, 0.81, -1.13, -1.18, 1.36, null, null, null, null], "z_comb": -3.05, "p": 0.26603669816509173, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 4.11, "v": 9.5, "rv_gaia": 9.31, "ew_limit_ma": 2.637}, {"star": "4341501106288171008", "z": [-5.08, 3.91, -3.53, -0.63, 4.0, null, null, null, null], "ew_ma": [-2.21, 1.65, -1.61, -0.31, 1.92, null, null, null, null], "z_comb": -1.89, "p": 0.27113644317784114, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 4.12, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 5.682}, {"star": "6764687466752221824", "z": [5.37, 1.79, -2.23, -6.21, 1.2, null, null, null, null], "ew_ma": [2.01, 0.59, -1.0, -3.17, 0.95, null, null, null, null], "z_comb": -1.39, "p": 0.28368581570921453, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.71, "v": -42.7, "rv_gaia": -42.55, "ew_limit_ma": 3.598}, {"star": "6382933589314905472", "z": [0.76, -1.23, -1.49, -2.51, -1.49, null, null, null, null], "ew_ma": [0.43, -0.61, -1.0, -3.12, -1.56, null, null, null, null], "z_comb": -2.59, "p": 0.2873356332183391, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9788, "null_sd": 4.69, "v": 32.8, "rv_gaia": 32.35, "ew_limit_ma": 5.552}, {"star": "2831490694929214464", "z": [-0.98, -4.18, 3.7, -3.31, -3.47, null, null, null, null], "ew_ma": [-0.17, -0.84, 0.76, -0.64, -0.85, null, null, null, null], "z_comb": -2.17, "p": 0.2886855657217139, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.59, "v": -1.2, "rv_gaia": -0.92, "ew_limit_ma": 1.541}, {"star": "2423493369021649920", "z": [-4.59, -1.01, 2.95, -3.54, 0.24, null, null, null, null], "ew_ma": [-1.71, -0.39, 1.28, -1.45, 0.13, null, null, null, null], "z_comb": -2.08, "p": 0.3009349532523374, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.92, "v": -2.9, "rv_gaia": -2.55, "ew_limit_ma": 3.238}, {"star": "2531792756096759296", "z": [-3.7, 0.21, -1.41, 0.43, 2.68, null, null, null, null], "ew_ma": [-0.48, 0.02, -0.2, 0.06, 0.39, null, null, null, null], "z_comb": -1.65, "p": 0.3010849457527124, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 4.0, "v": 5.4, "rv_gaia": 5.96, "ew_limit_ma": 1.146}, {"star": "5155981730587168384", "z": [0.24, 3.44, -7.24, 0.34, 1.01, null, null, null, null], "ew_ma": [0.05, 0.69, -1.75, 0.15, 0.45, null, null, null, null], "z_comb": -2.21, "p": 0.3102344882755862, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9954, "null_sd": 4.26, "v": 7.2, "rv_gaia": 7.01, "ew_limit_ma": 2.134}, {"star": "3812355328621651328", "z": [-1.89, -1.12, 0.86, -0.95, 0.06, null, null, null, null], "ew_ma": [-3.73, -1.9, 1.66, -1.58, 0.09, null, null, null, null], "z_comb": -1.2, "p": 0.3333333333333333, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9868, "null_sd": 3.74, "v": 4.0, "rv_gaia": 4.18, "ew_limit_ma": 20.549}, {"star": "3250489115709122560", "z": [0.55, -0.2, 1.16, -4.11, -0.62, null, null, null, null], "ew_ma": [0.1, -0.03, 0.19, -0.99, -0.14, null, null, null, null], "z_comb": -1.24, "p": 0.33718314084295786, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.19, "v": 120.55, "rv_gaia": 120.58, "ew_limit_ma": 1.242}, {"star": "3900151160301345152", "z": [-0.52, 1.27, 1.42, -4.01, -0.77, null, null, null, null], "ew_ma": [-1.09, 3.17, 3.21, -6.6, -1.67, null, null, null, null], "z_comb": -0.66, "p": 0.34633268336583173, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9284, "null_sd": 1.99, "v": 4.05, "rv_gaia": 4.92, "ew_limit_ma": 9.528}, {"star": "3529518709839090176", "z": [5.16, 1.05, -3.31, -2.84, 4.11, null, null, null, null], "ew_ma": [1.21, 0.29, -0.62, -0.66, 1.85, null, null, null, null], "z_comb": -0.67, "p": 0.35548222588870554, "n_lines": 5, "n_spectra": 3, "twin_r": 0.998, "null_sd": 3.54, "v": -20.35, "rv_gaia": -20.24, "ew_limit_ma": 1.562}, {"star": "4345775217221821312", "z": [-0.22, -0.11, -0.1, -2.37, 1.96, null, null, null, null], "ew_ma": [-0.05, -0.03, -0.03, -0.83, 0.6, null, null, null, null], "z_comb": -1.2, "p": 0.3559822008899555, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9964, "null_sd": 2.72, "v": 11.55, "rv_gaia": 11.71, "ew_limit_ma": 1.517}, {"star": "5493588665684618752", "z": [0.57, -2.28, -1.49, -0.08, -3.29, null, null, null, null], "ew_ma": [0.23, -0.82, -0.7, -0.04, -2.65, null, null, null, null], "z_comb": -2.16, "p": 0.37308134593270337, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.92, "v": 5.7, "rv_gaia": 4.82, "ew_limit_ma": 4.72}, {"star": "3750995604764854400", "z": [5.1, 1.38, -0.42, -8.11, 3.67, null, null, null, null], "ew_ma": [1.13, 0.22, -0.07, -1.37, 1.85, null, null, null, null], "z_comb": -1.35, "p": 0.37743112844357785, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.63, "v": -17.6, "rv_gaia": -17.93, "ew_limit_ma": 1.265}, {"star": "3630099250409312640", "z": [3.82, -1.74, -1.33, -2.33, 4.95, null, null, null, null], "ew_ma": [2.91, -0.75, -1.06, -8.84, 17.41, null, null, null, null], "z_comb": -1.11, "p": 0.3798310084495775, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9298, "null_sd": 3.86, "v": -10.6, "rv_gaia": -9.78, "ew_limit_ma": 11.496}, {"star": "84625634714435968", "z": [-1.98, 0.07, -3.74, 4.63, 2.04, null, null, null, null], "ew_ma": [-1.08, 0.04, -1.99, 2.7, 1.56, null, null, null, null], "z_comb": -0.53, "p": 0.38198090095495224, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9924, "null_sd": 2.63, "v": 5.35, "rv_gaia": 4.34, "ew_limit_ma": 3.527}, {"star": "2750176827892427904", "z": [3.15, -1.61, -1.54, -2.13, 7.23, null, null, null, null], "ew_ma": [0.99, -0.54, -0.58, -1.41, 4.71, null, null, null, null], "z_comb": -1.15, "p": 0.38598070096495174, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.56, "v": -15.45, "rv_gaia": -14.72, "ew_limit_ma": 2.87}, {"star": "4745373133284418816", "z": [-3.66, -1.45, 1.42, -0.13, 0.72, null, null, null, null], "ew_ma": [-0.67, -0.23, 0.3, -0.04, 0.17, null, null, null, null], "z_comb": -1.23, "p": 0.40012999350032497, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.13, "v": 16.5, "rv_gaia": 16.94, "ew_limit_ma": 1.784}, {"star": "5569858798004394624", "z": [-2.85, 4.89, -1.19, -1.36, -9.88, null, null, null, null], "ew_ma": [-0.77, 1.13, -0.36, -0.4, -2.67, null, null, null, null], "z_comb": -0.54, "p": 0.41012949352532374, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9952, "null_sd": 3.57, "v": 56.9, "rv_gaia": 56.33, "ew_limit_ma": 2.561}, {"star": "1787990525934491776", "z": [1.35, -1.26, -0.89, -0.6, -1.35, null, null, null, null], "ew_ma": [0.76, -0.75, -0.55, -0.41, -1.03, null, null, null, null], "z_comb": -1.1, "p": 0.4145792710364482, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9877, "null_sd": 3.5, "v": -44.35, "rv_gaia": -44.33, "ew_limit_ma": 5.508}, {"star": "2648914040357320576", "z": [-4.61, -1.04, 3.86, -3.52, 4.06, null, null, null, null], "ew_ma": [-2.97, -0.57, 2.1, -1.48, 1.76, null, null, null, null], "z_comb": -1.28, "p": 0.42032898355082243, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.01, "v": -13.55, "rv_gaia": -13.41, "ew_limit_ma": 5.609}, {"star": "3261878613062758144", "z": [0.27, -4.81, 1.36, 2.35, -3.39, null, null, null, null], "ew_ma": [0.1, -1.26, 0.49, 0.82, -1.41, null, null, null, null], "z_comb": -0.73, "p": 0.42097895105244737, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.23, "v": 22.25, "rv_gaia": 22.59, "ew_limit_ma": 3.1}, {"star": "3282511876473223552", "z": [3.42, -1.89, 2.71, -4.65, -5.83, null, null, null, null], "ew_ma": [2.42, -0.58, 1.62, -3.24, -4.74, null, null, null, null], "z_comb": -0.81, "p": 0.4255787210639468, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9924, "null_sd": 4.08, "v": -46.3, "rv_gaia": -46.55, "ew_limit_ma": 5.671}, {"star": "6128366415218881536", "z": [-2.35, -2.53, -0.12, 2.08, 1.16, null, null, null, null], "ew_ma": [-0.77, -0.5, -0.03, 0.46, 0.25, null, null, null, null], "z_comb": -1.15, "p": 0.4294785260736963, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 3.79, "v": 31.05, "rv_gaia": 30.47, "ew_limit_ma": 2.089}, {"star": "3212075924646082176", "z": [-1.65, 1.47, -1.41, -0.04, -1.3, null, null, null, null], "ew_ma": [-0.57, 0.37, -0.51, -0.02, -0.6, null, null, null, null], "z_comb": -0.78, "p": 0.43482825858707064, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9938, "null_sd": 3.67, "v": 9.7, "rv_gaia": 10.31, "ew_limit_ma": 2.601}, {"star": "6166183842771027328", "z": [0.48, -3.56, 2.79, -1.33, 4.97, null, null, null, null], "ew_ma": [0.11, -0.73, 0.57, -0.39, 1.66, null, null, null, null], "z_comb": -0.31, "p": 0.43992800359982, "n_lines": 5, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.4, "v": -17.35, "rv_gaia": -17.46, "ew_limit_ma": 1.971}, {"star": "5062172841616745856", "z": [-1.73, 4.28, -3.26, 0.56, 2.5, null, null, null, null], "ew_ma": [-0.51, 1.18, -1.15, 0.16, 0.81, null, null, null, null], "z_comb": 0.13, "p": 0.44592770361481926, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9969, "null_sd": 3.81, "v": 11.7, "rv_gaia": 11.16, "ew_limit_ma": 3.112}, {"star": "4343066192373826176", "z": [5.75, -1.08, -2.34, -0.91, 6.14, null, null, null, null], "ew_ma": [2.1, -0.48, -1.11, -0.8, 5.69, null, null, null, null], "z_comb": 0.09, "p": 0.4744262786860657, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9741, "null_sd": 4.46, "v": -32.6, "rv_gaia": -30.57, "ew_limit_ma": 4.405}, {"star": "3584074380866605440", "z": [0.93, 3.53, -1.91, -2.23, -1.96, null, null, null, null], "ew_ma": [0.23, 0.83, -0.54, -0.56, -0.59, null, null, null, null], "z_comb": -0.18, "p": 0.4770261486925654, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.89, "v": 20.6, "rv_gaia": 19.78, "ew_limit_ma": 2.261}, {"star": "6062166950467100032", "z": [5.27, -3.94, 0.76, -2.38, -1.85, null, null, null, null], "ew_ma": [1.13, -0.78, 0.2, -1.33, -0.88, null, null, null, null], "z_comb": -1.02, "p": 0.4815259237038148, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9938, "null_sd": 4.6, "v": -64.15, "rv_gaia": -63.57, "ew_limit_ma": 2.931}, {"star": "1244571953471006720", "z": [3.06, 0.23, -0.99, -4.27, 4.43, null, null, null, null], "ew_ma": [1.9, 0.11, -0.59, -1.88, 2.2, null, null, null, null], "z_comb": -1.11, "p": 0.48992550372481375, "n_lines": 5, "n_spectra": 4, "twin_r": 0.987, "null_sd": 4.3, "v": -16.2, "rv_gaia": -16.75, "ew_limit_ma": 4.828}, {"star": "5409121433672765824", "z": [-2.94, 2.59, -1.15, 2.6, -10.34, null, null, null, null], "ew_ma": [-0.63, 0.39, -0.19, 0.69, -2.68, null, null, null, null], "z_comb": 0.13, "p": 0.5012749362531873, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9968, "null_sd": 3.6, "v": 47.85, "rv_gaia": 47.45, "ew_limit_ma": 1.421}, {"star": "4906784051581971200", "z": [2.52, 1.14, -6.45, 4.6, -1.77, null, null, null, null], "ew_ma": [0.9, 0.37, -2.23, 1.56, -0.66, null, null, null, null], "z_comb": -0.28, "p": 0.5028748562571871, "n_lines": 5, "n_spectra": 1, "twin_r": 0.996, "null_sd": 3.55, "v": 2.9, "rv_gaia": 2.92, "ew_limit_ma": 2.763}, {"star": "6226694571859532800", "z": [-4.63, -1.58, 1.87, 3.43, -2.95, null, null, null, null], "ew_ma": [-1.9, -0.57, 0.65, 1.01, -1.19, null, null, null, null], "z_comb": 0.08, "p": 0.504024798760062, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.41, "v": 4.8, "rv_gaia": 5.14, "ew_limit_ma": 2.803}, {"star": "4722135642226902656", "z": [0.15, -1.87, -0.61, 1.1, 0.04, null, null, null, null], "ew_ma": [0.03, -0.38, -0.12, 0.29, 0.01, null, null, null, null], "z_comb": -0.76, "p": 0.5059747012649367, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.62, "v": 12.2, "rv_gaia": 11.94, "ew_limit_ma": 1.507}, {"star": "6564091190988411520", "z": [1.18, 2.81, -1.36, -2.31, 3.15, null, null, null, null], "ew_ma": [0.24, 0.5, -0.28, -0.57, 0.93, null, null, null, null], "z_comb": 0.2, "p": 0.5107244637768111, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 2.76, "v": -7.05, "rv_gaia": -7.55, "ew_limit_ma": 1.258}, {"star": "6163964031871884672", "z": [1.53, -2.62, 0.4, 2.87, -4.37, null, null, null, null], "ew_ma": [0.28, -0.51, 0.09, 0.75, -1.14, null, null, null, null], "z_comb": 0.48, "p": 0.5146742662866857, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.72, "v": 3.35, "rv_gaia": 3.36, "ew_limit_ma": 1.577}, {"star": "3118434397663311360", "z": [-2.46, 5.09, -1.63, 0.89, -9.21, null, null, null, null], "ew_ma": [-0.52, 1.16, -0.47, 0.36, -3.22, null, null, null, null], "z_comb": 0.58, "p": 0.5176741162941852, "n_lines": 5, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.09, "v": 47.4, "rv_gaia": 47.33, "ew_limit_ma": 2.496}, {"star": "4657193606465368704", "z": [3.82, 0.26, -5.67, 1.0, 1.44, null, null, null, null], "ew_ma": [2.57, 0.17, -3.78, 0.55, 0.76, null, null, null, null], "z_comb": -1.31, "p": 0.51952402379881, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9912, "null_sd": 4.24, "v": 14.75, "rv_gaia": 13.99, "ew_limit_ma": 6.78}, {"star": "4925088171405735680", "z": [-3.72, 1.37, 0.0, 1.62, -7.28, null, null, null, null], "ew_ma": [-1.01, 0.23, 0.0, 0.5, -1.39, null, null, null, null], "z_comb": -0.36, "p": 0.5206239688015599, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 4.09, "v": 36.45, "rv_gaia": 36.66, "ew_limit_ma": 1.798}, {"star": "5264749303462961280", "z": [-5.19, -1.49, 1.19, 3.54, 4.61, null, null, null, null], "ew_ma": [-3.6, -0.76, 0.74, 2.15, 2.46, null, null, null, null], "z_comb": 0.12, "p": 0.5325733713314335, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9914, "null_sd": 3.64, "v": 35.75, "rv_gaia": 36.06, "ew_limit_ma": 5.174}, {"star": "4934923028038871296", "z": [-2.15, -1.1, 2.96, -1.3, 3.13, null, null, null, null], "ew_ma": [-0.54, -0.24, 0.78, -0.34, 0.77, null, null, null, null], "z_comb": 0.03, "p": 0.5367731613419329, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.64, "v": 12.95, "rv_gaia": 11.9, "ew_limit_ma": 2.108}, {"star": "5586381090520538880", "z": [0.74, -6.21, 3.7, 2.44, 1.53, null, null, null, null], "ew_ma": [0.15, -1.11, 0.69, 0.5, 0.31, null, null, null, null], "z_comb": 0.5, "p": 0.5423728813559322, "n_lines": 5, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.0, "v": 9.6, "rv_gaia": 9.18, "ew_limit_ma": 1.456}, {"star": "5559265690666326016", "z": [-1.14, 2.63, 0.18, 1.23, -5.6, null, null, null, null], "ew_ma": [-0.49, 0.56, 0.09, 0.67, -2.63, null, null, null, null], "z_comb": 1.27, "p": 0.5470226488675566, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9935, "null_sd": 4.39, "v": 89.85, "rv_gaia": 88.81, "ew_limit_ma": 3.693}, {"star": "5730371484020807808", "z": [-0.17, -0.77, 1.26, 1.73, -0.36, null, null, null, null], "ew_ma": [-0.04, -0.16, 0.28, 0.8, -0.14, null, null, null, null], "z_comb": 1.09, "p": 0.551972401379931, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 4.03, "v": 119.4, "rv_gaia": 119.47, "ew_limit_ma": 1.994}, {"star": "5528591961953902720", "z": [3.65, -0.6, 0.86, -1.43, -2.32, null, null, null, null], "ew_ma": [0.56, -0.08, 0.16, -0.3, -0.31, null, null, null, null], "z_comb": 0.64, "p": 0.5631218439078046, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.38, "v": -1.5, "rv_gaia": -1.8, "ew_limit_ma": 1.336}, {"star": "5596797039059063680", "z": [6.3, 0.61, -4.13, -0.47, 2.95, null, null, null, null], "ew_ma": [1.18, 0.09, -0.78, -0.1, 0.83, null, null, null, null], "z_comb": 0.08, "p": 0.5741212939353032, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 3.57, "v": -15.4, "rv_gaia": -15.71, "ew_limit_ma": 1.67}, {"star": "4733035238430992768", "z": [-2.33, 0.23, 0.28, 2.35, -0.61, null, null, null, null], "ew_ma": [-0.28, 0.03, 0.04, 0.48, -0.13, null, null, null, null], "z_comb": 0.54, "p": 0.5746212689365532, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9981, "null_sd": 3.23, "v": 0.45, "rv_gaia": 0.66, "ew_limit_ma": 1.08}, {"star": "6141742283401003264", "z": [5.61, 2.17, -1.66, -4.31, 1.39, null, null, null, null], "ew_ma": [2.26, 0.78, -0.76, -1.66, 0.67, null, null, null, null], "z_comb": 0.17, "p": 0.5803209839508024, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.94, "v": -14.0, "rv_gaia": -13.03, "ew_limit_ma": 4.557}, {"star": "2964794041574370560", "z": [-1.91, 2.87, -1.75, 1.62, 0.87, null, null, null, null], "ew_ma": [-0.41, 0.5, -0.33, 0.35, 0.2, null, null, null, null], "z_comb": 0.62, "p": 0.5879206039698015, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.31, "v": 29.95, "rv_gaia": 29.0, "ew_limit_ma": 1.725}, {"star": "2423292879948720000", "z": [-7.22, 5.5, -4.43, 5.71, -1.91, null, null, null, null], "ew_ma": [-1.44, 0.92, -0.94, 1.1, -0.37, null, null, null, null], "z_comb": 0.28, "p": 0.591820408979551, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.54, "v": 29.05, "rv_gaia": 28.92, "ew_limit_ma": 1.661}, {"star": "2980492387558410112", "z": [-0.17, 3.12, -2.03, -0.71, 4.13, null, null, null, null], "ew_ma": [-0.19, 2.29, -2.73, -1.27, 1.87, null, null, null, null], "z_comb": 0.32, "p": 0.5934203289835508, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9691, "null_sd": 3.27, "v": 21.15, "rv_gaia": 21.6, "ew_limit_ma": 11.273}, {"star": "5609058277323483392", "z": [-1.29, 3.03, 0.52, -0.12, -5.05, null, null, null, null], "ew_ma": [-0.84, 1.67, 0.32, -0.09, -3.27, null, null, null, null], "z_comb": 1.02, "p": 0.5938703064846758, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.7, "v": 71.85, "rv_gaia": 72.42, "ew_limit_ma": 6.217}, {"star": "5945941905576552064", "z": [-5.18, 2.04, 1.24, 1.43, 2.93, null, null, null, null], "ew_ma": [-1.05, 0.44, 0.25, 0.37, 0.72, null, null, null, null], "z_comb": 0.87, "p": 0.5952702364881756, "n_lines": 5, "n_spectra": 3, "twin_r": 0.9979, "null_sd": 2.89, "v": -8.9, "rv_gaia": -9.54, "ew_limit_ma": 1.731}, {"star": "3265335443260522112", "z": [-3.57, 1.81, -0.29, 2.73, 2.02, null, null, null, null], "ew_ma": [-1.65, 0.73, -0.13, 0.93, 0.76, null, null, null, null], "z_comb": 0.96, "p": 0.6031198440077996, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9952, "null_sd": 4.52, "v": 20.25, "rv_gaia": 19.3, "ew_limit_ma": 4.164}, {"star": "5567900121118276736", "z": [2.09, -0.95, 0.59, -0.11, -0.13, null, null, null, null], "ew_ma": [0.46, -0.17, 0.12, -0.03, -0.03, null, null, null, null], "z_comb": 0.54, "p": 0.6039698015099245, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.55, "v": 29.1, "rv_gaia": 27.55, "ew_limit_ma": 1.753}, {"star": "3575733210781078016", "z": [-0.88, -2.68, 6.03, -0.21, -5.9, null, null, null, null], "ew_ma": [-0.62, -2.49, 4.41, -0.07, -1.97, null, null, null, null], "z_comb": 1.37, "p": 0.607769611519424, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9921, "null_sd": 3.91, "v": 0.8, "rv_gaia": -0.41, "ew_limit_ma": 7.28}, {"star": "3702148666829533952", "z": [-0.01, -1.93, 0.73, 2.64, -1.13, null, null, null, null], "ew_ma": [-0.01, -0.74, 0.3, 1.52, -0.65, null, null, null, null], "z_comb": 0.61, "p": 0.608219589020549, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9912, "null_sd": 3.96, "v": 3.8, "rv_gaia": 2.63, "ew_limit_ma": 4.627}, {"star": "2477891500647336704", "z": [5.97, -0.02, -1.61, -0.05, 0.91, null, null, null, null], "ew_ma": [2.2, -0.01, -0.49, -0.02, 0.38, null, null, null, null], "z_comb": 1.19, "p": 0.631768411579421, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.11, "v": -14.75, "rv_gaia": -14.92, "ew_limit_ma": 2.422}, {"star": "3511640513332581504", "z": [2.92, -2.17, 1.63, 2.84, 1.01, null, null, null, null], "ew_ma": [0.94, -0.54, 0.5, 1.17, 0.36, null, null, null, null], "z_comb": 2.32, "p": 0.6509674516274186, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 3.86, "v": -12.25, "rv_gaia": -12.25, "ew_limit_ma": 2.97}, {"star": "4976894960284258048", "z": [0.54, 1.27, 0.7, 1.34, 1.82, null, null, null, null], "ew_ma": [0.14, 0.33, 0.21, 0.4, 0.58, null, null, null, null], "z_comb": 2.06, "p": 0.6518674066296685, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 3.95, "v": 5.75, "rv_gaia": 5.76, "ew_limit_ma": 2.686}, {"star": "5292834403845151488", "z": [-4.74, 2.99, 0.19, 3.61, 2.02, null, null, null, null], "ew_ma": [-2.22, 1.2, 0.07, 1.7, 0.91, null, null, null, null], "z_comb": 1.88, "p": 0.6698165091745413, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9906, "null_sd": 3.71, "v": 18.6, "rv_gaia": 17.48, "ew_limit_ma": 3.584}, {"star": "2430102808294101760", "z": [2.0, 3.1, -0.99, -0.02, -2.51, null, null, null, null], "ew_ma": [0.33, 0.54, -0.18, -0.0, -0.54, null, null, null, null], "z_comb": 1.56, "p": 0.6748162591870407, "n_lines": 5, "n_spectra": 4, "twin_r": 0.998, "null_sd": 3.51, "v": -9.8, "rv_gaia": -10.12, "ew_limit_ma": 1.908}, {"star": "5266348577487273344", "z": [-2.83, 1.86, 5.69, -4.82, 0.48, null, null, null, null], "ew_ma": [-1.15, 0.62, 1.99, -1.55, 0.15, null, null, null, null], "z_comb": 1.09, "p": 0.6784660766961652, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9972, "null_sd": 2.87, "v": 14.15, "rv_gaia": 13.6, "ew_limit_ma": 2.408}, {"star": "4623036865373793408", "z": [2.0, 1.59, 0.88, -1.03, -0.0, null, null, null, null], "ew_ma": [0.53, 0.42, 0.21, -0.23, -0.0, null, null, null, null], "z_comb": 1.58, "p": 0.6824658767061647, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 2.65, "v": 10.9, "rv_gaia": 10.71, "ew_limit_ma": 1.762}, {"star": "3188395880157173120", "z": [-2.31, 2.33, 2.33, 1.72, -3.36, null, null, null, null], "ew_ma": [-0.98, 0.64, 1.36, 0.93, -1.74, null, null, null, null], "z_comb": 2.38, "p": 0.687865606719664, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9939, "null_sd": 3.82, "v": 77.55, "rv_gaia": 77.12, "ew_limit_ma": 4.68}, {"star": "5540006949934104448", "z": [-0.48, 1.73, -0.23, 1.4, -2.35, null, null, null, null], "ew_ma": [-0.69, 2.43, -0.32, 1.62, -3.39, null, null, null, null], "z_comb": 1.1, "p": 0.7061646917654117, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9836, "null_sd": 2.09, "v": 49.25, "rv_gaia": 49.31, "ew_limit_ma": 8.712}, {"star": "6133033601555979648", "z": [-2.36, 2.19, 1.03, 1.8, 2.59, null, null, null, null], "ew_ma": [-0.87, 0.68, 0.45, 0.71, 0.77, null, null, null, null], "z_comb": 1.98, "p": 0.7133643317834109, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 3.99, "v": 18.4, "rv_gaia": 18.05, "ew_limit_ma": 4.384}, {"star": "5381537023379295232", "z": [-4.86, 0.78, 0.66, 5.17, 2.6, null, null, null, null], "ew_ma": [-4.36, 0.96, 0.32, 2.91, 1.23, null, null, null, null], "z_comb": 1.75, "p": 0.7275636218189091, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9861, "null_sd": 2.72, "v": 17.55, "rv_gaia": 16.94, "ew_limit_ma": 5.089}, {"star": "2473608009504466688", "z": [3.74, -0.73, 1.08, 0.14, -1.95, null, null, null, null], "ew_ma": [1.1, -0.16, 0.28, 0.04, -0.68, null, null, null, null], "z_comb": 1.53, "p": 0.7430128493575321, "n_lines": 5, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.17, "v": 9.25, "rv_gaia": 8.21, "ew_limit_ma": 3.607}, {"star": "6770313530317154560", "z": [6.0, -3.59, 2.47, 1.8, 1.9, null, null, null, null], "ew_ma": [1.35, -0.66, 0.59, 0.45, 0.58, null, null, null, null], "z_comb": 2.74, "p": 0.7537123143842808, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 4.01, "v": -24.95, "rv_gaia": -24.7, "ew_limit_ma": 2.869}, {"star": "4421455530273900032", "z": [1.82, 1.95, 2.07, 0.24, -2.51, null, null, null, null], "ew_ma": [0.53, 0.49, 0.85, 0.13, -1.05, null, null, null, null], "z_comb": 2.86, "p": 0.7628618569071547, "n_lines": 5, "n_spectra": 1, "twin_r": 0.993, "null_sd": 4.48, "v": 54.65, "rv_gaia": 54.37, "ew_limit_ma": 4.875}, {"star": "4675955810263106432", "z": [-2.38, 0.94, 2.59, 2.75, 0.82, null, null, null, null], "ew_ma": [-1.19, 0.33, 1.1, 1.14, 0.28, null, null, null, null], "z_comb": 2.58, "p": 0.7692615369231538, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 3.52, "v": 31.8, "rv_gaia": 28.42, "ew_limit_ma": 4.293}, {"star": "3269362645115584640", "z": [-0.08, -1.93, 5.92, -2.18, 4.61, null, null, null, null], "ew_ma": [-0.02, -0.42, 1.56, -0.69, 1.33, null, null, null, null], "z_comb": 1.79, "p": 0.7989100544972751, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9953, "null_sd": 2.87, "v": 19.15, "rv_gaia": 18.73, "ew_limit_ma": 2.09}, {"star": "4912580642524184960", "z": [-1.96, 1.47, 1.61, 3.69, -2.3, null, null, null, null], "ew_ma": [-0.31, 0.18, 0.2, 0.5, -0.34, null, null, null, null], "z_comb": 2.65, "p": 0.807909604519774, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9982, "null_sd": 2.92, "v": 28.45, "rv_gaia": 27.64, "ew_limit_ma": 1.085}, {"star": "2899947933845777920", "z": [-2.23, 1.2, -1.15, 6.54, 2.76, null, null, null, null], "ew_ma": [-0.41, 0.19, -0.27, 1.64, 0.62, null, null, null, null], "z_comb": 2.49, "p": 0.8087595620218989, "n_lines": 5, "n_spectra": 1, "twin_r": 0.997, "null_sd": 3.28, "v": 37.85, "rv_gaia": 35.78, "ew_limit_ma": 1.987}, {"star": "5951165616611763456", "z": [-0.43, 0.94, 4.76, -0.17, -4.4, null, null, null, null], "ew_ma": [-0.21, 0.32, 2.14, -0.09, -2.43, null, null, null, null], "z_comb": 2.79, "p": 0.8207589620518974, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.01, "v": 25.75, "rv_gaia": 25.96, "ew_limit_ma": 4.192}, {"star": "4768170579173552896", "z": [1.63, -1.24, 3.9, 2.1, -0.44, null, null, null, null], "ew_ma": [0.43, -0.26, 0.91, 0.52, -0.11, null, null, null, null], "z_comb": 3.24, "p": 0.8342582870856458, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 3.64, "v": -5.25, "rv_gaia": -5.53, "ew_limit_ma": 2.664}, {"star": "6912276699251278848", "z": [3.64, 3.85, 0.29, -0.17, 3.06, null, null, null, null], "ew_ma": [1.42, 1.19, 0.09, -0.04, 1.02, null, null, null, null], "z_comb": 3.64, "p": 0.8431078446077697, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.26, "v": -17.55, "rv_gaia": -17.49, "ew_limit_ma": 3.046}, {"star": "4303294039306246656", "z": [-0.75, 4.94, -0.08, 4.2, -7.54, null, null, null, null], "ew_ma": [-0.13, 0.82, -0.02, 0.92, -1.8, null, null, null, null], "z_comb": 3.75, "p": 0.8611569421528924, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.96, "v": 0.1, "rv_gaia": -0.08, "ew_limit_ma": 2.651}, {"star": "4381250547575102208", "z": [-0.5, 0.56, 9.05, 0.03, -8.67, null, null, null, null], "ew_ma": [-0.34, 0.29, 4.33, 0.02, -6.81, null, null, null, null], "z_comb": 4.93, "p": 0.872006399680016, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9907, "null_sd": 3.95, "v": 45.05, "rv_gaia": 44.84, "ew_limit_ma": 7.063}, {"star": "3400292798990117888", "z": [-1.64, 3.2, 1.3, 4.74, -2.76, null, null, null, null], "ew_ma": [-0.4, 0.8, 0.3, 1.42, -0.58, null, null, null, null], "z_comb": 3.96, "p": 0.8741562921853907, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.71, "v": 37.45, "rv_gaia": 37.7, "ew_limit_ma": 2.767}, {"star": "5320952798822552064", "z": [3.86, -3.43, 0.96, 7.51, 2.85, null, null, null, null], "ew_ma": [0.47, -0.4, 0.12, 1.14, 0.45, null, null, null, null], "z_comb": 3.98, "p": 0.8763061846907655, "n_lines": 5, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 3.53, "v": 12.2, "rv_gaia": 11.87, "ew_limit_ma": 1.282}, {"star": "4775347916201249792", "z": [0.4, 1.82, 2.59, 0.52, 0.69, null, null, null, null], "ew_ma": [0.16, 0.77, 0.87, 0.25, 0.39, null, null, null, null], "z_comb": 2.95, "p": 0.8782560871956402, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9812, "null_sd": 3.02, "v": -4.9, "rv_gaia": -4.59, "ew_limit_ma": 4.0}, {"star": "5760701787150565888", "z": [0.52, -3.22, 6.97, 6.12, -3.42, null, null, null, null], "ew_ma": [0.23, -1.02, 2.75, 2.02, -1.09, null, null, null, null], "z_comb": 5.38, "p": 0.8935053247337633, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.7, "v": 33.4, "rv_gaia": 31.99, "ew_limit_ma": 4.272}, {"star": "5916947921402171264", "z": [-2.88, 6.86, -1.51, 5.59, -0.0, null, null, null, null], "ew_ma": [-1.44, 2.82, -0.69, 2.55, -0.0, null, null, null, null], "z_comb": 4.37, "p": 0.9182540872956352, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.96, "v": 99.0, "rv_gaia": 99.72, "ew_limit_ma": 6.949}, {"star": "2966790170574625408", "z": [-0.9, 3.62, 2.81, 3.21, -0.76, null, null, null, null], "ew_ma": [-0.2, 0.62, 0.56, 0.76, -0.15, null, null, null, null], "z_comb": 4.75, "p": 0.9495025248737563, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9974, "null_sd": 3.07, "v": 39.3, "rv_gaia": 37.83, "ew_limit_ma": 2.357}, {"star": "5129338021224785408", "z": [-1.27, 8.12, 4.29, -0.7, 0.78, null, null, null, null], "ew_ma": [-0.92, 5.36, 3.8, -0.68, 0.64, null, null, null, null], "z_comb": 6.11, "p": 0.9553522323883806, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9693, "null_sd": 3.85, "v": 25.65, "rv_gaia": 29.09, "ew_limit_ma": 10.354}, {"star": "5553647083168192512", "z": [1.82, 6.23, 5.39, 2.25, -6.85, null, null, null, null], "ew_ma": [0.76, 1.44, 1.7, 0.9, -3.08, null, null, null, null], "z_comb": 7.74, "p": 0.9643017849107545, "n_lines": 5, "n_spectra": 4, "twin_r": 0.9937, "null_sd": 3.91, "v": 60.55, "rv_gaia": 59.67, "ew_limit_ma": 4.767}, {"star": "3482326708703712896", "z": [6.89, 5.03, -3.04, 3.55, 2.33, null, null, null, null], "ew_ma": [1.1, 0.67, -0.41, 0.58, 0.41, null, null, null, null], "z_comb": 5.15, "p": 0.983550822458877, "n_lines": 5, "n_spectra": 1, "twin_r": 0.999, "null_sd": 2.82, "v": 5.45, "rv_gaia": 5.62, "ew_limit_ma": 1.489}, {"star": "6161806515182527616", "z": [-0.58, 1.35, 6.3, 6.36, -3.22, null, null, null, null], "ew_ma": [-0.25, 0.39, 2.08, 2.43, -1.27, null, null, null, null], "z_comb": 7.11, "p": 0.9927503624818759, "n_lines": 5, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.27, "v": 81.9, "rv_gaia": 82.23, "ew_limit_ma": 4.799}, {"star": "4315804351350378496", "z": [-2.7, 5.99, 7.54, 7.28, -4.13, null, null, null, null], "ew_ma": [-2.31, 3.82, 8.54, 5.95, -3.91, null, null, null, null], "z_comb": 9.92, "p": 0.9955502224888756, "n_lines": 5, "n_spectra": 4, "twin_r": 0.992, "null_sd": 3.94, "v": -100.25, "rv_gaia": -100.33, "ew_limit_ma": 16.42}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pu_ESPRESSO.json b/papers/short_lived_elements/data/element_Pu_ESPRESSO.json new file mode 100644 index 0000000000000000000000000000000000000000..8b010f0947d1d2762290d47358481d8ecd9da55a --- /dev/null +++ b/papers/short_lived_elements/data/element_Pu_ESPRESSO.json @@ -0,0 +1 @@ +{"lines": [[4105.95, 0.8193180042768339], [4129.93, 0.8289160844753647], [4141.2, 0.8334462487243048], [4159.39, 0.8407840652317417], [4178.28, 0.8484383011777761], [4189.9, 0.8531639595992974], [4190.06, 0.8532291205052488], [4196.2, 0.8557315501683459], [4229.77, 0.8694781862395033], [4254.76, 0.8797825037255271], [4273.34, 0.8874830791575251], [4289.08, 0.8940328550498184], [4337.18, 0.9141976033653123], [4352.71, 0.9207561999762266], [4379.91, 0.9322997303975664], [4385.35, 0.9346170657553621], [4393.93, 0.9382778267356214], [4441.65, 0.9587687102273921], [4468.54, 0.9704127304959331], [4472.79, 0.972259515074585], [4493.78, 0.9814062052256397], [4504.91, 0.9862736343986085], [4536.15, 1.0]], "stable": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true], "results": [{"star": "5266348577487273344", "z": [null, 2.84, -1.52, 1.81, 0.04, -2.01, -2.87, -4.2, 2.44, 0.02, -5.01, 4.34, 6.51, -7.36, 0.36, -15.22, 7.79, 3.94, -10.99, -2.56, -3.23, 4.6, -2.89], "ew_ma": [null, 0.26, -0.15, 0.15, 0.0, -0.21, -0.3, -0.47, 0.35, 0.0, -0.59, 0.39, 0.75, -0.53, 0.05, -1.63, 0.59, 0.26, -0.7, -0.15, -0.15, 0.2, -0.17], "z_comb": -6.59, "p": 0.030348482575871208, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.68, "v": 14.3, "rv_gaia": 13.6, "ew_limit_ma": 0.178}, {"star": "5669349344592951936", "z": [null, -1.64, -0.42, 2.31, -2.64, -1.13, -4.14, 0.24, -0.96, 0.65, -5.91, 0.88, -2.67, -1.54, -0.83, -6.08, 2.77, -2.48, -1.29, -5.39, 1.98, -0.38, 3.77], "ew_ma": [null, -0.34, -0.09, 0.29, -0.37, -0.18, -0.65, 0.04, -0.24, 0.13, -1.23, 0.17, -0.63, -0.23, -0.19, -1.28, 0.47, -0.29, -0.16, -0.62, 0.24, -0.03, 0.4], "z_comb": -4.86, "p": 0.04439778011099445, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.99, "v": 35.55, "rv_gaia": 35.32, "ew_limit_ma": 0.234}, {"star": "4048636941542753152", "z": [null, -0.13, -0.67, 1.92, 3.6, 0.89, 0.73, -2.03, 0.64, -0.78, -2.3, 0.33, 1.35, -7.33, -1.81, -9.09, 3.97, 8.9, -9.95, -0.03, -2.15, 0.19, -0.25], "ew_ma": [null, -0.02, -0.15, 0.4, 0.75, 0.21, 0.16, -0.46, 0.12, -0.14, -0.35, 0.05, 0.35, -1.07, -0.28, -1.49, 0.72, 1.2, -1.12, -0.0, -0.23, 0.02, -0.02], "z_comb": -4.26, "p": 0.052047397630118494, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9978, "null_sd": 3.0, "v": 22.15, "rv_gaia": 21.37, "ew_limit_ma": 0.229}, {"star": "4722111590409480064", "z": [null, -0.78, -1.89, 1.6, 3.82, -0.61, -2.72, -2.6, 3.83, 0.42, -2.22, 3.15, -1.38, -8.29, 2.28, -12.49, 2.46, 7.48, -17.57, -8.91, -2.02, -0.06, 1.23], "ew_ma": [null, -0.08, -0.23, 0.18, 0.45, -0.07, -0.33, -0.35, 0.46, 0.05, -0.27, 0.26, -0.24, -0.72, 0.36, -1.59, 0.26, 0.57, -0.81, -0.41, -0.1, -0.0, 0.06], "z_comb": -6.75, "p": 0.053897305134743265, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9977, "null_sd": 4.37, "v": 13.0, "rv_gaia": 12.44, "ew_limit_ma": 0.245}, {"star": "5461620846141553024", "z": [null, -2.41, 0.19, -0.45, -1.56, -2.43, 0.16, -0.95, -0.54, 1.13, -2.26, -2.05, 2.5, -0.73, -1.16, -2.89, -6.61, -5.09, -1.18, 4.52, 3.1, -0.81, -4.68], "ew_ma": [null, -0.19, 0.02, -0.03, -0.15, -0.18, 0.01, -0.07, -0.05, 0.12, -0.25, -0.18, 0.5, -0.06, -0.13, -0.32, -0.53, -0.3, -0.05, 0.19, 0.13, -0.03, -0.18], "z_comb": -5.0, "p": 0.0672966351682416, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.78, "v": 27.6, "rv_gaia": 26.94, "ew_limit_ma": 0.102}, {"star": "4343064577465522816", "z": [null, -4.16, -1.64, 0.54, 1.65, -2.38, -3.24, 0.84, 1.2, 0.96, 1.1, -1.16, -6.5, -1.89, -0.94, 5.01, -2.31, 0.58, -1.64, 3.17, 3.69, -2.02, -0.04], "ew_ma": [null, -1.1, -0.55, 0.16, 0.44, -0.75, -1.01, 0.25, 0.33, 0.39, 0.24, -0.23, -1.57, -0.44, -0.58, 2.58, -0.84, 0.11, -0.27, 0.45, 0.61, -0.25, -0.0], "z_comb": -2.11, "p": 0.08849557522123894, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.48, "v": -31.3, "rv_gaia": -31.96, "ew_limit_ma": 0.387}, {"star": "6524024506237594368", "z": [null, 2.03, -1.26, 3.55, -1.37, -1.44, 0.14, -2.5, -1.14, 1.53, -4.65, 0.54, 9.42, -3.64, -2.94, -11.2, 5.61, 1.57, -13.32, 2.52, -2.37, 4.02, -1.76], "ew_ma": [null, 0.23, -0.15, 0.32, -0.15, -0.21, 0.02, -0.35, -0.2, 0.29, -0.6, 0.06, 1.06, -0.22, -0.3, -1.1, 0.41, 0.13, -1.04, 0.21, -0.16, 0.23, -0.14], "z_comb": -5.83, "p": 0.09114544272786361, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 4.34, "v": 33.15, "rv_gaia": 32.4, "ew_limit_ma": 0.324}, {"star": "2533723670313663872", "z": [null, 0.38, 0.24, -0.41, -2.66, 1.32, 3.2, -0.18, -0.58, -6.67, 0.39, -1.02, 0.78, -0.7, 0.02, 0.23, -3.9, 1.72, 0.09, -3.83, -3.24, -3.13, -0.18], "ew_ma": [null, 0.07, 0.05, -0.07, -0.43, 0.3, 0.74, -0.04, -0.12, -1.36, 0.06, -0.15, 0.11, -0.09, 0.0, 0.05, -0.61, 0.25, 0.01, -0.44, -0.39, -0.34, -0.02], "z_comb": -2.41, "p": 0.13184340782960852, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.58, "v": 17.7, "rv_gaia": 16.81, "ew_limit_ma": 0.654}, {"star": "3250489115709122560", "z": [null, 2.86, -2.93, -2.08, -1.14, -2.0, -0.49, -3.28, 2.68, -1.91, 2.65, -1.92, 2.45, -15.21, -2.87, -0.43, 1.33, 8.15, -14.2, 21.77, -0.55, 0.71, -3.89], "ew_ma": [null, 1.37, -1.27, -0.96, -0.47, -0.88, -0.21, -1.7, 1.95, -1.19, 1.72, -0.95, 1.19, -5.13, -1.2, -0.17, 0.42, 2.75, -4.78, 5.71, -0.17, 0.14, -0.88], "z_comb": -7.67, "p": 0.15174241287935603, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9721, "null_sd": 11.7, "v": 121.15, "rv_gaia": 120.58, "ew_limit_ma": 7.396}, {"star": "6832155218215202944", "z": [null, -1.66, 0.94, -2.12, 2.28, 0.6, -0.57, -0.42, 1.86, -4.26, 2.59, 0.18, -6.63, -4.55, 1.25, -0.34, 0.52, 3.67, -5.84, 1.73, -1.4, 0.01, -4.14], "ew_ma": [null, -0.36, 0.24, -0.51, 0.5, 0.21, -0.2, -0.12, 0.72, -1.62, 0.73, 0.04, -1.44, -0.67, 0.32, -0.08, 0.08, 0.7, -0.81, 0.24, -0.17, 0.0, -0.54], "z_comb": -4.33, "p": 0.16509174541272936, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9958, "null_sd": 3.12, "v": 15.25, "rv_gaia": 14.63, "ew_limit_ma": 0.477}, {"star": "3101382419728401408", "z": [null, -0.25, 0.38, 1.98, 0.65, -0.21, -0.39, 0.12, -0.53, -3.1, -1.73, -1.34, -0.75, -0.8, -1.45, -1.21, 1.83, 3.62, -0.02, -4.08, -1.21, 0.35, 0.22], "ew_ma": [null, -0.02, 0.05, 0.12, 0.08, -0.05, -0.09, 0.01, -0.25, -0.4, -0.15, -0.19, -0.26, -0.1, -0.24, -0.17, 0.21, 0.28, -0.0, -0.25, -0.07, 0.02, 0.01], "z_comb": -1.26, "p": 0.17254137293135344, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.34, "v": 54.45, "rv_gaia": 53.99, "ew_limit_ma": 0.164}, {"star": "6180035765135232128", "z": [null, 1.22, -1.25, 2.01, -0.44, 1.88, 2.43, 1.28, -2.21, -3.44, 1.79, -1.68, -6.12, 0.28, 0.5, 1.46, -0.72, -2.44, -6.48, 11.1, -4.11, 2.37, -0.34], "ew_ma": [null, 0.15, -0.19, 0.18, -0.05, 0.32, 0.42, 0.19, -0.76, -0.71, 0.28, -0.25, -2.28, 0.05, 0.1, 0.27, -0.1, -0.26, -0.56, 0.96, -0.3, 0.15, -0.02], "z_comb": -3.21, "p": 0.17634118294085296, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.16, "v": 65.7, "rv_gaia": 64.94, "ew_limit_ma": 0.277}, {"star": "6369544118965772416", "z": [null, 0.94, -1.6, 0.34, 0.15, -4.0, -4.57, 0.59, -0.25, 5.47, -4.71, 1.44, 0.52, -1.21, 0.3, -2.39, 2.22, -3.49, -7.07, -5.33, 6.08, 0.27, -1.15], "ew_ma": [null, 0.15, -0.39, 0.04, 0.03, -0.74, -0.85, 0.12, -0.06, 1.03, -0.77, 0.2, 0.07, -0.11, 0.08, -0.71, 0.27, -0.37, -0.62, -0.55, 0.56, 0.02, -0.09], "z_comb": -3.21, "p": 0.1808909554522274, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 3.35, "v": -10.25, "rv_gaia": -11.0, "ew_limit_ma": 0.366}, {"star": "6321929733564266752", "z": [null, -1.15, 1.9, -4.42, -2.26, -0.62, -1.2, -0.23, 1.29, -3.7, 4.97, -2.06, -2.15, -0.53, 0.57, 6.27, -5.57, -1.46, 1.23, 2.53, 3.84, -0.98, -8.76], "ew_ma": [null, -0.83, 1.85, -3.35, -1.82, -0.48, -0.87, -0.15, 1.01, -3.13, 3.66, -1.69, -1.16, -0.23, 0.4, 4.02, -2.62, -0.67, 0.55, 0.96, 1.49, -0.28, -3.28], "z_comb": -2.11, "p": 0.19144042797860106, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9862, "null_sd": 2.62, "v": -31.55, "rv_gaia": -32.32, "ew_limit_ma": 1.487}, {"star": "5902750168276592256", "z": [null, -1.15, -2.06, -0.95, 1.67, -1.57, -2.84, 0.67, 0.75, 0.13, -3.52, 0.94, 3.87, -2.75, 1.13, 1.13, 0.81, -0.86, -0.32, -0.49, 0.32, -3.83, 1.22], "ew_ma": [null, -0.12, -0.35, -0.1, 0.13, -0.17, -0.31, 0.08, 0.08, 0.03, -0.33, 0.11, 0.41, -0.3, 0.18, 0.2, 0.16, -0.08, -0.02, -0.03, 0.03, -0.25, 0.09], "z_comb": -1.74, "p": 0.21223938803059847, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 3.36, "v": -68.1, "rv_gaia": -68.78, "ew_limit_ma": 0.271}, {"star": "4367026303085396352", "z": [null, -2.3, -3.4, 0.21, 0.64, -1.4, -1.51, -0.8, 1.54, 3.95, -0.71, -1.36, -7.41, 0.6, -1.78, 4.58, 0.02, 2.36, 3.28, 8.29, 0.65, -7.31, 1.36], "ew_ma": [null, -0.2, -0.52, 0.03, 0.07, -0.16, -0.17, -0.07, 0.1, 0.62, -0.1, -0.09, -0.86, 0.05, -0.51, 1.19, 0.01, 0.17, 0.23, 0.36, 0.03, -0.33, 0.08], "z_comb": -1.87, "p": 0.2343882805859707, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9986, "null_sd": 2.6, "v": -35.2, "rv_gaia": -35.94, "ew_limit_ma": 0.192}, {"star": "6569895822110445440", "z": [null, 0.9, -0.2, -1.52, -0.22, -0.22, 0.83, -0.86, -2.0, 1.77, -0.48, -0.58, 4.58, -2.83, -0.48, -1.32, 2.92, -0.14, -3.04, 6.7, 0.69, 0.79, -1.67], "ew_ma": [null, 0.12, -0.02, -0.23, -0.03, -0.03, 0.12, -0.13, -0.22, 0.21, -0.07, -0.06, 0.51, -0.28, -0.06, -0.19, 0.42, -0.01, -0.32, 0.66, 0.07, 0.07, -0.17], "z_comb": -1.39, "p": 0.25723713814309285, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9992, "null_sd": 1.8, "v": -18.4, "rv_gaia": -19.21, "ew_limit_ma": 0.187}, {"star": "5731252295913584768", "z": [null, 2.57, 0.15, 1.12, -1.67, -0.25, 1.24, -0.5, -1.28, -0.55, 1.15, -2.86, 0.98, -0.25, -0.96, 0.73, -1.33, -0.29, -10.96, 22.6, -3.37, 4.41, -0.65], "ew_ma": [null, 0.46, 0.03, 0.21, -0.28, -0.05, 0.25, -0.12, -0.38, -0.18, 0.23, -0.54, 0.2, -0.03, -0.19, 0.15, -0.27, -0.04, -1.22, 2.12, -0.38, 0.35, -0.08], "z_comb": -2.72, "p": 0.2918854057297135, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9968, "null_sd": 4.19, "v": 67.35, "rv_gaia": 66.88, "ew_limit_ma": 0.656}, {"star": "5640565607657897728", "z": [null, 2.65, -2.27, -4.55, -1.97, -1.07, -0.38, -0.39, 0.96, -4.14, 5.52, -1.05, -3.0, -4.22, 1.72, 7.38, 0.37, -2.28, 2.18, -3.53, 2.15, -3.54, -0.04], "ew_ma": [null, 0.34, -0.36, -0.66, -0.31, -0.16, -0.06, -0.05, 0.13, -0.68, 0.74, -0.11, -0.46, -0.38, 0.28, 1.05, 0.04, -0.23, 0.21, -0.29, 0.17, -0.22, -0.0], "z_comb": -1.29, "p": 0.3001349932503375, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.89, "v": 15.2, "rv_gaia": 14.67, "ew_limit_ma": 0.618}, {"star": "5760701787150565888", "z": [null, 0.22, 0.57, 0.24, 0.43, 2.8, 1.84, -1.15, 0.71, -5.15, 0.27, 2.84, -3.88, -3.92, -6.28, -2.34, 4.23, 5.71, -3.75, -2.74, -1.2, 1.16, 1.49], "ew_ma": [null, 0.03, 0.11, 0.03, 0.08, 0.7, 0.46, -0.28, 0.18, -0.83, 0.02, 0.24, -0.56, -0.39, -0.79, -0.32, 0.42, 0.61, -0.39, -0.33, -0.09, 0.08, 0.11], "z_comb": -2.19, "p": 0.3408329583520824, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.25, "v": 32.65, "rv_gaia": 31.99, "ew_limit_ma": 0.351}, {"star": "3507879565090229888", "z": [null, -2.86, -1.83, -1.87, 1.49, -2.22, -1.13, 2.24, 1.48, 2.8, 0.17, -1.1, -10.35, 1.32, 0.89, 8.88, -6.46, -4.36, 3.22, 3.9, 6.73, -1.51, -4.85], "ew_ma": [null, -0.4, -0.25, -0.24, 0.16, -0.44, -0.22, 0.43, 0.28, 0.39, 0.02, -0.08, -0.79, 0.08, 0.08, 0.67, -0.5, -0.36, 0.19, 0.26, 0.38, -0.06, -0.19], "z_comb": -0.53, "p": 0.3546322683865807, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 3.1, "v": -7.2, "rv_gaia": -7.86, "ew_limit_ma": 0.285}, {"star": "3654496279558010624", "z": [null, 2.02, -2.37, -2.76, -1.64, -3.13, -0.69, -1.05, -0.95, 5.34, -0.16, 0.16, 2.18, -4.32, -2.29, -4.24, 7.26, 5.31, 1.42, 6.79, 3.16, -0.01, -1.46], "ew_ma": [null, 0.29, -0.39, -0.46, -0.28, -0.76, -0.17, -0.24, -0.13, 0.86, -0.02, 0.02, 0.34, -0.48, -0.54, -0.92, 1.08, 0.6, 0.15, 0.59, 0.36, -0.0, -0.11], "z_comb": -1.06, "p": 0.36283185840707965, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.36, "v": -18.55, "rv_gaia": -19.21, "ew_limit_ma": 0.45}, {"star": "6564091190988411520", "z": [null, -1.61, -1.23, -0.13, 0.45, -0.75, -0.46, 0.04, 3.69, 0.43, -0.63, -0.92, -4.76, -1.07, -1.02, 1.94, -4.4, 3.91, -6.4, -0.93, 1.92, -1.29, 1.14], "ew_ma": [null, -0.09, -0.09, -0.01, 0.04, -0.08, -0.05, 0.0, 0.26, 0.05, -0.07, -0.08, -0.33, -0.08, -0.09, 0.16, -0.32, 0.17, -0.25, -0.03, 0.08, -0.05, 0.03], "z_comb": -1.5, "p": 0.3629818509074546, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.88, "v": -6.85, "rv_gaia": -7.55, "ew_limit_ma": 0.141}, {"star": "3835743693290897152", "z": [null, 0.89, -2.0, -1.86, -0.11, 0.01, -2.29, -2.01, -0.19, 3.71, -1.28, 3.01, -2.38, -1.3, -0.95, -2.34, 6.82, 1.19, 1.75, -5.49, 1.4, 0.76, 0.3], "ew_ma": [null, 0.08, -0.2, -0.19, -0.01, 0.0, -0.2, -0.19, -0.02, 0.24, -0.08, 0.18, -0.2, -0.07, -0.11, -0.32, 0.7, 0.09, 0.1, -0.31, 0.09, 0.04, 0.02], "z_comb": -0.68, "p": 0.3711314434278286, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.33, "v": -17.1, "rv_gaia": -17.81, "ew_limit_ma": 0.147}, {"star": "5691782130578684544", "z": [null, -0.1, -0.61, -0.95, 2.61, 0.59, -3.38, -0.69, 1.26, -4.65, -0.89, 2.56, 0.06, -1.2, 2.18, -3.03, 3.12, 5.44, 0.59, -10.69, -3.56, 0.4, 1.59], "ew_ma": [null, -0.01, -0.1, -0.11, 0.32, 0.08, -0.46, -0.1, 0.16, -0.62, -0.08, 0.21, 0.01, -0.1, 0.39, -0.47, 0.28, 0.42, 0.05, -0.81, -0.31, 0.02, 0.1], "z_comb": -0.3, "p": 0.3926803659817009, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.43, "v": 8.9, "rv_gaia": 8.18, "ew_limit_ma": 0.364}, {"star": "4623036865373793408", "z": [null, -2.15, 0.13, 0.27, 0.22, 1.48, 0.59, -0.75, 0.67, -5.61, -1.01, 0.67, -0.09, 0.98, 1.81, -7.06, 1.34, 3.22, 4.98, -6.09, -2.27, 0.31, -0.23], "ew_ma": [null, -0.13, 0.01, 0.02, 0.02, 0.18, 0.07, -0.1, 0.1, -0.47, -0.06, 0.04, -0.01, 0.07, 0.2, -0.66, 0.09, 0.22, 0.25, -0.3, -0.11, 0.01, -0.01], "z_comb": -0.77, "p": 0.424428778561072, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9994, "null_sd": 2.73, "v": 11.55, "rv_gaia": 10.71, "ew_limit_ma": 0.171}, {"star": "1212385193677161088", "z": [null, 1.21, -3.71, 0.69, 0.06, 0.79, 1.49, 0.3, 0.76, -2.05, 2.93, -0.95, -3.21, 0.19, -0.33, 3.52, -2.92, -0.41, -1.14, 2.68, -2.67, -0.66, 1.51], "ew_ma": [null, 0.2, -0.84, 0.12, 0.01, 0.16, 0.3, 0.06, 0.12, -0.4, 0.48, -0.13, -0.48, 0.03, -0.08, 0.96, -0.68, -0.07, -0.13, 0.28, -0.31, -0.07, 0.17], "z_comb": -0.42, "p": 0.4290285485725714, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9972, "null_sd": 2.27, "v": -38.2, "rv_gaia": -38.72, "ew_limit_ma": 0.37}, {"star": "4768170579173552896", "z": [null, 1.32, -1.69, -0.42, 0.72, -2.4, -3.77, 0.29, 0.21, 6.48, -4.34, 4.1, 1.27, -0.59, 0.42, -8.32, 5.09, 1.48, -3.33, -3.02, 3.36, 1.85, 1.35], "ew_ma": [null, 0.08, -0.16, -0.02, 0.04, -0.25, -0.41, 0.03, 0.03, 0.59, -0.25, 0.24, 0.1, -0.04, 0.04, -0.59, 0.29, 0.1, -0.19, -0.17, 0.21, 0.07, 0.06], "z_comb": -0.37, "p": 0.4457277136143193, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9994, "null_sd": 2.79, "v": -4.8, "rv_gaia": -5.53, "ew_limit_ma": 0.189}, {"star": "4341501106288171008", "z": [null, -3.45, -0.49, 0.66, -1.22, -2.72, -0.81, 2.07, 0.97, 4.49, -1.47, -1.67, -1.97, 4.55, 0.45, 0.22, -4.69, -1.89, -2.79, 6.32, 2.76, -0.2, 0.64], "ew_ma": [null, -0.83, -0.14, 0.17, -0.31, -0.71, -0.21, 0.69, 0.27, 1.31, -0.29, -0.35, -0.5, 0.87, 0.12, 0.06, -1.04, -0.29, -0.31, 0.65, 0.39, -0.02, 0.07], "z_comb": -0.34, "p": 0.4469276536173191, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9976, "null_sd": 3.18, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 0.668}, {"star": "4176501313320676992", "z": [null, -0.03, -3.09, -2.73, 0.8, -3.47, -1.87, -1.86, 0.89, 4.79, 1.94, -0.11, -1.37, -2.23, -2.08, 1.31, 3.36, 1.06, 4.26, -3.28, 6.49, -0.09, -0.68], "ew_ma": [null, -0.0, -0.61, -0.33, 0.09, -0.63, -0.35, -0.33, 0.12, 0.68, 0.18, -0.01, -0.24, -0.2, -0.8, 0.36, 0.31, 0.14, 0.32, -0.29, 0.54, -0.0, -0.04], "z_comb": 0.74, "p": 0.456177191140443, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.47, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.256}, {"star": "6189254689097655552", "z": [null, 1.29, -2.71, -3.52, -0.5, -1.85, -0.26, 0.75, 0.15, 2.72, 5.45, -6.5, 0.58, -0.16, -0.11, 8.91, -7.87, -1.63, -0.49, 16.32, 2.29, -3.29, -0.67], "ew_ma": [null, 0.15, -0.34, -0.36, -0.05, -0.33, -0.05, 0.11, 0.02, 0.32, 0.49, -0.48, 0.06, -0.01, -0.01, 0.69, -0.48, -0.12, -0.03, 1.14, 0.14, -0.17, -0.04], "z_comb": 0.18, "p": 0.46117694115294233, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 3.57, "v": -3.2, "rv_gaia": -3.87, "ew_limit_ma": 0.268}, {"star": "5855730584310531200", "z": [null, -0.94, -1.31, 0.89, -1.0, -0.66, 0.07, 2.73, 1.41, -2.02, 4.02, -2.37, -2.34, 6.81, 2.19, 4.4, -10.26, -9.41, 1.95, 8.22, -1.3, 2.16, -2.02], "ew_ma": [null, -0.23, -0.4, 0.2, -0.23, -0.17, 0.02, 0.62, 0.44, -0.66, 1.43, -0.5, -0.68, 1.41, 0.57, 1.16, -2.67, -2.33, 0.26, 1.14, -0.13, 0.21, -0.26], "z_comb": 0.68, "p": 0.4776261186940653, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 3.73, "v": 105.3, "rv_gaia": 104.53, "ew_limit_ma": 1.026}, {"star": "3812355328621651328", "z": [null, -0.33, -5.26, -1.49, 2.91, -0.2, -1.77, 1.83, 1.05, 4.27, -2.26, 0.71, -2.27, -0.37, 4.8, -5.0, 2.55, 1.96, 1.01, -1.28, 2.35, -3.11, 2.17], "ew_ma": [null, -0.06, -0.83, -0.19, 0.3, -0.03, -0.27, 0.29, 0.16, 0.66, -0.22, 0.06, -0.23, -0.03, 0.5, -0.53, 0.27, 0.22, 0.1, -0.12, 0.19, -0.23, 0.17], "z_comb": 0.35, "p": 0.5068246587670616, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 2.49, "v": 4.75, "rv_gaia": 4.18, "ew_limit_ma": 0.306}, {"star": "627699888238838272", "z": [null, 1.8, 1.37, -2.16, -0.92, 1.63, 3.73, -1.07, 0.23, -4.08, -1.64, 1.57, -1.34, -0.59, -2.34, -2.5, 2.82, 2.89, 2.66, -2.9, 0.79, -0.47, 1.64], "ew_ma": [null, 0.25, 0.21, -0.23, -0.13, 0.22, 0.5, -0.15, 0.03, -0.55, -0.18, 0.15, -0.21, -0.06, -0.27, -0.31, 0.31, 0.31, 0.25, -0.25, 0.07, -0.04, 0.16], "z_comb": 0.31, "p": 0.5080745962701865, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 1.99, "v": 31.15, "rv_gaia": 30.59, "ew_limit_ma": 0.227}, {"star": "2835207319109249920", "z": [null, -1.35, -1.64, 0.37, -0.29, -0.69, -2.76, -1.69, 0.59, 5.2, -0.27, 2.17, -0.87, 1.96, -1.44, -2.05, 3.93, 3.03, 5.12, -7.37, -2.1, -1.88, 1.2], "ew_ma": [null, -0.2, -0.31, 0.06, -0.04, -0.12, -0.46, -0.25, 0.06, 0.59, -0.03, 0.11, -0.07, 0.12, -0.38, -0.62, 0.41, 0.21, 0.35, -0.45, -0.13, -0.11, 0.09], "z_comb": 0.72, "p": 0.5112744362781861, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.19, "v": -32.55, "rv_gaia": -33.33, "ew_limit_ma": 0.357}, {"star": "5524982093479504384", "z": [null, -1.62, -0.87, -2.29, 0.07, -0.3, -0.26, -0.32, 2.39, 1.75, 0.75, -0.66, -3.44, 1.55, 1.68, 0.68, -4.22, -0.08, 2.59, 12.43, 1.52, -1.11, -0.59], "ew_ma": [null, -0.26, -0.15, -0.39, 0.01, -0.08, -0.07, -0.07, 0.65, 0.54, 0.19, -0.16, -0.73, 0.35, 0.45, 0.19, -0.92, -0.01, 0.23, 1.06, 0.15, -0.11, -0.04], "z_comb": 0.43, "p": 0.5290735463226839, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.01, "v": 10.05, "rv_gaia": 9.31, "ew_limit_ma": 0.506}, {"star": "3550081879381593728", "z": [null, -0.28, 3.9, 1.24, 2.74, 0.91, 2.5, -0.33, -0.54, -1.43, 2.72, 0.17, -0.05, -0.79, -1.48, -4.85, -1.15, 2.3, -0.13, -1.09, -0.02, -2.08, -2.66], "ew_ma": [null, -0.13, 1.82, 0.5, 1.14, 0.38, 1.03, -0.14, -0.23, -0.6, 0.95, 0.07, -0.02, -0.29, -0.59, -1.88, -0.38, 0.8, -0.04, -0.31, -0.01, -0.54, -0.78], "z_comb": 0.13, "p": 0.5548222588870556, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9786, "null_sd": 1.94, "v": 24.05, "rv_gaia": 23.76, "ew_limit_ma": 0.971}, {"star": "2966316109264052096", "z": [null, 1.97, 1.97, -3.51, -2.33, 0.67, 1.92, -0.54, -2.03, -3.58, 7.11, -1.15, -3.67, -5.29, -1.6, 6.33, 5.61, 2.74, 1.73, 4.89, -0.38, 0.42, 0.76], "ew_ma": [null, 0.62, 0.68, -1.09, -0.78, 0.22, 0.63, -0.16, -0.58, -1.31, 2.24, -0.29, -0.93, -0.93, -0.54, 1.96, 1.27, 0.63, 0.42, 1.0, -0.08, 0.06, 0.15], "z_comb": 0.44, "p": 0.5552722363881806, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9958, "null_sd": 2.97, "v": 43.05, "rv_gaia": 42.46, "ew_limit_ma": 0.888}, {"star": "5266722205277801984", "z": [null, 0.05, -2.18, 0.24, 2.41, -0.05, 2.77, -1.14, -0.12, 2.0, -0.09, -1.42, 2.05, -0.1, -1.19, 0.5, -1.61, 3.74, -0.88, 4.67, -1.96, 1.12, -1.94], "ew_ma": [null, 0.01, -0.29, 0.03, 0.3, -0.01, 0.38, -0.15, -0.01, 0.18, -0.01, -0.11, 0.18, -0.01, -0.1, 0.04, -0.13, 0.29, -0.06, 0.32, -0.12, 0.06, -0.11], "z_comb": 0.8, "p": 0.5606219689015549, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.23, "v": 18.25, "rv_gaia": 17.57, "ew_limit_ma": 0.236}, {"star": "3948424496764080640", "z": [null, -0.77, -2.3, -1.99, 2.0, -1.42, -0.99, 0.68, 1.18, -0.13, 3.64, -0.32, -4.62, -0.67, -0.31, 7.7, -3.33, -2.01, -0.84, 1.69, 4.6, 1.99, -2.27], "ew_ma": [null, -0.19, -0.69, -0.44, 0.4, -0.46, -0.32, 0.2, 0.29, -0.03, 0.47, -0.05, -0.76, -0.09, -0.07, 1.46, -0.47, -0.33, -0.13, 0.25, 0.65, 0.23, -0.27], "z_comb": 0.84, "p": 0.5651217439128043, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.51, "v": -8.0, "rv_gaia": -8.56, "ew_limit_ma": 0.671}, {"star": "1212385193677160832", "z": [null, -1.44, -2.43, -0.31, -0.27, -2.02, -2.1, 1.66, 0.25, 4.05, -1.37, -1.58, 1.79, 3.75, 0.36, 1.29, -6.38, -3.04, -2.14, 2.26, 3.6, -0.24, 1.35], "ew_ma": [null, -0.26, -0.53, -0.06, -0.05, -0.51, -0.54, 0.34, 0.06, 1.09, -0.35, -0.2, 0.39, 0.64, 0.14, 0.5, -1.26, -0.58, -0.32, 0.35, 0.46, -0.02, 0.18], "z_comb": 0.4, "p": 0.5654217289135544, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.84, "v": -38.2, "rv_gaia": -38.94, "ew_limit_ma": 0.711}, {"star": "5287961677550103424", "z": [null, -3.14, 2.0, 3.74, 1.8, 1.53, -0.58, -1.11, -0.08, -1.43, -1.51, 1.8, -6.03, -1.84, 1.91, -3.36, -0.35, 6.32, -3.65, -4.63, -2.44, 1.7, 3.63], "ew_ma": [null, -0.43, 0.29, 0.43, 0.26, 0.23, -0.09, -0.16, -0.01, -0.21, -0.16, 0.18, -0.95, -0.17, 0.32, -0.54, -0.03, 0.57, -0.28, -0.35, -0.19, 0.12, 0.29], "z_comb": -0.15, "p": 0.5802209889505525, "n_lines": 20, "n_spectra": 4, "twin_r": 0.999, "null_sd": 3.08, "v": 43.15, "rv_gaia": 42.58, "ew_limit_ma": 0.408}, {"star": "4733035238430992768", "z": [null, -0.47, 0.08, -0.1, 0.66, -0.72, -3.57, -0.57, 1.86, 0.86, -4.25, 0.06, 0.51, -0.98, 3.04, -1.8, -2.31, 4.0, -0.35, -7.64, 0.84, -0.63, 1.56], "ew_ma": [null, -0.04, 0.01, -0.01, 0.06, -0.06, -0.29, -0.05, 0.17, 0.09, -0.38, 0.01, 0.06, -0.08, 0.42, -0.27, -0.22, 0.27, -0.02, -0.39, 0.04, -0.03, 0.09], "z_comb": 0.16, "p": 0.5803209839508024, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.13, "v": 1.35, "rv_gaia": 0.66, "ew_limit_ma": 0.306}, {"star": "6166183842771027328", "z": [null, -0.71, 0.82, -1.69, 3.63, -0.24, -2.99, 0.2, -0.1, 1.29, -2.01, 3.28, -5.17, 0.8, -0.65, -3.11, 11.45, 1.72, 8.37, -7.87, 1.64, -5.14, 2.66], "ew_ma": [null, -0.07, 0.06, -0.16, 0.22, -0.02, -0.19, 0.01, -0.01, 0.1, -0.18, 0.23, -0.37, 0.06, -0.05, -0.39, 1.17, 0.13, 0.62, -0.62, 0.1, -0.24, 0.19], "z_comb": 0.7, "p": 0.5900704964751763, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 3.33, "v": -16.75, "rv_gaia": -17.46, "ew_limit_ma": 0.273}, {"star": "6029992663310612096", "z": [null, -2.69, 1.69, -1.98, 0.07, -1.4, -2.56, 2.72, 1.59, -4.79, 2.34, 0.6, -1.12, 5.13, 2.63, 4.92, -7.91, -2.78, 4.81, 2.39, -1.47, 1.31, -1.36], "ew_ma": [null, -0.58, 0.41, -0.41, 0.02, -0.44, -0.8, 0.68, 0.37, -0.94, 0.36, 0.1, -0.22, 0.6, 0.44, 0.71, -0.95, -0.43, 0.78, 0.33, -0.19, 0.16, -0.22], "z_comb": 1.87, "p": 0.5969701514924254, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.67, "v": 14.8, "rv_gaia": 14.08, "ew_limit_ma": 0.662}, {"star": "6489771832811810432", "z": [null, -1.14, 0.13, -0.38, -2.47, -1.74, 2.2, 2.07, -1.13, 1.25, -1.19, -0.49, 4.03, 2.55, -0.69, 5.44, 0.88, -6.86, 1.54, -1.02, 2.96, -0.62, -2.25], "ew_ma": [null, -0.34, 0.05, -0.13, -0.8, -0.54, 0.66, 0.77, -0.33, 0.34, -0.2, -0.1, 1.02, 0.6, -0.18, 1.4, 0.19, -1.61, 0.25, -0.15, 0.44, -0.07, -0.31], "z_comb": 0.74, "p": 0.6015699215039249, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9968, "null_sd": 4.4, "v": -30.15, "rv_gaia": -31.05, "ew_limit_ma": 1.206}, {"star": "6692069568458919040", "z": [null, 1.52, -1.34, 2.39, -1.22, -0.9, -0.98, -0.13, -1.34, 0.86, -0.49, 2.39, 7.42, -1.59, 0.33, -1.58, 4.49, 0.23, 3.45, -7.52, -0.09, -3.18, -2.92], "ew_ma": [null, 0.08, -0.08, 0.13, -0.09, -0.06, -0.06, -0.01, -0.12, 0.04, -0.02, 0.15, 0.95, -0.09, 0.02, -0.08, 0.19, 0.01, 0.16, -0.28, -0.0, -0.11, -0.11], "z_comb": 0.56, "p": 0.6022198890055497, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9974, "null_sd": 2.56, "v": 15.8, "rv_gaia": 15.36, "ew_limit_ma": 0.164}, {"star": "5663558453071724288", "z": [null, 0.95, 1.57, 1.45, -0.46, -0.14, 1.79, 0.4, -0.45, -1.34, -2.38, 3.02, 6.31, -5.36, 0.19, -5.26, 7.73, 4.31, 0.05, 5.68, -2.17, -1.02, 3.29], "ew_ma": [null, 0.13, 0.25, 0.15, -0.07, -0.02, 0.25, 0.06, -0.08, -0.25, -0.32, 0.51, 1.02, -0.57, 0.03, -0.65, 0.93, 0.46, 0.0, 0.49, -0.17, -0.06, 0.26], "z_comb": 1.02, "p": 0.6142692865356733, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9946, "null_sd": 3.55, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 0.428}, {"star": "6141742283401003264", "z": [null, -0.5, -0.41, 1.59, -1.26, -2.99, -3.18, 0.09, -0.45, 4.93, -1.75, 0.95, 4.16, 3.56, 2.02, -2.74, 2.6, -2.98, -0.27, -9.32, 2.18, -1.69, 1.06], "ew_ma": [null, -0.11, -0.09, 0.32, -0.25, -0.68, -0.69, 0.02, -0.13, 1.18, -0.35, 0.17, 0.56, 0.43, 0.47, -0.65, 0.36, -0.44, -0.03, -1.01, 0.21, -0.11, 0.1], "z_comb": 0.59, "p": 0.6217189140542972, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.31, "v": -12.3, "rv_gaia": -13.03, "ew_limit_ma": 0.92}, {"star": "3538141457982396928", "z": [null, -1.04, 1.21, 1.96, -2.39, 0.7, 3.09, -0.53, -1.08, 0.95, 1.42, -1.24, 3.08, -0.75, 0.56, 1.72, -4.44, -1.5, 4.37, -5.33, -2.75, 0.52, -1.69], "ew_ma": [null, -0.1, 0.13, 0.17, -0.19, 0.07, 0.33, -0.05, -0.1, 0.08, 0.11, -0.08, 0.29, -0.07, 0.05, 0.15, -0.36, -0.12, 0.28, -0.3, -0.2, 0.03, -0.09], "z_comb": 1.43, "p": 0.6288685565721714, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.64, "v": 4.8, "rv_gaia": 4.25, "ew_limit_ma": 0.248}, {"star": "2343647384368388608", "z": [null, 0.29, -1.13, 3.17, -0.67, -0.46, -1.17, 0.68, -2.34, -1.68, 1.6, 1.34, 1.09, 0.64, -0.17, 0.59, 4.04, 3.59, 1.87, -6.9, -4.41, -0.22, 3.32], "ew_ma": [null, 0.03, -0.28, 0.3, -0.07, -0.1, -0.25, 0.08, -0.78, -0.21, 0.14, 0.1, 0.25, 0.08, -0.03, 0.09, 0.31, 0.27, 0.12, -0.45, -0.25, -0.01, 0.2], "z_comb": 1.41, "p": 0.671616419179041, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9989, "null_sd": 2.66, "v": 57.4, "rv_gaia": 56.73, "ew_limit_ma": 0.284}, {"star": "6786890622306367872", "z": [null, 0.13, -2.01, 1.55, 0.17, -0.29, -0.9, 0.28, 0.25, 1.06, -0.9, -0.13, -0.83, 1.78, -1.53, 0.05, -0.37, 1.78, -2.38, 1.5, 0.48, 1.77, 1.95], "ew_ma": [null, 0.02, -0.32, 0.27, 0.03, -0.05, -0.17, 0.05, 0.04, 0.2, -0.2, -0.02, -0.12, 0.22, -0.43, 0.02, -0.07, 0.21, -0.32, 0.2, 0.06, 0.2, 0.22], "z_comb": 0.6, "p": 0.7190640467976601, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9992, "null_sd": 1.73, "v": -28.75, "rv_gaia": -29.46, "ew_limit_ma": 0.347}, {"star": "3945118643256370688", "z": [null, 3.28, -2.08, -1.83, 1.01, -0.27, 0.63, 1.52, 1.2, 4.98, 1.33, -0.09, -3.42, -1.48, 1.69, -1.43, 3.07, 1.16, -0.33, 0.54, 0.22, -0.89, 1.55], "ew_ma": [null, 0.68, -0.4, -0.33, 0.19, -0.05, 0.11, 0.24, 0.21, 0.77, 0.22, -0.01, -0.54, -0.21, 0.26, -0.23, 0.49, 0.18, -0.05, 0.08, 0.03, -0.12, 0.21], "z_comb": 1.45, "p": 0.7230138493075347, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 1.66, "v": -1.2, "rv_gaia": -1.67, "ew_limit_ma": 0.378}, {"star": "2376087581593256448", "z": [null, -2.46, 0.09, 2.4, 0.24, -2.12, -2.58, 1.9, -1.38, 5.31, -4.39, 1.06, 4.0, 5.01, 0.0, 2.56, 0.2, -6.96, -0.95, -9.81, 6.3, 0.31, -0.36], "ew_ma": [null, -0.42, 0.02, 0.24, 0.04, -0.38, -0.45, 0.34, -0.27, 0.94, -0.4, 0.15, 0.49, 0.38, 0.0, 0.78, 0.02, -0.77, -0.09, -0.76, 0.47, 0.01, -0.02], "z_comb": 1.88, "p": 0.7253637318134093, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.38, "v": -9.55, "rv_gaia": -10.26, "ew_limit_ma": 0.458}, {"star": "6854626246593473792", "z": [null, -1.28, -3.6, 0.5, 1.34, -1.78, -2.74, 0.87, 1.37, 2.95, 0.44, 1.65, -2.31, 0.47, -0.18, 7.95, 1.12, -0.92, 0.56, -4.5, 0.43, -2.85, 3.19], "ew_ma": [null, -0.2, -0.98, 0.1, 0.24, -0.46, -0.74, 0.2, 0.24, 0.74, 0.09, 0.22, -0.58, 0.1, -0.12, 4.56, 0.41, -0.11, 0.06, -0.34, 0.04, -0.24, 0.32], "z_comb": 1.5, "p": 0.7396630168491576, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.58, "v": -41.4, "rv_gaia": -42.09, "ew_limit_ma": 0.573}, {"star": "5427207918907843072", "z": [null, -0.29, -0.23, 1.62, 0.17, -0.24, 0.91, 0.15, -0.66, -0.13, 2.88, -0.39, -8.9, 0.53, 4.06, -1.18, -0.56, 6.13, 1.86, 0.63, -3.9, 0.67, 2.93], "ew_ma": [null, -0.03, -0.07, 0.17, 0.03, -0.07, 0.28, 0.03, -0.27, -0.02, 0.21, -0.03, -3.16, 0.09, 0.47, -0.16, -0.06, 0.48, 0.15, 0.04, -0.21, 0.05, 0.14], "z_comb": 1.43, "p": 0.7397630118494075, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.69, "v": 65.7, "rv_gaia": 65.01, "ew_limit_ma": 0.365}, {"star": "4079684229322231040", "z": [null, 2.28, 0.07, -0.65, -0.29, 1.69, 2.34, -1.05, 0.16, -3.6, 3.06, -0.61, 2.99, -3.39, -1.6, 2.41, 6.64, 3.03, -0.7, 5.35, -0.96, 1.64, -2.28], "ew_ma": [null, 0.21, 0.01, -0.04, -0.02, 0.12, 0.16, -0.08, 0.01, -0.28, 0.21, -0.04, 0.35, -0.18, -0.11, 0.16, 0.31, 0.16, -0.03, 0.27, -0.04, 0.06, -0.1], "z_comb": 0.95, "p": 0.7402629868506575, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.93, "v": 37.75, "rv_gaia": 37.03, "ew_limit_ma": 0.268}, {"star": "3584074380866605440", "z": [null, 1.69, 1.34, -3.03, 1.23, 3.66, 1.21, 1.25, -0.08, -2.57, -0.1, 0.26, -1.59, 2.33, 0.49, 6.06, -5.92, -2.47, 0.87, -0.07, 0.21, 0.5, -3.14], "ew_ma": [null, 0.61, 0.55, -1.23, 0.51, 1.36, 0.45, 0.45, -0.02, -0.76, -0.03, 0.08, -0.58, 0.64, 0.13, 1.67, -1.62, -0.68, 0.24, -0.02, 0.05, 0.12, -0.68], "z_comb": 1.71, "p": 0.743462826858657, "n_lines": 20, "n_spectra": 1, "twin_r": 0.9961, "null_sd": 2.15, "v": 20.8, "rv_gaia": 19.78, "ew_limit_ma": 1.014}, {"star": "3945118265299248128", "z": [null, -0.32, -0.34, -2.84, 1.51, 0.27, 0.7, 1.85, 0.91, 0.25, 0.91, 0.16, -1.87, 3.72, 3.47, 2.98, -2.86, -2.24, 0.85, -0.57, 2.08, -4.01, -2.18], "ew_ma": [null, -0.06, -0.07, -0.46, 0.25, 0.05, 0.13, 0.35, 0.18, 0.04, 0.15, 0.02, -0.3, 0.48, 0.49, 0.41, -0.38, -0.31, 0.12, -0.08, 0.23, -0.43, -0.23], "z_comb": 1.24, "p": 0.7565121743912805, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9986, "null_sd": 1.88, "v": -0.85, "rv_gaia": -1.56, "ew_limit_ma": 0.378}, {"star": "3975129194660883328", "z": [null, 0.76, -2.73, 0.64, -0.01, 2.04, -1.96, 1.17, 1.17, -0.27, -0.78, -0.22, 2.06, -0.21, 0.49, 0.2, 0.05, 0.33, 1.56, 0.27, 0.26, -0.26, -0.34], "ew_ma": [null, 0.21, -0.72, 0.17, -0.0, 0.52, -0.5, 0.28, 0.27, -0.06, -0.18, -0.05, 0.53, -0.05, 0.11, 0.05, 0.01, 0.08, 0.33, 0.06, 0.06, -0.05, -0.07], "z_comb": 0.91, "p": 0.7570121493925304, "n_lines": 20, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 1.48, "v": 6.75, "rv_gaia": 5.97, "ew_limit_ma": 0.469}, {"star": "2494066897240089984", "z": [null, -1.0, 0.25, 0.6, 0.72, -2.26, -3.26, 1.27, 0.71, 1.69, -1.92, -1.45, 0.11, 3.91, 8.81, -0.25, -4.58, -2.59, -0.53, -3.67, 1.15, -0.02, 0.86], "ew_ma": [null, -0.12, 0.04, 0.07, 0.1, -0.32, -0.45, 0.18, 0.08, 0.2, -0.16, -0.12, 0.01, 0.37, 0.95, -0.03, -0.51, -0.26, -0.05, -0.3, 0.11, -0.0, 0.07], "z_comb": 1.64, "p": 0.7618619069046547, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9987, "null_sd": 2.78, "v": -4.6, "rv_gaia": -5.33, "ew_limit_ma": 0.449}, {"star": "3975223065466473216", "z": [null, -2.93, 0.31, -0.31, 0.66, -0.94, -1.34, 0.11, 0.24, -0.29, -1.95, 1.15, 4.99, 0.26, -1.69, -0.77, 2.07, -0.1, 0.97, -2.66, 2.74, 1.22, -0.73], "ew_ma": [null, -0.89, 0.09, -0.09, 0.19, -0.27, -0.39, 0.03, 0.06, -0.07, -0.45, 0.25, 1.08, 0.05, -0.35, -0.16, 0.45, -0.02, 0.17, -0.46, 0.48, 0.2, -0.13], "z_comb": 0.51, "p": 0.7684615769211539, "n_lines": 20, "n_spectra": 1, "twin_r": 0.9969, "null_sd": 1.49, "v": 6.45, "rv_gaia": 5.8, "ew_limit_ma": 0.457}, {"star": "5579783574073770112", "z": [null, -0.06, 4.46, 4.63, -1.75, 1.44, -0.94, -0.19, -1.28, -0.08, 0.75, -0.45, -2.15, 1.9, -2.33, -1.35, -0.11, -0.43, 2.14, -0.42, -3.09, 2.44, 2.19], "ew_ma": [null, -0.01, 1.21, 0.73, -0.44, 0.53, -0.35, -0.06, -0.37, -0.01, 0.12, -0.07, -0.81, 0.2, -0.43, -0.24, -0.01, -0.05, 0.27, -0.06, -0.27, 0.2, 0.21], "z_comb": 1.24, "p": 0.7903104844757762, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.23, "v": 37.45, "rv_gaia": 36.91, "ew_limit_ma": 0.712}, {"star": "5341673851394297600", "z": [null, -2.62, 1.63, 5.03, -0.49, 1.68, -0.09, 1.09, -2.09, -2.05, 1.13, 0.41, -4.38, 3.96, 0.31, 1.45, -4.89, -0.91, 0.07, 1.4, -2.27, 1.68, 3.76], "ew_ma": [null, -0.53, 0.5, 0.98, -0.16, 0.78, -0.04, 0.44, -0.61, -0.68, 0.18, 0.05, -2.44, 0.71, 0.12, 0.41, -0.63, -0.18, 0.01, 0.26, -0.26, 0.21, 0.59], "z_comb": 1.66, "p": 0.7981100944952753, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 2.87, "v": 50.2, "rv_gaia": 49.52, "ew_limit_ma": 0.985}, {"star": "5726982995343100928", "z": [null, 0.35, 0.52, -0.41, 0.95, 3.0, 1.81, -0.23, 1.1, 4.46, -4.21, 2.77, 3.48, 1.41, -2.71, -4.32, 3.84, 0.95, 2.35, -6.83, -2.97, 1.93, -0.56], "ew_ma": [null, 0.02, 0.04, -0.03, 0.09, 0.27, 0.16, -0.02, 0.08, 0.35, -0.37, 0.15, 0.34, 0.07, -0.25, -0.31, 0.22, 0.04, 0.11, -0.32, -0.13, 0.07, -0.02], "z_comb": 2.04, "p": 0.7984600769961502, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.66, "v": 30.7, "rv_gaia": 30.09, "ew_limit_ma": 0.249}, {"star": "5951165616611763456", "z": [null, -2.21, 4.57, 2.85, -1.36, 2.21, 4.26, 1.13, -0.5, -0.26, -1.46, 0.38, 1.0, 6.23, -1.99, 4.29, -3.92, -3.9, 0.27, 12.01, -4.58, 2.85, -4.0], "ew_ma": [null, -0.18, 0.47, 0.27, -0.14, 0.33, 0.66, 0.14, -0.07, -0.03, -0.23, 0.04, 0.18, 0.69, -0.3, 0.64, -0.6, -0.39, 0.02, 0.74, -0.24, 0.18, -0.22], "z_comb": 1.91, "p": 0.8131093445327734, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.1, "v": 26.5, "rv_gaia": 25.96, "ew_limit_ma": 0.421}, {"star": "5064574724769475968", "z": [null, 3.23, -2.5, -2.1, 0.7, -0.46, 3.9, 0.14, 4.46, -0.59, 4.68, 1.6, 3.82, -1.7, -1.01, 3.53, -1.31, 3.5, -8.41, 11.04, -1.17, 0.75, -4.62], "ew_ma": [null, 0.65, -0.53, -0.34, 0.16, -0.09, 0.76, 0.03, 1.33, -0.13, 0.95, 0.3, 2.34, -0.24, -0.23, 0.71, -0.19, 0.46, -1.12, 1.69, -0.18, 0.07, -0.59], "z_comb": 1.46, "p": 0.8184590770461477, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.82, "v": 9.9, "rv_gaia": 9.77, "ew_limit_ma": 0.917}, {"star": "5493588665684618752", "z": [null, 2.2, -0.34, -2.06, 0.48, 0.05, -2.41, 0.82, 0.54, -0.62, 0.88, 3.41, 2.57, 2.94, 2.04, -0.4, 3.87, -0.75, 5.65, -5.4, -5.02, 2.58, 0.31], "ew_ma": [null, 0.3, -0.05, -0.34, 0.09, 0.01, -0.55, 0.16, 0.05, -0.09, 0.12, 0.39, 0.37, 0.46, 0.41, -0.08, 0.81, -0.06, 0.38, -0.3, -0.37, 0.13, 0.02], "z_comb": 2.96, "p": 0.8483075846207689, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.73, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 0.448}, {"star": "2554032474712538880", "z": [null, -4.18, 3.39, 1.67, -1.99, -2.13, 0.45, 0.97, 0.64, -1.37, 2.2, 0.22, -2.79, 2.3, 0.15, 5.65, -3.15, -4.99, 7.94, -1.5, -0.13, -0.17, 0.95], "ew_ma": [null, -0.71, 0.57, 0.28, -0.31, -0.35, 0.07, 0.16, 0.09, -0.18, 0.26, 0.03, -0.42, 0.25, 0.02, 0.62, -0.32, -0.58, 0.86, -0.15, -0.01, -0.02, 0.09], "z_comb": 2.12, "p": 0.8498075096245188, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.26, "v": 19.95, "rv_gaia": 19.4, "ew_limit_ma": 0.489}, {"star": "3574377616021489024", "z": [null, 2.15, -0.11, -2.86, 1.55, -0.26, -0.2, 0.77, -0.16, -2.08, 0.4, 1.66, -0.29, -0.16, -2.19, -0.08, 8.11, 2.0, 1.94, -3.56, 2.74, -0.45, 2.84], "ew_ma": [null, 0.37, -0.02, -0.47, 0.26, -0.04, -0.03, 0.13, -0.03, -0.34, 0.06, 0.26, -0.05, -0.02, -0.31, -0.01, 1.23, 0.26, 0.24, -0.41, 0.31, -0.05, 0.3], "z_comb": 1.75, "p": 0.8518574071296435, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 1.67, "v": 2.8, "rv_gaia": 1.88, "ew_limit_ma": 0.35}, {"star": "5452492082132835840", "z": [null, -0.64, 1.13, 0.22, -0.88, 2.4, 4.1, 0.99, -2.09, -3.13, 3.24, -0.14, 1.34, 1.78, -1.44, 5.26, 1.22, -0.34, 0.92, -0.84, -2.15, 3.13, 0.21], "ew_ma": [null, -0.06, 0.11, 0.02, -0.08, 0.27, 0.46, 0.12, -0.25, -0.44, 0.41, -0.01, 0.13, 0.16, -0.19, 0.65, 0.14, -0.03, 0.07, -0.06, -0.17, 0.19, 0.01], "z_comb": 3.12, "p": 0.8586070696465177, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.19, "v": 13.5, "rv_gaia": 12.83, "ew_limit_ma": 0.274}, {"star": "648998734141447296", "z": [null, -0.72, 2.6, 2.46, -0.43, 1.71, 2.86, 2.06, -0.14, -3.5, -0.9, 0.31, 2.3, 2.35, 1.82, 3.82, -9.76, -1.26, -3.06, 3.09, -1.97, 0.43, 0.22], "ew_ma": [null, -0.17, 0.59, 0.59, -0.09, 0.45, 0.75, 0.5, -0.03, -0.82, -0.15, 0.05, 0.53, 0.38, 0.4, 0.87, -1.84, -0.22, -0.46, 0.49, -0.31, 0.05, 0.03], "z_comb": 2.29, "p": 0.8662066896655167, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.21, "v": 21.15, "rv_gaia": 20.52, "ew_limit_ma": 0.692}, {"star": "2964794041574370560", "z": [null, -0.78, 2.45, 2.93, -2.33, 2.75, 4.13, 0.34, -1.5, -2.64, -1.49, 2.82, 2.22, -1.15, -6.26, -2.0, 4.92, 5.56, 4.36, 2.19, -2.23, -0.14, 1.2], "ew_ma": [null, -0.03, 0.22, 0.13, -0.15, 0.2, 0.3, 0.02, -0.14, -0.13, -0.06, 0.09, 0.3, -0.06, -0.33, -0.12, 0.3, 0.24, 0.17, 0.12, -0.07, -0.0, 0.04], "z_comb": 1.81, "p": 0.8713564321783911, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.46, "v": 29.7, "rv_gaia": 29.0, "ew_limit_ma": 0.167}, {"star": "2391838429257482496", "z": [null, 1.32, 2.58, 2.71, 0.2, 1.8, 0.65, 1.89, -1.23, 0.47, -1.09, 1.66, 3.75, 2.93, 2.34, -1.39, 4.64, -1.91, 1.3, -3.91, -3.09, -1.59, 0.67], "ew_ma": [null, 0.1, 0.26, 0.3, 0.02, 0.28, 0.1, 0.25, -0.15, 0.08, -0.16, 0.19, 0.35, 0.21, 0.29, -0.17, 0.45, -0.12, 0.07, -0.19, -0.15, -0.07, 0.02], "z_comb": 2.91, "p": 0.8849557522123894, "n_lines": 20, "n_spectra": 4, "twin_r": 0.999, "null_sd": 2.38, "v": 12.85, "rv_gaia": 12.3, "ew_limit_ma": 0.275}, {"star": "2898239468873596800", "z": [null, -1.88, 0.78, -0.05, 1.99, -1.41, -1.96, 1.51, -0.63, -1.06, 2.34, -0.71, -0.64, 3.88, 1.41, -0.45, -2.41, 3.29, 1.96, 4.98, 0.14, 1.36, 1.01], "ew_ma": [null, -0.14, 0.06, -0.0, 0.14, -0.1, -0.14, 0.12, -0.04, -0.08, 0.12, -0.04, -0.04, 0.24, 0.13, -0.04, -0.12, 0.16, 0.08, 0.18, 0.01, 0.05, 0.04], "z_comb": 2.6, "p": 0.8852557372131393, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.6, "v": -3.2, "rv_gaia": -3.85, "ew_limit_ma": 0.241}, {"star": "6501182220888038784", "z": [null, 1.25, 1.73, 2.34, -1.73, 3.43, 4.92, -0.17, -1.33, -2.83, 2.8, -0.23, 5.64, 2.38, 1.02, 3.53, -2.91, -3.44, -1.58, 6.4, -2.85, 2.45, -2.27], "ew_ma": [null, 0.19, 0.27, 0.46, -0.25, 0.59, 0.84, -0.03, -0.24, -0.69, 0.58, -0.03, 1.21, 0.43, 0.26, 0.91, -0.77, -0.48, -0.18, 0.68, -0.36, 0.25, -0.26], "z_comb": 3.14, "p": 0.8908054597270136, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9984, "null_sd": 2.27, "v": 23.95, "rv_gaia": 23.28, "ew_limit_ma": 0.56}, {"star": "3646061719703116032", "z": [null, 0.06, 2.27, 3.18, -0.87, 1.18, 1.98, 0.38, -1.53, -1.05, 2.6, 0.88, -2.43, 4.02, 0.78, -3.54, 4.82, -0.63, 2.41, -6.19, -4.14, 1.3, 5.02], "ew_ma": [null, 0.01, 0.26, 0.3, -0.09, 0.15, 0.25, 0.05, -0.24, -0.22, 0.43, 0.08, -0.7, 0.38, 0.14, -0.57, 0.58, -0.05, 0.16, -0.38, -0.18, 0.09, 0.28], "z_comb": 2.63, "p": 0.9043047847607619, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.57, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.392}, {"star": "3775795982881589376", "z": [null, 2.3, 2.94, 3.14, -2.14, 3.05, 0.91, -0.9, -2.3, 1.85, -1.15, 1.73, -2.33, 2.26, -3.5, -0.92, 4.95, -1.25, 5.78, -6.09, -1.73, 3.76, 4.49], "ew_ma": [null, 0.35, 0.51, 0.4, -0.46, 0.88, 0.27, -0.25, -0.5, 0.26, -0.12, 0.13, -0.86, 0.24, -0.62, -0.14, 0.5, -0.12, 0.56, -0.64, -0.15, 0.33, 0.42], "z_comb": 3.63, "p": 0.9070046497675116, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.93, "v": 30.5, "rv_gaia": 29.93, "ew_limit_ma": 0.731}, {"star": "5381537023379295232", "z": [null, 2.35, 3.5, 2.33, 0.85, 1.86, 3.86, -0.19, -1.4, 2.48, -0.42, 0.86, 12.38, -0.03, -1.7, -5.46, -1.01, -0.62, -2.65, 5.65, -2.82, 4.94, -5.13], "ew_ma": [null, 0.12, 0.28, 0.14, 0.05, 0.15, 0.31, -0.02, -0.12, 0.18, -0.03, 0.05, 1.12, -0.0, -0.15, -0.38, -0.07, -0.04, -0.08, 0.27, -0.15, 0.16, -0.23], "z_comb": 2.97, "p": 0.9076546172691365, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 2.76, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 0.24}, {"star": "3584074376569429248", "z": [null, 2.02, 0.08, 3.01, -2.38, 1.45, 3.24, -0.16, -1.49, -2.0, 1.41, -0.76, 5.73, 2.78, -0.24, -0.97, 1.56, -2.35, 1.44, -0.19, -0.09, -0.55, -0.14], "ew_ma": [null, 0.48, 0.02, 0.86, -0.72, 0.43, 0.97, -0.04, -0.36, -0.47, 0.33, -0.16, 1.6, 0.68, -0.06, -0.23, 0.36, -0.49, 0.29, -0.04, -0.02, -0.09, -0.02], "z_comb": 2.14, "p": 0.9116544172791361, "n_lines": 20, "n_spectra": 1, "twin_r": 0.9964, "null_sd": 1.67, "v": 21.5, "rv_gaia": 20.73, "ew_limit_ma": 0.632}, {"star": "5596797039059063680", "z": [null, 1.99, -1.59, -1.3, 1.5, 0.52, 2.81, -1.52, -0.11, -0.45, 5.78, -0.37, -3.49, 0.19, -3.25, 5.59, 2.42, 1.47, 9.35, 5.03, 2.98, -1.11, -0.39], "ew_ma": [null, 0.23, -0.22, -0.12, 0.17, 0.06, 0.31, -0.17, -0.01, -0.06, 0.65, -0.03, -0.37, 0.02, -0.64, 0.95, 0.25, 0.13, 0.64, 0.36, 0.23, -0.06, -0.03], "z_comb": 4.32, "p": 0.9217039148042598, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.79, "v": -14.95, "rv_gaia": -15.71, "ew_limit_ma": 0.414}, {"star": "6128366415218881536", "z": [null, -3.0, 3.49, 2.95, 0.36, 1.08, -2.1, 2.26, 0.05, -0.13, -1.14, 3.09, -0.42, 5.38, -0.1, -0.9, 3.32, -0.89, 1.82, -4.79, -1.15, 1.89, 2.1], "ew_ma": [null, -0.28, 0.4, 0.35, 0.05, 0.15, -0.29, 0.27, 0.0, -0.01, -0.08, 0.18, -0.03, 0.33, -0.01, -0.06, 0.22, -0.06, 0.13, -0.36, -0.08, 0.09, 0.14], "z_comb": 3.3, "p": 0.9252537373131343, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 2.97, "v": 31.3, "rv_gaia": 30.47, "ew_limit_ma": 0.402}, {"star": "3480332916165099904", "z": [null, -0.18, 0.13, -0.62, 0.72, -0.63, -0.03, 1.54, 0.08, -0.61, 2.71, 1.21, -1.4, 4.18, 1.57, 4.09, 1.03, -1.88, 3.77, -5.53, -0.87, -1.46, 3.39], "ew_ma": [null, -0.01, 0.01, -0.05, 0.07, -0.07, -0.0, 0.16, 0.01, -0.07, 0.29, 0.12, -0.21, 0.4, 0.25, 0.56, 0.14, -0.13, 0.18, -0.23, -0.05, -0.07, 0.14], "z_comb": 3.62, "p": 0.9473026348682566, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.69, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.349}, {"star": "627699888238838528", "z": [null, -1.02, 3.95, 0.16, -2.63, 3.3, 0.75, 2.69, -0.12, -2.74, 0.08, -0.54, -3.46, 3.71, -0.22, 6.15, -1.77, -6.47, 6.66, -4.2, 0.36, 2.63, 1.02], "ew_ma": [null, -0.22, 0.8, 0.04, -0.59, 0.85, 0.19, 0.71, -0.03, -0.6, 0.01, -0.11, -0.86, 0.58, -0.04, 1.18, -0.33, -1.05, 1.1, -0.66, 0.06, 0.36, 0.14], "z_comb": 3.27, "p": 0.9724013799310034, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9985, "null_sd": 1.98, "v": 31.5, "rv_gaia": 30.81, "ew_limit_ma": 0.715}, {"star": "6226694571859532800", "z": [null, 3.29, 2.4, 2.02, 1.23, -0.01, -3.24, 1.25, 2.18, 0.53, 1.65, 1.16, 5.54, 2.32, 5.17, -2.82, 4.61, 0.04, 3.39, -3.56, -1.88, 2.17, 0.4], "ew_ma": [null, 0.61, 0.66, 0.54, 0.23, -0.0, -0.73, 0.26, 0.18, 0.05, 0.11, 0.07, 0.95, 0.21, 0.63, -0.39, 0.55, 0.0, 0.26, -0.25, -0.15, 0.15, 0.03], "z_comb": 5.95, "p": 0.9738013099345033, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 2.98, "v": 5.8, "rv_gaia": 5.14, "ew_limit_ma": 0.683}, {"star": "2619706544757416192", "z": [null, -1.52, -0.27, -0.19, -2.3, -0.57, -0.3, 1.58, 0.73, 8.07, 0.05, 0.21, 2.07, 5.46, 0.2, 5.81, -5.08, -3.56, 0.02, -2.07, 3.94, 3.15, -0.22], "ew_ma": [null, -0.34, -0.06, -0.03, -0.33, -0.09, -0.05, 0.23, 0.12, 0.96, 0.01, 0.02, 0.24, 0.46, 0.04, 1.15, -0.62, -0.54, 0.0, -0.18, 0.4, 0.21, -0.02], "z_comb": 5.16, "p": 0.9813509324533773, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.57, "v": -20.2, "rv_gaia": -20.78, "ew_limit_ma": 0.645}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pu_FEROS.json b/papers/short_lived_elements/data/element_Pu_FEROS.json new file mode 100644 index 0000000000000000000000000000000000000000..b1ad4b9a4904126d51366fdb9281269775285531 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pu_FEROS.json @@ -0,0 +1 @@ +{"lines": [[4105.95, 0.8193180042768339], [4129.93, 0.8289160844753647], [4141.2, 0.8334462487243048], [4159.39, 0.8407840652317417], [4178.28, 0.8484383011777761], [4189.9, 0.8531639595992974], [4190.06, 0.8532291205052488], [4196.2, 0.8557315501683459], [4229.77, 0.8694781862395033], [4254.76, 0.8797825037255271], [4273.34, 0.8874830791575251], [4289.08, 0.8940328550498184], [4337.18, 0.9141976033653123], [4352.71, 0.9207561999762266], [4379.91, 0.9322997303975664], [4385.35, 0.9346170657553621], [4393.93, 0.9382778267356214], [4441.65, 0.9587687102273921], [4468.54, 0.9704127304959331], [4472.79, 0.972259515074585], [4493.78, 0.9814062052256397], [4504.91, 0.9862736343986085], [4536.15, 1.0]], "stable": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, true, true, true], "results": [{"star": "3946438125929224320", "z": [null, 0.25, 0.08, 0.49, 2.1, -6.58, -2.07, -2.61, 1.43, 1.53, 3.31, -3.22, -6.13, -11.73, 1.91, -2.96, -3.61, 1.71, -17.35, 8.96, -2.21, 0.94, -2.25], "ew_ma": [null, 0.04, 0.01, 0.07, 0.35, -1.39, -0.44, -0.47, 0.36, 0.29, 0.54, -0.6, -0.96, -1.37, 0.26, -0.4, -0.44, 0.22, -2.05, 1.0, -0.24, 0.13, -0.22], "z_comb": -6.73, "p": 0.018249087545622718, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.32, "v": 2.25, "rv_gaia": 1.76, "ew_limit_ma": 0.155}, {"star": "6612242034982766848", "z": [null, -2.79, -1.5, -1.04, -2.71, -1.39, -6.99, 0.74, -0.84, 0.42, 2.67, -2.18, -6.18, 9.26, -3.93, 4.15, -2.91, -4.7, 15.84, -17.62, -0.98, -9.16, -1.02], "ew_ma": [null, -0.77, -0.52, -0.24, -0.76, -0.37, -1.88, 0.22, -0.24, 0.1, 0.88, -0.58, -1.54, 1.97, -0.92, 0.93, -0.57, -1.04, 2.8, -3.11, -0.21, -1.12, -0.16], "z_comb": -7.03, "p": 0.027848607569621518, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 5.12, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 0.358}, {"star": "2477815222028038272", "z": [null, -3.71, 5.75, -0.34, 1.77, -1.4, -4.06, 1.65, 1.09, -9.43, 2.64, -0.02, -4.82, -2.46, 4.18, 9.2, -1.03, 3.25, 4.25, 2.85, -21.49, -7.17, -2.25], "ew_ma": [null, -2.36, 3.97, -0.21, 1.0, -0.84, -2.52, 0.99, 0.91, -6.01, 1.75, -0.01, -2.45, -0.94, 2.4, 4.19, -0.42, 1.45, 1.81, 1.11, -8.4, -5.23, -0.86], "z_comb": -6.88, "p": 0.03984800759962002, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9819, "null_sd": 3.84, "v": 11.9, "rv_gaia": 11.46, "ew_limit_ma": 1.156}, {"star": "3789271459953459328", "z": [null, -4.59, 9.09, 2.41, -0.8, 3.06, -3.02, -1.62, -0.54, -13.36, 4.89, -0.36, -2.16, 0.74, -0.38, 4.5, -6.94, -2.49, 7.44, 3.35, -6.69, -6.32, -4.77], "ew_ma": [null, -1.29, 2.97, 0.63, -0.2, 0.91, -0.91, -0.56, -0.28, -6.1, 1.26, -0.11, -0.64, 0.15, -0.14, 1.46, -1.75, -1.07, 1.88, 0.55, -1.65, -1.42, -0.81], "z_comb": -7.03, "p": 0.08699565021748913, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9917, "null_sd": 5.75, "v": 19.0, "rv_gaia": 18.5, "ew_limit_ma": 2.563}, {"star": "5559265690666327168", "z": [null, 2.38, 2.2, 0.84, -6.86, -1.74, 1.31, 1.79, -0.24, -16.15, 4.81, -4.39, -5.7, 3.37, -0.18, 6.73, -7.91, -4.89, 4.26, 1.05, 3.21, 1.53, -1.93], "ew_ma": [null, 0.75, 1.31, 0.3, -2.56, -0.61, 0.45, 0.56, -0.11, -7.06, 2.19, -1.3, -2.12, 0.94, -0.07, 2.58, -2.65, -1.46, 0.93, 0.25, 0.52, 0.24, -0.5], "z_comb": -4.85, "p": 0.10654467276636168, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9948, "null_sd": 4.65, "v": 89.1, "rv_gaia": 88.55, "ew_limit_ma": 1.006}, {"star": "3407611182744289152", "z": [null, -2.91, 1.69, 4.19, -0.9, -0.37, -1.85, 1.45, -3.47, 3.08, -3.71, -2.91, 4.25, 7.53, -1.38, -7.28, -5.39, -7.5, 1.37, -7.33, 1.59, -4.9, -1.32], "ew_ma": [null, -1.57, 0.93, 2.51, -0.5, -0.25, -1.24, 0.96, -2.32, 2.44, -2.21, -1.47, 2.02, 2.57, -0.78, -4.03, -2.17, -3.4, 0.51, -2.62, 0.52, -1.42, -0.42], "z_comb": -4.76, "p": 0.15694215289235539, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 4.73, "v": 21.1, "rv_gaia": 20.6, "ew_limit_ma": 1.544}, {"star": "2382711653818308224", "z": [null, -4.52, 4.94, 2.64, -0.96, 5.09, 4.59, 0.42, -0.32, -8.04, 5.96, -1.28, -2.24, -0.55, -3.08, 2.33, -7.36, 2.46, 14.43, -2.0, -2.8, -8.57, -4.28], "ew_ma": [null, -2.16, 2.21, 1.12, -0.46, 2.44, 2.16, 0.2, -0.18, -4.89, 3.54, -0.8, -1.39, -0.29, -1.93, 1.46, -3.89, 1.14, 6.62, -0.84, -1.53, -3.69, -1.72], "z_comb": -3.99, "p": 0.15804209789510523, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9787, "null_sd": 3.98, "v": 7.3, "rv_gaia": 6.41, "ew_limit_ma": 1.452}, {"star": "3256786534197166208", "z": [null, -3.28, -2.16, -1.04, -5.79, 1.08, -3.86, 5.82, 0.12, 2.44, 5.14, 1.36, 2.69, 3.33, -0.23, 2.14, -6.89, -5.07, 8.89, -9.7, -3.07, -2.34, -3.85], "ew_ma": [null, -0.75, -0.49, -0.2, -1.02, 0.25, -0.91, 1.32, 0.03, 0.42, 0.96, 0.33, 1.07, 0.52, -0.05, 0.41, -1.16, -1.03, 1.69, -1.66, -0.58, -0.33, -0.57], "z_comb": -3.19, "p": 0.16094195290235488, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9948, "null_sd": 3.72, "v": 18.1, "rv_gaia": 17.62, "ew_limit_ma": 0.423}, {"star": "3732539683617410816", "z": [null, -2.48, -2.29, 1.52, -2.83, -3.26, -7.88, 0.0, 0.45, 7.18, -3.39, 0.81, -7.1, -1.66, -3.84, 0.73, -2.06, -5.32, -9.39, 3.31, 9.85, 0.21, -2.4], "ew_ma": [null, -1.28, -1.56, 0.56, -1.05, -1.28, -3.09, 0.0, 0.24, 2.85, -1.24, 0.32, -3.13, -0.65, -3.99, 0.74, -0.88, -2.02, -3.82, 0.98, 3.46, 0.04, -0.51], "z_comb": -5.12, "p": 0.16534173291335433, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9902, "null_sd": 3.9, "v": -26.95, "rv_gaia": -27.25, "ew_limit_ma": 1.029}, {"star": "3855524182352238336", "z": [null, -8.74, 2.13, 4.59, -1.35, 2.75, 6.38, -2.85, 2.83, -2.63, 2.46, 3.04, -1.08, -4.89, 2.43, -7.13, -4.19, 1.34, -0.79, -3.21, -3.53, -6.72, 0.18], "ew_ma": [null, -1.15, 0.4, 0.64, -0.2, 0.48, 1.1, -0.54, 0.57, -0.37, 0.34, 0.42, -0.19, -0.8, 0.37, -1.12, -0.58, 0.19, -0.08, -0.35, -0.41, -0.68, 0.02], "z_comb": -3.67, "p": 0.17139143042847857, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 9.34, "v": 16.8, "rv_gaia": 16.57, "ew_limit_ma": 0.368}, {"star": "4367026303085396352", "z": [null, -0.44, -4.74, -0.33, -1.58, -3.8, -0.22, -2.61, -1.49, 7.27, -1.75, -3.17, -1.36, -1.84, -3.75, 12.84, -0.05, -2.55, 1.62, 5.87, 2.57, -6.13, -0.8], "ew_ma": [null, -0.13, -2.55, -0.1, -0.37, -1.09, -0.06, -0.61, -0.3, 2.99, -0.69, -0.61, -0.35, -0.43, -4.23, 9.14, -0.03, -0.6, 0.34, 0.94, 0.43, -0.86, -0.14], "z_comb": -3.01, "p": 0.1847907604619769, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.11, "v": -35.5, "rv_gaia": -35.94, "ew_limit_ma": 0.849}, {"star": "3551002857809958400", "z": [null, -1.25, 2.62, 4.59, -5.59, 0.29, -5.68, -4.51, -5.68, 3.95, -8.39, -2.82, -3.35, 0.65, -0.37, -3.68, 0.48, -14.44, 3.36, -15.98, 3.39, 5.4, 2.54], "ew_ma": [null, -0.49, 0.96, 1.35, -2.02, 0.1, -1.92, -1.71, -2.64, 1.94, -3.68, -1.0, -1.06, 0.18, -0.21, -2.1, 0.15, -3.59, 0.8, -3.64, 0.77, 0.83, 0.54], "z_comb": -6.96, "p": 0.18534073296335182, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 6.6, "v": -3.55, "rv_gaia": -4.08, "ew_limit_ma": 1.551}, {"star": "6879764552737781888", "z": [null, -4.37, -2.02, -0.59, -2.64, 5.42, 6.78, -2.66, 2.27, -0.66, -5.12, 1.97, -3.85, -1.25, -1.39, 0.06, 1.71, -0.51, -2.46, 2.43, -0.71, -3.33, -0.53], "ew_ma": [null, -1.48, -0.75, -0.17, -0.79, 1.72, 2.11, -0.92, 0.71, -0.2, -1.69, 0.78, -1.83, -0.34, -0.39, 0.02, 0.47, -0.13, -0.56, 0.56, -0.16, -0.9, -0.12], "z_comb": -2.63, "p": 0.18664066796660167, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.79, "v": 27.4, "rv_gaia": 27.2, "ew_limit_ma": 0.733}, {"star": "2423493369021649920", "z": [null, -3.23, -3.89, 0.58, 5.11, -3.7, -10.84, 0.95, 0.44, 5.9, 1.95, 0.32, 0.27, -1.9, 1.87, -8.25, -0.19, 2.99, 1.48, -8.7, -3.58, -1.9, 6.83], "ew_ma": [null, -1.2, -1.72, 0.18, 1.61, -1.11, -3.28, 0.27, 0.14, 2.29, 0.74, 0.09, 0.09, -0.47, 1.0, -3.8, -0.07, 0.7, 0.37, -1.81, -0.85, -0.38, 1.71], "z_comb": -2.09, "p": 0.19359032048397581, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9933, "null_sd": 3.88, "v": -1.95, "rv_gaia": -2.55, "ew_limit_ma": 0.888}, {"star": "3101382419728401408", "z": [null, 2.07, 5.14, -3.71, 0.81, 5.9, 4.08, -0.95, -0.76, -1.97, -1.2, -5.16, -8.68, -1.76, -0.25, -4.17, 2.58, 0.42, 0.93, -6.85, 0.5, 0.23, -0.73], "ew_ma": [null, 1.11, 2.56, -1.76, 0.33, 3.98, 2.86, -0.91, -0.73, -0.98, -1.06, -3.27, -6.19, -1.25, -0.16, -2.31, 1.09, 0.15, 0.31, -2.41, 0.15, 0.08, -0.36], "z_comb": -1.9, "p": 0.22943852807359633, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 4.78, "v": 54.05, "rv_gaia": 53.99, "ew_limit_ma": 1.684}, {"star": "5528591961953902720", "z": [null, -2.91, -3.13, 0.97, -1.25, -0.86, -3.84, 3.61, -3.49, 1.88, -0.92, -6.51, -2.16, 4.97, -1.6, 7.56, -3.86, -2.99, 3.68, 1.31, 3.07, -0.59, -3.92], "ew_ma": [null, -0.88, -1.06, 0.3, -0.37, -0.27, -1.16, 1.13, -1.1, 0.58, -0.28, -1.78, -0.59, 1.24, -0.54, 2.54, -1.15, -0.74, 0.86, 0.26, 0.6, -0.12, -0.65], "z_comb": -3.47, "p": 0.23888805559722015, "n_lines": 20, "n_spectra": 4, "twin_r": 0.994, "null_sd": 4.89, "v": -1.35, "rv_gaia": -1.8, "ew_limit_ma": 1.977}, {"star": "3532823773073745536", "z": [null, -3.91, 7.79, 1.44, -5.3, 0.9, 5.99, 2.16, -2.26, -12.61, 5.47, -4.52, -1.27, 6.63, -0.28, 11.32, -10.62, -9.81, 8.16, 9.31, -2.02, -1.09, -3.1], "ew_ma": [null, -2.41, 6.06, 0.7, -2.76, 0.43, 2.89, 1.15, -1.34, -7.82, 2.69, -2.52, -1.06, 2.27, -0.16, 5.81, -4.88, -5.04, 2.76, 2.54, -0.54, -0.31, -1.05], "z_comb": -3.67, "p": 0.2609369531523424, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9932, "null_sd": 6.04, "v": 40.5, "rv_gaia": 39.76, "ew_limit_ma": 2.895}, {"star": "4906784051581971200", "z": [null, 0.9, -4.03, -1.37, -0.95, -4.15, -3.87, -2.51, -0.76, 1.63, -6.54, 1.68, 5.69, -8.15, -0.3, -6.99, 3.88, 1.32, -9.41, -4.62, 1.7, 3.45, 3.36], "ew_ma": [null, 0.27, -1.25, -0.41, -0.31, -1.44, -1.33, -0.87, -0.33, 0.48, -1.88, 0.48, 2.46, -1.71, -0.09, -2.12, 0.86, 0.32, -1.76, -0.78, 0.34, 0.57, 0.55], "z_comb": -3.18, "p": 0.2969851507424629, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9957, "null_sd": 6.16, "v": 3.45, "rv_gaia": 2.92, "ew_limit_ma": 1.006}, {"star": "5663558453071724288", "z": [null, -0.11, 2.18, -0.65, -1.41, 3.83, 4.52, -4.49, -0.1, -0.56, -4.49, 1.8, -12.5, -2.08, -4.35, -6.96, 2.54, 6.11, 3.37, -4.87, 1.41, 1.96, 2.88], "ew_ma": [null, -0.03, 0.61, -0.12, -0.39, 1.17, 1.36, -1.27, -0.04, -0.16, -1.27, 0.62, -7.3, -0.52, -1.48, -2.3, 0.56, 0.95, 0.61, -0.81, 0.22, 0.25, 0.38], "z_comb": -2.27, "p": 0.29983500824958753, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9916, "null_sd": 6.16, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 1.768}, {"star": "5062172841616745856", "z": [null, -4.02, 0.02, 5.44, 2.77, -2.52, 0.43, 2.69, -2.46, -2.8, -2.57, 0.19, 7.39, 1.05, 4.62, -9.22, -0.55, -1.74, -2.77, 1.76, -7.03, 2.76, -6.57], "ew_ma": [null, -1.24, 0.01, 1.45, 0.95, -0.85, 0.14, 0.8, -0.8, -0.82, -0.63, 0.05, 1.86, 0.22, 1.2, -2.07, -0.11, -0.33, -0.6, 0.4, -1.56, 0.44, -1.26], "z_comb": -3.0, "p": 0.3379331033448328, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.74, "v": 11.8, "rv_gaia": 11.16, "ew_limit_ma": 0.926}, {"star": "5567900121118276736", "z": [null, -2.78, 2.92, -0.47, 2.08, 1.21, 2.29, -4.46, 2.35, -6.8, -5.67, 3.93, -6.96, -3.55, -3.92, -2.97, 2.23, 4.55, -4.32, 2.4, -2.24, 0.27, 4.52], "ew_ma": [null, -0.56, 0.71, -0.09, 0.4, 0.21, 0.39, -0.71, 0.68, -1.16, -0.8, 0.98, -2.66, -0.66, -0.8, -0.54, 0.42, 0.75, -0.63, 0.34, -0.36, 0.03, 0.58], "z_comb": -2.92, "p": 0.3389830508474576, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9948, "null_sd": 3.86, "v": 28.4, "rv_gaia": 27.55, "ew_limit_ma": 0.567}, {"star": "5888394257280681856", "z": [null, -0.56, -2.99, 1.51, -3.91, -3.95, -1.77, -0.5, -1.6, 6.03, 0.26, -2.41, 2.51, 1.84, -0.28, 4.02, -5.56, -5.83, -1.97, 1.59, 6.7, 1.47, -2.11], "ew_ma": [null, -0.88, -6.53, 2.53, -7.17, -9.15, -4.06, -0.96, -3.11, 8.6, 0.32, -3.15, 3.9, 2.07, -0.43, 5.87, -7.86, -6.63, -2.58, 1.82, 4.51, 0.99, -1.75], "z_comb": -1.42, "p": 0.37333133343332836, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9791, "null_sd": 6.01, "v": -8.6, "rv_gaia": -8.77, "ew_limit_ma": 9.125}, {"star": "6150200345317455232", "z": [null, 2.5, -3.64, -4.12, 1.1, -4.44, -10.28, 0.51, 1.58, 4.89, 0.02, 3.0, -3.6, 2.14, 1.1, -4.14, 0.08, 3.21, 1.24, -6.23, 6.33, -0.53, 3.54], "ew_ma": [null, 0.76, -1.4, -1.21, 0.34, -1.93, -4.36, 0.21, 0.75, 1.7, 0.0, 0.81, -1.18, 0.7, 0.39, -1.29, 0.02, 0.93, 0.29, -1.4, 1.5, -0.1, 0.62], "z_comb": 0.24, "p": 0.38203089845507726, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9955, "null_sd": 3.97, "v": -6.45, "rv_gaia": -7.11, "ew_limit_ma": 1.073}, {"star": "6018047019138644480", "z": [null, 0.3, -1.54, -1.46, 2.86, -1.15, 1.92, -1.8, 3.28, 2.49, -1.38, -2.52, -1.95, -5.39, 3.08, -3.17, -3.85, 4.45, -15.13, 20.92, 2.22, -0.11, 0.55], "ew_ma": [null, 0.08, -0.41, -0.39, 0.73, -0.43, 0.71, -0.67, 0.87, 0.75, -0.37, -0.83, -0.44, -1.25, 0.89, -0.92, -1.15, 0.89, -2.47, 3.0, 0.41, -0.02, 0.07], "z_comb": -0.68, "p": 0.3903304834758262, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.12, "v": 13.35, "rv_gaia": 12.85, "ew_limit_ma": 1.116}, {"star": "6629790584164277376", "z": [null, -4.06, -2.13, -3.36, -0.64, -2.32, -4.35, -1.11, 5.77, 1.81, -3.42, 2.93, 1.04, -9.03, 2.37, -11.61, 4.39, 2.68, -14.17, -3.64, 3.27, -0.05, 5.92], "ew_ma": [null, -0.75, -0.43, -0.57, -0.12, -0.43, -0.81, -0.2, 1.66, 0.45, -0.78, 0.75, 0.27, -1.58, 0.47, -2.24, 0.84, 0.49, -2.24, -0.54, 0.5, -0.01, 0.77], "z_comb": -2.28, "p": 0.4039798010099495, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9971, "null_sd": 24.24, "v": 0.75, "rv_gaia": 0.5, "ew_limit_ma": 1.338}, {"star": "6698960688866464768", "z": [null, 2.46, -1.97, -4.52, -6.63, 0.13, 0.21, -1.81, 4.6, -0.15, 7.02, -5.68, 7.31, 1.45, -6.69, 5.25, -4.01, -6.89, -3.71, 3.95, -3.26, 1.03, 1.19], "ew_ma": [null, 1.75, -1.58, -3.53, -7.19, 0.13, 0.22, -1.6, 3.99, -0.14, 4.45, -4.75, 6.55, 0.87, -3.99, 2.92, -2.7, -4.16, -2.61, 3.02, -1.88, 0.41, 0.61], "z_comb": -2.47, "p": 0.40412979351032446, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9144, "null_sd": 5.41, "v": -3.5, "rv_gaia": -7.85, "ew_limit_ma": 3.1}, {"star": "2790914111658905216", "z": [null, -1.93, -2.82, -3.18, 1.87, -4.22, -2.91, 2.26, -1.16, 3.81, -0.7, 2.89, 1.24, 0.56, -2.5, 4.4, 0.47, -5.63, 4.03, 2.84, 4.05, -2.84, 5.34], "ew_ma": [null, -0.61, -1.27, -0.99, 0.48, -1.57, -1.1, 0.76, -0.37, 0.85, -0.14, 0.62, 0.33, 0.12, -1.28, 2.39, 0.16, -1.32, 0.81, 0.62, 0.97, -0.58, 0.93], "z_comb": 0.02, "p": 0.4094795260236988, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9879, "null_sd": 5.56, "v": -23.0, "rv_gaia": -23.67, "ew_limit_ma": 0.873}, {"star": "5640565607657897728", "z": [null, 0.12, -2.2, -4.19, -1.51, -1.56, -2.06, -0.66, 2.48, -4.11, 4.33, -2.2, -5.43, -4.03, 5.4, 6.53, 0.7, 2.05, 0.36, 0.4, 2.42, -2.61, 1.3], "ew_ma": [null, 0.04, -0.76, -1.42, -0.51, -0.67, -0.89, -0.22, 0.77, -1.58, 1.62, -0.69, -1.95, -1.22, 2.0, 2.41, 0.2, 0.51, 0.08, 0.08, 0.5, -0.51, 0.24], "z_comb": -0.89, "p": 0.41542922853857306, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9894, "null_sd": 4.98, "v": 15.15, "rv_gaia": 14.67, "ew_limit_ma": 2.045}, {"star": "3285218186904332288", "z": [null, -0.77, -0.47, 1.02, 2.87, 0.89, -2.35, -1.55, 0.19, -5.47, 3.18, -2.36, 1.64, -7.07, -2.25, 2.44, -0.4, 2.02, -7.19, 1.96, 9.42, -3.67, 0.44], "ew_ma": [null, -0.38, -0.26, 0.48, 1.52, 0.46, -1.21, -0.76, 0.1, -3.09, 1.77, -1.24, 0.86, -3.31, -1.27, 1.47, -0.23, 0.79, -2.58, 0.67, 3.64, -2.32, 0.16], "z_comb": -0.36, "p": 0.4245787710614469, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9728, "null_sd": 4.56, "v": -7.1, "rv_gaia": -7.28, "ew_limit_ma": 3.524}, {"star": "3250489115709122560", "z": [null, -0.53, -5.34, -0.03, 0.94, -0.82, 0.56, -2.83, 5.05, -2.26, 1.63, -1.23, 1.13, -9.71, -4.16, -0.81, -1.41, 4.91, -23.82, 25.98, 0.15, 5.87, -0.93], "ew_ma": [null, -0.27, -2.77, -0.02, 0.53, -0.43, 0.29, -1.67, 3.86, -1.58, 1.28, -0.88, 0.81, -4.99, -2.45, -0.47, -0.72, 2.18, -9.12, 7.4, 0.05, 1.71, -0.28], "z_comb": -2.02, "p": 0.4307784610769462, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9765, "null_sd": 6.59, "v": 121.05, "rv_gaia": 120.58, "ew_limit_ma": 3.777}, {"star": "5291028181119851776", "z": [null, 3.46, -1.93, 0.25, -0.63, 2.97, 5.11, -0.62, 2.77, -1.28, 4.17, -6.72, 2.63, 11.14, 1.06, 6.28, -14.97, -6.21, -8.73, 24.34, -4.57, 4.74, -7.66], "ew_ma": [null, 0.6, -0.36, 0.05, -0.12, 0.7, 1.21, -0.13, 0.66, -0.21, 0.69, -1.24, 0.53, 1.79, 0.19, 1.15, -2.43, -1.11, -1.34, 3.41, -0.62, 0.53, -0.99], "z_comb": -0.42, "p": 0.43322833858307086, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.68, "v": 15.6, "rv_gaia": 15.01, "ew_limit_ma": 0.819}, {"star": "5357075947709011456", "z": [null, -1.0, 1.32, 1.85, -0.84, 1.13, 3.62, -3.02, -5.32, 0.68, -3.15, 1.46, 9.47, -4.64, -1.22, -4.53, -0.19, -6.2, -7.63, 2.76, -2.31, 5.75, -0.91], "ew_ma": [null, -0.2, 0.28, 0.44, -0.24, 0.32, 0.98, -0.76, -2.12, 0.26, -1.31, 0.58, 3.78, -0.95, -0.37, -1.54, -0.05, -1.0, -1.24, 0.42, -0.37, 0.68, -0.15], "z_comb": -1.88, "p": 0.4362281885905705, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9949, "null_sd": 7.36, "v": 21.6, "rv_gaia": 21.19, "ew_limit_ma": 1.294}, {"star": "4634528720388462592", "z": [null, -0.11, -0.86, 2.07, -2.9, -5.63, -1.01, 2.4, 0.31, 6.85, 0.56, -1.19, -6.38, 2.56, 5.44, 4.63, -1.32, -7.07, 6.66, -4.29, 6.79, -2.25, 4.43], "ew_ma": [null, -0.05, -0.52, 1.03, -1.57, -3.39, -0.61, 1.63, 0.22, 3.39, 0.22, -0.41, -2.55, 0.81, 2.25, 2.0, -0.41, -3.16, 2.42, -1.48, 2.22, -0.8, 1.21], "z_comb": 1.83, "p": 0.4377281135943203, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9926, "null_sd": 4.25, "v": -5.55, "rv_gaia": -6.07, "ew_limit_ma": 1.783}, {"star": "4867596937475715968", "z": [null, -0.43, 4.07, 0.93, -2.14, -3.45, -10.61, 2.78, 1.63, -2.36, 0.19, 1.21, -7.11, 4.53, 3.19, 9.43, -1.32, -4.74, 10.12, -6.86, 2.61, -0.76, 3.86], "ew_ma": [null, -0.27, 2.81, 0.68, -1.77, -3.03, -9.54, 2.44, 0.94, -1.31, 0.11, 0.63, -3.22, 1.56, 1.45, 4.17, -0.52, -2.02, 4.75, -3.06, 1.1, -0.27, 1.4], "z_comb": 0.58, "p": 0.45392730363481826, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9757, "null_sd": 3.96, "v": -9.15, "rv_gaia": -9.94, "ew_limit_ma": 2.262}, {"star": "6357835694518769408", "z": [null, -4.31, -2.14, -3.39, -4.99, 1.23, 3.07, 1.86, -2.8, 0.15, 1.99, -3.27, 5.37, 5.27, -2.2, 11.0, -3.95, -6.71, 6.51, -0.89, 3.54, -1.16, -2.29], "ew_ma": [null, -1.2, -0.62, -1.04, -1.54, 0.4, 0.97, 0.52, -0.83, 0.04, 0.47, -0.8, 1.26, 1.03, -0.52, 2.39, -0.88, -1.46, 1.41, -0.19, 0.73, -0.24, -0.45], "z_comb": -0.68, "p": 0.5227738613069347, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 3.56, "v": 14.8, "rv_gaia": 14.4, "ew_limit_ma": 0.95}, {"star": "2913411183149615744", "z": [null, 0.49, -0.1, -3.36, -1.15, 3.97, 5.41, 1.25, -1.84, 5.09, -1.68, 0.33, 1.5, 1.02, -8.56, 3.42, 1.86, 1.21, -0.15, -0.79, -1.49, -2.92, -0.02], "ew_ma": [null, 0.11, -0.03, -0.64, -0.24, 0.9, 1.23, 0.3, -0.39, 1.13, -0.31, 0.07, 0.24, 0.21, -2.05, 0.8, 0.37, 0.22, -0.03, -0.13, -0.22, -0.47, -0.0], "z_comb": 0.83, "p": 0.5229738513074347, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.36, "v": 22.4, "rv_gaia": 21.69, "ew_limit_ma": 0.7}, {"star": "4708607629114652032", "z": [null, 2.23, -3.4, 3.0, 4.13, 1.2, 1.93, 1.16, 4.13, -3.82, 1.63, -1.45, -1.1, -1.34, 0.05, -2.58, -10.36, -1.15, -4.4, 2.11, -1.9, 4.88, 1.65], "ew_ma": [null, 0.62, -1.01, 0.69, 1.29, 0.44, 0.72, 0.36, 1.07, -1.24, 0.7, -0.44, -0.46, -0.44, 0.02, -0.86, -2.47, -0.25, -0.83, 0.41, -0.3, 0.64, 0.24], "z_comb": -0.43, "p": 0.5345232738363082, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.73, "v": 95.75, "rv_gaia": 95.23, "ew_limit_ma": 0.946}, {"star": "5945941905576552064", "z": [null, 1.36, 1.57, 0.86, 1.26, -2.42, -5.67, -2.86, 1.29, 7.34, 1.9, 0.13, 0.05, 3.79, -1.32, 0.47, 0.78, -3.32, 6.71, -7.98, -3.61, 0.77, 2.32], "ew_ma": [null, 0.34, 0.39, 0.21, 0.3, -0.62, -1.41, -0.63, 0.25, 1.3, 0.32, 0.02, 0.01, 0.64, -0.21, 0.08, 0.14, -0.59, 1.06, -1.21, -0.61, 0.12, 0.32], "z_comb": 1.01, "p": 0.5446727663616819, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 8.49, "v": -8.75, "rv_gaia": -9.54, "ew_limit_ma": 0.885}, {"star": "5902750168276592256", "z": [null, -0.82, -3.5, -1.63, -0.95, -0.41, 0.16, -2.51, -3.08, 1.18, -3.58, -0.14, 5.68, -0.27, -1.13, 7.37, 4.31, 1.95, -7.06, 16.79, -2.1, -1.14, -2.39], "ew_ma": [null, -0.24, -1.27, -0.44, -0.21, -0.11, 0.05, -0.83, -0.9, 0.56, -1.15, -0.05, 1.74, -0.08, -0.61, 3.5, 1.69, 0.44, -1.19, 2.52, -0.4, -0.15, -0.43], "z_comb": -0.48, "p": 0.5631718414079296, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.29, "v": -68.35, "rv_gaia": -68.78, "ew_limit_ma": 1.276}, {"star": "5459060117921483008", "z": [null, 3.44, -0.56, 1.12, 1.23, 2.59, 0.99, -3.61, -0.76, -1.67, -1.81, -0.26, -7.7, -4.36, 0.78, -12.59, 11.47, 10.35, -5.78, -0.07, -1.39, 4.21, 4.18], "ew_ma": [null, 1.06, -0.18, 0.29, 0.41, 0.9, 0.33, -1.14, -0.3, -0.52, -0.43, -0.09, -7.01, -1.08, 0.28, -4.02, 2.65, 2.59, -1.41, -0.02, -0.3, 0.88, 0.9], "z_comb": 1.47, "p": 0.5730713464326783, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 4.31, "v": 44.65, "rv_gaia": 43.93, "ew_limit_ma": 1.286}, {"star": "4315804351350378496", "z": [null, 0.41, 2.72, 3.8, -1.39, -0.49, -4.08, 3.42, 2.34, -5.56, 3.02, 0.55, -6.67, 4.1, 2.3, 2.44, -8.24, 0.75, 8.64, -0.93, -4.27, 0.14, 5.33], "ew_ma": [null, 0.49, 3.93, 4.86, -2.18, -0.89, -7.41, 4.97, 1.67, -6.16, 2.95, 0.45, -6.33, 3.63, 1.63, 1.62, -6.13, 0.5, 6.2, -0.58, -2.61, 0.07, 3.31], "z_comb": 0.09, "p": 0.5745712714364282, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9924, "null_sd": 4.26, "v": -100.05, "rv_gaia": -100.33, "ew_limit_ma": 4.845}, {"star": "4038724053986441856", "z": [null, 1.32, 4.34, 0.39, -4.83, 3.15, 6.26, 0.17, -2.17, -5.83, -1.11, 0.35, 3.65, 1.71, -2.83, 3.46, -2.11, 1.1, 9.86, -2.13, -1.87, -5.88, 3.38], "ew_ma": [null, 0.28, 0.92, 0.07, -1.03, 0.8, 1.6, 0.04, -0.74, -1.61, -0.19, 0.08, 0.92, 0.34, -0.83, 1.03, -0.47, 0.22, 1.52, -0.3, -0.31, -0.77, 0.53], "z_comb": 0.44, "p": 0.5930203489825508, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9943, "null_sd": 3.97, "v": 15.6, "rv_gaia": 14.99, "ew_limit_ma": 0.83}, {"star": "5553647083168192512", "z": [null, 3.91, -4.38, -5.02, 1.34, -1.93, -2.19, 2.25, 0.43, 0.5, 5.14, -2.91, 1.63, 3.27, -3.83, -2.09, -1.0, 0.29, 2.08, -5.93, 0.91, -0.49, -0.21], "ew_ma": [null, 0.9, -1.6, -1.25, 0.48, -0.85, -0.99, 0.66, 0.29, 0.17, 1.21, -0.94, 0.88, 1.08, -1.51, -0.86, -0.26, 0.06, 0.39, -1.06, 0.17, -0.1, -0.03], "z_comb": -0.94, "p": 0.5933203339833009, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9796, "null_sd": 4.0, "v": 60.7, "rv_gaia": 59.67, "ew_limit_ma": 1.234}, {"star": "4934923028038871296", "z": [null, 1.45, 0.57, 5.17, -0.84, -2.91, -7.43, -0.73, 0.62, 3.55, -6.06, 6.15, 8.9, 6.85, -0.92, -7.38, 0.04, -1.18, 3.4, -5.24, -3.97, 2.95, -0.32], "ew_ma": [null, 0.35, 0.17, 1.06, -0.22, -1.0, -2.55, -0.24, 0.2, 1.14, -2.03, 1.7, 2.0, 1.0, -0.22, -1.86, 0.01, -0.2, 0.72, -1.03, -0.68, 0.41, -0.06], "z_comb": 0.98, "p": 0.5960201989900505, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.66, "v": 12.25, "rv_gaia": 11.9, "ew_limit_ma": 1.233}, {"star": "1237090738916392704", "z": [null, 1.35, 0.13, -0.87, -5.27, 1.89, 7.5, -1.38, -2.07, -5.68, 6.81, -3.98, -2.46, -0.76, -0.92, 14.07, -0.09, 0.98, 5.79, 12.41, -0.45, -0.45, -4.17], "ew_ma": [null, 0.58, 0.06, -0.4, -2.0, 0.74, 2.91, -0.51, -0.77, -2.78, 2.65, -1.16, -0.76, -0.2, -0.34, 4.74, -0.03, 0.26, 1.63, 2.78, -0.12, -0.08, -1.11], "z_comb": 0.92, "p": 0.6290185490725464, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.43, "v": 2.2, "rv_gaia": 1.59, "ew_limit_ma": 2.329}, {"star": "5760701787150565888", "z": [null, -0.58, 7.43, -1.05, 0.32, 3.22, -0.3, -2.09, -0.74, -0.92, -3.79, 1.43, 6.11, -1.28, -6.23, -7.81, 8.67, 1.61, -4.88, -5.95, -6.11, 4.33, 2.96], "ew_ma": [null, -0.15, 3.82, -0.29, 0.08, 0.88, -0.08, -0.51, -0.18, -0.19, -0.68, 0.25, 1.83, -0.27, -1.49, -1.94, 1.59, 0.24, -0.67, -0.79, -0.75, 0.53, 0.32], "z_comb": 1.11, "p": 0.6290685465726714, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.18, "v": 32.5, "rv_gaia": 31.99, "ew_limit_ma": 0.89}, {"star": "4763906879239461632", "z": [null, -0.58, -4.75, -2.58, 3.67, 3.7, 6.76, 4.21, 1.22, 3.82, 6.52, -2.63, -0.45, -3.79, 2.52, 8.2, -5.03, 1.54, -3.98, 8.85, 2.57, -2.97, -6.87], "ew_ma": [null, -0.13, -1.43, -0.46, 0.77, 0.67, 1.2, 0.78, 0.29, 0.79, 1.32, -0.54, -0.08, -0.63, 0.57, 1.57, -0.84, 0.32, -0.7, 1.46, 0.51, -0.43, -1.04], "z_comb": 3.09, "p": 0.6431178441077946, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9966, "null_sd": 4.45, "v": -1.05, "rv_gaia": -1.45, "ew_limit_ma": 0.891}, {"star": "3269362645115584640", "z": [null, -0.53, 4.88, 2.56, 0.16, 1.98, -1.85, -1.04, -0.03, -2.51, -2.96, 3.09, 5.66, -3.14, 3.0, -10.74, 2.7, 1.25, 0.55, -1.96, -1.27, 1.82, 5.57], "ew_ma": [null, -0.12, 1.4, 0.59, 0.04, 0.6, -0.55, -0.28, -0.01, -0.45, -0.57, 0.49, 0.83, -0.46, 0.53, -1.97, 0.44, 0.21, 0.08, -0.28, -0.17, 0.23, 0.88], "z_comb": 1.96, "p": 0.6497675116244188, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 3.58, "v": 19.45, "rv_gaia": 18.73, "ew_limit_ma": 0.79}, {"star": "6062166950467100032", "z": [null, 5.69, -2.32, -0.36, 3.8, -4.21, -3.68, -0.54, 3.66, -2.16, 1.07, -1.44, -0.86, -0.15, 2.9, 2.82, -3.14, 5.29, 3.25, 6.12, 3.35, -0.66, 1.7], "ew_ma": [null, 1.05, -0.5, -0.07, 1.19, -1.07, -0.92, -0.12, 1.41, -0.69, 0.3, -1.08, -0.48, -0.07, 1.07, 0.87, -0.87, 1.09, 0.5, 0.98, 0.57, -0.08, 0.28], "z_comb": 2.56, "p": 0.672766361681916, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 4.32, "v": -63.55, "rv_gaia": -63.57, "ew_limit_ma": 1.067}, {"star": "5452492082132835840", "z": [null, -2.21, 4.2, 0.51, 1.57, -2.98, -2.95, 2.87, -1.35, 0.35, -3.5, 7.87, 0.63, 2.49, -0.81, 3.79, 4.26, 0.75, 1.41, -9.52, -1.32, -2.44, -1.0], "ew_ma": [null, -0.78, 2.02, 0.2, 0.6, -1.03, -1.04, 0.97, -0.5, 0.13, -1.07, 2.75, 0.21, 0.81, -0.25, 1.3, 1.41, 0.25, 0.46, -3.02, -0.45, -0.82, -0.28], "z_comb": 2.37, "p": 0.6863656817159142, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9939, "null_sd": 3.02, "v": 13.4, "rv_gaia": 12.83, "ew_limit_ma": 1.253}, {"star": "3639760521643499776", "z": [null, -5.21, 0.31, -0.85, -0.12, -0.5, 0.94, 2.45, -1.84, 3.36, -1.55, -0.25, 1.85, 1.44, 2.76, 5.42, -0.57, -2.76, -0.51, 3.72, 7.04, -2.18, -2.49], "ew_ma": [null, -1.84, 0.1, -0.21, -0.03, -0.17, 0.33, 0.8, -0.52, 0.98, -0.43, -0.07, 0.43, 0.34, 0.73, 1.32, -0.12, -0.7, -0.1, 0.87, 1.39, -0.41, -0.48], "z_comb": 1.76, "p": 0.6968651567421629, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 4.03, "v": -11.95, "rv_gaia": -12.39, "ew_limit_ma": 1.322}, {"star": "5951165616611763456", "z": [null, 1.31, 3.74, 1.38, -1.59, 2.25, 7.2, 0.64, -2.06, -1.59, -0.99, 0.9, 5.85, 3.28, -6.61, 4.03, 0.17, -2.46, 2.48, 4.9, -3.5, -2.19, -2.86], "ew_ma": [null, 0.3, 1.08, 0.32, -0.38, 0.69, 2.21, 0.18, -0.57, -0.48, -0.28, 0.25, 1.88, 0.99, -2.04, 1.28, 0.05, -0.5, 0.42, 0.87, -0.61, -0.36, -0.5], "z_comb": 1.16, "p": 0.6975151242437878, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9894, "null_sd": 4.47, "v": 26.4, "rv_gaia": 25.96, "ew_limit_ma": 1.306}, {"star": "5586381090520538880", "z": [null, 3.33, 0.72, 0.2, 0.01, -2.36, 2.26, -2.28, 0.65, -2.93, -5.02, 3.11, 5.93, -5.53, -1.16, -4.95, 3.64, 5.98, 4.02, -0.35, 0.54, 1.72, 3.3], "ew_ma": [null, 0.68, 0.15, 0.04, 0.0, -0.47, 0.44, -0.47, 0.14, -0.64, -0.93, 0.6, 1.1, -0.89, -0.19, -0.85, 0.62, 1.04, 0.65, -0.05, 0.08, 0.28, 0.43], "z_comb": 1.76, "p": 0.7107144642767862, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.96, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 0.71}, {"star": "3113909602378333056", "z": [null, -1.39, -0.93, -0.54, 3.26, 0.24, -1.48, 5.33, -0.72, 3.92, -1.31, 1.29, 6.69, 3.64, -1.79, -3.4, -1.49, 1.91, -0.72, 1.93, 1.18, -2.94, 2.5], "ew_ma": [null, -0.33, -0.34, -0.15, 0.77, 0.08, -0.47, 1.58, -0.16, 1.0, -0.27, 0.33, 1.39, 0.72, -0.47, -0.76, -0.31, 0.34, -0.12, 0.34, 0.19, -0.49, 0.38], "z_comb": 3.1, "p": 0.7212639368031598, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9945, "null_sd": 4.68, "v": -7.65, "rv_gaia": -8.02, "ew_limit_ma": 0.986}, {"star": "4423865487962417024", "z": [null, -4.97, 3.41, 0.4, -0.38, -0.91, 0.47, 2.43, 0.59, -2.28, 4.87, -2.53, -6.4, 4.23, 3.52, 15.87, -7.52, -5.55, 5.19, 5.11, 3.22, 1.17, -2.38], "ew_ma": [null, -1.62, 1.11, 0.11, -0.11, -0.27, 0.14, 0.8, 0.18, -0.84, 1.61, -0.65, -1.5, 0.72, 0.95, 4.03, -1.47, -1.28, 0.95, 0.86, 0.54, 0.18, -0.46], "z_comb": 1.67, "p": 0.7226138693065347, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.25, "v": 19.55, "rv_gaia": 18.95, "ew_limit_ma": 1.306}, {"star": "3835867938104798848", "z": [null, 1.78, -0.95, -1.13, -2.08, 0.22, 1.29, 2.0, -2.22, 2.31, 4.24, -3.59, 6.54, 3.16, -3.55, 8.2, 5.2, -1.3, 6.39, 8.96, 0.45, -2.98, -2.96], "ew_ma": [null, 0.46, -0.23, -0.27, -0.58, 0.07, 0.4, 0.57, -0.72, 0.8, 1.22, -1.02, 1.57, 0.76, -1.67, 4.86, 1.74, -0.27, 1.01, 1.31, 0.07, -0.59, -0.43], "z_comb": 3.24, "p": 0.7287635618219089, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9926, "null_sd": 4.71, "v": -21.45, "rv_gaia": -21.84, "ew_limit_ma": 1.674}, {"star": "6489909443564308224", "z": [null, 4.78, -4.32, -3.57, 6.92, -4.67, -3.63, 1.54, 2.12, 1.6, -1.01, -0.12, 6.1, -5.04, -0.84, -3.33, 4.84, 7.89, -14.09, 0.64, -2.94, 0.32, 3.05], "ew_ma": [null, 0.74, -0.82, -0.49, 1.12, -0.86, -0.68, 0.26, 0.55, 0.29, -0.23, -0.02, 1.16, -0.77, -0.18, -0.61, 0.75, 1.05, -2.05, 0.1, -0.35, 0.04, 0.36], "z_comb": 2.31, "p": 0.751812409379531, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 3.64, "v": 0.75, "rv_gaia": 0.63, "ew_limit_ma": 0.674}, {"star": "5927236979422123264", "z": [null, 2.32, -4.7, -4.87, -0.39, -2.03, -0.69, -1.68, 3.28, 0.75, 6.3, 0.49, -7.23, -7.25, 0.4, 5.03, 6.49, 8.93, 8.49, -2.66, 4.89, -2.08, 4.57], "ew_ma": [null, 0.66, -1.49, -1.34, -0.13, -0.87, -0.29, -0.68, 1.55, 0.51, 3.48, 0.21, -2.08, -1.74, 0.2, 2.21, 1.93, 2.43, 2.13, -0.66, 1.1, -0.34, 0.85], "z_comb": 3.24, "p": 0.7573621318934053, "n_lines": 20, "n_spectra": 3, "twin_r": 0.991, "null_sd": 5.38, "v": -8.4, "rv_gaia": -9.12, "ew_limit_ma": 2.131}, {"star": "6484716209628726912", "z": [null, 3.35, -1.25, -2.01, 1.8, -2.4, 0.88, -1.59, 1.43, -2.3, 1.81, 1.53, 10.46, -8.59, 0.63, -4.41, 3.39, 6.92, -16.93, 12.62, -1.69, 4.27, -3.25], "ew_ma": [null, 1.13, -0.37, -0.56, 0.49, -0.65, 0.24, -0.54, 0.5, -0.82, 0.53, 0.5, 3.19, -2.12, 0.25, -1.8, 0.97, 1.82, -3.15, 2.12, -0.33, 0.95, -0.6], "z_comb": 2.07, "p": 0.7629618519074046, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9926, "null_sd": 3.82, "v": -7.55, "rv_gaia": -7.8, "ew_limit_ma": 1.165}, {"star": "5765846127180770432", "z": [null, -0.69, -1.42, -0.2, -1.68, -2.43, 0.81, 1.4, 1.58, -1.79, 4.55, -1.5, -4.83, -2.0, 1.05, 11.03, 0.71, -2.72, 4.86, 3.23, 1.55, 6.5, 0.38], "ew_ma": [null, -0.15, -0.36, -0.03, -0.32, -0.7, 0.23, 0.4, 0.51, -0.47, 1.15, -0.33, -0.93, -0.36, 0.22, 2.3, 0.13, -0.49, 0.77, 0.44, 0.25, 1.55, 0.06], "z_comb": 2.57, "p": 0.7778611069446527, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 3.75, "v": -4.15, "rv_gaia": -4.87, "ew_limit_ma": 1.036}, {"star": "4745373133284418816", "z": [null, 2.31, 0.91, 0.93, 3.73, -2.45, -3.41, -2.15, 7.09, -3.49, 0.65, 2.04, 6.05, -6.38, 2.84, -6.94, -1.85, 3.98, -15.57, -5.55, -3.47, 4.0, 7.3], "ew_ma": [null, 0.39, 0.16, 0.14, 0.8, -0.57, -0.81, -0.56, 2.15, -0.92, 0.17, 0.5, 1.52, -1.05, 0.73, -1.72, -0.44, 0.56, -2.08, -0.69, -0.44, 0.47, 0.88], "z_comb": 2.73, "p": 0.7913604319784011, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9923, "null_sd": 4.56, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 1.028}, {"star": "3480332916165099904", "z": [null, -4.04, 3.66, -2.49, 2.74, -0.46, -0.8, 1.16, 1.31, 5.58, 5.09, 3.39, -4.09, 1.62, 2.88, 3.85, 4.11, 0.36, 13.5, -12.31, -3.97, -5.57, 1.77], "ew_ma": [null, -1.02, 1.1, -0.65, 0.71, -0.14, -0.24, 0.33, 0.46, 1.84, 1.63, 1.0, -1.5, 0.37, 1.07, 1.29, 1.19, 0.08, 2.53, -2.42, -0.61, -0.78, 0.32], "z_comb": 3.49, "p": 0.7945602719864007, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9973, "null_sd": 4.36, "v": 14.45, "rv_gaia": 14.0, "ew_limit_ma": 1.423}, {"star": "6718894388002453120", "z": [null, 0.69, -3.75, 3.83, 0.56, -0.79, -3.79, 1.38, -1.76, 2.88, 3.8, 1.57, -5.75, 1.91, 4.11, -6.27, 2.35, 1.64, 10.48, -11.46, 1.35, -2.85, 5.38], "ew_ma": [null, 0.18, -2.7, 1.22, 0.18, -0.45, -2.12, 0.46, -1.86, 0.99, 1.13, 0.41, -3.62, 0.65, 1.46, -2.02, 0.42, 0.31, 2.09, -2.23, 0.28, -0.55, 1.0], "z_comb": 1.57, "p": 0.7981600919954003, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.76, "v": 60.5, "rv_gaia": 60.01, "ew_limit_ma": 2.02}, {"star": "2980492387558410112", "z": [null, 1.02, -4.8, 0.89, -0.33, 3.27, 0.86, -1.48, -0.05, -3.63, 3.06, 2.39, 2.04, 0.14, -3.18, 1.07, 7.83, 5.89, 2.87, -4.94, -0.69, 2.17, 0.11], "ew_ma": [null, 0.18, -0.97, 0.14, -0.05, 0.74, 0.2, -0.3, -0.01, -0.6, 0.47, 0.44, 0.39, 0.03, -0.75, 0.23, 1.31, 0.89, 0.42, -0.66, -0.09, 0.27, 0.01], "z_comb": 3.91, "p": 0.8117594120293985, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.51, "v": 22.35, "rv_gaia": 21.6, "ew_limit_ma": 0.784}, {"star": "5317114850417299584", "z": [null, -0.76, -4.91, -3.78, -0.11, -1.21, -1.28, 3.81, 9.41, 0.95, 5.51, 2.49, 1.36, -0.3, -1.57, -2.35, -0.92, -0.75, -9.75, -0.22, 4.74, -0.33, 3.69], "ew_ma": [null, -0.16, -1.06, -0.76, -0.03, -0.28, -0.3, 0.74, 2.05, 0.23, 1.49, 0.65, 0.32, -0.07, -0.4, -0.56, -0.2, -0.12, -1.58, -0.03, 0.71, -0.05, 0.57], "z_comb": 3.23, "p": 0.8191090445477726, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 3.63, "v": -5.9, "rv_gaia": -6.29, "ew_limit_ma": 0.881}, {"star": "6796392812250051712", "z": [null, 4.24, -0.59, -0.85, 1.49, -0.01, -5.14, 0.56, 1.31, 4.35, -0.48, 3.14, -0.14, -1.56, 3.2, -2.42, 11.87, -0.35, 7.65, -7.57, -0.39, -0.61, -0.83], "ew_ma": [null, 1.82, -0.28, -0.34, 0.8, -0.01, -2.77, 0.27, 0.38, 1.56, -0.16, 0.96, -0.06, -0.5, 1.23, -0.91, 3.4, -0.1, 1.75, -1.8, -0.07, -0.12, -0.16], "z_comb": 3.76, "p": 0.8351582420878956, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9934, "null_sd": 33.83, "v": 0.15, "rv_gaia": -0.34, "ew_limit_ma": 2.076}, {"star": "2473608009504466688", "z": [null, 4.18, 0.38, -3.16, 2.02, -2.06, 0.01, -4.41, 9.27, 0.68, -0.47, 1.84, 0.96, -5.27, 3.08, -3.78, 1.19, 11.05, -3.88, 1.2, -1.53, -0.27, 3.6], "ew_ma": [null, 1.23, 0.1, -0.76, 0.72, -0.71, 0.0, -1.55, 3.37, 0.31, -0.19, 0.79, 0.32, -1.75, 1.25, -1.61, 0.43, 1.94, -0.8, 0.22, -0.24, -0.05, 0.73], "z_comb": 3.99, "p": 0.8542072896355182, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9839, "null_sd": 5.51, "v": 8.7, "rv_gaia": 8.21, "ew_limit_ma": 2.856}, {"star": "3009908378049913216", "z": [null, -0.13, 2.84, 5.57, 3.8, 1.3, 1.66, 2.86, -1.59, -6.4, -3.94, 0.56, -5.36, 0.85, 8.91, -1.46, 6.44, 4.43, 5.73, 1.65, 1.88, 1.14, -2.97], "ew_ma": [null, -0.11, 2.19, 5.13, 5.3, 1.45, 1.87, 2.35, -1.28, -4.92, -3.6, 0.62, -3.84, 0.66, 6.14, -1.18, 5.62, 2.79, 4.57, 1.25, 1.33, 0.56, -2.79], "z_comb": 4.52, "p": 0.8690565471726414, "n_lines": 20, "n_spectra": 3, "twin_r": 0.9144, "null_sd": 4.44, "v": 27.0, "rv_gaia": 21.1, "ew_limit_ma": 4.059}, {"star": "6153706477443518976", "z": [null, 2.38, -0.78, -1.55, 1.13, -1.33, -2.01, 1.51, 0.54, 4.18, 2.7, 1.88, -0.36, -2.3, -3.16, 8.23, 9.55, 2.15, 4.76, 1.07, 2.24, 1.28, 0.55], "ew_ma": [null, 0.72, -0.27, -0.49, 0.37, -0.57, -0.87, 0.51, 0.19, 1.97, 0.82, 0.6, -0.12, -0.7, -2.55, 6.22, 4.46, 0.48, 0.79, 0.18, 0.52, 0.24, 0.1], "z_comb": 6.19, "p": 0.8758062096895155, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9911, "null_sd": 4.74, "v": -25.8, "rv_gaia": -26.31, "ew_limit_ma": 1.688}, {"star": "6427244702486210816", "z": [null, 3.69, -4.21, -1.89, 0.42, -4.51, -4.85, 0.46, -0.81, 9.75, 2.04, 1.07, 0.39, -3.97, -0.93, -2.5, 3.95, 6.55, -2.25, -0.45, 9.45, 1.59, 0.98], "ew_ma": [null, 1.01, -1.64, -0.47, 0.1, -1.49, -1.65, 0.16, -0.27, 2.7, 0.4, 0.2, 0.1, -0.8, -0.24, -0.62, 0.89, 1.48, -0.42, -0.07, 1.82, 0.28, 0.15], "z_comb": 4.13, "p": 0.8843557822108895, "n_lines": 20, "n_spectra": 2, "twin_r": 0.994, "null_sd": 3.69, "v": -10.1, "rv_gaia": -10.76, "ew_limit_ma": 1.251}, {"star": "6096524382383054720", "z": [null, 4.85, -5.02, -2.66, -0.57, 4.94, 6.41, -2.69, 2.64, -1.19, -2.08, 4.17, 9.93, -0.27, -3.94, -2.01, 4.71, 5.87, -0.45, 10.76, 0.98, 4.17, -0.76], "ew_ma": [null, 1.18, -1.26, -0.67, -0.14, 1.36, 1.77, -0.82, 0.67, -0.32, -0.45, 0.98, 2.8, -0.05, -0.9, -0.48, 0.85, 1.2, -0.09, 2.04, 0.2, 0.75, -0.13], "z_comb": 6.26, "p": 0.904254787260637, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9956, "null_sd": 4.52, "v": 5.1, "rv_gaia": 4.39, "ew_limit_ma": 1.446}, {"star": "3650718804281798912", "z": [null, 0.74, -1.12, -0.0, -0.55, 0.62, 1.42, -0.19, -0.76, -2.67, 0.96, -3.62, -1.92, 2.56, -2.44, 17.73, -0.96, -3.51, 7.8, -6.53, 32.14, -2.06, 1.36], "ew_ma": [null, 0.91, -0.99, -0.0, -0.4, 0.71, 1.67, -0.2, -0.55, -1.4, 0.76, -2.34, -1.09, 1.36, -2.09, 10.97, -0.54, -1.66, 3.42, -2.79, 12.87, -1.11, 0.5], "z_comb": 9.15, "p": 0.92020398980051, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9864, "null_sd": 5.31, "v": -12.2, "rv_gaia": -12.52, "ew_limit_ma": 5.103}, {"star": "1772187382746856320", "z": [null, 0.46, -3.21, 2.69, 2.95, -2.81, -0.98, 2.78, 0.38, 7.46, -0.43, 1.92, 1.02, 0.77, -5.27, 3.58, 6.73, 4.38, 1.93, 2.46, 5.92, 0.12, -1.96], "ew_ma": [null, 0.16, -1.59, 0.82, 0.94, -1.1, -0.39, 0.98, 0.19, 2.77, -0.13, 0.7, 0.42, 0.21, -2.41, 1.66, 2.2, 1.17, 0.63, 0.64, 2.06, 0.03, -0.4], "z_comb": 6.05, "p": 0.9212539373031349, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9903, "null_sd": 5.72, "v": -16.75, "rv_gaia": -16.94, "ew_limit_ma": 1.775}, {"star": "3330062833797919744", "z": [null, 0.87, -2.41, 0.39, 2.11, 1.01, -3.64, 2.24, -1.56, 8.02, -1.68, 1.45, 3.03, 4.64, 0.6, -5.98, 6.88, 1.56, -0.61, -13.32, 0.36, -1.33, 0.81], "ew_ma": [null, 0.15, -0.47, 0.07, 0.45, 0.26, -0.94, 0.57, -0.28, 1.78, -0.38, 0.35, 0.58, 0.67, 0.13, -1.2, 1.15, 0.24, -0.08, -1.71, 0.04, -0.17, 0.09], "z_comb": 3.92, "p": 0.9304034798260087, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 6.7, "v": 6.35, "rv_gaia": 5.83, "ew_limit_ma": 2.587}, {"star": "6141742283401003264", "z": [null, 4.73, -1.46, 1.54, -2.17, 1.33, 0.05, -0.16, -1.65, 5.31, -3.16, 1.19, 6.98, 3.79, -2.28, -6.39, 4.91, -1.94, -4.2, -12.28, 7.69, 0.06, 6.7], "ew_ma": [null, 1.45, -0.48, 0.47, -0.84, 0.62, 0.02, -0.06, -0.66, 2.57, -1.38, 0.4, 1.45, 0.88, -0.87, -2.32, 1.19, -0.43, -0.79, -2.23, 1.69, 0.01, 1.1], "z_comb": 5.83, "p": 0.9381530923453827, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 4.63, "v": -12.35, "rv_gaia": -13.03, "ew_limit_ma": 2.095}, {"star": "6802426038708609536", "z": [null, 5.56, 3.27, 1.27, -0.08, -4.64, -2.66, 0.44, 2.83, 3.98, 0.84, 4.29, -0.59, 2.78, -4.39, 0.05, 4.67, 4.23, -8.28, 2.56, 4.6, 3.4, 2.11], "ew_ma": [null, 1.04, 0.63, 0.17, -0.02, -0.89, -0.51, 0.06, 0.44, 0.56, 0.12, 0.76, -0.1, 0.37, -1.01, 0.01, 0.7, 0.7, -0.98, 0.33, 0.6, 0.33, 0.23], "z_comb": 7.29, "p": 0.9388030598470076, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.62, "v": -15.95, "rv_gaia": -16.09, "ew_limit_ma": 0.943}, {"star": "5381537023379295232", "z": [null, 2.88, 0.8, -2.09, -1.14, 3.65, 5.39, -0.93, -0.3, 3.58, -1.18, -1.58, 10.39, -1.06, -2.91, -3.67, 5.65, 4.03, 0.82, 6.08, -0.7, 1.7, -0.47], "ew_ma": [null, 0.58, 0.22, -0.4, -0.22, 0.73, 1.07, -0.2, -0.06, 0.9, -0.24, -0.31, 2.5, -0.21, -0.56, -0.65, 1.2, 0.7, 0.12, 0.92, -0.12, 0.23, -0.07], "z_comb": 4.89, "p": 0.9415029248537573, "n_lines": 20, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 3.5, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 0.988}, {"star": "5793182631952977920", "z": [null, -1.7, -0.75, 1.73, 25.14, -4.36, -9.38, 3.36, 0.98, 3.97, -1.86, 3.04, -0.82, 4.64, 1.01, -0.29, -1.31, -1.65, 5.06, -8.31, 6.23, -7.6, 8.82], "ew_ma": [null, -0.4, -0.2, 0.4, 6.26, -1.3, -2.75, 1.1, 0.33, 0.99, -0.44, 0.57, -0.18, 0.77, 0.25, -0.07, -0.24, -0.43, 0.97, -1.67, 1.11, -1.24, 1.25], "z_comb": 6.47, "p": 0.9583020848957552, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9938, "null_sd": 4.2, "v": -2.65, "rv_gaia": -3.17, "ew_limit_ma": 1.499}, {"star": "5129338021224785408", "z": [null, 3.35, 4.52, -2.2, 0.49, 0.18, 0.37, 3.3, 1.8, -3.39, 0.29, 2.32, 4.11, 7.69, -0.45, 1.28, 1.96, 6.65, 9.52, 0.24, 0.59, 3.37, -1.19], "ew_ma": [null, 2.34, 2.82, -1.39, 0.35, 0.14, 0.3, 2.32, 1.26, -2.19, 0.18, 1.78, 2.77, 4.13, -0.25, 0.78, 1.31, 4.32, 5.41, 0.13, 0.34, 1.24, -0.63], "z_comb": 7.9, "p": 0.9896005199740013, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9568, "null_sd": 3.86, "v": 29.85, "rv_gaia": 29.09, "ew_limit_ma": 3.702}, {"star": "5056511692465250304", "z": [null, 2.68, 2.58, 4.0, 0.58, 4.17, 4.65, -2.5, 2.96, 4.29, 0.2, 3.1, -2.53, 1.09, 2.17, 0.66, 4.81, 6.66, 3.53, -2.48, -0.51, -5.13, 3.88], "ew_ma": [null, 0.7, 0.79, 0.97, 0.15, 1.1, 1.2, -0.76, 0.92, 1.21, 0.05, 0.86, -0.6, 0.23, 0.47, 0.18, 1.25, 1.49, 0.75, -0.54, -0.08, -0.9, 0.68], "z_comb": 8.29, "p": 0.9912504374781261, "n_lines": 20, "n_spectra": 2, "twin_r": 0.9771, "null_sd": 4.05, "v": 18.3, "rv_gaia": 17.69, "ew_limit_ma": 1.88}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pu_HARPS.json b/papers/short_lived_elements/data/element_Pu_HARPS.json new file mode 100644 index 0000000000000000000000000000000000000000..a1034762c4f553df0247bea6d989b9da8e1b9577 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pu_HARPS.json @@ -0,0 +1 @@ +{"lines": [[4105.95, 0.8193180042768339], [4129.93, 0.8289160844753647], [4141.2, 0.8334462487243048], [4159.39, 0.8407840652317417], [4178.28, 0.8484383011777761], [4189.9, 0.8531639595992974], [4190.06, 0.8532291205052488], [4196.2, 0.8557315501683459], [4229.77, 0.8694781862395033], [4254.76, 0.8797825037255271], [4273.34, 0.8874830791575251], [4289.08, 0.8940328550498184], [4337.18, 0.9141976033653123], [4352.71, 0.9207561999762266], [4379.91, 0.9322997303975664], [4385.35, 0.9346170657553621], [4393.93, 0.9382778267356214], [4441.65, 0.9587687102273921], [4468.54, 0.9704127304959331], [4472.79, 0.972259515074585], [4493.78, 0.9814062052256397], [4504.91, 0.9862736343986085], [4536.15, 1.0]], "stable": [true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, false, false, true, false, false, true, true, true], "results": [{"star": "2533723670313663872", "z": [null, -1.17, 2.76, -2.5, -7.17, -5.14, 0.58, 0.27, -0.71, -1.33, 3.35, -2.47, 0.09, -0.29, -4.46, 3.56, -9.77, -5.88, 3.13, 0.63, 0.32, 1.63, -15.18], "ew_ma": [null, -1.05, 3.03, -2.42, -6.03, -4.33, 0.47, 0.21, -0.62, -1.27, 3.31, -2.79, 0.07, -0.22, -3.88, 2.95, -6.36, -4.93, 2.13, 0.43, 0.21, 1.03, -11.97], "z_comb": -9.38, "p": 0.0020998950052497373, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9571, "null_sd": 3.04, "v": 18.1, "rv_gaia": 16.81, "ew_limit_ma": 0.324, "dominant": 4536.15, "shared": 0, "width": 3.4, "vet": "absorption at 4536.15 A 3.4 times as wide as an unresolved line"}, {"star": "4176501313320676992", "z": [null, -1.31, -3.12, -4.56, -0.56, -0.86, -3.14, -0.73, -0.81, 2.48, -0.84, 1.34, -6.32, -0.37, -2.77, 3.24, 3.91, 0.85, 4.74, -7.59, 3.67, -3.26, -0.45], "ew_ma": [null, -0.15, -0.53, -0.57, -0.06, -0.1, -0.36, -0.08, -0.09, 0.31, -0.07, 0.1, -0.73, -0.04, -0.87, 0.87, 0.42, 0.08, 0.38, -0.59, 0.42, -0.24, -0.04], "z_comb": -4.02, "p": 0.015249237538123094, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 1.95, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.07}, {"star": "2918894859953947392", "z": [null, 1.52, -0.74, -2.03, -1.43, -1.76, 1.47, 0.03, -3.71, -3.16, -1.42, -4.67, 0.37, 4.07, -2.59, 1.25, -1.39, -2.44, 1.73, 8.1, -0.56, -1.04, -2.31], "ew_ma": [null, 0.16, -0.07, -0.19, -0.13, -0.17, 0.14, 0.0, -0.37, -0.28, -0.12, -0.39, 0.03, 0.31, -0.23, 0.13, -0.12, -0.17, 0.13, 0.54, -0.04, -0.07, -0.16], "z_comb": -4.46, "p": 0.033798310084495777, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.67, "v": -9.9, "rv_gaia": -10.34, "ew_limit_ma": 0.159}, {"star": "4356054757585316992", "z": [null, 1.1, -0.77, -1.38, -1.51, -2.05, -1.65, -0.63, 0.2, 8.84, -1.42, -2.36, -0.56, -0.29, -2.15, 1.58, 7.25, -2.88, 3.93, -4.72, 3.75, -2.67, 0.12], "ew_ma": [null, 0.16, -0.13, -0.21, -0.22, -0.4, -0.33, -0.1, 0.02, 1.41, -0.11, -0.17, -0.06, -0.03, -0.8, 0.69, 1.07, -0.33, 0.37, -0.36, 0.45, -0.18, 0.01], "z_comb": -3.6, "p": 0.03404829758512074, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.33, "v": -19.7, "rv_gaia": -20.28, "ew_limit_ma": 0.138}, {"star": "4657193606465368704", "z": [null, 2.01, -0.83, -3.8, -5.0, -1.52, 2.14, -0.19, 0.09, -1.79, 5.72, -4.02, 5.49, -0.33, -0.86, 12.37, -10.41, -8.64, 0.84, 10.16, -1.55, 1.66, -5.41], "ew_ma": [null, 1.14, -0.55, -2.2, -2.56, -0.78, 1.06, -0.09, 0.04, -0.71, 1.93, -1.35, 1.42, -0.08, -0.33, 4.18, -2.46, -2.45, 0.22, 2.25, -0.4, 0.28, -1.57], "z_comb": -5.35, "p": 0.05229738513074346, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9911, "null_sd": 3.29, "v": 14.5, "rv_gaia": 13.99, "ew_limit_ma": 0.608}, {"star": "2585856120791459584", "z": [null, -2.62, -2.32, -3.0, 1.68, -2.89, -3.11, 0.64, 1.5, 2.99, -3.01, 1.1, -2.45, -0.69, 0.25, 2.24, 1.85, 0.17, 4.34, -2.66, 3.79, -3.52, -0.46], "ew_ma": [null, -0.5, -0.54, -0.41, 0.31, -0.75, -0.81, 0.17, 0.39, 0.92, -0.44, 0.14, -0.52, -0.08, 0.08, 0.75, 0.23, 0.03, 0.51, -0.28, 0.49, -0.31, -0.05], "z_comb": -2.96, "p": 0.05579721013949303, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.89, "v": -20.35, "rv_gaia": -20.97, "ew_limit_ma": 0.206}, {"star": "2423292879948720000", "z": [null, 0.36, -1.48, -0.89, -3.56, 1.64, 3.71, 0.21, -1.35, 0.64, 1.76, -1.23, 1.9, 0.87, -6.03, 4.09, -0.96, -1.89, 4.29, 2.42, 0.99, -1.98, -2.25], "ew_ma": [null, 0.03, -0.13, -0.06, -0.28, 0.16, 0.36, 0.02, -0.11, 0.05, 0.13, -0.06, 0.27, 0.05, -0.39, 0.28, -0.05, -0.11, 0.22, 0.12, 0.05, -0.09, -0.12], "z_comb": -2.93, "p": 0.06224688765561722, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.17, "v": 29.65, "rv_gaia": 28.92, "ew_limit_ma": 0.076}, {"star": "5357075947709011456", "z": [null, 0.28, 0.49, 3.61, -0.88, -0.5, 0.29, 2.13, -3.97, 1.27, -2.85, -0.19, 6.41, -1.1, -1.96, -1.5, -0.73, -4.93, -5.19, -2.26, -2.23, 1.1, -3.39], "ew_ma": [null, 0.02, 0.04, 0.35, -0.13, -0.07, 0.04, 0.24, -0.6, 0.25, -0.51, -0.03, 1.23, -0.12, -0.31, -0.24, -0.1, -0.35, -0.37, -0.16, -0.17, 0.06, -0.22], "z_comb": -3.8, "p": 0.0655967201639918, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.54, "v": 21.5, "rv_gaia": 21.19, "ew_limit_ma": 0.134}, {"star": "6544549880063909248", "z": [null, -4.87, 1.37, -0.58, -2.2, 2.32, 4.03, -1.12, -2.26, -3.13, 1.84, -1.45, -2.26, -0.92, -4.82, 2.55, 1.85, -1.49, 2.04, 1.63, 2.04, -0.9, -3.01], "ew_ma": [null, -0.65, 0.25, -0.09, -0.35, 0.46, 0.81, -0.21, -0.28, -0.38, 0.22, -0.16, -0.35, -0.11, -0.71, 0.35, 0.23, -0.15, 0.19, 0.15, 0.19, -0.07, -0.24], "z_comb": -3.08, "p": 0.07379631018449077, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.29, "v": 21.4, "rv_gaia": 20.78, "ew_limit_ma": 0.181}, {"star": "5790389872417570816", "z": [null, -1.41, -0.88, 0.87, -0.3, -2.37, -3.76, 2.28, -0.67, 4.44, -2.6, 1.29, 0.79, 0.36, -0.24, 0.49, 3.45, -3.86, -2.37, -2.74, 3.34, -1.94, 1.1], "ew_ma": [null, -0.26, -0.21, 0.11, -0.06, -0.49, -0.78, 0.55, -0.17, 1.21, -0.53, 0.18, 0.11, 0.06, -0.11, 0.25, 0.46, -0.49, -0.25, -0.27, 0.35, -0.14, 0.1], "z_comb": -2.1, "p": 0.07569621518924054, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.5, "v": -20.35, "rv_gaia": -21.17, "ew_limit_ma": 0.207}, {"star": "6519024545827374336", "z": [null, 0.35, -1.73, -1.61, -1.08, -1.9, 0.29, -1.81, 2.68, 2.09, -1.74, 0.21, 4.47, -5.48, 0.07, -5.74, -1.16, 0.12, 0.67, 0.64, 1.86, 0.01, -1.02], "ew_ma": [null, 0.04, -0.2, -0.19, -0.17, -0.3, 0.05, -0.26, 0.47, 0.44, -0.34, 0.04, 1.36, -0.77, 0.02, -1.16, -0.21, 0.01, 0.05, 0.05, 0.16, 0.0, -0.1], "z_comb": -2.62, "p": 0.07964601769911504, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.32, "v": 19.15, "rv_gaia": 18.68, "ew_limit_ma": 0.186}, {"star": "4041857799496807936", "z": [null, -4.22, -1.07, 1.15, 1.0, -1.15, -1.49, 0.39, 0.42, 2.18, -3.33, -1.4, -4.91, -3.64, -0.58, 0.9, -4.24, 0.54, 2.15, 1.58, 0.64, -2.01, 0.48], "ew_ma": [null, -1.07, -0.3, 0.37, 0.3, -0.33, -0.44, 0.1, 0.05, 0.44, -0.7, -0.21, -0.74, -0.67, -0.13, 0.19, -0.85, 0.05, 0.2, 0.14, 0.06, -0.18, 0.04], "z_comb": -3.5, "p": 0.10199490025498725, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.3, "v": 3.05, "rv_gaia": 2.44, "ew_limit_ma": 0.233}, {"star": "3345968334645285376", "z": [null, 2.51, -1.66, 0.41, -2.59, -3.81, -2.27, -1.28, 0.01, 2.65, 3.28, -2.14, -1.93, -0.86, -1.9, 5.04, -0.37, -0.67, 0.65, 5.99, 5.45, -1.58, -2.3], "ew_ma": [null, 0.75, -0.51, 0.07, -0.52, -1.04, -0.62, -0.28, 0.0, 0.54, 0.47, -0.28, -0.37, -0.12, -0.55, 1.04, -0.06, -0.12, 0.11, 0.83, 1.03, -0.2, -0.31], "z_comb": -2.26, "p": 0.1144442777861107, "n_lines": 16, "n_spectra": 6, "twin_r": 0.997, "null_sd": 2.21, "v": -9.4, "rv_gaia": -10.01, "ew_limit_ma": 0.305}, {"star": "6612242034982766848", "z": [null, -0.95, 0.39, -0.04, -4.9, -1.92, -5.75, 1.93, -1.59, 1.44, 0.51, 0.43, -2.63, 8.97, -1.74, 1.8, -2.34, -7.81, 9.26, -12.55, -0.79, 1.01, 0.25], "ew_ma": [null, -0.17, 0.09, -0.01, -0.87, -0.32, -0.95, 0.37, -0.32, 0.34, 0.12, 0.09, -0.37, 1.2, -0.43, 0.4, -0.47, -1.1, 1.17, -1.66, -0.1, 0.07, 0.03], "z_comb": -2.91, "p": 0.14519274036298185, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.72, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 0.407}, {"star": "6454967273273436416", "z": [null, 1.09, -1.55, 1.79, -0.83, -1.18, -0.24, 2.19, -1.35, 0.62, -2.86, 1.56, 3.28, -2.54, -1.31, 1.24, 1.12, -4.8, -5.39, 7.13, 0.19, -0.83, -1.33], "ew_ma": [null, 0.15, -0.26, 0.3, -0.19, -0.27, -0.06, 0.45, -0.32, 0.17, -0.77, 0.33, 0.51, -0.46, -0.39, 0.37, 0.25, -0.59, -0.72, 0.92, 0.02, -0.08, -0.18], "z_comb": -3.16, "p": 0.16349182540872956, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9969, "null_sd": 3.54, "v": -31.55, "rv_gaia": -31.9, "ew_limit_ma": 0.652}, {"star": "3750995604764854400", "z": [null, -2.8, -0.79, -1.54, 0.55, -3.22, -1.76, 1.91, -2.54, 0.17, 0.93, -0.5, -4.79, 2.22, -1.38, 6.9, 0.97, 0.87, 2.16, 0.87, 2.06, -2.67, 0.39], "ew_ma": [null, -0.27, -0.09, -0.13, 0.04, -0.28, -0.15, 0.17, -0.19, 0.02, 0.07, -0.03, -0.49, 0.19, -0.21, 1.3, 0.1, 0.07, 0.14, 0.05, 0.16, -0.14, 0.02], "z_comb": -1.92, "p": 0.16519174041297935, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.97, "v": -17.45, "rv_gaia": -17.93, "ew_limit_ma": 0.116}, {"star": "2981583790287411200", "z": [null, 1.94, -0.35, 0.49, -0.72, -0.73, 2.98, -2.32, -2.49, -2.91, -1.12, -1.89, 3.2, -3.54, -1.17, -6.71, -0.61, 1.15, -1.07, -0.18, -2.05, 1.68, -0.02], "ew_ma": [null, 0.19, -0.04, 0.04, -0.07, -0.07, 0.29, -0.23, -0.35, -0.33, -0.1, -0.18, 0.34, -0.3, -0.14, -0.76, -0.05, 0.09, -0.07, -0.01, -0.12, 0.1, -0.0], "z_comb": -2.07, "p": 0.17129143542822858, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.32, "v": 41.15, "rv_gaia": 40.43, "ew_limit_ma": 0.159}, {"star": "5596797039059063680", "z": [null, 0.68, -3.68, -1.09, 1.68, -1.14, 0.41, -1.63, 2.17, 2.5, 1.46, -3.13, -1.67, -1.59, -2.29, 0.13, -1.13, 0.5, 3.28, 13.66, 3.1, -2.9, -0.3], "ew_ma": [null, 0.07, -0.47, -0.12, 0.2, -0.19, 0.07, -0.24, 0.33, 0.47, 0.27, -0.42, -0.24, -0.2, -0.48, 0.03, -0.16, 0.05, 0.22, 0.89, 0.23, -0.17, -0.02], "z_comb": -1.91, "p": 0.21618919054047298, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.5, "v": -15.0, "rv_gaia": -15.71, "ew_limit_ma": 0.229}, {"star": "5848156426657892480", "z": [null, -0.39, -0.69, -0.08, -0.82, -3.32, -2.65, 0.58, -0.29, 3.06, -1.22, -0.68, 0.78, 0.59, 0.06, 2.77, 1.88, 2.02, 6.15, -4.24, 0.96, -3.91, 2.51], "ew_ma": [null, -0.04, -0.07, -0.01, -0.08, -0.34, -0.26, 0.05, -0.02, 0.29, -0.13, -0.05, 0.09, 0.06, 0.01, 0.46, 0.21, 0.16, 0.48, -0.29, 0.08, -0.25, 0.15], "z_comb": -1.69, "p": 0.2207889605519724, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.37, "v": -30.0, "rv_gaia": -30.56, "ew_limit_ma": 0.168}, {"star": "6153706477443518976", "z": [null, 2.26, -2.73, -0.42, -0.98, -1.88, -1.4, 1.6, 0.84, 4.28, 3.1, 0.16, 4.01, -0.12, -1.37, 1.63, 3.18, -2.04, 4.43, 3.3, 1.21, -1.86, -0.64], "ew_ma": [null, 0.36, -0.58, -0.06, -0.18, -0.52, -0.39, 0.36, 0.19, 0.96, 0.51, 0.03, 1.21, -0.02, -0.61, 0.74, 0.66, -0.29, 0.4, 0.32, 0.13, -0.15, -0.07], "z_comb": -1.12, "p": 0.2335883205839708, "n_lines": 16, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.3, "v": -25.7, "rv_gaia": -26.31, "ew_limit_ma": 0.318}, {"star": "5452492082132835840", "z": [null, -0.58, 0.54, -0.63, -0.16, -1.38, -1.01, 0.28, -2.48, 3.92, -1.96, 1.12, 7.71, 1.86, 1.84, -1.84, 2.89, -2.96, 3.56, -1.3, 0.48, -0.44, -0.6], "ew_ma": [null, -0.05, 0.05, -0.05, -0.02, -0.13, -0.1, 0.03, -0.36, 0.36, -0.2, 0.08, 0.9, 0.22, 0.19, -0.15, 0.27, -0.23, 0.21, -0.08, 0.03, -0.02, -0.03], "z_comb": -1.5, "p": 0.23788810559472026, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.49, "v": 13.45, "rv_gaia": 12.83, "ew_limit_ma": 0.158}, {"star": "6764687466752221824", "z": [null, 3.35, -2.71, 0.93, -0.54, -1.86, 0.02, -0.19, 0.17, 3.85, 0.56, -3.6, 5.45, -0.07, -1.29, 1.45, 1.78, -0.87, -0.99, 6.28, 1.1, 0.17, 0.35], "ew_ma": [null, 0.58, -0.58, 0.16, -0.1, -0.34, 0.0, -0.03, 0.03, 0.95, 0.13, -0.45, 0.83, -0.01, -0.56, 0.59, 0.37, -0.13, -0.14, 0.73, 0.14, 0.02, 0.04], "z_comb": -1.11, "p": 0.2584370781460927, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.4, "v": -41.95, "rv_gaia": -42.55, "ew_limit_ma": 0.406}, {"star": "6489771832811810432", "z": [null, -2.43, 0.25, -0.86, -1.67, -2.58, 0.74, 2.3, -0.36, 4.34, -1.98, -1.25, 2.89, 3.81, -0.49, 0.98, -4.27, -10.74, 5.2, -0.33, 5.43, -1.23, -0.53], "ew_ma": [null, -1.01, 0.12, -0.3, -0.63, -0.97, 0.28, 0.91, -0.14, 1.47, -0.46, -0.37, 0.93, 1.05, -0.22, 0.4, -1.25, -3.03, 1.25, -0.07, 1.0, -0.19, -0.11], "z_comb": -2.89, "p": 0.26843657817109146, "n_lines": 16, "n_spectra": 6, "twin_r": 0.996, "null_sd": 4.57, "v": -30.05, "rv_gaia": -31.05, "ew_limit_ma": 1.445}, {"star": "4383374219923745024", "z": [null, 2.15, 3.09, -3.57, -0.66, -1.8, -0.69, 1.33, -0.15, -7.06, 3.63, -0.09, -7.7, -0.99, 1.73, 4.43, -1.77, -3.0, 3.33, -2.73, 0.87, -3.13, 0.76], "ew_ma": [null, 0.59, 0.93, -1.03, -0.18, -0.53, -0.2, 0.3, -0.04, -1.89, 0.73, -0.02, -1.91, -0.21, 0.42, 1.09, -0.42, -0.75, 0.62, -0.46, 0.16, -0.51, 0.12], "z_comb": -0.23, "p": 0.27228638568071595, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.09, "v": 10.95, "rv_gaia": 10.35, "ew_limit_ma": 0.49}, {"star": "3585098090614578688", "z": [null, -0.53, -0.2, 1.27, 0.31, -2.22, -2.51, -1.32, 0.26, -0.08, -7.21, 0.11, 0.57, -0.86, 0.68, -4.39, 2.35, -2.24, -4.98, -1.01, 1.87, 2.59, 2.9], "ew_ma": [null, -0.08, -0.03, 0.17, 0.04, -0.34, -0.36, -0.23, 0.04, -0.01, -1.26, 0.02, 0.08, -0.1, 0.17, -1.05, 0.33, -0.25, -0.51, -0.09, 0.2, 0.2, 0.3], "z_comb": -1.54, "p": 0.27863606819659015, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.16, "v": -22.15, "rv_gaia": -22.45, "ew_limit_ma": 0.764}, {"star": "3346787986201584896", "z": [null, 2.88, 1.01, 0.06, 0.3, -1.03, -3.13, 1.27, -0.31, 7.34, -2.23, -0.35, 8.42, 2.95, 2.3, -0.2, -0.33, -4.87, -4.35, 5.51, -1.34, 0.8, -2.59], "ew_ma": [null, 0.39, 0.16, 0.01, 0.04, -0.19, -0.58, 0.28, -0.05, 1.39, -0.34, -0.06, 1.49, 0.42, 0.6, -0.06, -0.06, -0.66, -0.53, 0.61, -0.13, 0.08, -0.3], "z_comb": -1.23, "p": 0.30573471326433677, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 2.78, "v": 1.1, "rv_gaia": 0.26, "ew_limit_ma": 0.425}, {"star": "3022685626580347392", "z": [null, -4.83, -1.9, -0.81, 0.96, -1.68, -2.75, 1.69, 0.42, -3.58, 0.96, -0.3, -4.16, 3.44, 2.27, 4.08, -6.38, -1.9, -0.95, 5.89, 0.11, -1.92, 1.07], "ew_ma": [null, -0.86, -0.52, -0.1, 0.18, -0.33, -0.51, 0.34, 0.07, -1.21, 0.21, -0.05, -0.69, 0.87, 0.61, 0.93, -1.67, -0.27, -0.11, 0.56, 0.01, -0.19, 0.12], "z_comb": -1.14, "p": 0.3471326433678316, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9982, "null_sd": 3.08, "v": 144.05, "rv_gaia": 143.42, "ew_limit_ma": 0.66}, {"star": "6088054505011960832", "z": [null, -2.88, -2.14, -1.06, -1.69, -0.19, 0.63, -2.12, -0.96, 0.06, 1.81, -0.28, -6.62, -2.37, 1.38, -6.06, 4.26, 10.05, 5.61, -3.68, -3.85, -1.27, 1.32], "ew_ma": [null, -0.3, -0.45, -0.11, -0.17, -0.03, 0.1, -0.27, -0.25, 0.01, 0.17, -0.02, -1.53, -0.21, 0.23, -0.97, 0.33, 0.8, 0.34, -0.22, -0.24, -0.08, 0.08], "z_comb": -0.66, "p": 0.36998150092495374, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.51, "v": 59.3, "rv_gaia": 58.66, "ew_limit_ma": 0.226}, {"star": "6213644846302305536", "z": [null, -3.84, 1.18, -0.68, 0.88, -1.17, -1.49, 2.97, 1.12, 0.74, -0.33, 0.93, -7.59, 4.26, 5.03, 5.86, -7.08, -4.4, 11.33, -4.8, 2.12, -3.51, -0.17], "ew_ma": [null, -0.7, 0.23, -0.11, 0.14, -0.25, -0.32, 0.62, 0.25, 0.18, -0.05, 0.14, -1.28, 0.5, 0.78, 0.79, -0.81, -0.64, 1.52, -0.65, 0.27, -0.37, -0.02], "z_comb": 0.72, "p": 0.3779311034448278, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.76, "v": -5.85, "rv_gaia": -6.56, "ew_limit_ma": 0.504}, {"star": "3786697056556771584", "z": [null, 2.83, 1.76, -4.35, -1.13, -0.02, -0.21, 2.32, 1.47, -4.38, 4.47, -0.52, -0.06, 2.42, 2.03, 4.67, -9.0, -6.41, 0.82, -1.9, -2.87, -0.66, -0.59], "ew_ma": [null, 0.36, 0.25, -0.58, -0.13, -0.0, -0.03, 0.28, 0.18, -0.58, 0.55, -0.06, -0.01, 0.24, 0.32, 0.68, -0.92, -0.63, 0.07, -0.13, -0.27, -0.05, -0.05], "z_comb": -0.08, "p": 0.3953802309884506, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.32, "v": 13.9, "rv_gaia": 13.2, "ew_limit_ma": 0.315}, {"star": "5461620846141553024", "z": [null, -3.74, 2.74, 0.11, -3.86, 2.65, 2.98, 0.77, -1.35, -4.28, -0.98, -3.56, -3.04, 3.53, -1.93, 6.83, -9.86, -4.45, 0.57, 3.72, 1.1, 1.11, -0.6], "ew_ma": [null, -0.41, 0.39, 0.01, -0.41, 0.48, 0.54, 0.13, -0.17, -0.66, -0.14, -0.34, -0.53, 0.31, -0.31, 1.0, -0.92, -0.41, 0.05, 0.29, 0.07, 0.07, -0.04], "z_comb": -1.39, "p": 0.3960801959902005, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.42, "v": 27.55, "rv_gaia": 26.94, "ew_limit_ma": 0.271}, {"star": "4418203587193988480", "z": [null, -0.25, 0.06, -2.61, -1.32, -2.93, -2.42, 1.18, 0.45, -5.18, 3.79, -3.15, -5.65, 4.58, 4.36, 10.49, -10.61, -2.32, 0.86, 2.9, 3.08, -3.43, -0.65], "ew_ma": [null, -0.07, 0.03, -0.64, -0.41, -1.0, -0.82, 0.32, 0.13, -2.06, 1.04, -0.73, -1.52, 0.92, 1.21, 2.58, -2.51, -0.57, 0.16, 0.48, 0.48, -0.49, -0.12], "z_comb": -0.29, "p": 0.4049297535123244, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.87, "v": -68.75, "rv_gaia": -69.63, "ew_limit_ma": 0.852}, {"star": "6270906415441316224", "z": [null, 1.93, -3.16, -2.01, -1.67, -1.45, -1.32, -2.81, 5.95, -1.29, 2.92, 5.04, 3.98, -23.52, -1.03, -3.84, 6.03, 10.79, -12.78, 16.17, -1.66, 1.5, -1.4], "ew_ma": [null, 0.53, -0.73, -0.43, -0.38, -0.35, -0.31, -0.87, 2.52, -0.49, 0.93, 1.49, 1.58, -3.91, -0.32, -1.08, 1.13, 2.07, -2.44, 2.6, -0.29, 0.17, -0.21], "z_comb": -2.91, "p": 0.4267786610669467, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9915, "null_sd": 7.13, "v": -21.9, "rv_gaia": -22.28, "ew_limit_ma": 2.121}, {"star": "5906633952564270848", "z": [null, 4.07, -1.06, -2.22, -1.72, -1.18, 1.56, 0.86, 0.1, -0.08, 4.6, -0.24, -1.87, -3.68, -0.73, 8.36, 6.44, 0.03, 1.48, 7.62, -0.02, -2.21, -1.22], "ew_ma": [null, 0.87, -0.29, -0.49, -0.36, -0.3, 0.39, 0.21, 0.02, -0.02, 0.84, -0.04, -0.38, -0.54, -0.19, 1.96, 1.03, 0.0, 0.22, 1.04, -0.0, -0.22, -0.17], "z_comb": -0.91, "p": 0.43817809109544525, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9978, "null_sd": 3.5, "v": -7.0, "rv_gaia": -7.68, "ew_limit_ma": 0.784}, {"star": "5320952798822552064", "z": [null, 0.76, -1.48, -2.81, -1.25, -2.11, -1.15, -0.75, 0.08, -1.23, 1.24, 2.96, -0.81, -2.04, -0.27, -2.79, 4.71, 8.59, 6.14, -6.91, -2.31, -1.38, 0.24], "ew_ma": [null, 0.07, -0.12, -0.22, -0.11, -0.17, -0.09, -0.06, 0.01, -0.11, 0.08, 0.23, -0.08, -0.14, -0.02, -0.23, 0.35, 0.64, 0.42, -0.45, -0.15, -0.09, 0.02], "z_comb": -0.26, "p": 0.4504274786260687, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.88, "v": 12.4, "rv_gaia": 11.87, "ew_limit_ma": 0.191}, {"star": "5317114850417299584", "z": [null, 1.02, -2.08, -0.34, 0.16, -2.59, -2.92, 1.21, 5.84, 2.36, 0.29, -1.12, -1.43, 0.35, -1.95, -2.45, 0.92, -1.41, -12.65, -6.25, 3.68, -2.96, 2.18], "ew_ma": [null, 0.12, -0.22, -0.04, 0.02, -0.35, -0.39, 0.14, 0.82, 0.36, 0.05, -0.21, -0.19, 0.04, -0.31, -0.35, 0.12, -0.13, -1.03, -0.49, 0.3, -0.16, 0.19], "z_comb": -0.1, "p": 0.4565771711414429, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.78, "v": -6.25, "rv_gaia": -6.29, "ew_limit_ma": 0.343}, {"star": "2324785228033780608", "z": [null, -0.54, -2.34, -1.95, -2.5, -2.03, -0.13, 1.7, 1.96, -4.16, 3.93, -0.84, -5.09, 0.83, -0.59, 11.19, -4.94, -3.97, 5.09, -0.32, 2.39, 0.35, -0.47], "ew_ma": [null, -0.12, -0.74, -0.32, -0.46, -0.7, -0.04, 0.42, 0.49, -0.85, 0.56, -0.11, -0.77, 0.09, -0.13, 1.97, -0.58, -0.59, 0.57, -0.04, 0.27, 0.03, -0.05], "z_comb": -0.97, "p": 0.46687665616719165, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": -6.85, "rv_gaia": -7.42, "ew_limit_ma": 0.564}, {"star": "6133033601555979648", "z": [null, -1.69, 0.62, 2.64, -0.51, -3.18, -5.19, 0.64, 1.09, 2.69, -3.41, 0.87, -1.06, 3.21, 3.02, -3.0, -2.22, -1.35, -1.21, -3.77, 1.57, 0.93, 0.26], "ew_ma": [null, -0.71, 0.3, 1.12, -0.22, -1.64, -2.55, 0.36, 0.48, 1.2, -1.18, 0.26, -0.36, 0.84, 1.05, -1.15, -0.57, -0.35, -0.33, -0.98, 0.33, 0.18, 0.07], "z_comb": 0.05, "p": 0.48137593120343986, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.17, "v": 18.7, "rv_gaia": 18.05, "ew_limit_ma": 1.63}, {"star": "3789271459953459328", "z": [null, -4.33, 0.73, 1.69, -0.14, 1.87, 2.03, -0.73, -0.93, 3.2, 6.35, -1.45, -2.81, -1.95, -0.34, 1.63, -2.71, 2.07, 3.13, -0.26, -0.76, -2.88, -1.24], "ew_ma": [null, -0.84, 0.17, 0.37, -0.03, 0.5, 0.55, -0.18, -0.17, 0.61, 1.23, -0.25, -0.54, -0.27, -0.08, 0.4, -0.49, 0.34, 0.42, -0.03, -0.11, -0.36, -0.16], "z_comb": -0.11, "p": 0.4837758112094395, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9937, "null_sd": 2.0, "v": 19.15, "rv_gaia": 18.5, "ew_limit_ma": 0.467}, {"star": "4400452830957830656", "z": [null, -3.28, 1.81, 3.88, 0.99, 0.03, -0.27, 2.56, -3.65, 1.06, 2.3, -0.62, -6.76, 2.43, 0.36, 6.04, -0.92, 0.28, 10.14, -4.96, 2.77, -6.4, -1.35], "ew_ma": [null, -1.07, 0.64, 1.06, 0.37, 0.01, -0.12, 0.95, -1.64, 0.72, 1.67, -0.36, -2.93, 1.03, 0.26, 4.24, -0.57, 0.07, 2.52, -1.16, 0.69, -1.04, -0.32], "z_comb": 0.31, "p": 0.4851757412129393, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9918, "null_sd": 3.34, "v": -36.7, "rv_gaia": -37.09, "ew_limit_ma": 1.146}, {"star": "5609058277323483392", "z": [null, 0.71, -0.32, 2.35, -3.8, -0.34, -0.37, 1.79, -0.04, -1.34, 0.63, -0.75, 1.15, 5.05, 0.3, 1.63, -4.8, -5.88, -1.75, 2.47, -0.75, 0.43, -0.37], "ew_ma": [null, 0.17, -0.09, 0.67, -0.95, -0.14, -0.15, 0.57, -0.01, -0.58, 0.33, -0.18, 0.4, 1.82, 0.1, 0.51, -1.31, -1.32, -0.27, 0.41, -0.09, 0.06, -0.05], "z_comb": -0.43, "p": 0.48532573371331433, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.39, "v": 73.15, "rv_gaia": 72.42, "ew_limit_ma": 0.96}, {"star": "2390702771185162112", "z": [null, 1.55, -2.47, -1.29, 0.87, -1.0, 0.34, -1.41, 1.78, -2.57, -0.95, -0.88, -2.88, -2.2, 1.19, 2.47, -9.37, 1.85, -9.31, 7.3, -0.04, 2.22, 1.32], "ew_ma": [null, 0.28, -0.42, -0.23, 0.16, -0.19, 0.07, -0.27, 0.29, -0.48, -0.15, -0.13, -0.44, -0.32, 0.22, 0.44, -1.68, 0.24, -1.09, 0.84, -0.0, 0.24, 0.12], "z_comb": 0.38, "p": 0.4909254537273136, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.61, "v": 10.85, "rv_gaia": 10.28, "ew_limit_ma": 0.494}, {"star": "4906784051581971200", "z": [null, 2.58, -2.02, 0.98, 0.94, 1.35, 2.19, 0.13, -2.31, -2.08, -5.9, -0.4, 7.66, 0.43, 2.8, -4.41, 0.18, -2.48, -5.21, 3.08, -0.33, 5.43, -0.96], "ew_ma": [null, 0.25, -0.19, 0.07, 0.08, 0.11, 0.19, 0.01, -0.23, -0.21, -0.48, -0.03, 0.99, 0.04, 0.36, -0.58, 0.02, -0.16, -0.34, 0.2, -0.02, 0.23, -0.05], "z_comb": 0.64, "p": 0.5049247537623119, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 2.2, "v": 3.55, "rv_gaia": 2.92, "ew_limit_ma": 0.181}, {"star": "5765846127180770432", "z": [null, 0.96, -0.48, -3.29, -0.0, 0.21, 0.71, 0.38, -0.29, 0.02, 2.48, -0.34, -4.84, -2.42, -1.46, -3.33, 1.17, 1.08, -4.75, 2.53, 2.36, -0.41, -1.74], "ew_ma": [null, 0.33, -0.17, -1.06, -0.0, 0.09, 0.28, 0.12, -0.11, 0.01, 0.66, -0.1, -1.33, -0.65, -0.42, -0.97, 0.32, 0.34, -1.14, 0.58, 0.58, -0.09, -0.34], "z_comb": -0.56, "p": 0.5059247037648118, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 1.86, "v": -4.25, "rv_gaia": -4.87, "ew_limit_ma": 0.64}, {"star": "2477815222028038272", "z": [null, -1.25, 1.72, -1.97, 0.34, 3.32, 4.12, -0.69, -1.14, -4.92, 3.15, -0.33, -0.63, -3.23, 0.37, 0.14, 0.72, 2.59, -6.01, 0.08, -1.65, 0.01, -2.75], "ew_ma": [null, -0.25, 0.4, -0.42, 0.07, 0.86, 1.07, -0.17, -0.27, -1.0, 0.47, -0.05, -0.1, -0.46, 0.08, 0.03, 0.11, 0.49, -0.91, 0.01, -0.25, 0.0, -0.35], "z_comb": 0.5, "p": 0.5082745862706864, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.27, "v": 12.1, "rv_gaia": 11.46, "ew_limit_ma": 0.54}, {"star": "2523361151179609344", "z": [null, 2.39, -1.05, -1.37, 0.2, 0.92, 4.72, -1.3, 0.8, 2.25, 1.75, -0.19, 1.09, -4.51, -1.96, 0.63, -2.67, 0.37, -0.54, 6.06, 1.84, -2.19, -0.94], "ew_ma": [null, 0.24, -0.11, -0.14, 0.02, 0.11, 0.58, -0.16, 0.08, 0.24, 0.2, -0.02, 0.09, -0.34, -0.18, 0.06, -0.22, 0.03, -0.04, 0.39, 0.12, -0.13, -0.06], "z_comb": -0.28, "p": 0.5307234638268087, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 1.82, "v": 12.9, "rv_gaia": 12.23, "ew_limit_ma": 0.197}, {"star": "6370513647703084544", "z": [null, -1.77, -0.84, 2.01, 0.56, -0.82, -3.42, -0.6, 1.59, -0.34, 0.75, 2.1, 0.5, 1.38, -2.53, -4.98, 9.77, 0.01, 5.13, -11.49, 0.25, -0.28, 2.89], "ew_ma": [null, -0.19, -0.11, 0.24, 0.08, -0.1, -0.39, -0.06, 0.18, -0.03, 0.06, 0.17, 0.06, 0.12, -0.25, -0.5, 0.86, 0.0, 0.48, -1.04, 0.02, -0.02, 0.26], "z_comb": 0.44, "p": 0.5503724813759312, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.21, "v": 34.95, "rv_gaia": 34.33, "ew_limit_ma": 0.3}, {"star": "4847282124418880256", "z": [null, 1.33, -1.22, 0.68, 2.62, -2.79, -3.0, 0.02, -1.53, 1.99, -0.13, 3.07, 5.15, -7.42, 0.6, -2.0, 7.7, 9.2, 3.19, -4.68, -1.79, 1.33, 0.01], "ew_ma": [null, 0.18, -0.19, 0.09, 0.43, -0.57, -0.62, 0.0, -0.3, 0.48, -0.02, 0.55, 1.31, -0.77, 0.13, -0.42, 0.85, 0.92, 0.26, -0.36, -0.13, 0.09, 0.0], "z_comb": 0.38, "p": 0.5575221238938053, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9947, "null_sd": 2.93, "v": 5.05, "rv_gaia": 4.36, "ew_limit_ma": 0.513}, {"star": "5481848424118748672", "z": [null, -2.37, 4.02, 0.56, -0.75, 2.49, 2.51, 4.69, -1.0, -3.5, 3.75, 0.19, -4.53, -0.15, -0.21, 3.16, -0.82, 1.17, 10.13, -1.84, -1.89, -2.25, -2.78], "ew_ma": [null, -1.42, 2.41, 0.31, -0.46, 1.72, 1.73, 2.76, -0.8, -3.1, 2.77, 0.17, -3.22, -0.09, -0.18, 2.66, -0.51, 0.8, 5.11, -0.86, -1.0, -0.65, -1.3], "z_comb": 1.69, "p": 0.5610219489025549, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9787, "null_sd": 3.62, "v": 32.25, "rv_gaia": 31.45, "ew_limit_ma": 2.429}, {"star": "5725122999630404096", "z": [null, -2.9, 4.25, 2.48, -1.94, 1.55, 0.81, 0.22, -2.64, -1.57, -1.54, 1.14, -5.55, 5.69, -1.79, 2.45, -0.22, -4.53, 15.84, -7.47, -1.22, 1.87, -1.1], "ew_ma": [null, -0.36, 0.66, 0.21, -0.33, 0.33, 0.17, 0.03, -0.49, -0.24, -0.2, 0.16, -1.86, 0.68, -0.27, 0.34, -0.02, -0.48, 1.39, -0.77, -0.12, 0.13, -0.06], "z_comb": -0.03, "p": 0.5645717714114294, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9958, "null_sd": 2.75, "v": 33.35, "rv_gaia": 33.23, "ew_limit_ma": 0.319}, {"star": "4768170579173552896", "z": [null, 1.57, -2.22, -1.75, 0.95, -2.69, -3.39, 1.11, -0.03, 6.05, -3.0, 3.67, 3.46, -2.63, 3.01, -0.46, 5.22, 3.49, 2.89, -7.55, 3.09, -3.39, 0.89], "ew_ma": [null, 0.19, -0.37, -0.14, 0.12, -0.62, -0.81, 0.23, -0.01, 1.0, -0.32, 0.4, 0.92, -0.24, 0.5, -0.08, 0.55, 0.38, 0.27, -0.66, 0.24, -0.25, 0.07], "z_comb": -0.15, "p": 0.5654217289135544, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.77, "v": -4.85, "rv_gaia": -5.53, "ew_limit_ma": 0.384}, {"star": "6904703228801028864", "z": [null, -1.32, -1.57, 0.53, 0.61, -2.12, -1.14, 1.61, -0.25, 4.66, 0.01, -0.1, -0.1, 2.17, 4.58, 0.55, -1.79, -2.61, 1.21, -0.95, 1.61, -0.17, -1.22], "ew_ma": [null, -0.25, -0.34, 0.1, 0.16, -0.53, -0.28, 0.44, -0.06, 0.72, 0.0, -0.01, -0.03, 0.32, 0.87, 0.1, -0.3, -0.35, 0.13, -0.1, 0.14, -0.01, -0.12], "z_comb": 0.23, "p": 0.5668716564171792, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 3.02, "v": 10.05, "rv_gaia": 9.13, "ew_limit_ma": 0.657}, {"star": "6606890608810806528", "z": [null, 1.22, -3.45, -0.15, -2.21, -1.48, -2.91, 0.51, -0.85, 2.92, 1.73, 0.38, 2.5, 2.87, -0.64, 3.72, 3.41, -4.17, 5.68, -5.05, 3.49, 0.01, 1.45], "ew_ma": [null, 0.41, -1.67, -0.06, -0.64, -0.52, -1.05, 0.15, -0.21, 0.9, 0.42, 0.07, 0.63, 0.67, -0.37, 2.6, 1.1, -0.71, 0.77, -0.66, 0.55, 0.0, 0.21], "z_comb": -0.86, "p": 0.5669216539173041, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.61, "v": -19.6, "rv_gaia": -20.32, "ew_limit_ma": 0.882}, {"star": "5528591961953902720", "z": [null, -2.39, -1.85, 0.36, 0.77, -2.11, -2.79, 0.79, 1.9, 2.16, 0.21, -1.82, -1.47, 2.9, 3.34, 1.86, -5.56, -1.0, -2.09, 5.74, 2.94, -0.64, -1.35], "ew_ma": [null, -0.43, -0.47, 0.08, 0.19, -0.62, -0.8, 0.24, 0.53, 0.76, 0.06, -0.5, -0.38, 0.75, 1.02, 0.62, -1.59, -0.18, -0.28, 0.65, 0.32, -0.06, -0.14], "z_comb": -0.03, "p": 0.5672216389180541, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.61, "v": -1.05, "rv_gaia": -1.8, "ew_limit_ma": 0.793}, {"star": "5891531404470141824", "z": [null, 1.71, 1.92, -2.36, -0.81, 1.62, 4.82, -1.36, -2.56, -6.1, 5.39, -2.17, 2.29, -0.63, -3.09, 7.5, 0.62, -1.18, -1.93, 3.28, -1.08, 2.14, 0.4], "ew_ma": [null, 0.28, 0.45, -0.32, -0.14, 0.24, 0.7, -0.21, -0.37, -1.03, 0.61, -0.21, 0.45, -0.07, -0.63, 1.4, 0.06, -0.15, -0.16, 0.27, -0.12, 0.18, 0.04], "z_comb": 0.6, "p": 0.576521173941303, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.42, "v": 35.2, "rv_gaia": 34.59, "ew_limit_ma": 0.416}, {"star": "5559265690666327168", "z": [null, 0.67, -2.08, 3.11, 0.56, 0.2, 1.75, 0.61, -1.36, -4.96, 0.76, -0.65, 0.05, 1.43, -2.11, -2.61, 0.26, -0.32, -3.77, 7.94, 0.13, 1.06, 1.94], "ew_ma": [null, 0.09, -0.38, 0.45, 0.11, 0.05, 0.39, 0.12, -0.42, -1.27, 0.22, -0.11, 0.01, 0.46, -0.42, -0.39, 0.06, -0.05, -0.43, 0.99, 0.01, 0.1, 0.24], "z_comb": 1.44, "p": 0.5774711264436778, "n_lines": 16, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.92, "v": 89.25, "rv_gaia": 88.55, "ew_limit_ma": 0.553}, {"star": "3182634954624823168", "z": [null, 0.21, 1.78, -1.58, -0.22, 0.82, -2.28, 1.76, 0.82, 3.02, -1.09, 2.86, 4.27, 1.81, 2.25, 2.56, 2.29, -1.64, 5.56, -5.4, -3.85, -2.26, 1.77], "ew_ma": [null, 0.04, 0.38, -0.36, -0.05, 0.22, -0.62, 0.42, 0.15, 0.59, -0.17, 0.44, 1.01, 0.32, 0.52, 0.58, 0.44, -0.23, 0.7, -0.66, -0.49, -0.25, 0.19], "z_comb": 0.19, "p": 0.5782710864456777, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.47, "v": 5.4, "rv_gaia": 4.81, "ew_limit_ma": 0.657}, {"star": "5855730584310531200", "z": [null, 0.53, -0.62, 0.29, -0.2, 0.57, 1.28, 1.66, -0.28, -4.6, 3.55, -2.36, -4.1, 4.94, 1.84, 3.32, -9.51, -3.54, -2.82, 11.45, -3.46, 0.87, -0.49], "ew_ma": [null, 0.16, -0.23, 0.07, -0.06, 0.21, 0.45, 0.5, -0.07, -1.94, 1.63, -0.65, -1.6, 1.3, 0.61, 0.97, -2.79, -1.06, -0.6, 2.08, -0.53, 0.14, -0.09], "z_comb": 1.01, "p": 0.6094695265236738, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9962, "null_sd": 3.79, "v": 105.15, "rv_gaia": 104.53, "ew_limit_ma": 1.621}, {"star": "2475331597059676288", "z": [null, 2.71, 3.34, -2.68, -2.42, 3.93, 4.02, 0.19, -0.88, -5.04, 4.26, -1.69, -3.02, -3.11, -2.12, 5.82, 0.21, -0.31, -1.16, 1.08, -0.32, -0.33, -2.94], "ew_ma": [null, 0.79, 1.32, -0.84, -0.72, 1.24, 1.31, 0.06, -0.23, -1.52, 0.99, -0.34, -0.67, -0.49, -0.65, 1.57, 0.04, -0.08, -0.22, 0.18, -0.06, -0.04, -0.59], "z_comb": 0.13, "p": 0.6442177891105445, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.5, "v": 22.4, "rv_gaia": 21.78, "ew_limit_ma": 0.827}, {"star": "5586381090520538880", "z": [null, -2.73, 2.14, 1.6, 1.79, 0.56, -1.77, -1.35, -0.51, -6.12, 1.34, -0.32, -3.35, -2.32, 4.01, -0.46, 0.97, 2.61, 1.97, -7.51, -3.2, 0.73, 2.29], "ew_ma": [null, -0.28, 0.23, 0.16, 0.17, 0.07, -0.21, -0.17, -0.06, -0.72, 0.13, -0.03, -0.37, -0.18, 0.44, -0.05, 0.08, 0.22, 0.16, -0.51, -0.26, 0.04, 0.18], "z_comb": 1.29, "p": 0.6493675316234189, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 2.88, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 0.333}, {"star": "6914237987476826624", "z": [null, -0.66, -1.28, -1.05, 6.04, -0.12, -2.25, -1.21, 0.42, 3.68, -0.44, 2.1, -0.7, -4.28, 0.23, -6.52, 11.3, 6.78, 1.83, -5.15, 1.45, -4.28, 1.02], "ew_ma": [null, -0.08, -0.15, -0.13, 0.64, -0.01, -0.24, -0.12, 0.05, 0.39, -0.04, 0.21, -0.08, -0.38, 0.02, -0.68, 1.08, 0.77, 0.19, -0.51, 0.13, -0.37, 0.09], "z_comb": 0.68, "p": 0.6512674366281686, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.46, "v": 3.8, "rv_gaia": 3.1, "ew_limit_ma": 0.321}, {"star": "6603827644293770624", "z": [null, -0.85, -3.94, -1.76, 1.63, 2.85, -0.18, -2.75, 0.16, 4.87, -0.07, 1.04, -0.69, -6.33, 1.24, -8.67, 3.92, 5.24, -4.07, -0.01, 0.18, 3.36, 2.22], "ew_ma": [null, -0.11, -0.53, -0.24, 0.23, 0.4, -0.02, -0.35, 0.03, 0.78, -0.01, 0.14, -0.1, -0.73, 0.16, -1.12, 0.58, 0.68, -0.41, -0.0, 0.02, 0.31, 0.21], "z_comb": 0.81, "p": 0.6553172341382931, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.16, "v": 1.1, "rv_gaia": 0.39, "ew_limit_ma": 0.37}, {"star": "5798962867668048768", "z": [null, -3.42, 1.02, 1.59, 1.37, -1.54, -2.46, 0.81, 1.15, 4.81, -3.1, 1.08, 8.2, 5.34, 2.95, -6.16, -2.52, -0.83, -1.27, 0.71, -1.8, 2.93, 1.5], "ew_ma": [null, -1.14, 0.41, 0.55, 0.38, -0.47, -0.75, 0.24, 0.34, 1.4, -0.71, 0.23, 1.44, 0.78, 0.78, -1.4, -0.52, -0.18, -0.29, 0.15, -0.37, 0.38, 0.32], "z_comb": 1.81, "p": 0.6659167041647918, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9961, "null_sd": 3.07, "v": 2.7, "rv_gaia": 1.94, "ew_limit_ma": 1.135}, {"star": "3646061719703116032", "z": [null, 2.31, 1.22, 2.18, 0.71, 1.32, 1.6, -1.17, -1.28, 0.39, -1.65, 0.44, 3.65, -0.6, -4.73, -5.82, 4.84, 1.4, -1.22, -6.9, -1.79, 0.89, 1.56], "ew_ma": [null, 0.27, 0.16, 0.2, 0.07, 0.12, 0.14, -0.1, -0.15, 0.04, -0.15, 0.04, 0.54, -0.04, -0.44, -0.51, 0.34, 0.11, -0.09, -0.45, -0.13, 0.07, 0.12], "z_comb": 0.48, "p": 0.6663166841657917, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 1.9, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.234}, {"star": "4777373903814124032", "z": [null, 1.72, -3.92, 1.0, -0.85, -0.62, -0.48, 0.21, -1.91, -3.57, 3.12, -0.74, -4.94, 0.53, 2.86, 1.3, -4.62, 3.37, 1.12, -0.65, -1.05, -1.14, 0.95], "ew_ma": [null, 0.25, -1.67, 0.2, -0.16, -0.27, -0.2, 0.04, -0.73, -0.73, 0.63, -0.09, -1.64, 0.15, 0.76, 0.34, -0.44, 0.43, 0.11, -0.07, -0.09, -0.11, 0.07], "z_comb": 0.87, "p": 0.6760661966901655, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.37, "v": 65.0, "rv_gaia": 64.22, "ew_limit_ma": 0.509}, {"star": "2468730472844294016", "z": [null, 1.48, -0.35, 0.21, 2.06, -1.59, -1.37, -0.16, -1.41, -1.23, 2.69, -1.14, 0.98, 0.71, 0.77, -1.32, 3.81, 1.05, -0.79, 2.54, -1.14, -0.05, 1.18], "ew_ma": [null, 0.19, -0.05, 0.03, 0.27, -0.21, -0.18, -0.02, -0.17, -0.17, 0.37, -0.13, 0.14, 0.11, 0.14, -0.22, 0.57, 0.12, -0.08, 0.24, -0.11, -0.0, 0.1], "z_comb": 0.76, "p": 0.6811159442027899, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.67, "v": 8.85, "rv_gaia": 8.11, "ew_limit_ma": 0.277}, {"star": "5493588665684618752", "z": [null, 3.89, -0.12, 2.51, 1.84, -1.32, -3.24, -1.03, -0.94, 5.81, -5.6, 3.45, 9.24, 0.22, 1.87, -9.95, 5.63, 2.91, -4.58, -6.24, -4.2, 6.03, 0.51], "ew_ma": [null, 0.75, -0.03, 0.45, 0.36, -0.28, -0.7, -0.2, -0.15, 1.35, -0.79, 0.46, 1.28, 0.02, 0.34, -1.52, 0.68, 0.38, -0.49, -0.56, -0.39, 0.41, 0.05], "z_comb": 1.78, "p": 0.687865606719664, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 3.08, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 0.587}, {"star": "6128366415218881536", "z": [null, -1.25, 3.6, 2.34, 0.36, 3.48, 1.44, -2.62, 0.18, -0.8, -3.83, 2.94, 5.75, -3.09, -6.32, -6.98, 9.48, 1.92, -6.24, 1.84, -0.68, 2.7, 1.0], "ew_ma": [null, -0.17, 0.95, 0.31, 0.04, 0.6, 0.25, -0.44, 0.03, -0.09, -0.38, 0.25, 0.98, -0.29, -0.66, -0.9, 0.96, 0.19, -0.5, 0.17, -0.05, 0.22, 0.07], "z_comb": 0.46, "p": 0.6939153042347883, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.82, "v": 31.2, "rv_gaia": 30.47, "ew_limit_ma": 0.427}, {"star": "6879764552737781888", "z": [null, -0.01, -2.27, -1.16, -1.14, 0.04, 0.82, -0.78, 3.92, -2.55, -2.04, 4.66, 2.46, -2.55, 1.35, -1.76, -0.41, 0.42, -2.27, 8.18, 2.01, -1.41, 3.2], "ew_ma": [null, -0.0, -0.18, -0.11, -0.12, 0.0, 0.09, -0.08, 0.52, -0.36, -0.31, 0.96, 0.41, -0.29, 0.17, -0.22, -0.05, 0.03, -0.15, 0.47, 0.13, -0.08, 0.18], "z_comb": 1.41, "p": 0.6948652567371632, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.45, "v": 27.3, "rv_gaia": 27.2, "ew_limit_ma": 0.229}, {"star": "2341817487782612480", "z": [null, 0.57, -0.07, 1.97, 0.1, 0.02, 1.71, -2.51, -1.04, 1.82, -3.09, 1.65, 5.62, -0.56, -1.44, -5.46, 5.76, 4.23, -1.06, 3.3, -0.63, 2.95, 0.31], "ew_ma": [null, 0.06, -0.01, 0.21, 0.01, 0.0, 0.21, -0.27, -0.1, 0.18, -0.28, 0.15, 0.62, -0.04, -0.13, -0.48, 0.48, 0.37, -0.09, 0.27, -0.05, 0.2, 0.02], "z_comb": 1.14, "p": 0.6994650267486626, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.11, "v": 21.6, "rv_gaia": 20.93, "ew_limit_ma": 0.277}, {"star": "5548164986925169024", "z": [null, 1.63, -2.08, -1.8, 1.34, 0.57, 0.95, 0.59, -2.11, -1.55, 4.05, -1.78, -4.7, 1.76, 1.44, 2.32, -1.97, 3.64, 4.51, -0.95, -0.5, -2.2, -1.74], "ew_ma": [null, 0.11, -0.26, -0.11, 0.12, 0.06, 0.1, 0.05, -0.46, -0.16, 0.29, -0.15, -0.69, 0.13, 0.2, 0.31, -0.12, 0.25, 0.23, -0.05, -0.03, -0.12, -0.09], "z_comb": 0.91, "p": 0.6998650067496626, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.37, "v": 52.4, "rv_gaia": 51.69, "ew_limit_ma": 0.241}, {"star": "3811594088617869056", "z": [null, -2.43, 2.13, 2.05, 1.16, 0.59, -0.19, 2.28, 1.86, -1.93, -3.25, 2.0, 4.47, 1.25, 2.0, 0.43, -2.57, -0.39, 0.63, -1.48, -2.65, -2.06, 0.94], "ew_ma": [null, -0.42, 0.46, 0.35, 0.17, 0.09, -0.03, 0.35, 0.36, -0.28, -0.33, 0.18, 0.67, 0.14, 0.42, 0.09, -0.35, -0.05, 0.06, -0.14, -0.32, -0.18, 0.08], "z_comb": 1.18, "p": 0.7226138693065347, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.0, "v": 10.7, "rv_gaia": 10.06, "ew_limit_ma": 0.416}, {"star": "3480332916165099904", "z": [null, -0.12, 1.84, 0.87, 1.48, 1.71, 0.22, 1.33, 0.23, 1.23, -3.47, 3.93, 12.27, 2.93, 2.08, -6.61, 2.17, 0.09, 2.67, -7.43, -3.47, 0.83, -1.4], "ew_ma": [null, -0.01, 0.23, 0.1, 0.16, 0.18, 0.02, 0.14, 0.02, 0.16, -0.39, 0.47, 2.0, 0.33, 0.46, -1.29, 0.29, 0.01, 0.19, -0.46, -0.24, 0.05, -0.09], "z_comb": 2.11, "p": 0.7386630668466576, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.43, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.313}, {"star": "4975284381908412672", "z": [null, 0.13, -0.86, -0.8, -1.23, 1.54, -1.98, -0.9, 2.98, 10.31, -2.57, 1.07, 0.33, -1.35, 0.01, -3.23, -0.66, -0.04, -4.8, 0.53, 2.66, 1.68, 2.09], "ew_ma": [null, 0.01, -0.09, -0.07, -0.11, 0.15, -0.19, -0.08, 0.25, 0.82, -0.18, 0.07, 0.03, -0.11, 0.0, -0.33, -0.06, -0.0, -0.35, 0.04, 0.19, 0.1, 0.13], "z_comb": 0.8, "p": 0.7493625318734063, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.95, "v": -10.2, "rv_gaia": -10.92, "ew_limit_ma": 0.219}, {"star": "6489909443564308224", "z": [null, -0.12, -1.59, -0.88, 2.32, -0.88, -1.8, 0.65, -0.88, -1.15, 1.65, 1.1, 4.33, 1.5, 4.67, 1.53, 0.62, 0.57, -6.76, -3.4, -2.61, 0.91, 4.66], "ew_ma": [null, -0.02, -0.24, -0.12, 0.34, -0.11, -0.22, 0.08, -0.13, -0.17, 0.27, 0.15, 0.89, 0.17, 0.9, 0.31, 0.09, 0.06, -0.73, -0.35, -0.26, 0.07, 0.45], "z_comb": 2.51, "p": 0.7562121893905305, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9955, "null_sd": 3.17, "v": 0.85, "rv_gaia": 0.63, "ew_limit_ma": 0.475}, {"star": "2966790170574625408", "z": [null, -0.99, 2.36, -1.39, 0.55, 0.55, -1.83, -2.86, 4.51, -1.77, -1.77, 1.08, -1.32, -1.27, -0.59, -3.69, -0.04, 5.78, -1.62, 2.52, -0.6, 1.33, 0.15], "ew_ma": [null, -0.1, 0.25, -0.15, 0.07, 0.08, -0.25, -0.38, 0.59, -0.31, -0.34, 0.2, -0.16, -0.17, -0.1, -0.63, -0.01, 0.53, -0.12, 0.18, -0.04, 0.09, 0.01], "z_comb": 1.37, "p": 0.7708614569271537, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 3.95, "v": 38.45, "rv_gaia": 37.83, "ew_limit_ma": 0.844}, {"star": "5876112300125320448", "z": [null, -2.01, 5.41, 0.77, 2.28, 2.91, 1.74, -1.27, -1.01, -2.06, -0.09, -1.47, 2.76, 2.49, -4.9, -2.9, 7.06, 0.69, 2.27, -6.57, -1.6, 3.77, 1.33], "ew_ma": [null, -0.18, 1.11, 0.06, 0.21, 0.36, 0.21, -0.15, -0.18, -0.23, -0.01, -0.1, 0.4, 0.21, -0.44, -0.26, 0.44, 0.05, 0.12, -0.44, -0.09, 0.21, 0.07], "z_comb": 2.19, "p": 0.7944602769861507, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.62, "v": 38.6, "rv_gaia": 37.83, "ew_limit_ma": 0.323}, {"star": "4867596937475715968", "z": [null, 0.43, -0.51, -1.5, 1.21, -0.95, 1.24, 0.73, 2.47, 7.19, -0.26, 2.47, -2.18, -2.1, -1.34, -1.49, 3.1, 2.26, -1.92, -0.65, 2.43, -0.44, 2.23], "ew_ma": [null, 0.07, -0.09, -0.21, 0.17, -0.14, 0.19, 0.1, 0.33, 0.84, -0.02, 0.26, -0.28, -0.23, -0.19, -0.18, 0.33, 0.26, -0.22, -0.07, 0.27, -0.04, 0.22], "z_comb": 2.19, "p": 0.8090595470226488, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.11, "v": -9.4, "rv_gaia": -9.94, "ew_limit_ma": 0.438}, {"star": "5459060117921483008", "z": [null, 0.06, 0.99, -0.22, -0.49, 3.37, 2.01, -1.59, 2.75, -2.72, -3.6, 4.67, 0.62, -4.26, -1.19, -8.52, 7.07, 7.65, -7.43, -3.99, -2.14, 1.49, 3.01], "ew_ma": [null, 0.01, 0.11, -0.02, -0.07, 0.38, 0.23, -0.18, 0.31, -0.27, -0.32, 0.42, 0.11, -0.35, -0.13, -0.9, 0.61, 0.78, -0.61, -0.33, -0.18, 0.12, 0.25], "z_comb": 3.21, "p": 0.8313584320783961, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.61, "v": 44.6, "rv_gaia": 43.93, "ew_limit_ma": 0.372}, {"star": "5553647083168192512", "z": [null, -0.5, 0.84, 2.22, -0.97, -1.3, -1.86, 1.27, 0.98, -2.45, 2.64, -0.89, -7.09, 4.84, 2.25, 4.47, -8.57, 1.05, 4.92, -5.72, -1.46, 0.17, 0.95], "ew_ma": [null, -0.09, 0.27, 0.41, -0.19, -0.35, -0.5, 0.3, 0.38, -0.69, 0.44, -0.16, -1.78, 0.84, 0.63, 1.38, -1.31, 0.16, 0.59, -0.57, -0.13, 0.02, 0.1], "z_comb": 2.6, "p": 0.8362081895905205, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9979, "null_sd": 3.09, "v": 60.35, "rv_gaia": 59.67, "ew_limit_ma": 0.753}, {"star": "3799626935341796096", "z": [null, -3.18, 2.3, -1.42, 0.96, 0.76, 1.17, 1.67, 1.15, -5.43, -1.51, 1.25, -5.77, 4.01, 2.75, 2.84, -7.33, -3.22, 4.23, -1.29, -0.43, 1.19, 2.08], "ew_ma": [null, -0.83, 0.62, -0.3, 0.21, 0.17, 0.27, 0.37, 0.24, -1.23, -0.3, 0.22, -0.95, 0.56, 0.54, 0.48, -1.0, -0.6, 0.96, -0.24, -0.07, 0.16, 0.38], "z_comb": 2.44, "p": 0.8547072646367682, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.66, "v": 2.5, "rv_gaia": 1.89, "ew_limit_ma": 0.923}, {"star": "5479222240596469632", "z": [null, -0.92, 6.48, 3.09, -0.96, 2.52, 1.04, -0.74, -1.56, -3.64, -0.73, 2.1, 1.91, 2.55, -0.51, -5.52, 2.18, 0.28, 0.68, -0.9, -3.24, 2.78, 2.51], "ew_ma": [null, -0.22, 2.08, 0.8, -0.22, 1.1, 0.47, -0.31, -0.44, -0.7, -0.13, 0.34, 0.43, 0.43, -0.11, -1.08, 0.38, 0.06, 0.13, -0.18, -0.58, 0.37, 0.44], "z_comb": 3.59, "p": 0.8602569871506425, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.88, "v": 22.85, "rv_gaia": 22.03, "ew_limit_ma": 1.041}, {"star": "6029992663310612096", "z": [null, -1.66, 1.6, 2.72, 0.2, 1.26, -1.59, 1.39, 0.91, 1.73, -2.29, 1.42, 5.49, 6.87, 0.1, 0.93, -5.26, -1.23, 3.9, 0.62, -1.27, 4.8, 0.93], "ew_ma": [null, -0.75, 0.87, 1.45, 0.1, 0.75, -0.95, 0.67, 0.26, 0.48, -0.57, 0.32, 1.59, 1.52, 0.02, 0.23, -1.31, -0.34, 1.26, 0.18, -0.36, 1.01, 0.24], "z_comb": 3.62, "p": 0.8705564721763912, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.79, "v": 14.75, "rv_gaia": 14.08, "ew_limit_ma": 1.709}, {"star": "4117290138348536064", "z": [null, 1.4, -1.77, 0.67, 0.36, 0.85, 1.8, -0.54, 5.68, -0.68, -0.12, 1.95, 4.45, 2.86, -1.28, -1.36, -3.96, -0.74, -1.32, -1.52, -1.71, 2.86, 0.3], "ew_ma": [null, 0.23, -0.27, 0.09, 0.06, 0.15, 0.32, -0.09, 0.98, -0.1, -0.02, 0.45, 0.94, 0.34, -0.23, -0.22, -0.58, -0.1, -0.18, -0.18, -0.23, 0.24, 0.03], "z_comb": 3.09, "p": 0.8872056397180141, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.59, "v": 10.6, "rv_gaia": 10.36, "ew_limit_ma": 0.503}, {"star": "3532823773073745536", "z": [null, -1.18, 5.1, 0.04, -0.09, 3.7, 3.88, 1.46, -1.69, -1.74, 0.25, 0.66, 0.09, 4.2, 0.76, 3.29, -13.26, -4.33, -1.7, 4.38, -1.61, 3.59, -1.57], "ew_ma": [null, -0.13, 0.7, 0.0, -0.01, 0.43, 0.45, 0.16, -0.19, -0.22, 0.03, 0.06, 0.02, 0.43, 0.1, 0.42, -1.45, -0.56, -0.17, 0.43, -0.16, 0.32, -0.17], "z_comb": 3.09, "p": 0.8874056297185141, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.49, "v": 40.35, "rv_gaia": 39.76, "ew_limit_ma": 0.496}, {"star": "5584019442620181760", "z": [null, 2.16, 1.45, -1.54, 0.68, 2.03, 2.47, -0.26, 2.31, -3.18, 2.22, 3.21, 2.74, -4.03, 1.3, 1.61, 3.36, 4.73, -2.44, 7.48, -2.63, 0.48, 0.0], "ew_ma": [null, 0.32, 0.24, -0.19, 0.11, 0.31, 0.38, -0.04, 0.38, -0.47, 0.32, 0.42, 0.52, -0.59, 0.3, 0.39, 0.45, 0.58, -0.28, 0.76, -0.22, 0.03, 0.0], "z_comb": 3.53, "p": 0.8888555572221389, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 4.55, "v": 29.0, "rv_gaia": 28.69, "ew_limit_ma": 1.15}, {"star": "2633449134434620288", "z": [null, 2.55, -2.6, -1.38, 2.54, 0.84, 1.48, 0.29, 2.95, 1.2, 2.26, -3.47, -0.69, 3.14, -0.11, 4.76, -2.63, 4.99, 4.72, 14.95, 2.43, -1.45, 0.84], "ew_ma": [null, 0.26, -0.29, -0.13, 0.31, 0.12, 0.21, 0.04, 0.54, 0.25, 0.35, -0.44, -0.06, 0.25, -0.02, 0.77, -0.26, 0.44, 0.38, 1.03, 0.16, -0.09, 0.05], "z_comb": 3.9, "p": 0.8889055547222638, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 3.18, "v": -12.1, "rv_gaia": -12.6, "ew_limit_ma": 0.465}, {"star": "5569858798004394624", "z": [null, -2.4, 0.98, 0.59, -0.65, 3.14, 5.29, -0.05, -2.76, -3.01, 3.16, -0.38, 2.77, 2.48, -1.08, -0.64, -4.89, 2.32, 1.17, 0.91, -0.17, 1.39, 0.55], "ew_ma": [null, -0.25, 0.14, 0.06, -0.08, 0.5, 0.84, -0.01, -0.52, -0.31, 0.43, -0.03, 0.52, 0.22, -0.14, -0.07, -0.48, 0.19, 0.08, 0.07, -0.01, 0.1, 0.04], "z_comb": 3.13, "p": 0.9296035198240088, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9974, "null_sd": 2.37, "v": 57.1, "rv_gaia": 56.33, "ew_limit_ma": 0.386}, {"star": "5395795730687103488", "z": [null, 2.15, -0.66, 0.39, -1.7, 3.32, 2.69, 0.55, -2.41, -2.35, 2.88, -1.86, 3.69, 3.54, -0.52, 0.9, 7.74, 7.21, 2.81, 6.03, -1.81, 0.09, 1.37], "ew_ma": [null, 0.25, -0.09, 0.04, -0.24, 0.46, 0.37, 0.08, -0.39, -0.39, 0.31, -0.2, 0.95, 0.33, -0.08, 0.13, 0.72, 0.76, 0.22, 0.47, -0.17, 0.01, 0.12], "z_comb": 3.87, "p": 0.943902804859757, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9964, "null_sd": 2.43, "v": 44.0, "rv_gaia": 43.4, "ew_limit_ma": 0.464}, {"star": "2417456431710276096", "z": [null, 2.52, 1.58, 0.29, 1.7, 2.13, 2.89, -0.15, 1.15, -5.07, 2.15, 1.09, 2.93, -1.51, 1.16, 4.08, 2.82, 5.17, -2.47, -0.12, -3.36, 1.24, -0.59], "ew_ma": [null, 0.29, 0.18, 0.03, 0.16, 0.26, 0.34, -0.02, 0.12, -0.57, 0.18, 0.1, 0.31, -0.12, 0.16, 0.51, 0.22, 0.46, -0.21, -0.01, -0.3, 0.08, -0.04], "z_comb": 4.21, "p": 0.9503024848757562, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": 8.6, "rv_gaia": 7.88, "ew_limit_ma": 0.425}, {"star": "5540006949934104448", "z": [null, 2.58, 2.3, 3.36, 0.86, 4.31, 2.06, -0.55, -2.02, -3.94, 3.45, -0.52, -6.19, 1.15, -0.61, -0.43, 3.54, 0.39, 0.67, -7.41, -0.97, 1.28, 0.77], "ew_ma": [null, 0.47, 0.46, 0.45, 0.17, 1.4, 0.67, -0.21, -0.45, -1.01, 0.49, -0.05, -1.93, 0.14, -0.16, -0.11, 0.36, 0.06, 0.08, -0.93, -0.09, 0.14, 0.08], "z_comb": 4.27, "p": 0.9507524623768812, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9966, "null_sd": 2.5, "v": 50.1, "rv_gaia": 49.31, "ew_limit_ma": 0.736}, {"star": "6703245382605547520", "z": [null, -0.59, 2.35, 3.91, 0.65, 4.52, 2.11, 1.11, -1.46, -1.85, -0.72, -0.88, 4.22, 3.25, -1.67, 1.48, 1.28, -2.42, -1.09, 2.17, -0.98, 2.59, 1.2], "ew_ma": [null, -0.04, 0.23, 0.32, 0.06, 0.43, 0.2, 0.1, -0.15, -0.21, -0.05, -0.07, 0.47, 0.25, -0.14, 0.12, 0.1, -0.16, -0.06, 0.12, -0.05, 0.15, 0.07], "z_comb": 3.1, "p": 0.9703014849257537, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.83, "v": 33.15, "rv_gaia": 32.63, "ew_limit_ma": 0.24}, {"star": "6802426038708609536", "z": [null, 1.66, -2.31, -0.88, 3.83, -0.99, 0.75, 1.58, 2.97, 3.96, 5.28, 1.04, -1.6, 0.08, -0.92, 5.0, 0.86, 7.62, -7.01, 6.24, 3.77, -2.33, 1.05], "ew_ma": [null, 0.24, -0.39, -0.13, 0.64, -0.19, 0.14, 0.23, 0.55, 0.63, 0.74, 0.15, -0.23, 0.01, -0.18, 0.87, 0.13, 0.99, -0.78, 0.7, 0.45, -0.17, 0.09], "z_comb": 5.64, "p": 0.983750812459377, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.06, "v": -15.9, "rv_gaia": -16.09, "ew_limit_ma": 0.766}, {"star": "4923433303326992384", "z": [null, 0.87, 0.78, 3.05, 4.55, 2.11, -0.23, 0.76, 0.84, -1.69, -2.48, 1.96, 5.87, 3.41, 3.35, -9.13, 2.3, 3.63, 2.79, -7.74, -4.25, 2.62, 0.92], "ew_ma": [null, 0.11, 0.11, 0.37, 0.49, 0.31, -0.03, 0.1, 0.1, -0.22, -0.27, 0.2, 0.82, 0.37, 0.54, -1.23, 0.26, 0.35, 0.24, -0.58, -0.39, 0.18, 0.07], "z_comb": 5.4, "p": 0.9883005849707515, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.04, "v": 7.25, "rv_gaia": 6.53, "ew_limit_ma": 0.441}, {"star": "2525514785221197696", "z": [null, 3.14, -0.85, 2.12, 2.0, -0.35, 1.7, 0.7, 1.53, 3.17, 3.21, -0.37, 0.81, -2.25, 5.09, 3.56, -3.65, 1.64, -1.53, 6.77, 0.36, -0.12, 2.68], "ew_ma": [null, 0.3, -0.09, 0.19, 0.16, -0.03, 0.17, 0.07, 0.12, 0.25, 0.19, -0.03, 0.05, -0.17, 0.35, 0.27, -0.24, 0.11, -0.1, 0.44, 0.02, -0.01, 0.16], "z_comb": 5.05, "p": 0.9960001999900004, "n_lines": 16, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.07, "v": -3.15, "rv_gaia": -3.83, "ew_limit_ma": 0.338}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Pu_UVES.json b/papers/short_lived_elements/data/element_Pu_UVES.json new file mode 100644 index 0000000000000000000000000000000000000000..343b777b7bdba317eb537337246203639d6bc794 --- /dev/null +++ b/papers/short_lived_elements/data/element_Pu_UVES.json @@ -0,0 +1 @@ +{"lines": [[4105.95, 0.8193180042768339], [4129.93, 0.8289160844753647], [4141.2, 0.8334462487243048], [4159.39, 0.8407840652317417], [4178.28, 0.8484383011777761], [4189.9, 0.8531639595992974], [4190.06, 0.8532291205052488], [4196.2, 0.8557315501683459], [4229.77, 0.8694781862395033], [4254.76, 0.8797825037255271], [4273.34, 0.8874830791575251], [4289.08, 0.8940328550498184], [4337.18, 0.9141976033653123], [4352.71, 0.9207561999762266], [4379.91, 0.9322997303975664], [4385.35, 0.9346170657553621], [4393.93, 0.9382778267356214], [4441.65, 0.9587687102273921], [4468.54, 0.9704127304959331], [4472.79, 0.972259515074585], [4493.78, 0.9814062052256397], [4504.91, 0.9862736343986085], [4536.15, 1.0]], "stable": [true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, false, false, true, true, true], "results": [{"star": "5730371484020807808", "z": [null, -0.37, -0.96, 0.57, -0.15, -1.01, 1.12, -3.29, 2.04, -2.23, -8.27, -1.08, -1.32, -5.93, -2.08, -11.46, -2.22, -2.24, -16.97, 5.91, 0.74, 2.99, null], "ew_ma": [null, -0.08, -0.18, 0.12, -0.03, -0.23, 0.26, -0.8, 0.7, -0.74, -2.85, -0.38, -0.34, -1.54, -0.76, -3.84, -0.8, -0.45, -3.37, 1.04, 0.16, 0.54, null], "z_comb": -8.06, "p": 0.005449727513624319, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 4.03, "v": 119.4, "rv_gaia": 119.47, "ew_limit_ma": 0.145, "dominant": 4385.35, "shared": 9, "width": 0.9, "vet": "absorption at 4385.35 A shared by 9 other stars"}, {"star": "5266348577487273344", "z": [null, -4.35, -1.41, 0.89, 0.27, 0.07, -0.14, -0.08, 0.39, -3.21, -5.77, -3.85, 6.87, -0.01, 0.37, 0.04, -1.06, -3.26, -0.4, -3.01, -4.25, -1.67, null], "ew_ma": [null, -1.95, -0.58, 0.32, 0.1, 0.03, -0.05, -0.03, 0.15, -1.22, -2.24, -1.36, 2.03, -0.0, 0.13, 0.02, -0.36, -1.33, -0.14, -1.09, -1.93, -0.58, null], "z_comb": -6.46, "p": 0.02064896755162242, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9972, "null_sd": 2.87, "v": 14.15, "rv_gaia": 13.6, "ew_limit_ma": 0.353}, {"star": "5062172841616745856", "z": [null, -2.9, -2.5, 3.15, -1.74, -0.02, 2.79, 0.71, -3.23, -3.65, -4.01, 1.28, 6.51, 0.13, -1.63, -6.04, -3.89, -3.85, -6.48, 4.8, -1.03, -1.35, null], "ew_ma": [null, -0.84, -0.74, 0.86, -0.64, -0.01, 0.99, 0.23, -1.43, -1.12, -0.99, 0.33, 1.7, 0.03, -0.51, -1.68, -1.0, -0.85, -1.66, 1.13, -0.21, -0.21, null], "z_comb": -6.72, "p": 0.023248837558122095, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9969, "null_sd": 3.81, "v": 11.7, "rv_gaia": 11.16, "ew_limit_ma": 0.444}, {"star": "3529518709839090176", "z": [null, -3.93, -5.4, -3.08, 0.23, -5.91, -5.57, 0.39, -0.51, 3.39, -1.57, -0.89, -3.71, -0.48, -3.48, -0.13, 0.51, 1.08, -4.26, -3.24, 3.6, 1.46, null], "ew_ma": [null, -0.87, -1.24, -0.85, 0.04, -1.11, -1.03, 0.08, -0.1, 0.75, -0.41, -0.16, -0.85, -0.12, -1.59, -0.06, 0.14, 0.22, -0.81, -0.64, 0.87, 0.23, null], "z_comb": -4.37, "p": 0.03954802259887006, "n_lines": 18, "n_spectra": 3, "twin_r": 0.998, "null_sd": 3.54, "v": -20.35, "rv_gaia": -20.24, "ew_limit_ma": 0.382}, {"star": "4421455530273900032", "z": [null, -0.24, -1.07, 1.03, -3.55, -0.43, 1.12, -1.28, 0.46, -0.84, -10.76, -1.0, -3.17, -1.59, 0.83, -8.85, -2.04, -5.44, -8.64, 2.38, -2.07, 4.44, null], "ew_ma": [null, -0.08, -0.27, 0.25, -1.18, -0.18, 0.47, -0.39, 0.36, -0.33, -3.37, -0.32, -1.42, -0.39, 0.35, -3.18, -0.56, -1.47, -2.61, 0.68, -0.5, 0.86, null], "z_comb": -7.43, "p": 0.04794760261986901, "n_lines": 18, "n_spectra": 1, "twin_r": 0.993, "null_sd": 4.48, "v": 54.65, "rv_gaia": 54.37, "ew_limit_ma": 0.712}, {"star": "3946438125929224320", "z": [null, 2.8, -1.06, -0.07, 1.74, -1.77, -2.88, -4.2, 2.12, -0.78, 2.62, -2.65, -4.76, -16.12, -1.96, -2.63, -3.37, 2.87, -9.71, 13.54, -0.8, -2.96, null], "ew_ma": [null, 0.61, -0.21, -0.01, 0.41, -0.52, -0.85, -1.15, 0.81, -0.21, 0.63, -0.7, -1.22, -2.73, -0.5, -0.61, -0.74, 0.61, -2.03, 2.52, -0.16, -0.62, null], "z_comb": -7.06, "p": 0.06059697015149242, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.57, "v": 2.1, "rv_gaia": 1.76, "ew_limit_ma": 0.492}, {"star": "3188395880157173120", "z": [null, -4.85, 0.04, 5.13, 5.94, -0.88, -1.09, 0.75, -1.18, -6.13, 0.02, -1.41, -1.67, 0.72, -2.26, 1.03, -6.86, -1.59, -1.38, 2.12, -2.4, -4.23, null], "ew_ma": [null, -1.49, 0.02, 1.37, 2.86, -0.54, -0.66, 0.34, -0.65, -2.31, 0.01, -0.53, -0.8, 0.31, -1.02, 0.39, -2.27, -0.46, -0.47, 0.59, -0.64, -0.91, null], "z_comb": -4.81, "p": 0.06619669016549172, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9939, "null_sd": 3.82, "v": 77.55, "rv_gaia": 77.12, "ew_limit_ma": 0.802}, {"star": "3511640513332581504", "z": [null, 3.74, -2.63, -0.08, -0.14, 0.48, -2.94, -4.18, -2.05, 6.11, -11.17, 7.41, -1.59, 2.35, -6.47, -4.52, -5.43, -4.02, -22.03, -3.22, 6.06, 3.77, null], "ew_ma": [null, 1.25, -0.75, -0.02, -0.05, 0.14, -0.85, -1.09, -0.63, 1.84, -2.56, 2.43, -0.48, 0.48, -2.1, -1.23, -1.67, -1.18, -4.86, -0.86, 1.37, 0.62, null], "z_comb": -3.17, "p": 0.09459527023648817, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 3.86, "v": -12.25, "rv_gaia": -12.25, "ew_limit_ma": 0.582}, {"star": "4341501106288171008", "z": [null, -6.45, -0.36, 1.35, -1.75, -6.14, -6.25, 2.22, 1.72, 4.32, 0.08, -2.51, -4.01, 4.01, 1.26, 1.66, -7.01, -1.8, -1.27, 9.14, 2.16, -5.51, null], "ew_ma": [null, -2.63, -0.16, 0.62, -0.76, -2.69, -2.7, 1.21, 0.68, 2.33, 0.04, -1.09, -1.74, 1.65, 0.63, 0.82, -3.46, -0.46, -0.42, 2.61, 0.63, -1.94, null], "z_comb": -4.4, "p": 0.11954402279886006, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 4.12, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 1.499}, {"star": "4733035238430992768", "z": [null, 3.95, -3.09, -0.55, -0.14, -4.39, -5.63, -2.28, 3.6, 0.67, -1.95, -0.86, 0.81, -5.17, 1.96, -1.58, -1.85, 2.74, 0.13, 2.38, -1.17, 0.76, null], "ew_ma": [null, 0.52, -0.4, -0.07, -0.02, -0.65, -0.81, -0.35, 0.63, 0.14, -0.36, -0.16, 0.16, -0.75, 0.43, -0.33, -0.34, 0.36, 0.02, 0.27, -0.18, 0.12, null], "z_comb": -3.44, "p": 0.14854257287135644, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9981, "null_sd": 3.23, "v": 0.45, "rv_gaia": 0.66, "ew_limit_ma": 0.35}, {"star": "6912276699251278848", "z": [null, 2.63, -2.28, -1.78, -3.21, -3.22, -2.2, -2.56, -1.02, -0.99, -1.54, 1.32, 2.55, 1.65, -0.57, -4.26, 6.22, -0.44, 0.88, -2.38, 1.04, -0.12, null], "ew_ma": [null, 1.02, -0.84, -0.59, -0.94, -0.96, -0.65, -0.94, -0.27, -0.3, -0.49, 0.39, 0.68, 0.51, -0.19, -1.47, 1.92, -0.15, 0.25, -0.72, 0.34, -0.03, null], "z_comb": -2.47, "p": 0.14854257287135644, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.26, "v": -17.55, "rv_gaia": -17.49, "ew_limit_ma": 0.762}, {"star": "3482326708703712640", "z": [null, 1.02, -2.28, -7.64, 0.53, -0.7, -3.54, -4.68, 3.57, 5.49, -0.02, 2.84, 3.63, -1.62, 0.27, -2.0, 0.07, -0.75, -1.82, -0.72, 0.51, -1.54, null], "ew_ma": [null, 0.14, -0.41, -1.05, 0.08, -0.1, -0.52, -0.65, 0.55, 1.19, -0.0, 0.54, 0.91, -0.26, 0.07, -0.4, 0.01, -0.11, -0.38, -0.13, 0.09, -0.5, null], "z_comb": -2.36, "p": 0.14864256787160643, "n_lines": 18, "n_spectra": 1, "twin_r": 0.999, "null_sd": 3.07, "v": 7.55, "rv_gaia": 7.38, "ew_limit_ma": 0.381}, {"star": "4303294039306246656", "z": [null, -0.85, -2.66, 6.56, -4.06, -4.58, -1.26, -1.53, -7.39, 5.52, -5.11, 1.07, 5.97, 1.04, -0.78, -3.9, 0.62, -6.74, 0.43, -1.33, -0.14, 5.19, null], "ew_ma": [null, -0.14, -0.45, 1.12, -0.81, -1.07, -0.29, -0.38, -1.86, 1.49, -0.97, 0.21, 1.12, 0.17, -0.18, -0.9, 0.11, -1.12, 0.07, -0.22, -0.02, 0.74, null], "z_comb": -4.37, "p": 0.17534123293835308, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.96, "v": 0.1, "rv_gaia": -0.08, "ew_limit_ma": 0.582}, {"star": "2029433521248546304", "z": [null, -1.27, -7.04, 4.39, -2.19, 1.76, 4.64, -2.25, -0.57, -1.69, 1.9, -3.04, -1.72, 5.61, 1.53, 9.15, -8.79, -0.82, -3.3, 7.96, -3.75, -3.32, null], "ew_ma": [null, -0.51, -4.37, 1.72, -0.71, 1.13, 3.05, -1.33, -0.19, -0.9, 1.48, -1.68, -0.79, 2.19, 1.32, 7.85, -7.54, -0.35, -1.14, 1.66, -0.9, -0.88, null], "z_comb": -1.42, "p": 0.18624068796560173, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9962, "null_sd": 3.78, "v": -45.7, "rv_gaia": -45.34, "ew_limit_ma": 1.444}, {"star": "4315804351350378496", "z": [null, -0.58, 2.59, 4.97, -1.06, -1.57, -2.79, 3.87, -0.15, -7.21, -0.3, 1.45, -6.4, 3.41, 0.4, -1.15, -10.28, 2.14, 0.89, -0.99, -7.73, -3.11, null], "ew_ma": [null, -0.51, 1.95, 2.98, -0.8, -2.61, -4.64, 3.75, -0.1, -7.99, -0.26, 0.9, -6.78, 2.67, 0.4, -0.92, -5.24, 1.42, 0.63, -0.63, -3.28, -1.37, null], "z_comb": -4.4, "p": 0.19804009799510025, "n_lines": 18, "n_spectra": 4, "twin_r": 0.992, "null_sd": 3.94, "v": -100.25, "rv_gaia": -100.33, "ew_limit_ma": 2.581}, {"star": "6141742283401003264", "z": [null, -0.22, -1.25, 3.24, -5.85, -3.7, -2.33, 1.02, -1.58, 3.38, -3.48, 0.69, 2.07, -1.26, 1.33, -8.37, 1.09, -4.68, -2.93, -0.95, 4.86, -2.11, null], "ew_ma": [null, -0.09, -0.49, 1.18, -2.28, -1.57, -0.95, 0.43, -0.62, 1.77, -1.32, 0.24, 0.62, -0.39, 0.61, -3.69, 0.34, -1.47, -0.81, -0.29, 1.59, -0.58, null], "z_comb": -4.5, "p": 0.2006899655017249, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.94, "v": -14.0, "rv_gaia": -13.03, "ew_limit_ma": 1.303}, {"star": "5945941905576552064", "z": [null, -1.76, 2.2, -3.56, -0.62, 1.52, -1.3, -3.54, 1.89, 0.82, -1.17, 0.71, -0.13, 1.07, 0.51, -3.19, -2.12, 0.16, 2.9, -1.02, 2.9, -2.81, null], "ew_ma": [null, -0.46, 0.49, -0.71, -0.13, 0.31, -0.26, -0.72, 0.39, 0.19, -0.23, 0.16, -0.03, 0.27, 0.12, -0.77, -0.54, 0.03, 0.6, -0.18, 0.54, -0.43, null], "z_comb": -1.92, "p": 0.2016399180040998, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9979, "null_sd": 2.89, "v": -8.9, "rv_gaia": -9.54, "ew_limit_ma": 0.526}, {"star": "3812355328621651328", "z": [null, -2.25, 4.83, -2.96, -2.81, -5.4, -4.8, 2.7, 1.73, -9.56, 5.53, -1.93, -8.77, 1.97, 3.64, 10.67, -6.36, -1.91, 7.2, 1.68, 0.33, -0.03, -4.06], "ew_ma": [null, -3.89, 10.28, -4.93, -4.77, -9.51, -8.24, 4.9, 2.86, -15.33, 8.02, -3.21, -9.67, 1.36, 4.95, 11.6, -5.09, -2.22, 10.27, 2.0, 0.33, -0.02, -5.35], "z_comb": -2.34, "p": 0.23213839308034598, "n_lines": 19, "n_spectra": 4, "twin_r": 0.9868, "null_sd": 3.74, "v": 4.0, "rv_gaia": 4.18, "ew_limit_ma": 5.331}, {"star": "2382711653818308224", "z": [null, -0.32, -5.52, -0.27, 4.28, -2.38, 0.44, -1.01, -2.27, 2.53, 2.39, 0.19, -2.98, -5.8, -2.2, 2.51, -3.26, 1.75, -4.71, 8.33, 2.82, -2.29, null], "ew_ma": [null, -0.11, -2.63, -0.1, 1.85, -1.11, 0.21, -0.42, -0.94, 1.16, 1.05, 0.07, -1.26, -2.19, -0.94, 0.98, -1.37, 0.81, -1.82, 3.32, 1.01, -0.79, null], "z_comb": -1.94, "p": 0.23953802309884506, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9906, "null_sd": 3.31, "v": 5.8, "rv_gaia": 6.41, "ew_limit_ma": 1.033}, {"star": "3212075924646082176", "z": [null, 4.28, -1.51, 2.95, 1.34, -0.08, 0.63, -3.77, 5.14, 1.6, -6.72, 1.85, 11.93, -10.23, 1.02, -10.19, 3.18, -3.05, -20.49, 7.65, -2.8, 5.92, null], "ew_ma": [null, 1.28, -0.5, 0.75, 0.52, -0.03, 0.21, -1.24, 2.65, 0.69, -2.7, 0.97, 5.77, -3.48, 0.46, -3.66, 1.23, -0.86, -6.06, 2.02, -0.74, 1.18, null], "z_comb": -2.66, "p": 0.2432378381080946, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9938, "null_sd": 3.67, "v": 9.7, "rv_gaia": 10.31, "ew_limit_ma": 0.864}, {"star": "2860924621205256704", "z": [null, -1.84, 1.89, -1.19, 1.95, -3.52, -1.92, -1.26, -2.43, -4.12, 5.19, 1.08, -1.61, -3.6, 5.55, 2.26, -4.02, -1.72, 3.75, 3.05, -0.11, -5.61, null], "ew_ma": [null, -0.71, 0.68, -0.41, 0.77, -1.47, -0.77, -0.52, -1.25, -1.77, 1.92, 0.44, -0.53, -0.97, 2.27, 0.98, -1.28, -0.51, 1.13, 0.79, -0.03, -1.2, null], "z_comb": -3.23, "p": 0.2574371281435928, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9937, "null_sd": 3.6, "v": -6.75, "rv_gaia": -6.75, "ew_limit_ma": 1.115}, {"star": "4976894960284258048", "z": [null, 1.52, -3.97, -3.55, 0.3, -2.44, -2.18, 2.29, 1.72, 3.24, 1.71, 0.62, -2.7, 2.0, -3.17, -3.34, -0.68, 2.88, 3.68, -6.94, -0.1, -0.91, null], "ew_ma": [null, 0.36, -1.1, -0.9, 0.1, -0.71, -0.63, 0.64, 0.51, 1.03, 0.51, 0.21, -0.8, 0.5, -0.92, -0.93, -0.18, 0.6, 0.91, -1.49, -0.02, -0.14, null], "z_comb": -0.91, "p": 0.2658867056647168, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 3.95, "v": 5.75, "rv_gaia": 5.76, "ew_limit_ma": 0.791}, {"star": "3732539683617410816", "z": [null, -3.59, 0.83, 0.74, -3.82, 0.49, 0.43, -0.79, -1.08, 2.02, -0.31, 0.73, -8.55, -4.52, 2.97, 5.16, -3.07, -5.14, -10.27, 5.38, 2.34, -3.82, null], "ew_ma": [null, -1.05, 0.2, 0.16, -1.16, 0.16, 0.14, -0.22, -0.31, 0.61, -0.1, 0.23, -2.89, -1.09, 0.98, 1.95, -0.99, -1.06, -2.19, 1.03, 0.45, -0.65, null], "z_comb": -2.48, "p": 0.2735363231838408, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 3.57, "v": -27.0, "rv_gaia": -27.25, "ew_limit_ma": 0.808}, {"star": "3118434397663311360", "z": [null, -5.38, 2.33, 3.09, 1.47, 3.81, 3.01, -0.81, -9.26, -0.9, -2.19, -1.49, -1.37, 1.11, 1.74, 0.41, -0.69, -2.82, 0.31, -8.12, 3.49, -3.53, null], "ew_ma": [null, -1.16, 0.48, 0.72, 0.34, 1.16, 0.91, -0.23, -3.07, -0.37, -0.79, -0.49, -0.47, 0.38, 0.58, 0.15, -0.19, -0.58, 0.06, -1.61, 0.55, -0.56, null], "z_comb": -1.59, "p": 0.2782860856957152, "n_lines": 18, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.09, "v": 47.4, "rv_gaia": 47.33, "ew_limit_ma": 0.851}, {"star": "3265335443260522112", "z": [null, -2.92, 5.39, 6.65, -4.79, 2.55, -2.27, 1.28, -3.85, 0.5, -1.33, -0.31, 0.61, 6.84, -1.07, -1.26, -3.32, -4.57, 8.89, -15.49, -4.15, -2.88, null], "ew_ma": [null, -1.02, 2.54, 2.4, -1.7, 1.45, -1.28, 0.77, -3.23, 0.29, -0.56, -0.12, 0.35, 1.71, -0.37, -0.43, -1.04, -1.48, 3.46, -4.3, -1.05, -0.55, null], "z_comb": -2.56, "p": 0.2844857757112144, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9952, "null_sd": 4.52, "v": 20.25, "rv_gaia": 19.3, "ew_limit_ma": 1.268}, {"star": "6286606170175267840", "z": [null, -4.86, -2.35, -3.03, 1.81, -2.09, 0.13, -0.53, 5.12, 4.42, 0.97, -3.02, -11.42, -4.37, -2.12, 2.3, 0.53, 0.73, -0.38, 7.84, 5.92, -2.66, null], "ew_ma": [null, -1.72, -1.0, -1.21, 0.77, -1.32, 0.08, -0.28, 1.74, 2.51, 0.62, -1.2, -4.59, -1.35, -1.65, 1.83, 0.24, 0.21, -0.08, 1.51, 1.31, -0.52, null], "z_comb": -0.55, "p": 0.28738563071846407, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.68, "v": -23.0, "rv_gaia": -23.19, "ew_limit_ma": 1.339}, {"star": "6515731817739456256", "z": [null, 1.43, 2.11, 2.28, 0.42, -3.54, -3.05, -0.83, -1.29, 2.98, -1.76, 3.62, 5.32, 0.12, 3.21, -4.89, -4.25, -0.84, -7.88, -5.64, -1.97, -0.51, null], "ew_ma": [null, 0.25, 0.55, 0.41, 0.08, -0.52, -0.44, -0.12, -0.27, 0.56, -0.34, 0.77, 1.08, 0.03, 0.83, -1.28, -0.84, -0.13, -1.35, -1.09, -0.37, -0.07, null], "z_comb": -1.75, "p": 0.2945852707364632, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.43, "v": -0.3, "rv_gaia": -1.09, "ew_limit_ma": 0.555}, {"star": "5292834403845151488", "z": [null, -2.1, 3.38, 2.97, -2.63, -0.25, -6.54, 3.75, 3.64, -0.65, 5.49, 2.24, -5.05, -0.05, 1.29, -2.57, -2.33, -4.9, 6.15, -9.94, 0.45, -4.96, null], "ew_ma": [null, -0.87, 1.59, 1.13, -1.04, -0.1, -2.59, 1.51, 1.41, -0.27, 2.4, 1.1, -2.02, -0.02, 0.54, -1.1, -0.87, -2.24, 3.03, -4.12, 0.18, -1.82, null], "z_comb": -1.15, "p": 0.296035198240088, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9906, "null_sd": 3.71, "v": 18.6, "rv_gaia": 17.48, "ew_limit_ma": 1.221}, {"star": "2966790170574625408", "z": [null, 0.02, 3.19, 3.79, -2.27, 0.95, -1.44, -0.93, -7.15, -5.35, -1.28, -4.77, -9.75, 4.04, -1.56, -1.71, 3.4, 1.21, 4.52, -3.96, -2.78, 5.04, null], "ew_ma": [null, 0.0, 0.69, 0.66, -0.47, 0.2, -0.31, -0.17, -1.51, -1.22, -0.25, -1.12, -4.0, 0.74, -0.3, -0.33, 0.65, 0.18, 0.78, -0.69, -0.41, 0.86, null], "z_comb": -1.68, "p": 0.29958502074896254, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9974, "null_sd": 3.07, "v": 39.3, "rv_gaia": 37.83, "ew_limit_ma": 0.556}, {"star": "4623036865373793408", "z": [null, 0.2, 3.01, 2.17, -1.92, 0.45, -2.11, 1.33, -0.78, -2.39, -0.87, -1.44, 1.38, 0.79, 2.72, -1.03, 0.51, -0.1, 4.93, -4.35, -1.06, -2.48, null], "ew_ma": [null, 0.05, 0.81, 0.53, -0.45, 0.11, -0.52, 0.34, -0.2, -0.57, -0.19, -0.32, 0.38, 0.19, 0.67, -0.27, 0.13, -0.02, 1.31, -1.02, -0.24, -0.58, null], "z_comb": -0.8, "p": 0.3002349882505875, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 2.65, "v": 10.9, "rv_gaia": 10.71, "ew_limit_ma": 0.596}, {"star": "5902750168276592256", "z": [null, 2.28, -4.22, 0.0, -1.03, -0.07, 3.61, -0.92, -1.13, -4.05, -0.81, -2.0, 5.2, -0.28, 1.18, 0.5, 2.92, -0.67, -8.77, 20.36, -1.39, 0.98, null], "ew_ma": [null, 0.82, -1.8, 0.0, -0.39, -0.03, 1.55, -0.38, -0.51, -2.37, -0.32, -0.91, 2.34, -0.13, 0.53, 0.21, 1.16, -0.2, -2.26, 5.05, -0.44, 0.24, null], "z_comb": -1.14, "p": 0.3007849607519624, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.53, "v": -68.4, "rv_gaia": -68.78, "ew_limit_ma": 1.282}, {"star": "2423493369021649920", "z": [null, -4.78, -4.14, 2.15, 3.45, -8.28, -12.34, 2.3, 1.55, 8.73, 4.94, -0.14, -6.92, -2.23, 5.58, -2.59, -2.47, -2.58, 0.68, -3.92, 2.41, -0.98, null], "ew_ma": [null, -1.77, -1.63, 0.74, 1.27, -3.68, -5.53, 1.08, 0.82, 4.45, 2.4, -0.06, -2.5, -0.77, 2.86, -1.36, -1.0, -0.97, 0.26, -1.27, 0.89, -0.26, null], "z_comb": -2.02, "p": 0.31373431328433576, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.92, "v": -2.9, "rv_gaia": -2.55, "ew_limit_ma": 1.444}, {"star": "5609058277323483392", "z": [null, 1.18, 2.27, 4.12, -0.35, -0.29, -0.16, 4.21, -4.67, -1.13, -2.55, 0.02, -2.69, 4.81, -3.17, 1.47, -6.69, -4.55, -4.84, -4.69, -2.3, 2.62, null], "ew_ma": [null, 0.59, 1.47, 2.31, -0.21, -0.21, -0.11, 2.63, -3.14, -0.86, -2.38, 0.01, -1.74, 4.1, -1.96, 0.92, -4.35, -2.16, -2.23, -2.07, -0.84, 0.93, null], "z_comb": -1.44, "p": 0.3325333733313334, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.7, "v": 71.85, "rv_gaia": 72.42, "ew_limit_ma": 2.054}, {"star": "4906784051581971200", "z": [null, 5.01, -1.11, -0.15, -1.6, -2.54, 0.39, -0.62, -1.38, 3.31, -0.06, 0.09, 4.06, -9.41, -1.31, -2.11, -0.78, -3.71, -12.37, 10.34, 2.0, 5.01, null], "ew_ma": [null, 1.84, -0.37, -0.05, -0.56, -0.83, 0.13, -0.23, -0.59, 1.4, -0.03, 0.04, 1.24, -2.24, -0.47, -0.82, -0.24, -1.21, -3.36, 2.83, 0.63, 1.18, null], "z_comb": -2.13, "p": 0.33563321833908305, "n_lines": 18, "n_spectra": 1, "twin_r": 0.996, "null_sd": 3.55, "v": 2.9, "rv_gaia": 2.92, "ew_limit_ma": 1.059}, {"star": "2477891500647336704", "z": [null, -0.31, -0.89, -0.36, -3.15, 0.18, -0.43, 0.94, -1.41, 3.35, -1.54, -2.07, 1.06, 0.45, -0.72, -4.2, 3.46, -1.78, 1.75, -2.67, 4.15, 1.19, null], "ew_ma": [null, -0.1, -0.38, -0.12, -0.97, 0.06, -0.13, 0.32, -0.41, 1.17, -0.44, -0.65, 0.35, 0.15, -0.3, -1.78, 1.0, -0.48, 0.51, -0.74, 1.43, 0.34, null], "z_comb": -0.6, "p": 0.3481325933703315, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.11, "v": -14.75, "rv_gaia": -14.92, "ew_limit_ma": 0.962}, {"star": "6226694571859532800", "z": [null, 0.82, 3.28, 2.55, 1.95, -0.01, -4.64, 5.27, -1.52, -4.7, -1.11, -0.19, 6.71, 3.67, 3.63, 2.31, -4.35, -1.18, 1.83, 0.22, -9.46, 0.41, null], "ew_ma": [null, 0.33, 1.38, 0.91, 0.59, -0.0, -1.5, 1.43, -0.25, -1.06, -0.17, -0.03, 2.01, 0.77, 1.36, 0.85, -1.1, -0.23, 0.42, 0.05, -2.37, 0.06, null], "z_comb": -1.06, "p": 0.35243237838108094, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.41, "v": 4.8, "rv_gaia": 5.14, "ew_limit_ma": 0.891}, {"star": "4343066192373826176", "z": [null, -0.36, -1.73, -4.02, -1.71, -2.45, -2.19, -2.69, 3.75, 5.26, -4.35, 1.66, -0.97, 4.58, -2.81, 3.03, -3.17, -0.35, -4.84, 0.05, 0.63, 2.77, null], "ew_ma": [null, -0.17, -0.65, -2.0, -1.06, -1.14, -1.05, -0.81, 1.8, 2.63, -1.92, 1.12, -0.49, 1.45, -2.67, 2.68, -1.4, -0.22, -2.33, 0.02, 0.17, 0.52, null], "z_comb": -0.75, "p": 0.35978201089945505, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9741, "null_sd": 4.46, "v": -32.6, "rv_gaia": -30.57, "ew_limit_ma": 1.524}, {"star": "2750176827892427904", "z": [null, -0.12, 0.36, -4.49, 1.39, -0.75, -5.52, -1.29, 7.08, -0.78, -1.11, 0.16, -2.49, -4.05, -2.06, -2.18, 0.28, 4.19, -8.27, 3.14, 3.09, -0.76, null], "ew_ma": [null, -0.04, 0.12, -1.46, 0.53, -0.29, -2.13, -0.47, 2.93, -0.37, -0.5, 0.09, -1.28, -1.43, -1.46, -1.47, 0.1, 1.52, -3.12, 1.19, 1.4, -0.3, null], "z_comb": -1.4, "p": 0.36448177591120445, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.56, "v": -15.45, "rv_gaia": -14.72, "ew_limit_ma": 1.321}, {"star": "2964794041574370560", "z": [null, -5.73, 2.19, -1.71, 0.84, -0.18, 0.89, -0.14, -2.17, 1.59, 0.45, 1.34, 3.2, -2.84, -1.69, -0.8, 0.34, 0.88, -3.89, 1.6, 0.61, -0.69, null], "ew_ma": [null, -1.15, 0.53, -0.32, 0.16, -0.04, 0.18, -0.03, -0.56, 0.36, 0.13, 0.32, 0.93, -0.83, -0.37, -0.22, 0.11, 0.22, -1.3, 0.48, 0.15, -0.17, null], "z_comb": -1.55, "p": 0.36493175341232936, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.31, "v": 29.95, "rv_gaia": 29.0, "ew_limit_ma": 0.777}, {"star": "84625634714435968", "z": [null, -1.59, -1.34, -1.77, -0.78, 3.45, 1.37, 1.62, -1.72, -1.86, -1.68, -0.71, -4.28, -1.62, -1.31, 3.73, -1.84, 0.83, 0.21, 0.99, 1.47, 1.76, null], "ew_ma": [null, -0.96, -0.71, -0.98, -0.41, 1.93, 0.77, 0.96, -0.96, -1.06, -0.93, -0.41, -2.74, -1.08, -0.95, 2.84, -1.26, 0.49, 0.12, 0.58, 0.91, 0.89, null], "z_comb": -0.35, "p": 0.38438078096095196, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9924, "null_sd": 2.63, "v": 5.35, "rv_gaia": 4.34, "ew_limit_ma": 1.657}, {"star": "6770313530317154560", "z": [null, 0.31, -1.46, -3.84, 1.17, -4.73, -7.36, 1.92, 4.19, 4.68, 2.28, 0.35, -1.24, 3.54, -4.35, -2.97, 6.25, -1.72, 2.73, -5.91, 2.49, -4.19, null], "ew_ma": [null, 0.08, -0.31, -0.69, 0.26, -1.01, -1.54, 0.36, 0.93, 1.01, 0.43, 0.07, -0.27, 0.71, -1.25, -0.83, 1.45, -0.34, 0.52, -1.02, 0.52, -0.61, null], "z_comb": -0.73, "p": 0.4038298085095745, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 4.01, "v": -24.95, "rv_gaia": -24.7, "ew_limit_ma": 0.854}, {"star": "4934923028038871296", "z": [null, -0.32, 0.17, 0.94, -0.04, -0.76, -4.31, 0.13, 1.21, 0.7, -1.84, 3.2, 5.22, 0.31, 0.86, -7.07, 1.47, -0.71, 1.04, -12.47, -0.06, 0.15, null], "ew_ma": [null, -0.08, 0.04, 0.19, -0.01, -0.21, -1.19, 0.03, 0.37, 0.16, -0.46, 0.72, 1.01, 0.05, 0.22, -1.57, 0.27, -0.13, 0.17, -2.04, -0.01, 0.02, null], "z_comb": -1.42, "p": 0.40472976351182444, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.64, "v": 12.95, "rv_gaia": 11.9, "ew_limit_ma": 0.743}, {"star": "6163964031871884672", "z": [null, 2.28, -0.03, 3.19, -0.07, -0.62, 1.07, 2.17, -4.19, 1.27, -0.72, -0.19, 8.27, -2.43, -3.32, 1.82, -2.03, -4.25, -0.35, -3.85, 2.59, 5.03, null], "ew_ma": [null, 0.45, -0.01, 0.61, -0.01, -0.15, 0.27, 0.52, -1.03, 0.34, -0.18, -0.04, 1.77, -0.54, -0.85, 0.44, -0.43, -0.76, -0.05, -0.54, 0.38, 0.71, null], "z_comb": 0.34, "p": 0.4130293485325734, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.72, "v": 3.35, "rv_gaia": 3.36, "ew_limit_ma": 0.657}, {"star": "1244571953471006720", "z": [null, -2.85, -1.38, 0.57, -2.52, -4.38, -9.34, 3.07, -2.41, 2.37, 9.41, -4.45, -10.4, 4.45, 1.36, 3.46, -0.92, -5.37, 6.99, -12.92, -0.26, -4.18, null], "ew_ma": [null, -1.57, -0.81, 0.24, -1.73, -2.69, -5.73, 2.04, -1.27, 1.0, 4.67, -2.58, -4.64, 1.78, 0.74, 1.63, -0.38, -2.93, 3.36, -5.26, -0.13, -1.13, null], "z_comb": -3.07, "p": 0.41317934103294834, "n_lines": 18, "n_spectra": 4, "twin_r": 0.987, "null_sd": 4.3, "v": -16.2, "rv_gaia": -16.75, "ew_limit_ma": 1.89}, {"star": "5567900121118276736", "z": [null, 0.6, -1.9, -4.08, -0.31, 0.83, 0.43, 0.09, 5.55, -4.16, 0.74, 4.49, -0.41, -1.24, -4.12, 0.17, -2.01, 3.88, -8.94, 4.67, -3.28, -2.28, null], "ew_ma": [null, 0.13, -0.43, -0.68, -0.06, 0.18, 0.1, 0.02, 1.16, -0.91, 0.18, 1.13, -0.09, -0.26, -0.95, 0.04, -0.44, 0.76, -1.94, 0.95, -0.7, -0.43, null], "z_comb": -1.64, "p": 0.41662916854157295, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.55, "v": 29.1, "rv_gaia": 27.55, "ew_limit_ma": 0.677}, {"star": "5760701787150565888", "z": [null, 2.05, 2.7, -2.13, -0.04, 4.9, 1.51, -0.51, 0.75, -4.93, 2.95, -0.21, -11.82, -5.07, -2.2, -2.1, 3.6, 5.28, -3.01, -0.2, -5.69, 2.99, null], "ew_ma": [null, 0.88, 1.11, -0.64, -0.02, 2.03, 0.61, -0.2, 0.26, -1.57, 0.79, -0.07, -4.27, -1.26, -0.73, -0.67, 0.83, 1.6, -0.66, -0.04, -1.32, 0.52, null], "z_comb": 0.79, "p": 0.4221788910554472, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.7, "v": 33.4, "rv_gaia": 31.99, "ew_limit_ma": 1.145}, {"star": "4745373133284418816", "z": [null, 0.21, 6.67, 4.71, 5.17, 0.12, -3.71, -2.03, 1.39, -4.31, 0.85, 2.93, -2.85, -5.98, 0.81, -3.23, -4.65, 2.53, 4.48, -12.14, -5.42, 0.74, null], "ew_ma": [null, 0.03, 1.16, 0.72, 0.86, 0.03, -0.93, -0.55, 0.61, -0.94, 0.17, 0.44, -0.65, -0.96, 0.18, -0.79, -0.85, 0.61, 0.92, -2.12, -0.81, 0.09, null], "z_comb": -1.12, "p": 0.43972801359932, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.13, "v": 16.5, "rv_gaia": 16.94, "ew_limit_ma": 0.775}, {"star": "5559265690666326016", "z": [null, 1.26, -1.98, 3.43, 7.18, 1.11, 2.89, 4.85, -2.42, -2.43, 0.85, -3.32, -9.18, 4.34, -0.22, 2.77, -6.06, -4.66, -0.62, -0.87, 0.04, -0.56, null], "ew_ma": [null, 0.3, -0.74, 0.79, 2.67, 0.5, 1.31, 1.78, -1.72, -1.45, 0.52, -1.4, -4.42, 3.05, -0.1, 1.12, -3.03, -1.15, -0.15, -0.23, 0.01, -0.1, null], "z_comb": 1.36, "p": 0.44097795110244487, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9935, "null_sd": 4.39, "v": 89.85, "rv_gaia": 88.81, "ew_limit_ma": 1.347}, {"star": "5524982093479504384", "z": [null, -0.94, -0.52, -4.34, -0.73, 1.11, 0.14, -0.24, 0.89, -0.61, 2.64, -2.97, -3.94, 4.29, 1.97, -0.7, -5.96, 0.66, 4.4, 9.73, -0.93, -0.92, null], "ew_ma": [null, -0.21, -0.14, -1.24, -0.21, 0.42, 0.06, -0.1, 0.35, -0.25, 0.93, -0.96, -0.97, 0.97, 0.63, -0.23, -1.64, 0.13, 0.71, 1.28, -0.13, -0.14, null], "z_comb": -1.67, "p": 0.44837758112094395, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 4.11, "v": 9.5, "rv_gaia": 9.31, "ew_limit_ma": 1.135}, {"star": "5409121433672765824", "z": [null, 3.01, 0.27, -2.51, -2.48, 3.92, 6.46, -0.77, -5.89, -5.52, 1.66, -3.77, -1.32, 1.78, 0.83, 4.25, -1.9, -1.84, -8.53, 18.01, -2.13, 4.68, null], "ew_ma": [null, 0.65, 0.06, -0.4, -0.46, 0.71, 1.17, -0.15, -1.06, -1.14, 0.28, -0.81, -0.72, 0.39, 0.23, 1.19, -0.34, -0.39, -1.76, 3.61, -0.38, 0.7, null], "z_comb": 0.05, "p": 0.4488275586220689, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9968, "null_sd": 3.6, "v": 47.85, "rv_gaia": 47.45, "ew_limit_ma": 0.688}, {"star": "6128366415218881536", "z": [null, -1.36, 4.08, 0.44, 0.36, 5.64, 1.71, -2.69, -2.39, -7.01, -3.86, 4.36, 11.85, 3.6, -4.36, -9.59, 5.59, 0.94, -1.37, -5.74, -2.46, 2.13, null], "ew_ma": [null, -0.24, 1.37, 0.09, 0.08, 1.7, 0.52, -0.76, -0.84, -1.53, -0.69, 0.71, 3.72, 0.65, -0.95, -1.89, 1.06, 0.22, -0.24, -1.21, -0.5, 0.33, null], "z_comb": -1.25, "p": 0.46027698615069246, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 3.79, "v": 31.05, "rv_gaia": 30.47, "ew_limit_ma": 0.88}, {"star": "5569858798004394624", "z": [null, -1.23, -1.99, 2.77, 0.6, 0.6, 3.43, 0.6, -2.44, -0.84, 5.78, -3.94, -3.3, 4.09, 1.02, 5.83, -7.79, -5.24, 5.41, 1.32, 0.41, -0.65, null], "ew_ma": [null, -0.27, -0.63, 0.7, 0.14, 0.19, 1.08, 0.15, -1.51, -0.26, 1.25, -0.77, -2.2, 0.86, 0.33, 1.73, -1.57, -1.17, 0.9, 0.25, 0.08, -0.13, null], "z_comb": 0.12, "p": 0.463976801159942, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9952, "null_sd": 3.57, "v": 56.9, "rv_gaia": 56.33, "ew_limit_ma": 1.014}, {"star": "5586381090520538880", "z": [null, 1.21, 2.95, -0.88, -0.91, 1.01, -0.56, -1.08, 2.64, -5.96, 2.6, 3.6, -3.44, -9.41, -1.36, -4.54, 3.76, 8.29, -1.16, -3.74, -0.77, 0.61, null], "ew_ma": [null, 0.24, 0.57, -0.17, -0.16, 0.19, -0.1, -0.21, 0.57, -1.42, 0.44, 0.8, -0.71, -1.68, -0.27, -0.83, 0.6, 1.44, -0.21, -0.62, -0.13, 0.1, null], "z_comb": 0.3, "p": 0.4750262486875656, "n_lines": 18, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.0, "v": 9.6, "rv_gaia": 9.18, "ew_limit_ma": 0.582}, {"star": "6564091190988411520", "z": [null, -1.74, -2.23, -2.95, 0.71, -4.35, -3.62, 0.39, 3.76, 5.25, 0.71, -0.97, -6.99, 0.96, -0.12, 1.78, -0.81, -0.13, 0.41, -0.04, 4.87, -1.54, null], "ew_ma": [null, -0.32, -0.48, -0.54, 0.15, -1.05, -0.9, 0.09, 0.74, 1.39, 0.15, -0.2, -1.6, 0.19, -0.03, 0.54, -0.21, -0.03, 0.15, -0.01, 1.03, -0.54, null], "z_comb": 0.22, "p": 0.4793760311984401, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 2.76, "v": -7.05, "rv_gaia": -7.55, "ew_limit_ma": 0.639}, {"star": "3750995604764854400", "z": [null, -5.3, -4.19, -2.44, 0.66, -3.08, -1.04, 0.21, 0.01, 3.54, 2.1, -0.34, -8.79, 1.18, -0.14, 6.53, -1.45, -0.77, 3.03, -2.71, 2.79, -2.13, null], "ew_ma": [null, -1.04, -0.96, -0.37, 0.1, -0.63, -0.22, 0.04, 0.0, 0.75, 0.31, -0.05, -2.03, 0.18, -0.06, 3.27, -0.28, -0.16, 0.42, -0.45, 0.55, -0.31, null], "z_comb": -0.64, "p": 0.4807759612019399, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.63, "v": -17.6, "rv_gaia": -17.93, "ew_limit_ma": 0.74}, {"star": "3900151160301345152", "z": [null, 1.41, -2.08, -3.2, 0.97, -0.19, -0.1, -3.4, -0.38, 0.31, 1.52, -0.15, 5.7, -1.42, -0.72, -0.36, 3.27, 1.21, 0.97, -0.31, 2.09, 0.99, null], "ew_ma": [null, 2.64, -4.57, -7.61, 1.91, -0.44, -0.22, -7.16, -0.73, 0.62, 2.66, -0.25, 12.34, -3.33, -1.59, -0.8, 7.03, 2.54, 2.6, -0.89, 4.67, 2.78, null], "z_comb": 0.13, "p": 0.4834258287085646, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9284, "null_sd": 1.99, "v": 4.05, "rv_gaia": 4.92, "ew_limit_ma": 4.887}, {"star": "6133033601555979648", "z": [null, -0.9, 3.33, 5.31, -1.32, 2.07, -1.14, -3.02, -0.5, -2.1, -1.71, 1.89, 3.62, 1.71, 0.97, -8.96, -3.63, -0.79, -0.81, -2.15, -1.27, 7.73, null], "ew_ma": [null, -0.3, 1.18, 1.58, -0.39, 1.08, -0.62, -1.43, -0.46, -0.8, -0.54, 0.52, 1.36, 0.39, 0.33, -2.44, -1.0, -0.24, -0.24, -0.62, -0.26, 1.43, null], "z_comb": -0.58, "p": 0.48672566371681414, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 3.99, "v": 18.4, "rv_gaia": 18.05, "ew_limit_ma": 1.361}, {"star": "5553647083168192512", "z": [null, 0.15, -4.06, -2.1, -4.13, 0.35, -2.23, 7.34, 0.97, 1.32, 6.09, -1.26, -6.38, 4.14, 2.72, 2.28, -1.84, 0.2, 13.49, -14.86, -3.94, -1.87, null], "ew_ma": [null, 0.04, -1.64, -0.56, -1.29, 0.1, -0.64, 1.72, 0.5, 0.51, 1.76, -0.45, -2.41, 1.34, 1.36, 1.02, -0.44, 0.04, 2.65, -2.69, -0.67, -0.33, null], "z_comb": 0.96, "p": 0.4870256487175641, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9937, "null_sd": 3.91, "v": 60.55, "rv_gaia": 59.67, "ew_limit_ma": 1.19}, {"star": "4657193606465368704", "z": [null, 2.06, -0.77, -3.85, -7.62, -0.72, 3.16, -0.26, 3.08, -2.43, 6.34, -6.16, -0.45, 2.94, 0.66, 14.13, -17.46, -9.15, 2.19, 13.01, 0.16, 1.65, null], "ew_ma": [null, 1.2, -0.6, -2.61, -4.17, -0.52, 2.22, -0.16, 1.96, -1.53, 4.28, -2.99, -0.19, 0.96, 0.32, 6.55, -5.84, -3.79, 0.65, 3.26, 0.04, 0.35, null], "z_comb": -3.41, "p": 0.4870756462176891, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9912, "null_sd": 4.24, "v": 14.75, "rv_gaia": 13.99, "ew_limit_ma": 2.106}, {"star": "3482326708703712896", "z": [null, 1.37, -0.59, 3.26, -1.02, -3.19, 1.07, 1.72, -1.85, -1.65, -3.43, -0.14, 6.78, -4.52, -0.37, -2.03, -0.41, 0.79, -8.74, 3.94, 1.29, 2.46, null], "ew_ma": [null, 0.22, -0.1, 0.46, -0.15, -0.45, 0.15, 0.24, -0.28, -0.31, -0.51, -0.02, 1.41, -0.74, -0.08, -0.37, -0.08, 0.14, -1.74, 0.68, 0.28, 0.51, null], "z_comb": -1.68, "p": 0.48827558622068895, "n_lines": 18, "n_spectra": 1, "twin_r": 0.999, "null_sd": 2.82, "v": 5.45, "rv_gaia": 5.62, "ew_limit_ma": 0.471}, {"star": "6150200345317455232", "z": [null, -2.94, 2.04, -0.83, 3.37, -2.0, -5.79, 2.15, 2.65, 0.48, 0.96, -0.59, -10.72, -4.79, 1.9, 4.58, -5.18, 0.69, 0.98, -0.73, 0.85, 2.83, null], "ew_ma": [null, -0.93, 0.55, -0.24, 0.86, -0.64, -1.89, 0.71, 1.17, 0.15, 0.28, -0.16, -2.3, -1.11, 0.59, 1.31, -1.16, 0.18, 0.24, -0.19, 0.21, 0.6, null], "z_comb": 0.2, "p": 0.4897255137243138, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.7, "v": -6.75, "rv_gaia": -7.11, "ew_limit_ma": 1.131}, {"star": "6382933589314905472", "z": [null, 0.94, 3.64, -2.93, -5.12, 0.55, 2.23, 6.65, -10.3, 0.38, 1.18, -0.0, 10.46, -3.43, -0.29, 3.86, 4.76, -6.02, 0.21, 11.53, -2.57, 4.57, null], "ew_ma": [null, 0.39, 2.1, -1.44, -3.02, 0.34, 1.34, 4.19, -8.8, 0.49, 1.16, -0.0, 8.34, -2.4, -0.26, 3.44, 3.43, -2.0, 0.09, 3.28, -0.99, 1.14, null], "z_comb": -0.43, "p": 0.4911254437278136, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9788, "null_sd": 4.69, "v": 32.8, "rv_gaia": 32.35, "ew_limit_ma": 2.371}, {"star": "6161806515182527616", "z": [null, -0.87, -1.2, -2.2, 2.63, -0.89, 2.53, 4.0, -0.01, -4.52, -0.96, -0.57, -8.6, -2.39, 2.69, 0.9, -1.33, 4.47, 3.02, -4.2, -0.46, -1.9, null], "ew_ma": [null, -0.26, -0.52, -0.61, 0.93, -0.31, 0.86, 1.0, -0.0, -1.28, -0.28, -0.18, -3.28, -0.87, 1.08, 0.34, -0.33, 0.92, 0.94, -1.11, -0.09, -0.55, null], "z_comb": -0.0, "p": 0.49902504874756265, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.27, "v": 81.9, "rv_gaia": 82.23, "ew_limit_ma": 1.158}, {"star": "2899947933845777920", "z": [null, 2.73, -0.4, 8.83, -3.05, 2.07, 4.63, 0.53, 0.16, -4.91, -5.8, -6.0, -1.24, 2.57, 0.04, -0.49, 1.24, -2.6, 3.61, 7.53, -2.55, 1.56, null], "ew_ma": [null, 0.51, -0.08, 1.43, -0.63, 0.5, 1.12, 0.1, 0.04, -0.93, -1.18, -1.27, -0.33, 0.55, 0.01, -0.11, 0.25, -0.42, 0.73, 1.38, -0.35, 0.24, null], "z_comb": -0.56, "p": 0.5041247937603119, "n_lines": 18, "n_spectra": 1, "twin_r": 0.997, "null_sd": 3.28, "v": 37.85, "rv_gaia": 35.78, "ew_limit_ma": 0.651}, {"star": "6764687466752221824", "z": [null, -1.11, -2.02, -3.46, -2.26, -0.74, 1.61, 0.74, 1.38, 4.62, 1.76, -3.62, 5.42, 4.44, -1.91, 9.24, -4.81, -8.4, 3.19, 3.28, 5.17, 4.02, null], "ew_ma": [null, -0.4, -0.86, -1.13, -0.76, -0.29, 0.63, 0.28, 0.54, 2.15, 0.73, -1.26, 1.76, 1.44, -1.34, 6.96, -2.25, -2.5, 1.41, 0.99, 1.55, 1.21, null], "z_comb": 1.3, "p": 0.5080245987700615, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.71, "v": -42.7, "rv_gaia": -42.55, "ew_limit_ma": 1.707}, {"star": "6577318075351824512", "z": [null, -2.15, 1.0, -0.97, 2.77, 1.57, 4.12, -1.53, 0.03, -0.57, 1.9, -2.72, -2.43, -0.55, 2.87, 3.91, -3.72, -0.37, -1.15, 5.01, 0.27, -5.68, null], "ew_ma": [null, -0.61, 0.29, -0.24, 0.73, 0.46, 1.22, -0.47, 0.01, -0.16, 0.48, -0.76, -0.52, -0.13, 0.74, 0.98, -0.82, -0.09, -0.27, 1.14, 0.07, -1.51, null], "z_comb": -0.12, "p": 0.5426728663566822, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 2.81, "v": 12.2, "rv_gaia": 11.95, "ew_limit_ma": 0.862}, {"star": "5155981730587168384", "z": [null, 6.39, 0.14, 0.48, 0.79, -2.69, -1.29, 3.11, -3.15, 12.04, -7.02, 0.99, 8.2, 4.21, 1.86, -2.67, -0.16, -8.21, -4.74, -1.54, -0.45, -1.42, null], "ew_ma": [null, 1.17, 0.03, 0.1, 0.23, -0.75, -0.36, 1.13, -0.84, 3.78, -1.66, 0.33, 4.43, 1.4, 0.8, -1.01, -0.05, -1.55, -0.97, -0.3, -0.08, -0.18, null], "z_comb": 0.39, "p": 0.5642217889105545, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9954, "null_sd": 4.26, "v": 7.2, "rv_gaia": 7.01, "ew_limit_ma": 1.19}, {"star": "4925088171405735680", "z": [null, -3.76, 1.07, 2.69, 2.03, 2.04, 3.39, 2.86, -0.74, -2.73, -4.83, 2.37, 4.0, 0.15, -2.43, 3.51, 0.94, -1.86, 13.79, -3.05, -2.73, -0.85, null], "ew_ma": [null, -0.92, 0.31, 0.44, 0.57, 0.52, 0.85, 0.55, -0.36, -0.59, -1.0, 0.7, 1.61, 0.04, -0.47, 0.68, 0.19, -0.37, 2.62, -0.56, -0.47, -0.13, null], "z_comb": 0.09, "p": 0.5825708714564272, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 4.09, "v": 36.45, "rv_gaia": 36.66, "ew_limit_ma": 0.827}, {"star": "3584074380866605440", "z": [null, -1.28, 2.93, -2.34, 0.56, 4.98, 6.11, 0.12, 0.99, -4.0, 2.56, 0.73, -1.58, 2.89, -1.45, 4.82, -5.6, -3.39, 0.69, -1.7, -8.18, 2.44, 1.29], "ew_ma": [null, -0.28, 0.73, -0.54, 0.14, 1.4, 1.71, 0.03, 0.29, -1.16, 0.54, 0.17, -0.47, 0.61, -0.42, 1.38, -1.11, -0.69, 0.22, -0.4, -1.57, 0.72, 0.21], "z_comb": 0.69, "p": 0.5851707414629268, "n_lines": 19, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.89, "v": 20.6, "rv_gaia": 19.78, "ew_limit_ma": 0.886}, {"star": "5916947921402171264", "z": [null, -0.08, -0.56, -2.01, 4.47, 0.6, -0.09, -0.91, 0.88, 1.31, 0.36, -2.49, -2.9, -3.67, 1.36, -1.33, -2.93, -1.75, -3.81, 1.51, 3.17, 1.95, null], "ew_ma": [null, -0.03, -0.27, -0.81, 2.29, 0.27, -0.04, -0.36, 0.39, 0.55, 0.19, -1.03, -1.46, -1.6, 0.59, -0.55, -1.0, -0.43, -1.49, 0.51, 1.04, 0.66, null], "z_comb": -0.4, "p": 0.624268786560672, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.96, "v": 99.0, "rv_gaia": 99.72, "ew_limit_ma": 2.02}, {"star": "2898239468873596800", "z": [null, 1.13, 0.75, 1.13, 0.31, 0.63, -0.89, 4.47, -2.86, 1.52, 1.52, -1.01, 3.34, 8.94, 0.04, 2.43, 1.94, -4.32, 11.6, -4.67, -1.87, -1.75, null], "ew_ma": [null, 0.18, 0.13, 0.19, 0.05, 0.12, -0.16, 0.82, -0.68, 0.38, 0.31, -0.21, 0.69, 1.63, 0.01, 0.53, 0.41, -0.7, 1.84, -0.72, -0.3, -0.26, null], "z_comb": 2.72, "p": 0.6340682965851707, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.13, "v": -3.5, "rv_gaia": -3.85, "ew_limit_ma": 0.711}, {"star": "4675955810263106432", "z": [null, -2.69, 5.6, 1.56, -4.66, 3.83, 2.17, 2.35, -3.77, 1.42, -1.7, 4.37, 1.0, 6.58, -3.47, 1.14, 0.81, -4.55, 8.63, -8.86, -4.01, 1.3, null], "ew_ma": [null, -0.93, 2.59, 0.54, -2.15, 1.91, 1.08, 1.19, -1.7, 0.46, -0.64, 1.58, 0.5, 2.26, -1.1, 0.32, 0.33, -1.22, 1.96, -1.97, -0.97, 0.28, null], "z_comb": 1.3, "p": 0.6463176841157942, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 3.52, "v": 31.8, "rv_gaia": 28.42, "ew_limit_ma": 1.458}, {"star": "4722135642226902656", "z": [null, 1.29, -3.9, -3.97, -0.95, -2.65, -0.04, 1.35, 0.98, 1.43, 1.95, -2.1, 2.04, -0.17, 2.5, -0.9, 4.61, 1.71, -0.8, 8.21, -2.07, 0.52, null], "ew_ma": [null, 0.28, -0.84, -0.82, -0.2, -0.55, -0.01, 0.29, 0.22, 0.38, 0.38, -0.55, 0.39, -0.03, 0.63, -0.2, 0.89, 0.31, -0.16, 1.38, -0.4, 0.08, null], "z_comb": 0.07, "p": 0.6466676666166692, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.62, "v": 12.2, "rv_gaia": 11.94, "ew_limit_ma": 0.811}, {"star": "2423292879948720000", "z": [null, -5.24, 2.19, -1.19, 0.02, 3.45, 8.38, 0.54, -4.78, 1.77, 1.32, 0.28, 0.31, 2.13, -4.47, 6.31, -4.19, -3.38, 0.29, -0.68, -0.12, -0.9, null], "ew_ma": [null, -0.88, 0.51, -0.2, 0.0, 0.76, 1.91, 0.12, -1.19, 0.33, 0.19, 0.05, 0.11, 0.37, -0.83, 1.25, -0.85, -0.73, 0.05, -0.13, -0.02, -0.15, null], "z_comb": 0.36, "p": 0.6646667666616669, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.54, "v": 29.05, "rv_gaia": 28.92, "ew_limit_ma": 0.818}, {"star": "2430102808294101760", "z": [null, 3.59, -4.71, -0.7, 2.07, -4.36, -0.03, 0.76, 2.61, 0.68, 1.14, 0.0, 0.27, 1.35, 4.13, 2.17, 4.75, -2.86, 6.28, -5.0, 2.93, -7.01, null], "ew_ma": [null, 0.65, -1.03, -0.1, 0.43, -0.85, -0.01, 0.16, 0.5, 0.13, 0.16, 0.0, 0.06, 0.21, 0.87, 0.36, 0.67, -0.48, 0.98, -0.66, 0.44, -0.9, null], "z_comb": 1.53, "p": 0.6653167341632918, "n_lines": 18, "n_spectra": 4, "twin_r": 0.998, "null_sd": 3.51, "v": -9.8, "rv_gaia": -10.12, "ew_limit_ma": 0.772}, {"star": "6963761190199424", "z": [null, 1.08, -1.4, -3.83, 3.07, 2.44, 5.29, -2.76, 4.06, -0.43, 3.7, -0.01, 3.4, -9.85, 2.32, 2.01, 2.3, 6.96, -5.39, 8.93, -2.08, -0.82, null], "ew_ma": [null, 0.22, -0.27, -0.61, 0.57, 0.49, 1.06, -0.57, 1.03, -0.1, 0.79, -0.0, 0.74, -1.48, 0.45, 0.4, 0.36, 1.2, -0.91, 1.39, -0.34, -0.11, null], "z_comb": 2.82, "p": 0.7029148542572872, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.77, "v": 25.7, "rv_gaia": 24.71, "ew_limit_ma": 0.913}, {"star": "3575733210781078016", "z": [null, 1.7, 2.25, 2.05, -1.4, 1.74, -4.62, 1.87, 0.38, 1.73, -1.24, 3.24, 1.24, -1.32, 4.18, -3.12, 6.68, 1.87, 4.22, -2.42, -6.68, 2.67, null], "ew_ma": [null, 1.21, 1.73, 1.82, -1.1, 1.32, -3.43, 1.2, 0.13, 0.52, -0.31, 0.82, 0.33, -0.29, 1.55, -1.12, 2.07, 0.5, 1.12, -0.62, -1.77, 0.64, null], "z_comb": 2.78, "p": 0.7186640667966602, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9921, "null_sd": 3.91, "v": 0.8, "rv_gaia": -0.41, "ew_limit_ma": 2.242}, {"star": "3282511876473223552", "z": [null, 0.03, -5.02, -2.66, 3.05, -2.32, -1.71, -1.55, 3.22, -5.8, 5.26, -1.3, -13.85, -2.58, -0.21, 19.65, 2.65, 1.75, 8.41, -7.49, 1.49, -5.58, null], "ew_ma": [null, 0.01, -2.91, -0.92, 1.39, -1.16, -0.86, -0.65, 1.65, -3.98, 2.42, -0.68, -5.41, -0.73, -0.18, 11.29, 1.25, 0.56, 2.82, -1.67, 0.35, -1.02, null], "z_comb": 2.25, "p": 0.7244137793110345, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9924, "null_sd": 4.08, "v": -46.3, "rv_gaia": -46.55, "ew_limit_ma": 2.289}, {"star": "5951165616611763456", "z": [null, -2.09, 5.47, -0.75, -1.52, 3.4, 6.2, 1.52, -3.45, -4.55, -3.08, 5.12, -0.41, 0.1, -1.79, -1.36, 7.79, 2.22, 5.96, -7.81, -4.29, -0.49, 0.16], "ew_ma": [null, -0.76, 2.66, -0.25, -0.63, 1.59, 2.82, 0.67, -1.59, -2.54, -1.61, 2.18, -0.22, 0.05, -0.96, -0.81, 4.58, 0.84, 1.8, -1.9, -1.22, -0.12, 0.04], "z_comb": 1.86, "p": 0.7263636818159092, "n_lines": 19, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.01, "v": 25.75, "rv_gaia": 25.96, "ew_limit_ma": 1.551}, {"star": "1787990525934491776", "z": [null, 0.31, -3.69, -1.77, -3.72, -2.93, -2.26, -0.12, 4.58, 1.34, 6.04, 3.91, 9.67, -7.17, -1.22, 1.66, 3.94, 4.55, -3.32, -0.52, 1.04, -0.56, null], "ew_ma": [null, 0.17, -2.03, -1.03, -2.02, -1.74, -1.34, -0.08, 2.54, 0.84, 4.0, 2.39, 7.42, -4.32, -0.91, 1.24, 2.35, 2.93, -2.34, -0.38, 0.73, -0.42, null], "z_comb": 1.14, "p": 0.7334133293335333, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9877, "null_sd": 3.5, "v": -44.35, "rv_gaia": -44.33, "ew_limit_ma": 2.678}, {"star": "5528591961953902720", "z": [null, -2.67, -3.63, 6.95, 1.08, -3.73, -5.97, 2.61, -0.73, 4.3, -0.36, -2.88, 4.46, 7.11, 3.37, 4.99, -0.55, -1.44, 2.77, 0.78, 1.01, 0.8, null], "ew_ma": [null, -0.39, -0.66, 0.91, 0.16, -0.78, -1.24, 0.62, -0.22, 0.6, -0.05, -0.41, 0.71, 0.85, 0.45, 0.66, -0.07, -0.26, 0.4, 0.1, 0.13, 0.1, null], "z_comb": 2.62, "p": 0.7426128693565321, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.38, "v": -1.5, "rv_gaia": -1.8, "ew_limit_ma": 0.655}, {"star": "6062166950467100032", "z": [null, -1.2, -1.5, -3.17, -2.1, -0.79, 0.38, -0.23, -0.94, -6.98, 5.73, -4.09, -1.5, 2.55, 1.73, 9.14, -1.35, 5.0, 10.24, 8.99, 2.04, -0.99, null], "ew_ma": [null, -0.23, -0.4, -0.61, -0.64, -0.19, 0.09, -0.05, -0.32, -2.0, 1.48, -2.08, -1.01, 0.92, 0.62, 2.95, -0.41, 1.17, 2.0, 1.58, 0.46, -0.18, null], "z_comb": 1.13, "p": 0.752062396880156, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9938, "null_sd": 4.6, "v": -64.15, "rv_gaia": -63.57, "ew_limit_ma": 1.466}, {"star": "4381250547575102208", "z": [null, 1.14, 5.53, 1.54, -3.95, 3.38, 2.93, -1.75, -2.18, -10.09, 0.67, 0.21, -10.55, -0.34, 2.68, 0.18, 4.97, 4.19, 3.06, 1.69, 0.87, 4.24, null], "ew_ma": [null, 0.62, 3.44, 0.79, -2.32, 1.67, 1.48, -1.03, -1.31, -7.28, 0.32, 0.14, -11.07, -0.19, 2.25, 0.15, 2.88, 2.74, 1.42, 0.73, 0.46, 2.0, null], "z_comb": 3.54, "p": 0.76011199440028, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9907, "null_sd": 3.95, "v": 45.05, "rv_gaia": 44.84, "ew_limit_ma": 3.108}, {"star": "5540006949934104448", "z": [null, 0.77, 5.22, -1.54, 0.34, -0.37, 0.18, 1.51, -0.14, -2.85, -0.09, -0.7, -5.61, 1.25, -1.17, 2.11, 0.28, 0.71, 0.43, -0.84, 2.43, -1.03, null], "ew_ma": [null, 1.14, 7.71, -2.09, 0.42, -0.52, 0.25, 2.17, -0.2, -3.37, -0.12, -0.78, -10.27, 1.99, -1.73, 3.03, 0.42, 1.17, 0.62, -1.38, 4.1, -1.64, null], "z_comb": 1.61, "p": 0.7769611519424029, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9836, "null_sd": 2.09, "v": 49.25, "rv_gaia": 49.31, "ew_limit_ma": 4.417}, {"star": "2473608009504466688", "z": [null, 7.18, -7.2, -1.85, -0.43, -1.96, 2.59, -3.9, 4.36, 0.85, -1.81, 2.52, 11.6, -4.04, 2.89, -4.97, 4.6, 1.01, -11.15, 14.05, 0.14, 3.75, null], "ew_ma": [null, 2.05, -1.83, -0.45, -0.12, -0.5, 0.65, -1.15, 1.48, 0.27, -0.5, 0.77, 3.65, -0.87, 0.88, -1.53, 1.13, 0.25, -2.92, 3.4, 0.04, 0.67, null], "z_comb": 1.02, "p": 0.7798110094495275, "n_lines": 18, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.17, "v": 9.25, "rv_gaia": 8.21, "ew_limit_ma": 1.48}, {"star": "2531792756096759296", "z": [null, -2.91, -1.88, -3.71, -0.54, -1.72, -1.51, 0.99, -0.77, 2.95, 3.21, -1.36, -1.27, 4.77, 4.09, 4.32, 6.99, 5.12, 7.72, -0.02, -0.09, -3.2, null], "ew_ma": [null, -0.37, -0.27, -0.45, -0.07, -0.24, -0.2, 0.15, -0.15, 0.4, 0.38, -0.16, -0.18, 0.53, 0.58, 0.67, 1.07, 0.81, 2.27, -0.0, -0.01, -0.36, null], "z_comb": 3.83, "p": 0.7805609719514024, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 4.0, "v": 5.4, "rv_gaia": 5.96, "ew_limit_ma": 0.686}, {"star": "3250489115709122560", "z": [null, 2.52, -3.69, -0.8, 4.43, 0.83, -3.84, -2.3, 4.95, -6.36, 7.67, -3.56, -0.31, -1.38, -1.02, 11.16, -1.34, 6.77, 6.36, 2.02, -1.08, -3.45, null], "ew_ma": [null, 0.48, -0.64, -0.13, 0.93, 0.13, -0.63, -0.39, 1.14, -1.39, 1.46, -0.71, -0.06, -0.25, -0.24, 2.22, -0.25, 1.25, 1.37, 0.37, -0.22, -0.77, null], "z_comb": 2.34, "p": 0.7811609419529023, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.19, "v": 120.55, "rv_gaia": 120.58, "ew_limit_ma": 0.78}, {"star": "4912580642524184960", "z": [null, -1.53, 3.99, 1.29, -0.77, -0.14, -0.48, 2.25, 0.17, -3.15, 1.55, 3.24, 4.39, 3.47, -4.32, -0.47, 0.93, 5.11, 4.08, -3.63, -0.7, 0.62, null], "ew_ma": [null, -0.2, 0.62, 0.15, -0.11, -0.02, -0.06, 0.3, 0.02, -0.41, 0.17, 0.51, 0.65, 0.45, -0.63, -0.07, 0.13, 0.68, 0.54, -0.48, -0.09, 0.08, null], "z_comb": 2.62, "p": 0.7818109094545272, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9982, "null_sd": 2.92, "v": 28.45, "rv_gaia": 27.64, "ew_limit_ma": 0.492}, {"star": "3639760521643499776", "z": [null, 1.44, -2.0, 3.06, 2.16, -3.28, 1.73, 2.94, 0.79, 5.52, 3.11, -1.69, -0.04, 1.24, -0.09, -2.68, -1.17, -1.71, -4.09, 2.2, 1.48, 1.09, null], "ew_ma": [null, 0.74, -0.96, 1.55, 1.17, -1.61, 0.84, 1.35, 0.35, 2.54, 1.27, -0.79, -0.02, 0.64, -0.05, -1.42, -0.63, -0.94, -2.43, 1.29, 0.91, 0.67, null], "z_comb": 2.7, "p": 0.8066596670166492, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9961, "null_sd": 2.5, "v": -11.5, "rv_gaia": -12.39, "ew_limit_ma": 1.951}, {"star": "6018047019138644480", "z": [null, -0.54, -1.0, -2.99, -0.41, 0.26, 8.1, -2.23, -0.43, -2.05, 4.2, 0.07, -2.0, 0.53, 3.55, 4.25, -3.5, 0.81, 0.81, 5.11, -0.18, -1.13, null], "ew_ma": [null, -0.2, -0.38, -1.0, -0.15, 0.11, 3.36, -0.95, -0.16, -0.77, 1.39, 0.02, -0.69, 0.17, 1.41, 1.68, -1.23, 0.31, 0.31, 1.88, -0.07, -0.44, null], "z_comb": 1.76, "p": 0.8100094995250238, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 3.06, "v": 12.85, "rv_gaia": 12.85, "ew_limit_ma": 1.633}, {"star": "4768170579173552896", "z": [null, -0.81, -1.16, 0.52, 3.29, -0.98, -2.79, -0.33, -2.18, 5.88, -3.38, 3.82, 3.27, 2.07, -1.29, -6.61, 7.04, 0.35, -2.93, -3.56, 3.64, 4.52, null], "ew_ma": [null, -0.19, -0.31, 0.1, 0.72, -0.24, -0.7, -0.09, -0.58, 1.61, -0.99, 1.03, 0.6, 0.35, -0.33, -1.6, 1.25, 0.06, -0.58, -0.7, 0.77, 0.77, null], "z_comb": 2.97, "p": 0.8164591770411479, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 3.64, "v": -5.25, "rv_gaia": -5.53, "ew_limit_ma": 1.114}, {"star": "5381537023379295232", "z": [null, -0.87, 0.61, -6.48, 1.01, -1.08, 3.58, -0.02, 0.27, -0.01, 5.59, 1.94, 0.77, -1.86, -2.43, 3.2, 1.79, 0.36, -0.13, -5.35, 3.74, 1.26, null], "ew_ma": [null, -1.18, 0.38, -7.96, 0.79, -0.77, 2.57, -0.03, 0.21, -0.01, 5.44, 1.94, 0.49, -1.1, -1.18, 1.64, 1.13, 0.32, -0.09, -4.21, 3.36, 0.84, null], "z_comb": 2.68, "p": 0.8262586870656468, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9861, "null_sd": 2.72, "v": 17.55, "rv_gaia": 16.94, "ew_limit_ma": 2.892}, {"star": "5481848424118748672", "z": [null, -3.64, 4.68, 1.68, 0.97, 2.74, 5.6, 5.57, -1.42, -6.55, -0.09, 0.66, 0.37, -0.0, -5.17, 3.27, 3.92, 3.23, 4.4, 3.75, 0.56, 0.11, null], "ew_ma": [null, -1.45, 1.88, 0.67, 0.5, 1.29, 2.7, 2.39, -0.74, -3.59, -0.05, 0.42, 0.21, -0.0, -3.15, 2.0, 1.95, 1.26, 1.9, 1.51, 0.22, 0.05, null], "z_comb": 3.73, "p": 0.8277586120693965, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9838, "null_sd": 3.48, "v": 33.05, "rv_gaia": 31.45, "ew_limit_ma": 2.065}, {"star": "2831490694929214464", "z": [null, 3.62, -2.13, 1.39, 1.88, -3.17, -2.75, 2.27, 0.23, -0.37, 1.77, 4.96, -1.58, -1.37, -2.6, -2.48, -0.11, 6.69, -4.07, -1.04, 0.31, 3.57, null], "ew_ma": [null, 0.65, -0.44, 0.27, 0.39, -0.69, -0.58, 0.5, 0.05, -0.07, 0.34, 0.99, -0.38, -0.22, -0.6, -0.49, -0.03, 1.18, -0.62, -0.15, 0.05, 0.45, null], "z_comb": 2.87, "p": 0.8377581120943953, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.59, "v": -1.2, "rv_gaia": -0.92, "ew_limit_ma": 0.961}, {"star": "5493588665684618752", "z": [null, 1.05, -1.7, -0.98, 0.81, 1.25, 8.21, 3.36, -1.78, -4.33, 1.66, -0.15, 3.38, 2.0, 3.95, 6.75, 1.87, -3.97, 5.11, 4.63, -2.03, -7.61, null], "ew_ma": [null, 0.36, -0.78, -0.35, 0.32, 0.57, 3.68, 1.36, -0.84, -2.51, 0.82, -0.06, 1.8, 0.93, 2.79, 5.21, 1.24, -1.17, 2.35, 1.79, -0.56, -1.64, null], "z_comb": 1.72, "p": 0.8501074946252687, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.92, "v": 5.7, "rv_gaia": 4.82, "ew_limit_ma": 2.493}, {"star": "2648914040357320576", "z": [null, -1.25, 6.69, -1.42, -0.29, -4.08, -6.74, 2.4, 1.69, -2.69, 3.21, 0.88, -7.53, 3.42, 4.76, 7.88, -5.28, -4.23, 10.42, -4.58, 4.87, 1.32, null], "ew_ma": [null, -0.63, 3.89, -0.82, -0.14, -3.02, -5.05, 2.02, 0.8, -1.55, 1.64, 0.39, -2.85, 1.08, 1.99, 3.27, -1.99, -1.49, 4.16, -1.7, 1.68, 0.39, null], "z_comb": 2.81, "p": 0.8507074646267687, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.01, "v": -13.55, "rv_gaia": -13.41, "ew_limit_ma": 3.091}, {"star": "3584074376569429248", "z": [null, 1.9, 1.76, 6.4, -0.37, 1.49, 1.95, 0.12, -1.38, 2.75, -4.88, -1.33, 5.25, 2.77, -0.41, -2.25, 1.15, -0.58, -0.19, -0.05, 8.3, -1.35, null], "ew_ma": [null, 0.43, 0.49, 1.75, -0.12, 0.5, 0.66, 0.03, -0.42, 0.74, -1.05, -0.35, 1.66, 0.64, -0.14, -0.81, 0.27, -0.11, -0.08, -0.02, 1.64, -0.45, null], "z_comb": 3.75, "p": 0.8564571771411429, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.84, "v": 20.8, "rv_gaia": 20.73, "ew_limit_ma": 1.272}, {"star": "5801950515627094400", "z": [null, 2.41, 1.6, 1.05, -2.54, -0.71, 4.65, 0.85, -3.21, 0.61, -0.1, -1.7, 6.99, 3.19, -1.24, 2.31, 5.23, -0.55, -0.09, 6.58, -1.58, 2.04, null], "ew_ma": [null, 1.18, 0.95, 0.48, -1.26, -0.34, 2.2, 0.37, -1.87, 0.31, -0.05, -0.82, 4.11, 1.32, -0.59, 1.02, 2.21, -0.16, -0.04, 2.18, -0.49, 0.73, null], "z_comb": 2.91, "p": 0.8786560671966401, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.0, "v": 59.6, "rv_gaia": 60.13, "ew_limit_ma": 1.875}, {"star": "3256786534197166208", "z": [null, 0.03, -3.41, -4.6, 1.91, -0.15, -5.02, 1.72, 1.77, 6.92, 4.85, 2.36, 10.89, 2.57, 0.61, 6.29, 0.95, 1.54, 2.02, -3.06, -2.3, 0.85, null], "ew_ma": [null, 0.01, -1.01, -1.15, 0.52, -0.04, -1.21, 0.43, 0.45, 1.77, 1.15, 0.67, 3.85, 0.57, 0.17, 1.59, 0.29, 0.52, 0.53, -0.79, -0.65, 0.25, null], "z_comb": 4.16, "p": 0.887755612219389, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.19, "v": 17.9, "rv_gaia": 17.62, "ew_limit_ma": 1.141}, {"star": "5264749303462961280", "z": [null, -2.09, 8.37, 4.3, -0.45, 2.8, 0.44, 2.12, -2.25, 1.65, -0.01, 2.65, 4.32, 2.75, -5.16, 7.23, 2.22, -0.56, 12.79, -9.56, -5.54, 1.12, null], "ew_ma": [null, -1.08, 6.17, 2.04, -0.27, 1.8, 0.28, 1.45, -1.44, 0.82, -0.0, 1.18, 2.6, 1.3, -2.72, 3.64, 0.9, -0.26, 5.1, -4.03, -2.44, 0.44, null], "z_comb": 4.37, "p": 0.8944552772361382, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9914, "null_sd": 3.64, "v": 35.75, "rv_gaia": 36.06, "ew_limit_ma": 2.882}, {"star": "3269362645115584640", "z": [null, 2.24, 1.88, -4.16, 2.13, 3.45, 0.87, -4.43, 3.85, 1.65, -0.48, 2.5, 5.39, -0.77, 1.81, -7.6, 4.35, 3.32, -1.82, 5.97, 0.02, -0.03, null], "ew_ma": [null, 0.62, 0.44, -0.93, 0.64, 1.04, 0.25, -1.2, 1.07, 0.4, -0.11, 0.77, 1.64, -0.18, 0.5, -2.08, 1.09, 0.88, -0.41, 1.18, 0.0, -0.01, null], "z_comb": 2.47, "p": 0.9025548722563872, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9953, "null_sd": 2.87, "v": 19.15, "rv_gaia": 18.73, "ew_limit_ma": 1.065}, {"star": "2913411183149615744", "z": [null, 1.18, 3.75, 2.21, 1.26, 1.03, 7.01, -0.13, 1.28, -4.4, 6.07, -0.16, 4.7, -4.05, -4.33, 8.02, -3.58, 4.56, 1.13, 3.31, -1.72, -1.64, null], "ew_ma": [null, 0.47, 1.48, 0.88, 0.57, 0.47, 3.16, -0.05, 0.54, -1.72, 2.32, -0.06, 1.66, -1.34, -2.01, 3.63, -1.31, 1.7, 0.44, 1.2, -0.64, -0.57, null], "z_comb": 3.61, "p": 0.9161541922903855, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9953, "null_sd": 3.22, "v": 21.5, "rv_gaia": 21.69, "ew_limit_ma": 2.003}, {"star": "5320952798822552064", "z": [null, 3.86, 1.44, 2.51, 0.85, -1.9, -4.42, -0.2, 2.55, 1.29, 0.49, 7.87, 7.73, -2.41, 0.44, -4.07, 7.91, 7.31, 0.5, 0.42, 0.74, -3.14, null], "ew_ma": [null, 0.56, 0.18, 0.27, 0.1, -0.25, -0.58, -0.03, 0.34, 0.17, 0.06, 1.28, 1.23, -0.36, 0.07, -0.66, 1.11, 1.11, 0.07, 0.06, 0.12, -0.55, null], "z_comb": 4.99, "p": 0.9301534923253837, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 3.53, "v": 12.2, "rv_gaia": 11.87, "ew_limit_ma": 0.743}, {"star": "3630099250409312640", "z": [null, 1.32, -0.12, 1.2, -2.26, -1.46, -2.87, 1.31, -2.15, 11.93, -1.28, -2.27, -7.41, -3.19, 0.88, 8.58, -1.23, 2.93, -1.5, 3.11, 4.38, 1.77, null], "ew_ma": [null, 0.58, -0.1, 0.48, -2.25, -1.03, -1.99, 0.69, -1.51, 16.58, -0.98, -3.07, -12.36, -3.46, 2.48, 27.83, -2.28, 3.13, -4.08, 6.92, 2.91, 1.99, null], "z_comb": 4.37, "p": 0.9326533673316334, "n_lines": 18, "n_spectra": 2, "twin_r": 0.9298, "null_sd": 3.86, "v": -10.6, "rv_gaia": -9.78, "ew_limit_ma": 6.012}, {"star": "6384510877400590336", "z": [null, -1.12, -0.57, 1.98, 7.04, 0.74, -0.87, 0.65, -2.13, 7.49, -2.02, -1.43, 3.44, 1.67, 1.56, 0.53, 0.48, 1.72, -0.55, -0.0, -2.07, 2.73, null], "ew_ma": [null, -0.23, -0.11, 0.33, 1.29, 0.12, -0.15, 0.11, -0.46, 1.21, -0.29, -0.22, 0.71, 0.26, 0.28, 0.09, 0.09, 0.28, -0.1, -0.0, -0.37, 0.41, null], "z_comb": 3.85, "p": 0.9417529123543823, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 2.82, "v": -2.0, "rv_gaia": -2.29, "ew_limit_ma": 0.822}, {"star": "5596797039059063680", "z": [null, 1.0, -2.54, -1.6, -1.74, 1.29, 3.92, 1.05, 2.07, 4.5, 3.65, -1.38, -1.41, -0.47, -5.25, 2.15, 1.14, 1.32, -4.28, 11.07, 6.54, 2.71, null], "ew_ma": [null, 0.2, -0.51, -0.24, -0.3, 0.26, 0.78, 0.18, 0.43, 1.06, 0.76, -0.23, -0.32, -0.07, -1.33, 0.59, 0.17, 0.19, -0.82, 1.83, 1.01, 0.36, null], "z_comb": 4.5, "p": 0.9491525423728814, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 3.57, "v": -15.4, "rv_gaia": -15.71, "ew_limit_ma": 1.025}, {"star": "6166183842771027328", "z": [null, 1.02, 5.53, -2.03, -2.03, 4.13, 3.0, 1.46, -1.04, 2.29, 1.02, 2.47, -3.85, -3.83, -3.28, 3.55, 6.57, 1.54, 8.48, -1.75, 1.98, 2.97, null], "ew_ma": [null, 0.22, 1.2, -0.41, -0.41, 1.13, 0.82, 0.37, -0.23, 0.81, 0.29, 0.6, -0.88, -0.7, -1.1, 1.22, 2.27, 0.32, 1.61, -0.35, 0.39, 0.49, null], "z_comb": 6.01, "p": 0.9585020748962552, "n_lines": 18, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.4, "v": -17.35, "rv_gaia": -17.46, "ew_limit_ma": 1.499}, {"star": "4423865487962417024", "z": [null, -2.95, 4.04, 3.4, 1.76, 0.13, 2.09, 2.63, -0.04, -1.35, 1.06, 3.84, 0.73, 1.48, 3.85, 14.43, -3.26, -4.12, 5.34, -4.01, -3.2, -2.99, null], "ew_ma": [null, -0.84, 1.42, 1.04, 0.61, 0.05, 0.8, 0.92, -0.01, -0.38, 0.27, 0.95, 0.2, 0.37, 1.34, 4.42, -0.89, -1.22, 1.24, -0.75, -0.86, -0.49, null], "z_comb": 4.71, "p": 0.968451577421129, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.52, "v": 19.3, "rv_gaia": 18.95, "ew_limit_ma": 1.793}, {"star": "3702148666829533952", "z": [null, 6.48, -3.13, -1.37, 2.79, -0.45, 0.98, 1.94, -1.87, 5.54, 2.71, 1.87, 10.12, -2.55, -0.73, -0.8, 14.4, 3.37, -8.39, 18.21, -2.57, 1.71, null], "ew_ma": [null, 2.87, -1.27, -0.56, 0.99, -0.22, 0.47, 0.96, -0.99, 3.45, 1.34, 1.05, 5.39, -0.81, -0.4, -0.45, 6.17, 1.2, -2.36, 5.04, -0.78, 0.33, null], "z_comb": 6.72, "p": 0.9721013949302535, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9912, "null_sd": 3.96, "v": 3.8, "rv_gaia": 2.63, "ew_limit_ma": 2.732}, {"star": "2980492387558410112", "z": [null, -1.19, -1.82, -2.52, 3.39, -0.49, -0.87, -2.85, -0.41, -4.81, -3.38, 0.73, 11.24, 3.41, -3.51, 4.0, 5.9, 5.61, -10.67, 0.56, 4.72, 12.12, null], "ew_ma": [null, -0.63, -2.41, -1.76, 5.82, -0.56, -0.98, -2.21, -0.44, -7.33, -2.41, 0.95, 9.38, 2.1, -1.55, 1.72, 3.11, 2.74, -9.7, 0.43, 2.97, 11.09, null], "z_comb": 4.95, "p": 0.9742012899355033, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9691, "null_sd": 3.27, "v": 21.15, "rv_gaia": 21.6, "ew_limit_ma": 4.384}, {"star": "3400292798990117888", "z": [null, 0.61, 2.93, 2.79, -2.62, -0.25, 5.27, 1.3, -2.51, 3.07, -1.72, 0.02, -8.07, 2.45, 3.96, 1.84, -3.5, 3.91, 1.05, -3.22, 6.78, 2.87, null], "ew_ma": [null, 0.17, 0.65, 0.71, -0.81, -0.06, 1.27, 0.32, -0.59, 0.81, -0.42, 0.01, -2.88, 0.68, 0.87, 0.4, -0.69, 0.96, 0.23, -0.64, 1.75, 0.54, null], "z_comb": 6.6, "p": 0.9748512574371282, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.71, "v": 37.45, "rv_gaia": 37.7, "ew_limit_ma": 1.414}, {"star": "2417456431710276096", "z": [null, 3.49, -0.95, 1.6, 6.68, 2.58, 5.25, -0.97, 1.14, 0.77, -3.7, 2.66, 5.98, 1.94, 0.95, 4.54, 0.41, 2.35, -1.61, 0.47, -4.72, 1.14, null], "ew_ma": [null, 0.61, -0.15, 0.21, 0.81, 0.31, 0.64, -0.12, 0.15, 0.1, -0.44, 0.34, 0.95, 0.26, 0.15, 0.7, 0.06, 0.32, -0.23, 0.06, -0.64, 0.15, null], "z_comb": 5.73, "p": 0.9778011099445028, "n_lines": 18, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.23, "v": 8.15, "rv_gaia": 7.88, "ew_limit_ma": 0.779}, {"star": "5129338021224785408", "z": [null, 3.61, 2.41, -1.84, -1.77, 1.05, 3.63, 6.55, 1.69, -4.37, 4.92, -0.08, 5.86, 9.97, 2.45, 1.33, 2.09, 4.42, 13.86, 1.95, -3.19, 0.61, null], "ew_ma": [null, 2.76, 1.52, -1.18, -1.85, 0.96, 3.28, 5.1, 1.45, -3.62, 3.57, -0.07, 3.6, 5.61, 1.91, 1.01, 1.63, 3.51, 8.7, 1.2, -2.17, 0.25, null], "z_comb": 7.85, "p": 0.9816009199540023, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9693, "null_sd": 3.85, "v": 25.65, "rv_gaia": 29.09, "ew_limit_ma": 4.357}, {"star": "3261878613062758144", "z": [null, 2.94, 5.15, 0.14, -1.26, 4.72, 7.75, 2.08, -0.5, -5.94, 7.53, 1.06, -5.77, -3.16, -1.66, 14.85, 7.42, 1.21, 9.02, 1.09, -3.47, 3.58, null], "ew_ma": [null, 0.87, 1.66, 0.04, -0.33, 1.65, 2.72, 0.9, -0.21, -3.21, 2.93, 0.36, -2.14, -0.61, -0.7, 6.07, 2.18, 0.33, 1.71, 0.21, -0.79, 0.55, null], "z_comb": 9.95, "p": 0.9859507024648767, "n_lines": 18, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.23, "v": 22.25, "rv_gaia": 22.59, "ew_limit_ma": 2.306}, {"star": "4345775217221821312", "z": [null, 1.66, -2.52, -2.95, 1.07, -0.94, 2.14, 5.78, 0.01, 4.84, 1.74, 2.77, -3.84, 6.23, 2.91, 8.42, -2.0, -0.51, 15.27, -9.99, 0.26, -2.81, null], "ew_ma": [null, 0.44, -0.54, -0.69, 0.27, -0.23, 0.52, 1.51, 0.0, 1.13, 0.42, 0.77, -0.92, 1.24, 0.87, 2.24, -0.46, -0.1, 2.96, -1.78, 0.04, -0.34, null], "z_comb": 6.16, "p": 0.9906504674766262, "n_lines": 18, "n_spectra": 3, "twin_r": 0.9964, "null_sd": 2.72, "v": 11.55, "rv_gaia": 11.71, "ew_limit_ma": 1.152}, {"star": "4775347916201249792", "z": [null, -0.69, -2.86, 2.93, 1.14, -0.26, -2.28, 4.35, 0.13, 9.71, 1.79, 4.8, 3.65, 6.74, 4.64, -4.73, 5.89, 1.64, 5.33, -4.18, 0.72, -0.83, null], "ew_ma": [null, -0.31, -1.21, 1.2, 0.48, -0.1, -0.84, 1.74, 0.06, 3.9, 0.79, 2.37, 1.25, 2.27, 2.45, -2.36, 2.66, 0.66, 1.8, -1.31, 0.26, -0.24, null], "z_comb": 7.8, "p": 0.9989500524973751, "n_lines": 18, "n_spectra": 4, "twin_r": 0.9812, "null_sd": 3.02, "v": -4.9, "rv_gaia": -4.59, "ew_limit_ma": 2.563}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Tc_ESPRESSO.json b/papers/short_lived_elements/data/element_Tc_ESPRESSO.json new file mode 100644 index 0000000000000000000000000000000000000000..759492e282071dd2f0d157d49b72527c32ad2ec7 --- /dev/null +++ b/papers/short_lived_elements/data/element_Tc_ESPRESSO.json @@ -0,0 +1 @@ +{"lines": [[4238.19, 0.4467021155581737], [4262.27, 0.7127530411241091], [4297.06, 1.0]], "stable": [true, true, true], "results": [{"star": "4176501313320676992", "z": [-1.38, -0.14, -3.27], "ew_ma": [-0.12, -0.02, -0.37], "z_comb": -3.05, "p": 0.06339683015849208, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.47, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.602}, {"star": "3945118643256370688", "z": [-3.49, 0.1, -1.35], "ew_ma": [-0.58, 0.02, -0.22], "z_comb": -2.17, "p": 0.07464626768661567, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 1.66, "v": -1.2, "rv_gaia": -1.67, "ew_limit_ma": 0.769}, {"star": "3584074376569429248", "z": [-0.96, 0.78, -3.19], "ew_ma": [-0.25, 0.19, -0.79], "z_comb": -2.34, "p": 0.08429578521073947, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9964, "null_sd": 1.67, "v": 21.5, "rv_gaia": 20.73, "ew_limit_ma": 0.828}, {"star": "4768170579173552896", "z": [-0.22, 0.27, -4.71], "ew_ma": [-0.03, 0.02, -0.34], "z_comb": -3.54, "p": 0.0887455627218639, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9994, "null_sd": 2.79, "v": -4.8, "rv_gaia": -5.53, "ew_limit_ma": 0.551}, {"star": "4367026303085396352", "z": [0.73, -1.64, -3.3], "ew_ma": [0.05, -0.33, -0.47], "z_comb": -3.17, "p": 0.09809509524523774, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9986, "null_sd": 2.6, "v": -35.2, "rv_gaia": -35.94, "ew_limit_ma": 0.862}, {"star": "2835207319109249920", "z": [-0.13, -1.32, -3.5], "ew_ma": [-0.01, -0.18, -0.68], "z_comb": -3.44, "p": 0.10354482275886205, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.19, "v": -32.55, "rv_gaia": -33.33, "ew_limit_ma": 1.146}, {"star": "2343647384368388608", "z": [-1.54, -3.18, -0.67], "ew_ma": [-0.18, -0.36, -0.09], "z_comb": -2.78, "p": 0.11389430528473576, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9989, "null_sd": 2.66, "v": 57.4, "rv_gaia": 56.73, "ew_limit_ma": 0.534}, {"star": "6854626246593473792", "z": [-3.45, 2.08, -4.01], "ew_ma": [-0.51, 0.64, -0.93], "z_comb": -3.11, "p": 0.11589420528973551, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.58, "v": -41.4, "rv_gaia": -42.09, "ew_limit_ma": 1.843}, {"star": "5287961677550103424", "z": [-1.45, -4.72, -0.31], "ew_ma": [-0.16, -0.55, -0.04], "z_comb": -3.3, "p": 0.1296935153242338, "n_lines": 3, "n_spectra": 4, "twin_r": 0.999, "null_sd": 3.08, "v": 43.15, "rv_gaia": 42.58, "ew_limit_ma": 1.222}, {"star": "2619706544757416192", "z": [-1.68, -1.08, -1.93], "ew_ma": [-0.2, -0.15, -0.39], "z_comb": -2.64, "p": 0.14759262036898155, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.57, "v": -20.2, "rv_gaia": -20.78, "ew_limit_ma": 1.328}, {"star": "3480332916165099904", "z": [-1.24, 0.86, -3.33], "ew_ma": [-0.1, 0.09, -0.36], "z_comb": -2.5, "p": 0.15814209289535522, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.69, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.974}, {"star": "4343064577465522816", "z": [-0.27, -0.68, -1.96], "ew_ma": [-0.08, -0.28, -0.74], "z_comb": -1.96, "p": 0.16144192790360481, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.48, "v": -31.3, "rv_gaia": -31.96, "ew_limit_ma": 2.496}, {"star": "5493588665684618752", "z": [-2.83, 0.91, -2.65], "ew_ma": [-0.29, 0.14, -0.44], "z_comb": -2.5, "p": 0.16369181540922953, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.73, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 1.152}, {"star": "3646061719703116032", "z": [-2.77, -1.29, -1.18], "ew_ma": [-0.35, -0.22, -0.16], "z_comb": -2.56, "p": 0.17224138793060348, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.57, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 1.024}, {"star": "5341673851394297600", "z": [-1.71, -2.58, -0.8], "ew_ma": [-0.37, -0.59, -0.23], "z_comb": -2.6, "p": 0.1881405929703515, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 2.87, "v": 50.2, "rv_gaia": 49.52, "ew_limit_ma": 2.52}, {"star": "1212385193677160832", "z": [0.01, 1.12, -3.1], "ew_ma": [0.0, 0.31, -0.77], "z_comb": -1.76, "p": 0.22538873056347183, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.84, "v": -38.2, "rv_gaia": -38.94, "ew_limit_ma": 3.246}, {"star": "3835743693290897152", "z": [-1.27, -1.91, 0.0], "ew_ma": [-0.09, -0.14, 0.0], "z_comb": -1.47, "p": 0.23843807809609519, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.33, "v": -17.1, "rv_gaia": -17.81, "ew_limit_ma": 0.364}, {"star": "2898239468873596800", "z": [0.42, -1.22, -1.26], "ew_ma": [0.02, -0.07, -0.07], "z_comb": -1.49, "p": 0.2550372481375931, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.6, "v": -3.2, "rv_gaia": -3.85, "ew_limit_ma": 0.561}, {"star": "6029992663310612096", "z": [2.0, -0.65, -1.69], "ew_ma": [0.31, -0.1, -0.31], "z_comb": -0.96, "p": 0.26108694565271734, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.67, "v": 14.8, "rv_gaia": 14.08, "ew_limit_ma": 1.711}, {"star": "5902750168276592256", "z": [-0.67, 3.27, -4.05], "ew_ma": [-0.06, 0.39, -0.82], "z_comb": -1.54, "p": 0.2704864756762162, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 3.36, "v": -68.1, "rv_gaia": -68.78, "ew_limit_ma": 1.586}, {"star": "5726982995343100928", "z": [-0.91, -6.17, 2.91], "ew_ma": [-0.05, -0.38, 0.23], "z_comb": -1.44, "p": 0.28203589820508973, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.66, "v": 30.7, "rv_gaia": 30.09, "ew_limit_ma": 0.62}, {"star": "5427207918907843072", "z": [-1.43, -3.85, 1.33], "ew_ma": [-0.15, -0.45, 0.26], "z_comb": -1.57, "p": 0.30033498325083746, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9985, "null_sd": 2.69, "v": 65.7, "rv_gaia": 65.01, "ew_limit_ma": 0.989}, {"star": "5951165616611763456", "z": [-1.98, 0.7, -1.91], "ew_ma": [-0.22, 0.11, -0.21], "z_comb": -1.76, "p": 0.3015349232538373, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.1, "v": 26.5, "rv_gaia": 25.96, "ew_limit_ma": 1.344}, {"star": "3101382419728401408", "z": [-1.48, -2.52, 1.3], "ew_ma": [-0.3, -0.37, 0.31], "z_comb": -0.88, "p": 0.3031848407579621, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 2.34, "v": 54.45, "rv_gaia": 53.99, "ew_limit_ma": 1.074}, {"star": "6786890622306367872", "z": [-1.77, 1.43, -1.43], "ew_ma": [-0.25, 0.3, -0.33], "z_comb": -0.92, "p": 0.32363381830908455, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9992, "null_sd": 1.73, "v": -28.75, "rv_gaia": -29.46, "ew_limit_ma": 1.029}, {"star": "3574377616021489024", "z": [-1.05, 1.41, -1.45], "ew_ma": [-0.17, 0.23, -0.21], "z_comb": -0.69, "p": 0.33868306584670765, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 1.67, "v": 2.8, "rv_gaia": 1.88, "ew_limit_ma": 0.835}, {"star": "2391838429257482496", "z": [-0.22, 1.25, -1.88], "ew_ma": [-0.02, 0.17, -0.25], "z_comb": -0.83, "p": 0.34493275336233187, "n_lines": 3, "n_spectra": 4, "twin_r": 0.999, "null_sd": 2.38, "v": 12.85, "rv_gaia": 12.3, "ew_limit_ma": 1.141}, {"star": "1212385193677161088", "z": [-0.58, 2.4, -2.53], "ew_ma": [-0.09, 0.49, -0.69], "z_comb": -0.83, "p": 0.3464326783660817, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9972, "null_sd": 2.27, "v": -38.2, "rv_gaia": -38.72, "ew_limit_ma": 1.635}, {"star": "5266722205277801984", "z": [0.48, -2.67, 0.93], "ew_ma": [0.04, -0.25, 0.07], "z_comb": -0.58, "p": 0.3575321233938303, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9981, "null_sd": 2.23, "v": 18.25, "rv_gaia": 17.57, "ew_limit_ma": 0.789}, {"star": "6489771832811810432", "z": [2.01, -0.63, -1.63], "ew_ma": [0.49, -0.16, -0.48], "z_comb": -0.91, "p": 0.3664316784160792, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9968, "null_sd": 4.4, "v": -30.15, "rv_gaia": -31.05, "ew_limit_ma": 5.233}, {"star": "3584074380866605440", "z": [-1.4, 3.2, -2.27], "ew_ma": [-0.4, 0.96, -0.74], "z_comb": -0.47, "p": 0.37023148842557874, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9961, "null_sd": 2.15, "v": 20.8, "rv_gaia": 19.78, "ew_limit_ma": 2.621}, {"star": "4341501106288171008", "z": [0.46, -0.89, -0.52], "ew_ma": [0.13, -0.22, -0.13], "z_comb": -0.73, "p": 0.3808309584520774, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9976, "null_sd": 3.18, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 3.321}, {"star": "5691782130578684544", "z": [-1.36, -1.24, 0.58], "ew_ma": [-0.17, -0.14, 0.06], "z_comb": -0.7, "p": 0.38668066596670164, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.43, "v": 8.9, "rv_gaia": 8.18, "ew_limit_ma": 1.538}, {"star": "6369544118965772416", "z": [1.66, 1.05, -2.43], "ew_ma": [0.29, 0.14, -0.48], "z_comb": -0.72, "p": 0.40257987100644965, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9967, "null_sd": 3.35, "v": -10.25, "rv_gaia": -11.0, "ew_limit_ma": 2.344}, {"star": "6141742283401003264", "z": [2.06, -0.54, -1.6], "ew_ma": [0.37, -0.1, -0.39], "z_comb": -0.82, "p": 0.40707964601769914, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.31, "v": -12.3, "rv_gaia": -13.03, "ew_limit_ma": 5.056}, {"star": "6128366415218881536", "z": [-0.52, -1.21, -0.01], "ew_ma": [-0.04, -0.09, -0.0], "z_comb": -0.85, "p": 0.4120293985300735, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 2.97, "v": 31.3, "rv_gaia": 30.47, "ew_limit_ma": 0.787}, {"star": "3654496279558010624", "z": [-0.19, -1.65, 0.23], "ew_ma": [-0.02, -0.24, 0.04], "z_comb": -0.79, "p": 0.41707914604269786, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.36, "v": -18.55, "rv_gaia": -19.21, "ew_limit_ma": 2.329}, {"star": "5855730584310531200", "z": [-1.32, 0.49, 0.32], "ew_ma": [-0.3, 0.16, 0.09], "z_comb": 0.06, "p": 0.4380780960951952, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 3.73, "v": 105.3, "rv_gaia": 104.53, "ew_limit_ma": 8.248}, {"star": "2376087581593256448", "z": [1.5, 1.62, -2.11], "ew_ma": [0.2, 0.2, -0.43], "z_comb": -0.22, "p": 0.463976801159942, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 3.38, "v": -9.55, "rv_gaia": -10.26, "ew_limit_ma": 1.769}, {"star": "6226694571859532800", "z": [-2.77, 3.36, -1.02], "ew_ma": [-0.28, 0.36, -0.13], "z_comb": 0.11, "p": 0.46447677616119193, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 2.98, "v": 5.8, "rv_gaia": 5.14, "ew_limit_ma": 1.695}, {"star": "4048636941542753152", "z": [0.56, -2.73, 1.48], "ew_ma": [0.1, -0.42, 0.27], "z_comb": -0.17, "p": 0.4811759412029398, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9978, "null_sd": 3.0, "v": 22.15, "rv_gaia": 21.37, "ew_limit_ma": 1.668}, {"star": "6166183842771027328", "z": [-0.09, -0.91, 0.21], "ew_ma": [-0.01, -0.07, 0.03], "z_comb": -0.36, "p": 0.4857257137143143, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9983, "null_sd": 3.33, "v": -16.75, "rv_gaia": -17.46, "ew_limit_ma": 0.958}, {"star": "6189254689097655552", "z": [-0.61, 0.38, -0.32], "ew_ma": [-0.07, 0.04, -0.02], "z_comb": -0.24, "p": 0.4927253637318134, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 3.57, "v": -3.2, "rv_gaia": -3.87, "ew_limit_ma": 0.91}, {"star": "3775795982881589376", "z": [-0.97, -3.84, 3.38], "ew_ma": [-0.11, -0.52, 0.34], "z_comb": 0.16, "p": 0.5260736963151842, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9989, "null_sd": 2.93, "v": 30.5, "rv_gaia": 29.93, "ew_limit_ma": 1.829}, {"star": "5731252295913584768", "z": [-0.62, -0.47, 0.44], "ew_ma": [-0.1, -0.12, 0.11], "z_comb": -0.13, "p": 0.5340732963351832, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9968, "null_sd": 4.19, "v": 67.35, "rv_gaia": 66.88, "ew_limit_ma": 4.591}, {"star": "2494066897240089984", "z": [0.25, 1.99, -1.33], "ew_ma": [0.03, 0.25, -0.13], "z_comb": 0.15, "p": 0.5368731563421829, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9987, "null_sd": 2.78, "v": -4.6, "rv_gaia": -5.33, "ew_limit_ma": 1.575}, {"star": "5266348577487273344", "z": [-0.73, 1.1, -0.13], "ew_ma": [-0.07, 0.1, -0.01], "z_comb": 0.25, "p": 0.5423228838558072, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.68, "v": 14.3, "rv_gaia": 13.6, "ew_limit_ma": 2.263}, {"star": "5064574724769475968", "z": [-0.1, 1.21, -1.53], "ew_ma": [-0.02, 0.26, -0.33], "z_comb": -0.54, "p": 0.5446227688615569, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.82, "v": 9.9, "rv_gaia": 9.77, "ew_limit_ma": 4.271}, {"star": "6180035765135232128", "z": [-1.04, -0.63, 1.23], "ew_ma": [-0.17, -0.13, 0.27], "z_comb": 0.24, "p": 0.5527723613819309, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.16, "v": 65.7, "rv_gaia": 64.94, "ew_limit_ma": 2.49}, {"star": "5524982093479504384", "z": [1.2, -0.2, 0.22], "ew_ma": [0.29, -0.06, 0.08], "z_comb": 0.47, "p": 0.5639218039098045, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 3.01, "v": 10.05, "rv_gaia": 9.31, "ew_limit_ma": 3.491}, {"star": "3538141457982396928", "z": [1.1, -2.03, 1.68], "ew_ma": [0.11, -0.17, 0.13], "z_comb": 0.56, "p": 0.5644717764111794, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9988, "null_sd": 2.64, "v": 4.8, "rv_gaia": 4.25, "ew_limit_ma": 0.776}, {"star": "2554032474712538880", "z": [1.81, -0.71, 0.06], "ew_ma": [0.23, -0.09, 0.01], "z_comb": 0.27, "p": 0.5726213689315535, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 2.26, "v": 19.95, "rv_gaia": 19.4, "ew_limit_ma": 1.543}, {"star": "4722111590409480064", "z": [-0.29, 0.99, 0.21], "ew_ma": [-0.03, 0.1, 0.02], "z_comb": 0.6, "p": 0.5729213539323034, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9977, "null_sd": 4.37, "v": 13.0, "rv_gaia": 12.44, "ew_limit_ma": 2.421}, {"star": "5452492082132835840", "z": [-0.02, -0.05, 0.8], "ew_ma": [-0.0, -0.01, 0.09], "z_comb": 0.58, "p": 0.5824708764561772, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.19, "v": 13.5, "rv_gaia": 12.83, "ew_limit_ma": 0.886}, {"star": "5596797039059063680", "z": [0.42, 0.02, 0.67], "ew_ma": [0.04, 0.0, 0.07], "z_comb": 0.67, "p": 0.5870206489675516, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.79, "v": -14.95, "rv_gaia": -15.71, "ew_limit_ma": 1.176}, {"star": "5669349344592951936", "z": [0.84, -1.15, 1.32], "ew_ma": [0.16, -0.21, 0.32], "z_comb": 0.67, "p": 0.5886705664716764, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9956, "null_sd": 2.99, "v": 35.55, "rv_gaia": 35.32, "ew_limit_ma": 2.514}, {"star": "5579783574073770112", "z": [0.95, -1.8, 1.34], "ew_ma": [0.17, -0.28, 0.22], "z_comb": 0.37, "p": 0.6106194690265486, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.23, "v": 37.45, "rv_gaia": 36.91, "ew_limit_ma": 2.353}, {"star": "6501182220888038784", "z": [-0.37, 1.6, 0.09], "ew_ma": [-0.08, 0.4, 0.02], "z_comb": 0.81, "p": 0.6245687715614219, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9984, "null_sd": 2.27, "v": 23.95, "rv_gaia": 23.28, "ew_limit_ma": 1.956}, {"star": "3250489115709122560", "z": [-0.39, -0.5, 1.09], "ew_ma": [-0.17, -0.28, 0.69], "z_comb": 0.43, "p": 0.6308684565771712, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9721, "null_sd": 11.7, "v": 121.15, "rv_gaia": 120.58, "ew_limit_ma": 69.004}, {"star": "4733035238430992768", "z": [0.03, -1.06, 1.8], "ew_ma": [0.0, -0.11, 0.2], "z_comb": 0.81, "p": 0.631968401579921, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9991, "null_sd": 3.13, "v": 1.35, "rv_gaia": 0.66, "ew_limit_ma": 1.777}, {"star": "5760701787150565888", "z": [-0.27, -2.66, 2.91], "ew_ma": [-0.04, -0.31, 0.41], "z_comb": 0.69, "p": 0.6468176591170441, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 3.25, "v": 32.65, "rv_gaia": 31.99, "ew_limit_ma": 1.62}, {"star": "6832155218215202944", "z": [0.76, -0.17, 0.44], "ew_ma": [0.23, -0.04, 0.12], "z_comb": 0.5, "p": 0.6513174341282936, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9958, "null_sd": 3.12, "v": 15.25, "rv_gaia": 14.63, "ew_limit_ma": 3.324}, {"star": "6569895822110445440", "z": [1.23, -0.94, 0.86], "ew_ma": [0.15, -0.13, 0.12], "z_comb": 0.57, "p": 0.6564171791410429, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9992, "null_sd": 1.8, "v": -18.4, "rv_gaia": -19.21, "ew_limit_ma": 1.06}, {"star": "3945118265299248128", "z": [-0.47, 4.44, -1.95], "ew_ma": [-0.07, 0.7, -0.29], "z_comb": 0.77, "p": 0.6589670516474176, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9986, "null_sd": 1.88, "v": -0.85, "rv_gaia": -1.56, "ew_limit_ma": 1.164}, {"star": "3812355328621651328", "z": [-1.83, 2.36, 0.43], "ew_ma": [-0.2, 0.33, 0.08], "z_comb": 0.99, "p": 0.6711664416779161, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9988, "null_sd": 2.49, "v": 4.75, "rv_gaia": 4.18, "ew_limit_ma": 1.439}, {"star": "6692069568458919040", "z": [0.44, 1.25, 0.27], "ew_ma": [0.02, 0.06, 0.02], "z_comb": 1.04, "p": 0.6783160841957903, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9974, "null_sd": 2.56, "v": 15.8, "rv_gaia": 15.36, "ew_limit_ma": 0.625}, {"star": "6564091190988411520", "z": [1.16, -1.03, 1.16], "ew_ma": [0.09, -0.09, 0.14], "z_comb": 0.72, "p": 0.680565971701415, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 2.88, "v": -6.85, "rv_gaia": -7.55, "ew_limit_ma": 0.928}, {"star": "5663558453071724288", "z": [2.0, -0.59, 1.14], "ew_ma": [0.28, -0.08, 0.22], "z_comb": 1.23, "p": 0.7044647767611619, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9946, "null_sd": 3.55, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 2.336}, {"star": "3948424496764080640", "z": [0.9, 4.08, -1.44], "ew_ma": [0.16, 0.69, -0.26], "z_comb": 1.43, "p": 0.7114644267786611, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.51, "v": -8.0, "rv_gaia": -8.56, "ew_limit_ma": 2.862}, {"star": "627699888238838272", "z": [-0.59, -0.45, 2.16], "ew_ma": [-0.08, -0.05, 0.22], "z_comb": 1.21, "p": 0.7239138043097845, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 1.99, "v": 31.15, "rv_gaia": 30.59, "ew_limit_ma": 0.747}, {"star": "2966316109264052096", "z": [0.78, 0.02, 1.51], "ew_ma": [0.23, 0.01, 0.36], "z_comb": 1.43, "p": 0.7255137243137844, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9958, "null_sd": 2.97, "v": 43.05, "rv_gaia": 42.46, "ew_limit_ma": 3.558}, {"star": "3507879565090229888", "z": [-0.25, 3.72, -0.38], "ew_ma": [-0.02, 0.38, -0.04], "z_comb": 1.65, "p": 0.7284635768211589, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 3.1, "v": -7.2, "rv_gaia": -7.86, "ew_limit_ma": 2.052}, {"star": "648998734141447296", "z": [2.26, -2.37, 2.38], "ew_ma": [0.51, -0.45, 0.41], "z_comb": 1.3, "p": 0.7315134243287835, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9982, "null_sd": 2.21, "v": 21.15, "rv_gaia": 20.52, "ew_limit_ma": 2.119}, {"star": "6321929733564266752", "z": [3.58, 1.83, -0.46], "ew_ma": [2.56, 1.51, -0.35], "z_comb": 1.87, "p": 0.7524123793810309, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9862, "null_sd": 2.62, "v": -31.55, "rv_gaia": -32.32, "ew_limit_ma": 11.091}, {"star": "3550081879381593728", "z": [0.9, 0.76, 0.77], "ew_ma": [0.38, 0.29, 0.31], "z_comb": 1.31, "p": 0.7733613319334033, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9786, "null_sd": 1.94, "v": 24.05, "rv_gaia": 23.76, "ew_limit_ma": 4.49}, {"star": "6524024506237594368", "z": [0.59, 0.49, 2.21], "ew_ma": [0.06, 0.05, 0.29], "z_comb": 2.16, "p": 0.7740112994350282, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9992, "null_sd": 4.34, "v": 33.15, "rv_gaia": 32.4, "ew_limit_ma": 3.02}, {"star": "4623036865373793408", "z": [0.62, -0.07, 2.11], "ew_ma": [0.09, -0.01, 0.17], "z_comb": 1.79, "p": 0.7765111744412779, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9994, "null_sd": 2.73, "v": 11.55, "rv_gaia": 10.71, "ew_limit_ma": 0.919}, {"star": "5640565607657897728", "z": [2.34, 1.23, 1.35], "ew_ma": [0.25, 0.15, 0.15], "z_comb": 2.51, "p": 0.7847607619619019, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9993, "null_sd": 3.89, "v": 15.2, "rv_gaia": 14.67, "ew_limit_ma": 3.997}, {"star": "5381537023379295232", "z": [1.08, 1.07, 1.42], "ew_ma": [0.08, 0.07, 0.11], "z_comb": 2.04, "p": 0.808209589520524, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9988, "null_sd": 2.76, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 0.78}, {"star": "2533723670313663872", "z": [1.27, -0.7, 2.33], "ew_ma": [0.24, -0.13, 0.38], "z_comb": 1.83, "p": 0.8304084795760212, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 2.58, "v": 17.7, "rv_gaia": 16.81, "ew_limit_ma": 5.493}, {"star": "5461620846141553024", "z": [3.39, 0.07, 1.3], "ew_ma": [0.32, 0.01, 0.13], "z_comb": 2.2, "p": 0.8463076846157692, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.78, "v": 27.6, "rv_gaia": 26.94, "ew_limit_ma": 1.224}, {"star": "627699888238838528", "z": [0.9, 1.44, 1.04], "ew_ma": [0.17, 0.27, 0.21], "z_comb": 1.89, "p": 0.8708564571771411, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9985, "null_sd": 1.98, "v": 31.5, "rv_gaia": 30.81, "ew_limit_ma": 2.438}, {"star": "4079684229322231040", "z": [-0.48, -0.42, 4.47], "ew_ma": [-0.03, -0.02, 0.24], "z_comb": 3.03, "p": 0.8977051147442627, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9995, "null_sd": 2.93, "v": 37.75, "rv_gaia": 37.03, "ew_limit_ma": 0.995}, {"star": "2964794041574370560", "z": [1.3, -1.94, 4.55], "ew_ma": [0.09, -0.08, 0.2], "z_comb": 2.87, "p": 0.9059547022648867, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9991, "null_sd": 2.46, "v": 29.7, "rv_gaia": 29.0, "ew_limit_ma": 0.528}, {"star": "3975129194660883328", "z": [3.07, -0.55, 1.94], "ew_ma": [0.76, -0.14, 0.44], "z_comb": 2.23, "p": 0.9374031298435078, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 1.48, "v": 6.75, "rv_gaia": 5.97, "ew_limit_ma": 1.706}, {"star": "3975223065466473216", "z": [0.19, 0.87, 1.97], "ew_ma": [0.05, 0.2, 0.45], "z_comb": 2.05, "p": 0.9386530673466327, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9969, "null_sd": 1.49, "v": 6.45, "rv_gaia": 5.8, "ew_limit_ma": 1.858}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Tc_FEROS.json b/papers/short_lived_elements/data/element_Tc_FEROS.json new file mode 100644 index 0000000000000000000000000000000000000000..e3e3ded8c396d6716bd1955be43bb036055a21bd --- /dev/null +++ b/papers/short_lived_elements/data/element_Tc_FEROS.json @@ -0,0 +1 @@ +{"lines": [[4238.19, 0.4467021155581737], [4262.27, 0.7127530411241091], [4297.06, 1.0]], "stable": [true, true, true], "results": [{"star": "2790914111658905216", "z": [-2.29, 0.51, -5.73], "ew_ma": [-0.72, 0.13, -1.47], "z_comb": -4.89, "p": 0.06144692765361732, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9879, "null_sd": 5.56, "v": -23.0, "rv_gaia": -23.67, "ew_limit_ma": 1.705}, {"star": "4367026303085396352", "z": [-2.11, -2.17, -4.91], "ew_ma": [-0.53, -1.43, -2.28], "z_comb": -5.66, "p": 0.06309684515774211, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.11, "v": -35.5, "rv_gaia": -35.94, "ew_limit_ma": 5.66}, {"star": "4634528720388462592", "z": [-0.9, -0.28, -5.07], "ew_ma": [-0.43, -0.12, -1.84], "z_comb": -4.34, "p": 0.09184540772961351, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9926, "null_sd": 4.25, "v": -5.55, "rv_gaia": -6.07, "ew_limit_ma": 3.765}, {"star": "6153706477443518976", "z": [-1.19, -1.27, -4.36], "ew_ma": [-0.35, -0.5, -2.13], "z_comb": -4.44, "p": 0.10369481525923704, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9911, "null_sd": 4.74, "v": -25.8, "rv_gaia": -26.31, "ew_limit_ma": 2.241}, {"star": "3330062833797919744", "z": [-1.6, 1.14, -6.42], "ew_ma": [-0.33, 0.25, -1.56], "z_comb": -4.84, "p": 0.10759462026898656, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 6.7, "v": 6.35, "rv_gaia": 5.83, "ew_limit_ma": 15.242}, {"star": "3732539683617410816", "z": [-0.59, -3.45, -4.02], "ew_ma": [-0.25, -1.44, -2.42], "z_comb": -5.16, "p": 0.10994450277486126, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9902, "null_sd": 3.9, "v": -26.95, "rv_gaia": -27.25, "ew_limit_ma": 4.247}, {"star": "3650718804281798912", "z": [-3.16, -0.78, -4.29], "ew_ma": [-1.8, -0.42, -2.56], "z_comb": -4.79, "p": 0.12289385530723464, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9864, "null_sd": 5.31, "v": -12.2, "rv_gaia": -12.52, "ew_limit_ma": 7.341}, {"star": "1772187382746856320", "z": [1.46, 2.83, -7.58], "ew_ma": [0.51, 0.98, -2.54], "z_comb": -3.76, "p": 0.15109244537773112, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9903, "null_sd": 5.72, "v": -16.75, "rv_gaia": -16.94, "ew_limit_ma": 2.322}, {"star": "6802426038708609536", "z": [2.36, -2.22, -4.65], "ew_ma": [0.36, -0.32, -1.02], "z_comb": -3.96, "p": 0.16379181040947952, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 4.62, "v": -15.95, "rv_gaia": -16.09, "ew_limit_ma": 1.808}, {"star": "3835867938104798848", "z": [-2.41, -0.24, -2.87], "ew_ma": [-0.67, -0.08, -0.98], "z_comb": -3.15, "p": 0.167941602919854, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9926, "null_sd": 4.71, "v": -21.45, "rv_gaia": -21.84, "ew_limit_ma": 9.957}, {"star": "6150200345317455232", "z": [3.23, -2.79, -3.4], "ew_ma": [1.42, -0.83, -0.95], "z_comb": -3.02, "p": 0.1768911554422279, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9955, "null_sd": 3.97, "v": -6.45, "rv_gaia": -7.11, "ew_limit_ma": 2.908}, {"star": "5793182631952977920", "z": [1.02, -0.22, -5.4], "ew_ma": [0.35, -0.05, -1.14], "z_comb": -3.9, "p": 0.17714114294285285, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9938, "null_sd": 4.2, "v": -2.65, "rv_gaia": -3.17, "ew_limit_ma": 3.603}, {"star": "5902750168276592256", "z": [-1.96, 2.97, -6.12], "ew_ma": [-0.64, 1.16, -3.32], "z_comb": -3.74, "p": 0.1934403279836008, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.29, "v": -68.35, "rv_gaia": -68.78, "ew_limit_ma": 6.907}, {"star": "5459060117921483008", "z": [-7.12, -5.67, 3.27], "ew_ma": [-2.29, -1.62, 1.14], "z_comb": -3.03, "p": 0.20058997050147492, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9961, "null_sd": 4.31, "v": 44.65, "rv_gaia": 43.93, "ew_limit_ma": 3.807}, {"star": "6427244702486210816", "z": [-0.51, -0.02, -3.35], "ew_ma": [-0.12, -0.0, -0.8], "z_comb": -2.74, "p": 0.21573921303934804, "n_lines": 3, "n_spectra": 2, "twin_r": 0.994, "null_sd": 3.69, "v": -10.1, "rv_gaia": -10.76, "ew_limit_ma": 2.914}, {"star": "6796392812250051712", "z": [-6.33, 2.29, -3.22], "ew_ma": [-1.72, 0.79, -1.14], "z_comb": -3.38, "p": 0.23323833808309585, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9934, "null_sd": 33.83, "v": 0.15, "rv_gaia": -0.34, "ew_limit_ma": 4.943}, {"star": "6718894388002453120", "z": [-3.66, -6.0, 0.75], "ew_ma": [-1.46, -2.01, 0.33], "z_comb": -3.95, "p": 0.2351882405879706, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.76, "v": 60.5, "rv_gaia": 60.01, "ew_limit_ma": 7.21}, {"star": "5951165616611763456", "z": [-2.45, -1.3, -1.71], "ew_ma": [-0.69, -0.43, -0.51], "z_comb": -2.86, "p": 0.25308734563271834, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9894, "null_sd": 4.47, "v": 26.4, "rv_gaia": 25.96, "ew_limit_ma": 4.282}, {"star": "5528591961953902720", "z": [0.27, -3.18, -1.11], "ew_ma": [0.09, -0.9, -0.37], "z_comb": -2.49, "p": 0.2552872356382181, "n_lines": 3, "n_spectra": 4, "twin_r": 0.994, "null_sd": 4.89, "v": -1.35, "rv_gaia": -1.8, "ew_limit_ma": 14.443}, {"star": "4906784051581971200", "z": [-0.64, -0.23, -3.34], "ew_ma": [-0.2, -0.07, -1.03], "z_comb": -2.9, "p": 0.26608669566521675, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9957, "null_sd": 6.16, "v": 3.45, "rv_gaia": 2.92, "ew_limit_ma": 4.543}, {"star": "6612242034982766848", "z": [-5.98, 1.11, -0.67], "ew_ma": [-1.39, 0.28, -0.2], "z_comb": -1.95, "p": 0.27088645567721614, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 5.12, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 3.064}, {"star": "6018047019138644480", "z": [-1.57, -4.43, 1.53], "ew_ma": [-0.46, -1.35, 0.65], "z_comb": -1.78, "p": 0.2833358332083396, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.12, "v": 13.35, "rv_gaia": 12.85, "ew_limit_ma": 7.124}, {"star": "6141742283401003264", "z": [2.35, 0.79, -5.21], "ew_ma": [0.72, 0.3, -1.79], "z_comb": -2.75, "p": 0.29538523073846307, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 4.63, "v": -12.35, "rv_gaia": -13.03, "ew_limit_ma": 5.659}, {"star": "4763906879239461632", "z": [-3.81, 2.69, -2.4], "ew_ma": [-0.72, 0.6, -0.6], "z_comb": -1.67, "p": 0.30053497325133743, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9966, "null_sd": 4.45, "v": -1.05, "rv_gaia": -1.45, "ew_limit_ma": 3.755}, {"star": "4934923028038871296", "z": [2.02, 1.43, -4.45], "ew_ma": [0.64, 0.34, -1.22], "z_comb": -1.94, "p": 0.31903404829758514, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 4.66, "v": 12.25, "rv_gaia": 11.9, "ew_limit_ma": 5.95}, {"star": "4315804351350378496", "z": [1.08, -5.58, 1.05], "ew_ma": [0.63, -3.97, 0.97], "z_comb": -1.87, "p": 0.3342832858357082, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9924, "null_sd": 4.26, "v": -100.05, "rv_gaia": -100.33, "ew_limit_ma": 12.628}, {"star": "5945941905576552064", "z": [1.77, -1.77, -1.32], "ew_ma": [0.32, -0.34, -0.25], "z_comb": -1.37, "p": 0.34518274086295686, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 8.49, "v": -8.75, "rv_gaia": -9.54, "ew_limit_ma": 2.733}, {"star": "5056511692465250304", "z": [0.99, -5.06, 1.13], "ew_ma": [0.27, -1.51, 0.29], "z_comb": -1.56, "p": 0.34603269836508177, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9771, "null_sd": 4.05, "v": 18.3, "rv_gaia": 17.69, "ew_limit_ma": 7.151}, {"star": "3639760521643499776", "z": [-1.97, 0.7, -1.75], "ew_ma": [-0.43, 0.17, -0.55], "z_comb": -1.63, "p": 0.34918254087295636, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9987, "null_sd": 4.03, "v": -11.95, "rv_gaia": -12.39, "ew_limit_ma": 3.589}, {"star": "4867596937475715968", "z": [-0.39, -0.06, -1.08], "ew_ma": [-0.18, -0.03, -0.62], "z_comb": -0.99, "p": 0.352182390880456, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9757, "null_sd": 3.96, "v": -9.15, "rv_gaia": -9.94, "ew_limit_ma": 7.412}, {"star": "6062166950467100032", "z": [0.2, 1.03, -2.47], "ew_ma": [0.07, 0.3, -1.36], "z_comb": -1.26, "p": 0.36203189840507977, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 4.32, "v": -63.55, "rv_gaia": -63.57, "ew_limit_ma": 4.34}, {"star": "6879764552737781888", "z": [-3.42, -3.06, 2.49], "ew_ma": [-1.1, -1.03, 1.01], "z_comb": -0.94, "p": 0.36343182840857957, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.79, "v": 27.4, "rv_gaia": 27.2, "ew_limit_ma": 3.989}, {"star": "3250489115709122560", "z": [-1.64, -1.62, -0.02], "ew_ma": [-0.83, -0.88, -0.02], "z_comb": -1.46, "p": 0.40047997600119994, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9765, "null_sd": 6.59, "v": 121.05, "rv_gaia": 120.58, "ew_limit_ma": 29.47}, {"star": "5888394257280681856", "z": [3.1, -7.97, 3.7], "ew_ma": [5.73, -10.23, 4.79], "z_comb": -0.46, "p": 0.4060796960151992, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9791, "null_sd": 6.01, "v": -8.6, "rv_gaia": -8.77, "ew_limit_ma": 39.083}, {"star": "5129338021224785408", "z": [0.67, -0.5, -0.33], "ew_ma": [0.44, -0.3, -0.27], "z_comb": -0.3, "p": 0.45297735113244336, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9568, "null_sd": 3.86, "v": 29.85, "rv_gaia": 29.09, "ew_limit_ma": 9.087}, {"star": "5553647083168192512", "z": [0.3, -3.52, 0.98], "ew_ma": [0.12, -1.03, 0.46], "z_comb": -1.07, "p": 0.4577271136443178, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9796, "null_sd": 4.0, "v": 60.7, "rv_gaia": 59.67, "ew_limit_ma": 5.059}, {"star": "6096524382383054720", "z": [-1.64, 0.03, 0.15], "ew_ma": [-0.35, 0.01, 0.03], "z_comb": -0.43, "p": 0.4592270386480676, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9956, "null_sd": 4.52, "v": 5.1, "rv_gaia": 4.39, "ew_limit_ma": 4.191}, {"star": "5567900121118276736", "z": [-2.15, 2.16, -1.29], "ew_ma": [-0.62, 0.4, -0.32], "z_comb": -0.54, "p": 0.48287585620718965, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9948, "null_sd": 3.86, "v": 28.4, "rv_gaia": 27.55, "ew_limit_ma": 2.733}, {"star": "5586381090520538880", "z": [-2.32, 1.14, -0.12], "ew_ma": [-0.53, 0.25, -0.02], "z_comb": -0.26, "p": 0.4838758062096895, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.96, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 2.391}, {"star": "3009908378049913216", "z": [1.98, 0.68, -1.74], "ew_ma": [1.77, 0.44, -2.48], "z_comb": -0.28, "p": 0.49967501624918753, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9144, "null_sd": 4.44, "v": 27.0, "rv_gaia": 21.1, "ew_limit_ma": 10.635}, {"star": "3269362645115584640", "z": [1.35, -0.32, 0.29], "ew_ma": [0.28, -0.06, 0.06], "z_comb": 0.51, "p": 0.5220738963051847, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9971, "null_sd": 3.58, "v": 19.45, "rv_gaia": 18.73, "ew_limit_ma": 2.655}, {"star": "3480332916165099904", "z": [1.65, 0.54, -0.94], "ew_ma": [0.44, 0.15, -0.36], "z_comb": 0.14, "p": 0.5221238938053098, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9973, "null_sd": 4.36, "v": 14.45, "rv_gaia": 14.0, "ew_limit_ma": 5.639}, {"star": "5765846127180770432", "z": [-0.16, -0.54, 0.6], "ew_ma": [-0.04, -0.12, 0.14], "z_comb": 0.11, "p": 0.5272236388180591, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9949, "null_sd": 3.75, "v": -4.15, "rv_gaia": -4.87, "ew_limit_ma": 3.601}, {"star": "3407611182744289152", "z": [2.61, -1.64, 0.46], "ew_ma": [1.48, -0.93, 0.26], "z_comb": 0.35, "p": 0.5396230188490575, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 4.73, "v": 21.1, "rv_gaia": 20.6, "ew_limit_ma": 10.251}, {"star": "3532823773073745536", "z": [1.91, -0.36, 0.94], "ew_ma": [0.83, -0.2, 0.58], "z_comb": 1.17, "p": 0.5699715014249288, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9932, "null_sd": 6.04, "v": 40.5, "rv_gaia": 39.76, "ew_limit_ma": 19.699}, {"star": "5381537023379295232", "z": [-0.52, 1.82, -0.21], "ew_ma": [-0.12, 0.44, -0.05], "z_comb": 0.65, "p": 0.608269586520674, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9973, "null_sd": 3.5, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 2.959}, {"star": "5927236979422123264", "z": [-1.62, -1.22, 2.5], "ew_ma": [-0.61, -0.57, 1.23], "z_comb": 0.69, "p": 0.608469576521174, "n_lines": 3, "n_spectra": 3, "twin_r": 0.991, "null_sd": 5.38, "v": -8.4, "rv_gaia": -9.12, "ew_limit_ma": 15.259}, {"star": "5317114850417299584", "z": [-0.52, -3.75, 3.94], "ew_ma": [-0.11, -1.08, 1.19], "z_comb": 0.79, "p": 0.6119194040297985, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 3.63, "v": -5.9, "rv_gaia": -6.29, "ew_limit_ma": 3.204}, {"star": "6357835694518769408", "z": [3.06, 0.37, -0.73], "ew_ma": [0.88, 0.1, -0.23], "z_comb": 0.69, "p": 0.6144192790360482, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9963, "null_sd": 3.56, "v": 14.8, "rv_gaia": 14.4, "ew_limit_ma": 4.319}, {"star": "6698960688866464768", "z": [-1.53, -0.37, 2.9], "ew_ma": [-1.25, -0.21, 2.71], "z_comb": 1.5, "p": 0.6172191390430478, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9144, "null_sd": 5.41, "v": -3.5, "rv_gaia": -7.85, "ew_limit_ma": 14.278}, {"star": "6629790584164277376", "z": [-2.66, -0.34, 2.37], "ew_ma": [-0.64, -0.07, 0.7], "z_comb": 0.72, "p": 0.6223188840557972, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9971, "null_sd": 24.24, "v": 0.75, "rv_gaia": 0.5, "ew_limit_ma": 11.951}, {"star": "6489909443564308224", "z": [4.23, -0.28, -0.21], "ew_ma": [0.91, -0.05, -0.04], "z_comb": 1.14, "p": 0.6282685865706714, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 3.64, "v": 0.75, "rv_gaia": 0.63, "ew_limit_ma": 2.635}, {"star": "5291028181119851776", "z": [-0.11, 1.14, 1.23], "ew_ma": [-0.02, 0.21, 0.22], "z_comb": 1.53, "p": 0.632518374081296, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.68, "v": 15.6, "rv_gaia": 15.01, "ew_limit_ma": 3.488}, {"star": "2423493369021649920", "z": [5.32, -2.66, 1.76], "ew_ma": [1.43, -1.03, 0.55], "z_comb": 1.71, "p": 0.6357182140892955, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9933, "null_sd": 3.88, "v": -1.95, "rv_gaia": -2.55, "ew_limit_ma": 5.465}, {"star": "2913411183149615744", "z": [2.13, -1.63, 2.09], "ew_ma": [0.43, -0.33, 0.47], "z_comb": 1.44, "p": 0.6431678416079196, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.36, "v": 22.4, "rv_gaia": 21.69, "ew_limit_ma": 2.732}, {"star": "3855524182352238336", "z": [-1.29, -1.48, 3.99], "ew_ma": [-0.24, -0.2, 0.67], "z_comb": 1.8, "p": 0.6731163441827909, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9952, "null_sd": 9.34, "v": 16.8, "rv_gaia": 16.57, "ew_limit_ma": 2.219}, {"star": "3256786534197166208", "z": [-0.22, -0.89, 3.11], "ew_ma": [-0.06, -0.16, 0.76], "z_comb": 1.82, "p": 0.6858157092145393, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9948, "null_sd": 3.72, "v": 18.1, "rv_gaia": 17.62, "ew_limit_ma": 2.4}, {"star": "4423865487962417024", "z": [1.77, -2.27, 3.09], "ew_ma": [0.46, -0.66, 0.89], "z_comb": 1.73, "p": 0.6912654367281635, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.25, "v": 19.55, "rv_gaia": 18.95, "ew_limit_ma": 5.369}, {"star": "3551002857809958400", "z": [0.84, -0.49, 3.17], "ew_ma": [0.27, -0.2, 1.31], "z_comb": 2.45, "p": 0.6947152642367882, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9942, "null_sd": 6.6, "v": -3.55, "rv_gaia": -4.08, "ew_limit_ma": 10.822}, {"star": "2477815222028038272", "z": [1.58, -1.25, 2.86], "ew_ma": [0.97, -0.68, 1.67], "z_comb": 2.05, "p": 0.7033148342582871, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9819, "null_sd": 3.84, "v": 11.9, "rv_gaia": 11.46, "ew_limit_ma": 10.949}, {"star": "5663558453071724288", "z": [-0.77, -1.58, 5.0], "ew_ma": [-0.21, -0.41, 1.81], "z_comb": 2.7, "p": 0.7141142942852857, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9916, "null_sd": 6.16, "v": 35.15, "rv_gaia": 34.7, "ew_limit_ma": 16.742}, {"star": "3101382419728401408", "z": [-3.74, -0.77, 5.83], "ew_ma": [-2.21, -0.54, 4.17], "z_comb": 2.77, "p": 0.7168141592920354, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 4.78, "v": 54.05, "rv_gaia": 53.99, "ew_limit_ma": 11.489}, {"star": "4708607629114652032", "z": [0.51, -3.52, 4.5], "ew_ma": [0.1, -1.21, 2.1], "z_comb": 1.69, "p": 0.7168641567921604, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9975, "null_sd": 3.73, "v": 95.75, "rv_gaia": 95.23, "ew_limit_ma": 5.334}, {"star": "5760701787150565888", "z": [0.44, 1.92, 1.44], "ew_ma": [0.12, 0.37, 0.4], "z_comb": 2.3, "p": 0.7418129093545323, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9979, "null_sd": 4.18, "v": 32.5, "rv_gaia": 31.99, "ew_limit_ma": 3.705}, {"star": "2473608009504466688", "z": [2.29, 0.17, 1.67], "ew_ma": [0.78, 0.07, 0.91], "z_comb": 2.15, "p": 0.744312784360782, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9839, "null_sd": 5.51, "v": 8.7, "rv_gaia": 8.21, "ew_limit_ma": 25.621}, {"star": "5357075947709011456", "z": [3.49, 3.84, -1.84], "ew_ma": [1.29, 1.36, -0.91], "z_comb": 1.88, "p": 0.7471626418679066, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9949, "null_sd": 7.36, "v": 21.6, "rv_gaia": 21.19, "ew_limit_ma": 14.112}, {"star": "3113909602378333056", "z": [5.23, 6.02, -3.64], "ew_ma": [1.44, 1.56, -0.95], "z_comb": 2.29, "p": 0.7492125393730313, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9945, "null_sd": 4.68, "v": -7.65, "rv_gaia": -8.02, "ew_limit_ma": 3.559}, {"star": "5452492082132835840", "z": [3.6, 4.89, -1.78], "ew_ma": [1.18, 1.91, -0.63], "z_comb": 2.54, "p": 0.7737113144342783, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9939, "null_sd": 3.02, "v": 13.4, "rv_gaia": 12.83, "ew_limit_ma": 5.145}, {"star": "2382711653818308224", "z": [0.0, 3.22, 1.1], "ew_ma": [0.0, 1.96, 0.76], "z_comb": 2.6, "p": 0.7780610969451528, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9787, "null_sd": 3.98, "v": 7.3, "rv_gaia": 6.41, "ew_limit_ma": 13.333}, {"star": "6484716209628726912", "z": [2.0, 1.22, 1.64], "ew_ma": [0.55, 0.39, 0.64], "z_comb": 2.61, "p": 0.7935603219839008, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9926, "null_sd": 3.82, "v": -7.55, "rv_gaia": -7.8, "ew_limit_ma": 5.301}, {"star": "5062172841616745856", "z": [-0.97, 1.57, 2.28], "ew_ma": [-0.31, 0.46, 0.68], "z_comb": 2.26, "p": 0.7964601769911505, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9956, "null_sd": 3.74, "v": 11.8, "rv_gaia": 11.16, "ew_limit_ma": 6.252}, {"star": "4038724053986441856", "z": [2.32, -1.89, 4.4], "ew_ma": [0.8, -0.45, 1.02], "z_comb": 3.13, "p": 0.807959602019899, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9943, "null_sd": 3.97, "v": 15.6, "rv_gaia": 14.99, "ew_limit_ma": 3.546}, {"star": "5559265690666327168", "z": [2.49, 2.53, 2.61], "ew_ma": [0.77, 1.21, 0.99], "z_comb": 4.23, "p": 0.8116094195290235, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9948, "null_sd": 4.65, "v": 89.1, "rv_gaia": 88.55, "ew_limit_ma": 10.16}, {"star": "4745373133284418816", "z": [1.24, -0.37, 4.79], "ew_ma": [0.31, -0.1, 1.59], "z_comb": 3.89, "p": 0.8362081895905205, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9923, "null_sd": 4.56, "v": 17.6, "rv_gaia": 16.94, "ew_limit_ma": 5.702}, {"star": "1237090738916392704", "z": [-0.09, 5.1, 2.15], "ew_ma": [-0.03, 2.17, 0.72], "z_comb": 4.4, "p": 0.8431578421078946, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 5.43, "v": 2.2, "rv_gaia": 1.59, "ew_limit_ma": 14.464}, {"star": "3285218186904332288", "z": [3.38, -1.99, 5.53], "ew_ma": [1.88, -1.06, 3.36], "z_comb": 4.3, "p": 0.8897055147242637, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9728, "null_sd": 4.56, "v": -7.1, "rv_gaia": -7.28, "ew_limit_ma": 26.338}, {"star": "3789271459953459328", "z": [1.25, -1.36, 6.92], "ew_ma": [0.49, -0.41, 1.81], "z_comb": 4.98, "p": 0.9085545722713865, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9917, "null_sd": 5.75, "v": 19.0, "rv_gaia": 18.5, "ew_limit_ma": 22.23}, {"star": "3946438125929224320", "z": [3.13, 1.27, 3.75], "ew_ma": [0.57, 0.22, 0.78], "z_comb": 4.63, "p": 0.9130543472826359, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.32, "v": 2.25, "rv_gaia": 1.76, "ew_limit_ma": 2.89}, {"star": "5640565607657897728", "z": [4.35, 4.39, 2.98], "ew_ma": [1.24, 1.52, 0.95], "z_comb": 6.16, "p": 0.9358532073396331, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9894, "null_sd": 4.98, "v": 15.15, "rv_gaia": 14.67, "ew_limit_ma": 16.574}, {"star": "2980492387558410112", "z": [3.04, 2.08, 5.71], "ew_ma": [0.55, 0.37, 1.18], "z_comb": 6.54, "p": 0.9580020998950053, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9975, "null_sd": 4.51, "v": 22.35, "rv_gaia": 21.6, "ew_limit_ma": 3.278}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Tc_HARPS.json b/papers/short_lived_elements/data/element_Tc_HARPS.json new file mode 100644 index 0000000000000000000000000000000000000000..1ae31165240a3f6ef96fc6d003f80dc26431801e --- /dev/null +++ b/papers/short_lived_elements/data/element_Tc_HARPS.json @@ -0,0 +1 @@ +{"lines": [[4238.19, 0.4467021155581737], [4262.27, 0.7127530411241091], [4297.06, 1.0]], "stable": [true, true, true], "results": [{"star": "4356054757585316992", "z": [-2.47, -2.54, -2.06], "ew_ma": [-0.2, -0.42, -0.32], "z_comb": -3.81, "p": 0.038348082595870206, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.33, "v": -19.7, "rv_gaia": -20.28, "ew_limit_ma": 0.529}, {"star": "4975284381908412672", "z": [-1.13, -0.86, -3.63], "ew_ma": [-0.1, -0.07, -0.33], "z_comb": -3.63, "p": 0.03944802759862007, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.95, "v": -10.2, "rv_gaia": -10.92, "ew_limit_ma": 0.2}, {"star": "4176501313320676992", "z": [0.06, -2.45, -2.66], "ew_ma": [0.0, -0.33, -0.27], "z_comb": -3.36, "p": 0.04074796260186991, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 1.95, "v": -16.35, "rv_gaia": -17.15, "ew_limit_ma": 0.344}, {"star": "6153706477443518976", "z": [-1.74, 0.15, -3.83], "ew_ma": [-0.29, 0.03, -0.89], "z_comb": -3.44, "p": 0.05799710014499275, "n_lines": 3, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.3, "v": -25.7, "rv_gaia": -26.31, "ew_limit_ma": 0.92}, {"star": "5540006949934104448", "z": [-2.76, -4.38, -0.52], "ew_ma": [-0.41, -0.76, -0.1], "z_comb": -3.73, "p": 0.059397030148492576, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9966, "null_sd": 2.5, "v": 50.1, "rv_gaia": 49.31, "ew_limit_ma": 1.018}, {"star": "6029992663310612096", "z": [-1.31, -3.83, -1.29], "ew_ma": [-0.32, -1.0, -0.3], "z_comb": -3.52, "p": 0.09149542522873856, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.79, "v": 14.75, "rv_gaia": 14.08, "ew_limit_ma": 1.685}, {"star": "5790389872417570816", "z": [0.19, -0.12, -3.14], "ew_ma": [0.03, -0.02, -0.74], "z_comb": -2.4, "p": 0.11074446277686116, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.5, "v": -20.35, "rv_gaia": -21.17, "ew_limit_ma": 0.829}, {"star": "4768170579173552896", "z": [-0.35, 1.8, -5.53], "ew_ma": [-0.06, 0.26, -0.79], "z_comb": -3.37, "p": 0.11149442527873607, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.77, "v": -4.85, "rv_gaia": -5.53, "ew_limit_ma": 1.076}, {"star": "6088054505011960832", "z": [-2.86, -4.48, 0.89], "ew_ma": [-0.31, -0.49, 0.11], "z_comb": -2.74, "p": 0.11329433528323583, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.51, "v": 59.3, "rv_gaia": 58.66, "ew_limit_ma": 0.493}, {"star": "5452492082132835840", "z": [1.03, -0.33, -3.17], "ew_ma": [0.11, -0.03, -0.36], "z_comb": -2.25, "p": 0.15134243287835608, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.49, "v": 13.45, "rv_gaia": 12.83, "ew_limit_ma": 0.557}, {"star": "4923433303326992384", "z": [-0.22, 0.27, -2.36], "ew_ma": [-0.03, 0.03, -0.28], "z_comb": -1.73, "p": 0.1631918404079796, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.04, "v": 7.25, "rv_gaia": 6.53, "ew_limit_ma": 0.522}, {"star": "5848156426657892480", "z": [2.07, -1.0, -2.88], "ew_ma": [0.18, -0.11, -0.44], "z_comb": -2.05, "p": 0.17899105044747762, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.37, "v": -30.0, "rv_gaia": -30.56, "ew_limit_ma": 0.638}, {"star": "6764687466752221824", "z": [-3.55, 1.08, -1.64], "ew_ma": [-0.51, 0.32, -0.28], "z_comb": -1.88, "p": 0.17959102044897754, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.4, "v": -41.95, "rv_gaia": -42.55, "ew_limit_ma": 1.586}, {"star": "5548164986925169024", "z": [-1.22, -2.89, -0.17], "ew_ma": [-0.12, -0.23, -0.03], "z_comb": -2.12, "p": 0.19009049547522625, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.37, "v": 52.4, "rv_gaia": 51.69, "ew_limit_ma": 0.701}, {"star": "6606890608810806528", "z": [-2.21, 0.32, -2.67], "ew_ma": [-0.48, 0.1, -0.81], "z_comb": -2.62, "p": 0.19709014549272535, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.61, "v": -19.6, "rv_gaia": -20.32, "ew_limit_ma": 2.954}, {"star": "5459060117921483008", "z": [-2.95, -0.42, -0.29], "ew_ma": [-0.32, -0.04, -0.03], "z_comb": -1.46, "p": 0.2167391630418479, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.61, "v": 44.6, "rv_gaia": 43.93, "ew_limit_ma": 0.799}, {"star": "5553647083168192512", "z": [-1.03, -3.38, -0.09], "ew_ma": [-0.23, -0.73, -0.02], "z_comb": -2.26, "p": 0.21938903054847259, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9979, "null_sd": 3.09, "v": 60.35, "rv_gaia": 59.67, "ew_limit_ma": 1.987}, {"star": "5479222240596469632", "z": [1.07, -5.71, 1.34], "ew_ma": [0.25, -1.13, 0.26], "z_comb": -1.73, "p": 0.22758862056897156, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.88, "v": 22.85, "rv_gaia": 22.03, "ew_limit_ma": 1.534}, {"star": "5481848424118748672", "z": [-0.05, 1.19, -2.9], "ew_ma": [-0.03, 0.95, -2.47], "z_comb": -1.58, "p": 0.23583820808959552, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9787, "null_sd": 3.62, "v": 32.25, "rv_gaia": 31.45, "ew_limit_ma": 9.146}, {"star": "4400452830957830656", "z": [0.75, 0.88, -3.16], "ew_ma": [0.3, 0.55, -2.08], "z_comb": -1.68, "p": 0.248037598120094, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9918, "null_sd": 3.34, "v": -36.7, "rv_gaia": -37.09, "ew_limit_ma": 5.839}, {"star": "3646061719703116032", "z": [-2.53, -2.85, 1.49], "ew_ma": [-0.22, -0.28, 0.14], "z_comb": -1.28, "p": 0.26768661566921653, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 1.9, "v": 38.4, "rv_gaia": 37.73, "ew_limit_ma": 0.569}, {"star": "6454967273273436416", "z": [1.25, -0.7, -1.98], "ew_ma": [0.24, -0.17, -0.64], "z_comb": -1.47, "p": 0.2708364581770911, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9969, "null_sd": 3.54, "v": -31.55, "rv_gaia": -31.9, "ew_limit_ma": 5.975}, {"star": "6489771832811810432", "z": [2.02, 0.04, -3.27], "ew_ma": [0.57, 0.02, -1.06], "z_comb": -1.79, "p": 0.27723613819309034, "n_lines": 3, "n_spectra": 6, "twin_r": 0.996, "null_sd": 4.57, "v": -30.05, "rv_gaia": -31.05, "ew_limit_ma": 6.85}, {"star": "3532823773073745536", "z": [-2.37, -0.39, -0.35], "ew_ma": [-0.25, -0.05, -0.05], "z_comb": -1.3, "p": 0.28273586320683963, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.49, "v": 40.35, "rv_gaia": 39.76, "ew_limit_ma": 1.001}, {"star": "4777373903814124032", "z": [-0.75, -3.44, 1.02], "ew_ma": [-0.15, -0.63, 0.19], "z_comb": -1.35, "p": 0.28763561821908906, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9985, "null_sd": 2.37, "v": 65.0, "rv_gaia": 64.22, "ew_limit_ma": 1.312}, {"star": "6914237987476826624", "z": [-1.23, -1.81, 0.09], "ew_ma": [-0.13, -0.2, 0.01], "z_comb": -1.34, "p": 0.30138493075346234, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.46, "v": 3.8, "rv_gaia": 3.1, "ew_limit_ma": 0.849}, {"star": "5798962867668048768", "z": [0.01, 0.32, -1.69], "ew_ma": [0.0, 0.08, -0.44], "z_comb": -1.11, "p": 0.3163841807909605, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9961, "null_sd": 3.07, "v": 2.7, "rv_gaia": 1.94, "ew_limit_ma": 2.771}, {"star": "6213644846302305536", "z": [-1.94, 4.64, -2.83], "ew_ma": [-0.34, 0.77, -0.46], "z_comb": -0.3, "p": 0.3249337533123344, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.76, "v": -5.85, "rv_gaia": -6.56, "ew_limit_ma": 1.872}, {"star": "4867596937475715968", "z": [-2.42, 0.32, -0.17], "ew_ma": [-0.31, 0.04, -0.02], "z_comb": -0.78, "p": 0.33318334083295836, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.11, "v": -9.4, "rv_gaia": -9.94, "ew_limit_ma": 0.976}, {"star": "6802426038708609536", "z": [-1.2, 0.85, -1.93], "ew_ma": [-0.16, 0.13, -0.34], "z_comb": -1.43, "p": 0.3534323283835808, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.06, "v": -15.9, "rv_gaia": -16.09, "ew_limit_ma": 2.272}, {"star": "5609058277323483392", "z": [-0.09, 0.12, -1.41], "ew_ma": [-0.03, 0.05, -0.46], "z_comb": -1.04, "p": 0.3566821658917054, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.39, "v": 73.15, "rv_gaia": 72.42, "ew_limit_ma": 4.705}, {"star": "3480332916165099904", "z": [1.77, -0.05, -1.53], "ew_ma": [0.21, -0.01, -0.2], "z_comb": -0.59, "p": 0.3635818209089546, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.43, "v": 14.6, "rv_gaia": 14.0, "ew_limit_ma": 0.966}, {"star": "6133033601555979648", "z": [1.28, -1.1, -0.78], "ew_ma": [0.5, -0.45, -0.23], "z_comb": -0.76, "p": 0.3697315134243288, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.17, "v": 18.7, "rv_gaia": 18.05, "ew_limit_ma": 5.376}, {"star": "2585856120791459584", "z": [0.91, 1.43, -2.06], "ew_ma": [0.13, 0.32, -0.42], "z_comb": -0.48, "p": 0.3702814859257037, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.89, "v": -20.35, "rv_gaia": -20.97, "ew_limit_ma": 1.329}, {"star": "3182634954624823168", "z": [-0.95, 2.99, -2.72], "ew_ma": [-0.15, 0.49, -0.5], "z_comb": -0.77, "p": 0.37073146342682867, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.47, "v": 5.4, "rv_gaia": 4.81, "ew_limit_ma": 2.246}, {"star": "2468730472844294016", "z": [1.36, -1.25, -0.16], "ew_ma": [0.19, -0.18, -0.02], "z_comb": -0.34, "p": 0.42012899355032246, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.67, "v": 8.85, "rv_gaia": 8.11, "ew_limit_ma": 0.724}, {"star": "6370513647703084544", "z": [1.65, -2.23, 0.48], "ew_ma": [0.17, -0.19, 0.05], "z_comb": -0.28, "p": 0.4216789160541973, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9995, "null_sd": 2.21, "v": 34.95, "rv_gaia": 34.33, "ew_limit_ma": 0.853}, {"star": "6612242034982766848", "z": [-1.1, -0.48, 0.95], "ew_ma": [-0.2, -0.11, 0.18], "z_comb": 0.09, "p": 0.4223788810559472, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 3.72, "v": -16.05, "rv_gaia": -16.34, "ew_limit_ma": 2.537}, {"star": "3750995604764854400", "z": [0.49, -2.71, 1.13], "ew_ma": [0.04, -0.27, 0.09], "z_comb": -0.45, "p": 0.42522873856307186, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9992, "null_sd": 1.97, "v": -17.45, "rv_gaia": -17.93, "ew_limit_ma": 0.467}, {"star": "2324785228033780608", "z": [-0.81, 3.34, -2.84], "ew_ma": [-0.12, 0.58, -0.52], "z_comb": -0.63, "p": 0.42777861106944653, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": -6.85, "rv_gaia": -7.42, "ew_limit_ma": 2.063}, {"star": "3022685626580347392", "z": [0.04, 2.04, -1.84], "ew_ma": [0.01, 0.45, -0.58], "z_comb": -0.28, "p": 0.4337283135843208, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9982, "null_sd": 3.08, "v": 144.05, "rv_gaia": 143.42, "ew_limit_ma": 5.013}, {"star": "2523361151179609344", "z": [1.98, -4.53, 1.88], "ew_ma": [0.19, -0.44, 0.18], "z_comb": -0.36, "p": 0.44942752862356883, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 1.82, "v": 12.9, "rv_gaia": 12.23, "ew_limit_ma": 0.726}, {"star": "5528591961953902720", "z": [1.03, -1.04, -0.54], "ew_ma": [0.35, -0.38, -0.19], "z_comb": -0.63, "p": 0.45017749112544375, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 3.61, "v": -1.05, "rv_gaia": -1.8, "ew_limit_ma": 4.242}, {"star": "4847282124418880256", "z": [-0.12, 1.95, -1.86], "ew_ma": [-0.02, 0.34, -0.43], "z_comb": -0.4, "p": 0.45062746862656866, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9947, "null_sd": 2.93, "v": 5.05, "rv_gaia": 4.36, "ew_limit_ma": 3.97}, {"star": "3786697056556771584", "z": [0.99, 1.27, -1.22], "ew_ma": [0.11, 0.16, -0.14], "z_comb": 0.1, "p": 0.4676266186690666, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.32, "v": 13.9, "rv_gaia": 13.2, "ew_limit_ma": 1.212}, {"star": "6703245382605547520", "z": [-2.2, -0.32, 0.86], "ew_ma": [-0.21, -0.03, 0.08], "z_comb": -0.27, "p": 0.4687265636718164, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 1.83, "v": 33.15, "rv_gaia": 32.63, "ew_limit_ma": 0.521}, {"star": "6128366415218881536", "z": [0.64, -2.09, 0.38], "ew_ma": [0.08, -0.18, 0.03], "z_comb": -0.63, "p": 0.4734763261836908, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.82, "v": 31.2, "rv_gaia": 30.47, "ew_limit_ma": 0.968}, {"star": "3346787986201584896", "z": [1.39, 2.09, -2.18], "ew_ma": [0.2, 0.43, -0.63], "z_comb": -0.05, "p": 0.47712614369281536, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9968, "null_sd": 2.78, "v": 1.1, "rv_gaia": 0.26, "ew_limit_ma": 2.412}, {"star": "6879764552737781888", "z": [0.61, -0.48, 0.02], "ew_ma": [0.07, -0.06, 0.0], "z_comb": -0.04, "p": 0.495975201239938, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.45, "v": 27.3, "rv_gaia": 27.2, "ew_limit_ma": 1.056}, {"star": "3345968334645285376", "z": [0.77, 0.12, -0.34], "ew_ma": [0.13, 0.02, -0.07], "z_comb": 0.07, "p": 0.5067246637668117, "n_lines": 3, "n_spectra": 6, "twin_r": 0.997, "null_sd": 2.21, "v": -9.4, "rv_gaia": -10.01, "ew_limit_ma": 1.678}, {"star": "3811594088617869056", "z": [2.91, -0.94, -0.44], "ew_ma": [0.45, -0.12, -0.07], "z_comb": 0.15, "p": 0.5183240837958102, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.0, "v": 10.7, "rv_gaia": 10.06, "ew_limit_ma": 1.187}, {"star": "2966790170574625408", "z": [1.54, -2.62, 1.11], "ew_ma": [0.22, -0.49, 0.23], "z_comb": -0.06, "p": 0.5266236688165592, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 3.95, "v": 38.45, "rv_gaia": 37.83, "ew_limit_ma": 8.201}, {"star": "5765846127180770432", "z": [-2.29, 0.73, 0.32], "ew_ma": [-0.66, 0.26, 0.1], "z_comb": -0.14, "p": 0.5321233938303085, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 1.86, "v": -4.25, "rv_gaia": -4.87, "ew_limit_ma": 2.027}, {"star": "5357075947709011456", "z": [0.04, 1.65, -0.96], "ew_ma": [0.01, 0.31, -0.18], "z_comb": 0.18, "p": 0.5339233038348082, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.54, "v": 21.5, "rv_gaia": 21.19, "ew_limit_ma": 1.523}, {"star": "5569858798004394624", "z": [-1.77, -1.77, 2.07], "ew_ma": [-0.17, -0.18, 0.23], "z_comb": 0.02, "p": 0.5539723013849307, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9974, "null_sd": 2.37, "v": 57.1, "rv_gaia": 56.33, "ew_limit_ma": 0.85}, {"star": "5906633952564270848", "z": [-2.96, 3.02, -0.51], "ew_ma": [-0.61, 0.62, -0.1], "z_comb": 0.24, "p": 0.5639718014099295, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9978, "null_sd": 3.5, "v": -7.0, "rv_gaia": -7.68, "ew_limit_ma": 3.442}, {"star": "2477815222028038272", "z": [0.47, -1.86, 1.9], "ew_ma": [0.09, -0.35, 0.51], "z_comb": 0.6, "p": 0.575821208939553, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.27, "v": 12.1, "rv_gaia": 11.46, "ew_limit_ma": 2.252}, {"star": "3799626935341796096", "z": [-0.06, 1.86, -0.69], "ew_ma": [-0.01, 0.35, -0.15], "z_comb": 0.47, "p": 0.5928703564821759, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9981, "null_sd": 2.66, "v": 2.5, "rv_gaia": 1.89, "ew_limit_ma": 2.498}, {"star": "6489909443564308224", "z": [3.7, -1.9, 0.75], "ew_ma": [0.52, -0.3, 0.11], "z_comb": 0.8, "p": 0.5967701614919254, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9955, "null_sd": 3.17, "v": 0.85, "rv_gaia": 0.63, "ew_limit_ma": 1.693}, {"star": "5559265690666327168", "z": [-0.74, -0.06, 1.63], "ew_ma": [-0.12, -0.01, 0.46], "z_comb": 0.96, "p": 0.5968701564921753, "n_lines": 3, "n_spectra": 6, "twin_r": 0.998, "null_sd": 2.92, "v": 89.25, "rv_gaia": 88.55, "ew_limit_ma": 3.039}, {"star": "6904703228801028864", "z": [1.02, 2.4, -1.35], "ew_ma": [0.17, 0.39, -0.16], "z_comb": 0.63, "p": 0.5984200789960502, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 3.02, "v": 10.05, "rv_gaia": 9.13, "ew_limit_ma": 2.606}, {"star": "4117290138348536064", "z": [-1.21, -0.33, 1.6], "ew_ma": [-0.18, -0.05, 0.37], "z_comb": 0.63, "p": 0.6215689215539223, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.59, "v": 10.6, "rv_gaia": 10.36, "ew_limit_ma": 1.43}, {"star": "5596797039059063680", "z": [0.11, -0.83, 1.5], "ew_ma": [0.02, -0.15, 0.27], "z_comb": 0.73, "p": 0.6284185790710465, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.5, "v": -15.0, "rv_gaia": -15.71, "ew_limit_ma": 1.618}, {"star": "6270906415441316224", "z": [-1.0, -1.13, 1.23], "ew_ma": [-0.25, -0.3, 0.42], "z_comb": -0.01, "p": 0.631568421578921, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9915, "null_sd": 7.13, "v": -21.9, "rv_gaia": -22.28, "ew_limit_ma": 13.351}, {"star": "5395795730687103488", "z": [-0.41, -1.02, 1.98], "ew_ma": [-0.05, -0.16, 0.33], "z_comb": 0.82, "p": 0.6493675316234189, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9964, "null_sd": 2.43, "v": 44.0, "rv_gaia": 43.4, "ew_limit_ma": 1.401}, {"star": "4418203587193988480", "z": [0.61, 4.09, -1.54], "ew_ma": [0.12, 1.15, -0.45], "z_comb": 1.26, "p": 0.6545672716364181, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.87, "v": -68.75, "rv_gaia": -69.63, "ew_limit_ma": 4.068}, {"star": "5317114850417299584", "z": [0.33, -2.63, 2.95], "ew_ma": [0.05, -0.49, 0.65], "z_comb": 0.94, "p": 0.655967201639918, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9936, "null_sd": 2.78, "v": -6.25, "rv_gaia": -6.29, "ew_limit_ma": 2.78}, {"star": "6603827644293770624", "z": [-1.27, 1.08, 0.94], "ew_ma": [-0.19, 0.17, 0.14], "z_comb": 0.87, "p": 0.6661166941652917, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.16, "v": 1.1, "rv_gaia": 0.39, "ew_limit_ma": 1.439}, {"star": "5493588665684618752", "z": [0.15, 1.07, 0.71], "ew_ma": [0.02, 0.19, 0.13], "z_comb": 1.19, "p": 0.6739663016849158, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 3.08, "v": 5.45, "rv_gaia": 4.82, "ew_limit_ma": 2.269}, {"star": "6519024545827374336", "z": [1.83, 0.53, 0.3], "ew_ma": [0.36, 0.11, 0.06], "z_comb": 1.15, "p": 0.6752162391880406, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 2.32, "v": 19.15, "rv_gaia": 18.68, "ew_limit_ma": 1.759}, {"star": "2341817487782612480", "z": [0.47, 2.64, -0.9], "ew_ma": [0.04, 0.24, -0.1], "z_comb": 0.91, "p": 0.6835658217089146, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9993, "null_sd": 2.11, "v": 21.6, "rv_gaia": 20.93, "ew_limit_ma": 1.085}, {"star": "2918894859953947392", "z": [-0.8, 0.92, 1.39], "ew_ma": [-0.08, 0.09, 0.11], "z_comb": 1.29, "p": 0.688315584220789, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9973, "null_sd": 2.67, "v": -9.9, "rv_gaia": -10.34, "ew_limit_ma": 1.424}, {"star": "2633449134434620288", "z": [1.91, -0.83, 1.36], "ew_ma": [0.24, -0.12, 0.22], "z_comb": 1.24, "p": 0.6907654617269137, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 3.18, "v": -12.1, "rv_gaia": -12.6, "ew_limit_ma": 2.209}, {"star": "2533723670313663872", "z": [1.74, 2.81, -0.48], "ew_ma": [1.89, 2.86, -0.55], "z_comb": 1.76, "p": 0.6918154092295385, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9571, "null_sd": 3.04, "v": 18.1, "rv_gaia": 16.81, "ew_limit_ma": 16.07}, {"star": "5855730584310531200", "z": [0.4, -0.29, 1.86], "ew_ma": [0.1, -0.12, 0.71], "z_comb": 1.4, "p": 0.696015199240038, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9962, "null_sd": 3.79, "v": 105.15, "rv_gaia": 104.53, "ew_limit_ma": 11.857}, {"star": "3585098090614578688", "z": [0.14, -0.6, 2.05], "ew_ma": [0.02, -0.1, 0.38], "z_comb": 1.29, "p": 0.6990650467476626, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9948, "null_sd": 4.16, "v": -22.15, "rv_gaia": -22.45, "ew_limit_ma": 4.49}, {"star": "5725122999630404096", "z": [1.92, 1.25, 0.13], "ew_ma": [0.28, 0.17, 0.02], "z_comb": 1.44, "p": 0.7460626968651567, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9958, "null_sd": 2.75, "v": 33.35, "rv_gaia": 33.23, "ew_limit_ma": 1.345}, {"star": "5586381090520538880", "z": [-2.05, 4.24, -0.01], "ew_ma": [-0.21, 0.43, -0.0], "z_comb": 1.61, "p": 0.7482625868706565, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9996, "null_sd": 2.88, "v": 9.85, "rv_gaia": 9.18, "ew_limit_ma": 1.263}, {"star": "4383374219923745024", "z": [1.54, 4.09, -1.34], "ew_ma": [0.31, 1.04, -0.28], "z_comb": 1.73, "p": 0.7572621368931554, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9975, "null_sd": 2.09, "v": 10.95, "rv_gaia": 10.35, "ew_limit_ma": 2.234}, {"star": "2390702771185162112", "z": [2.75, -1.08, 2.07], "ew_ma": [0.49, -0.18, 0.35], "z_comb": 1.94, "p": 0.7819609019549023, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.61, "v": 10.85, "rv_gaia": 10.28, "ew_limit_ma": 2.306}, {"star": "5876112300125320448", "z": [-1.44, 1.24, 2.46], "ew_ma": [-0.14, 0.1, 0.24], "z_comb": 2.07, "p": 0.7976601169941503, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9987, "null_sd": 2.62, "v": 38.6, "rv_gaia": 37.83, "ew_limit_ma": 1.242}, {"star": "5320952798822552064", "z": [1.83, 1.58, 0.55], "ew_ma": [0.16, 0.11, 0.05], "z_comb": 1.91, "p": 0.8108094595270237, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.88, "v": 12.4, "rv_gaia": 11.87, "ew_limit_ma": 0.74}, {"star": "4906784051581971200", "z": [1.35, 1.8, 0.86], "ew_ma": [0.12, 0.16, 0.08], "z_comb": 2.11, "p": 0.8197590120493975, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9977, "null_sd": 2.2, "v": 3.55, "rv_gaia": 2.92, "ew_limit_ma": 0.847}, {"star": "5584019442620181760", "z": [2.31, -0.39, 2.44], "ew_ma": [0.35, -0.05, 0.49], "z_comb": 2.44, "p": 0.8232588370581471, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9971, "null_sd": 4.55, "v": 29.0, "rv_gaia": 28.69, "ew_limit_ma": 7.662}, {"star": "2981583790287411200", "z": [-2.37, 0.27, 3.63], "ew_ma": [-0.24, 0.03, 0.46], "z_comb": 2.12, "p": 0.8374081295935203, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9986, "null_sd": 2.32, "v": 41.15, "rv_gaia": 40.43, "ew_limit_ma": 1.233}, {"star": "2525514785221197696", "z": [-1.27, 4.09, 0.04], "ew_ma": [-0.1, 0.33, 0.0], "z_comb": 1.83, "p": 0.8512574371281436, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.07, "v": -3.15, "rv_gaia": -3.83, "ew_limit_ma": 0.85}, {"star": "4657193606465368704", "z": [2.44, 1.37, 1.6], "ew_ma": [0.84, 0.49, 0.5], "z_comb": 2.81, "p": 0.8524573771311434, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9911, "null_sd": 3.29, "v": 14.5, "rv_gaia": 13.99, "ew_limit_ma": 4.728}, {"star": "4041857799496807936", "z": [1.98, 0.31, 2.02], "ew_ma": [0.3, 0.07, 0.37], "z_comb": 2.4, "p": 0.8825558722063896, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9972, "null_sd": 2.3, "v": 3.05, "rv_gaia": 2.44, "ew_limit_ma": 1.905}, {"star": "6544549880063909248", "z": [2.93, -0.08, 2.53], "ew_ma": [0.36, -0.01, 0.31], "z_comb": 2.89, "p": 0.8942552872356382, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.29, "v": 21.4, "rv_gaia": 20.78, "ew_limit_ma": 1.475}, {"star": "3789271459953459328", "z": [0.04, -0.13, 3.43], "ew_ma": [0.01, -0.02, 0.63], "z_comb": 2.56, "p": 0.9085545722713865, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9937, "null_sd": 2.0, "v": 19.15, "rv_gaia": 18.5, "ew_limit_ma": 2.041}, {"star": "5891531404470141824", "z": [0.18, -0.86, 4.74], "ew_ma": [0.02, -0.14, 0.56], "z_comb": 3.22, "p": 0.9139543022848857, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9984, "null_sd": 2.42, "v": 35.2, "rv_gaia": 34.59, "ew_limit_ma": 1.769}, {"star": "2475331597059676288", "z": [1.94, -1.96, 4.87], "ew_ma": [0.48, -0.58, 0.99], "z_comb": 3.32, "p": 0.9283535823208839, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9976, "null_sd": 2.5, "v": 22.4, "rv_gaia": 21.78, "ew_limit_ma": 3.05}, {"star": "2417456431710276096", "z": [0.12, 1.28, 4.06], "ew_ma": [0.01, 0.13, 0.38], "z_comb": 3.85, "p": 0.9323033848307585, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9988, "null_sd": 2.59, "v": 8.6, "rv_gaia": 7.88, "ew_limit_ma": 1.225}, {"star": "5461620846141553024", "z": [2.9, -0.42, 4.93], "ew_ma": [0.36, -0.05, 0.57], "z_comb": 4.53, "p": 0.9797010149492525, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9991, "null_sd": 2.42, "v": 27.55, "rv_gaia": 26.94, "ew_limit_ma": 1.785}, {"star": "2423292879948720000", "z": [4.42, 2.24, 4.14], "ew_ma": [0.41, 0.14, 0.25], "z_comb": 5.91, "p": 0.9886505674716264, "n_lines": 3, "n_spectra": 6, "twin_r": 0.9989, "null_sd": 2.17, "v": 29.65, "rv_gaia": 28.92, "ew_limit_ma": 0.767}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_Tc_UVES.json b/papers/short_lived_elements/data/element_Tc_UVES.json new file mode 100644 index 0000000000000000000000000000000000000000..d38c865287739877a4467c6291707e390ced52b6 --- /dev/null +++ b/papers/short_lived_elements/data/element_Tc_UVES.json @@ -0,0 +1 @@ +{"lines": [[4238.19, 0.4467021155581737], [4262.27, 0.7127530411241091], [4297.06, 1.0]], "stable": [true, true, true], "results": [{"star": "3750995604764854400", "z": [-1.43, -2.8, -6.58], "ew_ma": [-0.22, -0.43, -1.11], "z_comb": -7.05, "p": 0.029298535073246337, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.63, "v": -17.6, "rv_gaia": -17.93, "ew_limit_ma": 0.676}, {"star": "3529518709839090176", "z": [0.73, -3.33, -4.43], "ew_ma": [0.13, -1.07, -1.01], "z_comb": -4.96, "p": 0.04864756762161892, "n_lines": 3, "n_spectra": 3, "twin_r": 0.998, "null_sd": 3.54, "v": -20.35, "rv_gaia": -20.24, "ew_limit_ma": 1.317}, {"star": "6912276699251278848", "z": [-3.05, -1.72, -3.66], "ew_ma": [-0.92, -0.48, -0.95], "z_comb": -4.79, "p": 0.056997150142492875, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.26, "v": -17.55, "rv_gaia": -17.49, "ew_limit_ma": 1.464}, {"star": "4623036865373793408", "z": [-1.3, -6.0, -0.42], "ew_ma": [-0.35, -1.41, -0.09], "z_comb": -4.04, "p": 0.05959702014899255, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 2.65, "v": 10.9, "rv_gaia": 10.71, "ew_limit_ma": 1.062}, {"star": "3575733210781078016", "z": [-8.94, 0.58, -3.51], "ew_ma": [-2.14, 0.16, -1.07], "z_comb": -5.43, "p": 0.07794610269486525, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9921, "null_sd": 3.91, "v": 0.8, "rv_gaia": -0.41, "ew_limit_ma": 2.668}, {"star": "5951165616611763456", "z": [-3.09, -1.98, -1.93], "ew_ma": [-1.22, -1.06, -0.98], "z_comb": -3.62, "p": 0.10614469276536173, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.01, "v": 25.75, "rv_gaia": 25.96, "ew_limit_ma": 3.254}, {"star": "5266348577487273344", "z": [3.53, -3.87, -3.63], "ew_ma": [1.58, -1.33, -1.16], "z_comb": -3.68, "p": 0.11979401029948503, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9972, "null_sd": 2.87, "v": 14.15, "rv_gaia": 13.6, "ew_limit_ma": 1.641}, {"star": "5553647083168192512", "z": [-2.67, -3.99, -0.94], "ew_ma": [-0.9, -1.27, -0.38], "z_comb": -3.81, "p": 0.12654367281635917, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9937, "null_sd": 3.91, "v": 60.55, "rv_gaia": 59.67, "ew_limit_ma": 3.359}, {"star": "6166183842771027328", "z": [-2.55, -2.02, -2.2], "ew_ma": [-0.56, -0.67, -0.62], "z_comb": -3.65, "p": 0.1318934053297335, "n_lines": 3, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.4, "v": -17.35, "rv_gaia": -17.46, "ew_limit_ma": 2.598}, {"star": "2477891500647336704", "z": [-2.08, -1.34, -2.0], "ew_ma": [-0.53, -0.49, -0.7], "z_comb": -2.98, "p": 0.15034248287585622, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.11, "v": -14.75, "rv_gaia": -14.92, "ew_limit_ma": 1.97}, {"star": "6286606170175267840", "z": [-1.97, -5.66, 1.55], "ew_ma": [-0.85, -2.83, 0.78], "z_comb": -2.57, "p": 0.19749012549372533, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.68, "v": -23.0, "rv_gaia": -23.19, "ew_limit_ma": 4.267}, {"star": "5481848424118748672", "z": [-0.3, 2.32, -4.8], "ew_ma": [-0.16, 1.54, -3.23], "z_comb": -2.51, "p": 0.2096895155242238, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9838, "null_sd": 3.48, "v": 33.05, "rv_gaia": 31.45, "ew_limit_ma": 4.906}, {"star": "4675955810263106432", "z": [-3.51, 0.74, -2.57], "ew_ma": [-1.29, 0.23, -1.02], "z_comb": -2.76, "p": 0.21403929803509825, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 3.52, "v": 31.8, "rv_gaia": 28.42, "ew_limit_ma": 3.421}, {"star": "5569858798004394624", "z": [-2.19, -0.68, -1.66], "ew_ma": [-0.71, -0.21, -0.49], "z_comb": -2.39, "p": 0.2263386830658467, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9952, "null_sd": 3.57, "v": 56.9, "rv_gaia": 56.33, "ew_limit_ma": 3.845}, {"star": "4343066192373826176", "z": [-9.54, -3.82, 3.12], "ew_ma": [-4.05, -1.69, 2.62], "z_comb": -2.96, "p": 0.22653867306634667, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9741, "null_sd": 4.46, "v": -32.6, "rv_gaia": -30.57, "ew_limit_ma": 5.343}, {"star": "6564091190988411520", "z": [-1.33, -2.53, -0.05], "ew_ma": [-0.31, -0.59, -0.01], "z_comb": -1.87, "p": 0.2286885655717214, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 2.76, "v": -7.05, "rv_gaia": -7.55, "ew_limit_ma": 1.448}, {"star": "3900151160301345152", "z": [1.86, 2.9, -4.6], "ew_ma": [3.67, 6.24, -7.52], "z_comb": -1.3, "p": 0.2367381630918454, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9284, "null_sd": 1.99, "v": 4.05, "rv_gaia": 4.92, "ew_limit_ma": 10.289}, {"star": "5292834403845151488", "z": [0.25, -4.76, 0.67], "ew_ma": [0.12, -1.85, 0.32], "z_comb": -1.99, "p": 0.2571871406429678, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9906, "null_sd": 3.71, "v": 18.6, "rv_gaia": 17.48, "ew_limit_ma": 3.492}, {"star": "3250489115709122560", "z": [-0.46, 1.17, -3.01], "ew_ma": [-0.08, 0.2, -0.74], "z_comb": -1.82, "p": 0.2578871056447178, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.19, "v": 120.55, "rv_gaia": 120.58, "ew_limit_ma": 1.963}, {"star": "3732539683617410816", "z": [1.59, 0.12, -3.93], "ew_ma": [0.38, 0.03, -1.58], "z_comb": -2.4, "p": 0.2589370531473426, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 3.57, "v": -27.0, "rv_gaia": -27.25, "ew_limit_ma": 3.009}, {"star": "4722135642226902656", "z": [-3.65, 1.38, -3.0], "ew_ma": [-0.75, 0.3, -0.77], "z_comb": -2.79, "p": 0.2592870356482176, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9966, "null_sd": 3.62, "v": 12.2, "rv_gaia": 11.94, "ew_limit_ma": 1.74}, {"star": "5760701787150565888", "z": [-6.01, -0.04, 0.32], "ew_ma": [-1.79, -0.01, 0.11], "z_comb": -1.83, "p": 0.2599370031498425, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.7, "v": 33.4, "rv_gaia": 31.99, "ew_limit_ma": 2.762}, {"star": "6770313530317154560", "z": [1.54, -4.12, -0.56], "ew_ma": [0.31, -0.86, -0.13], "z_comb": -2.15, "p": 0.27798610069496527, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9983, "null_sd": 4.01, "v": -24.95, "rv_gaia": -24.7, "ew_limit_ma": 3.087}, {"star": "1787990525934491776", "z": [-2.68, -1.84, -0.2], "ew_ma": [-1.48, -1.1, -0.14], "z_comb": -2.08, "p": 0.2789360531973401, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9877, "null_sd": 3.5, "v": -44.35, "rv_gaia": -44.33, "ew_limit_ma": 7.861}, {"star": "3511640513332581504", "z": [-6.47, -0.96, 1.83], "ew_ma": [-1.72, -0.22, 0.78], "z_comb": -1.34, "p": 0.28688565571721414, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 3.86, "v": -12.25, "rv_gaia": -12.25, "ew_limit_ma": 2.821}, {"star": "2980492387558410112", "z": [1.36, -1.43, -2.39], "ew_ma": [0.91, -1.62, -4.45], "z_comb": -2.14, "p": 0.2908354582270887, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9691, "null_sd": 3.27, "v": 21.15, "rv_gaia": 21.6, "ew_limit_ma": 14.339}, {"star": "4381250547575102208", "z": [-4.53, -6.25, 4.14], "ew_ma": [-2.87, -3.99, 2.8], "z_comb": -1.79, "p": 0.30293485325733716, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9907, "null_sd": 3.95, "v": 45.05, "rv_gaia": 44.84, "ew_limit_ma": 7.344}, {"star": "5902750168276592256", "z": [-1.37, 1.45, -2.07], "ew_ma": [-0.57, 0.67, -0.99], "z_comb": -1.26, "p": 0.31138443077846106, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.53, "v": -68.4, "rv_gaia": -68.78, "ew_limit_ma": 5.637}, {"star": "2898239468873596800", "z": [0.8, 4.01, -4.23], "ew_ma": [0.17, 0.93, -1.06], "z_comb": -0.77, "p": 0.3152842357882106, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.13, "v": -3.5, "rv_gaia": -3.85, "ew_limit_ma": 2.275}, {"star": "6150200345317455232", "z": [-1.03, 1.24, -2.09], "ew_ma": [-0.29, 0.29, -0.61], "z_comb": -1.28, "p": 0.34433278336083195, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.7, "v": -6.75, "rv_gaia": -7.11, "ew_limit_ma": 3.02}, {"star": "5381537023379295232", "z": [1.3, 0.52, -2.15], "ew_ma": [1.48, 0.3, -1.25], "z_comb": -0.92, "p": 0.3472326383680816, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9861, "null_sd": 2.72, "v": 17.55, "rv_gaia": 16.94, "ew_limit_ma": 5.539}, {"star": "5801950515627094400", "z": [-1.29, -0.02, -1.0], "ew_ma": [-0.52, -0.01, -0.51], "z_comb": -1.21, "p": 0.3489825508724564, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.0, "v": 59.6, "rv_gaia": 60.13, "ew_limit_ma": 5.46}, {"star": "4925088171405735680", "z": [-1.68, 1.5, -2.83], "ew_ma": [-0.43, 0.29, -0.92], "z_comb": -1.92, "p": 0.3503324833758312, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9914, "null_sd": 4.09, "v": 36.45, "rv_gaia": 36.66, "ew_limit_ma": 2.074}, {"star": "3584074376569429248", "z": [-0.6, -1.27, 0.09], "ew_ma": [-0.15, -0.45, 0.03], "z_comb": -0.83, "p": 0.3506324683765812, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.84, "v": 20.8, "rv_gaia": 20.73, "ew_limit_ma": 2.806}, {"star": "3269362645115584640", "z": [-2.52, -1.46, 0.01], "ew_ma": [-0.69, -0.37, 0.0], "z_comb": -1.65, "p": 0.35553222338883056, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9953, "null_sd": 2.87, "v": 19.15, "rv_gaia": 18.73, "ew_limit_ma": 2.019}, {"star": "3702148666829533952", "z": [-2.83, 1.45, -1.93], "ew_ma": [-1.33, 0.86, -1.07], "z_comb": -1.65, "p": 0.3581820908954552, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9912, "null_sd": 3.96, "v": 3.8, "rv_gaia": 2.63, "ew_limit_ma": 7.303}, {"star": "5586381090520538880", "z": [-2.41, 4.06, -2.89], "ew_ma": [-0.43, 0.74, -0.61], "z_comb": -0.82, "p": 0.3586320683965802, "n_lines": 3, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.0, "v": 9.6, "rv_gaia": 9.18, "ew_limit_ma": 1.788}, {"star": "3256786534197166208", "z": [-2.26, -2.82, 1.73], "ew_ma": [-0.64, -0.8, 0.46], "z_comb": -0.98, "p": 0.3641317934103295, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.19, "v": 17.9, "rv_gaia": 17.62, "ew_limit_ma": 2.121}, {"star": "2750176827892427904", "z": [-2.6, -3.38, 1.99], "ew_ma": [-1.06, -1.7, 1.26], "z_comb": -1.21, "p": 0.37458127093645316, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9937, "null_sd": 3.56, "v": -15.45, "rv_gaia": -14.72, "ew_limit_ma": 5.091}, {"star": "2648914040357320576", "z": [0.1, -2.55, -0.16], "ew_ma": [0.05, -1.17, -0.07], "z_comb": -1.48, "p": 0.3853807309634518, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.01, "v": -13.55, "rv_gaia": -13.41, "ew_limit_ma": 7.055}, {"star": "6764687466752221824", "z": [-1.11, 1.81, -1.35], "ew_ma": [-0.34, 0.93, -0.7], "z_comb": -0.43, "p": 0.38763061846907654, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9945, "null_sd": 3.71, "v": -42.7, "rv_gaia": -42.55, "ew_limit_ma": 6.748}, {"star": "5524982093479504384", "z": [-1.58, -4.56, 2.06], "ew_ma": [-0.64, -1.44, 0.76], "z_comb": -1.45, "p": 0.38918054097295135, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9976, "null_sd": 4.11, "v": 9.5, "rv_gaia": 9.31, "ew_limit_ma": 4.282}, {"star": "5567900121118276736", "z": [-0.59, 0.14, -1.48], "ew_ma": [-0.12, 0.03, -0.4], "z_comb": -1.26, "p": 0.39403029848507576, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.55, "v": 29.1, "rv_gaia": 27.55, "ew_limit_ma": 2.348}, {"star": "3584074380866605440", "z": [-2.33, -1.33, 1.01], "ew_ma": [-0.49, -0.35, 0.25], "z_comb": -0.75, "p": 0.3946302684865757, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9987, "null_sd": 2.89, "v": 20.6, "rv_gaia": 19.78, "ew_limit_ma": 2.897}, {"star": "5945941905576552064", "z": [-2.35, -2.43, 2.02], "ew_ma": [-0.5, -0.56, 0.54], "z_comb": -0.59, "p": 0.3951302434878256, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9979, "null_sd": 2.89, "v": -8.9, "rv_gaia": -9.54, "ew_limit_ma": 2.468}, {"star": "5409121433672765824", "z": [-4.16, -4.36, 3.99], "ew_ma": [-0.99, -0.94, 1.02], "z_comb": -0.75, "p": 0.4030298485075746, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9968, "null_sd": 3.6, "v": 47.85, "rv_gaia": 47.45, "ew_limit_ma": 2.359}, {"star": "6963761190199424", "z": [2.85, -1.75, -0.44], "ew_ma": [0.53, -0.36, -0.09], "z_comb": -0.32, "p": 0.4089295535223239, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.77, "v": 25.7, "rv_gaia": 24.71, "ew_limit_ma": 2.722}, {"star": "3265335443260522112", "z": [0.24, -1.89, -0.2], "ew_ma": [0.14, -0.77, -0.08], "z_comb": -1.1, "p": 0.41167941602919855, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9952, "null_sd": 4.52, "v": 20.25, "rv_gaia": 19.3, "ew_limit_ma": 4.863}, {"star": "3118434397663311360", "z": [1.32, -1.36, -0.25], "ew_ma": [0.46, -0.5, -0.1], "z_comb": -0.48, "p": 0.41637918104094795, "n_lines": 3, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.09, "v": 47.4, "rv_gaia": 47.33, "ew_limit_ma": 4.302}, {"star": "4341501106288171008", "z": [2.56, -4.28, 1.44], "ew_ma": [1.19, -2.14, 0.68], "z_comb": -0.36, "p": 0.4233788310584471, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 4.12, "v": -13.35, "rv_gaia": -13.91, "ew_limit_ma": 10.164}, {"star": "4775347916201249792", "z": [2.17, 1.55, -3.09], "ew_ma": [1.06, 0.65, -1.44], "z_comb": -0.77, "p": 0.439978001099945, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9812, "null_sd": 3.02, "v": -4.9, "rv_gaia": -4.59, "ew_limit_ma": 4.881}, {"star": "6141742283401003264", "z": [-0.49, 1.88, -2.21], "ew_ma": [-0.18, 0.76, -0.88], "z_comb": -0.83, "p": 0.45717714114294283, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9967, "null_sd": 3.94, "v": -14.0, "rv_gaia": -13.03, "ew_limit_ma": 5.935}, {"star": "6226694571859532800", "z": [-0.97, 2.69, -1.73], "ew_ma": [-0.2, 0.7, -0.45], "z_comb": -0.18, "p": 0.47417629118544075, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9977, "null_sd": 3.41, "v": 4.8, "rv_gaia": 5.14, "ew_limit_ma": 2.816}, {"star": "2423493369021649920", "z": [2.1, -3.63, 1.36], "ew_ma": [0.94, -1.77, 0.55], "z_comb": -0.22, "p": 0.4901254937253137, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9934, "null_sd": 3.92, "v": -2.9, "rv_gaia": -2.55, "ew_limit_ma": 5.541}, {"star": "5609058277323483392", "z": [3.48, 0.86, -1.9], "ew_ma": [1.78, 0.64, -1.37], "z_comb": 0.21, "p": 0.503524823758812, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9901, "null_sd": 3.7, "v": 71.85, "rv_gaia": 72.42, "ew_limit_ma": 9.829}, {"star": "1244571953471006720", "z": [3.26, 0.75, -2.92], "ew_ma": [1.56, 0.4, -1.27], "z_comb": -0.72, "p": 0.5074746262686866, "n_lines": 3, "n_spectra": 4, "twin_r": 0.987, "null_sd": 4.3, "v": -16.2, "rv_gaia": -16.75, "ew_limit_ma": 5.716}, {"star": "6161806515182527616", "z": [-1.45, -4.73, 4.33], "ew_ma": [-0.37, -1.68, 1.67], "z_comb": 0.23, "p": 0.5076746162691865, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9953, "null_sd": 3.27, "v": 81.9, "rv_gaia": 82.23, "ew_limit_ma": 4.575}, {"star": "4934923028038871296", "z": [0.61, 5.08, -4.02], "ew_ma": [0.13, 1.26, -1.06], "z_comb": -0.09, "p": 0.5162741862906854, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.64, "v": 12.95, "rv_gaia": 11.9, "ew_limit_ma": 2.875}, {"star": "6382933589314905472", "z": [1.48, 1.76, -1.92], "ew_ma": [1.08, 1.98, -2.24], "z_comb": 0.0, "p": 0.5254737263136843, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9788, "null_sd": 4.69, "v": 32.8, "rv_gaia": 32.35, "ew_limit_ma": 15.961}, {"star": "6062166950467100032", "z": [-0.83, 2.4, -1.57], "ew_ma": [-0.25, 0.69, -0.86], "z_comb": -0.18, "p": 0.5310734463276836, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9938, "null_sd": 4.6, "v": -64.15, "rv_gaia": -63.57, "ew_limit_ma": 5.857}, {"star": "5155981730587168384", "z": [0.5, 4.54, -3.03], "ew_ma": [0.11, 1.24, -1.24], "z_comb": 0.33, "p": 0.5351232438378081, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9954, "null_sd": 4.26, "v": 7.2, "rv_gaia": 7.01, "ew_limit_ma": 4.622}, {"star": "4768170579173552896", "z": [1.26, 2.26, -1.98], "ew_ma": [0.29, 0.58, -0.53], "z_comb": 0.15, "p": 0.5510724463776812, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9985, "null_sd": 3.64, "v": -5.25, "rv_gaia": -5.53, "ew_limit_ma": 3.643}, {"star": "3400292798990117888", "z": [-9.72, 3.45, 2.39], "ew_ma": [-3.96, 0.76, 0.74], "z_comb": 0.38, "p": 0.5545222738863057, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9954, "null_sd": 3.71, "v": 37.45, "rv_gaia": 37.7, "ew_limit_ma": 3.265}, {"star": "2382711653818308224", "z": [-0.77, 5.82, -3.07], "ew_ma": [-0.36, 2.53, -1.28], "z_comb": 0.56, "p": 0.5549222538873056, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9906, "null_sd": 3.31, "v": 5.8, "rv_gaia": 6.41, "ew_limit_ma": 4.481}, {"star": "6163964031871884672", "z": [3.54, 5.49, -4.62], "ew_ma": [0.85, 1.2, -1.19], "z_comb": 0.67, "p": 0.5554222288885555, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.72, "v": 3.35, "rv_gaia": 3.36, "ew_limit_ma": 2.441}, {"star": "4345775217221821312", "z": [3.47, 1.09, -2.11], "ew_ma": [0.84, 0.3, -0.74], "z_comb": 0.17, "p": 0.5612219389030548, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9964, "null_sd": 2.72, "v": 11.55, "rv_gaia": 11.71, "ew_limit_ma": 2.848}, {"star": "3482326708703712640", "z": [2.03, -2.18, 1.79], "ew_ma": [0.31, -0.51, 0.4], "z_comb": 0.88, "p": 0.5663216839158042, "n_lines": 3, "n_spectra": 1, "twin_r": 0.999, "null_sd": 3.07, "v": 7.55, "rv_gaia": 7.38, "ew_limit_ma": 2.533}, {"star": "5528591961953902720", "z": [4.36, 0.92, -1.79], "ew_ma": [1.15, 0.12, -0.35], "z_comb": 0.62, "p": 0.568471576421179, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9971, "null_sd": 3.38, "v": -1.5, "rv_gaia": -1.8, "ew_limit_ma": 1.815}, {"star": "5540006949934104448", "z": [-2.68, 0.06, 1.57], "ew_ma": [-3.98, 0.09, 1.8], "z_comb": 0.32, "p": 0.5711714414279286, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9836, "null_sd": 2.09, "v": 49.25, "rv_gaia": 49.31, "ew_limit_ma": 11.156}, {"star": "5129338021224785408", "z": [3.75, -1.44, 0.68], "ew_ma": [3.21, -0.92, 0.65], "z_comb": 1.01, "p": 0.5716214189290535, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9693, "null_sd": 3.85, "v": 25.65, "rv_gaia": 29.09, "ew_limit_ma": 10.619}, {"star": "5320952798822552064", "z": [-1.65, 4.46, -1.74], "ew_ma": [-0.27, 0.49, -0.28], "z_comb": 0.53, "p": 0.5903704814759262, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9981, "null_sd": 3.53, "v": 12.2, "rv_gaia": 11.87, "ew_limit_ma": 1.485}, {"star": "5559265690666326016", "z": [2.46, 2.42, -0.73], "ew_ma": [1.07, 1.05, -0.44], "z_comb": 1.6, "p": 0.5924203789810509, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9935, "null_sd": 4.39, "v": 89.85, "rv_gaia": 88.81, "ew_limit_ma": 7.284}, {"star": "2966790170574625408", "z": [-3.07, -2.57, 4.23], "ew_ma": [-0.61, -0.58, 0.95], "z_comb": 0.79, "p": 0.5946702664866756, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9974, "null_sd": 3.07, "v": 39.3, "rv_gaia": 37.83, "ew_limit_ma": 2.867}, {"star": "2831490694929214464", "z": [1.47, 3.25, -2.19], "ew_ma": [0.37, 0.57, -0.43], "z_comb": 0.6, "p": 0.5983700814959252, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.59, "v": -1.2, "rv_gaia": -0.92, "ew_limit_ma": 2.738}, {"star": "4976894960284258048", "z": [1.51, -1.17, 2.26], "ew_ma": [0.51, -0.39, 0.68], "z_comb": 1.61, "p": 0.6224188790560472, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9942, "null_sd": 3.95, "v": 5.75, "rv_gaia": 5.76, "ew_limit_ma": 4.049}, {"star": "3812355328621651328", "z": [2.57, 1.66, -0.03], "ew_ma": [3.92, 2.51, -0.05], "z_comb": 1.76, "p": 0.6423678816059197, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9868, "null_sd": 3.74, "v": 4.0, "rv_gaia": 4.18, "ew_limit_ma": 29.365}, {"star": "4745373133284418816", "z": [-0.84, -2.26, 3.77], "ew_ma": [-0.26, -0.49, 1.11], "z_comb": 1.36, "p": 0.647917604119794, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9967, "null_sd": 4.13, "v": 16.5, "rv_gaia": 16.94, "ew_limit_ma": 3.648}, {"star": "3639760521643499776", "z": [4.3, -1.56, 0.82], "ew_ma": [1.87, -0.76, 0.35], "z_comb": 1.24, "p": 0.6685665716714164, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9961, "null_sd": 2.5, "v": -11.5, "rv_gaia": -12.39, "ew_limit_ma": 4.641}, {"star": "4733035238430992768", "z": [-2.77, 0.9, 2.31], "ew_ma": [-0.54, 0.17, 0.47], "z_comb": 1.31, "p": 0.6739663016849158, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9981, "null_sd": 3.23, "v": 0.45, "rv_gaia": 0.66, "ew_limit_ma": 2.208}, {"star": "4315804351350378496", "z": [1.51, -6.76, 6.16], "ew_ma": [0.63, -4.25, 5.21], "z_comb": 1.55, "p": 0.696315184240788, "n_lines": 3, "n_spectra": 4, "twin_r": 0.992, "null_sd": 3.94, "v": -100.25, "rv_gaia": -100.33, "ew_limit_ma": 11.206}, {"star": "2899947933845777920", "z": [-2.0, -1.05, 3.62], "ew_ma": [-0.43, -0.23, 0.88], "z_comb": 1.51, "p": 0.7048147592620368, "n_lines": 3, "n_spectra": 1, "twin_r": 0.997, "null_sd": 3.28, "v": 37.85, "rv_gaia": 35.78, "ew_limit_ma": 2.776}, {"star": "5730371484020807808", "z": [1.81, -0.87, 3.09], "ew_ma": [0.5, -0.23, 1.35], "z_comb": 2.51, "p": 0.7056147192640368, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9945, "null_sd": 4.03, "v": 119.4, "rv_gaia": 119.47, "ew_limit_ma": 4.35}, {"star": "5062172841616745856", "z": [-0.4, 1.76, 2.24], "ew_ma": [-0.13, 0.51, 0.7], "z_comb": 2.54, "p": 0.7115144242787861, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9969, "null_sd": 3.81, "v": 11.7, "rv_gaia": 11.16, "ew_limit_ma": 5.22}, {"star": "2473608009504466688", "z": [1.16, 1.81, 0.01], "ew_ma": [0.32, 0.47, 0.0], "z_comb": 1.39, "p": 0.7227638618069097, "n_lines": 3, "n_spectra": 2, "twin_r": 0.997, "null_sd": 4.17, "v": 9.25, "rv_gaia": 8.21, "ew_limit_ma": 5.349}, {"star": "6133033601555979648", "z": [0.51, -0.91, 3.11], "ew_ma": [0.27, -0.29, 1.2], "z_comb": 2.05, "p": 0.7248637568121594, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 3.99, "v": 18.4, "rv_gaia": 18.05, "ew_limit_ma": 5.744}, {"star": "3212075924646082176", "z": [0.89, -2.53, 3.99], "ew_ma": [0.35, -0.96, 2.56], "z_comb": 1.98, "p": 0.7305634718264087, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9938, "null_sd": 3.67, "v": 9.7, "rv_gaia": 10.31, "ew_limit_ma": 5.734}, {"star": "2029433521248546304", "z": [0.38, 6.83, -0.81], "ew_ma": [0.15, 5.47, -0.9], "z_comb": 3.23, "p": 0.7370131493425329, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9962, "null_sd": 3.78, "v": -45.7, "rv_gaia": -45.34, "ew_limit_ma": 12.687}, {"star": "5493588665684618752", "z": [-0.48, 5.26, -1.57], "ew_ma": [-0.2, 3.3, -0.79], "z_comb": 1.5, "p": 0.7374631268436578, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9943, "null_sd": 3.92, "v": 5.7, "rv_gaia": 4.82, "ew_limit_ma": 10.091}, {"star": "84625634714435968", "z": [0.32, 2.34, 0.63], "ew_ma": [0.17, 1.35, 0.38], "z_comb": 1.87, "p": 0.744012799360032, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9924, "null_sd": 2.63, "v": 5.35, "rv_gaia": 4.34, "ew_limit_ma": 7.05}, {"star": "5264749303462961280", "z": [3.42, 1.41, 0.48], "ew_ma": [1.75, 0.61, 0.29], "z_comb": 2.31, "p": 0.7553622318884056, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9914, "null_sd": 3.64, "v": 35.75, "rv_gaia": 36.06, "ew_limit_ma": 7.446}, {"star": "5916947921402171264", "z": [-0.19, -1.76, 3.54], "ew_ma": [-0.07, -0.75, 1.65], "z_comb": 1.69, "p": 0.7569621518924053, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9958, "null_sd": 3.96, "v": 99.0, "rv_gaia": 99.72, "ew_limit_ma": 9.23}, {"star": "6128366415218881536", "z": [1.69, 0.9, 1.49], "ew_ma": [0.49, 0.16, 0.33], "z_comb": 2.21, "p": 0.75941202939853, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9957, "null_sd": 3.79, "v": 31.05, "rv_gaia": 30.47, "ew_limit_ma": 3.454}, {"star": "3282511876473223552", "z": [-3.2, 5.62, 0.78], "ew_ma": [-1.19, 3.25, 0.62], "z_comb": 2.57, "p": 0.759662016899155, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9924, "null_sd": 4.08, "v": -46.3, "rv_gaia": -46.55, "ew_limit_ma": 11.854}, {"star": "6577318075351824512", "z": [1.45, -4.27, 4.94], "ew_ma": [0.35, -1.03, 1.29], "z_comb": 1.94, "p": 0.7723113844307785, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 2.81, "v": 12.2, "rv_gaia": 11.95, "ew_limit_ma": 2.964}, {"star": "2531792756096759296", "z": [0.86, 2.85, 1.35], "ew_ma": [0.13, 0.38, 0.19], "z_comb": 2.88, "p": 0.776161191940403, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 4.0, "v": 5.4, "rv_gaia": 5.96, "ew_limit_ma": 2.482}, {"star": "2860924621205256704", "z": [3.13, 4.93, -1.96], "ew_ma": [1.1, 1.83, -0.83], "z_comb": 2.26, "p": 0.7845107744612769, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9937, "null_sd": 3.6, "v": -6.75, "rv_gaia": -6.75, "ew_limit_ma": 6.059}, {"star": "2430102808294101760", "z": [-0.25, 6.17, -0.65], "ew_ma": [-0.04, 1.1, -0.14], "z_comb": 2.79, "p": 0.7856607169641517, "n_lines": 3, "n_spectra": 4, "twin_r": 0.998, "null_sd": 3.51, "v": -9.8, "rv_gaia": -10.12, "ew_limit_ma": 3.049}, {"star": "3946438125929224320", "z": [-1.98, 1.6, 2.64], "ew_ma": [-0.55, 0.37, 0.73], "z_comb": 2.22, "p": 0.7872106394680266, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.57, "v": 2.1, "rv_gaia": 1.76, "ew_limit_ma": 4.037}, {"star": "3261878613062758144", "z": [2.57, -0.42, 3.26], "ew_ma": [0.71, -0.16, 1.26], "z_comb": 3.14, "p": 0.7881105944702765, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9963, "null_sd": 4.23, "v": 22.25, "rv_gaia": 22.59, "ew_limit_ma": 6.472}, {"star": "3188395880157173120", "z": [7.01, -3.8, 4.2], "ew_ma": [2.02, -1.36, 2.29], "z_comb": 3.54, "p": 0.7917604119794011, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9939, "null_sd": 3.82, "v": 77.55, "rv_gaia": 77.12, "ew_limit_ma": 6.587}, {"star": "4906784051581971200", "z": [-1.35, 4.16, 0.94], "ew_ma": [-0.5, 1.35, 0.33], "z_comb": 2.53, "p": 0.7989600519974002, "n_lines": 3, "n_spectra": 1, "twin_r": 0.996, "null_sd": 3.55, "v": 2.9, "rv_gaia": 2.92, "ew_limit_ma": 4.936}, {"star": "6515731817739456256", "z": [4.24, 3.24, -0.39], "ew_ma": [0.79, 0.7, -0.09], "z_comb": 2.92, "p": 0.8054597270136493, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9956, "null_sd": 3.43, "v": -0.3, "rv_gaia": -1.09, "ew_limit_ma": 2.867}, {"star": "4421455530273900032", "z": [-0.98, 1.55, 3.65], "ew_ma": [-0.31, 0.53, 1.9], "z_comb": 3.31, "p": 0.8061596920153993, "n_lines": 3, "n_spectra": 1, "twin_r": 0.993, "null_sd": 4.48, "v": 54.65, "rv_gaia": 54.37, "ew_limit_ma": 7.842}, {"star": "6018047019138644480", "z": [0.26, -3.36, 5.47], "ew_ma": [0.1, -1.15, 2.1], "z_comb": 2.44, "p": 0.8266586670666467, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9974, "null_sd": 3.06, "v": 12.85, "rv_gaia": 12.85, "ew_limit_ma": 4.913}, {"star": "4303294039306246656", "z": [4.8, 2.03, 0.74], "ew_ma": [1.13, 0.41, 0.17], "z_comb": 3.32, "p": 0.8328083595820209, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9976, "null_sd": 3.96, "v": 0.1, "rv_gaia": -0.08, "ew_limit_ma": 3.76}, {"star": "6384510877400590336", "z": [4.9, 0.11, 1.02], "ew_ma": [1.03, 0.02, 0.2], "z_comb": 2.52, "p": 0.8457077146142693, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9978, "null_sd": 2.82, "v": -2.0, "rv_gaia": -2.29, "ew_limit_ma": 2.263}, {"star": "4912580642524184960", "z": [-1.41, 1.25, 3.95], "ew_ma": [-0.18, 0.15, 0.56], "z_comb": 3.22, "p": 0.8608069596520174, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9982, "null_sd": 2.92, "v": 28.45, "rv_gaia": 27.64, "ew_limit_ma": 1.572}, {"star": "5596797039059063680", "z": [3.39, -1.13, 4.42], "ew_ma": [0.53, -0.23, 0.9], "z_comb": 3.92, "p": 0.8940052997350133, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9979, "null_sd": 3.57, "v": -15.4, "rv_gaia": -15.71, "ew_limit_ma": 3.299}, {"star": "2964794041574370560", "z": [2.44, 4.74, 0.59], "ew_ma": [0.57, 0.95, 0.13], "z_comb": 3.87, "p": 0.9077546122693866, "n_lines": 3, "n_spectra": 3, "twin_r": 0.9974, "null_sd": 3.31, "v": 29.95, "rv_gaia": 29.0, "ew_limit_ma": 3.46}, {"star": "2423292879948720000", "z": [3.68, 0.92, 3.38], "ew_ma": [0.78, 0.15, 0.67], "z_comb": 4.35, "p": 0.9182540872956352, "n_lines": 3, "n_spectra": 1, "twin_r": 0.9982, "null_sd": 3.54, "v": 29.05, "rv_gaia": 28.92, "ew_limit_ma": 2.96}, {"star": "3482326708703712896", "z": [-0.08, 3.83, 1.78], "ew_ma": [-0.01, 0.65, 0.29], "z_comb": 3.43, "p": 0.9301034948252588, "n_lines": 3, "n_spectra": 1, "twin_r": 0.999, "null_sd": 2.82, "v": 5.45, "rv_gaia": 5.62, "ew_limit_ma": 1.954}, {"star": "4423865487962417024", "z": [8.99, -1.34, 3.05], "ew_ma": [2.51, -0.36, 0.88], "z_comb": 4.68, "p": 0.936653167341633, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9965, "null_sd": 3.52, "v": 19.3, "rv_gaia": 18.95, "ew_limit_ma": 5.157}, {"star": "2417456431710276096", "z": [0.83, 0.64, 5.11], "ew_ma": [0.11, 0.09, 0.65], "z_comb": 4.55, "p": 0.9402529873506325, "n_lines": 3, "n_spectra": 1, "twin_r": 0.998, "null_sd": 3.23, "v": 8.15, "rv_gaia": 7.88, "ew_limit_ma": 2.131}, {"star": "2913411183149615744", "z": [3.63, 3.94, 2.88], "ew_ma": [1.32, 1.47, 1.07], "z_comb": 5.6, "p": 0.9664516774161291, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9953, "null_sd": 3.22, "v": 21.5, "rv_gaia": 21.69, "ew_limit_ma": 6.456}, {"star": "4657193606465368704", "z": [6.76, 3.25, 4.38], "ew_ma": [3.35, 2.04, 2.6], "z_comb": 7.44, "p": 0.9793010349482526, "n_lines": 3, "n_spectra": 4, "twin_r": 0.9912, "null_sd": 4.24, "v": 14.75, "rv_gaia": 13.99, "ew_limit_ma": 13.958}, {"star": "3630099250409312640", "z": [-0.44, 7.31, 3.07], "ew_ma": [-0.29, 9.43, 11.43], "z_comb": 6.19, "p": 0.9814509274536273, "n_lines": 3, "n_spectra": 2, "twin_r": 0.9298, "null_sd": 3.86, "v": -10.6, "rv_gaia": -9.78, "ew_limit_ma": 42.511}]} \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_check_ESPRESSO.json b/papers/short_lived_elements/data/element_check_ESPRESSO.json new file mode 100644 index 0000000000000000000000000000000000000000..7713f1cb21b097f3b1f916a974034cc0ad1d8ac3 --- /dev/null +++ b/papers/short_lived_elements/data/element_check_ESPRESSO.json @@ -0,0 +1 @@ +[{"star": "1212385193677160832", "element": "Tc", "ew_ma": 3.246, "p": 0.000999950002499875, "z_comb": -13.52}, {"star": "1212385193677160832", "element": "Pm", "ew_ma": 1.443, "p": 0.0012999350032498376, "z_comb": -12.01}, {"star": "1212385193677160832", "element": "Pa", "ew_ma": 2.233, "p": 0.0008499575021248938, "z_comb": -12.81}, {"star": "1212385193677160832", "element": "Pu", "ew_ma": 0.711, "p": 0.0009499525023748813, "z_comb": -10.24}, {"star": "1212385193677160832", "element": "Am", "ew_ma": 0.996, "p": 0.0012999350032498376, "z_comb": -12.36}, {"star": "1212385193677160832", "element": "Cm", "ew_ma": 3.114, "p": 0.004987531172069825, "z_comb": -15.68}, {"star": "2554032474712538880", "element": "Tc", "ew_ma": 1.543, "p": 0.0010999450027498626, "z_comb": -10.41}, {"star": "2554032474712538880", "element": "Pm", "ew_ma": 1.175, "p": 0.000999950002499875, "z_comb": -9.13}, {"star": "2554032474712538880", "element": "Pa", "ew_ma": 1.515, "p": 0.0010999450027498626, "z_comb": -9.89}, {"star": "2554032474712538880", "element": "Pu", "ew_ma": 0.489, "p": 0.0010499475026248687, "z_comb": -7.75}, {"star": "2554032474712538880", "element": "Am", "ew_ma": 0.781, "p": 0.0010499475026248687, "z_comb": -9.19}, {"star": "2554032474712538880", "element": "Cm", "ew_ma": 2.167, "p": 0.0024937655860349127, "z_comb": -13.02}, {"star": "3480332916165099904", "element": "Tc", "ew_ma": 0.974, "p": 0.000999950002499875, "z_comb": -11.39}, {"star": "3480332916165099904", "element": "Pm", "ew_ma": 0.558, "p": 0.0010499475026248687, "z_comb": -10.55}, {"star": "3480332916165099904", "element": "Pa", "ew_ma": 0.918, "p": 0.0011499425028748563, "z_comb": -10.88}, {"star": "3480332916165099904", "element": "Pu", "ew_ma": 0.349, "p": 0.0010499475026248687, "z_comb": -9.48}, {"star": "3480332916165099904", "element": "Am", "ew_ma": 0.298, "p": 0.0010499475026248687, "z_comb": -10.68}, {"star": "3480332916165099904", "element": "Cm", "ew_ma": 1.335, "p": 0.0024937655860349127, "z_comb": -13.36}, {"star": "3654496279558010624", "element": "Tc", "ew_ma": 2.329, "p": 0.0010499475026248687, "z_comb": -15.19}, {"star": "3654496279558010624", "element": "Pm", "ew_ma": 1.467, "p": 0.0010499475026248687, "z_comb": -13.08}, {"star": "3654496279558010624", "element": "Pa", "ew_ma": 1.795, "p": 0.0012499375031248437, "z_comb": -14.18}, {"star": "3654496279558010624", "element": "Pu", "ew_ma": 0.45, "p": 0.00119994000299985, "z_comb": -10.99}, {"star": "3654496279558010624", "element": "Am", "ew_ma": 0.761, "p": 0.0008499575021248938, "z_comb": -13.69}, {"star": "3654496279558010624", "element": "Cm", "ew_ma": 2.87, "p": 0.0024937655860349127, "z_comb": -18.7}, {"star": "3975129194660883328", "element": "Tc", "ew_ma": 1.706, "p": 0.0010999450027498626, "z_comb": -4.64}, {"star": "3975129194660883328", "element": "Pm", "ew_ma": 0.736, "p": 0.0007999600019999, "z_comb": -4.57}, {"star": "3975129194660883328", "element": "Pa", "ew_ma": 1.1, "p": 0.00119994000299985, "z_comb": -4.62}, {"star": "3975129194660883328", "element": "Pu", "ew_ma": 0.469, "p": 0.0007999600019999, "z_comb": -4.7}, {"star": "3975129194660883328", "element": "Am", "ew_ma": 0.657, "p": 0.0009499525023748813, "z_comb": -4.55}, {"star": "3975129194660883328", "element": "Cm", "ew_ma": 0.787, "p": 0.0024937655860349127, "z_comb": -4.33}, {"star": "4623036865373793408", "element": "Tc", "ew_ma": 0.919, "p": 0.0007999600019999, "z_comb": -8.65}, {"star": "4623036865373793408", "element": "Pm", "ew_ma": 0.546, "p": 0.0007499625018749063, "z_comb": -8.62}, {"star": "4623036865373793408", "element": "Pa", "ew_ma": 0.962, "p": 0.0006999650017499125, "z_comb": -8.65}, {"star": "4623036865373793408", "element": "Pu", "ew_ma": 0.171, "p": 0.000999950002499875, "z_comb": -8.46}, {"star": "4623036865373793408", "element": "Am", "ew_ma": 0.315, "p": 0.0005499725013749313, "z_comb": -8.53}, {"star": "4623036865373793408", "element": "Cm", "ew_ma": 1.041, "p": 0.0024937655860349127, "z_comb": -8.7}, {"star": "5341673851394297600", "element": "Tc", "ew_ma": 2.52, "p": 0.00119994000299985, "z_comb": -11.53}, {"star": "5341673851394297600", "element": "Pm", "ew_ma": 2.463, "p": 0.0008999550022498875, "z_comb": -11.17}, {"star": "5341673851394297600", "element": "Pa", "ew_ma": 2.256, "p": 0.0012999350032498376, "z_comb": -11.25}, {"star": "5341673851394297600", "element": "Pu", "ew_ma": 0.985, "p": 0.0006499675016249188, "z_comb": -10.23}, {"star": "5341673851394297600", "element": "Am", "ew_ma": 1.589, "p": 0.0009499525023748813, "z_comb": -11.2}, {"star": "5341673851394297600", "element": "Cm", "ew_ma": 2.778, "p": 0.004987531172069825, "z_comb": -11.92}, {"star": "5596797039059063680", "element": "Tc", "ew_ma": 1.176, "p": 0.0010499475026248687, "z_comb": -10.77}, {"star": "5596797039059063680", "element": "Pm", "ew_ma": 0.787, "p": 0.0013499325033748313, "z_comb": -9.83}, {"star": "5596797039059063680", "element": "Pa", "ew_ma": 0.684, "p": 0.0010999450027498626, "z_comb": -10.08}, {"star": "5596797039059063680", "element": "Pu", "ew_ma": 0.414, "p": 0.0010999450027498626, "z_comb": -8.63}, {"star": "5596797039059063680", "element": "Am", "ew_ma": 0.231, "p": 0.0010999450027498626, "z_comb": -10.0}, {"star": "5596797039059063680", "element": "Cm", "ew_ma": 1.12, "p": 0.0024937655860349127, "z_comb": -12.53}, {"star": "5760701787150565888", "element": "Tc", "ew_ma": 1.62, "p": 0.0008999550022498875, "z_comb": -10.85}, {"star": "5760701787150565888", "element": "Pm", "ew_ma": 1.331, "p": 0.0008999550022498875, "z_comb": -10.82}, {"star": "5760701787150565888", "element": "Pa", "ew_ma": 1.767, "p": 0.0007499625018749063, "z_comb": -10.91}, {"star": "5760701787150565888", "element": "Pu", "ew_ma": 0.351, "p": 0.0007999600019999, "z_comb": -10.59}, {"star": "5760701787150565888", "element": "Am", "ew_ma": 0.485, "p": 0.0010999450027498626, "z_comb": -10.81}, {"star": "5760701787150565888", "element": "Cm", "ew_ma": 2.217, "p": 0.004987531172069825, "z_comb": -10.8}, {"star": "6180035765135232128", "element": "Tc", "ew_ma": 2.49, "p": 0.0013499325033748313, "z_comb": -12.35}, {"star": "6180035765135232128", "element": "Pm", "ew_ma": 1.067, "p": 0.001399930003499825, "z_comb": -11.27}, {"star": "6180035765135232128", "element": "Pa", "ew_ma": 0.907, "p": 0.00119994000299985, "z_comb": -11.96}, {"star": "6180035765135232128", "element": "Pu", "ew_ma": 0.277, "p": 0.000999950002499875, "z_comb": -10.39}, {"star": "6180035765135232128", "element": "Am", "ew_ma": 0.59, "p": 0.0011499425028748563, "z_comb": -11.37}, {"star": "6180035765135232128", "element": "Cm", "ew_ma": 1.751, "p": 0.0024937655860349127, "z_comb": -14.34}, {"star": "648998734141447296", "element": "Tc", "ew_ma": 2.119, "p": 0.00119994000299985, "z_comb": -8.92}, {"star": "648998734141447296", "element": "Pm", "ew_ma": 0.976, "p": 0.000999950002499875, "z_comb": -8.27}, {"star": "648998734141447296", "element": "Pa", "ew_ma": 2.213, "p": 0.0010999450027498626, "z_comb": -8.67}, {"star": "648998734141447296", "element": "Pu", "ew_ma": 0.692, "p": 0.0008999550022498875, "z_comb": -7.41}, {"star": "648998734141447296", "element": "Am", "ew_ma": 0.964, "p": 0.0011499425028748563, "z_comb": -8.38}, {"star": "648998734141447296", "element": "Cm", "ew_ma": 3.184, "p": 0.004987531172069825, "z_comb": -10.89}, {"star": "6854626246593473792", "element": "Tc", "ew_ma": 1.843, "p": 0.0007999600019999, "z_comb": -10.27}, {"star": "6854626246593473792", "element": "Pm", "ew_ma": 1.143, "p": 0.00119994000299985, "z_comb": -9.34}, {"star": "6854626246593473792", "element": "Pa", "ew_ma": 1.066, "p": 0.0007999600019999, "z_comb": -9.61}, {"star": "6854626246593473792", "element": "Pu", "ew_ma": 0.573, "p": 0.0009499525023748813, "z_comb": -8.35}, {"star": "6854626246593473792", "element": "Am", "ew_ma": 0.67, "p": 0.0013499325033748313, "z_comb": -9.19}, {"star": "6854626246593473792", "element": "Cm", "ew_ma": 1.805, "p": 0.0024937655860349127, "z_comb": -12.28}] \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_check_FEROS.json b/papers/short_lived_elements/data/element_check_FEROS.json new file mode 100644 index 0000000000000000000000000000000000000000..e4d9b1f552eec7e021b905af01d48b7e09fe0ad1 --- /dev/null +++ b/papers/short_lived_elements/data/element_check_FEROS.json @@ -0,0 +1 @@ +[{"star": "1237090738916392704", "element": "Tc", "ew_ma": 14.464, "p": 0.0008499575021248938, "z_comb": -32.0}, {"star": "1237090738916392704", "element": "Pm", "ew_ma": 7.515, "p": 0.0007499625018749063, "z_comb": -26.27}, {"star": "1237090738916392704", "element": "Pa", "ew_ma": 8.946, "p": 0.0010999450027498626, "z_comb": -29.01}, {"star": "1237090738916392704", "element": "Pu", "ew_ma": 2.329, "p": 0.0010999450027498626, "z_comb": -20.43}, {"star": "1237090738916392704", "element": "Am", "ew_ma": 4.249, "p": 0.0007499625018749063, "z_comb": -27.8}, {"star": "1237090738916392704", "element": "Cm", "ew_ma": 14.36, "p": 0.0024937655860349127, "z_comb": -40.15}, {"star": "2913411183149615744", "element": "Tc", "ew_ma": 2.732, "p": 0.000999950002499875, "z_comb": -10.56}, {"star": "2913411183149615744", "element": "Pm", "ew_ma": 1.712, "p": 0.000999950002499875, "z_comb": -10.25}, {"star": "2913411183149615744", "element": "Pa", "ew_ma": 1.626, "p": 0.0010999450027498626, "z_comb": -10.32}, {"star": "2913411183149615744", "element": "Pu", "ew_ma": 0.7, "p": 0.0009499525023748813, "z_comb": -9.86}, {"star": "2913411183149615744", "element": "Am", "ew_ma": 1.136, "p": 0.0007499625018749063, "z_comb": -10.18}, {"star": "2913411183149615744", "element": "Cm", "ew_ma": 2.151, "p": 0.0024937655860349127, "z_comb": -12.01}, {"star": "3269362645115584640", "element": "Tc", "ew_ma": 2.655, "p": 0.0008499575021248938, "z_comb": -12.72}, {"star": "3269362645115584640", "element": "Pm", "ew_ma": 2.101, "p": 0.0008999550022498875, "z_comb": -11.86}, {"star": "3269362645115584640", "element": "Pa", "ew_ma": 2.385, "p": 0.0010499475026248687, "z_comb": -12.2}, {"star": "3269362645115584640", "element": "Pu", "ew_ma": 0.79, "p": 0.0012499375031248437, "z_comb": -10.81}, {"star": "3269362645115584640", "element": "Am", "ew_ma": 1.177, "p": 0.0008999550022498875, "z_comb": -12.13}, {"star": "3269362645115584640", "element": "Cm", "ew_ma": 3.178, "p": 0.0024937655860349127, "z_comb": -14.15}, {"star": "3639760521643499776", "element": "Tc", "ew_ma": 3.589, "p": 0.0012499375031248437, "z_comb": -13.15}, {"star": "3639760521643499776", "element": "Pm", "ew_ma": 1.715, "p": 0.0012999350032498376, "z_comb": -13.22}, {"star": "3639760521643499776", "element": "Pa", "ew_ma": 3.335, "p": 0.0007999600019999, "z_comb": -12.97}, {"star": "3639760521643499776", "element": "Pu", "ew_ma": 1.322, "p": 0.0011499425028748563, "z_comb": -12.81}, {"star": "3639760521643499776", "element": "Am", "ew_ma": 1.318, "p": 0.001399930003499825, "z_comb": -13.12}, {"star": "3639760521643499776", "element": "Cm", "ew_ma": 4.826, "p": 0.0024937655860349127, "z_comb": -14.24}, {"star": "4038724053986441856", "element": "Tc", "ew_ma": 3.546, "p": 0.0010499475026248687, "z_comb": -11.32}, {"star": "4038724053986441856", "element": "Pm", "ew_ma": 1.49, "p": 0.0012999350032498376, "z_comb": -11.5}, {"star": "4038724053986441856", "element": "Pa", "ew_ma": 1.545, "p": 0.0009499525023748813, "z_comb": -11.36}, {"star": "4038724053986441856", "element": "Pu", "ew_ma": 0.83, "p": 0.0006999650017499125, "z_comb": -12.18}, {"star": "4038724053986441856", "element": "Am", "ew_ma": 1.181, "p": 0.000999950002499875, "z_comb": -11.59}, {"star": "4038724053986441856", "element": "Cm", "ew_ma": 3.241, "p": 0.0024937655860349127, "z_comb": -11.0}, {"star": "4763906879239461632", "element": "Tc", "ew_ma": 3.755, "p": 0.00119994000299985, "z_comb": -19.74}, {"star": "4763906879239461632", "element": "Pm", "ew_ma": 2.088, "p": 0.0010499475026248687, "z_comb": -16.69}, {"star": "4763906879239461632", "element": "Pa", "ew_ma": 2.716, "p": 0.0008999550022498875, "z_comb": -18.85}, {"star": "4763906879239461632", "element": "Pu", "ew_ma": 0.891, "p": 0.0007999600019999, "z_comb": -12.9}, {"star": "4763906879239461632", "element": "Am", "ew_ma": 1.194, "p": 0.0008499575021248938, "z_comb": -17.03}, {"star": "4763906879239461632", "element": "Cm", "ew_ma": 4.868, "p": 0.0024937655860349127, "z_comb": -25.18}, {"star": "5317114850417299584", "element": "Tc", "ew_ma": 3.204, "p": 0.0007999600019999, "z_comb": -11.91}, {"star": "5317114850417299584", "element": "Pm", "ew_ma": 1.943, "p": 0.0010499475026248687, "z_comb": -11.68}, {"star": "5317114850417299584", "element": "Pa", "ew_ma": 2.861, "p": 0.00119994000299985, "z_comb": -11.76}, {"star": "5317114850417299584", "element": "Pu", "ew_ma": 0.881, "p": 0.0009499525023748813, "z_comb": -11.13}, {"star": "5317114850417299584", "element": "Am", "ew_ma": 1.027, "p": 0.0010499475026248687, "z_comb": -11.61}, {"star": "5317114850417299584", "element": "Cm", "ew_ma": 2.925, "p": 0.0024937655860349127, "z_comb": -12.24}, {"star": "5559265690666327168", "element": "Tc", "ew_ma": 10.16, "p": 0.0008999550022498875, "z_comb": -19.74}, {"star": "5559265690666327168", "element": "Pm", "ew_ma": 4.874, "p": 0.0010999450027498626, "z_comb": -18.08}, {"star": "5559265690666327168", "element": "Pa", "ew_ma": 5.867, "p": 0.0009499525023748813, "z_comb": -18.85}, {"star": "5559265690666327168", "element": "Pu", "ew_ma": 1.006, "p": 0.0011499425028748563, "z_comb": -14.76}, {"star": "5559265690666327168", "element": "Am", "ew_ma": 2.179, "p": 0.0012499375031248437, "z_comb": -17.98}, {"star": "5559265690666327168", "element": "Cm", "ew_ma": 6.168, "p": 0.0024937655860349127, "z_comb": -21.88}, {"star": "5793182631952977920", "element": "Tc", "ew_ma": 3.603, "p": 0.0008499575021248938, "z_comb": -17.92}, {"star": "5793182631952977920", "element": "Pm", "ew_ma": 2.703, "p": 0.0009499525023748813, "z_comb": -16.08}, {"star": "5793182631952977920", "element": "Pa", "ew_ma": 4.292, "p": 0.0010499475026248687, "z_comb": -17.01}, {"star": "5793182631952977920", "element": "Pu", "ew_ma": 1.499, "p": 0.0010499475026248687, "z_comb": -13.88}, {"star": "5793182631952977920", "element": "Am", "ew_ma": 1.105, "p": 0.0010499475026248687, "z_comb": -16.02}, {"star": "5793182631952977920", "element": "Cm", "ew_ma": 8.097, "p": 0.0024937655860349127, "z_comb": -21.83}, {"star": "6062166950467100032", "element": "Tc", "ew_ma": 4.34, "p": 0.0009499525023748813, "z_comb": -13.4}, {"star": "6062166950467100032", "element": "Pm", "ew_ma": 2.25, "p": 0.000999950002499875, "z_comb": -13.32}, {"star": "6062166950467100032", "element": "Pa", "ew_ma": 2.568, "p": 0.0008999550022498875, "z_comb": -13.19}, {"star": "6062166950467100032", "element": "Pu", "ew_ma": 1.067, "p": 0.0009499525023748813, "z_comb": -12.72}, {"star": "6062166950467100032", "element": "Am", "ew_ma": 1.689, "p": 0.0008499575021248938, "z_comb": -13.27}, {"star": "6062166950467100032", "element": "Cm", "ew_ma": 2.371, "p": 0.0024937655860349127, "z_comb": -13.27}, {"star": "6484716209628726912", "element": "Tc", "ew_ma": 5.301, "p": 0.0010999450027498626, "z_comb": -13.21}, {"star": "6484716209628726912", "element": "Pm", "ew_ma": 2.13, "p": 0.0008999550022498875, "z_comb": -12.34}, {"star": "6484716209628726912", "element": "Pa", "ew_ma": 2.946, "p": 0.0010999450027498626, "z_comb": -12.39}, {"star": "6484716209628726912", "element": "Pu", "ew_ma": 1.165, "p": 0.0010499475026248687, "z_comb": -11.88}, {"star": "6484716209628726912", "element": "Am", "ew_ma": 1.679, "p": 0.00119994000299985, "z_comb": -12.47}, {"star": "6484716209628726912", "element": "Cm", "ew_ma": 4.206, "p": 0.0024937655860349127, "z_comb": -15.12}, {"star": "6879764552737781888", "element": "Tc", "ew_ma": 3.989, "p": 0.000999950002499875, "z_comb": -13.25}, {"star": "6879764552737781888", "element": "Pm", "ew_ma": 3.002, "p": 0.0008999550022498875, "z_comb": -12.53}, {"star": "6879764552737781888", "element": "Pa", "ew_ma": 3.878, "p": 0.0007999600019999, "z_comb": -12.75}, {"star": "6879764552737781888", "element": "Pu", "ew_ma": 0.733, "p": 0.00119994000299985, "z_comb": -11.11}, {"star": "6879764552737781888", "element": "Am", "ew_ma": 1.781, "p": 0.0008499575021248938, "z_comb": -12.58}, {"star": "6879764552737781888", "element": "Cm", "ew_ma": 4.959, "p": 0.0024937655860349127, "z_comb": -14.45}] \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_check_HARPS.json b/papers/short_lived_elements/data/element_check_HARPS.json new file mode 100644 index 0000000000000000000000000000000000000000..7bd375f5c7647afea8b54629a7a84d811e1d8fd3 --- /dev/null +++ b/papers/short_lived_elements/data/element_check_HARPS.json @@ -0,0 +1 @@ +[{"star": "2324785228033780608", "element": "Tc", "ew_ma": 2.063, "p": 0.0017499125043747813, "z_comb": -11.12}, {"star": "2324785228033780608", "element": "Pm", "ew_ma": 1.348, "p": 0.0009499525023748813, "z_comb": -10.49}, {"star": "2324785228033780608", "element": "Pa", "ew_ma": 1.836, "p": 0.0010499475026248687, "z_comb": -10.79}, {"star": "2324785228033780608", "element": "Pu", "ew_ma": 0.564, "p": 0.0011499425028748563, "z_comb": -9.64}, {"star": "2324785228033780608", "element": "Am", "ew_ma": 0.676, "p": 0.0010999450027498626, "z_comb": -10.65}, {"star": "2324785228033780608", "element": "Cm", "ew_ma": 2.729, "p": 0.005221932114882507, "z_comb": -12.82}, {"star": "2523361151179609344", "element": "Tc", "ew_ma": 0.726, "p": 0.0010499475026248687, "z_comb": -7.73}, {"star": "2523361151179609344", "element": "Pm", "ew_ma": 0.402, "p": 0.0010499475026248687, "z_comb": -7.05}, {"star": "2523361151179609344", "element": "Pa", "ew_ma": 0.876, "p": 0.0008999550022498875, "z_comb": -7.48}, {"star": "2523361151179609344", "element": "Pu", "ew_ma": 0.197, "p": 0.0008999550022498875, "z_comb": -6.53}, {"star": "2523361151179609344", "element": "Am", "ew_ma": 0.343, "p": 0.001399930003499825, "z_comb": -7.29}, {"star": "2523361151179609344", "element": "Cm", "ew_ma": 0.643, "p": 0.002631578947368421, "z_comb": -9.26}, {"star": "3182634954624823168", "element": "Tc", "ew_ma": 2.246, "p": 0.0010499475026248687, "z_comb": -12.32}, {"star": "3182634954624823168", "element": "Pm", "ew_ma": 1.93, "p": 0.0012999350032498376, "z_comb": -10.9}, {"star": "3182634954624823168", "element": "Pa", "ew_ma": 2.077, "p": 0.0008999550022498875, "z_comb": -11.55}, {"star": "3182634954624823168", "element": "Pu", "ew_ma": 0.657, "p": 0.0007999600019999, "z_comb": -9.4}, {"star": "3182634954624823168", "element": "Am", "ew_ma": 0.709, "p": 0.0012999350032498376, "z_comb": -11.24}, {"star": "3182634954624823168", "element": "Cm", "ew_ma": 3.804, "p": 0.005249343832020997, "z_comb": -14.62}, {"star": "3786697056556771584", "element": "Tc", "ew_ma": 1.212, "p": 0.0009499525023748813, "z_comb": -9.29}, {"star": "3786697056556771584", "element": "Pm", "ew_ma": 0.677, "p": 0.0011499425028748563, "z_comb": -8.53}, {"star": "3786697056556771584", "element": "Pa", "ew_ma": 1.174, "p": 0.0008999550022498875, "z_comb": -8.91}, {"star": "3786697056556771584", "element": "Pu", "ew_ma": 0.315, "p": 0.00119994000299985, "z_comb": -7.27}, {"star": "3786697056556771584", "element": "Am", "ew_ma": 0.437, "p": 0.0012499375031248437, "z_comb": -8.5}, {"star": "3786697056556771584", "element": "Cm", "ew_ma": 1.236, "p": 0.005291005291005291, "z_comb": -11.77}, {"star": "4400452830957830656", "element": "Tc", "ew_ma": 5.839, "p": 0.000999950002499875, "z_comb": -11.69}, {"star": "4400452830957830656", "element": "Pm", "ew_ma": 2.373, "p": 0.0013499325033748313, "z_comb": -10.91}, {"star": "4400452830957830656", "element": "Pa", "ew_ma": 2.88, "p": 0.0008499575021248938, "z_comb": -11.36}, {"star": "4400452830957830656", "element": "Pu", "ew_ma": 1.146, "p": 0.0013499325033748313, "z_comb": -9.96}, {"star": "4400452830957830656", "element": "Am", "ew_ma": 0.952, "p": 0.0010999450027498626, "z_comb": -10.82}, {"star": "4400452830957830656", "element": "Cm", "ew_ma": 4.589, "p": 0.005194805194805195, "z_comb": -12.48}, {"star": "4923433303326992384", "element": "Tc", "ew_ma": 0.522, "p": 0.0011499425028748563, "z_comb": -6.01}, {"star": "4923433303326992384", "element": "Pm", "ew_ma": 0.514, "p": 0.0008499575021248938, "z_comb": -5.87}, {"star": "4923433303326992384", "element": "Pa", "ew_ma": 0.473, "p": 0.0010499475026248687, "z_comb": -5.97}, {"star": "4923433303326992384", "element": "Pu", "ew_ma": 0.441, "p": 0.0008499575021248938, "z_comb": -5.58}, {"star": "4923433303326992384", "element": "Am", "ew_ma": 0.311, "p": 0.0008499575021248938, "z_comb": -5.88}, {"star": "4923433303326992384", "element": "Cm", "ew_ma": 0.786, "p": 0.0051813471502590676, "z_comb": -6.84}, {"star": "5479222240596469632", "element": "Tc", "ew_ma": 1.534, "p": 0.00119994000299985, "z_comb": -8.37}, {"star": "5479222240596469632", "element": "Pm", "ew_ma": 1.482, "p": 0.0008999550022498875, "z_comb": -8.33}, {"star": "5479222240596469632", "element": "Pa", "ew_ma": 2.483, "p": 0.0006999650017499125, "z_comb": -8.38}, {"star": "5479222240596469632", "element": "Pu", "ew_ma": 1.041, "p": 0.0009499525023748813, "z_comb": -8.0}, {"star": "5479222240596469632", "element": "Am", "ew_ma": 1.054, "p": 0.0013499325033748313, "z_comb": -8.2}, {"star": "5479222240596469632", "element": "Cm", "ew_ma": 2.999, "p": 0.0026041666666666665, "z_comb": -7.95}, {"star": "5569858798004394624", "element": "Tc", "ew_ma": 0.85, "p": 0.001399930003499825, "z_comb": -7.6}, {"star": "5569858798004394624", "element": "Pm", "ew_ma": 0.803, "p": 0.0010999450027498626, "z_comb": -7.38}, {"star": "5569858798004394624", "element": "Pa", "ew_ma": 0.36, "p": 0.0007999600019999, "z_comb": -7.4}, {"star": "5569858798004394624", "element": "Pu", "ew_ma": 0.386, "p": 0.0007999600019999, "z_comb": -7.33}, {"star": "5569858798004394624", "element": "Am", "ew_ma": 0.622, "p": 0.000999950002499875, "z_comb": -7.53}, {"star": "5569858798004394624", "element": "Cm", "ew_ma": 1.154, "p": 0.0025974025974025974, "z_comb": -8.87}, {"star": "5848156426657892480", "element": "Tc", "ew_ma": 0.638, "p": 0.0009499525023748813, "z_comb": -7.66}, {"star": "5848156426657892480", "element": "Pm", "ew_ma": 0.53, "p": 0.0008499575021248938, "z_comb": -7.45}, {"star": "5848156426657892480", "element": "Pa", "ew_ma": 0.527, "p": 0.0007499625018749063, "z_comb": -7.71}, {"star": "5848156426657892480", "element": "Pu", "ew_ma": 0.168, "p": 0.0008499575021248938, "z_comb": -7.34}, {"star": "5848156426657892480", "element": "Am", "ew_ma": 0.366, "p": 0.0012999350032498376, "z_comb": -7.48}, {"star": "5848156426657892480", "element": "Cm", "ew_ma": 0.506, "p": 0.0025906735751295338, "z_comb": -7.79}, {"star": "6133033601555979648", "element": "Tc", "ew_ma": 5.376, "p": 0.0013499325033748313, "z_comb": -15.35}, {"star": "6133033601555979648", "element": "Pm", "ew_ma": 3.96, "p": 0.0009499525023748813, "z_comb": -14.48}, {"star": "6133033601555979648", "element": "Pa", "ew_ma": 7.093, "p": 0.0009499525023748813, "z_comb": -14.86}, {"star": "6133033601555979648", "element": "Pu", "ew_ma": 1.63, "p": 0.0010499475026248687, "z_comb": -12.65}, {"star": "6133033601555979648", "element": "Am", "ew_ma": 1.856, "p": 0.0009499525023748813, "z_comb": -14.21}, {"star": "6133033601555979648", "element": "Cm", "ew_ma": 9.418, "p": 0.005249343832020997, "z_comb": -17.49}, {"star": "6544549880063909248", "element": "Tc", "ew_ma": 1.475, "p": 0.0011499425028748563, "z_comb": -8.11}, {"star": "6544549880063909248", "element": "Pm", "ew_ma": 0.944, "p": 0.0007999600019999, "z_comb": -7.5}, {"star": "6544549880063909248", "element": "Pa", "ew_ma": 1.553, "p": 0.0011499425028748563, "z_comb": -7.8}, {"star": "6544549880063909248", "element": "Pu", "ew_ma": 0.181, "p": 0.00119994000299985, "z_comb": -6.87}, {"star": "6544549880063909248", "element": "Am", "ew_ma": 0.529, "p": 0.0008999550022498875, "z_comb": -7.63}, {"star": "6544549880063909248", "element": "Cm", "ew_ma": 1.979, "p": 0.0026666666666666666, "z_comb": -9.51}, {"star": "6914237987476826624", "element": "Tc", "ew_ma": 0.849, "p": 0.0007499625018749063, "z_comb": -8.89}, {"star": "6914237987476826624", "element": "Pm", "ew_ma": 0.685, "p": 0.000599970001499925, "z_comb": -8.08}, {"star": "6914237987476826624", "element": "Pa", "ew_ma": 1.115, "p": 0.0012999350032498376, "z_comb": -8.55}, {"star": "6914237987476826624", "element": "Pu", "ew_ma": 0.321, "p": 0.0010999450027498626, "z_comb": -7.4}, {"star": "6914237987476826624", "element": "Am", "ew_ma": 0.485, "p": 0.0008499575021248938, "z_comb": -8.31}, {"star": "6914237987476826624", "element": "Cm", "ew_ma": 0.995, "p": 0.005221932114882507, "z_comb": -10.51}] \ No newline at end of file diff --git a/papers/short_lived_elements/data/element_check_UVES.json b/papers/short_lived_elements/data/element_check_UVES.json new file mode 100644 index 0000000000000000000000000000000000000000..8c172f715ee3859f0098a4ec62287b0d470ad0bf --- /dev/null +++ b/papers/short_lived_elements/data/element_check_UVES.json @@ -0,0 +1 @@ +[{"star": "1244571953471006720", "element": "Tc", "ew_ma": 5.716, "p": 0.0010999450027498626, "z_comb": -14.04}, {"star": "1244571953471006720", "element": "Pm", "ew_ma": 4.828, "p": 0.0009499525023748813, "z_comb": -14.45}, {"star": "1244571953471006720", "element": "Pa", "ew_ma": 5.294, "p": 0.0011499425028748563, "z_comb": -14.42}, {"star": "1244571953471006720", "element": "Pu", "ew_ma": 1.89, "p": 0.000999950002499875, "z_comb": -15.39}, {"star": "1244571953471006720", "element": "Am", "ew_ma": 10.803, "p": 0.0010499475026248687, "z_comb": -14.31}, {"star": "1244571953471006720", "element": "Cm", "ew_ma": 7.811, "p": 0.0024937655860349127, "z_comb": -13.73}, {"star": "2531792756096759296", "element": "Tc", "ew_ma": 2.482, "p": 0.0010999450027498626, "z_comb": -15.54}, {"star": "2531792756096759296", "element": "Pm", "ew_ma": 1.146, "p": 0.0013499325033748313, "z_comb": -13.61}, {"star": "2531792756096759296", "element": "Pa", "ew_ma": 1.328, "p": 0.0006499675016249188, "z_comb": -14.93}, {"star": "2531792756096759296", "element": "Pu", "ew_ma": 0.686, "p": 0.0013499325033748313, "z_comb": -11.35}, {"star": "2531792756096759296", "element": "Am", "ew_ma": 2.054, "p": 0.0007999600019999, "z_comb": -16.8}, {"star": "2531792756096759296", "element": "Cm", "ew_ma": 2.535, "p": 0.0024937655860349127, "z_comb": -18.84}, {"star": "2980492387558410112", "element": "Tc", "ew_ma": 14.339, "p": 0.0008999550022498875, "z_comb": -13.26}, {"star": "2980492387558410112", "element": "Pm", "ew_ma": 11.273, "p": 0.00119994000299985, "z_comb": -12.57}, {"star": "2980492387558410112", "element": "Pa", "ew_ma": 15.558, "p": 0.0012499375031248437, "z_comb": -13.28}, {"star": "2980492387558410112", "element": "Pu", "ew_ma": 4.384, "p": 0.0009499525023748813, "z_comb": -12.1}, {"star": "2980492387558410112", "element": "Am", "ew_ma": 16.818, "p": 0.0013499325033748313, "z_comb": -13.15}, {"star": "2980492387558410112", "element": "Cm", "ew_ma": 12.867, "p": 0.0024937655860349127, "z_comb": -15.27}, {"star": "3482326708703712640", "element": "Tc", "ew_ma": 2.533, "p": 0.0010999450027498626, "z_comb": -11.77}, {"star": "3482326708703712640", "element": "Pm", "ew_ma": 0.615, "p": 0.0010499475026248687, "z_comb": -10.83}, {"star": "3482326708703712640", "element": "Pa", "ew_ma": 2.683, "p": 0.0007999600019999, "z_comb": -11.38}, {"star": "3482326708703712640", "element": "Pu", "ew_ma": 0.381, "p": 0.0011499425028748563, "z_comb": -9.08}, {"star": "3482326708703712640", "element": "Am", "ew_ma": 1.691, "p": 0.0006499675016249188, "z_comb": -12.52}, {"star": "3482326708703712640", "element": "Cm", "ew_ma": 2.57, "p": 0.0024937655860349127, "z_comb": -14.5}, {"star": "3732539683617410816", "element": "Tc", "ew_ma": 3.009, "p": 0.00119994000299985, "z_comb": -11.76}, {"star": "3732539683617410816", "element": "Pm", "ew_ma": 1.447, "p": 0.0011499425028748563, "z_comb": -11.59}, {"star": "3732539683617410816", "element": "Pa", "ew_ma": 1.947, "p": 0.0010499475026248687, "z_comb": -11.94}, {"star": "3732539683617410816", "element": "Pu", "ew_ma": 0.808, "p": 0.0010999450027498626, "z_comb": -11.52}, {"star": "3732539683617410816", "element": "Am", "ew_ma": 2.005, "p": 0.00119994000299985, "z_comb": -11.69}, {"star": "3732539683617410816", "element": "Cm", "ew_ma": 2.54, "p": 0.005714285714285714, "z_comb": -11.23}, {"star": "4421455530273900032", "element": "Tc", "ew_ma": 7.842, "p": 0.000999950002499875, "z_comb": -17.14}, {"star": "4421455530273900032", "element": "Pm", "ew_ma": 4.875, "p": 0.0010999450027498626, "z_comb": -16.32}, {"star": "4421455530273900032", "element": "Pa", "ew_ma": 4.104, "p": 0.0010499475026248687, "z_comb": -16.78}, {"star": "4421455530273900032", "element": "Pu", "ew_ma": 0.712, "p": 0.0007999600019999, "z_comb": -14.3}, {"star": "4421455530273900032", "element": "Am", "ew_ma": 4.614, "p": 0.0007999600019999, "z_comb": -17.65}, {"star": "4421455530273900032", "element": "Cm", "ew_ma": 5.378, "p": 0.005847953216374269, "z_comb": -17.58}, {"star": "4906784051581971200", "element": "Tc", "ew_ma": 4.936, "p": 0.0006499675016249188, "z_comb": -12.6}, {"star": "4906784051581971200", "element": "Pm", "ew_ma": 2.763, "p": 0.0015999200039998, "z_comb": -12.02}, {"star": "4906784051581971200", "element": "Pa", "ew_ma": 3.595, "p": 0.0013499325033748313, "z_comb": -12.13}, {"star": "4906784051581971200", "element": "Pu", "ew_ma": 1.059, "p": 0.0008999550022498875, "z_comb": -11.7}, {"star": "4906784051581971200", "element": "Am", "ew_ma": 3.435, "p": 0.0008999550022498875, "z_comb": -12.32}, {"star": "4906784051581971200", "element": "Cm", "ew_ma": 4.114, "p": 0.0024937655860349127, "z_comb": -14.1}, {"star": "5320952798822552064", "element": "Tc", "ew_ma": 1.485, "p": 0.0009499525023748813, "z_comb": -10.44}, {"star": "5320952798822552064", "element": "Pm", "ew_ma": 1.282, "p": 0.0008499575021248938, "z_comb": -10.36}, {"star": "5320952798822552064", "element": "Pa", "ew_ma": 0.915, "p": 0.00119994000299985, "z_comb": -10.18}, {"star": "5320952798822552064", "element": "Pu", "ew_ma": 0.743, "p": 0.0008999550022498875, "z_comb": -10.65}, {"star": "5320952798822552064", "element": "Am", "ew_ma": 0.43, "p": 0.0009499525023748813, "z_comb": -10.27}, {"star": "5320952798822552064", "element": "Cm", "ew_ma": 1.02, "p": 0.0024937655860349127, "z_comb": -9.26}, {"star": "5567900121118276736", "element": "Tc", "ew_ma": 2.348, "p": 0.0013499325033748313, "z_comb": -12.14}, {"star": "5567900121118276736", "element": "Pm", "ew_ma": 1.753, "p": 0.00119994000299985, "z_comb": -11.8}, {"star": "5567900121118276736", "element": "Pa", "ew_ma": 2.371, "p": 0.0008999550022498875, "z_comb": -11.78}, {"star": "5567900121118276736", "element": "Pu", "ew_ma": 0.677, "p": 0.0009499525023748813, "z_comb": -11.93}, {"star": "5567900121118276736", "element": "Am", "ew_ma": 6.768, "p": 0.0008499575021248938, "z_comb": -11.9}, {"star": "5567900121118276736", "element": "Cm", "ew_ma": 3.126, "p": 0.0024937655860349127, "z_comb": -13.08}, {"star": "5951165616611763456", "element": "Tc", "ew_ma": 3.254, "p": 0.0013499325033748313, "z_comb": -9.45}, {"star": "5951165616611763456", "element": "Pm", "ew_ma": 4.192, "p": 0.0011499425028748563, "z_comb": -9.29}, {"star": "5951165616611763456", "element": "Pa", "ew_ma": 2.284, "p": 0.0012499375031248437, "z_comb": -9.1}, {"star": "5951165616611763456", "element": "Pu", "ew_ma": 1.551, "p": 0.00119994000299985, "z_comb": -9.21}, {"star": "5951165616611763456", "element": "Am", "ew_ma": 2.216, "p": 0.000999950002499875, "z_comb": -9.24}, {"star": "5951165616611763456", "element": "Cm", "ew_ma": 4.793, "p": 0.0024937655860349127, "z_comb": -9.9}, {"star": "6226694571859532800", "element": "Tc", "ew_ma": 2.816, "p": 0.0007499625018749063, "z_comb": -10.09}, {"star": "6226694571859532800", "element": "Pm", "ew_ma": 2.803, "p": 0.0007999600019999, "z_comb": -10.03}, {"star": "6226694571859532800", "element": "Pa", "ew_ma": 2.927, "p": 0.0008999550022498875, "z_comb": -9.87}, {"star": "6226694571859532800", "element": "Pu", "ew_ma": 0.891, "p": 0.00119994000299985, "z_comb": -10.12}, {"star": "6226694571859532800", "element": "Am", "ew_ma": 1.281, "p": 0.0012999350032498376, "z_comb": -9.96}, {"star": "6226694571859532800", "element": "Cm", "ew_ma": 4.527, "p": 0.0024937655860349127, "z_comb": -10.24}, {"star": "84625634714435968", "element": "Tc", "ew_ma": 7.05, "p": 0.0008499575021248938, "z_comb": -9.04}, {"star": "84625634714435968", "element": "Pm", "ew_ma": 3.527, "p": 0.0011499425028748563, "z_comb": -8.59}, {"star": "84625634714435968", "element": "Pa", "ew_ma": 1.378, "p": 0.0010499475026248687, "z_comb": -8.79}, {"star": "84625634714435968", "element": "Pu", "ew_ma": 1.657, "p": 0.0011499425028748563, "z_comb": -8.06}, {"star": "84625634714435968", "element": "Am", "ew_ma": 4.46, "p": 0.0014499275036248187, "z_comb": -8.84}, {"star": "84625634714435968", "element": "Cm", "ew_ma": 4.474, "p": 0.0024937655860349127, "z_comb": -9.74}] \ No newline at end of file diff --git a/papers/short_lived_elements/data/elements_census.json b/papers/short_lived_elements/data/elements_census.json new file mode 100644 index 0000000000000000000000000000000000000000..89423e199bf415a3d6c96687d482dadd327e64cf --- /dev/null +++ b/papers/short_lived_elements/data/elements_census.json @@ -0,0 +1 @@ +[{"source_id": "2495335115182966016", "ra": "38.83234577472829", "dec": "-3.562549585651071", "parallax": "26.505717959938682", "phot_g_mean_mag": "6.674584", "bp_rp": "0.8231435", "radial_velocity": "-50.954742", "eso": {"UVES": 24}}, {"source_id": "2498460442625153536", "ra": "40.30930839090126", "dec": "-0.6962055847301062", "parallax": "44.86942385484068", "phot_g_mean_mag": "5.639261", "bp_rp": "0.665082", "radial_velocity": "7.9355035", "eso": {"FEROS": 2}}, {"source_id": "2622929144618856704", "ra": "338.14322236787376", "dec": "-6.467042425683304", "parallax": "26.841347715929416", "phot_g_mean_mag": "6.781881", "bp_rp": "0.8389387", "radial_velocity": "-21.397284", "eso": {"UVES": 6}}, {"source_id": "2643079756782833280", "ra": "357.2413628390254", "dec": "0.4366277922197671", "parallax": "21.284252798029602", "phot_g_mean_mag": "8.745276", "bp_rp": "0.90938854", "radial_velocity": "-9.817182", "eso": {}}, {"source_id": "2756461464558262656", "ra": "355.298146090666", "dec": "6.262736401657285", "parallax": "20.038341441222656", "phot_g_mean_mag": "7.624326", "bp_rp": "0.7321634", "radial_velocity": "-18.592148", "eso": {"ESPRESSO": 4}}, {"source_id": "5016419963760182912", "ra": "21.05213938952042", "dec": "-31.81229822311336", "parallax": "20.984190557679366", "phot_g_mean_mag": "6.7262187", "bp_rp": "0.7209277", "radial_velocity": "20.178999", "eso": {"UVES": 1}}, {"source_id": "95652018353917056", "ra": "26.232401137403862", "dec": "20.082682764562314", "parallax": "30.153469786700956", "phot_g_mean_mag": "6.1095624", "bp_rp": "0.8690858", "radial_velocity": "-46.09077", "eso": {}}, {"source_id": "2569739410631919104", "ra": "31.027392049541508", "dec": "8.655909536575736", "parallax": "22.705841827948053", "phot_g_mean_mag": "8.615158", "bp_rp": "0.9695835", "radial_velocity": "0.18143338", "eso": {}}, {"source_id": "2980728988716627584", "ra": "72.1355950755867", "dec": "-16.32931271007928", "parallax": "23.970016804404334", "phot_g_mean_mag": "5.629999", "bp_rp": "0.7006483", "radial_velocity": "34.03195", "eso": {}}, {"source_id": "2987621174275697792", "ra": "76.4805151453754", "dec": "-13.913515110211133", "parallax": "20.786167742907057", "phot_g_mean_mag": "7.9361324", "bp_rp": "0.99681854", "radial_velocity": "", "eso": {}}, {"source_id": "2989366614624859776", "ra": "76.85463136519172", "dec": "-12.491747354359491", "parallax": "26.984730039820256", "phot_g_mean_mag": "5.8184853", "bp_rp": "0.7816615", "radial_velocity": "53.166378", "eso": {}}, {"source_id": "3172940045207078784", "ra": "71.14118321925983", "dec": "-16.06490947840951", "parallax": "22.06519551448449", "phot_g_mean_mag": "7.417407", "bp_rp": "0.6754031", "radial_velocity": "22.323088", "eso": {}}, {"source_id": "3188395880157173120", "ra": "72.15299536432262", "dec": "-5.675149745806165", "parallax": "38.24952381381663", "phot_g_mean_mag": "5.6183434", "bp_rp": "0.79171896", "radial_velocity": "77.12153", "eso": {"UVES": 6}}, {"source_id": "3195203368962357760", "ra": "59.38199887268946", "dec": "-7.960152887167376", "parallax": "20.028821907504202", "phot_g_mean_mag": "8.573246", "bp_rp": "0.8738661", "radial_velocity": "53.981396", "eso": {}}, {"source_id": "3207926092885857664", "ra": "77.50839282431546", "dec": "-7.072819488755576", "parallax": "22.429951225784617", "phot_g_mean_mag": "8.319169", "bp_rp": "0.85818815", "radial_velocity": "64.53242", "eso": {}}, {"source_id": "3209949503518273024", "ra": "80.3246367948656", "dec": "-5.81146233046337", "parallax": "28.490257908850992", "phot_g_mean_mag": "7.0956388", "bp_rp": "0.73403645", "radial_velocity": "-5.1169147", "eso": {}}, {"source_id": "6989290475763456", "ra": "45.153526828148586", "dec": "5.985359407396669", "parallax": "30.32189207190648", "phot_g_mean_mag": "7.8996253", "bp_rp": "0.9936247", "radial_velocity": "71.0627", "eso": {}}, {"source_id": "66892264508548864", "ra": "58.046882432089944", "dec": "25.162347138819527", "parallax": "25.606096459490097", "phot_g_mean_mag": "6.641129", "bp_rp": "0.72567225", "radial_velocity": "-39.576027", "eso": {}}, {"source_id": "685042030968334592", "ra": "134.73184297897248", "dec": "21.16608719544678", "parallax": "26.606741683629128", "phot_g_mean_mag": "7.485322", "bp_rp": "0.82117796", "radial_velocity": "30.97216", "eso": {"FEROS": 1}}, {"source_id": "1174513645233715584", "ra": "221.56526784865852", "dec": "9.645560859432685", "parallax": "22.861716186391117", "phot_g_mean_mag": "7.5948267", "bp_rp": "0.84040594", "radial_velocity": "", "eso": {}}, {"source_id": "1282471810042948864", "ra": "220.34340167064482", "dec": "29.058094470978165", "parallax": "21.05866069491649", "phot_g_mean_mag": "7.6757483", "bp_rp": "0.8191042", "radial_velocity": "-32.199776", "eso": {}}, {"source_id": "3094474012068463360", "ra": "120.60893018754615", "dec": "4.15161626779043", "parallax": "23.903843830342076", "phot_g_mean_mag": "7.6834803", "bp_rp": "0.8197231", "radial_velocity": "", "eso": {}}, {"source_id": "3147366882214364544", "ra": "119.71195540180442", "dec": "10.129868644373767", "parallax": "32.405473559169195", "phot_g_mean_mag": "7.907506", "bp_rp": "0.9737625", "radial_velocity": "45.617123", "eso": {"FEROS": 1}}, {"source_id": "3460035313040998528", "ra": "179.37626215411316", "dec": "-39.218463716233366", "parallax": "22.76844088146153", "phot_g_mean_mag": "8.846466", "bp_rp": "0.97034836", "radial_velocity": "36.79006", "eso": {"UVES": 2}}, {"source_id": "3601738894159011328", "ra": "181.2999192710325", "dec": "-1.5087850354811618", "parallax": "30.66457055690345", "phot_g_mean_mag": "7.9622645", "bp_rp": "0.9377389", "radial_velocity": "16.63503", "eso": {"FEROS": 1}}, {"source_id": "3946438125929224320", "ra": "184.77628126563016", "dec": "16.547634275964707", "parallax": "36.40379214500465", "phot_g_mean_mag": "6.9036107", "bp_rp": "0.79304266", "radial_velocity": "1.7595692", "eso": {"FEROS": 13, "UVES": 6}}, {"source_id": "5467640122547290880", "ra": "157.9524138203198", "dec": "-28.23711795902511", "parallax": "23.2553112679793", "phot_g_mean_mag": "5.920658", "bp_rp": "0.6557193", "radial_velocity": "-16.465595", "eso": {}}, {"source_id": "5669349344592951936", "ra": "153.1571420220832", "dec": "-19.153468684794046", "parallax": "23.83110919375829", "phot_g_mean_mag": "6.3429403", "bp_rp": "0.6464038", "radial_velocity": "35.32265", "eso": {"ESPRESSO": 728}}, {"source_id": "5733849170579848448", "ra": "134.59374449854698", "dec": "-14.375171986906647", "parallax": "20.350926537347082", "phot_g_mean_mag": "8.832873", "bp_rp": "0.99868774", "radial_velocity": "41.445133", "eso": {}}, {"source_id": "6150033872386219392", "ra": "184.72606699805684", "dec": "-40.128106786975174", "parallax": "23.086221297374536", "phot_g_mean_mag": "7.799669", "bp_rp": "0.7720661", "radial_velocity": "1.1456912", "eso": {"FEROS": 1}}, {"source_id": "6205244027709918976", "ra": "222.6574627254718", "dec": "-32.467208650086", "parallax": "22.19713992177329", "phot_g_mean_mag": "7.335618", "bp_rp": "0.6774144", "radial_velocity": "-31.048445", "eso": {}}, {"source_id": "6033280615331865600", "ra": "255.1692309779928", "dec": "-27.79217989645751", "parallax": "20.09852859634534", "phot_g_mean_mag": "8.049398", "bp_rp": "0.72879505", "radial_velocity": "-9.373858", "eso": {"UVES": 4}}, {"source_id": "6038073970589665536", "ra": "246.1660688321348", "dec": "-29.70388384503254", "parallax": "30.53662488860155", "phot_g_mean_mag": "6.480162", "bp_rp": "0.75561285", "radial_velocity": "-1.1430988", "eso": {}}, {"source_id": "4403292246725472384", "ra": "238.14011071161192", "dec": "-1.9062804460172884", "parallax": "24.677075100028915", "phot_g_mean_mag": "7.711174", "bp_rp": "0.8183894", "radial_velocity": "-25.099194", "eso": {}}, {"source_id": "4335291236411850752", "ra": "257.4500385271138", "dec": "-10.523781378035558", "parallax": "23.98379831026952", "phot_g_mean_mag": "5.3068933", "bp_rp": "0.62535095", "radial_velocity": "-1.2902719", "eso": {}}, {"source_id": "4407056807034649472", "ra": "244.0811324415975", "dec": "-1.6480008441971306", "parallax": "22.409978294787862", "phot_g_mean_mag": "6.959381", "bp_rp": "0.65005636", "radial_velocity": "-40.254055", "eso": {}}, {"source_id": "6742328107526267904", "ra": "289.8794011757122", "dec": "-36.658958174906566", "parallax": "20.348912216556766", "phot_g_mean_mag": "7.146732", "bp_rp": "0.6374364", "radial_velocity": "-24.084494", "eso": {}}, {"source_id": "6700048793060566272", "ra": "304.2276028626895", "dec": "-32.606949228381445", "parallax": "23.09643254961444", "phot_g_mean_mag": "8.301176", "bp_rp": "0.9251981", "radial_velocity": "", "eso": {}}, {"source_id": "1224301838138589824", "ra": "234.85472396856548", "dec": "27.6265400253418", "parallax": "21.287262251166045", "phot_g_mean_mag": "8.798476", "bp_rp": "0.94484615", "radial_velocity": "-21.195576", "eso": {}}, {"source_id": "4441516807117819904", "ra": "253.654619271237", "dec": "7.339061137405605", "parallax": "20.584624647624178", "phot_g_mean_mag": "9.115477", "bp_rp": "0.9831295", "radial_velocity": "18.82651", "eso": {}}, {"source_id": "4545449415043729536", "ra": "255.79276135576393", "dec": "14.510551718301782", "parallax": "27.444190846279003", "phot_g_mean_mag": "6.351601", "bp_rp": "0.9006305", "radial_velocity": "-52.849895", "eso": {}}, {"source_id": "6904703228801028864", "ra": "308.10012508821757", "dec": "-9.852896020510071", "parallax": "40.424057561794726", "phot_g_mean_mag": "5.4923334", "bp_rp": "0.87535477", "radial_velocity": "9.134341", "eso": {}}, {"source_id": "4301150163437095808", "ra": "295.61455486795046", "dec": "8.15568452677898", "parallax": "21.38310151933721", "phot_g_mean_mag": "8.807432", "bp_rp": "0.91495323", "radial_velocity": "-22.004456", "eso": {}}, {"source_id": "4315804351350378496", "ra": "291.24577656808344", "dec": "11.947271123353104", "parallax": "67.01526888035684", "phot_g_mean_mag": "4.9713717", "bp_rp": "0.90421486", "radial_velocity": "-100.325775", "eso": {"FEROS": 14, "UVES": 14}}, {"source_id": "1809456806859123584", "ra": "302.3929434462423", "dec": "16.806546669665355", "parallax": "40.32760083309213", "phot_g_mean_mag": "7.4720545", "bp_rp": "0.9696903", "radial_velocity": "-30.97621", "eso": {}}, {"source_id": "2020792665545199232", "ra": "295.779718433131", "dec": "24.596736227679976", "parallax": "23.216497437621573", "phot_g_mean_mag": "6.728997", "bp_rp": "0.74945164", "radial_velocity": "-7.7091303", "eso": {}}, {"source_id": "5908285934423927424", "ra": "224.93644830333196", "dec": "-43.81190903737629", "parallax": "27.48415538146213", "phot_g_mean_mag": "6.471212", "bp_rp": "0.62421656", "radial_velocity": "-21.659464", "eso": {"UVES": 4}}, {"source_id": "6143165291967834880", "ra": "182.7419623039671", "dec": "-46.32123591977102", "parallax": "27.986876156314082", "phot_g_mean_mag": "7.3835416", "bp_rp": "0.7423005", "radial_velocity": "13.778187", "eso": {"UVES": 2}}, {"source_id": "5951165616611763456", "ra": "259.7726543146931", "dec": "-46.63575837613547", "parallax": "113.75134443945775", "phot_g_mean_mag": "5.3014293", "bp_rp": "0.97412014", "radial_velocity": "25.964258", "eso": {"ESPRESSO": 31, "FEROS": 3, "UVES": 4}}, {"source_id": "5990339291764655744", "ra": "242.8276439851988", "dec": "-45.333700219533235", "parallax": "25.793980549718825", "phot_g_mean_mag": "6.5396323", "bp_rp": "0.6291461", "radial_velocity": "-3.7802315", "eso": {}}, {"source_id": "5830704393979103488", "ra": "250.21087936543657", "dec": "-60.44677208574316", "parallax": "31.370748110068458", "phot_g_mean_mag": "6.147944", "bp_rp": "0.66667986", "radial_velocity": "3.7141383", "eso": {}}, {"source_id": "5848544412499643264", "ra": "222.34750444446846", "dec": "-67.23741120302266", "parallax": "41.83661887023915", "phot_g_mean_mag": "7.2021", "bp_rp": "0.97038555", "radial_velocity": "", "eso": {"FEROS": 1}}, {"source_id": "5848710168215059584", "ra": "223.5425043333899", "dec": "-66.42085571583813", "parallax": "25.423012910865882", "phot_g_mean_mag": "7.3864665", "bp_rp": "0.7762165", "radial_velocity": "", "eso": {}}, {"source_id": "5876112300125320448", "ra": "227.68470467666333", "dec": "-61.42237639057999", "parallax": "41.619757797978004", "phot_g_mean_mag": "6.14853", "bp_rp": "0.77377224", "radial_velocity": "37.832096", "eso": {"FEROS": 1}}, {"source_id": "5387328735240580224", "ra": "166.5828148144741", "dec": "-44.37370265910172", "parallax": "30.994106958150088", "phot_g_mean_mag": "7.0713444", "bp_rp": "0.83642006", "radial_velocity": "54.745888", "eso": {"ESPRESSO": 1, "UVES": 1}}, {"source_id": "5828338657275373952", "ra": "248.26879002179712", "dec": "-63.84308113267643", "parallax": "23.26439700773339", "phot_g_mean_mag": "7.222694", "bp_rp": "0.7721219", "radial_velocity": "42.415543", "eso": {}}, {"source_id": "5843623140212451840", "ra": "199.9554693991008", "dec": "-70.85516019365639", "parallax": "22.22355598770762", "phot_g_mean_mag": "7.255928", "bp_rp": "0.87224865", "radial_velocity": "31.623804", "eso": {"UVES": 2}}, {"source_id": "5236623864770649600", "ra": "173.30130442031728", "dec": "-67.05464031813061", "parallax": "30.509286628935566", "phot_g_mean_mag": "7.538828", "bp_rp": "0.95556927", "radial_velocity": "13.714891", "eso": {"FEROS": 1, "UVES": 2}}, {"source_id": "4718719219080249344", "ra": "25.654412650857925", "dec": "-58.413306298181276", "parallax": "22.179972910480807", "phot_g_mean_mag": "8.232135", "bp_rp": "0.87007904", "radial_velocity": "15.91569", "eso": {}}, {"source_id": "4775347916201249920", "ra": "66.04746621445787", "dec": "-57.072217259228566", "parallax": "36.334942818689555", "phot_g_mean_mag": "7.087165", "bp_rp": "0.8566065", "radial_velocity": "", "eso": {"UVES": 8}}, {"source_id": "4777373903814124032", "ra": "70.8074140002084", "dec": "-54.59430996088695", "parallax": "36.62918559675795", "phot_g_mean_mag": "7.4228473", "bp_rp": "0.92318153", "radial_velocity": "64.215385", "eso": {}}, {"source_id": "4796263719738968832", "ra": "84.53831431254288", "dec": "-46.10809921744259", "parallax": "39.248553518226146", "phot_g_mean_mag": "7.35886", "bp_rp": "0.88624763", "radial_velocity": "10.583438", "eso": {}}, {"source_id": "4937183864463433216", "ra": "29.252439835818727", "dec": "-51.765140916391516", "parallax": "37.45083729759414", "phot_g_mean_mag": "5.9732184", "bp_rp": "0.65950775", "radial_velocity": "3.9472847", "eso": {"UVES": 1}}, {"source_id": "5224357128908105728", "ra": "178.9869430740979", "dec": "-77.00840160453521", "parallax": "21.419786933291952", "phot_g_mean_mag": "8.4251175", "bp_rp": "0.876667", "radial_velocity": "8.9077215", "eso": {}}, {"source_id": "5270707831848146944", "ra": "116.08607880888997", "dec": "-69.51059756067362", "parallax": "20.23623294077582", "phot_g_mean_mag": "8.618566", "bp_rp": "0.9729452", "radial_velocity": "13.189984", "eso": {}}, {"source_id": "5485643629020704000", "ra": "111.03836038722139", "dec": "-58.49133686258036", "parallax": "20.046248418165835", "phot_g_mean_mag": "6.427208", "bp_rp": "0.8432851", "radial_velocity": "22.236044", "eso": {}}, {"source_id": "6359877075295565568", "ra": "294.0668060012902", "dec": "-81.24665953548183", "parallax": "22.586277307264844", "phot_g_mean_mag": "8.271676", "bp_rp": "0.9263358", "radial_velocity": "10.666564", "eso": {}}, {"source_id": "6368867678796480768", "ra": "320.8636390590276", "dec": "-75.49335373527468", "parallax": "30.293917871799778", "phot_g_mean_mag": "7.701676", "bp_rp": "0.87072086", "radial_velocity": "-1.9230523", "eso": {}}, {"source_id": "6397524662667334528", "ra": "334.7073640364395", "dec": "-68.31392579134416", "parallax": "21.09282076734919", "phot_g_mean_mag": "7.1137767", "bp_rp": "0.7876234", "radial_velocity": "26.51441", "eso": {"UVES": 4}}, {"source_id": "6463958151650359040", "ra": "317.60663050924774", "dec": "-54.57383950548369", "parallax": "30.059975132818508", "phot_g_mean_mag": "7.532995", "bp_rp": "0.8419738", "radial_velocity": "-3.6128097", "eso": {}}, {"source_id": "6489909443564308224", "ra": "349.2420354292303", "dec": "-62.00131377033478", "parallax": "48.91744275954628", "phot_g_mean_mag": "5.519003", "bp_rp": "0.6843314", "radial_velocity": "0.63290673", "eso": {"FEROS": 19}}, {"source_id": "6492218417982146816", "ra": "349.6546303199029", "dec": "-58.30704592403033", "parallax": "25.361901237237646", "phot_g_mean_mag": "7.3527713", "bp_rp": "0.7939129", "radial_velocity": "18.547478", "eso": {}}, {"source_id": "6524024506237594368", "ra": "356.83421402133", "dec": "-48.27653160370729", "parallax": "24.078660403626618", "phot_g_mean_mag": "6.736345", "bp_rp": "0.81121826", "radial_velocity": "32.399906", "eso": {"ESPRESSO": 28}}, {"source_id": "1784061008815679232", "ra": "321.777198284323", "dec": "16.123723640558115", "parallax": "30.25224720713704", "phot_g_mean_mag": "6.607284", "bp_rp": "0.6779008", "radial_velocity": "9.418498", "eso": {}}, {"source_id": "2349360652944504192", "ra": "13.396769170349273", "dec": "-22.20401278685812", "parallax": "20.192544810578042", "phot_g_mean_mag": "8.7449875", "bp_rp": "0.8910961", "radial_velocity": "-1.0252861", "eso": {}}, {"source_id": "2423493369021649920", "ra": "5.717578630284787", "dec": "-12.209165461343625", "parallax": "46.87421744278449", "phot_g_mean_mag": "6.236681", "bp_rp": "0.8217211", "radial_velocity": "-2.552667", "eso": {"FEROS": 3, "UVES": 14}}, {"source_id": "2431157720981843200", "ra": "3.5431895032411775", "dec": "-7.199416929309394", "parallax": "21.8769778388611", "phot_g_mean_mag": "7.2077065", "bp_rp": "0.66895914", "radial_velocity": "1.0377905", "eso": {"FEROS": 2, "UVES": 6}}, {"source_id": "2463995460378587904", "ra": "24.978580138382956", "dec": "-9.971836794130738", "parallax": "20.890078817804465", "phot_g_mean_mag": "7.7149734", "bp_rp": "0.7576628", "radial_velocity": "13.455986", "eso": {}}, {"source_id": "2468607533700284800", "ra": "17.883529704612542", "dec": "-12.843387059188299", "parallax": "24.005158744039093", "phot_g_mean_mag": "7.340858", "bp_rp": "0.7462969", "radial_velocity": "-16.678268", "eso": {}}, {"source_id": "2533723670313663872", "ra": "19.67316705625095", "dec": "-0.8686919886200175", "parallax": "36.39854099610976", "phot_g_mean_mag": "7.800797", "bp_rp": "0.9913378", "radial_velocity": "16.812344", "eso": {"ESPRESSO": 14}}, {"source_id": "2740237242778256768", "ra": "358.88415068073095", "dec": "3.500136144440347", "parallax": "32.70614209441029", "phot_g_mean_mag": "7.540592", "bp_rp": "0.91829634", "radial_velocity": "14.7388525", "eso": {}}, {"source_id": "5149607655522233728", "ra": "30.022467379523015", "dec": "-13.546200492669739", "parallax": "24.584521607739376", "phot_g_mean_mag": "7.8323994", "bp_rp": "0.80887413", "radial_velocity": "19.446821", "eso": {"UVES": 8}}, {"source_id": "6786890622306367872", "ra": "323.3801068342832", "dec": "-27.890553993056173", "parallax": "21.94491904775313", "phot_g_mean_mag": "7.4961867", "bp_rp": "0.8126154", "radial_velocity": "-29.463938", "eso": {"ESPRESSO": 2, "UVES": 4}}, {"source_id": "6840872971033892608", "ra": "329.601508898265", "dec": "-12.66438382956133", "parallax": "29.196057382208483", "phot_g_mean_mag": "7.015011", "bp_rp": "0.79368067", "radial_velocity": "3.8121889", "eso": {"ESPRESSO": 31, "UVES": 1}}, {"source_id": "106774952858617088", "ra": "33.865342525295965", "dec": "27.356651100451398", "parallax": "25.98818169694588", "phot_g_mean_mag": "7.950504", "bp_rp": "0.87526083", "radial_velocity": "1.1345621", "eso": {}}, {"source_id": "1846488186665104768", "ra": "320.8621155448135", "dec": "24.959853484786922", "parallax": "26.877072401015315", "phot_g_mean_mag": "8.491348", "bp_rp": "0.96888256", "radial_velocity": "-10.533438", "eso": {}}, {"source_id": "2893174259322992256", "ra": "96.41058207798348", "dec": "-31.481005291882155", "parallax": "29.133915567647797", "phot_g_mean_mag": "7.893656", "bp_rp": "0.9062686", "radial_velocity": "16.403948", "eso": {}}, {"source_id": "2926363769422509824", "ra": "100.69473326176566", "dec": "-22.452255486181325", "parallax": "20.497142287136732", "phot_g_mean_mag": "8.210647", "bp_rp": "0.81361103", "radial_velocity": "42.21245", "eso": {}}, {"source_id": "3027656351155128704", "ra": "110.97390901151961", "dec": "-17.413533083812723", "parallax": "27.39493967436859", "phot_g_mean_mag": "6.721671", "bp_rp": "0.63767624", "radial_velocity": "16.048101", "eso": {}}, {"source_id": "3102372804823186176", "ra": "102.14921542450105", "dec": "-4.077592962969475", "parallax": "20.6725248686906", "phot_g_mean_mag": "8.301079", "bp_rp": "0.7974696", "radial_velocity": "-3.8470287", "eso": {}}, {"source_id": "3209947441933983744", "ra": "80.1684190950735", "dec": "-5.786575046796734", "parallax": "23.949666283644262", "phot_g_mean_mag": "8.595468", "bp_rp": "0.99429893", "radial_velocity": "33.409237", "eso": {}}, {"source_id": "3250489115709122560", "ra": "55.09501374569569", "dec": "-3.217927602852293", "parallax": "38.32529951722267", "phot_g_mean_mag": "6.535757", "bp_rp": "0.7466855", "radial_velocity": "120.577156", "eso": {"ESPRESSO": 27, "FEROS": 3, "UVES": 4}}, {"source_id": "4819441459212276864", "ra": "80.15875819124958", "dec": "-39.75488541511412", "parallax": "21.12401791410614", "phot_g_mean_mag": "7.2615747", "bp_rp": "0.6598134", "radial_velocity": "24.719309", "eso": {"UVES": 6}}, {"source_id": "4821288020271641600", "ra": "82.62775038032399", "dec": "-37.20187721197965", "parallax": "23.851826890148867", "phot_g_mean_mag": "8.146254", "bp_rp": "0.8246279", "radial_velocity": "50.933426", "eso": {"FEROS": 2, "UVES": 2}}, {"source_id": "5082840945798327936", "ra": "59.11997180732639", "dec": "-25.182588136929542", "parallax": "24.673470963066652", "phot_g_mean_mag": "6.681266", "bp_rp": "0.9384885", "radial_velocity": "45.40882", "eso": {"FEROS": 1}}, {"source_id": "5085349584656832896", "ra": "55.49745857539817", "dec": "-24.652370927876568", "parallax": "23.86443434135329", "phot_g_mean_mag": "6.6639357", "bp_rp": "0.6313791", "radial_velocity": "9.327932", "eso": {}}, {"source_id": "5107292160254970368", "ra": "57.29805340720351", "dec": "-17.97157286353003", "parallax": "24.940590445692187", "phot_g_mean_mag": "8.330719", "bp_rp": "0.9146509", "radial_velocity": "2.6664293", "eso": {}}, {"source_id": "5110966006560787328", "ra": "57.43295970319172", "dec": "-13.886253815451798", "parallax": "21.430650918513923", "phot_g_mean_mag": "8.6732855", "bp_rp": "0.9343281", "radial_velocity": "11.708092", "eso": {}}, {"source_id": "45367056650753280", "ra": "61.567748068065875", "dec": "15.698032862131647", "parallax": "21.1750396454176", "phot_g_mean_mag": "7.7056403", "bp_rp": "0.7535939", "radial_velocity": "37.35873", "eso": {"UVES": 10}}, {"source_id": "730643416735955712", "ra": "164.06594849583496", "dec": "27.7390126818588", "parallax": "24.456355739921346", "phot_g_mean_mag": "8.267874", "bp_rp": "0.90077496", "radial_velocity": "6.6108756", "eso": {}}, {"source_id": "3312575685471393664", "ra": "68.64759095859309", "dec": "15.504503855092008", "parallax": "21.668969928652356", "phot_g_mean_mag": "7.782416", "bp_rp": "0.78598595", "radial_velocity": "40.2372", "eso": {"FEROS": 1}}, {"source_id": "3528362362908431616", "ra": "187.518679330077", "dec": "-13.393397851773104", "parallax": "41.15953653087649", "phot_g_mean_mag": "6.293973", "bp_rp": "0.74122095", "radial_velocity": "1.3022718", "eso": {}}, {"source_id": "3545597177611374848", "ra": "170.048643352557", "dec": "-19.57821567839797", "parallax": "28.858091839409486", "phot_g_mean_mag": "7.3949904", "bp_rp": "0.75342655", "radial_velocity": "-36.527355", "eso": {}}, {"source_id": "3608250751774544512", "ra": "200.16401351815273", "dec": "-14.772458941029887", "parallax": "23.583755386800775", "phot_g_mean_mag": "8.200171", "bp_rp": "0.8569169", "radial_velocity": "12.977784", "eso": {}}, {"source_id": "3640929611741605632", "ra": "213.58741766158158", "dec": "-5.9473539976306515", "parallax": "24.33473826232561", "phot_g_mean_mag": "6.2313066", "bp_rp": "0.7394185", "radial_velocity": "-33.000988", "eso": {"FEROS": 1}}, {"source_id": "3658911226765436032", "ra": "207.2418590859257", "dec": "-1.593150264188687", "parallax": "22.954596223215493", "phot_g_mean_mag": "8.319911", "bp_rp": "0.89857626", "radial_velocity": "-13.267394", "eso": {}}, {"source_id": "3693358861640279296", "ra": "184.8059696696248", "dec": "-3.319999243834999", "parallax": "20.248010443598883", "phot_g_mean_mag": "7.86449", "bp_rp": "0.82740927", "radial_velocity": "25.231924", "eso": {"UVES": 6}}, {"source_id": "3757749354938381824", "ra": "163.1839309313281", "dec": "-11.42272296277782", "parallax": "25.720651825292563", "phot_g_mean_mag": "7.490385", "bp_rp": "0.7323003", "radial_velocity": "-4.6277804", "eso": {}}, {"source_id": "3948424496764080640", "ra": "189.83921219676338", "dec": "20.02732318550514", "parallax": "31.03687554605237", "phot_g_mean_mag": "8.184688", "bp_rp": "0.97435904", "radial_velocity": "-8.56213", "eso": {"ESPRESSO": 3}}, {"source_id": "5391813299572883456", "ra": "161.56269752448438", "dec": "-41.46461154309836", "parallax": "23.148949214166166", "phot_g_mean_mag": "7.351978", "bp_rp": "0.7540555", "radial_velocity": "47.51192", "eso": {}}, {"source_id": "6208649077782080000", "ra": "233.4721675302212", "dec": "-31.019209202920937", "parallax": "27.79108693024518", "phot_g_mean_mag": "7.788024", "bp_rp": "0.8759718", "radial_velocity": "11.929474", "eso": {}}, {"source_id": "4143169446523028608", "ra": "258.13146035158906", "dec": "-10.278123208377293", "parallax": "22.705702755446964", "phot_g_mean_mag": "7.437703", "bp_rp": "0.67467546", "radial_velocity": "-0.34547716", "eso": {}}, {"source_id": "4045331221094535552", "ra": "276.95182365421806", "dec": "-31.82007767663751", "parallax": "22.172979354073295", "phot_g_mean_mag": "8.930985", "bp_rp": "0.99398327", "radial_velocity": "-42.47459", "eso": {}}, {"source_id": "6718894388002453120", "ra": "286.7175457009758", "dec": "-37.8122904372201", "parallax": "58.986011129792345", "phot_g_mean_mag": "5.9807982", "bp_rp": "0.86726856", "radial_velocity": "60.010376", "eso": {"FEROS": 2, "UVES": 1}}, {"source_id": "6726054201610430976", "ra": "273.24658577476424", "dec": "-39.162490208733004", "parallax": "20.269240041465967", "phot_g_mean_mag": "7.172147", "bp_rp": "0.7700286", "radial_velocity": "20.684402", "eso": {}}, {"source_id": "6692069568458919040", "ra": "297.3915746263868", "dec": "-37.78100723662662", "parallax": "21.84353685231585", "phot_g_mean_mag": "7.0901484", "bp_rp": "0.7187314", "radial_velocity": "15.362843", "eso": {"ESPRESSO": 26, "UVES": 6}}, {"source_id": "6699146987367334528", "ra": "304.15998926191946", "dec": "-35.040645888700546", "parallax": "22.682821317634286", "phot_g_mean_mag": "8.290614", "bp_rp": "0.8553691", "radial_velocity": "-8.880401", "eso": {}}, {"source_id": "6779678792398336896", "ra": "311.82009176739524", "dec": "-35.15443688602615", "parallax": "26.998047640032297", "phot_g_mean_mag": "8.064174", "bp_rp": "0.94056606", "radial_velocity": "-18.098427", "eso": {}}, {"source_id": "6855818185917435392", "ra": "308.37852645650594", "dec": "-22.23215823261536", "parallax": "20.69603308395938", "phot_g_mean_mag": "7.339645", "bp_rp": "0.69645214", "radial_velocity": "22.727608", "eso": {"UVES": 1}}, {"source_id": "4257569851823216128", "ra": "277.1025018801043", "dec": "-3.877410422433364", "parallax": "26.0451021157176", "phot_g_mean_mag": "8.13106", "bp_rp": "0.92903805", "radial_velocity": "-57.51003", "eso": {}}, {"source_id": "1167718049194619264", "ra": "226.8863958344199", "dec": "9.226136166488667", "parallax": "30.429524161062485", "phot_g_mean_mag": "7.1887064", "bp_rp": "0.80693054", "radial_velocity": "-34.4437", "eso": {}}, {"source_id": "1316590033811497088", "ra": "239.62954815315277", "dec": "27.741293106998928", "parallax": "37.51709186696944", "phot_g_mean_mag": "7.806134", "bp_rp": "0.95929813", "radial_velocity": "-72.51992", "eso": {}}, {"source_id": "4198685678421509376", "ra": "286.60461583592587", "dec": "-11.899237863800131", "parallax": "26.360025157151885", "phot_g_mean_mag": "7.1146913", "bp_rp": "0.77112675", "radial_velocity": "0.06696742", "eso": {}}, {"source_id": "4474963057485435520", "ra": "271.1095081148082", "dec": "6.436704315832853", "parallax": "28.91168074094496", "phot_g_mean_mag": "7.7779493", "bp_rp": "0.9124131", "radial_velocity": "0.17438336", "eso": {}}, {"source_id": "4475028306629554944", "ra": "271.46669636719014", "dec": "7.090187878478742", "parallax": "21.091646629333038", "phot_g_mean_mag": "7.5104094", "bp_rp": "0.79114294", "radial_velocity": "28.635069", "eso": {"UVES": 4}}, {"source_id": "4239437599419697536", "ra": "294.00264899662244", "dec": "0.08947751832969227", "parallax": "25.127063694377764", "phot_g_mean_mag": "7.3914227", "bp_rp": "0.8396239", "radial_velocity": "-13.326845", "eso": {"FEROS": 1}}, {"source_id": "4240035046551668736", "ra": "295.62471376884514", "dec": "1.5862559995663703", "parallax": "25.958186331495636", "phot_g_mean_mag": "7.483775", "bp_rp": "0.8177147", "radial_velocity": "-61.354946", "eso": {}}, {"source_id": "4294231623975947136", "ra": "293.0044664136609", "dec": "5.398032988238493", "parallax": "20.69765446051908", "phot_g_mean_mag": "8.239881", "bp_rp": "0.943985", "radial_velocity": "-75.97526", "eso": {}}, {"source_id": "4524317420039164544", "ra": "278.5836676618227", "dec": "18.68984160116616", "parallax": "28.29510459947093", "phot_g_mean_mag": "7.3819876", "bp_rp": "0.8430834", "radial_velocity": "", "eso": {"UVES": 4}}, {"source_id": "2023892154453307520", "ra": "289.47452234746805", "dec": "25.37075376786977", "parallax": "22.602555052066815", "phot_g_mean_mag": "8.14859", "bp_rp": "0.8512435", "radial_velocity": "-88.87475", "eso": {}}, {"source_id": "5902750168276592256", "ra": "230.43977568214885", "dec": "-48.31885569587278", "parallax": "67.84669435693799", "phot_g_mean_mag": "5.48217", "bp_rp": "0.8367486", "radial_velocity": "-68.7763", "eso": {"ESPRESSO": 2, "FEROS": 15, "UVES": 4}}, {"source_id": "6003429424356691584", "ra": "227.6801306990234", "dec": "-43.71738008267476", "parallax": "31.829323076781723", "phot_g_mean_mag": "7.44394", "bp_rp": "0.8713169", "radial_velocity": "-4.0888395", "eso": {}}, {"source_id": "6096062866670779136", "ra": "212.51945211259522", "dec": "-46.269947758661246", "parallax": "20.202822456096893", "phot_g_mean_mag": "8.051229", "bp_rp": "0.7431865", "radial_velocity": "-20.866655", "eso": {}}, {"source_id": "5931529953919720576", "ra": "243.765636344982", "dec": "-56.375542331590985", "parallax": "23.91354768711793", "phot_g_mean_mag": "7.662632", "bp_rp": "0.7602334", "radial_velocity": "-8.350691", "eso": {}}, {"source_id": "5879065622650571648", "ra": "222.38054796356082", "dec": "-59.13204053128035", "parallax": "20.626517090586635", "phot_g_mean_mag": "8.365588", "bp_rp": "0.81205606", "radial_velocity": "-76.19305", "eso": {"UVES": 2}}, {"source_id": "5912380962403300096", "ra": "263.52156168834046", "dec": "-59.777570807477325", "parallax": "26.69551928604774", "phot_g_mean_mag": "7.459463", "bp_rp": "0.76075935", "radial_velocity": "-25.428991", "eso": {"UVES": 1}}, {"source_id": "5774407921147366912", "ra": "263.52918679156625", "dec": "-81.2844029854164", "parallax": "20.248661968851238", "phot_g_mean_mag": "8.641656", "bp_rp": "0.9268036", "radial_velocity": "11.738069", "eso": {}}, {"source_id": "5801950515627094400", "ra": "260.53587630387005", "dec": "-75.34927411841784", "parallax": "36.19573028114162", "phot_g_mean_mag": "6.857967", "bp_rp": "0.7823715", "radial_velocity": "60.13022", "eso": {"FEROS": 1, "UVES": 2}}, {"source_id": "5855730584310531200", "ra": "192.2159654417225", "dec": "-68.42465224767673", "parallax": "34.60940212403708", "phot_g_mean_mag": "7.4192524", "bp_rp": "0.87915325", "radial_velocity": "104.53151", "eso": {"ESPRESSO": 26, "FEROS": 1}}, {"source_id": "5258401754126740736", "ra": "151.99068296359127", "dec": "-58.47891473037191", "parallax": "21.66272719418016", "phot_g_mean_mag": "8.633625", "bp_rp": "0.9147825", "radial_velocity": "18.51568", "eso": {}}, {"source_id": "4647947533955741440", "ra": "85.88907036602552", "dec": "-76.76688915922146", "parallax": "21.897685063452837", "phot_g_mean_mag": "8.577113", "bp_rp": "0.8840809", "radial_velocity": "32.683468", "eso": {}}, {"source_id": "4675955810263106432", "ra": "61.842036153427856", "dec": "-64.22085435521761", "parallax": "42.38201365070939", "phot_g_mean_mag": "6.2159977", "bp_rp": "0.8103976", "radial_velocity": "28.422895", "eso": {"UVES": 8}}, {"source_id": "4710883343306035200", "ra": "23.920796257818463", "dec": "-65.29397207624805", "parallax": "20.086985875472617", "phot_g_mean_mag": "8.646961", "bp_rp": "0.9042406", "radial_velocity": "7.0891247", "eso": {}}, {"source_id": "4714764481913306496", "ra": "31.859670303853697", "dec": "-59.6795100616006", "parallax": "22.025537666084354", "phot_g_mean_mag": "7.3844132", "bp_rp": "0.69261456", "radial_velocity": "10.795799", "eso": {"FEROS": 8, "UVES": 4}}, {"source_id": "4716158250340258944", "ra": "24.47310935796312", "dec": "-60.51148699570952", "parallax": "25.661108173407136", "phot_g_mean_mag": "7.18787", "bp_rp": "0.7812085", "radial_velocity": "35.437943", "eso": {"UVES": 1}}, {"source_id": "4734408528454063232", "ra": "50.350331169457505", "dec": "-52.85454417055128", "parallax": "22.7114118322334", "phot_g_mean_mag": "8.243309", "bp_rp": "0.8840852", "radial_velocity": "22.626108", "eso": {}}, {"source_id": "4743944043046490240", "ra": "31.825892379213336", "dec": "-53.19913777685722", "parallax": "20.163014924466008", "phot_g_mean_mag": "8.516792", "bp_rp": "0.8914099", "radial_velocity": "", "eso": {"UVES": 2}}, {"source_id": "4793601557272771968", "ra": "85.6144127580424", "dec": "-50.474249855688406", "parallax": "20.48645944896926", "phot_g_mean_mag": "8.789611", "bp_rp": "0.97866154", "radial_velocity": "30.641672", "eso": {}}, {"source_id": "4837326385930314368", "ra": "63.94002125424593", "dec": "-45.9700693698707", "parallax": "20.697560120019947", "phot_g_mean_mag": "8.727733", "bp_rp": "0.9418001", "radial_velocity": "32.073242", "eso": {}}, {"source_id": "4934923028038871296", "ra": "18.80055894824174", "dec": "-45.53087326120101", "parallax": "65.52703093363316", "phot_g_mean_mag": "4.8279195", "bp_rp": "0.7278681", "radial_velocity": "11.898967", "eso": {"FEROS": 6, "UVES": 12}}, {"source_id": "5211860762641451392", "ra": "95.48200815986206", "dec": "-78.71644372553442", "parallax": "22.220255607666214", "phot_g_mean_mag": "8.784176", "bp_rp": "0.9637222", "radial_velocity": "-0.9798888", "eso": {}}, {"source_id": "5281038465146828928", "ra": "108.07580457825634", "dec": "-67.78364906055029", "parallax": "21.122387745662536", "phot_g_mean_mag": "7.1569786", "bp_rp": "0.90456057", "radial_velocity": "21.7875", "eso": {"UVES": 2}}, {"source_id": "6380683992820388480", "ra": "351.07821914015193", "dec": "-72.16539333191598", "parallax": "24.5429070923959", "phot_g_mean_mag": "6.749916", "bp_rp": "0.71400833", "radial_velocity": "19.852964", "eso": {"UVES": 2}}, {"source_id": "6384510877400590336", "ra": "343.66394549928197", "dec": "-70.07338567190854", "parallax": "37.46412217995383", "phot_g_mean_mag": "5.8999476", "bp_rp": "0.8149948", "radial_velocity": "-2.2913752", "eso": {"UVES": 4}}, {"source_id": "6441664350807003520", "ra": "291.59682591354675", "dec": "-63.22996377967395", "parallax": "20.121912326220862", "phot_g_mean_mag": "7.7783813", "bp_rp": "0.6924281", "radial_velocity": "-0.8203988", "eso": {}}, {"source_id": "6458952345790198144", "ra": "326.00061675321734", "dec": "-57.28328960332869", "parallax": "22.59447066207429", "phot_g_mean_mag": "6.747615", "bp_rp": "0.6352215", "radial_velocity": "37.247574", "eso": {"UVES": 2}}, {"source_id": "6462296480342791808", "ra": "326.9811256334379", "dec": "-52.93103298101042", "parallax": "30.081271833303102", "phot_g_mean_mag": "7.431143", "bp_rp": "0.823689", "radial_velocity": "-0.0050983108", "eso": {"UVES": 1}}, {"source_id": "6515731817739456256", "ra": "343.40951612662417", "dec": "-48.59864449037182", "parallax": "30.191840984196556", "phot_g_mean_mag": "5.8873706", "bp_rp": "0.77152014", "radial_velocity": "-1.0910774", "eso": {"UVES": 8}}, {"source_id": "6520917733056371456", "ra": "338.5458425830662", "dec": "-43.067553439929185", "parallax": "21.481334121079968", "phot_g_mean_mag": "8.643024", "bp_rp": "0.9582443", "radial_velocity": "26.052195", "eso": {}}, {"source_id": "6577318075351824512", "ra": "319.61510203083486", "dec": "-43.334555635071645", "parallax": "42.02738752624135", "phot_g_mean_mag": "6.5980597", "bp_rp": "0.8004813", "radial_velocity": "11.94833", "eso": {"FEROS": 1, "UVES": 6}}, {"source_id": "2336728947968831104", "ra": "1.8871493728944182", "dec": "-23.818316276843596", "parallax": "30.492525727047138", "phot_g_mean_mag": "8.483087", "bp_rp": "0.9963708", "radial_velocity": "-43.166767", "eso": {}}, {"source_id": "2376087581593256448", "ra": "11.36937776735489", "dec": "-12.881722089785448", "parallax": "30.881464073908372", "phot_g_mean_mag": "5.9973717", "bp_rp": "0.7936568", "radial_velocity": "-10.263782", "eso": {"ESPRESSO": 27, "UVES": 1}}, {"source_id": "2430102808294101760", "ra": "4.676323038587316", "dec": "-8.05364062584043", "parallax": "42.73076832887228", "phot_g_mean_mag": "6.307263", "bp_rp": "0.8331771", "radial_velocity": "-10.122074", "eso": {"FEROS": 1, "UVES": 15}}, {"source_id": "2495910778239537280", "ra": "39.74450644759724", "dec": "-2.588136557557173", "parallax": "20.217656176876126", "phot_g_mean_mag": "8.962137", "bp_rp": "0.97452354", "radial_velocity": "-33.26769", "eso": {}}, {"source_id": "2497893575661497856", "ra": "43.380977350309585", "dec": "-0.5690035432855579", "parallax": "21.207178200560545", "phot_g_mean_mag": "8.947497", "bp_rp": "0.9689684", "radial_velocity": "23.852612", "eso": {"UVES": 4}}, {"source_id": "2505825177666430592", "ra": "28.27500064680214", "dec": "-1.3284900227236482", "parallax": "25.63032315069027", "phot_g_mean_mag": "7.2714486", "bp_rp": "0.80547", "radial_velocity": "-16.424175", "eso": {"FEROS": 1}}, {"source_id": "2619938606134863872", "ra": "333.18241503535126", "dec": "-6.468837969058919", "parallax": "28.350923184624232", "phot_g_mean_mag": "7.3027425", "bp_rp": "0.7255378", "radial_velocity": "57.39258", "eso": {"UVES": 4}}, {"source_id": "2689215230324385792", "ra": "319.259599015416", "dec": "-1.0775352654128996", "parallax": "25.04154140018773", "phot_g_mean_mag": "7.9041033", "bp_rp": "0.87336636", "radial_velocity": "-22.789297", "eso": {}}, {"source_id": "2695552540468718592", "ra": "329.78815506683924", "dec": "3.198070989252764", "parallax": "25.851082566993878", "phot_g_mean_mag": "8.252888", "bp_rp": "0.9296503", "radial_velocity": "-15.754718", "eso": {}}, {"source_id": "2733790256348020608", "ra": "334.31696359442174", "dec": "12.898928495382219", "parallax": "32.68069399428501", "phot_g_mean_mag": "6.89919", "bp_rp": "0.7718854", "radial_velocity": "-25.134167", "eso": {}}, {"source_id": "5038817840251308288", "ra": "23.317199266738953", "dec": "-24.178664853360644", "parallax": "51.9066670617371", "phot_g_mean_mag": "6.7783146", "bp_rp": "0.9207959", "radial_velocity": "2.3634121", "eso": {"FEROS": 2}}, {"source_id": "6547596729863915648", "ra": "342.0297062728974", "dec": "-37.75665444137389", "parallax": "26.13908625707843", "phot_g_mean_mag": "7.3680468", "bp_rp": "0.74945116", "radial_velocity": "-25.163742", "eso": {}}, {"source_id": "6884240252254370304", "ra": "318.094544859423", "dec": "-15.000275668690962", "parallax": "21.51238002336497", "phot_g_mean_mag": "8.005917", "bp_rp": "0.8092189", "radial_velocity": "-20.82463", "eso": {}}, {"source_id": "2750176827892427904", "ra": "10.298922553155373", "dec": "9.35459946071541", "parallax": "29.900625240186443", "phot_g_mean_mag": "6.4073553", "bp_rp": "0.66122913", "radial_velocity": "-14.720703", "eso": {"UVES": 2}}, {"source_id": "2899947933845777920", "ra": "96.79649729040557", "dec": "-25.857460600679648", "parallax": "34.02566790005048", "phot_g_mean_mag": "5.9288", "bp_rp": "0.69621325", "radial_velocity": "35.778324", "eso": {"UVES": 2}}, {"source_id": "3121655180756368128", "ra": "93.89206792943187", "dec": "-0.5131597513847594", "parallax": "27.521055409356812", "phot_g_mean_mag": "5.5015097", "bp_rp": "0.6718974", "radial_velocity": "-39.732826", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "3179384931394690304", "ra": "66.61005801972284", "dec": "-10.55108371161248", "parallax": "25.48680863068714", "phot_g_mean_mag": "7.639983", "bp_rp": "0.8646507", "radial_velocity": "50.395527", "eso": {"UVES": 4}}, {"source_id": "3196704477212036736", "ra": "61.1597443316519", "dec": "-6.766720350587845", "parallax": "24.004506296799658", "phot_g_mean_mag": "8.313913", "bp_rp": "0.9024153", "radial_velocity": "53.135212", "eso": {}}, {"source_id": "3256786534197166208", "ra": "60.65376793828089", "dec": "-0.27004039273291525", "parallax": "53.45587591763632", "phot_g_mean_mag": "5.247617", "bp_rp": "0.6822305", "radial_velocity": "17.615149", "eso": {"FEROS": 34, "UVES": 14}}, {"source_id": "5061574844732308992", "ra": "50.1885526509338", "dec": "-26.606407704740413", "parallax": "20.15224711332135", "phot_g_mean_mag": "6.274844", "bp_rp": "0.70215225", "radial_velocity": "24.761742", "eso": {"UVES": 2}}, {"source_id": "5074588389476852608", "ra": "47.219629823276975", "dec": "-24.8870439598693", "parallax": "33.930795353539814", "phot_g_mean_mag": "7.1327705", "bp_rp": "0.8329878", "radial_velocity": "41.059742", "eso": {"UVES": 1}}, {"source_id": "5592237639209047424", "ra": "113.94747066258135", "dec": "-32.203571103935936", "parallax": "27.434398619579948", "phot_g_mean_mag": "8.016806", "bp_rp": "0.91108227", "radial_velocity": "22.345459", "eso": {"FEROS": 10, "UVES": 4}}, {"source_id": "867679158680505600", "ra": "117.32794187779254", "dec": "24.48863782743896", "parallax": "24.44245193947837", "phot_g_mean_mag": "6.9667215", "bp_rp": "0.673244", "radial_velocity": "-11.129767", "eso": {}}, {"source_id": "3314109916508904064", "ra": "67.20174925382867", "dec": "17.285341899758865", "parallax": "21.5489076022758", "phot_g_mean_mag": "7.7025585", "bp_rp": "0.7695646", "radial_velocity": "39.081123", "eso": {"UVES": 2}}, {"source_id": "3333089308269177600", "ra": "84.40493327976219", "dec": "6.1116060637933325", "parallax": "20.179182949453892", "phot_g_mean_mag": "7.51097", "bp_rp": "0.7177453", "radial_velocity": "47.84458", "eso": {}}, {"source_id": "3341047161115131904", "ra": "82.84889013784128", "dec": "12.555491869966414", "parallax": "27.958098988993918", "phot_g_mean_mag": "8.194342", "bp_rp": "0.9535489", "radial_velocity": "25.800674", "eso": {}}, {"source_id": "3352152743956693376", "ra": "99.3909117191071", "dec": "12.179294747395968", "parallax": "37.560661905348624", "phot_g_mean_mag": "6.6693077", "bp_rp": "0.8689642", "radial_velocity": "49.54683", "eso": {"FEROS": 1}}, {"source_id": "3391737292854784768", "ra": "75.54135872584307", "dec": "14.079759447482607", "parallax": "34.788618758541965", "phot_g_mean_mag": "7.9880733", "bp_rp": "0.9381714", "radial_velocity": "-27.233845", "eso": {"FEROS": 1}}, {"source_id": "3532823773073745536", "ra": "168.0063110737477", "dec": "-26.136959071198014", "parallax": "45.24819195459114", "phot_g_mean_mag": "6.857719", "bp_rp": "0.9304886", "radial_velocity": "39.758057", "eso": {"FEROS": 3}}, {"source_id": "3539827249825749760", "ra": "168.7737131608046", "dec": "-19.60692696810629", "parallax": "20.83906037139915", "phot_g_mean_mag": "8.522093", "bp_rp": "0.8805952", "radial_velocity": "-3.8619008", "eso": {}}, {"source_id": "3729017810434416128", "ra": "197.21297743841944", "dec": "5.204216879125762", "parallax": "37.867721047786", "phot_g_mean_mag": "6.6284494", "bp_rp": "0.82655096", "radial_velocity": "25.031834", "eso": {"ESPRESSO": 1}}, {"source_id": "3750284976656005120", "ra": "161.86968722670682", "dec": "-13.979285626390329", "parallax": "20.272385012867566", "phot_g_mean_mag": "7.773059", "bp_rp": "0.7721572", "radial_velocity": "3.153281", "eso": {}}, {"source_id": "3793829313607800064", "ra": "174.4949160496097", "dec": "-1.5988585821907744", "parallax": "24.506682247568698", "phot_g_mean_mag": "7.478302", "bp_rp": "0.7268677", "radial_velocity": "4.3176656", "eso": {}}, {"source_id": "3906347595518413568", "ra": "183.2406677910877", "dec": "10.03612341239401", "parallax": "31.021668605505987", "phot_g_mean_mag": "7.7249455", "bp_rp": "0.93557405", "radial_velocity": "-7.5022297", "eso": {"FEROS": 1}}, {"source_id": "5398195002495815936", "ra": "173.21315120896483", "dec": "-36.209334752621096", "parallax": "25.84809797727118", "phot_g_mean_mag": "6.5501356", "bp_rp": "0.75465584", "radial_velocity": "19.103603", "eso": {}}, {"source_id": "5998592943273814656", "ra": "241.03784048749364", "dec": "-37.307481153151976", "parallax": "23.84077542221113", "phot_g_mean_mag": "7.7090473", "bp_rp": "0.77186775", "radial_velocity": "-28.858767", "eso": {}}, {"source_id": "6224560144909475840", "ra": "226.13803788521355", "dec": "-28.300405462529405", "parallax": "28.58428875639836", "phot_g_mean_mag": "7.0398903", "bp_rp": "0.72261715", "radial_velocity": "-2.4690528", "eso": {"UVES": 2}}, {"source_id": "6228895347454822016", "ra": "221.50171656967842", "dec": "-25.444863490345597", "parallax": "32.624104779322", "phot_g_mean_mag": "6.950725", "bp_rp": "0.77527475", "radial_velocity": "-19.916187", "eso": {}}, {"source_id": "5974066343551468544", "ra": "261.8404929432171", "dec": "-38.06150760900444", "parallax": "32.11785045320186", "phot_g_mean_mag": "7.7037897", "bp_rp": "0.8716402", "radial_velocity": "-23.427479", "eso": {}}, {"source_id": "4410452820495105024", "ra": "236.82012320344302", "dec": "-0.27000893856673924", "parallax": "20.042743251086137", "phot_g_mean_mag": "6.8190975", "bp_rp": "0.675899", "radial_velocity": "-47.864456", "eso": {}}, {"source_id": "6317407201723597952", "ra": "234.66658381673605", "dec": "-8.79483851239003", "parallax": "32.626909587051905", "phot_g_mean_mag": "6.4632163", "bp_rp": "0.6724863", "radial_velocity": "1.5804622", "eso": {}}, {"source_id": "4367026303085396352", "ra": "260.71391542328826", "dec": "-2.3886581335581094", "parallax": "50.96943844765955", "phot_g_mean_mag": "6.121606", "bp_rp": "0.8448701", "radial_velocity": "-35.93564", "eso": {"ESPRESSO": 67, "FEROS": 114, "UVES": 2}}, {"source_id": "4066590798160123776", "ra": "272.3238553237349", "dec": "-22.91048389012115", "parallax": "30.70801354762584", "phot_g_mean_mag": "7.7051024", "bp_rp": "0.9809737", "radial_velocity": "60.676487", "eso": {}}, {"source_id": "6796392812250051712", "ra": "306.9342721592136", "dec": "-30.870163905697215", "parallax": "51.798854110220354", "phot_g_mean_mag": "6.44275", "bp_rp": "0.88373804", "radial_velocity": "-0.34151858", "eso": {"FEROS": 2}}, {"source_id": "4087500657432162688", "ra": "287.2374175158977", "dec": "-17.536452931435328", "parallax": "20.44534355005453", "phot_g_mean_mag": "7.989909", "bp_rp": "0.8986597", "radial_velocity": "-48.927193", "eso": {}}, {"source_id": "4154791250114009472", "ra": "279.03898556301016", "dec": "-10.891575043846736", "parallax": "28.566830282311614", "phot_g_mean_mag": "8.34178", "bp_rp": "0.89071655", "radial_velocity": "-25.176027", "eso": {}}, {"source_id": "1192813951126183808", "ra": "238.00204042463716", "dec": "15.235352656521137", "parallax": "31.61097578146119", "phot_g_mean_mag": "7.1762457", "bp_rp": "0.7699585", "radial_velocity": "-23.163582", "eso": {}}, {"source_id": "4275410252622589312", "ra": "270.57530079864483", "dec": "0.10442328723504415", "parallax": "30.473025037997395", "phot_g_mean_mag": "7.493117", "bp_rp": "0.8720646", "radial_velocity": "-80.740166", "eso": {"FEROS": 1}}, {"source_id": "4478524169500496000", "ra": "276.59053098427415", "dec": "8.613677131548735", "parallax": "28.279440764043247", "phot_g_mean_mag": "8.108023", "bp_rp": "0.93995285", "radial_velocity": "-17.179956", "eso": {}}, {"source_id": "4505477838068264064", "ra": "282.4088511777602", "dec": "13.21760854234689", "parallax": "26.48011157805223", "phot_g_mean_mag": "8.381125", "bp_rp": "0.92110395", "radial_velocity": "-54.55687", "eso": {}}, {"source_id": "1829590548393015168", "ra": "302.484643370272", "dec": "20.918293477960372", "parallax": "22.420061288502147", "phot_g_mean_mag": "8.708283", "bp_rp": "0.9395952", "radial_velocity": "", "eso": {}}, {"source_id": "2036984245546483456", "ra": "285.73938401182227", "dec": "27.250702229173886", "parallax": "20.511302345110575", "phot_g_mean_mag": "8.949523", "bp_rp": "0.97398853", "radial_velocity": "-44.113094", "eso": {}}, {"source_id": "4249153090313053440", "ra": "303.7734513654941", "dec": "4.9757896302576885", "parallax": "22.986185933855566", "phot_g_mean_mag": "8.677528", "bp_rp": "0.95260906", "radial_velocity": "10.165669", "eso": {}}, {"source_id": "4584639307993378432", "ra": "270.1613501693823", "dec": "29.572693853533792", "parallax": "35.40197793844217", "phot_g_mean_mag": "6.909487", "bp_rp": "0.81774473", "radial_velocity": "1.9887282", "eso": {"UVES": 1}}, {"source_id": "5907099286501464448", "ra": "226.9898749629846", "dec": "-45.57989626450515", "parallax": "23.917380115907974", "phot_g_mean_mag": "7.562093", "bp_rp": "0.8931298", "radial_velocity": "", "eso": {}}, {"source_id": "6003429213889816832", "ra": "227.67344582788428", "dec": "-43.73031073458105", "parallax": "31.83878233750496", "phot_g_mean_mag": "6.8735676", "bp_rp": "0.7685871", "radial_velocity": "-4.4551053", "eso": {}}, {"source_id": "6004256802548180736", "ra": "228.49345528245854", "dec": "-41.46412940679009", "parallax": "23.188709828489444", "phot_g_mean_mag": "8.270233", "bp_rp": "0.9277754", "radial_velocity": "-45.168602", "eso": {}}, {"source_id": "6128366415218881536", "ra": "186.6962483313444", "dec": "-48.913552660206726", "parallax": "37.22107095867945", "phot_g_mean_mag": "6.090406", "bp_rp": "0.8259287", "radial_velocity": "30.470337", "eso": {"ESPRESSO": 30, "FEROS": 1, "UVES": 8}}, {"source_id": "5931156532274485376", "ra": "249.94643347978666", "dec": "-51.99440640132834", "parallax": "31.836356264052622", "phot_g_mean_mag": "7.4675746", "bp_rp": "0.8385916", "radial_velocity": "-1.6017275", "eso": {}}, {"source_id": "5932115237719041280", "ra": "244.8380322894988", "dec": "-54.51402757610042", "parallax": "22.41511523936128", "phot_g_mean_mag": "6.927933", "bp_rp": "0.83854055", "radial_velocity": "90.118164", "eso": {"UVES": 2}}, {"source_id": "5866656568776362752", "ra": "214.79771680985624", "dec": "-60.826229661191775", "parallax": "25.497094708760144", "phot_g_mean_mag": "8.1053295", "bp_rp": "0.92079544", "radial_velocity": "7.009891", "eso": {}}, {"source_id": "5923219226483363712", "ra": "260.62481384888696", "dec": "-54.28607612402689", "parallax": "23.78621151954547", "phot_g_mean_mag": "6.6950407", "bp_rp": "0.65282583", "radial_velocity": "30.569426", "eso": {}}, {"source_id": "5370497853621034368", "ra": "173.4843138735584", "dec": "-48.81976930143604", "parallax": "25.419461328703147", "phot_g_mean_mag": "7.9902844", "bp_rp": "0.87681293", "radial_velocity": "19.085667", "eso": {}}, {"source_id": "5828016122410766592", "ra": "244.09446725826453", "dec": "-65.08579925666595", "parallax": "21.14860259125951", "phot_g_mean_mag": "8.801362", "bp_rp": "0.9422779", "radial_velocity": "22.146297", "eso": {}}, {"source_id": "5307856825080347392", "ra": "145.66895422428615", "dec": "-55.83173894556254", "parallax": "22.973591444382965", "phot_g_mean_mag": "7.638545", "bp_rp": "0.7599158", "radial_velocity": "", "eso": {}}, {"source_id": "5324296207519645696", "ra": "136.98528312996288", "dec": "-50.48303905080745", "parallax": "24.2739288686873", "phot_g_mean_mag": "7.5586076", "bp_rp": "0.77222204", "radial_velocity": "-1.0875115", "eso": {"FEROS": 1}}, {"source_id": "5431458355979040000", "ra": "146.55609706857052", "dec": "-40.635117884342684", "parallax": "20.50723768118538", "phot_g_mean_mag": "7.8021593", "bp_rp": "0.72645473", "radial_velocity": "-0.19585234", "eso": {}}, {"source_id": "4634528720388462592", "ra": "4.063774501401125", "dec": "-79.85142960812378", "parallax": "56.96442817792121", "phot_g_mean_mag": "6.408673", "bp_rp": "0.92418003", "radial_velocity": "-6.068909", "eso": {"FEROS": 2, "UVES": 2}}, {"source_id": "4650314511916109696", "ra": "84.26060123714947", "dec": "-73.69982813099081", "parallax": "26.285419390540486", "phot_g_mean_mag": "6.559264", "bp_rp": "0.7430248", "radial_velocity": "61.503956", "eso": {"FEROS": 1}}, {"source_id": "4707315118836465152", "ra": "10.618788259134101", "dec": "-65.46784658189353", "parallax": "23.67212822998463", "phot_g_mean_mag": "5.2509127", "bp_rp": "0.6740055", "radial_velocity": "3.3750715", "eso": {}}, {"source_id": "4763906879239461632", "ra": "76.3774682786158", "dec": "-57.47218051585344", "parallax": "85.52329311905011", "phot_g_mean_mag": "4.550013", "bp_rp": "0.7088733", "radial_velocity": "-1.4497199", "eso": {"FEROS": 3}}, {"source_id": "4774152506544281216", "ra": "70.07625788356181", "dec": "-58.94313278389464", "parallax": "32.433214030340366", "phot_g_mean_mag": "7.232904", "bp_rp": "0.840085", "radial_velocity": "11.587817", "eso": {}}, {"source_id": "4901229043960053248", "ra": "4.609744564940433", "dec": "-63.47775786238856", "parallax": "23.35551119232331", "phot_g_mean_mag": "7.3391776", "bp_rp": "0.697855", "radial_velocity": "6.5300074", "eso": {"FEROS": 21, "UVES": 8}}, {"source_id": "4930557382760649344", "ra": "21.483620089783503", "dec": "-47.89942334244365", "parallax": "26.63989574931971", "phot_g_mean_mag": "7.8916187", "bp_rp": "0.96231985", "radial_velocity": "", "eso": {}}, {"source_id": "4973139402225747072", "ra": "1.2804274811037346", "dec": "-52.15231606645571", "parallax": "23.65169442378338", "phot_g_mean_mag": "7.402707", "bp_rp": "0.7237029", "radial_velocity": "34.799057", "eso": {}}, {"source_id": "4975284381908412672", "ra": "11.441179788312354", "dec": "-47.551632903583055", "parallax": "66.45087121691725", "phot_g_mean_mag": "5.6450467", "bp_rp": "0.80877495", "radial_velocity": "-10.918731", "eso": {"FEROS": 2}}, {"source_id": "6362034660706208256", "ra": "308.98115336674005", "dec": "-78.46903405282761", "parallax": "20.698903096172913", "phot_g_mean_mag": "8.900863", "bp_rp": "0.9347868", "radial_velocity": "31.14718", "eso": {}}, {"source_id": "6387058411482257536", "ra": "354.9154985453436", "dec": "-69.19605237935818", "parallax": "22.63674663857418", "phot_g_mean_mag": "8.341437", "bp_rp": "0.8864422", "radial_velocity": "7.128368", "eso": {"ESPRESSO": 3, "FEROS": 1, "UVES": 4}}, {"source_id": "6425808121825005184", "ra": "305.3661653652503", "dec": "-66.74967470711972", "parallax": "21.64422228447262", "phot_g_mean_mag": "6.381235", "bp_rp": "0.6423092", "radial_velocity": "21.224493", "eso": {}}, {"source_id": "6445776038962535168", "ra": "295.64044931144144", "dec": "-59.01062281492933", "parallax": "24.443020553409617", "phot_g_mean_mag": "7.686875", "bp_rp": "0.82426834", "radial_velocity": "", "eso": {}}, {"source_id": "6466156006675164288", "ra": "320.34741398330783", "dec": "-51.753018970779344", "parallax": "20.876092147261506", "phot_g_mean_mag": "6.6029973", "bp_rp": "0.813921", "radial_velocity": "17.220675", "eso": {"UVES": 4}}, {"source_id": "6512940226435062656", "ra": "345.4247383708772", "dec": "-51.46877070016553", "parallax": "33.44418247800489", "phot_g_mean_mag": "7.9787045", "bp_rp": "0.9944625", "radial_velocity": "4.067741", "eso": {}}, {"source_id": "6564091190988411520", "ra": "327.0667117287086", "dec": "-47.30492965427047", "parallax": "64.27166055130206", "phot_g_mean_mag": "5.419392", "bp_rp": "0.777997", "radial_velocity": "-7.546653", "eso": {"ESPRESSO": 27, "UVES": 4}}, {"source_id": "2315857227976341504", "ra": "6.933112239472567", "dec": "-32.38793730759783", "parallax": "21.692162549097972", "phot_g_mean_mag": "8.840433", "bp_rp": "0.95016766", "radial_velocity": "-42.83285", "eso": {}}, {"source_id": "2343647384368388608", "ra": "11.112601864577796", "dec": "-26.515018438908708", "parallax": "29.318666489290436", "phot_g_mean_mag": "7.624324", "bp_rp": "0.84299564", "radial_velocity": "56.729355", "eso": {"ESPRESSO": 6, "UVES": 4}}, {"source_id": "2415243733278993920", "ra": "359.87141868257737", "dec": "-16.944923847676073", "parallax": "27.67235617712394", "phot_g_mean_mag": "8.706769", "bp_rp": "0.9790859", "radial_velocity": "-46.28576", "eso": {"UVES": 4}}, {"source_id": "2427582693283953792", "ra": "3.5205753448699344", "dec": "-11.312437943999308", "parallax": "23.28551913139135", "phot_g_mean_mag": "8.206435", "bp_rp": "0.83119535", "radial_velocity": "-24.434828", "eso": {}}, {"source_id": "2475331528340199936", "ra": "18.600727000304673", "dec": "-7.921590239401472", "parallax": "41.57471919228731", "phot_g_mean_mag": "5.0169754", "bp_rp": "0.62134457", "radial_velocity": "21.815023", "eso": {}}, {"source_id": "2523361151179609344", "ra": "10.197852897678386", "dec": "-7.233021718032282", "parallax": "37.792390705217514", "phot_g_mean_mag": "6.8973174", "bp_rp": "0.7988043", "radial_velocity": "12.227382", "eso": {}}, {"source_id": "2531792756096759296", "ra": "19.247009203576003", "dec": "-2.2797825390714745", "parallax": "34.814284308217836", "phot_g_mean_mag": "6.3952374", "bp_rp": "0.71335936", "radial_velocity": "5.9629846", "eso": {"UVES": 2}}, {"source_id": "2743198605549406464", "ra": "356.96992833524007", "dec": "4.175337251304017", "parallax": "22.242005163544444", "phot_g_mean_mag": "7.546207", "bp_rp": "0.7866287", "radial_velocity": "-15.247884", "eso": {}}, {"source_id": "5010757753754644224", "ra": "25.15223140544571", "dec": "-36.48430299675281", "parallax": "27.00885512252523", "phot_g_mean_mag": "7.7607703", "bp_rp": "0.8471174", "radial_velocity": "43.05251", "eso": {}}, {"source_id": "5062172841616745856", "ra": "39.24409983264786", "dec": "-34.57912647324325", "parallax": "39.29461609004107", "phot_g_mean_mag": "5.614815", "bp_rp": "0.82454205", "radial_velocity": "11.155645", "eso": {"FEROS": 3, "UVES": 16}}, {"source_id": "5147846340974080000", "ra": "31.2472901709928", "dec": "-15.678304081285935", "parallax": "37.79069188348891", "phot_g_mean_mag": "7.575813", "bp_rp": "0.97404146", "radial_velocity": "10.868377", "eso": {}}, {"source_id": "6570039342736534784", "ra": "332.3951618150393", "dec": "-41.225215089654434", "parallax": "23.666244617531184", "phot_g_mean_mag": "7.68243", "bp_rp": "0.8088503", "radial_velocity": "4.1419396", "eso": {"UVES": 4}}, {"source_id": "6586580842340695040", "ra": "329.33326669400424", "dec": "-37.764151923999435", "parallax": "22.268801132809397", "phot_g_mean_mag": "7.345241", "bp_rp": "0.7155652", "radial_velocity": "5.6056376", "eso": {"UVES": 2}}, {"source_id": "6601750151432831104", "ra": "337.8780248250589", "dec": "-32.354522177681766", "parallax": "22.11470529672993", "phot_g_mean_mag": "7.709608", "bp_rp": "0.73406935", "radial_velocity": "4.4197254", "eso": {}}, {"source_id": "297548019938221056", "ra": "27.47918859918027", "dec": "25.746121100293873", "parallax": "20.65068475458026", "phot_g_mean_mag": "8.400534", "bp_rp": "0.8394003", "radial_velocity": "-2.1710148", "eso": {}}, {"source_id": "1846882224145757056", "ra": "319.7432445193458", "dec": "26.230585790882785", "parallax": "25.459497993579973", "phot_g_mean_mag": "8.253331", "bp_rp": "0.91995716", "radial_velocity": "-16.93423", "eso": {}}, {"source_id": "2907306935108521088", "ra": "84.43571539288124", "dec": "-28.689501838606315", "parallax": "24.080142757315098", "phot_g_mean_mag": "5.155013", "bp_rp": "0.63737917", "radial_velocity": "39.068768", "eso": {"FEROS": 3, "UVES": 8}}, {"source_id": "2931187743553585280", "ra": "108.92611494071244", "dec": "-18.7894510329566", "parallax": "20.781659137496668", "phot_g_mean_mag": "9.191472", "bp_rp": "0.96170425", "radial_velocity": "72.17282", "eso": {}}, {"source_id": "2972622770521857664", "ra": "73.90960941536885", "dec": "-23.241298160314397", "parallax": "26.079606801468795", "phot_g_mean_mag": "7.3467536", "bp_rp": "0.76516247", "radial_velocity": "25.637827", "eso": {}}, {"source_id": "5575196819582392320", "ra": "94.82732242777735", "dec": "-37.463022724027105", "parallax": "25.343136473964467", "phot_g_mean_mag": "8.458163", "bp_rp": "0.99524784", "radial_velocity": "17.575876", "eso": {}}, {"source_id": "5584019442620181760", "ra": "101.34444954450602", "dec": "-31.79505826654203", "parallax": "41.78383000945281", "phot_g_mean_mag": "5.7957945", "bp_rp": "0.6608362", "radial_velocity": "28.686024", "eso": {}}, {"source_id": "5596797039059063680", "ra": "121.75390919459994", "dec": "-29.40451664155661", "parallax": "38.95805236436632", "phot_g_mean_mag": "6.6477046", "bp_rp": "0.76543236", "radial_velocity": "-15.709653", "eso": {"ESPRESSO": 588, "UVES": 2}}, {"source_id": "5607942273021322880", "ra": "104.93081372958287", "dec": "-29.708365480922993", "parallax": "20.632870333083208", "phot_g_mean_mag": "7.654081", "bp_rp": "0.69583416", "radial_velocity": "17.734207", "eso": {}}, {"source_id": "5613359910416875392", "ra": "113.68221948667663", "dec": "-26.039672171026265", "parallax": "22.382860879190073", "phot_g_mean_mag": "7.8156824", "bp_rp": "0.793633", "radial_velocity": "-22.757355", "eso": {}}, {"source_id": "144978858756826368", "ra": "68.03293814929867", "dec": "21.63234187170915", "parallax": "25.755930857797697", "phot_g_mean_mag": "6.938979", "bp_rp": "0.77385426", "radial_velocity": "6.84432", "eso": {}}, {"source_id": "145373377272257664", "ra": "66.06128542553917", "dec": "21.736042245626578", "parallax": "23.200912136413244", "phot_g_mean_mag": "7.0066395", "bp_rp": "0.6713419", "radial_velocity": "38.203873", "eso": {"UVES": 2}}, {"source_id": "579565051586154880", "ra": "138.44644387450757", "dec": "4.4204727342856796", "parallax": "21.67251425064448", "phot_g_mean_mag": "8.677334", "bp_rp": "0.93287754", "radial_velocity": "-15.872861", "eso": {}}, {"source_id": "614534817044398848", "ra": "145.1469705675475", "dec": "13.053276627709666", "parallax": "24.45629794836269", "phot_g_mean_mag": "6.838737", "bp_rp": "0.6479473", "radial_velocity": "-23.641327", "eso": {}}, {"source_id": "686996756484129664", "ra": "138.78856021717587", "dec": "23.374857615120717", "parallax": "20.565812815516857", "phot_g_mean_mag": "7.898468", "bp_rp": "0.8258066", "radial_velocity": "19.94139", "eso": {}}, {"source_id": "1154336202410495488", "ra": "222.97248644219206", "dec": "2.0149838652091967", "parallax": "25.36810775575994", "phot_g_mean_mag": "8.182125", "bp_rp": "0.86258984", "radial_velocity": "-7.9097543", "eso": {}}, {"source_id": "1257529526205454336", "ra": "212.5996092421406", "dec": "25.091411036228337", "parallax": "27.484029395702848", "phot_g_mean_mag": "4.6620293", "bp_rp": "0.71075535", "radial_velocity": "", "eso": {}}, {"source_id": "3228407348810503168", "ra": "74.57005520731845", "dec": "0.4536638886466193", "parallax": "29.74814433361173", "phot_g_mean_mag": "6.945024", "bp_rp": "0.9057727", "radial_velocity": "10.386203", "eso": {}}, {"source_id": "3269362645115584640", "ra": "49.841600693178854", "dec": "3.3706161908023495", "parallax": "107.8023393880993", "phot_g_mean_mag": "4.6564903", "bp_rp": "0.8589401", "radial_velocity": "18.733732", "eso": {"FEROS": 7, "UVES": 16}}, {"source_id": "3346787986201584896", "ra": "89.01601210041528", "dec": "13.922768938376445", "parallax": "36.44736649873669", "phot_g_mean_mag": "6.46059", "bp_rp": "0.82071495", "radial_velocity": "0.26070803", "eso": {"FEROS": 1}}, {"source_id": "3482326708703712640", "ra": "173.06672103365204", "dec": "-29.262681479002637", "parallax": "35.523891872581366", "phot_g_mean_mag": "5.6294436", "bp_rp": "0.69677544", "radial_velocity": "7.38057", "eso": {"UVES": 4}}, {"source_id": "3507879565090229888", "ra": "199.596298132351", "dec": "-18.31592210064546", "parallax": "117.1726460991387", "phot_g_mean_mag": "4.5325284", "bp_rp": "0.898438", "radial_velocity": "-7.864339", "eso": {"ESPRESSO": 10, "UVES": 22}}, {"source_id": "3574377616021489024", "ra": "182.3703108278646", "dec": "-11.85781242442055", "parallax": "40.33507455627513", "phot_g_mean_mag": "6.6682606", "bp_rp": "0.820642", "radial_velocity": "1.8753335", "eso": {"ESPRESSO": 8, "FEROS": 1, "UVES": 1}}, {"source_id": "3606091998132474752", "ra": "206.1858378540753", "dec": "-14.225952658333355", "parallax": "29.662962636139337", "phot_g_mean_mag": "6.772208", "bp_rp": "0.71274376", "radial_velocity": "19.189455", "eso": {}}, {"source_id": "3702148666829533952", "ra": "192.4364322110699", "dec": "1.1851728296085968", "parallax": "30.78680550880043", "phot_g_mean_mag": "7.9491878", "bp_rp": "0.8860545", "radial_velocity": "2.634262", "eso": {"UVES": 4}}, {"source_id": "3766815996540448128", "ra": "152.1099149552719", "dec": "-11.115044146493942", "parallax": "24.452244834301784", "phot_g_mean_mag": "7.972244", "bp_rp": "0.844234", "radial_velocity": "28.69883", "eso": {}}, {"source_id": "3817423630549029504", "ra": "170.3603315913426", "dec": "6.634948919097705", "parallax": "20.55903897076323", "phot_g_mean_mag": "6.563015", "bp_rp": "0.68791485", "radial_velocity": "-14.194085", "eso": {}}, {"source_id": "3957887649746830976", "ra": "192.19439370815644", "dec": "24.839758445741722", "parallax": "58.485831858718974", "phot_g_mean_mag": "6.1145015", "bp_rp": "0.8701258", "radial_velocity": "-9.18594", "eso": {}}, {"source_id": "5394967832790881536", "ra": "163.54622900631682", "dec": "-37.264934580530166", "parallax": "25.610610271864154", "phot_g_mean_mag": "8.23891", "bp_rp": "0.88812447", "radial_velocity": "2.6307554", "eso": {}}, {"source_id": "5687882227258685312", "ra": "148.64455142973105", "dec": "-12.952575361146256", "parallax": "21.391027813321614", "phot_g_mean_mag": "6.736428", "bp_rp": "0.70893574", "radial_velocity": "10.009771", "eso": {}}, {"source_id": "5730371484020807808", "ra": "134.68417930359027", "dec": "-16.13177821572008", "parallax": "46.68723533065845", "phot_g_mean_mag": "5.6518154", "bp_rp": "0.74270105", "radial_velocity": "119.47182", "eso": {"FEROS": 2, "UVES": 17}}, {"source_id": "5759132268661461760", "ra": "137.19544586618363", "dec": "-5.115761884382991", "parallax": "23.08579840046296", "phot_g_mean_mag": "8.010849", "bp_rp": "0.8132348", "radial_velocity": "5.0125833", "eso": {"UVES": 2}}, {"source_id": "6018047019138644480", "ra": "246.0058026651914", "dec": "-39.192965569776966", "parallax": "77.56546482061312", "phot_g_mean_mag": "5.215097", "bp_rp": "0.8076582", "radial_velocity": "12.845835", "eso": {"FEROS": 5, "UVES": 10}}, {"source_id": "6036282793125672576", "ra": "240.2712287374107", "dec": "-32.69650075411134", "parallax": "20.776457255304678", "phot_g_mean_mag": "7.866887", "bp_rp": "0.822361", "radial_velocity": "5.518549", "eso": {"UVES": 2}}, {"source_id": "6213644846302305536", "ra": "231.01010494943648", "dec": "-27.305419670890252", "parallax": "37.01768784079552", "phot_g_mean_mag": "7.3327193", "bp_rp": "0.9167886", "radial_velocity": "-6.562323", "eso": {}}, {"source_id": "6282494305924197120", "ra": "222.13163976500877", "dec": "-17.34037705591423", "parallax": "20.046185712466905", "phot_g_mean_mag": "7.736768", "bp_rp": "0.798121", "radial_velocity": "1.9596372", "eso": {}}, {"source_id": "6286606170175267840", "ra": "220.12909274434895", "dec": "-16.209585823093555", "parallax": "42.137573801343464", "phot_g_mean_mag": "7.057756", "bp_rp": "0.891727", "radial_velocity": "-23.19115", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "5979460655025099776", "ra": "259.2646708234889", "dec": "-32.66308449301173", "parallax": "20.629789585677567", "phot_g_mean_mag": "5.404375", "bp_rp": "0.6660423", "radial_velocity": "-39.144943", "eso": {"UVES": 6}}, {"source_id": "6037514800199297152", "ra": "244.88683551231367", "dec": "-30.906605188271072", "parallax": "22.708881691165278", "phot_g_mean_mag": "5.4003477", "bp_rp": "0.63041735", "radial_velocity": "-0.08558529", "eso": {"UVES": 4}}, {"source_id": "4063687056632310784", "ra": "267.78026881581775", "dec": "-27.396848287044865", "parallax": "22.35885971530617", "phot_g_mean_mag": "8.6942215", "bp_rp": "0.94447136", "radial_velocity": "-0.109136865", "eso": {}}, {"source_id": "4122133830616441728", "ra": "260.6440362918415", "dec": "-19.616796593334072", "parallax": "30.300669639007367", "phot_g_mean_mag": "7.658493", "bp_rp": "0.9233866", "radial_velocity": "-79.158066", "eso": {}}, {"source_id": "4338289879498164608", "ra": "249.9130926244475", "dec": "-9.555236044129387", "parallax": "23.07483815193429", "phot_g_mean_mag": "6.1956935", "bp_rp": "0.6820626", "radial_velocity": "-18.270721", "eso": {}}, {"source_id": "4339941101147274496", "ra": "255.00735128821518", "dec": "-7.531749378468468", "parallax": "23.098549115808048", "phot_g_mean_mag": "7.8258824", "bp_rp": "0.8030195", "radial_velocity": "0.47823906", "eso": {}}, {"source_id": "4345775217221821312", "ra": "243.90633606005997", "dec": "-8.371641161548801", "parallax": "70.73714672122247", "phot_g_mean_mag": "5.327651", "bp_rp": "0.81707716", "radial_velocity": "11.711005", "eso": {"ESPRESSO": 1, "UVES": 22}}, {"source_id": "6764687466752221824", "ra": "293.1684170305172", "dec": "-28.023138653390138", "parallax": "35.98255247529634", "phot_g_mean_mag": "6.9783187", "bp_rp": "0.85418606", "radial_velocity": "-42.554565", "eso": {"FEROS": 1, "UVES": 2}}, {"source_id": "4153080581800739968", "ra": "277.8588013133966", "dec": "-12.02157044884936", "parallax": "24.41806643532969", "phot_g_mean_mag": "7.427222", "bp_rp": "0.72136784", "radial_velocity": "33.330032", "eso": {"UVES": 1}}, {"source_id": "4182035116682808448", "ra": "295.2514740124057", "dec": "-15.40465719405411", "parallax": "20.345514862441306", "phot_g_mean_mag": "8.097605", "bp_rp": "0.8043475", "radial_velocity": "-17.501034", "eso": {}}, {"source_id": "1165262633571848064", "ra": "234.49731120967738", "dec": "10.238282922173116", "parallax": "21.13066511679369", "phot_g_mean_mag": "6.9565053", "bp_rp": "0.70936394", "radial_velocity": "37.6048", "eso": {}}, {"source_id": "1208228180730812544", "ra": "229.10668486647663", "dec": "16.79352122778222", "parallax": "21.617877854570366", "phot_g_mean_mag": "7.5393314", "bp_rp": "0.76280546", "radial_velocity": "-12.592097", "eso": {}}, {"source_id": "1212738995903148544", "ra": "227.21582762668115", "dec": "19.038470857683897", "parallax": "29.363496703919512", "phot_g_mean_mag": "8.07114", "bp_rp": "0.9860773", "radial_velocity": "-24.167923", "eso": {}}, {"source_id": "4430238051199001216", "ra": "236.60988904592512", "dec": "7.352758689332476", "parallax": "83.921443569609", "phot_g_mean_mag": "4.246856", "bp_rp": "0.7825", "radial_velocity": "-66.37761", "eso": {}}, {"source_id": "4430455720140801792", "ra": "235.10849844519365", "dec": "6.367385669628495", "parallax": "22.218794717191738", "phot_g_mean_mag": "8.60774", "bp_rp": "0.89539146", "radial_velocity": "-6.7564073", "eso": {}}, {"source_id": "4464207428577214464", "ra": "243.32764025304397", "dec": "13.526167955854836", "parallax": "41.15453469848448", "phot_g_mean_mag": "7.262869", "bp_rp": "0.9383755", "radial_velocity": "18.481237", "eso": {}}, {"source_id": "4485780087237068160", "ra": "265.2387617624158", "dec": "5.913130565819677", "parallax": "20.119269508184026", "phot_g_mean_mag": "8.673922", "bp_rp": "0.92605495", "radial_velocity": "-29.90311", "eso": {}}, {"source_id": "2019550767177606016", "ra": "293.3590767329213", "dec": "23.497506794211784", "parallax": "21.834572135473394", "phot_g_mean_mag": "7.67696", "bp_rp": "0.8082762", "radial_velocity": "-27.343763", "eso": {}}, {"source_id": "4281201414717499520", "ra": "284.154874366675", "dec": "4.2647520244894075", "parallax": "37.61505196521486", "phot_g_mean_mag": "6.577961", "bp_rp": "0.7306304", "radial_velocity": "10.12076", "eso": {}}, {"source_id": "4521349425846548352", "ra": "286.2823901002935", "dec": "23.07889834434051", "parallax": "28.190843783088074", "phot_g_mean_mag": "8.322326", "bp_rp": "0.9843044", "radial_velocity": "-16.527363", "eso": {"UVES": 2}}, {"source_id": "1837325337808759424", "ra": "302.9994947055163", "dec": "29.18740619295139", "parallax": "25.51779869551147", "phot_g_mean_mag": "8.655745", "bp_rp": "0.96846294", "radial_velocity": "-20.77943", "eso": {}}, {"source_id": "2028672143847239040", "ra": "297.3622736574867", "dec": "28.61050415833032", "parallax": "21.14310815744321", "phot_g_mean_mag": "7.8556585", "bp_rp": "0.70338964", "radial_velocity": "15.385153", "eso": {}}, {"source_id": "6062166950467100032", "ra": "198.5609508085928", "dec": "-59.10391799181995", "parallax": "54.82467908671826", "phot_g_mean_mag": "4.7883224", "bp_rp": "0.653831", "radial_velocity": "-63.565937", "eso": {"FEROS": 3, "UVES": 4}}, {"source_id": "5853300216982678400", "ra": "216.18900452356579", "dec": "-63.70719926530917", "parallax": "27.611675770915713", "phot_g_mean_mag": "7.120773", "bp_rp": "0.7426863", "radial_velocity": "18.396528", "eso": {}}, {"source_id": "5371171927266497792", "ra": "179.31449477980635", "dec": "-48.743593927007595", "parallax": "22.99984373623065", "phot_g_mean_mag": "8.01446", "bp_rp": "0.7899437", "radial_velocity": "7.8286753", "eso": {}}, {"source_id": "5371310259578508032", "ra": "179.5641649309799", "dec": "-47.97748055849814", "parallax": "26.65122680979926", "phot_g_mean_mag": "6.639643", "bp_rp": "0.6826558", "radial_velocity": "-1.9171616", "eso": {}}, {"source_id": "5407414407508423424", "ra": "153.2314675506714", "dec": "-47.47467686177231", "parallax": "27.003584193717305", "phot_g_mean_mag": "8.096553", "bp_rp": "0.9123807", "radial_velocity": "1.6358678", "eso": {}}, {"source_id": "5806825406592131712", "ra": "242.30334520163402", "dec": "-71.07135531194093", "parallax": "38.56137511084816", "phot_g_mean_mag": "7.0585966", "bp_rp": "0.8796778", "radial_velocity": "27.187002", "eso": {}}, {"source_id": "5236196498362394112", "ra": "178.8149560951789", "dec": "-66.4093622718791", "parallax": "22.742132116789872", "phot_g_mean_mag": "8.246061", "bp_rp": "0.86904144", "radial_velocity": "-7.5525208", "eso": {"UVES": 2}}, {"source_id": "5540006949934104448", "ra": "125.36607149053947", "dec": "-39.70441185773698", "parallax": "34.14779002621171", "phot_g_mean_mag": "7.0075817", "bp_rp": "0.8483319", "radial_velocity": "49.313007", "eso": {"ESPRESSO": 1, "FEROS": 1, "UVES": 4}}, {"source_id": "4676821022834411904", "ra": "62.53095974325943", "dec": "-61.59929455675098", "parallax": "24.673697604906806", "phot_g_mean_mag": "7.02359", "bp_rp": "0.7215209", "radial_velocity": "-6.8769865", "eso": {}}, {"source_id": "4775347916201249792", "ra": "66.04999969200509", "dec": "-57.0716708758709", "parallax": "36.329036262653084", "phot_g_mean_mag": "6.707042", "bp_rp": "0.7802062", "radial_velocity": "-4.591477", "eso": {"UVES": 8}}, {"source_id": "4902845257333278976", "ra": "15.32998303596916", "dec": "-60.859712669149445", "parallax": "21.51297603072035", "phot_g_mean_mag": "6.7623377", "bp_rp": "0.81372404", "radial_velocity": "31.689093", "eso": {}}, {"source_id": "4923433303326992384", "ra": "6.17887623083274", "dec": "-53.98412339910786", "parallax": "35.26222535516851", "phot_g_mean_mag": "7.123906", "bp_rp": "0.8259864", "radial_velocity": "6.5275316", "eso": {}}, {"source_id": "5289365788258503552", "ra": "116.59643506399601", "dec": "-61.42887936696936", "parallax": "20.157429315985148", "phot_g_mean_mag": "7.194906", "bp_rp": "0.9135666", "radial_velocity": "28.629429", "eso": {}}, {"source_id": "5484098432929243392", "ra": "103.97171335097948", "dec": "-56.939650824557525", "parallax": "26.703587105497412", "phot_g_mean_mag": "7.257549", "bp_rp": "0.76878214", "radial_velocity": "66.19824", "eso": {"FEROS": 1}}, {"source_id": "5502372732796307200", "ra": "97.82711247415092", "dec": "-51.82549525968892", "parallax": "27.12171633595461", "phot_g_mean_mag": "5.448207", "bp_rp": "0.7039294", "radial_velocity": "14.519035", "eso": {}}, {"source_id": "6519711873737172608", "ra": "341.86119340692704", "dec": "-44.965105961035384", "parallax": "30.881332337306304", "phot_g_mean_mag": "7.086793", "bp_rp": "0.76373243", "radial_velocity": "10.988061", "eso": {}}, {"source_id": "6527965258988306304", "ra": "347.9674410273889", "dec": "-45.13670285629804", "parallax": "20.9319220867136", "phot_g_mean_mag": "8.606466", "bp_rp": "0.919199", "radial_velocity": "9.517906", "eso": {"UVES": 8}}, {"source_id": "2324785228033780608", "ra": "354.9644825922254", "dec": "-32.74476085215323", "parallax": "54.71933718636992", "phot_g_mean_mag": "6.973324", "bp_rp": "0.9866462", "radial_velocity": "-7.418852", "eso": {"FEROS": 1, "UVES": 1}}, {"source_id": "2477815222028038272", "ra": "24.398547155959204", "dec": "-6.760861184078484", "parallax": "41.56362142958949", "phot_g_mean_mag": "7.4655304", "bp_rp": "0.9709339", "radial_velocity": "11.4593315", "eso": {"FEROS": 5}}, {"source_id": "2482820714353923072", "ra": "18.62144204627101", "dec": "-5.04799024544603", "parallax": "25.913215369647478", "phot_g_mean_mag": "7.3656344", "bp_rp": "0.7338209", "radial_velocity": "-19.599012", "eso": {}}, {"source_id": "5135642002423826688", "ra": "25.809941623572566", "dec": "-21.619816873247817", "parallax": "32.58598871176553", "phot_g_mean_mag": "8.026286", "bp_rp": "0.9938607", "radial_velocity": "9.72417", "eso": {}}, {"source_id": "2753496425295794944", "ra": "2.9058816115819863", "dec": "10.328111086058204", "parallax": "21.175606870512752", "phot_g_mean_mag": "8.455448", "bp_rp": "0.80337334", "radial_velocity": "12.422478", "eso": {}}, {"source_id": "2820870374678607616", "ra": "353.3961799157788", "dec": "17.818936251246196", "parallax": "20.61736263408377", "phot_g_mean_mag": "6.6641393", "bp_rp": "0.81025696", "radial_velocity": "-5.610712", "eso": {}}, {"source_id": "4889216948147099520", "ra": "61.83602677384699", "dec": "-27.426742184225468", "parallax": "23.60528666561844", "phot_g_mean_mag": "8.294074", "bp_rp": "0.97282743", "radial_velocity": "-6.8613257", "eso": {}}, {"source_id": "5060104351007433472", "ra": "50.01667855900128", "dec": "-28.854362578686352", "parallax": "27.875960404064863", "phot_g_mean_mag": "7.2084846", "bp_rp": "0.80926657", "radial_velocity": "39.849407", "eso": {"ESPRESSO": 1, "UVES": 2}}, {"source_id": "5541950959521537792", "ra": "127.04944746530231", "dec": "-36.7227375090565", "parallax": "24.907658467349908", "phot_g_mean_mag": "8.206479", "bp_rp": "0.9103751", "radial_velocity": "-1.2894171", "eso": {}}, {"source_id": "5607189485513198208", "ra": "105.01154665906802", "dec": "-31.22792385802079", "parallax": "26.200877306534647", "phot_g_mean_mag": "8.258848", "bp_rp": "0.9141369", "radial_velocity": "16.725855", "eso": {}}, {"source_id": "43802039287826432", "ra": "57.59622684276635", "dec": "17.4752524415781", "parallax": "21.47188045529033", "phot_g_mean_mag": "7.3485003", "bp_rp": "0.8125124", "radial_velocity": "-9.490767", "eso": {"UVES": 4}}, {"source_id": "53112944270520832", "ra": "61.33523408583346", "dec": "22.008324337407693", "parallax": "59.472793108702625", "phot_g_mean_mag": "5.756682", "bp_rp": "0.8038416", "radial_velocity": "23.891306", "eso": {"FEROS": 1}}, {"source_id": "112440873718983680", "ra": "47.10557817954636", "dec": "26.327257391768505", "parallax": "25.870743538348638", "phot_g_mean_mag": "7.904065", "bp_rp": "0.689538", "radial_velocity": "-140.18689", "eso": {"UVES": 12}}, {"source_id": "167241254800650880", "ra": "60.96303803131758", "dec": "29.197141773574653", "parallax": "30.878728715236623", "phot_g_mean_mag": "7.974408", "bp_rp": "0.9681492", "radial_velocity": "-7.715191", "eso": {}}, {"source_id": "581681508390494464", "ra": "134.36850483117567", "dec": "4.4309781502830115", "parallax": "20.12823698266442", "phot_g_mean_mag": "8.489329", "bp_rp": "0.91030264", "radial_velocity": "-41.89912", "eso": {}}, {"source_id": "607044664662446720", "ra": "137.47357301236315", "dec": "14.456872488859261", "parallax": "20.723504325205674", "phot_g_mean_mag": "8.185791", "bp_rp": "0.82044935", "radial_velocity": "-11.826372", "eso": {"UVES": 2}}, {"source_id": "676768820148924416", "ra": "121.94117872458763", "dec": "21.581511839420184", "parallax": "41.99159895896632", "phot_g_mean_mag": "5.1279187", "bp_rp": "0.8111644", "radial_velocity": "-35.996952", "eso": {}}, {"source_id": "693631553243146624", "ra": "140.29445420327698", "dec": "25.16258754779239", "parallax": "21.09866747844518", "phot_g_mean_mag": "7.1206746", "bp_rp": "0.77432156", "radial_velocity": "-38.024063", "eso": {}}, {"source_id": "876370076542359936", "ra": "120.13300863259106", "dec": "29.207176720378527", "parallax": "58.52996195041519", "phot_g_mean_mag": "6.7788324", "bp_rp": "0.93110514", "radial_velocity": "14.791616", "eso": {}}, {"source_id": "1237090738916392704", "ra": "222.8480514738455", "dec": "19.100269640072455", "parallax": "148.06949945238355", "phot_g_mean_mag": "4.4804826", "bp_rp": "0.92511153", "radial_velocity": "1.5923321", "eso": {"FEROS": 12, "UVES": 21}}, {"source_id": "1460004317582757248", "ra": "199.08336675250726", "dec": "27.7327771207071", "parallax": "25.19051150975295", "phot_g_mean_mag": "8.064353", "bp_rp": "0.8771677", "radial_velocity": "17.190222", "eso": {}}, {"source_id": "1461340288634131968", "ra": "197.16219911788139", "dec": "29.38285182090433", "parallax": "21.882492103902123", "phot_g_mean_mag": "8.401241", "bp_rp": "0.80186796", "radial_velocity": "-42.440643", "eso": {}}, {"source_id": "3069347628753757440", "ra": "124.50605047827108", "dec": "-4.019204416102065", "parallax": "20.550788488232605", "phot_g_mean_mag": "8.586145", "bp_rp": "0.97098255", "radial_velocity": "80.199974", "eso": {}}, {"source_id": "3233007361862146048", "ra": "71.5689905523957", "dec": "3.268912751680972", "parallax": "29.89159679579998", "phot_g_mean_mag": "7.6553464", "bp_rp": "0.8436723", "radial_velocity": "18.175995", "eso": {}}, {"source_id": "3277015039888106496", "ra": "57.53733220479246", "dec": "6.620524176795481", "parallax": "27.929941073110488", "phot_g_mean_mag": "7.5721917", "bp_rp": "0.83789396", "radial_velocity": "4.253172", "eso": {}}, {"source_id": "3285218255623808640", "ra": "63.85699151228302", "dec": "6.199154881274957", "parallax": "45.307607581656825", "phot_g_mean_mag": "6.777597", "bp_rp": "0.8597808", "radial_velocity": "-8.010125", "eso": {}}, {"source_id": "3359820016490648576", "ra": "107.00076883224422", "dec": "15.52768015570283", "parallax": "21.018476647594156", "phot_g_mean_mag": "7.6666245", "bp_rp": "0.73307705", "radial_velocity": "-12.835023", "eso": {"UVES": 2}}, {"source_id": "3485971555389836160", "ra": "181.30689305758722", "dec": "-28.719055950511294", "parallax": "27.452974083977", "phot_g_mean_mag": "7.6229215", "bp_rp": "0.82349443", "radial_velocity": "10.813724", "eso": {"FEROS": 1, "UVES": 2}}, {"source_id": "3557158782894062080", "ra": "161.4894061714662", "dec": "-16.73626717210962", "parallax": "20.717657876734858", "phot_g_mean_mag": "7.819434", "bp_rp": "0.7995758", "radial_velocity": "37.470688", "eso": {}}, {"source_id": "3598278250031419008", "ra": "183.1174765359906", "dec": "-3.082614952176222", "parallax": "29.039802368834746", "phot_g_mean_mag": "7.262896", "bp_rp": "0.85222864", "radial_velocity": "14.591599", "eso": {"UVES": 1}}, {"source_id": "3715500448842312064", "ra": "199.77681513916875", "dec": "2.903268442270943", "parallax": "27.643690660184276", "phot_g_mean_mag": "7.542841", "bp_rp": "0.8539252", "radial_velocity": "-41.702705", "eso": {}}, {"source_id": "3719962301387586944", "ra": "202.31962675080862", "dec": "9.298002946435087", "parallax": "20.429598295176195", "phot_g_mean_mag": "8.823783", "bp_rp": "0.92773914", "radial_velocity": "-5.43963", "eso": {}}, {"source_id": "3886688327612984704", "ra": "154.58745695359377", "dec": "12.62093377281588", "parallax": "31.41340561108033", "phot_g_mean_mag": "6.884684", "bp_rp": "0.74598026", "radial_velocity": "23.26617", "eso": {}}, {"source_id": "3945118265299248128", "ra": "196.9141772405554", "dec": "24.01047001097147", "parallax": "26.75019970720097", "phot_g_mean_mag": "7.9785547", "bp_rp": "0.85821676", "radial_velocity": "-1.564741", "eso": {"ESPRESSO": 5}}, {"source_id": "5755630564645499520", "ra": "135.09064162041284", "dec": "-9.124271386814124", "parallax": "21.65922789526662", "phot_g_mean_mag": "7.665669", "bp_rp": "0.70088863", "radial_velocity": "8.564313", "eso": {}}, {"source_id": "6152311579441483904", "ra": "190.58234763935957", "dec": "-39.936591262979704", "parallax": "25.872123090025347", "phot_g_mean_mag": "8.256175", "bp_rp": "0.89760065", "radial_velocity": "-7.7781997", "eso": {}}, {"source_id": "6161806515182527616", "ra": "203.63858343699104", "dec": "-38.90896389343475", "parallax": "33.10876268980465", "phot_g_mean_mag": "7.124454", "bp_rp": "0.8311367", "radial_velocity": "82.23223", "eso": {"UVES": 2}}, {"source_id": "6175121360476107904", "ra": "206.57367318745517", "dec": "-30.474552152855225", "parallax": "21.67593125945175", "phot_g_mean_mag": "8.069947", "bp_rp": "0.77803373", "radial_velocity": "-1.5128883", "eso": {}}, {"source_id": "6031694363622459776", "ra": "249.69543041929114", "dec": "-29.89290179949936", "parallax": "20.343804209607775", "phot_g_mean_mag": "8.073396", "bp_rp": "0.7467394", "radial_velocity": "-26.763971", "eso": {}}, {"source_id": "6029992663310612096", "ra": "256.11643460703914", "dec": "-28.583871541724104", "parallax": "54.725979187340414", "phot_g_mean_mag": "6.3801155", "bp_rp": "0.9633169", "radial_velocity": "14.0822935", "eso": {"ESPRESSO": 35, "FEROS": 1}}, {"source_id": "6320657976568115584", "ra": "227.05165577985977", "dec": "-7.915195636886364", "parallax": "25.45363421058974", "phot_g_mean_mag": "7.8350973", "bp_rp": "0.78711176", "radial_velocity": "-61.217403", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "6333022740735635328", "ra": "226.02802583060623", "dec": "-6.887402401423835", "parallax": "29.167666451423482", "phot_g_mean_mag": "7.583613", "bp_rp": "0.963058", "radial_velocity": "-44.77597", "eso": {}}, {"source_id": "4350787615854308608", "ra": "246.8700946379096", "dec": "-8.571955385942378", "parallax": "24.530237810955132", "phot_g_mean_mag": "8.568755", "bp_rp": "0.9703975", "radial_velocity": "-32.93809", "eso": {}}, {"source_id": "4381250547575102208", "ra": "253.2418467851804", "dec": "-0.033016536706757374", "parallax": "59.480502943877184", "phot_g_mean_mag": "6.4405246", "bp_rp": "0.922729", "radial_velocity": "44.843624", "eso": {"UVES": 2}}, {"source_id": "6700048793058633728", "ra": "304.22810484511007", "dec": "-32.60714956818644", "parallax": "23.247828133193284", "phot_g_mean_mag": "7.925349", "bp_rp": "0.8317814", "radial_velocity": "", "eso": {}}, {"source_id": "6806482034026893824", "ra": "310.0939342304558", "dec": "-24.119325782423505", "parallax": "24.00587916724216", "phot_g_mean_mag": "7.0737357", "bp_rp": "0.7578583", "radial_velocity": "-63.7381", "eso": {}}, {"source_id": "6888226462941735680", "ra": "312.0632266922348", "dec": "-12.454144243977897", "parallax": "24.02381116265034", "phot_g_mean_mag": "7.8745966", "bp_rp": "0.7814088", "radial_velocity": "-17.779415", "eso": {}}, {"source_id": "1761037029171296000", "ra": "311.9078975873589", "dec": "12.98640616763873", "parallax": "24.935756112557684", "phot_g_mean_mag": "7.2960315", "bp_rp": "0.76465607", "radial_velocity": "-33.409775", "eso": {"UVES": 2}}, {"source_id": "1763000482062205056", "ra": "311.6618668885928", "dec": "16.12322163371345", "parallax": "27.88838211612005", "phot_g_mean_mag": "5.017348", "bp_rp": "0.6695113", "radial_velocity": "-6.890259", "eso": {}}, {"source_id": "2028017281576098304", "ra": "297.28616130641", "dec": "27.730729557460865", "parallax": "20.012912821041862", "phot_g_mean_mag": "6.823723", "bp_rp": "0.7418871", "radial_velocity": "3.3033755", "eso": {}}, {"source_id": "4250654679606555008", "ra": "301.3913143677538", "dec": "7.3865897329701315", "parallax": "24.35403015904679", "phot_g_mean_mag": "8.440063", "bp_rp": "0.89334774", "radial_velocity": "-29.101315", "eso": {}}, {"source_id": "4303694742581103744", "ra": "298.0302617024363", "dec": "11.438924503789798", "parallax": "25.17469928598899", "phot_g_mean_mag": "8.110588", "bp_rp": "0.9043579", "radial_velocity": "-20.476421", "eso": {}}, {"source_id": "6065373641721344256", "ra": "205.2340902236786", "dec": "-54.82002167360583", "parallax": "21.961689263137014", "phot_g_mean_mag": "8.306032", "bp_rp": "0.8198104", "radial_velocity": "19.147017", "eso": {}}, {"source_id": "6071767714165417984", "ra": "184.28411279206307", "dec": "-57.70277870812275", "parallax": "20.20125822728079", "phot_g_mean_mag": "8.8914385", "bp_rp": "0.9894247", "radial_velocity": "", "eso": {}}, {"source_id": "6098070987224611840", "ra": "219.79391085679742", "dec": "-46.58542789760349", "parallax": "29.410241582038786", "phot_g_mean_mag": "5.941639", "bp_rp": "0.66245127", "radial_velocity": "-11.081102", "eso": {}}, {"source_id": "6101125121284959360", "ra": "223.72753529861382", "dec": "-41.365179784272144", "parallax": "23.125880421429915", "phot_g_mean_mag": "7.037937", "bp_rp": "0.6489816", "radial_velocity": "-2.9368885", "eso": {}}, {"source_id": "5815781787804787456", "ra": "249.21263053077718", "dec": "-65.58646408147418", "parallax": "20.459799626324727", "phot_g_mean_mag": "7.557932", "bp_rp": "0.7134061", "radial_velocity": "28.573994", "eso": {}}, {"source_id": "5229569879178155264", "ra": "161.11010026198156", "dec": "-72.4432608818008", "parallax": "31.122807522317686", "phot_g_mean_mag": "6.1558723", "bp_rp": "0.63938904", "radial_velocity": "19.544147", "eso": {}}, {"source_id": "5525780373285137792", "ra": "132.27300863505567", "dec": "-39.95381731162223", "parallax": "27.48775276088311", "phot_g_mean_mag": "7.663184", "bp_rp": "0.829947", "radial_velocity": "22.168062", "eso": {}}, {"source_id": "5528591961953902720", "ra": "129.33152767564485", "dec": "-40.14752547947013", "parallax": "36.25695946404227", "phot_g_mean_mag": "6.3918056", "bp_rp": "0.75407314", "radial_velocity": "-1.7971666", "eso": {"FEROS": 4, "UVES": 2}}, {"source_id": "4623915615681999232", "ra": "80.20872213866197", "dec": "-77.91907933149197", "parallax": "21.178715582072446", "phot_g_mean_mag": "8.954656", "bp_rp": "0.9737387", "radial_velocity": "37.96274", "eso": {}}, {"source_id": "4688756084117388544", "ra": "5.644753144133808", "dec": "-73.0325656021649", "parallax": "21.102619742335587", "phot_g_mean_mag": "8.406308", "bp_rp": "0.91390705", "radial_velocity": "36.952034", "eso": {"FEROS": 6}}, {"source_id": "4774152506544171136", "ra": "70.07421660113702", "dec": "-58.94314057639733", "parallax": "32.41557473607105", "phot_g_mean_mag": "7.030014", "bp_rp": "0.83393097", "radial_velocity": "10.886918", "eso": {}}, {"source_id": "4921948069275969024", "ra": "11.251445298129342", "dec": "-53.714879724647446", "parallax": "21.42139019985775", "phot_g_mean_mag": "6.0285854", "bp_rp": "0.6786928", "radial_velocity": "15.587391", "eso": {"UVES": 2}}, {"source_id": "4974688412245511424", "ra": "9.160852784125462", "dec": "-49.13291796841244", "parallax": "22.52273876615741", "phot_g_mean_mag": "6.6464553", "bp_rp": "0.7872572", "radial_velocity": "", "eso": {}}, {"source_id": "5264749303462961280", "ra": "92.56235755341913", "dec": "-74.75398809344104", "parallax": "97.9157940060883", "phot_g_mean_mag": "4.9001403", "bp_rp": "0.88797426", "radial_velocity": "36.06369", "eso": {"UVES": 2}}, {"source_id": "5511491979160542464", "ra": "109.73307694751215", "dec": "-45.296757794775885", "parallax": "21.498125562854774", "phot_g_mean_mag": "7.049887", "bp_rp": "0.67624426", "radial_velocity": "0.43695706", "eso": {}}, {"source_id": "6387813363653800448", "ra": "352.76417310752646", "dec": "-69.07728471062337", "parallax": "33.05302031607514", "phot_g_mean_mag": "6.9521275", "bp_rp": "0.7590103", "radial_velocity": "3.7308328", "eso": {"UVES": 1}}, {"source_id": "6403912515987392128", "ra": "322.70116838419693", "dec": "-62.167960089461324", "parallax": "26.431779122186445", "phot_g_mean_mag": "7.014876", "bp_rp": "0.74258757", "radial_velocity": "-14.564973", "eso": {}}, {"source_id": "6423511619991420544", "ra": "300.4696730945255", "dec": "-69.18855253653422", "parallax": "24.430728456681752", "phot_g_mean_mag": "7.9502497", "bp_rp": "0.8494601", "radial_velocity": "-31.090044", "eso": {}}, {"source_id": "6429896106058283904", "ra": "307.0978715334169", "dec": "-63.09657044181747", "parallax": "21.669686696861348", "phot_g_mean_mag": "8.685631", "bp_rp": "0.9615946", "radial_velocity": "25.719547", "eso": {"UVES": 2}}, {"source_id": "6477350546874615808", "ra": "313.7852018163744", "dec": "-52.12034558519428", "parallax": "23.032311358235045", "phot_g_mean_mag": "6.9388075", "bp_rp": "0.7265601", "radial_velocity": "-3.16084", "eso": {"UVES": 1}}, {"source_id": "6502570319958250624", "ra": "346.80756307163875", "dec": "-50.68747681693927", "parallax": "24.35830672369852", "phot_g_mean_mag": "6.9338927", "bp_rp": "0.6849885", "radial_velocity": "4.693217", "eso": {}}, {"source_id": "1740629509244710144", "ra": "320.2925262089694", "dec": "9.292444016923207", "parallax": "20.20969242280006", "phot_g_mean_mag": "8.543355", "bp_rp": "0.8332176", "radial_velocity": "-21.226437", "eso": {}}, {"source_id": "1789231256087445120", "ra": "317.4411936776199", "dec": "19.210834766088848", "parallax": "22.820628798016244", "phot_g_mean_mag": "6.8430963", "bp_rp": "0.6411462", "radial_velocity": "-24.675154", "eso": {}}, {"source_id": "2324934314938682368", "ra": "355.28539391624327", "dec": "-32.071121470691054", "parallax": "22.668810772142034", "phot_g_mean_mag": "6.9630904", "bp_rp": "0.8159213", "radial_velocity": "20.42327", "eso": {"UVES": 2}}, {"source_id": "2391838429257482496", "ra": "351.47072597016165", "dec": "-20.616817031255042", "parallax": "21.30738214222837", "phot_g_mean_mag": "7.607249", "bp_rp": "0.7663841", "radial_velocity": "12.301097", "eso": {"ESPRESSO": 25, "FEROS": 1}}, {"source_id": "2467122570235222016", "ra": "27.565381793586226", "dec": "-6.703917183586344", "parallax": "23.08562869517624", "phot_g_mean_mag": "6.9468107", "bp_rp": "0.7217188", "radial_velocity": "10.533768", "eso": {"UVES": 6}}, {"source_id": "2674471122993231104", "ra": "325.1166351970278", "dec": "-2.0180787493758565", "parallax": "22.080098598420317", "phot_g_mean_mag": "8.389251", "bp_rp": "0.841475", "radial_velocity": "-38.352913", "eso": {}}, {"source_id": "5035786314894538496", "ra": "24.742356171938876", "dec": "-27.25218776349065", "parallax": "21.406330687703793", "phot_g_mean_mag": "9.159069", "bp_rp": "0.9835844", "radial_velocity": "-1.2077761", "eso": {}}, {"source_id": "6534858166102087040", "ra": "353.01914761230285", "dec": "-43.589958638933", "parallax": "21.447518931393716", "phot_g_mean_mag": "7.8297815", "bp_rp": "0.7579422", "radial_velocity": "-0.42302173", "eso": {}}, {"source_id": "6587352489048147328", "ra": "331.27569495446465", "dec": "-35.182549888267836", "parallax": "20.249913425115988", "phot_g_mean_mag": "8.404505", "bp_rp": "0.9076123", "radial_velocity": "-10.627819", "eso": {}}, {"source_id": "6612887104710588928", "ra": "330.6372541896277", "dec": "-32.13364116459016", "parallax": "31.803763634001335", "phot_g_mean_mag": "6.5048943", "bp_rp": "0.66816187", "radial_velocity": "16.219034", "eso": {}}, {"source_id": "6810896745007524736", "ra": "324.7942172358937", "dec": "-27.30694714740008", "parallax": "37.88724879678957", "phot_g_mean_mag": "6.601714", "bp_rp": "0.777442", "radial_velocity": "-17.294664", "eso": {"UVES": 1}}, {"source_id": "297045096447719040", "ra": "21.30342043040337", "dec": "28.565994976122777", "parallax": "22.305579694833842", "phot_g_mean_mag": "6.999839", "bp_rp": "0.7193427", "radial_velocity": "19.049107", "eso": {}}, {"source_id": "2507226780113905536", "ra": "31.329721606844362", "dec": "0.32272649490362004", "parallax": "20.848328811769306", "phot_g_mean_mag": "8.510114", "bp_rp": "0.8671975", "radial_velocity": "22.93562", "eso": {}}, {"source_id": "2510183229442059776", "ra": "23.704539520316168", "dec": "0.9435621837224144", "parallax": "27.322685496787898", "phot_g_mean_mag": "6.7718153", "bp_rp": "0.695703", "radial_velocity": "-22.283981", "eso": {"UVES": 1}}, {"source_id": "2517585931994600448", "ra": "30.611537139961605", "dec": "2.815806321175882", "parallax": "20.78315203207239", "phot_g_mean_mag": "8.05505", "bp_rp": "0.8024764", "radial_velocity": "4.8025017", "eso": {}}, {"source_id": "2574020152996148096", "ra": "28.489500275001312", "dec": "10.612753926573765", "parallax": "24.674064887844484", "phot_g_mean_mag": "6.6512055", "bp_rp": "0.6361251", "radial_velocity": "-16.59479", "eso": {}}, {"source_id": "2815678171532956288", "ra": "346.3815911111212", "dec": "14.45207734419551", "parallax": "25.071796152109545", "phot_g_mean_mag": "6.9634137", "bp_rp": "0.7470479", "radial_velocity": "-48.814312", "eso": {}}, {"source_id": "2964414778784593920", "ra": "85.97091736181922", "dec": "-21.279674953232487", "parallax": "23.14633041991973", "phot_g_mean_mag": "6.972311", "bp_rp": "0.7048607", "radial_velocity": "42.403076", "eso": {"UVES": 1}}, {"source_id": "2968848525059696128", "ra": "82.26369713101353", "dec": "-19.143314134306532", "parallax": "21.023100702230526", "phot_g_mean_mag": "8.158772", "bp_rp": "0.8667183", "radial_velocity": "26.692368", "eso": {}}, {"source_id": "2972016080621222528", "ra": "85.47481878374633", "dec": "-15.631065457666654", "parallax": "33.24386421355412", "phot_g_mean_mag": "7.1791673", "bp_rp": "0.91499996", "radial_velocity": "59.115097", "eso": {}}, {"source_id": "2981583790287411200", "ra": "79.71210885930144", "dec": "-18.129780581089395", "parallax": "40.47848602908938", "phot_g_mean_mag": "5.815227", "bp_rp": "0.74172115", "radial_velocity": "40.425167", "eso": {"FEROS": 2, "UVES": 1}}, {"source_id": "2983530406904761344", "ra": "79.05969222963269", "dec": "-15.33933726608806", "parallax": "21.84532689239405", "phot_g_mean_mag": "9.093996", "bp_rp": "0.99848175", "radial_velocity": "24.001854", "eso": {}}, {"source_id": "3023711269067191296", "ra": "87.1458581131804", "dec": "-4.095664047742017", "parallax": "65.74459508507027", "phot_g_mean_mag": "5.805881", "bp_rp": "0.8163104", "radial_velocity": "31.419485", "eso": {"FEROS": 2}}, {"source_id": "3201262983701464448", "ra": "68.83985248125758", "dec": "-4.736374354970645", "parallax": "24.355563726661458", "phot_g_mean_mag": "7.7374825", "bp_rp": "0.7828727", "radial_velocity": "14.132894", "eso": {"FEROS": 1}}, {"source_id": "4875452570098748672", "ra": "75.04694815300678", "dec": "-31.702975313133518", "parallax": "23.97073781942721", "phot_g_mean_mag": "8.777669", "bp_rp": "0.97852993", "radial_velocity": "40.49884", "eso": {}}, {"source_id": "4887899527058717696", "ra": "56.83408427785181", "dec": "-29.901981835323472", "parallax": "26.295997446932706", "phot_g_mean_mag": "6.424757", "bp_rp": "0.65466595", "radial_velocity": "5.049399", "eso": {}}, {"source_id": "5538573431596682496", "ra": "117.2047073057088", "dec": "-38.20426194718153", "parallax": "23.55430686987127", "phot_g_mean_mag": "7.022316", "bp_rp": "0.6492133", "radial_velocity": "-6.6557074", "eso": {}}, {"source_id": "5559265690666327168", "ra": "105.99488080404734", "dec": "-43.609653717189374", "parallax": "58.617893811854074", "phot_g_mean_mag": "6.653335", "bp_rp": "0.9644823", "radial_velocity": "88.55205", "eso": {"FEROS": 2, "UVES": 8}}, {"source_id": "44197073198840064", "ra": "54.01177612515252", "dec": "16.46611373837813", "parallax": "23.239619559173992", "phot_g_mean_mag": "7.5167327", "bp_rp": "0.74412155", "radial_velocity": "-28.441582", "eso": {}}, {"source_id": "48203487411427456", "ra": "65.05456696075474", "dec": "19.233321027772863", "parallax": "22.020045526274", "phot_g_mean_mag": "7.3269024", "bp_rp": "0.71302414", "radial_velocity": "38.201855", "eso": {"UVES": 7}}, {"source_id": "150907081855211520", "ra": "67.81836951648343", "dec": "25.030175463831036", "parallax": "27.40420869704337", "phot_g_mean_mag": "8.32606", "bp_rp": "0.9768996", "radial_velocity": "-8.82274", "eso": {}}, {"source_id": "617295828180470528", "ra": "142.59846660997076", "dec": "12.939274106909668", "parallax": "20.453618571833005", "phot_g_mean_mag": "7.998016", "bp_rp": "0.7662549", "radial_velocity": "18.684235", "eso": {"FEROS": 1}}, {"source_id": "624684408880100992", "ra": "154.932943049452", "dec": "19.469961355767943", "parallax": "47.12548973212048", "phot_g_mean_mag": "4.6571474", "bp_rp": "0.6203766", "radial_velocity": "6.4598227", "eso": {}}, {"source_id": "1174513649529573760", "ra": "221.56575302193778", "dec": "9.645623724957424", "parallax": "22.77035126885529", "phot_g_mean_mag": "8.224225", "bp_rp": "0.7328825", "radial_velocity": "", "eso": {}}, {"source_id": "1226031369927927296", "ra": "215.38420538271077", "dec": "12.765474815864831", "parallax": "21.854144355507696", "phot_g_mean_mag": "8.493761", "bp_rp": "0.9238181", "radial_velocity": "-21.252747", "eso": {}}, {"source_id": "1227659299972032128", "ra": "216.49137239120384", "dec": "13.432699252754725", "parallax": "28.849423355651346", "phot_g_mean_mag": "7.868859", "bp_rp": "0.9063239", "radial_velocity": "0.560612", "eso": {}}, {"source_id": "3036768068439044608", "ra": "116.9858447274778", "dec": "-12.192360424465246", "parallax": "34.72213854647776", "phot_g_mean_mag": "5.5664444", "bp_rp": "0.669652", "radial_velocity": "", "eso": {}}, {"source_id": "3040072208248970496", "ra": "116.00667233817482", "dec": "-11.316768501293275", "parallax": "20.11339557502721", "phot_g_mean_mag": "7.8988533", "bp_rp": "0.7534828", "radial_velocity": "45.03126", "eso": {}}, {"source_id": "3061833330071395328", "ra": "110.53875417741305", "dec": "-1.861591668820007", "parallax": "20.79197449126707", "phot_g_mean_mag": "8.555141", "bp_rp": "0.93311596", "radial_velocity": "98.99123", "eso": {}}, {"source_id": "3311221224583178368", "ra": "65.68458418346766", "dec": "15.056034383369543", "parallax": "21.18773295114552", "phot_g_mean_mag": "7.1384563", "bp_rp": "0.75829554", "radial_velocity": "", "eso": {}}, {"source_id": "3311221224584455936", "ra": "65.68440170253284", "dec": "15.056327740576604", "parallax": "21.026355477142264", "phot_g_mean_mag": "8.366908", "bp_rp": "0.71623135", "radial_velocity": "", "eso": {}}, {"source_id": "3356926033168952576", "ra": "98.69262895125712", "dec": "15.077205454802833", "parallax": "21.23899877856468", "phot_g_mean_mag": "8.186449", "bp_rp": "0.870481", "radial_velocity": "46.1258", "eso": {}}, {"source_id": "3405113740864365440", "ra": "72.38425479124014", "dec": "15.888629620259284", "parallax": "20.62442127241635", "phot_g_mean_mag": "7.5957522", "bp_rp": "0.72790194", "radial_velocity": "41.444885", "eso": {"UVES": 2}}, {"source_id": "3526044321815096832", "ra": "193.42529853967025", "dec": "-13.644680799503648", "parallax": "20.113219594394174", "phot_g_mean_mag": "8.380721", "bp_rp": "0.8177514", "radial_velocity": "-16.87312", "eso": {}}, {"source_id": "3538141457982396928", "ra": "170.21473633538795", "dec": "-23.218130962142226", "parallax": "23.720584713308806", "phot_g_mean_mag": "7.8414516", "bp_rp": "0.82913303", "radial_velocity": "4.251658", "eso": {"ESPRESSO": 28, "FEROS": 2}}, {"source_id": "3550081879381593728", "ra": "161.87921047465653", "dec": "-22.348157775829122", "parallax": "29.831052277476214", "phot_g_mean_mag": "8.166853", "bp_rp": "0.9782748", "radial_velocity": "23.75881", "eso": {"ESPRESSO": 5}}, {"source_id": "3618910139048607744", "ra": "208.74275853928984", "dec": "-8.059183116677085", "parallax": "28.93455690363363", "phot_g_mean_mag": "7.2261753", "bp_rp": "0.76638556", "radial_velocity": "-14.147132", "eso": {}}, {"source_id": "3625243497823510400", "ra": "198.87833422000728", "dec": "-8.054917656399052", "parallax": "24.534479425487017", "phot_g_mean_mag": "7.8936963", "bp_rp": "0.871788", "radial_velocity": "13.3422365", "eso": {}}, {"source_id": "3727952589825393408", "ra": "206.34579400510222", "dec": "11.47923700146287", "parallax": "21.367093182703066", "phot_g_mean_mag": "8.157963", "bp_rp": "0.80101824", "radial_velocity": "-2.3271163", "eso": {}}, {"source_id": "3773112865272176512", "ra": "151.11219545084668", "dec": "-7.219299190919007", "parallax": "31.94733356872701", "phot_g_mean_mag": "7.3280325", "bp_rp": "0.85521793", "radial_velocity": "-0.0431907", "eso": {}}, {"source_id": "3802549437248150656", "ra": "160.70213301908643", "dec": "-2.1847481998438676", "parallax": "28.946625492305564", "phot_g_mean_mag": "7.15472", "bp_rp": "0.8416276", "radial_velocity": "-4.4796314", "eso": {"FEROS": 1, "UVES": 6}}, {"source_id": "3812637589576358400", "ra": "170.96507677479138", "dec": "3.6184325242527464", "parallax": "22.464424488712286", "phot_g_mean_mag": "8.597449", "bp_rp": "0.95347786", "radial_velocity": "4.2338696", "eso": {}}, {"source_id": "3895404602962524544", "ra": "181.73654497747202", "dec": "5.802336594471477", "parallax": "22.07823539108304", "phot_g_mean_mag": "8.435324", "bp_rp": "0.9354844", "radial_velocity": "2.999969", "eso": {}}, {"source_id": "3928219218257048192", "ra": "192.1574943436669", "dec": "12.68899885275121", "parallax": "20.73993004588281", "phot_g_mean_mag": "9.103827", "bp_rp": "0.94792175", "radial_velocity": "", "eso": {}}, {"source_id": "3965063921622777856", "ra": "169.77689155575584", "dec": "13.390753697703202", "parallax": "21.173489978192812", "phot_g_mean_mag": "7.00634", "bp_rp": "0.6460972", "radial_velocity": "8.842128", "eso": {"UVES": 2}}, {"source_id": "4010179460691154816", "ra": "184.87199368317783", "dec": "28.156361785537737", "parallax": "20.903912601308743", "phot_g_mean_mag": "6.2567005", "bp_rp": "0.67038107", "radial_velocity": "-9.406576", "eso": {}}, {"source_id": "5445414216548603520", "ra": "154.64544711978695", "dec": "-35.76581129680565", "parallax": "21.37466037022711", "phot_g_mean_mag": "7.4583716", "bp_rp": "0.8298564", "radial_velocity": "", "eso": {}}, {"source_id": "5468409364073657856", "ra": "159.0184347622677", "dec": "-26.675613642214223", "parallax": "23.0878013088207", "phot_g_mean_mag": "7.5976515", "bp_rp": "0.8657093", "radial_velocity": "", "eso": {}}, {"source_id": "5627865698597494144", "ra": "136.68284768513982", "dec": "-33.56861187150024", "parallax": "26.90953485837875", "phot_g_mean_mag": "8.231934", "bp_rp": "0.94479895", "radial_velocity": "-2.7459226", "eso": {}}, {"source_id": "5662753236899692032", "ra": "143.6935320422706", "dec": "-24.192985974135077", "parallax": "20.80736898294617", "phot_g_mean_mag": "8.877285", "bp_rp": "0.9555578", "radial_velocity": "16.7923", "eso": {}}, {"source_id": "5689497654653956096", "ra": "141.6786491932162", "dec": "-14.491325503070241", "parallax": "25.548354109813648", "phot_g_mean_mag": "7.743058", "bp_rp": "0.8465929", "radial_velocity": "-16.690018", "eso": {}}, {"source_id": "5726261784439754624", "ra": "120.52176313573466", "dec": "-12.805609162718142", "parallax": "22.3685722086897", "phot_g_mean_mag": "7.8889694", "bp_rp": "0.87095785", "radial_velocity": "26.00014", "eso": {}}, {"source_id": "5761566656125168512", "ra": "130.3275692139166", "dec": "-4.809105171589613", "parallax": "28.729462219251342", "phot_g_mean_mag": "7.4108405", "bp_rp": "0.8917637", "radial_velocity": "-17.067154", "eso": {}}, {"source_id": "5957473716655911680", "ra": "265.37547754122727", "dec": "-41.80164389385772", "parallax": "21.072091875716904", "phot_g_mean_mag": "8.78881", "bp_rp": "0.99372005", "radial_velocity": "", "eso": {}}, {"source_id": "6141742283401003264", "ra": "198.01111684680066", "dec": "-37.80281712584803", "parallax": "48.869144296726084", "phot_g_mean_mag": "4.662345", "bp_rp": "0.87145185", "radial_velocity": "-13.028642", "eso": {"ESPRESSO": 25, "FEROS": 8, "UVES": 4}}, {"source_id": "6145755844441101440", "ra": "189.02657234550776", "dec": "-42.852573366694614", "parallax": "20.87289427069737", "phot_g_mean_mag": "7.720592", "bp_rp": "0.827775", "radial_velocity": "45.120205", "eso": {}}, {"source_id": "6153706477443518976", "ra": "190.92448505989395", "dec": "-37.70907037203689", "parallax": "36.04760319002567", "phot_g_mean_mag": "7.3658967", "bp_rp": "0.8381729", "radial_velocity": "-26.311434", "eso": {"FEROS": 2}}, {"source_id": "6203549439773714048", "ra": "221.59420031621542", "dec": "-33.766228692415375", "parallax": "23.428637974638093", "phot_g_mean_mag": "8.270592", "bp_rp": "0.84989977", "radial_velocity": "8.900314", "eso": {}}, {"source_id": "5975510968694657536", "ra": "259.0894075135263", "dec": "-35.751821404392324", "parallax": "31.798406057553194", "phot_g_mean_mag": "5.9752173", "bp_rp": "0.64214945", "radial_velocity": "-0.75599897", "eso": {}}, {"source_id": "4409032079673958912", "ra": "238.97685785503865", "dec": "-2.1630129645052225", "parallax": "26.077140530791716", "phot_g_mean_mag": "8.414299", "bp_rp": "0.9895334", "radial_velocity": "", "eso": {}}, {"source_id": "6247290417511847680", "ra": "240.563234783593", "dec": "-19.45214921524376", "parallax": "23.805631383192953", "phot_g_mean_mag": "8.078623", "bp_rp": "0.8814635", "radial_velocity": "-21.703243", "eso": {}}, {"source_id": "4354950641755249024", "ra": "250.28410897055963", "dec": "-2.8592548529822217", "parallax": "32.92106636726074", "phot_g_mean_mag": "7.0574875", "bp_rp": "0.81927633", "radial_velocity": "-40.217262", "eso": {}}, {"source_id": "4048023001773378944", "ra": "276.11067518282204", "dec": "-29.53276561044838", "parallax": "20.83301166608526", "phot_g_mean_mag": "7.92099", "bp_rp": "0.7662053", "radial_velocity": "-46.131138", "eso": {}}, {"source_id": "4090011426635298688", "ra": "278.1896328538882", "dec": "-22.13821135013693", "parallax": "32.641954956934065", "phot_g_mean_mag": "7.6686435", "bp_rp": "0.97262", "radial_velocity": "-22.896866", "eso": {}}, {"source_id": "6746284390882038656", "ra": "292.4190765613429", "dec": "-30.798923056047183", "parallax": "27.990893706518477", "phot_g_mean_mag": "7.0031238", "bp_rp": "0.7489443", "radial_velocity": "-43.202244", "eso": {}}, {"source_id": "4182958848189670016", "ra": "294.39290982705467", "dec": "-14.302449709836804", "parallax": "31.577043537278104", "phot_g_mean_mag": "5.3356085", "bp_rp": "0.66422033", "radial_velocity": "-15.259348", "eso": {}}, {"source_id": "1167838720595878400", "ra": "227.0854969603864", "dec": "10.113793066957605", "parallax": "20.068368591483576", "phot_g_mean_mag": "7.23868", "bp_rp": "0.7034383", "radial_velocity": "4.367739", "eso": {}}, {"source_id": "4279461609366875520", "ra": "282.9517338565243", "dec": "3.0303978259599234", "parallax": "36.36458827060647", "phot_g_mean_mag": "7.348336", "bp_rp": "0.85575294", "radial_velocity": "-17.47437", "eso": {}}, {"source_id": "4495025949234959360", "ra": "270.2572311953209", "dec": "11.067717844774746", "parallax": "20.891172516512253", "phot_g_mean_mag": "8.700962", "bp_rp": "0.9088793", "radial_velocity": "-3.2052364", "eso": {}}, {"source_id": "4508601275714721152", "ra": "278.0441162883834", "dec": "13.737109206797639", "parallax": "38.34479580922333", "phot_g_mean_mag": "7.034855", "bp_rp": "0.84905624", "radial_velocity": "-46.301792", "eso": {"FEROS": 1}}, {"source_id": "2023112497641814528", "ra": "291.35645874334966", "dec": "24.909971274770594", "parallax": "35.3331197037197", "phot_g_mean_mag": "6.065295", "bp_rp": "0.6918497", "radial_velocity": "-2.1398625", "eso": {}}, {"source_id": "4316661180144070784", "ra": "292.0590479767732", "dec": "14.001715407744024", "parallax": "23.551356425834385", "phot_g_mean_mag": "8.8143425", "bp_rp": "0.95274925", "radial_velocity": "4.833236", "eso": {}}, {"source_id": "1762987489783462784", "ra": "311.55622618326237", "dec": "15.90928843724342", "parallax": "26.600157032210088", "phot_g_mean_mag": "8.114929", "bp_rp": "0.9327483", "radial_velocity": "", "eso": {}}, {"source_id": "1821708351374312064", "ra": "301.02411840852204", "dec": "17.068323509168412", "parallax": "56.26925138931947", "phot_g_mean_mag": "5.645246", "bp_rp": "0.7685051", "radial_velocity": "5.1396985", "eso": {}}, {"source_id": "2029433521248546304", "ra": "300.9093570564763", "dec": "29.894467940509667", "parallax": "62.48650893182535", "phot_g_mean_mag": "5.552787", "bp_rp": "0.9080596", "radial_velocity": "-45.338062", "eso": {"UVES": 10}}, {"source_id": "5935496128485727616", "ra": "244.22111415643715", "dec": "-49.85689431213609", "parallax": "34.43329826022101", "phot_g_mean_mag": "7.4407506", "bp_rp": "0.9155631", "radial_velocity": "10.97215", "eso": {}}, {"source_id": "5848710168188419456", "ra": "223.54167776075147", "dec": "-66.42085581265954", "parallax": "25.416937562977036", "phot_g_mean_mag": "7.8471003", "bp_rp": "0.85059357", "radial_velocity": "", "eso": {}}, {"source_id": "5343737011919753216", "ra": "178.75756896920652", "dec": "-56.09792237446026", "parallax": "32.232014826842466", "phot_g_mean_mag": "7.556628", "bp_rp": "0.8462353", "radial_velocity": "54.553432", "eso": {}}, {"source_id": "5307856820759450880", "ra": "145.66759585837522", "dec": "-55.83134492554561", "parallax": "22.959517673345786", "phot_g_mean_mag": "7.9112887", "bp_rp": "0.8093519", "radial_velocity": "", "eso": {}}, {"source_id": "5622548769603637888", "ra": "134.08174908903587", "dec": "-37.12244252422235", "parallax": "25.44400631480246", "phot_g_mean_mag": "6.75366", "bp_rp": "0.785048", "radial_velocity": "51.706806", "eso": {}}, {"source_id": "4621382134733200000", "ra": "83.91331901185316", "dec": "-81.61174027619421", "parallax": "20.78583410127484", "phot_g_mean_mag": "7.0162234", "bp_rp": "0.6251936", "radial_velocity": "31.635834", "eso": {}}, {"source_id": "4768170579173552896", "ra": "86.61690961169748", "dec": "-53.21994676836762", "parallax": "34.82881071488006", "phot_g_mean_mag": "6.490026", "bp_rp": "0.7474055", "radial_velocity": "-5.5254197", "eso": {"ESPRESSO": 2, "UVES": 2}}, {"source_id": "4772547941122028672", "ra": "79.8423924881069", "dec": "-50.60495484354134", "parallax": "27.869370365417826", "phot_g_mean_mag": "5.3059335", "bp_rp": "0.676816", "radial_velocity": "43.952984", "eso": {"FEROS": 2, "UVES": 6}}, {"source_id": "4912334832955579904", "ra": "23.926038615868308", "dec": "-55.23715025086422", "parallax": "20.805407160110718", "phot_g_mean_mag": "7.7198086", "bp_rp": "0.7221217", "radial_velocity": "4.7432566", "eso": {}}, {"source_id": "4915195521693272320", "ra": "18.93862323169601", "dec": "-53.715559872661025", "parallax": "20.395361498787906", "phot_g_mean_mag": "8.108527", "bp_rp": "0.79899025", "radial_velocity": "-0.9672619", "eso": {"UVES": 2}}, {"source_id": "5292834403845151488", "ra": "115.64978930160365", "dec": "-59.29672308219142", "parallax": "30.435571409741453", "phot_g_mean_mag": "7.041055", "bp_rp": "0.7851162", "radial_velocity": "17.475773", "eso": {"UVES": 2}}, {"source_id": "6358928609077405568", "ra": "328.6852845032745", "dec": "-73.44042914624846", "parallax": "26.087310337158915", "phot_g_mean_mag": "7.270075", "bp_rp": "0.85355043", "radial_velocity": "6.521708", "eso": {"UVES": 4}}, {"source_id": "6644606950022464640", "ra": "289.5409399454207", "dec": "-53.38744981657575", "parallax": "21.976785115503596", "phot_g_mean_mag": "6.2412777", "bp_rp": "0.66656303", "radial_velocity": "-22.356125", "eso": {}}, {"source_id": "6679930616490608000", "ra": "307.9696728740947", "dec": "-40.90114273727386", "parallax": "24.04074265662246", "phot_g_mean_mag": "8.181362", "bp_rp": "0.8942132", "radial_velocity": "", "eso": {}}, {"source_id": "6708050317144487552", "ra": "275.0479199474759", "dec": "-45.92293379022071", "parallax": "20.784491643201704", "phot_g_mean_mag": "7.161172", "bp_rp": "0.9003048", "radial_velocity": "24.082157", "eso": {}}, {"source_id": "1772187382746856320", "ra": "326.1316036805559", "dec": "14.771436702113272", "parallax": "55.14799955273645", "phot_g_mean_mag": "5.819592", "bp_rp": "0.7609072", "radial_velocity": "-16.93806", "eso": {"FEROS": 2}}, {"source_id": "2390702771185162112", "ra": "355.1591589910273", "dec": "-18.98908001993059", "parallax": "38.10395679499556", "phot_g_mean_mag": "7.4022975", "bp_rp": "0.90528107", "radial_velocity": "10.281637", "eso": {}}, {"source_id": "2470272812780609280", "ra": "20.134955655159803", "dec": "-11.46831072996997", "parallax": "28.32736548023202", "phot_g_mean_mag": "8.234445", "bp_rp": "0.9624119", "radial_velocity": "10.206307", "eso": {"FEROS": 4, "UVES": 10}}, {"source_id": "2525514785221197696", "ra": "12.796367991907957", "dec": "-5.039807177766975", "parallax": "44.59124455306682", "phot_g_mean_mag": "6.813367", "bp_rp": "0.83836794", "radial_velocity": "-3.826414", "eso": {}}, {"source_id": "2598528194164298112", "ra": "339.8952817279898", "dec": "-12.615824313619543", "parallax": "27.131895099100916", "phot_g_mean_mag": "8.297706", "bp_rp": "0.9571514", "radial_velocity": "", "eso": {}}, {"source_id": "2610488514148352000", "ra": "343.960714367174", "dec": "-7.822825726861981", "parallax": "27.76354435621058", "phot_g_mean_mag": "7.8516903", "bp_rp": "0.83273506", "radial_velocity": "-27.811497", "eso": {}}, {"source_id": "2624387200116495872", "ra": "341.9581161040202", "dec": "-4.230435417662797", "parallax": "29.862310154438987", "phot_g_mean_mag": "7.13456", "bp_rp": "0.9512944", "radial_velocity": "", "eso": {}}, {"source_id": "4995853014646189696", "ra": "1.4695196103890231", "dec": "-41.753408063428445", "parallax": "25.753415493475273", "phot_g_mean_mag": "7.395556", "bp_rp": "0.75072956", "radial_velocity": "2.046356", "eso": {"FEROS": 4, "UVES": 2}}, {"source_id": "5067926345444283648", "ra": "35.81018828054465", "dec": "-29.869743060011025", "parallax": "24.620660164341526", "phot_g_mean_mag": "7.4197183", "bp_rp": "0.8002105", "radial_velocity": "", "eso": {}}, {"source_id": "6541802578463122688", "ra": "346.6628694344627", "dec": "-43.50383337518446", "parallax": "24.907092030119465", "phot_g_mean_mag": "7.5365047", "bp_rp": "0.77848244", "radial_velocity": "15.388988", "eso": {}}, {"source_id": "6832155218215202944", "ra": "318.7405162913092", "dec": "-20.789745174219902", "parallax": "21.939201623652195", "phot_g_mean_mag": "7.9224863", "bp_rp": "0.8483243", "radial_velocity": "14.6255045", "eso": {"ESPRESSO": 25}}, {"source_id": "21297716324578176", "ra": "44.25235953483732", "dec": "10.161704899155266", "parallax": "23.054775201550914", "phot_g_mean_mag": "7.7592926", "bp_rp": "0.7548194", "radial_velocity": "21.433392", "eso": {}}, {"source_id": "84625630419434496", "ra": "41.863954434847564", "dec": "19.37173035271394", "parallax": "30.244341121965846", "phot_g_mean_mag": "7.880917", "bp_rp": "0.9106846", "radial_velocity": "", "eso": {"UVES": 6}}, {"source_id": "290368930563348480", "ra": "22.45248217070758", "dec": "23.690223902920003", "parallax": "21.238187794311145", "phot_g_mean_mag": "7.482495", "bp_rp": "0.74358225", "radial_velocity": "-50.98403", "eso": {}}, {"source_id": "301756263254807936", "ra": "25.422108699628513", "dec": "27.677011768200945", "parallax": "21.25886487070966", "phot_g_mean_mag": "8.506802", "bp_rp": "0.9137349", "radial_velocity": "10.970796", "eso": {}}, {"source_id": "2739059700184753280", "ra": "0.6968385134155948", "dec": "2.129737830868965", "parallax": "23.37127366746855", "phot_g_mean_mag": "7.213268", "bp_rp": "0.7991829", "radial_velocity": "", "eso": {}}, {"source_id": "2891484756626594176", "ra": "96.31752364201633", "dec": "-34.37854135666961", "parallax": "20.164786947151523", "phot_g_mean_mag": "8.633298", "bp_rp": "0.887455", "radial_velocity": "-3.152245", "eso": {}}, {"source_id": "2924339469735490560", "ra": "95.74027679879319", "dec": "-24.556013384224993", "parallax": "33.98228753702382", "phot_g_mean_mag": "7.2105713", "bp_rp": "0.8362403", "radial_velocity": "14.658501", "eso": {}}, {"source_id": "3050309864100076544", "ra": "103.43646771767924", "dec": "-9.51560341796801", "parallax": "25.746435065598185", "phot_g_mean_mag": "6.9226313", "bp_rp": "0.70805216", "radial_velocity": "-4.4696183", "eso": {}}, {"source_id": "4824866896260056448", "ra": "73.51821774797449", "dec": "-35.40381777054113", "parallax": "38.81961578358068", "phot_g_mean_mag": "7.401483", "bp_rp": "0.9562068", "radial_velocity": "29.29782", "eso": {}}, {"source_id": "5640565607657897728", "ra": "128.20875984158528", "dec": "-31.497462976881874", "parallax": "82.20799300166873", "phot_g_mean_mag": "6.168385", "bp_rp": "0.97665834", "radial_velocity": "14.672009", "eso": {"ESPRESSO": 99, "FEROS": 117}}, {"source_id": "10608573516849536", "ra": "49.38734080972668", "dec": "7.690126225598939", "parallax": "21.226136807760074", "phot_g_mean_mag": "7.6169553", "bp_rp": "0.7674012", "radial_velocity": "32.06776", "eso": {"UVES": 2}}, {"source_id": "49005581144118784", "ra": "64.74209416547012", "dec": "19.90653885437164", "parallax": "21.446669126443478", "phot_g_mean_mag": "8.424586", "bp_rp": "0.89792156", "radial_velocity": "38.421387", "eso": {"UVES": 8}}, {"source_id": "69443337640657536", "ra": "54.29716747640482", "dec": "25.98989430700792", "parallax": "27.32045508013459", "phot_g_mean_mag": "7.04856", "bp_rp": "0.92237043", "radial_velocity": "", "eso": {}}, {"source_id": "648998734141447296", "ra": "123.88744067472017", "dec": "11.429905767179273", "parallax": "25.20058425169103", "phot_g_mean_mag": "7.552212", "bp_rp": "0.87229824", "radial_velocity": "20.524042", "eso": {"ESPRESSO": 3, "FEROS": 1}}, {"source_id": "653027276027556224", "ra": "120.86914726618998", "dec": "12.181056192499444", "parallax": "22.441626322647462", "phot_g_mean_mag": "6.6323094", "bp_rp": "0.67645454", "radial_velocity": "40.442127", "eso": {}}, {"source_id": "678539416123249280", "ra": "129.19904563326574", "dec": "24.47529904848684", "parallax": "20.154835843839383", "phot_g_mean_mag": "8.984213", "bp_rp": "0.9140444", "radial_velocity": "-22.923237", "eso": {}}, {"source_id": "691401846741926400", "ra": "134.7074760015837", "dec": "25.40436008176898", "parallax": "26.029556177498417", "phot_g_mean_mag": "7.328776", "bp_rp": "0.83591795", "radial_velocity": "-12.241792", "eso": {}}, {"source_id": "727103367251735040", "ra": "154.2368419853769", "dec": "25.85940189350219", "parallax": "26.72104831321283", "phot_g_mean_mag": "7.4279194", "bp_rp": "0.7749796", "radial_velocity": "-14.189037", "eso": {"FEROS": 2}}, {"source_id": "1265976524286377856", "ra": "222.5665811155293", "dec": "23.91198355603319", "parallax": "54.95020867828627", "phot_g_mean_mag": "5.729347", "bp_rp": "0.7586899", "radial_velocity": "-2.6256073", "eso": {}}, {"source_id": "3066710282611675776", "ra": "126.14494794137273", "dec": "-3.7513579180676873", "parallax": "36.96743538245016", "phot_g_mean_mag": "5.4688787", "bp_rp": "0.6485081", "radial_velocity": "97.622246", "eso": {}}, {"source_id": "3120955444685055488", "ra": "97.98416441532483", "dec": "1.9177847816188882", "parallax": "22.78966428027903", "phot_g_mean_mag": "8.245974", "bp_rp": "0.8917198", "radial_velocity": "-47.449207", "eso": {}}, {"source_id": "3147159418113524992", "ra": "119.97302044815807", "dec": "9.898027460128787", "parallax": "29.3557476881962", "phot_g_mean_mag": "7.8203917", "bp_rp": "0.8404069", "radial_velocity": "-32.851093", "eso": {"FEROS": 1}}, {"source_id": "3241699825915136768", "ra": "77.44154277233793", "dec": "7.181656490227621", "parallax": "22.628575488275803", "phot_g_mean_mag": "7.292102", "bp_rp": "0.64716005", "radial_velocity": "35.003338", "eso": {}}, {"source_id": "3281945898565701504", "ra": "71.20018360790853", "dec": "5.2892330587075564", "parallax": "25.524998255033324", "phot_g_mean_mag": "8.564669", "bp_rp": "0.9782953", "radial_velocity": "-18.321636", "eso": {}}, {"source_id": "3300934223858467072", "ra": "63.6436281045371", "dec": "10.701362037070773", "parallax": "22.169762571635413", "phot_g_mean_mag": "6.98168", "bp_rp": "0.6610131", "radial_velocity": "38.199852", "eso": {"UVES": 2}}, {"source_id": "3319126988068404096", "ra": "93.00324485733235", "dec": "6.781938865425926", "parallax": "40.97643657860778", "phot_g_mean_mag": "6.6985183", "bp_rp": "0.8130369", "radial_velocity": "-53.48095", "eso": {}}, {"source_id": "3345374529646941824", "ra": "91.24304326738815", "dec": "14.387604483672783", "parallax": "24.260052297341208", "phot_g_mean_mag": "6.6147676", "bp_rp": "0.6320195", "radial_velocity": "39.941063", "eso": {"FEROS": 2}}, {"source_id": "3368214650329888512", "ra": "106.56956415498743", "dec": "22.683136819426178", "parallax": "23.238111561292616", "phot_g_mean_mag": "8.092568", "bp_rp": "0.8675761", "radial_velocity": "42.73952", "eso": {}}, {"source_id": "3482326708703712896", "ra": "173.0682516830418", "dec": "-29.260378098702937", "parallax": "35.603723295006", "phot_g_mean_mag": "5.5212674", "bp_rp": "0.7056055", "radial_velocity": "5.61569", "eso": {"UVES": 4}}, {"source_id": "3557498291468746240", "ra": "163.36362447847472", "dec": "-15.820355586900487", "parallax": "24.395158789660318", "phot_g_mean_mag": "8.000333", "bp_rp": "0.9161897", "radial_velocity": "27.484793", "eso": {"FEROS": 1}}, {"source_id": "3639760521643499776", "ra": "214.50422536374725", "dec": "-7.543444637371622", "parallax": "30.34916863806619", "phot_g_mean_mag": "6.297372", "bp_rp": "0.87638426", "radial_velocity": "-12.3908415", "eso": {"FEROS": 13, "UVES": 6}}, {"source_id": "3669380918219069952", "ra": "214.9347317280177", "dec": "4.006133316371338", "parallax": "22.545163352900428", "phot_g_mean_mag": "8.021257", "bp_rp": "0.7919493", "radial_velocity": "38.83736", "eso": {}}, {"source_id": "3678154883570052224", "ra": "194.93968385018644", "dec": "-4.4304194732202244", "parallax": "26.95464709592339", "phot_g_mean_mag": "8.487825", "bp_rp": "0.98047924", "radial_velocity": "-11.137696", "eso": {}}, {"source_id": "3750995604764854400", "ra": "160.5565765491326", "dec": "-13.788479094517433", "parallax": "41.90817825907493", "phot_g_mean_mag": "6.6370964", "bp_rp": "0.79602385", "radial_velocity": "-17.933577", "eso": {"UVES": 2}}, {"source_id": "3790864411783833600", "ra": "169.84334231300468", "dec": "-1.6555742134399207", "parallax": "20.309347547957238", "phot_g_mean_mag": "6.9371557", "bp_rp": "0.6630235", "radial_velocity": "19.766453", "eso": {}}, {"source_id": "3800722186362025472", "ra": "175.12920647656517", "dec": "3.6537526594655234", "parallax": "22.688464961659285", "phot_g_mean_mag": "8.323555", "bp_rp": "0.92401314", "radial_velocity": "-1.5787697", "eso": {}}, {"source_id": "3842095911266162432", "ra": "137.37569010016014", "dec": "-0.39924793103261513", "parallax": "28.609344006397677", "phot_g_mean_mag": "8.425377", "bp_rp": "0.9672785", "radial_velocity": "5.799847", "eso": {}}, {"source_id": "3864889238282258304", "ra": "164.88088824919384", "dec": "7.219127378503727", "parallax": "20.612820521610782", "phot_g_mean_mag": "8.063232", "bp_rp": "0.8061843", "radial_velocity": "35.627567", "eso": {"UVES": 2}}, {"source_id": "3883317121883053184", "ra": "155.5396277249419", "dec": "11.308799924326307", "parallax": "36.92804535944156", "phot_g_mean_mag": "7.5830226", "bp_rp": "0.9577656", "radial_velocity": "-13.675358", "eso": {"FEROS": 1}}, {"source_id": "3925951819121813632", "ra": "181.2374799704581", "dec": "17.475706766885192", "parallax": "26.569170383210736", "phot_g_mean_mag": "8.452601", "bp_rp": "0.9638419", "radial_velocity": "10.11779", "eso": {}}, {"source_id": "3945637956342549888", "ra": "185.98658317027625", "dec": "16.416318122580012", "parallax": "20.847423395776843", "phot_g_mean_mag": "8.708704", "bp_rp": "0.98345375", "radial_velocity": "54.868626", "eso": {}}, {"source_id": "5434450024036320768", "ra": "150.02345487174748", "dec": "-36.042969286077174", "parallax": "21.0778405338288", "phot_g_mean_mag": "7.2346277", "bp_rp": "0.74165297", "radial_velocity": "2.914057", "eso": {"UVES": 6}}, {"source_id": "5446332686714616448", "ra": "152.37992323415938", "dec": "-35.85669552386095", "parallax": "31.513676682754916", "phot_g_mean_mag": "6.0107317", "bp_rp": "0.80303", "radial_velocity": "35.962257", "eso": {"FEROS": 1}}, {"source_id": "5633840341697866368", "ra": "142.9969057102403", "dec": "-28.227399000206475", "parallax": "21.706438013455305", "phot_g_mean_mag": "8.2525", "bp_rp": "0.87648964", "radial_velocity": "-0.31428057", "eso": {}}, {"source_id": "5674217260526161152", "ra": "152.2839369006514", "dec": "-15.495374748189729", "parallax": "27.999808638927824", "phot_g_mean_mag": "7.3816056", "bp_rp": "0.8124728", "radial_velocity": "-23.49507", "eso": {}}, {"source_id": "5674636135802748288", "ra": "140.36091850831266", "dec": "-23.78621407454248", "parallax": "20.34740522299114", "phot_g_mean_mag": "8.652623", "bp_rp": "0.8956299", "radial_velocity": "-8.242592", "eso": {}}, {"source_id": "6163964031871884672", "ra": "207.22654259480674", "dec": "-35.70499090650605", "parallax": "33.33783953620013", "phot_g_mean_mag": "6.454297", "bp_rp": "0.7045336", "radial_velocity": "3.3575354", "eso": {"UVES": 2}}, {"source_id": "6189254689097655552", "ra": "202.12616564429024", "dec": "-27.390902644845443", "parallax": "27.35950567134312", "phot_g_mean_mag": "7.055168", "bp_rp": "0.7605734", "radial_velocity": "-3.8737981", "eso": {"ESPRESSO": 26, "UVES": 2}}, {"source_id": "4119381718681481216", "ra": "269.36142560048904", "dec": "-18.94113978896374", "parallax": "26.866553870122008", "phot_g_mean_mag": "8.04263", "bp_rp": "0.8985634", "radial_velocity": "11.794262", "eso": {}}, {"source_id": "4356054757585316992", "ra": "245.63599026173608", "dec": "-4.250032851997464", "parallax": "37.15996717652195", "phot_g_mean_mag": "7.161991", "bp_rp": "0.88270044", "radial_velocity": "-20.279348", "eso": {}}, {"source_id": "4365099851340249600", "ra": "257.22692418720084", "dec": "-3.883707829938668", "parallax": "27.97851606454915", "phot_g_mean_mag": "6.1958447", "bp_rp": "0.8406596", "radial_velocity": "13.741619", "eso": {"UVES": 4}}, {"source_id": "6757523633110174464", "ra": "287.13242594780985", "dec": "-30.972909846926296", "parallax": "34.275984788577276", "phot_g_mean_mag": "7.6968846", "bp_rp": "0.92681456", "radial_velocity": "-25.863817", "eso": {}}, {"source_id": "1209182041427374080", "ra": "230.6940612028796", "dec": "18.919305187888703", "parallax": "50.74538571235775", "phot_g_mean_mag": "6.958224", "bp_rp": "0.95366096", "radial_velocity": "-7.1312046", "eso": {}}, {"source_id": "1212955599693310848", "ra": "225.57934505088144", "dec": "19.39054609935038", "parallax": "20.212346118587348", "phot_g_mean_mag": "8.588961", "bp_rp": "0.8869839", "radial_velocity": "-14.399846", "eso": {}}, {"source_id": "1271209615518148736", "ra": "229.584353597221", "dec": "26.840650265195304", "parallax": "27.61248298183097", "phot_g_mean_mag": "7.2243514", "bp_rp": "0.7714596", "radial_velocity": "", "eso": {}}, {"source_id": "4235895935019949952", "ra": "301.78874114649545", "dec": "-0.8745533913132567", "parallax": "21.436006868175397", "phot_g_mean_mag": "8.08785", "bp_rp": "0.87155485", "radial_velocity": "-3.0448313", "eso": {"FEROS": 3}}, {"source_id": "4421455530273900032", "ra": "229.82997775153595", "dec": "1.763125183445368", "parallax": "39.79540654125488", "phot_g_mean_mag": "4.921657", "bp_rp": "0.7175598", "radial_velocity": "54.374958", "eso": {"UVES": 4}}, {"source_id": "4544178448320963840", "ra": "256.57370349088234", "dec": "12.607389315612146", "parallax": "24.467732555631873", "phot_g_mean_mag": "8.326707", "bp_rp": "0.9404955", "radial_velocity": "-22.64704", "eso": {}}, {"source_id": "4571079649562719488", "ra": "261.8935826937995", "dec": "26.796171147589263", "parallax": "32.69356421890858", "phot_g_mean_mag": "7.4927135", "bp_rp": "0.9581022", "radial_velocity": "-24.257212", "eso": {}}, {"source_id": "6861955037050486144", "ra": "311.6424810369403", "dec": "-17.16316076070673", "parallax": "27.190792497370406", "phot_g_mean_mag": "7.510466", "bp_rp": "0.78131104", "radial_velocity": "43.39282", "eso": {}}, {"source_id": "4506124621465681536", "ra": "284.77397950632314", "dec": "13.621689416772112", "parallax": "20.931560008610422", "phot_g_mean_mag": "5.117089", "bp_rp": "0.7241459", "radial_velocity": "15.128119", "eso": {}}, {"source_id": "4532560355640612608", "ra": "282.06846728802026", "dec": "23.514716532286258", "parallax": "34.00205278436266", "phot_g_mean_mag": "6.067812", "bp_rp": "0.6522403", "radial_velocity": "3.3526938", "eso": {}}, {"source_id": "1729520524793792512", "ra": "314.8876846729418", "dec": "1.0661288147740624", "parallax": "21.5184386792404", "phot_g_mean_mag": "8.454387", "bp_rp": "0.8566694", "radial_velocity": "-22.033209", "eso": {}}, {"source_id": "6054733461554252672", "ra": "188.87008506980027", "dec": "-61.84186794813238", "parallax": "21.05969637383486", "phot_g_mean_mag": "6.04468", "bp_rp": "0.8962374", "radial_velocity": "7.2102323", "eso": {}}, {"source_id": "5916947921402171264", "ra": "255.13048659026046", "dec": "-57.29843112474786", "parallax": "32.03814917190242", "phot_g_mean_mag": "6.8543777", "bp_rp": "0.7775445", "radial_velocity": "99.71653", "eso": {"FEROS": 1, "UVES": 2}}, {"source_id": "5925437216328405760", "ra": "260.3297637329746", "dec": "-51.122953825247656", "parallax": "25.746250959002708", "phot_g_mean_mag": "7.630228", "bp_rp": "0.8046293", "radial_velocity": "42.798267", "eso": {}}, {"source_id": "5254273053641962752", "ra": "160.6941278190312", "dec": "-60.04327599159441", "parallax": "21.171100263812335", "phot_g_mean_mag": "8.440095", "bp_rp": "0.8482766", "radial_velocity": "8.34414", "eso": {}}, {"source_id": "5357075947709011456", "ra": "157.8377665452764", "dec": "-53.71455177900993", "parallax": "45.327579990833634", "phot_g_mean_mag": "4.757292", "bp_rp": "0.6904063", "radial_velocity": "21.188463", "eso": {"FEROS": 2, "UVES": 2}}, {"source_id": "4729947569262040960", "ra": "51.804112858982805", "dec": "-58.32325942804631", "parallax": "30.019916988881462", "phot_g_mean_mag": "7.768191", "bp_rp": "0.918149", "radial_velocity": "39.635605", "eso": {}}, {"source_id": "4921558670360846592", "ra": "10.644844043819282", "dec": "-54.11852366748243", "parallax": "24.650000054829448", "phot_g_mean_mag": "8.25163", "bp_rp": "0.9323535", "radial_velocity": "50.88078", "eso": {}}, {"source_id": "4976894960284258048", "ra": "1.5837990651942728", "dec": "-49.075368186630975", "parallax": "38.19453346692788", "phot_g_mean_mag": "5.586702", "bp_rp": "0.66950846", "radial_velocity": "5.7567415", "eso": {"UVES": 31}}, {"source_id": "5505483938387762816", "ra": "107.88189960502685", "dec": "-49.42057106939081", "parallax": "36.203645630807635", "phot_g_mean_mag": "7.3231", "bp_rp": "0.8852215", "radial_velocity": "87.23063", "eso": {"FEROS": 1}}, {"source_id": "6375406062130234368", "ra": "315.0299240830887", "dec": "-69.58068435839986", "parallax": "26.056601249153402", "phot_g_mean_mag": "6.7228875", "bp_rp": "0.78063583", "radial_velocity": "-34.02449", "eso": {"UVES": 4}}, {"source_id": "6382933589314905472", "ra": "336.1727031451987", "dec": "-72.25841069853294", "parallax": "35.12814060411004", "phot_g_mean_mag": "5.0583344", "bp_rp": "0.92843246", "radial_velocity": "32.348946", "eso": {"FEROS": 1, "UVES": 16}}, {"source_id": "6458847862122637440", "ra": "325.5680812905573", "dec": "-57.61288633673409", "parallax": "24.962783531674575", "phot_g_mean_mag": "8.17757", "bp_rp": "0.89676714", "radial_velocity": "28.70537", "eso": {}}, {"source_id": "6509185943983166336", "ra": "330.5668298442922", "dec": "-54.49275759439232", "parallax": "22.04897556592342", "phot_g_mean_mag": "8.796108", "bp_rp": "0.99883556", "radial_velocity": "-23.089272", "eso": {}}, {"source_id": "6658745123367090944", "ra": "292.2615259237936", "dec": "-49.87655415882821", "parallax": "24.13864879881574", "phot_g_mean_mag": "8.651338", "bp_rp": "0.98209953", "radial_velocity": "-34.431355", "eso": {}}, {"source_id": "6703245382605547520", "ra": "276.1382980764171", "dec": "-49.653543337273064", "parallax": "36.57350585000894", "phot_g_mean_mag": "6.3106174", "bp_rp": "0.7514453", "radial_velocity": "32.62548", "eso": {"FEROS": 1}}, {"source_id": "2328281189678351232", "ra": "357.33098147190776", "dec": "-27.854484531893746", "parallax": "28.257812685774937", "phot_g_mean_mag": "6.830711", "bp_rp": "0.6603794", "radial_velocity": "13.828987", "eso": {}}, {"source_id": "2440578577126302336", "ra": "355.464058544604", "dec": "-5.986253467421608", "parallax": "23.79550899696286", "phot_g_mean_mag": "7.533826", "bp_rp": "0.8105302", "radial_velocity": "12.04019", "eso": {"UVES": 1}}, {"source_id": "5062313166791762176", "ra": "39.94883639481258", "dec": "-33.901799174178365", "parallax": "24.70503937305319", "phot_g_mean_mag": "8.1238575", "bp_rp": "0.8777838", "radial_velocity": "23.990358", "eso": {}}, {"source_id": "5065781095179785216", "ra": "39.57825552006404", "dec": "-30.194395323839164", "parallax": "28.486666449623826", "phot_g_mean_mag": "5.7103505", "bp_rp": "0.64276505", "radial_velocity": "30.164415", "eso": {}}, {"source_id": "5117974602912370432", "ra": "34.74269374763958", "dec": "-25.943711129253515", "parallax": "77.91401913043707", "phot_g_mean_mag": "6.147864", "bp_rp": "0.9205227", "radial_velocity": "7.272757", "eso": {"FEROS": 1}}, {"source_id": "5120136277132107392", "ra": "36.56370871970579", "dec": "-23.888986677898824", "parallax": "20.343593100435793", "phot_g_mean_mag": "8.488566", "bp_rp": "0.85992146", "radial_velocity": "-11.796218", "eso": {}}, {"source_id": "6610107504955838336", "ra": "343.9749102785995", "dec": "-26.65955335832734", "parallax": "27.29232783901683", "phot_g_mean_mag": "7.9283977", "bp_rp": "0.9479203", "radial_velocity": "31.003975", "eso": {"FEROS": 7, "UVES": 6}}, {"source_id": "107774198474602368", "ra": "34.353505939597916", "dec": "28.741464648683994", "parallax": "25.230631889461055", "phot_g_mean_mag": "7.622567", "bp_rp": "0.79357624", "radial_velocity": "4.996837", "eso": {"UVES": 4}}, {"source_id": "1896396703077703936", "ra": "328.12435326523473", "dec": "28.793268062528412", "parallax": "37.059132807546476", "phot_g_mean_mag": "5.3932233", "bp_rp": "0.6264272", "radial_velocity": "19.173674", "eso": {"UVES": 4}}, {"source_id": "2745647973856851712", "ra": "2.1076643394278456", "dec": "6.616794493147512", "parallax": "26.03863506376948", "phot_g_mean_mag": "7.45048", "bp_rp": "0.78495026", "radial_velocity": "0.92887235", "eso": {"FEROS": 3}}, {"source_id": "2781872793183604096", "ra": "12.244603356431734", "dec": "16.93975243414144", "parallax": "42.750525128637356", "phot_g_mean_mag": "4.9257455", "bp_rp": "0.68561316", "radial_velocity": "", "eso": {"UVES": 40}}, {"source_id": "2835052150531041920", "ra": "343.53056152033594", "dec": "19.89141882424995", "parallax": "23.91168082981241", "phot_g_mean_mag": "6.8978972", "bp_rp": "0.67392635", "radial_velocity": "11.033565", "eso": {"UVES": 2}}, {"source_id": "2934344407081046400", "ra": "107.71851545011775", "dec": "-18.051193044212706", "parallax": "20.799516447316954", "phot_g_mean_mag": "7.90832", "bp_rp": "0.73309803", "radial_velocity": "-5.345057", "eso": {}}, {"source_id": "2980492387558410112", "ra": "71.90182063625531", "dec": "-16.933703052251126", "parallax": "75.52889944115644", "phot_g_mean_mag": "5.318377", "bp_rp": "0.81800747", "radial_velocity": "21.604755", "eso": {"FEROS": 5, "UVES": 2}}, {"source_id": "3022685626580347392", "ra": "89.5900670199354", "dec": "-4.651563226359424", "parallax": "41.53660436843603", "phot_g_mean_mag": "6.823622", "bp_rp": "0.893435", "radial_velocity": "143.41978", "eso": {"UVES": 2}}, {"source_id": "3183354619344258304", "ra": "74.64887614668424", "dec": "-9.334732933340256", "parallax": "21.60816863289104", "phot_g_mean_mag": "7.8078694", "bp_rp": "0.7241607", "radial_velocity": "15.889922", "eso": {}}, {"source_id": "3220137750059767680", "ra": "82.0266561793371", "dec": "-1.6698472003745168", "parallax": "21.688249037594236", "phot_g_mean_mag": "7.18513", "bp_rp": "0.669559", "radial_velocity": "-41.297607", "eso": {}}, {"source_id": "4869487861253990656", "ra": "65.97185686079135", "dec": "-34.758260569537654", "parallax": "21.358527100438966", "phot_g_mean_mag": "8.2211685", "bp_rp": "0.85955334", "radial_velocity": "-14.153198", "eso": {}}, {"source_id": "5538456402325902464", "ra": "117.53345379169477", "dec": "-39.08010083883132", "parallax": "21.44934147221066", "phot_g_mean_mag": "9.038869", "bp_rp": "0.99688053", "radial_velocity": "38.49769", "eso": {}}, {"source_id": "5569858798004394624", "ra": "96.10099269381008", "dec": "-42.844063500286964", "parallax": "35.93643599490368", "phot_g_mean_mag": "6.5095224", "bp_rp": "0.8318238", "radial_velocity": "56.33409", "eso": {"ESPRESSO": 1, "FEROS": 1, "UVES": 2}}, {"source_id": "5619099979585264256", "ra": "113.31854690184045", "dec": "-22.30261754537477", "parallax": "22.862694516733594", "phot_g_mean_mag": "8.179192", "bp_rp": "0.8265209", "radial_velocity": "49.414555", "eso": {}}, {"source_id": "144171233106399104", "ra": "67.81589657872274", "dec": "20.132994598786517", "parallax": "21.709497140089493", "phot_g_mean_mag": "8.404495", "bp_rp": "0.90096426", "radial_velocity": "39.57583", "eso": {"UVES": 8}}, {"source_id": "647908362201501312", "ra": "144.20749300669019", "dec": "27.97246448396036", "parallax": "23.25768938423871", "phot_g_mean_mag": "8.947109", "bp_rp": "0.9934139", "radial_velocity": "-20.219318", "eso": {}}, {"source_id": "672866898196152064", "ra": "116.05823603379633", "dec": "20.200962314259574", "parallax": "20.920129786700052", "phot_g_mean_mag": "7.196038", "bp_rp": "0.83181", "radial_velocity": "-9.313024", "eso": {}}, {"source_id": "3033448234816038784", "ra": "113.16072742117808", "dec": "-12.87906757419754", "parallax": "21.231788527931453", "phot_g_mean_mag": "8.476078", "bp_rp": "0.8922429", "radial_velocity": "2.895403", "eso": {}}, {"source_id": "3145754895088191744", "ra": "117.92463061711462", "dec": "9.385215077240026", "parallax": "20.46996590146038", "phot_g_mean_mag": "8.403595", "bp_rp": "0.88799286", "radial_velocity": "-20.331478", "eso": {"UVES": 1}}, {"source_id": "3330062833797919744", "ra": "93.30244910592171", "dec": "10.625819907584921", "parallax": "53.76526189706887", "phot_g_mean_mag": "6.271036", "bp_rp": "0.8387909", "radial_velocity": "5.8345804", "eso": {"FEROS": 8}}, {"source_id": "3422042582096699520", "ra": "77.51711924254519", "dec": "27.55610689866213", "parallax": "24.81284639616226", "phot_g_mean_mag": "6.855568", "bp_rp": "0.6409693", "radial_velocity": "15.71942", "eso": {}}, {"source_id": "3532510584058633600", "ra": "167.37647476980123", "dec": "-25.99103718774779", "parallax": "24.279878411453748", "phot_g_mean_mag": "8.495732", "bp_rp": "0.9124136", "radial_velocity": "18.258718", "eso": {"FEROS": 23}}, {"source_id": "3600638179941831936", "ra": "180.11391920410063", "dec": "-4.549459336176391", "parallax": "23.835893157286765", "phot_g_mean_mag": "8.040191", "bp_rp": "0.90858555", "radial_velocity": "42.87606", "eso": {}}, {"source_id": "3646061719703116032", "ra": "213.18776960292266", "dec": "-3.3215159987373553", "parallax": "45.89535816373623", "phot_g_mean_mag": "6.86059", "bp_rp": "0.90823936", "radial_velocity": "37.726936", "eso": {"ESPRESSO": 26}}, {"source_id": "3671369518141421696", "ra": "211.1798132912645", "dec": "4.7802598232699065", "parallax": "22.549180809772338", "phot_g_mean_mag": "8.354454", "bp_rp": "0.8486943", "radial_velocity": "10.035671", "eso": {"FEROS": 9}}, {"source_id": "3679242575447826432", "ra": "193.29531555829698", "dec": "-3.553113791765166", "parallax": "29.908117129087202", "phot_g_mean_mag": "6.0024433", "bp_rp": "0.6257715", "radial_velocity": "-7.0164566", "eso": {}}, {"source_id": "3732539683617410816", "ra": "199.19230052489397", "dec": "9.425004654149065", "parallax": "56.85773969737915", "phot_g_mean_mag": "5.0398397", "bp_rp": "0.75950575", "radial_velocity": "-27.250702", "eso": {"FEROS": 3, "UVES": 4}}, {"source_id": "3764461667267464192", "ra": "163.20298910919624", "dec": "-6.822831465008229", "parallax": "23.121705251870143", "phot_g_mean_mag": "7.0426807", "bp_rp": "0.71500015", "radial_velocity": "15.624281", "eso": {"UVES": 2}}, {"source_id": "3794824028033991936", "ra": "177.2544170536905", "dec": "-0.31865798336717893", "parallax": "29.70941777392232", "phot_g_mean_mag": "6.032868", "bp_rp": "0.65790844", "radial_velocity": "1.3064256", "eso": {}}, {"source_id": "5432987261254295936", "ra": "144.46941800815236", "dec": "-37.83249826590679", "parallax": "21.234655011632142", "phot_g_mean_mag": "8.713372", "bp_rp": "0.92874527", "radial_velocity": "26.388224", "eso": {}}, {"source_id": "5433212283180626432", "ra": "147.2080989896668", "dec": "-37.30971584634868", "parallax": "22.444527020518876", "phot_g_mean_mag": "8.665519", "bp_rp": "0.9189491", "radial_velocity": "-11.637015", "eso": {}}, {"source_id": "5468409368370405888", "ra": "159.01877394956864", "dec": "-26.675823042738827", "parallax": "23.17412772872018", "phot_g_mean_mag": "6.5208163", "bp_rp": "0.62362385", "radial_velocity": "", "eso": {}}, {"source_id": "5969427164741494656", "ra": "250.9223631965522", "dec": "-39.48554775073279", "parallax": "22.885334728098606", "phot_g_mean_mag": "8.4383955", "bp_rp": "0.89416695", "radial_velocity": "3.7903566", "eso": {}}, {"source_id": "6195592652076883584", "ra": "203.8812446613053", "dec": "-22.024733362419887", "parallax": "20.035046266821876", "phot_g_mean_mag": "7.000403", "bp_rp": "0.63453674", "radial_velocity": "-25.655184", "eso": {}}, {"source_id": "6210926819198797440", "ra": "228.04364832567242", "dec": "-30.886758979099135", "parallax": "24.467920746489934", "phot_g_mean_mag": "7.6145215", "bp_rp": "0.7989445", "radial_velocity": "7.6876082", "eso": {"UVES": 1}}, {"source_id": "6337304342094223744", "ra": "224.7183166363312", "dec": "-4.989724092120318", "parallax": "29.148432400184525", "phot_g_mean_mag": "5.967186", "bp_rp": "0.6678357", "radial_velocity": "-24.3762", "eso": {}}, {"source_id": "6042369178401572096", "ra": "243.82924260790395", "dec": "-27.210861966488896", "parallax": "28.083076853081593", "phot_g_mean_mag": "7.385673", "bp_rp": "0.77826166", "radial_velocity": "-23.14944", "eso": {}}, {"source_id": "4418203587193988480", "ra": "228.45641359277727", "dec": "-1.3536263795284098", "parallax": "57.92051412635043", "phot_g_mean_mag": "6.3889394", "bp_rp": "0.93755865", "radial_velocity": "-69.63379", "eso": {}}, {"source_id": "4333742711723764224", "ra": "252.52118404023187", "dec": "-12.387930209774467", "parallax": "23.45051423387558", "phot_g_mean_mag": "7.785808", "bp_rp": "0.77743196", "radial_velocity": "-17.62796", "eso": {}}, {"source_id": "4076014471814188160", "ra": "279.3043415956061", "dec": "-25.67252048627018", "parallax": "33.147879106052976", "phot_g_mean_mag": "7.2642317", "bp_rp": "0.8470497", "radial_velocity": "-23.371506", "eso": {"UVES": 2}}, {"source_id": "4079684229322231040", "ra": "279.722148569977", "dec": "-21.05255555408361", "parallax": "76.74052986202392", "phot_g_mean_mag": "5.6792855", "bp_rp": "0.8573408", "radial_velocity": "37.03005", "eso": {"ESPRESSO": 30, "FEROS": 1}}, {"source_id": "4187404036259094528", "ra": "292.0512585965648", "dec": "-12.145184777158997", "parallax": "26.824428942692943", "phot_g_mean_mag": "8.213438", "bp_rp": "0.9004054", "radial_velocity": "", "eso": {}}, {"source_id": "4474929384941435904", "ra": "271.70335970790353", "dec": "6.410349069987025", "parallax": "22.443457341245438", "phot_g_mean_mag": "7.636466", "bp_rp": "0.78241587", "radial_velocity": "-5.420453", "eso": {}}, {"source_id": "4564058546264232192", "ra": "250.87550197699204", "dec": "20.715975814129052", "parallax": "21.371562223469045", "phot_g_mean_mag": "7.0616946", "bp_rp": "0.7147155", "radial_velocity": "-27.708649", "eso": {}}, {"source_id": "6859076107589173120", "ra": "305.9019419109551", "dec": "-21.375315743005014", "parallax": "20.853954544130158", "phot_g_mean_mag": "8.495108", "bp_rp": "0.76181793", "radial_velocity": "-171.24466", "eso": {"ESPRESSO": 24, "FEROS": 3, "UVES": 18}}, {"source_id": "2019164662448947200", "ra": "291.17512203264107", "dec": "22.201156322095667", "parallax": "30.549662133424206", "phot_g_mean_mag": "7.634126", "bp_rp": "0.87599087", "radial_velocity": "8.208285", "eso": {}}, {"source_id": "4498382277197957632", "ra": "270.54994292931116", "dec": "14.87687352156795", "parallax": "25.83905257533934", "phot_g_mean_mag": "8.554576", "bp_rp": "0.96496296", "radial_velocity": "-61.727524", "eso": {}}, {"source_id": "4582680493669880704", "ra": "270.63052565244976", "dec": "26.310323937396532", "parallax": "45.49540768785009", "phot_g_mean_mag": "6.802036", "bp_rp": "0.96445274", "radial_velocity": "20.161068", "eso": {"UVES": 2}}, {"source_id": "1763720352940431232", "ra": "314.9742734484406", "dec": "16.84017242435216", "parallax": "21.35620042612191", "phot_g_mean_mag": "8.975733", "bp_rp": "0.9480581", "radial_velocity": "4.94887", "eso": {}}, {"source_id": "4586000675189058304", "ra": "275.20541203867595", "dec": "27.530750038142273", "parallax": "34.61947335312157", "phot_g_mean_mag": "6.867911", "bp_rp": "0.8090458", "radial_velocity": "-20.859703", "eso": {}}, {"source_id": "5923907314622859520", "ra": "255.78630690246376", "dec": "-53.23757508910149", "parallax": "37.36962916980241", "phot_g_mean_mag": "5.218416", "bp_rp": "0.64127827", "radial_velocity": "13.357774", "eso": {}}, {"source_id": "5924087801996568448", "ra": "258.34628295757403", "dec": "-53.10556208081226", "parallax": "23.7051685009591", "phot_g_mean_mag": "8.725725", "bp_rp": "0.89729595", "radial_velocity": "-25.506037", "eso": {}}, {"source_id": "5765846127180770432", "ra": "198.8369563599752", "dec": "-87.56137833392853", "parallax": "40.47572675612933", "phot_g_mean_mag": "6.9539948", "bp_rp": "0.8471527", "radial_velocity": "-4.8709087", "eso": {"FEROS": 3}}, {"source_id": "5798962867668048768", "ra": "228.81031546406854", "dec": "-70.52035564237927", "parallax": "37.3019774686393", "phot_g_mean_mag": "6.6936617", "bp_rp": "0.8817105", "radial_velocity": "1.9433932", "eso": {"ESPRESSO": 11, "UVES": 2}}, {"source_id": "5224975398040550400", "ra": "175.56292854534138", "dec": "-75.22733236419347", "parallax": "29.415653045935372", "phot_g_mean_mag": "6.3556094", "bp_rp": "0.66897106", "radial_velocity": "-7.2435255", "eso": {}}, {"source_id": "5528565470596048256", "ra": "128.80266475634284", "dec": "-39.970258531989785", "parallax": "27.65046014468136", "phot_g_mean_mag": "6.3118386", "bp_rp": "0.7364216", "radial_velocity": "33.88143", "eso": {"UVES": 5}}, {"source_id": "4909846500703006976", "ra": "20.839329303533823", "dec": "-57.48090751727353", "parallax": "22.09092560472709", "phot_g_mean_mag": "8.389969", "bp_rp": "0.8892641", "radial_velocity": "8.683959", "eso": {"FEROS": 4, "UVES": 2}}, {"source_id": "4927920410279727360", "ra": "18.45441709649728", "dec": "-50.6559440088138", "parallax": "21.279026744130586", "phot_g_mean_mag": "8.285277", "bp_rp": "0.78828144", "radial_velocity": "35.177486", "eso": {}}, {"source_id": "4933040900355014144", "ra": "15.683104571513345", "dec": "-47.288165837389805", "parallax": "21.328795409971818", "phot_g_mean_mag": "7.5678015", "bp_rp": "0.7485566", "radial_velocity": "18.416073", "eso": {}}, {"source_id": "5485320853638354304", "ra": "103.71370351818268", "dec": "-55.26004107774681", "parallax": "28.606858811517768", "phot_g_mean_mag": "7.971664", "bp_rp": "0.9443879", "radial_velocity": "39.964973", "eso": {"FEROS": 1}}, {"source_id": "6365296911707684352", "ra": "281.95416098443314", "dec": "-77.86758986979518", "parallax": "23.038088922346216", "phot_g_mean_mag": "6.2539263", "bp_rp": "0.7518153", "radial_velocity": "16.224403", "eso": {"UVES": 2}}, {"source_id": "6369544118966055296", "ra": "310.4425318147691", "dec": "-75.34716337827433", "parallax": "25.037922490195637", "phot_g_mean_mag": "7.011212", "bp_rp": "0.7805562", "radial_velocity": "-10.940124", "eso": {"ESPRESSO": 27, "FEROS": 1}}, {"source_id": "6402534621759565184", "ra": "326.94734936290615", "dec": "-63.92388182040097", "parallax": "22.48837257847581", "phot_g_mean_mag": "8.413903", "bp_rp": "0.84696436", "radial_velocity": "16.78841", "eso": {}}, {"source_id": "6409419145097654016", "ra": "330.9277222084934", "dec": "-60.43744943323955", "parallax": "23.38163319614612", "phot_g_mean_mag": "7.735932", "bp_rp": "0.7651653", "radial_velocity": "-2.3982", "eso": {"UVES": 2}}, {"source_id": "6484716209628726912", "ra": "314.4137586595863", "dec": "-44.13370526311166", "parallax": "46.58553314864354", "phot_g_mean_mag": "6.3667674", "bp_rp": "0.7790079", "radial_velocity": "-7.7977343", "eso": {"FEROS": 3}}, {"source_id": "2328303768321982080", "ra": "357.0896346542841", "dec": "-27.89783875840889", "parallax": "27.04475744593438", "phot_g_mean_mag": "8.454986", "bp_rp": "0.92789984", "radial_velocity": "7.1276674", "eso": {}}, {"source_id": "2648914040357320576", "ra": "344.564723417443", "dec": "-2.395451074712165", "parallax": "49.784619496207476", "phot_g_mean_mag": "5.9967427", "bp_rp": "0.8883376", "radial_velocity": "-13.407367", "eso": {"UVES": 5}}, {"source_id": "5063334406933437184", "ra": "38.55041281368062", "dec": "-33.11783352544023", "parallax": "23.22836104202274", "phot_g_mean_mag": "7.443633", "bp_rp": "0.7025652", "radial_velocity": "1.6811905", "eso": {"UVES": 1}}, {"source_id": "6600867690272284800", "ra": "339.62040783601793", "dec": "-32.217824762144154", "parallax": "20.99468450473526", "phot_g_mean_mag": "8.700073", "bp_rp": "0.9207525", "radial_velocity": "-0.09754751", "eso": {}}, {"source_id": "6617815730006011776", "ra": "328.42499385079526", "dec": "-28.671588327200112", "parallax": "26.168584370629443", "phot_g_mean_mag": "7.647963", "bp_rp": "0.8862963", "radial_velocity": "-41.765633", "eso": {}}, {"source_id": "77161222072044288", "ra": "32.715985541835956", "dec": "13.682211511860324", "parallax": "23.29865067501026", "phot_g_mean_mag": "8.465173", "bp_rp": "0.919292", "radial_velocity": "26.091286", "eso": {"FEROS": 1}}, {"source_id": "1799274160936038784", "ra": "326.0398750348043", "dec": "25.329418947949602", "parallax": "21.725663595990202", "phot_g_mean_mag": "9.248172", "bp_rp": "0.987875", "radial_velocity": "-51.364906", "eso": {}}, {"source_id": "2804011562888218240", "ra": "13.746058946392417", "dec": "24.099472317789104", "parallax": "33.399848934597564", "phot_g_mean_mag": "7.263617", "bp_rp": "0.81276655", "radial_velocity": "-8.497002", "eso": {}}, {"source_id": "2892003932273326208", "ra": "96.8360260485007", "dec": "-33.11431439130898", "parallax": "22.638430310252858", "phot_g_mean_mag": "8.227509", "bp_rp": "0.8654456", "radial_velocity": "-3.3887124", "eso": {}}, {"source_id": "2895322670684838528", "ra": "98.15414996366182", "dec": "-29.58212366730837", "parallax": "21.352733332935657", "phot_g_mean_mag": "8.767145", "bp_rp": "0.9666834", "radial_velocity": "19.584303", "eso": {}}, {"source_id": "3013570610764491520", "ra": "82.75047415093364", "dec": "-10.082486082104477", "parallax": "24.385888971038735", "phot_g_mean_mag": "6.8118577", "bp_rp": "0.72855234", "radial_velocity": "23.329527", "eso": {"UVES": 6}}, {"source_id": "3102372804823185920", "ra": "102.14876131893486", "dec": "-4.076265003018306", "parallax": "20.65895455604872", "phot_g_mean_mag": "7.1928306", "bp_rp": "0.6513424", "radial_velocity": "-5.254131", "eso": {}}, {"source_id": "3201236698501590272", "ra": "68.08946161342728", "dec": "-5.039161572640303", "parallax": "27.74576608655238", "phot_g_mean_mag": "7.454958", "bp_rp": "0.83689165", "radial_velocity": "37.688145", "eso": {}}, {"source_id": "3205907595694244480", "ra": "66.70324635338594", "dec": "-1.7244794104560899", "parallax": "20.129978414684302", "phot_g_mean_mag": "7.9140706", "bp_rp": "0.77391624", "radial_velocity": "-3.7180953", "eso": {}}, {"source_id": "3218445979621236992", "ra": "88.75769483717582", "dec": "-0.5081960910025424", "parallax": "25.064276509775897", "phot_g_mean_mag": "7.4899764", "bp_rp": "0.79098606", "radial_velocity": "24.7209", "eso": {"UVES": 4}}, {"source_id": "3261733202649972992", "ra": "49.1698158495598", "dec": "-3.530475379740466", "parallax": "20.36668690643041", "phot_g_mean_mag": "7.3649883", "bp_rp": "0.6924844", "radial_velocity": "10.208137", "eso": {"UVES": 6}}, {"source_id": "4857619423505528320", "ra": "59.48126754640676", "dec": "-36.259444427166876", "parallax": "27.909134720233894", "phot_g_mean_mag": "8.318995", "bp_rp": "0.96431494", "radial_velocity": "16.058346", "eso": {}}, {"source_id": "5609058277323483392", "ra": "103.39285496655026", "dec": "-28.541757694191922", "parallax": "38.798293540251805", "phot_g_mean_mag": "5.8696074", "bp_rp": "0.86797523", "radial_velocity": "72.42224", "eso": {"UVES": 2}}, {"source_id": "5612299328373516416", "ra": "114.57175073126159", "dec": "-27.144806116320765", "parallax": "20.030896047708406", "phot_g_mean_mag": "8.24642", "bp_rp": "0.8661356", "radial_velocity": "89.2296", "eso": {}}, {"source_id": "64115585330656000", "ra": "57.51517110765979", "dec": "22.591359710394954", "parallax": "23.207919486158296", "phot_g_mean_mag": "7.165409", "bp_rp": "0.6658654", "radial_velocity": "7.085536", "eso": {}}, {"source_id": "594641112644934272", "ra": "129.93694773074068", "dec": "5.7691934188572676", "parallax": "28.324993536899647", "phot_g_mean_mag": "8.209765", "bp_rp": "0.9700937", "radial_velocity": "-20.19394", "eso": {}}, {"source_id": "875071278432954240", "ra": "117.4793682618587", "dec": "27.363132695843213", "parallax": "44.684849211198234", "phot_g_mean_mag": "6.7371826", "bp_rp": "0.8535037", "radial_velocity": "-16.07124", "eso": {}}, {"source_id": "883455638709598848", "ra": "109.6210730958666", "dec": "27.252152737994457", "parallax": "28.137613048426143", "phot_g_mean_mag": "7.8619943", "bp_rp": "0.82351923", "radial_velocity": "-33.28518", "eso": {}}, {"source_id": "1161759314647344896", "ra": "224.20052780320225", "dec": "8.600094938433756", "parallax": "26.822484770449755", "phot_g_mean_mag": "8.422954", "bp_rp": "0.9838362", "radial_velocity": "-36.006844", "eso": {}}, {"source_id": "1252050659765215744", "ra": "214.13620623622032", "dec": "20.121424752142573", "parallax": "30.21063932762427", "phot_g_mean_mag": "6.29416", "bp_rp": "0.624341", "radial_velocity": "-7.647365", "eso": {}}, {"source_id": "3036342149414144384", "ra": "118.4260696915802", "dec": "-12.265722094444167", "parallax": "22.10589610688793", "phot_g_mean_mag": "7.6630917", "bp_rp": "0.8489375", "radial_velocity": "-9.150251", "eso": {"FEROS": 1}}, {"source_id": "3076296890133768448", "ra": "126.13896202145796", "dec": "-1.1492321210146423", "parallax": "24.23141763745282", "phot_g_mean_mag": "6.941814", "bp_rp": "0.74056435", "radial_velocity": "9.93881", "eso": {"FEROS": 1}}, {"source_id": "3138804160534756096", "ra": "114.14411698435494", "dec": "5.862294878152529", "parallax": "24.0803149594794", "phot_g_mean_mag": "5.754037", "bp_rp": "0.7641463", "radial_velocity": "", "eso": {}}, {"source_id": "3326573774163806336", "ra": "99.38221418892726", "dec": "9.143923478889452", "parallax": "24.969412463269816", "phot_g_mean_mag": "7.4601617", "bp_rp": "0.8511548", "radial_velocity": "25.426378", "eso": {}}, {"source_id": "3618910139048607616", "ra": "208.74173223138519", "dec": "-8.058993537803358", "parallax": "28.923517085779334", "phot_g_mean_mag": "6.5118546", "bp_rp": "0.6483016", "radial_velocity": "-15.867395", "eso": {}}, {"source_id": "3667671452515763584", "ra": "214.25294793414184", "dec": "3.0888372147454453", "parallax": "21.764076209291623", "phot_g_mean_mag": "8.450526", "bp_rp": "0.9405031", "radial_velocity": "-49.558033", "eso": {}}, {"source_id": "3786035184916139136", "ra": "173.96462863752112", "dec": "-4.755537572588175", "parallax": "20.159039764071935", "phot_g_mean_mag": "8.250434", "bp_rp": "0.8983321", "radial_velocity": "1.0954589", "eso": {}}, {"source_id": "3897069641524877184", "ra": "175.52953530154355", "dec": "4.747490869843144", "parallax": "26.20175657604265", "phot_g_mean_mag": "7.145253", "bp_rp": "0.75225973", "radial_velocity": "21.384129", "eso": {}}, {"source_id": "3905603054348141440", "ra": "183.37306164251183", "dec": "10.040391358107776", "parallax": "26.24840318946553", "phot_g_mean_mag": "7.2773986", "bp_rp": "0.77334404", "radial_velocity": "15.636912", "eso": {"UVES": 2}}, {"source_id": "3941974967713865728", "ra": "193.38306231175758", "dec": "19.480276551061237", "parallax": "22.40657961058435", "phot_g_mean_mag": "6.232257", "bp_rp": "0.95197725", "radial_velocity": "-1.0853552", "eso": {}}, {"source_id": "4004194097346057728", "ra": "176.75342047479953", "dec": "23.720526199524542", "parallax": "25.942962601694912", "phot_g_mean_mag": "6.8307886", "bp_rp": "0.652431", "radial_velocity": "4.6756725", "eso": {}}, {"source_id": "5452492082132835840", "ra": "166.97418043057004", "dec": "-30.175156666953004", "parallax": "39.39745889595018", "phot_g_mean_mag": "6.3684316", "bp_rp": "0.7781205", "radial_velocity": "12.825705", "eso": {"ESPRESSO": 2, "FEROS": 3}}, {"source_id": "5993794885009577600", "ra": "244.9985470347952", "dec": "-40.81875508743207", "parallax": "20.40512913005438", "phot_g_mean_mag": "7.560756", "bp_rp": "0.8284764", "radial_velocity": "30.97938", "eso": {"UVES": 4}}, {"source_id": "6038073970589665280", "ra": "246.1660886432305", "dec": "-29.705014282317677", "parallax": "30.48935646502168", "phot_g_mean_mag": "5.6882033", "bp_rp": "0.75782394", "radial_velocity": "-2.4715872", "eso": {}}, {"source_id": "4418257149730694144", "ra": "228.19743085152172", "dec": "-1.1674299847857343", "parallax": "22.920585133904225", "phot_g_mean_mag": "9.066475", "bp_rp": "0.9866924", "radial_velocity": "-59.543667", "eso": {}}, {"source_id": "6740614312496504704", "ra": "295.97018201633085", "dec": "-35.25451832531314", "parallax": "21.522868226316525", "phot_g_mean_mag": "8.21522", "bp_rp": "0.8458824", "radial_velocity": "-76.336494", "eso": {}}, {"source_id": "6763959521340440704", "ra": "286.98407931291973", "dec": "-26.356724267750224", "parallax": "20.652149997554115", "phot_g_mean_mag": "8.45758", "bp_rp": "0.8442273", "radial_velocity": "-39.715492", "eso": {}}, {"source_id": "6850091001646725248", "ra": "301.0755786929775", "dec": "-26.32988428116253", "parallax": "21.105741753738705", "phot_g_mean_mag": "8.023424", "bp_rp": "0.7950158", "radial_velocity": "-9.777099", "eso": {}}, {"source_id": "6851090320276640000", "ra": "302.1492947904143", "dec": "-23.59101470279795", "parallax": "20.65413879529881", "phot_g_mean_mag": "7.417628", "bp_rp": "0.67135286", "radial_velocity": "24.248562", "eso": {"UVES": 1}}, {"source_id": "1170797781264303616", "ra": "230.71571225923572", "dec": "13.366307985118784", "parallax": "20.830195185069627", "phot_g_mean_mag": "7.757489", "bp_rp": "0.81033087", "radial_velocity": "-48.817352", "eso": {"UVES": 3}}, {"source_id": "1183444810683190016", "ra": "226.2680855974322", "dec": "14.087118121126565", "parallax": "20.754289777464408", "phot_g_mean_mag": "8.734146", "bp_rp": "0.9630127", "radial_velocity": "8.775448", "eso": {}}, {"source_id": "4287344386213509376", "ra": "281.2953398533663", "dec": "8.961000134481173", "parallax": "22.526960540509524", "phot_g_mean_mag": "8.330259", "bp_rp": "0.88186646", "radial_velocity": "-9.033219", "eso": {}}, {"source_id": "4381502851133968128", "ra": "256.320001932861", "dec": "0.7010753052476051", "parallax": "48.56716969311014", "phot_g_mean_mag": "5.8623266", "bp_rp": "0.73452187", "radial_velocity": "-16.817816", "eso": {}}, {"source_id": "4409935087954141056", "ra": "240.07788139056248", "dec": "0.13652498815358688", "parallax": "22.399450148042018", "phot_g_mean_mag": "7.8967457", "bp_rp": "0.8027973", "radial_velocity": "-24.529547", "eso": {}}, {"source_id": "4426054581256895104", "ra": "238.33322325543804", "dec": "4.253290749206049", "parallax": "21.68234514598681", "phot_g_mean_mag": "7.913882", "bp_rp": "0.78401566", "radial_velocity": "-22.074585", "eso": {}}, {"source_id": "6869035449555144960", "ra": "296.82510805578255", "dec": "-18.747157888010054", "parallax": "32.66492300137459", "phot_g_mean_mag": "7.439976", "bp_rp": "0.8547225", "radial_velocity": "-23.211092", "eso": {}}, {"source_id": "1805044913356835328", "ra": "305.71856783031404", "dec": "14.55106583597575", "parallax": "38.400918468892534", "phot_g_mean_mag": "6.03745", "bp_rp": "0.6607375", "radial_velocity": "4.7137027", "eso": {}}, {"source_id": "1834178638618346112", "ra": "299.3318515840002", "dec": "24.08760179260002", "parallax": "23.14816231455098", "phot_g_mean_mag": "7.0472064", "bp_rp": "0.7807956", "radial_velocity": "-10.83869", "eso": {}}, {"source_id": "5768159705804908800", "ra": "242.54770649475105", "dec": "-84.2317538110195", "parallax": "29.199118647793348", "phot_g_mean_mag": "7.5266557", "bp_rp": "0.9145098", "radial_velocity": "-9.961685", "eso": {"FEROS": 1}}, {"source_id": "4745319978769065728", "ra": "40.27961710475972", "dec": "-51.44037216367641", "parallax": "21.21286147580939", "phot_g_mean_mag": "8.389437", "bp_rp": "0.81816673", "radial_velocity": "6.6928496", "eso": {"UVES": 2}}, {"source_id": "5479222240596469632", "ra": "104.99706286126714", "dec": "-61.33500424765096", "parallax": "54.52523915853711", "phot_g_mean_mag": "6.616181", "bp_rp": "0.9549222", "radial_velocity": "22.031446", "eso": {"FEROS": 1}}, {"source_id": "5481272932860894720", "ra": "91.42458376660991", "dec": "-61.74853633679349", "parallax": "20.8817511774345", "phot_g_mean_mag": "7.7011747", "bp_rp": "0.7374873", "radial_velocity": "-5.2284346", "eso": {}}, {"source_id": "5481848424118748672", "ra": "95.62881797245707", "dec": "-60.21836448226139", "parallax": "41.88773446263176", "phot_g_mean_mag": "6.3652062", "bp_rp": "0.7657213", "radial_velocity": "31.45045", "eso": {"UVES": 6}}, {"source_id": "5557816190743628416", "ra": "102.47756207116845", "dec": "-46.612900315158655", "parallax": "39.66652033814636", "phot_g_mean_mag": "5.0112824", "bp_rp": "0.62668896", "radial_velocity": "20.831383", "eso": {}}, {"source_id": "6583320721643225472", "ra": "320.19400079208685", "dec": "-38.78122394041477", "parallax": "27.487554763425553", "phot_g_mean_mag": "7.6862874", "bp_rp": "0.85551405", "radial_velocity": "24.259928", "eso": {}}, {"source_id": "6635697160627698688", "ra": "278.37297226178816", "dec": "-58.70925687040638", "parallax": "21.270430958870563", "phot_g_mean_mag": "6.2649174", "bp_rp": "0.8792429", "radial_velocity": "37.925396", "eso": {}}, {"source_id": "2403854545161475840", "ra": "341.85540376249565", "dec": "-17.550759688985487", "parallax": "22.08768778733926", "phot_g_mean_mag": "6.685", "bp_rp": "0.6423235", "radial_velocity": "-0.8265629", "eso": {}}, {"source_id": "2462426800883134336", "ra": "29.288373423111608", "dec": "-10.24350297756486", "parallax": "29.79282178461356", "phot_g_mean_mag": "6.2218833", "bp_rp": "0.98058224", "radial_velocity": "-9.392241", "eso": {"UVES": 2}}, {"source_id": "2529192475520963840", "ra": "10.541357168544577", "dec": "-3.0570190371410506", "parallax": "20.54074918783611", "phot_g_mean_mag": "8.238361", "bp_rp": "0.83005476", "radial_velocity": "-11.907735", "eso": {}}, {"source_id": "2635543704085589504", "ra": "345.9900666700243", "dec": "-4.794693616037545", "parallax": "32.820026157710444", "phot_g_mean_mag": "6.5604353", "bp_rp": "0.74547005", "radial_velocity": "-12.6441145", "eso": {}}, {"source_id": "2662112268699428352", "ra": "346.2513606575552", "dec": "4.224674817676085", "parallax": "22.50308120117292", "phot_g_mean_mag": "6.953797", "bp_rp": "0.63024664", "radial_velocity": "-4.9711995", "eso": {}}, {"source_id": "2704678521338819840", "ra": "340.9619965184711", "dec": "3.888324813298413", "parallax": "23.625091571644916", "phot_g_mean_mag": "7.2927494", "bp_rp": "0.7208533", "radial_velocity": "-33.66392", "eso": {"UVES": 2}}, {"source_id": "2733702501576122624", "ra": "334.85489474515657", "dec": "12.459337555277298", "parallax": "24.414641592654345", "phot_g_mean_mag": "7.8319206", "bp_rp": "0.8076072", "radial_velocity": "21.873692", "eso": {}}, {"source_id": "4987736999629756800", "ra": "16.88471330705866", "dec": "-41.74698313763806", "parallax": "29.75538362553277", "phot_g_mean_mag": "6.880378", "bp_rp": "0.71686363", "radial_velocity": "15.615085", "eso": {}}, {"source_id": "5028165118766489088", "ra": "17.24256974108259", "dec": "-30.929732947820128", "parallax": "20.69569220737406", "phot_g_mean_mag": "8.904129", "bp_rp": "0.9465647", "radial_velocity": "4.189781", "eso": {}}, {"source_id": "5135093346121603712", "ra": "29.454569690590244", "dec": "-21.90170780745563", "parallax": "24.205282560124612", "phot_g_mean_mag": "7.9140987", "bp_rp": "0.83526754", "radial_velocity": "5.9898844", "eso": {"FEROS": 6, "UVES": 4}}, {"source_id": "6606890608810806528", "ra": "340.23167935384356", "dec": "-31.98996669113577", "parallax": "37.490029921152384", "phot_g_mean_mag": "7.2165284", "bp_rp": "0.9372463", "radial_velocity": "-20.323183", "eso": {}}, {"source_id": "6787949937336590080", "ra": "319.52175166273116", "dec": "-29.513985787810125", "parallax": "21.982573145753875", "phot_g_mean_mag": "8.308572", "bp_rp": "0.8425164", "radial_velocity": "-4.074129", "eso": {}}, {"source_id": "102082477749475200", "ra": "39.24129515303115", "dec": "24.64800884963116", "parallax": "22.510724873268565", "phot_g_mean_mag": "6.9793406", "bp_rp": "0.67081594", "radial_velocity": "12.378623", "eso": {"FEROS": 1}}, {"source_id": "2554032474712538880", "ra": "8.740163711260601", "dec": "4.380697426610551", "parallax": "21.136283615337245", "phot_g_mean_mag": "8.772422", "bp_rp": "0.98186016", "radial_velocity": "19.398817", "eso": {"ESPRESSO": 4, "UVES": 7}}, {"source_id": "2585856120791459584", "ra": "24.42087642407902", "dec": "12.078407829941513", "parallax": "39.311771169889454", "phot_g_mean_mag": "6.6180305", "bp_rp": "0.80383205", "radial_velocity": "-20.971186", "eso": {}}, {"source_id": "2847267071879585920", "ra": "1.3710238637907404", "dec": "22.224164720846243", "parallax": "21.256166296474355", "phot_g_mean_mag": "8.926228", "bp_rp": "0.9441614", "radial_velocity": "-3.7124224", "eso": {}}, {"source_id": "2928798848387843456", "ra": "105.26874415125869", "dec": "-21.96441923901986", "parallax": "21.704323942846454", "phot_g_mean_mag": "7.5369635", "bp_rp": "0.69756985", "radial_velocity": "62.69391", "eso": {}}, {"source_id": "2937506911753275008", "ra": "94.26559632063301", "dec": "-22.716383831293676", "parallax": "24.866673454042978", "phot_g_mean_mag": "5.92262", "bp_rp": "0.7315831", "radial_velocity": "-2.5752501", "eso": {}}, {"source_id": "3118434397663311360", "ra": "96.32000541037081", "dec": "-0.9468533456659971", "parallax": "30.410332939325023", "phot_g_mean_mag": "5.735034", "bp_rp": "0.73482513", "radial_velocity": "47.333424", "eso": {"UVES": 6}}, {"source_id": "3171831011634286592", "ra": "66.8833098027736", "dec": "-17.10817232248325", "parallax": "21.1276775947968", "phot_g_mean_mag": "8.303252", "bp_rp": "0.8825655", "radial_velocity": "32.223114", "eso": {}}, {"source_id": "3203761005400205824", "ra": "64.9875577894019", "dec": "-4.438922681091644", "parallax": "27.026252113260867", "phot_g_mean_mag": "7.6825886", "bp_rp": "0.82302475", "radial_velocity": "18.11269", "eso": {"FEROS": 2}}, {"source_id": "4880011355762876800", "ra": "72.24094564703825", "dec": "-28.72363633056301", "parallax": "23.899625595218843", "phot_g_mean_mag": "8.739364", "bp_rp": "0.9686003", "radial_velocity": "11.772554", "eso": {}}, {"source_id": "5168924940951237888", "ra": "52.089445122754285", "dec": "-6.531788212404393", "parallax": "21.42710262633069", "phot_g_mean_mag": "8.071772", "bp_rp": "0.80729103", "radial_velocity": "64.11918", "eso": {}}, {"source_id": "5579783574073770112", "ra": "103.00806340849357", "dec": "-33.91525742140188", "parallax": "21.598948410213783", "phot_g_mean_mag": "7.0714087", "bp_rp": "0.7505288", "radial_velocity": "36.914135", "eso": {"ESPRESSO": 29}}, {"source_id": "31251045334952960", "ra": "47.184939331536555", "dec": "15.33396478560697", "parallax": "25.157961464521478", "phot_g_mean_mag": "7.698632", "bp_rp": "0.7978244", "radial_velocity": "-27.1016", "eso": {}}, {"source_id": "627699888238838528", "ra": "149.25884379416598", "dec": "19.75389715841252", "parallax": "24.44723596757769", "phot_g_mean_mag": "8.216481", "bp_rp": "0.870172", "radial_velocity": "30.80722", "eso": {"ESPRESSO": 4}}, {"source_id": "656046844193198848", "ra": "126.18921944428357", "dec": "17.18119290070823", "parallax": "21.151607145771493", "phot_g_mean_mag": "6.947638", "bp_rp": "0.66355896", "radial_velocity": "-12.968392", "eso": {"UVES": 2}}, {"source_id": "657244586015485440", "ra": "123.05355357002612", "dec": "17.646981774113385", "parallax": "40.88793525109319", "phot_g_mean_mag": "5.51876", "bp_rp": "0.68519926", "radial_velocity": "", "eso": {}}, {"source_id": "721207029989338240", "ra": "159.1698644448547", "dec": "21.602793815976927", "parallax": "21.648818407894257", "phot_g_mean_mag": "8.525988", "bp_rp": "0.9137573", "radial_velocity": "46.598743", "eso": {}}, {"source_id": "1160956465000504448", "ra": "224.544569911859", "dec": "6.905378758366146", "parallax": "28.815537582162285", "phot_g_mean_mag": "7.9557295", "bp_rp": "0.9453354", "radial_velocity": "-30.257118", "eso": {}}, {"source_id": "1240498331609669120", "ra": "216.37613437892387", "dec": "20.587574701543083", "parallax": "22.878308907626188", "phot_g_mean_mag": "7.1206465", "bp_rp": "0.76977444", "radial_velocity": "-48.550552", "eso": {"UVES": 2}}, {"source_id": "3060787930730737920", "ra": "114.00471910547684", "dec": "-3.1512754566834125", "parallax": "28.221025702958656", "phot_g_mean_mag": "7.0227795", "bp_rp": "0.73558235", "radial_velocity": "129.74988", "eso": {"FEROS": 1}}, {"source_id": "3065896266049916672", "ra": "124.81289677738005", "dec": "-5.619336312975174", "parallax": "27.263833344432765", "phot_g_mean_mag": "7.294792", "bp_rp": "0.75286293", "radial_velocity": "31.602352", "eso": {}}, {"source_id": "3155516943435148032", "ra": "112.04961509481156", "dec": "9.496997066127118", "parallax": "22.095130272136316", "phot_g_mean_mag": "8.606505", "bp_rp": "0.9416437", "radial_velocity": "-25.647837", "eso": {}}, {"source_id": "3305871825637254912", "ra": "67.73868055535941", "dec": "10.751718973253958", "parallax": "21.502353250359086", "phot_g_mean_mag": "6.921069", "bp_rp": "0.6236849", "radial_velocity": "40.5181", "eso": {"UVES": 1}}, {"source_id": "3327980255695313792", "ra": "97.3059000794675", "dec": "10.933612531173354", "parallax": "28.647696692012953", "phot_g_mean_mag": "7.9235215", "bp_rp": "0.9813709", "radial_velocity": "-5.0749216", "eso": {"FEROS": 1}}, {"source_id": "3381634224106876672", "ra": "102.75184241359952", "dec": "25.75947823177097", "parallax": "29.067884462521477", "phot_g_mean_mag": "6.8465405", "bp_rp": "0.741251", "radial_velocity": "6.7770147", "eso": {}}, {"source_id": "3419824248667573248", "ra": "75.07331055204905", "dec": "25.136463364773", "parallax": "24.858743186759995", "phot_g_mean_mag": "7.8758087", "bp_rp": "0.8431759", "radial_velocity": "-26.20292", "eso": {}}, {"source_id": "3479923004486283392", "ra": "178.52154985862353", "dec": "-29.982681120361562", "parallax": "23.694136989009237", "phot_g_mean_mag": "8.271918", "bp_rp": "0.8870115", "radial_velocity": "15.713087", "eso": {}}, {"source_id": "3527444893470282112", "ra": "187.01565038325435", "dec": "-15.652719067090677", "parallax": "21.252041748460652", "phot_g_mean_mag": "8.160436", "bp_rp": "0.85746384", "radial_velocity": "21.005781", "eso": {}}, {"source_id": "3584074380866605440", "ra": "183.77432220760983", "dec": "-7.257686239746866", "parallax": "29.390835283271024", "phot_g_mean_mag": "8.027496", "bp_rp": "0.99355125", "radial_velocity": "19.779715", "eso": {"ESPRESSO": 8, "UVES": 10}}, {"source_id": "3615366756669561472", "ra": "209.1505356491813", "dec": "-10.034086438310338", "parallax": "23.268734334059044", "phot_g_mean_mag": "7.547547", "bp_rp": "0.7142253", "radial_velocity": "-43.474743", "eso": {}}, {"source_id": "3674948776382842112", "ra": "191.50628344698467", "dec": "-9.31438476904881", "parallax": "20.52176658150339", "phot_g_mean_mag": "7.899331", "bp_rp": "0.81088686", "radial_velocity": "52.534065", "eso": {}}, {"source_id": "3777944634761425792", "ra": "158.70924590915953", "dec": "-3.900415449979411", "parallax": "27.907669612792823", "phot_g_mean_mag": "6.5420976", "bp_rp": "0.6777406", "radial_velocity": "-4.583611", "eso": {}}, {"source_id": "3974220242141965056", "ra": "173.20682301868823", "dec": "18.002398413196232", "parallax": "21.522332861837246", "phot_g_mean_mag": "7.152392", "bp_rp": "0.64545155", "radial_velocity": "21.682175", "eso": {}}, {"source_id": "3996290700391101952", "ra": "164.9505436312891", "dec": "25.28986596342757", "parallax": "26.886383828636145", "phot_g_mean_mag": "8.288586", "bp_rp": "0.9356384", "radial_velocity": "5.739151", "eso": {}}, {"source_id": "5451896799663667200", "ra": "165.16952763207087", "dec": "-31.838915012794693", "parallax": "32.39683034384935", "phot_g_mean_mag": "5.9381294", "bp_rp": "0.6843138", "radial_velocity": "-1.2282293", "eso": {}}, {"source_id": "5691782130578684544", "ra": "143.71140366156337", "dec": "-12.130321804504163", "parallax": "36.11583685790714", "phot_g_mean_mag": "6.402245", "bp_rp": "0.76486397", "radial_velocity": "8.17979", "eso": {"ESPRESSO": 29, "UVES": 3}}, {"source_id": "5725940142928541184", "ra": "122.00823224025201", "dec": "-13.50822439327819", "parallax": "21.009345052221622", "phot_g_mean_mag": "7.122499", "bp_rp": "0.6889076", "radial_velocity": "7.699471", "eso": {}}, {"source_id": "5760564726154351232", "ra": "132.58669105825186", "dec": "-5.538309391789637", "parallax": "20.187005901811236", "phot_g_mean_mag": "8.975515", "bp_rp": "0.9291525", "radial_velocity": "33.35263", "eso": {}}, {"source_id": "6163513129027247104", "ra": "204.93386720502892", "dec": "-37.19133442658279", "parallax": "22.255095870515014", "phot_g_mean_mag": "8.220216", "bp_rp": "0.9292226", "radial_velocity": "47.04774", "eso": {}}, {"source_id": "6180150423582106880", "ra": "195.2788660169332", "dec": "-33.4803221559084", "parallax": "22.867961988163213", "phot_g_mean_mag": "7.430914", "bp_rp": "0.7201266", "radial_velocity": "-5.191016", "eso": {}}, {"source_id": "5975988637777388288", "ra": "262.3568250010439", "dec": "-33.76088921726504", "parallax": "20.988178667547576", "phot_g_mean_mag": "8.359515", "bp_rp": "0.85236025", "radial_velocity": "1.3050737", "eso": {}}, {"source_id": "4063853323403378432", "ra": "268.6253112329062", "dec": "-26.632713908890146", "parallax": "20.711100158913702", "phot_g_mean_mag": "8.353508", "bp_rp": "0.9229083", "radial_velocity": "12.201102", "eso": {"UVES": 10}}, {"source_id": "4110890838850274560", "ra": "260.282345298805", "dec": "-24.683600911651226", "parallax": "22.326622504806554", "phot_g_mean_mag": "8.435237", "bp_rp": "0.90752506", "radial_velocity": "-5.05988", "eso": {}}, {"source_id": "4343066192373826176", "ra": "241.09348120516646", "dec": "-11.371688945739523", "parallax": "35.852837618049136", "phot_g_mean_mag": "7.136922", "bp_rp": "0.8693929", "radial_velocity": "-30.572464", "eso": {"UVES": 8}}, {"source_id": "4400452830957830656", "ra": "233.58628180095772", "dec": "-5.695069084035784", "parallax": "39.262237973106316", "phot_g_mean_mag": "6.378272", "bp_rp": "0.7419362", "radial_velocity": "-37.093605", "eso": {}}, {"source_id": "6248934084311327616", "ra": "243.0104088915055", "dec": "-18.232767116455385", "parallax": "29.41106893551847", "phot_g_mean_mag": "7.268757", "bp_rp": "0.76785946", "radial_velocity": "-11.944536", "eso": {}}, {"source_id": "4048022933053875328", "ra": "276.1133473507107", "dec": "-29.544955601424647", "parallax": "21.946986042455954", "phot_g_mean_mag": "8.412724", "bp_rp": "0.8846588", "radial_velocity": "62.83242", "eso": {}}, {"source_id": "6739497724077399808", "ra": "292.46291922442686", "dec": "-37.03803013567934", "parallax": "20.071969180755204", "phot_g_mean_mag": "8.824495", "bp_rp": "0.93199253", "radial_velocity": "-6.827579", "eso": {}}, {"source_id": "6751948215795445632", "ra": "296.96243082811253", "dec": "-29.15917468354571", "parallax": "28.87058796100158", "phot_g_mean_mag": "7.5317693", "bp_rp": "0.8332691", "radial_velocity": "19.270832", "eso": {}}, {"source_id": "6791851623068396928", "ra": "309.3154101682701", "dec": "-34.15823509841823", "parallax": "21.552067717509075", "phot_g_mean_mag": "7.90641", "bp_rp": "0.7254205", "radial_velocity": "-0.21359944", "eso": {}}, {"source_id": "1316920711932740992", "ra": "242.8483551622526", "dec": "28.438179986767704", "parallax": "22.582060197239308", "phot_g_mean_mag": "7.4592943", "bp_rp": "0.7246232", "radial_velocity": "-34.686428", "eso": {}}, {"source_id": "4195088763545903616", "ra": "295.1883273340307", "dec": "-7.512607736436359", "parallax": "20.592587243492446", "phot_g_mean_mag": "6.851338", "bp_rp": "0.66009617", "radial_velocity": "16.142633", "eso": {}}, {"source_id": "4219087666404378624", "ra": "304.5415674470679", "dec": "-4.728759642640448", "parallax": "25.104027582611064", "phot_g_mean_mag": "7.1477184", "bp_rp": "0.7047558", "radial_velocity": "15.617399", "eso": {"UVES": 3}}, {"source_id": "4238455254495155456", "ra": "296.6738968848519", "dec": "-1.0586430127224775", "parallax": "21.145460996580415", "phot_g_mean_mag": "8.691456", "bp_rp": "0.9401369", "radial_velocity": "-47.247837", "eso": {}}, {"source_id": "4387079367952007168", "ra": "260.2786715052397", "dec": "1.444249509384865", "parallax": "25.245883016188497", "phot_g_mean_mag": "6.8062816", "bp_rp": "0.7687783", "radial_velocity": "-161.93765", "eso": {}}, {"source_id": "4422809716282811776", "ra": "237.0386473010155", "dec": "1.5710024915264806", "parallax": "46.157463771431985", "phot_g_mean_mag": "7.2348747", "bp_rp": "0.9835715", "radial_velocity": "-26.641733", "eso": {}}, {"source_id": "4456798781792997888", "ra": "242.3604944507556", "dec": "11.574901242468474", "parallax": "29.60316027669737", "phot_g_mean_mag": "7.301699", "bp_rp": "0.7587943", "radial_velocity": "-36.34768", "eso": {}}, {"source_id": "4464207428579939840", "ra": "243.32769175625037", "dec": "13.525035100479368", "parallax": "41.12866428603436", "phot_g_mean_mag": "7.1817074", "bp_rp": "0.9196267", "radial_velocity": "18.163221", "eso": {}}, {"source_id": "4489634322169337856", "ra": "267.34617201017966", "dec": "10.338693634422999", "parallax": "27.999449206092038", "phot_g_mean_mag": "8.1832075", "bp_rp": "0.99080753", "radial_velocity": "-21.53517", "eso": {}}, {"source_id": "4559467329305126912", "ra": "253.1715589215468", "dec": "18.06203173218228", "parallax": "21.138561303563275", "phot_g_mean_mag": "6.6903486", "bp_rp": "0.6768904", "radial_velocity": "-42.472076", "eso": {}}, {"source_id": "1814241194252808704", "ra": "310.1886475671385", "dec": "19.936923797338924", "parallax": "47.745688014679516", "phot_g_mean_mag": "6.2850785", "bp_rp": "0.7860074", "radial_velocity": "-35.428917", "eso": {}}, {"source_id": "4245501440394297088", "ra": "307.29889766719504", "dec": "4.4567219452142215", "parallax": "26.619008304464277", "phot_g_mean_mag": "6.956328", "bp_rp": "0.6756797", "radial_velocity": "-14.994912", "eso": {}}, {"source_id": "4589819416510147200", "ra": "273.6833930454912", "dec": "29.20623843327384", "parallax": "23.361194347987226", "phot_g_mean_mag": "6.366737", "bp_rp": "0.7531996", "radial_velocity": "1.7396027", "eso": {}}, {"source_id": "5902781985395901056", "ra": "230.53352239350676", "dec": "-47.92838428955642", "parallax": "28.551195549892856", "phot_g_mean_mag": "4.856768", "bp_rp": "0.6681161", "radial_velocity": "-11.593608", "eso": {"UVES": 11}}, {"source_id": "5935065983239912320", "ra": "243.5415062089158", "dec": "-50.78683036081952", "parallax": "23.229119255565248", "phot_g_mean_mag": "8.47432", "bp_rp": "0.8621659", "radial_velocity": "44.43637", "eso": {}}, {"source_id": "5848156426657892480", "ra": "219.43862180151382", "dec": "-67.93325837056041", "parallax": "36.01908647368874", "phot_g_mean_mag": "5.9151883", "bp_rp": "0.67767715", "radial_velocity": "-30.564247", "eso": {}}, {"source_id": "5914455775207048704", "ra": "254.21740770562857", "dec": "-60.95662546729889", "parallax": "24.829498805487816", "phot_g_mean_mag": "8.548586", "bp_rp": "0.9828677", "radial_velocity": "3.7787611", "eso": {}}, {"source_id": "5789459823019926656", "ra": "203.2993147531125", "dec": "-77.57006729221371", "parallax": "28.921138822548688", "phot_g_mean_mag": "6.4013333", "bp_rp": "0.6318407", "radial_velocity": "-28.847198", "eso": {}}, {"source_id": "5817572475614527232", "ra": "254.2753214074225", "dec": "-64.18902889015447", "parallax": "21.1583065656666", "phot_g_mean_mag": "7.8654118", "bp_rp": "0.7604914", "radial_velocity": "17.993542", "eso": {}}, {"source_id": "5354913895517945856", "ra": "154.6560483556092", "dec": "-56.109878865825344", "parallax": "27.94693352653671", "phot_g_mean_mag": "5.694129", "bp_rp": "0.6431947", "radial_velocity": "12.507217", "eso": {}}, {"source_id": "5524982093479504384", "ra": "131.91816769599885", "dec": "-41.737806425866864", "parallax": "34.45449069799191", "phot_g_mean_mag": "6.2208323", "bp_rp": "0.7192507", "radial_velocity": "9.307374", "eso": {"ESPRESSO": 5, "UVES": 84}}, {"source_id": "4640547928074989312", "ra": "47.58143034802491", "dec": "-74.29585253881649", "parallax": "21.930212821128645", "phot_g_mean_mag": "6.776643", "bp_rp": "0.67958784", "radial_velocity": "-3.3922844", "eso": {}}, {"source_id": "4772123907590995200", "ra": "79.61717004188031", "dec": "-51.42767748178157", "parallax": "27.324176775141183", "phot_g_mean_mag": "8.09143", "bp_rp": "0.90816784", "radial_velocity": "0.5991159", "eso": {}}, {"source_id": "4849521486007360768", "ra": "52.5565214253707", "dec": "-41.370703255980686", "parallax": "28.80400631175962", "phot_g_mean_mag": "6.001815", "bp_rp": "0.64063025", "radial_velocity": "17.812777", "eso": {}}, {"source_id": "6350283492745097728", "ra": "355.9846353440285", "dec": "-82.5089079878372", "parallax": "25.06515531320241", "phot_g_mean_mag": "7.5402284", "bp_rp": "0.7811909", "radial_velocity": "28.092167", "eso": {}}, {"source_id": "6355511567456203392", "ra": "327.12610774000314", "dec": "-78.43271410371209", "parallax": "22.767206966189107", "phot_g_mean_mag": "8.511678", "bp_rp": "0.9701915", "radial_velocity": "9.2792225", "eso": {}}, {"source_id": "6370513647703084544", "ra": "325.12181169515554", "dec": "-74.07333789088827", "parallax": "44.97597509904499", "phot_g_mean_mag": "6.87618", "bp_rp": "0.9189677", "radial_velocity": "34.32828", "eso": {"FEROS": 1}}, {"source_id": "6407428994690988928", "ra": "338.98368670298856", "dec": "-59.864840792917406", "parallax": "20.931737658313722", "phot_g_mean_mag": "7.8168154", "bp_rp": "0.78586006", "radial_velocity": "36.037712", "eso": {"ESPRESSO": 2, "FEROS": 52}}, {"source_id": "6420588087293438976", "ra": "293.790444094129", "dec": "-69.97636468404869", "parallax": "26.20481841069711", "phot_g_mean_mag": "7.733316", "bp_rp": "0.82106304", "radial_velocity": "3.2186317", "eso": {"FEROS": 54, "UVES": 1}}, {"source_id": "6421555485729063424", "ra": "287.4791866712677", "dec": "-68.29987825177207", "parallax": "27.282968673884017", "phot_g_mean_mag": "7.380656", "bp_rp": "0.7739401", "radial_velocity": "-9.2785225", "eso": {"FEROS": 3}}, {"source_id": "6434759761383343744", "ra": "285.27433578638596", "dec": "-66.19439143570368", "parallax": "24.74100387908903", "phot_g_mean_mag": "8.420653", "bp_rp": "0.89250326", "radial_velocity": "-92.031105", "eso": {"FEROS": 34}}, {"source_id": "6501182220888038784", "ra": "351.1753546318136", "dec": "-52.70257803831126", "parallax": "23.082787267637727", "phot_g_mean_mag": "7.4315906", "bp_rp": "0.84331083", "radial_velocity": "23.281855", "eso": {"ESPRESSO": 2, "UVES": 4}}, {"source_id": "6519024545827374336", "ra": "340.65372802922366", "dec": "-47.21228468595998", "parallax": "41.98112440135986", "phot_g_mean_mag": "5.8687344", "bp_rp": "0.7198372", "radial_velocity": "18.681446", "eso": {"FEROS": 1}}, {"source_id": "6566046809856626944", "ra": "325.7603124542644", "dec": "-43.49637530573716", "parallax": "25.14022952406242", "phot_g_mean_mag": "6.5539575", "bp_rp": "0.68816996", "radial_velocity": "-21.930777", "eso": {}}, {"source_id": "6705807588293737344", "ra": "280.7872012111986", "dec": "-45.901753505661205", "parallax": "20.098903000936335", "phot_g_mean_mag": "8.372688", "bp_rp": "0.80784607", "radial_velocity": "-45.28018", "eso": {}}, {"source_id": "2333120282087272192", "ra": "0.9242756184918811", "dec": "-28.396824632432214", "parallax": "24.831398020740615", "phot_g_mean_mag": "8.083604", "bp_rp": "0.91766596", "radial_velocity": "10.896708", "eso": {}}, {"source_id": "2382711653818308224", "ra": "345.0809029893489", "dec": "-26.154467392272803", "parallax": "31.46965354481666", "phot_g_mean_mag": "7.3222528", "bp_rp": "0.8280034", "radial_velocity": "6.4068522", "eso": {"FEROS": 3, "UVES": 10}}, {"source_id": "2392703946771797248", "ra": "350.6789551172092", "dec": "-19.69135105122326", "parallax": "23.32211156673729", "phot_g_mean_mag": "8.52524", "bp_rp": "0.8899417", "radial_velocity": "33.970375", "eso": {}}, {"source_id": "2453895484005571200", "ra": "23.860711493910284", "dec": "-13.38086321412446", "parallax": "26.360584540383453", "phot_g_mean_mag": "7.042079", "bp_rp": "0.74321604", "radial_velocity": "11.429324", "eso": {}}, {"source_id": "2681306546265329920", "ra": "327.91579394822963", "dec": "0.8490837201736248", "parallax": "26.41521631559859", "phot_g_mean_mag": "8.406979", "bp_rp": "0.99179506", "radial_velocity": "-29.016832", "eso": {"UVES": 2}}, {"source_id": "2731215165755803648", "ra": "337.17452352434805", "dec": "13.368122572286131", "parallax": "20.529517240608467", "phot_g_mean_mag": "8.739204", "bp_rp": "0.8961773", "radial_velocity": "-28.396317", "eso": {}}, {"source_id": "2733025442931625472", "ra": "339.4682492054607", "dec": "14.98578946321324", "parallax": "20.32749445548093", "phot_g_mean_mag": "7.727219", "bp_rp": "0.7191963", "radial_velocity": "-13.110222", "eso": {}}, {"source_id": "4985404248272413440", "ra": "19.889111885034282", "dec": "-39.3623767893135", "parallax": "25.586014118462657", "phot_g_mean_mag": "7.5095286", "bp_rp": "0.7757349", "radial_velocity": "2.5434642", "eso": {}}, {"source_id": "5064574724769475968", "ra": "42.98499788942525", "dec": "-30.81404621914154", "parallax": "31.541768915847552", "phot_g_mean_mag": "6.264977", "bp_rp": "0.65446234", "radial_velocity": "9.765037", "eso": {"ESPRESSO": 3}}, {"source_id": "6612242034982766848", "ra": "332.53884519084073", "dec": "-32.54834854643202", "parallax": "54.177261374214716", "phot_g_mean_mag": "4.804227", "bp_rp": "0.64425135", "radial_velocity": "-16.343624", "eso": {"FEROS": 4}}, {"source_id": "6912276699251278848", "ra": "315.1412210744957", "dec": "-4.730873757763143", "parallax": "36.9970633173991", "phot_g_mean_mag": "6.0636535", "bp_rp": "0.7795558", "radial_velocity": "-17.48725", "eso": {"UVES": 4}}, {"source_id": "98692614681349248", "ra": "29.196526879292175", "dec": "23.051061336826347", "parallax": "29.50992365312771", "phot_g_mean_mag": "7.675037", "bp_rp": "0.8663783", "radial_velocity": "1.902681", "eso": {}}, {"source_id": "100254161710940928", "ra": "32.84775594570956", "dec": "21.377286485317654", "parallax": "31.774947554520814", "phot_g_mean_mag": "7.171292", "bp_rp": "0.8316779", "radial_velocity": "19.93871", "eso": {"FEROS": 1}}, {"source_id": "104453918172129792", "ra": "31.626044458733055", "dec": "24.333335458599315", "parallax": "42.11414378930216", "phot_g_mean_mag": "6.736007", "bp_rp": "0.8234887", "radial_velocity": "-4.6484113", "eso": {}}, {"source_id": "2583819069342416384", "ra": "18.07939822426086", "dec": "12.281588867845738", "parallax": "28.68689134587687", "phot_g_mean_mag": "6.771456", "bp_rp": "0.64913416", "radial_velocity": "-0.9414089", "eso": {}}, {"source_id": "2786115533677290240", "ra": "20.577107739436876", "dec": "18.682697114091155", "parallax": "38.349530453265004", "phot_g_mean_mag": "6.812192", "bp_rp": "0.79681396", "radial_velocity": "5.655151", "eso": {}}, {"source_id": "2835207319109249920", "ra": "344.3675708158258", "dec": "20.769104345387106", "parallax": "64.40477219179482", "phot_g_mean_mag": "5.283212", "bp_rp": "0.82859325", "radial_velocity": "-33.331707", "eso": {"ESPRESSO": 3, "UVES": 19}}, {"source_id": "2966316109264052096", "ra": "88.6260867669922", "dec": "-19.704450577695503", "parallax": "42.97592388775852", "phot_g_mean_mag": "7.3360686", "bp_rp": "0.8863406", "radial_velocity": "42.455254", "eso": {"ESPRESSO": 8, "FEROS": 2}}, {"source_id": "4859696950726480512", "ra": "52.70866926350638", "dec": "-37.37238556165994", "parallax": "23.5091316417987", "phot_g_mean_mag": "7.5599103", "bp_rp": "0.7799454", "radial_velocity": "79.441734", "eso": {"UVES": 2}}, {"source_id": "4896050378554002816", "ra": "65.834185899565", "dec": "-25.396191337198886", "parallax": "24.91332510774515", "phot_g_mean_mag": "7.6729965", "bp_rp": "0.7917166", "radial_velocity": "12.244011", "eso": {}}, {"source_id": "5617564477239812864", "ra": "108.26068324647576", "dec": "-24.225117576340473", "parallax": "27.456598627063602", "phot_g_mean_mag": "7.0260973", "bp_rp": "0.7915759", "radial_velocity": "32.42259", "eso": {"UVES": 2}}, {"source_id": "5652765616871308416", "ra": "134.8256902491886", "dec": "-24.729250747790903", "parallax": "26.482914497159616", "phot_g_mean_mag": "8.099358", "bp_rp": "0.89282227", "radial_velocity": "18.716623", "eso": {}}, {"source_id": "5693255510530645120", "ra": "125.8818966649458", "dec": "-27.822511186750933", "parallax": "29.242025652828243", "phot_g_mean_mag": "6.957898", "bp_rp": "0.7409625", "radial_velocity": "13.142109", "eso": {"UVES": 2}}, {"source_id": "43499295632961152", "ra": "58.617798657770095", "dec": "16.615308973295537", "parallax": "48.84903420928158", "phot_g_mean_mag": "6.654032", "bp_rp": "0.8854923", "radial_velocity": "18.656647", "eso": {}}, {"source_id": "56092345901034880", "ra": "49.58287502224772", "dec": "18.171161727458347", "parallax": "21.123794047273243", "phot_g_mean_mag": "7.3742", "bp_rp": "0.7894287", "radial_velocity": "-80.46147", "eso": {}}, {"source_id": "722750881753727232", "ra": "157.9401720409831", "dec": "24.08203017080464", "parallax": "26.598097996762984", "phot_g_mean_mag": "7.7643228", "bp_rp": "0.858973", "radial_velocity": "-23.41853", "eso": {}}, {"source_id": "864706010518988800", "ra": "112.5977434666533", "dec": "19.813360206014032", "parallax": "23.62357004613626", "phot_g_mean_mag": "6.921181", "bp_rp": "0.776947", "radial_velocity": "59.776695", "eso": {}}, {"source_id": "1177532908459199488", "ra": "216.02431418198233", "dec": "11.246959827283069", "parallax": "26.391948913993254", "phot_g_mean_mag": "7.289853", "bp_rp": "0.72398186", "radial_velocity": "0.3767008", "eso": {}}, {"source_id": "1248784766632571648", "ra": "204.50259247811738", "dec": "19.146649973670524", "parallax": "20.620990982522564", "phot_g_mean_mag": "8.642145", "bp_rp": "0.8578787", "radial_velocity": "-44.86546", "eso": {}}, {"source_id": "1463742931994936960", "ra": "193.7843717330256", "dec": "27.76603761487799", "parallax": "23.229414189258726", "phot_g_mean_mag": "7.6373262", "bp_rp": "0.83897686", "radial_velocity": "-39.410034", "eso": {}}, {"source_id": "3311514210073309056", "ra": "63.60737116437495", "dec": "14.624971001435416", "parallax": "20.37607494359422", "phot_g_mean_mag": "8.303924", "bp_rp": "0.8634658", "radial_velocity": "38.02682", "eso": {"UVES": 4}}, {"source_id": "3332911492327546368", "ra": "85.00743485868725", "dec": "6.059477325334309", "parallax": "21.436367860610055", "phot_g_mean_mag": "8.47384", "bp_rp": "0.96747494", "radial_velocity": "-22.075537", "eso": {}}, {"source_id": "3353254695123859456", "ra": "103.66257727177505", "dec": "13.175820998465632", "parallax": "33.3247969082499", "phot_g_mean_mag": "7.490988", "bp_rp": "0.86022854", "radial_velocity": "22.258911", "eso": {}}, {"source_id": "3360548511663388032", "ra": "107.34134111560681", "dec": "16.548882168484873", "parallax": "20.612401369680097", "phot_g_mean_mag": "7.650969", "bp_rp": "0.6932759", "radial_velocity": "7.5057774", "eso": {}}, {"source_id": "3407611182744289152", "ra": "76.86503115411448", "dec": "18.645131947885993", "parallax": "62.82520159680892", "phot_g_mean_mag": "4.7324567", "bp_rp": "0.8440647", "radial_velocity": "20.598745", "eso": {"FEROS": 6}}, {"source_id": "3466924200065405184", "ra": "179.17539118766783", "dec": "-32.26819317735372", "parallax": "28.23362192586913", "phot_g_mean_mag": "7.5025935", "bp_rp": "0.81046057", "radial_velocity": "6.348075", "eso": {"UVES": 4}}, {"source_id": "3489635093773121024", "ra": "181.91320558407537", "dec": "-23.976952313787315", "parallax": "26.16252002112715", "phot_g_mean_mag": "6.5708227", "bp_rp": "0.76534367", "radial_velocity": "10.693535", "eso": {"FEROS": 1}}, {"source_id": "3510647723052100864", "ra": "196.44206751609755", "dec": "-18.825913321333953", "parallax": "22.947329667512673", "phot_g_mean_mag": "8.212148", "bp_rp": "0.8417978", "radial_velocity": "-13.4053955", "eso": {}}, {"source_id": "3529518709839090176", "ra": "191.62723893050017", "dec": "-11.81223376312395", "parallax": "32.0310224854085", "phot_g_mean_mag": "6.723432", "bp_rp": "0.8345933", "radial_velocity": "-20.244274", "eso": {"UVES": 10}}, {"source_id": "3585098090614578688", "ra": "174.6671612971082", "dec": "-13.201382200818335", "parallax": "37.244992141255395", "phot_g_mean_mag": "5.3572874", "bp_rp": "0.7103176", "radial_velocity": "-22.451454", "eso": {}}, {"source_id": "3595124404006427648", "ra": "178.55409228983552", "dec": "-7.49119890469282", "parallax": "22.35466383753567", "phot_g_mean_mag": "9.015106", "bp_rp": "0.9554415", "radial_velocity": "-39.272175", "eso": {}}, {"source_id": "3802311255541766400", "ra": "162.32868013457437", "dec": "-2.7765564799284737", "parallax": "24.073920619169947", "phot_g_mean_mag": "8.448237", "bp_rp": "0.9529033", "radial_velocity": "-1.4671477", "eso": {}}, {"source_id": "3807408316570153984", "ra": "161.37195605459954", "dec": "1.0107276836695351", "parallax": "20.331909333238958", "phot_g_mean_mag": "7.8127294", "bp_rp": "0.85993814", "radial_velocity": "12.011072", "eso": {}}, {"source_id": "3846998397391770368", "ra": "146.84575859478284", "dec": "2.3152258333062106", "parallax": "21.39570137072309", "phot_g_mean_mag": "7.583359", "bp_rp": "0.7438407", "radial_velocity": "7.7570176", "eso": {}}, {"source_id": "3858034058160776192", "ra": "161.63770938339593", "dec": "4.644919850899781", "parallax": "29.25711723776519", "phot_g_mean_mag": "7.78108", "bp_rp": "0.8722601", "radial_velocity": "45.404198", "eso": {"FEROS": 1}}, {"source_id": "3894318972669834624", "ra": "183.5137498706847", "dec": "4.995100226067519", "parallax": "23.436229936533632", "phot_g_mean_mag": "8.508923", "bp_rp": "0.959291", "radial_velocity": "19.689548", "eso": {}}, {"source_id": "3975223065466473216", "ra": "178.64404458470028", "dec": "19.427757363695925", "parallax": "25.37474468753704", "phot_g_mean_mag": "8.234547", "bp_rp": "0.88951635", "radial_velocity": "5.800637", "eso": {"ESPRESSO": 5}}, {"source_id": "5381537023379295232", "ra": "176.62052057636615", "dec": "-40.498565145629904", "parallax": "107.30243385622761", "phot_g_mean_mag": "4.701676", "bp_rp": "0.85635567", "radial_velocity": "16.94267", "eso": {"ESPRESSO": 80, "FEROS": 6, "UVES": 29}}, {"source_id": "5421903256333750912", "ra": "151.86677942036602", "dec": "-37.503809462336406", "parallax": "21.666181413975263", "phot_g_mean_mag": "8.4171095", "bp_rp": "0.8990197", "radial_velocity": "37.025482", "eso": {}}, {"source_id": "5753456417840610048", "ra": "129.4891156185001", "dec": "-8.881724253109807", "parallax": "20.521349348686158", "phot_g_mean_mag": "6.907824", "bp_rp": "0.65853214", "radial_velocity": "13.847268", "eso": {}}, {"source_id": "6298822878231170944", "ra": "216.83825390652325", "dec": "-14.839047782256491", "parallax": "22.112374031849974", "phot_g_mean_mag": "7.19483", "bp_rp": "0.6503868", "radial_velocity": "-37.657692", "eso": {}}, {"source_id": "6048759505620173056", "ra": "244.8434600449821", "dec": "-25.760889488288765", "parallax": "27.67866902513575", "phot_g_mean_mag": "7.984734", "bp_rp": "0.8922777", "radial_velocity": "-10.577498", "eso": {}}, {"source_id": "4048037707717866880", "ra": "276.95618574852966", "dec": "-29.81678977185125", "parallax": "27.146142222445636", "phot_g_mean_mag": "5.7723784", "bp_rp": "0.6698203", "radial_velocity": "-17.098122", "eso": {"UVES": 4}}, {"source_id": "4048636941542753152", "ra": "278.68183416802526", "dec": "-28.07280018576978", "parallax": "22.480921833386006", "phot_g_mean_mag": "8.418899", "bp_rp": "0.93453693", "radial_velocity": "21.371288", "eso": {"ESPRESSO": 25}}, {"source_id": "6696911783307547648", "ra": "301.0116009911806", "dec": "-37.87821484795341", "parallax": "36.05197619287464", "phot_g_mean_mag": "6.7596135", "bp_rp": "0.781569", "radial_velocity": "-41.303566", "eso": {"UVES": 1}}, {"source_id": "4157159353297751552", "ra": "272.38869809796375", "dec": "-10.822514553287535", "parallax": "26.23850226591988", "phot_g_mean_mag": "8.635917", "bp_rp": "0.9548397", "radial_velocity": "-38.04452", "eso": {}}, {"source_id": "1167718049194619136", "ra": "226.88582508377152", "dec": "9.225199663187755", "parallax": "30.40685589977081", "phot_g_mean_mag": "7.3783727", "bp_rp": "0.84178543", "radial_velocity": "-35.478817", "eso": {}}, {"source_id": "1201535242998445568", "ra": "244.0609050554278", "dec": "19.52594946692118", "parallax": "23.45729020341622", "phot_g_mean_mag": "7.670563", "bp_rp": "0.7080283", "radial_velocity": "2.399547", "eso": {}}, {"source_id": "4201307051566729984", "ra": "289.99985220831434", "dec": "-9.325014269821958", "parallax": "20.73395093466188", "phot_g_mean_mag": "8.378475", "bp_rp": "0.98636913", "radial_velocity": "-46.591373", "eso": {"UVES": 1}}, {"source_id": "4283652432293739392", "ra": "280.33506950847544", "dec": "4.557995052903621", "parallax": "23.852624848129455", "phot_g_mean_mag": "6.9399753", "bp_rp": "0.6461458", "radial_velocity": "-1.4348321", "eso": {}}, {"source_id": "4444857157801998080", "ra": "255.06864747487262", "dec": "10.82236232711615", "parallax": "23.67855322227339", "phot_g_mean_mag": "7.2450647", "bp_rp": "0.74008703", "radial_velocity": "-1.3824979", "eso": {}}, {"source_id": "4461045267503021696", "ra": "250.45929396339858", "dec": "13.147749637878588", "parallax": "20.24918885599842", "phot_g_mean_mag": "7.7890544", "bp_rp": "0.84051514", "radial_velocity": "-76.097534", "eso": {}}, {"source_id": "6879764552737781888", "ra": "303.1086735704209", "dec": "-12.618367150928863", "parallax": "35.41853396937967", "phot_g_mean_mag": "5.721998", "bp_rp": "0.64554596", "radial_velocity": "27.201628", "eso": {"FEROS": 10}}, {"source_id": "6889877723248418816", "ra": "313.27352050812414", "dec": "-11.573457794994894", "parallax": "22.63632831901596", "phot_g_mean_mag": "6.2262344", "bp_rp": "0.8232188", "radial_velocity": "-3.0540054", "eso": {"UVES": 4}}, {"source_id": "4240508901699614976", "ra": "296.8887085271002", "dec": "1.0878789078298048", "parallax": "21.37267902453227", "phot_g_mean_mag": "6.635182", "bp_rp": "0.7569337", "radial_velocity": "", "eso": {}}, {"source_id": "4315524628748103680", "ra": "293.5086754975625", "dec": "12.63452054150994", "parallax": "21.331248655681765", "phot_g_mean_mag": "8.634178", "bp_rp": "0.94719124", "radial_velocity": "1.9856178", "eso": {}}, {"source_id": "4515409726606328448", "ra": "289.4072823315117", "dec": "19.16043307982861", "parallax": "22.147504312008273", "phot_g_mean_mag": "8.174782", "bp_rp": "0.88295174", "radial_velocity": "-65.41051", "eso": {}}, {"source_id": "4576418328280987392", "ra": "272.2258550841907", "dec": "21.99572203847857", "parallax": "21.861519370714113", "phot_g_mean_mag": "8.510264", "bp_rp": "0.8368664", "radial_velocity": "-5.5402746", "eso": {}}, {"source_id": "1754191435419155456", "ra": "309.7838788610473", "dec": "10.086336871828863", "parallax": "33.32130651887004", "phot_g_mean_mag": "4.8967876", "bp_rp": "0.8794241", "radial_velocity": "-54.09726", "eso": {}}, {"source_id": "4587501474203803136", "ra": "279.5669099023348", "dec": "28.923332290046734", "parallax": "27.715644008962954", "phot_g_mean_mag": "8.234519", "bp_rp": "0.8941474", "radial_velocity": "30.912954", "eso": {}}, {"source_id": "6133033601555979648", "ra": "188.67615972095874", "dec": "-44.67393782590503", "parallax": "35.136929753845564", "phot_g_mean_mag": "5.6075745", "bp_rp": "0.83737993", "radial_velocity": "18.048462", "eso": {"ESPRESSO": 8, "UVES": 4}}, {"source_id": "5800160441999825792", "ra": "224.5374852567385", "dec": "-68.59095815616253", "parallax": "21.340847647778062", "phot_g_mean_mag": "8.458235", "bp_rp": "0.84892416", "radial_velocity": "-4.6816077", "eso": {"UVES": 2}}, {"source_id": "5826369431966294400", "ra": "236.3075362820801", "dec": "-63.13221186190585", "parallax": "26.03925403114905", "phot_g_mean_mag": "8.6659775", "bp_rp": "0.9561968", "radial_velocity": "64.15604", "eso": {"FEROS": 1}}, {"source_id": "5362689710457060352", "ra": "162.97279787730966", "dec": "-49.15778110295626", "parallax": "20.18651223257799", "phot_g_mean_mag": "6.441533", "bp_rp": "0.66898775", "radial_velocity": "18.87825", "eso": {}}, {"source_id": "5790389872417570816", "ra": "212.1090387533397", "dec": "-74.84948901093674", "parallax": "34.149105120135566", "phot_g_mean_mag": "5.8753195", "bp_rp": "0.7564416", "radial_velocity": "-21.171196", "eso": {}}, {"source_id": "5857725167148317184", "ra": "200.12501000291968", "dec": "-66.534221690859", "parallax": "22.574478496967043", "phot_g_mean_mag": "8.379916", "bp_rp": "0.8433943", "radial_velocity": "37.74727", "eso": {}}, {"source_id": "5302967365577746176", "ra": "131.10074252525416", "dec": "-57.76876673844141", "parallax": "20.57302065027355", "phot_g_mean_mag": "7.963312", "bp_rp": "0.76773596", "radial_velocity": "-11.632478", "eso": {}}, {"source_id": "5357273275677035648", "ra": "157.07643251033605", "dec": "-52.56143381486194", "parallax": "29.94472561037959", "phot_g_mean_mag": "8.179211", "bp_rp": "0.97608185", "radial_velocity": "14.203234", "eso": {}}, {"source_id": "5534026023301322368", "ra": "119.99487675262891", "dec": "-41.70440229111745", "parallax": "20.399383169188713", "phot_g_mean_mag": "7.5941443", "bp_rp": "0.72576857", "radial_velocity": "-6.3766055", "eso": {}}, {"source_id": "4635422588982399616", "ra": "0.11693315064591522", "dec": "-79.06225821825313", "parallax": "24.939420796749136", "phot_g_mean_mag": "8.467084", "bp_rp": "0.9453449", "radial_velocity": "9.832661", "eso": {}}, {"source_id": "4648266774581927296", "ra": "81.32744004329236", "dec": "-75.69377655197798", "parallax": "27.6850515066893", "phot_g_mean_mag": "7.035059", "bp_rp": "0.7106247", "radial_velocity": "46.271923", "eso": {}}, {"source_id": "4652980484022414336", "ra": "73.2728400404443", "dec": "-72.40647506545731", "parallax": "30.821735482919117", "phot_g_mean_mag": "6.157237", "bp_rp": "0.6841755", "radial_velocity": "27.326693", "eso": {}}, {"source_id": "4702964901081513600", "ra": "1.245344436281496", "dec": "-70.21287062553881", "parallax": "22.581795270176073", "phot_g_mean_mag": "7.968244", "bp_rp": "0.84336853", "radial_velocity": "12.225283", "eso": {}}, {"source_id": "4785068939021426176", "ra": "70.95662504083947", "dec": "-48.32573935792689", "parallax": "23.74094031799044", "phot_g_mean_mag": "6.788118", "bp_rp": "0.6558347", "radial_velocity": "13.576667", "eso": {}}, {"source_id": "5266722205277801984", "ra": "99.45867788174958", "dec": "-70.93128545319566", "parallax": "25.677946952758422", "phot_g_mean_mag": "8.509679", "bp_rp": "0.93249893", "radial_velocity": "17.568888", "eso": {"ESPRESSO": 76}}, {"source_id": "5275154016353718912", "ra": "113.68451078614993", "dec": "-66.64247651173189", "parallax": "23.12481459867182", "phot_g_mean_mag": "8.572475", "bp_rp": "0.99634695", "radial_velocity": "44.601814", "eso": {}}, {"source_id": "5567900121118276736", "ra": "91.11797968025996", "dec": "-45.03550909781477", "parallax": "36.853080741848444", "phot_g_mean_mag": "6.2179294", "bp_rp": "0.6820526", "radial_velocity": "27.551954", "eso": {"FEROS": 3, "UVES": 2}}, {"source_id": "6458951765971500672", "ra": "325.99500210330194", "dec": "-57.32548219576969", "parallax": "22.54260342602801", "phot_g_mean_mag": "6.3742285", "bp_rp": "0.651144", "radial_velocity": "36.903633", "eso": {"UVES": 2}}, {"source_id": "6485226795340143488", "ra": "359.4005062333625", "dec": "-65.7756764957619", "parallax": "24.302072589210475", "phot_g_mean_mag": "8.056912", "bp_rp": "0.7893095", "radial_velocity": "0.76351047", "eso": {}}, {"source_id": "1733624555023358976", "ra": "316.9958291572083", "dec": "5.651143996957238", "parallax": "22.21885805095339", "phot_g_mean_mag": "8.095674", "bp_rp": "0.8663101", "radial_velocity": "-11.826695", "eso": {}}, {"source_id": "2525176376157018112", "ra": "15.257321206333113", "dec": "-4.648644513312274", "parallax": "25.43153276301837", "phot_g_mean_mag": "7.2134757", "bp_rp": "0.69534636", "radial_velocity": "27.468443", "eso": {}}, {"source_id": "2630189151177742336", "ra": "348.53365316119425", "dec": "-8.924489817645181", "parallax": "24.54208322195888", "phot_g_mean_mag": "7.4260116", "bp_rp": "0.7264514", "radial_velocity": "-29.797792", "eso": {"UVES": 4}}, {"source_id": "2630815941525069696", "ra": "351.02705182319306", "dec": "-7.550775667954392", "parallax": "32.86808872800783", "phot_g_mean_mag": "7.4537115", "bp_rp": "0.8515539", "radial_velocity": "4.044846", "eso": {}}, {"source_id": "2647148976301673472", "ra": "353.8469125218627", "dec": "2.2267306485769565", "parallax": "27.129495595685146", "phot_g_mean_mag": "8.24037", "bp_rp": "0.9069681", "radial_velocity": "-12.52727", "eso": {}}, {"source_id": "2756461464558262272", "ra": "355.29512301449114", "dec": "6.265262704191175", "parallax": "20.023334351072126", "phot_g_mean_mag": "8.39538", "bp_rp": "0.8673639", "radial_velocity": "-19.625828", "eso": {"ESPRESSO": 4}}, {"source_id": "5025366311917644416", "ra": "26.909509199836883", "dec": "-26.751247077436652", "parallax": "22.70975613843819", "phot_g_mean_mag": "8.763269", "bp_rp": "0.98716354", "radial_velocity": "22.858559", "eso": {"FEROS": 1}}, {"source_id": "5180281796554292224", "ra": "43.789639025472255", "dec": "-7.99600054427639", "parallax": "27.545038239935533", "phot_g_mean_mag": "8.147956", "bp_rp": "0.90641737", "radial_velocity": "14.907094", "eso": {}}, {"source_id": "6828450688663428224", "ra": "322.0510632268729", "dec": "-21.727457021499845", "parallax": "20.77046982702212", "phot_g_mean_mag": "7.845261", "bp_rp": "0.8271532", "radial_velocity": "-9.789552", "eso": {"UVES": 2}}, {"source_id": "89278733563399936", "ra": "37.851402953957354", "dec": "22.08774725383097", "parallax": "23.032310692727822", "phot_g_mean_mag": "7.880377", "bp_rp": "0.81820774", "radial_velocity": "4.8887253", "eso": {"FEROS": 2}}, {"source_id": "100380639907919872", "ra": "33.07455634342676", "dec": "21.982406427032114", "parallax": "29.086690086674313", "phot_g_mean_mag": "8.256831", "bp_rp": "0.95652723", "radial_velocity": "-12.277285", "eso": {}}, {"source_id": "104717285566534016", "ra": "29.49004522076913", "dec": "23.603022990610224", "parallax": "24.827222520107185", "phot_g_mean_mag": "7.1904883", "bp_rp": "0.7239685", "radial_velocity": "-6.9390616", "eso": {}}, {"source_id": "1800378139330660992", "ra": "325.2775336990128", "dec": "26.750261824848405", "parallax": "36.81634395169819", "phot_g_mean_mag": "7.276047", "bp_rp": "0.8647032", "radial_velocity": "-43.22259", "eso": {}}, {"source_id": "1896891139712235008", "ra": "329.66827482875885", "dec": "29.810909714223325", "parallax": "34.19095836125017", "phot_g_mean_mag": "6.819438", "bp_rp": "0.6979499", "radial_velocity": "9.202195", "eso": {"UVES": 4}}, {"source_id": "2800690281858225408", "ra": "5.751843438616466", "dec": "22.374018073793998", "parallax": "24.695496412438782", "phot_g_mean_mag": "7.4228916", "bp_rp": "0.80809164", "radial_velocity": "-30.605295", "eso": {}}, {"source_id": "2825753374536867584", "ra": "350.70429867857024", "dec": "20.558896974164703", "parallax": "25.76671508012313", "phot_g_mean_mag": "6.5324926", "bp_rp": "0.78076124", "radial_velocity": "-26.160309", "eso": {}}, {"source_id": "2913411183149615744", "ra": "93.43849957760986", "dec": "-23.861442821791584", "parallax": "59.884974594804035", "phot_g_mean_mag": "6.1939135", "bp_rp": "0.8696642", "radial_velocity": "21.692287", "eso": {"FEROS": 7, "UVES": 4}}, {"source_id": "2915595771015445632", "ra": "86.89571495624291", "dec": "-24.035486948171723", "parallax": "21.035790150028596", "phot_g_mean_mag": "8.529169", "bp_rp": "0.9079857", "radial_velocity": "30.619902", "eso": {}}, {"source_id": "2964533629117326848", "ra": "83.42745915663681", "dec": "-22.804751267596533", "parallax": "20.15909997346858", "phot_g_mean_mag": "9.162332", "bp_rp": "0.9494324", "radial_velocity": "9.623266", "eso": {}}, {"source_id": "2964794041574370560", "ra": "82.08696960395218", "dec": "-22.4332621601926", "parallax": "29.377896089063483", "phot_g_mean_mag": "6.643065", "bp_rp": "0.76011324", "radial_velocity": "28.997492", "eso": {"ESPRESSO": 31, "UVES": 6}}, {"source_id": "2966790170574625408", "ra": "86.11823173613037", "dec": "-20.126407478840715", "parallax": "38.22533945749203", "phot_g_mean_mag": "6.2134695", "bp_rp": "0.7237625", "radial_velocity": "37.833538", "eso": {"UVES": 2}}, {"source_id": "2971536418673198976", "ra": "82.24597386185904", "dec": "-17.42957483064111", "parallax": "20.255322751960634", "phot_g_mean_mag": "8.125704", "bp_rp": "0.8167815", "radial_velocity": "-9.473776", "eso": {}}, {"source_id": "3028617461760208128", "ra": "112.34024753989097", "dec": "-14.999676107673624", "parallax": "27.408681139487662", "phot_g_mean_mag": "6.2321787", "bp_rp": "0.7085614", "radial_velocity": "-5.303804", "eso": {}}, {"source_id": "5105133853288251264", "ra": "49.67403341132661", "dec": "-18.561237937055136", "parallax": "27.97401525127984", "phot_g_mean_mag": "8.027439", "bp_rp": "0.9035568", "radial_velocity": "", "eso": {}}, {"source_id": "5115917863333570176", "ra": "55.46792285080153", "dec": "-10.698997334326148", "parallax": "32.87050297457864", "phot_g_mean_mag": "8.051729", "bp_rp": "0.94303894", "radial_velocity": "2.1255515", "eso": {"FEROS": 1}}, {"source_id": "5166951386298774144", "ra": "47.42660361631229", "dec": "-9.58010688681339", "parallax": "25.824569765512877", "phot_g_mean_mag": "8.299968", "bp_rp": "0.93128204", "radial_velocity": "14.233895", "eso": {"FEROS": 5, "UVES": 14}}, {"source_id": "5548164986925169024", "ra": "123.39200276365901", "dec": "-31.734710854047783", "parallax": "36.78157369510674", "phot_g_mean_mag": "6.577511", "bp_rp": "0.761466", "radial_velocity": "51.689796", "eso": {"ESPRESSO": 1}}, {"source_id": "144786577364287104", "ra": "69.05823675251195", "dec": "21.536357766359902", "parallax": "29.50321029617971", "phot_g_mean_mag": "7.4254136", "bp_rp": "0.83244896", "radial_velocity": "-6.657092", "eso": {"FEROS": 1}}, {"source_id": "584923525799308160", "ra": "134.84367840563763", "dec": "7.414375253333305", "parallax": "20.96264753696841", "phot_g_mean_mag": "7.678006", "bp_rp": "0.8617034", "radial_velocity": "3.0426993", "eso": {}}, {"source_id": "621757886884093696", "ra": "152.66447740852", "dec": "16.036971193629416", "parallax": "21.065613462832207", "phot_g_mean_mag": "8.233876", "bp_rp": "0.90965843", "radial_velocity": "30.488703", "eso": {}}, {"source_id": "666427539629086976", "ra": "129.68943839613348", "dec": "23.68524446703721", "parallax": "28.37571220384387", "phot_g_mean_mag": "6.7626004", "bp_rp": "0.70770836", "radial_velocity": "6.2783246", "eso": {}}, {"source_id": "740110521088884096", "ra": "149.81444751324972", "dec": "27.522676387538546", "parallax": "22.671066376314318", "phot_g_mean_mag": "7.637308", "bp_rp": "0.7530074", "radial_velocity": "3.1909702", "eso": {}}, {"source_id": "1177532908459199872", "ra": "216.02318244196357", "dec": "11.24930672090088", "parallax": "26.358161952738445", "phot_g_mean_mag": "7.517275", "bp_rp": "0.76154137", "radial_velocity": "1.7474089", "eso": {}}, {"source_id": "1247459236645743232", "ra": "210.4889054525439", "dec": "21.556163466563316", "parallax": "20.33718481638323", "phot_g_mean_mag": "7.7918186", "bp_rp": "0.7616763", "radial_velocity": "-0.37269437", "eso": {}}, {"source_id": "1260316891261098752", "ra": "212.61234188543577", "dec": "27.632429545448815", "parallax": "20.6025131740588", "phot_g_mean_mag": "8.388435", "bp_rp": "0.8279929", "radial_velocity": "-19.688652", "eso": {}}, {"source_id": "1265671031852406272", "ra": "222.66864296512153", "dec": "22.907340986533875", "parallax": "26.925362370188957", "phot_g_mean_mag": "7.3433833", "bp_rp": "0.81704044", "radial_velocity": "-26.916014", "eso": {}}, {"source_id": "3037245604373149824", "ra": "117.98254620425466", "dec": "-11.033746122992076", "parallax": "31.749311437273192", "phot_g_mean_mag": "7.539187", "bp_rp": "0.86571455", "radial_velocity": "52.833168", "eso": {"FEROS": 1}}, {"source_id": "3131495878545906688", "ra": "96.20891490507256", "dec": "4.871828167763587", "parallax": "20.78626178959207", "phot_g_mean_mag": "6.9236097", "bp_rp": "0.63880587", "radial_velocity": "15.30327", "eso": {}}, {"source_id": "3163696103058961920", "ra": "112.61063188184364", "dec": "13.866365764152548", "parallax": "20.590640645866248", "phot_g_mean_mag": "9.178497", "bp_rp": "0.9828081", "radial_velocity": "-2.296701", "eso": {}}, {"source_id": "3239548665775613056", "ra": "73.98346861421052", "dec": "4.66957842736715", "parallax": "27.864952750214865", "phot_g_mean_mag": "6.8914375", "bp_rp": "0.7185292", "radial_velocity": "43.869595", "eso": {"UVES": 3}}, {"source_id": "3466217935643483392", "ra": "181.52123754457904", "dec": "-32.962089770594226", "parallax": "20.665659471654546", "phot_g_mean_mag": "6.469783", "bp_rp": "0.7673621", "radial_velocity": "31.922356", "eso": {"UVES": 4}}, {"source_id": "3480332916165099904", "ra": "176.81449587216233", "dec": "-30.287523728032085", "parallax": "56.36256241989167", "phot_g_mean_mag": "6.304665", "bp_rp": "0.8605957", "radial_velocity": "13.997693", "eso": {"ESPRESSO": 31, "FEROS": 3}}, {"source_id": "3550148743432500992", "ra": "162.91206631581224", "dec": "-22.071704521972844", "parallax": "27.875802922606443", "phot_g_mean_mag": "7.68236", "bp_rp": "0.86838865", "radial_velocity": "4.3021717", "eso": {}}, {"source_id": "3656209284314369664", "ra": "217.12887086291758", "dec": "2.7890590017239183", "parallax": "25.186255418046272", "phot_g_mean_mag": "6.8939996", "bp_rp": "0.69227314", "radial_velocity": "-5.7283053", "eso": {"UVES": 2}}, {"source_id": "3683160646477904512", "ra": "189.27914736402798", "dec": "-2.3227550036636737", "parallax": "20.99995234931116", "phot_g_mean_mag": "6.8413453", "bp_rp": "0.63836336", "radial_velocity": "-26.024416", "eso": {}}, {"source_id": "3703335104303461248", "ra": "190.66215223701687", "dec": "2.576457608002295", "parallax": "32.5687386575053", "phot_g_mean_mag": "7.8426704", "bp_rp": "0.94325924", "radial_velocity": "6.3954973", "eso": {}}, {"source_id": "3835743693290897152", "ra": "152.34671840932162", "dec": "2.3710530679177473", "parallax": "27.818143473477438", "phot_g_mean_mag": "7.388994", "bp_rp": "0.80700064", "radial_velocity": "-17.805084", "eso": {"ESPRESSO": 3, "UVES": 2}}, {"source_id": "3897923790261367424", "ra": "180.05860380686246", "dec": "5.362956886936707", "parallax": "25.880095593785107", "phot_g_mean_mag": "8.212556", "bp_rp": "0.92469454", "radial_velocity": "15.395531", "eso": {}}, {"source_id": "5459060117921483008", "ra": "153.35107247993722", "dec": "-33.031431827717", "parallax": "44.579190842530565", "phot_g_mean_mag": "6.2337136", "bp_rp": "0.754859", "radial_velocity": "43.93154", "eso": {"FEROS": 5}}, {"source_id": "6010370499513722752", "ra": "238.72956199878627", "dec": "-37.510493069226364", "parallax": "21.00323481595224", "phot_g_mean_mag": "8.387841", "bp_rp": "0.86048937", "radial_velocity": "48.09825", "eso": {}}, {"source_id": "6040683111683727616", "ra": "237.77216369291762", "dec": "-30.087049196124937", "parallax": "23.331489349974444", "phot_g_mean_mag": "8.017467", "bp_rp": "0.88323593", "radial_velocity": "-34.03566", "eso": {}}, {"source_id": "4041857799496807936", "ra": "266.9886891599007", "dec": "-34.021390083597176", "parallax": "37.2047680269085", "phot_g_mean_mag": "7.021645", "bp_rp": "0.869884", "radial_velocity": "2.4378386", "eso": {}}, {"source_id": "6321929733564266752", "ra": "229.22043974263514", "dec": "-8.286563099314343", "parallax": "25.73333093949518", "phot_g_mean_mag": "7.9062567", "bp_rp": "0.8590617", "radial_velocity": "-32.31707", "eso": {"ESPRESSO": 2}}, {"source_id": "4122343906051101184", "ra": "260.14231640956194", "dec": "-19.33438492739363", "parallax": "20.96835127315822", "phot_g_mean_mag": "6.3757396", "bp_rp": "0.7309079", "radial_velocity": "-68.56453", "eso": {"UVES": 2}}, {"source_id": "4141387309974054912", "ra": "258.5391170017507", "dec": "-13.284645963797626", "parallax": "20.760479519802633", "phot_g_mean_mag": "9.158641", "bp_rp": "0.9879837", "radial_velocity": "13.520361", "eso": {}}, {"source_id": "4172029187218518784", "ra": "269.9842984603455", "dec": "-6.97853098760597", "parallax": "20.134631912608263", "phot_g_mean_mag": "8.942787", "bp_rp": "0.9778795", "radial_velocity": "-71.652695", "eso": {}}, {"source_id": "6717765704956910464", "ra": "287.98954247653916", "dec": "-39.500961469953175", "parallax": "20.343719309872597", "phot_g_mean_mag": "8.6264305", "bp_rp": "0.8591957", "radial_velocity": "-48.657093", "eso": {}}, {"source_id": "1195829091186588544", "ra": "236.09113611166265", "dec": "15.29952392720735", "parallax": "20.983193130572825", "phot_g_mean_mag": "8.0275345", "bp_rp": "0.79865074", "radial_velocity": "0.756134", "eso": {}}, {"source_id": "4208110932591708672", "ra": "292.7190306825881", "dec": "-6.515051610793219", "parallax": "29.959913950868028", "phot_g_mean_mag": "7.116767", "bp_rp": "0.8060403", "radial_velocity": "58.264477", "eso": {"ESPRESSO": 1, "UVES": 3}}, {"source_id": "4229021960117124992", "ra": "307.20844188528014", "dec": "-1.7347408681175573", "parallax": "31.087279847912832", "phot_g_mean_mag": "6.68989", "bp_rp": "0.7062807", "radial_velocity": "-6.483254", "eso": {"UVES": 1}}, {"source_id": "4391793627134797952", "ra": "257.8438505794274", "dec": "4.690276244278443", "parallax": "23.41969009512926", "phot_g_mean_mag": "6.6609864", "bp_rp": "0.69198847", "radial_velocity": "-33.520046", "eso": {}}, {"source_id": "4454311789570387456", "ra": "239.72708650112784", "dec": "8.565735252839897", "parallax": "20.63896174364193", "phot_g_mean_mag": "8.7597275", "bp_rp": "0.9448099", "radial_velocity": "-27.90673", "eso": {}}, {"source_id": "4469921487441710208", "ra": "272.4751193637071", "dec": "3.118971427447026", "parallax": "21.694166262448224", "phot_g_mean_mag": "5.5461683", "bp_rp": "0.6468334", "radial_velocity": "-13.693134", "eso": {"UVES": 28}}, {"source_id": "4555422981940923520", "ra": "264.23161696653096", "dec": "19.921971683520326", "parallax": "22.703403235987526", "phot_g_mean_mag": "8.319142", "bp_rp": "0.9296813", "radial_velocity": "1.3055166", "eso": {}}, {"source_id": "4581407396644208128", "ra": "265.83928595461083", "dec": "24.328142536454287", "parallax": "25.398881712222135", "phot_g_mean_mag": "5.5763855", "bp_rp": "0.8200879", "radial_velocity": "-23.227846", "eso": {}}, {"source_id": "4595150639153952000", "ra": "261.89591470925683", "dec": "27.0272823540382", "parallax": "20.3366119206895", "phot_g_mean_mag": "8.507621", "bp_rp": "0.903357", "radial_velocity": "-72.01321", "eso": {}}, {"source_id": "6874580149255288832", "ra": "303.34261984850633", "dec": "-15.433296908892524", "parallax": "28.24828878672177", "phot_g_mean_mag": "8.476135", "bp_rp": "0.9300747", "radial_velocity": "24.321484", "eso": {}}, {"source_id": "1834892977574788864", "ra": "301.2300262450273", "dec": "26.052524091837256", "parallax": "22.279376719941002", "phot_g_mean_mag": "7.529469", "bp_rp": "0.8208928", "radial_velocity": "23.693787", "eso": {}}, {"source_id": "4297465218928881792", "ra": "300.03424381701626", "dec": "7.760635569420445", "parallax": "21.383131687677416", "phot_g_mean_mag": "7.1255403", "bp_rp": "0.63740635", "radial_velocity": "-12.529273", "eso": {}}, {"source_id": "5888394257280681856", "ra": "228.0401754332299", "dec": "-52.10671755760118", "parallax": "28.4981051159344", "phot_g_mean_mag": "6.5857663", "bp_rp": "0.6535301", "radial_velocity": "-8.772171", "eso": {"FEROS": 4}}, {"source_id": "6084550808131463936", "ra": "196.64325132949423", "dec": "-49.68658368171098", "parallax": "29.46424359959621", "phot_g_mean_mag": "8.271973", "bp_rp": "0.9768863", "radial_velocity": "-24.516743", "eso": {"FEROS": 1}}, {"source_id": "5833702727880302592", "ra": "234.98451843715384", "dec": "-59.909287651831505", "parallax": "32.75583006183149", "phot_g_mean_mag": "5.83574", "bp_rp": "0.6469116", "radial_velocity": "-22.668802", "eso": {}}, {"source_id": "5853033379243626240", "ra": "217.95199609641614", "dec": "-64.2845344375142", "parallax": "22.902264917164374", "phot_g_mean_mag": "8.059495", "bp_rp": "0.80626917", "radial_velocity": "-9.796053", "eso": {}}, {"source_id": "5891531404470141824", "ra": "220.12098341098695", "dec": "-57.03096208719124", "parallax": "38.99804407628826", "phot_g_mean_mag": "7.2177124", "bp_rp": "0.8531132", "radial_velocity": "34.59329", "eso": {}}, {"source_id": "5950107164894727552", "ra": "261.59385703843583", "dec": "-48.61498607847672", "parallax": "21.828613447917405", "phot_g_mean_mag": "6.929098", "bp_rp": "0.627656", "radial_velocity": "-15.922009", "eso": {}}, {"source_id": "5850313393604523648", "ra": "206.5683897882473", "dec": "-68.13893984499437", "parallax": "21.181164426872485", "phot_g_mean_mag": "8.462633", "bp_rp": "0.95201254", "radial_velocity": "25.60032", "eso": {}}, {"source_id": "5237611398000522880", "ra": "171.42657109534605", "dec": "-63.972769897809265", "parallax": "35.89244037528839", "phot_g_mean_mag": "5.0421324", "bp_rp": "0.65469456", "radial_velocity": "", "eso": {}}, {"source_id": "5424836719001215360", "ra": "144.29941443366025", "dec": "-43.27273758349013", "parallax": "24.4793851019632", "phot_g_mean_mag": "8.03754", "bp_rp": "0.9373336", "radial_velocity": "28.991192", "eso": {"FEROS": 1, "UVES": 9}}, {"source_id": "5431693410946794240", "ra": "145.20238920941227", "dec": "-40.55525383007613", "parallax": "20.63929724397571", "phot_g_mean_mag": "8.830402", "bp_rp": "0.94931126", "radial_velocity": "-1.794709", "eso": {}}, {"source_id": "5321012172453217152", "ra": "127.78806820591798", "dec": "-54.087601557394045", "parallax": "23.740850236972243", "phot_g_mean_mag": "8.019536", "bp_rp": "0.92951536", "radial_velocity": "23.747581", "eso": {"FEROS": 1}}, {"source_id": "5508648676451080448", "ra": "108.87037315726373", "dec": "-48.229284481034455", "parallax": "24.94593321371237", "phot_g_mean_mag": "7.52796", "bp_rp": "0.7644062", "radial_velocity": "14.616622", "eso": {"UVES": 2}}, {"source_id": "5518807064384744832", "ra": "120.61165836232105", "dec": "-46.335283461023906", "parallax": "27.482385122026063", "phot_g_mean_mag": "7.3688035", "bp_rp": "0.8010478", "radial_velocity": "23.027054", "eso": {"FEROS": 8}}, {"source_id": "5554191685019290368", "ra": "91.19468037723394", "dec": "-48.4588394627942", "parallax": "32.471191757736875", "phot_g_mean_mag": "7.4207797", "bp_rp": "0.8924184", "radial_velocity": "", "eso": {}}, {"source_id": "6358900502811978112", "ra": "328.3388436402374", "dec": "-73.72602846648937", "parallax": "20.947880049066413", "phot_g_mean_mag": "8.535049", "bp_rp": "0.91932726", "radial_velocity": "-17.18878", "eso": {}}, {"source_id": "6407416556465673728", "ra": "339.2633108124317", "dec": "-59.55893537685453", "parallax": "31.696915776060088", "phot_g_mean_mag": "8.003015", "bp_rp": "0.9392829", "radial_velocity": "78.315", "eso": {}}, {"source_id": "6493004500076966144", "ra": "348.79231006138576", "dec": "-56.728840391332994", "parallax": "32.683214050132406", "phot_g_mean_mag": "7.772385", "bp_rp": "0.87662125", "radial_velocity": "-10.33757", "eso": {}}, {"source_id": "6564370535661198592", "ra": "325.98835342499956", "dec": "-46.61350936420431", "parallax": "21.625895174995232", "phot_g_mean_mag": "9.004458", "bp_rp": "0.997838", "radial_velocity": "33.03149", "eso": {}}, {"source_id": "2341817487782612480", "ra": "359.8708680614745", "dec": "-20.03597376421632", "parallax": "38.20040492298039", "phot_g_mean_mag": "7.292809", "bp_rp": "0.90612555", "radial_velocity": "20.931", "eso": {}}, {"source_id": "2473608009504466688", "ra": "12.530589460777726", "dec": "-10.645349194018035", "parallax": "62.8022373482063", "phot_g_mean_mag": "5.0295434", "bp_rp": "0.6863718", "radial_velocity": "8.212956", "eso": {"FEROS": 2, "UVES": 6}}, {"source_id": "2723309333554727936", "ra": "335.7896036020637", "dec": "9.461240470012982", "parallax": "30.35175924019691", "phot_g_mean_mag": "7.7384534", "bp_rp": "0.8627963", "radial_velocity": "-5.601137", "eso": {}}, {"source_id": "4958188247405308672", "ra": "30.136438035803955", "dec": "-40.73316109913184", "parallax": "28.427389252851032", "phot_g_mean_mag": "7.2168746", "bp_rp": "0.8185816", "radial_velocity": "-26.549625", "eso": {"ESPRESSO": 1}}, {"source_id": "4967153630858709120", "ra": "36.92654530804023", "dec": "-33.89654120451049", "parallax": "21.01497330534512", "phot_g_mean_mag": "7.4651275", "bp_rp": "0.6828232", "radial_velocity": "12.307586", "eso": {}}, {"source_id": "5006886991788263808", "ra": "9.99269698858313", "dec": "-33.961930339187525", "parallax": "23.769360632060316", "phot_g_mean_mag": "6.5521326", "bp_rp": "0.69785595", "radial_velocity": "-12.346072", "eso": {}}, {"source_id": "5040068191130125056", "ra": "19.870991526370467", "dec": "-24.951748689967012", "parallax": "20.33532401926295", "phot_g_mean_mag": "8.241073", "bp_rp": "0.8500638", "radial_velocity": "9.747899", "eso": {}}, {"source_id": "6597043794989308928", "ra": "338.3796545739906", "dec": "-35.445158204368674", "parallax": "29.803461017224425", "phot_g_mean_mag": "7.6357465", "bp_rp": "0.8815794", "radial_velocity": "-50.521313", "eso": {}}, {"source_id": "6812424241536340864", "ra": "330.9717161620406", "dec": "-24.84631881237642", "parallax": "21.289541200309245", "phot_g_mean_mag": "8.323255", "bp_rp": "0.876461", "radial_velocity": "-18.817099", "eso": {}}, {"source_id": "302447890428345088", "ra": "27.53265381379446", "dec": "29.464294388644902", "parallax": "37.09797393815778", "phot_g_mean_mag": "7.8490167", "bp_rp": "0.9602208", "radial_velocity": "-39.59729", "eso": {}}, {"source_id": "1801257095797922048", "ra": "325.18006060370016", "dec": "28.75581578633238", "parallax": "21.184264761563515", "phot_g_mean_mag": "7.2697372", "bp_rp": "0.7562604", "radial_velocity": "-44.42321", "eso": {}}, {"source_id": "2552059469815827456", "ra": "16.46441258632417", "dec": "4.908861569234761", "parallax": "22.68158427245363", "phot_g_mean_mag": "7.1482916", "bp_rp": "0.6505661", "radial_velocity": "-7.192743", "eso": {}}, {"source_id": "2560723587082820096", "ra": "25.277326856415364", "dec": "3.714372140288223", "parallax": "24.05367627030779", "phot_g_mean_mag": "7.9185824", "bp_rp": "0.88254595", "radial_velocity": "-9.400417", "eso": {}}, {"source_id": "2817129458162461056", "ra": "348.45107754691946", "dec": "15.367315357046436", "parallax": "21.756757669108115", "phot_g_mean_mag": "7.2487354", "bp_rp": "0.69493866", "radial_velocity": "-2.7940748", "eso": {"UVES": 2}}, {"source_id": "2898239468873596800", "ra": "96.18199432228883", "dec": "-28.780657042949517", "parallax": "45.678236401815006", "phot_g_mean_mag": "6.221316", "bp_rp": "0.7916875", "radial_velocity": "-3.8458424", "eso": {"ESPRESSO": 32, "FEROS": 1, "UVES": 4}}, {"source_id": "2953324520391127040", "ra": "99.26663599913415", "dec": "-12.737790194039752", "parallax": "22.495845212715803", "phot_g_mean_mag": "8.024128", "bp_rp": "0.8580947", "radial_velocity": "32.947704", "eso": {}}, {"source_id": "3009908378049913216", "ra": "81.769924030883", "dec": "-11.901181972232846", "parallax": "37.25385312651125", "phot_g_mean_mag": "6.209527", "bp_rp": "0.73616266", "radial_velocity": "21.099588", "eso": {"FEROS": 3, "UVES": 6}}, {"source_id": "3023347090200968704", "ra": "84.93457909143262", "dec": "-5.049396774913874", "parallax": "20.623725662966304", "phot_g_mean_mag": "8.738366", "bp_rp": "0.8451452", "radial_velocity": "20.417917", "eso": {}}, {"source_id": "3182634954624823168", "ra": "77.97571781680705", "dec": "-9.115639165355212", "parallax": "34.90358038546335", "phot_g_mean_mag": "7.8328495", "bp_rp": "0.9699197", "radial_velocity": "4.8129277", "eso": {}}, {"source_id": "4858250264007576320", "ra": "60.516453547708544", "dec": "-34.48223418502332", "parallax": "21.65824485403931", "phot_g_mean_mag": "7.059163", "bp_rp": "0.8382435", "radial_velocity": "", "eso": {"UVES": 6}}, {"source_id": "4867596937475715968", "ra": "68.65985291787906", "dec": "-35.65905111429036", "parallax": "35.554012080483346", "phot_g_mean_mag": "7.416061", "bp_rp": "0.9276414", "radial_velocity": "-9.935869", "eso": {"FEROS": 2}}, {"source_id": "5086419581269459712", "ra": "53.996335673693416", "dec": "-23.51834170236802", "parallax": "22.124212791796335", "phot_g_mean_mag": "8.654196", "bp_rp": "0.94584084", "radial_velocity": "-2.465799", "eso": {}}, {"source_id": "5181087291900789888", "ra": "45.91381780795167", "dec": "-5.6674695035064575", "parallax": "26.596668279811926", "phot_g_mean_mag": "7.909175", "bp_rp": "0.8650336", "radial_velocity": "-20.353678", "eso": {"FEROS": 1}}, {"source_id": "5591534810757827712", "ra": "111.73848769477851", "dec": "-34.31511655160008", "parallax": "20.71218481158817", "phot_g_mean_mag": "8.013113", "bp_rp": "0.80553436", "radial_velocity": "64.646645", "eso": {}}, {"source_id": "594232609715397120", "ra": "140.32697594548807", "dec": "13.111098340645587", "parallax": "23.14135101956035", "phot_g_mean_mag": "6.563224", "bp_rp": "0.62956285", "radial_velocity": "-9.650666", "eso": {}}, {"source_id": "616126841161896192", "ra": "148.45172380310674", "dec": "14.73919890938859", "parallax": "22.33826517785965", "phot_g_mean_mag": "7.577253", "bp_rp": "0.7248597", "radial_velocity": "8.59002", "eso": {}}, {"source_id": "692554890842416384", "ra": "133.45815772726687", "dec": "26.913221955534695", "parallax": "26.39029483531473", "phot_g_mean_mag": "8.2664175", "bp_rp": "0.93542576", "radial_velocity": "-18.03744", "eso": {}}, {"source_id": "3234481566438473600", "ra": "79.95446269323226", "dec": "2.51316806507769", "parallax": "26.925640139358173", "phot_g_mean_mag": "6.8718987", "bp_rp": "0.69576406", "radial_velocity": "35.553246", "eso": {}}, {"source_id": "3304387519299731200", "ra": "63.57776051605098", "dec": "12.347825561691478", "parallax": "26.521913292561965", "phot_g_mean_mag": "6.575496", "bp_rp": "0.8465543", "radial_velocity": "43.21656", "eso": {"FEROS": 1}}, {"source_id": "3331079263579035648", "ra": "96.70962024631214", "dec": "11.657842741583078", "parallax": "21.973050402459684", "phot_g_mean_mag": "8.0257635", "bp_rp": "0.7780137", "radial_velocity": "28.541088", "eso": {}}, {"source_id": "3380020312835165312", "ra": "104.44237534565454", "dec": "22.891920546981986", "parallax": "22.487003910038883", "phot_g_mean_mag": "7.5038576", "bp_rp": "0.70152617", "radial_velocity": "-29.590996", "eso": {}}, {"source_id": "3392510077730740480", "ra": "75.14099488802792", "dec": "14.384044652381204", "parallax": "26.629619073941086", "phot_g_mean_mag": "6.5902123", "bp_rp": "0.82801914", "radial_velocity": "-18.078573", "eso": {}}, {"source_id": "3406823245223942528", "ra": "72.26509216185069", "dec": "18.641073544602044", "parallax": "21.919610281288232", "phot_g_mean_mag": "8.757004", "bp_rp": "0.9974756", "radial_velocity": "41.534042", "eso": {"UVES": 5}}, {"source_id": "3419558132494086784", "ra": "75.40675092596632", "dec": "24.63538259629666", "parallax": "26.818432537136818", "phot_g_mean_mag": "7.8939247", "bp_rp": "0.8629637", "radial_velocity": "30.532187", "eso": {}}, {"source_id": "3430305893018254208", "ra": "91.99622582546912", "dec": "27.427810056423738", "parallax": "20.983394738799618", "phot_g_mean_mag": "7.88188", "bp_rp": "0.77335405", "radial_velocity": "34.559376", "eso": {"FEROS": 2}}, {"source_id": "3515325354755401600", "ra": "188.95352180369335", "dec": "-20.46597709054089", "parallax": "27.56902003444097", "phot_g_mean_mag": "7.872741", "bp_rp": "0.85802746", "radial_velocity": "-5.9855843", "eso": {}}, {"source_id": "3541517989471607168", "ra": "172.94752032532085", "dec": "-20.77633698999809", "parallax": "25.523660612240008", "phot_g_mean_mag": "6.119365", "bp_rp": "0.6860056", "radial_velocity": "13.599158", "eso": {}}, {"source_id": "3556153623107879296", "ra": "163.16339655089521", "dec": "-17.030778761681894", "parallax": "20.275707565439294", "phot_g_mean_mag": "7.623264", "bp_rp": "0.7547455", "radial_velocity": "20.852936", "eso": {}}, {"source_id": "3634809077186320384", "ra": "199.16690545917228", "dec": "-5.57371189746545", "parallax": "20.963389207521324", "phot_g_mean_mag": "7.7085657", "bp_rp": "0.7346792", "radial_velocity": "19.28824", "eso": {}}, {"source_id": "3681795018676501120", "ra": "190.74621063495127", "dec": "-4.050130810953343", "parallax": "22.23091573949542", "phot_g_mean_mag": "7.6739864", "bp_rp": "0.8312197", "radial_velocity": "35.643665", "eso": {"UVES": 1}}, {"source_id": "3767373998691458944", "ra": "154.75087430521248", "dec": "-11.185650913669704", "parallax": "21.557105288183386", "phot_g_mean_mag": "7.687535", "bp_rp": "0.7246299", "radial_velocity": "-13.480042", "eso": {}}, {"source_id": "3790864377424095104", "ra": "169.84081347663704", "dec": "-1.6562754880623478", "parallax": "20.27774438861979", "phot_g_mean_mag": "7.6891313", "bp_rp": "0.84711695", "radial_velocity": "19.28098", "eso": {}}, {"source_id": "3811594088617869056", "ra": "167.4163506592084", "dec": "2.4564178131775454", "parallax": "34.045019969316755", "phot_g_mean_mag": "7.4945292", "bp_rp": "0.93226004", "radial_velocity": "10.061204", "eso": {}}, {"source_id": "3812355328621651328", "ra": "171.68560957308574", "dec": "3.0139034277745487", "parallax": "55.00898217815488", "phot_g_mean_mag": "6.2983956", "bp_rp": "0.937201", "radial_velocity": "4.1849303", "eso": {"ESPRESSO": 9, "UVES": 8}}, {"source_id": "3850860191466416768", "ra": "142.7753726573327", "dec": "3.0798268085091656", "parallax": "21.4501911138324", "phot_g_mean_mag": "7.1572347", "bp_rp": "0.63758945", "radial_velocity": "11.489714", "eso": {}}, {"source_id": "3887696579776144512", "ra": "155.68128409869732", "dec": "15.344005069807327", "parallax": "34.48050826446813", "phot_g_mean_mag": "7.1889", "bp_rp": "0.8136668", "radial_velocity": "19.616667", "eso": {}}, {"source_id": "3889978822317300864", "ra": "158.98028853020543", "dec": "18.04531350179431", "parallax": "26.26940521375217", "phot_g_mean_mag": "8.122381", "bp_rp": "0.948658", "radial_velocity": "-4.548492", "eso": {}}, {"source_id": "3977050728669174912", "ra": "170.45488231874128", "dec": "18.189595417975774", "parallax": "30.947232932672133", "phot_g_mean_mag": "7.7677383", "bp_rp": "0.9955411", "radial_velocity": "-3.4230802", "eso": {}}, {"source_id": "3980413791141148672", "ra": "171.7633492256689", "dec": "21.8515120044475", "parallax": "30.788293570459235", "phot_g_mean_mag": "7.4473343", "bp_rp": "0.82519007", "radial_velocity": "1.7041726", "eso": {}}, {"source_id": "5667757560993680896", "ra": "152.08838301420136", "dec": "-19.75667431543987", "parallax": "26.777783734532843", "phot_g_mean_mag": "7.1375794", "bp_rp": "0.7757964", "radial_velocity": "14.855333", "eso": {}}, {"source_id": "6166183842771027328", "ra": "202.33684537818345", "dec": "-35.571314001279916", "parallax": "30.944015901377263", "phot_g_mean_mag": "7.093907", "bp_rp": "0.86458397", "radial_velocity": "-17.464016", "eso": {"ESPRESSO": 26, "UVES": 6}}, {"source_id": "6170498459541782528", "ra": "209.6504811286496", "dec": "-34.00265383330218", "parallax": "26.16305428533592", "phot_g_mean_mag": "7.9783354", "bp_rp": "0.8700824", "radial_velocity": "56.833687", "eso": {"FEROS": 1}}, {"source_id": "6228931528258993920", "ra": "222.12035397337434", "dec": "-25.486275651290075", "parallax": "20.176696980393864", "phot_g_mean_mag": "6.914458", "bp_rp": "0.6540532", "radial_velocity": "-14.477847", "eso": {}}, {"source_id": "6273817200676712960", "ra": "210.15029512607887", "dec": "-26.267119199087283", "parallax": "22.437532502564654", "phot_g_mean_mag": "6.620581", "bp_rp": "0.6313176", "radial_velocity": "5.9849544", "eso": {}}, {"source_id": "6284269226929879936", "ra": "216.64370767708155", "dec": "-18.820050247694844", "parallax": "22.848706136279354", "phot_g_mean_mag": "8.644735", "bp_rp": "0.9951458", "radial_velocity": "", "eso": {}}, {"source_id": "6340258145722256896", "ra": "222.85832808716313", "dec": "-2.457952178746961", "parallax": "21.136273618994082", "phot_g_mean_mag": "8.299228", "bp_rp": "0.8649616", "radial_velocity": "-6.990739", "eso": {}}, {"source_id": "4130605425932372992", "ra": "252.1338477679108", "dec": "-19.28930603699675", "parallax": "26.127921949625566", "phot_g_mean_mag": "7.893187", "bp_rp": "0.921618", "radial_velocity": "-75.49686", "eso": {}}, {"source_id": "4131459682047594624", "ra": "248.87324145243778", "dec": "-18.672280247008818", "parallax": "24.55188561371233", "phot_g_mean_mag": "8.555126", "bp_rp": "0.9464984", "radial_velocity": "-5.791778", "eso": {}}, {"source_id": "4134094524223600640", "ra": "252.0080237727089", "dec": "-15.964357818725505", "parallax": "22.854139364002325", "phot_g_mean_mag": "7.298229", "bp_rp": "0.71661425", "radial_velocity": "58.09697", "eso": {"UVES": 1}}, {"source_id": "4171518910746338560", "ra": "268.7400560512502", "dec": "-7.734193796859096", "parallax": "22.896968680470117", "phot_g_mean_mag": "6.7420936", "bp_rp": "0.89893866", "radial_velocity": "-73.07922", "eso": {}}, {"source_id": "4176501313320676992", "ra": "265.9339006264291", "dec": "-3.9189353001796716", "parallax": "33.61289444532433", "phot_g_mean_mag": "7.500781", "bp_rp": "0.85218143", "radial_velocity": "-17.145285", "eso": {"ESPRESSO": 69}}, {"source_id": "6720894296599427072", "ra": "271.2241248328773", "dec": "-44.66217441012866", "parallax": "24.362978476695922", "phot_g_mean_mag": "8.280149", "bp_rp": "0.89094734", "radial_velocity": "21.476297", "eso": {"UVES": 2}}, {"source_id": "4038724053986441856", "ra": "271.5994139188408", "dec": "-36.01974711463257", "parallax": "58.42963261536771", "phot_g_mean_mag": "5.8053985", "bp_rp": "0.78098965", "radial_velocity": "14.987815", "eso": {"FEROS": 3}}, {"source_id": "4374694881291983360", "ra": "261.706106946822", "dec": "0.26860640169697486", "parallax": "20.199700150855172", "phot_g_mean_mag": "9.360798", "bp_rp": "0.97014046", "radial_velocity": "-10.858757", "eso": {}}, {"source_id": "6899801640323201024", "ra": "308.54904460280375", "dec": "-13.720779541049087", "parallax": "29.751941821305074", "phot_g_mean_mag": "5.9944525", "bp_rp": "0.7022915", "radial_velocity": "-41.33489", "eso": {"UVES": 2}}, {"source_id": "4315097159237974784", "ra": "293.73301112175847", "dec": "11.42413379922585", "parallax": "24.278166860658498", "phot_g_mean_mag": "7.7604027", "bp_rp": "0.82223463", "radial_velocity": "-59.618782", "eso": {}}, {"source_id": "1816347480580341632", "ra": "305.68707577527636", "dec": "19.849864063321952", "parallax": "20.47240530538801", "phot_g_mean_mag": "6.965622", "bp_rp": "0.86833096", "radial_velocity": "16.663523", "eso": {"UVES": 2}}, {"source_id": "5906633952564270848", "ra": "225.47177734452393", "dec": "-47.00780120185012", "parallax": "38.035411935552446", "phot_g_mean_mag": "7.555837", "bp_rp": "0.9039111", "radial_velocity": "-7.67993", "eso": {}}, {"source_id": "6061388186966894848", "ra": "193.0429716572698", "dec": "-56.57541828740024", "parallax": "20.20533778593704", "phot_g_mean_mag": "8.332485", "bp_rp": "0.7979336", "radial_velocity": "3.404639", "eso": {"UVES": 2}}, {"source_id": "6096944567620073088", "ra": "212.57356201691692", "dec": "-44.9911019580737", "parallax": "20.453475033428422", "phot_g_mean_mag": "8.146397", "bp_rp": "0.84124374", "radial_velocity": "47.995453", "eso": {"UVES": 2}}, {"source_id": "6112250529692621312", "ra": "205.7435918639809", "dec": "-42.18229402782629", "parallax": "21.610381561907314", "phot_g_mean_mag": "7.3824477", "bp_rp": "0.74040985", "radial_velocity": "8.23469", "eso": {}}, {"source_id": "5836174636208941184", "ra": "240.61729278984703", "dec": "-56.854995144206626", "parallax": "28.481672391268678", "phot_g_mean_mag": "6.403072", "bp_rp": "0.6579375", "radial_velocity": "-10.729039", "eso": {}}, {"source_id": "5951458533405131264", "ra": "257.96311777074277", "dec": "-45.87480519718873", "parallax": "30.82887644006943", "phot_g_mean_mag": "7.372472", "bp_rp": "0.8022437", "radial_velocity": "12.622952", "eso": {}}, {"source_id": "5833117718964892928", "ra": "239.4189573482563", "dec": "-60.20070894318049", "parallax": "28.20656404516758", "phot_g_mean_mag": "7.1927395", "bp_rp": "0.77312946", "radial_velocity": "-11.862094", "eso": {"UVES": 2}}, {"source_id": "5927236979422123264", "ra": "249.7653421409877", "dec": "-58.25946925340376", "parallax": "43.2721142967486", "phot_g_mean_mag": "6.8666987", "bp_rp": "0.7993822", "radial_velocity": "-9.122178", "eso": {"FEROS": 3}}, {"source_id": "5799828080244639488", "ra": "221.05783492751038", "dec": "-69.6745289195431", "parallax": "27.584736620209657", "phot_g_mean_mag": "6.865035", "bp_rp": "0.701776", "radial_velocity": "-10.917313", "eso": {"UVES": 2}}, {"source_id": "6053512007260865280", "ra": "186.44092726594945", "dec": "-64.02235758749968", "parallax": "25.758702286332632", "phot_g_mean_mag": "6.8690715", "bp_rp": "0.6896486", "radial_velocity": "-5.0263243", "eso": {"UVES": 24}}, {"source_id": "5625458592767153280", "ra": "132.4811301878011", "dec": "-36.61599862145279", "parallax": "23.85357367120574", "phot_g_mean_mag": "7.0380974", "bp_rp": "0.64702606", "radial_velocity": "6.830791", "eso": {}}, {"source_id": "4644134225767167872", "ra": "38.27444552078032", "dec": "-72.44368232746149", "parallax": "20.173037082512167", "phot_g_mean_mag": "7.7352734", "bp_rp": "0.7682977", "radial_velocity": "9.8888445", "eso": {}}, {"source_id": "4655882679310434816", "ra": "66.44291990447127", "dec": "-69.99366116474498", "parallax": "22.60140983288457", "phot_g_mean_mag": "7.7074256", "bp_rp": "0.81126595", "radial_velocity": "-6.742707", "eso": {"UVES": 4}}, {"source_id": "4675222436007028608", "ra": "66.28749703532576", "dec": "-64.07864140698923", "parallax": "22.87008866823508", "phot_g_mean_mag": "7.7393684", "bp_rp": "0.81416035", "radial_velocity": "54.84143", "eso": {"ESPRESSO": 2}}, {"source_id": "4735789824296104320", "ra": "53.00887220517509", "dec": "-52.47412945506462", "parallax": "20.41982612622937", "phot_g_mean_mag": "7.612392", "bp_rp": "0.86456394", "radial_velocity": "52.5909", "eso": {}}, {"source_id": "5317776790770020864", "ra": "130.43900955543154", "dec": "-54.77407395808695", "parallax": "22.802876703266637", "phot_g_mean_mag": "8.351684", "bp_rp": "0.9243355", "radial_velocity": "10.366169", "eso": {}}, {"source_id": "5320952798822552064", "ra": "123.85501687347556", "dec": "-52.060550206237615", "parallax": "37.00138228818621", "phot_g_mean_mag": "6.4833074", "bp_rp": "0.7478013", "radial_velocity": "11.874742", "eso": {"UVES": 4}}, {"source_id": "6371426036195507328", "ra": "325.10482031900335", "dec": "-71.50357616054788", "parallax": "20.716073442694295", "phot_g_mean_mag": "7.304674", "bp_rp": "0.70795727", "radial_velocity": "-11.876691", "eso": {"UVES": 1}}, {"source_id": "6381880398911164672", "ra": "340.64956750210854", "dec": "-73.24357980499907", "parallax": "21.210457123726382", "phot_g_mean_mag": "7.930567", "bp_rp": "0.8773241", "radial_velocity": "-9.918901", "eso": {}}, {"source_id": "6395705074002990592", "ra": "331.97312566875837", "dec": "-70.28565539773999", "parallax": "33.13753929409018", "phot_g_mean_mag": "6.5454035", "bp_rp": "0.68652105", "radial_velocity": "-12.751867", "eso": {}}, {"source_id": "6420712813144195840", "ra": "293.8188505220945", "dec": "-69.09420012224825", "parallax": "22.303995999386665", "phot_g_mean_mag": "7.9999766", "bp_rp": "0.8280134", "radial_velocity": "29.392162", "eso": {}}, {"source_id": "6466670337598422912", "ra": "322.3107489403585", "dec": "-50.31695404022746", "parallax": "20.133233682369323", "phot_g_mean_mag": "7.1787014", "bp_rp": "0.82683754", "radial_velocity": "-43.7745", "eso": {"UVES": 4}}, {"source_id": "6489771832811810432", "ra": "348.5320836373795", "dec": "-62.70188868698129", "parallax": "34.250041316092705", "phot_g_mean_mag": "5.922179", "bp_rp": "0.9656005", "radial_velocity": "-31.051317", "eso": {"ESPRESSO": 28, "FEROS": 1}}, {"source_id": "6508776375901968640", "ra": "334.5683625481559", "dec": "-53.62987304773594", "parallax": "71.09384614454987", "phot_g_mean_mag": "5.2305317", "bp_rp": "0.80575466", "radial_velocity": "", "eso": {"FEROS": 2, "UVES": 15}}, {"source_id": "6667791114765896064", "ra": "305.4185112202273", "dec": "-50.000530515403376", "parallax": "32.03195624725243", "phot_g_mean_mag": "6.1292477", "bp_rp": "0.7349949", "radial_velocity": "18.251291", "eso": {"UVES": 1}}, {"source_id": "6675282190565181440", "ra": "309.2993743208327", "dec": "-44.745059889169504", "parallax": "24.426620228991542", "phot_g_mean_mag": "7.9584913", "bp_rp": "0.82978153", "radial_velocity": "-19.267164", "eso": {}}, {"source_id": "1774616822407814528", "ra": "332.7109563567907", "dec": "15.708137487474795", "parallax": "21.25107834016781", "phot_g_mean_mag": "7.8881598", "bp_rp": "0.7468233", "radial_velocity": "-0.2691444", "eso": {}}, {"source_id": "2425903017474575232", "ra": "10.711306443832582", "dec": "-9.92178255546027", "parallax": "25.551777238201915", "phot_g_mean_mag": "6.5152154", "bp_rp": "0.67415094", "radial_velocity": "22.424957", "eso": {}}, {"source_id": "2475331597059676288", "ra": "18.594015736818537", "dec": "-7.909697284490481", "parallax": "41.67478954633729", "phot_g_mean_mag": "7.6303015", "bp_rp": "0.97610474", "radial_velocity": "21.781662", "eso": {}}, {"source_id": "2477891500647336704", "ra": "23.429264079948876", "dec": "-7.025711115974717", "parallax": "33.58289170105761", "phot_g_mean_mag": "5.601216", "bp_rp": "0.8041887", "radial_velocity": "-14.920271", "eso": {"UVES": 2}}, {"source_id": "2494066897240089984", "ra": "33.195967700241006", "dec": "-2.3966310307069496", "parallax": "26.167756512552558", "phot_g_mean_mag": "7.5817833", "bp_rp": "0.83473873", "radial_velocity": "-5.3338304", "eso": {"ESPRESSO": 3, "FEROS": 1}}, {"source_id": "2506906787870475904", "ra": "31.89169357592961", "dec": "-0.6189509702586562", "parallax": "27.024296097565625", "phot_g_mean_mag": "6.7326875", "bp_rp": "0.7817297", "radial_velocity": "-39.35811", "eso": {}}, {"source_id": "2714977131360438272", "ra": "344.62498163791787", "dec": "9.825552010500683", "parallax": "22.70912831063473", "phot_g_mean_mag": "7.533169", "bp_rp": "0.76591253", "radial_velocity": "10.994498", "eso": {}}, {"source_id": "4991747403868417792", "ra": "4.321304860109381", "dec": "-43.85280145912227", "parallax": "27.594808478155528", "phot_g_mean_mag": "7.8022475", "bp_rp": "0.81892395", "radial_velocity": "11.510849", "eso": {}}, {"source_id": "5023104341621773184", "ra": "24.287405037019866", "dec": "-29.393575510859343", "parallax": "29.315561652591754", "phot_g_mean_mag": "7.9226513", "bp_rp": "0.99489737", "radial_velocity": "11.57807", "eso": {}}, {"source_id": "5029110664406696320", "ra": "21.705319887336067", "dec": "-29.475810409618347", "parallax": "23.64240187714296", "phot_g_mean_mag": "8.232681", "bp_rp": "0.89017725", "radial_velocity": "24.781021", "eso": {}}, {"source_id": "5068141437406414336", "ra": "35.496742245423505", "dec": "-29.35284765807822", "parallax": "24.046992984535237", "phot_g_mean_mag": "7.7485085", "bp_rp": "0.80804396", "radial_velocity": "45.128567", "eso": {}}, {"source_id": "5149717881562904320", "ra": "30.204114734421708", "dec": "-12.874454367417039", "parallax": "22.33213753021401", "phot_g_mean_mag": "8.575619", "bp_rp": "0.91699505", "radial_velocity": "16.21467", "eso": {}}, {"source_id": "2581952820152989952", "ra": "13.19536369651568", "dec": "9.803240836765386", "parallax": "22.367722593082295", "phot_g_mean_mag": "8.324368", "bp_rp": "0.9927721", "radial_velocity": "", "eso": {}}, {"source_id": "2915523482424724224", "ra": "87.08343007652091", "dec": "-24.46400568079232", "parallax": "22.45410149717266", "phot_g_mean_mag": "7.67168", "bp_rp": "0.7339463", "radial_velocity": "3.3774827", "eso": {"FEROS": 2}}, {"source_id": "2947463298779960960", "ra": "100.52088881199064", "dec": "-15.215827934270363", "parallax": "33.12306518410803", "phot_g_mean_mag": "6.823176", "bp_rp": "0.73830605", "radial_velocity": "30.980766", "eso": {"FEROS": 1}}, {"source_id": "3030029131610199424", "ra": "114.12315682388387", "dec": "-14.459900076489935", "parallax": "23.239012665095547", "phot_g_mean_mag": "8.870319", "bp_rp": "0.9816694", "radial_velocity": "-3.1487155", "eso": {}}, {"source_id": "3118688251708604928", "ra": "95.43138933273578", "dec": "-0.5398224049971097", "parallax": "23.257610593597697", "phot_g_mean_mag": "7.4712725", "bp_rp": "0.82357216", "radial_velocity": "-0.46585184", "eso": {"UVES": 2}}, {"source_id": "3181805854137838464", "ra": "76.19852252504465", "dec": "-11.699994364583638", "parallax": "23.104682891288736", "phot_g_mean_mag": "7.0511937", "bp_rp": "0.79306364", "radial_velocity": "-48.140762", "eso": {"FEROS": 1}}, {"source_id": "3212075924646082176", "ra": "77.18231993661391", "dec": "-4.456136052979699", "parallax": "39.439379906617084", "phot_g_mean_mag": "4.9814367", "bp_rp": "0.6316533", "radial_velocity": "10.306102", "eso": {"UVES": 22}}, {"source_id": "3243557725687536512", "ra": "57.16243350850058", "dec": "-6.815670604376423", "parallax": "24.82271808935119", "phot_g_mean_mag": "7.8653607", "bp_rp": "0.7834029", "radial_velocity": "18.397524", "eso": {}}, {"source_id": "3263319007654791552", "ra": "53.80421676260634", "dec": "-0.7394323361663475", "parallax": "21.782452733971294", "phot_g_mean_mag": "8.343012", "bp_rp": "0.9293337", "radial_velocity": "-5.1579556", "eso": {}}, {"source_id": "5643811086797924992", "ra": "128.31386502553818", "dec": "-29.956508897243545", "parallax": "21.99281874519902", "phot_g_mean_mag": "8.118933", "bp_rp": "0.81648445", "radial_velocity": "21.779837", "eso": {}}, {"source_id": "5701922342208943232", "ra": "128.43877003462546", "dec": "-23.354814377242807", "parallax": "30.900051856720527", "phot_g_mean_mag": "7.0434685", "bp_rp": "0.88003445", "radial_velocity": "19.589306", "eso": {}}, {"source_id": "6963761190199424", "ra": "45.9627666464047", "dec": "6.133522852317712", "parallax": "31.979075012851403", "phot_g_mean_mag": "6.792566", "bp_rp": "0.7092409", "radial_velocity": "24.714314", "eso": {"UVES": 4}}, {"source_id": "57890562810508160", "ra": "52.62756964988678", "dec": "20.103016867725454", "parallax": "26.753434177054164", "phot_g_mean_mag": "8.132049", "bp_rp": "0.9161167", "radial_velocity": "25.671047", "eso": {}}, {"source_id": "646255212109355136", "ra": "143.18159659276424", "dec": "26.987433476597655", "parallax": "55.329149838250466", "phot_g_mean_mag": "6.813439", "bp_rp": "0.97417164", "radial_velocity": "7.9977646", "eso": {}}, {"source_id": "683184784030475520", "ra": "125.01599916401489", "dec": "27.21602917222347", "parallax": "54.87485522018729", "phot_g_mean_mag": "4.988862", "bp_rp": "0.65967035", "radial_velocity": "32.857037", "eso": {}}, {"source_id": "1258410612976538368", "ra": "211.1914767051333", "dec": "25.81725488981903", "parallax": "22.693458600326707", "phot_g_mean_mag": "6.843076", "bp_rp": "0.62440586", "radial_velocity": "-20.04613", "eso": {}}, {"source_id": "3053492881541641600", "ra": "113.02359835146886", "dec": "-8.882072210623937", "parallax": "34.88318402291259", "phot_g_mean_mag": "5.7767076", "bp_rp": "0.7366185", "radial_velocity": "55.103573", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "3061562747131020416", "ra": "111.48833963467231", "dec": "-2.2486783702027546", "parallax": "29.553906619271498", "phot_g_mean_mag": "6.8566413", "bp_rp": "0.7153678", "radial_velocity": "10.687574", "eso": {}}, {"source_id": "3077104721942993920", "ra": "125.05434032913877", "dec": "-0.9096970900446705", "parallax": "26.261612128946492", "phot_g_mean_mag": "6.0346456", "bp_rp": "0.7630544", "radial_velocity": "9.080344", "eso": {}}, {"source_id": "3136707116983005056", "ra": "112.10660519747515", "dec": "4.153014769663007", "parallax": "22.45111297774395", "phot_g_mean_mag": "7.963212", "bp_rp": "0.9008775", "radial_velocity": "45.758945", "eso": {}}, {"source_id": "3256919987421359616", "ra": "61.12691838093124", "dec": "0.24399778208673895", "parallax": "23.915267558911044", "phot_g_mean_mag": "8.137728", "bp_rp": "0.92368746", "radial_velocity": "-30.513044", "eso": {"FEROS": 1}}, {"source_id": "3359808231100381312", "ra": "107.04967487350909", "dec": "15.519902040070038", "parallax": "20.972499209637004", "phot_g_mean_mag": "7.571591", "bp_rp": "0.71559477", "radial_velocity": "-11.839737", "eso": {"UVES": 2}}, {"source_id": "3362649918901844608", "ra": "111.96214263636756", "dec": "19.044479572850676", "parallax": "34.293986152457045", "phot_g_mean_mag": "7.073503", "bp_rp": "0.87407684", "radial_velocity": "4.938105", "eso": {}}, {"source_id": "3379989457790428416", "ra": "104.54919118840637", "dec": "22.476318087435594", "parallax": "40.27333938828646", "phot_g_mean_mag": "6.772278", "bp_rp": "0.8137202", "radial_velocity": "-26.840023", "eso": {}}, {"source_id": "3421680597955802624", "ra": "76.98200375071785", "dec": "26.327671408682196", "parallax": "26.13103722007898", "phot_g_mean_mag": "7.4414806", "bp_rp": "0.82223654", "radial_velocity": "-62.491768", "eso": {}}, {"source_id": "3479307174896191232", "ra": "177.92330903889788", "dec": "-30.83610889559551", "parallax": "31.615364330454963", "phot_g_mean_mag": "5.728032", "bp_rp": "0.71011305", "radial_velocity": "33.463318", "eso": {"FEROS": 1, "UVES": 1}}, {"source_id": "3511640513332581504", "ra": "198.01521298751786", "dec": "-16.199883262993993", "parallax": "29.900292691997315", "phot_g_mean_mag": "4.8962994", "bp_rp": "0.64865875", "radial_velocity": "-12.251773", "eso": {"FEROS": 1, "UVES": 8}}, {"source_id": "3630099250409312640", "ra": "203.29607153102577", "dec": "-8.443136749415164", "parallax": "29.85739655448974", "phot_g_mean_mag": "7.1946115", "bp_rp": "0.7846899", "radial_velocity": "-9.780696", "eso": {"UVES": 6}}, {"source_id": "3786697056556771584", "ra": "169.5952622804983", "dec": "-5.067973226795478", "parallax": "45.18025536591975", "phot_g_mean_mag": "7.086581", "bp_rp": "0.9204879", "radial_velocity": "13.196382", "eso": {}}, {"source_id": "3820558333904219136", "ra": "143.78691742414443", "dec": "-7.085399544470028", "parallax": "20.712615794202936", "phot_g_mean_mag": "8.376022", "bp_rp": "0.83728504", "radial_velocity": "1.3482177", "eso": {}}, {"source_id": "3954927249048246272", "ra": "193.66698280516144", "dec": "22.107790159174247", "parallax": "28.497800598282698", "phot_g_mean_mag": "6.874176", "bp_rp": "0.71257067", "radial_velocity": "-0.3175342", "eso": {}}, {"source_id": "3990655982472538880", "ra": "169.27078301731942", "dec": "21.294133216668016", "parallax": "23.89748587275873", "phot_g_mean_mag": "8.100133", "bp_rp": "0.8724966", "radial_velocity": "18.70755", "eso": {}}, {"source_id": "3991653166503630080", "ra": "166.86907837749098", "dec": "22.052985153773676", "parallax": "20.795506970494447", "phot_g_mean_mag": "8.060137", "bp_rp": "0.8004408", "radial_velocity": "-0.3281304", "eso": {}}, {"source_id": "5396270410472769792", "ra": "169.39483953788627", "dec": "-38.380716326252134", "parallax": "21.909209013167978", "phot_g_mean_mag": "8.017072", "bp_rp": "0.82684135", "radial_velocity": "27.07216", "eso": {}}, {"source_id": "5664691778978634496", "ra": "144.13541035647606", "dec": "-22.429524434942095", "parallax": "20.38585765390942", "phot_g_mean_mag": "8.6420965", "bp_rp": "0.871541", "radial_velocity": "21.433178", "eso": {"FEROS": 1}}, {"source_id": "6010950942881973376", "ra": "239.94955594711362", "dec": "-35.845732461754544", "parallax": "30.412401744734225", "phot_g_mean_mag": "7.4895263", "bp_rp": "0.8463459", "radial_velocity": "14.22116", "eso": {}}, {"source_id": "6015818618289004544", "ra": "234.91844024749548", "dec": "-32.977395759218425", "parallax": "23.817333043552747", "phot_g_mean_mag": "8.454638", "bp_rp": "0.8714142", "radial_velocity": "-24.900537", "eso": {}}, {"source_id": "6226694571859532800", "ra": "228.36747824876113", "dec": "-25.309682636297797", "parallax": "38.19461002507144", "phot_g_mean_mag": "6.3024716", "bp_rp": "0.8563061", "radial_velocity": "5.1359625", "eso": {"ESPRESSO": 25, "UVES": 8}}, {"source_id": "6039200454610268800", "ra": "244.78539840253944", "dec": "-28.295021910135336", "parallax": "25.013494191196003", "phot_g_mean_mag": "7.530272", "bp_rp": "0.779809", "radial_velocity": "-30.237032", "eso": {}}, {"source_id": "4341501106288171008", "ra": "241.76284165877124", "dec": "-14.071254509411874", "parallax": "36.224941420705754", "phot_g_mean_mag": "6.160456", "bp_rp": "0.8027034", "radial_velocity": "-13.914272", "eso": {"ESPRESSO": 3, "UVES": 4}}, {"source_id": "6758627852015732480", "ra": "290.4146675747462", "dec": "-29.60551303099172", "parallax": "20.940397852118743", "phot_g_mean_mag": "6.97083", "bp_rp": "0.72397566", "radial_velocity": "36.99079", "eso": {"FEROS": 3, "UVES": 2}}, {"source_id": "6802426038708609536", "ra": "314.19768133427806", "dec": "-26.296669316774295", "parallax": "47.3885663277591", "phot_g_mean_mag": "5.5740957", "bp_rp": "0.66569567", "radial_velocity": "-16.08618", "eso": {"FEROS": 12}}, {"source_id": "6772287703441286912", "ra": "293.89957928880494", "dec": "-20.782835350590798", "parallax": "32.0524281088908", "phot_g_mean_mag": "6.60695", "bp_rp": "0.71590614", "radial_velocity": "-30.598906", "eso": {}}, {"source_id": "1166216253750406144", "ra": "233.18186137430888", "dec": "10.969004119797964", "parallax": "33.13733759982472", "phot_g_mean_mag": "7.0722537", "bp_rp": "0.818315", "radial_velocity": "-35.67151", "eso": {"UVES": 4}}, {"source_id": "1271209611223823232", "ra": "229.58485590407588", "dec": "26.84068292663587", "parallax": "27.615019158502268", "phot_g_mean_mag": "7.1797447", "bp_rp": "0.6473112", "radial_velocity": "", "eso": {}}, {"source_id": "4433711099194059904", "ra": "247.61663676327078", "dec": "4.17203110145233", "parallax": "23.448159926985525", "phot_g_mean_mag": "7.13478", "bp_rp": "0.7405281", "radial_velocity": "-47.616722", "eso": {"UVES": 12}}, {"source_id": "4460288666059348224", "ra": "247.90408937140487", "dec": "12.421793142791323", "parallax": "20.834610025146233", "phot_g_mean_mag": "8.33475", "bp_rp": "0.8842368", "radial_velocity": "-32.47896", "eso": {}}, {"source_id": "4471087175915086080", "ra": "271.40599777117944", "dec": "4.655747869478695", "parallax": "41.47406026717721", "phot_g_mean_mag": "6.649316", "bp_rp": "0.7870879", "radial_velocity": "-117.95542", "eso": {}}, {"source_id": "4315316168220536960", "ra": "292.90463309114307", "dec": "11.723784502189453", "parallax": "22.751561187147846", "phot_g_mean_mag": "8.031745", "bp_rp": "0.98456764", "radial_velocity": "", "eso": {}}, {"source_id": "1858162251387183488", "ra": "312.16537873930736", "dec": "28.80356849348671", "parallax": "22.706705992757577", "phot_g_mean_mag": "8.076762", "bp_rp": "0.93165493", "radial_velocity": "-64.26268", "eso": {}}, {"source_id": "2028211207952435840", "ra": "297.0036220379263", "dec": "27.87051580394884", "parallax": "39.191181554430486", "phot_g_mean_mag": "6.726936", "bp_rp": "0.80468655", "radial_velocity": "-32.88378", "eso": {}}, {"source_id": "2030169713022898048", "ra": "300.19276647576464", "dec": "29.821570207510884", "parallax": "22.502372601150952", "phot_g_mean_mag": "7.7085056", "bp_rp": "0.7738366", "radial_velocity": "-8.615716", "eso": {}}, {"source_id": "4247115798351115904", "ra": "301.39074040613906", "dec": "3.5021385108965943", "parallax": "23.861023501744985", "phot_g_mean_mag": "8.157924", "bp_rp": "0.9348502", "radial_velocity": "-33.649014", "eso": {}}, {"source_id": "6081255159466938752", "ra": "196.31908321901565", "dec": "-50.856636646440855", "parallax": "21.06491212958685", "phot_g_mean_mag": "8.183877", "bp_rp": "0.8413377", "radial_velocity": "1.0796978", "eso": {}}, {"source_id": "6083860761505899904", "ra": "203.1066469230527", "dec": "-47.27192224056071", "parallax": "26.542929349902185", "phot_g_mean_mag": "7.037782", "bp_rp": "0.7523413", "radial_velocity": "1.1953856", "eso": {"UVES": 2}}, {"source_id": "5308184548267955968", "ra": "147.92209063329292", "dec": "-54.660162520241165", "parallax": "22.571029355686804", "phot_g_mean_mag": "7.2200084", "bp_rp": "0.6935358", "radial_velocity": "23.090446", "eso": {"UVES": 2}}, {"source_id": "5329033968778084608", "ra": "131.17540516581352", "dec": "-48.67206985962659", "parallax": "30.902197070976445", "phot_g_mean_mag": "7.9931827", "bp_rp": "0.9368763", "radial_velocity": "2.0133066", "eso": {}}, {"source_id": "5409121433672765824", "ra": "144.3691799581207", "dec": "-49.98993881234755", "parallax": "29.85560652834451", "phot_g_mean_mag": "6.836351", "bp_rp": "0.7613683", "radial_velocity": "47.454807", "eso": {"FEROS": 1, "UVES": 2}}, {"source_id": "5522244069017465728", "ra": "131.21029626408108", "dec": "-44.542001209079054", "parallax": "27.394805545864596", "phot_g_mean_mag": "6.4385905", "bp_rp": "0.69576263", "radial_velocity": "23.598343", "eso": {}}, {"source_id": "5623132266681284480", "ra": "137.07112833624763", "dec": "-37.11488426486087", "parallax": "20.09451181601462", "phot_g_mean_mag": "8.108743", "bp_rp": "0.837934", "radial_velocity": "", "eso": {"FEROS": 2}}, {"source_id": "4633220920027104896", "ra": "30.24073841750841", "dec": "-78.87056154688264", "parallax": "21.513112023762137", "phot_g_mean_mag": "6.7115207", "bp_rp": "0.7219181", "radial_velocity": "30.767933", "eso": {}}, {"source_id": "4642472794978268800", "ra": "46.90904111018638", "dec": "-72.32192324391863", "parallax": "23.753907743174157", "phot_g_mean_mag": "8.202384", "bp_rp": "0.9076071", "radial_velocity": "-16.184198", "eso": {}}, {"source_id": "4657193606465368704", "ra": "86.12894471761606", "dec": "-70.13806560262964", "parallax": "37.823472853588115", "phot_g_mean_mag": "7.8646474", "bp_rp": "0.97041845", "radial_velocity": "13.988735", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "4688292536884945536", "ra": "3.472271333600741", "dec": "-74.68851018551302", "parallax": "21.80349059153779", "phot_g_mean_mag": "8.654307", "bp_rp": "0.95307827", "radial_velocity": "9.09413", "eso": {"UVES": 2}}, {"source_id": "4722135642226902656", "ra": "49.56622620807744", "dec": "-62.5034842270098", "parallax": "83.06064664354982", "phot_g_mean_mag": "5.0796084", "bp_rp": "0.7856765", "radial_velocity": "11.936549", "eso": {"UVES": 18}}, {"source_id": "4745373133284418816", "ra": "40.64179116281783", "dec": "-50.7993179041391", "parallax": "57.613144345224306", "phot_g_mean_mag": "5.256284", "bp_rp": "0.7264128", "radial_velocity": "16.935308", "eso": {"FEROS": 5, "UVES": 5}}, {"source_id": "5504204553528873472", "ra": "109.55150571148083", "dec": "-51.05114717828102", "parallax": "20.48995398593138", "phot_g_mean_mag": "7.389091", "bp_rp": "0.70851135", "radial_velocity": "16.576244", "eso": {}}, {"source_id": "6629790584164277376", "ra": "274.9176069905291", "dec": "-63.88778749984096", "parallax": "42.59175189006123", "phot_g_mean_mag": "6.041773", "bp_rp": "0.7330861", "radial_velocity": "0.49613962", "eso": {"FEROS": 3}}, {"source_id": "1744854142156208128", "ra": "318.3442580466833", "dec": "11.211450282116937", "parallax": "21.846616839054096", "phot_g_mean_mag": "8.0297575", "bp_rp": "0.8121486", "radial_velocity": "-49.2993", "eso": {"UVES": 2}}, {"source_id": "2423292879948720000", "ra": "4.497121279564225", "dec": "-13.455641929479897", "parallax": "37.14173648080181", "phot_g_mean_mag": "6.369294", "bp_rp": "0.76227903", "radial_velocity": "28.922716", "eso": {"UVES": 2}}, {"source_id": "2598586816173411200", "ra": "334.89356337960584", "dec": "-16.70472071584868", "parallax": "22.960001388291797", "phot_g_mean_mag": "7.15988", "bp_rp": "0.69111204", "radial_velocity": "15.463413", "eso": {}}, {"source_id": "2619706544757416192", "ra": "332.3748236763796", "dec": "-7.550658877487583", "parallax": "46.851509694084825", "phot_g_mean_mag": "6.3589854", "bp_rp": "0.908793", "radial_velocity": "-20.778008", "eso": {"ESPRESSO": 26, "UVES": 2}}, {"source_id": "2633449134434620288", "ra": "352.8820552593554", "dec": "-4.08825556776875", "parallax": "38.711285261412094", "phot_g_mean_mag": "6.3626", "bp_rp": "0.71109676", "radial_velocity": "-12.600183", "eso": {"UVES": 7}}, {"source_id": "2642917402722969856", "ra": "355.7358012118884", "dec": "0.23984236439472628", "parallax": "21.779387948099778", "phot_g_mean_mag": "8.477026", "bp_rp": "0.9368701", "radial_velocity": "14.442537", "eso": {}}, {"source_id": "2646416259176624000", "ra": "354.0965509206229", "dec": "2.1024930753743742", "parallax": "30.68278834561853", "phot_g_mean_mag": "5.56184", "bp_rp": "0.63545847", "radial_velocity": "", "eso": {}}, {"source_id": "2731708498584058368", "ra": "341.1190139822831", "dec": "13.686624259295463", "parallax": "23.16750888283952", "phot_g_mean_mag": "8.233557", "bp_rp": "0.9121375", "radial_velocity": "-18.95726", "eso": {}}, {"source_id": "5005222984019085312", "ra": "8.432220074479119", "dec": "-35.00438203051698", "parallax": "29.456579378896812", "phot_g_mean_mag": "6.446414", "bp_rp": "0.7271042", "radial_velocity": "29.575964", "eso": {}}, {"source_id": "6544549880063909248", "ra": "342.54169017461396", "dec": "-41.49103237865932", "parallax": "35.10980207845336", "phot_g_mean_mag": "7.5872374", "bp_rp": "0.92354393", "radial_velocity": "20.781187", "eso": {}}, {"source_id": "6884240247958763392", "ra": "318.0936002281977", "dec": "-14.99953486643942", "parallax": "21.58244337067732", "phot_g_mean_mag": "8.070218", "bp_rp": "0.82405853", "radial_velocity": "", "eso": {}}, {"source_id": "34959010860789632", "ra": "43.823469266556074", "dec": "16.308983183705624", "parallax": "37.328144420389556", "phot_g_mean_mag": "7.2228208", "bp_rp": "0.8991914", "radial_velocity": "-1.4234511", "eso": {}}, {"source_id": "105332908999068032", "ra": "31.142335838084257", "dec": "25.413539140884392", "parallax": "26.46141230655851", "phot_g_mean_mag": "7.262336", "bp_rp": "0.85881996", "radial_velocity": "-47.36243", "eso": {"FEROS": 1}}, {"source_id": "2559181861327324928", "ra": "21.334080942315328", "dec": "1.460583860264595", "parallax": "25.120205834895387", "phot_g_mean_mag": "7.2442865", "bp_rp": "0.8203416", "radial_velocity": "1.0227541", "eso": {"UVES": 1}}, {"source_id": "2562408107616075264", "ra": "25.349141164034613", "dec": "6.045611793798715", "parallax": "27.562417915513315", "phot_g_mean_mag": "7.7737503", "bp_rp": "0.895947", "radial_velocity": "-0.73817563", "eso": {}}, {"source_id": "2797111130991722240", "ra": "1.4774133964640752", "dec": "18.234349641504892", "parallax": "26.69783023150017", "phot_g_mean_mag": "7.318629", "bp_rp": "0.74189186", "radial_velocity": "-45.485756", "eso": {}}, {"source_id": "2887469752478012928", "ra": "88.31274042960051", "dec": "-36.2638868437313", "parallax": "20.041141595475953", "phot_g_mean_mag": "8.428298", "bp_rp": "0.85240984", "radial_velocity": "10.278641", "eso": {}}, {"source_id": "2934332759128697856", "ra": "107.22461529288039", "dec": "-18.184337747159443", "parallax": "25.203943978242776", "phot_g_mean_mag": "7.2347684", "bp_rp": "0.75689554", "radial_velocity": "6.131325", "eso": {}}, {"source_id": "2943435512809025408", "ra": "95.40541093266704", "dec": "-18.167114250144486", "parallax": "24.23780136232866", "phot_g_mean_mag": "7.568717", "bp_rp": "0.7973714", "radial_velocity": "20.674335", "eso": {}}, {"source_id": "2968430745003580160", "ra": "81.49398035682403", "dec": "-19.690039078841334", "parallax": "21.293017676336365", "phot_g_mean_mag": "7.4132876", "bp_rp": "0.6867957", "radial_velocity": "8.465568", "eso": {}}, {"source_id": "2985197060375179264", "ra": "80.30386947587071", "dec": "-14.152332635043578", "parallax": "28.959089383642226", "phot_g_mean_mag": "7.5321712", "bp_rp": "0.8118582", "radial_velocity": "-4.2609787", "eso": {"UVES": 2}}, {"source_id": "3028228853115437312", "ra": "112.66694067697098", "dec": "-15.995067791038645", "parallax": "27.550294902457207", "phot_g_mean_mag": "7.576313", "bp_rp": "0.8130908", "radial_velocity": "8.3021345", "eso": {}}, {"source_id": "3191904245667436288", "ra": "66.174015300718", "dec": "-8.7530868233381", "parallax": "20.675753077326785", "phot_g_mean_mag": "9.166665", "bp_rp": "0.94973564", "radial_velocity": "-29.92438", "eso": {}}, {"source_id": "5544588997155925248", "ra": "121.78627535543784", "dec": "-36.38096230668892", "parallax": "20.602438773717612", "phot_g_mean_mag": "7.182048", "bp_rp": "0.6799011", "radial_velocity": "26.116022", "eso": {"UVES": 2}}, {"source_id": "5644325284591298688", "ra": "126.45702897571151", "dec": "-29.93189260103367", "parallax": "25.490408333696973", "phot_g_mean_mag": "7.6459765", "bp_rp": "0.827868", "radial_velocity": "17.330212", "eso": {"UVES": 8}}, {"source_id": "653374000145053312", "ra": "119.89739096167855", "dec": "12.98287486409431", "parallax": "29.353759921663553", "phot_g_mean_mag": "8.127014", "bp_rp": "0.9570551", "radial_velocity": "32.99571", "eso": {}}, {"source_id": "723944775287648256", "ra": "161.5387261418529", "dec": "25.760991237171428", "parallax": "21.295535438363654", "phot_g_mean_mag": "7.9008336", "bp_rp": "0.81592464", "radial_velocity": "-15.456215", "eso": {"FEROS": 1}}, {"source_id": "868513756724899840", "ra": "113.71068017693624", "dec": "24.9529045302371", "parallax": "25.592007948298757", "phot_g_mean_mag": "7.22166", "bp_rp": "0.80534935", "radial_velocity": "-135.38187", "eso": {}}, {"source_id": "3048356684771809536", "ra": "108.08914226515967", "dec": "-8.808251411298054", "parallax": "21.75156997506542", "phot_g_mean_mag": "8.970474", "bp_rp": "0.9656105", "radial_velocity": "18.298214", "eso": {}}, {"source_id": "3101382419728401408", "ra": "105.07462866477856", "dec": "-5.3668029911914985", "parallax": "33.42503518696486", "phot_g_mean_mag": "6.1631103", "bp_rp": "0.7172642", "radial_velocity": "53.989235", "eso": {"ESPRESSO": 4, "FEROS": 8, "UVES": 3}}, {"source_id": "3141791533628643200", "ra": "112.6160499930809", "dec": "6.720702403755362", "parallax": "21.06996299353618", "phot_g_mean_mag": "8.51108", "bp_rp": "0.852108", "radial_velocity": "91.56202", "eso": {}}, {"source_id": "3282511876473223552", "ra": "68.45960385145457", "dec": "5.383808524529226", "parallax": "36.14757547488182", "phot_g_mean_mag": "7.7240057", "bp_rp": "0.95037556", "radial_velocity": "-46.54675", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "3285218186904332288", "ra": "63.869511668854756", "dec": "6.186383921706763", "parallax": "45.30048787240542", "phot_g_mean_mag": "6.17452", "bp_rp": "0.7429147", "radial_velocity": "-7.277262", "eso": {"FEROS": 3}}, {"source_id": "3326288347818354048", "ra": "97.40360955785069", "dec": "8.492370970106663", "parallax": "20.59478244455777", "phot_g_mean_mag": "7.492739", "bp_rp": "0.6981573", "radial_velocity": "44.94788", "eso": {"UVES": 2}}, {"source_id": "3408516729352167168", "ra": "73.92443435536003", "dec": "20.0007349028319", "parallax": "29.214440135748724", "phot_g_mean_mag": "7.7908726", "bp_rp": "0.9445715", "radial_velocity": "30.254347", "eso": {}}, {"source_id": "3534658789261176064", "ra": "170.45785641590385", "dec": "-24.18991902767562", "parallax": "21.00121656496314", "phot_g_mean_mag": "7.9832582", "bp_rp": "0.7887187", "radial_velocity": "0.19567613", "eso": {}}, {"source_id": "3770732079001400704", "ra": "147.0588000657493", "dec": "-10.19254448674625", "parallax": "23.167717293435203", "phot_g_mean_mag": "8.8126335", "bp_rp": "0.97396755", "radial_velocity": "-18.82088", "eso": {}}, {"source_id": "3775795982881589376", "ra": "157.04893994460537", "dec": "-6.6018316874858325", "parallax": "29.424327163207643", "phot_g_mean_mag": "7.689408", "bp_rp": "0.94247437", "radial_velocity": "29.9286", "eso": {"ESPRESSO": 26, "FEROS": 1}}, {"source_id": "3784271568265259904", "ra": "167.5545287192316", "dec": "-7.390172369554893", "parallax": "30.8043465705945", "phot_g_mean_mag": "6.6602726", "bp_rp": "0.7827449", "radial_velocity": "-15.487609", "eso": {"UVES": 2}}, {"source_id": "3789271459953459328", "ra": "166.1719995924465", "dec": "-4.221551738883445", "parallax": "38.01400614108804", "phot_g_mean_mag": "7.41454", "bp_rp": "0.93456984", "radial_velocity": "18.496983", "eso": {"FEROS": 36}}, {"source_id": "3857486741888336768", "ra": "161.25989855272493", "dec": "3.3065670762966737", "parallax": "20.1123815030998", "phot_g_mean_mag": "6.980991", "bp_rp": "0.62175226", "radial_velocity": "-11.819022", "eso": {}}, {"source_id": "3900151160301345152", "ra": "185.6327413844966", "dec": "5.305215979629643", "parallax": "33.3409953192987", "phot_g_mean_mag": "6.335243", "bp_rp": "0.70186853", "radial_velocity": "4.9223337", "eso": {"UVES": 5}}, {"source_id": "3956336822955595776", "ra": "191.63569116348899", "dec": "24.14408034597036", "parallax": "22.934167191489152", "phot_g_mean_mag": "6.704674", "bp_rp": "0.6941891", "radial_velocity": "6.6084547", "eso": {}}, {"source_id": "4001560011083799168", "ra": "182.75003701527203", "dec": "22.861490900425284", "parallax": "24.647455932824926", "phot_g_mean_mag": "7.887296", "bp_rp": "0.91416645", "radial_velocity": "0.5365587", "eso": {}}, {"source_id": "4022159838170692224", "ra": "171.2457579413094", "dec": "28.94248890401318", "parallax": "24.634828038892763", "phot_g_mean_mag": "8.45966", "bp_rp": "0.9604368", "radial_velocity": "15.0185795", "eso": {}}, {"source_id": "5381188856152471168", "ra": "175.36032221344675", "dec": "-41.01881014040518", "parallax": "28.819914693353205", "phot_g_mean_mag": "6.713854", "bp_rp": "0.7622099", "radial_velocity": "", "eso": {"FEROS": 1, "UVES": 2}}, {"source_id": "5447414606155987200", "ra": "156.94842023120157", "dec": "-34.399654225510965", "parallax": "26.517875131362448", "phot_g_mean_mag": "7.375125", "bp_rp": "0.75825787", "radial_velocity": "19.663893", "eso": {}}, {"source_id": "5461620846141553024", "ra": "155.98010817595727", "dec": "-29.64508920127813", "parallax": "45.56275018557557", "phot_g_mean_mag": "6.7550097", "bp_rp": "0.85185957", "radial_velocity": "26.94308", "eso": {"ESPRESSO": 30, "FEROS": 1}}, {"source_id": "5468679229755326848", "ra": "157.18034926818171", "dec": "-27.367208212669173", "parallax": "26.907234493232746", "phot_g_mean_mag": "8.6374655", "bp_rp": "0.99888134", "radial_velocity": "30.519945", "eso": {}}, {"source_id": "5663558453071724288", "ra": "145.55812521272944", "dec": "-23.914401382944526", "parallax": "66.8827127039656", "phot_g_mean_mag": "4.772147", "bp_rp": "0.7007799", "radial_velocity": "34.69791", "eso": {"ESPRESSO": 5, "FEROS": 17}}, {"source_id": "6211697370691769728", "ra": "226.39132264390375", "dec": "-30.55048606759336", "parallax": "28.457004290710184", "phot_g_mean_mag": "6.3667493", "bp_rp": "0.62905455", "radial_velocity": "3.0571082", "eso": {}}, {"source_id": "5961839808610442880", "ra": "263.7830565264701", "dec": "-38.625471845827064", "parallax": "29.268272242179332", "phot_g_mean_mag": "8.550132", "bp_rp": "0.9938545", "radial_velocity": "35.19381", "eso": {}}, {"source_id": "4409032079673958528", "ra": "238.97702530142968", "dec": "-2.164682332734436", "parallax": "26.051146251516215", "phot_g_mean_mag": "6.8717856", "bp_rp": "0.6938882", "radial_velocity": "-37.817852", "eso": {}}, {"source_id": "6245090981933687040", "ra": "245.28365603599352", "dec": "-19.946035241858983", "parallax": "20.04708889467485", "phot_g_mean_mag": "8.549077", "bp_rp": "0.8786392", "radial_velocity": "45.740883", "eso": {}}, {"source_id": "4138728587785351808", "ra": "261.7591384213248", "dec": "-12.512766288367168", "parallax": "22.66120413469815", "phot_g_mean_mag": "6.0902777", "bp_rp": "0.6556735", "radial_velocity": "-37.7095", "eso": {}}, {"source_id": "6741888096717765888", "ra": "295.3065701319392", "dec": "-32.87388792606877", "parallax": "22.186215530722393", "phot_g_mean_mag": "7.9361644", "bp_rp": "0.8874779", "radial_velocity": "9.717677", "eso": {}}, {"source_id": "6848935999040583168", "ra": "304.93765856576766", "dec": "-25.229259694138296", "parallax": "24.994045300641346", "phot_g_mean_mag": "7.063695", "bp_rp": "0.7556267", "radial_velocity": "69.62939", "eso": {}}, {"source_id": "4153637759337630720", "ra": "275.4573235785969", "dec": "-11.92298521498548", "parallax": "23.98840168886926", "phot_g_mean_mag": "7.7842846", "bp_rp": "0.86485386", "radial_velocity": "-25.47377", "eso": {"FEROS": 4, "UVES": 1}}, {"source_id": "4197805003960381696", "ra": "286.848799070411", "dec": "-12.84415337006246", "parallax": "24.60362000661261", "phot_g_mean_mag": "8.137926", "bp_rp": "0.89763355", "radial_velocity": "-54.27864", "eso": {}}, {"source_id": "1270321278844517888", "ra": "229.74325865877336", "dec": "25.691192182575197", "parallax": "29.424524318718742", "phot_g_mean_mag": "7.811466", "bp_rp": "0.91744184", "radial_velocity": "-30.731203", "eso": {}}, {"source_id": "4228891221313732864", "ra": "306.8619489252977", "dec": "-2.1198263943195834", "parallax": "21.714453847860913", "phot_g_mean_mag": "7.369398", "bp_rp": "0.6816592", "radial_velocity": "-14.967346", "eso": {}}, {"source_id": "4377292958551376512", "ra": "263.25418353719857", "dec": "3.4254568774713485", "parallax": "21.679091559529862", "phot_g_mean_mag": "8.569466", "bp_rp": "0.90174484", "radial_velocity": "-16.283215", "eso": {}}, {"source_id": "4383374219923745024", "ra": "249.28553165094687", "dec": "0.2546902697359427", "parallax": "49.20360401812414", "phot_g_mean_mag": "6.884097", "bp_rp": "0.9849577", "radial_velocity": "10.347465", "eso": {"UVES": 1}}, {"source_id": "4423865487962417024", "ra": "236.00738859967447", "dec": "2.5145586194039793", "parallax": "67.60073784021641", "phot_g_mean_mag": "5.7004476", "bp_rp": "0.8525076", "radial_velocity": "18.953377", "eso": {"FEROS": 32, "UVES": 10}}, {"source_id": "4553915070463303168", "ra": "263.3449666891788", "dec": "19.256273101037205", "parallax": "25.786873335935425", "phot_g_mean_mag": "5.5210047", "bp_rp": "0.6672206", "radial_velocity": "-57.474228", "eso": {}}, {"source_id": "2018474482692959232", "ra": "293.35636663055897", "dec": "21.839412217498577", "parallax": "47.971560455049016", "phot_g_mean_mag": "6.707095", "bp_rp": "0.89977217", "radial_velocity": "11.314216", "eso": {}}, {"source_id": "1754430373040023168", "ra": "309.96647104497725", "dec": "11.250035914960753", "parallax": "29.40764876817505", "phot_g_mean_mag": "6.276973", "bp_rp": "0.6896105", "radial_velocity": "-31.088703", "eso": {}}, {"source_id": "1807953155988203264", "ra": "300.64158108097496", "dec": "15.589488822854015", "parallax": "51.91673833590014", "phot_g_mean_mag": "6.9592805", "bp_rp": "0.9173207", "radial_velocity": "20.372683", "eso": {}}, {"source_id": "4303294039306246656", "ra": "297.75794101185363", "dec": "10.41511259772722", "parallax": "51.31327446246717", "phot_g_mean_mag": "4.9761753", "bp_rp": "0.7170954", "radial_velocity": "-0.08292573", "eso": {"UVES": 2}}, {"source_id": "5989649416931386624", "ra": "236.67861555470427", "dec": "-43.23673455005342", "parallax": "21.015151310942773", "phot_g_mean_mag": "7.9318376", "bp_rp": "0.8198767", "radial_velocity": "61.61406", "eso": {}}, {"source_id": "6004256909931771136", "ra": "228.49413752840098", "dec": "-41.45946029397242", "parallax": "23.19125506213221", "phot_g_mean_mag": "8.480835", "bp_rp": "0.9689946", "radial_velocity": "-45.783714", "eso": {}}, {"source_id": "5885216909166894848", "ra": "234.3034260140386", "dec": "-54.49723006609554", "parallax": "22.08542025358001", "phot_g_mean_mag": "8.549373", "bp_rp": "0.934865", "radial_velocity": "-11.174082", "eso": {}}, {"source_id": "5920369945168735616", "ra": "266.91520046855834", "dec": "-55.79136156338668", "parallax": "22.464114008837235", "phot_g_mean_mag": "8.868908", "bp_rp": "0.99087906", "radial_velocity": "-27.526577", "eso": {}}, {"source_id": "5427207918907843072", "ra": "136.6620943950686", "dec": "-43.491181163602164", "parallax": "26.218810914650074", "phot_g_mean_mag": "7.1439295", "bp_rp": "0.82621956", "radial_velocity": "65.008415", "eso": {"ESPRESSO": 29}}, {"source_id": "4632033344389469184", "ra": "30.19488454636557", "dec": "-80.53334336787641", "parallax": "22.67903971264145", "phot_g_mean_mag": "8.707867", "bp_rp": "0.99991894", "radial_velocity": "31.183813", "eso": {}}, {"source_id": "4672733176041147776", "ra": "57.00818966997937", "dec": "-64.83616685057416", "parallax": "23.657779892552572", "phot_g_mean_mag": "7.6974", "bp_rp": "0.82770014", "radial_velocity": "21.724678", "eso": {}}, {"source_id": "4828528063821835648", "ra": "60.90748341757193", "dec": "-51.931527301454636", "parallax": "20.35660561234484", "phot_g_mean_mag": "8.040101", "bp_rp": "0.79678106", "radial_velocity": "6.124601", "eso": {}}, {"source_id": "5504529287416164992", "ra": "104.43926500122312", "dec": "-52.650130652081955", "parallax": "27.050905652093867", "phot_g_mean_mag": "6.7886977", "bp_rp": "0.64348555", "radial_velocity": "3.850107", "eso": {"UVES": 4}}, {"source_id": "5553647083168192512", "ra": "95.02713914788131", "dec": "-48.74227395080213", "parallax": "38.35239330962407", "phot_g_mean_mag": "6.456549", "bp_rp": "0.8026581", "radial_velocity": "59.67137", "eso": {"FEROS": 2, "UVES": 22}}, {"source_id": "6357835694518769408", "ra": "336.46413245764546", "dec": "-75.01563081404817", "parallax": "42.72192096886215", "phot_g_mean_mag": "5.9771047", "bp_rp": "0.76793003", "radial_velocity": "14.396475", "eso": {"FEROS": 7}}, {"source_id": "6427244702486210816", "ra": "301.396266053525", "dec": "-67.32389294266508", "parallax": "55.76543555731051", "phot_g_mean_mag": "5.915461", "bp_rp": "0.8211117", "radial_velocity": "-10.759674", "eso": {"ESPRESSO": 46, "FEROS": 2}}, {"source_id": "6454967273273436416", "ra": "310.0138189119736", "dec": "-60.55142507247136", "parallax": "40.568279192151905", "phot_g_mean_mag": "4.9773397", "bp_rp": "0.7344909", "radial_velocity": "-31.898127", "eso": {"FEROS": 1}}, {"source_id": "6463782435948431616", "ra": "320.2083890093772", "dec": "-53.0346347389645", "parallax": "21.409293944288002", "phot_g_mean_mag": "8.492327", "bp_rp": "0.9072399", "radial_velocity": "-1.9471639", "eso": {"FEROS": 6, "UVES": 2}}, {"source_id": "6485255520080979968", "ra": "358.4157017316034", "dec": "-65.94675860275059", "parallax": "39.59599516716777", "phot_g_mean_mag": "6.5097284", "bp_rp": "0.750093", "radial_velocity": "22.219093", "eso": {"UVES": 1}}, {"source_id": "6498197630933903872", "ra": "355.5541597479908", "dec": "-53.42327721938996", "parallax": "26.493493431189854", "phot_g_mean_mag": "7.8269534", "bp_rp": "0.85630226", "radial_velocity": "18.985191", "eso": {"UVES": 1}}, {"source_id": "6557409458825491840", "ra": "330.4025680934792", "dec": "-53.09581573700563", "parallax": "27.4904245633228", "phot_g_mean_mag": "6.986699", "bp_rp": "0.74846745", "radial_velocity": "-26.780615", "eso": {"UVES": 3}}, {"source_id": "1781461179211748352", "ra": "331.0835899066684", "dec": "20.265290345682608", "parallax": "30.45607041736877", "phot_g_mean_mag": "8.159118", "bp_rp": "0.973464", "radial_velocity": "-0.042495236", "eso": {}}, {"source_id": "2306216916182228224", "ra": "358.66306047507965", "dec": "-40.2999246476269", "parallax": "35.258922174101976", "phot_g_mean_mag": "5.892706", "bp_rp": "0.7300849", "radial_velocity": "-9.072012", "eso": {"UVES": 1}}, {"source_id": "2328250334633289856", "ra": "357.2108823831668", "dec": "-28.12148552135883", "parallax": "22.682092908501087", "phot_g_mean_mag": "8.834544", "bp_rp": "0.98489666", "radial_velocity": "7.3282695", "eso": {"FEROS": 5, "UVES": 4}}, {"source_id": "2352443855348067712", "ra": "15.616682731389226", "dec": "-21.610718192856524", "parallax": "30.935149136906823", "phot_g_mean_mag": "7.8078575", "bp_rp": "0.92406034", "radial_velocity": "16.116386", "eso": {}}, {"source_id": "2432640549850299648", "ra": "355.7906382075887", "dec": "-12.219684569695048", "parallax": "20.568641345553278", "phot_g_mean_mag": "8.82253", "bp_rp": "0.91649055", "radial_velocity": "8.971038", "eso": {}}, {"source_id": "2702122500402013696", "ra": "325.8934364637481", "dec": "9.17208821669477", "parallax": "29.34900812438163", "phot_g_mean_mag": "7.6366606", "bp_rp": "0.82571316", "radial_velocity": "-3.0735805", "eso": {}}, {"source_id": "2742734268045411328", "ra": "357.5259934746737", "dec": "2.8779995049057217", "parallax": "21.2400930645151", "phot_g_mean_mag": "8.1521", "bp_rp": "0.8970823", "radial_velocity": "-23.875877", "eso": {}}, {"source_id": "4959271163279358208", "ra": "27.088216574812474", "dec": "-41.494389465511", "parallax": "22.52768525213634", "phot_g_mean_mag": "6.9821544", "bp_rp": "0.78931475", "radial_velocity": "36.123043", "eso": {"UVES": 1}}, {"source_id": "4988158666636598272", "ra": "16.166313593931406", "dec": "-39.49056426831869", "parallax": "23.66725995268631", "phot_g_mean_mag": "7.5724163", "bp_rp": "0.7799821", "radial_velocity": "23.142336", "eso": {"FEROS": 10, "UVES": 2}}, {"source_id": "5069294481507177344", "ra": "39.03224555762209", "dec": "-28.218417446928576", "parallax": "26.830458160908044", "phot_g_mean_mag": "8.192235", "bp_rp": "0.93590546", "radial_velocity": "-1.131057", "eso": {}}, {"source_id": "5129338021224785408", "ra": "41.277321981998256", "dec": "-18.572408740298428", "parallax": "70.0458650896813", "phot_g_mean_mag": "4.3308682", "bp_rp": "0.6453371", "radial_velocity": "29.086166", "eso": {"FEROS": 2, "UVES": 2}}, {"source_id": "6589329277812374784", "ra": "324.83795784820484", "dec": "-37.14133978542502", "parallax": "26.01740515915336", "phot_g_mean_mag": "7.9051695", "bp_rp": "0.86295605", "radial_velocity": "-46.024803", "eso": {}}, {"source_id": "6621026789291266304", "ra": "339.5481423765981", "dec": "-27.443362759736164", "parallax": "27.246498285973924", "phot_g_mean_mag": "7.7284293", "bp_rp": "0.82138777", "radial_velocity": "46.196716", "eso": {"UVES": 2}}, {"source_id": "6813759564048865536", "ra": "327.8541764264102", "dec": "-23.27099994754639", "parallax": "24.966954130855033", "phot_g_mean_mag": "6.7378097", "bp_rp": "0.6565685", "radial_velocity": "-43.43525", "eso": {"UVES": 2}}, {"source_id": "6830781928192100992", "ra": "324.66942441257424", "dec": "-18.69329027556793", "parallax": "20.427323598623364", "phot_g_mean_mag": "8.23779", "bp_rp": "0.8251796", "radial_velocity": "7.800463", "eso": {}}, {"source_id": "6837559970700624768", "ra": "327.59588577716937", "dec": "-16.19714865174377", "parallax": "26.195801118082258", "phot_g_mean_mag": "8.087862", "bp_rp": "0.90400314", "radial_velocity": "21.90301", "eso": {}}, {"source_id": "84625634714435968", "ra": "41.86480869932558", "dec": "19.37111881367146", "parallax": "30.188027327656282", "phot_g_mean_mag": "7.192943", "bp_rp": "0.7786794", "radial_velocity": "4.336181", "eso": {"UVES": 6}}, {"source_id": "2832641058969396864", "ra": "345.7701802098476", "dec": "20.918446768231533", "parallax": "41.16040319900336", "phot_g_mean_mag": "6.509276", "bp_rp": "0.78383636", "radial_velocity": "1.9505934", "eso": {}}, {"source_id": "3179824465465177984", "ra": "72.42546512715394", "dec": "-13.770434395881415", "parallax": "27.58397103778145", "phot_g_mean_mag": "6.1535773", "bp_rp": "0.6239252", "radial_velocity": "-3.8273315", "eso": {}}, {"source_id": "3227308623164447616", "ra": "76.02629554987988", "dec": "-0.6496952551542376", "parallax": "20.631259288312037", "phot_g_mean_mag": "8.421078", "bp_rp": "0.88895226", "radial_velocity": "-40.581142", "eso": {"ESPRESSO": 28}}, {"source_id": "4813785605758514688", "ra": "75.97493256996276", "dec": "-41.74424652820503", "parallax": "31.620440603112332", "phot_g_mean_mag": "6.1908894", "bp_rp": "0.6733632", "radial_velocity": "30.618204", "eso": {}}, {"source_id": "5099439860525040128", "ra": "49.57508256806095", "dec": "-21.924122769993822", "parallax": "23.122976152220556", "phot_g_mean_mag": "9.012541", "bp_rp": "0.96461964", "radial_velocity": "-7.994456", "eso": {}}, {"source_id": "60460465080107392", "ra": "48.25848892028184", "dec": "20.729631633592096", "parallax": "23.221313264874908", "phot_g_mean_mag": "8.480249", "bp_rp": "0.8363366", "radial_velocity": "-4.6860814", "eso": {}}, {"source_id": "153688738899158528", "ra": "74.57897023793055", "dec": "26.09486613503308", "parallax": "23.17295543733428", "phot_g_mean_mag": "8.3414755", "bp_rp": "0.8968668", "radial_velocity": "12.795929", "eso": {}}, {"source_id": "680584232872446976", "ra": "121.17795569480079", "dec": "24.33040930893388", "parallax": "21.351565284105032", "phot_g_mean_mag": "8.2646675", "bp_rp": "0.8649168", "radial_velocity": "25.112585", "eso": {}}, {"source_id": "681096777089578112", "ra": "122.61289433225785", "dec": "25.505787756746404", "parallax": "24.8471601933712", "phot_g_mean_mag": "5.5087924", "bp_rp": "0.99662304", "radial_velocity": "-44.433975", "eso": {}}, {"source_id": "887822001246832384", "ra": "105.87771196960249", "dec": "29.33340231275945", "parallax": "52.771176020747866", "phot_g_mean_mag": "5.7895827", "bp_rp": "0.77283525", "radial_velocity": "24.5737", "eso": {}}, {"source_id": "1230894097540611968", "ra": "208.95697391276858", "dec": "14.056540877084931", "parallax": "40.79969589327944", "phot_g_mean_mag": "6.034668", "bp_rp": "0.68781567", "radial_velocity": "-10.267005", "eso": {}}, {"source_id": "3065191272937568896", "ra": "126.89580209174606", "dec": "-5.148995117355667", "parallax": "24.541823667178694", "phot_g_mean_mag": "7.042251", "bp_rp": "0.7611079", "radial_velocity": "60.33903", "eso": {}}, {"source_id": "3073562610873679872", "ra": "128.6310134205414", "dec": "-0.725982493124045", "parallax": "47.25797681744129", "phot_g_mean_mag": "7.1118493", "bp_rp": "0.9749708", "radial_velocity": "34.997257", "eso": {}}, {"source_id": "3312709379213017728", "ra": "66.90003194033417", "dec": "15.589085472787543", "parallax": "21.284016509945314", "phot_g_mean_mag": "7.289236", "bp_rp": "0.6894736", "radial_velocity": "39.240513", "eso": {"UVES": 2}}, {"source_id": "3369744964358573824", "ra": "97.26481492729795", "dec": "17.744509171109204", "parallax": "21.548571858926977", "phot_g_mean_mag": "7.473825", "bp_rp": "0.76436853", "radial_velocity": "-14.277345", "eso": {}}, {"source_id": "3380479015342121600", "ra": "103.67826759483295", "dec": "24.24512750011012", "parallax": "32.18549484347468", "phot_g_mean_mag": "6.715178", "bp_rp": "0.72929716", "radial_velocity": "-3.7679932", "eso": {"UVES": 2}}, {"source_id": "3391729905511044864", "ra": "75.5845515562574", "dec": "13.90978693086959", "parallax": "26.98188635844924", "phot_g_mean_mag": "7.3755164", "bp_rp": "0.75996256", "radial_velocity": "28.146889", "eso": {}}, {"source_id": "3402798414192387328", "ra": "84.25998285021262", "dec": "20.72892007732205", "parallax": "31.609281135328857", "phot_g_mean_mag": "7.487053", "bp_rp": "0.85669374", "radial_velocity": "-23.077703", "eso": {"UVES": 2}}, {"source_id": "3611733347480470144", "ra": "201.50758409842672", "dec": "-10.533856979100383", "parallax": "21.586445755378904", "phot_g_mean_mag": "8.947606", "bp_rp": "0.98315144", "radial_velocity": "-2.11119", "eso": {}}, {"source_id": "3721126409323324416", "ra": "206.73572793286885", "dec": "6.3498840911271", "parallax": "31.780648513087556", "phot_g_mean_mag": "6.1861258", "bp_rp": "0.7872591", "radial_velocity": "-30.549679", "eso": {"FEROS": 1}}, {"source_id": "3767319332347773184", "ra": "154.8175566711003", "dec": "-11.37880695509475", "parallax": "24.29838677565892", "phot_g_mean_mag": "7.8782067", "bp_rp": "0.8466344", "radial_velocity": "18.573935", "eso": {"UVES": 1}}, {"source_id": "3835867938104798848", "ra": "153.53575189216173", "dec": "3.149514769425797", "parallax": "28.90964771610414", "phot_g_mean_mag": "7.58495", "bp_rp": "0.80797243", "radial_velocity": "-21.838022", "eso": {"FEROS": 11, "UVES": 4}}, {"source_id": "3906535027891367040", "ra": "183.30470416184707", "dec": "10.819032667163745", "parallax": "27.324069781615037", "phot_g_mean_mag": "7.407042", "bp_rp": "0.8356781", "radial_velocity": "-24.399958", "eso": {"FEROS": 1}}, {"source_id": "3978500258656158720", "ra": "171.6127754568998", "dec": "20.51781321643922", "parallax": "21.651632688444902", "phot_g_mean_mag": "7.799323", "bp_rp": "0.7543502", "radial_velocity": "5.3335495", "eso": {}}, {"source_id": "5731252295913584768", "ra": "137.10269958751732", "dec": "-15.145678743667276", "parallax": "27.584365596627467", "phot_g_mean_mag": "7.13542", "bp_rp": "0.80102825", "radial_velocity": "66.87984", "eso": {"ESPRESSO": 26, "FEROS": 1, "UVES": 2}}, {"source_id": "6009538585839374336", "ra": "236.8689134126426", "dec": "-37.917263016788894", "parallax": "65.58889545142002", "phot_g_mean_mag": "5.8338356", "bp_rp": "0.8790302", "radial_velocity": "-6.9188695", "eso": {"UVES": 33}}, {"source_id": "6019275689036870272", "ra": "250.69435328922043", "dec": "-37.342934692646196", "parallax": "20.903933888324158", "phot_g_mean_mag": "6.96621", "bp_rp": "0.9439454", "radial_velocity": "-9.0111475", "eso": {"ESPRESSO": 26}}, {"source_id": "6178665292610269824", "ra": "207.36307968230247", "dec": "-26.34999437542785", "parallax": "22.819369081348732", "phot_g_mean_mag": "7.7532244", "bp_rp": "0.89622927", "radial_velocity": "", "eso": {}}, {"source_id": "6217883669787280384", "ra": "223.13619090547922", "dec": "-30.57744475009906", "parallax": "25.944310817210983", "phot_g_mean_mag": "6.1582255", "bp_rp": "0.75914335", "radial_velocity": "-28.83543", "eso": {"UVES": 4}}, {"source_id": "4401951740184066688", "ra": "233.76951714862014", "dec": "-3.3228125737108622", "parallax": "22.67199496554135", "phot_g_mean_mag": "8.424056", "bp_rp": "0.9812269", "radial_velocity": "-23.927382", "eso": {}}, {"source_id": "4414182329573955968", "ra": "231.5320385194718", "dec": "-2.9710264386695995", "parallax": "20.750975727387036", "phot_g_mean_mag": "8.796398", "bp_rp": "0.9495506", "radial_velocity": "-11.52639", "eso": {}}, {"source_id": "4161510228220168448", "ra": "265.4399672251838", "dec": "-13.315257207216826", "parallax": "28.724278150988276", "phot_g_mean_mag": "7.5506835", "bp_rp": "0.8588619", "radial_velocity": "2.8347478", "eso": {}}, {"source_id": "6698960688866464768", "ra": "300.08506043759076", "dec": "-33.70473731804371", "parallax": "45.15373635211155", "phot_g_mean_mag": "5.5258694", "bp_rp": "0.6585312", "radial_velocity": "-7.848643", "eso": {"FEROS": 5}}, {"source_id": "6770313530317154560", "ra": "288.8890362583546", "dec": "-24.179808123405238", "parallax": "36.31153546833892", "phot_g_mean_mag": "6.119344", "bp_rp": "0.6959901", "radial_velocity": "-24.695957", "eso": {"UVES": 61}}, {"source_id": "1201007271258546432", "ra": "246.15652168468816", "dec": "19.500878817592813", "parallax": "26.488792037517577", "phot_g_mean_mag": "8.468878", "bp_rp": "0.98677444", "radial_velocity": "-18.881718", "eso": {}}, {"source_id": "4272651028186198272", "ra": "279.7934363909704", "dec": "0.10617455010299218", "parallax": "20.16275843986192", "phot_g_mean_mag": "7.9004865", "bp_rp": "0.76749134", "radial_velocity": "-37.242115", "eso": {}}, {"source_id": "4383355047189886080", "ra": "249.4401533166821", "dec": "0.03916359302114819", "parallax": "24.980138040712166", "phot_g_mean_mag": "7.8648224", "bp_rp": "0.9118347", "radial_velocity": "-38.574963", "eso": {}}, {"source_id": "4314798744888764544", "ra": "292.1932293941323", "dec": "11.026858458770365", "parallax": "24.43162601342203", "phot_g_mean_mag": "7.315313", "bp_rp": "0.7566118", "radial_velocity": "-40.830776", "eso": {}}, {"source_id": "6096524382383054720", "ra": "213.91199270565843", "dec": "-45.00136869927594", "parallax": "47.84205393669157", "phot_g_mean_mag": "6.17243", "bp_rp": "0.7626858", "radial_velocity": "4.3937736", "eso": {"FEROS": 2}}, {"source_id": "5875819211536139520", "ra": "230.79302239835812", "dec": "-60.65728215064515", "parallax": "24.07846497511228", "phot_g_mean_mag": "5.523074", "bp_rp": "0.65644073", "radial_velocity": "6.9650893", "eso": {}}, {"source_id": "5362002309531896192", "ra": "165.20877247037816", "dec": "-49.02010529422539", "parallax": "30.032368336542454", "phot_g_mean_mag": "7.4334364", "bp_rp": "0.8044777", "radial_velocity": "18.113468", "eso": {}}, {"source_id": "5237533092169382528", "ra": "169.8153499352821", "dec": "-64.58229392251744", "parallax": "26.713101800587353", "phot_g_mean_mag": "5.879746", "bp_rp": "0.62050533", "radial_velocity": "8.911026", "eso": {"FEROS": 1}}, {"source_id": "5515759870997665920", "ra": "127.45873094257624", "dec": "-46.99419106877374", "parallax": "21.278629391067316", "phot_g_mean_mag": "8.975654", "bp_rp": "0.99744606", "radial_velocity": "14.6425085", "eso": {}}, {"source_id": "5539736336937681920", "ra": "123.0656782677589", "dec": "-40.50221714325995", "parallax": "23.182282587070354", "phot_g_mean_mag": "8.050782", "bp_rp": "0.7871723", "radial_velocity": "-3.2931054", "eso": {}}, {"source_id": "4637584916037247488", "ra": "20.85969769152912", "dec": "-76.61187228607294", "parallax": "21.620087813405448", "phot_g_mean_mag": "8.234468", "bp_rp": "0.83551073", "radial_velocity": "12.649687", "eso": {"UVES": 6}}, {"source_id": "4777123623183866240", "ra": "72.40540809643494", "dec": "-53.8804877585799", "parallax": "33.92198637279849", "phot_g_mean_mag": "7.959221", "bp_rp": "0.9854188", "radial_velocity": "", "eso": {}}, {"source_id": "4928388630434466560", "ra": "14.999231978628304", "dec": "-51.3433635695612", "parallax": "20.428068965378777", "phot_g_mean_mag": "9.146625", "bp_rp": "0.99871826", "radial_velocity": "17.782507", "eso": {}}, {"source_id": "5266348577487273344", "ra": "93.77484651708085", "dec": "-71.70251963419632", "parallax": "30.768772752492332", "phot_g_mean_mag": "6.482202", "bp_rp": "0.7400813", "radial_velocity": "13.597842", "eso": {"ESPRESSO": 35, "UVES": 2}}, {"source_id": "5291028181119851776", "ra": "119.45011997217786", "dec": "-60.3025422035792", "parallax": "61.835996364190315", "phot_g_mean_mag": "5.4420853", "bp_rp": "0.74453115", "radial_velocity": "15.013025", "eso": {"FEROS": 6, "UVES": 1}}, {"source_id": "5317114850417299584", "ra": "133.79928015793473", "dec": "-54.96617494635676", "parallax": "41.08159535664877", "phot_g_mean_mag": "5.587254", "bp_rp": "0.63509655", "radial_velocity": "-6.2892346", "eso": {"FEROS": 3}}, {"source_id": "6353376831270492800", "ra": "353.33191060714574", "dec": "-77.38532854627742", "parallax": "32.10233321735716", "phot_g_mean_mag": "5.655614", "bp_rp": "0.83135366", "radial_velocity": "26.517187", "eso": {"UVES": 4}}, {"source_id": "6368303006559319424", "ra": "316.17968483039147", "dec": "-77.02541198234553", "parallax": "22.177365210564297", "phot_g_mean_mag": "4.9640484", "bp_rp": "0.7207575", "radial_velocity": "", "eso": {"FEROS": 8}}, {"source_id": "6369544118965772416", "ra": "310.4365054098678", "dec": "-75.35152180039606", "parallax": "25.032724921336342", "phot_g_mean_mag": "6.342613", "bp_rp": "0.7631531", "radial_velocity": "-11.00263", "eso": {"ESPRESSO": 27, "FEROS": 1}}, {"source_id": "6412792927806976768", "ra": "330.89493474340514", "dec": "-55.97737708675474", "parallax": "20.122565857761415", "phot_g_mean_mag": "6.748166", "bp_rp": "0.73161364", "radial_velocity": "35.332066", "eso": {}}, {"source_id": "6445776038963071744", "ra": "295.64111818901085", "dec": "-59.01120331224521", "parallax": "24.491103279014045", "phot_g_mean_mag": "8.654938", "bp_rp": "0.998332", "radial_velocity": "18.69862", "eso": {}}, {"source_id": "6472858766996632704", "ra": "301.89635259789105", "dec": "-55.01585673615903", "parallax": "41.506896902473144", "phot_g_mean_mag": "6.125575", "bp_rp": "0.6970897", "radial_velocity": "12.555019", "eso": {"FEROS": 1}}, {"source_id": "6514371309538745600", "ra": "341.5348820188238", "dec": "-48.97903609290891", "parallax": "25.341749508501685", "phot_g_mean_mag": "6.4825788", "bp_rp": "0.8073125", "radial_velocity": "-18.815119", "eso": {"UVES": 4}}, {"source_id": "6517058790835773440", "ra": "337.75059755923917", "dec": "-49.43413069104159", "parallax": "24.424668790862217", "phot_g_mean_mag": "6.6741953", "bp_rp": "0.76803064", "radial_velocity": "-0.36914852", "eso": {"UVES": 2}}, {"source_id": "1779546757669063552", "ra": "330.79502626424147", "dec": "18.88423938290383", "parallax": "20.76938988528237", "phot_g_mean_mag": "7.5212455", "bp_rp": "0.7129955", "radial_velocity": "-14.7757635", "eso": {"ESPRESSO": 88, "FEROS": 1, "UVES": 61}}, {"source_id": "2348830516542653824", "ra": "12.36401204858633", "dec": "-23.2119122643033", "parallax": "53.052628381800204", "phot_g_mean_mag": "6.9578214", "bp_rp": "0.9489813", "radial_velocity": "9.707644", "eso": {}}, {"source_id": "2417456431710276096", "ra": "2.0681073974691007", "dec": "-14.82454115485891", "parallax": "36.6167237202517", "phot_g_mean_mag": "6.8955975", "bp_rp": "0.77679014", "radial_velocity": "7.88474", "eso": {"UVES": 2}}, {"source_id": "2456043276890994176", "ra": "18.264091930810547", "dec": "-13.96307556975908", "parallax": "21.655878608428427", "phot_g_mean_mag": "8.903975", "bp_rp": "0.99604416", "radial_velocity": "-7.2775407", "eso": {}}, {"source_id": "2476991412940982016", "ra": "22.796324396834994", "dec": "-9.312550303256888", "parallax": "21.724361727514232", "phot_g_mean_mag": "7.99784", "bp_rp": "0.7921996", "radial_velocity": "26.983948", "eso": {}}, {"source_id": "2500695921563092736", "ra": "34.81708581927016", "dec": "-0.7799805809971213", "parallax": "25.423629882960324", "phot_g_mean_mag": "8.296135", "bp_rp": "0.92827845", "radial_velocity": "24.978394", "eso": {}}, {"source_id": "2534009921293834240", "ra": "21.757777116050615", "dec": "-0.1591698092664311", "parallax": "32.24189497467723", "phot_g_mean_mag": "7.764141", "bp_rp": "0.925189", "radial_velocity": "13.593904", "eso": {}}, {"source_id": "2684228223537656576", "ra": "320.4746502191535", "dec": "-4.174859493855487", "parallax": "24.455197044847775", "phot_g_mean_mag": "7.8569865", "bp_rp": "0.8961921", "radial_velocity": "-23.809284", "eso": {}}, {"source_id": "4958034040899151360", "ra": "30.943866958877006", "dec": "-40.46889809765771", "parallax": "22.003883567694622", "phot_g_mean_mag": "8.500326", "bp_rp": "0.90665674", "radial_velocity": "42.642883", "eso": {}}, {"source_id": "5000774703569900800", "ra": "10.802760256487394", "dec": "-37.98314065870438", "parallax": "23.825609048907918", "phot_g_mean_mag": "7.7227287", "bp_rp": "0.8580556", "radial_velocity": "5.051237", "eso": {}}, {"source_id": "5121561759597725440", "ra": "31.40817277429552", "dec": "-24.37974696795537", "parallax": "21.02800991770282", "phot_g_mean_mag": "8.749379", "bp_rp": "0.95733833", "radial_velocity": "40.994633", "eso": {"FEROS": 3}}, {"source_id": "6603827644293770624", "ra": "341.79019743919497", "dec": "-32.67586045991355", "parallax": "36.427432649473914", "phot_g_mean_mag": "7.4024825", "bp_rp": "0.905488", "radial_velocity": "0.38569134", "eso": {}}, {"source_id": "291701396922348672", "ra": "23.329265970835728", "dec": "23.975698852698212", "parallax": "30.379143801401614", "phot_g_mean_mag": "7.4726605", "bp_rp": "0.8214841", "radial_velocity": "11.321394", "eso": {}}, {"source_id": "301843159033054848", "ra": "24.902416683019762", "dec": "28.111671989747506", "parallax": "31.490524426819533", "phot_g_mean_mag": "7.5583863", "bp_rp": "0.89026976", "radial_velocity": "56.01752", "eso": {}}, {"source_id": "2778942732134817408", "ra": "8.977734745478323", "dec": "13.2062789661009", "parallax": "24.606911415430016", "phot_g_mean_mag": "6.201087", "bp_rp": "0.670043", "radial_velocity": "-23.398182", "eso": {"FEROS": 1}}, {"source_id": "2790914111658905216", "ra": "17.053938751461505", "dec": "21.97680159554145", "parallax": "30.7352589172212", "phot_g_mean_mag": "7.450523", "bp_rp": "0.8510823", "radial_velocity": "-23.666824", "eso": {"FEROS": 2}}, {"source_id": "2904377595613861248", "ra": "87.2771664469729", "dec": "-29.0364314222141", "parallax": "20.101827556880252", "phot_g_mean_mag": "9.066265", "bp_rp": "0.9670992", "radial_velocity": "13.044587", "eso": {}}, {"source_id": "2951734970174697344", "ra": "99.67755492452916", "dec": "-13.25003724906388", "parallax": "23.799057082353272", "phot_g_mean_mag": "7.8067436", "bp_rp": "0.92548656", "radial_velocity": "32.916904", "eso": {}}, {"source_id": "5060105897197110144", "ra": "50.01403102395243", "dec": "-28.78412676056192", "parallax": "27.812323049350464", "phot_g_mean_mag": "8.24852", "bp_rp": "0.9817629", "radial_velocity": "40.27011", "eso": {}}, {"source_id": "5559265690666326016", "ra": "105.98816863278283", "dec": "-43.606302371429905", "parallax": "58.61923555068", "phot_g_mean_mag": "5.391417", "bp_rp": "0.8057289", "radial_velocity": "88.80927", "eso": {"FEROS": 1, "UVES": 8}}, {"source_id": "5586381090520538880", "ra": "112.67664531263651", "dec": "-37.33912778295995", "parallax": "45.97376105121097", "phot_g_mean_mag": "6.502913", "bp_rp": "0.8067999", "radial_velocity": "9.17938", "eso": {"FEROS": 2, "UVES": 4}}, {"source_id": "5643762781311698048", "ra": "129.0949668890773", "dec": "-30.03732451724493", "parallax": "27.24412061973968", "phot_g_mean_mag": "7.8677955", "bp_rp": "0.92810297", "radial_velocity": "29.66466", "eso": {"UVES": 27}}, {"source_id": "36110577493459968", "ra": "56.165597799202345", "dec": "10.176919362275687", "parallax": "21.082149536473956", "phot_g_mean_mag": "8.448276", "bp_rp": "0.86688614", "radial_velocity": "6.2555656", "eso": {}}, {"source_id": "42768532716776704", "ra": "53.23960555371188", "dec": "16.598001931984328", "parallax": "20.744294058130393", "phot_g_mean_mag": "6.919528", "bp_rp": "0.6296315", "radial_velocity": "-6.2436724", "eso": {}}, {"source_id": "65360679169452032", "ra": "59.1205547610188", "dec": "22.67336932265094", "parallax": "21.34379161585563", "phot_g_mean_mag": "7.680655", "bp_rp": "0.84563494", "radial_velocity": "39.54628", "eso": {}}, {"source_id": "702798559642115584", "ra": "129.53481388676312", "dec": "26.048165526070633", "parallax": "22.611733030315648", "phot_g_mean_mag": "7.405389", "bp_rp": "0.7825198", "radial_velocity": "25.713963", "eso": {}}, {"source_id": "1226796526941689856", "ra": "213.5204219101113", "dec": "12.959200053475362", "parallax": "29.711124664581675", "phot_g_mean_mag": "5.392254", "bp_rp": "0.711524", "radial_velocity": "-39.245453", "eso": {}}, {"source_id": "1252050659765215616", "ra": "214.1367874347", "dec": "20.120338077253038", "parallax": "30.23464323226783", "phot_g_mean_mag": "8.268582", "bp_rp": "0.9924755", "radial_velocity": "", "eso": {}}, {"source_id": "3033005406506033664", "ra": "108.95931641149", "dec": "-13.048694778534458", "parallax": "30.344010983158466", "phot_g_mean_mag": "7.59369", "bp_rp": "0.7835951", "radial_velocity": "66.778786", "eso": {}}, {"source_id": "3113909602378333056", "ra": "104.14239928227293", "dec": "1.1595170623603641", "parallax": "31.7697146742958", "phot_g_mean_mag": "7.2316303", "bp_rp": "0.85997295", "radial_velocity": "-8.022995", "eso": {"FEROS": 2}}, {"source_id": "3235618049144649984", "ra": "78.3541680827583", "dec": "3.687217844801173", "parallax": "24.310955548820917", "phot_g_mean_mag": "7.718563", "bp_rp": "0.83134556", "radial_velocity": "-4.2457514", "eso": {"FEROS": 1}}, {"source_id": "3259758514127331328", "ra": "61.041811888510715", "dec": "2.8263973953451176", "parallax": "28.47628370008734", "phot_g_mean_mag": "5.2193494", "bp_rp": "0.67248154", "radial_velocity": "-17.999166", "eso": {"FEROS": 1}}, {"source_id": "3284145132275338496", "ra": "66.48933843777674", "dec": "5.1501657921023645", "parallax": "21.00341544103485", "phot_g_mean_mag": "7.222252", "bp_rp": "0.6614585", "radial_velocity": "29.599987", "eso": {}}, {"source_id": "3312644885984344704", "ra": "68.24817726690902", "dec": "15.818854771000632", "parallax": "21.35731378098158", "phot_g_mean_mag": "8.475605", "bp_rp": "0.9044514", "radial_velocity": "40.729515", "eso": {}}, {"source_id": "3314213025787054592", "ra": "67.38219601870492", "dec": "17.89303687476587", "parallax": "22.00647700341757", "phot_g_mean_mag": "8.7407255", "bp_rp": "0.9833555", "radial_velocity": "39.725494", "eso": {"UVES": 2}}, {"source_id": "3617511628977601280", "ra": "206.8391466215129", "dec": "-8.502822893279998", "parallax": "28.049754356386792", "phot_g_mean_mag": "8.4757595", "bp_rp": "0.99915695", "radial_velocity": "-6.5582404", "eso": {}}, {"source_id": "3639520621950395776", "ra": "215.66127554099438", "dec": "-7.770395956400031", "parallax": "23.802006759670867", "phot_g_mean_mag": "7.4296565", "bp_rp": "0.74325323", "radial_velocity": "-32.49496", "eso": {}}, {"source_id": "3740176925743994752", "ra": "202.10645605299496", "dec": "13.776228558320799", "parallax": "55.25105809943382", "phot_g_mean_mag": "4.7789707", "bp_rp": "0.91291237", "radial_velocity": "4.995129", "eso": {}}, {"source_id": "3928040444539772800", "ra": "192.21948181750017", "dec": "12.095753399727542", "parallax": "27.591235484604734", "phot_g_mean_mag": "6.9376464", "bp_rp": "0.8330045", "radial_velocity": "3.2889051", "eso": {"UVES": 2}}, {"source_id": "3945118643256370688", "ra": "196.91845594764368", "dec": "24.020577974441277", "parallax": "26.70192018338576", "phot_g_mean_mag": "8.345107", "bp_rp": "0.937737", "radial_velocity": "-1.6725522", "eso": {"ESPRESSO": 5}}, {"source_id": "3988038079645800960", "ra": "162.86595655975063", "dec": "20.275462017447765", "parallax": "20.207848412455224", "phot_g_mean_mag": "8.076352", "bp_rp": "0.69106674", "radial_velocity": "65.66359", "eso": {"UVES": 8}}, {"source_id": "5395795730687103488", "ra": "168.95321909294123", "dec": "-39.322663550827095", "parallax": "36.8989960179662", "phot_g_mean_mag": "7.200772", "bp_rp": "0.80809164", "radial_velocity": "43.40126", "eso": {}}, {"source_id": "5649661592466640000", "ra": "135.30225369859798", "dec": "-25.528271888643605", "parallax": "21.87385644854801", "phot_g_mean_mag": "8.420803", "bp_rp": "0.9710121", "radial_velocity": "7.918943", "eso": {}}, {"source_id": "5660492297395345408", "ra": "149.12348839018367", "dec": "-24.099179371118908", "parallax": "21.930073931594904", "phot_g_mean_mag": "7.78381", "bp_rp": "0.7722249", "radial_velocity": "19.619947", "eso": {"FEROS": 1}}, {"source_id": "5673928909306135552", "ra": "150.09985099000875", "dec": "-16.295405233384333", "parallax": "23.101414744446828", "phot_g_mean_mag": "8.681391", "bp_rp": "0.96737766", "radial_velocity": "-16.779709", "eso": {}}, {"source_id": "5725521710037302272", "ra": "119.30130823848906", "dec": "-14.590149867872205", "parallax": "21.111971116235285", "phot_g_mean_mag": "7.8561606", "bp_rp": "0.8019495", "radial_velocity": "62.26454", "eso": {"FEROS": 2}}, {"source_id": "5755064487956174720", "ra": "129.45822651392788", "dec": "-6.80668784502362", "parallax": "41.06485142040002", "phot_g_mean_mag": "6.5950875", "bp_rp": "0.81143904", "radial_velocity": "35.333733", "eso": {"FEROS": 1}}, {"source_id": "6036143915376785280", "ra": "241.41134438119533", "dec": "-32.86337537963266", "parallax": "23.482953738613634", "phot_g_mean_mag": "8.18099", "bp_rp": "0.98677826", "radial_velocity": "", "eso": {}}, {"source_id": "6150200345317455232", "ra": "185.68769743564042", "dec": "-39.178341939763655", "parallax": "38.570303797991315", "phot_g_mean_mag": "6.5556755", "bp_rp": "0.7910304", "radial_velocity": "-7.11385", "eso": {"FEROS": 2, "UVES": 2}}, {"source_id": "6200121677915639168", "ra": "228.12683429640876", "dec": "-35.91916345403554", "parallax": "20.205192490335598", "phot_g_mean_mag": "8.20987", "bp_rp": "0.80615044", "radial_velocity": "15.551423", "eso": {}}, {"source_id": "6232825753630345728", "ra": "224.20261236770372", "dec": "-20.49023892982902", "parallax": "24.79374037627015", "phot_g_mean_mag": "8.018309", "bp_rp": "0.9083829", "radial_velocity": "-5.9582267", "eso": {}}, {"source_id": "5975810379449715968", "ra": "261.036463867263", "dec": "-34.7992390685047", "parallax": "30.263962083760795", "phot_g_mean_mag": "6.7847266", "bp_rp": "0.74389505", "radial_velocity": "-24.621141", "eso": {}}, {"source_id": "4063833154237384320", "ra": "269.1017309204531", "dec": "-26.773763679938153", "parallax": "22.330028727288756", "phot_g_mean_mag": "7.2603874", "bp_rp": "0.74655294", "radial_velocity": "-37.74384", "eso": {}}, {"source_id": "4133260372855731072", "ra": "251.64382110705355", "dec": "-17.595684888036715", "parallax": "27.500481458097937", "phot_g_mean_mag": "8.0382185", "bp_rp": "0.8678694", "radial_velocity": "41.886158", "eso": {}}, {"source_id": "6248975212915989888", "ra": "242.02976097690674", "dec": "-18.24371025083036", "parallax": "30.15128357774139", "phot_g_mean_mag": "6.8858166", "bp_rp": "0.72498894", "radial_velocity": "-17.746937", "eso": {}}, {"source_id": "4429219113157054848", "ra": "233.7089191689926", "dec": "6.803112858020489", "parallax": "26.23221641873615", "phot_g_mean_mag": "7.8590984", "bp_rp": "0.863719", "radial_velocity": "-5.897745", "eso": {}}, {"source_id": "4430259285517310336", "ra": "236.7102754950517", "dec": "7.416849323161746", "parallax": "24.54811686651112", "phot_g_mean_mag": "8.780353", "bp_rp": "0.99974823", "radial_velocity": "29.541227", "eso": {}}, {"source_id": "4492471268326460416", "ra": "264.2085021896235", "dec": "10.574492129677274", "parallax": "27.877164635042316", "phot_g_mean_mag": "7.1222014", "bp_rp": "0.8394246", "radial_velocity": "-76.81963", "eso": {"FEROS": 1}}, {"source_id": "4549900100674763264", "ra": "262.97530228951695", "dec": "16.823926440916846", "parallax": "20.584438136494487", "phot_g_mean_mag": "6.882366", "bp_rp": "0.662796", "radial_velocity": "-6.3630524", "eso": {}}, {"source_id": "4564047379349257472", "ra": "250.72186789262207", "dec": "20.530017440063958", "parallax": "21.296208754094224", "phot_g_mean_mag": "8.77055", "bp_rp": "0.8931732", "radial_velocity": "-0.3614581", "eso": {}}, {"source_id": "6882840883188886784", "ra": "313.94890428608846", "dec": "-17.114444584368027", "parallax": "21.781474295144278", "phot_g_mean_mag": "7.131465", "bp_rp": "0.71893644", "radial_velocity": "", "eso": {"FEROS": 2, "UVES": 6}}, {"source_id": "4513971290539167616", "ra": "285.86026042981035", "dec": "17.06707909588489", "parallax": "22.63697860909588", "phot_g_mean_mag": "7.465906", "bp_rp": "0.7727909", "radial_velocity": "-51.851578", "eso": {}}, {"source_id": "1818697205647102720", "ra": "307.0491224084263", "dec": "22.1279075381998", "parallax": "35.521877566096414", "phot_g_mean_mag": "6.938549", "bp_rp": "0.80235434", "radial_velocity": "-0.95319444", "eso": {}}, {"source_id": "5898641087150340224", "ra": "216.88518256780665", "dec": "-51.93290615534798", "parallax": "26.483381657657983", "phot_g_mean_mag": "7.683691", "bp_rp": "0.8444147", "radial_velocity": "12.995479", "eso": {"UVES": 8}}, {"source_id": "6092573252981419776", "ra": "213.6027625106794", "dec": "-48.14717876890452", "parallax": "26.364640141154535", "phot_g_mean_mag": "8.057623", "bp_rp": "0.8489084", "radial_velocity": "-24.057056", "eso": {"UVES": 4}}, {"source_id": "5909762269301963264", "ra": "266.64923413359395", "dec": "-62.75354167535398", "parallax": "29.08464455850058", "phot_g_mean_mag": "7.3628078", "bp_rp": "0.7852845", "radial_velocity": "-6.546379", "eso": {}}, {"source_id": "5341673851394297600", "ra": "176.20970965703515", "dec": "-58.70402313284336", "parallax": "25.353104425396683", "phot_g_mean_mag": "7.2957845", "bp_rp": "0.8716426", "radial_velocity": "49.516804", "eso": {"ESPRESSO": 32, "UVES": 6}}, {"source_id": "5766054141036403712", "ra": "197.0861110234049", "dec": "-87.21893477419093", "parallax": "27.55637505532858", "phot_g_mean_mag": "8.025184", "bp_rp": "0.88174677", "radial_velocity": "6.583002", "eso": {}}, {"source_id": "5831054382288870912", "ra": "245.74894904702995", "dec": "-61.69017302885802", "parallax": "24.776283949074674", "phot_g_mean_mag": "8.122923", "bp_rp": "0.9151139", "radial_velocity": "-27.517504", "eso": {}}, {"source_id": "4614366494633844736", "ra": "72.64119513215515", "dec": "-85.37534407381537", "parallax": "21.960091616105935", "phot_g_mean_mag": "7.987585", "bp_rp": "0.7860241", "radial_velocity": "25.953451", "eso": {}}, {"source_id": "4623036865373793408", "ra": "84.29954054316471", "dec": "-80.46445831742687", "parallax": "54.682509087903306", "phot_g_mean_mag": "5.5115805", "bp_rp": "0.76070404", "radial_velocity": "10.706408", "eso": {"ESPRESSO": 48, "UVES": 6}}, {"source_id": "4722111590409480064", "ra": "49.45525439342999", "dec": "-62.572432544470445", "parallax": "83.02397018243857", "phot_g_mean_mag": "5.344616", "bp_rp": "0.8345952", "radial_velocity": "12.441243", "eso": {"ESPRESSO": 31, "FEROS": 1}}, {"source_id": "4906784051581971200", "ra": "10.11468419994352", "dec": "-59.45262733734352", "parallax": "39.59120919706224", "phot_g_mean_mag": "5.766062", "bp_rp": "0.7356639", "radial_velocity": "2.921022", "eso": {"FEROS": 2, "UVES": 2}}, {"source_id": "4912580642524184960", "ra": "25.62339159017506", "dec": "-53.74129984828599", "parallax": "57.640899065213326", "phot_g_mean_mag": "5.383109", "bp_rp": "0.7105031", "radial_velocity": "27.639664", "eso": {"UVES": 12}}, {"source_id": "4918476567469050624", "ra": "3.2083836706679496", "dec": "-57.912454057528365", "parallax": "48.42889435082962", "phot_g_mean_mag": "7.024891", "bp_rp": "0.9451084", "radial_velocity": "1.0083393", "eso": {"FEROS": 1}}, {"source_id": "4942867480584948352", "ra": "33.08595645204044", "dec": "-46.81668340389069", "parallax": "23.015707897455005", "phot_g_mean_mag": "7.74238", "bp_rp": "0.81659126", "radial_velocity": "20.384403", "eso": {}}, {"source_id": "5200595308240165120", "ra": "166.08137901962914", "dec": "-78.86829650336779", "parallax": "21.78297047478379", "phot_g_mean_mag": "8.679714", "bp_rp": "0.9613104", "radial_velocity": "0.467646", "eso": {}}, {"source_id": "5217826648313336576", "ra": "140.52475416045132", "dec": "-73.54384881527659", "parallax": "26.886927282005004", "phot_g_mean_mag": "7.9524965", "bp_rp": "0.8772917", "radial_velocity": "29.074123", "eso": {}}, {"source_id": "5275635052687699456", "ra": "119.6144935763667", "dec": "-65.00544754807616", "parallax": "27.44857646966495", "phot_g_mean_mag": "8.047197", "bp_rp": "0.9761853", "radial_velocity": "69.205246", "eso": {}}, {"source_id": "5294069567720884480", "ra": "116.57020678453297", "dec": "-59.80881829619841", "parallax": "29.61698466394589", "phot_g_mean_mag": "8.066641", "bp_rp": "0.97131014", "radial_velocity": "17.434578", "eso": {}}, {"source_id": "6463958151650358784", "ra": "317.6081076201181", "dec": "-54.57462309760427", "parallax": "30.03206758149709", "phot_g_mean_mag": "7.712255", "bp_rp": "0.87401104", "radial_velocity": "-4.682345", "eso": {}}, {"source_id": "6515008236009148800", "ra": "343.8151339151693", "dec": "-48.491503172147716", "parallax": "22.346110979679665", "phot_g_mean_mag": "6.5500298", "bp_rp": "0.6208072", "radial_velocity": "0.8019478", "eso": {}}, {"source_id": "6643569766959929600", "ra": "291.9203333995993", "dec": "-54.33732438740015", "parallax": "21.624626432415827", "phot_g_mean_mag": "8.24508", "bp_rp": "0.7949953", "radial_velocity": "-41.55551", "eso": {}}, {"source_id": "6655168686921108864", "ra": "283.2745858784294", "dec": "-50.18090714864019", "parallax": "21.162138650630606", "phot_g_mean_mag": "8.10166", "bp_rp": "0.9693513", "radial_velocity": "-3.5947616", "eso": {"FEROS": 275, "UVES": 2}}, {"source_id": "2347054118068135040", "ra": "9.963197868355296", "dec": "-25.034512550004752", "parallax": "20.748328896855107", "phot_g_mean_mag": "8.5716715", "bp_rp": "0.8678694", "radial_velocity": "-11.13009", "eso": {}}, {"source_id": "2631283474485026176", "ra": "347.60360888307775", "dec": "-7.812598695240095", "parallax": "27.234823479895336", "phot_g_mean_mag": "7.1886196", "bp_rp": "0.7601323", "radial_velocity": "1.8733594", "eso": {"UVES": 4}}, {"source_id": "5123079601040591232", "ra": "33.81784908419067", "dec": "-23.28130403216205", "parallax": "20.604023548164072", "phot_g_mean_mag": "7.906983", "bp_rp": "0.8622203", "radial_velocity": "-3.7764738", "eso": {}}, {"source_id": "6787883382523590400", "ra": "318.5086969994956", "dec": "-29.66368710216429", "parallax": "33.5137081788245", "phot_g_mean_mag": "7.2112274", "bp_rp": "0.8412399", "radial_velocity": "-24.016651", "eso": {}}, {"source_id": "26147868272907648", "ra": "38.51600259043176", "dec": "12.180702683104537", "parallax": "22.52072670160063", "phot_g_mean_mag": "7.3514624", "bp_rp": "0.79771566", "radial_velocity": "34.20532", "eso": {}}, {"source_id": "1851343114622517504", "ra": "317.05037285674643", "dec": "28.623042020395744", "parallax": "23.401511021409494", "phot_g_mean_mag": "8.163888", "bp_rp": "0.98151875", "radial_velocity": "-75.25406", "eso": {}}, {"source_id": "2550696212836482944", "ra": "9.808760847631483", "dec": "3.1352504193721487", "parallax": "22.963815990610332", "phot_g_mean_mag": "7.193043", "bp_rp": "0.80313444", "radial_velocity": "-27.071795", "eso": {}}, {"source_id": "2556495586917083520", "ra": "12.619593216903768", "dec": "7.1013255018049035", "parallax": "29.514964023725994", "phot_g_mean_mag": "8.084638", "bp_rp": "0.94693947", "radial_velocity": "35.80173", "eso": {}}, {"source_id": "2831490694929214464", "ra": "346.63421156748313", "dec": "19.91087587516367", "parallax": "34.07722063693287", "phot_g_mean_mag": "6.314315", "bp_rp": "0.700222", "radial_velocity": "-0.91676986", "eso": {"UVES": 2}}, {"source_id": "2902205991429301888", "ra": "85.21621425881807", "dec": "-31.35273018754962", "parallax": "28.57913690491284", "phot_g_mean_mag": "7.6904383", "bp_rp": "0.8150444", "radial_velocity": "3.0999413", "eso": {"FEROS": 2, "UVES": 2}}, {"source_id": "2928593411513650944", "ra": "105.2097063211042", "dec": "-22.384894870484295", "parallax": "26.103113897786805", "phot_g_mean_mag": "7.900829", "bp_rp": "0.87133074", "radial_velocity": "23.902079", "eso": {}}, {"source_id": "2942741549172811904", "ra": "93.67273721484857", "dec": "-18.081577768848195", "parallax": "26.93557009690982", "phot_g_mean_mag": "8.1974535", "bp_rp": "0.92848253", "radial_velocity": "19.102146", "eso": {}}, {"source_id": "2972631875852489344", "ra": "74.03558113419624", "dec": "-23.058793583011145", "parallax": "20.841813438949632", "phot_g_mean_mag": "8.675947", "bp_rp": "0.8901901", "radial_velocity": "34.04073", "eso": {}}, {"source_id": "3210312170555686272", "ra": "78.93747511171647", "dec": "-4.7965504776000545", "parallax": "32.50861290459593", "phot_g_mean_mag": "6.9646626", "bp_rp": "0.770874", "radial_velocity": "34.065567", "eso": {"FEROS": 1}}, {"source_id": "3254366302946985600", "ra": "64.1257337748761", "dec": "-0.573568408852201", "parallax": "23.26223598819555", "phot_g_mean_mag": "7.90416", "bp_rp": "0.81772137", "radial_velocity": "-9.76655", "eso": {"FEROS": 1}}, {"source_id": "3265335443260522112", "ra": "48.194346115429944", "dec": "-1.1964050113001996", "parallax": "43.70273455684943", "phot_g_mean_mag": "4.92225", "bp_rp": "0.722445", "radial_velocity": "19.302824", "eso": {"FEROS": 2, "UVES": 5}}, {"source_id": "5056511692465250304", "ra": "51.547450689027755", "dec": "-30.61680891603944", "parallax": "34.36379186540934", "phot_g_mean_mag": "7.695747", "bp_rp": "0.8941164", "radial_velocity": "17.693844", "eso": {"FEROS": 2}}, {"source_id": "5155061095757916160", "ra": "48.97288275323549", "dec": "-14.799645272761587", "parallax": "20.79542612856316", "phot_g_mean_mag": "7.712003", "bp_rp": "0.763268", "radial_velocity": "41.1213", "eso": {}}, {"source_id": "47345009348203392", "ra": "64.78389360834417", "dec": "17.524630513050628", "parallax": "21.390700254048006", "phot_g_mean_mag": "8.279239", "bp_rp": "0.8785043", "radial_velocity": "37.76364", "eso": {"UVES": 2}}, {"source_id": "115311458058061440", "ra": "45.60960164514362", "dec": "26.608490327814263", "parallax": "47.181000059147735", "phot_g_mean_mag": "6.4558463", "bp_rp": "0.8573623", "radial_velocity": "9.843336", "eso": {}}, {"source_id": "627699888238838272", "ra": "149.25810911744748", "dec": "19.76236581518839", "parallax": "24.50157382500183", "phot_g_mean_mag": "7.457997", "bp_rp": "0.74182796", "radial_velocity": "30.58979", "eso": {"ESPRESSO": 8}}, {"source_id": "692120029700390912", "ra": "137.11289182752702", "dec": "27.54345762768868", "parallax": "20.45186297029772", "phot_g_mean_mag": "8.14437", "bp_rp": "0.7378831", "radial_velocity": "30.380344", "eso": {"UVES": 2}}, {"source_id": "1237374997031931392", "ra": "221.04844461403712", "dec": "18.46138384605654", "parallax": "23.788509349338554", "phot_g_mean_mag": "7.3725915", "bp_rp": "0.7998934", "radial_velocity": "6.4894686", "eso": {}}, {"source_id": "1241384331823317632", "ra": "220.59574253665133", "dec": "21.292929072487123", "parallax": "21.943226967458752", "phot_g_mean_mag": "7.35013", "bp_rp": "0.6728349", "radial_velocity": "-2.2045045", "eso": {}}, {"source_id": "3094474016366715520", "ra": "120.6085473473586", "dec": "4.151730690605455", "parallax": "23.90401597096791", "phot_g_mean_mag": "8.92683", "bp_rp": "0.9042797", "radial_velocity": "", "eso": {}}, {"source_id": "3219847066672970368", "ra": "86.64512552932929", "dec": "1.167566977088821", "parallax": "23.571371902224232", "phot_g_mean_mag": "5.7483845", "bp_rp": "0.9132886", "radial_velocity": "30.187641", "eso": {"FEROS": 2, "UVES": 5}}, {"source_id": "3236763808980278144", "ra": "82.19692254964863", "dec": "4.7972268290608", "parallax": "21.36365170240596", "phot_g_mean_mag": "8.905378", "bp_rp": "0.9505472", "radial_velocity": "57.056732", "eso": {}}, {"source_id": "3241295308714904960", "ra": "79.42074820691546", "dec": "7.352695264589854", "parallax": "21.836706771953928", "phot_g_mean_mag": "7.165373", "bp_rp": "0.8030915", "radial_velocity": "-78.93965", "eso": {"UVES": 2}}, {"source_id": "3258132920543658880", "ra": "58.59439947119488", "dec": "1.26110008668023", "parallax": "22.488493276520988", "phot_g_mean_mag": "7.829637", "bp_rp": "0.7753792", "radial_velocity": "16.008541", "eso": {}}, {"source_id": "3301771025223950336", "ra": "60.74834873825633", "dec": "9.207744616517619", "parallax": "22.131454823845687", "phot_g_mean_mag": "6.792206", "bp_rp": "0.6311922", "radial_velocity": "27.934275", "eso": {"UVES": 1}}, {"source_id": "3304412601908736512", "ra": "63.61408308649261", "dec": "12.435256533217302", "parallax": "21.055656069583602", "phot_g_mean_mag": "7.8848915", "bp_rp": "0.7950406", "radial_velocity": "38.440006", "eso": {"FEROS": 2, "UVES": 4}}, {"source_id": "3306922958753764992", "ra": "66.94247703953242", "dec": "11.736363784648624", "parallax": "22.151685825715028", "phot_g_mean_mag": "7.3707113", "bp_rp": "0.7133622", "radial_velocity": "39.475098", "eso": {"UVES": 2}}, {"source_id": "3313689422030650496", "ra": "66.6676726168485", "dec": "16.74677258632566", "parallax": "21.852128841107575", "phot_g_mean_mag": "7.950683", "bp_rp": "0.81960154", "radial_velocity": "38.12629", "eso": {"FEROS": 1, "UVES": 17}}, {"source_id": "3345968334645285376", "ra": "91.66810166362778", "dec": "15.5416453082647", "parallax": "63.406545041075034", "phot_g_mean_mag": "6.53857", "bp_rp": "0.9838109", "radial_velocity": "-10.014866", "eso": {}}, {"source_id": "3366754464528540416", "ra": "106.02041274591379", "dec": "20.597711879823482", "parallax": "28.641182692277766", "phot_g_mean_mag": "7.431518", "bp_rp": "0.7894511", "radial_velocity": "20.473024", "eso": {}}, {"source_id": "3369088315397965056", "ra": "94.91731984859116", "dec": "16.013183191034816", "parallax": "36.71399928594962", "phot_g_mean_mag": "6.479757", "bp_rp": "0.7253933", "radial_velocity": "40.556313", "eso": {}}, {"source_id": "3400292798990117888", "ra": "81.10726354597193", "dec": "17.38350331190306", "parallax": "68.59075963795857", "phot_g_mean_mag": "4.8501883", "bp_rp": "0.7080183", "radial_velocity": "37.700523", "eso": {"ESPRESSO": 1, "UVES": 2}}, {"source_id": "3409686510941439104", "ra": "70.71593085365843", "dec": "18.72002971063763", "parallax": "23.650619620336467", "phot_g_mean_mag": "6.9619913", "bp_rp": "0.83059263", "radial_velocity": "13.424096", "eso": {"UVES": 2}}, {"source_id": "3427479456640408448", "ra": "87.62851299399333", "dec": "23.460877909895437", "parallax": "24.461807560554906", "phot_g_mean_mag": "8.612543", "bp_rp": "0.90610504", "radial_velocity": "-49.44916", "eso": {}}, {"source_id": "3432423999088061568", "ra": "97.23534278115866", "dec": "26.967109699359476", "parallax": "21.66636328073238", "phot_g_mean_mag": "6.446991", "bp_rp": "0.70409393", "radial_velocity": "-4.79609", "eso": {}}, {"source_id": "3466924200065405824", "ra": "179.18146958377608", "dec": "-32.26744402877798", "parallax": "28.20748606987294", "phot_g_mean_mag": "7.6533113", "bp_rp": "0.83702135", "radial_velocity": "6.984981", "eso": {"UVES": 4}}, {"source_id": "3575733210781078016", "ra": "180.18562930618162", "dec": "-10.448272003975848", "parallax": "78.33591471044681", "phot_g_mean_mag": "5.3550773", "bp_rp": "0.9255285", "radial_velocity": "-0.41123462", "eso": {"UVES": 6}}, {"source_id": "3587572064793827328", "ra": "177.09738849384823", "dec": "-10.313588673666423", "parallax": "22.411964950082684", "phot_g_mean_mag": "6.108403", "bp_rp": "0.73493195", "radial_velocity": "14.553606", "eso": {}}, {"source_id": "3639520621950395904", "ra": "215.66113874396567", "dec": "-7.768771402644171", "parallax": "23.74155927853626", "phot_g_mean_mag": "7.4195247", "bp_rp": "0.7414732", "radial_velocity": "-33.290787", "eso": {}}, {"source_id": "3643688458214366080", "ra": "211.67017664257529", "dec": "-5.518749936985275", "parallax": "24.65255725283322", "phot_g_mean_mag": "8.146499", "bp_rp": "0.9728546", "radial_velocity": "-41.615944", "eso": {}}, {"source_id": "3649422995468596480", "ra": "217.04996173229358", "dec": "-2.227972894104621", "parallax": "26.87922520891192", "phot_g_mean_mag": "4.645484", "bp_rp": "0.87327194", "radial_velocity": "-9.712576", "eso": {}}, {"source_id": "3650718804281798912", "ra": "221.88577938788717", "dec": "-0.2820977030913268", "parallax": "31.335615996995855", "phot_g_mean_mag": "7.8486147", "bp_rp": "0.9424672", "radial_velocity": "-12.523224", "eso": {"FEROS": 10}}, {"source_id": "3654496279558010624", "ra": "215.81468026516512", "dec": "1.2394413528832344", "parallax": "57.27057989858388", "phot_g_mean_mag": "6.092967", "bp_rp": "0.82366705", "radial_velocity": "-19.208466", "eso": {"ESPRESSO": 4}}, {"source_id": "3896556994228586112", "ra": "177.53155412986933", "dec": "4.90651607082867", "parallax": "20.906553629468682", "phot_g_mean_mag": "8.971111", "bp_rp": "0.9740248", "radial_velocity": "48.178185", "eso": {}}, {"source_id": "3963325490659915392", "ra": "169.6461120877469", "dec": "10.601666003917375", "parallax": "28.799462621811912", "phot_g_mean_mag": "8.045288", "bp_rp": "0.9372821", "radial_velocity": "5.70087", "eso": {}}, {"source_id": "5632522783170253440", "ra": "145.83398544260203", "dec": "-29.803855943217066", "parallax": "22.180750295990283", "phot_g_mean_mag": "8.254668", "bp_rp": "0.8223076", "radial_velocity": "10.966527", "eso": {}}, {"source_id": "5760701787150565888", "ra": "133.57293283233423", "dec": "-5.434323445721112", "parallax": "59.35951989622318", "phot_g_mean_mag": "5.846635", "bp_rp": "0.82510614", "radial_velocity": "31.99201", "eso": {"ESPRESSO": 25, "FEROS": 17, "UVES": 11}}, {"source_id": "6040291273229121408", "ra": "239.90904271346034", "dec": "-29.632738394166207", "parallax": "27.645740394720352", "phot_g_mean_mag": "7.1986074", "bp_rp": "0.78358173", "radial_velocity": "-31.790813", "eso": {"UVES": 2}}, {"source_id": "6294933424567101568", "ra": "206.75896840225295", "dec": "-17.827775102099103", "parallax": "22.712009455013288", "phot_g_mean_mag": "8.198023", "bp_rp": "0.88560295", "radial_velocity": "26.082848", "eso": {}}, {"source_id": "6242862752903107968", "ra": "242.70493369463816", "dec": "-22.193897853307313", "parallax": "24.347253154915723", "phot_g_mean_mag": "8.333678", "bp_rp": "0.9199376", "radial_velocity": "-8.2063055", "eso": {}}, {"source_id": "6243032008973309440", "ra": "243.41750928990655", "dec": "-21.399925176308457", "parallax": "25.995048691372954", "phot_g_mean_mag": "6.525451", "bp_rp": "0.80827427", "radial_velocity": "21.19776", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "4377537462448122112", "ra": "253.5337611263132", "dec": "-4.340690877946715", "parallax": "22.12587862453376", "phot_g_mean_mag": "7.6853347", "bp_rp": "0.7544937", "radial_velocity": "-16.486284", "eso": {"UVES": 11}}, {"source_id": "6715410173095426304", "ra": "283.9654869333993", "dec": "-42.12655814451865", "parallax": "20.357734624468105", "phot_g_mean_mag": "8.317706", "bp_rp": "0.8048563", "radial_velocity": "-6.2336135", "eso": {}}, {"source_id": "4193091500674652544", "ra": "295.7984944585232", "dec": "-10.680418446242646", "parallax": "23.9315145253649", "phot_g_mean_mag": "7.7537947", "bp_rp": "0.7587733", "radial_velocity": "4.740038", "eso": {}}, {"source_id": "4466944284819435776", "ra": "245.77463456159464", "dec": "17.470139813404693", "parallax": "24.766747090920475", "phot_g_mean_mag": "8.258937", "bp_rp": "0.89137983", "radial_velocity": "-37.115448", "eso": {}}, {"source_id": "1815418118373631360", "ra": "307.07929398019195", "dec": "18.769242935140205", "parallax": "26.64647931052189", "phot_g_mean_mag": "6.747173", "bp_rp": "0.81251526", "radial_velocity": "-91.263794", "eso": {"FEROS": 5, "UVES": 1}}, {"source_id": "1822158880579024000", "ra": "301.00275239387724", "dec": "18.731095734730932", "parallax": "21.79777112536777", "phot_g_mean_mag": "8.643054", "bp_rp": "0.952858", "radial_velocity": "-47.351593", "eso": {}}, {"source_id": "4298143102210310272", "ra": "298.03970919926417", "dec": "7.460345670571131", "parallax": "31.076487729042093", "phot_g_mean_mag": "7.008314", "bp_rp": "0.7762928", "radial_velocity": "-37.711758", "eso": {}}, {"source_id": "4303364682926575744", "ra": "298.79015228516516", "dec": "10.742235559314928", "parallax": "26.278347246046007", "phot_g_mean_mag": "8.647362", "bp_rp": "0.83452415", "radial_velocity": "-192.22437", "eso": {"UVES": 6}}, {"source_id": "4590489981163831296", "ra": "272.3394587130807", "dec": "29.95198457546881", "parallax": "40.964457673183894", "phot_g_mean_mag": "6.6723127", "bp_rp": "0.7971139", "radial_velocity": "-14.651458", "eso": {"UVES": 14}}, {"source_id": "6083852412089238656", "ra": "203.55586243506235", "dec": "-47.24341395354252", "parallax": "22.688121181225412", "phot_g_mean_mag": "8.28574", "bp_rp": "0.83884716", "radial_velocity": "-9.870222", "eso": {}}, {"source_id": "6129861029477931136", "ra": "182.52595730859989", "dec": "-49.18100650689931", "parallax": "26.49938056869371", "phot_g_mean_mag": "7.9910636", "bp_rp": "0.87775135", "radial_velocity": "16.064186", "eso": {"UVES": 1}}, {"source_id": "5945941905576552064", "ra": "266.0361549633902", "dec": "-51.8349016618794", "parallax": "64.08529417744371", "phot_g_mean_mag": "4.942752", "bp_rp": "0.8506088", "radial_velocity": "-9.54413", "eso": {"ESPRESSO": 1, "FEROS": 4, "UVES": 13}}, {"source_id": "4703402747226471936", "ra": "3.769895398265567", "dec": "-68.52985581018227", "parallax": "21.459759352573318", "phot_g_mean_mag": "8.402725", "bp_rp": "0.86770964", "radial_velocity": "-18.115849", "eso": {}}, {"source_id": "4708607629114652032", "ra": "11.165312596304016", "dec": "-65.65281899170009", "parallax": "45.3558843976139", "phot_g_mean_mag": "6.3880486", "bp_rp": "0.8275051", "radial_velocity": "95.22514", "eso": {"FEROS": 2, "UVES": 1}}, {"source_id": "4755367693980799616", "ra": "44.74644150729595", "dec": "-43.7490711349801", "parallax": "25.126024764158483", "phot_g_mean_mag": "7.245209", "bp_rp": "0.7647023", "radial_velocity": "28.986773", "eso": {"UVES": 3}}, {"source_id": "4832401540206966656", "ra": "55.77082309980479", "dec": "-50.64084287697122", "parallax": "28.234231391892077", "phot_g_mean_mag": "6.8419514", "bp_rp": "0.6830239", "radial_velocity": "28.488354", "eso": {"ESPRESSO": 1}}, {"source_id": "4842770347173769728", "ra": "58.36356751911431", "dec": "-41.22240776670683", "parallax": "24.10563500541965", "phot_g_mean_mag": "7.1021743", "bp_rp": "0.67009115", "radial_velocity": "16.304731", "eso": {}}, {"source_id": "4852609086456829696", "ra": "47.96955417816999", "dec": "-39.0233461539086", "parallax": "23.445465493730815", "phot_g_mean_mag": "6.931445", "bp_rp": "0.69789696", "radial_velocity": "-5.2881346", "eso": {"UVES": 2}}, {"source_id": "5284372871600649600", "ra": "93.48312317226465", "dec": "-65.52239550200598", "parallax": "21.493818458283297", "phot_g_mean_mag": "8.614947", "bp_rp": "0.9834223", "radial_velocity": "67.25057", "eso": {}}, {"source_id": "5482551183847322752", "ra": "94.07788102639776", "dec": "-59.21490886489147", "parallax": "27.75626206707262", "phot_g_mean_mag": "6.298124", "bp_rp": "0.74487686", "radial_velocity": "-2.0561802", "eso": {"UVES": 2}}, {"source_id": "5488567574038257280", "ra": "116.9582970992207", "dec": "-54.265383607312614", "parallax": "30.75323644852065", "phot_g_mean_mag": "7.9220896", "bp_rp": "0.91512775", "radial_velocity": "22.362059", "eso": {}}, {"source_id": "6348288635054855680", "ra": "317.3448277591686", "dec": "-82.02750041650685", "parallax": "41.062581045371374", "phot_g_mean_mag": "6.833774", "bp_rp": "0.7967868", "radial_velocity": "-22.262579", "eso": {"FEROS": 1, "UVES": 1}}, {"source_id": "6366579320221510528", "ra": "305.09773820054426", "dec": "-75.57722488086884", "parallax": "25.138916245437287", "phot_g_mean_mag": "8.239852", "bp_rp": "0.90620756", "radial_velocity": "31.094696", "eso": {}}, {"source_id": "6423142149724180480", "ra": "304.908576427942", "dec": "-69.01537775376245", "parallax": "22.414671741427437", "phot_g_mean_mag": "8.038901", "bp_rp": "0.82960844", "radial_velocity": "-22.026857", "eso": {}}, {"source_id": "6481828582855724544", "ra": "309.759506116196", "dec": "-49.3313582907331", "parallax": "29.75403830196403", "phot_g_mean_mag": "7.194311", "bp_rp": "0.7877326", "radial_velocity": "27.423006", "eso": {}}, {"source_id": "6506893771477045888", "ra": "339.0348767831393", "dec": "-54.61178166805668", "parallax": "31.672861638955652", "phot_g_mean_mag": "7.41748", "bp_rp": "0.8478923", "radial_velocity": "67.47751", "eso": {}}, {"source_id": "6582020205549054720", "ra": "320.84358785317045", "dec": "-41.55315573060417", "parallax": "28.4816441140233", "phot_g_mean_mag": "7.4392347", "bp_rp": "0.8789506", "radial_velocity": "6.6532335", "eso": {"UVES": 2}}, {"source_id": "6679930616489650176", "ra": "307.97025105038233", "dec": "-40.90221903273035", "parallax": "24.015024781206392", "phot_g_mean_mag": "8.161298", "bp_rp": "0.8902602", "radial_velocity": "-21.62428", "eso": {}}, {"source_id": "6708107010714003840", "ra": "275.962415312065", "dec": "-45.14063186847533", "parallax": "23.759478074571494", "phot_g_mean_mag": "8.452825", "bp_rp": "0.9959302", "radial_velocity": "-37.570965", "eso": {}}, {"source_id": "1736965554247359232", "ra": "316.98634145174384", "dec": "7.43289239147905", "parallax": "26.449315860306072", "phot_g_mean_mag": "7.8519816", "bp_rp": "0.87023497", "radial_velocity": "4.707458", "eso": {}}, {"source_id": "1760316677257596288", "ra": "316.4526319955163", "dec": "15.326861833418779", "parallax": "21.33913281406138", "phot_g_mean_mag": "6.526107", "bp_rp": "0.64061975", "radial_velocity": "-21.924887", "eso": {}}, {"source_id": "2343229535589955712", "ra": "10.126878620192603", "dec": "-27.277228933039073", "parallax": "20.267612182014133", "phot_g_mean_mag": "8.618908", "bp_rp": "0.8637428", "radial_velocity": "19.711235", "eso": {}}, {"source_id": "2450580353368194688", "ra": "23.972429163778855", "dec": "-17.53336136900985", "parallax": "24.92573560385624", "phot_g_mean_mag": "6.995776", "bp_rp": "0.8415103", "radial_velocity": "13.442028", "eso": {"UVES": 1}}, {"source_id": "2451580320537911680", "ra": "20.75300188362068", "dec": "-16.488243384163805", "parallax": "26.539570316027298", "phot_g_mean_mag": "7.772666", "bp_rp": "0.8187895", "radial_velocity": "-7.811456", "eso": {}}, {"source_id": "2468730472844294016", "ra": "19.101421358445368", "dec": "-12.097023091894101", "parallax": "39.05021069563417", "phot_g_mean_mag": "7.3630233", "bp_rp": "0.9328532", "radial_velocity": "8.113784", "eso": {"FEROS": 1}}, {"source_id": "2485124466091903616", "ra": "21.98077943143632", "dec": "-1.992119101264319", "parallax": "20.79070999158633", "phot_g_mean_mag": "8.450246", "bp_rp": "0.82380915", "radial_velocity": "-42.0839", "eso": {}}, {"source_id": "2605300640331419904", "ra": "343.1949462527994", "dec": "-10.058835444141943", "parallax": "26.09420823125715", "phot_g_mean_mag": "6.62085", "bp_rp": "0.66733503", "radial_velocity": "-16.155907", "eso": {}}, {"source_id": "2634027752428716928", "ra": "350.0673125632278", "dec": "-3.919617501367021", "parallax": "21.3616846015247", "phot_g_mean_mag": "6.5211315", "bp_rp": "0.67745733", "radial_velocity": "-10.206269", "eso": {}}, {"source_id": "2643862402903084544", "ra": "352.3762764481757", "dec": "-1.03600386270034", "parallax": "27.534763703256576", "phot_g_mean_mag": "6.7367063", "bp_rp": "0.7847867", "radial_velocity": "-14.878662", "eso": {}}, {"source_id": "2717930312217660928", "ra": "343.1026626685172", "dec": "9.835859682863124", "parallax": "36.55806000608003", "phot_g_mean_mag": "5.0216007", "bp_rp": "0.6631527", "radial_velocity": "12.002857", "eso": {}}, {"source_id": "5067926345443627648", "ra": "35.809853837040265", "dec": "-29.87020992998755", "parallax": "24.53532650821046", "phot_g_mean_mag": "7.7850184", "bp_rp": "0.88553095", "radial_velocity": "", "eso": {}}, {"source_id": "6569895822110445440", "ra": "333.6644324990778", "dec": "-41.38517850480005", "parallax": "45.91464271570334", "phot_g_mean_mag": "6.0632796", "bp_rp": "0.8179393", "radial_velocity": "-19.20872", "eso": {"ESPRESSO": 3, "FEROS": 1, "UVES": 1}}, {"source_id": "6613555642140332672", "ra": "334.47864935741103", "dec": "-32.47974574150081", "parallax": "20.95416787732412", "phot_g_mean_mag": "8.4359665", "bp_rp": "0.88966846", "radial_velocity": "-77.56349", "eso": {}}, {"source_id": "6908757299969652480", "ra": "315.2053077781301", "dec": "-8.342751598860879", "parallax": "29.24958554332814", "phot_g_mean_mag": "7.9028535", "bp_rp": "0.8875041", "radial_velocity": "-36.12793", "eso": {}}, {"source_id": "87044422856456192", "ra": "34.786241426262876", "dec": "19.68715053401806", "parallax": "30.821527910060208", "phot_g_mean_mag": "6.6941156", "bp_rp": "0.7160306", "radial_velocity": "3.212765", "eso": {}}, {"source_id": "101283987497967360", "ra": "33.064839281269144", "dec": "23.957491107132505", "parallax": "31.307022710587106", "phot_g_mean_mag": "7.7644176", "bp_rp": "0.9713273", "radial_velocity": "", "eso": {"UVES": 2}}, {"source_id": "107774202769886848", "ra": "34.35580267727129", "dec": "28.744710641672302", "parallax": "25.27757747436875", "phot_g_mean_mag": "6.904095", "bp_rp": "0.670002", "radial_velocity": "5.539924", "eso": {"UVES": 4}}, {"source_id": "297159754894750848", "ra": "22.83226199727428", "dec": "29.412700611763732", "parallax": "23.004085395170584", "phot_g_mean_mag": "7.1759615", "bp_rp": "0.7813444", "radial_velocity": "14.871868", "eso": {}}, {"source_id": "2511794495013074048", "ra": "30.039192191777932", "dec": "3.095874140509905", "parallax": "31.449211001564855", "phot_g_mean_mag": "5.7363853", "bp_rp": "0.7556186", "radial_velocity": "-18.495573", "eso": {"FEROS": 1}}, {"source_id": "2569398939984509312", "ra": "30.46917035660453", "dec": "7.8641505543604024", "parallax": "21.50599260210633", "phot_g_mean_mag": "6.9483705", "bp_rp": "0.64423084", "radial_velocity": "15.868318", "eso": {}}, {"source_id": "2579772969631487360", "ra": "17.726608165732063", "dec": "9.564966368672298", "parallax": "25.469748163350587", "phot_g_mean_mag": "7.08715", "bp_rp": "0.75218916", "radial_velocity": "9.179573", "eso": {}}, {"source_id": "2583064770006046080", "ra": "17.68710146305596", "dec": "11.000032687554691", "parallax": "21.273884254665727", "phot_g_mean_mag": "8.876657", "bp_rp": "0.95694447", "radial_velocity": "2.773116", "eso": {}}, {"source_id": "2860924621205256704", "ra": "1.655198904590879", "dec": "29.02071363055181", "parallax": "72.64189108452184", "phot_g_mean_mag": "5.878327", "bp_rp": "0.9170017", "radial_velocity": "-6.754061", "eso": {"UVES": 6}}, {"source_id": "2918894859953947392", "ra": "101.21643794479907", "dec": "-27.34036132824005", "parallax": "37.17337421079895", "phot_g_mean_mag": "6.299466", "bp_rp": "0.7210088", "radial_velocity": "-10.344675", "eso": {}}, {"source_id": "2919963104221492480", "ra": "99.79825601688157", "dec": "-26.571764774871674", "parallax": "20.88590436585849", "phot_g_mean_mag": "8.90925", "bp_rp": "0.98653316", "radial_velocity": "", "eso": {"UVES": 2}}, {"source_id": "2941710825741058304", "ra": "93.70045627673673", "dec": "-19.729924431860017", "parallax": "22.53571868954881", "phot_g_mean_mag": "8.494635", "bp_rp": "0.97814655", "radial_velocity": "-25.522253", "eso": {}}, {"source_id": "3011850012504392960", "ra": "86.0736175066238", "dec": "-10.017370757950125", "parallax": "26.424574227651785", "phot_g_mean_mag": "6.9703274", "bp_rp": "0.78173876", "radial_velocity": "32.61715", "eso": {}}, {"source_id": "3105749748629384576", "ra": "100.7543305015117", "dec": "-2.8890154549152767", "parallax": "27.814957019921465", "phot_g_mean_mag": "7.746349", "bp_rp": "0.87426186", "radial_velocity": "23.629623", "eso": {"UVES": 2}}, {"source_id": "4858250268300556160", "ra": "60.51676239247471", "dec": "-34.48204230224602", "parallax": "21.74877578205281", "phot_g_mean_mag": "7.731979", "bp_rp": "0.938889", "radial_velocity": "", "eso": {"UVES": 6}}, {"source_id": "4869186698146712320", "ra": "66.34931701389675", "dec": "-35.67585661794466", "parallax": "22.783787074825547", "phot_g_mean_mag": "7.647071", "bp_rp": "0.79238176", "radial_velocity": "18.402727", "eso": {"UVES": 2}}, {"source_id": "4898866433990993664", "ra": "65.59895063179044", "dec": "-22.8552184992366", "parallax": "20.512168847435465", "phot_g_mean_mag": "8.746274", "bp_rp": "0.9143791", "radial_velocity": "23.327808", "eso": {}}, {"source_id": "5155981730587168384", "ra": "46.82735626488869", "dec": "-13.762941186311053", "parallax": "31.2191392801444", "phot_g_mean_mag": "6.8144927", "bp_rp": "0.82227516", "radial_velocity": "7.0062423", "eso": {"FEROS": 1, "UVES": 4}}, {"source_id": "145227760700173568", "ra": "68.82173637148654", "dec": "23.044882719940937", "parallax": "22.21858583672443", "phot_g_mean_mag": "8.699103", "bp_rp": "0.9461355", "radial_velocity": "33.710075", "eso": {}}, {"source_id": "149005270337201792", "ra": "63.63522486407845", "dec": "23.57472991646869", "parallax": "21.993958087904776", "phot_g_mean_mag": "7.896926", "bp_rp": "0.8128853", "radial_velocity": "37.25504", "eso": {"FEROS": 1, "UVES": 3}}, {"source_id": "581100382135253760", "ra": "132.30154349017843", "dec": "3.485022545525026", "parallax": "32.977696569279644", "phot_g_mean_mag": "7.295366", "bp_rp": "0.8505049", "radial_velocity": "10.064948", "eso": {"FEROS": 2}}, {"source_id": "606422203642505600", "ra": "139.03211983863096", "dec": "14.124763430305046", "parallax": "21.043833226516888", "phot_g_mean_mag": "8.194549", "bp_rp": "0.8109822", "radial_velocity": "-43.004436", "eso": {}}, {"source_id": "609834198678048512", "ra": "132.75558321645408", "dec": "15.350990373671065", "parallax": "24.85271990350808", "phot_g_mean_mag": "6.217665", "bp_rp": "0.8067651", "radial_velocity": "45.72434", "eso": {}}, {"source_id": "656546537868692480", "ra": "122.9547610627587", "dec": "16.522713269426824", "parallax": "29.335938864791867", "phot_g_mean_mag": "7.1900635", "bp_rp": "0.8268399", "radial_velocity": "9.102026", "eso": {"FEROS": 1}}, {"source_id": "725398123501434496", "ra": "154.30857900053857", "dec": "23.105782078789723", "parallax": "44.900797405294796", "phot_g_mean_mag": "5.6777153", "bp_rp": "0.6894002", "radial_velocity": "37.094097", "eso": {}}, {"source_id": "741184091114529792", "ra": "154.116676480626", "dec": "28.68205757449912", "parallax": "29.986416229036667", "phot_g_mean_mag": "6.3150477", "bp_rp": "0.80541325", "radial_velocity": "29.026548", "eso": {}}, {"source_id": "1244571953471006720", "ra": "206.8133909945028", "dec": "17.457173637726076", "parallax": "64.04697623237095", "phot_g_mean_mag": "4.356021", "bp_rp": "0.6444831", "radial_velocity": "-16.750475", "eso": {"UVES": 57}}, {"source_id": "1258410750415492864", "ra": "211.20736247992255", "dec": "25.840084710244586", "parallax": "22.650000489212406", "phot_g_mean_mag": "8.659653", "bp_rp": "0.9422903", "radial_velocity": "-19.85436", "eso": {}}, {"source_id": "3039102438994497152", "ra": "118.99270811258319", "dec": "-9.797313859574409", "parallax": "20.21119771993896", "phot_g_mean_mag": "8.236882", "bp_rp": "0.80272007", "radial_velocity": "-8.0918", "eso": {}}, {"source_id": "3055128817403670784", "ra": "111.04590264225072", "dec": "-6.025831199869579", "parallax": "21.371794308104278", "phot_g_mean_mag": "9.198391", "bp_rp": "0.96971226", "radial_velocity": "80.16968", "eso": {}}, {"source_id": "3056551894686671616", "ra": "116.08213968374615", "dec": "-5.054095772438487", "parallax": "20.28982876509927", "phot_g_mean_mag": "7.579918", "bp_rp": "0.77148724", "radial_velocity": "83.57121", "eso": {"UVES": 1}}, {"source_id": "3111942885310862848", "ra": "109.15203982346844", "dec": "1.878249310839767", "parallax": "24.011889936107053", "phot_g_mean_mag": "7.2033496", "bp_rp": "0.759305", "radial_velocity": "8.192755", "eso": {}}, {"source_id": "3151543686369910656", "ra": "117.58473922925991", "dec": "11.599767234378966", "parallax": "20.95892300484675", "phot_g_mean_mag": "8.686302", "bp_rp": "0.9205818", "radial_velocity": "13.024898", "eso": {}}, {"source_id": "3313662896313355008", "ra": "66.11855100326646", "dec": "16.886053964801455", "parallax": "21.781982400489085", "phot_g_mean_mag": "7.6696334", "bp_rp": "0.7718458", "radial_velocity": "37.58888", "eso": {}}, {"source_id": "3330686669209149824", "ra": "96.33379443308651", "dec": "11.232993370005449", "parallax": "30.09050384977793", "phot_g_mean_mag": "6.8849106", "bp_rp": "0.73168516", "radial_velocity": "32.361984", "eso": {}}, {"source_id": "3347821385396298624", "ra": "85.39362334452134", "dec": "15.212805493582886", "parallax": "26.088460381158733", "phot_g_mean_mag": "7.518003", "bp_rp": "0.8411875", "radial_velocity": "-42.33242", "eso": {"FEROS": 1}}, {"source_id": "3471190026007380992", "ra": "187.33099678670388", "dec": "-30.842150357384966", "parallax": "24.812385667277205", "phot_g_mean_mag": "8.844086", "bp_rp": "0.9700794", "radial_velocity": "", "eso": {}}, {"source_id": "3480588449539357184", "ra": "175.98445593205008", "dec": "-29.747544476683252", "parallax": "31.225061481255626", "phot_g_mean_mag": "6.840622", "bp_rp": "0.7159629", "radial_velocity": "-0.92244494", "eso": {}}, {"source_id": "3488911718201071616", "ra": "183.67404683556506", "dec": "-24.775322795298006", "parallax": "34.09228664684941", "phot_g_mean_mag": "7.3082085", "bp_rp": "0.86761427", "radial_velocity": "-12.686207", "eso": {}}, {"source_id": "3556253713025561856", "ra": "164.19117310462497", "dec": "-17.45278008218857", "parallax": "23.731950011169832", "phot_g_mean_mag": "7.749891", "bp_rp": "0.78540707", "radial_velocity": "20.49647", "eso": {}}, {"source_id": "3584074376569429248", "ra": "183.77623465615", "dec": "-7.257548416243316", "parallax": "29.314821972556402", "phot_g_mean_mag": "7.788456", "bp_rp": "0.9449582", "radial_velocity": "20.729963", "eso": {"ESPRESSO": 8, "UVES": 10}}, {"source_id": "3613948386669881344", "ra": "207.04074379108846", "dec": "-10.788773936103132", "parallax": "29.22069513202373", "phot_g_mean_mag": "8.107935", "bp_rp": "0.98810863", "radial_velocity": "-29.686663", "eso": {}}, {"source_id": "3741076154456059520", "ra": "207.4620369715927", "dec": "14.883276752792781", "parallax": "22.30002033831231", "phot_g_mean_mag": "8.0093565", "bp_rp": "0.7711096", "radial_velocity": "-21.434818", "eso": {}}, {"source_id": "3771310387757739392", "ra": "149.15909507245527", "dec": "-8.833995664872575", "parallax": "26.474777028277767", "phot_g_mean_mag": "8.335529", "bp_rp": "0.92012787", "radial_velocity": "37.71591", "eso": {}}, {"source_id": "3909362834358280576", "ra": "174.75267185616883", "dec": "6.057369951363412", "parallax": "28.910931812521138", "phot_g_mean_mag": "7.4497366", "bp_rp": "0.8216753", "radial_velocity": "23.71911", "eso": {"FEROS": 1}}, {"source_id": "3966121308211393920", "ra": "172.93575391396502", "dec": "14.363658867705013", "parallax": "42.653636906570256", "phot_g_mean_mag": "6.1336365", "bp_rp": "0.7362194", "radial_velocity": "-4.7776084", "eso": {}}, {"source_id": "5683324377900390016", "ra": "140.2315613366238", "dec": "-15.61830106781041", "parallax": "20.245539910100938", "phot_g_mean_mag": "6.203654", "bp_rp": "0.62367725", "radial_velocity": "8.649273", "eso": {}}, {"source_id": "5713387121754211200", "ra": "122.26177531324365", "dec": "-20.500089347448416", "parallax": "21.232890711474557", "phot_g_mean_mag": "7.4980245", "bp_rp": "0.70941687", "radial_velocity": "-27.009932", "eso": {}}, {"source_id": "5725122999630404096", "ra": "122.6647915359159", "dec": "-13.798947414957585", "parallax": "44.33951681369627", "phot_g_mean_mag": "5.398911", "bp_rp": "0.6578026", "radial_velocity": "33.232998", "eso": {}}, {"source_id": "5965406010180880640", "ra": "256.12930368436366", "dec": "-43.31039492338143", "parallax": "20.657994945917284", "phot_g_mean_mag": "7.253027", "bp_rp": "0.73096085", "radial_velocity": "33.276398", "eso": {"ESPRESSO": 26, "UVES": 2}}, {"source_id": "6145117612301447552", "ra": "184.62370611391395", "dec": "-42.42797462842514", "parallax": "21.272541113655283", "phot_g_mean_mag": "8.559155", "bp_rp": "0.9445448", "radial_velocity": "21.957664", "eso": {}}, {"source_id": "6148487203123069056", "ra": "183.73731482616546", "dec": "-41.13976250324537", "parallax": "31.14261354449283", "phot_g_mean_mag": "7.327295", "bp_rp": "0.81044483", "radial_velocity": "-2.373978", "eso": {"FEROS": 1}}, {"source_id": "6164768633867103616", "ra": "204.45012698713543", "dec": "-35.06494711663448", "parallax": "29.330810542383578", "phot_g_mean_mag": "7.2004943", "bp_rp": "0.79258966", "radial_velocity": "14.876652", "eso": {}}, {"source_id": "6180035765135232128", "ra": "198.1833669803679", "dec": "-31.874718355648408", "parallax": "26.337769570726532", "phot_g_mean_mag": "6.5313334", "bp_rp": "0.7862735", "radial_velocity": "64.94375", "eso": {"ESPRESSO": 25, "UVES": 4}}, {"source_id": "6270906415441316224", "ra": "214.75195942793653", "dec": "-25.81380529238654", "parallax": "55.59003779052883", "phot_g_mean_mag": "5.7329264", "bp_rp": "0.69151926", "radial_velocity": "-22.284346", "eso": {}}, {"source_id": "6048887461286217984", "ra": "244.47435697672896", "dec": "-24.8825643042581", "parallax": "20.55338527606857", "phot_g_mean_mag": "9.081335", "bp_rp": "0.9979296", "radial_velocity": "-72.367966", "eso": {}}, {"source_id": "4111078309939315840", "ra": "259.5302107580978", "dec": "-24.07335152964133", "parallax": "23.453241137306986", "phot_g_mean_mag": "6.443071", "bp_rp": "0.8129611", "radial_velocity": "-13.107597", "eso": {}}, {"source_id": "4129603294110484352", "ra": "254.93451306573712", "dec": "-18.248968380412556", "parallax": "20.18622384156155", "phot_g_mean_mag": "6.50101", "bp_rp": "0.7126498", "radial_velocity": "-3.2678003", "eso": {}}, {"source_id": "4343064577465522816", "ra": "241.10774577447575", "dec": "-11.4494814750765", "parallax": "35.88977197234635", "phot_g_mean_mag": "7.276735", "bp_rp": "0.8932104", "radial_velocity": "-31.955994", "eso": {"ESPRESSO": 6}}, {"source_id": "4070193794710573184", "ra": "269.0448570533098", "dec": "-22.460285867570317", "parallax": "32.07865243519564", "phot_g_mean_mag": "7.33653", "bp_rp": "0.90266514", "radial_velocity": "9.331953", "eso": {}}, {"source_id": "4117290138348536064", "ra": "265.85700792887656", "dec": "-21.683392427381285", "parallax": "58.2436975539037", "phot_g_mean_mag": "4.7305098", "bp_rp": "0.63404465", "radial_velocity": "10.360545", "eso": {}}, {"source_id": "4162768550532480768", "ra": "262.2576203449485", "dec": "-12.041606780100619", "parallax": "24.75265193472593", "phot_g_mean_mag": "8.730323", "bp_rp": "0.9590759", "radial_velocity": "-46.777256", "eso": {}}, {"source_id": "6741907200730112128", "ra": "289.5532410292548", "dec": "-38.38497255603088", "parallax": "23.138391372717205", "phot_g_mean_mag": "8.159404", "bp_rp": "0.99697113", "radial_velocity": "", "eso": {}}, {"source_id": "4065583301939138432", "ra": "273.95477370289643", "dec": "-23.816690063413187", "parallax": "26.537778453536742", "phot_g_mean_mag": "8.357065", "bp_rp": "0.935318", "radial_velocity": "-35.23393", "eso": {}}, {"source_id": "6747764574050646656", "ra": "297.4341182065968", "dec": "-32.764276732501926", "parallax": "22.20412039481386", "phot_g_mean_mag": "7.6416583", "bp_rp": "0.77664185", "radial_velocity": "-32.339508", "eso": {}}, {"source_id": "6854626246593473792", "ra": "310.0514064479976", "dec": "-23.771815750775836", "parallax": "68.15574658958347", "phot_g_mean_mag": "6.1799154", "bp_rp": "0.90219593", "radial_velocity": "-42.088177", "eso": {"ESPRESSO": 29, "FEROS": 1, "UVES": 2}}, {"source_id": "4186682344317422848", "ra": "293.607657101171", "dec": "-12.927097558291413", "parallax": "20.104269047421006", "phot_g_mean_mag": "7.59236", "bp_rp": "0.7737608", "radial_velocity": "7.166547", "eso": {"UVES": 6}}, {"source_id": "1212385193677161088", "ra": "228.17960642595807", "dec": "19.293698386144005", "parallax": "30.795424345175643", "phot_g_mean_mag": "7.345564", "bp_rp": "0.89668036", "radial_velocity": "-38.722206", "eso": {"ESPRESSO": 4}}, {"source_id": "4283408237650849408", "ra": "278.7438849570802", "dec": "4.244906478653056", "parallax": "26.855886246331504", "phot_g_mean_mag": "7.8762565", "bp_rp": "0.88013077", "radial_velocity": "27.943018", "eso": {}}, {"source_id": "4501404113107826816", "ra": "270.23838317698755", "dec": "15.09311490224399", "parallax": "21.956253043324157", "phot_g_mean_mag": "6.106617", "bp_rp": "0.89448595", "radial_velocity": "5.430018", "eso": {}}, {"source_id": "4514202217999314560", "ra": "286.0412721075027", "dec": "17.55643755291969", "parallax": "21.38975760671135", "phot_g_mean_mag": "6.8269506", "bp_rp": "0.63624954", "radial_velocity": "-67.8367", "eso": {}}, {"source_id": "1807876151501164032", "ra": "301.1953713324664", "dec": "15.903378963148853", "parallax": "24.194183120510232", "phot_g_mean_mag": "7.2139544", "bp_rp": "0.6881771", "radial_velocity": "5.943159", "eso": {}}, {"source_id": "4303735493232528640", "ra": "298.01276545783395", "dec": "11.626838524252257", "parallax": "37.002666811035404", "phot_g_mean_mag": "5.9979544", "bp_rp": "0.82430935", "radial_velocity": "-20.56037", "eso": {}}, {"source_id": "5834852267294819072", "ra": "242.10790659717418", "dec": "-58.430055836487895", "parallax": "20.239522694562584", "phot_g_mean_mag": "8.767068", "bp_rp": "0.95159626", "radial_velocity": "-30.463724", "eso": {}}, {"source_id": "5877870316114471424", "ra": "222.88267462483466", "dec": "-60.93029343130914", "parallax": "20.69331090740022", "phot_g_mean_mag": "7.0428967", "bp_rp": "0.6407652", "radial_velocity": "33.474106", "eso": {}}, {"source_id": "5783508853769085312", "ra": "200.73969316216355", "dec": "-81.31077421997061", "parallax": "28.85798427970535", "phot_g_mean_mag": "7.7159305", "bp_rp": "0.8391099", "radial_velocity": "7.4564376", "eso": {}}, {"source_id": "5793182631952977920", "ra": "220.4706775570897", "dec": "-75.13956581043277", "parallax": "49.36864188732185", "phot_g_mean_mag": "6.5924373", "bp_rp": "0.8744974", "radial_velocity": "-3.169102", "eso": {"FEROS": 2}}, {"source_id": "5332679811920308864", "ra": "175.12192622637986", "dec": "-64.46433694432977", "parallax": "22.058500926091526", "phot_g_mean_mag": "7.9265757", "bp_rp": "0.7711444", "radial_velocity": "-9.371025", "eso": {"FEROS": 2}}, {"source_id": "4653311093421344384", "ra": "69.99063322828337", "dec": "-71.5057656619208", "parallax": "26.482998136565968", "phot_g_mean_mag": "7.5838413", "bp_rp": "0.8972516", "radial_velocity": "-21.164085", "eso": {}}, {"source_id": "4704957491028733824", "ra": "17.697972554839776", "dec": "-66.18871187979153", "parallax": "27.69292536424416", "phot_g_mean_mag": "7.8488874", "bp_rp": "0.9694977", "radial_velocity": "5.528926", "eso": {}}, {"source_id": "4733035238430992768", "ra": "54.928145315363935", "dec": "-52.91624716021937", "parallax": "29.863271490583752", "phot_g_mean_mag": "6.978857", "bp_rp": "0.74502563", "radial_velocity": "0.65790534", "eso": {"ESPRESSO": 34, "UVES": 4}}, {"source_id": "4955948336060703488", "ra": "26.501102050177046", "dec": "-43.91324883787514", "parallax": "20.44421577261722", "phot_g_mean_mag": "8.546819", "bp_rp": "0.8279419", "radial_velocity": "15.898264", "eso": {}}, {"source_id": "5279965341800818176", "ra": "97.98569321790008", "dec": "-68.71186275926192", "parallax": "35.63647641318352", "phot_g_mean_mag": "8.042465", "bp_rp": "0.97756386", "radial_velocity": "42.73228", "eso": {}}, {"source_id": "5493209437253410432", "ra": "116.06786922206653", "dec": "-50.465981281406485", "parallax": "33.31433402618163", "phot_g_mean_mag": "7.4130116", "bp_rp": "0.8541384", "radial_velocity": "9.004617", "eso": {}}, {"source_id": "6477114289313395328", "ra": "315.08889460132485", "dec": "-51.264726458819", "parallax": "36.46108868439926", "phot_g_mean_mag": "5.643579", "bp_rp": "0.65693474", "radial_velocity": "-22.387444", "eso": {}}, {"source_id": "1743504800870418432", "ra": "319.65554969861125", "dec": "8.959475382695251", "parallax": "23.217353019494585", "phot_g_mean_mag": "7.1488404", "bp_rp": "0.6550331", "radial_velocity": "-0.63859105", "eso": {}}, {"source_id": "1787990525934491776", "ra": "317.99539741547386", "dec": "17.72375012742028", "parallax": "29.877493813709016", "phot_g_mean_mag": "7.2311563", "bp_rp": "0.7198124", "radial_velocity": "-44.330605", "eso": {"UVES": 2}}, {"source_id": "1875535806402317696", "ra": "337.05540778006326", "dec": "23.532400658205432", "parallax": "20.206015275319782", "phot_g_mean_mag": "8.805667", "bp_rp": "0.94026184", "radial_velocity": "", "eso": {}}, {"source_id": "2319816363189763456", "ra": "3.1366319925145754", "dec": "-30.860843062803944", "parallax": "20.909522358178613", "phot_g_mean_mag": "8.482781", "bp_rp": "0.90366507", "radial_velocity": "16.32226", "eso": {}}, {"source_id": "2444686180769411840", "ra": "0.2425735222149345", "dec": "-4.933305769024672", "parallax": "22.20930813205747", "phot_g_mean_mag": "8.416722", "bp_rp": "0.830472", "radial_velocity": "0.16338588", "eso": {}}, {"source_id": "2599614923969643392", "ra": "336.2685360413456", "dec": "-13.998497292311814", "parallax": "23.09952109085203", "phot_g_mean_mag": "8.436798", "bp_rp": "0.92956734", "radial_velocity": "-7.7213573", "eso": {}}, {"source_id": "2728110179278870656", "ra": "330.62879477981096", "dec": "11.371599715523814", "parallax": "20.214283557254138", "phot_g_mean_mag": "7.930423", "bp_rp": "0.73530674", "radial_velocity": "-19.603998", "eso": {}}, {"source_id": "2759831021020366848", "ra": "356.5762314780049", "dec": "9.784263344771928", "parallax": "23.34615297635549", "phot_g_mean_mag": "7.3415165", "bp_rp": "0.7477541", "radial_velocity": "5.957864", "eso": {"UVES": 2}}, {"source_id": "5003693322826171264", "ra": "9.346920884019468", "dec": "-37.28825941982241", "parallax": "23.80278718323822", "phot_g_mean_mag": "6.7984743", "bp_rp": "0.9220209", "radial_velocity": "-19.332329", "eso": {}}, {"source_id": "5036258177181358720", "ra": "21.206640541152836", "dec": "-27.84027134160638", "parallax": "24.6092971528148", "phot_g_mean_mag": "8.121842", "bp_rp": "0.8715186", "radial_velocity": "84.51523", "eso": {"FEROS": 1}}, {"source_id": "5079099582606498432", "ra": "44.15869814347046", "dec": "-22.309695410324593", "parallax": "22.05534156771456", "phot_g_mean_mag": "8.381085", "bp_rp": "0.9183364", "radial_velocity": "39.375134", "eso": {}}, {"source_id": "5125873666245425920", "ra": "41.25431404925522", "dec": "-22.166963602146023", "parallax": "25.711976352908685", "phot_g_mean_mag": "7.017753", "bp_rp": "0.6641555", "radial_velocity": "7.4257236", "eso": {}}, {"source_id": "6838302102393999744", "ra": "326.958338431081", "dec": "-16.080057655803834", "parallax": "20.76651288136305", "phot_g_mean_mag": "7.9128146", "bp_rp": "0.7900872", "radial_velocity": "52.281948", "eso": {}}, {"source_id": "24340923991956352", "ra": "36.54657675614524", "dec": "10.636656621450712", "parallax": "28.31725645032313", "phot_g_mean_mag": "7.187089", "bp_rp": "0.73274374", "radial_velocity": "-0.21373312", "eso": {"UVES": 1}}, {"source_id": "73781873084091264", "ra": "34.11659104145297", "dec": "12.378792547504508", "parallax": "27.264020252811928", "phot_g_mean_mag": "7.8064985", "bp_rp": "0.92699957", "radial_velocity": "-20.81583", "eso": {}}, {"source_id": "77161217776670208", "ra": "32.717524003731334", "dec": "13.682958143895934", "parallax": "23.304385281112328", "phot_g_mean_mag": "8.025245", "bp_rp": "0.8247676", "radial_velocity": "24.825361", "eso": {"FEROS": 1}}, {"source_id": "1801210568415251072", "ra": "326.0370430016283", "dec": "28.74156459933625", "parallax": "45.15602649478613", "phot_g_mean_mag": "4.6213474", "bp_rp": "0.63430834", "radial_velocity": "", "eso": {}}, {"source_id": "2521857809546128896", "ra": "32.83719423575282", "dec": "8.569302911387716", "parallax": "23.790090142741875", "phot_g_mean_mag": "5.497467", "bp_rp": "0.7177005", "radial_velocity": "-19.013779", "eso": {}}, {"source_id": "2793413885704410112", "ra": "4.45928008627958", "dec": "16.330889785757574", "parallax": "21.244506636649835", "phot_g_mean_mag": "7.1011844", "bp_rp": "0.6273103", "radial_velocity": "8.618871", "eso": {}}, {"source_id": "2848150288954631296", "ra": "1.2365238884091816", "dec": "23.269596317371622", "parallax": "37.92973026999444", "phot_g_mean_mag": "7.6243668", "bp_rp": "0.9401674", "radial_velocity": "7.455219", "eso": {}}, {"source_id": "2906703475023196288", "ra": "82.75476678276733", "dec": "-28.528123915568013", "parallax": "20.589824461376683", "phot_g_mean_mag": "8.040432", "bp_rp": "0.7771721", "radial_velocity": "25.031298", "eso": {"UVES": 2}}, {"source_id": "2919760965880144384", "ra": "99.03672463657057", "dec": "-27.62346496204088", "parallax": "26.747629055310632", "phot_g_mean_mag": "7.4613996", "bp_rp": "0.85983324", "radial_velocity": "4.1888976", "eso": {"UVES": 2}}, {"source_id": "3261878613062758144", "ra": "49.759022195383025", "dec": "-2.8436402553284426", "parallax": "41.67104805241885", "phot_g_mean_mag": "6.8885603", "bp_rp": "0.819407", "radial_velocity": "22.586239", "eso": {"UVES": 2}}, {"source_id": "4823123689293923968", "ra": "81.2416466529553", "dec": "-34.20531826266104", "parallax": "26.333407613490444", "phot_g_mean_mag": "7.904121", "bp_rp": "0.8863435", "radial_velocity": "46.201927", "eso": {}}, {"source_id": "10584899657116672", "ra": "49.3606888568276", "dec": "7.655782956901497", "parallax": "21.272281275292496", "phot_g_mean_mag": "7.2656646", "bp_rp": "0.7142348", "radial_velocity": "31.39197", "eso": {"FEROS": 4, "UVES": 2}}, {"source_id": "64085383120724864", "ra": "58.02431902278248", "dec": "22.67012330366188", "parallax": "33.56092341260861", "phot_g_mean_mag": "7.4001384", "bp_rp": "0.8604717", "radial_velocity": "11.010944", "eso": {}}, {"source_id": "146677879098433152", "ra": "69.71422712830996", "dec": "23.149732324476236", "parallax": "23.034431585394156", "phot_g_mean_mag": "7.3807282", "bp_rp": "0.73090553", "radial_velocity": "39.064102", "eso": {"UVES": 2}}, {"source_id": "152668843080781184", "ra": "67.58429603916107", "dec": "28.132084531506273", "parallax": "24.79358588454182", "phot_g_mean_mag": "6.344197", "bp_rp": "0.8878641", "radial_velocity": "20.738358", "eso": {}}, {"source_id": "583683792079476224", "ra": "135.44874414874005", "dec": "6.497281540768186", "parallax": "31.505861446102365", "phot_g_mean_mag": "7.8285017", "bp_rp": "0.9644928", "radial_velocity": "-0.88188004", "eso": {}}, {"source_id": "680476996129140096", "ra": "121.21703649934298", "dec": "23.613284030929247", "parallax": "27.143393013290435", "phot_g_mean_mag": "8.162534", "bp_rp": "0.9535885", "radial_velocity": "22.10691", "eso": {}}, {"source_id": "692119656035933568", "ra": "137.09918919214758", "dec": "27.53575959160205", "parallax": "20.582202441781167", "phot_g_mean_mag": "8.1207", "bp_rp": "0.7315359", "radial_velocity": "29.976246", "eso": {"UVES": 2}}, {"source_id": "740735868326858368", "ra": "151.8115695597295", "dec": "29.237854157815107", "parallax": "24.47495842803105", "phot_g_mean_mag": "7.8121524", "bp_rp": "0.8033495", "radial_velocity": "-26.96913", "eso": {}}, {"source_id": "1174143182830505984", "ra": "222.75866853667813", "dec": "9.72392000919409", "parallax": "33.29165665954585", "phot_g_mean_mag": "7.3357463", "bp_rp": "0.8879099", "radial_velocity": "-36.19137", "eso": {}}, {"source_id": "1249969937088029056", "ra": "208.61850849454032", "dec": "20.641441642233602", "parallax": "31.65101086464544", "phot_g_mean_mag": "7.7243104", "bp_rp": "0.85470486", "radial_velocity": "-11.969444", "eso": {}}, {"source_id": "1444957741474906368", "ra": "203.78809903742106", "dec": "24.806789593087597", "parallax": "20.356869605237016", "phot_g_mean_mag": "8.634388", "bp_rp": "0.8793173", "radial_velocity": "-0.8530589", "eso": {}}, {"source_id": "3307844864893938304", "ra": "67.01894114867126", "dec": "13.867854184261594", "parallax": "20.875610368866436", "phot_g_mean_mag": "8.839648", "bp_rp": "0.9900665", "radial_velocity": "40.044514", "eso": {}}, {"source_id": "3312324550143212288", "ra": "64.97907765724916", "dec": "16.522417532947376", "parallax": "21.725333783131415", "phot_g_mean_mag": "7.0219374", "bp_rp": "0.7089796", "radial_velocity": "", "eso": {}}, {"source_id": "3346799805954385536", "ra": "89.00057909096826", "dec": "13.94116148971887", "parallax": "21.707090030259604", "phot_g_mean_mag": "8.301201", "bp_rp": "0.7934356", "radial_velocity": "-7.238184", "eso": {}}, {"source_id": "3349058065397818880", "ra": "91.78882378294306", "dec": "16.555683033054024", "parallax": "26.993356152963177", "phot_g_mean_mag": "7.2238145", "bp_rp": "0.6832566", "radial_velocity": "48.71389", "eso": {}}, {"source_id": "3359849565865802112", "ra": "107.26992544500258", "dec": "15.420317133023632", "parallax": "23.303932781416503", "phot_g_mean_mag": "7.844877", "bp_rp": "0.79295015", "radial_velocity": "43.24952", "eso": {}}, {"source_id": "3381727613874753536", "ra": "103.82759156605087", "dec": "25.375803135431426", "parallax": "57.45588658838684", "phot_g_mean_mag": "5.6027837", "bp_rp": "0.7730403", "radial_velocity": "-15.0050955", "eso": {}}, {"source_id": "3381891303668248576", "ra": "104.69673983572196", "dec": "26.081497754094727", "parallax": "21.915643131893784", "phot_g_mean_mag": "6.069029", "bp_rp": "0.7009516", "radial_velocity": "5.2148776", "eso": {}}, {"source_id": "3551002857809958400", "ra": "163.37343397843432", "dec": "-20.139789745498117", "parallax": "33.23268780196385", "phot_g_mean_mag": "5.111522", "bp_rp": "0.6542125", "radial_velocity": "-4.0846024", "eso": {"FEROS": 3}}, {"source_id": "3712538708114516736", "ra": "200.91319573299", "dec": "2.7242125878217274", "parallax": "60.281691403362", "phot_g_mean_mag": "6.85049", "bp_rp": "0.983655", "radial_velocity": "28.297716", "eso": {}}, {"source_id": "3751218084070572672", "ra": "159.65866455893493", "dec": "-13.761037055903113", "parallax": "21.608991979617226", "phot_g_mean_mag": "9.185621", "bp_rp": "0.99902534", "radial_velocity": "21.741205", "eso": {}}, {"source_id": "3799626935341796096", "ra": "176.4253800850321", "dec": "2.8209755114352486", "parallax": "34.06338540186498", "phot_g_mean_mag": "7.859468", "bp_rp": "0.9878969", "radial_velocity": "1.8903584", "eso": {}}, {"source_id": "3820160280630444672", "ra": "147.83949743610535", "dec": "-6.181683314747567", "parallax": "23.366861428654612", "phot_g_mean_mag": "6.2955823", "bp_rp": "0.73023653", "radial_velocity": "35.352966", "eso": {"UVES": 6}}, {"source_id": "3855524182352238336", "ra": "157.42528688771185", "dec": "1.4905711771241303", "parallax": "32.512071056968246", "phot_g_mean_mag": "6.7286563", "bp_rp": "0.72299814", "radial_velocity": "16.569868", "eso": {"FEROS": 13}}, {"source_id": "3975129194660883328", "ra": "178.631492306701", "dec": "19.411154612753574", "parallax": "25.375820295727873", "phot_g_mean_mag": "8.039268", "bp_rp": "0.84826136", "radial_velocity": "5.9650517", "eso": {"ESPRESSO": 5}}, {"source_id": "4001570903120891264", "ra": "182.99635137112085", "dec": "23.093047485961414", "parallax": "23.31490397118314", "phot_g_mean_mag": "8.524064", "bp_rp": "0.93721247", "radial_velocity": "6.0721846", "eso": {}}, {"source_id": "5402536699037783296", "ra": "169.41379196687524", "dec": "-33.54861437338083", "parallax": "24.673891209285877", "phot_g_mean_mag": "6.725992", "bp_rp": "0.6638274", "radial_velocity": "16.660015", "eso": {}}, {"source_id": "5422039080380609792", "ra": "152.4548070821975", "dec": "-36.75251338592558", "parallax": "21.25114598780558", "phot_g_mean_mag": "7.923399", "bp_rp": "0.78164196", "radial_velocity": "110.73607", "eso": {"UVES": 2}}, {"source_id": "5465421617320589184", "ra": "150.9045564586271", "dec": "-29.043212502517836", "parallax": "22.041043600869052", "phot_g_mean_mag": "7.940979", "bp_rp": "0.84540653", "radial_velocity": "86.860176", "eso": {}}, {"source_id": "5726982995343100928", "ra": "124.60104883936589", "dec": "-12.63656179358332", "parallax": "79.49527095617434", "phot_g_mean_mag": "5.7552195", "bp_rp": "0.93622494", "radial_velocity": "30.085953", "eso": {"ESPRESSO": 42, "FEROS": 7, "UVES": 2}}, {"source_id": "5742430270422799872", "ra": "137.2057844345944", "dec": "-10.757991281399635", "parallax": "24.45021117804777", "phot_g_mean_mag": "7.010768", "bp_rp": "0.78598356", "radial_velocity": "93.955894", "eso": {"FEROS": 1, "UVES": 6}}, {"source_id": "6193991144671705344", "ra": "197.69267523253495", "dec": "-24.179379570054117", "parallax": "29.19945407105131", "phot_g_mean_mag": "7.7019796", "bp_rp": "0.8967743", "radial_velocity": "-19.984024", "eso": {}}, {"source_id": "5956907713041688960", "ra": "268.2199375870169", "dec": "-41.997372500768456", "parallax": "31.32817622455827", "phot_g_mean_mag": "6.0607696", "bp_rp": "0.7099161", "radial_velocity": "-17.071579", "eso": {}}, {"source_id": "6034115964943993472", "ra": "250.96421346659443", "dec": "-26.80939535115335", "parallax": "21.376278638578235", "phot_g_mean_mag": "6.571881", "bp_rp": "0.8071456", "radial_velocity": "48.300728", "eso": {"UVES": 4}}, {"source_id": "6735442725215002112", "ra": "280.5097929520588", "dec": "-34.46662358132801", "parallax": "30.010456021102748", "phot_g_mean_mag": "7.770155", "bp_rp": "0.8894019", "radial_velocity": "-11.523005", "eso": {}}, {"source_id": "1212385193677160832", "ra": "228.17836398723247", "dec": "19.287343971204578", "parallax": "30.803244789448158", "phot_g_mean_mag": "6.510685", "bp_rp": "0.851213", "radial_velocity": "-38.938046", "eso": {"ESPRESSO": 4}}, {"source_id": "4199928848101663104", "ra": "289.21824834965804", "dec": "-10.971736641479305", "parallax": "32.469561004157555", "phot_g_mean_mag": "6.7899365", "bp_rp": "0.73660517", "radial_velocity": "-54.853806", "eso": {"FEROS": 1}}, {"source_id": "4418850954729363584", "ra": "230.10945823884524", "dec": "0.24353349069934951", "parallax": "23.281399114720724", "phot_g_mean_mag": "9.029502", "bp_rp": "0.9844465", "radial_velocity": "-7.9898396", "eso": {"ESPRESSO": 3}}, {"source_id": "4433336303167930112", "ra": "247.14972764958281", "dec": "3.250607898102251", "parallax": "20.225490279874933", "phot_g_mean_mag": "8.607956", "bp_rp": "0.93950367", "radial_velocity": "25.022741", "eso": {}}, {"source_id": "4545731405415730048", "ra": "255.1194108769648", "dec": "15.159958255774203", "parallax": "26.551252541380457", "phot_g_mean_mag": "7.866359", "bp_rp": "0.8415742", "radial_velocity": "-16.904463", "eso": {}}, {"source_id": "4570293086432167168", "ra": "260.6155553820912", "dec": "24.878641471394456", "parallax": "33.56841809390027", "phot_g_mean_mag": "6.7472563", "bp_rp": "0.70553255", "radial_velocity": "34.25423", "eso": {}}, {"source_id": "6853766256702532864", "ra": "301.63485485632776", "dec": "-21.677240529689055", "parallax": "22.07930386869287", "phot_g_mean_mag": "7.85855", "bp_rp": "0.73988533", "radial_velocity": "7.858682", "eso": {}}, {"source_id": "6871005636949836928", "ra": "300.387350055374", "dec": "-16.86933563090331", "parallax": "29.262034640611304", "phot_g_mean_mag": "7.1848273", "bp_rp": "0.8049202", "radial_velocity": "-28.21966", "eso": {"UVES": 2}}, {"source_id": "6881151139980630528", "ra": "304.2312010559657", "dec": "-10.983753695136315", "parallax": "21.95690578296772", "phot_g_mean_mag": "8.468613", "bp_rp": "0.8892956", "radial_velocity": "59.95706", "eso": {}}, {"source_id": "6914073400035169536", "ra": "313.9282206258037", "dec": "-4.117795302338996", "parallax": "20.018120857976676", "phot_g_mean_mag": "8.938067", "bp_rp": "0.88474464", "radial_velocity": "41.81271", "eso": {}}, {"source_id": "6914237987476826624", "ra": "310.6222671588797", "dec": "-5.302007933681636", "parallax": "33.53135394805086", "phot_g_mean_mag": "7.4364514", "bp_rp": "0.873158", "radial_velocity": "3.095398", "eso": {}}, {"source_id": "2018512209687215872", "ra": "293.4963152924236", "dec": "21.988533068702363", "parallax": "20.41384779580517", "phot_g_mean_mag": "8.325", "bp_rp": "0.8634782", "radial_velocity": "-32.01168", "eso": {}}, {"source_id": "4513821963108970368", "ra": "284.9267194669839", "dec": "16.252027524529325", "parallax": "22.10215862591981", "phot_g_mean_mag": "6.957041", "bp_rp": "0.6277218", "radial_velocity": "22.071196", "eso": {}}, {"source_id": "5872266689455300608", "ra": "209.31984413346217", "dec": "-56.040420236168494", "parallax": "24.05931484886799", "phot_g_mean_mag": "7.401541", "bp_rp": "0.75272274", "radial_velocity": "19.583057", "eso": {"FEROS": 13, "UVES": 5}}, {"source_id": "6088054505011960832", "ra": "198.46691288473986", "dec": "-45.186296719952466", "parallax": "39.985887248899765", "phot_g_mean_mag": "6.763095", "bp_rp": "0.8180342", "radial_velocity": "58.658405", "eso": {"ESPRESSO": 1, "FEROS": 2, "UVES": 2}}, {"source_id": "5992538349398172288", "ra": "244.5985255712236", "dec": "-42.7429158366287", "parallax": "22.002641338292616", "phot_g_mean_mag": "8.810499", "bp_rp": "0.9991121", "radial_velocity": "10.20125", "eso": {}}, {"source_id": "5345854263317404160", "ra": "170.96076190787977", "dec": "-56.69544259328789", "parallax": "24.65820884545906", "phot_g_mean_mag": "8.1752405", "bp_rp": "0.88599205", "radial_velocity": "37.296516", "eso": {"FEROS": 1}}, {"source_id": "5811866422581688320", "ra": "259.3560288463286", "dec": "-66.9516463630546", "parallax": "32.95106066892252", "phot_g_mean_mag": "6.4607205", "bp_rp": "0.99793816", "radial_velocity": "", "eso": {"FEROS": 2}}, {"source_id": "5849427049807713536", "ra": "214.26555891573216", "dec": "-66.31703916679076", "parallax": "22.49634262334332", "phot_g_mean_mag": "7.143356", "bp_rp": "0.75146055", "radial_velocity": "-8.94878", "eso": {"UVES": 4}}, {"source_id": "5233499529433063552", "ra": "176.3828256818647", "dec": "-71.24512898017723", "parallax": "20.7470656219645", "phot_g_mean_mag": "7.833073", "bp_rp": "0.83204603", "radial_velocity": "10.116733", "eso": {}}, {"source_id": "5529500880113877376", "ra": "129.0967249458408", "dec": "-38.45508657774273", "parallax": "21.299302704586434", "phot_g_mean_mag": "7.1025324", "bp_rp": "0.66319275", "radial_velocity": "-24.855776", "eso": {}}, {"source_id": "4694695852085869568", "ra": "34.891759154917544", "dec": "-67.69984248928091", "parallax": "25.63867253118315", "phot_g_mean_mag": "7.952087", "bp_rp": "0.8633075", "radial_velocity": "61.2844", "eso": {"FEROS": 1}}, {"source_id": "4750843684668806528", "ra": "48.22598784795435", "dec": "-47.1553172805174", "parallax": "26.270560336166216", "phot_g_mean_mag": "7.139904", "bp_rp": "0.740026", "radial_velocity": "15.692706", "eso": {}}, {"source_id": "4759543295545939840", "ra": "81.9126319385433", "dec": "-60.416410482580474", "parallax": "51.33708293726009", "phot_g_mean_mag": "6.8062754", "bp_rp": "0.930202", "radial_velocity": "13.949372", "eso": {"FEROS": 1}}, {"source_id": "4847282124418880256", "ra": "48.775787183456885", "dec": "-45.66419080072318", "parallax": "40.77736717787729", "phot_g_mean_mag": "6.6122017", "bp_rp": "0.76189995", "radial_velocity": "4.3632746", "eso": {"UVES": 1}}, {"source_id": "4910240675621946880", "ra": "20.117854262891907", "dec": "-57.33811879110221", "parallax": "20.849330794476025", "phot_g_mean_mag": "7.009059", "bp_rp": "0.6558194", "radial_velocity": "-19.517378", "eso": {}}, {"source_id": "4921855946520799232", "ra": "10.215742256832966", "dec": "-53.21012617600339", "parallax": "22.57382182808658", "phot_g_mean_mag": "7.249375", "bp_rp": "0.67674303", "radial_velocity": "9.083941", "eso": {}}, {"source_id": "4925088171405735680", "ra": "8.617616679574523", "dec": "-52.372923420749004", "parallax": "38.82464103446637", "phot_g_mean_mag": "5.447885", "bp_rp": "0.6362791", "radial_velocity": "36.65829", "eso": {"UVES": 7}}, {"source_id": "5202493511985829120", "ra": "153.97551324577162", "dec": "-77.86787046276268", "parallax": "23.123671621397605", "phot_g_mean_mag": "8.756145", "bp_rp": "0.96384144", "radial_velocity": "88.209915", "eso": {}}, {"source_id": "5287961677550103424", "ra": "118.42092591541724", "dec": "-63.64666883397953", "parallax": "28.441891942043235", "phot_g_mean_mag": "7.805761", "bp_rp": "0.84825706", "radial_velocity": "42.581425", "eso": {"ESPRESSO": 36, "UVES": 2}}, {"source_id": "5493209501673364736", "ra": "116.05133455123536", "dec": "-50.456088282909235", "parallax": "33.285792092109375", "phot_g_mean_mag": "6.5130877", "bp_rp": "0.6816497", "radial_velocity": "8.49006", "eso": {}}, {"source_id": "5493588665684618752", "ra": "111.85405211571336", "dec": "-51.402609641760776", "parallax": "44.512158869858446", "phot_g_mean_mag": "6.5475388", "bp_rp": "0.86575794", "radial_velocity": "4.8165326", "eso": {"ESPRESSO": 20, "FEROS": 1, "UVES": 10}}, {"source_id": "6397698832181165184", "ra": "331.87198075050543", "dec": "-68.02373040872008", "parallax": "22.915534786634648", "phot_g_mean_mag": "6.850346", "bp_rp": "0.74861765", "radial_velocity": "26.223753", "eso": {"UVES": 4}}, {"source_id": "6408937971321777152", "ra": "328.0409379248099", "dec": "-62.05276829452777", "parallax": "21.385177819039555", "phot_g_mean_mag": "7.1108274", "bp_rp": "0.63565683", "radial_velocity": "2.5944378", "eso": {"FEROS": 2, "UVES": 6}}, {"source_id": "6517095109079262336", "ra": "336.85514426983", "dec": "-49.36741560401697", "parallax": "27.06693138193524", "phot_g_mean_mag": "7.3168073", "bp_rp": "0.87110806", "radial_velocity": "5.05565", "eso": {"UVES": 6}}, {"source_id": "6666015128609223552", "ra": "302.44987510090414", "dec": "-51.71847852726248", "parallax": "24.57524491181453", "phot_g_mean_mag": "8.221413", "bp_rp": "0.8882909", "radial_velocity": "73.137215", "eso": {}}] \ No newline at end of file diff --git a/papers/short_lived_elements/data/harps_sample.json b/papers/short_lived_elements/data/harps_sample.json new file mode 100644 index 0000000000000000000000000000000000000000..209047ebbe1d26dd0cc262c893599a57ca54e652 --- /dev/null +++ b/papers/short_lived_elements/data/harps_sample.json @@ -0,0 +1 @@ +[{"source_id": "2498460442625153536", "ra": "40.30930839090126", "dec": "-0.6962055847301062", "parallax": "44.86942385484068", "phot_g_mean_mag": "5.639261", "bp_rp": "0.665082", "radial_velocity": "7.9355035", "harps": 29, "refs": 8}, {"source_id": "6603827644293770624", "ra": "341.79019743919497", "dec": "-32.67586045991355", "parallax": "36.427432649473914", "phot_g_mean_mag": "7.4024825", "bp_rp": "0.905488", "radial_velocity": "0.38569134", "harps": 102, "refs": 58}, {"source_id": "5765846127180770432", "ra": "198.8369563599752", "dec": "-87.56137833392853", "parallax": "40.47572675612933", "phot_g_mean_mag": "6.9539948", "bp_rp": "0.8471527", "radial_velocity": "-4.8709087", "harps": 6, "refs": 61}, {"source_id": "4400452830957830656", "ra": "233.58628180095772", "dec": "-5.695069084035784", "parallax": "39.262237973106316", "phot_g_mean_mag": "6.378272", "bp_rp": "0.7419362", "radial_velocity": "-37.093605", "harps": 48, "refs": 70}, {"source_id": "4867596937475715968", "ra": "68.65985291787906", "dec": "-35.65905111429036", "parallax": "35.554012080483346", "phot_g_mean_mag": "7.416061", "bp_rp": "0.9276414", "radial_velocity": "-9.935869", "harps": 8, "refs": 70}, {"source_id": "5848156426657892480", "ra": "219.43862180151382", "dec": "-67.93325837056041", "parallax": "36.01908647368874", "phot_g_mean_mag": "5.9151883", "bp_rp": "0.67767715", "radial_velocity": "-30.564247", "harps": 34, "refs": 71}, {"source_id": "3811594088617869056", "ra": "167.4163506592084", "dec": "2.4564178131775454", "parallax": "34.045019969316755", "phot_g_mean_mag": "7.4945292", "bp_rp": "0.93226004", "radial_velocity": "10.061204", "harps": 6, "refs": 75}, {"source_id": "6544549880063909248", "ra": "342.54169017461396", "dec": "-41.49103237865932", "parallax": "35.10980207845336", "phot_g_mean_mag": "7.5872374", "bp_rp": "0.92354393", "radial_velocity": "20.781187", "harps": 38, "refs": 75}, {"source_id": "6914237987476826624", "ra": "310.6222671588797", "dec": "-5.302007933681636", "parallax": "33.53135394805086", "phot_g_mean_mag": "7.4364514", "bp_rp": "0.873158", "radial_velocity": "3.095398", "harps": 29, "refs": 79}, {"source_id": "4777373903814124032", "ra": "70.8074140002084", "dec": "-54.59430996088695", "parallax": "36.62918559675795", "phot_g_mean_mag": "7.4228473", "bp_rp": "0.92318153", "radial_velocity": "64.215385", "harps": 29, "refs": 82}, {"source_id": "5906633952564270848", "ra": "225.47177734452393", "dec": "-47.00780120185012", "parallax": "38.035411935552446", "phot_g_mean_mag": "7.555837", "bp_rp": "0.9039111", "radial_velocity": "-7.67993", "harps": 26, "refs": 82}, {"source_id": "2475331597059676288", "ra": "18.594015736818537", "dec": "-7.909697284490481", "parallax": "41.67478954633729", "phot_g_mean_mag": "7.6303015", "bp_rp": "0.97610474", "radial_velocity": "21.781662", "harps": 8, "refs": 84}, {"source_id": "5317114850417299584", "ra": "133.79928015793473", "dec": "-54.96617494635676", "parallax": "41.08159535664877", "phot_g_mean_mag": "5.587254", "bp_rp": "0.63509655", "radial_velocity": "-6.2892346", "harps": 44, "refs": 85}, {"source_id": "6213644846302305536", "ra": "231.01010494943648", "dec": "-27.305419670890252", "parallax": "37.01768784079552", "phot_g_mean_mag": "7.3327193", "bp_rp": "0.9167886", "radial_velocity": "-6.562323", "harps": 39, "refs": 88}, {"source_id": "2390702771185162112", "ra": "355.1591589910273", "dec": "-18.98908001993059", "parallax": "38.10395679499556", "phot_g_mean_mag": "7.4022975", "bp_rp": "0.90528107", "radial_velocity": "10.281637", "harps": 7, "refs": 88}, {"source_id": "3182634954624823168", "ra": "77.97571781680705", "dec": "-9.115639165355212", "parallax": "34.90358038546335", "phot_g_mean_mag": "7.8328495", "bp_rp": "0.9699197", "radial_velocity": "4.8129277", "harps": 25, "refs": 89}, {"source_id": "3585098090614578688", "ra": "174.6671612971082", "dec": "-13.201382200818335", "parallax": "37.244992141255395", "phot_g_mean_mag": "5.3572874", "bp_rp": "0.7103176", "radial_velocity": "-22.451454", "harps": 91, "refs": 93}, {"source_id": "5320952798822552064", "ra": "123.85501687347556", "dec": "-52.060550206237615", "parallax": "37.00138228818621", "phot_g_mean_mag": "6.4833074", "bp_rp": "0.7478013", "radial_velocity": "11.874742", "harps": 89, "refs": 93}, {"source_id": "2417456431710276096", "ra": "2.0681073974691007", "dec": "-14.82454115485891", "parallax": "36.6167237202517", "phot_g_mean_mag": "6.8955975", "bp_rp": "0.77679014", "radial_velocity": "7.88474", "harps": 83, "refs": 93}, {"source_id": "6133033601555979648", "ra": "188.67615972095874", "dec": "-44.67393782590503", "parallax": "35.136929753845564", "phot_g_mean_mag": "5.6075745", "bp_rp": "0.83737993", "radial_velocity": "18.048462", "harps": 61, "refs": 94}, {"source_id": "2468730472844294016", "ra": "19.101421358445368", "dec": "-12.097023091894101", "parallax": "39.05021069563417", "phot_g_mean_mag": "7.3630233", "bp_rp": "0.9328532", "radial_velocity": "8.113784", "harps": 41, "refs": 94}, {"source_id": "4383374219923745024", "ra": "249.28553165094687", "dec": "0.2546902697359427", "parallax": "49.20360401812414", "phot_g_mean_mag": "6.884097", "bp_rp": "0.9849577", "radial_velocity": "10.347465", "harps": 10, "refs": 96}, {"source_id": "4356054757585316992", "ra": "245.63599026173608", "dec": "-4.250032851997464", "parallax": "37.15996717652195", "phot_g_mean_mag": "7.161991", "bp_rp": "0.88270044", "radial_velocity": "-20.279348", "harps": 30, "refs": 96}, {"source_id": "5395795730687103488", "ra": "168.95321909294123", "dec": "-39.322663550827095", "parallax": "36.8989960179662", "phot_g_mean_mag": "7.200772", "bp_rp": "0.80809164", "radial_velocity": "43.40126", "harps": 26, "refs": 96}, {"source_id": "5584019442620181760", "ra": "101.34444954450602", "dec": "-31.79505826654203", "parallax": "41.78383000945281", "phot_g_mean_mag": "5.7957945", "bp_rp": "0.6608362", "radial_velocity": "28.686024", "harps": 50, "refs": 98}, {"source_id": "6153706477443518976", "ra": "190.92448505989395", "dec": "-37.70907037203689", "parallax": "36.04760319002567", "phot_g_mean_mag": "7.3658967", "bp_rp": "0.8381729", "radial_velocity": "-26.311434", "harps": 26, "refs": 99}, {"source_id": "4768170579173552896", "ra": "86.61690961169748", "dec": "-53.21994676836762", "parallax": "34.82881071488006", "phot_g_mean_mag": "6.490026", "bp_rp": "0.7474055", "radial_velocity": "-5.5254197", "harps": 45, "refs": 100}, {"source_id": "2523361151179609344", "ra": "10.197852897678386", "dec": "-7.233021718032282", "parallax": "37.792390705217514", "phot_g_mean_mag": "6.8973174", "bp_rp": "0.7988043", "radial_velocity": "12.227382", "harps": 35, "refs": 101}, {"source_id": "6703245382605547520", "ra": "276.1382980764171", "dec": "-49.653543337273064", "parallax": "36.57350585000894", "phot_g_mean_mag": "6.3106174", "bp_rp": "0.7514453", "radial_velocity": "32.62548", "harps": 124, "refs": 102}, {"source_id": "4176501313320676992", "ra": "265.9339006264291", "dec": "-3.9189353001796716", "parallax": "33.61289444532433", "phot_g_mean_mag": "7.500781", "bp_rp": "0.85218143", "radial_velocity": "-17.145285", "harps": 392, "refs": 106}, {"source_id": "2533723670313663872", "ra": "19.67316705625095", "dec": "-0.8686919886200175", "parallax": "36.39854099610976", "phot_g_mean_mag": "7.800797", "bp_rp": "0.9913378", "radial_velocity": "16.812344", "harps": 13, "refs": 107}, {"source_id": "2341817487782612480", "ra": "359.8708680614745", "dec": "-20.03597376421632", "parallax": "38.20040492298039", "phot_g_mean_mag": "7.292809", "bp_rp": "0.90612555", "radial_velocity": "20.931", "harps": 33, "refs": 110}, {"source_id": "6879764552737781888", "ra": "303.1086735704209", "dec": "-12.618367150928863", "parallax": "35.41853396937967", "phot_g_mean_mag": "5.721998", "bp_rp": "0.64554596", "radial_velocity": "27.201628", "harps": 32, "refs": 111}, {"source_id": "6764687466752221824", "ra": "293.1684170305172", "dec": "-28.023138653390138", "parallax": "35.98255247529634", "phot_g_mean_mag": "6.9783187", "bp_rp": "0.85418606", "radial_velocity": "-42.554565", "harps": 9, "refs": 111}, {"source_id": "2966790170574625408", "ra": "86.11823173613037", "dec": "-20.126407478840715", "parallax": "38.22533945749203", "phot_g_mean_mag": "6.2134695", "bp_rp": "0.7237625", "radial_velocity": "37.833538", "harps": 31, "refs": 111}, {"source_id": "4923433303326992384", "ra": "6.17887623083274", "dec": "-53.98412339910786", "parallax": "35.26222535516851", "phot_g_mean_mag": "7.123906", "bp_rp": "0.8259864", "radial_velocity": "6.5275316", "harps": 89, "refs": 112}, {"source_id": "5548164986925169024", "ra": "123.39200276365901", "dec": "-31.734710854047783", "parallax": "36.78157369510674", "phot_g_mean_mag": "6.577511", "bp_rp": "0.761466", "radial_velocity": "51.689796", "harps": 169, "refs": 112}, {"source_id": "5798962867668048768", "ra": "228.81031546406854", "dec": "-70.52035564237927", "parallax": "37.3019774686393", "phot_g_mean_mag": "6.6936617", "bp_rp": "0.8817105", "radial_velocity": "1.9433932", "harps": 290, "refs": 113}, {"source_id": "6370513647703084544", "ra": "325.12181169515554", "dec": "-74.07333789088827", "parallax": "44.97597509904499", "phot_g_mean_mag": "6.87618", "bp_rp": "0.9189677", "radial_velocity": "34.32828", "harps": 94, "refs": 117}, {"source_id": "6606890608810806528", "ra": "340.23167935384356", "dec": "-31.98996669113577", "parallax": "37.490029921152384", "phot_g_mean_mag": "7.2165284", "bp_rp": "0.9372463", "radial_velocity": "-20.323183", "harps": 64, "refs": 121}, {"source_id": "5891531404470141824", "ra": "220.12098341098695", "dec": "-57.03096208719124", "parallax": "38.99804407628826", "phot_g_mean_mag": "7.2177124", "bp_rp": "0.8531132", "radial_velocity": "34.59329", "harps": 22, "refs": 123}, {"source_id": "6270906415441316224", "ra": "214.75195942793653", "dec": "-25.81380529238654", "parallax": "55.59003779052883", "phot_g_mean_mag": "5.7329264", "bp_rp": "0.69151926", "radial_velocity": "-22.284346", "harps": 36, "refs": 124}, {"source_id": "6698960688866464768", "ra": "300.08506043759076", "dec": "-33.70473731804371", "parallax": "45.15373635211155", "phot_g_mean_mag": "5.5258694", "bp_rp": "0.6585312", "radial_velocity": "-7.848643", "harps": 58, "refs": 124}, {"source_id": "6088054505011960832", "ra": "198.46691288473986", "dec": "-45.186296719952466", "parallax": "39.985887248899765", "phot_g_mean_mag": "6.763095", "bp_rp": "0.8180342", "radial_velocity": "58.658405", "harps": 145, "refs": 131}, {"source_id": "6489771832811810432", "ra": "348.5320836373795", "dec": "-62.70188868698129", "parallax": "34.250041316092705", "phot_g_mean_mag": "5.922179", "bp_rp": "0.9656005", "radial_velocity": "-31.051317", "harps": 157, "refs": 133}, {"source_id": "5790389872417570816", "ra": "212.1090387533397", "dec": "-74.84948901093674", "parallax": "34.149105120135566", "phot_g_mean_mag": "5.8753195", "bp_rp": "0.7564416", "radial_velocity": "-21.171196", "harps": 52, "refs": 135}, {"source_id": "4041857799496807936", "ra": "266.9886891599007", "dec": "-34.021390083597176", "parallax": "37.2047680269085", "phot_g_mean_mag": "7.021645", "bp_rp": "0.869884", "radial_velocity": "2.4378386", "harps": 63, "refs": 136}, {"source_id": "6802426038708609536", "ra": "314.19768133427806", "dec": "-26.296669316774295", "parallax": "47.3885663277591", "phot_g_mean_mag": "5.5740957", "bp_rp": "0.66569567", "radial_velocity": "-16.08618", "harps": 51, "refs": 137}, {"source_id": "5481848424118748672", "ra": "95.62881797245707", "dec": "-60.21836448226139", "parallax": "41.88773446263176", "phot_g_mean_mag": "6.3652062", "bp_rp": "0.7657213", "radial_velocity": "31.45045", "harps": 27, "refs": 138}, {"source_id": "4847282124418880256", "ra": "48.775787183456885", "dec": "-45.66419080072318", "parallax": "40.77736717787729", "phot_g_mean_mag": "6.6122017", "bp_rp": "0.76189995", "radial_velocity": "4.3632746", "harps": 83, "refs": 138}, {"source_id": "4975284381908412672", "ra": "11.441179788312354", "dec": "-47.551632903583055", "parallax": "66.45087121691725", "phot_g_mean_mag": "5.6450467", "bp_rp": "0.80877495", "radial_velocity": "-10.918731", "harps": 54, "refs": 139}, {"source_id": "2585856120791459584", "ra": "24.42087642407902", "dec": "12.078407829941513", "parallax": "39.311771169889454", "phot_g_mean_mag": "6.6180305", "bp_rp": "0.80383205", "radial_velocity": "-20.971186", "harps": 86, "refs": 140}, {"source_id": "3750995604764854400", "ra": "160.5565765491326", "dec": "-13.788479094517433", "parallax": "41.90817825907493", "phot_g_mean_mag": "6.6370964", "bp_rp": "0.79602385", "radial_velocity": "-17.933577", "harps": 94, "refs": 140}, {"source_id": "6489909443564308224", "ra": "349.2420354292303", "dec": "-62.00131377033478", "parallax": "48.91744275954628", "phot_g_mean_mag": "5.519003", "bp_rp": "0.6843314", "radial_velocity": "0.63290673", "harps": 34, "refs": 145}, {"source_id": "3532823773073745536", "ra": "168.0063110737477", "dec": "-26.136959071198014", "parallax": "45.24819195459114", "phot_g_mean_mag": "6.857719", "bp_rp": "0.9304886", "radial_velocity": "39.758057", "harps": 83, "refs": 147}, {"source_id": "2423292879948720000", "ra": "4.497121279564225", "dec": "-13.455641929479897", "parallax": "37.14173648080181", "phot_g_mean_mag": "6.369294", "bp_rp": "0.76227903", "radial_velocity": "28.922716", "harps": 212, "refs": 149}, {"source_id": "2324785228033780608", "ra": "354.9644825922254", "dec": "-32.74476085215323", "parallax": "54.71933718636992", "phot_g_mean_mag": "6.973324", "bp_rp": "0.9866462", "radial_velocity": "-7.418852", "harps": 62, "refs": 150}, {"source_id": "6029992663310612096", "ra": "256.11643460703914", "dec": "-28.583871541724104", "parallax": "54.725979187340414", "phot_g_mean_mag": "6.3801155", "bp_rp": "0.9633169", "radial_velocity": "14.0822935", "harps": 279, "refs": 151}, {"source_id": "3022685626580347392", "ra": "89.5900670199354", "dec": "-4.651563226359424", "parallax": "41.53660436843603", "phot_g_mean_mag": "6.823622", "bp_rp": "0.893435", "radial_velocity": "143.41978", "harps": 62, "refs": 151}, {"source_id": "4657193606465368704", "ra": "86.12894471761606", "dec": "-70.13806560262964", "parallax": "37.823472853588115", "phot_g_mean_mag": "7.8646474", "bp_rp": "0.97041845", "radial_velocity": "13.988735", "harps": 289, "refs": 151}, {"source_id": "5559265690666327168", "ra": "105.99488080404734", "dec": "-43.609653717189374", "parallax": "58.617893811854074", "phot_g_mean_mag": "6.653335", "bp_rp": "0.9644823", "radial_velocity": "88.55205", "harps": 145, "refs": 152}, {"source_id": "2981583790287411200", "ra": "79.71210885930144", "dec": "-18.129780581089395", "parallax": "40.47848602908938", "phot_g_mean_mag": "5.815227", "bp_rp": "0.74172115", "radial_velocity": "40.425167", "harps": 152, "refs": 153}, {"source_id": "2918894859953947392", "ra": "101.21643794479907", "dec": "-27.34036132824005", "parallax": "37.17337421079895", "phot_g_mean_mag": "6.299466", "bp_rp": "0.7210088", "radial_velocity": "-10.344675", "harps": 32, "refs": 155}, {"source_id": "5493588665684618752", "ra": "111.85405211571336", "dec": "-51.402609641760776", "parallax": "44.512158869858446", "phot_g_mean_mag": "6.5475388", "bp_rp": "0.86575794", "radial_velocity": "4.8165326", "harps": 538, "refs": 155}, {"source_id": "5876112300125320448", "ra": "227.68470467666333", "dec": "-61.42237639057999", "parallax": "41.619757797978004", "phot_g_mean_mag": "6.14853", "bp_rp": "0.77377224", "radial_velocity": "37.832096", "harps": 339, "refs": 156}, {"source_id": "5528591961953902720", "ra": "129.33152767564485", "dec": "-40.14752547947013", "parallax": "36.25695946404227", "phot_g_mean_mag": "6.3918056", "bp_rp": "0.75407314", "radial_velocity": "-1.7971666", "harps": 230, "refs": 157}, {"source_id": "3789271459953459328", "ra": "166.1719995924465", "dec": "-4.221551738883445", "parallax": "38.01400614108804", "phot_g_mean_mag": "7.41454", "bp_rp": "0.93456984", "radial_velocity": "18.496983", "harps": 16, "refs": 158}, {"source_id": "5596797039059063680", "ra": "121.75390919459994", "dec": "-29.40451664155661", "parallax": "38.95805236436632", "phot_g_mean_mag": "6.6477046", "bp_rp": "0.76543236", "radial_velocity": "-15.709653", "harps": 39, "refs": 160}, {"source_id": "3646061719703116032", "ra": "213.18776960292266", "dec": "-3.3215159987373553", "parallax": "45.89535816373623", "phot_g_mean_mag": "6.86059", "bp_rp": "0.90823936", "radial_velocity": "37.726936", "harps": 63, "refs": 161}, {"source_id": "5569858798004394624", "ra": "96.10099269381008", "dec": "-42.844063500286964", "parallax": "35.93643599490368", "phot_g_mean_mag": "6.5095224", "bp_rp": "0.8318238", "radial_velocity": "56.33409", "harps": 112, "refs": 162}, {"source_id": "2477815222028038272", "ra": "24.398547155959204", "dec": "-6.760861184078484", "parallax": "41.56362142958949", "phot_g_mean_mag": "7.4655304", "bp_rp": "0.9709339", "radial_velocity": "11.4593315", "harps": 19, "refs": 163}, {"source_id": "4117290138348536064", "ra": "265.85700792887656", "dec": "-21.683392427381285", "parallax": "58.2436975539037", "phot_g_mean_mag": "4.7305098", "bp_rp": "0.63404465", "radial_velocity": "10.360545", "harps": 30, "refs": 164}, {"source_id": "3799626935341796096", "ra": "176.4253800850321", "dec": "2.8209755114352486", "parallax": "34.06338540186498", "phot_g_mean_mag": "7.859468", "bp_rp": "0.9878969", "radial_velocity": "1.8903584", "harps": 16, "refs": 165}, {"source_id": "6519024545827374336", "ra": "340.65372802922366", "dec": "-47.21228468595998", "parallax": "41.98112440135986", "phot_g_mean_mag": "5.8687344", "bp_rp": "0.7198372", "radial_velocity": "18.681446", "harps": 11, "refs": 166}, {"source_id": "5461620846141553024", "ra": "155.98010817595727", "dec": "-29.64508920127813", "parallax": "45.56275018557557", "phot_g_mean_mag": "6.7550097", "bp_rp": "0.85185957", "radial_velocity": "26.94308", "harps": 165, "refs": 166}, {"source_id": "2525514785221197696", "ra": "12.796367991907957", "dec": "-5.039807177766975", "parallax": "44.59124455306682", "phot_g_mean_mag": "6.813367", "bp_rp": "0.83836794", "radial_velocity": "-3.826414", "harps": 531, "refs": 166}, {"source_id": "5725122999630404096", "ra": "122.6647915359159", "dec": "-13.798947414957585", "parallax": "44.33951681369627", "phot_g_mean_mag": "5.398911", "bp_rp": "0.6578026", "radial_velocity": "33.232998", "harps": 209, "refs": 170}, {"source_id": "5855730584310531200", "ra": "192.2159654417225", "dec": "-68.42465224767673", "parallax": "34.60940212403708", "phot_g_mean_mag": "7.4192524", "bp_rp": "0.87915325", "radial_velocity": "104.53151", "harps": 103, "refs": 172}, {"source_id": "3346787986201584896", "ra": "89.01601210041528", "dec": "13.922768938376445", "parallax": "36.44736649873669", "phot_g_mean_mag": "6.46059", "bp_rp": "0.82071495", "radial_velocity": "0.26070803", "harps": 87, "refs": 172}, {"source_id": "5459060117921483008", "ra": "153.35107247993722", "dec": "-33.031431827717", "parallax": "44.579190842530565", "phot_g_mean_mag": "6.2337136", "bp_rp": "0.754859", "radial_velocity": "43.93154", "harps": 53, "refs": 172}, {"source_id": "4418203587193988480", "ra": "228.45641359277727", "dec": "-1.3536263795284098", "parallax": "57.92051412635043", "phot_g_mean_mag": "6.3889394", "bp_rp": "0.93755865", "radial_velocity": "-69.63379", "harps": 13, "refs": 174}, {"source_id": "3480332916165099904", "ra": "176.81449587216233", "dec": "-30.287523728032085", "parallax": "56.36256241989167", "phot_g_mean_mag": "6.304665", "bp_rp": "0.8605957", "radial_velocity": "13.997693", "harps": 142, "refs": 174}, {"source_id": "5357075947709011456", "ra": "157.8377665452764", "dec": "-53.71455177900993", "parallax": "45.327579990833634", "phot_g_mean_mag": "4.757292", "bp_rp": "0.6904063", "radial_velocity": "21.188463", "harps": 38, "refs": 178}, {"source_id": "5609058277323483392", "ra": "103.39285496655026", "dec": "-28.541757694191922", "parallax": "38.798293540251805", "phot_g_mean_mag": "5.8696074", "bp_rp": "0.86797523", "radial_velocity": "72.42224", "harps": 90, "refs": 179}, {"source_id": "6904703228801028864", "ra": "308.10012508821757", "dec": "-9.852896020510071", "parallax": "40.424057561794726", "phot_g_mean_mag": "5.4923334", "bp_rp": "0.87535477", "radial_velocity": "9.134341", "harps": 93, "refs": 179}, {"source_id": "2633449134434620288", "ra": "352.8820552593554", "dec": "-4.08825556776875", "parallax": "38.711285261412094", "phot_g_mean_mag": "6.3626", "bp_rp": "0.71109676", "radial_velocity": "-12.600183", "harps": 45, "refs": 180}, {"source_id": "6612242034982766848", "ra": "332.53884519084073", "dec": "-32.54834854643202", "parallax": "54.177261374214716", "phot_g_mean_mag": "4.804227", "bp_rp": "0.64425135", "radial_velocity": "-16.343624", "harps": 2012, "refs": 181}, {"source_id": "6128366415218881536", "ra": "186.6962483313444", "dec": "-48.913552660206726", "parallax": "37.22107095867945", "phot_g_mean_mag": "6.090406", "bp_rp": "0.8259287", "radial_velocity": "30.470337", "harps": 85, "refs": 184}, {"source_id": "5452492082132835840", "ra": "166.97418043057004", "dec": "-30.175156666953004", "parallax": "39.39745889595018", "phot_g_mean_mag": "6.3684316", "bp_rp": "0.7781205", "radial_velocity": "12.825705", "harps": 365, "refs": 184}, {"source_id": "3786697056556771584", "ra": "169.5952622804983", "dec": "-5.067973226795478", "parallax": "45.18025536591975", "phot_g_mean_mag": "7.086581", "bp_rp": "0.9204879", "radial_velocity": "13.196382", "harps": 89, "refs": 187}, {"source_id": "6454967273273436416", "ra": "310.0138189119736", "dec": "-60.55142507247136", "parallax": "40.568279192151905", "phot_g_mean_mag": "4.9773397", "bp_rp": "0.7344909", "radial_velocity": "-31.898127", "harps": 66, "refs": 190}, {"source_id": "4906784051581971200", "ra": "10.11468419994352", "dec": "-59.45262733734352", "parallax": "39.59120919706224", "phot_g_mean_mag": "5.766062", "bp_rp": "0.7356639", "radial_velocity": "2.921022", "harps": 258, "refs": 190}, {"source_id": "5553647083168192512", "ra": "95.02713914788131", "dec": "-48.74227395080213", "parallax": "38.35239330962407", "phot_g_mean_mag": "6.456549", "bp_rp": "0.8026581", "radial_velocity": "59.67137", "harps": 46, "refs": 191}, {"source_id": "5479222240596469632", "ra": "104.99706286126714", "dec": "-61.33500424765096", "parallax": "54.52523915853711", "phot_g_mean_mag": "6.616181", "bp_rp": "0.9549222", "radial_velocity": "22.031446", "harps": 93, "refs": 192}, {"source_id": "5540006949934104448", "ra": "125.36607149053947", "dec": "-39.70441185773698", "parallax": "34.14779002621171", "phot_g_mean_mag": "7.0075817", "bp_rp": "0.8483319", "radial_velocity": "49.313007", "harps": 57, "refs": 194}, {"source_id": "5586381090520538880", "ra": "112.67664531263651", "dec": "-37.33912778295995", "parallax": "45.97376105121097", "phot_g_mean_mag": "6.502913", "bp_rp": "0.8067999", "radial_velocity": "9.17938", "harps": 179, "refs": 194}, {"source_id": "3345968334645285376", "ra": "91.66810166362778", "dec": "15.5416453082647", "parallax": "63.406545041075034", "phot_g_mean_mag": "6.53857", "bp_rp": "0.9838109", "radial_velocity": "-10.014866", "harps": 20, "refs": 194}] \ No newline at end of file diff --git a/papers/short_lived_elements/make_numbers.py b/papers/short_lived_elements/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..4b060fc98e5508693654718761f6c8aa2f85532b --- /dev/null +++ b/papers/short_lived_elements/make_numbers.py @@ -0,0 +1,283 @@ +"""Numbers, tables and figure of the short-lived elements paper from the composition elements results and Korg curves of growth.""" +import json +import os +import sys + +import numpy as np + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import core # noqa: E402 +from setitools import composition as cp # noqa: E402 + +INST = ("HARPS", "UVES", "FEROS", "ESPRESSO") +ELEM = ("Tc", "Pm", "Pa", "Pu", "Am", "Cm") +NAME = {"Tc": "technetium", "Pm": "promethium", "Pa": "protactinium", "Pu": "plutonium", "Am": "americium", + "Cm": "curium"} +ION = {"Tc": r"\ion{Tc}{i}", "Pm": r"\ion{Pm}{ii}", "Pa": r"\ion{Pa}{ii}", "Pu": r"\ion{Pu}{ii}", + "Am": r"\ion{Am}{ii}", "Cm": r"\ion{Cm}{ii}"} +# Pecaut and Mamajek (2013, v2022.04.16): dwarf BP-RP and Teff, F3 V to K2 V +MAMAJEK = ((0.518, 6750), (0.546, 6670), (0.587, 6550), (0.640, 6350), (0.670, 6280), (0.694, 6180), (0.719, 6050), + (0.767, 5990), (0.784, 5930), (0.803, 5860), (0.823, 5770), (0.832, 5720), (0.841, 5680), (0.850, 5660), + (0.869, 5600), (0.880, 5550), (0.900, 5480), (0.950, 5380), (0.983, 5270), (1.010, 5170), (1.100, 5100)) +# Bahcall, Serenelli and Basu (2006): solar convective-zone mass (GS98) and hydrogen fraction +M_CZ_SUN = 0.02403 +X_SURF = 0.74 +M_SUN = 1.98892e30 +M_H = 1.6735575e-27 +U = 1.66053907e-27 +# JEFF-3.1 cumulative 235U thermal fission yields; ENSDF half-lives +YIELD = {"Tc": 0.06132, "Pm": 0.02232} +HALF_LIFE_YR = {"Tc": 2.111e5, "Pm": 2.6234} +MASS_NUMBER = {"Tc": 99, "Pm": 147} +E_FISSION_J = 200e6 * 1.602176634e-19 +YEAR = 3.15576e7 +L_SUN = 3.828e26 + + +def load(name): + """Result file from data/, else the results directory.""" + p = os.path.join(HERE, "data", name) + return json.load(open(p if os.path.exists(p) else core.results(name))) + + +def teff(bp_rp): + b, t = zip(*MAMAJEK) + return float(np.interp(bp_rp, b, t)) + + +def curves(): + """{(element, line): (teff, abundance grid, log10 EW [teff, A])} at [M/H] 0, with -0.3 and +0.3 rows at 5800 K.""" + rows, grid, mh_rows = {}, None, {} + for line in open(os.path.join(HERE, "curves_of_growth.txt")): + if line.startswith("#"): + grid = np.array([float(x.split("_A")[1]) for x in line.split()[8:]]) + continue + p = line.split() + t, mh, el, lam = float(p[0]), float(p[2]), p[3], float(p[4]) + ew = np.array([float(x) for x in p[7:]]) + if mh == 0.0: + rows.setdefault((el, lam), []).append((t, ew)) + else: + mh_rows[(el, lam, mh)] = ew + out = {} + for k, v in rows.items(): + v.sort() + out[k] = (np.array([t for t, _ in v]), grid, np.log10(np.array([e for _, e in v]))) + return out, mh_rows + + +def abundance(cog, el, lam, t, ew_ma): + """A(X) giving equivalent width ew_ma (mA) at temperature t from the interpolated curve of growth, the weak-line law below the grid.""" + ts, grid, lew = cog[(el, lam)] + row = np.array([np.interp(t, ts, lew[:, j]) for j in range(len(grid))]) + y = np.log10(ew_ma) + if y <= row[0]: + return float(grid[0] + (y - row[0])) + return float(np.interp(y, row, grid)) + + +def strongest(lines): + return max(lines, key=lambda x: x[1])[0] + + +def main(): + census = load("elements_census.json") + harps = load("harps_sample.json") + meta = {} + print("== samples") + print("census: %d Gaia DR3 stars within 50 pc in the colour, magnitude, RUWE and declination cuts" % len(census)) + print("HARPS sample: %d stars within 30 pc with >= 5 HARPS spectra, a radial velocity and < 200 SIMBAD references " + "(references %d-%d)" % (len(harps), min(r["refs"] for r in harps), max(r["refs"] for r in harps))) + for inst in INST: + n2 = (len(harps) if inst == "HARPS" else + sum(1 for r in census if r["eso"] and r["eso"].get(inst, 0) >= 2 and r.get("radial_velocity"))) + d = os.path.join(cp.elements_ROOT, inst) + stars = [s for s in os.listdir(d) if os.path.exists(os.path.join(d, s, "star.json"))] + nspec = sum(len([f for f in os.listdir(os.path.join(d, s)) if f.endswith(".fits")]) for s in stars) + st = np.load(os.path.join(cp.elements_ROOT, "stacks_%s.npz" % inst)) + tc = load("element_Tc_%s.json" % inst)["results"] + dv = np.array(st["v"]) - np.array(st["rv"]) + for s in stars: + meta[s] = json.load(open(os.path.join(d, s, "star.json"))) + snr = [] + for T in st["stacks"]: + seg = T[(cp.elements_GRID > 4150) & (cp.elements_GRID < 4550)].astype(float) + snr.append(np.nanmedian(seg) / (1.4826 * np.nanmedian(np.abs(np.diff(seg))) / np.sqrt(2))) + print("%-8s eligible %d; fetched %d stars, %d spectra; usable stacks %d; measured %d; median spectra a stack " + "%.0f; median stack S/N a 0.01 A sample at 4150-4550 A %.0f; line velocity minus Gaia median %+.2f km/s, " + "robust sd %.2f, more than 3 km/s off %d" + % (inst, n2, len(stars), nspec, len(st["names"]), len(tc), np.median(st["nspec"]), np.median(snr), + np.median(dv), 1.4826 * np.median(np.abs(dv - np.median(dv))), + int(np.sum(np.abs(dv - np.median(dv)) > 3)))) + every = set() + for inst in INST: + for el in ELEM: + every |= {r["star"] for r in load("element_%s_%s.json" % (el, inst))["results"]} + dist = np.array([1000.0 / meta[s]["plx"] for s in every]) + col = np.array([meta[s]["bp_rp"] for s in every]) + print("distinct stars measured %d; distance %.1f-%.1f pc (median %.1f); BP-RP %.2f-%.2f" + % (len(every), dist.min(), dist.max(), np.median(dist), col.min(), col.max())) + + print("== results") + ntest, allp = 0, [] + for el in ELEM: + for inst in INST: + d = load("element_%s_%s.json" % (el, inst)) + res = d["results"] + p = np.array([r["p"] for r in res]) + lim = np.array([r["ew_limit_ma"] for r in res]) + low = min(res, key=lambda r: r["p"]) + ntest += len(res) + allp += [(r["p"], el, inst, r["star"]) for r in res] + print("%s %-8s n %3d p<0.01 %d (exp %.1f) lowest p %.4f (%s) limit median %.2f mA (10-90%% %.2f-%.2f)" + % (el, inst, len(res), int((p < 0.01).sum()), 0.01 * len(res), low["p"], low["star"], + np.median(lim), *np.percentile(lim, [10, 90]))) + for el in ELEM: + for inst in INST: + d = load("element_%s_%s.json" % (el, inst)) + out = [lam for (lam, _), k in zip(d["lines"], d["stable"]) if not k] + if out: + print("lines left out: %s %s %s" % (el, inst, out)) + for inst in INST: + rows = load("element_check_%s.json" % inst) + p = np.array([r["p"] for r in rows]) + multi = np.array([r["p"] for r in rows if r["element"] != "Cm"]) + print("injection check %-8s %d injections into %d stars: p median %.4f (multi-line %.4f), 10-90%% %.4f-%.4f" + % (inst, len(rows), len({r["star"] for r in rows}), np.median(p), np.median(multi), + *np.percentile(multi, [10, 90]))) + allp.sort() + print("tests %d; lowest p %.5f (%s %s %s), expected number below it %.2f; below 0.01: %d (exp %.1f); below 0.001: " + "%d (exp %.1f)" % (ntest, allp[0][0], allp[0][1], allp[0][2], allp[0][3], allp[0][0] * ntest, + sum(1 for x in allp if x[0] < 0.01), 0.01 * ntest, + sum(1 for x in allp if x[0] < 0.001), 0.001 * ntest)) + for x in allp[:6]: + print(" ", x) + + print("== abundance limits") + cog, mh_rows = curves() + for el in ("Tc", "Pm"): + for inst in INST: + d = load("element_%s_%s.json" % (el, inst)) + lam = strongest(d["lines"]) + a = [] + for r in d["results"]: + t = teff(meta[r["star"]]["bp_rp"]) + a.append((abundance(cog, el, lam, t, max(r["ew_limit_ma"], 1e-3)), t, r["star"])) + a.sort() + av = np.array([x[0] for x in a]) + print("%s %-8s line %.2f A limit median %.2f, best %.2f (%s, %.0f K), 10-90%% %.2f-%.2f" + % (el, inst, lam, np.median(av), a[0][0], a[0][2], a[0][1], *np.percentile(av, [10, 90]))) + for lam in sorted({k[1] for k in cog if k[0] == el}): + ts, grid, lew = cog[(el, lam)] + for t in (5200, 5800, 6400): + print(" %s %.2f at %d K: A for 1 mA %.2f" % (el, lam, t, abundance(cog, el, lam, t, 1.0))) + for mh in (-0.3, 0.3): + lam = 4297.06 if el == "Tc" else 4186.03 + ts, grid, lew = cog[(el, lam)] + j = int(np.argmin(np.abs(ts - 5800))) + ratio = mh_rows[(el, lam, mh)][2] / 10 ** lew[j, 2] + print(" %s %.2f at 5800 K, [M/H] %+.1f: EW at A=0 changes by %.2f (%.2f dex)" % (el, lam, mh, ratio, + np.log10(ratio))) + + print("== masses and fission power for a solar-type star") + n_h = X_SURF * M_CZ_SUN * M_SUN / M_H + for el in ("Tc", "Pm"): + for inst in INST: + d = load("element_%s_%s.json" % (el, inst)) + lam = strongest(d["lines"]) + sun = [r for r in d["results"] if 5600 <= teff(meta[r["star"]]["bp_rp"]) <= 6000] + if not sun: + continue + a = np.median([abundance(cog, el, lam, teff(meta[r["star"]]["bp_rp"]), r["ew_limit_ma"]) for r in sun]) + n = 10 ** (a - 12.0) * n_h + mass = n * MASS_NUMBER[el] * U + rate = n * np.log(2) / (HALF_LIFE_YR[el] * YEAR) + power = rate / YIELD[el] * E_FISSION_J + fissions = n / YIELD[el] + print("%s %-8s %d stars at 5600-6000 K: median A limit %.2f; %.2g atoms, %.2g kg in a solar convective " + "zone; supply %.2g kg/yr; fission power %.2g W (%.2g L_sun); the product of %.2g fissions, %.2g kg of U-235, " + "%.0f times the Earth's uranium (8e16 kg, McDonough and Sun 1995)" + % (el, inst, len(sun), a, n, mass, mass * np.log(2) / HALF_LIFE_YR[el], power, power / L_SUN, + fissions, fissions * 235 * U, fissions * 235 * U / 8e16)) + + +def tables(): + """LaTeX rows of Tables 1-3.""" + print("== table 1 rows") + census = load("elements_census.json") + harps = load("harps_sample.json") + for inst in INST: + n2 = (len(harps) if inst == "HARPS" else + sum(1 for r in census if r["eso"] and r["eso"].get(inst, 0) >= 2 and r.get("radial_velocity"))) + d = os.path.join(cp.elements_ROOT, inst) + stars = [s for s in os.listdir(d) if os.path.exists(os.path.join(d, s, "star.json"))] + nspec = sum(len([f for f in os.listdir(os.path.join(d, s)) if f.endswith(".fits")]) for s in stars) + st = np.load(os.path.join(cp.elements_ROOT, "stacks_%s.npz" % inst)) + snr, hi = [], [] + for T in st["stacks"]: + seg = T[(cp.elements_GRID > 4150) & (cp.elements_GRID < 4550)].astype(float) + snr.append(np.nanmedian(seg) / (1.4826 * np.nanmedian(np.abs(np.diff(seg))) / np.sqrt(2))) + hi.append(cp.elements_GRID[np.isfinite(T)].max()) + n = len(load("element_Tc_%s.json" % inst)["results"]) + print(r"%s & $%s$ & $4100$--$%.0f$ & $%d$ & $%d$ & $%d$ & $%d$ & $%.0f$ \\" + % (inst, "{:,}".format(int(cp.elements_RES[inst])).replace(",", "{,}"), np.median(hi), n2, len(stars), + nspec, n, np.median(snr))) + print("== table 2 rows") + src = {"Tc": "Palmeri et al.~\\cite{Palmeri2005}", "Pm": "Fivet et al.~\\cite{Fivet2007}"} + for el in ELEM: + lines = load("element_%s_HARPS.json" % el)["lines"] + print(r"%s & %s & %s \\" % (ION[el], ", ".join("%.2f (%.2f)" % (lam, w) for lam, w in lines), + src.get(el, "NIST arc intensity"))) + print("== table 3 rows") + for el in ELEM: + cells = [] + for inst in INST: + res = load("element_%s_%s.json" % (el, inst))["results"] + p = min(r["p"] for r in res) + lim = np.median([r["ew_limit_ma"] for r in res]) + ps = ("%.3f" % p) if p >= 0.001 else ("%.4f" % p) + cells.append(r"$%d$ & $%s$ & $%.2f$" % (len(res), ps, lim)) + print(r"%s & %s \\" % (ION[el], " & ".join(cells))) + + +STYLE = {"HARPS": ("black", "o"), "UVES": ("black", "square*"), "FEROS": ("black!55", "triangle*"), + "ESPRESSO": ("black!75", "diamond*")} + + +def figure(): + """pgfplots code of Figure 1: abundance limits against temperature, Tc and Pm.""" + cog, _ = curves() + census = {} + for inst in INST: + d = os.path.join(cp.elements_ROOT, inst) + for s in os.listdir(d): + if os.path.exists(os.path.join(d, s, "star.json")): + census[s] = json.load(open(os.path.join(d, s, "star.json"))) + print("== figure") + for el, panel in (("Tc", "a"), ("Pm", "b")): + print("%% panel (%s), %s" % (panel, el)) + for inst in INST: + d = load("element_%s_%s.json" % (el, inst)) + lam = strongest(d["lines"]) + pts = sorted((teff(census[r["star"]]["bp_rp"]), + abundance(cog, el, lam, teff(census[r["star"]]["bp_rp"]), r["ew_limit_ma"])) + for r in d["results"]) + col, mk = STYLE[inst] + print(r"\addplot[only marks,mark=%s,mark size=1.0pt,%s,fill opacity=0.8] coordinates {%s};" + % (mk, col, " ".join("(%.0f,%.2f)" % p for p in pts))) + print(r"\addlegendentry{%s}" % inst) + lam = 4297.06 if el == "Tc" else 4186.03 + ts = np.arange(5100, 6501, 100) + print(r"\addplot[densely dotted,black!45,forget plot] coordinates {%s};" + % " ".join("(%d,%.2f)" % (t, abundance(cog, el, lam, t, 1.0)) for t in ts)) + + +if __name__ == "__main__": + import warnings + warnings.filterwarnings("ignore") + main() + tables() + figure() diff --git a/papers/short_lived_elements/short_lived_elements.pdf b/papers/short_lived_elements/short_lived_elements.pdf new file mode 100644 index 0000000000000000000000000000000000000000..04cf5875f43703a30097eccc4762d25cc24065d8 --- /dev/null +++ b/papers/short_lived_elements/short_lived_elements.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39d2047e7e50160b8b91c9aef39de42879d90dad4f76498ae0603a72471a9bec +size 123091 diff --git a/papers/short_lived_elements/short_lived_elements.tex b/papers/short_lived_elements/short_lived_elements.tex new file mode 100644 index 0000000000000000000000000000000000000000..c3ec29b6bc3435e39438cab99909dff8a4360526 --- /dev/null +++ b/papers/short_lived_elements/short_lived_elements.tex @@ -0,0 +1,603 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{A Search for Technetium, Promethium and Short-Lived Actinides\\ in Nearby Sun-like Stars} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +Technetium, promethium and the actinides from protactinium to curium have no isotope +that outlives a star, so their lines in a sun-like star would mean that atoms were added +to it recently, for instance as fission waste disposed of by a civilization. We search +$1413$ archival HARPS, UVES, FEROS and ESPRESSO spectra of $274$ F8 to K1 dwarfs within +$50$\,pc for absorption at $50$ lines of \ion{Tc}{i}, \ion{Pm}{ii}, \ion{Pa}{ii}, +\ion{Pu}{ii}, \ion{Am}{ii} and \ion{Cm}{ii}. Each star's stacked spectrum is fitted at +each line by its six most similar stacks, and the element's combined absorption is +compared with the same measurement at $400$ random wavelengths of the same star. Of +$2262$ star-element tests, $9$ fall below $p=0.01$ where $22.6$ are expected, and each +of the nine takes its absorption from a stellar blend that other stars share or from a +feature wider than an unresolved line. The median limits on the equivalent width of an +element's strongest line run from $0.4$ to $5.3$\,m\AA, and lines injected at those +strengths are recovered at $p=0.0010$. With curves of growth from Korg, the HARPS and +ESPRESSO limits for solar-type stars are $A(\mathrm{Tc})<0.69$ and +$A(\mathrm{Pm})<-0.86$, near the solar abundance of thorium. Mixed through a solar +convective envelope, they amount to $\sci{1.7}{19}$\,kg of \nuc{99}{Tc} and +$\sci{7}{17}$\,kg of \nuc{147}{Pm}, the steady-state waste of $\sci{6}{21}$\,W and +$\sci{3.5}{25}$\,W of fission power; the technetium alone is the product of fissioning +$\sci{7}{20}$\,kg of \nuc{235}{U}, several thousand times the uranium of the Earth, so the +search constrains disposal on a scale far beyond a planet's fuel, as dilution through a +sun-like star's convective envelope requires. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Technetium, promethium and the actinides protactinium, plutonium, americium and curium +have no isotope that lasts the life of a star. The longest-lived isotopes decay in +$4.2$\,Myr (technetium), $17.7$\,yr (promethium), $33$\,kyr (protactinium), $81$\,Myr +(plutonium), $7.4$\,kyr (americium) and $16$\,Myr (curium), so a star a few billion +years old keeps none of the atoms of these elements it was born with, and their lines in +its spectrum mean the atoms were made or delivered recently. Merrill's detection of +technetium in S stars~\cite{Merrill1952} showed nucleosynthesis inside evolved stars, +but a main-sequence dwarf makes none of these elements. + +That absence makes them a possible technosignature. Drake and Shklovskii suggested that +a civilization could announce itself by salting its star with a short-lived isotope, and +Sagan cautioned that normal and peculiar stellar spectra would have to be understood far +better before an unusual atom could be read as a sign of +intelligence~\cite{ShklovskiiSagan1966}. Whitmire and Wright proposed that a civilization +disposing of fission waste in its star would leave such lines without intending to, and +argued that convective dilution and stellar lifetimes favour stars of types A5 to +F2~\cite{WhitmireWright1980,Carrigan2010}. The only stars in which lines of these +elements have been reported are chemically peculiar: promethium in Przybylski's star +(HD~101065), HD~965 and HR~465~\cite{Cowley2004,Fivet2007}, and short-lived actinides +in Przybylski's star~\cite{Gopka2008}, where a synthesis of the \ion{Tc}{i} +$4297$\,\AA\ line limits technetium to $\log\epsilon(\mathrm{Tc})<2.5$~\cite{Andrievsky2023} +and a re-examination of three \ion{Pm}{ii} lines finds them too blended for +promethium to be claimed~\cite{Andrievsky2023b}. +Those reports remain disputed, since the spectra of such stars are crowded with lines of +the rare earths, and natural sources have been proposed, from nuclear reactions in the +atmosphere~\cite{Goriely2007} to the decay of long-lived superheavy +nuclei~\cite{Dzuba2017}. + +The sun-like stars nearest the Sun, whose planets are the first targets of any search +for life, have not been searched for these elements. This paper does so with the +archival high-resolution spectra of the European Southern Observatory: we measure the +absorption at the lines of technetium, promethium, protactinium, plutonium, americium +and curium in the stacked spectra of nearby F8 to K1 dwarfs from four spectrographs, +compare it with the same measurement at random wavelengths of the same star, and turn +each star's sensitivity into an equivalent width, an abundance and a mass of material +mixed through the star's convective envelope. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item A search of $274$ nearby F8 to K1 dwarfs for six elements with no long-lived +isotope in $1413$ spectra from four spectrographs, with each star's limit on the +equivalent width, the abundance and the mass of each element. +\item A measurement against comparison stacks with a per-star empirical null, whose +limits follow from the measured line scores and are confirmed by injection. +\item Curves of growth of \ion{Tc}{i} and \ion{Pm}{ii} in dwarf atmospheres of +$5100$ to $6500$\,K, and the conversion of the limits into masses of fission products +and the fission power that would sustain them. +\end{enumerate} + +% ============================================================================= +\section{Data}\label{sec:data} +% ============================================================================= + +The spectra come from the ESO Science Archive and four spectrographs: +HARPS~\cite{Mayor2003}, UVES~\cite{Dekker2000}, FEROS~\cite{Kaufer1999} and +ESPRESSO~\cite{Pepe2021}. The UVES, FEROS and ESPRESSO samples are drawn from Gaia +DR3~\cite{Gaia2023}: every source with parallax above $20$\,mas, +$0.62{\raggedright\arraybackslash}p{0.62\textwidth} l} +\toprule +Ion & Air wavelengths (\AA) and weights & $gf$ \\ +\midrule +\ion{Tc}{i} & 4238.19 (0.45), 4262.27 (0.71), 4297.06 (1.00) & Palmeri et al.~\cite{Palmeri2005} \\ +\ion{Pm}{ii} & 4137.95 (0.59), 4157.86 (0.88), 4186.03 (1.00), 4297.78 (0.80), 4381.88 (0.12), 5546.08 (0.13), 5556.88 (0.11), 5561.73 (0.18), 5576.02 (0.20) & Fivet et al.~\cite{Fivet2007} \\ +\ion{Pa}{ii} & 4217.23 (0.99), 4248.08 (1.00), 4176.18 (0.29), 4291.34 (0.31), 4601.43 (0.35) & NIST arc intensity \\ +\ion{Pu}{ii} & 4105.95 (0.82), 4129.93 (0.83), 4141.20 (0.83), 4159.39 (0.84), 4178.28 (0.85), 4189.90 (0.85), 4190.06 (0.85), 4196.20 (0.86), 4229.77 (0.87), 4254.76 (0.88), 4273.34 (0.89), 4289.08 (0.89), 4337.18 (0.91), 4352.71 (0.92), 4379.91 (0.93), 4385.35 (0.93), 4393.93 (0.94), 4441.65 (0.96), 4468.54 (0.97), 4472.79 (0.97), 4493.78 (0.98), 4504.91 (0.99), 4536.15 (1.00) & NIST arc intensity \\ +\ion{Am}{ii} & 4509.45 (0.97), 4575.59 (1.00), 4324.57 (0.36), 4441.36 (0.38), 4699.70 (0.42), 4872.22 (0.45), 4188.12 (0.17), 4593.31 (0.20), 5020.96 (0.24) & NIST arc intensity \\ +\ion{Cm}{ii} & 4207.66 (1.00) & NIST arc intensity \\ +\bottomrule +\end{tabular} +\end{table} + +\emph{Measurement.} At each line we fit the $\pm8$\,\AA\ around it by a non-negative +combination of the six stacks of the same spectrograph that correlate best with the +star's, together with a signed linear continuum and signed first and second derivatives +of the fitted model, which absorb small differences of velocity and line width; the +$\pm0.25$\,\AA\ around the line is left out of the fit. A matched filter with the +spectrograph's Gaussian line profile, applied to the residual at the line, gives the +strength $z$ of any extra absorption in units of the residual's robust scatter and its +equivalent width. Stars whose best comparison stack correlates below $0.9$ are not +measured. The comparison stacks carry the star's own blends and the spectrograph's +artefacts, so the residual at a line is what the star has that stars like it lack. + +\emph{Score and null.} An element's lines are combined into +$z_c=\sum_i w_iz_i/(\sum_i w_i^2)^{1/2}$, where $w_i$ are the weights. The same +measurement at $400$ random wavelengths of the same star, each at least $1$\,\AA\ from +any line of the six elements and from the Balmer lines and $10$\,\AA\ inside the +stack's coverage, as the lines measured are, is the null: $p$ is the fraction of +$20{,}000$ combinations of null values, drawn with the same weights, that fall at or +below $z_c$, and for a single line its rank among the null values. The null carries +whatever the comparison stacks fail to model at random places of the spectrum, and one +null per star serves all six elements. A line whose scores scatter across a +spectrograph's stars by more than $1.5$ times the median scatter of the stars' nulls +lies on a stellar feature that the comparison stacks do not follow and is left out of +that spectrograph's scores. + +\emph{Limits.} A line injected into a stack is narrower than the part of the window left +out of the fit, since four standard deviations of the line profile span less than +$0.25$\,\AA\ for all four spectrographs, so it leaves the fitted model unchanged and +moves each $z_i$ in proportion to its equivalent width. A star's limit is therefore the +equivalent width of the element's strongest line, the others in proportion to their +weights, at which $z_c$ would have reached the $p=0.001$ point of the star's null, an +absorber removing a fraction of the light at its line in proportion to the stack's flux +there. For curium, whose one line gives a null of $400$ values, the limit places the +line at the most extreme of them. The limit follows from the measured line scores +without refitting, and injection checks it: lines of each element injected at the limit +into the stacks of twelve stars of each spectrograph, $288$ injections in all, are +recovered at a median $p$ of $0.0010$ for the elements with more than one line, with +$80$ per cent of them between $0.0008$ and $0.0013$. + +\emph{Abundances.} We convert a limit into an abundance $A(\mathrm{X})=\log_{10} +(N_\mathrm{X}/N_\mathrm{H})+12$ with curves of growth computed by +Korg~\cite{Wheeler2023} in MARCS model atmospheres~\cite{Gustafsson2008} of solar +metallicity, from $5100$ to $6500$\,K with $\log g$ from $4.55$ to $4.35$, with hydrogen +lines left out of the synthesis so that Balmer wings do not enter the equivalent width. +A star's temperature comes from its $G_\mathrm{BP}-G_\mathrm{RP}$ colour through the dwarf +sequence of Pecaut and Mamajek~\cite{PecautMamajek2013}. A metallicity of $\pm0.3$\,dex +changes the \ion{Tc}{i} conversion by less than $0.01$\,dex and the \ion{Pm}{ii} one by +$0.09$\,dex. To turn an abundance into a mass we mix the element through a solar +convective envelope of $0.024\,M_\odot$ with a hydrogen mass fraction of +$0.74$~\cite{Bahcall2006}, and to turn the mass into a supply rate we hold it against +decay, which for fission products of \nuc{235}{U} at $200$\,MeV a fission and +cumulative yields of $6.13$ per cent (\nuc{99}{Tc}, half-life $\sci{2.111}{5}$\,yr) and +$2.23$ per cent (\nuc{147}{Pm}, $2.62$\,yr)~\cite{JEFF31} gives a fission power. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +\emph{No element departs from chance.} Table~\ref{tab:results} gives each element's +result in each spectrograph. Of the $2262$ star-element tests, $186$ fall below $p=0.1$, +$93$ below $0.05$, $9$ below $0.01$ and $1$ below $0.001$, where $226$, $113$, $22.6$ and +$2.3$ are expected; nine or fewer below $0.01$ has a Poisson probability of $0.001$. The +$p$ values gather toward the middle of their range and thin at both ends +(Figure~\ref{fig:pvals}), so the nulls, and the limits drawn from them, are +conservative. The scatter criterion makes them so: it leaves out the lines whose scores +spread most across a spectrograph's stars, $13$ to $19$ per cent of whose scores lie +beyond three times a star's robust null scatter, and the lines it keeps lie there in +$1.3$ to $2.8$ per cent of cases where the random wavelengths of the nulls do in $1.5$ to +$3.6$ per cent. The tests are not independent, since one null serves a star's six +elements. The lowest, $p=\sci{1.0}{-4}$ for americium in the G3~V star +HD~19467 (UVES), would be met by chance in $0.23$ of such sets of tests. Each of the nine +takes most of its absorption from one line. At eight of those lines at least six other +stars of the same spectrograph absorb at least half as deeply, the mark of a stellar +blend whose strength varies among stars: \ion{Am}{ii} $4324.57$\,\AA, which carries +HD~19467's score at $z=-19$, reaches below $z=-11$ in five other UVES stars. The ninth, +plutonium in the K1~V double star HD~7895 (HARPS, $p=0.0021$), absorbs across +$4536.10$--$4536.45$\,\AA, about $0.35$\,\AA\ and several times the width of an +unresolved line. + +\begin{figure}[tp] +\centering +\begin{tikzpicture} +\begin{axis}[width=0.62\textwidth,height=0.36\textwidth,xmin=0,xmax=1,ymin=0,ymax=160,xlabel={$p$},ylabel={tests per bin},tick label style={font=\footnotesize},label style={font=\small},xtick={0,0.2,0.4,0.6,0.8,1},xticklabels={0,0.2,0.4,0.6,0.8,1}] +\addplot[ybar interval,fill=black!15,draw=black!70] coordinates {(0.00,93) (0.05,93) (0.10,86) (0.15,121) (0.20,107) (0.25,114) (0.30,115) (0.35,127) (0.40,130) (0.45,125) (0.50,138) (0.55,126) (0.60,126) (0.65,129) (0.70,120) (0.75,116) (0.80,101) (0.85,96) (0.90,94) (0.95,105) (1.00,105)}; +\addplot[dashed,black,sharp plot] coordinates {(0,113.1) (1,113.1)}; +\addplot[densely dotted,black,sharp plot] coordinates {(0,123.7) (1,123.7)}; +\addplot[densely dotted,black,sharp plot] coordinates {(0,102.5) (1,102.5)}; +\end{axis} +\end{tikzpicture} +\caption{The $p$ values of the $2262$ star-element tests in bins of $0.05$, against the +$113$ that a calibrated null puts in each bin (dashed) and its Poisson scatter +(dotted).} +\label{fig:pvals} +\end{figure} + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{4pt} +\caption{Results by element and spectrograph. $N$ is the number of stars measured, +$p_\mathrm{min}$ the lowest $p$ among them, and $W$ the median limit (m\AA) on the +equivalent width of the element's strongest line, the others in proportion to their +weights, at $p=0.001$ (for curium, beyond every value of the star's null).} +\label{tab:results} +\begin{tabular}{l rrr rrr rrr rrr} +\toprule + & \multicolumn{3}{c}{HARPS} & \multicolumn{3}{c}{UVES} & \multicolumn{3}{c}{FEROS} & \multicolumn{3}{c}{ESPRESSO} \\ +Ion & $N$ & $p_\mathrm{min}$ & $W$ & $N$ & $p_\mathrm{min}$ & $W$ & $N$ & $p_\mathrm{min}$ & $W$ & $N$ & $p_\mathrm{min}$ & $W$ \\ +\midrule +\ion{Tc}{i} & $95$ & $0.038$ & $1.59$ & $116$ & $0.029$ & $3.80$ & $80$ & $0.061$ & $5.32$ & $86$ & $0.063$ & $1.60$ \\ +\ion{Pm}{ii} & $95$ & $0.020$ & $0.94$ & $116$ & $0.029$ & $2.62$ & $80$ & $0.034$ & $3.35$ & $86$ & $0.019$ & $0.98$ \\ +\ion{Pa}{ii} & $95$ & $0.016$ & $1.43$ & $116$ & $0.003$ & $2.87$ & $80$ & $0.017$ & $4.30$ & $86$ & $0.002$ & $1.30$ \\ +\ion{Pu}{ii} & $95$ & $0.002$ & $0.42$ & $116$ & $0.005$ & $1.12$ & $80$ & $0.018$ & $1.26$ & $86$ & $0.030$ & $0.38$ \\ +\ion{Am}{ii} & $95$ & $0.002$ & $0.57$ & $116$ & $0.0001$ & $3.40$ & $80$ & $0.013$ & $1.84$ & $86$ & $0.016$ & $0.53$ \\ +\ion{Cm}{ii} & $95$ & $0.068$ & $1.72$ & $116$ & $0.017$ & $3.59$ & $80$ & $0.037$ & $5.30$ & $86$ & $0.087$ & $1.79$ \\ +\bottomrule +\end{tabular} +\end{table} + +\emph{Lines that follow the comparison stacks poorly.} Some plutonium lines lie on lines +of ionized metals, whose strength follows a star's gravity, metallicity and alpha +enhancement more closely than its comparison stacks do: \ion{Pu}{ii} $4468.54$\,\AA\ on +\ion{Ti}{ii} $4468.49$\,\AA\ and $4385.35$\,\AA\ on \ion{Fe}{ii} $4385.38$\,\AA. The +scatter criterion leaves out six \ion{Pu}{ii} lines in HARPS ($4254.76$, $4337.18$, +$4385.35$, $4393.93$, $4468.54$ and $4472.79$\,\AA), three in UVES and two each in +FEROS and ESPRESSO, and no line of the other elements. Without it, the $0.97$-weight +line at $4468.54$\,\AA\ alone gives Gaia DR3 5730371484020807808, a star moving at +$119$\,\kms, a plutonium score of $z=-17$ against its comparison stacks. + +\emph{Limits.} The median limit on \ion{Tc}{i} $4297.06$\,\AA\ is $1.6$\,m\AA\ with +HARPS and ESPRESSO and $3.8$ and $5.3$\,m\AA\ with UVES and FEROS, whose resolving +powers are $2.4$ to $3$ times lower and whose UVES stacks mostly hold one spectrum. For +\ion{Pm}{ii} $4186.03$\,\AA\ the median limits are $0.9$ and $1.0$\,m\AA\ with HARPS and +ESPRESSO, and for plutonium, whose limit combines up to $21$ lines, $0.4$\,m\AA. +Figure~\ref{fig:abund} shows each star's technetium and promethium limit as an +abundance. + +\begin{figure}[tp] +\centering +\begin{tikzpicture} +\begin{axis}[name=tc, width=0.47\textwidth,height=0.4\textwidth,xmin=5100,xmax=6500,ymin=-0.3,ymax=3.4,xlabel={$T_\mathrm{eff}$ (K)},ylabel={$A(\mathrm{Tc})$ limit},tick label style={font=\footnotesize},label style={font=\small},title={(a)},title style={font=\footnotesize},x tick label style={/pgf/number format/1000 sep={}},legend style={font=\scriptsize,at={(0.97,0.03)},anchor=south east,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend cell align=left] +\addplot[only marks,mark=o,mark size=1.0pt,black,fill opacity=0.8] coordinates {(5239,1.25) (5252,0.34) (5256,0.26) (5263,0.30) (5267,0.18) (5293,0.48) (5310,0.37) (5312,0.71) (5314,0.37) (5328,0.91) (5332,0.53) (5336,0.27) (5364,0.26) (5405,0.76) (5406,0.61) (5411,0.45) (5414,-0.00) (5415,0.22) (5419,0.15) (5425,0.14) (5433,0.33) (5434,0.28) (5439,0.26) (5442,0.10) (5446,0.46) (5464,-0.05) (5468,0.24) (5469,0.37) (5469,0.58) (5472,0.77) (5503,0.98) (5541,0.02) (5544,0.76) (5554,1.47) (5571,0.76) (5581,0.28) (5596,0.65) (5603,1.07) (5610,0.75) (5627,0.39) (5647,0.63) (5650,0.69) (5653,-0.03) (5654,0.69) (5664,0.46) (5666,0.77) (5692,0.41) (5693,0.45) (5696,1.25) (5721,0.45) (5753,0.27) (5754,0.54) (5780,0.98) (5792,0.29) (5834,-0.05) (5837,0.80) (5843,0.76) (5856,0.80) (5861,0.99) (5875,0.56) (5886,0.38) (5951,0.53) (5955,0.88) (5966,0.90) (5992,1.86) (5992,1.04) (5996,0.72) (5996,1.45) (5997,0.68) (6003,0.76) (6005,0.75) (6006,1.49) (6009,0.56) (6014,0.72) (6014,0.89) (6021,1.67) (6022,0.95) (6029,0.80) (6031,1.69) (6044,1.86) (6047,1.05) (6049,1.14) (6091,1.29) (6095,1.62) (6190,2.28) (6195,1.23) (6220,1.31) (6248,0.90) (6290,1.51) (6301,2.09) (6308,1.29) (6337,1.22) (6340,1.61) (6369,1.68) (6372,1.38)}; +\addlegendentry{HARPS} +\addplot[only marks,mark=square*,mark size=1.0pt,black,fill opacity=0.8] coordinates {(5231,0.38) (5300,0.52) (5312,1.26) (5379,1.25) (5390,0.57) (5406,1.86) (5423,1.46) (5429,0.60) (5435,1.08) (5446,0.99) (5464,1.39) (5472,1.34) (5509,0.91) (5521,1.17) (5522,1.20) (5529,1.20) (5566,1.02) (5589,1.17) (5597,1.22) (5598,1.13) (5603,1.43) (5610,1.45) (5614,0.81) (5632,0.72) (5640,1.20) (5640,0.88) (5647,1.30) (5652,1.18) (5658,0.84) (5664,1.57) (5696,1.28) (5699,1.28) (5708,0.62) (5715,1.01) (5721,1.12) (5725,1.21) (5742,1.22) (5754,1.11) (5758,1.01) (5761,1.32) (5773,1.27) (5776,1.36) (5786,1.44) (5792,1.87) (5797,1.08) (5806,0.98) (5827,1.20) (5839,1.38) (5843,0.92) (5848,1.58) (5855,0.97) (5861,1.76) (5861,1.23) (5869,1.18) (5886,0.54) (5897,1.35) (5902,1.59) (5902,1.09) (5904,1.23) (5924,1.00) (5926,1.32) (5927,2.86) (5936,1.54) (5943,1.49) (5946,0.95) (5949,1.68) (5951,0.95) (5953,1.82) (5955,1.13) (5974,1.28) (5992,1.55) (5992,1.37) (5996,1.32) (5997,1.22) (5998,0.86) (5999,1.39) (5999,1.33) (6006,1.11) (6014,1.03) (6014,1.43) (6015,1.16) (6017,1.21) (6020,1.52) (6024,1.08) (6029,1.59) (6030,1.53) (6039,1.35) (6041,1.46) (6044,1.36) (6046,1.61) (6049,1.84) (6050,1.55) (6057,1.85) (6060,1.50) (6079,1.33) (6094,1.14) (6101,1.39) (6107,1.48) (6120,1.27) (6125,1.37) (6139,2.07) (6148,1.45) (6166,1.43) (6168,1.47) (6170,1.52) (6212,1.83) (6229,1.42) (6230,1.46) (6281,1.77) (6300,1.89) (6318,1.97) (6330,1.65) (6338,2.30) (6340,1.98) (6364,1.54) (6381,2.03)}; +\addlegendentry{UVES} +\addplot[only marks,mark=triangle*,mark size=1.0pt,black!55,fill opacity=0.8] coordinates {(5291,1.33) (5300,0.65) (5310,1.12) (5332,1.11) (5395,1.02) (5411,1.67) (5419,1.59) (5425,1.07) (5430,1.42) (5432,0.76) (5472,1.40) (5501,1.15) (5537,1.01) (5566,0.90) (5575,0.91) (5589,1.15) (5597,0.82) (5605,1.28) (5627,1.19) (5629,0.97) (5632,0.85) (5640,0.90) (5652,1.20) (5657,0.68) (5658,0.89) (5666,1.03) (5671,1.25) (5673,1.54) (5690,1.78) (5693,0.84) (5699,1.37) (5742,1.77) (5745,1.31) (5758,1.15) (5761,1.40) (5776,1.35) (5778,1.06) (5792,1.14) (5838,1.73) (5839,1.55) (5843,1.05) (5861,1.42) (5873,1.99) (5897,1.20) (5904,1.21) (5941,1.34) (5948,1.54) (5951,1.52) (5987,1.48) (5995,1.48) (5998,1.21) (5999,1.49) (6005,1.44) (6006,2.12) (6015,2.60) (6018,1.42) (6020,2.50) (6029,1.97) (6029,1.55) (6032,2.04) (6039,1.70) (6041,1.68) (6045,1.24) (6059,2.04) (6103,1.54) (6145,2.35) (6195,2.31) (6212,2.71) (6220,1.50) (6229,1.47) (6230,1.53) (6290,1.41) (6307,2.42) (6317,2.29) (6318,1.84) (6318,3.20) (6337,1.82) (6338,2.22) (6340,1.70) (6369,1.75)}; +\addlegendentry{FEROS} +\addplot[only marks,mark=diamond*,mark size=1.0pt,black!75,fill opacity=0.8] coordinates {(5231,0.34) (5239,0.69) (5274,0.15) (5286,0.65) (5291,0.61) (5299,0.46) (5300,0.12) (5328,0.78) (5336,0.28) (5390,0.02) (5395,0.38) (5405,0.01) (5406,0.29) (5408,-0.08) (5411,0.36) (5415,0.04) (5462,0.33) (5464,0.21) (5476,0.49) (5485,0.55) (5492,0.45) (5504,0.66) (5517,0.54) (5528,0.85) (5554,1.29) (5585,0.69) (5588,0.77) (5589,1.09) (5595,0.76) (5610,0.45) (5614,0.37) (5627,0.39) (5631,1.53) (5634,0.48) (5637,0.41) (5640,0.31) (5640,0.65) (5653,0.21) (5654,0.53) (5656,0.97) (5664,0.98) (5664,0.69) (5664,0.54) (5671,0.39) (5675,0.76) (5676,0.19) (5699,0.70) (5708,0.70) (5708,0.90) (5736,0.42) (5739,0.60) (5752,0.55) (5754,0.45) (5758,0.78) (5766,0.95) (5781,0.51) (5793,0.63) (5817,0.64) (5823,1.13) (5842,0.22) (5861,1.22) (5867,1.38) (5894,0.97) (5902,0.47) (5922,1.16) (5951,0.73) (5951,0.75) (5991,0.89) (5992,0.90) (5993,1.02) (5995,1.21) (5998,0.80) (5998,0.80) (5999,0.56) (6011,1.23) (6014,0.59) (6015,3.50) (6017,1.11) (6021,0.73) (6024,1.23) (6050,1.45) (6051,0.69) (6059,0.93) (6145,1.37) (6316,1.83) (6335,1.60)}; +\addlegendentry{ESPRESSO} +\addplot[densely dotted,black!45,forget plot] coordinates {(5100,-0.26) (5200,-0.13) (5300,-0.01) (5400,0.12) (5500,0.25) (5600,0.37) (5700,0.49) (5800,0.61) (5900,0.73) (6000,0.84) (6100,0.94) (6200,1.05) (6300,1.15) (6400,1.25) (6500,1.35)}; +\end{axis} +\begin{axis}[at={(tc.east)},anchor=west,xshift=1.6cm, width=0.47\textwidth,height=0.4\textwidth,xmin=5100,xmax=6500,ymin=-1.7,ymax=1.1,xlabel={$T_\mathrm{eff}$ (K)},ylabel={$A(\mathrm{Pm})$ limit},tick label style={font=\footnotesize},label style={font=\small},title={(b)},title style={font=\footnotesize},x tick label style={/pgf/number format/1000 sep={}},legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend cell align=left] +\addplot[only marks,mark=o,mark size=1.0pt,black,fill opacity=0.8] coordinates {(5239,0.12) (5252,-0.65) (5256,-0.70) (5263,-0.73) (5267,-0.95) (5293,-0.48) (5310,-0.76) (5312,-0.30) (5314,-0.53) (5328,-0.39) (5332,-0.59) (5336,-0.32) (5364,-0.64) (5405,-0.56) (5406,-0.31) (5411,-0.66) (5414,-1.17) (5415,-0.95) (5419,-0.97) (5425,-1.08) (5433,-0.83) (5434,-0.47) (5439,-0.98) (5442,-0.94) (5446,-0.94) (5464,-1.05) (5468,-1.00) (5469,-0.89) (5469,-0.68) (5472,-0.47) (5503,-0.52) (5541,-0.82) (5544,-0.53) (5554,0.00) (5571,-0.77) (5581,-0.96) (5596,-0.68) (5603,-0.28) (5610,-0.54) (5627,-0.98) (5647,-0.71) (5650,-0.84) (5653,-0.88) (5654,-0.79) (5664,-0.55) (5666,-0.57) (5692,-1.52) (5693,-0.75) (5696,-0.15) (5721,-0.87) (5753,-1.06) (5754,-0.74) (5780,-0.82) (5792,-0.78) (5834,-1.16) (5837,-0.80) (5843,-1.06) (5856,-1.09) (5861,-0.44) (5875,-1.14) (5886,-1.20) (5951,-1.29) (5955,-1.00) (5966,-0.87) (5992,0.11) (5992,-0.91) (5996,-1.36) (5996,-0.43) (5997,-0.92) (6003,-0.92) (6005,-0.87) (6006,-0.47) (6009,-1.07) (6014,-0.89) (6014,-0.78) (6021,-0.33) (6022,-0.90) (6029,-1.16) (6031,-0.27) (6044,-0.21) (6047,-0.74) (6049,-0.91) (6091,-0.79) (6095,-0.36) (6190,0.14) (6195,-0.86) (6220,-0.86) (6248,-0.95) (6290,-0.50) (6301,-0.09) (6308,-0.70) (6337,-1.14) (6340,-0.36) (6369,-0.68) (6372,-0.69)}; +\addlegendentry{HARPS} +\addplot[only marks,mark=square*,mark size=1.0pt,black,fill opacity=0.8] coordinates {(5231,-0.48) (5300,-0.18) (5312,0.05) (5379,-0.03) (5390,-0.69) (5406,0.68) (5423,-0.03) (5429,0.10) (5435,0.09) (5446,-0.42) (5464,-0.42) (5472,0.54) (5509,-0.31) (5521,-0.02) (5522,-0.05) (5529,-0.10) (5566,-0.55) (5589,-0.10) (5597,-0.60) (5598,-0.12) (5603,0.05) (5610,-0.08) (5614,-0.48) (5632,-0.45) (5640,-0.04) (5640,-0.32) (5647,-0.20) (5652,-0.49) (5658,-0.53) (5664,0.23) (5696,-0.10) (5699,-0.31) (5708,-0.57) (5715,-0.48) (5721,-0.35) (5725,-0.06) (5742,-0.43) (5754,-0.44) (5758,-0.11) (5761,-0.25) (5773,-0.42) (5776,-0.23) (5786,-0.25) (5792,0.38) (5797,-0.57) (5806,-0.82) (5827,-0.10) (5839,-0.43) (5843,-0.58) (5848,-0.16) (5855,-0.35) (5861,0.04) (5861,-0.04) (5869,-0.72) (5886,-0.64) (5897,-0.49) (5902,-0.04) (5902,-0.70) (5904,-0.47) (5924,-0.56) (5926,-0.16) (5927,0.41) (5936,-0.21) (5943,-0.11) (5946,-0.23) (5949,-0.17) (5951,-0.63) (5953,0.16) (5955,-0.83) (5974,-0.83) (5992,-0.28) (5992,-0.50) (5996,-0.50) (5997,-0.57) (5998,-0.47) (5999,-0.48) (5999,-0.56) (6006,-0.59) (6014,-0.61) (6014,-0.28) (6015,-0.62) (6017,-0.69) (6020,-0.41) (6024,-0.33) (6029,-0.26) (6030,-0.31) (6039,-0.38) (6041,-0.46) (6044,-0.33) (6046,-0.07) (6049,0.06) (6050,-0.28) (6057,0.00) (6060,-0.28) (6079,-0.65) (6094,-0.67) (6101,-0.54) (6107,-0.25) (6120,-0.53) (6125,-0.50) (6139,0.35) (6148,-0.51) (6166,-0.91) (6168,-0.39) (6170,-0.22) (6212,-0.11) (6229,-0.82) (6230,-0.43) (6281,-0.22) (6300,-0.19) (6318,-0.18) (6330,-0.17) (6338,0.44) (6340,0.06) (6364,-0.39) (6381,-0.21)}; +\addlegendentry{UVES} +\addplot[only marks,mark=triangle*,mark size=1.0pt,black!55,fill opacity=0.8] coordinates {(5291,0.14) (5300,-0.38) (5310,-0.04) (5332,-0.11) (5395,-0.01) (5411,0.28) (5419,0.19) (5425,-0.02) (5430,0.12) (5432,-0.18) (5472,0.58) (5501,-0.11) (5537,-0.01) (5566,-0.55) (5575,-0.34) (5589,-0.11) (5597,-0.55) (5605,0.08) (5627,-0.25) (5629,-0.49) (5632,-0.45) (5640,-0.62) (5652,-0.35) (5657,-0.47) (5658,-0.32) (5666,-0.45) (5671,-0.29) (5673,0.06) (5690,0.21) (5693,-0.30) (5699,-0.39) (5742,-0.03) (5745,-0.16) (5758,-0.36) (5761,-0.31) (5776,-0.25) (5778,-0.44) (5792,-0.58) (5838,-0.01) (5839,-0.17) (5843,-0.51) (5861,-0.02) (5873,0.17) (5897,-0.85) (5904,-0.18) (5941,-0.56) (5948,-0.40) (5951,-0.29) (5987,-0.22) (5995,-0.16) (5998,-0.36) (5999,-0.20) (6005,-0.05) (6006,0.24) (6015,0.57) (6018,-0.46) (6020,0.52) (6029,0.44) (6029,-0.13) (6032,0.05) (6039,-0.14) (6041,-0.33) (6045,-0.54) (6059,0.23) (6103,-0.38) (6145,0.24) (6195,0.07) (6212,0.36) (6220,-0.62) (6229,-0.72) (6230,-0.42) (6290,-0.45) (6307,0.50) (6317,0.20) (6318,-0.30) (6318,0.70) (6337,-0.16) (6338,0.39) (6340,-0.20) (6369,-0.35)}; +\addlegendentry{FEROS} +\addplot[only marks,mark=diamond*,mark size=1.0pt,black!75,fill opacity=0.8] coordinates {(5231,-0.56) (5239,-0.38) (5274,-0.76) (5286,-0.33) (5291,-0.42) (5299,-0.54) (5300,-0.91) (5328,-0.35) (5336,-0.74) (5390,-0.93) (5395,-0.51) (5405,-1.31) (5406,-0.99) (5408,-1.04) (5411,-0.65) (5415,-1.10) (5462,-0.84) (5464,-0.92) (5476,-0.74) (5485,-0.74) (5492,-0.93) (5504,-0.81) (5517,-0.74) (5528,-0.45) (5554,-0.17) (5585,-0.80) (5588,-0.38) (5589,-0.39) (5595,-0.63) (5610,-0.66) (5614,-0.93) (5627,-1.04) (5631,0.08) (5634,-1.18) (5637,-0.98) (5640,-1.17) (5640,-0.47) (5653,-0.91) (5654,-1.05) (5656,-0.62) (5664,-0.48) (5664,-0.91) (5664,-0.72) (5671,-1.10) (5675,-0.90) (5676,-0.88) (5699,-1.01) (5708,-0.82) (5708,-0.65) (5736,-0.95) (5739,-0.68) (5752,-0.68) (5754,-0.86) (5758,-0.64) (5766,-0.59) (5781,-0.77) (5793,-1.04) (5817,-0.80) (5823,-0.54) (5842,-0.98) (5861,-0.57) (5867,-0.33) (5894,-0.92) (5902,-1.26) (5922,-0.71) (5951,-1.07) (5951,-1.10) (5991,-0.89) (5992,-0.83) (5993,-0.56) (5995,-0.66) (5998,-0.99) (5998,-0.87) (5999,-1.21) (6011,-0.38) (6014,-0.98) (6015,0.94) (6017,-0.80) (6021,-0.95) (6024,-0.65) (6050,-0.70) (6051,-1.18) (6059,-0.76) (6145,-0.68) (6316,-0.32) (6335,-0.44)}; +\addlegendentry{ESPRESSO} +\addplot[densely dotted,black!45,forget plot] coordinates {(5100,-0.86) (5200,-0.84) (5300,-0.83) (5400,-0.81) (5500,-0.80) (5600,-0.79) (5700,-0.77) (5800,-0.76) (5900,-0.74) (6000,-0.72) (6100,-0.71) (6200,-0.69) (6300,-0.66) (6400,-0.64) (6500,-0.61)}; +\end{axis} +\end{tikzpicture} +\caption{Each star's abundance limit against its temperature: (a)~technetium from \ion{Tc}{i} $4297.06$\,\AA\ and (b)~promethium from \ion{Pm}{ii} $4186.03$\,\AA. The dotted curves mark the abundance at which the line's equivalent width is $1$\,m\AA. The curves of growth run from $A=-1$ to $3.5$; one FEROS technetium limit lies above the top of that grid and is drawn at it.} +\label{fig:abund} +\end{figure} + +\emph{Abundances, masses and power.} \ion{Tc}{i} is a minority species whose ionization +rises steeply with temperature, so $1$\,m\AA\ in the $4297$\,\AA\ line corresponds to +$A(\mathrm{Tc})=-0.13$ at $5200$\,K, $0.61$ at $5800$\,K and $1.25$ at $6400$\,K, while +the same equivalent width in \ion{Pm}{ii} $4186$\,\AA, the dominant ion, corresponds to +$A(\mathrm{Pm})$ between $-0.84$ and $-0.64$ across that range. The median limits are +$A(\mathrm{Tc})<0.72$ and $0.66$ with HARPS and ESPRESSO and $1.32$ and $1.42$ with UVES +and FEROS, and the deepest is $-0.08$; for promethium they are $-0.78$, $-0.76$, +$-0.31$ and $-0.18$, and the deepest $-1.52$. These are near the solar abundance of +thorium, $A(\mathrm{Th})=0.02$~\cite{Asplund2009}, and two dex below the technetium limit +in Przybylski's star~\cite{Andrievsky2023}. For the HARPS and ESPRESSO stars of +$5600$ to $6000$\,K, the median limits $A(\mathrm{Tc})<0.69$ and $A(\mathrm{Pm})<-0.86$ +correspond to $\sci{1.7}{19}$\,kg of \nuc{99}{Tc} and $\sci{7}{17}$\,kg of +\nuc{147}{Pm} in a solar convective envelope. Holding them there against decay takes +$\sci{5.6}{13}$\,kg of technetium or $\sci{1.9}{17}$\,kg of promethium a year, the +products of fissioning \nuc{235}{U} at $\sci{5.6}{21}$\,W or $\sci{3.5}{25}$\,W, which +is $0.09$ of the Sun's luminosity. Put as fuel rather than power, $\sci{1.7}{19}$\,kg of +\nuc{99}{Tc} at a cumulative yield of $6.1$ per cent is the product of $\sci{1.7}{45}$ +fissions, $\sci{6.6}{20}$\,kg of \nuc{235}{U}, where the Earth's mantle and crust hold +about $\sci{8}{16}$\,kg of uranium of all isotopes~\cite{McDonough1995} and +$\sci{6}{14}$\,kg of \nuc{235}{U}: the limit lies three to six orders of magnitude above +what fissioning a planet's uranium could put into its star, and the \ion{Pm}{ii} limit, +set by a $2.6$\,yr half-life, correspondingly higher as a rate. + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +\emph{Technosignatures in stellar composition.} The proposals of Drake and +Shklovskii~\cite{ShklovskiiSagan1966} and of Whitmire and Wright~\cite{WhitmireWright1980} +are reviewed with other signatures of interstellar archaeology by +Carrigan~\cite{Carrigan2010}; we find no earlier search of ordinary dwarfs for the +elements they name. + +\emph{Short-lived elements in stars.} Technetium is the signature of the third dredge-up +in asymptotic giant branch stars, and its presence or absence separates S stars that +make their own s-process elements from those that received them from a +companion~\cite{Merrill1952,VanEckJorissen1999}. Promethium and the short-lived actinides +have been reported only in the chemically peculiar Ap stars Przybylski's star, HD~965 and +HR~465~\cite{Cowley2004,Fivet2007,Gopka2008}, whose strong magnetic fields and +stratified atmospheres concentrate the rare earths in the layers that form their spectra; +in Przybylski's star itself technetium is limited to +$\log\epsilon(\mathrm{Tc})<2.5$~\cite{Andrievsky2023}. + +\emph{Surveys of nearby stars.} The archival spectra used here were taken to measure +radial velocities and abundances, and the abundance surveys built on them report the +elements whose lines are strong in sun-like stars; none reports technetium, promethium +or the actinides beyond thorium. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No line of technetium, promethium, protactinium, plutonium, americium or curium is found +in the archival HARPS, UVES, FEROS and ESPRESSO spectra of $274$ sun-like stars within +$50$\,pc. Every low $p$ has its absorption from a stellar blend that other stars share or +from a feature wider than an unresolved line, and the limits reach abundances near the +Sun's thorium abundance in the best spectra. + +The limits apply to atoms in the photosphere at the epochs of the archival spectra, and +the conversion into masses assumes the element mixed through a convective envelope as +massive as the Sun's; a star's own envelope, thinner in F stars and thicker in K stars, scales the +mass in proportion. In a sun-like star the envelope's mass turns small abundances into +masses that no planetary industry reaches: the technetium limit is the waste of several +thousand Earths' worth of uranium, so what the search excludes is disposal on the scale +of a civilization that mines its whole planetary system, or that fissions its star's own +uranium, sustained for longer than the products' half-lives. That is the dilution +Whitmire and Wright foresaw, and the stars they preferred, A5 to F2 dwarfs whose thin +envelopes dilute a thousand times less, are not in the sample, nor are the Ap stars in +which diffusion concentrates heavy elements in the photosphere; both have archival +spectra from the same spectrographs, and the same measurement applied to them is where +a planetary-scale signal could be found. + +\section*{Acknowledgements} + +This work is based on observations collected at the European Southern Observatory and +obtained from the ESO Science Archive Facility. It has made use of data from the +European Space Agency mission Gaia, processed by the Gaia Data Processing and Analysis +Consortium (DPAC), funded by national institutions, in particular those participating +in the Gaia Multilateral Agreement. It uses the NIST Atomic Spectra +Database~\cite{NIST}, the spectral synthesis code Korg~\cite{Wheeler2023} with MARCS +model atmospheres~\cite{Gustafsson2008}, and the software Astropy~\cite{Astropy2022}, +NumPy~\cite{Harris2020} and SciPy~\cite{Virtanen2020}. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Merrill1952} +P.~W. Merrill, Spectroscopic observations of stars of class S, \emph{Astrophys. J.} +\textbf{116}, 21 (1952). + +\bibitem{ShklovskiiSagan1966} +I.~S. Shklovskii and C.~Sagan, \emph{Intelligent Life in the Universe} (Holden-Day, San +Francisco, 1966). + +\bibitem{WhitmireWright1980} +D.~P. Whitmire and D.~P. Wright, Nuclear waste spectrum as evidence of technological +extraterrestrial civilizations, \emph{Icarus} \textbf{42}, 149 (1980). + +\bibitem{Carrigan2010} +R.~A. Carrigan, Starry messages: searching for signatures of interstellar archaeology, +arXiv:1001.5455 (2010). + +\bibitem{Cowley2004} +C.~R. Cowley, W.~P. Bidelman, S.~Hubrig, G.~Mathys and D.~J. Bord, On the possible +presence of promethium in the spectra of HD~101065 (Przybylski's star) and HD~965, +\emph{Astron. Astrophys.} \textbf{419}, 1087 (2004). + +\bibitem{Fivet2007} +V.~Fivet, P.~Quinet, \'E.~Bi\'emont, A.~Jorissen, A.~V. Yushchenko and S.~Van~Eck, +Transition probabilities in singly ionized promethium and the identification of +\ion{Pm}{ii} lines in Przybylski's star and HR~465, \emph{Mon. Not. R. Astron. Soc.} +\textbf{380}, 771 (2007). + +\bibitem{Gopka2008} +V.~F. Gopka, A.~V. Yushchenko, V.~A. Yushchenko, I.~V. Panov and Ch.~Kim, +Identification of absorption lines of short half-life actinides in the spectrum of +Przybylski's star (HD~101065), \emph{Kinemat. Phys. Celest. Bodies} \textbf{24}, 89 +(2008). + +\bibitem{Andrievsky2023} +S.~M. Andrievsky, S.~A. Korotin and K.~Werner, Abundance of radioactive technetium in +Przybylski's star revisited, \emph{Astron. Nachr.} \textbf{344}, e230077 (2023). + +\bibitem{Andrievsky2023b} +S.~M. Andrievsky, S.~A. Korotin, K.~Werner and V.~V. Kovtyukh, An enigma of +Przybylski's star: is there promethium on its surface?, \emph{Astron. Nachr.} +\textbf{344}, e230056 (2023). + +\bibitem{McDonough1995} +W.~F. McDonough and S.-s. Sun, The composition of the Earth, \emph{Chem. Geol.} +\textbf{120}, 223 (1995). + +\bibitem{Goriely2007} +S.~Goriely, Nucleosynthesis by accelerated particles to account for the surface +composition of HD~101065, \emph{Astron. Astrophys.} \textbf{466}, 619 (2007). + +\bibitem{Dzuba2017} +V.~A. Dzuba, V.~V. Flambaum and J.~K. Webb, Isotope shift and search for metastable +superheavy elements in astrophysical data, \emph{Phys. Rev. A} \textbf{95}, 062515 +(2017). + +\bibitem{VanEckJorissen1999} +S.~Van~Eck and A.~Jorissen, The Henize sample of S stars. I. The technetium dichotomy, +\emph{Astron. Astrophys.} \textbf{345}, 127 (1999). + +\bibitem{Gaia2023} +Gaia Collaboration, A.~Vallenari, A.~G.~A. Brown, et al., Gaia Data Release 3: summary +of the content and survey properties, \emph{Astron. Astrophys.} \textbf{674}, A1 (2023). + +\bibitem{Katz2023} +D.~Katz, P.~Sartoretti, A.~Guerrier, et al., Gaia Data Release 3: properties and +validation of the radial velocities, \emph{Astron. Astrophys.} \textbf{674}, A5 (2023). + +\bibitem{PecautMamajek2013} +M.~J. Pecaut and E.~E. Mamajek, Intrinsic colors, temperatures, and bolometric +corrections of pre-main-sequence stars, \emph{Astrophys. J. Suppl.} \textbf{208}, 9 +(2013). + +\bibitem{Mayor2003} +M.~Mayor, F.~Pepe, D.~Queloz, et al., Setting new standards with HARPS, \emph{The +Messenger} \textbf{114}, 20 (2003). + +\bibitem{Dekker2000} +H.~Dekker, S.~D'Odorico, A.~Kaufer, B.~Delabre and H.~Kotzlowski, Design, construction, +and performance of UVES, the echelle spectrograph for the UT2 Kueyen Telescope at the +ESO Paranal Observatory, \emph{Proc. SPIE} \textbf{4008}, 534 (2000). + +\bibitem{Kaufer1999} +A.~Kaufer, O.~Stahl, S.~Tubbesing, et al., Commissioning FEROS, the new high-resolution +spectrograph at La Silla, \emph{The Messenger} \textbf{95}, 8 (1999). + +\bibitem{Pepe2021} +F.~Pepe, S.~Cristiani, R.~Rebolo, et al., ESPRESSO at VLT: on-sky performance and first +results, \emph{Astron. Astrophys.} \textbf{645}, A96 (2021). + +\bibitem{Palmeri2005} +P.~Palmeri, C.~Froese Fischer, J.-F. Wyart and M.~R. Godefroid, Oscillator strength +calculations in neutral technetium, \emph{Mon. Not. R. Astron. Soc.} \textbf{363}, 452 +(2005). + +\bibitem{NIST} +A.~Kramida, Yu.~Ralchenko, J.~Reader and NIST ASD Team, \emph{NIST Atomic Spectra +Database} (National Institute of Standards and Technology, Gaithersburg, 2024). + +\bibitem{Wheeler2023} +A.~J. Wheeler, M.~W. Abruzzo, A.~R. Casey and M.~K. Ness, Korg: a modern 1D LTE spectral +synthesis package, \emph{Astron. J.} \textbf{165}, 68 (2023). + +\bibitem{Gustafsson2008} +B.~Gustafsson, B.~Edvardsson, K.~Eriksson, U.~G. J{\o}rgensen, {\AA}.~Nordlund and +B.~Plez, A grid of MARCS model atmospheres for late-type stars. I. Methods and general +properties, \emph{Astron. Astrophys.} \textbf{486}, 951 (2008). + +\bibitem{Asplund2009} +M.~Asplund, N.~Grevesse, A.~J. Sauval and P.~Scott, The chemical composition of the +Sun, \emph{Annu. Rev. Astron. Astrophys.} \textbf{47}, 481 (2009). + +\bibitem{Bahcall2006} +J.~N. Bahcall, A.~M. Serenelli and S.~Basu, 10,000 standard solar models: a Monte Carlo +simulation, \emph{Astrophys. J. Suppl.} \textbf{165}, 400 (2006). + +\bibitem{JEFF31} +A.~Koning, R.~Forrest, M.~Kellett, R.~Mills, H.~Henriksson and Y.~Rugama, \emph{The +JEFF-3.1 Nuclear Data Library}, JEFF Report 21 (OECD Nuclear Energy Agency, Paris, +2006). + +\bibitem{Astropy2022} +Astropy Collaboration, A.~M. Price-Whelan, P.~L. Lim, et al., The Astropy Project: +sustaining and growing a community-oriented open-source project and the latest major +release (v5.0) of the core package, \emph{Astrophys. J.} \textbf{935}, 167 (2022). + +\bibitem{Harris2020} +C.~R. Harris, K.~J. Millman, S.~J. van~der Walt, et al., Array programming with NumPy, +\emph{Nature} \textbf{585}, 357 (2020). + +\bibitem{Virtanen2020} +P.~Virtanen, R.~Gommers, T.~E. Oliphant, et al., SciPy 1.0: fundamental algorithms for +scientific computing in Python, \emph{Nat. Methods} \textbf{17}, 261 (2020). + +\end{thebibliography} + +\end{document} diff --git a/papers/sky_fibres/data/skyfibre_counterparts.json b/papers/sky_fibres/data/skyfibre_counterparts.json new file mode 100644 index 0000000000000000000000000000000000000000..c0edd92c3b754b08f4de0b4d93e11ca2bb46a3b2 --- /dev/null +++ b/papers/sky_fibres/data/skyfibre_counterparts.json @@ -0,0 +1 @@ +{"0.11556 +26.99616": {"n_box": 35, "off": [], "on": [{"mag_r": "23.462051", "sep": 0.88, "type": "PSF"}]}, "0.13034 +30.18861": {"n_box": 33, "off": [], "on": []}, "0.78364 +4.26195": {"n_box": 35, "off": [], "on": [{"mag_r": "22.90576", "sep": 1.04, "type": "REX"}]}, "0.97503 +4.52220": {"n_box": 65, "off": [], "on": [{"mag_r": "23.089634", "sep": 0.97, "type": "DEV"}]}, "1.03332 +31.70070": {"n_box": 36, "off": [], "on": []}, "1.23621 -2.46691": {"n_box": 53, "off": [], "on": []}, "1.40069 +33.53840": {"n_box": 33, "off": [], "on": []}, "1.64847 +1.99164": {"n_box": 50, "off": [], "on": []}, "1.74952 +25.03083": {"n_box": 24, "off": [], "on": []}, "1.90005 -9.95085": {"n_box": 31, "off": [], "on": []}, "10.21664 +17.96415": {"n_box": 26, "off": [], "on": [{"mag_r": "23.583832", "sep": 1.09, "type": "PSF"}]}, "10.26641 -5.28488": {"n_box": 35, "off": [], "on": []}, "10.33064 +6.25421": {"n_box": 26, "off": [], "on": [{"mag_r": "23.254492", "sep": 0.75, "type": "PSF"}]}, "10.71994 +32.42963": {"n_box": 18, "off": [], "on": []}, "10.80633 +2.73871": {"n_box": 54, "off": [], "on": []}, "11.10796 +1.37587": {"n_box": 39, "off": [], "on": [{"mag_r": "23.880274", "sep": 0.31, "type": "PSF"}]}, "11.54328 +6.28194": {"n_box": 26, "off": [], "on": [{"mag_r": "23.184717", "sep": 0.5, "type": "PSF"}]}, "11.76888 +3.34261": {"n_box": 64, "off": [], "on": []}, "11.89216 +17.66877": {"n_box": 28, "off": [], "on": []}, "11.92529 +9.82940": {"n_box": 20, "off": [], "on": []}, "110.23267 +40.88404": {"n_box": 27, "off": [], "on": []}, "111.84188 +38.80823": {"n_box": 33, "off": [], "on": []}, "112.00855 +39.90241": {"n_box": 26, "off": [], "on": []}, "112.69969 +33.47486": {"n_box": 25, "off": [], "on": [{"mag_r": "22.633846", "sep": 1.27, "type": "REX"}]}, "112.79214 +46.24766": {"n_box": 23, "off": [], "on": []}, "113.38742 +45.21083": {"n_box": 22, "off": [], "on": []}, "114.18336 +44.25902": {"n_box": 14, "off": [], "on": []}, "114.70874 +44.55843": {"n_box": 15, "off": [], "on": []}, "114.79184 +43.25530": {"n_box": 29, "off": [], "on": []}, "114.82233 +43.80914": {"n_box": 18, "off": [], "on": []}, "114.88341 +46.11597": {"n_box": 18, "off": [], "on": []}, "114.91655 +20.29756": {"n_box": 40, "off": [], "on": []}, "115.37749 +43.42307": {"n_box": 20, "off": [], "on": []}, "115.86687 +40.29966": {"n_box": 24, "off": [], "on": []}, "116.16696 +22.37768": {"n_box": 55, "off": [], "on": [{"mag_r": "23.149996", "sep": 0.6, "type": "PSF"}]}, "116.21993 +46.10160": {"n_box": 20, "off": [], "on": []}, "116.33888 +19.18446": {"n_box": 45, "off": [], "on": [{"mag_r": "23.048359", "sep": 1.08, "type": "PSF"}]}, "116.52742 +15.83810": {"n_box": 36, "off": [], "on": [{"mag_r": "23.454529", "sep": 0.73, "type": "PSF"}]}, "116.55024 +20.88144": {"n_box": 42, "off": [], "on": [{"mag_r": "24.737158", "sep": 0.97, "type": "PSF"}]}, "116.62536 +16.13501": {"n_box": 34, "off": [], "on": []}, "116.64000 +36.24219": {"n_box": 22, "off": [], "on": [{"mag_r": "23.011782", "sep": 0.44, "type": "REX"}]}, "116.66516 +40.07296": {"n_box": 24, "off": [], "on": []}, "116.91257 +43.10764": {"n_box": 23, "off": [], "on": [{"mag_r": "22.856728", "sep": 1.14, "type": "PSF"}]}, "117.17558 +45.20116": {"n_box": 22, "off": [], "on": []}, "117.25225 +43.60605": {"n_box": 17, "off": [], "on": []}, "117.31956 +46.74779": {"n_box": 14, "off": [], "on": []}, "117.53227 +20.14447": {"n_box": 42, "off": [], "on": []}, "117.58458 +44.66792": {"n_box": 25, "off": [], "on": []}, "117.85089 +45.03357": {"n_box": 18, "off": [], "on": []}, "118.12776 +36.00522": {"n_box": 30, "off": [], "on": [{"mag_r": "25.762957", "sep": 0.69, "type": "PSF"}]}, "118.40145 +45.23394": {"n_box": 40, "off": [], "on": []}, "118.48821 +42.70888": {"n_box": 29, "off": [], "on": [{"mag_r": "23.72407", "sep": 1.33, "type": "REX"}]}, "118.48917 +30.56073": {"n_box": 23, "off": [], "on": []}, "118.68431 +34.70209": {"n_box": 19, "off": [], "on": [{"mag_r": "22.863188", "sep": 0.27, "type": "REX"}]}, "118.93296 +24.72713": {"n_box": 25, "off": [], "on": []}, "119.09738 +42.69055": {"n_box": 19, "off": [], "on": [{"mag_r": "22.91838", "sep": 0.86, "type": "REX"}]}, "119.10429 +41.64053": {"n_box": 17, "off": [], "on": []}, "119.24064 +27.32944": {"n_box": 45, "off": [], "on": [{"mag_r": "24.170588", "sep": 1.01, "type": "PSF"}]}, "119.50531 +23.27646": {"n_box": 37, "off": [], "on": []}, "119.69232 +36.41551": {"n_box": 21, "off": [], "on": []}, "119.72991 +34.72672": {"n_box": 26, "off": [], "on": []}, "12.00438 +14.31752": {"n_box": 15, "off": [], "on": [{"mag_r": "21.977432", "sep": 0.71, "type": "REX"}]}, "12.87990 -2.10409": {"n_box": 49, "off": [], "on": []}, "120.05256 +22.39289": {"n_box": 37, "off": [], "on": []}, "120.10211 +45.53838": {"n_box": 18, "off": [], "on": []}, "120.11554 +53.96607": {"n_box": 27, "off": [], "on": []}, "120.50217 +44.41231": {"n_box": 23, "off": [], "on": []}, "121.06753 +23.12181": {"n_box": 47, "off": [], "on": [{"mag_r": "23.446867", "sep": 0.53, "type": "REX"}]}, "121.25780 +25.93299": {"n_box": 34, "off": [], "on": []}, "121.33098 +43.98261": {"n_box": 21, "off": [], "on": []}, "122.36220 +34.14624": {"n_box": 36, "off": [], "on": []}, "122.48341 +24.91726": {"n_box": 38, "off": [], "on": []}, "122.52557 +49.40904": {"n_box": 21, "off": [], "on": []}, "122.63066 +29.97605": {"n_box": 29, "off": [], "on": [{"mag_r": "24.232147", "sep": 0.85, "type": "PSF"}]}, "122.66130 +53.85489": {"n_box": 25, "off": [], "on": []}, "122.80346 +51.75715": {"n_box": 35, "off": [], "on": []}, "122.94531 +26.53137": {"n_box": 46, "off": [{"mag_r": "25.106506", "sep": 1.23, "type": "PSF"}], "on": []}, "122.97216 +45.86163": {"n_box": 24, "off": [], "on": []}, "123.14909 +33.45382": {"n_box": 21, "off": [], "on": [{"mag_r": "23.134306", "sep": 0.51, "type": "REX"}]}, "123.18622 +49.43197": {"n_box": 20, "off": [], "on": []}, "123.25058 +48.77210": {"n_box": 19, "off": [], "on": [{"mag_r": "22.739285", "sep": 0.41, "type": "REX"}]}, "123.55066 +57.96154": {"n_box": 17, "off": [], "on": [{"mag_r": "23.083347", "sep": 1.21, "type": "REX"}]}, "123.73296 +44.20194": {"n_box": 25, "off": [], "on": []}, "123.76119 +25.14337": {"n_box": 48, "off": [], "on": []}, "123.94534 +51.56482": {"n_box": 26, "off": [], "on": []}, "124.10174 +55.25973": {"n_box": 23, "off": [], "on": []}, "124.13078 +45.53965": {"n_box": 29, "off": [], "on": []}, "124.19919 +20.23911": {"n_box": 30, "off": [], "on": []}, "124.27555 +22.24246": {"n_box": 43, "off": [], "on": [{"mag_r": "22.190243", "sep": 0.56, "type": "REX"}]}, "124.39737 +49.53524": {"n_box": 20, "off": [], "on": [{"mag_r": "22.823124", "sep": 1.39, "type": "EXP"}]}, "124.83407 +43.87192": {"n_box": 22, "off": [], "on": []}, "124.85967 +51.64653": {"n_box": 18, "off": [], "on": []}, "125.26739 +26.44353": {"n_box": 41, "off": [], "on": []}, "125.40785 +29.38896": {"n_box": 29, "off": [], "on": []}, "125.55858 +43.74264": {"n_box": 22, "off": [], "on": [{"mag_r": "23.914238", "sep": 1.2, "type": "PSF"}]}, "125.88200 +48.84378": {"n_box": 15, "off": [], "on": []}, "125.98138 +51.49717": {"n_box": 25, "off": [], "on": []}, "126.15625 +25.47534": {"n_box": 33, "off": [], "on": []}, "126.19857 +21.18963": {"n_box": 27, "off": [], "on": []}, "126.22851 +18.03315": {"n_box": 23, "off": [], "on": []}, "126.27654 +38.52949": {"n_box": 26, "off": [], "on": []}, "126.61986 +21.27518": {"n_box": 35, "off": [], "on": [{"mag_r": "23.705166", "sep": 0.2, "type": "PSF"}]}, "126.76888 +30.78523": {"n_box": 24, "off": [], "on": []}, "126.95898 +9.37850": {"n_box": 39, "off": [], "on": []}, "126.97556 +15.60631": {"n_box": 33, "off": [], "on": []}, "127.02745 +43.19890": {"n_box": 19, "off": [], "on": [{"mag_r": "23.339584", "sep": 0.48, "type": "REX"}]}, "127.14855 +57.12516": {"n_box": 27, "off": [], "on": []}, "127.52134 +4.73439": {"n_box": 49, "off": [], "on": [{"mag_r": "23.342274", "sep": 1.18, "type": "PSF"}]}, "127.78165 +39.59351": {"n_box": 21, "off": [], "on": []}, "127.86876 +38.32546": {"n_box": 21, "off": [], "on": []}, "128.18725 +44.75218": {"n_box": 22, "off": [], "on": [{"mag_r": "23.023169", "sep": 0.94, "type": "REX"}]}, "128.20152 +19.27608": {"n_box": 39, "off": [{"mag_r": "23.782434", "sep": 0.79, "type": "PSF"}], "on": []}, "129.02728 +22.28270": {"n_box": 23, "off": [], "on": []}, "129.71977 +26.49110": {"n_box": 34, "off": [], "on": [{"mag_r": "22.809732", "sep": 0.66, "type": "REX"}]}, "129.85255 +51.45001": {"n_box": 24, "off": [], "on": [{"mag_r": "23.319744", "sep": 0.67, "type": "PSF"}]}, "13.86497 +0.41038": {"n_box": 62, "off": [], "on": []}, "130.21333 +58.24779": {"n_box": 19, "off": [], "on": []}, "130.23445 +24.35702": {"n_box": 35, "off": [], "on": []}, "130.25428 +30.91998": {"n_box": 30, "off": [], "on": []}, "130.48768 +39.84116": {"n_box": 21, "off": [], "on": []}, "130.73589 +10.05039": {"n_box": 45, "off": [], "on": []}, "131.10351 +23.07368": {"n_box": 41, "off": [{"mag_r": "22.653341", "sep": 1.27, "type": "REX"}], "on": []}, "131.21710 +25.65671": {"n_box": 27, "off": [], "on": []}, "131.50047 +17.84613": {"n_box": 23, "off": [], "on": [{"mag_r": "24.782827", "sep": 1.32, "type": "PSF"}]}, "131.54882 +30.97705": {"n_box": 31, "off": [], "on": [{"mag_r": "24.764286", "sep": 0.72, "type": "PSF"}]}, "132.07073 +50.44043": {"n_box": 23, "off": [], "on": []}, "132.34100 +32.07264": {"n_box": 53, "off": [], "on": [{"mag_r": "23.106464", "sep": 0.47, "type": "PSF"}]}, "133.00640 +27.21546": {"n_box": 35, "off": [], "on": [{"mag_r": "22.820583", "sep": 1.26, "type": "PSF"}]}, "133.03964 +22.19486": {"n_box": 28, "off": [], "on": []}, "133.07115 +26.59947": {"n_box": 47, "off": [], "on": []}, "133.12751 +6.56444": {"n_box": 36, "off": [{"mag_r": "21.505898", "sep": 1.12, "type": "DEV"}], "on": [{"mag_r": "22.876127", "sep": 0.31, "type": "REX"}]}, "133.19740 +18.52995": {"n_box": 53, "off": [], "on": []}, "133.24688 +18.28794": {"n_box": 21, "off": [], "on": []}, "133.45181 +19.47713": {"n_box": 37, "off": [], "on": []}, "133.56877 +19.64704": {"n_box": 43, "off": [], "on": []}, "133.60880 +8.86321": {"n_box": 73, "off": [{"mag_r": "22.671442", "sep": 0.92, "type": "REX"}], "on": []}, "133.71612 +25.87629": {"n_box": 42, "off": [], "on": []}, "133.80214 +60.17188": {"n_box": 19, "off": [], "on": []}, "134.07495 +48.20114": {"n_box": 28, "off": [], "on": []}, "134.11307 +18.34660": {"n_box": 44, "off": [], "on": [{"mag_r": "22.785845", "sep": 0.35, "type": "REX"}]}, "134.12558 +33.87077": {"n_box": 24, "off": [], "on": []}, "134.30057 +29.35687": {"n_box": 16, "off": [], "on": []}, "134.61280 +43.07308": {"n_box": 23, "off": [], "on": []}, "134.65767 +27.68445": {"n_box": 39, "off": [], "on": []}, "134.74246 +48.64424": {"n_box": 26, "off": [], "on": []}, "134.78354 +33.85931": {"n_box": 18, "off": [], "on": []}, "134.81997 +47.93541": {"n_box": 32, "off": [], "on": []}, "134.97846 +31.52209": {"n_box": 48, "off": [{"mag_r": "22.576445", "sep": 1.28, "type": "DEV"}], "on": []}, "135.39517 +25.59894": {"n_box": 47, "off": [], "on": []}, "135.47510 +21.66969": {"n_box": 85, "off": [], "on": [{"mag_r": "nan", "sep": 0.89, "type": "PSF"}]}, "135.84023 +9.84707": {"n_box": 26, "off": [], "on": []}, "136.05380 +22.37501": {"n_box": 37, "off": [], "on": []}, "136.12966 +62.74410": {"n_box": 11, "off": [], "on": []}, "136.41637 +16.86209": {"n_box": 33, "off": [], "on": [{"mag_r": "24.597227", "sep": 0.67, "type": "PSF"}]}, "137.52926 +53.62118": {"n_box": 24, "off": [], "on": []}, "138.00488 +48.77073": {"n_box": 20, "off": [], "on": []}, "138.17979 +35.29778": {"n_box": 21, "off": [], "on": []}, "138.21429 +29.25411": {"n_box": 26, "off": [], "on": []}, "138.35170 +37.83216": {"n_box": 24, "off": [], "on": [{"mag_r": "22.83718", "sep": 1.34, "type": "REX"}]}, "138.41133 +30.74975": {"n_box": 18, "off": [{"mag_r": "20.797947", "sep": 1.31, "type": "DEV"}], "on": []}, "138.46784 +36.45262": {"n_box": 21, "off": [], "on": []}, "138.90323 +40.53916": {"n_box": 23, "off": [], "on": [{"mag_r": "22.363781", "sep": 0.23, "type": "EXP"}]}, "138.92585 +49.68826": {"n_box": 27, "off": [], "on": []}, "138.98802 +63.66694": {"n_box": 22, "off": [], "on": []}, "139.02358 +42.24245": {"n_box": 27, "off": [], "on": []}, "139.12491 +26.28906": {"n_box": 40, "off": [], "on": []}, "139.19066 +9.53878": {"n_box": 27, "off": [], "on": []}, "139.68269 +25.85595": {"n_box": 28, "off": [], "on": [{"mag_r": "22.298843", "sep": 1.2, "type": "REX"}]}, "139.73366 +21.56820": {"n_box": 28, "off": [], "on": []}, "14.27701 +28.66819": {"n_box": 28, "off": [], "on": []}, "14.30452 +1.23674": {"n_box": 64, "off": [], "on": [{"mag_r": "22.864428", "sep": 0.72, "type": "REX"}]}, "14.42113 -4.76859": {"n_box": 48, "off": [], "on": []}, "14.54918 +19.37136": {"n_box": 29, "off": [], "on": [{"mag_r": "22.91971", "sep": 0.63, "type": "PSF"}]}, "14.63280 +33.35919": {"n_box": 10, "off": [], "on": []}, "14.71805 +1.89633": {"n_box": 75, "off": [], "on": [{"mag_r": "25.033133", "sep": 0.7, "type": "REX"}]}, "140.06648 +23.98233": {"n_box": 34, "off": [], "on": []}, "140.08428 +31.05084": {"n_box": 39, "off": [], "on": []}, "140.11413 +34.82686": {"n_box": 23, "off": [], "on": []}, "140.22733 +0.46318": {"n_box": 54, "off": [], "on": []}, "140.43369 +26.23998": {"n_box": 32, "off": [], "on": [{"mag_r": "22.661804", "sep": 0.47, "type": "REX"}]}, "140.49693 +18.22247": {"n_box": 61, "off": [], "on": [{"mag_r": "23.630466", "sep": 0.48, "type": "PSF"}]}, "140.60923 +27.46256": {"n_box": 49, "off": [], "on": [{"mag_r": "23.22248", "sep": 1.19, "type": "PSF"}]}, "140.98480 +32.11864": {"n_box": 18, "off": [], "on": [{"mag_r": "24.088722", "sep": 0.33, "type": "PSF"}]}, "141.08442 +49.14371": {"n_box": 20, "off": [], "on": []}, "141.43832 +31.17449": {"n_box": 29, "off": [], "on": [{"mag_r": "23.61057", "sep": 1.05, "type": "PSF"}]}, "141.52635 +20.19847": {"n_box": 27, "off": [], "on": [{"mag_r": "23.364185", "sep": 0.21, "type": "REX"}]}, "141.78061 -2.11227": {"n_box": 27, "off": [], "on": [{"mag_r": "23.117609", "sep": 1.09, "type": "PSF"}]}, "141.94251 +14.58258": {"n_box": 21, "off": [], "on": []}, "141.98610 +20.10641": {"n_box": 29, "off": [], "on": []}, "142.03150 +10.55917": {"n_box": 20, "off": [], "on": []}, "142.10660 +16.31686": {"n_box": 33, "off": [], "on": []}, "142.25359 +13.82727": {"n_box": 38, "off": [], "on": [{"mag_r": "22.693598", "sep": 0.52, "type": "EXP"}]}, "143.02481 +32.28740": {"n_box": 32, "off": [], "on": [{"mag_r": "22.976685", "sep": 1.12, "type": "PSF"}]}, "143.08944 +17.21156": {"n_box": 42, "off": [], "on": [{"mag_r": "22.439394", "sep": 0.8, "type": "DEV"}]}, "143.16795 +26.34594": {"n_box": 28, "off": [], "on": [{"mag_r": "23.051184", "sep": 1.29, "type": "REX"}]}, "143.63177 +9.30417": {"n_box": 30, "off": [], "on": [{"mag_r": "22.748487", "sep": 0.32, "type": "EXP"}]}, "143.88934 +28.31704": {"n_box": 26, "off": [], "on": []}, "143.94322 +57.35848": {"n_box": 23, "off": [], "on": []}, "144.72645 +29.79669": {"n_box": 42, "off": [], "on": [{"mag_r": "23.480495", "sep": 0.67, "type": "PSF"}]}, "144.97489 +32.02746": {"n_box": 28, "off": [], "on": []}, "145.19405 +57.24949": {"n_box": 23, "off": [], "on": [{"mag_r": "22.975647", "sep": 1.03, "type": "PSF"}]}, "145.28971 +11.98170": {"n_box": 29, "off": [], "on": [{"mag_r": "22.231466", "sep": 0.32, "type": "EXP"}]}, "145.40334 +56.22158": {"n_box": 28, "off": [], "on": []}, "145.76133 +51.51199": {"n_box": 23, "off": [{"mag_r": "23.354788", "sep": 0.55, "type": "PSF"}], "on": []}, "146.55114 +30.02462": {"n_box": 18, "off": [], "on": []}, "146.68585 +14.26176": {"n_box": 27, "off": [], "on": []}, "146.73208 +53.73076": {"n_box": 30, "off": [], "on": []}, "146.99252 +10.38257": {"n_box": 32, "off": [], "on": [{"mag_r": "22.852455", "sep": 0.91, "type": "REX"}]}, "147.20959 -0.29099": {"n_box": 71, "off": [], "on": [{"mag_r": "23.790169", "sep": 1.45, "type": "PSF"}]}, "147.42607 +44.84575": {"n_box": 14, "off": [], "on": []}, "147.52131 +44.77583": {"n_box": 23, "off": [], "on": []}, "147.79453 +11.40944": {"n_box": 35, "off": [], "on": [{"mag_r": "23.315369", "sep": 0.7, "type": "REX"}]}, "147.99038 +19.28188": {"n_box": 31, "off": [], "on": []}, "148.06195 +31.72523": {"n_box": 17, "off": [], "on": []}, "148.39978 +48.86962": {"n_box": 15, "off": [], "on": []}, "148.42853 +36.21691": {"n_box": 17, "off": [], "on": [{"mag_r": "23.765198", "sep": 0.12, "type": "REX"}]}, "148.54378 +14.12685": {"n_box": 32, "off": [], "on": []}, "148.56288 +57.74840": {"n_box": 19, "off": [], "on": []}, "148.66520 -0.10959": {"n_box": 28, "off": [], "on": [{"mag_r": "23.015211", "sep": 0.87, "type": "REX"}]}, "148.92493 +48.87003": {"n_box": 20, "off": [], "on": []}, "149.00528 +29.49835": {"n_box": 31, "off": [], "on": [{"mag_r": "23.600365", "sep": 1.0, "type": "REX"}]}, "149.06608 +11.55694": {"n_box": 20, "off": [], "on": []}, "149.06862 +51.82196": {"n_box": 23, "off": [], "on": []}, "149.34657 +40.85149": {"n_box": 27, "off": [], "on": []}, "149.61539 +48.66389": {"n_box": 18, "off": [], "on": []}, "149.95414 +9.69427": {"n_box": 27, "off": [], "on": []}, "15.18007 +30.24963": {"n_box": 27, "off": [], "on": [{"mag_r": "23.787754", "sep": 0.69, "type": "REX"}]}, "15.68255 +3.58202": {"n_box": 69, "off": [], "on": []}, "15.88903 +8.04265": {"n_box": 31, "off": [], "on": []}, "150.33497 +31.84991": {"n_box": 19, "off": [], "on": [{"mag_r": "23.196564", "sep": 1.26, "type": "REX"}]}, "150.61150 +50.64228": {"n_box": 19, "off": [], "on": [{"mag_r": "22.493944", "sep": 0.16, "type": "REX"}]}, "150.77814 +16.53294": {"n_box": 16, "off": [], "on": []}, "151.13922 +48.01748": {"n_box": 23, "off": [], "on": []}, "151.34089 +48.59377": {"n_box": 28, "off": [{"mag_r": "21.38217", "sep": 1.04, "type": "EXP"}], "on": []}, "151.45640 +13.88454": {"n_box": 35, "off": [], "on": [{"mag_r": "23.55957", "sep": 1.35, "type": "REX"}]}, "152.58471 +55.99981": {"n_box": 25, "off": [], "on": []}, "152.64362 +25.00215": {"n_box": 22, "off": [], "on": []}, "152.72412 +26.01838": {"n_box": 35, "off": [], "on": []}, "152.86317 +25.93787": {"n_box": 48, "off": [], "on": []}, "152.89345 +25.49293": {"n_box": 40, "off": [], "on": []}, "153.01839 +20.23709": {"n_box": 25, "off": [], "on": []}, "153.75520 +17.37566": {"n_box": 37, "off": [], "on": []}, "153.80667 +27.71390": {"n_box": 33, "off": [], "on": []}, "154.49264 +43.29192": {"n_box": 21, "off": [], "on": []}, "154.55364 +60.55032": {"n_box": 35, "off": [], "on": [{"mag_r": "23.155067", "sep": 1.32, "type": "REX"}]}, "154.66776 +11.35715": {"n_box": 44, "off": [], "on": []}, "154.85590 +60.30853": {"n_box": 18, "off": [], "on": []}, "154.88368 +38.46850": {"n_box": 20, "off": [], "on": []}, "155.25032 +28.87676": {"n_box": 40, "off": [], "on": []}, "155.25250 +33.51490": {"n_box": 18, "off": [], "on": []}, "155.35008 +26.50603": {"n_box": 17, "off": [], "on": []}, "155.43409 +22.00174": {"n_box": 30, "off": [], "on": [{"mag_r": "23.80268", "sep": 1.35, "type": "REX"}]}, "155.59400 +21.00202": {"n_box": 37, "off": [], "on": []}, "155.98205 +29.82625": {"n_box": 31, "off": [], "on": []}, "156.07665 +37.71858": {"n_box": 21, "off": [], "on": [{"mag_r": "23.32736", "sep": 0.72, "type": "PSF"}]}, "156.58603 +27.53902": {"n_box": 35, "off": [], "on": [{"mag_r": "23.27353", "sep": 0.99, "type": "REX"}]}, "156.74391 +42.17401": {"n_box": 23, "off": [], "on": []}, "157.14067 +30.51242": {"n_box": 35, "off": [], "on": []}, "157.30420 +28.96638": {"n_box": 37, "off": [], "on": []}, "157.31341 -0.96830": {"n_box": 36, "off": [], "on": []}, "157.60328 +14.39352": {"n_box": 48, "off": [{"mag_r": "22.554615", "sep": 1.03, "type": "EXP"}], "on": [{"mag_r": "23.784946", "sep": 0.22, "type": "REX"}]}, "157.79289 +10.09304": {"n_box": 60, "off": [], "on": []}, "158.02560 +22.15247": {"n_box": 24, "off": [], "on": [{"mag_r": "23.382254", "sep": 0.92, "type": "REX"}]}, "158.20817 +31.02373": {"n_box": 26, "off": [], "on": []}, "158.40200 +27.21372": {"n_box": 35, "off": [], "on": []}, "158.53881 +48.44514": {"n_box": 16, "off": [], "on": []}, "158.88953 +34.64495": {"n_box": 20, "off": [], "on": []}, "159.41924 +34.20715": {"n_box": 23, "off": [], "on": []}, "159.60679 +23.18527": {"n_box": 28, "off": [], "on": [{"mag_r": "23.505686", "sep": 0.59, "type": "REX"}]}, "159.95768 +32.38044": {"n_box": 24, "off": [], "on": []}, "160.02134 +23.61641": {"n_box": 32, "off": [], "on": []}, "160.11325 +58.20823": {"n_box": 29, "off": [], "on": [{"mag_r": "22.583075", "sep": 0.92, "type": "REX"}]}, "160.40951 +46.60769": {"n_box": 24, "off": [], "on": [{"mag_r": "22.912884", "sep": 0.7, "type": "REX"}]}, "161.27619 -1.14414": {"n_box": 38, "off": [], "on": []}, "161.30082 +13.21005": {"n_box": 39, "off": [], "on": [{"mag_r": "23.270788", "sep": 1.09, "type": "REX"}]}, "161.35091 +30.31077": {"n_box": 41, "off": [], "on": []}, "161.40749 +21.54461": {"n_box": 34, "off": [], "on": [{"mag_r": "22.913868", "sep": 0.41, "type": "REX"}]}, "161.64792 +40.24057": {"n_box": 29, "off": [], "on": [{"mag_r": "23.257723", "sep": 0.74, "type": "REX"}]}, "161.88098 +17.05859": {"n_box": 44, "off": [], "on": [{"mag_r": "24.728138", "sep": 1.46, "type": "REX"}]}, "162.62779 +32.93737": {"n_box": 21, "off": [], "on": []}, "162.93360 +31.53551": {"n_box": 43, "off": [], "on": []}, "163.37787 +30.34301": {"n_box": 25, "off": [], "on": []}, "163.46816 +2.06321": {"n_box": 36, "off": [], "on": [{"mag_r": "23.570261", "sep": 0.56, "type": "REX"}]}, "163.57812 +16.05708": {"n_box": 36, "off": [], "on": []}, "163.85952 +47.34356": {"n_box": 22, "off": [], "on": [{"mag_r": "22.759567", "sep": 0.51, "type": "REX"}]}, "164.52423 +33.82043": {"n_box": 21, "off": [], "on": []}, "164.73973 +24.03169": {"n_box": 30, "off": [], "on": []}, "165.01915 +47.50200": {"n_box": 18, "off": [], "on": [{"mag_r": "23.271484", "sep": 0.31, "type": "PSF"}]}, "166.01214 +56.99862": {"n_box": 16, "off": [], "on": []}, "166.04505 +32.50064": {"n_box": 23, "off": [], "on": []}, "166.21832 +25.51831": {"n_box": 32, "off": [], "on": []}, "166.49385 +66.85008": {"n_box": 20, "off": [], "on": []}, "166.51885 +36.18896": {"n_box": 18, "off": [], "on": []}, "166.73658 +16.05350": {"n_box": 28, "off": [], "on": [{"mag_r": "22.619383", "sep": 0.34, "type": "EXP"}]}, "166.84609 +21.70019": {"n_box": 32, "off": [], "on": []}, "167.17696 +11.03942": {"n_box": 46, "off": [], "on": [{"mag_r": "23.1021", "sep": 0.34, "type": "REX"}]}, "167.40963 +30.81217": {"n_box": 30, "off": [], "on": []}, "168.95360 +7.97348": {"n_box": 34, "off": [], "on": []}, "169.24331 +52.16521": {"n_box": 28, "off": [], "on": [{"mag_r": "22.97436", "sep": 1.36, "type": "PSF"}]}, "169.42730 +40.19992": {"n_box": 23, "off": [], "on": []}, "169.62923 +18.52840": {"n_box": 14, "off": [], "on": []}, "169.75091 -1.09797": {"n_box": 31, "off": [], "on": []}, "169.79757 +30.84049": {"n_box": 28, "off": [], "on": []}, "169.81510 +65.92926": {"n_box": 28, "off": [], "on": [{"mag_r": "22.997559", "sep": 0.25, "type": "REX"}]}, "169.93336 +28.50209": {"n_box": 39, "off": [], "on": []}, "169.94193 +64.88349": {"n_box": 20, "off": [], "on": []}, "17.46108 +32.72587": {"n_box": 27, "off": [], "on": []}, "17.53466 +4.66545": {"n_box": 57, "off": [], "on": [{"mag_r": "22.270172", "sep": 0.4, "type": "REX"}]}, "17.70017 +30.37876": {"n_box": 44, "off": [], "on": []}, "17.78981 +22.21208": {"n_box": 26, "off": [], "on": []}, "170.08129 -0.57476": {"n_box": 22, "off": [], "on": []}, "170.16690 +34.76615": {"n_box": 24, "off": [{"mag_r": "24.225372", "sep": 0.57, "type": "REX"}], "on": []}, "170.45616 +4.52203": {"n_box": 18, "off": [], "on": [{"mag_r": "23.24821", "sep": 0.82, "type": "PSF"}]}, "170.51451 +49.90704": {"n_box": 34, "off": [], "on": [{"mag_r": "23.516575", "sep": 0.47, "type": "REX"}]}, "171.57123 +40.44475": {"n_box": 22, "off": [], "on": []}, "172.29136 +45.25669": {"n_box": 17, "off": [], "on": []}, "172.96530 +47.41917": {"n_box": 26, "off": [], "on": []}, "173.14481 +59.46159": {"n_box": 11, "off": [], "on": []}, "173.42151 +19.35915": {"n_box": 30, "off": [], "on": []}, "173.58012 +14.25424": {"n_box": 83, "off": [], "on": []}, "173.94666 +11.31059": {"n_box": 22, "off": [], "on": []}, "174.26890 +45.42930": {"n_box": 13, "off": [], "on": []}, "174.40400 +31.54417": {"n_box": 36, "off": [], "on": []}, "174.44145 +33.90407": {"n_box": 21, "off": [], "on": []}, "174.46693 +35.31589": {"n_box": 15, "off": [], "on": []}, "174.48659 +1.11383": {"n_box": 45, "off": [], "on": [{"mag_r": "21.754734", "sep": 0.81, "type": "REX"}]}, "174.56869 +14.12900": {"n_box": 36, "off": [], "on": []}, "174.80896 +62.15769": {"n_box": 15, "off": [], "on": [{"mag_r": "23.076212", "sep": 0.91, "type": "PSF"}]}, "175.10057 +40.56094": {"n_box": 44, "off": [], "on": []}, "175.74678 +44.52171": {"n_box": 21, "off": [], "on": [{"mag_r": "23.409325", "sep": 0.53, "type": "REX"}]}, "176.05369 +20.19175": {"n_box": 44, "off": [], "on": []}, "176.22760 +33.90952": {"n_box": 22, "off": [], "on": [{"mag_r": "23.0626", "sep": 0.81, "type": "PSF"}]}, "176.42060 +33.62277": {"n_box": 21, "off": [], "on": []}, "176.49067 +21.57333": {"n_box": 40, "off": [{"mag_r": "23.499908", "sep": 1.36, "type": "REX"}], "on": [{"mag_r": "23.437176", "sep": 0.94, "type": "PSF"}]}, "176.75813 +44.56817": {"n_box": 22, "off": [], "on": []}, "176.91263 +42.55770": {"n_box": 19, "off": [], "on": [{"mag_r": "22.424797", "sep": 0.74, "type": "REX"}]}, "177.06039 +34.05909": {"n_box": 19, "off": [], "on": []}, "177.12140 +58.45203": {"n_box": 23, "off": [], "on": [{"mag_r": "22.925583", "sep": 0.08, "type": "REX"}]}, "177.28593 +31.14654": {"n_box": 24, "off": [], "on": [{"mag_r": "22.806234", "sep": 0.44, "type": "REX"}]}, "177.35229 +5.87891": {"n_box": 34, "off": [], "on": []}, "177.58432 +38.07594": {"n_box": 16, "off": [], "on": []}, "177.71028 +20.43942": {"n_box": 31, "off": [], "on": []}, "177.75541 +49.48916": {"n_box": 18, "off": [], "on": []}, "177.79184 +52.49099": {"n_box": 25, "off": [], "on": []}, "177.85168 +54.09125": {"n_box": 25, "off": [], "on": [{"mag_r": "22.345272", "sep": 1.35, "type": "REX"}]}, "178.48014 +42.38297": {"n_box": 33, "off": [], "on": []}, "178.75863 +27.52210": {"n_box": 27, "off": [], "on": [{"mag_r": "23.89858", "sep": 0.63, "type": "PSF"}]}, "178.98923 +22.51120": {"n_box": 41, "off": [], "on": [{"mag_r": "23.138554", "sep": 0.66, "type": "REX"}]}, "179.21983 +34.02804": {"n_box": 28, "off": [], "on": []}, "179.61193 +64.94745": {"n_box": 20, "off": [], "on": []}, "179.67737 +63.45650": {"n_box": 18, "off": [], "on": []}, "179.70151 +56.63225": {"n_box": 24, "off": [], "on": []}, "179.83921 +38.90224": {"n_box": 24, "off": [], "on": []}, "179.94605 +41.95528": {"n_box": 17, "off": [], "on": [{"mag_r": "23.049679", "sep": 0.22, "type": "PSF"}]}, "179.97092 +55.79062": {"n_box": 17, "off": [], "on": []}, "18.07901 -1.04845": {"n_box": 46, "off": [], "on": []}, "18.13959 +5.51922": {"n_box": 28, "off": [], "on": []}, "18.56394 +13.04698": {"n_box": 16, "off": [], "on": []}, "18.71776 +24.94611": {"n_box": 24, "off": [], "on": [{"mag_r": "22.340084", "sep": 0.78, "type": "EXP"}]}, "18.95434 +22.18753": {"n_box": 27, "off": [], "on": []}, "180.80191 +4.98357": {"n_box": 57, "off": [], "on": [{"mag_r": "22.278519", "sep": 0.11, "type": "EXP"}]}, "180.80410 +64.64955": {"n_box": 31, "off": [], "on": []}, "181.43601 +1.13217": {"n_box": 68, "off": [], "on": [{"mag_r": "23.413467", "sep": 1.05, "type": "REX"}]}, "181.43601 +1.13218": {"n_box": 68, "off": [], "on": [{"mag_r": "23.413467", "sep": 1.02, "type": "REX"}]}, "181.58564 +39.03866": {"n_box": 32, "off": [], "on": []}, "181.76516 +38.78329": {"n_box": 28, "off": [], "on": []}, "182.99391 +25.58051": {"n_box": 23, "off": [], "on": []}, "183.07301 +13.58142": {"n_box": 35, "off": [], "on": []}, "183.16471 +41.81317": {"n_box": 22, "off": [], "on": [{"mag_r": "23.567984", "sep": 1.11, "type": "REX"}]}, "183.16471 +41.81318": {"n_box": 22, "off": [], "on": [{"mag_r": "23.567984", "sep": 1.08, "type": "REX"}]}, "183.56327 +43.15896": {"n_box": 21, "off": [{"mag_r": "24.393871", "sep": 1.29, "type": "REX"}], "on": []}, "184.01200 +39.09985": {"n_box": 26, "off": [], "on": []}, "184.90185 +24.27496": {"n_box": 28, "off": [], "on": []}, "184.93223 -2.28603": {"n_box": 53, "off": [], "on": []}, "185.43052 -2.25499": {"n_box": 47, "off": [], "on": []}, "185.56561 +54.11819": {"n_box": 12, "off": [], "on": []}, "185.87047 -0.69507": {"n_box": 32, "off": [], "on": []}, "185.91017 +16.95765": {"n_box": 24, "off": [{"mag_r": "23.737461", "sep": 0.5, "type": "REX"}], "on": []}, "185.96476 +23.12713": {"n_box": 35, "off": [], "on": [{"mag_r": "23.56106", "sep": 0.75, "type": "PSF"}]}, "186.44715 +22.14886": {"n_box": 30, "off": [], "on": []}, "186.54889 +38.08246": {"n_box": 18, "off": [], "on": []}, "187.33228 +33.25335": {"n_box": 29, "off": [], "on": [{"mag_r": "23.4346", "sep": 0.31, "type": "REX"}]}, "187.52239 +14.68962": {"n_box": 31, "off": [], "on": [{"mag_r": "24.027687", "sep": 0.44, "type": "REX"}]}, "187.52565 +31.28459": {"n_box": 22, "off": [], "on": []}, "187.66509 +47.56218": {"n_box": 21, "off": [], "on": []}, "187.81393 +17.25805": {"n_box": 36, "off": [], "on": []}, "188.36073 +32.15735": {"n_box": 32, "off": [], "on": []}, "188.47058 +55.12208": {"n_box": 26, "off": [], "on": [{"mag_r": "22.227943", "sep": 0.92, "type": "EXP"}]}, "188.64795 +3.56641": {"n_box": 95, "off": [], "on": [{"mag_r": "22.851513", "sep": 0.52, "type": "REX"}]}, "188.64934 -0.49060": {"n_box": 65, "off": [], "on": []}, "188.74456 +49.57747": {"n_box": 17, "off": [], "on": [{"mag_r": "23.382393", "sep": 0.61, "type": "REX"}]}, "188.85555 +30.42524": {"n_box": 25, "off": [], "on": []}, "189.69236 +49.12950": {"n_box": 22, "off": [], "on": []}, "189.75295 +19.54490": {"n_box": 31, "off": [], "on": []}, "19.23551 +16.14563": {"n_box": 31, "off": [], "on": []}, "19.49121 +24.18698": {"n_box": 29, "off": [], "on": []}, "19.76594 +3.11908": {"n_box": 50, "off": [], "on": []}, "19.95145 +31.42448": {"n_box": 34, "off": [], "on": [{"mag_r": "23.942842", "sep": 0.7, "type": "REX"}]}, "190.71352 +18.34201": {"n_box": 37, "off": [], "on": [{"mag_r": "23.58695", "sep": 1.04, "type": "REX"}]}, "190.94338 +49.66178": {"n_box": 25, "off": [], "on": []}, "191.05282 +14.52098": {"n_box": 38, "off": [], "on": [{"mag_r": "23.973715", "sep": 0.43, "type": "PSF"}]}, "191.21577 +18.13889": {"n_box": 51, "off": [], "on": []}, "191.68889 +7.49739": {"n_box": 48, "off": [], "on": [{"mag_r": "23.15238", "sep": 0.92, "type": "REX"}]}, "192.12070 +31.37480": {"n_box": 28, "off": [], "on": []}, "192.48986 +49.03879": {"n_box": 26, "off": [], "on": []}, "193.67891 +33.50599": {"n_box": 21, "off": [], "on": [{"mag_r": "23.499508", "sep": 1.26, "type": "PSF"}]}, "193.85918 +31.69102": {"n_box": 31, "off": [], "on": []}, "193.94534 -1.18908": {"n_box": 106, "off": [], "on": []}, "194.02491 +48.41698": {"n_box": 19, "off": [], "on": []}, "194.47508 +52.51124": {"n_box": 25, "off": [], "on": []}, "194.49349 +35.89937": {"n_box": 20, "off": [], "on": []}, "194.58966 +23.92818": {"n_box": 34, "off": [], "on": []}, "194.68879 +36.41788": {"n_box": 19, "off": [], "on": []}, "194.78922 +49.52576": {"n_box": 12, "off": [], "on": []}, "195.10111 +33.73835": {"n_box": 17, "off": [], "on": []}, "195.27811 -1.08778": {"n_box": 71, "off": [], "on": []}, "195.28754 +36.36703": {"n_box": 21, "off": [], "on": []}, "196.27720 +27.01523": {"n_box": 28, "off": [], "on": []}, "196.30853 +53.17506": {"n_box": 17, "off": [], "on": []}, "196.48354 +25.72899": {"n_box": 30, "off": [], "on": []}, "196.97141 +37.98826": {"n_box": 19, "off": [], "on": []}, "197.31227 +18.68198": {"n_box": 27, "off": [], "on": [{"mag_r": "22.52506", "sep": 1.19, "type": "REX"}]}, "198.02095 +31.92434": {"n_box": 31, "off": [], "on": [{"mag_r": "23.27747", "sep": 1.08, "type": "PSF"}]}, "198.06281 +65.46125": {"n_box": 24, "off": [], "on": []}, "198.16771 +34.67953": {"n_box": 26, "off": [], "on": []}, "198.21603 +55.42233": {"n_box": 30, "off": [], "on": [{"mag_r": "21.951668", "sep": 1.4, "type": "EXP"}]}, "198.47179 +41.25348": {"n_box": 25, "off": [], "on": [{"mag_r": "22.958603", "sep": 0.62, "type": "REX"}]}, "198.59726 +15.86907": {"n_box": 24, "off": [], "on": []}, "199.19516 +45.56782": {"n_box": 27, "off": [], "on": [{"mag_r": "23.236698", "sep": 1.02, "type": "REX"}]}, "199.21495 +58.95603": {"n_box": 12, "off": [], "on": []}, "199.59052 +31.79006": {"n_box": 26, "off": [], "on": []}, "199.99149 +41.35515": {"n_box": 10, "off": [], "on": []}, "2.04539 +11.85705": {"n_box": 36, "off": [], "on": [{"mag_r": "23.144064", "sep": 0.98, "type": "PSF"}]}, "2.06188 +33.68550": {"n_box": 15, "off": [], "on": []}, "2.28310 +7.12388": {"n_box": 25, "off": [], "on": [{"mag_r": "22.843185", "sep": 0.51, "type": "REX"}]}, "2.34253 +7.91809": {"n_box": 34, "off": [{"mag_r": "23.106146", "sep": 0.67, "type": "DEV"}], "on": []}, "2.46677 +2.06316": {"n_box": 71, "off": [], "on": []}, "2.46761 +23.78729": {"n_box": 34, "off": [], "on": [{"mag_r": "23.354643", "sep": 0.32, "type": "PSF"}]}, "2.47803 +2.13836": {"n_box": 58, "off": [], "on": [{"mag_r": "24.277233", "sep": 1.11, "type": "PSF"}]}, "2.79838 +3.56853": {"n_box": 52, "off": [], "on": []}, "2.98170 +0.31348": {"n_box": 76, "off": [], "on": []}, "20.04248 +8.69414": {"n_box": 30, "off": [], "on": []}, "20.10216 -8.13953": {"n_box": 27, "off": [], "on": [{"mag_r": "23.256374", "sep": 0.28, "type": "REX"}]}, "20.20363 -1.00337": {"n_box": 57, "off": [], "on": []}, "20.33992 +1.93258": {"n_box": 70, "off": [], "on": []}, "20.52762 +3.26608": {"n_box": 44, "off": [], "on": [{"mag_r": "25.04681", "sep": 0.26, "type": "PSF"}]}, "200.23929 +29.15755": {"n_box": 31, "off": [], "on": []}, "200.73031 +53.37435": {"n_box": 22, "off": [], "on": []}, "200.94619 +52.00761": {"n_box": 10, "off": [], "on": []}, "201.61651 -2.31953": {"n_box": 50, "off": [], "on": []}, "201.87580 +58.20057": {"n_box": 5, "off": [], "on": []}, "202.05067 +42.37115": {"n_box": 16, "off": [], "on": []}, "202.05611 +47.97118": {"n_box": 18, "off": [], "on": [{"mag_r": "24.140774", "sep": 1.19, "type": "PSF"}]}, "202.20512 +34.01509": {"n_box": 20, "off": [], "on": []}, "202.28980 +57.25372": {"n_box": 18, "off": [], "on": []}, "202.51184 +66.02136": {"n_box": 29, "off": [], "on": [{"mag_r": "23.187399", "sep": 0.25, "type": "REX"}]}, "202.97916 +14.40790": {"n_box": 35, "off": [], "on": []}, "202.99287 +67.07757": {"n_box": 34, "off": [], "on": []}, "203.56791 +33.52153": {"n_box": 14, "off": [], "on": []}, "204.74402 +20.65876": {"n_box": 40, "off": [], "on": []}, "205.06435 +5.95756": {"n_box": 24, "off": [], "on": []}, "205.78650 +50.99986": {"n_box": 11, "off": [], "on": []}, "206.01810 +36.33813": {"n_box": 13, "off": [], "on": []}, "206.20439 +12.27998": {"n_box": 49, "off": [], "on": [{"mag_r": "23.691742", "sep": 0.67, "type": "PSF"}]}, "207.18925 -0.83451": {"n_box": 34, "off": [], "on": [{"mag_r": "23.502531", "sep": 0.72, "type": "REX"}]}, "207.73913 +65.68534": {"n_box": 16, "off": [], "on": []}, "207.80011 +3.74858": {"n_box": 25, "off": [], "on": []}, "207.97865 +15.12875": {"n_box": 21, "off": [{"mag_r": "23.37806", "sep": 0.99, "type": "REX"}], "on": [{"mag_r": "23.48464", "sep": 0.38, "type": "REX"}]}, "208.40628 +36.23521": {"n_box": 37, "off": [], "on": [{"mag_r": "23.405254", "sep": 0.74, "type": "REX"}]}, "208.60119 +13.67712": {"n_box": 31, "off": [], "on": [{"mag_r": "21.932413", "sep": 0.88, "type": "EXP"}]}, "209.18756 +41.25132": {"n_box": 31, "off": [], "on": []}, "209.95413 +54.43979": {"n_box": 21, "off": [], "on": []}, "21.23230 -1.17590": {"n_box": 69, "off": [], "on": []}, "21.32109 +3.61001": {"n_box": 63, "off": [], "on": []}, "21.66204 +34.69270": {"n_box": 13, "off": [], "on": []}, "21.90269 +26.58489": {"n_box": 16, "off": [], "on": [{"mag_r": "24.158215", "sep": 0.91, "type": "PSF"}]}, "210.03130 +14.74262": {"n_box": 40, "off": [], "on": [{"mag_r": "24.540787", "sep": 0.98, "type": "REX"}]}, "210.25983 +7.91491": {"n_box": 52, "off": [], "on": [{"mag_r": "23.390774", "sep": 0.38, "type": "REX"}]}, "210.29613 -3.23692": {"n_box": 34, "off": [], "on": [{"mag_r": "22.598427", "sep": 0.76, "type": "EXP"}]}, "210.87765 +50.75975": {"n_box": 10, "off": [], "on": []}, "211.42955 +53.68910": {"n_box": 28, "off": [], "on": []}, "211.76744 +53.49399": {"n_box": 18, "off": [], "on": []}, "212.17183 +53.29666": {"n_box": 17, "off": [], "on": []}, "212.32994 +52.65995": {"n_box": 19, "off": [], "on": []}, "212.50969 +44.50541": {"n_box": 19, "off": [], "on": []}, "212.59062 +52.27907": {"n_box": 22, "off": [], "on": []}, "212.70546 +52.86969": {"n_box": 23, "off": [], "on": []}, "212.72987 +52.38202": {"n_box": 17, "off": [], "on": []}, "212.83817 +52.08920": {"n_box": 19, "off": [], "on": []}, "213.12600 +52.23221": {"n_box": 17, "off": [], "on": []}, "213.15574 +52.17486": {"n_box": 21, "off": [], "on": []}, "213.29485 +29.07750": {"n_box": 47, "off": [], "on": [{"mag_r": "22.522617", "sep": 1.35, "type": "EXP"}]}, "213.39177 +53.83865": {"n_box": 22, "off": [], "on": []}, "213.55279 +52.55241": {"n_box": 27, "off": [], "on": [{"mag_r": "23.634024", "sep": 0.82, "type": "REX"}]}, "213.55836 +53.61075": {"n_box": 21, "off": [], "on": []}, "213.55841 +53.61069": {"n_box": 21, "off": [], "on": []}, "213.58866 +24.33099": {"n_box": 50, "off": [], "on": [{"mag_r": "23.63425", "sep": 0.98, "type": "PSF"}]}, "213.64456 +52.97907": {"n_box": 16, "off": [], "on": []}, "213.89305 +51.66897": {"n_box": 27, "off": [], "on": []}, "213.89326 +3.27428": {"n_box": 51, "off": [], "on": []}, "214.01245 +52.62024": {"n_box": 25, "off": [], "on": []}, "214.03294 +34.34713": {"n_box": 15, "off": [], "on": []}, "214.22080 +47.54183": {"n_box": 22, "off": [], "on": []}, "214.22360 +58.17443": {"n_box": 25, "off": [], "on": []}, "214.24367 +53.99433": {"n_box": 31, "off": [], "on": []}, "214.65698 +53.75700": {"n_box": 31, "off": [], "on": []}, "214.70965 +29.60991": {"n_box": 22, "off": [], "on": []}, "214.76364 +18.54269": {"n_box": 38, "off": [], "on": []}, "215.02168 +54.09542": {"n_box": 12, "off": [], "on": []}, "215.12714 +52.51876": {"n_box": 23, "off": [], "on": []}, "215.56647 +35.41421": {"n_box": 31, "off": [], "on": [{"mag_r": "23.837513", "sep": 0.75, "type": "PSF"}]}, "215.63766 +52.54448": {"n_box": 18, "off": [], "on": [{"mag_r": "22.733772", "sep": 1.1, "type": "REX"}]}, "215.97193 +17.07153": {"n_box": 37, "off": [], "on": []}, "216.00664 +52.96365": {"n_box": 14, "off": [], "on": []}, "217.21040 +46.42150": {"n_box": 20, "off": [], "on": []}, "217.26819 +50.92206": {"n_box": 13, "off": [], "on": [{"mag_r": "23.745323", "sep": 0.9, "type": "PSF"}]}, "217.43790 +44.92701": {"n_box": 20, "off": [], "on": [{"mag_r": "22.503012", "sep": 1.45, "type": "REX"}]}, "217.96798 +39.67842": {"n_box": 29, "off": [], "on": []}, "218.00102 +30.82512": {"n_box": 21, "off": [], "on": []}, "218.09216 +28.75280": {"n_box": 30, "off": [], "on": []}, "219.73830 +51.87803": {"n_box": 18, "off": [], "on": []}, "219.75574 +32.84888": {"n_box": 23, "off": [], "on": []}, "219.81346 +30.49225": {"n_box": 37, "off": [{"mag_r": "24.077747", "sep": 0.96, "type": "REX"}], "on": [{"mag_r": "22.304497", "sep": 0.31, "type": "EXP"}]}, "219.87432 +33.50226": {"n_box": 20, "off": [], "on": []}, "22.15587 +1.18941": {"n_box": 58, "off": [], "on": [{"mag_r": "21.867914", "sep": 1.09, "type": "EXP"}]}, "22.23535 +27.44486": {"n_box": 19, "off": [], "on": [{"mag_r": "24.195812", "sep": 1.39, "type": "PSF"}, {"mag_r": "22.725622", "sep": 0.84, "type": "REX"}]}, "22.36957 +32.04790": {"n_box": 36, "off": [{"mag_r": "23.300163", "sep": 0.75, "type": "REX"}], "on": []}, "22.45367 -3.18867": {"n_box": 50, "off": [], "on": [{"mag_r": "23.474007", "sep": 0.37, "type": "REX"}]}, "22.45968 +11.21075": {"n_box": 17, "off": [], "on": []}, "22.52354 +11.27833": {"n_box": 25, "off": [], "on": []}, "22.68996 +13.68620": {"n_box": 32, "off": [], "on": []}, "22.69233 +7.35136": {"n_box": 31, "off": [], "on": []}, "22.75815 +25.84694": {"n_box": 43, "off": [], "on": [{"mag_r": "24.306658", "sep": 0.03, "type": "PSF"}]}, "220.49162 +6.30516": {"n_box": 29, "off": [], "on": []}, "220.83400 +51.33808": {"n_box": 17, "off": [], "on": []}, "221.03475 +34.41723": {"n_box": 34, "off": [], "on": [{"mag_r": "23.227816", "sep": 0.54, "type": "REX"}]}, "221.21223 +6.63193": {"n_box": 37, "off": [], "on": [{"mag_r": "23.137943", "sep": 0.5, "type": "EXP"}]}, "221.47363 +3.87355": {"n_box": 35, "off": [], "on": [{"mag_r": "22.471485", "sep": 0.25, "type": "EXP"}]}, "221.72976 +28.42111": {"n_box": 43, "off": [{"mag_r": "20.919205", "sep": 0.41, "type": "DEV"}], "on": [{"mag_r": "23.44769", "sep": 0.7, "type": "REX"}]}, "221.93867 +42.20213": {"n_box": 22, "off": [], "on": []}, "222.05262 +44.02768": {"n_box": 28, "off": [], "on": []}, "222.96203 +51.79858": {"n_box": 12, "off": [], "on": [{"mag_r": "23.28636", "sep": 0.65, "type": "REX"}]}, "223.46241 -0.95320": {"n_box": 90, "off": [], "on": [{"mag_r": "22.59696", "sep": 0.69, "type": "EXP"}]}, "223.64392 +38.18774": {"n_box": 22, "off": [], "on": [{"mag_r": "23.37015", "sep": 0.31, "type": "REX"}]}, "224.75806 +43.44184": {"n_box": 16, "off": [], "on": []}, "224.83271 +62.43438": {"n_box": 21, "off": [], "on": []}, "225.00402 +28.04808": {"n_box": 46, "off": [], "on": [{"mag_r": "23.314837", "sep": 0.7, "type": "REX"}]}, "225.09510 +16.14765": {"n_box": 57, "off": [{"mag_r": "23.44793", "sep": 0.51, "type": "REX"}], "on": []}, "225.44444 -0.61182": {"n_box": 46, "off": [], "on": []}, "225.58547 +40.70366": {"n_box": 24, "off": [], "on": []}, "225.62304 +7.79336": {"n_box": 34, "off": [], "on": []}, "225.79823 +16.19116": {"n_box": 27, "off": [], "on": [{"mag_r": "22.487423", "sep": 0.84, "type": "DEV"}]}, "226.04718 -2.39425": {"n_box": 63, "off": [], "on": []}, "226.19127 +40.59140": {"n_box": 27, "off": [], "on": []}, "226.80236 +42.93610": {"n_box": 19, "off": [], "on": [{"mag_r": "23.376198", "sep": 0.37, "type": "REX"}]}, "227.00636 +37.77659": {"n_box": 24, "off": [], "on": []}, "227.15226 +46.12635": {"n_box": 15, "off": [], "on": []}, "227.74881 +28.66382": {"n_box": 24, "off": [], "on": [{"mag_r": "23.784418", "sep": 0.6, "type": "REX"}]}, "228.28848 +8.11247": {"n_box": 46, "off": [], "on": [{"mag_r": "23.525692", "sep": 1.04, "type": "EXP"}]}, "228.31422 +4.83765": {"n_box": 55, "off": [], "on": [{"mag_r": "22.915659", "sep": 1.27, "type": "REX"}]}, "229.27575 +39.44620": {"n_box": 27, "off": [], "on": []}, "23.00091 +6.60654": {"n_box": 41, "off": [], "on": []}, "23.51387 -1.05226": {"n_box": 55, "off": [], "on": [{"mag_r": "23.573744", "sep": 1.43, "type": "REX"}]}, "23.77663 +25.07137": {"n_box": 20, "off": [], "on": []}, "23.81695 +17.02814": {"n_box": 36, "off": [], "on": [{"mag_r": "22.83744", "sep": 0.22, "type": "REX"}]}, "23.85607 +14.16471": {"n_box": 27, "off": [], "on": []}, "23.87226 -2.39728": {"n_box": 45, "off": [], "on": []}, "230.23312 +55.57851": {"n_box": 14, "off": [], "on": []}, "230.37408 +40.70261": {"n_box": 14, "off": [], "on": []}, "230.93283 +29.36780": {"n_box": 33, "off": [], "on": []}, "231.02179 +54.68584": {"n_box": 37, "off": [], "on": []}, "231.51368 +26.47841": {"n_box": 18, "off": [{"mag_r": "22.963522", "sep": 0.87, "type": "REX"}], "on": [{"mag_r": "22.980064", "sep": 0.55, "type": "REX"}]}, "232.02183 +44.14150": {"n_box": 13, "off": [], "on": []}, "232.22505 +56.89760": {"n_box": 29, "off": [], "on": []}, "232.30183 +30.13471": {"n_box": 25, "off": [], "on": [{"mag_r": "22.950666", "sep": 0.54, "type": "REX"}]}, "232.60127 +53.89052": {"n_box": 23, "off": [], "on": []}, "232.72128 +31.65506": {"n_box": 23, "off": [], "on": []}, "232.79455 +31.02245": {"n_box": 20, "off": [], "on": []}, "233.02871 +19.70298": {"n_box": 23, "off": [], "on": [{"mag_r": "22.926613", "sep": 1.38, "type": "REX"}]}, "235.22021 +0.57393": {"n_box": 35, "off": [], "on": [{"mag_r": "23.28478", "sep": 0.74, "type": "REX"}]}, "235.24632 +48.15885": {"n_box": 23, "off": [], "on": []}, "235.38928 +23.87738": {"n_box": 30, "off": [], "on": [{"mag_r": "22.268002", "sep": 0.16, "type": "EXP"}]}, "235.42559 +9.79814": {"n_box": 51, "off": [], "on": [{"mag_r": "22.806454", "sep": 0.14, "type": "REX"}]}, "235.88538 +53.01549": {"n_box": 23, "off": [], "on": []}, "236.79730 +2.71317": {"n_box": 30, "off": [], "on": []}, "236.91909 +47.57597": {"n_box": 37, "off": [], "on": []}, "237.68770 +12.08674": {"n_box": 44, "off": [], "on": []}, "237.80771 +54.37497": {"n_box": 14, "off": [], "on": []}, "238.78357 +54.91632": {"n_box": 27, "off": [], "on": []}, "238.93772 +29.40372": {"n_box": 38, "off": [], "on": []}, "239.43312 +23.99639": {"n_box": 37, "off": [], "on": [{"mag_r": "22.644585", "sep": 0.65, "type": "EXP"}]}, "24.13472 +19.44922": {"n_box": 30, "off": [], "on": []}, "24.19181 +6.40044": {"n_box": 44, "off": [], "on": [{"mag_r": "23.0729", "sep": 0.59, "type": "REX"}]}, "24.38380 +16.97539": {"n_box": 29, "off": [], "on": []}, "24.46695 +19.01838": {"n_box": 27, "off": [], "on": []}, "24.61935 +32.17549": {"n_box": 24, "off": [], "on": []}, "24.64814 -3.95707": {"n_box": 59, "off": [], "on": []}, "24.86415 +27.00149": {"n_box": 21, "off": [], "on": []}, "24.86701 +24.49386": {"n_box": 31, "off": [], "on": [{"mag_r": "22.959743", "sep": 0.77, "type": "EXP"}]}, "240.90571 +35.18927": {"n_box": 34, "off": [], "on": [{"mag_r": "22.650177", "sep": 0.52, "type": "REX"}]}, "241.41881 +32.47987": {"n_box": 25, "off": [], "on": [{"mag_r": "23.521154", "sep": 0.8, "type": "REX"}]}, "241.89569 +10.18119": {"n_box": 34, "off": [], "on": []}, "242.16496 +15.09693": {"n_box": 29, "off": [], "on": []}, "242.21908 +52.81692": {"n_box": 34, "off": [], "on": []}, "242.29235 +13.95431": {"n_box": 47, "off": [], "on": []}, "242.35395 +54.12879": {"n_box": 27, "off": [], "on": [{"mag_r": "22.51989", "sep": 0.43, "type": "EXP"}]}, "242.93487 +40.78225": {"n_box": 27, "off": [], "on": []}, "243.05324 +45.74012": {"n_box": 24, "off": [], "on": []}, "243.25252 +30.19842": {"n_box": 26, "off": [], "on": [{"mag_r": "22.81179", "sep": 1.07, "type": "REX"}]}, "243.74764 +43.36686": {"n_box": 19, "off": [], "on": []}, "243.79651 +30.09839": {"n_box": 18, "off": [], "on": []}, "244.45013 +41.51516": {"n_box": 28, "off": [], "on": [{"mag_r": "24.024382", "sep": 0.24, "type": "PSF"}]}, "244.45014 +41.51515": {"n_box": 28, "off": [], "on": [{"mag_r": "24.024382", "sep": 0.23, "type": "PSF"}]}, "244.56358 +56.57914": {"n_box": 31, "off": [], "on": [{"mag_r": "24.065935", "sep": 0.63, "type": "PSF"}]}, "245.24949 +34.60598": {"n_box": 25, "off": [], "on": []}, "245.33337 +20.30591": {"n_box": 56, "off": [], "on": [{"mag_r": "22.514467", "sep": 0.7, "type": "EXP"}]}, "246.11191 +40.54973": {"n_box": 23, "off": [], "on": []}, "247.53659 +36.36954": {"n_box": 25, "off": [], "on": [{"mag_r": "22.821665", "sep": 0.74, "type": "REX"}]}, "248.98563 +33.41463": {"n_box": 23, "off": [], "on": [{"mag_r": "22.374271", "sep": 0.81, "type": "REX"}]}, "249.06894 +43.07974": {"n_box": 22, "off": [], "on": []}, "249.19364 +48.56954": {"n_box": 16, "off": [], "on": [{"mag_r": "23.412916", "sep": 0.95, "type": "PSF"}]}, "249.79620 +46.51643": {"n_box": 21, "off": [{"mag_r": "24.542616", "sep": 1.33, "type": "PSF"}], "on": []}, "249.97496 +18.17391": {"n_box": 25, "off": [], "on": []}, "25.24367 +5.87333": {"n_box": 26, "off": [], "on": [{"mag_r": "22.531874", "sep": 0.59, "type": "REX"}]}, "25.26598 -0.07848": {"n_box": 110, "off": [], "on": [{"mag_r": "26.210167", "sep": 0.18, "type": "REX"}]}, "25.36688 +20.57024": {"n_box": 40, "off": [], "on": []}, "25.41837 +6.64957": {"n_box": 34, "off": [], "on": [{"mag_r": "23.937412", "sep": 0.63, "type": "REX"}]}, "25.51294 -0.86490": {"n_box": 62, "off": [], "on": [{"mag_r": "24.467257", "sep": 1.45, "type": "REX"}]}, "25.69016 +5.60623": {"n_box": 28, "off": [], "on": []}, "25.69017 +5.60623": {"n_box": 28, "off": [], "on": []}, "25.69827 +0.00327": {"n_box": 65, "off": [], "on": []}, "25.72344 -0.91728": {"n_box": 85, "off": [], "on": []}, "25.90411 -10.25796": {"n_box": 63, "off": [], "on": [{"mag_r": "22.67082", "sep": 1.36, "type": "EXP"}]}, "250.04169 +48.10922": {"n_box": 32, "off": [], "on": []}, "251.15826 +35.94991": {"n_box": 25, "off": [], "on": []}, "252.06993 +41.14431": {"n_box": 16, "off": [], "on": []}, "252.44217 +44.68943": {"n_box": 28, "off": [], "on": []}, "252.65262 +35.90116": {"n_box": 30, "off": [], "on": [{"mag_r": "23.863003", "sep": 0.47, "type": "REX"}]}, "252.74291 +28.37907": {"n_box": 27, "off": [], "on": []}, "253.33132 +51.06334": {"n_box": 27, "off": [], "on": []}, "254.55366 +37.66655": {"n_box": 35, "off": [], "on": []}, "254.72825 +39.83190": {"n_box": 34, "off": [], "on": []}, "254.84508 +43.79231": {"n_box": 16, "off": [{"mag_r": "25.806831", "sep": 0.62, "type": "PSF"}], "on": [{"mag_r": "23.477213", "sep": 1.05, "type": "PSF"}]}, "254.96840 +35.12304": {"n_box": 32, "off": [], "on": []}, "255.53170 +32.14931": {"n_box": 36, "off": [], "on": [{"mag_r": "22.587929", "sep": 0.22, "type": "EXP"}]}, "255.95617 +21.05868": {"n_box": 39, "off": [], "on": [{"mag_r": "23.530092", "sep": 0.69, "type": "REX"}]}, "256.17336 +40.14051": {"n_box": 30, "off": [], "on": []}, "257.18676 +40.59302": {"n_box": 22, "off": [], "on": []}, "257.43904 +21.36065": {"n_box": 33, "off": [], "on": [{"mag_r": "23.360634", "sep": 0.5, "type": "PSF"}]}, "257.85477 +30.91179": {"n_box": 38, "off": [], "on": []}, "257.88460 +31.98380": {"n_box": 29, "off": [], "on": []}, "258.61404 +33.83769": {"n_box": 28, "off": [], "on": []}, "258.76952 +41.64416": {"n_box": 22, "off": [], "on": []}, "258.91759 +43.11609": {"n_box": 16, "off": [], "on": []}, "26.24120 -7.78227": {"n_box": 58, "off": [], "on": []}, "26.35432 +10.02217": {"n_box": 42, "off": [], "on": []}, "26.43771 +11.21563": {"n_box": 32, "off": [], "on": [{"mag_r": "22.512733", "sep": 0.54, "type": "REX"}]}, "26.45194 +14.74649": {"n_box": 26, "off": [], "on": [{"mag_r": "23.598478", "sep": 0.57, "type": "PSF"}]}, "26.64042 +26.75282": {"n_box": 17, "off": [], "on": [{"mag_r": "23.35777", "sep": 0.62, "type": "EXP"}]}, "26.79556 +23.37009": {"n_box": 15, "off": [], "on": []}, "26.94620 -4.83621": {"n_box": 61, "off": [], "on": []}, "260.81930 +38.28531": {"n_box": 32, "off": [], "on": [{"mag_r": "23.204449", "sep": 0.14, "type": "REX"}]}, "261.59575 +30.59913": {"n_box": 31, "off": [], "on": [{"mag_r": "22.265184", "sep": 1.27, "type": "REX"}]}, "262.09736 +36.23308": {"n_box": 30, "off": [{"mag_r": "22.891386", "sep": 0.55, "type": "PSF"}], "on": []}, "27.00931 +20.73865": {"n_box": 26, "off": [], "on": []}, "27.10436 +32.01755": {"n_box": 27, "off": [], "on": [{"mag_r": "23.39739", "sep": 0.12, "type": "REX"}]}, "27.25074 +28.43926": {"n_box": 20, "off": [], "on": [{"mag_r": "23.743555", "sep": 1.17, "type": "REX"}]}, "27.40837 +3.78376": {"n_box": 53, "off": [], "on": []}, "27.44580 -1.76524": {"n_box": 47, "off": [{"mag_r": "23.970728", "sep": 1.05, "type": "REX"}], "on": []}, "27.49099 -2.31464": {"n_box": 61, "off": [], "on": [{"mag_r": "23.277617", "sep": 0.74, "type": "REX"}]}, "27.85675 +4.87428": {"n_box": 23, "off": [], "on": []}, "28.11029 +15.51602": {"n_box": 20, "off": [], "on": []}, "28.11478 +11.68275": {"n_box": 17, "off": [], "on": [{"mag_r": "23.742691", "sep": 1.28, "type": "PSF"}]}, "28.15998 +9.32532": {"n_box": 26, "off": [], "on": []}, "28.15999 +9.32532": {"n_box": 26, "off": [], "on": []}, "28.16448 -1.50349": {"n_box": 53, "off": [], "on": []}, "28.16449 -1.50349": {"n_box": 53, "off": [], "on": []}, "28.29713 -3.05075": {"n_box": 53, "off": [], "on": [{"mag_r": "21.930523", "sep": 1.47, "type": "REX"}]}, "28.39204 -4.59561": {"n_box": 65, "off": [], "on": []}, "28.44483 +11.05901": {"n_box": 26, "off": [], "on": []}, "28.67890 +26.15996": {"n_box": 15, "off": [], "on": []}, "28.82008 -3.70525": {"n_box": 63, "off": [], "on": [{"mag_r": "24.240341", "sep": 0.57, "type": "REX"}]}, "28.82167 +29.10198": {"n_box": 41, "off": [], "on": []}, "28.95435 +25.09805": {"n_box": 15, "off": [], "on": [{"mag_r": "22.260511", "sep": 0.72, "type": "REX"}]}, "28.96636 +26.60074": {"n_box": 25, "off": [], "on": []}, "29.14162 -3.19762": {"n_box": 68, "off": [], "on": [{"mag_r": "23.598917", "sep": 0.24, "type": "PSF"}]}, "29.21233 -2.20280": {"n_box": 61, "off": [], "on": []}, "29.47546 +27.58831": {"n_box": 30, "off": [], "on": []}, "29.67252 +0.00675": {"n_box": 72, "off": [], "on": []}, "29.83705 +8.25373": {"n_box": 37, "off": [], "on": []}, "3.50836 +33.82563": {"n_box": 13, "off": [], "on": []}, "3.90551 +32.02559": {"n_box": 25, "off": [], "on": []}, "3.91958 +3.34240": {"n_box": 46, "off": [], "on": []}, "3.99783 -3.10154": {"n_box": 31, "off": [], "on": []}, "30.16768 +25.93626": {"n_box": 21, "off": [], "on": []}, "30.23660 -0.19503": {"n_box": 58, "off": [], "on": [{"mag_r": "24.003973", "sep": 1.28, "type": "REX"}]}, "30.34423 +26.27066": {"n_box": 30, "off": [], "on": []}, "30.82291 +23.66608": {"n_box": 27, "off": [], "on": [{"mag_r": "24.043373", "sep": 1.3, "type": "PSF"}]}, "31.09277 +31.96251": {"n_box": 37, "off": [], "on": []}, "31.10088 +0.79092": {"n_box": 46, "off": [], "on": []}, "31.72508 -2.32388": {"n_box": 52, "off": [], "on": []}, "31.84226 +30.17821": {"n_box": 37, "off": [], "on": []}, "316.95700 +6.15987": {"n_box": 45, "off": [], "on": []}, "317.11773 +6.85219": {"n_box": 49, "off": [], "on": []}, "317.38624 +1.01803": {"n_box": 73, "off": [], "on": [{"mag_r": "21.960325", "sep": 0.88, "type": "REX"}]}, "317.48136 -1.06968": {"n_box": 81, "off": [], "on": []}, "317.56416 -0.96755": {"n_box": 65, "off": [], "on": []}, "317.94546 +2.00650": {"n_box": 55, "off": [], "on": [{"mag_r": "22.165707", "sep": 1.41, "type": "REX"}]}, "317.97210 +5.16589": {"n_box": 34, "off": [], "on": []}, "318.00184 +0.45669": {"n_box": 65, "off": [], "on": []}, "318.53648 +2.31884": {"n_box": 42, "off": [], "on": []}, "318.86697 +0.91202": {"n_box": 73, "off": [], "on": [{"mag_r": "22.52148", "sep": 0.53, "type": "EXP"}]}, "319.14204 +1.11426": {"n_box": 66, "off": [], "on": []}, "319.16835 -1.48475": {"n_box": 41, "off": [], "on": []}, "319.32291 -1.65224": {"n_box": 35, "off": [], "on": []}, "32.10169 +3.56642": {"n_box": 53, "off": [], "on": []}, "32.54099 -4.63796": {"n_box": 64, "off": [], "on": [{"mag_r": "24.936247", "sep": 1.24, "type": "REX"}]}, "32.59596 -0.68554": {"n_box": 61, "off": [], "on": []}, "32.63455 -1.19027": {"n_box": 53, "off": [], "on": [{"mag_r": "22.664368", "sep": 1.09, "type": "EXP"}]}, "32.90420 -3.42696": {"n_box": 57, "off": [], "on": []}, "320.37706 +1.39830": {"n_box": 60, "off": [], "on": [{"mag_r": "23.70047", "sep": 0.08, "type": "REX"}]}, "321.07987 -0.46193": {"n_box": 73, "off": [], "on": [{"mag_r": "22.580315", "sep": 0.52, "type": "REX"}]}, "321.54503 -1.12535": {"n_box": 48, "off": [], "on": []}, "322.00060 +0.38206": {"n_box": 82, "off": [], "on": [{"mag_r": "23.13741", "sep": 1.16, "type": "PSF"}]}, "322.14213 +1.14361": {"n_box": 46, "off": [], "on": [{"mag_r": "22.082645", "sep": 0.87, "type": "REX"}]}, "322.49493 +1.84389": {"n_box": 52, "off": [], "on": [{"mag_r": "23.525637", "sep": 0.96, "type": "REX"}]}, "322.94891 +1.91979": {"n_box": 32, "off": [], "on": [{"mag_r": "23.940426", "sep": 0.13, "type": "PSF"}]}, "323.06474 -1.20201": {"n_box": 114, "off": [], "on": []}, "323.07541 +0.69400": {"n_box": 66, "off": [], "on": []}, "324.52821 -1.76940": {"n_box": 63, "off": [], "on": []}, "325.50391 +2.27041": {"n_box": 56, "off": [], "on": []}, "325.87914 +0.86255": {"n_box": 65, "off": [], "on": []}, "326.14718 +24.89866": {"n_box": 34, "off": [], "on": []}, "326.61691 +0.89490": {"n_box": 99, "off": [{"mag_r": "23.867323", "sep": 1.26, "type": "REX"}], "on": [{"mag_r": "24.226486", "sep": 1.17, "type": "REX"}]}, "326.91942 -1.12020": {"n_box": 79, "off": [], "on": []}, "327.11025 -1.46695": {"n_box": 62, "off": [{"mag_r": "27.60062", "sep": 1.24, "type": "PSF"}], "on": [{"mag_r": "22.76355", "sep": 0.24, "type": "EXP"}]}, "327.17813 +4.25019": {"n_box": 31, "off": [], "on": []}, "327.54891 -0.01578": {"n_box": 36, "off": [], "on": [{"mag_r": "23.48695", "sep": 0.93, "type": "REX"}]}, "328.28503 +0.02365": {"n_box": 99, "off": [], "on": [{"mag_r": "22.041817", "sep": 0.75, "type": "REX"}]}, "329.15213 -0.14210": {"n_box": 51, "off": [], "on": []}, "329.28767 +0.86373": {"n_box": 90, "off": [], "on": []}, "329.42316 +27.25776": {"n_box": 36, "off": [], "on": []}, "329.97105 +19.61039": {"n_box": 35, "off": [], "on": [{"mag_r": "23.123426", "sep": 1.19, "type": "PSF"}]}, "33.83880 -3.32220": {"n_box": 63, "off": [], "on": [{"mag_r": "23.300726", "sep": 0.2, "type": "REX"}]}, "33.90466 +3.87704": {"n_box": 54, "off": [], "on": [{"mag_r": "24.678896", "sep": 0.49, "type": "PSF"}]}, "330.02536 +19.68680": {"n_box": 46, "off": [], "on": []}, "330.09773 +1.72336": {"n_box": 37, "off": [], "on": [{"mag_r": "23.747612", "sep": 1.48, "type": "REX"}]}, "330.24601 -3.46081": {"n_box": 53, "off": [], "on": []}, "330.26550 -0.90764": {"n_box": 62, "off": [], "on": []}, "330.43338 +5.56656": {"n_box": 48, "off": [], "on": [{"mag_r": "22.714836", "sep": 0.22, "type": "EXP"}]}, "330.48802 +1.15422": {"n_box": 53, "off": [], "on": []}, "331.34786 +28.76995": {"n_box": 46, "off": [], "on": []}, "331.51907 +18.00178": {"n_box": 43, "off": [], "on": []}, "331.73930 -0.17771": {"n_box": 49, "off": [], "on": [{"mag_r": "22.926777", "sep": 1.27, "type": "REX"}]}, "332.07143 +27.39413": {"n_box": 46, "off": [], "on": [{"mag_r": "23.796581", "sep": 0.59, "type": "PSF"}]}, "332.20016 +9.72473": {"n_box": 39, "off": [], "on": []}, "332.34656 +11.21364": {"n_box": 26, "off": [], "on": []}, "333.01441 -1.87111": {"n_box": 40, "off": [], "on": []}, "333.02203 +25.97755": {"n_box": 43, "off": [], "on": []}, "333.34403 +1.06710": {"n_box": 66, "off": [], "on": [{"mag_r": "23.834637", "sep": 1.28, "type": "REX"}]}, "333.34403 +1.06711": {"n_box": 66, "off": [], "on": [{"mag_r": "23.834637", "sep": 1.28, "type": "REX"}]}, "333.77516 -0.04109": {"n_box": 51, "off": [], "on": [{"mag_r": "23.510683", "sep": 0.87, "type": "REX"}]}, "333.92393 +0.90804": {"n_box": 60, "off": [], "on": []}, "333.99815 +0.81846": {"n_box": 51, "off": [], "on": []}, "334.00687 +2.25662": {"n_box": 37, "off": [], "on": [{"mag_r": "23.191551", "sep": 1.12, "type": "REX"}]}, "334.00687 +2.25663": {"n_box": 37, "off": [], "on": [{"mag_r": "23.191551", "sep": 1.11, "type": "REX"}]}, "334.28376 +21.09451": {"n_box": 39, "off": [], "on": [{"mag_r": "22.988224", "sep": 0.31, "type": "REX"}]}, "334.95502 +0.05802": {"n_box": 70, "off": [], "on": []}, "335.44952 +12.06092": {"n_box": 27, "off": [], "on": []}, "335.76822 +22.79343": {"n_box": 32, "off": [{"mag_r": "23.768398", "sep": 1.34, "type": "PSF"}], "on": [{"mag_r": "23.189873", "sep": 0.33, "type": "PSF"}]}, "335.83041 +27.07267": {"n_box": 27, "off": [], "on": []}, "336.95291 +28.14091": {"n_box": 32, "off": [], "on": [{"mag_r": "21.862318", "sep": 0.11, "type": "REX"}]}, "337.16243 +10.90127": {"n_box": 41, "off": [], "on": []}, "337.31616 +14.60938": {"n_box": 42, "off": [], "on": []}, "337.97305 +30.02881": {"n_box": 41, "off": [], "on": []}, "338.41448 -1.38291": {"n_box": 45, "off": [], "on": [{"mag_r": "24.385025", "sep": 0.59, "type": "PSF"}]}, "338.74297 +1.78289": {"n_box": 124, "off": [], "on": [{"mag_r": "23.25489", "sep": 1.16, "type": "REX"}]}, "338.86013 +5.15433": {"n_box": 35, "off": [], "on": []}, "338.87279 +32.04927": {"n_box": 46, "off": [], "on": [{"mag_r": "23.962273", "sep": 0.58, "type": "REX"}]}, "338.98836 +33.05879": {"n_box": 30, "off": [], "on": [{"mag_r": "23.994534", "sep": 1.42, "type": "PSF"}]}, "339.26289 +1.01374": {"n_box": 100, "off": [], "on": []}, "339.37538 +0.47986": {"n_box": 79, "off": [], "on": []}, "339.72913 +32.70817": {"n_box": 29, "off": [], "on": []}, "339.87381 -1.91610": {"n_box": 52, "off": [], "on": [{"mag_r": "22.745426", "sep": 0.76, "type": "REX"}]}, "339.87381 -1.91611": {"n_box": 52, "off": [], "on": [{"mag_r": "22.745426", "sep": 0.79, "type": "REX"}]}, "339.98194 +18.25923": {"n_box": 45, "off": [], "on": []}, "34.63218 +0.31933": {"n_box": 47, "off": [], "on": []}, "34.63913 -4.70647": {"n_box": 64, "off": [], "on": []}, "34.82483 -4.62084": {"n_box": 52, "off": [], "on": []}, "34.84357 +0.03436": {"n_box": 59, "off": [], "on": [{"mag_r": "22.198904", "sep": 1.24, "type": "DEV"}]}, "340.30450 +4.70490": {"n_box": 17, "off": [], "on": []}, "340.69460 +0.81991": {"n_box": 34, "off": [], "on": []}, "340.97474 -0.18974": {"n_box": 60, "off": [], "on": []}, "341.53251 -0.88862": {"n_box": 56, "off": [], "on": []}, "341.73824 +28.23175": {"n_box": 36, "off": [], "on": []}, "342.08965 +19.97818": {"n_box": 21, "off": [], "on": []}, "342.10685 +28.25421": {"n_box": 30, "off": [], "on": []}, "342.63333 +28.60711": {"n_box": 24, "off": [{"mag_r": "24.954205", "sep": 0.94, "type": "PSF"}], "on": []}, "343.26612 +29.34915": {"n_box": 37, "off": [], "on": [{"mag_r": "23.299168", "sep": 0.4, "type": "REX"}]}, "343.49323 -0.89142": {"n_box": 66, "off": [{"mag_r": "20.248363", "sep": 0.47, "type": "SER"}], "on": []}, "343.65339 +13.46747": {"n_box": 27, "off": [], "on": [{"mag_r": "22.652874", "sep": 0.94, "type": "REX"}]}, "343.78545 +4.84850": {"n_box": 18, "off": [], "on": []}, "343.90920 +9.13216": {"n_box": 37, "off": [], "on": []}, "344.07832 +4.31560": {"n_box": 19, "off": [], "on": [{"mag_r": "23.43848", "sep": 1.07, "type": "REX"}]}, "344.67859 +25.91339": {"n_box": 45, "off": [], "on": [{"mag_r": "23.227627", "sep": 0.65, "type": "REX"}]}, "344.79376 +0.66996": {"n_box": 66, "off": [], "on": [{"mag_r": "24.69374", "sep": 0.88, "type": "PSF"}]}, "344.96597 +27.46981": {"n_box": 29, "off": [], "on": [{"mag_r": "23.787611", "sep": 1.18, "type": "PSF"}]}, "344.98975 +23.64985": {"n_box": 38, "off": [], "on": [{"mag_r": "22.845411", "sep": 0.64, "type": "REX"}]}, "345.06797 +0.94566": {"n_box": 72, "off": [], "on": []}, "345.33907 +0.36194": {"n_box": 56, "off": [], "on": [{"mag_r": "24.467318", "sep": 0.2, "type": "PSF"}]}, "345.58702 +0.01646": {"n_box": 46, "off": [{"mag_r": "23.921497", "sep": 1.26, "type": "EXP"}], "on": []}, "345.84646 +12.02219": {"n_box": 28, "off": [], "on": []}, "345.84970 +0.21344": {"n_box": 53, "off": [], "on": []}, "346.23755 -1.22741": {"n_box": 58, "off": [], "on": []}, "346.84868 +2.38008": {"n_box": 40, "off": [], "on": []}, "347.16955 +22.15864": {"n_box": 41, "off": [{"mag_r": "20.596268", "sep": 1.22, "type": "REX"}], "on": []}, "347.29596 +3.52835": {"n_box": 41, "off": [], "on": [{"mag_r": "22.994389", "sep": 1.07, "type": "REX"}]}, "347.40610 -1.25233": {"n_box": 66, "off": [], "on": [{"mag_r": "23.724669", "sep": 0.66, "type": "REX"}]}, "347.40610 -1.25234": {"n_box": 66, "off": [], "on": [{"mag_r": "23.724669", "sep": 0.69, "type": "REX"}]}, "347.48707 +10.35645": {"n_box": 35, "off": [], "on": []}, "347.50669 -0.26122": {"n_box": 94, "off": [{"mag_r": "26.18538", "sep": 1.4, "type": "REX"}], "on": []}, "347.77106 -0.98257": {"n_box": 40, "off": [], "on": []}, "347.95014 -1.77493": {"n_box": 26, "off": [], "on": []}, "348.17625 +27.40934": {"n_box": 39, "off": [], "on": [{"mag_r": "22.72554", "sep": 0.07, "type": "PSF"}]}, "348.32325 -0.06942": {"n_box": 53, "off": [], "on": []}, "348.35694 +27.49394": {"n_box": 28, "off": [], "on": [{"mag_r": "22.719118", "sep": 0.83, "type": "REX"}]}, "348.51670 -1.61090": {"n_box": 46, "off": [{"mag_r": "23.387434", "sep": 1.4, "type": "EXP"}], "on": []}, "349.22782 +16.47324": {"n_box": 39, "off": [], "on": [{"mag_r": "22.709913", "sep": 0.88, "type": "REX"}]}, "349.59914 +27.54950": {"n_box": 51, "off": [{"mag_r": "23.831947", "sep": 1.28, "type": "REX"}], "on": [{"mag_r": "22.13667", "sep": 0.7, "type": "EXP"}]}, "349.72909 -0.20676": {"n_box": 137, "off": [], "on": []}, "349.85906 +33.83025": {"n_box": 29, "off": [], "on": [{"mag_r": "inf", "sep": 0.79, "type": "REX"}]}, "349.92909 -0.46255": {"n_box": 100, "off": [], "on": []}, "349.93218 +14.01043": {"n_box": 27, "off": [], "on": []}, "35.29845 -4.39749": {"n_box": 62, "off": [], "on": []}, "35.58291 -3.84615": {"n_box": 63, "off": [], "on": []}, "35.75865 +4.13560": {"n_box": 68, "off": [], "on": [{"mag_r": "25.276958", "sep": 0.41, "type": "PSF"}]}, "35.82414 -4.02717": {"n_box": 72, "off": [], "on": []}, "35.90259 +0.31456": {"n_box": 39, "off": [], "on": []}, "35.93424 +5.21363": {"n_box": 19, "off": [], "on": [{"mag_r": "23.617199", "sep": 0.65, "type": "PSF"}]}, "350.26431 +21.01340": {"n_box": 33, "off": [], "on": [{"mag_r": "22.12761", "sep": 0.17, "type": "EXP"}]}, "350.27271 +1.05179": {"n_box": 50, "off": [], "on": [{"mag_r": "22.800793", "sep": 1.49, "type": "REX"}]}, "350.28601 +12.48980": {"n_box": 36, "off": [], "on": []}, "350.47644 +5.70297": {"n_box": 31, "off": [{"mag_r": "20.716455", "sep": 0.62, "type": "PSF"}], "on": []}, "350.64099 -0.65834": {"n_box": 69, "off": [], "on": []}, "351.36997 +6.09305": {"n_box": 42, "off": [], "on": []}, "351.51853 +27.44095": {"n_box": 46, "off": [], "on": []}, "351.59614 +22.80545": {"n_box": 22, "off": [], "on": [{"mag_r": "22.948008", "sep": 1.06, "type": "REX"}]}, "351.70531 +9.00480": {"n_box": 25, "off": [], "on": []}, "351.83798 +12.76186": {"n_box": 29, "off": [], "on": []}, "351.87950 +32.23415": {"n_box": 23, "off": [], "on": []}, "351.91720 +23.76834": {"n_box": 34, "off": [], "on": [{"mag_r": "22.769287", "sep": 0.74, "type": "EXP"}]}, "352.22442 +11.99608": {"n_box": 29, "off": [], "on": []}, "352.46159 +9.79077": {"n_box": 21, "off": [], "on": []}, "352.86480 +28.24316": {"n_box": 34, "off": [], "on": [{"mag_r": "23.378153", "sep": 1.01, "type": "REX"}]}, "352.88576 -0.62412": {"n_box": 62, "off": [], "on": []}, "353.25152 +11.61177": {"n_box": 28, "off": [], "on": [{"mag_r": "24.449211", "sep": 0.38, "type": "PSF"}]}, "353.38404 -1.92837": {"n_box": 47, "off": [], "on": []}, "353.86311 +9.93507": {"n_box": 35, "off": [], "on": [{"mag_r": "23.697456", "sep": 1.0, "type": "PSF"}]}, "353.86311 +9.93508": {"n_box": 35, "off": [], "on": [{"mag_r": "23.697456", "sep": 1.03, "type": "PSF"}]}, "353.92909 +28.93645": {"n_box": 34, "off": [], "on": []}, "353.93257 +1.11723": {"n_box": 47, "off": [], "on": []}, "353.97427 +2.73742": {"n_box": 35, "off": [], "on": []}, "354.02480 +8.53677": {"n_box": 29, "off": [], "on": []}, "354.29545 -1.46132": {"n_box": 66, "off": [], "on": []}, "354.48998 -0.82578": {"n_box": 70, "off": [], "on": []}, "354.53931 +32.87612": {"n_box": 13, "off": [], "on": []}, "354.67660 +4.51919": {"n_box": 24, "off": [], "on": []}, "355.05918 +27.08038": {"n_box": 25, "off": [], "on": [{"mag_r": "23.415028", "sep": 0.42, "type": "REX"}]}, "355.52036 +4.47937": {"n_box": 27, "off": [], "on": []}, "355.68318 +25.99462": {"n_box": 42, "off": [], "on": [{"mag_r": "22.607018", "sep": 0.67, "type": "EXP"}]}, "355.78154 -1.17089": {"n_box": 51, "off": [{"mag_r": "23.346148", "sep": 1.14, "type": "REX"}], "on": []}, "356.11357 +2.99874": {"n_box": 36, "off": [], "on": [{"mag_r": "23.162794", "sep": 1.06, "type": "REX"}]}, "356.51546 +10.42117": {"n_box": 29, "off": [], "on": []}, "357.47632 -1.24691": {"n_box": 45, "off": [], "on": []}, "357.71615 +20.03853": {"n_box": 40, "off": [], "on": [{"mag_r": "22.946241", "sep": 0.73, "type": "REX"}]}, "357.85425 +2.95924": {"n_box": 26, "off": [], "on": [{"mag_r": "22.235004", "sep": 0.83, "type": "REX"}]}, "357.90796 +3.69790": {"n_box": 39, "off": [], "on": []}, "357.98081 +31.67673": {"n_box": 38, "off": [], "on": []}, "358.23067 +21.83901": {"n_box": 31, "off": [], "on": []}, "358.37912 +10.34212": {"n_box": 28, "off": [], "on": []}, "358.59319 +31.14755": {"n_box": 41, "off": [], "on": []}, "358.76816 +11.13747": {"n_box": 39, "off": [], "on": [{"mag_r": "23.093369", "sep": 1.18, "type": "PSF"}, {"mag_r": "23.759514", "sep": 1.45, "type": "REX"}]}, "358.97428 +6.74106": {"n_box": 25, "off": [], "on": [{"mag_r": "23.454725", "sep": 0.89, "type": "REX"}]}, "359.02189 -0.20735": {"n_box": 90, "off": [], "on": [{"mag_r": "22.87069", "sep": 0.79, "type": "EXP"}]}, "359.34383 -0.28593": {"n_box": 117, "off": [], "on": [{"mag_r": "24.162504", "sep": 0.05, "type": "PSF"}]}, "359.68110 +25.90286": {"n_box": 31, "off": [], "on": [{"mag_r": "23.949757", "sep": 1.01, "type": "REX"}]}, "359.74040 +29.82073": {"n_box": 21, "off": [], "on": []}, "359.86337 +17.19140": {"n_box": 29, "off": [], "on": []}, "36.11523 -4.66384": {"n_box": 104, "off": [], "on": []}, "36.36194 -4.09706": {"n_box": 120, "off": [], "on": []}, "36.41814 +1.09013": {"n_box": 136, "off": [], "on": []}, "36.55109 -3.64300": {"n_box": 90, "off": [], "on": []}, "36.62604 -0.03611": {"n_box": 39, "off": [], "on": []}, "36.65408 -0.61257": {"n_box": 58, "off": [], "on": []}, "36.66082 -0.91445": {"n_box": 64, "off": [], "on": []}, "36.66859 -5.22794": {"n_box": 89, "off": [], "on": []}, "36.66860 -5.22794": {"n_box": 89, "off": [], "on": []}, "36.80240 -0.83937": {"n_box": 51, "off": [], "on": [{"mag_r": "23.08873", "sep": 1.02, "type": "EXP"}]}, "36.90258 -0.15338": {"n_box": 93, "off": [], "on": []}, "36.94920 +0.65184": {"n_box": 144, "off": [], "on": [{"mag_r": "25.09459", "sep": 0.42, "type": "PSF"}]}, "37.16390 -0.84505": {"n_box": 65, "off": [], "on": []}, "38.27722 -3.66352": {"n_box": 75, "off": [], "on": []}, "38.27723 -3.66352": {"n_box": 75, "off": [], "on": []}, "38.28261 +0.30162": {"n_box": 64, "off": [], "on": []}, "38.41456 -5.80651": {"n_box": 67, "off": [], "on": []}, "38.78704 +4.47999": {"n_box": 81, "off": [], "on": []}, "39.13023 -0.07494": {"n_box": 71, "off": [], "on": []}, "39.57418 -0.46018": {"n_box": 72, "off": [], "on": []}, "39.63046 +0.98739": {"n_box": 61, "off": [], "on": [{"mag_r": "22.510365", "sep": 0.88, "type": "EXP"}]}, "39.67602 -0.34814": {"n_box": 48, "off": [{"mag_r": "23.858326", "sep": 0.58, "type": "REX"}], "on": []}, "4.13084 -3.05673": {"n_box": 34, "off": [], "on": [{"mag_r": "23.48462", "sep": 0.33, "type": "PSF"}]}, "41.09791 -4.98461": {"n_box": 41, "off": [], "on": []}, "41.11542 -7.41403": {"n_box": 67, "off": [], "on": [{"mag_r": "22.073769", "sep": 0.57, "type": "SER"}]}, "41.49016 +2.04388": {"n_box": 57, "off": [], "on": []}, "41.57260 -1.06696": {"n_box": 73, "off": [], "on": [{"mag_r": "22.013287", "sep": 0.63, "type": "EXP"}]}, "41.63872 +0.93028": {"n_box": 61, "off": [], "on": []}, "41.73174 +1.94811": {"n_box": 47, "off": [], "on": [{"mag_r": "24.032974", "sep": 0.7, "type": "REX"}]}, "41.79909 -4.18037": {"n_box": 64, "off": [], "on": []}, "42.07036 +1.04653": {"n_box": 43, "off": [{"mag_r": "23.545979", "sep": 0.92, "type": "EXP"}], "on": []}, "42.07037 +1.04653": {"n_box": 43, "off": [{"mag_r": "23.545979", "sep": 0.95, "type": "EXP"}], "on": []}, "42.39276 +0.41205": {"n_box": 75, "off": [], "on": [{"mag_r": "25.370424", "sep": 0.59, "type": "PSF"}]}, "42.83437 -2.19336": {"n_box": 63, "off": [], "on": [{"mag_r": "22.897036", "sep": 0.9, "type": "EXP"}]}, "42.96166 -3.54319": {"n_box": 42, "off": [], "on": [{"mag_r": "22.837278", "sep": 1.2, "type": "REX"}]}, "43.03338 +3.81370": {"n_box": 45, "off": [], "on": [{"mag_r": "22.483658", "sep": 0.87, "type": "EXP"}]}, "43.42777 -4.40445": {"n_box": 57, "off": [], "on": [{"mag_r": "23.047915", "sep": 1.12, "type": "REX"}]}, "44.54972 +3.29675": {"n_box": 37, "off": [], "on": []}, "44.79146 -0.66512": {"n_box": 55, "off": [], "on": []}, "44.84492 +2.04204": {"n_box": 36, "off": [], "on": []}, "44.84493 +2.04204": {"n_box": 36, "off": [], "on": []}, "5.58985 +1.51164": {"n_box": 78, "off": [], "on": [{"mag_r": "23.125124", "sep": 0.1, "type": "DEV"}]}, "5.64920 +10.01893": {"n_box": 34, "off": [], "on": [{"mag_r": "23.487091", "sep": 0.36, "type": "REX"}]}, "5.69920 +21.05018": {"n_box": 27, "off": [], "on": []}, "5.70526 +2.47821": {"n_box": 53, "off": [], "on": [{"mag_r": "22.714993", "sep": 0.68, "type": "DEV"}]}, "5.81552 +4.68086": {"n_box": 45, "off": [], "on": [{"mag_r": "24.280296", "sep": 1.17, "type": "PSF"}]}, "5.94048 -8.09513": {"n_box": 34, "off": [], "on": []}, "6.12767 +32.80421": {"n_box": 24, "off": [], "on": []}, "6.31764 +0.75325": {"n_box": 55, "off": [], "on": []}, "6.69252 +29.17193": {"n_box": 35, "off": [], "on": []}, "6.80041 +19.54964": {"n_box": 17, "off": [], "on": [{"mag_r": "23.060192", "sep": 0.56, "type": "REX"}]}, "6.89799 -3.38536": {"n_box": 51, "off": [], "on": [{"mag_r": "23.421366", "sep": 1.08, "type": "EXP"}]}, "7.27573 +0.01951": {"n_box": 116, "off": [], "on": [{"mag_r": "22.858234", "sep": 0.74, "type": "EXP"}]}, "7.30164 +8.37396": {"n_box": 21, "off": [], "on": []}, "7.34677 -2.39604": {"n_box": 61, "off": [], "on": [{"mag_r": "25.04663", "sep": 0.19, "type": "PSF"}]}, "7.88804 +0.23955": {"n_box": 96, "off": [], "on": []}, "7.94167 +26.75743": {"n_box": 30, "off": [], "on": []}, "8.25903 +11.43477": {"n_box": 32, "off": [{"mag_r": "22.752554", "sep": 0.95, "type": "REX"}], "on": []}, "8.32091 -6.63983": {"n_box": 64, "off": [], "on": []}, "8.85574 -5.23858": {"n_box": 62, "off": [], "on": [{"mag_r": "22.842785", "sep": 0.7, "type": "REX"}]}, "8.92712 -3.94683": {"n_box": 58, "off": [], "on": []}, "9.55784 -4.99710": {"n_box": 57, "off": [], "on": []}, "9.73412 +3.15201": {"n_box": 66, "off": [], "on": []}, "9.74883 +30.63794": {"n_box": 43, "off": [{"mag_r": "22.233143", "sep": 0.68, "type": "REX"}], "on": []}, "9.75533 +10.01026": {"n_box": 16, "off": [], "on": []}, "9.85462 +19.11969": {"n_box": 29, "off": [], "on": []}, "9.95057 +2.65555": {"n_box": 31, "off": [], "on": []}, "9.97659 +3.27137": {"n_box": 50, "off": [], "on": []}} \ No newline at end of file diff --git a/papers/sky_fibres/data/skyfibre_exposures.json b/papers/sky_fibres/data/skyfibre_exposures.json new file mode 100644 index 0000000000000000000000000000000000000000..7b06f1d76a8f45f6bebdc07a0ae95492f9e1bec2 --- /dev/null +++ b/papers/sky_fibres/data/skyfibre_exposures.json @@ -0,0 +1 @@ +{"spPlate-6063-56077.fits 18 6308.121 +1": {"frames": [["b1", "00144525", 0.58, 67108864, true], ["b1", "00144526", 0.34, 201326592, false], ["r1", "00144525", -0.96, 8388608, true], ["r1", "00144526", 33.41, 524288, true]], "verdict": "one exposure", "snr": 51.64731823766361, "galaxy": false}, "spPlate-7412-57107.fits 243 6325.575 +1": {"frames": [["b1", "00197291", 0.0, 71303168, false], ["r1", "00197291", 16.03, 589824, true]], "verdict": "one frame", "snr": 49.66258467029132, "galaxy": false}, "spPlate-5373-56010.fits 90 6341.617 +1": {"frames": [["b1", "00141654", 0.0, 71303168, false], ["b1", "00141655", 0.0, 71303168, false], ["b1", "00141656", 0.0, 71303168, false], ["r1", "00141654", 16.15, 524288, true], ["r1", "00141655", 1.18, 851968, true], ["r1", "00141656", 2.66, 524288, true]], "verdict": "one exposure", "snr": 45.37805953136552, "galaxy": false}, "spPlate-5294-55922.fits 562 4961.352 +1": {"frames": [["b2", "00137536", 15.18, 0, true], ["b2", "00137537", 13.85, 33554432, true], ["b2", "00137538", 14.65, 0, true], ["b2", "00137539", 13.93, 0, true], ["b2", "00137540", 11.52, 0, true], ["b2", "00137747", 17.69, 0, true], ["b2", "00137748", 18.75, 0, true], ["b2", "00137749", 18.79, 0, true]], "verdict": "persistent", "snr": 44.30923006954261, "galaxy": false}, "spPlate-8286-57062.fits 720 5883.016 +1": {"frames": [["b2", "00194353", 39.04, 33554452, true], ["b2", "00194354", 38.66, 33554452, true], ["b2", "00194355", 39.33, 20, true], ["b2", "00194356", 38.62, 33554452, true], ["b2", "00194357", 39.35, 33554452, true], ["r2", "00194353", -0.88, 0, true], ["r2", "00194354", -2.18, 167772160, true], ["r2", "00194355", -1.78, 33554432, true], ["r2", "00194356", -4.2, 33554432, true], ["r2", "00194357", 1.3, 0, true]], "verdict": "one camera", "snr": 40.27490828485542, "galaxy": false}, "spPlate-8305-57729.fits 415 6734.417 +1": {"frames": [["b1", "00233201", 0.0, 83886080, false], ["b1", "00233202", 0.0, 83886080, false], ["r1", "00233201", 10.39, 589824, true], ["r1", "00233202", 1.97, 34144256, true]], "verdict": "one exposure", "snr": 38.93999050890859, "galaxy": false}, "spPlate-7881-57282.fits 118 8074.209 +1": {"frames": [["r1", "00204375", 40.59, 34078720, true], ["r1", "00204376", 1.19, 851968, true], ["r1", "00204429", 2.08, 33554432, true]], "verdict": "one exposure", "snr": 36.28389128001611, "galaxy": false}, "spPlate-6422-56328.fits 90 7670.082 +1": {"frames": [["r1", "00155501", 9.44, 0, true], ["r1", "00155502", 13.66, 0, true], ["r1", "00155503", 12.11, 0, true], ["r1", "00155688", 16.99, 0, true], ["r1", "00155689", 16.28, 0, true]], "verdict": "persistent", "snr": 32.45038755525066, "galaxy": true}, "spPlate-8497-58161.fits 40 7392.648 +1": {"frames": [["r1", "00262307", 14.9, 0, true], ["r1", "00262308", 12.48, 0, true], ["r1", "00262309", 15.92, 0, true], ["r1", "00262310", 18.56, 33554432, true]], "verdict": "persistent", "snr": 31.25277474454601, "galaxy": true}, "spPlate-4348-55559.fits 700 8753.868 +1": {"frames": [["r2", "00124321", 6.67, 0, true], ["r2", "00124322", 12.56, 0, true], ["r2", "00124323", 14.86, 0, true], ["r2", "00124324", 15.41, 0, true], ["r2", "00124325", 16.41, 0, true]], "verdict": "persistent", "snr": 30.723210902966773, "galaxy": true}, "spPlate-8286-57062.fits 720 5446.280 +1": {"frames": [["b2", "00194353", 17.23, 33554452, true], ["b2", "00194354", 18.24, 20, true], ["b2", "00194355", 17.83, 20, true], ["b2", "00194356", 17.9, 33554452, true], ["b2", "00194357", 16.35, 20, true], ["r2", "00194353", 0.0, 71434240, false], ["r2", "00194354", 0.0, 71434240, false], ["r2", "00194355", 0.0, 71434240, false], ["r2", "00194356", 0.0, 71434240, false], ["r2", "00194357", 0.0, 71434240, false]], "verdict": "persistent", "snr": 29.712361336819438, "galaxy": false}, "spPlate-3940-55327.fits 364 8115.214 +1": {"frames": [["r1", "00115135", 14.82, 0, true], ["r1", "00115136", 12.54, 0, true], ["r1", "00115137", 13.05, 0, true], ["r1", "00115138", 13.4, 0, true], ["r1", "00115139", 11.39, 0, true]], "verdict": "persistent", "snr": 28.251243597039124, "galaxy": true}, "spPlate-6497-56329.fits 300 8482.034 +1": {"frames": [["r1", "00155803", 11.55, 0, true], ["r1", "00155804", 11.8, 0, true], ["r1", "00155805", 11.09, 0, true], ["r1", "00155806", 11.36, 0, true], ["r1", "00155807", 11.02, 0, true], ["r1", "00155808", 11.99, 0, true], ["r1", "00155809", 11.33, 0, true]], "verdict": "persistent", "snr": 27.6296705110565, "galaxy": true}, "spPlate-4376-55863.fits 124 9059.412 +1": {"frames": [["r1", "00135484", 8.15, 0, true], ["r1", "00135485", 9.6, 0, true], ["r1", "00135486", 9.7, 0, true], ["r1", "00135487", 9.07, 0, true], ["r1", "00135698", 9.71, 0, true], ["r1", "00135699", 10.81, 0, true], ["r1", "00135700", 10.88, 0, true], ["r1", "00135701", 11.19, 0, true]], "verdict": "persistent", "snr": 25.096846823305764, "galaxy": true}, "spPlate-7095-56625.fits 482 6759.273 +1": {"frames": [["b1", "00169987", 0.0, 83886080, false], ["b1", "00169988", 0.0, 83886080, false], ["b1", "00169989", 0.0, 83886080, false], ["b1", "00170082", 0.0, 83886080, false], ["b1", "00170083", 0.0, 83886080, false], ["b1", "00170084", 0.0, 83886080, false], ["b1", "00170085", 0.0, 83886080, false], ["b1", "00170086", 0.0, 83886080, false], ["r1", "00169987", 7.98, 0, true], ["r1", "00169988", 7.17, 0, true], ["r1", "00169989", 7.35, 0, true], ["r1", "00170082", 6.39, 0, true], ["r1", "00170083", 6.62, 0, true], ["r1", "00170084", 8.18, 0, true], ["r1", "00170085", 8.24, 0, true], ["r1", "00170086", 7.04, 0, true]], "verdict": "persistent", "snr": 23.380194012029918, "galaxy": true}, "spPlate-6596-56331.fits 534 8184.648 +1": {"frames": [["r2", "00155744", 10.68, 0, true], ["r2", "00155745", 9.55, 0, true], ["r2", "00155746", 7.83, 0, true], ["r2", "00155929", 9.58, 0, true], ["r2", "00155930", 6.77, 8388608, true], ["r2", "00155931", 8.44, 0, true]], "verdict": "persistent", "snr": 23.239623717503818, "galaxy": false}, "spPlate-5953-56092.fits 506 3662.689 +1": {"frames": [["b2", "00144782", 1.65, 0, true], ["b2", "00144783", -1.43, 0, true], ["b2", "00144784", -2.34, 0, true], ["b2", "00144785", -1.94, 262144, true], ["b2", "00144835", 1.16, 524288, true], ["b2", "00144836", 2.32, 34078720, true], ["b2", "00144837", -1.34, 0, true], ["b2", "00144838", -1.34, 0, true], ["b2", "00144839", -1.78, 851968, true], ["b2", "00144840", -2.33, 851968, true], ["b2", "00144841", -0.81, 851968, true]], "verdict": "unclear", "snr": 23.205496911439567, "galaxy": false}, "spPlate-7183-56658.fits 450 8693.607 +1": {"frames": [["r1", "00170720", 2.92, 0, true], ["r1", "00170721", 4.11, 0, true], ["r1", "00170779", 5.84, 0, true], ["r1", "00170780", 6.06, 0, true], ["r1", "00170781", 5.9, 0, true], ["r1", "00170782", 5.25, 0, true], ["r1", "00170783", 5.04, 0, true], ["r1", "00171561", 6.19, 0, true], ["r1", "00171562", 5.11, 0, true], ["r1", "00171563", 5.39, 0, true], ["r1", "00171564", 3.45, 0, true], ["r1", "00171658", 10.19, 0, true], ["r1", "00171659", 7.33, 0, true], ["r1", "00171660", 6.48, 0, true]], "verdict": "persistent", "snr": 21.729425576924918, "galaxy": true}, "spPlate-3847-55298.fits 412 7728.585 +1": {"frames": [["r1", "00113038", 10.92, 0, true], ["r1", "00113039", 8.49, 0, true], ["r1", "00113040", 11.4, 0, true], ["r1", "00113041", 10.93, 0, true], ["r1", "00113102", 5.14, 0, true], ["r1", "00113103", 6.79, 0, true], ["r1", "00113104", 7.36, 33554432, true]], "verdict": "persistent", "snr": 21.460539234069778, "galaxy": true}, "spPlate-8393-57864.fits 18 8003.870 +1": {"frames": [["r1", "00242385", 8.84, 0, true], ["r1", "00242386", 9.23, 0, true], ["r1", "00242387", 8.09, 0, true], ["r1", "00242388", 8.03, 0, true], ["r1", "00242389", 8.58, 0, true], ["r1", "00242390", 7.61, 0, true]], "verdict": "persistent", "snr": 20.960446451713857, "galaxy": false}, "spPlate-8732-57418.fits 829 7204.436 +1": {"frames": [["b2", "00213293", 0.0, 83886080, false], ["b2", "00213294", 0.0, 83886080, false], ["b2", "00213295", 0.0, 83886080, false], ["b2", "00213385", 0.0, 83886080, false], ["b2", "00213386", 0.0, 83886080, false], ["b2", "00213387", 0.0, 83886080, false], ["b2", "00213388", 0.0, 83886080, false], ["b2", "00213480", 0.0, 83886080, false], ["r2", "00213293", 8.54, 0, true], ["r2", "00213294", 7.73, 0, true], ["r2", "00213295", 9.61, 0, true], ["r2", "00213385", 4.34, 0, true], ["r2", "00213386", 5.23, 0, true], ["r2", "00213387", 5.23, 0, true], ["r2", "00213388", 4.48, 0, true], ["r2", "00213480", 4.54, 0, true]], "verdict": "persistent", "snr": 20.780622389527984, "galaxy": true}, "spPlate-3847-55588.fits 418 7728.585 +1": {"frames": [["r1", "00125333", 4.89, 8388608, true], ["r1", "00125334", 6.41, 8388608, true], ["r1", "00125335", 5.93, 8388608, true], ["r1", "00125336", 5.9, 8388608, true], ["r1", "00125349", 4.58, 8388608, true], ["r1", "00125352", 5.21, 8388608, true], ["r1", "00125353", 4.67, 8388608, true], ["r1", "00125354", 4.94, 8388608, true], ["r1", "00125355", 3.56, 8388608, true], ["r1", "00125738", 6.62, 8388608, true], ["r1", "00125739", 6.42, 8388608, true], ["r1", "00125740", 4.96, 8388608, true], ["r1", "00125815", 6.3, 8388608, true], ["r1", "00125816", 6.78, 8388608, true], ["r1", "00125817", 6.89, 8388608, true], ["r1", "00125818", 5.44, 8388608, true]], "verdict": "persistent", "snr": 20.645102390900362, "galaxy": true}, "spPlate-10440-58138.fits 745 6578.093 +1": {"frames": [["b2", "00260167", 0.0, 71434240, false], ["b2", "00260168", 0.0, 71434240, false], ["b2", "00260169", 0.0, 71434240, false], ["r2", "00260167", 13.12, 33554432, true], ["r2", "00260168", 14.47, 0, true], ["r2", "00260169", 10.76, 0, true]], "verdict": "persistent", "snr": 20.36611897610479, "galaxy": true}, "spPlate-3552-55089.fits 628 8252.775 +1": {"frames": [["r2", "00101459", 0.0, 100663296, false], ["r2", "00101465", 0.0, 67633280, false]], "verdict": "no frame", "snr": 20.29896589085076, "galaxy": false}, "spPlate-4533-55855.fits 414 8117.083 +1": {"frames": [["r1", "00135180", 6.56, 0, true], ["r1", "00135181", 8.61, 0, true], ["r1", "00135182", 8.62, 0, true], ["r1", "00135183", 8.41, 0, true], ["r1", "00135184", 9.64, 0, true]], "verdict": "persistent", "snr": 20.120163699446763, "galaxy": true}, "spPlate-5130-55835.fits 42 8741.783 +1": {"frames": [["r1", "00134735", 9.18, 0, true], ["r1", "00134736", 9.65, 0, true], ["r1", "00134737", 10.1, 0, true], ["r1", "00134738", 11.09, 0, true]], "verdict": "persistent", "snr": 19.87636957893153, "galaxy": true}, "spPlate-10261-58462.fits 581 7837.905 +1": {"frames": [["r2", "00278648", 8.43, 0, true], ["r2", "00278649", 7.64, 0, true], ["r2", "00278650", 8.22, 0, true], ["r2", "00278651", 7.59, 0, true], ["r2", "00278652", 9.47, 0, true]], "verdict": "persistent", "snr": 19.81865144547457, "galaxy": false}, "spPlate-7142-56567.fits 606 9063.585 +1": {"frames": [["r2", "00167028", 14.88, 33554432, true], ["r2", "00167029", 13.22, 0, true], ["r2", "00167030", 11.03, 0, true], ["r2", "00167031", 9.85, 0, true]], "verdict": "persistent", "snr": 19.691718509377896, "galaxy": true}, "spPlate-5378-56011.fits 408 6148.936 +1": {"frames": [["b1", "00141725", 6.17, 0, true], ["b1", "00141726", 5.86, 0, true], ["b1", "00141727", 5.91, 0, true], ["r1", "00141725", 7.79, 0, true], ["r1", "00141726", 9.06, 0, true], ["r1", "00141727", 6.85, 0, true]], "verdict": "persistent", "snr": 19.397836704132747, "galaxy": true}, "spPlate-7057-56593.fits 810 6564.475 +1": {"frames": [["b2", "00167948", 0.0, 71434240, false], ["b2", "00168429", 0.0, 71434240, false], ["b2", "00168430", 0.0, 71434240, false], ["b2", "00168431", 0.0, 71434240, false], ["b2", "00168432", 0.0, 71434240, false], ["r2", "00167948", 4.21, 0, true], ["r2", "00168429", 8.85, 0, true], ["r2", "00168430", 6.98, 0, true], ["r2", "00168431", 5.96, 0, true], ["r2", "00168432", 6.83, 0, true]], "verdict": "persistent", "snr": 19.034795881557955, "galaxy": true}, "spPlate-3639-55146.fits 132 7901.326 +1": {"frames": [["r1", "00103275", 0.0, 503316608, false], ["r1", "00103276", 0.0, 234881152, false], ["r1", "00103277", 0.0, 234881152, false], ["r1", "00103280", 0.0, 469762176, false], ["r1", "00103281", 0.0, 234881152, false]], "verdict": "no frame", "snr": 19.029388556305236, "galaxy": false}, "spPlate-4994-55739.fits 370 7659.493 +1": {"frames": [["r1", "00132115", 7.17, 0, true], ["r1", "00132116", 6.74, 0, true], ["r1", "00132304", 8.57, 0, true], ["r1", "00132305", 8.86, 0, true], ["r1", "00132306", 9.91, 0, true]], "verdict": "persistent", "snr": 18.723888201734976, "galaxy": true}, "spPlate-4740-55651.fits 178 8607.955 +1": {"frames": [["r1", "00128768", 7.16, 0, true], ["r1", "00128769", 4.55, 0, true], ["r1", "00128770", 2.5, 0, true], ["r1", "00128840", 7.07, 0, true], ["r1", "00128841", 3.9, 0, true], ["r1", "00128842", 4.74, 0, true], ["r1", "00128843", 6.13, 0, true], ["r1", "00128844", 7.55, 0, true], ["r1", "00128845", 6.77, 0, true]], "verdict": "persistent", "snr": 18.621855350307204, "galaxy": true}, "spPlate-4210-55444.fits 831 9084.478 +1": {"frames": [["r2", "00118920", 7.29, 0, true], ["r2", "00118921", 7.42, 0, true], ["r2", "00118922", 10.63, 0, true], ["r2", "00118923", 9.1, 0, true], ["r2", "00118924", 8.88, 0, true], ["r2", "00118925", 8.56, 0, true]], "verdict": "persistent", "snr": 18.5745807195322, "galaxy": false}, "spPlate-3552-55089.fits 628 8218.641 +1": {"frames": [["r2", "00101459", 0.0, 100663296, false], ["r2", "00101465", 0.0, 67108992, false]], "verdict": "no frame", "snr": 18.49711260073684, "galaxy": false}, "spPlate-7057-56593.fits 810 8605.973 +1": {"frames": [["r2", "00167948", 4.73, 0, true], ["r2", "00168429", 9.25, 0, true], ["r2", "00168430", 6.75, 0, true], ["r2", "00168431", 8.57, 0, true], ["r2", "00168432", 8.27, 0, true]], "verdict": "persistent", "snr": 18.47366005904459, "galaxy": true}, "spPlate-7681-57042.fits 706 7387.543 +1": {"frames": [["r2", "00193010", 5.77, 0, true], ["r2", "00193011", 6.36, 0, true], ["r2", "00193012", 6.64, 0, true], ["r2", "00193013", 7.23, 0, true], ["r2", "00193014", 6.51, 0, true], ["r2", "00193110", 7.29, 0, true], ["r2", "00193111", 5.74, 0, true]], "verdict": "persistent", "snr": 18.24537880701899, "galaxy": true}, "spPlate-9141-57663.fits 653 6611.500 +1": {"frames": [["b2", "00228348", 0.0, 71434240, false], ["b2", "00228349", 0.0, 71434240, false], ["b2", "00228350", 0.0, 71434240, false], ["b2", "00228351", 0.0, 71434240, false], ["b2", "00228352", 0.0, 71434240, false], ["r2", "00228348", 6.87, 0, true], ["r2", "00228349", 7.16, 0, true], ["r2", "00228350", 6.59, 0, true], ["r2", "00228351", 6.85, 0, true], ["r2", "00228352", 3.87, 0, true]], "verdict": "persistent", "snr": 18.168123778909816, "galaxy": true}, "spPlate-9235-58021.fits 161 7684.224 +1": {"frames": [["r1", "00249798", 6.45, 0, true], ["r1", "00249799", 7.91, 0, true], ["r1", "00249800", 8.95, 0, true], ["r1", "00250286", 7.61, 0, true]], "verdict": "persistent", "snr": 18.11686946738274, "galaxy": false}, "spPlate-11650-58508.fits 168 4323.147 +1": {"frames": [["b1", "00281758", 0.79, 0, true], ["b1", "00281759", -0.99, 851968, true], ["b1", "00281760", 2.6, 0, true], ["b1", "00281761", -2.46, 0, true]], "verdict": "unclear", "snr": 17.75272922891832, "galaxy": false}, "spPlate-10918-58254.fits 365 8476.177 +1": {"frames": [["r1", "00268898", 9.81, 0, true], ["r1", "00268899", 9.67, 0, true], ["r1", "00268900", 8.78, 0, true]], "verdict": "persistent", "snr": 17.727961993091807, "galaxy": false}, "spPlate-5294-55922.fits 562 9534.546 +1": {"frames": [["r2", "00137536", 4.16, 0, true], ["r2", "00137537", 7.42, 0, true], ["r2", "00137538", 5.5, 0, true], ["r2", "00137539", 5.79, 0, true], ["r2", "00137540", 4.69, 0, true], ["r2", "00137747", 8.56, 0, true], ["r2", "00137748", 7.67, 0, true], ["r2", "00137749", 8.62, 0, true]], "verdict": "persistent", "snr": 17.563114877994828, "galaxy": false}, "spPlate-6044-56090.fits 107 7003.256 +1": {"frames": [["b1", "00144714", 0.0, 83886080, false], ["b1", "00144715", 0.0, 83886080, false], ["b1", "00144716", 0.0, 83886080, false], ["r1", "00144714", 8.64, 0, true], ["r1", "00144715", 8.72, 0, true], ["r1", "00144716", 8.36, 0, true]], "verdict": "persistent", "snr": 17.554761239538653, "galaxy": true}, "spPlate-10745-58227.fits 159 3621.596 +1": {"frames": [["b1", "00266903", 1.91, 34078720, true], ["b1", "00266904", -0.74, 0, true], ["b1", "00266905", 2.31, 524288, true]], "verdict": "unclear", "snr": 17.403025522723055, "galaxy": false}, "spPlate-11045-58485.fits 624 4741.328 +1": {"frames": [["b2", "00278875", -0.59, 33554432, true], ["b2", "00278876", 2.66, 0, true], ["b2", "00279882", 1.67, 851968, true], ["b2", "00279883", 2.43, 33554432, true], ["b2", "00279884", 4.11, 524288, true]], "verdict": "persistent", "snr": 16.961549457165116, "galaxy": false}, "spPlate-9162-58040.fits 928 8250.875 +1": {"frames": [["r2", "00251825", 5.55, 0, true], ["r2", "00251826", 7.45, 0, true], ["r2", "00251827", 9.52, 0, true], ["r2", "00251828", 8.18, 0, true]], "verdict": "persistent", "snr": 16.881050118786504, "galaxy": true}, "spPlate-5773-56009.fits 848 4324.143 +1": {"frames": [["b2", "00141559", 7.44, 0, true], ["b2", "00141560", 8.58, 0, true], ["b2", "00141561", 8.59, 0, true]], "verdict": "persistent", "snr": 16.819135785268106, "galaxy": false}, "spPlate-6881-56540.fits 554 8802.378 +1": {"frames": [["r2", "00165690", 6.18, 0, true], ["r2", "00165692", 5.4, 0, true], ["r2", "00165694", 4.52, 0, true], ["r2", "00165824", 7.1, 0, true], ["r2", "00165825", 7.43, 0, true], ["r2", "00165826", 5.44, 0, true]], "verdict": "persistent", "snr": 16.627943135501123, "galaxy": true}, "spPlate-6490-56330.fits 730 8367.582 +1": {"frames": [["r2", "00155881", 7.47, 589824, true], ["r2", "00155882", 4.46, 0, true], ["r2", "00155883", 7.44, 0, true], ["r2", "00155884", 7.51, 0, true]], "verdict": "persistent", "snr": 16.612175715254118, "galaxy": false}, "spPlate-9575-57786.fits 786 8566.433 +1": {"frames": [["r2", "00236752", 7.86, 0, true], ["r2", "00236753", 8.16, 0, true], ["r2", "00236754", 7.6, 0, true]], "verdict": "persistent", "snr": 16.57270909232735, "galaxy": true}, "spPlate-4381-55824.fits 888 8237.587 +1": {"frames": [["r2", "00133504", 7.75, 0, true], ["r2", "00133505", 5.58, 0, true], ["r2", "00133506", 5.7, 0, true], ["r2", "00133507", 5.22, 0, true], ["r2", "00133508", 3.81, 0, true], ["r2", "00133509", 5.76, 0, true], ["r2", "00134083", 7.75, 0, true], ["r2", "00134084", 4.89, 0, true]], "verdict": "persistent", "snr": 16.542690972434457, "galaxy": false}, "spPlate-11287-58429.fits 836 8361.804 +1": {"frames": [["r2", "00275726", -31425313327576.61, 8978432, true], ["r2", "00275727", 1.0044169387596853e+17, 589824, true], ["r2", "00275728", 1.3979375598007866e+17, 589824, true], ["r2", "00275729", 0.0, 589824, true], ["r2", "00275730", 5.821825896560956e+18, 589824, true]], "verdict": "one exposure", "snr": 16.517208890484397, "galaxy": false}, "spPlate-6165-56208.fits 788 7216.058 +1": {"frames": [["b2", "00148445", 0.0, 83886080, false], ["b2", "00148446", 0.0, 83886080, false], ["b2", "00148447", 0.0, 83886080, false], ["b2", "00148448", 0.0, 83886080, false], ["r2", "00148445", 7.62, 0, true], ["r2", "00148446", 4.9, 0, true], ["r2", "00148447", 7.0, 0, true], ["r2", "00148448", 7.12, 0, true]], "verdict": "persistent", "snr": 16.450480554674872, "galaxy": true}, "spPlate-8521-58175.fits 620 7803.690 +1": {"frames": [["r2", "00263250", 10.86, 0, true], ["r2", "00263251", 10.08, 0, true], ["r2", "00263252", 9.29, 0, true]], "verdict": "persistent", "snr": 16.450171002863684, "galaxy": false}, "spPlate-6743-56385.fits 218 6645.077 +1": {"frames": [["b1", "00159438", 0.0, 83886080, false], ["b1", "00159439", 0.0, 83886080, false], ["b1", "00159440", 0.0, 83886080, false], ["b1", "00159441", 0.0, 83886080, false], ["b1", "00159442", 0.0, 83886080, false], ["r1", "00159438", 6.26, 0, true], ["r1", "00159439", 9.77, 0, true], ["r1", "00159440", 6.12, 0, true], ["r1", "00159441", 6.56, 0, true], ["r1", "00159442", 5.98, 0, true]], "verdict": "persistent", "snr": 16.42750668586108, "galaxy": true}, "spPlate-4279-55508.fits 88 8040.814 +1": {"frames": [["r1", "00121853", 6.13, 0, true], ["r1", "00121854", 7.25, 0, true], ["r1", "00121855", 7.06, 0, true], ["r1", "00121856", 6.18, 0, true], ["r1", "00121857", 6.58, 0, true]], "verdict": "persistent", "snr": 16.298709764253843, "galaxy": true}, "spPlate-8872-57422.fits 663 7033.962 +1": {"frames": [["b2", "00213733", 0.0, 83886080, false], ["b2", "00213734", 0.0, 83886080, false], ["b2", "00213735", 0.0, 83886080, false], ["b2", "00213736", 0.0, 83886080, false], ["b2", "00213737", 0.0, 83886080, false], ["r2", "00213733", 5.39, 0, true], ["r2", "00213734", 6.18, 0, true], ["r2", "00213735", 7.48, 0, true], ["r2", "00213736", 6.81, 0, true], ["r2", "00213737", 5.4, 0, true]], "verdict": "persistent", "snr": 16.12913882255341, "galaxy": false}, "spPlate-10655-58172.fits 810 8845.044 +1": {"frames": [["r2", "00262804", 6.65, 0, true], ["r2", "00262805", 6.3, 0, true], ["r2", "00262806", 5.87, 0, true], ["r2", "00262912", 5.94, 0, true], ["r2", "00262913", 5.18, 0, true], ["r2", "00262914", 6.43, 0, true], ["r2", "00262915", 6.41, 0, true], ["r2", "00262916", 7.25, 0, true]], "verdict": "persistent", "snr": 16.09813671864759, "galaxy": false}, "spPlate-8125-56955.fits 833 9287.525 +1": {"frames": [["r2", "00187830", 7.91, 589824, true], ["r2", "00187831", 8.26, 589824, true], ["r2", "00187832", 6.79, 589824, true], ["r2", "00187833", 9.17, 589824, true], ["r2", "00187834", 7.59, 589824, true]], "verdict": "persistent", "snr": 15.838247298470629, "galaxy": false}, "spPlate-11071-58429.fits 56 7535.291 +1": {"frames": [["r1", "00275751", 77.39, 0, true], ["r1", "00275752", 0.0, 0, true], ["r1", "00275753", 885239171281.43, 0, true], ["r1", "00275754", 19179796272.31, 0, true], ["r1", "00275755", 0.0, 0, true]], "verdict": "one exposure", "snr": 15.675369843148673, "galaxy": false}, "spPlate-11341-58428.fits 120 7204.436 +1": {"frames": [["r1", "00275513", 5.68, 0, true], ["r1", "00275614", 6.68, 0, true], ["r1", "00275615", 6.26, 0, true], ["r1", "00275616", 4.35, 589824, true], ["r1", "00275617", 7.04, 0, true], ["r1", "00275618", 5.91, 0, true]], "verdict": "persistent", "snr": 15.63161833379175, "galaxy": false}, "spPlate-7700-58016.fits 873 8048.223 +1": {"frames": [["r2", "00249580", 4.22, 0, true], ["r2", "00249581", 6.7, 0, true], ["r2", "00249582", 7.4, 0, true], ["r2", "00249583", 7.45, 0, true], ["r2", "00249584", 6.08, 0, true]], "verdict": "persistent", "snr": 15.584777863475278, "galaxy": false}, "spPlate-4361-55831.fits 872 7040.443 +1": {"frames": [["b2", "00134454", 0.0, 83886080, false], ["b2", "00134455", 0.0, 83886080, false], ["b2", "00134456", 0.0, 83886080, false], ["b2", "00134526", 0.0, 83886080, false], ["b2", "00134527", 0.0, 83886080, false], ["r2", "00134454", 6.74, 0, true], ["r2", "00134455", 7.15, 0, true], ["r2", "00134456", 6.5, 0, true], ["r2", "00134526", 3.42, 0, true], ["r2", "00134527", 6.16, 0, true]], "verdict": "persistent", "snr": 15.37373465616402, "galaxy": false}, "spPlate-6633-56369.fits 490 6795.165 +1": {"frames": [["b1", "00158434", 0.0, 83886080, false], ["b1", "00158435", 0.0, 83886080, false], ["b1", "00158436", 0.0, 83886080, false], ["r1", "00158434", 7.93, 0, true], ["r1", "00158435", 6.71, 0, true], ["r1", "00158436", 8.12, 0, true]], "verdict": "persistent", "snr": 15.253497463311781, "galaxy": true}, "spPlate-8750-58401.fits 690 7161.434 +1": {"frames": [["b2", "00273354", 0.0, 83886080, false], ["b2", "00273355", 0.0, 83886080, false], ["b2", "00273356", 0.0, 83886080, false], ["b2", "00273357", 0.0, 83886080, false], ["r2", "00273354", 6.84, 0, true], ["r2", "00273355", 7.09, 0, true], ["r2", "00273356", 5.47, 0, true], ["r2", "00273357", 6.4, 0, true]], "verdict": "persistent", "snr": 15.221575512678918, "galaxy": true}, "spPlate-7646-57570.fits 208 7254.375 +1": {"frames": [["r1", "00222644", 4.89, 0, true], ["r1", "00222645", 5.66, 0, true], ["r1", "00222646", 6.56, 0, true], ["r1", "00223876", 4.04, 0, true], ["r1", "00223877", 4.12, 0, true], ["r1", "00223953", 4.94, 0, true], ["r1", "00223954", 3.81, 0, true]], "verdict": "persistent", "snr": 15.122734676053058, "galaxy": true}, "spPlate-5703-56190.fits 288 7087.613 +1": {"frames": [["b1", "00147650", 0.0, 83886080, false], ["b1", "00147651", 0.0, 83886080, false], ["b1", "00147652", 0.0, 83886080, false], ["r1", "00147650", 6.77, 0, true], ["r1", "00147651", 6.39, 0, true], ["r1", "00147652", 7.14, 0, true]], "verdict": "persistent", "snr": 15.064540298062369, "galaxy": true}, "spPlate-9607-58085.fits 527 8367.582 +1": {"frames": [["r2", "00255794", 2.99, 589824, true], ["r2", "00255795", 5.4, 589824, true], ["r2", "00255796", 4.2, 589824, true], ["r2", "00255797", 3.3, 589824, true], ["r2", "00255798", 5.34, 589824, true], ["r2", "00255799", 0.0, 851968, false]], "verdict": "persistent", "snr": 15.052444793727446, "galaxy": false}, "spPlate-6497-56329.fits 300 6315.387 +1": {"frames": [["b1", "00155803", 1.49, 0, true], ["b1", "00155804", 0.95, 0, true], ["b1", "00155805", 0.78, 0, true], ["b1", "00155806", 0.84, 0, true], ["b1", "00155807", 2.55, 0, true], ["b1", "00155808", 0.0, 67108864, false], ["b1", "00155809", 0.88, 0, true], ["r1", "00155803", 5.53, 0, true], ["r1", "00155804", 5.76, 0, true], ["r1", "00155805", 5.76, 0, true], ["r1", "00155806", 5.63, 0, true], ["r1", "00155807", 4.37, 0, true], ["r1", "00155808", 7.08, 0, true], ["r1", "00155809", 6.73, 0, true]], "verdict": "persistent", "snr": 15.030358712590859, "galaxy": true}, "spPlate-8734-57642.fits 192 9141.132 +1": {"frames": [["r1", "00227070", 6.82, 0, true], ["r1", "00227071", 7.5, 0, true], ["r1", "00227072", 6.96, 0, true], ["r1", "00227073", 5.99, 0, true], ["r1", "00227074", 7.56, 0, true]], "verdict": "persistent", "snr": 15.007793246730007, "galaxy": false}, "spPlate-7339-56722.fits 736 4732.602 +1": {"frames": [["b2", "00176329", 5.2, 0, true], ["b2", "00176330", 4.35, 0, true], ["b2", "00176331", 3.8, 0, true], ["b2", "00176332", 4.72, 0, true], ["b2", "00176333", 4.27, 0, true], ["b2", "00176334", 4.49, 0, true], ["b2", "00176335", 4.65, 0, true], ["b2", "00176336", 5.96, 0, true], ["b2", "00176337", 6.05, 33554432, true]], "verdict": "persistent", "snr": 14.936137157243259, "galaxy": false}, "spPlate-7338-57127.fits 502 3814.170 +1": {"frames": [["b2", "00198224", -1.41, 131076, true], ["b2", "00198225", 2.19, 131076, true], ["b2", "00198226", -2.04, 131076, true], ["b2", "00198227", 1.2, 983044, true], ["b2", "00198228", 2.11, 655364, true], ["b2", "00198229", 1.64, 33685508, true]], "verdict": "unclear", "snr": 14.904043281618303, "galaxy": false}, "spPlate-4563-55617.fits 722 5551.368 +1": {"frames": [["b2", "00126991", 7.83, 0, true], ["b2", "00126992", 6.54, 0, true], ["b2", "00126993", 6.3, 0, true], ["b2", "00126994", 7.44, 0, true], ["r2", "00126991", 0.0, 71434240, false], ["r2", "00126992", 0.0, 71434240, false], ["r2", "00126993", 0.0, 71434240, false], ["r2", "00126994", 0.0, 71434240, false]], "verdict": "persistent", "snr": 14.892803489896274, "galaxy": true}, "spPlate-4859-55684.fits 38 4628.071 +1": {"frames": [["b1", "00130479", 0.88, 0, true], ["b1", "00130480", 2.9, 34078720, true], ["b1", "00130481", -1.04, 0, true], ["b1", "00130482", 2.48, 851968, true], ["b1", "00130483", -1.79, 0, true], ["b1", "00130484", 2.74, 524288, true], ["b1", "00130485", 2.92, 0, true]], "verdict": "persistent", "snr": 14.804242824384646, "galaxy": false}, "spPlate-9382-57746.fits 452 6821.816 +1": {"frames": [["b1", "00234273", 0.0, 83886080, false], ["b1", "00234274", 0.0, 83886080, false], ["b1", "00234275", 0.0, 83886080, false], ["b1", "00234276", 0.0, 83886080, false], ["r1", "00234273", 6.99, 589824, true], ["r1", "00234274", 5.51, 0, true], ["r1", "00234275", 3.97, 0, true], ["r1", "00234276", 6.23, 0, true]], "verdict": "persistent", "snr": 14.768371605745951, "galaxy": true}, "spPlate-4038-55363.fits 444 7076.198 +1": {"frames": [["b1", "00116672", 0.0, 83886080, false], ["b1", "00116673", 0.0, 83886080, false], ["b1", "00116674", 0.0, 83886080, false], ["b1", "00116731", 0.0, 83886080, false], ["b1", "00116732", 0.0, 83886080, false], ["b1", "00116733", 0.0, 83886080, false], ["r1", "00116672", 4.99, 0, true], ["r1", "00116673", 6.19, 0, true], ["r1", "00116674", 4.23, 0, true], ["r1", "00116731", 4.61, 0, true], ["r1", "00116732", 4.58, 0, true], ["r1", "00116733", 4.25, 0, true]], "verdict": "persistent", "snr": 14.742063348792518, "galaxy": true}, "spPlate-9442-58076.fits 984 6971.079 +1": {"frames": [["b2", "00254803", 0.0, 83886080, false], ["b2", "00254804", 0.0, 83886080, false], ["b2", "00254805", 0.0, 83886080, false], ["b2", "00254806", 0.0, 83886080, false], ["b2", "00254807", 0.0, 83886080, false], ["b2", "00254808", 0.0, 83886080, false], ["r2", "00254803", 6.02, 0, true], ["r2", "00254804", 4.18, 0, true], ["r2", "00254805", 4.51, 0, true], ["r2", "00254806", 5.28, 0, true], ["r2", "00254807", 3.36, 0, true], ["r2", "00254808", 5.66, 0, true]], "verdict": "persistent", "snr": 14.712846340337352, "galaxy": true}, "spPlate-3791-55501.fits 898 9774.623 +1": {"frames": [["r2", "00121390", 7.13, 0, true], ["r2", "00121391", 6.53, 0, true], ["r2", "00121392", 7.02, 0, true], ["r2", "00121393", 7.19, 0, true], ["r2", "00121394", 4.17, 0, true], ["r2", "00121395", 6.68, 0, true]], "verdict": "persistent", "snr": 14.685817392401328, "galaxy": false}, "spPlate-11385-58523.fits 836 8367.582 +1": {"frames": [["r2", "00282977", 6.58, 589824, true], ["r2", "00282978", 8.69, 589824, true], ["r2", "00282979", 7.81, 589824, true]], "verdict": "persistent", "snr": 14.657964405403257, "galaxy": false}, "spPlate-3552-55089.fits 628 6156.020 +1": {"frames": [["b2", "00101459", 0.0, 67108864, false], ["b2", "00101465", 0.0, 67108992, false], ["r2", "00101459", -7.025348673159562e+18, 100663296, true], ["r2", "00101465", -227132580.77, 67108992, true]], "verdict": "unclear", "snr": 14.576271876519712, "galaxy": false}, "spPlate-7835-56986.fits 322 6480.373 +1": {"frames": [["b1", "00189735", 0.0, 71434240, false], ["b1", "00189736", 0.0, 71434240, false], ["b1", "00189737", 0.0, 71434240, false], ["b1", "00189738", 0.0, 71434240, false], ["b1", "00189739", 0.0, 71434240, false], ["b1", "00189817", 0.0, 71434240, false], ["b1", "00189818", 0.0, 71434240, false], ["b1", "00189819", 0.0, 71434240, false], ["r1", "00189735", 4.9, 0, true], ["r1", "00189736", 2.89, 0, true], ["r1", "00189737", 5.1, 0, true], ["r1", "00189738", 4.63, 0, true], ["r1", "00189739", 2.64, 851968, true], ["r1", "00189817", 3.89, 0, true], ["r1", "00189818", 4.42, 0, true], ["r1", "00189819", 3.96, 0, true]], "verdict": "persistent", "snr": 14.572607271590451, "galaxy": true}, "spPlate-8526-57898.fits 317 7003.256 +1": {"frames": [["b1", "00244688", 0.0, 83886080, false], ["b1", "00244689", 0.0, 83886080, false], ["b1", "00244690", 0.0, 83886080, false], ["b1", "00244691", 0.0, 83886080, false], ["b1", "00244692", 0.0, 83886080, false], ["b1", "00244774", 0.0, 83886080, false], ["b1", "00244775", 0.0, 83886080, false], ["r1", "00244688", 5.61, 0, true], ["r1", "00244689", 5.42, 0, true], ["r1", "00244690", 4.6, 0, true], ["r1", "00244691", 6.2, 0, true], ["r1", "00244692", 5.48, 0, true], ["r1", "00244774", 2.47, 851968, true], ["r1", "00244775", 2.74, 0, true]], "verdict": "persistent", "snr": 14.5484261766251, "galaxy": true}, "spPlate-3828-55539.fits 352 6490.826 +1": {"frames": [["b1", "00123604", 0.0, 71434240, false], ["b1", "00123605", 0.0, 71434240, false], ["b1", "00123606", 0.0, 71434240, false], ["b1", "00123607", 0.0, 71434240, false], ["b1", "00123608", 0.0, 71434240, false], ["b1", "00123689", 0.0, 71434240, false], ["b1", "00123690", 0.0, 71434240, false], ["b1", "00123691", 0.0, 71434240, false], ["b1", "00123692", 0.0, 71434240, false], ["b1", "00123693", 0.0, 71434240, false], ["r1", "00123604", 4.33, 0, true], ["r1", "00123605", 4.92, 0, true], ["r1", "00123606", 5.06, 0, true], ["r1", "00123607", 4.29, 0, true], ["r1", "00123608", 4.46, 0, true], ["r1", "00123689", 3.67, 0, true], ["r1", "00123690", 5.11, 0, true], ["r1", "00123691", 5.15, 0, true], ["r1", "00123692", 4.06, 0, true], ["r1", "00123693", 4.49, 0, true]], "verdict": "persistent", "snr": 14.45886697451968, "galaxy": false}, "spPlate-8286-57062.fits 720 5761.028 +1": {"frames": [["b2", "00194353", 8.43, 20, true], ["b2", "00194354", 8.33, 20, true], ["b2", "00194355", 7.47, 20, true], ["b2", "00194356", 6.37, 20, true], ["b2", "00194357", 6.46, 20, true], ["r2", "00194353", 0.0, 71434240, false], ["r2", "00194354", 0.0, 71434240, false], ["r2", "00194355", 0.0, 71434240, false], ["r2", "00194356", 0.0, 71434240, false], ["r2", "00194357", 0.0, 71434240, false]], "verdict": "persistent", "snr": 14.367333515112879, "galaxy": false}, "spPlate-4349-55803.fits 292 7311.391 +1": {"frames": [["r1", "00133304", 4.05, 0, true], ["r1", "00133305", 5.83, 0, true], ["r1", "00133306", 4.88, 0, true], ["r1", "00133307", 6.23, 0, true], ["r1", "00133308", 5.05, 0, true], ["r1", "00133309", 5.33, 0, true]], "verdict": "persistent", "snr": 14.360221442979105, "galaxy": false}, "spPlate-9144-57666.fits 648 5803.634 +1": {"frames": [["b2", "00228644", 3.3, 0, true], ["b2", "00228645", 4.21, 0, true], ["b2", "00228646", 3.29, 0, true], ["b2", "00228647", 5.5, 0, true], ["b2", "00228648", 3.2, 0, true], ["b2", "00228649", 6.17, 0, true], ["b2", "00228650", 6.14, 0, true], ["b2", "00228651", 4.15, 0, true], ["b2", "00228652", 5.29, 0, true], ["r2", "00228644", 0.0, 71434240, false], ["r2", "00228645", 0.0, 71434240, false], ["r2", "00228646", 0.0, 71434240, false], ["r2", "00228647", 0.0, 71434240, false], ["r2", "00228648", 0.0, 71434240, false], ["r2", "00228649", 0.0, 71434240, false], ["r2", "00228650", 0.0, 71434240, false], ["r2", "00228651", 0.0, 71434240, false], ["r2", "00228652", 0.0, 71434240, false]], "verdict": "persistent", "snr": 14.360174462008947, "galaxy": true}, "spPlate-9560-57805.fits 481 6617.592 +1": {"frames": [["b1", "00238036", 0.0, 83886080, false], ["b1", "00238037", 0.0, 83886080, false], ["b1", "00238038", 0.0, 83886080, false], ["r1", "00238036", -1.7, 0, true], ["r1", "00238037", 2.48, 524288, true], ["r1", "00238038", 4.82, 524288, true]], "verdict": "unclear", "snr": 14.317499537136028, "galaxy": false}, "spPlate-6293-56561.fits 132 7654.203 +1": {"frames": [["r1", "00166585", 6.9, 0, true], ["r1", "00166586", 5.87, 0, true], ["r1", "00166587", 4.05, 0, true], ["r1", "00166588", 6.25, 0, true], ["r1", "00166589", 6.41, 0, true], ["r1", "00166590", 6.1, 0, true]], "verdict": "persistent", "snr": 14.292739706998066, "galaxy": false}, "spPlate-10431-58137.fits 794 6572.037 +1": {"frames": [["b2", "00260041", 0.0, 71434240, false], ["b2", "00260042", 0.0, 71434240, false], ["b2", "00260043", 0.0, 71434240, false], ["r2", "00260041", 6.0, 0, true], ["r2", "00260042", 6.92, 0, true], ["r2", "00260043", 6.15, 0, true]], "verdict": "persistent", "snr": 14.249374996940583, "galaxy": false}, "spPlate-4038-55363.fits 444 9274.703 +1": {"frames": [["r1", "00116672", 4.27, 0, true], ["r1", "00116673", 4.63, 0, true], ["r1", "00116674", 4.52, 0, true], ["r1", "00116731", 5.14, 0, true], ["r1", "00116732", 7.45, 0, true], ["r1", "00116733", 5.74, 0, true]], "verdict": "persistent", "snr": 14.22437952005259, "galaxy": true}, "spPlate-10431-58137.fits 794 8741.783 +1": {"frames": [["r2", "00260041", 7.76, 0, true], ["r2", "00260042", 6.56, 0, true], ["r2", "00260043", 6.61, 0, true]], "verdict": "persistent", "snr": 14.217080987438637, "galaxy": false}, "spPlate-6725-56390.fits 622 8329.137 +1": {"frames": [["r2", "00159742", 2.48, 0, true], ["r2", "00159819", 6.47, 0, true], ["r2", "00159820", 5.31, 0, true], ["r2", "00159821", 6.99, 0, true], ["r2", "00159822", 6.91, 589824, true]], "verdict": "persistent", "snr": 14.20544134753468, "galaxy": false}, "spPlate-7699-57574.fits 95 8410.078 +1": {"frames": [["r1", "00224249", 5.58, 0, true], ["r1", "00224250", 6.39, 0, true], ["r1", "00224251", 5.79, 0, true], ["r1", "00224252", 5.71, 0, true], ["r1", "00224314", 5.26, 0, true]], "verdict": "persistent", "snr": 14.149180658401068, "galaxy": true}, "spPlate-6266-56223.fits 92 9257.634 +1": {"frames": [["r1", "00149556", 5.65, 0, true], ["r1", "00149557", 6.36, 0, true], ["r1", "00149654", 5.51, 0, true], ["r1", "00149655", 4.92, 0, true], ["r1", "00149656", 7.16, 0, true]], "verdict": "persistent", "snr": 14.12207738580573, "galaxy": false}, "spPlate-4300-55528.fits 812 6806.126 +1": {"frames": [["b2", "00122683", 0.0, 83886080, false], ["b2", "00122684", 0.0, 83886080, false], ["b2", "00122716", 0.0, 83886080, false], ["b2", "00122717", 0.0, 83886080, false], ["b2", "00122718", 0.0, 83886080, false], ["b2", "00122719", 0.0, 83886080, false], ["b2", "00122751", 0.0, 83886080, false], ["r2", "00122683", 4.23, 0, true], ["r2", "00122684", 3.87, 0, true], ["r2", "00122716", -2.71, 33554432, true], ["r2", "00122717", 4.63, 0, true], ["r2", "00122718", 5.12, 0, true], ["r2", "00122719", 6.28, 0, true], ["r2", "00122751", 4.9, 0, true]], "verdict": "persistent", "snr": 14.121337730103704, "galaxy": false}, "spPlate-3552-55089.fits 628 6040.877 +1": {"frames": [["b2", "00101459", 0.0, 100663296, false], ["b2", "00101465", 0.0, 67108992, false], ["r2", "00101459", 14.94, 100663296, true], ["r2", "00101465", 0.0, 100663424, true]], "verdict": "one exposure", "snr": 14.092320577423443, "galaxy": false}, "spPlate-7299-56686.fits 834 9274.703 +1": {"frames": [["r2", "00173758", 7.89, 34144272, true], ["r2", "00173759", 6.67, 589840, true], ["r2", "00173760", 7.35, 851984, true], ["r2", "00173761", 5.89, 589840, true], ["r2", "00173762", 2.45, 589840, true]], "verdict": "persistent", "snr": 14.072694747784942, "galaxy": false}, "spPlate-7057-56593.fits 810 4889.900 +1": {"frames": [["b2", "00167948", 2.19, 0, true], ["b2", "00168429", 6.33, 0, true], ["b2", "00168430", 5.36, 0, true], ["b2", "00168431", 5.48, 0, true], ["b2", "00168432", 5.58, 0, true]], "verdict": "persistent", "snr": 14.053913656128524, "galaxy": true}, "spPlate-3940-55327.fits 364 8037.112 +1": {"frames": [["r1", "00115135", 5.85, 0, true], ["r1", "00115136", 5.57, 0, true], ["r1", "00115137", 6.56, 0, true], ["r1", "00115138", 5.34, 0, true], ["r1", "00115139", 6.35, 0, true]], "verdict": "persistent", "snr": 14.044638303896447, "galaxy": true}, "spPlate-5739-55976.fits 150 8609.938 +1": {"frames": [["r1", "00139950", 9.04, 0, true], ["r1", "00139951", 6.57, 0, true], ["r1", "00139952", 9.65, 0, true]], "verdict": "persistent", "snr": 14.03932680666367, "galaxy": true}, "spPlate-6484-56358.fits 594 7488.589 +1": {"frames": [["r2", "00157471", 5.11, 0, true], ["r2", "00157472", 4.31, 0, true], ["r2", "00157473", 4.56, 0, true], ["r2", "00157474", 4.13, 8388608, true], ["r2", "00157644", 6.55, 0, true], ["r2", "00157645", 5.9, 0, true], ["r2", "00157646", 5.56, 0, true]], "verdict": "persistent", "snr": 14.039311280680124, "galaxy": true}, "spPlate-5710-56658.fits 876 8914.562 +1": {"frames": [["r2", "00171689", 4.46, 34144258, true], ["r2", "00171690", -1.73, 8978434, true], ["r2", "00171691", 1.9, 589826, true], ["r2", "00171692", -1.69, 589826, true]], "verdict": "unclear", "snr": 13.993224569349113, "galaxy": false}, "spPlate-9166-58051.fits 568 8050.076 +1": {"frames": [["r2", "00252786", 5.78, 8388608, true], ["r2", "00252787", 3.31, 8388608, true], ["r2", "00252788", 3.94, 8388608, true], ["r2", "00252789", 5.02, 8388608, true], ["r2", "00252790", 4.99, 8388608, true], ["r2", "00252791", 3.63, 8388608, true], ["r2", "00252792", 7.82, 42467328, true], ["r2", "00252793", 4.72, 8388608, true], ["r2", "00252794", 4.94, 41943040, true], ["r2", "00252858", 3.76, 8388608, true], ["r2", "00252859", 2.63, 8388608, true], ["r2", "00252860", 4.45, 8388608, true]], "verdict": "persistent", "snr": 13.915404951197372, "galaxy": false}, "spPlate-8286-57062.fits 720 5782.292 +1": {"frames": [["b2", "00194353", 7.17, 20, true], ["b2", "00194354", 6.82, 20, true], ["b2", "00194355", 7.72, 20, true], ["b2", "00194356", 5.08, 20, true], ["b2", "00194357", 4.71, 20, true], ["r2", "00194353", 0.0, 71434240, false], ["r2", "00194354", 0.0, 71434240, false], ["r2", "00194355", 0.0, 71434240, false], ["r2", "00194356", 0.0, 71434240, false], ["r2", "00194357", 0.0, 71434240, false]], "verdict": "persistent", "snr": 13.854475549367326, "galaxy": false}, "spPlate-6155-56245.fits 438 8169.585 +1": {"frames": [["r1", "00150805", 8.1, 0, true], ["r1", "00150806", 7.66, 524288, true], ["r1", "00150807", 7.62, 0, true]], "verdict": "persistent", "snr": 13.738650060798522, "galaxy": true}, "spPlate-4573-55587.fits 200 6674.212 +1": {"frames": [["b1", "00125713", 0.0, 83886080, false], ["b1", "00125714", 0.0, 83886080, false], ["b1", "00125715", 0.0, 83886080, false], ["b1", "00125716", 0.0, 83886080, false], ["b1", "00125717", 0.0, 83886080, false], ["b1", "00125718", 0.0, 83886080, false], ["b1", "00125719", 0.0, 83886080, false], ["r1", "00125713", 7.36, 0, true], ["r1", "00125714", 5.75, 0, true], ["r1", "00125715", 3.7, 0, true], ["r1", "00125716", 4.49, 0, true], ["r1", "00125717", 2.2, 0, true], ["r1", "00125718", 4.59, 0, true], ["r1", "00125719", 3.2, 0, true]], "verdict": "persistent", "snr": 13.735202606094465, "galaxy": false}, "spPlate-5693-56246.fits 374 5812.996 +1": {"frames": [["b1", "00150936", 0.74, 0, true], ["b1", "00150937", 1.22, 0, true], ["b1", "00150938", 1.89, 524288, true], ["b1", "00150939", 2.07, 0, true], ["b1", "00150940", -1.07, 0, true], ["b1", "00150941", -1.21, 0, true], ["r1", "00150936", -7.77, 0, true], ["r1", "00150937", -8.94, 0, true], ["r1", "00150938", -11.99, 0, true], ["r1", "00150939", -3.8, 0, true], ["r1", "00150940", -13.07, 0, true], ["r1", "00150941", -19.59, 0, true]], "verdict": "unclear", "snr": 13.65838119307157, "galaxy": false}, "spPlate-6044-56090.fits 107 9179.098 +1": {"frames": [["r1", "00144714", 8.61, 0, true], ["r1", "00144715", 6.97, 0, true], ["r1", "00144716", 7.29, 0, true]], "verdict": "persistent", "snr": 13.654381135459552, "galaxy": true}, "spPlate-4645-55623.fits 500 9512.617 +1": {"frames": [["r1", "00127261", -2.88, 33554433, true], ["r1", "00127501", -2.69, 1, true], ["r1", "00127502", -2.56, 1, true], ["r1", "00127503", -1.15, 1, true], ["r1", "00127504", 1.6, 1, true]], "verdict": "unclear", "snr": 13.652439602974598, "galaxy": false}, "spPlate-7512-56777.fits 45 5826.396 +1": {"frames": [["b1", "00178966", 2.04, 0, true], ["b1", "00178967", 2.89, 0, true], ["b1", "00179082", 5.11, 0, true], ["b1", "00179083", 4.97, 0, true], ["b1", "00179084", 3.74, 0, true], ["b1", "00179085", 3.69, 0, true], ["b1", "00179086", 4.13, 0, true], ["b1", "00179139", 4.09, 0, true], ["b1", "00179140", 5.1, 0, true], ["b1", "00179141", 4.79, 0, true], ["b1", "00179142", 3.15, 0, true], ["r1", "00178966", 0.0, 131072, false], ["r1", "00178967", 0.0, 131072, false], ["r1", "00179082", 0.0, 131072, false], ["r1", "00179083", 0.0, 131072, false], ["r1", "00179084", 0.0, 131072, false], ["r1", "00179085", 0.0, 131072, false], ["r1", "00179086", 0.0, 131072, false], ["r1", "00179139", 0.0, 131072, false], ["r1", "00179140", 0.0, 131072, false], ["r1", "00179141", 0.0, 131072, false], ["r1", "00179142", 0.0, 131072, false]], "verdict": "persistent", "snr": 13.644754709008712, "galaxy": true}, "spPlate-7606-56977.fits 311 5659.786 +1": {"frames": [["b1", "00189111", 3.88, 0, true], ["b1", "00189112", 3.77, 0, true], ["b1", "00189113", 3.66, 0, true], ["b1", "00189114", 4.53, 0, true], ["b1", "00189115", 6.12, 0, true], ["b1", "00189116", 5.39, 0, true], ["r1", "00189111", 0.0, 71434240, false], ["r1", "00189112", 0.0, 71434240, false], ["r1", "00189113", 0.0, 71434240, false], ["r1", "00189114", 0.0, 71434240, false], ["r1", "00189115", 0.0, 72024064, false], ["r1", "00189116", 0.0, 71434240, false]], "verdict": "persistent", "snr": 13.605993735614337, "galaxy": true}, "spPlate-7112-56666.fits 894 5189.195 +1": {"frames": [["b2", "00172431", 6.5, 0, true], ["b2", "00172432", 4.06, 0, true], ["b2", "00172433", 4.52, 0, true], ["b2", "00172435", 4.58, 0, true], ["b2", "00172436", 4.53, 0, true], ["b2", "00172437", 5.16, 33554432, true], ["b2", "00172438", 4.53, 0, true]], "verdict": "persistent", "snr": 13.589705985164342, "galaxy": false}, "spPlate-9575-57786.fits 786 6534.314 +1": {"frames": [["b2", "00236752", 0.0, 71434240, false], ["b2", "00236753", 0.0, 71434240, false], ["b2", "00236754", 0.0, 71434240, false], ["r2", "00236752", 6.73, 589824, true], ["r2", "00236753", 5.17, 0, true], ["r2", "00236754", 5.72, 0, true]], "verdict": "persistent", "snr": 13.579963562508576, "galaxy": true}, "spPlate-4189-55679.fits 27 3946.390 +1": {"frames": [["b1", "00130227", -0.47, 851968, true], ["b1", "00130228", 4.27, 524288, true], ["b1", "00130229", 0.85, 851968, true], ["b1", "00130230", -3.02, 851968, true]], "verdict": "unclear", "snr": 13.573080444382486, "galaxy": false}, "spPlate-10440-58138.fits 745 6514.784 +1": {"frames": [["b2", "00260167", 0.0, 71434240, false], ["b2", "00260168", 0.0, 71434240, false], ["b2", "00260169", 0.0, 71434240, false], ["r2", "00260167", 4.63, 0, true], ["r2", "00260168", 8.06, 589824, true], ["r2", "00260169", 6.68, 0, true]], "verdict": "persistent", "snr": 13.565893419772582, "galaxy": true}, "spPlate-7339-56768.fits 732 4732.602 +1": {"frames": [["b2", "00178706", 3.77, 0, true], ["b2", "00178707", 4.58, 0, true], ["b2", "00178708", 3.57, 0, true], ["b2", "00178709", 4.81, 0, true], ["b2", "00178710", 4.2, 0, true], ["b2", "00178711", 5.69, 0, true], ["b2", "00178712", 4.47, 0, true], ["b2", "00178713", 4.0, 0, true]], "verdict": "persistent", "snr": 13.535374855134286, "galaxy": false}, "spPlate-8743-57663.fits 718 3896.727 +1": {"frames": [["b2", "00227982", 5.79, 0, true], ["b2", "00227983", 3.88, 0, true], ["b2", "00227984", 4.44, 0, true], ["b2", "00228270", 4.14, 0, true], ["b2", "00228369", 5.64, 0, true], ["b2", "00228370", 3.09, 0, true]], "verdict": "persistent", "snr": 13.533489407325625, "galaxy": false}, "spPlate-3774-55244.fits 594 5865.432 +1": {"frames": [["b2", "00108442", 0.0, 0, false], ["b2", "00108443", 0.0, 0, false], ["b2", "00108444", 0.0, 0, false], ["b2", "00108552", 0.0, 0, false], ["b2", "00108553", 0.0, 0, false], ["b2", "00108554", 0.0, 0, false], ["b2", "00108625", 0.0, 0, false], ["b2", "00108626", 0.0, 0, false], ["b2", "00108627", 0.0, 0, false], ["b2", "00108628", 0.0, 0, false], ["r2", "00108442", -6.961160417377221e+17, 131072, true], ["r2", "00108443", -15.59, 131072, true], ["r2", "00108444", -5084.55, 131072, true], ["r2", "00108552", 23354964153960.64, 33554432, true], ["r2", "00108553", 4.26, 0, true], ["r2", "00108554", 0.0, 0, true], ["r2", "00108625", -11.42, 131072, true], ["r2", "00108626", 0.0, 131072, true], ["r2", "00108627", 72.2, 131072, true], ["r2", "00108628", -1488600116675997.0, 131072, true]], "verdict": "one exposure", "snr": 13.494950846272697, "galaxy": false}, "spPlate-4020-55332.fits 26 5486.558 +1": {"frames": [["b1", "00115230", 4.05, 0, true], ["b1", "00115231", 4.76, 0, true], ["b1", "00115353", 5.85, 0, true], ["b1", "00115354", 5.87, 524288, true], ["b1", "00115355", 4.21, 0, true], ["b1", "00115426", 5.18, 524288, true], ["b1", "00115427", 5.16, 0, true], ["r1", "00115230", 0.0, 71434240, false], ["r1", "00115231", 0.0, 71434240, false], ["r1", "00115353", 0.0, 71434240, false], ["r1", "00115354", 0.0, 71434240, false], ["r1", "00115355", 0.0, 71434240, false], ["r1", "00115426", 0.0, 71434240, false], ["r1", "00115427", 0.0, 71434240, false]], "verdict": "persistent", "snr": 13.484396622218952, "galaxy": true}, "spPlate-10239-58142.fits 81 7069.684 +1": {"frames": [["b1", "00260322", 0.0, 83886080, false], ["b1", "00260323", 0.0, 83886080, false], ["b1", "00260324", 0.0, 83886080, false], ["b1", "00260325", 0.0, 83886080, false], ["b1", "00260415", 0.0, 83886080, false], ["b1", "00260418", 0.0, 83886080, false], ["b1", "00260515", 0.0, 83886080, false], ["b1", "00260516", 0.0, 83886080, false], ["r1", "00260322", 4.05, 0, true], ["r1", "00260323", 4.87, 0, true], ["r1", "00260324", 5.41, 0, true], ["r1", "00260325", 4.93, 0, true], ["r1", "00260415", 2.08, 0, true], ["r1", "00260418", 2.92, 0, true], ["r1", "00260515", 4.51, 0, true], ["r1", "00260516", 3.51, 0, true]], "verdict": "persistent", "snr": 13.422631572114163, "galaxy": false}, "spPlate-6516-56571.fits 602 7353.600 +1": {"frames": [["r2", "00167399", 5.3, 0, true], ["r2", "00167400", 6.06, 0, true], ["r2", "00167401", 6.12, 0, true], ["r2", "00167402", 4.7, 0, true]], "verdict": "persistent", "snr": 13.368718529534167, "galaxy": true}, "spPlate-7691-57360.fits 729 7774.993 +1": {"frames": [["r2", "00209543", 5.81, 0, true], ["r2", "00209544", 6.32, 0, true], ["r2", "00209545", 5.29, 0, true], ["r2", "00209546", 3.66, 0, true]], "verdict": "persistent", "snr": 13.314897691327284, "galaxy": false}, "spPlate-7512-56777.fits 675 6350.384 +1": {"frames": [["b2", "00178966", 0.0, 71303168, false], ["b2", "00178967", 0.0, 71303168, false], ["b2", "00179082", 0.0, 71303168, false], ["b2", "00179083", 0.0, 71303168, false], ["b2", "00179084", 0.0, 71303168, false], ["b2", "00179085", 0.0, 71303168, false], ["b2", "00179086", 0.0, 71303168, false], ["b2", "00179139", 0.0, 71303168, false], ["b2", "00179140", 0.0, 71303168, false], ["b2", "00179141", 0.0, 71303168, false], ["b2", "00179142", 0.0, 71303168, false], ["r2", "00178966", -3.1, 0, true], ["r2", "00178967", 2.28, 0, true], ["r2", "00179082", 4.16, 0, true], ["r2", "00179083", 3.61, 0, true], ["r2", "00179084", 3.18, 0, true], ["r2", "00179085", 3.7, 0, true], ["r2", "00179086", 4.3, 0, true], ["r2", "00179139", 2.87, 0, true], ["r2", "00179140", 4.64, 0, true], ["r2", "00179141", 4.58, 0, true], ["r2", "00179142", 3.85, 0, true]], "verdict": "persistent", "snr": 13.301517487195508, "galaxy": true}, "spPlate-4732-55648.fits 448 7425.061 +1": {"frames": [["r1", "00128632", 5.11, 0, true], ["r1", "00128633", 3.13, 0, true], ["r1", "00128634", 6.06, 0, true], ["r1", "00128635", 6.81, 0, true], ["r1", "00128636", 5.91, 0, true]], "verdict": "persistent", "snr": 13.246914509991628, "galaxy": false}, "spPlate-8383-57518.fits 607 6795.165 +1": {"frames": [["b2", "00220777", 0.0, 83886080, false], ["b2", "00220778", 0.0, 83886080, false], ["b2", "00220779", 0.0, 83886080, false], ["b2", "00220780", 0.0, 83886080, false], ["b2", "00220781", 0.0, 83886080, false], ["r2", "00220777", 5.14, 0, true], ["r2", "00220778", 5.17, 0, true], ["r2", "00220779", 4.15, 0, true], ["r2", "00220780", 5.49, 0, true], ["r2", "00220781", 5.85, 0, true]], "verdict": "persistent", "snr": 13.235227369482875, "galaxy": false}, "spPlate-5198-55823.fits 408 6708.107 +1": {"frames": [["b1", "00134011", 0.0, 83886080, false], ["b1", "00134032", 0.0, 83886080, false], ["b1", "00134033", 0.0, 83886080, false], ["b1", "00134034", 0.0, 83886080, false], ["r1", "00134011", 3.84, 0, true], ["r1", "00134032", 6.98, 0, true], ["r1", "00134033", 4.72, 589824, true], ["r1", "00134034", 8.36, 0, true]], "verdict": "persistent", "snr": 13.233844052033026, "galaxy": true}, "spPlate-9411-58070.fits 807 6806.126 +1": {"frames": [["b2", "00254261", 0.0, 83886080, false], ["b2", "00254262", 0.0, 83886080, false], ["b2", "00254264", 0.0, 83886080, false], ["b2", "00254265", 0.0, 83886080, false], ["r2", "00254261", 3.94, 0, true], ["r2", "00254262", 4.72, 589824, true], ["r2", "00254264", 5.14, 0, true], ["r2", "00254265", 6.3, 0, true]], "verdict": "persistent", "snr": 13.18449861485266, "galaxy": false}, "spPlate-7390-57130.fits 18 6484.851 +1": {"frames": [["b1", "00198416", 0.0, 71434240, false], ["b1", "00198417", 0.0, 71434240, false], ["b1", "00198418", 0.0, 71434240, false], ["b1", "00198419", 0.0, 71434240, false], ["r1", "00198416", 4.76, 0, true], ["r1", "00198417", 4.94, 0, true], ["r1", "00198418", 6.06, 0, true], ["r1", "00198419", 5.54, 0, true]], "verdict": "persistent", "snr": 13.160891103626225, "galaxy": true}, "spPlate-7339-56713.fits 355 6391.459 +1": {"frames": [["b1", "00175734", 0.0, 71434240, false], ["b1", "00175738", 0.0, 71434240, false], ["r1", "00175734", -2.26, 0, true], ["r1", "00175738", 8.24, 589824, true]], "verdict": "one exposure", "snr": 13.158145211989439, "galaxy": false}, "spPlate-5487-55982.fits 224 7739.270 +1": {"frames": [["r1", "00140301", 5.59, 0, true], ["r1", "00140381", 4.95, 0, true], ["r1", "00140382", 2.92, 0, true], ["r1", "00140459", 7.93, 0, true], ["r1", "00140460", 4.35, 0, true], ["r1", "00140461", 6.96, 0, true]], "verdict": "persistent", "snr": 13.149995449906028, "galaxy": false}, "spPlate-4321-55504.fits 812 7204.436 +1": {"frames": [["b2", "00121541", 0.0, 83886080, false], ["b2", "00121542", 0.0, 83886080, false], ["b2", "00121543", 0.0, 83886080, false], ["b2", "00121544", 0.0, 83886080, false], ["b2", "00121545", 0.0, 83886080, false], ["b2", "00121546", 0.0, 83886080, false], ["b2", "00121547", 0.0, 83886080, false], ["b2", "00121548", 0.0, 83886080, false], ["r2", "00121541", 3.67, 0, true], ["r2", "00121542", 2.3, 0, true], ["r2", "00121543", 3.13, 0, true], ["r2", "00121544", 3.55, 0, true], ["r2", "00121545", 3.45, 0, true], ["r2", "00121546", 3.56, 0, true], ["r2", "00121547", 3.15, 0, true], ["r2", "00121548", 4.67, 0, true]], "verdict": "persistent", "snr": 13.114570379146642, "galaxy": false}, "spPlate-7690-57046.fits 103 8040.814 +1": {"frames": [["r1", "00193120", 5.83, 0, true], ["r1", "00193121", 5.62, 0, true], ["r1", "00193379", 6.65, 0, true], ["r1", "00193380", 6.08, 0, true]], "verdict": "persistent", "snr": 13.105354353243358, "galaxy": true}, "spPlate-7691-58487.fits 687 7774.993 +1": {"frames": [["r2", "00280047", 4.18, 0, true], ["r2", "00280048", 6.1, 0, true], ["r2", "00280049", 4.29, 0, true], ["r2", "00280050", 4.39, 0, true], ["r2", "00280051", 3.11, 0, true], ["r2", "00280052", 3.57, 0, true], ["r2", "00280053", 4.22, 0, true]], "verdict": "persistent", "snr": 13.08577036916193, "galaxy": true}, "spPlate-7391-56781.fits 675 7348.522 +1": {"frames": [["r2", "00179342", 5.08, 0, true], ["r2", "00179343", 6.1, 0, true], ["r2", "00179344", 7.36, 0, true]], "verdict": "persistent", "snr": 13.07421097684079, "galaxy": true}, "spPlate-10429-58145.fits 627 8423.644 +1": {"frames": [["r2", "00260736", 7.31, 0, true], ["r2", "00260737", 7.34, 0, true], ["r2", "00260738", 4.25, 0, true], ["r2", "00260833", 2.79, 0, true], ["r2", "00260834", 1.73, 0, true], ["r2", "00260835", 2.02, 0, true], ["r2", "00260836", 4.17, 0, true]], "verdict": "persistent", "snr": 13.070402793350796, "galaxy": true}, "spPlate-4645-55623.fits 500 9451.484 +1": {"frames": [["r1", "00127261", 1.92, 33554433, true], ["r1", "00127501", -3.55, 1, true], ["r1", "00127502", -3.1, 1, true], ["r1", "00127503", -1.99, 1, true], ["r1", "00127504", -2.24, 1, true]], "verdict": "unclear", "snr": 13.05359123188868, "galaxy": false}, "spPlate-6625-56386.fits 450 7550.922 +1": {"frames": [["r1", "00159514", 6.27, 0, true], ["r1", "00159515", 5.78, 0, true], ["r1", "00159516", 4.72, 0, true], ["r1", "00159517", 5.77, 0, true]], "verdict": "persistent", "snr": 13.051453455582713, "galaxy": true}, "spPlate-6391-56329.fits 500 4620.617 +1": {"frames": [["b1", "00155764", -1.77, 589824, true], ["b1", "00155765", 2.15, 524288, true], ["b1", "00155766", -0.96, 0, true]], "verdict": "unclear", "snr": 13.04945870947092, "galaxy": false}, "spPlate-8507-57878.fits 827 5059.411 +1": {"frames": [["b2", "00243328", 3.38, 34078720, true], ["b2", "00243329", 1.51, 524288, true], ["b2", "00243330", -2.05, 0, true], ["b2", "00243331", 2.96, 0, true], ["b2", "00243405", 3.37, 524288, true], ["b2", "00243406", 2.4, 34078720, true]], "verdict": "persistent", "snr": 13.042771499851607, "galaxy": false}, "spPlate-11345-58428.fits 126 7003.256 +1": {"frames": [["b1", "00275560", 0.0, 83886080, false], ["b1", "00275561", 0.0, 83886080, false], ["b1", "00275562", 0.0, 83886080, false], ["b1", "00275563", 0.0, 83886080, false], ["b1", "00275564", 0.0, 83886080, false], ["b1", "00275670", 0.0, 83886080, false], ["b1", "00275671", 0.0, 83886080, false], ["b1", "00275672", 0.0, 83886080, false], ["b1", "00275673", 0.0, 83886080, false], ["b1", "00275674", 0.0, 83886080, false], ["b1", "00275675", 0.0, 83886080, false], ["r1", "00275560", 2.84, 0, true], ["r1", "00275561", 3.13, 0, true], ["r1", "00275562", 3.05, 0, true], ["r1", "00275563", 2.57, 0, true], ["r1", "00275564", 3.19, 0, true], ["r1", "00275670", 4.29, 0, true], ["r1", "00275671", 4.31, 0, true], ["r1", "00275672", 3.91, 0, true], ["r1", "00275673", 3.79, 0, true], ["r1", "00275674", 3.22, 0, true], ["r1", "00275675", 3.72, 0, true]], "verdict": "persistent", "snr": 12.997689033945814, "galaxy": false}, "spPlate-7380-56753.fits 228 7895.870 +1": {"frames": [["r1", "00178165", 4.82, 8388608, true], ["r1", "00178166", 5.74, 0, true], ["r1", "00178167", 6.08, 0, true], ["r1", "00178168", 6.13, 0, true], ["r1", "00178169", 5.46, 8388608, true]], "verdict": "persistent", "snr": 12.975479344900075, "galaxy": false}, "spPlate-11391-58526.fits 873 8609.938 +1": {"frames": [["r2", "00283174", 6.76, 0, true], ["r2", "00283175", 6.64, 0, true], ["r2", "00283176", 6.28, 0, true]], "verdict": "persistent", "snr": 12.944707709867746, "galaxy": false}, "spPlate-5446-56014.fits 321 7262.732 +1": {"frames": [["r1", "00141918", 7.47, 0, true], ["r1", "00141919", 5.68, 0, true], ["r1", "00141920", 3.73, 0, true]], "verdict": "persistent", "snr": 12.924869857948966, "galaxy": false}, "spPlate-10655-58172.fits 140 8224.320 +1": {"frames": [["r1", "00262804", 4.87, 0, true], ["r1", "00262805", 5.02, 0, true], ["r1", "00262806", 5.03, 0, true], ["r1", "00262912", 4.35, 0, true], ["r1", "00262913", 3.81, 0, true], ["r1", "00262914", 2.39, 0, true], ["r1", "00262915", 5.25, 0, true], ["r1", "00262916", 4.21, 0, true]], "verdict": "persistent", "snr": 12.879134311018793, "galaxy": false}, "spPlate-7339-56772.fits 772 4732.602 +1": {"frames": [["b2", "00178918", 4.29, 0, true], ["b2", "00178919", 2.36, 0, true], ["b2", "00178920", 4.65, 0, true], ["b2", "00178921", 3.91, 0, true], ["b2", "00178922", 3.38, 0, true], ["b2", "00178923", 4.15, 0, true], ["b2", "00178924", 5.25, 0, true], ["b2", "00178925", 2.82, 0, true]], "verdict": "persistent", "snr": 12.835404290651137, "galaxy": false}, "spPlate-3847-55298.fits 412 7654.203 +1": {"frames": [["r1", "00113038", 6.17, 0, true], ["r1", "00113039", 4.21, 0, true], ["r1", "00113040", 5.68, 0, true], ["r1", "00113041", 2.9, 0, true], ["r1", "00113102", 2.5, 0, true], ["r1", "00113103", 5.28, 0, true], ["r1", "00113104", 5.42, 0, true]], "verdict": "persistent", "snr": 12.834594137935792, "galaxy": true}, "spPlate-6418-56354.fits 280 8564.460 +1": {"frames": [["r1", "00157328", 6.67, 0, true], ["r1", "00157329", 6.46, 0, true], ["r1", "00157330", 10.04, 34078720, true]], "verdict": "persistent", "snr": 12.830602242644586, "galaxy": false}, "spPlate-4721-55709.fits 870 6549.377 +1": {"frames": [["b2", "00131324", 0.0, 71434240, false], ["b2", "00131325", 0.0, 71434240, false], ["b2", "00131326", 0.0, 71434240, false], ["b2", "00131327", 0.0, 71434240, false], ["r2", "00131324", 5.02, 0, true], ["r2", "00131325", 7.31, 0, true], ["r2", "00131326", 4.7, 33554432, true], ["r2", "00131327", 6.97, 0, true]], "verdict": "persistent", "snr": 12.829127568100576, "galaxy": false}, "spPlate-7311-57038.fits 991 6350.384 +1": {"frames": [["b2", "00191578", 0.0, 71303168, false], ["b2", "00191579", 0.0, 71303168, false], ["b2", "00191580", 0.0, 71303168, false], ["b2", "00191581", 0.0, 71303168, false], ["b2", "00191582", 0.0, 71303168, false], ["b2", "00191583", 0.0, 71303168, false], ["b2", "00191584", 0.0, 71303168, false], ["b2", "00192732", 0.0, 71303168, false], ["b2", "00192733", 0.0, 71303168, false], ["r2", "00191578", 5.65, 0, true], ["r2", "00191579", 4.6, 0, true], ["r2", "00191580", 4.57, 0, true], ["r2", "00191581", 2.51, 0, true], ["r2", "00191582", 1.91, 0, true], ["r2", "00191583", 3.46, 0, true], ["r2", "00191584", 2.9, 0, true], ["r2", "00192732", 2.89, 0, true], ["r2", "00192733", 2.37, 0, true]], "verdict": "persistent", "snr": 12.810601519907443, "galaxy": true}, "spPlate-8541-58257.fits 862 5865.432 +1": {"frames": [["b2", "00269093", 0.63, 0, true], ["b2", "00269094", 1.61, 0, true], ["b2", "00269095", -0.78, 0, true], ["b2", "00269096", 1.47, 0, true], ["b2", "00269177", -1.52, 0, true], ["r2", "00269093", 0.0, 4325376, false], ["r2", "00269094", 0.0, 4325376, false], ["r2", "00269095", 0.0, 4325376, false], ["r2", "00269096", 0.0, 4325376, false], ["r2", "00269177", -65.39, 0, true]], "verdict": "unclear", "snr": 12.752022364837622, "galaxy": false}, "spPlate-6135-56192.fits 116 7154.841 +1": {"frames": [["b1", "00147794", 0.0, 83886080, false], ["b1", "00147795", 0.0, 83886080, false], ["b1", "00147796", 0.0, 83886080, false], ["b1", "00147797", 0.0, 83886080, false], ["r1", "00147794", 5.1, 0, true], ["r1", "00147795", 5.97, 0, true], ["r1", "00147796", 5.94, 0, true], ["r1", "00147797", 5.44, 0, true]], "verdict": "persistent", "snr": 12.732053881482535, "galaxy": false}, "spPlate-10914-58257.fits 755 5408.789 +1": {"frames": [["b2", "00269163", 5.81, 0, true], ["b2", "00269164", 5.91, 0, true], ["b2", "00269165", 5.71, 0, true], ["r2", "00269163", 0.0, 71434240, false], ["r2", "00269164", 0.0, 71434240, false], ["r2", "00269165", 0.0, 71434240, false]], "verdict": "persistent", "snr": 12.723442624600358, "galaxy": true}, "spPlate-6193-56237.fits 101 6751.496 +1": {"frames": [["b1", "00150181", 0.0, 83886080, false], ["b1", "00150182", 0.0, 83886080, false], ["b1", "00150183", 0.0, 83886080, false], ["b1", "00150184", 0.0, 83886080, false], ["b1", "00150185", 0.0, 83886080, false], ["r1", "00150181", 5.43, 0, true], ["r1", "00150182", 5.36, 0, true], ["r1", "00150183", 4.75, 0, true], ["r1", "00150184", 6.48, 0, true], ["r1", "00150185", 5.39, 0, true]], "verdict": "persistent", "snr": 12.721642956584063, "galaxy": false}, "spPlate-4071-55660.fits 868 4125.722 +1": {"frames": [["b2", "00129585", -1.22, 851968, true], ["b2", "00129586", 1.14, 0, true], ["b2", "00129587", 1.51, 524288, true], ["b2", "00129588", 2.67, 0, true]], "verdict": "unclear", "snr": 12.709765755620747, "galaxy": false}, "spPlate-5709-56571.fits 92 8162.064 +1": {"frames": [["r1", "00167178", 6.35, 0, true], ["r1", "00167179", 4.67, 0, true], ["r1", "00167260", 3.73, 0, true], ["r1", "00167261", 5.96, 0, true], ["r1", "00167262", 4.83, 0, true], ["r1", "00167263", 6.42, 0, true], ["r1", "00167440", 3.96, 0, true], ["r1", "00167441", 5.65, 0, true]], "verdict": "persistent", "snr": 12.676467563391848, "galaxy": false}, "spPlate-6487-56362.fits 880 7256.046 +1": {"frames": [["b2", "00157821", 0.0, 83886080, false], ["b2", "00157822", 0.0, 83886080, false], ["b2", "00157823", 0.0, 83886080, false], ["r2", "00157821", 8.02, 0, true], ["r2", "00157822", 6.11, 0, true], ["r2", "00157823", 5.67, 0, true]], "verdict": "persistent", "snr": 12.65077575002457, "galaxy": true}, "spPlate-11352-58456.fits 248 6264.696 +1": {"frames": [["b1", "00277086", -2.81, 0, true], ["b1", "00277087", 1.7, 0, true], ["b1", "00278199", -2.13, 0, true], ["b1", "00278200", 2.81, 0, true], ["b1", "00278301", 1.71, 0, true], ["b1", "00278302", 1.31, 0, true], ["b1", "00278303", 2.5, 0, true], ["r1", "00277086", 4.06, 0, true], ["r1", "00277087", 3.42, 0, true], ["r1", "00278199", 3.95, 0, true], ["r1", "00278200", 2.25, 0, true], ["r1", "00278301", 4.12, 0, true], ["r1", "00278302", 4.0, 0, true], ["r1", "00278303", 3.3, 0, true]], "verdict": "persistent", "snr": 12.601213646141272, "galaxy": true}, "spPlate-3609-55129.fits 760 8059.350 +1": {"frames": [["r2", "00102874", 0.0, 851968, true], ["r2", "00102875", -1793391298535155.8, 8388608, true], ["r2", "00102876", 1.744231988293631e+16, 8388608, true], ["r2", "00102877", 3926880450409274.5, 8388608, true], ["r2", "00102880", 3114057.36, 0, true], ["r2", "00102881", 0.0, 0, true]], "verdict": "one exposure", "snr": 12.568048277272592, "galaxy": false}, "spPlate-8526-57898.fits 317 9179.098 +1": {"frames": [["r1", "00244688", 4.4, 0, true], ["r1", "00244689", 4.64, 0, true], ["r1", "00244690", 4.43, 0, true], ["r1", "00244691", 4.28, 0, true], ["r1", "00244692", 4.51, 0, true], ["r1", "00244774", 5.81, 0, true], ["r1", "00244775", 4.12, 0, true]], "verdict": "persistent", "snr": 12.551215694444572, "galaxy": true}, "spPlate-10435-58156.fits 924 8057.494 +1": {"frames": [["r2", "00261814", 6.64, 0, true], ["r2", "00261815", 5.4, 0, true], ["r2", "00261819", 2.05, 0, true], ["r2", "00261820", 4.63, 0, true], ["r2", "00261821", 5.01, 0, true]], "verdict": "persistent", "snr": 12.539255046199784, "galaxy": false}, "spPlate-7900-57358.fits 798 6573.550 +1": {"frames": [["b2", "00209147", 0.0, 71434240, false], ["b2", "00209209", 0.0, 71434240, false], ["b2", "00209210", 0.0, 71434240, false], ["b2", "00209211", 0.0, 71434240, false], ["b2", "00209306", 0.0, 71434240, false], ["b2", "00209307", 0.0, 71434240, false], ["r2", "00209147", 2.87, 0, true], ["r2", "00209209", 4.75, 0, true], ["r2", "00209210", 3.39, 0, true], ["r2", "00209211", 3.96, 0, true], ["r2", "00209306", 4.52, 0, true], ["r2", "00209307", 4.95, 0, true]], "verdict": "persistent", "snr": 12.522119056923584, "galaxy": true}, "spPlate-5321-55945.fits 400 8079.789 +1": {"frames": [["r1", "00138635", 5.58, 0, true], ["r1", "00138636", 4.15, 0, true], ["r1", "00138637", 5.85, 0, true], ["r1", "00138638", 4.67, 0, true], ["r1", "00138639", 4.03, 0, true], ["r1", "00138640", 4.19, 0, true]], "verdict": "persistent", "snr": 12.50295534193364, "galaxy": false}, "spPlate-7131-56570.fits 272 3690.626 +1": {"frames": [["b1", "00167329", -2.1, 33554432, true], ["b1", "00167330", -1.7, 0, true], ["b1", "00167331", 0.7, 524288, true]], "verdict": "unclear", "snr": 12.444784650221898, "galaxy": false}, "spPlate-11652-58484.fits 118 8224.320 +1": {"frames": [["r1", "00279808", 4.94, 0, true], ["r1", "00279809", 5.52, 0, true], ["r1", "00279810", 6.76, 0, true], ["r1", "00279811", 5.95, 0, true], ["r1", "00279812", 5.4, 0, true]], "verdict": "persistent", "snr": 12.432335348749563, "galaxy": false}, "spPlate-5297-55913.fits 116 7099.046 +1": {"frames": [["b1", "00137515", 0.0, 83886080, false], ["b1", "00137516", 0.0, 83886080, false], ["b1", "00137517", 0.0, 83886080, false], ["b1", "00137518", 0.0, 83886080, false], ["b1", "00137519", 0.0, 83886080, false], ["b1", "00137520", 0.0, 83886080, false], ["b1", "00137521", 0.0, 83886080, false], ["r1", "00137515", 5.87, 0, true], ["r1", "00137516", 3.75, 0, true], ["r1", "00137517", 4.15, 0, true], ["r1", "00137518", 5.53, 0, true], ["r1", "00137519", 4.49, 0, true], ["r1", "00137520", 3.67, 589824, true], ["r1", "00137521", 5.64, 0, true]], "verdict": "persistent", "snr": 12.423843524909664, "galaxy": false}, "spPlate-4753-55674.fits 152 8329.137 +1": {"frames": [["r1", "00129936", 5.31, 0, true], ["r1", "00129937", 5.49, 0, true], ["r1", "00129938", 4.91, 0, true], ["r1", "00129939", -0.94, 851968, false], ["r1", "00129940", 6.21, 0, true]], "verdict": "persistent", "snr": 12.416190320755593, "galaxy": true}, "spPlate-9141-57663.fits 653 4922.662 +1": {"frames": [["b2", "00228348", 4.45, 0, true], ["b2", "00228349", 4.41, 0, true], ["b2", "00228350", 4.97, 0, true], ["b2", "00228351", 5.12, 0, true], ["b2", "00228352", 2.69, 0, true]], "verdict": "persistent", "snr": 12.408028617897354, "galaxy": true}, "spPlate-4174-55659.fits 174 8715.654 +1": {"frames": [["r1", "00129352", 6.0, 0, true], ["r1", "00129353", 5.57, 0, true], ["r1", "00129354", 3.95, 0, true], ["r1", "00129523", 6.81, 0, true]], "verdict": "persistent", "snr": 12.38897293820525, "galaxy": false}, "spPlate-6402-56334.fits 335 7197.804 +1": {"frames": [["r1", "00156186", 6.18, 0, true], ["r1", "00156187", 5.81, 0, true], ["r1", "00156188", 5.9, 0, true], ["r1", "00156189", 4.75, 0, true]], "verdict": "persistent", "snr": 12.369889386172575, "galaxy": true}, "spPlate-4629-55630.fits 570 9236.342 +1": {"frames": [["r2", "00127878", 5.68, 0, true], ["r2", "00127879", 5.0, 0, true], ["r2", "00127880", 5.71, 0, true], ["r2", "00127881", 6.96, 0, true]], "verdict": "persistent", "snr": 12.363204823892808, "galaxy": false}, "spPlate-7338-57067.fits 727 4732.602 +1": {"frames": [["b2", "00194753", 5.55, 0, true], ["b2", "00194754", 5.19, 0, true], ["b2", "00194755", 4.79, 0, true], ["b2", "00194756", 3.74, 524288, true], ["b2", "00194757", 5.25, 0, true]], "verdict": "persistent", "snr": 12.276224207085756, "galaxy": false}, "spPlate-11119-58485.fits 711 7682.455 +1": {"frames": [["r2", "00279889", 5.25, 0, true], ["r2", "00279890", 4.52, 0, true], ["r2", "00279891", 5.63, 0, true], ["r2", "00279892", 6.75, 0, true]], "verdict": "persistent", "snr": 12.26835378007325, "galaxy": false}, "spPlate-4641-55947.fits 314 7219.382 +1": {"frames": [["r1", "00138825", 4.5, 0, true], ["r1", "00138826", 5.4, 0, true], ["r1", "00138827", 7.38, 0, true]], "verdict": "persistent", "snr": 12.237242086239712, "galaxy": true}, "spPlate-7513-56780.fits 267 4044.827 +1": {"frames": [["b1", "00179200", 1.16, 0, true], ["b1", "00179276", -6.22, 8388608, true], ["b1", "00179277", -6.27, 8388608, true], ["b1", "00179278", -5.72, 8388608, true], ["b1", "00179279", -8.41, 8388608, true], ["b1", "00179280", -8.25, 8388608, true]], "verdict": "unclear", "snr": 12.231099705501611, "galaxy": false}, "spPlate-7688-57360.fits 408 9640.510 +1": {"frames": [["r1", "00209441", 3.74, 0, true], ["r1", "00209442", 4.34, 0, true], ["r1", "00209443", 4.95, 0, true], ["r1", "00209537", 6.82, 0, true], ["r1", "00209538", 6.12, 0, true]], "verdict": "persistent", "snr": 12.189149830390207, "galaxy": false}, "spPlate-6933-56398.fits 605 4732.602 +1": {"frames": [["b2", "00160292", 2.72, 0, true], ["b2", "00160293", -1.61, 0, true], ["b2", "00160294", 5.03, 0, true], ["b2", "00160295", 4.23, 0, true], ["b2", "00160296", 4.53, 0, true], ["b2", "00160297", 4.48, 0, true], ["b2", "00160298", 3.46, 0, true], ["b2", "00160299", 4.13, 0, true]], "verdict": "persistent", "snr": 12.18142568718493, "galaxy": false}, "spPlate-10255-58546.fits 414 5808.982 +1": {"frames": [["b1", "00284437", 1.73, 0, true], ["b1", "00284438", -0.96, 0, true], ["b1", "00284439", -2.18, 0, true], ["b1", "00284640", -0.97, 0, true], ["b1", "00284641", -2.32, 0, true], ["b1", "00284642", 2.36, 0, true], ["b1", "00284643", -1.19, 0, true], ["b1", "00284644", 0.86, 0, true], ["r1", "00284437", 0.0, 71434240, false], ["r1", "00284438", 0.0, 71434240, false], ["r1", "00284439", 0.0, 71434240, false], ["r1", "00284640", -4.1, 0, true], ["r1", "00284641", -52.89, 0, true], ["r1", "00284642", -23.84, 0, true], ["r1", "00284643", -3.54, 0, true], ["r1", "00284644", -62.47, 0, true]], "verdict": "unclear", "snr": 12.138460791831545, "galaxy": false}, "spPlate-9315-57713.fits 27 7493.764 +1": {"frames": [["r1", "00231973", 5.54, 0, true], ["r1", "00231974", 5.99, 0, true], ["r1", "00231975", 5.05, 0, true]], "verdict": "persistent", "snr": 12.092726170641853, "galaxy": false}, "spPlate-6054-56089.fits 410 5768.993 +1": {"frames": [["b1", "00144631", 1.29, 0, true], ["b1", "00144632", -1.03, 0, true], ["b1", "00144633", -0.51, 0, true], ["b1", "00144659", -1.3, 0, true], ["b1", "00144660", 1.6, 0, true], ["r1", "00144631", 1.14, 67108864, true], ["r1", "00144632", 2.19, 67108864, true], ["r1", "00144633", 1.19, 0, true], ["r1", "00144659", 0.0, 201457664, false], ["r1", "00144660", 0.0, 67239936, false]], "verdict": "unclear", "snr": 12.08028220034855, "galaxy": false}, "spPlate-8370-57520.fits 708 6717.381 +1": {"frames": [["b2", "00220948", 0.0, 83886080, false], ["b2", "00220949", 0.0, 83886080, false], ["b2", "00220950", 0.0, 83886080, false], ["b2", "00220951", 0.0, 83886080, false], ["r2", "00220948", 4.68, 0, true], ["r2", "00220949", 5.66, 0, true], ["r2", "00220950", 6.0, 0, true], ["r2", "00220951", 4.39, 0, true]], "verdict": "persistent", "snr": 12.052963837564546, "galaxy": true}, "spPlate-8769-57338.fits 270 5140.437 +1": {"frames": [["b1", "00207961", 3.05, 0, true], ["b1", "00207962", 0.66, 0, true], ["b1", "00207963", 1.46, 0, true], ["b1", "00207964", 2.3, 0, true], ["b1", "00208046", 3.82, 0, true], ["b1", "00208047", 3.38, 0, true], ["b1", "00208048", 3.79, 0, true], ["b1", "00208049", 4.11, 0, true], ["b1", "00208050", 2.54, 0, true], ["b1", "00208051", 2.82, 0, true], ["b1", "00208052", 1.84, 0, true]], "verdict": "persistent", "snr": 12.047429197437781, "galaxy": false}, "spPlate-8211-57423.fits 986 7059.924 +1": {"frames": [["b2", "00213752", 0.0, 83886080, false], ["b2", "00213753", 0.0, 83886080, false], ["b2", "00213754", 0.0, 83886080, false], ["b2", "00213880", 0.0, 83886080, false], ["r2", "00213752", 5.1, 0, true], ["r2", "00213753", 5.07, 0, true], ["r2", "00213754", 5.22, 0, true], ["r2", "00213880", 5.01, 0, true]], "verdict": "persistent", "snr": 12.039548480269104, "galaxy": true}, "spPlate-3801-55509.fits 650 6020.049 +1": {"frames": [["b2", "00121969", 1.23, 0, true], ["b2", "00121978", 4.69, 0, true], ["b2", "00121979", 5.83, 0, true], ["b2", "00121980", 3.79, 0, true], ["b2", "00121981", 4.97, 0, true], ["r2", "00121969", 1.35, 0, true], ["r2", "00121978", 2.51, 0, true], ["r2", "00121979", 4.55, 0, true], ["r2", "00121980", 2.59, 0, true], ["r2", "00121981", 3.25, 0, true]], "verdict": "persistent", "snr": 12.029379189032944, "galaxy": false}, "spPlate-5777-56280.fits 857 7505.852 +1": {"frames": [["r2", "00152917", 4.48, 0, true], ["r2", "00152918", 4.73, 0, true], ["r2", "00152919", 3.05, 0, true], ["r2", "00153002", 4.05, 0, true], ["r2", "00153003", 4.08, 0, true], ["r2", "00153004", 4.32, 0, true]], "verdict": "persistent", "snr": 12.028937057601865, "galaxy": false}, "spPlate-7879-57340.fits 470 7462.769 +1": {"frames": [["r1", "00208271", -1.0, 33554432, true], ["r1", "00208272", 9.62, 0, true]], "verdict": "one exposure", "snr": 12.021923863850743, "galaxy": false}, "spPlate-10738-58251.fits 439 8806.432 +1": {"frames": [["r1", "00268619", 6.64, 0, true], ["r1", "00268620", 4.85, 0, true], ["r1", "00268621", 5.14, 0, true]], "verdict": "persistent", "snr": 12.016618805800338, "galaxy": true}, "spPlate-4747-55652.fits 835 7954.264 +1": {"frames": [["r2", "00128910", 4.26, 0, true], ["r2", "00128911", 4.55, 0, true], ["r2", "00128912", 5.01, 0, true], ["r2", "00128913", 4.03, 0, true], ["r2", "00128914", 4.18, 0, true], ["r2", "00128915", 5.53, 0, true], ["r2", "00128916", 3.98, 0, true]], "verdict": "persistent", "snr": 12.012230081231754, "galaxy": true}, "spPlate-10000-58462.fits 713 7774.993 +1": {"frames": [["r2", "00278271", 4.33, 0, true], ["r2", "00278272", 5.14, 0, true], ["r2", "00278273", 3.15, 0, true], ["r2", "00278274", 3.23, 0, true], ["r2", "00278368", -0.96, 0, true], ["r2", "00278611", 3.18, 0, true], ["r2", "00278612", 3.56, 0, true], ["r2", "00278613", 3.29, 0, true], ["r2", "00278614", 3.03, 0, true], ["r2", "00278615", 3.31, 0, true]], "verdict": "persistent", "snr": 11.99899765791976, "galaxy": false}, "spPlate-10745-58227.fits 159 3853.896 +1": {"frames": [["b1", "00266903", 2.33, 34078720, true], ["b1", "00266904", -0.8, 0, true], ["b1", "00266905", 3.69, 0, true]], "verdict": "unclear", "snr": 11.996065100939184, "galaxy": false}, "spPlate-9440-58072.fits 527 8982.557 +1": {"frames": [["r2", "00254345", 2.48, 589824, true], ["r2", "00254347", -3.33, 589824, true], ["r2", "00254349", 2.86, 34144256, true], ["r2", "00254350", 4.0, 589824, true], ["r2", "00254351", -2.38, 589824, true], ["r2", "00254352", 1.1, 589824, true], ["r2", "00254437", -1.74, 589824, true], ["r2", "00254438", 3.48, 589824, true], ["r2", "00254439", 1.53, 589824, true]], "verdict": "persistent", "snr": 11.994054544971611, "galaxy": false}, "spPlate-10459-58159.fits 400 4559.319 +1": {"frames": [["b1", "00262128", 6.88, 0, true], ["b1", "00262129", 5.39, 0, true], ["b1", "00262130", 5.2, 0, true]], "verdict": "persistent", "snr": 11.984529049407884, "galaxy": false}, "spPlate-3680-55159.fits 686 4355.119 +1": {"frames": [["b2", "00104172", -1.906164262046779e+19, 0, true], ["b2", "00104173", 0.0, 0, true], ["b2", "00104174", 2019085132038633.0, 0, true], ["b2", "00104175", 0.0, 0, true], ["b2", "00104178", 3.3777303664675654e+17, 0, true], ["b2", "00104179", 0.0, 0, true]], "verdict": "one exposure", "snr": 11.953032941832022, "galaxy": false}, "spPlate-3868-55360.fits 202 5780.960 +1": {"frames": [["b1", "00116541", 6.4, 0, true], ["b1", "00116542", 4.68, 0, true], ["b1", "00116543", 4.98, 0, true], ["b1", "00116544", 4.55, 0, true], ["r1", "00116541", 0.0, 71434240, false], ["r1", "00116542", 0.0, 71434240, false], ["r1", "00116543", 0.0, 71434240, false], ["r1", "00116544", 0.0, 71434240, false]], "verdict": "persistent", "snr": 11.860563433697823, "galaxy": true}, "spPlate-5191-56065.fits 388 8211.075 +1": {"frames": [["r1", "00143812", 5.82, 0, true], ["r1", "00143813", 6.28, 0, true], ["r1", "00143935", 5.95, 0, true], ["r1", "00143936", 5.24, 0, true]], "verdict": "persistent", "snr": 11.837818566996567, "galaxy": true}, "spPlate-8055-57187.fits 935 8532.966 +1": {"frames": [["r2", "00201246", 6.36, 0, true], ["r2", "00201247", 4.28, 0, true], ["r2", "00201248", 5.76, 0, true], ["r2", "00201249", 4.65, 0, true]], "verdict": "persistent", "snr": 11.809883888511273, "galaxy": false}, "spPlate-3777-55210.fits 190 8076.069 +1": {"frames": [["r1", "00107582", 0.0, 0, true], ["r1", "00107583", 0.0, 0, true], ["r1", "00107584", 5.450718074577303e+18, 0, true], ["r1", "00107585", -80310903460183.88, 0, true], ["r1", "00107586", 120785352711489.86, 0, true], ["r1", "00107587", 2560874.02, 0, true], ["r1", "00107588", 90.49, 0, true]], "verdict": "one exposure", "snr": 11.761865519540299, "galaxy": false}, "spPlate-8746-58396.fits 204 7564.844 +1": {"frames": [["r1", "00272987", 3.4, 0, true], ["r1", "00272988", 4.1, 0, true], ["r1", "00272989", 3.97, 0, true], ["r1", "00273080", 6.08, 0, true], ["r1", "00273081", 5.87, 0, true]], "verdict": "persistent", "snr": 11.761030139787476, "galaxy": false}, "spPlate-6457-56330.fits 740 6729.767 +1": {"frames": [["b2", "00155859", 0.0, 83886082, false], ["b2", "00155860", 0.0, 83886082, false], ["b2", "00155861", 0.0, 83886082, false], ["r2", "00155859", 5.81, 0, true], ["r2", "00155860", 6.16, 0, true], ["r2", "00155861", 4.32, 0, true]], "verdict": "persistent", "snr": 11.742186027647547, "galaxy": false}, "spPlate-10431-58137.fits 794 8570.378 +1": {"frames": [["r2", "00260041", 5.12, 0, true], ["r2", "00260042", 6.07, 0, true], ["r2", "00260043", 5.66, 0, true]], "verdict": "persistent", "snr": 11.737426779405398, "galaxy": false}, "spPlate-7338-57050.fits 727 4732.602 +1": {"frames": [["b2", "00193686", 2.36, 589840, true], ["b2", "00193720", 4.69, 0, true], ["b2", "00193721", 4.47, 0, true], ["b2", "00193722", 5.76, 0, true], ["b2", "00193723", 2.5, 0, true], ["b2", "00193724", 4.6, 0, true]], "verdict": "persistent", "snr": 11.725070872457993, "galaxy": false}, "spPlate-11401-58491.fits 567 8367.582 +1": {"frames": [["r2", "00280304", 5.98, 0, true], ["r2", "00280305", 5.2, 8388608, true], ["r2", "00280400", 4.85, 8388608, true], ["r2", "00280402", 4.4, 8388608, true]], "verdict": "persistent", "snr": 11.717797399132644, "galaxy": false}, "spPlate-10293-58132.fits 236 4780.794 +1": {"frames": [["b1", "00259532", 2.1, 0, true], ["b1", "00259533", 2.3, 524288, true], ["b1", "00259534", 3.6, 524288, true], ["b1", "00259535", 2.24, 0, true], ["b1", "00259536", -0.79, 0, true]], "verdict": "unclear", "snr": 11.717250168837863, "galaxy": false}, "spPlate-9625-57834.fits 635 6943.845 +1": {"frames": [["b2", "00240302", 0.0, 83886080, false], ["b2", "00240303", 0.0, 83886080, false], ["b2", "00240304", 0.0, 83886080, false], ["r2", "00240302", 6.86, 0, true], ["r2", "00240303", 6.22, 0, true], ["r2", "00240304", 4.91, 0, true]], "verdict": "persistent", "snr": 11.714256010298708, "galaxy": false}, "spPlate-7338-57135.fits 727 4732.602 +1": {"frames": [["b2", "00198743", 4.73, 0, true], ["b2", "00198744", 3.66, 0, true], ["b2", "00198745", 5.0, 0, true], ["b2", "00198746", 3.95, 0, true], ["b2", "00198747", 3.81, 0, true], ["b2", "00198748", 3.67, 0, true]], "verdict": "persistent", "snr": 11.712641851891986, "galaxy": false}, "spPlate-3873-55277.fits 688 3621.596 +1": {"frames": [["b2", "00112327", 2.87, 0, true], ["b2", "00112328", -0.94, 0, true], ["b2", "00112329", 3.15, 0, true]], "verdict": "persistent", "snr": 11.678493743246921, "galaxy": false}, "spPlate-4480-55591.fits 948 7584.029 +1": {"frames": [["r2", "00126057", 3.47, 0, true], ["r2", "00126058", 3.41, 0, true], ["r2", "00126059", 3.22, 0, true], ["r2", "00126060", 5.16, 0, true], ["r2", "00126061", 4.08, 0, true], ["r2", "00126062", 5.33, 0, true]], "verdict": "persistent", "snr": 11.668936170223427, "galaxy": false}, "spPlate-7512-56777.fits 675 8323.385 +1": {"frames": [["r2", "00178966", 1.32, 0, true], ["r2", "00178967", 0.49, 0, true], ["r2", "00179082", 4.08, 0, true], ["r2", "00179083", 4.27, 0, true], ["r2", "00179084", 3.9, 0, true], ["r2", "00179085", 3.74, 0, true], ["r2", "00179086", 3.99, 0, true], ["r2", "00179139", -0.71, 0, true], ["r2", "00179140", 3.08, 0, true], ["r2", "00179141", 3.85, 0, true], ["r2", "00179142", 3.55, 0, true]], "verdict": "persistent", "snr": 11.658924667424733, "galaxy": true}, "spPlate-3781-55243.fits 146 8239.484 +1": {"frames": [["r1", "00108414", 0.0, 0, true], ["r1", "00108415", 5053105781609821.0, 0, true], ["r1", "00108416", 0.0, 0, true], ["r1", "00108417", 1.59, 0, true], ["r1", "00108418", 2.293080604426229e+18, 0, true], ["r1", "00108419", 0.0, 0, true], ["r1", "00108529", 3.45, 0, true], ["r1", "00108530", 2.1921672182174134e+18, 0, true], ["r1", "00108531", 7159563438411663.0, 0, true], ["r1", "00108532", 2.33, 0, true]], "verdict": "persistent", "snr": 11.65547699012935, "galaxy": true}, "spPlate-5026-55855.fits 958 9594.006 +1": {"frames": [["r2", "00135161", 5.26, 0, true], ["r2", "00135162", 5.54, 0, true], ["r2", "00135163", 4.56, 0, true], ["r2", "00135164", 6.49, 0, true], ["r2", "00135165", 5.74, 0, true], ["r2", "00135166", 4.76, 0, true]], "verdict": "persistent", "snr": 11.606745269216203, "galaxy": false}, "spPlate-7114-56748.fits 520 7209.415 +1": {"frames": [["b2", "00177880", 0.0, 83886080, false], ["b2", "00177881", 0.0, 83886080, false], ["b2", "00177882", 0.0, 83886080, false], ["b2", "00177883", 0.0, 83886080, false], ["r2", "00177880", 5.23, 0, true], ["r2", "00177881", 4.43, 0, true], ["r2", "00177882", 4.96, 0, true], ["r2", "00177883", 5.59, 0, true]], "verdict": "persistent", "snr": 11.57625018184004, "galaxy": true}, "spPlate-7338-57127.fits 727 4732.602 +1": {"frames": [["b2", "00198224", 3.22, 0, true], ["b2", "00198225", 4.96, 0, true], ["b2", "00198226", 3.28, 0, true], ["b2", "00198227", 4.67, 0, true], ["b2", "00198228", 3.68, 0, true], ["b2", "00198229", 4.92, 0, true]], "verdict": "persistent", "snr": 11.527292867995586, "galaxy": false}, "spPlate-7288-57039.fits 29 8568.405 +1": {"frames": [["r1", "00192830", 3.82, 0, true], ["r1", "00192831", 5.97, 0, true], ["r1", "00192832", 5.49, 0, true], ["r1", "00192833", 4.27, 0, true], ["r1", "00192834", 5.42, 0, true]], "verdict": "persistent", "snr": 11.521606876782041, "galaxy": false}, "spPlate-6839-56425.fits 910 9236.342 +1": {"frames": [["r2", "00161557", 3.36, 0, true], ["r2", "00161558", 5.08, 0, true], ["r2", "00161559", 3.88, 0, true], ["r2", "00161560", 6.13, 0, true], ["r2", "00161619", 3.62, 0, true], ["r2", "00161620", 4.09, 0, true]], "verdict": "persistent", "snr": 11.507604253481547, "galaxy": false}, "spPlate-6743-56385.fits 218 8709.636 +1": {"frames": [["r1", "00159438", 4.45, 0, true], ["r1", "00159439", 5.26, 0, true], ["r1", "00159440", 4.56, 0, true], ["r1", "00159441", 4.64, 0, true], ["r1", "00159442", 5.78, 0, true]], "verdict": "persistent", "snr": 11.431067859576126, "galaxy": true}, "spPlate-7339-56813.fits 834 6813.967 +1": {"frames": [["b2", "00180597", 0.0, 83886080, false], ["b2", "00180598", 0.0, 83886080, false], ["b2", "00180599", 0.0, 83886080, false], ["b2", "00180600", 0.0, 83886080, false], ["b2", "00180602", 0.0, 83886080, false], ["b2", "00180603", 0.0, 83886080, false], ["b2", "00180604", 0.0, 83886080, false], ["b2", "00180605", 0.0, 83886080, false], ["b2", "00180606", 0.0, 83886080, false], ["r2", "00180597", 3.52, 589840, true], ["r2", "00180598", 3.49, 589840, true], ["r2", "00180599", 3.33, 589840, true], ["r2", "00180600", 6.65, 589840, true], ["r2", "00180602", 4.33, 589840, true], ["r2", "00180603", 3.91, 589840, true], ["r2", "00180604", 3.24, 589840, true], ["r2", "00180605", 3.06, 589840, true], ["r2", "00180606", 5.03, 589840, true]], "verdict": "persistent", "snr": 11.403556452682324, "galaxy": false}, "spPlate-7338-58503.fits 9 9532.350 +1": {"frames": [["r1", "00281197", -1.88, 0, true], ["r1", "00281198", 0.68, 8388608, true], ["r1", "00281199", 1.2, 0, true], ["r1", "00281200", 1.74, 0, true], ["r1", "00281201", 0.92, 0, true], ["r1", "00281202", 1.19, 0, true], ["r1", "00281203", -0.89, 0, true], ["r1", "00281204", -0.69, 0, true], ["r1", "00281205", 0.87, 0, true]], "verdict": "unclear", "snr": 11.393737556013313, "galaxy": false}, "spPlate-4216-55477.fits 422 6823.387 +1": {"frames": [["b1", "00120122", 0.0, 83886080, false], ["b1", "00120123", 0.0, 83886080, false], ["b1", "00120124", 0.0, 83886080, false], ["b1", "00120125", 0.0, 83886080, false], ["b1", "00120126", 0.0, 83886080, false], ["b1", "00120127", 0.0, 83886080, false], ["b1", "00120128", 0.0, 83886080, false], ["r1", "00120122", 2.62, 0, true], ["r1", "00120123", 4.24, 0, true], ["r1", "00120124", 4.01, 0, true], ["r1", "00120125", 4.65, 0, true], ["r1", "00120126", 4.17, 0, true], ["r1", "00120127", 4.85, 0, true], ["r1", "00120128", 5.2, 0, true]], "verdict": "persistent", "snr": 11.37803406311663, "galaxy": false}, "spPlate-5294-55922.fits 562 4342.102 +1": {"frames": [["b2", "00137536", 2.74, 0, true], ["b2", "00137537", 1.33, 0, true], ["b2", "00137538", 2.76, 0, true], ["b2", "00137539", 2.72, 0, true], ["b2", "00137540", 2.36, 0, true], ["b2", "00137747", 4.2, 0, true], ["b2", "00137748", 4.82, 0, true], ["b2", "00137749", 3.11, 0, true]], "verdict": "persistent", "snr": 11.377682664057122, "galaxy": false}, "spPlate-10938-58514.fits 564 6617.592 +1": {"frames": [["b2", "00282453", 0.0, 71434240, false], ["b2", "00282454", 0.0, 71434240, false], ["b2", "00282455", 0.0, 71434240, false], ["b2", "00282456", 0.0, 71434240, false], ["r2", "00282453", 4.85, 0, true], ["r2", "00282454", 4.47, 0, true], ["r2", "00282455", 5.47, 0, true], ["r2", "00282456", 4.14, 0, true]], "verdict": "persistent", "snr": 11.366996659930141, "galaxy": false}, "spPlate-7338-57817.fits 729 4732.602 +1": {"frames": [["b2", "00239016", 2.52, 0, true], ["b2", "00239017", 3.88, 0, true], ["b2", "00239018", 5.58, 0, true], ["b2", "00239019", 4.12, 0, true], ["b2", "00239020", 3.93, 0, true]], "verdict": "persistent", "snr": 11.357981113991585, "galaxy": false}, "spPlate-10270-58488.fits 93 7025.868 +1": {"frames": [["b1", "00280175", 0.0, 83886080, false], ["b1", "00280176", 0.0, 83886080, false], ["b1", "00280177", 0.0, 83886080, false], ["b1", "00280178", 0.0, 83886080, false], ["b1", "00280179", 0.0, 83886080, false], ["r1", "00280175", 5.91, 0, true], ["r1", "00280176", 2.8, 0, true], ["r1", "00280177", 3.61, 0, true], ["r1", "00280178", 5.46, 0, true], ["r1", "00280179", 4.46, 0, true]], "verdict": "persistent", "snr": 11.354793980012126, "galaxy": false}, "spPlate-3552-55089.fits 628 4663.371 +1": {"frames": [["b2", "00101459", -5691946803588.78, 67108864, true], ["b2", "00101465", -2.5487687884233712e+17, 100663424, true]], "verdict": "unclear", "snr": 11.353148639211579, "galaxy": false}, "spPlate-3688-55273.fits 272 3700.837 +1": {"frames": [["b1", "00112018", -3.05, 0, true], ["b1", "00112019", -0.71, 0, true], ["b1", "00112020", -1.1, 851968, true], ["b1", "00112021", -2.07, 0, true], ["b1", "00112024", -3.48, 851968, true]], "verdict": "unclear", "snr": 11.317220203216982, "galaxy": false}, "spPlate-6157-56238.fits 586 9255.502 +1": {"frames": [["r2", "00150243", 6.22, 0, true], ["r2", "00150244", 5.26, 0, true], ["r2", "00150245", 6.54, 0, true], ["r2", "00150246", 5.18, 0, true]], "verdict": "persistent", "snr": 11.285684485538775, "galaxy": false}, "spPlate-5324-55947.fits 948 6798.295 +1": {"frames": [["b2", "00138840", 0.0, 83886080, false], ["b2", "00138841", 0.0, 83886080, false], ["b2", "00138842", 0.0, 83886080, false], ["b2", "00138843", 0.0, 83886080, false], ["r2", "00138840", 6.4, 0, true], ["r2", "00138841", 5.13, 0, true], ["r2", "00138842", 4.34, 0, true], ["r2", "00138843", 3.26, 0, true]], "verdict": "persistent", "snr": 11.284618731323354, "galaxy": false}, "spPlate-8532-58022.fits 568 7582.283 +1": {"frames": [["r2", "00250362", 6.24, 0, true], ["r2", "00250363", 6.01, 0, true], ["r2", "00250364", 4.25, 0, true], ["r2", "00250365", 3.06, 0, true]], "verdict": "persistent", "snr": 11.273527298465837, "galaxy": false}, "spPlate-9371-58073.fits 962 5092.136 +1": {"frames": [["b2", "00254561", 4.5, 0, true], ["b2", "00254562", 5.58, 0, true], ["b2", "00254563", 4.71, 0, true], ["b2", "00254564", 4.52, 0, true]], "verdict": "persistent", "snr": 11.272518896953045, "galaxy": false}, "spPlate-5404-56013.fits 406 8111.478 +1": {"frames": [["r1", "00141851", 4.77, 0, true], ["r1", "00141852", 6.41, 0, true], ["r1", "00141853", 6.35, 0, true]], "verdict": "persistent", "snr": 11.265989053215558, "galaxy": true}, "spPlate-6594-56272.fits 320 7563.103 +1": {"frames": [["r1", "00152287", 1.82, 851968, true], ["r1", "00152288", 6.98, 0, true], ["r1", "00152289", 5.38, 0, true], ["r1", "00152290", 6.09, 0, true], ["r1", "00152291", 5.28, 0, true]], "verdict": "persistent", "snr": 11.250319533517374, "galaxy": false}, "spPlate-11059-58515.fits 987 9164.315 +1": {"frames": [["r2", "00282404", 4.82, 0, true], ["r2", "00282405", 3.68, 0, true], ["r2", "00282406", 4.82, 0, true], ["r2", "00282407", 3.23, 0, true], ["r2", "00282514", 3.97, 0, true], ["r2", "00282515", 3.03, 0, true]], "verdict": "persistent", "snr": 11.249783584673416, "galaxy": true}, "spPlate-11285-58402.fits 179 10053.100 +1": {"frames": [["r1", "00273462", 1.12, 524544, true], ["r1", "00273463", 1.27, 524544, true], ["r1", "00273464", -1.59, 256, true]], "verdict": "unclear", "snr": 11.191362802189216, "galaxy": false}, "spPlate-4459-55533.fits 964 8126.434 +1": {"frames": [["r2", "00123162", 4.22, 0, true], ["r2", "00123163", 4.7, 0, true], ["r2", "00123164", 3.3, 0, true], ["r2", "00123165", 4.37, 0, true], ["r2", "00123166", 4.17, 0, true], ["r2", "00123167", 3.72, 0, true]], "verdict": "persistent", "snr": 11.16113478035574, "galaxy": false}, "spPlate-4381-55824.fits 588 9276.839 +1": {"frames": [["r2", "00133504", 4.02, 0, true], ["r2", "00133505", 4.24, 0, true], ["r2", "00133506", 4.47, 0, true], ["r2", "00133507", 4.35, 0, true], ["r2", "00133508", 2.75, 0, true], ["r2", "00133509", 6.18, 0, true], ["r2", "00134083", 3.65, 0, true], ["r2", "00134084", 3.16, 0, true]], "verdict": "persistent", "snr": 11.151847110088113, "galaxy": false}, "spPlate-5121-55855.fits 462 7048.553 +1": {"frames": [["b1", "00135202", 0.0, 83886080, false], ["b1", "00135203", 0.0, 83886080, false], ["r1", "00135202", 9.11, 524288, true], ["r1", "00135203", -0.75, 0, true]], "verdict": "one exposure", "snr": 11.151565817044807, "galaxy": false}, "spPlate-7338-57859.fits 729 4732.602 +1": {"frames": [["b2", "00241937", 5.28, 0, true], ["b2", "00241938", 5.08, 0, true], ["b2", "00241939", 4.97, 0, true]], "verdict": "persistent", "snr": 11.147485164925527, "galaxy": false}, "spPlate-8067-58253.fits 112 8074.209 +1": {"frames": [["r1", "00268565", 4.52, 0, true], ["r1", "00268566", 3.06, 0, true], ["r1", "00268821", 6.6, 0, true], ["r1", "00268822", 5.24, 0, true]], "verdict": "persistent", "snr": 11.146455217735541, "galaxy": false}, "spPlate-5438-56002.fits 34 8117.083 +1": {"frames": [["r1", "00141261", 6.03, 0, true], ["r1", "00141262", 5.63, 0, true], ["r1", "00141263", 4.56, 0, true], ["r1", "00141264", 3.66, 0, true]], "verdict": "persistent", "snr": 11.11236187417707, "galaxy": false}, "spPlate-8878-57785.fits 697 7557.880 +1": {"frames": [["r2", "00236526", 2.7, 0, true], ["r2", "00236527", 3.86, 0, true], ["r2", "00236528", 2.06, 0, true], ["r2", "00236529", 3.9, 0, true], ["r2", "00236530", 3.02, 0, true], ["r2", "00236531", 2.27, 0, true], ["r2", "00236532", 3.1, 0, true], ["r2", "00236636", 2.83, 0, true], ["r2", "00236637", 4.56, 0, true]], "verdict": "persistent", "snr": 11.103476400461885, "galaxy": false}, "spPlate-6257-56274.fits 118 8323.385 +1": {"frames": [["r1", "00152592", 6.33, 0, true], ["r1", "00152593", 6.57, 0, true], ["r1", "00152594", 5.97, 0, true], ["r1", "00152595", 6.01, 0, true]], "verdict": "persistent", "snr": 11.09257875021187, "galaxy": false}, "spPlate-3844-55321.fits 870 7389.244 +1": {"frames": [["r2", "00114525", 3.1, 0, true], ["r2", "00114526", 5.43, 0, true], ["r2", "00114527", 5.1, 0, true], ["r2", "00114528", 4.71, 0, true]], "verdict": "persistent", "snr": 11.078045832047561, "galaxy": false}, "spPlate-8500-57432.fits 407 10115.795 +1": {"frames": [["r1", "00214721", -1.05, 0, true], ["r1", "00214722", 1.35, 0, true], ["r1", "00214723", 1.54, 0, true], ["r1", "00214816", 2.05, 0, true], ["r1", "00214817", 1.87, 0, true], ["r1", "00214818", 1.31, 0, true], ["r1", "00214819", -1.45, 0, true], ["r1", "00214820", -1.47, 0, true]], "verdict": "unclear", "snr": 11.073700199875683, "galaxy": false}, "spPlate-7139-56568.fits 579 9059.412 +1": {"frames": [["r2", "00167128", 5.3, 0, true], ["r2", "00167129", 5.16, 0, true], ["r2", "00167130", 4.78, 0, true], ["r2", "00167131", 4.98, 0, true]], "verdict": "persistent", "snr": 11.06790757665354, "galaxy": false}, "spPlate-11121-58438.fits 466 9885.531 +1": {"frames": [["r1", "00276559", -2.29, 256, true], ["r1", "00276560", -2.08, 256, true], ["r1", "00276561", 1.51, 256, true]], "verdict": "unclear", "snr": 11.05973288199155, "galaxy": false}, "spPlate-8276-57067.fits 339 6584.154 +1": {"frames": [["b1", "00194625", 0.0, 83886080, false], ["b1", "00194626", 0.0, 83886080, false], ["b1", "00194627", 0.0, 83886080, false], ["b1", "00194628", 0.0, 83886080, false], ["b1", "00194714", 0.0, 83886080, false], ["b1", "00194715", 0.0, 83886080, false], ["b1", "00194716", 0.0, 83886080, false], ["r1", "00194625", 3.36, 0, true], ["r1", "00194626", 3.88, 0, true], ["r1", "00194627", 3.36, 0, true], ["r1", "00194628", 4.58, 0, true], ["r1", "00194714", 4.23, 0, true], ["r1", "00194715", 3.33, 0, true], ["r1", "00194716", 4.19, 0, true]], "verdict": "persistent", "snr": 11.030895422826221, "galaxy": false}, "spPlate-3879-55244.fits 186 8076.069 +1": {"frames": [["r1", "00108635", 567415517856556.2, 0, true], ["r1", "00108636", -70417.68, 0, true], ["r1", "00108637", 0.0, 0, true], ["r1", "00108638", 9014324958.81, 0, true], ["r1", "00108639", 4.83996213724805e+18, 0, true], ["r1", "00108640", -17279816648249.85, 0, true], ["r1", "00108641", 0.0, 0, true], ["r1", "00108642", 2.36, 0, true]], "verdict": "one exposure", "snr": 11.027372011205191, "galaxy": false}, "spPlate-4207-55475.fits 812 9191.788 +1": {"frames": [["r2", "00119981", 3.53, 0, true], ["r2", "00119982", 3.64, 0, true], ["r2", "00119983", 4.52, 0, true], ["r2", "00119984", 2.15, 0, true], ["r2", "00119985", 2.4, 0, true], ["r2", "00119986", 4.43, 0, true], ["r2", "00119987", 4.29, 0, true], ["r2", "00119988", 4.39, 0, true], ["r2", "00119989", 2.83, 0, true]], "verdict": "persistent", "snr": 11.023453775993497, "galaxy": true}, "spPlate-11317-58398.fits 332 10320.482 +1": {"frames": [["r1", "00273150", 2.63, 256, true], ["r1", "00273151", 1.52, 256, true], ["r1", "00273195", 2.33, 256, true], ["r1", "00273196", 2.31, 256, true], ["r1", "00273197", -1.3, 256, true]], "verdict": "unclear", "snr": 11.012782318496127, "galaxy": false}, "spPlate-4289-55856.fits 30 6459.516 +1": {"frames": [["b1", "00135238", 0.0, 71434240, false], ["b1", "00135239", 0.0, 71434240, false], ["b1", "00135240", 0.0, 71434240, false], ["b1", "00135241", 0.0, 71434240, false], ["r1", "00135238", 6.08, 0, true], ["r1", "00135239", 4.98, 0, true], ["r1", "00135240", 4.76, 0, true], ["r1", "00135241", 6.69, 0, true]], "verdict": "persistent", "snr": 11.004272942397957, "galaxy": false}, "spPlate-10000-58514.fits 689 7774.993 +1": {"frames": [["r2", "00282412", 3.31, 0, true], ["r2", "00282413", 5.41, 0, true], ["r2", "00282414", 4.86, 0, true], ["r2", "00282415", 5.55, 0, true], ["r2", "00282416", 3.28, 0, true]], "verdict": "persistent", "snr": 10.9962712856075, "galaxy": false}, "spPlate-6273-56243.fits 681 5008.411 +1": {"frames": [["b2", "00150618", 4.34, 0, true], ["b2", "00150619", 3.47, 0, true], ["b2", "00150620", 3.4, 0, true], ["b2", "00150621", 3.6, 0, true], ["b2", "00150622", 4.0, 0, true]], "verdict": "persistent", "snr": 10.991072917540231, "galaxy": false}, "spPlate-5479-56016.fits 174 9287.525 +1": {"frames": [["r1", "00142009", 5.57, 0, true], ["r1", "00142010", 5.98, 0, true], ["r1", "00142011", 6.96, 0, true], ["r1", "00142069", 5.26, 0, true]], "verdict": "persistent", "snr": 10.970473187362094, "galaxy": false}, "spPlate-6375-56323.fits 951 8970.156 +1": {"frames": [["r2", "00155314", 3.74, 0, true], ["r2", "00155315", 6.87, 0, true], ["r2", "00155316", 5.41, 589824, true], ["r2", "00155317", 5.67, 0, true], ["r2", "00155318", 3.96, 0, true]], "verdict": "persistent", "snr": 10.940356940879806, "galaxy": false}, "spPlate-7142-56567.fits 279 4677.351 +1": {"frames": [["b1", "00167028", 2.36, 524288, true], ["b1", "00167029", 1.73, 524288, true], ["b1", "00167030", -1.56, 0, true], ["b1", "00167031", 1.44, 524288, true]], "verdict": "unclear", "snr": 10.85317143787072, "galaxy": false}, "spPlate-7160-56599.fits 431 7469.646 +1": {"frames": [["r1", "00168727", 3.36, 0, true], ["r1", "00168728", 4.44, 8388608, true], ["r1", "00168729", 3.06, 0, true], ["r1", "00168730", 4.01, 0, true], ["r1", "00168815", 3.55, 8388608, true], ["r1", "00168816", 3.26, 0, true], ["r1", "00168817", 3.31, 8388608, true], ["r1", "00168818", 3.41, 0, true]], "verdict": "persistent", "snr": 10.851232230389767, "galaxy": false}, "spPlate-8175-57039.fits 450 7493.764 +1": {"frames": [["r1", "00192749", 2.63, 0, true], ["r1", "00192750", 3.47, 0, true], ["r1", "00192751", 2.38, 0, true], ["r1", "00192752", 4.13, 0, true], ["r1", "00192845", 4.84, 0, true], ["r1", "00192846", 4.58, 0, true]], "verdict": "persistent", "snr": 10.840351254867391, "galaxy": true}, "spPlate-11082-58508.fits 9 6603.893 +1": {"frames": [["b1", "00280259", 0.0, 83886080, false], ["b1", "00281773", 0.0, 83886080, false], ["b1", "00281774", 0.0, 83886080, false], ["b1", "00281775", 0.0, 83886080, false], ["b1", "00281776", 0.0, 83886080, false], ["r1", "00280259", -1.39, 0, true], ["r1", "00281773", 4.09, 0, true], ["r1", "00281774", 3.4, 0, true], ["r1", "00281775", 3.76, 0, true], ["r1", "00281776", 3.22, 0, true]], "verdict": "persistent", "snr": 10.834738755693571, "galaxy": false}, "spPlate-7683-58133.fits 103 9021.941 +1": {"frames": [["r1", "00259523", 5.05, 0, true], ["r1", "00259524", 3.42, 0, true], ["r1", "00259525", 3.62, 0, true], ["r1", "00259526", 3.86, 0, true], ["r1", "00259527", 2.72, 0, true], ["r1", "00259629", 4.65, 0, true]], "verdict": "persistent", "snr": 10.831539684243529, "galaxy": false}, "spPlate-7699-57574.fits 95 6416.527 +1": {"frames": [["b1", "00224249", 0.0, 71434240, false], ["b1", "00224250", 0.0, 71434240, false], ["b1", "00224251", 0.0, 71434240, false], ["b1", "00224252", 0.0, 71434240, false], ["b1", "00224314", 0.0, 71434240, false], ["r1", "00224249", 4.24, 0, true], ["r1", "00224250", 4.45, 0, true], ["r1", "00224251", 3.62, 0, true], ["r1", "00224252", 4.56, 0, true], ["r1", "00224314", 5.54, 0, true]], "verdict": "persistent", "snr": 10.8154095431416, "galaxy": true}, "spPlate-7338-57789.fits 729 4732.602 +1": {"frames": [["b2", "00237010", 3.87, 0, true], ["b2", "00237011", 4.4, 0, true], ["b2", "00237012", 4.44, 0, true], ["b2", "00237013", 5.02, 0, true]], "verdict": "persistent", "snr": 10.803245470609058, "galaxy": false}, "spPlate-9435-58108.fits 594 7877.710 +1": {"frames": [["r2", "00257577", 4.79, 0, true], ["r2", "00257578", 2.44, 0, true], ["r2", "00257579", 3.91, 0, true], ["r2", "00257580", 5.65, 0, true], ["r2", "00257581", 3.45, 0, true], ["r2", "00257582", 4.19, 0, true], ["r2", "00257583", 4.79, 0, true]], "verdict": "persistent", "snr": 10.766478315665788, "galaxy": true}, "spPlate-9604-58133.fits 358 5529.680 +1": {"frames": [["b1", "00259650", -1.9, 0, true], ["b1", "00259651", -1.13, 0, true], ["b1", "00259652", 2.5, 524288, true], ["r1", "00259650", 0.0, 71434240, false], ["r1", "00259651", 0.0, 71434240, false], ["r1", "00259652", 0.0, 71434240, false]], "verdict": "unclear", "snr": 10.764746432730679, "galaxy": false}, "spPlate-8522-58193.fits 802 8558.546 +1": {"frames": [["r2", "00264440", 5.43, 0, true], ["r2", "00264516", 4.31, 0, true], ["r2", "00264517", 3.46, 0, true], ["r2", "00264518", 4.87, 0, true]], "verdict": "persistent", "snr": 10.760188477328333, "galaxy": false}, "spPlate-9353-57814.fits 764 7222.707 +1": {"frames": [["b2", "00238486", 0.0, 83886080, false], ["b2", "00238487", 0.0, 83886080, false], ["b2", "00238488", 0.0, 83886080, false], ["b2", "00238489", 0.0, 83886080, false], ["b2", "00238490", 0.0, 83886080, false], ["b2", "00238491", 0.0, 83886080, false], ["b2", "00238492", 0.0, 83886080, false], ["b2", "00238735", 0.0, 83886080, false], ["r2", "00238486", 2.55, 0, true], ["r2", "00238487", 2.49, 0, true], ["r2", "00238488", 3.2, 0, true], ["r2", "00238489", 4.35, 0, true], ["r2", "00238490", 3.41, 0, true], ["r2", "00238491", 3.57, 0, true], ["r2", "00238492", 4.36, 0, true], ["r2", "00238735", 2.53, 0, true]], "verdict": "persistent", "snr": 10.748034439320483, "galaxy": false}, "spPlate-4769-55931.fits 818 6787.346 +1": {"frames": [["b2", "00138198", 0.0, 83886080, false], ["b2", "00138222", 0.0, 83886080, false], ["b2", "00138223", 0.0, 83886080, false], ["b2", "00138224", 0.0, 83886080, false], ["r2", "00138198", 4.02, 0, true], ["r2", "00138222", 4.08, 0, true], ["r2", "00138223", 5.19, 0, true], ["r2", "00138224", 4.24, 0, true]], "verdict": "persistent", "snr": 10.729065013820337, "galaxy": false}, "spPlate-6423-56313.fits 38 7074.569 +1": {"frames": [["b1", "00154953", 0.0, 83886080, false], ["b1", "00154954", 0.0, 83886080, false], ["b1", "00154955", 0.0, 83886080, false], ["b1", "00154956", 0.0, 83886080, false], ["r1", "00154953", 4.42, 0, true], ["r1", "00154954", 4.12, 0, true], ["r1", "00154955", 4.9, 0, true], ["r1", "00154956", 4.85, 0, true]], "verdict": "persistent", "snr": 10.71310990784185, "galaxy": true}, "spPlate-7846-56984.fits 67 9906.038 +1": {"frames": [["r1", "00189657", 0.99, 0, true], ["r1", "00189658", -0.66, 0, true], ["r1", "00189659", 1.07, 0, true], ["r1", "00189660", 1.11, 0, true], ["r1", "00189661", 1.88, 0, true], ["r1", "00189662", 1.66, 0, true]], "verdict": "unclear", "snr": 10.70406426114473, "galaxy": false}, "spPlate-3751-55234.fits 952 9731.953 +1": {"frames": [["r2", "00107893", -118347.35, 0, false], ["r2", "00107894", 147518.26, 0, false], ["r2", "00108126", 0.0, 0, false], ["r2", "00108127", 0.0, 0, false], ["r2", "00108128", 0.0, 0, false], ["r2", "00108129", 0.0, 0, false], ["r2", "00108130", 0.0, 0, false], ["r2", "00108131", 0.0, 0, false]], "verdict": "no frame", "snr": 10.66292798921405, "galaxy": false}, "spPlate-10938-58514.fits 564 8804.405 +1": {"frames": [["r2", "00282453", 4.06, 0, true], ["r2", "00282454", 5.58, 0, true], ["r2", "00282455", 3.93, 0, true], ["r2", "00282456", 5.29, 0, true]], "verdict": "persistent", "snr": 10.65346031684896, "galaxy": false}, "spPlate-5321-55945.fits 808 7932.316 +1": {"frames": [["r2", "00138635", 4.87, 8388608, true], ["r2", "00138636", 3.57, 8388608, true], ["r2", "00138637", 4.56, 0, true], ["r2", "00138638", 3.68, 8388608, true], ["r2", "00138639", 3.57, 8388608, true], ["r2", "00138640", 3.42, 8388608, true]], "verdict": "persistent", "snr": 10.649707457001384, "galaxy": false}, "spPlate-4308-55565.fits 202 7455.899 +1": {"frames": [["r1", "00124605", 4.78, 0, true], ["r1", "00124606", 4.8, 0, true], ["r1", "00124607", 4.01, 0, true], ["r1", "00124693", 3.2, 0, true]], "verdict": "persistent", "snr": 10.630543275035452, "galaxy": false}, "spPlate-9354-57806.fits 526 7888.601 +1": {"frames": [["r2", "00238129", 4.47, 8388608, true], ["r2", "00238130", 3.06, 8388608, true], ["r2", "00238131", 3.58, 0, true], ["r2", "00238132", 4.25, 8388608, true], ["r2", "00238133", 2.99, 8388608, true], ["r2", "00238134", 4.45, 0, true]], "verdict": "persistent", "snr": 10.616899547491505, "galaxy": false}, "spPlate-6529-56535.fits 447 10039.221 +1": {"frames": [["r1", "00165472", 1.9, 0, true], ["r1", "00165473", 1.71, 0, true], ["r1", "00165474", 1.35, 0, true], ["r1", "00165475", 1.45, 0, true]], "verdict": "unclear", "snr": 10.613280428478538, "galaxy": true}, "spPlate-6159-56214.fits 968 7053.424 +1": {"frames": [["b2", "00148822", 0.0, 83886080, false], ["b2", "00148823", 0.0, 83886080, false], ["b2", "00148824", 0.0, 83886080, false], ["b2", "00148912", 0.0, 83886080, false], ["b2", "00148913", 0.0, 83886080, false], ["r2", "00148822", 3.65, 0, true], ["r2", "00148823", 3.03, 0, true], ["r2", "00148824", 3.59, 0, true], ["r2", "00148912", 5.29, 0, true], ["r2", "00148913", 4.16, 0, true]], "verdict": "persistent", "snr": 10.573557885058248, "galaxy": false}, "spPlate-4528-55559.fits 50 7677.150 +1": {"frames": [["r1", "00124240", 4.45, 0, true], ["r1", "00124285", 2.82, 0, true], ["r1", "00124286", 3.35, 0, true], ["r1", "00124345", 3.08, 0, true], ["r1", "00124346", 6.04, 0, true]], "verdict": "persistent", "snr": 10.566021614812703, "galaxy": false}, "spPlate-6514-56487.fits 470 8546.730 +1": {"frames": [["r1", "00164425", 4.1, 0, true], ["r1", "00164426", 4.4, 0, true], ["r1", "00164427", 3.62, 0, true], ["r1", "00164428", 2.51, 8388608, true], ["r1", "00164712", 4.35, 524288, true], ["r1", "00164763", 2.65, 8388608, true], ["r1", "00164852", 2.64, 0, true]], "verdict": "persistent", "snr": 10.556245561022646, "galaxy": false}, "spPlate-7674-57359.fits 981 6697.304 +1": {"frames": [["b2", "00209418", 0.0, 83886096, false], ["b2", "00209419", 0.0, 83886096, false], ["b2", "00209420", 0.0, 83886096, false], ["b2", "00209421", 0.0, 83886096, false], ["r2", "00209418", 1.98, 34078720, true], ["r2", "00209419", 1.96, 33554432, true], ["r2", "00209420", 3.36, 524288, true], ["r2", "00209421", 3.02, 524288, true]], "verdict": "persistent", "snr": 10.556042345425963, "galaxy": false}, "spPlate-5121-55855.fits 652 3609.940 +1": {"frames": [["b2", "00135202", -2.03, 0, true], ["b2", "00135203", 1.55, 0, true]], "verdict": "unclear", "snr": 10.55485036934125, "galaxy": false}, "spPlate-5715-56657.fits 388 6810.829 +1": {"frames": [["b1", "00171590", 0.0, 83886080, false], ["b1", "00171591", 0.0, 83886080, false], ["b1", "00171592", 0.0, 83886080, false], ["b1", "00171593", 0.0, 83886080, false], ["b1", "00171594", 0.0, 83886080, false], ["b1", "00171595", 0.0, 83886080, false], ["r1", "00171590", 4.73, 0, true], ["r1", "00171591", 4.79, 0, true], ["r1", "00171592", 4.16, 0, true], ["r1", "00171593", 3.43, 0, true], ["r1", "00171594", 4.08, 0, true], ["r1", "00171595", 3.51, 0, true]], "verdict": "persistent", "snr": 10.553257059424467, "galaxy": false}, "spPlate-4057-55357.fits 108 6007.586 +1": {"frames": [["b1", "00116154", 2.97, 0, true], ["b1", "00116155", 2.94, 0, true], ["b1", "00116156", 3.25, 0, true], ["b1", "00116157", 2.15, 0, true], ["b1", "00116367", 3.42, 0, true], ["b1", "00116368", 2.55, 0, true], ["r1", "00116154", -2.2, 0, true], ["r1", "00116155", 1.86, 0, true], ["r1", "00116156", 2.37, 0, true], ["r1", "00116157", 2.48, 0, true], ["r1", "00116367", 2.85, 0, true], ["r1", "00116368", 4.09, 0, true]], "verdict": "persistent", "snr": 10.532460993820091, "galaxy": true}, "spPlate-6983-56447.fits 10 5575.708 +1": {"frames": [["b1", "00162713", 6.61, 8388608, true], ["b1", "00162714", 7.03, 8650752, true], ["b1", "00162715", 3.84, 262144, true], ["r1", "00162713", 0.0, 71434240, false], ["r1", "00162714", 0.0, 71434240, false], ["r1", "00162715", 0.0, 71434240, false]], "verdict": "persistent", "snr": 10.513515313543717, "galaxy": false}, "spPlate-6428-56279.fits 130 7511.039 +1": {"frames": [["r1", "00152942", 4.32, 0, true], ["r1", "00152943", 2.51, 0, true], ["r1", "00152944", 4.6, 0, true], ["r1", "00152945", 5.73, 0, true], ["r1", "00152946", 5.47, 0, true], ["r1", "00152947", 3.38, 0, true]], "verdict": "persistent", "snr": 10.486675608704878, "galaxy": false}, "spPlate-8381-57512.fits 594 9187.556 +1": {"frames": [["r2", "00220358", 4.34, 0, true], ["r2", "00220359", 4.61, 0, true], ["r2", "00220360", 4.69, 0, true], ["r2", "00220361", 3.73, 0, true], ["r2", "00220362", 4.52, 0, true]], "verdict": "persistent", "snr": 10.475790314600474, "galaxy": false}, "spPlate-5176-56221.fits 322 7428.481 +1": {"frames": [["r1", "00149562", 5.4, 0, true], ["r1", "00149563", 2.93, 0, true], ["r1", "00149564", 3.91, 0, true], ["r1", "00149565", 3.95, 0, true], ["r1", "00149566", 5.34, 0, true], ["r1", "00149567", 3.25, 0, true]], "verdict": "persistent", "snr": 10.465641209218825, "galaxy": false}, "spPlate-4221-55443.fits 510 8605.973 +1": {"frames": [["r2", "00118857", 4.43, 0, true], ["r2", "00118859", 3.58, 0, true], ["r2", "00118860", 3.53, 589824, true], ["r2", "00118861", 4.02, 0, true], ["r2", "00118862", 4.21, 0, true]], "verdict": "persistent", "snr": 10.464203304976666, "galaxy": true}, "spPlate-3877-55365.fits 396 5918.341 +1": {"frames": [["b1", "00116871", 2.98, 0, true], ["b1", "00116872", 3.51, 0, true], ["b1", "00116873", 3.64, 0, true], ["b1", "00116874", 3.68, 0, true], ["b1", "00116875", 4.18, 0, true], ["b1", "00116876", 4.63, 0, true], ["r1", "00116871", 2.89, 33554432, true], ["r1", "00116872", 1.85, 0, true], ["r1", "00116873", 0.74, 589824, true], ["r1", "00116874", -1.75, 0, true], ["r1", "00116875", 1.11, 0, true], ["r1", "00116876", 2.22, 0, true]], "verdict": "persistent", "snr": 10.44861162943717, "galaxy": true}, "spPlate-11346-58429.fits 13 10094.853 +1": {"frames": [["r1", "00275778", -1.054076285938329e+19, 8388608, true], ["r1", "00275779", -3868713.96, 8388608, true], ["r1", "00275780", 0.0, 0, true], ["r1", "00275781", 3.98, 0, true]], "verdict": "unclear", "snr": 10.441504687813687, "galaxy": false}, "spPlate-6426-56334.fits 109 8605.973 +1": {"frames": [["r1", "00156178", 4.24, 0, true], ["r1", "00156179", 5.2, 0, true], ["r1", "00156180", 5.15, 0, true], ["r1", "00156181", 5.21, 0, true]], "verdict": "persistent", "snr": 10.42254191339982, "galaxy": false}, "spPlate-8495-57481.fits 884 5751.750 +1": {"frames": [["b2", "00218415", 7.06, 0, true], ["b2", "00218416", 5.69, 0, true], ["b2", "00218417", 4.76, 0, true], ["r2", "00218415", 0.0, 71434240, false], ["r2", "00218416", 0.0, 71434240, false], ["r2", "00218417", 0.0, 71434240, false]], "verdict": "persistent", "snr": 10.418375333458185, "galaxy": false}, "spPlate-10242-58161.fits 86 6614.545 +1": {"frames": [["b1", "00262262", 0.0, 83886080, false], ["b1", "00262263", 0.0, 83886080, false], ["b1", "00262264", 0.0, 83886080, false], ["r1", "00262262", 5.38, 0, true], ["r1", "00262263", 5.28, 0, true], ["r1", "00262264", 5.26, 0, true]], "verdict": "persistent", "snr": 10.414688537755008, "galaxy": false}, "spPlate-9414-58162.fits 10 9860.524 +1": {"frames": [["r1", "00262101", 1.64, 0, true], ["r1", "00262102", 1.46, 0, true], ["r1", "00262103", 1.31, 0, true], ["r1", "00262249", 3.24, 0, true], ["r1", "00262250", 2.08, 0, true], ["r1", "00262251", -2.27, 0, true], ["r1", "00262356", 1.5, 0, true], ["r1", "00262357", 1.39, 0, true]], "verdict": "unclear", "snr": 10.403600399639751, "galaxy": false}, "spPlate-4341-55538.fits 534 8745.809 +1": {"frames": [["r2", "00123558", 5.15, 0, true], ["r2", "00123559", 3.66, 0, true], ["r2", "00123560", 2.17, 0, true], ["r2", "00123561", 3.41, 0, true], ["r2", "00123562", 4.93, 0, true], ["r2", "00123563", 2.35, 0, true]], "verdict": "persistent", "snr": 10.397632152818874, "galaxy": false}, "spPlate-7512-56777.fits 45 7636.599 +1": {"frames": [["r1", "00178966", 1.02, 0, true], ["r1", "00178967", 1.92, 0, true], ["r1", "00179082", 3.0, 0, true], ["r1", "00179083", 3.45, 0, true], ["r1", "00179084", 2.85, 0, true], ["r1", "00179085", 3.09, 0, true], ["r1", "00179086", 3.45, 0, true], ["r1", "00179139", 2.59, 0, true], ["r1", "00179140", 3.05, 0, true], ["r1", "00179141", 2.85, 0, true], ["r1", "00179142", 4.78, 0, true]], "verdict": "persistent", "snr": 10.38575788416, "galaxy": true}, "spPlate-7338-56745.fits 727 4732.602 +1": {"frames": [["b2", "00177670", 1.82, 0, true], ["b2", "00177671", 2.88, 0, true], ["b2", "00177672", 3.06, 0, true], ["b2", "00177673", 3.45, 0, true], ["b2", "00177674", 3.73, 0, true], ["b2", "00177675", 3.0, 0, true], ["b2", "00177676", 2.47, 0, true], ["b2", "00177677", 2.66, 0, true], ["b2", "00177678", 3.24, 0, true]], "verdict": "persistent", "snr": 10.383171874457974, "galaxy": false}, "spPlate-3540-55127.fits 990 5582.131 +1": {"frames": [["b2", "00102747", 0.0, 167772160, false], ["b2", "00102748", 0.0, 134479872, false], ["b2", "00102749", 0.0, 8388608, false], ["r2", "00102747", 0.0, 71434240, true], ["r2", "00102748", 0.0, 71434240, true], ["r2", "00102749", 0.0, 71434240, true]], "verdict": "unclear", "snr": 10.370166359920935, "galaxy": false}, "spPlate-8193-57333.fits 379 6564.475 +1": {"frames": [["b1", "00206537", 0.0, 83886080, false], ["b1", "00206538", 0.0, 83886080, false], ["b1", "00206539", 0.0, 83886080, false], ["b1", "00206607", 0.0, 83886080, false], ["b1", "00206608", 0.0, 83886080, false], ["b1", "00206609", 0.0, 83886080, false], ["b1", "00207703", 0.0, 83886080, false], ["r1", "00206537", 3.62, 8388608, true], ["r1", "00206538", 3.19, 8388608, true], ["r1", "00206539", 3.41, 0, true], ["r1", "00206607", 3.37, 8388608, true], ["r1", "00206608", 3.84, 8388608, true], ["r1", "00206609", 3.95, 8388608, true], ["r1", "00207703", 3.4, 0, true]], "verdict": "persistent", "snr": 10.369245727655253, "galaxy": false}, "spPlate-4200-55499.fits 792 8802.378 +1": {"frames": [["r2", "00121278", 2.61, 0, true], ["r2", "00121279", 2.77, 0, true], ["r2", "00121280", 3.53, 0, true], ["r2", "00121281", 4.04, 0, true], ["r2", "00121282", 5.67, 0, true], ["r2", "00121283", 3.81, 0, true]], "verdict": "persistent", "snr": 10.34985244591627, "galaxy": false}, "spPlate-5294-55922.fits 562 9071.936 +1": {"frames": [["r2", "00137536", 2.82, 0, true], ["r2", "00137537", 2.57, 0, true], ["r2", "00137538", 4.8, 0, true], ["r2", "00137539", 3.18, 0, true], ["r2", "00137540", 3.49, 0, true], ["r2", "00137747", 4.36, 0, true], ["r2", "00137748", 5.1, 0, true], ["r2", "00137749", 4.74, 0, true]], "verdict": "persistent", "snr": 10.343230377299289, "galaxy": false}, "spPlate-7900-57358.fits 798 8615.887 +1": {"frames": [["r2", "00209147", 4.24, 0, true], ["r2", "00209209", 5.51, 0, true], ["r2", "00209210", 2.3, 0, true], ["r2", "00209211", 2.36, 0, true], ["r2", "00209306", 4.2, 0, true], ["r2", "00209307", 5.44, 0, true]], "verdict": "persistent", "snr": 10.319834977624167, "galaxy": true}, "spPlate-9404-58045.fits 411 5231.184 +1": {"frames": [["b1", "00252246", 4.55, 0, true], ["b1", "00252247", 3.24, 0, true], ["b1", "00252248", 3.33, 0, true], ["b1", "00252249", 4.54, 0, true], ["b1", "00252351", 3.91, 0, true], ["b1", "00252352", 3.58, 0, true], ["b1", "00252353", 4.64, 0, true], ["r1", "00252246", 0.0, 71434240, false], ["r1", "00252247", 0.0, 71434240, false], ["r1", "00252248", 0.0, 71434240, false], ["r1", "00252249", 0.0, 71434240, false], ["r1", "00252351", 0.0, 71434240, false], ["r1", "00252352", 0.0, 71434240, false], ["r1", "00252353", 0.0, 71434240, false]], "verdict": "persistent", "snr": 10.316880195250874, "galaxy": false}, "spPlate-4019-55363.fits 308 8525.110 +1": {"frames": [["r1", "00116609", 3.02, 0, true], ["r1", "00116610", 4.02, 0, true], ["r1", "00116611", 3.06, 0, true], ["r1", "00116681", 4.29, 0, true], ["r1", "00116682", 3.36, 0, true], ["r1", "00116683", 3.26, 0, true], ["r1", "00116740", 2.42, 0, true], ["r1", "00116741", 1.92, 0, true]], "verdict": "persistent", "snr": 10.31512308577352, "galaxy": false}, "spPlate-7760-58080.fits 565 4755.542 +1": {"frames": [["b2", "00255209", 2.38, 0, true], ["b2", "00255210", -0.9, 0, true], ["b2", "00255211", 2.22, 524288, true], ["b2", "00255212", 0.78, 0, true]], "verdict": "unclear", "snr": 10.306477068689023, "galaxy": false}, "spPlate-6322-56190.fits 64 7387.543 +1": {"frames": [["r1", "00147604", 5.89, 0, true], ["r1", "00147605", 6.06, 0, true], ["r1", "00147606", 5.27, 589824, true]], "verdict": "persistent", "snr": 10.267960239168396, "galaxy": false}, "spPlate-7701-57356.fits 625 9145.343 +1": {"frames": [["r2", "00208240", 3.32, 0, true], ["r2", "00208241", 2.42, 0, true], ["r2", "00208242", 3.25, 0, true], ["r2", "00208243", 1.16, 0, true], ["r2", "00208244", 2.39, 0, true], ["r2", "00208453", 3.6, 0, true], ["r2", "00208454", 4.22, 0, true], ["r2", "00208455", 3.2, 0, true], ["r2", "00208456", 4.32, 0, true], ["r2", "00208457", 3.98, 0, true], ["r2", "00209141", 2.72, 0, true], ["r2", "00209142", 3.42, 0, true]], "verdict": "persistent", "snr": 10.227151941000521, "galaxy": true}, "spPlate-6724-56416.fits 736 7594.514 +1": {"frames": [["r2", "00161056", 4.88, 0, true], ["r2", "00161057", 3.68, 0, true], ["r2", "00161058", 4.17, 0, true], ["r2", "00161139", 2.46, 8388608, true], ["r2", "00161140", 4.63, 0, true]], "verdict": "persistent", "snr": 10.226489429348014, "galaxy": false}, "spPlate-5307-55998.fits 786 7169.684 +1": {"frames": [["b2", "00140987", 0.0, 83886080, false], ["b2", "00140988", 0.0, 83886080, false], ["b2", "00140989", 0.0, 83886080, false], ["b2", "00140990", 0.0, 83886080, false], ["r2", "00140987", 3.54, 0, true], ["r2", "00140988", 3.05, 0, true], ["r2", "00140989", 3.29, 0, true], ["r2", "00140990", 4.82, 0, true]], "verdict": "persistent", "snr": 10.17836668155388, "galaxy": true}, "spPlate-7691-57360.fits 127 5780.960 +1": {"frames": [["b1", "00209543", -0.61, 0, true], ["b1", "00209544", 0.92, 0, true], ["b1", "00209545", 2.16, 0, true], ["b1", "00209546", -1.53, 0, true], ["r1", "00209543", 8.56, 0, true], ["r1", "00209544", 16.92, 0, true], ["r1", "00209545", 2.77, 0, true], ["r1", "00209546", 3.5, 0, true]], "verdict": "persistent", "snr": 10.15984874550385, "galaxy": false}, "spPlate-7631-57279.fits 635 7000.032 +1": {"frames": [["b2", "00204143", 0.0, 83886080, false], ["b2", "00204144", 0.0, 83886080, false], ["b2", "00204221", 0.0, 83886080, false], ["b2", "00204222", 0.0, 83886080, false], ["r2", "00204143", 5.98, 0, true], ["r2", "00204144", 3.13, 524288, true], ["r2", "00204221", 4.89, 0, true], ["r2", "00204222", 4.08, 0, true]], "verdict": "persistent", "snr": 10.155995284403014, "galaxy": true}, "spPlate-8413-57897.fits 490 8260.379 +1": {"frames": [["r1", "00244587", 1.66, 0, true], ["r1", "00244588", 4.52, 0, true], ["r1", "00244589", 3.54, 0, true], ["r1", "00244590", 3.83, 0, true], ["r1", "00244677", 3.79, 0, true]], "verdict": "persistent", "snr": 10.13294828845652, "galaxy": false}, "spPlate-6434-56362.fits 449 9906.038 +1": {"frames": [["r1", "00157800", -1.24, 0, true], ["r1", "00157801", -1.41, 524288, true], ["r1", "00157802", 1.79, 0, true]], "verdict": "unclear", "snr": 10.127221508722943, "galaxy": false}, "spPlate-7747-58398.fits 60 5064.073 +1": {"frames": [["b1", "00273202", 2.39, 0, true], ["b1", "00273203", 2.31, 524288, true], ["b1", "00273204", -1.77, 262144, true], ["b1", "00273205", -2.77, 0, true]], "verdict": "unclear", "snr": 10.125641086976659, "galaxy": false}, "spPlate-8370-57732.fits 718 8804.405 +1": {"frames": [["r2", "00233312", 5.92, 0, true], ["r2", "00233406", 3.85, 0, true], ["r2", "00233407", 5.45, 0, true]], "verdict": "persistent", "snr": 10.120071411585316, "galaxy": true}, "spPlate-5002-55710.fits 284 8538.862 +1": {"frames": [["r1", "00131390", 4.18, 8388608, true], ["r1", "00131391", 4.24, 8388608, true], ["r1", "00131392", 5.09, 0, true], ["r1", "00131393", 3.84, 0, true], ["r1", "00131394", 4.18, 0, true]], "verdict": "persistent", "snr": 10.109029723314968, "galaxy": true}, "spPlate-3758-55506.fits 552 4217.936 +1": {"frames": [["b2", "00121737", 2.21, 0, true], ["b2", "00121738", 1.95, 0, true], ["b2", "00121739", 2.09, 524288, true], ["b2", "00121740", 3.05, 0, true], ["b2", "00121741", 3.32, 0, true], ["b2", "00121742", 3.24, 0, true], ["b2", "00121743", 1.75, 0, true]], "verdict": "persistent", "snr": 10.099057284882921, "galaxy": false}, "spPlate-5991-56076.fits 482 9883.255 +1": {"frames": [["r1", "00144477", 2.52, 0, true], ["r1", "00144478", -2.15, 0, true], ["r1", "00144479", 1.46, 0, true], ["r1", "00144480", -0.7, 8388608, true], ["r1", "00144481", -1.3, 0, true], ["r1", "00144482", 1.86, 0, true]], "verdict": "unclear", "snr": 10.083061108735379, "galaxy": false}, "spPlate-9144-57666.fits 512 6147.521 +1": {"frames": [["b2", "00228644", 2.88, 0, true], ["b2", "00228645", 1.67, 0, true], ["b2", "00228646", 3.25, 0, true], ["b2", "00228647", 0.89, 0, true], ["b2", "00228648", 1.71, 0, true], ["b2", "00228649", 2.62, 0, true], ["b2", "00228650", 3.15, 0, true], ["b2", "00228651", 1.95, 0, true], ["b2", "00228652", 1.33, 0, true], ["r2", "00228644", 1.94, 0, true], ["r2", "00228645", 0.8, 0, true], ["r2", "00228646", 1.38, 0, true], ["r2", "00228647", 1.81, 0, true], ["r2", "00228648", 2.6, 0, true], ["r2", "00228649", 3.83, 0, true], ["r2", "00228650", 3.37, 0, true], ["r2", "00228651", 2.92, 0, true], ["r2", "00228652", 2.28, 0, true]], "verdict": "persistent", "snr": 10.082721681494515, "galaxy": false}, "spPlate-3764-55514.fits 80 9141.132 +1": {"frames": [["r1", "00122317", 5.63, 0, true], ["r1", "00122318", 4.55, 0, true], ["r1", "00122319", 5.96, 0, true], ["r1", "00122320", 6.14, 0, true]], "verdict": "persistent", "snr": 10.077328897165922, "galaxy": false}, "spPlate-8279-57063.fits 394 7589.270 +1": {"frames": [["r1", "00194345", 3.39, 8388608, true], ["r1", "00194346", 2.87, 8388608, true], ["r1", "00194347", 5.36, 8388608, true], ["r1", "00194348", 3.8, 8388608, true], ["r1", "00194427", 4.81, 8388608, true], ["r1", "00194428", 2.1, 8388608, true]], "verdict": "persistent", "snr": 10.063634982162581, "galaxy": false}, "spPlate-5029-55750.fits 511 4075.679 +1": {"frames": [["b2", "00132923", -0.86, 851968, true], ["b2", "00132924", 2.53, 524288, true], ["b2", "00132925", -0.29, 851968, true], ["b2", "00132926", 0.62, 786432, true]], "verdict": "unclear", "snr": 10.030949747761236, "galaxy": false}, "spPlate-7339-56751.fits 732 4732.602 +1": {"frames": [["b2", "00178094", 1.65, 0, true], ["b2", "00178095", 1.79, 0, true], ["b2", "00178096", 4.87, 0, true], ["b2", "00178097", 4.84, 0, true], ["b2", "00178098", 3.36, 0, true], ["b2", "00178099", 3.45, 0, true], ["b2", "00178100", 2.82, 0, true], ["b2", "00178101", 3.38, 0, true], ["b2", "00178102", 3.83, 0, true]], "verdict": "persistent", "snr": 9.997734866050553, "galaxy": false}, "spPlate-6370-56238.fits 725 6645.077 +1": {"frames": [["b2", "00149480", 0.0, 83886080, false], ["b2", "00149481", 0.0, 83886080, false], ["b2", "00149482", 0.0, 83886080, false], ["b2", "00150273", 0.0, 83886080, false], ["b2", "00150274", 0.0, 83886080, false], ["b2", "00150275", 0.0, 83886080, false], ["r2", "00149480", 4.9, 0, true], ["r2", "00149481", 3.37, 0, true], ["r2", "00149482", 4.29, 0, true], ["r2", "00150273", 3.63, 0, true], ["r2", "00150274", 3.41, 0, true], ["r2", "00150275", 2.68, 0, true]], "verdict": "persistent", "snr": 9.98167185018159, "galaxy": false}, "spPlate-6667-56412.fits 698 7217.719 +1": {"frames": [["b2", "00160875", 0.0, 83886080, false], ["b2", "00160876", 0.0, 83886080, false], ["b2", "00160877", 0.0, 83886080, false], ["b2", "00160878", 0.0, 83886080, false], ["r2", "00160875", 3.86, 0, true], ["r2", "00160876", 5.02, 0, true], ["r2", "00160877", 3.55, 0, true], ["r2", "00160878", 5.21, 0, true]], "verdict": "persistent", "snr": 9.978505490613319, "galaxy": false}, "spPlate-7039-56572.fits 210 8009.400 +1": {"frames": [["r1", "00167490", 3.6, 0, true], ["r1", "00167491", 3.98, 0, true], ["r1", "00167492", 4.25, 0, true], ["r1", "00167493", 4.24, 0, true]], "verdict": "persistent", "snr": 9.978297653101212, "galaxy": false}, "spPlate-9557-58138.fits 279 7328.245 +1": {"frames": [["r1", "00260159", 4.79, 0, true], ["r1", "00260160", 5.31, 8388608, true], ["r1", "00260161", 3.92, 8388608, true]], "verdict": "persistent", "snr": 9.971309622204602, "galaxy": false}, "spPlate-6479-56364.fits 628 7194.490 +1": {"frames": [["b2", "00158003", 0.0, 83886080, false], ["b2", "00158004", 0.0, 83886080, false], ["b2", "00158005", 0.0, 83886080, false], ["r2", "00158003", 4.78, 0, true], ["r2", "00158004", 5.24, 0, true], ["r2", "00158005", 4.07, 0, true]], "verdict": "persistent", "snr": 9.970633877103902, "galaxy": false}, "spPlate-7418-57165.fits 78 8753.868 +1": {"frames": [["r1", "00200094", 4.32, 0, true], ["r1", "00200095", 4.75, 0, true], ["r1", "00200096", 3.43, 0, true], ["r1", "00200097", 3.38, 524288, true], ["r1", "00200152", 2.46, 0, true], ["r1", "00200153", 2.51, 0, true]], "verdict": "persistent", "snr": 9.969776824765203, "galaxy": false}, "spPlate-6044-56090.fits 368 4093.549 +1": {"frames": [["b1", "00144714", 4.02, 0, true], ["b1", "00144715", 4.23, 0, true], ["b1", "00144716", 5.0, 0, true]], "verdict": "persistent", "snr": 9.954666428921033, "galaxy": false}, "spPlate-11554-58456.fits 170 7216.058 +1": {"frames": [["r1", "00278247", 3.67, 0, true], ["r1", "00278248", 5.03, 0, true], ["r1", "00278249", 4.29, 0, true], ["r1", "00278250", 3.04, 0, true], ["r1", "00278251", 3.06, 0, true]], "verdict": "persistent", "snr": 9.948476958798231, "galaxy": true}, "spPlate-7650-57575.fits 348 10036.909 +1": {"frames": [["r1", "00224394", -0.72, 0, true], ["r1", "00224395", -1.67, 0, true], ["r1", "00224396", -0.83, 0, true], ["r1", "00224397", 3.64, 34144256, true], ["r1", "00224398", 1.42, 0, true]], "verdict": "unclear", "snr": 9.928106295787218, "galaxy": false}, "spPlate-11317-58398.fits 332 9412.392 +1": {"frames": [["r1", "00273150", -1.95, 256, true], ["r1", "00273151", 0.85, 256, true], ["r1", "00273195", -2.26, 256, true], ["r1", "00273196", 1.13, 256, true], ["r1", "00273197", -1.3, 256, true]], "verdict": "unclear", "snr": 9.923788157969467, "galaxy": false}, "spPlate-7183-56658.fits 450 8611.920 +1": {"frames": [["r1", "00170720", -1.02, 0, true], ["r1", "00170721", -0.98, 0, true], ["r1", "00170779", 2.87, 0, true], ["r1", "00170780", 2.41, 0, true], ["r1", "00170781", 3.24, 0, true], ["r1", "00170782", 2.32, 0, true], ["r1", "00170783", 2.91, 0, true], ["r1", "00171561", 2.02, 0, true], ["r1", "00171562", 2.16, 0, true], ["r1", "00171563", 1.1, 0, true], ["r1", "00171564", -1.24, 0, true], ["r1", "00171658", 5.85, 0, true], ["r1", "00171659", 3.24, 0, true], ["r1", "00171660", 2.96, 0, true]], "verdict": "persistent", "snr": 9.907698799861791, "galaxy": true}, "spPlate-4008-55356.fits 712 7580.537 +1": {"frames": [["r2", "00116143", 1.1, 0, true], ["r2", "00116144", 2.31, 0, true], ["r2", "00116145", 3.1, 0, true], ["r2", "00116146", 3.83, 0, true], ["r2", "00116147", 3.2, 0, true], ["r2", "00116313", 3.23, 0, true], ["r2", "00116314", 3.48, 0, true], ["r2", "00116315", 3.83, 0, true]], "verdict": "persistent", "snr": 9.903335299560336, "galaxy": false}, "spPlate-7151-56598.fits 378 8115.214 +1": {"frames": [["r1", "00168719", 5.88, 0, true], ["r1", "00168720", 6.17, 0, true], ["r1", "00168721", 5.04, 0, true], ["r1", "00168722", 3.94, 0, true]], "verdict": "persistent", "snr": 9.890543877916336, "galaxy": false}, "spPlate-4785-55659.fits 144 4188.900 +1": {"frames": [["b1", "00129499", 2.67, 4, true], ["b1", "00129500", 2.46, 4, true], ["b1", "00129501", 4.13, 4, true], ["b1", "00129502", 2.81, 4, true]], "verdict": "persistent", "snr": 9.874072006669621, "galaxy": false}, "spPlate-4071-55660.fits 102 9078.205 +1": {"frames": [["r1", "00129585", 6.0, 0, true], ["r1", "00129586", 5.97, 0, true], ["r1", "00129587", 5.43, 0, true], ["r1", "00129588", 7.08, 0, true]], "verdict": "persistent", "snr": 9.873424370213783, "galaxy": false}, "spPlate-6054-56089.fits 410 5792.953 +1": {"frames": [["b1", "00144631", -0.97, 0, true], ["b1", "00144632", 0.55, 0, true], ["b1", "00144633", 1.61, 0, true], ["b1", "00144659", 1.7, 0, true], ["b1", "00144660", 1.24, 0, true], ["r1", "00144631", -1.71, 0, true], ["r1", "00144632", -3.31, 0, true], ["r1", "00144633", -0.13, 0, true], ["r1", "00144659", 0.0, 67239936, false], ["r1", "00144660", 0.0, 67239936, false]], "verdict": "unclear", "snr": 9.869424409597883, "galaxy": false}, "spPlate-8370-57520.fits 708 8804.405 +1": {"frames": [["r2", "00220948", 4.92, 0, true], ["r2", "00220949", 4.29, 0, true], ["r2", "00220950", 5.02, 0, true], ["r2", "00220951", 5.53, 0, true]], "verdict": "persistent", "snr": 9.86341058584256, "galaxy": true}, "spPlate-7095-56625.fits 482 6695.762 +1": {"frames": [["b1", "00169987", 0.0, 83886080, false], ["b1", "00169988", 0.0, 83886080, false], ["b1", "00169989", 0.0, 83886080, false], ["b1", "00170082", 0.0, 83886080, false], ["b1", "00170083", 0.0, 83886080, false], ["b1", "00170084", 0.0, 83886080, false], ["b1", "00170085", 0.0, 83886080, false], ["b1", "00170086", 0.0, 83886080, false], ["r1", "00169987", 4.3, 0, true], ["r1", "00169988", 2.57, 0, true], ["r1", "00169989", 2.28, 0, true], ["r1", "00170082", 3.29, 0, true], ["r1", "00170083", 1.46, 0, true], ["r1", "00170084", 3.16, 0, true], ["r1", "00170085", 3.64, 0, true], ["r1", "00170086", 3.95, 0, true]], "verdict": "persistent", "snr": 9.84901816069008, "galaxy": true}, "spPlate-6680-56420.fits 592 8972.222 +1": {"frames": [["r2", "00161376", 4.62, 0, true], ["r2", "00161377", 4.86, 0, true], ["r2", "00161378", 5.58, 0, true]], "verdict": "persistent", "snr": 9.84791947298281, "galaxy": false}, "spPlate-7666-57339.fits 772 6119.275 +1": {"frames": [["b2", "00208148", 1.66, 0, true], ["b2", "00208149", 3.69, 0, true], ["b2", "00208150", 2.51, 0, true], ["b2", "00208151", 4.38, 0, true], ["r2", "00208148", 1.36, 0, true], ["r2", "00208149", 2.27, 0, true], ["r2", "00208150", 2.99, 0, true], ["r2", "00208151", 2.8, 0, true]], "verdict": "persistent", "snr": 9.846151195330751, "galaxy": false}, "spPlate-7606-56977.fits 311 7379.042 +1": {"frames": [["r1", "00189111", 3.43, 0, true], ["r1", "00189112", 3.77, 0, true], ["r1", "00189113", 1.77, 0, true], ["r1", "00189114", 2.51, 0, true], ["r1", "00189115", 2.58, 0, true], ["r1", "00189116", 3.13, 0, true]], "verdict": "persistent", "snr": 9.837521798612183, "galaxy": true}, "spPlate-9595-58084.fits 465 3794.023 +1": {"frames": [["b1", "00255685", -0.58, 0, true], ["b1", "00255686", 1.25, 0, true], ["b1", "00255687", -2.39, 0, true]], "verdict": "unclear", "snr": 9.834739496526629, "galaxy": false}, "spPlate-4723-55748.fits 390 8167.704 +1": {"frames": [["r1", "00132810", 9.57, 0, true]], "verdict": "one frame", "snr": 9.822880348609898, "galaxy": false}, "spPlate-7052-56539.fits 536 10240.001 +1": {"frames": [["r2", "00165757", 0.87, 0, true], ["r2", "00165758", -1.65, 8388608, true], ["r2", "00165759", -1.39, 0, true], ["r2", "00165760", 1.44, 0, true], ["r2", "00165761", -1.16, 851968, true]], "verdict": "unclear", "snr": 9.807944863389233, "galaxy": false}, "spPlate-5694-56213.fits 846 7411.396 +1": {"frames": [["r2", "00148712", 3.34, 0, true], ["r2", "00148714", 2.69, 0, true], ["r2", "00148838", 3.81, 0, true], ["r2", "00148839", 3.45, 0, true], ["r2", "00148840", 4.21, 0, true], ["r2", "00148841", 3.52, 0, true], ["r2", "00148842", 2.93, 0, true]], "verdict": "persistent", "snr": 9.80710389979585, "galaxy": false}, "spPlate-6454-56336.fits 101 3680.442 +1": {"frames": [["b1", "00156334", 3.97, 0, true], ["b1", "00156335", 4.88, 33554432, true], ["b1", "00156336", 1.49, 0, true], ["b1", "00156337", 3.72, 34078720, true]], "verdict": "persistent", "snr": 9.797655077454323, "galaxy": false}, "spPlate-3558-55123.fits 594 9862.795 +1": {"frames": [["r2", "00102499", 0.0, 0, false], ["r2", "00102500", 0.0, 0, false], ["r2", "00102501", 0.0, 0, false], ["r2", "00102502", 0.0, 0, false], ["r2", "00102503", 0.0, 0, false]], "verdict": "no frame", "snr": 9.782445864879932, "galaxy": false}, "spPlate-5971-56064.fits 290 8478.129 +1": {"frames": [["r1", "00143828", 3.97, 0, true], ["r1", "00143829", 4.77, 0, true], ["r1", "00143830", 4.46, 0, true], ["r1", "00143831", 6.4, 0, true]], "verdict": "persistent", "snr": 9.781037798564062, "galaxy": false}, "spPlate-6586-56485.fits 366 5092.136 +1": {"frames": [["b1", "00164491", 3.76, 0, true], ["b1", "00164492", 4.88, 0, true], ["b1", "00164493", 3.05, 0, true], ["b1", "00164697", 3.96, 0, true], ["b1", "00164698", 3.1, 0, true], ["b1", "00164699", 3.84, 0, true]], "verdict": "persistent", "snr": 9.777047578120003, "galaxy": true}, "spPlate-6318-56186.fits 562 7045.308 +1": {"frames": [["b2", "00147218", 0.0, 83886080, false], ["b2", "00147273", 0.0, 83886080, false], ["b2", "00147274", 0.0, 83886080, false], ["b2", "00147275", 0.0, 83886080, false], ["b2", "00147276", 0.0, 83886080, false], ["r2", "00147218", 2.53, 0, true], ["r2", "00147273", 3.91, 0, true], ["r2", "00147274", 4.75, 0, true], ["r2", "00147275", 4.02, 0, true], ["r2", "00147276", 5.31, 0, true]], "verdict": "persistent", "snr": 9.77012547335966, "galaxy": false}, "spPlate-6646-56389.fits 588 4975.079 +1": {"frames": [["b2", "00159718", -0.8, 0, true], ["b2", "00159719", 1.47, 0, true], ["b2", "00159720", 1.18, 33554432, true]], "verdict": "unclear", "snr": 9.754118395415016, "galaxy": false}, "spPlate-4563-55617.fits 72 8390.735 +1": {"frames": [["r1", "00126991", 4.96, 0, true], ["r1", "00126992", 5.23, 0, true], ["r1", "00126993", 4.74, 0, true], ["r1", "00126994", 2.88, 0, true]], "verdict": "persistent", "snr": 9.744632479619368, "galaxy": false}, "spPlate-3685-55247.fits 338 4184.080 +1": {"frames": [["b1", "00108824", 8.87, 0, true], ["b1", "00108825", 7534225.84, 0, true]], "verdict": "one exposure", "snr": 9.742367354609978, "galaxy": false}, "spPlate-4497-55564.fits 856 8978.422 +1": {"frames": [["r2", "00124624", 4.1, 0, true], ["r2", "00124625", 2.52, 0, true], ["r2", "00124626", 4.36, 0, true], ["r2", "00124627", 3.19, 0, true], ["r2", "00124628", 4.68, 0, true], ["r2", "00124629", 5.15, 0, true]], "verdict": "persistent", "snr": 9.731163594884501, "galaxy": false}, "spPlate-7338-57874.fits 729 4732.602 +1": {"frames": [["b2", "00243081", 3.38, 0, true], ["b2", "00243082", 3.18, 0, true], ["b2", "00243083", 2.76, 0, true], ["b2", "00243084", 3.61, 0, true], ["b2", "00243085", 2.29, 0, true], ["b2", "00243086", 3.93, 0, true]], "verdict": "persistent", "snr": 9.72466976408505, "galaxy": false}, "spPlate-11281-58424.fits 564 3888.660 +1": {"frames": [["b2", "00275062", -0.99, 524288, true], ["b2", "00275233", 1.59, 0, true], ["b2", "00275234", -2.07, 0, true], ["b2", "00275235", 2.86, 524288, true], ["b2", "00275236", 0.93, 0, true]], "verdict": "unclear", "snr": 9.724018403738947, "galaxy": false}, "spPlate-10901-58397.fits 179 6438.727 +1": {"frames": [["b1", "00273142", 0.0, 71434240, false], ["b1", "00273143", 0.0, 71434240, false], ["b1", "00273144", 0.0, 71434240, false], ["b1", "00273145", 0.0, 71434240, false], ["r1", "00273142", 3.67, 0, true], ["r1", "00273143", 3.1, 0, true], ["r1", "00273144", 5.19, 0, true], ["r1", "00273145", 4.54, 65536, true]], "verdict": "persistent", "snr": 9.715560941074214, "galaxy": true}, "spPlate-4348-55559.fits 700 6514.784 +1": {"frames": [["b2", "00124321", 0.0, 71434240, false], ["b2", "00124322", 0.0, 71434240, false], ["b2", "00124323", 0.0, 71434240, false], ["b2", "00124324", 0.0, 71434240, false], ["b2", "00124325", 0.0, 71434240, false], ["r2", "00124321", 3.21, 0, true], ["r2", "00124322", 3.49, 0, true], ["r2", "00124323", 3.96, 0, true], ["r2", "00124324", 3.68, 0, true], ["r2", "00124325", 3.84, 0, true]], "verdict": "persistent", "snr": 9.715289115363625, "galaxy": true}, "spPlate-6432-56309.fits 389 9885.531 +1": {"frames": [["r1", "00154647", 0.81, 0, true], ["r1", "00154648", 1.13, 0, true], ["r1", "00154649", 1.05, 0, true]], "verdict": "unclear", "snr": 9.711031073582562, "galaxy": false}, "spPlate-5330-56000.fits 312 7206.095 +1": {"frames": [["r1", "00141037", 5.2, 0, true], ["r1", "00141081", 3.83, 0, true], ["r1", "00141082", 3.76, 0, true], ["r1", "00141083", 3.83, 0, true]], "verdict": "persistent", "snr": 9.709368249212211, "galaxy": false}, "spPlate-6117-56272.fits 48 5396.349 +1": {"frames": [["b1", "00152267", 2.22, 0, true], ["b1", "00152268", 3.89, 0, true], ["b1", "00152269", 2.7, 0, true], ["b1", "00152270", 2.79, 0, true], ["b1", "00152271", 3.47, 0, true], ["b1", "00152272", 2.38, 0, true], ["b1", "00152273", 2.29, 0, true], ["b1", "00152274", 3.69, 0, true], ["r1", "00152267", 0.0, 71434240, false], ["r1", "00152268", 0.0, 71434240, false], ["r1", "00152269", 0.0, 71434240, false], ["r1", "00152270", 0.0, 71434240, false], ["r1", "00152271", 0.0, 71434240, false], ["r1", "00152272", 0.0, 71434240, false], ["r1", "00152273", 0.0, 71434240, false], ["r1", "00152274", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.699735160275205, "galaxy": false}, "spPlate-11079-58485.fits 702 8489.850 +1": {"frames": [["r2", "00278864", 4.29, 0, true], ["r2", "00278865", 3.33, 589824, true], ["r2", "00278866", 2.8, 0, true], ["r2", "00278867", 3.71, 0, true], ["r2", "00278868", 2.87, 0, true], ["r2", "00278869", 3.53, 0, true], ["r2", "00278870", 2.92, 8388608, true], ["r2", "00279873", 3.97, 0, true], ["r2", "00279874", 2.05, 0, true], ["r2", "00279875", 2.49, 589824, true]], "verdict": "persistent", "snr": 9.673701679399342, "galaxy": false}, "spPlate-7683-58133.fits 162 6872.267 +1": {"frames": [["b1", "00259523", 0.0, 83886096, false], ["b1", "00259524", 0.0, 83886096, false], ["b1", "00259525", 0.0, 83886096, false], ["b1", "00259526", 0.0, 83886096, false], ["b1", "00259527", 0.0, 83886096, false], ["b1", "00259629", 0.0, 83886080, false], ["r1", "00259523", 4.18, 0, true], ["r1", "00259524", 3.99, 0, true], ["r1", "00259525", 2.82, 0, true], ["r1", "00259526", 1.7, 0, true], ["r1", "00259527", 3.09, 0, true], ["r1", "00259629", 4.49, 0, true]], "verdict": "persistent", "snr": 9.670296200539635, "galaxy": false}, "spPlate-3938-55328.fits 628 7594.514 +1": {"frames": [["r2", "00115187", 5.59, 0, true], ["r2", "00115188", 3.48, 0, true], ["r2", "00115189", 3.78, 0, true], ["r2", "00115190", 4.73, 0, true]], "verdict": "persistent", "snr": 9.65619256170775, "galaxy": false}, "spPlate-11060-58523.fits 496 10164.827 +1": {"frames": [["r1", "00282853", 2.34, 0, true], ["r1", "00282854", 1.11, 0, true], ["r1", "00282855", 1.43, 0, true], ["r1", "00282856", 1.15, 8388608, true], ["r1", "00282950", 1.79, 0, true], ["r1", "00282951", 2.36, 0, true], ["r1", "00282952", 1.82, 0, true], ["r1", "00282953", 0.96, 0, true]], "verdict": "unclear", "snr": 9.643022484289471, "galaxy": false}, "spPlate-4200-55499.fits 131 9600.636 +1": {"frames": [["r1", "00121278", 3.46, 0, true], ["r1", "00121279", 4.83, 0, true], ["r1", "00121280", 3.16, 0, true], ["r1", "00121281", 4.81, 0, true], ["r1", "00121282", 5.5, 0, true], ["r1", "00121283", 3.99, 0, true]], "verdict": "persistent", "snr": 9.639477001963128, "galaxy": false}, "spPlate-11352-58456.fits 248 8211.075 +1": {"frames": [["r1", "00277086", 3.58, 0, true], ["r1", "00277087", 4.65, 0, true], ["r1", "00278199", 3.45, 0, true], ["r1", "00278200", 2.21, 0, true], ["r1", "00278301", 1.42, 0, true], ["r1", "00278302", 3.94, 0, true], ["r1", "00278303", 3.49, 0, true]], "verdict": "persistent", "snr": 9.627773257265659, "galaxy": true}, "spPlate-6497-56329.fits 74 7103.952 +1": {"frames": [["b1", "00155803", 0.0, 83886080, false], ["b1", "00155804", 0.0, 83886080, false], ["b1", "00155805", 0.0, 83886080, false], ["b1", "00155806", 0.0, 83886080, false], ["b1", "00155807", 0.0, 83886080, false], ["b1", "00155808", 0.0, 83886080, false], ["b1", "00155809", 0.0, 83886080, false], ["r1", "00155803", 2.93, 589824, true], ["r1", "00155804", 3.29, 0, true], ["r1", "00155805", 3.62, 0, true], ["r1", "00155806", 4.07, 0, true], ["r1", "00155807", 4.44, 0, true], ["r1", "00155808", 4.36, 0, true], ["r1", "00155809", 3.47, 0, true]], "verdict": "persistent", "snr": 9.625800706030022, "galaxy": false}, "spPlate-6271-56304.fits 417 9885.531 +1": {"frames": [["r1", "00152996", 1.44, 0, true], ["r1", "00154136", 0.88, 0, true], ["r1", "00154137", -2.1, 0, true], ["r1", "00154138", 1.16, 0, true], ["r1", "00154139", 1.79, 0, true], ["r1", "00154304", 2.64, 0, true], ["r1", "00154305", 2.34, 0, true], ["r1", "00154306", 1.75, 0, true]], "verdict": "unclear", "snr": 9.62337447963919, "galaxy": false}, "spPlate-3761-55272.fits 333 6787.346 +1": {"frames": [["b1", "00111945", 0.0, 83886080, false], ["b1", "00111946", 0.0, 83886080, false], ["b1", "00111947", 0.0, 83886080, false], ["b1", "00111948", 0.0, 83886080, false], ["r1", "00111945", 4.45, 589824, true], ["r1", "00111946", 2.65, 589824, true], ["r1", "00111947", 4.45, 589824, true], ["r1", "00111948", 3.26, 0, true]], "verdict": "persistent", "snr": 9.618531491614366, "galaxy": false}, "spPlate-7339-58561.fits 427 4369.181 +1": {"frames": [["b1", "00285286", -0.68, 0, true], ["b1", "00285287", 1.92, 0, true], ["b1", "00285288", 3.41, 524288, true], ["b1", "00285289", 2.81, 0, true], ["b1", "00285290", 3.09, 0, true], ["b1", "00285291", 2.57, 34078720, true], ["b1", "00285292", 1.47, 851968, true], ["b1", "00285293", 3.07, 34078720, true], ["b1", "00285459", 5.19, 0, true]], "verdict": "persistent", "snr": 9.61652466203627, "galaxy": false}, "spPlate-4533-55855.fits 414 6043.660 +1": {"frames": [["b1", "00135180", 2.02, 0, true], ["b1", "00135181", 3.5, 0, true], ["b1", "00135182", 3.08, 0, true], ["b1", "00135183", 2.06, 0, true], ["b1", "00135184", 2.06, 0, true], ["r1", "00135180", 3.96, 0, true], ["r1", "00135181", 2.03, 0, true], ["r1", "00135182", 2.65, 0, true], ["r1", "00135183", 3.88, 0, true], ["r1", "00135184", 3.4, 0, true]], "verdict": "persistent", "snr": 9.613831406042944, "galaxy": true}, "spPlate-6422-56328.fits 90 7447.320 +1": {"frames": [["r1", "00155501", 1.91, 0, true], ["r1", "00155502", 3.23, 0, true], ["r1", "00155503", 2.97, 0, true], ["r1", "00155688", 5.82, 0, true], ["r1", "00155689", 4.92, 0, true]], "verdict": "persistent", "snr": 9.59285245322719, "galaxy": true}, "spPlate-4528-55559.fits 186 7675.382 +1": {"frames": [["r1", "00124240", 4.93, 0, true], ["r1", "00124285", 2.07, 0, true], ["r1", "00124286", 3.26, 0, true], ["r1", "00124345", 4.44, 0, true], ["r1", "00124346", 4.07, 0, true]], "verdict": "persistent", "snr": 9.592524114777255, "galaxy": false}, "spPlate-9593-58128.fits 549 7846.934 +1": {"frames": [["r2", "00259145", -1.52, 0, true], ["r2", "00259146", 9.05, 589824, true]], "verdict": "one exposure", "snr": 9.588536733819671, "galaxy": false}, "spPlate-3688-55273.fits 82 8445.007 +1": {"frames": [["r1", "00112018", 2.05, 8388608, true], ["r1", "00112019", 3.47, 0, true], ["r1", "00112020", 3.53, 0, true], ["r1", "00112021", 4.43, 0, true], ["r1", "00112024", 5.35, 0, true]], "verdict": "persistent", "snr": 9.576534744484517, "galaxy": false}, "spPlate-6511-56540.fits 81 8126.434 +1": {"frames": [["r1", "00165808", 4.94, 0, true], ["r1", "00165809", 3.47, 0, true], ["r1", "00165810", 5.75, 0, true]], "verdict": "persistent", "snr": 9.574260032156868, "galaxy": false}, "spPlate-5404-56013.fits 406 6188.708 +1": {"frames": [["b1", "00141851", 1.71, 0, true], ["b1", "00141852", 3.69, 0, true], ["b1", "00141853", 3.25, 0, true], ["r1", "00141851", 3.43, 0, true], ["r1", "00141852", 2.62, 0, true], ["r1", "00141853", 4.44, 0, true]], "verdict": "persistent", "snr": 9.571935745716905, "galaxy": true}, "spPlate-11059-58515.fits 987 5204.752 +1": {"frames": [["b2", "00282404", 2.46, 589824, true], ["b2", "00282405", 2.71, 0, true], ["b2", "00282406", 2.28, 0, true], ["b2", "00282407", 3.37, 0, true], ["b2", "00282514", 3.09, 0, true], ["b2", "00282515", 3.18, 0, true]], "verdict": "persistent", "snr": 9.57127680027709, "galaxy": true}, "spPlate-5340-56011.fits 74 8128.305 +1": {"frames": [["r1", "00141718", 4.62, 0, true], ["r1", "00141719", 5.48, 0, true], ["r1", "00141720", 4.4, 0, true]], "verdict": "persistent", "snr": 9.551494199005134, "galaxy": false}, "spPlate-9568-57815.fits 311 9270.433 +1": {"frames": [["r1", "00238771", 4.98, 0, true], ["r1", "00238856", 5.94, 0, true], ["r1", "00238857", 4.66, 0, true], ["r1", "00238858", 5.64, 0, true]], "verdict": "persistent", "snr": 9.54944722405434, "galaxy": false}, "spPlate-8372-57787.fits 54 4271.693 +1": {"frames": [["b1", "00236862", 3.18, 0, true], ["b1", "00236863", 2.0, 524288, true], ["b1", "00236864", 1.02, 0, true]], "verdict": "unclear", "snr": 9.546073701429645, "galaxy": false}, "spPlate-6793-56430.fits 248 8107.743 +1": {"frames": [["r1", "00161982", 3.72, 8388608, true], ["r1", "00161983", 4.18, 0, true], ["r1", "00161984", 4.97, 0, true], ["r1", "00161985", 3.48, 8388608, true]], "verdict": "persistent", "snr": 9.533309071394704, "galaxy": true}, "spPlate-9162-58040.fits 242 6996.809 +1": {"frames": [["b1", "00251825", 0.0, 83886080, false], ["b1", "00251826", 0.0, 83886080, false], ["b1", "00251827", 0.0, 83886080, false], ["b1", "00251828", 0.0, 83886080, false], ["r1", "00251825", 3.81, 0, true], ["r1", "00251826", 3.35, 0, true], ["r1", "00251827", 4.41, 589824, true], ["r1", "00251828", 3.13, 0, true]], "verdict": "persistent", "snr": 9.530639170972727, "galaxy": true}, "spPlate-4643-55946.fits 153 6927.874 +1": {"frames": [["b1", "00138731", 0.0, 83886080, false], ["b1", "00138732", 0.0, 83886080, false], ["b1", "00138733", 0.0, 83886080, false], ["b1", "00138734", 0.0, 83886080, false], ["b1", "00138735", 0.0, 83886080, false], ["r1", "00138731", 3.68, 8388608, true], ["r1", "00138732", 4.42, 8388608, true], ["r1", "00138733", 3.55, 0, true], ["r1", "00138734", 5.34, 8388608, true], ["r1", "00138735", 3.66, 8388608, true]], "verdict": "persistent", "snr": 9.529696293194828, "galaxy": true}, "spPlate-8305-57749.fits 366 4114.338 +1": {"frames": [["b1", "00234281", -2.3, 0, true], ["b1", "00234282", 3.59, 0, true], ["b1", "00234283", 3.11, 0, true], ["b1", "00234497", 3.35, 0, true], ["b1", "00234498", 2.01, 34078720, true], ["b1", "00234499", 1.24, 0, true]], "verdict": "persistent", "snr": 9.521940563997157, "galaxy": false}, "spPlate-9312-57784.fits 432 8523.147 +1": {"frames": [["r1", "00236251", 3.5, 0, true], ["r1", "00236252", 2.74, 0, true], ["r1", "00236356", 3.59, 0, true], ["r1", "00236357", 3.53, 0, true], ["r1", "00236484", 2.84, 0, true], ["r1", "00236485", 3.5, 0, true], ["r1", "00236486", 3.03, 0, true]], "verdict": "persistent", "snr": 9.5194229919177, "galaxy": false}, "spPlate-6825-56717.fits 626 8169.585 +1": {"frames": [["r2", "00175948", 3.44, 0, true], ["r2", "00175949", 2.83, 0, true], ["r2", "00175950", 3.09, 0, true], ["r2", "00175951", 2.88, 0, true], ["r2", "00175952", 3.16, 0, true], ["r2", "00175953", 2.14, 0, true], ["r2", "00175954", 4.45, 0, true], ["r2", "00176029", 2.61, 0, true], ["r2", "00176030", 4.22, 0, true]], "verdict": "persistent", "snr": 9.510791612240135, "galaxy": false}, "spPlate-10918-58254.fits 446 8572.352 +1": {"frames": [["r1", "00268898", 5.62, 0, true], ["r1", "00268899", 4.21, 0, true], ["r1", "00268900", 4.61, 0, true]], "verdict": "persistent", "snr": 9.504624690640053, "galaxy": false}, "spPlate-8400-57837.fits 86 7549.184 +1": {"frames": [["r1", "00240523", 3.93, 0, true], ["r1", "00240524", 3.79, 0, true], ["r1", "00240525", 4.7, 0, true]], "verdict": "persistent", "snr": 9.503149336529347, "galaxy": false}, "spPlate-6713-56402.fits 986 7707.260 +1": {"frames": [["r2", "00160580", 4.29, 0, true], ["r2", "00160581", 4.7, 0, true], ["r2", "00160582", 5.49, 0, true]], "verdict": "persistent", "snr": 9.469552649140049, "galaxy": false}, "spPlate-3647-56568.fits 535 10261.244 +1": {"frames": [["r2", "00167171", -1.93, 589824, true], ["r2", "00167172", -0.96, 0, true], ["r2", "00167173", 0.83, 0, true]], "verdict": "unclear", "snr": 9.463013171310378, "galaxy": true}, "spPlate-5294-55922.fits 562 7138.386 +1": {"frames": [["b2", "00137536", 0.0, 83886080, false], ["b2", "00137537", 0.0, 83886080, false], ["b2", "00137538", 0.0, 83886080, false], ["b2", "00137539", 0.0, 83886080, false], ["b2", "00137540", 0.0, 83886080, false], ["b2", "00137747", 0.0, 83886080, false], ["b2", "00137748", 0.0, 83886080, false], ["b2", "00137749", 0.0, 83886080, false], ["r2", "00137536", 3.26, 0, true], ["r2", "00137537", 2.9, 0, true], ["r2", "00137538", 2.69, 0, true], ["r2", "00137539", 3.3, 0, true], ["r2", "00137540", 2.58, 0, true], ["r2", "00137747", 3.31, 0, true], ["r2", "00137748", 4.06, 0, true], ["r2", "00137749", 3.82, 0, true]], "verdict": "persistent", "snr": 9.444983620306559, "galaxy": false}, "spPlate-6018-56067.fits 838 6599.332 +1": {"frames": [["b2", "00144052", 0.0, 71434240, false], ["b2", "00144053", 0.0, 71434240, false], ["b2", "00144054", 0.0, 71434240, false], ["r2", "00144052", 3.94, 0, true], ["r2", "00144053", 4.6, 0, true], ["r2", "00144054", 4.32, 0, true]], "verdict": "persistent", "snr": 9.43233096351907, "galaxy": false}, "spPlate-11285-58402.fits 179 9729.712 +1": {"frames": [["r1", "00273462", 1.3, 8913152, true], ["r1", "00273463", 2.8, 8388864, true], ["r1", "00273464", 0.89, 8388864, true]], "verdict": "unclear", "snr": 9.421899178249243, "galaxy": false}, "spPlate-7690-57046.fits 103 6134.794 +1": {"frames": [["b1", "00193120", 2.9, 0, true], ["b1", "00193121", 2.97, 0, true], ["b1", "00193379", 2.5, 0, true], ["b1", "00193380", 2.74, 0, true], ["r1", "00193120", 3.36, 0, true], ["r1", "00193121", 4.72, 0, true], ["r1", "00193379", 1.8, 0, true], ["r1", "00193380", 2.95, 0, true]], "verdict": "persistent", "snr": 9.415545912491218, "galaxy": true}, "spPlate-9160-57656.fits 388 9351.903 +1": {"frames": [["r1", "00227953", 1.2, 4, true], ["r1", "00227954", -5.51, 4, true], ["r1", "00227955", -4.67, 4, true], ["r1", "00227956", -5.49, 4, true], ["r1", "00227957", -5.18, 4, true], ["r1", "00227958", -10.55, 4, true], ["r1", "00227959", -8.08, 4, true], ["r1", "00227960", -11.05, 4, true]], "verdict": "unclear", "snr": 9.402416478989545, "galaxy": false}, "spPlate-7340-58230.fits 526 9253.372 +1": {"frames": [["r2", "00267238", 2.64, 589824, true], ["r2", "00267239", -1.46, 589824, true], ["r2", "00267240", -1.49, 589824, true], ["r2", "00267241", -1.38, 589824, true], ["r2", "00267242", 2.8, 589824, true], ["r2", "00267243", -2.2, 589824, true]], "verdict": "persistent", "snr": 9.395489877636917, "galaxy": false}, "spPlate-6588-56536.fits 822 7197.804 +1": {"frames": [["b2", "00165526", 0.0, 83886080, false], ["b2", "00165527", 0.0, 83886080, false], ["b2", "00165528", 0.0, 83886080, false], ["b2", "00165529", 0.0, 83886080, false], ["r2", "00165526", 3.14, 0, true], ["r2", "00165527", 4.79, 0, true], ["r2", "00165528", 4.16, 0, true], ["r2", "00165529", 3.48, 0, true]], "verdict": "persistent", "snr": 9.391821253040618, "galaxy": true}, "spPlate-5026-55855.fits 458 9578.555 +1": {"frames": [["r1", "00135161", -1.29, 0, true], ["r1", "00135162", -0.94, 0, true], ["r1", "00135163", 1.23, 0, true], ["r1", "00135164", -2.4, 0, true], ["r1", "00135165", 0.87, 0, true], ["r1", "00135166", 2.72, 0, true]], "verdict": "unclear", "snr": 9.389106191037708, "galaxy": false}, "spPlate-6036-56093.fits 792 6725.119 +1": {"frames": [["b2", "00144885", 0.0, 83886080, false], ["b2", "00144886", 0.0, 83886080, false], ["b2", "00144887", 0.0, 83886080, false], ["r2", "00144885", 4.72, 0, true], ["r2", "00144886", 4.26, 0, true], ["r2", "00144887", 4.93, 0, true]], "verdict": "persistent", "snr": 9.38624707007079, "galaxy": false}, "spPlate-7834-56979.fits 331 6465.468 +1": {"frames": [["b1", "00189284", 0.0, 71434240, false], ["b1", "00189285", 0.0, 71434240, false], ["b1", "00189286", 0.0, 71434240, false], ["b1", "00189287", 0.0, 71434240, false], ["b1", "00189288", 0.0, 71434240, false], ["b1", "00189289", 0.0, 71434240, false], ["b1", "00189290", 0.0, 71434240, false], ["r1", "00189284", 2.42, 8388608, true], ["r1", "00189285", 1.8, 0, true], ["r1", "00189286", 5.0, 0, true], ["r1", "00189287", 4.45, 0, true], ["r1", "00189288", 2.65, 0, true], ["r1", "00189289", 3.13, 0, true], ["r1", "00189290", 2.67, 0, true]], "verdict": "persistent", "snr": 9.381995257083577, "galaxy": false}, "spPlate-7751-58081.fits 344 8087.234 +1": {"frames": [["r1", "00255327", 4.8, 0, true], ["r1", "00255328", 6.73, 0, true], ["r1", "00255329", 3.41, 589824, true], ["r1", "00255330", 4.12, 0, true]], "verdict": "persistent", "snr": 9.3623958691327, "galaxy": false}, "spPlate-11385-58523.fits 465 3634.126 +1": {"frames": [["b1", "00282977", 1.92, 524288, true], ["b1", "00282978", -1.1, 0, true], ["b1", "00282979", -1.72, 0, true]], "verdict": "unclear", "snr": 9.362374750787891, "galaxy": false}, "spPlate-7106-56663.fits 872 8623.826 +1": {"frames": [["r2", "00172007", 5.57, 8978432, true], ["r2", "00172008", 2.71, 8978432, true], ["r2", "00172200", 4.09, 589824, true], ["r2", "00172201", 4.75, 589824, true]], "verdict": "persistent", "snr": 9.355564287950461, "galaxy": false}, "spPlate-11312-58433.fits 701 7156.489 +1": {"frames": [["b2", "00276041", 0.0, 83886080, false], ["b2", "00276042", 0.0, 83886080, false], ["b2", "00276043", 0.0, 83886080, false], ["b2", "00276044", 0.0, 83886080, false], ["b2", "00276045", 0.0, 83886080, false], ["b2", "00276046", 0.0, 83886080, false], ["r2", "00276041", 4.35, 0, true], ["r2", "00276042", 2.47, 0, true], ["r2", "00276043", 3.42, 0, true], ["r2", "00276044", 3.71, 0, true], ["r2", "00276045", 2.86, 0, true], ["r2", "00276046", 3.32, 0, true]], "verdict": "persistent", "snr": 9.35188545110777, "galaxy": false}, "spPlate-6422-56328.fits 90 7596.263 +1": {"frames": [["r1", "00155501", 0.94, 0, true], ["r1", "00155502", 3.97, 0, true], ["r1", "00155503", 3.25, 33554432, true], ["r1", "00155688", 5.2, 0, true], ["r1", "00155689", 5.69, 0, true]], "verdict": "persistent", "snr": 9.34450311683533, "galaxy": true}, "spPlate-7339-56739.fits 732 4732.602 +1": {"frames": [["b2", "00177195", 3.06, 0, true], ["b2", "00177196", 2.17, 0, true], ["b2", "00177197", 2.81, 0, true], ["b2", "00177198", 2.55, 0, true], ["b2", "00177199", 4.49, 0, true], ["b2", "00177200", 2.67, 0, true], ["b2", "00177201", 3.32, 0, true], ["b2", "00177202", 2.05, 0, true]], "verdict": "persistent", "snr": 9.342147057757337, "galaxy": false}, "spPlate-7843-56902.fits 373 5038.485 +1": {"frames": [["b1", "00183660", 3.07, 0, true], ["b1", "00183664", 2.82, 0, true], ["b1", "00183728", 2.27, 0, true], ["b1", "00183729", 2.39, 0, true], ["b1", "00183730", 2.4, 0, true]], "verdict": "persistent", "snr": 9.333415355454314, "galaxy": false}, "spPlate-3663-55183.fits 992 4985.400 +1": {"frames": [["b2", "00105194", 1168899633918.75, 0, true], ["b2", "00105195", 3.2804032284330614e+18, 0, true], ["b2", "00105196", 2.3569574802323004e+16, 0, true], ["b2", "00105197", 16394673.58, 0, true]], "verdict": "one exposure", "snr": 9.325860285087439, "galaxy": false}, "spPlate-8858-57450.fits 548 6698.846 +1": {"frames": [["b2", "00216222", 0.0, 83886080, false], ["b2", "00216223", 0.0, 83886080, false], ["b2", "00216224", 0.0, 83886080, false], ["b2", "00216225", 0.0, 83886080, false], ["b2", "00216226", 0.0, 83886080, false], ["b2", "00216227", 0.0, 83886080, false], ["r2", "00216222", 3.8, 0, true], ["r2", "00216223", 1.4, 0, true], ["r2", "00216224", 3.93, 0, true], ["r2", "00216225", 3.28, 0, true], ["r2", "00216226", 1.72, 0, true], ["r2", "00216227", 3.56, 0, true]], "verdict": "persistent", "snr": 9.311820977312586, "galaxy": false}, "spPlate-11051-58510.fits 608 4150.496 +1": {"frames": [["b2", "00282061", -0.9, 0, true], ["b2", "00282062", -1.32, 0, true], ["b2", "00282063", 0.72, 0, true], ["b2", "00282064", 1.13, 0, true], ["b2", "00282065", 1.47, 851968, true], ["b2", "00282066", 0.49, 0, true]], "verdict": "unclear", "snr": 9.30888954802692, "galaxy": false}, "spPlate-5304-55925.fits 666 7989.139 +1": {"frames": [["r2", "00137969", 3.9, 0, true], ["r2", "00137970", 2.62, 0, true], ["r2", "00137971", 3.22, 8388608, true], ["r2", "00137972", 4.74, 0, true], ["r2", "00137973", 4.05, 0, true]], "verdict": "persistent", "snr": 9.297586546934989, "galaxy": false}, "spPlate-5446-56014.fits 576 7591.018 +1": {"frames": [["r2", "00141918", 4.39, 0, true], ["r2", "00141919", 4.2, 0, true], ["r2", "00141920", 4.73, 0, true]], "verdict": "persistent", "snr": 9.2887700902358, "galaxy": false}, "spPlate-5459-56035.fits 702 5284.453 +1": {"frames": [["b2", "00142648", 4.44, 0, true], ["b2", "00142649", 4.76, 0, true], ["b2", "00142650", 3.04, 0, true], ["r2", "00142648", 0.0, 71434240, false], ["r2", "00142649", 0.0, 71434240, false], ["r2", "00142650", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.277772917829648, "galaxy": false}, "spPlate-7589-56946.fits 409 6360.628 +1": {"frames": [["b1", "00187216", 0.0, 71303168, false], ["b1", "00187217", 0.0, 71303168, false], ["b1", "00187218", 0.0, 71303168, false], ["r1", "00187216", 4.0, 0, true], ["r1", "00187217", 3.91, 0, true], ["r1", "00187218", 6.05, 0, true]], "verdict": "persistent", "snr": 9.249012017680494, "galaxy": false}, "spPlate-4529-55563.fits 396 3747.141 +1": {"frames": [["b1", "00124540", -2.97, 0, true], ["b1", "00124541", 2.0, 0, true], ["b1", "00124542", 2.51, 0, true], ["b1", "00124543", 0.95, 0, true], ["b1", "00124544", -1.97, 0, true], ["b1", "00124545", -1.39, 0, true], ["b1", "00124546", 2.4, 33554432, true], ["b1", "00124547", -1.36, 0, true], ["b1", "00124548", 3.14, 524288, true], ["b1", "00124549", -0.79, 0, true]], "verdict": "persistent", "snr": 9.22597381713274, "galaxy": false}, "spPlate-7883-57331.fits 368 4441.197 +1": {"frames": [["b1", "00207317", 3.72, 0, true], ["b1", "00207318", 4.34, 0, true], ["b1", "00207319", 3.72, 0, true], ["b1", "00207477", 3.03, 0, true]], "verdict": "persistent", "snr": 9.214763906203897, "galaxy": false}, "spPlate-6591-56535.fits 669 6329.946 +1": {"frames": [["b2", "00165462", 1.43, 0, true], ["b2", "00165463", -1.62, 0, true], ["b2", "00165464", 1.63, 0, true], ["b2", "00165465", -2.35, 0, true], ["b2", "00165466", 0.97, 0, true], ["b2", "00165467", 1.6, 0, true], ["r2", "00165462", 3.69, 0, true], ["r2", "00165463", 4.28, 0, true], ["r2", "00165464", 2.34, 0, true], ["r2", "00165465", -1.49, 8388608, true], ["r2", "00165466", 2.19, 0, true], ["r2", "00165467", 3.5, 0, true]], "verdict": "one camera", "snr": 9.209110908529002, "galaxy": false}, "spPlate-11071-58429.fits 332 7543.971 +1": {"frames": [["r1", "00275751", 1.6645793257552514e+16, 0, true], ["r1", "00275752", -4150771219603.43, 0, true], ["r1", "00275753", 149884650.83, 0, true], ["r1", "00275754", 3.172675327458553e+17, 0, true], ["r1", "00275755", 2.02178971562288e+19, 0, true]], "verdict": "one exposure", "snr": 9.19731916790578, "galaxy": true}, "spPlate-5197-55828.fits 814 9709.570 +1": {"frames": [["r2", "00134288", -0.83, 0, true], ["r2", "00134289", 2.22, 0, true], ["r2", "00134290", 3.54, 0, true], ["r2", "00134291", 1.83, 8388608, true]], "verdict": "unclear", "snr": 9.175425641050705, "galaxy": false}, "spPlate-8500-57432.fits 407 10136.780 +1": {"frames": [["r1", "00214721", 1.26, 0, true], ["r1", "00214722", -1.8, 0, true], ["r1", "00214723", 1.16, 0, true], ["r1", "00214816", -0.79, 0, true], ["r1", "00214817", 1.6, 0, true], ["r1", "00214818", -2.12, 0, true], ["r1", "00214819", -0.75, 0, true], ["r1", "00214820", 0.61, 0, true]], "verdict": "unclear", "snr": 9.171845693281469, "galaxy": false}, "spPlate-5141-55746.fits 113 8594.092 +1": {"frames": [["r1", "00132682", -1.95, 0, true], ["r1", "00132683", 2.81, 0, true], ["r1", "00132684", 3.27, 0, true], ["r1", "00132685", 2.3, 0, true], ["r1", "00132686", 2.52, 0, true], ["r1", "00132687", 3.49, 0, true], ["r1", "00132688", 1.38, 0, true], ["r1", "00132723", 3.25, 0, true], ["r1", "00132724", 2.45, 524288, true], ["r1", "00132726", 2.7, 0, true], ["r1", "00132727", 3.7, 0, true], ["r1", "00132728", 3.49, 0, true], ["r1", "00132729", 2.45, 0, true], ["r1", "00132730", 2.86, 0, true], ["r1", "00132731", 4.5, 524288, true]], "verdict": "persistent", "snr": 9.168414623838668, "galaxy": true}, "spPlate-6395-56354.fits 372 7174.638 +1": {"frames": [["b1", "00157314", 0.0, 83886080, false], ["b1", "00157315", 0.0, 83886080, false], ["b1", "00157316", 0.0, 83886080, false], ["b1", "00157317", 0.0, 83886080, false], ["r1", "00157314", 4.55, 0, true], ["r1", "00157315", 3.16, 0, true], ["r1", "00157316", 3.89, 0, true], ["r1", "00157317", 3.89, 0, true]], "verdict": "persistent", "snr": 9.160290993782493, "galaxy": false}, "spPlate-4298-55511.fits 395 3733.361 +1": {"frames": [["b1", "00122025", -1.89, 33554432, true], ["b1", "00122028", 2.01, 33554432, true], ["b1", "00122029", 2.57, 0, true], ["b1", "00122030", 1.77, 33554432, true], ["b1", "00122151", 2.2, 524288, true], ["b1", "00122152", -0.89, 33554432, true], ["b1", "00122153", -0.83, 0, true]], "verdict": "unclear", "snr": 9.155225400524563, "galaxy": false}, "spPlate-8211-57423.fits 986 9255.502 +1": {"frames": [["r2", "00213752", 4.31, 0, true], ["r2", "00213753", 4.68, 0, true], ["r2", "00213754", 4.87, 0, true], ["r2", "00213880", 4.24, 0, true]], "verdict": "persistent", "snr": 9.14170824860257, "galaxy": true}, "spPlate-6825-56717.fits 460 6686.518 +1": {"frames": [["b1", "00175948", 0.0, 83886080, false], ["b1", "00175949", 0.0, 83886080, false], ["b1", "00175950", 0.0, 83886080, false], ["b1", "00175951", 0.0, 83886080, false], ["b1", "00175952", 0.0, 83886080, false], ["b1", "00175953", 0.0, 83886080, false], ["b1", "00175954", 0.0, 83886080, false], ["b1", "00176029", 0.0, 83886080, false], ["b1", "00176030", 0.0, 83886080, false], ["r1", "00175948", 2.81, 0, true], ["r1", "00175949", 2.12, 0, true], ["r1", "00175950", 4.35, 0, true], ["r1", "00175951", 1.39, 0, true], ["r1", "00175952", 1.96, 0, true], ["r1", "00175953", 2.02, 0, true], ["r1", "00175954", 4.32, 33554432, true], ["r1", "00176029", 3.25, 0, true], ["r1", "00176030", 4.19, 0, true]], "verdict": "persistent", "snr": 9.133761223507255, "galaxy": true}, "spPlate-6586-56485.fits 366 6837.542 +1": {"frames": [["b1", "00164491", 0.0, 83886080, false], ["b1", "00164492", 0.0, 83886080, false], ["b1", "00164493", 0.0, 83886080, false], ["b1", "00164697", 0.0, 83886080, false], ["b1", "00164698", 0.0, 83886080, false], ["b1", "00164699", 0.0, 83886080, false], ["r1", "00164491", 3.01, 0, true], ["r1", "00164492", 4.37, 0, true], ["r1", "00164493", 2.76, 0, true], ["r1", "00164697", 3.99, 8978432, true], ["r1", "00164698", 4.2, 41943040, true], ["r1", "00164699", 1.95, 8388608, true]], "verdict": "persistent", "snr": 9.131621791816588, "galaxy": true}, "spPlate-7107-56740.fits 796 7584.029 +1": {"frames": [["r2", "00177266", 3.8, 0, true], ["r2", "00177267", 2.99, 0, true], ["r2", "00177268", 3.39, 0, true], ["r2", "00177269", 3.64, 0, true]], "verdict": "persistent", "snr": 9.127389158831537, "galaxy": true}, "spPlate-4694-55649.fits 478 8673.612 +1": {"frames": [["r1", "00128681", 4.56, 8388608, true], ["r1", "00128682", 5.15, 8388608, true], ["r1", "00128683", 5.22, 0, true], ["r1", "00128684", 3.42, 8388608, true]], "verdict": "persistent", "snr": 9.126795812122767, "galaxy": false}, "spPlate-9436-58103.fits 953 6008.970 +1": {"frames": [["b2", "00257170", 3.58, 0, true], ["b2", "00257171", 4.08, 0, true], ["b2", "00257172", 3.46, 0, true], ["r2", "00257170", 0.72, 0, true], ["r2", "00257171", 1.76, 0, true], ["r2", "00257172", 2.22, 0, true]], "verdict": "persistent", "snr": 9.126395497316693, "galaxy": false}, "spPlate-6147-56239.fits 950 7058.298 +1": {"frames": [["b2", "00150309", 0.0, 83886080, false], ["b2", "00150310", 0.0, 83886080, false], ["b2", "00150311", 0.0, 83886080, false], ["b2", "00150312", 0.0, 83886080, false], ["b2", "00150313", 0.0, 83886080, false], ["r2", "00150309", 3.6, 0, true], ["r2", "00150310", 3.28, 0, true], ["r2", "00150311", 2.88, 0, true], ["r2", "00150312", 4.73, 0, true], ["r2", "00150313", 4.35, 0, true]], "verdict": "persistent", "snr": 9.124383155094566, "galaxy": false}, "spPlate-7164-56597.fits 490 9600.636 +1": {"frames": [["r1", "00168538", 0.65, 0, true], ["r1", "00168539", 1.35, 0, true], ["r1", "00168540", -1.15, 0, true], ["r1", "00168541", 1.37, 0, true], ["r1", "00168542", 2.12, 0, true], ["r1", "00168627", 1.94, 0, true], ["r1", "00168628", 1.42, 0, true]], "verdict": "unclear", "snr": 9.10655381999112, "galaxy": false}, "spPlate-6194-56190.fits 366 4281.540 +1": {"frames": [["b1", "00147589", 3.84, 0, true], ["b1", "00147590", 4.75, 0, true], ["b1", "00147591", 4.21, 0, true], ["b1", "00147657", 3.25, 0, true]], "verdict": "persistent", "snr": 9.097625540474077, "galaxy": false}, "spPlate-6498-56565.fits 455 9362.676 +1": {"frames": [["r1", "00166857", -2.83, 524288, true], ["r1", "00166858", 1.0, 524288, true], ["r1", "00166859", -2.36, 524288, true]], "verdict": "unclear", "snr": 9.094815323692496, "galaxy": false}, "spPlate-10914-58257.fits 755 7262.732 +1": {"frames": [["b2", "00269163", 0.0, 83886080, false], ["b2", "00269164", 0.0, 83886080, false], ["b2", "00269165", 0.0, 83886080, false], ["r2", "00269163", 3.9, 0, true], ["r2", "00269164", 4.04, 0, true], ["r2", "00269165", 2.62, 0, true]], "verdict": "persistent", "snr": 9.084603597445259, "galaxy": true}, "spPlate-9435-58108.fits 594 4474.041 +1": {"frames": [["b2", "00257577", 3.88, 0, true], ["b2", "00257578", 1.74, 0, true], ["b2", "00257579", 1.76, 0, true], ["b2", "00257580", 2.87, 0, true], ["b2", "00257581", 2.47, 0, true], ["b2", "00257582", 2.13, 0, true], ["b2", "00257583", 3.31, 0, true]], "verdict": "persistent", "snr": 9.079816155894349, "galaxy": true}, "spPlate-4279-55508.fits 88 6133.382 +1": {"frames": [["b1", "00121853", 1.55, 0, true], ["b1", "00121854", 3.23, 0, true], ["b1", "00121855", 2.24, 0, true], ["b1", "00121856", 3.3, 524288, true], ["b1", "00121857", 2.59, 0, true], ["r1", "00121853", 1.67, 0, true], ["r1", "00121854", 1.58, 0, true], ["r1", "00121855", 2.79, 0, true], ["r1", "00121856", 2.87, 0, true], ["r1", "00121857", 1.74, 0, true]], "verdict": "persistent", "snr": 9.075614272768174, "galaxy": true}, "spPlate-8742-57364.fits 950 8445.007 +1": {"frames": [["r2", "00209920", 2.38, 0, true], ["r2", "00209921", 1.92, 0, true], ["r2", "00209922", 5.04, 0, true], ["r2", "00209923", 4.94, 8388608, true], ["r2", "00209924", 5.46, 0, true], ["r2", "00209925", 4.55, 0, true]], "verdict": "persistent", "snr": 9.069994375810733, "galaxy": false}, "spPlate-9582-57806.fits 566 8211.075 +1": {"frames": [["r2", "00238154", 5.36, 0, true], ["r2", "00238155", 4.58, 589824, true], ["r2", "00238156", 4.52, 524288, true]], "verdict": "persistent", "snr": 9.064564260480777, "galaxy": true}, "spPlate-11561-58485.fits 827 8570.378 +1": {"frames": [["r2", "00279862", 2.35, 0, true], ["r2", "00279863", 2.27, 0, true], ["r2", "00279864", 3.92, 0, true], ["r2", "00279865", 3.78, 0, true], ["r2", "00279866", 4.09, 0, true], ["r2", "00279867", 5.43, 0, true]], "verdict": "persistent", "snr": 9.04562712037418, "galaxy": true}, "spPlate-11649-58514.fits 3 4080.374 +1": {"frames": [["b1", "00282461", 3.06, 0, true], ["b1", "00282462", 3.07, 0, true], ["b1", "00282463", -1.34, 0, true], ["b1", "00282464", 3.11, 0, true], ["b1", "00282465", 1.74, 524288, true]], "verdict": "persistent", "snr": 9.045072946497166, "galaxy": false}, "spPlate-7057-56593.fits 810 6375.291 +1": {"frames": [["b2", "00167948", 0.0, 71303168, false], ["b2", "00168429", 0.0, 71303168, false], ["b2", "00168430", 0.0, 71303168, false], ["b2", "00168431", 0.0, 71303168, false], ["b2", "00168432", 0.0, 71303168, false], ["r2", "00167948", 2.43, 0, true], ["r2", "00168429", 3.03, 0, true], ["r2", "00168430", 3.3, 0, true], ["r2", "00168431", 3.4, 0, true], ["r2", "00168432", 2.22, 0, true]], "verdict": "persistent", "snr": 9.03992532361537, "galaxy": true}, "spPlate-9548-57785.fits 114 8814.547 +1": {"frames": [["r1", "00236620", 6.05, 0, true], ["r1", "00236621", 2.81, 0, true], ["r1", "00236622", 4.51, 0, true], ["r1", "00236623", 3.04, 0, true]], "verdict": "persistent", "snr": 9.034710838725196, "galaxy": false}, "spPlate-11109-58523.fits 950 6649.669 +1": {"frames": [["b2", "00282958", 0.0, 83886080, false], ["b2", "00282959", 0.0, 83886080, false], ["b2", "00282960", 0.0, 83886080, false], ["b2", "00282961", 0.0, 83886080, false], ["b2", "00282962", 0.0, 83886080, false], ["b2", "00282963", 0.0, 83886080, false], ["r2", "00282958", 2.18, 0, true], ["r2", "00282959", 2.72, 0, true], ["r2", "00282960", 2.7, 0, true], ["r2", "00282961", 3.63, 0, true], ["r2", "00282962", 1.74, 0, true], ["r2", "00282963", 3.26, 0, true]], "verdict": "persistent", "snr": 9.028536319110355, "galaxy": true}, "spPlate-5284-55866.fits 40 10108.809 +1": {"frames": [["r1", "00135972", 3.19, 42467328, true], ["r1", "00135973", 6.62, 524288, true], ["r1", "00135974", 8.34, 524288, true], ["r1", "00135975", 6.55, 34078720, true]], "verdict": "persistent", "snr": 9.026811017226114, "galaxy": false}, "spPlate-6587-56537.fits 574 6768.618 +1": {"frames": [["b2", "00165590", 0.0, 83886080, false], ["b2", "00165591", 0.0, 83886080, false], ["b2", "00165592", 0.0, 83886080, false], ["b2", "00165593", 0.0, 83886080, false], ["b2", "00165594", 0.0, 83886080, false], ["b2", "00165595", 0.0, 83886080, false], ["r2", "00165590", 2.11, 0, true], ["r2", "00165591", 3.34, 0, true], ["r2", "00165592", 3.99, 0, true], ["r2", "00165593", 2.81, 589824, true], ["r2", "00165594", 2.43, 0, true], ["r2", "00165595", 2.88, 0, true]], "verdict": "persistent", "snr": 9.018883456818621, "galaxy": true}, "spPlate-6391-56329.fits 898 8141.417 +1": {"frames": [["r2", "00155764", 5.41, 0, true], ["r2", "00155765", 4.02, 0, true], ["r2", "00155766", 5.25, 0, true]], "verdict": "persistent", "snr": 9.017632807856186, "galaxy": false}, "spPlate-8370-57732.fits 718 6717.381 +1": {"frames": [["b2", "00233312", 0.0, 83886080, false], ["b2", "00233406", 0.0, 83886080, false], ["b2", "00233407", 0.0, 83886080, false], ["r2", "00233312", 3.66, 0, true], ["r2", "00233406", 4.12, 0, true], ["r2", "00233407", 3.87, 0, true]], "verdict": "persistent", "snr": 9.010187779701534, "galaxy": true}, "spPlate-4747-55652.fits 835 5923.795 +1": {"frames": [["b2", "00128910", 4.13, 0, true], ["b2", "00128911", 3.36, 0, true], ["b2", "00128912", 3.65, 0, true], ["b2", "00128913", 1.74, 0, true], ["b2", "00128914", 4.68, 0, true], ["b2", "00128915", 3.77, 0, true], ["b2", "00128916", 3.93, 0, true], ["r2", "00128910", 0.47, 0, true], ["r2", "00128911", -0.69, 0, true], ["r2", "00128912", -1.42, 0, true], ["r2", "00128913", 1.51, 0, true], ["r2", "00128914", 1.36, 0, true], ["r2", "00128915", -0.96, 0, true], ["r2", "00128916", 0.98, 0, true]], "verdict": "one camera", "snr": 9.00941499656621, "galaxy": true}, "spPlate-4643-55946.fits 153 9080.296 +1": {"frames": [["r1", "00138731", 5.13, 0, true], ["r1", "00138732", 4.77, 0, true], ["r1", "00138733", 3.94, 524288, true], ["r1", "00138734", 4.03, 0, true], ["r1", "00138735", 4.3, 524288, true]], "verdict": "persistent", "snr": 8.988509811552037, "galaxy": true}, "spPlate-7338-57832.fits 729 4733.692 +1": {"frames": [["b2", "00240048", 3.75, 0, true], ["b2", "00240049", 2.59, 0, true], ["b2", "00240123", 4.16, 0, true], ["b2", "00240124", 4.28, 0, true]], "verdict": "persistent", "snr": 8.985540538013067, "galaxy": false}, "spPlate-6386-56325.fits 574 8042.665 +1": {"frames": [["r2", "00155391", 2.42, 0, true], ["r2", "00155392", 4.53, 0, true], ["r2", "00155393", 3.68, 0, true], ["r2", "00155394", 3.89, 0, true], ["r2", "00155395", 3.68, 0, true], ["r2", "00155396", 2.78, 0, true]], "verdict": "persistent", "snr": 8.972924451832858, "galaxy": false}, "spPlate-7704-57572.fits 142 6214.411 +1": {"frames": [["b1", "00223959", 0.75, 0, true], ["b1", "00223960", -1.32, 0, true], ["b1", "00224161", 2.46, 0, true], ["b1", "00224162", 1.78, 0, true], ["b1", "00224163", 1.84, 0, true], ["b1", "00224164", 2.1, 0, true], ["b1", "00224165", 1.41, 0, true], ["b1", "00224166", 2.77, 0, true], ["r1", "00223959", 1.54, 0, true], ["r1", "00223960", 1.11, 0, true], ["r1", "00224161", 1.81, 0, true], ["r1", "00224162", 2.47, 0, true], ["r1", "00224163", 1.09, 851968, true], ["r1", "00224164", 3.0, 0, true], ["r1", "00224165", 2.55, 0, true], ["r1", "00224166", 1.66, 0, true]], "verdict": "persistent", "snr": 8.972183932982329, "galaxy": false}, "spPlate-4348-55559.fits 134 7787.535 +1": {"frames": [["r1", "00124321", 3.03, 0, true], ["r1", "00124322", 2.3, 0, true], ["r1", "00124323", 4.8, 0, true], ["r1", "00124324", 2.21, 589824, true], ["r1", "00124325", 5.03, 0, true]], "verdict": "persistent", "snr": 8.968799973640406, "galaxy": false}, "spPlate-3847-55588.fits 418 7654.203 +1": {"frames": [["r1", "00125333", 2.52, 0, true], ["r1", "00125334", 2.79, 0, true], ["r1", "00125335", 2.22, 0, true], ["r1", "00125336", 2.58, 0, true], ["r1", "00125349", 1.51, 0, true], ["r1", "00125352", 2.67, 0, true], ["r1", "00125353", 3.45, 0, true], ["r1", "00125354", 2.33, 8388608, true], ["r1", "00125355", 1.9, 8388608, true], ["r1", "00125738", 3.48, 0, true], ["r1", "00125739", 2.99, 0, true], ["r1", "00125740", 1.43, 0, true], ["r1", "00125815", 3.83, 0, true], ["r1", "00125816", 2.92, 0, true], ["r1", "00125817", 2.42, 0, true], ["r1", "00125818", -2.44, 0, true]], "verdict": "persistent", "snr": 8.962361119047038, "galaxy": true}, "spPlate-5979-56329.fits 226 6697.304 +1": {"frames": [["b1", "00155787", 0.0, 83886080, false], ["b1", "00155788", 0.0, 83886080, false], ["b1", "00155789", 0.0, 83886080, false], ["b1", "00155790", 0.0, 83886080, false], ["r1", "00155787", 3.84, 0, true], ["r1", "00155788", 4.32, 0, true], ["r1", "00155789", 5.75, 0, true], ["r1", "00155790", 3.98, 0, true]], "verdict": "persistent", "snr": 8.9360012016812, "galaxy": true}, "spPlate-6825-56717.fits 5 10202.345 +1": {"frames": [["r1", "00175948", 2.38, 0, true], ["r1", "00175949", 4.68, 0, true], ["r1", "00175950", 3.01, 0, true], ["r1", "00175951", 1.56, 0, true], ["r1", "00175952", 3.59, 0, true], ["r1", "00175953", 1.2, 8388608, true], ["r1", "00175954", 4.04, 0, true], ["r1", "00176029", 2.19, 0, true], ["r1", "00176030", 1.0, 0, true]], "verdict": "persistent", "snr": 8.920778313260188, "galaxy": false}, "spPlate-7726-58154.fits 509 7384.141 +1": {"frames": [["r2", "00261601", 2.98, 0, true], ["r2", "00261602", 3.04, 0, true], ["r2", "00261603", 4.6, 0, true], ["r2", "00261604", 3.62, 0, true], ["r2", "00261605", 3.7, 0, true]], "verdict": "persistent", "snr": 8.90317111249645, "galaxy": false}, "spPlate-11324-58395.fits 956 10115.795 +1": {"frames": [["r2", "00272957", 1.31, 0, true], ["r2", "00272958", 1.69, 0, true], ["r2", "00272959", -1.04, 0, true], ["r2", "00272960", 1.05, 0, true]], "verdict": "unclear", "snr": 8.893851250280289, "galaxy": false}, "spPlate-9225-58013.fits 858 5661.089 +1": {"frames": [["b2", "00249225", 3.33, 0, true], ["b2", "00249227", 2.12, 0, true], ["b2", "00249291", 4.2, 0, true], ["b2", "00249292", 4.7, 524288, true], ["b2", "00249293", 3.14, 0, true], ["r2", "00249225", 0.0, 71434240, false], ["r2", "00249227", 0.0, 71434240, false], ["r2", "00249291", 0.0, 71434240, false], ["r2", "00249292", 0.0, 71434240, false], ["r2", "00249293", 0.0, 72286208, false]], "verdict": "persistent", "snr": 8.892572063414601, "galaxy": false}, "spPlate-5048-56218.fits 167 9543.331 +1": {"frames": [["r1", "00149138", 2.43, 0, true], ["r1", "00149139", 4.47, 0, true], ["r1", "00149140", 2.82, 0, true], ["r1", "00149141", 4.29, 0, true], ["r1", "00149142", 4.93, 0, true], ["r1", "00149255", 3.69, 0, true], ["r1", "00149256", 4.81, 0, true]], "verdict": "persistent", "snr": 8.882241999237209, "galaxy": false}, "spPlate-3647-56568.fits 535 10334.751 +1": {"frames": [["r2", "00167171", 1.82, 0, true], ["r2", "00167172", 0.91, 0, true], ["r2", "00167173", 1.63, 0, true]], "verdict": "unclear", "snr": 8.879765618033103, "galaxy": true}, "spPlate-6596-56331.fits 956 3814.170 +1": {"frames": [["b2", "00155744", 2.92, 0, true], ["b2", "00155745", 1.7, 0, true], ["b2", "00155746", -1.2, 0, true], ["b2", "00155929", -1.39, 0, true], ["b2", "00155930", 1.15, 0, true], ["b2", "00155931", 1.4, 34078720, true]], "verdict": "unclear", "snr": 8.879022949786018, "galaxy": false}, "spPlate-7669-57329.fits 108 9063.585 +1": {"frames": [["r1", "00207296", 3.68, 0, true], ["r1", "00207297", 4.48, 0, true], ["r1", "00207298", 5.21, 0, true]], "verdict": "persistent", "snr": 8.878169392783397, "galaxy": false}, "spPlate-5873-56035.fits 868 6231.606 +1": {"frames": [["b2", "00142611", 2.69, 0, true], ["b2", "00142612", 2.55, 0, true], ["b2", "00142613", 2.74, 0, true], ["r2", "00142611", 3.8, 0, true], ["r2", "00142612", 3.82, 0, true], ["r2", "00142613", 3.39, 0, true]], "verdict": "persistent", "snr": 8.86316554530767, "galaxy": true}, "spPlate-3827-55298.fits 268 8725.694 +1": {"frames": [["r1", "00113011", 3.89, 0, true], ["r1", "00113012", 3.49, 0, true], ["r1", "00113013", 3.76, 0, true], ["r1", "00113014", 2.25, 0, true], ["r1", "00113080", 3.95, 0, true], ["r1", "00113081", 3.11, 0, true], ["r1", "00113082", 3.63, 0, true], ["r1", "00113083", 2.91, 0, true]], "verdict": "persistent", "snr": 8.862029135649315, "galaxy": false}, "spPlate-6932-56397.fits 386 9059.412 +1": {"frames": [["r1", "00160146", 1.09, 0, true], ["r1", "00160147", 2.61, 0, true], ["r1", "00160148", 3.4, 0, true], ["r1", "00160149", 2.81, 41943040, true], ["r1", "00160227", 2.68, 0, true], ["r1", "00160228", 4.04, 0, true], ["r1", "00160229", 4.0, 0, true], ["r1", "00160230", 3.38, 0, true], ["r1", "00160231", 2.14, 0, true], ["r1", "00160232", 2.11, 0, true]], "verdict": "persistent", "snr": 8.856634371301073, "galaxy": false}, "spPlate-5021-55863.fits 496 8816.577 +1": {"frames": [["r1", "00135477", -1.12, 0, true], ["r1", "00135478", -0.67, 0, true], ["r1", "00135479", 2.04, 0, true], ["r1", "00135617", 2.17, 0, true], ["r1", "00135618", 1.99, 0, true], ["r1", "00135619", 0.93, 0, true], ["r1", "00135620", -0.78, 0, true], ["r1", "00135621", -2.29, 0, true], ["r1", "00135690", 1.74, 0, true], ["r1", "00135691", -1.15, 0, true], ["r1", "00135692", 1.8, 0, true]], "verdict": "unclear", "snr": 8.845754756899433, "galaxy": false}, "spPlate-9242-58022.fits 909 7206.095 +1": {"frames": [["b2", "00250292", 0.0, 83886080, false], ["b2", "00250293", 0.0, 83886080, false], ["b2", "00250294", 0.0, 83886080, false], ["b2", "00250379", 0.0, 83886080, false], ["r2", "00250292", 4.48, 0, true], ["r2", "00250293", 3.79, 0, true], ["r2", "00250294", 3.39, 0, true], ["r2", "00250379", 4.56, 0, true]], "verdict": "persistent", "snr": 8.841436539281021, "galaxy": false}, "spPlate-8518-58193.fits 189 4053.218 +1": {"frames": [["b1", "00264523", 3.09, 589840, true], ["b1", "00264524", 2.14, 589840, true], ["b1", "00264525", 2.17, 589840, true], ["b1", "00264526", 2.32, 589840, true], ["b1", "00264527", 3.52, 589840, true], ["b1", "00264528", 3.28, 589840, true]], "verdict": "persistent", "snr": 8.841167659050486, "galaxy": false}, "spPlate-7137-56566.fits 906 6897.632 +1": {"frames": [["b2", "00166956", 0.0, 83886080, false], ["b2", "00166957", 0.0, 83886080, false], ["b2", "00166958", 0.0, 83886080, false], ["r2", "00166956", 1.43, 8388608, true], ["r2", "00166957", 10.08, 589824, true], ["r2", "00166958", 1.81, 33554432, true]], "verdict": "one exposure", "snr": 8.838731024639074, "galaxy": false}, "spPlate-11652-58484.fits 705 6017.277 +1": {"frames": [["b2", "00279808", 2.72, 0, true], ["b2", "00279809", 2.83, 0, true], ["b2", "00279810", 3.94, 0, true], ["b2", "00279811", -4.24, 0, true], ["b2", "00279812", 2.94, 0, true], ["r2", "00279808", -1.55, 0, true], ["r2", "00279809", 1.51, 0, true], ["r2", "00279810", 1.78, 33554432, true], ["r2", "00279811", -2.14, 0, true], ["r2", "00279812", -0.78, 0, true]], "verdict": "persistent", "snr": 8.831386420507569, "galaxy": false}, "spPlate-5395-56003.fits 530 7615.528 +1": {"frames": [["r2", "00141323", 6.19, 524288, true], ["r2", "00141324", 3.38, 0, true], ["r2", "00141325", 3.87, 0, true]], "verdict": "persistent", "snr": 8.786777109533235, "galaxy": false}, "spPlate-5292-55926.fits 706 7328.245 +1": {"frames": [["r2", "00138005", 3.52, 8388608, true], ["r2", "00138006", 2.64, 8388608, true], ["r2", "00138007", 3.7, 0, true], ["r2", "00138008", 4.31, 0, true]], "verdict": "persistent", "snr": 8.785898110483135, "galaxy": false}, "spPlate-5197-55828.fits 814 10097.178 +1": {"frames": [["r2", "00134288", 2.02, 0, true], ["r2", "00134289", -1.44, 8388608, true], ["r2", "00134290", -2.42, 0, true], ["r2", "00134291", 0.57, 0, true]], "verdict": "unclear", "snr": 8.77503588118267, "galaxy": false}, "spPlate-7734-58133.fits 712 7939.625 +1": {"frames": [["r2", "00259635", 2.33, 0, true], ["r2", "00259636", 5.12, 0, true], ["r2", "00259637", 3.86, 8388608, true], ["r2", "00259638", 3.21, 0, true]], "verdict": "persistent", "snr": 8.758985827150685, "galaxy": false}, "spPlate-4020-55332.fits 26 7189.522 +1": {"frames": [["r1", "00115230", 2.21, 0, true], ["r1", "00115231", 3.28, 0, true], ["r1", "00115353", 3.98, 0, true], ["r1", "00115354", 3.35, 0, true], ["r1", "00115355", 3.89, 0, true], ["r1", "00115426", 3.94, 0, true], ["r1", "00115427", 3.52, 0, true]], "verdict": "persistent", "snr": 8.750771426410365, "galaxy": true}, "spPlate-9412-58096.fits 558 8515.301 +1": {"frames": [["r2", "00256428", 3.69, 0, true], ["r2", "00256429", 4.59, 0, true], ["r2", "00256430", 3.53, 0, true], ["r2", "00256431", 3.01, 0, true], ["r2", "00256432", 2.28, 0, true]], "verdict": "persistent", "snr": 8.750528631407875, "galaxy": false}, "spPlate-7337-56662.fits 872 8613.903 +1": {"frames": [["r2", "00171864", 4.31, 0, true], ["r2", "00171865", 3.27, 0, true], ["r2", "00171866", 2.91, 0, true], ["r2", "00171867", 2.58, 0, true], ["r2", "00171868", 2.19, 0, true], ["r2", "00171966", 3.0, 0, true], ["r2", "00171967", 2.22, 0, true], ["r2", "00171968", 3.14, 0, true], ["r2", "00171969", 3.93, 0, true], ["r2", "00172057", 3.5, 0, true], ["r2", "00172058", 2.86, 0, true], ["r2", "00172059", 4.69, 0, true]], "verdict": "persistent", "snr": 8.747692979131468, "galaxy": false}, "spPlate-5114-55883.fits 240 9149.556 +1": {"frames": [["r1", "00136096", 2.72, 0, true], ["r1", "00136097", 2.39, 0, true], ["r1", "00136098", 4.13, 0, true], ["r1", "00136099", 4.76, 33554432, true], ["r1", "00136453", 3.19, 0, true], ["r1", "00136454", 3.55, 0, true], ["r1", "00136455", 3.24, 0, true], ["r1", "00136456", 4.02, 0, true]], "verdict": "persistent", "snr": 8.74689470495093, "galaxy": false}, "spPlate-8729-57399.fits 114 9076.115 +1": {"frames": [["r1", "00211640", 3.33, 0, true], ["r1", "00211641", 3.51, 0, true], ["r1", "00211642", 2.63, 0, true], ["r1", "00211731", 2.88, 0, true], ["r1", "00211732", 1.78, 0, true], ["r1", "00211733", 2.27, 0, true], ["r1", "00211995", 3.09, 0, true]], "verdict": "persistent", "snr": 8.739666314939617, "galaxy": false}, "spPlate-5863-56042.fits 816 8739.770 +1": {"frames": [["r2", "00142988", 3.39, 0, true], ["r2", "00142989", 4.35, 0, true], ["r2", "00142990", -0.83, 0, true], ["r2", "00143058", -1.54, 0, true], ["r2", "00143059", 3.72, 0, true]], "verdict": "persistent", "snr": 8.735634358603052, "galaxy": true}, "spPlate-4415-55831.fits 326 8723.685 +1": {"frames": [["r1", "00134533", 2.19, 0, true], ["r1", "00134534", 4.66, 0, true], ["r1", "00134535", 2.38, 0, true], ["r1", "00134536", 4.32, 0, true], ["r1", "00134537", 4.14, 0, true]], "verdict": "persistent", "snr": 8.733322007475584, "galaxy": false}, "spPlate-5313-55973.fits 558 7863.212 +1": {"frames": [["r2", "00139837", 3.14, 8388608, true], ["r2", "00139838", 3.58, 8388608, true], ["r2", "00139839", 3.4, 8388608, true], ["r2", "00139840", 2.28, 8388608, true], ["r2", "00139841", 4.0, 8388608, true]], "verdict": "persistent", "snr": 8.730727306250467, "galaxy": true}, "spPlate-5141-55746.fits 113 6556.922 +1": {"frames": [["b1", "00132682", 0.0, 71434240, false], ["b1", "00132683", 0.0, 71434240, false], ["b1", "00132684", 0.0, 71434240, false], ["b1", "00132685", 0.0, 71434240, false], ["b1", "00132686", 0.0, 71434240, false], ["b1", "00132687", 0.0, 71434240, false], ["b1", "00132688", 0.0, 71434240, false], ["b1", "00132723", 0.0, 83886080, false], ["b1", "00132724", 0.0, 83886080, false], ["b1", "00132726", 0.0, 83886080, false], ["b1", "00132727", 0.0, 83886080, false], ["b1", "00132728", 0.0, 83886080, false], ["b1", "00132729", 0.0, 83886080, false], ["b1", "00132730", 0.0, 83886080, false], ["b1", "00132731", 0.0, 83886080, false], ["r1", "00132682", 3.02, 8388608, true], ["r1", "00132683", 2.03, 8388608, true], ["r1", "00132684", 2.71, 8388608, true], ["r1", "00132685", 1.79, 8388608, true], ["r1", "00132686", 1.72, 8388608, true], ["r1", "00132687", 3.56, 8388608, true], ["r1", "00132688", 2.53, 8388608, true], ["r1", "00132723", 2.0, 8388608, true], ["r1", "00132724", 1.57, 8388608, true], ["r1", "00132726", 1.93, 0, true], ["r1", "00132727", 1.12, 8388608, true], ["r1", "00132728", 2.13, 8388608, true], ["r1", "00132729", -1.29, 0, true], ["r1", "00132730", 3.08, 0, true], ["r1", "00132731", 2.23, 0, true]], "verdict": "persistent", "snr": 8.727516372824802, "galaxy": true}, "spPlate-5656-55940.fits 136 9204.496 +1": {"frames": [["r1", "00137849", 0.0, 131079, false], ["r1", "00137850", 0.0, 131079, false], ["r1", "00137851", 0.0, 131079, false], ["r1", "00137852", 0.0, 131079, false], ["r1", "00137926", -3.17, 131079, true], ["r1", "00137927", -1.81, 131079, true], ["r1", "00137928", -1.8, 131079, true], ["r1", "00137929", 2.9, 131079, true], ["r1", "00137930", -5.59, 131079, true], ["r1", "00138286", 0.0, 131079, false], ["r1", "00138313", 0.0, 131079, false]], "verdict": "unclear", "snr": 8.721670712613227, "galaxy": false}, "spPlate-3699-55517.fits 44 5398.834 +1": {"frames": [["b1", "00122446", 3.98, 0, true], ["b1", "00122447", 2.0, 0, true], ["b1", "00122449", 0.64, 0, true], ["b1", "00122450", 4.15, 0, true], ["b1", "00122451", 3.12, 0, true], ["b1", "00122452", 2.2, 0, true], ["b1", "00122453", 3.42, 0, true], ["b1", "00122454", 3.25, 0, true], ["r1", "00122446", 0.0, 71434240, false], ["r1", "00122447", 0.0, 71434240, false], ["r1", "00122449", 0.0, 71434240, false], ["r1", "00122450", 0.0, 71434240, false], ["r1", "00122451", 0.0, 71434240, false], ["r1", "00122452", 0.0, 71434240, false], ["r1", "00122453", 0.0, 71434240, false], ["r1", "00122454", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.711739038411315, "galaxy": false}, "spPlate-8229-57430.fits 652 10247.077 +1": {"frames": [["r2", "00214601", 4.39, 589824, true], ["r2", "00214602", 4.7, 34144256, true], ["r2", "00214603", 4.5, 589824, true], ["r2", "00214604", 5.54, 589824, true], ["r2", "00214605", 3.33, 589824, true]], "verdict": "persistent", "snr": 8.706699329697726, "galaxy": false}, "spPlate-5149-55944.fits 708 7877.710 +1": {"frames": [["r2", "00138339", 3.15, 0, true], ["r2", "00138518", 3.59, 0, true], ["r2", "00138519", 4.15, 0, true], ["r2", "00138520", 4.9, 0, true]], "verdict": "persistent", "snr": 8.70168025908621, "galaxy": false}, "spPlate-3878-55361.fits 470 7055.048 +1": {"frames": [["b1", "00116618", 0.0, 83886080, false], ["b1", "00116619", 0.0, 83886080, false], ["b1", "00116620", 0.0, 83886080, false], ["r1", "00116618", 3.97, 0, true], ["r1", "00116619", 4.41, 0, true], ["r1", "00116620", 4.88, 0, true]], "verdict": "persistent", "snr": 8.699619468406883, "galaxy": true}, "spPlate-8436-57895.fits 358 5534.775 +1": {"frames": [["b1", "00244501", -1.79, 0, true], ["b1", "00244502", 2.68, 0, true], ["b1", "00244503", 2.33, 0, true], ["b1", "00244504", 1.13, 0, true], ["b1", "00244505", 3.98, 0, true], ["b1", "00244506", 2.06, 524288, true], ["b1", "00244507", 2.1, 0, true], ["b1", "00244508", 1.87, 0, true], ["b1", "00244509", 2.34, 524288, true], ["r1", "00244501", 0.0, 71434240, false], ["r1", "00244502", 0.0, 71434240, false], ["r1", "00244503", 0.0, 71434240, false], ["r1", "00244504", 0.0, 71434240, false], ["r1", "00244505", 0.0, 71434240, false], ["r1", "00244506", 0.0, 71434240, false], ["r1", "00244507", 0.0, 71434240, false], ["r1", "00244508", 0.0, 71434240, false], ["r1", "00244509", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.696390586578412, "galaxy": false}, "spPlate-3974-55320.fits 324 6625.215 +1": {"frames": [["b1", "00114424", 0.0, 83886080, false], ["b1", "00114425", 0.0, 83886080, false], ["b1", "00114426", 0.0, 83886080, false], ["b1", "00114427", 0.0, 83886080, false], ["r1", "00114424", 4.11, 0, true], ["r1", "00114425", 3.15, 0, true], ["r1", "00114426", 4.29, 0, true], ["r1", "00114427", 3.57, 0, true]], "verdict": "persistent", "snr": 8.689005461698615, "galaxy": false}, "spPlate-3536-55098.fits 252 4093.549 +1": {"frames": [["b1", "00101900", 0.0, 67633152, true], ["b1", "00101901", 0.0, 67633152, true], ["b1", "00101907", -7.822449671522339e+17, 67108864, true]], "verdict": "unclear", "snr": 8.688795111132547, "galaxy": false}, "spPlate-11288-58401.fits 543 5089.792 +1": {"frames": [["b2", "00273346", 4.75, 524288, true], ["b2", "00273347", 4.6, 0, true], ["b2", "00273348", 3.29, 0, true], ["b2", "00273349", 3.01, 0, true]], "verdict": "persistent", "snr": 8.688528399474999, "galaxy": true}, "spPlate-6481-56363.fits 720 5766.337 +1": {"frames": [["b2", "00157920", 5.76, 20, true], ["b2", "00157921", 4.5, 20, true], ["b2", "00157922", 5.81, 20, true], ["r2", "00157920", 0.0, 71434240, false], ["r2", "00157921", 0.0, 71434240, false], ["r2", "00157922", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.684792639960648, "galaxy": false}, "spPlate-8526-57898.fits 317 6935.855 +1": {"frames": [["b1", "00244688", 0.0, 83886080, false], ["b1", "00244689", 0.0, 83886080, false], ["b1", "00244690", 0.0, 83886080, false], ["b1", "00244691", 0.0, 83886080, false], ["b1", "00244692", 0.0, 83886080, false], ["b1", "00244774", 0.0, 83886080, false], ["b1", "00244775", 0.0, 83886080, false], ["r1", "00244688", 2.93, 0, true], ["r1", "00244689", 2.33, 0, true], ["r1", "00244690", 2.0, 0, true], ["r1", "00244691", 4.61, 0, true], ["r1", "00244692", 2.78, 0, true], ["r1", "00244774", 2.83, 0, true], ["r1", "00244775", 1.75, 0, true]], "verdict": "persistent", "snr": 8.684679844852354, "galaxy": true}, "spPlate-3959-55679.fits 418 8083.510 +1": {"frames": [["r1", "00130206", 2.19, 0, true], ["r1", "00130207", 4.88, 0, true], ["r1", "00130208", 2.45, 0, true], ["r1", "00130209", 3.5, 0, true]], "verdict": "persistent", "snr": 8.682494756549557, "galaxy": false}, "spPlate-8160-57071.fits 208 6971.079 +1": {"frames": [["b1", "00194967", 0.0, 83886080, false], ["b1", "00194968", 0.0, 83886080, false], ["b1", "00194969", 0.0, 83886080, false], ["b1", "00194970", 0.0, 83886080, false], ["r1", "00194967", 2.55, 0, true], ["r1", "00194968", 3.45, 0, true], ["r1", "00194969", 2.9, 0, true], ["r1", "00194970", 5.51, 0, true]], "verdict": "persistent", "snr": 8.675768795194248, "galaxy": false}, "spPlate-4533-55855.fits 414 8038.962 +1": {"frames": [["r1", "00135180", 3.38, 0, true], ["r1", "00135181", 2.81, 0, true], ["r1", "00135182", 3.07, 0, true], ["r1", "00135183", 3.7, 0, true], ["r1", "00135184", 3.2, 0, true]], "verdict": "persistent", "snr": 8.66781971846158, "galaxy": true}, "spPlate-9316-58082.fits 806 5064.073 +1": {"frames": [["b2", "00255457", 2.66, 0, true], ["b2", "00255458", 2.74, 0, true], ["b2", "00255459", 3.93, 0, true], ["b2", "00255460", -1.49, 0, true], ["b2", "00255461", 1.98, 0, true], ["b2", "00255462", 2.77, 0, true]], "verdict": "persistent", "snr": 8.667106870169036, "galaxy": false}, "spPlate-7338-58867.fits 733 4732.602 +1": {"frames": [["b2", "00306495", 2.3, 0, true], ["b2", "00306496", 4.74, 0, true], ["b2", "00306497", 3.95, 0, true], ["b2", "00306498", 3.55, 0, true], ["b2", "00306499", 3.53, 0, true]], "verdict": "persistent", "snr": 8.663203645314487, "galaxy": false}, "spPlate-10260-58173.fits 427 3695.728 +1": {"frames": [["b1", "00262939", 2.93, 0, true], ["b1", "00262940", 2.51, 524288, true], ["b1", "00262941", 0.74, 0, true], ["b1", "00262942", 1.23, 0, true], ["b1", "00262943", -2.63, 0, true], ["b1", "00263019", 2.58, 0, true]], "verdict": "persistent", "snr": 8.660150284462835, "galaxy": false}, "spPlate-8523-58174.fits 545 6434.281 +1": {"frames": [["b2", "00263043", 0.0, 71434240, false], ["b2", "00263046", 0.0, 71434240, false], ["b2", "00263049", 0.0, 71434240, false], ["b2", "00263139", 0.0, 71434240, false], ["r2", "00263043", -2.26, 0, true], ["r2", "00263046", -1.69, 0, true], ["r2", "00263049", 1.28, 0, true], ["r2", "00263139", 6.72, 589824, true]], "verdict": "one exposure", "snr": 8.659419090962707, "galaxy": false}, "spPlate-4776-55652.fits 966 8410.078 +1": {"frames": [["r2", "00128929", 3.4, 0, true], ["r2", "00128930", 3.44, 0, true], ["r2", "00128931", 3.97, 589824, true], ["r2", "00128932", 3.74, 0, true], ["r2", "00128933", 2.08, 0, true], ["r2", "00128934", 3.24, 0, true]], "verdict": "persistent", "snr": 8.655518866919973, "galaxy": false}, "spPlate-6529-56535.fits 447 10094.853 +1": {"frames": [["r1", "00165472", 1.43, 8388608, true], ["r1", "00165473", -1.55, 0, true], ["r1", "00165474", -1.83, 0, true], ["r1", "00165475", 2.12, 0, true]], "verdict": "unclear", "snr": 8.652041470586374, "galaxy": true}, "spPlate-9567-58056.fits 929 4547.786 +1": {"frames": [["b2", "00253300", 3.09, 524288, true], ["b2", "00253301", 3.13, 524288, true], ["b2", "00253302", -1.62, 0, true], ["b2", "00253303", 3.31, 524288, true], ["b2", "00253304", 3.09, 0, true]], "verdict": "persistent", "snr": 8.646713439576809, "galaxy": false}, "spPlate-5352-56269.fits 26 3928.258 +1": {"frames": [["b1", "00152035", 3.38, 0, true], ["b1", "00152036", -1.49, 0, true], ["b1", "00152037", 4.27, 0, true], ["b1", "00152038", 3.28, 34078720, true], ["b1", "00152039", 1.92, 0, true], ["b1", "00152040", 2.44, 0, true], ["b1", "00152041", 3.58, 34078720, true]], "verdict": "persistent", "snr": 8.637370341422017, "galaxy": false}, "spPlate-6699-56411.fits 882 7438.751 +1": {"frames": [["r2", "00160487", 2.63, 8388608, true], ["r2", "00160488", 4.53, 8388608, true], ["r2", "00160489", 3.92, 8388608, true], ["r2", "00160490", 2.9, 8388608, true], ["r2", "00160808", 3.36, 8388608, true], ["r2", "00160809", 1.83, 0, true], ["r2", "00160810", 1.96, 8388608, true]], "verdict": "persistent", "snr": 8.635136365963026, "galaxy": true}, "spPlate-5185-55978.fits 268 4368.175 +1": {"frames": [["b1", "00140036", 3.36, 0, true], ["b1", "00140037", 3.37, 0, true], ["b1", "00140038", 3.66, 0, true], ["b1", "00140039", 4.5, 0, true]], "verdict": "persistent", "snr": 8.633910894167567, "galaxy": false}, "spPlate-6497-56329.fits 300 8235.690 +1": {"frames": [["r1", "00155803", 4.83, 0, true], ["r1", "00155804", 4.72, 0, true], ["r1", "00155805", 2.57, 0, true], ["r1", "00155806", 3.92, 0, true], ["r1", "00155807", 2.55, 0, true], ["r1", "00155808", 2.61, 0, true], ["r1", "00155809", 4.31, 0, true]], "verdict": "persistent", "snr": 8.626203816439444, "galaxy": true}, "spPlate-3868-55360.fits 202 7538.761 +1": {"frames": [["r1", "00116541", 2.91, 0, true], ["r1", "00116542", 3.94, 0, true], ["r1", "00116543", 2.66, 0, true], ["r1", "00116544", 3.17, 0, true]], "verdict": "persistent", "snr": 8.619666933320257, "galaxy": true}, "spPlate-6487-56362.fits 880 7186.212 +1": {"frames": [["b2", "00157821", 0.0, 83886080, false], ["b2", "00157822", 0.0, 83886080, false], ["b2", "00157823", 0.0, 83886080, false], ["r2", "00157821", 5.53, 0, true], ["r2", "00157822", 3.24, 0, true], ["r2", "00157823", 3.61, 0, true]], "verdict": "persistent", "snr": 8.603726936820747, "galaxy": true}, "spPlate-6529-56535.fits 447 10055.415 +1": {"frames": [["r1", "00165472", -0.95, 0, true], ["r1", "00165473", -1.07, 0, true], ["r1", "00165474", -1.15, 0, true], ["r1", "00165475", 1.24, 0, true]], "verdict": "unclear", "snr": 8.600881731826247, "galaxy": true}, "spPlate-9428-58101.fits 30 6654.264 +1": {"frames": [["b1", "00256980", 0.0, 83886080, false], ["b1", "00256981", 0.0, 83886080, false], ["b1", "00256982", 0.0, 83886080, false], ["b1", "00256983", 0.0, 83886080, false], ["r1", "00256980", 2.92, 0, true], ["r1", "00256981", 4.79, 0, true], ["r1", "00256982", 3.35, 0, true], ["r1", "00256983", 2.93, 0, true]], "verdict": "persistent", "snr": 8.58453964807718, "galaxy": false}, "spPlate-4016-55632.fits 414 6956.648 +1": {"frames": [["b1", "00127995", 0.0, 83886080, false], ["b1", "00127996", 0.0, 83886080, false], ["b1", "00127997", 0.0, 83886080, false], ["b1", "00127998", 0.0, 83886080, false], ["b1", "00128062", 0.0, 83886080, false], ["b1", "00128063", 0.0, 83886080, false], ["r1", "00127995", 3.09, 8388608, true], ["r1", "00127996", 4.03, 0, true], ["r1", "00127997", 2.23, 8388608, true], ["r1", "00127998", 2.13, 0, true], ["r1", "00128062", 2.13, 0, true], ["r1", "00128063", 2.95, 0, true]], "verdict": "persistent", "snr": 8.581574163573148, "galaxy": true}, "spPlate-7339-58895.fits 9 9731.953 +1": {"frames": [["r1", "00308851", 0.9, 0, true], ["r1", "00308852", -1.21, 0, true], ["r1", "00308853", 1.16, 0, true], ["r1", "00308854", -1.88, 8388608, true], ["r1", "00308855", 1.94, 0, true], ["r1", "00308856", 1.39, 0, true]], "verdict": "unclear", "snr": 8.58050086766438, "galaxy": false}, "spPlate-5203-56034.fits 448 9842.377 +1": {"frames": [["r1", "00142576", 2.82, 0, true], ["r1", "00142577", 1.28, 0, true], ["r1", "00142578", -2.54, 0, true]], "verdict": "unclear", "snr": 8.578666811914779, "galaxy": false}, "spPlate-4668-56211.fits 490 6587.187 +1": {"frames": [["b1", "00148461", 0.0, 83886080, false], ["b1", "00148462", 0.0, 83886080, false], ["b1", "00148463", 0.0, 83886080, false], ["b1", "00148464", 0.0, 83886080, false], ["b1", "00148465", 0.0, 83886080, false], ["b1", "00148706", 0.0, 83886080, false], ["b1", "00148707", 0.0, 83886080, false], ["r1", "00148461", -1.35, 0, true], ["r1", "00148462", 3.24, 0, true], ["r1", "00148463", 2.85, 0, true], ["r1", "00148464", 2.92, 0, true], ["r1", "00148465", 1.09, 0, true], ["r1", "00148706", 4.31, 0, true], ["r1", "00148707", 3.73, 0, true]], "verdict": "persistent", "snr": 8.569825285227132, "galaxy": false}, "spPlate-8750-58401.fits 690 5333.349 +1": {"frames": [["b2", "00273354", 4.31, 0, true], ["b2", "00273355", 3.79, 0, true], ["b2", "00273356", 3.86, 0, true], ["b2", "00273357", 2.55, 0, true], ["r2", "00273354", 0.0, 71434240, false], ["r2", "00273355", 0.0, 71434240, false], ["r2", "00273356", 0.0, 71434240, false], ["r2", "00273357", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.564598935263456, "galaxy": true}, "spPlate-7287-57042.fits 826 6584.154 +1": {"frames": [["b2", "00193135", 0.0, 71434240, false], ["b2", "00193136", 0.0, 71434240, false], ["b2", "00193137", 0.0, 71434240, false], ["b2", "00193138", 0.0, 71434240, false], ["r2", "00193135", 3.92, 0, true], ["r2", "00193136", 3.62, 0, true], ["r2", "00193137", 3.26, 0, true], ["r2", "00193138", 4.52, 0, true]], "verdict": "persistent", "snr": 8.563813455758448, "galaxy": false}, "spPlate-6148-56209.fits 120 4276.613 +1": {"frames": [["b1", "00148534", 4.78, 0, true], ["b1", "00148535", 4.14, 0, true], ["b1", "00148536", 3.09, 0, true], ["b1", "00148537", 3.31, 0, true]], "verdict": "persistent", "snr": 8.556706356313445, "galaxy": false}, "spPlate-3695-55212.fits 500 4984.252 +1": {"frames": [["b1", "00107707", 235223996.86, 0, true], ["b1", "00107708", -1.033616014550906e+16, 0, true], ["b1", "00107709", 459564344948292.7, 0, true], ["b1", "00107710", 4165436029.38, 0, true], ["b1", "00107711", 1.525637628992896e+18, 0, true], ["b1", "00107712", 4.280868880123831e+16, 0, true], ["b1", "00107713", 0.0, 0, true], ["b1", "00107714", 4.44, 0, true]], "verdict": "one exposure", "snr": 8.538911718913623, "galaxy": false}, "spPlate-9141-57663.fits 653 6547.869 +1": {"frames": [["b2", "00228348", 0.0, 71434240, false], ["b2", "00228349", 0.0, 71434240, false], ["b2", "00228350", 0.0, 71434240, false], ["b2", "00228351", 0.0, 71434240, false], ["b2", "00228352", 0.0, 71434240, false], ["r2", "00228348", 3.56, 0, true], ["r2", "00228349", 3.09, 0, true], ["r2", "00228350", 2.68, 0, true], ["r2", "00228351", 2.92, 0, true], ["r2", "00228352", 1.48, 0, true]], "verdict": "persistent", "snr": 8.53833563878587, "galaxy": true}, "spPlate-5142-55825.fits 772 8178.996 +1": {"frames": [["r2", "00134076", 3.42, 0, true], ["r2", "00134077", 2.68, 0, true], ["r2", "00134078", 1.88, 0, true], ["r2", "00134112", 2.86, 0, true], ["r2", "00134113", 3.22, 0, true], ["r2", "00134114", 2.12, 0, true], ["r2", "00134115", 4.27, 0, true]], "verdict": "persistent", "snr": 8.535295171991041, "galaxy": false}, "spPlate-4858-55686.fits 359 8525.110 +1": {"frames": [["r1", "00130551", 3.19, 0, true], ["r1", "00130552", 2.07, 0, true], ["r1", "00130553", 3.74, 0, true], ["r1", "00130554", 1.78, 0, true], ["r1", "00130609", 2.54, 0, true], ["r1", "00130610", 4.25, 0, true]], "verdict": "persistent", "snr": 8.534396163305063, "galaxy": true}, "spPlate-7391-56781.fits 675 9631.635 +1": {"frames": [["r2", "00179342", 4.76, 0, true], ["r2", "00179343", 4.57, 0, true], ["r2", "00179344", 3.24, 0, true]], "verdict": "persistent", "snr": 8.533633891315707, "galaxy": true}, "spPlate-5792-56269.fits 996 6937.452 +1": {"frames": [["b2", "00151924", 0.0, 83886084, false], ["b2", "00152019", 0.0, 83886084, false], ["b2", "00152020", 0.0, 83886084, false], ["b2", "00152021", 0.0, 83886084, false], ["r2", "00151924", 3.34, 4, true], ["r2", "00152019", 3.57, 4, true], ["r2", "00152020", 5.42, 4, true], ["r2", "00152021", 4.44, 4, true]], "verdict": "persistent", "snr": 8.532711082358349, "galaxy": false}, "spPlate-10917-58252.fits 746 6773.295 +1": {"frames": [["b2", "00268718", 0.0, 83886080, false], ["b2", "00268719", 0.0, 83886080, false], ["b2", "00268720", 0.0, 83886080, false], ["r2", "00268718", 3.05, 0, true], ["r2", "00268719", 4.93, 0, true], ["r2", "00268720", 4.67, 0, true]], "verdict": "persistent", "snr": 8.531555350325295, "galaxy": true}, "spPlate-5379-55986.fits 488 9471.091 +1": {"frames": [["r1", "00140681", 4.8, 134217728, true], ["r1", "00140719", 4.45, 142606336, true], ["r1", "00140720", 2.22, 134217728, true], ["r1", "00140721", 3.22, 134217728, true]], "verdict": "persistent", "snr": 8.516421180030267, "galaxy": false}, "spPlate-7513-56780.fits 260 7012.938 +1": {"frames": [["b1", "00179200", 0.0, 83886080, false], ["b1", "00179276", 0.0, 83886080, false], ["b1", "00179277", 0.0, 83886080, false], ["b1", "00179278", 0.0, 83886080, false], ["b1", "00179279", 0.0, 83886080, false], ["b1", "00179280", 0.0, 83886080, false], ["r1", "00179200", 2.93, 0, true], ["r1", "00179276", 3.21, 0, true], ["r1", "00179277", 6.71, 0, true], ["r1", "00179278", 3.24, 0, true], ["r1", "00179279", 6.01, 851968, true], ["r1", "00179280", 3.92, 0, true]], "verdict": "persistent", "snr": 8.512550491393224, "galaxy": false}, "spPlate-3655-55127.fits 750 5023.426 +1": {"frames": [["b2", "00102794", 96923687.62, 655364, true], ["b2", "00102795", 538431581.15, 131076, true], ["b2", "00102796", 1.5673844290552822e+17, 655364, true], ["b2", "00102797", -1257255238.28, 131076, true], ["b2", "00102800", 430587816410663.44, 131076, true], ["b2", "00102801", 0.0, 131076, true]], "verdict": "one exposure", "snr": 8.504353793124062, "galaxy": false}, "spPlate-7854-56989.fits 106 3564.511 +1": {"frames": [["b1", "00190063", -2.05, 0, true], ["b1", "00190064", 2.06, 0, true], ["b1", "00190065", 1.59, 0, true], ["b1", "00190066", 1.28, 0, true], ["b1", "00190067", -1.53, 0, true], ["b1", "00190068", 1.86, 0, true]], "verdict": "unclear", "snr": 8.502802904919422, "galaxy": false}, "spPlate-3657-55244.fits 724 8057.494 +1": {"frames": [["r2", "00108593", 2.39, 0, true], ["r2", "00108594", -10449449.91, 8388608, true], ["r2", "00108595", 4.15870666164924e+17, 8388608, true], ["r2", "00108596", 24969.51, 0, true]], "verdict": "one exposure", "snr": 8.498995169256297, "galaxy": false}, "spPlate-9554-57807.fits 188 7169.684 +1": {"frames": [["b1", "00238248", 0.0, 83886080, false], ["b1", "00238249", 0.0, 83886080, false], ["b1", "00238250", 0.0, 83886080, false], ["r1", "00238248", 4.12, 0, true], ["r1", "00238249", 4.23, 0, true], ["r1", "00238250", 3.14, 0, true]], "verdict": "persistent", "snr": 8.498148659138547, "galaxy": true}, "spPlate-6159-56214.fits 494 9545.529 +1": {"frames": [["r1", "00148822", 2.19, 0, true], ["r1", "00148823", 1.89, 0, true], ["r1", "00148824", -1.93, 0, true], ["r1", "00148912", 3.71, 0, true], ["r1", "00148913", 1.16, 0, true]], "verdict": "unclear", "snr": 8.497043592687138, "galaxy": false}, "spPlate-8530-58016.fits 590 9268.298 +1": {"frames": [["r2", "00249561", 2.52, 0, true], ["r2", "00249562", 3.85, 0, true], ["r2", "00249563", 2.88, 0, true], ["r2", "00249564", 2.96, 0, true], ["r2", "00249565", 4.68, 0, true]], "verdict": "persistent", "snr": 8.496146692925105, "galaxy": false}, "spPlate-7028-56449.fits 264 9061.498 +1": {"frames": [["r1", "00162881", 4.37, 0, true], ["r1", "00162882", 3.18, 0, true], ["r1", "00162883", 4.86, 0, true]], "verdict": "persistent", "snr": 8.494150006604466, "galaxy": false}, "spPlate-7564-56804.fits 288 6781.098 +1": {"frames": [["b1", "00180197", 0.0, 83886080, false], ["b1", "00180198", 0.0, 83886080, false], ["b1", "00180199", 0.0, 83886080, false], ["b1", "00180200", 0.0, 83886080, false], ["b1", "00180201", 0.0, 83886080, false], ["r1", "00180197", 2.36, 0, true], ["r1", "00180198", 5.06, 0, true], ["r1", "00180199", 1.82, 851968, true], ["r1", "00180200", 2.29, 0, true], ["r1", "00180201", 3.09, 0, true]], "verdict": "persistent", "snr": 8.48870528560572, "galaxy": false}, "spPlate-6146-56265.fits 392 10183.569 +1": {"frames": [["r1", "00151659", 0.54, 0, true], ["r1", "00151660", -1.59, 8388608, true], ["r1", "00151661", 2.39, 0, true], ["r1", "00151711", 1.8, 0, true], ["r1", "00151712", 2.27, 0, true]], "verdict": "unclear", "snr": 8.485588654992915, "galaxy": false}, "spPlate-5346-55955.fits 483 9862.795 +1": {"frames": [["r1", "00139295", 3.15, 0, true], ["r1", "00139296", 1.91, 0, true], ["r1", "00139297", 1.75, 0, true]], "verdict": "unclear", "snr": 8.482384734308189, "galaxy": false}, "spPlate-5141-55746.fits 644 7301.297 +1": {"frames": [["r2", "00132682", 2.79, 0, true], ["r2", "00132683", 4.72, 0, true], ["r2", "00132684", 4.08, 0, true], ["r2", "00132685", 1.11, 0, true], ["r2", "00132686", 1.77, 0, true], ["r2", "00132687", 2.36, 0, true], ["r2", "00132688", 1.03, 0, true], ["r2", "00132723", 2.99, 0, true], ["r2", "00132724", 0.81, 0, true], ["r2", "00132726", 1.78, 0, true], ["r2", "00132727", 2.21, 0, true], ["r2", "00132728", 3.25, 0, true], ["r2", "00132729", 2.01, 0, true], ["r2", "00132730", 2.01, 8388608, true], ["r2", "00132731", 2.32, 0, true]], "verdict": "persistent", "snr": 8.47749926510681, "galaxy": false}, "spPlate-7052-56539.fits 628 5727.960 +1": {"frames": [["b2", "00165757", 3.66, 0, true], ["b2", "00165758", 3.76, 0, true], ["b2", "00165759", 2.95, 0, true], ["b2", "00165760", 4.28, 0, true], ["b2", "00165761", 2.91, 0, true], ["r2", "00165757", 0.0, 71434240, false], ["r2", "00165758", 0.0, 71434240, false], ["r2", "00165759", 0.0, 71434240, false], ["r2", "00165760", 0.0, 71434240, false], ["r2", "00165761", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.476912968127158, "galaxy": false}, "spPlate-5195-56048.fits 349 8266.088 +1": {"frames": [["r1", "00143389", 4.09, 0, true], ["r1", "00143390", 3.57, 0, true], ["r1", "00143408", 6.01, 0, true]], "verdict": "persistent", "snr": 8.474986064790524, "galaxy": false}, "spPlate-7573-56946.fits 12 10115.795 +1": {"frames": [["r1", "00187199", -2.56, 0, true], ["r1", "00187200", 1.27, 0, true], ["r1", "00187201", 0.45, 0, true], ["r1", "00187202", 1.05, 0, true]], "verdict": "unclear", "snr": 8.474715853040559, "galaxy": false}, "spPlate-7606-56977.fits 950 5784.955 +1": {"frames": [["b2", "00189111", 4.36, 0, true], ["b2", "00189112", 4.13, 0, true], ["b2", "00189113", 3.03, 0, true], ["b2", "00189114", 1.26, 0, true], ["b2", "00189115", 4.24, 0, true], ["b2", "00189116", 3.09, 0, true], ["r2", "00189111", 0.0, 71434240, false], ["r2", "00189112", 0.0, 71434240, false], ["r2", "00189113", 0.0, 71434240, false], ["r2", "00189114", 0.0, 71434240, false], ["r2", "00189115", 0.0, 71434240, false], ["r2", "00189116", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.46732880407138, "galaxy": false}, "spPlate-5112-55895.fits 473 9488.553 +1": {"frames": [["r1", "00137153", 16.71, 34078720, true], ["r1", "00137154", -1.82, 0, true], ["r1", "00137155", -0.88, 0, true], ["r1", "00137156", -2.33, 8388608, true], ["r1", "00137157", 0.62, 0, true], ["r1", "00137158", -2.41, 0, true]], "verdict": "one exposure", "snr": 8.465474954599808, "galaxy": false}, "spPlate-6502-56544.fits 864 4687.054 +1": {"frames": [["b2", "00165990", 4.7, 0, true], ["b2", "00165991", 4.3, 0, true], ["b2", "00165992", 1.65, 0, true], ["b2", "00165993", 3.34, 0, true], ["b2", "00165994", 2.06, 0, true], ["b2", "00166063", 1.56, 0, true], ["b2", "00166064", 2.38, 0, true], ["b2", "00166065", 3.01, 0, true], ["b2", "00166066", 0.76, 0, true]], "verdict": "persistent", "snr": 8.462293400845208, "galaxy": false}, "spPlate-9371-58073.fits 902 4860.713 +1": {"frames": [["b2", "00254561", 3.0, 0, true], ["b2", "00254562", 3.84, 0, true], ["b2", "00254563", 4.07, 0, true], ["b2", "00254564", 3.2, 0, true]], "verdict": "persistent", "snr": 8.461021501664975, "galaxy": false}, "spPlate-7110-56746.fits 828 7211.075 +1": {"frames": [["b2", "00177758", 0.0, 83886080, false], ["b2", "00177759", 0.0, 83886080, false], ["b2", "00177760", 0.0, 83886080, false], ["b2", "00177761", 0.0, 83886080, false], ["r2", "00177758", 3.42, 0, true], ["r2", "00177759", 3.27, 0, true], ["r2", "00177760", 3.94, 0, true], ["r2", "00177761", 2.08, 0, true]], "verdict": "persistent", "snr": 8.45555636661028, "galaxy": false}, "spPlate-5002-55710.fits 284 6514.784 +1": {"frames": [["b1", "00131390", 0.0, 71434240, false], ["b1", "00131391", 0.0, 71434240, false], ["b1", "00131392", 0.0, 71434240, false], ["b1", "00131393", 0.0, 71434240, false], ["b1", "00131394", 0.0, 71434240, false], ["r1", "00131390", 1.8, 0, true], ["r1", "00131391", 3.16, 0, true], ["r1", "00131392", 3.31, 0, true], ["r1", "00131393", 3.65, 0, true], ["r1", "00131394", 2.64, 0, true]], "verdict": "persistent", "snr": 8.443493669041809, "galaxy": true}, "spPlate-6289-56559.fits 308 9032.334 +1": {"frames": [["r1", "00166054", 1.14, 0, true], ["r1", "00166055", 3.42, 0, true], ["r1", "00166056", 2.19, 0, true], ["r1", "00166057", 0.93, 0, true], ["r1", "00166058", 1.84, 0, true], ["r1", "00166498", 3.03, 0, true], ["r1", "00166499", 3.28, 0, true]], "verdict": "persistent", "snr": 8.443239867808424, "galaxy": true}, "spPlate-6709-56429.fits 683 4319.167 +1": {"frames": [["b2", "00161899", -3.04, 0, true], ["b2", "00161900", 4.02, 524288, true], ["b2", "00161901", -0.96, 0, true], ["b2", "00161902", -2.27, 0, true]], "verdict": "unclear", "snr": 8.442881124227435, "galaxy": false}, "spPlate-11120-58510.fits 922 3801.894 +1": {"frames": [["b2", "00281880", 2.43, 0, true], ["b2", "00281881", 1.68, 0, true], ["b2", "00282071", 2.24, 0, true], ["b2", "00282072", 2.17, 0, true], ["b2", "00282073", -3.12, 0, true], ["b2", "00282074", 2.65, 0, true], ["b2", "00282075", 1.8, 0, true], ["b2", "00282076", -1.5, 0, true], ["b2", "00282077", 2.93, 34078720, true], ["b2", "00282078", 1.2, 0, true]], "verdict": "persistent", "snr": 8.439257415773627, "galaxy": false}, "spPlate-7302-57012.fits 131 7257.717 +1": {"frames": [["r1", "00191127", 4.03, 8388608, true], ["r1", "00191265", 2.59, 8388608, true], ["r1", "00191266", 4.5, 0, true], ["r1", "00191267", 2.27, 8388608, true], ["r1", "00191268", 2.82, 8388608, true], ["r1", "00191269", 1.41, 0, true], ["r1", "00191362", 3.03, 0, true]], "verdict": "persistent", "snr": 8.436280025593573, "galaxy": false}, "spPlate-6507-56478.fits 324 7769.624 +1": {"frames": [["r1", "00164263", 4.47, 0, true], ["r1", "00164264", -1.45, 8388608, true], ["r1", "00164265", 3.29, 0, true], ["r1", "00164266", 2.32, 0, true], ["r1", "00164267", 2.63, 8388608, true], ["r1", "00164268", 3.82, 0, true]], "verdict": "persistent", "snr": 8.431460774991978, "galaxy": false}, "spPlate-5318-55983.fits 414 8002.027 +1": {"frames": [["r1", "00140504", 5.67, 0, true], ["r1", "00140505", 5.7, 0, true], ["r1", "00140506", 3.19, 0, true]], "verdict": "persistent", "snr": 8.428640413948715, "galaxy": false}, "spPlate-9352-57805.fits 796 5140.437 +1": {"frames": [["b2", "00238014", 1.83, 0, true], ["b2", "00238015", 2.03, 0, true], ["b2", "00238016", 3.74, 0, true], ["b2", "00238017", 3.87, 0, true]], "verdict": "persistent", "snr": 8.425009565792605, "galaxy": false}, "spPlate-7339-57901.fits 34 5164.164 +1": {"frames": [["b1", "00244966", 2.68, 0, true], ["b1", "00244967", 1.92, 0, true], ["b1", "00244968", 2.28, 0, true], ["b1", "00244969", 2.19, 0, true]], "verdict": "unclear", "snr": 8.423732638655055, "galaxy": false}, "spPlate-3687-55269.fits 914 5417.513 +1": {"frames": [["b2", "00111770", 3.47, 0, true], ["b2", "00111771", 2.91, 0, true], ["b2", "00111772", 4.24, 0, true], ["b2", "00111773", 3.55, 0, true], ["r2", "00111770", 0.0, 71434240, false], ["r2", "00111771", 0.0, 71434240, false], ["r2", "00111772", 0.0, 71434240, false], ["r2", "00111773", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.419783468409557, "galaxy": false}, "spPlate-7107-56740.fits 796 5648.069 +1": {"frames": [["b2", "00177266", 3.59, 0, true], ["b2", "00177267", 3.77, 0, true], ["b2", "00177268", 2.96, 0, true], ["b2", "00177269", 3.37, 0, true], ["r2", "00177266", 0.0, 71434240, false], ["r2", "00177267", 0.0, 71434240, false], ["r2", "00177268", 0.0, 71434240, false], ["r2", "00177269", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.408810041878656, "galaxy": true}, "spPlate-5314-55952.fits 638 7103.952 +1": {"frames": [["b2", "00138935", 0.0, 83886080, false], ["b2", "00138936", 0.0, 83886080, false], ["b2", "00138937", 0.0, 83886080, false], ["b2", "00139070", 0.0, 83886080, false], ["b2", "00139071", 0.0, 83886080, false], ["r2", "00138935", 1.71, 0, true], ["r2", "00138936", 2.73, 0, true], ["r2", "00138937", 2.54, 0, true], ["r2", "00139070", 4.98, 0, true], ["r2", "00139071", 3.86, 0, true]], "verdict": "persistent", "snr": 8.397111079359181, "galaxy": false}, "spPlate-9162-58040.fits 242 9172.759 +1": {"frames": [["r1", "00251825", 3.26, 0, true], ["r1", "00251826", 2.8, 0, true], ["r1", "00251827", 5.45, 0, true], ["r1", "00251828", 3.04, 0, true]], "verdict": "persistent", "snr": 8.392984539680565, "galaxy": true}, "spPlate-6634-56367.fits 520 9779.125 +1": {"frames": [["r2", "00158295", 4.88, 0, true], ["r2", "00158296", 4.06, 0, true], ["r2", "00158297", 4.47, 0, true]], "verdict": "persistent", "snr": 8.379933506161985, "galaxy": true}, "spPlate-9414-58153.fits 896 8485.941 +1": {"frames": [["r2", "00261494", 3.71, 0, true], ["r2", "00261495", 3.0, 0, true], ["r2", "00261496", 3.27, 0, true], ["r2", "00261497", 3.64, 0, true], ["r2", "00261498", 4.41, 0, true], ["r2", "00261499", 2.46, 0, true]], "verdict": "persistent", "snr": 8.374684693005296, "galaxy": false}, "spPlate-5946-56101.fits 422 6908.758 +1": {"frames": [["b1", "00145022", 0.0, 83886080, false], ["b1", "00145076", 0.0, 83886080, false], ["b1", "00145077", 0.0, 83886080, false], ["b1", "00145216", 0.0, 83886080, false], ["r1", "00145022", 4.14, 0, true], ["r1", "00145076", 4.08, 0, true], ["r1", "00145077", 3.06, 0, true], ["r1", "00145216", 1.66, 0, true]], "verdict": "persistent", "snr": 8.373316550293131, "galaxy": false}, "spPlate-6433-56339.fits 588 4970.499 +1": {"frames": [["b2", "00156690", 2.49, 34078720, true], ["b2", "00156691", 1.92, 524288, true], ["b2", "00156692", 2.04, 524288, true], ["b2", "00156693", -0.55, 0, true]], "verdict": "unclear", "snr": 8.367180685178614, "galaxy": false}, "spPlate-9569-57837.fits 797 3786.169 +1": {"frames": [["b2", "00240502", 3.88, 0, true], ["b2", "00240503", 3.55, 589824, true], ["b2", "00240504", 4.5, 0, true]], "verdict": "persistent", "snr": 8.366160536285976, "galaxy": false}, "spPlate-4281-55836.fits 56 8252.775 +1": {"frames": [["r1", "00134707", 3.8, 0, true], ["r1", "00134710", 1.93, 0, true], ["r1", "00134712", 1.25, 0, true], ["r1", "00134713", 1.98, 0, true], ["r1", "00134714", 1.73, 0, true], ["r1", "00134786", 3.08, 0, true], ["r1", "00134787", 4.41, 0, true], ["r1", "00134788", 5.17, 0, true]], "verdict": "persistent", "snr": 8.365457964156855, "galaxy": false}, "spPlate-6149-56194.fits 368 9990.794 +1": {"frames": [["r1", "00147921", 2.87, 0, true], ["r1", "00147922", 2.7, 0, true], ["r1", "00147923", 1.56, 0, true], ["r1", "00147924", 5.15, 0, true], ["r1", "00147925", 4.0, 0, true]], "verdict": "persistent", "snr": 8.362528191027293, "galaxy": false}, "spPlate-3868-55360.fits 834 7803.690 +1": {"frames": [["r2", "00116541", 1.31, 8388608, true], ["r2", "00116542", 2.18, 0, true], ["r2", "00116543", 2.28, 0, true], ["r2", "00116544", 1.74, 0, true]], "verdict": "unclear", "snr": 8.353204486511034, "galaxy": false}, "spPlate-8497-58161.fits 40 7177.943 +1": {"frames": [["b1", "00262307", 0.0, 83886080, false], ["b1", "00262308", 0.0, 83886080, false], ["b1", "00262309", 0.0, 83886080, false], ["b1", "00262310", 0.0, 83886080, false], ["r1", "00262307", 2.66, 0, true], ["r1", "00262308", 4.17, 0, true], ["r1", "00262309", 4.22, 0, true], ["r1", "00262310", 3.8, 0, true]], "verdict": "persistent", "snr": 8.352635428768705, "galaxy": true}, "spPlate-4656-55828.fits 488 7025.868 +1": {"frames": [["b1", "00134339", 0.0, 83886080, false], ["b1", "00134340", 0.0, 83886080, false], ["b1", "00134341", 0.0, 83886080, false], ["b1", "00134342", 0.0, 83886080, false], ["b1", "00134343", 0.0, 83886080, false], ["b1", "00134344", 0.0, 83886080, false], ["b1", "00134345", 0.0, 83886080, false], ["r1", "00134339", 2.83, 0, true], ["r1", "00134340", 3.85, 0, true], ["r1", "00134341", 2.26, 0, true], ["r1", "00134342", 2.86, 0, true], ["r1", "00134343", 0.98, 0, true], ["r1", "00134344", 3.36, 0, true], ["r1", "00134345", 2.67, 0, true]], "verdict": "persistent", "snr": 8.350548452875033, "galaxy": true}, "spPlate-5313-55973.fits 558 5854.637 +1": {"frames": [["b2", "00139837", 3.18, 0, true], ["b2", "00139838", 3.43, 0, true], ["b2", "00139839", 3.03, 0, true], ["b2", "00139840", 3.64, 0, true], ["b2", "00139841", 3.54, 0, true], ["r2", "00139837", 0.0, 71434240, false], ["r2", "00139838", 0.0, 71434240, false], ["r2", "00139839", 0.0, 71434240, false], ["r2", "00139840", 0.0, 71434240, false], ["r2", "00139841", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.330021392301044, "galaxy": true}, "spPlate-5855-56088.fits 324 7464.488 +1": {"frames": [["r1", "00144617", 5.09, 0, true], ["r1", "00144618", 3.13, 0, true], ["r1", "00144619", 4.31, 0, true]], "verdict": "persistent", "snr": 8.321619758306419, "galaxy": false}, "spPlate-6426-56334.fits 522 6420.961 +1": {"frames": [["b2", "00156178", 0.0, 71434240, false], ["b2", "00156179", 0.0, 71434240, false], ["b2", "00156180", 0.0, 71434240, false], ["b2", "00156181", 0.0, 71434240, false], ["r2", "00156178", 3.27, 0, true], ["r2", "00156179", 2.31, 0, true], ["r2", "00156180", 2.85, 0, true], ["r2", "00156181", 2.86, 0, true]], "verdict": "persistent", "snr": 8.321294638730276, "galaxy": false}, "spPlate-7339-58895.fits 9 9412.392 +1": {"frames": [["r1", "00308851", 0.37, 0, true], ["r1", "00308852", 1.24, 0, true], ["r1", "00308853", -1.13, 0, true], ["r1", "00308854", 0.66, 0, true], ["r1", "00308855", -1.5, 0, true], ["r1", "00308856", -0.95, 8388608, true]], "verdict": "unclear", "snr": 8.31096713353432, "galaxy": false}, "spPlate-9144-57666.fits 648 7566.586 +1": {"frames": [["r2", "00228644", 1.34, 0, true], ["r2", "00228645", 2.29, 0, true], ["r2", "00228646", 1.66, 0, true], ["r2", "00228647", 2.12, 0, true], ["r2", "00228648", 1.09, 8388608, true], ["r2", "00228649", 4.13, 0, true], ["r2", "00228650", 2.07, 0, true], ["r2", "00228651", 2.12, 0, true], ["r2", "00228652", 1.76, 0, true]], "verdict": "unclear", "snr": 8.308615641436756, "galaxy": true}, "spPlate-8428-57837.fits 56 4732.602 +1": {"frames": [["b1", "00240516", 3.43, 0, true], ["b1", "00240517", 4.16, 0, true], ["b1", "00240518", 4.12, 0, true]], "verdict": "persistent", "snr": 8.306735333711744, "galaxy": false}, "spPlate-5464-56035.fits 495 9935.735 +1": {"frames": [["r1", "00142659", 3.74, 0, true], ["r1", "00142660", 2.94, 0, true], ["r1", "00142661", 2.95, 0, true]], "verdict": "persistent", "snr": 8.29625515938622, "galaxy": false}, "spPlate-5350-56009.fits 242 8578.276 +1": {"frames": [["r1", "00141573", 3.07, 0, true], ["r1", "00141574", 4.18, 0, true], ["r1", "00141575", 4.56, 0, true]], "verdict": "persistent", "snr": 8.292870226549127, "galaxy": false}, "spPlate-7646-57570.fits 208 5401.321 +1": {"frames": [["b1", "00222644", 2.77, 0, true], ["b1", "00222645", 2.58, 0, true], ["b1", "00222646", 3.84, 0, true], ["b1", "00223876", 1.97, 0, true], ["b1", "00223877", 2.34, 0, true], ["b1", "00223953", 2.73, 0, true], ["b1", "00223954", 3.39, 0, true], ["r1", "00222644", 0.0, 71434240, false], ["r1", "00222645", 0.0, 71434240, false], ["r1", "00222646", 0.0, 71434240, false], ["r1", "00223876", 0.0, 71434240, false], ["r1", "00223877", 0.0, 71434240, false], ["r1", "00223953", 0.0, 71434240, false], ["r1", "00223954", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.29073468058746, "galaxy": true}, "spPlate-4990-55743.fits 890 6961.455 +1": {"frames": [["b2", "00132545", 0.0, 83886080, false], ["b2", "00132546", 0.0, 83886080, false], ["b2", "00132547", 0.0, 83886080, false], ["b2", "00132548", 0.0, 83886080, false], ["b2", "00132549", 0.0, 83886080, false], ["b2", "00132629", 0.0, 83886080, false], ["r2", "00132545", 3.3, 0, true], ["r2", "00132546", 3.13, 851968, true], ["r2", "00132547", 2.6, 0, true], ["r2", "00132548", 3.77, 0, true], ["r2", "00132549", 2.39, 0, true], ["r2", "00132629", 4.29, 0, true]], "verdict": "persistent", "snr": 8.288091072162317, "galaxy": false}, "spPlate-3871-55307.fits 410 8334.892 +1": {"frames": [["r1", "00113926", 3.76, 0, true], ["r1", "00113927", 2.93, 0, true], ["r1", "00113928", 2.62, 0, true], ["r1", "00113929", 3.67, 0, true]], "verdict": "persistent", "snr": 8.28663387446431, "galaxy": false}, "spPlate-7846-56984.fits 352 6955.046 +1": {"frames": [["b1", "00189657", 0.0, 83886080, false], ["b1", "00189658", 0.0, 83886080, false], ["b1", "00189659", 0.0, 83886080, false], ["b1", "00189660", 0.0, 83886080, false], ["b1", "00189661", 0.0, 83886080, false], ["b1", "00189662", 0.0, 83886080, false], ["r1", "00189657", 3.51, 8388608, true], ["r1", "00189658", 3.13, 8388608, true], ["r1", "00189659", 1.15, 8388608, true], ["r1", "00189660", 4.2, 0, true], ["r1", "00189661", 2.8, 0, true], ["r1", "00189662", 5.46, 0, true]], "verdict": "persistent", "snr": 8.27693069624618, "galaxy": false}, "spPlate-5479-56016.fits 44 9028.176 +1": {"frames": [["r1", "00142009", 2.94, 0, true], ["r1", "00142010", 4.63, 0, true], ["r1", "00142011", 4.08, 0, true], ["r1", "00142069", 2.63, 0, true]], "verdict": "persistent", "snr": 8.275185462668604, "galaxy": false}, "spPlate-3947-55332.fits 324 8037.112 +1": {"frames": [["r1", "00115434", 3.81, 0, true], ["r1", "00115435", 4.99, 0, true], ["r1", "00115436", 2.7, 0, true]], "verdict": "persistent", "snr": 8.271348152679211, "galaxy": true}, "spPlate-11071-58429.fits 332 5616.943 +1": {"frames": [["b1", "00275751", 0.0, 0, false], ["b1", "00275752", 0.0, 0, false], ["b1", "00275753", 0.0, 0, false], ["b1", "00275754", 0.0, 0, false], ["b1", "00275755", 0.0, 0, false], ["r1", "00275751", 0.0, 71434240, true], ["r1", "00275752", 0.0, 71434240, true], ["r1", "00275753", 0.0, 71434240, true], ["r1", "00275754", 0.0, 71434240, true], ["r1", "00275755", 0.0, 71434240, true]], "verdict": "unclear", "snr": 8.267532232031003, "galaxy": true}, "spPlate-5144-55829.fits 508 7591.018 +1": {"frames": [["r2", "00134373", 4.16, 0, true], ["r2", "00134374", 2.85, 0, true], ["r2", "00134375", 2.91, 0, true], ["r2", "00134376", 3.04, 0, true], ["r2", "00134377", 2.51, 0, true]], "verdict": "persistent", "snr": 8.260138432970995, "galaxy": false}, "spPlate-8291-57391.fits 788 7514.498 +1": {"frames": [["r2", "00211547", 4.0, 0, true], ["r2", "00211548", 2.33, 0, true], ["r2", "00211549", 1.84, 0, true], ["r2", "00211647", 2.83, 0, true], ["r2", "00211648", 2.7, 0, true], ["r2", "00211649", 2.69, 0, true], ["r2", "00211650", 2.23, 0, true]], "verdict": "persistent", "snr": 8.248460090787432, "galaxy": false}, "spPlate-9557-58098.fits 99 9543.331 +1": {"frames": [["r1", "00255911", 3.13, 0, true], ["r1", "00255912", 4.54, 0, true], ["r1", "00256698", 3.76, 0, true], ["r1", "00256699", 4.79, 0, true]], "verdict": "persistent", "snr": 8.2471535722126, "galaxy": false}, "spPlate-8755-58138.fits 198 8162.064 +1": {"frames": [["r1", "00260126", 2.85, 0, true], ["r1", "00260127", 4.44, 0, true], ["r1", "00260128", 2.47, 0, true], ["r1", "00260129", 2.88, 0, true], ["r1", "00260140", 2.41, 0, true]], "verdict": "persistent", "snr": 8.230874987109008, "galaxy": true}, "spPlate-7652-57579.fits 34 10099.503 +1": {"frames": [["r1", "00224580", 1.65, 0, true], ["r1", "00224581", -1.15, 0, true], ["r1", "00224582", 1.45, 0, true], ["r1", "00224583", -0.99, 0, true], ["r1", "00224663", 2.32, 0, true], ["r1", "00224664", 0.49, 0, true]], "verdict": "unclear", "snr": 8.216224213875483, "galaxy": false}, "spPlate-8297-57416.fits 963 9731.953 +1": {"frames": [["r2", "00212328", 1.12, 0, true], ["r2", "00212329", -2.26, 0, true], ["r2", "00212332", 0.64, 0, true], ["r2", "00213307", 0.9, 0, true], ["r2", "00213308", -1.31, 0, true], ["r2", "00213309", -0.74, 8388608, true]], "verdict": "unclear", "snr": 8.213398811407286, "galaxy": false}, "spPlate-9442-58076.fits 984 6903.988 +1": {"frames": [["b2", "00254803", 0.0, 83886080, false], ["b2", "00254804", 0.0, 83886080, false], ["b2", "00254805", 0.0, 83886080, false], ["b2", "00254806", 0.0, 83886080, false], ["b2", "00254807", 0.0, 83886080, false], ["b2", "00254808", 0.0, 83886080, false], ["r2", "00254803", 2.0, 0, true], ["r2", "00254804", 3.49, 0, true], ["r2", "00254805", 3.79, 0, true], ["r2", "00254806", 2.83, 0, true], ["r2", "00254807", 2.37, 0, true], ["r2", "00254808", 3.06, 0, true]], "verdict": "persistent", "snr": 8.211588959359872, "galaxy": true}, "spPlate-10249-58229.fits 344 8531.001 +1": {"frames": [["r1", "00267035", 1.25, 0, true], ["r1", "00267036", 1.16, 0, true], ["r1", "00267037", 2.38, 0, true], ["r1", "00267038", 2.73, 0, true], ["r1", "00267039", 2.26, 0, true], ["r1", "00267040", 3.48, 0, true], ["r1", "00267041", 2.74, 0, true], ["r1", "00267042", 3.99, 0, true], ["r1", "00267163", 2.83, 0, true], ["r1", "00267164", 3.33, 0, true], ["r1", "00267165", 2.21, 0, true], ["r1", "00267166", -1.37, 0, true]], "verdict": "persistent", "snr": 8.208664587148958, "galaxy": false}, "spPlate-5362-56017.fits 614 7985.461 +1": {"frames": [["r2", "00142113", 2.78, 0, true], ["r2", "00142114", 2.58, 8388608, true], ["r2", "00142115", 3.08, 0, true], ["r2", "00142116", 3.3, 8388608, true], ["r2", "00142117", 4.13, 8388608, true], ["r2", "00142118", 1.73, 0, true]], "verdict": "persistent", "snr": 8.2025103943745, "galaxy": false}, "spPlate-4289-55856.fits 30 8594.092 +1": {"frames": [["r1", "00135238", 4.49, 0, true], ["r1", "00135239", 4.35, 0, true], ["r1", "00135240", 4.23, 0, true], ["r1", "00135241", 4.96, 589824, true]], "verdict": "persistent", "snr": 8.202046260465675, "galaxy": false}, "spPlate-8234-57450.fits 582 8733.735 +1": {"frames": [["r2", "00216161", 1.2, 0, true], ["r2", "00216162", 2.97, 0, true], ["r2", "00216264", 4.51, 0, true], ["r2", "00216265", 2.63, 0, true], ["r2", "00216266", 3.1, 0, true]], "verdict": "persistent", "snr": 8.198751647973443, "galaxy": true}, "spPlate-7689-57743.fits 912 9126.411 +1": {"frames": [["r2", "00234152", 4.3, 0, true], ["r2", "00234153", 4.09, 0, true], ["r2", "00234154", 3.38, 0, true], ["r2", "00234155", 3.54, 0, true]], "verdict": "persistent", "snr": 8.198086811822144, "galaxy": false}, "spPlate-7340-56833.fits 875 7207.755 +1": {"frames": [["b2", "00181298", 0.0, 83886080, false], ["b2", "00181302", 0.0, 83886080, false], ["b2", "00181303", 0.0, 83886080, false], ["b2", "00181304", 0.0, 83886080, false], ["b2", "00181305", 0.0, 83886080, false], ["b2", "00181306", 0.0, 83886080, false], ["b2", "00181307", 0.0, 83886080, false], ["b2", "00181308", 0.0, 83886080, false], ["b2", "00181309", 0.0, 83886080, false], ["r2", "00181298", 3.64, 65536, true], ["r2", "00181302", 3.06, 589824, true], ["r2", "00181303", 2.24, 589824, true], ["r2", "00181304", 2.36, 589824, true], ["r2", "00181305", 2.66, 0, true], ["r2", "00181306", 2.97, 589824, true], ["r2", "00181307", 1.73, 589824, true], ["r2", "00181308", 2.43, 589824, true], ["r2", "00181309", 2.71, 65536, true]], "verdict": "persistent", "snr": 8.194882491392626, "galaxy": false}, "spPlate-4221-55443.fits 510 6407.668 +1": {"frames": [["b2", "00118857", 0.0, 71434240, false], ["b2", "00118859", 0.0, 71434240, false], ["b2", "00118860", 0.0, 71434240, false], ["b2", "00118861", 0.0, 71434240, false], ["b2", "00118862", 0.0, 71434240, false], ["r2", "00118857", 1.91, 0, true], ["r2", "00118859", 2.42, 0, true], ["r2", "00118860", 3.59, 0, true], ["r2", "00118861", 3.99, 0, true], ["r2", "00118862", 2.7, 0, true]], "verdict": "persistent", "snr": 8.193657682160728, "galaxy": true}, "spPlate-5856-56090.fits 580 7897.688 +1": {"frames": [["r2", "00144693", 4.78, 0, true], ["r2", "00144694", 4.45, 0, true], ["r2", "00144695", 4.21, 0, true]], "verdict": "persistent", "snr": 8.191723767932494, "galaxy": false}, "spPlate-6432-56309.fits 389 9731.953 +1": {"frames": [["r1", "00154647", 0.64, 0, true], ["r1", "00154648", 1.01, 0, true], ["r1", "00154649", 1.18, 0, true]], "verdict": "unclear", "snr": 8.189272651371464, "galaxy": false}, "spPlate-7087-56637.fits 876 7032.342 +1": {"frames": [["b2", "00170854", 0.0, 83886080, false], ["b2", "00170855", 0.0, 83886080, false], ["b2", "00170856", 0.0, 83886080, false], ["b2", "00170857", 0.0, 83886080, false], ["b2", "00170858", 0.0, 83886080, false], ["r2", "00170854", 3.93, 0, true], ["r2", "00170855", 3.4, 0, true], ["r2", "00170856", 3.06, 0, true], ["r2", "00170857", 3.77, 0, true], ["r2", "00170858", 2.61, 0, true]], "verdict": "persistent", "snr": 8.188323113642163, "galaxy": false}, "spPlate-9407-58041.fits 528 10162.487 +1": {"frames": [["r2", "00251936", 6.94, 34144272, true], ["r2", "00251937", 5.13, 34144272, true], ["r2", "00251938", 4.49, 589840, true], ["r2", "00251939", 2.83, 589840, true], ["r2", "00251940", 3.31, 589840, true]], "verdict": "persistent", "snr": 8.187355987318051, "galaxy": false}, "spPlate-9435-58108.fits 594 6008.970 +1": {"frames": [["b2", "00257577", 1.29, 0, true], ["b2", "00257578", 1.99, 0, true], ["b2", "00257579", 2.6, 0, true], ["b2", "00257580", 2.61, 0, true], ["b2", "00257581", 2.52, 0, true], ["b2", "00257582", 3.22, 0, true], ["b2", "00257583", 1.4, 0, true], ["r2", "00257577", 1.36, 0, true], ["r2", "00257578", 1.3, 0, true], ["r2", "00257579", 1.14, 0, true], ["r2", "00257580", 1.24, 0, true], ["r2", "00257581", 1.19, 0, true], ["r2", "00257582", 1.46, 0, true], ["r2", "00257583", 1.96, 0, true]], "verdict": "persistent", "snr": 8.184623042886589, "galaxy": true}, "spPlate-5211-56002.fits 764 7365.462 +1": {"frames": [["r2", "00141275", 3.2, 8388608, true], ["r2", "00141276", 1.42, 0, true], ["r2", "00141277", 3.03, 0, true], ["r2", "00141278", 1.55, 0, true], ["r2", "00141279", 2.74, 8388608, true], ["r2", "00141280", 2.41, 0, true], ["r2", "00141281", 2.9, 0, true]], "verdict": "persistent", "snr": 8.18322618820837, "galaxy": false}, "spPlate-4789-55923.fits 634 9080.296 +1": {"frames": [["r2", "00137818", 3.14, 0, true], ["r2", "00137819", 2.68, 0, true], ["r2", "00137820", 3.85, 0, true], ["r2", "00137821", 3.23, 0, true], ["r2", "00137822", 1.38, 0, true], ["r2", "00137823", 4.5, 0, true]], "verdict": "persistent", "snr": 8.176769820614414, "galaxy": false}, "spPlate-7339-58895.fits 9 9471.091 +1": {"frames": [["r1", "00308851", -1.38, 0, true], ["r1", "00308852", 2.16, 0, true], ["r1", "00308853", 1.38, 0, true], ["r1", "00308854", 0.68, 262144, true], ["r1", "00308855", -2.14, 0, true], ["r1", "00308856", 1.33, 0, true]], "verdict": "unclear", "snr": 8.17342467113205, "galaxy": false}, "spPlate-10460-58161.fits 1 9997.698 +1": {"frames": [["r1", "00262292", 4.17, 0, true], ["r1", "00262293", 3.51, 0, true], ["r1", "00262294", 2.49, 0, true], ["r1", "00262295", 2.17, 0, true]], "verdict": "persistent", "snr": 8.167599010601181, "galaxy": false}, "spPlate-4867-55924.fits 766 6729.767 +1": {"frames": [["b2", "00137889", 0.0, 83886080, false], ["b2", "00137890", 0.0, 83886080, false], ["b2", "00137891", 0.0, 83886080, false], ["b2", "00137892", 0.0, 83886080, false], ["b2", "00137893", 0.0, 83886080, false], ["r2", "00137889", 1.46, 0, true], ["r2", "00137890", 2.39, 0, true], ["r2", "00137891", 4.23, 0, true], ["r2", "00137892", 1.79, 0, true], ["r2", "00137893", 3.43, 0, true]], "verdict": "persistent", "snr": 8.167369190625667, "galaxy": false}, "spPlate-6661-56366.fits 444 8933.055 +1": {"frames": [["r1", "00158171", 3.74, 0, true], ["r1", "00158172", 4.73, 0, true], ["r1", "00158173", 5.81, 0, true], ["r1", "00158174", 5.12, 0, true]], "verdict": "persistent", "snr": 8.164027629250782, "galaxy": false}, "spPlate-10461-58142.fits 225 6692.679 +1": {"frames": [["b1", "00260538", 0.0, 83886080, false], ["b1", "00260539", 0.0, 83886080, false], ["b1", "00260540", 0.0, 83886080, false], ["r1", "00260538", -2.48, 589824, true], ["r1", "00260539", -1.94, 0, true], ["r1", "00260540", 6.94, 589824, true]], "verdict": "one exposure", "snr": 8.162797275631402, "galaxy": false}, "spPlate-5436-56015.fits 494 9933.447 +1": {"frames": [["r1", "00141995", 3.28, 0, true], ["r1", "00141996", 4.42, 0, true], ["r1", "00141997", 3.59, 0, true]], "verdict": "persistent", "snr": 8.161656645228604, "galaxy": false}, "spPlate-6602-56571.fits 766 6718.928 +1": {"frames": [["b2", "00167344", 0.0, 83886080, false], ["b2", "00167424", 0.0, 83886080, false], ["b2", "00167425", 0.0, 83886080, false], ["b2", "00167426", 0.0, 83886080, false], ["r2", "00167344", 1.98, 0, true], ["r2", "00167424", 3.5, 0, true], ["r2", "00167425", 3.86, 0, true], ["r2", "00167426", 2.84, 0, true]], "verdict": "persistent", "snr": 8.156630596674033, "galaxy": true}, "spPlate-9143-57665.fits 140 6597.813 +1": {"frames": [["b1", "00228551", 0.0, 83886080, false], ["b1", "00228552", 0.0, 83886080, false], ["b1", "00228553", 0.0, 83886080, false], ["b1", "00228554", 0.0, 83886080, false], ["b1", "00228555", 0.0, 83886080, false], ["b1", "00228556", 0.0, 83886080, false], ["b1", "00228557", 0.0, 83886080, false], ["b1", "00228558", 0.0, 83886080, false], ["r1", "00228551", 3.02, 0, true], ["r1", "00228552", 2.05, 0, true], ["r1", "00228553", 3.22, 0, true], ["r1", "00228554", 2.24, 0, true], ["r1", "00228555", 2.43, 0, true], ["r1", "00228556", 2.78, 0, true], ["r1", "00228557", 3.51, 0, true], ["r1", "00228558", 2.66, 0, true]], "verdict": "persistent", "snr": 8.151654103971683, "galaxy": false}, "spPlate-9229-58015.fits 76 8568.405 +1": {"frames": [["r1", "00249481", 1.71, 0, true], ["r1", "00249484", 4.33, 0, true], ["r1", "00249485", 3.97, 0, true], ["r1", "00249486", 2.62, 0, true], ["r1", "00249487", 4.47, 0, true]], "verdict": "persistent", "snr": 8.148170306553757, "galaxy": false}, "spPlate-5767-56245.fits 716 6340.157 +1": {"frames": [["b2", "00150643", -0.64, 71303168, true], ["b2", "00150739", 0.75, 71303168, false], ["b2", "00150740", -2.11, 0, true], ["b2", "00150860", 0.67, 71303168, false], ["b2", "00150861", 0.37, 71303168, true], ["b2", "00150862", -1.07, 0, true], ["b2", "00150863", -2.78, 0, true], ["r2", "00150643", 2.68, 0, true], ["r2", "00150739", 2.13, 0, true], ["r2", "00150740", 2.64, 0, true], ["r2", "00150860", 3.79, 0, true], ["r2", "00150861", 2.39, 0, true], ["r2", "00150862", 2.0, 0, true], ["r2", "00150863", 2.27, 0, true]], "verdict": "persistent", "snr": 8.142516741203746, "galaxy": false}, "spPlate-10243-58159.fits 621 4312.211 +1": {"frames": [["b2", "00262121", 4.07, 524288, true], ["b2", "00262122", -0.94, 0, true], ["b2", "00262123", 2.09, 262144, true]], "verdict": "unclear", "snr": 8.141170818745849, "galaxy": false}, "spPlate-5975-56334.fits 128 3794.897 +1": {"frames": [["b1", "00155984", 1.86, 0, true], ["b1", "00156194", 2.89, 0, true], ["b1", "00156195", 2.59, 0, true], ["b1", "00156196", 2.47, 0, true]], "verdict": "persistent", "snr": 8.139705379648593, "galaxy": false}, "spPlate-8126-56956.fits 526 10060.047 +1": {"frames": [["r2", "00187941", 4.89, 8978454, true], ["r2", "00187942", 4.94, 8978454, true], ["r2", "00187943", 5.51, 589846, true], ["r2", "00187944", 5.88, 589846, true]], "verdict": "persistent", "snr": 8.13923219342851, "galaxy": false}, "spPlate-4349-55803.fits 740 4045.759 +1": {"frames": [["b2", "00133304", -4.48, 8388608, true], ["b2", "00133305", -4.39, 8388608, true], ["b2", "00133306", -4.93, 8388608, true], ["b2", "00133307", -5.37, 8388608, true], ["b2", "00133308", -4.84, 8388608, true], ["b2", "00133309", -3.76, 8388608, true]], "verdict": "unclear", "snr": 8.138167832724356, "galaxy": false}, "spPlate-10262-58466.fits 695 6740.622 +1": {"frames": [["b2", "00278775", 0.0, 83886080, false], ["b2", "00278907", 0.0, 83886080, false], ["b2", "00278908", 0.0, 83886080, false], ["r2", "00278775", 6.12, 589824, true], ["r2", "00278907", -1.57, 0, true], ["r2", "00278908", 1.32, 0, true]], "verdict": "one exposure", "snr": 8.131316299328414, "galaxy": false}, "spPlate-7084-56624.fits 812 8148.919 +1": {"frames": [["r2", "00169980", 4.13, 0, true], ["r2", "00169981", 4.36, 0, true], ["r2", "00169982", 4.09, 8388608, true]], "verdict": "persistent", "snr": 8.131194437263568, "galaxy": false}, "spPlate-7183-56658.fits 450 8441.119 +1": {"frames": [["r1", "00170720", 1.28, 8388608, true], ["r1", "00170721", -2.32, 0, true], ["r1", "00170779", 3.23, 0, true], ["r1", "00170780", 2.32, 851968, true], ["r1", "00170781", 2.31, 0, true], ["r1", "00170782", -0.66, 0, true], ["r1", "00170783", 2.06, 0, true], ["r1", "00171561", 2.1, 0, true], ["r1", "00171562", 2.32, 0, true], ["r1", "00171563", 2.56, 0, true], ["r1", "00171564", 1.58, 8388608, true], ["r1", "00171658", 4.3, 0, true], ["r1", "00171659", 1.57, 0, true], ["r1", "00171660", 2.8, 0, true]], "verdict": "persistent", "snr": 8.125106592369155, "galaxy": true}, "spPlate-4239-55458.fits 906 6540.335 +1": {"frames": [["b2", "00119562", 0.0, 71434240, false], ["b2", "00119563", 0.0, 71434240, false], ["b2", "00119564", 0.0, 71434240, false], ["b2", "00119565", 0.0, 71434240, false], ["b2", "00119566", 0.0, 71434240, false], ["b2", "00119581", 0.0, 71434240, false], ["b2", "00119582", 0.0, 71434240, false], ["r2", "00119562", 3.46, 0, true], ["r2", "00119563", 3.32, 524288, true], ["r2", "00119564", 2.57, 0, true], ["r2", "00119565", 1.87, 0, true], ["r2", "00119566", 2.77, 0, true], ["r2", "00119581", 3.23, 0, true], ["r2", "00119582", 2.53, 0, true]], "verdict": "persistent", "snr": 8.119896577039764, "galaxy": false}, "spPlate-6263-56279.fits 468 8482.034 +1": {"frames": [["r1", "00152901", 5.04, 0, true], ["r1", "00152902", 4.94, 0, true], ["r1", "00152903", 4.31, 0, true]], "verdict": "persistent", "snr": 8.117238676095361, "galaxy": false}, "spPlate-9204-57712.fits 371 6245.972 +1": {"frames": [["b1", "00231766", -2.3, 0, true], ["b1", "00231767", 1.51, 0, true], ["b1", "00231768", 1.67, 0, true], ["b1", "00231769", 1.64, 0, true], ["b1", "00231770", -1.06, 0, true], ["b1", "00231850", 1.67, 0, true], ["b1", "00231851", 1.08, 0, true], ["r1", "00231766", 0.99, 0, true], ["r1", "00231767", 1.67, 0, true], ["r1", "00231768", 2.92, 0, true], ["r1", "00231769", 3.37, 0, true], ["r1", "00231770", 2.8, 0, true], ["r1", "00231850", 0.96, 0, true], ["r1", "00231851", 3.77, 0, true]], "verdict": "persistent", "snr": 8.116550368078512, "galaxy": false}, "spPlate-6780-56605.fits 336 6477.389 +1": {"frames": [["b1", "00169219", 0.0, 71434240, false], ["b1", "00169220", 0.0, 71434240, false], ["b1", "00169221", 0.0, 71434240, false], ["b1", "00169222", 0.0, 71434240, false], ["b1", "00169223", 0.0, 71434240, false], ["b1", "00169224", 0.0, 71434240, false], ["r1", "00169219", 3.91, 0, true], ["r1", "00169220", 2.65, 0, true], ["r1", "00169221", 2.18, 0, true], ["r1", "00169222", -1.16, 33554432, true], ["r1", "00169223", 3.75, 0, true], ["r1", "00169224", 2.01, 0, true]], "verdict": "persistent", "snr": 8.114784376794645, "galaxy": false}, "spPlate-4062-55383.fits 346 4028.098 +1": {"frames": [["b1", "00117952", -1.92, 0, true], ["b1", "00117953", 2.78, 0, true], ["b1", "00117981", -1.9, 0, true], ["b1", "00117982", 3.57, 0, true], ["b1", "00117983", 2.84, 0, true], ["b1", "00117984", 1.39, 0, true], ["b1", "00117985", -3.51, 0, true], ["b1", "00117986", -2.01, 0, true]], "verdict": "persistent", "snr": 8.107611255073989, "galaxy": false}, "spPlate-4478-55600.fits 376 9289.664 +1": {"frames": [["r1", "00126257", -1.2, 589824, true], ["r1", "00126258", 3.08, 0, true], ["r1", "00126259", 4.06, 0, true], ["r1", "00126260", 3.6, 0, true], ["r1", "00126261", 3.97, 0, true], ["r1", "00126262", 1.95, 0, true], ["r1", "00126263", 3.11, 0, true], ["r1", "00126390", 2.6, 0, true], ["r1", "00126391", 3.1, 0, true], ["r1", "00126392", 1.66, 0, true]], "verdict": "persistent", "snr": 8.106151642671207, "galaxy": true}, "spPlate-7112-56666.fits 40 10064.681 +1": {"frames": [["r1", "00172431", 6.82, 34078720, true], ["r1", "00172432", 6.49, 524288, true], ["r1", "00172433", 5.5, 42467328, true], ["r1", "00172435", 4.49, 524288, true], ["r1", "00172436", 7.6, 34078720, true], ["r1", "00172437", 4.31, 34078720, true], ["r1", "00172438", 6.41, 34078720, true]], "verdict": "persistent", "snr": 8.105984754443261, "galaxy": false}, "spPlate-5873-56035.fits 868 4640.876 +1": {"frames": [["b2", "00142611", 4.06, 0, true], ["b2", "00142612", 3.78, 0, true], ["b2", "00142613", 3.89, 0, true]], "verdict": "persistent", "snr": 8.09928162981651, "galaxy": true}, "spPlate-9627-58132.fits 39 9906.038 +1": {"frames": [["r1", "00259564", 2.78, 0, true], ["r1", "00259565", 2.81, 524288, true], ["r1", "00259566", 1.72, 0, true], ["r1", "00259567", 3.32, 0, true]], "verdict": "persistent", "snr": 8.097944288094842, "galaxy": false}, "spPlate-4407-55884.fits 86 5503.006 +1": {"frames": [["b1", "00136410", 1.87, 0, true], ["b1", "00136411", 2.75, 0, true], ["b1", "00136487", 2.72, 524288, true], ["b1", "00136488", -2.65, 0, true], ["b1", "00136489", -1.75, 33554432, true], ["r1", "00136410", 0.0, 71434240, false], ["r1", "00136411", 0.0, 71434240, false], ["r1", "00136487", 0.0, 71434240, false], ["r1", "00136488", 0.0, 71434240, false], ["r1", "00136489", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.094308730594914, "galaxy": false}, "spPlate-4488-55571.fits 984 7945.112 +1": {"frames": [["r2", "00125089", 1.29, 0, true], ["r2", "00125090", 3.14, 0, true], ["r2", "00125091", 2.83, 0, true], ["r2", "00125092", 2.23, 0, true], ["r2", "00125093", 1.28, 0, true], ["r2", "00125094", 2.96, 0, true], ["r2", "00125095", 0.27, 0, true], ["r2", "00125096", 2.9, 0, true], ["r2", "00125097", 2.35, 0, true]], "verdict": "persistent", "snr": 8.090008946822293, "galaxy": false}, "spPlate-6509-56486.fits 879 7174.638 +1": {"frames": [["b2", "00164755", 0.0, 83886080, false], ["b2", "00164756", 0.0, 83886080, false], ["b2", "00164757", 0.0, 83886080, false], ["b2", "00164758", 0.0, 83886080, false], ["r2", "00164755", 3.43, 0, true], ["r2", "00164756", 4.45, 0, true], ["r2", "00164757", 4.15, 0, true], ["r2", "00164758", 2.25, 0, true]], "verdict": "persistent", "snr": 8.089376006612932, "galaxy": false}, "spPlate-5361-55973.fits 914 7168.033 +1": {"frames": [["b2", "00139846", 0.0, 83886080, false], ["b2", "00139847", 0.0, 83886080, false], ["b2", "00139848", 0.0, 83886080, false], ["b2", "00139849", 0.0, 83886080, false], ["b2", "00139850", 0.0, 83886080, false], ["b2", "00139851", 0.0, 83886080, false], ["r2", "00139846", 1.52, 0, true], ["r2", "00139847", 3.98, 0, true], ["r2", "00139848", 3.5, 0, true], ["r2", "00139849", 2.09, 0, true], ["r2", "00139850", 3.64, 0, true], ["r2", "00139851", 2.69, 0, true]], "verdict": "persistent", "snr": 8.086779858497682, "galaxy": false}, "spPlate-11113-58425.fits 705 6022.822 +1": {"frames": [["b2", "00275356", 2.91, 131072, true], ["b2", "00275357", 3.32, 131072, true], ["b2", "00275358", 2.3, 33685504, true], ["b2", "00275359", 3.47, 131072, true], ["b2", "00275360", 2.16, 0, true], ["b2", "00275361", 2.52, 131072, true], ["b2", "00275362", 2.03, 131072, true], ["r2", "00275356", 1.05, 0, true], ["r2", "00275357", -0.98, 33554432, true], ["r2", "00275358", -0.68, 0, true], ["r2", "00275359", -2.32, 33554432, true], ["r2", "00275360", -1.88, 33554432, true], ["r2", "00275361", 1.31, 0, true], ["r2", "00275362", 0.97, 0, true]], "verdict": "persistent", "snr": 8.078988355394616, "galaxy": false}, "spPlate-5048-56218.fits 512 6564.475 +1": {"frames": [["b2", "00149138", 0.0, 71434240, false], ["b2", "00149139", 0.0, 71434240, false], ["b2", "00149140", 0.0, 71434240, false], ["b2", "00149141", 0.0, 71434240, false], ["b2", "00149142", 0.0, 71434240, false], ["b2", "00149255", 0.0, 71434240, false], ["b2", "00149256", 0.0, 71434240, false], ["r2", "00149138", 2.42, 0, true], ["r2", "00149139", 3.06, 0, true], ["r2", "00149140", 2.46, 0, true], ["r2", "00149141", 2.15, 0, true], ["r2", "00149142", 2.73, 0, true], ["r2", "00149255", 2.52, 0, true], ["r2", "00149256", 3.6, 0, true]], "verdict": "persistent", "snr": 8.07132634574688, "galaxy": false}, "spPlate-10258-58492.fits 528 9354.057 +1": {"frames": [["r2", "00280445", -2.64, 589824, true], ["r2", "00280446", 2.15, 589824, true], ["r2", "00280447", -2.93, 589824, true], ["r2", "00280448", -2.36, 589824, true], ["r2", "00280449", -5.15, 589824, true]], "verdict": "unclear", "snr": 8.0706258963587, "galaxy": false}, "spPlate-9611-58107.fits 248 6108.014 +1": {"frames": [["b1", "00257506", 3.99, 0, true], ["b1", "00257507", 2.74, 0, true], ["b1", "00257508", 3.43, 0, true], ["r1", "00257506", 2.69, 0, true], ["r1", "00257507", 1.92, 0, true], ["r1", "00257508", 2.03, 0, true]], "verdict": "persistent", "snr": 8.060184799545866, "galaxy": false}, "spPlate-4376-55863.fits 124 8972.222 +1": {"frames": [["r1", "00135484", 3.98, 0, true], ["r1", "00135485", 3.52, 0, true], ["r1", "00135486", 3.49, 0, true], ["r1", "00135487", 2.47, 0, true], ["r1", "00135698", 3.09, 0, true], ["r1", "00135699", 3.66, 0, true], ["r1", "00135700", 3.8, 0, true], ["r1", "00135701", 4.57, 0, true]], "verdict": "persistent", "snr": 8.05735632323501, "galaxy": true}, "spPlate-11317-58398.fits 332 8423.644 +1": {"frames": [["r1", "00273150", 2.12, 8388864, true], ["r1", "00273151", 1.12, 8978688, true], ["r1", "00273195", -1.01, 8388864, true], ["r1", "00273196", 2.05, 256, true], ["r1", "00273197", -0.48, 8388864, true]], "verdict": "unclear", "snr": 8.051308064938933, "galaxy": false}, "spPlate-7688-57286.fits 408 7355.293 +1": {"frames": [["r1", "00204673", 4.8, 0, true], ["r1", "00204674", 3.83, 0, true]], "verdict": "persistent", "snr": 8.047902290728329, "galaxy": false}, "spPlate-6634-56367.fits 520 7459.333 +1": {"frames": [["r2", "00158295", 3.8, 0, true], ["r2", "00158296", 3.4, 0, true], ["r2", "00158297", 4.14, 0, true]], "verdict": "persistent", "snr": 8.045328240140234, "galaxy": true}, "spPlate-3865-55272.fits 284 8558.546 +1": {"frames": [["r1", "00111925", 3.11, 0, true], ["r1", "00111926", 1.49, 8388608, true], ["r1", "00111927", -1.38, 0, true], ["r1", "00111928", 0.92, 0, true], ["r1", "00111991", 2.64, 0, true], ["r1", "00111992", 3.74, 0, true], ["r1", "00111993", 3.47, 33554432, true], ["r1", "00111994", 2.39, 0, true], ["r1", "00111995", 3.49, 0, true], ["r1", "00111996", 1.33, 0, true], ["r1", "00111997", 3.16, 0, true], ["r1", "00111998", 2.0, 0, true]], "verdict": "persistent", "snr": 8.04100274343363, "galaxy": false}, "spPlate-8492-58171.fits 182 9837.846 +1": {"frames": [["r1", "00262865", -0.48, 0, true], ["r1", "00262866", -2.46, 0, true], ["r1", "00262867", 1.68, 0, true], ["r1", "00262868", 1.1, 0, true]], "verdict": "unclear", "snr": 8.04007295785146, "galaxy": false}, "spPlate-7102-56666.fits 253 4226.686 +1": {"frames": [["b1", "00172183", 2.18, 0, true], ["b1", "00172275", 1.62, 0, true], ["b1", "00172276", 2.06, 0, true], ["b1", "00172277", 1.75, 0, true], ["b1", "00172417", 3.69, 0, true], ["b1", "00172418", -1.98, 0, true]], "verdict": "unclear", "snr": 8.039736891544516, "galaxy": false}, "spPlate-5311-55956.fits 386 9840.111 +1": {"frames": [["r1", "00139352", 0.79, 0, true], ["r1", "00139353", -0.77, 0, true], ["r1", "00139354", 2.75, 0, true], ["r1", "00139355", -1.42, 524288, true]], "verdict": "unclear", "snr": 8.036061585697526, "galaxy": false}, "spPlate-6486-56328.fits 351 8683.604 +1": {"frames": [["r1", "00154990", 1.62, 131079, true], ["r1", "00155701", 2.85, 131077, true], ["r1", "00155702", -2.58, 131077, true], ["r1", "00155703", -1.23, 131077, true], ["r1", "00155704", 2.42, 131077, true], ["r1", "00155705", 3.33, 131077, true], ["r1", "00155706", 2.06, 131077, true], ["r1", "00155707", 3.05, 131077, true]], "verdict": "persistent", "snr": 8.032757007422843, "galaxy": false}, "spPlate-7583-56958.fits 900 7169.684 +1": {"frames": [["b2", "00188166", 0.0, 83886080, false], ["b2", "00188167", 0.0, 83886080, false], ["b2", "00188168", 0.0, 83886080, false], ["b2", "00188169", 0.0, 83886080, false], ["b2", "00188170", 0.0, 83886080, false], ["r2", "00188166", 2.39, 0, true], ["r2", "00188167", 3.02, 0, true], ["r2", "00188168", 3.39, 0, true], ["r2", "00188169", 1.57, 0, true], ["r2", "00188170", 3.52, 0, true]], "verdict": "persistent", "snr": 8.029909011804254, "galaxy": false}, "spPlate-8496-58159.fits 589 8273.704 +1": {"frames": [["r2", "00262165", 4.77, 0, true], ["r2", "00262166", 3.78, 0, true], ["r2", "00262167", 3.72, 0, true]], "verdict": "persistent", "snr": 8.02716028994018, "galaxy": false}, "spPlate-7412-57107.fits 156 10164.827 +1": {"frames": [["r1", "00197291", 7.79, 0, true]], "verdict": "one frame", "snr": 8.016512244089096, "galaxy": false}, "spPlate-5327-55979.fits 554 4628.071 +1": {"frames": [["b2", "00140171", 2.75, 33554432, true], ["b2", "00140172", 2.47, 0, true], ["b2", "00140173", 2.2, 524288, true], ["b2", "00140174", 2.44, 0, true]], "verdict": "unclear", "snr": 8.016137741723222, "galaxy": false}, "spPlate-4550-55894.fits 694 3668.597 +1": {"frames": [["b2", "00137070", 2.53, 0, true], ["b2", "00137071", -0.6, 0, true], ["b2", "00137072", 1.38, 524288, true], ["b2", "00137073", -1.45, 0, true], ["b2", "00137074", -2.51, 0, true], ["b2", "00137075", -1.49, 0, true]], "verdict": "unclear", "snr": 8.014852847176, "galaxy": false}, "spPlate-5126-55923.fits 455 10034.598 +1": {"frames": [["r1", "00137688", -3.47, 0, true], ["r1", "00137796", 1.32, 8388608, true], ["r1", "00137797", 0.75, 8388608, true], ["r1", "00137798", 1.9, 0, true]], "verdict": "unclear", "snr": 8.014569383060948, "galaxy": false}, "spPlate-9442-58076.fits 984 9136.924 +1": {"frames": [["r2", "00254803", 3.71, 0, true], ["r2", "00254804", 3.34, 0, true], ["r2", "00254805", 2.24, 0, true], ["r2", "00254806", 3.65, 0, true], ["r2", "00254807", 3.45, 0, true], ["r2", "00254808", 2.68, 0, true]], "verdict": "persistent", "snr": 8.013423015171796, "galaxy": true}, "spPlate-9423-58100.fits 475 4232.530 +1": {"frames": [["b1", "00256889", 2.18, 0, true], ["b1", "00256890", 2.66, 0, true], ["b1", "00256891", 1.82, 0, true], ["b1", "00256892", 2.29, 0, true]], "verdict": "unclear", "snr": 8.012966309937775, "galaxy": false}, "spPlate-7152-56660.fits 766 8256.576 +1": {"frames": [["r2", "00171555", 5.03, 0, true], ["r2", "00171556", 1.93, 589824, true], ["r2", "00171652", 4.43, 0, true], ["r2", "00171653", 2.62, 0, true], ["r2", "00171848", -1.54, 589824, true], ["r2", "00171849", 2.2, 0, true]], "verdict": "persistent", "snr": 8.000888199775158, "galaxy": false}, "spPlate-3648-55131.fits 420 6008.970 -1": {"frames": [["b1", "00102942", 0.0, 67108864, false], ["b1", "00102943", 0.0, 67108864, false], ["b1", "00102944", 0.0, 100663296, false], ["r1", "00102942", 0.0, 469762054, true], ["r1", "00102943", 0.77, 100663302, true], ["r1", "00102944", 9.2385578636163e+17, 67108870, true]], "verdict": "one exposure", "snr": 362.1226695193509, "galaxy": false}, "spPlate-4837-55707.fits 6 5956.621 -1": {"frames": [["b1", "00131120", 2.79, 131076, true], ["b1", "00131121", -0.98, 131076, true], ["b1", "00131170", 1.79, 131076, true], ["b1", "00131171", 1.75, 131076, true], ["b1", "00131172", 1.21, 131076, true], ["r1", "00131120", 0.0, 131076, false], ["r1", "00131121", 0.0, 131076, false], ["r1", "00131170", 11.56, 4, true], ["r1", "00131171", 84.97, 4, true], ["r1", "00131172", 61.52, 33554436, true]], "verdict": "persistent", "snr": 308.3294485420927, "galaxy": false}, "spPlate-4837-55707.fits 6 6003.438 -1": {"frames": [["b1", "00131120", -1.83, 131076, true], ["b1", "00131121", -1.31, 33685508, true], ["b1", "00131170", 1.7, 131076, true], ["b1", "00131171", -1.76, 131076, true], ["b1", "00131172", -1.24, 33685508, true], ["r1", "00131120", 0.0, 131076, false], ["r1", "00131121", 0.0, 131076, false], ["r1", "00131170", 40.3, 33554436, true], ["r1", "00131171", 56.73, 4, true], ["r1", "00131172", 61.73, 33554436, true]], "verdict": "one camera", "snr": 254.729888474105, "galaxy": false}, "spPlate-3666-55185.fits 164 6260.370 -1": {"frames": [["b1", "00105356", 0.0, 131078, false], ["b1", "00105358", 0.0, 131078, false], ["b1", "00105359", 0.0, 131078, false], ["b1", "00105360", 0.0, 131078, false], ["b1", "00105361", 0.0, 131078, false], ["b1", "00105362", 0.0, 131078, false], ["b1", "00105363", 0.0, 131078, false], ["r1", "00105356", 133.31, 8388612, true], ["r1", "00105358", 0.0, 8388612, true], ["r1", "00105359", 0.0, 41943044, true], ["r1", "00105360", 114573432102244.02, 33554436, true], ["r1", "00105361", 218646.19, 8388612, true], ["r1", "00105362", 643211782.73, 33554436, true], ["r1", "00105363", 1.507567719778016e+16, 41943044, true]], "verdict": "one exposure", "snr": 195.80710933913593, "galaxy": false}, "spPlate-4837-55707.fits 6 6013.122 -1": {"frames": [["b1", "00131120", 1.47, 131076, true], ["b1", "00131121", 3.67, 131076, true], ["b1", "00131170", 1.36, 131076, true], ["b1", "00131171", 2.59, 131076, true], ["b1", "00131172", -0.97, 33685508, true], ["r1", "00131120", 0.0, 131076, false], ["r1", "00131121", 0.0, 131076, false], ["r1", "00131170", -14.53, 33554436, true], ["r1", "00131171", 20.93, 33554436, true], ["r1", "00131172", -27.91, 33554436, true]], "verdict": "one exposure", "snr": 171.91128311596404, "galaxy": false}, "spPlate-4837-55707.fits 6 5991.009 -1": {"frames": [["b1", "00131120", 1.78, 131076, true], ["b1", "00131121", 1.26, 131076, true], ["b1", "00131170", -0.65, 131076, true], ["b1", "00131171", 1.52, 131076, true], ["b1", "00131172", 0.75, 131076, true], ["r1", "00131120", 0.0, 131076, false], ["r1", "00131121", 0.0, 131076, false], ["r1", "00131170", 31.33, 33554436, true], ["r1", "00131171", -29.18, 33554436, true], ["r1", "00131172", 44.8, 33554436, true]], "verdict": "one camera", "snr": 142.03106349757158, "galaxy": false}, "spPlate-4837-55707.fits 6 6028.371 -1": {"frames": [["b1", "00131120", 1.79, 131076, true], ["b1", "00131121", 1.89, 131076, true], ["b1", "00131170", 3.16, 131076, true], ["b1", "00131171", 2.69, 131076, true], ["b1", "00131172", -1.26, 131076, true], ["r1", "00131120", 0.0, 131076, false], ["r1", "00131121", 0.0, 131076, false], ["r1", "00131170", 16.72, 33554436, true], ["r1", "00131171", -29.02, 33554436, true], ["r1", "00131172", 16.62, 4, true]], "verdict": "persistent", "snr": 139.80650729077945, "galaxy": false}, "spPlate-3666-55185.fits 164 6100.986 -1": {"frames": [["b1", "00105356", 0.0, 131078, false], ["b1", "00105358", 0.0, 131078, false], ["b1", "00105359", 0.0, 131078, false], ["b1", "00105360", 0.0, 131078, false], ["b1", "00105361", 0.0, 131078, false], ["b1", "00105362", 0.0, 131078, false], ["b1", "00105363", 0.0, 131078, false], ["r1", "00105356", -1.01, 4, true], ["r1", "00105358", 13855424411.4, 4, true], ["r1", "00105359", -2001029063892967.5, 4, true], ["r1", "00105360", -728619943511.4, 4, true], ["r1", "00105361", 1.02, 4, true], ["r1", "00105362", 7007932199930663.0, 4, true], ["r1", "00105363", 0.0, 33554436, true]], "verdict": "one exposure", "snr": 114.65460139270671, "galaxy": false}, "spPlate-3666-55185.fits 164 6120.685 -1": {"frames": [["b1", "00105356", 0.0, 131078, false], ["b1", "00105358", 0.0, 131078, false], ["b1", "00105359", 0.0, 131078, false], ["b1", "00105360", 0.0, 131078, false], ["b1", "00105361", 0.0, 131078, false], ["b1", "00105362", 0.0, 131078, false], ["b1", "00105363", 0.0, 131078, false], ["r1", "00105356", -366056.24, 33554436, true], ["r1", "00105358", -3007470.44, 4, true], ["r1", "00105359", -1.366001820942539e+17, 4, true], ["r1", "00105360", -130218088.26, 4, true], ["r1", "00105361", -8.285869080029933e+16, 4, true], ["r1", "00105362", -1.94, 4, true], ["r1", "00105363", 0.0, 33554436, true]], "verdict": "unclear", "snr": 114.44214047178255, "galaxy": false}, "spPlate-3666-55185.fits 164 6212.981 -1": {"frames": [["b1", "00105356", 0.0, 131078, false], ["b1", "00105358", 0.0, 131078, false], ["b1", "00105359", 0.0, 131078, false], ["b1", "00105360", 0.0, 131078, false], ["b1", "00105361", 0.0, 131078, false], ["b1", "00105362", 0.0, 131078, false], ["b1", "00105363", 0.0, 131078, false], ["r1", "00105356", 0.0, 4, true], ["r1", "00105358", 0.0, 4, true], ["r1", "00105359", -73819.17, 33554436, true], ["r1", "00105360", -1.75, 34144260, true], ["r1", "00105361", -5.355070368867818e+18, 4, true], ["r1", "00105362", 111508186072862.05, 4, true], ["r1", "00105363", -29817044363214.92, 33554436, true]], "verdict": "one exposure", "snr": 98.0056998766312, "galaxy": false}, "spPlate-9205-57711.fits 327 4693.534 -1": {"frames": [["b1", "00230852", 23.8, 0, true], ["b1", "00230853", 19.1, 0, true], ["b1", "00230854", 20.11, 0, true], ["b1", "00230855", 19.16, 0, true], ["b1", "00231625", 21.16, 0, true], ["b1", "00231626", 20.44, 0, true], ["b1", "00231627", 18.47, 0, true], ["b1", "00231628", 34.22, 0, true], ["b1", "00231629", 44.99, 0, true], ["b1", "00231760", -1.97, 131088, false], ["b1", "00231761", -0.53, 131088, false]], "verdict": "persistent", "snr": 83.86504306439898, "galaxy": false}, "spPlate-5852-56034.fits 453 7379.042 -1": {"frames": [["r1", "00142555", -219.85, 7, true], ["r1", "00142556", -659.19, 33554439, true], ["r1", "00142557", 6258.46, 8388615, true]], "verdict": "one exposure", "snr": 71.33441306895519, "galaxy": false}, "spPlate-5852-56034.fits 453 7224.370 -1": {"frames": [["r1", "00142555", -364.42, 7, true], ["r1", "00142556", -560.52, 33554439, true], ["r1", "00142557", -551.75, 33554439, true]], "verdict": "unclear", "snr": 68.66449099003974, "galaxy": false}, "spPlate-3622-55123.fits 64 6067.363 -1": {"frames": [["b1", "00102524", 0.0, 67108864, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", 0.0, 67108870, true], ["r1", "00102525", -1.203604821337229e+18, 100663302, true]], "verdict": "unclear", "snr": 63.398849933950444, "galaxy": true}, "spPlate-3622-55123.fits 64 6043.660 -1": {"frames": [["b1", "00102524", 0.0, 100663296, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", 0.0, 67108870, true], ["r1", "00102525", 1.7108253381763763e+18, 109051910, true]], "verdict": "one exposure", "snr": 62.854105257948284, "galaxy": true}, "spPlate-3648-55131.fits 420 6056.197 -1": {"frames": [["b1", "00102942", 0.0, 67108864, false], ["b1", "00102943", 0.0, 67108864, false], ["b1", "00102944", 0.0, 67108864, false], ["r1", "00102942", 109205.93, 201326598, true], ["r1", "00102943", 1.4037523942644116e+16, 67108870, true], ["r1", "00102944", 15991761922143.09, 67108870, true]], "verdict": "one exposure", "snr": 57.02818058449001, "galaxy": false}, "spPlate-5852-56034.fits 453 7462.769 -1": {"frames": [["r1", "00142555", 818.72, 33554439, true], ["r1", "00142556", 1136.67, 33554439, true], ["r1", "00142557", -503.99, 33554439, true]], "verdict": "persistent", "snr": 55.34912495976324, "galaxy": false}, "spPlate-3648-55131.fits 420 5938.818 -1": {"frames": [["b1", "00102942", 0.0, 67108864, false], ["b1", "00102943", 0.0, 67108864, false], ["b1", "00102944", 0.0, 67108864, false], ["r1", "00102942", 0.0, 469762054, true], ["r1", "00102943", 1807993.77, 67174406, true], ["r1", "00102944", -371.46, 67108870, true]], "verdict": "one exposure", "snr": 52.71500570309826, "galaxy": false}, "spPlate-5852-56034.fits 453 7848.741 -1": {"frames": [["r1", "00142555", 733.23, 41943047, true], ["r1", "00142556", 2967.53, 41943047, true], ["r1", "00142557", -1055.99, 33554439, true]], "verdict": "one exposure", "snr": 51.90716088281097, "galaxy": false}, "spPlate-3648-55131.fits 420 5962.110 -1": {"frames": [["b1", "00102942", 0.0, 67108864, false], ["b1", "00102943", 0.0, 67108864, false], ["b1", "00102944", 0.0, 67108864, false], ["r1", "00102942", 0.0, 469762054, true], ["r1", "00102943", -7802533637524894.0, 100663302, true], ["r1", "00102944", 1423729463.09, 67108870, true]], "verdict": "one exposure", "snr": 48.68442827991311, "galaxy": false}, "spPlate-3622-55123.fits 64 6074.353 -1": {"frames": [["b1", "00102524", 0.0, 100663296, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", 0.0, 67108870, true], ["r1", "00102525", -3.6789305093351767e+18, 100663302, true]], "verdict": "unclear", "snr": 46.5275315005076, "galaxy": true}, "spPlate-10243-58159.fits 112 6117.867 -1": {"frames": [["b1", "00262121", 2.29, 131076, true], ["b1", "00262122", 3.09, 131076, true], ["b1", "00262123", 1.41, 131076, true], ["r1", "00262121", 47.55, 4, true], ["r1", "00262122", 34.38, 4, true], ["r1", "00262123", 49.5, 4, true]], "verdict": "persistent", "snr": 45.084318568265694, "galaxy": false}, "spPlate-5852-56034.fits 453 7735.707 -1": {"frames": [["r1", "00142555", -350.51, 7, true], ["r1", "00142556", 373.62, 7, true], ["r1", "00142557", 1610.79, 8388615, true]], "verdict": "one exposure", "snr": 42.903260632318485, "galaxy": false}, "spPlate-3622-55123.fits 64 5974.478 -1": {"frames": [["b1", "00102524", 0.0, 67108864, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", 4.65, 100663302, true], ["r1", "00102525", 2000188202641068.5, 100663302, true]], "verdict": "one exposure", "snr": 41.76041194424649, "galaxy": true}, "spPlate-10661-58171.fits 375 5569.292 -1": {"frames": [["b1", "00262609", -0.99, 131072, true], ["b1", "00262610", -1.23, 131072, true], ["b1", "00262611", 2.17, 131072, true], ["b1", "00262612", 1.22, 0, true], ["b1", "00262811", 20.23, 0, true], ["b1", "00262812", 16.53, 0, true], ["b1", "00262813", 27.01, 0, true], ["b1", "00262814", 22.82, 0, true], ["r1", "00262609", 0.0, 71434240, false], ["r1", "00262610", 0.0, 71434240, false], ["r1", "00262611", 0.0, 71434240, false], ["r1", "00262612", 0.0, 71434240, false], ["r1", "00262811", 0.0, 71434240, false], ["r1", "00262812", 0.0, 71434240, false], ["r1", "00262813", 0.0, 71434240, false], ["r1", "00262814", 0.0, 71434240, false]], "verdict": "persistent", "snr": 41.728707275595305, "galaxy": false}, "spPlate-3622-55123.fits 64 6057.592 -1": {"frames": [["b1", "00102524", 0.0, 67108864, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", 0.0, 67108870, true], ["r1", "00102525", 8.720372944734373e+17, 100663302, true]], "verdict": "one exposure", "snr": 40.25375573918323, "galaxy": true}, "spPlate-3622-55123.fits 64 6099.581 -1": {"frames": [["b1", "00102524", 0.0, 67108864, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", 0.0, 100663302, true], ["r1", "00102525", -915808552.17, 100663302, true]], "verdict": "unclear", "snr": 37.03802673964124, "galaxy": true}, "spPlate-11069-58456.fits 340 4544.645 -1": {"frames": [["b1", "00277975", -0.63, 131072, true], ["b1", "00277976", -1.59, 0, true], ["b1", "00277977", 1.1, 131072, true], ["b1", "00277978", -1.46, 0, true], ["b1", "00278072", 14.93, 0, true], ["b1", "00278074", 15.61, 0, true], ["b1", "00278075", 13.98, 0, true], ["b1", "00278076", 15.3, 0, true], ["b1", "00278265", 14.2, 0, true], ["b1", "00278266", 9.24, 0, true]], "verdict": "persistent", "snr": 36.837331937533094, "galaxy": false}, "spPlate-7686-57015.fits 38 10002.303 -1": {"frames": [["r1", "00191259", 0.0, 131079, false], ["r1", "00191260", 0.0, 131079, false], ["r1", "00191354", -10.88, 7, true], ["r1", "00191441", 0.0, 131079, false], ["r1", "00191442", 0.0, 131079, false], ["r1", "00191443", 0.0, 131079, false], ["r1", "00191572", 0.0, 131079, false], ["r1", "00191573", 0.0, 131079, false]], "verdict": "one frame", "snr": 36.78098759451378, "galaxy": false}, "spPlate-5852-56034.fits 453 7507.581 -1": {"frames": [["r1", "00142555", -531.43, 7, true], ["r1", "00142556", -755.04, 33554439, true], ["r1", "00142557", -1187.95, 7, true]], "verdict": "unclear", "snr": 36.09514299692702, "galaxy": false}, "spPlate-3622-55123.fits 64 6116.458 -1": {"frames": [["b1", "00102524", 0.0, 100663296, false], ["b1", "00102525", 0.0, 101187584, false], ["r1", "00102524", 0.0, 67108870, true], ["r1", "00102525", -4.94, 67108870, true]], "verdict": "unclear", "snr": 33.05132180077897, "galaxy": true}, "spPlate-9590-57813.fits 327 4698.941 -1": {"frames": [["b1", "00238655", 12.7, 0, true], ["b1", "00238656", 14.34, 0, true], ["b1", "00238657", 15.63, 0, true], ["b1", "00238658", 9.92, 0, true], ["b1", "00238659", 14.66, 0, true]], "verdict": "persistent", "snr": 32.665632398154386, "galaxy": false}, "spPlate-5852-56034.fits 453 7673.615 -1": {"frames": [["r1", "00142555", -1163.65, 7, true], ["r1", "00142556", -833.87, 34078727, true], ["r1", "00142557", -883.74, 7, true]], "verdict": "unclear", "snr": 31.945123566114304, "galaxy": false}, "spPlate-4837-55707.fits 6 5916.979 -1": {"frames": [["b1", "00131120", -1.06, 131076, true], ["b1", "00131121", 2.08, 131076, true], ["b1", "00131170", 2.8, 131076, true], ["b1", "00131171", 0.87, 131076, true], ["b1", "00131172", 2.61, 131076, true], ["r1", "00131120", 0.0, 131076, false], ["r1", "00131121", 0.0, 131076, false], ["r1", "00131170", 16.87, 33554436, true], ["r1", "00131171", 3.27, 4, true], ["r1", "00131172", 19.56, 4, true]], "verdict": "persistent", "snr": 28.895994885884953, "galaxy": false}, "spPlate-10904-58402.fits 283 4975.079 -1": {"frames": [["b1", "00273186", 8.21, 0, true], ["b1", "00273188", 10.39, 0, true], ["b1", "00273441", 19.39, 33554432, true], ["b1", "00273442", 14.18, 0, true], ["b1", "00273443", 13.7, 0, true]], "verdict": "persistent", "snr": 27.139455265637874, "galaxy": false}, "spPlate-9143-57665.fits 146 5788.953 -1": {"frames": [["b1", "00228551", -1.09, 0, true], ["b1", "00228552", 1.56, 0, true], ["b1", "00228553", 0.1, 0, true], ["b1", "00228554", 0.99, 0, true], ["b1", "00228555", -1.1, 0, true], ["b1", "00228556", 1.74, 0, true], ["b1", "00228557", -1.2, 0, true], ["b1", "00228558", 1.19, 0, true], ["r1", "00228551", 156.25, 22, true], ["r1", "00228552", 136.3, 22, true], ["r1", "00228553", 172.81, 22, true], ["r1", "00228554", 176.04, 22, true], ["r1", "00228555", 79.94, 22, true], ["r1", "00228556", 41.92, 22, true], ["r1", "00228557", 150.76, 22, true], ["r1", "00228558", 231.5, 22, true]], "verdict": "one camera", "snr": 26.17871950958, "galaxy": false}, "spPlate-3622-55123.fits 64 5947.028 -1": {"frames": [["b1", "00102524", 0.0, 67108864, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", -4421890243812093.0, 100663302, true], ["r1", "00102525", 7692269093491800.0, 67108870, true]], "verdict": "one exposure", "snr": 25.03404291110236, "galaxy": true}, "spPlate-10723-58287.fits 841 8371.437 -1": {"frames": [["r2", "00271014", 6.34, 8978432, true], ["r2", "00271015", 4.33, 589824, true], ["r2", "00271016", 5.03, 8978432, true]], "verdict": "persistent", "snr": 21.372247598238296, "galaxy": false}, "spPlate-9157-57742.fits 320 5903.370 -1": {"frames": [["b1", "00232983", 8.7, 33554432, true], ["b1", "00232985", 12.61, 0, true], ["b1", "00232986", 13.91, 33554432, true], ["b1", "00233094", 9.33, 0, true], ["b1", "00233095", 12.79, 0, true], ["b1", "00233096", 14.05, 0, true], ["b1", "00234014", 11.15, 0, true], ["b1", "00234015", 9.36, 16, true], ["r1", "00232983", 0.61, 0, true], ["r1", "00232985", -0.98, 0, true], ["r1", "00232986", 0.6, 0, true], ["r1", "00233094", 1.32, 0, true], ["r1", "00233095", 1.05, 0, true], ["r1", "00233096", 1.35, 0, true], ["r1", "00234014", -1.88, 0, true], ["r1", "00234015", -0.43, 33554432, true]], "verdict": "one camera", "snr": 20.706603937208214, "galaxy": false}, "spPlate-11069-58456.fits 303 5775.638 -1": {"frames": [["b1", "00277975", 7.06, 0, true], ["b1", "00277976", 7.2, 0, true], ["b1", "00277977", 9.48, 0, true], ["b1", "00277978", 6.23, 0, true], ["b1", "00278072", 2.87, 0, true], ["b1", "00278074", 3.62, 0, true], ["b1", "00278075", 3.65, 0, true], ["b1", "00278076", 6.26, 0, true], ["b1", "00278265", 9.43, 0, true], ["b1", "00278266", 6.84, 0, true], ["r1", "00277975", 0.0, 71434240, false], ["r1", "00277976", 0.0, 71434240, false], ["r1", "00277977", 0.0, 71434240, false], ["r1", "00277978", 0.0, 71434240, false], ["r1", "00278072", 0.0, 201457664, false], ["r1", "00278074", 0.0, 67239936, false], ["r1", "00278075", 0.0, 201457664, false], ["r1", "00278076", 0.0, 67239936, false], ["r1", "00278265", 0.0, 71434240, false], ["r1", "00278266", 0.0, 71434240, false]], "verdict": "persistent", "snr": 20.68661850041998, "galaxy": false}, "spPlate-10459-58159.fits 841 8102.145 -1": {"frames": [["r2", "00262128", 4.49, 8978432, true], ["r2", "00262129", 1.35, 589824, true], ["r2", "00262130", -3.72, 34144256, true]], "verdict": "unclear", "snr": 20.66324342967805, "galaxy": false}, "spPlate-3648-55131.fits 420 5997.911 -1": {"frames": [["b1", "00102942", 0.0, 67108864, false], ["b1", "00102943", 0.0, 67108864, false], ["b1", "00102944", 0.0, 67108864, false], ["r1", "00102942", 0.0, 335544326, true], ["r1", "00102943", 0.54, 234881030, true], ["r1", "00102944", 6.274058761206385e+17, 100728838, true]], "verdict": "one exposure", "snr": 20.22456318322842, "galaxy": false}, "spPlate-5198-55823.fits 968 6085.552 -1": {"frames": [["b2", "00134011", 14.36, 0, true], ["b2", "00134032", 12.09, 0, true], ["b2", "00134033", 11.65, 0, true], ["b2", "00134034", 11.17, 0, true], ["r2", "00134011", 1.42, 0, true], ["r2", "00134032", 2.39, 0, true], ["r2", "00134033", 1.52, 0, true], ["r2", "00134034", -0.76, 33554432, true]], "verdict": "persistent", "snr": 18.856410287373716, "galaxy": false}, "spPlate-5852-56034.fits 453 8077.928 -1": {"frames": [["r1", "00142555", -113.63, 33554439, true], ["r1", "00142556", -47.61, 33554439, true], ["r1", "00142557", -87.26, 7, true]], "verdict": "unclear", "snr": 18.32307914546487, "galaxy": false}, "spPlate-9434-57712.fits 306 4316.184 -1": {"frames": [["b1", "00231877", 5.7, 0, true], ["b1", "00231878", 6.89, 0, true], ["b1", "00231879", 9.28, 0, true], ["b1", "00231880", 9.38, 0, true]], "verdict": "persistent", "snr": 17.91299405469073, "galaxy": false}, "spPlate-7513-56780.fits 267 4047.622 -1": {"frames": [["b1", "00179200", -1.09, 0, true], ["b1", "00179276", 6.29, 8388608, true], ["b1", "00179277", 6.64, 8388608, true], ["b1", "00179278", 5.82, 8388608, true], ["b1", "00179279", 8.35, 8388608, true], ["b1", "00179280", 8.22, 8388608, true]], "verdict": "persistent", "snr": 17.76598214150383, "galaxy": false}, "spPlate-10476-58141.fits 841 8212.966 -1": {"frames": [["r2", "00260449", -1.96, 589824, true], ["r2", "00260450", -2.39, 34144256, true], ["r2", "00260451", 6.39, 589824, true], ["r2", "00260452", 12.41, 589824, true], ["r2", "00260453", 1.95, 34144256, true]], "verdict": "persistent", "snr": 17.552674008652815, "galaxy": false}, "spPlate-3622-55123.fits 64 6010.353 -1": {"frames": [["b1", "00102524", 0.0, 67108864, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", -3.41, 67108870, true], ["r1", "00102525", -250702991.59, 100663302, true]], "verdict": "unclear", "snr": 17.407573170420314, "galaxy": true}, "spPlate-8792-57364.fits 119 7306.342 -1": {"frames": [["r1", "00209930", 4.61, 0, true], ["r1", "00209931", 6.84, 0, true], ["r1", "00209932", 5.92, 0, true], ["r1", "00209933", 5.71, 0, true], ["r1", "00209934", 6.77, 0, true], ["r1", "00209935", 5.72, 0, true], ["r1", "00209936", 4.11, 0, true], ["r1", "00209937", 8.55, 0, true]], "verdict": "persistent", "snr": 17.281823528634412, "galaxy": false}, "spPlate-11122-58437.fits 859 5642.869 -1": {"frames": [["b2", "00276442", 8.08, 0, true], ["b2", "00276443", 7.49, 0, true], ["b2", "00276444", 8.21, 0, true], ["b2", "00276445", 9.04, 0, true], ["r2", "00276442", 0.0, 71434240, false], ["r2", "00276443", 0.0, 71434240, false], ["r2", "00276444", 0.0, 71434240, false], ["r2", "00276445", 0.0, 71434240, false]], "verdict": "persistent", "snr": 16.91245588562308, "galaxy": false}, "spPlate-11076-58428.fits 900 4803.967 -1": {"frames": [["b2", "00275645", 7.44, 0, true], ["b2", "00275646", 8.44, 0, true], ["b2", "00275647", 5.97, 0, true], ["b2", "00275648", 5.86, 0, true]], "verdict": "persistent", "snr": 16.89723174105872, "galaxy": false}, "spPlate-7087-56637.fits 920 6534.314 -1": {"frames": [["b2", "00170854", 0.0, 71434240, false], ["b2", "00170855", 0.0, 71434240, false], ["b2", "00170856", 0.0, 71434240, false], ["b2", "00170857", 0.0, 71434240, false], ["b2", "00170858", 0.0, 71434240, false], ["r2", "00170854", 6.64, 8388608, true], ["r2", "00170855", 6.44, 8388608, true], ["r2", "00170856", 6.45, 8388608, true], ["r2", "00170857", 8.75, 8388608, true], ["r2", "00170858", 5.93, 8388608, true]], "verdict": "persistent", "snr": 16.837493972263907, "galaxy": false}, "spPlate-11121-58438.fits 859 5637.675 -1": {"frames": [["b2", "00276559", 6.23, 0, true], ["b2", "00276560", 9.13, 0, true], ["b2", "00276561", 10.36, 0, true], ["r2", "00276559", 0.0, 71434240, false], ["r2", "00276560", 0.0, 71434240, false], ["r2", "00276561", 0.0, 71434240, false]], "verdict": "persistent", "snr": 16.690916327180645, "galaxy": false}, "spPlate-4361-55831.fits 968 6081.350 -1": {"frames": [["b2", "00134454", 13.08, 0, true], ["b2", "00134455", 12.91, 0, true], ["b2", "00134456", 8.21, 0, true], ["b2", "00134526", 3.51, 33685504, true], ["b2", "00134527", 2.95, 33685504, true], ["r2", "00134454", 2.1, 0, true], ["r2", "00134455", -2.02, 34144256, true], ["r2", "00134456", 1.73, 0, true], ["r2", "00134526", 3.18, 0, true], ["r2", "00134527", -1.29, 0, true]], "verdict": "persistent", "snr": 16.610945172711773, "galaxy": false}, "spPlate-3622-55123.fits 64 5999.292 -1": {"frames": [["b1", "00102524", 0.0, 67108864, false], ["b1", "00102525", 0.0, 100663296, false], ["r1", "00102524", -1189.83, 67108870, true], ["r1", "00102525", 67345500669.87, 67960838, true]], "verdict": "one exposure", "snr": 16.520312407437807, "galaxy": true}, "spPlate-5718-56693.fits 262 4449.385 -1": {"frames": [["b1", "00173860", 3.76, 0, true], ["b1", "00173861", 3.89, 0, true], ["b1", "00173862", 4.94, 0, true], ["b1", "00173863", 2.3, 0, true], ["b1", "00173864", 3.21, 0, true], ["b1", "00173865", 3.95, 0, true], ["b1", "00173866", 4.93, 0, true], ["b1", "00174687", 6.62, 0, true], ["b1", "00174688", 4.66, 0, true], ["b1", "00174689", 4.31, 0, true], ["b1", "00174690", 5.24, 524288, true], ["b1", "00174691", 5.07, 0, true], ["b1", "00174692", 6.39, 0, true]], "verdict": "persistent", "snr": 16.44749679211623, "galaxy": false}, "spPlate-11316-58396.fits 262 4456.562 -1": {"frames": [["b1", "00273055", 7.49, 0, true], ["b1", "00273056", 3.96, 0, true], ["b1", "00273057", 6.25, 0, true], ["b1", "00273058", 6.51, 0, true], ["b1", "00273059", 7.85, 0, true]], "verdict": "persistent", "snr": 16.18785785639658, "galaxy": false}, "spPlate-5991-56076.fits 862 6698.846 -1": {"frames": [["b2", "00144477", 0.0, 83886080, false], ["b2", "00144478", 0.0, 83886080, false], ["b2", "00144479", 0.0, 83886080, false], ["b2", "00144480", 0.0, 83886080, false], ["b2", "00144481", 0.0, 83886080, false], ["b2", "00144482", 0.0, 83886080, false], ["r2", "00144477", 6.35, 0, true], ["r2", "00144478", 6.38, 0, true], ["r2", "00144479", 5.0, 0, true], ["r2", "00144480", 5.28, 0, true], ["r2", "00144481", 6.94, 0, true], ["r2", "00144482", 7.88, 0, true]], "verdict": "persistent", "snr": 16.107825833668777, "galaxy": false}, "spPlate-6481-56363.fits 720 5869.485 -1": {"frames": [["b2", "00157920", 11.2, 20, true], ["b2", "00157921", 9.92, 8388628, true], ["b2", "00157922", 11.37, 8388628, true], ["r2", "00157920", -1.72, 131072, true], ["r2", "00157921", -1.82, 131072, true], ["r2", "00157922", -1.41, 131072, true]], "verdict": "one camera", "snr": 15.434813012538482, "galaxy": true}, "spPlate-7748-58396.fits 877 9259.766 -1": {"frames": [["r2", "00273064", 2.58, 589824, true], ["r2", "00273065", 1.95, 589824, true], ["r2", "00273066", 1.37, 589824, true], ["r2", "00273067", 3.64, 589824, true]], "verdict": "persistent", "snr": 15.374481097379324, "galaxy": false}, "spPlate-5852-56034.fits 453 8137.669 -1": {"frames": [["r1", "00142555", 186.8, 7, true], ["r1", "00142556", 220.5, 33554439, true], ["r1", "00142557", 312.51, 33554439, true]], "verdict": "persistent", "snr": 15.241762734873495, "galaxy": false}, "spPlate-10723-58287.fits 841 8117.083 -1": {"frames": [["r2", "00271014", 4.52, 589824, true], ["r2", "00271015", 10.82, 589824, true], ["r2", "00271016", 8.36, 589824, true]], "verdict": "persistent", "snr": 15.140412641472828, "galaxy": false}, "spPlate-5851-56075.fits 460 6588.704 -1": {"frames": [["b1", "00144443", 0.0, 83886080, false], ["b1", "00144444", 0.0, 83886080, false], ["b1", "00144445", 0.0, 83886080, false], ["b1", "00144446", 0.0, 83886080, false], ["b1", "00144447", 0.0, 83886080, false], ["b1", "00144448", 0.0, 83886080, false], ["b1", "00144449", 0.0, 83886080, false], ["b1", "00144450", 0.0, 83886080, false], ["r1", "00144443", 5.41, 0, true], ["r1", "00144444", 5.57, 0, true], ["r1", "00144445", 5.59, 0, true], ["r1", "00144446", 5.45, 0, true], ["r1", "00144447", 5.5, 0, true], ["r1", "00144448", 4.95, 0, true], ["r1", "00144449", 5.06, 0, true], ["r1", "00144450", 5.23, 0, true]], "verdict": "persistent", "snr": 15.12743681350026, "galaxy": false}, "spPlate-5495-55896.fits 397 6581.123 -1": {"frames": [["b1", "00137233", 0.0, 83886080, false], ["b1", "00137234", 0.0, 83886080, false], ["b1", "00137235", 0.0, 83886080, false], ["b1", "00137236", 0.0, 83886080, false], ["b1", "00137237", 0.0, 83886080, false], ["r1", "00137233", 5.76, 8388608, true], ["r1", "00137234", 4.45, 0, true], ["r1", "00137235", 7.28, 8388608, true], ["r1", "00137236", 6.65, 8388608, true], ["r1", "00137237", 6.81, 8388608, true]], "verdict": "persistent", "snr": 15.111993552831626, "galaxy": false}, "spPlate-7340-58646.fits 103 6277.692 -1": {"frames": [["b1", "00291851", 1.49, 0, true], ["b1", "00291852", 2.22, 0, true], ["r1", "00291851", 11.15, 0, true], ["r1", "00291852", 7.2, 0, true]], "verdict": "persistent", "snr": 15.018435169406583, "galaxy": false}, "spPlate-7741-58078.fits 748 6378.227 -1": {"frames": [["b2", "00255026", 0.0, 71434240, false], ["b2", "00255027", 0.0, 71434240, false], ["b2", "00255028", 0.0, 71434240, false], ["b2", "00255029", 0.0, 71434240, false], ["b2", "00255030", 0.0, 71434240, false], ["b2", "00255031", 0.0, 71434240, false], ["b2", "00255032", 0.0, 71434240, false], ["b2", "00255033", 0.0, 71434240, false], ["r2", "00255026", 6.64, 0, true], ["r2", "00255027", 4.47, 0, true], ["r2", "00255028", 7.34, 0, true], ["r2", "00255029", 4.88, 0, true], ["r2", "00255030", 3.93, 0, true], ["r2", "00255031", 4.05, 0, true], ["r2", "00255032", 5.05, 0, true], ["r2", "00255033", 5.8, 0, true]], "verdict": "persistent", "snr": 15.000323692852135, "galaxy": false}, "spPlate-7145-56567.fits 458 5811.657 -1": {"frames": [["b1", "00167043", 1.06, 0, true], ["b1", "00167044", -0.87, 0, true], ["b1", "00167045", 0.62, 0, true], ["r1", "00167043", 210.47, 0, true], ["r1", "00167044", 118.2, 0, true], ["r1", "00167045", 64.46, 0, true]], "verdict": "one camera", "snr": 14.996899042493858, "galaxy": false}, "spPlate-9210-57656.fits 339 5467.641 -1": {"frames": [["b1", "00227876", 6.25, 0, true], ["b1", "00227877", 8.92, 0, true], ["b1", "00227878", 4.81, 0, true], ["b1", "00227967", 4.69, 0, true], ["b1", "00227968", 7.06, 0, true], ["b1", "00227969", 6.03, 0, true], ["b1", "00227970", 7.22, 0, true], ["r1", "00227876", 0.0, 71434240, false], ["r1", "00227877", 0.0, 71434240, false], ["r1", "00227878", 0.0, 71434240, false], ["r1", "00227967", 0.0, 71434240, false], ["r1", "00227968", 0.0, 71434240, false], ["r1", "00227969", 0.0, 71434240, false], ["r1", "00227970", 0.0, 71434240, false]], "verdict": "persistent", "snr": 14.9185855464145, "galaxy": false}, "spPlate-10458-58143.fits 877 9200.258 -1": {"frames": [["r2", "00260642", 1.64, 589824, true], ["r2", "00260643", 2.94, 589824, true], ["r2", "00260644", 3.16, 589824, true]], "verdict": "persistent", "snr": 14.72378403400439, "galaxy": false}, "spPlate-5879-56047.fits 148 6507.288 -1": {"frames": [["b1", "00143344", 0.0, 71434240, false], ["b1", "00143345", 0.0, 71434240, false], ["b1", "00143346", 0.0, 71434240, false], ["b1", "00143347", 0.0, 71434240, false], ["b1", "00143348", 0.0, 71434240, false], ["b1", "00143349", 0.0, 71434240, false], ["b1", "00143350", 0.0, 71434240, false], ["r1", "00143344", 6.15, 0, true], ["r1", "00143345", 4.62, 0, true], ["r1", "00143346", 4.93, 0, true], ["r1", "00143347", 6.6, 0, true], ["r1", "00143348", 4.68, 0, true], ["r1", "00143349", 1.59, 851968, true], ["r1", "00143350", 6.89, 0, true]], "verdict": "persistent", "snr": 14.567848185806715, "galaxy": false}, "spPlate-7691-57360.fits 127 5772.979 -1": {"frames": [["b1", "00209543", 1.3, 0, true], ["b1", "00209544", 1.56, 0, true], ["b1", "00209545", 1.69, 0, true], ["b1", "00209546", 2.46, 0, true], ["r1", "00209543", 1.24, 0, true], ["r1", "00209544", 6.93, 0, true], ["r1", "00209545", 1.76, 0, true], ["r1", "00209546", 1.48, 0, true]], "verdict": "unclear", "snr": 14.348385906797365, "galaxy": false}, "spPlate-6677-56385.fits 562 6387.045 -1": {"frames": [["b2", "00159416", 0.0, 71434240, false], ["b2", "00159417", 0.0, 71434240, false], ["b2", "00159418", 0.0, 71434240, false], ["r2", "00159416", 9.42, 0, true], ["r2", "00159417", 6.51, 0, true], ["r2", "00159418", 5.92, 0, true]], "verdict": "persistent", "snr": 14.22870931337191, "galaxy": false}, "spPlate-9395-58113.fits 358 8027.864 -1": {"frames": [["r1", "00257872", 7.1, 8388608, true], ["r1", "00257873", 7.62, 8388608, true], ["r1", "00257874", 6.01, 8388608, true], ["r1", "00257875", 6.67, 8388608, true], ["r1", "00257876", 5.55, 8388608, true]], "verdict": "persistent", "snr": 14.227617393084977, "galaxy": false}, "spPlate-8286-57062.fits 720 5955.250 -1": {"frames": [["b2", "00194353", 7.8, 20, true], ["b2", "00194354", 7.82, 20, true], ["b2", "00194355", 9.81, 20, true], ["b2", "00194356", 10.16, 20, true], ["b2", "00194357", 6.38, 20, true], ["r2", "00194353", 0.67, 0, true], ["r2", "00194354", 1.79, 0, true], ["r2", "00194355", 1.93, 0, true], ["r2", "00194356", 2.74, 0, true], ["r2", "00194357", -1.96, 0, true]], "verdict": "persistent", "snr": 14.191675037875365, "galaxy": false}, "spPlate-8201-58146.fits 841 8074.209 -1": {"frames": [["r2", "00260856", 2.44, 589824, true], ["r2", "00260857", 7.11, 589824, true], ["r2", "00260945", 2.95, 589824, true], ["r2", "00260946", 6.96, 589824, true]], "verdict": "persistent", "snr": 14.188305962826623, "galaxy": false}, "spPlate-4688-56008.fits 412 5780.960 -1": {"frames": [["b1", "00141481", 1.49, 67108864, true], ["b1", "00141482", 2.34, 67108864, true], ["b1", "00141483", 1.14, 67108864, true], ["r1", "00141481", 13.37, 335544320, true], ["r1", "00141482", 15.07, 67108864, true], ["r1", "00141483", -40.29, 201326592, true]], "verdict": "persistent", "snr": 13.879149006234956, "galaxy": false}, "spPlate-6478-56341.fits 570 7872.270 -1": {"frames": [["r2", "00156888", 4.91, 42074116, true], ["r2", "00156889", 9.04, 8519684, true], ["r2", "00156890", 8.38, 8519684, true], ["r2", "00156891", 7.45, 8519684, true], ["r2", "00156892", 7.21, 8519684, true]], "verdict": "persistent", "snr": 13.830434791565173, "galaxy": false}, "spPlate-3975-55321.fits 206 10244.718 -1": {"frames": [["r1", "00113957", 4.22, 0, true], ["r1", "00113958", 3.88, 0, true], ["r1", "00113959", 6.51, 0, true], ["r1", "00113960", 6.36, 0, true], ["r1", "00113961", 4.98, 0, true], ["r1", "00114446", 3.32, 0, true], ["r1", "00114518", 6.04, 0, true]], "verdict": "persistent", "snr": 13.784220176488171, "galaxy": false}, "spPlate-3536-55098.fits 306 7810.881 -1": {"frames": [["r1", "00101900", 0.0, 109182982, false], ["r1", "00101901", 0.0, 503447558, false], ["r1", "00101907", 0.0, 75628550, false]], "verdict": "no frame", "snr": 13.747315991212435, "galaxy": false}, "spPlate-11396-58490.fits 529 10244.718 -1": {"frames": [["r2", "00280295", 6.85, 589824, true], ["r2", "00280296", 10.41, 589824, true], ["r2", "00280297", 5.72, 589824, true], ["r2", "00280298", 16.69, 34144256, true], ["r2", "00280299", 16.49, 34144256, true]], "verdict": "persistent", "snr": 13.487604103739876, "galaxy": false}, "spPlate-6481-56363.fits 720 4048.555 -1": {"frames": [["b2", "00157920", 5.95, 8978452, true], ["b2", "00157921", 7.73, 8978452, true], ["b2", "00157922", 7.92, 8978452, true]], "verdict": "persistent", "snr": 13.475390600444719, "galaxy": true}, "spPlate-7111-56741.fits 646 6420.961 -1": {"frames": [["b2", "00177350", 0.0, 71434240, false], ["b2", "00177351", 0.0, 71434240, false], ["b2", "00177352", 0.0, 71434240, false], ["b2", "00177353", 0.0, 71434240, false], ["r2", "00177350", 6.41, 0, true], ["r2", "00177351", 6.47, 0, true], ["r2", "00177352", 6.33, 0, true], ["r2", "00177353", 6.31, 0, true]], "verdict": "persistent", "snr": 13.394683068730371, "galaxy": false}, "spPlate-7040-56574.fits 414 7883.154 -1": {"frames": [["r1", "00167660", 6.77, 0, true], ["r1", "00167661", 5.15, 0, true], ["r1", "00167662", 6.71, 0, true], ["r1", "00167663", 5.37, 8388608, true], ["r1", "00167664", 6.69, 8388608, true]], "verdict": "persistent", "snr": 13.38905817031198, "galaxy": false}, "spPlate-8286-57062.fits 720 5087.448 -1": {"frames": [["b2", "00194353", 9.61, 20, true], ["b2", "00194354", 6.81, 20, true], ["b2", "00194355", 8.68, 20, true], ["b2", "00194356", 8.3, 20, true], ["b2", "00194357", 6.4, 20, true]], "verdict": "persistent", "snr": 13.329938823090748, "galaxy": false}, "spPlate-6801-56487.fits 188 6593.257 -1": {"frames": [["b1", "00164464", 0.0, 83886080, false], ["b1", "00164465", 0.0, 83886080, false], ["b1", "00164466", 0.0, 83886080, false], ["b1", "00164467", 0.0, 83886080, false], ["b1", "00164468", 0.0, 83886080, false], ["b1", "00164469", 0.0, 83886080, false], ["b1", "00164814", 0.0, 83886096, false], ["b1", "00164815", 0.0, 83886096, false], ["r1", "00164464", 6.06, 0, true], ["r1", "00164465", 7.79, 0, true], ["r1", "00164466", 8.83, 0, true], ["r1", "00164467", 6.24, 0, true], ["r1", "00164468", 7.67, 0, true], ["r1", "00164469", 8.73, 0, true], ["r1", "00164814", 0.95, 0, true], ["r1", "00164815", -1.34, 0, true]], "verdict": "persistent", "snr": 13.231518137922318, "galaxy": false}, "spPlate-6481-56363.fits 720 5692.460 -1": {"frames": [["b2", "00157920", 9.06, 20, true], ["b2", "00157921", 9.63, 20, true], ["b2", "00157922", 7.78, 8388628, true], ["r2", "00157920", 0.0, 71434240, false], ["r2", "00157921", 0.0, 71434240, false], ["r2", "00157922", 0.0, 71434240, false]], "verdict": "persistent", "snr": 13.22523776729953, "galaxy": true}, "spPlate-7720-58101.fits 877 9128.512 -1": {"frames": [["r2", "00256973", 1.63, 589824, true], ["r2", "00256974", 2.87, 589824, true], ["r2", "00256975", 4.58, 589824, true]], "verdict": "persistent", "snr": 13.065231979191651, "galaxy": false}, "spPlate-4472-55893.fits 474 6534.314 -1": {"frames": [["b1", "00137022", 0.0, 71434240, false], ["b1", "00137023", 0.0, 71434240, false], ["b1", "00137024", 0.0, 71434240, false], ["b1", "00137025", 0.0, 71434240, false], ["b1", "00137026", 0.0, 71434240, false], ["b1", "00137027", 0.0, 71434240, false], ["r1", "00137022", 5.82, 8388608, true], ["r1", "00137023", 6.24, 8388608, true], ["r1", "00137024", 5.14, 8388608, true], ["r1", "00137025", 4.26, 8388608, true], ["r1", "00137026", 5.8, 8388608, true], ["r1", "00137027", 4.91, 8388608, true]], "verdict": "persistent", "snr": 13.031516040913173, "galaxy": false}, "spPlate-9143-57665.fits 146 5778.299 -1": {"frames": [["b1", "00228551", 2.33, 0, true], ["b1", "00228552", -2.33, 0, true], ["b1", "00228553", -1.52, 0, true], ["b1", "00228554", 0.95, 0, true], ["b1", "00228555", 3.18, 0, true], ["b1", "00228556", 1.63, 0, true], ["b1", "00228557", 2.22, 0, true], ["b1", "00228558", 1.29, 0, true], ["r1", "00228551", 92.12, 22, true], ["r1", "00228552", 87.75, 22, true], ["r1", "00228553", 93.44, 22, true], ["r1", "00228554", 96.13, 22, true], ["r1", "00228555", 46.33, 22, true], ["r1", "00228556", 49.9, 22, true], ["r1", "00228557", 73.69, 22, true], ["r1", "00228558", 156.53, 22, true]], "verdict": "persistent", "snr": 12.826966770225006, "galaxy": false}, "spPlate-9176-58080.fits 40 6466.957 -1": {"frames": [["b1", "00255217", 0.0, 71434240, false], ["b1", "00255218", 0.0, 71434240, false], ["b1", "00255219", 0.0, 71434240, false], ["b1", "00255220", 0.0, 71434240, false], ["b1", "00255221", 0.0, 71434240, false], ["r1", "00255217", 6.57, 8388608, true], ["r1", "00255218", 3.4, 851968, true], ["r1", "00255219", 6.87, 8388608, true], ["r1", "00255220", 5.44, 8388608, true], ["r1", "00255221", 5.65, 8388608, true]], "verdict": "persistent", "snr": 12.77493050681573, "galaxy": false}, "spPlate-10253-58487.fits 879 8517.262 -1": {"frames": [["r2", "00280083", -1.25, 589824, true], ["r2", "00280084", 1.95, 589824, true], ["r2", "00280085", -1.4, 8978432, true], ["r2", "00280086", 4.74, 589824, true]], "verdict": "unclear", "snr": 12.752116932451036, "galaxy": false}, "spPlate-10723-58287.fits 841 8089.096 -1": {"frames": [["r2", "00271014", 7.29, 589824, true], ["r2", "00271015", 10.27, 589824, true], ["r2", "00271016", 5.13, 8978432, true]], "verdict": "persistent", "snr": 12.724004993018907, "galaxy": false}, "spPlate-10251-58173.fits 661 6486.344 -1": {"frames": [["b2", "00263025", 0.0, 71434240, false], ["b2", "00263026", 0.0, 71434240, false], ["b2", "00263027", 0.0, 71434240, false], ["b2", "00263028", 0.0, 71434240, false], ["b2", "00263029", 0.0, 71434240, false], ["b2", "00263030", 0.0, 71434240, false], ["r2", "00263025", 3.08, 0, true], ["r2", "00263026", 5.5, 0, true], ["r2", "00263027", 7.56, 0, true], ["r2", "00263028", 4.69, 0, true], ["r2", "00263029", 5.1, 0, true], ["r2", "00263030", 1.83, 0, true]], "verdict": "persistent", "snr": 12.707576890331614, "galaxy": false}, "spPlate-6880-56543.fits 603 6889.695 -1": {"frames": [["b2", "00166007", 0.0, 83886080, false], ["b2", "00166008", 0.0, 83886080, false], ["b2", "00166009", 0.0, 83886080, false], ["b2", "00166010", 0.0, 83886080, false], ["r2", "00166007", 6.35, 0, true], ["r2", "00166008", 6.61, 0, true], ["r2", "00166009", 6.24, 0, true], ["r2", "00166010", 3.67, 0, true]], "verdict": "persistent", "snr": 12.6944908739569, "galaxy": false}, "spPlate-3838-55588.fits 110 3556.313 -1": {"frames": [["b1", "00125725", 7.23, 4, true], ["b1", "00125726", 3.84, 4, true], ["b1", "00125727", 7.22, 4, true], ["b1", "00125728", 6.03, 4, true], ["b1", "00125729", 6.69, 4, true], ["b1", "00125730", 3.6, 4, true], ["b1", "00125731", 7.5, 4, true], ["b1", "00125806", 0.57, 131076, false], ["b1", "00125807", -0.05, 131076, false], ["b1", "00125808", 0.01, 131076, false], ["b1", "00125809", 1.23, 131076, false], ["b1", "00125810", 0.65, 131076, false]], "verdict": "persistent", "snr": 12.47609439144725, "galaxy": false}, "spPlate-7339-58587.fits 419 5401.321 -1": {"frames": [["b1", "00287569", 3.05, 0, true], ["b1", "00287641", 8.35, 0, true], ["b1", "00287642", 6.55, 0, true], ["b1", "00287643", 7.04, 0, true], ["b1", "00287644", 3.3, 0, true], ["b1", "00287645", 5.24, 0, true], ["b1", "00287646", 5.05, 0, true], ["b1", "00287647", 4.89, 0, true], ["r1", "00287569", 0.0, 71434240, false], ["r1", "00287641", 0.0, 71434240, false], ["r1", "00287642", 0.0, 71434240, false], ["r1", "00287643", 0.0, 71434240, false], ["r1", "00287644", 0.0, 71434240, false], ["r1", "00287645", 0.0, 71434240, false], ["r1", "00287646", 0.0, 71434240, false], ["r1", "00287647", 0.0, 71434240, false]], "verdict": "persistent", "snr": 12.447328875775566, "galaxy": false}, "spPlate-8834-57458.fits 516 6555.412 -1": {"frames": [["b2", "00216790", 0.0, 71434240, false], ["b2", "00216791", 0.0, 71434240, false], ["b2", "00216792", 0.0, 71434240, false], ["b2", "00216793", 0.0, 71434240, false], ["b2", "00216794", 0.0, 71434240, false], ["b2", "00216795", 0.0, 71434240, false], ["b2", "00216796", 0.0, 71434240, false], ["b2", "00216797", 0.0, 71434240, false], ["r2", "00216790", 3.71, 8388608, true], ["r2", "00216791", 4.53, 8388608, true], ["r2", "00216792", 3.25, 8388608, true], ["r2", "00216793", 2.86, 8388608, true], ["r2", "00216794", 3.18, 8388608, true], ["r2", "00216795", 3.73, 8388608, true], ["r2", "00216796", 4.9, 8388608, true], ["r2", "00216797", 2.87, 8388608, true]], "verdict": "persistent", "snr": 12.39051073198191, "galaxy": false}, "spPlate-9205-57711.fits 293 5036.166 -1": {"frames": [["b1", "00230852", 5.21, 0, true], ["b1", "00230853", 5.34, 0, true], ["b1", "00230854", 2.34, 0, true], ["b1", "00230855", 4.31, 0, true], ["b1", "00231625", 4.01, 0, true], ["b1", "00231626", 2.32, 0, true], ["b1", "00231627", 2.2, 0, true], ["b1", "00231628", 5.71, 0, true], ["b1", "00231629", 4.5, 0, true], ["b1", "00231760", 3.93, 0, true], ["b1", "00231761", 1.52, 0, true]], "verdict": "persistent", "snr": 12.367053793484766, "galaxy": false}, "spPlate-7338-58174.fits 399 5930.619 -1": {"frames": [["b1", "00263035", 5.77, 0, true], ["b1", "00263036", 5.75, 0, true], ["b1", "00263037", 6.27, 0, true], ["b1", "00263119", 9.75, 33554432, true], ["b1", "00263120", 9.63, 33554432, true], ["b1", "00263121", 8.28, 33554432, true], ["b1", "00263122", 8.61, 0, true], ["b1", "00263123", 7.13, 33554432, true], ["b1", "00263124", 8.92, 0, true], ["b1", "00263125", 7.34, 0, true], ["r1", "00263035", 2.78, 0, true], ["r1", "00263036", 0.87, 0, true], ["r1", "00263037", -0.88, 0, true], ["r1", "00263119", -1.59, 0, true], ["r1", "00263120", 1.42, 0, true], ["r1", "00263121", -0.39, 0, true], ["r1", "00263122", 1.34, 0, true], ["r1", "00263123", 1.76, 0, true], ["r1", "00263124", -0.84, 0, true], ["r1", "00263125", 0.54, 0, true]], "verdict": "persistent", "snr": 12.325517941236718, "galaxy": false}, "spPlate-7291-56992.fits 24 6309.573 -1": {"frames": [["b1", "00190322", 0.0, 201326592, false], ["b1", "00190323", -3.18, 201326592, false], ["b1", "00190324", 0.0, 201326592, false], ["b1", "00190325", 0.0, 201326592, false], ["r1", "00190322", 5.48, 8388608, true], ["r1", "00190323", 5.89, 8388608, true], ["r1", "00190324", 5.91, 8388608, true], ["r1", "00190325", 5.72, 8388608, true]], "verdict": "persistent", "snr": 12.298154214885109, "galaxy": false}, "spPlate-8819-57450.fits 876 8145.167 -1": {"frames": [["r2", "00216241", 2.15, 589824, true], ["r2", "00216242", 3.3, 589824, true], ["r2", "00216243", -2.57, 589824, true], ["r2", "00216244", 4.96, 589824, true], ["r2", "00216245", 4.14, 589824, true]], "verdict": "persistent", "snr": 12.270382607855376, "galaxy": false}, "spPlate-10238-58155.fits 877 9358.365 -1": {"frames": [["r2", "00261715", 3.35, 589824, true], ["r2", "00261716", 2.99, 589824, true], ["r2", "00261717", 3.18, 589824, true]], "verdict": "persistent", "snr": 12.205271067036737, "galaxy": false}, "spPlate-11040-58456.fits 878 8531.001 -1": {"frames": [["r2", "00278256", 2.44, 589824, true], ["r2", "00278257", 2.51, 589824, true], ["r2", "00278258", 2.74, 589824, true], ["r2", "00278259", -2.04, 589824, true]], "verdict": "persistent", "snr": 12.201661026534012, "galaxy": false}, "spPlate-10265-58512.fits 878 9431.918 -1": {"frames": [["r2", "00282302", 5.14, 589824, true], ["r2", "00282303", 3.71, 589824, true], ["r2", "00282304", 4.49, 589824, true], ["r2", "00282305", 4.91, 589824, true]], "verdict": "persistent", "snr": 12.176670414642022, "galaxy": false}, "spPlate-7136-56570.fits 193 4048.555 -1": {"frames": [["b1", "00167303", 4.28, 8388608, true], ["b1", "00167304", 4.48, 8388608, true], ["b1", "00167305", 3.96, 0, true], ["b1", "00167306", 4.69, 8388608, true], ["b1", "00167307", 3.49, 8388608, true], ["b1", "00167308", 6.19, 8388608, true]], "verdict": "persistent", "snr": 12.16297480474541, "galaxy": false}, "spPlate-3832-55289.fits 214 6534.314 -1": {"frames": [["b1", "00112595", 0.0, 71434240, false], ["b1", "00112596", 0.0, 71434240, false], ["b1", "00112597", 0.0, 71434240, false], ["b1", "00112598", 0.0, 71434240, false], ["b1", "00112599", 0.0, 71434240, false], ["b1", "00112600", 0.0, 71434240, false], ["b1", "00112601", 0.0, 71434240, false], ["b1", "00112602", 0.0, 71434240, false], ["b1", "00112603", 0.0, 71434240, false], ["r1", "00112595", 3.25, 8388608, true], ["r1", "00112596", 4.22, 8388608, true], ["r1", "00112597", 1.52, 8388608, true], ["r1", "00112598", 4.53, 8388608, true], ["r1", "00112599", 2.33, 8388608, true], ["r1", "00112600", 5.47, 8388608, true], ["r1", "00112601", 3.98, 8388608, true], ["r1", "00112602", 4.39, 8388608, true], ["r1", "00112603", 3.84, 8388608, true]], "verdict": "persistent", "snr": 12.097225497020265, "galaxy": false}, "spPlate-10476-58141.fits 841 8243.279 -1": {"frames": [["r2", "00260449", 2.9, 589824, true], ["r2", "00260450", 8.26, 589824, true], ["r2", "00260451", 3.95, 589824, true], ["r2", "00260452", 6.5, 34144256, true], ["r2", "00260453", -4.81, 589824, true]], "verdict": "persistent", "snr": 12.01626489247288, "galaxy": false}, "spPlate-11096-58485.fits 879 8820.638 -1": {"frames": [["r2", "00279897", -1.4, 589824, true], ["r2", "00279898", 3.22, 589824, true], ["r2", "00279899", 2.71, 589824, true], ["r2", "00279900", 2.75, 589824, true]], "verdict": "persistent", "snr": 11.99745894158567, "galaxy": true}, "spPlate-7338-58127.fits 399 5930.619 -1": {"frames": [["b1", "00259089", 13.68, 33554432, true], ["b1", "00259090", 9.92, 33554432, true], ["b1", "00259091", 12.45, 33554432, true], ["b1", "00259092", 14.06, 33554432, true], ["b1", "00259093", 7.69, 33554432, true], ["b1", "00259164", 10.11, 33554432, true], ["b1", "00259165", 4.27, 0, true], ["b1", "00259166", 5.99, 33554432, true], ["b1", "00259167", 7.22, 0, true], ["b1", "00259168", 8.4, 0, true], ["b1", "00259169", 7.14, 0, true], ["r1", "00259089", 2.25, 0, true], ["r1", "00259090", 2.68, 0, true], ["r1", "00259091", 2.92, 0, true], ["r1", "00259092", 2.74, 0, true], ["r1", "00259093", 1.59, 0, true], ["r1", "00259164", 3.09, 0, true], ["r1", "00259165", 2.36, 0, true], ["r1", "00259166", 1.33, 0, true], ["r1", "00259167", -1.39, 0, true], ["r1", "00259168", 2.31, 0, true], ["r1", "00259169", 0.78, 0, true]], "verdict": "persistent", "snr": 11.948952915605767, "galaxy": false}, "spPlate-4236-55479.fits 928 7497.216 -1": {"frames": [["r2", "00120275", 3.89, 0, true], ["r2", "00120276", 5.02, 0, true], ["r2", "00120277", 4.06, 0, true], ["r2", "00120278", 4.55, 0, true], ["r2", "00120279", 4.17, 0, true], ["r2", "00120282", 5.23, 0, true], ["r2", "00120283", 3.04, 0, true]], "verdict": "persistent", "snr": 11.898240373833689, "galaxy": false}, "spPlate-6478-56341.fits 570 7810.881 -1": {"frames": [["r2", "00156888", 6.39, 8519684, true], ["r2", "00156889", -3.32, 131076, true], ["r2", "00156890", -3.54, 131076, true], ["r2", "00156891", 5.92, 8519684, true], ["r2", "00156892", 6.14, 8519684, true]], "verdict": "persistent", "snr": 11.885445435163211, "galaxy": false}, "spPlate-7853-56988.fits 615 6556.922 -1": {"frames": [["b2", "00189969", 0.0, 71434240, false], ["b2", "00189970", 0.0, 71434240, false], ["b2", "00189971", 0.0, 71434240, false], ["b2", "00189972", 0.0, 71434240, false], ["b2", "00189973", 0.0, 71434240, false], ["b2", "00189974", 0.0, 71434240, false], ["r2", "00189969", 5.32, 0, true], ["r2", "00189970", 4.65, 8388608, true], ["r2", "00189971", 5.91, 8388608, true], ["r2", "00189972", 5.01, 0, true], ["r2", "00189973", 4.13, 8388608, true], ["r2", "00189974", 3.12, 8388608, true]], "verdict": "persistent", "snr": 11.828815835806589, "galaxy": false}, "spPlate-11304-58448.fits 418 5417.513 -1": {"frames": [["b1", "00277597", 7.69, 0, true], ["b1", "00277598", 8.44, 0, true], ["b1", "00277599", 3.12, 0, true], ["b1", "00277600", 3.07, 524288, true], ["b1", "00277601", 4.67, 0, true], ["r1", "00277597", 0.0, 71434240, false], ["r1", "00277598", 0.0, 71434240, false], ["r1", "00277599", 0.0, 71434240, false], ["r1", "00277600", 0.0, 71434240, false], ["r1", "00277601", 0.0, 71434240, false]], "verdict": "persistent", "snr": 11.77942553839514, "galaxy": false}, "spPlate-7876-57002.fits 44 9862.795 -1": {"frames": [["r1", "00190809", -0.73, 0, true], ["r1", "00190810", 1.88, 524288, true], ["r1", "00190811", -1.28, 0, true], ["r1", "00190812", 2.58, 0, true]], "verdict": "unclear", "snr": 11.77244015617622, "galaxy": false}, "spPlate-6063-56077.fits 378 7040.443 -1": {"frames": [["b1", "00144525", 0.0, 83886080, false], ["b1", "00144526", 0.0, 83886080, false], ["r1", "00144525", 13.33, 524288, true], ["r1", "00144526", 1.66, 0, true]], "verdict": "one exposure", "snr": 11.747111292525807, "galaxy": false}, "spPlate-9205-57711.fits 435 5628.595 -1": {"frames": [["b1", "00230852", 2.27, 0, true], ["b1", "00230853", -1.25, 0, true], ["b1", "00230854", 1.31, 0, true], ["b1", "00230855", 1.28, 0, true], ["b1", "00231625", 4.12, 0, true], ["b1", "00231626", 3.09, 524288, true], ["b1", "00231627", 1.92, 0, true], ["b1", "00231628", 3.16, 0, true], ["b1", "00231629", 2.36, 524288, true], ["b1", "00231760", 7.73, 0, true], ["b1", "00231761", 7.78, 0, true], ["r1", "00230852", 0.0, 71434240, false], ["r1", "00230853", 0.0, 71434240, false], ["r1", "00230854", 0.0, 71434240, false], ["r1", "00230855", 0.0, 71434240, false], ["r1", "00231625", 0.0, 71434240, false], ["r1", "00231626", 0.0, 71434240, false], ["r1", "00231627", 0.0, 71434240, false], ["r1", "00231628", 0.0, 71434240, false], ["r1", "00231629", 0.0, 71434240, false], ["r1", "00231760", 0.0, 71434240, false], ["r1", "00231761", 0.0, 71434240, false]], "verdict": "persistent", "snr": 11.718525107481328, "galaxy": false}, "spPlate-7693-57361.fits 666 6332.862 -1": {"frames": [["b2", "00209606", 2.86, 0, true], ["b2", "00209607", -1.09, 0, true], ["b2", "00209608", -1.33, 0, true], ["b2", "00209609", 1.95, 0, true], ["r2", "00209606", 3.36, 0, true], ["r2", "00209607", 5.41, 8388608, true], ["r2", "00209608", 5.7, 8388608, true], ["r2", "00209609", 8.28, 8388608, true]], "verdict": "persistent", "snr": 11.711448592603285, "galaxy": false}, "spPlate-8191-57390.fits 876 8173.348 -1": {"frames": [["r2", "00211569", 1.06, 589824, true], ["r2", "00211570", -2.35, 589824, true], ["r2", "00211571", -0.74, 851968, true], ["r2", "00211572", 3.09, 589824, true]], "verdict": "unclear", "snr": 11.668077391820619, "galaxy": false}, "spPlate-7246-56625.fits 978 6412.096 -1": {"frames": [["b2", "00169305", 0.0, 71434240, false], ["b2", "00169306", 0.0, 71434240, false], ["b2", "00169307", 0.0, 71434240, false], ["b2", "00169308", 0.0, 71434240, false], ["b2", "00170046", 0.0, 71434240, false], ["b2", "00170047", 0.0, 71434240, false], ["b2", "00170048", 0.0, 71434240, false], ["b2", "00170049", 0.0, 71434240, false], ["r2", "00169305", 4.79, 0, true], ["r2", "00169306", 5.88, 0, true], ["r2", "00169307", 8.88, 0, true], ["r2", "00169308", 5.27, 0, true], ["r2", "00170046", -2.44, 0, true], ["r2", "00170047", 1.62, 0, true], ["r2", "00170048", 1.85, 0, true], ["r2", "00170049", 1.72, 0, true]], "verdict": "persistent", "snr": 11.650090117070974, "galaxy": false}, "spPlate-8363-58140.fits 884 10104.155 -1": {"frames": [["r2", "00260330", 5.96, 8912896, true], ["r2", "00260331", 8.78, 8912896, true], ["r2", "00260332", 7.25, 8912896, true], ["r2", "00260333", 7.76, 8912896, true], ["r2", "00260334", 6.34, 8912896, true], ["r2", "00260335", 6.97, 8912896, true]], "verdict": "persistent", "snr": 11.649986292456665, "galaxy": false}, "spPlate-8870-57779.fits 442 4983.105 -1": {"frames": [["b1", "00235921", 2.04, 0, true], ["b1", "00235922", 1.86, 0, true], ["b1", "00236045", 5.26, 0, true], ["b1", "00236046", 3.02, 0, true], ["b1", "00236047", 5.4, 0, true], ["b1", "00236048", 4.54, 0, true], ["b1", "00236049", 5.57, 0, true]], "verdict": "persistent", "snr": 11.521461318620279, "galaxy": false}, "spPlate-9161-57691.fits 427 5383.937 -1": {"frames": [["b1", "00230393", 3.39, 0, true], ["b1", "00230394", 4.88, 0, true], ["b1", "00230395", 3.8, 0, true], ["b1", "00230396", 3.57, 0, true], ["b1", "00230397", 3.82, 0, true], ["b1", "00230398", 3.18, 0, true], ["b1", "00230486", 4.1, 0, true], ["b1", "00230487", 2.37, 0, true], ["b1", "00230488", 3.23, 0, true], ["b1", "00230489", 3.23, 0, true], ["b1", "00230634", 3.31, 0, true], ["b1", "00230635", 4.08, 0, true], ["b1", "00230636", 2.6, 0, true], ["r1", "00230393", 0.0, 71434240, false], ["r1", "00230394", 0.0, 71434240, false], ["r1", "00230395", 0.0, 71434240, false], ["r1", "00230396", 0.0, 71434240, false], ["r1", "00230397", 0.0, 71434240, false], ["r1", "00230398", 0.0, 71434240, false], ["r1", "00230486", 0.0, 71434240, false], ["r1", "00230487", 0.0, 71434240, false], ["r1", "00230488", 0.0, 71434240, false], ["r1", "00230489", 0.0, 71434240, false], ["r1", "00230634", 0.0, 71434240, false], ["r1", "00230635", 0.0, 71434240, false], ["r1", "00230636", 0.0, 71434240, false]], "verdict": "persistent", "snr": 11.518251089408473, "galaxy": false}, "spPlate-11096-58485.fits 879 8737.758 -1": {"frames": [["r2", "00279897", 1.54, 589824, true], ["r2", "00279898", 1.77, 589824, true], ["r2", "00279899", 4.47, 589824, true], ["r2", "00279900", 1.34, 589824, true]], "verdict": "unclear", "snr": 11.46645058466124, "galaxy": true}, "spPlate-7338-58127.fits 425 5367.845 -1": {"frames": [["b1", "00259089", 2.7, 0, true], ["b1", "00259090", 4.59, 0, true], ["b1", "00259091", 4.55, 0, true], ["b1", "00259092", 3.91, 0, true], ["b1", "00259093", 4.11, 0, true], ["b1", "00259164", 2.49, 0, true], ["b1", "00259165", 2.54, 0, true], ["b1", "00259166", 1.57, 0, true], ["b1", "00259167", 3.09, 0, true], ["b1", "00259168", 3.51, 0, true], ["b1", "00259169", 3.49, 0, true], ["r1", "00259089", 0.0, 71434240, false], ["r1", "00259090", 0.0, 71434240, false], ["r1", "00259091", 0.0, 71434240, false], ["r1", "00259092", 0.0, 71434240, false], ["r1", "00259093", 0.0, 71434240, false], ["r1", "00259164", 0.0, 71434240, false], ["r1", "00259165", 0.0, 71434240, false], ["r1", "00259166", 0.0, 71434240, false], ["r1", "00259167", 0.0, 71434240, false], ["r1", "00259168", 0.0, 71434240, false], ["r1", "00259169", 0.0, 71434240, false]], "verdict": "persistent", "snr": 11.387118129838555, "galaxy": false}, "spPlate-10240-58158.fits 877 8968.091 -1": {"frames": [["r2", "00262002", 4.57, 589824, true], ["r2", "00262003", 2.01, 589824, true], ["r2", "00262004", 1.53, 589824, true]], "verdict": "unclear", "snr": 11.322011289316483, "galaxy": true}, "spPlate-8819-57450.fits 876 8361.804 -1": {"frames": [["r2", "00216241", 2.33, 8978432, true], ["r2", "00216242", 0.88, 589824, true], ["r2", "00216243", -26.12, 851968, true], ["r2", "00216244", 3.03, 589824, true], ["r2", "00216245", 2.14, 589824, true]], "verdict": "unclear", "snr": 11.319430916453168, "galaxy": false}, "spPlate-3615-55856.fits 358 6564.475 -1": {"frames": [["b1", "00135254", 0.0, 83886080, false], ["b1", "00135255", 0.0, 83886080, false], ["b1", "00135256", 0.0, 83886080, false], ["b1", "00135257", 0.0, 83886080, false], ["r1", "00135254", 5.37, 0, true], ["r1", "00135255", 3.73, 0, true], ["r1", "00135256", 4.93, 0, true], ["r1", "00135257", 5.97, 0, true]], "verdict": "persistent", "snr": 11.254943355780823, "galaxy": false}, "spPlate-7030-56448.fits 618 4048.555 -1": {"frames": [["b2", "00162786", 4.02, 8388608, true], ["b2", "00162787", 4.75, 8388608, true], ["b2", "00162788", 6.62, 8388608, true]], "verdict": "persistent", "snr": 11.211950582888772, "galaxy": false}, "spPlate-10262-58543.fits 18 6556.922 -1": {"frames": [["b1", "00284421", 0.0, 83886080, false], ["b1", "00284422", 0.0, 83886080, false], ["b1", "00284423", 0.0, 83886080, false], ["b1", "00284424", 0.0, 83886080, false], ["b1", "00284425", 0.0, 83886080, false], ["r1", "00284421", 4.41, 8388608, true], ["r1", "00284422", 3.82, 8388608, true], ["r1", "00284423", 4.15, 8388608, true], ["r1", "00284424", 5.6, 8388608, true], ["r1", "00284425", 3.85, 0, true]], "verdict": "persistent", "snr": 11.141487645600956, "galaxy": false}, "spPlate-11293-58462.fits 842 8048.223 -1": {"frames": [["r2", "00278340", 2075.88, 589824, true], ["r2", "00278346", -2.83272511832735e+16, 589824, true], ["r2", "00278587", 79.91, 8978432, true], ["r2", "00278588", 3646.21, 589824, true], ["r2", "00278589", 1.2845127237083542e+16, 8978432, true], ["r2", "00278590", 2186206410616398.2, 34144256, true]], "verdict": "one exposure", "snr": 11.089687589163733, "galaxy": false}, "spPlate-7297-57040.fits 407 5688.529 -1": {"frames": [["b1", "00192933", 3.74, 0, true], ["b1", "00192934", 4.37, 524288, true], ["b1", "00192935", 5.58, 0, true], ["b1", "00192936", 7.33, 0, true], ["b1", "00192937", 4.33, 0, true], ["b1", "00192938", 4.96, 0, true], ["r1", "00192933", 0.0, 71434240, false], ["r1", "00192934", 0.0, 71434240, false], ["r1", "00192935", 0.0, 71434240, false], ["r1", "00192936", 0.0, 71434240, false], ["r1", "00192937", 0.0, 71434240, false], ["r1", "00192938", 0.0, 71434240, false]], "verdict": "persistent", "snr": 11.082524593047738, "galaxy": false}, "spPlate-8758-58139.fits 878 8150.796 -1": {"frames": [["r2", "00260247", -1.74, 589824, true], ["r2", "00260248", 1.43, 589824, true], ["r2", "00260249", -1.18, 589824, true], ["r2", "00260250", 1.65, 589824, true], ["r2", "00260251", 2.98, 589824, true], ["r2", "00260252", 1.79, 589824, true]], "verdict": "unclear", "snr": 11.048628654303918, "galaxy": false}, "spPlate-7412-57107.fits 460 6384.105 -1": {"frames": [["b1", "00197291", 0.0, 71434240, false], ["r1", "00197291", 8.51, 524288, true]], "verdict": "one frame", "snr": 10.810149039723584, "galaxy": false}, "spPlate-9343-57715.fits 546 6510.285 -1": {"frames": [["b2", "00232068", 0.0, 71434240, false], ["b2", "00232069", 0.0, 71434240, false], ["b2", "00232070", 0.0, 71434240, false], ["b2", "00232071", 0.0, 71434240, false], ["r2", "00232068", 4.24, 0, true], ["r2", "00232069", 5.41, 0, true], ["r2", "00232070", 5.22, 0, true], ["r2", "00232071", 4.55, 0, true]], "verdict": "persistent", "snr": 10.775342534452134, "galaxy": false}, "spPlate-9318-58068.fits 305 5508.077 -1": {"frames": [["b1", "00254086", 2.36, 0, true], ["b1", "00254087", 3.81, 0, true], ["b1", "00254088", 4.91, 0, true], ["b1", "00254089", 8.45, 0, true], ["b1", "00254090", 3.88, 0, true], ["r1", "00254086", 0.0, 71434240, false], ["r1", "00254087", 0.0, 71434240, false], ["r1", "00254088", 0.0, 71499776, false], ["r1", "00254089", 0.0, 71434240, false], ["r1", "00254090", 0.0, 71434240, false]], "verdict": "persistent", "snr": 10.728728395472247, "galaxy": false}, "spPlate-8207-57431.fits 876 8241.381 -1": {"frames": [["r2", "00214708", 4.19, 589840, true], ["r2", "00214709", 5.19, 589840, true], ["r2", "00214710", -1.62, 589840, true]], "verdict": "persistent", "snr": 10.712083916249545, "galaxy": false}, "spPlate-7876-57002.fits 44 9906.038 -1": {"frames": [["r1", "00190809", 2.03, 0, true], ["r1", "00190810", 2.08, 0, true], ["r1", "00190811", 2.03, 524288, true], ["r1", "00190812", 1.86, 0, true]], "verdict": "unclear", "snr": 10.680078107351672, "galaxy": false}, "spPlate-11125-58433.fits 878 8273.704 -1": {"frames": [["r2", "00276075", -2.1, 589824, true], ["r2", "00276078", -1.2, 8978432, true], ["r2", "00276079", 3.66, 589824, true], ["r2", "00276080", -1.94, 589824, true], ["r2", "00276082", 1.34, 589824, true], ["r2", "00276083", -1.69, 589824, true]], "verdict": "unclear", "snr": 10.624212269233196, "galaxy": false}, "spPlate-8421-58223.fits 128 6237.348 -1": {"frames": [["b1", "00266716", -1.62, 34144256, true], ["b1", "00266717", 1.98, 0, true], ["b1", "00266718", 1.01, 0, true], ["r1", "00266716", 8.02, 8388608, true], ["r1", "00266717", 5.72, 8388608, true], ["r1", "00266718", 5.97, 8388608, true]], "verdict": "one camera", "snr": 10.613852138534714, "galaxy": false}, "spPlate-7340-58289.fits 393 4948.801 -1": {"frames": [["b1", "00271138", 3.48, 0, true], ["b1", "00271139", 3.4, 0, true], ["b1", "00271140", 2.38, 0, true], ["b1", "00271141", 1.04, 0, true], ["b1", "00271142", 5.81, 0, true], ["b1", "00271143", 3.34, 0, true], ["b1", "00271144", 3.01, 0, true], ["b1", "00271145", 2.4, 0, true], ["b1", "00271146", 2.55, 0, true], ["b1", "00271147", 4.32, 0, true]], "verdict": "persistent", "snr": 10.580721414196848, "galaxy": false}, "spPlate-9626-57875.fits 445 5126.253 -1": {"frames": [["b1", "00243158", 3.95, 0, true], ["b1", "00243159", 3.54, 0, true], ["b1", "00243160", 4.86, 0, true], ["b1", "00243161", 5.09, 0, true], ["b1", "00243162", 3.61, 0, true]], "verdict": "persistent", "snr": 10.552521415825682, "galaxy": false}, "spPlate-10000-58141.fits 444 4376.229 -1": {"frames": [["b1", "00260257", 1.15, 0, true], ["b1", "00260258", -0.61, 0, true], ["b1", "00260312", 5.64, 0, true], ["b1", "00260313", 3.37, 0, true], ["b1", "00260314", 5.17, 0, true], ["b1", "00260315", 2.79, 0, true], ["b1", "00260316", 3.55, 0, true], ["b1", "00260317", 3.26, 0, true], ["b1", "00260404", 3.53, 0, true], ["b1", "00260405", 3.04, 0, true], ["b1", "00260406", 2.79, 0, true], ["b1", "00260407", 3.31, 0, true]], "verdict": "persistent", "snr": 10.547970755868402, "galaxy": false}, "spPlate-9237-58022.fits 31 6510.285 -1": {"frames": [["b1", "00250370", 0.0, 71434240, false], ["b1", "00250371", 0.0, 71434240, false], ["b1", "00250372", 0.0, 71434240, false], ["b1", "00250373", 0.0, 71434240, false], ["b1", "00250374", 0.0, 71434240, false], ["r1", "00250370", 5.28, 0, true], ["r1", "00250371", 5.49, 0, true], ["r1", "00250372", 3.38, 0, true], ["r1", "00250373", 4.95, 0, true], ["r1", "00250374", 7.13, 0, true]], "verdict": "persistent", "snr": 10.527726675939872, "galaxy": false}, "spPlate-10267-58223.fits 634 6446.144 -1": {"frames": [["b2", "00266666", 0.0, 71434240, false], ["b2", "00266667", 0.0, 71434240, false], ["b2", "00266668", 0.0, 71434240, false], ["r2", "00266666", 5.42, 0, true], ["r2", "00266667", 6.09, 0, true], ["r2", "00266668", 2.82, 0, true]], "verdict": "persistent", "snr": 10.484737859203106, "galaxy": false}, "spPlate-11079-58485.fits 350 6387.045 -1": {"frames": [["b1", "00278864", 0.0, 71434240, false], ["b1", "00278865", 0.0, 71434240, false], ["b1", "00278866", 0.0, 71434240, false], ["b1", "00278867", 0.0, 71434240, false], ["b1", "00278868", 0.0, 71434240, false], ["b1", "00278869", 0.0, 71434240, false], ["b1", "00278870", 0.0, 71434240, false], ["b1", "00279873", 0.0, 71434240, false], ["b1", "00279874", 0.0, 71434240, false], ["b1", "00279875", 0.0, 71434240, false], ["r1", "00278864", 4.55, 0, true], ["r1", "00278865", 4.89, 0, true], ["r1", "00278866", 4.04, 0, true], ["r1", "00278867", 4.36, 0, true], ["r1", "00278868", 5.33, 0, true], ["r1", "00278869", 4.28, 0, true], ["r1", "00278870", 4.36, 0, true], ["r1", "00279873", 1.23, 0, true], ["r1", "00279874", 1.35, 0, true], ["r1", "00279875", 0.78, 0, true]], "verdict": "persistent", "snr": 10.44016274304692, "galaxy": false}, "spPlate-6478-56341.fits 570 7782.157 -1": {"frames": [["r2", "00156888", 3.2, 8519684, true], ["r2", "00156889", 6.45, 8519684, true], ["r2", "00156890", 5.92, 8519684, true], ["r2", "00156891", 4.42, 8519684, true], ["r2", "00156892", 7.01, 131076, true]], "verdict": "persistent", "snr": 10.43976586439812, "galaxy": false}, "spPlate-10272-58172.fits 425 5051.263 -1": {"frames": [["b1", "00262928", 2.99, 0, true], ["b1", "00262929", 2.53, 0, true], ["b1", "00262930", 4.89, 0, true], ["b1", "00262931", 6.14, 0, true], ["b1", "00262932", 3.62, 0, true], ["b1", "00262933", -2.34, 0, true], ["b1", "00262934", 2.11, 0, true]], "verdict": "persistent", "snr": 10.4270196142219, "galaxy": false}, "spPlate-8222-57431.fits 876 9113.811 -1": {"frames": [["r2", "00214700", -1.2, 589826, true], ["r2", "00214701", 1.16, 589826, true], ["r2", "00214702", -1.69, 589826, true], ["r2", "00214703", 4.98, 589826, true]], "verdict": "unclear", "snr": 10.41853546336007, "galaxy": false}, "spPlate-6661-56366.fits 428 6555.412 -1": {"frames": [["b1", "00158171", 0.0, 71434240, false], ["b1", "00158172", 0.0, 71434240, false], ["b1", "00158173", 0.0, 71434240, false], ["b1", "00158174", 0.0, 71434240, false], ["r1", "00158171", 6.02, 8388608, true], ["r1", "00158172", 3.03, 8388608, true], ["r1", "00158173", 5.05, 8388608, true], ["r1", "00158174", 5.19, 8388608, true]], "verdict": "persistent", "snr": 10.341281204227977, "galaxy": false}, "spPlate-11096-58485.fits 879 8861.352 -1": {"frames": [["r2", "00279897", 3.34, 589824, true], ["r2", "00279898", -1.95, 589824, true], ["r2", "00279899", 3.84, 589824, true], ["r2", "00279900", 2.05, 589824, true]], "verdict": "persistent", "snr": 10.33447017547462, "galaxy": true}, "spPlate-4346-56209.fits 288 6480.373 -1": {"frames": [["b1", "00148542", 0.0, 71434240, false], ["b1", "00148543", 0.0, 71434240, false], ["b1", "00148544", 0.0, 71434240, false], ["b1", "00148545", 0.0, 71434240, false], ["r1", "00148542", 4.81, 0, true], ["r1", "00148543", 5.61, 0, true], ["r1", "00148544", 4.05, 0, true], ["r1", "00148545", 5.68, 0, true]], "verdict": "persistent", "snr": 10.329579379609592, "galaxy": false}, "spPlate-7876-57002.fits 44 10053.100 -1": {"frames": [["r1", "00190809", 1.21, 0, true], ["r1", "00190810", 0.44, 0, true], ["r1", "00190811", -0.8, 0, true], ["r1", "00190812", 1.69, 0, true]], "verdict": "unclear", "snr": 10.31155195844687, "galaxy": false}, "spPlate-9346-58049.fits 502 6329.946 -1": {"frames": [["b2", "00252705", 1.05, 0, true], ["b2", "00252706", -0.63, 0, true], ["b2", "00252707", -2.71, 33554432, true], ["b2", "00252708", -1.53, 33554432, true], ["r2", "00252705", 5.07, 8388608, true], ["r2", "00252706", 5.39, 8388608, true], ["r2", "00252707", 4.39, 8388608, true], ["r2", "00252708", 3.74, 0, true]], "verdict": "one camera", "snr": 10.266705688044327, "galaxy": false}, "spPlate-8840-57425.fits 455 6292.164 -1": {"frames": [["b1", "00214080", 1.33, 0, true], ["b1", "00214081", -1.57, 0, true], ["b1", "00214082", -1.07, 0, true], ["b1", "00214083", -0.99, 0, true], ["b1", "00214084", 2.18, 0, true], ["b1", "00214085", -1.42, 0, true], ["r1", "00214080", 4.83, 0, true], ["r1", "00214081", 3.09, 8388608, true], ["r1", "00214082", 5.23, 8388608, true], ["r1", "00214083", 4.06, 0, true], ["r1", "00214084", 4.41, 0, true], ["r1", "00214085", 4.64, 0, true]], "verdict": "persistent", "snr": 10.261358239955626, "galaxy": false}, "spPlate-10271-58497.fits 879 8412.014 -1": {"frames": [["r2", "00280388", 0.0, 720896, false], ["r2", "00280666", 1.4, 589824, true], ["r2", "00280667", 2.26, 8978432, true], ["r2", "00280668", -1.02, 589824, true], ["r2", "00280669", 3.01, 8978432, true]], "verdict": "unclear", "snr": 10.254565013834846, "galaxy": false}, "spPlate-6478-56341.fits 570 7934.143 -1": {"frames": [["r2", "00156888", 7.23, 8519684, true], ["r2", "00156889", 5.66, 8519684, true], ["r2", "00156890", -3.01, 131076, true], ["r2", "00156891", 5.8, 8519684, true], ["r2", "00156892", 4.76, 8519684, true]], "verdict": "persistent", "snr": 10.24526275258507, "galaxy": false}, "spPlate-3548-55157.fits 598 6315.387 -1": {"frames": [["b2", "00104024", 0.0, 0, false], ["b2", "00104025", 0.0, 0, false], ["b2", "00104026", 0.0, 0, false], ["b2", "00104027", 0.0, 0, false], ["b2", "00104030", 0.0, 0, false], ["b2", "00104031", 0.0, 0, false], ["r2", "00104024", 58464714601.45, 0, true], ["r2", "00104025", 3.549402818340844e+17, 0, true], ["r2", "00104026", 104136326015221.5, 0, true], ["r2", "00104027", 2000369739.18, 0, true], ["r2", "00104030", 49911868225582.95, 0, true], ["r2", "00104031", -3067819891503599.5, 0, true]], "verdict": "one exposure", "snr": 10.08675707732014, "galaxy": false}, "spPlate-3774-55244.fits 594 5850.595 -1": {"frames": [["b2", "00108442", 0.0, 0, false], ["b2", "00108443", 0.0, 0, false], ["b2", "00108444", 0.0, 0, false], ["b2", "00108552", 0.0, 0, false], ["b2", "00108553", 0.0, 0, false], ["b2", "00108554", 0.0, 0, false], ["b2", "00108625", 0.0, 0, false], ["b2", "00108626", 0.0, 0, false], ["b2", "00108627", 0.0, 0, false], ["b2", "00108628", 0.0, 0, false], ["r2", "00108442", -8.53, 71434240, true], ["r2", "00108443", 12.3, 131072, true], ["r2", "00108444", -715720089019682.2, 71434240, true], ["r2", "00108552", 474055.83, 0, true], ["r2", "00108553", 3.0356502255459034e+17, 0, true], ["r2", "00108554", 0.0, 8388608, true], ["r2", "00108625", 0.0, 71434240, true], ["r2", "00108626", 0.0, 71434240, true], ["r2", "00108627", -0.03, 71434240, true], ["r2", "00108628", 0.0, 71434240, true]], "verdict": "one exposure", "snr": 10.08112849744193, "galaxy": false}, "spPlate-3609-55201.fits 432 5993.769 -1": {"frames": [["b1", "00105900", 0.0, 0, false], ["b1", "00105923", 0.0, 0, false], ["b1", "00105924", 0.0, 0, false], ["b1", "00105925", 0.0, 0, false], ["b1", "00105926", 0.0, 0, false], ["r1", "00105900", 6.300894715623244e+17, 524288, true], ["r1", "00105923", 9.22, 524288, true], ["r1", "00105924", 0.0, 524288, false], ["r1", "00105925", 119415951017126.55, 524288, true], ["r1", "00105926", 8914470596.77, 524288, true]], "verdict": "one exposure", "snr": 10.079597726334297, "galaxy": false}, "spPlate-7745-58077.fits 877 9412.392 -1": {"frames": [["r2", "00254911", 3.14, 589824, true], ["r2", "00254912", 1.61, 589824, true], ["r2", "00254913", 0.66, 589824, true]], "verdict": "unclear", "snr": 10.064603902966647, "galaxy": false}, "spPlate-7876-57002.fits 44 10136.780 -1": {"frames": [["r1", "00190809", 0.7, 0, true], ["r1", "00190810", 1.9, 0, true], ["r1", "00190811", 0.63, 0, true], ["r1", "00190812", -1.22, 0, true]], "verdict": "unclear", "snr": 10.059712944914235, "galaxy": false}, "spPlate-11293-58462.fits 842 8070.492 -1": {"frames": [["r2", "00278340", 1059.65, 8978432, true], ["r2", "00278346", 15.63, 8978432, true], ["r2", "00278587", 2252039780.76, 8978432, true], ["r2", "00278588", 1.66, 589824, true], ["r2", "00278589", -573784786.28, 589824, true], ["r2", "00278590", -1717510210.5, 851968, true]], "verdict": "one exposure", "snr": 10.044370740352175, "galaxy": false}, "spPlate-3615-55153.fits 312 4391.370 -1": {"frames": [["b1", "00103785", -3.84845873298156e+18, 67108864, true], ["b1", "00103786", 0.0, 67108864, true], ["b1", "00103787", 1716876109031.94, 67108864, true], ["b1", "00103788", -1.5573111255235997e+17, 67108864, true]], "verdict": "one exposure", "snr": 10.027921218822431, "galaxy": false}, "spPlate-8389-57488.fits 471 6406.193 -1": {"frames": [["b1", "00218932", 0.0, 71434240, false], ["b1", "00218933", 0.0, 71434240, false], ["b1", "00218934", 0.0, 71434240, false], ["r1", "00218932", 4.23, 0, true], ["r1", "00218933", 5.42, 0, true], ["r1", "00218934", 5.76, 0, true]], "verdict": "persistent", "snr": 10.0193257329714, "galaxy": false}, "spPlate-5852-56034.fits 453 8325.302 -1": {"frames": [["r1", "00142555", -645.53, 7, true], ["r1", "00142556", -581.26, 7, true], ["r1", "00142557", -790.26, 7, true]], "verdict": "unclear", "snr": 10.01068610464074, "galaxy": false}, "spPlate-9429-58132.fits 64 6446.144 -1": {"frames": [["b1", "00259514", 0.0, 71434240, false], ["b1", "00259515", 0.0, 71434240, false], ["b1", "00259516", 0.0, 71434240, false], ["b1", "00259517", 0.0, 71434240, false], ["b1", "00259518", 0.0, 71434240, false], ["r1", "00259514", 4.3, 0, true], ["r1", "00259515", 4.02, 0, true], ["r1", "00259516", 4.68, 0, true], ["r1", "00259517", 5.14, 0, true], ["r1", "00259518", 3.11, 0, true]], "verdict": "persistent", "snr": 9.971574702211585, "galaxy": false}, "spPlate-3609-55129.fits 520 9933.447 -1": {"frames": [["r2", "00102874", 0.0, 0, false], ["r2", "00102875", 0.0, 0, false], ["r2", "00102876", 0.0, 0, false], ["r2", "00102877", 0.0, 0, false], ["r2", "00102880", 0.0, 0, false], ["r2", "00102881", 0.0, 0, false]], "verdict": "no frame", "snr": 9.959872879619386, "galaxy": false}, "spPlate-7338-56717.fits 101 6292.164 -1": {"frames": [["b1", "00176016", 2.9, 0, true], ["b1", "00176017", -2.07, 0, true], ["b1", "00176018", 1.91, 0, true], ["b1", "00176019", -0.69, 0, true], ["b1", "00176020", 1.33, 0, true], ["b1", "00176021", -0.93, 0, true], ["b1", "00176022", -1.31, 0, true], ["b1", "00176023", -1.12, 0, true], ["b1", "00176024", 2.85, 0, true], ["r1", "00176016", 4.26, 0, true], ["r1", "00176017", 5.31, 0, true], ["r1", "00176018", 2.69, 0, true], ["r1", "00176019", 3.37, 0, true], ["r1", "00176020", 2.61, 0, true], ["r1", "00176021", 3.03, 0, true], ["r1", "00176022", 3.86, 0, true], ["r1", "00176023", 2.29, 0, true], ["r1", "00176024", 4.91, 0, true]], "verdict": "persistent", "snr": 9.926464338574744, "galaxy": false}, "spPlate-3648-55131.fits 420 6108.014 -1": {"frames": [["b1", "00102942", 0.0, 67108864, false], ["b1", "00102943", 0.0, 67108864, false], ["b1", "00102944", 0.0, 100663296, false], ["r1", "00102942", 11060.5, 100663302, true], ["r1", "00102943", 0.58, 67108870, true], ["r1", "00102944", 26504946905.56, 67108870, true]], "verdict": "one exposure", "snr": 9.913019283337064, "galaxy": false}, "spPlate-5320-55999.fits 378 6504.292 -1": {"frames": [["b1", "00141021", 0.0, 71434240, false], ["b1", "00141022", 0.0, 71434240, false], ["b1", "00141023", 0.0, 71434240, false], ["b1", "00141024", 0.0, 71434240, false], ["r1", "00141021", 4.75, 0, true], ["r1", "00141022", 5.8, 0, true], ["r1", "00141023", 4.67, 8388608, true], ["r1", "00141024", 5.95, 0, true]], "verdict": "persistent", "snr": 9.892938248889998, "galaxy": false}, "spPlate-9332-58072.fits 862 6603.893 -1": {"frames": [["b2", "00254444", 0.0, 71434244, false], ["b2", "00254445", 0.0, 71434244, false], ["b2", "00254446", 0.0, 71434244, false], ["b2", "00254447", 0.0, 71434244, false], ["b2", "00254448", 0.0, 71434244, false], ["r2", "00254444", 4.98, 589828, true], ["r2", "00254445", 5.82, 4, true], ["r2", "00254446", 5.56, 4, true], ["r2", "00254447", 4.4, 4, true], ["r2", "00254448", 5.19, 4, true]], "verdict": "persistent", "snr": 9.88719088943958, "galaxy": false}, "spPlate-8305-57729.fits 336 7648.918 -1": {"frames": [["r1", "00233201", 9.86, 524288, true], ["r1", "00233202", 0.58, 0, true]], "verdict": "one exposure", "snr": 9.879241561726094, "galaxy": false}, "spPlate-10459-58159.fits 841 8260.379 -1": {"frames": [["r2", "00262128", -6.02, 589824, true], ["r2", "00262129", -3.35, 589824, true], ["r2", "00262130", -5.03, 589824, true]], "verdict": "unclear", "snr": 9.853732668334855, "galaxy": false}, "spPlate-8381-57512.fits 876 8222.426 -1": {"frames": [["r2", "00220358", -1.32, 589840, true], ["r2", "00220359", -2.41, 34144272, true], ["r2", "00220360", 2.16, 589840, true], ["r2", "00220361", 1.17, 589840, true], ["r2", "00220362", 2.59, 589840, true]], "verdict": "unclear", "snr": 9.836163230152259, "galaxy": false}, "spPlate-8381-57512.fits 876 8203.515 -1": {"frames": [["r2", "00220358", -0.82, 589840, true], ["r2", "00220359", 2.12, 589840, true], ["r2", "00220360", 0.4, 589840, true], ["r2", "00220361", 1.93, 589840, true], ["r2", "00220362", 3.44, 589840, true]], "verdict": "unclear", "snr": 9.827486208105311, "galaxy": false}, "spPlate-11375-58426.fits 972 6329.946 -1": {"frames": [["b2", "00275376", 1.18, 0, true], ["b2", "00275471", -0.89, 0, true], ["b2", "00275472", 4.85, 0, true], ["b2", "00275473", -1.21, 0, true], ["b2", "00275474", 1.46, 0, true], ["r2", "00275376", -1.26, 0, true], ["r2", "00275471", 5.18, 0, true], ["r2", "00275472", 6.68, 0, true], ["r2", "00275473", 6.13, 0, true], ["r2", "00275474", 3.82, 0, true]], "verdict": "persistent", "snr": 9.827138764148591, "galaxy": false}, "spPlate-5424-56033.fits 142 6555.412 -1": {"frames": [["b1", "00142476", 0.0, 71434240, false], ["b1", "00142477", 0.0, 71434240, false], ["b1", "00142478", 0.0, 71434240, false], ["r1", "00142476", 5.41, 8388608, true], ["r1", "00142477", 5.05, 8388608, true], ["r1", "00142478", 6.01, 8388608, true]], "verdict": "persistent", "snr": 9.798407915230394, "galaxy": false}, "spPlate-9564-57817.fits 425 5763.682 -1": {"frames": [["b1", "00238988", 4.63, 524288, true], ["b1", "00238989", 4.79, 0, true], ["b1", "00238990", 3.92, 0, true], ["b1", "00238991", 6.99, 0, true], ["r1", "00238988", 0.0, 71434240, false], ["r1", "00238989", 0.0, 71434240, false], ["r1", "00238990", 0.0, 71434240, false], ["r1", "00238991", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.781657891609774, "galaxy": false}, "spPlate-11295-58456.fits 934 4800.650 -1": {"frames": [["b2", "00278048", 2.26, 0, true], ["b2", "00278049", -2.95, 0, true], ["b2", "00278237", 7.61, 524288, true], ["b2", "00278238", 3.69, 0, true], ["b2", "00278239", 3.95, 0, true], ["b2", "00278240", 4.91, 0, true], ["b2", "00278241", 1.63, 0, true], ["b2", "00278242", 4.11, 0, true]], "verdict": "persistent", "snr": 9.740922517483959, "galaxy": false}, "spPlate-7856-57260.fits 876 8685.604 -1": {"frames": [["r2", "00203262", 0.75, 851984, false], ["r2", "00203263", 1.55, 589840, true], ["r2", "00203264", 3.21, 589840, true], ["r2", "00203265", 3.08, 589840, true]], "verdict": "persistent", "snr": 9.736244394403414, "galaxy": false}, "spPlate-8490-57104.fits 284 7419.933 -1": {"frames": [["r1", "00196969", 3.33, 4, true], ["r1", "00196970", 1.7, 4, true], ["r1", "00196971", 2.12, 4, true], ["r1", "00197060", 11.24, 0, true]], "verdict": "one exposure", "snr": 9.727310224655527, "galaxy": false}, "spPlate-3615-55153.fits 312 4813.933 -1": {"frames": [["b1", "00103785", 0.0, 67108864, true], ["b1", "00103786", 0.0, 67108864, true], ["b1", "00103787", -23265747385090.88, 67108864, true], ["b1", "00103788", 1.3850491726270493e+17, 67108864, true]], "verdict": "one exposure", "snr": 9.715848754501438, "galaxy": false}, "spPlate-9367-57758.fits 253 8104.011 -1": {"frames": [["r1", "00234920", 3.94, 8388608, true], ["r1", "00234921", 0.9, 0, true], ["r1", "00234922", 4.98, 8388608, true], ["r1", "00234923", 4.73, 8388608, true], ["r1", "00234924", 3.69, 8388608, true], ["r1", "00234925", 2.68, 8388608, true], ["r1", "00234926", 2.0, 8388608, true], ["r1", "00234927", 2.18, 8388608, true], ["r1", "00234928", 5.5, 8388608, true], ["r1", "00234929", 2.14, 8388608, true]], "verdict": "persistent", "snr": 9.704322790274466, "galaxy": false}, "spPlate-7039-56572.fits 838 6395.875 -1": {"frames": [["b2", "00167490", 0.0, 71434240, false], ["b2", "00167491", 0.0, 71434240, false], ["b2", "00167492", 0.0, 71434240, false], ["b2", "00167493", 0.0, 71434240, false], ["r2", "00167490", 5.63, 0, true], ["r2", "00167491", 5.52, 0, true], ["r2", "00167492", 4.81, 0, true], ["r2", "00167493", 3.17, 0, true]], "verdict": "persistent", "snr": 9.690023683170956, "galaxy": false}, "spPlate-9567-58056.fits 449 4504.017 -1": {"frames": [["b1", "00253300", 5.4, 0, true], ["b1", "00253301", 1.73, 0, true], ["b1", "00253302", 1.94, 0, true], ["b1", "00253303", 4.46, 0, true], ["b1", "00253304", 4.93, 0, true]], "verdict": "persistent", "snr": 9.67731224502744, "galaxy": false}, "spPlate-7338-58146.fits 381 5741.165 -1": {"frames": [["b1", "00260935", 1.99, 0, true], ["b1", "00260936", 5.05, 0, true], ["b1", "00260937", 3.0, 0, true], ["b1", "00260938", 4.23, 0, true], ["b1", "00260939", 3.73, 0, true], ["b1", "00260940", 4.19, 0, true], ["r1", "00260935", 0.0, 67239936, false], ["r1", "00260936", 0.0, 67239936, false], ["r1", "00260937", 0.0, 67239936, false], ["r1", "00260938", 0.0, 67239936, false], ["r1", "00260939", 0.0, 67239936, false], ["r1", "00260940", 0.0, 201457664, false]], "verdict": "persistent", "snr": 9.664193537967568, "galaxy": false}, "spPlate-4655-55620.fits 514 6449.113 -1": {"frames": [["b2", "00127285", 0.0, 71434240, false], ["b2", "00127286", 0.0, 71434240, false], ["b2", "00127287", 0.0, 71434240, false], ["b2", "00127288", 0.0, 71434240, false], ["b2", "00127289", 0.0, 71434240, false], ["b2", "00127290", 0.0, 71434240, false], ["r2", "00127285", 4.6, 0, true], ["r2", "00127286", 4.55, 0, true], ["r2", "00127287", 4.98, 0, true], ["r2", "00127288", 3.91, 0, true], ["r2", "00127289", 2.7, 0, true], ["r2", "00127290", 4.58, 524288, true]], "verdict": "persistent", "snr": 9.616922564737994, "galaxy": false}, "spPlate-8755-58138.fits 124 6130.558 -1": {"frames": [["b1", "00260126", 1.19, 0, true], ["b1", "00260127", -0.9, 0, true], ["b1", "00260128", -0.65, 0, true], ["b1", "00260129", -0.81, 0, true], ["b1", "00260140", -1.31, 0, true], ["r1", "00260126", 5.69, 0, true], ["r1", "00260127", 7.12, 0, true], ["r1", "00260128", 6.59, 0, true], ["r1", "00260129", 7.24, 0, true], ["r1", "00260140", 6.99, 0, true]], "verdict": "one camera", "snr": 9.606194920215726, "galaxy": false}, "spPlate-6478-56341.fits 570 7843.321 -1": {"frames": [["r2", "00156888", -5.12, 131076, true], ["r2", "00156889", -6.23, 131076, true], ["r2", "00156890", -3.81, 131076, true], ["r2", "00156891", -5.43, 131076, true], ["r2", "00156892", 4.73, 42074116, true]], "verdict": "unclear", "snr": 9.600579475088196, "galaxy": false}, "spPlate-9180-57693.fits 236 5289.322 -1": {"frames": [["b1", "00230734", 3.08, 0, true], ["b1", "00230735", 4.63, 0, true], ["b1", "00230736", 2.97, 0, true], ["b1", "00230737", 1.76, 0, true], ["b1", "00230738", 4.91, 0, true], ["b1", "00230839", 3.26, 0, true], ["b1", "00230840", 5.27, 0, true], ["r1", "00230734", 0.0, 71434240, false], ["r1", "00230735", 0.0, 71434240, false], ["r1", "00230736", 0.0, 71434240, false], ["r1", "00230737", 0.0, 71434240, false], ["r1", "00230738", 0.0, 71434240, false], ["r1", "00230839", 0.0, 71434240, false], ["r1", "00230840", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.596979721994588, "galaxy": false}, "spPlate-7649-57574.fits 451 6701.932 -1": {"frames": [["b1", "00224305", 0.0, 83886080, false], ["b1", "00224306", 0.0, 83886080, false], ["b1", "00224307", 0.0, 83886080, false], ["b1", "00224308", 0.0, 83886080, false], ["b1", "00224309", 0.0, 83886080, false], ["r1", "00224305", 4.99, 0, true], ["r1", "00224306", 3.29, 0, true], ["r1", "00224307", 4.31, 0, true], ["r1", "00224308", 6.01, 0, true], ["r1", "00224309", 4.03, 0, true]], "verdict": "persistent", "snr": 9.590847374649698, "galaxy": false}, "spPlate-8745-57391.fits 337 6631.320 -1": {"frames": [["b1", "00211624", 0.0, 83886080, false], ["b1", "00211625", 0.0, 83886080, false], ["b1", "00211626", 0.0, 83886080, false], ["b1", "00211627", 0.0, 83886080, false], ["b1", "00211628", 0.0, 83886080, false], ["r1", "00211624", 5.21, 0, true], ["r1", "00211625", 2.96, 0, true], ["r1", "00211626", 4.23, 0, true], ["r1", "00211627", 3.28, 0, true], ["r1", "00211628", 2.8, 0, true]], "verdict": "persistent", "snr": 9.588651005817255, "galaxy": false}, "spPlate-8128-56959.fits 391 6579.608 -1": {"frames": [["b1", "00188294", 0.0, 83886080, false], ["b1", "00188295", 0.0, 83886080, false], ["b1", "00188296", 0.0, 83886080, false], ["b1", "00188297", 0.0, 83886080, false], ["r1", "00188294", 5.62, 8388608, true], ["r1", "00188295", 4.75, 8388608, true], ["r1", "00188296", 5.39, 0, true], ["r1", "00188297", 1.57, 0, true]], "verdict": "persistent", "snr": 9.585831901741622, "galaxy": false}, "spPlate-6781-56274.fits 109 6599.332 -1": {"frames": [["b1", "00152600", 0.0, 83886080, false], ["b1", "00152601", 0.0, 83886080, false], ["b1", "00152602", 0.0, 83886080, false], ["b1", "00152603", 0.0, 83886080, false], ["b1", "00152604", 0.0, 83886080, false], ["b1", "00152605", 0.0, 83886080, false], ["r1", "00152600", 2.65, 0, true], ["r1", "00152601", 3.61, 0, true], ["r1", "00152602", 3.57, 0, true], ["r1", "00152603", 4.56, 0, true], ["r1", "00152604", 4.33, 0, true], ["r1", "00152605", 5.78, 0, true]], "verdict": "persistent", "snr": 9.564214591580528, "galaxy": false}, "spPlate-7039-56572.fits 838 6398.822 -1": {"frames": [["b2", "00167490", 0.0, 71434240, false], ["b2", "00167491", 0.0, 71434240, false], ["b2", "00167492", 0.0, 71434240, false], ["b2", "00167493", 0.0, 71434240, false], ["r2", "00167490", 5.63, 0, true], ["r2", "00167491", 5.52, 0, true], ["r2", "00167492", 4.88, 0, true], ["r2", "00167493", 3.17, 0, true]], "verdict": "persistent", "snr": 9.543240439618218, "galaxy": false}, "spPlate-8749-57684.fits 250 4058.822 -1": {"frames": [["b1", "00230067", 2.35, 0, true], ["b1", "00230068", 1.11, 0, true], ["b1", "00230069", 2.81, 0, true], ["b1", "00230070", 5.98, 0, true], ["b1", "00230071", 3.03, 0, true], ["b1", "00230072", 4.78, 0, true]], "verdict": "persistent", "snr": 9.542817364391821, "galaxy": false}, "spPlate-3848-55647.fits 332 6748.387 -1": {"frames": [["b1", "00128568", 0.0, 83886080, false], ["b1", "00128569", 0.0, 83886080, false], ["b1", "00128570", 0.0, 83886080, false], ["b1", "00128571", 0.0, 83886080, false], ["b1", "00128572", 0.0, 83886080, false], ["b1", "00128573", 0.0, 83886080, false], ["r1", "00128568", 3.8, 0, true], ["r1", "00128569", 4.15, 0, true], ["r1", "00128570", 5.18, 0, true], ["r1", "00128571", 4.15, 0, true], ["r1", "00128572", 5.0, 0, true], ["r1", "00128573", 3.83, 0, true]], "verdict": "persistent", "snr": 9.52532021104645, "galaxy": false}, "spPlate-10666-58440.fits 919 5667.611 -1": {"frames": [["b2", "00276864", 6.63, 0, true], ["b2", "00276865", 4.31, 0, true], ["b2", "00276866", 5.94, 0, true], ["r2", "00276864", 0.0, 71434240, false], ["r2", "00276865", 0.0, 71434240, false], ["r2", "00276866", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.521777638161652, "galaxy": false}, "spPlate-9389-58097.fits 683 6678.824 -1": {"frames": [["b2", "00256545", 0.0, 83886080, false], ["b2", "00256546", 0.0, 83886080, false], ["b2", "00256547", 0.0, 83886080, false], ["r2", "00256545", 5.11, 0, true], ["r2", "00256546", 5.07, 0, true], ["r2", "00256547", 4.6, 0, true]], "verdict": "persistent", "snr": 9.460844514779406, "galaxy": false}, "spPlate-6110-56279.fits 520 6588.704 -1": {"frames": [["b2", "00152891", 0.0, 71434240, false], ["b2", "00152892", 0.0, 71434240, false], ["b2", "00152893", 0.0, 71434240, false], ["b2", "00152894", 0.0, 71434240, false], ["b2", "00152895", 0.0, 71434240, false], ["b2", "00152896", 0.0, 71434240, false], ["r2", "00152891", 2.85, 0, true], ["r2", "00152892", 2.79, 0, true], ["r2", "00152893", 3.37, 0, true], ["r2", "00152894", 4.92, 524288, true], ["r2", "00152895", 3.74, 0, true], ["r2", "00152896", 4.14, 0, true]], "verdict": "persistent", "snr": 9.440110812903823, "galaxy": false}, "spPlate-9153-58022.fits 348 4524.806 -1": {"frames": [["b1", "00250384", 1.68, 0, true], ["b1", "00250385", 2.61, 0, true], ["b1", "00250386", 5.76, 0, true], ["b1", "00250387", 2.89, 0, true], ["b1", "00250388", 5.16, 0, true]], "verdict": "persistent", "snr": 9.438899679336446, "galaxy": false}, "spPlate-5889-56038.fits 914 10372.895 -1": {"frames": [["r2", "00142815", 8.12, 41943040, true], ["r2", "00142816", 7.45, 41943040, true], ["r2", "00142817", 8.99, 8388608, true]], "verdict": "persistent", "snr": 9.420524397741984, "galaxy": false}, "spPlate-9397-58107.fits 987 7778.574 -1": {"frames": [["r2", "00257474", 4.14, 0, true], ["r2", "00257475", 5.22, 0, true], ["r2", "00257476", 5.44, 0, true], ["r2", "00257477", 3.63, 0, true]], "verdict": "persistent", "snr": 9.404630745576833, "galaxy": false}, "spPlate-5963-56191.fits 864 6553.903 -1": {"frames": [["b2", "00147709", 0.0, 71434240, false], ["b2", "00147710", 0.0, 71434240, false], ["b2", "00147711", 0.0, 71434240, false], ["b2", "00147712", 0.0, 71434240, false], ["b2", "00147713", 0.0, 71434240, false], ["r2", "00147709", 5.13, 8388608, true], ["r2", "00147710", 3.38, 8388608, true], ["r2", "00147711", 4.3, 8388608, true], ["r2", "00147712", 3.96, 8388608, true], ["r2", "00147713", 3.13, 8388608, true]], "verdict": "persistent", "snr": 9.404528291342656, "galaxy": false}, "spPlate-6741-56394.fits 182 5854.637 -1": {"frames": [["b1", "00160031", -2.59, 0, true], ["b1", "00160032", 0.75, 0, true], ["b1", "00160034", 1.36, 0, true], ["b1", "00160035", 1.28, 0, true], ["b1", "00160036", -1.36, 0, true], ["b1", "00160037", -2.19, 0, true], ["r1", "00160031", 35.2, 0, true], ["r1", "00160032", 78.59, 33554432, true], ["r1", "00160034", 48.69, 0, true], ["r1", "00160035", 41.8, 33554432, true], ["r1", "00160036", 75.09, 33554432, true], ["r1", "00160037", 50.05, 0, true]], "verdict": "one camera", "snr": 9.403512810877439, "galaxy": false}, "spPlate-9164-58045.fits 386 6322.662 -1": {"frames": [["b1", "00252330", -0.39, 71303168, true], ["b1", "00252331", -1.13, 71303168, false], ["b1", "00252332", 1.08, 71303168, true], ["b1", "00252333", -0.16, 71303168, true], ["b1", "00252334", 0.95, 71303168, false], ["r1", "00252330", 2.65, 0, true], ["r1", "00252331", 3.84, 0, true], ["r1", "00252332", 5.09, 0, true], ["r1", "00252333", 2.45, 0, true], ["r1", "00252334", 4.53, 0, true]], "verdict": "one camera", "snr": 9.401196661531744, "galaxy": false}, "spPlate-7731-58130.fits 878 8135.795 -1": {"frames": [["r2", "00259320", 3.04, 589824, true], ["r2", "00259321", 3.37, 589824, true], ["r2", "00259322", 1.74, 589824, true]], "verdict": "persistent", "snr": 9.399158722391016, "galaxy": false}, "spPlate-4212-55447.fits 390 6395.875 -1": {"frames": [["b1", "00119107", 0.0, 71434240, false], ["b1", "00119108", 0.0, 71434240, false], ["b1", "00119109", 0.0, 71434240, false], ["b1", "00119110", 0.0, 71434240, false], ["b1", "00119111", 0.0, 71434240, false], ["r1", "00119107", 4.12, 0, true], ["r1", "00119108", 5.0, 0, true], ["r1", "00119109", 3.32, 0, true], ["r1", "00119110", 1.91, 0, true], ["r1", "00119111", 5.67, 0, true]], "verdict": "persistent", "snr": 9.343697643577958, "galaxy": false}, "spPlate-8762-57693.fits 441 4386.317 -1": {"frames": [["b1", "00230668", 5.9, 0, true], ["b1", "00230669", 4.61, 0, true], ["b1", "00230868", 4.29, 0, true], ["b1", "00230869", 2.62, 0, true], ["b1", "00230870", 3.91, 0, true]], "verdict": "persistent", "snr": 9.31953356080687, "galaxy": false}, "spPlate-5714-56660.fits 60 6478.881 -1": {"frames": [["b1", "00171873", 0.0, 71434240, false], ["b1", "00171874", 0.0, 71434240, false], ["b1", "00171875", 0.0, 71434240, false], ["b1", "00171876", 0.0, 71434240, false], ["b1", "00171877", 0.0, 71434240, false], ["r1", "00171873", 3.35, 0, true], ["r1", "00171874", 4.65, 0, true], ["r1", "00171875", 3.33, 0, true], ["r1", "00171876", 3.35, 0, true], ["r1", "00171877", 6.0, 0, true]], "verdict": "persistent", "snr": 9.31633845329147, "galaxy": false}, "spPlate-4049-55591.fits 972 6243.096 -1": {"frames": [["b2", "00126104", 2.34, 0, true], ["b2", "00126105", 2.19, 0, true], ["b2", "00126106", -0.91, 0, true], ["b2", "00126107", 2.54, 0, true], ["b2", "00126108", 1.72, 0, true], ["r2", "00126104", 4.32, 524288, true], ["r2", "00126105", 4.43, 0, true], ["r2", "00126106", 4.28, 0, true], ["r2", "00126107", 3.51, 0, true], ["r2", "00126108", 3.35, 0, true]], "verdict": "persistent", "snr": 9.296016590954961, "galaxy": false}, "spPlate-4206-55471.fits 214 7881.339 -1": {"frames": [["r1", "00119859", 4.53, 0, true], ["r1", "00119860", 3.23, 0, true], ["r1", "00119861", 3.98, 0, true], ["r1", "00119862", 4.78, 0, true], ["r1", "00119863", 3.91, 8388608, true], ["r1", "00119864", 3.78, 8388608, true], ["r1", "00119865", 3.1, 8388608, true], ["r1", "00119866", 4.29, 8388608, true]], "verdict": "persistent", "snr": 9.285520303395355, "galaxy": false}, "spPlate-5037-55823.fits 44 6565.987 -1": {"frames": [["b1", "00133554", 0.0, 83886080, false], ["b1", "00134039", 0.0, 83886080, false], ["b1", "00134040", 0.0, 83886080, false], ["b1", "00134041", 0.0, 83886080, false], ["b1", "00134042", 0.0, 83886080, false], ["b1", "00134043", 0.0, 83886080, false], ["r1", "00133554", 2.44, 0, true], ["r1", "00134039", 4.23, 0, true], ["r1", "00134040", 2.91, 0, true], ["r1", "00134041", 3.66, 0, true], ["r1", "00134042", 4.56, 0, true], ["r1", "00134043", 4.63, 0, true]], "verdict": "persistent", "snr": 9.285100474436462, "galaxy": false}, "spPlate-4848-55955.fits 108 6588.704 -1": {"frames": [["b1", "00139303", 0.0, 83886080, false], ["b1", "00139304", 0.0, 83886080, false], ["b1", "00139305", 0.0, 83886080, false], ["b1", "00139306", 0.0, 83886080, false], ["r1", "00139303", 4.36, 0, true], ["r1", "00139304", 7.52, 0, true], ["r1", "00139305", 4.66, 0, true], ["r1", "00139306", 4.54, 0, true]], "verdict": "persistent", "snr": 9.2692798270476, "galaxy": false}, "spPlate-9150-58043.fits 61 6211.550 -1": {"frames": [["b1", "00252128", 1.59, 0, true], ["b1", "00252129", -1.03, 0, true], ["b1", "00252130", 1.27, 0, true], ["b1", "00252131", 1.49, 0, true], ["r1", "00252128", 6.32, 0, true], ["r1", "00252129", 5.36, 0, true], ["r1", "00252130", 3.9, 0, true], ["r1", "00252131", 5.47, 0, true]], "verdict": "one camera", "snr": 9.257102033198043, "galaxy": false}, "spPlate-5963-56191.fits 481 9974.704 -1": {"frames": [["r1", "00147709", 2.99, 0, true], ["r1", "00147710", 4.07, 0, true], ["r1", "00147711", 2.99, 0, true], ["r1", "00147712", 5.05, 0, true], ["r1", "00147713", 3.55, 0, true]], "verdict": "persistent", "snr": 9.248567827644361, "galaxy": false}, "spPlate-11293-58462.fits 349 8637.737 -1": {"frames": [["r1", "00278340", 3.4010291088613734e+18, 8388608, true], ["r1", "00278346", 0.0, 8388608, true], ["r1", "00278587", 0.0, 8388608, true], ["r1", "00278588", 198498218072.22, 8388608, true], ["r1", "00278589", 0.0, 8388608, true], ["r1", "00278590", 814410713237448.2, 8388608, true]], "verdict": "one exposure", "snr": 9.242025246647982, "galaxy": false}, "spPlate-7338-58503.fits 399 5717.419 -1": {"frames": [["b1", "00281197", 5.26, 0, true], ["b1", "00281198", 3.21, 0, true], ["b1", "00281199", 0.67, 0, true], ["b1", "00281200", 3.28, 0, true], ["b1", "00281201", 2.93, 0, true], ["b1", "00281202", 2.4, 0, true], ["b1", "00281203", 1.92, 0, true], ["b1", "00281204", 3.78, 0, true], ["b1", "00281205", 2.85, 0, true], ["r1", "00281197", 0.0, 71434240, false], ["r1", "00281198", 0.0, 71434240, false], ["r1", "00281199", 0.0, 71434240, false], ["r1", "00281200", 0.0, 71434240, false], ["r1", "00281201", 0.0, 71434240, false], ["r1", "00281202", 0.0, 71434240, false], ["r1", "00281203", 0.0, 71434240, false], ["r1", "00281204", 0.0, 71434240, false], ["r1", "00281205", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.236483773587288, "galaxy": false}, "spPlate-7768-58289.fits 424 9867.338 -1": {"frames": [["r1", "00271021", -1.44, 0, true], ["r1", "00271096", 2.82, 8388608, true], ["r1", "00271097", 2.43, 8388608, true], ["r1", "00271171", -2.06, 0, true], ["r1", "00271172", 2.48, 8388608, true]], "verdict": "unclear", "snr": 9.2145681395621, "galaxy": false}, "spPlate-8834-57458.fits 86 6562.964 -1": {"frames": [["b1", "00216790", 0.0, 83886080, false], ["b1", "00216791", 0.0, 83886080, false], ["b1", "00216792", 0.0, 83886080, false], ["b1", "00216793", 0.0, 83886080, false], ["b1", "00216794", 0.0, 83886080, false], ["b1", "00216795", 0.0, 83886080, false], ["b1", "00216796", 0.0, 83886080, false], ["b1", "00216797", 0.0, 83886080, false], ["r1", "00216790", 2.31, 0, true], ["r1", "00216791", 3.65, 0, true], ["r1", "00216792", 3.65, 0, true], ["r1", "00216793", 3.57, 0, true], ["r1", "00216794", 2.86, 0, true], ["r1", "00216795", 4.37, 0, true], ["r1", "00216796", 5.62, 0, true], ["r1", "00216797", 2.38, 0, true]], "verdict": "persistent", "snr": 9.200927047490595, "galaxy": false}, "spPlate-11315-58402.fits 363 5170.113 -1": {"frames": [["b1", "00273329", 4.73, 0, true], ["b1", "00273330", 4.05, 0, true], ["b1", "00273448", 5.85, 0, true], ["b1", "00273449", 4.49, 0, true], ["b1", "00273450", 4.81, 0, true], ["r1", "00273329", 0.0, 71434240, false], ["r1", "00273330", 0.0, 71434240, false], ["r1", "00273448", 0.0, 71434240, false], ["r1", "00273449", 0.0, 71434240, false], ["r1", "00273450", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.200171340693794, "galaxy": false}, "spPlate-11096-58485.fits 879 8753.868 -1": {"frames": [["r2", "00279897", -0.34, 589824, true], ["r2", "00279898", 1.22, 589824, true], ["r2", "00279899", 1.5, 589824, true], ["r2", "00279900", 1.8, 8978432, true]], "verdict": "unclear", "snr": 9.19617391716056, "galaxy": true}, "spPlate-7338-58127.fits 336 4373.207 -1": {"frames": [["b1", "00259089", 3.91, 0, true], ["b1", "00259090", 4.26, 0, true], ["b1", "00259091", 1.21, 0, true], ["b1", "00259092", 4.54, 524288, true], ["b1", "00259093", 4.41, 0, true], ["b1", "00259164", 2.77, 0, true], ["b1", "00259165", 0.5, 0, true], ["b1", "00259166", 1.19, 0, true], ["b1", "00259167", 3.29, 0, true], ["b1", "00259168", 0.91, 0, true], ["b1", "00259169", 3.37, 0, true]], "verdict": "persistent", "snr": 9.189217853773764, "galaxy": false}, "spPlate-6376-56269.fits 468 9993.095 -1": {"frames": [["r1", "00151915", 5.64, 0, true], ["r1", "00151918", 4.16, 0, true], ["r1", "00151919", 4.71, 0, true], ["r1", "00152004", 3.2, 0, true], ["r1", "00152005", 3.44, 0, true], ["r1", "00152006", 4.81, 0, true]], "verdict": "persistent", "snr": 9.17674008919862, "galaxy": false}, "spPlate-7841-56960.fits 502 6437.244 -1": {"frames": [["b2", "00188382", 0.0, 71434240, false], ["b2", "00188383", 0.0, 71434240, false], ["b2", "00188384", 0.0, 71434240, false], ["b2", "00188385", 0.0, 71434240, false], ["b2", "00188386", 0.0, 71434240, false], ["b2", "00188387", 0.0, 71434240, false], ["b2", "00188388", 0.0, 71434240, false], ["r2", "00188382", 3.74, 0, true], ["r2", "00188383", 3.38, 0, true], ["r2", "00188384", 4.56, 0, true], ["r2", "00188385", 5.14, 0, true], ["r2", "00188386", 3.64, 0, true], ["r2", "00188387", 3.72, 0, true], ["r2", "00188388", 4.01, 0, true]], "verdict": "persistent", "snr": 9.173986504367276, "galaxy": false}, "spPlate-7513-56780.fits 267 3914.714 -1": {"frames": [["b1", "00179200", -0.93, 0, true], ["b1", "00179276", 6.95, 41943040, true], ["b1", "00179277", 4.6, 8388608, true], ["b1", "00179278", 4.22, 0, true], ["b1", "00179279", 3.78, 0, true], ["b1", "00179280", 3.12, 0, true]], "verdict": "persistent", "snr": 9.17008385010793, "galaxy": false}, "spPlate-9596-57817.fits 294 4274.644 -1": {"frames": [["b1", "00239003", 2.12, 524288, true], ["b1", "00239004", 5.33, 0, true], ["b1", "00239005", 5.17, 524288, true]], "verdict": "persistent", "snr": 9.125644035621535, "galaxy": false}, "spPlate-9209-57686.fits 32 5525.862 -1": {"frames": [["b1", "00230152", 2.03, 0, true], ["b1", "00230153", 5.48, 0, true], ["b1", "00230154", 1.67, 524288, true], ["b1", "00230155", 4.91, 0, true], ["b1", "00230156", 4.82, 0, true], ["b1", "00230157", 2.96, 0, true], ["b1", "00230158", 4.15, 0, true], ["b1", "00230252", -0.33, 0, true], ["r1", "00230152", 0.0, 71434240, false], ["r1", "00230153", 0.0, 71434240, false], ["r1", "00230154", 0.0, 71434240, false], ["r1", "00230155", 0.0, 71434240, false], ["r1", "00230156", 0.0, 71434240, false], ["r1", "00230157", 0.0, 71434240, false], ["r1", "00230158", 0.0, 71434240, false], ["r1", "00230252", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.122231252151195, "galaxy": false}, "spPlate-6741-56394.fits 182 5847.901 -1": {"frames": [["b1", "00160031", -2.54, 0, true], ["b1", "00160032", -1.05, 0, true], ["b1", "00160034", 1.29, 0, true], ["b1", "00160035", -1.16, 0, true], ["b1", "00160036", 1.93, 0, true], ["b1", "00160037", 1.72, 0, true], ["r1", "00160031", 19.28, 0, true], ["r1", "00160032", 61.94, 33554432, true], ["r1", "00160034", 2.32, 134217728, true], ["r1", "00160035", 25.64, 33554432, true], ["r1", "00160036", 38.11, 33554432, true], ["r1", "00160037", 27.39, 0, true]], "verdict": "one camera", "snr": 9.090878833650397, "galaxy": false}, "spPlate-7340-58646.fits 713 4843.954 -1": {"frames": [["b2", "00291851", 7.32, 0, true], ["b2", "00291852", 5.06, 0, true]], "verdict": "persistent", "snr": 9.089893727041396, "galaxy": false}, "spPlate-6670-56389.fits 891 5808.982 -1": {"frames": [["b2", "00159732", 1.38, 0, true], ["b2", "00159733", -1.27, 0, true], ["b2", "00159734", 1.71, 0, true], ["b2", "00159735", 1.66, 0, true], ["b2", "00159736", -1.96, 0, true], ["r2", "00159732", 5.26, 0, true], ["r2", "00159733", -3.36, 0, true], ["r2", "00159734", 2.9, 0, true], ["r2", "00159735", 7.99, 0, true], ["r2", "00159736", 0.0, 67108864, false]], "verdict": "one camera", "snr": 9.084429577802728, "galaxy": false}, "spPlate-10253-58487.fits 879 8336.812 -1": {"frames": [["r2", "00280083", 2.01, 589824, true], ["r2", "00280084", -1.34, 589824, true], ["r2", "00280085", 2.2, 589824, true], ["r2", "00280086", 1.69, 589824, true]], "verdict": "unclear", "snr": 9.074306646939887, "galaxy": false}, "spPlate-11309-58428.fits 913 5418.761 -1": {"frames": [["b2", "00275525", 2.53, 0, true], ["b2", "00275527", 2.89, 0, true], ["b2", "00275528", 4.57, 0, true], ["b2", "00275529", 3.53, 0, true], ["b2", "00275631", 3.93, 0, true], ["b2", "00275632", 3.82, 0, true], ["b2", "00275633", 2.89, 0, true], ["b2", "00275634", 4.06, 0, true], ["r2", "00275525", 0.0, 71434240, false], ["r2", "00275527", 0.0, 71434240, false], ["r2", "00275528", 0.0, 71434240, false], ["r2", "00275529", 0.0, 71434240, false], ["r2", "00275631", 0.0, 71434240, false], ["r2", "00275632", 0.0, 71434240, false], ["r2", "00275633", 0.0, 71434240, false], ["r2", "00275634", 0.0, 71434240, false]], "verdict": "persistent", "snr": 9.069907307094967, "galaxy": false}, "spPlate-6031-56091.fits 912 8367.582 -1": {"frames": [["r2", "00144769", -1.12, 8388608, true], ["r2", "00144770", 1.44, 8388608, true], ["r2", "00144771", 6.21, 41943168, true], ["r2", "00144772", 4.89, 8388736, true]], "verdict": "persistent", "snr": 9.060573830224037, "galaxy": false}, "spPlate-11096-58485.fits 879 8847.081 -1": {"frames": [["r2", "00279897", -1.03, 589824, true], ["r2", "00279898", -2.07, 8978432, true], ["r2", "00279899", 0.89, 8978432, true], ["r2", "00279900", 3.27, 589824, true]], "verdict": "unclear", "snr": 9.014513520515587, "galaxy": true}, "spPlate-3695-55212.fits 432 6020.049 -1": {"frames": [["b1", "00107707", 0.0, 0, false], ["b1", "00107708", 0.0, 33554432, false], ["b1", "00107709", 0.0, 0, false], ["b1", "00107710", 0.0, 0, false], ["b1", "00107711", 0.0, 33554432, false], ["b1", "00107712", 0.0, 0, false], ["b1", "00107713", 0.0, 0, false], ["b1", "00107714", 0.0, 0, false], ["r1", "00107707", 0.0, 524288, true], ["r1", "00107708", 0.0, 34078720, true], ["r1", "00107709", 5.927850018324498e+17, 34078720, true], ["r1", "00107710", -1237585383848449.0, 0, true], ["r1", "00107711", 121.6, 34078720, true], ["r1", "00107712", -208981476053.21, 0, true], ["r1", "00107713", -1667412928934.62, 524288, true], ["r1", "00107714", 543349975830227.94, 34078720, true]], "verdict": "one exposure", "snr": 9.010309014243138, "galaxy": false}, "spPlate-11115-58514.fits 538 10258.881 -1": {"frames": [["r2", "00282421", 1.72, 0, true], ["r2", "00282422", 4.72, 0, true], ["r2", "00282423", 3.54, 0, true], ["r2", "00282424", 1.83, 0, true]], "verdict": "persistent", "snr": 8.999312380118992, "galaxy": false}, "spPlate-8870-57779.fits 834 6896.044 -1": {"frames": [["b2", "00235921", 0.0, 83886080, false], ["b2", "00235922", 0.0, 83886080, false], ["b2", "00236045", 0.0, 83886080, false], ["b2", "00236046", 0.0, 83886080, false], ["b2", "00236047", 0.0, 83886080, false], ["b2", "00236048", 0.0, 83886080, false], ["b2", "00236049", 0.0, 83886080, false], ["r2", "00235921", -1.59, 0, true], ["r2", "00235922", -2.26, 0, true], ["r2", "00236045", 2.48, 0, true], ["r2", "00236046", 4.14, 0, true], ["r2", "00236047", 2.24, 0, true], ["r2", "00236048", 1.49, 0, true], ["r2", "00236049", 2.78, 0, true]], "verdict": "persistent", "snr": 8.99668385786994, "galaxy": false}, "spPlate-8730-57672.fits 528 10050.785 -1": {"frames": [["r2", "00229030", 4.88, 8388630, true], ["r2", "00229031", 6.82, 22, true], ["r2", "00229032", 6.92, 22, true], ["r2", "00229033", 9.33, 8388630, true]], "verdict": "persistent", "snr": 8.983897321943209, "galaxy": false}, "spPlate-9564-57817.fits 459 4655.861 -1": {"frames": [["b1", "00238988", 4.62, 0, true], ["b1", "00238989", 3.04, 0, true], ["b1", "00238990", 4.73, 0, true], ["b1", "00238991", 4.04, 0, true]], "verdict": "persistent", "snr": 8.947067792971744, "galaxy": false}, "spPlate-11113-58425.fits 190 6088.355 -1": {"frames": [["b1", "00275356", -1.21, 0, true], ["b1", "00275357", -1.14, 0, true], ["b1", "00275358", 0.62, 0, true], ["b1", "00275359", 1.97, 0, true], ["b1", "00275360", -2.2, 0, true], ["b1", "00275361", -1.6, 524288, true], ["b1", "00275362", -1.32, 0, true], ["r1", "00275356", 3.75, 0, true], ["r1", "00275357", 4.84, 0, true], ["r1", "00275358", 7.19, 0, true], ["r1", "00275359", 5.48, 0, true], ["r1", "00275360", 4.48, 0, true], ["r1", "00275361", 7.3, 0, true], ["r1", "00275362", 5.47, 0, true]], "verdict": "one camera", "snr": 8.946163479351135, "galaxy": false}, "spPlate-4051-55337.fits 430 5979.984 -1": {"frames": [["b1", "00115658", 0.98, 0, true], ["b1", "00115659", -0.44, 0, true], ["b1", "00115660", -1.27, 0, true], ["b1", "00115661", -1.19, 0, true], ["b1", "00115662", 1.29, 0, true], ["b1", "00115663", 1.42, 0, true], ["b1", "00115664", -0.81, 0, true], ["b1", "00115720", 1.12, 0, true], ["b1", "00115721", 2.66, 0, true], ["b1", "00115722", 0.41, 0, true], ["b1", "00115723", 0.86, 0, true], ["b1", "00115724", 2.47, 0, true], ["r1", "00115658", 9.13, 34144256, true], ["r1", "00115659", 5.82, 589824, true], ["r1", "00115660", 5.83, 589824, true], ["r1", "00115661", 6.29, 589824, true], ["r1", "00115662", 6.09, 589824, true], ["r1", "00115663", 5.78, 34144256, true], ["r1", "00115664", 6.0, 589824, true], ["r1", "00115720", 5.12, 34144256, true], ["r1", "00115721", 8.06, 589824, true], ["r1", "00115722", 5.57, 34144256, true], ["r1", "00115723", 3.82, 589824, true], ["r1", "00115724", 7.31, 34144256, true]], "verdict": "persistent", "snr": 8.945946805897517, "galaxy": false}, "spPlate-6377-56243.fits 114 7812.679 -1": {"frames": [["r1", "00150627", 3.79, 8388608, true], ["r1", "00150628", 4.68, 8388608, true], ["r1", "00150629", 1.25, 8388608, true], ["r1", "00150630", 3.1, 8388608, true], ["r1", "00150631", -1.29, 0, true], ["r1", "00150632", 3.42, 8388608, true], ["r1", "00150633", 2.26, 8388608, true], ["r1", "00150634", 1.58, 8388608, true], ["r1", "00150635", 0.96, 0, true], ["r1", "00150636", 3.17, 8388608, true], ["r1", "00150637", 1.75, 8388608, true]], "verdict": "persistent", "snr": 8.944252651139983, "galaxy": false}, "spPlate-9331-57711.fits 528 10004.606 -1": {"frames": [["r2", "00231118", -4.46, 33554438, true], ["r2", "00231119", 3.72, 6, true], ["r2", "00231120", -5.48, 524294, true], ["r2", "00231121", -5.86, 524294, true], ["r2", "00231122", -6.65, 524294, true], ["r2", "00231123", 5.22, 524294, true], ["r2", "00231782", 5.01, 8978454, true]], "verdict": "persistent", "snr": 8.940873049808843, "galaxy": false}, "spPlate-11316-58396.fits 528 10261.244 -1": {"frames": [["r2", "00273055", 1.1, 589824, true], ["r2", "00273056", 2.06, 589824, true], ["r2", "00273057", 2.04, 589824, true], ["r2", "00273058", 1.98, 589824, true], ["r2", "00273059", -1.5, 851968, true]], "verdict": "unclear", "snr": 8.938330926930481, "galaxy": false}, "spPlate-8207-57431.fits 134 9986.194 -1": {"frames": [["r1", "00214708", 4.85, 131076, true], ["r1", "00214709", 4.06, 131076, true], ["r1", "00214710", 7.58, 131076, true]], "verdict": "persistent", "snr": 8.926624042819993, "galaxy": false}, "spPlate-4423-55889.fits 22 6543.348 -1": {"frames": [["b1", "00136790", 0.0, 71434240, false], ["b1", "00136791", 0.0, 71434240, false], ["b1", "00136792", 0.0, 71434240, false], ["b1", "00136793", 0.0, 71434240, false], ["b1", "00136794", 0.0, 71434240, false], ["b1", "00136795", 0.0, 71434240, false], ["r1", "00136790", 2.87, 0, true], ["r1", "00136791", 4.26, 0, true], ["r1", "00136792", 3.73, 0, true], ["r1", "00136793", 4.24, 0, true], ["r1", "00136794", 3.65, 0, true], ["r1", "00136795", 3.43, 0, true]], "verdict": "persistent", "snr": 8.913757501494398, "galaxy": false}, "spPlate-10655-58172.fits 126 8016.781 -1": {"frames": [["r1", "00262804", -1.48, 0, true], ["r1", "00262805", -0.85, 0, true], ["r1", "00262806", 1.91, 8388608, true], ["r1", "00262912", 4.84, 8388608, true], ["r1", "00262913", 5.76, 8978432, true], ["r1", "00262914", 3.73, 8388608, true], ["r1", "00262915", 5.7, 8388608, true], ["r1", "00262916", 3.49, 0, true]], "verdict": "persistent", "snr": 8.908494928253866, "galaxy": false}, "spPlate-5179-55957.fits 966 6888.109 -1": {"frames": [["b2", "00139338", 0.0, 83886080, false], ["b2", "00139339", 0.0, 83886080, false], ["b2", "00139340", 0.0, 83886080, false], ["b2", "00139341", 0.0, 83886080, false], ["b2", "00139401", 0.0, 83886080, false], ["b2", "00139402", 0.0, 83886080, false], ["r2", "00139338", 3.17, 0, true], ["r2", "00139339", 4.64, 0, true], ["r2", "00139340", 4.28, 0, true], ["r2", "00139341", 7.2, 0, true], ["r2", "00139401", 1.83, 0, true], ["r2", "00139402", -1.44, 33554432, true]], "verdict": "persistent", "snr": 8.908460968319668, "galaxy": false}, "spPlate-10000-58141.fits 414 5687.220 -1": {"frames": [["b1", "00260257", 1.41, 0, true], ["b1", "00260258", 0.69, 8388608, true], ["b1", "00260312", 3.05, 0, true], ["b1", "00260313", 6.84, 33554432, true], ["b1", "00260314", 4.64, 0, true], ["b1", "00260315", 1.33, 524288, true], ["b1", "00260316", 1.63, 524288, true], ["b1", "00260317", 3.34, 0, true], ["b1", "00260404", 4.06, 0, true], ["b1", "00260405", 1.96, 524288, true], ["b1", "00260406", 1.95, 0, true], ["b1", "00260407", 4.88, 0, true], ["r1", "00260257", 0.0, 71434240, false], ["r1", "00260258", 0.0, 71434240, false], ["r1", "00260312", 0.0, 71434240, false], ["r1", "00260313", 0.0, 71434240, false], ["r1", "00260314", 0.0, 71434240, false], ["r1", "00260315", 0.0, 71434240, false], ["r1", "00260316", 0.0, 71434240, false], ["r1", "00260317", 0.0, 71434240, false], ["r1", "00260404", 0.0, 71434240, false], ["r1", "00260405", 0.0, 71434240, false], ["r1", "00260406", 0.0, 71434240, false], ["r1", "00260407", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.904170726631177, "galaxy": false}, "spPlate-4496-55544.fits 353 6508.786 -1": {"frames": [["b1", "00123988", 0.0, 72024080, false], ["b1", "00123989", 0.0, 71434256, false], ["b1", "00123990", 0.0, 71434256, false], ["b1", "00123991", 0.0, 71434256, false], ["b1", "00123992", 0.0, 71434256, false], ["r1", "00123988", 5.95, 0, true], ["r1", "00123989", 3.05, 0, true], ["r1", "00123990", 4.32, 0, true], ["r1", "00123991", 3.25, 0, true], ["r1", "00123992", 3.9, 0, true]], "verdict": "persistent", "snr": 8.888753480423597, "galaxy": false}, "spPlate-4450-55540.fits 236 6434.281 -1": {"frames": [["b1", "00123748", 0.0, 71434240, false], ["b1", "00123749", 0.0, 71434240, false], ["b1", "00123750", 0.0, 71434240, false], ["b1", "00123751", 0.0, 71434240, false], ["b1", "00123752", 0.0, 71434240, false], ["b1", "00123753", 0.0, 71434240, false], ["b1", "00123754", 0.0, 71434240, false], ["r1", "00123748", 4.28, 0, true], ["r1", "00123749", 3.99, 0, true], ["r1", "00123750", 6.11, 0, true], ["r1", "00123751", 1.55, 0, true], ["r1", "00123752", 3.07, 0, true], ["r1", "00123753", 1.74, 0, true], ["r1", "00123754", 2.48, 0, true]], "verdict": "persistent", "snr": 8.878389065781901, "galaxy": false}, "spPlate-7338-58174.fits 223 6585.671 -1": {"frames": [["b1", "00263035", 0.0, 83886096, false], ["b1", "00263036", 0.0, 83886096, false], ["b1", "00263037", 0.0, 83886096, false], ["b1", "00263119", 0.0, 83886080, false], ["b1", "00263120", 0.0, 83886080, false], ["b1", "00263121", 0.0, 83886080, false], ["b1", "00263122", 0.0, 83886080, false], ["b1", "00263123", 0.0, 83886080, false], ["b1", "00263124", 0.0, 83886080, false], ["b1", "00263125", 0.0, 83886080, false], ["r1", "00263035", -1.64, 0, true], ["r1", "00263036", 1.01, 0, true], ["r1", "00263037", -1.51, 0, true], ["r1", "00263119", 4.66, 0, true], ["r1", "00263120", 4.67, 0, true], ["r1", "00263121", 4.09, 589824, true], ["r1", "00263122", 4.37, 0, true], ["r1", "00263123", 3.36, 0, true], ["r1", "00263124", 2.73, 0, true], ["r1", "00263125", 2.45, 0, true]], "verdict": "persistent", "snr": 8.876476456114792, "galaxy": false}, "spPlate-10253-58487.fits 879 8392.667 -1": {"frames": [["r2", "00280083", 0.95, 589824, true], ["r2", "00280084", 2.14, 589824, true], ["r2", "00280085", 3.48, 589824, true], ["r2", "00280086", -1.27, 589824, true]], "verdict": "unclear", "snr": 8.857608684133213, "galaxy": false}, "spPlate-8827-57444.fits 876 8968.091 -1": {"frames": [["r2", "00215672", -2.46, 589826, true], ["r2", "00215673", 0.76, 8978434, true], ["r2", "00215674", 2.9, 589826, true], ["r2", "00215675", 2.11, 589826, true]], "verdict": "unclear", "snr": 8.846055558282867, "galaxy": false}, "spPlate-7281-57007.fits 986 6238.785 -1": {"frames": [["b2", "00191014", 2.23, 0, true], ["b2", "00191015", -1.39, 0, true], ["b2", "00191016", -1.22, 0, true], ["b2", "00191085", 0.75, 0, true], ["b2", "00191086", -0.99, 0, true], ["b2", "00191087", 2.96, 33554432, true], ["b2", "00191088", 1.36, 0, true], ["b2", "00191089", 2.49, 0, true], ["b2", "00191090", 0.67, 0, true], ["r2", "00191014", 1.53, 0, true], ["r2", "00191015", -1.1, 0, true], ["r2", "00191016", 0.57, 0, true], ["r2", "00191085", 4.08, 8388608, true], ["r2", "00191086", 5.51, 8388608, true], ["r2", "00191087", 3.81, 8388608, true], ["r2", "00191088", 4.2, 8388608, true], ["r2", "00191089", 5.03, 8388608, true], ["r2", "00191090", 5.23, 8388608, true]], "verdict": "persistent", "snr": 8.845314593082886, "galaxy": false}, "spPlate-8545-58041.fits 841 8603.992 -1": {"frames": [["r2", "00251912", 2.31, 589824, true], ["r2", "00251913", 3.8, 589824, true], ["r2", "00251914", 4.8, 589824, true], ["r2", "00251915", 1.59, 589824, true]], "verdict": "persistent", "snr": 8.839212936575368, "galaxy": false}, "spPlate-5852-56034.fits 102 6605.413 -1": {"frames": [["b1", "00142555", 0.0, 83886080, false], ["b1", "00142556", 0.0, 83886080, false], ["b1", "00142557", 0.0, 83886080, false], ["r1", "00142555", 3.65, 0, true], ["r1", "00142556", 4.84, 0, true], ["r1", "00142557", 5.48, 0, true]], "verdict": "persistent", "snr": 8.837025814620732, "galaxy": false}, "spPlate-7282-56660.fits 458 9840.111 -1": {"frames": [["r1", "00171786", 1.48, 0, true], ["r1", "00171787", 2.61, 0, true], ["r1", "00171788", 2.01, 0, true], ["r1", "00171789", 3.08, 0, true], ["r1", "00171882", 2.23, 0, true], ["r1", "00171883", 3.26, 0, true], ["r1", "00171884", 6.37, 0, true], ["r1", "00171885", 2.47, 0, true]], "verdict": "persistent", "snr": 8.806879803705483, "galaxy": false}, "spPlate-9236-57685.fits 289 5624.708 -1": {"frames": [["b1", "00229936", 1.76, 0, true], ["b1", "00229937", 1.91, 16, true], ["b1", "00229938", 4.2, 16, true], ["b1", "00229939", 2.14, 16, true], ["b1", "00230042", 1.41, 0, true], ["b1", "00230043", 4.82, 0, true], ["b1", "00230044", 3.36, 0, true], ["b1", "00230045", 3.35, 0, true], ["b1", "00230136", 3.81, 0, true], ["b1", "00230137", 2.8, 0, true], ["b1", "00230138", 2.3, 0, true], ["r1", "00229936", 0.0, 71434240, false], ["r1", "00229937", 0.0, 71434240, false], ["r1", "00229938", 0.0, 71434240, false], ["r1", "00229939", 0.0, 71434240, false], ["r1", "00230042", 0.0, 71434240, false], ["r1", "00230043", 0.0, 71434240, false], ["r1", "00230044", 0.0, 71434240, false], ["r1", "00230045", 0.0, 71434240, false], ["r1", "00230136", 0.0, 71434240, false], ["r1", "00230137", 0.0, 71434240, false], ["r1", "00230138", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.788473826354728, "galaxy": false}, "spPlate-11306-58450.fits 418 8542.795 -1": {"frames": [["r1", "00277831", 4.73, 8388608, true], ["r1", "00277832", 4.72, 8388608, true], ["r1", "00277833", 4.18, 8388608, true], ["r1", "00277834", 4.04, 8388608, true], ["r1", "00277835", 2.93, 8388608, true]], "verdict": "persistent", "snr": 8.76806672725962, "galaxy": false}, "spPlate-7726-58154.fits 841 8321.469 -1": {"frames": [["r2", "00261601", 1.95, 589824, true], ["r2", "00261602", 2.48, 589824, true], ["r2", "00261603", 2.43, 589824, true], ["r2", "00261604", 1.17, 589824, true], ["r2", "00261605", 2.49, 589824, true]], "verdict": "unclear", "snr": 8.764094217827589, "galaxy": false}, "spPlate-5806-56310.fits 654 6694.220 -1": {"frames": [["b2", "00154719", 0.0, 83886080, false], ["b2", "00154720", 0.0, 83886080, false], ["b2", "00154721", 0.0, 83886080, false], ["b2", "00154722", 0.0, 83886080, false], ["b2", "00154723", 0.0, 83886080, false], ["r2", "00154719", 6.45, 589824, true], ["r2", "00154720", 2.71, 0, true], ["r2", "00154721", 5.27, 0, true], ["r2", "00154722", 2.84, 0, true], ["r2", "00154723", 4.59, 0, true]], "verdict": "persistent", "snr": 8.750348431879186, "galaxy": false}, "spPlate-6592-56535.fits 276 6469.936 -1": {"frames": [["b1", "00165452", 0.0, 71434240, false], ["b1", "00165453", 0.0, 71434240, false], ["b1", "00165454", 0.0, 71434240, false], ["b1", "00165455", 0.0, 71434240, false], ["b1", "00165456", 0.0, 71434240, false], ["b1", "00165457", 0.0, 71434240, false], ["r1", "00165452", 4.82, 8978432, true], ["r1", "00165453", 3.08, 8388608, true], ["r1", "00165454", 4.01, 8388608, true], ["r1", "00165455", 3.79, 0, true], ["r1", "00165456", 5.07, 8388608, true], ["r1", "00165457", 3.55, 8388608, true]], "verdict": "persistent", "snr": 8.744937767432296, "galaxy": false}, "spPlate-11388-58487.fits 800 5343.182 -1": {"frames": [["b2", "00280075", 5.61, 0, true], ["b2", "00280076", 4.44, 0, true], ["b2", "00280077", 2.88, 0, true], ["b2", "00280078", 3.86, 0, true], ["r2", "00280075", 0.0, 71434240, false], ["r2", "00280076", 0.0, 71434240, false], ["r2", "00280077", 0.0, 71434240, false], ["r2", "00280078", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.743191961851426, "galaxy": false}, "spPlate-9378-58071.fits 459 4661.224 -1": {"frames": [["b1", "00254357", 3.79, 0, true], ["b1", "00254358", 3.5, 0, true], ["b1", "00254359", 4.26, 0, true], ["b1", "00254360", 2.62, 0, true], ["b1", "00254361", 2.03, 0, true], ["b1", "00254362", 2.7, 0, true], ["b1", "00254363", 2.89, 0, true]], "verdict": "persistent", "snr": 8.730284403496762, "galaxy": false}, "spPlate-7338-58503.fits 337 3635.800 -1": {"frames": [["b1", "00281197", -3.31, 0, true], ["b1", "00281198", -2.63, 0, true], ["b1", "00281199", -2.48, 0, true], ["b1", "00281200", 3.11, 0, true], ["b1", "00281201", 2.9, 0, true], ["b1", "00281202", 5.52, 0, true], ["b1", "00281203", 2.75, 0, true], ["b1", "00281204", 1.86, 0, true], ["b1", "00281205", 2.07, 0, true]], "verdict": "persistent", "snr": 8.714149009258218, "galaxy": false}, "spPlate-7868-57006.fits 527 6008.970 -1": {"frames": [["b2", "00190980", 0.98, 0, true], ["b2", "00190981", 1.96, 0, true], ["b2", "00190982", 2.09, 0, true], ["b2", "00190983", -1.63, 33554432, true], ["b2", "00190984", -1.19, 0, true], ["r2", "00190980", 2.97, 33554454, true], ["r2", "00190981", -1.45, 524310, true], ["r2", "00190982", 3.8, 33554454, true], ["r2", "00190983", 2.11, 33554454, true], ["r2", "00190984", 3.81, 33554454, true]], "verdict": "persistent", "snr": 8.713417780970113, "galaxy": false}, "spPlate-8370-57732.fits 878 8100.279 -1": {"frames": [["r2", "00233312", 4.61, 8978448, true], ["r2", "00233406", 0.0, 720912, false], ["r2", "00233407", 0.0, 720912, false]], "verdict": "one frame", "snr": 8.70409952240585, "galaxy": false}, "spPlate-6201-56186.fits 562 6498.304 -1": {"frames": [["b2", "00147306", 0.0, 71434240, false], ["b2", "00147307", 0.0, 71434240, false], ["b2", "00147308", 0.0, 71434240, false], ["b2", "00147309", 0.0, 71434240, false], ["b2", "00147310", 0.0, 71434240, false], ["b2", "00147311", 0.0, 71434256, false], ["r2", "00147306", 3.35, 8388608, true], ["r2", "00147307", 5.92, 8388608, true], ["r2", "00147308", 3.81, 8388608, true], ["r2", "00147309", 2.71, 0, true], ["r2", "00147310", 2.97, 8388608, true], ["r2", "00147311", 2.56, 0, true]], "verdict": "persistent", "snr": 8.702838776158124, "galaxy": false}, "spPlate-8870-57779.fits 442 4381.270 -1": {"frames": [["b1", "00235921", 1.53, 0, true], ["b1", "00235922", 2.64, 0, true], ["b1", "00236045", 4.65, 0, true], ["b1", "00236046", -1.06, 0, true], ["b1", "00236047", 4.45, 0, true], ["b1", "00236048", 1.55, 0, true], ["b1", "00236049", 2.96, 0, true]], "verdict": "persistent", "snr": 8.69088319940882, "galaxy": false}, "spPlate-4198-55480.fits 912 6469.936 -1": {"frames": [["b2", "00120319", 0.0, 71434240, false], ["b2", "00120320", 0.0, 71434240, false], ["b2", "00120321", 0.0, 71434240, false], ["b2", "00120322", 0.0, 71434240, false], ["b2", "00120323", 0.0, 71434240, false], ["b2", "00120324", 0.0, 71434240, false], ["b2", "00120325", 0.0, 71434240, false], ["r2", "00120319", 2.39, 8388608, true], ["r2", "00120320", 3.96, 8388608, true], ["r2", "00120321", 1.83, 8388608, true], ["r2", "00120322", 3.31, 8388608, true], ["r2", "00120323", 3.69, 8388608, true], ["r2", "00120324", 2.95, 8388608, true], ["r2", "00120325", 5.19, 8388608, true]], "verdict": "persistent", "snr": 8.680611683373474, "galaxy": false}, "spPlate-3823-55534.fits 536 6620.640 -1": {"frames": [["b2", "00123279", 0.0, 71434240, false], ["b2", "00123280", 0.0, 71434240, false], ["b2", "00123283", 0.0, 71434240, false], ["b2", "00123284", 0.0, 71434240, false], ["b2", "00123285", 0.0, 71434240, false], ["b2", "00123286", 0.0, 71434240, false], ["b2", "00123287", 0.0, 71434240, false], ["b2", "00123288", 0.0, 71434240, false], ["r2", "00123279", 3.53, 0, true], ["r2", "00123280", 3.19, 0, true], ["r2", "00123283", 5.13, 0, true], ["r2", "00123284", 2.63, 0, true], ["r2", "00123285", 2.3, 0, true], ["r2", "00123286", 4.01, 0, true], ["r2", "00123287", -1.23, 0, true], ["r2", "00123288", 2.45, 0, true]], "verdict": "persistent", "snr": 8.672786043747914, "galaxy": false}, "spPlate-9431-58102.fits 149 5089.792 -1": {"frames": [["b1", "00257092", 2.45, 0, true], ["b1", "00257093", 1.96, 0, true], ["b1", "00257094", 3.0, 0, true], ["b1", "00257095", 3.21, 0, true], ["b1", "00257096", 4.02, 0, true], ["b1", "00257097", 1.94, 0, true], ["b1", "00257098", 5.1, 0, true], ["b1", "00257099", 2.38, 0, true], ["b1", "00257100", 4.0, 0, true]], "verdict": "persistent", "snr": 8.646647441622168, "galaxy": false}, "spPlate-8732-57418.fits 239 3991.168 -1": {"frames": [["b1", "00213293", 1.57, 0, true], ["b1", "00213294", 3.17, 0, true], ["b1", "00213295", 3.26, 0, true], ["b1", "00213385", 4.84, 0, true], ["b1", "00213386", 3.31, 0, true], ["b1", "00213387", 4.54, 0, true], ["b1", "00213388", 2.4, 0, true], ["b1", "00213480", 3.72, 0, true]], "verdict": "persistent", "snr": 8.602049453520848, "galaxy": false}, "spPlate-10256-58193.fits 835 7207.755 -1": {"frames": [["b2", "00264356", 0.0, 83886080, false], ["b2", "00264357", 0.0, 83886080, false], ["b2", "00264358", 0.0, 83886080, false], ["b2", "00264500", 0.0, 83886080, false], ["b2", "00264501", 0.0, 83886080, false], ["b2", "00264502", 0.0, 83886080, false], ["r2", "00264356", -1.08, 0, true], ["r2", "00264357", 2.69, 0, true], ["r2", "00264358", 2.9, 0, true], ["r2", "00264500", -1.69, 0, true], ["r2", "00264501", 4.33, 0, true], ["r2", "00264502", 0.95, 0, true]], "verdict": "persistent", "snr": 8.60157522693404, "galaxy": false}, "spPlate-4900-55739.fits 252 10064.681 -1": {"frames": [["r1", "00132289", 4.04, 8388608, true], ["r1", "00132290", 4.49, 8388608, true], ["r1", "00132291", 6.9, 8388608, true], ["r1", "00132292", 4.43, 8388608, true], ["r1", "00132293", 3.08, 8388608, true]], "verdict": "persistent", "snr": 8.590360289089872, "galaxy": false}, "spPlate-4723-55748.fits 374 7948.771 -1": {"frames": [["r1", "00132810", 8.6, 8912896, true]], "verdict": "one frame", "snr": 8.58006691271183, "galaxy": false}, "spPlate-3693-55192.fits 846 6683.439 -1": {"frames": [["b2", "00105558", 0.0, 83886080, false], ["b2", "00105559", 0.0, 83886080, false], ["b2", "00105560", 0.0, 83886080, false], ["b2", "00105561", 0.0, 83886080, false], ["r2", "00105558", 87368033444.78, 0, true], ["r2", "00105559", 4.4499809833378934e+18, 0, true], ["r2", "00105560", 8757052531080.44, 0, true], ["r2", "00105561", 2.79, 0, true]], "verdict": "one exposure", "snr": 8.57859076651979, "galaxy": false}, "spPlate-10251-58173.fits 284 6381.165 -1": {"frames": [["b1", "00263025", 0.0, 71434240, false], ["b1", "00263026", 0.0, 71434240, false], ["b1", "00263027", 0.0, 71434240, false], ["b1", "00263028", 0.0, 71434240, false], ["b1", "00263029", 0.0, 71434240, false], ["b1", "00263030", 0.0, 71434240, false], ["r1", "00263025", 4.01, 0, true], ["r1", "00263026", 4.81, 0, true], ["r1", "00263027", 2.77, 0, true], ["r1", "00263028", 5.56, 0, true], ["r1", "00263029", 3.24, 0, true], ["r1", "00263030", 2.78, 0, true]], "verdict": "persistent", "snr": 8.56881822732641, "galaxy": false}, "spPlate-11387-58512.fits 799 5344.413 -1": {"frames": [["b2", "00282293", 7.08, 0, true], ["b2", "00282294", 3.24, 0, true], ["b2", "00282295", 3.82, 0, true], ["b2", "00282296", 6.12, 0, true], ["r2", "00282293", 0.0, 71434240, false], ["r2", "00282294", 0.0, 71434240, false], ["r2", "00282295", 0.0, 71434240, false], ["r2", "00282296", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.563391895590923, "galaxy": false}, "spPlate-9364-57699.fits 612 6465.468 -1": {"frames": [["b2", "00231145", 0.0, 71434240, false], ["b2", "00231146", 0.0, 71434240, false], ["b2", "00231147", 0.0, 71434240, false], ["b2", "00231148", 0.0, 71434240, false], ["b2", "00231149", 0.0, 71434240, false], ["b2", "00231150", 0.0, 71434240, false], ["r2", "00231145", 4.16, 8388608, true], ["r2", "00231146", 4.55, 8388608, true], ["r2", "00231147", 3.26, 8388608, true], ["r2", "00231148", 2.56, 0, true], ["r2", "00231149", 2.82, 0, true], ["r2", "00231150", 3.44, 0, true]], "verdict": "persistent", "snr": 8.558999481201072, "galaxy": false}, "spPlate-8762-57693.fits 305 4320.162 -1": {"frames": [["b1", "00230668", 1.6, 0, true], ["b1", "00230669", 1.21, 0, true], ["b1", "00230868", 5.58, 0, true], ["b1", "00230869", 4.6, 0, true], ["b1", "00230870", 4.09, 0, true]], "verdict": "persistent", "snr": 8.557891539480744, "galaxy": false}, "spPlate-9318-58068.fits 135 6480.373 -1": {"frames": [["b1", "00254086", 0.0, 71434240, false], ["b1", "00254087", 0.0, 71434240, false], ["b1", "00254088", 0.0, 71434240, false], ["b1", "00254089", 0.0, 71434240, false], ["b1", "00254090", 0.0, 71434240, false], ["r1", "00254086", 5.41, 0, true], ["r1", "00254087", 4.06, 0, true], ["r1", "00254088", 3.29, 0, true], ["r1", "00254089", 5.44, 0, true], ["r1", "00254090", 4.68, 0, true]], "verdict": "persistent", "snr": 8.552012865607518, "galaxy": false}, "spPlate-7126-56568.fits 466 9860.524 -1": {"frames": [["r1", "00167143", 2.75, 0, true], ["r1", "00167144", -1.16, 0, true], ["r1", "00167145", 2.81, 0, true]], "verdict": "persistent", "snr": 8.548620589688396, "galaxy": false}, "spPlate-3615-55153.fits 332 4274.644 -1": {"frames": [["b1", "00103785", 5.1517114003068806e+17, 67108864, true], ["b1", "00103786", -6726758698816.92, 67108864, true], ["b1", "00103787", 1199368675358.69, 67108864, true], ["b1", "00103788", 5954066375068636.0, 67108864, true]], "verdict": "one exposure", "snr": 8.544889377273261, "galaxy": false}, "spPlate-3615-55153.fits 312 4932.874 -1": {"frames": [["b1", "00103785", 9648933942.09, 67108864, true], ["b1", "00103786", -1.2394610957855263e+18, 67108864, true], ["b1", "00103787", 33244003692.24, 67108864, true], ["b1", "00103788", 441477368289.19, 67633152, true]], "verdict": "one exposure", "snr": 8.530904141965719, "galaxy": false}, "spPlate-11307-58430.fits 950 6463.980 -1": {"frames": [["b2", "00275829", 0.0, 71434240, false], ["b2", "00275830", 0.0, 71434240, false], ["b2", "00275831", 0.0, 71434240, false], ["b2", "00275832", 0.0, 71434240, false], ["r2", "00275829", 4.53, 8388608, true], ["r2", "00275830", 3.09, 0, true], ["r2", "00275831", 5.04, 0, true], ["r2", "00275832", 4.27, 0, true]], "verdict": "persistent", "snr": 8.511751968646367, "galaxy": false}, "spPlate-7168-56625.fits 191 6379.696 -1": {"frames": [["b1", "00170025", 0.0, 71434240, false], ["b1", "00170026", 0.0, 71434240, false], ["b1", "00170027", 0.0, 71434240, false], ["b1", "00170028", 0.0, 71434240, false], ["b1", "00170029", 0.0, 71434240, false], ["r1", "00170025", 3.02, 0, true], ["r1", "00170026", 3.44, 0, true], ["r1", "00170027", 2.97, 0, true], ["r1", "00170028", 4.92, 0, true], ["r1", "00170029", 3.95, 0, true]], "verdict": "persistent", "snr": 8.481437619223868, "galaxy": false}, "spPlate-11082-58508.fits 538 10339.511 -1": {"frames": [["r2", "00280259", 2.85, 0, true], ["r2", "00281773", 1.7, 0, true], ["r2", "00281774", 1.54, 0, true], ["r2", "00281775", 2.06, 0, true], ["r2", "00281776", 4.11, 0, true]], "verdict": "persistent", "snr": 8.480361483796054, "galaxy": false}, "spPlate-8224-57378.fits 825 6446.144 -1": {"frames": [["b2", "00211053", 0.0, 71434240, false], ["b2", "00211054", 0.0, 71434240, false], ["b2", "00211055", 0.0, 71434240, false], ["b2", "00211056", 0.0, 71434240, false], ["b2", "00211057", 0.0, 71434240, false], ["b2", "00211058", 0.0, 71434240, false], ["b2", "00211150", 0.0, 71434240, false], ["b2", "00211151", 0.0, 71434240, false], ["r2", "00211053", 4.55, 0, true], ["r2", "00211054", 4.28, 0, true], ["r2", "00211055", 4.39, 0, true], ["r2", "00211056", 4.21, 0, true], ["r2", "00211057", 3.69, 0, true], ["r2", "00211058", 3.97, 0, true], ["r2", "00211150", 0.89, 0, true], ["r2", "00211151", -1.45, 0, true]], "verdict": "persistent", "snr": 8.478846814945735, "galaxy": false}, "spPlate-5064-55864.fits 214 6505.789 -1": {"frames": [["b1", "00135774", 0.0, 71434240, false], ["b1", "00135775", 0.0, 71434240, false], ["b1", "00135776", 0.0, 71434240, false], ["b1", "00135777", 0.0, 71434240, false], ["b1", "00135778", 0.0, 71434240, false], ["b1", "00135779", 0.0, 71434240, false], ["b1", "00135780", 0.0, 71434240, false], ["b1", "00135781", 0.0, 71434240, false], ["r1", "00135774", 3.0, 0, true], ["r1", "00135775", 5.44, 0, true], ["r1", "00135776", 4.14, 0, true], ["r1", "00135777", 3.0, 0, true], ["r1", "00135778", 2.89, 0, true], ["r1", "00135779", 2.04, 0, true], ["r1", "00135780", 3.47, 0, true], ["r1", "00135781", 3.56, 8388608, true]], "verdict": "persistent", "snr": 8.47460127339683, "galaxy": false}, "spPlate-5296-55922.fits 212 6608.456 -1": {"frames": [["b1", "00137526", 0.0, 83886080, false], ["b1", "00137527", 0.0, 83886080, false], ["b1", "00137528", 0.0, 83886080, false], ["b1", "00137529", 0.0, 83886080, false], ["b1", "00137530", 0.0, 83886080, false], ["b1", "00137531", 0.0, 83886080, false], ["b1", "00137741", 0.0, 83886080, false], ["r1", "00137526", 3.29, 0, true], ["r1", "00137527", 3.23, 0, true], ["r1", "00137528", 4.16, 0, true], ["r1", "00137529", 4.31, 0, true], ["r1", "00137530", 4.1, 0, true], ["r1", "00137531", 2.99, 0, true], ["r1", "00137741", -0.77, 0, true]], "verdict": "persistent", "snr": 8.453073862297302, "galaxy": false}, "spPlate-6379-56340.fits 832 5842.517 -1": {"frames": [["b2", "00156663", -1.33, 0, true], ["b2", "00156666", 1.57, 0, true], ["b2", "00156667", 2.9, 0, true], ["b2", "00156668", 0.47, 0, true], ["b2", "00156669", -1.04, 0, true], ["b2", "00156670", -1.63, 0, true], ["b2", "00156671", 0.52, 0, true], ["b2", "00156762", 1.51, 0, true], ["b2", "00156763", 1.86, 0, true], ["r2", "00156663", 4.69, 0, true], ["r2", "00156666", 5.02, 0, true], ["r2", "00156667", 4.47, 0, true], ["r2", "00156668", 5.65, 0, true], ["r2", "00156669", 7.6, 0, true], ["r2", "00156670", 7.56, 0, true], ["r2", "00156671", 4.91, 0, true], ["r2", "00156762", 0.0, 71434240, false], ["r2", "00156763", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.423690563600717, "galaxy": false}, "spPlate-7257-56658.fits 367 4524.806 -1": {"frames": [["b1", "00171680", -2.75, 33554560, true], ["b1", "00171681", 3.32, 33554560, true], ["b1", "00171682", 4.66, 33554560, true], ["b1", "00171683", -3.01, 128, true], ["b1", "00171684", 5.37, 128, true]], "verdict": "persistent", "snr": 8.42340020333763, "galaxy": false}, "spPlate-7300-56707.fits 554 10349.038 -1": {"frames": [["r2", "00175244", 3.39, 8388608, true], ["r2", "00175245", 4.37, 8388608, true], ["r2", "00175246", 3.22, 8388608, true], ["r2", "00175247", 4.33, 8388608, true], ["r2", "00175248", 2.87, 0, true], ["r2", "00175249", 1.19, 0, true], ["r2", "00175250", 4.11, 8388608, true], ["r2", "00175251", 3.81, 8388608, true]], "verdict": "persistent", "snr": 8.416378638171254, "galaxy": false}, "spPlate-11378-58437.fits 118 7497.216 -1": {"frames": [["r1", "00276450", 3.63, 0, true], ["r1", "00276451", 5.58, 0, true], ["r1", "00276452", 4.79, 0, true]], "verdict": "persistent", "snr": 8.409744998073535, "galaxy": false}, "spPlate-7338-58503.fits 907 6319.751 -1": {"frames": [["b2", "00281197", 2.31, 0, true], ["b2", "00281198", 1.64, 0, true], ["b2", "00281199", 1.04, 0, true], ["b2", "00281200", 1.02, 0, true], ["b2", "00281201", 1.8, 0, true], ["b2", "00281202", 2.1, 0, true], ["b2", "00281203", 0.8, 0, true], ["b2", "00281204", 0.31, 0, true], ["b2", "00281205", -1.31, 33554432, true], ["r2", "00281197", 3.56, 0, true], ["r2", "00281198", 3.32, 0, true], ["r2", "00281199", 6.03, 0, true], ["r2", "00281200", 2.62, 0, true], ["r2", "00281201", 3.28, 0, true], ["r2", "00281202", 4.23, 0, true], ["r2", "00281203", 2.95, 0, true], ["r2", "00281204", 3.9, 0, true], ["r2", "00281205", 1.58, 0, true]], "verdict": "persistent", "snr": 8.40714297777895, "galaxy": false}, "spPlate-7110-56746.fits 846 6359.164 -1": {"frames": [["b2", "00177758", 0.0, 71303168, false], ["b2", "00177759", 0.0, 71303168, false], ["b2", "00177760", 0.0, 71303168, false], ["b2", "00177761", 0.0, 71303168, false], ["r2", "00177758", 3.75, 0, true], ["r2", "00177759", 4.63, 0, true], ["r2", "00177760", 2.88, 0, true], ["r2", "00177761", 4.06, 0, true]], "verdict": "persistent", "snr": 8.403009532937592, "galaxy": false}, "spPlate-6630-56358.fits 636 6165.950 -1": {"frames": [["b2", "00157479", -1.69, 0, true], ["b2", "00157480", 1.73, 0, true], ["b2", "00157651", -0.59, 0, true], ["b2", "00157652", 0.97, 0, true], ["b2", "00157653", 3.34, 0, true], ["b2", "00157655", 1.88, 0, true], ["r2", "00157479", 1.44, 0, true], ["r2", "00157480", 1.78, 0, true], ["r2", "00157651", 7.37, 0, true], ["r2", "00157652", 5.3, 0, true], ["r2", "00157653", 4.83, 0, true], ["r2", "00157655", 5.17, 0, true]], "verdict": "persistent", "snr": 8.394396886309174, "galaxy": false}, "spPlate-6796-56453.fits 868 6498.304 -1": {"frames": [["b2", "00163119", 0.0, 71434240, false], ["b2", "00163120", 0.0, 71434240, false], ["b2", "00163121", 0.0, 71434240, false], ["b2", "00163122", 0.0, 71434240, false], ["r2", "00163119", 4.01, 8388608, true], ["r2", "00163120", 4.05, 8388608, true], ["r2", "00163121", 3.72, 0, true], ["r2", "00163122", 5.06, 0, true]], "verdict": "persistent", "snr": 8.394155926970772, "galaxy": false}, "spPlate-3672-55484.fits 384 9734.194 -1": {"frames": [["r1", "00120572", 0.68, 0, true], ["r1", "00120573", 2.9, 0, true], ["r1", "00120574", -1.23, 0, true], ["r1", "00120575", 1.36, 8388608, true], ["r1", "00120576", 1.25, 8388608, true]], "verdict": "unclear", "snr": 8.392719056835148, "galaxy": false}, "spPlate-8301-57390.fits 332 6591.739 -1": {"frames": [["b1", "00211562", 0.0, 83886080, false], ["b1", "00211563", 0.0, 83886080, false], ["b1", "00211564", 0.0, 83886080, false], ["r1", "00211562", 1.03, 0, true], ["r1", "00211563", -1.65, 851968, true], ["r1", "00211564", 10.89, 0, true]], "verdict": "one exposure", "snr": 8.382060866275022, "galaxy": false}, "spPlate-10761-58283.fits 834 7351.907 -1": {"frames": [["r2", "00270799", -0.68, 0, true], ["r2", "00270800", 1.07, 0, true], ["r2", "00270801", 2.76, 0, true], ["r2", "00270802", 3.87, 0, true], ["r2", "00270803", 1.41, 851968, true], ["r2", "00270804", 2.75, 0, true]], "verdict": "persistent", "snr": 8.372287251376623, "galaxy": false}, "spPlate-9588-57782.fits 416 9819.740 -1": {"frames": [["r1", "00236193", 4.87, 8388608, true], ["r1", "00236194", 5.5, 8388608, true], ["r1", "00236195", 6.64, 8388608, true], ["r1", "00236196", 5.92, 8388608, true], ["r1", "00236197", 5.3, 8388608, true], ["r1", "00236294", 1.73, 0, true], ["r1", "00236295", -1.4, 8388608, true], ["r1", "00236296", 1.05, 8388608, true], ["r1", "00236297", -2.12, 41943040, true], ["r1", "00236298", -0.69, 33554432, true]], "verdict": "persistent", "snr": 8.356070858942465, "galaxy": false}, "spPlate-7339-56739.fits 244 7773.203 -1": {"frames": [["r1", "00177195", 3.42, 0, true], ["r1", "00177196", 2.37, 0, true], ["r1", "00177197", 3.09, 0, true], ["r1", "00177198", 1.93, 0, true], ["r1", "00177199", 2.48, 0, true], ["r1", "00177200", 4.22, 0, true], ["r1", "00177201", 2.03, 0, true], ["r1", "00177202", 5.83, 0, true]], "verdict": "persistent", "snr": 8.327623607090414, "galaxy": false}, "spPlate-6725-56390.fits 796 7326.558 -1": {"frames": [["r2", "00159742", 2.36, 0, true], ["r2", "00159819", 4.25, 0, true], ["r2", "00159820", 4.14, 0, true], ["r2", "00159821", 4.64, 0, true], ["r2", "00159822", 4.2, 0, true]], "verdict": "persistent", "snr": 8.31054718650042, "galaxy": false}, "spPlate-9626-57875.fits 421 5411.280 -1": {"frames": [["b1", "00243158", 4.09, 0, true], ["b1", "00243159", 5.23, 0, true], ["b1", "00243160", 2.27, 0, true], ["b1", "00243161", 3.81, 0, true], ["b1", "00243162", 4.98, 0, true], ["r1", "00243158", 0.0, 71434240, false], ["r1", "00243159", 0.0, 71434240, false], ["r1", "00243160", 0.0, 71434240, false], ["r1", "00243161", 0.0, 71434240, false], ["r1", "00243162", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.298803821341977, "galaxy": false}, "spPlate-9147-58038.fits 834 7974.436 -1": {"frames": [["r2", "00251664", 1.51, 8388608, true], ["r2", "00251665", 2.12, 8388608, true], ["r2", "00251666", 1.08, 0, true], ["r2", "00251667", 1.07, 8388608, true], ["r2", "00251668", 2.16, 0, true], ["r2", "00251669", 4.84, 0, true]], "verdict": "unclear", "snr": 8.286979112869146, "galaxy": false}, "spPlate-11047-58424.fits 963 5681.984 -1": {"frames": [["b2", "00275249", 4.06, 0, true], ["b2", "00275250", 4.39, 0, true], ["b2", "00275251", 1.87, 0, true], ["b2", "00275252", 5.27, 0, true], ["b2", "00275253", 5.07, 0, true], ["r2", "00275249", 0.0, 71434240, false], ["r2", "00275250", 0.0, 71434240, false], ["r2", "00275251", 0.0, 71434240, false], ["r2", "00275252", 0.0, 71434240, false], ["r2", "00275253", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.273181291559059, "galaxy": false}, "spPlate-5352-56269.fits 626 7090.878 -1": {"frames": [["b2", "00152035", 0.0, 83886080, false], ["b2", "00152036", 0.0, 83886080, false], ["b2", "00152037", 0.0, 83886080, false], ["b2", "00152038", 0.0, 83886080, false], ["b2", "00152039", 0.0, 83886080, false], ["b2", "00152040", 0.0, 83886080, false], ["b2", "00152041", 0.0, 83886080, false], ["r2", "00152035", 2.89, 0, true], ["r2", "00152036", 2.59, 0, true], ["r2", "00152037", 2.92, 0, true], ["r2", "00152038", 3.54, 0, true], ["r2", "00152039", 2.38, 0, true], ["r2", "00152040", 3.26, 851968, true], ["r2", "00152041", 2.3, 0, true]], "verdict": "persistent", "snr": 8.267061283522269, "galaxy": false}, "spPlate-5066-55749.fits 478 6471.426 -1": {"frames": [["b1", "00132875", 0.0, 71434240, false], ["b1", "00132876", 0.0, 71434240, false], ["b1", "00132877", 0.0, 71434240, false], ["b1", "00132878", 0.0, 71434240, false], ["r1", "00132875", 3.03, 8388608, true], ["r1", "00132876", 5.0, 8388608, true], ["r1", "00132877", 3.4, 0, true], ["r1", "00132878", 3.63, 0, true]], "verdict": "persistent", "snr": 8.260614898469901, "galaxy": false}, "spPlate-5943-56218.fits 890 6535.819 -1": {"frames": [["b2", "00149025", 0.0, 71434240, false], ["b2", "00149177", 0.0, 71434240, false], ["b2", "00149178", 0.0, 71434240, false], ["b2", "00149179", 0.0, 71434240, false], ["b2", "00149180", 0.0, 71434240, false], ["b2", "00149285", 0.0, 71434240, false], ["b2", "00149286", 0.0, 71434240, false], ["b2", "00149287", 0.0, 71434240, false], ["r2", "00149025", 1.18, 0, true], ["r2", "00149177", 4.64, 8388608, true], ["r2", "00149178", 4.22, 8388608, true], ["r2", "00149179", 4.74, 8388608, true], ["r2", "00149180", 5.57, 8388608, true], ["r2", "00149285", -2.0, 0, true], ["r2", "00149286", 0.45, 8388608, true], ["r2", "00149287", -1.18, 0, true]], "verdict": "persistent", "snr": 8.260332996576544, "galaxy": false}, "spPlate-3683-55245.fits 486 6446.144 -1": {"frames": [["b1", "00108677", 0.0, 71434240, false], ["b1", "00108678", 0.0, 71434240, false], ["b1", "00108679", 0.0, 71434240, false], ["b1", "00108680", 0.0, 71434240, false], ["b1", "00108681", 0.0, 71434240, false], ["b1", "00108682", 0.0, 71434240, false], ["b1", "00108683", 0.0, 71434240, false], ["r1", "00108677", 0.0, 0, true], ["r1", "00108678", 0.0, 0, true], ["r1", "00108679", 1.02, 0, true], ["r1", "00108680", -6.202144644946694e+17, 0, true], ["r1", "00108681", 8.878242525814618e+16, 0, true], ["r1", "00108682", 2.398130941615948e+16, 0, true], ["r1", "00108683", 6.267128937881716e+18, 589824, true]], "verdict": "one exposure", "snr": 8.246604920843932, "galaxy": false}, "spPlate-9592-58083.fits 10 6210.120 -1": {"frames": [["b1", "00255597", 1.18, 0, true], ["b1", "00255598", 1.77, 0, true], ["b1", "00255599", 0.94, 0, true], ["r1", "00255597", 4.88, 0, true], ["r1", "00255598", 6.33, 0, true], ["r1", "00255599", 4.73, 0, true]], "verdict": "one camera", "snr": 8.224150061025728, "galaxy": false}, "spPlate-9203-57692.fits 243 5372.792 -1": {"frames": [["b1", "00230497", 4.83, 0, true], ["b1", "00230652", 3.88, 0, true], ["b1", "00230653", 3.51, 0, true], ["b1", "00230654", 3.94, 0, true], ["b1", "00230655", 1.05, 0, true], ["b1", "00230752", 5.25, 33554432, true], ["b1", "00230753", 4.94, 0, true], ["r1", "00230497", 0.0, 71434240, false], ["r1", "00230652", 0.0, 71434240, false], ["r1", "00230653", 0.0, 71434240, false], ["r1", "00230654", 0.0, 71434240, false], ["r1", "00230655", 0.0, 71434240, false], ["r1", "00230752", 0.0, 71434240, false], ["r1", "00230753", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.214374353492412, "galaxy": false}, "spPlate-3615-55153.fits 332 4392.381 -1": {"frames": [["b1", "00103785", 0.0, 67108864, true], ["b1", "00103786", 1208117129285460.5, 67108864, true], ["b1", "00103787", 0.0, 67108864, true], ["b1", "00103788", 0.0, 67108864, true]], "verdict": "one exposure", "snr": 8.211127196653374, "galaxy": false}, "spPlate-9626-57875.fits 438 4639.808 -1": {"frames": [["b1", "00243158", 3.12, 0, true], ["b1", "00243159", 3.06, 0, true], ["b1", "00243160", 2.66, 0, true], ["b1", "00243161", 3.5, 0, true], ["b1", "00243162", 1.83, 0, true]], "verdict": "persistent", "snr": 8.20349643068275, "galaxy": false}, "spPlate-7399-57162.fits 267 7423.351 -1": {"frames": [["r1", "00199928", -0.64, 0, true], ["r1", "00199929", 11.78, 0, true], ["r1", "00199930", 1.85, 0, true]], "verdict": "one exposure", "snr": 8.19858044220524, "galaxy": false}, "spPlate-3647-56219.fits 626 8104.011 -1": {"frames": [["r2", "00149385", 4.2, 0, true], ["r2", "00149386", 4.7, 8388608, true], ["r2", "00149387", 3.01, 8388608, true], ["r2", "00149388", 1.89, 8388608, true], ["r2", "00149389", 4.4, 8388608, true], ["r2", "00149390", 3.34, 8388608, true]], "verdict": "persistent", "snr": 8.19795450117356, "galaxy": false}, "spPlate-5982-56074.fits 644 6546.362 -1": {"frames": [["b2", "00144381", 0.0, 71434240, false], ["b2", "00144382", 0.0, 71434240, false], ["b2", "00144383", 0.0, 71434240, false], ["b2", "00144384", 0.0, 71434240, false], ["r2", "00144381", 2.95, 0, true], ["r2", "00144382", 4.33, 0, true], ["r2", "00144383", 3.53, 0, true], ["r2", "00144384", 3.59, 0, true]], "verdict": "persistent", "snr": 8.190650698850236, "galaxy": false}, "spPlate-5175-55955.fits 460 10199.996 -1": {"frames": [["r1", "00138916", -1.25, 8388608, true], ["r1", "00138921", 3.37, 0, true], ["r1", "00139053", 2.19, 0, true], ["r1", "00139054", 1.53, 0, true], ["r1", "00139055", 2.96, 0, true], ["r1", "00139056", 4.43, 0, true], ["r1", "00139167", 1.58, 8388608, true], ["r1", "00139168", 3.26, 0, true], ["r1", "00139169", 1.7, 589824, true], ["r1", "00139170", 1.32, 0, true], ["r1", "00139171", 4.56, 0, true], ["r1", "00139172", 2.15, 0, true], ["r1", "00139270", 2.12, 0, true], ["r1", "00139271", 3.58, 8388608, true], ["r1", "00139272", 3.35, 0, true]], "verdict": "persistent", "snr": 8.187852339689984, "galaxy": false}, "spPlate-8195-57391.fits 134 6481.865 -1": {"frames": [["b1", "00211663", 0.0, 71434240, false], ["b1", "00211664", 0.0, 71434240, false], ["b1", "00211665", 0.0, 71434240, false], ["b1", "00211666", 0.0, 71434240, false], ["r1", "00211663", 4.51, 0, true], ["r1", "00211664", 5.15, 0, true], ["r1", "00211665", 4.85, 0, true], ["r1", "00211666", 3.58, 0, true]], "verdict": "persistent", "snr": 8.17966451878288, "galaxy": false}, "spPlate-6412-56358.fits 188 4188.900 -1": {"frames": [["b1", "00157623", 4.29, 0, true], ["b1", "00157624", 3.68, 0, true], ["b1", "00157625", 4.44, 0, true]], "verdict": "persistent", "snr": 8.168054321752383, "galaxy": false}, "spPlate-7656-57338.fits 582 3937.314 -1": {"frames": [["b2", "00207956", 1.49, 0, true], ["b2", "00208038", 4.21, 0, true], ["b2", "00208039", 4.2, 0, true], ["b2", "00208040", 1.94, 0, true], ["b2", "00208041", 4.01, 0, true]], "verdict": "persistent", "snr": 8.164065655109981, "galaxy": false}, "spPlate-6380-56340.fits 538 6654.264 -1": {"frames": [["b2", "00156768", 0.0, 83886080, false], ["b2", "00156769", 0.0, 83886080, false], ["b2", "00156770", 0.0, 83886080, false], ["b2", "00156771", 0.0, 83886080, false], ["b2", "00156772", 0.0, 83886080, false], ["b2", "00156773", 0.0, 83886080, false], ["r2", "00156768", 2.88, 0, true], ["r2", "00156769", 2.69, 0, true], ["r2", "00156770", 3.55, 0, true], ["r2", "00156771", 2.91, 0, true], ["r2", "00156772", 4.75, 0, true], ["r2", "00156773", 2.68, 0, true]], "verdict": "persistent", "snr": 8.15649537032683, "galaxy": false}, "spPlate-11119-58485.fits 528 10104.155 -1": {"frames": [["r2", "00279889", 5.92, 8978452, true], ["r2", "00279890", -6.14, 8978452, true], ["r2", "00279891", 7.8, 8978452, true], ["r2", "00279892", -7.54, 589844, true]], "verdict": "persistent", "snr": 8.152044014839332, "galaxy": false}, "spPlate-6175-56265.fits 72 6329.946 -1": {"frames": [["b1", "00151717", 0.0, 71303168, false], ["b1", "00151718", 0.0, 71303168, false], ["b1", "00151719", 0.0, 71303168, false], ["r1", "00151717", 3.84, 8388608, true], ["r1", "00151718", 3.86, 8388608, true], ["r1", "00151719", 4.76, 8388608, true]], "verdict": "persistent", "snr": 8.126450937863273, "galaxy": false}, "spPlate-3777-55210.fits 66 7809.082 -1": {"frames": [["r1", "00107582", -7816621809062.46, 0, true], ["r1", "00107583", 93.09, 8388608, true], ["r1", "00107584", 420141028391.99, 0, true], ["r1", "00107585", 798495521.28, 8388608, true], ["r1", "00107586", -1100750133582408.0, 8388608, true], ["r1", "00107587", -499652575296.96, 0, true], ["r1", "00107588", 0.0, 8388608, true]], "verdict": "one exposure", "snr": 8.123381479928755, "galaxy": false}, "spPlate-4371-55830.fits 654 6635.903 -1": {"frames": [["b2", "00134461", 0.0, 71434240, false], ["b2", "00134462", 0.0, 71434240, false], ["b2", "00134463", 0.0, 71434240, false], ["b2", "00134464", 0.0, 71434240, false], ["b2", "00134465", 0.0, 71434240, false], ["r2", "00134461", 4.28, 0, true], ["r2", "00134462", 3.66, 0, true], ["r2", "00134463", 4.03, 0, true], ["r2", "00134464", -1.76, 0, true], ["r2", "00134465", 2.45, 0, true]], "verdict": "persistent", "snr": 8.11465732347946, "galaxy": false}, "spPlate-9585-57780.fits 474 5830.422 -1": {"frames": [["b1", "00236028", 5.38, 0, true], ["b1", "00236029", -1.97, 0, true], ["b1", "00236030", 3.89, 0, true], ["b1", "00236031", 5.07, 0, true], ["r1", "00236028", 1.15, 131072, false], ["r1", "00236029", 1.2, 0, true], ["r1", "00236030", -1.04, 131072, true], ["r1", "00236031", 1.44, 131072, false]], "verdict": "one camera", "snr": 8.10936995999266, "galaxy": false}, "spPlate-8840-57425.fits 579 5823.713 -1": {"frames": [["b2", "00214080", 3.35, 589824, true], ["b2", "00214081", 4.2, 589824, true], ["b2", "00214082", 2.78, 589824, true], ["b2", "00214083", 2.88, 589824, true], ["b2", "00214084", 2.85, 589824, true], ["b2", "00214085", 3.05, 589824, true], ["r2", "00214080", 0.0, 71434240, false], ["r2", "00214081", 0.0, 71434240, false], ["r2", "00214082", 0.0, 71434240, false], ["r2", "00214083", 0.0, 71434240, false], ["r2", "00214084", 0.0, 71434240, false], ["r2", "00214085", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.107854974752103, "galaxy": false}, "spPlate-7339-57451.fits 579 5830.422 -1": {"frames": [["b2", "00216366", 1.76, 589824, true], ["b2", "00216370", 5.0, 589824, true], ["b2", "00216371", 3.35, 589824, true], ["b2", "00216372", 2.37, 589824, true], ["b2", "00216373", 3.11, 589824, true], ["b2", "00216374", 2.18, 589824, true], ["b2", "00216375", 3.35, 589824, true], ["b2", "00216376", 3.49, 589824, true], ["r2", "00216366", 0.0, 67239936, false], ["r2", "00216370", 0.0, 67239936, false], ["r2", "00216371", 0.0, 67239936, false], ["r2", "00216372", 0.0, 67239936, false], ["r2", "00216373", 0.0, 67239936, false], ["r2", "00216374", 0.0, 67239936, false], ["r2", "00216375", 0.0, 67239936, false], ["r2", "00216376", 0.0, 201457664, false]], "verdict": "persistent", "snr": 8.105039489140294, "galaxy": false}, "spPlate-6669-56413.fits 453 6492.321 -1": {"frames": [["b1", "00160920", 0.0, 71434240, false], ["b1", "00160921", 0.0, 71434240, false], ["b1", "00160922", 0.0, 71434240, false], ["r1", "00160920", 0.73, 0, true], ["r1", "00160921", -0.29, 8388608, true], ["r1", "00160922", 15.33, 524288, true]], "verdict": "one exposure", "snr": 8.104751356230153, "galaxy": false}, "spPlate-6826-56449.fits 392 6475.898 -1": {"frames": [["b1", "00162866", 0.0, 71434240, false], ["b1", "00162867", 0.0, 71434240, false], ["b1", "00162868", 0.0, 71434240, false], ["b1", "00162869", 0.0, 71434240, false], ["r1", "00162866", 2.19, 0, true], ["r1", "00162867", 4.91, 0, true], ["r1", "00162868", 3.87, 0, true], ["r1", "00162869", 3.53, 0, true]], "verdict": "persistent", "snr": 8.100824784612621, "galaxy": false}, "spPlate-3648-55131.fits 420 6036.706 -1": {"frames": [["b1", "00102942", 0.0, 67108864, false], ["b1", "00102943", 0.0, 67108864, false], ["b1", "00102944", 0.0, 100663296, false], ["r1", "00102942", -1.1421246062628278e+16, 469762054, true], ["r1", "00102943", 2166504668310916.2, 67108870, true], ["r1", "00102944", -3.992266754783052e+17, 67108870, true]], "verdict": "one exposure", "snr": 8.098705256364235, "galaxy": false}, "spPlate-11546-58488.fits 420 5225.165 -1": {"frames": [["b1", "00280031", 3.85, 0, true], ["b1", "00280032", 3.74, 0, true], ["b1", "00280033", 2.41, 0, true], ["b1", "00280034", 5.07, 0, true], ["b1", "00280133", 2.54, 0, true], ["b1", "00280134", 2.09, 0, true], ["b1", "00280135", 2.24, 0, true], ["r1", "00280031", 0.0, 71434240, false], ["r1", "00280032", 0.0, 71434240, false], ["r1", "00280033", 0.0, 71434240, false], ["r1", "00280034", 0.0, 71434240, false], ["r1", "00280133", 0.0, 71434240, false], ["r1", "00280134", 0.0, 71434240, false], ["r1", "00280135", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.096375728772305, "galaxy": false}, "spPlate-8355-56988.fits 854 7883.154 -1": {"frames": [["r2", "00189979", 2.96, 0, true], ["r2", "00189980", 2.7, 8388608, true], ["r2", "00189981", 2.91, 0, true], ["r2", "00189982", 4.87, 0, true]], "verdict": "persistent", "snr": 8.096060407289851, "galaxy": false}, "spPlate-4725-55711.fits 590 10064.681 -1": {"frames": [["r2", "00131267", 6.5, 8388608, true], ["r2", "00131268", 4.07, 8388608, true], ["r2", "00131269", 4.79, 8388608, true], ["r2", "00131270", 2.44, 8388608, true], ["r2", "00131332", 3.22, 8388608, true], ["r2", "00131435", 1.84, 0, true]], "verdict": "persistent", "snr": 8.083389552272026, "galaxy": false}, "spPlate-3641-55159.fits 515 6501.297 -1": {"frames": [["b2", "00104148", 0.0, 71434240, true], ["b2", "00104149", 0.0, 71434240, true], ["b2", "00104150", 0.0, 71434240, true], ["b2", "00104151", 0.0, 71434240, true], ["r2", "00104148", 0.0, 8388608, false], ["r2", "00104149", 0.0, 8388608, false], ["r2", "00104150", 0.0, 8388608, false], ["r2", "00104151", 0.0, 8388608, false]], "verdict": "unclear", "snr": 8.07800781930355, "galaxy": false}, "spPlate-9197-57680.fits 31 5768.993 -1": {"frames": [["b1", "00228118", 3.52, 0, true], ["b1", "00228753", 3.19, 0, true], ["b1", "00228754", 2.22, 0, true], ["b1", "00228755", 1.64, 0, true], ["b1", "00228756", 3.96, 0, true], ["b1", "00228757", 2.63, 0, true], ["b1", "00228758", 2.0, 0, true], ["b1", "00229679", 2.91, 0, true], ["b1", "00229680", 5.04, 0, true], ["r1", "00228118", 0.0, 67239936, false], ["r1", "00228753", 0.0, 67239936, false], ["r1", "00228754", 0.0, 201457664, false], ["r1", "00228755", 0.0, 201457664, false], ["r1", "00228756", 0.0, 67239936, false], ["r1", "00228757", 0.0, 67239936, false], ["r1", "00228758", 0.0, 201457664, false], ["r1", "00229679", 0.0, 67239936, false], ["r1", "00229680", 0.0, 201457664, false]], "verdict": "persistent", "snr": 8.077368151884581, "galaxy": false}, "spPlate-7905-57666.fits 656 6126.325 -1": {"frames": [["b2", "00228663", 1.9, 0, true], ["b2", "00228664", 1.58, 0, true], ["b2", "00228665", 1.29, 0, true], ["b2", "00228666", 1.36, 0, true], ["b2", "00228667", 1.06, 0, true], ["b2", "00228668", -1.05, 0, true], ["r2", "00228663", 4.99, 0, true], ["r2", "00228664", 3.7, 0, true], ["r2", "00228665", 4.36, 0, true], ["r2", "00228666", 6.12, 0, true], ["r2", "00228667", 2.94, 0, true], ["r2", "00228668", 4.48, 0, true]], "verdict": "one camera", "snr": 8.072116862848933, "galaxy": false}, "spPlate-9574-57811.fits 355 7271.098 -1": {"frames": [["r1", "00238410", -1.38, 33554432, true], ["r1", "00238411", 10.07, 0, true]], "verdict": "one exposure", "snr": 8.063200977521387, "galaxy": false}, "spPlate-7051-56574.fits 474 10111.137 -1": {"frames": [["r1", "00167591", 3.82, 8388608, true], ["r1", "00167592", 1.63, 0, true], ["r1", "00167669", 2.72, 8388608, true], ["r1", "00167670", -1.53, 0, true]], "verdict": "persistent", "snr": 8.062870670169769, "galaxy": false}, "spPlate-8873-57427.fits 404 6341.617 -1": {"frames": [["b1", "00214277", 0.0, 71303168, false], ["b1", "00214278", 0.0, 71303168, false], ["b1", "00214279", 0.0, 71303168, false], ["r1", "00214277", 2.63, 0, true], ["r1", "00214278", 1.11, 0, true], ["r1", "00214279", 12.64, 0, true]], "verdict": "one exposure", "snr": 8.0619403862145, "galaxy": false}, "spPlate-8545-58041.fits 841 8735.746 -1": {"frames": [["r2", "00251912", -0.68, 589824, true], ["r2", "00251913", 1.75, 589824, true], ["r2", "00251914", 1.39, 589824, true], ["r2", "00251915", 3.02, 589824, true]], "verdict": "unclear", "snr": 8.058957352959181, "galaxy": false}, "spPlate-7691-58126.fits 162 6389.987 -1": {"frames": [["b1", "00259062", 0.0, 71434240, false], ["b1", "00259063", 0.0, 71434240, false], ["b1", "00259064", 0.0, 71434240, false], ["r1", "00259062", 3.82, 0, true], ["r1", "00259063", 3.89, 0, true], ["r1", "00259064", 3.79, 0, true]], "verdict": "persistent", "snr": 8.053523371371494, "galaxy": false}, "spPlate-7716-58097.fits 339 5460.092 -1": {"frames": [["b1", "00256530", 5.43, 8388608, true], ["b1", "00256531", 5.17, 8388608, true], ["b1", "00256532", 5.35, 8388608, true], ["r1", "00256530", 0.0, 71434240, false], ["r1", "00256531", 0.0, 71434240, false], ["r1", "00256532", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.053069223033807, "galaxy": false}, "spPlate-8220-57432.fits 642 6181.587 -1": {"frames": [["b2", "00214805", 0.86, 0, true], ["b2", "00214806", 1.52, 0, true], ["b2", "00214807", 2.21, 0, true], ["b2", "00214808", 3.13, 0, true], ["b2", "00214809", 0.54, 0, true], ["b2", "00214810", -0.86, 0, true], ["b2", "00214811", 2.15, 0, true], ["r2", "00214805", 5.01, 0, true], ["r2", "00214806", 3.18, 0, true], ["r2", "00214807", 4.57, 0, true], ["r2", "00214808", 2.53, 0, true], ["r2", "00214809", 4.07, 0, true], ["r2", "00214810", 3.7, 0, true], ["r2", "00214811", 3.86, 0, true]], "verdict": "persistent", "snr": 8.044516282675712, "galaxy": false}, "spPlate-8363-58140.fits 884 10043.845 -1": {"frames": [["r2", "00260330", 5.43, 8912896, true], ["r2", "00260331", 6.58, 8912896, true], ["r2", "00260332", 7.03, 8912896, true], ["r2", "00260333", 4.43, 8912896, true], ["r2", "00260334", 6.27, 8912896, true], ["r2", "00260335", 2.83, 8978432, true]], "verdict": "persistent", "snr": 8.04217049775695, "galaxy": false}, "spPlate-6715-56449.fits 738 6331.404 -1": {"frames": [["b2", "00162888", -1.21, 0, true], ["b2", "00162889", 2.48, 0, true], ["b2", "00162890", -2.08, 33554432, true], ["b2", "00162891", 1.83, 0, true], ["r2", "00162888", 4.52, 8388608, true], ["r2", "00162889", 3.58, 8388608, true], ["r2", "00162890", 4.48, 8388608, true], ["r2", "00162891", 3.36, 8388608, true]], "verdict": "persistent", "snr": 8.040940866157104, "galaxy": false}, "spPlate-4354-55810.fits 74 3825.604 -1": {"frames": [["b1", "00133297", 2.3, 0, true], ["b1", "00133298", -1.02, 0, true], ["b1", "00133299", 3.92, 0, true], ["b1", "00133669", 3.6, 0, true], ["b1", "00133670", 3.88, 0, true]], "verdict": "persistent", "snr": 8.040759371577241, "galaxy": false}, "spPlate-7883-57331.fits 58 7863.212 -1": {"frames": [["r1", "00207317", 4.01, 8388608, true], ["r1", "00207318", 6.64, 8388608, true], ["r1", "00207319", 5.87, 8388608, true], ["r1", "00207477", -1.72, 0, true]], "verdict": "persistent", "snr": 8.036368172727459, "galaxy": false}, "spPlate-9315-57713.fits 309 6410.619 -1": {"frames": [["b1", "00231973", 0.0, 71434240, false], ["b1", "00231974", 0.0, 71434240, false], ["b1", "00231975", 0.0, 71434240, false], ["r1", "00231973", 3.23, 0, true], ["r1", "00231974", 4.17, 0, true], ["r1", "00231975", 3.3, 0, true]], "verdict": "persistent", "snr": 8.03424834555653, "galaxy": false}, "spPlate-7876-57002.fits 44 10199.996 -1": {"frames": [["r1", "00190809", -0.82, 0, true], ["r1", "00190810", 1.09, 8388608, true], ["r1", "00190811", 1.53, 0, true], ["r1", "00190812", 2.46, 0, true]], "verdict": "unclear", "snr": 8.03162723272087, "galaxy": false}, "spPlate-6759-56416.fits 684 6508.786 -1": {"frames": [["b2", "00161109", 0.0, 71434240, false], ["b2", "00161110", 0.0, 71434240, false], ["b2", "00161111", 0.0, 71434240, false], ["r2", "00161109", 5.36, 0, true], ["r2", "00161110", 4.09, 0, true], ["r2", "00161111", 4.13, 0, true]], "verdict": "persistent", "snr": 8.025634041751113, "galaxy": false}, "spPlate-9446-58082.fits 343 4168.694 -1": {"frames": [["b1", "00255445", 2.55, 0, true], ["b1", "00255446", 1.78, 0, true], ["b1", "00255447", 2.91, 0, true], ["b1", "00255448", 2.26, 0, true], ["b1", "00255449", 3.65, 0, true], ["b1", "00255450", -2.04, 0, true], ["b1", "00255451", 3.27, 0, true], ["b1", "00255452", 2.59, 0, true]], "verdict": "persistent", "snr": 8.019883674050226, "galaxy": false}, "spPlate-7296-57046.fits 283 6247.410 -1": {"frames": [["b1", "00193253", 7.27, 0, true], ["b1", "00193254", 4.65, 0, true], ["b1", "00193255", 7.26, 33554432, true], ["b1", "00193405", 6.91, 0, true], ["b1", "00193406", 5.87, 0, true], ["b1", "00193407", 7.6, 0, true], ["r1", "00193253", -0.9, 0, true], ["r1", "00193254", 1.45, 0, true], ["r1", "00193255", 2.25, 0, true], ["r1", "00193405", -1.01, 0, true], ["r1", "00193406", 1.91, 0, true], ["r1", "00193407", 1.49, 0, true]], "verdict": "persistent", "snr": 8.013997892640385, "galaxy": false}, "spPlate-11067-58507.fits 435 3957.309 -1": {"frames": [["b1", "00280249", 4.5, 0, true], ["b1", "00280250", 3.72, 0, true], ["b1", "00280251", 5.16, 0, true], ["b1", "00280252", 1.68, 0, true], ["b1", "00281629", -0.97, 0, true]], "verdict": "persistent", "snr": 8.013343346439212, "galaxy": false}, "spPlate-10437-58135.fits 282 6391.459 -1": {"frames": [["b1", "00259829", 0.0, 71434240, false], ["b1", "00259830", 0.0, 71434240, false], ["b1", "00259831", 0.0, 71434240, false], ["r1", "00259829", 2.51, 0, true], ["r1", "00259830", 0.9, 0, true], ["r1", "00259831", 11.24, 262144, true]], "verdict": "one exposure", "snr": 8.013053866185112, "galaxy": false}, "spPlate-10655-58172.fits 67 6420.961 -1": {"frames": [["b1", "00262804", 0.0, 71434240, false], ["b1", "00262805", 0.0, 71434240, false], ["b1", "00262806", 0.0, 71434240, false], ["b1", "00262912", 0.0, 71434240, false], ["b1", "00262913", 0.0, 71434240, false], ["b1", "00262914", 0.0, 71434240, false], ["b1", "00262915", 0.0, 71434240, false], ["b1", "00262916", 0.0, 71434240, false], ["r1", "00262804", 1.19, 0, true], ["r1", "00262805", -0.84, 0, true], ["r1", "00262806", -0.51, 0, true], ["r1", "00262912", 5.06, 0, true], ["r1", "00262913", 3.96, 0, true], ["r1", "00262914", 5.87, 0, true], ["r1", "00262915", 5.41, 0, true], ["r1", "00262916", 5.09, 0, true]], "verdict": "persistent", "snr": 8.011209658027491, "galaxy": false}, "spPlate-7339-58561.fits 398 5268.658 -1": {"frames": [["b1", "00285286", 2.85, 0, true], ["b1", "00285287", 0.76, 0, true], ["b1", "00285288", -1.43, 0, true], ["b1", "00285289", -2.62, 0, true], ["b1", "00285290", -1.23, 0, true], ["b1", "00285291", 0.95, 0, true], ["b1", "00285292", -0.99, 0, true], ["b1", "00285293", 1.2, 0, true], ["b1", "00285459", 1.24, 0, true], ["r1", "00285286", 0.0, 71434240, false], ["r1", "00285287", 0.0, 71434240, false], ["r1", "00285288", 0.0, 71434240, false], ["r1", "00285289", 0.0, 71434240, false], ["r1", "00285290", 0.0, 71434240, false], ["r1", "00285291", 0.0, 71434240, false], ["r1", "00285292", 0.0, 71434240, false], ["r1", "00285293", 0.0, 71434368, false], ["r1", "00285459", 0.0, 71434240, false]], "verdict": "unclear", "snr": 8.006871275659787, "galaxy": false}, "spPlate-3615-55153.fits 344 7866.834 -1": {"frames": [["r1", "00103785", 0.0, 469893126, false], ["r1", "00103786", 0.0, 469893126, false], ["r1", "00103787", 0.0, 469893126, false], ["r1", "00103788", 0.0, 469893126, false]], "verdict": "no frame", "snr": 8.006701483884125, "galaxy": false}, "spPlate-9213-57712.fits 219 5745.132 -1": {"frames": [["b1", "00231856", 4.63, 0, true], ["b1", "00231857", 3.18, 0, true], ["b1", "00231858", 3.09, 0, true], ["b1", "00231859", 4.74, 0, true], ["r1", "00231856", 0.0, 71434240, false], ["r1", "00231857", 0.0, 71434240, false], ["r1", "00231858", 0.0, 71434240, false], ["r1", "00231859", 0.0, 71434240, false]], "verdict": "persistent", "snr": 8.00335787667692, "galaxy": false}, "spPlate-7339-56799.fits 724 4732.602 +1": {"frames": [["b2", "00179967", 4.3, 0, true], ["b2", "00179968", 5.34, 0, true], ["b2", "00179969", 4.65, 0, true], ["b2", "00179970", 4.74, 0, true], ["b2", "00179971", 3.61, 0, true], ["b2", "00179972", 3.0, 0, true], ["b2", "00179973", 3.6, 0, true], ["b2", "00179974", 5.38, 0, true]], "verdict": "persistent", "snr": 14.641274090786268, "galaxy": false}, "spPlate-7339-56780.fits 722 4732.602 +1": {"frames": [["b2", "00179285", 3.24, 0, true], ["b2", "00179286", 3.7, 0, true], ["b2", "00179287", 3.21, 0, true], ["b2", "00179288", 4.65, 0, true], ["b2", "00179289", 2.86, 0, true], ["b2", "00179290", 4.31, 0, true], ["b2", "00179291", 3.98, 0, true], ["b2", "00179292", 4.47, 0, true]], "verdict": "persistent", "snr": 13.404195588893774, "galaxy": false}, "spPlate-7339-56804.fits 722 4732.602 +1": {"frames": [["b2", "00180177", 4.26, 0, true], ["b2", "00180178", 2.99, 0, true], ["b2", "00180179", 3.57, 0, true], ["b2", "00180180", 3.79, 0, true], ["b2", "00180181", 3.35, 0, true], ["b2", "00180182", 2.92, 524288, true], ["b2", "00180183", 3.27, 0, true], ["b2", "00180184", 4.08, 0, true]], "verdict": "persistent", "snr": 12.135651756953557, "galaxy": false}, "spPlate-7339-57082.fits 724 4731.513 +1": {"frames": [["b2", "00195640", 5.07, 0, true], ["b2", "00195641", 3.26, 0, true], ["b2", "00195642", 5.86, 0, true], ["b2", "00195643", 5.17, 0, true]], "verdict": "persistent", "snr": 11.910190799739869, "galaxy": false}, "spPlate-7339-56720.fits 726 4732.602 +1": {"frames": [["b2", "00176219", 3.13, 0, true], ["b2", "00176220", 1.59, 0, true], ["b2", "00176221", 5.19, 0, true], ["b2", "00176222", 3.58, 0, true], ["b2", "00176223", 4.37, 0, true], ["b2", "00176224", 2.26, 0, true], ["b2", "00176225", 4.43, 0, true], ["b2", "00176226", 5.01, 0, true]], "verdict": "persistent", "snr": 11.875116040212838, "galaxy": false}, "spPlate-7339-57510.fits 726 4732.602 +1": {"frames": [["b2", "00220204", 2.18, 0, true], ["b2", "00220208", 1.94, 0, true], ["b2", "00220209", 4.31, 0, true], ["b2", "00220210", 2.85, 0, true], ["b2", "00220211", 4.16, 0, true], ["b2", "00220212", 3.58, 0, true], ["b2", "00220213", 4.84, 0, true], ["b2", "00220214", 3.77, 0, true]], "verdict": "persistent", "snr": 11.803218873238961, "galaxy": false}, "spPlate-7340-58657.fits 726 4732.602 +1": {"frames": [["b2", "00292845", 3.27, 0, true], ["b2", "00292846", 4.39, 0, true], ["b2", "00292847", 2.7, 0, true], ["b2", "00292848", 3.69, 0, true], ["b2", "00293002", 5.07, 0, true], ["b2", "00293003", 4.21, 0, true], ["b2", "00293004", 2.41, 0, true]], "verdict": "persistent", "snr": 11.670481695286492, "galaxy": false}, "spPlate-7339-57481.fits 724 4732.602 +1": {"frames": [["b2", "00218318", 3.71, 0, true], ["b2", "00218319", 2.97, 0, true], ["b2", "00218320", 2.99, 0, true], ["b2", "00218321", 2.35, 0, true], ["b2", "00218322", 2.57, 0, true], ["b2", "00218323", 3.5, 0, true], ["b2", "00218409", 4.27, 0, true], ["b2", "00218410", 4.76, 0, true]], "verdict": "persistent", "snr": 11.361150557446633, "galaxy": false}, "spPlate-7339-56749.fits 724 4732.602 +1": {"frames": [["b2", "00177979", 3.54, 0, true], ["b2", "00177980", 2.02, 0, true], ["b2", "00177981", 3.81, 0, true], ["b2", "00177982", 1.98, 0, true], ["b2", "00177983", 5.47, 0, true], ["b2", "00177984", 3.11, 0, true], ["b2", "00177985", 2.81, 0, true], ["b2", "00177986", 3.48, 0, true]], "verdict": "persistent", "snr": 11.083786525561809, "galaxy": false}, "spPlate-7340-57106.fits 722 4731.513 +1": {"frames": [["b2", "00197231", 4.69, 0, true], ["b2", "00197232", 4.19, 0, true], ["b2", "00197233", 4.88, 0, true], ["b2", "00197234", 4.98, 0, true], ["b2", "00197235", 3.61, 0, true]], "verdict": "persistent", "snr": 10.884985120513337, "galaxy": false}, "spPlate-7339-56747.fits 724 4732.602 +1": {"frames": [["b2", "00177821", 2.71, 0, true], ["b2", "00177824", 2.71, 0, true], ["b2", "00177825", 3.03, 0, true], ["b2", "00177826", 5.01, 589824, true], ["b2", "00177827", 3.63, 0, true], ["b2", "00177828", 2.98, 0, true], ["b2", "00177829", 3.28, 0, true]], "verdict": "persistent", "snr": 10.74520527974698, "galaxy": false}, "spPlate-7339-57518.fits 724 4732.602 +1": {"frames": [["b2", "00220800", 4.05, 0, true], ["b2", "00220801", 3.85, 0, true], ["b2", "00220802", 3.74, 0, true], ["b2", "00220803", 2.63, 0, true], ["b2", "00220804", 4.68, 0, true], ["b2", "00220805", 3.01, 0, true]], "verdict": "persistent", "snr": 10.62301084919035, "galaxy": false}, "spPlate-7340-58258.fits 724 4732.602 +1": {"frames": [["b2", "00269242", 2.85, 0, true], ["b2", "00269243", 4.2, 0, true], ["b2", "00269244", 4.59, 0, true], ["b2", "00269245", 4.92, 0, true]], "verdict": "persistent", "snr": 10.572905753852952, "galaxy": false}, "spPlate-7340-58627.fits 726 4732.602 +1": {"frames": [["b2", "00290436", 2.55, 0, true], ["b2", "00290437", 2.59, 0, true], ["b2", "00290441", 1.91, 0, true], ["b2", "00290541", 5.4, 0, true], ["b2", "00290542", 4.97, 0, true], ["b2", "00290543", 2.73, 0, true]], "verdict": "persistent", "snr": 10.562694315785754, "galaxy": false}, "spPlate-7340-56726.fits 728 4732.602 +1": {"frames": [["b2", "00176545", 3.66, 0, true], ["b2", "00176546", 2.49, 0, true], ["b2", "00176547", 4.29, 0, true], ["b2", "00176548", 2.88, 0, true], ["b2", "00176549", 2.63, 0, true], ["b2", "00176550", 3.18, 0, true], ["b2", "00176551", 3.44, 0, true], ["b2", "00176552", 4.28, 0, true], ["b2", "00176553", 3.51, 0, true]], "verdict": "persistent", "snr": 10.39075661997268, "galaxy": false}, "spPlate-7339-56783.fits 724 4732.602 +1": {"frames": [["b2", "00179456", 2.9, 0, true], ["b2", "00179457", 3.03, 0, true], ["b2", "00179458", 2.69, 0, true], ["b2", "00179459", 3.16, 0, true], ["b2", "00179460", -0.92, 0, true], ["b2", "00179461", 3.99, 0, true], ["b2", "00179462", 3.21, 0, true], ["b2", "00179463", 3.39, 0, true], ["b2", "00179464", 1.85, 0, true], ["b2", "00179465", 2.1, 0, true]], "verdict": "persistent", "snr": 10.329262816561243, "galaxy": false}, "spPlate-7339-56813.fits 722 4732.602 +1": {"frames": [["b2", "00180597", 2.12, 0, true], ["b2", "00180598", 4.74, 0, true], ["b2", "00180599", 3.52, 0, true], ["b2", "00180600", 3.52, 0, true], ["b2", "00180602", 3.6, 0, true], ["b2", "00180603", 3.08, 0, true], ["b2", "00180604", 2.06, 0, true], ["b2", "00180605", 2.74, 0, true], ["b2", "00180606", 2.62, 0, true]], "verdict": "persistent", "snr": 9.732207233653016, "galaxy": false}, "spPlate-7339-56683.fits 722 4732.602 +1": {"frames": [["b2", "00173484", 2.15, 0, true], ["b2", "00173485", 2.34, 0, true], ["b2", "00173486", 3.16, 0, true], ["b2", "00173487", 4.29, 0, true], ["b2", "00173488", 3.97, 0, true], ["b2", "00173489", 3.09, 0, true], ["b2", "00173490", 3.64, 0, true], ["b2", "00173491", 3.16, 0, true], ["b2", "00173492", -1.39, 0, true]], "verdict": "persistent", "snr": 9.692539807978921, "galaxy": false}, "spPlate-7339-57435.fits 724 4732.602 +1": {"frames": [["b2", "00215045", 4.53, 0, true], ["b2", "00215046", 3.65, 0, true], ["b2", "00215047", 2.31, 0, true], ["b2", "00215048", 3.4, 0, true], ["b2", "00215049", 3.47, 0, true]], "verdict": "persistent", "snr": 8.871136219509262, "galaxy": false}, "spPlate-7339-57492.fits 726 4732.602 +1": {"frames": [["b2", "00219124", 3.93, 0, true], ["b2", "00219125", 2.94, 0, true], ["b2", "00219126", 4.06, 0, true], ["b2", "00219127", 3.7, 0, true]], "verdict": "persistent", "snr": 8.805796448483243, "galaxy": false}, "spPlate-7339-57428.fits 728 4732.602 +1": {"frames": [["b2", "00214394", 3.37, 0, true], ["b2", "00214395", 3.79, 0, true], ["b2", "00214396", 4.65, 0, true], ["b2", "00214397", 3.64, 0, true]], "verdict": "persistent", "snr": 8.756380394509948, "galaxy": false}, "spPlate-7340-58289.fits 722 4732.602 +1": {"frames": [["b2", "00271138", 1.66, 0, true], ["b2", "00271139", 1.36, 0, true], ["b2", "00271140", 2.24, 0, true], ["b2", "00271141", 2.76, 0, true], ["b2", "00271142", -2.0, 0, true], ["b2", "00271143", 3.36, 0, true], ["b2", "00271144", 2.32, 0, true], ["b2", "00271145", -1.24, 0, true], ["b2", "00271146", 2.88, 0, true], ["b2", "00271147", 3.02, 0, true]], "verdict": "persistent", "snr": 8.242270539164377, "galaxy": false}, "spPlate-7339-58895.fits 726 4732.602 +1": {"frames": [["b2", "00308851", 4.18, 0, true], ["b2", "00308852", 1.48, 0, true], ["b2", "00308853", 3.54, 0, true], ["b2", "00308854", 3.28, 0, true], ["b2", "00308855", 3.2, 0, true], ["b2", "00308856", 3.58, 0, true]], "verdict": "persistent", "snr": 8.022890085545539, "galaxy": false}, "spPlate-7340-58646.fits 351 4893.279 -1": {"frames": [["b1", "00291851", 7.83, 0, true], ["b1", "00291852", 7.77, 0, true]], "verdict": "persistent", "snr": 13.173022492976195, "galaxy": false}} \ No newline at end of file diff --git a/papers/sky_fibres/data/skyfibre_galaxies.json b/papers/sky_fibres/data/skyfibre_galaxies.json new file mode 100644 index 0000000000000000000000000000000000000000..fdc27b6b5b7c9d229434a48c56bc79510afcea0d --- /dev/null +++ b/papers/sky_fibres/data/skyfibre_galaxies.json @@ -0,0 +1,4444 @@ +{ + "n_plates": 3853, + "n_sky": 381943, + "galaxies": [ + { + "plate": 10429, + "mjd": 58145, + "fiber": 627, + "ra": 143.02481, + "dec": 32.287405, + "z": 0.6827327612746454, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 13.070402793350796, + "oiii_flux": 9.860617681881232e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.643927", + "mag_r": "22.976683", + "mag_z": "23.226969", + "shape_r": "0", + "sep": 1.1339124539517191 + } + ], + "desi": [] + }, + { + "plate": 10431, + "mjd": 58137, + "fiber": 794, + "ra": 132.341, + "dec": 32.072637, + "z": 0.7630695658083536, + "lines": [ + "Hbeta", + "[OIII]4959", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 14.249374996940583, + "oiii_flux": null, + "ls": [ + { + "type": "PSF", + "mag_g": "24.116566", + "mag_r": "23.106464", + "mag_z": "22.30323", + "shape_r": "0", + "sep": 0.4643110232216078 + } + ], + "desi": [] + }, + { + "plate": 10440, + "mjd": 58138, + "fiber": 745, + "ra": 141.43831999999998, + "dec": 31.174489, + "z": 0.31378721244549423, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 20.36611897610479, + "oiii_flux": 2.9778819763304675e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.487944", + "mag_r": "23.61057", + "mag_z": "23.577301", + "shape_r": "0", + "sep": 1.0509062126298765 + } + ], + "desi": [] + }, + { + "plate": 10655, + "mjd": 58172, + "fiber": 140, + "ra": 114.82232999999997, + "dec": 43.809142, + "z": 0.6427634513739002, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 12.879134311018793, + "oiii_flux": 5.929991215426661e-17, + "ls": [], + "desi": [] + }, + { + "plate": 10738, + "mjd": 58251, + "fiber": 439, + "ra": 240.90571, + "dec": 35.189272, + "z": 0.3419996941102793, + "lines": [ + "Halpha", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 12.016618805800338, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "23.565826", + "mag_r": "22.650177", + "mag_z": "21.982557", + "shape_r": "0.314797", + "sep": 0.5126757046805978 + } + ], + "desi": [] + }, + { + "plate": 10748, + "mjd": 58224, + "fiber": 776, + "ra": 223.64391999999998, + "dec": 38.187745, + "z": 0.37789190953182805, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.6833926583600505, + "oiii_flux": 3.388403333861897e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.039824", + "mag_r": "23.370148", + "mag_z": "22.866505", + "shape_r": "0.384009", + "sep": 0.3191848535680604 + } + ], + "desi": [] + }, + { + "plate": 10752, + "mjd": 58488, + "fiber": 557, + "ra": 217.96798, + "dec": 39.678421, + "z": 0.5984188563960408, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 7, + "snr": 6.945280772317864, + "oiii_flux": 1.2258499693830185e-16, + "ls": [], + "desi": [] + }, + { + "plate": 10757, + "mjd": 58223, + "fiber": 520, + "ra": 215.56646999999998, + "dec": 35.414214, + "z": 0.8374483644535798, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 6.807459417964638, + "oiii_flux": 6.224059566748396e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.984938", + "mag_r": "23.837515", + "mag_z": "23.363657", + "shape_r": "0", + "sep": 0.7604548384066018 + } + ], + "desi": [] + }, + { + "plate": 10901, + "mjd": 58397, + "fiber": 179, + "ra": 255.5317, + "dec": 32.14931, + "z": 0.28609651172575423, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 9.715560941074214, + "oiii_flux": 7.112175957210217e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.484356", + "mag_r": "22.587929", + "mag_z": "22.457659", + "shape_r": "0.6348383", + "sep": 0.21952864223811383 + } + ], + "desi": [] + }, + { + "plate": 10914, + "mjd": 58257, + "fiber": 755, + "ra": 248.98563000000001, + "dec": 33.414626, + "z": 0.4508253994705095, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 12.723442624600358, + "oiii_flux": 5.0821274489859723e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.070347", + "mag_r": "22.374271", + "mag_z": "22.037153", + "shape_r": "0.454752", + "sep": 0.8153852230572372 + } + ], + "desi": [] + }, + { + "plate": 10917, + "mjd": 58252, + "fiber": 746, + "ra": 241.41881, + "dec": 32.479866, + "z": 0.3527687397688143, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.531555350325295, + "oiii_flux": 3.767974019884794e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.494917", + "mag_r": "23.521154", + "mag_z": "23.289516", + "shape_r": "0.265374", + "sep": 0.8027295199625477 + } + ], + "desi": [] + }, + { + "plate": 10938, + "mjd": 58514, + "fiber": 564, + "ra": 221.03475000000003, + "dec": 34.417226, + "z": 0.7754313593441802, + "lines": [ + "[OIII]4959", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 11.366996659930141, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "24.01352", + "mag_r": "23.227816", + "mag_z": "22.384369", + "shape_r": "0.33687", + "sep": 0.5326256760892537 + } + ], + "desi": [] + }, + { + "plate": 11059, + "mjd": 58515, + "fiber": 987, + "ra": 23.81695400000001, + "dec": 17.028145, + "z": 0.39637612570578373, + "lines": [ + "Halpha", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 11.249783584673416, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "23.644073", + "mag_r": "22.83744", + "mag_z": "22.74064", + "shape_r": "0.34362102", + "sep": 0.19908784984095912 + } + ], + "desi": [] + }, + { + "plate": 11060, + "mjd": 58523, + "fiber": 496, + "ra": 22.689960999999983, + "dec": 13.686205, + "z": 0.537927462248347, + "lines": [ + "Halpha", + "[SII]6716" + ], + "n_peaks": 5, + "snr": 10.30860318262825, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 11061, + "mjd": 58428, + "fiber": 6, + "ra": 26.43771099999998, + "dec": 11.215634, + "z": 0.23629911650190727, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 7.651086858272632, + "oiii_flux": 4.6239742717651115e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.205294", + "mag_r": "22.512733", + "mag_z": "22.296997", + "shape_r": "0.77055997", + "sep": 0.5396569633246876 + } + ], + "desi": [] + }, + { + "plate": 11071, + "mjd": 58429, + "fiber": 332, + "ra": 24.191806999999983, + "dec": 6.4004398, + "z": 0.5068330733533817, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.19731916790578, + "oiii_flux": 6.106791783832406e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.283453", + "mag_r": "23.0729", + "mag_z": "22.796915", + "shape_r": "0.44022685", + "sep": 0.5791823878907418 + } + ], + "desi": [] + }, + { + "plate": 11109, + "mjd": 58523, + "fiber": 6, + "ra": 124.19918999999999, + "dec": 20.239107, + "z": 0.44922511607893745, + "lines": [ + "Halpha", + "[SII]6716" + ], + "n_peaks": 4, + "snr": 7.043568984337915, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 11109, + "mjd": 58523, + "fiber": 950, + "ra": 124.27555000000001, + "dec": 22.242463, + "z": 0.3282308413947196, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 9.028536319110355, + "oiii_flux": 6.85954586234472e-17, + "ls": [ + { + "type": "REX", + "mag_g": "22.98686", + "mag_r": "22.19024", + "mag_z": "21.94779", + "shape_r": "0.56940967", + "sep": 0.5686278602520742 + } + ], + "desi": [] + }, + { + "plate": 11288, + "mjd": 58401, + "fiber": 543, + "ra": 351.36996999999997, + "dec": 6.09305, + "z": 0.016654904970717865, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.688528399474999, + "oiii_flux": 5.169572139194896e-17, + "ls": [], + "desi": [] + }, + { + "plate": 11337, + "mjd": 58431, + "fiber": 190, + "ra": 330.43337999999994, + "dec": 5.5665573, + "z": 0.6092189698158772, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 6.883903947769541, + "oiii_flux": 7.226019965644726e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.75724", + "mag_r": "22.714836", + "mag_z": "21.939138", + "shape_r": "0.49376515", + "sep": 0.21297343635348168 + } + ], + "desi": [] + }, + { + "plate": 11352, + "mjd": 58456, + "fiber": 248, + "ra": 156.58602999999994, + "dec": 27.53902, + "z": 0.2511908475984631, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 12.601213646141272, + "oiii_flux": 9.661413190982068e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.751566", + "mag_r": "23.27353", + "mag_z": "23.139746", + "shape_r": "0.21975891", + "sep": 0.9911886038866341 + } + ], + "desi": [] + }, + { + "plate": 11380, + "mjd": 58462, + "fiber": 704, + "ra": 150.33497, + "dec": 31.849913, + "z": 0.45685102375082565, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.451434223709932, + "oiii_flux": 5.5009390695665375e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.016163", + "mag_r": "23.196564", + "mag_z": "22.819649", + "shape_r": "0.39194518", + "sep": 1.2626788990058138 + } + ], + "desi": [] + }, + { + "plate": 11554, + "mjd": 58456, + "fiber": 170, + "ra": 353.86311, + "dec": 9.9350743, + "z": 0.4411697690280705, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.948476958798231, + "oiii_flux": 5.079272636846994e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.219753", + "mag_r": "23.697456", + "mag_z": "23.268528", + "shape_r": "0", + "sep": 1.0103233270894432 + } + ], + "desi": [] + }, + { + "plate": 11561, + "mjd": 58485, + "fiber": 827, + "ra": 2.045387500000004, + "dec": 11.857052, + "z": 0.3059410063852821, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 9.04562712037418, + "oiii_flux": 4.469212889388577e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.764362", + "mag_r": "23.144066", + "mag_z": "22.791916", + "shape_r": "0", + "sep": 0.974829806681915 + } + ], + "desi": [] + }, + { + "plate": 3537, + "mjd": 55116, + "fiber": 602, + "ra": 318.00184, + "dec": 0.45669342, + "z": 0.9357113291318304, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 8, + "snr": 7.8135126690890395, + "oiii_flux": 6.498907510557054e-16, + "ls": [], + "desi": [] + }, + { + "plate": 3564, + "mjd": 55146, + "fiber": 510, + "ra": 344.79376, + "dec": 0.66996383, + "z": 1.0650441610472066, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 5, + "snr": 7.1508149076668355, + "oiii_flux": null, + "ls": [ + { + "type": "PSF", + "mag_g": "25.49231", + "mag_r": "24.693743", + "mag_z": "24.489035", + "shape_r": "0", + "sep": 0.8922736935223349 + } + ], + "desi": [] + }, + { + "plate": 3647, + "mjd": 56568, + "fiber": 535, + "ra": 35.90259400000002, + "dec": 0.31455787, + "z": 1.069545764762441, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 4, + "snr": 9.463013171310378, + "oiii_flux": 9.764277644012946e-16, + "ls": [], + "desi": [] + }, + { + "plate": 3781, + "mjd": 55243, + "fiber": 146, + "ra": 141.78061000000002, + "dec": -2.112271, + "z": 0.6457548511663261, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 11.65547699012935, + "oiii_flux": 8.491492013653544e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.609453", + "mag_r": "23.117609", + "mag_z": "22.87347", + "shape_r": "0", + "sep": 1.091074881855698 + } + ], + "desi": [] + }, + { + "plate": 3847, + "mjd": 55298, + "fiber": 412, + "ra": 185.87047000000007, + "dec": -0.69506843, + "z": 0.5435806850303802, + "lines": [ + "Hbeta", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 3, + "snr": 21.460539234069778, + "oiii_flux": 2.393395428590573e-16, + "ls": [], + "desi": [] + }, + { + "plate": 3847, + "mjd": 55588, + "fiber": 418, + "ra": 185.87047000000007, + "dec": -0.69506843, + "z": 0.5435806850303802, + "lines": [ + "Hbeta", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 3, + "snr": 20.645102390900362, + "oiii_flux": 2.292245206790633e-16, + "ls": [], + "desi": [] + }, + { + "plate": 3868, + "mjd": 55360, + "fiber": 202, + "ra": 219.81345999999996, + "dec": 30.492245, + "z": 0.5508487655347835, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 11.860563433697823, + "oiii_flux": null, + "ls": [ + { + "type": "EXP", + "mag_g": "23.230474", + "mag_r": "22.304497", + "mag_z": "22.011435", + "shape_r": "0.51916575", + "sep": 0.3106422427934082 + } + ], + "desi": [] + }, + { + "plate": 3868, + "mjd": 55360, + "fiber": 834, + "ra": 219.75574000000006, + "dec": 32.848881, + "z": 0.18926503288015162, + "lines": [ + "Halpha", + "[NII]6583" + ], + "n_peaks": 3, + "snr": 8.353204486511034, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 3877, + "mjd": 55365, + "fiber": 396, + "ra": 225.00401999999997, + "dec": 28.048079, + "z": 0.1820629136009032, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.44861162943717, + "oiii_flux": 1.0087151820666819e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.907084", + "mag_r": "23.314837", + "mag_z": "23.72874", + "shape_r": "0.39312565", + "sep": 0.6986654286223111 + } + ], + "desi": [] + }, + { + "plate": 3878, + "mjd": 55361, + "fiber": 470, + "ra": 221.72975999999994, + "dec": 28.421111, + "z": 0.4088785698803272, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.699619468406883, + "oiii_flux": 4.9769556352235756e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.237825", + "mag_r": "23.447691", + "mag_z": "22.89399", + "shape_r": "0.42407435", + "sep": 0.695173232451417 + } + ], + "desi": [] + }, + { + "plate": 3940, + "mjd": 55327, + "fiber": 364, + "ra": 239.43312000000003, + "dec": 23.996393, + "z": 0.6207996549725409, + "lines": [ + "Hbeta", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 4, + "snr": 28.251243597039124, + "oiii_flux": 1.7023793734662585e-16, + "ls": [ + { + "type": "EXP", + "mag_g": "23.38722", + "mag_r": "22.644583", + "mag_z": "22.598896", + "shape_r": "0.7297268", + "sep": 0.6614562766512494 + } + ], + "desi": [] + }, + { + "plate": 3947, + "mjd": 55332, + "fiber": 324, + "ra": 235.38927999999999, + "dec": 23.877377, + "z": 0.6055178934529648, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.271348152679211, + "oiii_flux": 8.967840608444088e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.436815", + "mag_r": "22.268002", + "mag_z": "21.396444", + "shape_r": "0.53185594", + "sep": 0.16805174775068252 + } + ], + "desi": [] + }, + { + "plate": 4016, + "mjd": 55632, + "fiber": 414, + "ra": 225.44444, + "dec": -0.61182148, + "z": 0.38922811279351954, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.581574163573148, + "oiii_flux": 5.718003992773813e-17, + "ls": [], + "desi": [] + }, + { + "plate": 4020, + "mjd": 55332, + "fiber": 26, + "ra": 226.04718000000003, + "dec": -2.3942512, + "z": 0.09565433967486947, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.484396622218952, + "oiii_flux": 1.4813404769265624e-16, + "ls": [], + "desi": [] + }, + { + "plate": 4038, + "mjd": 55363, + "fiber": 444, + "ra": 210.29612999999995, + "dec": -3.2369211, + "z": 0.41326485436632154, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 14.742063348792518, + "oiii_flux": 8.247004798134783e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.548784", + "mag_r": "22.598425", + "mag_z": "22.382547", + "shape_r": "0.7817538", + "sep": 0.7628677836559807 + } + ], + "desi": [] + }, + { + "plate": 4040, + "mjd": 55605, + "fiber": 420, + "ra": 207.18925000000002, + "dec": -0.83451426, + "z": 0.3065425529445921, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 7.269718919089337, + "oiii_flux": 4.6212609060878036e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.413801", + "mag_r": "23.502531", + "mag_z": "22.826937", + "shape_r": "0.3814027", + "sep": 0.7324983715485648 + } + ], + "desi": [] + }, + { + "plate": 4057, + "mjd": 55357, + "fiber": 108, + "ra": 245.33337000000006, + "dec": 20.305913, + "z": 0.20002583303554022, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.532460993820091, + "oiii_flux": 9.132358773778916e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "22.925177", + "mag_r": "22.514467", + "mag_z": "22.081446", + "shape_r": "1.0638586", + "sep": 0.6905045626528711 + } + ], + "desi": [] + }, + { + "plate": 4174, + "mjd": 55659, + "fiber": 442, + "ra": 255.95616999999993, + "dec": 21.058679, + "z": 0.3293016961048759, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 7.829951154720702, + "oiii_flux": 3.584654884439046e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.909212", + "mag_r": "23.530094", + "mag_z": "23.167852", + "shape_r": "0.46616605", + "sep": 0.6861002384362498 + } + ], + "desi": [] + }, + { + "plate": 4207, + "mjd": 55475, + "fiber": 812, + "ra": 345.33907, + "dec": 0.36193787, + "z": 0.8361795664692419, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 11.023453775993497, + "oiii_flux": 7.94599254181214e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.76125", + "mag_r": "24.467318", + "mag_z": "23.45091", + "shape_r": "0", + "sep": 0.19123208566279984 + } + ], + "desi": [] + }, + { + "plate": 4221, + "mjd": 55443, + "fiber": 510, + "ra": 7.275729399999989, + "dec": 0.019505282, + "z": 0.7189575187261833, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 10.464203304976666, + "oiii_flux": 7.073069682872516e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.384731", + "mag_r": "22.858232", + "mag_z": "22.458305", + "shape_r": "0.9437001", + "sep": 0.7369590592875795 + } + ], + "desi": [] + }, + { + "plate": 4279, + "mjd": 55508, + "fiber": 88, + "ra": 357.85425, + "dec": 2.9592369, + "z": 0.2251056994449886, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 16.298709764253843, + "oiii_flux": 8.896205890433709e-17, + "ls": [ + { + "type": "REX", + "mag_g": "22.9222", + "mag_r": "22.235004", + "mag_z": "21.923975", + "shape_r": "0.3661479", + "sep": 0.8386285646921628 + } + ], + "desi": [] + }, + { + "plate": 4289, + "mjd": 55856, + "fiber": 30, + "ra": 347.2959599999999, + "dec": 3.5283505, + "z": 0.7330212441833028, + "lines": [ + "[OIII]4959", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 11.004272942397957, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "23.526342", + "mag_r": "22.994389", + "mag_z": "22.314047", + "shape_r": "0.4023257", + "sep": 1.0651016477726516 + } + ], + "desi": [] + }, + { + "plate": 4348, + "mjd": 55559, + "fiber": 700, + "ra": 27.490993000000003, + "dec": -2.3146433, + "z": 0.7480954756897656, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 30.723210902966773, + "oiii_flux": 3.21091596416296e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.717691", + "mag_r": "23.277617", + "mag_z": "22.645298", + "shape_r": "0.25819618", + "sep": 0.7273233025679872 + } + ], + "desi": [] + }, + { + "plate": 4376, + "mjd": 55863, + "fiber": 124, + "ra": 330.24601000000007, + "dec": -3.4608085, + "z": 0.8093601890917175, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 25.096846823305764, + "oiii_flux": 2.351020521869177e-16, + "ls": [], + "desi": [] + }, + { + "plate": 4447, + "mjd": 55542, + "fiber": 449, + "ra": 122.63066000000003, + "dec": 29.976048, + "z": 0.8800315778507343, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.538892703758433, + "oiii_flux": 1.1901431135632321e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.539318", + "mag_r": "24.232145", + "mag_z": "24.172333", + "shape_r": "0", + "sep": 0.8513500864086953 + } + ], + "desi": [] + }, + { + "plate": 4478, + "mjd": 55600, + "fiber": 376, + "ra": 126.61986000000002, + "dec": 21.275177, + "z": 0.855517881319462, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.106151642671207, + "oiii_flux": 8.934271688984178e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.02256", + "mag_r": "23.705166", + "mag_z": "23.021235", + "shape_r": "0", + "sep": 0.20607251235111043 + } + ], + "desi": [] + }, + { + "plate": 4533, + "mjd": 55855, + "fiber": 414, + "ra": 2.283100100000013, + "dec": 7.1238792, + "z": 0.6212645559574423, + "lines": [ + "[OIII]4959", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 20.120163699446763, + "oiii_flux": 1.2064654189038585e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.666174", + "mag_r": "22.843185", + "mag_z": "22.591045", + "shape_r": "0.7662307", + "sep": 0.5115685314948741 + } + ], + "desi": [] + }, + { + "plate": 4543, + "mjd": 55888, + "fiber": 240, + "ra": 11.543278999999984, + "dec": 6.2819417, + "z": 0.35883005428905335, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.593416105150143, + "oiii_flux": 3.441186034490899e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.155272", + "mag_r": "23.184715", + "mag_z": "23.279976", + "shape_r": "0", + "sep": 0.5051976215371741 + } + ], + "desi": [] + }, + { + "plate": 4563, + "mjd": 55617, + "fiber": 722, + "ra": 154.88368000000003, + "dec": 38.468497, + "z": 0.10885569671283768, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 14.892803489896274, + "oiii_flux": 1.160924069567874e-16, + "ls": [], + "desi": [] + }, + { + "plate": 4641, + "mjd": 55947, + "fiber": 314, + "ra": 138.90323, + "dec": 40.539159, + "z": 0.44199961333386084, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 12.237242086239712, + "oiii_flux": 9.997025189375014e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.18656", + "mag_r": "22.363781", + "mag_z": "22.179176", + "shape_r": "0.740702", + "sep": 0.22910685828070385 + } + ], + "desi": [] + }, + { + "plate": 4643, + "mjd": 55946, + "fiber": 153, + "ra": 138.3517, + "dec": 37.83216, + "z": 0.38364143441266585, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 9.529696293194828, + "oiii_flux": 7.465700024994524e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.414726", + "mag_r": "22.837177", + "mag_z": "22.761871", + "shape_r": "0.469303", + "sep": 1.3369912786281508 + } + ], + "desi": [] + }, + { + "plate": 4656, + "mjd": 55828, + "fiber": 488, + "ra": 28.114777000000004, + "dec": 11.682749, + "z": 0.40321286863579187, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.350548452875033, + "oiii_flux": 3.0985365143334574e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.878714", + "mag_r": "23.74269", + "mag_z": "23.453892", + "shape_r": "0", + "sep": 1.2722778986279744 + } + ], + "desi": [] + }, + { + "plate": 4721, + "mjd": 55709, + "fiber": 870, + "ra": 232.30183, + "dec": 30.134714, + "z": 0.7560195051605838, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 3, + "snr": 12.829127568100576, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "23.434893", + "mag_r": "22.950665", + "mag_z": "22.044003", + "shape_r": "0.40414795", + "sep": 0.5516500355535277 + } + ], + "desi": [] + }, + { + "plate": 4740, + "mjd": 55651, + "fiber": 178, + "ra": 174.48658999999998, + "dec": 1.1138277, + "z": 0.3116799015912337, + "lines": [ + "Halpha", + "Hbeta", + "[SII]6716" + ], + "n_peaks": 3, + "snr": 18.621855350307204, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "22.490788", + "mag_r": "21.754734", + "mag_z": "21.247654", + "shape_r": "0.27926144", + "sep": 0.8093586156004342 + } + ], + "desi": [] + }, + { + "plate": 4747, + "mjd": 55652, + "fiber": 835, + "ra": 180.80191000000002, + "dec": 4.9835715, + "z": 0.5889679964466599, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 12.012230081231754, + "oiii_flux": 1.2674400064615723e-16, + "ls": [ + { + "type": "EXP", + "mag_g": "23.222864", + "mag_r": "22.278519", + "mag_z": "22.061485", + "shape_r": "0.6596757", + "sep": 0.12022646541186288 + } + ], + "desi": [] + }, + { + "plate": 4753, + "mjd": 55674, + "fiber": 152, + "ra": 188.64795000000004, + "dec": 3.5664107, + "z": 0.6638537510185396, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 12.416190320755593, + "oiii_flux": 1.0287178425047442e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.563381", + "mag_r": "22.851513", + "mag_z": "22.446562", + "shape_r": "0.40626428", + "sep": 0.5221359920316448 + } + ], + "desi": [] + }, + { + "plate": 4779, + "mjd": 55656, + "fiber": 64, + "ra": 221.47362999999996, + "dec": 3.8735469, + "z": 0.6520194270337217, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.991992615336352, + "oiii_flux": 7.664605806854217e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.084982", + "mag_r": "22.471485", + "mag_z": "21.940182", + "shape_r": "1.0429873", + "sep": 0.241606848875341 + } + ], + "desi": [] + }, + { + "plate": 4858, + "mjd": 55686, + "fiber": 359, + "ra": 221.21222999999998, + "dec": 6.6319314, + "z": 0.7028058907774928, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.534396163305063, + "oiii_flux": 7.974082814583716e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.688261", + "mag_r": "23.137943", + "mag_z": "22.695543", + "shape_r": "0.66960037", + "sep": 0.5043869794320373 + } + ], + "desi": [] + }, + { + "plate": 4988, + "mjd": 55825, + "fiber": 454, + "ra": 254.96839999999997, + "dec": 35.123036, + "z": 0.4999315187629424, + "lines": [ + "Halpha", + "[SII]6731" + ], + "n_peaks": 5, + "snr": 7.835835037112672, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 4994, + "mjd": 55739, + "fiber": 370, + "ra": 258.61403999999993, + "dec": 33.837687, + "z": 0.5297660922242158, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 18.723888201734976, + "oiii_flux": 1.615916278007319e-16, + "ls": [], + "desi": [] + }, + { + "plate": 5002, + "mjd": 55710, + "fiber": 284, + "ra": 261.59574999999995, + "dec": 30.599129, + "z": 0.30113859371839535, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.109029723314968, + "oiii_flux": 5.569803104816206e-17, + "ls": [ + { + "type": "REX", + "mag_g": "22.873247", + "mag_r": "22.265182", + "mag_z": "21.803156", + "shape_r": "0.8028249", + "sep": 1.2713705356889269 + } + ], + "desi": [] + }, + { + "plate": 5026, + "mjd": 55855, + "fiber": 458, + "ra": 339.98194, + "dec": 18.259233, + "z": 0.4262177800116038, + "lines": [ + "Halpha", + "[SII]6716" + ], + "n_peaks": 3, + "snr": 9.389106191037708, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5046, + "mjd": 56243, + "fiber": 614, + "ra": 343.65338999999994, + "dec": 13.467469, + "z": 0.29916750324313535, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.971438113717602, + "oiii_flux": 5.367163172747469e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.370514", + "mag_r": "22.652876", + "mag_z": "22.48105", + "shape_r": "0.34085596", + "sep": 0.934759988497636 + } + ], + "desi": [] + }, + { + "plate": 5055, + "mjd": 55889, + "fiber": 6, + "ra": 343.90920000000006, + "dec": 9.132156, + "z": 1.0645687217961146, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 2, + "snr": 6.6278171137304, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5130, + "mjd": 55835, + "fiber": 42, + "ra": 26.451936999999987, + "dec": 14.746486, + "z": 0.7459853359312334, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 19.87636957893153, + "oiii_flux": 1.6789499876720381e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "25.055332", + "mag_r": "23.598476", + "mag_z": "23.054598", + "shape_r": "0", + "sep": 0.5805056467126677 + } + ], + "desi": [] + }, + { + "plate": 5141, + "mjd": 55746, + "fiber": 113, + "ra": 318.86697000000004, + "dec": 0.91202093, + "z": 0.3095544445880354, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 9.168414623838668, + "oiii_flux": 5.381426096230722e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.34952", + "mag_r": "22.521482", + "mag_z": "22.167593", + "shape_r": "1.4340454", + "sep": 0.5291972967531235 + } + ], + "desi": [] + }, + { + "plate": 5191, + "mjd": 56065, + "fiber": 388, + "ra": 245.24949000000004, + "dec": 34.605982, + "z": 0.6399289416350215, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 11.837818566996567, + "oiii_flux": 1.1969176429672548e-16, + "ls": [], + "desi": [] + }, + { + "plate": 5198, + "mjd": 55823, + "fiber": 408, + "ra": 252.65262000000007, + "dec": 35.901159, + "z": 0.33987765325115593, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 13.233844052033026, + "oiii_flux": 1.1364144931622608e-16, + "ls": [ + { + "type": "REX", + "mag_g": "24.41743", + "mag_r": "23.863003", + "mag_z": "23.13269", + "shape_r": "0.268028", + "sep": 0.46238490063440574 + } + ], + "desi": [] + }, + { + "plate": 5203, + "mjd": 56034, + "fiber": 448, + "ra": 241.89569000000006, + "dec": 10.181191, + "z": 0.4999315187629424, + "lines": [ + "Halpha", + "[SII]6731" + ], + "n_peaks": 3, + "snr": 8.578666811914779, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5307, + "mjd": 55998, + "fiber": 786, + "ra": 140.49693000000002, + "dec": 18.222471, + "z": 0.43193583895074994, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.17836668155388, + "oiii_flux": 7.807091019750616e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.164122", + "mag_r": "23.630466", + "mag_z": "23.210087", + "shape_r": "0", + "sep": 0.4756300435526147 + } + ], + "desi": [] + }, + { + "plate": 5313, + "mjd": 55973, + "fiber": 558, + "ra": 142.25359000000003, + "dec": 13.827265, + "z": 0.5705983755425097, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.730727306250467, + "oiii_flux": 7.924761658033204e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "21.428139", + "mag_r": "22.693598", + "mag_z": "22.440447", + "shape_r": "0.49755618", + "sep": 0.5425400229620925 + } + ], + "desi": [] + }, + { + "plate": 5338, + "mjd": 56002, + "fiber": 405, + "ra": 154.66776000000004, + "dec": 11.357152, + "z": 0.3838399117187874, + "lines": [ + "Halpha", + "[SII]6716" + ], + "n_peaks": 6, + "snr": 6.966622024852857, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5369, + "mjd": 56272, + "fiber": 498, + "ra": 168.95360000000005, + "dec": 7.9734766, + "z": 0.506384547557271, + "lines": [ + "Halpha", + "[SII]6716" + ], + "n_peaks": 4, + "snr": 8.093261878114484, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5378, + "mjd": 56011, + "fiber": 408, + "ra": 174.56869000000006, + "dec": 14.129001, + "z": 0.22807539564592916, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 19.397836704132747, + "oiii_flux": 2.223390969351918e-16, + "ls": [], + "desi": [] + }, + { + "plate": 5404, + "mjd": 56013, + "fiber": 406, + "ra": 187.52238999999997, + "dec": 14.689619, + "z": 0.23601448088143784, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 11.265989053215558, + "oiii_flux": 8.966223203953421e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.6886", + "mag_r": "24.027687", + "mag_z": "23.345081", + "shape_r": "0.3932251", + "sep": 0.44642101627950126 + } + ], + "desi": [] + }, + { + "plate": 5410, + "mjd": 56016, + "fiber": 644, + "ra": 191.05282, + "dec": 14.520977, + "z": 0.8557315161107931, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 6.828851541961458, + "oiii_flux": 6.087883015105203e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.957394", + "mag_r": "23.973717", + "mag_z": "23.131676", + "shape_r": "0", + "sep": 0.4379739443713008 + } + ], + "desi": [] + }, + { + "plate": 5413, + "mjd": 55976, + "fiber": 488, + "ra": 191.68889000000001, + "dec": 7.4973899, + "z": 0.8370253531434355, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.583752990119395, + "oiii_flux": 5.566651340063519e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.65291", + "mag_r": "23.15238", + "mag_z": "22.293777", + "shape_r": "0.862414", + "sep": 0.9242439230742817 + } + ], + "desi": [] + }, + { + "plate": 5447, + "mjd": 55958, + "fiber": 124, + "ra": 210.25982999999997, + "dec": 7.9149144, + "z": 0.8557315445020722, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 6.303179222659262, + "oiii_flux": 5.837808584342732e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.145863", + "mag_r": "23.390774", + "mag_z": "22.517036", + "shape_r": "0.37179527", + "sep": 0.37183658813599446 + } + ], + "desi": [] + }, + { + "plate": 5451, + "mjd": 56010, + "fiber": 490, + "ra": 210.0313, + "dec": 14.742623, + "z": 0.5025240324753967, + "lines": [ + "Halpha", + "[SII]6731" + ], + "n_peaks": 3, + "snr": 7.448403555715428, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "24.23345", + "mag_r": "24.540787", + "mag_z": "23.693863", + "shape_r": "0.3905891", + "sep": 0.9796093204495303 + } + ], + "desi": [] + }, + { + "plate": 5694, + "mjd": 56213, + "fiber": 351, + "ra": 23.776635, + "dec": 25.071366, + "z": 0.4037908745873281, + "lines": [ + "Halpha", + "[OII]3727" + ], + "n_peaks": 9, + "snr": 7.675029295960256, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5703, + "mjd": 56190, + "fiber": 288, + "ra": 14.549182999999971, + "dec": 19.371363, + "z": 0.9011634413764038, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 15.064540298062369, + "oiii_flux": null, + "ls": [ + { + "type": "PSF", + "mag_g": "23.308184", + "mag_r": "22.91971", + "mag_z": "22.098537", + "shape_r": "0", + "sep": 0.6288056903944037 + } + ], + "desi": [] + }, + { + "plate": 5733, + "mjd": 56575, + "fiber": 654, + "ra": 138.00488, + "dec": 48.770732, + "z": 0.7545649469478944, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.961086746513541, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5738, + "mjd": 56002, + "fiber": 958, + "ra": 149.06862, + "dec": 51.821961, + "z": 0.0002962596775186732, + "lines": [ + "Halpha", + "[NII]6583", + "[SII]6716" + ], + "n_peaks": 3, + "snr": 7.689927240032971, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5739, + "mjd": 55976, + "fiber": 150, + "ra": 149.61539, + "dec": 48.663888, + "z": 0.7195904732734747, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 14.03932680666367, + "oiii_flux": 1.0745686540182024e-16, + "ls": [], + "desi": [] + }, + { + "plate": 5777, + "mjd": 56280, + "fiber": 948, + "ra": 140.43369, + "dec": 26.239975, + "z": 0.4155446049449435, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 7.020155708312245, + "oiii_flux": 4.349240789028637e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.919281", + "mag_r": "22.661806", + "mag_z": "21.901217", + "shape_r": "0.36033162", + "sep": 0.45870908605168803 + } + ], + "desi": [] + }, + { + "plate": 5800, + "mjd": 56279, + "fiber": 368, + "ra": 149.00527999999997, + "dec": 29.498348, + "z": 0.8030806392615681, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 6.166480432853433, + "oiii_flux": 4.741816457155555e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.009434", + "mag_r": "23.600365", + "mag_z": "22.890654", + "shape_r": "0.31189233", + "sep": 1.0071489724683678 + } + ], + "desi": [] + }, + { + "plate": 5855, + "mjd": 56088, + "fiber": 498, + "ra": 189.75295000000006, + "dec": 19.544897, + "z": 0.5091369490037582, + "lines": [ + "Halpha", + "[NII]6583" + ], + "n_peaks": 2, + "snr": 9.181139874145408, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5863, + "mjd": 56042, + "fiber": 816, + "ra": 197.31227, + "dec": 18.681984, + "z": 0.7455833542321518, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.735634358603052, + "oiii_flux": 7.668703890852151e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.184172", + "mag_r": "22.52506", + "mag_z": "21.960733", + "shape_r": "0.3909963", + "sep": 1.2024055692445181 + } + ], + "desi": [] + }, + { + "plate": 5873, + "mjd": 56035, + "fiber": 868, + "ra": 158.02559999999994, + "dec": 22.152472, + "z": 0.24484462982315036, + "lines": [ + "Halpha", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 8.86316554530767, + "oiii_flux": 1.0550161411925077e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.831455", + "mag_r": "23.382254", + "mag_z": "23.272089", + "shape_r": "0.24194165", + "sep": 0.9218422119576314 + } + ], + "desi": [] + }, + { + "plate": 5972, + "mjd": 56334, + "fiber": 570, + "ra": 196.2772, + "dec": 27.015229, + "z": 0.17130886774287102, + "lines": [ + "Halpha", + "[SII]6731" + ], + "n_peaks": 5, + "snr": 7.251635988227392, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 5979, + "mjd": 56329, + "fiber": 226, + "ra": 185.96476000000007, + "dec": 23.127127, + "z": 0.7966746850555734, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.9360012016812, + "oiii_flux": null, + "ls": [ + { + "type": "PSF", + "mag_g": "24.357027", + "mag_r": "23.561062", + "mag_z": "22.954338", + "shape_r": "0", + "sep": 0.7474614223243421 + } + ], + "desi": [] + }, + { + "plate": 6013, + "mjd": 56074, + "fiber": 554, + "ra": 213.58866, + "dec": 24.330989, + "z": 0.18979889239529524, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 7.537159863991032, + "oiii_flux": 7.545616084712733e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.392803", + "mag_r": "23.634249", + "mag_z": "23.18195", + "shape_r": "0", + "sep": 0.9810242901821105 + } + ], + "desi": [] + }, + { + "plate": 6041, + "mjd": 56102, + "fiber": 498, + "ra": 232.02183000000002, + "dec": 44.141502, + "z": 0.506507953404379, + "lines": [ + "Halpha", + "[SII]6731" + ], + "n_peaks": 2, + "snr": 6.930967755291572, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 6044, + "mjd": 56090, + "fiber": 107, + "ra": 244.45014000000003, + "dec": 41.515148, + "z": 0.3987014670931053, + "lines": [ + "Halpha", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 3, + "snr": 17.554761239538653, + "oiii_flux": 1.217301657076173e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.596643", + "mag_r": "24.02438", + "mag_z": "23.34895", + "shape_r": "0", + "sep": 0.22813257794993277 + } + ], + "desi": [] + }, + { + "plate": 6155, + "mjd": 56245, + "fiber": 438, + "ra": 347.48707, + "dec": 10.35645, + "z": 0.6316425803559167, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.738650060798522, + "oiii_flux": 1.5574127546753346e-16, + "ls": [], + "desi": [] + }, + { + "plate": 6159, + "mjd": 56214, + "fiber": 494, + "ra": 356.5154600000001, + "dec": 10.421165, + "z": 0.42652257819966566, + "lines": [ + "Halpha", + "[NII]6583" + ], + "n_peaks": 5, + "snr": 8.497043592687138, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 6165, + "mjd": 56208, + "fiber": 788, + "ra": 353.86311, + "dec": 9.9350795, + "z": 0.4412025783340614, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 16.450480554674872, + "oiii_flux": 8.25804901666693e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.219753", + "mag_r": "23.697456", + "mag_z": "23.268528", + "shape_r": "0", + "sep": 1.028560769138189 + } + ], + "desi": [] + }, + { + "plate": 6173, + "mjd": 56238, + "fiber": 495, + "ra": 359.86337000000003, + "dec": 17.191396, + "z": 0.9942290327217801, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 4, + "snr": 7.886952022465284, + "oiii_flux": 2.3877520016502303e-16, + "ls": [], + "desi": [] + }, + { + "plate": 6203, + "mjd": 56266, + "fiber": 288, + "ra": 12.004381000000024, + "dec": 14.317517, + "z": 0.48308193162992663, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 6.857826169880559, + "oiii_flux": 4.518485358249337e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.15715", + "mag_r": "21.977432", + "mag_z": "21.381737", + "shape_r": "0.81275314", + "sep": 0.7053591058136708 + } + ], + "desi": [] + }, + { + "plate": 6289, + "mjd": 56559, + "fiber": 308, + "ra": 348.17625, + "dec": 27.40934, + "z": 0.37205092031074105, + "lines": [ + "[NII]6583", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.443239867808424, + "oiii_flux": null, + "ls": [ + { + "type": "PSF", + "mag_g": "23.839481", + "mag_r": "22.72554", + "mag_z": "21.899416", + "shape_r": "0", + "sep": 0.06684948813129837 + } + ], + "desi": [] + }, + { + "plate": 6402, + "mjd": 56334, + "fiber": 335, + "ra": 178.75863000000004, + "dec": 27.522097, + "z": 0.4375568565744694, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 12.369889386172575, + "oiii_flux": 7.168788007641098e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.389704", + "mag_r": "23.89858", + "mag_z": "23.734701", + "shape_r": "0", + "sep": 0.6363153520868081 + } + ], + "desi": [] + }, + { + "plate": 6422, + "mjd": 56328, + "fiber": 90, + "ra": 176.49067000000002, + "dec": 21.573325, + "z": 0.5322140994039734, + "lines": [ + "Hbeta", + "[OIII]4959", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 4, + "snr": 32.45038755525066, + "oiii_flux": 2.5786310643034104e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "23.726002", + "mag_r": "23.437176", + "mag_z": "23.450027", + "shape_r": "0", + "sep": 0.9390103344209819 + } + ], + "desi": [] + }, + { + "plate": 6423, + "mjd": 56313, + "fiber": 38, + "ra": 178.98923000000002, + "dec": 22.511197, + "z": 0.4131021602000101, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.71310990784185, + "oiii_flux": 9.5885172707904e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.917482", + "mag_r": "23.138554", + "mag_z": "22.536453", + "shape_r": "0.3314984", + "sep": 0.6488520350489001 + } + ], + "desi": [] + }, + { + "plate": 6432, + "mjd": 56309, + "fiber": 389, + "ra": 176.05368999999996, + "dec": 20.191752, + "z": 0.446010440988618, + "lines": [ + "Halpha", + "[SII]6731" + ], + "n_peaks": 4, + "snr": 9.711031073582562, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 6434, + "mjd": 56362, + "fiber": 449, + "ra": 169.93336, + "dec": 28.502085, + "z": 0.9018634849985393, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 4, + "snr": 10.127221508722943, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 6440, + "mjd": 56370, + "fiber": 498, + "ra": 166.04504999999995, + "dec": 32.500635, + "z": 0.9935601122242393, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 5, + "snr": 7.576058098339893, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 6484, + "mjd": 56358, + "fiber": 594, + "ra": 193.85918000000004, + "dec": 31.691022, + "z": 0.49563297054460465, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 14.039311280680124, + "oiii_flux": 1.2525002013065364e-16, + "ls": [], + "desi": [] + }, + { + "plate": 6487, + "mjd": 56362, + "fiber": 880, + "ra": 198.02094999999997, + "dec": 31.924341, + "z": 0.44911845220331614, + "lines": [ + "[OIII]4959", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 12.65077575002457, + "oiii_flux": 1.2516089724655216e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "23.941536", + "mag_r": "23.27747", + "mag_z": "22.90227", + "shape_r": "0", + "sep": 1.0765583619009254 + } + ], + "desi": [] + }, + { + "plate": 6497, + "mjd": 56329, + "fiber": 300, + "ra": 213.29485, + "dec": 29.077504, + "z": 0.6942186130601163, + "lines": [ + "Hbeta", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 27.6296705110565, + "oiii_flux": 1.69037061776283e-16, + "ls": [ + { + "type": "EXP", + "mag_g": "23.101616", + "mag_r": "22.522617", + "mag_z": "21.90238", + "shape_r": "1.1633749", + "sep": 1.33541378742198 + } + ], + "desi": [] + }, + { + "plate": 6516, + "mjd": 56571, + "fiber": 602, + "ra": 355.05917999999997, + "dec": 27.080381, + "z": 0.4687253535876563, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.368718529534167, + "oiii_flux": 8.844589312534336e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.425741", + "mag_r": "23.415026", + "mag_z": "22.804327", + "shape_r": "0.7026549", + "sep": 0.42171183728226697 + } + ], + "desi": [] + }, + { + "plate": 6529, + "mjd": 56535, + "fiber": 447, + "ra": 9.74883010000002, + "dec": 30.637936, + "z": 0.9399502617830587, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 9, + "snr": 10.613280428478538, + "oiii_flux": 2.5999077262077576e-16, + "ls": [], + "desi": [] + }, + { + "plate": 6586, + "mjd": 56485, + "fiber": 366, + "ra": 336.95291, + "dec": 28.140914, + "z": 0.3658881905168969, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.777047578120003, + "oiii_flux": 9.071872436727105e-17, + "ls": [ + { + "type": "REX", + "mag_g": "22.864489", + "mag_r": "21.86232", + "mag_z": "21.473747", + "shape_r": "0.74953747", + "sep": 0.1191038717341213 + } + ], + "desi": [] + }, + { + "plate": 6587, + "mjd": 56537, + "fiber": 574, + "ra": 349.59914000000003, + "dec": 27.549498, + "z": 0.35196405146363774, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.018883456818621, + "oiii_flux": 6.648178539323807e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "22.75091", + "mag_r": "22.13667", + "mag_z": "21.707664", + "shape_r": "1.0259901", + "sep": 0.7112021017168204 + } + ], + "desi": [] + }, + { + "plate": 6588, + "mjd": 56536, + "fiber": 822, + "ra": 344.67859, + "dec": 25.913386, + "z": 0.4378551925365306, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.391821253040618, + "oiii_flux": 5.483331618206035e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.002872", + "mag_r": "23.227629", + "mag_z": "22.577625", + "shape_r": "0.6979751", + "sep": 0.6605939756971356 + } + ], + "desi": [] + }, + { + "plate": 6602, + "mjd": 56571, + "fiber": 766, + "ra": 24.024040000000014, + "dec": 34.108903, + "z": 0.0004086315289510978, + "lines": [ + "[OII]3727", + "[SII]6716" + ], + "n_peaks": 2, + "snr": 8.156630596674033, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 6625, + "mjd": 56386, + "fiber": 450, + "ra": 199.19516, + "dec": 45.567818, + "z": 1.025653430918438, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 13.051453455582713, + "oiii_flux": 2.6088936113020334e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.713469", + "mag_r": "23.236698", + "mag_z": "22.30328", + "shape_r": "0.665897", + "sep": 1.0248568226379628 + } + ], + "desi": [] + }, + { + "plate": 6633, + "mjd": 56369, + "fiber": 490, + "ra": 183.16471, + "dec": 41.813175, + "z": 0.35714118572853004, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 15.253497463311781, + "oiii_flux": 1.7260768645761405e-16, + "ls": [ + { + "type": "REX", + "mag_g": "24.024984", + "mag_r": "23.567986", + "mag_z": "23.12124", + "shape_r": "0.363301", + "sep": 1.092570995935864 + } + ], + "desi": [] + }, + { + "plate": 6634, + "mjd": 56367, + "fiber": 520, + "ra": 179.94605, + "dec": 41.955278, + "z": 0.4899564009770728, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.379933506161985, + "oiii_flux": 7.219084533209294e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.197714", + "mag_r": "23.049679", + "mag_z": "22.879417", + "shape_r": "0", + "sep": 0.22289906343243585 + } + ], + "desi": [] + }, + { + "plate": 6645, + "mjd": 56398, + "fiber": 490, + "ra": 174.26890000000003, + "dec": 45.429301, + "z": 1.036924981723308, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 6.8419713600366245, + "oiii_flux": 5.455915478229223e-16, + "ls": [], + "desi": [] + }, + { + "plate": 6689, + "mjd": 56396, + "fiber": 676, + "ra": 177.85168, + "dec": 54.091247, + "z": 0.24860065633179185, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 7.807161246578819, + "oiii_flux": 5.856040268665543e-17, + "ls": [ + { + "type": "REX", + "mag_g": "22.718187", + "mag_r": "22.345272", + "mag_z": "21.704235", + "shape_r": "0.783015", + "sep": 1.3402090849572577 + } + ], + "desi": [] + }, + { + "plate": 6699, + "mjd": 56411, + "fiber": 882, + "ra": 169.24331000000006, + "dec": 52.165212, + "z": 0.48598747925746677, + "lines": [ + "Halpha", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 8.635136365963026, + "oiii_flux": 7.496927916993997e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.547104", + "mag_r": "22.974361", + "mag_z": "23.03121", + "shape_r": "0", + "sep": 1.3597083617404386 + } + ], + "desi": [] + }, + { + "plate": 6743, + "mjd": 56385, + "fiber": 218, + "ra": 202.05611, + "dec": 47.971183, + "z": 0.32716533755328303, + "lines": [ + "Halpha", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 3, + "snr": 16.42750668586108, + "oiii_flux": 1.1178149448396251e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.053675", + "mag_r": "24.140772", + "mag_z": "24.167528", + "shape_r": "0", + "sep": 1.1945202954003944 + } + ], + "desi": [] + }, + { + "plate": 6793, + "mjd": 56430, + "fiber": 248, + "ra": 242.35394999999994, + "dec": 54.128793, + "z": 0.2354454062220973, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 9.533309071394704, + "oiii_flux": 5.270173139537824e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "22.855497", + "mag_r": "22.519888", + "mag_z": "22.264465", + "shape_r": "1.095056", + "sep": 0.42324700465551346 + } + ], + "desi": [] + }, + { + "plate": 6825, + "mjd": 56717, + "fiber": 460, + "ra": 202.51184, + "dec": 66.021356, + "z": 0.7937811201770488, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.133761223507255, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "23.444574", + "mag_r": "23.1874", + "mag_z": "22.245447", + "shape_r": "0.715084", + "sep": 0.2385692780161973 + } + ], + "desi": [] + }, + { + "plate": 6881, + "mjd": 56540, + "fiber": 554, + "ra": 2.467609400000015, + "dec": 23.787286, + "z": 0.7580249341923504, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 16.627943135501123, + "oiii_flux": 1.2861226327371223e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "23.956223", + "mag_r": "23.354641", + "mag_z": "22.159775", + "shape_r": "0", + "sep": 0.30281208506423163 + } + ], + "desi": [] + }, + { + "plate": 7052, + "mjd": 56539, + "fiber": 536, + "ra": 28.392041000000006, + "dec": -4.5956088, + "z": 0.560014561969723, + "lines": [ + "Halpha", + "[NII]6583" + ], + "n_peaks": 2, + "snr": 9.807944863389233, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 7057, + "mjd": 56593, + "fiber": 810, + "ra": 41.115422000000024, + "dec": -7.4140264, + "z": 0.3113823542280195, + "lines": [ + "Halpha", + "Hbeta", + "[OIII]4959", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 5, + "snr": 19.034795881557955, + "oiii_flux": 1.2459889378801648e-16, + "ls": [ + { + "type": "SER", + "mag_g": "22.712261", + "mag_r": "22.07377", + "mag_z": "21.91738", + "shape_r": "0.9962632", + "sep": 0.5648459554475019 + } + ], + "desi": [] + }, + { + "plate": 7095, + "mjd": 56625, + "fiber": 482, + "ra": 160.11325, + "dec": 58.20823, + "z": 0.350217978801191, + "lines": [ + "[OIII]4959", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 23.380194012029918, + "oiii_flux": 1.4696235180606016e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.05814", + "mag_r": "22.583075", + "mag_z": "22.531076", + "shape_r": "0.489492", + "sep": 0.9163835162078839 + } + ], + "desi": [] + }, + { + "plate": 7107, + "mjd": 56740, + "fiber": 796, + "ra": 174.80896000000007, + "dec": 62.157694, + "z": 0.5150087813856734, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.127389158831537, + "oiii_flux": 6.753678767010544e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.052149", + "mag_r": "23.076212", + "mag_z": "22.70523", + "shape_r": "0", + "sep": 0.9223646201686849 + } + ], + "desi": [] + }, + { + "plate": 7114, + "mjd": 56748, + "fiber": 520, + "ra": 169.81510000000003, + "dec": 65.929261, + "z": 0.4401746100165823, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 11.57625018184004, + "oiii_flux": 7.146959262165886e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.629326", + "mag_r": "22.997557", + "mag_z": "22.566895", + "shape_r": "0.455832", + "sep": 0.25791228896977103 + } + ], + "desi": [] + }, + { + "plate": 7134, + "mjd": 56566, + "fiber": 536, + "ra": 359.7404, + "dec": 29.820733, + "z": 0.575174426617667, + "lines": [ + "Halpha", + "[NII]6583" + ], + "n_peaks": 3, + "snr": 7.1073374348236635, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 7142, + "mjd": 56567, + "fiber": 606, + "ra": 338.98836000000006, + "dec": 33.058786, + "z": 0.8104020469775395, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 19.691718509377896, + "oiii_flux": 1.612662164860382e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.001688", + "mag_r": "23.994534", + "mag_z": "23.015324", + "shape_r": "0", + "sep": 1.4213145617490894 + } + ], + "desi": [] + }, + { + "plate": 7164, + "mjd": 56597, + "fiber": 490, + "ra": 26.241202999999985, + "dec": -7.7822734, + "z": 0.9360877201658763, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 3, + "snr": 9.10655381999112, + "oiii_flux": 2.5712022549955375e-16, + "ls": [], + "desi": [] + }, + { + "plate": 7183, + "mjd": 56658, + "fiber": 450, + "ra": 25.904110000000003, + "dec": -10.257957, + "z": 0.7365181890171532, + "lines": [ + "Hbeta", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 3, + "snr": 21.729425576924918, + "oiii_flux": 3.87745012960435e-16, + "ls": [ + { + "type": "EXP", + "mag_g": "23.088839", + "mag_r": "22.670818", + "mag_z": "22.156492", + "shape_r": "0.63189024", + "sep": 1.349930838753821 + } + ], + "desi": [] + }, + { + "plate": 7311, + "mjd": 57038, + "fiber": 991, + "ra": 132.07073000000003, + "dec": 50.440427, + "z": 0.2683045745642433, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 12.810601519907443, + "oiii_flux": 1.7429846674457878e-16, + "ls": [], + "desi": [] + }, + { + "plate": 7382, + "mjd": 56991, + "fiber": 11, + "ra": 158.53881, + "dec": 48.445139, + "z": 1.024786983370513, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 2, + "snr": 6.76915069510315, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 7390, + "mjd": 57130, + "fiber": 18, + "ra": 163.85951999999997, + "dec": 47.343562, + "z": 0.2951353086102161, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 13.160891103626225, + "oiii_flux": 1.2837334768247358e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.494759", + "mag_r": "22.759567", + "mag_z": "22.67018", + "shape_r": "0.618267", + "sep": 0.5182083783139572 + } + ], + "desi": [] + }, + { + "plate": 7391, + "mjd": 56781, + "fiber": 675, + "ra": 160.40950999999995, + "dec": 46.607686, + "z": 0.4676535820689569, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.07421097684079, + "oiii_flux": 1.0036983377280063e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.808922", + "mag_r": "22.912884", + "mag_z": "22.593496", + "shape_r": "0.378459", + "sep": 0.705702507746899 + } + ], + "desi": [] + }, + { + "plate": 7512, + "mjd": 56777, + "fiber": 45, + "ra": 134.07495, + "dec": 48.201141, + "z": 0.16365317519252898, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.644754709008712, + "oiii_flux": 2.0530405992660087e-16, + "ls": [], + "desi": [] + }, + { + "plate": 7512, + "mjd": 56777, + "fiber": 675, + "ra": 132.07073000000003, + "dec": 50.440427, + "z": 0.2683045745642433, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.301517487195508, + "oiii_flux": 1.4380702079954268e-16, + "ls": [], + "desi": [] + }, + { + "plate": 7606, + "mjd": 56977, + "fiber": 311, + "ra": 350.26431, + "dec": 21.013398, + "z": 0.5181666761045582, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 13.605993735614337, + "oiii_flux": null, + "ls": [ + { + "type": "EXP", + "mag_g": "23.016203", + "mag_r": "22.12761", + "mag_z": "21.578445", + "shape_r": "0.6869657", + "sep": 0.1732875174301991 + } + ], + "desi": [] + }, + { + "plate": 7631, + "mjd": 57279, + "fiber": 635, + "ra": 18.954341, + "dec": 22.18753, + "z": 0.39805275250364935, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.155995284403014, + "oiii_flux": 4.5127636843739316e-17, + "ls": [], + "desi": [] + }, + { + "plate": 7646, + "mjd": 57570, + "fiber": 208, + "ra": 332.07142999999996, + "dec": 27.394134, + "z": 0.44895163168443053, + "lines": [ + "[OIII]4959", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 15.122734676053058, + "oiii_flux": 1.099228924887067e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.395468", + "mag_r": "23.796581", + "mag_z": "23.130798", + "shape_r": "0", + "sep": 0.5788409372546112 + } + ], + "desi": [] + }, + { + "plate": 7681, + "mjd": 57042, + "fiber": 706, + "ra": 18.717764999999986, + "dec": 24.946106, + "z": 0.9818439201214084, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 18.24537880701899, + "oiii_flux": null, + "ls": [ + { + "type": "EXP", + "mag_g": "22.8783", + "mag_r": "22.340084", + "mag_z": "21.416779", + "shape_r": "0.8965008", + "sep": 0.7725145031545008 + } + ], + "desi": [] + }, + { + "plate": 7690, + "mjd": 57046, + "fiber": 103, + "ra": 28.954353000000026, + "dec": 25.098049, + "z": 0.22524674908458808, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.105354353243358, + "oiii_flux": 1.0618112604777711e-16, + "ls": [ + { + "type": "REX", + "mag_g": "22.95908", + "mag_r": "22.260511", + "mag_z": "21.9084", + "shape_r": "0.7550736", + "sep": 0.7125214508219753 + } + ], + "desi": [] + }, + { + "plate": 7691, + "mjd": 58487, + "fiber": 687, + "ra": 29.475458000000003, + "dec": 27.588314, + "z": 0.5528896373634905, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 13.08577036916193, + "oiii_flux": 9.63639984065401e-17, + "ls": [], + "desi": [] + }, + { + "plate": 7699, + "mjd": 57574, + "fiber": 95, + "ra": 355.68318, + "dec": 25.994619, + "z": 0.2815146015305531, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 14.149180658401068, + "oiii_flux": 7.958568450545405e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "23.35566", + "mag_r": "22.607016", + "mag_z": "22.486082", + "shape_r": "0.97853965", + "sep": 0.6636085120943787 + } + ], + "desi": [] + }, + { + "plate": 7701, + "mjd": 57356, + "fiber": 625, + "ra": 351.51853000000006, + "dec": 27.440947, + "z": 0.39355321919297936, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.227151941000521, + "oiii_flux": 6.960059288615796e-17, + "ls": [], + "desi": [] + }, + { + "plate": 7711, + "mjd": 57667, + "fiber": 14, + "ra": 337.97305000000006, + "dec": 30.028809, + "z": 1.028520216208905, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 2, + "snr": 7.00817317135281, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 7747, + "mjd": 58398, + "fiber": 852, + "ra": 3.142897199999993, + "dec": 35.454035, + "z": 0.7043749554316946, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.693312847889971, + "oiii_flux": 4.885810907279959e-17, + "ls": [], + "desi": [] + }, + { + "plate": 7749, + "mjd": 58073, + "fiber": 332, + "ra": 0.1303358600000024, + "dec": 30.188611, + "z": 0.5026970326432771, + "lines": [ + "Halpha", + "[SII]6731" + ], + "n_peaks": 4, + "snr": 6.951682346656131, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 7756, + "mjd": 58392, + "fiber": 762, + "ra": 348.64014, + "dec": 35.105951, + "z": 0.00018110484912670088, + "lines": [ + "Halpha", + "[NII]6583" + ], + "n_peaks": 2, + "snr": 7.9877893337284505, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 7756, + "mjd": 58392, + "fiber": 884, + "ra": 349.17307000000005, + "dec": 34.363681, + "z": 1.0261660520967988, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 6.895151401965506, + "oiii_flux": 1.789113032399643e-16, + "ls": [], + "desi": [] + }, + { + "plate": 7822, + "mjd": 57041, + "fiber": 354, + "ra": 41.57260000000002, + "dec": -1.0669552, + "z": 0.23169283465292, + "lines": [ + "Halpha", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.229097110146903, + "oiii_flux": null, + "ls": [ + { + "type": "EXP", + "mag_g": "22.590546", + "mag_r": "22.013288", + "mag_z": "21.698215", + "shape_r": "1.3108295", + "sep": 0.6455965209193257 + } + ], + "desi": [] + }, + { + "plate": 7828, + "mjd": 57039, + "fiber": 929, + "ra": 38.28260599999999, + "dec": 0.30161671, + "z": 0.9016445517511321, + "lines": [ + "Hbeta", + "[OIII]4959" + ], + "n_peaks": 2, + "snr": 6.660110968129994, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 7835, + "mjd": 56986, + "fiber": 322, + "ra": 33.83880499999998, + "dec": -3.3222041, + "z": 0.294270434125126, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 14.572607271590451, + "oiii_flux": 1.51367507055706e-16, + "ls": [ + { + "type": "REX", + "mag_g": "23.871914", + "mag_r": "23.300728", + "mag_z": "23.503008", + "shape_r": "0.5607319", + "sep": 0.18561206149462428 + } + ], + "desi": [] + }, + { + "plate": 7854, + "mjd": 56989, + "fiber": 316, + "ra": 5.5898465000000215, + "dec": 1.511635, + "z": 0.8037035032798612, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.578222589608325, + "oiii_flux": 6.962824472541785e-17, + "ls": [ + { + "type": "DEV", + "mag_g": "23.656082", + "mag_r": "23.125124", + "mag_z": "22.412117", + "shape_r": "0.4130014", + "sep": 0.09128037421439462 + } + ], + "desi": [] + }, + { + "plate": 7860, + "mjd": 57006, + "fiber": 380, + "ra": 22.155867999999998, + "dec": 1.189414, + "z": 0.5264781572150812, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 6.809056917867774, + "oiii_flux": 7.217657598567891e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "22.701696", + "mag_r": "21.867914", + "mag_z": "21.514118", + "shape_r": "1.443438", + "sep": 1.0908370900479343 + } + ], + "desi": [] + }, + { + "plate": 7900, + "mjd": 57358, + "fiber": 798, + "ra": 4.130842900000005, + "dec": -3.0567295, + "z": 0.31287554532375383, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 12.522119056923584, + "oiii_flux": 7.473515108946852e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.239603", + "mag_r": "23.48462", + "mag_z": "23.25726", + "shape_r": "0", + "sep": 0.31849660710717403 + } + ], + "desi": [] + }, + { + "plate": 8169, + "mjd": 57071, + "fiber": 296, + "ra": 127.14855, + "dec": 57.125159, + "z": 9.526863567788091e-05, + "lines": [ + "[NII]6583", + "[OIII]5007", + "[SII]6731" + ], + "n_peaks": 3, + "snr": 7.500192287828472, + "oiii_flux": 5.391066177697526e-17, + "ls": [], + "desi": [] + }, + { + "plate": 8175, + "mjd": 57039, + "fiber": 450, + "ra": 150.61149999999998, + "dec": 50.642284, + "z": 0.14188813111414422, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.840351254867391, + "oiii_flux": 5.91574244611072e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.06775", + "mag_r": "22.493944", + "mag_z": "22.20206", + "shape_r": "0.517196", + "sep": 0.15714594777975946 + } + ], + "desi": [] + }, + { + "plate": 8204, + "mjd": 58146, + "fiber": 416, + "ra": 198.21603000000005, + "dec": 55.42233, + "z": 0.5281470378292179, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.6780207469722495, + "oiii_flux": 6.313935998540273e-17, + "ls": [ + { + "type": "EXP", + "mag_g": "22.699076", + "mag_r": "21.951668", + "mag_z": "21.917305", + "shape_r": "0.59776", + "sep": 1.4014924382390728 + } + ], + "desi": [] + }, + { + "plate": 8211, + "mjd": 57423, + "fiber": 986, + "ra": 205.78649999999993, + "dec": 50.999862, + "z": 0.4101767832430976, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 12.039548480269104, + "oiii_flux": 7.730725054259803e-17, + "ls": [], + "desi": [] + }, + { + "plate": 8234, + "mjd": 57450, + "fiber": 582, + "ra": 177.1214, + "dec": 58.452028, + "z": 0.7441771565381162, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.198751647973443, + "oiii_flux": 8.581997853836809e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.722353", + "mag_r": "22.925581", + "mag_z": "21.889091", + "shape_r": "0.298227", + "sep": 0.08860442828937341 + } + ], + "desi": [] + }, + { + "plate": 8279, + "mjd": 57063, + "fiber": 174, + "ra": 127.02744999999999, + "dec": 43.198904, + "z": 0.5113503256470218, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.2853515582272665, + "oiii_flux": 2.984329658248248e-17, + "ls": [ + { + "type": "REX", + "mag_g": "25.565884", + "mag_r": "23.339584", + "mag_z": "23.094225", + "shape_r": "0.339948", + "sep": 0.46665535778285183 + } + ], + "desi": [] + }, + { + "plate": 8370, + "mjd": 57520, + "fiber": 708, + "ra": 175.74677999999994, + "dec": 44.521712, + "z": 0.3416015732604777, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 12.052963837564546, + "oiii_flux": 8.031377970156603e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.658997", + "mag_r": "23.409325", + "mag_z": "22.993261", + "shape_r": "0.303813", + "sep": 0.52781019418025 + } + ], + "desi": [] + }, + { + "plate": 8370, + "mjd": 57732, + "fiber": 718, + "ra": 175.74677999999994, + "dec": 44.521712, + "z": 0.3416015732604777, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 10.120071411585316, + "oiii_flux": 5.625073113883591e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.658997", + "mag_r": "23.409325", + "mag_z": "22.993261", + "shape_r": "0.303813", + "sep": 0.52781019418025 + } + ], + "desi": [] + }, + { + "plate": 8388, + "mjd": 57488, + "fiber": 346, + "ra": 198.47179000000006, + "dec": 41.253479, + "z": 0.7041787676390732, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.282940846437191, + "oiii_flux": 4.81666635826682e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.958551", + "mag_r": "22.958603", + "mag_z": "22.444096", + "shape_r": "0.260744", + "sep": 0.6151987341066294 + } + ], + "desi": [] + }, + { + "plate": 8497, + "mjd": 58161, + "fiber": 40, + "ra": 221.93867, + "dec": 42.202125, + "z": 0.4765242764368316, + "lines": [ + "Hbeta", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 31.25277474454601, + "oiii_flux": 3.899933423890799e-16, + "ls": [], + "desi": [] + }, + { + "plate": 8526, + "mjd": 57898, + "fiber": 317, + "ra": 244.45012999999994, + "dec": 41.515158, + "z": 0.3985543121844598, + "lines": [ + "Halpha", + "Hbeta", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 4, + "snr": 14.5484261766251, + "oiii_flux": 9.900091346013629e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.596643", + "mag_r": "24.02438", + "mag_z": "23.34895", + "shape_r": "0", + "sep": 0.23421655594507992 + } + ], + "desi": [] + }, + { + "plate": 8732, + "mjd": 57418, + "fiber": 829, + "ra": 35.934236999999996, + "dec": 5.213633, + "z": 0.4388815052994207, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 20.780622389527984, + "oiii_flux": 1.369150353281563e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.547962", + "mag_r": "23.617199", + "mag_z": "23.199675", + "shape_r": "0", + "sep": 0.6600022877628573 + } + ], + "desi": [] + }, + { + "plate": 8750, + "mjd": 58401, + "fiber": 690, + "ra": 10.330637000000024, + "dec": 6.254206, + "z": 0.43058988530894027, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 15.221575512678918, + "oiii_flux": 8.203265160192892e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.69607", + "mag_r": "23.254494", + "mag_z": "22.74257", + "shape_r": "0", + "sep": 0.7335542060736635 + } + ], + "desi": [] + }, + { + "plate": 8755, + "mjd": 58138, + "fiber": 198, + "ra": 25.24366600000002, + "dec": 5.8733336, + "z": 0.6304787766663658, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 8.230874987109008, + "oiii_flux": 7.778355002304797e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.240755", + "mag_r": "22.531874", + "mag_z": "21.898706", + "shape_r": "0.40923864", + "sep": 0.5906806174127621 + } + ], + "desi": [] + }, + { + "plate": 8763, + "mjd": 57309, + "fiber": 452, + "ra": 348.3232499999999, + "dec": -0.069418186, + "z": 0.7523443342691443, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 6.71636082735924, + "oiii_flux": null, + "ls": [], + "desi": [] + }, + { + "plate": 8792, + "mjd": 57364, + "fiber": 446, + "ra": 23.513869, + "dec": -1.0522601, + "z": 0.4024053513854704, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 6.982528382937109, + "oiii_flux": 5.1732247848663104e-17, + "ls": [ + { + "type": "REX", + "mag_g": "24.518476", + "mag_r": "23.573746", + "mag_z": "23.357794", + "shape_r": "0.27284607", + "sep": 1.4344196703350034 + } + ], + "desi": [] + }, + { + "plate": 9141, + "mjd": 57663, + "fiber": 653, + "ra": 321.07987, + "dec": -0.46192883, + "z": 0.32044237907509254, + "lines": [ + "Hbeta", + "[OIII]4959", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 4, + "snr": 18.168123778909816, + "oiii_flux": 9.863222806860764e-17, + "ls": [ + { + "type": "REX", + "mag_g": "23.406042", + "mag_r": "22.580313", + "mag_z": "22.25383", + "shape_r": "0.29810634", + "sep": 0.5199027012507377 + } + ], + "desi": [] + }, + { + "plate": 9144, + "mjd": 57666, + "fiber": 648, + "ra": 328.28503, + "dec": 0.023650328, + "z": 0.5567520790323987, + "lines": [ + "Hbeta", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 14.360174462008947, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "22.96467", + "mag_r": "22.041819", + "mag_z": "21.71468", + "shape_r": "0.3132841", + "sep": 0.7475816857092141 + } + ], + "desi": [] + }, + { + "plate": 9162, + "mjd": 58040, + "fiber": 242, + "ra": 322.0006000000001, + "dec": 0.38206028, + "z": 0.397569970115321, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 9.530639170972727, + "oiii_flux": 6.204251211693754e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.770256", + "mag_r": "23.13741", + "mag_z": "22.650038", + "shape_r": "0", + "sep": 1.1620128816739212 + } + ], + "desi": [] + }, + { + "plate": 9162, + "mjd": 58040, + "fiber": 928, + "ra": 322.94891000000007, + "dec": 1.9197851, + "z": 0.6480676398104834, + "lines": [ + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 16.881050118786504, + "oiii_flux": 1.1198409355094394e-16, + "ls": [ + { + "type": "PSF", + "mag_g": "24.46192", + "mag_r": "23.940424", + "mag_z": "24.26673", + "shape_r": "0", + "sep": 0.14727025021611587 + } + ], + "desi": [] + }, + { + "plate": 9380, + "mjd": 58081, + "fiber": 561, + "ra": 41.731742999999994, + "dec": 1.9481073, + "z": 0.754906128197302, + "lines": [ + "[OIII]4959", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.207279288681113, + "oiii_flux": null, + "ls": [ + { + "type": "REX", + "mag_g": "24.460737", + "mag_r": "24.032976", + "mag_z": "23.78505", + "shape_r": "0.1997158", + "sep": 0.7178474702433683 + } + ], + "desi": [] + }, + { + "plate": 9382, + "mjd": 57746, + "fiber": 452, + "ra": 34.843569, + "dec": 0.034358873, + "z": 0.3627467348531802, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 14.768371605745951, + "oiii_flux": 1.2685042367814032e-16, + "ls": [ + { + "type": "DEV", + "mag_g": "22.982851", + "mag_r": "22.198904", + "mag_z": "21.912926", + "shape_r": "1.0599812", + "sep": 1.2361590124433635 + } + ], + "desi": [] + }, + { + "plate": 9435, + "mjd": 58108, + "fiber": 594, + "ra": 17.534663000000023, + "dec": 4.6654514, + "z": 0.2002318408067124, + "lines": [ + "Halpha", + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 3, + "snr": 10.766478315665788, + "oiii_flux": 9.349635548291517e-17, + "ls": [ + { + "type": "REX", + "mag_g": "22.910862", + "mag_r": "22.270172", + "mag_z": "21.860588", + "shape_r": "0.6839065", + "sep": 0.4068837852067024 + } + ], + "desi": [] + }, + { + "plate": 9442, + "mjd": 58076, + "fiber": 984, + "ra": 9.950573500000019, + "dec": 2.6555541, + "z": 0.3922750176020062, + "lines": [ + "Halpha", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 3, + "snr": 14.712846340337352, + "oiii_flux": 1.2818423072637772e-16, + "ls": [], + "desi": [] + }, + { + "plate": 9554, + "mjd": 57807, + "fiber": 188, + "ra": 140.49693000000002, + "dec": 18.222473, + "z": 0.4319358389507493, + "lines": [ + "Halpha", + "[OIII]5007" + ], + "n_peaks": 2, + "snr": 8.498148659138547, + "oiii_flux": 6.985007559788913e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "24.164122", + "mag_r": "23.630466", + "mag_z": "23.210087", + "shape_r": "0", + "sep": 0.47051351663278124 + } + ], + "desi": [] + }, + { + "plate": 9575, + "mjd": 57786, + "fiber": 786, + "ra": 153.75520000000006, + "dec": 17.375662, + "z": 0.30535709961777047, + "lines": [ + "Halpha", + "Hbeta", + "[OIII]4959", + "[OIII]5007" + ], + "n_peaks": 4, + "snr": 16.57270909232735, + "oiii_flux": 1.1453538479800359e-16, + "ls": [], + "desi": [] + }, + { + "plate": 9582, + "mjd": 57806, + "fiber": 566, + "ra": 143.08943999999997, + "dec": 17.211555, + "z": 0.6400804203216899, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 9.064564260480777, + "oiii_flux": 7.350597032231113e-17, + "ls": [ + { + "type": "DEV", + "mag_g": "22.960728", + "mag_r": "22.439394", + "mag_z": "21.934698", + "shape_r": "0.51616395", + "sep": 0.7856567315584331 + } + ], + "desi": [] + }, + { + "plate": 9610, + "mjd": 58137, + "fiber": 172, + "ra": 133.00639999999999, + "dec": 27.215458, + "z": 0.4899275267920076, + "lines": [ + "[OIII]5007", + "[OII]3727" + ], + "n_peaks": 2, + "snr": 7.016526377719298, + "oiii_flux": 5.198639710535588e-17, + "ls": [ + { + "type": "PSF", + "mag_g": "23.699276", + "mag_r": "22.820581", + "mag_z": "22.73364", + "shape_r": "0", + "sep": 1.249763337150861 + } + ], + "desi": [] + } + ] +} \ No newline at end of file diff --git a/papers/sky_fibres/data/skyfibre_inject.json b/papers/sky_fibres/data/skyfibre_inject.json new file mode 100644 index 0000000000000000000000000000000000000000..f46612fa3c51caaecc0724e0adf66a29a58432c3 --- /dev/null +++ b/papers/sky_fibres/data/skyfibre_inject.json @@ -0,0 +1,228 @@ +{ + "plain_1_1.0": { + "n": 1720, + "found": 517, + "lost": { + "shared": 807, + "below threshold": 394, + "masked": 2 + }, + "false": 16, + "fibres": 1727, + "recovered": 0.3005813953488372 + }, + "plain_1_1.5": { + "n": 1720, + "found": 658, + "lost": { + "shared": 1058, + "below threshold": 2, + "masked": 2 + }, + "false": 18, + "fibres": 1727, + "recovered": 0.3825581395348837 + }, + "plain_1_2.0": { + "n": 1720, + "found": 648, + "lost": { + "shared": 1072 + }, + "false": 17, + "fibres": 1727, + "recovered": 0.3767441860465116 + }, + "plain_1_3.0": { + "n": 1720, + "found": 633, + "lost": { + "shared": 1086, + "masked": 1 + }, + "false": 16, + "fibres": 1727, + "recovered": 0.3680232558139535 + }, + "plain_1_5.0": { + "n": 1720, + "found": 626, + "lost": { + "shared": 1093, + "masked": 1 + }, + "false": 12, + "fibres": 1727, + "recovered": 0.363953488372093 + }, + "plain_2_1.0": { + "n": 1720, + "found": 963, + "lost": { + "below threshold": 394, + "shared": 358, + "width": 3, + "masked": 2 + }, + "false": 24, + "fibres": 1727, + "recovered": 0.5598837209302325 + }, + "plain_2_1.5": { + "n": 1720, + "found": 1274, + "lost": { + "shared": 442, + "below threshold": 2, + "masked": 2 + }, + "false": 24, + "fibres": 1727, + "recovered": 0.7406976744186047 + }, + "plain_2_2.0": { + "n": 1720, + "found": 1242, + "lost": { + "shared": 478 + }, + "false": 23, + "fibres": 1727, + "recovered": 0.7220930232558139 + }, + "plain_2_3.0": { + "n": 1720, + "found": 1207, + "lost": { + "shared": 512, + "masked": 1 + }, + "false": 23, + "fibres": 1727, + "recovered": 0.7017441860465117 + }, + "plain_2_5.0": { + "n": 1720, + "found": 1236, + "lost": { + "shared": 483, + "masked": 1 + }, + "false": 24, + "fibres": 1727, + "recovered": 0.7186046511627907 + }, + "common_1_1.0": { + "n": 1720, + "found": 520, + "lost": { + "shared": 794, + "below threshold": 404, + "masked": 2 + }, + "false": 16, + "fibres": 1727, + "recovered": 0.3023255813953488 + }, + "common_1_1.5": { + "n": 1720, + "found": 691, + "lost": { + "shared": 1025, + "below threshold": 2, + "masked": 2 + }, + "false": 18, + "fibres": 1727, + "recovered": 0.40174418604651163 + }, + "common_1_2.0": { + "n": 1720, + "found": 672, + "lost": { + "shared": 1048 + }, + "false": 17, + "fibres": 1727, + "recovered": 0.39069767441860465 + }, + "common_1_3.0": { + "n": 1720, + "found": 652, + "lost": { + "shared": 1067, + "masked": 1 + }, + "false": 16, + "fibres": 1727, + "recovered": 0.37906976744186044 + }, + "common_1_5.0": { + "n": 1720, + "found": 641, + "lost": { + "shared": 1078, + "masked": 1 + }, + "false": 12, + "fibres": 1727, + "recovered": 0.37267441860465117 + }, + "common_2_1.0": { + "n": 1720, + "found": 953, + "lost": { + "below threshold": 404, + "shared": 358, + "width": 3, + "masked": 2 + }, + "false": 24, + "fibres": 1727, + "recovered": 0.5540697674418604 + }, + "common_2_1.5": { + "n": 1720, + "found": 1279, + "lost": { + "shared": 437, + "below threshold": 2, + "masked": 2 + }, + "false": 24, + "fibres": 1727, + "recovered": 0.7436046511627907 + }, + "common_2_2.0": { + "n": 1720, + "found": 1256, + "lost": { + "shared": 464 + }, + "false": 23, + "fibres": 1727, + "recovered": 0.7302325581395349 + }, + "common_2_3.0": { + "n": 1720, + "found": 1223, + "lost": { + "shared": 496, + "masked": 1 + }, + "false": 23, + "fibres": 1727, + "recovered": 0.711046511627907 + }, + "common_2_5.0": { + "n": 1720, + "found": 1248, + "lost": { + "shared": 471, + "masked": 1 + }, + "false": 24, + "fibres": 1727, + "recovered": 0.7255813953488373 + } +} \ No newline at end of file diff --git a/papers/sky_fibres/data/skyfibre_lines.csv.gz b/papers/sky_fibres/data/skyfibre_lines.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..541cb4d4c37ca7b0f63f8074741a20b657270d51 --- /dev/null +++ b/papers/sky_fibres/data/skyfibre_lines.csv.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1a3066898c9cfcf370f8225aee10343de54e824ea4300ded7713cc6a332fd7c +size 1500916 diff --git a/papers/sky_fibres/data/skyfibre_recurring.json b/papers/sky_fibres/data/skyfibre_recurring.json new file mode 100644 index 0000000000000000000000000000000000000000..d233dbeaf7aca0e5aa1c8c6feae100bc808170d3 --- /dev/null +++ b/papers/sky_fibres/data/skyfibre_recurring.json @@ -0,0 +1 @@ +{"ra": 213.55836, "dec": 53.61075, "n_files": 94, "spectra": [["spPlate-6933-56398.fits", 605], ["spPlate-7030-56448.fits", 597], ["spPlate-7338-56660.fits", 729], ["spPlate-7338-56664.fits", 683], ["spPlate-7338-56669.fits", 731], ["spPlate-7338-56717.fits", 725], ["spPlate-7338-56745.fits", 727], ["spPlate-7338-57038.fits", 733], ["spPlate-7338-57050.fits", 727], ["spPlate-7338-57067.fits", 727], ["spPlate-7338-57127.fits", 727], ["spPlate-7338-57135.fits", 727], ["spPlate-7338-57159.fits", 733], ["spPlate-7338-57166.fits", 733], ["spPlate-7338-57490.fits", 737], ["spPlate-7338-57781.fits", 723], ["spPlate-7338-57789.fits", 729], ["spPlate-7338-57805.fits", 729], ["spPlate-7338-57817.fits", 729], ["spPlate-7338-57832.fits", 729], ["spPlate-7338-57843.fits", 729], ["spPlate-7338-57859.fits", 729], ["spPlate-7338-57874.fits", 729], ["spPlate-7338-58127.fits", 727], ["spPlate-7338-58146.fits", 727], ["spPlate-7338-58174.fits", 727], ["spPlate-7338-58201.fits", 729], ["spPlate-7338-58503.fits", 727], ["spPlate-7338-58867.fits", 733], ["spPlate-7339-56683.fits", 722], ["spPlate-7339-56686.fits", 724], ["spPlate-7339-56697.fits", 722], ["spPlate-7339-56713.fits", 722], ["spPlate-7339-56715.fits", 722], ["spPlate-7339-56720.fits", 726], ["spPlate-7339-56722.fits", 736], ["spPlate-7339-56739.fits", 732], ["spPlate-7339-56747.fits", 724], ["spPlate-7339-56749.fits", 724], ["spPlate-7339-56751.fits", 732], ["spPlate-7339-56755.fits", 732], ["spPlate-7339-56768.fits", 732], ["spPlate-7339-56772.fits", 772], ["spPlate-7339-56780.fits", 722], ["spPlate-7339-56782.fits", 724], ["spPlate-7339-56783.fits", 724], ["spPlate-7339-56795.fits", 724], ["spPlate-7339-56799.fits", 724], ["spPlate-7339-56804.fits", 722], ["spPlate-7339-56808.fits", 722], ["spPlate-7339-56813.fits", 722], ["spPlate-7339-57082.fits", 724], ["spPlate-7339-57097.fits", 724], ["spPlate-7339-57428.fits", 728], ["spPlate-7339-57435.fits", 724], ["spPlate-7339-57451.fits", 724], ["spPlate-7339-57463.fits", 722], ["spPlate-7339-57481.fits", 724], ["spPlate-7339-57492.fits", 726], ["spPlate-7339-57510.fits", 726], ["spPlate-7339-57518.fits", 724], ["spPlate-7339-57544.fits", 726], ["spPlate-7339-57550.fits", 726], ["spPlate-7339-57892.fits", 724], ["spPlate-7339-57901.fits", 724], ["spPlate-7339-57918.fits", 724], ["spPlate-7339-57934.fits", 724], ["spPlate-7339-58531.fits", 728], ["spPlate-7339-58561.fits", 728], ["spPlate-7339-58587.fits", 728], ["spPlate-7339-58895.fits", 726], ["spPlate-7340-56726.fits", 728], ["spPlate-7340-56825.fits", 728], ["spPlate-7340-56829.fits", 728], ["spPlate-7340-56833.fits", 728], ["spPlate-7340-56837.fits", 728], ["spPlate-7340-57106.fits", 722], ["spPlate-7340-57185.fits", 726], ["spPlate-7340-57196.fits", 726], ["spPlate-7340-57568.fits", 724], ["spPlate-7340-57570.fits", 724], ["spPlate-7340-57576.fits", 724], ["spPlate-7340-58216.fits", 724], ["spPlate-7340-58230.fits", 724], ["spPlate-7340-58258.fits", 724], ["spPlate-7340-58275.fits", 722], ["spPlate-7340-58289.fits", 722], ["spPlate-7340-58617.fits", 726], ["spPlate-7340-58627.fits", 726], ["spPlate-7340-58646.fits", 726], ["spPlate-7340-58657.fits", 726], ["spPlate-7340-59010.fits", 728], ["spPlate-7340-59029.fits", 728], ["spPlate-8428-57837.fits", 56]], "start": 35517, "flux": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.35238, 5.50867, 1.81805, 9.48063, -0.28855, 0.31982, -1.80948, -2.75823, 3.31885, -3.98452, 1.42994, -0.80921, 1.04393, 0.70385, -0.33659, 0.88901, -0.13141, 1.14181, -1.18605, -1.10012, -0.0204, 0.36079, 1.27543, 0.40034, -0.14149, 0.69667, 1.99185, 0.77055, -0.56515, -1.18584, -0.35636, -0.38764, 0.90904, 0.91379, 0.22245, 0.99937, 0.16574, 0.08052, -0.24461, 0.73576, -0.48138, -0.21751, -0.45487, -0.55915, 0.54412, -0.09435, 0.2935, 0.5888, -0.29234, -0.41845, -0.31875, -0.39141, 0.54977, 0.93109, -0.30744, 0.42486, 0.43638, -0.09259, 0.04665, 0.11409, 0.0773, -0.03023, 1.10539, 0.41764, 0.09062, -0.28608, 0.59577, 0.85324, 0.0273, 1.06705, 0.06795, 0.14897, -0.2367, 0.56288, 0.33895, 0.15967, 1.10796, 0.10722, -0.28563, 0.27403, -0.22736, 0.3502, 0.20396, 0.31227, 0.27145, -0.02328, 0.01606, -0.02947, 0.49227, 0.09507, 0.33226, 0.32876, 0.35703, 0.35501, -0.01764, -0.02336, 0.41213, 0.21783, 0.36991, 0.05629, 0.05732, 0.73244, 0.21477, -0.01112, -0.18087, -0.00246, 0.63639, 0.43145, 0.58295, 0.57597, -0.09794, 0.0267, 0.12218, 0.03466, 0.14239, 0.45628, 0.20318, 0.21596, 0.04093, 0.05759, 0.01826, 0.17915, 0.50868, 0.40715, 0.28277, 0.53588, 0.52076, 0.45465, -0.03736, 0.00118, 0.10647, 0.28939, -0.06337, -0.21883, 0.00708, -0.09363, 0.01602, 0.00471, -0.12613, 0.54975, 0.1366, 0.27118, 0.12878, 0.13669, 0.20892, 0.08462, 0.32234, -0.09951, 0.19285, -0.10208, 0.08306, 0.73783, 0.48987, 0.24082, 0.28138, 0.07107, 0.34657, 0.19797, 0.28887, 0.07344, -0.07142, 0.25452, 0.23413, 0.23681, 0.33691, 0.3595, 0.20574, 0.26076, 0.26605, -0.01144, 0.17055, 0.21152, -0.1302, 0.21465, 0.2761, 0.14515, 0.11301, 0.01204, -0.0754, -0.1344, 0.12016, 0.18117, 0.16321, 0.25027, 0.11421, 0.06426, 0.21616, 0.2055, 0.1816, 0.02766, -0.12391, -0.16757, 0.22338, 0.04685, 0.08729, 0.12361, 0.07555, 0.04772, -0.00756, -0.0233, 0.07048, 0.1358, -0.0137, -0.05443, -0.00783, 0.16566, 0.31794, -0.14286, 0.04348, 0.25345, 0.02858, 0.30798, 0.22216, 0.24511, 0.19322, 0.24858, -0.08188, -0.0331, 0.24027, 0.08208, 0.07146, -0.04855, -0.03841, 0.14482, 0.03966, 0.08074, 0.11925, 0.05548, 0.09674, 0.05813, -0.04137, 0.02928, 0.19088, 0.25013, 0.04088, -0.06597, -0.05159, 0.12155, -0.00846, -0.01562, 0.20776, 0.13134, 0.22002, 0.10719, 0.02744, 0.04467, 0.02561, 0.31675, 0.3069, 0.04717, 0.07473, -0.08579, 0.02482, -0.05928, -0.15129, 0.10968, 0.15615, 0.0647, 0.10485, -0.10088, 0.02619, 0.06461, 0.03842, 0.0735, 0.02828, 0.02126, 0.14939, 0.19193, 0.05099, -0.07074, -0.0031, 0.12121, 0.13838, 0.08507, 0.05149, 0.01665, -0.05189, 0.12639, 0.13419, 0.11208, 0.07093, -0.0768, 0.03961, 0.05062, -0.02776, 0.05129, 0.01142, 0.05268, 0.03766, 0.04424, 0.15276, 0.164, 0.07767, 0.00389, 0.16363, -0.12779, 0.02007, 0.10984, -0.02122, 0.08062, 0.17843, 0.11884, 0.04509, 0.02064, -0.07447, 0.05468, 0.11164, 0.11651, 0.00658, 0.10094, 0.06302, -0.15478, -0.04502, 0.03258, 0.01154, 0.02234, 0.18316, -0.08718, -0.10558, 0.1335, 0.11356, -0.01513, -0.10308, 0.10524, -0.03795, -0.15574, 0.0608, 0.07996, 0.07193, 0.09402, 0.03814, -0.07911, 0.03327, 0.00243, 0.04357, 0.04099, -0.00103, 0.03327, -0.08062, 0.00126, 0.05885, 0.10425, 0.18541, 0.10542, 0.09663, 0.05607, 0.02118, -0.03657, 0.078, 0.08412, 0.0616, 0.10613, 0.1013, 0.00965, -0.01443, 0.09787, 0.05939, 0.04109, 0.14432, 0.04275, 0.00756, 0.13705, 0.12361, 0.07601, 0.0204, 0.05164, 0.05518, 0.07664, 0.0247, 0.03345, 0.06697, 0.10169, 0.1329, -0.00923, 0.0561, 0.01888, 0.04439, 0.17981, -0.0438, -0.07633, 0.14982, 0.06059, -0.0788, -0.03058, -0.11802, -0.07077, 0.02186, -0.06512, -0.03948, 0.02192, 0.11411, 0.0358, 0.02497, 0.06983, 0.02006, 0.02244, 0.06884, 0.08918, 0.08978, 0.022, -0.0149, -0.00629, 0.12465, 0.12657, -0.01214, -0.00014, -0.06053, 0.06419, 0.08618, 0.00537, -0.05172, 0.04096, 0.04926, 0.02809, 0.0508, 0.03301, 0.04262, 0.07723, 0.09199, 0.05209, 0.03522, 0.05113, 0.06194, 0.05974, 0.02873, 0.03811, 0.04831, -0.01159, 0.06697, 0.05437, 0.07014, 0.05496, 0.1114, 0.13131, 0.1099, -0.07865, 0.07549, 0.0081, -0.06093, 0.04738, 0.04618, 0.02124, -0.0266, -0.0232, 0.01502, -0.07106, -0.00612, 0.02175, 0.06727, 0.06759, 0.07268, 0.06051, 0.1049, 0.06934, 0.00947, 0.06286, -0.02231, -0.02764, 0.08622, -0.04102, -0.08021, 0.01386, 0.04698, -0.13851, -0.06538, 0.03695, 0.01452, -0.01358, 0.03367, 0.04464, 0.09886, -0.06519, -0.0347, 0.03353, -0.0148, -0.00118, -0.01906, -0.04636, -0.07434, 0.05815, 0.00371, -0.08539, -0.00361, 0.02039, 0.0241, -0.00228, -0.05364, -0.08868, 0.06928, 0.08408, -0.03469, 0.00745, -0.09451, -0.06136, -0.07994, -0.07185, 0.07313, 0.10902, 0.04634, -0.02767, 0.00702, 0.02451, 0.05124, -0.02135, -0.11696, 0.04912, 0.02493, -0.0751, -0.02979, -0.11221, 0.08345, -0.04831, -0.06859, 0.05229, 0.02083, 0.0412, -0.01864, 0.08585, 0.04427, 0.02412, -0.00881, 0.02914, 0.1063, -0.06161, 0.00115, 0.03141, -0.01169, -0.01477, 0.03566, 0.00469, 0.05127, 0.12344, 0.09748, -0.05845, -0.21485, -0.11296, 0.07699, 0.04816, 0.03181, 0.07929, -0.01392, 0.10401, 0.0462, -0.02918, 0.0372, 0.10454, 0.0295, -0.03719, 0.03086, -0.06013, 0.0538, 0.0608, -0.01342, -0.03624, -0.00955, 0.00353, 0.08399, 0.09528, -0.03869, -0.02037, 0.07942, 0.09583, 0.09892, 0.0427, 0.04501, 0.0644, 0.05146, 0.02311, 0.01621, 0.05183, 0.01381, -0.0181, -0.00544, 0.08868, 0.0721, -0.01487, 0.00833, 0.01512, 0.01368, 0.10552, 0.03776, 0.0298, 0.00614, -0.01856, 0.08283, 0.00624, 0.04993, 0.08172, 0.00441, 0.05719, -0.02594, -0.05451, -0.00888, 0.04535, 0.00096, 0.00473, 0.01429, 0.02298, 0.03659, 0.00939, 0.01726, -0.0261, 0.01765, 0.09229, 0.08568, 0.01859, 0.00578, 0.01888, 0.00835, -0.00378, 0.04824, 0.00901, -0.05169, -0.06457, -0.00413, 0.05853, 0.07263, -0.00746, -0.03728, -0.02193, 0.02242, 0.03065, -0.05436, -0.02029, 0.02344, 0.03446, 0.01017, -0.01829, -0.06454, -0.03661, -0.07048, -0.01669, 0.0591, -0.02789, 0.05118, -0.01585, 0.01801, 0.04131, 0.04507, 0.10269, 0.06475, -0.03362, 0.04442, 0.10786, -0.00743, 0.06592, 0.01535, 0.01802, 0.05749, 0.02391, 0.02235, 0.00123, -0.00752, -0.02484, 0.03486, 0.04994, 0.06602, 0.02374, -0.00706, 0.0437, -0.03183, 0.09826, 0.07888, -0.04286, -0.01792, 0.05793, 0.01281, 0.01204, -0.01601, -0.01661, 0.09411, 0.03231, 0.04955, -0.02558, -0.04206, 0.07763, -0.02486, -0.03505, -0.00412, -0.04155, 0.00465, 0.05574, 0.06593, 0.08862, 0.07897, 0.00787, -0.01509, 0.00975, 0.04167, 0.02635, -0.00857, -0.02669, 0.0303, 0.0825, 0.01057, 0.01474, -0.00176, -0.02989, 0.04023, 0.00162, 0.02505, -0.02718, -0.0532, 0.01651, -0.01654, 0.03749, 0.14262, 0.07609, -0.02916, 0.02993, 0.0457, 0.00095, 0.02517, 0.04012, -0.0046, 0.05899, 0.0204, -0.00175, 0.05362, 0.05772, 0.01912, -0.00172, 0.03863, 0.02702, -0.00071, 0.00266, 0.00096, 0.03907, 0.05781, -0.03742, -0.00901, 0.01567, -0.02652, -0.01103, -0.00544, 0.03152, 0.0332, -0.0357, 0.0289, 0.00667, -0.06831, 0.01468, 0.04428, 0.02386, 0.02444, 0.00239, 0.07708, 0.03204, 0.00457, 0.06398, 0.06473, 0.07733, 0.09646, 0.01348, -0.04923, 0.0079, 0.02843, 0.05867, 0.01118, 0.05233, 0.02937, 0.02575, 0.0989, 0.00159, 0.00017, 0.02958, -0.00312, 0.02487, 0.02541, 0.02327, 0.05295, 0.06022, 0.09686, 0.06036, 0.01139, 0.00581, 0.03279, 0.03249, 0.03883, 0.01995, -0.02848, 0.00144, 0.01197, 0.00461, -0.04217, -0.03401, -0.00096, 0.00082, -0.03662, 0.03053, 0.03356, 0.06385, 0.04584, -0.0187, 0.0356, 0.03881, 0.0464, 0.05014, 0.01773, -0.03944, -0.01555, 0.05413, 0.01894, 0.04167, 0.02437, -0.01713, 0.03028, 0.11809, 0.02773, 0.00622, 0.044, -0.01542, -0.01381, -0.0071, -0.01677, -0.03296, 0.04223, 0.08008, 0.00796, -0.00931, 0.03495, 0.0367, 0.08021, 0.03627, 0.00452, -0.01309, -0.00356, 0.02646, 0.05089, 0.04074, 0.014, 0.00882, -0.0021, 0.01062, -0.04031, -0.00277, 0.07469, 0.07194, 0.05334, 0.04747, 0.01531, 0.03104, 0.0684, 0.09529, 0.07488, 0.09923, 0.01398, 0.00844, 0.01562, 0.03149, 0.13147, 0.06075, -0.00765, 0.06982, 0.21362, -0.04441, -0.26713, -0.24454, -0.03539, 0.21408, 0.1692, 0.11085, 0.03116, 0.03081, 0.01866, -0.01172, 0.05155, 0.04435, 0.04046, 0.01276, 0.00441, 0.05498, 0.08201, 0.02775, -0.00709, 0.04062, -0.00432, 0.07204, 0.06502, 0.02281, 0.07484, 0.06971, 0.07381, -0.00433, -0.00036, 0.02947, -0.00543, 0.01763, -0.00602, 0.01671, 0.01222, -0.01097, 0.06044, 0.05716, -0.01846, 0.01404, 0.05261, -0.03087, -0.03802, -0.03693, 0.01176, 0.0072, 0.0057, 0.03389, -0.0366, -0.02491, -0.00144, 0.0732, 0.05538, 0.00679, -0.04026, 0.01165, -0.00574, 0.01631, 0.0546, 0.02861, 0.0391, -0.00736, -0.08926, 0.03226, 0.06714, 0.04291, -0.00667, 0.004, 0.04957, -0.00414, 0.05317, 0.02345, 0.00863, -0.03604, 0.00515, 0.08679, 0.04941, 0.05601, 0.03897, 0.01529, 0.00107, 0.0464, 0.01687, 0.06546, 0.05584, 0.07224, 0.05447, 0.00587, 0.00422, 0.01982, -0.01333, -0.00709, 0.03571, -0.02091, 0.00577, 0.004, 0.04364, 0.01785, -0.01137, -0.00741, 0.05872, -0.03525, -0.04877, 0.02297, 0.03585, 0.00255, 0.00197, -0.00383, -0.0079, -0.01403, 0.04169, 0.0869, 0.02928, 0.00968, 0.03859, 0.05205, -0.01217, 0.04037, -0.03043, -0.03669, 0.01187, 0.00805, 0.027, 0.01279, 0.0551, 0.02808, 0.0383, 0.04066, 0.03211, 0.06969, 0.03097, 0.04648, 0.02095, 0.00451, 0.04365, 0.03739, -0.0207, -0.02313, 0.03963, 0.04525, 0.05001, 0.02265, 0.04669, -0.02814, 0.04733, -0.00247, 0.02584, 0.06808, 0.0611, 0.02351, 0.03494, -0.01154, 0.04296, 0.06595, 0.02634, 0.04052, 0.03359, 0.05483, 0.03537, -0.02564, -0.00343, -0.04791, -0.05671, 0.03297, 0.01803, 0.04731, 0.04403, 0.02717, 0.0523, -0.00933, -0.02524, 0.02955, 0.01255, 0.03762, -0.0027, -0.00745, -0.00967, 0.03286, 0.03581, 0.00676, -0.01036, -0.01507, 0.041, 0.0634, 0.08459, -0.00078, -0.01111, 0.01861, 0.03531, 0.02606, 0.0024, -0.02645, 0.03483, 0.04933, 0.00428, 0.05725, 0.01727, -0.00069, 0.01726, 0.02475, 0.0236, 0.01322, 0.01106, 0.02752, 0.04928, 0.04464, 0.0184, 0.0266, 0.06952, 0.08195, -0.01375, 0.03468, 0.03742, 0.03295, 0.01187, -0.04569, -0.01927, 0.02811, 0.04025, 0.00958, -0.01231, 0.01278, 0.01737, 0.00665, 0.00391, -0.01463, 0.00853, 0.0605, 0.02834, 0.00077, 0.04233, 0.024, 0.02449, -0.00377, -0.00023, 0.03437, 0.0141, 0.02978, 0.04935, 0.00611, 0.05575, 0.06201, 0.01403, 0.04081, 0.04257, 0.00721, 0.07812, 0.03567, 0.03394, 0.01065, -0.01388, 0.00592, 0.04534, 0.03592, 0.02784, -0.00684, 0.01759, -0.00209, -0.03923, 0.03289, 0.00263, 0.03433, 0.03012, -0.01187, -0.01524, 0.06467, 0.00384, -0.02574, 0.06964, 0.05037, 0.05355, 0.01256, 0.00527, 0.04172, 0.05299, 0.00741, -0.0141, 0.03067, 0.0099, 0.02939, -0.0119, 0.02564, -0.02893, 0.01839, 0.02078, 0.02371, 0.05487, 0.04642, 0.02208, -0.0077, -0.00163, 0.03153, 0.01406, 0.05269, 0.0345, 0.01564, 0.00771, 0.00265, 0.0213, 0.0134, -0.01074, 0.0108, 0.05162, 0.00974, -0.02629, 0.0052, 0.03642, 0.04091, 0.02546, 0.0107, -0.00675, 0.05441, 0.04596, -0.02172, 0.04614, 0.05565, -0.00062, -0.01026, 0.00701, -0.03213, 0.01084, 0.03329, -0.00312, 0.03569, 0.01853, 0.05247, 0.06104, 0.03033, -0.00489, 0.01943, 0.03808, 0.03774, 0.03086, 0.04748, 0.0356, 0.01711, 0.02047, 0.06602, -0.00537, 0.02063, 0.02815, 0.00894, 0.0315, 0.02246, 0.02771, 0.03414, 0.06729, 0.07778, 0.11081, 0.13584, 0.18495, 0.20617, 0.11467, 0.08382, 0.3143, 0.86834, 1.41998, 1.61056, 1.31621, 0.84126, 0.49217, 0.31223, 0.23667, 0.11653, 0.08181, 0.0552, 0.10601, 0.0638, 0.03102, 0.01817, 0.054, 0.05988, 0.03416, 0.01915, 0.02576, 0.04585, 0.0016, -0.02883, 0.00455, 0.0334, -0.00621, -0.00957, 0.00559, 0.05095, 0.01894, 0.0314, 0.04314, 0.00079, 0.05818, 0.01128, 0.01475, 0.03086, 0.00452, 0.02509, 0.02627, 0.02602, 0.03522, 0.04629, 0.05393, 0.03926, 0.00328, 0.05678, 0.0936, 0.04087, 0.034, 0.05068, 0.04958, -0.01128, 0.01998, 0.03614, 0.06376, 0.02791, -0.01401, 0.04945, 0.0999, 0.08405, 0.08456, 0.02863, 0.05565, 0.02957, 0.02487, 0.01597, 0.03075, -0.01949, 0.03252, 0.0342, 0.02913, 0.02944, -0.01574, 0.05637, -0.0055, -0.00709, 0.0317, 0.00562, 0.04778, -0.02448, -0.00563, 0.031, -0.01507, 0.00071, 0.02342, 0.01449, 0.0707, 0.05363, 0.01213, 0.04238, 0.05899, 0.01067, -0.02101, 0.03767, 0.03993, -0.02206, -0.01543, 0.03189, 0.00015, 0.04979, 0.04912, -0.00089, 0.01282, 0.04628, 0.01399, 0.02554, 0.04169, 0.02543, 0.03235, 0.04437, -0.04219, 0.01235, 0.05042, 0.02397, 0.02547, 0.0299, 0.00432, 0.00297, 0.00164, 0.04469, 0.02812, 0.03428, 0.04276, 0.03489, 0.02275, 0.00557, 0.00764, 0.02436, 0.03413, 0.03319, 0.0212, 0.01085, 0.01354, 0.02883, 0.05222, 0.00796, 0.06983, 0.0567, -0.00707, -0.00516, 0.03529, 0.01966, 0.04451, 0.03554, 0.03497, 0.01866, 0.00242, 0.0776, 0.05222, 0.00144, 0.0434, 0.0116, 0.03322, 0.05565, 0.02431, -0.02108, 0.03498, 0.06237, 0.01897, 0.02775, 0.03365, 0.06119, 0.00404, 0.03394, 0.07576, 0.03802, 0.05657, 0.04456, -0.00122, 0.00517, 0.02718, 0.03178, -0.01661, 0.01226, 0.01898, 0.07541, 0.03933, 0.02365, -0.01413, -0.00846, 0.02855, 0.01647, 0.04421, 0.03462, 0.02187, 0.01906, 0.00914, -0.01297, -0.00396, -0.00694, 0.04372, 0.02938, 0.01093, 0.06725, 0.04207, 0.02172, 0.02486, 0.01848, -0.01846, -0.00693, -0.01106, -0.00293, 0.04683, 0.01643, 0.01496, 0.01699, 0.01979, 0.07467, -0.00436, -0.02324, 0.02141, 0.00581, 0.00371, -0.00113, 0.03213, 0.0512, 0.04117, -0.00404, 0.01158, 0.03857, 0.01505, 0.1001, 0.04732, -0.00937, 0.04335, 0.02261, -0.01779, -0.01196, -0.01062, 0.01331, 0.02868, 0.0251, 0.01775, 0.03865, -0.00194, 0.04404, 0.08906, 0.03066, 0.0069, -0.00362, -0.00958, -0.00496, 0.03251, -0.01134, -0.01315, -0.00348, -0.00311, 0.06136, -0.00592, -0.01181, -0.02298, 0.01424, 0.01984, -0.02305, 0.05229, 0.04457, -0.03004, -0.0166, -0.00173, -0.0216, -0.01361, 0.01975, 0.02444, -0.00732, 0.01354, 0.02555, -0.03988, -0.03925, 0.00143, 0.0235, 0.04041, 0.02, 0.02165, -0.02013, -0.02189, -0.00764, -0.00439, -0.01468, -0.00553, 0.01427, 0.01579, 0.01524, 0.03693, 0.01713, 0.0319, 0.03216, 0.04224, -0.00343, -0.04802, 0.02002, 0.06071, 0.05217, 0.0462, -0.0046, 0.00529, -0.02768, 0.02359, -1e-05, -0.017, 0.01188, 0.03175, 0.01283, 0.00405, 0.00339, -0.00951, 0.03815, -0.01879, 0.00764, 0.02419, 0.05129, 0.03153, 0.02812, 0.00882, 0.00104, 0.03768, -0.02393, -0.00284, 0.02971, 0.02869, -0.00679, -0.00857, -0.0243, -0.02837, 0.00544, 0.00328, 0.00563, -0.01442, -0.02241, -0.02203, 0.03871, -0.00443, -0.03383, 0.01361, 0.0185, 0.05429, -0.00882, -0.00948, 0.00466, -0.02082, -0.00718, -0.03966, -0.01726, 0.00848, 0.00523, -0.00605, 0.0053, -0.00159, 0.02437, 0.05087, 0.00972, -0.02658, -0.01035, -0.01705, -0.04285, -0.00507, -0.02364, -0.04547, -0.05585, -0.00585, 0.01488, -0.0148, 0.00521, -0.00242, -0.00533, 0.03131, 0.01949, 0.01538, 0.00634, 0.02245, -0.02422, 0.02805, 0.03191, -0.00315, -0.00666, -0.02148, -0.01053, 0.00886, -0.00714, 0.00451, -0.00834, -0.01959, -0.025, 0.00812, 0.05104, 0.01661, 0.01195, 0.01344, -1e-05, 0.02496, 0.02557, 0.01759, 0.02458, 0.01306, -0.00587, 0.02153, 0.02287, 0.00394, 0.00011, 0.00311, -0.01631, 0.00018, 0.0014, -0.0481, -0.01478, 0.02753, 0.00461, -0.00346, 0.04942, 0.04814, -0.02413, -0.03707, 0.00067, -0.01383, 0.02248, 0.04835, 0.04928, 0.02517, -0.00016, -0.00984, 0.00301, -0.044, -0.01152, 0.00672, 0.00676, 0.02348, 0.04729, 0.02898, 0.01346, 0.00193, 0.03675, 0.05415, -0.01015, 0.00677, 0.02234, -0.01642, 0.04708, 0.03853, 0.00904, 0.01972, 0.01618, 0.00269, -0.00071, -0.00228, 0.0032, -0.04277, -0.03124, 0.01667, -0.01758, -0.00646, 0.02122, 0.00036, -0.01451, -0.00759, 0.02253, 0.03445, 0.03314, 0.07031, 0.00544, -0.02912, 0.01028, 0.00071, -0.00364, 0.06009, 0.0389, 0.02069, 0.03441, 0.00882, -0.00264, 0.01656, 0.0307, 0.03215, 0.02012, 0.04154, 0.05087, -0.02735, 0.00492, 0.00802, 0.0318, 0.03124, -0.01801, 0.04224, 0.04726, -0.00574, 0.01256, 0.0296, 0.02302, 0.0407, 0.01338, -0.01882, 0.01072, 0.02817, 0.0097, -0.00537, 0.0046, -0.00384, 0.00711, 0.03336, 0.02204, 0.01779, 0.01091, 0.01325, 0.05299, 0.04768, 0.03176, 0.02079, 0.00681, 0.00108, 0.03578, 0.00902, -0.00571, 0.01472, 0.04411, 0.01841, 0.04267, 0.01719, -0.00383, 0.01113, 0.06234, 0.01162, -0.06486, 0.01754, 0.03205, -0.00572, 0.03217, 0.03458, 0.02641, -0.01374, -0.02161, 0.00947, 0.00047, 0.03515, 0.04179, 0.03522, 0.01592, 0.01083, 0.01975, 0.00402, -0.02169, -0.00553, -0.00549, -0.00781, -0.01232, -0.01899, 0.01201, 0.01261, -0.01476, 0.00064, 0.01914, 0.03776, 0.02285, 0.02341, 0.01454, -0.00428, -0.01732, -0.00324, -0.00702, 0.00902, 0.04161, 0.02263, 0.05347, 0.00065, 0.01247, 0.00738, -0.01742, -0.00335, -0.02219, 0.00755, 0.02386, 0.01979, 0.01475, -0.00942, 0.01787, 0.03324, 0.0246, 0.02036, -0.01263, -0.019, -0.02756, -0.00511, 0.0087, 0.0082, -0.01338, -0.03066, -0.00318, -0.00405, 0.02984, 0.01991, 0.01329, 0.03297, -0.00422, 0.00144, 0.06102, 0.028, 0.01777, 0.02518, -0.00842, -0.02276, 0.02312, 0.0201, 0.02908, 0.02099, -0.03499, -0.01225, 0.01411, -0.00828, 0.04146, 0.02815, 0.00277, 0.01182, 0.00511, 0.01065, 0.03254, -0.01119, -0.02272, -0.01327, 0.0241, -0.02556, 0.0005, 0.01357, 0.00025, 0.05361, 0.09387, 0.14338, -0.03989, -0.26356, -0.07533, 0.06149, 0.03458, 0.0095, -0.02246, 0.00175, -0.01986, 0.01282, -0.03579, 0.00361, -0.00539, -0.01288, 0.02956, -0.00088, -0.01339, -0.00343, 0.00329, 0.03077, 0.00409, 0.01986, 0.01404, 0.04129, 0.00033, -0.01756, 0.02564, 0.02247, -0.01467, 0.02025, 0.04555, -0.00487, 0.05286, 0.02683, -0.00485, 0.01176, 0.0133, -0.01817, -0.00208, 0.01467, 0.01531, 0.03459, 0.02955, -0.00611, -0.03571, 0.00559, -0.02595, 0.00791, 0.01626, -0.01895, -0.00855, -0.00254, 0.00373, 0.00607, 0.00553, 0.01737, 0.00508, -0.0295, -0.0329, 0.03319, 0.03786, -0.00833, 0.02145, 0.04991, 0.0498, 0.01129, 0.00595, -0.02117, -0.01607, -0.01537, -0.00991, 0.0187, -0.00995, 0.01225, 0.01596, -0.00733, 0.01067, 0.00201, -0.00171, 0.00471, 0.01916, -0.01163, 0.02082, 0.04367, 0.06608, 0.08112, 0.03507, 0.11027, 0.03322, 0.2994, 1.76183, 1.73267, -1.32616, -3.24064, 0.14127, 1.21598, 0.36331, 0.12917, 0.0846, 0.02261, 0.04742, 0.01522, -0.02008, 0.00431, 0.02642, 0.01013, 0.00124, -0.01442, 0.00223, 0.04582, 0.0033, 0.01471, 0.03942, -0.04524, -0.02373, 0.01257, -0.01094, 0.02445, 0.01972, -0.01505, -0.00289, 0.02432, -0.00744, 0.02664, 0.02977, -0.02475, 0.00657, 0.01461, -0.01883, -0.00936, -0.00241, 0.02867, -0.01162, 0.00857, -0.01505, 0.01774, 0.00097, 0.04087, 0.04696, 0.01814, -0.0047, -0.00334, -0.01589, 0.01102, 0.05323, 0.00212, -0.02606, -0.01692, -0.03086, 0.01012, 0.03179, -0.00702, 0.04292, 0.04885, 0.03043, 0.02534, 0.04101, 0.0448, 0.03734, 0.03405, -0.0382, -0.01474, 0.04285, 0.01993, 0.01671, 0.01136, 0.01034, 0.00533, 0.00201, 0.02064, 0.07528, 0.05369, 0.0368, 0.00604, -0.02692, -0.0347, 0.02461, -0.00144, -0.05903, -0.02498, -0.02124, -0.00921, -0.00341, -0.01261, 0.02274, 0.01219, 0.00455, -0.0357, -0.02043, -0.002, -0.00174, 0.01571, 0.05832, 0.00121, 0.0243, 0.01579, -0.03072, 0.01951, 0.02729, 0.00564, -0.01286, -0.0108, 0.06953, 0.05451, -0.0282, -0.02105, 0.02129, 0.01316, -0.01955, -0.00471, -0.00047, -0.04674, -0.05506, -0.02732, -0.01363, -0.02138, -0.00303, -0.00248, 0.00404, 0.00614, 0.04503, 0.02136, -0.00268, 0.03371, -0.0222, 0.00334, 0.0224, -0.00862, 0.00475, 0.02271, 0.048, -0.01303, 0.0112, 0.01154, -0.01072, -0.00103, -0.0149, -0.0146, 0.0039, -0.01768, -0.05335, -0.0056, 0.01848, -0.00399, -0.00122, -0.02492, 7e-05, 0.01198, 0.00479, -0.03758, -0.00994, 0.00801, 0.02287, 0.02571, 0.0098, -0.05468, -0.02961, -0.03133, -0.00537, -0.00139, -0.00329, 0.00034, 0.0077, -0.04406, 0.00123, 0.02521, -0.03137, -0.0074, 0.01278, -0.0239, -0.0085, -0.00426, 0.03648, -0.04748, -0.01149, 0.03397, 0.01954, 0.00885, -0.02941, -0.00364, 0.00542, 0.02112, -0.01478, -0.01619, 0.01123, 0.04005, 0.03239, 0.01493, 0.04499, 0.00519, 0.00095, -0.00068, -0.02322, -0.04568, -0.01204, -0.00515, -0.01442, 0.01183, -0.01152, -0.03077, 0.01241, -0.01025, 0.01795, -0.00664, -0.01621, 0.01042, -0.06415, -0.08012, 0.03302, -0.00404, -0.00853, -0.0028, -0.07645, -0.05524, -0.02009, 0.01507, 0.02641, 0.01995, -0.02564, -0.00854, 0.03441, 0.02209, 0.01064, 0.0058, -0.05338, -0.06443, 0.0169, 0.38159, 0.17693, -0.46553, -0.41025, 0.30298, 0.43225, -0.31708, -0.47078, 0.01897, 0.24003, 0.03172, -0.0095, 0.05282, 0.01003, -0.01064, 0.01093, 0.0118, -0.01051, 0.03575, 0.04952, -0.07119, -0.11203, -0.03304, -0.0031, 0.03551, -0.03061, -0.00412, -0.01941, -0.09767, -0.0485, 0.01272, -0.01167, 0.00742, -0.08096, -0.14776, -0.0293, 0.03475, -0.07626, -0.03218, -0.01437, -0.07289, 0.00372, 0.04113, -0.03623, -0.03685, -0.03812, 0.02198, 0.09857, -0.05413, -0.12637, -0.0308, -0.02767, -0.0034, 0.0036, -0.03245, -0.07017, -0.03419, 0.02318, 0.00567, -0.02094, -0.04825, -0.06682, 0.00025, 0.00753, 0.03565, -0.00598, -0.11125, -0.03507, 0.04302, -0.03005, -0.01864, -0.03521, -0.04944, -0.03772, -0.01495, 0.00849, -0.04411, -0.00676, 0.02703, 0.02255, -0.01843, -0.02182, -0.0244, 0.01105, -0.01639, -0.0559, -0.04946, -0.00359, 0.01256, -0.00636, -0.04825, -0.03446, -0.01142, 0.02175, 0.00659, -0.03058, -0.0236, -0.00521, 0.04358, 0.06653, 0.03279, -0.00756, 0.01616, -0.0202, -0.0086, 0.01606, 0.01201, -0.00569, -0.03363, 0.0156, 0.00909, 0.01424, 0.00546, 9e-05, 0.00213, -0.01425, 0.02766, -0.01621, 0.02591, 0.03471, 0.0003, -0.01844, 0.01951, 0.04251, -0.02017, -0.00813, 0.00434, -0.00366, -0.00524, -0.02475, -0.05404, -0.03027, -0.00403, 0.00998, 0.02937, 0.00827, 0.0411, 0.02909, -0.02037, 0.02719, -0.00188, 0.03849, -0.01491, 0.00132, -0.00701, 0.03087, 0.00124, -0.0428, -0.01281, -0.00207, -0.00848, 0.02836, 0.01125, 0.0074, 0.02559, -0.03153, -0.00703, 0.02792, 0.00065, 0.02918, -0.00995, -0.04555, 0.00606, 0.0004, -0.04307, 0.02569, 0.03999, -0.00219, 0.02535, -0.01401, -0.02372, -0.0061, 0.01908, -0.00092, -0.01207, 0.01017, -0.01452, 0.01766, 0.06745, 0.0045, 0.02236, 0.06697, 0.06222, 0.01848, 0.0314, -0.00237, -0.00705, 0.02318, 0.06622, 0.04841, -0.00439, 0.0006, -0.01261, -0.02608, -0.0141, 0.01345, 0.03475, -0.01834, -0.0199, -0.01031, -0.00945, -0.01409, -0.00292, -0.00163, -0.00728, -0.07724, 0.03514, 0.04243, -0.02772, 0.00148, -0.00342, -0.00259, 0.03676, 0.044, -0.01118, -0.04866, -0.00884, 0.03523, 0.04797, 0.03608, 0.03805, -0.00826, -0.00319, 0.01694, 0.00145, 0.01119, 0.02542, 0.01151, 0.01182, 0.00265, -0.02163, -0.01668, 0.00913, 0.00973, 0.00872, 0.02921, -0.01079, -0.00265, 0.0225, -0.0217, -0.00584, 0.01568, -0.03976, 0.03806, 0.06013, 0.01829, 0.03371, -0.00146, 0.00465, 0.02474, -0.02086, -0.06103, 0.04978, 0.01295, -0.00688, -0.02524, -0.02953, 0.01091, 0.02042, 0.00224, 0.04273, 0.03775, -0.02053, 0.05957, 0.06894, 0.00141, -0.01354, 0.06057, 0.05455, 0.02893, -0.02394, -0.00207, 0.0393, 0.02892, 0.01455, 0.02863, 0.03282, 0.00763, 0.01962, 0.00758, 0.00751, -0.0047, 0.0261, 0.0189, 0.04983, 0.04235, -0.05391, -0.04217, 0.03551, -0.00304, 0.01659, 0.02459, 0.083, 0.11864, -0.15983, -0.35292, -0.16864, 0.17135, 0.08702, 0.01581, 0.0415, 0.03047, 0.05845, 0.054, 0.02555, 0.01474, 0.06226, 0.03094, -0.0329, 0.07257, 0.05811, -0.02658, -0.06606, -0.05071, 0.10763, 0.18173, 0.11409, -0.09986, -0.13506, 0.00364, 0.0883, 0.01001, 0.01824, 0.02062, 0.01119, 0.01069, -0.00484, 0.05026, -0.00486, 0.01716, 0.07278, 0.02434, 0.00454, 0.00174, 0.03771, 0.02812, 0.04671, 0.04209, -0.01659, -0.07791, 0.04457, 0.0815, 0.02814, 0.01042, 0.02148, 0.0282, 0.02562, 0.03754, 0.01615, 0.02428, 0.00156, 0.02648, 0.01401, -0.00644, -0.01733, 0.04714, 0.0323, -0.01997, 0.02014, 0.03797, -0.00434, 0.0118, 0.03446, -0.00279, -0.00675, 0.031, 0.04246, 0.0501, 0.04578, 0.01949, 0.00355, 0.01026, -0.00425, 0.03427, 0.01337, 0.01125, 0.01966, 0.01226, 0.03411, 0.028, -0.00326, 0.00603, -0.01403, -0.00912, 0.00244, 0.01584, 0.00922, 0.00129, 0.01676, -0.00549, 0.04395, 0.05213, 0.0066, 0.01778, 0.00961, 0.03972, 0.02856, -0.00346, -0.0012, 0.02331, 0.03238, 0.021, 0.01585, 0.03115, 0.00845, 0.01824, 0.00284, -0.01188, 0.01347, 0.03076, 0.00338, -0.02969, 0.00627, 0.0409, 0.01675, 0.01141, 0.00668, 0.01444, 0.03933, 0.02629, 0.03617, 0.02019, 0.00634, 0.02901, 0.03605, 0.03898, 0.02607, 0.00421, 0.04255, -0.01618, -0.04817, -0.00988, 0.04768, 0.03668, 0.04661, 0.05292, 0.03186, 0.03549, 0.02724, 0.0252, 0.01924, 0.01404, 0.00076, 0.03523, 0.05875, 0.01082, 0.0183, 0.00914, 0.01393, 0.02629, 0.03525, 0.01361, -0.01695, -0.01018, 0.01214, 0.03463, -0.00023, 0.01981, 0.01518, 0.01079, -0.00282, 0.02415, 0.01733, 0.01558, 0.03204, 0.02475, 0.02562, -0.00396, 0.02917, -0.00126, 0.00745, -0.02768, -0.02396, -0.02322, 0.01787, 0.04185, 0.02742, -0.00735, 0.00403, 0.0555, 0.01695, 0.00206, 0.00772, 0.0052, 0.01835, 0.04464, 0.04885, 0.00817, 0.01391, -0.00235, 0.04335, 0.03591, 0.00772, 0.04628, 0.02247, -0.00529, 0.0183, 0.03582, 0.02569, -0.00392, 0.0068, 0.00536, 0.03104, 0.01765, 0.02594, 0.02212, 0.03194, -0.00086, 0.01168, 0.02727, 0.00457, -0.00017, 0.03548, 0.0109, 0.02775, 0.02933, 0.03065, 0.02539, 0.01228, 0.02434, 0.0159, 0.05056, 0.04615, 0.01239, 0.02185, 0.03694, 0.0131, 0.02628, 0.01394, 0.007, 0.01471, 0.03534, 0.01687, 0.01346, 0.01066, 0.02223, 0.01712, 0.01113, 0.03352, 0.03544, 0.02029, 0.02742, 0.00247, 0.0144, 0.006, 0.0096, 0.03085, 0.01024, 0.01494, 0.04201, 0.02928, 0.02625, 0.05099, 0.02769, 0.01259, 0.03713, 0.02005, 0.01646, 0.00657, 0.01987, 0.02368, 0.01357, -0.00093, 0.00138, 0.02469, 0.01805, 0.02477, 0.03483, 0.03008, 0.01102, 0.02784, 0.01736, 0.02124, 0.03435, 0.01494, 0.00295, 0.02223, 0.02465, 0.02975, 0.02479, 0.00593, 0.03439, 0.03822, 0.03519, 0.01231, 0.03321, 0.03577, 0.01162, 0.01053, 0.0324, 0.04882, -0.00328, 0.00858, 0.02792, -0.00827, 0.03633, 0.0457, 0.02087, 0.02157, 0.03154, 0.02604, 0.02555, 0.01225, 0.00952, 0.01547, 0.00215, 0.01247, 0.0184, 0.03812, 0.0101, -0.00703, 0.02668, 0.02438, 0.02635, 0.03103, 0.00989, -0.00487, 0.04396, 0.0382, 0.03418, 0.03175, 0.03114, 0.02048, 0.01976, 0.02197, -0.0034, 0.0324, 0.03742, 0.01643, 0.02418, 0.01261, 0.00696, 0.00924, 0.03011, 0.01669, 0.0056, 0.01332, 0.03225, -0.01266, -0.0295, 0.02859, 0.04316, 0.04087, 0.01823, -0.05586, -0.02631, 0.02829, 0.03983, 0.01701, -0.01072, 0.01859, 0.02173, -0.00249, -0.005, 0.00659, 0.03328, 0.03314, 0.02123, 0.01042, 0.00794, 0.02513, 0.03746, 0.01596, 0.02736, 0.03797, 0.01827, -0.0086, -0.07108, -0.0263, 0.0535, 0.02369, 0.06578, 0.0193, 0.00059, -0.0023, 0.012, 0.02987, 0.01816, -0.00426, 0.02307, 0.01659, 0.01536, -0.00207, -0.00213, 0.02092, 0.01472, 0.0223, 0.02502, 0.01979, 0.02806, 0.02321, 0.03532, 0.01028, 0.02625, 0.00299, 0.00201, 0.01723, -0.01159, -0.00509, -0.0019, 0.05043, 0.02101, 0.0101, 0.00426, -0.06172, -0.03461, 0.0339, 0.02049, 0.00476, -0.0015, 0.01008, 0.01371, 0.02337, 0.01172, -0.02022, 0.00525, 0.04217, 0.04872, 0.03771, -0.00407, -0.03602, 0.01372, 0.04489, 0.0634, 0.02626, 0.02508, 0.02953, -0.00835, 0.01326, 0.02642, 0.03445, 0.00749, 0.02854, 0.01195, 0.00282, 0.02134, 0.04138, 0.04106, 0.00113, 0.00238, 0.02069, 0.04421, 0.02102, 0.00165, 0.00777, 0.00708, 0.01923, 0.01952, 0.02775, 0.02291, 0.03606, 0.02094, 0.02367, 0.01061, -0.00942, 0.01591, 0.01363, 0.01332, 0.01485, 0.00181, 0.01038, 0.04236, 0.0267, 0.02096, 0.03747, 0.03211, 0.02404, 0.02241, -0.01113, 0.01174, 0.05243, 0.03761, 0.00755, 0.01077, 0.0381, 0.02451, 0.02707, 0.01088, 0.00615, -0.00592, 0.00655, -0.01218, -0.02459, -0.00162, 0.00915, -0.00836, 0.0056, 0.00786, 0.01122, 0.03565, 0.0315, 0.01489, 0.01418, 0.02671, 0.01689, 0.02091, -0.00987, -0.01137, 0.02916, 0.00582, 0.01946, 0.04198, 0.0336, 0.01928, 0.00766, 0.02196, 0.00925, 0.00082, 0.01504, 0.01174, 0.03272, 0.01484, 0.015, 0.02126, 0.00021, 0.01981, 0.02686, 0.00326, -0.00794, 0.01533, 0.0191, 0.01336, 0.0218, 0.02087, 0.00268, 0.00315, 0.0126, 0.04058, 0.04613, 0.01704, 0.00677, 0.01816, -0.01258, 0.00762, 0.01946, 0.01231, 0.01539, 0.01733, 0.00978, 0.00451, 0.02077, 0.0212, 0.00743, 0.0143, 0.02537, 0.00788, -0.02184, 0.02371, 0.02979, 0.03945, 0.03672, 0.00852, 0.00695, 0.01616, -0.00303, 0.03557, 0.02944, -0.00779, 0.01647, 0.02929, 0.02451, 0.00699, 0.0256, 0.01442, 0.0015, 0.02038, 0.0176, 0.01796, 0.02289, 0.02427, 0.01763, -0.00626, 0.00041, 0.0122, 0.00846, 0.03853, 0.01931, 0.01602, 0.02456, 0.03153, 0.00504, 0.01072, 0.00416, 0.00332, 0.0154, 0.01189, 0.03118, 0.01663, -0.00373, 0.00666, 0.02876, 0.01342, 0.00874, 0.00452, -0.00172, 0.02161, 0.03835, -0.0492, -0.14064, -0.00606, 0.07408, 0.00579, -0.04925, 0.03317, 0.08952, 0.01861, -0.01488, 0.01431, 0.04708, 0.02577, -0.00669, 0.01296, 0.0337, 0.01727, 0.01746, 0.02506, -0.00108, 0.03722, 0.02171, -0.12004, -0.13577, 0.06738, 0.17803, 0.08752, -0.01063, -0.06296, 0.03351, 0.11154, 0.01529, 0.02647, 0.00903, -0.03029, -0.02269, 0.0301, 0.03919, 0.00092, -0.06698, -0.00946, 0.06972, 0.04459, -0.00293, 0.01968, 0.0165, -0.08808, -0.07896, 0.09366, 0.11412, 0.05844, 0.02706, 0.06429, 0.02045, -0.04889, -0.0188, 0.06048, 0.03407, 0.01465, 0.03929, -0.0415, -0.18913, -0.06435, 0.15915, 0.08612, 0.01987, 0.02754, 0.00112, 0.012, 0.02424, 0.00649, -0.02263, -0.05235, 0.04017, 0.08432, 0.01151, 0.04805, -0.02071, -0.15158, -0.03331, 0.07172, 0.04642, 0.01196, 0.00069, 0.01177, 0.01653, 0.00646, 0.02152, 0.01634, 0.00993, 0.03741, 0.00277, -0.00444, 0.01319, 0.01758, 0.05063, 0.05202, -0.00948, -0.05352, 0.02697, 0.02234, 0.02429, 0.00492, 0.00929, 0.02417, 0.01958, 0.03353, 0.03634, 0.02027, 0.02329, 0.02058, 0.02356, 0.0267, 0.0498, 0.0078, 0.01433, 0.00951, 0.02784, -0.0037, -0.01042, 0.00714, 0.01514, 0.02181, 0.00487, -0.00446, 0.01038, 0.01595, 0.02911, 0.0392, 0.05177, 0.02755, -0.00507, 0.01918, 0.032, 0.00037, 0.03482, 0.02823, 0.02491, 0.04551, -0.00807, -0.00959, 0.04969, 0.05999, -0.00601, -0.04313, -0.01295, 0.01993, 0.02496, 0.04331, 0.02278, 0.03056, 0.01176, 0.01226, 0.02996, 0.02638, 0.01523, 0.00395, 0.02095, 0.00054, 0.01028, 0.01697, 0.02024, 0.02611, 0.01984, 0.03243, 0.00954, 0.04209, 0.10902, 0.01191, -0.1162, -0.02174, 0.08726, 0.02563, -0.011, -0.00408, 0.04198, 0.0296, 0.0264, 0.00191, 0.01788, 0.03888, 0.01116, 0.00853, 0.02899, 0.01098, 0.0199, 0.04941, 0.02471, -0.00904, -0.00762, 0.01864, 0.00907, 0.00485, 0.01191, 0.01951, -0.01123, -0.03004, -0.01552, 0.02363, 0.04727, 0.02035, 0.00493, 0.03703, 0.01291, -0.01465, 0.01487, 0.0242, 0.02389, 0.00914, 0.02058, 0.03133, -0.00806, 0.02333, 0.03408, 0.08397, 0.06247, -0.00804, -0.02426, -0.01308, 0.04388, 0.0762, 0.06898, 0.02865, 0.01179, 0.01769, 0.06843, 0.08459, 0.06951, -0.00661, 0.00988, 0.04497, 0.05328, 0.04576, 0.06443, 0.02439, 0.0143, 0.06557, 0.04489, 0.04464, 0.02279, 0.05588, 0.08381, 0.03558, 0.03764, 0.05625, 0.04293, 0.0265, 0.01417, 0.02022, 0.01366, 0.03338, 0.03776, 0.02532, 0.05265, 0.03319, 0.02077, 0.03648, 0.02148, 0.02284, 0.0385, 0.01305, 0.03037, 0.02054, 0.01188, 0.02581, 0.01655, 0.01612, 0.02391, -0.01399, 0.0105, 0.03443, 0.04986, 0.02686, 0.0337, 0.06748, -0.13375, -0.10845, -0.07696, -0.08365, 0.04167, 0.14971, 0.09892, 0.00183, -0.01657, 0.01405, 0.03388, 0.03642, 0.00588, -0.00447, 0.01175, 0.01763, 0.01786, -0.00494, 0.02017, 0.01344, 0.054, -0.0853, -0.20351, 0.08672, 0.20959, 0.0863, -0.01651, -0.08513, 0.02756, 0.1147, 0.04971, 0.02014, 0.0183, 0.03265, 0.0092, -0.02136, 0.0267, 0.04474, -0.01569, -0.03912, 0.02439, 0.02602, 0.0085, 0.00786, 0.05492, 0.01862, -0.12228, -0.06334, 0.02099, 0.07109, 0.04811, 0.02392, 0.02517, 0.03116, -0.02192, -0.01381, 0.03471, 0.04139, 0.02123, 0.0089, 0.05934, 0.01101, -0.1526, -0.09652, 0.04408, 0.06307, 0.03144, 0.02536, 0.0325, 0.02044, 0.01112, 0.0622, 0.01743, -0.00842, -0.00105, 0.00155, 0.04707, 0.04019, 0.06929, -0.00221, -0.1457, -0.08303, 0.03505, -0.01408, -0.04879, 0.00527, 0.03635, 0.08478, 0.02897, -0.05993, -0.06743, 0.02052, 0.0674, 0.03732, -0.02771, -0.02725, -0.00076, 0.02436, 0.07165, 0.00011, -0.05917, -0.03823, -0.00189, 0.01999, -0.00203, 0.00094, 0.00452, 0.00518, 0.01681, 0.04494, 0.02501, 0.04029, -0.1952, -0.23229, 0.09628, 0.11111, -0.0622, -0.07616, 0.03802, 0.03799, 0.01403, -0.02962, -0.09226, 0.02023, 0.06701, 0.01729, -0.00566, 0.0006, 0.02431, 0.01534, 0.01877, -0.03287, -0.06678, 0.01842, 0.04634, 0.02222, 0.00984, -0.00392, 0.03311, -0.03914, -0.28211, 0.02812, 0.24765, 0.0808, 0.06783, 0.04442, -0.00112, -0.04873, -0.09336, 0.00758, 0.07931, 0.06961, 0.03735, 0.022, 0.05255, -0.1933, -0.30113, 0.09009, 0.21674, 0.07217, 0.01625, -0.00229, -0.02129, -0.00683, -0.01356, 0.01669, 0.01974, -0.0192, -0.00468, 0.03342, 0.02609, 0.02821, 0.06116, -0.03973, -0.10611, -0.02788, 0.02877, 0.02181, 0.0325, 0.02812, 0.01783, 0.00962, 0.01146, 0.01166, -0.00521, 0.00691, 0.0204, 0.01903, -0.01643, 0.01352, 0.03543, 0.01414, 0.08061, 0.03181, -0.12072, -0.08266, -0.01579, 0.00551, 0.00357, 0.01768, -0.00334, 0.0039, -0.0181, -0.01538, 0.0164, 0.00811, -0.01094, 0.00234, 0.00945, 0.00507, 0.00563, 0.02993, -0.00927, 0.02216, 0.0152, -0.0363, -0.05503, -0.02694, 0.01205, -0.02232, 0.00797, 0.02143, 0.00956, 0.0299, -0.01669, -0.00784, -0.01957, 0.00927, 0.01483, 0.00108, 0.00398, -0.0118, 0.00541, 0.01438, 0.00933, -0.00083, -0.0149, 0.01835, -0.00522, 0.0173, 0.01044, 0.00854, 0.01102, -0.00674, -0.02455, 0.01523, 0.00938, 0.01016, 0.02791, -0.01637, 0.00427, -0.00634, 0.00266, 0.00092, -0.00273, -0.01272, 0.00175, -0.00185, 0.00521, 0.00485, -0.00929, -0.00476, 0.01187, -0.00625, -0.06392, -0.00804, 0.00251, 0.01515, -0.01192, -0.01981, 0.01381, -0.00011, -0.01383, 0.01598, 0.01347, 0.01692, 0.03524, -0.00247, -0.0202, -0.00536, -0.01221, -0.0061, 0.0024, 0.00117, 0.00497, 0.00301, -0.001, 0.00764, -0.0119, -0.00789, 0.00075, -0.01555, -0.0112, 0.00867, -0.00015, -0.01138, 0.01849, 0.0039, 0.00858, 0.0094, 0.00209, 0.03282, 0.01228, -0.00223, -0.00859, -0.00572, 0.00493, 0.02183, 0.08109, -0.01447, -0.08428, -0.05086, 0.05345, 0.01912, -0.17327, -0.11298, 0.03669, 0.12935, 0.12479, -0.06321, -0.16008, -0.02072, 0.0227, 0.01234, 0.05734, 0.02212, -0.04641, -0.01015, 0.01148, -0.02231, 0.00775, 0.00839, 0.0092, 0.01855, 0.0078, 0.00922, -0.0025, 0.02071, 0.01505, 0.00395, 0.04253, 0.16107, -0.08232, -0.3915, -0.10776, 0.14513, 0.00405, -0.11156, -0.061, 0.03697, 0.03964, -0.00882, 0.02284, 0.00073, -0.02547, 0.00287, 0.03668, 0.02176, 0.02223, -0.00035, 0.03722, -0.00281, -0.09131, -0.03289, 0.02933, 0.03752, 0.00116, 0.01672, -0.00425, 0.08783, 0.03983, -0.21788, -0.01304, 0.1125, 0.05866, 0.03573, 0.01165, 0.02142, 0.02187, -0.08741, -0.00514, 0.0948, 0.0276, 0.02508, 0.0201, 0.08128, 0.00607, -0.20936, -0.09073, 0.05742, 0.0945, -0.00093, 0.02406, 0.01826, 0.01743, 0.03351, 0.03956, 0.03612, -0.05311, -0.06294, 0.01102, 0.0439, 0.01371, 0.05911, 0.10924, -0.09275, -0.08638, 0.03955, 0.0808, 0.00455, 0.01576, 0.00049, -0.00345, 0.00436, 0.01585, 0.02225, -0.01201, 4e-05, 0.04036, -0.00278, -0.02605, 0.01123, 0.03415, 0.02083, 0.05824, -0.10425, -0.07246, 0.0544, 0.04695, 0.00792, 0.00675, 0.00989, -5e-05, 0.00689, 0.01363, 0.00659, 0.02163, 0.00764, -0.01788, 0.00373, -0.00762, 0.01467, 0.02298, -0.00539, -0.0152, 0.02895, 0.03106, 0.00208, -0.09215, -0.02184, 0.04431, 0.02095, 0.02699, 0.01585, 0.00249, 0.01715, 0.00916, 0.00877, 0.00504, 0.01067, 0.00027, 0.00054, -0.01786, -0.0066, -0.00147, 0.00182, 0.02576, 0.02148, -0.01933, -0.03219, -0.00795, 0.04038, 0.03375, -0.01051, -0.00958, 0.00309, 0.01071, 0.00304, -0.008, -0.00176, 0.01829, 0.011, -0.00125, 0.03074, 0.02078, -0.00812, -0.00675, -0.00969, 0.00345, -0.02075, -0.01408, 0.01143, 0.01354, 0.02551, 0.02334, 0.04376, 0.04264, -0.01391, -0.04976, -0.04319, 0.01553, -0.07665, 0.04921, 0.06432, 0.00248, 0.07242, -0.01519, 0.04225, 0.0725, -0.0108, 0.03018, 0.00434, 0.00863, 0.0776, -0.00153, 0.00234, 0.06556, 0.03221, 0.00443, 0.02589, -0.03301, -0.00323, 0.03711, 0.00835, -0.03749, 0.00458, 0.02828, -0.01876, 0.0006, 0.01214, 0.00795, 0.02046, 0.00664, 0.00257, 0.0213, 0.01849, 0.01773, 0.00233, 0.00162, 0.02005, 0.01809, 0.00993, 0.01973, 0.00608, 0.0075, -0.01184, 0.01856, 0.01168, 0.00178, 0.02823, 0.00529, 0.01652, 0.08753, 0.16697, 0.01984, -0.11347, 0.14228, 0.07682, -0.15917, -0.12016, 0.05875, 0.22023, 0.1508, -0.25981, -0.25228, -0.02039, 0.04296, 0.048, 0.129, -0.0245, -0.19009, -0.06701, 0.02018, 0.01121, 0.0099, -0.00079, 0.02941, 0.01914, 0.01276, -0.01105, -0.01253, 0.00725, 0.0062, 0.01797, 0.0128, 0.36079, 0.56716, -0.47197, -0.59648, 0.05182, 0.25043, 0.01816, -0.19062, -0.12915, 0.03166, 0.0066, 0.02071, 0.09598, 0.0034, -0.06925, -0.01357, 0.03777, 0.01496, 0.01676, -0.0082, 0.05927, -0.00034, -0.1346, -0.08782, 0.04936, 0.0291, 0.00404, -0.01503, 0.0452, 0.1294, 0.03095, -0.33428, -0.05992, 0.24822, 0.02263, 0.02791, 0.00231, 0.05846, 0.0486, -0.172, -0.03583, 0.13614, 0.03882, -0.01145, -0.00822, 0.09395, 0.00156, -0.67767, -0.00298, 0.37331, 0.12789, 0.01915, 0.02827, 0.00934, 0.02801, 0.01527, 0.01393, 0.05852, -0.16121, -0.08939, 0.15792, 0.0917, 0.01532, 0.02845, 0.06731, -0.11194, -0.36436, 0.13693, 0.13133, 0.06342, 0.00733, 0.02477, -0.0038, -0.01447, -0.00438, 0.0044, 0.0194, 0.02209, 0.025, 0.09904, -0.00892, -0.14163, -0.02281, 0.01719, -0.02555, 0.09393, 0.09634, -0.12953, -0.09265, 0.05614, 0.05311, -0.00913, 0.00569, 0.01318, 0.01114, 0.0109, 0.01846, 0.02079, 0.00443, -0.00973, 0.00353, 0.02208, 0.02094, 0.07307, -0.00972, -0.05077, 0.03063, -0.00431, 0.04065, 0.00763, -0.08375, 0.00997, 0.05568, 0.02774, 0.00185, 0.00535, -0.0032, 0.01143, 0.01514, -0.01143, -0.01761, -0.00931, 0.01048, 0.0025, -0.00591, 0.00822, 0.04229, 0.01696, -0.01098, 0.00487, 0.01356, -0.02931, -0.03468, 0.00712, 0.03415, 0.0427, -0.01825, -0.02917, 0.0275, -0.00679, -0.00268, 0.02376, 0.02027, 0.00853, -0.00472, 0.01239, 0.01392, -0.00056, -0.00845, 0.00575, 0.02373, 0.02868, 0.02552, 0.00774, 0.00208, -0.00025, 0.0038, 0.03943, -0.0094, -0.02, -0.03102, 0.00309, 0.01305, -0.01295, -0.00474, 0.00899, 0.01604, 0.00749, 0.0311, 0.00494, 0.01147, 0.02333, 0.00839, 0.0171, -0.01561, -0.0142, 0.01059, 0.01672, 0.00938, 0.00867, 0.00013, -0.00328, 0.01319, 0.00553, 0.00298, 0.00563, -0.00666, -0.01023, 0.00979, 0.01009, 0.02631, 0.01994, 0.01637, -0.01899, -0.01677, 0.00059, 0.02088, 0.01423, 0.01865, 0.01556, 0.01846, 0.01011, 0.01947, 0.03436, 0.03343, -0.00636, -0.00713, 0.01678, 0.01721, 0.02095, -0.01063, 0.00725, 0.0162, 0.01944, 0.01036, 0.00039, 0.02, 0.01419, 0.02801, 0.03151, 0.00699, 0.02197, 0.01504, -0.01795, 0.02403, 0.05515, -0.0091, -0.01122, 0.01628, 0.03607, 0.14207, 0.26217, -0.12375, -0.35187, 0.29098, -0.38993, -0.60868, -0.08096, 0.14571, 0.25668, -0.43656, -0.60147, 0.07208, 0.02523, 0.0039, 0.17303, 0.04107, -0.22842, -0.09018, 0.04245, 0.0686, 0.03795, -0.04811, 0.00264, 0.0425, 0.03193, 0.05223, 0.01591, 0.01848, 0.05176, 0.04088, 0.05636, 0.39058, -0.04051, -1.05553, -0.08404, 0.20072, 0.08047, 0.07234, 0.05152, 0.042, 0.02148, 0.00778, 5e-05, 0.03948, -0.0524, -0.16698, -0.01466, 0.04768, 0.04875, 0.04592, 0.01225, 0.02088, 0.06644, -0.16923, -0.08432, -0.00621, 0.06734, 0.1013, 0.056, 0.02786, 0.0986, 0.24619, -0.09419, -0.45344, -0.21019, 0.1166, 0.05231, 0.02316, 0.00113, 0.11711, 0.3489, 0.23086, -0.25147, -0.05844, 0.08675, 0.03886, 0.04999, 0.0903, 0.40934, 0.49448, -0.43945, -0.58445, 0.12339, 0.03001, 0.00072, 0.0648, 0.02316, -0.00678, 0.02414, 0.08285, 0.34197, 0.173, -0.35402, -0.18001, 0.04836, 0.04244, 0.02729, 0.11603, 0.26263, -0.03835, -0.27008, -0.07452, 0.0614, 0.04569, 0.0359, 0.04439, 0.03897, -0.02549, -0.03991, 0.03985, 0.01295, 0.023, 0.09185, 0.01691, 0.0135, 0.05119, 0.07378, 0.05371, 0.04565, 0.07306, -0.21167, -0.16755, 0.1257, 0.06518, 0.01651, 0.04172, 0.02999, 0.03276, 0.04394, 0.00777, 0.01279, 0.04355, 0.02059, 0.0424, 0.03755, 0.04404, 0.03761, 0.04951, 0.10704, -0.02743, -0.05455, 0.01749, 0.04656, 0.06179, 0.0929, -0.09474, -0.16583, -0.01556, 0.06787, 0.01446, 0.02697, 0.01611, 0.02938, 0.04426, 0.03954, 0.04355, 0.01957, 0.03464, 0.03084, 0.04466, 0.00066, 0.0188, 0.06211, 0.00385, 0.02371, 0.11997, 0.06369, -0.05239, -0.08813, 0.04078, 0.04078, 0.09098, 0.01405, -0.1272, -0.05596, 0.03848, 0.00065, -0.01984, 0.03255, 0.10968, -0.04834, -0.12481, 0.02007, 0.04723, 0.05103, 0.02904, -0.01478, 0.02338, 0.15498, -0.06429, -0.16394, -0.10596, 0.08576, 0.02156, 0.01759, 0.08499, 0.07308, 0.02511, -0.08789, -0.01257, 0.07363, 0.0052, -0.03586, 0.03731, 0.07284, 0.01669, 0.0142, 0.02835, 0.06965, 0.05789, 0.0371, 0.01339, 0.01211, 0.07254, 0.0511, 0.02527, 0.02745, 0.06102, 0.05577, 0.19597, 0.53075, 0.08898, -0.73659, -0.24429, 0.20756, -0.06323, -0.35282, -0.05818, 0.13049, 0.11543, 0.07184, -0.01226, 0.02037, 0.09346, 0.07108, 0.06409, 0.04449, 0.06537, 0.00975, 0.00335, 0.06269, 0.03575, 0.05014, 0.04888, 0.05823, 0.05212, -0.03524, -0.07618, -0.02887, 0.07374, 0.09733, 0.05822, 0.08729, 0.11297, 0.07286, 0.12804, 0.12207, -0.54707, -0.61947, 0.12771, 0.15326, 0.08204, 0.08468, 0.03093, 0.04795, 0.12154, 0.2108, -0.09784, -0.19882, -0.02206, 0.09345, 0.06861, 0.0724, 0.10739, 0.39869, 0.11179, -0.64734, -0.62155, 0.00801, 0.16515, 0.0649, 0.07235, 0.07762, 0.11472, 0.08718, 0.15609, 0.27714, 0.26168, 0.02076, 0.1434, -0.38844, -0.2718, 0.14967, 0.35142, -0.16703, -0.25277, 0.06641, -0.04314, -0.10661, 0.18797, 0.18231, -0.1384, -0.07559, 0.07818, 0.02597, 0.04037, 0.0965, 0.10927, 0.08777, 0.09904, 0.10973, 0.13407, 0.21264, 0.0584, -0.00473, 0.17946, 0.23278, 0.96682, 0.55016, -1.55192, -1.18244, 0.14178, 0.36072, 0.36303, -0.13307, -0.50206, -0.02331, 0.14997, 0.05473, 0.0663, 0.18974, 0.17858, -0.14007, -0.12699, 0.11417, 0.15122, 0.09456, 0.14235, 0.40413, -0.0762, -0.43617, -0.03401, 0.18705, 0.07562, 0.03243, 0.07063, 0.22355, 0.56726, 0.43877, -0.74852, -0.6878, 0.1846, 0.21696, 0.14218, 0.17872, 0.11768, 0.25708, 0.20393, -0.27999, -0.29859, 0.05768, 0.17159, 0.16489, 0.15287, 0.32078, 0.55035, -0.29695, -1.53316, -0.58237, 0.37191, 0.17642, 0.08988, 0.12768, 0.19291, 0.26547, 0.00955, 0.10822, 0.28878, -0.00602, -0.30841, -0.18516, 0.07005, 0.17219, 0.10343, 0.09258, 0.26545, 0.52378, -1.11681, -1.22647, 0.0836, 0.3211, -0.05382, 0.03786, 0.50322, 0.16288, -0.75192, -0.49195, 0.24067, 0.18516, 0.40238, -0.02146, 0.02209, 0.76047, -0.10051, -1.07363, -0.61874, 0.20482, 0.32142, 0.44079, 0.50999, -0.2288, -0.27304, 0.02981, -0.1122, 0.24501, 0.28306, 0.21443, 0.28074, 0.12124, 0.14747, 0.23493, 0.16455, 0.17764, 0.24619, 0.17946, 0.15149, 0.11094, 0.17215, 0.29669, 0.18458, 0.15657, 0.32547, 0.3292, 0.56524, 1.46343, -0.11282, -2.67499, -1.66985, 0.56493, 0.59844, -0.6077, -0.27952, 0.25608, 0.32318, 0.27296, 0.05336, -0.12855, -0.21039, 0.19509, 0.46171, 0.52869, 0.21127, 0.30269, 0.34236, 0.26477, 0.21615, 0.11287, 0.50446, 0.09795, 0.05001, 0.97149, 0.57431, -0.52764, -0.15963, 0.01108, 0.26858, 0.2014, 0.83214, 1.29584, -0.03086, 1.57035, 1.04163, 0.31153, 1.54093, -2.4358, -3.26467, 3.5391, 6.09257, 3.67481, -7.53052, -8.43237, 5.9615, 0.0, 7.61839, 0.0], "ivar": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0237, 0.1562, 0.1998, 0.2215, 0.3466, 0.4142, 0.5938, 0.8491, 1.2172, 1.5029, 1.527, 1.551, 1.6089, 1.6064, 1.688, 1.7133, 1.6888, 1.9061, 1.9517, 1.9719, 2.0263, 2.0081, 1.9493, 1.8823, 2.1428, 2.1225, 2.1221, 2.2927, 2.6748, 2.8587, 2.6874, 2.808, 3.0418, 3.3206, 3.9226, 4.5702, 4.9667, 6.5264, 7.0522, 7.6758, 8.0376, 9.0771, 9.4178, 9.7623, 9.9898, 10.0744, 10.1401, 10.2782, 10.8936, 11.3216, 11.4336, 11.7822, 11.7829, 12.0472, 12.4359, 12.5405, 12.6323, 12.5843, 12.7946, 12.954, 13.3257, 13.1682, 13.0136, 13.1929, 13.6999, 14.013, 13.6631, 13.744, 13.7404, 13.9575, 14.3242, 14.6563, 14.6583, 14.5346, 14.7209, 14.9992, 15.0916, 15.7796, 16.6486, 16.6421, 16.8624, 16.8932, 17.2536, 17.48, 16.711, 15.9796, 15.8387, 16.5974, 17.6476, 18.1534, 17.8363, 17.6854, 18.4909, 19.4322, 20.1039, 20.2426, 19.9185, 20.2185, 20.4426, 20.648, 20.3849, 20.1826, 20.8177, 21.9995, 23.3423, 24.0646, 24.4045, 24.8927, 25.357, 25.7325, 26.7692, 27.0078, 26.68, 27.8116, 28.2709, 28.9671, 29.7816, 30.5372, 31.3534, 31.7186, 32.4497, 33.3429, 33.2782, 34.159, 34.1949, 34.9407, 34.8759, 35.5608, 37.5571, 38.1782, 39.4523, 39.3473, 39.4194, 39.6746, 39.037, 39.7309, 40.679, 41.7665, 42.3706, 42.1153, 42.4737, 41.5736, 39.2058, 37.341, 37.5412, 37.9185, 38.8314, 39.4732, 40.7719, 41.3693, 42.7685, 43.0053, 44.2868, 45.7324, 46.8016, 48.5247, 48.6185, 48.9349, 49.7709, 49.9452, 49.7745, 49.665, 50.8458, 53.4928, 54.1848, 55.1676, 56.6401, 59.0064, 61.5234, 64.5067, 63.7011, 63.4498, 64.1239, 62.9232, 60.6094, 60.54, 61.323, 62.4574, 62.5076, 63.1243, 62.909, 61.4503, 58.9612, 58.1174, 59.5913, 62.5655, 64.3992, 65.1332, 63.0067, 61.1171, 58.1932, 56.9543, 56.5396, 57.8644, 60.8033, 63.6538, 68.3271, 73.2549, 73.7854, 73.693, 76.4234, 81.6691, 84.2557, 80.8899, 78.2439, 79.1594, 82.2621, 83.5517, 78.9765, 77.3445, 82.6554, 87.7509, 92.4423, 92.0931, 91.4879, 93.8424, 98.848, 101.9104, 101.1677, 100.9442, 99.6935, 101.5562, 104.54, 107.9619, 112.0116, 113.081, 110.5702, 108.8264, 103.4173, 102.3805, 104.4145, 106.4715, 107.534, 108.8545, 110.264, 111.5865, 114.0922, 116.2207, 117.3762, 118.3694, 119.0478, 120.7386, 116.7331, 114.8857, 118.0315, 127.856, 133.7654, 133.0379, 129.2391, 125.0095, 120.5118, 119.2029, 122.2389, 127.4415, 129.1838, 128.8585, 131.911, 141.1724, 149.5121, 157.1119, 152.495, 146.1591, 142.9811, 144.564, 148.6089, 153.0445, 153.3392, 157.0562, 162.5774, 167.8498, 165.0478, 162.4914, 162.2121, 165.5104, 162.7706, 157.3034, 150.7876, 149.5447, 154.0897, 158.7287, 160.6686, 161.1312, 164.8526, 173.5188, 182.3744, 182.3721, 176.5816, 175.0198, 185.7289, 195.7985, 198.8732, 191.1821, 177.141, 159.915, 146.4374, 141.6189, 141.0479, 145.229, 155.8961, 162.7732, 166.1517, 170.9183, 175.5442, 180.446, 187.839, 194.9231, 197.1935, 192.3453, 184.6855, 181.5533, 189.0934, 192.1079, 186.5399, 186.4511, 196.173, 207.8975, 211.2152, 213.3153, 210.6959, 208.9985, 217.8502, 231.5147, 236.393, 235.0248, 241.6563, 247.7008, 257.415, 269.7636, 283.7656, 277.7528, 264.8169, 251.3877, 248.7216, 252.9963, 263.6256, 268.8675, 272.3898, 270.108, 274.6179, 287.4507, 301.6114, 313.2703, 316.1663, 306.0069, 287.8176, 270.1745, 266.2702, 278.6778, 295.3962, 308.5704, 316.8098, 315.4966, 321.3868, 330.1708, 337.7501, 324.9788, 322.6172, 332.1695, 342.6876, 351.2887, 344.5072, 336.1218, 330.1628, 331.2551, 329.3234, 327.5774, 324.7033, 322.5601, 320.4785, 315.2763, 313.8031, 316.1333, 319.5302, 322.1821, 312.8045, 311.3127, 309.5804, 303.99, 294.4929, 275.3138, 248.4193, 237.5105, 234.277, 232.1907, 238.4262, 239.3303, 237.1567, 236.2236, 237.956, 243.5448, 257.6837, 281.3882, 297.7997, 302.4194, 308.608, 316.8164, 337.8392, 358.7091, 366.5991, 367.9187, 367.0487, 369.2449, 372.6115, 389.331, 405.8775, 424.6969, 444.3553, 447.1704, 445.2711, 451.8286, 462.5233, 471.9337, 481.9389, 483.8831, 478.0172, 452.6235, 413.7359, 376.2157, 342.8814, 332.3403, 328.0254, 331.126, 335.8374, 336.5638, 342.3519, 345.4405, 349.034, 353.2093, 358.1418, 369.2589, 365.4805, 365.1929, 373.0076, 390.394, 398.7651, 391.9059, 392.8055, 413.2254, 427.5219, 416.9718, 407.0884, 408.6749, 436.9252, 469.4401, 494.3345, 517.6277, 532.7076, 540.7455, 564.9946, 589.0579, 605.2107, 589.9565, 551.2202, 517.8794, 485.2714, 450.6696, 432.0568, 426.5083, 415.4861, 407.9452, 411.8619, 408.4413, 401.1505, 403.478, 409.2215, 408.8203, 405.8504, 411.283, 427.1671, 441.1629, 420.1222, 406.4801, 400.7327, 412.7041, 430.1616, 426.771, 418.1936, 422.3773, 433.8404, 435.4923, 438.6427, 427.6923, 405.693, 390.465, 395.1773, 417.03, 427.1189, 424.9517, 411.7879, 412.0478, 414.2024, 396.1676, 371.0531, 349.1992, 349.6073, 353.0891, 348.219, 342.2208, 345.107, 360.4065, 370.1146, 381.2422, 387.4022, 380.1416, 363.5649, 338.0696, 334.028, 343.7541, 347.2344, 353.0049, 355.4537, 370.3378, 377.4331, 387.0126, 386.3948, 387.8969, 396.1241, 407.7131, 417.081, 428.0908, 439.3368, 435.9421, 422.4152, 417.0601, 411.5817, 414.0492, 414.2236, 409.7605, 395.2233, 371.0238, 358.7174, 355.7154, 313.1799, 244.5723, 207.5808, 220.7562, 286.4203, 355.1546, 383.7699, 399.9586, 433.3827, 440.9122, 423.5095, 425.7255, 452.4853, 485.2047, 483.339, 463.2997, 439.9068, 440.29, 439.0468, 439.6834, 429.3652, 407.2668, 394.5694, 406.2187, 422.2442, 420.9328, 419.4209, 429.5884, 440.5585, 460.5459, 485.6431, 491.794, 457.3076, 417.0639, 399.9544, 414.3594, 431.4662, 438.6836, 431.8174, 427.3547, 445.3683, 466.867, 478.7394, 475.6557, 457.5254, 465.818, 485.9095, 506.3974, 526.1982, 522.8573, 527.5129, 523.9721, 524.6055, 538.9119, 555.043, 554.9983, 558.6198, 559.6276, 557.9968, 576.5431, 606.1791, 637.4574, 640.4176, 636.3642, 622.8094, 614.1088, 585.2101, 576.1949, 569.0453, 579.8408, 595.856, 606.8421, 608.7189, 602.852, 580.2915, 568.8281, 574.4669, 599.2195, 617.0541, 627.159, 622.4022, 602.1594, 583.9364, 561.2476, 550.2973, 551.7753, 566.18, 561.6416, 549.1492, 557.0552, 574.8942, 584.5058, 569.7103, 551.2139, 555.7365, 557.9871, 555.4213, 539.9264, 547.9221, 555.9868, 552.2116, 551.7609, 565.9672, 610.2121, 647.7424, 648.3214, 615.14, 587.0233, 593.3111, 620.9655, 631.6891, 637.4352, 640.8193, 622.885, 603.2902, 599.0425, 574.0642, 546.8004, 538.3622, 546.4628, 564.062, 575.6131, 565.585, 553.7213, 547.7999, 531.8317, 493.9308, 467.8992, 470.5395, 484.0735, 492.3812, 497.6542, 505.0593, 509.9124, 518.8676, 532.5318, 556.4423, 573.6376, 581.157, 586.2434, 582.4132, 577.7028, 573.6688, 589.2219, 616.2523, 631.4511, 649.8695, 656.4845, 643.5868, 647.5287, 676.3222, 706.7171, 688.9226, 665.4866, 658.9351, 659.6137, 660.1197, 655.7427, 676.0052, 698.7499, 722.989, 745.1665, 764.3041, 756.3615, 741.9673, 741.2012, 748.4593, 753.2757, 743.5251, 736.0067, 710.9781, 666.0211, 650.0071, 663.7628, 691.6022, 710.0901, 721.6153, 720.7378, 728.7703, 736.3058, 719.6464, 718.5473, 737.4611, 757.5032, 768.7111, 761.6422, 750.9352, 763.2062, 767.9799, 771.1303, 799.3289, 849.1921, 861.0142, 826.6166, 778.3421, 753.2903, 752.4194, 764.3525, 770.2947, 759.2414, 773.3981, 771.5001, 764.5932, 769.0995, 788.8946, 807.2741, 801.0532, 803.3836, 816.5799, 785.1551, 698.6165, 620.4645, 598.0909, 644.8525, 716.7108, 755.6939, 742.7759, 715.8208, 711.4063, 732.4222, 746.8654, 744.2873, 729.2046, 726.4408, 744.145, 792.747, 814.7543, 804.6224, 777.9223, 761.023, 745.659, 750.31, 748.8606, 753.0743, 758.2621, 779.0369, 794.8453, 814.0491, 806.4611, 800.7739, 797.727, 774.5997, 749.7712, 751.6712, 760.4789, 789.2019, 799.5289, 807.4372, 812.6269, 790.8836, 795.9157, 812.3168, 829.3988, 852.5207, 876.5502, 894.0275, 879.8155, 829.7055, 790.5492, 776.6009, 793.2661, 812.3769, 819.5765, 826.8633, 848.302, 869.8583, 902.7225, 938.5003, 948.6183, 922.8211, 903.3026, 894.0005, 890.907, 874.3722, 848.7801, 842.4843, 855.9471, 853.2345, 800.6119, 728.7697, 687.2069, 684.0077, 703.4781, 715.8953, 720.5685, 714.3097, 703.4011, 706.9985, 755.6887, 846.579, 882.1408, 857.4466, 832.0011, 837.762, 847.9182, 854.19, 840.9483, 836.4005, 835.4839, 849.7619, 840.3282, 849.828, 852.6399, 873.6885, 892.9656, 913.8802, 926.1791, 918.2981, 883.3404, 859.3694, 847.2945, 825.9576, 792.6979, 760.9907, 749.2689, 756.8403, 805.566, 860.166, 872.0236, 869.9726, 853.5744, 809.1065, 615.588, 339.11, 217.6274, 218.5384, 336.3042, 535.2104, 664.8482, 741.9699, 794.2399, 814.4265, 829.3919, 830.6843, 821.7508, 829.5508, 853.9515, 864.8434, 861.8636, 826.8798, 797.4451, 787.4895, 797.1455, 794.8895, 814.5885, 825.3087, 841.0182, 853.2769, 891.4663, 940.4392, 972.7244, 953.1198, 926.1525, 919.4593, 939.8054, 946.2666, 939.8724, 917.6575, 906.24, 898.2736, 903.3852, 907.3344, 910.7731, 916.0964, 898.7769, 882.5879, 848.3389, 819.4769, 801.8365, 813.9657, 809.2267, 781.7821, 772.0528, 761.4465, 760.6549, 762.0512, 767.8174, 745.6973, 731.8607, 756.1399, 775.2898, 750.2424, 750.1983, 788.4565, 800.9912, 774.1829, 761.0307, 774.2172, 800.9357, 790.213, 782.4642, 784.8223, 792.5515, 820.5879, 835.224, 857.9597, 849.8363, 836.2601, 847.8395, 891.925, 930.429, 906.0543, 849.4223, 819.222, 813.8399, 839.7195, 879.4749, 906.5247, 930.3813, 903.0498, 864.3367, 853.8794, 888.945, 927.6042, 934.7156, 908.9932, 913.4563, 953.1911, 984.7535, 1004.4725, 998.6807, 986.7852, 992.6811, 996.2794, 989.1498, 1003.2846, 1010.0494, 985.3468, 978.6266, 964.9597, 962.9584, 951.2793, 966.2012, 988.5248, 998.7385, 1007.5761, 996.2721, 968.0321, 930.1232, 909.22, 935.9491, 941.3529, 967.0152, 984.0859, 998.511, 1001.702, 984.2368, 938.8526, 898.2254, 899.7124, 922.1226, 937.6793, 977.5111, 993.4505, 980.8534, 949.0751, 932.1346, 939.4955, 935.173, 940.4722, 944.6193, 936.0405, 923.6878, 943.5349, 961.7423, 979.0978, 969.5178, 975.6316, 959.4969, 947.8946, 950.4723, 959.6188, 968.669, 975.7395, 989.931, 1003.2962, 984.1475, 975.7047, 985.7823, 1009.4911, 1007.0083, 1016.0352, 1009.8877, 984.6565, 949.9749, 962.055, 991.0625, 996.4982, 987.8429, 968.9574, 973.2606, 978.9338, 964.7011, 940.8737, 922.8038, 918.9403, 933.7663, 945.471, 949.2688, 940.1105, 931.4388, 943.9036, 962.3155, 969.8369, 940.4246, 907.8587, 909.7631, 915.8686, 931.3473, 939.4774, 976.7169, 1010.2887, 987.0946, 954.6823, 943.2199, 963.8762, 995.5824, 1009.0364, 995.558, 972.285, 980.3578, 1010.8432, 1044.8122, 1057.7559, 1077.9837, 1087.553, 1093.3728, 1106.9933, 1074.0173, 1052.9128, 1061.0418, 1098.5595, 1106.4584, 1098.8859, 1083.7377, 1071.4009, 1058.6235, 1053.5952, 1037.5092, 1038.4628, 1036.3015, 1034.6222, 1046.623, 1065.5425, 1077.5493, 1082.8173, 1086.3741, 1076.4254, 1058.0582, 1069.2775, 1104.1272, 1123.6396, 1104.701, 1110.246, 1130.3239, 1146.3815, 1128.9823, 1106.3527, 1127.3014, 1161.9641, 1188.8589, 1154.5285, 1128.1613, 1131.9208, 1142.3357, 1149.8808, 1118.3778, 1078.4531, 1048.3372, 1086.289, 1119.0384, 1142.9887, 1153.8852, 1159.6873, 1136.6972, 1135.9761, 1145.134, 1160.3595, 1140.0902, 1127.836, 1121.4651, 1147.8249, 1153.5519, 1142.7684, 1144.9331, 1134.2868, 1163.8475, 1179.1627, 1163.3554, 1137.9175, 1166.3973, 1185.721, 1171.9762, 1185.4752, 1190.9772, 1210.3164, 1195.2704, 1166.8247, 1163.4038, 1187.1675, 1216.6635, 1219.6819, 1239.9672, 1235.3621, 1235.5724, 1206.6723, 1196.5816, 1172.0075, 1164.548, 1183.1497, 1183.6393, 1155.4721, 1100.5873, 1056.4919, 1025.6863, 1007.6508, 1011.0147, 1028.1999, 1041.6932, 1053.9685, 1044.9377, 1063.8978, 1079.6164, 1065.7742, 1021.3667, 1000.8218, 999.984, 1025.3279, 1004.2333, 1018.6356, 1034.8309, 1058.1245, 1093.9039, 1117.9942, 1114.9383, 1092.1458, 1081.2939, 1117.3073, 1105.203, 1095.1685, 1130.6037, 1157.3823, 1145.975, 1135.0802, 1139.6704, 1163.3527, 1183.7367, 1153.7423, 1147.9345, 1149.5838, 1182.8167, 1222.5338, 1241.1934, 1218.7677, 1214.0649, 1204.0686, 1190.1576, 1162.7638, 1164.8275, 1162.1, 1147.0302, 1123.0578, 1124.3138, 1153.3218, 1164.5089, 1177.3392, 1175.2167, 1197.2996, 1180.1133, 1149.1162, 1145.927, 1154.135, 1173.5949, 1151.9744, 1106.672, 1102.8468, 1148.0997, 1167.9855, 1066.1527, 930.1258, 848.2726, 845.3382, 887.9838, 930.9208, 988.3553, 1037.7806, 1049.6634, 1023.4793, 1035.6934, 1031.0942, 1005.511, 995.6596, 996.3804, 1002.8631, 1053.1137, 1132.5236, 1145.189, 1172.0746, 1164.0574, 1143.1159, 1132.2771, 1108.0339, 1129.636, 1186.429, 1240.7146, 1245.404, 1206.0643, 1203.3104, 1236.5033, 1255.8285, 1263.0807, 1266.1376, 1259.9849, 1275.0646, 1283.5196, 1273.3607, 1264.6797, 1289.1744, 1281.2546, 1269.867, 1264.4023, 1242.6783, 1228.4906, 1209.1526, 1193.3698, 1177.1294, 1184.0247, 1236.0488, 1263.8423, 1254.1306, 1257.9186, 1255.4501, 1261.3625, 1272.2859, 1267.0719, 1235.6807, 1227.3286, 1229.5174, 1212.8862, 1212.5932, 1205.0968, 1225.7232, 1249.1019, 1266.6797, 1274.9959, 1274.8773, 1257.0293, 1238.6584, 1223.1794, 1235.4869, 1240.0164, 1255.597, 1266.3467, 1256.942, 1251.8712, 1236.484, 1213.318, 1182.0851, 1138.6384, 1127.4922, 1123.206, 1100.6513, 1070.1826, 1057.2506, 1092.6281, 1115.2249, 1112.1252, 1114.1103, 1099.3869, 1079.1221, 1097.7262, 1131.9562, 1125.6772, 1078.6634, 1065.9591, 1096.3868, 1112.4686, 1109.5402, 1093.6247, 1062.2884, 1085.6435, 1125.6236, 1146.3229, 1157.6593, 1170.4841, 1153.5716, 1138.8225, 1178.2397, 1236.9857, 1232.7093, 1200.8964, 1179.7597, 1206.1694, 1282.618, 1325.5926, 1293.4091, 1288.0285, 1263.4247, 1209.2934, 1178.5869, 1228.5569, 1275.1066, 1273.2592, 1262.9886, 1271.529, 1240.6989, 1228.6601, 1281.4593, 1327.3749, 1317.3234, 1298.6047, 1289.9414, 1268.0018, 1233.8947, 1200.7244, 1173.8882, 1178.0664, 1168.0131, 1193.2713, 1199.8251, 1217.4718, 1238.9895, 1219.9802, 1231.9463, 1247.2279, 1249.874, 1237.5861, 1229.4406, 1222.3925, 1225.4092, 1228.8532, 1259.359, 1280.8586, 1280.4989, 1273.0983, 1277.5467, 1292.3882, 1251.5988, 1218.8105, 1232.9711, 1268.6037, 1279.4598, 1303.2621, 1313.4576, 1315.9074, 1304.6249, 1252.4062, 1254.9373, 1290.2002, 1357.1279, 1407.8348, 1427.2943, 1382.7311, 1338.5056, 1299.0771, 1288.3172, 1325.5234, 1316.6062, 1339.8686, 1348.7574, 1340.6062, 1353.9965, 1365.5759, 1371.9411, 1340.4964, 1312.4956, 1296.7423, 1337.7886, 1367.9193, 1354.7535, 1315.2643, 1318.7325, 1356.0017, 1389.7429, 1376.7883, 1362.6759, 1334.3955, 1321.9309, 1326.2287, 1300.3277, 1260.8066, 1254.0505, 1321.9382, 1417.9773, 1420.9765, 1390.1915, 1368.8865, 1346.9596, 1330.0204, 1316.7301, 1291.8059, 1283.7719, 1267.9532, 1267.0276, 1275.2013, 1233.8939, 1201.3033, 1174.4713, 1158.9834, 1129.0719, 1107.5962, 1069.3552, 1046.8605, 1002.5531, 980.6171, 989.7474, 997.1829, 972.9489, 1010.0977, 1046.7352, 1061.4928, 1097.7315, 1123.3526, 1131.9935, 1148.406, 1152.4012, 1197.6039, 1253.912, 1276.8551, 1304.885, 1333.3904, 1345.3236, 1338.0375, 1327.8153, 1336.5735, 1356.3153, 1387.5507, 1377.6444, 1382.6545, 1390.3046, 1419.1522, 1432.0784, 1455.1026, 1457.9621, 1427.8707, 1406.6037, 1441.6411, 1432.0021, 1405.1636, 1415.728, 1440.3778, 1449.2164, 1472.5422, 1470.6397, 1473.9785, 1475.2371, 1464.3201, 1430.6191, 1407.9859, 1392.5445, 1435.8718, 1481.6408, 1498.823, 1493.5624, 1497.2442, 1570.5681, 1604.5151, 1597.3567, 1540.2164, 1475.2411, 1468.4006, 1468.4907, 1525.6234, 1540.9453, 1537.1081, 1532.8356, 1558.6668, 1550.8962, 1561.1465, 1529.3708, 1502.7868, 1491.6114, 1499.6274, 1532.9774, 1505.4706, 1477.3294, 1450.467, 1470.5853, 1504.4062, 1472.5681, 1417.5759, 1369.1492, 1409.3537, 1508.8259, 1582.5787, 1536.9215, 1498.7913, 1504.4074, 1527.1021, 1530.5216, 1423.78, 1292.3692, 1223.1398, 1196.2725, 1176.9471, 1174.8614, 1228.973, 1321.1661, 1430.5521, 1474.2013, 1507.9751, 1535.8473, 1555.0883, 1523.5157, 1485.8557, 1483.6521, 1465.542, 1431.5223, 1473.9169, 1504.2061, 1562.8342, 1577.9773, 1577.1572, 1610.8853, 1601.1011, 1619.5341, 1607.9312, 1580.1698, 1561.743, 1567.7233, 1575.6999, 1537.3851, 1519.1106, 1560.5629, 1599.851, 1619.4944, 1648.7347, 1672.7909, 1675.9258, 1676.2015, 1679.5879, 1640.2359, 1640.8094, 1585.471, 1546.0235, 1548.4521, 1508.9264, 1504.6012, 1536.4457, 1557.8058, 1581.0758, 1544.6184, 1522.6759, 1523.955, 1518.9091, 1512.6432, 1517.8574, 1494.5216, 1467.3699, 1436.9724, 1402.1646, 1377.315, 1353.7615, 1324.7348, 1386.9443, 1469.0088, 1480.483, 1528.7425, 1532.8385, 1548.6395, 1598.2329, 1639.1462, 1674.5756, 1746.3562, 1811.4443, 1789.9105, 1763.3578, 1814.5846, 1874.1812, 1815.3478, 1720.3626, 1674.6362, 1661.2521, 1652.9516, 1689.0448, 1748.2411, 1860.2616, 1983.3218, 1975.75, 1802.5509, 1610.9067, 1526.3776, 1540.9802, 1592.5257, 1664.8949, 1716.7953, 1701.4202, 1636.0165, 1415.5065, 1218.625, 1139.1251, 1177.0183, 1277.9479, 1360.3094, 1461.2505, 1599.1352, 1728.1847, 1724.1498, 1683.345, 1622.9153, 1602.0713, 1612.2002, 1657.2366, 1696.904, 1735.3539, 1672.1219, 1585.1829, 1527.8761, 1532.9325, 1562.3938, 1522.0018, 1477.9197, 1536.7963, 1708.9765, 1796.5096, 1743.514, 1664.4416, 1631.4366, 1623.4523, 1698.2963, 1748.6148, 1697.3516, 1559.3855, 1418.9924, 1425.0043, 1562.8618, 1681.8426, 1769.4627, 1772.1354, 1733.828, 1735.0595, 1715.2616, 1682.3996, 1672.1862, 1710.5486, 1715.5331, 1623.3798, 1507.3724, 1448.9057, 1487.3178, 1599.6711, 1688.2777, 1756.7473, 1841.4872, 1890.264, 1918.3726, 1910.2791, 1898.4234, 1862.4415, 1846.0304, 1800.0102, 1764.9338, 1728.4914, 1639.8885, 1573.8142, 1579.6338, 1644.7866, 1703.1589, 1760.6772, 1790.766, 1823.9203, 1767.3409, 1709.8204, 1676.7358, 1717.6304, 1723.1793, 1700.0605, 1690.0018, 1697.7836, 1680.3946, 1688.6197, 1717.618, 1683.955, 1617.6875, 1628.9271, 1663.9381, 1667.15, 1656.9896, 1642.7471, 1652.0733, 1650.7636, 1643.5132, 1671.491, 1614.1345, 1562.3843, 1593.7847, 1666.5705, 1705.9012, 1679.7601, 1666.6248, 1655.6344, 1628.5729, 1626.8985, 1623.5497, 1643.949, 1659.6146, 1728.2128, 1726.2388, 1648.7659, 1586.1507, 1586.592, 1658.8506, 1678.2708, 1641.4095, 1636.5446, 1642.3593, 1713.3041, 1722.6278, 1661.6407, 1625.1709, 1632.8072, 1673.8265, 1681.5896, 1612.8427, 1516.2437, 1514.8528, 1630.3497, 1706.1389, 1650.7753, 1529.5799, 1506.8692, 1595.9519, 1710.9105, 1711.8997, 1748.3577, 1792.0859, 1786.5143, 1769.2847, 1754.6985, 1714.219, 1738.1268, 1756.1092, 1783.1682, 1746.3306, 1667.8107, 1615.1861, 1625.1852, 1674.5833, 1692.2853, 1710.19, 1752.4152, 1759.2029, 1771.936, 1765.3466, 1730.0838, 1740.6873, 1747.6373, 1725.7739, 1654.6614, 1637.8805, 1706.4491, 1774.2469, 1801.6235, 1785.9981, 1758.9735, 1776.7037, 1784.5825, 1782.1114, 1817.3456, 1826.5728, 1804.5342, 1797.2228, 1773.1931, 1767.5855, 1717.7252, 1679.2009, 1662.6907, 1632.9056, 1600.8464, 1589.9755, 1592.1449, 1582.1503, 1609.3315, 1634.2572, 1647.1765, 1653.9547, 1625.7306, 1623.3413, 1658.5361, 1666.0437, 1646.3936, 1648.8607, 1637.8067, 1641.2376, 1650.491, 1609.5357, 1586.695, 1593.6545, 1601.1343, 1593.6035, 1601.3919, 1600.8361, 1603.8778, 1626.8813, 1622.0791, 1591.738, 1575.6574, 1579.4168, 1636.7784, 1661.2815, 1615.7239, 1398.6079, 946.697, 583.1524, 494.9324, 683.0829, 1088.8922, 1371.3164, 1506.8524, 1554.9505, 1560.8808, 1593.4756, 1619.7716, 1644.4109, 1636.9418, 1669.6604, 1713.7432, 1702.9682, 1674.4763, 1634.7243, 1535.3758, 1486.8509, 1452.4649, 1498.3151, 1590.0816, 1696.1583, 1700.9344, 1691.1632, 1717.9015, 1691.4455, 1720.6284, 1740.215, 1694.5794, 1659.203, 1621.688, 1615.8115, 1666.0962, 1696.6164, 1679.7034, 1695.1971, 1690.7476, 1689.2349, 1666.8371, 1683.0303, 1656.606, 1590.7708, 1550.5154, 1581.3025, 1639.6112, 1647.3036, 1565.2397, 1508.4249, 1568.5178, 1672.7493, 1684.4379, 1630.2545, 1662.7429, 1730.1124, 1748.8326, 1744.1488, 1740.9902, 1739.9689, 1736.3572, 1748.5577, 1741.6065, 1694.2716, 1648.628, 1574.9313, 1486.1395, 1427.9479, 1443.3554, 1535.6243, 1656.9441, 1625.5407, 1620.5954, 1672.6083, 1703.1549, 1722.0333, 1729.5834, 1743.7213, 1715.6806, 1694.3613, 1715.8392, 1627.1184, 1474.5545, 1358.4181, 1430.0524, 1606.5746, 1586.9436, 1538.8623, 1435.0224, 1401.228, 819.2924, 107.6028, 17.8444, 3.4069, 2.2702, 18.0205, 141.4747, 842.7058, 1414.7517, 1562.8572, 1679.4361, 1604.2942, 1475.837, 1443.4169, 1559.9755, 1701.367, 1762.0141, 1768.9386, 1703.8111, 1630.6767, 1639.6246, 1740.6701, 1762.23, 1704.4329, 1501.5695, 1360.7543, 1431.3817, 1666.6691, 1734.5314, 1739.733, 1760.4476, 1743.2068, 1768.9663, 1769.8758, 1648.9464, 1628.4243, 1723.1272, 1759.4487, 1627.8051, 1480.5538, 1493.4909, 1655.9224, 1758.8735, 1793.0611, 1767.2683, 1768.8679, 1743.5082, 1762.9977, 1769.2927, 1782.146, 1766.25, 1682.7111, 1684.5682, 1739.5083, 1747.1213, 1623.3225, 1525.2817, 1576.5246, 1671.2483, 1723.536, 1722.4057, 1725.6968, 1730.6883, 1719.9766, 1726.4568, 1690.6696, 1705.8424, 1694.0361, 1672.18, 1641.2618, 1588.6358, 1572.5534, 1549.916, 1495.4874, 1402.6116, 1312.4474, 1236.0124, 1239.9813, 1312.9307, 1371.8756, 1366.7844, 1375.4367, 1314.5323, 1197.2413, 1025.6803, 908.6533, 846.2215, 810.5476, 768.3321, 743.6804, 742.5892, 797.0196, 894.3632, 1009.9182, 1102.2234, 1159.2335, 1206.8601, 1200.5571, 1198.6426, 1261.6236, 1375.1179, 1419.4497, 1453.2891, 1448.3955, 1460.3893, 1455.4864, 1407.2885, 1358.3306, 1404.0552, 1493.7003, 1503.6666, 1474.0437, 1472.9044, 1479.4895, 1493.4977, 1510.9494, 1486.4928, 1478.7721, 1512.8207, 1562.3718, 1595.0164, 1611.0898, 1625.3937, 1598.6989, 1558.5602, 1575.6179, 1595.9513, 1607.8249, 1619.199, 1592.7936, 1609.6044, 1573.8621, 1577.7681, 1603.1986, 1592.904, 1595.0113, 1598.5296, 1607.7899, 1605.4884, 1592.0663, 1565.6518, 1536.0068, 1545.3801, 1514.2338, 1516.755, 1519.7237, 1484.496, 1422.5521, 1306.2763, 1144.7963, 1004.1982, 1001.0742, 1149.6315, 1320.7827, 1457.5493, 1497.7602, 1506.6569, 1498.1188, 1516.1601, 1516.894, 1526.6573, 1511.5595, 1485.3694, 1429.2544, 1306.2674, 1116.844, 988.373, 1014.1765, 1183.9626, 1332.2081, 1386.4201, 1414.5812, 1439.5791, 1451.2988, 1446.3241, 1419.5349, 1420.2975, 1427.305, 1432.7667, 1436.6095, 1417.1963, 1421.0552, 1425.7822, 1412.867, 1428.3254, 1425.9106, 1401.0873, 1388.5005, 1360.7867, 1392.2373, 1359.0018, 1346.6705, 1340.851, 1353.8201, 1354.8606, 1345.0811, 1317.3503, 1303.9465, 1290.1587, 1288.4148, 1272.1928, 1280.7094, 1280.1759, 1280.3404, 1277.9818, 1249.5246, 1253.3752, 1250.0647, 1231.654, 1223.4254, 1224.4296, 1206.4907, 1204.9813, 1196.4351, 1200.93, 1186.1365, 1191.6989, 1197.3205, 1192.2506, 1157.9984, 1137.1115, 1012.0201, 831.4769, 744.7078, 766.7406, 874.4305, 1006.0984, 1037.1574, 1049.4616, 1086.7992, 1152.1503, 1198.3589, 1238.7527, 1262.5939, 1273.0367, 1266.809, 1207.8128, 1033.444, 600.6235, 274.22, 157.0054, 213.5755, 405.9237, 447.8875, 297.6221, 266.6268, 482.7067, 924.7561, 1177.5931, 1177.5522, 1138.9575, 1097.4033, 1057.9713, 1040.4123, 1111.2986, 1150.0162, 1133.9311, 1043.256, 847.9408, 749.3736, 844.9041, 1035.3127, 1085.8327, 1075.7367, 1030.5211, 947.8482, 903.9842, 940.778, 1017.767, 1030.8807, 947.6272, 759.3203, 690.9183, 802.633, 981.3442, 1041.2599, 1043.0506, 1061.0508, 1093.5251, 1069.2444, 988.4885, 913.4036, 919.3973, 1016.2755, 1054.7612, 972.1175, 804.305, 738.8256, 854.4272, 1030.7142, 1085.3913, 1079.8499, 1079.5604, 1082.6784, 1079.0893, 1075.2943, 1093.6227, 1087.4503, 1022.1862, 974.2103, 998.9663, 1065.9259, 1065.8675, 957.677, 892.4035, 946.4671, 1066.1425, 1119.6091, 1134.9871, 1142.6799, 1151.1125, 1141.6825, 1141.0679, 1135.1368, 1156.3256, 1154.9175, 1156.6279, 1142.8116, 1119.4929, 1092.721, 1122.2981, 1155.5525, 1123.5986, 1060.0107, 1055.3471, 1123.4936, 1196.9295, 1218.3718, 1212.7017, 1201.9586, 1226.2458, 1228.5623, 1242.178, 1261.1831, 1251.5747, 1246.5248, 1251.1169, 1256.3781, 1257.698, 1254.3239, 1229.5376, 1217.0982, 1230.3784, 1258.5204, 1222.4808, 1181.5235, 1206.0705, 1251.1891, 1278.1146, 1289.3701, 1293.2082, 1304.4166, 1313.663, 1326.1502, 1318.5883, 1328.6093, 1317.0434, 1323.4367, 1340.5387, 1344.3377, 1341.9412, 1330.9921, 1354.1721, 1352.5835, 1336.9103, 1320.8479, 1319.2835, 1352.2488, 1362.9979, 1319.7692, 1319.0533, 1356.2463, 1382.1764, 1385.5661, 1385.2915, 1393.0792, 1398.3323, 1397.5998, 1406.9845, 1413.0644, 1425.9238, 1427.4448, 1424.2393, 1414.0073, 1424.5283, 1437.1886, 1437.3131, 1436.3264, 1409.8866, 1392.8072, 1395.3601, 1383.779, 1372.2623, 1382.8146, 1375.935, 1348.6427, 1326.7702, 1336.1478, 1337.7757, 1323.6121, 1266.3718, 1229.1421, 1230.064, 1252.8955, 1291.6196, 1329.2537, 1346.3096, 1381.9629, 1425.2962, 1432.7051, 1409.4049, 1417.0075, 1451.2636, 1451.4362, 1451.7816, 1455.0519, 1449.6692, 1428.5461, 1399.4775, 1327.9328, 1289.1403, 1315.9077, 1350.611, 1310.9799, 1273.5451, 1338.6313, 1446.2249, 1476.8275, 1460.782, 1406.3437, 1334.101, 1285.2062, 1308.5436, 1391.0519, 1358.7098, 1242.2728, 1195.1276, 1300.8711, 1454.9, 1526.2551, 1531.2587, 1410.3352, 1250.5843, 1273.5839, 1439.2981, 1520.4452, 1488.6676, 1500.7416, 1581.8762, 1634.0672, 1611.5617, 1582.5471, 1572.1934, 1609.72, 1598.0336, 1604.1141, 1605.1276, 1573.7235, 1526.1465, 1559.3544, 1644.8503, 1673.3527, 1679.4725, 1618.5396, 1441.6191, 1342.0771, 1426.1706, 1596.1745, 1651.8764, 1619.6412, 1579.4365, 1530.5388, 1539.2067, 1600.039, 1697.7524, 1719.9049, 1682.3073, 1520.1349, 1367.5359, 1404.6135, 1597.8154, 1703.7423, 1724.3167, 1763.2218, 1752.6168, 1638.7923, 1278.9565, 915.083, 777.8488, 875.8238, 1095.6769, 1224.0612, 1248.4136, 1303.3453, 1450.1736, 1590.1634, 1649.9956, 1660.5772, 1720.966, 1795.9561, 1820.191, 1640.4116, 1188.2943, 857.9805, 854.7172, 1172.5362, 1523.8797, 1484.4489, 1335.4852, 1325.4988, 1462.1149, 1628.5192, 1717.6245, 1769.9154, 1728.4899, 1611.7233, 1489.5391, 1449.1192, 1531.7075, 1701.9398, 1771.058, 1750.9563, 1502.7248, 1099.3537, 946.2179, 1125.0788, 1571.3841, 1819.7585, 1822.4104, 1668.7298, 1167.2466, 508.7042, 202.8551, 163.964, 298.4088, 823.4013, 1055.1816, 845.1467, 930.3531, 1394.6484, 1839.8477, 1975.9661, 2012.8836, 2053.4995, 2080.8187, 2011.1547, 1712.5444, 1506.5003, 1581.3959, 1848.3482, 2003.9826, 1771.9299, 1246.1603, 1038.2851, 1202.1392, 1738.028, 2131.6054, 2183.9376, 2157.893, 2155.8835, 2132.1024, 2091.395, 2066.0174, 2069.5437, 2009.4746, 1756.2037, 1678.9974, 1823.1888, 2075.0844, 2033.9449, 1608.7409, 1329.7126, 1424.5008, 1802.7261, 1598.0215, 862.3642, 542.169, 598.7545, 1126.4388, 2026.8866, 2345.0819, 2372.0549, 2357.1928, 2379.7064, 2388.5984, 2303.844, 2090.3856, 2002.2864, 2141.9057, 2295.9403, 2159.9574, 1862.3066, 1805.816, 2028.5764, 2373.4642, 2482.1626, 2456.905, 2460.403, 2534.3145, 2534.6741, 2567.9813, 2614.9394, 2555.5683, 2518.6059, 2556.8057, 2621.3102, 2644.4635, 2649.6252, 2584.7932, 2419.5169, 2301.2629, 2359.3396, 2543.5782, 2512.2642, 2296.1216, 2263.1682, 2400.2059, 2637.4251, 2713.946, 2680.0843, 2706.0479, 2738.6443, 2791.9753, 2767.4212, 2717.9497, 2742.9225, 2779.8076, 2838.6464, 2776.3853, 2747.1052, 2778.7028, 2798.6152, 2756.1736, 2686.9424, 2646.2269, 2568.9982, 2496.0059, 2539.0078, 2629.1172, 2560.13, 2441.1449, 2465.902, 2444.3541, 2094.451, 1677.2072, 1495.4848, 1629.1797, 1801.1998, 1679.9283, 1622.9181, 1958.3792, 2515.8568, 2579.8587, 2373.2863, 2358.5215, 2604.1312, 2837.8676, 2905.1545, 2918.7247, 2941.4124, 2973.9143, 2990.5828, 2957.629, 2930.303, 2907.2191, 2610.4539, 1708.5792, 1167.7609, 1220.2326, 1796.4446, 2231.5642, 2000.7144, 1988.0671, 2362.9658, 2839.1814, 2931.6865, 2874.4633, 2692.1308, 2661.1761, 2876.9256, 3076.9711, 2955.7048, 2514.7638, 2224.2157, 2298.2283, 2676.8521, 2915.4606, 3007.8334, 2772.9562, 1879.5861, 1361.5735, 1485.1486, 2277.8728, 2977.1715, 3011.9329, 2839.9264, 2461.456, 2021.4348, 1977.0271, 2366.6692, 2841.6154, 2917.6398, 2406.9588, 1502.9077, 1203.7323, 1555.5603, 2534.8659, 3071.0967, 2629.6995, 1820.5479, 1531.527, 1864.433, 2558.7724, 2458.6101, 2184.3015, 2349.809, 2757.7947, 2870.0389, 2276.9279, 1622.0545, 1518.6692, 2066.303, 2827.0082, 2952.9292, 2985.2726, 3136.2928, 3219.8468, 3188.163, 3100.4611, 3108.5318, 3145.9933, 2836.6109, 2549.3294, 2618.9019, 2982.5393, 3078.8851, 2490.9134, 2065.7224, 2170.6525, 2788.4658, 3232.7014, 3322.224, 3338.9189, 3331.8996, 3339.3145, 3339.7156, 3336.5116, 3298.1817, 3334.4265, 3380.8619, 3295.6877, 3202.2817, 2946.3062, 2893.4637, 3020.2792, 3092.0284, 2796.3693, 2596.3045, 2766.789, 3085.6637, 3243.8464, 3310.9344, 3354.3828, 3441.8984, 3465.9347, 3478.4669, 3407.9045, 3350.6976, 3304.7237, 3325.1811, 3355.5321, 3396.4397, 3394.0233, 3330.1562, 3243.2381, 3182.9781, 3226.2225, 3220.8489, 3053.8719, 3001.0054, 3167.3851, 3330.2166, 3382.6237, 3423.1584, 3429.1912, 3445.7897, 3472.3431, 3465.8395, 3483.1346, 3433.723, 3381.4275, 3385.2012, 3377.3178, 3430.4333, 3496.9483, 3525.0918, 3542.5883, 3466.0896, 3320.4618, 3186.6713, 3171.3127, 3250.0912, 3221.0643, 3151.8831, 3079.3984, 3027.3508, 3135.0156, 3318.0635, 3397.0588, 3281.8062, 3209.8236, 3281.7099, 3473.2101, 3580.6425, 3543.6432, 3534.4535, 3569.3884, 3523.7649, 3468.6751, 3391.4446, 3403.3427, 3488.912, 3601.6362, 3590.2757, 3528.5932, 3440.7686, 3412.4175, 3379.1185, 3354.2704, 3388.1048, 3460.3243, 3517.7364, 3631.2566, 3668.957, 3674.4257, 3720.1972, 3702.0523, 3679.8903, 3636.7591, 3651.5468, 3692.9228, 3689.0136, 3703.008, 3644.0507, 3638.5559, 3639.0556, 3716.0385, 3752.993, 3769.904, 3732.0977, 3759.3203, 3766.864, 3763.7947, 3750.1806, 3707.0462, 3633.7511, 3634.2604, 3604.1964, 3741.4643, 3841.6266, 3871.1449, 3902.0852, 3896.5157, 3900.0369, 3833.4214, 3845.0223, 3853.1432, 3852.9882, 3878.4207, 3938.3591, 3993.8013, 3890.812, 3871.2213, 3951.6691, 3939.2845, 3868.3871, 3853.4353, 3894.577, 3895.3013, 3781.435, 3117.4288, 1879.9917, 1126.2486, 988.3156, 1163.7839, 1153.8213, 1063.6274, 1380.485, 2499.6323, 3017.5578, 2527.2536, 2390.4318, 2870.8817, 3661.1399, 3936.7408, 3830.2101, 3661.1209, 3707.958, 3856.9821, 3935.1618, 3979.57, 3910.0551, 3539.9149, 2020.6855, 845.1093, 619.8158, 882.8089, 1709.718, 1801.8991, 1469.0443, 1683.5308, 2423.0863, 3036.587, 3124.4254, 2889.4536, 2467.053, 2415.6521, 2799.4022, 3171.426, 2781.8826, 1962.247, 1679.8205, 2081.9005, 2869.8798, 3120.6783, 3245.8398, 3120.6438, 2212.52, 1716.5838, 1979.1871, 2966.1276, 3669.1081, 3795.2761, 3576.1874, 2604.431, 1704.6591, 1628.4506, 2478.5086, 3689.1614, 3934.0159, 3252.8195, 1665.3568, 1030.9131, 1244.7048, 2438.3249, 3623.9201, 3829.2934, 4052.9394, 4130.9343, 4056.4161, 3731.7156, 2673.6095, 1808.8008, 1833.3961, 2716.9747, 3752.2833, 3530.6156, 1917.0867, 1044.6385, 1092.6642, 2075.9117, 3404.5009, 3694.259, 3608.8065, 3674.856, 3792.3484, 3926.9919, 3892.7892, 3794.9837, 3604.6739, 2964.0906, 2341.0357, 2442.0144, 3259.4004, 3820.0159, 2887.3445, 1685.7552, 1478.4059, 2176.6431, 3528.6109, 3893.6848, 3883.4546, 3859.048, 3921.2984, 3986.218, 4073.2472, 4122.767, 3984.9071, 3812.8183, 3789.0118, 3917.2599, 3564.5917, 2994.8156, 2991.0286, 3710.5626, 4011.0976, 2996.542, 2327.2404, 2599.347, 3722.9179, 4492.9345, 4538.3909, 4512.1308, 4425.9172, 4419.0845, 4481.2679, 4473.4937, 4364.7795, 4231.1801, 4254.8741, 4449.7548, 4576.0035, 4618.9485, 4556.1919, 4230.7047, 3649.2034, 3517.9402, 3701.9416, 3407.9931, 2678.2998, 2387.5978, 2653.9836, 3161.6644, 3558.3373, 3822.0829, 4102.4463, 4280.1272, 4161.8592, 3845.885, 3707.3349, 3619.9753, 3587.8724, 3557.5047, 3608.0908, 3708.7691, 3773.1835, 3781.7349, 3838.7262, 3768.9178, 3711.8208, 3561.9813, 3448.2178, 3681.2823, 3782.0119, 3342.3294, 3119.2186, 3389.8337, 3857.3518, 4132.8932, 4326.6359, 4358.7825, 4492.047, 4494.8298, 4376.0949, 4318.063, 4415.0504, 4504.2521, 4446.5145, 4387.0925, 4449.0876, 4496.9765, 4455.464, 4473.4698, 4562.5412, 4590.3658, 4492.1, 4449.2937, 4250.6788, 3883.1664, 3810.9505, 4043.1796, 3989.8174, 3846.3612, 4180.1138, 4537.9451, 4600.6826, 4206.8348, 3624.6557, 3188.8699, 3132.1731, 3302.8843, 3525.0977, 3851.3121, 4145.3473, 4368.1214, 4391.6495, 4250.9055, 4001.4991, 3846.5141, 3827.9693, 3890.5271, 3865.7503, 3809.5234, 3674.4557, 3630.6565, 3651.0248, 3581.2891, 3418.296, 3346.6063, 3450.9174, 3568.7073, 3641.9172, 3669.3725, 3671.2097, 3766.9888, 3938.8002, 4064.3172, 4124.4548, 4109.7161, 4200.2139, 4343.2186, 4264.055, 3997.1157, 3882.2842, 4063.5689, 4241.2876, 4299.1573, 4310.1484, 4431.0973, 4632.5847, 4790.7671, 4831.2571, 4815.9676, 4763.6338, 4564.0538, 4178.4148, 3872.8683, 3941.7717, 4142.2445, 4109.1957, 4025.3076, 3944.1444, 3594.4343, 3248.497, 2502.8506, 1086.15, 470.1777, 379.712, 428.6829, 406.1899, 448.5512, 1016.9666, 2327.2526, 2407.2595, 1688.4556, 1627.0156, 2246.539, 3139.8425, 3844.0234, 3923.7912, 3782.6092, 3586.2582, 3392.6794, 3072.4454, 3111.2156, 3231.6001, 2182.5802, 645.5995, 266.4941, 343.7428, 1158.6336, 2225.0221, 1335.8815, 897.8102, 1145.1778, 2338.4356, 3344.1461, 3353.8937, 3161.1806, 2400.7006, 2048.8515, 2637.1082, 3719.8226, 2727.9573, 1474.853, 1358.4362, 2262.9249, 3532.4244, 3533.1109, 3242.3236, 2206.7745, 756.0635, 403.2417, 620.3113, 2152.7675, 4256.8818, 4685.999, 4335.131, 2664.7472, 1273.4783, 1065.0299, 1777.2341, 3444.6351, 4387.585, 3827.5462, 1455.2427, 457.4287, 368.5583, 936.968, 2801.4447, 3797.5422, 3858.6181, 3676.038, 3607.5189, 3810.3671, 3365.1642, 1742.0107, 1099.6733, 1407.6325, 2775.7284, 3732.6059, 3175.2737, 1335.2433, 543.129, 571.1601, 1448.4897, 3196.7682, 3935.7884, 4292.4508, 4354.4584, 4410.9767, 4438.5888, 4504.1119, 4571.0434, 4292.9959, 3232.2134, 1782.5645, 1428.69, 2107.8146, 3814.8436, 4019.3111, 2056.8768, 886.4165, 844.2892, 1872.606, 4042.2072, 4852.9009, 4823.6019, 4318.88, 4115.2868, 4332.2844, 4456.8983, 4549.9545, 4758.8821, 4798.2383, 4750.1868, 4781.0086, 4178.0414, 2668.7767, 2182.5136, 2861.1694, 4256.4316, 3741.1203, 1936.2084, 1379.2722, 1910.0359, 3693.5993, 4767.2394, 4971.2305, 5038.9081, 5064.9232, 4993.6638, 4947.2571, 4946.3495, 4819.512, 4541.5218, 4225.4969, 3678.484, 3228.678, 2916.7728, 2617.6736, 2684.4998, 2531.7487, 1905.7519, 1626.1756, 1994.6358, 2585.4299, 2072.4651, 1608.5369, 1549.3803, 1559.3861, 1989.9086, 3199.8982, 4076.6226, 4249.9552, 3540.7, 2970.5693, 3430.2987, 4382.6354, 4629.1102, 4521.2019, 4564.9459, 4695.958, 4911.495, 4823.6559, 4873.1453, 4901.6451, 4895.2689, 4489.956, 3576.6674, 3202.7314, 3200.1462, 1802.3772, 761.3756, 657.9099, 1314.1057, 2348.1584, 1971.8438, 2031.7666, 3213.2755, 4392.1229, 4368.1274, 3781.4166, 3339.1128, 3648.9045, 4397.8726, 4618.0216, 4653.4099, 4691.0646, 4619.5578, 4407.2861, 3883.4209, 2751.5442, 2268.88, 2837.28, 4023.648, 4420.0276, 4293.1293, 3674.5121, 2808.6176, 1481.4713, 946.4467, 1185.8469, 2517.7915, 4123.7311, 4835.0109, 4882.0169, 4575.7229, 3153.9948, 2101.0263, 2281.8533, 3576.2537, 4411.4262, 3907.5838, 2615.3263, 996.8211, 348.5559, 245.3928, 376.1808, 495.1889, 456.468, 489.6662, 586.9332, 753.7366, 1027.3064, 1459.5654, 1686.3026, 1617.6327, 1727.7752, 1808.4039, 1604.76, 1439.1669, 1093.9755, 583.5345, 536.1449, 965.2097, 1641.4882, 1912.1245, 2059.1538, 2108.0731, 2141.8059, 2182.2558, 2321.4583, 2514.2002, 2731.3946, 2794.8743, 2564.7899, 2151.9005, 2087.7477, 2781.2691, 3649.0301, 3080.1364, 1916.3198, 1736.6122, 2403.6073, 3637.0982, 4314.4441, 4395.1651, 4300.7501, 4418.9671, 4692.8299, 4637.7105, 4510.4402, 4013.8158, 3597.4829, 3573.5544, 3358.3855, 3208.4586, 3233.2134, 3125.8148, 3212.4258, 3563.7703, 3431.5837, 2676.4949, 2492.0012, 3181.0265, 4145.7344, 4522.6971, 4542.4545, 2862.7066, 834.5407, 377.8989, 338.2795, 317.2849, 379.3302, 926.4262, 2084.3261, 1799.1372, 1300.3734, 1427.179, 2353.2666, 3594.2385, 3705.4143, 3090.5302, 2805.0178, 3226.807, 3650.9261, 3757.7647, 3967.4138, 3926.2487, 2841.968, 858.6945, 260.9049, 256.8649, 867.1863, 2640.0387, 2178.2849, 1008.4666, 801.0934, 1548.9447, 3675.5649, 4512.7776, 4307.7794, 3668.5068, 2371.049, 1609.3432, 1878.8444, 2839.3235, 1985.2731, 1223.8394, 1502.3742, 2788.119, 3424.1364, 3358.9782, 2823.2959, 1514.6766, 510.5522, 369.291, 806.9361, 2814.9524, 4228.334, 4431.6523, 4223.7188, 2767.1862, 1186.4078, 916.4491, 1531.168, 2887.7821, 3205.454, 3199.9532, 2072.4281, 567.8998, 296.8694, 496.0096, 1936.8416, 3504.4669, 3581.3507, 3868.8392, 4096.4856, 3974.2259, 4199.8464, 3431.8766, 1528.9295, 972.9488, 1461.1543, 3318.0534, 3436.2805, 2136.4018, 985.9237, 357.6092, 296.5148, 683.7059, 1242.0627, 882.3644, 859.213, 1657.8351, 2704.2119, 1695.0331, 925.8088, 674.3088, 911.4251, 2308.4845, 2810.1354, 1447.1533, 981.6661, 1037.7013, 1485.4022, 2301.9739, 1852.3112, 788.4895, 589.0941, 1016.8791, 2337.7842, 3116.538, 3448.3424, 3823.2455, 3986.3452, 3805.1585, 3661.4916, 3556.5953, 3118.2886, 1398.7165, 353.6645, 223.5146, 444.3806, 1174.133, 815.8851, 571.8887, 940.2567, 2568.6034, 3420.5728, 1984.7678, 925.3912, 877.7044, 1727.1883, 3529.7641, 4357.2388, 4258.4956, 3903.002, 3602.0801, 3075.6609, 1981.4111, 1170.5729, 1280.8014, 2632.3505, 4295.1923, 4889.84, 4813.4004, 4319.2419, 1900.5554, 424.5072, 276.1646, 589.6514, 1882.816, 3111.1517, 3925.1992, 3352.0461, 1907.6092, 953.8629, 759.4693, 1284.0206, 3221.5985, 3996.1128, 3673.57, 2854.1857, 886.9978, 273.7005, 288.8338, 996.839, 2844.2513, 3370.5368, 3581.4059, 3825.4934, 4194.6167, 4428.4094, 4235.9183, 2703.4223, 1253.7215, 1056.1943, 1914.0454, 2829.7359, 2735.6972, 2118.0478, 729.1974, 352.3892, 526.5967, 1635.4539, 2898.8295, 3508.8223, 3896.6874, 4360.4078, 4384.9048, 4096.0361, 4130.087, 4554.8092, 4525.4815, 3752.5214, 2231.0417, 1593.8909, 2081.3807, 3718.1145, 4421.1251, 2613.9036, 1006.2326, 807.2833, 1694.9585, 3707.687, 4517.0657, 4717.7124, 4490.9903, 4091.0224, 3770.5718, 3754.4955, 4107.4373, 4275.697, 3631.2307, 3297.8282, 3839.1453, 4576.7786, 3977.8528, 2624.408, 2367.5644, 3340.3173, 3987.3632, 2621.0886, 1606.4078, 1748.7455, 3018.6447, 3907.1234, 4106.9624, 4237.1447, 4345.2237, 4510.4935, 4611.5222, 4706.959, 4597.3328, 4396.0735, 4313.1915, 4176.5095, 4130.6199, 3982.5104, 3833.9254, 3694.9241, 3470.6387, 2913.8176, 2648.8519, 3118.2149, 3813.363, 2932.3162, 2256.5515, 2699.9205, 3781.6853, 4110.4806, 4167.033, 4349.9722, 4248.5733, 3946.5283, 3666.694, 3738.2235, 4019.8804, 4128.8076, 3968.8639, 3979.2121, 4012.0358, 3745.9908, 3319.1827, 2993.7118, 2798.2633, 2598.2943, 2467.5674, 2383.2675, 2265.0749, 2317.5227, 2410.8535, 2124.78, 1978.9154, 2269.8099, 2738.582, 3032.1354, 3198.4472, 3183.7851, 3250.5729, 3498.4987, 3722.464, 3837.4522, 3788.3603, 3842.9214, 4015.9984, 4085.0176, 3965.796, 3756.2565, 3553.3795, 3348.0243, 3423.6699, 3739.61, 4066.2301, 4356.0261, 4403.7273, 4173.4531, 3699.6498, 3632.2049, 3857.5425, 3709.3423, 3699.7905, 4208.1605, 4376.626, 3975.0864, 3911.0393, 4284.5617, 4538.2224, 4558.0156, 4493.3331, 4539.2413, 4478.7164, 4443.5371, 4267.1648, 3860.9743, 2370.5426, 997.0939, 476.5856, 378.3993, 523.7787, 709.4096, 339.896, 237.377, 576.975, 1774.8211, 1126.8235, 403.2779, 220.8712, 338.1814, 1209.6339, 2592.9943, 3220.13, 2256.1504, 1046.969, 992.0777, 2341.0833, 3714.7151, 3136.0561, 3085.5485, 3751.3105, 4293.9597, 4691.9217, 4885.5481, 4674.755, 4548.7314, 4638.6571, 4262.2665, 3472.5944, 2931.6049, 1353.5028, 208.3879, 70.9651, 146.1211, 853.2358, 1028.2795, 411.7624, 440.527, 1495.8549, 3493.6563, 2915.0055, 1932.3265, 1111.3644, 1066.011, 2085.2474, 3995.803, 4598.5592, 4532.3419, 4277.0875, 3820.5962, 2040.8995, 749.1266, 564.0792, 1307.4156, 3557.8906, 4022.7379, 3659.2813, 3866.2764, 3318.4769, 714.4093, 138.5998, 129.0399, 733.4572, 3625.6248, 4619.255, 4596.3211, 4454.1974, 2460.4071, 666.4981, 445.6813, 1108.0004, 3495.6688, 3990.1596, 3434.3947, 2492.8928, 551.7622, 100.1578, 104.9362, 553.4215, 2716.718, 4262.8683, 4895.191, 5000.9619, 4800.0754, 4258.8645, 3890.0285, 2564.0545, 795.8513, 501.3207, 1123.5494, 3519.6609, 4488.0501, 3571.4474, 977.9127, 177.8674, 158.3595, 742.8401, 3725.3732, 4183.8425, 3469.1344, 3764.9663, 4699.0093, 5157.5987, 5176.1079, 5124.3185, 5063.6995, 5003.8843, 3728.4535, 1322.8372, 754.9703, 1321.8007, 3211.9921, 3602.5017, 1885.7095, 491.3826, 328.0734, 988.8847, 3721.7929, 4964.2297, 5038.1559, 5165.4781, 5099.6772, 4532.6507, 4189.4279, 4726.6813, 5099.2461, 5233.2009, 5352.7348, 5314.9785, 5360.6701, 4728.8798, 2439.9103, 1576.2963, 2300.0358, 4174.4952, 4019.622, 1661.5368, 849.6063, 1243.0864, 3158.5458, 4669.5666, 5233.9744, 5382.5562, 5396.5119, 5326.161, 5271.3703, 5241.224, 5173.5124, 4849.1551, 4279.8069, 3967.0437, 3944.8188, 4224.2506, 4905.1017, 5260.8618, 4995.8262, 3416.331, 2338.0125, 2816.1372, 4219.5757, 3719.5046, 2128.8665, 1962.0132, 3308.2279, 4546.31, 4578.1269, 4391.9175, 3868.7058, 3242.3687, 2508.332, 1899.2188, 1451.8985, 1144.4462, 910.9776, 760.4632, 662.6259, 574.0591, 517.4021, 516.5022, 543.0638, 568.5912, 656.8953, 841.2527, 1060.013, 1429.2095, 2169.3603, 1924.0802, 1163.9641, 706.7966, 618.3894, 588.7272, 523.3729, 566.1581, 528.2481, 588.7836, 624.4967, 595.2633, 743.9515, 710.4727, 819.3984, 1046.6013, 952.5596, 1260.6775, 1457.9729, 1380.8645, 1938.2026, 2057.3432, 2060.3786, 2829.7796, 2786.8501, 2687.8618, 3354.3918, 3157.7346, 2649.97, 2980.73, 3540.8563, 3099.1265, 2773.339, 3356.1159, 4306.7751, 4738.0935, 4920.4774, 4862.9728, 4900.5995, 4871.8016, 4699.418, 4287.9593, 4244.7649, 4784.9978, 5169.8663, 5181.8178, 4789.0412, 4174.3556, 3881.2783, 4010.4618, 4387.4371, 4628.8344, 4474.9557, 4224.3462, 4409.4506, 4525.9081, 2588.3039, 734.3495, 231.1221, 197.5182, 331.8165, 188.7479, 115.4036, 322.944, 1539.7942, 911.4964, 199.4915, 101.7806, 237.7863, 1702.3082, 4360.1289, 4296.1861, 2089.0301, 621.6033, 591.9935, 1985.3937, 4590.2053, 4959.0965, 4845.4183, 4830.3179, 5073.0974, 4748.3782, 3216.8015, 2691.1599, 3685.0852, 4997.7708, 5134.8269, 5004.1819, 4457.5718, 1660.4577, 123.1854, 27.6963, 55.8224, 498.3455, 843.1085, 316.812, 196.6144, 580.4296, 3138.8779, 4196.583, 3210.4983, 1885.7393, 871.3911, 952.1823, 2610.2219, 4350.7065, 4507.0513, 4159.9579, 2963.7927, 2184.2139, 772.3778, 305.36, 534.8062, 2586.9906, 4903.8186, 5145.3509, 5187.6269, 4955.5867, 2161.9588, 190.3395, 53.0863, 129.8412, 1384.5084, 3853.6716, 3915.4089, 3395.7362, 3330.2169, 1435.7558, 307.033, 285.9064, 1147.7359, 2734.5496, 3251.2883, 4165.9742, 3553.8626, 553.8273, 52.7817, 48.1755, 376.7071, 2471.0389, 2684.7145, 2708.8481, 3461.8275, 3856.3218, 3488.5897, 3699.1501, 2989.0426, 818.5211, 296.635, 516.5193, 2543.8228, 4533.1925, 4652.017, 2778.461, 302.011, 66.8146, 117.5039, 1004.1676, 3324.2602, 3908.2481, 3935.1684, 3088.0809, 2876.8294, 3588.6192, 3946.4224, 3444.4804, 2758.655, 2746.0999, 2116.065, 603.1627, 304.7925, 692.9672, 2065.1298, 3089.9458, 2657.5576, 495.8191, 131.4356, 250.562, 1939.4609, 4669.0007, 5206.0188, 5387.6077, 5458.7889, 5792.7105, 5490.5468, 4144.4989, 3927.7145, 5008.7858, 4881.111, 3917.3645, 3932.1489, 4547.1183, 3696.6264, 1375.7077, 875.2696, 1803.9154, 3629.2981, 3502.9052, 1502.257, 476.2256, 529.9019, 2049.8138, 3922.0576, 4085.3682, 4316.5942, 4288.559, 3475.8495, 3178.354, 3013.9457, 2686.5184, 3132.7656, 4237.4723, 4809.4105, 4741.9748, 4164.5715, 4017.5463, 3981.1505, 3895.9708, 3892.9839, 2199.9663, 1354.498, 2071.2365, 3724.6628, 2977.9525, 1154.9024, 889.4082, 1643.6417, 3767.023, 4853.1315, 5346.5739, 5354.3378, 4986.1228, 4601.8767, 4839.8298, 5193.0996, 5298.6474, 5237.5156, 4726.8839, 4302.9688, 4176.6579, 3675.0661, 3569.1383, 4274.0628, 4867.5524, 4934.454, 4830.9837, 4641.2179, 3119.5949, 1505.6206, 1398.8598, 2225.3202, 2307.8379, 1555.0284, 1527.4974, 3185.9045, 4822.4808, 4839.7184, 4631.6345, 4187.8697, 3785.1721, 4016.2315, 4468.3745, 4721.7162, 4666.93, 4695.756, 5038.8618, 5312.8304, 5247.3182, 5032.0277, 4793.4589, 4960.2084, 5002.6701, 4971.9096, 4696.924, 4855.7471, 4788.4879, 4594.4411, 4126.5701, 2550.0412, 2035.815, 2945.2836, 3263.1789, 1961.5228, 1686.5949, 2696.1458, 4077.5026, 4521.4107, 4525.7154, 4793.0376, 5058.8572, 4820.649, 4819.1483, 4615.4788, 3602.3235, 2939.7895, 2934.5842, 3244.0183, 4033.521, 4894.6854, 4737.5362, 3785.9094, 3798.9058, 4550.0714, 5035.6271, 5133.2583, 4917.3302, 4863.8165, 4644.499, 4305.0965, 4452.4687, 3833.9746, 2308.2772, 2014.5305, 2816.9087, 2499.511, 1722.5772, 2097.3437, 3191.086, 3205.8962, 1620.247, 252.6195, 66.2097, 60.9591, 52.479, 21.5018, 33.5386, 214.3825, 305.4036, 81.2406, 23.7729, 75.0752, 841.1866, 999.6296, 843.8237, 658.9703, 198.8697, 176.0912, 524.2481, 1013.8802, 1016.6466, 971.9695, 973.7345, 1085.529, 1254.2753, 1337.627, 1487.3758, 1552.3033, 1657.2169, 1664.7932, 1124.4086, 774.2303, 278.3947, 14.5415, 3.3197, 5.0878, 113.2535, 502.1944, 681.4163, 1040.1699, 1623.2053, 2802.9479, 3101.7664, 2420.5193, 1673.7759, 797.2156, 279.8293, 369.536, 1440.3643, 2698.0279, 2623.0202, 2829.8887, 2580.7275, 785.1989, 157.0523, 144.9145, 511.9839, 1178.3952, 1386.8415, 1636.1752, 2413.5468, 2226.9187, 437.34, 23.8576, 6.8341, 56.7084, 790.1926, 1063.7927, 1092.544, 1581.6528, 1395.4969, 247.6234, 35.0036, 44.0033, 517.6789, 2091.6455, 2517.8204, 2204.3935, 1915.9346, 521.3255, 41.0933, 18.4101, 57.7456, 593.4909, 1485.0703, 2422.5626, 2390.7126, 1794.7912, 1536.4072, 1524.3158, 1420.2137, 433.4932, 56.9186, 88.7002, 613.8616, 2401.0606, 2912.0806, 2698.029, 1631.3224, 276.4305, 59.787, 99.4635, 715.3209, 1643.541, 1414.8964, 1289.0855, 1674.3358, 1298.6829, 895.5951, 1325.1724, 2366.7704, 2265.8589, 2169.2969, 2079.6546, 689.1385, 148.1519, 130.1328, 753.7597, 1437.6619, 1345.8397, 822.879, 93.9351, 27.5705, 97.3459, 910.5167, 2089.1738, 2481.7192, 2279.7137, 2168.7078, 2571.5028, 2847.9479, 2521.0149, 1790.5555, 1396.0542, 1840.9039, 2483.3975, 2630.5758, 2841.9356, 2463.2027, 921.0366, 294.9486, 454.6866, 1585.4222, 2187.7715, 1713.8836, 671.2532, 202.653, 301.3927, 937.9309, 1340.5653, 1508.0469, 1883.8746, 2207.8323, 2071.6295, 2003.5381, 2354.9381, 2589.7685, 2383.0143, 2337.9394, 2439.1528, 1820.3727, 1419.8584, 1561.0459, 1405.3934, 1117.1492, 1225.0451, 1229.2599, 509.6946, 310.3751, 634.6564, 1153.9547, 1270.1282, 666.9413, 212.0595, 214.3834, 663.2435, 1324.6645, 839.9039, 717.6164, 1271.1458, 831.212, 195.6152, 155.348, 666.5904, 1789.4057, 1820.5635, 861.7661, 418.491, 589.4504, 707.6692, 170.9367, 114.9025, 347.3259, 1148.6491, 1372.2069, 1460.0134, 1331.2325, 685.6753, 323.1072, 300.2737, 734.4995, 992.1423, 581.7877, 719.1521, 1573.1353, 2185.4643, 2063.2791, 1862.6645, 2072.328, 2297.042, 2231.5023, 2309.1369, 2488.8821, 2567.0296, 2456.3772, 2364.5935, 2268.378, 2066.398, 1956.9717, 1872.2381, 1075.5104, 188.1844, 37.2981, 42.2989, 264.8737, 368.5304, 173.0273, 228.847, 811.8062, 854.2619, 631.9211, 479.9448, 429.5523, 643.5832, 659.2165, 910.8119, 1423.6572, 1384.2561, 1007.9913, 879.354, 1116.5639, 1425.008, 1589.8094, 1772.7651, 1905.3715, 1793.1481, 1024.1265, 289.8546, 161.5862, 441.6045, 1344.226, 1652.135, 1723.8941, 1739.417, 1628.766, 1522.9253, 802.155, 133.5547, 30.3512, 46.6306, 415.1576, 1120.5498, 1302.9235, 1071.6517, 779.6855, 829.8063, 918.5174, 309.8921, 103.3378, 164.0159, 638.3302, 1029.972, 1225.7478, 1288.6107, 1093.0615, 418.0109, 64.5222, 31.3428, 85.4559, 543.9485, 989.1999, 1127.233, 1138.183, 1104.1344, 1074.2547, 1026.8163, 901.5065, 431.8279, 103.0603, 45.4173, 30.4086, 25.1744, 64.0602, 207.4341, 116.0135, 38.0368, 45.5115, 50.883, 60.5212, 233.7034, 501.0988, 269.0808, 141.4758, 204.0404, 352.8574, 372.168, 521.9032, 757.5732, 804.2083, 841.841, 816.8659, 812.16, 737.5068, 393.1586, 207.8653, 258.0241, 504.6461, 463.6952, 108.8678, 16.9572, 12.2122, 46.1382, 248.2165, 264.7483, 120.2771, 54.4208, 88.074, 330.5449, 530.5811, 535.7903, 471.5809, 414.2697, 230.9289, 140.8782, 249.331, 552.2931, 635.0998, 628.2213, 490.1942, 204.6007, 77.9323, 88.4764, 198.7062, 202.5773, 160.2061, 164.8075, 276.7808, 366.3233, 163.6777, 31.6765, 18.3629, 63.601, 269.3761, 394.8182, 408.304, 369.0288, 321.0504, 236.8598, 87.5677, 51.6834, 118.7241, 319.1329, 379.7051, 390.853, 379.9678, 294.6398, 92.6668, 19.5375, 15.1887, 63.8934, 191.1329, 206.5999, 226.1582, 268.1212, 265.012, 209.2258, 147.5999, 136.9679, 121.9423, 69.4684, 40.5104, 58.7956, 85.0808, 97.6975, 123.6819, 109.5485, 82.0269, 24.7414, 10.7868, 20.9592, 88.3606, 97.8984, 68.3715, 84.0395, 74.2182, 27.5065, 19.8029, 53.3705, 117.9937, 130.2251, 89.6356, 44.2894, 42.933, 35.1095, 13.7126, 11.9509, 34.9965, 99.0183, 116.7556, 92.0199, 38.3871, 19.3776, 24.7863, 29.6884, 44.6537, 89.4647, 117.1826, 121.9836, 119.2008, 121.5531, 122.4266, 119.6862, 117.8594, 107.5567, 98.5119, 100.7137, 99.464, 88.9109, 77.3847, 57.8688, 37.5197, 42.9239, 63.9194, 69.5797, 52.7878, 17.6798, 3.7449, 2.4, 7.2965, 19.6345, 11.5482, 8.7461, 19.3414, 37.0258, 37.1187, 30.4852, 19.5162, 19.752, 32.1393, 36.4345, 35.1281, 34.9102, 32.2857, 28.0533, 24.9492, 27.4967, 29.7485, 28.5351, 24.2655, 18.4347, 17.7774, 13.0575, 6.4728, 7.3422, 11.7345, 10.9206, 12.4073, 16.4454, 18.2294, 15.3798, 12.4587, 7.4721, 1.9192, 0.6063, 0.812, 2.0267, 2.1869, 3.5499, 4.5241, 5.3699, 3.7289, 1.2041, 0.475, 0.0, 0.0263, 0.0]} \ No newline at end of file diff --git a/papers/sky_fibres/data/skyfibre_totals.json b/papers/sky_fibres/data/skyfibre_totals.json new file mode 100644 index 0000000000000000000000000000000000000000..be2865141b847450f837935b8abdbdef6ddc513f --- /dev/null +++ b/papers/sky_fibres/data/skyfibre_totals.json @@ -0,0 +1,8 @@ +{ + "n_plates": 3853, + "n_sky": 381943, + "n_files": 4131, + "pos_all": 115169, + "neg_all": 75591, + "note": "pos_all and neg_all count every emission-like and absorption-like peak at 6 sigma before the four tests; the CSV holds every peak that passes the mask, airglow and width tests, with the number of other sky fibres of its plate at 3 sigma within a pixel (n_shared), so that any sharing rule can be applied; flux is the integrated line flux in 1e-17 erg/s/cm2, for a dip its depth; values are written at full precision" +} \ No newline at end of file diff --git a/papers/sky_fibres/make_numbers.py b/papers/sky_fibres/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..cf55346b8ea7c93e98713fc4f979ac1c584bcb76 --- /dev/null +++ b/papers/sky_fibres/make_numbers.py @@ -0,0 +1,482 @@ +"""Numbers and galaxy table (table_galaxies.tex) of the sky-fibre paper from the line, counterpart, galaxy, injection and exposure files in data/.""" +import collections +import csv +import gzip +import json +import math +import os +import re +import sys + +import numpy as np +from astropy.coordinates import SkyCoord + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import core, lasers # noqa: E402 + +DATA = os.path.join(HERE, "data") +LINE = {"[OII]3727": "[O\\,\\textsc{ii}]", "Hbeta": "H$\\beta$", "[OIII]4959": "[O\\,\\textsc{iii}]\\,4959", + "[OIII]5007": "[O\\,\\textsc{iii}]\\,5007", "Halpha": "H$\\alpha$", "[NII]6583": "[N\\,\\textsc{ii}]", + "[SII]6716": "[S\\,\\textsc{ii}]\\,6716", "[SII]6731": "[S\\,\\textsc{ii}]\\,6731", "Lyalpha": "Ly$\\alpha$"} +TYPE = {"REX": "round exp.", "PSF": "point", "EXP": "exp.", "SER": "S\\'ersic", "DEV": "de Vauc."} + + +def load(): + rows = [] + with gzip.open(os.path.join(DATA, "skyfibre_lines.csv.gz"), "rt", encoding="utf-8") as fh: + for r in csv.DictReader(fh): + rows.append(dict(plate=r["plate"], mjd=r["mjd"], file="spPlate-%s-%s.fits" % (r["plate"], r["mjd"]), + fiber=int(r["fiber"]), ra=float(r["ra"]), dec=float(r["dec"]), sign=int(r["sign"]), + lam=float(r["lam"]), snr=float(r["snr"]), width=float(r["width"]), flux=float(r["flux"]), + n_shared=int(r["n_shared"]))) + return rows + + +def classify(group): + """Other-plate test (same fibre within three pixels at another sky position) and redshift test (two or more lines at one redshift, one strong) within one sign-and-rule group.""" + by_fibre, by_spec = collections.defaultdict(list), collections.defaultdict(list) + for p in group: + by_fibre[p["fiber"]].append(p) + by_spec[(p["file"], p["fiber"])].append((p["lam"], p["flux"])) + for p in group: + p["fixed"] = sorted({q["plate"] for q in by_fibre[p["fiber"]] if q["plate"] != p["plate"] + and abs(math.log10(q["lam"] / p["lam"])) < 3e-4 and lasers.skyfibre_sep(p, q) > 1.5}) + p["galaxy"] = lasers.skyfibre_galaxy(by_spec[(p["file"], p["fiber"])]) + p["galaxy_loose"] = lasers.skyfibre_lines(sorted(x for x, _ in by_spec[(p["file"], p["fiber"])])) + return group + + +def rest_of(group, thr=8): + """Lines at thr sigma that the other-plate, redshift and two-sign tests leave.""" + return [p for p in group if p["snr"] >= thr and not p["fixed"] and not p["galaxy"] and not p["both"]] + + +def shuffle_rate(group, n=200, seed=1): + """Galaxy identifications with line wavelengths shuffled among multi-line fibres, counts kept: the redshift test's chance rate.""" + rng = np.random.default_rng(seed) + by = collections.defaultdict(list) + for p in group: + by[(p["file"], p["fiber"])].append((p["lam"], p["flux"])) + multi = [k for k, v in by.items() if len(v) >= 2] + lines = [x for k in multi for x in by[k]] + sizes = [len(by[k]) for k in multi] + out = [] + for _ in range(n): + perm = [lines[i] for i in rng.permutation(len(lines))] + i, hits = 0, 0 + for s in sizes: + hits += lasers.skyfibre_galaxy(perm[i:i + s]) is not None + i += s + out.append(hits) + return len(multi), float(np.mean(out)), float(np.std(out)) + + +def main(): + rows = load() + tot = json.load(open(os.path.join(DATA, "skyfibre_totals.json"))) + cp = json.load(open(os.path.join(DATA, "skyfibre_counterparts.json"))) + inj = json.load(open(os.path.join(DATA, "skyfibre_inject.json"))) + print("plates %d, files %d, sky spectra %d; all peaks at 6 sigma: %d emission-like, %d absorption-like" + % (tot["n_plates"], tot["n_files"], tot["n_sky"], tot["pos_all"], tot["neg_all"])) + area = tot["n_sky"] * math.pi * 1.0 ** 2 / 3600.0 ** 2 + print("sky area of the fibres: %.3f deg2" % area) + groups = {(rule, sign): classify([dict(p) for p in rows if p["sign"] == sign and p["n_shared"] < rule]) + for rule in (1, 2) for sign in (1, -1)} + for rule in (1, 2): + lasers.skyfibre_both_signs(groups[(rule, 1)], groups[(rule, -1)]) + for (rule, sign), g in sorted(groups.items(), key=lambda kv: (kv[0][0], -kv[0][1])): + for thr in (6, 8): + t = [p for p in g if p["snr"] >= thr] + print("rule %d %s >= %d sigma: clean %d, fixed to a fibre %d, at a galaxy redshift %d, both signs %d, rest %d" + % (rule, "peaks" if sign > 0 else "dips ", thr, len(t), sum(1 for p in t if p["fixed"]), + sum(1 for p in t if p["galaxy"] and not p["fixed"]), + sum(1 for p in t if p["both"] and not p["galaxy"] and not p["fixed"]), len(rest_of(t, thr)))) + # counterpart test on the rest at 8 sigma + print("counterparts within 1.5 arcsec (at the fibre / 30 arcsec north), lines at 8 sigma that every test leaves:") + cpt = {} + for rule in (1, 2): + for sign in (1, -1): + rest = rest_of(groups[(rule, sign)]) + keys = ["%.5f %+.5f" % (p["ra"], p["dec"]) for p in rest] + have = [k for k in keys if k in cp] + on = sum(1 for k in have if cp[k]["on"]) + off = sum(1 for k in have if cp[k]["off"]) + cpt[(rule, sign)] = (len(rest), len(have), on, off) + print(" rule %d %s: %d lines, %d with the catalogue answering, %d with a source against %d at the control" + % (rule, "peaks" if sign > 0 else "dips ", len(rest), len(have), on, off)) + # peak excess over dips net of each sign's counterpart excess, and its bound + print("excess of peaks over dips at 8 sigma, each net of its counterparts' excess over the control:") + for rule in (1, 2): + n_p, h_p, on_p, off_p = cpt[(rule, 1)] + n_d, h_d, on_d, off_d = cpt[(rule, -1)] + # counterpart excess scaled to every line of the sign, some lying outside the catalogue + g_p = (on_p - off_p) * n_p / max(h_p, 1) + g_d = (on_d - off_d) * n_d / max(h_d, 1) + ex = (n_p - g_p) - (n_d - g_d) + var = n_p + n_d + (on_p + off_p) * (n_p / max(h_p, 1)) ** 2 + (on_d + off_d) * (n_d / max(h_d, 1)) ** 2 + up = max(ex, 0.0) + 1.645 * math.sqrt(var) + rec = {1: (0.301, 0.383), 2: (0.560, 0.741)}[rule] + # recovery at 8/6 of threshold, between injections at 1.0 and 1.5 + r8 = rec[0] + (rec[1] - rec[0]) * (8.0 / 6.0 - 1.0) / 0.5 + print(" rule %d: peaks %d - %.0f = %.0f against dips %d - %.0f = %.0f: excess %+.0f +- %.0f; 95 per cent " + "upper limit %.0f lines; recovery %.2f; fewer than %.0f per deg2" + % (rule, n_p, g_p, n_p - g_p, n_d, g_d, n_d - g_d, ex, math.sqrt(var), up, r8, up / (area * r8))) + exposures(groups, cp, area, rows) + recurring(rows, groups, cp) + # widths of the rest: narrow peaks against narrow dips + for rule in (1, 2): + pw = np.array([p["width"] for p in rest_of(groups[(rule, 1)])]) + dw = np.array([p["width"] for p in rest_of(groups[(rule, -1)])]) + print(" rule %d: widths below 0.9 px: %d peaks, %d dips; 1.1-1.7 px: %d peaks, %d dips" + % (rule, (pw < 0.9).sum(), (dw < 0.9).sum(), ((pw >= 1.1) & (pw < 1.7)).sum(), ((dw >= 1.1) & (dw < 1.7)).sum())) + # redshift test's chance rate, by shuffling and on dips + for rule in (1, 2): + nm, mu, sd = shuffle_rate([p for p in groups[(rule, 1)] if not p["fixed"]]) + dipfib = {(p["file"], p["fiber"]) for p in groups[(rule, -1)] if p["galaxy"] and not p["fixed"]} + pkfib = {(p["file"], p["fiber"]) for p in groups[(rule, 1)] if p["galaxy"] and not p["fixed"]} + print("rule %d: %d peak fibres at a galaxy redshift; shuffled among the %d fibres with two or more peaks: " + "%.1f +- %.1f; dip fibres at a galaxy redshift: %d" % (rule, len(pkfib), nm, mu, sd, len(dipfib))) + # identifications set aside by the ratio requirements, each sign + for sign in (1, -1): + g = groups[(2, sign)] + loose = {(p["file"], p["fiber"]): p["galaxy_loose"] for p in g if p["galaxy_loose"] and not p["fixed"]} + strict = {(p["file"], p["fiber"]) for p in g if p["galaxy"] and not p["fixed"]} + aside = collections.Counter() + for k, (z, lines) in loose.items(): + if k in strict: + continue + if "Halpha" in lines and not any(n in lines for n in ("[OII]3727", "Hbeta", "[OIII]5007")): + aside["H alpha with [N II] or [S II] alone"] += 1 + elif "[OIII]4959" in lines and "[OIII]5007" not in lines: + aside["[O III] 4959 without 5007"] += 1 + else: + aside["[O III] at a flux ratio outside 1.5-5"] += 1 + print("two-fibre %s: set aside by the ratio requirements %s" % ("peaks" if sign > 0 else "dips", dict(aside))) + if sign > 0: + # set-aside fibres whose lines repeat at the same observed wavelengths on other plates + sets = {k: sorted(p["lam"] for p in g if (p["file"], p["fiber"]) == k) for k in loose if k not in strict} + keys = sorted(sets) + for i, a in enumerate(keys): + for b in keys[i + 1:]: + if a[0] != b[0]: + same = [x for x in sets[a] if any(abs(x - y) < 2.0 for y in sets[b])] + if len(same) >= 2: + print(" repeated: %s fibre %d and %s fibre %d at %s A" % ( + a[0], a[1], b[0], b[1], ", ".join("%.0f" % x for x in same))) + # strongest remaining lines and their counterparts + cpd = json.load(open(os.path.join(DATA, "skyfibre_counterparts.json"))) + rest = sorted(rest_of(groups[(2, 1)]), key=lambda p: -p["snr"]) + for p in rest[:6]: + c = cpd.get("%.5f %+.5f" % (p["ra"], p["dec"])) + print(" strongest rest %s fibre %d %.1f A S/N %.1f width %.2f px flux %.1e; LS %s" % ( + p["file"], p["fiber"], p["lam"], p["snr"], p["width"], p["flux"] * 1e-17, + "not covered" if c is None else ", ".join("%s r %s" % (x["type"], x["mag_r"]) for x in c["on"]) or "none")) + # lines fixed to a fibre: where they cluster + fx = [p for p in groups[(2, 1)] if p["fixed"]] + grp = collections.Counter((p["fiber"], int(round(p["lam"] / 20) * 20)) for p in fx) + print("fixed peaks (two-fibre rule): %d, %d at 8 sigma, in %d fibres; largest groups %s" + % (len(fx), sum(1 for p in fx if p["snr"] >= 8), len({p["fiber"] for p in fx}), grp.most_common(6))) + # sensitivity: 6-sigma line flux from each clean peak's flux and S/N + pk = [p for p in groups[(2, 1)]] + thr = np.array([6 * p["flux"] / p["snr"] for p in pk]) * 1e-17 + lam = np.array([p["lam"] for p in pk]) + print("6 sigma line flux: median %.2e, 10-90 per cent %.2e-%.2e; at 8 sigma %.2e" + % (np.median(thr), *np.percentile(thr, [10, 90]), np.median(thr) * 8 / 6)) + for a, b in ((3600, 5000), (5000, 7000), (7000, 9000), (9000, 10400)): + m = (lam >= a) & (lam < b) + print(" %d-%d A: median %.1e (n %d)" % (a, b, np.median(thr[m]), m.sum())) + pc = 3.0857e18 + lam_med = float(np.median(lam)) + for f, label in ((np.median(thr), "6 sigma"), (np.median(thr) * 8 / 6, "8 sigma")): + for dpc in (10, 100, 1000): + dcm = dpc * pc + # diffraction-limited beam of solid angle (lambda/D)^2, D = 10 m + print(" %s, %5d pc: isotropic %.1e W; through 10 m at %.0f A %.1e W" + % (label, dpc, 4 * math.pi * dcm ** 2 * f * 1e-7, lam_med, f * dcm ** 2 * (lam_med * 1e-8 / 1000.0) ** 2 * 1e-7)) + print("injections: " + ", ".join("%s %.2f" % (k, v["recovered"]) for k, v in sorted(inj.items()) if k.startswith("plain"))) + print(" other clean peaks per fibre in the injected plates: %s" % ", ".join( + "%s %.3f" % (k, v["false"] / v["fibres"]) for k, v in sorted(inj.items()) if k.startswith("plain") and k.endswith("_1.0"))) + galaxies(groups[(2, 1)]) + + +def exposures(groups, cp, area, rows): + """Frame-by-frame verdicts of the 8-sigma two-fibre lines left by the other-plate test (data/skyfibre_exposures.json): per sign, galaxy lines as the check, persistent peaks against dips.""" + p = os.path.join(DATA, "skyfibre_exposures.json") + if not os.path.exists(p): + return + ex = json.load(open(p)) + + def verdict(q, sign): + return ex.get("%s %d %.3f %+d" % (q["file"], q["fiber"], q["lam"], sign), {}).get("verdict", "not read") + print("lines read frame by frame: %d" % len(ex)) + rest, held = {}, {} + for sign in (1, -1): + g = groups[(2, sign)] + gal = [q for q in g if q["snr"] >= 8 and not q["fixed"] and q["galaxy"]] + for label, sel in (("at a galaxy's redshift", gal), ("the rest", rest_of(g))): + v = collections.Counter(verdict(q, sign) for q in sel) + print(" %s, %s: %d lines; %s" % ("peaks" if sign > 0 else "dips", label, len(sel), + ", ".join("%s %d" % kv for kv in v.most_common()))) + if sel is gal: + held[sign] = v["persistent"] / max(sum(n for k, n in v.items() if k != "not read"), 1) + rest[sign] = [q for q in rest_of(g) if verdict(q, sign) == "persistent"] + # persistent lines of each sign against their counterparts + out = {} + for sign in (1, -1): + keys = ["%.5f %+.5f" % (q["ra"], q["dec"]) for q in rest[sign]] + have = [k for k in keys if k in cp] + on, off = sum(1 for k in have if cp[k]["on"]), sum(1 for k in have if cp[k]["off"]) + out[sign] = (len(rest[sign]), len(have), on, off) + print(" persistent %s: %d, %d covered by the catalogue, %d with a source at the fibre against %d at the control" + % ("peaks" if sign > 0 else "dips", len(rest[sign]), len(have), on, off)) + n_p, h_p, on_p, off_p = out[1] + n_d, h_d, on_d, off_d = out[-1] + g_p = (on_p - off_p) * n_p / max(h_p, 1) + g_d = (on_d - off_d) * n_d / max(h_d, 1) + exc = (n_p - g_p) - (n_d - g_d) + var = n_p + n_d + (on_p + off_p) * (n_p / max(h_p, 1)) ** 2 + (on_d + off_d) * (n_d / max(h_d, 1)) ** 2 + up = max(exc, 0.0) + 1.645 * math.sqrt(var) + # a steady line persists as the galaxies' lines do, at the injections' recovery for 8 sigma + r8 = (0.560 + (0.741 - 0.560) * (8.0 / 6.0 - 1.0) / 0.5) * held[1] + print(" persistent peaks net of counterparts %.0f against dips %.0f: excess %+.0f +- %.0f, 95 per cent upper limit %.0f lines; " + "galaxy lines persistent %.3f (dips' %.3f), recovery %.2f; fewer than %.0f steady transmitters per deg2" + % (n_p - g_p, n_d - g_d, exc, math.sqrt(var), up, held[1], held[-1], r8, up / (area * r8))) + # strongest persistent peaks without a counterpart + for q in sorted(rest[1], key=lambda q: -q["snr"])[:8]: + c = cp.get("%.5f %+.5f" % (q["ra"], q["dec"])) + v = ex["%s %d %.3f %+d" % (q["file"], q["fiber"], q["lam"], 1)] + gal = SkyCoord(q["ra"], q["dec"], unit="deg").galactic + print(" %s fibre %d %.1f A S/N %.1f: frames %s; LS %s; l %.2f b %+.2f; lines in the spectrum %s" % ( + q["file"], q["fiber"], q["lam"], q["snr"], " ".join("%s:%.1f" % (f[0], f[2]) for f in v["frames"]), + "not covered" if c is None else ", ".join("%s r %s" % (x["type"], x["mag_r"]) for x in c["on"]) or "none", + gal.l.deg, gal.b.deg, " ".join("%.1f(%+.0f,%d)" % (x["lam"], x["sign"] * x["snr"], x["n_shared"]) for x in sorted( + (x for x in rows if x["file"] == q["file"] and x["fiber"] == q["fiber"]), key=lambda x: x["lam"])))) + + +def positions(lines, r=1.5): + """Lines grouped by fibre position, friends of friends within r arcsec.""" + cell = collections.defaultdict(list) + for i, p in enumerate(lines): + cell[(int(p["dec"] * 3600 // r), int(p["ra"] * math.cos(math.radians(p["dec"])) * 3600 // r))].append(i) + root = list(range(len(lines))) + + def find(i): + while root[i] != i: + root[i] = root[root[i]] + i = root[i] + return i + for (a, b), idx in cell.items(): + near = [j for da in (-1, 0, 1) for db in (-1, 0, 1) for j in cell.get((a + da, b + db), ())] + for i in idx: + for j in near: + if i < j and lasers.skyfibre_sep(lines[i], lines[j]) <= r: + root[find(i)] = find(j) + out = collections.defaultdict(list) + for i, p in enumerate(lines): + out[find(i)].append(p) + return list(out.values()) + + +def recurring(rows, groups, cp): + """Positions where one clean line recurs on two or more plate-nights, peaks against dips, and the stack of the most frequent.""" + def nights(v, lam): + return len({q["file"] for q in v if abs(math.log10(q["lam"] / lam)) < 3e-4}) + top = None + for sign in (1, -1): + multi = [v for v in positions([p for p in groups[(2, sign)] if not p["fixed"]]) if len({p["file"] for p in v}) >= 2] + rec = [] + for v in multi: + best = max(v, key=lambda p: nights(v, p["lam"])) + if nights(v, best["lam"]) >= 2: + rec.append((nights(v, best["lam"]), len({p["file"] for p in v}), best, v)) + # a line recurring at one position whose wavelength recurs at another is the sky's + shared = [x for x in rec if any(y is not x and abs(math.log10(y[2]["lam"] / x[2]["lam"])) < 3e-4 for y in rec)] + n8 = sum(1 for n, nn, best, v in rec for p in rest_of(v) if abs(math.log10(p["lam"] / best["lam"])) < 3e-4) + print("%s: positions with clean lines on 2+ plate-nights %d; one line recurring %d (%d of the rest at 8 sigma), " + "at a wavelength recurring at another position %d" + % ("peaks" if sign > 0 else "dips", len(multi), len(rec), n8, len(shared))) + for n, nn, best, v in sorted(rec, key=lambda x: (-x[0], -x[2]["snr"]))[:8]: + print(" %2d of %2d plate-nights (%d of the rest at 8 sigma): %.2f A at RA %.5f Dec %+.5f on plates %s; other lines %s" % ( + n, nn, sum(1 for p in rest_of(v) if abs(math.log10(p["lam"] / best["lam"])) < 3e-4), best["lam"], best["ra"], + best["dec"], ",".join(sorted({p["plate"] for p in v})), + sorted({round(p["lam"], 1) for p in v if abs(math.log10(p["lam"] / best["lam"])) >= 3e-4})[:6])) + if sign > 0: + top = max(rec, key=lambda x: x[0]) + others = [p for n, nn, best, v in sorted(rec, key=lambda x: -x[0])[2:] for p in rest_of(v) + if abs(math.log10(p["lam"] / best["lam"])) < 3e-4] + have = [cp["%.5f %+.5f" % (p["ra"], p["dec"])] for p in others if "%.5f %+.5f" % (p["ra"], p["dec"]) in cp] + print(" the other %d positions: %d recurring lines of the rest at 8 sigma, %d covered, %d with a source at the fibre " + "against %d at the control" % (len(rec) - 2, len(others), len(have), sum(1 for x in have if x["on"]), + sum(1 for x in have if x["off"]))) + n, nn, best, v = top + plates = sorted({p["plate"] for p in rows if lasers.skyfibre_sep(p, best) <= 1.5}) + stack_report(stack_position(best["ra"], best["dec"], plates), best["lam"]) + + +def stack_position(ra, dec, plates, r=1.5): + """Inverse-variance stack of every spPlate of the plates with a sky fibre within r arcsec of (ra, dec), cached in data/skyfibre_recurring.json.""" + path = os.path.join(DATA, "skyfibre_recurring.json") + if os.path.exists(path): + return json.load(open(path)) + files = [] + for plate in plates: + listing = lasers.skyfibre_get(lasers.skyfibre_BASE + "%s/" % plate).decode("utf-8", "replace") + files += ["%s/%s" % (plate, x) for x in sorted(set(re.findall(r'href="(spPlate-%s-\d+\.fits)"' % plate, listing)))] + + def one(name): + url = lasers.skyfibre_BASE + name + try: + hd = lasers.skyfibre_hdus(url, 7) + pm = lasers.skyfibre_plugmap(url, hd) + sep = np.hypot((np.asarray(pm["RA"], float) - ra) * math.cos(math.radians(dec)), np.asarray(pm["DEC"], float) - dec) * 3600 + i = int(np.argmin(sep)) + if sep[i] > r or str(pm["OBJTYPE"][i]).strip().upper() != "SKY": + return None + h0 = hd[0][0] + fl, iv = lasers.skyfibre_rows(url, [(hd[0][1], [i]), (hd[1][1], [i])], h0["NAXIS1"] * 4, ">f4") + return dict(file=name.split("/")[1], fiber=int(pm["FIBERID"][i]), start=int(round(h0["COEFF0"] / 1e-4)), + flux=fl[i].astype(float), ivar=iv[i].astype(float)) + except Exception as e: + print(" %s: %s" % (name, repr(e)[:100])) + return None + got = [g for g in core.pmap(one, files, threads=4) if g] + lo = min(g["start"] for g in got) + F = np.zeros(max(g["start"] + len(g["flux"]) for g in got) - lo) + W = np.zeros_like(F) + for g in got: + ok = g["ivar"] > 0 + sl = slice(g["start"] - lo, g["start"] - lo + len(g["flux"])) + F[sl] += np.where(ok, g["flux"] * g["ivar"], 0.0) + W[sl] += np.where(ok, g["ivar"], 0.0) + out = dict(ra=ra, dec=dec, n_files=len(files), spectra=[[g["file"], g["fiber"]] for g in got], start=lo, + flux=[round(float(x), 5) for x in np.where(W > 0, F / np.maximum(W, 1e-30), 0.0)], ivar=[round(float(x), 4) for x in W]) + json.dump(out, open(path, "w")) + return out + + +# vacuum rest wavelengths: each reading of the stacked line and the lines it implies inside the spectrum +READINGS = {"Ly alpha": (1215.67, (("N V", 1240.81), ("C IV", 1549.48), ("He II", 1640.42), ("C III]", 1908.73))), + "C IV": (1549.48, (("Ly alpha", 1215.67), ("He II", 1640.42), ("C III]", 1908.73))), + "Mg II": (2799.94, (("[O II]", 3728.49), ("H beta", 4862.68), ("[O III]", 5008.24))), + "[O II]": (3728.49, (("H beta", 4862.68), ("[O III]", 5008.24), ("H alpha", 6564.61)))} + + +def stack_report(st, lam0): + """The stacked line's centroid, width, flux and red share, and each reading's implied lines measured in the stack.""" + lam = 10 ** ((st["start"] + np.arange(len(st["flux"]))) * 1e-4) + f, w = np.array(st["flux"]), np.array(st["ivar"]) + good = w > 0 + s = f * np.sqrt(w) + scale = 1.4826 * np.median(np.abs(s[good] - np.median(s[good]))) + j = int(np.argmin(np.abs(lam - lam0))) + j += int(np.argmax(f[j - 3:j + 4])) - 3 + + def cont(i): + sd = np.r_[i - 40:i - 8, i + 9:i + 41] + return float(np.median(f[sd][good[sd]])) + c = cont(j) + k = np.arange(j - 7, j + 8) + d, dl = f[k] - c, lam[k] * math.log(10) * 1e-4 + flux, eflux = float(np.sum(d * dl)), scale * float(np.sqrt(np.sum(dl ** 2 / w[k]))) + half = d[7] / 2 + a = next(i for i in range(7, -1, -1) if d[i] < half) + b = next(i for i in range(7, 15) if d[i] < half) + x0 = lam[k][a] + (half - d[a]) / (d[a + 1] - d[a]) * (lam[k][a + 1] - lam[k][a]) + x1 = lam[k][b - 1] + (d[b - 1] - half) / (d[b - 1] - d[b]) * (lam[k][b] - lam[k][b - 1]) + cen = float(np.sum(lam[k] * d) / np.sum(d)) + red, blue = float(np.sum((d * dl)[8:])), float(np.sum((d * dl)[:7])) + eside = scale * float(np.sqrt(np.sum(dl[8:] ** 2 / w[k][8:]))) + print("stack of %d spectra (%d spPlate files of the plates): %.2f A, centroid %.2f, peak %.2f, FWHM %.2f A (%.0f km/s), " + "flux %.2e +- %.1e erg/s/cm2 (S/N %.0f), red of the peak %.2e against blue %.2e (+- %.1e each)" + % (len(st["spectra"]), st["n_files"], lam[j], cen, f[j], x1 - x0, (x1 - x0) / cen * 2.998e5, flux * 1e-17, eflux * 1e-17, + flux / eflux, red * 1e-17, blue * 1e-17, eside * 1e-17)) + sig = (x1 - x0) / 2.3548 + for name, (rest, implied) in READINGS.items(): + z = cen / rest - 1 + out = [] + for line, lr in implied: + lc = lr * (1 + z) + i = int(np.argmin(np.abs(lam - lc))) + if lc < lam[0] + 50 or lc > lam[-1] - 50 or i < 45 or i > len(lam) - 46: + out.append("%s outside" % line) + continue + kk = np.arange(i - 6, i + 7) + g = np.exp(-0.5 * ((lam[kk] - lc) / sig) ** 2) + amp = float(np.sum(g * (f[kk] - cont(i)) * w[kk]) / np.sum(g ** 2 * w[kk])) + eamp = scale / math.sqrt(float(np.sum(g ** 2 * w[kk]))) + out.append("%s %.0f A %+.2f +- %.2f of the line" % (line, lc, amp * sig * math.sqrt(2 * math.pi) / flux, + eamp * sig * math.sqrt(2 * math.pi) / flux)) + print(" as %s at z %.4f: %s" % (name, z, "; ".join(out))) + + +def galaxies(peaks): + """Galaxy table: two-fibre-rule fibres whose clean peaks pass skyfibre_galaxy, with Legacy Surveys and DESI matches.""" + g = json.load(open(os.path.join(DATA, "skyfibre_galaxies.json"))) + keep = {(p["file"], p["fiber"]): p["galaxy"] for p in peaks if p["galaxy"] and not p["fixed"]} + loose = {(p["file"], p["fiber"]): p["galaxy_loose"] for p in peaks if p["galaxy_loose"] and not p["fixed"]} + cpd = json.load(open(os.path.join(DATA, "skyfibre_counterparts.json"))) + gl = [] + for x in g["galaxies"]: + k = ("spPlate-%d-%d.fits" % (x["plate"], x["mjd"]), x["fiber"]) + if k in keep: + z, lines = keep[k] + # Legacy Surveys sources from the viewer catalogue (DR9 north, DR10 south) + c = cpd.get("%.5f %+.5f" % (x["ra"], x["dec"])) + ls = sorted(c["on"], key=lambda s: s["sep"]) if c else None + gl.append(dict(x, z=z, lines=lines, ls=ls or [], covered=c is not None)) + gl.sort(key=lambda x: x["z"]) + dropped = collections.Counter("+".join(v[1]) for k, v in loose.items() if k not in keep) + print("redshift test: %d fibres by skyfibre_lines, %d by skyfibre_galaxy (in the table file %d); set aside %s" + % (len(loose), len(keep), len(gl), dropped.most_common())) + gal = [x for x in gl if x["z"] > 0.01] + zs = np.array([x["z"] for x in gal]) + print("galaxies %d (z > 0.01), Galactic %d; z %.3f-%.3f median %.3f; quartiles %s" + % (len(gal), len(gl) - len(gal), zs.min(), zs.max(), np.median(zs), np.percentile(zs, [25, 75]).round(3))) + print(" lines:", collections.Counter(n for x in gal for n in x["lines"]).most_common()) + o3 = [x["oiii_flux"] for x in gal if x["oiii_flux"]] + print(" [OIII]5007 fluxes: n %d median %.1e range %.1e-%.1e" % (len(o3), np.median(o3), min(o3), max(o3))) + withls = [x for x in gal if x["ls"]] + r = np.array([float(x["ls"][0]["mag_r"]) for x in withls if x["ls"][0]["mag_r"] not in (None, "", "nan", "inf")]) + print(" LS counterparts %d of %d, %d outside the catalogue; types %s; r median %.2f range %.2f-%.2f" % ( + len(withls), len(gal), sum(1 for x in gal if not x["covered"]), + collections.Counter(x["ls"][0]["type"] for x in withls).most_common(), np.median(r), r.min(), r.max())) + print(" DESI redshifts within 1.5 arcsec: %d" % sum(1 for x in gal if x["desi"])) + red = [x for x in gal if all(lasers.skyfibre_LINES[n] * (1 + x["z"]) > 8300 for n in x["lines"])] + print(" galaxies whose lines all lie above 8300 A: %d (%s)" % (len(red), ", ".join("+".join(x["lines"]) for x in red))) + o3pairs = [x for x in gal if set(x["lines"]) == {"[OIII]4959", "[OIII]5007"}] + ratios = [] + for x in o3pairs: + ps = [p for p in peaks if p["file"] == "spPlate-%d-%d.fits" % (x["plate"], x["mjd"]) and p["fiber"] == x["fiber"]] + f = {n: max((p["flux"] for p in ps if abs(p["lam"] / (lasers.skyfibre_LINES[n] * (1 + x["z"])) - 1) < 4e-4), + default=None) for n in ("[OIII]4959", "[OIII]5007")} + if f["[OIII]4959"] and f["[OIII]5007"]: + ratios.append(f["[OIII]5007"] / f["[OIII]4959"]) + print(" found by the [O III] doublet alone: %d, flux ratios 5007/4959 %s" % ( + len(o3pairs), ", ".join("%.1f" % r for r in sorted(ratios)))) + twice = [(a, b) for i, a in enumerate(gl) for b in gl[i + 1:] + if abs(a["dec"] - b["dec"]) < 2 / 3600 and abs(a["ra"] - b["ra"]) * math.cos(math.radians(a["dec"])) < 2 / 3600] + for a, b in twice: + print(" seen twice: %d-%d-%d and %d-%d-%d, z %.4f and %.4f" % (a["plate"], a["mjd"], a["fiber"], b["plate"], + b["mjd"], b["fiber"], a["z"], b["z"])) + rows = [] + for x in gl: + ls = x["ls"][0] if x["ls"] else None + if ls: + r = float(ls["mag_r"]) if ls["mag_r"] not in (None, "") else float("nan") + src = "%s, $r=%.1f$" % (TYPE.get(ls["type"], ls["type"]), r) if np.isfinite(r) else TYPE.get(ls["type"], ls["type"]) + else: + src = "--" if x["covered"] else "outside" + rows.append("%d-%d-%d & %.5f & %+.5f & %.4f & %s & %.1f & %s\\\\" % ( + x["plate"], x["mjd"], x["fiber"], x["ra"], x["dec"], x["z"], ", ".join(LINE[n] for n in x["lines"]), x["snr"], + src)) + open(os.path.join(HERE, "table_galaxies.tex"), "w", encoding="utf-8", newline="\n").write("\n".join(rows) + "\n") + print("table rows", len(rows)) + + +if __name__ == "__main__": + from setitools.core import quiet_warnings + quiet_warnings() + main() diff --git a/papers/sky_fibres/sky_fibres.pdf b/papers/sky_fibres/sky_fibres.pdf new file mode 100644 index 0000000000000000000000000000000000000000..29c49a78461366cf2e06496b7c09e622e58b65ce Binary files /dev/null and b/papers/sky_fibres/sky_fibres.pdf differ diff --git a/papers/sky_fibres/sky_fibres.tex b/papers/sky_fibres/sky_fibres.tex new file mode 100644 index 0000000000000000000000000000000000000000..080d70bb6721e9b99a78d38d49de3ec11d1c4fa2 --- /dev/null +++ b/papers/sky_fibres/sky_fibres.tex @@ -0,0 +1,534 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{Lines in the Blank Sky: a Search of the SDSS Sky Fibres\\ for Laser Emission, and the Galaxies Behind Them} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +Every BOSS and eBOSS plate of the Sloan Digital Sky Survey places some eighty fibres on +positions with no catalogued source, to measure the sky. A point source of line emission +too faint in broad bands for the imaging that chose those positions, a transmitter on +its own or beside a star too faint to catalogue, would appear in one of them as an +unresolved emission line that the plate's other sky fibres lack. We search the +$381{,}943$ sky-fibre spectra of the $3853$ plates of DR17, from $3600$ to +$10400$\,\AA\ at a resolution near $2000$, for such lines: matched-filter peaks at +$6\sigma$, off the airglow lines, as narrow as the instrument and absent from the plate's +other sky fibres. Absorption-like dips of the same shape, which no transmitter makes, are +put through every test the peaks are and serve as the null. A line that one fibre holds +at one wavelength at other positions on other plates is the detector's: $762$ of $3217$ +clean peaks and $1813$ of $4108$ dips. Two or more peaks at one redshift, at the flux +ratios a galaxy's spectrum fixes, mark $156$ fibres, where the same test finds $4$ among +the dips and $12\pm4$ among shuffled peaks: $154$ galaxies at $z=0.02$ to $1.07$, six of +them seen twice on different plates, $122$ with a Legacy Surveys DR10 source within +$1.5''$ of median $r=23.1$, and two fibres of Galactic nebular lines. At $8\sigma$, with +the spectra that hold clean lines of both signs set aside, $485$ peaks and $336$ dips +remain. Legacy Surveys sources lie within $1.5''$ of $38$ per cent of the peaks against +$4.4$ per cent at positions $30''$ north, and of the dips less often than at those +positions, so about $160$ of the peaks are single lines of galaxies, and the other $323$ +fall short of the $336$ dips. Read in each exposure, $359$ peaks and $241$ dips hold +through the frames, and net of their counterparts the $202$ persistent peaks fall short of +the $253$ persistent dips. The line that recurs most often at one sky position, at +$4732.6$\,\AA\ on $54$ plate-nights over seven years, is resolved and alone in the stack +of the $94$ spectra there: Ly$\alpha$ of a galaxy at $z=2.893$. The median line flux at +$8\sigma$, $8\times10^{-17}$\,\flux, is that of a transmitter aimed at Earth through a +$10$\,m aperture at $37$\,W from $10$\,pc and $3.7$\,kW from $100$\,pc, and with $0.68$ +of such lines recovered, the $0.093$\,deg$^2$ the fibres cover bound such transmitters to +fewer than about $850$ per square degree. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Spectroscopic searches for laser emission look for an unresolved line in the spectrum +of a star~\cite{ReinesMarcy2002,TellisMarcy2017}, on the reasoning that a transmitter +lives near one. A transmitter need not: one in free space, or beside a star too faint +for any catalogue, has no spectrum of its own taken unless a fibre happens to fall on +it. Large fibre surveys do place fibres on empty sky, to measure the sky they subtract +from every other spectrum, and the Sloan Digital Sky Survey's BOSS~\cite{Dawson2013} and +eBOSS~\cite{Dawson2016} spectrographs~\cite{Smee2013} recorded some eighty such +spectra on each of thousands of plates. Their positions were chosen to hold nothing in +the survey's imaging, so a source there is fainter in broad bands than that imaging +reaches, and a line from it stands alone. + +The same spectra catch what the imaging missed. A galaxy whose light is mostly in a few +emission lines is faint in broad bands and bright in its lines, and a sky fibre that +lands on one records them at one redshift; such lines are the commonest astrophysical +source a laser search of blank sky must recognise. This paper searches every sky fibre +of DR17's BOSS and eBOSS plates for unresolved emission lines, separates the galaxies by +their redshifts and by the sources the imaging holds at the fibres, and measures the rest, +in the combined spectra and in each exposure, against the same search for dips, put +through the same tests. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item A search of $381{,}943$ sky-fibre spectra on $3853$ plates for unresolved emission +lines absent from the plate's other sky fibres, with absorption-like dips put through +every test as the null. +\item A catalogue of the $154$ galaxies whose lines the search finds at one redshift, +with their Legacy Surveys counterparts. +\item A bound on transmitters in blank sky from the excess of lines over the null, drawn +again on the lines that hold in every exposure, and the per-line data, peaks and dips, +from which every number here follows. +\item The lines that recur at one sky position over several plate-nights, among them a +Ly$\alpha$ emitter at $z=2.893$ found by its recurrence alone. +\end{enumerate} + +% ============================================================================= +\section{Data and method}\label{sec:method} +% ============================================================================= + +\emph{Data.} DR17~\cite{Abdurrouf2022} holds, for each BOSS and eBOSS plate and night, +an spPlate file with the flux, inverse variance and sky-model spectrum of every fibre on +a common grid of $10^{-4}$ in $\log_{10}\lambda$, and the plug map that names each +fibre's target type. The fibres of type SKY give the sky spectra, whose rows we read from +the archive by byte range, one plate at a time: $4131$ files of the $3853$ plates. + +\emph{Detection.} Each sky spectrum is scaled to its own robust noise: the flux times +the square root of the inverse variance, divided by $1.4826$ times its median absolute +deviation, with pixels the pipeline masks given zero weight. A filter matched to a +Gaussian of $\sigma=1.1$ pixels, the instrumental profile, gives the significance of a +line at each pixel, and a peak at $6\sigma$ or more is kept unless one of four tests sets +it aside: a masked pixel within one of it; an airglow line, where the plate's median +sky model exceeds three times its running continuum, widened by two pixels; two or more +other sky fibres of the same plate at $3\sigma$ within a pixel, which marks a residual of +the sky subtraction; or a width, from the peak's second moment, outside $0.6$ to $2$ +times the profile. A peak that passes all four is clean. The same search run on the +negated spectra gives dips of the same shape. Each peak and dip that passes the first, +second and fourth tests is kept with the number of other fibres at $3\sigma$ beside it, +so the rule of one other fibre, stricter and less complete, is applied to the same +detections for comparison. + +\emph{Tests after detection.} Three tests act on the clean lines of each sign alike. A +line that the same fibre holds within three pixels on another plate, at a sky position +more than $1.5''$ away, belongs to the detector; plates of one field can return a fibre +to the same position, and a line it holds there is the sky's. Two or more lines of one +fibre within $4\times10^{-4}(1+z)$ of the vacuum wavelengths of +[O\,\textsc{ii}]~$3727$, H$\beta$, [O\,\textsc{iii}]~$4959$ and $5007$, H$\alpha$, +[N\,\textsc{ii}]~$6583$, [S\,\textsc{ii}]~$6716$ and $6731$ or Ly$\alpha$ at one redshift +above $-0.002$, which admits Galactic nebulae, mark a galaxy, provided that one of them is +[O\,\textsc{ii}], H$\beta$, [O\,\textsc{iii}]~$5007$ or Ly$\alpha$, or H$\alpha$ beside +one of those, and that [O\,\textsc{iii}]~$4959$ appears only with $5007$ wherever $5007$ +falls in the spectrum, at a flux ratio $5007/4959$ of $1.5$ to $5$ about the $2.98$ of the +transition probabilities. The dips, which no galaxy makes, measure how often residuals meet +this test by chance. A spectrum that holds clean lines of both signs outside the first test +is defective, and its lines of either sign are set aside. Each galaxy's position is +matched within $1.5''$ to the Legacy Surveys DR10 catalogue~\cite{Dey2019} and to DESI +DR1's redshifts~\cite{DESI2025} through the Astro Data Lab~\cite{Fitzpatrick2014}. + +\emph{Counterparts.} A galaxy too faint in its other lines shows one line, and the +imaging may hold it. For every line at $8\sigma$ that the tests leave, peaks and dips +alike, the Legacy Surveys DR10 sources within $1.5''$ of the fibre and of the position +$30''$ north of it are read from the Astro Data Lab and the Legacy Survey viewer's +catalogue service; the excess at the fibres over the northern positions counts the lines +that come from catalogued sources. + +\emph{Exposures.} An spPlate spectrum combines several exposures, each recorded in a +calibrated frame of the blue camera and one of the red. Every line at $8\sigma$ that the +tests leave, and every galaxy line at $8\sigma$, is measured again in each frame that +covers it, with a Gaussian of the frames' instrumental profile, $\sigma=1.2$ pixels, +placed within three pixels of the line's wavelength. A line that one frame carries, at +$5\sigma$ or more with over $80$ per cent of the summed squared significance, is a cosmic +ray or a detector event; one at $4\sigma$ in one camera and below $2\sigma$ in the other, +where the cameras overlap, is that camera's; one at $2.5\sigma$ or more in two or more +frames is persistent; the rest are unclear, and a line that fewer than two frames cover +is left unjudged. + +\emph{Recurring positions.} A plate observed on several nights keeps its sky fibres where +they are, and later plates of a field return to some of its positions. Clean lines at one +position, friends of friends within $1.5''$, recur when they fall on two or more +plate-nights within $3\times10^{-4}$ in $\log\lambda$; a line that recurs at the same +wavelength at another position as well is the sky's. The dips, counted the same way, are +the null. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +\subsection{Peaks and dips} + +The $381{,}943$ sky spectra hold $115{,}169$ emission-like peaks at $6\sigma$ and +$75{,}591$ absorption-like dips. The four tests leave $3217$ peaks and $4108$ dips, of +which $970$ and $1479$ reach $8\sigma$. Table~\ref{tab:counts} follows both signs through +the tests after detection, under the two-fibre rule and the one-fibre rule. + +\begin{table}[t] +\centering\small +\caption{Peaks and dips at each stage, under the rule of two other fibres and of one. +Each later row applies its test to both signs; the counterpart rows give the lines with +a Legacy Surveys DR10 source within $1.5''$ at the fibre and at the position $30''$ +north, among those the catalogue covers, and the persistent rows the lines of the +two-fibre rule that hold in two or more of the exposures' frames.} +\label{tab:counts} +\begin{tabular}{lrrrr} +\toprule + & \multicolumn{2}{c}{Two other fibres} & \multicolumn{2}{c}{One other fibre} \\ + & Peaks & Dips & Peaks & Dips \\ +\midrule +Clean at $6\sigma$ & $3217$ & $4108$ & $1633$ & $1874$ \\ +\quad fixed to a fibre & $762$ & $1813$ & $242$ & $847$ \\ +\quad at a galaxy's redshift & $369$ & $22$ & $144$ & $8$ \\ +\quad with lines of both signs & $30$ & $38$ & $17$ & $14$ \\ +\quad the rest & $2056$ & $2235$ & $1230$ & $1005$ \\ +Clean at $8\sigma$ & $970$ & $1479$ & $521$ & $783$ \\ +\quad fixed to a fibre & $287$ & $1114$ & $119$ & $537$ \\ +\quad at a galaxy's redshift & $188$ & $19$ & $78$ & $6$ \\ +\quad with lines of both signs & $10$ & $10$ & $9$ & $4$ \\ +\quad the rest & $485$ & $336$ & $315$ & $236$ \\ +\quad\quad source at the fibre & $181$ & $10$ & $138$ & $6$ \\ +\quad\quad source $30''$ north & $21$ & $28$ & $12$ & $15$ \\ +\quad\quad net of counterparts & $323$ & $354$ & $188$ & $245$ \\ +\quad\quad persistent & $359$ & $241$ & & \\ +\quad\quad\quad net of counterparts & $202$ & $253$ & & \\ +\bottomrule +\end{tabular} +\end{table} + +\subsection{Lines fixed to a fibre} + +A line that one fibre holds on several plates at one wavelength and at different +positions belongs to the detector, not the sky: $762$ clean peaks, $287$ at $8\sigma$, in +$131$ fibres, and $1813$ dips, $1114$ at $8\sigma$, recur in the same fibre within three +pixels on other plates. Fibre $832$ near $9280$\,\AA\ carries $42$ of the peaks, on the red +camera where the airglow forest is densest, and fibres $10$ at $6600$\,\AA\ and $210$ at +$4460$\,\AA\ carry $19$ and $17$. The test within a plate cannot find these, since each +plate holds the fibre once, and three quarters of the dips at $8\sigma$ are of this kind. +The condition on position keeps on the sky $36$ peaks and one dip that a fibre holds where +a later plate of the field returns it to the same position. + +\subsection{Galaxies} + +The redshift test marks $156$ fibres, against $11.6\pm3.5$ when the peaks' wavelengths +are shuffled among the $325$ fibres that hold two or more, each fibre keeping its count, +over $200$ realisations, and $4$ among the dips. Without its requirements on H$\alpha$ +and the [O\,\textsc{iii}] ratio it would mark $187$, and $30$ among the dips: H$\alpha$ +with [N\,\textsc{ii}] or [S\,\textsc{ii}] alone ($16$ fibres among the peaks and $11$ +among the dips), [O\,\textsc{iii}]~$4959$ without $5007$ ($11$ and $6$) and the +[O\,\textsc{iii}] doublet at a ratio outside $1.5$ to $5$ ($4$ and $9$), the forms the +residuals of the sky subtraction take. Some of the fibres set aside repeat features at +the same observed wavelengths on other plates, at $9842$ and $10097$\,\AA, $9842$ and +$9886$\,\AA\ and $9906$ and $10113$\,\AA\ among others, the residuals the subtraction +leaves between the strong OH lines of the red camera. + +Two fibres hold lines at zero redshift, the nebular emission of the Galaxy where a fibre +crosses it. The other $154$ are galaxies (Table~\ref{tab:galaxies}) at $z=0.016$ to +$1.069$, median $0.441$ and quartiles $0.33$ and $0.64$, found by +[O\,\textsc{iii}]~$5007$ in $139$, [O\,\textsc{ii}] in $71$, H$\alpha$ in $56$, +[O\,\textsc{iii}]~$4959$ in $35$, H$\beta$ in $32$ and [S\,\textsc{ii}] and +[N\,\textsc{ii}] in one each. The $19$ found by the [O\,\textsc{iii}] doublet alone have +flux ratios $5007/4959$ of $1.8$ to $4.1$, median $2.7$, about the $2.98$ of the +transition probabilities. The twelve whose lines all lie above $8300$\,\AA, in the red +forest, are each H$\beta$ with [O\,\textsc{iii}] or the [O\,\textsc{iii}] doublet. The +[O\,\textsc{iii}]~$5007$ fluxes run from $3.0\times10^{-17}$ to +$9.8\times10^{-16}$\,\flux\ with a median of $8.5\times10^{-17}$. Six galaxies were +observed on two plates or nights, in different fibres, and give the same lines and +redshift each time. + +One hundred and twenty-two of the $154$ have a Legacy Surveys DR10 source within +$1.5''$, of $r=21.8$ to $24.5$ and median $23.1$: $56$ fitted as round exponentials, $38$ +as point sources, $24$ as exponentials, three as de Vaucouleurs profiles and one as a +S\'ersic profile. The $32$ without a source lie below the catalogue's depth, so their +lines are all the imaging and spectroscopy know of them. None has a DESI DR1 redshift +within $1.5''$: DESI's targets are chosen from the same imaging, and the sky fibres' +galaxies lie below the selection. + +\subsection{What remains} + +At $8\sigma$, $10$ peaks and $10$ dips lie in spectra that hold clean lines of both signs, +and $485$ peaks and $336$ dips are neither fixed to a fibre, at a galaxy's redshift nor in +such a spectrum. They are single lines in single fibres: a galaxy whose second line falls +on an airglow line, below threshold or beyond the spectrum, a residual of the sky +subtraction, or a transmitter would each appear so. Legacy Surveys sources lie within +$1.5''$ of $181$ of the $480$ peaks the catalogue covers against $21$ at positions $30''$ +north, and of $10$ of the $330$ dips against $28$; scaled to every line, $162$ of the +peaks are single lines of galaxies the imaging catalogues, while the dips fall at +catalogued sources less often than at random positions. Net of the counterparts, $323$ +peaks remain against the $336$ dips, or $354$ with the dips' shortfall at sources +restored, so the peaks fall short of the dips by $13$ to $31$, with an error of $33$. +Under the one-fibre rule the same counts give $188$ peaks against $236$ to $245$ dips. + +The excess of peaks before the counterparts are counted lies at widths of $1.1$ to +$1.7$ pixels, the instrumental profile and a little wider, $210$ peaks against $101$ +dips, where a galaxy's line falls; below $0.9$ pixels, where a cosmic ray the pipeline +leaves unmasked would fall, $10$ peaks lie against $13$ dips. The width test alone does +not set aside a single-pixel spike, since the second moment of the positive part of the +profile carries the noise beside it: in the package's end-to-end test a one-pixel spike +at $16\sigma$ on synthetic noise passes at a width of $0.82$ pixels. The dips' tail is +the longer, $47$ above $16\sigma$ against $27$ peaks, many of them where the blue and +red cameras' spectra are joined near $6000$\,\AA. Between $6$ and $8\sigma$ the dips +outnumber the peaks, $1899$ against $1571$, so the residuals do not make the two signs +equally at low significance, and the comparison is drawn at $8\sigma$, where they do to +within the counts. + +\subsection{Exposure by exposure} + +Read in the frames of their exposures, $179$ of the $188$ galaxy lines at $8\sigma$ are +persistent, seven unclear and two carried by one exposure or one camera, as lines on the +sky must be, while four of the $19$ dips at a galaxy's redshift are. Of the $485$ peaks +that remain, $359$ are persistent, $92$ unclear, $25$ carried by one exposure and one by +one camera, and eight lie on fewer than two frames; of the $336$ dips, $241$ are +persistent, $35$ unclear, $37$ carried by one exposure and $16$ by one camera, and seven +lie on fewer than two frames. Legacy Surveys sources lie within $1.5''$ of $175$ of the +$358$ persistent peaks the catalogue covers against $18$ at the control positions, and of +$7$ of the $236$ persistent dips against $19$, so net of the counterparts $202$ persistent +peaks stand against $253$ persistent dips, $52\pm29$ short. + +The six strongest peaks that remain, at $36$ to $52\sigma$, have no Legacy Surveys source. +Four are carried by one exposure and one lies on a single frame. The sixth, at +$4961.4$\,\AA\ in fibre $562$ of plate $5294$, is [O\,\textsc{iii}]~$4959$ of the +planetary nebula Abell~31 (PN~G219.1$+$31.2), whose spectrum fills the fibre from +[Ne\,\textsc{iii}]~$3869$ to [S\,\textsc{iii}]~$9531$ at zero redshift: its brighter lines +reach $3\sigma$ in two or more of the plate's other sky fibres and are set aside as shared, +the sky fibres off the nebula hold them as dips where the sky model took in its light, and +five fainter lines, H$\gamma$, [O\,\textsc{iii}]~$4959$, [Ar\,\textsc{iii}]~$7136$ and +[S\,\textsc{iii}]~$9069$ and $9531$, remain among the peaks. + +\subsection{Lines that recur at one position} + +Clean lines fall on two or more plate-nights at one position at $53$ positions among the +peaks and $28$ among the dips. One line recurs at $37$ of the peak positions and at three +of the dip positions, and the recurring peaks are $70$ of the $485$ at $8\sigma$, against +three dips. Five of the $37$, all between $7204$ and $7218$\,\AA, recur at another position +as well and are the sky's. + +The line found most often lies at RA $213.5584^\circ$, Dec $+53.6108^\circ$ in the field +of the SDSS reverberation-mapping project~\cite{Shen2015}, where plates $7338$, $7339$ and +$7340$, observed on many nights, and three others put a sky fibre in $94$ spectra between +2013 and 2020. A line at $4732.6$\,\AA\ is detected in $81$ of them, clean in $54$ and +among the peaks that remain at $8\sigma$ in $41$, with no Legacy Surveys source at the +fibre. The $94$ spectra stacked by inverse variance hold it at +$52\sigma$, centred at $4732.7$\,\AA\ with a flux of $8.5\times10^{-17}$\,\flux\ and a +width of $287$\,km\,s$^{-1}$ against the $179$\,km\,s$^{-1}$ of the instrumental profile, +and no other line. Read as [O\,\textsc{ii}] at $z=0.269$, it puts H$\beta$, +[O\,\textsc{iii}]~$5007$ and H$\alpha$ at $6172$, $6357$ and $8333$\,\AA, where the stack +holds $-0.02$, $0.00$ and $0.00$ of its flux with errors of $0.01$, while a star-forming +galaxy's H$\alpha$ is as bright as its [O\,\textsc{ii}] or brighter. Read as +C\,\textsc{iv} at $z=2.054$, it puts He\,\textsc{ii} and C\,\textsc{iii}] where the stack +holds $-0.01$ and $0.01\pm0.01$, and read as Mg\,\textsc{ii} at $z=0.690$, it puts +[O\,\textsc{ii}] and [O\,\textsc{iii}] where the stack holds $-0.06\pm0.03$ and +$0.05\pm0.02$; an active nucleus would show those lines, and its Mg\,\textsc{ii} is +broad. Read as Ly$\alpha$ at $z=2.893$, it puts N\,\textsc{v}, C\,\textsc{iv}, +He\,\textsc{ii} and C\,\textsc{iii}] where the stack holds $0.00$ to $0.01\pm0.01$, lines +that star-forming galaxies at $z\approx3$ show at a few per cent of +Ly$\alpha$~\cite{Shapley2003}, and its intrinsic width, about $220$\,km\,s$^{-1}$, is that +of a Ly$\alpha$ emitter: a galaxy at $z=2.893$ below the imaging's depth, resolved where a +transmitter's line is not. + +The second, [O\,\textsc{iii}]~$5007$ at $7775.0$\,\AA, recurs at RA $29.4755^\circ$, Dec +$+27.5883^\circ$ on all seven plate-nights of plates $7691$ and $10000$ that hold a clean +line there, with H$\beta$ beside it on one, which places it in +Table~\ref{tab:galaxies} at $z=0.5525$. The other $35$ positions repeat a line on two or +three plate-nights, and $15$ of their $26$ lines at $8\sigma$ have a Legacy Surveys source +within $1.5''$ against one at the control positions. + +\subsection{Sensitivity} + +The line flux at the $6\sigma$ threshold, read from each clean peak's flux and +significance, has a median of $6.0\times10^{-17}$\,\flux\ and a $10$--$90$ per cent +range of $3.4\times10^{-17}$ to $2.7\times10^{-16}$: $6.2\times10^{-17}$ from $3600$ to +$5000$\,\AA, $5.0\times10^{-17}$ from $5000$ to $7000$, $4.8\times10^{-17}$ from $7000$ +to $9000$ and $1.5\times10^{-16}$ beyond $9000$\,\AA, where the airglow lines crowd. At +$8\sigma$ the median is $8.0\times10^{-17}$\,\flux. An isotropic source giving that flux +has a luminosity of $9.5\times10^{16}$\,W at $10$\,pc, $9.5\times10^{18}$\,W at +$100$\,pc and $9.5\times10^{20}$\,W at $1$\,kpc, and a transmitter aimed at Earth through +a diffraction-limited $10$\,m aperture at the median wavelength of $7013$\,\AA\ needs +$37$\,W, $3.7$\,kW and $370$\,kW; its beam is $0.14$\,au wide at $10$\,pc and $1.4$\,au +at $100$\,pc, so within $100$\,pc it must be held on the Earth's position at arrival, +and beyond it a beam on the Sun covers the Earth as well. + +Lines of the instrumental profile injected into the sky fibres of $40$ plates spread +through the list, one per fibre at a random unmasked pixel off the airglow lines and +$1727$ at each strength, are recovered as clean peaks under the two-fibre rule in $56$ +per cent of cases at the threshold and $70$ to $74$ per cent at $1.5$ to $5$ times it, +and under the one-fibre rule in $30$ and $36$ to $38$ per cent; the loss is the test +against the other fibres, whose residuals reach $3\sigma$ within a pixel of a given +position in some fibre often enough to read a line as shared. On synthetic plates of +white noise the same detector recovers lines at $10\sigma$ in $99$ and $84$ per cent of +cases under the two rules, so the loss in the data is the residuals'. At $8\sigma$, one +third above the threshold, the two-fibre rule recovers about $0.68$ of lines. + +The fibres are $2''$ across and cover $0.093$\,deg$^2$ in all, so the search bounds the +density of transmitters on the sky rather than any chosen star. The excess of peaks over +dips at $8\sigma$, below zero with an error of $33$, puts the number of transmitter lines +below $54$ at $95$ per cent confidence, the larger of zero and the excess plus $1.645$ +times its error, and with $0.68$ of lines recovered, fewer than about $850$ transmitters +per square degree give lines above $8\times10^{-17}$\,\flux\ at these wavelengths, +$3.5\times10^{7}$ over the sky. A transmitter that shines through a plate's exposures +persists in its frames as $95$ per cent of the galaxies' lines do, which leaves $0.65$ of +its lines recovered at $8\sigma$, and the persistent peaks, $52\pm29$ short of the +persistent dips, put fewer than $47$ such lines in the data and fewer than about $790$ +such transmitters on each square degree. + +\begin{center}\small +\setlength{\tabcolsep}{4pt} +\begin{longtable}{lrrr>{\raggedright\arraybackslash}p{3.9cm}rl} +\caption{The $154$ galaxies and two Galactic fibres: plate, MJD and fibre; the fibre's +position; the redshift; the lines found at it; the strongest line's signal-to-noise +ratio; and the Legacy Surveys DR10 source within $1.5''$, with its profile type and +$r$.}\label{tab:galaxies}\\ +\toprule +Plate-MJD-fibre & RA & Dec & $z$ & Lines & S/N & Legacy Surveys \\ +\midrule +\endfirsthead +\toprule +Plate-MJD-fibre & RA & Dec & $z$ & Lines & S/N & Legacy Surveys \\ +\midrule +\endhead +\bottomrule +\endfoot +\input{table_galaxies} +\end{longtable} +\end{center} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +Spectroscopic laser searches have examined stars: $577$ with Keck~\cite{ReinesMarcy2002}, +$5600$ with thresholds of megawatts~\cite{TellisMarcy2017} and the Automated Planet +Finder's targets~\cite{Zuckerman2023}. Sky fibres serve the surveys as a measure of the +sky, and their residuals are studied to improve its subtraction~\cite{Bolton2012}; the +sky spectra themselves have been mined for the diffuse Galactic light, by correlating +$92{,}000$ SDSS sky spectra with the far-infrared dust emission~\cite{BrandtDraine2012}, +$250{,}000$ BOSS sky spectra~\cite{Chellew2022} and $10.8$ million DESI sky +fibres~\cite{Saydjari2026}, whose line lists of the airglow and the nebular sky are the +reference for what a single sky fibre holds. We find no earlier search of sky fibres +for unresolved lines in single fibres, nor a catalogue of the galaxies they record. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No unresolved emission line in the $381{,}943$ sky-fibre spectra of the BOSS and eBOSS +plates stands above the residuals of the sky subtraction once every test is applied to +peaks and dips alike and the single lines of catalogued galaxies are counted: at +$8\sigma$, $323$ peaks remain against $336$ dips, and of the lines that hold through the +exposures, $202$ peaks against $253$ dips. Galaxies and nebulae are what the blank sky +holds: $154$ galaxies found by two or more lines at one redshift where residuals meet the +same test four times, a fifth of them below the Legacy Surveys' depth, two Galactic fibres, +the planetary nebula Abell~31, and a Ly$\alpha$ emitter at $z=2.893$ that one sky position +shows on $54$ plate-nights. The search bounds a transmitter in a sky fibre at a line flux of +$8\times10^{-17}$\,\flux, kilowatts through a $10$\,m aperture at $100$\,pc, and such +transmitters to fewer than about $850$ per square degree. The same search runs unchanged +on the sky fibres of DESI, whose $5000$ fibres place several hundred on blank sky in +every tile, and on the integral-field cubes of MaNGA and SAMI, which cover blank sky +around every target; the data behind every number here, each peak and dip with its tests +and counterparts, are published with the paper. + +\section*{Acknowledgements} + +This work uses data of the Sloan Digital Sky Survey IV (DR17), the Legacy Surveys DR10 +and DESI DR1, through the SDSS Science Archive Server, NOIRLab's Astro Data Lab and the +Legacy Survey viewer, and the software NumPy, SciPy and astropy. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{ReinesMarcy2002} +A.~E. Reines and G.~W. Marcy, Optical search for extraterrestrial intelligence: a +spectroscopic search for laser emission from nearby stars, \emph{Publ. Astron. Soc. Pac.} +\textbf{114}, 416 (2002). + +\bibitem{TellisMarcy2017} +N.~K. Tellis and G.~W. Marcy, A search for laser emission with megawatt thresholds from +5600 FGKM stars, \emph{Astron. J.} \textbf{153}, 251 (2017). + +\bibitem{Zuckerman2023} +A.~Zuckerman, Z.~Ko, H.~Isaacson, et al., The Breakthrough Listen search for +intelligent life: a laser search pipeline for the Automated Planet Finder, +\emph{Astron. J.} \textbf{165}, 114 (2023). + +\bibitem{BrandtDraine2012} +T.~D. Brandt and B.~T. Draine, The spectrum of the diffuse Galactic light: the Milky +Way in scattered light, \emph{Astrophys. J.} \textbf{744}, 129 (2012). + +\bibitem{Chellew2022} +B.~Chellew, T.~D. Brandt, B.~S. Hensley, B.~T. Draine and E.~Matthaey, An optical +spectrum of the diffuse Galactic light from BOSS and IRIS, \emph{Astrophys. J.} +\textbf{932}, 112 (2022). + +\bibitem{Saydjari2026} +A.~K. Saydjari, B.~T. Draine, T.~D. Brandt, et al., Spatially-resolved spectra of +diffuse Galactic light using 10.8\,M DESI sky fibers, arXiv:2608.28740 (2026). + +\bibitem{Dawson2013} +K.~S. Dawson, D.~J. Schlegel, C.~P. Ahn, et al., The Baryon Oscillation Spectroscopic +Survey of SDSS-III, \emph{Astron. J.} \textbf{145}, 10 (2013). + +\bibitem{Dawson2016} +K.~S. Dawson, J.-P. Kneib, W.~J. Percival, et al., The SDSS-IV extended Baryon +Oscillation Spectroscopic Survey: overview and early data, \emph{Astron. J.} +\textbf{151}, 44 (2016). + +\bibitem{Smee2013} +S.~A. Smee, J.~E. Gunn, A.~Uomoto, et al., The multi-object, fiber-fed spectrographs for +the Sloan Digital Sky Survey and the Baryon Oscillation Spectroscopic Survey, +\emph{Astron. J.} \textbf{146}, 32 (2013). + +\bibitem{Abdurrouf2022} +Abdurro'uf, K.~Accetta, C.~Aerts, et al., The seventeenth data release of the Sloan +Digital Sky Surveys: complete release of MaNGA, MaStar, and APOGEE-2 data, +\emph{Astrophys. J. Suppl.} \textbf{259}, 35 (2022). + +\bibitem{Dey2019} +A.~Dey, D.~J. Schlegel, D.~Lang, et al., Overview of the DESI Legacy Imaging Surveys, +\emph{Astron. J.} \textbf{157}, 168 (2019). + +\bibitem{DESI2025} +DESI Collaboration, Data Release 1 of the Dark Energy Spectroscopic Instrument, +arXiv:2503.14745 (2025). + +\bibitem{Fitzpatrick2014} +M.~J. Fitzpatrick, K.~Olsen, F.~Economou, et al., The NOAO Data Laboratory: a conceptual +overview, \emph{Proc. SPIE} \textbf{9149}, 91491T (2014). + +\bibitem{Bolton2012} +A.~S. Bolton, D.~J. Schlegel, \'E. Aubourg, et al., Spectral classification and redshift +measurement for the SDSS-III Baryon Oscillation Spectroscopic Survey, \emph{Astron. J.} +\textbf{144}, 144 (2012). + +\bibitem{Shen2015} +Y.~Shen, W.~N. Brandt, K.~S. Dawson, et al., The Sloan Digital Sky Survey Reverberation +Mapping Project: technical overview, \emph{Astrophys. J. Suppl.} \textbf{216}, 4 (2015). + +\bibitem{Shapley2003} +A.~E. Shapley, C.~C. Steidel, M.~Pettini and K.~L. Adelberger, Rest-frame ultraviolet +spectra of $z\sim3$ Lyman break galaxies, \emph{Astrophys. J.} \textbf{588}, 65 (2003). + +\end{thebibliography} + +\end{document} diff --git a/papers/sky_fibres/table_galaxies.tex b/papers/sky_fibres/table_galaxies.tex new file mode 100644 index 0000000000000000000000000000000000000000..055ba35f31bdc3f6f0e87686a767e1f2c2fd2e31 --- /dev/null +++ b/papers/sky_fibres/table_galaxies.tex @@ -0,0 +1,156 @@ +8169-57071-296 & 127.14855 & +57.12516 & -0.0002 & [N\,\textsc{ii}], [O\,\textsc{iii}]\,5007, [S\,\textsc{ii}]\,6731 & 7.5 & --\\ +6602-56571-766 & 24.02404 & +34.10890 & 0.0001 & [O\,\textsc{ii}], [S\,\textsc{ii}]\,6716 & 8.2 & outside\\ +11288-58401-543 & 351.36997 & +6.09305 & 0.0164 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 8.7 & --\\ +4020-55332-26 & 226.04718 & -2.39425 & 0.0954 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 13.5 & --\\ +4563-55617-722 & 154.88368 & +38.46850 & 0.1085 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 14.9 & --\\ +8175-57039-450 & 150.61150 & +50.64228 & 0.1416 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 10.8 & round exp., $r=22.5$\\ +7512-56777-45 & 134.07495 & +48.20114 & 0.1633 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 13.6 & --\\ +3877-55365-396 & 225.00402 & +28.04808 & 0.1817 & H$\beta$, [O\,\textsc{iii}]\,5007 & 10.4 & round exp., $r=23.3$\\ +6013-56074-554 & 213.58866 & +24.33099 & 0.1895 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 7.5 & point, $r=23.6$\\ +4057-55357-108 & 245.33337 & +20.30591 & 0.1997 & H$\beta$, [O\,\textsc{iii}]\,5007 & 10.5 & exp., $r=22.5$\\ +9435-58108-594 & 17.53466 & +4.66545 & 0.1999 & H$\alpha$, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 10.8 & round exp., $r=22.3$\\ +4279-55508-88 & 357.85425 & +2.95924 & 0.2248 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 16.3 & round exp., $r=22.2$\\ +7690-57046-103 & 28.95435 & +25.09805 & 0.2249 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 13.1 & round exp., $r=22.3$\\ +5378-56011-408 & 174.56869 & +14.12900 & 0.2277 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 19.4 & --\\ +7822-57041-354 & 41.57260 & -1.06696 & 0.2313 & H$\alpha$, [O\,\textsc{ii}] & 7.2 & exp., $r=22.0$\\ +6793-56430-248 & 242.35395 & +54.12879 & 0.2351 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 9.5 & exp., $r=22.5$\\ +5404-56013-406 & 187.52239 & +14.68962 & 0.2357 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 11.3 & round exp., $r=24.0$\\ +11061-58428-6 & 26.43771 & +11.21563 & 0.2360 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 7.7 & round exp., $r=22.5$\\ +5873-56035-868 & 158.02560 & +22.15247 & 0.2445 & H$\alpha$, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.9 & round exp., $r=23.4$\\ +6689-56396-676 & 177.85168 & +54.09125 & 0.2483 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 7.8 & round exp., $r=22.3$\\ +11352-58456-248 & 156.58603 & +27.53902 & 0.2508 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 12.6 & round exp., $r=23.3$\\ +7311-57038-991 & 132.07073 & +50.44043 & 0.2680 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 12.8 & --\\ +7512-56777-675 & 132.07073 & +50.44043 & 0.2680 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 13.3 & --\\ +7699-57574-95 & 355.68318 & +25.99462 & 0.2812 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 14.1 & exp., $r=22.6$\\ +10901-58397-179 & 255.53170 & +32.14931 & 0.2857 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 9.7 & exp., $r=22.6$\\ +7835-56986-322 & 33.83880 & -3.32220 & 0.2939 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 14.6 & round exp., $r=23.3$\\ +7390-57130-18 & 163.85952 & +47.34356 & 0.2948 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 13.2 & round exp., $r=22.8$\\ +5046-56243-614 & 343.65339 & +13.46747 & 0.2988 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.0 & round exp., $r=22.7$\\ +5002-55710-284 & 261.59575 & +30.59913 & 0.3008 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 10.1 & round exp., $r=22.3$\\ +9575-57786-786 & 153.75520 & +17.37566 & 0.3050 & H$\alpha$, H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 16.6 & --\\ +11561-58485-827 & 2.04539 & +11.85705 & 0.3056 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 9.0 & point, $r=23.1$\\ +4040-55605-420 & 207.18925 & -0.83451 & 0.3062 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 7.3 & round exp., $r=23.5$\\ +5141-55746-113 & 318.86697 & +0.91202 & 0.3092 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 9.2 & exp., $r=22.5$\\ +7057-56593-810 & 41.11542 & -7.41403 & 0.3110 & H$\alpha$, H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 19.0 & S\'ersic, $r=22.1$\\ +4740-55651-178 & 174.48659 & +1.11383 & 0.3113 & H$\alpha$, H$\beta$, [S\,\textsc{ii}]\,6716 & 18.6 & round exp., $r=21.8$\\ +7900-57358-798 & 4.13084 & -3.05673 & 0.3125 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 12.5 & point, $r=23.5$\\ +10440-58138-745 & 141.43832 & +31.17449 & 0.3134 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 20.4 & point, $r=23.6$\\ +9141-57663-653 & 321.07987 & -0.46193 & 0.3201 & H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 18.2 & round exp., $r=22.6$\\ +6743-56385-218 & 202.05611 & +47.97118 & 0.3268 & H$\alpha$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 16.4 & point, $r=24.1$\\ +11109-58523-950 & 124.27555 & +22.24246 & 0.3279 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 9.0 & round exp., $r=22.2$\\ +4174-55659-442 & 255.95617 & +21.05868 & 0.3289 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 7.8 & round exp., $r=23.5$\\ +5198-55823-408 & 252.65262 & +35.90116 & 0.3395 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 13.2 & round exp., $r=23.9$\\ +8370-57520-708 & 175.74678 & +44.52171 & 0.3412 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 12.1 & round exp., $r=23.4$\\ +8370-57732-718 & 175.74678 & +44.52171 & 0.3412 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 10.1 & round exp., $r=23.4$\\ +10738-58251-439 & 240.90571 & +35.18927 & 0.3416 & H$\alpha$, [O\,\textsc{ii}] & 12.0 & round exp., $r=22.7$\\ +7095-56625-482 & 160.11325 & +58.20823 & 0.3498 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 23.4 & round exp., $r=22.6$\\ +6587-56537-574 & 349.59914 & +27.54950 & 0.3516 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 9.0 & exp., $r=22.1$\\ +10917-58252-746 & 241.41881 & +32.47987 & 0.3524 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 8.5 & round exp., $r=23.5$\\ +6633-56369-490 & 183.16471 & +41.81318 & 0.3568 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 15.3 & round exp., $r=23.6$\\ +4543-55888-240 & 11.54328 & +6.28194 & 0.3584 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.6 & point, $r=23.2$\\ +9382-57746-452 & 34.84357 & +0.03436 & 0.3624 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 14.8 & de Vauc., $r=22.2$\\ +6586-56485-366 & 336.95291 & +28.14091 & 0.3655 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 9.8 & round exp., $r=21.9$\\ +6289-56559-308 & 348.17625 & +27.40934 & 0.3717 & [N\,\textsc{ii}], [O\,\textsc{ii}] & 8.4 & point, $r=22.7$\\ +10748-58224-776 & 223.64392 & +38.18774 & 0.3775 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.7 & round exp., $r=23.4$\\ +4643-55946-153 & 138.35170 & +37.83216 & 0.3833 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 9.5 & round exp., $r=22.8$\\ +4016-55632-414 & 225.44444 & -0.61182 & 0.3888 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 8.6 & --\\ +9442-58076-984 & 9.95057 & +2.65555 & 0.3919 & H$\alpha$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 14.7 & --\\ +7701-57356-625 & 351.51853 & +27.44095 & 0.3932 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 10.2 & --\\ +11059-58515-987 & 23.81695 & +17.02814 & 0.3960 & H$\alpha$, [O\,\textsc{ii}] & 11.2 & round exp., $r=22.8$\\ +9162-58040-242 & 322.00060 & +0.38206 & 0.3972 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 9.5 & point, $r=23.1$\\ +7631-57279-635 & 18.95434 & +22.18753 & 0.3977 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 10.2 & --\\ +8526-57898-317 & 244.45013 & +41.51516 & 0.3982 & H$\alpha$, H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 14.5 & point, $r=24.0$\\ +6044-56090-107 & 244.45014 & +41.51515 & 0.3983 & H$\alpha$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 17.6 & point, $r=24.0$\\ +8792-57364-446 & 23.51387 & -1.05226 & 0.4020 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 7.0 & round exp., $r=23.6$\\ +4656-55828-488 & 28.11478 & +11.68275 & 0.4028 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 8.4 & point, $r=23.7$\\ +5694-56213-351 & 23.77663 & +25.07137 & 0.4034 & H$\alpha$, [O\,\textsc{ii}] & 7.7 & --\\ +3878-55361-470 & 221.72976 & +28.42111 & 0.4085 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 8.7 & round exp., $r=23.4$\\ +8211-57423-986 & 205.78650 & +50.99986 & 0.4098 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 12.0 & --\\ +6423-56313-38 & 178.98923 & +22.51120 & 0.4127 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 10.7 & round exp., $r=23.1$\\ +4038-55363-444 & 210.29613 & -3.23692 & 0.4129 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 14.7 & exp., $r=22.6$\\ +5777-56280-948 & 140.43369 & +26.23998 & 0.4152 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 7.0 & round exp., $r=22.7$\\ +8750-58401-690 & 10.33064 & +6.25421 & 0.4302 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 15.2 & point, $r=23.3$\\ +9554-57807-188 & 140.49693 & +18.22247 & 0.4315 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 8.5 & point, $r=23.6$\\ +5307-55998-786 & 140.49693 & +18.22247 & 0.4315 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 10.2 & point, $r=23.6$\\ +6402-56334-335 & 178.75863 & +27.52210 & 0.4372 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 12.4 & point, $r=23.9$\\ +6588-56536-822 & 344.67859 & +25.91339 & 0.4374 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 9.4 & round exp., $r=23.2$\\ +8732-57418-829 & 35.93424 & +5.21363 & 0.4385 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 20.8 & point, $r=23.6$\\ +7114-56748-520 & 169.81510 & +65.92926 & 0.4398 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 11.6 & round exp., $r=23.0$\\ +11554-58456-170 & 353.86311 & +9.93507 & 0.4408 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 9.9 & point, $r=23.7$\\ +6165-56208-788 & 353.86311 & +9.93508 & 0.4408 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 16.5 & point, $r=23.7$\\ +4641-55947-314 & 138.90323 & +40.53916 & 0.4416 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 12.2 & exp., $r=22.4$\\ +7646-57570-208 & 332.07143 & +27.39413 & 0.4485 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 15.1 & point, $r=23.8$\\ +6487-56362-880 & 198.02095 & +31.92434 & 0.4487 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 12.7 & point, $r=23.3$\\ +10914-58257-755 & 248.98563 & +33.41463 & 0.4504 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 12.7 & round exp., $r=22.4$\\ +11380-58462-704 & 150.33497 & +31.84991 & 0.4564 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.5 & round exp., $r=23.2$\\ +7391-56781-675 & 160.40951 & +46.60769 & 0.4672 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 13.1 & round exp., $r=22.9$\\ +6516-56571-602 & 355.05918 & +27.08038 & 0.4683 & H$\beta$, [O\,\textsc{iii}]\,5007 & 13.4 & round exp., $r=23.4$\\ +8497-58161-40 & 221.93867 & +42.20213 & 0.4761 & H$\beta$, [O\,\textsc{iii}]\,5007 & 31.3 & --\\ +6203-56266-288 & 12.00438 & +14.31752 & 0.4827 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 6.9 & round exp., $r=22.0$\\ +6699-56411-882 & 169.24331 & +52.16521 & 0.4856 & H$\alpha$, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.6 & point, $r=23.0$\\ +9610-58137-172 & 133.00640 & +27.21546 & 0.4895 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.0 & point, $r=22.8$\\ +6634-56367-520 & 179.94605 & +41.95528 & 0.4895 & H$\alpha$, [O\,\textsc{iii}]\,5007 & 8.4 & point, $r=23.0$\\ +6484-56358-594 & 193.85918 & +31.69102 & 0.4952 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 14.0 & --\\ +11071-58429-332 & 24.19181 & +6.40044 & 0.5064 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 9.2 & round exp., $r=23.1$\\ +8279-57063-174 & 127.02745 & +43.19890 & 0.5109 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.3 & round exp., $r=23.3$\\ +7107-56740-796 & 174.80896 & +62.15769 & 0.5146 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 9.1 & point, $r=23.1$\\ +7606-56977-311 & 350.26431 & +21.01340 & 0.5177 & H$\beta$, [O\,\textsc{ii}] & 13.6 & exp., $r=22.1$\\ +7860-57006-380 & 22.15587 & +1.18941 & 0.5261 & H$\beta$, [O\,\textsc{iii}]\,5007 & 6.8 & exp., $r=21.9$\\ +8204-58146-416 & 198.21603 & +55.42233 & 0.5277 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.7 & exp., $r=22.0$\\ +4994-55739-370 & 258.61404 & +33.83769 & 0.5293 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 18.7 & --\\ +6422-56328-90 & 176.49067 & +21.57333 & 0.5318 & H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 32.5 & point, $r=23.4$\\ +3847-55298-412 & 185.87047 & -0.69507 & 0.5432 & H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 21.5 & --\\ +3847-55588-418 & 185.87047 & -0.69507 & 0.5432 & H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 20.6 & --\\ +3868-55360-202 & 219.81346 & +30.49225 & 0.5504 & H$\beta$, [O\,\textsc{ii}] & 11.9 & exp., $r=22.3$\\ +7691-58487-687 & 29.47546 & +27.58831 & 0.5525 & H$\beta$, [O\,\textsc{iii}]\,5007 & 13.1 & --\\ +9144-57666-648 & 328.28503 & +0.02365 & 0.5563 & H$\beta$, [O\,\textsc{ii}] & 14.4 & round exp., $r=22.0$\\ +5313-55973-558 & 142.25359 & +13.82727 & 0.5702 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.7 & exp., $r=22.7$\\ +4747-55652-835 & 180.80191 & +4.98357 & 0.5885 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 12.0 & exp., $r=22.3$\\ +10752-58488-557 & 217.96798 & +39.67842 & 0.5980 & H$\beta$, [O\,\textsc{iii}]\,5007 & 6.9 & --\\ +3947-55332-324 & 235.38928 & +23.87738 & 0.6051 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.3 & exp., $r=22.3$\\ +11337-58431-190 & 330.43338 & +5.56656 & 0.6088 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 6.9 & exp., $r=22.7$\\ +3940-55327-364 & 239.43312 & +23.99639 & 0.6203 & H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 28.3 & exp., $r=22.6$\\ +4533-55855-414 & 2.28310 & +7.12388 & 0.6208 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 20.1 & round exp., $r=22.8$\\ +8755-58138-198 & 25.24367 & +5.87333 & 0.6300 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.2 & round exp., $r=22.5$\\ +6155-56245-438 & 347.48707 & +10.35645 & 0.6312 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 13.7 & --\\ +5191-56065-388 & 245.24949 & +34.60598 & 0.6395 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 11.8 & --\\ +9582-57806-566 & 143.08944 & +17.21156 & 0.6396 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 9.1 & de Vauc., $r=22.4$\\ +3781-55243-146 & 141.78061 & -2.11227 & 0.6453 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 11.7 & point, $r=23.1$\\ +9162-58040-928 & 322.94891 & +1.91979 & 0.6476 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 16.9 & point, $r=23.9$\\ +4779-55656-64 & 221.47363 & +3.87355 & 0.6515 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.0 & exp., $r=22.5$\\ +4753-55674-152 & 188.64795 & +3.56641 & 0.6634 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 12.4 & round exp., $r=22.9$\\ +10429-58145-627 & 143.02481 & +32.28740 & 0.6823 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 13.1 & point, $r=23.0$\\ +6497-56329-300 & 213.29485 & +29.07750 & 0.6937 & H$\beta$, [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 27.6 & exp., $r=22.5$\\ +4858-55686-359 & 221.21223 & +6.63193 & 0.7023 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.5 & exp., $r=23.1$\\ +8388-57488-346 & 198.47179 & +41.25348 & 0.7037 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.3 & round exp., $r=23.0$\\ +7747-58398-852 & 3.14290 & +35.45403 & 0.7039 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.7 & outside\\ +4221-55443-510 & 7.27573 & +0.01951 & 0.7185 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 10.5 & exp., $r=22.9$\\ +5739-55976-150 & 149.61539 & +48.66389 & 0.7191 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 14.0 & --\\ +7183-56658-450 & 25.90411 & -10.25796 & 0.7360 & H$\beta$, [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 21.7 & exp., $r=22.7$\\ +8234-57450-582 & 177.12140 & +58.45203 & 0.7437 & H$\beta$, [O\,\textsc{iii}]\,5007 & 8.2 & round exp., $r=22.9$\\ +5863-56042-816 & 197.31227 & +18.68198 & 0.7451 & H$\beta$, [O\,\textsc{iii}]\,5007 & 8.7 & round exp., $r=22.5$\\ +5130-55835-42 & 26.45194 & +14.74649 & 0.7455 & H$\beta$, [O\,\textsc{iii}]\,5007 & 19.9 & point, $r=23.6$\\ +4348-55559-700 & 27.49099 & -2.31464 & 0.7476 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 30.7 & round exp., $r=23.3$\\ +8763-57309-452 & 348.32325 & -0.06942 & 0.7518 & H$\beta$, [O\,\textsc{ii}] & 6.7 & --\\ +5733-56575-654 & 138.00488 & +48.77073 & 0.7541 & H$\beta$, [O\,\textsc{ii}] & 8.0 & --\\ +6881-56540-554 & 2.46761 & +23.78729 & 0.7575 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 16.6 & point, $r=23.4$\\ +6825-56717-460 & 202.51184 & +66.02136 & 0.7933 & H$\beta$, [O\,\textsc{ii}] & 9.1 & round exp., $r=23.2$\\ +5979-56329-226 & 185.96476 & +23.12713 & 0.7962 & H$\beta$, [O\,\textsc{ii}] & 8.9 & point, $r=23.6$\\ +5800-56279-368 & 149.00528 & +29.49835 & 0.8026 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 6.2 & round exp., $r=23.6$\\ +7854-56989-316 & 5.58985 & +1.51164 & 0.8032 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.6 & de Vauc., $r=23.1$\\ +4376-55863-124 & 330.24601 & -3.46081 & 0.8089 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 25.1 & --\\ +7142-56567-606 & 338.98836 & +33.05879 & 0.8099 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 19.7 & point, $r=24.0$\\ +4207-55475-812 & 345.33907 & +0.36194 & 0.8357 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 11.0 & point, $r=24.5$\\ +5413-55976-488 & 191.68889 & +7.49739 & 0.8365 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 7.6 & round exp., $r=23.2$\\ +10757-58223-520 & 215.56647 & +35.41421 & 0.8369 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 6.8 & point, $r=23.8$\\ +4478-55600-376 & 126.61986 & +21.27518 & 0.8550 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.1 & point, $r=23.7$\\ +5410-56016-644 & 191.05282 & +14.52098 & 0.8552 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 6.8 & point, $r=24.0$\\ +5447-55958-124 & 210.25983 & +7.91491 & 0.8552 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 6.3 & round exp., $r=23.4$\\ +4447-55542-449 & 122.63066 & +29.97605 & 0.8795 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 8.5 & point, $r=24.2$\\ +5703-56190-288 & 14.54918 & +19.37136 & 0.9006 & H$\beta$, [O\,\textsc{ii}] & 15.1 & point, $r=22.9$\\ +3537-55116-602 & 318.00184 & +0.45669 & 0.9352 & H$\beta$, [O\,\textsc{iii}]\,5007 & 7.8 & --\\ +6529-56535-447 & 9.74883 & +30.63794 & 0.9394 & H$\beta$, [O\,\textsc{iii}]\,5007 & 10.6 & --\\ +7681-57042-706 & 18.71776 & +24.94611 & 0.9813 & H$\beta$, [O\,\textsc{ii}] & 18.2 & exp., $r=22.3$\\ +6625-56386-450 & 199.19516 & +45.56782 & 1.0251 & [O\,\textsc{iii}]\,5007, [O\,\textsc{ii}] & 13.1 & round exp., $r=23.2$\\ +6645-56398-490 & 174.26890 & +45.42930 & 1.0364 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 6.8 & --\\ +3647-56568-535 & 35.90259 & +0.31456 & 1.0690 & [O\,\textsc{iii}]\,4959, [O\,\textsc{iii}]\,5007 & 9.5 & --\\ diff --git a/papers/small_bodies/small_bodies.pdf b/papers/small_bodies/small_bodies.pdf new file mode 100644 index 0000000000000000000000000000000000000000..efcd08b4b1161a5fd9b3e9ab237bb0e2db1d0643 Binary files /dev/null and b/papers/small_bodies/small_bodies.pdf differ diff --git a/papers/small_bodies/small_bodies.tex b/papers/small_bodies/small_bodies.tex new file mode 100644 index 0000000000000000000000000000000000000000..8ccd9af2aa9ec8f6f0d3e276b4e66537f4f4083b --- /dev/null +++ b/papers/small_bodies/small_bodies.tex @@ -0,0 +1,452 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{Surfaces, Shapes, Spins and Orbits:\\ Archival Tests for Artifacts Among the Small Bodies} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +An artifact among the asteroids, comets and meteoroids would most likely be found in the +archives that already hold its brightness, colour, shape, spin and orbit. We apply +thirteen tests to them. Of $315$ radar detections, every albedo above $0.3$ belongs to +a metal-rich or enstatite body and none is the specular return of a flat reflector. +Gaia DR3 reflectance spectra of $58208$ bodies hold no solar-cell surface, which +injections recover at $10$ per cent of a body's light in $88$ per cent of cases. In +$4723$ ALCDEF sessions no brightening recurs at a body's rotation period beyond chance. +No ATLAS phase curve is flat at a high albedo, and no NEOWISE fit stays hotter than +sunlight allows at every epoch. Reduced to zero phase, no lightcurve amplitude among +$31008$ records exceeds the $2.5$\,mag of a $10:1$ plate. The longest straight limbs in +$395$ stellar occultations lie on bodies whose shape models carry flat facets. No +kilometre body spins faster than ten minutes or needs more than $100$\,kPa to hold +together. The one triple of asteroids that share a period, magnitude and amplitude on +unrelated orbits is three S-types at the spin barrier's pile-up, a one-in-$25$ chance. +Among $301$ bodies with radial non-gravitational terms, three are lighter than a rubble +pile, each with a published explanation. No near-Earth object occupies the cells the +delivery model leaves empty in a way dynamics forbids. The densest hyperbolic meteor +group of the Global Meteor Network's $3.58$ million orbits is matched by a $1.5$ per +cent speed bias, and its focal line holds no stream. NELIOTA's $284$ lunar impact +flashes are thermal and recur in place no more often than chance. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +The search for artifacts in the Solar System~\cite{Freitas1983,HaqqMisra2012} asks +whether something made, a probe, a reflector, a habitat or a fragment, is among the +bodies we already catalogue~\cite{Benford2019}. Surveys of the small bodies were not +designed for that question, but they hold what it needs: radar echoes, reflectance +spectra, lightcurves, phase curves, thermal fits, occultation chords, non-gravitational +terms in the orbit solutions, and the orbits of meteoroids and of the near-Earth +population. A made object can differ from a natural body in each: a flat, conducting or +photovoltaic surface; a shape no collisional fragment has; a spin no rubble pile +survives; an area too large for its mass; an orbit the natural sources do not reach. +This paper puts each of these to the archive that measures it, with a null drawn from +the same data, and states what each would have found. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item Tests of the surfaces of the small bodies: radar albedos, Gaia DR3 reflectance +spectra against metal and photovoltaic templates with injected surfaces, glints in +ALCDEF lightcurves, ATLAS phase curves and NEOWISE beaming parameters. +\item Tests of their shapes and spins: lightcurve amplitudes at zero phase, straight +limbs in occultation profiles, the strength that the fastest spins need, and bodies that +share a period, size and amplitude on unrelated orbits. +\item Tests of their orbits: area-to-mass ratios from non-gravitational terms, near-Earth +objects where the delivery model has none, and coherent hyperbolic meteor streams. +\item A test of NELIOTA's lunar impact flashes for non-thermal colours and recurrence. +\end{enumerate} + +% ============================================================================= +\section{Surfaces}\label{sec:surfaces} +% ============================================================================= + +\emph{Radar.} A flat metal plate facing the radar returns its echo in the opposite +circular sense with a radar albedo near one, where a rough natural surface returns some +power in the same sense and a stony one has an albedo near $0.1$~\cite{Shepard2015}. The +compilation of every published asteroid radar detection in the Small Bodies Node, $315$ +objects, holds nine albedos above $0.3$: M- and X-class bodies, the radar-metallic +1986~DA~\cite{Ostro1991}, the E-types Nereus and 1998~WT24, and the Sq-type Bacchus at +$0.33\pm0.25$. None combines an albedo near one with a same-sense to opposite-sense ratio +near zero, the signature of a specular reflector. + +\emph{Reflectance spectra.} Gaia DR3 gives reflectance spectra of $60518$ Solar System +objects in $16$ bands from $374$ to $1034$\,nm~\cite{Galluccio2023}, of which $58208$ +have twelve or more good bands from $418$ to $990$\,nm. Each is fitted by the first +four principal components of the sample, with and without the reflectance of a +photovoltaic cell and of gold, copper, silver and aluminium from their optical +constants~\cite{Polyanskiy2024} as an additive component. No spectrum takes a +photovoltaic component, and the drops in $\chi^2$ above $25$ that the metal templates +give fall on V, A and S types whose deep absorption bands the four components fit +poorly. Injected into $3000$ spectra, a photovoltaic surface is recovered in $41$, $88$ +and $100$ per cent of cases at $5$, $10$ and $20$ per cent of the light at $550$\,nm; +gold and copper in $19$ and $9$ per cent at $50$ per cent of the light, and silver and +aluminium, whose reflectance is nearly flat across the band, never. + +\emph{Glints.} A flat surface on a spinning body reflects the Sun toward us once a +rotation, as a brief spike at a fixed rotational phase. In the ALCDEF photometry, +$4723$ sessions of $20$ or more points at $15$\,min or less on bodies with an LCDB +period~\cite{Warner2009} of quality $2$ or better, spikes above the rotational +lightcurve that recur at the body's period are compared with the same statistic for +fades. No body's spikes recur at $p<0.01$, where the fades, tested the same way, gather +in ten groups. Injected spikes are recovered in $3$, $29$, $52$ and $63$ per cent of +sessions at $0.05$, $0.1$, $0.2$ and $0.5$\,mag. + +\emph{Phase curves.} A surface that shines with its own light, or that reflects as a +smooth specular body does, brightens little with decreasing phase angle. The ATLAS +phase curves in two bands~\cite{Mahlke2021} give $39239$ fits of the $H$, $G_1$, $G_2$ +function~\cite{Muinonen2010} spanning phase angles below $7^\circ$ and above $25^\circ$, +with a median slope of $0.0277$\,mag per degree from $5$ to $30^\circ$. The $221$ curves +pinned at the flattest slope the function allows, $0.0179$\,mag per degree, have median +residuals of $0.28$\,mag, rotation swamping the phase signal; the $107$ of them with +measured albedos have $0.03$ to $0.74$, none above the $0.8$ that a flat curve on a bright +surface would need to stand out. + +\emph{Beaming.} A body heated by more than the Sun shows a hotter dayside than a rough +sunlit surface can, a NEATM~\cite{Harris1998} beaming parameter below about $0.6$. Of +the $74609$ NEOWISE thermal fits with a free beaming parameter~\cite{Mainzer2011}, of +$68500$ objects, eight fall below $0.6$ at $2\sigma$, each at a single epoch, and the +lowest sits at the fit's floor of $0.3$; the population's first percentile is $0.68$, +and no object stays below $0.6$ at every epoch it was fitted. + +% ============================================================================= +\section{Shapes and spins}\label{sec:shapes} +% ============================================================================= + +\emph{Plates.} A collisional fragment's lightcurve amplitude rarely exceeds $1.2$\,mag at +low phase, while a plate of axis ratio $10$ reaches $2.5$\,mag. In the LCDB's detail +records, $31008$ of quality $2$ or $3$ at phase angles up to $15^\circ$, with amplitudes +reduced to zero phase at $0.03$\,mag per degree, five records exceed $1.6$\,mag, $0.02$ +per cent against the $0.11$ per cent of the quality-1 records, one exceeds $2.0$ and none +$2.5$. All five are single TESS records~\cite{Pal2020} of slow rotators of $9$ to $627$\,h, +three marked ambiguous; no body exceeds a $4:1$ axis ratio at low phase. + +\emph{Straight limbs.} A stellar occultation traces a body's limb chord by chord. The +occultation bundle of the Small Bodies Node holds $395$ events of fit quality $3$ or $4$ +with five or more positive chords from distinct sites, of which $376$ are measured once +$19$ whose chords disagree or whose fitted ellipse is far from the body's size are set +aside. Each chord's ends are placed on the fundamental plane, and the longest run of +four or more consecutive limb points that a +line fits within the timing errors is measured against the diameter and against the +fitted ellipse's points at the same angles and errors. The median run is $0.21$ of the +diameter and the $90$th percentile $0.67$. Twenty-five runs exceed the ellipse's null at +$p<0.01$, the longest on (3317)~Paris in 2020 ($0.97$ of the diameter over six sites), +(134)~Sophrosyne in 1980 ($0.86$), (64)~Angelina in 2023 ($0.82$), (39)~Laetitia in 1998 +($0.79$) and (2)~Pallas in 1983 ($0.70$ over six of $120$ chords). Their shape +models~\cite{Durech2010} carry the flat facets that an ellipse lacks, so the null that +decides is the models projected at each event's geometry. + +\emph{Spin strength.} A gravitational aggregate of $2000$\,kg\,m$^{-3}$ flies apart +faster than about $2.3$\,h~\cite{Pravec2000}, and a faster spin needs cohesion that grows +with size~\cite{Holsapple2007}. Of the $8854$ asteroids with periods and diameters in the +LCDB, no kilometre body spins faster than ten minutes or needs $100$\,kPa; the most +demanding are 2019~MA2, $0.49$\,km across from its $H$ and spinning in $2.62$\,min at +quality~$2$, which needs $97$\,kPa, within a monolith's strength, and 2008~RA106, +$3.7$\,km and $54$\,min at quality $2-$, which needs $11$\,kPa. The secure fast rotators +of the $31149$ periods of quality $2$ or $3$ are the cohesive ones already published. + +\emph{Replicated bodies.} Objects made to one design would share a period, a size and a +lightcurve amplitude on orbits that collisions do not relate. Among $4315$ numbered +asteroids with LCDB periods of quality~$3$ and the proper elements of the asteroid-family +bundle~\cite{Nesvorny2015}, pairs that agree in period to $2\times10^{-4}$, in $H$ to +$0.1$\,mag and in amplitude to $0.05$\,mag while more than $300$\,m\,s$^{-1}$ apart in +the Zappal\`a metric~\cite{Zappala1990} number $14$, against $8.6\pm2.8$ with the periods +shuffled within half-magnitude bins, and one group of three forms, against +$0.04\pm0.18$, once in $25$ shuffles: (3305)~Ceadams, (5122)~Mucha and (2019)~van Albada, +at $2.7290$ to $2.7294$\,h, $H=12.3$ to $12.4$ and amplitudes $0.20$ to $0.23$, in three +families. Their Gaia reflectance spectra are all S-type, with red slopes to $1.21$ to +$1.26$ at $770$\,nm and the $1\,\mu$m band, and their period lies in the pile-up of fast +rotators near the spin barrier, where periods crowd. + +% ============================================================================= +\section{Orbits}\label{sec:orbits} +% ============================================================================= + +\emph{Area-to-mass ratios.} A radial non-gravitational term $A_1$ measures the push of +sunlight or outgassing per unit mass, and for a body pushed by sunlight alone gives its +area-to-mass ratio. Of the $301$ objects with $A_1$ in JPL's database, three are lighter +than a rubble pile under the most favourable assumptions: the active asteroid +362P/(2008~GO98), the interstellar object 1I/2017~U1 and the dark comet +2016~NJ33~\cite{Seligman2023}, two of them with transverse or normal terms that mark +activity. + +\emph{Unreachable orbits.} The delivery model of Granvik et al.~\cite{Granvik2018} gives +the density of near-Earth objects from each natural source over orbital elements, and +leaves cells empty that no source reaches. The JPL database holds $37$ near-Earth objects +in those cells: $24$ retrograde, all at eccentricities of $0.74$ or more, the +Halley-type comets and comet-like asteroids; none retrograde below $0.3$; one +near-circular orbit inside $0.75$\,au above $25^\circ$, 2025~LP, within the Atira +population; and $12$ above $60^\circ$ with eccentricities below $0.25$, which Kozai +cycles~\cite{Kozai1962} reach from lower inclinations. + +\emph{Hyperbolic meteor streams.} Meteoroids from another star, or debris shed by +something travelling between stars, would arrive on one incoming asymptote at one +speed. The Global Meteor Network~\cite{Vida2021} holds $3.58$ million orbits from 2018 +to 2026, $40753$ sporadic meteors hyperbolic at $3\sigma$; each orbit gives its incoming +asymptote and excess speed, and a meteor's neighbours within $1^\circ$ and +$3$\,\kms\ are counted against the density within $10^\circ$. Thirty-five meteors fall +below $p=10^{-4}$ in ten groups. Eight belong to IAU showers~\cite{Jopek2017} whose +speeds are overestimated (Perseids, Orionids, $\eta$~Aquariids and the $\xi$~Perseids). +The largest, $16$ meteors from 2022 to 2026 at solar longitudes $80$ to $214^\circ$ on +one asymptote at ecliptic longitude $134.5^\circ$ and latitude $-1.6^\circ$ at +$12$\,\kms, is matched by a $16$-member group in one of three realisations of a $1.5$ per +cent speed overestimate shared by the elliptic sporadics, $74000$ simulated meteors, and +fifteen realisations thinned to the observed number at $1.0$ to $2.0$ per cent give $3$ +to $31$ meteors below $p=10^{-4}$ and groups of up to $14$. SonotaCo's independent +$353231$ orbits~\cite{SonotaCo2009} hold one meteor on that asymptote against $0.16$ from +the local density and about $1.6$ that a real stream would give. A stream would also +spread along the loci on which Earth's gravity focuses it, reaching $\pm52^\circ$ of +latitude, half of them south, as Earth crosses the asymptote near solar longitude +$134.5^\circ$: the August 3 to 11 loci hold $529$ meteors against a mean of $16$ on $11$ +control asymptotes, but $510$ of them lie north, where the Perseids ($204$ tagged) and +the apex sporadics are, and $19$ south, against $10$ by chance. The group is the speed +bias acting on the shower population, and no star within $100$\,pc shares its velocity +on its line. + +% ============================================================================= +\section{Lunar flashes}\label{sec:moon} +% ============================================================================= + +Impacts on the Moon's night side flash thermally for tens of milliseconds; a flash from +a surface source, a lamp or a laser, would be hotter or cooler than the impact plume, +longer, or recur at one place. NELIOTA's flash lists~\cite{Liakos2020,Liakos2024} hold +$284$ flashes from 2017 to 2023, $188$ of them validated and $192$ with $R$ and $I$ +photometry, located to $0.5^\circ$. Colour temperatures from $R-I$ through the Planck +ratio, with Vega's colour as the zero point, have a median of $2935$\,K and a $5$th to +$95$th percentile range of $2027$ to $5020$\,K; none is hotter than $8000$ or cooler than +$1000$\,K at $3\sigma$, and none lasts longer than $0.5$\,s, the longest $429$\,ms. Pairs +within $1.5^\circ$ number $21$ against $23.9\pm4.9$ with the longitudes permuted among the +flashes ($p=0.75$); the closest, two validated flashes $0.10^\circ$ apart on consecutive +Perseid nights of 2018 August at $(+26.7^\circ,+60.2^\circ)$, with temperatures of $4100$ +and $3000$\,K, is one that a tenth of a pair is expected to match. + +\begin{table}[t] +\centering\small +\caption{The thirteen tests, their samples and results.} +\label{tab:tests} +\begin{tabular}{>{\raggedright\arraybackslash}p{0.2\textwidth} >{\raggedright\arraybackslash}p{0.31\textwidth} >{\raggedright\arraybackslash}p{0.41\textwidth}} +\toprule +Test & Sample & Result \\ +\midrule +Radar albedos & $315$ radar detections & albedos above $0.3$ are M, X, E and one Sq type; no specular reflector \\ +Reflectance spectra & $58208$ Gaia DR3 spectra & no photovoltaic or metal surface; $88$ per cent recovery at $10$ per cent of the light \\ +Glints & $4723$ ALCDEF sessions & no spikes recurring at the rotation period at $p<0.01$ \\ +Phase curves & $39239$ ATLAS curves & the flattest are rotation-dominated, albedos $0.03$ to $0.74$ \\ +Beaming & $74609$ NEOWISE fits & eight single-epoch fits below $\eta=0.6$; none at every epoch \\ +Plates & $31008$ LCDB records & none above $2.5$\,mag at zero phase \\ +Straight limbs & $395$ occultations & longest runs on bodies with faceted shape models \\ +Spin strength & $8854$ asteroids & no kilometre body under $10$\,min or above $100$\,kPa \\ +Replicated bodies & $4315$ asteroids & one S-type triple at the spin barrier, one in $25$ \\ +Area-to-mass & $301$ radial terms & three light bodies, each explained \\ +Unreachable orbits & $37$ near-Earth objects & comets, an Atira and Kozai-reachable orbits \\ +Hyperbolic streams & $40753$ hyperbolic meteors & groups matched by a $1.5$ per cent speed bias; no focal line \\ +Lunar flashes & $284$ NELIOTA flashes & thermal, $2000$ to $5000$\,K; recurrence at chance \\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +Freitas~\cite{Freitas1983} set out the search for extraterrestrial artifacts in the +Solar System, Papagiannis~\cite{Papagiannis1983} argued for exploring the asteroid belt +for them, Haqq-Misra and Kopparapu~\cite{HaqqMisra2012} estimated how little of the +Solar System has been searched at the sizes a probe would have, and +Benford~\cite{Benford2019} proposed the co-orbital objects of the Earth as the likeliest +places for one. The tests here rest on +the archives' own studies: the radar survey of metal-rich asteroids~\cite{Shepard2015}, +the Gaia reflectance spectra~\cite{Galluccio2023}, the ATLAS phase +curves~\cite{Mahlke2021}, the spin barrier and its cohesive +exceptions~\cite{Pravec2000,Holsapple2007}, the dark comets~\cite{Seligman2023}, the +debiased near-Earth population~\cite{Granvik2018} and the meteor networks' orbit +catalogues~\cite{Vida2021,SonotaCo2009}, which this paper puts to the use those +proposals describe. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No test finds an artifact among the small bodies. Every bright radar echo is a metallic +or enstatite asteroid, no reflectance spectrum carries a photovoltaic surface, no +lightcurve glints at its rotation period, no phase curve or thermal fit needs a source +of light other than the Sun, no amplitude, limb or spin exceeds what natural shapes and +strengths allow, the one coincidence of period, size and amplitude is the expected +crowding at the spin barrier, every light body is explained, no near-Earth orbit lies +beyond the natural sources' reach, the hyperbolic meteor groups are speed biases, and the +lunar flashes are impacts. + +The reach differs from test to test. The spectra exclude photovoltaic cover of a tenth of +a body's light among bodies Gaia measured, down to about $G=20$, and say nothing of +silver or aluminium; the glint search reaches spikes of $0.1$\,mag in a third of the +sessions; the radar sample is the $315$ bodies radar has reached; the occultation test +needs the shape-model null to separate a made facet from a natural one; and an object +smaller or fainter than these surveys' limits, or one that keeps its distance from the +inner Solar System, is not constrained. + +\section*{Acknowledgements} + +This work uses the Planetary Data System Small Bodies Node (the asteroid radar +compilation, the ALCDEF photometry, the Asteroid Lightcurve Database, the occultation +bundle and the asteroid-family bundle), Gaia DR3 through CDS and ESA, the ATLAS phase +curves through VizieR, the NEOWISE diameters and albedos from the NASA/IPAC Infrared +Science Archive, JPL's Small-Body Database, the Global Meteor Network's trajectory +summaries, SonotaCo's orbit catalogue, the IAU Meteor Data Center, the NELIOTA flash +tables, the optical constants of refractiveindex.info, and the software NumPy, SciPy and +astropy. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Freitas1983} +R.~A. Freitas, The search for extraterrestrial artifacts (SETA), \emph{J. Br. Interplanet. +Soc.} \textbf{36}, 501 (1983). + +\bibitem{Papagiannis1983} +M.~D. Papagiannis, The importance of exploring the asteroid belt, \emph{Acta Astronaut.} +\textbf{10}, 709 (1983). + +\bibitem{HaqqMisra2012} +J.~Haqq-Misra and R.~K. Kopparapu, On the likelihood of non-terrestrial artifacts in the +Solar System, \emph{Acta Astronaut.} \textbf{72}, 15 (2012). + +\bibitem{Benford2019} +J.~Benford, Looking for lurkers: co-orbiters as SETI observables, \emph{Astron. J.} +\textbf{158}, 150 (2019). + +\bibitem{Shepard2015} +M.~K. Shepard, P.~A. Taylor, M.~C. Nolan, et al., A radar survey of M- and X-class +asteroids. III. Insights into their composition, hydration state, and structure, +\emph{Icarus} \textbf{245}, 38 (2015). + +\bibitem{Ostro1991} +S.~J. Ostro, D.~B. Campbell, J.~F. Chandler, et al., Asteroid 1986 DA: radar evidence for +a metallic composition, \emph{Science} \textbf{252}, 1399 (1991). + +\bibitem{Galluccio2023} +Gaia Collaboration, L.~Galluccio, M.~Delbo, et al., Gaia Data Release 3: reflectance +spectra of Solar System small bodies, \emph{Astron. Astrophys.} \textbf{674}, A35 (2023). + +\bibitem{Polyanskiy2024} +M.~N. Polyanskiy, Refractiveindex.info database of optical constants, \emph{Sci. Data} +\textbf{11}, 94 (2024). + +\bibitem{Warner2009} +B.~D. Warner, A.~W. Harris and P.~Pravec, The asteroid lightcurve database, +\emph{Icarus} \textbf{202}, 134 (2009). + +\bibitem{Mahlke2021} +M.~Mahlke, B.~Carry and L.~Denneau, Asteroid phase curves from ATLAS dual-band +photometry, \emph{Icarus} \textbf{354}, 114094 (2021). + +\bibitem{Muinonen2010} +K.~Muinonen, I.~N. Belskaya, A.~Cellino, et al., A three-parameter magnitude phase +function for asteroids, \emph{Icarus} \textbf{209}, 542 (2010). + +\bibitem{Harris1998} +A.~W. Harris, A thermal model for near-Earth asteroids, \emph{Icarus} \textbf{131}, 291 +(1998). + +\bibitem{Mainzer2011} +A.~Mainzer, T.~Grav, J.~Masiero, et al., Thermal model calibration for minor planets +observed with Wide-field Infrared Survey Explorer/NEOWISE, \emph{Astrophys. J.} +\textbf{736}, 100 (2011). + +\bibitem{Pal2020} +A.~P\'al, R.~Szak\'ats, Cs.~Kiss, et al., Solar System objects observed with TESS: first +data release, bright main-belt and Trojan asteroids from the southern survey, +\emph{Astrophys. J. Suppl.} \textbf{247}, 26 (2020). + +\bibitem{Durech2010} +J.~\v{D}urech, V.~Sidorin and M.~Kaasalainen, DAMIT: a database of asteroid models, +\emph{Astron. Astrophys.} \textbf{513}, A46 (2010). + +\bibitem{Pravec2000} +P.~Pravec and A.~W. Harris, Fast and slow rotation of asteroids, \emph{Icarus} +\textbf{148}, 12 (2000). + +\bibitem{Holsapple2007} +K.~A. Holsapple, Spin limits of Solar System bodies: from the small fast-rotators to +2003 EL61, \emph{Icarus} \textbf{187}, 500 (2007). + +\bibitem{Nesvorny2015} +D.~Nesvorn\'y, M.~Bro\v{z} and V.~Carruba, Identification and dynamical properties of +asteroid families, in \emph{Asteroids IV}, ed. P.~Michel, F.~E. DeMeo and W.~F. Bottke +(Univ. Arizona Press, 2015), p.~297. + +\bibitem{Zappala1990} +V.~Zappal\`a, A.~Cellino, P.~Farinella and Z.~Kne\v{z}evi\'c, Asteroid families. I. +Identification by hierarchical clustering and reliability assessment, \emph{Astron. J.} +\textbf{100}, 2030 (1990). + +\bibitem{Seligman2023} +D.~Z. Seligman, D.~Farnocchia, M.~Micheli, et al., Dark comets? Unexpectedly large +nongravitational accelerations on a sample of small asteroids, \emph{Planet. Sci. J.} +\textbf{4}, 35 (2023). + +\bibitem{Granvik2018} +M.~Granvik, A.~Morbidelli, R.~Jedicke, et al., Debiased orbit and absolute-magnitude +distributions for near-Earth objects, \emph{Icarus} \textbf{312}, 181 (2018). + +\bibitem{Kozai1962} +Y.~Kozai, Secular perturbations of asteroids with high inclination and eccentricity, +\emph{Astron. J.} \textbf{67}, 591 (1962). + +\bibitem{Vida2021} +D.~Vida, D.~\v{S}egon, P.~S. Gural, et al., The Global Meteor Network: methodology and +first results, \emph{Mon. Not. R. Astron. Soc.} \textbf{506}, 5046 (2021). + +\bibitem{Jopek2017} +T.~J. Jopek and Z.~Ka\v{n}uchov\'a, IAU Meteor Data Center: the shower database, a status +report, \emph{Planet. Space Sci.} \textbf{143}, 3 (2017). + +\bibitem{SonotaCo2009} +SonotaCo, A meteor shower catalog based on video observations in 2007--2008, +\emph{WGN} \textbf{37}, 55 (2009). + +\bibitem{Liakos2020} +A.~Liakos, A.~Z. Bonanos, E.~M. Xilouris, et al., NELIOTA: methods, statistics, and +results for meteoroids impacting the Moon, \emph{Astron. Astrophys.} \textbf{633}, A112 +(2020). + +\bibitem{Liakos2024} +A.~Liakos, A.~Z. Bonanos, E.~M. Xilouris, et al., NELIOTA: new results and updated +statistics after 6.5 years of lunar impact flashes monitoring, \emph{Astron. Astrophys.} +\textbf{687}, A14 (2024). + +\end{thebibliography} + +\end{document} diff --git a/papers/stellar_tests/stellar_tests.pdf b/papers/stellar_tests/stellar_tests.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d0b5cafbec0b51b0e821eae696742071d15c9a42 Binary files /dev/null and b/papers/stellar_tests/stellar_tests.pdf differ diff --git a/papers/stellar_tests/stellar_tests.tex b/papers/stellar_tests/stellar_tests.tex new file mode 100644 index 0000000000000000000000000000000000000000..46582455f84cb5f4c54a0cfeae6e3bc9caa52976 --- /dev/null +++ b/papers/stellar_tests/stellar_tests.tex @@ -0,0 +1,442 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{Dimming, Orbits, Clocks and Abundances:\\ Archival Tests for Technosignatures Among the Stars} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +A technology at a star could change the star's light, the motions of the bodies around +it, the timing of its variations or the composition of its surface, in ways that its +astrophysics does not. We test each kind of change against the archive that measures +it. In light, no star dims over a century, between Hipparcos and Gaia or within Gaia's +epochs without a natural cause, no transit deepens from Kepler to TESS in the light curves +themselves, the Kepler giants lack flux as often as they gain it, +no variable changes colour while holding its brightness or holds its brightness at +discrete levels, and no hot body is smaller than a white dwarf. In motion, no orbit is +too light for the light it shows, no eclipsing binary too +light for its eclipses, no transit faster than escape velocity, no planet pair in exact +commensurability, no orbit synchronised with its star beyond the tidal range, no +planet aimed at the Earth, and no planetary system or co-moving group arranged beyond +chance. In timing, no two stars share a clock beyond the period distribution, and +no star in the Earth's transit zone or on the ellipsoid of a nova flashes at the moment +it would see us or the nova. In composition, no dwarf carries fission products +or processed carbon and nitrogen without a natural cause. The one result that remains +open, a $5.5$ per cent polarisation assigned to an unreddened star in 1977, is the +subject of its own note. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Most technosignature searches look for a signal; a technology also leaves the star it +occupies changed. Material in orbit dims and reddens the starlight it intercepts and +re-radiates it in the infrared~\cite{Dyson1960,Wright2014}, a structure placed to be seen +transits in a way a planet does not~\cite{Arnold2005}, and material deposited in a star +changes its surface composition~\cite{WhitmireWright1980}. The large surveys of the last +three decades measure every star near the Sun in brightness, colour, position, motion +and composition, at many epochs, and each of these changes has a limit the star's own +physics sets. This paper puts the limits to the surveys, with a null drawn from the same +data for each, and states what remains. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item Tests of starlight: dimming over a century, between Hipparcos and Gaia and within +Gaia's epochs, transit depths from Kepler to TESS, missing flux in asteroseismic giants, colour without brightness and +brightness at discrete levels, hot bodies smaller than white dwarfs, and dust at white +dwarfs. +\item Tests of motion: orbits too light for their light, eclipsers too light for their +eclipses, transits faster than escape velocity, exact commensurabilities, synchronous +orbits, aimed transits, the orientation of orbits and the clustering of co-moving stars. +\item Tests of timing and geometry: shared clocks, the Earth's transit zone at +opposition, the ellipsoids of novae and the stars in the beams of planetary radar. +\item Tests of composition: fission products and processed carbon and nitrogen in dwarfs. +\end{enumerate} + +% ============================================================================= +\section{Light}\label{sec:light} +% ============================================================================= + +\emph{Dimming over a century.} A structure built over a century would dim its star by a +measurable amount. In the Harvard plates of DASCH~\cite{Tang2013}, the $300$ nearest +sun-like stars of $G=8$ to $11$ have differential trends against comparison stars on the +same plates with a spread of $0.12$\,mag per century, and the two above $3.5\sigma$ have +slopes in their plate series that disagree with one common slope; injected fadings are +recovered in $7$, $60$ and $83$ per cent of cases at $0.4$, $0.6$ and $1.0$\,mag per +century. + +\emph{Dimming between Hipparcos and Gaia.} For $15{,}189$ Hipparcos stars within +$100$\,pc fainter than $G=6$, Gaia's $G$ against the Hipparcos magnitude~\cite{Perryman1997} +after a colour term spreads by $0.0034$\,mag for constant single stars; $218$ stars are +fainter in Gaia by five robust deviations, every one with a natural cause: a Hipparcos +variability flag, a neighbour Hipparcos summed, a close companion that Gaia's $G$ misses, +a spotted rotator or an astrometric binary. Of the $531$ brighter in Gaia, $19$ have +none. + +\emph{Dips within Gaia and Hipparcos epochs.} Of $130$ variables within $100$\,pc whose +Gaia epoch photometry dips with a skewness above $1.5$ outside the classifier's natural +classes, every dipper is a single epoch, a single transit with its neighbours undimmed, +a close binary measured differently at each scan angle, a periodic eclipse, reddening or +a dip in $G$ alone. Of $17{,}285$ Hipparcos stars, $23$ keep a dip seen in both fields of +view, the rate beyond $100$\,pc, and the deepest is an eclipsing binary in TESS. The +$28$ Gaia alerts within $2''$ of a star within $100$\,pc are flares on red and brown +dwarfs, two dwarf-nova outbursts, a young star's flare, a flare star's slow rise and a +distant dwarf nova behind a spurious parallax. Of the stars with both a Hipparcos-to-Gaia +deviation and a NEOWISE W2 trend, $671$, the highest combined value of optical dimming +and mid-infrared brightening arises by chance at its rank $99$ per cent of the time +against the W2 trends re-paired among stars of like brightness. + +\emph{Transit depths from Kepler to TESS.} A structure under construction, or a swarm +filling in, deepens its transit at the same period and duration. Of $102$ Kepler objects +of interest that are TESS objects of interest within $6''$ and $0.2$ per cent in period, +three are deeper in TESS at $5\sigma$ with the duration held, and two shallower, the +null. Measured the same way in both missions' light curves, each transit's centre against +a line fitted to its sides, two of the deeper transits are deeper only in the +crowding-corrected flux, the pipeline's estimate of the neighbours' light in TESS's +$21''$ pixels, and one is deeper only in the TOI table; of the shallower, one is diluted +by light in the aperture beyond the crowding model and one is shallower only in the +table. + +\emph{Missing bolometric flux.} A star's seismic radius and temperature give its +luminosity; a structure intercepting its light leaves Gaia's luminosity short of it. +Among $14{,}959$ single Kepler giants with seismic radii~\cite{Yu2018} and Gaia +luminosities~\cite{Berger2020}, deficits are as common as excesses at every threshold, +$31$ against $35$ beyond $4\sigma$, and the extreme deficits have a dwarf's luminosity +and a giant's oscillations: background giants in foreground dwarfs' apertures. + +\emph{Colour without brightness, and brightness in levels.} A filter that changes a +star's colour while holding its brightness would be no spot or companion. Of $1073$ Gaia +variables brighter than $G=16$ whose $G$ scatter is below $0.003$\,mag while BP and RP +scatter by $0.02$ or more, $899$ exceed the quiet sources' tail; the $60$ highest, read +epoch by epoch, move BP and RP together, a neighbour entering both windows, or scatter in +one band alone, and none moves BP against RP. Conversely, of $1845$ ZTF spotted +variables~\cite{Chen2020}, nine have an amplitude ratio that is grey at $3\sigma$: eight +RS~CVn and BY~Dra systems above the main sequence, where the companion dilutes the spots' +colour, and a pre-main-sequence star in NGC~2264 occulted by its disk. In the TESS $20$\,s light curves +of the stars within $30$\,pc, $2096$ steps at $7\sigma$ with transitions of two minutes or +less are, $149$ of them, common to three or more stars of a sector, and the rest split +$1484$ up and $460$ down, flare rises; no light curve holds three levels each revisited. + +\emph{Bodies too small or too blue.} A body hot by colour and smaller than a white dwarf +would need a source other than a star. Among $5278$ sources within $100$\,pc with +black-body colour temperatures above $7000$\,K, $22$ with clean astrometry and photometry +lie below $0.003\,R_\odot$, all of them catalogued white dwarfs, four in the list of +infrared-faint white dwarfs of Bergeron et al.~\cite{Bergeron2022}, whose collision-induced +absorption makes a $3000$\,K photosphere read hot by colour, and none with an ultraviolet +detection. In the Euclid Q1 catalogue, none of the $14$ point sources bluer than the +Rayleigh-Jeans slope in $I_E-H_E$ is so at $3\sigma$ with clean flags, unblended and +steady. + +\emph{White dwarfs.} Dust at a white dwarf pollutes its atmosphere with the metals it +accretes, and warm material without pollution would be no disc of rock. Of $1434$ DESI +DR1 white dwarfs with unWISE W1 and W2 and parallaxes at $5\sigma$, $13$ exceed the +photosphere in both bands, five of them unblended with excesses of $900$ to $1500$\,K +and $1.6$ to $3.3$\,mag in W1, the excess of an unresolved brown dwarf rather than the +$0.3$ to $1$\,mag of a dust disc. Of $16{,}676$ white dwarfs within $100$\,pc~\cite{GentileFusillo2021}, +$25$ have W3 or W4 above the photosphere with W1 and W2 photospheric; the strongest are an +extended source in the Galactic plane, an optical ghost, single-exposure detections and +cirrus. + +% ============================================================================= +\section{Motion}\label{sec:motion} +% ============================================================================= + +\emph{Light without mass.} A luminous object that weighs nothing moves its star's +photocentre and not its spectrum. Of $42$ Gaia DR3 astrometric orbits within $100$\,pc +with HARPS or HIRES velocities, nine have photocentre orbits the velocities exclude: +close and long-period companions, a period beside Gaia's scanning law, and blended +double-lined stars, two of which Gaia itself resolves on part of its transits. + +\emph{Eclipsers too light for their eclipses.} An opaque screen eclipses without moving +its star. Among $956$ Gaia eclipsing binaries deeper than $0.75$\,mag with ten or more RVS +transits, the observed velocity amplitude over the least a main-sequence eclipser of the +depth's size demands has a median of $0.73$, and the ten below $0.1$ are a saturated +giant, an unphysical model depth, two binaries whose blended lines read low, a Kepler +system whose true period and depth differ from Gaia's, and five stars flat at Gaia's +period in ZTF and TESS: Gaia's depths and periods, not the velocities, fail. + +\emph{Transits faster than escape velocity.} A bound body crosses its star no faster than +the star's surface escape speed, which sets a floor on a full transit's duration. Of the +Kepler threshold-crossing events with characterised hosts~\cite{Berger2020}, $281$ fall +below $0.8$ of the floor at their fitted geometry: $253$ on giants, $26$ pulsators, an +eclipsing binary, a KOI with centroid flags and a single cadence flagged for cosmic rays. +Of the TESS objects of interest, $242$ fall below the floor at zero impact parameter: +giants, contact binaries and pulsators, published false positives, and $42$ candidates +without an impact parameter in the catalogue. Their TESS light curves, folded at the +catalogue ephemeris and fitted with a trapezoid whose flat-bottom fraction bounds the +impact parameter, give $20$ a duration that a bound orbit reaches at some impact +parameter, four a V shape that leaves a grazing chord, and three a flat bottom whose +largest allowed impact parameter keeps the crossing within the escape speed; five show +no transit at the catalogue ephemeris, and ten have no TESS light curve in the public +archives. + +\emph{Commensurability and synchrony.} An engineered system could hold its planets in +exact resonance or its orbits in step with its star. Of $2393$ planet pairs, none lies +within $10^{-5}$ of a small-integer ratio, and five within $10^{-4}$ against $3.4$, in the +librating chains of TOI-1136, Kepler-223 and HD~110067. Of $541$ Kepler planets at +periods of $10$\,d or more around hosts with rotation periods~\cite{McQuillan2013,Mazeh2015}, +$25$ orbit within $2$ per cent of the rotation period, its double or its half, against +$23.4\pm4.6$ with the periods shuffled, and the four $1{:}1$ matches drift in rotational +phase by $0.17$ to $0.25$ of a cycle over four years, as spots do. + +\emph{Aimed transits.} A structure placed to be seen from the Earth transits at a small +impact parameter. The fitted impact parameters of $2294$ Kepler candidates and planets +pile up at zero where the fits of injected planets do too, through poorly constrained +fits at the parameter's lower bound, and the $153$ planets with impact parameters +measured to $0.1$ hold $7$ below $0.05$ against $11.3$ expected. + +\emph{Orbits and groups.} Of $1361$ Gaia astrometric companions that may be +substellar~\cite{Gaia2023nss}, $6.2$ per cent have an orbital pole within $15^\circ$ of a +Galactic pole against $6.3$ per cent of the stellar companions at the same latitudes; +the $74$ whose upper mass bound lies below $0.2\,M_\odot$ hold nine against $4.7\pm2.1$ +($p=0.04$), one reading of a small set among several. Of +$6044$ APOGEE dwarfs within $100$\,pc with velocities, the $31$ groups within $10$\,pc and +$1$\,\kms\ are the Hyades and co-natal pairs, with metallicity spreads only at the +pipeline's temperature edge; and the $2977$ wide binaries of the coverage store share no +anomaly between their members beyond the permutations. + +\emph{Imaging candidates.} Of the candidate companions of the Gemini/NICI and NaCo direct +imaging surveys with two or more epochs, the few off both the co-moving and the +background track are known brown dwarfs in orbital motion, a background star on its +track in Gaia DR3, and a faint source moving $200$\,mas\,yr$^{-1}$ of its own, as a field +brown dwarf would. + +% ============================================================================= +\section{Timing and geometry}\label{sec:timing} +% ============================================================================= + +\emph{Shared clocks.} Beacons built by one civilization could share a period. Among +$770{,}043$ ZTF periodic variables~\cite{Chen2020}, pairs more than $10''$ apart that agree +in period scale linearly with the tolerance, as a smooth period distribution gives, and +those that agree in phase as well number $42{,}112$ against $41{,}384$ to $42{,}020$ with +the phases shuffled; the largest groups sit on periods the catalogue repeats exactly. + +\emph{The Earth's transit zone at opposition.} A star in the Earth's transit zone sees the +Earth transit the Sun at our opposition, the moment a signal timed to that event would +leave. Of the stars within $100$\,pc and $0.27^\circ$ of the ecliptic with TESS two-minute +data at opposition, $27$ windows of sectors $42$ to $46$ hold no lone flash against $0.37$ +expected and no brightening against $1.12$, and $12$ windows of sectors $70$ to $72$ hold +one lone flash against $0.53$. + +\emph{Nova ellipsoids.} A civilization that saw a nova could signal when its light reached +them, and stars on the ellipsoid with the nova and the Earth at its foci would be seen to +do so now~\cite{Davenport2022,Cabrales2024}. Of the stars within $100$\,pc on the ellipsoids of T~CrB's +1866 and 1946 eruptions, GK~Per, V603~Aql, RR~Pic, DQ~Her, CP~Pup, V1500~Cyg and the +supernovae of 1572 and 1604, observed by TESS at their arrival, the flashes and light +curves with flashes match the same stars' other sectors, the one excess carried by +active binaries whose flares follow the sectors. + +\emph{Radar beams and beams between stars.} A star in the beam of a planetary radar +would reply after twice its light-travel time. The $813$ stars within $100$\,pc in the +beams of every published radar measurement from 1968 to 2025 are no closer than +$48.9$ light years, so no reply is due before 2117. And of the $2705$ stars within +$20$\,pc, $37$ pairs lie on opposite sides of the Earth within a $0.25^\circ$ beam, as many +as random directions give. + +% ============================================================================= +\section{Composition}\label{sec:composition} +% ============================================================================= + +\emph{Fission products.} Fission waste deposited in a star raises zirconium, molybdenum, +ruthenium, barium, neodymium and europium together in a pattern no nucleosynthesis +makes~\cite{WhitmireWright1980}. Among $50{,}742$ GALAH DR4 stars~\cite{Buder2025} with clean +abundances of the six, fission-like patterns are rarer than the mirror pattern at every +threshold, $71$ against $230$ above $5\sigma$, and the $23$ FGK dwarfs with molybdenum and +ruthenium all lie within $2.5\sigma$ of solar. + +\emph{Processed carbon and nitrogen.} A dwarf whose surface carries the products of the +CNO cycle has gained them from a companion. Of $31{,}351$ APOGEE dwarfs, $91$ are +nitrogen-rich at $5\sigma$ against the locus in temperature and metallicity and none +carbon-rich; $57$ of the $91$ are Gaia binaries against $28$ per cent of random dwarfs, the +mark of transfer from an evolved companion, $78$ carry binary, s-process, sodium, +rotation, evolution or temperature-edge flags, and the $13$ that carry none all carry +the pipeline's microturbulence grid-edge warning, which biases carbon and nitrogen in +dwarfs. + +\begin{table}[t] +\centering\small +\caption{The tests, their samples and results.} +\label{tab:tests} +\begin{tabular}{>{\raggedright\arraybackslash}p{0.24\textwidth} >{\raggedright\arraybackslash}p{0.3\textwidth} >{\raggedright\arraybackslash}p{0.38\textwidth}} +\toprule +Test & Sample & Result \\ +\midrule +Century dimming & $300$ DASCH stars & no consistent trend \\ +Hipparcos to Gaia & $15{,}189$ stars & every dimming natural \\ +Gaia and Hipparcos dips & $130$; $17{,}285$ stars & natural, at the background rate \\ +Transit depths & $102$ KOI-TOI pairs & crowding corrections, catalogue depths \\ +Missing flux & $14{,}959$ giants & deficits as common as excesses \\ +Colour without brightness & $1073$ Gaia variables & neighbours in the windows \\ +Discrete levels & $1806$ TESS sectors & flare rises and shared steps \\ +Too small or too blue & $5278$; $14$ sources & infrared-faint white dwarfs; flags \\ +White-dwarf dust & $1434$; $16{,}676$ white dwarfs & brown dwarfs, artefacts \\ +Light without mass & $42$ orbits & companions and blends \\ +Light eclipsers & $956$ binaries & Gaia's depths and periods \\ +Escape velocity & Kepler, TESS events & giants, pulsators, false positives, chords \\ +Commensurability & $2393$ pairs & librating chains \\ +Synchrony & $541$ planets & at the chance rate \\ +Aimed transits & $2294$ planets & the fits' pile-up \\ +Orbit poles, groups & $1361$ orbits; $6044$ dwarfs & at chance; co-natal \\ +Shared clocks & $770{,}043$ variables & at the period distribution \\ +Transit zone at opposition & $39$ windows & at the background rate \\ +Nova ellipsoids & ten eruptions & at the background rate \\ +Fission products & $50{,}742$ stars & rarer than the mirror \\ +Processed CNO & $31{,}351$ dwarfs & binaries and pipeline flags \\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +Dyson~\cite{Dyson1960} proposed the infrared signature of a star's surroundings +reprocessed, and Wright et al.~\cite{Wright2014} set out the search for it; Arnold~\cite{Arnold2005} +proposed artificial transits, Whitmire and Wright~\cite{WhitmireWright1980} fission waste in +a star, and Davenport et al.~\cite{Davenport2022,Cabrales2024} searched the ellipsoid of +SN~1987A for signals timed to it. The tests here rest on the surveys' own catalogues: Hipparcos and +Gaia~\cite{Perryman1997,Gaia2023nss}, DASCH~\cite{Tang2013}, the Kepler giants' +asteroseismology~\cite{Yu2018} and luminosities~\cite{Berger2020}, ZTF's periodic +variables~\cite{Chen2020}, the Kepler rotation periods~\cite{McQuillan2013,Mazeh2015}, the +Gaia white dwarfs~\cite{GentileFusillo2021,Bergeron2022} and GALAH~\cite{Buder2025}. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No test finds a star changed in light, motion, timing or composition beyond what its +astrophysics and the surveys' own systematics give. Dimming is variability, blending or +an epoch's error; deepened transits are crowding corrections and catalogue depths; missing +flux is a background giant; colour without brightness is a +neighbour; the hot small bodies are infrared-faint white dwarfs; light orbits are blends +and companions; light eclipsers are Gaia's depths; fast transits are giants, pulsators +and chords away from the centre; commensurabilities are librating chains; aimed transits are the fits' +degeneracy; shared clocks are the period distribution; the transit zone and the nova +ellipsoids hold flashes at the background rate; and the abundance outliers are binaries +and pipeline flags. The reach of each test is its survey's: the century test reaches +fadings of about $0.6$\,mag per century, the Hipparcos-to-Gaia test $0.02$\,mag over +$25$ years, the missing-flux test deficits of $45$ per cent, and the motion tests the +precision of Gaia's astrometry and the archives' velocities. + +\section*{Acknowledgements} + +This work uses Gaia DR3 and Hipparcos (ESA; Gaia DPAC), DASCH (Harvard College +Observatory), Kepler and TESS through MAST, ZTF through IRSA, NEOWISE and AllWISE (IRSA), +APOGEE (SDSS-IV), GALAH DR4, DESI DR1 through the Astro Data Lab, Euclid Q1 (ESA), the +NASA Exoplanet Archive and ExoFOP, the Gemini/NICI and VLT/NaCo survey tables, JPL's radar +astrometry, and SIMBAD and VizieR at CDS, Strasbourg. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Dyson1960} +F.~J. Dyson, Search for artificial stellar sources of infrared radiation, \emph{Science} +\textbf{131}, 1667 (1960). + +\bibitem{Wright2014} +J.~T. Wright, B.~Mullan, S.~Sigurdsson and M.~S. Povich, The $\hat{G}$ infrared search for +extraterrestrial civilizations with large energy supplies. I. Background and +justification, \emph{Astrophys. J.} \textbf{792}, 26 (2014). + +\bibitem{Arnold2005} +L.~F.~A. Arnold, Transit light-curve signatures of artificial objects, \emph{Astrophys. +J.} \textbf{627}, 534 (2005). + +\bibitem{WhitmireWright1980} +D.~P. Whitmire and D.~P. Wright, Nuclear waste spectrum as evidence of technological +extraterrestrial civilizations, \emph{Icarus} \textbf{42}, 149 (1980). + +\bibitem{Tang2013} +S.~Tang, J.~Grindlay, E.~Los and M.~Servillat, Improved photometry for the DASCH pipeline, +\emph{Publ. Astron. Soc. Pac.} \textbf{125}, 857 (2013). + +\bibitem{Perryman1997} +M.~A.~C. Perryman, L.~Lindegren, J.~Kovalevsky, et al., The HIPPARCOS catalogue, +\emph{Astron. Astrophys.} \textbf{323}, L49 (1997). + +\bibitem{Yu2018} +J.~Yu, D.~Huber, T.~R. Bedding, et al., Asteroseismology of 16,000 Kepler red giants: +global oscillation parameters, masses, and radii, \emph{Astrophys. J. Suppl.} +\textbf{236}, 42 (2018). + +\bibitem{Berger2020} +T.~A. Berger, D.~Huber, J.~L. van Saders, et al., The Gaia-Kepler stellar properties +catalog. I. Homogeneous fundamental properties for 186,301 Kepler stars, \emph{Astron. +J.} \textbf{159}, 280 (2020). + +\bibitem{Chen2020} +X.~Chen, S.~Wang, L.~Deng, R.~de~Grijs, M.~Yang and H.~Tian, The Zwicky Transient Facility +catalog of periodic variable stars, \emph{Astrophys. J. Suppl.} \textbf{249}, 18 (2020). + +\bibitem{Bergeron2022} +P.~Bergeron, P.~Dufour, G.~Fontaine, et al., On the nature of ultracool white dwarfs: +not so cool after all, \emph{Astrophys. J.} \textbf{934}, 36 (2022). + +\bibitem{GentileFusillo2021} +N.~P. Gentile Fusillo, P.-E. Tremblay, E.~Cukanovaite, et al., A catalogue of white dwarfs +in Gaia EDR3, \emph{Mon. Not. R. Astron. Soc.} \textbf{508}, 3877 (2021). + +\bibitem{McQuillan2013} +A.~McQuillan, T.~Mazeh and S.~Aigrain, Stellar rotation periods of the Kepler objects of +interest: a dearth of close-in planets around fast rotators, \emph{Astrophys. J. Lett.} +\textbf{775}, L11 (2013). + +\bibitem{Mazeh2015} +T.~Mazeh, H.~B. Perets, A.~McQuillan and E.~S. Goldstein, Photometric amplitude +distribution of stellar rotation of KOIs: indication for spin-orbit alignment of cool +stars and high obliquity for hot stars, \emph{Astrophys. J.} \textbf{801}, 3 (2015). + +\bibitem{Gaia2023nss} +Gaia Collaboration, F.~Arenou, C.~Babusiaux, et al., Gaia Data Release 3: stellar +multiplicity, a teaser for the hidden treasure, \emph{Astron. Astrophys.} \textbf{674}, +A34 (2023). + +\bibitem{Davenport2022} +J.~R.~A. Davenport, B.~Cabrales, S.~Sheikh, et al., Searching the SETI ellipsoid with +Gaia, \emph{Astron. J.} \textbf{164}, 117 (2022). + +\bibitem{Cabrales2024} +B.~Cabrales, J.~R.~A. Davenport, S.~Z. Sheikh, et al., Searching the SN 1987A SETI +ellipsoid with TESS, arXiv:2402.11037 (2024). + +\bibitem{Buder2025} +S.~Buder, J.~Kos, E.~X. Wang, et al., The GALAH survey: data release 4, +arXiv:2409.19858 (2024). + +\end{thebibliography} + +\end{document} diff --git a/papers/subcutoff_radio/data/stereo_a_2008.json b/papers/subcutoff_radio/data/stereo_a_2008.json new file mode 100644 index 0000000000000000000000000000000000000000..19b7bb8f206975a8ef579090d120b2aecc18c4a4 --- /dev/null +++ b/papers/subcutoff_radio/data/stereo_a_2008.json @@ -0,0 +1,16 @@ +{ + "year": 2008, + "craft": "ahead", + "days": null, + "persistent": 7, + "explained": { + "1375.0": "local to STEREO (Wind 0.000 within 25 kHz in 2008)", + "1675.0": "local to STEREO (Wind 0.000 within 25 kHz in 2008)", + "1975.0": "amateur band", + "2825.0": "aeronautical mobile band", + "7175.0": "shortwave broadcast band", + "225.0": "auroral kilometric radiation range", + "4275.0": "maritime mobile band" + }, + "left": [] +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/stereo_a_2012.json b/papers/subcutoff_radio/data/stereo_a_2012.json new file mode 100644 index 0000000000000000000000000000000000000000..c46be547e6fd55b136fd6ca8a597fcc3f9956f8a --- /dev/null +++ b/papers/subcutoff_radio/data/stereo_a_2012.json @@ -0,0 +1,17 @@ +{ + "year": 2012, + "craft": "ahead", + "days": null, + "persistent": 8, + "explained": { + "1675.0": "local to STEREO (Wind 0.001 within 25 kHz in 2012)", + "725.0": "local to STEREO (Wind 0.033 within 25 kHz in 2012)", + "2075.0": "local to STEREO (Wind 0.001 within 25 kHz in 2012)", + "1275.0": "local to STEREO (Wind 0.004 within 25 kHz in 2012)", + "1475.0": "local to STEREO (Wind 0.002 within 25 kHz in 2012)", + "7075.0": "amateur band", + "3025.0": "aeronautical mobile band", + "1875.0": "amateur band" + }, + "left": [] +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/stereo_a_2020.json b/papers/subcutoff_radio/data/stereo_a_2020.json new file mode 100644 index 0000000000000000000000000000000000000000..48ad4ed96f5ff823917e0598cc03d9fe542df9d1 --- /dev/null +++ b/papers/subcutoff_radio/data/stereo_a_2020.json @@ -0,0 +1,19 @@ +{ + "year": 2020, + "craft": "ahead", + "days": null, + "persistent": 10, + "explained": { + "1675.0": "local to STEREO (Wind 0.000 within 25 kHz in 2020)", + "1275.0": "local to STEREO (Wind 0.001 within 25 kHz in 2020)", + "725.0": "local to STEREO (Wind 0.010 within 25 kHz in 2020)", + "3025.0": "aeronautical mobile band", + "1975.0": "amateur band", + "1475.0": "local to STEREO (Wind 0.001 within 25 kHz in 2020)", + "6925.0": "local to STEREO (Wind 0.000 within 25 kHz in 2020)", + "1875.0": "amateur band", + "10425.0": "local to STEREO (Wind 0.006 within 25 kHz in 2020)", + "3225.0": "shortwave broadcast band" + }, + "left": [] +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/stereo_b_2010.json b/papers/subcutoff_radio/data/stereo_b_2010.json new file mode 100644 index 0000000000000000000000000000000000000000..2b783ea09f8d6fcd4ccfc3517ae6b69befe428e3 --- /dev/null +++ b/papers/subcutoff_radio/data/stereo_b_2010.json @@ -0,0 +1,15 @@ +{ + "year": 2010, + "craft": "behind", + "days": null, + "persistent": 6, + "explained": { + "1975.0": "amateur band", + "10425.0": "local to STEREO (Wind 0.010 within 25 kHz in 2010)", + "6975.0": "local to STEREO (Wind 0.002 within 25 kHz in 2010)", + "4075.0": "maritime mobile band", + "10475.0": "local to STEREO (Wind 0.001 within 25 kHz in 2010)", + "5925.0": "shortwave broadcast band" + }, + "left": [] +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/stereo_b_2012.json b/papers/subcutoff_radio/data/stereo_b_2012.json new file mode 100644 index 0000000000000000000000000000000000000000..4cc9964e0659fafa1cc7caf1614168cb8eff6dd8 --- /dev/null +++ b/papers/subcutoff_radio/data/stereo_b_2012.json @@ -0,0 +1,15 @@ +{ + "year": 2012, + "craft": "behind", + "days": 366, + "persistent": 6, + "explained": { + "1975.0": "amateur band", + "10425.0": "local to STEREO (Wind 0.006 within 25 kHz in 2012)", + "6975.0": "local to STEREO (Wind 0.003 within 25 kHz in 2012)", + "4075.0": "maritime mobile band", + "5925.0": "shortwave broadcast band", + "10475.0": "local to STEREO (Wind 0.003 within 25 kHz in 2012)" + }, + "left": [] +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/wind_1995.json b/papers/subcutoff_radio/data/wind_1995.json new file mode 100644 index 0000000000000000000000000000000000000000..0c21b6ce147792ba612c1ae06328d2b3cbef3635 --- /dev/null +++ b/papers/subcutoff_radio/data/wind_1995.json @@ -0,0 +1,191 @@ +{ + "year": 1995, + "minutes": 525600, + "skipped_days": 0, + "RAD1": { + "persistent": 55, + "explained": { + "60.0": "list-mode channel (neighbours interpolated 96 and 96 per cent of minutes)", + "196.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "272.0": "list-mode channel (neighbours interpolated 97 and 96 per cent of minutes)", + "64.0": "list-mode channel (neighbours interpolated 39 and 96 per cent of minutes)", + "200.0": "list-mode channel (neighbours interpolated 36 and 97 per cent of minutes)", + "276.0": "list-mode channel (neighbours interpolated 45 and 91 per cent of minutes)", + "80.0": "list-mode channel (neighbours interpolated 93 and 97 per cent of minutes)", + "268.0": "list-mode channel (neighbours interpolated 97 and 45 per cent of minutes)", + "192.0": "list-mode channel (neighbours interpolated 97 and 36 per cent of minutes)", + "68.0": "list-mode channel (neighbours interpolated 96 and 95 per cent of minutes)", + "56.0": "list-mode channel (neighbours interpolated 80 and 39 per cent of minutes)", + "148.0": "list-mode channel (neighbours interpolated 97 and 94 per cent of minutes)", + "124.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "84.0": "list-mode channel (neighbours interpolated 46 and 97 per cent of minutes)", + "204.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "152.0": "list-mode channel (neighbours interpolated 33 and 97 per cent of minutes)", + "76.0": "list-mode channel (neighbours interpolated 95 and 46 per cent of minutes)", + "104.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "40.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "52.0": "list-mode channel (neighbours interpolated 95 and 96 per cent of minutes)", + "48.0": "list-mode channel (neighbours interpolated 94 and 80 per cent of minutes)", + "280.0": "list-mode channel (neighbours interpolated 96 and 97 per cent of minutes)", + "128.0": "list-mode channel (neighbours interpolated 48 and 97 per cent of minutes)", + "120.0": "list-mode channel (neighbours interpolated 95 and 48 per cent of minutes)", + "44.0": "list-mode channel (neighbours interpolated 87 and 95 per cent of minutes)", + "36.0": "list-mode channel (neighbours interpolated 95 and 87 per cent of minutes)", + "156.0": "list-mode channel (neighbours interpolated 94 and 97 per cent of minutes)", + "144.0": "list-mode channel (neighbours interpolated 97 and 33 per cent of minutes)", + "100.0": "list-mode channel (neighbours interpolated 94 and 49 per cent of minutes)", + "108.0": "list-mode channel (neighbours interpolated 49 and 97 per cent of minutes)", + "88.0": "list-mode channel (neighbours interpolated 97 and 95 per cent of minutes)", + "72.0": "list-mode channel (neighbours interpolated 96 and 93 per cent of minutes)", + "388.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "32.0": "list-mode channel (neighbours interpolated 86 and 94 per cent of minutes)", + "28.0": "list-mode channel (neighbours interpolated 94 and 95 per cent of minutes)", + "384.0": "list-mode channel (neighbours interpolated 97 and 52 per cent of minutes)", + "264.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "132.0": "list-mode channel (neighbours interpolated 97 and 95 per cent of minutes)", + "392.0": "list-mode channel (neighbours interpolated 52 and 97 per cent of minutes)", + "160.0": "list-mode channel (neighbours interpolated 97 and 91 per cent of minutes)", + "116.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "96.0": "list-mode channel (neighbours interpolated 95 and 97 per cent of minutes)", + "188.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "112.0": "list-mode channel (neighbours interpolated 97 and 95 per cent of minutes)", + "216.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "220.0": "list-mode channel (neighbours interpolated 91 and 94 per cent of minutes)", + "164.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "224.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "208.0": "list-mode channel (neighbours interpolated 97 and 97 per cent of minutes)", + "284.0": "list-mode channel (neighbours interpolated 91 and 97 per cent of minutes)", + "212.0": "list-mode channel (neighbours interpolated 97 and 91 per cent of minutes)", + "380.0": "list-mode channel (neighbours interpolated 94 and 97 per cent of minutes)", + "168.0": "list-mode channel (neighbours interpolated 91 and 97 per cent of minutes)", + "172.0": "list-mode channel (neighbours interpolated 97 and 94 per cent of minutes)", + "288.0": "list-mode channel (neighbours interpolated 97 and 94 per cent of minutes)" + }, + "left": [] + }, + "RAD2": { + "persistent": 119, + "explained": { + "11675.0": "shortwave broadcast band", + "11725.0": "shortwave broadcast band", + "11775.0": "shortwave broadcast band", + "11925.0": "shortwave broadcast band", + "11625.0": "shortwave broadcast band", + "9575.0": "shortwave broadcast band", + "11975.0": "shortwave broadcast band", + "13625.0": "shortwave broadcast band", + "12575.0": "maritime mobile band", + "12025.0": "shortwave broadcast band", + "13725.0": "shortwave broadcast band", + "9525.0": "shortwave broadcast band", + "9725.0": "shortwave broadcast band", + "9825.0": "shortwave broadcast band", + "9625.0": "shortwave broadcast band", + "13775.0": "shortwave broadcast band", + "11875.0": "shortwave broadcast band", + "9675.0": "shortwave broadcast band", + "13675.0": "shortwave broadcast band", + "12875.0": "maritime mobile band", + "8425.0": "maritime mobile band", + "12075.0": "shortwave broadcast band", + "9875.0": "shortwave broadcast band", + "12925.0": "maritime mobile band", + "11825.0": "shortwave broadcast band", + "10325.0": "terrestrial (24 h modulation)", + "13525.0": "out-of-band broadcasting", + "7275.0": "shortwave broadcast band", + "9925.0": "shortwave broadcast band", + "11025.0": "terrestrial (24 h modulation)", + "12725.0": "maritime mobile band", + "9775.0": "shortwave broadcast band", + "12975.0": "maritime mobile band", + "12125.0": "shortwave broadcast band", + "7225.0": "shortwave broadcast band", + "6175.0": "shortwave broadcast band", + "11575.0": "shortwave broadcast band", + "13575.0": "shortwave broadcast band", + "7175.0": "shortwave broadcast band", + "11125.0": "terrestrial (24 h modulation)", + "13075.0": "maritime mobile band", + "9475.0": "shortwave broadcast band", + "12775.0": "maritime mobile band", + "7125.0": "amateur band", + "11475.0": "out-of-band broadcasting", + "12825.0": "maritime mobile band", + "6025.0": "shortwave broadcast band", + "10975.0": "terrestrial (24 h modulation)", + "8475.0": "maritime mobile band", + "12175.0": "out-of-band broadcasting", + "9975.0": "out-of-band broadcasting", + "7425.0": "shortwave broadcast band", + "6075.0": "shortwave broadcast band", + "12675.0": "maritime mobile band", + "9425.0": "shortwave broadcast band", + "11425.0": "aeronautical mobile band", + "9025.0": "aeronautical mobile band", + "11075.0": "terrestrial (24 h modulation)", + "10375.0": "terrestrial (24 h modulation)", + "5975.0": "shortwave broadcast band", + "6975.0": "terrestrial (24 h modulation)", + "6125.0": "shortwave broadcast band", + "13025.0": "maritime mobile band", + "13225.0": "maritime mobile band", + "7675.0": "terrestrial (24 h modulation)", + "10825.0": "terrestrial (24 h modulation)", + "13475.0": "out-of-band broadcasting", + "7575.0": "out-of-band broadcasting", + "10425.0": "terrestrial (24 h modulation)", + "7325.0": "shortwave broadcast band", + "10575.0": "terrestrial (24 h modulation)", + "10525.0": "terrestrial (24 h modulation)", + "9375.0": "shortwave broadcast band", + "5925.0": "shortwave broadcast band", + "8525.0": "maritime mobile band", + "7525.0": "out-of-band broadcasting", + "8675.0": "maritime mobile band", + "7375.0": "shortwave broadcast band", + "10125.0": "aeronautical mobile band", + "9275.0": "out-of-band broadcasting", + "7875.0": "terrestrial (24 h modulation)", + "11525.0": "out-of-band broadcasting", + "8075.0": "terrestrial (24 h modulation)", + "7075.0": "amateur band", + "12375.0": "maritime mobile band", + "8575.0": "maritime mobile band", + "11325.0": "aeronautical mobile band", + "9075.0": "terrestrial (24 h modulation)", + "6925.0": "terrestrial (24 h modulation)", + "9125.0": "terrestrial (24 h modulation)", + "8025.0": "Wind's own line", + "13425.0": "out-of-band broadcasting", + "11375.0": "aeronautical mobile band", + "6525.0": "maritime mobile band", + "13125.0": "maritime mobile band", + "8625.0": "maritime mobile band", + "12625.0": "maritime mobile band", + "5825.0": "out-of-band broadcasting", + "10175.0": "terrestrial (24 h modulation)", + "9325.0": "out-of-band broadcasting", + "13375.0": "aeronautical mobile band", + "7775.0": "terrestrial (24 h modulation)", + "12225.0": "maritime mobile band", + "7975.0": "terrestrial (24 h modulation)", + "7475.0": "shortwave broadcast band", + "9225.0": "out-of-band broadcasting", + "10275.0": "terrestrial (24 h modulation)", + "9175.0": "terrestrial (24 h modulation)", + "7925.0": "terrestrial (24 h modulation)", + "13175.0": "maritime mobile band", + "6375.0": "maritime mobile band", + "8325.0": "maritime mobile band", + "6725.0": "aeronautical mobile band", + "10725.0": "terrestrial (24 h modulation)", + "10875.0": "terrestrial (24 h modulation)", + "8125.0": "terrestrial (24 h modulation)", + "7825.0": "terrestrial leakage (day-to-day Spearman 0.82 with the broadcast lines)", + "1525.0": "the receiver's own line (day-to-day Spearman -0.39 with the broadcast lines)", + "1275.0": "the receiver's own line (day-to-day Spearman -0.57 with the broadcast lines)" + }, + "left": [] + } +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/wind_1996.json b/papers/subcutoff_radio/data/wind_1996.json new file mode 100644 index 0000000000000000000000000000000000000000..99deabd296dee024b62e35653cf0484d4fb0294d --- /dev/null +++ b/papers/subcutoff_radio/data/wind_1996.json @@ -0,0 +1,258 @@ +{ + "year": 1996, + "minutes": 527040, + "skipped_days": 0, + "RAD1": { + "persistent": 88, + "explained": { + "40.0": "list-mode channel (neighbours interpolated 87 and 87 per cent of minutes)", + "60.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "196.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "36.0": "list-mode channel (neighbours interpolated 92 and 81 per cent of minutes)", + "44.0": "list-mode channel (neighbours interpolated 81 and 87 per cent of minutes)", + "64.0": "list-mode channel (neighbours interpolated 47 and 98 per cent of minutes)", + "48.0": "list-mode channel (neighbours interpolated 87 and 76 per cent of minutes)", + "272.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "200.0": "list-mode channel (neighbours interpolated 33 and 98 per cent of minutes)", + "56.0": "list-mode channel (neighbours interpolated 76 and 47 per cent of minutes)", + "80.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "52.0": "list-mode channel (neighbours interpolated 87 and 98 per cent of minutes)", + "32.0": "list-mode channel (neighbours interpolated 85 and 87 per cent of minutes)", + "268.0": "list-mode channel (neighbours interpolated 98 and 58 per cent of minutes)", + "276.0": "list-mode channel (neighbours interpolated 58 and 98 per cent of minutes)", + "192.0": "list-mode channel (neighbours interpolated 98 and 33 per cent of minutes)", + "68.0": "list-mode channel (neighbours interpolated 98 and 88 per cent of minutes)", + "124.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "148.0": "list-mode channel (neighbours interpolated 98 and 78 per cent of minutes)", + "204.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "84.0": "list-mode channel (neighbours interpolated 51 and 98 per cent of minutes)", + "28.0": "list-mode channel (neighbours interpolated 96 and 92 per cent of minutes)", + "104.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "76.0": "list-mode channel (neighbours interpolated 88 and 51 per cent of minutes)", + "152.0": "list-mode channel (neighbours interpolated 49 and 98 per cent of minutes)", + "120.0": "list-mode channel (neighbours interpolated 89 and 63 per cent of minutes)", + "176.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "128.0": "list-mode channel (neighbours interpolated 63 and 98 per cent of minutes)", + "100.0": "list-mode channel (neighbours interpolated 98 and 53 per cent of minutes)", + "280.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "72.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "256.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "224.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "108.0": "list-mode channel (neighbours interpolated 53 and 98 per cent of minutes)", + "156.0": "list-mode channel (neighbours interpolated 78 and 98 per cent of minutes)", + "292.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "180.0": "list-mode channel (neighbours interpolated 78 and 98 per cent of minutes)", + "88.0": "list-mode channel (neighbours interpolated 98 and 89 per cent of minutes)", + "388.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "144.0": "list-mode channel (neighbours interpolated 98 and 49 per cent of minutes)", + "332.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "384.0": "list-mode channel (neighbours interpolated 98 and 62 per cent of minutes)", + "132.0": "list-mode channel (neighbours interpolated 98 and 88 per cent of minutes)", + "264.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "172.0": "list-mode channel (neighbours interpolated 98 and 78 per cent of minutes)", + "260.0": "list-mode channel (neighbours interpolated 79 and 98 per cent of minutes)", + "428.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "228.0": "list-mode channel (neighbours interpolated 79 and 98 per cent of minutes)", + "116.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "288.0": "list-mode channel (neighbours interpolated 98 and 80 per cent of minutes)", + "252.0": "list-mode channel (neighbours interpolated 98 and 79 per cent of minutes)", + "296.0": "list-mode channel (neighbours interpolated 80 and 98 per cent of minutes)", + "220.0": "list-mode channel (neighbours interpolated 98 and 79 per cent of minutes)", + "376.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "380.0": "list-mode channel (neighbours interpolated 81 and 98 per cent of minutes)", + "136.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "328.0": "list-mode channel (neighbours interpolated 98 and 80 per cent of minutes)", + "112.0": "list-mode channel (neighbours interpolated 98 and 89 per cent of minutes)", + "424.0": "list-mode channel (neighbours interpolated 98 and 75 per cent of minutes)", + "96.0": "list-mode channel (neighbours interpolated 89 and 98 per cent of minutes)", + "336.0": "list-mode channel (neighbours interpolated 80 and 98 per cent of minutes)", + "484.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "372.0": "list-mode channel (neighbours interpolated 98 and 81 per cent of minutes)", + "392.0": "list-mode channel (neighbours interpolated 62 and 98 per cent of minutes)", + "92.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "188.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "432.0": "list-mode channel (neighbours interpolated 75 and 98 per cent of minutes)", + "184.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "480.0": "list-mode channel (neighbours interpolated 98 and 78 per cent of minutes)", + "140.0": "list-mode channel (neighbours interpolated 88 and 98 per cent of minutes)", + "232.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "548.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "284.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "488.0": "list-mode channel (neighbours interpolated 78 and 98 per cent of minutes)", + "420.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "544.0": "list-mode channel (neighbours interpolated 79 and 81 per cent of minutes)", + "300.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "160.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "168.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "248.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "368.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "24.0": "list-mode channel (neighbours interpolated 0 and 85 per cent of minutes)", + "324.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "216.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "340.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "624.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "476.0": "list-mode channel (neighbours interpolated 98 and 98 per cent of minutes)", + "552.0": "list-mode channel (neighbours interpolated 81 and 98 per cent of minutes)" + }, + "left": [] + }, + "RAD2": { + "persistent": 153, + "explained": { + "11775.0": "shortwave broadcast band", + "11675.0": "shortwave broadcast band", + "11925.0": "shortwave broadcast band", + "13625.0": "shortwave broadcast band", + "11725.0": "shortwave broadcast band", + "9575.0": "shortwave broadcast band", + "12025.0": "shortwave broadcast band", + "9525.0": "shortwave broadcast band", + "12575.0": "maritime mobile band", + "12075.0": "shortwave broadcast band", + "11975.0": "shortwave broadcast band", + "11875.0": "shortwave broadcast band", + "13675.0": "shortwave broadcast band", + "13775.0": "shortwave broadcast band", + "9625.0": "shortwave broadcast band", + "8425.0": "maritime mobile band", + "13725.0": "shortwave broadcast band", + "9675.0": "shortwave broadcast band", + "9725.0": "shortwave broadcast band", + "9875.0": "shortwave broadcast band", + "9825.0": "shortwave broadcast band", + "12875.0": "maritime mobile band", + "11625.0": "shortwave broadcast band", + "7275.0": "shortwave broadcast band", + "9475.0": "shortwave broadcast band", + "10325.0": "terrestrial (24 h modulation)", + "9925.0": "shortwave broadcast band", + "12925.0": "maritime mobile band", + "11825.0": "shortwave broadcast band", + "12725.0": "maritime mobile band", + "9775.0": "shortwave broadcast band", + "6175.0": "shortwave broadcast band", + "12125.0": "shortwave broadcast band", + "7175.0": "shortwave broadcast band", + "13575.0": "shortwave broadcast band", + "7225.0": "shortwave broadcast band", + "12975.0": "maritime mobile band", + "7125.0": "amateur band", + "11575.0": "shortwave broadcast band", + "9025.0": "aeronautical mobile band", + "9975.0": "out-of-band broadcasting", + "6025.0": "shortwave broadcast band", + "11025.0": "terrestrial (24 h modulation)", + "13075.0": "maritime mobile band", + "6075.0": "shortwave broadcast band", + "9425.0": "shortwave broadcast band", + "13225.0": "maritime mobile band", + "5975.0": "shortwave broadcast band", + "7425.0": "shortwave broadcast band", + "11125.0": "terrestrial (24 h modulation)", + "7325.0": "shortwave broadcast band", + "11425.0": "aeronautical mobile band", + "12175.0": "out-of-band broadcasting", + "10375.0": "terrestrial (24 h modulation)", + "10825.0": "terrestrial (24 h modulation)", + "6125.0": "shortwave broadcast band", + "10425.0": "terrestrial (24 h modulation)", + "12675.0": "maritime mobile band", + "12825.0": "maritime mobile band", + "11475.0": "out-of-band broadcasting", + "8475.0": "maritime mobile band", + "5925.0": "shortwave broadcast band", + "10525.0": "terrestrial (24 h modulation)", + "9075.0": "terrestrial (24 h modulation)", + "9375.0": "shortwave broadcast band", + "7525.0": "out-of-band broadcasting", + "11525.0": "out-of-band broadcasting", + "13025.0": "maritime mobile band", + "8625.0": "maritime mobile band", + "13525.0": "out-of-band broadcasting", + "12775.0": "maritime mobile band", + "10125.0": "aeronautical mobile band", + "11075.0": "terrestrial (24 h modulation)", + "7675.0": "terrestrial (24 h modulation)", + "7375.0": "shortwave broadcast band", + "10575.0": "terrestrial (24 h modulation)", + "8675.0": "maritime mobile band", + "13425.0": "out-of-band broadcasting", + "7575.0": "out-of-band broadcasting", + "10175.0": "terrestrial (24 h modulation)", + "9275.0": "out-of-band broadcasting", + "12625.0": "maritime mobile band", + "12375.0": "maritime mobile band", + "7875.0": "terrestrial (24 h modulation)", + "7775.0": "terrestrial (24 h modulation)", + "6525.0": "maritime mobile band", + "13475.0": "out-of-band broadcasting", + "11325.0": "aeronautical mobile band", + "6925.0": "terrestrial (24 h modulation)", + "13125.0": "maritime mobile band", + "9325.0": "out-of-band broadcasting", + "7825.0": "terrestrial (24 h modulation)", + "8525.0": "maritime mobile band", + "12225.0": "maritime mobile band", + "9125.0": "terrestrial (24 h modulation)", + "5025.0": "shortwave broadcast band", + "5875.0": "shortwave broadcast band", + "8575.0": "maritime mobile band", + "5825.0": "out-of-band broadcasting", + "7925.0": "terrestrial (24 h modulation)", + "7075.0": "amateur band", + "11375.0": "aeronautical mobile band", + "6325.0": "maritime mobile band", + "10975.0": "terrestrial (24 h modulation)", + "4825.0": "shortwave broadcast band", + "10275.0": "terrestrial (24 h modulation)", + "8025.0": "Wind's own line", + "7475.0": "shortwave broadcast band", + "8125.0": "terrestrial (24 h modulation)", + "6475.0": "maritime mobile band", + "10625.0": "terrestrial (24 h modulation)", + "9175.0": "terrestrial (24 h modulation)", + "7625.0": "out-of-band broadcasting", + "6425.0": "maritime mobile band", + "13375.0": "aeronautical mobile band", + "10875.0": "terrestrial (24 h modulation)", + "8975.0": "aeronautical mobile band", + "4775.0": "shortwave broadcast band", + "13175.0": "maritime mobile band", + "11175.0": "aeronautical mobile band", + "6575.0": "aeronautical mobile band", + "9225.0": "out-of-band broadcasting", + "8325.0": "maritime mobile band", + "3975.0": "shortwave broadcast band", + "4925.0": "shortwave broadcast band", + "8725.0": "maritime mobile band", + "4975.0": "shortwave broadcast band", + "8875.0": "aeronautical mobile band", + "6375.0": "maritime mobile band", + "5325.0": "terrestrial (24 h modulation)", + "4275.0": "maritime mobile band", + "6775.0": "aeronautical mobile band", + "3325.0": "shortwave broadcast band", + "8175.0": "maritime mobile band", + "5075.0": "shortwave broadcast band", + "3375.0": "shortwave broadcast band", + "8825.0": "maritime mobile band", + "1825.0": "amateur band", + "3225.0": "shortwave broadcast band", + "10925.0": "terrestrial (24 h modulation)", + "10725.0": "terrestrial (24 h modulation)", + "4875.0": "shortwave broadcast band", + "10075.0": "aeronautical mobile band", + "6225.0": "shortwave broadcast band", + "2275.0": "shortwave broadcast band", + "4325.0": "maritime mobile band", + "2325.0": "shortwave broadcast band", + "1625.0": "terrestrial (24 h modulation)", + "2225.0": "out-of-band broadcasting", + "6875.0": "terrestrial (24 h modulation)", + "8075.0": "terrestrial leakage (day-to-day Spearman 0.66 with the broadcast lines)", + "7975.0": "terrestrial leakage (day-to-day Spearman 0.77 with the broadcast lines)", + "6975.0": "terrestrial (24 h modulation in 1995, 1999, 2001, 2003)" + }, + "left": [] + } +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/wind_1998.json b/papers/subcutoff_radio/data/wind_1998.json new file mode 100644 index 0000000000000000000000000000000000000000..f3ef426144e04518bf07189487c4c10a6648c0cb --- /dev/null +++ b/papers/subcutoff_radio/data/wind_1998.json @@ -0,0 +1,219 @@ +{ + "year": 1998, + "minutes": 525600, + "skipped_days": 0, + "RAD1": { + "persistent": 90, + "explained": { + "40.0": "list-mode channel (neighbours interpolated 63 and 64 per cent of minutes)", + "36.0": "list-mode channel (neighbours interpolated 78 and 63 per cent of minutes)", + "44.0": "list-mode channel (neighbours interpolated 63 and 64 per cent of minutes)", + "48.0": "list-mode channel (neighbours interpolated 64 and 64 per cent of minutes)", + "32.0": "list-mode channel (neighbours interpolated 77 and 63 per cent of minutes)", + "52.0": "list-mode channel (neighbours interpolated 64 and 95 per cent of minutes)", + "272.0": "list-mode channel (neighbours interpolated 95 and 94 per cent of minutes)", + "196.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "28.0": "list-mode channel (neighbours interpolated 92 and 78 per cent of minutes)", + "56.0": "list-mode channel (neighbours interpolated 64 and 65 per cent of minutes)", + "256.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "176.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "224.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "148.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "60.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "276.0": "list-mode channel (neighbours interpolated 39 and 95 per cent of minutes)", + "200.0": "list-mode channel (neighbours interpolated 38 and 95 per cent of minutes)", + "428.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "332.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "172.0": "list-mode channel (neighbours interpolated 95 and 38 per cent of minutes)", + "252.0": "list-mode channel (neighbours interpolated 95 and 39 per cent of minutes)", + "228.0": "list-mode channel (neighbours interpolated 39 and 95 per cent of minutes)", + "220.0": "list-mode channel (neighbours interpolated 95 and 39 per cent of minutes)", + "180.0": "list-mode channel (neighbours interpolated 38 and 95 per cent of minutes)", + "76.0": "list-mode channel (neighbours interpolated 65 and 66 per cent of minutes)", + "80.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "192.0": "list-mode channel (neighbours interpolated 95 and 38 per cent of minutes)", + "152.0": "list-mode channel (neighbours interpolated 38 and 95 per cent of minutes)", + "72.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "388.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "484.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "144.0": "list-mode channel (neighbours interpolated 95 and 38 per cent of minutes)", + "64.0": "list-mode channel (neighbours interpolated 65 and 95 per cent of minutes)", + "260.0": "list-mode channel (neighbours interpolated 39 and 95 per cent of minutes)", + "68.0": "list-mode channel (neighbours interpolated 95 and 65 per cent of minutes)", + "328.0": "list-mode channel (neighbours interpolated 95 and 44 per cent of minutes)", + "268.0": "list-mode channel (neighbours interpolated 95 and 39 per cent of minutes)", + "132.0": "list-mode channel (neighbours interpolated 95 and 66 per cent of minutes)", + "280.0": "list-mode channel (neighbours interpolated 94 and 95 per cent of minutes)", + "424.0": "list-mode channel (neighbours interpolated 95 and 27 per cent of minutes)", + "336.0": "list-mode channel (neighbours interpolated 44 and 95 per cent of minutes)", + "136.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "128.0": "list-mode channel (neighbours interpolated 67 and 95 per cent of minutes)", + "540.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "384.0": "list-mode channel (neighbours interpolated 95 and 45 per cent of minutes)", + "92.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "124.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "432.0": "list-mode channel (neighbours interpolated 27 and 95 per cent of minutes)", + "84.0": "list-mode channel (neighbours interpolated 66 and 95 per cent of minutes)", + "140.0": "list-mode channel (neighbours interpolated 66 and 95 per cent of minutes)", + "100.0": "list-mode channel (neighbours interpolated 95 and 67 per cent of minutes)", + "88.0": "list-mode channel (neighbours interpolated 95 and 67 per cent of minutes)", + "204.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "96.0": "list-mode channel (neighbours interpolated 67 and 95 per cent of minutes)", + "104.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "480.0": "list-mode channel (neighbours interpolated 95 and 35 per cent of minutes)", + "248.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "156.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "264.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "488.0": "list-mode channel (neighbours interpolated 35 and 95 per cent of minutes)", + "168.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "184.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "624.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "232.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "392.0": "list-mode channel (neighbours interpolated 45 and 95 per cent of minutes)", + "216.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "188.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "544.0": "list-mode channel (neighbours interpolated 43 and 95 per cent of minutes)", + "536.0": "list-mode channel (neighbours interpolated 94 and 43 per cent of minutes)", + "120.0": "list-mode channel (neighbours interpolated 95 and 67 per cent of minutes)", + "740.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "804.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "24.0": "list-mode channel (neighbours interpolated 0 and 77 per cent of minutes)", + "108.0": "list-mode channel (neighbours interpolated 67 and 95 per cent of minutes)", + "380.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "324.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "940.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "420.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "340.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "628.0": "list-mode channel (neighbours interpolated 57 and 95 per cent of minutes)", + "736.0": "list-mode channel (neighbours interpolated 95 and 59 per cent of minutes)", + "620.0": "list-mode channel (neighbours interpolated 95 and 57 per cent of minutes)", + "808.0": "list-mode channel (neighbours interpolated 63 and 95 per cent of minutes)", + "112.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "284.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "436.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "476.0": "list-mode channel (neighbours interpolated 95 and 95 per cent of minutes)", + "744.0": "list-mode channel (neighbours interpolated 59 and 95 per cent of minutes)", + "936.0": "list-mode channel (neighbours interpolated 95 and 72 per cent of minutes)", + "800.0": "list-mode channel (neighbours interpolated 95 and 63 per cent of minutes)" + }, + "left": [] + }, + "RAD2": { + "persistent": 112, + "explained": { + "11775.0": "shortwave broadcast band", + "13625.0": "shortwave broadcast band", + "13775.0": "shortwave broadcast band", + "12075.0": "shortwave broadcast band", + "12025.0": "shortwave broadcast band", + "11675.0": "shortwave broadcast band", + "9825.0": "shortwave broadcast band", + "11925.0": "shortwave broadcast band", + "11725.0": "shortwave broadcast band", + "13725.0": "shortwave broadcast band", + "11875.0": "shortwave broadcast band", + "13675.0": "shortwave broadcast band", + "11975.0": "shortwave broadcast band", + "9875.0": "shortwave broadcast band", + "12975.0": "maritime mobile band", + "9525.0": "shortwave broadcast band", + "9725.0": "shortwave broadcast band", + "11625.0": "shortwave broadcast band", + "11825.0": "shortwave broadcast band", + "9575.0": "shortwave broadcast band", + "9475.0": "shortwave broadcast band", + "9775.0": "shortwave broadcast band", + "9625.0": "shortwave broadcast band", + "12575.0": "maritime mobile band", + "12875.0": "maritime mobile band", + "8425.0": "maritime mobile band", + "13425.0": "out-of-band broadcasting", + "9675.0": "shortwave broadcast band", + "12725.0": "maritime mobile band", + "6225.0": "shortwave broadcast band", + "2225.0": "out-of-band broadcasting", + "3825.0": "amateur band", + "9925.0": "shortwave broadcast band", + "5825.0": "out-of-band broadcasting", + "12925.0": "maritime mobile band", + "1425.0": "terrestrial (24 h modulation)", + "8625.0": "maritime mobile band", + "3025.0": "aeronautical mobile band", + "13575.0": "shortwave broadcast band", + "13025.0": "maritime mobile band", + "10325.0": "terrestrial (24 h modulation)", + "9425.0": "shortwave broadcast band", + "9975.0": "out-of-band broadcasting", + "7425.0": "shortwave broadcast band", + "1825.0": "amateur band", + "11575.0": "shortwave broadcast band", + "7275.0": "shortwave broadcast band", + "12125.0": "shortwave broadcast band", + "4225.0": "maritime mobile band", + "6625.0": "aeronautical mobile band", + "10425.0": "terrestrial (24 h modulation)", + "11525.0": "out-of-band broadcasting", + "4625.0": "aeronautical mobile band", + "12625.0": "maritime mobile band", + "9375.0": "shortwave broadcast band", + "7175.0": "shortwave broadcast band", + "6075.0": "shortwave broadcast band", + "7125.0": "amateur band", + "9025.0": "aeronautical mobile band", + "6025.0": "shortwave broadcast band", + "5025.0": "shortwave broadcast band", + "12675.0": "maritime mobile band", + "5425.0": "aeronautical mobile band", + "13475.0": "out-of-band broadcasting", + "10575.0": "terrestrial (24 h modulation)", + "7025.0": "amateur band", + "6125.0": "shortwave broadcast band", + "8025.0": "Wind's own line", + "10375.0": "terrestrial (24 h modulation)", + "8675.0": "maritime mobile band", + "6175.0": "shortwave broadcast band", + "10825.0": "terrestrial (24 h modulation)", + "7225.0": "shortwave broadcast band", + "7325.0": "shortwave broadcast band", + "13225.0": "maritime mobile band", + "9075.0": "terrestrial (24 h modulation)", + "7525.0": "out-of-band broadcasting", + "7375.0": "shortwave broadcast band", + "12825.0": "maritime mobile band", + "13125.0": "maritime mobile band", + "12375.0": "maritime mobile band", + "5975.0": "shortwave broadcast band", + "8575.0": "maritime mobile band", + "11425.0": "aeronautical mobile band", + "10125.0": "aeronautical mobile band", + "7575.0": "out-of-band broadcasting", + "11325.0": "aeronautical mobile band", + "8475.0": "maritime mobile band", + "9275.0": "out-of-band broadcasting", + "11125.0": "terrestrial (24 h modulation)", + "12775.0": "maritime mobile band", + "11375.0": "aeronautical mobile band", + "13175.0": "maritime mobile band", + "9325.0": "out-of-band broadcasting", + "7775.0": "terrestrial (24 h modulation)", + "13075.0": "maritime mobile band", + "11475.0": "out-of-band broadcasting", + "5925.0": "shortwave broadcast band", + "10525.0": "terrestrial (24 h modulation)", + "7475.0": "shortwave broadcast band", + "12175.0": "out-of-band broadcasting", + "10875.0": "terrestrial (24 h modulation)", + "13525.0": "out-of-band broadcasting", + "9175.0": "terrestrial (24 h modulation)", + "10975.0": "terrestrial (24 h modulation)", + "7875.0": "terrestrial (24 h modulation)", + "7625.0": "out-of-band broadcasting", + "11075.0": "terrestrial (24 h modulation)", + "6525.0": "maritime mobile band", + "8125.0": "terrestrial (24 h modulation)", + "7825.0": "terrestrial leakage (day-to-day Spearman 0.70 with the broadcast lines)", + "11025.0": "terrestrial leakage (day-to-day Spearman 0.56 with the broadcast lines)" + }, + "left": [] + } +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/wind_1999.json b/papers/subcutoff_radio/data/wind_1999.json new file mode 100644 index 0000000000000000000000000000000000000000..9fdae8399fe79f1db2863fe6549c79b7586c36c6 --- /dev/null +++ b/papers/subcutoff_radio/data/wind_1999.json @@ -0,0 +1,266 @@ +{ + "year": 1999, + "minutes": 525600, + "skipped_days": 0, + "RAD1": { + "persistent": 96, + "explained": { + "40.0": "list-mode channel (neighbours interpolated 63 and 63 per cent of minutes)", + "36.0": "list-mode channel (neighbours interpolated 77 and 63 per cent of minutes)", + "44.0": "list-mode channel (neighbours interpolated 63 and 63 per cent of minutes)", + "48.0": "list-mode channel (neighbours interpolated 63 and 63 per cent of minutes)", + "32.0": "list-mode channel (neighbours interpolated 76 and 63 per cent of minutes)", + "272.0": "list-mode channel (neighbours interpolated 94 and 93 per cent of minutes)", + "256.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "52.0": "list-mode channel (neighbours interpolated 63 and 94 per cent of minutes)", + "428.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "224.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "276.0": "list-mode channel (neighbours interpolated 35 and 94 per cent of minutes)", + "196.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "176.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "332.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "56.0": "list-mode channel (neighbours interpolated 63 and 63 per cent of minutes)", + "148.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "28.0": "list-mode channel (neighbours interpolated 91 and 77 per cent of minutes)", + "252.0": "list-mode channel (neighbours interpolated 94 and 35 per cent of minutes)", + "484.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "60.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "228.0": "list-mode channel (neighbours interpolated 35 and 94 per cent of minutes)", + "200.0": "list-mode channel (neighbours interpolated 34 and 94 per cent of minutes)", + "388.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "260.0": "list-mode channel (neighbours interpolated 35 and 94 per cent of minutes)", + "220.0": "list-mode channel (neighbours interpolated 94 and 35 per cent of minutes)", + "540.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "424.0": "list-mode channel (neighbours interpolated 94 and 15 per cent of minutes)", + "152.0": "list-mode channel (neighbours interpolated 34 and 94 per cent of minutes)", + "180.0": "list-mode channel (neighbours interpolated 34 and 94 per cent of minutes)", + "172.0": "list-mode channel (neighbours interpolated 94 and 34 per cent of minutes)", + "328.0": "list-mode channel (neighbours interpolated 94 and 37 per cent of minutes)", + "144.0": "list-mode channel (neighbours interpolated 94 and 34 per cent of minutes)", + "76.0": "list-mode channel (neighbours interpolated 64 and 64 per cent of minutes)", + "80.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "336.0": "list-mode channel (neighbours interpolated 37 and 94 per cent of minutes)", + "268.0": "list-mode channel (neighbours interpolated 94 and 35 per cent of minutes)", + "280.0": "list-mode channel (neighbours interpolated 93 and 94 per cent of minutes)", + "432.0": "list-mode channel (neighbours interpolated 15 and 94 per cent of minutes)", + "72.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "192.0": "list-mode channel (neighbours interpolated 94 and 34 per cent of minutes)", + "64.0": "list-mode channel (neighbours interpolated 63 and 94 per cent of minutes)", + "384.0": "list-mode channel (neighbours interpolated 94 and 38 per cent of minutes)", + "132.0": "list-mode channel (neighbours interpolated 94 and 64 per cent of minutes)", + "128.0": "list-mode channel (neighbours interpolated 64 and 94 per cent of minutes)", + "480.0": "list-mode channel (neighbours interpolated 94 and 20 per cent of minutes)", + "68.0": "list-mode channel (neighbours interpolated 94 and 64 per cent of minutes)", + "136.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "140.0": "list-mode channel (neighbours interpolated 64 and 94 per cent of minutes)", + "100.0": "list-mode channel (neighbours interpolated 94 and 64 per cent of minutes)", + "624.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "264.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "124.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "84.0": "list-mode channel (neighbours interpolated 64 and 94 per cent of minutes)", + "88.0": "list-mode channel (neighbours interpolated 94 and 64 per cent of minutes)", + "488.0": "list-mode channel (neighbours interpolated 20 and 94 per cent of minutes)", + "92.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "204.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "248.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "96.0": "list-mode channel (neighbours interpolated 64 and 94 per cent of minutes)", + "536.0": "list-mode channel (neighbours interpolated 93 and 27 per cent of minutes)", + "804.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "544.0": "list-mode channel (neighbours interpolated 27 and 94 per cent of minutes)", + "156.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "740.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "104.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "392.0": "list-mode channel (neighbours interpolated 38 and 94 per cent of minutes)", + "232.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "380.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "184.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "168.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "216.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "324.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "120.0": "list-mode channel (neighbours interpolated 94 and 64 per cent of minutes)", + "188.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "420.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "108.0": "list-mode channel (neighbours interpolated 64 and 94 per cent of minutes)", + "940.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "736.0": "list-mode channel (neighbours interpolated 94 and 43 per cent of minutes)", + "628.0": "list-mode channel (neighbours interpolated 38 and 94 per cent of minutes)", + "620.0": "list-mode channel (neighbours interpolated 94 and 38 per cent of minutes)", + "808.0": "list-mode channel (neighbours interpolated 48 and 94 per cent of minutes)", + "476.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "24.0": "list-mode channel (neighbours interpolated 0 and 76 per cent of minutes)", + "340.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "436.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "284.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "112.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "800.0": "list-mode channel (neighbours interpolated 94 and 48 per cent of minutes)", + "744.0": "list-mode channel (neighbours interpolated 43 and 94 per cent of minutes)", + "116.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "936.0": "list-mode channel (neighbours interpolated 94 and 58 per cent of minutes)", + "548.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "532.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "944.0": "list-mode channel (neighbours interpolated 58 and 94 per cent of minutes)", + "732.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)", + "812.0": "list-mode channel (neighbours interpolated 94 and 94 per cent of minutes)" + }, + "left": [] + }, + "RAD2": { + "persistent": 153, + "explained": { + "11675.0": "shortwave broadcast band", + "11775.0": "shortwave broadcast band", + "11925.0": "shortwave broadcast band", + "13625.0": "shortwave broadcast band", + "13725.0": "shortwave broadcast band", + "12075.0": "shortwave broadcast band", + "13775.0": "shortwave broadcast band", + "9825.0": "shortwave broadcast band", + "9525.0": "shortwave broadcast band", + "9875.0": "shortwave broadcast band", + "8425.0": "maritime mobile band", + "9575.0": "shortwave broadcast band", + "12025.0": "shortwave broadcast band", + "11875.0": "shortwave broadcast band", + "11825.0": "shortwave broadcast band", + "13675.0": "shortwave broadcast band", + "9625.0": "shortwave broadcast band", + "7275.0": "shortwave broadcast band", + "11725.0": "shortwave broadcast band", + "12575.0": "maritime mobile band", + "6075.0": "shortwave broadcast band", + "11975.0": "shortwave broadcast band", + "9775.0": "shortwave broadcast band", + "9975.0": "out-of-band broadcasting", + "7125.0": "amateur band", + "9725.0": "shortwave broadcast band", + "11625.0": "shortwave broadcast band", + "12975.0": "maritime mobile band", + "12925.0": "maritime mobile band", + "12875.0": "maritime mobile band", + "7325.0": "shortwave broadcast band", + "6175.0": "shortwave broadcast band", + "12725.0": "maritime mobile band", + "6025.0": "shortwave broadcast band", + "7225.0": "shortwave broadcast band", + "6125.0": "shortwave broadcast band", + "9375.0": "shortwave broadcast band", + "7425.0": "shortwave broadcast band", + "5975.0": "shortwave broadcast band", + "9925.0": "shortwave broadcast band", + "9475.0": "shortwave broadcast band", + "11575.0": "shortwave broadcast band", + "9675.0": "shortwave broadcast band", + "7175.0": "shortwave broadcast band", + "10325.0": "terrestrial (24 h modulation)", + "7575.0": "out-of-band broadcasting", + "7525.0": "out-of-band broadcasting", + "10425.0": "terrestrial (24 h modulation)", + "8475.0": "maritime mobile band", + "5025.0": "shortwave broadcast band", + "7825.0": "terrestrial (24 h modulation)", + "5925.0": "shortwave broadcast band", + "11525.0": "out-of-band broadcasting", + "9425.0": "shortwave broadcast band", + "8675.0": "maritime mobile band", + "7375.0": "shortwave broadcast band", + "10575.0": "terrestrial (24 h modulation)", + "9325.0": "out-of-band broadcasting", + "11125.0": "terrestrial (24 h modulation)", + "12675.0": "maritime mobile band", + "8025.0": "Wind's own line", + "9025.0": "aeronautical mobile band", + "13025.0": "maritime mobile band", + "5875.0": "shortwave broadcast band", + "10375.0": "terrestrial (24 h modulation)", + "10125.0": "aeronautical mobile band", + "10825.0": "terrestrial (24 h modulation)", + "13525.0": "out-of-band broadcasting", + "8625.0": "maritime mobile band", + "12625.0": "maritime mobile band", + "9075.0": "terrestrial (24 h modulation)", + "11025.0": "terrestrial (24 h modulation)", + "4825.0": "shortwave broadcast band", + "6425.0": "maritime mobile band", + "5825.0": "out-of-band broadcasting", + "8575.0": "maritime mobile band", + "12375.0": "maritime mobile band", + "9175.0": "terrestrial (24 h modulation)", + "7475.0": "shortwave broadcast band", + "9275.0": "out-of-band broadcasting", + "13575.0": "shortwave broadcast band", + "5075.0": "shortwave broadcast band", + "13475.0": "out-of-band broadcasting", + "11425.0": "aeronautical mobile band", + "9125.0": "terrestrial (24 h modulation)", + "11325.0": "aeronautical mobile band", + "6575.0": "aeronautical mobile band", + "12125.0": "shortwave broadcast band", + "4625.0": "aeronautical mobile band", + "5225.0": "out-of-band broadcasting", + "5325.0": "terrestrial (24 h modulation)", + "7875.0": "terrestrial (24 h modulation)", + "3975.0": "shortwave broadcast band", + "6375.0": "maritime mobile band", + "6475.0": "maritime mobile band", + "7625.0": "out-of-band broadcasting", + "6525.0": "maritime mobile band", + "10525.0": "terrestrial (24 h modulation)", + "12825.0": "maritime mobile band", + "6325.0": "maritime mobile band", + "8075.0": "terrestrial (24 h modulation)", + "4975.0": "shortwave broadcast band", + "7975.0": "terrestrial (24 h modulation)", + "4775.0": "shortwave broadcast band", + "8725.0": "maritime mobile band", + "12775.0": "maritime mobile band", + "4875.0": "shortwave broadcast band", + "7925.0": "terrestrial (24 h modulation)", + "8125.0": "terrestrial (24 h modulation)", + "10875.0": "terrestrial (24 h modulation)", + "12175.0": "out-of-band broadcasting", + "13125.0": "maritime mobile band", + "8325.0": "maritime mobile band", + "13225.0": "maritime mobile band", + "4925.0": "shortwave broadcast band", + "6825.0": "terrestrial (24 h modulation)", + "11375.0": "aeronautical mobile band", + "10225.0": "terrestrial (24 h modulation)", + "11475.0": "out-of-band broadcasting", + "8975.0": "aeronautical mobile band", + "3925.0": "shortwave broadcast band", + "7775.0": "terrestrial (24 h modulation)", + "11075.0": "terrestrial (24 h modulation)", + "13075.0": "maritime mobile band", + "6975.0": "terrestrial (24 h modulation)", + "10175.0": "terrestrial (24 h modulation)", + "4275.0": "maritime mobile band", + "13175.0": "maritime mobile band", + "5425.0": "aeronautical mobile band", + "12225.0": "maritime mobile band", + "3325.0": "shortwave broadcast band", + "8775.0": "maritime mobile band", + "4325.0": "maritime mobile band", + "8525.0": "maritime mobile band", + "8825.0": "maritime mobile band", + "10975.0": "terrestrial (24 h modulation)", + "8175.0": "maritime mobile band", + "10275.0": "terrestrial (24 h modulation)", + "4225.0": "maritime mobile band", + "4025.0": "shortwave broadcast band", + "10925.0": "terrestrial (24 h modulation)", + "6275.0": "maritime mobile band", + "3875.0": "shortwave broadcast band", + "1175.0": "Wind's own line", + "1625.0": "terrestrial (24 h modulation)", + "5525.0": "aeronautical mobile band", + "5625.0": "aeronautical mobile band", + "3475.0": "aeronautical mobile band", + "6775.0": "aeronautical mobile band", + "4575.0": "out-of-band broadcasting", + "5275.0": "terrestrial (24 h modulation)", + "1825.0": "amateur band", + "4525.0": "terrestrial (24 h modulation)" + }, + "left": [] + } +} \ No newline at end of file diff --git a/papers/subcutoff_radio/data/wind_rad1_2020.json b/papers/subcutoff_radio/data/wind_rad1_2020.json new file mode 100644 index 0000000000000000000000000000000000000000..9954c34adf93dd8e7bd9d8b923610ca2faa2dffa --- /dev/null +++ b/papers/subcutoff_radio/data/wind_rad1_2020.json @@ -0,0 +1,391 @@ +{ + "year": 2020, + "days": 365, + "minutes": 525600, + "channels": [ + { + "khz": 20, + "occupancy": 0.004231354642313547, + "days": 0, + "modulation": 0.7661870503597122, + "known": "solar wind plasma line", + "rel_dev": 0.24431808275741718 + }, + { + "khz": 24, + "occupancy": 0.004809741248097413, + "days": 0, + "modulation": 0.7215189873417722, + "known": "solar wind plasma line", + "rel_dev": 0.23648758995030428 + }, + { + "khz": 28, + "occupancy": 0.009039193302891933, + "days": 11, + "modulation": 1.1517575247316354, + "known": "solar wind plasma line", + "rel_dev": 0.2682670864807408 + }, + { + "khz": 32, + "occupancy": 0.01590753424657534, + "days": 32, + "modulation": 0.85827054180122, + "known": "solar wind plasma line", + "rel_dev": 0.25638183834342176 + }, + { + "khz": 36, + "occupancy": 0.06629756468797565, + "days": 216, + "modulation": 0.38776330138322906, + "known": "solar wind plasma line", + "rel_dev": 0.28663619741628343 + }, + { + "khz": 40, + "occupancy": 0.05080669710806697, + "days": 182, + "modulation": 0.6515877771120431, + "known": "solar wind plasma line", + "rel_dev": 0.21619996654711504 + }, + { + "khz": 44, + "occupancy": 0.04709855403348554, + "days": 160, + "modulation": 0.5080185821046254, + "known": "solar wind plasma line", + "rel_dev": 0.17387126913393214 + }, + { + "khz": 48, + "occupancy": 0.044573820395738206, + "days": 145, + "modulation": 0.4650845142564453, + "known": "solar wind plasma line", + "rel_dev": 0.15561118059390378 + }, + { + "khz": 52, + "occupancy": 0.04097983257229833, + "days": 152, + "modulation": 0.336505873067459, + "known": "solar wind plasma line", + "rel_dev": 0.1378854798886595 + }, + { + "khz": 60, + "occupancy": 0.024069634703196348, + "days": 55, + "modulation": 0.41356414512686746, + "known": "solar wind plasma line", + "rel_dev": 0.13083686877127487 + }, + { + "khz": 72, + "occupancy": 0.029767884322678843, + "days": 81, + "modulation": 0.8942860795091397, + "known": "solar wind plasma line", + "rel_dev": 0.130568488992985 + }, + { + "khz": 76, + "occupancy": 0.0014916286149162861, + "days": 6, + "modulation": 1.0714285714285714, + "known": "solar wind plasma line", + "rel_dev": 0.10309835403148704 + }, + { + "khz": 80, + "occupancy": 0.03262366818873668, + "days": 89, + "modulation": 0.35691374584475416, + "known": "solar wind plasma line", + "rel_dev": 0.14257050624218093 + }, + { + "khz": 92, + "occupancy": 0.05392694063926941, + "days": 194, + "modulation": 0.3141405588484335, + "known": "solar wind plasma line", + "rel_dev": 0.16497913172134826 + }, + { + "khz": 96, + "occupancy": 0.0012005327245053273, + "days": 6, + "modulation": 1.5213946117274166, + "known": "solar wind plasma line", + "rel_dev": 0.10089378131726223 + }, + { + "khz": 104, + "occupancy": 0.04147831050228311, + "days": 126, + "modulation": 0.5636438695472685, + "known": "auroral kilometric radiation", + "rel_dev": 0.1910526226219318 + }, + { + "khz": 116, + "occupancy": 0.03614916286149163, + "days": 108, + "modulation": 0.5469473684210526, + "known": "auroral kilometric radiation", + "rel_dev": 0.23458590256548773 + }, + { + "khz": 124, + "occupancy": 0.001219558599695586, + "days": 7, + "modulation": 1.1981279251170047, + "known": "auroral kilometric radiation", + "rel_dev": 0.1735531203427766 + }, + { + "khz": 136, + "occupancy": 0.03218987823439878, + "days": 107, + "modulation": 0.5901057982150245, + "known": "auroral kilometric radiation", + "rel_dev": 0.26954461498882076 + }, + { + "khz": 148, + "occupancy": 0.013959284627092847, + "days": 46, + "modulation": 1.3934850756439963, + "known": "auroral kilometric radiation", + "rel_dev": 0.2579681420257741 + }, + { + "khz": 152, + "occupancy": 0.02224695585996956, + "days": 70, + "modulation": 0.7306935773539724, + "known": "auroral kilometric radiation", + "rel_dev": 0.2665965268565591 + }, + { + "khz": 164, + "occupancy": 0.0010616438356164384, + "days": 4, + "modulation": 1.7634408602150538, + "known": "auroral kilometric radiation", + "rel_dev": 0.18387861639638337 + }, + { + "khz": 176, + "occupancy": 0.05726027397260274, + "days": 166, + "modulation": 0.6881977671451356, + "known": "auroral kilometric radiation", + "rel_dev": 0.29388070638363706 + }, + { + "khz": 196, + "occupancy": 0.06417237442922374, + "days": 183, + "modulation": 0.7827092413057013, + "known": "auroral kilometric radiation", + "rel_dev": 0.31249230717763443 + }, + { + "khz": 216, + "occupancy": 0.0019539573820395737, + "days": 6, + "modulation": 1.5657254138266798, + "known": "auroral kilometric radiation", + "rel_dev": 0.21461875539159747 + }, + { + "khz": 224, + "occupancy": 0.07364345509893455, + "days": 219, + "modulation": 0.7273103056294726, + "known": "auroral kilometric radiation", + "rel_dev": 0.34339386012593653 + }, + { + "khz": 256, + "occupancy": 0.0773458904109589, + "days": 243, + "modulation": 0.5531695077854033, + "known": "auroral kilometric radiation", + "rel_dev": 0.3894488402427867 + }, + { + "khz": 276, + "occupancy": 0.05186453576864536, + "days": 152, + "modulation": 0.6585473220836391, + "known": "auroral kilometric radiation", + "rel_dev": 0.39729252027936646 + }, + { + "khz": 280, + "occupancy": 0.00209855403348554, + "days": 9, + "modulation": 1.5448776065276517, + "known": "auroral kilometric radiation", + "rel_dev": 0.25661813283364676 + }, + { + "khz": 292, + "occupancy": 0.07395167427701674, + "days": 261, + "modulation": 0.5026113355115902, + "known": "auroral kilometric radiation", + "rel_dev": 0.43776695051178827 + }, + { + "khz": 332, + "occupancy": 0.06154109589041096, + "days": 238, + "modulation": 0.46521981079577074, + "known": "auroral kilometric radiation", + "rel_dev": 0.44855128475113815 + }, + { + "khz": 364, + "occupancy": 0.0009265601217656012, + "days": 3, + "modulation": 2.217659137577002, + "known": "auroral kilometric radiation", + "rel_dev": 0.2826755589339185 + }, + { + "khz": 376, + "occupancy": 0.047539954337899544, + "days": 185, + "modulation": 0.42454076119582185, + "known": "auroral kilometric radiation", + "rel_dev": 0.4590800059781557 + }, + { + "khz": 404, + "occupancy": 0.032612252663622526, + "days": 117, + "modulation": 0.5348579429438188, + "known": "auroral kilometric radiation", + "rel_dev": 0.3924330557297804 + }, + { + "khz": 428, + "occupancy": 0.032517123287671236, + "days": 108, + "modulation": 0.5181674565560821, + "known": "auroral kilometric radiation", + "rel_dev": 0.42460474627720224 + }, + { + "khz": 472, + "occupancy": 0.0003843226788432268, + "days": 1, + "modulation": 3.445544554455446, + "known": "auroral kilometric radiation", + "rel_dev": 0.26549901211554783 + }, + { + "khz": 484, + "occupancy": 0.017102359208523592, + "days": 35, + "modulation": 0.6968517076426743, + "known": "auroral kilometric radiation", + "rel_dev": 0.38281120961067905 + }, + { + "khz": 532, + "occupancy": 0.005582191780821918, + "days": 2, + "modulation": 1.8732106339468302, + "known": "auroral kilometric radiation", + "rel_dev": 0.31641809125781417 + }, + { + "khz": 548, + "occupancy": 0.012281202435312024, + "days": 14, + "modulation": 3.0934159566227732, + "known": "auroral kilometric radiation", + "rel_dev": 0.34352749434063057 + }, + { + "khz": 616, + "occupancy": 0.0003614916286149163, + "days": 0, + "modulation": 3.789473684210526, + "known": "auroral kilometric radiation", + "rel_dev": 0.2730890767612931 + }, + { + "khz": 624, + "occupancy": 0.007623668188736682, + "days": 8, + "modulation": 0.7427002745195906, + "known": "auroral kilometric radiation", + "rel_dev": 0.3219713407117377 + }, + { + "khz": 660, + "occupancy": 0.00636986301369863, + "days": 10, + "modulation": 1.7921146953405018, + "known": "auroral kilometric radiation", + "rel_dev": 0.27294147655341594 + }, + { + "khz": 708, + "occupancy": 0.007473363774733638, + "days": 4, + "modulation": 0.8553971486761711, + "known": "", + "rel_dev": 0.30430610583300766 + }, + { + "khz": 788, + "occupancy": 0.0037766362252663623, + "days": 4, + "modulation": 1.6322418136020151, + "known": "", + "rel_dev": 0.27385461126356025 + }, + { + "khz": 796, + "occupancy": 0.0004299847792998478, + "days": 0, + "modulation": 3.504424778761062, + "known": "", + "rel_dev": 0.2781643524283115 + }, + { + "khz": 804, + "occupancy": 0.005253044140030441, + "days": 3, + "modulation": 0.8257877580586743, + "known": "", + "rel_dev": 0.2782265126881638 + }, + { + "khz": 916, + "occupancy": 0.004499619482496195, + "days": 1, + "modulation": 1.5120507399577165, + "known": "", + "rel_dev": 0.24803433624400317 + }, + { + "khz": 1040, + "occupancy": 0.0042465753424657535, + "days": 2, + "modulation": 0.9139784946236559, + "known": "", + "rel_dev": 0.204361357344641 + } + ] +} \ No newline at end of file diff --git a/papers/subcutoff_radio/make_numbers.py b/papers/subcutoff_radio/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..2d11cfb2591d65e1429555dafe44667bd04aff46 --- /dev/null +++ b/papers/subcutoff_radio/make_numbers.py @@ -0,0 +1,168 @@ +"""Numbers of the sub-cutoff radio paper: allocated band fractions, Wind and STEREO channel scatter, flux thresholds and reach, and Wind line classes.""" +import glob +import json +import math +import os +import re +import sys + +import numpy as np + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import core # noqa: E402 +from setitools import radio_sky as rs # noqa: E402 + +# Cane (1979) polar galactic background (W m^-2 Hz^-1 sr^-1) with free-free turnover, nu in MHz +def cane(nu_mhz): + tau = 5.0 * nu_mhz ** -2.1 + return 2.48e-20 * nu_mhz ** -0.52 * (1 - math.exp(-tau)) / tau + 1.06e-20 * nu_mhz ** -0.80 * math.exp(-tau) + + +def union(ivs): + out = [] + for a, b in sorted(ivs): + if out and a <= out[-1][1]: + out[-1][1] = max(out[-1][1], b) + else: + out.append([a, b]) + return out + + +def covered(ivs, lo, hi): + return sum(max(0, min(b, hi) - max(a, lo)) for a, b in union(ivs)) + + +def bands(): + print("== bands") + sw = [(a - 25, b + 25) for a, b in rs.wind_SW_BANDS] + mob = [(a - 25, b + 25) for a, b in rs.wind_MARITIME + rs.wind_AERONAUTICAL] + ama = list(rs.wind_AMATEUR) + oob = [(a - rs.wind_OUT_OF_BAND, b + rs.wind_OUT_OF_BAND) for a, b in rs.wind_SW_BANDS] + nat = [(0, 100), (100, 700)] + for name, lo, hi in (("RAD1", 20, 1040), ("RAD2", 1075, 13825), ("STEREO HFR", 125, 16025)): + print("%s %d-%d kHz: service bands with 25 kHz margins %.1f%%; with out-of-band broadcasting %.1f%%; plasma line and " + "auroral ranges %.1f%%; all known %.1f%%" % ( + name, lo, hi, 100 * covered(sw + mob + ama, lo, hi) / (hi - lo), 100 * covered(sw + mob + ama + oob, lo, hi) / (hi - lo), + 100 * covered(nat, lo, hi) / (hi - lo), 100 * covered(sw + mob + ama + oob + nat, lo, hi) / (hi - lo))) + + +def neighbour_scatter(p): + """Median over channels of the robust deviation from the eight-neighbour median, relative to it, over one day's spectra.""" + n, m = p.shape + rel = [] + for j in range(4, m - 4): + nb = np.concatenate([p[:, j - 4:j], p[:, j + 1:j + 5]], axis=1) + med = np.nanmedian(nb, axis=1) + mad = 1.4826 * np.nanmedian(np.abs(nb - med[:, None]), axis=1) + rel.append(np.nanmedian(mad / med)) + return np.array(rel) + + +def wind_scatter(years=(1999, 2020), per_year=6): + """Relative channel scatter of RAD2 in each year's cached days, and of RAD1 at its measured channels.""" + import cdflib + print("== Wind channel scatter") + for y in years: + files = sorted(glob.glob(os.path.join(rs.wind_ROOT, str(y), "*.cdf"))) + if not files: + print("%d: no cached days" % y) + continue + files = [files[i] for i in np.linspace(0, len(files) - 1, min(per_year, len(files))).astype(int)] + r2, r1, nmeas = [], [], [] + for f in files: + c = cdflib.CDF(f) + x = c.varget("E_VOLTAGE_RAD2").astype(float) + x[x <= 0] = np.nan + r2.append(np.nanmedian(neighbour_scatter(x ** 2))) + fr = np.atleast_2d(c.varget("Frequency_RAD1"))[0] + vm = np.atleast_2d(c.varget("Minimum_voltage_RAD1"))[0] + meas = np.nonzero(vm > 0)[0] + nmeas.append(len(meas)) + x = c.varget("E_VOLTAGE_RAD1").astype(float) + x[x <= 0] = np.nan + p = x[:, meas] ** 2 + rel = neighbour_scatter(p) if p.shape[1] > 8 else np.array([np.nan]) + hi = fr[meas][4:-4] >= 300 if p.shape[1] > 8 else np.array([]) + r1.append((np.nanmedian(rel[~hi]) if (~hi).any() else np.nan, np.nanmedian(rel[hi]) if hi.any() else np.nan)) + print("%d (%d days): RAD2 relative scatter median %.3f; RAD1 measured channels %d-%d, scatter below 300 kHz %.2f, above %.2f" + % (y, len(files), np.nanmedian(r2), min(nmeas), max(nmeas), np.nanmedian([a for a, _ in r1]), np.nanmedian([b for _, b in r1]))) + r = 0.024 + for nu in (2.0, 5.0, 10.0): + B = cane(nu) + S = 8 * math.pi / 3 * B + F = 5 * r * S * 20e3 + print("RAD2 at %.0f MHz: Cane background %.1e W/m2/Hz/sr, dipole-equivalent flux density %.1e W/m2/Hz, 5 sigma line %.1e W/m2: " + "isotropic %.1e W at 1 au, %.1e W at 1 pc, %.1e W at 10 pc" % ( + nu, B, S, F, 4 * math.pi * (1.495978707e11) ** 2 * F, 4 * math.pi * (3.0857e16) ** 2 * F, 4 * math.pi * (3.0857e17) ** 2 * F)) + + +def stereo_scatter(): + """STEREO relative channel scatter in raw power and background-subtracted flux, with the background in flux units.""" + import cdflib + files = sorted(glob.glob(os.path.join(core.data("stereo"), "*.cdf")))[:10] + if not files: + print("== STEREO: no cached days") + return + print("== STEREO channel scatter (%d days)" % len(files)) + raw_r, flux_r, bg_flux, level = [], [], [], [] + for f in files: + c = cdflib.CDF(f) + fr = np.atleast_2d(c.varget("FREQUENCY"))[0].astype(float) + pf = c.varget("PSD_FLUX").astype(float) + pf[~(pf > 0)] = np.nan + v2 = c.varget("PSD_V2").astype(float)[:, :, 0, 0] + v2[~(v2 > 0)] = np.nan + bg = c.varget("BACKGROUND").astype(float) + bgc = bg[0, :, 0, 0] if bg.ndim == 4 else bg[:, 0, 0] + hi = fr > 2e6 + flux_r.append(np.nanmedian(neighbour_scatter(pf)[hi[4:-4]])) + raw_r.append(np.nanmedian(neighbour_scatter(v2)[hi[4:-4]])) + with np.errstate(all="ignore"): + cal = np.nanmedian(pf / (v2 - bgc[None, :]), axis=0) + bg_flux.append(np.nanmedian((bgc * cal)[hi])) + level.append(np.nanmedian(pf[:, hi])) + print("above 2 MHz: raw power scatter %.3f of the level, background-subtracted flux scatter %.3f of a median level of %.1e W/m2/Hz; " + "background in flux units %.1e W/m2/Hz; 5 sigma line in a 50 kHz channel %.1e W/m2 (raw) or %.1e (subtracted)" + % (np.median(raw_r), np.median(flux_r), np.median(level), np.median(bg_flux), + 5 * np.median(raw_r) * np.median(bg_flux) * 5e4, 5 * np.median(flux_r) * np.median(level) * 5e4)) + + +def results_glob(pattern): + """Result files from data/, else the results directory.""" + here = sorted(glob.glob(os.path.join(HERE, "data", pattern))) + return here or sorted(glob.glob(core.results(pattern))) + + +def classes(): + print("== Wind line classes") + for p in results_glob("wind_*.json"): + d = json.load(open(p)) + if "RAD1" not in d: + continue + for band in ("RAD1", "RAD2"): + ex = d[band]["explained"] + cls = {} + for v in ex.values(): + k = re.sub(r"\(.*\)", "", v).strip() + cls[k] = cls.get(k, 0) + 1 + print("%s %s: %d persistent, %d left; %s" % (os.path.basename(p)[5:9], band, d[band]["persistent"], len(d[band]["left"]), + ", ".join("%s %d" % kv for kv in sorted(cls.items(), key=lambda kv: -kv[1])))) + for p in results_glob("wind_rad1_*.json"): + d = json.load(open(p)) + pers = [c for c in d["channels"] if c["occupancy"] > 0.01 and c["days"] >= 30] + print("RAD1 measured channels %s: %d channels, %d persistent lines (%s), %d above 700 kHz; scatter below 300 kHz %.2f, above %.2f" % ( + d["year"], len(d["channels"]), len(pers), ", ".join(sorted({c["known"] or "unexplained" for c in pers})), + sum(1 for c in pers if c["khz"] > 700), np.median([c["rel_dev"] for c in d["channels"] if c["khz"] < 300]), + np.median([c["rel_dev"] for c in d["channels"] if c["khz"] >= 300]))) + + +if __name__ == "__main__": + import warnings + warnings.filterwarnings("ignore") + bands() + classes() + wind_scatter() + stereo_scatter() diff --git a/papers/subcutoff_radio/subcutoff_radio.pdf b/papers/subcutoff_radio/subcutoff_radio.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f3180e540feb7ceba89852e9552f101ec3456e2a Binary files /dev/null and b/papers/subcutoff_radio/subcutoff_radio.pdf differ diff --git a/papers/subcutoff_radio/subcutoff_radio.tex b/papers/subcutoff_radio/subcutoff_radio.tex new file mode 100644 index 0000000000000000000000000000000000000000..9d48835a83dd691b2b831016718780f97121a37f --- /dev/null +++ b/papers/subcutoff_radio/subcutoff_radio.tex @@ -0,0 +1,341 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{Persistent Narrowband Radio Lines Below the Ionospheric Cutoff:\\ 27 Years of Wind and Five Years of STEREO} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +Below about $10$\,MHz the ionosphere reflects radio waves, so a transmitter at those +frequencies can be heard only from space. We search every one-minute spectrum of the +Wind/WAVES receivers from 1995 to 2021, $20$\,kHz to $13.8$\,MHz, and every spectrum of +STEREO-A in 2008, 2012 and 2020 and of STEREO-B in 2010 and 2012, $125$\,kHz to +$16$\,MHz, for lines that persist: a channel five robust deviations above its +neighbours in more than one per cent of the minutes on thirty days or more. Every +persistent line has a known source. The solar wind's plasma line, Earth's auroral +kilometric radiation and the terrestrial broadcast, maritime, aeronautical and amateur +services account for most, and terrestrial leakage is recognised by its day-to-day +correlation with the broadcast lines of the 41\,m band, which reaches the spacecraft +only through a sunlit ionosphere. The rest are made on the spacecraft: Wind's lines at +$8025$ and $1175$\,kHz, which do not follow the broadcast lines, and lines that one +STEREO spacecraft holds five times as often as Wind or the other spacecraft, among them +$10425$\,kHz in both STEREO receivers, whose occupancy in STEREO-A rose from $0.08$ per +cent in 2008 to $4.7$ per cent in 2020. No persistent line remains outside the known +sources in any of the $32$ spacecraft-years. The channels are $3$, $20$ and $50$\,kHz +wide, so the search is for narrow lines only in the sense that a line fills one +channel; a $5\sigma$ line in Wind's RAD2 carries $2\times10^{-16}$\,W\,m$^{-2}$, the +output of a $6\times10^{7}$\,W isotropic source at $1$\,au or of $2\times10^{18}$\,W at +$1$\,pc, so the search is one of the Solar System and of the strongest conceivable +transmitters at the nearest stars; Wind's RAD1 measures only $32$ to $38$ of its $256$ +channels directly, which alone carry its search, and $64$ per cent of RAD2's band and +$52$ per cent of STEREO's lie inside the terrestrial service bands, where a line is +assigned to the service and not counted. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Radio searches for technosignatures listen from the ground, where the ionosphere +reflects everything below its plasma frequency of a few to about ten megahertz, and +searches at low frequencies, such as one with the Murchison Widefield Array near +$100$\,MHz~\cite{Tingay2016}, observe well above it. The band from tens +of kilohertz to ten megahertz is open only to receivers in space. The interstellar plasma +frequency is a few kilohertz, but free-free absorption~\cite{RybickiLightman1979} in the +warm, partly ionised clouds around the Sun, with $n_e \approx 0.1$\,cm$^{-3}$ at about +$7000$\,K~\cite{RedfieldLinsky2008}, sets the reach: across $5$ to $10$\,pc of such gas +the optical depth is about $0.1$ at $1$\,MHz, $1$ near $300$\,kHz and $10$ at $100$\,kHz, +so nearby stars are heard through it above a few hundred kilohertz, depending on the +sightline, and below about $100$\,kHz only sources within the heliosphere or across the +shortest paths through warm gas. Spacecraft built to study the solar wind and the +magnetosphere have recorded that band continuously for three decades: the WAVES +receivers of Wind~\cite{Bougeret1995}, since 2004 at the Sun-Earth L1 point, and those of +the twin STEREO spacecraft~\cite{Bougeret2008}, which drifted ahead of and behind Earth +on its orbit from 2006. + +Their spectra are crowded with natural lines and with terrestrial ones. Earth's auroral +kilometric radiation reaches far beyond the magnetosphere~\cite{Gurnett1974}, and +terrestrial transmitters leak through the ionosphere where it is sunlit, as the Radio +Astronomy Explorer found~\cite{Herman1973}. A narrowband transmitter elsewhere would +add a line that persists in one channel, whose behaviour from minute to minute and day to +day separates it from these. This paper searches the full Wind and STEREO records for +such lines. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item A search of $27$ years of Wind/WAVES and $5$ years of STEREO/WAVES spectra for +persistent narrowband lines below the ionospheric cutoff. +\item Two tests that separate terrestrial and spacecraft lines from the rest: a line's +day-to-day correlation with the broadcast lines, and its occupancy in the other +spacecraft, which share the sky but not the receiver. +\end{enumerate} + +% ============================================================================= +\section{Data and method}\label{sec:method} +% ============================================================================= + +\emph{Data.} Wind's RAD1 receiver covers $20$ to $1040$\,kHz in $256$ channels $4$\,kHz +apart and $3$\,kHz wide, and RAD2 $1.075$ to $13.825$\,MHz in $256$ channels $50$\,kHz +apart and $20$\,kHz wide~\cite{Bougeret1995}; CDAWeb's WI\_H1\_WAV files give one-minute +averages of both for every day from 1995 to 2021, and no later year is in the archive. +RAD2 measures every channel. RAD1 measures $32$ to $38$ of its channels in nearly every +minute of every year, from $20$ to $1040$\,kHz at spacings that grow from $4$\,kHz at +the bottom to about $100$\,kHz at the top, and the archive fills the other channels by +interpolation between the measured ones, which the files mark through each day's minimum +voltage. STEREO's high-frequency receiver +covers $125$\,kHz to $16$\,MHz in $50$\,kHz channels about every $39$\,s, from CDAWeb's +level-3 files, whose spectra are calibrated in W\,m$^{-2}$\,Hz$^{-1}$ after the +subtraction of a daily background. We take every spectrum of STEREO-A in 2008, 2012 and +2020 and of STEREO-B in 2010 and 2012, years spread over the spacecraft's drift from +Earth and, for 2012, held by both. + +\emph{Lines.} In each spectrum a channel carries a line when it stands five robust +deviations above the median of its eight neighbouring channels. A channel's occupancy is +the fraction of a year's spectra in which it carries a line, and a line is persistent +when its occupancy exceeds one per cent on thirty days or more. In RAD1 a measured +channel stands above interpolated neighbours whenever the spectrum curves, so its lines +are tested among the measured channels alone, each against the median of its eight +nearest measured neighbours. A line narrower than a channel is diluted over the channel's +width, so the statistic is a line's power against the background in the channel, and a +line is narrowband here only in the sense of filling one channel of $3$, $20$ or +$50$\,kHz. + +\emph{Known sources.} A persistent line is assigned, in order, to the spacecraft's own +lines; to the shortwave broadcast bands within $25$\,kHz; to Earth's auroral kilometric +radiation between $100$ and $700$\,kHz and the solar wind's plasma line below +$100$\,kHz; to the maritime and aeronautical mobile bands within $25$\,kHz and the +amateur bands; to broadcasting up to $200$\,kHz outside the broadcast bands; and to the +terrestrial sources whose occupancy by hour of UT varies by more than its mean, since +Earth's transmitters wax and wane as it turns. The service bands with their $25$\,kHz +margins cover $64$ per cent of RAD2's range and $52$ per cent of STEREO's, and with the +$200$\,kHz of out-of-band broadcasting $76$ and $62$ per cent; the auroral and +plasma-line ranges cover $67$ per cent of RAD1's. A line inside those ranges is +assigned to the service or the natural source and not counted, so the search for lines +outside the known sources covers the remaining quarter of RAD2's band, $38$ per cent of +STEREO's, and the third of RAD1's above $700$\,kHz. + +\emph{Sensitivity.} The channel-to-channel scatter of a one-minute spectrum sets what +a line must carry. In RAD2 the robust deviation of a channel from the median of its +eight neighbours is $2.4$ per cent of the background power, in every year sampled +(1999 and 2020), so a $5\sigma$ line adds $12$ per cent of the background to a channel. +Above $1$\,MHz the background is the Galaxy's, whose brightness is close to +$10^{-20}$\,W\,m$^{-2}$\,Hz$^{-1}$\,sr$^{-1}$ from $2$ to $10$\,MHz~\cite{Cane1979}, +and a short dipole collects it from $8\pi/3$\,sr, so the background's equivalent flux +density is $8\times10^{-20}$\,W\,m$^{-2}$\,Hz$^{-1}$ and the threshold for a line +filling RAD2's $20$\,kHz is $F=5\times0.024\times8\times10^{-20}\times2\times10^{4} +\approx2\times10^{-16}$\,W\,m$^{-2}$, for a source at the antenna's best direction. +That is the flux of an isotropic source of $6\times10^{7}$\,W at $1$\,au, +$2\times10^{18}$\,W at $1$\,pc and $2\times10^{20}$\,W at $10$\,pc, or of a transmitter +of $5\times10^{7}$\,W behind a kilometre-wide aperture at $1$\,pc, whose beam at +$5$\,MHz is $60$\,rad across and gains nothing. STEREO's calibrated spectra scatter by +$6$ to $7$ per cent of a background of $1.4\times10^{-19}$\,W\,m$^{-2}$\,Hz$^{-1}$ +above $2$\,MHz in the raw receiver power and by $23$ per cent of the +background-subtracted level, so its $50$\,kHz channels reach about +$2\times10^{-15}$\,W\,m$^{-2}$. RAD1's measured channels scatter about the median of +their measured neighbours by $3$ per cent of the background in 2020 and by $10$ per +cent above $300$\,kHz and $29$ per cent below it in 1999, where the auroral emission +varies from minute to minute, so a line must exceed its neighbours by $15$ per cent of +the background in the one year and by half to one and a half times it in the other; +with the galactic brightness absorbed to a few +$10^{-21}$\,W\,m$^{-2}$\,Hz$^{-1}$ below $1$\,MHz the threshold in a $3$\,kHz channel +is of order $10^{-17}$ to $10^{-16}$\,W\,m$^{-2}$, where the receiver's own noise, +which dominates the lowest channels, raises it further. + +\emph{Day-to-day correlation.} Terrestrial leakage reaches the spacecraft only through a +sunlit ionosphere, so every leaked line rises and falls from day to day with the +broadcast lines of the $41$\,m band ($7225$ to $7375$\,kHz). The Spearman correlation of +a line's daily occupancy with theirs separates leakage from a line made on the +spacecraft or arriving from beyond Earth. + +\emph{Spacecraft lines.} A narrowband source beyond the spacecraft reaches Wind and both +STEREO spacecraft, whose receivers are about equally sensitive, about equally often. A +line that one spacecraft holds five times as often as Wind, or as the other STEREO +spacecraft in the same year, is made on that spacecraft. + +\emph{Instrument changes.} Two intervals change Wind's spectra. During its spacecraft +anomaly of 2014 October 26 to 2015 January 30 the $1175$\,kHz channel switched on and off, +and in 2014 and 2015 RAD1's list of measured channels shrank to $15$; both are set aside. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +\emph{Wind.} In every year from 1995 to 2021 the persistent lines all have known +sources. In RAD2 there are $119$ persistent lines in 1995, $153$ in 1996, $112$ in 1998 +and $153$ in 1999: in 1999, $55$ in the broadcast bands, $36$ in the maritime and $13$ in +the aeronautical bands, $14$ in out-of-band broadcasting, $2$ in the amateur bands, $31$ +with the diurnal modulation of a terrestrial source, and $2$ of Wind's own. One line +outside the broadcast bands, +$6975$\,kHz in 1997, follows the $41$\,m lines from day to day (Spearman $0.52$), as +terrestrial leakage must, and so does $7175$\,kHz in 2020 ($0.53$). The steady line at +$8025$\,kHz, present on $365$ and $330$ days of 2020 and 2021 with no daily modulation, +does not ($-0.16$, against $0.74$ for the broadcast line at $9625$\,kHz), so it is made +on Wind; so are the lines at $1175$\,kHz and, in 1995, at $1275$ and $1525$\,kHz. In +RAD1 the test against all neighbouring channels marks $55$ to $96$ lines a year, every +one a measured channel standing above its interpolated neighbours, which is the +interpolation and not a line. Tested among the measured channels alone over 2020, the +$48$ channels RAD1 measured hold $26$ persistent lines, all below $500$\,kHz: eight +below $100$\,kHz, where the solar wind's plasma line wanders, and $18$ from $104$ to +$484$\,kHz in the range of the auroral kilometric radiation, with occupancies of $1.4$ +to $7.7$ per cent and the day-to-day variation of that emission; the six measured +channels above $700$\,kHz hold none. + +\emph{STEREO.} Table~\ref{tab:stereo} lists the STEREO years. STEREO-A holds $7$, $8$ +and $10$ persistent lines in 2008, 2012 and 2020 and STEREO-B $6$ in each of 2010 and +2012, every one in a service band, in the range of auroral kilometric radiation, or made +on the spacecraft. The spacecraft lines include +$1275$, $1475$, $1675$ and $2075$\,kHz, which Wind holds less than a fifth as often, +$725$\,kHz in STEREO-A in 2012, which STEREO-B holds $0.7$ per cent of the time against +STEREO-A's $25$, and $10425$\,kHz, which STEREO-B holds $87$ to $90$ per cent of the time +in 2010 and 2012 and STEREO-A $0.08$, $0.4$ and $4.7$ per cent in 2008, 2012 and 2020, +while Wind's occupancy there stays near $0.7$ per cent: a line of the receiver design +that grew in STEREO-A. + +\begin{table}[t] +\centering\small +\caption{The STEREO years. Persistent lines exceed one per cent occupancy on thirty days +or more; left are those outside the known sources. Spacecraft lines are held five times +as often as by Wind or the other STEREO spacecraft in the same year; the others lie in +service bands or in the range of auroral kilometric radiation.} +\label{tab:stereo} +\begin{tabular}{l c r r >{\raggedright\arraybackslash}p{0.45\textwidth}} +\toprule +Spacecraft & Year & Persistent & Left & Spacecraft lines (kHz) \\ +\midrule +STEREO-A & 2008 & $7$ & $0$ & $1375$, $1675$ \\ +STEREO-A & 2012 & $8$ & $0$ & $725$, $1275$, $1475$, $1675$, $2075$ \\ +STEREO-A & 2020 & $10$ & $0$ & $725$, $1275$, $1475$, $1675$, $6925$, $10425$ \\ +STEREO-B & 2010 & $6$ & $0$ & $6975$, $10425$, $10475$ \\ +STEREO-B & 2012 & $6$ & $0$ & $6975$, $10425$, $10475$ \\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +\emph{Low-frequency searches.} Searches for narrowband technosignatures at the lowest +frequencies observed from the ground, near $100$\,MHz, have used wide-field arrays such +as the Murchison Widefield Array~\cite{Tingay2016}, whose channels of tens of kilohertz +and sensitivity of tens of janskys over hours make them, like this one, searches for +powerful broadband-channel emitters rather than for hertz-wide lines; we find no search +below the ionospheric cutoff. + +\emph{Spacecraft radio receivers.} The receivers of Wind and STEREO were built for solar +radio bursts, interplanetary plasma waves and Earth's radio emissions, and their +calibration against the Galaxy's background~\cite{Dulk2001} makes them sensitive +monitors of the whole low-frequency sky. The Radio Astronomy Explorer first showed how +much terrestrial noise leaks to space~\cite{Herman1973}. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No persistent narrowband line below the ionospheric cutoff, from $20$\,kHz to $16$\,MHz, +lies outside the known natural, terrestrial and spacecraft sources in $27$ years of Wind +spectra and five years of STEREO spectra. Terrestrial leakage betrays itself by +following the broadcast bands from day to day, and lines made on a spacecraft by being +missing from the others. + +The search covers lines present in more than one per cent of the minutes on a month of +days, five robust deviations above the neighbouring channels in a minute's average, +which in RAD2 is $2\times10^{-16}$\,W\,m$^{-2}$ in a $20$\,kHz channel: a transmitter +of $6\times10^{7}$\,W radiating isotropically anywhere within $1$\,au, or of +$2\times10^{18}$\,W at $1$\,pc, so the result bounds emitters in the Solar System and +only the most powerful conceivable ones at the nearest stars, where a beam gains +nothing at these wavelengths. A +transmitter that is brief, drifting or broader than a channel is not constrained, nor is +one inside the bands of terrestrial services, which are set aside whole and cover two +thirds of the band above $1$\,MHz; RAD1 constrains only its $32$ to $38$ measured +channels. Below a few +hundred kilohertz the warm interstellar clouds absorb, so that part of the band bounds +transmitters within the heliosphere and along the shortest paths through warm gas. The STEREO +spacecraft's direction finding would give the arrival direction of any line the +spacecraft share, and the years of STEREO not yet searched would extend the comparison +across the spacecraft's whole drift. + +\section*{Acknowledgements} + +This work uses Wind/WAVES and STEREO/WAVES data from NASA's Coordinated Data Analysis Web +(CDAWeb) at the Space Physics Data Facility, and the software NumPy, SciPy and cdflib. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{Tingay2016} +S.~J. Tingay, C.~Tremblay, A.~Walsh and R.~Urquhart, An opportunistic search for +extraterrestrial intelligence (SETI) with the Murchison Widefield Array, +\emph{Astrophys. J. Lett.} \textbf{827}, L22 (2016). + +\bibitem{RybickiLightman1979} +G.~B. Rybicki and A.~P. Lightman, \emph{Radiative Processes in Astrophysics} (Wiley, New +York, 1979). + +\bibitem{RedfieldLinsky2008} +S.~Redfield and J.~L. Linsky, The structure of the local interstellar medium. IV. +Dynamics, morphology, physical properties, and implications of cloud-cloud +interactions, \emph{Astrophys. J.} \textbf{673}, 283 (2008). + +\bibitem{Bougeret1995} +J.-L. Bougeret, M.~L. Kaiser, P.~J. Kellogg, et al., WAVES: the radio and plasma wave +investigation on the Wind spacecraft, \emph{Space Sci. Rev.} \textbf{71}, 231 (1995). + +\bibitem{Bougeret2008} +J.-L. Bougeret, K.~Goetz, M.~L. Kaiser, et al., S/WAVES: the radio and plasma wave +investigation on the STEREO mission, \emph{Space Sci. Rev.} \textbf{136}, 487 (2008). + +\bibitem{Gurnett1974} +D.~A. Gurnett, The Earth as a radio source: terrestrial kilometric radiation, \emph{J. +Geophys. Res.} \textbf{79}, 4227 (1974). + +\bibitem{Herman1973} +J.~R. Herman, J.~A. Caruso and R.~G. Stone, Radio Astronomy Explorer (RAE)-I +observations of terrestrial radio noise, \emph{Planet. Space Sci.} \textbf{21}, 443 +(1973). + +\bibitem{Dulk2001} +G.~A. Dulk, W.~C. Erickson, R.~Manning and J.-L. Bougeret, Calibration of low-frequency +radio telescopes using the galactic background radiation, \emph{Astron. Astrophys.} +\textbf{365}, 294 (2001). + +\bibitem{Cane1979} +H.~V. Cane, Spectra of the non-thermal radio radiation from the galactic polar regions, +\emph{Mon. Not. R. Astron. Soc.} \textbf{189}, 465 (1979). + +\end{thebibliography} + +\end{document} diff --git a/papers/survey_lasers/data/lamost_laser.json b/papers/survey_lasers/data/lamost_laser.json new file mode 100644 index 0000000000000000000000000000000000000000..42fde8d23a4b6cbbd9950c8de56a784ecd1ca9c2 --- /dev/null +++ b/papers/survey_lasers/data/lamost_laser.json @@ -0,0 +1,6801 @@ +{ + "observations": 35179, + "stars": 14400, + "peaks": 12261, + "persistent": [ + { + "star": "401079306121852160", + "arm": "R", + "rest": 6432.712039239072, + "obs": 6432.474936983372, + "n": 2, + "nights": 2, + "z": 14.030390846032068, + "inst": 0.8575745442708333, + "topo": 6432.332972250888, + "edge": 162.1466780101091, + "fibres": [ + "16-204" + ], + "obsids": [ + "934416204", + "951816204" + ], + "n_rest": 31, + "mu_rest": 7.978697006521487, + "p_rest": 5.045802664582766e-10, + "n_topo": 8, + "mu_topo": 2.6368237319218006, + "p_topo": 0.005783380580944519, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 20.35255, + "spread_star": 0.1940751443589761, + "spread_topo": 0.6307374311518288, + "duty": 0.045454545454545456, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (31 other stars against 8.0 by chance)" + ] + }, + { + "star": "397914190102925184", + "arm": "R", + "rest": 6440.687130973897, + "obs": 6440.871462147378, + "n": 2, + "nights": 2, + "z": 11.462966771233711, + "inst": 0.8586675130208333, + "topo": 6440.846841110123, + "edge": 176.9839679312745, + "fibres": [ + "3-208" + ], + "obsids": [ + "934403208", + "944303208" + ], + "n_rest": 42, + "mu_rest": 7.802018752396873, + "p_rest": 2.220446049250313e-16, + "n_topo": 10, + "mu_topo": 2.640313845315394, + "p_topo": 0.00042273401477321837, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 13.539430000000001, + "spread_star": 0.18449088737452257, + "spread_topo": 0.25651446395932, + "duty": 0.045454545454545456, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (42 other stars against 7.8 by chance)", + "shared in the instrument's frame (10 other stars against 2.6 by chance)" + ] + }, + { + "star": "2538233484758334592", + "arm": "B", + "rest": 5078.539336226574, + "obs": 5078.673333080323, + "n": 2, + "nights": 2, + "z": 10.883619518237493, + "inst": 0.6772203125, + "topo": 5078.361375402672, + "edge": 173.98303914185544, + "fibres": [ + "1-140", + "1-150" + ], + "obsids": [ + "696401140", + "761501150" + ], + "n_rest": 7, + "mu_rest": 3.463821789960869, + "p_rest": 0.06253484178715729, + "n_topo": 1, + "mu_topo": 1.1501090169922692, + "p_topo": 0.6833977475276874, + "fibre_mates": [], + "detector_mates": [ + "1966021868162235520" + ], + "other_nights_topo": [], + "hrv_spread": 10.839690000000001, + "spread_star": 0.16085707023376017, + "spread_topo": 0.022757193816687504, + "duty": 0.022727272727272728, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars", + "its nights agree in the instrument's frame (0.023 A) and not in the star's (0.161 A)" + ] + }, + { + "star": "2556424771496343424", + "arm": "R", + "rest": 6626.800211497459, + "obs": 6626.622711349346, + "n": 2, + "nights": 2, + "z": 9.009797020672464, + "inst": 0.8836309895833333, + "topo": 6625.987818936945, + "edge": 228.76784503133877, + "fibres": [ + "8-159" + ], + "obsids": [ + "954008159", + "957308159" + ], + "n_rest": 17, + "mu_rest": 7.975116440442885, + "p_rest": 0.0036071105663965097, + "n_topo": 7, + "mu_topo": 2.63478107663897, + "p_topo": 0.018303855536520697, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.7979099999999981, + "spread_star": 0.061387843154079746, + "spread_topo": 0.07901396791385196, + "duty": 0.05263157894736842, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "954008152", + "fibre": "8-152", + "lmjm": "85773367", + "z": 0.0 + }, + { + "obsid": "954008156", + "fibre": "8-156", + "lmjm": "85773367", + "z": 0.2519431383339219 + }, + { + "obsid": "954008158", + "fibre": "8-158", + "lmjm": "85773367", + "z": 0.0 + }, + { + "obsid": "954008162", + "fibre": "8-162", + "lmjm": "85773367", + "z": 0.8617318530008626 + }, + { + "obsid": "954008165", + "fibre": "8-165", + "lmjm": "85773367", + "z": 0.27160581383836857 + }, + { + "obsid": "954008167", + "fibre": "8-167", + "lmjm": "85773367", + "z": -1.2753827452205182 + }, + { + "obsid": "957308152", + "fibre": "8-152", + "lmjm": "85780455", + "z": 0.34621470859813486 + }, + { + "obsid": "957308156", + "fibre": "8-156", + "lmjm": "85780455", + "z": 0.0 + }, + { + "obsid": "957308158", + "fibre": "8-158", + "lmjm": "85780455", + "z": -0.29846492041382067 + }, + { + "obsid": "957308162", + "fibre": "8-162", + "lmjm": "85780455", + "z": -0.3050842339446806 + }, + { + "obsid": "957308165", + "fibre": "8-165", + "lmjm": "85780455", + "z": 0.0 + }, + { + "obsid": "957308167", + "fibre": "8-167", + "lmjm": "85780455", + "z": -0.9589757685751766 + } + ] + }, + { + "star": "2583347791170879744", + "arm": "R", + "rest": 6679.793154441726, + "obs": 6679.816104275071, + "n": 2, + "nights": 2, + "z": 17.57515248992009, + "inst": 0.890539453125, + "topo": 6679.479999415056, + "edge": 174.16738639994492, + "fibres": [ + "12-105" + ], + "obsids": [ + "845812105", + "860612105" + ], + "n_rest": 54, + "mu_rest": 7.528764950050155, + "p_rest": 0.0, + "n_topo": 13, + "mu_topo": 2.527060412457854, + "p_topo": 2.675242045668824e-06, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 17.1072, + "spread_star": 0.08514511999783281, + "spread_topo": 0.4662763021115097, + "duty": 0.030303030303030304, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (54 other stars against 7.5 by chance)", + "shared in the instrument's frame (13 other stars against 2.5 by chance)" + ] + }, + { + "star": "2581952820152990080", + "arm": "R", + "rest": 6457.367086280553, + "obs": 6457.444089843242, + "n": 2, + "nights": 2, + "z": 10.998340369563149, + "inst": 0.8609104817708333, + "topo": 6457.036112218356, + "edge": 206.28737873741284, + "fibres": [ + "14-229" + ], + "obsids": [ + "845514229", + "877214229" + ], + "n_rest": 29, + "mu_rest": 8.927538552522533, + "p_rest": 7.916695299314824e-08, + "n_topo": 14, + "mu_topo": 2.9700256684720228, + "p_topo": 3.0383726947746936e-06, + "fibre_mates": [], + "detector_mates": [ + "756159916225847680" + ], + "other_nights_topo": [], + "hrv_spread": 22.412280000000003, + "spread_star": 0.055717748911774834, + "spread_topo": 0.5384080165204068, + "duty": 0.030303030303030304, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (29 other stars against 8.9 by chance)", + "shared in the instrument's frame (14 other stars against 3.0 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "2551545345050618752", + "arm": "B", + "rest": 5386.05236410695, + "obs": 5386.063682647156, + "n": 2, + "nights": 2, + "z": 20.17266650470443, + "inst": 0.7181899739583333, + "topo": 5385.607979882579, + "edge": 5.799862165544255, + "fibres": [ + "14-165" + ], + "obsids": [ + "694314165", + "701114165" + ], + "n_rest": 4, + "mu_rest": 2.41121783841272, + "p_rest": 0.22362504134517303, + "n_topo": 0, + "mu_topo": 0.8178554298735685, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 4.88955, + "spread_star": 0.22708914818485937, + "spread_topo": 0.31490107864010497, + "duty": 0.03225806451612903, + "exposure_mates": [], + "why": [ + "within 5.8 A of the arm's end" + ] + }, + { + "star": "2581605198385006080", + "arm": "R", + "rest": 6501.183638104422, + "obs": 6501.514343723711, + "n": 2, + "nights": 2, + "z": 30.828876334011273, + "inst": 0.8667667317708333, + "topo": 6501.227479018527, + "edge": 243.00020975890402, + "fibres": [ + "4-222" + ], + "obsids": [ + "839204222", + "871704222" + ], + "n_rest": 40, + "mu_rest": 7.139132523393753, + "p_rest": 1.1102230246251565e-16, + "n_topo": 4, + "mu_topo": 2.44250145898559, + "p_topo": 0.23020646662417354, + "fibre_mates": [], + "detector_mates": [ + "3940215439871503616", + "454632153830590336" + ], + "other_nights_topo": [], + "hrv_spread": 31.28937, + "spread_star": 0.0858807484873978, + "spread_topo": 0.5926225198663815, + "duty": 0.0273972602739726, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (40 other stars against 7.1 by chance)", + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "2581605198385006080", + "arm": "R", + "rest": 6547.917305643576, + "obs": 6548.250388535577, + "n": 3, + "nights": 3, + "z": 25.46469473268992, + "inst": 0.8731448567708333, + "topo": 6547.838714241708, + "edge": 281.38445063317795, + "fibres": [ + "4-222" + ], + "obsids": [ + "839204222", + "871704222", + "877204222" + ], + "n_rest": 38, + "mu_rest": 8.035373304900187, + "p_rest": 1.9317880628477724e-14, + "n_topo": 4, + "mu_topo": 2.6899210090281853, + "p_topo": 0.28368699186246027, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 32.50548, + "spread_star": 0.11177656701238448, + "spread_topo": 0.7521808044211866, + "duty": 0.0410958904109589, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (38 other stars against 8.0 by chance)" + ] + }, + { + "star": "2581605198385006080", + "arm": "R", + "rest": 6574.7238697136345, + "obs": 6575.058316215998, + "n": 2, + "nights": 2, + "z": 20.089889370169907, + "inst": 0.87662265625, + "topo": 6574.7618475520985, + "edge": 254.97732515955704, + "fibres": [ + "4-222" + ], + "obsids": [ + "839204222", + "873904222" + ], + "n_rest": 30, + "mu_rest": 8.691569155475669, + "p_rest": 1.30475195092572e-08, + "n_topo": 4, + "mu_topo": 2.972233712403563, + "p_topo": 0.34654756962883226, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 31.869510000000002, + "spread_star": 0.025395644551281293, + "spread_topo": 0.6735043459066219, + "duty": 0.0273972602739726, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (30 other stars against 8.7 by chance)" + ] + }, + { + "star": "2876014971619845248", + "arm": "R", + "rest": 6413.386183418524, + "obs": 6413.189263121688, + "n": 2, + "nights": 2, + "z": 28.91061189053354, + "inst": 0.8549867838541667, + "topo": 6413.012025715432, + "edge": 141.5121274257608, + "fibres": [ + "6-124" + ], + "obsids": [ + "839806124", + "945106124" + ], + "n_rest": 39, + "mu_rest": 7.583168181973578, + "p_rest": 0.0, + "n_topo": 9, + "mu_topo": 2.5782393517487043, + "p_topo": 0.0014051145368287887, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 19.14477, + "spread_star": 0.025170602206344483, + "spread_topo": 0.4346932686867149, + "duty": 0.0625, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (39 other stars against 7.6 by chance)" + ] + }, + { + "star": "442392356027138816", + "arm": "B", + "rest": 5200.0052933077, + "obs": 5200.323927398349, + "n": 4, + "nights": 2, + "z": 7.1905037025017995, + "inst": 0.6934461588541667, + "topo": 5200.127141917571, + "edge": 192.7295421942108, + "fibres": [ + "12-137" + ], + "obsids": [ + "702512137", + "717312137" + ], + "n_rest": 34, + "mu_rest": 4.806487944484834, + "p_rest": 3.3306690738754696e-16, + "n_topo": 6, + "mu_topo": 1.5885061719556903, + "p_topo": 0.005839982016093592, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 11.92663, + "spread_star": 0.0924827840171929, + "spread_topo": 0.1223040042023058, + "duty": 0.0851063829787234, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (34 other stars against 4.8 by chance)" + ] + }, + { + "star": "247989285666939520", + "arm": "R", + "rest": 6413.427113917838, + "obs": 6412.797735090398, + "n": 2, + "nights": 2, + "z": 12.911591676017418, + "inst": 0.854988671875, + "topo": 6412.586998464759, + "edge": 106.94167575134179, + "fibres": [ + "16-98" + ], + "obsids": [ + "610316098", + "623416098" + ], + "n_rest": 38, + "mu_rest": 7.616994825634407, + "p_rest": 3.885780586188048e-15, + "n_topo": 1, + "mu_topo": 2.549923624605568, + "p_topo": 0.9219123702530693, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 12.63719, + "spread_star": 0.025597752635803772, + "spread_topo": 0.29589612009294797, + "duty": 0.26666666666666666, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (38 other stars against 7.6 by chance)" + ] + }, + { + "star": "447318580436388864", + "arm": "R", + "rest": 6679.950420770165, + "obs": 6680.38748055605, + "n": 2, + "nights": 1, + "z": 12.031536622610474, + "inst": 0.8906357421875, + "topo": 6680.026882831302, + "edge": 144.72563183036618, + "fibres": [ + "4-234" + ], + "obsids": [ + "876504234" + ], + "n_rest": 55, + "mu_rest": 7.581715163600054, + "p_rest": 0.0, + "n_topo": 7, + "mu_topo": 2.591768337887795, + "p_topo": 0.016909186950095356, + "fibre_mates": [], + "detector_mates": [ + "2720746887346301696" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.21516739906655857, + "spread_topo": 0.21516986197912047, + "duty": 0.029850746268656716, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (55 other stars against 7.6 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "458744911435331328", + "arm": "R", + "rest": 6588.235856457204, + "obs": 6588.4830863371, + "n": 2, + "nights": 2, + "z": 11.721408098361062, + "inst": 0.8785637369791667, + "topo": 6588.31546763227, + "edge": 258.32072363854604, + "fibres": [ + "4-118" + ], + "obsids": [ + "693504118", + "702704118" + ], + "n_rest": 18, + "mu_rest": 8.13689920500662, + "p_rest": 0.0019083178614056617, + "n_topo": 2, + "mu_topo": 2.677633160184912, + "p_topo": 0.7472523649286764, + "fibre_mates": [], + "detector_mates": [ + "816160922884502528", + "921431602101697280" + ], + "other_nights_topo": [], + "hrv_spread": 8.09252, + "spread_star": 0.0290977067888889, + "spread_topo": 0.1487406991655007, + "duty": 0.08333333333333333, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "441773090462488704", + "arm": "R", + "rest": 6620.33944138462, + "obs": 6620.171499596532, + "n": 15, + "nights": 5, + "z": 48.2505158697736, + "inst": 0.882755859375, + "topo": 6620.385727189224, + "edge": 220.76778070826003, + "fibres": [ + "3-93" + ], + "obsids": [ + "762203093", + "764703093", + "766403093", + "767103093", + "849403093", + "851503093", + "852403093" + ], + "n_rest": 10, + "mu_rest": 7.601226991201292, + "p_rest": 0.2352917237034623, + "n_topo": 4, + "mu_topo": 2.481457658696775, + "p_topo": 0.2384676496545456, + "fibre_mates": [ + "912582732521063296" + ], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "730459763934332416", + "816544068326872448", + "816545339637191296" + ], + "other_nights_topo": [], + "hrv_spread": 6.72369, + "spread_star": 0.3622317460267368, + "spread_topo": 0.4086374423904999, + "duty": 0.3191489361702128, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 10 other stars" + ] + }, + { + "star": "441773090462488704", + "arm": "R", + "rest": 6620.469245465824, + "obs": 6620.301300384924, + "n": 15, + "nights": 5, + "z": 48.2505158697736, + "inst": 0.8828038411458333, + "topo": 6620.385727189224, + "edge": 220.76778070826003, + "fibres": [ + "3-93" + ], + "obsids": [ + "762203093", + "764703093", + "766403093", + "767103093", + "849403093", + "851503093", + "852403093" + ], + "n_rest": 10, + "mu_rest": 7.61881037609595, + "p_rest": 0.23734676783569764, + "n_topo": 4, + "mu_topo": 2.481457658696775, + "p_topo": 0.2384676496545456, + "fibre_mates": [ + "912582732521063296" + ], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "730459763934332416", + "816544068326872448", + "816545339637191296" + ], + "other_nights_topo": [], + "hrv_spread": 6.72369, + "spread_star": 0.3622317460267368, + "spread_topo": 0.4086374423904999, + "duty": 0.3191489361702128, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 10 other stars" + ] + }, + { + "star": "441773090462488704", + "arm": "R", + "rest": 6621.465967716155, + "obs": 6621.297997350855, + "n": 3, + "nights": 1, + "z": 68.89109847967019, + "inst": 0.8829182291666666, + "topo": 6620.856166212582, + "edge": 221.76427169814542, + "fibres": [ + "3-93" + ], + "obsids": [ + "968803093" + ], + "n_rest": 9, + "mu_rest": 7.358402798365131, + "p_rest": 0.3186882883915667, + "n_topo": 6, + "mu_topo": 2.4990693565882016, + "p_topo": 0.04195889926416019, + "fibre_mates": [ + "912582732521063296" + ], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "730459763934332416", + "816544068326872448", + "816545339637191296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.009807009499127162, + "spread_topo": 0.00980610632632306, + "duty": 0.06382978723404255, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 10 other stars" + ] + }, + { + "star": "441773090462488704", + "arm": "R", + "rest": 6622.066005777331, + "obs": 6621.898020190536, + "n": 6, + "nights": 2, + "z": 54.52343542180619, + "inst": 0.8829875, + "topo": 6621.5082140946915, + "edge": 220.64357468770413, + "fibres": [ + "3-93" + ], + "obsids": [ + "954103093", + "982403093" + ], + "n_rest": 8, + "mu_rest": 7.324192510539581, + "p_rest": 0.4494738518901358, + "n_topo": 3, + "mu_topo": 2.476066028463088, + "p_topo": 0.45003291810882273, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "730459763934332416", + "816544068326872448", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 15.47702, + "spread_star": 0.17344036514350591, + "spread_topo": 0.1812251318979179, + "duty": 0.1276595744680851, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 11 other stars" + ] + }, + { + "star": "64953069592851328", + "arm": "R", + "rest": 6307.358426603822, + "obs": 6306.183604205383, + "n": 2, + "nights": 2, + "z": 11.059465965660229, + "inst": 0.84071171875, + "topo": 6305.813553033553, + "edge": 41.61757588949149, + "fibres": [ + "5-184" + ], + "obsids": [ + "770105184", + "802205184" + ], + "n_rest": 16, + "mu_rest": 6.627311165980713, + "p_rest": 0.0014083668368024549, + "n_topo": 6, + "mu_topo": 2.319267536253064, + "p_topo": 0.03102355103587806, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 24.435219999999997, + "spread_star": 0.15801186235330533, + "spread_topo": 0.6719117038401237, + "duty": 0.03225806451612903, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "770105176", + "fibre": "5-176", + "lmjm": "84700746", + "z": 0.821383095724956 + }, + { + "obsid": "770105177", + "fibre": "5-177", + "lmjm": "84700746", + "z": 0.32683343977536883 + }, + { + "obsid": "770105178", + "fibre": "5-178", + "lmjm": "84700746", + "z": -0.7261999146431952 + }, + { + "obsid": "770105179", + "fibre": "5-179", + "lmjm": "84700746", + "z": 0.3081724399815152 + }, + { + "obsid": "770105180", + "fibre": "5-180", + "lmjm": "84700746", + "z": -0.7267364713617931 + }, + { + "obsid": "770105181", + "fibre": "5-181", + "lmjm": "84700746", + "z": -0.04438814534692193 + }, + { + "obsid": "770105183", + "fibre": "5-183", + "lmjm": "84700746", + "z": -0.040858961166727895 + }, + { + "obsid": "770105186", + "fibre": "5-186", + "lmjm": "84700746", + "z": 0.4661412062560669 + }, + { + "obsid": "770105188", + "fibre": "5-188", + "lmjm": "84700746", + "z": 0.5155258720283188 + }, + { + "obsid": "770105189", + "fibre": "5-189", + "lmjm": "84700746", + "z": 1.2883499975489972 + }, + { + "obsid": "770105190", + "fibre": "5-190", + "lmjm": "84700746", + "z": 0.7316141841180465 + }, + { + "obsid": "802205176", + "fibre": "5-176", + "lmjm": "84802756", + "z": 0.0 + }, + { + "obsid": "802205177", + "fibre": "5-177", + "lmjm": "84802756", + "z": 0.2828472708208836 + }, + { + "obsid": "802205178", + "fibre": "5-178", + "lmjm": "84802756", + "z": 0.13833088061930324 + }, + { + "obsid": "802205179", + "fibre": "5-179", + "lmjm": "84802756", + "z": 0.34232846648263415 + }, + { + "obsid": "802205180", + "fibre": "5-180", + "lmjm": "84802756", + "z": -0.6880405291404809 + }, + { + "obsid": "802205181", + "fibre": "5-181", + "lmjm": "84802756", + "z": -0.41028641281135264 + }, + { + "obsid": "802205186", + "fibre": "5-186", + "lmjm": "84802756", + "z": 0.9237202676047893 + }, + { + "obsid": "802205188", + "fibre": "5-188", + "lmjm": "84802756", + "z": -0.2315225745747184 + }, + { + "obsid": "802205189", + "fibre": "5-189", + "lmjm": "84802756", + "z": 0.6401608845767082 + }, + { + "obsid": "802205190", + "fibre": "5-190", + "lmjm": "84802756", + "z": -0.2998619003853916 + } + ] + }, + { + "star": "65371399407749760", + "arm": "B", + "rest": 5197.813563472922, + "obs": 5198.217106348874, + "n": 2, + "nights": 1, + "z": 8.492804485559272, + "inst": 0.6931838541666666, + "topo": 5197.71425281337, + "edge": 194.98684854714884, + "fibres": [ + "7-146" + ], + "obsids": [ + "889907146" + ], + "n_rest": 11, + "mu_rest": 4.913965485890222, + "p_rest": 0.012201175693349664, + "n_topo": 4, + "mu_topo": 1.628832089753285, + "p_topo": 0.0828372563420543, + "fibre_mates": [], + "detector_mates": [ + "3825905538123323392" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.005175743624931783, + "spread_topo": 0.00517564473557286, + "duty": 0.07692307692307693, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "65371399407749760", + "arm": "B", + "rest": 5200.172297219141, + "obs": 5200.5760232202065, + "n": 2, + "nights": 1, + "z": 9.69340024119685, + "inst": 0.6934826822916667, + "topo": 5200.072941493062, + "edge": 192.62715664537063, + "fibres": [ + "7-146" + ], + "obsids": [ + "889907146" + ], + "n_rest": 34, + "mu_rest": 4.792948172516366, + "p_rest": 3.3306690738754696e-16, + "n_topo": 5, + "mu_topo": 1.5839249897780356, + "p_topo": 0.02280670147124997, + "fibre_mates": [], + "detector_mates": [ + "3825905538123323392" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.006725684183038538, + "spread_topo": 0.006725555680532125, + "duty": 0.07692307692307693, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (34 other stars against 4.8 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "218233786598094464", + "arm": "R", + "rest": 6761.620629637916, + "obs": 6761.459366116396, + "n": 3, + "nights": 1, + "z": 190.1127735151042, + "inst": 0.9015977213541667, + "topo": 6761.381398300717, + "edge": 82.90507002984032, + "fibres": [ + "16-137" + ], + "obsids": [ + "858416137" + ], + "n_rest": 13, + "mu_rest": 8.724967855461966, + "p_rest": 0.1051391790323003, + "n_topo": 5, + "mu_topo": 2.931960288937933, + "p_topo": 0.17343652092124207, + "fibre_mates": [], + "detector_mates": [ + "2741947155156651392", + "3813463911220217344", + "4541533504381309568" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.018620408253809728, + "spread_topo": 0.018619749449499068, + "duty": 0.11320754716981132, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 3 other stars" + ] + }, + { + "star": "223905857848701184", + "arm": "B", + "rest": 5039.864565131154, + "obs": 5039.882216868723, + "n": 2, + "nights": 1, + "z": 7.131030573671134, + "inst": 0.67190625, + "topo": 5039.8987509431745, + "edge": 139.0514933159393, + "fibres": [ + "12-89" + ], + "obsids": [ + "944612089" + ], + "n_rest": 11, + "mu_rest": 3.158731985796553, + "p_rest": 0.00044721199445896254, + "n_topo": 4, + "mu_topo": 1.0617658526833624, + "p_topo": 0.02301139245846029, + "fibre_mates": [], + "detector_mates": [ + "1506907696918058368" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0003142919658785104, + "spread_topo": 0.00031429409864358604, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (11 other stars against 3.2 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "205376780520580224", + "arm": "R", + "rest": 6564.684175498218, + "obs": 6565.050738465915, + "n": 2, + "nights": 1, + "z": 16.927258096141145, + "inst": 0.8752291015625, + "topo": 6565.370698621804, + "edge": 254.43737602477722, + "fibres": [ + "4-248" + ], + "obsids": [ + "850904248" + ], + "n_rest": 51, + "mu_rest": 8.730159341977526, + "p_rest": 0.0, + "n_topo": 5, + "mu_topo": 2.9334097784043602, + "p_topo": 0.17367443304479535, + "fibre_mates": [], + "detector_mates": [ + "3051564716096991360" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.13899763217796135, + "spread_topo": 0.13901216830618068, + "duty": 0.13333333333333333, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (51 other stars against 8.7 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "3017224661565267584", + "arm": "R", + "rest": 6616.4463774473525, + "obs": 6617.34836000106, + "n": 4, + "nights": 1, + "z": 47.841029551887125, + "inst": 0.8823987630208333, + "topo": 6617.793851157856, + "edge": 225.13411307619026, + "fibres": [ + "3-96" + ], + "obsids": [ + "936303096" + ], + "n_rest": 6, + "mu_rest": 7.70129964947037, + "p_rest": 0.7798457957644266, + "n_topo": 3, + "mu_topo": 2.5443862819952145, + "p_topo": 0.4675210929150171, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.008714356656128075, + "spread_topo": 0.00871613138133398, + "duty": 1.0, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 11 other stars" + ] + }, + { + "star": "161252970877957632", + "arm": "R", + "rest": 6783.426008796747, + "obs": 6783.153352559992, + "n": 4, + "nights": 1, + "z": 6.9866762931951545, + "inst": 0.9043484375, + "topo": 6782.93474492913, + "edge": 45.55798598467209, + "fibres": [ + "11-247" + ], + "obsids": [ + "873411247" + ], + "n_rest": 16, + "mu_rest": 8.485152596129621, + "p_rest": 0.013632758972741521, + "n_topo": 6, + "mu_topo": 2.8460415491806, + "p_topo": 0.06919835634350036, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.016797222849163518, + "spread_topo": 0.016796006374534045, + "duty": 0.23529411764705882, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "873411244", + "fibre": "11-244", + "lmjm": "85260832", + "z": -0.035609807671837704 + }, + { + "obsid": "873411244", + "fibre": "11-244", + "lmjm": "85260855", + "z": 0.0 + }, + { + "obsid": "873411244", + "fibre": "11-244", + "lmjm": "85260879", + "z": 0.379144276765564 + }, + { + "obsid": "873411244", + "fibre": "11-244", + "lmjm": "85260902", + "z": 0.4032109545998981 + }, + { + "obsid": "873411245", + "fibre": "11-245", + "lmjm": "85260832", + "z": -0.2867123512530805 + }, + { + "obsid": "873411245", + "fibre": "11-245", + "lmjm": "85260855", + "z": 0.43143557506955793 + }, + { + "obsid": "873411245", + "fibre": "11-245", + "lmjm": "85260879", + "z": 0.10830557465442132 + }, + { + "obsid": "873411245", + "fibre": "11-245", + "lmjm": "85260902", + "z": 0.223899651841259 + }, + { + "obsid": "873411248", + "fibre": "11-248", + "lmjm": "85260832", + "z": -1.2804573161916915 + }, + { + "obsid": "873411248", + "fibre": "11-248", + "lmjm": "85260855", + "z": -0.3993763140946273 + }, + { + "obsid": "873411248", + "fibre": "11-248", + "lmjm": "85260879", + "z": 0.1183836158215824 + }, + { + "obsid": "873411248", + "fibre": "11-248", + "lmjm": "85260902", + "z": -0.24009656177070518 + }, + { + "obsid": "873411250", + "fibre": "11-250", + "lmjm": "85260832", + "z": -0.6217383167514159 + }, + { + "obsid": "873411250", + "fibre": "11-250", + "lmjm": "85260855", + "z": 0.18801188899364243 + }, + { + "obsid": "873411250", + "fibre": "11-250", + "lmjm": "85260879", + "z": 0.0 + }, + { + "obsid": "873411250", + "fibre": "11-250", + "lmjm": "85260902", + "z": -0.025614452067217287 + } + ] + }, + { + "star": "228996214429975808", + "arm": "R", + "rest": 6631.954686799674, + "obs": 6632.491583362457, + "n": 2, + "nights": 1, + "z": 11.290269860223505, + "inst": 0.8844240234375, + "topo": 6632.891680028748, + "edge": 201.1185497297056, + "fibres": [ + "14-224" + ], + "obsids": [ + "934114224" + ], + "n_rest": 16, + "mu_rest": 7.439917238494148, + "p_rest": 0.004278774768000537, + "n_topo": 6, + "mu_topo": 2.526901626630328, + "p_topo": 0.04384230629994024, + "fibre_mates": [], + "detector_mates": [ + "2551562284401606400", + "2581952820152990080" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.032660859082170646, + "spread_topo": 0.032665473559063685, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "3314140599755959424", + "arm": "R", + "rest": 6507.367254236742, + "obs": 6508.202618910191, + "n": 2, + "nights": 2, + "z": 9.768852822718076, + "inst": 0.8676884114583333, + "topo": 6508.135021848084, + "edge": 247.38728771363185, + "fibres": [ + "7-210", + "7-26" + ], + "obsids": [ + "876107026", + "941807210" + ], + "n_rest": 7, + "mu_rest": 7.86565617046766, + "p_rest": 0.6699433325876254, + "n_topo": 1, + "mu_topo": 2.6507589444090396, + "p_topo": 0.9294023869404312, + "fibre_mates": [], + "detector_mates": [ + "3024891594801681536" + ], + "other_nights_topo": [], + "hrv_spread": 24.33789, + "spread_star": 0.012890639583929442, + "spread_topo": 0.5412330997305617, + "duty": 0.05555555555555555, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "182076243641383680", + "arm": "B", + "rest": 5036.394452035249, + "obs": 5036.666024851023, + "n": 4, + "nights": 1, + "z": 13.73006699737061, + "inst": 0.6714608072916667, + "topo": 5036.726221963855, + "edge": 113.62547166063268, + "fibres": [ + "3-213" + ], + "obsids": [ + "612303213" + ], + "n_rest": 2, + "mu_rest": 3.0769800249580914, + "p_rest": 0.812058305629046, + "n_topo": 1, + "mu_topo": 1.0213063336124517, + "p_topo": 0.6398758095726971, + "fibre_mates": [], + "detector_mates": [ + "190451498587716480", + "3153356815404657408" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.1199154646928946, + "spread_topo": 0.11992336406274262, + "duty": 0.5714285714285714, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "182076243641383680", + "arm": "B", + "rest": 5065.320647726014, + "obs": 5065.593780302146, + "n": 2, + "nights": 1, + "z": 7.3719234934150215, + "inst": 0.6753387369791667, + "topo": 5065.654323153081, + "edge": 142.63141253305093, + "fibres": [ + "3-213" + ], + "obsids": [ + "612303213" + ], + "n_rest": 4, + "mu_rest": 3.3347548001590366, + "p_rest": 0.4273270067901719, + "n_topo": 2, + "mu_topo": 1.1161047911136328, + "p_topo": 0.306863101891367, + "fibre_mates": [], + "detector_mates": [ + "582790438881960960" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0077429331749954144, + "spread_topo": 0.007743443236904568, + "duty": 0.2857142857142857, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "925570095148924800", + "arm": "B", + "rest": 5234.274728189974, + "obs": 5234.9467505471475, + "n": 2, + "nights": 2, + "z": 24.467104807377382, + "inst": 0.6979087890625, + "topo": 5234.867653966726, + "edge": 146.73686598406493, + "fibres": [ + "16-225" + ], + "obsids": [ + "889216225", + "967216225" + ], + "n_rest": 22, + "mu_rest": 4.328158102976479, + "p_rest": 1.4381815738317982e-09, + "n_topo": 3, + "mu_topo": 1.4934296448820588, + "p_topo": 0.18950568484062447, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 11.29788, + "spread_star": 0.01762142502957431, + "spread_topo": 0.2148999414712307, + "duty": 0.023255813953488372, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (22 other stars against 4.3 by chance)" + ] + }, + { + "star": "986071444021690112", + "arm": "R", + "rest": 6801.651349184708, + "obs": 6802.174304514019, + "n": 4, + "nights": 1, + "z": 21.105884164766113, + "inst": 0.9068849609375, + "topo": 6802.034923273493, + "edge": 55.6547778831964, + "fibres": [ + "15-121" + ], + "obsids": [ + "883415121" + ], + "n_rest": 9, + "mu_rest": 9.385612258006592, + "p_rest": 0.5939632725882805, + "n_topo": 4, + "mu_topo": 3.1705096466034317, + "p_topo": 0.39090947815468147, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.007076764712110162, + "spread_topo": 0.007077163801113784, + "duty": 0.36363636363636365, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "883415113", + "fibre": "15-113", + "lmjm": "85298325", + "z": 0.5816629963257308 + }, + { + "obsid": "883415113", + "fibre": "15-113", + "lmjm": "85298349", + "z": 0.18541696698798193 + }, + { + "obsid": "883415113", + "fibre": "15-113", + "lmjm": "85298372", + "z": 0.0 + }, + { + "obsid": "883415113", + "fibre": "15-113", + "lmjm": "85298395", + "z": 1.154670113421216 + }, + { + "obsid": "883415114", + "fibre": "15-114", + "lmjm": "85298325", + "z": -0.2972841689523101 + }, + { + "obsid": "883415114", + "fibre": "15-114", + "lmjm": "85298349", + "z": 0.311398018726463 + }, + { + "obsid": "883415114", + "fibre": "15-114", + "lmjm": "85298372", + "z": -0.21270449402062022 + }, + { + "obsid": "883415114", + "fibre": "15-114", + "lmjm": "85298395", + "z": -0.04845707090009782 + }, + { + "obsid": "883415115", + "fibre": "15-115", + "lmjm": "85298325", + "z": 0.30718968808703734 + }, + { + "obsid": "883415115", + "fibre": "15-115", + "lmjm": "85298349", + "z": 1.1044440724188427 + }, + { + "obsid": "883415115", + "fibre": "15-115", + "lmjm": "85298372", + "z": 0.4869000975307142 + }, + { + "obsid": "883415115", + "fibre": "15-115", + "lmjm": "85298395", + "z": -0.039317494611203076 + }, + { + "obsid": "883415117", + "fibre": "15-117", + "lmjm": "85298325", + "z": 0.0 + }, + { + "obsid": "883415117", + "fibre": "15-117", + "lmjm": "85298349", + "z": 0.4074837814670269 + }, + { + "obsid": "883415117", + "fibre": "15-117", + "lmjm": "85298372", + "z": -0.1265907668746574 + }, + { + "obsid": "883415117", + "fibre": "15-117", + "lmjm": "85298395", + "z": -0.27273805752370417 + }, + { + "obsid": "883415118", + "fibre": "15-118", + "lmjm": "85298325", + "z": 0.5136120918701189 + }, + { + "obsid": "883415118", + "fibre": "15-118", + "lmjm": "85298349", + "z": 0.550769461149049 + }, + { + "obsid": "883415118", + "fibre": "15-118", + "lmjm": "85298372", + "z": 0.6858812535832374 + }, + { + "obsid": "883415118", + "fibre": "15-118", + "lmjm": "85298395", + "z": -0.5062287853213112 + }, + { + "obsid": "883415119", + "fibre": "15-119", + "lmjm": "85298325", + "z": 0.2867211059980717 + }, + { + "obsid": "883415119", + "fibre": "15-119", + "lmjm": "85298349", + "z": 0.0 + }, + { + "obsid": "883415119", + "fibre": "15-119", + "lmjm": "85298372", + "z": 0.0 + }, + { + "obsid": "883415119", + "fibre": "15-119", + "lmjm": "85298395", + "z": -0.5254450827935074 + }, + { + "obsid": "883415122", + "fibre": "15-122", + "lmjm": "85298325", + "z": -776.6559865554221 + }, + { + "obsid": "883415122", + "fibre": "15-122", + "lmjm": "85298349", + "z": -658.003665975154 + }, + { + "obsid": "883415122", + "fibre": "15-122", + "lmjm": "85298372", + "z": 0.04774347846073639 + }, + { + "obsid": "883415122", + "fibre": "15-122", + "lmjm": "85298395", + "z": -1138.925843880875 + }, + { + "obsid": "883415125", + "fibre": "15-125", + "lmjm": "85298325", + "z": NaN + }, + { + "obsid": "883415125", + "fibre": "15-125", + "lmjm": "85298349", + "z": NaN + }, + { + "obsid": "883415125", + "fibre": "15-125", + "lmjm": "85298372", + "z": NaN + }, + { + "obsid": "883415125", + "fibre": "15-125", + "lmjm": "85298395", + "z": NaN + }, + { + "obsid": "883415126", + "fibre": "15-126", + "lmjm": "85298325", + "z": 0.7852489264113368 + }, + { + "obsid": "883415126", + "fibre": "15-126", + "lmjm": "85298349", + "z": 1.2917244709188875 + }, + { + "obsid": "883415126", + "fibre": "15-126", + "lmjm": "85298372", + "z": 1.6457865502190336 + }, + { + "obsid": "883415126", + "fibre": "15-126", + "lmjm": "85298395", + "z": 0.0 + }, + { + "obsid": "883415128", + "fibre": "15-128", + "lmjm": "85298325", + "z": NaN + }, + { + "obsid": "883415128", + "fibre": "15-128", + "lmjm": "85298349", + "z": NaN + }, + { + "obsid": "883415128", + "fibre": "15-128", + "lmjm": "85298372", + "z": NaN + }, + { + "obsid": "883415128", + "fibre": "15-128", + "lmjm": "85298395", + "z": NaN + } + ] + }, + { + "star": "950362158209755008", + "arm": "B", + "rest": 5198.80633383649, + "obs": 5198.981134657681, + "n": 2, + "nights": 1, + "z": 10.425311742361394, + "inst": 0.6931294921875, + "topo": 5199.004250345052, + "edge": 192.53967128653403, + "fibres": [ + "7-161" + ], + "obsids": [ + "622907161" + ], + "n_rest": 9, + "mu_rest": 4.955975663448047, + "p_rest": 0.06525772828455567, + "n_topo": 5, + "mu_topo": 1.6338000295625648, + "p_topo": 0.025593191519965197, + "fibre_mates": [], + "detector_mates": [ + "1557605697038218496" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.014051701606149436, + "spread_topo": 0.014052236549105146, + "duty": 0.3333333333333333, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "950362158209755008", + "arm": "B", + "rest": 5200.100629747717, + "obs": 5200.275474087356, + "n": 3, + "nights": 1, + "z": 7.0074321193513365, + "inst": 0.6934388671875, + "topo": 5200.2985955296135, + "edge": 191.2507071240616, + "fibres": [ + "7-161" + ], + "obsids": [ + "622907161" + ], + "n_rest": 36, + "mu_rest": 4.806576066212364, + "p_rest": 0.0, + "n_topo": 4, + "mu_topo": 1.5748640764300776, + "p_topo": 0.07538729687869106, + "fibre_mates": [], + "detector_mates": [ + "1557605697038218496" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.004407744803756941, + "spread_topo": 0.004407912605529418, + "duty": 0.5, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (36 other stars against 4.8 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "3370066365347951616", + "arm": "R", + "rest": 6559.7379847037755, + "obs": 6559.6670904884495, + "n": 2, + "nights": 2, + "z": 12.40103951790393, + "inst": 0.8746935546875, + "topo": 6559.877365171011, + "edge": 286.7785862050014, + "fibres": [ + "2-98" + ], + "obsids": [ + "935102098", + "967102098" + ], + "n_rest": 7, + "mu_rest": 9.328186227051464, + "p_rest": 0.8215006773972025, + "n_topo": 2, + "mu_topo": 3.0691536430882853, + "p_topo": 0.8109452484926405, + "fibre_mates": [], + "detector_mates": [ + "2875360075006038016", + "841168180987404544" + ], + "other_nights_topo": [], + "hrv_spread": 34.56072, + "spread_star": 0.11294728757093253, + "spread_topo": 0.6433113382381634, + "duty": 0.03333333333333333, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "3368237259037930752", + "arm": "B", + "rest": 5378.119515124661, + "obs": 5377.945860999891, + "n": 2, + "nights": 1, + "z": 9.521321373791011, + "inst": 0.7169931640625, + "topo": 5377.636176164482, + "edge": 0.9170456222936991, + "fibres": [ + "6-226" + ], + "obsids": [ + "983006226" + ], + "n_rest": 3, + "mu_rest": 3.1158036740890895, + "p_rest": 0.6022481351039277, + "n_topo": 0, + "mu_topo": 1.047948864948391, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [ + "453620637489337216", + "692451811627399424" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.024187536620956962, + "spread_topo": 0.024185362854950654, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [ + "within 0.9 A of the arm's end", + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "3382234523096849152", + "arm": "R", + "rest": 6841.181534664991, + "obs": 6841.625378321823, + "n": 2, + "nights": 1, + "z": 5801619.588527691, + "inst": 0.9123184244791667, + "topo": 6841.7127604726875, + "edge": 10.227341110048656, + "fibres": [ + "10-106" + ], + "obsids": [ + "875110106" + ], + "n_rest": 7, + "mu_rest": 5.224516052542749, + "p_rest": 0.27132728914693904, + "n_topo": 3, + "mu_topo": 1.6335387516377389, + "p_topo": 0.22534402151678257, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.3058506643801593, + "spread_topo": 0.30587154975091835, + "duty": 0.019417475728155338, + "exposure_mates": [], + "why": [ + "fibres beside it on the same plate show it in the same exposures (3958290.7 sigma)" + ], + "neighbours": [ + { + "obsid": "875110098", + "fibre": "10-98", + "lmjm": "85263835", + "z": -4720057.755366776 + }, + { + "obsid": "875110098", + "fibre": "10-98", + "lmjm": "85263929", + "z": 3773846.8579277038 + }, + { + "obsid": "875110101", + "fibre": "10-101", + "lmjm": "85263835", + "z": NaN + }, + { + "obsid": "875110101", + "fibre": "10-101", + "lmjm": "85263929", + "z": NaN + }, + { + "obsid": "875110103", + "fibre": "10-103", + "lmjm": "85263835", + "z": -6472016.019591028 + }, + { + "obsid": "875110103", + "fibre": "10-103", + "lmjm": "85263929", + "z": 0.0 + }, + { + "obsid": "875110104", + "fibre": "10-104", + "lmjm": "85263835", + "z": -4008332.9078758536 + }, + { + "obsid": "875110104", + "fibre": "10-104", + "lmjm": "85263929", + "z": 3958290.7057476086 + }, + { + "obsid": "875110107", + "fibre": "10-107", + "lmjm": "85263835", + "z": -8147847.360084091 + }, + { + "obsid": "875110107", + "fibre": "10-107", + "lmjm": "85263929", + "z": 0.0 + }, + { + "obsid": "875110108", + "fibre": "10-108", + "lmjm": "85263835", + "z": -3953314.476262211 + }, + { + "obsid": "875110108", + "fibre": "10-108", + "lmjm": "85263929", + "z": 0.0 + }, + { + "obsid": "875110110", + "fibre": "10-110", + "lmjm": "85263835", + "z": -7240338.455390107 + }, + { + "obsid": "875110110", + "fibre": "10-110", + "lmjm": "85263929", + "z": 0.0 + }, + { + "obsid": "875110112", + "fibre": "10-112", + "lmjm": "85263835", + "z": -2496515.1875718613 + }, + { + "obsid": "875110112", + "fibre": "10-112", + "lmjm": "85263929", + "z": -3612232.909578354 + }, + { + "obsid": "875110114", + "fibre": "10-114", + "lmjm": "85263835", + "z": -5361373.733466745 + }, + { + "obsid": "875110114", + "fibre": "10-114", + "lmjm": "85263929", + "z": 0.0 + } + ] + }, + { + "star": "3382234523096849152", + "arm": "R", + "rest": 6844.0034406298055, + "obs": 6844.447467366863, + "n": 2, + "nights": 2, + "z": 4616308.510739404, + "inst": 0.9126841145833333, + "topo": 6844.640664662806, + "edge": 7.466625335537174, + "fibres": [ + "10-106" + ], + "obsids": [ + "857910106", + "875110106" + ], + "n_rest": 5, + "mu_rest": 4.145290874980625, + "p_rest": 0.39952357671834793, + "n_topo": 1, + "mu_topo": 1.4179416404801988, + "p_topo": 0.7577879363514235, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 14.88062, + "spread_star": 0.2616413703744911, + "spread_topo": 0.07808721816309117, + "duty": 0.019417475728155338, + "exposure_mates": [], + "why": [ + "within 7.5 A of the arm's end", + "its nights agree in the instrument's frame (0.078 A) and not in the star's (0.262 A)" + ] + }, + { + "star": "3425090320952473216", + "arm": "B", + "rest": 5234.583427236939, + "obs": 5234.074797312583, + "n": 2, + "nights": 2, + "z": 30.82568988735001, + "inst": 0.697816015625, + "topo": 5233.716724537335, + "edge": 143.55163674798132, + "fibres": [ + "8-169" + ], + "obsids": [ + "637008169", + "802308169" + ], + "n_rest": 16, + "mu_rest": 4.383552386189045, + "p_rest": 1.4848180643234343e-05, + "n_topo": 5, + "mu_topo": 1.4609421969223861, + "p_topo": 0.016796979240100485, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 4.516189999999998, + "spread_star": 0.02838463692842197, + "spread_topo": 0.10721728447606438, + "duty": 0.043478260869565216, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (16 other stars against 4.4 by chance)" + ] + }, + { + "star": "3370728546230787712", + "arm": "R", + "rest": 6705.510119824108, + "obs": 6706.412411629706, + "n": 2, + "nights": 2, + "z": 8.66004090929918, + "inst": 0.8940884765625, + "topo": 6706.480512439359, + "edge": 107.65984748403753, + "fibres": [ + "3-233", + "3-247" + ], + "obsids": [ + "707503233", + "952003247" + ], + "n_rest": 20, + "mu_rest": 8.723197922248605, + "p_rest": 0.000730313459113896, + "n_topo": 6, + "mu_topo": 2.9022664850506996, + "p_topo": 0.07438713743549252, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 8.75502, + "spread_star": 0.024397757032602385, + "spread_topo": 0.17145409707973158, + "duty": 0.02247191011235955, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (20 other stars against 8.7 by chance)" + ] + }, + { + "star": "594944234256955008", + "arm": "B", + "rest": 5268.539843256617, + "obs": 5268.969350772011, + "n": 2, + "nights": 1, + "z": 7.9561799009396195, + "inst": 0.702618359375, + "topo": 5268.656707706856, + "edge": 122.61159456068253, + "fibres": [ + "12-181" + ], + "obsids": [ + "654812181" + ], + "n_rest": 3, + "mu_rest": 5.105697056099378, + "p_rest": 0.8839725847260638, + "n_topo": 2, + "mu_topo": 1.7111864258365457, + "p_topo": 0.5102205499966594, + "fibre_mates": [], + "detector_mates": [ + "2584119266081073280", + "817937458796755200" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.04220745623206312, + "spread_topo": 0.042208392459542665, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "815877833000303488", + "arm": "B", + "rest": 5290.167415354064, + "obs": 5289.983101849242, + "n": 2, + "nights": 2, + "z": 9.088347331273106, + "inst": 0.705262109375, + "topo": 5289.824983782868, + "edge": 84.4476313929099, + "fibres": [ + "8-182", + "8-187" + ], + "obsids": [ + "1006408182", + "715408187" + ], + "n_rest": 7, + "mu_rest": 5.0987938901830505, + "p_rest": 0.25240045242338227, + "n_topo": 0, + "mu_topo": 1.6855577196404647, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 34.32998, + "spread_star": 0.10854057844062481, + "spread_topo": 0.7142664594966845, + "duty": 0.01680672268907563, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "1006408174", + "fibre": "8-174", + "lmjm": "85947619", + "z": -0.24290041281733493 + }, + { + "obsid": "1006408179", + "fibre": "8-179", + "lmjm": "85947619", + "z": 0.6727336452405265 + }, + { + "obsid": "1006408180", + "fibre": "8-180", + "lmjm": "85947619", + "z": -0.7383618532150985 + }, + { + "obsid": "1006408183", + "fibre": "8-183", + "lmjm": "85947619", + "z": 0.4975959453726199 + }, + { + "obsid": "1006408184", + "fibre": "8-184", + "lmjm": "85947619", + "z": -0.4710579029816042 + }, + { + "obsid": "1006408186", + "fibre": "8-186", + "lmjm": "85947619", + "z": 0.224984150413243 + }, + { + "obsid": "1006408187", + "fibre": "8-187", + "lmjm": "85947619", + "z": 0.4249686138832009 + }, + { + "obsid": "1006408188", + "fibre": "8-188", + "lmjm": "85947619", + "z": 0.5362034962379464 + }, + { + "obsid": "1006408190", + "fibre": "8-190", + "lmjm": "85947619", + "z": -1.2639979530070207 + }, + { + "obsid": "715408180", + "fibre": "8-180", + "lmjm": "84234427", + "z": 0.11421431500967179 + }, + { + "obsid": "715408181", + "fibre": "8-181", + "lmjm": "84234427", + "z": 0.03358433663449198 + }, + { + "obsid": "715408182", + "fibre": "8-182", + "lmjm": "84234427", + "z": 0.5716868817397036 + }, + { + "obsid": "715408183", + "fibre": "8-183", + "lmjm": "84234427", + "z": 0.3088039966089632 + }, + { + "obsid": "715408185", + "fibre": "8-185", + "lmjm": "84234427", + "z": -0.13500386621550453 + }, + { + "obsid": "715408186", + "fibre": "8-186", + "lmjm": "84234427", + "z": 0.595848186755141 + }, + { + "obsid": "715408188", + "fibre": "8-188", + "lmjm": "84234427", + "z": -0.461444196050037 + }, + { + "obsid": "715408189", + "fibre": "8-189", + "lmjm": "84234427", + "z": 0.562480591161497 + }, + { + "obsid": "715408191", + "fibre": "8-191", + "lmjm": "84234427", + "z": 0.02400477727999919 + } + ] + }, + { + "star": "817937458796755200", + "arm": "B", + "rest": 5257.029256713846, + "obs": 5257.064503193615, + "n": 2, + "nights": 2, + "z": 20.139400988385223, + "inst": 0.701015234375, + "topo": 5256.947799602751, + "edge": 135.89897184229267, + "fibres": [ + "12-176" + ], + "obsids": [ + "798712176", + "987112176" + ], + "n_rest": 10, + "mu_rest": 4.679226300921609, + "p_rest": 0.021628680168918724, + "n_topo": 2, + "mu_topo": 1.587405232841506, + "p_topo": 0.47099092904585527, + "fibre_mates": [], + "detector_mates": [ + "594944234256955008", + "748880672508805888" + ], + "other_nights_topo": [], + "hrv_spread": 8.761289999999999, + "spread_star": 0.05878561517874914, + "spread_topo": 0.09484364925720001, + "duty": 0.0136986301369863, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "817937458796755200", + "arm": "R", + "rest": 6473.449006630275, + "obs": 6473.492408764505, + "n": 2, + "nights": 2, + "z": 33.8750984953905, + "inst": 0.8631986328125, + "topo": 6473.517089285515, + "edge": 201.0270092067267, + "fibres": [ + "12-176" + ], + "obsids": [ + "765412176", + "816612176" + ], + "n_rest": 49, + "mu_rest": 7.330289756087697, + "p_rest": 3.3306690738754696e-16, + "n_topo": 11, + "mu_topo": 2.4491380716965145, + "p_topo": 5.1457629731244126e-05, + "fibre_mates": [], + "detector_mates": [ + "166229394864027520" + ], + "other_nights_topo": [], + "hrv_spread": 49.90126, + "spread_star": 0.04505662596784532, + "spread_topo": 1.0324813115066718, + "duty": 0.0136986301369863, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (49 other stars against 7.3 by chance)", + "shared in the instrument's frame (11 other stars against 2.4 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "817937458796755200", + "arm": "R", + "rest": 6501.354054759695, + "obs": 6501.39764398718, + "n": 2, + "nights": 2, + "z": 19.922788259654524, + "inst": 0.8667633463541666, + "topo": 6501.405422950433, + "edge": 229.6022463871268, + "fibres": [ + "12-176" + ], + "obsids": [ + "770912176", + "997612176" + ], + "n_rest": 36, + "mu_rest": 7.105078321405921, + "p_rest": 1.2434497875801753e-14, + "n_topo": 6, + "mu_topo": 2.425447506328154, + "p_topo": 0.03722551573746835, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 44.3445, + "spread_star": 0.048852909852939774, + "spread_topo": 1.0105249733633173, + "duty": 0.0136986301369863, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (36 other stars against 7.1 by chance)" + ] + }, + { + "star": "814125692502763904", + "arm": "R", + "rest": 6335.080040782061, + "obs": 6335.531199426187, + "n": 2, + "nights": 2, + "z": 22.4443242528998, + "inst": 0.844813671875, + "topo": 6335.478995826856, + "edge": 57.78267367279841, + "fibres": [ + "7-138", + "7-145" + ], + "obsids": [ + "701907145", + "817707138" + ], + "n_rest": 13, + "mu_rest": 6.673121816246337, + "p_rest": 0.019350393871806815, + "n_topo": 1, + "mu_topo": 2.2245140198840865, + "p_topo": 0.8918800499849668, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 45.57159, + "spread_star": 0.12305691710935207, + "spread_topo": 0.8399864818584319, + "duty": 0.018691588785046728, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "701907138", + "fibre": "7-138", + "lmjm": "84192748", + "z": -0.6789883777002469 + }, + { + "obsid": "701907139", + "fibre": "7-139", + "lmjm": "84192748", + "z": 0.026802318814717365 + }, + { + "obsid": "701907140", + "fibre": "7-140", + "lmjm": "84192748", + "z": -0.6552205532564473 + }, + { + "obsid": "701907141", + "fibre": "7-141", + "lmjm": "84192748", + "z": 0.8712924996555225 + }, + { + "obsid": "701907148", + "fibre": "7-148", + "lmjm": "84192748", + "z": 1.0130982005340112 + }, + { + "obsid": "701907151", + "fibre": "7-151", + "lmjm": "84192748", + "z": 0.46112786128847283 + }, + { + "obsid": "817707131", + "fibre": "7-131", + "lmjm": "84886320", + "z": 0.0 + }, + { + "obsid": "817707133", + "fibre": "7-133", + "lmjm": "84886320", + "z": 0.09438078292670302 + }, + { + "obsid": "817707135", + "fibre": "7-135", + "lmjm": "84886320", + "z": -0.20866623492243466 + }, + { + "obsid": "817707136", + "fibre": "7-136", + "lmjm": "84886320", + "z": -0.612776079498892 + }, + { + "obsid": "817707139", + "fibre": "7-139", + "lmjm": "84886320", + "z": -0.48053181078749596 + }, + { + "obsid": "817707140", + "fibre": "7-140", + "lmjm": "84886320", + "z": 0.31104227973931375 + }, + { + "obsid": "817707143", + "fibre": "7-143", + "lmjm": "84886320", + "z": -0.24619023083982847 + }, + { + "obsid": "817707146", + "fibre": "7-146", + "lmjm": "84886320", + "z": -0.4558504681021787 + } + ] + }, + { + "star": "816545339637191296", + "arm": "R", + "rest": 6620.336040939006, + "obs": 6619.808476539711, + "n": 2, + "nights": 1, + "z": 140.9690507285887, + "inst": 0.8827253255208334, + "topo": 6619.315070140834, + "edge": 221.8380749383059, + "fibres": [ + "3-94" + ], + "obsids": [ + "899503094" + ], + "n_rest": 9, + "mu_rest": 7.601223086936382, + "p_rest": 0.35197734363904076, + "n_topo": 2, + "mu_topo": 2.5391607185334726, + "p_topo": 0.7206447765475312, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.002795704253912845, + "spread_topo": 0.002795273107039975, + "duty": 0.020100502512562814, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 11 other stars" + ] + }, + { + "star": "816545339637191296", + "arm": "R", + "rest": 6620.897267254025, + "obs": 6620.369658131467, + "n": 2, + "nights": 1, + "z": 31.78586278580109, + "inst": 0.8826356770833333, + "topo": 6620.301948935079, + "edge": 220.04844073087406, + "fibres": [ + "3-94" + ], + "obsids": [ + "798703094" + ], + "n_rest": 7, + "mu_rest": 7.4798191351957595, + "p_rest": 0.6190806577694096, + "n_topo": 2, + "mu_topo": 2.4814262568723273, + "p_topo": 0.7088696584892273, + "fibre_mates": [ + "1505605664695666432" + ], + "detector_mates": [ + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.00364631588672637, + "spread_topo": 0.0036459880275288015, + "duty": 0.020100502512562814, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 10 other stars" + ] + }, + { + "star": "816545339637191296", + "arm": "R", + "rest": 6622.03383840921, + "obs": 6621.506138715045, + "n": 2, + "nights": 1, + "z": 34.76717306790301, + "inst": 0.8827863932291666, + "topo": 6621.690586813751, + "edge": 219.9161370576121, + "fibres": [ + "3-94" + ], + "obsids": [ + "787803094" + ], + "n_rest": 8, + "mu_rest": 7.30671846363265, + "p_rest": 0.4468880818326878, + "n_topo": 2, + "mu_topo": 2.4528841388238374, + "p_topo": 0.7028963688922512, + "fibre_mates": [ + "1505605664695666432", + "206105825449693952" + ], + "detector_mates": [ + "164265048623969024", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "912582732521063296" + ], + "other_nights_topo": [ + "895803094" + ], + "hrv_spread": 0.0, + "spread_star": 0.023614398980498663, + "spread_topo": 0.023613174934325798, + "duty": 0.020100502512562814, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 2 other stars", + "fibres within 6 on the same spectrograph show it in 9 other stars", + "fixed in the instrument's frame across 1 other nights" + ] + }, + { + "star": "816545339637191296", + "arm": "R", + "rest": 6622.432090683865, + "obs": 6621.904359253588, + "n": 3, + "nights": 1, + "z": 42.73711334030649, + "inst": 0.882836328125, + "topo": 6621.667011577695, + "edge": 219.69093178558796, + "fibres": [ + "3-94" + ], + "obsids": [ + "895803094" + ], + "n_rest": 9, + "mu_rest": 7.307157893167352, + "p_rest": 0.3117430547603397, + "n_topo": 2, + "mu_topo": 2.4645004077321975, + "p_topo": 0.7053396576801269, + "fibre_mates": [ + "1505605664695666432", + "206105825449693952" + ], + "detector_mates": [ + "164265048623969024", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "912582732521063296" + ], + "other_nights_topo": [ + "787803094" + ], + "hrv_spread": 0.0, + "spread_star": 0.00608978892887535, + "spread_topo": 0.0060890853847013204, + "duty": 0.03015075376884422, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 2 other stars", + "fibres within 6 on the same spectrograph show it in 9 other stars", + "fixed in the instrument's frame across 1 other nights" + ] + }, + { + "star": "816544068326872448", + "arm": "R", + "rest": 6624.872836488834, + "obs": 6624.290990958268, + "n": 3, + "nights": 2, + "z": 67.76245796892015, + "inst": 0.8833041015625, + "topo": 6624.05715457148, + "edge": 215.84475152734285, + "fibres": [ + "3-91" + ], + "obsids": [ + "798703091", + "817703091" + ], + "n_rest": 3, + "mu_rest": 7.588986121383178, + "p_rest": 0.9810832487083713, + "n_topo": 2, + "mu_topo": 2.5467943750310553, + "p_topo": 0.7221711972515205, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2539361656703559424", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 22.55132, + "spread_star": 0.1865360896645143, + "spread_topo": 0.3185770119953304, + "duty": 0.024691358024691357, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 12 other stars" + ] + }, + { + "star": "816544068326872448", + "arm": "R", + "rest": 6625.956294753214, + "obs": 6625.374354065297, + "n": 11, + "nights": 4, + "z": 55.92039717005748, + "inst": 0.8834486328125, + "topo": 6625.556700669342, + "edge": 215.79541503598375, + "fibres": [ + "3-91" + ], + "obsids": [ + "772003091", + "788503091", + "875403091", + "987103091" + ], + "n_rest": 9, + "mu_rest": 7.956652018614682, + "p_rest": 0.4014021016785845, + "n_topo": 7, + "mu_topo": 2.5880823226027796, + "p_topo": 0.016793267043826332, + "fibre_mates": [ + "164265048623969024" + ], + "detector_mates": [ + "1505605664695666432", + "206105825449693952", + "2539361656703559424", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 33.97755, + "spread_star": 0.2994212937574048, + "spread_topo": 0.780880798133694, + "duty": 0.09053497942386832, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 10 other stars" + ] + }, + { + "star": "816544068326872448", + "arm": "R", + "rest": 6626.020435934407, + "obs": 6625.438489613134, + "n": 9, + "nights": 3, + "z": 55.92039717005748, + "inst": 0.8834806640625, + "topo": 6625.556700669342, + "edge": 215.79541503598375, + "fibres": [ + "3-91" + ], + "obsids": [ + "772003091", + "788503091", + "875403091", + "987103091" + ], + "n_rest": 8, + "mu_rest": 7.904382139729321, + "p_rest": 0.5336144009413025, + "n_topo": 7, + "mu_topo": 2.5880823226027796, + "p_topo": 0.016793267043826332, + "fibre_mates": [ + "164265048623969024" + ], + "detector_mates": [ + "1505605664695666432", + "206105825449693952", + "2539361656703559424", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 33.97755, + "spread_star": 0.2994212937574048, + "spread_topo": 0.780880798133694, + "duty": 0.07407407407407407, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 10 other stars" + ] + }, + { + "star": "816544068326872448", + "arm": "R", + "rest": 6627.4302855667, + "obs": 6626.848215421965, + "n": 4, + "nights": 2, + "z": 34.44153719708697, + "inst": 0.8836533203125, + "topo": 6626.628673798233, + "edge": 216.09364890729557, + "fibres": [ + "3-91" + ], + "obsids": [ + "956503091", + "996403091", + "997603091" + ], + "n_rest": 8, + "mu_rest": 8.0282327516778, + "p_rest": 0.5509730996462736, + "n_topo": 2, + "mu_topo": 2.658303333657538, + "p_topo": 0.7436736556587473, + "fibre_mates": [ + "816545339637191296" + ], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2539361656703559424", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "912582732521063296" + ], + "other_nights_topo": [ + "1003903091" + ], + "hrv_spread": 40.01399, + "spread_star": 0.34466618950045813, + "spread_topo": 1.2291241635148253, + "duty": 0.03292181069958848, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 9 other stars", + "fixed in the instrument's frame across 1 other nights" + ] + }, + { + "star": "816544068326872448", + "arm": "R", + "rest": 6627.651658660795, + "obs": 6627.069569073429, + "n": 7, + "nights": 3, + "z": 34.44153719708697, + "inst": 0.8836897135416667, + "topo": 6626.712180360971, + "edge": 215.97755192169552, + "fibres": [ + "3-91" + ], + "obsids": [ + "1003903091", + "956503091", + "996403091" + ], + "n_rest": 7, + "mu_rest": 8.080860703728161, + "p_rest": 0.6964017606769983, + "n_topo": 3, + "mu_topo": 2.6583368327088714, + "p_topo": 0.4961150325813479, + "fibre_mates": [ + "816545339637191296" + ], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2539361656703559424", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 42.73402, + "spread_star": 0.37907712530522986, + "spread_topo": 0.9749873051459872, + "duty": 0.05761316872427984, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 9 other stars" + ] + }, + { + "star": "912582732521063296", + "arm": "R", + "rest": 6621.377105692352, + "obs": 6621.4202848714685, + "n": 2, + "nights": 1, + "z": 42.79238398091987, + "inst": 0.882745703125, + "topo": 6620.861241988521, + "edge": 219.2969419406072, + "fibres": [ + "3-93" + ], + "obsids": [ + "815803093" + ], + "n_rest": 9, + "mu_rest": 7.358304046431978, + "p_rest": 0.31867487378496695, + "n_topo": 5, + "mu_topo": 2.5048830661175647, + "p_topo": 0.10947532289469952, + "fibre_mates": [ + "441773090462488704" + ], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "730459763934332416", + "816544068326872448", + "816545339637191296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.005976024377559952, + "spread_topo": 0.005975558792670199, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 10 other stars" + ] + }, + { + "star": "1023987823332267648", + "arm": "R", + "rest": 6564.585965554514, + "obs": 6565.669105694036, + "n": 2, + "nights": 2, + "z": 33.723061743311234, + "inst": 0.8753083984375, + "topo": 6565.746993802465, + "edge": 282.1852862539481, + "fibres": [ + "13-151" + ], + "obsids": [ + "968513151", + "970313151" + ], + "n_rest": 55, + "mu_rest": 8.678167178930845, + "p_rest": 2.220446049250313e-16, + "n_topo": 8, + "mu_topo": 2.973921807706464, + "p_topo": 0.011350840687758046, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 1.2150899999999996, + "spread_star": 0.213055950335729, + "spread_topo": 0.18648166105958808, + "duty": 0.0625, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (55 other stars against 8.7 by chance)" + ] + }, + { + "star": "608182831000585728", + "arm": "B", + "rest": 5269.806417536265, + "obs": 5270.600511912422, + "n": 2, + "nights": 1, + "z": 7.823094376476237, + "inst": 0.7026623697916666, + "topo": 5270.900301293443, + "edge": 99.78967281642781, + "fibres": [ + "15-49" + ], + "obsids": [ + "622215049" + ], + "n_rest": 5, + "mu_rest": 5.106924482438234, + "p_rest": 0.5780637177215194, + "n_topo": 0, + "mu_topo": 1.6563935425717364, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.009668147929914994, + "spread_topo": 0.009670154802734032, + "duty": 0.13333333333333333, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "622215042", + "fibre": "15-42", + "lmjm": "83687226", + "z": -1.5955743490856944 + }, + { + "obsid": "622215042", + "fibre": "15-42", + "lmjm": "83687250", + "z": 1.5238848359752961 + }, + { + "obsid": "622215043", + "fibre": "15-43", + "lmjm": "83687226", + "z": 0.0 + }, + { + "obsid": "622215043", + "fibre": "15-43", + "lmjm": "83687250", + "z": 1.0760210514302992 + }, + { + "obsid": "622215044", + "fibre": "15-44", + "lmjm": "83687226", + "z": 0.09150187599510394 + }, + { + "obsid": "622215044", + "fibre": "15-44", + "lmjm": "83687250", + "z": 1.353420876491046 + }, + { + "obsid": "622215045", + "fibre": "15-45", + "lmjm": "83687226", + "z": -1.3686563709870816 + }, + { + "obsid": "622215045", + "fibre": "15-45", + "lmjm": "83687250", + "z": -2.2437962189328267 + }, + { + "obsid": "622215046", + "fibre": "15-46", + "lmjm": "83687226", + "z": 1.1189491050099722 + }, + { + "obsid": "622215046", + "fibre": "15-46", + "lmjm": "83687250", + "z": 0.0 + }, + { + "obsid": "622215048", + "fibre": "15-48", + "lmjm": "83687226", + "z": 1.8676555783434554 + }, + { + "obsid": "622215048", + "fibre": "15-48", + "lmjm": "83687250", + "z": 0.7682061898016561 + }, + { + "obsid": "622215050", + "fibre": "15-50", + "lmjm": "83687226", + "z": 0.5995549794128313 + }, + { + "obsid": "622215050", + "fibre": "15-50", + "lmjm": "83687250", + "z": 0.18881251844787175 + }, + { + "obsid": "622215051", + "fibre": "15-51", + "lmjm": "83687226", + "z": -5.892817420601097 + }, + { + "obsid": "622215051", + "fibre": "15-51", + "lmjm": "83687250", + "z": -7.353693739039063 + }, + { + "obsid": "622215052", + "fibre": "15-52", + "lmjm": "83687226", + "z": -4.276627468985214 + }, + { + "obsid": "622215052", + "fibre": "15-52", + "lmjm": "83687250", + "z": -3.5272976166024153 + }, + { + "obsid": "622215054", + "fibre": "15-54", + "lmjm": "83687226", + "z": 0.7977691964881565 + }, + { + "obsid": "622215054", + "fibre": "15-54", + "lmjm": "83687250", + "z": 0.28765329734672107 + }, + { + "obsid": "622215055", + "fibre": "15-55", + "lmjm": "83687226", + "z": 0.7146120948516093 + }, + { + "obsid": "622215055", + "fibre": "15-55", + "lmjm": "83687250", + "z": 0.30398791314875523 + }, + { + "obsid": "622215057", + "fibre": "15-57", + "lmjm": "83687226", + "z": -1.8390102111357836 + }, + { + "obsid": "622215057", + "fibre": "15-57", + "lmjm": "83687250", + "z": -1.8661278941670114 + } + ] + }, + { + "star": "649105833444592768", + "arm": "B", + "rest": 5198.878212760428, + "obs": 5200.012092692595, + "n": 2, + "nights": 1, + "z": 7.610914087472765, + "inst": 0.6932710286458333, + "topo": 5200.361377905794, + "edge": 192.44726490107587, + "fibres": [ + "12-101" + ], + "obsids": [ + "700912101" + ], + "n_rest": 10, + "mu_rest": 4.942353455191731, + "p_rest": 0.02978535044246844, + "n_topo": 8, + "mu_topo": 1.5748830895130888, + "p_topo": 0.00023455183917309164, + "fibre_mates": [], + "detector_mates": [ + "1602520231637154944" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.008040871437515307, + "spread_topo": 0.008043165383242012, + "duty": 0.3333333333333333, + "exposure_mates": [], + "why": [ + "shared in the instrument's frame (8 other stars against 1.6 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "3071361315579642496", + "arm": "R", + "rest": 6621.321916056255, + "obs": 6621.576902996322, + "n": 2, + "nights": 1, + "z": 45.148766585738194, + "inst": 0.8829618489583333, + "topo": 6621.46675506336, + "edge": 218.44449253136645, + "fibres": [ + "3-92" + ], + "obsids": [ + "799603092" + ], + "n_rest": 8, + "mu_rest": 7.3233695262386815, + "p_rest": 0.4493521125951092, + "n_topo": 3, + "mu_topo": 2.48767517550523, + "p_topo": 0.45302150012554887, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0011542126749191084, + "spread_topo": 0.0011542379224920296, + "duty": 0.16666666666666666, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 11 other stars" + ] + }, + { + "star": "3071361315579642496", + "arm": "R", + "rest": 6624.455308573549, + "obs": 6624.710416180484, + "n": 4, + "nights": 1, + "z": 22.216874106434677, + "inst": 0.8833497395833333, + "topo": 6624.40806599421, + "edge": 216.80578470902128, + "fibres": [ + "3-92" + ], + "obsids": [ + "896903092" + ], + "n_rest": 5, + "mu_rest": 7.640842367676314, + "p_rest": 0.8778753631381357, + "n_topo": 0, + "mu_topo": 2.5411143851702045, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2539361656703559424", + "2880256028486753280", + "3017224661565267584", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.013082554902211996, + "spread_topo": 0.013082461603517004, + "duty": 0.3333333333333333, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 12 other stars" + ] + }, + { + "star": "604992258706635520", + "arm": "B", + "rest": 5114.705872576204, + "obs": 5114.501550973292, + "n": 2, + "nights": 2, + "z": 8.082752701292938, + "inst": 0.6819999348958333, + "topo": 5114.782944900365, + "edge": 183.78483984976265, + "fibres": [ + "4-12" + ], + "obsids": [ + "623004012", + "623104012" + ], + "n_rest": 4, + "mu_rest": 4.566014827927884, + "p_rest": 0.6687191058158779, + "n_topo": 1, + "mu_topo": 1.5220278773843778, + "p_topo": 0.7817311845378666, + "fibre_mates": [], + "detector_mates": [ + "1570490457190833792", + "4033774980222766592", + "53758598112448896" + ], + "other_nights_topo": [], + "hrv_spread": 0.13821000000000083, + "spread_star": 0.012524309879154316, + "spread_topo": 0.010166357078560395, + "duty": 0.3333333333333333, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 3 other stars" + ] + }, + { + "star": "817045617428136320", + "arm": "R", + "rest": 6413.475539796008, + "obs": 6413.9365600591755, + "n": 2, + "nights": 2, + "z": 8.643083409177233, + "inst": 0.8551332682291667, + "topo": 6413.75408217799, + "edge": 142.68389328241938, + "fibres": [ + "15-128", + "15-136" + ], + "obsids": [ + "715415136", + "816615128" + ], + "n_rest": 38, + "mu_rest": 7.617052339293935, + "p_rest": 3.9968028886505635e-15, + "n_topo": 2, + "mu_topo": 2.5841676775145435, + "p_topo": 0.7295427945239314, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 31.61048, + "spread_star": 0.011267199068242917, + "spread_topo": 0.687522447655283, + "duty": 0.013986013986013986, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (38 other stars against 7.6 by chance)" + ] + }, + { + "star": "686345845600293376", + "arm": "R", + "rest": 6645.350675280437, + "obs": 6646.130936216053, + "n": 2, + "nights": 2, + "z": 32.243710569616816, + "inst": 0.8862076822916667, + "topo": 6646.317765378137, + "edge": 179.5387902406983, + "fibres": [ + "4-236" + ], + "obsids": [ + "727504236", + "857104236" + ], + "n_rest": 40, + "mu_rest": 7.524944728957654, + "p_rest": 0.0, + "n_topo": 5, + "mu_topo": 2.5495189175789266, + "p_topo": 0.11553531328057898, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 38.47356, + "spread_star": 0.05917252828567143, + "spread_topo": 0.7937912610605053, + "duty": 0.027777777777777776, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (40 other stars against 7.5 by chance)" + ] + }, + { + "star": "687208343753227520", + "arm": "R", + "rest": 6433.523321835944, + "obs": 6433.98428100041, + "n": 2, + "nights": 2, + "z": 28.173226646187306, + "inst": 0.8577529947916667, + "topo": 6434.582525420976, + "edge": 180.65045071455825, + "fibres": [ + "13-4" + ], + "obsids": [ + "857113004", + "857413004" + ], + "n_rest": 12, + "mu_rest": 7.471441911559956, + "p_rest": 0.07758120109811495, + "n_topo": 4, + "mu_topo": 2.7055252351986225, + "p_topo": 0.28712633163790247, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.14979000000000298, + "spread_star": 0.24088549986299768, + "spread_topo": 0.24414046897163644, + "duty": 0.07692307692307693, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "857113005", + "fibre": "13-5", + "lmjm": "85216594", + "z": 0.896360844347631 + }, + { + "obsid": "857113006", + "fibre": "13-6", + "lmjm": "85216594", + "z": 0.834824001159143 + }, + { + "obsid": "857113008", + "fibre": "13-8", + "lmjm": "85216594", + "z": -0.37341661418474986 + }, + { + "obsid": "857113009", + "fibre": "13-9", + "lmjm": "85216594", + "z": -2.219498450024531 + }, + { + "obsid": "857113011", + "fibre": "13-11", + "lmjm": "85216594", + "z": 0.0 + }, + { + "obsid": "857413005", + "fibre": "13-5", + "lmjm": "85218074", + "z": -0.6917014387571182 + }, + { + "obsid": "857413006", + "fibre": "13-6", + "lmjm": "85218074", + "z": 0.8017162111640692 + }, + { + "obsid": "857413008", + "fibre": "13-8", + "lmjm": "85218074", + "z": -0.20161739758484346 + }, + { + "obsid": "857413009", + "fibre": "13-9", + "lmjm": "85218074", + "z": -0.6656981550698856 + }, + { + "obsid": "857413011", + "fibre": "13-11", + "lmjm": "85218074", + "z": 0.0 + } + ] + }, + { + "star": "3825905538123323392", + "arm": "B", + "rest": 5200.17305312512, + "obs": 5200.73714212461, + "n": 2, + "nights": 1, + "z": 7.3401502699261405, + "inst": 0.69350859375, + "topo": 5201.210073787768, + "edge": 191.96115458360237, + "fibres": [ + "7-144" + ], + "obsids": [ + "774707144" + ], + "n_rest": 34, + "mu_rest": 4.806643008853909, + "p_rest": 0.0, + "n_topo": 3, + "mu_topo": 1.6436244620828186, + "p_topo": 0.22797419514875394, + "fibre_mates": [], + "detector_mates": [ + "65371399407749760", + "814125692502763904" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0037967967173244688, + "spread_topo": 0.003797553877120663, + "duty": 0.13333333333333333, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (34 other stars against 4.8 by chance)", + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "816160922884502528", + "arm": "B", + "rest": 5063.310233331067, + "obs": 5063.957772350698, + "n": 2, + "nights": 2, + "z": 17.16919791411217, + "inst": 0.6751174479166666, + "topo": 5063.9558792383295, + "edge": 128.61577359989133, + "fibres": [ + "4-123" + ], + "obsids": [ + "1008604123", + "765404123" + ], + "n_rest": 19, + "mu_rest": 3.2134277186996667, + "p_rest": 1.6868310082074345e-09, + "n_topo": 2, + "mu_topo": 1.0846145844196975, + "p_topo": 0.29533347189425085, + "fibre_mates": [], + "detector_mates": [ + "2581356159001008512" + ], + "other_nights_topo": [], + "hrv_spread": 53.20022, + "spread_star": 0.16932740908941923, + "spread_topo": 0.7292842287715757, + "duty": 0.0136986301369863, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (19 other stars against 3.2 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "656248020460761472", + "arm": "B", + "rest": 5197.753092213757, + "obs": 5197.355362208369, + "n": 2, + "nights": 1, + "z": 11.524271549911932, + "inst": 0.6930693359375, + "topo": 5197.725127238955, + "edge": 199.45403400202667, + "fibres": [ + "13-154" + ], + "obsids": [ + "774613154" + ], + "n_rest": 11, + "mu_rest": 4.90022055001444, + "p_rest": 0.01197444963768668, + "n_topo": 4, + "mu_topo": 1.6288354975230257, + "p_topo": 0.08283773779713777, + "fibre_mates": [], + "detector_mates": [ + "1023987823332267648" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0032781425506982487, + "spread_topo": 0.003278124912867497, + "duty": 0.2, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "656248020460761472", + "arm": "B", + "rest": 5198.929621722169, + "obs": 5198.53180168921, + "n": 2, + "nights": 1, + "z": 12.943472824254435, + "inst": 0.6930693359375, + "topo": 5198.901650417398, + "edge": 198.27036061679155, + "fibres": [ + "13-154" + ], + "obsids": [ + "774613154" + ], + "n_rest": 11, + "mu_rest": 4.887638866822891, + "p_rest": 0.01176973530955383, + "n_topo": 4, + "mu_topo": 1.6383313844510305, + "p_topo": 0.08418468720855832, + "fibre_mates": [], + "detector_mates": [ + "1023987823332267648" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.017747058495842793, + "spread_topo": 0.017746963012541528, + "duty": 0.2, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "607987736401416704", + "arm": "R", + "rest": 6719.561340057063, + "obs": 6719.978241275188, + "n": 2, + "nights": 2, + "z": 20.09621426225542, + "inst": 0.89591328125, + "topo": 6720.280742363102, + "edge": 122.5814851948544, + "fibres": [ + "4-250", + "4-76" + ], + "obsids": [ + "640804250", + "692104076" + ], + "n_rest": 43, + "mu_rest": 8.104446430454797, + "p_rest": 0.0, + "n_topo": 10, + "mu_topo": 2.743064815437684, + "p_topo": 0.0005653186672230914, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 30.211940000000002, + "spread_star": 0.013006820605369285, + "spread_topo": 0.6642665221552306, + "duty": 0.05, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (43 other stars against 8.1 by chance)", + "shared in the instrument's frame (10 other stars against 2.7 by chance)" + ] + }, + { + "star": "657119933182567424", + "arm": "B", + "rest": 5039.872081171885, + "obs": 5040.025987741819, + "n": 4, + "nights": 1, + "z": 8.499181665081583, + "inst": 0.6719242838541667, + "topo": 5040.0909038292275, + "edge": 107.58208248093979, + "fibres": [ + "3-88" + ], + "obsids": [ + "716903088" + ], + "n_rest": 11, + "mu_rest": 3.158736696470412, + "p_rest": 0.0004472174473916235, + "n_topo": 1, + "mu_topo": 1.066230526985758, + "p_topo": 0.6556960812749497, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164270202584848896", + "3413146914553161728", + "3922545012409419648" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.016906035859392432, + "spread_topo": 0.01690676989073836, + "duty": 0.16666666666666666, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (11 other stars against 3.2 by chance)", + "fibres within 6 on the same spectrograph show it in 4 other stars" + ] + }, + { + "star": "856882641689187584", + "arm": "B", + "rest": 5228.42959501565, + "obs": 5228.428199802541, + "n": 2, + "nights": 1, + "z": 87.8501830954536, + "inst": 0.6970506510416666, + "topo": 5228.69104266775, + "edge": 145.54167038649393, + "fibres": [ + "15-162" + ], + "obsids": [ + "959815162" + ], + "n_rest": 15, + "mu_rest": 4.26825063175482, + "p_rest": 4.1232247434019875e-05, + "n_topo": 5, + "mu_topo": 1.4411803404460504, + "p_topo": 0.01594155810005382, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.08174401874475734, + "spread_topo": 0.08174810635500762, + "duty": 0.047619047619047616, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (15 other stars against 4.3 by chance)" + ] + }, + { + "star": "3872246689058776832", + "arm": "R", + "rest": 6764.6372065171845, + "obs": 6774.038212860551, + "n": 2, + "nights": 2, + "z": 33.01769725625539, + "inst": 0.903121484375, + "topo": 6774.155102201108, + "edge": 70.69093521392824, + "fibres": [ + "11-48" + ], + "obsids": [ + "775311048", + "818011048" + ], + "n_rest": 5, + "mu_rest": 8.817930348332775, + "p_rest": 0.9385742713085965, + "n_topo": 2, + "mu_topo": 2.7055915458314064, + "p_topo": 0.7523524315116157, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 49.187110000000004, + "spread_star": 0.20157995971021592, + "spread_topo": 0.9095948641779614, + "duty": 0.032520325203252036, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "775311040", + "fibre": "11-40", + "lmjm": "84714083", + "z": 0.0 + }, + { + "obsid": "775311042", + "fibre": "11-42", + "lmjm": "84714083", + "z": -0.7037287737208858 + }, + { + "obsid": "775311045", + "fibre": "11-45", + "lmjm": "84714083", + "z": -2.0822745063039063 + }, + { + "obsid": "775311046", + "fibre": "11-46", + "lmjm": "84714083", + "z": 0.4655872670928346 + }, + { + "obsid": "775311047", + "fibre": "11-47", + "lmjm": "84714083", + "z": 0.0 + }, + { + "obsid": "775311049", + "fibre": "11-49", + "lmjm": "84714083", + "z": -0.7159338889384181 + }, + { + "obsid": "775311052", + "fibre": "11-52", + "lmjm": "84714083", + "z": -0.9825754208353439 + }, + { + "obsid": "775311054", + "fibre": "11-54", + "lmjm": "84714083", + "z": 1.9667720159107065 + }, + { + "obsid": "818011040", + "fibre": "11-40", + "lmjm": "84887905", + "z": -0.23863443973532217 + }, + { + "obsid": "818011042", + "fibre": "11-42", + "lmjm": "84887905", + "z": 0.0 + }, + { + "obsid": "818011045", + "fibre": "11-45", + "lmjm": "84887905", + "z": 0.11756892577263033 + }, + { + "obsid": "818011046", + "fibre": "11-46", + "lmjm": "84887905", + "z": 0.0 + }, + { + "obsid": "818011047", + "fibre": "11-47", + "lmjm": "84887905", + "z": -15.134450697440515 + }, + { + "obsid": "818011049", + "fibre": "11-49", + "lmjm": "84887905", + "z": -0.9809175985216382 + }, + { + "obsid": "818011052", + "fibre": "11-52", + "lmjm": "84887905", + "z": -0.3465983272507218 + }, + { + "obsid": "818011054", + "fibre": "11-54", + "lmjm": "84887905", + "z": 0.0 + } + ] + }, + { + "star": "779262652684989312", + "arm": "R", + "rest": 6756.405830981554, + "obs": 6756.545672718938, + "n": 2, + "nights": 2, + "z": 6.509428057975206, + "inst": 0.9007932942708333, + "topo": 6756.34680570984, + "edge": 100.56251081457413, + "fibres": [ + "15-103" + ], + "obsids": [ + "888615103", + "904315103" + ], + "n_rest": 9, + "mu_rest": 8.736031178851693, + "p_rest": 0.5090942996574179, + "n_topo": 5, + "mu_topo": 2.9179156759816616, + "p_topo": 0.17113783534929827, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 29.04287, + "spread_star": 0.13909880395749497, + "spread_topo": 0.7936101374998543, + "duty": 0.022988505747126436, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "888615095", + "fibre": "15-95", + "lmjm": "85315838", + "z": 0.09736994444504272 + }, + { + "obsid": "888615098", + "fibre": "15-98", + "lmjm": "85315838", + "z": 0.7237776271193668 + }, + { + "obsid": "888615099", + "fibre": "15-99", + "lmjm": "85315838", + "z": 0.0 + }, + { + "obsid": "888615101", + "fibre": "15-101", + "lmjm": "85315838", + "z": 0.21649462197674763 + }, + { + "obsid": "888615105", + "fibre": "15-105", + "lmjm": "85315838", + "z": -0.42103277949442475 + }, + { + "obsid": "888615108", + "fibre": "15-108", + "lmjm": "85315838", + "z": -0.326347799775962 + }, + { + "obsid": "904315095", + "fibre": "15-95", + "lmjm": "85427825", + "z": 0.0 + }, + { + "obsid": "904315098", + "fibre": "15-98", + "lmjm": "85427825", + "z": 1.1785670121178984 + }, + { + "obsid": "904315099", + "fibre": "15-99", + "lmjm": "85427825", + "z": -0.0317023241455646 + }, + { + "obsid": "904315101", + "fibre": "15-101", + "lmjm": "85427825", + "z": 0.0 + }, + { + "obsid": "904315105", + "fibre": "15-105", + "lmjm": "85427825", + "z": 0.8083768810400499 + }, + { + "obsid": "904315108", + "fibre": "15-108", + "lmjm": "85427825", + "z": -0.3672972835697918 + } + ] + }, + { + "star": "3813463911220217344", + "arm": "R", + "rest": 6761.692681798252, + "obs": 6761.855638631628, + "n": 7, + "nights": 2, + "z": 191.0826924243268, + "inst": 0.9016452473958333, + "topo": 6762.501504435647, + "edge": 82.63575781761392, + "fibres": [ + "16-137" + ], + "obsids": [ + "872916137", + "876416137" + ], + "n_rest": 12, + "mu_rest": 8.70725458255633, + "p_rest": 0.16954681819365947, + "n_topo": 1, + "mu_topo": 2.968062757372656, + "p_topo": 0.9485972063778594, + "fibre_mates": [ + "4541533504381309568" + ], + "detector_mates": [ + "218233786598094464", + "2741947155156651392" + ], + "other_nights_topo": [], + "hrv_spread": 1.1119400000000006, + "spread_star": 0.05901282975628419, + "spread_topo": 0.08410473429648846, + "duty": 0.08139534883720931, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "4032040225752242176", + "arm": "R", + "rest": 6832.417845105746, + "obs": 6832.3246319903365, + "n": 3, + "nights": 1, + "z": 137.8034108812957, + "inst": 0.9110331380208333, + "topo": 6832.754357639652, + "edge": 16.57811023922386, + "fibres": [ + "15-181" + ], + "obsids": [ + "790415181" + ], + "n_rest": 8, + "mu_rest": 6.981087783861644, + "p_rest": 0.3984682157326832, + "n_topo": 0, + "mu_topo": 2.303152698964852, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [ + "1915323176544379520" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0059614788378894445, + "spread_topo": 0.005961772455520986, + "duty": 0.02654867256637168, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "4032040225752242176", + "arm": "R", + "rest": 6834.336436515378, + "obs": 6834.243197225064, + "n": 3, + "nights": 1, + "z": 119.70495724178625, + "inst": 0.9112897786458334, + "topo": 6834.480389981344, + "edge": 16.732950554556737, + "fibres": [ + "15-181" + ], + "obsids": [ + "800215181" + ], + "n_rest": 10, + "mu_rest": 6.623097188677686, + "p_rest": 0.13342726398604443, + "n_topo": 3, + "mu_topo": 2.171749712660468, + "p_topo": 0.3697017992824343, + "fibre_mates": [], + "detector_mates": [ + "1915323176544379520" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.000882631009517354, + "spread_topo": 0.0008826496004985529, + "duty": 0.02654867256637168, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "4031901343689858816", + "arm": "R", + "rest": 6623.609304965854, + "obs": 6623.455420378106, + "n": 2, + "nights": 1, + "z": 75.5063356201525, + "inst": 0.8832255859375, + "topo": 6623.893651238066, + "edge": 218.33431926269895, + "fibres": [ + "3-93" + ], + "obsids": [ + "715503093" + ], + "n_rest": 6, + "mu_rest": 7.500325620359276, + "p_rest": 0.7585991616917485, + "n_topo": 4, + "mu_topo": 2.5234736898141583, + "p_topo": 0.24745324980008643, + "fibre_mates": [], + "detector_mates": [ + "1505605664695666432", + "164265048623969024", + "206105825449693952", + "2539361656703559424", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0025520276803945308, + "spread_topo": 0.002552137236307317, + "duty": 0.025, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 12 other stars" + ] + }, + { + "star": "3858988709131759744", + "arm": "R", + "rest": 6745.05891306334, + "obs": 6745.096486551545, + "n": 2, + "nights": 1, + "z": 10.482095501976696, + "inst": 0.8994072265625, + "topo": 6745.155702993696, + "edge": 80.54755700221631, + "fibres": [ + "3-23" + ], + "obsids": [ + "987203023" + ], + "n_rest": 27, + "mu_rest": 8.295060979540208, + "p_rest": 2.0832644787027732e-07, + "n_topo": 3, + "mu_topo": 2.7532182051407434, + "p_topo": 0.5193208814402911, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0976545359899319, + "spread_topo": 0.09765593730844557, + "duty": 0.04597701149425287, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (27 other stars against 8.3 by chance)" + ] + }, + { + "star": "3995419165627261312", + "arm": "B", + "rest": 5303.90325695355, + "obs": 5303.833727720096, + "n": 3, + "nights": 1, + "z": 7.266740256815901, + "inst": 0.7072635416666667, + "topo": 5303.5611965405615, + "edge": 70.58440074936243, + "fibres": [ + "9-44" + ], + "obsids": [ + "815909044" + ], + "n_rest": 28, + "mu_rest": 4.0644851215180635, + "p_rest": 7.216449660063518e-15, + "n_topo": 3, + "mu_topo": 1.38732926939979, + "p_topo": 0.1634485720752773, + "fibre_mates": [], + "detector_mates": [ + "825284464211922944" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.09020062021591002, + "spread_topo": 0.09019480297956761, + "duty": 0.5, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (28 other stars against 4.1 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "3872802968928299648", + "arm": "B", + "rest": 5099.039210292901, + "obs": 5098.868062348963, + "n": 3, + "nights": 1, + "z": 16.595810919434168, + "inst": 0.679845703125, + "topo": 5098.917719199183, + "edge": 172.11709294357115, + "fibres": [ + "4-221" + ], + "obsids": [ + "987604221" + ], + "n_rest": 3, + "mu_rest": 3.894065969706023, + "p_rest": 0.7459600933324133, + "n_topo": 3, + "mu_topo": 1.2756119066208755, + "p_topo": 0.1373085668910634, + "fibre_mates": [ + "1045107934168855168" + ], + "detector_mates": [ + "1020395173383915904" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.012843986223742831, + "spread_topo": 0.012843680199694063, + "duty": 1.0, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1547717514092903424", + "arm": "R", + "rest": 6551.410711816172, + "obs": 6550.293360059127, + "n": 2, + "nights": 2, + "z": 9.922574190728913, + "inst": 0.8734387369791666, + "topo": 6550.24298664981, + "edge": 279.22783546901064, + "fibres": [ + "12-227", + "12-74" + ], + "obsids": [ + "1008412227", + "720712074" + ], + "n_rest": 8, + "mu_rest": 8.902284784428604, + "p_rest": 0.6645354617290304, + "n_topo": 3, + "mu_topo": 2.8346538327861928, + "p_topo": 0.5387657633260431, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 26.53558, + "spread_star": 0.12385475586052053, + "spread_topo": 0.7036109731543547, + "duty": 0.02040816326530612, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "1008412222", + "fibre": "12-222", + "lmjm": "85956388", + "z": 0.44856903142387256 + }, + { + "obsid": "1008412228", + "fibre": "12-228", + "lmjm": "85956388", + "z": 0.2618413808373578 + }, + { + "obsid": "1008412229", + "fibre": "12-229", + "lmjm": "85956388", + "z": 0.7252466303903622 + }, + { + "obsid": "1008412230", + "fibre": "12-230", + "lmjm": "85956388", + "z": 0.16113859602974406 + }, + { + "obsid": "1008412231", + "fibre": "12-231", + "lmjm": "85956388", + "z": 0.012762308957400445 + }, + { + "obsid": "1008412235", + "fibre": "12-235", + "lmjm": "85956388", + "z": 0.0 + }, + { + "obsid": "720712066", + "fibre": "12-66", + "lmjm": "84256097", + "z": -0.6198376629979107 + }, + { + "obsid": "720712069", + "fibre": "12-69", + "lmjm": "84256097", + "z": 0.83827422120656 + }, + { + "obsid": "720712071", + "fibre": "12-71", + "lmjm": "84256097", + "z": 2.0362554313842387 + }, + { + "obsid": "720712073", + "fibre": "12-73", + "lmjm": "84256097", + "z": 0.8350803529242867 + }, + { + "obsid": "720712075", + "fibre": "12-75", + "lmjm": "84256097", + "z": 0.0 + }, + { + "obsid": "720712076", + "fibre": "12-76", + "lmjm": "84256097", + "z": -0.0780198368568479 + }, + { + "obsid": "720712077", + "fibre": "12-77", + "lmjm": "84256097", + "z": -2.145560508563004 + }, + { + "obsid": "720712078", + "fibre": "12-78", + "lmjm": "84256097", + "z": 0.061005241443795405 + }, + { + "obsid": "720712079", + "fibre": "12-79", + "lmjm": "84256097", + "z": 0.726293944865872 + }, + { + "obsid": "720712082", + "fibre": "12-82", + "lmjm": "84256097", + "z": -0.5067824760590868 + } + ] + }, + { + "star": "1558463900224281856", + "arm": "R", + "rest": 6432.503883529549, + "obs": 6432.583701796514, + "n": 2, + "nights": 2, + "z": 9.227941828805253, + "inst": 0.8577548828125, + "topo": 6432.581023102962, + "edge": 162.63832742274008, + "fibres": [ + "5-127" + ], + "obsids": [ + "1013805127", + "972005127" + ], + "n_rest": 33, + "mu_rest": 8.029256906069174, + "p_rest": 3.502675927080645e-11, + "n_topo": 6, + "mu_topo": 2.6199858523808057, + "p_topo": 0.05052046672084809, + "fibre_mates": [], + "detector_mates": [ + "3343995535906929280" + ], + "other_nights_topo": [], + "hrv_spread": 30.603009999999998, + "spread_star": 0.18273866751951573, + "spread_topo": 0.4739009406657715, + "duty": 0.021505376344086023, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (33 other stars against 8.0 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1552239530539219328", + "arm": "R", + "rest": 6395.707562298074, + "obs": 6395.572946120645, + "n": 2, + "nights": 2, + "z": 16.905089911375917, + "inst": 0.8527985677083333, + "topo": 6395.399687259649, + "edge": 133.82783598308833, + "fibres": [ + "1-173", + "1-2" + ], + "obsids": [ + "1013101173", + "905101002" + ], + "n_rest": 9, + "mu_rest": 7.410682884590303, + "p_rest": 0.3258058554448253, + "n_topo": 7, + "mu_topo": 2.4588809500756676, + "p_topo": 0.013075433833319883, + "fibre_mates": [], + "detector_mates": [ + "1990895874899318912" + ], + "other_nights_topo": [], + "hrv_spread": 13.79621, + "spread_star": 0.26369152503957594, + "spread_topo": 0.030624392305071524, + "duty": 0.021505376344086023, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars", + "its nights agree in the instrument's frame (0.031 A) and not in the star's (0.264 A)" + ] + }, + { + "star": "1545553602192826240", + "arm": "B", + "rest": 5197.830612019422, + "obs": 5197.631657360353, + "n": 2, + "nights": 1, + "z": 7.892133182537281, + "inst": 0.6930955729166667, + "topo": 5197.987673683559, + "edge": 184.33828038860247, + "fibres": [ + "8-154" + ], + "obsids": [ + "703108154" + ], + "n_rest": 11, + "mu_rest": 4.913981603430427, + "p_rest": 0.012201443457403705, + "n_topo": 2, + "mu_topo": 1.6289177729335658, + "p_topo": 0.4843595221068774, + "fibre_mates": [], + "detector_mates": [ + "640600733045586688" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0005542108028748771, + "spread_topo": 0.0005542275484913262, + "duty": 0.024539877300613498, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1545902181738088448", + "arm": "B", + "rest": 5158.161678894368, + "obs": 5157.874084359675, + "n": 2, + "nights": 1, + "z": 19.707057437166757, + "inst": 0.6877520833333334, + "topo": 5158.1134110138655, + "edge": 218.7413103711251, + "fibres": [ + "2-78" + ], + "obsids": [ + "717902078" + ], + "n_rest": 27, + "mu_rest": 4.251637641511853, + "p_rest": 1.4410694859634532e-13, + "n_topo": 2, + "mu_topo": 1.4353104584767136, + "p_topo": 0.4202951659109395, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.09636434871572419, + "spread_topo": 0.09636344697901222, + "duty": 0.06451612903225806, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (27 other stars against 4.3 by chance)" + ] + }, + { + "star": "1547322445822470272", + "arm": "R", + "rest": 6432.657788627241, + "obs": 6432.369084197771, + "n": 2, + "nights": 2, + "z": 11.635703833511382, + "inst": 0.8577375, + "topo": 6432.318014321387, + "edge": 167.82416666614517, + "fibres": [ + "15-195" + ], + "obsids": [ + "1005215195", + "798215195" + ], + "n_rest": 33, + "mu_rest": 7.961689951909832, + "p_rest": 2.8282931552325863e-11, + "n_topo": 8, + "mu_topo": 2.6368176001771197, + "p_topo": 0.005783303390948458, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 23.88733, + "spread_star": 0.12304371058326069, + "spread_topo": 0.6355573855444163, + "duty": 0.02247191011235955, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (33 other stars against 8.0 by chance)" + ] + }, + { + "star": "1547252592474017792", + "arm": "R", + "rest": 6510.979815472213, + "obs": 6510.4759511231005, + "n": 2, + "nights": 1, + "z": 88.26232191227876, + "inst": 0.868147265625, + "topo": 6510.231101425739, + "edge": 245.04034401828358, + "fibres": [ + "15-143" + ], + "obsids": [ + "815515143" + ], + "n_rest": 11, + "mu_rest": 7.921460842442021, + "p_rest": 0.1763955672321751, + "n_topo": 3, + "mu_topo": 2.6458979936960234, + "p_topo": 0.4930308877755448, + "fibre_mates": [], + "detector_mates": [ + "1302198457395776256", + "1895751324114590464" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.005980297430141945, + "spread_topo": 0.005979609740279557, + "duty": 0.02247191011235955, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "1547252592474017792", + "arm": "R", + "rest": 6705.073702053865, + "obs": 6704.554817386368, + "n": 4, + "nights": 1, + "z": 160.3623811529458, + "inst": 0.8940188151041667, + "topo": 6704.296578291809, + "edge": 150.47242448871384, + "fibres": [ + "15-143" + ], + "obsids": [ + "816015143" + ], + "n_rest": 17, + "mu_rest": 8.88154450152038, + "p_rest": 0.009869633085577867, + "n_topo": 2, + "mu_topo": 2.966056740861313, + "p_topo": 0.7957242340350021, + "fibre_mates": [], + "detector_mates": [ + "1895751324114590464" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.003847966351713694, + "spread_topo": 0.0038475203691632487, + "duty": 0.0449438202247191, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1569550516484686592", + "arm": "R", + "rest": 6495.578138566341, + "obs": 6495.39093640825, + "n": 2, + "nights": 2, + "z": 31.775103258891026, + "inst": 0.8659805338541666, + "topo": 6495.418317245214, + "edge": 226.9165012341091, + "fibres": [ + "1-43", + "1-98" + ], + "obsids": [ + "1003601043", + "884001098" + ], + "n_rest": 30, + "mu_rest": 6.893500521834084, + "p_rest": 6.980493960639933e-11, + "n_topo": 6, + "mu_topo": 2.3319870488828682, + "p_topo": 0.031728217927919244, + "fibre_mates": [], + "detector_mates": [ + "684936958888280960", + "837356689570198016" + ], + "other_nights_topo": [], + "hrv_spread": 22.78773, + "spread_star": 0.033552493699062325, + "spread_topo": 0.5272814422214651, + "duty": 0.03389830508474576, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (30 other stars against 6.9 by chance)", + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "1602608914121561856", + "arm": "B", + "rest": 5200.115221046417, + "obs": 5199.9525182182715, + "n": 2, + "nights": 2, + "z": 6.270278451467466, + "inst": 0.6934054036458334, + "topo": 5199.885665443631, + "edge": 193.20164554908843, + "fibres": [ + "12-176" + ], + "obsids": [ + "818512176", + "821812176" + ], + "n_rest": 36, + "mu_rest": 4.792895565963712, + "p_rest": 0.0, + "n_topo": 2, + "mu_topo": 1.5747390242342192, + "p_topo": 0.4668704600643777, + "fibre_mates": [ + "817937458796755200" + ], + "detector_mates": [ + "2584119266081073280" + ], + "other_nights_topo": [], + "hrv_spread": 2.9516400000000003, + "spread_star": 0.037820905570697505, + "spread_topo": 0.08901463064739801, + "duty": 0.043478260869565216, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (36 other stars against 4.8 by chance)", + "the same fibre shows it in 1 other stars", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1505605664695666432", + "arm": "R", + "rest": 6621.297851214897, + "obs": 6621.300501567569, + "n": 5, + "nights": 3, + "z": 37.186259902130715, + "inst": 0.8827481119791667, + "topo": 6621.23889286888, + "edge": 219.8841243275583, + "fibres": [ + "3-94" + ], + "obsids": [ + "815603094", + "816103094", + "818103094" + ], + "n_rest": 9, + "mu_rest": 7.323342909842728, + "p_rest": 0.3139330978041236, + "n_topo": 2, + "mu_topo": 2.4875895680189113, + "p_topo": 0.7101462340758621, + "fibre_mates": [ + "206105825449693952", + "816545339637191296" + ], + "detector_mates": [ + "164265048623969024", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 2.6415800000000003, + "spread_star": 0.26011638077488897, + "spread_topo": 0.3120229008363822, + "duty": 0.03333333333333333, + "exposure_mates": [], + "why": [ + "the same fibre shows it in 2 other stars", + "fibres within 6 on the same spectrograph show it in 9 other stars" + ] + }, + { + "star": "1505605664695666432", + "arm": "R", + "rest": 6622.372125037459, + "obs": 6622.37477582014, + "n": 6, + "nights": 1, + "z": 40.999226813298165, + "inst": 0.882898828125, + "topo": 6622.605787752805, + "edge": 219.79715797416702, + "fibres": [ + "3-94" + ], + "obsids": [ + "895903094" + ], + "n_rest": 8, + "mu_rest": 7.289652367646826, + "p_rest": 0.4443608472324325, + "n_topo": 5, + "mu_topo": 2.4881031083863325, + "p_topo": 0.10723821722636917, + "fibre_mates": [], + "detector_mates": [ + "164265048623969024", + "206105825449693952", + "2880256028486753280", + "3017224661565267584", + "3071361315579642496", + "4031901343689858816", + "441773090462488704", + "730459763934332416", + "816544068326872448", + "816545339637191296", + "912582732521063296" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.010629804459313164, + "spread_topo": 0.01063017952037626, + "duty": 0.04, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 11 other stars" + ] + }, + { + "star": "1505605664695666432", + "arm": "B", + "rest": 5039.837520310215, + "obs": 5039.839537640826, + "n": 5, + "nights": 3, + "z": 7.937521380315198, + "inst": 0.6718921875, + "topo": 5039.787025464076, + "edge": 104.02303237107935, + "fibres": [ + "3-94" + ], + "obsids": [ + "816103094", + "819003094", + "819603094" + ], + "n_rest": 11, + "mu_rest": 3.158715035471827, + "p_rest": 0.00044719237373946896, + "n_topo": 2, + "mu_topo": 1.066166241560039, + "p_topo": 0.28856513287017704, + "fibre_mates": [], + "detector_mates": [ + "164265048623969024", + "657119933182567424" + ], + "other_nights_topo": [], + "hrv_spread": 3.21513, + "spread_star": 0.02898954427564604, + "spread_topo": 0.0771567692518147, + "duty": 0.03333333333333333, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (11 other stars against 3.2 by chance)", + "fibres within 6 on the same spectrograph show it in 2 other stars" + ] + }, + { + "star": "1295249440828061696", + "arm": "B", + "rest": 5200.169651002512, + "obs": 5200.335391065977, + "n": 2, + "nights": 2, + "z": 14.31155259363653, + "inst": 0.6934503255208333, + "topo": 5200.252176336044, + "edge": 187.86170754153136, + "fibres": [ + "7-204" + ], + "obsids": [ + "1008807204", + "1012707204" + ], + "n_rest": 35, + "mu_rest": 4.806639864191476, + "p_rest": 0.0, + "n_topo": 5, + "mu_topo": 1.5794148014542282, + "p_topo": 0.02256485676067943, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 6.4031899999999995, + "spread_star": 0.015958526352733315, + "spread_topo": 0.12702785092278646, + "duty": 0.025, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (35 other stars against 4.8 by chance)" + ] + }, + { + "star": "1295249440828061696", + "arm": "B", + "rest": 5331.149555110375, + "obs": 5331.319469771802, + "n": 3, + "nights": 1, + "z": 20.031500053583827, + "inst": 0.7108973307291667, + "topo": 5331.646413558826, + "edge": 47.93460707006034, + "fibres": [ + "7-31" + ], + "obsids": [ + "885807031" + ], + "n_rest": 8, + "mu_rest": 5.264644966923622, + "p_rest": 0.16243346996781893, + "n_topo": 3, + "mu_topo": 1.7363247268375983, + "p_topo": 0.2523950590988536, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.031476201414079696, + "spread_topo": 0.03147913496832189, + "duty": 0.0375, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "885807023", + "fibre": "7-23", + "lmjm": "85307358", + "z": -0.5458358321864073 + }, + { + "obsid": "885807023", + "fibre": "7-23", + "lmjm": "85307382", + "z": -0.33911608368314294 + }, + { + "obsid": "885807023", + "fibre": "7-23", + "lmjm": "85307405", + "z": 0.16778229901798966 + }, + { + "obsid": "885807026", + "fibre": "7-26", + "lmjm": "85307358", + "z": -0.36463908802211326 + }, + { + "obsid": "885807026", + "fibre": "7-26", + "lmjm": "85307382", + "z": -0.12127682940030782 + }, + { + "obsid": "885807026", + "fibre": "7-26", + "lmjm": "85307405", + "z": -0.29084366992317345 + }, + { + "obsid": "885807027", + "fibre": "7-27", + "lmjm": "85307358", + "z": 0.0 + }, + { + "obsid": "885807027", + "fibre": "7-27", + "lmjm": "85307382", + "z": -0.71150623625767 + }, + { + "obsid": "885807027", + "fibre": "7-27", + "lmjm": "85307405", + "z": -0.10580578313146236 + }, + { + "obsid": "885807035", + "fibre": "7-35", + "lmjm": "85307358", + "z": 0.0 + }, + { + "obsid": "885807035", + "fibre": "7-35", + "lmjm": "85307382", + "z": 0.0 + }, + { + "obsid": "885807035", + "fibre": "7-35", + "lmjm": "85307405", + "z": 0.5219940254607182 + }, + { + "obsid": "885807036", + "fibre": "7-36", + "lmjm": "85307358", + "z": 0.30620478411755864 + }, + { + "obsid": "885807036", + "fibre": "7-36", + "lmjm": "85307382", + "z": -0.09759797693898115 + }, + { + "obsid": "885807036", + "fibre": "7-36", + "lmjm": "85307405", + "z": -0.08529427678675983 + }, + { + "obsid": "885807038", + "fibre": "7-38", + "lmjm": "85307358", + "z": -0.043893660176955646 + }, + { + "obsid": "885807038", + "fibre": "7-38", + "lmjm": "85307382", + "z": -1.9685112745407782 + }, + { + "obsid": "885807038", + "fibre": "7-38", + "lmjm": "85307405", + "z": -0.44311884822141334 + } + ] + }, + { + "star": "1610658885425227264", + "arm": "B", + "rest": 5245.650686251937, + "obs": 5245.595743765176, + "n": 2, + "nights": 1, + "z": 7.175883469699577, + "inst": 0.6994860026041667, + "topo": 5245.434438049198, + "edge": 130.07529619325032, + "fibres": [ + "5-236" + ], + "obsids": [ + "663405236" + ], + "n_rest": 3, + "mu_rest": 5.014445866842041, + "p_rest": 0.87655941306583, + "n_topo": 5, + "mu_topo": 1.6345775006537717, + "p_topo": 0.025638269322117102, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.048545591609581606, + "spread_topo": 0.04854359035289235, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [ + "fibres beside it on the same plate show it in the same exposures (33.2 sigma)" + ], + "neighbours": [ + { + "obsid": "663405228", + "fibre": "5-228", + "lmjm": "83874237", + "z": 0.08496530212109875 + }, + { + "obsid": "663405228", + "fibre": "5-228", + "lmjm": "83874260", + "z": 0.8997136597549017 + }, + { + "obsid": "663405229", + "fibre": "5-229", + "lmjm": "83874237", + "z": 0.4691531416714647 + }, + { + "obsid": "663405229", + "fibre": "5-229", + "lmjm": "83874260", + "z": 1.008968041057409 + }, + { + "obsid": "663405235", + "fibre": "5-235", + "lmjm": "83874237", + "z": -1.1617525532171973 + }, + { + "obsid": "663405235", + "fibre": "5-235", + "lmjm": "83874260", + "z": -0.42584922301420347 + }, + { + "obsid": "663405237", + "fibre": "5-237", + "lmjm": "83874237", + "z": -0.1986890090830393 + }, + { + "obsid": "663405237", + "fibre": "5-237", + "lmjm": "83874260", + "z": 0.3069111331408788 + }, + { + "obsid": "663405239", + "fibre": "5-239", + "lmjm": "83874237", + "z": 0.7180723085361073 + }, + { + "obsid": "663405239", + "fibre": "5-239", + "lmjm": "83874260", + "z": 0.04928027457107855 + }, + { + "obsid": "663405241", + "fibre": "5-241", + "lmjm": "83874237", + "z": 0.18972147311616655 + }, + { + "obsid": "663405241", + "fibre": "5-241", + "lmjm": "83874260", + "z": -0.5409618525007449 + }, + { + "obsid": "663405242", + "fibre": "5-242", + "lmjm": "83874237", + "z": -0.27498161531684395 + }, + { + "obsid": "663405242", + "fibre": "5-242", + "lmjm": "83874260", + "z": -0.274588036902585 + }, + { + "obsid": "663405244", + "fibre": "5-244", + "lmjm": "83874237", + "z": 33.18086362830681 + }, + { + "obsid": "663405244", + "fibre": "5-244", + "lmjm": "83874260", + "z": -0.4188250854880968 + } + ] + }, + { + "star": "1260614270502901376", + "arm": "R", + "rest": 6645.387286483323, + "obs": 6645.292524157281, + "n": 2, + "nights": 1, + "z": 16.80577601713676, + "inst": 0.8860739583333334, + "topo": 6645.298290506138, + "edge": 196.21847429342324, + "fibres": [ + "1-46" + ], + "obsids": [ + "741601046" + ], + "n_rest": 42, + "mu_rest": 7.489986250355085, + "p_rest": 7.771561172376096e-16, + "n_topo": 6, + "mu_topo": 2.519961625812702, + "p_topo": 0.04336781996557615, + "fibre_mates": [], + "detector_mates": [ + "1877183665094760064" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.08640276818186976, + "spread_topo": 0.0864016110645025, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (42 other stars against 7.5 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "4420231361513433344", + "arm": "B", + "rest": 4947.665499846524, + "obs": 4947.827895621398, + "n": 2, + "nights": 1, + "z": 9.524297285510507, + "inst": 0.6597958984375, + "topo": 4947.552808890641, + "edge": 58.593108503338044, + "fibres": [ + "5-244" + ], + "obsids": [ + "747505244" + ], + "n_rest": 5, + "mu_rest": 2.4625161626533427, + "p_rest": 0.10387070810325116, + "n_topo": 0, + "mu_topo": 0.8164770618811167, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.015472165782739467, + "spread_topo": 0.015471813379008381, + "duty": 0.6666666666666666, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "747505236", + "fibre": "5-236", + "lmjm": "84452970", + "z": 0.0 + }, + { + "obsid": "747505236", + "fibre": "5-236", + "lmjm": "84452993", + "z": -0.7770624120621237 + }, + { + "obsid": "747505237", + "fibre": "5-237", + "lmjm": "84452970", + "z": 0.0 + }, + { + "obsid": "747505237", + "fibre": "5-237", + "lmjm": "84452993", + "z": 0.48763603009574297 + }, + { + "obsid": "747505239", + "fibre": "5-239", + "lmjm": "84452970", + "z": 0.22891926172598445 + }, + { + "obsid": "747505239", + "fibre": "5-239", + "lmjm": "84452993", + "z": 0.3562562982717923 + }, + { + "obsid": "747505243", + "fibre": "5-243", + "lmjm": "84452970", + "z": -0.6768813027934403 + }, + { + "obsid": "747505243", + "fibre": "5-243", + "lmjm": "84452993", + "z": 0.0 + }, + { + "obsid": "747505245", + "fibre": "5-245", + "lmjm": "84452970", + "z": -0.18719757441302443 + }, + { + "obsid": "747505245", + "fibre": "5-245", + "lmjm": "84452993", + "z": -0.887598763991248 + }, + { + "obsid": "747505246", + "fibre": "5-246", + "lmjm": "84452970", + "z": 0.45242493383990445 + }, + { + "obsid": "747505246", + "fibre": "5-246", + "lmjm": "84452993", + "z": 0.0 + }, + { + "obsid": "747505247", + "fibre": "5-247", + "lmjm": "84452970", + "z": 0.1443594299647555 + }, + { + "obsid": "747505247", + "fibre": "5-247", + "lmjm": "84452993", + "z": 0.0 + }, + { + "obsid": "747505248", + "fibre": "5-248", + "lmjm": "84452970", + "z": -0.03649429259852884 + }, + { + "obsid": "747505248", + "fibre": "5-248", + "lmjm": "84452993", + "z": 0.0 + }, + { + "obsid": "747505249", + "fibre": "5-249", + "lmjm": "84452970", + "z": -0.2278923506706673 + }, + { + "obsid": "747505249", + "fibre": "5-249", + "lmjm": "84452993", + "z": 0.1275129590403896 + }, + { + "obsid": "747505250", + "fibre": "5-250", + "lmjm": "84452970", + "z": -1.4432130706443922 + }, + { + "obsid": "747505250", + "fibre": "5-250", + "lmjm": "84452993", + "z": -1.04820794466676 + } + ] + }, + { + "star": "1407678284339274368", + "arm": "B", + "rest": 5102.088540715571, + "obs": 5102.546855261969, + "n": 2, + "nights": 1, + "z": 9.442425151601109, + "inst": 0.6803960286458334, + "topo": 5102.50181969985, + "edge": 203.40706108244922, + "fibres": [ + "6-40" + ], + "obsids": [ + "666806040" + ], + "n_rest": 1, + "mu_rest": 4.07106067069349, + "p_rest": 0.9829407153752002, + "n_topo": 1, + "mu_topo": 1.3660880995637026, + "p_topo": 0.7448970524885243, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.007126781348233635, + "spread_topo": 0.007127358631805691, + "duty": 0.5, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "666806032", + "fibre": "6-32", + "lmjm": "83908783", + "z": 0.07114798235291152 + }, + { + "obsid": "666806032", + "fibre": "6-32", + "lmjm": "83908823", + "z": 0.1938442520460825 + }, + { + "obsid": "666806034", + "fibre": "6-34", + "lmjm": "83908783", + "z": 0.9330554984029489 + }, + { + "obsid": "666806034", + "fibre": "6-34", + "lmjm": "83908823", + "z": 0.0 + }, + { + "obsid": "666806038", + "fibre": "6-38", + "lmjm": "83908783", + "z": 0.9088674785345484 + }, + { + "obsid": "666806038", + "fibre": "6-38", + "lmjm": "83908823", + "z": 0.6813126829785034 + }, + { + "obsid": "666806041", + "fibre": "6-41", + "lmjm": "83908783", + "z": 0.08229276020931521 + }, + { + "obsid": "666806041", + "fibre": "6-41", + "lmjm": "83908823", + "z": 0.6754156191922733 + }, + { + "obsid": "666806042", + "fibre": "6-42", + "lmjm": "83908783", + "z": -0.30233333481757546 + }, + { + "obsid": "666806042", + "fibre": "6-42", + "lmjm": "83908823", + "z": 0.339627920097378 + }, + { + "obsid": "666806043", + "fibre": "6-43", + "lmjm": "83908783", + "z": 0.21926416920267755 + }, + { + "obsid": "666806043", + "fibre": "6-43", + "lmjm": "83908823", + "z": -0.9096834032862543 + }, + { + "obsid": "666806045", + "fibre": "6-45", + "lmjm": "83908783", + "z": 0.12844260602178734 + }, + { + "obsid": "666806045", + "fibre": "6-45", + "lmjm": "83908823", + "z": -0.6600095620046644 + }, + { + "obsid": "666806046", + "fibre": "6-46", + "lmjm": "83908783", + "z": 0.040971297512950554 + }, + { + "obsid": "666806046", + "fibre": "6-46", + "lmjm": "83908823", + "z": 0.8261826192305601 + }, + { + "obsid": "666806047", + "fibre": "6-47", + "lmjm": "83908783", + "z": 0.17133710380781794 + }, + { + "obsid": "666806047", + "fibre": "6-47", + "lmjm": "83908823", + "z": 0.2270140062939775 + } + ] + }, + { + "star": "1407678284339274368", + "arm": "B", + "rest": 5134.99378777655, + "obs": 5135.45505816216, + "n": 2, + "nights": 1, + "z": 8.251742085596282, + "inst": 0.6846449869791666, + "topo": 5135.409732149123, + "edge": 236.31830643925514, + "fibres": [ + "6-40" + ], + "obsids": [ + "666806040" + ], + "n_rest": 8, + "mu_rest": 4.475946341503005, + "p_rest": 0.08461858523520827, + "n_topo": 0, + "mu_topo": 1.496610831204388, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.0010424146703371662, + "spread_topo": 0.0010424991078252788, + "duty": 0.5, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "666806032", + "fibre": "6-32", + "lmjm": "83908823", + "z": 0.5801633471410389 + }, + { + "obsid": "666806032", + "fibre": "6-32", + "lmjm": "83908846", + "z": 0.0 + }, + { + "obsid": "666806034", + "fibre": "6-34", + "lmjm": "83908823", + "z": 0.6366301499312642 + }, + { + "obsid": "666806034", + "fibre": "6-34", + "lmjm": "83908846", + "z": 0.9090879467116737 + }, + { + "obsid": "666806038", + "fibre": "6-38", + "lmjm": "83908823", + "z": 0.11141313938029969 + }, + { + "obsid": "666806038", + "fibre": "6-38", + "lmjm": "83908846", + "z": 0.0 + }, + { + "obsid": "666806041", + "fibre": "6-41", + "lmjm": "83908823", + "z": -0.010504213426498097 + }, + { + "obsid": "666806041", + "fibre": "6-41", + "lmjm": "83908846", + "z": 0.3088466314382863 + }, + { + "obsid": "666806042", + "fibre": "6-42", + "lmjm": "83908823", + "z": -0.713272274950889 + }, + { + "obsid": "666806042", + "fibre": "6-42", + "lmjm": "83908846", + "z": 0.03437318399589498 + }, + { + "obsid": "666806043", + "fibre": "6-43", + "lmjm": "83908823", + "z": -2.5458400481453736 + }, + { + "obsid": "666806043", + "fibre": "6-43", + "lmjm": "83908846", + "z": -3.56007861440853 + }, + { + "obsid": "666806045", + "fibre": "6-45", + "lmjm": "83908823", + "z": 1.282901450647826 + }, + { + "obsid": "666806045", + "fibre": "6-45", + "lmjm": "83908846", + "z": 2.6089210023374583 + }, + { + "obsid": "666806046", + "fibre": "6-46", + "lmjm": "83908823", + "z": -0.3824409714332062 + }, + { + "obsid": "666806046", + "fibre": "6-46", + "lmjm": "83908846", + "z": 0.21522976598236485 + }, + { + "obsid": "666806047", + "fibre": "6-47", + "lmjm": "83908823", + "z": -0.06767753706573507 + }, + { + "obsid": "666806047", + "fibre": "6-47", + "lmjm": "83908846", + "z": 0.0 + } + ] + }, + { + "star": "4473411715294114304", + "arm": "B", + "rest": 5202.261831947429, + "obs": 5201.4894553650265, + "n": 2, + "nights": 1, + "z": 6.51472264644386, + "inst": 0.6936166666666667, + "topo": 5201.626423637652, + "edge": 181.5776213119707, + "fibres": [ + "5-217" + ], + "obsids": [ + "666605217" + ], + "n_rest": 14, + "mu_rest": 5.055167240473341, + "p_rest": 0.0007741505518006342, + "n_topo": 2, + "mu_topo": 1.671151965870459, + "p_topo": 0.4977423975482115, + "fibre_mates": [], + "detector_mates": [ + "919820950710424960" + ], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.040657369880136685, + "spread_topo": 0.04065240395721048, + "duty": 0.4, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (14 other stars against 5.1 by chance)", + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1386361674454950912", + "arm": "R", + "rest": 6772.312602101327, + "obs": 6772.583569190373, + "n": 3, + "nights": 1, + "z": 241.3791783377467, + "inst": 0.9030803385416667, + "topo": 6772.473070056167, + "edge": 81.70452162392849, + "fibres": [ + "15-125" + ], + "obsids": [ + "1014315125" + ], + "n_rest": 5, + "mu_rest": 8.150235384964502, + "p_rest": 0.9086519092747722, + "n_topo": 5, + "mu_topo": 2.770313407816014, + "p_topo": 0.1477302256783215, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.008024874138754967, + "spread_topo": 0.008025064285902772, + "duty": 0.03278688524590164, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "1014315120", + "fibre": "15-120", + "lmjm": "85998219", + "z": -1.7283417864720079 + }, + { + "obsid": "1014315120", + "fibre": "15-120", + "lmjm": "85998241", + "z": -0.6526217708407582 + }, + { + "obsid": "1014315120", + "fibre": "15-120", + "lmjm": "85998263", + "z": -1.1906578035610353 + }, + { + "obsid": "1014315122", + "fibre": "15-122", + "lmjm": "85998219", + "z": 0.6274601558205342 + }, + { + "obsid": "1014315122", + "fibre": "15-122", + "lmjm": "85998241", + "z": 0.3061948312810446 + }, + { + "obsid": "1014315122", + "fibre": "15-122", + "lmjm": "85998263", + "z": 0.0 + }, + { + "obsid": "1014315126", + "fibre": "15-126", + "lmjm": "85998219", + "z": -0.5373905407734 + }, + { + "obsid": "1014315126", + "fibre": "15-126", + "lmjm": "85998241", + "z": 0.0 + }, + { + "obsid": "1014315126", + "fibre": "15-126", + "lmjm": "85998263", + "z": 0.747027291788958 + }, + { + "obsid": "1014315127", + "fibre": "15-127", + "lmjm": "85998219", + "z": NaN + }, + { + "obsid": "1014315127", + "fibre": "15-127", + "lmjm": "85998241", + "z": NaN + }, + { + "obsid": "1014315127", + "fibre": "15-127", + "lmjm": "85998263", + "z": NaN + }, + { + "obsid": "1014315129", + "fibre": "15-129", + "lmjm": "85998219", + "z": NaN + }, + { + "obsid": "1014315129", + "fibre": "15-129", + "lmjm": "85998241", + "z": NaN + }, + { + "obsid": "1014315129", + "fibre": "15-129", + "lmjm": "85998263", + "z": NaN + }, + { + "obsid": "1014315130", + "fibre": "15-130", + "lmjm": "85998219", + "z": 0.6089517598885738 + }, + { + "obsid": "1014315130", + "fibre": "15-130", + "lmjm": "85998241", + "z": 0.11783075332143987 + }, + { + "obsid": "1014315130", + "fibre": "15-130", + "lmjm": "85998263", + "z": 0.45117349116508576 + }, + { + "obsid": "1014315131", + "fibre": "15-131", + "lmjm": "85998219", + "z": -0.34052612134596727 + }, + { + "obsid": "1014315131", + "fibre": "15-131", + "lmjm": "85998241", + "z": -0.14855234189619987 + }, + { + "obsid": "1014315131", + "fibre": "15-131", + "lmjm": "85998263", + "z": -0.9674541803736458 + }, + { + "obsid": "1014315132", + "fibre": "15-132", + "lmjm": "85998219", + "z": 0.7286083229097312 + }, + { + "obsid": "1014315132", + "fibre": "15-132", + "lmjm": "85998241", + "z": 0.6833361262246758 + }, + { + "obsid": "1014315132", + "fibre": "15-132", + "lmjm": "85998263", + "z": 0.3188221532254675 + }, + { + "obsid": "1014315133", + "fibre": "15-133", + "lmjm": "85998219", + "z": 0.47507006394012397 + }, + { + "obsid": "1014315133", + "fibre": "15-133", + "lmjm": "85998241", + "z": 0.06682115885631564 + }, + { + "obsid": "1014315133", + "fibre": "15-133", + "lmjm": "85998263", + "z": 0.5921031331748172 + } + ] + }, + { + "star": "1894835705805757824", + "arm": "B", + "rest": 5344.888417801708, + "obs": 5345.208352543554, + "n": 2, + "nights": 2, + "z": 17.7562131362344, + "inst": 0.7127453125, + "topo": 5344.857541928378, + "edge": 28.334458413748507, + "fibres": [ + "13-241" + ], + "obsids": [ + "849713241", + "942613241" + ], + "n_rest": 4, + "mu_rest": 5.447115239292595, + "p_rest": 0.7922354246765738, + "n_topo": 0, + "mu_topo": 1.8063111563828895, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 2.4946599999999997, + "spread_star": 0.026681175811972935, + "spread_topo": 0.01779216923387139, + "duty": 0.02631578947368421, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "849713233", + "fibre": "13-233", + "lmjm": "85185862", + "z": 0.014871167239489478 + }, + { + "obsid": "849713234", + "fibre": "13-234", + "lmjm": "85185862", + "z": 0.2498829373075714 + }, + { + "obsid": "849713236", + "fibre": "13-236", + "lmjm": "85185862", + "z": 0.09822400429551296 + }, + { + "obsid": "849713239", + "fibre": "13-239", + "lmjm": "85185862", + "z": -1.1805523425870275 + }, + { + "obsid": "849713243", + "fibre": "13-243", + "lmjm": "85185862", + "z": -0.5144093393418404 + }, + { + "obsid": "849713244", + "fibre": "13-244", + "lmjm": "85185862", + "z": 0.0 + }, + { + "obsid": "849713245", + "fibre": "13-245", + "lmjm": "85185862", + "z": -0.17087676886081266 + }, + { + "obsid": "849713246", + "fibre": "13-246", + "lmjm": "85185862", + "z": 0.0 + }, + { + "obsid": "849713248", + "fibre": "13-248", + "lmjm": "85185862", + "z": 0.7029696083690052 + }, + { + "obsid": "942613233", + "fibre": "13-233", + "lmjm": "85727280", + "z": 0.35428986825099545 + }, + { + "obsid": "942613234", + "fibre": "13-234", + "lmjm": "85727280", + "z": 1.5270041528529632 + }, + { + "obsid": "942613239", + "fibre": "13-239", + "lmjm": "85727280", + "z": -0.007308640361502273 + }, + { + "obsid": "942613242", + "fibre": "13-242", + "lmjm": "85727280", + "z": 0.010621972484372019 + }, + { + "obsid": "942613243", + "fibre": "13-243", + "lmjm": "85727280", + "z": 0.12358104558065017 + }, + { + "obsid": "942613245", + "fibre": "13-245", + "lmjm": "85727280", + "z": 0.4716790351155414 + }, + { + "obsid": "942613247", + "fibre": "13-247", + "lmjm": "85727280", + "z": 0.2132106836368705 + }, + { + "obsid": "942613248", + "fibre": "13-248", + "lmjm": "85727280", + "z": 0.19030654409852685 + } + ] + }, + { + "star": "1894835705805757824", + "arm": "R", + "rest": 6466.191254459378, + "obs": 6466.578308232631, + "n": 2, + "nights": 2, + "z": 8.495588231090908, + "inst": 0.86228125, + "topo": 6466.287380883834, + "edge": 213.0021457585499, + "fibres": [ + "13-241" + ], + "obsids": [ + "764113241", + "838513241" + ], + "n_rest": 15, + "mu_rest": 8.41186801717059, + "p_rest": 0.025371095470014038, + "n_topo": 2, + "mu_topo": 2.821026015393118, + "p_topo": 0.7724777034138779, + "fibre_mates": [], + "detector_mates": [ + "1386201523714252416" + ], + "other_nights_topo": [], + "hrv_spread": 11.91133, + "spread_star": 0.11520867699164228, + "spread_topo": 0.37211684471276385, + "duty": 0.02631578947368421, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1914612346574093696", + "arm": "B", + "rest": 5299.876016201478, + "obs": 5299.095069193745, + "n": 2, + "nights": 2, + "z": 43.03965952468132, + "inst": 0.7064944010416667, + "topo": 5298.8115715296935, + "edge": 75.78001559537279, + "fibres": [ + "8-76" + ], + "obsids": [ + "681908076", + "861508076" + ], + "n_rest": 29, + "mu_rest": 4.228879337731656, + "p_rest": 2.7755575615628914e-15, + "n_topo": 0, + "mu_topo": 1.4372511206110141, + "p_topo": 1.0, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 13.465130000000002, + "spread_star": 0.07699020391919476, + "spread_topo": 0.16100779532371234, + "duty": 0.022222222222222223, + "exposure_mates": [], + "why": [ + "shared in the stellar frame (29 other stars against 4.2 by chance)" + ] + }, + { + "star": "1915323176544379520", + "arm": "B", + "rest": 5198.936835402625, + "obs": 5199.331361048115, + "n": 2, + "nights": 2, + "z": 6.516096293345741, + "inst": 0.6931724609375, + "topo": 5199.218419812914, + "edge": 174.73394401498535, + "fibres": [ + "15-178" + ], + "obsids": [ + "681915178", + "839015178" + ], + "n_rest": 11, + "mu_rest": 4.86026388023814, + "p_rest": 0.011333539080574662, + "n_topo": 1, + "mu_topo": 1.6247395823882, + "p_topo": 0.8030370388500219, + "fibre_mates": [], + "detector_mates": [ + "723626019994797568" + ], + "other_nights_topo": [], + "hrv_spread": 5.31912, + "spread_star": 0.09692158132656914, + "spread_topo": 0.18917286699797842, + "duty": 0.022222222222222223, + "exposure_mates": [], + "why": [ + "fibres within 6 on the same spectrograph show it in 1 other stars" + ] + }, + { + "star": "1915323176544379520", + "arm": "R", + "rest": 6728.650692288795, + "obs": 6729.161301542512, + "n": 2, + "nights": 2, + "z": 11.681388385364867, + "inst": 0.8972979166666667, + "topo": 6728.795945553227, + "edge": 123.97100305937693, + "fibres": [ + "15-178" + ], + "obsids": [ + "937215178", + "945815178" + ], + "n_rest": 18, + "mu_rest": 8.469793751661756, + "p_rest": 0.002894929687125458, + "n_topo": 3, + "mu_topo": 2.8410451467896065, + "p_topo": 0.5402726353933943, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 8.417919999999999, + "spread_star": 0.08296228311610321, + "spread_topo": 0.271892744734032, + "duty": 0.022222222222222223, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "937215170", + "fibre": "15-170", + "lmjm": "85699989", + "z": -0.6697218759460489 + }, + { + "obsid": "937215176", + "fibre": "15-176", + "lmjm": "85699989", + "z": 0.0012054427737037703 + }, + { + "obsid": "937215177", + "fibre": "15-177", + "lmjm": "85699989", + "z": -8.668192758732815 + }, + { + "obsid": "937215181", + "fibre": "15-181", + "lmjm": "85699989", + "z": 0.0 + }, + { + "obsid": "937215182", + "fibre": "15-182", + "lmjm": "85699989", + "z": 0.32093428192574885 + }, + { + "obsid": "937215184", + "fibre": "15-184", + "lmjm": "85699989", + "z": 0.057620782277635826 + }, + { + "obsid": "937215186", + "fibre": "15-186", + "lmjm": "85699989", + "z": 0.036853606262002 + }, + { + "obsid": "945815170", + "fibre": "15-170", + "lmjm": "85741653", + "z": 0.3769844952059936 + }, + { + "obsid": "945815176", + "fibre": "15-176", + "lmjm": "85741653", + "z": -0.13607172248420193 + }, + { + "obsid": "945815177", + "fibre": "15-177", + "lmjm": "85741653", + "z": 0.0 + }, + { + "obsid": "945815181", + "fibre": "15-181", + "lmjm": "85741653", + "z": 0.6531412346387702 + }, + { + "obsid": "945815182", + "fibre": "15-182", + "lmjm": "85741653", + "z": 0.8642697797945842 + }, + { + "obsid": "945815184", + "fibre": "15-184", + "lmjm": "85741653", + "z": 0.319656041544801 + }, + { + "obsid": "945815186", + "fibre": "15-186", + "lmjm": "85741653", + "z": 0.0 + } + ] + }, + { + "star": "1898531439263850240", + "arm": "R", + "rest": 6322.91676806026, + "obs": 6323.2598128517075, + "n": 5, + "nights": 1, + "z": 14.460530446664281, + "inst": 0.8431738932291667, + "topo": 6322.849586258245, + "edge": 56.4599868840005, + "fibres": [ + "16-214" + ], + "obsids": [ + "764116214" + ], + "n_rest": 5, + "mu_rest": 7.159832720708172, + "p_rest": 0.8410963787025668, + "n_topo": 3, + "mu_topo": 2.3532843551506275, + "p_topo": 0.4180398911886267, + "fibre_mates": [], + "detector_mates": [], + "other_nights_topo": [], + "hrv_spread": 0.0, + "spread_star": 0.15295200276341347, + "spread_topo": 0.15295037762916763, + "duty": 0.09433962264150944, + "exposure_mates": [], + "why": [], + "neighbours": [ + { + "obsid": "764116207", + "fibre": "16-207", + "lmjm": "84665920", + "z": -0.5409617149888862 + }, + { + "obsid": "764116207", + "fibre": "16-207", + "lmjm": "84665943", + "z": 0.3580053553453808 + }, + { + "obsid": "764116207", + "fibre": "16-207", + "lmjm": "84665967", + "z": -0.7202578630476857 + }, + { + "obsid": "764116207", + "fibre": "16-207", + "lmjm": "84665990", + "z": 0.0 + }, + { + "obsid": "764116207", + "fibre": "16-207", + "lmjm": "84666013", + "z": 0.40429413253845525 + }, + { + "obsid": "764116208", + "fibre": "16-208", + "lmjm": "84665920", + "z": -0.7206408180480898 + }, + { + "obsid": "764116208", + "fibre": "16-208", + "lmjm": "84665943", + "z": 0.18171240057378707 + }, + { + "obsid": "764116208", + "fibre": "16-208", + "lmjm": "84665967", + "z": 0.6231812990391152 + }, + { + "obsid": "764116208", + "fibre": "16-208", + "lmjm": "84665990", + "z": 0.07315386744414648 + }, + { + "obsid": "764116208", + "fibre": "16-208", + "lmjm": "84666013", + "z": 0.13208872799621305 + }, + { + "obsid": "764116215", + "fibre": "16-215", + "lmjm": "84665920", + "z": -32.538747944760814 + }, + { + "obsid": "764116215", + "fibre": "16-215", + "lmjm": "84665943", + "z": -31.020587965471698 + }, + { + "obsid": "764116215", + "fibre": "16-215", + "lmjm": "84665967", + "z": -30.012088967578286 + }, + { + "obsid": "764116215", + "fibre": "16-215", + "lmjm": "84665990", + "z": -29.042233499085476 + }, + { + "obsid": "764116215", + "fibre": "16-215", + "lmjm": "84666013", + "z": -30.426311554871425 + }, + { + "obsid": "764116216", + "fibre": "16-216", + "lmjm": "84665920", + "z": 0.24600086557976092 + }, + { + "obsid": "764116216", + "fibre": "16-216", + "lmjm": "84665943", + "z": 1.3154804364322672 + }, + { + "obsid": "764116216", + "fibre": "16-216", + "lmjm": "84665967", + "z": 0.5655950962909273 + }, + { + "obsid": "764116216", + "fibre": "16-216", + "lmjm": "84665990", + "z": 0.0 + }, + { + "obsid": "764116216", + "fibre": "16-216", + "lmjm": "84666013", + "z": 0.0 + }, + { + "obsid": "764116217", + "fibre": "16-217", + "lmjm": "84665920", + "z": 0.36472431544748474 + }, + { + "obsid": "764116217", + "fibre": "16-217", + "lmjm": "84665943", + "z": 0.41544735741124417 + }, + { + "obsid": "764116217", + "fibre": "16-217", + "lmjm": "84665967", + "z": -0.159783830935888 + }, + { + "obsid": "764116217", + "fibre": "16-217", + "lmjm": "84665990", + "z": -0.34448148992914773 + }, + { + "obsid": "764116217", + "fibre": "16-217", + "lmjm": "84666013", + "z": 0.0 + }, + { + "obsid": "764116218", + "fibre": "16-218", + "lmjm": "84665920", + "z": -1.0889837482727314 + }, + { + "obsid": "764116218", + "fibre": "16-218", + "lmjm": "84665943", + "z": -0.20645298837261652 + }, + { + "obsid": "764116218", + "fibre": "16-218", + "lmjm": "84665967", + "z": -0.44870571464873416 + }, + { + "obsid": "764116218", + "fibre": "16-218", + "lmjm": "84665990", + "z": -3.1621347377339166 + }, + { + "obsid": "764116218", + "fibre": "16-218", + "lmjm": "84666013", + "z": 0.0 + }, + { + "obsid": "764116219", + "fibre": "16-219", + "lmjm": "84665920", + "z": 0.8211200891519295 + }, + { + "obsid": "764116219", + "fibre": "16-219", + "lmjm": "84665943", + "z": 0.30047619566127165 + }, + { + "obsid": "764116219", + "fibre": "16-219", + "lmjm": "84665967", + "z": 0.8128609803532795 + }, + { + "obsid": "764116219", + "fibre": "16-219", + "lmjm": "84665990", + "z": 1.1232138654789194 + }, + { + "obsid": "764116219", + "fibre": "16-219", + "lmjm": "84666013", + "z": 0.6019580460982243 + }, + { + "obsid": "764116221", + "fibre": "16-221", + "lmjm": "84665920", + "z": 0.0 + }, + { + "obsid": "764116221", + "fibre": "16-221", + "lmjm": "84665943", + "z": 0.3737532550658496 + }, + { + "obsid": "764116221", + "fibre": "16-221", + "lmjm": "84665967", + "z": 0.9290485092035329 + }, + { + "obsid": "764116221", + "fibre": "16-221", + "lmjm": "84665990", + "z": 0.04009203149055706 + }, + { + "obsid": "764116221", + "fibre": "16-221", + "lmjm": "84666013", + "z": 0.9112740305342466 + } + ] + } + ], + "near_pairs": 487, + "chance_pairs": 17.166666666666668 +} \ No newline at end of file diff --git a/papers/survey_lasers/make_numbers.py b/papers/survey_lasers/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..fddafc20348663ec0f38a196b2f2f08f6c82b50d --- /dev/null +++ b/papers/survey_lasers/make_numbers.py @@ -0,0 +1,277 @@ +"""Numbers of the survey-laser paper: surviving LAMOST features with heights and mask bits, and per-star line-flux limits (Table 2) from the rvs, galah, apogee, desi and lamost results and cached magnitudes.""" +import csv +import glob +import json +import math +import os +import random +import sys + +import numpy as np + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import core, science # noqa: E402 +from setitools import lasers # noqa: E402 + +PC = 3.0857e18 +# Vega zero points (erg/cm^2/s/A) at pivot wavelengths: Gaia BP, G, RP (SVO GAIA3) and 2MASS H (Cohen et al. 2003) +ZP = {"BP": (5110.0, 4.08e-9), "G": (6218.0, 2.50e-9), "RP": (7769.0, 1.27e-9), "H": (16620.0, 1.133e-10)} +# matched-filter thresholds in noise units +THR = {"rvs": 5.0, "galah": 5.5, "apogee": 5.0, "desi": 5.0, "lamost": 6.0} +GALAH_CAMS = {"B": (4810.0, 0.046, "snr_px_ccd1"), "V": (5760.0, 0.055, "snr_px_ccd2"), "R": (6610.0, 0.063, "snr_px_ccd3"), + "I": (7740.0, 0.074, "snr_px_ccd4")} +DESI_CAMS = {"b": (4800.0, 2500.0, "sn_b"), "r": (6800.0, 3500.0, "sn_r"), "z": (8800.0, 4500.0, "sn_z")} + + +def results(name): + """Result file from data/, else the results directory.""" + p = os.path.join(HERE, "data", name) + return p if os.path.exists(p) else core.results(name) + + +def chunks(xs, n=60): + for i in range(0, len(xs), n): + yield xs[i:i + n] + + +def fetch_mags(): + """Gaia magnitudes of the five samples and 2MASS H of the APOGEE stars from the Astro Data Lab, cached in RESULTS.""" + p = results("survey_mags.json") + if os.path.exists(p): + M = json.load(open(p)) + M["twomass"] = {k.strip(): v for k, v in M.get("twomass", {}).items()} + return M + out = {} + + def gaia(ids): + got = {} + for ch in chunks(sorted(set(ids))): + q = ("SELECT source_id, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, grvs_mag, parallax FROM " + "gaia_dr3.gaia_source WHERE source_id IN (%s)" % ",".join(ch)) + for r in core.datalab(q): + got[str(r["source_id"])] = r + return got + rvs = [r["source_id"] for r in csv.DictReader(open(core.results("rvs_sample.csv")))] + galah = [r["gaiadr3_source_id"] for r in csv.DictReader(open(core.results("galah_sample.csv")))] + desi = [r["source_id"] for r in csv.DictReader(open(core.results("desi_sample.csv"))) if r["source_id"]] + lamost = list(json.load(open(os.path.join(lasers.lamost_ROOT, "targets.json"))).keys()) + ap = {r["APOGEE"]: r for r in csv.DictReader(open(os.path.join(core.DATA, "apogee_100pc_dwarfs.csv")))} + apg = [r["GaiaEDR3"] for r in ap.values() if r.get("GaiaEDR3")] + for name, ids in (("rvs", rvs), ("galah", galah), ("desi", desi), ("lamost", lamost), ("apogee", apg)): + out[name] = gaia(ids) + print("%s: %d of %d stars with Gaia magnitudes" % (name, len(out[name]), len(set(ids))), flush=True) + hm = {} + for ch in chunks([a[2:] for a in ap if a.startswith("2M")]): + q = "SELECT designation, h_m, j_m, k_m FROM twomass.psc WHERE designation IN (%s)" % ",".join("'%s'" % x for x in ch) + for r in core.datalab(q): + hm[r["designation"].strip()] = r + out["twomass"] = hm + json.dump(out, open(core.results("survey_mags.json"), "w")) + return out + + +def flam(mags, lam): + """F_lambda (erg/cm^2/s/A) at lam (A), log-linear through the available bands, extrapolated beyond.""" + pts = sorted((ZP[b][0], ZP[b][1] * 10 ** (-0.4 * m)) for b, m in mags.items() if m is not None and np.isfinite(m)) + if not pts: + return None + if len(pts) == 1: + return float(pts[0][1]) + x = np.log10([p[0] for p in pts]) + y = np.log10([p[1] for p in pts]) + i = min(max(int(np.searchsorted(x, math.log10(lam))) - 1, 0), len(pts) - 2) + slope = (y[i + 1] - y[i]) / (x[i + 1] - x[i]) + return float(10 ** (y[i] + slope * (math.log10(lam) - x[i]))) + + +def gain(sigma_px): + k = np.arange(-int(4 * sigma_px) - 1, int(4 * sigma_px) + 2) + return float(math.sqrt(np.sum(np.exp(-0.5 * (k / sigma_px) ** 2) ** 2))) + + +def limit(k, sig_pix, sigma_px, lam, R, F): + """Unresolved-line flux at k times the matched-filter noise: k sig_pix over the filter gain, times the Gaussian integral, times the continuum.""" + return k * sig_pix / gain(sigma_px) * math.sqrt(2 * math.pi) * (lam / R / 2.3548) * F + + +def row(sid, d_pc, F, lam, extra=None): + d = d_pc * PC + return dict(id=str(sid), d_pc=d_pc, F=F, L=4 * math.pi * d ** 2 * F * 1e-7, P10=F * d ** 2 * (lam * 1e-8 / 1000.0) ** 2 * 1e-7, + **(extra or {})) + + +def gmags(table, sid): + r = table.get(str(sid)) + if not r: + return None, None + + def f(k): + try: + return float(r[k]) + except (TypeError, ValueError, KeyError): + return None + return dict(BP=f("phot_bp_mean_mag"), G=f("phot_g_mean_mag"), RP=f("phot_rp_mean_mag")), f("parallax") + + +def limits(M): + out = {} + z = np.load(core.results("rvs_laser_resid.npz"), allow_pickle=True) + rows = [] + sp = 858.0 / 11500.0 / 2.3548 / 0.01 + for sid, r in zip(z["ids"], z["resid"]): + ok = np.isfinite(r) + mags, plx = gmags(M["rvs"], sid) + if ok.sum() < 500 or not mags or not plx or plx <= 0: + continue + x = r[ok] + sig = 1.4826 * np.median(np.abs(x - np.median(x))) + F = flam(mags, 8580.0) + if F: + rows.append(row(sid, 1000.0 / plx, limit(THR["rvs"], sig, sp, 8580.0, 11500.0, F), 8580.0)) + out["rvs"] = rows + rows = [] + for r in csv.DictReader(open(core.results("galah_sample.csv"))): + mags, plx = gmags(M["galah"], r["gaiadr3_source_id"]) + if not mags or not plx or plx <= 0: + continue + for cam, (lam, step, col) in GALAH_CAMS.items(): + try: + snr = float(r[col]) + except (ValueError, KeyError): + continue + F = flam(mags, lam) + if snr > 0 and F: + rows.append(row(r["gaiadr3_source_id"], 1000.0 / plx, limit(THR["galah"], 1.0 / snr, lam / 28000.0 / 2.3548 / step, lam, 28000.0, F), lam, dict(cam=cam))) + out["galah"] = rows + rows = [] + sp = science.lsf_sigma_px(22500.0, dlog10=6e-6) + for r in csv.DictReader(open(core.results("apogee_sample.csv"))): + tm = M["twomass"].get(r["apogee_id"][2:]) + try: + snr, plx = float(r["snr"]), float(r["gaiaedr3_parallax"]) + H = float(tm["h_m"]) + except (TypeError, ValueError, KeyError): + continue + if snr > 0 and plx > 0: + F = ZP["H"][1] * 10 ** (-0.4 * H) + rows.append(row(r["apogee_id"], 1000.0 / plx, limit(THR["apogee"], 1.0 / snr, sp, 16000.0, 22500.0, F), 16000.0)) + out["apogee"] = rows + rows = [] + for r in csv.DictReader(open(core.results("desi_sample.csv"))): + mags, _ = gmags(M["desi"], r["source_id"]) if r["source_id"] else (None, None) + try: + plx = float(r["parallax"]) + except ValueError: + continue + if not mags or plx <= 0: + continue + for cam, (lam, Rc, col) in DESI_CAMS.items(): + try: + snr = float(r[col]) + except (ValueError, KeyError): + continue + F = flam(mags, lam) + if snr > 0 and F: + rows.append(row(r["targetid"], 1000.0 / plx, limit(THR["desi"], 1.0 / snr, lam / Rc / 2.3548 / 0.8, lam, Rc, F), lam, dict(cam=cam))) + out["desi"] = rows + # LAMOST per-exposure S/N from the headers of 1500 random cached observations + from astropy.io import fits + random.seed(5) + files = sorted(glob.glob(os.path.join(lasers.lamost_ROOT, "fits", "*.fits.gz"))) + targets = json.load(open(os.path.join(lasers.lamost_ROOT, "targets.json"))) + by_obs = {str(o): sid for sid, t in targets.items() for o in t["obsids"]} + rows = [] + for f in random.sample(files, min(1500, len(files))): + sid = by_obs.get(os.path.basename(f).split(".")[0]) + if not sid: + continue + mags, _ = gmags(M["lamost"], sid) + try: + plx = float(targets[sid]["plx"]) + except (TypeError, ValueError): + continue + if not mags or plx <= 0: + continue + try: + with fits.open(f) as h: + for x in h[1:]: + if x.name[:2] not in ("B-", "R-") or not x.header.get("SNR") or float(x.header["SNR"]) <= 0: + continue + lam = 5150.0 if x.name[0] == "B" else 6550.0 + w = np.asarray(x.data["WAVELENGTH"][0], float) + step = float(np.median(np.diff(w))) + F = flam(mags, lam) + if F: + rows.append(row(sid, 1000.0 / plx, limit(THR["lamost"], 1.0 / float(x.header["SNR"]), lam / 7500.0 / 2.3548 / step, lam, 7500.0, F), lam, dict(arm=x.name[0]))) + except Exception: + continue + out["lamost"] = rows + json.dump(out, open(core.results("survey_limits.json"), "w")) + return out + + +def table_limits(out): + print("== Table 2 rows") + names = {"rvs": "Gaia DR3 RVS", "galah": "GALAH DR4", "apogee": "APOGEE DR17", "desi": "DESI DR1", "lamost": "LAMOST DR10 MRS"} + for k, rows in out.items(): + if not rows: + print("%s: no limits (sample or magnitudes missing)" % names[k]) + continue + F = np.array([r["F"] for r in rows]) + L = np.array([r["L"] for r in rows]) + P = np.array([r["P10"] for r in rows]) + d = np.array([r["d_pc"] for r in rows]) + near = d < 20 + i = int(np.argmin(d)) + print(r"%s & $%d$ & $%.1f\times10^{%d}$ & $%.1f\times10^{%d}$ & $%.0f\times10^{%d}$ & $%d$ & $%.2g$ ($%.1f$\,pc) \\" + % (names[k], len({r["id"] for r in rows}), *sci(np.median(F)), *sci(np.median(L)), *sci(np.median(P), 0), near.sum(), + P[i], d[i])) + print(" %% 10-90 per cent of F %.1e-%.1e; within 20 pc isotropic median %.1e W, 10 m %.1e W" % ( + *np.percentile(F, [10, 90]), np.median(L[near]) if near.any() else 0, np.median(P[near]) if near.any() else 0)) + + +def sci(x, digits=1): + e = int(math.floor(math.log10(abs(x)))) + m = x / 10 ** e + if round(m, digits) >= 10: + m, e = m / 10, e + 1 + return (round(m, digits), e) + + +def table_lamost(): + """Table 1 rows: LAMOST features passing every test, with height over the continuum and pipeline masks.""" + from astropy.io import fits + d = json.load(open(results("lamost_laser.json"))) + targets = json.load(open(os.path.join(lasers.lamost_ROOT, "targets.json"))) + left = [p for p in d["persistent"] if not p["why"]] + print("== Table 1 rows (%d features)" % len(left)) + for p in sorted(left, key=lambda p: p["rest"]): + t = targets.get(p["star"], {}) + heights = [] + for obsid in p["obsids"]: + try: + h = fits.open(os.path.join(lasers.lamost_ROOT, "fits", "%s.fits.gz" % obsid)) + except Exception: + continue + for x in h[1:]: + if not x.name.startswith(p["arm"] + "-"): + continue + w = np.asarray(x.data["WAVELENGTH"][0], float) + fl = np.asarray(x.data["FLUX"][0], float) + j = int(np.argmin(np.abs(w - p["obs"]))) + cont = np.median(fl[max(j - 150, 0):j + 150]) + heights.append(fl[j] / cont if cont else float("nan")) + print(r"%s & %s & %.2f & %.2f & %d/%d & %d & %.1f \\ %% peak/continuum up to %.2f in %d exposures" % ( + p["star"], p["arm"], p["rest"], p["obs"], p["n"], t.get("exposures", 0), p["nights"], p["z"], + max(heights) if heights else float("nan"), len(heights))) + + +if __name__ == "__main__": + import warnings + warnings.filterwarnings("ignore") + table_lamost() + M = fetch_mags() + table_limits(limits(M)) diff --git a/papers/survey_lasers/survey_lasers.pdf b/papers/survey_lasers/survey_lasers.pdf new file mode 100644 index 0000000000000000000000000000000000000000..02de753372973e9c904fc465b9346086b40b2e20 Binary files /dev/null and b/papers/survey_lasers/survey_lasers.pdf differ diff --git a/papers/survey_lasers/survey_lasers.tex b/papers/survey_lasers/survey_lasers.tex new file mode 100644 index 0000000000000000000000000000000000000000..abef253fa92b0986262cef1245a03c0df5b6d354 --- /dev/null +++ b/papers/survey_lasers/survey_lasers.tex @@ -0,0 +1,431 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{A Search for Laser Lines in Five Large Spectroscopic Surveys\\ of Nearby Stars} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +A laser aimed at Earth from another star adds an unresolved emission line to the +star's spectrum. The large spectroscopic surveys now hold spectra of tens of thousands of +stars within $100$\,pc, taken for stellar parameters and abundances, and none has been +searched for such lines. We search five: the Gaia DR3 mean RVS spectra of $2363$ FGK +stars within $75$\,pc ($846$ to $870$\,nm), GALAH DR4 spectra of $621$ dwarfs within +$100$\,pc ($471$ to $789$\,nm in four windows), APOGEE DR17 combined spectra and +$14178$ visits of $3370$ dwarfs within $100$\,pc ($1.51$ to $1.70$\um, including the +$1530$ to $1565$\,nm band of terrestrial fibre-optic lasers), DESI DR1 spectra of $7705$ +stars within $100$\,pc ($360$ to $982$\,nm), and LAMOST DR10 medium-resolution spectra +of $14400$ stars within $100$\,pc in $35179$ observations. Each spectrum is modelled by a +non-negative combination of the most similar spectra of its survey, so a narrow emission +line that they lack cannot be fitted away, and emission-like residuals are judged against +the absorption-like residuals of the same spectra. No emission line above that null +remains in the Gaia, APOGEE and multi-exposure DESI spectra; every GALAH candidate is +instrumental; and in LAMOST the $19$ features that recur in two exposures of single +stars are one or two pixels wide where the instrument's profile spans six, detector +pixels and not light. From each spectrum's noise and the star's magnitude, a line at the +detection threshold carries a median of $2\times10^{-16}$\,erg\,cm$^{-2}$\,s$^{-1}$ in +APOGEE and DESI and $1$ to $3\times10^{-15}$ in GALAH, Gaia and LAMOST, the flux of a +transmitter of $10^{19}$ to $10^{20}$\,W radiating isotropically or of $5$\,kW to +$70$\,kW behind a $10$\,m aperture at the median star, and of $5$ to $50$\,W at the +nearest. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Schwartz and Townes proposed that a civilization could signal with optical masers, whose +light, confined to a narrow beam and a narrow band, would outshine its star at that +wavelength~\cite{SchwartzTownes1961}. A laser aimed at Earth would add an unresolved +emission line to the star's spectrum; from a $10$\,m aperture the beam is a few +hundredths of an astronomical unit wide at $10$\,pc and about one at $100$\,pc, so it +has to be held on the Earth's position when the light arrives. Searches have looked for +such lines in the high-resolution spectra of radial-velocity programmes: $577$ FGKM +stars with Keck/HIRES~\cite{ReinesMarcy2002}, $2796$ stars at $3640$ to +$7890$\,\AA~\cite{TellisMarcy2015}, $5600$ FGKM stars with thresholds of +megawatts~\cite{TellisMarcy2017}, $388$ stars with the Automated Planet +Finder~\cite{Zuckerman2023}, and $2821$ stars in archival HARPS spectra, where three +candidates in two M dwarfs and a red giant remain to be explained by the stars +themselves~\cite{FieldsGoodman2025}. + +The spectroscopic surveys of the last decade observe many more nearby stars, at lower +resolution and over different wavelengths: the Gaia RVS spectra near the calcium triplet, +GALAH's four optical windows, APOGEE's $H$ band, which contains the $1530$ to $1565$\,nm +band in which Earth's fibre-optic lasers operate, and the wide optical coverage of DESI +and LAMOST. Their spectra are taken in many fibres at once and reduced in bulk, so a +search must tell a line in a star from the defects of fibres, detectors and sky +subtraction. This paper searches the nearby stars of all five surveys with methods that +compare each spectrum with others of the same survey. + +\subsection{Contributions} +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item A search for unresolved emission lines in the spectra of nearby stars from Gaia +DR3, GALAH DR4, APOGEE DR17, DESI DR1 and LAMOST DR10, about $28000$ stars counted +survey by survey. +\item Comparison-spectrum models in which a narrow line that the comparison stars lack +cannot be fitted away, with each spectrum's own absorption-like residuals as the null. +\item The instrumental and terrestrial features of each survey that mimic a line, each +turned into a test. +\item The line flux at each survey's threshold, star by star, from the spectrum's noise +and the star's Gaia or 2MASS magnitude, as an isotropic luminosity and as the power of a +$10$\,m transmitter aimed at Earth. +\end{enumerate} + +% ============================================================================= +\section{Data and method}\label{sec:method} +% ============================================================================= + +\emph{The common method.} Each spectrum is divided by its upper envelope or continuum and +fitted, window by window, as a non-negative combination of the spectra of its most +similar stars in the same survey, with a signed continuum and signed first and second +derivatives of the fitted model, which absorb small differences of velocity and line +width. A narrow emission line in the target cannot be reproduced unless a comparison +spectrum carries it. The residual is searched with a matched filter of the instrument's +line profile, and peaks of both signs are kept: the absorption-like peaks arise from the +same imperfections of the model and the data as false emission-like ones, and serve as +their null. A peak of unresolved width is then +tested against the same position in other stars, in the stellar rest frame (a stellar +line the model misses) and in the observatory frame (sky, telluric and instrumental +features). + +\emph{Gaia RVS.} The mean RVS spectra of Gaia DR3~\cite{Gaia2023,Katz2023}, $846$ to +$870$\,nm at a resolving power of $11500$, of the $2363$ FGK stars within $75$\,pc that +have one, are each fitted by their $25$ nearest neighbours in colour and absolute +magnitude. A positive peak counts only above every absorption-like peak of its +environment, and is tested against the cores of the \ion{Ca}{ii} triplet and the Paschen +lines, the same position in other stars, and deblended neighbours. + +\emph{GALAH.} GALAH DR4~\cite{Buder2024} gives $699$ spectra of $621$ dwarfs within +$100$\,pc, at a resolving power of $28000$ in four windows from $471$ to $789$\,nm. Each +spectrum, camera by camera, is fitted by the $20$ sample spectra nearest in effective +temperature, gravity and metallicity; a candidate is then measured in the other fibres of +the same exposure. + +\emph{APOGEE.} APOGEE DR17~\cite{Majewski2017,Abdurrouf2022} holds $H$-band spectra at a +resolving power of $22500$. For the $3370$ dwarfs within $100$\,pc with three or more +visits, the combined spectrum is fitted in $256$-pixel windows by its $12$ most similar +stars, and peaks under bright subtracted sky are OH airglow. Separately, each of the +$14178$ visits is divided by the star's median visit, which cancels anything present in +every visit, and lines that recur in several visits at one rest wavelength but at +different observatory wavelengths are grouped; detector dropouts that depress the median +are masked. + +\emph{DESI.} The DESI DR1~\cite{DESI2025} Milky Way Survey~\cite{Cooper2023} spectra of +$7718$ stars with Gaia parallaxes of $10$ to $800$\,mas and S/N above $20$, $6266$ of +them cooler than $3500$\,K and $455$ white dwarfs, are fitted by their $12$ most similar +spectra; each candidate is checked exposure by exposure, since a coadd of several +exposures can carry a cosmic ray or a defect of one of them. + +\emph{LAMOST.} LAMOST DR10's medium-resolution survey~\cite{Cui2012,Liu2020} observes +$495$ to $535$ and $630$ to $680$\,nm at a resolving power of $7500$ in several +exposures a night. In the $35179$ observations of $14400$ Gaia DR3 stars within +$100$\,pc with declination above $-15^\circ$ and $G<15$, a peak counts at $6\sigma$ +above the local continuum with an unresolved width in a single exposure, and persists +when two exposures hold it within a third of a resolution element in the star's frame. +A feature is explained by an arm's end, by sharing with other stars in the stellar or +the instrument's frame, by recurrence in the same or neighbouring fibres of a +spectrograph, by instrument-frame recurrence on other nights, or by light in +neighbouring fibres of the same exposure, and what remains is set against the +coincidences of two exposures that chance makes and read again at its peak pixel in +every exposure of its star: a feature narrower than half the instrumental profile is a +detector pixel, one whose exposures peak more than half a resolution element apart is +not one feature, and one held by a single exposure of a night whose other exposures are +flat is a cosmic ray. + +\emph{Flux limits.} Each search's threshold is a matched-filter significance $k$ in a +residual that is in units of the continuum: $k=5$ for the Gaia, APOGEE and DESI +searches, $5.5$ for GALAH and $6$ for a LAMOST exposure. An unresolved line whose +filter response sits at the threshold has a peak of $k\sigma/g$ of the continuum, with +$\sigma$ the spectrum's noise per pixel and $g$ the filter's gain, and a flux +$F=(k\sigma/g)\sqrt{2\pi}\,\sigma_\lambda F_\lambda$, with $\sigma_\lambda$ the +Gaussian width of the line profile and $F_\lambda$ the star's continuum flux density, +which we take from its Gaia BP, G and RP magnitudes, interpolated in wavelength in the +Vega system, and from its 2MASS $H$ magnitude for APOGEE. For Gaia the noise is that of +each star's residual; for GALAH, APOGEE and DESI it is the survey's per-pixel +signal-to-noise ratio of each camera or of the combined spectrum; for LAMOST it is the +per-exposure ratio of each arm, read from the headers of a random $1500$ of the +$35{,}179$ observations. An isotropic source at the star's Gaia distance $d$ then has +$L=4\pi d^2F$, and a transmitter aimed at Earth through a diffraction-limited $10$\,m +aperture needs $P=F d^2(\lambda/10\,\mathrm{m})^2$. These are thresholds, not +completeness limits: in the ultraviolet search of the same kind, lines injected into +archival spectra were recovered at $90$ per cent of the attainable fraction at $3$ to +$5$ times the nominal threshold, and the same factor applies here, since the same +envelopes, masks and comparison fits intervene. + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{4pt} +\caption{The surveys searched and their results. The null is the set of absorption-like +residual peaks found by the same method in the same spectra.} +\label{tab:surveys} +\begin{tabular}{l l r r >{\raggedright\arraybackslash}p{0.31\textwidth}} +\toprule +Survey & Range & $R$ & Stars & Result \\ +\midrule +Gaia DR3 RVS & $846$--$870$\,nm & $11500$ & $2363$ & no line above the null \\ +GALAH DR4 & $471$--$789$\,nm & $28000$ & $621$ & every candidate instrumental \\ +APOGEE DR17, combined & $1.51$--$1.70$\um & $22500$ & $3370$ & no line above the null; one peak above it is OH airglow \\ +APOGEE DR17, visits & $1.51$--$1.70$\um & $22500$ & $3370$ & $3431$ recurring emission-like groups against $3410$ absorption-like \\ +DESI DR1 & $360$--$982$\,nm & $2000$--$5000$ & $7705$ & coadds of two or more exposures match the null \\ +LAMOST DR10 MRS & $495$--$535$, $630$--$680$\,nm & $7500$ & $14400$ & $19$ two-exposure features, all detector pixels \\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +Table~\ref{tab:surveys} summarises the results. + +\emph{Gaia RVS and APOGEE.} No emission-like peak in the RVS spectra rises above the +absorption-like null. In the APOGEE combined spectra no emission-like peak exceeds the +null either in the continuum or inside stellar lines, once OH airglow is masked where the +visits' subtracted sky was bright; the one peak above the null was such airglow. In the +visit-to-visit search the recurring emission-like groups number $3431$ against $3410$ +absorption-like ones, and the strongest, $48.2$, falls below the strongest absorption-like +group, $67.0$. + +\emph{GALAH.} Every GALAH candidate is instrumental: pixels that several stars share in +the observatory frame, charge persistence in one fibre from a bright earlier exposure, +cosmic rays, and a ghost in the blue camera. + +\emph{DESI.} The $1091$ stars with three or more exposures match the absorption-like null +in the continuum. Every peak above the null in them, and in the $1878$ coadds of two +exposures, vetted exposure by exposure, is a cosmic ray in one exposure, a corrupt +exposure, an OH residual, or a mismatch of the comparison spectra in a telluric band or +in a white dwarf's Paschen lines. The $4749$ stars with a single exposure, $62$ per cent +of the sample, have no second exposure to separate a line from a cosmic ray, so for them +the search ends at the peak list: their emission-like peaks are as numerous as their +absorption-like ones, and they are not searched in the sense the others are. + +\emph{LAMOST.} The single exposures hold $12261$ unresolved spikes at $6\sigma$, and $110$ +persist in two exposures in the star's frame. Arm ends, lines shared in the stellar or +the instrument's frame (sky residuals moved by the heliocentric correction), defects of +the same or neighbouring fibres, recurrence in the instrument's frame on other nights and +light in neighbouring fibres of the same exposures explain $91$; the $19$ left +(Table~\ref{tab:lamost}) lie in single stars, mostly in two of many exposures. The +strongest, at $241\sigma$ in three exposures of one night of a K dwarf, lies a few +pixels from a block of pixels at $1800$ times the continuum in all five exposures of +that night, with the pipeline's variance there inflated a thousandfold: a defect of +those extractions, absent from the star's $178$ other exposures, against which the +residual's scatter was measured. The other $18$ are as many as the $17$ coincidences +of two exposures that chance makes, and read at the peak pixel in every exposure of +their stars, all $19$ are detector pixels: each rises above half its excess over one or +two pixels, where the instrumental profile's full width at half maximum is $5.6$ to +$6.5$ pixels, so no light passing through the spectrograph made it. Six of them sit as +well on masked, variance-inflated or dead pixels, eight have exposures whose peaks lie +more than half a resolution element apart, four fill one night and none of the star's +other nights, and three are single exposures of nights whose other exposures are flat. + +\emph{Flux limits.} Table~\ref{tab:limits} gives the line flux at each survey's +threshold. The near-infrared and the deep DESI coadds reach $2\times10^{-16}$\,erg\,cm$^{-2}$\,s$^{-1}$ +at the median star and the optical surveys of brighter stars $1$ to +$3\times10^{-15}$; as isotropic luminosities at the stars' distances these are $10^{19}$ +to $2\times10^{20}$\,W, and as transmitters behind a $10$\,m aperture aimed at Earth +$5$ to $70$\,kW at the median star, $300$\,W at the DESI stars within $20$\,pc and $5$ +to $50$\,W at the nearest star of each survey. The thresholds of Tellis and Marcy's +search, megawatts for a $10$\,m aperture at their stars' distances~\cite{TellisMarcy2017}, +are reached here at every survey's median star, with the three-to-five-fold completeness +factor of the previous paragraph still to be applied. + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{4pt} +\caption{The line flux at each search's threshold: the median over the stars (for +GALAH, DESI and LAMOST over the cameras, arms and exposures) of $F$, of the isotropic +luminosity $L$ at the star's distance and of the power $P_{10\,\rm m}$ of a $10$\,m +transmitter aimed at Earth; the number of stars within $20$\,pc; and $P_{10\,\rm m}$ at +the nearest star. The LAMOST row is from the $1163$ stars among a random $1500$ +observations whose headers were read. APOGEE's $P_{10\,\rm m}$ is larger than DESI's at +a smaller flux because the beam at $1.6$\um\ is five times wider.} +\label{tab:limits} +\begin{tabular}{l r r r r r r} +\toprule +Survey & Stars & $F$ (erg\,cm$^{-2}$\,s$^{-1}$) & $L$ (W) & $P_{10\,\rm m}$ (W) & $N_{<20\,\rm pc}$ & $P_{10\,\rm m}$, nearest (W) \\ +\midrule +Gaia DR3 RVS & $2363$ & $2.9\times10^{-15}$ & $1.2\times10^{20}$ & $7\times10^{4}$ & $27$ & $3.5\times10^{4}$ ($7.2$\,pc) \\ +GALAH DR4 & $621$ & $1.3\times10^{-15}$ & $1.1\times10^{20}$ & $3\times10^{4}$ & $4$ & $50$ ($4.3$\,pc) \\ +APOGEE DR17 & $2931$ & $1.6\times10^{-16}$ & $1.1\times10^{19}$ & $2\times10^{4}$ & $4$ & $2.5\times10^{3}$ ($13.8$\,pc) \\ +DESI DR1 & $7718$ & $2.1\times10^{-16}$ & $1.4\times10^{19}$ & $5\times10^{3}$ & $96$ & $5$ ($3.6$\,pc) \\ +LAMOST DR10 MRS & $1163$ & $3.0\times10^{-15}$ & $2.0\times10^{20}$ & $5\times10^{4}$ & $20$ & $4\times10^{3}$ ($16$\,pc) \\ +\bottomrule +\end{tabular} +\end{table} + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{5pt} +\caption{The $19$ LAMOST features that pass the tests against other stars, fibres and +nights: the star, the arm, the rest and observed wavelengths (air), the exposures +holding the feature against the star's exposures, the nights they span, and the largest +single-exposure significance. Each is one or two pixels wide.} +\label{tab:lamost} +\begin{tabular}{l l r r r r r} +\toprule +Gaia DR3 & Arm & $\lambda_{\rm rest}$ (\AA) & $\lambda_{\rm obs}$ (\AA) & Exposures & Nights & $z$ \\ +\midrule +4420231361513433344 & B & 4947.67 & 4947.83 & 2/6 & 1 & 9.5 \\ +1407678284339274368 & B & 5102.09 & 5102.55 & 2/8 & 1 & 9.4 \\ +1407678284339274368 & B & 5134.99 & 5135.46 & 2/8 & 1 & 8.3 \\ +608182831000585728 & B & 5269.81 & 5270.60 & 2/30 & 1 & 7.8 \\ +815877833000303488 & B & 5290.17 & 5289.98 & 2/238 & 2 & 9.1 \\ +1295249440828061696 & B & 5331.15 & 5331.32 & 3/160 & 1 & 20.0 \\ +1894835705805757824 & B & 5344.89 & 5345.21 & 2/152 & 2 & 17.8 \\ +64953069592851328 & R & 6307.36 & 6306.18 & 2/124 & 2 & 11.1 \\ +1898531439263850240 & R & 6322.92 & 6323.26 & 5/106 & 1 & 14.5 \\ +814125692502763904 & R & 6335.08 & 6335.53 & 2/214 & 2 & 22.4 \\ +687208343753227520 & R & 6433.52 & 6433.98 & 2/52 & 2 & 28.2 \\ +1547717514092903424 & R & 6551.41 & 6550.29 & 2/196 & 2 & 9.9 \\ +2556424771496343424 & R & 6626.80 & 6626.62 & 2/76 & 2 & 9.0 \\ +1915323176544379520 & R & 6728.65 & 6729.16 & 2/180 & 2 & 11.7 \\ +779262652684989312 & R & 6756.41 & 6756.55 & 2/174 & 2 & 6.5 \\ +3872246689058776832 & R & 6764.64 & 6774.04 & 2/123 & 2 & 33.0 \\ +1386361674454950912 & R & 6772.31 & 6772.58 & 3/183 & 1 & 241.4 \\ +161252970877957632 & R & 6783.43 & 6783.15 & 4/34 & 1 & 7.0 \\ +986071444021690112 & R & 6801.65 & 6802.17 & 4/22 & 1 & 21.1 \\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +\emph{Laser searches.} The searches of Section~\ref{sec:intro} use high-resolution +spectra of radial-velocity programmes~\cite{ReinesMarcy2002,TellisMarcy2015,TellisMarcy2017,Zuckerman2023,FieldsGoodman2025}, +and the HARPS search, the largest of them, ends as this one does with a handful of +features in stars whose own spectra are the first thing to exclude. We find no earlier +laser search of Gaia, GALAH, APOGEE, DESI or LAMOST spectra. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No unresolved emission line that a laser aimed at Earth could produce is found in the +nearby stars of five large spectroscopic surveys, beyond what the surveys' instruments, +the sky and chance produce. The surveys extend the earlier laser searches to tens of +thousands of stars, to the near infrared and to the telecommunications band. + +The limits are thresholds in each spectrum's noise, turned into fluxes by the stars' +magnitudes, and apply to lines that are steady in the combined spectra or that recur in +the exposures available: $10^{19}$ to $10^{20}$\,W isotropic at the median star, +kilowatts to tens of kilowatts behind a $10$\,m aperture, watts at the nearest stars. +A line inside a strong stellar line, one in the telluric bands that +the models fit away, or one that was off when the spectra were taken is not constrained; +the $62$ per cent of DESI stars with a single exposure need a second, and injecting +lines into the archival spectra, as the ultraviolet search did, would turn these +thresholds into completeness limits survey by survey. + +\section*{Acknowledgements} + +This work uses data from the European Space Agency mission Gaia, processed by the Gaia +Data Processing and Analysis Consortium; from the GALAH survey, based on observations at +the Anglo-Australian Telescope; from SDSS-IV's APOGEE; from the Dark Energy Spectroscopic +Instrument, retrieved through NOIRLab's SPARCL; and from the Large Sky Area Multi-Object +Fiber Spectroscopic Telescope (LAMOST), funded by the National Development and Reform +Commission and operated by the National Astronomical Observatories, Chinese Academy of +Sciences. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{SchwartzTownes1961} +R.~N. Schwartz and C.~H. Townes, Interstellar and interplanetary communication by +optical masers, \emph{Nature} \textbf{190}, 205 (1961). + +\bibitem{ReinesMarcy2002} +A.~E. Reines and G.~W. Marcy, Optical search for extraterrestrial intelligence: a +spectroscopic search for laser emission from nearby stars, \emph{Publ. Astron. Soc. +Pac.} \textbf{114}, 416 (2002). + +\bibitem{TellisMarcy2015} +N.~K. Tellis and G.~W. Marcy, A search for optical laser emission using Keck HIRES, +\emph{Publ. Astron. Soc. Pac.} \textbf{127}, 540 (2015). + +\bibitem{TellisMarcy2017} +N.~K. Tellis and G.~W. Marcy, A search for laser emission with megawatt thresholds from +5600 FGKM stars, \emph{Astron. J.} \textbf{153}, 251 (2017). + +\bibitem{Zuckerman2023} +A.~Zuckerman, Z.~Ko, H.~Isaacson, et al., The Breakthrough Listen search for +intelligent life: a laser search pipeline for the Automated Planet Finder, +\emph{Astron. J.} \textbf{165}, 114 (2023). + +\bibitem{FieldsGoodman2025} +B.~Fields and J.~C. Goodman, A 2821 star optical SETI survey using ESO HARPS archival +data, arXiv:2508.08628 (2025). + +\bibitem{Gaia2023} +Gaia Collaboration, A.~Vallenari, A.~G.~A. Brown, et al., Gaia Data Release 3: summary +of the content and survey properties, \emph{Astron. Astrophys.} \textbf{674}, A1 (2023). + +\bibitem{Katz2023} +D.~Katz, P.~Sartoretti, A.~Guerrier, et al., Gaia Data Release 3: properties and +validation of the radial velocities, \emph{Astron. Astrophys.} \textbf{674}, A5 (2023). + +\bibitem{Buder2024} +S.~Buder, J.~Kos, E.~X. Wang, et al., The GALAH survey: data release 4, +arXiv:2409.19858 (2024). + +\bibitem{Majewski2017} +S.~R. Majewski, R.~P. Schiavon, P.~M. Frinchaboy, et al., The Apache Point Observatory +Galactic Evolution Experiment (APOGEE), \emph{Astron. J.} \textbf{154}, 94 (2017). + +\bibitem{Abdurrouf2022} +Abdurro'uf, K.~Accetta, C.~Aerts, et al., The seventeenth data release of the Sloan +Digital Sky Surveys, \emph{Astrophys. J. Suppl.} \textbf{259}, 35 (2022). + +\bibitem{DESI2025} +DESI Collaboration, M.~Abdul-Karim, A.~G. Adame, et al., Data release 1 of the Dark +Energy Spectroscopic Instrument, arXiv:2503.14745 (2025). + +\bibitem{Cooper2023} +A.~P. Cooper, S.~E. Koposov, C.~Allende Prieto, et al., Overview of the DESI Milky Way +Survey, \emph{Astrophys. J.} \textbf{947}, 37 (2023). + +\bibitem{Cui2012} +X.-Q. Cui, Y.-H. Zhao, Y.-Q. Chu, et al., The Large Sky Area Multi-Object Fiber +Spectroscopic Telescope (LAMOST), \emph{Res. Astron. Astrophys.} \textbf{12}, 1197 +(2012). + +\bibitem{Liu2020} +C.~Liu, J.~Fu, J.~Shi, et al., LAMOST medium-resolution spectroscopic survey +(LAMOST-MRS): scientific goals and survey plan, arXiv:2005.07210 (2020). + +\end{thebibliography} + +\end{document} diff --git a/papers/uv_lasers/data/cos_laser.json b/papers/uv_lasers/data/cos_laser.json new file mode 100644 index 0000000000000000000000000000000000000000..69c392c32f07f9317f95f3f4f758ce55632c9f57 --- /dev/null +++ b/papers/uv_lasers/data/cos_laser.json @@ -0,0 +1,577 @@ +{ + "sign": 0, + "spectra": 1138, + "stars": 44, + "peaks": 280, + "persistent": [ + { + "star": "HD 285968", + "grating": "G130M", + "lam": 1351.7487941175882, + "n": 2, + "p": 8.195284873245789e-17, + "fppos": [ + 1, + 2 + ], + "disp": 0.009967270951312925, + "rest": 1351.6305076929184, + "stars_rest": 6, + "stars_obs": 3, + "template_counts": 68369.0, + "template_p": 0.0 + }, + { + "star": "* 70 Oph A", + "grating": "G160M", + "lam": 1472.953828416718, + "n": 2, + "p": 2.074459097764575e-14, + "fppos": [ + 2, + 3 + ], + "disp": 0.012227971311925313, + "rest": 1473.0016358432702, + "stars_rest": 4, + "stars_obs": 4, + "template_counts": 30412.0, + "template_p": 0.0 + }, + { + "star": "BD-15 6290", + "grating": "G160M", + "lam": 1504.73742628041, + "n": 2, + "p": 9.878456032822324e-12, + "fppos": [ + 1, + 3 + ], + "disp": 0.012234750423149995, + "rest": 1504.7448046343472, + "stars_rest": 1, + "stars_obs": 1, + "template_counts": 3829.0, + "template_p": 2.8307557560717306e-22 + }, + { + "star": "* 61 Cyg A", + "grating": "G130M", + "lam": 1311.0638206188987, + "n": 2, + "p": 3.859820064164489e-10, + "fppos": [ + 3, + 4 + ], + "disp": 0.00996535246625627, + "rest": 1311.3517303664237, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 15219.0, + "template_p": 0.0 + }, + { + "star": "* 61 Cyg A", + "grating": "G130M", + "lam": 1351.370890941756, + "n": 2, + "p": 1.861775194405855e-82, + "fppos": [ + 3, + 4 + ], + "disp": 0.009965352537696075, + "rest": 1351.667652125998, + "stars_rest": 6, + "stars_obs": 0, + "template_counts": 68243.0, + "template_p": 0.0 + }, + { + "star": "* 61 Cyg A", + "grating": "G130M", + "lam": 1363.8608378023487, + "n": 2, + "p": 1.7773417493499637e-13, + "fppos": [ + 3, + 4 + ], + "disp": 0.00996535246625627, + "rest": 1364.1603417801837, + "stars_rest": 4, + "stars_obs": 1, + "template_counts": 11586.0, + "template_p": 0.0 + }, + { + "star": "* eps Eri", + "grating": "G130M", + "lam": 1330.9973349692364, + "n": 3, + "p": 3.505300490573458e-15, + "fppos": [ + 3, + 4 + ], + "disp": 0.009965320433449406, + "rest": 1330.9246339348251, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 1578.0, + "template_p": 0.00043124601907163515, + "id": "Cr II 1330.934 (+2 km/s)" + }, + { + "star": "* eps Eri", + "grating": "G130M", + "lam": 1357.1948292928955, + "n": 2, + "p": 7.259426896912523e-15, + "fppos": [ + 3, + 4 + ], + "disp": 0.009968910431139573, + "rest": 1357.1206973127669, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 3570.0, + "template_p": 2.721103008365423e-101 + }, + { + "star": "* eps Eri", + "grating": "G130M", + "lam": 1357.2060474128507, + "n": 2, + "p": 3.570553166081518e-15, + "fppos": [ + 3, + 4 + ], + "disp": 0.00996532056600746, + "rest": 1357.1319148199718, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 3570.0, + "template_p": 2.721103008365423e-101 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1437.050538466583, + "n": 7, + "p": 3.407121478452826e-23, + "fppos": [ + 1, + 3 + ], + "disp": 0.012243921832505854, + "rest": 1436.9720446500269, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 796.0, + "template_p": 4.3645750821655285e-34 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1467.481410978714, + "n": 7, + "p": 8.146553354324041e-58, + "fppos": [ + 1, + 3 + ], + "disp": 0.012236223386375204, + "rest": 1467.4012549830898, + "stars_rest": 1, + "stars_obs": 1, + "template_counts": 1199.0, + "template_p": 3.120293289534109e-48 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1467.4872284079668, + "n": 7, + "p": 8.146553354324041e-58, + "fppos": [ + 1, + 3 + ], + "disp": 0.012227024014536998, + "rest": 1467.407072094586, + "stars_rest": 1, + "stars_obs": 1, + "template_counts": 1199.0, + "template_p": 3.120293289534109e-48 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1468.4851905715375, + "n": 4, + "p": 9.833810328831414e-19, + "fppos": [ + 1, + 3 + ], + "disp": 0.0122421947589344, + "rest": 1468.4049797479938, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 812.0, + "template_p": 6.028841304325174e-05, + "id": "C I 1468.410 (+1 km/s)" + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1470.1783293949356, + "n": 8, + "p": 6.354229265320203e-82, + "fppos": [ + 1, + 3 + ], + "disp": 0.012243836226286484, + "rest": 1470.0980260896563, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 902.0, + "template_p": 2.3434841569855002e-65 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1470.1814266776523, + "n": 8, + "p": 6.354229265320203e-82, + "fppos": [ + 1, + 3 + ], + "disp": 0.012240994606676284, + "rest": 1470.101123203195, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 902.0, + "template_p": 2.3434841569855002e-65 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1474.0693219603356, + "n": 10, + "p": 1.4959589789408936e-96, + "fppos": [ + 1, + 3 + ], + "disp": 0.012240957900740162, + "rest": 1473.9888061233125, + "stars_rest": 3, + "stars_obs": 3, + "template_counts": 2095.0, + "template_p": 2.3124816768566207e-36 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1474.0829648962067, + "n": 10, + "p": 1.4959589789408936e-96, + "fppos": [ + 1, + 3 + ], + "disp": 0.012243827701051483, + "rest": 1474.0024483139864, + "stars_rest": 3, + "stars_obs": 0, + "template_counts": 2095.0, + "template_p": 5.375266485981167e-73 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1542.2695279248883, + "n": 6, + "p": 1.3368067697005428e-104, + "fppos": [ + 1, + 3 + ], + "disp": 0.012240957900740162, + "rest": 1542.1852868921865, + "stars_rest": 1, + "stars_obs": 1, + "template_counts": 867.0, + "template_p": 3.676421360951215e-64 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1553.45987937671, + "n": 9, + "p": 1.494184852141314e-23, + "fppos": [ + 1, + 3 + ], + "disp": 0.012239202514910192, + "rest": 1553.3750271105334, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 457.0, + "template_p": 7.183133996622962e-11 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1554.7788543225338, + "n": 4, + "p": 2.6090738003722204e-14, + "fppos": [ + 1, + 3 + ], + "disp": 0.012249745244292976, + "rest": 1554.6939300120034, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 601.0, + "template_p": 3.19061951692324e-29 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1568.2822984283084, + "n": 3, + "p": 5.384370889402261e-23, + "fppos": [ + 1, + 3 + ], + "disp": 0.012244767959573391, + "rest": 1568.1966365397764, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 516.0, + "template_p": 6.682155066215792e-08 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1592.5166549378625, + "n": 3, + "p": 4.636955033856903e-147, + "fppos": [ + 1, + 3 + ], + "disp": 0.012244767959573391, + "rest": 1592.4296693330914, + "stars_rest": 3, + "stars_obs": 1, + "template_counts": 1025.0, + "template_p": 2.797319330603748e-131 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1595.0390861738197, + "n": 6, + "p": 8.124810982640317e-18, + "fppos": [ + 1, + 3 + ], + "disp": 0.012242855386257747, + "rest": 1594.95196279014, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 1020.0, + "template_p": 1.4459971824656682e-13 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1603.0563937593283, + "n": 9, + "p": 1.824217210926817e-69, + "fppos": [ + 1, + 3 + ], + "disp": 0.012234548783551812, + "rest": 1602.9688324585022, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 1218.0, + "template_p": 6.185347999432249e-73 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1603.0629653521848, + "n": 6, + "p": 1.824217210926817e-69, + "fppos": [ + 1, + 3 + ], + "disp": 0.012249744074147684, + "rest": 1602.9754036924087, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 1218.0, + "template_p": 6.185347999432249e-73 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1632.764700883468, + "n": 6, + "p": 2.593421192789837e-31, + "fppos": [ + 1, + 3 + ], + "disp": 0.012244364006403208, + "rest": 1632.6755168711595, + "stars_rest": 3, + "stars_obs": 0, + "template_counts": 1117.0, + "template_p": 9.940616365118925e-73 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1632.772393122295, + "n": 5, + "p": 2.593421192789837e-31, + "fppos": [ + 1, + 3 + ], + "disp": 0.01224919776163019, + "rest": 1632.683208689825, + "stars_rest": 3, + "stars_obs": 0, + "template_counts": 1117.0, + "template_p": 9.940616365118925e-73 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1637.5102197023361, + "n": 2, + "p": 8.013398224309098e-27, + "fppos": [ + 1, + 3 + ], + "disp": 0.012245915733736715, + "rest": 1637.4207764828018, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 874.0, + "template_p": 9.464123059076697e-35 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1740.401152185913, + "n": 9, + "p": 4.791961914860322e-38, + "fppos": [ + 1, + 3 + ], + "disp": 0.012249449695319806, + "rest": 1740.306088912133, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 184.0, + "template_p": 3.607561459309725e-14 + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1769.8712564315736, + "n": 2, + "p": 4.262790254463391e-13, + "fppos": [ + 1, + 3 + ], + "disp": 0.012245915733736715, + "rest": 1769.7745834573032, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 45.0, + "template_p": 0.14623338839632125, + "id": "Si I 1769.786 (+2 km/s)" + } + ], + "identified": [ + { + "star": "* eps Eri", + "grating": "G130M", + "lam": 1330.9973349692364, + "n": 3, + "p": 3.505300490573458e-15, + "fppos": [ + 3, + 4 + ], + "disp": 0.009965320433449406, + "rest": 1330.9246339348251, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 1578.0, + "template_p": 0.00043124601907163515, + "id": "Cr II 1330.934 (+2 km/s)" + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1468.4851905715375, + "n": 4, + "p": 9.833810328831414e-19, + "fppos": [ + 1, + 3 + ], + "disp": 0.0122421947589344, + "rest": 1468.4049797479938, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 812.0, + "template_p": 6.028841304325174e-05, + "id": "C I 1468.410 (+1 km/s)" + }, + { + "star": "* eps Eri", + "grating": "G160M", + "lam": 1769.8712564315736, + "n": 2, + "p": 4.262790254463391e-13, + "fppos": [ + 1, + 3 + ], + "disp": 0.012245915733736715, + "rest": 1769.7745834573032, + "stars_rest": 0, + "stars_obs": 0, + "template_counts": 45.0, + "template_p": 0.14623338839632125, + "id": "Si I 1769.786 (+2 km/s)" + } + ] +} \ No newline at end of file diff --git a/papers/uv_lasers/data/fuse_laser.json b/papers/uv_lasers/data/fuse_laser.json new file mode 100644 index 0000000000000000000000000000000000000000..5e56b5356df500bdd126a6cb2b2295ac65824718 --- /dev/null +++ b/papers/uv_lasers/data/fuse_laser.json @@ -0,0 +1,392 @@ +{ + "files": 70, + "objects": 42, + "found": [ + { + "file": "b119050100000all4ttagfcal.fit.gz", + "star": "HD 340611", + "rv": 71.0, + "channel": "2ALIF", + "lam": 1152.4015960567672, + "z": 5.018968839093007, + "sig": 0.05198918156395047, + "amp": 7.944894688979407e-13, + "cover": [ + "1BLIF" + ], + "confirmed": [] + }, + { + "file": "p104130100000all4ttagfcal.fit.gz", + "star": "* alf Aur", + "rv": 29.19, + "channel": "1ALIF", + "lam": 1025.56845497146, + "z": 8.540567575189655, + "sig": 0.0408140349751719, + "amp": 2.351706494528509e-12, + "cover": [ + "2BLIF", + "1ASIC", + "2BSIC" + ], + "confirmed": [] + }, + { + "file": "p104130100000all4ttagfcal.fit.gz", + "star": "* alf Aur", + "rv": 29.19, + "channel": "2ASIC", + "lam": 977.2745396843764, + "z": 7.257131685565487, + "sig": 0.024633843998624307, + "amp": 5.542842590315663e-12, + "cover": [ + "1BSIC" + ], + "confirmed": [] + }, + { + "file": "a022010400000all4ttagfcal.fit.gz", + "star": "V* AD Leo", + "rv": 12.43, + "channel": "2ALIF", + "lam": 1145.5974270207557, + "z": 5.536153860448846, + "sig": 0.04351850234552423, + "amp": 1.591084095331459e-14, + "cover": [ + "1BLIF" + ], + "confirmed": [] + }, + { + "file": "a022010400000all4ttagfcal.fit.gz", + "star": "V* AD Leo", + "rv": 12.43, + "channel": "2ALIF", + "lam": 1163.8181102157023, + "z": 5.1424598713109235, + "sig": 0.04806320883055073, + "amp": 1.667833578180813e-14, + "cover": [ + "1BLIF" + ], + "confirmed": [] + }, + { + "file": "a022010400000all4ttagfcal.fit.gz", + "star": "V* AD Leo", + "rv": 12.43, + "channel": "2ASIC", + "lam": 958.7648590274771, + "z": 5.106954390321358, + "sig": 0.048399676945630674, + "amp": 2.6894273222946683e-14, + "cover": [ + "1BSIC" + ], + "confirmed": [] + }, + { + "file": "c114020100000all4ttagfcal.fit.gz", + "star": "V* EV Lac", + "rv": 0.287, + "channel": "1BLIF", + "lam": 1175.7364536300606, + "z": 9.528394471393195, + "sig": 0.050481805499506115, + "amp": 1.374791981148433e-13, + "cover": [ + "2ALIF" + ], + "confirmed": [] + }, + { + "file": "p118080100000all4ttagfcal.fit.gz", + "star": "HD 197481", + "rv": -4.71, + "channel": "1ASIC", + "lam": 1037.7505466159496, + "z": 7.265305141363729, + "sig": 0.045603323116108214, + "amp": 1.9864523418247317e-13, + "cover": [ + "1ALIF", + "2BLIF", + "2BSIC" + ], + "confirmed": [] + }, + { + "file": "d122010100000all4ttagfcal.fit.gz", + "star": "NAME Proxima Centauri", + "rv": -20.578199, + "channel": "2ALIF", + "lam": 1163.7359962312778, + "z": 5.253902918758387, + "sig": 0.04328299194465104, + "amp": 2.5871721051376716e-14, + "cover": [ + "1BLIF" + ], + "confirmed": [] + } + ], + "left": [], + "chance": 0.5805, + "limits": { + "* bet Ari": { + "flux": 2.9734391100100018e-15, + "plx": 55.6, + "lum": 1.150871224238292e+26, + "file": "a041010100000all4ttagfcal.fit.gz" + }, + "* del Leo": { + "flux": 1.8926031314387595e-15, + "plx": 55.82, + "lum": 7.267702729300061e+25, + "file": "a041030300000all4ttagfcal.fit.gz" + }, + "* iot UMa A": { + "flux": 2.620154218404914e-15, + "plx": 68.001, + "lum": 6.7797475115395065e+25, + "file": "a041040500000all4ttagfcal.fit.gz" + }, + "* iot Cen": { + "flux": 3.548073464290448e-15, + "plx": 56.0571, + "lum": 1.3509790526635783e+26, + "file": "a041050500000all4ttagfcal.fit.gz" + }, + "* alf Cep": { + "flux": 8.629925010487373e-16, + "plx": 66.5, + "lum": 2.3349683403382897e+25, + "file": "a041070800000all4ttagfcal.fit.gz" + }, + "* bet Cas": { + "flux": 1.7109621958834864e-15, + "plx": 59.58, + "lum": 5.767089364158681e+25, + "file": "b072040100000all4ttagfcal.fit.gz" + }, + "* pi.01 UMa": { + "flux": 1.1201759716305656e-15, + "plx": 69.2576, + "lum": 2.7942717630427527e+25, + "file": "d910020100000all4ttagfcal.fit.gz" + }, + "LAWD 23": { + "flux": 2.6177283666891112e-14, + "plx": 58.5336, + "lum": 9.141792793796484e+26, + "file": "b119020100000all4ttagfcal.fit.gz" + }, + "HD 340611": { + "flux": 2.8750439325269553e-14, + "plx": 67.4085, + "lum": 7.570637020013161e+26, + "file": "b119050100000all4ttagfcal.fit.gz" + }, + "HD 166": { + "flux": 1.835255023690456e-15, + "plx": 72.6419, + "lum": 4.161398408217946e+25, + "file": "b130010100000all4ttagfcal.fit.gz" + }, + "HD 43162": { + "flux": 2.713429465351483e-15, + "plx": 59.885, + "lum": 9.053149537453336e+25, + "file": "b130020100000all4ttagfcal.fit.gz" + }, + "* bet Pic": { + "flux": 6.899625144028141e-16, + "plx": 50.9307, + "lum": 3.182610349893142e+25, + "file": "q119010200000all4ttagfcal.fit.gz" + }, + "V* PY Vul": { + "flux": 1.2574867814829684e-15, + "plx": 54.7767, + "lum": 5.014515336773842e+25, + "file": "d101020100000all4ttagfcal.fit.gz" + }, + "V* AB Dor": { + "flux": 8.962850294664696e-16, + "plx": 67.3331, + "lum": 2.365408690494715e+25, + "file": "x025020200000all4ttagfcal.fit.gz" + }, + "* eta Cep": { + "flux": 4.29433271206607e-15, + "plx": 69.5976, + "lum": 1.0607778114765846e+26, + "file": "g015020100000all4ttagfcal.fit.gz" + }, + "* alf Hyi": { + "flux": 1.2027287484976731e-15, + "plx": 51.5547, + "lum": 5.4143762116411654e+25, + "file": "g015030200000all4ttagfcal.fit.gz" + }, + "EGGR 140": { + "flux": 3.799071439885218e-15, + "plx": 51.0992, + "lum": 1.740870730489544e+26, + "file": "g921080100000all4ttagfcal.fit.gz" + }, + "* alf Cir B": { + "flux": 1.223646962651122e-15, + "plx": 60.8225, + "lum": 3.957718194248169e+25, + "file": "h907050600000all4ttagfcal.fit.gz" + }, + "* alf Aur": { + "flux": 5.4867123637833e-15, + "plx": 76.2, + "lum": 1.1306274248578257e+26, + "file": "p104130100000all4ttagfcal.fit.gz" + }, + "EGGR 378": { + "flux": 4.143254480125696e-15, + "plx": 57.7643, + "lum": 1.4857298331929033e+26, + "file": "q210010100000all4ttagfcal.fit.gz" + }, + "* ups And": { + "flux": 1.896429042240256e-15, + "plx": 74.194, + "lum": 4.122078813693507e+25, + "file": "q301010100000all4ttagfcal.fit.gz" + }, + "* 51 Peg": { + "flux": 9.720808358952662e-15, + "plx": 64.4048, + "lum": 2.8040333490312974e+26, + "file": "q301050100000all4ttagfcal.fit.gz" + }, + "V* AD Leo": { + "flux": 1.060398006103902e-15, + "plx": 201.4064, + "lum": 3.1278047428540843e+24, + "file": "a022010400000all4ttagfcal.fit.gz" + }, + "* bet Leo": { + "flux": 3.085338075686079e-15, + "plx": 90.91, + "lum": 4.466802065335735e+25, + "file": "a041020200000all4ttagfcal.fit.gz" + }, + "* bet Hyi": { + "flux": 1.9491169213872846e-15, + "plx": 134.07, + "lum": 1.2974539069205802e+25, + "file": "a083010100000all4ttagfcal.fit.gz" + }, + "* kap01 Cet": { + "flux": 2.021979240781037e-15, + "plx": 107.8023, + "lum": 2.0817947259910464e+25, + "file": "a083030100000all4ttagfcal.fit.gz" + }, + "* bet Com": { + "flux": 1.6268102312029676e-15, + "plx": 108.725, + "lum": 1.6466273606043614e+25, + "file": "a083040100000all4ttagfcal.fit.gz" + }, + "* chi01 Ori": { + "flux": 3.714365403609663e-15, + "plx": 115.43, + "lum": 3.3355272981079763e+25, + "file": "c102020100000all4ttagfcal.fit.gz" + }, + "V* EV Lac": { + "flux": 1.408131644583205e-15, + "plx": 197.9573, + "lum": 4.299495314694407e+24, + "file": "c114020100000all4ttagfcal.fit.gz" + }, + "* alf PsA": { + "flux": 1.0382569822052948e-14, + "plx": 129.81, + "lum": 7.372347972539892e+25, + "file": "d032010100000all4ttagfcal.fit.gz" + }, + "* alf Aql": { + "flux": 3.2002785337700805e-15, + "plx": 194.95, + "lum": 1.0075313408617944e+25, + "file": "d099010100000all4ttagfcal.fit.gz" + }, + "V* DN Dra": { + "flux": 1.58460794599693e-15, + "plx": 91.34, + "lum": 2.2725690087197133e+25, + "file": "d101010200000all4ttagfcal.fit.gz" + }, + "CPD-69 177": { + "flux": 6.452354032330263e-15, + "plx": 96.1834, + "lum": 8.345170298904962e+25, + "file": "d907030100000all4ttagfcal.fit.gz" + }, + "HD 17925": { + "flux": 1.2259116103386986e-15, + "plx": 96.52, + "lum": 1.5744968522894808e+25, + "file": "e161020100000all4ttagfcal.fit.gz" + }, + "* 61 Cyg A": { + "flux": 2.067470700818106e-15, + "plx": 285.9949, + "lum": 3.024405724463785e+24, + "file": "e161040100000all4ttagfcal.fit.gz" + }, + "V* SZ UMa": { + "flux": 1.5003196804011714e-15, + "plx": 110.2305, + "lum": 1.4773980330384532e+25, + "file": "g060010100000all4ttagfcal.fit.gz" + }, + "* alf Cen A": { + "flux": 6.4931552682537215e-15, + "plx": 742.12, + "lum": 1.41066789134006e+24, + "file": "g081040100000all4ttagfcal.fit.gz" + }, + "* bet Gem": { + "flux": 1.709800807688973e-15, + "plx": 96.54, + "lum": 2.195069088607662e+25, + "file": "p118060100000all4ttagfcal.fit.gz" + }, + "HD 197481": { + "flux": 9.370600570913853e-16, + "plx": 102.9432, + "lum": 1.0580090016842641e+25, + "file": "p118080100000all4ttagfcal.fit.gz" + }, + "* i Boo": { + "flux": 1.2276688242709563e-15, + "plx": 79.95, + "lum": 2.29806102014852e+25, + "file": "p247010200000all4ttagfcal.fit.gz" + }, + "BD-15 6290": { + "flux": 1.680091287806875e-15, + "plx": 214.038, + "lum": 4.388017757145731e+24, + "file": "q301040100000all4ttagfcal.fit.gz" + }, + "NAME Proxima Centauri": { + "flux": 1.2444466715905262e-15, + "plx": 768.0665, + "lum": 2.5240381152321767e+23, + "file": "d122010100000all4ttagfcal.fit.gz" + } + } +} \ No newline at end of file diff --git a/papers/uv_lasers/data/iue_laser_45sig.json b/papers/uv_lasers/data/iue_laser_45sig.json new file mode 100644 index 0000000000000000000000000000000000000000..befc19364e9db9e176b3e4e9c4fd4ed501646df7 --- /dev/null +++ b/papers/uv_lasers/data/iue_laser_45sig.json @@ -0,0 +1,833 @@ +{ + "images": 851, + "peaks": 1320, + "persistent": [ + { + "star": "V* AT Mic A", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.9797384558588, + "rest": 2799.4085312300726, + "n": 6, + "of": 6, + "z": 8.298179875460766, + "inst": 0.2798962195239252, + "stars_rest": 11, + "stars_obs": 12 + }, + { + "star": "V* AT Mic A", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.413339563564, + "rest": 2799.8421987637753, + "n": 4, + "of": 6, + "z": 6.0916112812207, + "inst": 0.27994033558946296, + "stars_rest": 1, + "stars_obs": 10 + }, + { + "star": "V* AT Mic A", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.4846236691133, + "rest": 2806.914566162457, + "n": 6, + "of": 6, + "z": 9.2306502537957, + "inst": 0.28064618089216137, + "stars_rest": 2, + "stars_obs": 10 + }, + { + "star": "* kap01 Cet", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.7328299763753, + "rest": 2806.5515978241565, + "n": 8, + "of": 23, + "z": 6.692062208289848, + "inst": 0.28067096214612186, + "stars_rest": 18, + "stars_obs": 9 + }, + { + "star": "* chi01 Ori", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.3892835819415, + "rest": 2806.3359262864087, + "n": 5, + "of": 13, + "z": 8.853276836817637, + "inst": 0.2806203812104439, + "stars_rest": 11, + "stars_obs": 10 + }, + { + "star": "* chi01 Ori", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2798.6640526055835, + "rest": 2798.6108421882604, + "n": 3, + "of": 21, + "z": 5.053688041788692, + "inst": 0.2798657750892657, + "stars_rest": 10, + "stars_obs": 13 + }, + { + "star": "* chi01 Ori", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2805.8247519504366, + "rest": 2805.7714053882264, + "n": 4, + "of": 21, + "z": 5.3425186988745175, + "inst": 0.2805763064291512, + "stars_rest": 6, + "stars_obs": 10 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1810.890503453091, + "rest": 1810.8560733687352, + "n": 3, + "of": 4, + "z": 6.129083263789326, + "inst": 0.1810885898745592, + "stars_rest": 3, + "stars_obs": 4 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1404.718076702634, + "rest": 1404.6913690901172, + "n": 3, + "of": 4, + "z": 5.6756430520015275, + "inst": 0.14046797350186765, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1483.4989054292191, + "rest": 1483.470699973197, + "n": 3, + "of": 4, + "z": 6.1108485270791, + "inst": 0.14834974900540718, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1525.382036787796, + "rest": 1525.3530350165122, + "n": 3, + "of": 4, + "z": 7.198231310050454, + "inst": 0.15253905738696238, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1575.011687894039, + "rest": 1574.9817425245246, + "n": 3, + "of": 4, + "z": 5.5974533765821, + "inst": 0.1575017825443394, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1622.5568437490685, + "rest": 1622.5259944133986, + "n": 3, + "of": 4, + "z": 5.327144909000022, + "inst": 0.16225484532609663, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1670.4260002874873, + "rest": 1670.3942408255043, + "n": 3, + "of": 4, + "z": 6.545902790807123, + "inst": 0.16704312945934555, + "stars_rest": 4, + "stars_obs": 4 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1670.5560601959608, + "rest": 1670.5242982611755, + "n": 3, + "of": 4, + "z": 5.232514498317922, + "inst": 0.16705642616609717, + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1737.8041671860844, + "rest": 1737.771126677033, + "n": 3, + "of": 4, + "z": 5.985048762823691, + "inst": 0.17378020153238982, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1739.1193661009322, + "rest": 1739.0863005862775, + "n": 3, + "of": 4, + "z": 5.604356871012067, + "inst": 0.17391014553242126, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1746.3880034253998, + "rest": 1746.3547997136563, + "n": 3, + "of": 4, + "z": 4.908010160076984, + "inst": 0.1746360396015622, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1755.788917577207, + "rest": 1755.7555351278381, + "n": 3, + "of": 4, + "z": 6.967100488495583, + "inst": 0.1755777440121197, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1805.8953002695205, + "rest": 1805.860965157923, + "n": 3, + "of": 4, + "z": 7.255715369210964, + "inst": 0.18058766894271897, + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1955.919242175434, + "rest": 1955.8820546898442, + "n": 3, + "of": 4, + "z": 5.841693022649411, + "inst": 0.19559154382182906, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1970.2787621898249, + "rest": 1970.241301689669, + "n": 3, + "of": 4, + "z": 9.33657162894416, + "inst": 0.19702669211736112, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1976.8274779741682, + "rest": 1976.7898929646417, + "n": 3, + "of": 4, + "z": 7.552914063940958, + "inst": 0.19767503838002087, + "stars_rest": 0, + "stars_obs": 0, + "other_aperture_z": [ + -0.2, + 0.0, + 0.7, + -0.1 + ], + "aperture_fixed": true, + "forced_rest": [ + "* alf CMi", + "* ksi Boo B", + "V* AT Mic A" + ], + "forced_obs": [ + "* alf CMi", + "* ksi Boo B" + ] + }, + { + "star": "* ksi Boo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.051332204891, + "rest": 2799.25021655979, + "n": 24, + "of": 35, + "z": 9.278193150169134, + "inst": 0.2799030481856571, + "stars_rest": 8, + "stars_obs": 11 + }, + { + "star": "* ksi Boo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.517900786414, + "rest": 2799.7168182929704, + "n": 21, + "of": 35, + "z": 7.942898197905608, + "inst": 0.2799420901522894, + "stars_rest": 1, + "stars_obs": 7 + }, + { + "star": "* ksi Boo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.568344121207, + "rest": 2806.767762591377, + "n": 34, + "of": 35, + "z": 11.693327340481414, + "inst": 0.28065053996162737, + "stars_rest": 5, + "stars_obs": 11 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2052.6237581251426, + "rest": 2052.6080790365745, + "n": 3, + "of": 3, + "z": 5.887899765914517, + "inst": 0.20526231349570304, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2146.8721905122297, + "rest": 2146.8557915014094, + "n": 3, + "of": 3, + "z": 8.725323249249113, + "inst": 0.21469242606579286, + "stars_rest": 2, + "stars_obs": 4 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2391.314903161757, + "rest": 2391.296636960748, + "n": 3, + "of": 3, + "z": 6.797425697809876, + "inst": 0.2391289630465127, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2701.2209069441215, + "rest": 2701.200273507685, + "n": 3, + "of": 3, + "z": 9.660986070522979, + "inst": 0.27012473560329275, + "stars_rest": 2, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2870.934510896139, + "rest": 2870.912581092252, + "n": 3, + "of": 3, + "z": 5.7717173272915, + "inst": 0.28709845099461573, + "stars_rest": 1, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3127.6529116721986, + "rest": 3127.62902090955, + "n": 3, + "of": 3, + "z": 10.615426863031917, + "inst": 0.3127717809129186, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3167.4612275970685, + "rest": 3167.437032756232, + "n": 3, + "of": 3, + "z": 12.443116837820016, + "inst": 0.3167461378697178, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3257.7974145050316, + "rest": 3257.7725296258636, + "n": 3, + "of": 3, + "z": 14.689542580607954, + "inst": 0.32577898208844397, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3313.316409793048, + "rest": 3313.291100828735, + "n": 3, + "of": 3, + "z": 12.412215343745284, + "inst": 0.3313299210159011, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2798.788153671367, + "rest": 2798.987019326325, + "n": 19, + "of": 24, + "z": 6.775377114302794, + "inst": 0.27987374796351455, + "stars_rest": 15, + "stars_obs": 15 + }, + { + "star": "* ksi Boo", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2805.9335715045117, + "rest": 2806.1329448714214, + "n": 15, + "of": 24, + "z": 7.735210661275159, + "inst": 0.2805915800557242, + "stars_rest": 9, + "stars_obs": 9 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.9407092740607, + "rest": 2798.994860636974, + "n": 9, + "of": 13, + "z": 9.205643779693691, + "inst": 0.27989013018112346, + "stars_rest": 16, + "stars_obs": 12 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.4145080936255, + "rest": 2799.468668623167, + "n": 12, + "of": 13, + "z": 11.366747888482452, + "inst": 0.2799337428097474, + "stars_rest": 11, + "stars_obs": 10 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.204837256034, + "rest": 2806.2591291586978, + "n": 4, + "of": 13, + "z": 10.50783971634022, + "inst": 0.2806299980837197, + "stars_rest": 9, + "stars_obs": 11 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.451203676275, + "rest": 2806.5055003454127, + "n": 12, + "of": 13, + "z": 11.864244124574338, + "inst": 0.2806389350811668, + "stars_rest": 16, + "stars_obs": 10 + }, + { + "star": "* 70 Oph", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2798.7513280540516, + "rest": 2798.805475752988, + "n": 10, + "of": 15, + "z": 7.759187030858885, + "inst": 0.2798699123859586, + "stars_rest": 16, + "stars_obs": 16 + }, + { + "star": "* 70 Oph", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2805.9023151726783, + "rest": 2805.9566012224195, + "n": 7, + "of": 15, + "z": 6.568695059117978, + "inst": 0.2805861121193331, + "stars_rest": 11, + "stars_obs": 10 + }, + { + "star": "V* AD Leo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.0837604800795, + "rest": 2798.967709633228, + "n": 4, + "of": 14, + "z": 7.381458787355301, + "inst": 0.2799160955050968, + "stars_rest": 16, + "stars_obs": 10 + }, + { + "star": "V* AD Leo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.6307683973628, + "rest": 2806.5144046493133, + "n": 11, + "of": 14, + "z": 9.010888695064352, + "inst": 0.28065249262714476, + "stars_rest": 17, + "stars_obs": 11 + }, + { + "star": "* eps Ind", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.6230577309802, + "rest": 2798.9968424463623, + "n": 6, + "of": 6, + "z": 8.734774778223352, + "inst": 0.27986090811808334, + "stars_rest": 16, + "stars_obs": 10 + }, + { + "star": "* eps Ind", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.085471817512, + "rest": 2799.459318293022, + "n": 5, + "of": 6, + "z": 9.416659481001739, + "inst": 0.2798977829099557, + "stars_rest": 11, + "stars_obs": 10 + }, + { + "star": "* eps Ind", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.124731110641, + "rest": 2806.499517751181, + "n": 6, + "of": 6, + "z": 11.82322502373765, + "inst": 0.2806098678550018, + "stars_rest": 15, + "stars_obs": 11 + }, + { + "star": "* eps Ind", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2805.614164783909, + "rest": 2805.9888832330976, + "n": 3, + "of": 5, + "z": 10.191712584172933, + "inst": 0.28056030604408677, + "stars_rest": 10, + "stars_obs": 3 + }, + { + "star": "* eps Eri", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.1165290931594, + "rest": 2798.9636372264695, + "n": 8, + "of": 35, + "z": 8.560208311991813, + "inst": 0.27990087778638595, + "stars_rest": 16, + "stars_obs": 11 + }, + { + "star": "* eps Eri", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.6054323164067, + "rest": 2799.4525137451024, + "n": 17, + "of": 35, + "z": 11.71031436659192, + "inst": 0.27996026567524, + "stars_rest": 11, + "stars_obs": 7 + }, + { + "star": "* eps Eri", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.6741510470715, + "rest": 2806.520846371941, + "n": 33, + "of": 35, + "z": 9.431721070285262, + "inst": 0.2806486827511278, + "stars_rest": 17, + "stars_obs": 9 + }, + { + "star": "* eps Eri", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2798.8870740745883, + "rest": 2798.73419474107, + "n": 12, + "of": 31, + "z": 10.283038639824232, + "inst": 0.2798855616192093, + "stars_rest": 14, + "stars_obs": 12 + }, + { + "star": "* eps Eri", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2806.0541233936992, + "rest": 2805.9008525853924, + "n": 23, + "of": 31, + "z": 7.357597463493253, + "inst": 0.28061314845698837, + "stars_rest": 11, + "stars_obs": 12 + }, + { + "star": "* eps Eri", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2806.3637508494303, + "rest": 2806.210463128816, + "n": 6, + "of": 31, + "z": 6.631980860067434, + "inst": 0.28061872013227473, + "stars_rest": 9, + "stars_obs": 10 + }, + { + "star": "* alf Cen B", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.826003322571, + "rest": 2799.0368793645466, + "n": 5, + "of": 26, + "z": 5.496146610351172, + "inst": 0.2798885794067774, + "stars_rest": 14, + "stars_obs": 14 + }, + { + "star": "* alf Cen B", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.364332056425, + "rest": 2806.5757760697306, + "n": 3, + "of": 26, + "z": 5.8366768606662145, + "inst": 0.28060830197473685, + "stars_rest": 18, + "stars_obs": 10 + }, + { + "star": "* alf Cen B", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2806.0135342896033, + "rest": 2806.2249518722397, + "n": 3, + "of": 34, + "z": 9.418084766473722, + "inst": 0.28060088960455354, + "stars_rest": 9, + "stars_obs": 12 + }, + { + "star": "* alf Cen A", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1217.6612822797413, + "rest": 1217.7232341877102, + "n": 4, + "of": 15, + "z": 6.276210385678523, + "inst": 0.12175707196957458, + "stars_rest": 1, + "stars_obs": 2 + }, + { + "star": "* alf Cen A", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1810.548359537678, + "rest": 1810.6404762264285, + "n": 6, + "of": 15, + "z": 9.541004712867881, + "inst": 0.18106081424191545, + "stars_rest": 0, + "stars_obs": 0, + "other_aperture_z": [], + "aperture_fixed": false, + "forced_rest": [ + "* alf Cen B", + "* chi01 Ori" + ], + "forced_obs": [ + "* alf Cen B" + ] + }, + { + "star": "* alf Cen A", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1819.4888732689014, + "rest": 1819.5814448311805, + "n": 3, + "of": 15, + "z": 6.490301123503384, + "inst": 0.18193315182119638, + "stars_rest": 0, + "stars_obs": 1, + "other_aperture_z": [], + "aperture_fixed": false, + "forced_rest": [ + "* alf Cen B", + "* eps Eri" + ], + "forced_obs": [ + "* alf Cen B" + ] + } + ] +} \ No newline at end of file diff --git a/papers/uv_lasers/data/iue_laser_6sig.json b/papers/uv_lasers/data/iue_laser_6sig.json new file mode 100644 index 0000000000000000000000000000000000000000..ebbd1db07736cd99cd5b4a7e0862df16d632178c --- /dev/null +++ b/papers/uv_lasers/data/iue_laser_6sig.json @@ -0,0 +1,1076 @@ +{ + "images": 851, + "peaks": 643, + "persistent": [ + { + "star": "V* AT Mic A", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.97944122054, + "rest": 2799.408233949219, + "n": 5, + "of": 6, + "z": 8.298179875460766, + "inst": 0.2798962195239252, + "stars_rest": 6, + "stars_obs": 9 + }, + { + "star": "V* AT Mic A", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.4846236691133, + "rest": 2806.914566162457, + "n": 6, + "of": 6, + "z": 9.2306502537957, + "inst": 0.28064618089216137, + "stars_rest": 1, + "stars_obs": 10 + }, + { + "star": "HD 197481", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.5034295841824, + "rest": 2806.5475228843306, + "n": 2, + "of": 3, + "z": 8.586880269986573, + "inst": 0.2806484733907612, + "stars_rest": 15, + "stars_obs": 9 + }, + { + "star": "* kap01 Cet", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.503449648785, + "rest": 2799.3226843012953, + "n": 2, + "of": 23, + "z": 7.282830228302587, + "inst": 0.2799488681587409, + "stars_rest": 6, + "stars_obs": 4 + }, + { + "star": "* chi01 Ori", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.9110065868126, + "rest": 2798.857791474205, + "n": 2, + "of": 13, + "z": 7.616828549891933, + "inst": 0.2798827248050925, + "stars_rest": 11, + "stars_obs": 9 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1217.7180166739213, + "rest": 1217.694864454637, + "n": 2, + "of": 4, + "z": 7.215228083296051, + "inst": 0.12177193111845575, + "stars_rest": 1, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1483.5011124527173, + "rest": 1483.4729069547334, + "n": 2, + "of": 4, + "z": 6.1108485270791, + "inst": 0.14835074476215387, + "stars_rest": 1, + "stars_obs": 1, + "other_aperture_z": [ + 2.0, + 0.7, + 1.9, + 2.0 + ], + "aperture_fixed": true, + "forced_rest": [ + "* alf CMi", + "* eps Eri", + "* ksi Boo B" + ], + "forced_obs": [ + "* alf CMi", + "* eps Eri", + "* ksi Boo B" + ] + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1525.382036787796, + "rest": 1525.3530350165122, + "n": 3, + "of": 4, + "z": 7.198231310050454, + "inst": 0.15253905738696238, + "stars_rest": 0, + "stars_obs": 0, + "other_aperture_z": [ + -0.2, + -0.1, + -0.1, + -0.3 + ], + "aperture_fixed": true, + "forced_rest": [ + "* alf CMi", + "* bet Hyi", + "* eps Eri", + "* ksi Boo B", + "V* YZ CMi" + ], + "forced_obs": [ + "* alf CMi", + "* bet Hyi", + "* eps Eri", + "* ksi Boo B", + "V* YZ CMi" + ] + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1670.4260002874873, + "rest": 1670.3942408255043, + "n": 3, + "of": 4, + "z": 6.545902790807123, + "inst": 0.16704312945934555, + "stars_rest": 4, + "stars_obs": 3 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1755.788917577207, + "rest": 1755.7555351278381, + "n": 3, + "of": 4, + "z": 6.967100488495583, + "inst": 0.1755777440121197, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1805.8953002695205, + "rest": 1805.860965157923, + "n": 3, + "of": 4, + "z": 7.255715369210964, + "inst": 0.18058766894271897, + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1815.8481523884927, + "rest": 1815.8136280453891, + "n": 2, + "of": 4, + "z": 7.1471949079873145, + "inst": 0.18158039108534446, + "stars_rest": 0, + "stars_obs": 0, + "other_aperture_z": [ + 0.0, + -0.4, + 0.2, + -0.8 + ], + "aperture_fixed": true, + "forced_rest": [ + "* ksi Boo B" + ], + "forced_obs": [ + "* ksi Boo B" + ] + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1970.2787621898249, + "rest": 1970.241301689669, + "n": 3, + "of": 4, + "z": 9.33657162894416, + "inst": 0.19702669211736112, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* chi01 Ori", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1976.8274779741682, + "rest": 1976.7898929646417, + "n": 3, + "of": 4, + "z": 7.552914063940958, + "inst": 0.19767503838002087, + "stars_rest": 0, + "stars_obs": 0, + "other_aperture_z": [ + -0.2, + 0.0, + 0.7, + -0.1 + ], + "aperture_fixed": true, + "forced_rest": [ + "* alf CMi", + "* ksi Boo B", + "V* AT Mic A" + ], + "forced_obs": [ + "* alf CMi", + "* ksi Boo B" + ] + }, + { + "star": "HD 4628", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.3486342725, + "rest": 2806.443791773572, + "n": 2, + "of": 3, + "z": 9.580411671317446, + "inst": 0.2806330440885776, + "stars_rest": 13, + "stars_obs": 8 + }, + { + "star": "* ksi Boo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.009232887173, + "rest": 2799.208114250737, + "n": 5, + "of": 35, + "z": 6.630496481768502, + "inst": 0.2799030481856571, + "stars_rest": 3, + "stars_obs": 8 + }, + { + "star": "* ksi Boo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.485975972636, + "rest": 2799.6848912108, + "n": 4, + "of": 35, + "z": 7.942898197905608, + "inst": 0.2799475213939346, + "stars_rest": 0, + "stars_obs": 4 + }, + { + "star": "* ksi Boo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.5716358434065, + "rest": 2806.771054547468, + "n": 26, + "of": 35, + "z": 11.693327340481414, + "inst": 0.2806404595476137, + "stars_rest": 3, + "stars_obs": 10 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 1919.8588394298777, + "rest": 1919.8441744740312, + "n": 2, + "of": 3, + "z": 8.15854761324987, + "inst": 0.19198076816558401, + "stars_rest": 3, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2146.8721905122297, + "rest": 2146.8557915014094, + "n": 3, + "of": 3, + "z": 8.725323249249113, + "inst": 0.21469242606579286, + "stars_rest": 1, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2320.1846315559774, + "rest": 2320.166908687776, + "n": 2, + "of": 3, + "z": 7.270771430343097, + "inst": 0.23202049715913936, + "stars_rest": 1, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2391.3141847088514, + "rest": 2391.2959185133304, + "n": 2, + "of": 3, + "z": 6.797425697809876, + "inst": 0.2391289630465127, + "stars_rest": 1, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2701.2209069441215, + "rest": 2701.200273507685, + "n": 3, + "of": 3, + "z": 9.660986070522979, + "inst": 0.27012473560329275, + "stars_rest": 2, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2733.0069892535294, + "rest": 2732.9861130172135, + "n": 2, + "of": 3, + "z": 8.088766159956709, + "inst": 0.27329932902707776, + "stars_rest": 2, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2766.373414829899, + "rest": 2766.3522837221585, + "n": 2, + "of": 3, + "z": 9.388379817810959, + "inst": 0.27663208433980424, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2806.6634888501703, + "rest": 2806.6420499843052, + "n": 2, + "of": 3, + "z": 6.454371162123386, + "inst": 0.2806561901584867, + "stars_rest": 11, + "stars_obs": 7 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 2881.068952109133, + "rest": 2881.0469448927142, + "n": 2, + "of": 3, + "z": 8.829928643183601, + "inst": 0.28811055376458494, + "stars_rest": 0, + "stars_obs": 1, + "other_aperture_z": [], + "aperture_fixed": false, + "forced_rest": [ + "* alf CMi", + "* chi01 Ori" + ], + "forced_obs": [ + "* alf CMi", + "* chi01 Ori", + "* eps Ind", + "V* AT Mic A", + "V* YZ CMi" + ] + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3127.6529116721986, + "rest": 3127.62902090955, + "n": 3, + "of": 3, + "z": 10.615426863031917, + "inst": 0.3127717809129186, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3167.4612275970685, + "rest": 3167.437032756232, + "n": 3, + "of": 3, + "z": 12.443116837820016, + "inst": 0.3167461378697178, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3257.7974145050316, + "rest": 3257.7725296258636, + "n": 3, + "of": 3, + "z": 14.689542580607954, + "inst": 0.32577898208844397, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "LWP", + "aperture": "SMALL", + "lam": 3313.316409793048, + "rest": 3313.291100828735, + "n": 3, + "of": 3, + "z": 12.412215343745284, + "inst": 0.3313299210159011, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2798.823975728695, + "rest": 2799.022843928961, + "n": 2, + "of": 24, + "z": 6.775377114302794, + "inst": 0.2798872597370158, + "stars_rest": 9, + "stars_obs": 10 + }, + { + "star": "* ksi Boo", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2805.9270711631075, + "rest": 2806.126444068141, + "n": 3, + "of": 24, + "z": 7.735210661275159, + "inst": 0.280587905464397, + "stars_rest": 6, + "stars_obs": 6 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1250.310011445679, + "rest": 1250.300460878348, + "n": 2, + "of": 2, + "z": 7.075309374869708, + "inst": 0.12502658616263237, + "stars_rest": 3, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1430.2869909020642, + "rest": 1430.2760655698794, + "n": 2, + "of": 2, + "z": 6.819122969824474, + "inst": 0.14302704132255875, + "stars_rest": 3, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1495.4127630339863, + "rest": 1495.4013402347205, + "n": 2, + "of": 2, + "z": 6.745896561386714, + "inst": 0.1495406936660911, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1506.9511921758112, + "rest": 1506.9396812395682, + "n": 2, + "of": 2, + "z": 6.489322660177571, + "inst": 0.15069771859265685, + "stars_rest": 0, + "stars_obs": 0, + "other_aperture_z": [], + "aperture_fixed": false, + "forced_rest": [ + "* alf CMi", + "* bet Hyi", + "V* YZ CMi" + ], + "forced_obs": [ + "* alf CMi", + "* bet Hyi", + "V* AT Mic A", + "V* YZ CMi" + ] + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1655.3199737238187, + "rest": 1655.3073294638205, + "n": 2, + "of": 2, + "z": 6.2181575878935655, + "inst": 0.16553159137018325, + "stars_rest": 1, + "stars_obs": 3 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1670.1823572042117, + "rest": 1670.1695994170136, + "n": 2, + "of": 2, + "z": 6.768991610137335, + "inst": 0.16701630507147466, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1737.6004921617596, + "rest": 1737.5872193971309, + "n": 2, + "of": 2, + "z": 9.665133522823147, + "inst": 0.1737663901786167, + "stars_rest": 2, + "stars_obs": 4 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1738.8872923209642, + "rest": 1738.874009727036, + "n": 2, + "of": 2, + "z": 9.925736421205809, + "inst": 0.17388618002270906, + "stars_rest": 3, + "stars_obs": 5 + }, + { + "star": "* ksi Boo B", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1781.8217443575181, + "rest": 1781.8081338062264, + "n": 2, + "of": 2, + "z": 7.513645915240955, + "inst": 0.17818340029009083, + "stars_rest": 2, + "stars_obs": 3 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.644999768957, + "rest": 2798.699145410751, + "n": 2, + "of": 13, + "z": 7.303451144136774, + "inst": 0.27985930616355453, + "stars_rest": 8, + "stars_obs": 6 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.943898089944, + "rest": 2798.998049514551, + "n": 8, + "of": 13, + "z": 9.205643779693691, + "inst": 0.27989013018112346, + "stars_rest": 10, + "stars_obs": 10 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.4095799437873, + "rest": 2799.4637403779834, + "n": 11, + "of": 13, + "z": 11.366747888482452, + "inst": 0.2799337428097474, + "stars_rest": 6, + "stars_obs": 5 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.204837256034, + "rest": 2806.2591291586978, + "n": 4, + "of": 13, + "z": 10.50783971634022, + "inst": 0.2806299980837197, + "stars_rest": 4, + "stars_obs": 4 + }, + { + "star": "* 70 Oph", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.451203676275, + "rest": 2806.5055003454127, + "n": 12, + "of": 13, + "z": 11.864244124574338, + "inst": 0.2806389350811668, + "stars_rest": 14, + "stars_obs": 10 + }, + { + "star": "* 70 Oph", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2798.750020864678, + "rest": 2798.804168538324, + "n": 7, + "of": 15, + "z": 7.759187030858885, + "inst": 0.2798699123859586, + "stars_rest": 9, + "stars_obs": 10 + }, + { + "star": "* 70 Oph", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2805.9011944923413, + "rest": 2805.955480520401, + "n": 4, + "of": 15, + "z": 6.568695059117978, + "inst": 0.2805861121193331, + "stars_rest": 5, + "stars_obs": 5 + }, + { + "star": "V* AD Leo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.0866190074826, + "rest": 2798.9705680421157, + "n": 2, + "of": 14, + "z": 7.381458787355301, + "inst": 0.27988894755958066, + "stars_rest": 10, + "stars_obs": 6 + }, + { + "star": "V* AD Leo", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.583372818603, + "rest": 2806.467011035589, + "n": 4, + "of": 14, + "z": 9.010888695064352, + "inst": 0.28065249262714476, + "stars_rest": 13, + "stars_obs": 10 + }, + { + "star": "* eps Ind", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2798.6141692684014, + "rest": 2798.9879527966386, + "n": 3, + "of": 6, + "z": 8.734774778223352, + "inst": 0.27986090811808334, + "stars_rest": 10, + "stars_obs": 5 + }, + { + "star": "* eps Ind", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.075386565439, + "rest": 2799.449231693961, + "n": 4, + "of": 6, + "z": 9.416659481001739, + "inst": 0.2798977829099557, + "stars_rest": 6, + "stars_obs": 6 + }, + { + "star": "* eps Ind", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2805.825988979077, + "rest": 2806.200735719552, + "n": 2, + "of": 6, + "z": 7.555373972846463, + "inst": 0.28057768042232023, + "stars_rest": 4, + "stars_obs": 3 + }, + { + "star": "* eps Ind", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.126717802617, + "rest": 2806.5015047085, + "n": 5, + "of": 6, + "z": 11.82322502373765, + "inst": 0.2806098678550018, + "stars_rest": 14, + "stars_obs": 5 + }, + { + "star": "* eps Ind", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2805.5969193643823, + "rest": 2805.9716355102687, + "n": 2, + "of": 5, + "z": 10.191712584172933, + "inst": 0.28056030604408677, + "stars_rest": 6, + "stars_obs": 1 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1250.3238953852756, + "rest": 1250.3426855307375, + "n": 2, + "of": 8, + "z": 8.178085667831256, + "inst": 0.12503570666930816, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1429.3547485185604, + "rest": 1429.376229179484, + "n": 2, + "of": 8, + "z": 7.4188444568176815, + "inst": 0.14293652589952277, + "stars_rest": 2, + "stars_obs": 3 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1495.4106682368295, + "rest": 1495.4331416007997, + "n": 2, + "of": 8, + "z": 6.422168251807414, + "inst": 0.1495416257667441, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1692.1366294903273, + "rest": 1692.162059295778, + "n": 2, + "of": 8, + "z": 6.94412878642472, + "inst": 0.16921533869303876, + "stars_rest": 2, + "stars_obs": 4 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1737.6042444982754, + "rest": 1737.6303576011524, + "n": 2, + "of": 8, + "z": 8.669813012174394, + "inst": 0.1737674061567597, + "stars_rest": 3, + "stars_obs": 4 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1738.9001457290137, + "rest": 1738.9262783069823, + "n": 2, + "of": 8, + "z": 9.973063979926174, + "inst": 0.17389163266174437, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1784.1300821288678, + "rest": 1784.1568944323758, + "n": 2, + "of": 8, + "z": 10.864813603788319, + "inst": 0.1784010969598305, + "stars_rest": 2, + "stars_obs": 5 + }, + { + "star": "* alf CMi", + "camera": "SWP", + "aperture": "SMALL", + "lam": 1884.7153808931525, + "rest": 1884.7437048148918, + "n": 2, + "of": 8, + "z": 7.879403321227736, + "inst": 0.18846300579813227, + "stars_rest": 1, + "stars_obs": 1, + "other_aperture_z": [ + -0.8, + 3.5, + -1.6, + -1.6, + -1.2 + ], + "aperture_fixed": false, + "forced_rest": [ + "* bet Hyi", + "* chi01 Ori", + "* ksi Boo B" + ], + "forced_obs": [ + "* bet Hyi", + "* chi01 Ori", + "* ksi Boo B", + "V* AT Mic A" + ] + }, + { + "star": "* eps Eri", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.365061369844, + "rest": 2799.2121559279553, + "n": 2, + "of": 35, + "z": 6.618740740402909, + "inst": 0.27994744045729814, + "stars_rest": 3, + "stars_obs": 5 + }, + { + "star": "* eps Eri", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2799.5818571117516, + "rest": 2799.4289398281594, + "n": 4, + "of": 35, + "z": 11.71031436659192, + "inst": 0.27996026567524, + "stars_rest": 6, + "stars_obs": 4 + }, + { + "star": "* eps Eri", + "camera": "LWP", + "aperture": "LARGE", + "lam": 2806.677826147585, + "rest": 2806.5245212717155, + "n": 26, + "of": 35, + "z": 9.431721070285262, + "inst": 0.2806654529949133, + "stars_rest": 14, + "stars_obs": 7 + }, + { + "star": "* eps Eri", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2806.062436030103, + "rest": 2805.909164767748, + "n": 7, + "of": 31, + "z": 7.357597463493253, + "inst": 0.2805929377114945, + "stars_rest": 5, + "stars_obs": 7 + }, + { + "star": "* eps Eri", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2806.383865565418, + "rest": 2806.2305767461085, + "n": 2, + "of": 31, + "z": 6.631980860067434, + "inst": 0.28064374345253706, + "stars_rest": 4, + "stars_obs": 9 + }, + { + "star": "* eps Eri", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1811.085626668424, + "rest": 1810.986702504561, + "n": 2, + "of": 3, + "z": 12.223510768074652, + "inst": 0.1811021273142559, + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* alf Cen B", + "camera": "LWR", + "aperture": "LARGE", + "lam": 2806.0135342896033, + "rest": 2806.2249518722397, + "n": 3, + "of": 34, + "z": 9.418084766473722, + "inst": 0.28060088960455354, + "stars_rest": 4, + "stars_obs": 7 + }, + { + "star": "* alf Cen A", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1810.5510464457664, + "rest": 1810.6431632712215, + "n": 5, + "of": 15, + "z": 9.541004712867881, + "inst": 0.18106081424191545, + "stars_rest": 0, + "stars_obs": 0, + "other_aperture_z": [], + "aperture_fixed": false, + "forced_rest": [ + "* alf Cen B", + "* chi01 Ori" + ], + "forced_obs": [ + "* alf Cen B" + ] + }, + { + "star": "* alf Cen A", + "camera": "SWP", + "aperture": "LARGE", + "lam": 1810.7571814378834, + "rest": 1810.8493087510296, + "n": 2, + "of": 15, + "z": 10.211955295085483, + "inst": 0.18107159901616138, + "stars_rest": 3, + "stars_obs": 1 + } + ] +} \ No newline at end of file diff --git a/papers/uv_lasers/data/stis_laser.json b/papers/uv_lasers/data/stis_laser.json new file mode 100644 index 0000000000000000000000000000000000000000..1a718043c86255736efec493ab472589ba4bfe77 --- /dev/null +++ b/papers/uv_lasers/data/stis_laser.json @@ -0,0 +1,8633 @@ +{ + "exposures": 4312, + "objects": 881, + "peaks": 4043, + "persistent": [ + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2349.9738959791825, + "rest": 2349.9738959791825, + "n": 11, + "of": 146, + "z": 21.544320667472704, + "inst": 0.07833274563831974, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 6 + }, + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2350.030853310017, + "rest": 2350.030853310017, + "n": 2, + "of": 146, + "z": 13.590817648545253, + "inst": 0.07833270790164704, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 7 + }, + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2350.0884444528288, + "rest": 2350.0884444528288, + "n": 3, + "of": 146, + "z": 13.436412969402534, + "inst": 0.07833453362657532, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 7 + }, + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2350.1546450149326, + "rest": 2350.1546450149326, + "n": 2, + "of": 146, + "z": 18.3030096018395, + "inst": 0.07833666766158551, + "cenwaves": [ + 1978 + ], + "stars_rest": 3, + "stars_obs": 6 + }, + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2350.2361663911843, + "rest": 2350.2361663911843, + "n": 4, + "of": 146, + "z": 15.077769981579715, + "inst": 0.07833903093426253, + "cenwaves": [ + 1978 + ], + "stars_rest": 5, + "stars_obs": 3 + }, + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2350.313275515713, + "rest": 2350.313275515713, + "n": 7, + "of": 146, + "z": 14.41153064646636, + "inst": 0.07834461004535473, + "cenwaves": [ + 1978 + ], + "stars_rest": 6, + "stars_obs": 1 + }, + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2616.2783258627433, + "rest": 2616.2783258627433, + "n": 2, + "of": 146, + "z": 6.555777484775689, + "inst": 0.08720942135100218, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "BD+28 4211", + "mode": "E230M", + "lam": 2616.543499624226, + "rest": 2616.543499624226, + "n": 2, + "of": 146, + "z": 6.468338466733331, + "inst": 0.08721720283992845, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 4 + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2580.555149631465, + "rest": 2580.6864425595277, + "n": 2, + "of": 13, + "z": 6.207459258463814, + "inst": 0.022636385500683736, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Ori", + "* gam Cru", + "* gam Dra", + "V* GY And" + ], + "forced_obs": [ + "V* GY And" + ] + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2686.196405016921, + "rest": 2686.3330727379794, + "n": 2, + "of": 13, + "z": 14.98616928501277, + "inst": 0.023563112323635442, + "cenwaves": [ + 2812 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Aqr", + "* alf CMi", + "* alf Cen B", + "* bet Dra", + "* ups And", + "HD 27561" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2703.464954587281, + "rest": 2703.6025008938786, + "n": 2, + "of": 13, + "z": 9.626503925259128, + "inst": 0.023714561915939687, + "cenwaves": [ + 2812 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2733.281860923751, + "rest": 2733.420924248475, + "n": 7, + "of": 13, + "z": 8.261143335481625, + "inst": 0.023976035979450028, + "cenwaves": [ + 2713, + 2812 + ], + "stars_rest": 4, + "stars_obs": 4 + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2735.150833554768, + "rest": 2735.289991968678, + "n": 3, + "of": 13, + "z": 7.977132870834674, + "inst": 0.02399250079130376, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 3 + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2759.7525701285676, + "rest": 2759.8929802243224, + "n": 11, + "of": 13, + "z": 9.015199093848066, + "inst": 0.024208327381988644, + "cenwaves": [ + 2713, + 2812 + ], + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2821.244388503939, + "rest": 2821.38792716716, + "n": 2, + "of": 13, + "z": 7.457516064490206, + "inst": 0.024747800205747322, + "cenwaves": [ + 2713, + 2812 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2822.446645280359, + "rest": 2822.5902451117413, + "n": 4, + "of": 13, + "z": 7.9331535205987285, + "inst": 0.02475818379544458, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Aqr", + "* alf Cen B", + "* bet Hyi", + "* bet Pic", + "* iot Hor", + "* ups And" + ], + "forced_obs": [ + "* alf Cen B" + ] + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2864.844366504267, + "rest": 2864.9901234377608, + "n": 3, + "of": 13, + "z": 9.003481368815395, + "inst": 0.025130153718214965, + "cenwaves": [ + 2812 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* bet Gem" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2876.2168273310126, + "rest": 2876.3631628701146, + "n": 2, + "of": 13, + "z": 7.03481138515452, + "inst": 0.025229963060999006, + "cenwaves": [ + 2812 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* alf CMi", + "BD+01 316", + "HD 26345", + "HD 27561" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2877.0915288216606, + "rest": 2877.237908863636, + "n": 5, + "of": 13, + "z": 11.194586173284828, + "inst": 0.025237594581974332, + "cenwaves": [ + 2812 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf CMi" + ], + "forced_obs": [], + "id": "Fe I 2877.300 (+7 km/s)" + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2913.9570857584595, + "rest": 2914.105341438286, + "n": 2, + "of": 13, + "z": 7.288288191033433, + "inst": 0.025561056117640143, + "cenwaves": [ + 2812 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem", + "* rho01 Cnc" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2921.485770139257, + "rest": 2921.6344088618625, + "n": 2, + "of": 13, + "z": 7.14974193993919, + "inst": 0.025627118385881432, + "cenwaves": [ + 2812 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra", + "* bet Gem" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen A", + "mode": "E140M", + "lam": 1351.5672569220917, + "rest": 1351.636021669344, + "n": 12, + "of": 22, + "z": 12.633646424515597, + "inst": 0.029509949812916533, + "cenwaves": [ + 1425 + ], + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* alf Cen A", + "mode": "E140M", + "lam": 1472.8714964135672, + "rest": 1472.9464328517408, + "n": 7, + "of": 22, + "z": 7.77290780087414, + "inst": 0.03215875586563687, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "* alf Cen B" + ], + "id": "S I 1472.972 (+5 km/s)" + }, + { + "star": "* alf Cen A", + "mode": "E140M", + "lam": 1473.8890219548903, + "rest": 1473.9640101625089, + "n": 6, + "of": 22, + "z": 7.0186016076483835, + "inst": 0.03218078333811408, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "* alf Cen B" + ], + "id": "S I 1473.995 (+6 km/s)" + }, + { + "star": "* alf Cen A", + "mode": "E140M", + "lam": 1481.564346621875, + "rest": 1481.6397253330058, + "n": 17, + "of": 22, + "z": 8.43043825924841, + "inst": 0.03234841799035816, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "S I 1481.665 (+5 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2581.8888657864763, + "rest": 2582.083396816341, + "n": 2, + "of": 9, + "z": 6.887466739600715, + "inst": 0.022648087834574983, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* alf CMi", + "* alf Cen A", + "* bet Gem", + "* bet Hyi", + "* del Pav", + "* iot Hor", + "* ups And", + "HD 26345", + "HD 27561", + "HD 6655" + ], + "forced_obs": [ + "* del Pav", + "* ups And" + ] + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2655.8200657986313, + "rest": 2656.020167135053, + "n": 2, + "of": 9, + "z": 8.394566029253282, + "inst": 0.023296661779677968, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Cen A", + "* bet Hyi" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2657.2021077808704, + "rest": 2657.4023132465027, + "n": 4, + "of": 9, + "z": 8.456422561310491, + "inst": 0.023308796214702422, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* bet Dra", + "* bet Gem", + "* bet Hyi" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2676.404406049137, + "rest": 2676.6060583016188, + "n": 2, + "of": 9, + "z": 7.72349476856441, + "inst": 0.023477219202824293, + "cenwaves": [ + 2713 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "* del Pav", + "* sig Dra" + ], + "forced_obs": [ + "* bet Hyi" + ] + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2676.9590742853293, + "rest": 2677.1607683289917, + "n": 7, + "of": 9, + "z": 14.307232211627845, + "inst": 0.02348191308232452, + "cenwaves": [ + 2713 + ], + "stars_rest": 5, + "stars_obs": 1 + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2700.7737451466082, + "rest": 2700.9772334938557, + "n": 5, + "of": 9, + "z": 12.830771655713795, + "inst": 0.02369091553090992, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* bet Gem", + "* sig Dra" + ], + "forced_obs": [] + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2705.4511979891104, + "rest": 2705.65503875653, + "n": 3, + "of": 9, + "z": 10.324744935313333, + "inst": 0.023731951483340043, + "cenwaves": [ + 2713 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2714.285139621991, + "rest": 2714.4896459779984, + "n": 6, + "of": 9, + "z": 10.281970678722644, + "inst": 0.023809552285629167, + "cenwaves": [ + 2713 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Co II 2714.440 (-5 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2759.8431638014954, + "rest": 2760.0511027023654, + "n": 6, + "of": 9, + "z": 10.025980071789943, + "inst": 0.024209075651995714, + "cenwaves": [ + 2713 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2760.87416346902, + "rest": 2761.082180050006, + "n": 7, + "of": 9, + "z": 8.504768561613659, + "inst": 0.02421823936234118, + "cenwaves": [ + 2713 + ], + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2820.5141922288794, + "rest": 2820.7267023557997, + "n": 7, + "of": 9, + "z": 8.702553693680748, + "inst": 0.02474129919211021, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [ + "* ksi Dra" + ], + "id": "Fe I 2820.814 (+9 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2821.1791858350944, + "rest": 2821.3917460656007, + "n": 3, + "of": 9, + "z": 9.789894244363865, + "inst": 0.024747020860535984, + "cenwaves": [ + 2713 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2821.1970799013166, + "rest": 2821.409641480042, + "n": 3, + "of": 9, + "z": 12.132139274560323, + "inst": 0.024747341440149846, + "cenwaves": [ + 2713 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2830.7847487357467, + "rest": 2830.998032692231, + "n": 2, + "of": 9, + "z": 7.584522357402867, + "inst": 0.024831452235175477, + "cenwaves": [ + 2713 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "* sig Dra" + ], + "forced_obs": [], + "id": "Fe I 2830.924 (-8 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2831.7696666751435, + "rest": 2831.9830248397407, + "n": 2, + "of": 9, + "z": 8.398321880521358, + "inst": 0.024840107269564718, + "cenwaves": [ + 2713 + ], + "stars_rest": 3, + "stars_obs": 0 + }, + { + "star": "* alf Cen B", + "mode": "E140M", + "lam": 1351.5509850374522, + "rest": 1351.6528169205042, + "n": 7, + "of": 10, + "z": 9.780190248932989, + "inst": 0.029509591084841923, + "cenwaves": [ + 1425 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2169.6674581470684, + "rest": 2169.5089019900533, + "n": 4, + "of": 214, + "z": 9.674089511418556, + "inst": 0.07232125777425283, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Her", + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2260.702181985261, + "rest": 2260.5369731424107, + "n": 4, + "of": 214, + "z": 14.073943413676988, + "inst": 0.07535660533863604, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2280.536656772233, + "rest": 2280.3699984546774, + "n": 10, + "of": 214, + "z": 10.30817260169879, + "inst": 0.07601748408592697, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 0, + "stars_obs": 2 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2291.86326037679, + "rest": 2291.6957743274397, + "n": 10, + "of": 214, + "z": 9.304759817086602, + "inst": 0.07639387287777155, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2326.270958851525, + "rest": 2326.100958337379, + "n": 98, + "of": 214, + "z": 25.487047483268878, + "inst": 0.0775401138104858, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 6, + "stars_obs": 3 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2327.8175469276803, + "rest": 2327.6474333911165, + "n": 17, + "of": 214, + "z": 12.56931342728913, + "inst": 0.07759228431736005, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2328.998868254497, + "rest": 2328.828668388681, + "n": 2, + "of": 214, + "z": 6.868121475706031, + "inst": 0.07763192323359151, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2329.03970557136, + "rest": 2328.8695027212116, + "n": 2, + "of": 214, + "z": 6.310586231764564, + "inst": 0.07763581802662467, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2333.3621092257986, + "rest": 2333.191590500648, + "n": 3, + "of": 214, + "z": 7.865462908002775, + "inst": 0.07777849470203865, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2335.629544461146, + "rest": 2335.4588600351112, + "n": 4, + "of": 214, + "z": 7.3388723274105905, + "inst": 0.07785400723848925, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* GY And" + ], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2338.5958347598034, + "rest": 2338.4249335615673, + "n": 4, + "of": 214, + "z": 8.47078378395112, + "inst": 0.07795287889279408, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 2 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2348.734464360227, + "rest": 2348.5628222456166, + "n": 15, + "of": 214, + "z": 10.800789709365947, + "inst": 0.07828969673026095, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Her", + "* gam Cru" + ], + "forced_obs": [ + "* bet Gem", + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2360.636112944972, + "rest": 2360.463601075112, + "n": 33, + "of": 214, + "z": 18.404687991062236, + "inst": 0.07868676107304998, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Her", + "* gam Cru", + "* gam Dra" + ], + "forced_obs": [ + "* alf Cen B", + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2361.436322426226, + "rest": 2361.2637520782155, + "n": 5, + "of": 214, + "z": 8.130585393446877, + "inst": 0.07871405770741069, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Her" + ], + "forced_obs": [ + "* alf Cen B" + ], + "id": "Fe II 2361.358 (+12 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2369.1827025879165, + "rest": 2369.0095661456576, + "n": 2, + "of": 214, + "z": 7.395709835956626, + "inst": 0.07897312998476957, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2369.228416065025, + "rest": 2369.055276282091, + "n": 4, + "of": 214, + "z": 7.5375600533097264, + "inst": 0.07897400409765822, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2379.9244691614554, + "rest": 2379.750547726445, + "n": 3, + "of": 214, + "z": 8.707777149921354, + "inst": 0.07933104133119308, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2380.4281143158955, + "rest": 2380.254156075226, + "n": 6, + "of": 214, + "z": 8.461339510420347, + "inst": 0.07934677591604529, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2392.121366165353, + "rest": 2391.9465533987654, + "n": 25, + "of": 214, + "z": 19.54994322593975, + "inst": 0.07973579352457101, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2403.2709327139705, + "rest": 2403.0953051532, + "n": 13, + "of": 214, + "z": 13.605516467970448, + "inst": 0.08010855454721809, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2403.7303537715857, + "rest": 2403.5546926369893, + "n": 6, + "of": 214, + "z": 7.941806782045823, + "inst": 0.08012407946845959, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra" + ], + "forced_obs": [], + "id": "Fe III 2403.552 (-0 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2419.5257692265986, + "rest": 2419.3489537859064, + "n": 2, + "of": 214, + "z": 6.272848963092774, + "inst": 0.08065062482605691, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe II 2419.342 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2431.3594086991184, + "rest": 2431.181728473184, + "n": 7, + "of": 214, + "z": 7.505710882155103, + "inst": 0.08104459373421061, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* alf Aqr", + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2439.3972703641266, + "rest": 2439.2190027428974, + "n": 7, + "of": 214, + "z": 7.952368727193575, + "inst": 0.08131127880364927, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2439.170 (-6 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2449.010334152326, + "rest": 2448.831364022311, + "n": 62, + "of": 214, + "z": 27.434005458970507, + "inst": 0.0816318633510058, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Aqr", + "* alf Her", + "* gam Cru" + ], + "forced_obs": [ + "* alf Aqr", + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2450.490376548025, + "rest": 2450.3112982586545, + "n": 10, + "of": 214, + "z": 10.870354790585406, + "inst": 0.08168238667469044, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* gam Cru", + "HD 27561" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2457.9034307288616, + "rest": 2457.7238107042226, + "n": 18, + "of": 214, + "z": 9.370988062079908, + "inst": 0.08192830541894298, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "S IV 2457.835 (+14 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2507.618979531697, + "rest": 2507.4357263667202, + "n": 174, + "of": 214, + "z": 27.2109125683974, + "inst": 0.08358549597925718, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Her", + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2509.2441127853062, + "rest": 2509.060740857944, + "n": 71, + "of": 214, + "z": 26.264183238866273, + "inst": 0.08363899427656238, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe II 2509.121 (+7 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2516.8298895833177, + "rest": 2516.6459632983683, + "n": 25, + "of": 214, + "z": 13.2286112129943, + "inst": 0.08389421200692782, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Mn II 2516.599 (-6 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2517.10272299194, + "rest": 2516.91877676872, + "n": 9, + "of": 214, + "z": 9.254911186181669, + "inst": 0.08390235312702772, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2516.956 (+4 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2526.806298164044, + "rest": 2526.6216428175976, + "n": 4, + "of": 214, + "z": 9.461673093713786, + "inst": 0.08422683052272355, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* GY And", + "V* V1027 Sco" + ], + "forced_obs": [] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2531.869152947239, + "rest": 2531.684127614694, + "n": 24, + "of": 214, + "z": 15.449474317598096, + "inst": 0.08439374906916916, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2539.6025396637388, + "rest": 2539.4169491864873, + "n": 3, + "of": 214, + "z": 7.310031491800806, + "inst": 0.08465228541960247, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* bet Gem", + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2549.474966256468, + "rest": 2549.288654316573, + "n": 2, + "of": 214, + "z": 6.563106183339019, + "inst": 0.0849826050425827, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2563.80204787472, + "rest": 2563.6146889324395, + "n": 12, + "of": 214, + "z": 8.56526229340497, + "inst": 0.08545919452228534, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru", + "HD 128279", + "V* S Dor" + ], + "forced_obs": [] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2578.5850949111154, + "rest": 2578.396655645158, + "n": 2, + "of": 214, + "z": 9.934148527015546, + "inst": 0.0859524570645237, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 3 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2580.8231965193154, + "rest": 2580.634593696132, + "n": 7, + "of": 214, + "z": 9.129023847873263, + "inst": 0.08602678677578995, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru", + "* gam Dra", + "V* GY And" + ], + "forced_obs": [ + "* gam Cru", + "HD 27561" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2592.1664455593773, + "rest": 2591.9770137879746, + "n": 10, + "of": 214, + "z": 9.339179397170547, + "inst": 0.08640407265588482, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Mg I 2591.891 (-10 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2592.238287151853, + "rest": 2592.0488501303707, + "n": 9, + "of": 214, + "z": 17.112574835434447, + "inst": 0.08640726444311796, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2618.2417898812064, + "rest": 2618.050452561388, + "n": 28, + "of": 214, + "z": 15.007701747750946, + "inst": 0.0872728937954392, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2618.018 (-4 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2626.212571548421, + "rest": 2626.0206517354163, + "n": 10, + "of": 214, + "z": 8.94235069689623, + "inst": 0.08754000606057229, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2626.2958537607724, + "rest": 2626.1039278616245, + "n": 10, + "of": 214, + "z": 12.351023475479238, + "inst": 0.0875428471479257, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2631.6162732088633, + "rest": 2631.4239585011637, + "n": 3, + "of": 214, + "z": 7.424955192333783, + "inst": 0.08772064494602981, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2631.664776988823, + "rest": 2631.4724587365376, + "n": 4, + "of": 214, + "z": 6.764524881220806, + "inst": 0.08772188298300647, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2645.777486622962, + "rest": 2645.5841370342864, + "n": 2, + "of": 214, + "z": 6.496973568817423, + "inst": 0.08819241306882185, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "N IV 2645.650 (+7 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2647.338469068028, + "rest": 2647.145005405015, + "n": 15, + "of": 214, + "z": 11.997631124691512, + "inst": 0.08824283887862826, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2661.8756279436325, + "rest": 2661.6811019260927, + "n": 4, + "of": 214, + "z": 7.531467510821272, + "inst": 0.08872769616183478, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* gam Cru", + "* gam Dra" + ], + "forced_obs": [ + "* alf Aqr", + "* gam Cru", + "BD+01 316" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2670.1503253274136, + "rest": 2669.955194606968, + "n": 34, + "of": 214, + "z": 10.390458118045393, + "inst": 0.08900372404047195, + "cenwaves": [ + 2707 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2687.924494008211, + "rest": 2687.7280643772474, + "n": 5, + "of": 214, + "z": 9.329263858840836, + "inst": 0.0895975191982149, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2687.723 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2694.053847503443, + "rest": 2693.8569699481995, + "n": 45, + "of": 214, + "z": 20.476019975065192, + "inst": 0.08979920450442215, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 2 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2710.2917611005737, + "rest": 2710.0936969021104, + "n": 9, + "of": 214, + "z": 10.192883551640824, + "inst": 0.09034150466149729, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2715.7210291921147, + "rest": 2715.5225682305986, + "n": 38, + "of": 214, + "z": 17.696117377410353, + "inst": 0.0905211643987311, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2715.521 (-0 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2717.6602008227355, + "rest": 2717.461598149364, + "n": 7, + "of": 214, + "z": 14.309994939980069, + "inst": 0.09058750783035238, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2725.609590513076, + "rest": 2725.4104069098134, + "n": 56, + "of": 214, + "z": 22.68205834238818, + "inst": 0.09085193472955787, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem", + "HD 6655" + ], + "forced_obs": [ + "HD 6655" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2731.4368894847266, + "rest": 2731.237280030891, + "n": 33, + "of": 214, + "z": 20.201949954359176, + "inst": 0.09104658409827487, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2731.281 (+5 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2733.2254642952657, + "rest": 2733.025724134972, + "n": 34, + "of": 214, + "z": 25.30071244500925, + "inst": 0.09110598873866237, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 4 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2740.1850025888407, + "rest": 2739.984753835563, + "n": 46, + "of": 214, + "z": 23.72784665043461, + "inst": 0.09133725210092325, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Cr II 2740.095 (+12 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2747.126587933818, + "rest": 2746.925831899532, + "n": 49, + "of": 214, + "z": 23.484242627255004, + "inst": 0.09156989400266091, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2746.982 (+6 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2748.313896684585, + "rest": 2748.1130538834946, + "n": 19, + "of": 214, + "z": 12.566675867021594, + "inst": 0.09160946041279834, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2748.197 (+9 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2750.722389265243, + "rest": 2750.521370455001, + "n": 4, + "of": 214, + "z": 8.56620126220174, + "inst": 0.09169022762684759, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru", + "* gam Dra" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2756.3724575713104, + "rest": 2756.1710258622556, + "n": 73, + "of": 214, + "z": 46.51977922884288, + "inst": 0.09187689922212372, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "O V 2756.140 (-3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2757.0198794765297, + "rest": 2756.8184004548193, + "n": 10, + "of": 214, + "z": 11.834161715754435, + "inst": 0.09189829037559559, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru", + "* gam Dra" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2762.5344957276975, + "rest": 2762.3326137058148, + "n": 43, + "of": 214, + "z": 29.30536529691467, + "inst": 0.09208190204437293, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "V* S Dor" + ], + "id": "Ti II 2762.235 (-11 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2768.2459679863055, + "rest": 2768.043668578298, + "n": 7, + "of": 214, + "z": 8.105229817757408, + "inst": 0.09227455889968866, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr" + ], + "forced_obs": [ + "HD 27561" + ], + "id": "Fe I 2768.038 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2768.330249879543, + "rest": 2768.1279443123367, + "n": 5, + "of": 214, + "z": 9.011969355849649, + "inst": 0.09227708217096205, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "HD 27561" + ], + "id": "Fe I 2768.104 (-3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2773.7258268853443, + "rest": 2773.523127017181, + "n": 9, + "of": 214, + "z": 10.137350476821213, + "inst": 0.0924570755179618, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru", + "* gam Dra" + ], + "forced_obs": [ + "* gam Cru", + "V* S Dor" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2824.2065655005395, + "rest": 2824.0001765730744, + "n": 42, + "of": 214, + "z": 21.670364675891804, + "inst": 0.09413822525516286, + "cenwaves": [ + 2707 + ], + "stars_rest": 3, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2834.3576827641728, + "rest": 2834.150552007753, + "n": 10, + "of": 214, + "z": 13.151216325258464, + "inst": 0.09447660280818158, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru", + "HD 126238", + "HD 209458" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2840.5477801482944, + "rest": 2840.3401970285186, + "n": 3, + "of": 214, + "z": 6.3461886720386875, + "inst": 0.0946843199393531, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "* gam Cru" + ], + "forced_obs": [ + "* alf Aqr", + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2845.106754455145, + "rest": 2844.8988381721265, + "n": 66, + "of": 214, + "z": 27.441337401043473, + "inst": 0.0948348034709325, + "cenwaves": [ + 2707 + ], + "stars_rest": 4, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2846.5741330003552, + "rest": 2846.366109483437, + "n": 34, + "of": 214, + "z": 18.178500937257034, + "inst": 0.09488398863255822, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2846.460 (+10 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2852.6657972600988, + "rest": 2852.4573285731744, + "n": 6, + "of": 214, + "z": 8.552270665590527, + "inst": 0.0950883029525867, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2857.958770586355, + "rest": 2857.7499150966023, + "n": 3, + "of": 214, + "z": 13.084067301764456, + "inst": 0.09526477169486837, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Her", + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2862.3043973291465, + "rest": 2862.095224267282, + "n": 28, + "of": 214, + "z": 14.402741855989046, + "inst": 0.09540928698044379, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2869.715921806042, + "rest": 2869.506207120698, + "n": 25, + "of": 214, + "z": 19.196969590990058, + "inst": 0.09565437393996881, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem", + "HD 6655" + ], + "forced_obs": [ + "HD 6655" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2870.0717687819856, + "rest": 2869.86202809186, + "n": 16, + "of": 214, + "z": 13.998470683187499, + "inst": 0.09566839218534132, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2875.841871259073, + "rest": 2875.631708898211, + "n": 32, + "of": 214, + "z": 19.063778874161372, + "inst": 0.09585788185813508, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2881.4590421393646, + "rest": 2881.248469283786, + "n": 21, + "of": 214, + "z": 14.531426576078346, + "inst": 0.09604860322426932, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* bet Dra" + ], + "forced_obs": [] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2881.542806767544, + "rest": 2881.3322277905677, + "n": 12, + "of": 214, + "z": 16.008793276084337, + "inst": 0.09605038064618361, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2888.660601761729, + "rest": 2888.4495026265986, + "n": 23, + "of": 214, + "z": 13.67463729050434, + "inst": 0.09628821200972476, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2894.000604252173, + "rest": 2893.7891148773906, + "n": 36, + "of": 214, + "z": 13.771426420111244, + "inst": 0.09646395859518259, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2908.824150149684, + "rest": 2908.611577491626, + "n": 19, + "of": 214, + "z": 13.173265797349181, + "inst": 0.09695842608908992, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru", + "* gam Dra" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2918.2755228350807, + "rest": 2918.0622594843885, + "n": 2, + "of": 214, + "z": 10.059316799523893, + "inst": 0.09727601050608167, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2918.025 (-4 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2918.3656735147824, + "rest": 2918.1524035760094, + "n": 2, + "of": 214, + "z": 10.249424461833232, + "inst": 0.09727931397530187, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2918.159 (+1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2927.3225047244223, + "rest": 2927.10858023339, + "n": 28, + "of": 214, + "z": 10.818465824522463, + "inst": 0.09757604142166462, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen A", + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2933.7644591398903, + "rest": 2933.550063880155, + "n": 4, + "of": 214, + "z": 6.394333453147415, + "inst": 0.09779250215005551, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2933.8254750567908, + "rest": 2933.611075338101, + "n": 7, + "of": 214, + "z": 12.079649772334344, + "inst": 0.09779381325332179, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2939.990111779855, + "rest": 2939.7752615584373, + "n": 4, + "of": 214, + "z": 7.824969921798217, + "inst": 0.09799987888514163, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* gam Dra", + "HD 201626" + ], + "forced_obs": [] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2940.0545134251493, + "rest": 2939.8396584973525, + "n": 4, + "of": 214, + "z": 15.77884430405865, + "inst": 0.09800137110612647, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Dra", + "HD 201626" + ], + "forced_obs": [] + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2946.2847563800806, + "rest": 2946.0694461551475, + "n": 8, + "of": 214, + "z": 10.900397932547637, + "inst": 0.09820874699041936, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2946.099 (+3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2954.5396858843296, + "rest": 2954.3237724010983, + "n": 31, + "of": 214, + "z": 10.606912921141687, + "inst": 0.0984826298677005, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2954.344 (+2 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2954.666304191312, + "rest": 2954.450381454998, + "n": 2, + "of": 214, + "z": 7.3494241758602055, + "inst": 0.09848936844603563, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2954.344 (-11 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2965.478063206421, + "rest": 2965.2613503624098, + "n": 31, + "of": 214, + "z": 11.936258045460749, + "inst": 0.09884693923186684, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* GY And" + ], + "forced_obs": [], + "id": "Fe I 2965.254 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2971.8633015349988, + "rest": 2971.6461220670135, + "n": 37, + "of": 214, + "z": 15.898600040285068, + "inst": 0.09906003684637205, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2971.621 (-3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2980.2015770605826, + "rest": 2979.983788243492, + "n": 8, + "of": 214, + "z": 10.045005738916169, + "inst": 0.09933957975447114, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2988.682396836241, + "rest": 2988.4639882531183, + "n": 59, + "of": 214, + "z": 20.32954776099469, + "inst": 0.09962169248524504, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2988.471 (+1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3003.9222368262153, + "rest": 3003.702714537648, + "n": 2, + "of": 214, + "z": 8.458457884824035, + "inst": 0.1001306948830466, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 3003.686 (-2 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3004.016194808163, + "rest": 3003.796665653282, + "n": 17, + "of": 214, + "z": 10.02973784601318, + "inst": 0.10013195303445341, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 3003.686 (-11 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3017.230484077009, + "rest": 3017.009989240997, + "n": 11, + "of": 214, + "z": 10.626196556102343, + "inst": 0.10057378294183965, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3026.3233207172093, + "rest": 3026.102161389859, + "n": 3, + "of": 214, + "z": 7.184321599672857, + "inst": 0.10087634893615452, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 3026.130 (+3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3032.6668400615995, + "rest": 3032.4452171590383, + "n": 45, + "of": 214, + "z": 16.189555323094712, + "inst": 0.10108627939229176, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "HD 172555", + "mode": "E230H", + "lam": 2568.899744649781, + "rest": 2568.8757518777375, + "n": 2, + "of": 16, + "z": 6.386074784218355, + "inst": 0.02253411520162336, + "cenwaves": [ + 2713 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "HD 172555", + "mode": "E230H", + "lam": 2568.9187960746226, + "rest": 2568.894803124644, + "n": 3, + "of": 16, + "z": 7.21276232816353, + "inst": 0.02253428880307165, + "cenwaves": [ + 2713 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "HD 172555", + "mode": "E230H", + "lam": 2587.4797109882493, + "rest": 2587.4555446847558, + "n": 2, + "of": 16, + "z": 6.630836620548674, + "inst": 0.02269721101598072, + "cenwaves": [ + 2713 + ], + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "HD 172555", + "mode": "E230H", + "lam": 2587.4898441157948, + "rest": 2587.465677717661, + "n": 3, + "of": 16, + "z": 7.242491733439933, + "inst": 0.02269730577476614, + "cenwaves": [ + 2713 + ], + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "HD 172555", + "mode": "E230H", + "lam": 2587.618559018798, + "rest": 2587.5943914185045, + "n": 2, + "of": 16, + "z": 7.775644235567771, + "inst": 0.022698424262086542, + "cenwaves": [ + 2713 + ], + "stars_rest": 3, + "stars_obs": 4 + }, + { + "star": "* bet Pic", + "mode": "E230H", + "lam": 1893.9589551418333, + "rest": 1893.8525732883772, + "n": 2, + "of": 38, + "z": 6.887794808505676, + "inst": 0.016613609435571473, + "cenwaves": [ + 1763 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Co II 1893.872 (+3 km/s)" + }, + { + "star": "V* TW Hya", + "mode": "E140M", + "lam": 1455.0399573818495, + "rest": 1454.980092035153, + "n": 3, + "of": 10, + "z": 9.786556293961887, + "inst": 0.03176898643229927, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1455.038 (+12 km/s)" + }, + { + "star": "V* TW Hya", + "mode": "E140M", + "lam": 1463.9020381462021, + "rest": 1463.8418081830323, + "n": 2, + "of": 10, + "z": 12.33537321889213, + "inst": 0.03196280132489511, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* TW Hya", + "mode": "E140M", + "lam": 1504.8127269896072, + "rest": 1504.7508138200355, + "n": 2, + "of": 10, + "z": 10.461990693005674, + "inst": 0.032855979248876774, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Her", + "* gam Cru", + "* mu. Gem" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "V* RU Lup", + "mode": "E140M", + "lam": 1341.659187990974, + "rest": 1341.6444196855452, + "n": 5, + "of": 30, + "z": 7.866434911228909, + "inst": 0.029293677350187286, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "HD 166620", + "HD 5278", + "TOI-2094" + ], + "forced_obs": [ + "HD 260655", + "HD 5278" + ] + }, + { + "star": "V* RU Lup", + "mode": "E140M", + "lam": 1495.6257556922817, + "rest": 1495.6092926007866, + "n": 9, + "of": 30, + "z": 7.774485264535884, + "inst": 0.03265589014247518, + "cenwaves": [ + 1425 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [], + "forced_obs": [ + "* bet Hyi", + "HD 73752" + ] + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 1807.8747584109356, + "rest": 1808.010971763602, + "n": 2, + "of": 3, + "z": 11.587574851946242, + "inst": 0.0602617932146294, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* eps Eri" + ], + "forced_obs": [], + "id": "Co II 1808.019 (+1 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 1816.785445417971, + "rest": 1816.9223301415639, + "n": 2, + "of": 3, + "z": 20.573039196565528, + "inst": 0.060559434034839155, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 1900.1399333466634, + "rest": 1900.2830983693798, + "n": 2, + "of": 3, + "z": 11.686970618866106, + "inst": 0.06333797549371711, + "cenwaves": [ + 1978 + ], + "stars_rest": 4, + "stars_obs": 0 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 1993.4672082018324, + "rest": 1993.6174049179467, + "n": 2, + "of": 3, + "z": 19.796233545139994, + "inst": 0.06644878440100879, + "cenwaves": [ + 1978 + ], + "stars_rest": 4, + "stars_obs": 0 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2123.4939643437638, + "rest": 2123.6539578559823, + "n": 2, + "of": 3, + "z": 17.447982362382106, + "inst": 0.07078281796432707, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem", + "* eps Eri", + "V* GY And" + ], + "forced_obs": [ + "V* GY And" + ] + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2249.7050969213433, + "rest": 2249.8745997435585, + "n": 2, + "of": 3, + "z": 13.099854356524855, + "inst": 0.07499058156130847, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2253.6430777077157, + "rest": 2253.8128772349783, + "n": 2, + "of": 3, + "z": 10.565407638400723, + "inst": 0.07512101072622607, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem", + "* gam Cru" + ], + "forced_obs": [ + "* alf Her", + "* alf Ori" + ] + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2260.6044014498043, + "rest": 2260.774725474265, + "n": 2, + "of": 3, + "z": 19.038109360044402, + "inst": 0.07535238050504382, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* bet Gem", + "* eps Eri", + "* gam Cru" + ], + "forced_obs": [ + "* alf Ori" + ] + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2268.125734967483, + "rest": 2268.296625682778, + "n": 2, + "of": 3, + "z": 18.252122507004803, + "inst": 0.07560310331051487, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2280.4402838215774, + "rest": 2280.6121023699416, + "n": 2, + "of": 3, + "z": 15.72586086800867, + "inst": 0.07601402996315651, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 2 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2294.1940865033457, + "rest": 2294.3669413245857, + "n": 2, + "of": 3, + "z": 17.04831174085394, + "inst": 0.07647272455701072, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem", + "V* DX Cha", + "V* GY And" + ], + "forced_obs": [ + "* sig Boo" + ] + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2327.9325937366034, + "rest": 2328.10799056755, + "n": 2, + "of": 3, + "z": 10.512100496262095, + "inst": 0.0775978987628293, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 2 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2334.9415444712513, + "rest": 2335.1174693878265, + "n": 2, + "of": 3, + "z": 28.264034603513792, + "inst": 0.07783100673244982, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 2350.7194899635247, + "rest": 2350.896603660929, + "n": 2, + "of": 3, + "z": 43.15795613222311, + "inst": 0.07835688615231899, + "cenwaves": [ + 1978 + ], + "stars_rest": 5, + "stars_obs": 2 + }, + { + "star": "HD 27561", + "mode": "E230M", + "lam": 2677.4700721927884, + "rest": 2677.120751832067, + "n": 2, + "of": 2, + "z": 10.76660569615159, + "inst": 0.08924904351414405, + "cenwaves": [ + 2707 + ], + "stars_rest": 5, + "stars_obs": 0 + }, + { + "star": "HD 27561", + "mode": "E230M", + "lam": 2765.7434378975295, + "rest": 2765.3826008127667, + "n": 2, + "of": 2, + "z": 13.431045108477209, + "inst": 0.09219142905879271, + "cenwaves": [ + 2707 + ], + "stars_rest": 3, + "stars_obs": 1 + }, + { + "star": "HD 26345", + "mode": "E230M", + "lam": 2732.7256168632584, + "rest": 2732.3872954222097, + "n": 2, + "of": 2, + "z": 9.859928665729813, + "inst": 0.09109089790708993, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "HD 26345", + "mode": "E230M", + "lam": 2832.419516056926, + "rest": 2832.0688521459892, + "n": 2, + "of": 2, + "z": 9.370877116739878, + "inst": 0.09441360268878243, + "cenwaves": [ + 2707 + ], + "stars_rest": 3, + "stars_obs": 1 + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1707.287363701478, + "rest": 1707.3130211955304, + "n": 3, + "of": 6, + "z": 8.102649194721948, + "inst": 0.03727707378607036, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1708.9073913423174, + "rest": 1708.9330731825055, + "n": 6, + "of": 6, + "z": 12.551492963962708, + "inst": 0.037312202994110893, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1717.3406341673278, + "rest": 1717.3664427441638, + "n": 6, + "of": 6, + "z": 17.53304295343984, + "inst": 0.03749644207497945, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1717.413 (+8 km/s)" + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1727.032421332307, + "rest": 1727.058375559475, + "n": 6, + "of": 6, + "z": 15.517176069598422, + "inst": 0.03770816130467853, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "Fe III 1727.032 (-5 km/s)" + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1727.9526572830628, + "rest": 1727.9786253397415, + "n": 2, + "of": 6, + "z": 10.582625545943554, + "inst": 0.03772799025610639, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "LS IV -14 116", + "V* TW Hya" + ] + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1728.9477126624556, + "rest": 1728.9736956730476, + "n": 4, + "of": 6, + "z": 8.568919779368645, + "inst": 0.03774973030468663, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "S III 1728.939 (-6 km/s)" + }, + { + "star": "* gam Dra", + "mode": "E230M", + "lam": 2325.91324450233, + "rest": 2326.12980192744, + "n": 6, + "of": 6, + "z": 16.53497429878951, + "inst": 0.07752994973208852, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 6, + "stars_obs": 2 + }, + { + "star": "* gam Dra", + "mode": "E230M", + "lam": 2350.6673499404037, + "rest": 2350.8862121313286, + "n": 6, + "of": 6, + "z": 10.528964418094613, + "inst": 0.07835537151808877, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 5, + "stars_obs": 2 + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2391.427136212595, + "rest": 2391.4000867072536, + "n": 3, + "of": 7, + "z": 7.294600298402369, + "inst": 0.020977376012616514, + "cenwaves": [ + 2263, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2391.478 (+10 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2561.4330433425607, + "rest": 2561.404070895214, + "n": 2, + "of": 7, + "z": 8.361300519294499, + "inst": 0.022468718103462255, + "cenwaves": [ + 2513 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "HD 46202" + ], + "forced_obs": [], + "id": null + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2569.02237584269, + "rest": 2568.993317552172, + "n": 2, + "of": 7, + "z": 11.003592554684792, + "inst": 0.0225352309686188, + "cenwaves": [ + 2513 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2569.9486678746007, + "rest": 2569.919599106765, + "n": 2, + "of": 7, + "z": 7.921382046771117, + "inst": 0.022543414752017023, + "cenwaves": [ + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Hyi", + "* del Pav", + "HD 27561" + ], + "forced_obs": [] + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2573.2751934821704, + "rest": 2573.2460870879017, + "n": 2, + "of": 7, + "z": 12.198965969659072, + "inst": 0.02257253074387092, + "cenwaves": [ + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* alf CMi", + "* bet Hyi", + "* iot Hor", + "* nu. Ind" + ], + "forced_obs": [] + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2580.957870329959, + "rest": 2580.928677036698, + "n": 2, + "of": 7, + "z": 8.613599232320368, + "inst": 0.022639974538583286, + "cenwaves": [ + 2513 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "HD 175640" + ], + "forced_obs": [], + "id": "Fe I 2580.951 (+3 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2604.0523166595576, + "rest": 2604.0228621443093, + "n": 2, + "of": 7, + "z": 8.387526207258864, + "inst": 0.022842514451167025, + "cenwaves": [ + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "V* GY And" + ], + "id": "Ti II 2604.097 (+8 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2638.7512902896256, + "rest": 2638.7214432932274, + "n": 3, + "of": 7, + "z": 9.451502376500484, + "inst": 0.023146776999551245, + "cenwaves": [ + 2513, + 2762 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen A", + "* bet Hyi" + ], + "forced_obs": [] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 1900.2984950416073, + "rest": 1900.277000707319, + "n": 4, + "of": 4, + "z": 11.938851458950115, + "inst": 0.06334294247286226, + "cenwaves": [ + 1978 + ], + "stars_rest": 4, + "stars_obs": 2 + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 1993.6333275333113, + "rest": 1993.6107774858835, + "n": 4, + "of": 4, + "z": 13.002989922087666, + "inst": 0.06645411768714449, + "cenwaves": [ + 1978 + ], + "stars_rest": 4, + "stars_obs": 2 + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2123.662424490649, + "rest": 2123.638403680136, + "n": 3, + "of": 4, + "z": 13.514318801547402, + "inst": 0.07078827063407775, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "* eps Eri", + "V* GY And" + ], + "forced_obs": [ + "* eps Eri" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2125.807092880238, + "rest": 2125.7830478113156, + "n": 3, + "of": 4, + "z": 10.780246686285833, + "inst": 0.07085976296818347, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "* gam Cru", + "* gam Dra" + ], + "forced_obs": [ + "* gam Cru" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2140.3059856875725, + "rest": 2140.2817766212306, + "n": 4, + "of": 4, + "z": 6.831508051056849, + "inst": 0.07134367538467895, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Ti II 2140.200 (-11 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2161.9043161938157, + "rest": 2161.8798628280983, + "n": 4, + "of": 4, + "z": 9.11415287677135, + "inst": 0.07206307240401148, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "* gam Cru" + ], + "forced_obs": [] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2261.5723384957832, + "rest": 2261.546757782023, + "n": 2, + "of": 4, + "z": 8.47562009727945, + "inst": 0.07538581478899856, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "* gam Cru" + ], + "forced_obs": [ + "V* GY And" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2268.310323361329, + "rest": 2268.2846664340163, + "n": 3, + "of": 4, + "z": 9.471367362273783, + "inst": 0.07560941936709098, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2294.392075712115, + "rest": 2294.3661237733054, + "n": 4, + "of": 4, + "z": 13.86421225291681, + "inst": 0.07647994349997238, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "V* DX Cha", + "V* GY And" + ], + "forced_obs": [ + "V* GY And" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2295.020814006035, + "rest": 2294.994854955547, + "n": 2, + "of": 4, + "z": 10.63737650077116, + "inst": 0.07650087673568767, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Aqr", + "* bet Dra", + "* omi Aql", + "* sig Boo", + "HD 27561", + "V* GY And", + "V* S Dor" + ], + "forced_obs": [ + "* alf Aqr", + "* sig Boo" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2315.11002418379, + "rest": 2315.0838379036322, + "n": 4, + "of": 4, + "z": 12.197249379779262, + "inst": 0.07717075584034777, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "V* GY And", + "V* S Dor" + ], + "forced_obs": [ + "* bet Dra", + "* sig Boo" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2316.0724569028084, + "rest": 2316.046259736545, + "n": 2, + "of": 4, + "z": 10.0194690957426, + "inst": 0.07720241753524432, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "V* GY And", + "V* S Dor" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2326.1593817819135, + "rest": 2326.133070522135, + "n": 4, + "of": 4, + "z": 20.400011868071054, + "inst": 0.07753909276147965, + "cenwaves": [ + 1978 + ], + "stars_rest": 6, + "stars_obs": 2 + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2335.142310004892, + "rest": 2335.115897138938, + "n": 4, + "of": 4, + "z": 25.939234703595577, + "inst": 0.07783821657026918, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2344.9275901618776, + "rest": 2344.9010666143213, + "n": 4, + "of": 4, + "z": 11.438075480270358, + "inst": 0.07816349260214152, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "* alf Her", + "* gam Dra", + "HD 269357", + "SK -69 140", + "V* S Dor" + ] + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2350.9160159738494, + "rest": 2350.889424691026, + "n": 4, + "of": 4, + "z": 35.524067884629694, + "inst": 0.07836405488889263, + "cenwaves": [ + 1978 + ], + "stars_rest": 5, + "stars_obs": 1 + }, + { + "star": "* alf Aqr", + "mode": "E230M", + "lam": 2326.2000893486816, + "rest": 2326.1471018297016, + "n": 5, + "of": 5, + "z": 8.297792096330845, + "inst": 0.07753890865952397, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 6, + "stars_obs": 3 + }, + { + "star": "* bet Dra", + "mode": "E230M", + "lam": 2325.9804148693747, + "rest": 2326.141999678634, + "n": 4, + "of": 4, + "z": 7.9993982353269155, + "inst": 0.07753288296233041, + "cenwaves": [ + 1978 + ], + "stars_rest": 6, + "stars_obs": 2 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 1900.3993607514647, + "rest": 1900.2662500270762, + "n": 4, + "of": 5, + "z": 10.092942550218691, + "inst": 0.06334619135616726, + "cenwaves": [ + 1978 + ], + "stars_rest": 4, + "stars_obs": 1 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 1993.746064483371, + "rest": 1993.606415424141, + "n": 4, + "of": 5, + "z": 9.301414349301856, + "inst": 0.06645721256383434, + "cenwaves": [ + 1978 + ], + "stars_rest": 3, + "stars_obs": 1 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2237.537043406813, + "rest": 2237.3803183610967, + "n": 3, + "of": 5, + "z": 7.804095050153852, + "inst": 0.07458425665950633, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [ + "V* GY And" + ], + "id": null + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2250.1342132775962, + "rest": 2249.976605881337, + "n": 4, + "of": 5, + "z": 15.76723360156967, + "inst": 0.0750047019249242, + "cenwaves": [ + 1978 + ], + "stars_rest": 3, + "stars_obs": 0 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2251.880219226158, + "rest": 2251.7224895334375, + "n": 4, + "of": 5, + "z": 8.488984304863006, + "inst": 0.07506190262055248, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2261.7904164819, + "rest": 2261.6319926437477, + "n": 3, + "of": 5, + "z": 8.07390055301785, + "inst": 0.07539229731724101, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Ti II 2261.607 (-3 km/s)" + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2268.5489434569868, + "rest": 2268.3900462275883, + "n": 4, + "of": 5, + "z": 11.761413190553988, + "inst": 0.07561723660766716, + "cenwaves": [ + 1978 + ], + "stars_rest": 3, + "stars_obs": 0 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2269.6924000665363, + "rest": 2269.5334227453736, + "n": 4, + "of": 5, + "z": 7.298104106583247, + "inst": 0.07565652295619739, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B", + "* bet Gem", + "* eps Eri", + "* gam Dra" + ], + "forced_obs": [ + "* eps Eri", + "V* GY And" + ] + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2280.8930559872515, + "rest": 2280.733294132346, + "n": 5, + "of": 5, + "z": 16.425560567793973, + "inst": 0.07602967932884952, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2291.88794818255, + "rest": 2291.7274162063245, + "n": 5, + "of": 5, + "z": 8.889783060379262, + "inst": 0.07639637549792157, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2317.052563503334, + "rest": 2316.890268908028, + "n": 3, + "of": 5, + "z": 6.88815518846679, + "inst": 0.07723510362851733, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [ + "* bet Gem", + "V* GY And" + ] + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2326.29411081609, + "rest": 2326.1311689099693, + "n": 5, + "of": 5, + "z": 45.770159068396914, + "inst": 0.07754227217891561, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 6, + "stars_obs": 2 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2327.8311911307146, + "rest": 2327.668141562027, + "n": 5, + "of": 5, + "z": 16.598072901282702, + "inst": 0.07759366329362458, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 3, + "stars_obs": 2 + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2333.848445116478, + "rest": 2333.6849740779385, + "n": 4, + "of": 5, + "z": 12.373518389714262, + "inst": 0.07779503679317232, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "V* GY And" + ], + "id": "Ti II 2333.660 (-3 km/s)" + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2339.047585027986, + "rest": 2338.8837498232115, + "n": 5, + "of": 5, + "z": 20.26374324256109, + "inst": 0.07796774784433835, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Her", + "* alf Ori" + ], + "forced_obs": [ + "* alf Ori", + "V* GY And" + ] + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2345.3245262714163, + "rest": 2345.1602514073716, + "n": 5, + "of": 5, + "z": 19.401921423200164, + "inst": 0.07817732013442126, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Her", + "* alf Ori", + "* gam Dra" + ], + "forced_obs": [ + "* alf Ori" + ] + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2351.052945093438, + "rest": 2350.888268990583, + "n": 5, + "of": 5, + "z": 11.586199810532117, + "inst": 0.07836783980011575, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 5, + "stars_obs": 1 + }, + { + "star": "V* S Dor", + "mode": "E230M", + "lam": 2329.268047934766, + "rest": 2327.5546823586324, + "n": 2, + "of": 2, + "z": 10.995076179978668, + "inst": 0.07764209046886351, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 3, + "stars_obs": 0 + }, + { + "star": "HD 269445", + "mode": "E230M", + "lam": 2350.1107619616387, + "rest": 2347.933504006358, + "n": 2, + "of": 5, + "z": 6.333079211656349, + "inst": 0.07833570935177453, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 7 + }, + { + "star": "HD 46223", + "mode": "E230M", + "lam": 2564.054655837176, + "rest": 2563.794678122143, + "n": 2, + "of": 4, + "z": 7.198130846030805, + "inst": 0.08546823330624155, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem", + "* nu. Ind", + "HD 128279", + "HD 26345", + "V* S Dor" + ], + "forced_obs": [ + "HD 26345" + ] + }, + { + "star": "HD 46223", + "mode": "E230M", + "lam": 2616.5988497875205, + "rest": 2616.3335444483473, + "n": 2, + "of": 4, + "z": 14.75309886411135, + "inst": 0.08721940660492916, + "cenwaves": [ + 2707 + ], + "stars_rest": 3, + "stars_obs": 4 + }, + { + "star": "HD 46223", + "mode": "E230M", + "lam": 2744.396154892783, + "rest": 2744.11789177547, + "n": 2, + "of": 4, + "z": 10.462956319084473, + "inst": 0.09148039785391808, + "cenwaves": [ + 2707 + ], + "stars_rest": 2, + "stars_obs": 3 + }, + { + "star": "HD 46223", + "mode": "E230M", + "lam": 3062.297823895289, + "rest": 3061.9873277094166, + "n": 2, + "of": 4, + "z": 6.9833655414349645, + "inst": 0.10207645304012168, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 2 + }, + { + "star": "HD 101190", + "mode": "E230M", + "lam": 2400.187075729244, + "rest": 2400.2166988953677, + "n": 2, + "of": 4, + "z": 8.405990092566775, + "inst": 0.08000621731110376, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "* alf Ori", + "* gam Cru", + "* zet Pup" + ], + "forced_obs": [ + "* gam Cru", + "* zet Pup", + "BD+28 4211", + "HD 46223" + ] + }, + { + "star": "HD 101190", + "mode": "E230M", + "lam": 2744.382940041587, + "rest": 2744.4168112812754, + "n": 2, + "of": 4, + "z": 12.65973494057244, + "inst": 0.09147913084178362, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 3 + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1279.9652039779787, + "rest": 1280.0446216862233, + "n": 2, + "of": 5, + "z": 7.301655460217556, + "inst": 0.027946925902335416, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "Feige 110" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "O III 1280.030 (-4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1291.960400279525, + "rest": 1292.0405622509709, + "n": 5, + "of": 5, + "z": 9.31762890113469, + "inst": 0.0282086535694017, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116", + "PG 0909+276" + ], + "forced_obs": [ + "LS IV -14 116" + ] + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1300.467691495055, + "rest": 1300.548381316453, + "n": 2, + "of": 5, + "z": 6.990888624819211, + "inst": 0.028394427111992568, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "HD 175640" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "Fe III 1300.524 (-6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1313.6103225088425, + "rest": 1313.691827788061, + "n": 5, + "of": 5, + "z": 11.638807132402553, + "inst": 0.028681191274203686, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "C I 1313.633 (-13 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1314.8155723685593, + "rest": 1314.89715242964, + "n": 4, + "of": 5, + "z": 14.369228024685887, + "inst": 0.028707541926422928, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "Fe II 1314.962 (+15 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1321.5013325841026, + "rest": 1321.5833274750182, + "n": 2, + "of": 5, + "z": 8.45475193172586, + "inst": 0.028853439110096996, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1338.5392491101638, + "rest": 1338.6223011487891, + "n": 4, + "of": 5, + "z": 8.39308890919372, + "inst": 0.02922567395153872, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116", + "V* TW Hya" + ], + "forced_obs": [ + "LS IV -14 116" + ] + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1344.9960795436914, + "rest": 1345.0795322077977, + "n": 4, + "of": 5, + "z": 11.176684246417512, + "inst": 0.029366670084858226, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1345.083 (+1 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1362.606918100275, + "rest": 1362.691463460053, + "n": 5, + "of": 5, + "z": 11.267329878867434, + "inst": 0.029751117752036173, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* ksi Oct" + ], + "forced_obs": [ + "* alf Lyr", + "LS IV -14 116" + ] + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1369.103148889385, + "rest": 1369.188097319309, + "n": 4, + "of": 5, + "z": 9.029802317559332, + "inst": 0.029892807905211972, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1369.169 (-4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1380.022427658977, + "rest": 1380.1080535948931, + "n": 3, + "of": 5, + "z": 14.325651913431923, + "inst": 0.030131380140346633, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1397.1021189025053, + "rest": 1397.1888045781175, + "n": 3, + "of": 5, + "z": 21.265170152192734, + "inst": 0.030504262915550074, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1405.2194071266429, + "rest": 1405.3065964537807, + "n": 2, + "of": 5, + "z": 12.576392142220595, + "inst": 0.030681729787765302, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1426.8532551978535, + "rest": 1426.9417868354144, + "n": 4, + "of": 5, + "z": 14.159273994327862, + "inst": 0.03115400176237208, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1426.962 (+4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1436.1971839985135, + "rest": 1436.2862953966874, + "n": 2, + "of": 5, + "z": 7.702562937421136, + "inst": 0.03135792357560428, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1437.0078318676383, + "rest": 1437.0969935638952, + "n": 2, + "of": 5, + "z": 7.34638637562733, + "inst": 0.03137552439718883, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "HD 57095" + ], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1437.073383214193, + "rest": 1437.1625489776993, + "n": 3, + "of": 5, + "z": 8.491937982326165, + "inst": 0.03137687740147043, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1443.357388469013, + "rest": 1443.4469441347558, + "n": 3, + "of": 5, + "z": 13.304881065760256, + "inst": 0.03151419190119909, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1443.475 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1471.7424876369419, + "rest": 1471.8338045064404, + "n": 5, + "of": 5, + "z": 12.842891804659537, + "inst": 0.032134018970640436, + "cenwaves": [ + 1425 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra", + "* gam Cru", + "LS IV -14 116" + ], + "forced_obs": [ + "* bet Dra", + "LS IV -14 116" + ] + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1472.2550871958993, + "rest": 1472.3464358705453, + "n": 4, + "of": 5, + "z": 11.563686815964978, + "inst": 0.032145210584236895, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen A", + "* pi.03 Ori" + ], + "forced_obs": [ + "* alf Cen A", + "BD+05 3409", + "LS IV -14 116" + ] + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1482.503573005104, + "rest": 1482.595557565205, + "n": 4, + "of": 5, + "z": 8.686698369028653, + "inst": 0.032368776248810974, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1490.1518658541836, + "rest": 1490.2443249661615, + "n": 3, + "of": 5, + "z": 14.840188739574003, + "inst": 0.03253564065937011, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1500.0823078370624, + "rest": 1500.1753831009028, + "n": 4, + "of": 5, + "z": 9.40134672438023, + "inst": 0.03275233695121244, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116" + ], + "forced_obs": [ + "V* S Dor" + ], + "id": "Si III 1500.240 (+13 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1518.9716906458852, + "rest": 1519.0659379349402, + "n": 2, + "of": 5, + "z": 15.944324882666995, + "inst": 0.03316528705846731, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "O IV 1519.020 (-9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1530.0061118388555, + "rest": 1530.1010437781183, + "n": 2, + "of": 5, + "z": 6.546989682804278, + "inst": 0.03340565686385478, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1555.738821179763, + "rest": 1555.8353497505564, + "n": 4, + "of": 5, + "z": 12.83441691931724, + "inst": 0.033967888195236606, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* TW Hya" + ], + "forced_obs": [], + "id": "Fe III 1555.861 (+5 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1557.8976186889856, + "rest": 1557.9942812061943, + "n": 4, + "of": 5, + "z": 12.904794028395102, + "inst": 0.03401489725268373, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1565.6448394308609, + "rest": 1565.7419826381029, + "n": 3, + "of": 5, + "z": 7.775602664172193, + "inst": 0.03418447562224464, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1626.5744421385707, + "rest": 1626.6753658309353, + "n": 4, + "of": 5, + "z": 8.378037737518657, + "inst": 0.03551455181256379, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1627.9876850398664, + "rest": 1628.08869641939, + "n": 5, + "of": 5, + "z": 7.727348775401457, + "inst": 0.03554533937312881, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Mg I 1628.104 (+3 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1682.2609167703108, + "rest": 1682.3652956286298, + "n": 4, + "of": 5, + "z": 8.616635782511901, + "inst": 0.03673040881937846, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1684.084230720679, + "rest": 1684.1887227097416, + "n": 4, + "of": 5, + "z": 13.345968214268815, + "inst": 0.03677046547554377, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1692.06940032115, + "rest": 1692.1743877642043, + "n": 3, + "of": 5, + "z": 8.959741590431209, + "inst": 0.03694474296875988, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1706.3452931273348, + "rest": 1706.4511663434448, + "n": 2, + "of": 5, + "z": 7.067359195651734, + "inst": 0.037256534676121396, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1706.3703070306904, + "rest": 1706.4761817988324, + "n": 3, + "of": 5, + "z": 6.692300560276422, + "inst": 0.03725653160840938, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf CMi" + ], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1719.6286813273246, + "rest": 1719.7353787347838, + "n": 5, + "of": 5, + "z": 9.099101784944818, + "inst": 0.03754638395879118, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116" + ], + "forced_obs": [ + "* alf CMi", + "LS IV -14 116" + ] + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1682.2319774233304, + "rest": 1682.3363544860563, + "n": 2, + "of": 2, + "z": 7.634370405752729, + "inst": 0.056075219474299595, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1781.5988292944617, + "rest": 1781.7093717495175, + "n": 2, + "of": 2, + "z": 8.704276874969873, + "inst": 0.05938611301225093, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1782.4695654363252, + "rest": 1782.5801619177473, + "n": 2, + "of": 2, + "z": 7.69201879579577, + "inst": 0.05941532459877014, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf CMi" + ], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1851.8908387471095, + "rest": 1852.0057425943978, + "n": 2, + "of": 2, + "z": 9.47592631824698, + "inst": 0.06172952608617978, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1915.9731548040943, + "rest": 1916.0920347521896, + "n": 2, + "of": 2, + "z": 9.162998000489647, + "inst": 0.06386543879606789, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1916.132 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1921.8339524875767, + "rest": 1921.9531960792453, + "n": 2, + "of": 2, + "z": 10.367683576633913, + "inst": 0.06406125992873138, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1921.996 (+7 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1935.7579230993074, + "rest": 1935.8780306283957, + "n": 2, + "of": 2, + "z": 7.40862119528651, + "inst": 0.06452523330262641, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Al III 1935.840 (-6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1944.9863066705711, + "rest": 1945.1069867910642, + "n": 2, + "of": 2, + "z": 8.36807961505507, + "inst": 0.06483318663836278, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 1945.091 (-2 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1959.9326945647226, + "rest": 1960.0543020603266, + "n": 2, + "of": 2, + "z": 9.279441861529682, + "inst": 0.06533111476804068, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1960.049 (-1 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1965.7998744948045, + "rest": 1965.9218460299796, + "n": 2, + "of": 2, + "z": 18.81219196307627, + "inst": 0.06552614080042818, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* sig Boo" + ], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1976.333369933469, + "rest": 1976.4559950380262, + "n": 2, + "of": 2, + "z": 9.805398656764455, + "inst": 0.06587741440098718, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1976.515 (+9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2023.2177569894397, + "rest": 2023.3432911188368, + "n": 2, + "of": 2, + "z": 14.397798168803728, + "inst": 0.06744039490717875, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* sig Boo" + ], + "id": "Fe III 2023.298 (-7 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2076.494319773502, + "rest": 2076.623159541604, + "n": 2, + "of": 2, + "z": 9.665941756334924, + "inst": 0.06921639189360419, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2138.184663904105, + "rest": 2138.317331358879, + "n": 2, + "of": 2, + "z": 7.557037081917375, + "inst": 0.07127249681661142, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Ti II 2138.359 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2169.9682511562783, + "rest": 2170.1028906800207, + "n": 2, + "of": 2, + "z": 12.36094274082628, + "inst": 0.07233161103179245, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "V* S Dor" + ], + "forced_obs": [], + "id": "Fe II 2170.176 (+10 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2176.808771576893, + "rest": 2176.943835532841, + "n": 2, + "of": 2, + "z": 13.28780282702862, + "inst": 0.07255987437529225, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* omi Aql", + "* sig Boo" + ] + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2198.28890787781, + "rest": 2198.425304606862, + "n": 2, + "of": 2, + "z": 11.95125027245516, + "inst": 0.07327616165075522, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "N V 2198.450 (+3 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2205.384108068704, + "rest": 2205.5209450320194, + "n": 2, + "of": 2, + "z": 7.207686770116782, + "inst": 0.0735125441492846, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Co II 2205.524 (+0 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2206.301366136868, + "rest": 2206.4382600130853, + "n": 2, + "of": 2, + "z": 10.811588791164501, + "inst": 0.07354349976717947, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2206.440 (+0 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2216.1371948684596, + "rest": 2216.274699026092, + "n": 2, + "of": 2, + "z": 9.11351674890013, + "inst": 0.07387096915942523, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Cr II 2216.317 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2226.2950865776374, + "rest": 2226.4332209996537, + "n": 2, + "of": 2, + "z": 16.90322280501193, + "inst": 0.07420979613994522, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* sig Boo" + ], + "id": "Cr II 2226.459 (+3 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2237.6497186391343, + "rest": 2237.788557579409, + "n": 2, + "of": 2, + "z": 21.902799023998014, + "inst": 0.07458820395591947, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2237.817 (+4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2253.1906208503265, + "rest": 2253.3304240534057, + "n": 2, + "of": 2, + "z": 9.507045415718569, + "inst": 0.0751055281629829, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Ti II 2253.264 (-9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2255.2337532475944, + "rest": 2255.373683220442, + "n": 2, + "of": 2, + "z": 9.9330885968188, + "inst": 0.07517365942549717, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* gam Cru", + "* sig Boo" + ] + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2260.406364910352, + "rest": 2260.5466158270524, + "n": 2, + "of": 2, + "z": 13.123934174766678, + "inst": 0.07534669262593904, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2273.59831024161, + "rest": 2273.7393796759247, + "n": 2, + "of": 2, + "z": 15.93032177177461, + "inst": 0.0757869319330387, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2293.677059720695, + "rest": 2293.8193749765865, + "n": 2, + "of": 2, + "z": 21.95469813301748, + "inst": 0.07645627787895745, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "BD+28 4211", + "V* S Dor" + ], + "forced_obs": [ + "* alf Aqr", + "* omi Aql", + "* sig Boo" + ] + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2305.153126807173, + "rest": 2305.296154115974, + "n": 2, + "of": 2, + "z": 12.194811114570786, + "inst": 0.07683832615360256, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra" + ], + "forced_obs": [ + "* sig Boo" + ], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2322.8120752760396, + "rest": 2322.9561982655773, + "n": 2, + "of": 2, + "z": 22.016846999271582, + "inst": 0.07742703170055985, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra" + ], + "forced_obs": [ + "* bet Dra" + ], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2336.507725244028, + "rest": 2336.6526980044264, + "n": 2, + "of": 2, + "z": 16.206536131190493, + "inst": 0.07788334617115597, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2342.020923035298, + "rest": 2342.166237871819, + "n": 2, + "of": 2, + "z": 15.034572456918818, + "inst": 0.07806714074404572, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* S Dor", + "V* V1027 Sco" + ], + "forced_obs": [ + "* bet Gem", + "V* V1027 Sco" + ] + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2358.2016057152964, + "rest": 2358.3479245109343, + "n": 2, + "of": 2, + "z": 7.997226272004696, + "inst": 0.07860631545225794, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Mn II 2358.448 (+13 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2402.4509074725756, + "rest": 2402.5999717945188, + "n": 2, + "of": 5, + "z": 10.203506957252541, + "inst": 0.021074006059776672, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2402.599 (-0 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2415.0902052730394, + "rest": 2415.240053822602, + "n": 2, + "of": 5, + "z": 8.856940545520372, + "inst": 0.021184866613096015, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Co II 2415.316 (+9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2441.9813769335674, + "rest": 2442.132893993507, + "n": 2, + "of": 5, + "z": 7.7527477614914355, + "inst": 0.021420850573670366, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2555.0819836253636, + "rest": 2555.2405182127773, + "n": 2, + "of": 5, + "z": 8.066380457170343, + "inst": 0.022413000235336992, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr" + ], + "forced_obs": [], + "id": null + }, + { + "star": "* eta Car", + "mode": "E140M", + "lam": 1526.237759098703, + "rest": 1526.3650442424341, + "n": 2, + "of": 5, + "z": 9.703553374110077, + "inst": 0.03332399130661809, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* rho01 Cnc", + "mode": "E230M", + "lam": 2933.29053700209, + "rest": 2933.022527527618, + "n": 4, + "of": 18, + "z": 6.881925074554011, + "inst": 0.09777556016826103, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* bet Dra", + "* bet Gem", + "* gam Cru", + "* gam Dra", + "HD 27561", + "HD 6655" + ], + "forced_obs": [ + "* gam Cru", + "HD 27561", + "HD 6655" + ] + }, + { + "star": "* rho01 Cnc", + "mode": "E230M", + "lam": 2943.984422348998, + "rest": 2943.7154357934783, + "n": 2, + "of": 18, + "z": 7.579349399576387, + "inst": 0.09813250906076341, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* bet Dra", + "* bet Gem" + ], + "forced_obs": [] + }, + { + "star": "* rho01 Cnc", + "mode": "E230M", + "lam": 2962.054257975305, + "rest": 2961.783620411442, + "n": 9, + "of": 18, + "z": 6.871740378063464, + "inst": 0.09873427587243767, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* alf Ori", + "* bet Dra", + "* bet Gem", + "* gam Cru", + "* gam Dra", + "BD+01 316", + "BD-20 2976", + "HD 209458", + "HD 27561", + "HD 6655", + "HD 97658" + ], + "forced_obs": [ + "* alf Ori", + "* gam Cru", + "BD-20 2976", + "HD 27561", + "HD 6655" + ] + }, + { + "star": "* rho01 Cnc", + "mode": "E230M", + "lam": 2989.451123923216, + "rest": 2989.1779831570443, + "n": 3, + "of": 18, + "z": 7.357191127180907, + "inst": 0.09964766517004782, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr", + "* bet Dra", + "* bet Gem", + "* gam Cru", + "* gam Dra", + "BD+01 316", + "HD 126238", + "HD 209458", + "HD 26345", + "HD 27561", + "HD 6655", + "HD 86226" + ], + "forced_obs": [ + "* gam Cru", + "HD 26345", + "HD 27561", + "HD 6655", + "HD 86226" + ] + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 1807.2236076624758, + "rest": 1807.4170748841664, + "n": 3, + "of": 5, + "z": 6.723376399347766, + "inst": 0.06023991121571601, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Ca II 1807.340 (-13 km/s)" + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2169.297124358274, + "rest": 2169.5293523381933, + "n": 5, + "of": 5, + "z": 9.164489760931724, + "inst": 0.07230889716922632, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Ori", + "* gam Cru" + ], + "forced_obs": [] + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2251.5190576143586, + "rest": 2251.760087631238, + "n": 4, + "of": 5, + "z": 7.835566975990176, + "inst": 0.07505060819316854, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2260.313833773738, + "rest": 2260.5558052905526, + "n": 5, + "of": 5, + "z": 11.82331897279946, + "inst": 0.07534316617909828, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 1 + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2268.1897522876357, + "rest": 2268.4325669386735, + "n": 2, + "of": 5, + "z": 10.298499932141105, + "inst": 0.07560637923366297, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 2 + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2280.5225374633133, + "rest": 2280.7666723658535, + "n": 5, + "of": 5, + "z": 8.619982055368649, + "inst": 0.07601708798430667, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 2 + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2291.452114613253, + "rest": 2291.697419550822, + "n": 2, + "of": 5, + "z": 6.083853218363422, + "inst": 0.07638144346167974, + "cenwaves": [ + 1978 + ], + "stars_rest": 2, + "stars_obs": 0 + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2325.8578777700445, + "rest": 2326.106865919464, + "n": 5, + "of": 5, + "z": 27.828215638627753, + "inst": 0.07752828299943909, + "cenwaves": [ + 1978 + ], + "stars_rest": 6, + "stars_obs": 2 + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2327.3993006034025, + "rest": 2327.648453765492, + "n": 5, + "of": 5, + "z": 12.560581185180551, + "inst": 0.07757987413993472, + "cenwaves": [ + 1978 + ], + "stars_rest": 3, + "stars_obs": 0 + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 2360.2386907347527, + "rest": 2360.49135942505, + "n": 5, + "of": 5, + "z": 10.424013274241752, + "inst": 0.07867429423388264, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Ori", + "* gam Cru", + "* gam Dra" + ], + "forced_obs": [ + "* gam Cru", + "* gam Dra", + "* sig Boo" + ] + } + ], + "identified": [ + { + "star": "* alf Cen A", + "mode": "E230H", + "lam": 2877.0915288216606, + "rest": 2877.237908863636, + "n": 5, + "of": 13, + "z": 11.194586173284828, + "inst": 0.025237594581974332, + "cenwaves": [ + 2812 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf CMi" + ], + "forced_obs": [], + "id": "Fe I 2877.300 (+7 km/s)" + }, + { + "star": "* alf Cen A", + "mode": "E140M", + "lam": 1472.8714964135672, + "rest": 1472.9464328517408, + "n": 7, + "of": 22, + "z": 7.77290780087414, + "inst": 0.03215875586563687, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "* alf Cen B" + ], + "id": "S I 1472.972 (+5 km/s)" + }, + { + "star": "* alf Cen A", + "mode": "E140M", + "lam": 1473.8890219548903, + "rest": 1473.9640101625089, + "n": 6, + "of": 22, + "z": 7.0186016076483835, + "inst": 0.03218078333811408, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "* alf Cen B" + ], + "id": "S I 1473.995 (+6 km/s)" + }, + { + "star": "* alf Cen A", + "mode": "E140M", + "lam": 1481.564346621875, + "rest": 1481.6397253330058, + "n": 17, + "of": 22, + "z": 8.43043825924841, + "inst": 0.03234841799035816, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "S I 1481.665 (+5 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2714.285139621991, + "rest": 2714.4896459779984, + "n": 6, + "of": 9, + "z": 10.281970678722644, + "inst": 0.023809552285629167, + "cenwaves": [ + 2713 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Co II 2714.440 (-5 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2820.5141922288794, + "rest": 2820.7267023557997, + "n": 7, + "of": 9, + "z": 8.702553693680748, + "inst": 0.02474129919211021, + "cenwaves": [ + 2713 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [ + "* ksi Dra" + ], + "id": "Fe I 2820.814 (+9 km/s)" + }, + { + "star": "* alf Cen B", + "mode": "E230H", + "lam": 2830.7847487357467, + "rest": 2830.998032692231, + "n": 2, + "of": 9, + "z": 7.584522357402867, + "inst": 0.024831452235175477, + "cenwaves": [ + 2713 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "* sig Dra" + ], + "forced_obs": [], + "id": "Fe I 2830.924 (-8 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2333.3621092257986, + "rest": 2333.191590500648, + "n": 3, + "of": 214, + "z": 7.865462908002775, + "inst": 0.07777849470203865, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2335.629544461146, + "rest": 2335.4588600351112, + "n": 4, + "of": 214, + "z": 7.3388723274105905, + "inst": 0.07785400723848925, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* GY And" + ], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2361.436322426226, + "rest": 2361.2637520782155, + "n": 5, + "of": 214, + "z": 8.130585393446877, + "inst": 0.07871405770741069, + "cenwaves": [ + 1978, + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* alf Her" + ], + "forced_obs": [ + "* alf Cen B" + ], + "id": "Fe II 2361.358 (+12 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2369.1827025879165, + "rest": 2369.0095661456576, + "n": 2, + "of": 214, + "z": 7.395709835956626, + "inst": 0.07897312998476957, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2369.228416065025, + "rest": 2369.055276282091, + "n": 4, + "of": 214, + "z": 7.5375600533097264, + "inst": 0.07897400409765822, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2379.9244691614554, + "rest": 2379.750547726445, + "n": 3, + "of": 214, + "z": 8.707777149921354, + "inst": 0.07933104133119308, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2380.4281143158955, + "rest": 2380.254156075226, + "n": 6, + "of": 214, + "z": 8.461339510420347, + "inst": 0.07934677591604529, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2392.121366165353, + "rest": 2391.9465533987654, + "n": 25, + "of": 214, + "z": 19.54994322593975, + "inst": 0.07973579352457101, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2403.2709327139705, + "rest": 2403.0953051532, + "n": 13, + "of": 214, + "z": 13.605516467970448, + "inst": 0.08010855454721809, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2403.7303537715857, + "rest": 2403.5546926369893, + "n": 6, + "of": 214, + "z": 7.941806782045823, + "inst": 0.08012407946845959, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra" + ], + "forced_obs": [], + "id": "Fe III 2403.552 (-0 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2419.5257692265986, + "rest": 2419.3489537859064, + "n": 2, + "of": 214, + "z": 6.272848963092774, + "inst": 0.08065062482605691, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe II 2419.342 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2439.3972703641266, + "rest": 2439.2190027428974, + "n": 7, + "of": 214, + "z": 7.952368727193575, + "inst": 0.08131127880364927, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2439.170 (-6 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2457.9034307288616, + "rest": 2457.7238107042226, + "n": 18, + "of": 214, + "z": 9.370988062079908, + "inst": 0.08192830541894298, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "S IV 2457.835 (+14 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2509.2441127853062, + "rest": 2509.060740857944, + "n": 71, + "of": 214, + "z": 26.264183238866273, + "inst": 0.08363899427656238, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe II 2509.121 (+7 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2516.8298895833177, + "rest": 2516.6459632983683, + "n": 25, + "of": 214, + "z": 13.2286112129943, + "inst": 0.08389421200692782, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Mn II 2516.599 (-6 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2517.10272299194, + "rest": 2516.91877676872, + "n": 9, + "of": 214, + "z": 9.254911186181669, + "inst": 0.08390235312702772, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2516.956 (+4 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2592.1664455593773, + "rest": 2591.9770137879746, + "n": 10, + "of": 214, + "z": 9.339179397170547, + "inst": 0.08640407265588482, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Mg I 2591.891 (-10 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2592.238287151853, + "rest": 2592.0488501303707, + "n": 9, + "of": 214, + "z": 17.112574835434447, + "inst": 0.08640726444311796, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2618.2417898812064, + "rest": 2618.050452561388, + "n": 28, + "of": 214, + "z": 15.007701747750946, + "inst": 0.0872728937954392, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2618.018 (-4 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2626.212571548421, + "rest": 2626.0206517354163, + "n": 10, + "of": 214, + "z": 8.94235069689623, + "inst": 0.08754000606057229, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2626.2958537607724, + "rest": 2626.1039278616245, + "n": 10, + "of": 214, + "z": 12.351023475479238, + "inst": 0.0875428471479257, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2645.777486622962, + "rest": 2645.5841370342864, + "n": 2, + "of": 214, + "z": 6.496973568817423, + "inst": 0.08819241306882185, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "N IV 2645.650 (+7 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2647.338469068028, + "rest": 2647.145005405015, + "n": 15, + "of": 214, + "z": 11.997631124691512, + "inst": 0.08824283887862826, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2687.924494008211, + "rest": 2687.7280643772474, + "n": 5, + "of": 214, + "z": 9.329263858840836, + "inst": 0.0895975191982149, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2687.723 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2715.7210291921147, + "rest": 2715.5225682305986, + "n": 38, + "of": 214, + "z": 17.696117377410353, + "inst": 0.0905211643987311, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2715.521 (-0 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2731.4368894847266, + "rest": 2731.237280030891, + "n": 33, + "of": 214, + "z": 20.201949954359176, + "inst": 0.09104658409827487, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2731.281 (+5 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2740.1850025888407, + "rest": 2739.984753835563, + "n": 46, + "of": 214, + "z": 23.72784665043461, + "inst": 0.09133725210092325, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Cr II 2740.095 (+12 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2747.126587933818, + "rest": 2746.925831899532, + "n": 49, + "of": 214, + "z": 23.484242627255004, + "inst": 0.09156989400266091, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2746.982 (+6 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2748.313896684585, + "rest": 2748.1130538834946, + "n": 19, + "of": 214, + "z": 12.566675867021594, + "inst": 0.09160946041279834, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2748.197 (+9 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2756.3724575713104, + "rest": 2756.1710258622556, + "n": 73, + "of": 214, + "z": 46.51977922884288, + "inst": 0.09187689922212372, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "O V 2756.140 (-3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2762.5344957276975, + "rest": 2762.3326137058148, + "n": 43, + "of": 214, + "z": 29.30536529691467, + "inst": 0.09208190204437293, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Cen B" + ], + "forced_obs": [ + "V* S Dor" + ], + "id": "Ti II 2762.235 (-11 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2768.2459679863055, + "rest": 2768.043668578298, + "n": 7, + "of": 214, + "z": 8.105229817757408, + "inst": 0.09227455889968866, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr" + ], + "forced_obs": [ + "HD 27561" + ], + "id": "Fe I 2768.038 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2768.330249879543, + "rest": 2768.1279443123367, + "n": 5, + "of": 214, + "z": 9.011969355849649, + "inst": 0.09227708217096205, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "HD 27561" + ], + "id": "Fe I 2768.104 (-3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2846.5741330003552, + "rest": 2846.366109483437, + "n": 34, + "of": 214, + "z": 18.178500937257034, + "inst": 0.09488398863255822, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2846.460 (+10 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2852.6657972600988, + "rest": 2852.4573285731744, + "n": 6, + "of": 214, + "z": 8.552270665590527, + "inst": 0.0950883029525867, + "cenwaves": [ + 2707 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2881.542806767544, + "rest": 2881.3322277905677, + "n": 12, + "of": 214, + "z": 16.008793276084337, + "inst": 0.09605038064618361, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2918.2755228350807, + "rest": 2918.0622594843885, + "n": 2, + "of": 214, + "z": 10.059316799523893, + "inst": 0.09727601050608167, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2918.025 (-4 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2918.3656735147824, + "rest": 2918.1524035760094, + "n": 2, + "of": 214, + "z": 10.249424461833232, + "inst": 0.09727931397530187, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* gam Cru" + ], + "forced_obs": [ + "* gam Cru" + ], + "id": "Fe I 2918.159 (+1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2933.7644591398903, + "rest": 2933.550063880155, + "n": 4, + "of": 214, + "z": 6.394333453147415, + "inst": 0.09779250215005551, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2933.8254750567908, + "rest": 2933.611075338101, + "n": 7, + "of": 214, + "z": 12.079649772334344, + "inst": 0.09779381325332179, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2946.2847563800806, + "rest": 2946.0694461551475, + "n": 8, + "of": 214, + "z": 10.900397932547637, + "inst": 0.09820874699041936, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2946.099 (+3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2954.5396858843296, + "rest": 2954.3237724010983, + "n": 31, + "of": 214, + "z": 10.606912921141687, + "inst": 0.0984826298677005, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2954.344 (+2 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2954.666304191312, + "rest": 2954.450381454998, + "n": 2, + "of": 214, + "z": 7.3494241758602055, + "inst": 0.09848936844603563, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2954.344 (-11 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2965.478063206421, + "rest": 2965.2613503624098, + "n": 31, + "of": 214, + "z": 11.936258045460749, + "inst": 0.09884693923186684, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* GY And" + ], + "forced_obs": [], + "id": "Fe I 2965.254 (-1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2971.8633015349988, + "rest": 2971.6461220670135, + "n": 37, + "of": 214, + "z": 15.898600040285068, + "inst": 0.09906003684637205, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2971.621 (-3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2980.2015770605826, + "rest": 2979.983788243492, + "n": 8, + "of": 214, + "z": 10.045005738916169, + "inst": 0.09933957975447114, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 2988.682396836241, + "rest": 2988.4639882531183, + "n": 59, + "of": 214, + "z": 20.32954776099469, + "inst": 0.09962169248524504, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2988.471 (+1 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3003.9222368262153, + "rest": 3003.702714537648, + "n": 2, + "of": 214, + "z": 8.458457884824035, + "inst": 0.1001306948830466, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 3003.686 (-2 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3004.016194808163, + "rest": 3003.796665653282, + "n": 17, + "of": 214, + "z": 10.02973784601318, + "inst": 0.10013195303445341, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 3003.686 (-11 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3017.230484077009, + "rest": 3017.009989240997, + "n": 11, + "of": 214, + "z": 10.626196556102343, + "inst": 0.10057378294183965, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3026.3233207172093, + "rest": 3026.102161389859, + "n": 3, + "of": 214, + "z": 7.184321599672857, + "inst": 0.10087634893615452, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 3026.130 (+3 km/s)" + }, + { + "star": "* alf Ori", + "mode": "E230M", + "lam": 3032.6668400615995, + "rest": 3032.4452171590383, + "n": 45, + "of": 214, + "z": 16.189555323094712, + "inst": 0.10108627939229176, + "cenwaves": [ + 2707 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* bet Pic", + "mode": "E230H", + "lam": 1893.9589551418333, + "rest": 1893.8525732883772, + "n": 2, + "of": 38, + "z": 6.887794808505676, + "inst": 0.016613609435571473, + "cenwaves": [ + 1763 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Co II 1893.872 (+3 km/s)" + }, + { + "star": "V* TW Hya", + "mode": "E140M", + "lam": 1455.0399573818495, + "rest": 1454.980092035153, + "n": 3, + "of": 10, + "z": 9.786556293961887, + "inst": 0.03176898643229927, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1455.038 (+12 km/s)" + }, + { + "star": "V* TW Hya", + "mode": "E140M", + "lam": 1463.9020381462021, + "rest": 1463.8418081830323, + "n": 2, + "of": 10, + "z": 12.33537321889213, + "inst": 0.03196280132489511, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Cen B", + "mode": "E230M", + "lam": 1807.8747584109356, + "rest": 1808.010971763602, + "n": 2, + "of": 3, + "z": 11.587574851946242, + "inst": 0.0602617932146294, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* eps Eri" + ], + "forced_obs": [], + "id": "Co II 1808.019 (+1 km/s)" + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1707.287363701478, + "rest": 1707.3130211955304, + "n": 3, + "of": 6, + "z": 8.102649194721948, + "inst": 0.03727707378607036, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1708.9073913423174, + "rest": 1708.9330731825055, + "n": 6, + "of": 6, + "z": 12.551492963962708, + "inst": 0.037312202994110893, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1717.3406341673278, + "rest": 1717.3664427441638, + "n": 6, + "of": 6, + "z": 17.53304295343984, + "inst": 0.03749644207497945, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1717.413 (+8 km/s)" + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1727.032421332307, + "rest": 1727.058375559475, + "n": 6, + "of": 6, + "z": 15.517176069598422, + "inst": 0.03770816130467853, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "Fe III 1727.032 (-5 km/s)" + }, + { + "star": "* alf CMi", + "mode": "E140M", + "lam": 1728.9477126624556, + "rest": 1728.9736956730476, + "n": 4, + "of": 6, + "z": 8.568919779368645, + "inst": 0.03774973030468663, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "S III 1728.939 (-6 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2391.427136212595, + "rest": 2391.4000867072536, + "n": 3, + "of": 7, + "z": 7.294600298402369, + "inst": 0.020977376012616514, + "cenwaves": [ + 2263, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2391.478 (+10 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2561.4330433425607, + "rest": 2561.404070895214, + "n": 2, + "of": 7, + "z": 8.361300519294499, + "inst": 0.022468718103462255, + "cenwaves": [ + 2513 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "HD 46202" + ], + "forced_obs": [], + "id": null + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2580.957870329959, + "rest": 2580.928677036698, + "n": 2, + "of": 7, + "z": 8.613599232320368, + "inst": 0.022639974538583286, + "cenwaves": [ + 2513 + ], + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "HD 175640" + ], + "forced_obs": [], + "id": "Fe I 2580.951 (+3 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230H", + "lam": 2604.0523166595576, + "rest": 2604.0228621443093, + "n": 2, + "of": 7, + "z": 8.387526207258864, + "inst": 0.022842514451167025, + "cenwaves": [ + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "V* GY And" + ], + "id": "Ti II 2604.097 (+8 km/s)" + }, + { + "star": "* bet Gem", + "mode": "E230M", + "lam": 2140.3059856875725, + "rest": 2140.2817766212306, + "n": 4, + "of": 4, + "z": 6.831508051056849, + "inst": 0.07134367538467895, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Ti II 2140.200 (-11 km/s)" + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2237.537043406813, + "rest": 2237.3803183610967, + "n": 3, + "of": 5, + "z": 7.804095050153852, + "inst": 0.07458425665950633, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [ + "V* GY And" + ], + "id": null + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2261.7904164819, + "rest": 2261.6319926437477, + "n": 3, + "of": 5, + "z": 8.07390055301785, + "inst": 0.07539229731724101, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Ti II 2261.607 (-3 km/s)" + }, + { + "star": "* gam Cru", + "mode": "E230M", + "lam": 2333.848445116478, + "rest": 2333.6849740779385, + "n": 4, + "of": 5, + "z": 12.373518389714262, + "inst": 0.07779503679317232, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "V* GY And" + ], + "id": "Ti II 2333.660 (-3 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1279.9652039779787, + "rest": 1280.0446216862233, + "n": 2, + "of": 5, + "z": 7.301655460217556, + "inst": 0.027946925902335416, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "Feige 110" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "O III 1280.030 (-4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1300.467691495055, + "rest": 1300.548381316453, + "n": 2, + "of": 5, + "z": 6.990888624819211, + "inst": 0.028394427111992568, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "HD 175640" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "Fe III 1300.524 (-6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1313.6103225088425, + "rest": 1313.691827788061, + "n": 5, + "of": 5, + "z": 11.638807132402553, + "inst": 0.028681191274203686, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "C I 1313.633 (-13 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1314.8155723685593, + "rest": 1314.89715242964, + "n": 4, + "of": 5, + "z": 14.369228024685887, + "inst": 0.028707541926422928, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116" + ], + "forced_obs": [ + "LS IV -14 116" + ], + "id": "Fe II 1314.962 (+15 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1321.5013325841026, + "rest": 1321.5833274750182, + "n": 2, + "of": 5, + "z": 8.45475193172586, + "inst": 0.028853439110096996, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1344.9960795436914, + "rest": 1345.0795322077977, + "n": 4, + "of": 5, + "z": 11.176684246417512, + "inst": 0.029366670084858226, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1345.083 (+1 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1369.103148889385, + "rest": 1369.188097319309, + "n": 4, + "of": 5, + "z": 9.029802317559332, + "inst": 0.029892807905211972, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1369.169 (-4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1380.022427658977, + "rest": 1380.1080535948931, + "n": 3, + "of": 5, + "z": 14.325651913431923, + "inst": 0.030131380140346633, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1397.1021189025053, + "rest": 1397.1888045781175, + "n": 3, + "of": 5, + "z": 21.265170152192734, + "inst": 0.030504262915550074, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1405.2194071266429, + "rest": 1405.3065964537807, + "n": 2, + "of": 5, + "z": 12.576392142220595, + "inst": 0.030681729787765302, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1426.8532551978535, + "rest": 1426.9417868354144, + "n": 4, + "of": 5, + "z": 14.159273994327862, + "inst": 0.03115400176237208, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1426.962 (+4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1436.1971839985135, + "rest": 1436.2862953966874, + "n": 2, + "of": 5, + "z": 7.702562937421136, + "inst": 0.03135792357560428, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1437.0078318676383, + "rest": 1437.0969935638952, + "n": 2, + "of": 5, + "z": 7.34638637562733, + "inst": 0.03137552439718883, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "HD 57095" + ], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1437.073383214193, + "rest": 1437.1625489776993, + "n": 3, + "of": 5, + "z": 8.491937982326165, + "inst": 0.03137687740147043, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1443.357388469013, + "rest": 1443.4469441347558, + "n": 3, + "of": 5, + "z": 13.304881065760256, + "inst": 0.03151419190119909, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1443.475 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1482.503573005104, + "rest": 1482.595557565205, + "n": 4, + "of": 5, + "z": 8.686698369028653, + "inst": 0.032368776248810974, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1490.1518658541836, + "rest": 1490.2443249661615, + "n": 3, + "of": 5, + "z": 14.840188739574003, + "inst": 0.03253564065937011, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1500.0823078370624, + "rest": 1500.1753831009028, + "n": 4, + "of": 5, + "z": 9.40134672438023, + "inst": 0.03275233695121244, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "LS IV -14 116" + ], + "forced_obs": [ + "V* S Dor" + ], + "id": "Si III 1500.240 (+13 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1518.9716906458852, + "rest": 1519.0659379349402, + "n": 2, + "of": 5, + "z": 15.944324882666995, + "inst": 0.03316528705846731, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "O IV 1519.020 (-9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1530.0061118388555, + "rest": 1530.1010437781183, + "n": 2, + "of": 5, + "z": 6.546989682804278, + "inst": 0.03340565686385478, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1555.738821179763, + "rest": 1555.8353497505564, + "n": 4, + "of": 5, + "z": 12.83441691931724, + "inst": 0.033967888195236606, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "V* TW Hya" + ], + "forced_obs": [], + "id": "Fe III 1555.861 (+5 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1557.8976186889856, + "rest": 1557.9942812061943, + "n": 4, + "of": 5, + "z": 12.904794028395102, + "inst": 0.03401489725268373, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1565.6448394308609, + "rest": 1565.7419826381029, + "n": 3, + "of": 5, + "z": 7.775602664172193, + "inst": 0.03418447562224464, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1626.5744421385707, + "rest": 1626.6753658309353, + "n": 4, + "of": 5, + "z": 8.378037737518657, + "inst": 0.03551455181256379, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1627.9876850398664, + "rest": 1628.08869641939, + "n": 5, + "of": 5, + "z": 7.727348775401457, + "inst": 0.03554533937312881, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Mg I 1628.104 (+3 km/s)" + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1682.2609167703108, + "rest": 1682.3652956286298, + "n": 4, + "of": 5, + "z": 8.616635782511901, + "inst": 0.03673040881937846, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1684.084230720679, + "rest": 1684.1887227097416, + "n": 4, + "of": 5, + "z": 13.345968214268815, + "inst": 0.03677046547554377, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1692.06940032115, + "rest": 1692.1743877642043, + "n": 3, + "of": 5, + "z": 8.959741590431209, + "inst": 0.03694474296875988, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1706.3452931273348, + "rest": 1706.4511663434448, + "n": 2, + "of": 5, + "z": 7.067359195651734, + "inst": 0.037256534676121396, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E140M", + "lam": 1706.3703070306904, + "rest": 1706.4761817988324, + "n": 3, + "of": 5, + "z": 6.692300560276422, + "inst": 0.03725653160840938, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf CMi" + ], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1682.2319774233304, + "rest": 1682.3363544860563, + "n": 2, + "of": 2, + "z": 7.634370405752729, + "inst": 0.056075219474299595, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1781.5988292944617, + "rest": 1781.7093717495175, + "n": 2, + "of": 2, + "z": 8.704276874969873, + "inst": 0.05938611301225093, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1782.4695654363252, + "rest": 1782.5801619177473, + "n": 2, + "of": 2, + "z": 7.69201879579577, + "inst": 0.05941532459877014, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf CMi" + ], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1851.8908387471095, + "rest": 1852.0057425943978, + "n": 2, + "of": 2, + "z": 9.47592631824698, + "inst": 0.06172952608617978, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1915.9731548040943, + "rest": 1916.0920347521896, + "n": 2, + "of": 2, + "z": 9.162998000489647, + "inst": 0.06386543879606789, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 1916.132 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1921.8339524875767, + "rest": 1921.9531960792453, + "n": 2, + "of": 2, + "z": 10.367683576633913, + "inst": 0.06406125992873138, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1921.996 (+7 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1935.7579230993074, + "rest": 1935.8780306283957, + "n": 2, + "of": 2, + "z": 7.40862119528651, + "inst": 0.06452523330262641, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Al III 1935.840 (-6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1944.9863066705711, + "rest": 1945.1069867910642, + "n": 2, + "of": 2, + "z": 8.36807961505507, + "inst": 0.06483318663836278, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 1945.091 (-2 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1959.9326945647226, + "rest": 1960.0543020603266, + "n": 2, + "of": 2, + "z": 9.279441861529682, + "inst": 0.06533111476804068, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1960.049 (-1 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1965.7998744948045, + "rest": 1965.9218460299796, + "n": 2, + "of": 2, + "z": 18.81219196307627, + "inst": 0.06552614080042818, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* sig Boo" + ], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 1976.333369933469, + "rest": 1976.4559950380262, + "n": 2, + "of": 2, + "z": 9.805398656764455, + "inst": 0.06587741440098718, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe III 1976.515 (+9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2023.2177569894397, + "rest": 2023.3432911188368, + "n": 2, + "of": 2, + "z": 14.397798168803728, + "inst": 0.06744039490717875, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* sig Boo" + ], + "id": "Fe III 2023.298 (-7 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2076.494319773502, + "rest": 2076.623159541604, + "n": 2, + "of": 2, + "z": 9.665941756334924, + "inst": 0.06921639189360419, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2138.184663904105, + "rest": 2138.317331358879, + "n": 2, + "of": 2, + "z": 7.557037081917375, + "inst": 0.07127249681661142, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Ti II 2138.359 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2169.9682511562783, + "rest": 2170.1028906800207, + "n": 2, + "of": 2, + "z": 12.36094274082628, + "inst": 0.07233161103179245, + "cenwaves": [ + 1978 + ], + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "V* S Dor" + ], + "forced_obs": [], + "id": "Fe II 2170.176 (+10 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2198.28890787781, + "rest": 2198.425304606862, + "n": 2, + "of": 2, + "z": 11.95125027245516, + "inst": 0.07327616165075522, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "N V 2198.450 (+3 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2205.384108068704, + "rest": 2205.5209450320194, + "n": 2, + "of": 2, + "z": 7.207686770116782, + "inst": 0.0735125441492846, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Co II 2205.524 (+0 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2206.301366136868, + "rest": 2206.4382600130853, + "n": 2, + "of": 2, + "z": 10.811588791164501, + "inst": 0.07354349976717947, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2206.440 (+0 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2216.1371948684596, + "rest": 2216.274699026092, + "n": 2, + "of": 2, + "z": 9.11351674890013, + "inst": 0.07387096915942523, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Cr II 2216.317 (+6 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2226.2950865776374, + "rest": 2226.4332209996537, + "n": 2, + "of": 2, + "z": 16.90322280501193, + "inst": 0.07420979613994522, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [ + "* sig Boo" + ], + "id": "Cr II 2226.459 (+3 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2237.6497186391343, + "rest": 2237.788557579409, + "n": 2, + "of": 2, + "z": 21.902799023998014, + "inst": 0.07458820395591947, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 1, + "forced_rest": [], + "forced_obs": [], + "id": "Fe I 2237.817 (+4 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2253.1906208503265, + "rest": 2253.3304240534057, + "n": 2, + "of": 2, + "z": 9.507045415718569, + "inst": 0.0751055281629829, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Ti II 2253.264 (-9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2273.59831024161, + "rest": 2273.7393796759247, + "n": 2, + "of": 2, + "z": 15.93032177177461, + "inst": 0.0757869319330387, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2305.153126807173, + "rest": 2305.296154115974, + "n": 2, + "of": 2, + "z": 12.194811114570786, + "inst": 0.07683832615360256, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra" + ], + "forced_obs": [ + "* sig Boo" + ], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2322.8120752760396, + "rest": 2322.9561982655773, + "n": 2, + "of": 2, + "z": 22.016846999271582, + "inst": 0.07742703170055985, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Dra" + ], + "forced_obs": [ + "* bet Dra" + ], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230M", + "lam": 2358.2016057152964, + "rest": 2358.3479245109343, + "n": 2, + "of": 2, + "z": 7.997226272004696, + "inst": 0.07860631545225794, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* bet Gem" + ], + "forced_obs": [], + "id": "Mn II 2358.448 (+13 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2402.4509074725756, + "rest": 2402.5999717945188, + "n": 2, + "of": 5, + "z": 10.203506957252541, + "inst": 0.021074006059776672, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Fe II 2402.599 (-0 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2415.0902052730394, + "rest": 2415.240053822602, + "n": 2, + "of": 5, + "z": 8.856940545520372, + "inst": 0.021184866613096015, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Co II 2415.316 (+9 km/s)" + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2441.9813769335674, + "rest": 2442.132893993507, + "n": 2, + "of": 5, + "z": 7.7527477614914355, + "inst": 0.021420850573670366, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "V* GY And", + "mode": "E230H", + "lam": 2555.0819836253636, + "rest": 2555.2405182127773, + "n": 2, + "of": 5, + "z": 8.066380457170343, + "inst": 0.022413000235336992, + "cenwaves": [ + 2463, + 2513 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "* alf Aqr" + ], + "forced_obs": [], + "id": null + }, + { + "star": "* eta Car", + "mode": "E140M", + "lam": 1526.237759098703, + "rest": 1526.3650442424341, + "n": 2, + "of": 5, + "z": 9.703553374110077, + "inst": 0.03332399130661809, + "cenwaves": [ + 1425 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": null + }, + { + "star": "* alf Her", + "mode": "E230M", + "lam": 1807.2236076624758, + "rest": 1807.4170748841664, + "n": 3, + "of": 5, + "z": 6.723376399347766, + "inst": 0.06023991121571601, + "cenwaves": [ + 1978 + ], + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [], + "id": "Ca II 1807.340 (-13 km/s)" + } + ] +} \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_laser.json b/papers/uv_lasers/data/uv_laser.json new file mode 100644 index 0000000000000000000000000000000000000000..36329e00ee836f468ce115b5e0e446f316462744 --- /dev/null +++ b/papers/uv_lasers/data/uv_laser.json @@ -0,0 +1,359 @@ +{ + "exposures": 2356, + "objects": 530, + "peaks": 313, + "persistent": [ + { + "obj": "HD11592", + "mode": "E230M", + "lam": 2420.877549960706, + "n": 2, + "of": 2, + "z": 9.146609518506688, + "inst": 0.08069600602261197, + "cenwaves": [ + 2707 + ], + "ra": 28.490269, + "dec": 10.613935, + "rest": 2421.0139554826956, + "main_id": "HD 11592", + "sp": "F6", + "stars_rest": 9, + "stars_obs": 1 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2638.6621330501216, + "n": 6, + "of": 13, + "z": 25.264625461240943, + "inst": 0.023146135837789412, + "cenwaves": [ + 2513, + 2713, + 2762 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 2638.70815757338, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "HD115617" + ], + "forced_obs": [] + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2700.607615582022, + "n": 3, + "of": 13, + "z": 26.014524669845276, + "inst": 0.023689502172056096, + "cenwaves": [ + 2713, + 2762 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 2700.654720581354, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2746.128792080366, + "n": 2, + "of": 13, + "z": 14.09668473164495, + "inst": 0.024088810977767453, + "cenwaves": [ + 2713, + 2762 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 2746.1766910769365, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 1, + "stars_obs": 1, + "forced_rest": [ + "HD131156" + ], + "forced_obs": [] + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2752.2150941212694, + "n": 2, + "of": 13, + "z": 17.24420463893228, + "inst": 0.02414225539256504, + "cenwaves": [ + 2713, + 2762 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 2752.2630992773766, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 2, + "stars_obs": 1 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2765.389824308524, + "n": 3, + "of": 13, + "z": 7.508835193555457, + "inst": 0.024257758801638926, + "cenwaves": [ + 2713, + 2762 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 2765.43805926316, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2765.852484828643, + "n": 4, + "of": 13, + "z": 10.05843935412965, + "inst": 0.024261837843941345, + "cenwaves": [ + 2713, + 2762 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 2765.9007278531753, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2978.2142589061987, + "n": 2, + "of": 13, + "z": 15.841109943697605, + "inst": 0.02612467287279895, + "cenwaves": [ + 3012 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 2978.2662060235316, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 3070.6505846755963, + "n": 2, + "of": 13, + "z": 31.103860072279844, + "inst": 0.02693551656022001, + "cenwaves": [ + 3012 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 3070.704144101596, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [ + "HD115617", + "HD146233", + "HD187691", + "HD70110", + "HD85503" + ], + "forced_obs": [] + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 3072.204724245881, + "n": 2, + "of": 13, + "z": 34.423318969508976, + "inst": 0.02694918108059205, + "cenwaves": [ + 3012 + ], + "ra": 213.915746, + "dec": 19.183168, + "rest": 3072.258310779759, + "main_id": "* alf Boo", + "sp": "K1.5IIIFe-0.5", + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "HD85503" + ], + "forced_obs": [] + }, + { + "obj": "HD30649", + "mode": "E230M", + "lam": 2421.263030256214, + "n": 2, + "of": 2, + "z": 6.252754760575038, + "inst": 0.08070846697958765, + "cenwaves": [ + 2707 + ], + "ra": 72.931634, + "dec": 45.833978, + "rest": 2420.9715050059995, + "main_id": "HD 30649", + "sp": "F9VgG1mF7", + "stars_rest": 9, + "stars_obs": 1 + }, + { + "obj": "HD4174", + "mode": "E230M", + "lam": 1908.1589963177896, + "n": 3, + "of": 16, + "z": 7.8746228307197095, + "inst": 0.06360556968782441, + "cenwaves": [ + 1978 + ], + "ra": 11.154917, + "dec": 40.679333, + "rest": 1908.8158670711634, + "main_id": "V* EG And", + "sp": "M2.4III", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD84748", + "mode": "E230M", + "lam": 2612.615297676949, + "n": 4, + "of": 4, + "z": 6.777886277695038, + "inst": 0.08708668674577125, + "cenwaves": [ + 2561 + ], + "ra": 146.889314, + "dec": 11.428606, + "rest": 2612.4924255291785, + "main_id": "V* R Leo", + "sp": "M7-9e", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD84748", + "mode": "E230M", + "lam": 2626.427818908246, + "n": 4, + "of": 4, + "z": 13.389816194176014, + "inst": 0.08754803115882898, + "cenwaves": [ + 2561 + ], + "ra": 146.889314, + "dec": 11.428606, + "rest": 2626.3042971531063, + "main_id": "V* R Leo", + "sp": "M7-9e", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD84748", + "mode": "E230M", + "lam": 2733.264748065029, + "n": 4, + "of": 4, + "z": 8.614712070070276, + "inst": 0.09110924027452764, + "cenwaves": [ + 2561 + ], + "ra": 146.889314, + "dec": 11.428606, + "rest": 2733.136201734339, + "main_id": "V* R Leo", + "sp": "M7-9e", + "stars_rest": 0, + "stars_obs": 0, + "forced_rest": [], + "forced_obs": [] + }, + { + "obj": "HD85503", + "mode": "E230H", + "lam": 3110.216653196092, + "n": 2, + "of": 2, + "z": 7.77896136857852, + "inst": 0.027282512770310092, + "cenwaves": [ + 3012 + ], + "ra": 148.190632, + "dec": 26.006884, + "rest": 3110.0750779380896, + "main_id": "* mu. Leo", + "sp": "K2IIIbCN1Ca1", + "stars_rest": 1, + "stars_obs": 0, + "forced_rest": [ + "HD115617", + "HD124897" + ], + "forced_obs": [] + } + ] +} \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_laser_ids.json b/papers/uv_lasers/data/uv_laser_ids.json new file mode 100644 index 0000000000000000000000000000000000000000..93037651d79adc20eabe5bbbf5debd942d96f958 --- /dev/null +++ b/papers/uv_lasers/data/uv_laser_ids.json @@ -0,0 +1,210 @@ +[ + { + "obj": "HD11592", + "mode": "E230M", + "lam": 2420.877549960706, + "rest": 2421.0139554826956, + "n": 2, + "of": 2, + "z": 9.146609518506688, + "others": 1, + "ion": "O III", + "line": 2421.14, + "dv": 15.608004065613965 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2638.6621330501216, + "rest": 2638.70815757338, + "n": 6, + "of": 13, + "z": 25.264625461240943, + "others": 0, + "ion": "Mn II", + "line": 2638.173, + "dv": -60.80104155532264 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2700.607615582022, + "rest": 2700.654720581354, + "n": 3, + "of": 13, + "z": 26.014524669845276, + "others": 0, + "ion": "Fe I", + "line": 2700.608, + "dv": -5.186326788283812 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2746.128792080366, + "rest": 2746.1766910769365, + "n": 2, + "of": 13, + "z": 14.09668473164495, + "others": 0, + "ion": "Cr II", + "line": 2746.21863, + "dv": 4.578355381091161 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2752.2150941212694, + "rest": 2752.2630992773766, + "n": 2, + "of": 13, + "z": 17.24420463893228, + "others": 0, + "ion": "Co II", + "line": 2752.2064, + "dv": -6.176014108534533 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2765.389824308524, + "rest": 2765.43805926316, + "n": 3, + "of": 13, + "z": 7.508835193555457, + "others": 0, + "ion": "Fe I", + "line": 2765.236, + "dv": -21.90461036057627 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2765.8524848286424, + "rest": 2765.900727853175, + "n": 4, + "of": 13, + "z": 10.05843935412965, + "others": 0, + "ion": "Fe I", + "line": 2766.026, + "dv": 13.578088482134294 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 2978.2142589061987, + "rest": 2978.2662060235316, + "n": 2, + "of": 13, + "z": 15.841109943697605, + "others": 0, + "ion": "Ti I", + "line": 2978.279, + "dv": 1.2878424518597071 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 3070.6505846755963, + "rest": 3070.704144101596, + "n": 2, + "of": 13, + "z": 31.103860072279844, + "others": 0, + "ion": "Fe I", + "line": 3070.694, + "dv": -0.990367358401863 + }, + { + "obj": "HD124897", + "mode": "E230H", + "lam": 3072.204724245881, + "rest": 3072.258310779759, + "n": 2, + "of": 13, + "z": 34.423318969508976, + "others": 0, + "ion": "Fe I", + "line": 3072.293, + "dv": 3.3849909578480735 + }, + { + "obj": "HD30649", + "mode": "E230M", + "lam": 2421.263030256214, + "rest": 2420.9715050059995, + "n": 2, + "of": 2, + "z": 6.252754760575038, + "others": 1, + "ion": "O III", + "line": 2421.14, + "dv": 20.86498263512337 + }, + { + "obj": "HD4174", + "mode": "E230M", + "lam": 1908.1589963177896, + "rest": 1908.8158670711634, + "n": 3, + "of": 16, + "z": 7.8746228307197095, + "others": 0, + "ion": "Cr I", + "line": 1908.542, + "dv": -43.01267809312082 + }, + { + "obj": "HD84748", + "mode": "E230M", + "lam": 2612.615297676949, + "rest": 2612.4924255291785, + "n": 4, + "of": 4, + "z": 6.777886277695038, + "others": 0, + "ion": "Cr I", + "line": 2612.4882, + "dv": -0.48489395278534764 + }, + { + "obj": "HD84748", + "mode": "E230M", + "lam": 2626.427818908246, + "rest": 2626.3042971531063, + "n": 4, + "of": 4, + "z": 13.389816194176014, + "others": 0, + "ion": "Fe II", + "line": 2626.50037, + "dv": 22.381702219770183 + }, + { + "obj": "HD84748", + "mode": "E230M", + "lam": 2733.2647480650294, + "rest": 2733.1362017343395, + "n": 4, + "of": 4, + "z": 8.614712070070276, + "others": 0, + "ion": "Ti I", + "line": 2733.253, + "dv": 12.811377321897188 + }, + { + "obj": "HD85503", + "mode": "E230H", + "lam": 3110.216653196092, + "rest": 3110.216653196092, + "n": 2, + "of": 2, + "z": 7.77896136857852, + "others": 0, + "ion": "Fe I", + "line": 3110.1948, + "dv": -2.1064202600753057 + } +] \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_limits_cos.json b/papers/uv_lasers/data/uv_limits_cos.json new file mode 100644 index 0000000000000000000000000000000000000000..eb9a55bb0ca27e8b691f96ff21055deed27e735a --- /dev/null +++ b/papers/uv_lasers/data/uv_limits_cos.json @@ -0,0 +1 @@ +{"set": "cos", "mult": [1.0, 1.5, 2.0, 3.0, 5.0, 8.0], "recovery": [0.17361111111111105, 0.5950231481481479, 0.7965856481481488, 0.8753472222222224, 0.9080439814814818, 0.9557870370370372], "n_injected": 288, "plateau": 0.9557870370370372, "m50": 1.3610271903323266, "m90": 2.8077883908890504, "exposures": [{"file": "lbpi07rvq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 2, "nominal": 1.6369866807917287e-16, "lam_med": 1372.7242342117202}, {"file": "lbpi07ryq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.4482315081608534e-16, "lam_med": 1372.3355810013536}, {"file": "lbpi07s0q_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 4, "nominal": 1.453359086058447e-16, "lam_med": 1365.4095089867965, "rec": [0.5, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck129bpq_corrtag_a.fits", "star": "Ross 905", "grating": "G160M", "fppos": 1, "nominal": 4.2010792491725275e-16, "lam_med": 1671.0089407587507}, {"file": "lck129bpq_corrtag_b.fits", "star": "Ross 905", "grating": "G160M", "fppos": 1, "nominal": 1.6111810386372523e-16, "lam_med": 1477.5212338059953, "rec": [0.5, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck129bxq_corrtag_a.fits", "star": "Ross 905", "grating": "G160M", "fppos": 4, "nominal": 2.5334489755896755e-16, "lam_med": 1697.1241943974737}, {"file": "lck129bxq_corrtag_b.fits", "star": "Ross 905", "grating": "G160M", "fppos": 4, "nominal": 9.90131246306774e-17, "lam_med": 1501.5348615027494}, {"file": "lck129cuq_corrtag_a.fits", "star": "Ross 905", "grating": "G160M", "fppos": 3, "nominal": 4.898476527794837e-16, "lam_med": 1700.0382085089038, "rec": [0.16666666666666666, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck129cuq_corrtag_b.fits", "star": "Ross 905", "grating": "G160M", "fppos": 3, "nominal": 1.8219766041919848e-16, "lam_med": 1504.9748219453138}, {"file": "lck130i4q_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 2, "nominal": 8.124398988598486e-17, "lam_med": 1392.2801371489827}, {"file": "lck130i4q_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 2, "nominal": 5.637518407232618e-17, "lam_med": 1262.761262023015, "rec": [0.2, 0.8333333333333334, 0.6, 1.0, 1.0, 1.0]}, {"file": "lck130ilq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.970165791586387e-17, "lam_med": 1389.3785087083925}, {"file": "lck130ilq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 5.589171249662162e-17, "lam_med": 1262.0233927903678, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck130itq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 4, "nominal": 7.829890820570648e-17, "lam_med": 1387.1150482739708}, {"file": "lf7z01fbq_corrtag_a.fits", "star": "HD 260655", "grating": "G130M", "fppos": 2, "nominal": 5.498840869901359e-16, "lam_med": 1294.8926565579443}, {"file": "lf7z01fbq_corrtag_b.fits", "star": "HD 260655", "grating": "G130M", "fppos": 2, "nominal": 9.157279431140278e-16, "lam_med": 1136.8579405298606}, {"file": "lf7z01ffq_corrtag_a.fits", "star": "HD 260655", "grating": "G130M", "fppos": 4, "nominal": 5.46733488831512e-16, "lam_med": 1288.4561055404308}, {"file": "lf7z01ffq_corrtag_b.fits", "star": "HD 260655", "grating": "G130M", "fppos": 4, "nominal": 1.1409032879277106e-15, "lam_med": 1133.3152570415718}, {"file": "lf7z01f9q_corrtag_a.fits", "star": "HD 260655", "grating": "G130M", "fppos": 1, "nominal": 5.513872249703503e-16, "lam_med": 1293.985951802845}, {"file": "lf7z01f9q_corrtag_b.fits", "star": "HD 260655", "grating": "G130M", "fppos": 1, "nominal": 9.05325334326851e-16, "lam_med": 1139.4054898109578}, {"file": "lf7z01fdq_corrtag_a.fits", "star": "HD 260655", "grating": "G130M", "fppos": 3, "nominal": 5.475840867790892e-16, "lam_med": 1288.844689460323}, {"file": "lf7z01fdq_corrtag_b.fits", "star": "HD 260655", "grating": "G130M", "fppos": 3, "nominal": 1.0744108161865345e-15, "lam_med": 1134.5691302493444}, {"file": "lbpi07s5q_corrtag_a.fits", "star": "Ross 905", "grating": "G160M", "fppos": 2, "nominal": 3.5915892689451573e-16, "lam_med": 1679.5577850091304, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbpi07s5q_corrtag_b.fits", "star": "Ross 905", "grating": "G160M", "fppos": 2, "nominal": 1.235578856877217e-16, "lam_med": 1485.1993514081935}, {"file": "lbpi07s7q_corrtag_a.fits", "star": "Ross 905", "grating": "G160M", "fppos": 3, "nominal": 4.3918362644959725e-16, "lam_med": 1677.061090787794}, {"file": "lbpi07s7q_corrtag_b.fits", "star": "Ross 905", "grating": "G160M", "fppos": 3, "nominal": 1.532766940270687e-16, "lam_med": 1482.3488377694594}, {"file": "lbpi07sbq_corrtag_a.fits", "star": "Ross 905", "grating": "G160M", "fppos": 4, "nominal": 3.3861501985635334e-16, "lam_med": 1673.4995931979547}, {"file": "lbpi07sbq_corrtag_b.fits", "star": "Ross 905", "grating": "G160M", "fppos": 4, "nominal": 1.1298715383938142e-16, "lam_med": 1479.791924854604, "rec": [0.5, 0.16666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck130gmq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 1, "nominal": 1.2969135458484863e-16, "lam_med": 1366.3818586786454}, {"file": "lck130gmq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 1, "nominal": 1.3932609527905523e-16, "lam_med": 1211.0960725419513}, {"file": "lck130gyq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 2, "nominal": 7.673430189810621e-17, "lam_med": 1365.066196447498}, {"file": "ld9m12d8q_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 9.798841294686344e-17, "lam_med": 1362.1799071476455}, {"file": "ld9m12daq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.107396395513658e-17, "lam_med": 1362.8080639560608, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "ld9m12daq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 6.824529867313799e-17, "lam_med": 1198.6526348037046, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "ld9m12dcq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.516221155223879e-17, "lam_med": 1362.608703245468}, {"file": "ld9m12duq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.425039311888186e-17, "lam_med": 1362.838057808225}, {"file": "ld9m12erq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.5084135465887e-17, "lam_med": 1363.2069934875612}, {"file": "ld9m10ujq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 9.98587896369249e-17, "lam_med": 1362.7793263242131}, {"file": "ld9m10ulq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.554940077427588e-17, "lam_med": 1363.327646614132}, {"file": "ld9m10unq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.856722406528739e-17, "lam_med": 1362.8291030775533, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "ld9m10upq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.878882900828761e-17, "lam_med": 1363.1780178521535}, {"file": "ld9m10uyq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.85212388961867e-17, "lam_med": 1362.9586378304189}, {"file": "ldi404zuq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 9.556935533759217e-17, "lam_med": 1362.6688139000396, "rec": [0.16666666666666666, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "ldi402hdq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.0454221508553925e-16, "lam_med": 1362.8871614512284}, {"file": "ldi402hdq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.0759818098569935e-16, "lam_med": 1208.4693864772983}, {"file": "ldi403hxq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 9.872708248459452e-17, "lam_med": 1363.166135088636}, {"file": "ldi405e6q_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.0012916820401431e-16, "lam_med": 1362.8574116015457}, {"file": "ldi405e6q_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.0114784461155037e-16, "lam_med": 1203.340096087697}, {"file": "ldi457agq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.0497940910914203e-16, "lam_med": 1362.9297938329685}, {"file": "ldi457agq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 9.64951871418105e-17, "lam_med": 1211.6523201721016}, {"file": "ldi401efq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 9.65103358814446e-17, "lam_med": 1362.7579017693536}, {"file": "ldi406eyq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 9.953610098078518e-17, "lam_med": 1362.7773220349713}, {"file": "ld9m11rxq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.0953117180135646e-16, "lam_med": 1362.7887203776577}, {"file": "ld9m11rxq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.1619453075664786e-16, "lam_med": 1210.9566774391578}, {"file": "ld9m11rzq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.525964532661476e-17, "lam_med": 1363.1674730204534}, {"file": "ld9m11rzq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.331983352008327e-17, "lam_med": 1208.464951318028}, {"file": "ld9m11s1q_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.580989869958031e-17, "lam_med": 1362.8283904834202}, {"file": "ld9m11s1q_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.503253674637465e-17, "lam_med": 1207.9665237088552}, {"file": "ld9m11t1q_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.662303307819454e-17, "lam_med": 1363.0276713430326}, {"file": "ld9m11t1q_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.69711008473332e-17, "lam_med": 1205.2355885497143, "rec": [0.3333333333333333, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "ld9m11t3q_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.887863772705555e-17, "lam_med": 1363.0474973163296}, {"file": "ld9m11t3q_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.80604873620859e-17, "lam_med": 1205.2354886757953}, {"file": "ldi458umq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.0144402379621855e-16, "lam_med": 1362.9906382022739}, {"file": "ldi458umq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.081775745110777e-16, "lam_med": 1209.7762479385474}, {"file": "ld9mg2nlq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.1331581474863933e-16, "lam_med": 1362.6897028278013, "rec": [0.3333333333333333, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "ld9mg2nlq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 1.1101537991586492e-16, "lam_med": 1205.2345526715983}, {"file": "ld9mg2nnq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.828610017168488e-17, "lam_med": 1362.789266534358}, {"file": "ld9mg2nnq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.695797709670289e-17, "lam_med": 1203.6797355006834, "rec": [0.5, 0.8, 1.0, 1.0, 1.0, 1.0]}, {"file": "ld9mg2npq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.781840056287378e-17, "lam_med": 1362.9685710507056}, {"file": "ld9mg2npq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.621728001134337e-17, "lam_med": 1204.4071290273803, "rec": [0.2, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "ld9mg2nrq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.392497269524148e-17, "lam_med": 1362.7092228101485}, {"file": "ld9mg2nrq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 6.977108588417294e-17, "lam_med": 1198.8060842757834}, {"file": "ld9mg2ntq_corrtag_a.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.549026173370065e-17, "lam_med": 1362.5096941328293}, {"file": "ld9mg2ntq_corrtag_b.fits", "star": "Ross 905", "grating": "G130M", "fppos": 3, "nominal": 7.33680602950884e-17, "lam_med": 1208.0943097522415, "rec": [0.6666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lebb03xtq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.6164824674814726e-16, "lam_med": 1288.4190288227092}, {"file": "lebb03xtq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.822439884797327e-16, "lam_med": 1138.6569578446222}, {"file": "lebb03xvq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.618406429212686e-16, "lam_med": 1288.4189488070492, "rec": [0.16666666666666666, 0.16666666666666666, 0.3333333333333333, 1.0, 1.0, 1.0]}, {"file": "lebb03xvq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.7097183646321047e-16, "lam_med": 1138.766335264272, "rec": [0.0, 0.5, 0.8, 1.0, 1.0, 1.0]}, {"file": "lebb03xxq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.9283721896385156e-16, "lam_med": 1288.408907436712}, {"file": "lebb03xxq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.0499130564637977e-16, "lam_med": 1139.6318893442913}, {"file": "lebb03xpq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.785289533326197e-16, "lam_med": 1288.4092233135366, "rec": [0.16666666666666666, 0.0, 0.8, 1.0, 1.0, 1.0]}, {"file": "lebb03xpq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.012217315000714e-16, "lam_med": 1139.3635263010774}, {"file": "lebb03xrq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.641343514464372e-16, "lam_med": 1288.3991843191611}, {"file": "lebb03xrq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.7769352346007526e-16, "lam_med": 1139.4828544113343, "rec": [0.0, 0.8333333333333334, 0.6, 1.0, 1.0, 1.0]}, {"file": "lf71z2fpq_corrtag_a.fits", "star": "HD 197481", "grating": "G160M", "fppos": 4, "nominal": 5.971864888864662e-16, "lam_med": 1661.630341328494, "rec": [0.0, 0.5, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lf71z2fzq_corrtag_a.fits", "star": "HD 197481", "grating": "G160M", "fppos": 4, "nominal": 4.882954592977038e-16, "lam_med": 1661.6915587197227}, {"file": "lf71z2g5q_corrtag_a.fits", "star": "HD 197481", "grating": "G160M", "fppos": 4, "nominal": 4.994291865013556e-16, "lam_med": 1661.6915508991108}, {"file": "lfbv02s3q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.049196803505285e-16, "lam_med": 1288.6534225327764}, {"file": "lfbv02s3q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.332617649494535e-16, "lam_med": 1140.9064286842363}, {"file": "lfbv02s0q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.8161933353279134e-16, "lam_med": 1288.6833753346227}, {"file": "lfbv02s0q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.1219619056709605e-16, "lam_med": 1139.5829511275786}, {"file": "lfbv02saq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.4526954923454353e-16, "lam_med": 1288.6334332294614, "rec": [0.2, 0.16666666666666666, 0.8333333333333334, 0.8, 1.0, 1.0]}, {"file": "lfbv02saq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.608254739982099e-16, "lam_med": 1142.1900995271171}, {"file": "lfbv02rxq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.8460668658545576e-16, "lam_med": 1288.653546236424}, {"file": "lfbv02rxq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.001492665913742e-16, "lam_med": 1141.463814620648, "rec": [0.0, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "lfbv02rsq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.707591329170314e-16, "lam_med": 1288.6934625624929}, {"file": "lfbv02rsq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.059335280168563e-16, "lam_med": 1141.225036446382}, {"file": "lfbv02rqq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.880669605863547e-16, "lam_med": 1288.7034811405742}, {"file": "lfbv02rqq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.0877508498725926e-16, "lam_med": 1140.6081009550799, "rec": [0.2, 0.0, 0.8, 1.0, 1.0, 1.0]}, {"file": "lfbv03coq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.84244655608539e-16, "lam_med": 1288.6047348703737}, {"file": "lfbv03coq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.1932126262706473e-16, "lam_med": 1139.913429519186}, {"file": "lfbv03caq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.8438600988257455e-16, "lam_med": 1288.604890511423}, {"file": "lfbv03caq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.1219383310234766e-16, "lam_med": 1140.8788434324294}, {"file": "lfbv03cjq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.977209396115845e-16, "lam_med": 1288.6347037861076}, {"file": "lfbv03cjq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.312024792451068e-16, "lam_med": 1141.9634663317584}, {"file": "lfbv03crq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.216853753708073e-16, "lam_med": 1288.6046565331503}, {"file": "lfbv03crq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.500062199468052e-16, "lam_med": 1142.2220615709375}, {"file": "lfbv03blq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.0121537862505285e-16, "lam_med": 1288.6049686864992, "rec": [0.2, 0.3333333333333333, 0.5, 1.0, 0.8333333333333334, 1.0]}, {"file": "lfbv03blq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.228753771604865e-16, "lam_med": 1142.0730685523304}, {"file": "lfbv03bdq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.272917367677486e-16, "lam_med": 1288.634927016456, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lfbv03bdq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.542713843239388e-16, "lam_med": 1142.0034698147538}, {"file": "lck127cvq_corrtag_a.fits", "star": "HD 285968", "grating": "G130M", "fppos": 2, "nominal": 9.124426706249688e-17, "lam_med": 1391.3918588607148}, {"file": "lck127cvq_corrtag_b.fits", "star": "HD 285968", "grating": "G130M", "fppos": 2, "nominal": 6.935318986133953e-17, "lam_med": 1257.776539414641, "rec": [0.0, 0.16666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck127ddq_corrtag_a.fits", "star": "HD 285968", "grating": "G130M", "fppos": 3, "nominal": 9.073220477711475e-17, "lam_med": 1389.9161136360526}, {"file": "lck127ddq_corrtag_b.fits", "star": "HD 285968", "grating": "G130M", "fppos": 3, "nominal": 6.801931254035151e-17, "lam_med": 1257.0386366461998}, {"file": "lck127drq_corrtag_a.fits", "star": "HD 285968", "grating": "G130M", "fppos": 4, "nominal": 9.079006555598443e-17, "lam_med": 1386.9546537489878}, {"file": "lck127drq_corrtag_b.fits", "star": "HD 285968", "grating": "G130M", "fppos": 4, "nominal": 1.0040854264007108e-16, "lam_med": 1211.6277956180497}, {"file": "lebb01sdq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.975566622095681e-16, "lam_med": 1288.5284663984035}, {"file": "lebb01sdq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.0766848135272103e-16, "lam_med": 1141.3295613118719}, {"file": "lebb01sbq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.7066751181923485e-16, "lam_med": 1288.5185756060148}, {"file": "lebb01sbq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.9007476719467176e-16, "lam_med": 1139.687657573125}, {"file": "lebb01siq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.8210069815638834e-16, "lam_med": 1288.5184292801541}, {"file": "lebb01siq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.9118075225389575e-16, "lam_med": 1139.3690861271116}, {"file": "lebb01smq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.6184091897157645e-16, "lam_med": 1288.508392684355, "rec": [0.0, 0.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "lebb01smq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.8622209150863624e-16, "lam_med": 1138.0853001231883, "rec": [0.0, 0.6666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "lebb01s7q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.845211506014548e-16, "lam_med": 1288.5186461627227}, {"file": "lebb01s7q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.1384031066643115e-16, "lam_med": 1140.1454810319751}, {"file": "lebb02n2q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.07000076393044e-16, "lam_med": 1288.414073277696, "rec": [0.0, 0.16666666666666666, 0.6, 1.0, 1.0, 1.0]}, {"file": "lebb02n2q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.497799567770045e-16, "lam_med": 1138.9522122655803, "rec": [0.16666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lebb02n5q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.891096735115562e-16, "lam_med": 1288.4339528124665}, {"file": "lebb02n5q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.154070267311498e-16, "lam_med": 1138.3850468685696}, {"file": "lebb02o1q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.864464183136497e-16, "lam_med": 1288.4338141611565}, {"file": "lebb02o1q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.273581722177532e-16, "lam_med": 1137.519309250123}, {"file": "lebb02nzq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.25674384905226e-16, "lam_med": 1288.4438219423603}, {"file": "lebb02nzq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.582817235494429e-16, "lam_med": 1140.9121617948854, "rec": [0.3333333333333333, 0.8333333333333334, 1.0, 0.8, 0.8, 1.0]}, {"file": "lebb02n9q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.8206246577276947e-16, "lam_med": 1288.4339065205254}, {"file": "lebb02n9q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.1788222514467605e-16, "lam_med": 1137.917374287548}, {"file": "lf7101c9q_corrtag_a.fits", "star": "HD 197481", "grating": "G160M", "fppos": 4, "nominal": 5.48578080795331e-16, "lam_med": 1662.2298928112596}, {"file": "lf7101btq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 1.1710334465302321e-16, "lam_med": 1293.5693626663015}, {"file": "lf7101btq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.265133477125494e-16, "lam_med": 1134.6714994077565}, {"file": "lf7101bzq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.065052609105793e-16, "lam_med": 1288.8466529010948}, {"file": "lf7101bzq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.596439093311358e-16, "lam_med": 1134.044620857399}, {"file": "lf71z1wcq_corrtag_a.fits", "star": "HD 197481", "grating": "G160M", "fppos": 4, "nominal": 4.962749062641635e-16, "lam_med": 1662.592777960257, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf71z1w8q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 1.7236269537529756e-16, "lam_med": 1289.135109735675}, {"file": "lf71z1w8q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.3440101714338624e-16, "lam_med": 1132.6581896372506}, {"file": "lf71z1w6q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 9.282316343311143e-17, "lam_med": 1290.0916918024777}, {"file": "lf71z1w6q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 1.8096191881116086e-16, "lam_med": 1132.8871602429238}, {"file": "lf71zzynq_corrtag_a.fits", "star": "HD 197481", "grating": "G160M", "fppos": 4, "nominal": 1.797894502832528e-15, "lam_med": 1661.901659510697}, {"file": "lf71zzyeq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 9.937742442990115e-16, "lam_med": 1288.5291987318938}, {"file": "lf71zzyeq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 1.2967527345717374e-15, "lam_med": 1142.6028646363745}, {"file": "lf71zzy4q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 6.955296656395878e-16, "lam_med": 1288.569015160638}, {"file": "lf71zzy4q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 9.286720157285797e-16, "lam_med": 1142.851615542443}, {"file": "lfbv01k3q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.1458269303512136e-16, "lam_med": 1288.6702402234232}, {"file": "lfbv01k3q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.466765365453545e-16, "lam_med": 1141.4598254146165, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfbv01k1q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.0765303214608493e-16, "lam_med": 1288.660320594815}, {"file": "lfbv01k1q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.497001320369349e-16, "lam_med": 1141.0717586125106}, {"file": "lfbv01jzq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.243849380798915e-16, "lam_med": 1288.6802920599896, "rec": [0.0, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "lfbv01jzq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.622154311625435e-16, "lam_med": 1141.7285910304035, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfbv01k5q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.1140841316689715e-16, "lam_med": 1288.6701961879808}, {"file": "lfbv01k5q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.445688955402242e-16, "lam_med": 1141.5294458057501}, {"file": "lfbv01jvq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.2900335562222346e-16, "lam_med": 1288.7301969986152}, {"file": "lfbv01jvq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.75202853748972e-16, "lam_med": 1141.7087652510968}, {"file": "lfbv01jxq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 9.764596085872678e-17, "lam_med": 1288.8995404441523}, {"file": "lfbv01jxq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 1.8752649587755592e-16, "lam_med": 1133.100746252049, "rec": [0.25, 0.3333333333333333, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfbv04a8q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.4221685215491535e-16, "lam_med": 1288.6134385935438, "rec": [0.0, 0.2, 0.4, 1.0, 0.8333333333333334, 1.0]}, {"file": "lfbv04a8q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.581044846546175e-16, "lam_med": 1142.0728659708952}, {"file": "lfbv04a4q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 2.970945379570816e-16, "lam_med": 1288.6136138485447, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "lfbv04a4q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.2626630022854207e-16, "lam_med": 1140.6400470035335}, {"file": "lfbv04alq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 6.046900396342538e-16, "lam_med": 1288.9519196557637}, {"file": "lfbv04alq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 7.360333655956816e-16, "lam_med": 1142.5303737828203}, {"file": "lfbv04aaq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.3382926046315728e-16, "lam_med": 1288.6332729159042}, {"file": "lfbv04aaq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.465182173079393e-16, "lam_med": 1141.784197967802, "rec": [0.16666666666666666, 0.6666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "lfbv04acq_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.0329675593396793e-16, "lam_med": 1288.6032891217685, "rec": [0.16666666666666666, 0.3333333333333333, 0.5, 0.5, 0.8333333333333334, 1.0]}, {"file": "lfbv04acq_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.482530345643745e-16, "lam_med": 1140.7093843419952}, {"file": "lfbv04a6q_corrtag_a.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 3.1831456059397396e-16, "lam_med": 1288.6135316061564, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "lfbv04a6q_corrtag_b.fits", "star": "HD 197481", "grating": "G130M", "fppos": 4, "nominal": 4.367529990316621e-16, "lam_med": 1141.7246556493337}, {"file": "lc2601hsq_corrtag_a.fits", "star": "HD 285968", "grating": "G140L", "fppos": 1, "nominal": 9.068751417344994e-16, "lam_med": 1471.8784568627175}, {"file": "lc2601hwq_corrtag_a.fits", "star": "HD 285968", "grating": "G140L", "fppos": 2, "nominal": 7.618350202732877e-16, "lam_med": 1427.443888775653}, {"file": "lc2601ifq_corrtag_a.fits", "star": "HD 285968", "grating": "G140L", "fppos": 3, "nominal": 1.1301488776028815e-15, "lam_med": 1504.119636225061, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.8333333333333334]}, {"file": "lc2601j1q_corrtag_a.fits", "star": "HD 285968", "grating": "G140L", "fppos": 4, "nominal": 8.443498876837899e-16, "lam_med": 1433.1068089064295}, {"file": "lck126kuq_corrtag_a.fits", "star": "HD 285968", "grating": "G160M", "fppos": 1, "nominal": 3.3921956187888958e-16, "lam_med": 1670.88707125275}, {"file": "lck126kuq_corrtag_b.fits", "star": "HD 285968", "grating": "G160M", "fppos": 1, "nominal": 1.4047597575386558e-16, "lam_med": 1477.4878128683831}, {"file": "lck126kyq_corrtag_a.fits", "star": "HD 285968", "grating": "G160M", "fppos": 4, "nominal": 2.822067908785156e-16, "lam_med": 1696.6590421975366}, {"file": "lck126kyq_corrtag_b.fits", "star": "HD 285968", "grating": "G160M", "fppos": 4, "nominal": 1.1763416679838976e-16, "lam_med": 1501.8438017306453}, {"file": "lck126l0q_corrtag_a.fits", "star": "HD 285968", "grating": "G160M", "fppos": 3, "nominal": 5.642342219728265e-16, "lam_med": 1699.5852028447257}, {"file": "lck126l0q_corrtag_b.fits", "star": "HD 285968", "grating": "G160M", "fppos": 3, "nominal": 2.2820891837976087e-16, "lam_med": 1505.0755616860401}, {"file": "lck127bjq_corrtag_a.fits", "star": "HD 285968", "grating": "G130M", "fppos": 1, "nominal": 1.1169676324139617e-16, "lam_med": 1366.700439405492}, {"file": "lck127bjq_corrtag_b.fits", "star": "HD 285968", "grating": "G130M", "fppos": 1, "nominal": 1.0548885504482608e-16, "lam_med": 1212.2737956940005}, {"file": "lck127cdq_corrtag_a.fits", "star": "HD 285968", "grating": "G130M", "fppos": 2, "nominal": 8.747886639320779e-17, "lam_med": 1363.0723509211257}, {"file": "lck127cdq_corrtag_b.fits", "star": "HD 285968", "grating": "G130M", "fppos": 2, "nominal": 1.0410426042701422e-16, "lam_med": 1209.2944541223123}, {"file": "le8302ctq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 4, "nominal": 4.926301457104463e-16, "lam_med": 1683.9881663098377}, {"file": "le8302ctq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 4, "nominal": 1.6362217116410511e-16, "lam_med": 1488.6060336362623}, {"file": "le8302c1q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 1, "nominal": 6.451826814541314e-16, "lam_med": 1690.3202462130776, "rec": [0.3333333333333333, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "le8302c1q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 1, "nominal": 2.1973150048552816e-16, "lam_med": 1498.6942056492799}, {"file": "le8302c7q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 2, "nominal": 2.8343269907803465e-16, "lam_med": 1688.323883608625}, {"file": "le8302c7q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 2, "nominal": 9.095060579877285e-17, "lam_med": 1494.5193680912023}, {"file": "le8302clq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 3, "nominal": 4.60042906987113e-16, "lam_med": 1686.8419398113301, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "le8302clq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 3, "nominal": 1.530584918303046e-16, "lam_med": 1491.7402482736175}, {"file": "le8301bxq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 8.341647623931359e-17, "lam_med": 1290.303111165331, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "le8301bxq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 1.368775874535771e-16, "lam_med": 1134.2292489172146}, {"file": "le8301bvq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 8.50843346154596e-17, "lam_med": 1293.1223246678824}, {"file": "le8301bvq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 1.3401968662322194e-16, "lam_med": 1136.4678935527804}, {"file": "le8301btq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.256950680929558e-16, "lam_med": 1293.8993079529205, "rec": [0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "le8301btq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 2.0445904090362715e-16, "lam_med": 1139.1741818018866}, {"file": "le8301bzq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 8.302471082591742e-17, "lam_med": 1288.6594275017587}, {"file": "le8301bzq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 1.490312089273009e-16, "lam_med": 1132.3786471628716, "rec": [0.2, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lecb22vvq_corrtag_a.fits", "star": "L 678-39", "grating": "G130M", "fppos": 1, "nominal": 3.783037946534754e-16, "lam_med": 1295.1848879791473, "rec": [0.3333333333333333, 0.4, 1.0, 1.0, 1.0, 1.0]}, {"file": "lecb22vvq_corrtag_b.fits", "star": "L 678-39", "grating": "G130M", "fppos": 1, "nominal": 6.08850559814759e-16, "lam_med": 1139.0241573788217}, {"file": "lecb22vsq_corrtag_a.fits", "star": "L 678-39", "grating": "G130M", "fppos": 1, "nominal": 1.5819978009301536e-16, "lam_med": 1293.6706819445978}, {"file": "lecb22vsq_corrtag_b.fits", "star": "L 678-39", "grating": "G130M", "fppos": 1, "nominal": 2.4765863408849416e-16, "lam_med": 1138.755553284434}, {"file": "lecb22vxq_corrtag_a.fits", "star": "L 678-39", "grating": "G160M", "fppos": 1, "nominal": 2.9723923007865857e-16, "lam_med": 1670.813764423665, "rec": [0.2, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lecb22vxq_corrtag_b.fits", "star": "L 678-39", "grating": "G160M", "fppos": 1, "nominal": 1.0515063943470181e-16, "lam_med": 1477.6004540774827}, {"file": "lena02i0q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 4, "nominal": 4.1375111970770314e-16, "lam_med": 1617.5687155316045}, {"file": "lena02i0q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 4, "nominal": 1.3958231110126565e-16, "lam_med": 1427.4571428018498}, {"file": "lena02hyq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 3, "nominal": 4.216706271139884e-16, "lam_med": 1619.4047097757048, "rec": [0.25, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lena02hyq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 3, "nominal": 1.470393674591889e-16, "lam_med": 1430.8201138521922}, {"file": "lena02hvq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 2, "nominal": 2.4068098053849693e-16, "lam_med": 1621.1550073897274}, {"file": "lena02hvq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 2, "nominal": 8.581659744162019e-17, "lam_med": 1434.3542774150474}, {"file": "lena52ecq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 2, "nominal": 2.197735497047236e-16, "lam_med": 1621.2303796160277}, {"file": "lena52ecq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 2, "nominal": 8.126749514283913e-17, "lam_med": 1434.0789233284813}, {"file": "lena52elq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 3, "nominal": 4.2155699652274303e-16, "lam_med": 1620.1042328208155}, {"file": "lena52elq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 3, "nominal": 1.6289796382196797e-16, "lam_med": 1430.8871421770132, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lena52epq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 4, "nominal": 3.948337200478822e-16, "lam_med": 1617.4481896362445, "rec": [0.3333333333333333, 0.6, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "lena52epq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 4, "nominal": 1.498592312981548e-16, "lam_med": 1428.2701715611793}, {"file": "lena52e7q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 1, "nominal": 3.521360862512877e-16, "lam_med": 1622.809393076297, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lena52e7q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G160M", "fppos": 1, "nominal": 1.2947790275422588e-16, "lam_med": 1437.539735189875, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfs602aaq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 9.801002332180032e-17, "lam_med": 1293.1638454386043}, {"file": "lfs602aaq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 1.724437924194892e-16, "lam_med": 1136.8482360734502}, {"file": "lfs602a4q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.1329826156667227e-16, "lam_med": 1296.2246654951916, "rec": [0.4, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfs602a4q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.7382714267339824e-16, "lam_med": 1139.7152003157526}, {"file": "lfs602agq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 9.739457647881027e-17, "lam_med": 1291.2714868179896}, {"file": "lfs602agq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 1.7136674168939957e-16, "lam_med": 1134.5885998383221}, {"file": "lfs602amq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 1.6335202431820262e-16, "lam_med": 1288.5164182285039}, {"file": "lfs602amq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 3.110045835842886e-16, "lam_med": 1131.4243457986179, "rec": [0.2, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lb9801rhq_corrtag_a.fits", "star": "HD 103095", "grating": "G140L", "fppos": 1, "nominal": 1.6532189367918601e-15, "lam_med": 1841.214761580799}, {"file": "lb9801rhq_corrtag_b.fits", "star": "HD 103095", "grating": "G140L", "fppos": 1, "nominal": 4.677718769652021e-17, "lam_med": 730.9527895648462}, {"file": "lb9801rjq_corrtag_a.fits", "star": "HD 103095", "grating": "G140L", "fppos": 2, "nominal": 1.730398828855953e-15, "lam_med": 1824.57111277596, "rec": [0.0, 0.0, 0.0, 0.5, 0.5, 0.6666666666666666]}, {"file": "lb9801rjq_corrtag_b.fits", "star": "HD 103095", "grating": "G140L", "fppos": 2, "nominal": 4.6401184461187167e-17, "lam_med": 459.19308619446224}, {"file": "lb9801rlq_corrtag_a.fits", "star": "HD 103095", "grating": "G140L", "fppos": 3, "nominal": 1.6832451982039974e-15, "lam_med": 1807.6105967927006}, {"file": "lb9801rlq_corrtag_b.fits", "star": "HD 103095", "grating": "G140L", "fppos": 3, "nominal": 4.5226867700472686e-17, "lam_med": 462.96129120806734}, {"file": "lb9801rqq_corrtag_a.fits", "star": "HD 103095", "grating": "G160M", "fppos": 3, "nominal": 8.103879476720016e-16, "lam_med": 1665.2912493201088}, {"file": "lb9801rqq_corrtag_b.fits", "star": "HD 103095", "grating": "G160M", "fppos": 3, "nominal": 3.001823082507218e-16, "lam_med": 1472.9778151694723}, {"file": "lb9801rxq_corrtag_a.fits", "star": "HD 103095", "grating": "G160M", "fppos": 3, "nominal": 1.0640538849921998e-15, "lam_med": 1687.2171817492417, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lb9801rxq_corrtag_b.fits", "star": "HD 103095", "grating": "G160M", "fppos": 3, "nominal": 3.5314081986442026e-16, "lam_med": 1492.892036303082}, {"file": "lb9801s1q_corrtag_a.fits", "star": "HD 103095", "grating": "G160M", "fppos": 3, "nominal": 7.359124903692688e-16, "lam_med": 1712.31567754269}, {"file": "lb9801s1q_corrtag_b.fits", "star": "HD 103095", "grating": "G160M", "fppos": 3, "nominal": 3.0391376660972013e-16, "lam_med": 1516.8759043918506}, {"file": "lb9801s6q_corrtag_a.fits", "star": "HD 103095", "grating": "G130M", "fppos": 3, "nominal": 1.2289362856771983e-16, "lam_med": 1380.2572810517404}, {"file": "lb9801s6q_corrtag_b.fits", "star": "HD 103095", "grating": "G130M", "fppos": 3, "nominal": 4.842045139069352e-16, "lam_med": 1213.6331202249194}, {"file": "lb9801sbq_corrtag_a.fits", "star": "HD 103095", "grating": "G130M", "fppos": 3, "nominal": 1.3940519390950712e-16, "lam_med": 1404.2093134164857}, {"file": "lb9801sbq_corrtag_b.fits", "star": "HD 103095", "grating": "G130M", "fppos": 3, "nominal": 1.0069125898850286e-16, "lam_med": 1258.6091078068814}, {"file": "le4p02bmq_corrtag_a.fits", "star": "* kap01 Cet", "grating": "G130M", "fppos": 2, "nominal": 4.422525718514772e-16, "lam_med": 1363.5705501169996}, {"file": "le4p02boq_corrtag_a.fits", "star": "* kap01 Cet", "grating": "G130M", "fppos": 3, "nominal": 4.1423375205357493e-16, "lam_med": 1362.842867044011}, {"file": "le4p02bqq_corrtag_a.fits", "star": "* kap01 Cet", "grating": "G130M", "fppos": 4, "nominal": 3.6707420857482747e-16, "lam_med": 1357.0612872295812}, {"file": "le4p02bkq_corrtag_a.fits", "star": "* kap01 Cet", "grating": "G130M", "fppos": 1, "nominal": 4.261166835811445e-16, "lam_med": 1366.3716261271516}, {"file": "leoo04jtq_corrtag_a.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 2, "nominal": 4.1945279316195427e-16, "lam_med": 1290.8267137680225}, {"file": "leoo04jtq_corrtag_b.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 2, "nominal": 7.364151732739527e-16, "lam_med": 1136.11565740497}, {"file": "leoo04jrq_corrtag_a.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 1, "nominal": 4.4039807834959764e-16, "lam_med": 1295.300282801128}, {"file": "leoo04jrq_corrtag_b.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 1, "nominal": 7.308380443766873e-16, "lam_med": 1139.3298578147208}, {"file": "leoo04jvq_corrtag_a.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 3, "nominal": 4.1111378963803625e-16, "lam_med": 1289.7008486970267}, {"file": "leoo04jvq_corrtag_b.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 3, "nominal": 7.471511775947798e-16, "lam_med": 1133.9861217686976}, {"file": "leoo04jxq_corrtag_a.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 4, "nominal": 4.071540423858732e-16, "lam_med": 1287.7679477580623}, {"file": "leoo04jxq_corrtag_b.fits", "star": "CD-45 5378", "grating": "G130M", "fppos": 4, "nominal": 7.945817380649156e-16, "lam_med": 1132.0158150288107}, {"file": "lena01ecq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 1.4988555190382083e-16, "lam_med": 1287.362096018295, "rec": [0.16666666666666666, 0.25, 1.0, 1.0, 1.0, 1.0]}, {"file": "lena01ecq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 3.034365496419162e-16, "lam_med": 1132.4424825222618, "rec": [0.16666666666666666, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lena01e6q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 1.496886856640906e-16, "lam_med": 1290.410967552537}, {"file": "lena01e6q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 2.4490620881693846e-16, "lam_med": 1134.0147859648218}, {"file": "lena01drq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.0051762946137997e-16, "lam_med": 1295.1336966060503}, {"file": "lena01drq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.547198086972019e-16, "lam_med": 1139.9059289843303}, {"file": "lena01dwq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 8.902527446546435e-17, "lam_med": 1294.3665170847312}, {"file": "lena01dwq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 1.522045619702229e-16, "lam_med": 1135.9652240804894}, {"file": "lfs603y4q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.1164249274318974e-16, "lam_med": 1296.5424457413974}, {"file": "lfs603y4q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.776109046808031e-16, "lam_med": 1139.947120748342}, {"file": "lfs603apq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 9.139777435683848e-17, "lam_med": 1288.7793601420474}, {"file": "lfs603apq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 1.7529512642648692e-16, "lam_med": 1132.6835059622656}, {"file": "lfs603ajq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 9.05786562358587e-17, "lam_med": 1290.9120314757288}, {"file": "lfs603ajq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 1.6660444736132942e-16, "lam_med": 1134.5436810452186}, {"file": "lfs603zjq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 8.907415013517945e-17, "lam_med": 1293.5513266196938, "rec": [0.2, 0.6, 0.75, 1.0, 1.0, 1.0]}, {"file": "lfs603zjq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 1.533206057218878e-16, "lam_med": 1136.8236161464138, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfs601agq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 9.894448848231965e-17, "lam_med": 1290.5931818264123}, {"file": "lfs601agq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 3, "nominal": 1.7173032309496582e-16, "lam_med": 1134.209460486823}, {"file": "lfs601aaq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 9.855153413536525e-17, "lam_med": 1293.1633871448773}, {"file": "lfs601aaq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 2, "nominal": 1.603507349595834e-16, "lam_med": 1136.5574732475138, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfs601amq_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 1.0002450294011156e-16, "lam_med": 1288.7096794938002, "rec": [0.6, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfs601amq_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 4, "nominal": 1.7876514875858863e-16, "lam_med": 1132.5170757356689}, {"file": "lfs601a4q_corrtag_a.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.1572216031657697e-16, "lam_med": 1295.5161610302494}, {"file": "lfs601a4q_corrtag_b.fits", "star": "BD-17 588A", "grating": "G130M", "fppos": 1, "nominal": 1.8978343887609618e-16, "lam_med": 1139.4655380157517}, {"file": "lb3e06yaq_corrtag_a.fits", "star": "* chi01 Ori", "grating": "G130M", "fppos": 3, "nominal": 9.19113353669039e-16, "lam_med": 1363.380085429059}, {"file": "lb3e06yjq_corrtag_a.fits", "star": "* chi01 Ori", "grating": "G130M", "fppos": 4, "nominal": 9.25056797457415e-16, "lam_med": 1360.3609774123208}, {"file": "lbdn01ebq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.278943209906212e-16, "lam_med": 1871.1580676946826, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.3333333333333333]}, {"file": "lbdn01ebq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.4888330810472197e-17, "lam_med": 470.3554038123905}, {"file": "lbdn01edq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 5.704945575450619e-16, "lam_med": 1850.6661429427436}, {"file": "lbdn01edq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.479655383888495e-17, "lam_med": 478.35574678092314}, {"file": "lbdn01efq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 5.675237800832062e-16, "lam_med": 1832.2594511159932}, {"file": "lbdn01efq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.290559329231066e-17, "lam_med": 469.851275424093}, {"file": "lbdn01ehq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.362634782724809e-16, "lam_med": 1871.2379341649062}, {"file": "lbdn01ehq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.4812484943206903e-17, "lam_med": 471.113438901462}, {"file": "lbdn01ejq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 5.670101359422653e-16, "lam_med": 1852.826985655886}, {"file": "lbdn01ejq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.492425345180324e-17, "lam_med": 481.60397273657406}, {"file": "lbdn01elq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 5.618138740595409e-16, "lam_med": 1835.7802444009199}, {"file": "lbdn01elq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.4342902971016165e-17, "lam_med": 464.7633250607863}, {"file": "lbdn01enq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.537638839486392e-16, "lam_med": 1870.7574135055052}, {"file": "lbdn01enq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.486243257925049e-17, "lam_med": 464.1815789008649}, {"file": "lbdn01epq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 6.095618463808356e-16, "lam_med": 1852.4266049456073}, {"file": "lbdn01epq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.480469085147682e-17, "lam_med": 480.1713875875146}, {"file": "lbdn01erq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 5.55221461838143e-16, "lam_med": 1832.6591823515269}, {"file": "lbdn01erq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.3911486848536166e-17, "lam_med": 479.2367366670853}, {"file": "lbdn01etq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.290924118939571e-16, "lam_med": 1870.3569497309154}, {"file": "lbdn01etq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.547222804092715e-17, "lam_med": 481.55407267054755}, {"file": "lbdn01evq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 6.037623513831822e-16, "lam_med": 1853.627009095196}, {"file": "lbdn01evq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.399115812563547e-17, "lam_med": 472.891477849324}, {"file": "lbdn01exq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 5.62522504848751e-16, "lam_med": 1835.2197119203254, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5]}, {"file": "lbdn01exq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.437386581439197e-17, "lam_med": 475.3200896355447}, {"file": "lbdn04j3q_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.676942328681146e-16, "lam_med": 1871.6742642445788}, {"file": "lbdn04j3q_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.6694213331939734e-17, "lam_med": 475.54263590929133, "rec": [0.0, 0.0, 0.0, 0.0, 0.3333333333333333, 0.3333333333333333]}, {"file": "lbdn04j6q_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 5.921499815290505e-16, "lam_med": 1848.220433389044}, {"file": "lbdn04j6q_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.6181000998553337e-17, "lam_med": 476.88345177016436}, {"file": "lbdn04jcq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 6.324783201912262e-16, "lam_med": 1835.4954968872378}, {"file": "lbdn04jcq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.515002064325951e-17, "lam_med": 470.808149853092}, {"file": "lbdn04jjq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.612515119424945e-16, "lam_med": 1871.6740659437178}, {"file": "lbdn04jjq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.5612731072478454e-17, "lam_med": 472.57794063554127, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.4]}, {"file": "lbdn04jlq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 5.682944675693796e-16, "lam_med": 1851.4217560620268}, {"file": "lbdn04jlq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.3826691641090555e-17, "lam_med": 470.7272153609107, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, {"file": "lbdn04jnq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 5.838497207163557e-16, "lam_med": 1837.0958168713532, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.16666666666666666]}, {"file": "lbdn04jnq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.3959394658266823e-17, "lam_med": 471.3981252210232, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.4]}, {"file": "lbdn04juq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.794008080387857e-16, "lam_med": 1871.3536306491396}, {"file": "lbdn04juq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.5045107813580244e-17, "lam_med": 477.15952074365737}, {"file": "lbdn04jwq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 5.767240684540759e-16, "lam_med": 1851.2614741901411}, {"file": "lbdn04jwq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.5282769809419474e-17, "lam_med": 481.82883670670594}, {"file": "lbdn04k2q_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 5.671923131669896e-16, "lam_med": 1834.1345542237218, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.6666666666666666]}, {"file": "lbdn04k2q_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.238419608025073e-17, "lam_med": 466.8400278586971}, {"file": "lbdn04k4q_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 5.83811313075845e-16, "lam_med": 1871.5134952781311}, {"file": "lbdn04k4q_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 1, "nominal": 3.439816947782819e-17, "lam_med": 471.82015262145626}, {"file": "lbdn04kbq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 5.853947250300153e-16, "lam_med": 1849.660323311709}, {"file": "lbdn04kbq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 2, "nominal": 3.478618317708699e-17, "lam_med": 457.48418596218835}, {"file": "lbdn04kkq_corrtag_a.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 5.669215480637459e-16, "lam_med": 1824.6119856191394}, {"file": "lbdn04kkq_corrtag_b.fits", "star": "LP 666-9", "grating": "G140L", "fppos": 3, "nominal": 3.405707204636597e-17, "lam_med": 467.39043671293786}, {"file": "ld5b06k6q_corrtag_a.fits", "star": "HD 192310", "grating": "G130M", "fppos": 3, "nominal": 2.0119364098769234e-16, "lam_med": 1371.5244410931703}, {"file": "ld5b06k6q_corrtag_b.fits", "star": "HD 192310", "grating": "G130M", "fppos": 3, "nominal": 2.118042575292904e-16, "lam_med": 1213.204826067918}, {"file": "ld5b06keq_corrtag_a.fits", "star": "HD 192310", "grating": "G130M", "fppos": 4, "nominal": 2.1083944252620595e-16, "lam_med": 1368.9919345757478}, {"file": "ld5b06keq_corrtag_b.fits", "star": "HD 192310", "grating": "G130M", "fppos": 4, "nominal": 2.87296429045693e-16, "lam_med": 1217.9300422641666}, {"file": "ldlm16g5q_corrtag_a.fits", "star": "BD-05 5715", "grating": "G160M", "fppos": 1, "nominal": 4.9689445821363e-16, "lam_med": 1690.6926803060635}, {"file": "ldlm16g5q_corrtag_b.fits", "star": "BD-05 5715", "grating": "G160M", "fppos": 1, "nominal": 1.8263266931110486e-16, "lam_med": 1499.9035094114042}, {"file": "ldlm16ggq_corrtag_a.fits", "star": "BD-05 5715", "grating": "G160M", "fppos": 1, "nominal": 3.0071726637235926e-16, "lam_med": 1690.8028891619774}, {"file": "ldlm16ggq_corrtag_b.fits", "star": "BD-05 5715", "grating": "G160M", "fppos": 1, "nominal": 1.1631211431263697e-16, "lam_med": 1499.3279477330207, "rec": [0.5, 1.0, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "ldlm16gjq_corrtag_a.fits", "star": "BD-05 5715", "grating": "G160M", "fppos": 2, "nominal": 2.8798672385842826e-16, "lam_med": 1701.40041712385, "rec": [0.4, 0.5, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "ldlm16gjq_corrtag_b.fits", "star": "BD-05 5715", "grating": "G160M", "fppos": 2, "nominal": 1.1096104461896965e-16, "lam_med": 1507.6850616619276}, {"file": "ldlm17h3q_corrtag_a.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 3, "nominal": 8.501058895434482e-17, "lam_med": 1362.9640746235355}, {"file": "ldlm17h3q_corrtag_b.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 3, "nominal": 8.462065241579516e-17, "lam_med": 1205.037123868203}, {"file": "ldlm17hzq_corrtag_a.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 4, "nominal": 8.109064596323154e-17, "lam_med": 1359.2450885197031, "rec": [0.6666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "ldlm17hzq_corrtag_b.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 4, "nominal": 8.237102455295076e-17, "lam_med": 1208.435725304265}, {"file": "ldlm17hkq_corrtag_a.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 4, "nominal": 8.30595221444965e-17, "lam_med": 1359.3847093197867}, {"file": "ldlm17hkq_corrtag_b.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 4, "nominal": 8.24961998522536e-17, "lam_med": 1208.435761456169}, {"file": "ldlm17hhq_corrtag_a.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 3, "nominal": 8.313833489358281e-17, "lam_med": 1362.744691704412}, {"file": "ldlm17hhq_corrtag_b.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 3, "nominal": 8.301933754746754e-17, "lam_med": 1205.007187791372}, {"file": "ldlm17gwq_corrtag_a.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 3, "nominal": 1.1345690701432944e-16, "lam_med": 1362.5852464124368}, {"file": "ldlm17gwq_corrtag_b.fits", "star": "BD-05 5715", "grating": "G130M", "fppos": 3, "nominal": 1.1336397376477133e-16, "lam_med": 1208.3461637956623}, {"file": "lcvi17ahq_corrtag_a.fits", "star": "CD-32 5613", "grating": "G140L", "fppos": 2, "nominal": 7.968407259844671e-15, "lam_med": 1650.5038419131972}, {"file": "lcvi17akq_corrtag_a.fits", "star": "CD-32 5613", "grating": "G140L", "fppos": 3, "nominal": 6.872722704724436e-15, "lam_med": 1657.2178408469517, "rec": [0.0, 0.0, 0.0, 0.5, 0.8333333333333334, 1.0]}, {"file": "lcvi17amq_corrtag_a.fits", "star": "CD-32 5613", "grating": "G140L", "fppos": 4, "nominal": 7.2390751743125e-15, "lam_med": 1657.6174851366286}, {"file": "lcvi17zoq_corrtag_a.fits", "star": "CD-32 5613", "grating": "G140L", "fppos": 1, "nominal": 7.635253301584608e-15, "lam_med": 1655.9390390697263}, {"file": "lena04zgq_corrtag_a.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 4, "nominal": 2.0143239654808913e-16, "lam_med": 1287.7533334019931}, {"file": "lena04zgq_corrtag_b.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 4, "nominal": 3.3596690787728365e-16, "lam_med": 1132.1836287837618, "rec": [0.6, 0.4, 0.8, 1.0, 1.0, 1.0]}, {"file": "lena04zeq_corrtag_a.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 3, "nominal": 1.544890258939004e-16, "lam_med": 1291.6384778779502}, {"file": "lena04zeq_corrtag_b.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 3, "nominal": 2.81823651214434e-16, "lam_med": 1133.9248059650786, "rec": [0.6666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lena04zcq_corrtag_a.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 2, "nominal": 8.937559944705548e-17, "lam_med": 1292.5549800243589, "rec": [0.0, 0.6, 0.8, 1.0, 1.0, 1.0]}, {"file": "lena04zcq_corrtag_b.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 2, "nominal": 1.5337256659081335e-16, "lam_med": 1135.8450792228812}, {"file": "lena04zaq_corrtag_a.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 1, "nominal": 1.0185197640461103e-16, "lam_med": 1294.846226410865, "rec": [0.25, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lena04zaq_corrtag_b.fits", "star": "Wolf 437", "grating": "G130M", "fppos": 1, "nominal": 1.5754070267954776e-16, "lam_med": 1138.8200089621373, "rec": [0.3333333333333333, 1.0, 0.8, 1.0, 1.0, 1.0]}, {"file": "lena05r4q_corrtag_a.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 4, "nominal": 4.164683044484268e-16, "lam_med": 1617.0009546290587}, {"file": "lena05r4q_corrtag_b.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 4, "nominal": 1.393101580609002e-16, "lam_med": 1427.1555874204223}, {"file": "lena05r2q_corrtag_a.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 3, "nominal": 4.1890565816313707e-16, "lam_med": 1619.4240389113502}, {"file": "lena05r2q_corrtag_b.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 3, "nominal": 1.4576511579350448e-16, "lam_med": 1430.6035534874075}, {"file": "lena05qyq_corrtag_a.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 1, "nominal": 3.758247520975983e-16, "lam_med": 1622.6915273107584}, {"file": "lena05qyq_corrtag_b.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 1, "nominal": 1.3208367236359658e-16, "lam_med": 1436.8514611299702, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lena05r0q_corrtag_a.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 2, "nominal": 2.3842281448422985e-16, "lam_med": 1621.1006160067463}, {"file": "lena05r0q_corrtag_b.fits", "star": "Wolf 437", "grating": "G160M", "fppos": 2, "nominal": 8.274952852253609e-17, "lam_med": 1433.5624448695667}, {"file": "lb4p05qiq_corrtag_a.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 3, "nominal": 8.426289465991684e-16, "lam_med": 1811.763313311379, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.3333333333333333]}, {"file": "lb4p05qiq_corrtag_b.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 3, "nominal": 4.061402785028986e-17, "lam_med": 473.42316253692854, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.4]}, {"file": "lb4p05qlq_corrtag_a.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 1, "nominal": 2.129010041710051e-16, "lam_med": 1871.3122808897592}, {"file": "lb4p05qlq_corrtag_b.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 1, "nominal": 1.2701436595972723e-17, "lam_med": 473.439667688981, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.6666666666666666]}, {"file": "lb4p05qnq_corrtag_a.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 2, "nominal": 2.31440813872983e-16, "lam_med": 1849.297053313557}, {"file": "lb4p05qnq_corrtag_b.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 2, "nominal": 1.2703296301520866e-17, "lam_med": 473.09683633478994}, {"file": "lb4p05qpq_corrtag_a.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 3, "nominal": 2.3977083589281837e-16, "lam_med": 1830.8885048497152}, {"file": "lb4p05qpq_corrtag_b.fits", "star": "2MASSW J1507476-162738", "grating": "G140L", "fppos": 3, "nominal": 1.2371391267501893e-17, "lam_med": 471.89543667042335, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 1.0]}, {"file": "lbdn02vhq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 1, "nominal": 2.935502672420061e-16, "lam_med": 1870.7116738281404}, {"file": "lbdn02vhq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 1, "nominal": 1.6897317375470347e-17, "lam_med": 473.24859139790203}, {"file": "lbdn02vjq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 5.54596258201622e-16, "lam_med": 1848.2967078696931}, {"file": "lbdn02vjq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 3.0321089544977443e-17, "lam_med": 482.42730043518105}, {"file": "lbdn02vtq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 5.29207466168958e-16, "lam_med": 1852.2188138365518}, {"file": "lbdn02vtq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 3.0172782499583935e-17, "lam_med": 468.8864749256746}, {"file": "lbdn02w0q_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 3, "nominal": 3.449171854271466e-16, "lam_med": 1832.1293046762667}, {"file": "lbdn02w0q_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 3, "nominal": 2.036856863935677e-17, "lam_med": 474.7597291706937, "rec": [0.0, 0.0, 0.0, 0.0, 0.25, 0.6666666666666666]}, {"file": "lbdn03ooq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 1, "nominal": 6.304046057233974e-16, "lam_med": 1871.804174891276}, {"file": "lbdn03ooq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 1, "nominal": 3.6575209498133256e-17, "lam_med": 474.6228736577726}, {"file": "lbdn03oqq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 5.993260432266051e-16, "lam_med": 1853.2306825849787}, {"file": "lbdn03oqq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 3.5596851891259417e-17, "lam_med": 470.36878671521896}, {"file": "lbdn03osq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 3, "nominal": 6.767158832011201e-16, "lam_med": 1828.9788925497874, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.6666666666666666]}, {"file": "lbdn03osq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 3, "nominal": 3.517993197611748e-17, "lam_med": 467.86418655801003, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, {"file": "lbdn03ouq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 1, "nominal": 6.150336289239312e-16, "lam_med": 1868.9218590125124}, {"file": "lbdn03ouq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 1, "nominal": 3.445134079023813e-17, "lam_med": 457.9328954180233, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.16666666666666666]}, {"file": "lbdn03owq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 5.844954879230114e-16, "lam_med": 1845.70635347928}, {"file": "lbdn03owq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 2, "nominal": 3.441083366341092e-17, "lam_med": 473.5553482846724}, {"file": "lbdn03oyq_corrtag_a.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 3, "nominal": 6.777593702145212e-16, "lam_med": 1822.6569377193791}, {"file": "lbdn03oyq_corrtag_b.fits", "star": "LP 914-54", "grating": "G140L", "fppos": 3, "nominal": 3.362810550581631e-17, "lam_med": 476.3918773666472, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, {"file": "lck123ozq_corrtag_a.fits", "star": "HD 156384C", "grating": "G160M", "fppos": 1, "nominal": 3.553955737691022e-16, "lam_med": 1671.0967467744144}, {"file": "lck123ozq_corrtag_b.fits", "star": "HD 156384C", "grating": "G160M", "fppos": 1, "nominal": 1.234928971625379e-16, "lam_med": 1478.1455880909884}, {"file": "lck123p2q_corrtag_a.fits", "star": "HD 156384C", "grating": "G160M", "fppos": 3, "nominal": 2.7321619107883732e-16, "lam_med": 1699.9301893879551}, {"file": "lck123p2q_corrtag_b.fits", "star": "HD 156384C", "grating": "G160M", "fppos": 3, "nominal": 9.80562183794122e-17, "lam_med": 1505.0610357088067}, {"file": "lck124qgq_corrtag_a.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 1, "nominal": 1.0397500972322828e-16, "lam_med": 1367.1499321664908, "rec": [0.2, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck124qgq_corrtag_b.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 1, "nominal": 1.3367219237232423e-16, "lam_med": 1212.2912007702794}, {"file": "lck124qiq_corrtag_a.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 2, "nominal": 7.893598686569142e-17, "lam_med": 1364.887217641001, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck124qkq_corrtag_a.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 2, "nominal": 8.607627026840485e-17, "lam_med": 1392.2307931221007}, {"file": "lck124qkq_corrtag_b.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 2, "nominal": 5.769017517609935e-17, "lam_med": 1262.7707706664742}, {"file": "lck124qmq_corrtag_a.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 3, "nominal": 8.245596723125493e-17, "lam_med": 1389.568322377215, "rec": [0.3333333333333333, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck124qmq_corrtag_b.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 3, "nominal": 5.60335748580475e-17, "lam_med": 1262.0228005561912, "rec": [0.6, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck124qwq_corrtag_a.fits", "star": "HD 156384C", "grating": "G130M", "fppos": 4, "nominal": 8.1101575374841e-17, "lam_med": 1387.0354811277075}, {"file": "le5s10s1q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.4967403184905954e-15, "lam_med": 1290.1667407009702}, {"file": "le5s10s1q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.989577529441065e-15, "lam_med": 1142.7685549051064, "rec": [0.16666666666666666, 0.4, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10rxq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.253108787368358e-15, "lam_med": 1294.3713608397038}, {"file": "le5s10rxq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.6441297010252364e-15, "lam_med": 1149.8538179943719, "rec": [0.6, 1.0, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "le5s10rzq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.2532527029291134e-15, "lam_med": 1292.9067174850347, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10rzq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.68957723815093e-15, "lam_med": 1144.3109959945768}, {"file": "le5s10s6q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 1.481161090531549e-15, "lam_med": 1288.3533727188878}, {"file": "le5s10s6q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 2.05329416105737e-15, "lam_med": 1141.9824080643366, "rec": [0.16666666666666666, 0.8, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10s8q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 4.9583730576150064e-15, "lam_med": 1622.7747459728052}, {"file": "le5s10s8q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 1.8170776775395858e-15, "lam_med": 1437.9681953211584}, {"file": "le5s10sfq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 5.204911147383405e-15, "lam_med": 1617.3647297754678, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "le5s10sfq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 1.7702675472586744e-15, "lam_med": 1429.126728342, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10scq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 5.138733330162949e-15, "lam_med": 1619.8738984894298}, {"file": "le5s10scq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 1.8389839707036543e-15, "lam_med": 1431.792621119362}, {"file": "le5s10saq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 4.9491999678712305e-15, "lam_med": 1621.477319828338, "rec": [0.0, 1.0, 0.75, 1.0, 1.0, 1.0]}, {"file": "le5s10saq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 1.777051151822079e-15, "lam_med": 1434.776462659861}, {"file": "le5s10tlq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 2.1620968835992078e-15, "lam_med": 1616.177378976969}, {"file": "le5s10tlq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 8.67688147046359e-16, "lam_med": 1428.3929193919762, "rec": [0.5, 0.8, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10tbq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 8.125515961789657e-16, "lam_med": 1289.319771132153}, {"file": "le5s10tbq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 1.2230822650080576e-15, "lam_med": 1138.111333258349}, {"file": "le5s10t7q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 7.19806319405832e-16, "lam_med": 1293.6539181006685}, {"file": "le5s10t7q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 1.0922837799734988e-15, "lam_med": 1141.9724045868636}, {"file": "le5s10tfq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 2.104743607573861e-15, "lam_med": 1623.0684142945952, "rec": [0.4, 0.6666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "le5s10tfq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 8.984060879069659e-16, "lam_med": 1437.6501701013112, "rec": [0.3333333333333333, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10tjq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 2.1234670843217894e-15, "lam_med": 1619.7636524362601}, {"file": "le5s10tjq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 8.692431931810435e-16, "lam_med": 1431.0710397501168, "rec": [0.3333333333333333, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10thq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 2.1525562030815048e-15, "lam_med": 1621.6608273660333}, {"file": "le5s10thq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 8.560085506515969e-16, "lam_med": 1434.067112151666}, {"file": "le5s10tdq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 8.187242546241175e-16, "lam_med": 1286.868738222961, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s10tdq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 1.4972627548687445e-15, "lam_med": 1133.0163102007589}, {"file": "le5s10t9q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 7.862080068734562e-16, "lam_med": 1291.6711695176716}, {"file": "le5s10t9q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 1.2732373156957493e-15, "lam_med": 1137.116214618167}, {"file": "lea910lgq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 5.3145323235561025e-15, "lam_med": 1617.384691916438}, {"file": "lea910lgq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 1.882433472283864e-15, "lam_med": 1428.901203307337}, {"file": "lea910lxq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 2.1631873368692884e-15, "lam_med": 1619.1228252171659}, {"file": "lea910lxq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 9.253513488148778e-16, "lam_med": 1431.4448757215596, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910laq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 5.299011381210774e-15, "lam_med": 1622.8559070926226}, {"file": "lea910laq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 1.94125376725448e-15, "lam_med": 1437.7793759484468}, {"file": "lea910lpq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 7.989599518361253e-16, "lam_med": 1289.4256518762816}, {"file": "lea910lpq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 1.3589556760709275e-15, "lam_med": 1135.798203450122, "rec": [0.3333333333333333, 0.75, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910lvq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 2.323171716951186e-15, "lam_med": 1621.4973584986756}, {"file": "lea910lvq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 9.316991258780104e-16, "lam_med": 1434.6488457794012}, {"file": "lea910l3q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.274457634454774e-15, "lam_med": 1292.8231731827539, "rec": [0.16666666666666666, 0.8, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910l3q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.658256381146448e-15, "lam_med": 1143.6894906788448, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910leq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 5.192597633291179e-15, "lam_med": 1619.955063091168}, {"file": "lea910leq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 1.9124814648118137e-15, "lam_med": 1431.7627626958079, "rec": [0.16666666666666666, 0.6666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "lea910lnq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 7.142236488403342e-16, "lam_med": 1292.5940699931177}, {"file": "lea910lnq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 1.042007208761351e-15, "lam_med": 1143.0924700750143}, {"file": "lea910lrq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 8.021753777728548e-16, "lam_med": 1287.9012262520087}, {"file": "lea910lrq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 1.4122204409234974e-15, "lam_med": 1134.7831797438362}, {"file": "lea910l8q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 1.5169283763484548e-15, "lam_med": 1288.3096756458763}, {"file": "lea910l8q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 1.9783966558498313e-15, "lam_med": 1141.7689050250751, "rec": [0.16666666666666666, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910lzq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 2.178089427845635e-15, "lam_med": 1616.60141460656, "rec": [0.6666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910lzq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 9.092859229845274e-16, "lam_med": 1428.3754260453914}, {"file": "lea910lkq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 7.118648873743794e-16, "lam_med": 1293.8295492852167, "rec": [0.5, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910lkq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 1.0900646289411037e-15, "lam_med": 1144.8637824603707}, {"file": "lea910l5q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.5166857249467763e-15, "lam_med": 1290.3123521250998}, {"file": "lea910l5q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.9432431752105476e-15, "lam_med": 1143.0625639887835, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lea910l1q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.2531147385190851e-15, "lam_med": 1294.5269431666668}, {"file": "lea910l1q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.7568715968562475e-15, "lam_med": 1147.2918399840369}, {"file": "lea910lcq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 5.295894814942272e-15, "lam_med": 1621.4360849091008}, {"file": "lea910lcq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 1.9612670421021165e-15, "lam_med": 1434.942273162585}, {"file": "lea910ltq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 2.1770637014285814e-15, "lam_med": 1622.831500089015}, {"file": "lea910ltq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 9.468277967199842e-16, "lam_med": 1437.339201139908}, {"file": "lemb10zhq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.4695407812931084e-15, "lam_med": 1294.3318847646517}, {"file": "lemb10zhq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 2.004009802309654e-15, "lam_med": 1147.2504269140186}, {"file": "lemb10zjq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.4644954379364559e-15, "lam_med": 1291.871113130927}, {"file": "lemb10zjq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 2.0134281053540917e-15, "lam_med": 1143.946926514684}, {"file": "lemb10zmq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.4811809016552181e-15, "lam_med": 1290.1575367905339}, {"file": "lemb10zmq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 2.026259562983136e-15, "lam_med": 1143.6484121873884, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb10zrq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 4.9899156348801346e-15, "lam_med": 1622.7354699692119, "rec": [0.25, 0.5, 0.8, 1.0, 1.0, 1.0]}, {"file": "lemb10zrq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 1.7721069195248946e-15, "lam_med": 1437.5667788642722}, {"file": "lemb10zoq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 1.4700057313248355e-15, "lam_med": 1287.8063527834943}, {"file": "lemb10zoq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 2.0223690444577823e-15, "lam_med": 1141.3896926668817}, {"file": "lemb10zxq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 5.1303182893407525e-15, "lam_med": 1616.9343059773641}, {"file": "lemb10zxq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 1.7564789866576461e-15, "lam_med": 1428.5916134186061}, {"file": "lemb10ztq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 4.980197086791815e-15, "lam_med": 1621.0220448499094}, {"file": "lemb10ztq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 1.768365204305115e-15, "lam_med": 1434.937812843247}, {"file": "lemb10zvq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 4.971437646782514e-15, "lam_med": 1619.5411557108928}, {"file": "lemb10zvq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 1.797090999096789e-15, "lam_med": 1432.0276094869632}, {"file": "lemb10b3q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 2.0806915262272838e-15, "lam_med": 1621.009662695814}, {"file": "lemb10b3q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 8.305673513694136e-16, "lam_med": 1434.2162499105684}, {"file": "lemb10b1q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 2.117284791828833e-15, "lam_med": 1622.8209969203776}, {"file": "lemb10b1q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 8.590468888633191e-16, "lam_med": 1437.3098697626242}, {"file": "lemb10azq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 8.216171555650084e-16, "lam_med": 1286.7701270451207}, {"file": "lemb10azq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 1.306644557866084e-15, "lam_med": 1133.459213983219}, {"file": "lemb10axq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 8.211445703728085e-16, "lam_med": 1289.4799680749056}, {"file": "lemb10axq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 1.2852968364028416e-15, "lam_med": 1135.4691748644068}, {"file": "lemb10avq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 7.278138668412634e-16, "lam_med": 1290.9444774010526}, {"file": "lemb10avq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 1.1874559932683064e-15, "lam_med": 1138.1955608583573, "rec": [0.3333333333333333, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb10asq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 7.571961112172016e-16, "lam_med": 1294.3018883952836, "rec": [0.3333333333333333, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb10asq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 1.1941302773388723e-15, "lam_med": 1140.6831426862323}, {"file": "lemb10b8q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 2.1059836376306303e-15, "lam_med": 1616.7261026134638}, {"file": "lemb10b8q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 8.5090640633251e-16, "lam_med": 1428.151289726336}, {"file": "lemb10b5q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 2.0869943253558682e-15, "lam_med": 1619.6022058492044}, {"file": "lemb10b5q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 8.587470732977767e-16, "lam_med": 1431.7951577181811}, {"file": "lf2m10iuq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 4.978411057033665e-15, "lam_med": 1617.0390484781292}, {"file": "lf2m10iuq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 1.8071916275636005e-15, "lam_med": 1428.5134719814191}, {"file": "lf2m10j4q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 2.0504506141463092e-15, "lam_med": 1622.7789275629568}, {"file": "lf2m10j4q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 8.503949238237345e-16, "lam_med": 1437.5129985481167}, {"file": "lf2m10iwq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 7.203088135441054e-16, "lam_med": 1294.237840946121}, {"file": "lf2m10iwq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 1.066869387219891e-15, "lam_med": 1144.4405721226995}, {"file": "lf2m10iyq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 7.299474811597967e-16, "lam_med": 1292.2353517260622}, {"file": "lf2m10iyq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 1.1203458978930343e-15, "lam_med": 1139.7639491164089}, {"file": "lf2m10j0q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 8.21050738400879e-16, "lam_med": 1289.585299630568}, {"file": "lf2m10j0q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 1.277566075041956e-15, "lam_med": 1137.1370737589725, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m10jdq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 2.075637747577589e-15, "lam_med": 1618.519780876647}, {"file": "lf2m10jdq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 8.688520792738807e-16, "lam_med": 1431.5702631929112, "rec": [0.3333333333333333, 0.6666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "lf2m10j2q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 8.212803232434887e-16, "lam_med": 1288.0610177591016}, {"file": "lf2m10j2q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 1.306629086838302e-15, "lam_med": 1135.0674161077131, "rec": [0.0, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m10j6q_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 2.1966289277085422e-15, "lam_med": 1621.0776679655053}, {"file": "lf2m10j6q_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 8.769319601702509e-16, "lam_med": 1434.4315484254835, "rec": [0.16666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lf2m10jfq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 2.0694153006622906e-15, "lam_med": 1616.1577129937555}, {"file": "lf2m10jfq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 8.385136446410859e-16, "lam_med": 1427.9019516478095, "rec": [0.4, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m10isq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 4.917315323338759e-15, "lam_med": 1619.4500708335868}, {"file": "lf2m10isq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 1.8018257364174157e-15, "lam_med": 1431.3502994710682}, {"file": "lf2m51g8q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 4.7554605394820916e-15, "lam_med": 1621.1024826261182}, {"file": "lf2m51g8q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 1.7623981186381614e-15, "lam_med": 1434.7473087853773}, {"file": "lf2m51gaq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 4.899594083606068e-15, "lam_med": 1619.6461566229646, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51gaq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 1.7746143665536228e-15, "lam_med": 1431.666094312072}, {"file": "lf2m51g4q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 1.457571784111916e-15, "lam_med": 1288.2322338234778}, {"file": "lf2m51g4q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 2.004459520302303e-15, "lam_med": 1141.8729176895492, "rec": [0.4, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51fwq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.4647922310056727e-15, "lam_med": 1294.588033431578}, {"file": "lf2m51fwq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 2.0935343018376254e-15, "lam_med": 1145.3752246748631}, {"file": "lf2m51g2q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.4595846397358303e-15, "lam_med": 1290.0353686441874}, {"file": "lf2m51g2q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.958462895735942e-15, "lam_med": 1143.02708815518, "rec": [0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51gcq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 4.938441464620687e-15, "lam_med": 1617.0639352220396, "rec": [0.16666666666666666, 1.0, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "lf2m51gcq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 1.7644063623126937e-15, "lam_med": 1428.7805130251659, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51g6q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 4.77737904333363e-15, "lam_med": 1622.7668535663765}, {"file": "lf2m51g6q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 1.7504619983305144e-15, "lam_med": 1437.4250301487689, "rec": [0.0, 0.6, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lf2m51g0q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.477023507922292e-15, "lam_med": 1292.8645945433166, "rec": [0.2, 0.5, 0.8, 1.0, 1.0, 1.0]}, {"file": "lf2m51g0q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 2.0263767394265654e-15, "lam_med": 1143.9524142681435, "rec": [0.25, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51gmq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 8.239862599391625e-16, "lam_med": 1289.3479572810247}, {"file": "lf2m51gmq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 3, "nominal": 1.3982743921686957e-15, "lam_med": 1136.2015465249924}, {"file": "lf2m51giq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 7.677231039296933e-16, "lam_med": 1295.5144761462134}, {"file": "lf2m51giq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 1, "nominal": 1.3591179608786067e-15, "lam_med": 1140.9674703049864}, {"file": "lf2m51goq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 9.005792632791203e-16, "lam_med": 1287.574710054708}, {"file": "lf2m51goq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 4, "nominal": 1.4634465461686016e-15, "lam_med": 1137.2960124250678}, {"file": "lf2m51gkq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 7.444202625554398e-16, "lam_med": 1292.1273740028773, "rec": [0.2, 0.8333333333333334, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "lf2m51gkq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G130M", "fppos": 2, "nominal": 1.2758885211873739e-15, "lam_med": 1137.574615573962, "rec": [0.6, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51grq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 2.0784918591686448e-15, "lam_med": 1622.828006253499, "rec": [0.0, 0.3333333333333333, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51grq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 1, "nominal": 8.703908904782704e-16, "lam_med": 1437.4127721567609}, {"file": "lf2m51gwq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 2.0754562487578836e-15, "lam_med": 1618.3121768626565}, {"file": "lf2m51gwq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 3, "nominal": 8.444348945051335e-16, "lam_med": 1430.638991769395}, {"file": "lf2m51gyq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 2.1105743281547564e-15, "lam_med": 1616.4275213226092, "rec": [0.5, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lf2m51gyq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 4, "nominal": 8.746444001624811e-16, "lam_med": 1428.3036268094138, "rec": [0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m51guq_corrtag_a.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 2.046225071553078e-15, "lam_med": 1621.0045440987144}, {"file": "lf2m51guq_corrtag_b.fits", "star": "* ksi Boo B", "grating": "G160M", "fppos": 2, "nominal": 8.63866540915045e-16, "lam_med": 1434.5638726224795}, {"file": "lf6s10a7q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.6121327059424471e-15, "lam_med": 1292.903193391122}, {"file": "lf6s10a7q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 2.4270128924702996e-15, "lam_med": 1141.237589185225}, {"file": "lf6s10abq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 1.5523385459285494e-15, "lam_med": 1288.359963634451}, {"file": "lf6s10abq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 2.216208373600152e-15, "lam_med": 1141.8644848733438}, {"file": "lf6s10a9q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.553967050118196e-15, "lam_med": 1290.3227183278477}, {"file": "lf6s10a9q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 2.0918810111263287e-15, "lam_med": 1146.7404158117029, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 0.8333333333333334, 1.0]}, {"file": "lf6s10a4q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.5528035340879053e-15, "lam_med": 1294.3179728962364, "rec": [0.5, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s10a4q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 2.1691284843014937e-15, "lam_med": 1149.0191746328221}, {"file": "lf6s10adq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 5.028721761275394e-15, "lam_med": 1622.7570139995134}, {"file": "lf6s10adq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 1.8908158273445023e-15, "lam_med": 1437.5041791837884, "rec": [0.16666666666666666, 0.5, 0.8, 1.0, 1.0, 1.0]}, {"file": "lf6s10akq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 4.98116677816761e-15, "lam_med": 1617.163489619608}, {"file": "lf6s10akq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 1.8735619803657645e-15, "lam_med": 1428.772977687474}, {"file": "lf6s10aiq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 4.985166124184975e-15, "lam_med": 1619.7582516578334}, {"file": "lf6s10aiq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 1.855391414753541e-15, "lam_med": 1431.8667788154344}, {"file": "lf6s10agq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 5.003545429727084e-15, "lam_med": 1621.043396806117}, {"file": "lf6s10agq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 1.885075291986905e-15, "lam_med": 1434.7771518111626}, {"file": "lf6s10b8q_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 4, "nominal": 8.273470128190886e-16, "lam_med": 1287.981161385927}, {"file": "lf6s10b8q_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 4, "nominal": 1.3759828736939948e-15, "lam_med": 1135.9534917146252}, {"file": "lf6s10aoq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 2, "nominal": 8.245037001531939e-16, "lam_med": 1292.225568660635, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s10aoq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 2, "nominal": 1.1412610339470724e-15, "lam_med": 1142.6007441590396}, {"file": "lf6s10amq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 1, "nominal": 7.314143161265009e-16, "lam_med": 1293.9790985031082}, {"file": "lf6s10amq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 1, "nominal": 1.1305912394585066e-15, "lam_med": 1141.7947308070868, "rec": [0.3333333333333333, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s10auq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 3, "nominal": 8.260457163620141e-16, "lam_med": 1289.3661242142107}, {"file": "lf6s10auq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 3, "nominal": 1.3232625791212607e-15, "lam_med": 1137.3765326704531}, {"file": "lf6s10bxq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 1, "nominal": 2.0847941999874695e-15, "lam_med": 1623.1117036670018, "rec": [0.0, 0.6666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "lf6s10bxq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 1, "nominal": 8.573407521131047e-16, "lam_med": 1437.0881894007557}, {"file": "lf6s10c0q_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 2, "nominal": 2.0794090665469923e-15, "lam_med": 1621.7286426721903}, {"file": "lf6s10c0q_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 2, "nominal": 8.722355992980078e-16, "lam_med": 1434.2878709258537}, {"file": "lf6s10c2q_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 3, "nominal": 2.0714636173232704e-15, "lam_med": 1618.497429781672, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s10c2q_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 3, "nominal": 8.711696276660887e-16, "lam_med": 1431.878862427529, "rec": [0.2, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s10c5q_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 4, "nominal": 2.071120602152756e-15, "lam_med": 1616.5758339297136}, {"file": "lf6s10c5q_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 4, "nominal": 8.421474511158749e-16, "lam_med": 1428.3815235842435, "rec": [0.0, 0.3333333333333333, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm10e5q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 1.4816031961654859e-15, "lam_med": 1290.0009120032973}, {"file": "lfcm10e5q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 3, "nominal": 2.0814644423939263e-15, "lam_med": 1144.0542946230512}, {"file": "lfcm10etq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 3, "nominal": 2.156698074786259e-15, "lam_med": 1619.597031655851}, {"file": "lfcm10etq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 3, "nominal": 9.252905011323905e-16, "lam_med": 1431.183873358957}, {"file": "lfcm10edq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 4.880872979289889e-15, "lam_med": 1619.9153286854935, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm10edq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 3, "nominal": 1.837155056608743e-15, "lam_med": 1431.7464588787766}, {"file": "lfcm10ehq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 1, "nominal": 7.566411909638195e-16, "lam_med": 1294.0062560383178}, {"file": "lfcm10ehq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 1, "nominal": 1.1607749587587313e-15, "lam_med": 1145.0692960268993, "rec": [0.5, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm10efq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 4.831680291979808e-15, "lam_med": 1617.0266973041817}, {"file": "lfcm10efq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 4, "nominal": 1.8321235737346904e-15, "lam_med": 1428.5791518711374}, {"file": "lfcm10e1q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 1.5069720046239139e-15, "lam_med": 1294.235463087422}, {"file": "lfcm10e1q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 1, "nominal": 2.0437540926186914e-15, "lam_med": 1148.6119977754547}, {"file": "lfcm10elq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 3, "nominal": 8.773968588500742e-16, "lam_med": 1288.914832640397, "rec": [0.25, 0.75, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm10elq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 3, "nominal": 1.4555873667618192e-15, "lam_med": 1139.3273871743108}, {"file": "lfcm10ejq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 2, "nominal": 7.832595654064051e-16, "lam_med": 1290.7581070742624}, {"file": "lfcm10ejq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 2, "nominal": 1.3371291989190133e-15, "lam_med": 1137.993912214034, "rec": [0.16666666666666666, 0.6666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0]}, {"file": "lfcm10e9q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 4.9126176354132655e-15, "lam_med": 1622.8162325617843}, {"file": "lfcm10e9q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 1, "nominal": 1.8847109999327563e-15, "lam_med": 1437.7264567232592}, {"file": "lfcm10e3q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.452569231760327e-15, "lam_med": 1292.880405321983}, {"file": "lfcm10e3q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 2, "nominal": 1.9264868122780323e-15, "lam_med": 1147.0396890166408}, {"file": "lfcm10evq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 4, "nominal": 2.1382841225663994e-15, "lam_med": 1616.1698449561422}, {"file": "lfcm10evq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 4, "nominal": 9.136709699191476e-16, "lam_med": 1428.9582002754676}, {"file": "lfcm10ebq_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 4.946142517708211e-15, "lam_med": 1621.2005264933052}, {"file": "lfcm10ebq_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G160M", "fppos": 2, "nominal": 1.8482180972927712e-15, "lam_med": 1434.6324984174812}, {"file": "lfcm10enq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 4, "nominal": 8.554835603291694e-16, "lam_med": 1287.1213478446073}, {"file": "lfcm10enq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G130M", "fppos": 4, "nominal": 1.3638859496207477e-15, "lam_med": 1134.4114142936273}, {"file": "lfcm10erq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 2, "nominal": 2.1552225364614716e-15, "lam_med": 1621.7879868943965}, {"file": "lfcm10erq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 2, "nominal": 9.217392310308205e-16, "lam_med": 1435.2316662859441}, {"file": "lfcm10e7q_corrtag_a.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 1.4975025893845044e-15, "lam_med": 1288.3070901137962, "rec": [0.0, 0.4, 0.8, 1.0, 1.0, 1.0]}, {"file": "lfcm10e7q_corrtag_b.fits", "star": "* ksi Boo A", "grating": "G130M", "fppos": 4, "nominal": 2.1917886885532282e-15, "lam_med": 1141.6062707977667}, {"file": "lfcm10epq_corrtag_a.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 1, "nominal": 2.1944532258304404e-15, "lam_med": 1622.9752644887637, "rec": [0.16666666666666666, 0.3333333333333333, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm10epq_corrtag_b.fits", "star": "* ksi Boo", "grating": "G160M", "fppos": 1, "nominal": 8.942827129956503e-16, "lam_med": 1437.2983662534386, "rec": [0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbgh02upq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 3, "nominal": 3.278755826056416e-16, "lam_med": 1372.0621047401228}, {"file": "lbgh02upq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 3, "nominal": 2.7130301304822307e-16, "lam_med": 1224.6490931683352}, {"file": "lbgh02urq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 3, "nominal": 1.9500657546799914e-16, "lam_med": 1380.6049836208147}, {"file": "lbgh02utq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 9.92183777127434e-16, "lam_med": 1665.5959964305464, "rec": [0.3333333333333333, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbgh02utq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 3.656090181422459e-16, "lam_med": 1471.926303962282}, {"file": "lbgh02uvq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 8.929180058854272e-16, "lam_med": 1675.9173490525732, "rec": [0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lbgh02uvq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 3.5714506239471985e-16, "lam_med": 1484.032250086302}, {"file": "lbgh02uxq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 8.26802367373146e-16, "lam_med": 1687.7176276390055, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbgh02uxq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 2.869636451784692e-16, "lam_med": 1493.3939032584253}, {"file": "lbgh02uzq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 7.064967981301423e-16, "lam_med": 1699.6480167705347, "rec": [0.3333333333333333, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbgh02uzq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 2.5146211983520593e-16, "lam_med": 1504.3046618410845}, {"file": "lck120jmq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 1, "nominal": 4.174857476701857e-16, "lam_med": 1670.550301987136}, {"file": "lck120jmq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 1, "nominal": 1.3600577472889038e-16, "lam_med": 1478.1291308261418}, {"file": "lck120joq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 2.932655448980676e-16, "lam_med": 1699.6157050998763}, {"file": "lck120joq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G160M", "fppos": 3, "nominal": 9.459131296170631e-17, "lam_med": 1503.6241395437414}, {"file": "lck121maq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 2, "nominal": 8.720682024543627e-17, "lam_med": 1391.6561374714877}, {"file": "lck121maq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 2, "nominal": 5.4375184089664955e-17, "lam_med": 1262.7569487670462}, {"file": "lck121mjq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 3, "nominal": 8.707891874055097e-17, "lam_med": 1389.7017654556212}, {"file": "lck121mjq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 3, "nominal": 5.534207781391871e-17, "lam_med": 1262.0090714735804}, {"file": "lck121mtq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 4, "nominal": 8.589296095883177e-17, "lam_med": 1386.530896920442}, {"file": "lbgh02unq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 3, "nominal": 3.243272871087859e-16, "lam_med": 1362.3578389681534}, {"file": "lbgh02unq_corrtag_b.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 3, "nominal": 2.8608490353025013e-16, "lam_med": 1210.9331790454796}, {"file": "lck121lrq_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 1, "nominal": 1.2350170117307078e-16, "lam_med": 1367.7519451185647}, {"file": "lck121m0q_corrtag_a.fits", "star": "BD-07 4003", "grating": "G130M", "fppos": 2, "nominal": 8.133032854033284e-17, "lam_med": 1362.8878972238283}, {"file": "lf7109axq_corrtag_a.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 1.0591805156311544e-16, "lam_med": 1289.776319137511}, {"file": "lf7109axq_corrtag_b.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 2.1754576923693404e-16, "lam_med": 1133.368259284103}, {"file": "lf7109asq_corrtag_a.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 1.1335268485810748e-16, "lam_med": 1288.83991060448}, {"file": "lf7109asq_corrtag_b.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 2.274052133322404e-16, "lam_med": 1133.1095793438772, "rec": [0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf71z9hiq_corrtag_a.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 2.3179445112763954e-16, "lam_med": 1288.3121559035928}, {"file": "lf71z9hiq_corrtag_b.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 3.984088593601036e-16, "lam_med": 1138.3765716237385}, {"file": "lf71z9hkq_corrtag_a.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 1.9773421679821747e-16, "lam_med": 1288.212579607245, "rec": [0.2, 0.5, 0.5, 0.5, 1.0, 1.0]}, {"file": "lf71z9hkq_corrtag_b.fits", "star": "V* YZ CMi", "grating": "G130M", "fppos": 4, "nominal": 3.257403443809013e-16, "lam_med": 1138.4661878773397}, {"file": "lc2610ahq_corrtag_a.fits", "star": "Ross 47", "grating": "G140L", "fppos": 1, "nominal": 1.605973580187465e-15, "lam_med": 1673.7040338100337}, {"file": "lc2610ajq_corrtag_a.fits", "star": "Ross 47", "grating": "G140L", "fppos": 2, "nominal": 8.978541591984842e-16, "lam_med": 1531.7314962251985, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.6666666666666666]}, {"file": "lc2610alq_corrtag_a.fits", "star": "Ross 47", "grating": "G140L", "fppos": 3, "nominal": 4.271670773884533e-16, "lam_med": 1313.3677718834774}, {"file": "lc2610anq_corrtag_a.fits", "star": "Ross 47", "grating": "G140L", "fppos": 4, "nominal": 4.0853006314131516e-16, "lam_med": 1262.3936111149103}, {"file": "lczs01whq_corrtag_a.fits", "star": "LSR J1835+3259", "grating": "G160M", "fppos": 1, "nominal": 1.7101518794818977e-16, "lam_med": 1716.2038601605473}, {"file": "lczs01whq_corrtag_b.fits", "star": "LSR J1835+3259", "grating": "G160M", "fppos": 1, "nominal": 7.781950435316755e-17, "lam_med": 1522.969808339563, "rec": [0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lczs01wlq_corrtag_a.fits", "star": "LSR J1835+3259", "grating": "G160M", "fppos": 4, "nominal": 1.6601463405340511e-16, "lam_med": 1709.0767791389885, "rec": [0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lczs01wlq_corrtag_b.fits", "star": "LSR J1835+3259", "grating": "G160M", "fppos": 4, "nominal": 7.37570700643319e-17, "lam_med": 1513.5776537820875}, {"file": "lc2605fgq_corrtag_a.fits", "star": "G 175-34", "grating": "G140L", "fppos": 1, "nominal": 5.077256277609482e-16, "lam_med": 1342.081369571405, "rec": [0.0, 0.0, 0.0, 0.16666666666666666, 0.8333333333333334, 1.0]}, {"file": "lc2605fiq_corrtag_a.fits", "star": "G 175-34", "grating": "G140L", "fppos": 2, "nominal": 6.099768752230176e-16, "lam_med": 1384.4786752938487}, {"file": "lc2605fkq_corrtag_a.fits", "star": "G 175-34", "grating": "G140L", "fppos": 3, "nominal": 6.851874847882105e-16, "lam_med": 1420.434647210828}, {"file": "lc2605fmq_corrtag_a.fits", "star": "G 175-34", "grating": "G140L", "fppos": 4, "nominal": 7.338571878794803e-16, "lam_med": 1470.2838381832426}, {"file": "lcvi44c6q_corrtag_a.fits", "star": "EGGR 180", "grating": "G140L", "fppos": 1, "nominal": 4.599045767900261e-16, "lam_med": 1559.8327788980255}, {"file": "lcvi44c8q_corrtag_a.fits", "star": "EGGR 180", "grating": "G140L", "fppos": 2, "nominal": 6.145418036328727e-16, "lam_med": 1614.1434310407158}, {"file": "lcvi44ccq_corrtag_a.fits", "star": "EGGR 180", "grating": "G140L", "fppos": 3, "nominal": 3.766557192275879e-16, "lam_med": 1542.986389417856}, {"file": "lcvi44ceq_corrtag_a.fits", "star": "EGGR 180", "grating": "G140L", "fppos": 4, "nominal": 5.058369292740226e-16, "lam_med": 1598.4862043277458}, {"file": "lczs01vjq_corrtag_a.fits", "star": "LSR J1835+3259", "grating": "G160M", "fppos": 2, "nominal": 2.398462621622871e-16, "lam_med": 1668.2625122816462}, {"file": "lczs01vjq_corrtag_b.fits", "star": "LSR J1835+3259", "grating": "G160M", "fppos": 2, "nominal": 8.941762405424483e-17, "lam_med": 1475.2316530936007, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s11w9q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 4.5225783777429275e-15, "lam_med": 1621.2510176454662}, {"file": "le5s11w9q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 1.6598076175121618e-15, "lam_med": 1434.763470754926}, {"file": "le5s11wbq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 4.5643020036940574e-15, "lam_med": 1620.0760966092726, "rec": [0.0, 0.4, 0.8, 1.0, 1.0, 1.0]}, {"file": "le5s11wbq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 1.6618125719400547e-15, "lam_med": 1431.6209470420201, "rec": [0.0, 0.8, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "le5s11w3q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.398736239452058e-15, "lam_med": 1289.9156005768662}, {"file": "le5s11w3q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.9296492561801515e-15, "lam_med": 1143.0986351857935}, {"file": "le5s11w7q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 4.540057567004723e-15, "lam_med": 1622.805336809297}, {"file": "le5s11w7q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 1.7048104047841496e-15, "lam_med": 1437.5391643567818}, {"file": "le5s11vzq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.1870437839708321e-15, "lam_med": 1294.7175852068426}, {"file": "le5s11vzq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.6438783546852805e-15, "lam_med": 1145.446911741071}, {"file": "le5s11w1q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.1868538946757543e-15, "lam_med": 1293.033900050313}, {"file": "le5s11w1q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.6562439642082414e-15, "lam_med": 1143.9842155443748}, {"file": "le5s11w5q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.395426699834571e-15, "lam_med": 1288.3514668675234}, {"file": "le5s11w5q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.9284944413824845e-15, "lam_med": 1142.0140515013086, "rec": [0.0, 0.6666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "le5s11wdq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 4.610415111002074e-15, "lam_med": 1616.9552278813348}, {"file": "le5s11wdq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 1.657000792559773e-15, "lam_med": 1428.8207999618207}, {"file": "le5s11wpq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 2.1505354715512158e-15, "lam_med": 1621.3365405952404}, {"file": "le5s11wpq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 8.733767464336812e-16, "lam_med": 1434.6288351248884}, {"file": "le5s11wnq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 2.110952797891661e-15, "lam_med": 1622.7562359074818, "rec": [0.0, 0.16666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "le5s11wnq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 8.83212746073932e-16, "lam_med": 1437.3433914991824, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s11wrq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 2.12476161039608e-15, "lam_med": 1619.708788675996}, {"file": "le5s11wrq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 8.781825675653101e-16, "lam_med": 1431.3518056336325}, {"file": "le5s11wtq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 2.1372861467304496e-15, "lam_med": 1615.5476318069009}, {"file": "le5s11wtq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 8.529569524168664e-16, "lam_med": 1428.5638844967907}, {"file": "lea911j9q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 2.4035873779513793e-15, "lam_med": 1622.0547604976502, "rec": [0.16666666666666666, 0.5, 0.8, 1.0, 1.0, 1.0]}, {"file": "lea911j9q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 9.889580414489089e-16, "lam_med": 1434.0986626328738}, {"file": "lea911j7q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 2.345785364549224e-15, "lam_med": 1622.5565158102154}, {"file": "lea911j7q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 9.731955989489846e-16, "lam_med": 1437.008669536848}, {"file": "lea911jbs_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 2.368389296904617e-15, "lam_med": 1619.9498429988935}, {"file": "lea911jbs_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 9.703784725830778e-16, "lam_med": 1430.6628953018244}, {"file": "lea911jdq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 2.356533837056436e-15, "lam_med": 1615.8501456760214}, {"file": "lea911jdq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 9.585382534811315e-16, "lam_med": 1427.520573005785}, {"file": "lea911ijq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.2182654552195846e-15, "lam_med": 1294.2975282302614}, {"file": "lea911ijq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.6267850237305945e-15, "lam_med": 1146.77783929913}, {"file": "lea911inq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.401770361643892e-15, "lam_med": 1289.9541062468807, "rec": [0.0, 0.8, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lea911inq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.8695655346582056e-15, "lam_med": 1143.4148577078117}, {"file": "lea911ipq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.3861548167666118e-15, "lam_med": 1288.3900755588004}, {"file": "lea911ipq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.989852499566884e-15, "lam_med": 1141.7831160954702}, {"file": "lea911ilq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.2238657689914674e-15, "lam_med": 1292.8430792544004}, {"file": "lea911ilq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.6535088362451173e-15, "lam_med": 1143.8924406274227}, {"file": "lemb11y7q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 9.062044613965818e-16, "lam_med": 1290.5395866749536, "rec": [0.2, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb11y7q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.4042925329602283e-15, "lam_med": 1137.1884732740634}, {"file": "lemb11y3q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 8.879097283214862e-16, "lam_med": 1295.1322382002102, "rec": [0.4, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb11y3q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.3546114314715645e-15, "lam_med": 1143.5664355296499}, {"file": "lemb11y9q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 9.25882320874743e-16, "lam_med": 1288.2283213046421}, {"file": "lemb11y9q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.53627829338536e-15, "lam_med": 1134.740767269751}, {"file": "lemb11y5q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 9.138925179902446e-16, "lam_med": 1292.6117604868396}, {"file": "lemb11y5q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.3100756791291115e-15, "lam_med": 1143.9146814105766}, {"file": "lemb12fuq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 2.3368218669047544e-15, "lam_med": 1616.1720646412361, "rec": [0.3333333333333333, 0.5, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lemb12fuq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 9.930009377334188e-16, "lam_med": 1428.841130655117}, {"file": "lemb12f6q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.3187274358153377e-15, "lam_med": 1288.4009583121685}, {"file": "lemb12f6q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.9808142758025638e-15, "lam_med": 1142.000456856878}, {"file": "lemb12f0q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.3139048607422235e-15, "lam_med": 1294.5978561579336}, {"file": "lemb12f0q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.8513805381081822e-15, "lam_med": 1147.0951283219406, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb12fqq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 2.4067706427063393e-15, "lam_med": 1621.5205983257265}, {"file": "lemb12fqq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 1.0596852667835657e-15, "lam_med": 1434.2704480610462, "rec": [0.4, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb12fgq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 8.208368958641095e-16, "lam_med": 1294.3785475281804}, {"file": "lemb12fgq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 1.1700137270097596e-15, "lam_med": 1144.7964507772328, "rec": [0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lemb12f4q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.3332214990646286e-15, "lam_med": 1290.283938043047, "rec": [0.6666666666666666, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb12f4q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.9242945063565035e-15, "lam_med": 1143.0751148995532}, {"file": "lemb12fiq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 8.221298267582892e-16, "lam_med": 1292.186716465005}, {"file": "lemb12fiq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 1.2290884487817028e-15, "lam_med": 1141.7913987055786}, {"file": "lemb12f2q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.3133741004728195e-15, "lam_med": 1293.2429044451133}, {"file": "lemb12f2q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.8183180582945023e-15, "lam_med": 1143.7418052586684}, {"file": "lemb12foq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 2.3817180419141473e-15, "lam_med": 1622.683307458952}, {"file": "lemb12foq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 1.009902894125763e-15, "lam_med": 1437.1807133314787}, {"file": "lemb12fsq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 2.3135113644960218e-15, "lam_med": 1619.9539077402828}, {"file": "lemb12fsq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 1.0069529655871119e-15, "lam_med": 1430.9932606196696}, {"file": "lemb12fkq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 9.154645170043024e-16, "lam_med": 1289.6760791603697}, {"file": "lemb12fkq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 1.436460307880737e-15, "lam_med": 1138.7266347560023}, {"file": "lemb12fmq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 9.382327765310754e-16, "lam_med": 1288.0421678043526}, {"file": "lemb12fmq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 1.4732206883347221e-15, "lam_med": 1135.184255453974, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m11k6q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.385351655407806e-15, "lam_med": 1294.5162473411885}, {"file": "lf2m11k6q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 2.040469047026826e-15, "lam_med": 1147.2526457664303}, {"file": "lf2m11kbq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.3284127180453022e-15, "lam_med": 1290.3318531647803, "rec": [0.0, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "lf2m11kbq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.9404708891768146e-15, "lam_med": 1143.0734329140973, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m11k9q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.3260006300685145e-15, "lam_med": 1293.0915576368468}, {"file": "lf2m11k9q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.884685209616223e-15, "lam_med": 1144.1082899552134}, {"file": "lf2m11kdq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.3263664054252423e-15, "lam_med": 1288.4688010078276, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m11kdq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.9707040644281795e-15, "lam_med": 1138.7151180082128}, {"file": "lf2m11laq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 2.3149713748661425e-15, "lam_med": 1616.4144640326647}, {"file": "lf2m11laq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 9.497707897979894e-16, "lam_med": 1428.6311540579661}, {"file": "lf2m11l8q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 2.3573101835795893e-15, "lam_med": 1618.617482497006, "rec": [0.2, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m11l8q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 9.600577003586774e-16, "lam_med": 1430.8688758935746}, {"file": "lf2m11kyq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 2.5615616943171922e-15, "lam_med": 1622.8155494372277}, {"file": "lf2m11kyq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 1.0997526530503e-15, "lam_med": 1437.203053292823}, {"file": "lf2m11l0q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 2.3946101261431506e-15, "lam_med": 1621.1999996815694}, {"file": "lf2m11l0q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 1.0143405912989008e-15, "lam_med": 1434.537353563572, "rec": [0.0, 0.5, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lf6s11r2q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 8.092444468552069e-16, "lam_med": 1294.2864693199392}, {"file": "lf6s11r2q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 1.2046073135223877e-15, "lam_med": 1144.1785315284164}, {"file": "lf6s11r8q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 9.2097469656907e-16, "lam_med": 1287.999968231588, "rec": [0.3333333333333333, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s11r8q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 1.4960772403190293e-15, "lam_med": 1137.0042755060385}, {"file": "lf6s11rgq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 2.389247838342643e-15, "lam_med": 1616.4993071671024}, {"file": "lf6s11rgq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 9.81362450646263e-16, "lam_med": 1427.9348440710887, "rec": [0.2, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s11r4q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 8.178021493326314e-16, "lam_med": 1292.11459034799}, {"file": "lf6s11r4q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 1.2209950197429862e-15, "lam_med": 1142.656115914972}, {"file": "lf6s11qoq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.4895978262283667e-15, "lam_med": 1293.0910583365335}, {"file": "lf6s11qoq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 2.0148093084944028e-15, "lam_med": 1144.9448148036613}, {"file": "lf6s11rcq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 2.3710664098120475e-15, "lam_med": 1621.2113675294627}, {"file": "lf6s11rcq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 9.96897103554518e-16, "lam_med": 1434.501298235316, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s11r6q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 9.354307405245313e-16, "lam_med": 1289.594012570651}, {"file": "lf6s11r6q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 1.4994889795098395e-15, "lam_med": 1140.98444397221, "rec": [0.3333333333333333, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s11qmq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.442162266649313e-15, "lam_med": 1294.884355427521}, {"file": "lf6s11qmq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 2.022254813553951e-15, "lam_med": 1146.437380011239, "rec": [0.3333333333333333, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s11raq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 2.3116210494434134e-15, "lam_med": 1622.72899201137, "rec": [0.0, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s11raq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 9.882106921357025e-16, "lam_med": 1437.3993054898617}, {"file": "lf6s11req_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 2.3988175412765886e-15, "lam_med": 1618.7391159703152}, {"file": "lf6s11req_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 9.952614902606482e-16, "lam_med": 1431.3954142028624}, {"file": "lf6s11qsq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.4570158946160516e-15, "lam_med": 1288.3487875581907}, {"file": "lf6s11qsq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 2.1963569931361676e-15, "lam_med": 1141.7109240608706, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf6s11qqq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.4327564912144049e-15, "lam_med": 1290.1520468481367}, {"file": "lf6s11qqq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 2.0693422695436386e-15, "lam_med": 1142.6960202360253}, {"file": "lfcm11d3q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 2.271993291496026e-15, "lam_med": 1622.5498655761876}, {"file": "lfcm11d3q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 9.74978332332948e-16, "lam_med": 1436.918308968272}, {"file": "lfcm11d9q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 2.2983884472116052e-15, "lam_med": 1615.7329487488787}, {"file": "lfcm11d9q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 9.882614632152897e-16, "lam_med": 1428.114406385933, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm11d5q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 2.3821298222631456e-15, "lam_med": 1621.7176353279447}, {"file": "lfcm11d5q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 9.88235583998416e-16, "lam_med": 1434.6561943304932, "rec": [0.16666666666666666, 0.8, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lfcm11d7q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 2.308958401719154e-15, "lam_med": 1619.0373748375139}, {"file": "lfcm11d7q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 9.868988222519038e-16, "lam_med": 1430.6822128783474}, {"file": "lbpi05nrq_corrtag_a.fits", "star": "HD 204961", "grating": "G130M", "fppos": 4, "nominal": 1.53384424600377e-16, "lam_med": 1399.379455183626}, {"file": "lbpi05nrq_corrtag_b.fits", "star": "HD 204961", "grating": "G130M", "fppos": 4, "nominal": 1.1667586545866856e-16, "lam_med": 1257.8911261017684}, {"file": "lck117w2q_corrtag_a.fits", "star": "HD 204961", "grating": "G160M", "fppos": 3, "nominal": 3.084364540923644e-16, "lam_med": 1700.0726867700557}, {"file": "lck117w2q_corrtag_b.fits", "star": "HD 204961", "grating": "G160M", "fppos": 3, "nominal": 1.2143274824031833e-16, "lam_med": 1504.8874174417394}, {"file": "lck118z6q_corrtag_a.fits", "star": "HD 204961", "grating": "G130M", "fppos": 1, "nominal": 1.062943294160864e-16, "lam_med": 1367.4342247786985}, {"file": "lck118z6q_corrtag_b.fits", "star": "HD 204961", "grating": "G130M", "fppos": 1, "nominal": 9.71464475028142e-17, "lam_med": 1222.667347940433}, {"file": "lck118z8q_corrtag_a.fits", "star": "HD 204961", "grating": "G130M", "fppos": 2, "nominal": 9.067839658114878e-17, "lam_med": 1364.8332059889024}, {"file": "lck118z8q_corrtag_b.fits", "star": "HD 204961", "grating": "G130M", "fppos": 2, "nominal": 1.0005088468620996e-16, "lam_med": 1210.820598766213}, {"file": "le5s11wlq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 8.029465838220383e-16, "lam_med": 1287.962809968883}, {"file": "le5s11wlq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 1.4223068354756932e-15, "lam_med": 1133.6756280149584, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s11wfq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 7.108542120095408e-16, "lam_med": 1293.880614154711}, {"file": "le5s11wfq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 1.0550894131324951e-15, "lam_med": 1142.5214325347533}, {"file": "le5s11whq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 7.265225419033022e-16, "lam_med": 1291.041264483873}, {"file": "le5s11whq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 1.091861009395067e-15, "lam_med": 1142.3920721484094}, {"file": "le5s11wjq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 8.090889778488391e-16, "lam_med": 1289.676382355674, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "le5s11wjq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 1.1927985286707884e-15, "lam_med": 1140.8298726970595, "rec": [0.16666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lea911j5q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 8.711599528941147e-16, "lam_med": 1287.0053387130515}, {"file": "lea911j5q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 1.3032659515613229e-15, "lam_med": 1137.9126845355777}, {"file": "lea911j3q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 8.702010034095424e-16, "lam_med": 1289.2467831573267}, {"file": "lea911j3q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 1.2731353796255333e-15, "lam_med": 1141.424907217242}, {"file": "lea911izq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 7.960861869902777e-16, "lam_med": 1294.0783420596053}, {"file": "lea911izq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 1.0975982486664285e-15, "lam_med": 1143.6536335108951}, {"file": "lea911j1q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 7.911708863518749e-16, "lam_med": 1291.5480005890786}, {"file": "lea911j1q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 1.2085677241467853e-15, "lam_med": 1139.5145785618024}, {"file": "lea911irq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 4.787061733499541e-15, "lam_med": 1622.6666873542358}, {"file": "lea911irq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 1.8173643881537417e-15, "lam_med": 1437.3632781693223}, {"file": "lea911itq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 4.842553300496853e-15, "lam_med": 1621.0390444583227}, {"file": "lea911itq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 1.7189962877781474e-15, "lam_med": 1434.453268251687}, {"file": "lea911ixq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 4.77814294906465e-15, "lam_med": 1616.8292037814108}, {"file": "lea911ixq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 1.757611660592461e-15, "lam_med": 1428.388711937656}, {"file": "lea911ivq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 4.721114116961435e-15, "lam_med": 1619.7907769848462}, {"file": "lea911ivq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 1.7470327977602657e-15, "lam_med": 1431.2987202131305}, {"file": "lemb11ypq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 6.767367614996816e-16, "lam_med": 1287.769954906195}, {"file": "lemb11ypq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 1.2477982156954584e-15, "lam_med": 1132.402423158138}, {"file": "lemb11yjq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 6.638665927691928e-16, "lam_med": 1293.7672998613882, "rec": [0.3333333333333333, 0.8, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb11yjq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 1.0713393688246859e-15, "lam_med": 1140.3027438679119}, {"file": "lemb11yxq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 1.880547711496422e-15, "lam_med": 1616.8886054326808, "rec": [0.5, 1.0, 0.8, 1.0, 1.0, 1.0]}, {"file": "lemb11yxq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 4, "nominal": 6.940603290407627e-16, "lam_med": 1427.6586374045767, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lemb11ytq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 1.881273686179012e-15, "lam_med": 1621.4657623291282, "rec": [0.16666666666666666, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lemb11ytq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 2, "nominal": 7.038706239234941e-16, "lam_med": 1433.7723372193095}, {"file": "lemb11ybq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 2.8719305518665735e-15, "lam_med": 1622.9344965524158}, {"file": "lemb11ybq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 1.0917844405123172e-15, "lam_med": 1437.3306198341454}, {"file": "lemb11yfq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 2.879195986962891e-15, "lam_med": 1620.0462315513932, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb11yfq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 1.0926284333209644e-15, "lam_med": 1431.7304714252718}, {"file": "lemb11ylq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 6.58178226785738e-16, "lam_med": 1292.003961521757}, {"file": "lemb11ylq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 1.0844766149364932e-15, "lam_med": 1136.8699911396898}, {"file": "lemb11yrq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 1.8979880261152965e-15, "lam_med": 1622.665129010065, "rec": [0.3333333333333333, 0.6, 0.8, 1.0, 1.0, 1.0]}, {"file": "lemb11yrq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 1, "nominal": 6.975105413195068e-16, "lam_med": 1437.3916498388214, "rec": [0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lemb11ydq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 2.829881532184165e-15, "lam_med": 1620.9641159868795}, {"file": "lemb11ydq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 1.080135842903254e-15, "lam_med": 1434.555000710053}, {"file": "lemb11ynq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 6.807208549866786e-16, "lam_med": 1289.8321646722256}, {"file": "lemb11ynq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 1.2242483254376421e-15, "lam_med": 1134.9894352834597}, {"file": "lemb11yvq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 1.8939335724991237e-15, "lam_med": 1620.1807316987713}, {"file": "lemb11yvq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G160M", "fppos": 3, "nominal": 7.006071148632768e-16, "lam_med": 1430.9111265255606}, {"file": "lemb11yhq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 2.8407089410082007e-15, "lam_med": 1617.2436438482496}, {"file": "lemb11yhq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 1.0783239979766663e-15, "lam_med": 1428.8203514553695, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lemb12feq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 4.288046577840719e-15, "lam_med": 1616.9065720824892, "rec": [0.16666666666666666, 0.6, 0.6, 1.0, 1.0, 1.0]}, {"file": "lemb12feq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 1.5898081853839195e-15, "lam_med": 1428.6578617980713}, {"file": "lemb12fcq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 4.2640239170795426e-15, "lam_med": 1619.5747611215402}, {"file": "lemb12fcq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 1.6119066901479513e-15, "lam_med": 1431.7760802536131}, {"file": "lemb12faq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 4.254661413237448e-15, "lam_med": 1621.3616563202534}, {"file": "lemb12faq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 1.5644359426200183e-15, "lam_med": 1434.5518386128747}, {"file": "lemb12f8q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 4.2765560997665565e-15, "lam_med": 1622.6712322901258}, {"file": "lemb12f8q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 1.6211928599910617e-15, "lam_med": 1437.5843817066607}, {"file": "lf2m11ksq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 9.003737968968139e-16, "lam_med": 1292.7825848773978}, {"file": "lf2m11ksq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 1.1753424661679906e-15, "lam_med": 1143.4414982070894}, {"file": "lf2m11kwq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 9.395217115745956e-16, "lam_med": 1287.990457837885, "rec": [0.0, 0.6666666666666666, 0.8, 1.0, 1.0, 1.0]}, {"file": "lf2m11kwq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 1.634249498130868e-15, "lam_med": 1134.854217766584}, {"file": "lf2m11kuq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 9.462465729860355e-16, "lam_med": 1289.9730633604624}, {"file": "lf2m11kuq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 1.4289188524953516e-15, "lam_med": 1139.7896626500196, "rec": [0.0, 0.6666666666666666, 0.75, 1.0, 1.0, 1.0]}, {"file": "lf2m11khq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 4.313781711603917e-15, "lam_med": 1621.0532953058223}, {"file": "lf2m11khq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 1.6125145658690512e-15, "lam_med": 1434.5986377615122}, {"file": "lf2m11kjq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 4.304969156114303e-15, "lam_med": 1619.7192439318258}, {"file": "lf2m11kjq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 1.632161777180372e-15, "lam_med": 1431.6027803362313, "rec": [0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m11kpq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 9.379645692943353e-16, "lam_med": 1294.1076461750863, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lf2m11kpq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 1.272050378609928e-15, "lam_med": 1145.2922896730024}, {"file": "lf2m11knq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 4.3058178679815296e-15, "lam_med": 1616.4880690964615, "rec": [0.2, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lf2m11knq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 1.6095734350792289e-15, "lam_med": 1428.3256041953973}, {"file": "lf2m11kfq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 4.181861740729354e-15, "lam_med": 1622.7177991135445}, {"file": "lf2m11kfq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 1.609633765974204e-15, "lam_med": 1437.2398822505531}, {"file": "lf6s11qyq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 4.5720353217465555e-15, "lam_med": 1619.779574666988}, {"file": "lf6s11qyq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 1.7153226336658496e-15, "lam_med": 1431.7134799421237}, {"file": "lf6s11qwq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 4.642266662089011e-15, "lam_med": 1621.407346962173}, {"file": "lf6s11qwq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 1.7147667751781124e-15, "lam_med": 1434.8071326668296}, {"file": "lf6s11quq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 4.563926635621923e-15, "lam_med": 1622.7781055727578}, {"file": "lf6s11quq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 1.7283685278905064e-15, "lam_med": 1437.4605854662796}, {"file": "lf6s11r0q_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 4.608974387325741e-15, "lam_med": 1617.0135918841117}, {"file": "lf6s11r0q_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 1.790228714212288e-15, "lam_med": 1428.7910152291356}, {"file": "lfcm11czq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 8.491582501421141e-16, "lam_med": 1289.2993830682915, "rec": [0.4, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm11czq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 3, "nominal": 1.2908217291310806e-15, "lam_med": 1141.2403632603766, "rec": [0.5, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm11crq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 4.398523538304944e-15, "lam_med": 1619.4903479369996, "rec": [0.2, 0.8, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lfcm11crq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 3, "nominal": 1.6934531990348241e-15, "lam_med": 1431.648321185927}, {"file": "lfcm11cxq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 8.043266951011329e-16, "lam_med": 1292.8859002462746, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm11cxq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 2, "nominal": 1.2294483855746735e-15, "lam_med": 1141.2602702437732}, {"file": "lfcm11cpq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 4.508329287381158e-15, "lam_med": 1620.910029808928}, {"file": "lfcm11cpq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 2, "nominal": 1.7174843583544378e-15, "lam_med": 1434.6685471218816, "rec": [0.3333333333333333, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm11cnq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 4.464301386333224e-15, "lam_med": 1622.6723954361446}, {"file": "lfcm11cnq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 1, "nominal": 1.703828168516423e-15, "lam_med": 1437.6154079113978}, {"file": "lfcm11ctq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 4.466587879728223e-15, "lam_med": 1616.9936685020054}, {"file": "lfcm11ctq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G160M", "fppos": 4, "nominal": 1.7014957311771036e-15, "lam_med": 1428.6892325977362}, {"file": "lfcm11d1q_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 9.159846595649189e-16, "lam_med": 1287.7452233063511}, {"file": "lfcm11d1q_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 4, "nominal": 1.5401336213938685e-15, "lam_med": 1133.0015940591732, "rec": [0.3333333333333333, 0.5, 0.8333333333333334, 0.8, 1.0, 1.0]}, {"file": "lfcm11cvq_corrtag_a.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 8.050947420338534e-16, "lam_med": 1294.699088697917}, {"file": "lfcm11cvq_corrtag_b.fits", "star": "* 70 Oph B", "grating": "G130M", "fppos": 1, "nominal": 1.2318929517454962e-15, "lam_med": 1143.0513113893192}, {"file": "lfcm11ciq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 1.3287645516900583e-15, "lam_med": 1290.5049611095742, "rec": [0.2, 0.6, 1.0, 1.0, 1.0, 1.0]}, {"file": "lfcm11ciq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 3, "nominal": 2.0155041721058154e-15, "lam_med": 1143.011599845171}, {"file": "lfcm11ceq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.3395292100933028e-15, "lam_med": 1294.410284439115}, {"file": "lfcm11ceq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 1, "nominal": 1.9303881309376252e-15, "lam_med": 1148.29516530154, "rec": [0.2, 0.6666666666666666, 0.75, 1.0, 1.0, 1.0]}, {"file": "lfcm11ckq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 1.319047196919148e-15, "lam_med": 1288.5323742649662}, {"file": "lfcm11ckq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 4, "nominal": 2.1027566532604056e-15, "lam_med": 1140.4245400363206}, {"file": "lfcm11cgq_corrtag_a.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 1.3198780432986734e-15, "lam_med": 1293.0055619567343}, {"file": "lfcm11cgq_corrtag_b.fits", "star": "* 70 Oph A", "grating": "G130M", "fppos": 2, "nominal": 2.2478376907546522e-15, "lam_med": 1141.4792703573378, "rec": [0.0, 0.8, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "lbpi05ncq_corrtag_a.fits", "star": "HD 204961", "grating": "G130M", "fppos": 4, "nominal": 1.3935444472707427e-16, "lam_med": 1369.2800820192426}, {"file": "lbpi05ncq_corrtag_b.fits", "star": "HD 204961", "grating": "G130M", "fppos": 4, "nominal": 1.3081370873177815e-16, "lam_med": 1220.4946424633608, "rec": [0.6, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbpi05nxq_corrtag_a.fits", "star": "HD 204961", "grating": "G160M", "fppos": 2, "nominal": 3.784670857878958e-16, "lam_med": 1679.7547449139802, "rec": [0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbpi05nxq_corrtag_b.fits", "star": "HD 204961", "grating": "G160M", "fppos": 2, "nominal": 1.5343982708762741e-16, "lam_med": 1484.6901551554392, "rec": [0.5, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lbpi05ozq_corrtag_a.fits", "star": "HD 204961", "grating": "G160M", "fppos": 2, "nominal": 3.474349837902498e-16, "lam_med": 1714.8947625029932}, {"file": "lbpi05ozq_corrtag_b.fits", "star": "HD 204961", "grating": "G160M", "fppos": 2, "nominal": 1.4510745212391665e-16, "lam_med": 1519.7949072406855}, {"file": "lck117w0q_corrtag_a.fits", "star": "HD 204961", "grating": "G160M", "fppos": 1, "nominal": 3.24970832239994e-16, "lam_med": 1671.147069629629, "rec": [0.3333333333333333, 0.8, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck117w0q_corrtag_b.fits", "star": "HD 204961", "grating": "G160M", "fppos": 1, "nominal": 1.2982550973488515e-16, "lam_med": 1477.4489752136042, "rec": [0.0, 0.3333333333333333, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck118zaq_corrtag_a.fits", "star": "HD 204961", "grating": "G130M", "fppos": 2, "nominal": 9.459965716691355e-17, "lam_med": 1392.187220355056, "rec": [0.8, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck118zaq_corrtag_b.fits", "star": "HD 204961", "grating": "G130M", "fppos": 2, "nominal": 6.63651508015213e-17, "lam_med": 1259.5604685610447}, {"file": "lck118zcq_corrtag_a.fits", "star": "HD 204961", "grating": "G130M", "fppos": 3, "nominal": 9.194419607854042e-17, "lam_med": 1389.6748834103519, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck118zcq_corrtag_b.fits", "star": "HD 204961", "grating": "G130M", "fppos": 3, "nominal": 6.638122114414086e-17, "lam_med": 1257.0377896955063}, {"file": "lck118zeq_corrtag_a.fits", "star": "HD 204961", "grating": "G130M", "fppos": 4, "nominal": 9.871108886430755e-17, "lam_med": 1387.3619335271792}, {"file": "lck118zeq_corrtag_b.fits", "star": "HD 204961", "grating": "G130M", "fppos": 4, "nominal": 9.528934600149257e-17, "lam_med": 1221.0428418175616}, {"file": "lf7105beq_corrtag_b.fits", "star": "V* AD Leo", "grating": "G130M", "fppos": 4, "nominal": 4.2322670878111803e-16, "lam_med": 1139.8085792035279}, {"file": "lf7105bjq_corrtag_b.fits", "star": "V* AD Leo", "grating": "G130M", "fppos": 4, "nominal": 3.871783954524487e-16, "lam_med": 1139.0821497323705}, {"file": "lb4p07exq_corrtag_a.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 3, "nominal": 5.844267328229781e-16, "lam_med": 1835.8954253152533}, {"file": "lb4p07exq_corrtag_b.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 3, "nominal": 3.548840145009313e-17, "lam_med": 480.7134509656057}, {"file": "lb4p07f0q_corrtag_a.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 1, "nominal": 2.0638929365763407e-16, "lam_med": 1869.5123749783736}, {"file": "lb4p07f0q_corrtag_b.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 1, "nominal": 1.2124767705165693e-17, "lam_med": 475.77102032316276}, {"file": "lb4p07f2q_corrtag_a.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 2, "nominal": 2.352235308904735e-16, "lam_med": 1852.3820046088156, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.6666666666666666]}, {"file": "lb4p07f2q_corrtag_b.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 2, "nominal": 1.2057947182105631e-17, "lam_med": 475.5054220555095, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.8333333333333334]}, {"file": "lb4p07f4q_corrtag_a.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 3, "nominal": 2.1855621789018627e-16, "lam_med": 1831.4938420356802}, {"file": "lb4p07f4q_corrtag_b.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 3, "nominal": 1.1697443523918528e-17, "lam_med": 471.7515477732767, "rec": [0.0, 0.0, 0.0, 0.0, 0.2, 0.4]}, {"file": "lb4p07f6q_corrtag_a.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 1, "nominal": 2.0258274263632885e-16, "lam_med": 1870.312616249747}, {"file": "lb4p07f6q_corrtag_b.fits", "star": "DENIS J025503.3-470049", "grating": "G140L", "fppos": 1, "nominal": 1.2284003314781677e-17, "lam_med": 477.55699075166154}, {"file": "lbpi03uoq_corrtag_a.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 4, "nominal": 1.4494243003407613e-16, "lam_med": 1366.0924109022967}, {"file": "lbpi03uoq_corrtag_b.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 4, "nominal": 1.2637210959259573e-16, "lam_med": 1222.6747854916193}, {"file": "lbpi03vbq_corrtag_a.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 4, "nominal": 2.2061055530903458e-16, "lam_med": 1399.1834241523597}, {"file": "lbpi03vbq_corrtag_b.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 4, "nominal": 1.9453527464844893e-16, "lam_med": 1257.7803297744595}, {"file": "lbpi03vdq_corrtag_a.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 2, "nominal": 3.991922553701874e-16, "lam_med": 1679.5276155231409}, {"file": "lbpi03vdq_corrtag_b.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 2, "nominal": 1.6647890313367751e-16, "lam_med": 1484.7157769864107, "rec": [0.16666666666666666, 0.8, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lbpi03vfq_corrtag_a.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 2, "nominal": 3.8544522540084533e-16, "lam_med": 1714.8854591151596}, {"file": "lbpi03vfq_corrtag_b.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 2, "nominal": 1.7276718844869838e-16, "lam_med": 1519.7395062454436, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck138q1q_corrtag_a.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 1, "nominal": 3.238731625509116e-16, "lam_med": 1671.256978276081}, {"file": "lck138q1q_corrtag_b.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 1, "nominal": 1.2953451201907118e-16, "lam_med": 1477.3951536958725}, {"file": "lck138q5q_corrtag_a.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 3, "nominal": 2.8173412115458623e-16, "lam_med": 1700.1805641859046}, {"file": "lck138q5q_corrtag_b.fits", "star": "BD-15 6290", "grating": "G160M", "fppos": 3, "nominal": 1.142261619212725e-16, "lam_med": 1504.8772668156607}, {"file": "lck139k1q_corrtag_a.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 1, "nominal": 1.0756463946365169e-16, "lam_med": 1367.9115619490265}, {"file": "lck139k1q_corrtag_b.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 1, "nominal": 9.496617824448794e-17, "lam_med": 1224.6689462348436}, {"file": "lck139k8q_corrtag_a.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 2, "nominal": 8.789901363226178e-17, "lam_med": 1364.462191791543, "rec": [0.6, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "lck139k8q_corrtag_b.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 2, "nominal": 8.038851280505792e-17, "lam_med": 1218.5397064920155}, {"file": "lck139khq_corrtag_a.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 2, "nominal": 9.158851468129733e-17, "lam_med": 1392.3782306082112}, {"file": "lck139khq_corrtag_b.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 2, "nominal": 6.695235508897847e-17, "lam_med": 1259.5070423489733}, {"file": "lck139kpq_corrtag_a.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 3, "nominal": 1.0329848165499239e-16, "lam_med": 1390.4134565030467, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck139kpq_corrtag_b.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 3, "nominal": 9.083897298881878e-17, "lam_med": 1246.032875104267}, {"file": "lck139kxq_corrtag_a.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 4, "nominal": 1.0229741662239401e-16, "lam_med": 1387.4214598839576}, {"file": "lck139kxq_corrtag_b.fits", "star": "BD-15 6290", "grating": "G130M", "fppos": 4, "nominal": 9.137282349525645e-17, "lam_med": 1220.1218574708098}, {"file": "lcvi23otq_corrtag_a.fits", "star": "LAWD 37", "grating": "G140L", "fppos": 1, "nominal": 3.9676836353437705e-15, "lam_med": 1670.8243659809038}, {"file": "lcvi23ovq_corrtag_a.fits", "star": "LAWD 37", "grating": "G140L", "fppos": 2, "nominal": 3.1631401252730527e-15, "lam_med": 1659.5530396174659}, {"file": "lcvi23oxq_corrtag_a.fits", "star": "LAWD 37", "grating": "G140L", "fppos": 3, "nominal": 4.158146537940027e-15, "lam_med": 1670.904390492337}, {"file": "lcvi23ozq_corrtag_a.fits", "star": "LAWD 37", "grating": "G140L", "fppos": 4, "nominal": 4.0934471871850074e-15, "lam_med": 1664.9088492105877, "rec": [0.0, 0.0, 0.0, 0.5, 0.5, 1.0]}, {"file": "lc2612xiq_corrtag_a.fits", "star": "HD 33793", "grating": "G130M", "fppos": 1, "nominal": 2.407967385021885e-16, "lam_med": 1366.3936388467891, "rec": [0.3333333333333333, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lc2612xiq_corrtag_b.fits", "star": "HD 33793", "grating": "G130M", "fppos": 1, "nominal": 3.0367936661231297e-16, "lam_med": 1217.7541815992818, "rec": [0.0, 0.3333333333333333, 0.5, 0.5, 1.0, 1.0]}, {"file": "lc2612xkq_corrtag_a.fits", "star": "HD 33793", "grating": "G130M", "fppos": 2, "nominal": 2.4631406272182587e-16, "lam_med": 1365.1876834018562}, {"file": "lc2612xmq_corrtag_a.fits", "star": "HD 33793", "grating": "G130M", "fppos": 3, "nominal": 2.39902866472238e-16, "lam_med": 1361.6595198229, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "lc2612xoq_corrtag_a.fits", "star": "HD 33793", "grating": "G130M", "fppos": 4, "nominal": 2.3390424189117075e-16, "lam_med": 1360.1047219254247}, {"file": "lck137euq_corrtag_a.fits", "star": "L 372-58", "grating": "G160M", "fppos": 1, "nominal": 2.9411969252871867e-16, "lam_med": 1671.3758725765192, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck137euq_corrtag_b.fits", "star": "L 372-58", "grating": "G160M", "fppos": 1, "nominal": 1.1365814444142147e-16, "lam_med": 1477.3897223581569}, {"file": "lck137f0q_corrtag_a.fits", "star": "L 372-58", "grating": "G160M", "fppos": 4, "nominal": 2.3689153331353796e-16, "lam_med": 1697.102250880203, "rec": [0.3333333333333333, 1.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "lck137f0q_corrtag_b.fits", "star": "L 372-58", "grating": "G160M", "fppos": 4, "nominal": 9.074464896535089e-17, "lam_med": 1501.8465364560366, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck136uwq_corrtag_a.fits", "star": "BD-12 4523", "grating": "G160M", "fppos": 1, "nominal": 3.3454029209836163e-16, "lam_med": 1671.385771305989}, {"file": "lck136uwq_corrtag_b.fits", "star": "BD-12 4523", "grating": "G160M", "fppos": 1, "nominal": 1.4075354226992174e-16, "lam_med": 1477.6902263453967}, {"file": "lck136v9q_corrtag_a.fits", "star": "BD-12 4523", "grating": "G160M", "fppos": 4, "nominal": 2.7042427579830454e-16, "lam_med": 1697.0602554355746}, {"file": "lck136v9q_corrtag_b.fits", "star": "BD-12 4523", "grating": "G160M", "fppos": 4, "nominal": 1.1016771034819701e-16, "lam_med": 1501.3488256627065}, {"file": "lcvi04afq_corrtag_a.fits", "star": "Wolf 28", "grating": "G140L", "fppos": 3, "nominal": 3.9792746093384383e-16, "lam_med": 1537.1119061425893}, {"file": "lcvi04amq_corrtag_a.fits", "star": "Wolf 28", "grating": "G140L", "fppos": 4, "nominal": 6.511602152555652e-16, "lam_med": 1671.5564544881668}, {"file": "lcvi04zqq_corrtag_a.fits", "star": "Wolf 28", "grating": "G140L", "fppos": 1, "nominal": 5.292089406202353e-16, "lam_med": 1605.550359153359}, {"file": "lcvi04zwq_corrtag_a.fits", "star": "Wolf 28", "grating": "G140L", "fppos": 2, "nominal": 7.515233443735553e-16, "lam_med": 1694.2611384489392}, {"file": "ldlm20m9q_corrtag_a.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 1.4413289217042102e-16, "lam_med": 1290.7464796474112}, {"file": "ldlm20m9q_corrtag_b.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 2.4418202180027366e-16, "lam_med": 1136.2597385109848}, {"file": "ldlm20mbq_corrtag_a.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 1.1958761561510184e-16, "lam_med": 1290.636832294895}, {"file": "ldlm20mbq_corrtag_b.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 2.0555943761099212e-16, "lam_med": 1135.5730537246532}, {"file": "ldlm20miq_corrtag_a.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 1.2187213474455067e-16, "lam_med": 1290.6168598800868}, {"file": "ldlm20miq_corrtag_b.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 2.1522222012918778e-16, "lam_med": 1135.7819929463383, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "ldlm20mmq_corrtag_a.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 1.2673179032622336e-16, "lam_med": 1290.935653777185, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "ldlm20mmq_corrtag_b.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 2.1176260033425865e-16, "lam_med": 1136.1402032384624}, {"file": "ldlm20moq_corrtag_a.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 2.288445484783505e-16, "lam_med": 1290.5470244788999, "rec": [0.0, 0.4, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "ldlm20moq_corrtag_b.fits", "star": "CD-46 11540", "grating": "G130M", "fppos": 3, "nominal": 3.104684208527329e-16, "lam_med": 1142.6881649270165, "rec": [0.0, 0.8, 0.6, 0.6666666666666666, 1.0, 1.0]}, {"file": "lck135fjq_corrtag_a.fits", "star": "HD 173739", "grating": "G160M", "fppos": 1, "nominal": 3.2516783970349806e-16, "lam_med": 1671.599665878886}, {"file": "lck135fjq_corrtag_b.fits", "star": "HD 173739", "grating": "G160M", "fppos": 1, "nominal": 1.3398742432883614e-16, "lam_med": 1477.4812622982258}, {"file": "lck135flq_corrtag_a.fits", "star": "HD 173739", "grating": "G160M", "fppos": 4, "nominal": 2.5707849474152904e-16, "lam_med": 1697.3135150112143, "rec": [0.0, 1.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "lck135flq_corrtag_b.fits", "star": "HD 173739", "grating": "G160M", "fppos": 4, "nominal": 1.0360888594222531e-16, "lam_med": 1502.0847095125653}, {"file": "lb3e14kxq_corrtag_a.fits", "star": "* 61 Cyg A", "grating": "G130M", "fppos": 3, "nominal": 4.568677813604821e-16, "lam_med": 1363.6378182316278}, {"file": "lb3e14kzq_corrtag_a.fits", "star": "* 61 Cyg A", "grating": "G130M", "fppos": 4, "nominal": 4.467157539077928e-16, "lam_med": 1360.7578426122764}, {"file": "lck103d7s_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.9904642645977946e-16, "lam_med": 1362.9164048388886}, {"file": "lck103dbs_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 4, "nominal": 3.445275619096612e-16, "lam_med": 1359.7972486292572}, {"file": "lck134hxq_corrtag_a.fits", "star": "HD 217987", "grating": "G160M", "fppos": 1, "nominal": 3.83174260407621e-16, "lam_med": 1670.598168025205, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck134hxq_corrtag_b.fits", "star": "HD 217987", "grating": "G160M", "fppos": 1, "nominal": 1.9641966862326908e-16, "lam_med": 1477.248854068902, "rec": [0.0, 0.8, 1.0, 1.0, 1.0, 1.0]}, {"file": "lck134i9q_corrtag_a.fits", "star": "HD 217987", "grating": "G160M", "fppos": 4, "nominal": 3.812955183803628e-16, "lam_med": 1696.7542912974116}, {"file": "lck134i9q_corrtag_b.fits", "star": "HD 217987", "grating": "G160M", "fppos": 4, "nominal": 2.0152511070256809e-16, "lam_med": 1501.927324479855, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "lck102idq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 2.0982944925867802e-15, "lam_med": 1671.0811212007006}, {"file": "lck102idq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 8.808320145549582e-16, "lam_med": 1477.3360789864773}, {"file": "lck102ifq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 2.2988983146177127e-15, "lam_med": 1700.030964916419}, {"file": "lck102ifq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 9.569859333744235e-16, "lam_med": 1504.7130030550547}, {"file": "lck103dfs_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 2, "nominal": 3.612682726937429e-16, "lam_med": 1392.333059257224, "rec": [0.0, 0.4, 0.8333333333333334, 0.6, 1.0, 1.0]}, {"file": "lck103dns_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 1, "nominal": 3.558992950046932e-16, "lam_med": 1397.9357983861828}, {"file": "lck103e5s_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 4, "nominal": 3.494096943687019e-16, "lam_med": 1387.1689328311043, "rec": [0.0, 0.5, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "ldej01iiq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 2.7649410891694164e-16, "lam_med": 1379.6847034358675, "rec": [0.2, 0.3333333333333333, 0.5, 0.5, 1.0, 1.0]}, {"file": "ldej01ikq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 2.954868756436509e-16, "lam_med": 1404.564195105845}, {"file": "ldej02g3q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 2.4741348393582176e-15, "lam_med": 1699.9959143133447}, {"file": "ldej02g3q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.0856029798011414e-15, "lam_med": 1504.9426080270682}, {"file": "ldej02g8q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.20373436980782e-15, "lam_med": 1665.0062810752117, "rec": [0.0, 0.3333333333333333, 0.0, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "ldej02g8q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.330684089031472e-16, "lam_med": 1472.4122514131022}, {"file": "ldej02goq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 9.819730867936045e-16, "lam_med": 1712.0505009361045, "rec": [0.0, 0.4, 0.5, 0.8333333333333334, 1.0, 1.0]}, {"file": "ldej02goq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.385002175391801e-16, "lam_med": 1516.350313143649, "rec": [0.0, 0.4, 0.3333333333333333, 0.5, 1.0, 1.0]}, {"file": "ldnq01w3q_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.667125006067289e-16, "lam_med": 1371.6738550917626, "rec": [0.0, 0.3333333333333333, 0.8, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "ldnq01w5q_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.7058408165640985e-16, "lam_med": 1363.0840835885163, "rec": [0.0, 0.4, 0.6, 0.6666666666666666, 0.6666666666666666, 1.0]}, {"file": "ldnq01w7q_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 2.7406339539435925e-16, "lam_med": 1379.994568673064}, {"file": "ldnq01w9q_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 2.9276828768168165e-16, "lam_med": 1405.7839824140256, "rec": [0.0, 0.6, 0.8, 0.8333333333333334, 1.0, 1.0]}, {"file": "ldnq02ywq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 4.468794838661977e-16, "lam_med": 1290.22879906709, "rec": [0.0, 0.2, 0.25, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "ldnq02ywq_corrtag_b.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 5.93387706039537e-16, "lam_med": 1142.9573957025598}, {"file": "ldnq02z0q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.2945639274226316e-15, "lam_med": 1700.2488494276986, "rec": [0.16666666666666666, 0.2, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "ldnq02z0q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.612730034839445e-16, "lam_med": 1504.9919537557257, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 0.8, 0.8333333333333334, 1.0]}, {"file": "ldnq03fsq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.2482893605628088e-15, "lam_med": 1676.9504994958495, "rec": [0.0, 0.16666666666666666, 0.5, 0.8333333333333334, 1.0, 1.0]}, {"file": "ldnq03fsq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 6.24755157687789e-16, "lam_med": 1482.8575945871894}, {"file": "ldnq03fwq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.4800938105125841e-15, "lam_med": 1687.2502335587003}, {"file": "ldnq03fwq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 6.184533664992061e-16, "lam_med": 1492.6066509480008, "rec": [0.0, 0.3333333333333333, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "ldnq03fyq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 9.647553164955353e-16, "lam_med": 1712.4092707377918, "rec": [0.16666666666666666, 0.3333333333333333, 0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 1.0]}, {"file": "ldnq03fyq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.226473754162477e-16, "lam_med": 1516.3947648491778}, {"file": "leif01wzq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.090595224766182e-16, "lam_med": 1400.1278769204487}, {"file": "leif01wsq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.6995685855958207e-16, "lam_med": 1371.606683293371}, {"file": "leif01wxq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.6851001626349795e-16, "lam_med": 1362.8352144824971}, {"file": "leif02k9q_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 2.8605864758011756e-16, "lam_med": 1379.7239926927368}, {"file": "leif02k3q_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 4.446196590319493e-16, "lam_med": 1390.7783305713976}, {"file": "le4pz2gkq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 4, "nominal": 4.696764003280799e-16, "lam_med": 1357.641743708094}, {"file": "le4pz2ggq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 2, "nominal": 5.659769795229095e-16, "lam_med": 1364.3399681750097, "rec": [0.0, 0.0, 0.6, 1.0, 0.8, 1.0]}, {"file": "le4pz2giq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 5.36122617096761e-16, "lam_med": 1362.8148911123426}, {"file": "le4pz2geq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 1, "nominal": 5.408349875681088e-16, "lam_med": 1367.1308829137556}, {"file": "let801amq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.2345883320686946e-15, "lam_med": 1677.0506119434833}, {"file": "let801amq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 6.362005215429332e-16, "lam_med": 1482.837855718722}, {"file": "let802gwq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 9.511013997316636e-16, "lam_med": 1712.2447619610894}, {"file": "let802gwq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.461210910900165e-16, "lam_med": 1516.3013854922629, "rec": [0.0, 0.4, 1.0, 0.6666666666666666, 0.6666666666666666, 1.0]}, {"file": "lfqy02l2q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 1.4860049494538345e-15, "lam_med": 1622.8294409155671}, {"file": "lfqy02l2q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 6.417387468711641e-16, "lam_med": 1437.6764505897406}, {"file": "lfqy01kwq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.296618839949923e-15, "lam_med": 1620.504345535857}, {"file": "lfqy01kwq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.354200098843552e-16, "lam_med": 1432.3944808498798, "rec": [0.0, 0.16666666666666666, 0.8, 0.5, 1.0, 0.8333333333333334]}, {"file": "lfqy04u0q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 2.2018777939121172e-15, "lam_med": 1682.176561976935, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "lfqy04u0q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 1.1714709106673334e-15, "lam_med": 1487.3664657201707}, {"file": "lfqy07awq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 2.1900533276999774e-15, "lam_med": 1690.224653731306}, {"file": "lfqy07awq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 1.0025823464419046e-15, "lam_med": 1498.9891715392143}, {"file": "ldej01hmq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 5.952095313747704e-16, "lam_med": 1371.4182862981827}, {"file": "ldej01hrq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 6.801684502587244e-16, "lam_med": 1390.6542892684104}, {"file": "ldej01ifq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.5706775739053057e-16, "lam_med": 1362.922609262723, "rec": [0.0, 0.0, 0.5, 0.3333333333333333, 0.8, 1.0]}, {"file": "ldej02g0q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.8842851312221126e-15, "lam_med": 1677.0101292626246, "rec": [0.16666666666666666, 0.6, 0.5, 1.0, 1.0, 1.0]}, {"file": "ldej02g0q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 9.548556004925292e-16, "lam_med": 1483.039329247312, "rec": [0.16666666666666666, 0.5, 0.8333333333333334, 1.0, 1.0, 0.8333333333333334]}, {"file": "ldej02ggq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.4649730109922473e-15, "lam_med": 1687.224803591351, "rec": [0.0, 0.0, 0.5, 0.16666666666666666, 1.0, 1.0]}, {"file": "ldej02ggq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 6.255581034247862e-16, "lam_med": 1492.4890661613877}, {"file": "ldnq02ysq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 4.111346406078807e-16, "lam_med": 1390.8423281295395}, {"file": "ldnq02yyq_corrtag_a.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 3.4238073412729277e-16, "lam_med": 1289.9632699750484}, {"file": "ldnq02yyq_corrtag_b.fits", "star": "* eps Eri", "grating": "G130M", "fppos": 3, "nominal": 4.933957747119003e-16, "lam_med": 1143.0969348540295}, {"file": "ldnq03fuq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.1756575512970194e-15, "lam_med": 1665.1256196361992}, {"file": "ldnq03fuq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.136423702089748e-16, "lam_med": 1472.3397441524753, "rec": [0.0, 0.3333333333333333, 0.3333333333333333, 1.0, 0.8333333333333334, 1.0]}, {"file": "let801bgq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.1931097252093895e-15, "lam_med": 1620.0742282006106}, {"file": "let801bgq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 4.874435790872136e-16, "lam_med": 1431.9372893463521}, {"file": "let801c1q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.1468971488673447e-15, "lam_med": 1665.0005650683095, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 1.0, 0.8333333333333334, 1.0]}, {"file": "let801c1q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.31143853835065e-16, "lam_med": 1472.0343065419545}, {"file": "let802gfq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.4152678202701488e-15, "lam_med": 1687.214517308041}, {"file": "let802gfq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 6.195565628544991e-16, "lam_med": 1492.666730135736, "rec": [0.0, 0.3333333333333333, 0.5, 0.6666666666666666, 1.0, 1.0]}, {"file": "let802g9q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.5753320344755039e-15, "lam_med": 1700.1135618814671}, {"file": "let802g9q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 7.432928456147596e-16, "lam_med": 1504.9809714801804}, {"file": "lfqy02l4q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 3.797367084677239e-15, "lam_med": 1670.8617594057914}, {"file": "lfqy02l4q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 1.816201587543855e-15, "lam_med": 1477.1953097297817}, {"file": "lfqy03laq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.1602551115235757e-15, "lam_med": 1665.4503428488829, "rec": [0.0, 0.0, 0.6, 1.0, 0.8333333333333334, 1.0]}, {"file": "lfqy03laq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.659566971111188e-16, "lam_med": 1472.5080393883604}, {"file": "lfqy04tyq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 1.5455191103317885e-15, "lam_med": 1671.3850025643242}, {"file": "lfqy04tyq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 7.497740900741109e-16, "lam_med": 1477.3148653205906, "rec": [0.0, 0.25, 0.5, 1.0, 0.8333333333333334, 1.0]}, {"file": "lfqy05dxq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 2.6532187478039765e-15, "lam_med": 1690.127420827992}, {"file": "lfqy05dxq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 1.2081537324319042e-15, "lam_med": 1498.743561289425, "rec": [0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "lfqy05dvq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.4369081402839533e-15, "lam_med": 1677.1023457263018, "rec": [0.0, 0.3333333333333333, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "lfqy05dvq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 7.735820281695041e-16, "lam_med": 1482.8695697298888}, {"file": "lfqy08enq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.4505191163541903e-15, "lam_med": 1712.8015608575877}, {"file": "lfqy08enq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 8.48030692166694e-16, "lam_med": 1516.6623311752396, "rec": [0.4, 0.4, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "lfqy09faq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 9.35764777762921e-16, "lam_med": 1712.9851626122093, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0]}, {"file": "lfqy09faq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 5.663097278287083e-16, "lam_med": 1516.8582063124663, "rec": [0.0, 0.0, 0.6666666666666666, 0.8, 1.0, 1.0]}, {"file": "lfqy10fjq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 9.644109081659249e-16, "lam_med": 1716.3290438409103}, {"file": "lfqy10fjq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 5.923758888706513e-16, "lam_med": 1522.8849484037642}, {"file": "lfqy06z4q_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.4505005683936797e-15, "lam_med": 1687.2745408991905}, {"file": "lfqy06z4q_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 6.586342402860574e-16, "lam_med": 1493.321299471705}, {"file": "lfqy07ayq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 2.1528752275259477e-15, "lam_med": 1703.1848160815339}, {"file": "lfqy07ayq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 1, "nominal": 1.056524526879897e-15, "lam_med": 1511.0721961932945}, {"file": "lfqy08eiq_corrtag_a.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 2.304870159411104e-15, "lam_med": 1700.317588823162, "rec": [0.0, 0.5, 0.8, 1.0, 1.0, 1.0]}, {"file": "lfqy08eiq_corrtag_b.fits", "star": "* eps Eri", "grating": "G160M", "fppos": 3, "nominal": 1.10638165318763e-15, "lam_med": 1505.082366774203}, {"file": "ldlm23f7q_corrtag_a.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 4, "nominal": 1.058504002173307e-16, "lam_med": 1288.6321048557106}, {"file": "ldlm23f7q_corrtag_b.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 4, "nominal": 1.8032334659093743e-16, "lam_med": 1133.2526056535378, "rec": [0.4, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "ldlm23f5q_corrtag_a.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 3, "nominal": 1.2068035651808048e-16, "lam_med": 1290.7144810164777}, {"file": "ldlm23f5q_corrtag_b.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 3, "nominal": 2.0339504372649043e-16, "lam_med": 1135.6807052766762}, {"file": "ldlm23fbq_corrtag_a.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 4, "nominal": 1.0784538226086473e-16, "lam_med": 1288.5723916594343}, {"file": "ldlm23fbq_corrtag_b.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 4, "nominal": 1.9045351038572343e-16, "lam_med": 1133.2128603561928, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "ldlm23f9q_corrtag_a.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 4, "nominal": 1.2998964807846261e-16, "lam_med": 1288.5325026283754}, {"file": "ldlm23f9q_corrtag_b.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 4, "nominal": 2.3445477917746955e-16, "lam_med": 1134.2079666071745}, {"file": "ldlm23f0q_corrtag_a.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 3, "nominal": 1.1802896306776312e-16, "lam_med": 1290.7343754608955, "rec": [0.6, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "ldlm23f0q_corrtag_b.fits", "star": "NAME Barnard's star", "grating": "G130M", "fppos": 3, "nominal": 1.9328817891459525e-16, "lam_med": 1134.4964647829909, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}]} \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_limits_fuse.json b/papers/uv_lasers/data/uv_limits_fuse.json new file mode 100644 index 0000000000000000000000000000000000000000..4dbcd0b1909deed1e5a32dbfd6d90fc5069529ed --- /dev/null +++ b/papers/uv_lasers/data/uv_limits_fuse.json @@ -0,0 +1 @@ +{"set": "fuse", "mult": [1.0, 1.5, 2.0, 3.0, 5.0, 8.0], "recovery": [0.0024154589371980675, 0.014975845410628017, 0.178743961352657, 0.5106280193236714, 0.7975845410628022, 0.8444444444444448], "n_injected": 69, "plateau": 0.8444444444444448, "m50": 2.7336244541484724, "m90": 4.738047138047139, "exposures": [{"file": "a022010400000all4ttagfcal.fit.gz", "nominal": 6.504542278963979e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.6, 1.0, 1.0, 1.0]}, {"file": "a041010100000all4ttagfcal.fit.gz", "nominal": 2.7849602142291825e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 1.0, 1.0, 0.8333333333333334]}, {"file": "a041020200000all4ttagfcal.fit.gz", "nominal": 2.2794698698684377e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.5, 0.6666666666666666, 0.6666666666666666]}, {"file": "a041030300000all4ttagfcal.fit.gz", "nominal": 1.3244244068646166e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.0, 0.6666666666666666, 0.5]}, {"file": "a041040500000all4ttagfcal.fit.gz", "nominal": 1.8856317303286153e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.5, 1.0, 0.6666666666666666]}, {"file": "a041050500000all4ttagfcal.fit.gz", "nominal": 2.353516918280936e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 0.3333333333333333, 0.8333333333333334, 0.8]}, {"file": "a041070700000all4ttagfcal.fit.gz", "nominal": 8.936889386671216e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.0, 1.0, 0.5]}, {"file": "a041070800000all4ttagfcal.fit.gz", "nominal": 8.554559843050381e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.2, 0.6666666666666666, 0.8333333333333334]}, {"file": "a083010100000all4ttagfcal.fit.gz", "nominal": 1.1749339009163312e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.6, 0.8333333333333334, 1.0, 1.0]}, {"file": "a083030100000all4ttagfcal.fit.gz", "nominal": 1.2207558695199664e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.5, 1.0, 1.0]}, {"file": "a083040100000all4ttagfcal.fit.gz", "nominal": 9.0755647337937e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.6, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334]}, {"file": "b072040100000all4ttagfcal.fit.gz", "nominal": 1.3885961385449394e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 0.8]}, {"file": "b078010100000all4ttagfcal.fit.gz", "nominal": 2.220576937671891e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.4, 0.8333333333333334, 0.3333333333333333]}, {"file": "b119020100000all4ttagfcal.fit.gz", "nominal": 1.695575064283005e-14, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 0.6666666666666666, 0.6666666666666666, 1.0]}, {"file": "b119050100000all4ttagfcal.fit.gz", "nominal": 2.6499958172664526e-14, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 1.0, 0.8, 1.0]}, {"file": "b130010100000all4ttagfcal.fit.gz", "nominal": 1.2272379992375878e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334]}, {"file": "b130020100000all4ttagfcal.fit.gz", "nominal": 1.338078470084809e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "c102020100000all4ttagfcal.fit.gz", "nominal": 1.9332569536675993e-15, "lam_med": 1040.0, "rec": [0.0, 0.2, 0.3333333333333333, 0.8333333333333334, 1.0, 1.0]}, {"file": "c102060100000all4ttagfcal.fit.gz", "nominal": 7.827777443776277e-16, "lam_med": 1040.0, "rec": [0.16666666666666666, 0.0, 0.0, 1.0, 1.0, 0.6666666666666666]}, {"file": "c114020100000all4ttagfcal.fit.gz", "nominal": 8.682801961688064e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "c132010100000all4ttagfcal.fit.gz", "nominal": 7.743726217492459e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.3333333333333333, 0.6666666666666666, 0.6666666666666666]}, {"file": "c132010200000all4ttagfcal.fit.gz", "nominal": 6.71000773019537e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.0, 0.6666666666666666, 0.16666666666666666]}, {"file": "d032010100000all4ttagfcal.fit.gz", "nominal": 7.884440536768998e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.3333333333333333, 1.0, 1.0]}, {"file": "d099010100000all4ttagfcal.fit.gz", "nominal": 2.7831191013082397e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 1.0, 1.0, 1.0]}, {"file": "d101010100000all4ttagfcal.fit.gz", "nominal": 1.9524984074339147e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.8, 0.8333333333333334, 1.0]}, {"file": "d101010200000all4ttagfcal.fit.gz", "nominal": 1.4034594443181964e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.16666666666666666, 0.4, 0.6]}, {"file": "d101020100000all4ttagfcal.fit.gz", "nominal": 1.2398040014658562e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.16666666666666666, 0.5, 0.6666666666666666]}, {"file": "d101020200000all4ttagfcal.fit.gz", "nominal": 1.3439345267872698e-15, "lam_med": 1040.0, "rec": [0.0, 0.16666666666666666, 0.16666666666666666, 0.3333333333333333, 0.5, 1.0]}, {"file": "d122010100000all4ttagfcal.fit.gz", "nominal": 7.630102083566938e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.5, 0.8333333333333334, 1.0, 0.8333333333333334]}, {"file": "d126010100000all4ttagfcal.fit.gz", "nominal": 7.314064941391118e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.5, 0.6666666666666666, 1.0, 1.0]}, {"file": "d907030100000all4ttagfcal.fit.gz", "nominal": 4.990111257043521e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.2, 0.2, 1.0, 1.0]}, {"file": "d910020100000all4ttagfcal.fit.gz", "nominal": 6.918243242855e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.5, 1.0, 1.0, 1.0]}, {"file": "e161020100000all4ttagfcal.fit.gz", "nominal": 1.244516939462763e-15, "lam_med": 1040.0, "rec": [0.0, 0.16666666666666666, 0.16666666666666666, 0.5, 0.8333333333333334, 0.8333333333333334]}, {"file": "e161040100000all4ttagfcal.fit.gz", "nominal": 1.5920767447880676e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 1.0]}, {"file": "g015020100000all4ttagfcal.fit.gz", "nominal": 4.648602605608773e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.0, 0.5, 1.0]}, {"file": "g015020200000all4ttagfcal.fit.gz", "nominal": 9.4397069301335e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.5, 1.0, 1.0]}, {"file": "g015030100000all4ttagfcal.fit.gz", "nominal": 3.1783768553295225e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.5, 0.6666666666666666, 1.0]}, {"file": "g015030200000all4ttagfcal.fit.gz", "nominal": 1.237163669221282e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.5, 0.4, 0.8, 1.0]}, {"file": "g060010100000all4ttagfcal.fit.gz", "nominal": 9.967346739675823e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 0.3333333333333333, 0.8333333333333334, 0.8]}, {"file": "g081040100000all4ttagfcal.fit.gz", "nominal": 4.295275370612907e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.3333333333333333, 1.0, 1.0]}, {"file": "g921080100000all4ttagfcal.fit.gz", "nominal": 2.3740678790232363e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.5, 0.8333333333333334, 0.8333333333333334]}, {"file": "h907050200000all4ttagfcal.fit.gz", "nominal": 2.427972813691928e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h907050300000all4ttagfcal.fit.gz", "nominal": 1.1419746377172044e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h907050500000all4ttagfcal.fit.gz", "nominal": 4.023630434362661e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.5, 1.0, 1.0]}, {"file": "h907050600000all4ttagfcal.fit.gz", "nominal": 1.1497566270859468e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.4, 0.0, 0.5]}, {"file": "h907050700000all4ttagfcal.fit.gz", "nominal": 5.0170056841085476e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 0.5, 0.8333333333333334, 1.0]}, {"file": "p104130100000all4ttagfcal.fit.gz", "nominal": 4.806433229977898e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.3333333333333333, 0.2, 0.8333333333333334]}, {"file": "p104130200000all4ttagfcal.fit.gz", "nominal": 5.107978002562846e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.16666666666666666, 0.5, 0.8333333333333334]}, {"file": "p118060100000all4ttagfcal.fit.gz", "nominal": 1.1943301076154133e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.8, 1.0, 0.8333333333333334]}, {"file": "p118070100000all4histfcal.fit.gz", "nominal": 5.276500109678973e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.4, 0.6666666666666666, 1.0, 1.0]}, {"file": "p118080100000all4ttagfcal.fit.gz", "nominal": 8.724370359309436e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.16666666666666666, 1.0, 0.6666666666666666]}, {"file": "p186070100000all4ttagfcal.fit.gz", "nominal": 1.5523748132991026e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "p218040100000all4ttagfcal.fit.gz", "nominal": 9.696378204321744e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.4, 1.0, 1.0, 1.0]}, {"file": "p219020100000all4ttagfcal.fit.gz", "nominal": 9.182567039312136e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.16666666666666666, 0.3333333333333333, 0.6666666666666666]}, {"file": "p219020200000all4ttagfcal.fit.gz", "nominal": 8.249034361706121e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.3333333333333333, 0.3333333333333333, 0.5]}, {"file": "p247010100000all4ttagfcal.fit.gz", "nominal": 1.7249616088912172e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.8, 1.0, 1.0]}, {"file": "p247010200000all4ttagfcal.fit.gz", "nominal": 1.0266943493215417e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.0, 0.5, 0.6666666666666666]}, {"file": "q119010200000all4ttagfcal.fit.gz", "nominal": 5.68833575505813e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.3333333333333333, 0.3333333333333333, 0.5]}, {"file": "q119010300000all4ttagfcal.fit.gz", "nominal": 8.585352242932055e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.16666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "q210010100000all4ttagfcal.fit.gz", "nominal": 3.246532735536004e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 1.0]}, {"file": "q301010100000all4ttagfcal.fit.gz", "nominal": 1.3917370175108162e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.0, 1.0, 0.6]}, {"file": "q301040100000all4ttagfcal.fit.gz", "nominal": 1.15224376403365e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.5, 0.6666666666666666, 0.8333333333333334]}, {"file": "q301050100000all4ttagfcal.fit.gz", "nominal": 6.182084864125893e-15, "lam_med": 1040.0, "rec": [0.0, 0.5, 0.5, 1.0, 0.8333333333333334, 1.0]}, {"file": "u104270100000all4ttagfcal.fit.gz", "nominal": 2.944396612227764e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 0.8333333333333334]}, {"file": "u104270300000all4ttagfcal.fit.gz", "nominal": 2.430545987782898e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.8, 0.8333333333333334, 1.0]}, {"file": "u106280100000all4ttagfcal.fit.gz", "nominal": 5.604639360682941e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.6, 1.0, 1.0]}, {"file": "x025020100000all4ttagfcal.fit.gz", "nominal": 8.98704917962228e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.16666666666666666, 0.16666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "x025020200000all4ttagfcal.fit.gz", "nominal": 8.050888756679361e-16, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.0, 0.16666666666666666, 1.0, 1.0]}, {"file": "x025020300000all4ttagfcal.fit.gz", "nominal": 1.0559906779957564e-15, "lam_med": 1040.0, "rec": [0.0, 0.0, 0.2, 0.5, 0.5, 1.0]}]} \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_limits_iue.json b/papers/uv_lasers/data/uv_limits_iue.json new file mode 100644 index 0000000000000000000000000000000000000000..70e7e192d4d4dbf629b53113b7573790276e150b --- /dev/null +++ b/papers/uv_lasers/data/uv_limits_iue.json @@ -0,0 +1 @@ +{"set": "iue", "mult": [1.0, 1.5, 2.0, 3.0, 5.0, 8.0], "recovery": [0.03435567782762895, 0.45309415315576107, 0.6617503624936053, 0.8188472143331913, 0.9102965874685331, 0.9149560091463205], "n_injected": 138, "plateau": 0.9149560091463205, "m50": 1.5105049627598215, "m90": 3.1008906620206083, "exposures": [{"file": "lwp01658.mxhi.gz", "nominal": 2.2699283854475112e-10, "lam_med": 2909.821080295882}, {"file": "lwp02199.mxhi.gz", "nominal": 3.5066145624211813e-13, "lam_med": 2899.9011156434917}, {"file": "lwp02224.mxhi.gz", "nominal": 3.0901781158366194e-12, "lam_med": 2782.0153233456167, "rec": [0.0, 0.3, 0.3888888888888889, 0.75, 0.85, 0.9], "tries": [20.0, 20.0, 18.0, 20.0, 20.0, 20.0]}, {"file": "lwp02225.mxhi.gz", "nominal": 4.168132468955335e-12, "lam_med": 2959.198610472124, "rec": [0.0, 0.07692307692307693, 0.7692307692307693, 1.0, 1.0, 1.0], "tries": [12.0, 13.0, 13.0, 13.0, 12.0, 11.0]}, {"file": "lwp02233.mxhi.gz", "nominal": 3.3091928297309775e-12, "lam_med": 2824.931324171617}, {"file": "lwp02234.mxhi.gz", "nominal": 4.271915180037759e-12, "lam_med": 2873.1961076630055}, {"file": "lwp02235.mxhi.gz", "nominal": 1.7252407569349519e-12, "lam_med": 2738.879834568923, "rec": [0.0, 0.15384615384615385, 0.23076923076923078, 0.5833333333333334, 0.7692307692307693, 0.7692307692307693], "tries": [13.0, 13.0, 13.0, 12.0, 13.0, 13.0]}, {"file": "lwp02236.mxhi.gz", "nominal": 2.709696828510152e-12, "lam_med": 2806.941150809941}, {"file": "lwp02333.mxhi.gz", "nominal": 4.222809482471328e-12, "lam_med": 2951.424460114878}, {"file": "lwp02334.mxhi.gz", "nominal": 5.031477254721249e-12, "lam_med": 2973.8241099020106, "rec": [0.0, 0.7272727272727273, 0.5454545454545454, 1.0, 1.0, 1.0], "tries": [11.0, 11.0, 11.0, 11.0, 11.0, 10.0]}, {"file": "lwp02335.mxhi.gz", "nominal": 6.0453924022534336e-12, "lam_med": 2995.277779327266}, {"file": "lwp02336.mxhi.gz", "nominal": 5.5571062807255946e-12, "lam_med": 2973.4663675771235}, {"file": "lwp02337.mxhi.gz", "nominal": 5.117005973045641e-12, "lam_med": 2951.5167438572826, "rec": [0.0, 0.3333333333333333, 0.9090909090909091, 0.9166666666666666, 1.0, 1.0], "tries": [12.0, 12.0, 11.0, 12.0, 12.0, 12.0]}, {"file": "lwp02338.mxhi.gz", "nominal": 4.8203361573543855e-12, "lam_med": 2973.538438870366}, {"file": "lwp02616.mxhi.gz", "nominal": 3.516767562080595e-12, "lam_med": 2959.7235272839075}, {"file": "lwp02618.mxhi.gz", "nominal": 4.940241313714794e-12, "lam_med": 2973.4338283202364}, {"file": "lwp02619.mxhi.gz", "nominal": 2.6724908554833118e-12, "lam_med": 2872.9713214232606}, {"file": "lwp02626.mxhi.gz", "nominal": 4.74670701756183e-12, "lam_med": 2981.4944953207387}, {"file": "lwp02628.mxhi.gz", "nominal": 2.537198945451628e-12, "lam_med": 2873.083198164814}, {"file": "lwp02636.mxhi.gz", "nominal": 4.872731517794299e-12, "lam_med": 2973.392376802803}, {"file": "lwp02637.mxhi.gz", "nominal": 2.6067868703764342e-12, "lam_med": 2899.2228329944014}, {"file": "lwp02640.mxhi.gz", "nominal": 4.023613727255235e-12, "lam_med": 2951.316050220143}, {"file": "lwp02641.mxhi.gz", "nominal": 2.486126453779268e-12, "lam_med": 2873.0948451246254}, {"file": "lwp02648.mxhi.gz", "nominal": 4.7128973542279765e-12, "lam_med": 2973.315907963349}, {"file": "lwp02650.mxhi.gz", "nominal": 2.5762561580681343e-12, "lam_med": 2899.603447207546}, {"file": "lwp02655.mxhi.gz", "nominal": 4.592752991066435e-12, "lam_med": 2951.5008253150036}, {"file": "lwp02668.mxhi.gz", "nominal": 2.51658968472489e-12, "lam_med": 2873.1208341595266, "rec": [0.058823529411764705, 0.625, 0.6470588235294118, 1.0, 1.0, 1.0], "tries": [17.0, 16.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwp02678.mxhi.gz", "nominal": 4.874026592244925e-12, "lam_med": 2973.255794986705}, {"file": "lwp02680.mxhi.gz", "nominal": 2.401938253312218e-12, "lam_med": 2872.993076573725}, {"file": "lwp02748.mxhi.gz", "nominal": 3.367482222075882e-12, "lam_med": 2814.3642505470357}, {"file": "lwp02749.mxhi.gz", "nominal": 3.0899905758580333e-12, "lam_med": 2781.2654870655165}, {"file": "lwp02750.mxhi.gz", "nominal": 2.2845431034117214e-12, "lam_med": 2727.690937310304}, {"file": "lwp02760.mxhi.gz", "nominal": 3.4576219312518713e-12, "lam_med": 2834.3184958831107, "rec": [0.05263157894736842, 0.42105263157894735, 0.5789473684210527, 0.8421052631578947, 0.8947368421052632, 0.9444444444444444], "tries": [19.0, 19.0, 19.0, 19.0, 19.0, 18.0]}, {"file": "lwp02761.mxhi.gz", "nominal": 2.610520880916158e-12, "lam_med": 2769.8584114703035, "rec": [0.05263157894736842, 0.1, 0.4, 0.7368421052631579, 0.95, 0.65], "tries": [19.0, 20.0, 20.0, 19.0, 20.0, 20.0]}, {"file": "lwp02762.mxhi.gz", "nominal": 1.8155121975581025e-12, "lam_med": 2735.3766343292027}, {"file": "lwp02763.mxhi.gz", "nominal": 3.245724877518251e-12, "lam_med": 2816.4345226370847}, {"file": "lwp02765.mxhi.gz", "nominal": 2.0949703957658023e-10, "lam_med": 2948.6040871037594}, {"file": "lwp02799.mxhi.gz", "nominal": 2.717369357006641e-12, "lam_med": 2792.936158177435}, {"file": "lwp02809.mxhi.gz", "nominal": 1.1375776899805224e-12, "lam_med": 2779.9393094234692}, {"file": "lwp03008.mxhi.gz", "nominal": 4.952801508265225e-10, "lam_med": 2697.8985784512265, "rec": [0.0, 0.6666666666666666, 0.96, 1.0, 1.0, 1.0], "tries": [25.0, 24.0, 25.0, 25.0, 25.0, 24.0]}, {"file": "lwp03021.mxhi.gz", "nominal": 2.2395448185029223e-12, "lam_med": 2846.3198100642753}, {"file": "lwp03022.mxhi.gz", "nominal": 1.0492880894988492e-10, "lam_med": 2532.8358037528988}, {"file": "lwp03038.mxhi.gz", "nominal": 7.100049096802382e-13, "lam_med": 2821.4995256165676, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0], "tries": [3.0, 2.0, 3.0, 3.0, 3.0, 3.0]}, {"file": "lwp03039.mxhi.gz", "nominal": 3.6571639288050273e-11, "lam_med": 2644.2052677714923}, {"file": "lwp03040.mxhi.gz", "nominal": 4.0239768465298596e-12, "lam_med": 2899.9860716692174}, {"file": "lwp03041.mxhi.gz", "nominal": 3.0778142570003898e-12, "lam_med": 2938.79366196197}, {"file": "lwp03054.mxhi.gz", "nominal": 2.774060884262743e-12, "lam_med": 2846.8166686541376, "rec": [0.06666666666666667, 0.25, 0.47058823529411764, 0.7647058823529411, 1.0, 0.9411764705882353], "tries": [15.0, 16.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwp03057.mxhi.gz", "nominal": 9.771287238625277e-13, "lam_med": 3032.433045670012}, {"file": "lwp03119.mxhi.gz", "nominal": 1.6626999798904335e-12, "lam_med": 2783.149084279417}, {"file": "lwp03120.mxhi.gz", "nominal": 1.7173225869687292e-12, "lam_med": 2705.184565727503}, {"file": "lwp03385.mxhi.gz", "nominal": 1.4974702031206157e-10, "lam_med": 2441.1820000810694}, {"file": "lwp04067.mxhi.gz", "nominal": 5.399999520388872e-13, "lam_med": 2938.9009692469717}, {"file": "lwp04731.mxhi.gz", "nominal": 5.407772775920021e-12, "lam_med": 2862.770291381481}, {"file": "lwp04732.mxhi.gz", "nominal": 4.0821913214931334e-12, "lam_med": 2809.509175353347}, {"file": "lwp04756.mxhi.gz", "nominal": 1.7749209312219835e-12, "lam_med": 2900.018094867412}, {"file": "lwp04836.mxhi.gz", "nominal": 4.975006361268849e-10, "lam_med": 2757.3514294415018}, {"file": "lwp04837.mxhi.gz", "nominal": 1.1075936533968406e-09, "lam_med": 2793.1763456066356}, {"file": "lwp04912.mxhi.gz", "nominal": 2.9157546373610573e-12, "lam_med": 2789.6384537376825}, {"file": "lwp04913.mxhi.gz", "nominal": 5.712075674519548e-13, "lam_med": 2987.3561504854697}, {"file": "lwp04914.mxhi.gz", "nominal": 2.6638675518692616e-12, "lam_med": 2776.5893026572016}, {"file": "lwp04915.mxhi.gz", "nominal": 7.369915126705066e-12, "lam_med": 2775.4723713075564}, {"file": "lwp04916.mxhi.gz", "nominal": 5.483316341214076e-13, "lam_med": 2964.970416224454}, {"file": "lwp05451.mxhi.gz", "nominal": 2.250069497361627e-10, "lam_med": 2919.201555050711}, {"file": "lwp05848.mxhi.gz", "nominal": 1.0288754985037143e-10, "lam_med": 2241.162695532457}, {"file": "lwp06404.mxhi.gz", "nominal": 4.8774351954421536e-12, "lam_med": 2645.9808298908174}, {"file": "lwp06737.mxhi.gz", "nominal": 3.5179531702287636e-13, "lam_med": 2820.845433410453, "rec": [0.0, 1.0, 0.0, 0.0, 1.0, 1.0], "tries": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "lwp06743.mxhi.gz", "nominal": 2.200073368588025e-10, "lam_med": 2931.511976536044}, {"file": "lwp06786.mxhi.gz", "nominal": 1.918612368503511e-12, "lam_med": 2873.1046620727, "rec": [0.0, 0.29411764705882354, 0.5882352941176471, 0.8823529411764706, 0.9411764705882353, 0.9375], "tries": [17.0, 17.0, 17.0, 17.0, 17.0, 16.0]}, {"file": "lwp06787.mxhi.gz", "nominal": 1.7327872500177494e-12, "lam_med": 2857.326856784576}, {"file": "lwp06813.mxhi.gz", "nominal": 1.7275080127712573e-12, "lam_med": 2856.2808997265174, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 0.7058823529411765, 0.9444444444444444, 1.0], "tries": [18.0, 18.0, 18.0, 17.0, 18.0, 18.0]}, {"file": "lwp06814.mxhi.gz", "nominal": 1.689767911346357e-12, "lam_med": 2857.0764979253804}, {"file": "lwp06820.mxhi.gz", "nominal": 1.7724603311677255e-12, "lam_med": 2875.411857157667}, {"file": "lwp06821.mxhi.gz", "nominal": 1.7680894607300793e-12, "lam_med": 2875.412827945247}, {"file": "lwp06827.mxhi.gz", "nominal": 1.962284110502379e-12, "lam_med": 2856.7824421733117}, {"file": "lwp06828.mxhi.gz", "nominal": 2.358814252411314e-12, "lam_med": 2868.3400613373806, "rec": [0.0, 0.3333333333333333, 0.75, 0.9375, 1.0, 1.0], "tries": [15.0, 15.0, 16.0, 16.0, 16.0, 16.0]}, {"file": "lwp06833.mxhi.gz", "nominal": 1.6589458188216038e-12, "lam_med": 2836.980863278928}, {"file": "lwp06834.mxhi.gz", "nominal": 1.0779193639433917e-12, "lam_med": 2764.5326353400096, "rec": [0.05, 0.3, 0.45, 0.5, 0.75, 0.7368421052631579], "tries": [20.0, 20.0, 20.0, 20.0, 20.0, 19.0]}, {"file": "lwp06895.mxhi.gz", "nominal": 3.1724244112083115e-12, "lam_med": 3004.398633545236}, {"file": "lwp07124.mxhi.gz", "nominal": 2.2304898571639586e-13, "lam_med": 2815.360600975226}, {"file": "lwp07349.mxhi.gz", "nominal": 1.816085679389343e-12, "lam_med": 2874.9796007437826}, {"file": "lwp07355.mxhi.gz", "nominal": 4.617968592748711e-12, "lam_med": 2973.367642242422}, {"file": "lwp07357.mxhi.gz", "nominal": 2.7201891076690235e-12, "lam_med": 2909.2332924178313}, {"file": "lwp07364.mxhi.gz", "nominal": 4.3904303769152375e-12, "lam_med": 2973.4470410047497, "rec": [0.0, 0.36363636363636365, 0.8181818181818182, 1.0, 1.0, 1.0], "tries": [10.0, 11.0, 11.0, 11.0, 11.0, 11.0]}, {"file": "lwp07365.mxhi.gz", "nominal": 4.5833265006843195e-12, "lam_med": 3004.7326470408784}, {"file": "lwp07368.mxhi.gz", "nominal": 2.462133743877019e-12, "lam_med": 2887.801996467692}, {"file": "lwp07369.mxhi.gz", "nominal": 3.5934026697813263e-12, "lam_med": 2959.213641788755}, {"file": "lwp07490.mxhi.gz", "nominal": 8.16227641289256e-10, "lam_med": 2708.552026037269}, {"file": "lwp07732.mxhi.gz", "nominal": 2.1546868990934983e-10, "lam_med": 2923.8813773250486}, {"file": "lwp08271.mxhi.gz", "nominal": 3.265409800582111e-13, "lam_med": 2805.084216384679}, {"file": "lwp08323.mxhi.gz", "nominal": 1.633496697877525e-10, "lam_med": 2705.308833938932, "rec": [0.0, 0.68, 0.84, 1.0, 0.92, 0.9583333333333334], "tries": [25.0, 25.0, 25.0, 25.0, 25.0, 24.0]}, {"file": "lwp08420.mxhi.gz", "nominal": 1.12377601104579e-12, "lam_med": 2793.0984237452317}, {"file": "lwp08421.mxhi.gz", "nominal": 2.2682099949752563e-10, "lam_med": 2909.5310318008314}, {"file": "lwp08432.mxhi.gz", "nominal": 2.9977119704170673e-12, "lam_med": 2908.852101192446}, {"file": "lwp08439.mxhi.gz", "nominal": 2.55653399089289e-12, "lam_med": 2895.1681197050893}, {"file": "lwp08440.mxhi.gz", "nominal": 2.4389008691710433e-10, "lam_med": 2930.1410219581558}, {"file": "lwp08450.mxhi.gz", "nominal": 2.2191179130445865e-12, "lam_med": 2872.656208720778, "rec": [0.058823529411764705, 0.17647058823529413, 0.5294117647058824, 0.7058823529411765, 0.9411764705882353, 1.0], "tries": [17.0, 17.0, 17.0, 17.0, 17.0, 16.0]}, {"file": "lwp08451.mxhi.gz", "nominal": 2.2283853646036573e-10, "lam_med": 2933.923286674846}, {"file": "lwp08467.mxhi.gz", "nominal": 2.286386354032698e-12, "lam_med": 2872.7042365929096}, {"file": "lwp08471.mxhi.gz", "nominal": 2.32394976582358e-12, "lam_med": 2874.956692760682}, {"file": "lwp08707.mxhi.gz", "nominal": 1.128701288184865e-12, "lam_med": 2822.5869473676194}, {"file": "lwp08709.mxhi.gz", "nominal": 1.0855164342466465e-12, "lam_med": 2784.6526637449406}, {"file": "lwp08710.mxhi.gz", "nominal": 1.6434873767422144e-12, "lam_med": 2875.780107492234}, {"file": "lwp08742.mxhi.gz", "nominal": 1.9189771546868328e-12, "lam_med": 2920.9383748298433, "rec": [0.0, 0.4, 0.8, 0.8, 1.0, 1.0], "tries": [15.0, 15.0, 15.0, 15.0, 15.0, 13.0]}, {"file": "lwp08743.mxhi.gz", "nominal": 1.4581815964104431e-12, "lam_med": 2855.226512739783, "rec": [0.16666666666666666, 0.1111111111111111, 0.3888888888888889, 0.7777777777777778, 0.8235294117647058, 1.0], "tries": [18.0, 18.0, 18.0, 18.0, 17.0, 18.0]}, {"file": "lwp08746.mxhi.gz", "nominal": 1.864581508461537e-12, "lam_med": 2875.6759913148503}, {"file": "lwp09359.mxhi.gz", "nominal": 4.738274308569137e-12, "lam_med": 2982.0032363216496, "rec": [0.0, 0.45454545454545453, 0.5, 0.9090909090909091, 1.0, 1.0], "tries": [12.0, 11.0, 12.0, 11.0, 12.0, 12.0]}, {"file": "lwp09377.mxhi.gz", "nominal": 4.152014926334414e-12, "lam_med": 2973.4569771824654}, {"file": "lwp09384.mxhi.gz", "nominal": 4.4045822813843095e-12, "lam_med": 2973.657669143449}, {"file": "lwp09403.mxhi.gz", "nominal": 4.700767990633242e-12, "lam_med": 2973.449789127233, "rec": [0.0, 0.5454545454545454, 0.8181818181818182, 0.9090909090909091, 1.0, 1.0], "tries": [11.0, 11.0, 11.0, 11.0, 11.0, 10.0]}, {"file": "lwp09411.mxhi.gz", "nominal": 4.781371572189182e-12, "lam_med": 2973.604663607231}, {"file": "lwp09413.mxhi.gz", "nominal": 5.055036054466341e-12, "lam_med": 2973.764220589582}, {"file": "lwp09414.mxhi.gz", "nominal": 4.0459563658850935e-12, "lam_med": 2973.5170099188254}, {"file": "lwp09419.mxhi.gz", "nominal": 4.516760788608484e-12, "lam_med": 2973.8124230808335}, {"file": "lwp09474.mxhi.gz", "nominal": 4.472057369311112e-12, "lam_med": 2981.323775526217}, {"file": "lwp09483.mxhi.gz", "nominal": 4.411246536122158e-12, "lam_med": 2981.9107699656015}, {"file": "lwp09929.mxhi.gz", "nominal": 1.785182942707018e-11, "lam_med": 2920.8310792038365}, {"file": "lwp09932.mxhi.gz", "nominal": 5.6735279064201557e-11, "lam_med": 2736.6383587154705}, {"file": "lwp10107.mxhi.gz", "nominal": 3.530679403471985e-12, "lam_med": 2836.136695532122}, {"file": "lwp10108.mxhi.gz", "nominal": 2.9425025792198634e-12, "lam_med": 2943.43916363886}, {"file": "lwp10474.mxhi.gz", "nominal": 2.1321171157230544e-13, "lam_med": 2820.7931345353004}, {"file": "lwp10480.mxhi.gz", "nominal": 2.5197143108394844e-13, "lam_med": 2820.7654667938027}, {"file": "lwp11303.mxhi.gz", "nominal": 2.1997534576692797e-11, "lam_med": 3163.147123530647}, {"file": "lwp11304.mxhi.gz", "nominal": 1.680752187962985e-12, "lam_med": 2837.070882909164}, {"file": "lwp11305.mxhi.gz", "nominal": 2.4654817992247936e-12, "lam_med": 2920.074016906734}, {"file": "lwp11307.mxhi.gz", "nominal": 1.4375808521085659e-12, "lam_med": 3032.857672515257}, {"file": "lwp11321.mxhi.gz", "nominal": 2.726029087055033e-12, "lam_med": 2943.255510188978}, {"file": "lwp11322.mxhi.gz", "nominal": 2.069218141749384e-12, "lam_med": 2874.978047701715}, {"file": "lwp11323.mxhi.gz", "nominal": 1.7544397837172105e-11, "lam_med": 2900.537961855356, "rec": [0.0625, 0.25, 0.5625, 0.6875, 0.9375, 1.0], "tries": [16.0, 16.0, 16.0, 16.0, 16.0, 15.0]}, {"file": "lwp11324.mxhi.gz", "nominal": 1.4677830346849801e-12, "lam_med": 3014.7172937614423, "rec": [0.1111111111111111, 0.8888888888888888, 1.0, 1.0, 0.7777777777777778, 1.0], "tries": [9.0, 9.0, 8.0, 8.0, 9.0, 8.0]}, {"file": "lwp11325.mxhi.gz", "nominal": 2.523155706362459e-12, "lam_med": 2943.0320238948298}, {"file": "lwp12234.mxhi.gz", "nominal": 3.774962044600096e-09, "lam_med": 2708.4673055013864}, {"file": "lwp12617.mxhi.gz", "nominal": 8.17084402988782e-10, "lam_med": 2708.4713031575807}, {"file": "lwp13112.mxhi.gz", "nominal": 1.8509448239147265e-10, "lam_med": 2787.0062244923515}, {"file": "lwp13143.mxhi.gz", "nominal": 2.4337049576625617e-10, "lam_med": 2812.3184132470024}, {"file": "lwp13384.mxhi.gz", "nominal": 2.0046059278898374e-12, "lam_med": 2872.8187222036586}, {"file": "lwp13385.mxhi.gz", "nominal": 5.10879628501367e-13, "lam_med": 2637.5103849393026}, {"file": "lwp13993.mxhi.gz", "nominal": 1.6314787231950276e-12, "lam_med": 2875.167160862526}, {"file": "lwp13994.mxhi.gz", "nominal": 9.686420079134517e-13, "lam_med": 2770.5992217513385}, {"file": "lwp14015.mxhi.gz", "nominal": 1.7975643223191332e-12, "lam_med": 2875.015360537468, "rec": [0.11764705882352941, 0.4117647058823529, 0.5294117647058824, 0.6470588235294118, 0.9411764705882353, 0.9411764705882353], "tries": [17.0, 17.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwp14016.mxhi.gz", "nominal": 1.835504179298741e-12, "lam_med": 2875.2453510612636}, {"file": "lwp14033.mxhi.gz", "nominal": 1.0771919602901053e-12, "lam_med": 2781.6060858505316}, {"file": "lwp14034.mxhi.gz", "nominal": 2.1117050944698352e-12, "lam_med": 2875.4728184061905}, {"file": "lwp14060.mxhi.gz", "nominal": 1.7943545085023824e-12, "lam_med": 2875.155608741733}, {"file": "lwp14061.mxhi.gz", "nominal": 9.80613477113663e-13, "lam_med": 2771.0305369841717}, {"file": "lwp14452.mxhi.gz", "nominal": 1.854752477335526e-12, "lam_med": 2958.1201481167136}, {"file": "lwp14462.mxhi.gz", "nominal": 6.339240825977177e-13, "lam_med": 3026.6008341827505}, {"file": "lwp14465.mxhi.gz", "nominal": 5.182615837552694e-13, "lam_med": 2868.313226343628}, {"file": "lwp14640.mxhi.gz", "nominal": 5.390337353585747e-13, "lam_med": 2920.2147588222933}, {"file": "lwp14647.mxhi.gz", "nominal": 7.696439771698858e-13, "lam_med": 3078.205017643585}, {"file": "lwp15035.mxhi.gz", "nominal": 1.2910868917225162e-11, "lam_med": 2781.5449315997816}, {"file": "lwp15054.mxhi.gz", "nominal": 5.535493015959035e-13, "lam_med": 3039.0367757348617}, {"file": "lwp15056.mxhi.gz", "nominal": 1.3440296737909318e-12, "lam_med": 2874.9680283185344}, {"file": "lwp15073.mxhi.gz", "nominal": 1.5529760368454402e-11, "lam_med": 2900.5720596436404}, {"file": "lwp15074.mxhi.gz", "nominal": 2.4882208945504e-12, "lam_med": 2357.9576706433327}, {"file": "lwp15208.mxhi.gz", "nominal": 1.280271676288779e-12, "lam_med": 2835.1034471914872}, {"file": "lwp15209.mxhi.gz", "nominal": 1.1971726080439168e-12, "lam_med": 2740.6038440475113}, {"file": "lwp15210.mxhi.gz", "nominal": 1.1590746983931773e-12, "lam_med": 2899.6068769701615}, {"file": "lwp15320.mxhi.gz", "nominal": 3.246121599686815e-12, "lam_med": 2930.289690362484, "rec": [0.09090909090909091, 0.45454545454545453, 0.6923076923076923, 1.0, 1.0, 1.0], "tries": [11.0, 11.0, 13.0, 13.0, 13.0, 13.0]}, {"file": "lwp16847.mxhi.gz", "nominal": 2.7848678115599573e-12, "lam_med": 2964.624997972695}, {"file": "lwp16848.mxhi.gz", "nominal": 2.0450128533937585e-12, "lam_med": 2920.104923123755}, {"file": "lwp16939.mxhi.gz", "nominal": 2.514947724214202e-10, "lam_med": 2812.4726425522085, "rec": [0.0, 0.45, 0.75, 0.8, 0.9473684210526315, 1.0], "tries": [20.0, 20.0, 20.0, 20.0, 19.0, 20.0]}, {"file": "lwp17457.mxhi.gz", "nominal": 7.990991387779305e-12, "lam_med": 2752.096722293174}, {"file": "lwp17648.mxhi.gz", "nominal": 8.254246459271768e-10, "lam_med": 2708.548602967089, "rec": [0.0, 0.6956521739130435, 1.0, 1.0, 1.0, 1.0], "tries": [24.0, 23.0, 24.0, 23.0, 24.0, 23.0]}, {"file": "lwp18448.mxhi.gz", "nominal": 7.428873067796007e-13, "lam_med": 3015.2830786549202}, {"file": "lwp18457.mxhi.gz", "nominal": 1.4673268485784249e-12, "lam_med": 2875.109727626021}, {"file": "lwp18458.mxhi.gz", "nominal": 1.5791807194029682e-12, "lam_med": 2875.124393757931}, {"file": "lwp18459.mxhi.gz", "nominal": 1.596280957556883e-12, "lam_med": 2874.8516189879224, "rec": [0.11764705882352941, 0.23529411764705882, 0.5294117647058824, 0.9411764705882353, 1.0, 1.0], "tries": [17.0, 17.0, 17.0, 17.0, 16.0, 17.0]}, {"file": "lwp18561.mxhi.gz", "nominal": 1.3323308107135592e-11, "lam_med": 2874.548255741103}, {"file": "lwp18562.mxhi.gz", "nominal": 3.8200590549429376e-11, "lam_med": 2651.141966100784}, {"file": "lwp19606.mxhi.gz", "nominal": 1.6801342334918932e-12, "lam_med": 2836.877590982691}, {"file": "lwp21252.mxhi.gz", "nominal": 1.2429613363984581e-12, "lam_med": 2995.2614812548672}, {"file": "lwp21295.mxhi.gz", "nominal": 8.276919553821097e-10, "lam_med": 2708.2935025388833}, {"file": "lwp21426.mxhi.gz", "nominal": 1.3177139106799436e-12, "lam_med": 3039.013476977662}, {"file": "lwp22586.mxhi.gz", "nominal": 4.9613403022673284e-12, "lam_med": 2698.2199525784204}, {"file": "lwp23232.mxhi.gz", "nominal": 5.052870902285668e-12, "lam_med": 2702.1987423117903}, {"file": "lwp23403.mxhi.gz", "nominal": 8.700078863590741e-11, "lam_med": 2937.9160035399955, "rec": [0.0, 0.35714285714285715, 0.7142857142857143, 0.8461538461538461, 0.9285714285714286, 1.0], "tries": [14.0, 14.0, 14.0, 13.0, 14.0, 14.0]}, {"file": "lwp23571.mxhi.gz", "nominal": 1.1717796758141262e-11, "lam_med": 2816.1294607779705}, {"file": "lwp23642.mxhi.gz", "nominal": 8.432515780341839e-10, "lam_med": 2708.2433963334424}, {"file": "lwp23663.mxhi.gz", "nominal": 6.290625649609266e-11, "lam_med": 2767.9790170074825}, {"file": "lwp23664.mxhi.gz", "nominal": 1.9644237785346995e-12, "lam_med": 2875.4142629944386, "rec": [0.0, 0.35294117647058826, 0.29411764705882354, 0.8125, 1.0, 1.0], "tries": [17.0, 17.0, 17.0, 16.0, 17.0, 16.0]}, {"file": "lwp23825.mxhi.gz", "nominal": 1.5354544737946236e-11, "lam_med": 2812.4899649023296}, {"file": "lwp24324.mxhi.gz", "nominal": 4.825112301343435e-12, "lam_med": 2704.5291101135535}, {"file": "lwp24325.mxhi.gz", "nominal": 5.006558847213984e-12, "lam_med": 2670.860238318937}, {"file": "lwp25001.mxhi.gz", "nominal": 4.501584474594701e-12, "lam_med": 2872.5837862725507}, {"file": "lwp25006.mxhi.gz", "nominal": 7.096889949931659e-12, "lam_med": 2740.9403591626333, "rec": [0.07692307692307693, 0.08333333333333333, 0.5384615384615384, 0.38461538461538464, 0.7692307692307693, 0.6153846153846154], "tries": [13.0, 12.0, 13.0, 13.0, 13.0, 13.0]}, {"file": "lwp25007.mxhi.gz", "nominal": 7.179822060360286e-11, "lam_med": 2771.446322713759}, {"file": "lwp25501.mxhi.gz", "nominal": 4.787288165360519e-12, "lam_med": 2991.2243383078676}, {"file": "lwp25502.mxhi.gz", "nominal": 2.532559348198722e-12, "lam_med": 2895.2604821598884}, {"file": "lwp25512.mxhi.gz", "nominal": 3.3530835715761833e-12, "lam_med": 2930.0731375968608}, {"file": "lwp25524.mxhi.gz", "nominal": 5.065432120012037e-12, "lam_med": 2997.8194621371117}, {"file": "lwp25549.mxhi.gz", "nominal": 2.9182428790124968e-12, "lam_med": 2913.8194521487726}, {"file": "lwp25554.mxhi.gz", "nominal": 2.4519949696573398e-12, "lam_med": 2887.7187300353153}, {"file": "lwp25563.mxhi.gz", "nominal": 2.5765066764076195e-12, "lam_med": 2895.1945396329866}, {"file": "lwp25568.mxhi.gz", "nominal": 2.4817630613409914e-12, "lam_med": 2887.624698996782}, {"file": "lwp25578.mxhi.gz", "nominal": 2.6683446809037603e-12, "lam_med": 2894.1689016995897}, {"file": "lwp25583.mxhi.gz", "nominal": 2.65205443767918e-12, "lam_med": 2893.824410361314}, {"file": "lwp25588.mxhi.gz", "nominal": 2.575852947022803e-12, "lam_med": 2895.3499368538282}, {"file": "lwp25591.mxhi.gz", "nominal": 2.7807968703363895e-12, "lam_med": 2908.97637696911}, {"file": "lwp25601.mxhi.gz", "nominal": 2.433843828029034e-12, "lam_med": 2895.0376348385566}, {"file": "lwp25690.mxhi.gz", "nominal": 1.5487287493224904e-11, "lam_med": 2852.126742851616}, {"file": "lwp26178.mxhi.gz", "nominal": 1.9902380506657387e-10, "lam_med": 2764.9064876280363}, {"file": "lwp26701.mxhi.gz", "nominal": 7.817080367072552e-13, "lam_med": 2740.3695341824973}, {"file": "lwp26702.mxhi.gz", "nominal": 7.211510042370977e-13, "lam_med": 2731.519772635243}, {"file": "lwp26703.mxhi.gz", "nominal": 8.13970238619538e-13, "lam_med": 2790.9936854136527}, {"file": "lwp26714.mxhi.gz", "nominal": 7.199108421855369e-13, "lam_med": 2744.699906981611}, {"file": "lwp26715.mxhi.gz", "nominal": 7.626999418982634e-13, "lam_med": 2731.6582220774535}, {"file": "lwp27998.mxhi.gz", "nominal": 6.004661388147247e-12, "lam_med": 2724.1439090403783}, {"file": "lwp28126.mxhi.gz", "nominal": 6.962502079747602e-12, "lam_med": 2767.9098805061976}, {"file": "lwp28866.mxhi.gz", "nominal": 1.5812993444410216e-10, "lam_med": 2708.5717994654406}, {"file": "lwp28867.mxhi.gz", "nominal": 1.3206211497099245e-10, "lam_med": 2714.820161422318}, {"file": "lwp28868.mxhi.gz", "nominal": 1.5660945900548955e-10, "lam_med": 2710.1288980830723}, {"file": "lwp28905.mxhi.gz", "nominal": 2.1035670477287906e-12, "lam_med": 2873.056044573095}, {"file": "lwp28907.mxhi.gz", "nominal": 5.127853170007937e-12, "lam_med": 2992.230607348224, "rec": [0.0, 0.8571428571428571, 1.0, 1.0, 1.0, 1.0], "tries": [7.0, 7.0, 7.0, 7.0, 7.0, 7.0]}, {"file": "lwp28908.mxhi.gz", "nominal": 2.7516622272026956e-12, "lam_med": 2887.4832039330013}, {"file": "lwp28909.mxhi.gz", "nominal": 2.0552268356434486e-12, "lam_med": 2875.3251693255424}, {"file": "lwp28916.mxhi.gz", "nominal": 2.1841155430580806e-12, "lam_med": 2875.489346251021}, {"file": "lwp29182.mxhi.gz", "nominal": 1.3971133990456335e-12, "lam_med": 2833.84973253108}, {"file": "lwp29464.mxhi.gz", "nominal": 6.3036219234817104e-12, "lam_med": 2752.860657069286, "rec": [0.07142857142857142, 0.13333333333333333, 0.26666666666666666, 0.42857142857142855, 0.6666666666666666, 1.0], "tries": [14.0, 15.0, 15.0, 14.0, 15.0, 14.0]}, {"file": "lwp29517.mxhi.gz", "nominal": 5.385874901622984e-12, "lam_med": 2768.887029430872, "rec": [0.0, 0.05263157894736842, 0.21052631578947367, 0.45, 0.8, 0.85], "tries": [20.0, 19.0, 19.0, 20.0, 20.0, 20.0]}, {"file": "lwp29597.mxhi.gz", "nominal": 5.614949101527999e-12, "lam_med": 2732.9112193956553}, {"file": "lwp29614.mxhi.gz", "nominal": 6.574102825614807e-12, "lam_med": 2753.6171028842814}, {"file": "lwp29625.mxhi.gz", "nominal": 7.212224273651348e-12, "lam_med": 2748.33935169687}, {"file": "lwp29632.mxhi.gz", "nominal": 5.4672673738474095e-12, "lam_med": 2739.3374521179994}, {"file": "lwp29650.mxhi.gz", "nominal": 6.1268456281629575e-12, "lam_med": 2737.12873236382}, {"file": "lwp29683.mxhi.gz", "nominal": 7.0701020356556505e-12, "lam_med": 2752.4438726177514}, {"file": "lwp29705.mxhi.gz", "nominal": 6.62985896505235e-12, "lam_med": 2750.2375809028795}, {"file": "lwp29717.mxhi.gz", "nominal": 6.703736844789441e-12, "lam_med": 2753.9695147669336, "rec": [0.0, 0.1875, 0.375, 0.4, 0.8125, 0.6875], "tries": [16.0, 16.0, 16.0, 15.0, 16.0, 16.0]}, {"file": "lwp29730.mxhi.gz", "nominal": 3.3220054894787296e-12, "lam_med": 2836.711814914619}, {"file": "lwp29747.mxhi.gz", "nominal": 6.0041330199954465e-12, "lam_med": 2735.670802522023}, {"file": "lwp29786.mxhi.gz", "nominal": 5.688770753906174e-12, "lam_med": 2778.3779023089946}, {"file": "lwp30638.mxhi.gz", "nominal": 5.0075751704801444e-11, "lam_med": 2706.078026931979}, {"file": "lwp30639.mxhi.gz", "nominal": 4.6529016597363686e-11, "lam_med": 2740.493530743726}, {"file": "lwp30640.mxhi.gz", "nominal": 1.6524345798438244e-11, "lam_med": 2900.196156312276}, {"file": "lwp30652.mxhi.gz", "nominal": 6.649109913851947e-11, "lam_med": 2780.0960024743713}, {"file": "lwp30653.mxhi.gz", "nominal": 2.1107555303660765e-11, "lam_med": 2942.9493103814934}, {"file": "lwp30690.mxhi.gz", "nominal": 5.01149757164405e-11, "lam_med": 2779.6731672645383}, {"file": "lwp30691.mxhi.gz", "nominal": 1.7302791875426054e-11, "lam_med": 2993.803763949278}, {"file": "lwp30724.mxhi.gz", "nominal": 2.350105560479925e-11, "lam_med": 2938.2192610797233}, {"file": "lwp30725.mxhi.gz", "nominal": 1.1236606728594085e-11, "lam_med": 2841.1495267178484}, {"file": "lwp30726.mxhi.gz", "nominal": 4.2864366178319933e-11, "lam_med": 2831.1586223244253}, {"file": "lwp30739.mxhi.gz", "nominal": 4.6469477516967834e-11, "lam_med": 2799.6000020234437}, {"file": "lwp30740.mxhi.gz", "nominal": 1.4257360605952e-11, "lam_med": 2994.12867651574}, {"file": "lwp30763.mxhi.gz", "nominal": 1.3418087361195873e-11, "lam_med": 2959.4694258526633}, {"file": "lwp30764.mxhi.gz", "nominal": 4.526244226609161e-11, "lam_med": 2798.648268932956}, {"file": "lwp30807.mxhi.gz", "nominal": 4.604490534748429e-11, "lam_med": 2768.700761194965}, {"file": "lwp30833.mxhi.gz", "nominal": 1.6320789486643064e-11, "lam_med": 2811.232196019255}, {"file": "lwp30834.mxhi.gz", "nominal": 4.193596709462813e-11, "lam_med": 2829.647532576876}, {"file": "lwp30835.mxhi.gz", "nominal": 1.1907396455804971e-11, "lam_med": 2920.24446322337}, {"file": "lwp30862.mxhi.gz", "nominal": 2.0099239773909206e-11, "lam_med": 3003.989784968418}, {"file": "lwp30863.mxhi.gz", "nominal": 1.4834048499097022e-11, "lam_med": 2875.641315716352}, {"file": "lwp30915.mxhi.gz", "nominal": 5.074862987663017e-11, "lam_med": 2806.199400663438}, {"file": "lwp30916.mxhi.gz", "nominal": 1.4677121104511634e-11, "lam_med": 2875.447982342451, "rec": [0.125, 0.4375, 0.35294117647058826, 0.6875, 0.7647058823529411, 1.0], "tries": [16.0, 16.0, 17.0, 16.0, 17.0, 17.0]}, {"file": "lwp30918.mxhi.gz", "nominal": 6.162231689445597e-12, "lam_med": 2738.2851048203092}, {"file": "lwp30929.mxhi.gz", "nominal": 4.46452698293436e-11, "lam_med": 2799.630735620556}, {"file": "lwp30930.mxhi.gz", "nominal": 1.516341347035618e-11, "lam_med": 2875.2324613452456, "rec": [0.0, 0.1875, 0.5882352941176471, 0.7647058823529411, 1.0, 1.0], "tries": [17.0, 16.0, 17.0, 17.0, 16.0, 17.0]}, {"file": "lwp30932.mxhi.gz", "nominal": 6.075331304217996e-12, "lam_med": 2737.9300866365065, "rec": [0.0, 0.16666666666666666, 0.35294117647058826, 0.4444444444444444, 0.6666666666666666, 0.7777777777777778], "tries": [18.0, 18.0, 17.0, 18.0, 18.0, 18.0]}, {"file": "lwp30939.mxhi.gz", "nominal": 6.277745134960161e-11, "lam_med": 2763.2164158318838}, {"file": "lwp30940.mxhi.gz", "nominal": 1.8009239455351177e-11, "lam_med": 2900.1180615538897}, {"file": "lwp30945.mxhi.gz", "nominal": 4.3908621109545544e-11, "lam_med": 2845.282777687986}, {"file": "lwp30946.mxhi.gz", "nominal": 1.3112588619526003e-11, "lam_med": 2900.756929690563}, {"file": "lwp30962.mxhi.gz", "nominal": 1.465436315643597e-11, "lam_med": 2875.5335689685708}, {"file": "lwp30963.mxhi.gz", "nominal": 5.6436578131222217e-11, "lam_med": 2778.8104110441463}, {"file": "lwp31014.mxhi.gz", "nominal": 4.71939146211837e-11, "lam_med": 2818.6461854052786, "rec": [0.05263157894736842, 0.21052631578947367, 0.3684210526315789, 0.6842105263157895, 0.8947368421052632, 0.8947368421052632], "tries": [19.0, 19.0, 19.0, 19.0, 19.0, 19.0]}, {"file": "lwp31015.mxhi.gz", "nominal": 1.473430158153451e-11, "lam_med": 2900.6664985794964}, {"file": "lwp31038.mxhi.gz", "nominal": 1.4604801645196237e-11, "lam_med": 2875.342608046223}, {"file": "lwp31040.mxhi.gz", "nominal": 6.205212012136773e-11, "lam_med": 2766.1522443946205}, {"file": "lwp31077.mxhi.gz", "nominal": 6.179987313778152e-11, "lam_med": 2758.2565734374257}, {"file": "lwp31078.mxhi.gz", "nominal": 1.5442168606183422e-11, "lam_med": 2875.3706584720094}, {"file": "lwp31093.mxhi.gz", "nominal": 1.593023645024357e-11, "lam_med": 2899.6961645736937}, {"file": "lwp31094.mxhi.gz", "nominal": 6.253954117057189e-11, "lam_med": 2762.851465271377}, {"file": "lwp31138.mxhi.gz", "nominal": 6.219151381171855e-11, "lam_med": 2757.8028030958067}, {"file": "lwp31139.mxhi.gz", "nominal": 1.466949750661787e-11, "lam_med": 2874.971284828615}, {"file": "lwp31160.mxhi.gz", "nominal": 6.128462105443631e-11, "lam_med": 2754.825823477342}, {"file": "lwp31161.mxhi.gz", "nominal": 1.49246642466418e-11, "lam_med": 2899.351726840673}, {"file": "lwp31178.mxhi.gz", "nominal": 6.068039512702229e-11, "lam_med": 2759.0469904610413}, {"file": "lwp31179.mxhi.gz", "nominal": 1.4715995962274965e-11, "lam_med": 2875.1070390541354, "rec": [0.0, 0.3125, 0.5882352941176471, 0.7058823529411765, 0.8823529411764706, 1.0], "tries": [17.0, 16.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwp31206.mxhi.gz", "nominal": 1.4902416743220763e-11, "lam_med": 2875.208830031744}, {"file": "lwp31207.mxhi.gz", "nominal": 5.976288951500858e-11, "lam_med": 2763.1925250766376}, {"file": "lwp31240.mxhi.gz", "nominal": 1.4800173696988093e-11, "lam_med": 2899.846693279578, "rec": [0.125, 0.4, 0.4, 0.75, 0.875, 1.0], "tries": [16.0, 15.0, 15.0, 16.0, 16.0, 16.0]}, {"file": "lwp31241.mxhi.gz", "nominal": 6.03498537647837e-11, "lam_med": 2752.876720163063}, {"file": "lwp31473.mxhi.gz", "nominal": 8.347338848357593e-12, "lam_med": 2756.6320339658455}, {"file": "lwr01467.mxhi.gz", "nominal": 5.4931465213278954e-11, "lam_med": 2835.065049282996}, {"file": "lwr01504.mxhi.gz", "nominal": 1.2501038151775149e-12, "lam_med": 2843.84864415041}, {"file": "lwr01515.mxhi.gz", "nominal": 5.121567044651712e-11, "lam_med": 2544.5999358642707}, {"file": "lwr01516.mxhi.gz", "nominal": 1.725861302096118e-11, "lam_med": 2543.8367618566604}, {"file": "lwr01593.mxhi.gz", "nominal": 5.322519446728846e-12, "lam_med": 2758.8626194105545, "rec": [0.10526315789473684, 0.10526315789473684, 0.42105263157894735, 0.6842105263157895, 0.7894736842105263, 0.8421052631578947], "tries": [19.0, 19.0, 19.0, 19.0, 19.0, 19.0]}, {"file": "lwr01764.mxhi.gz", "nominal": 2.2695988380769178e-12, "lam_med": 2805.2215512227945}, {"file": "lwr01789.mxhi.gz", "nominal": 1.0395468604508516e-12, "lam_med": 2791.892027511055, "rec": [0.05555555555555555, 0.5789473684210527, 0.631578947368421, 1.0, 0.8947368421052632, 0.8947368421052632], "tries": [18.0, 19.0, 19.0, 18.0, 19.0, 19.0]}, {"file": "lwr01861.mxhi.gz", "nominal": 1.685394410878516e-12, "lam_med": 2805.166675292729}, {"file": "lwr01863.mxhi.gz", "nominal": 5.527177286777223e-12, "lam_med": 2753.201171511451}, {"file": "lwr01957.mxhi.gz", "nominal": 2.695278946813342e-12, "lam_med": 2809.8254414734365, "rec": [0.0, 0.42105263157894735, 0.7368421052631579, 0.9444444444444444, 1.0, 1.0], "tries": [19.0, 19.0, 19.0, 18.0, 19.0, 19.0]}, {"file": "lwr02093.mxhi.gz", "nominal": 4.6514432734890626e-11, "lam_med": 2434.812472662656}, {"file": "lwr02094.mxhi.gz", "nominal": 7.896653841367008e-11, "lam_med": 2707.699393375968}, {"file": "lwr02095.mxhi.gz", "nominal": 1.152877141377361e-11, "lam_med": 2824.2743424253886}, {"file": "lwr02096.mxhi.gz", "nominal": 2.948590443547113e-11, "lam_med": 2880.883497859107}, {"file": "lwr02097.mxhi.gz", "nominal": 5.317573430613154e-12, "lam_med": 2488.86866884961}, {"file": "lwr02133.mxhi.gz", "nominal": 3.8654235113445736e-12, "lam_med": 2852.1663049813455, "rec": [0.07692307692307693, 0.7142857142857143, 0.9285714285714286, 0.9285714285714286, 1.0, 1.0], "tries": [13.0, 14.0, 14.0, 14.0, 13.0, 14.0]}, {"file": "lwr02159.mxhi.gz", "nominal": 5.542903721726988e-12, "lam_med": 2953.549182017976}, {"file": "lwr02190.mxhi.gz", "nominal": 1.7793564423165246e-12, "lam_med": 2844.222780791791, "rec": [0.0, 0.11764705882352941, 0.6666666666666666, 0.7777777777777778, 0.9411764705882353, 0.9444444444444444], "tries": [17.0, 17.0, 18.0, 18.0, 17.0, 18.0]}, {"file": "lwr02191.mxhi.gz", "nominal": 2.025710094381027e-12, "lam_med": 2768.9676229770494, "rec": [0.047619047619047616, 0.38095238095238093, 0.5238095238095238, 0.9047619047619048, 0.8095238095238095, 0.8571428571428571], "tries": [21.0, 21.0, 21.0, 21.0, 21.0, 21.0]}, {"file": "lwr02192.mxhi.gz", "nominal": 5.4980184494428255e-12, "lam_med": 2797.631420165936}, {"file": "lwr02194.mxhi.gz", "nominal": 2.6982746574405625e-12, "lam_med": 2470.8521435861867}, {"file": "lwr02449.mxhi.gz", "nominal": 1.1345940543327591e-10, "lam_med": 2430.7757275219537, "rec": [0.022727272727272728, 0.7045454545454546, 0.9069767441860465, 0.9772727272727273, 0.9772727272727273, 0.9302325581395349], "tries": [44.0, 44.0, 43.0, 44.0, 44.0, 43.0]}, {"file": "lwr02610.mxhi.gz", "nominal": 2.891796947956886e-12, "lam_med": 2682.253703322475}, {"file": "lwr02611.mxhi.gz", "nominal": 1.0229211522843545e-12, "lam_med": 2682.1428185359373}, {"file": "lwr02621.mxhi.gz", "nominal": 1.48225535051364e-12, "lam_med": 2742.6317418709395}, {"file": "lwr02632.mxhi.gz", "nominal": 7.088129672005847e-13, "lam_med": 2844.412478829393}, {"file": "lwr02764.mxhi.gz", "nominal": 3.765676210162468e-11, "lam_med": 2196.6187051447405, "rec": [0.0, 0.25, 0.39285714285714285, 0.6071428571428571, 0.9285714285714286, 0.8928571428571429], "tries": [28.0, 28.0, 28.0, 28.0, 28.0, 28.0]}, {"file": "lwr02765.mxhi.gz", "nominal": 4.798484916772017e-11, "lam_med": 2244.1120541518594}, {"file": "lwr02767.mxhi.gz", "nominal": 8.656723639093679e-11, "lam_med": 2498.984530998629}, {"file": "lwr02768.mxhi.gz", "nominal": 2.209097842298785e-12, "lam_med": 2830.26913682646}, {"file": "lwr02777.mxhi.gz", "nominal": 2.977986675487585e-12, "lam_med": 2825.09852506248, "rec": [0.0, 0.3888888888888889, 0.7222222222222222, 0.8888888888888888, 1.0, 1.0], "tries": [18.0, 18.0, 18.0, 18.0, 18.0, 18.0]}, {"file": "lwr02797.mxhi.gz", "nominal": 2.459366870687947e-12, "lam_med": 2807.900863522223}, {"file": "lwr02810.mxhi.gz", "nominal": 1.5843738475554994e-10, "lam_med": 2579.2596965257303, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0], "tries": [2.0, 2.0, 2.0, 2.0, 2.0, 2.0]}, {"file": "lwr02811.mxhi.gz", "nominal": 4.790725706547736e-12, "lam_med": 2757.3286607051446}, {"file": "lwr02812.mxhi.gz", "nominal": 4.823931234891878e-12, "lam_med": 2757.317129202046}, {"file": "lwr02813.mxhi.gz", "nominal": 5.039988220251263e-12, "lam_med": 2773.1940980992986}, {"file": "lwr02833.mxhi.gz", "nominal": 5.151737878847766e-12, "lam_med": 2777.330422458974}, {"file": "lwr02834.mxhi.gz", "nominal": 4.814220012667654e-12, "lam_med": 2783.891330215467}, {"file": "lwr03002.mxhi.gz", "nominal": 6.825962265194664e-10, "lam_med": 2483.426521042461, "rec": [0.08571428571428572, 0.8, 1.0, 1.0, 0.9714285714285714, 1.0], "tries": [35.0, 35.0, 35.0, 35.0, 35.0, 35.0]}, {"file": "lwr03012.mxhi.gz", "nominal": 1.1633318861628914e-10, "lam_med": 2354.754550528897}, {"file": "lwr03014.mxhi.gz", "nominal": 2.3990582830407807e-12, "lam_med": 2840.729077314963}, {"file": "lwr03160.mxhi.gz", "nominal": 2.3396147229680937e-12, "lam_med": 2872.9535673813903}, {"file": "lwr03175.mxhi.gz", "nominal": 1.4499604968611021e-12, "lam_med": 2784.419587980258, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 0.0], "tries": [1.0, 1.0, 1.0, 1.0, 1.0, 0.0]}, {"file": "lwr03211.mxhi.gz", "nominal": 3.816012510225531e-12, "lam_med": 2858.820765008296}, {"file": "lwr03698.mxhi.gz", "nominal": 3.2105394016740934e-12, "lam_med": 2821.46685755391}, {"file": "lwr03700.mxhi.gz", "nominal": 9.412110752850398e-12, "lam_med": 2756.8807766622813}, {"file": "lwr03702.mxhi.gz", "nominal": 4.333484163158836e-12, "lam_med": 2800.5639522690635, "rec": [0.0, 0.10526315789473684, 0.55, 0.8, 1.0, 0.95], "tries": [20.0, 19.0, 20.0, 20.0, 20.0, 20.0]}, {"file": "lwr04154.mxhi.gz", "nominal": 7.302885224233029e-10, "lam_med": 2499.1674759709563}, {"file": "lwr04714.mxhi.gz", "nominal": 5.5934518204832085e-12, "lam_med": 2612.7568955861807, "rec": [0.0, 0.3333333333333333, 0.3, 0.6, 0.7777777777777778, 0.6], "tries": [10.0, 9.0, 10.0, 10.0, 9.0, 10.0]}, {"file": "lwr04794.mxhi.gz", "nominal": 1.0555626716568432e-11, "lam_med": 2770.7751629980653, "rec": [0.0, 0.42857142857142855, 0.5714285714285714, 0.8571428571428571, 0.8095238095238095, 1.0], "tries": [21.0, 21.0, 21.0, 21.0, 21.0, 21.0]}, {"file": "lwr04795.mxhi.gz", "nominal": 1.0626939151055118e-11, "lam_med": 2771.4150610893776}, {"file": "lwr04796.mxhi.gz", "nominal": 8.857563796903196e-12, "lam_med": 2750.4657162462945}, {"file": "lwr04797.mxhi.gz", "nominal": 8.820880075076983e-12, "lam_med": 2750.1229659336977}, {"file": "lwr04798.mxhi.gz", "nominal": 8.849688162662343e-12, "lam_med": 2751.255327627174}, {"file": "lwr04807.mxhi.gz", "nominal": 8.931206172655235e-12, "lam_med": 2749.0509306438357, "rec": [0.0, 0.15789473684210525, 0.3333333333333333, 0.8333333333333334, 0.8421052631578947, 0.7894736842105263], "tries": [19.0, 19.0, 18.0, 18.0, 19.0, 19.0]}, {"file": "lwr04808.mxhi.gz", "nominal": 8.027460480332527e-12, "lam_med": 2751.8799471331185}, {"file": "lwr04809.mxhi.gz", "nominal": 9.719297335145513e-12, "lam_med": 2768.9543203989647, "rec": [0.0, 0.2857142857142857, 0.6666666666666666, 0.7142857142857143, 0.8571428571428571, 0.9523809523809523], "tries": [21.0, 21.0, 21.0, 21.0, 21.0, 21.0]}, {"file": "lwr04810.mxhi.gz", "nominal": 1.0401484544732204e-11, "lam_med": 2785.0578270960855}, {"file": "lwr04958.mxhi.gz", "nominal": 4.323883389596597e-12, "lam_med": 2786.7001157708964}, {"file": "lwr05154.mxhi.gz", "nominal": 3.5311195683060174e-13, "lam_med": 2953.8554362405803}, {"file": "lwr05195.mxhi.gz", "nominal": 3.4382642894080884e-12, "lam_med": 2633.9935497359393, "rec": [0.05, 0.2, 0.65, 0.9, 0.8, 0.95], "tries": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, {"file": "lwr05309.mxhi.gz", "nominal": 4.464826614989478e-12, "lam_med": 2589.175618790234}, {"file": "lwr05344.mxhi.gz", "nominal": 3.7535321289617865e-12, "lam_med": 2790.9405150312305}, {"file": "lwr05712.mxhi.gz", "nominal": 1.5990733319266448e-10, "lam_med": 2473.3606372711083}, {"file": "lwr05713.mxhi.gz", "nominal": 9.023564936105888e-11, "lam_med": 2283.7530468228474}, {"file": "lwr06279.mxhi.gz", "nominal": 9.440754225386077e-13, "lam_med": 2770.317281630989}, {"file": "lwr06296.mxhi.gz", "nominal": 9.826181922807826e-12, "lam_med": 2757.7987006618323}, {"file": "lwr06297.mxhi.gz", "nominal": 5.0508294159737885e-12, "lam_med": 2426.0391831475204}, {"file": "lwr06426.mxhi.gz", "nominal": 5.654163478212163e-12, "lam_med": 2637.3470242062235, "rec": [0.0, 0.1875, 0.4375, 0.6875, 0.6875, 0.625], "tries": [16.0, 16.0, 16.0, 16.0, 16.0, 16.0]}, {"file": "lwr06428.mxhi.gz", "nominal": 3.83650370143536e-12, "lam_med": 2489.455314629183}, {"file": "lwr06853.mxhi.gz", "nominal": 7.792376536419958e-12, "lam_med": 2730.428445827816}, {"file": "lwr06854.mxhi.gz", "nominal": 7.96205754545724e-12, "lam_med": 2446.7122589892165}, {"file": "lwr06855.mxhi.gz", "nominal": 8.302097102755828e-12, "lam_med": 2740.8899046145957, "rec": [0.0, 0.25, 0.47058823529411764, 0.5294117647058824, 0.8823529411764706, 0.8235294117647058], "tries": [16.0, 16.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwr06856.mxhi.gz", "nominal": 5.681615450788497e-12, "lam_med": 2637.541448771713}, {"file": "lwr06857.mxhi.gz", "nominal": 5.770431777957673e-12, "lam_med": 2638.0288650382936}, {"file": "lwr06996.mxhi.gz", "nominal": 4.298888167667571e-09, "lam_med": 2376.578678078912}, {"file": "lwr06997.mxhi.gz", "nominal": 1.1009549213213256e-10, "lam_med": 2733.917717814201}, {"file": "lwr07008.mxhi.gz", "nominal": 5.598141074443026e-10, "lam_med": 2464.4680078096817}, {"file": "lwr07585.mxhi.gz", "nominal": 9.741745093295672e-10, "lam_med": 2345.0666219294026}, {"file": "lwr07894.mxhi.gz", "nominal": 6.027966950946614e-12, "lam_med": 2651.481716536285}, {"file": "lwr07895.mxhi.gz", "nominal": 6.222949007966734e-12, "lam_med": 2681.105074127234}, {"file": "lwr07896.mxhi.gz", "nominal": 5.9817955217949385e-12, "lam_med": 2647.362724935271, "rec": [0.0625, 0.3333333333333333, 0.4666666666666667, 0.7857142857142857, 0.875, 0.875], "tries": [16.0, 15.0, 15.0, 14.0, 16.0, 16.0]}, {"file": "lwr07897.mxhi.gz", "nominal": 5.9626638425964364e-12, "lam_med": 2647.002764599957}, {"file": "lwr07898.mxhi.gz", "nominal": 5.998464989322451e-12, "lam_med": 2645.101301270878}, {"file": "lwr08006.mxhi.gz", "nominal": 7.859360872715965e-12, "lam_med": 2408.002240182273}, {"file": "lwr08028.mxhi.gz", "nominal": 7.922287856071953e-12, "lam_med": 2807.618762401237, "rec": [0.0, 0.47368421052631576, 0.6842105263157895, 0.8421052631578947, 1.0, 1.0], "tries": [19.0, 19.0, 19.0, 19.0, 19.0, 19.0]}, {"file": "lwr08420.mxhi.gz", "nominal": 1.0190455387667978e-11, "lam_med": 2809.3965936723453}, {"file": "lwr08421.mxhi.gz", "nominal": 5.4191618613024206e-12, "lam_med": 2967.6240753010184}, {"file": "lwr08525.mxhi.gz", "nominal": 8.125203817791278e-11, "lam_med": 2768.185366008343, "rec": [0.0, 0.3684210526315789, 0.3684210526315789, 0.7222222222222222, 0.631578947368421, 0.7894736842105263], "tries": [19.0, 19.0, 19.0, 18.0, 19.0, 19.0]}, {"file": "lwr08526.mxhi.gz", "nominal": 4.911774446104214e-12, "lam_med": 2551.649650789448}, {"file": "lwr08629.mxhi.gz", "nominal": 6.386358477624156e-10, "lam_med": 2464.573187663237}, {"file": "lwr08630.mxhi.gz", "nominal": 1.2646635767399175e-09, "lam_med": 2454.7494817314555}, {"file": "lwr08639.mxhi.gz", "nominal": 6.983481470624736e-11, "lam_med": 2648.872680103301}, {"file": "lwr08640.mxhi.gz", "nominal": 2.5147203954364685e-11, "lam_med": 2873.3733499253026}, {"file": "lwr08642.mxhi.gz", "nominal": 5.962792180934763e-12, "lam_med": 2910.140265296073}, {"file": "lwr08721.mxhi.gz", "nominal": 8.298616768868457e-11, "lam_med": 2771.0782271930216}, {"file": "lwr08722.mxhi.gz", "nominal": 2.6509479849575417e-11, "lam_med": 2952.651472126834}, {"file": "lwr08723.mxhi.gz", "nominal": 6.9888122877195e-12, "lam_med": 2909.96818235303, "rec": [0.0, 0.75, 1.0, 1.0, 1.0, 0.75], "tries": [4.0, 4.0, 3.0, 3.0, 4.0, 4.0]}, {"file": "lwr08768.mxhi.gz", "nominal": 3.380141277403574e-12, "lam_med": 2535.664200394916}, {"file": "lwr08777.mxhi.gz", "nominal": 8.276882734155156e-11, "lam_med": 2768.5573779721663}, {"file": "lwr08778.mxhi.gz", "nominal": 2.4236687456982374e-11, "lam_med": 2864.6450436617442, "rec": [0.0, 0.5333333333333333, 0.9333333333333333, 0.9333333333333333, 1.0, 1.0], "tries": [14.0, 15.0, 15.0, 15.0, 15.0, 15.0]}, {"file": "lwr08779.mxhi.gz", "nominal": 5.982304976652012e-12, "lam_med": 2894.334787058014}, {"file": "lwr08829.mxhi.gz", "nominal": 7.705903824921702e-11, "lam_med": 2742.513768132533}, {"file": "lwr08830.mxhi.gz", "nominal": 2.4059777579045802e-11, "lam_med": 2852.6408888347496}, {"file": "lwr08831.mxhi.gz", "nominal": 5.571804779476694e-12, "lam_med": 2392.4860616554142}, {"file": "lwr08832.mxhi.gz", "nominal": 6.878206513747499e-12, "lam_med": 2894.6580205334058}, {"file": "lwr08857.mxhi.gz", "nominal": 7.460871387551102e-11, "lam_med": 2753.644333669516, "rec": [0.0625, 0.125, 0.625, 0.5625, 0.875, 0.9375], "tries": [16.0, 16.0, 16.0, 16.0, 16.0, 16.0]}, {"file": "lwr08858.mxhi.gz", "nominal": 2.5320960370940862e-11, "lam_med": 2874.009322329298}, {"file": "lwr08859.mxhi.gz", "nominal": 7.176617041324192e-12, "lam_med": 2807.4081015765423}, {"file": "lwr08860.mxhi.gz", "nominal": 2.142019764235992e-12, "lam_med": 2845.181855896726}, {"file": "lwr08883.mxhi.gz", "nominal": 7.784370970776439e-11, "lam_med": 2758.803470600291}, {"file": "lwr08884.mxhi.gz", "nominal": 2.5643032711251192e-11, "lam_med": 2873.7412951588694, "rec": [0.0625, 0.4375, 0.8125, 0.875, 0.9375, 0.9375], "tries": [16.0, 16.0, 16.0, 16.0, 16.0, 16.0]}, {"file": "lwr08885.mxhi.gz", "nominal": 8.234154528989633e-12, "lam_med": 2807.4776490286285}, {"file": "lwr08893.mxhi.gz", "nominal": 1.0730450758224754e-11, "lam_med": 2641.5369623683573}, {"file": "lwr09347.mxhi.gz", "nominal": 7.562176026086037e-12, "lam_med": 2873.2570897163564}, {"file": "lwr09378.mxhi.gz", "nominal": 6.0274531759221965e-12, "lam_med": 2894.1791976740933}, {"file": "lwr09402.mxhi.gz", "nominal": 7.045288880054514e-12, "lam_med": 2894.0099508357916}, {"file": "lwr09423.mxhi.gz", "nominal": 7.1084018875449405e-12, "lam_med": 2893.8664968909966}, {"file": "lwr09684.mxhi.gz", "nominal": 6.092922753369863e-12, "lam_med": 2651.0389882553795}, {"file": "lwr09685.mxhi.gz", "nominal": 6.323110314231302e-12, "lam_med": 2639.269062717958, "rec": [0.07142857142857142, 0.5, 0.8, 0.6666666666666666, 0.9285714285714286, 0.8], "tries": [14.0, 14.0, 15.0, 15.0, 14.0, 15.0]}, {"file": "lwr09686.mxhi.gz", "nominal": 6.182049500511182e-12, "lam_med": 2622.2782506816316}, {"file": "lwr09687.mxhi.gz", "nominal": 6.2870617643957395e-12, "lam_med": 2643.730639560087}, {"file": "lwr09688.mxhi.gz", "nominal": 6.427066261549758e-12, "lam_med": 2676.904847964324}, {"file": "lwr09830.mxhi.gz", "nominal": 6.106723179083379e-10, "lam_med": 2484.312888910008}, {"file": "lwr10193.mxhi.gz", "nominal": 5.142234160968485e-12, "lam_med": 2952.1536232301487}, {"file": "lwr10194.mxhi.gz", "nominal": 5.068340660654817e-12, "lam_med": 2824.8583285730556}, {"file": "lwr10203.mxhi.gz", "nominal": 4.391676364329727e-12, "lam_med": 2808.3651006783157}, {"file": "lwr10210.mxhi.gz", "nominal": 4.169197140481832e-12, "lam_med": 2809.129439611596}, {"file": "lwr10224.mxhi.gz", "nominal": 4.426920106673847e-12, "lam_med": 2821.2307765613523}, {"file": "lwr10237.mxhi.gz", "nominal": 6.31949473567701e-12, "lam_med": 2672.6807399019235}, {"file": "lwr10238.mxhi.gz", "nominal": 6.466441327840345e-12, "lam_med": 2643.8111176381285}, {"file": "lwr10239.mxhi.gz", "nominal": 6.534016017868377e-12, "lam_med": 2705.4359681112396, "rec": [0.0, 0.23076923076923078, 0.6428571428571429, 0.5714285714285714, 0.7692307692307693, 0.6428571428571429], "tries": [14.0, 13.0, 14.0, 14.0, 13.0, 14.0]}, {"file": "lwr10268.mxhi.gz", "nominal": 4.0236610816718874e-12, "lam_med": 2808.9019565531903}, {"file": "lwr10304.mxhi.gz", "nominal": 3.780728130078814e-12, "lam_med": 2877.102604737526, "rec": [0.1, 0.9090909090909091, 0.8, 1.0, 0.9090909090909091, 1.0], "tries": [10.0, 11.0, 10.0, 11.0, 11.0, 11.0]}, {"file": "lwr10314.mxhi.gz", "nominal": 1.6704150560701761e-12, "lam_med": 2849.952522925175}, {"file": "lwr10423.mxhi.gz", "nominal": 8.613784153883954e-12, "lam_med": 2556.5118664674733}, {"file": "lwr10516.mxhi.gz", "nominal": 7.695207158630615e-11, "lam_med": 2740.30027769432}, {"file": "lwr10517.mxhi.gz", "nominal": 2.5599641372600247e-11, "lam_med": 2873.9310469534503, "rec": [0.0, 0.5625, 0.75, 0.875, 1.0, 1.0], "tries": [16.0, 16.0, 16.0, 16.0, 16.0, 16.0]}, {"file": "lwr10519.mxhi.gz", "nominal": 6.068106478029057e-12, "lam_med": 2890.743925088769}, {"file": "lwr10520.mxhi.gz", "nominal": 6.41805367310371e-12, "lam_med": 2823.236652412319, "rec": [0.11764705882352941, 0.8235294117647058, 0.75, 0.9411764705882353, 0.8823529411764706, 1.0], "tries": [17.0, 17.0, 16.0, 17.0, 17.0, 17.0]}, {"file": "lwr10605.mxhi.gz", "nominal": 1.0962585565855874e-11, "lam_med": 2775.3562429496787}, {"file": "lwr10606.mxhi.gz", "nominal": 2.9900896310413597e-12, "lam_med": 2808.0520856916855}, {"file": "lwr10687.mxhi.gz", "nominal": 4.809991159276135e-12, "lam_med": 2776.6642937858196}, {"file": "lwr10688.mxhi.gz", "nominal": 8.495027295212092e-11, "lam_med": 2766.7334993540876}, {"file": "lwr10690.mxhi.gz", "nominal": 2.6525337374837936e-12, "lam_med": 2817.204465002056}, {"file": "lwr10765.mxhi.gz", "nominal": 2.885567330683959e-12, "lam_med": 2823.7835782346397, "rec": [0.0, 0.6666666666666666, 0.7777777777777778, 0.7222222222222222, 0.9411764705882353, 0.8888888888888888], "tries": [18.0, 18.0, 18.0, 18.0, 17.0, 18.0]}, {"file": "lwr10794.mxhi.gz", "nominal": 6.934119983800187e-11, "lam_med": 2603.914293160253}, {"file": "lwr10795.mxhi.gz", "nominal": 2.5204093313924718e-11, "lam_med": 2873.1406765961215}, {"file": "lwr10798.mxhi.gz", "nominal": 2.453726189594998e-12, "lam_med": 2821.2248835747055}, {"file": "lwr10799.mxhi.gz", "nominal": 3.6804095273542346e-12, "lam_med": 2759.7318283392306, "rec": [0.0, 0.14285714285714285, 0.6, 0.7142857142857143, 0.9047619047619048, 0.85], "tries": [20.0, 21.0, 20.0, 21.0, 21.0, 20.0]}, {"file": "lwr10818.mxhi.gz", "nominal": 2.1442704344471037e-12, "lam_med": 2806.7545213424737}, {"file": "lwr10853.mxhi.gz", "nominal": 7.859038540170007e-11, "lam_med": 2739.259688203862}, {"file": "lwr10854.mxhi.gz", "nominal": 2.3285060773488596e-11, "lam_med": 2854.522385422075}, {"file": "lwr10856.mxhi.gz", "nominal": 2.3534847450375356e-12, "lam_med": 2804.770038521185}, {"file": "lwr10858.mxhi.gz", "nominal": 3.458021710717153e-12, "lam_med": 2763.018205924634}, {"file": "lwr10927.mxhi.gz", "nominal": 6.889268470106162e-11, "lam_med": 2617.432544866716}, {"file": "lwr10928.mxhi.gz", "nominal": 2.5671715814904895e-11, "lam_med": 2873.270128250287, "rec": [0.0, 0.4375, 0.5333333333333333, 0.8666666666666667, 1.0, 1.0], "tries": [16.0, 16.0, 15.0, 15.0, 16.0, 15.0]}, {"file": "lwr10978.mxhi.gz", "nominal": 1.3126638170295596e-11, "lam_med": 2734.4713955840016}, {"file": "lwr11021.mxhi.gz", "nominal": 9.084003736615707e-13, "lam_med": 2637.6655994346534}, {"file": "lwr11022.mxhi.gz", "nominal": 2.5949782562391567e-10, "lam_med": 2481.598705115772, "rec": [0.0, 0.46153846153846156, 0.8974358974358975, 0.9743589743589743, 1.0, 0.9743589743589743], "tries": [39.0, 39.0, 39.0, 39.0, 39.0, 39.0]}, {"file": "lwr11023.mxhi.gz", "nominal": 1.9274687139101742e-10, "lam_med": 2281.3502218584817, "rec": [0.0, 0.4489795918367347, 0.7551020408163265, 0.875, 0.9183673469387755, 0.8571428571428571], "tries": [48.0, 49.0, 49.0, 48.0, 49.0, 49.0]}, {"file": "lwr11024.mxhi.gz", "nominal": 1.551645019381945e-10, "lam_med": 2149.2554300782076}, {"file": "lwr11025.mxhi.gz", "nominal": 2.1007583497991757e-10, "lam_med": 2231.6574808233313}, {"file": "lwr11026.mxhi.gz", "nominal": 1.796282882834659e-10, "lam_med": 2136.6693504951236, "rec": [0.03125, 0.6875, 0.875, 0.875, 0.84375, 0.8125], "tries": [32.0, 32.0, 32.0, 32.0, 32.0, 32.0]}, {"file": "lwr11027.mxhi.gz", "nominal": 1.79933039751468e-10, "lam_med": 2195.2227156728345}, {"file": "lwr11028.mxhi.gz", "nominal": 1.854722510046924e-10, "lam_med": 2193.6659806885377}, {"file": "lwr11029.mxhi.gz", "nominal": 1.7819485309411636e-10, "lam_med": 2194.648741163446}, {"file": "lwr11402.mxhi.gz", "nominal": 1.8860443334511884e-12, "lam_med": 2806.7296449555924}, {"file": "lwr11403.mxhi.gz", "nominal": 3.230324467971667e-12, "lam_med": 2835.507859876886}, {"file": "lwr11553.mxhi.gz", "nominal": 3.1891484569422057e-12, "lam_med": 2835.1069592621825, "rec": [0.07142857142857142, 0.26666666666666666, 0.9333333333333333, 0.9333333333333333, 0.9333333333333333, 1.0], "tries": [14.0, 15.0, 15.0, 15.0, 15.0, 15.0]}, {"file": "lwr11565.mxhi.gz", "nominal": 2.747935231718277e-12, "lam_med": 2741.822021129118}, {"file": "lwr11572.mxhi.gz", "nominal": 5.762052479092561e-12, "lam_med": 2958.269028480174}, {"file": "lwr11579.mxhi.gz", "nominal": 2.326717099935643e-12, "lam_med": 2808.3601016100893}, {"file": "lwr11583.mxhi.gz", "nominal": 3.1422213835704453e-12, "lam_med": 2835.591587209263}, {"file": "lwr11587.mxhi.gz", "nominal": 5.340787288858043e-12, "lam_med": 2811.2630723066736}, {"file": "lwr11603.mxhi.gz", "nominal": 2.5023977598932614e-11, "lam_med": 2812.50059737405}, {"file": "lwr11625.mxhi.gz", "nominal": 2.3773242266295367e-12, "lam_med": 2799.6437730203243, "rec": [0.0, 0.5, 0.55, 0.85, 0.9, 0.95], "tries": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, {"file": "lwr11643.mxhi.gz", "nominal": 2.5663630167789206e-11, "lam_med": 2873.842246628088}, {"file": "lwr11644.mxhi.gz", "nominal": 2.1848502178104095e-12, "lam_med": 2799.852421926046}, {"file": "lwr11700.mxhi.gz", "nominal": 3.4697858925870343e-12, "lam_med": 2840.8611019275013}, {"file": "lwr11716.mxhi.gz", "nominal": 5.2082932511027506e-12, "lam_med": 2839.855281337086}, {"file": "lwr11717.mxhi.gz", "nominal": 9.301959448476882e-12, "lam_med": 2726.4679531510023}, {"file": "lwr11726.mxhi.gz", "nominal": 4.3050382884563846e-12, "lam_med": 2813.034082834913}, {"file": "lwr11731.mxhi.gz", "nominal": 4.344380249641023e-12, "lam_med": 2842.0562297027464}, {"file": "lwr11741.mxhi.gz", "nominal": 4.294520573963727e-12, "lam_med": 2809.5561303499226}, {"file": "lwr11752.mxhi.gz", "nominal": 7.148794982379562e-12, "lam_med": 2916.431050395815, "rec": [0.0, 0.7142857142857143, 0.7142857142857143, 1.0, 0.8571428571428571, 0.7142857142857143], "tries": [7.0, 7.0, 7.0, 7.0, 7.0, 7.0]}, {"file": "lwr11762.mxhi.gz", "nominal": 2.4493480662442947e-11, "lam_med": 2854.5418784959766}, {"file": "lwr11801.mxhi.gz", "nominal": 2.2615803754915936e-12, "lam_med": 2815.5770160687093}, {"file": "lwr11803.mxhi.gz", "nominal": 2.6132561957159664e-11, "lam_med": 2850.755074658274}, {"file": "lwr11874.mxhi.gz", "nominal": 7.660665820865716e-12, "lam_med": 2893.8666308279526}, {"file": "lwr11943.mxhi.gz", "nominal": 5.776683718738405e-12, "lam_med": 2646.4675501870015}, {"file": "lwr11944.mxhi.gz", "nominal": 6.2502488496794975e-12, "lam_med": 2671.18623165903}, {"file": "lwr11945.mxhi.gz", "nominal": 5.808199431915035e-12, "lam_med": 2640.095957168898}, {"file": "lwr11946.mxhi.gz", "nominal": 5.856237582525231e-12, "lam_med": 2640.6293609710324}, {"file": "lwr12241.mxhi.gz", "nominal": 2.0847045390075787e-12, "lam_med": 2799.365116792648}, {"file": "lwr12243.mxhi.gz", "nominal": 2.0117735398936265e-12, "lam_med": 2807.6982659943737, "rec": [0.0, 0.25, 0.75, 0.9, 0.95, 0.95], "tries": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, {"file": "lwr12332.mxhi.gz", "nominal": 2.64685172445711e-09, "lam_med": 2497.098660795528, "rec": [0.0, 0.7368421052631579, 0.9473684210526315, 0.9722222222222222, 1.0, 1.0], "tries": [38.0, 38.0, 38.0, 36.0, 38.0, 38.0]}, {"file": "lwr12333.mxhi.gz", "nominal": 4.892514831069151e-09, "lam_med": 2558.654705349475}, {"file": "lwr12551.mxhi.gz", "nominal": 4.219624806409779e-12, "lam_med": 2810.2239022355807}, {"file": "lwr12552.mxhi.gz", "nominal": 6.3522993953935454e-12, "lam_med": 2669.4756078952378}, {"file": "lwr12553.mxhi.gz", "nominal": 6.164643538683934e-12, "lam_med": 2679.279041783804}, {"file": "lwr12554.mxhi.gz", "nominal": 6.254937317804157e-12, "lam_med": 2640.9826564455634, "rec": [0.0, 0.3125, 0.4375, 0.6666666666666666, 0.8125, 0.625], "tries": [16.0, 16.0, 16.0, 15.0, 16.0, 16.0]}, {"file": "lwr12555.mxhi.gz", "nominal": 6.462264767508344e-12, "lam_med": 2676.6576120029313}, {"file": "lwr12556.mxhi.gz", "nominal": 6.060330165229264e-12, "lam_med": 2648.265928665728}, {"file": "lwr12557.mxhi.gz", "nominal": 6.3378392316315925e-12, "lam_med": 2644.2296647152452}, {"file": "lwr12558.mxhi.gz", "nominal": 6.116477268146043e-12, "lam_med": 2642.8672464497654, "rec": [0.0, 0.125, 0.5, 0.6, 0.5, 0.8125], "tries": [16.0, 16.0, 16.0, 15.0, 16.0, 16.0]}, {"file": "lwr12559.mxhi.gz", "nominal": 6.5962204252151915e-12, "lam_med": 2677.384937305086}, {"file": "lwr12562.mxhi.gz", "nominal": 4.047799796955744e-12, "lam_med": 2809.842062514741}, {"file": "lwr12570.mxhi.gz", "nominal": 5.263818519803722e-12, "lam_med": 2639.6149600348226}, {"file": "lwr12571.mxhi.gz", "nominal": 3.4547517504277673e-12, "lam_med": 2553.8803589404306}, {"file": "lwr12573.mxhi.gz", "nominal": 4.53108286325917e-12, "lam_med": 2821.249564375713}, {"file": "lwr12587.mxhi.gz", "nominal": 4.183822226779119e-12, "lam_med": 2835.389225968362}, {"file": "lwr12650.mxhi.gz", "nominal": 1.4580752821494607e-12, "lam_med": 2788.0033847799928}, {"file": "lwr12859.mxhi.gz", "nominal": 8.027581476351282e-11, "lam_med": 2763.483826558695}, {"file": "lwr12860.mxhi.gz", "nominal": 2.2247553887856096e-12, "lam_med": 2806.832304333338}, {"file": "lwr12906.mxhi.gz", "nominal": 3.335047615743e-11, "lam_med": 2924.8754979194964}, {"file": "lwr12907.mxhi.gz", "nominal": 2.7002337393945593e-11, "lam_med": 2913.2474820645803}, {"file": "lwr12908.mxhi.gz", "nominal": 7.899651453104107e-12, "lam_med": 2753.590662666484}, {"file": "lwr12909.mxhi.gz", "nominal": 3.4629311398478374e-12, "lam_med": 2573.3993333775456}, {"file": "lwr12915.mxhi.gz", "nominal": 4.0994749567759555e-12, "lam_med": 2769.580717922062}, {"file": "lwr12916.mxhi.gz", "nominal": 1.1522562922839021e-11, "lam_med": 2792.986403081394}, {"file": "lwr12917.mxhi.gz", "nominal": 3.3731338435457577e-12, "lam_med": 2849.9174015857716}, {"file": "lwr12929.mxhi.gz", "nominal": 2.910212665934551e-12, "lam_med": 2784.766743412068}, {"file": "lwr12930.mxhi.gz", "nominal": 2.3222402344558374e-12, "lam_med": 2784.7056771627585}, {"file": "lwr12931.mxhi.gz", "nominal": 7.378439584459326e-13, "lam_med": 2980.074455434704}, {"file": "lwr12932.mxhi.gz", "nominal": 5.181144938637015e-12, "lam_med": 2871.9780404554394, "rec": [0.0625, 0.375, 0.8125, 0.9375, 1.0, 1.0], "tries": [16.0, 16.0, 16.0, 16.0, 16.0, 16.0]}, {"file": "lwr12933.mxhi.gz", "nominal": 2.7962453774237564e-12, "lam_med": 2775.8381691954496}, {"file": "lwr12934.mxhi.gz", "nominal": 1.2555134865438995e-12, "lam_med": 2671.7121321975906, "rec": [0.0, 0.3333333333333333, 0.1111111111111111, 0.3333333333333333, 0.6666666666666666, 0.5555555555555556], "tries": [9.0, 9.0, 9.0, 9.0, 9.0, 9.0]}, {"file": "lwr12935.mxhi.gz", "nominal": 4.1813020780189476e-13, "lam_med": 2675.1484850436636}, {"file": "lwr12939.mxhi.gz", "nominal": 1.7925723965220075e-12, "lam_med": 2836.1012780009924}, {"file": "lwr12942.mxhi.gz", "nominal": 1.4727790359927412e-12, "lam_med": 2840.4706566375776}, {"file": "lwr12953.mxhi.gz", "nominal": 8.328624092761711e-13, "lam_med": 2708.296526152828}, {"file": "lwr12959.mxhi.gz", "nominal": 6.933912771413303e-12, "lam_med": 2784.532980435913}, {"file": "lwr12960.mxhi.gz", "nominal": 5.4846717801912746e-12, "lam_med": 2873.4316732833217}, {"file": "lwr12961.mxhi.gz", "nominal": 5.261676968589783e-12, "lam_med": 2925.9241421145734}, {"file": "lwr12962.mxhi.gz", "nominal": 1.8724871903101497e-12, "lam_med": 2834.204228750463, "rec": [0.058823529411764705, 0.47058823529411764, 0.6470588235294118, 0.9375, 0.8823529411764706, 0.9411764705882353], "tries": [17.0, 17.0, 17.0, 16.0, 17.0, 17.0]}, {"file": "lwr13023.mxhi.gz", "nominal": 2.7863804572570792e-12, "lam_med": 2812.876518974263, "rec": [0.05555555555555555, 0.3888888888888889, 0.8333333333333334, 0.9411764705882353, 0.8333333333333334, 0.9444444444444444], "tries": [18.0, 18.0, 18.0, 17.0, 18.0, 18.0]}, {"file": "lwr13051.mxhi.gz", "nominal": 3.2590029835873164e-12, "lam_med": 2864.95915540249}, {"file": "lwr13067.mxhi.gz", "nominal": 3.6546948733569495e-12, "lam_med": 2839.761203695529}, {"file": "lwr13074.mxhi.gz", "nominal": 5.017328126210241e-12, "lam_med": 2939.86989965008, "rec": [0.125, 0.75, 0.875, 1.0, 1.0, 1.0], "tries": [8.0, 8.0, 8.0, 7.0, 8.0, 8.0]}, {"file": "lwr13085.mxhi.gz", "nominal": 2.251684652143988e-12, "lam_med": 2848.5558003635333}, {"file": "lwr13087.mxhi.gz", "nominal": 3.1084475222433624e-12, "lam_med": 2839.807286409397}, {"file": "lwr13108.mxhi.gz", "nominal": 3.445264857051399e-12, "lam_med": 2873.297885743592}, {"file": "lwr13112.mxhi.gz", "nominal": 8.315749776682174e-11, "lam_med": 2770.431731461213, "rec": [0.0, 0.15789473684210525, 0.3888888888888889, 0.8421052631578947, 0.8421052631578947, 0.8421052631578947], "tries": [18.0, 19.0, 18.0, 19.0, 19.0, 19.0]}, {"file": "lwr13114.mxhi.gz", "nominal": 3.1112536684666474e-12, "lam_med": 2873.324173754253}, {"file": "lwr13192.mxhi.gz", "nominal": 8.354537088169856e-11, "lam_med": 2762.2821780374284}, {"file": "lwr13193.mxhi.gz", "nominal": 3.2420865200067116e-11, "lam_med": 2945.8537338798396}, {"file": "lwr13195.mxhi.gz", "nominal": 3.4108199570844015e-12, "lam_med": 2841.083335286833}, {"file": "lwr13209.mxhi.gz", "nominal": 8.25496197232118e-11, "lam_med": 2769.565176953953}, {"file": "lwr13210.mxhi.gz", "nominal": 2.612637292883738e-12, "lam_med": 2566.6804662621917}, {"file": "lwr13220.mxhi.gz", "nominal": 2.4680519569081916e-11, "lam_med": 2874.0270162503302, "rec": [0.0, 0.5333333333333333, 0.75, 1.0, 1.0, 1.0], "tries": [16.0, 15.0, 16.0, 16.0, 16.0, 16.0]}, {"file": "lwr13221.mxhi.gz", "nominal": 8.20809274486109e-12, "lam_med": 2762.238404363798}, {"file": "lwr13222.mxhi.gz", "nominal": 3.5648040398084634e-12, "lam_med": 2474.5763359488033}, {"file": "lwr13232.mxhi.gz", "nominal": 1.9600943225266723e-12, "lam_med": 2991.1973442009808}, {"file": "lwr13240.mxhi.gz", "nominal": 2.3705913683356537e-12, "lam_med": 2806.619971761876}, {"file": "lwr13242.mxhi.gz", "nominal": 1.1821807810620458e-12, "lam_med": 2893.6232692977956}, {"file": "lwr13254.mxhi.gz", "nominal": 5.192192710647952e-12, "lam_med": 2957.4375686354156, "rec": [0.0, 1.0, 0.7142857142857143, 1.0, 0.8571428571428571, 1.0], "tries": [7.0, 7.0, 7.0, 6.0, 7.0, 6.0]}, {"file": "lwr13266.mxhi.gz", "nominal": 2.2233684541430136e-12, "lam_med": 2805.9621141292096}, {"file": "lwr13267.mxhi.gz", "nominal": 7.682140313360191e-11, "lam_med": 2764.601293444152}, {"file": "lwr13271.mxhi.gz", "nominal": 3.0263883137684373e-12, "lam_med": 2835.54539191179}, {"file": "lwr13272.mxhi.gz", "nominal": 5.287496478770436e-12, "lam_med": 2941.667514921032}, {"file": "lwr13274.mxhi.gz", "nominal": 2.645591775328224e-12, "lam_med": 2830.4970601857444, "rec": [0.05263157894736842, 0.631578947368421, 0.7222222222222222, 0.9473684210526315, 0.9444444444444444, 0.9473684210526315], "tries": [19.0, 19.0, 18.0, 19.0, 18.0, 19.0]}, {"file": "lwr13276.mxhi.gz", "nominal": 7.865673744243791e-11, "lam_med": 2769.620628935715}, {"file": "lwr13277.mxhi.gz", "nominal": 2.556883077413689e-11, "lam_med": 2891.413895983958}, {"file": "lwr13283.mxhi.gz", "nominal": 3.0010012995718256e-12, "lam_med": 2834.48458965411}, {"file": "lwr13285.mxhi.gz", "nominal": 8.102108150180861e-11, "lam_med": 2768.4592791862615, "rec": [0.058823529411764705, 0.2777777777777778, 0.3888888888888889, 0.7222222222222222, 0.8333333333333334, 0.8823529411764706], "tries": [17.0, 18.0, 18.0, 18.0, 18.0, 17.0]}, {"file": "lwr13292.mxhi.gz", "nominal": 3.0764748692403698e-12, "lam_med": 2835.3644531842624, "rec": [0.0, 0.5333333333333333, 0.8666666666666667, 1.0, 1.0, 1.0], "tries": [15.0, 15.0, 15.0, 15.0, 15.0, 15.0]}, {"file": "lwr13293.mxhi.gz", "nominal": 4.708191874730662e-12, "lam_med": 2939.9526486761547, "rec": [0.0, 0.75, 0.75, 1.0, 1.0, 1.0], "tries": [7.0, 8.0, 8.0, 8.0, 7.0, 8.0]}, {"file": "lwr13294.mxhi.gz", "nominal": 1.1904883524081735e-12, "lam_med": 2893.593696085348}, {"file": "lwr13302.mxhi.gz", "nominal": 8.002321143625102e-11, "lam_med": 2771.0924317131467}, {"file": "lwr13303.mxhi.gz", "nominal": 2.3286382030165797e-11, "lam_med": 2851.353436315381}, {"file": "lwr13310.mxhi.gz", "nominal": 3.314853008308354e-12, "lam_med": 2835.528301921442, "rec": [0.0, 0.5333333333333333, 0.9333333333333333, 0.9285714285714286, 1.0, 0.9333333333333333], "tries": [14.0, 15.0, 15.0, 14.0, 15.0, 15.0]}, {"file": "lwr13311.mxhi.gz", "nominal": 1.3162420242914814e-12, "lam_med": 2909.7203815181056}, {"file": "lwr13313.mxhi.gz", "nominal": 4.778753493229643e-12, "lam_med": 2917.3203480142847}, {"file": "lwr13329.mxhi.gz", "nominal": 1.517506481178447e-12, "lam_med": 2784.272026574301}, {"file": "lwr13330.mxhi.gz", "nominal": 5.4887042471338614e-12, "lam_med": 2925.8046889684824}, {"file": "lwr13347.mxhi.gz", "nominal": 3.21703180967918e-12, "lam_med": 2835.388993686959}, {"file": "lwr13730.mxhi.gz", "nominal": 1.0749354635766746e-11, "lam_med": 2815.4919589224514}, {"file": "lwr13731.mxhi.gz", "nominal": 6.548105290448385e-12, "lam_med": 2678.7257595895085}, {"file": "lwr13732.mxhi.gz", "nominal": 6.543562835505383e-12, "lam_med": 2711.649497928851}, {"file": "lwr13733.mxhi.gz", "nominal": 6.389814130056208e-12, "lam_med": 2644.4359647356177, "rec": [0.0625, 0.25, 0.5625, 0.6875, 0.8, 0.8666666666666667], "tries": [16.0, 16.0, 16.0, 16.0, 15.0, 15.0]}, {"file": "lwr13734.mxhi.gz", "nominal": 6.671162215868362e-12, "lam_med": 2723.3849802719956}, {"file": "lwr13743.mxhi.gz", "nominal": 4.148063359023675e-12, "lam_med": 2813.088210665273}, {"file": "lwr13795.mxhi.gz", "nominal": 9.492461213045375e-12, "lam_med": 2784.7539781471855}, {"file": "lwr13799.mxhi.gz", "nominal": 5.4708916832826e-12, "lam_med": 2941.4533419943273}, {"file": "lwr13802.mxhi.gz", "nominal": 7.691588347843991e-12, "lam_med": 2784.7306587336657}, {"file": "lwr13806.mxhi.gz", "nominal": 5.4912714113523995e-12, "lam_med": 2941.497733477935}, {"file": "lwr13813.mxhi.gz", "nominal": 4.9910596749648785e-12, "lam_med": 2939.9521469053598}, {"file": "lwr13814.mxhi.gz", "nominal": 3.1432779133958793e-12, "lam_med": 2851.456756260355, "rec": [0.0, 0.3076923076923077, 1.0, 0.9285714285714286, 1.0, 1.0], "tries": [14.0, 13.0, 14.0, 14.0, 13.0, 14.0]}, {"file": "lwr13816.mxhi.gz", "nominal": 7.058413002302655e-12, "lam_med": 2893.9107947399543}, {"file": "lwr13817.mxhi.gz", "nominal": 5.931901611727622e-12, "lam_med": 2849.0179963987116, "rec": [0.0, 0.375, 0.8823529411764706, 0.8235294117647058, 0.9411764705882353, 0.9411764705882353], "tries": [17.0, 16.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwr13819.mxhi.gz", "nominal": 6.1515813031047355e-12, "lam_med": 2866.2292485362873}, {"file": "lwr13820.mxhi.gz", "nominal": 4.8619744961590126e-12, "lam_med": 2939.3503596302016}, {"file": "lwr13843.mxhi.gz", "nominal": 3.233013194151998e-12, "lam_med": 2838.672910904988}, {"file": "lwr13911.mxhi.gz", "nominal": 3.0176619770866627e-12, "lam_med": 2841.7988853130346, "rec": [0.0, 0.4375, 0.7333333333333333, 1.0, 0.9375, 1.0], "tries": [16.0, 16.0, 15.0, 16.0, 16.0, 16.0]}, {"file": "lwr13912.mxhi.gz", "nominal": 2.5498774333227425e-12, "lam_med": 2812.232116847368}, {"file": "lwr13913.mxhi.gz", "nominal": 7.780740966723058e-11, "lam_med": 2675.611411851769}, {"file": "lwr13944.mxhi.gz", "nominal": 3.169308152456548e-12, "lam_med": 2847.0725591440846}, {"file": "lwr13946.mxhi.gz", "nominal": 8.485935805046534e-11, "lam_med": 2769.3878712413684, "rec": [0.10526315789473684, 0.42105263157894735, 0.6111111111111112, 0.8421052631578947, 0.8947368421052632, 0.8947368421052632], "tries": [19.0, 19.0, 18.0, 19.0, 19.0, 19.0]}, {"file": "lwr13955.mxhi.gz", "nominal": 3.5460977387210696e-12, "lam_med": 2837.7754975646335}, {"file": "lwr13958.mxhi.gz", "nominal": 3.320017215509495e-11, "lam_med": 2945.1010278339695}, {"file": "lwr13985.mxhi.gz", "nominal": 2.3594940125912487e-12, "lam_med": 2809.533547682858}, {"file": "lwr13987.mxhi.gz", "nominal": 8.296417987391056e-11, "lam_med": 2770.104773837243}, {"file": "lwr14121.mxhi.gz", "nominal": 3.5093901504739926e-12, "lam_med": 2832.4160732859423}, {"file": "lwr14122.mxhi.gz", "nominal": 8.237491026250615e-11, "lam_med": 2765.6564349932837}, {"file": "lwr14146.mxhi.gz", "nominal": 8.15918518169922e-11, "lam_med": 2764.4327557952006, "rec": [0.0, 0.17647058823529413, 0.7058823529411765, 0.6470588235294118, 0.9411764705882353, 0.8823529411764706], "tries": [17.0, 17.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwr14596.mxhi.gz", "nominal": 4.1931795233965046e-12, "lam_med": 2811.88002863725}, {"file": "lwr14597.mxhi.gz", "nominal": 6.840808096242912e-12, "lam_med": 2910.0078193448594}, {"file": "lwr14606.mxhi.gz", "nominal": 7.227046150634624e-12, "lam_med": 2926.0248030170715}, {"file": "lwr14608.mxhi.gz", "nominal": 4.283159438745911e-12, "lam_med": 2810.611768663903}, {"file": "lwr14616.mxhi.gz", "nominal": 4.706319048939303e-12, "lam_med": 2833.1451460919698}, {"file": "lwr14619.mxhi.gz", "nominal": 4.239366180698278e-12, "lam_med": 2812.0143602647922}, {"file": "lwr14623.mxhi.gz", "nominal": 6.944431135702282e-12, "lam_med": 2909.9872334992283, "rec": [0.0, 0.5, 1.0, 1.0, 1.0, 0.75], "tries": [3.0, 4.0, 4.0, 4.0, 4.0, 4.0]}, {"file": "lwr14627.mxhi.gz", "nominal": 4.52945721176786e-12, "lam_med": 2835.611794977746}, {"file": "lwr14639.mxhi.gz", "nominal": 4.289294011162382e-12, "lam_med": 2811.06055087351}, {"file": "lwr14641.mxhi.gz", "nominal": 8.679132472351103e-12, "lam_med": 2784.5018028161726}, {"file": "lwr14650.mxhi.gz", "nominal": 6.6514236554503694e-12, "lam_med": 2893.718194186974}, {"file": "lwr14651.mxhi.gz", "nominal": 4.477556338292247e-12, "lam_med": 2966.771153263554, "rec": [0.0, 0.3, 0.6, 0.9, 1.0, 1.0], "tries": [10.0, 10.0, 10.0, 10.0, 10.0, 9.0]}, {"file": "lwr14659.mxhi.gz", "nominal": 7.381214381384156e-12, "lam_med": 2926.0832955498695}, {"file": "lwr14660.mxhi.gz", "nominal": 3.380151945114573e-12, "lam_med": 2905.4580610676594}, {"file": "lwr14661.mxhi.gz", "nominal": 4.686249642125453e-12, "lam_med": 2821.6715685980007}, {"file": "lwr14665.mxhi.gz", "nominal": 3.3295501006183318e-12, "lam_med": 2906.1911487860616}, {"file": "lwr14666.mxhi.gz", "nominal": 7.437595187819614e-12, "lam_med": 2910.0788975882106}, {"file": "lwr14674.mxhi.gz", "nominal": 4.704563798622241e-12, "lam_med": 2834.992178729181}, {"file": "lwr14676.mxhi.gz", "nominal": 7.035296820232582e-12, "lam_med": 2926.0299382629114}, {"file": "lwr14677.mxhi.gz", "nominal": 3.716577025932714e-12, "lam_med": 2913.308454607164}, {"file": "lwr14833.mxhi.gz", "nominal": 5.8926219322828906e-12, "lam_med": 2941.532097886371}, {"file": "lwr14842.mxhi.gz", "nominal": 9.512842365799389e-13, "lam_med": 2924.9537692194294}, {"file": "lwr14929.mxhi.gz", "nominal": 6.4272932837293005e-12, "lam_med": 2685.6198885746767, "rec": [0.0, 0.2, 0.5333333333333333, 0.7333333333333333, 0.9333333333333333, 0.9285714285714286], "tries": [15.0, 15.0, 15.0, 15.0, 15.0, 14.0]}, {"file": "lwr14930.mxhi.gz", "nominal": 6.725046191510768e-12, "lam_med": 2723.897598958758}, {"file": "lwr14931.mxhi.gz", "nominal": 6.532591807124624e-12, "lam_med": 2680.5115878931138, "rec": [0.0, 0.3333333333333333, 0.6428571428571429, 0.7333333333333333, 0.7333333333333333, 0.8], "tries": [15.0, 15.0, 14.0, 15.0, 15.0, 15.0]}, {"file": "lwr14932.mxhi.gz", "nominal": 6.733660222848338e-12, "lam_med": 2711.6014808760697}, {"file": "lwr14933.mxhi.gz", "nominal": 6.529178467616588e-12, "lam_med": 2710.9513705242352}, {"file": "lwr15382.mxhi.gz", "nominal": 6.043880007424768e-12, "lam_med": 2626.918080766719, "rec": [0.058823529411764705, 0.29411764705882354, 0.4117647058823529, 0.7647058823529411, 0.7058823529411765, 0.7647058823529411], "tries": [17.0, 17.0, 17.0, 17.0, 17.0, 17.0]}, {"file": "lwr15383.mxhi.gz", "nominal": 6.224490638771206e-12, "lam_med": 2642.6169157299078}, {"file": "lwr15384.mxhi.gz", "nominal": 5.815527707292338e-12, "lam_med": 2640.564969770835}, {"file": "lwr15385.mxhi.gz", "nominal": 6.092977667040542e-12, "lam_med": 2638.9300844257505}, {"file": "lwr15386.mxhi.gz", "nominal": 6.3661638427970585e-12, "lam_med": 2702.1493385707217}, {"file": "lwr15436.mxhi.gz", "nominal": 2.9860720301966774e-12, "lam_med": 2811.5050152807235}, {"file": "lwr15437.mxhi.gz", "nominal": 1.1769585079464024e-11, "lam_med": 2788.4820756171384}, {"file": "lwr15727.mxhi.gz", "nominal": 2.710539745574882e-12, "lam_med": 2843.998031751668}, {"file": "lwr15736.mxhi.gz", "nominal": 2.5113822991461862e-11, "lam_med": 2896.5931635455213}, {"file": "lwr15826.mxhi.gz", "nominal": 2.5418575936054315e-11, "lam_med": 2874.429885732086}, {"file": "lwr15863.mxhi.gz", "nominal": 2.8590048356402207e-12, "lam_med": 2817.6379649794594}, {"file": "lwr15962.mxhi.gz", "nominal": 7.961265605108864e-11, "lam_med": 2765.4347572539027, "rec": [0.1111111111111111, 0.3125, 0.5555555555555556, 0.7777777777777778, 1.0, 0.8333333333333334], "tries": [18.0, 16.0, 18.0, 18.0, 18.0, 18.0]}, {"file": "lwr16003.mxhi.gz", "nominal": 7.564445220885542e-11, "lam_med": 2235.289258104443}, {"file": "lwr16022.mxhi.gz", "nominal": 6.483211587512647e-11, "lam_med": 2800.0632186036046}, {"file": "lwr16023.mxhi.gz", "nominal": 2.7170238238204988e-11, "lam_med": 2905.0921626844956}, {"file": "lwr16048.mxhi.gz", "nominal": 8.08653865853845e-11, "lam_med": 2768.736587815208}, {"file": "lwr16049.mxhi.gz", "nominal": 2.4219873557488564e-11, "lam_med": 2873.9237330011756}, {"file": "lwr16061.mxhi.gz", "nominal": 6.999188341028371e-11, "lam_med": 2644.4396844116936}, {"file": "lwr16120.mxhi.gz", "nominal": 2.5211798082354593e-11, "lam_med": 2873.388057153702}, {"file": "lwr16311.mxhi.gz", "nominal": 1.0738441896101416e-12, "lam_med": 2784.344342433863}, {"file": "lwr16698.mxhi.gz", "nominal": 6.108024364911029e-12, "lam_med": 2685.6421873384384}, {"file": "lwr16699.mxhi.gz", "nominal": 6.048375952916892e-12, "lam_med": 2682.700412128108, "rec": [0.06666666666666667, 0.42857142857142855, 0.4, 0.6666666666666666, 0.7333333333333333, 0.7142857142857143], "tries": [15.0, 14.0, 15.0, 15.0, 15.0, 14.0]}, {"file": "lwr16700.mxhi.gz", "nominal": 1.2145177636289316e-11, "lam_med": 2798.599815620726, "rec": [0.05, 0.5, 0.47368421052631576, 0.631578947368421, 1.0, 1.0], "tries": [20.0, 20.0, 19.0, 19.0, 20.0, 20.0]}, {"file": "lwr16701.mxhi.gz", "nominal": 6.61169920711461e-12, "lam_med": 2721.6494524455293}, {"file": "lwr16702.mxhi.gz", "nominal": 6.689105503118064e-12, "lam_med": 2717.431988822809}, {"file": "lwr17575.mxhi.gz", "nominal": 6.4162046972030474e-12, "lam_med": 2682.261319147967}, {"file": "lwr17576.mxhi.gz", "nominal": 6.458009715932361e-12, "lam_med": 2632.961078295253}, {"file": "lwr17577.mxhi.gz", "nominal": 6.4439439357510695e-12, "lam_med": 2681.9738952425473, "rec": [0.0625, 0.25, 0.6, 0.8125, 0.75, 0.8], "tries": [16.0, 16.0, 15.0, 16.0, 16.0, 15.0]}, {"file": "lwr17578.mxhi.gz", "nominal": 6.271017705798414e-12, "lam_med": 2685.625863581189}, {"file": "lwr17876.mxhi.gz", "nominal": 5.955622222214491e-12, "lam_med": 2677.894345833827}, {"file": "lwr17877.mxhi.gz", "nominal": 6.0490700108296156e-12, "lam_med": 2650.6115818017934}, {"file": "lwr17878.mxhi.gz", "nominal": 5.732418381133982e-12, "lam_med": 2645.859736403268}, {"file": "lwr17879.mxhi.gz", "nominal": 6.084692763208095e-12, "lam_med": 2650.706545782018}, {"file": "lwr17924.mxhi.gz", "nominal": 5.83355734082175e-12, "lam_med": 2650.7354229183998}, {"file": "lwr17925.mxhi.gz", "nominal": 5.996371733074253e-12, "lam_med": 2734.3799368734317}, {"file": "lwr17926.mxhi.gz", "nominal": 5.798052790572355e-12, "lam_med": 2641.7825614279664}, {"file": "lwr18009.mxhi.gz", "nominal": 6.495034818263712e-12, "lam_med": 2722.047769244473}, {"file": "lwr18010.mxhi.gz", "nominal": 6.652052951107523e-12, "lam_med": 2725.5704421604246}, {"file": "lwr18011.mxhi.gz", "nominal": 6.418502576006296e-12, "lam_med": 2665.8079129044186}, {"file": "lwr18012.mxhi.gz", "nominal": 6.611246973947276e-12, "lam_med": 2686.9195447298134}, {"file": "lwr18320.mxhi.gz", "nominal": 4.762703698536692e-12, "lam_med": 2552.191469410306}, {"file": "lwr18335.mxhi.gz", "nominal": 5.767785683818487e-12, "lam_med": 2668.19366380067}, {"file": "lwr18336.mxhi.gz", "nominal": 6.017379217963505e-12, "lam_med": 2668.5791558381225}, {"file": "lwr18337.mxhi.gz", "nominal": 5.997963222227475e-12, "lam_med": 2695.5254711294115}, {"file": "lwr18338.mxhi.gz", "nominal": 6.135298692266076e-12, "lam_med": 2692.7929414605487}, {"file": "lwr18339.mxhi.gz", "nominal": 6.330949194091782e-12, "lam_med": 2718.124967494419}, {"file": "lwr18340.mxhi.gz", "nominal": 6.219280829646239e-12, "lam_med": 2678.624638491045}, {"file": "lwr18455.mxhi.gz", "nominal": 1.412226547740044e-09, "lam_med": 2672.481163969622}, {"file": "swp01188.mxhi.gz", "nominal": 7.089223203336705e-10, "lam_med": 1564.5895651910741}, {"file": "swp01317.mxhi.gz", "nominal": 4.325162945742554e-12, "lam_med": 1809.2696043504975}, {"file": "swp02402.mxhi.gz", "nominal": 6.261532545433114e-13, "lam_med": 1872.0979390521716, "rec": [0.0, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334], "tries": [6.0, 6.0, 6.0, 6.0, 6.0, 6.0]}, {"file": "swp02729.mxhi.gz", "nominal": 3.88879777660793e-09, "lam_med": 1681.3562614867217}, {"file": "swp02730.mxhi.gz", "nominal": 4.220760871696123e-11, "lam_med": 1273.0324688470282}, {"file": "swp02743.mxhi.gz", "nominal": 1.4155908839982311e-11, "lam_med": 1486.0567981075224}, {"file": "swp02747.mxhi.gz", "nominal": 8.75605612513362e-10, "lam_med": 1423.528425252838}, {"file": "swp02748.mxhi.gz", "nominal": 2.5889822055744704e-09, "lam_med": 1589.6553426411128}, {"file": "swp02749.mxhi.gz", "nominal": 1.147726316541689e-10, "lam_med": 1233.003568234871}, {"file": "swp02750.mxhi.gz", "nominal": 1.470007571280086e-11, "lam_med": 1531.5198666602557}, {"file": "swp02804.mxhi.gz", "nominal": 4.798553097073733e-12, "lam_med": 1741.5861499294388}, {"file": "swp03414.mxhi.gz", "nominal": 5.885274456973941e-10, "lam_med": 1729.929054352804, "rec": [0.0, 0.9473684210526315, 0.9444444444444444, 1.0, 0.9444444444444444, 1.0], "tries": [19.0, 19.0, 18.0, 19.0, 18.0, 19.0]}, {"file": "swp03416.mxhi.gz", "nominal": 5.791006244413108e-10, "lam_med": 1575.5386031418425, "rec": [0.029411764705882353, 0.6666666666666666, 0.9117647058823529, 1.0, 1.0, 1.0], "tries": [34.0, 33.0, 34.0, 34.0, 33.0, 33.0]}, {"file": "swp03426.mxhi.gz", "nominal": 5.174844983173619e-11, "lam_med": 1822.978670461042}, {"file": "swp03427.mxhi.gz", "nominal": 5.074204596387311e-12, "lam_med": 1429.3762711305653}, {"file": "swp03428.mxhi.gz", "nominal": 4.378646736082482e-12, "lam_med": 1411.217923243289}, {"file": "swp04814.mxhi.gz", "nominal": 4.179557641480622e-10, "lam_med": 1575.6375859470713}, {"file": "swp04815.mxhi.gz", "nominal": 3.2418631957660206e-10, "lam_med": 1530.5011639927347}, {"file": "swp05541.mxhi.gz", "nominal": 6.710439815280547e-13, "lam_med": 1843.3423193177587}, {"file": "swp05542.mxhi.gz", "nominal": 7.606770925190026e-13, "lam_med": 1832.926502742068}, {"file": "swp05543.mxhi.gz", "nominal": 1.8331631577149226e-12, "lam_med": 1904.7944257155916, "rec": [0.0, 0.75, 0.75, 0.75, 1.0, 1.0], "tries": [4.0, 4.0, 4.0, 4.0, 4.0, 4.0]}, {"file": "swp05544.mxhi.gz", "nominal": 4.9401713305200144e-12, "lam_med": 1227.660674000912}, {"file": "swp05545.mxhi.gz", "nominal": 1.8358611724404064e-12, "lam_med": 1903.9523207091725, "rec": [0.0, 0.75, 1.0, 1.0, 1.0, 1.0], "tries": [4.0, 4.0, 4.0, 4.0, 4.0, 4.0]}, {"file": "swp05546.mxhi.gz", "nominal": 1.5683342794958337e-12, "lam_med": 1894.7842523346665}, {"file": "swp05547.mxhi.gz", "nominal": 1.2515238123496426e-12, "lam_med": 1869.1272980909198}, {"file": "swp06477.mxhi.gz", "nominal": 4.844195938714468e-13, "lam_med": 1884.1816605382353}, {"file": "swp06478.mxhi.gz", "nominal": 4.797276424926632e-13, "lam_med": 1926.111177767828, "rec": [0.0, 0.75, 1.0, 1.0, 1.0, 1.0], "tries": [4.0, 4.0, 4.0, 4.0, 4.0, 4.0]}, {"file": "swp06479.mxhi.gz", "nominal": 3.998293804372971e-13, "lam_med": 1977.3486690706382, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0], "tries": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "swp06660.mxhi.gz", "nominal": 2.7780800003720905e-12, "lam_med": 1701.9887738631264}, {"file": "swp07972.mxhi.gz", "nominal": 1.3713240455291094e-12, "lam_med": 1519.5529975727763}, {"file": "swp08034.mxhi.gz", "nominal": 2.3527950712927867e-09, "lam_med": 1539.0456237643739}, {"file": "swp08035.mxhi.gz", "nominal": 4.372205195487461e-12, "lam_med": 1805.017036463952}, {"file": "swp08045.mxhi.gz", "nominal": 4.060911802817586e-10, "lam_med": 1560.2782446779654}, {"file": "swp08047.mxhi.gz", "nominal": 3.127795565758662e-09, "lam_med": 1579.164411633957, "rec": [0.0, 0.7058823529411765, 0.90625, 1.0, 1.0, 1.0], "tries": [35.0, 34.0, 32.0, 33.0, 35.0, 34.0]}, {"file": "swp08048.mxhi.gz", "nominal": 6.066608503954336e-12, "lam_med": 1820.2250611071347}, {"file": "swp09918.mxhi.gz", "nominal": 4.981834973469481e-10, "lam_med": 1574.3697632920841, "rec": [0.05714285714285714, 0.7058823529411765, 0.9117647058823529, 0.9705882352941176, 0.96875, 1.0], "tries": [35.0, 34.0, 34.0, 34.0, 32.0, 35.0]}, {"file": "swp10072.mxhi.gz", "nominal": 8.353159698307608e-10, "lam_med": 1413.5119186580257}, {"file": "swp10075.mxhi.gz", "nominal": 6.641297391922604e-12, "lam_med": 1527.0153445301219}, {"file": "swp10427.mxhi.gz", "nominal": 8.085706749340481e-10, "lam_med": 1630.8986233823675}, {"file": "swp11017.mxhi.gz", "nominal": 3.414305885025836e-13, "lam_med": 1808.2925427635669, "rec": [0.0, 0.0, 0.5, 0.5, 1.0, 1.0], "tries": [2.0, 2.0, 2.0, 2.0, 2.0, 2.0]}, {"file": "swp11213.mxhi.gz", "nominal": 4.230731598646842e-10, "lam_med": 1565.0105787988698, "rec": [0.02857142857142857, 0.6060606060606061, 0.9142857142857143, 0.9411764705882353, 1.0, 0.9714285714285714], "tries": [35.0, 33.0, 35.0, 34.0, 34.0, 35.0]}, {"file": "swp13553.mxhi.gz", "nominal": 3.9547001977446676e-13, "lam_med": 1226.2258329925926}, {"file": "swp13643.mxhi.gz", "nominal": 1.8081857596452957e-13, "lam_med": 1912.420343715146}, {"file": "swp14367.mxhi.gz", "nominal": 8.686856235748408e-13, "lam_med": 1867.4926127501903}, {"file": "swp14416.mxhi.gz", "nominal": 1.6508203533855693e-12, "lam_med": 1540.3535772704863}, {"file": "swp14417.mxhi.gz", "nominal": 7.884035513965104e-11, "lam_med": 1667.6753249882665}, {"file": "swp14418.mxhi.gz", "nominal": 2.4820114078661412e-11, "lam_med": 1459.688807406938}, {"file": "swp14419.mxhi.gz", "nominal": 1.3248168639545257e-11, "lam_med": 1399.0134027884405}, {"file": "swp14420.mxhi.gz", "nominal": 1.3980867649056037e-11, "lam_med": 1398.4144638893029}, {"file": "swp14421.mxhi.gz", "nominal": 4.408389443171277e-11, "lam_med": 1595.01916516437}, {"file": "swp14422.mxhi.gz", "nominal": 1.3442525585721024e-11, "lam_med": 1398.2344205677725}, {"file": "swp14792.mxhi.gz", "nominal": 6.812915771296196e-13, "lam_med": 1213.5281367335683}, {"file": "swp16325.mxhi.gz", "nominal": 1.2434344509439003e-13, "lam_med": 1870.8826000333877}, {"file": "swp16513.mxhi.gz", "nominal": 9.354480257790869e-11, "lam_med": 1705.3705756655422, "rec": [0.05, 0.4, 0.45, 0.8421052631578947, 1.0, 0.9473684210526315], "tries": [20.0, 20.0, 20.0, 19.0, 20.0, 19.0]}, {"file": "swp20048.mxhi.gz", "nominal": 2.728636630527963e-12, "lam_med": 1227.302451818845}, {"file": "swp20049.mxhi.gz", "nominal": 8.049891965805277e-11, "lam_med": 1726.2905430688556}, {"file": "swp21192.mxhi.gz", "nominal": 4.724652896829705e-13, "lam_med": 1224.444512170569}, {"file": "swp21193.mxhi.gz", "nominal": 2.982184963844086e-10, "lam_med": 1844.9525303279784}, {"file": "swp21194.mxhi.gz", "nominal": 4.407023573974761e-12, "lam_med": 1723.905170631791}, {"file": "swp21195.mxhi.gz", "nominal": 9.365684463353187e-12, "lam_med": 1759.0270708328565}, {"file": "swp21197.mxhi.gz", "nominal": 2.7800859562616523e-10, "lam_med": 1854.689023257919}, {"file": "swp21462.mxhi.gz", "nominal": 1.4252731937881768e-13, "lam_med": 1924.2352927099478}, {"file": "swp21463.mxhi.gz", "nominal": 4.620215556723566e-11, "lam_med": 1833.2559878213942}, {"file": "swp22223.mxhi.gz", "nominal": 1.1790409057621833e-13, "lam_med": 1923.2967900766203}, {"file": "swp22224.mxhi.gz", "nominal": 3.107770216042993e-10, "lam_med": 1844.9424962227731}, {"file": "swp22244.mxhi.gz", "nominal": 1.2039201648660285e-13, "lam_med": 1925.2488099430145}, {"file": "swp22245.mxhi.gz", "nominal": 4.3830785126156016e-11, "lam_med": 1831.9041350292218}, {"file": "swp22248.mxhi.gz", "nominal": 8.954082487679991e-11, "lam_med": 1705.4042462709094}, {"file": "swp22693.mxhi.gz", "nominal": 2.757475415563262e-12, "lam_med": 1636.9959504831622, "rec": [0.0, 0.92, 1.0, 1.0, 0.9629629629629629, 1.0], "tries": [28.0, 25.0, 25.0, 27.0, 27.0, 26.0]}, {"file": "swp22694.mxhi.gz", "nominal": 2.7769036573704996e-12, "lam_med": 1632.4644582435453}, {"file": "swp23043.mxhi.gz", "nominal": 4.426823458165916e-12, "lam_med": 1253.0155728775303}, {"file": "swp23900.mxhi.gz", "nominal": 5.620186520587556e-13, "lam_med": 1225.3487652545755}, {"file": "swp24503.mxhi.gz", "nominal": 6.297782094056634e-10, "lam_med": 1589.9170060296067}, {"file": "swp24504.mxhi.gz", "nominal": 1.154030564182524e-09, "lam_med": 1652.1737134465204, "rec": [0.0, 0.8461538461538461, 1.0, 1.0, 1.0, 1.0], "tries": [25.0, 26.0, 24.0, 25.0, 26.0, 26.0]}, {"file": "swp24530.mxhi.gz", "nominal": 9.414916975882996e-13, "lam_med": 1923.5272464741722}, {"file": "swp25354.mxhi.gz", "nominal": 1.0273833005445227e-10, "lam_med": 1696.1072681763462}, {"file": "swp25927.mxhi.gz", "nominal": 1.3824244716746927e-11, "lam_med": 1852.2366768303332, "rec": [0.0, 0.3333333333333333, 0.3333333333333333, 0.6666666666666666, 0.7777777777777778, 0.8888888888888888], "tries": [9.0, 9.0, 9.0, 9.0, 9.0, 9.0]}, {"file": "swp25928.mxhi.gz", "nominal": 6.948452711050094e-12, "lam_med": 1784.3090334204821, "rec": [0.0, 0.0, 0.42857142857142855, 0.42857142857142855, 0.5714285714285714, 0.8571428571428571], "tries": [7.0, 7.0, 7.0, 7.0, 7.0, 7.0]}, {"file": "swp26465.mxhi.gz", "nominal": 1.2222318022359606e-12, "lam_med": 1375.778761637499}, {"file": "swp26467.mxhi.gz", "nominal": 1.8644042006097914e-13, "lam_med": 1805.675077830486}, {"file": "swp26673.mxhi.gz", "nominal": 9.320955627595118e-11, "lam_med": 1706.1261472304539}, {"file": "swp26917.mxhi.gz", "nominal": 1.187095977509421e-12, "lam_med": 1707.3467147123113}, {"file": "swp27141.mxhi.gz", "nominal": 7.331283271786855e-13, "lam_med": 1224.1833797811805}, {"file": "swp27344.mxhi.gz", "nominal": 7.615947178381459e-13, "lam_med": 1219.394682713537, "rec": [0.0, 1.0, 0.5, 0.5, 1.0, 1.0], "tries": [2.0, 2.0, 2.0, 2.0, 2.0, 2.0]}, {"file": "swp27817.mxhi.gz", "nominal": 8.3485295874633e-11, "lam_med": 1737.5310091253555}, {"file": "swp28508.mxhi.gz", "nominal": 4.853098219586636e-13, "lam_med": 1219.5519838431142}, {"file": "swp28509.mxhi.gz", "nominal": 8.003485177483062e-11, "lam_med": 1729.2311504914273}, {"file": "swp28525.mxhi.gz", "nominal": 4.967142916569443e-13, "lam_med": 1224.0412683689365, "rec": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "tries": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "swp28526.mxhi.gz", "nominal": 7.85774387766346e-11, "lam_med": 1727.8588812141618}, {"file": "swp30200.mxhi.gz", "nominal": 1.199015645530892e-12, "lam_med": 1224.3080186058705}, {"file": "swp30213.mxhi.gz", "nominal": 7.816616522019241e-13, "lam_med": 1782.2621774731733, "rec": [0.0, 0.5, 0.5, 0.6666666666666666, 0.5, 0.75], "tries": [4.0, 4.0, 4.0, 3.0, 4.0, 4.0]}, {"file": "swp31045.mxhi.gz", "nominal": 3.029330597747883e-12, "lam_med": 1378.6125579232857}, {"file": "swp31046.mxhi.gz", "nominal": 4.1738364093392284e-12, "lam_med": 1324.4102332577195}, {"file": "swp31247.mxhi.gz", "nominal": 6.909544757206658e-12, "lam_med": 1453.2718819209535}, {"file": "swp31815.mxhi.gz", "nominal": 3.1332336756403725e-09, "lam_med": 1579.3938412123423}, {"file": "swp32467.mxhi.gz", "nominal": 3.6484116458499347e-09, "lam_med": 1562.975215142958, "rec": [0.05555555555555555, 0.40540540540540543, 0.8611111111111112, 0.9705882352941176, 1.0, 1.0], "tries": [36.0, 37.0, 36.0, 34.0, 35.0, 36.0]}, {"file": "swp32617.mxhi.gz", "nominal": 2.071128813194873e-09, "lam_med": 1509.7762584272418, "rec": [0.058823529411764705, 0.24242424242424243, 0.59375, 0.9032258064516129, 0.90625, 0.9705882352941176], "tries": [34.0, 33.0, 32.0, 31.0, 32.0, 34.0]}, {"file": "swp32870.mxhi.gz", "nominal": 8.092504935371266e-10, "lam_med": 1563.5610550892875}, {"file": "swp32887.mxhi.gz", "nominal": 7.592514051772931e-10, "lam_med": 1558.197478279374}, {"file": "swp32905.mxhi.gz", "nominal": 6.026095130972923e-13, "lam_med": 1222.644839178056}, {"file": "swp33345.mxhi.gz", "nominal": 1.6081682708358624e-11, "lam_med": 1823.956717062409}, {"file": "swp33633.mxhi.gz", "nominal": 8.038356756238355e-10, "lam_med": 1563.6327797707102}, {"file": "swp36619.mxhi.gz", "nominal": 8.415006836200007e-12, "lam_med": 1441.375585071897}, {"file": "swp37839.mxhi.gz", "nominal": 1.8630780648426316e-11, "lam_med": 1800.2167974930642}, {"file": "swp38411.mxhi.gz", "nominal": 7.640817052381255e-10, "lam_med": 1557.8896120495283}, {"file": "swp42124.mxhi.gz", "nominal": 9.86966677060289e-11, "lam_med": 1693.9290842223743}, {"file": "swp42521.mxhi.gz", "nominal": 7.640634964686641e-10, "lam_med": 1563.722197677556}, {"file": "swp43429.mxhi.gz", "nominal": 1.6357732448697837e-11, "lam_med": 1811.0831505256422}, {"file": "swp45285.mxhi.gz", "nominal": 8.036748417929047e-10, "lam_med": 1573.4329845482403}, {"file": "swp45302.mxhi.gz", "nominal": 9.089820439507286e-13, "lam_med": 1817.6227785893507}, {"file": "swp45497.mxhi.gz", "nominal": 8.610355819834619e-13, "lam_med": 1852.4407304031183}, {"file": "swp46701.mxhi.gz", "nominal": 1.5675791898131845e-12, "lam_med": 1431.3467114334285}, {"file": "swp47049.mxhi.gz", "nominal": 1.6877906015047174e-12, "lam_med": 1976.0180514056017}, {"file": "swp47982.mxhi.gz", "nominal": 6.258396080479278e-11, "lam_med": 1726.0300243089846}, {"file": "swp49143.mxhi.gz", "nominal": 1.548297228064708e-12, "lam_med": 1540.0899323809867}, {"file": "swp49144.mxhi.gz", "nominal": 1.6029847784380539e-12, "lam_med": 1540.2309820014857, "rec": [0.05128205128205128, 0.8648648648648649, 1.0, 0.9743589743589743, 0.972972972972973, 1.0], "tries": [39.0, 37.0, 39.0, 39.0, 37.0, 38.0]}, {"file": "swp49190.mxhi.gz", "nominal": 1.658893661730425e-12, "lam_med": 1545.8439217110626}, {"file": "swp49191.mxhi.gz", "nominal": 1.5838076692599447e-12, "lam_med": 1545.8769164765092}, {"file": "swp49192.mxhi.gz", "nominal": 1.4882649487621363e-12, "lam_med": 1545.9886225566459}, {"file": "swp49225.mxhi.gz", "nominal": 1.3169566106364864e-10, "lam_med": 1204.8442761553226}]} \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_limits_starcat.json b/papers/uv_lasers/data/uv_limits_starcat.json new file mode 100644 index 0000000000000000000000000000000000000000..5d68c97e5f6bc9db9f3e643c870bf48d3280d000 --- /dev/null +++ b/papers/uv_lasers/data/uv_limits_starcat.json @@ -0,0 +1 @@ +{"set": "starcat", "mult": [1.0, 1.5, 2.0, 3.0, 5.0, 8.0], "recovery": [0.03166666666666667, 0.551111111111111, 0.7355555555555557, 0.8055555555555555, 0.8688888888888889, 0.9044444444444444], "n_injected": 300, "plateau": 0.9044444444444444, "m50": 1.404812834224599, "m90": 3.266666666666667, "exposures": [{"file": "h_o61s01010_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.067157540964873e-15, "lam_med": 1390.9508182486782, "ra": 154.901247, "dec": 19.869906}, {"file": "h_o61s01020_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.9271606620379616e-15, "lam_med": 1391.1703176994429, "ra": 154.901247, "dec": 19.869906}, {"file": "h_o61s01030_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.0589625362981363e-15, "lam_med": 1391.293242763195, "ra": 154.901246, "dec": 19.869906}, {"file": "h_o61s01040_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.0515498360618494e-15, "lam_med": 1391.0804075953165, "ra": 154.901246, "dec": 19.869906}, {"file": "h_o61s01050_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.1225672256518466e-15, "lam_med": 1391.2120586042497, "ra": 154.901246, "dec": 19.869906}, {"file": "h_o61s02010_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.2187608761222856e-15, "lam_med": 1393.2570041748468, "ra": 154.901245, "dec": 19.869907}, {"file": "h_o61s02020_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.2005167307656237e-15, "lam_med": 1392.2531599306142, "ra": 154.901245, "dec": 19.869907}, {"file": "h_o61s02030_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.1536006274522077e-15, "lam_med": 1392.558320288479, "ra": 154.901245, "dec": 19.869907, "rec": [0.16666666666666666, 0.5, 1.0, 0.8333333333333334, 1.0, 0.8333333333333334]}, {"file": "h_o61s02040_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.1436527119360733e-15, "lam_med": 1393.3270571154496, "ra": 154.901245, "dec": 19.869907}, {"file": "h_o61s02050_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.3063993820595595e-15, "lam_med": 1393.3767308070019, "ra": 154.901245, "dec": 19.869907}, {"file": "h_o61s03010_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.9479177568396086e-15, "lam_med": 1391.3138888538524, "ra": 154.901244, "dec": 19.869907, "rec": [0.0, 0.8333333333333334, 0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o61s03020_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.8479036506432924e-15, "lam_med": 1391.542015825314, "ra": 154.901244, "dec": 19.869907, "rec": [0.16666666666666666, 0.5, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o61s03030_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.1001276174199765e-15, "lam_med": 1391.134331846073, "ra": 154.901244, "dec": 19.869907}, {"file": "h_o61s03040_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.07353703821312e-15, "lam_med": 1391.0266361329157, "ra": 154.901244, "dec": 19.869907}, {"file": "h_o61s03050_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.1228104427625792e-15, "lam_med": 1391.3653302908544, "ra": 154.901244, "dec": 19.869907}, {"file": "h_o61s04010_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.432330659376301e-15, "lam_med": 1391.9509618899242, "ra": 154.901243, "dec": 19.869907}, {"file": "h_o61s04020_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.788326748685174e-15, "lam_med": 1391.9564372414773, "ra": 154.901243, "dec": 19.869907, "rec": [0.0, 0.6666666666666666, 0.5, 1.0, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o61s04030_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.936823031576159e-15, "lam_med": 1392.16077056443, "ra": 154.901242, "dec": 19.869907}, {"file": "h_o61s04040_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.022195943670481e-15, "lam_med": 1392.2159492418077, "ra": 154.901242, "dec": 19.869907}, {"file": "h_o61s04050_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.126493292601219e-15, "lam_med": 1391.9325925853439, "ra": 154.901242, "dec": 19.869907}, {"file": "h_o6jg01010_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.346829069109965e-15, "lam_med": 1389.9332105057451, "ra": 154.900875, "dec": 19.869882}, {"file": "h_o6jg01020_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.7824836668448962e-15, "lam_med": 1389.910782719215, "ra": 154.900875, "dec": 19.869882}, {"file": "h_o6jg01030_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.9762425554367787e-15, "lam_med": 1389.8678077012164, "ra": 154.900875, "dec": 19.869882}, {"file": "h_o6jg01040_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.1348945908206905e-15, "lam_med": 1389.817599595527, "ra": 154.900875, "dec": 19.869882}, {"file": "h_o6jg02010_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 2.379745673404153e-15, "lam_med": 1390.3240781142033, "ra": 154.900875, "dec": 19.869882}, {"file": "h_o6jg02020_spc.fits", "obj": "AD-LEO", "mode": "E140M", "nominal": 1.8188763807765676e-15, "lam_med": 1390.6004408282452, "ra": 154.900875, "dec": 19.869882, "rec": [0.0, 0.5, 1.0, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o6ky01010_spc.fits", "obj": "AG-DRA", "mode": "E140M", "nominal": 1.0071580576391956e-14, "lam_med": 1396.2154380665831, "ra": 240.420917, "dec": 66.802917}, {"file": "h_o6ky01020_spc.fits", "obj": "AG-DRA", "mode": "E140M", "nominal": 1.1990643363969437e-14, "lam_med": 1396.425924411932, "ra": 240.420917, "dec": 66.802917}, {"file": "h_o6ky01030_spc.fits", "obj": "AG-DRA", "mode": "E230M", "nominal": 1.5082255996136716e-14, "lam_med": 2661.360236499544, "ra": 240.420917, "dec": 66.802917}, {"file": "h_o6ky01040_spc.fits", "obj": "AG-DRA", "mode": "E230M", "nominal": 3.791179367998661e-14, "lam_med": 1950.3062599553627, "ra": 240.420917, "dec": 66.802917}, {"file": "h_o6ky01050_spc.fits", "obj": "AG-DRA", "mode": "E230M", "nominal": 1.2988891854299749e-14, "lam_med": 1950.3062541580725, "ra": 240.420917, "dec": 66.802917}, {"file": "h_o50151010_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 7.834065667401134e-15, "lam_med": 1389.3212838369182, "ra": 343.8245, "dec": -3.177333, "rec": [0.16666666666666666, 1.0, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o50151020_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 7.267894554020077e-15, "lam_med": 1389.5077918628494, "ra": 343.8245, "dec": -3.177333, "rec": [0.0, 0.5, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o50151030_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 6.633767353467295e-15, "lam_med": 1389.3348808443088, "ra": 343.8245, "dec": -3.177333}, {"file": "h_o50151040_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 7.390631944607552e-15, "lam_med": 1389.3781167378181, "ra": 343.8245, "dec": -3.177333}, {"file": "h_o50152010_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 7.890947481519606e-15, "lam_med": 1389.4622502935529, "ra": 343.8245, "dec": -3.177333}, {"file": "h_o50152020_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 7.197528094488928e-15, "lam_med": 1389.337401502964, "ra": 343.8245, "dec": -3.177333}, {"file": "h_o50152030_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 6.959708405114696e-15, "lam_med": 1388.9795284176705, "ra": 343.8245, "dec": -3.177333}, {"file": "h_o50152040_spc.fits", "obj": "AO-PSC", "mode": "E140M", "nominal": 7.706163908448568e-15, "lam_med": 1388.9465609882513, "ra": 343.8245, "dec": -3.177333}, {"file": "h_o63502010_spc.fits", "obj": "BG-PHE", "mode": "E140M", "nominal": 5.29924940262802e-14, "lam_med": 1390.8833961381597, "ra": 12.255458, "dec": -56.097028}, {"file": "h_o5b616010_spc.fits", "obj": "BW-SCL", "mode": "E140M", "nominal": 2.7444928628249516e-15, "lam_med": 1397.154141367595, "ra": 358.252917, "dec": -38.862656}, {"file": "h_o5ci01010_spc.fits", "obj": "CI-CAM", "mode": "E140M", "nominal": 2.4580339961229588e-15, "lam_med": 1391.327439236797, "ra": 64.925667, "dec": 55.999472}, {"file": "h_o5ci01020_spc.fits", "obj": "CI-CAM", "mode": "E140M", "nominal": 2.3622191943504532e-15, "lam_med": 1390.3158719581297, "ra": 64.925667, "dec": 55.999472}, {"file": "h_o5ci01030_spc.fits", "obj": "CI-CAM", "mode": "E140M", "nominal": 2.3942911238777017e-15, "lam_med": 1389.8923796882032, "ra": 64.925667, "dec": 55.999472}, {"file": "h_o5ci01040_spc.fits", "obj": "CI-CAM", "mode": "E230M", "nominal": 3.085146852367334e-15, "lam_med": 2228.57503811839, "ra": 64.925667, "dec": 55.999472}, {"file": "h_o5cf03010_spc.fits", "obj": "CY-TAU", "mode": "E230M", "nominal": 1.049926269057031e-14, "lam_med": 1950.1629373068138, "ra": 64.390958, "dec": 28.346472}, {"file": "h_o5cf03020_spc.fits", "obj": "CY-TAU", "mode": "E230M", "nominal": 3.730997321109775e-15, "lam_med": 2661.325327643943, "ra": 64.390958, "dec": 28.346472}, {"file": "h_o5cf03030_spc.fits", "obj": "CY-TAU", "mode": "E230M", "nominal": 6.280943227035385e-15, "lam_med": 2661.3251464263008, "ra": 64.390958, "dec": 28.346472}, {"file": "h_o5cf03040_spc.fits", "obj": "CY-TAU", "mode": "E140M", "nominal": 2.123066839304936e-15, "lam_med": 1397.715807953697, "ra": 64.390958, "dec": 28.346472}, {"file": "h_o5cf03050_spc.fits", "obj": "CY-TAU", "mode": "E140M", "nominal": 1.840238463073162e-15, "lam_med": 1397.961296675832, "ra": 64.390958, "dec": 28.346472}, {"file": "h_o5e307010_spc.fits", "obj": "DG-TAU", "mode": "E140M", "nominal": 2.3561955058803644e-15, "lam_med": 1398.7195370094378, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o5e307020_spc.fits", "obj": "DG-TAU", "mode": "E140M", "nominal": 1.6576717738588853e-15, "lam_med": 1398.481781346229, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o5e307040_spc.fits", "obj": "DG-TAU", "mode": "E140M", "nominal": 2.5416872684682524e-15, "lam_med": 1398.3048868956957, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o5e307050_spc.fits", "obj": "DG-TAU", "mode": "E140M", "nominal": 1.9112663868229856e-15, "lam_med": 1398.437582956717, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o5e307060_spc.fits", "obj": "DG-TAU", "mode": "E140M", "nominal": 2.288548512645756e-15, "lam_med": 1397.3257099984007, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o63l03010_spc.fits", "obj": "DG-TAU", "mode": "E230M", "nominal": 2.2760861640689183e-15, "lam_med": 2660.9350845713006, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o63l03020_spc.fits", "obj": "DG-TAU", "mode": "E230M", "nominal": 2.045147310675951e-15, "lam_med": 2660.9415477009015, "ra": 66.769625, "dec": 26.104667, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o63l03030_spc.fits", "obj": "DG-TAU", "mode": "E230M", "nominal": 2.0334557167457386e-15, "lam_med": 2660.9465376178396, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o63l03040_spc.fits", "obj": "DG-TAU", "mode": "E230M", "nominal": 2.0240204439739204e-15, "lam_med": 2660.9501846833127, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o8nz11010_spc.fits", "obj": "DG-TAU", "mode": "E230M", "nominal": 1.6921380055863077e-15, "lam_med": 2661.246930331018, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o8nz11020_spc.fits", "obj": "DG-TAU", "mode": "E230M", "nominal": 1.549393038833227e-15, "lam_med": 2661.272080464656, "ra": 66.769625, "dec": 26.104667}, {"file": "h_o66v04010_spc.fits", "obj": "DN-LEO", "mode": "E140M", "nominal": 1.8515178227318745e-13, "lam_med": 1396.272593480171, "ra": 159.730167, "dec": 10.063556}, {"file": "h_o6mb01010_spc.fits", "obj": "DN-LEO", "mode": "E230M", "nominal": 2.5917351263054456e-14, "lam_med": 2218.608121373538, "ra": 159.730127, "dec": 10.063546}, {"file": "h_o6mb01020_spc.fits", "obj": "DN-LEO", "mode": "E230M", "nominal": 2.0654794599811766e-14, "lam_med": 2218.5441390176447, "ra": 159.730127, "dec": 10.063546}, {"file": "h_o5cf02010_spc.fits", "obj": "DR-TAU", "mode": "E230M", "nominal": 1.0464416565129256e-14, "lam_med": 1950.2845922795088, "ra": 71.775917, "dec": 16.978722}, {"file": "h_o5cf02020_spc.fits", "obj": "DR-TAU", "mode": "E230M", "nominal": 4.722820712103493e-15, "lam_med": 2662.5203612522128, "ra": 71.775917, "dec": 16.978722}, {"file": "h_o5cf02030_spc.fits", "obj": "DR-TAU", "mode": "E140M", "nominal": 1.8602150159131887e-15, "lam_med": 1396.3434834403674, "ra": 71.775917, "dec": 16.978722}, {"file": "h_o5cf02040_spc.fits", "obj": "DR-TAU", "mode": "E140M", "nominal": 1.9758645528409205e-15, "lam_med": 1396.6210524721168, "ra": 71.775917, "dec": 16.978722}, {"file": "h_o63l04010_spc.fits", "obj": "DR-TAU", "mode": "E230M", "nominal": 2.699557153039081e-15, "lam_med": 2660.9703055648797, "ra": 71.775917, "dec": 16.978722, "rec": [0.0, 0.16666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o63l04020_spc.fits", "obj": "DR-TAU", "mode": "E230M", "nominal": 2.487647159830533e-15, "lam_med": 2660.9642619481974, "ra": 71.775917, "dec": 16.978722}, {"file": "h_o5cf01010_spc.fits", "obj": "DS-TAU", "mode": "E230M", "nominal": 1.1543551756713724e-14, "lam_med": 1950.2710309295962, "ra": 71.951875, "dec": 29.420111}, {"file": "h_o5cf01020_spc.fits", "obj": "DS-TAU", "mode": "E230M", "nominal": 4.855164569659823e-15, "lam_med": 2662.5085596660756, "ra": 71.951875, "dec": 29.420111}, {"file": "h_o5cf01030_spc.fits", "obj": "DS-TAU", "mode": "E140M", "nominal": 2.01402304124665e-15, "lam_med": 1396.6544276479979, "ra": 71.951875, "dec": 29.420111}, {"file": "h_o5cf01040_spc.fits", "obj": "DS-TAU", "mode": "E140M", "nominal": 2.004359765973552e-15, "lam_med": 1396.7629704947065, "ra": 71.951875, "dec": 29.420111}, {"file": "h_o63l08010_spc.fits", "obj": "DS-TAU", "mode": "E230M", "nominal": 2.448847490605761e-15, "lam_med": 2660.935914067958, "ra": 71.951875, "dec": 29.420111}, {"file": "h_o63l08020_spc.fits", "obj": "DS-TAU", "mode": "E230M", "nominal": 2.1969915350902366e-15, "lam_med": 2660.9411730235734, "ra": 71.951875, "dec": 29.420111, "rec": [0.0, 0.0, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o5b609010_spc.fits", "obj": "EF-PEG", "mode": "E140M", "nominal": 2.030155115707322e-15, "lam_med": 1391.3688001040887, "ra": 318.767087, "dec": 14.063751}, {"file": "h_o5b609020_spc.fits", "obj": "EF-PEG", "mode": "E140M", "nominal": 1.5813910440443177e-15, "lam_med": 1391.1923096177024, "ra": 318.767087, "dec": 14.063751}, {"file": "h_o5b609030_spc.fits", "obj": "EF-PEG", "mode": "E140M", "nominal": 1.7194843771094924e-15, "lam_med": 1390.707496306497, "ra": 318.767087, "dec": 14.063751}, {"file": "h_o5b612010_spc.fits", "obj": "EK-TRA", "mode": "E140M", "nominal": 1.6979124453505615e-15, "lam_med": 1389.1939493090508, "ra": 228.5025, "dec": -65.093167}, {"file": "h_o6au01010_spc.fits", "obj": "EV-LAC", "mode": "E140M", "nominal": 2.4462784454796044e-15, "lam_med": 1396.502199490656, "ra": 341.706716, "dec": 44.333818}, {"file": "h_o6au01020_spc.fits", "obj": "EV-LAC", "mode": "E140M", "nominal": 1.9707762019857727e-15, "lam_med": 1396.1418958585284, "ra": 341.706716, "dec": 44.333818}, {"file": "h_o6au01030_spc.fits", "obj": "EV-LAC", "mode": "E140M", "nominal": 2.031393953144623e-15, "lam_med": 1396.2785232879826, "ra": 341.706716, "dec": 44.333818}, {"file": "h_o6au01040_spc.fits", "obj": "EV-LAC", "mode": "E140M", "nominal": 2.0566300604544817e-15, "lam_med": 1396.3111383565042, "ra": 341.706716, "dec": 44.333818}, {"file": "h_o68301010_spc.fits", "obj": "EX-HYA", "mode": "E140M", "nominal": 9.997102553205935e-15, "lam_med": 1391.438256991391, "ra": 193.100958, "dec": -29.248961}, {"file": "h_o68301020_spc.fits", "obj": "EX-HYA", "mode": "E140M", "nominal": 8.735401343736986e-15, "lam_med": 1391.8803461265552, "ra": 193.100958, "dec": -29.248961, "rec": [0.0, 1.0, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o68301030_spc.fits", "obj": "EX-HYA", "mode": "E140M", "nominal": 8.24280312126467e-15, "lam_med": 1392.02657368495, "ra": 193.100958, "dec": -29.248961}, {"file": "h_o68302010_spc.fits", "obj": "EX-HYA", "mode": "E140M", "nominal": 9.922790462883682e-15, "lam_med": 1392.325104881149, "ra": 193.100958, "dec": -29.248961}, {"file": "h_o68302020_spc.fits", "obj": "EX-HYA", "mode": "E140M", "nominal": 8.918802595635126e-15, "lam_med": 1392.6686829279408, "ra": 193.100958, "dec": -29.248961}, {"file": "h_o68302030_spc.fits", "obj": "EX-HYA", "mode": "E140M", "nominal": 8.156473810713606e-15, "lam_med": 1392.6252516944846, "ra": 193.100958, "dec": -29.248961}, {"file": "h_o6mb07010_spc.fits", "obj": "FQ-AQR", "mode": "E230M", "nominal": 1.0844435862575991e-14, "lam_med": 2218.301547149006, "ra": 312.838921, "dec": 2.312938, "rec": [0.0, 0.3333333333333333, 0.5, 0.5, 0.6666666666666666, 1.0]}, {"file": "h_o6mb07020_spc.fits", "obj": "FQ-AQR", "mode": "E230M", "nominal": 5.860312820973024e-15, "lam_med": 2218.241139493405, "ra": 312.838921, "dec": 2.312938}, {"file": "h_o63l07010_spc.fits", "obj": "FU-ORI", "mode": "E230M", "nominal": 2.1816384994175985e-15, "lam_med": 2660.9576543039584, "ra": 86.343167, "dec": 9.069833, "rec": [0.0, 0.0, 0.3333333333333333, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o63l07020_spc.fits", "obj": "FU-ORI", "mode": "E230M", "nominal": 2.0067781715023554e-15, "lam_med": 2660.963928314458, "ra": 86.343167, "dec": 9.069833}, {"file": "h_o63557010_spc.fits", "obj": "HD100340", "mode": "E140M", "nominal": 9.515955918053018e-14, "lam_med": 1391.2789692411736, "ra": 173.208083, "dec": 5.276722}, {"file": "h_o5c901010_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 2.1392875965637734e-14, "lam_med": 2750.851085327806, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901020_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 1.848401900216006e-14, "lam_med": 2510.6027769279763, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901030_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 1.6902993171973624e-14, "lam_med": 2261.554594705462, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901040_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 2.5677804403978486e-14, "lam_med": 2750.8390736539686, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901050_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 3.898583460401607e-14, "lam_med": 1762.3482795779055, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901060_spc.fits", "obj": "HD100546", "mode": "E140H", "nominal": 3.1524431260062e-14, "lam_med": 1586.3418580101447, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901070_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 2.355932799887669e-14, "lam_med": 2750.839802626603, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901080_spc.fits", "obj": "HD100546", "mode": "E140H", "nominal": 9.060369358775294e-15, "lam_med": 1232.611706452023, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c901090_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 2.047127797708445e-14, "lam_med": 2750.84341429062, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c9010a0_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 2.1642659275807662e-14, "lam_med": 2013.214977769815, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c9010b0_spc.fits", "obj": "HD100546", "mode": "E140H", "nominal": 2.443642019037614e-14, "lam_med": 1414.4409554127897, "ra": 173.355976, "dec": -70.194776}, {"file": "h_o5c902010_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 7.302699768045821e-14, "lam_med": 2751.000917983052, "ra": 173.355979, "dec": -70.194776}, {"file": "h_o5c902020_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 7.032048342211807e-14, "lam_med": 2514.5751637724543, "ra": 173.355979, "dec": -70.194776}, {"file": "h_o5c902030_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 8.077628146170257e-14, "lam_med": 2010.2785880368133, "ra": 173.355979, "dec": -70.194776}, {"file": "h_o5c902040_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 8.07440146280101e-14, "lam_med": 2751.0046673135785, "ra": 173.355979, "dec": -70.194776, "rec": [0.0, 0.3333333333333333, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o5c902050_spc.fits", "obj": "HD100546", "mode": "E230H", "nominal": 1.129974626127494e-13, "lam_med": 1758.4772201911967, "ra": 173.355979, "dec": -70.194776}, {"file": "h_o5c902060_spc.fits", "obj": "HD100546", "mode": "E140H", "nominal": 1.2827489649609576e-13, "lam_med": 1587.975950896388, "ra": 173.355979, "dec": -70.194776}, {"file": "h_o6lz48010_spc.fits", "obj": "HD101131", "mode": "E140H", "nominal": 2.6043500678399627e-13, "lam_med": 1485.0089407727335, "ra": 174.451783, "dec": -63.323194}, {"file": "h_o6lz49010_spc.fits", "obj": "HD101190", "mode": "E140H", "nominal": 2.3477510013929414e-13, "lam_med": 1484.8330460761017, "ra": 174.541285, "dec": -63.196833}, {"file": "h_o6lz51010_spc.fits", "obj": "HD101436", "mode": "E140H", "nominal": 1.3410245667359888e-13, "lam_med": 1484.908728215381, "ra": 174.958116, "dec": -63.478778, "rec": [0.0, 0.5, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o4o001010_spc.fits", "obj": "HD102065", "mode": "E140H", "nominal": 1.897868870299679e-14, "lam_med": 1233.0203959696578, "ra": 175.902566, "dec": -80.483126}, {"file": "h_o4o001020_spc.fits", "obj": "HD102065", "mode": "E140H", "nominal": 6.1616675972051e-14, "lam_med": 1411.9006571256916, "ra": 175.902566, "dec": -80.483126}, {"file": "h_o4o001030_spc.fits", "obj": "HD102065", "mode": "E140H", "nominal": 8.432101001519373e-14, "lam_med": 1588.0623967421548, "ra": 175.902566, "dec": -80.483126}, {"file": "h_o4o001040_spc.fits", "obj": "HD102065", "mode": "E230H", "nominal": 3.0827507048124107e-14, "lam_med": 2510.9116479631452, "ra": 175.902566, "dec": -80.483126}, {"file": "h_o4o001050_spc.fits", "obj": "HD102065", "mode": "E230H", "nominal": 3.592915858670294e-14, "lam_med": 2751.1279850690066, "ra": 175.902566, "dec": -80.483126}, {"file": "h_o4ao06010_spc.fits", "obj": "HD102634", "mode": "E230M", "nominal": 2.555489315413842e-14, "lam_med": 2661.9577887162077, "ra": 177.255329, "dec": -0.318588}, {"file": "h_o6lm61010_spc.fits", "obj": "HD103095", "mode": "E230H", "nominal": 1.8947817246180343e-14, "lam_med": 3017.3537178315023, "ra": 178.249822, "dec": 37.712946}, {"file": "h_o6lm61020_spc.fits", "obj": "HD103095", "mode": "E230H", "nominal": 7.530709775992813e-15, "lam_med": 2750.830090044993, "ra": 178.249822, "dec": 37.712946}, {"file": "h_o6lm61030_spc.fits", "obj": "HD103095", "mode": "E230H", "nominal": 1.7219329635209032e-14, "lam_med": 3017.365785687766, "ra": 178.249823, "dec": 37.712945, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 0.3333333333333333, 0.6666666666666666, 0.6666666666666666]}, {"file": "h_o6lm61040_spc.fits", "obj": "HD103095", "mode": "E230H", "nominal": 7.570153131547796e-15, "lam_med": 2750.8292086884517, "ra": 178.249823, "dec": 37.712945}, {"file": "h_o6lm61050_spc.fits", "obj": "HD103095", "mode": "E140M", "nominal": 2.3990284447274093e-15, "lam_med": 1395.5060750793405, "ra": 178.249823, "dec": 37.712945}, {"file": "h_o54302010_spc.fits", "obj": "HD103779", "mode": "E140H", "nominal": 1.2865823180618336e-13, "lam_med": 1254.6704621284302, "ra": 179.239787, "dec": -63.249092}, {"file": "h_o54302020_spc.fits", "obj": "HD103779", "mode": "E230H", "nominal": 1.7983587116897422e-13, "lam_med": 1760.2787245345812, "ra": 179.239787, "dec": -63.249092}, {"file": "h_o63563010_spc.fits", "obj": "HD103779", "mode": "E140H", "nominal": 1.5284778172339425e-13, "lam_med": 1484.2421869225175, "ra": 179.239833, "dec": -63.249083, "rec": [0.0, 0.5, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o57r01010_spc.fits", "obj": "HD104705", "mode": "E140H", "nominal": 6.701146896864805e-14, "lam_med": 1253.5561250724977, "ra": 180.849917, "dec": -62.696111}, {"file": "h_o57r01020_spc.fits", "obj": "HD104705", "mode": "E140H", "nominal": 6.060731057591212e-14, "lam_med": 1450.3772228910802, "ra": 180.849917, "dec": -62.696111}, {"file": "h_o57r01030_spc.fits", "obj": "HD104705", "mode": "E140H", "nominal": 6.603442293800239e-14, "lam_med": 1484.4351532214234, "ra": 180.849917, "dec": -62.696111, "rec": [0.0, 0.5, 0.5, 0.5, 1.0, 1.0]}, {"file": "h_o54310010_spc.fits", "obj": "HD106343", "mode": "E140H", "nominal": 1.2618363303046855e-13, "lam_med": 1254.7877884860713, "ra": 183.570527, "dec": -64.408517}, {"file": "h_o54310020_spc.fits", "obj": "HD106343", "mode": "E230H", "nominal": 1.9680016669597475e-13, "lam_med": 1760.2839426773862, "ra": 183.570527, "dec": -64.408517}, {"file": "h_o4ao07010_spc.fits", "obj": "HD106516", "mode": "E230M", "nominal": 3.8923655485183994e-14, "lam_med": 2661.4694735121516, "ra": 183.793873, "dec": -10.31229}, {"file": "h_o57m01010_spc.fits", "obj": "HD106516", "mode": "E230M", "nominal": 9.055095207666951e-14, "lam_med": 2661.817151190704, "ra": 183.793992, "dec": -10.312264, "rec": [0.0, 0.0, 0.3333333333333333, 0.5, 0.6666666666666666, 0.5]}, {"file": "h_o57m01020_spc.fits", "obj": "HD106516", "mode": "E140M", "nominal": 3.398975932239412e-15, "lam_med": 1397.7230402941718, "ra": 183.793992, "dec": -10.312264}, {"file": "h_o6lj07010_spc.fits", "obj": "HD106943", "mode": "E140H", "nominal": 1.1048500884311924e-13, "lam_med": 1450.0915175168302, "ra": 184.528091, "dec": -61.469912}, {"file": "h_o6lj07020_spc.fits", "obj": "HD106943", "mode": "E140H", "nominal": 6.174865492251924e-14, "lam_med": 1253.0149267073598, "ra": 184.528091, "dec": -61.469912}, {"file": "h_o5cy01010_spc.fits", "obj": "HD10700", "mode": "E140M", "nominal": 2.309884294591719e-15, "lam_med": 1389.6638373938238, "ra": 26.016826, "dec": -15.937316}, {"file": "h_o5cy01020_spc.fits", "obj": "HD10700", "mode": "E140M", "nominal": 1.0052247046070121e-15, "lam_med": 1389.2989359993617, "ra": 26.016826, "dec": -15.937316}, {"file": "h_o4ao08010_spc.fits", "obj": "HD107113", "mode": "E230M", "nominal": 4.239075822823377e-14, "lam_med": 2661.3305540953784, "ra": 184.209733, "dec": 86.435924}, {"file": "h_o4ao08020_spc.fits", "obj": "HD107113", "mode": "E230M", "nominal": 6.260640012444804e-14, "lam_med": 1950.312326620469, "ra": 184.209733, "dec": 86.435924}, {"file": "h_o4ao08030_spc.fits", "obj": "HD107113", "mode": "E230M", "nominal": 3.770566537681645e-14, "lam_med": 1950.2885999370687, "ra": 184.209733, "dec": 86.435924}, {"file": "h_o40l01030_spc.fits", "obj": "HD107213", "mode": "E230M", "nominal": 2.6609483420688317e-14, "lam_med": 2660.6049263800805, "ra": 184.873162, "dec": 28.156927}, {"file": "h_o40l01040_spc.fits", "obj": "HD107213", "mode": "E230M", "nominal": 2.434395553657978e-14, "lam_med": 2660.6049336520823, "ra": 184.873162, "dec": 28.156927}, {"file": "h_o4ao09010_spc.fits", "obj": "HD107213", "mode": "E230M", "nominal": 2.259936356964884e-14, "lam_med": 2642.460028284971, "ra": 184.873041, "dec": 28.156863}, {"file": "h_o4ao09020_spc.fits", "obj": "HD107213", "mode": "E230M", "nominal": 4.409529539103023e-14, "lam_med": 1950.1744428276222, "ra": 184.873041, "dec": 28.156863}, {"file": "h_o4ao09030_spc.fits", "obj": "HD107213", "mode": "E230M", "nominal": 1.647370028005941e-14, "lam_med": 1950.142889765514, "ra": 184.873041, "dec": 28.156863}, {"file": "h_o64d08010_spc.fits", "obj": "HD107969", "mode": "E140M", "nominal": 3.850760973319372e-14, "lam_med": 1397.4255686493798, "ra": 186.127792, "dec": -18.784897}, {"file": "h_o64d08020_spc.fits", "obj": "HD107969", "mode": "E140M", "nominal": 3.3857920300414744e-14, "lam_med": 1396.9104645298157, "ra": 186.127792, "dec": -18.784897}, {"file": "h_o6lj08010_spc.fits", "obj": "HD108002", "mode": "E140H", "nominal": 9.849404822020512e-14, "lam_med": 1450.1067753679663, "ra": 186.233127, "dec": -65.210999}, {"file": "h_o6lj08020_spc.fits", "obj": "HD108002", "mode": "E140H", "nominal": 8.821369635378152e-14, "lam_med": 1253.1401448850556, "ra": 186.233127, "dec": -65.210999}, {"file": "h_o6lj09010_spc.fits", "obj": "HD108610", "mode": "E140H", "nominal": 1.1962938907605578e-13, "lam_med": 1450.1074786091608, "ra": 187.22859, "dec": -61.870924}, {"file": "h_o6lj09020_spc.fits", "obj": "HD108610", "mode": "E140H", "nominal": 1.137987164714399e-13, "lam_med": 1253.0905785299744, "ra": 187.22859, "dec": -61.870924}, {"file": "h_o6lj0a010_spc.fits", "obj": "HD108639", "mode": "E140H", "nominal": 6.718413202928447e-14, "lam_med": 1450.0878013979982, "ra": 187.289699, "dec": -60.804863}, {"file": "h_o6lj0a020_spc.fits", "obj": "HD108639", "mode": "E140H", "nominal": 5.978947579317954e-14, "lam_med": 1253.2233563798063, "ra": 187.289699, "dec": -60.804863}, {"file": "h_o62w01010_spc.fits", "obj": "HD108907", "mode": "E140M", "nominal": 4.818485525109749e-15, "lam_med": 1391.0605157161378, "ra": 187.527875, "dec": 69.201111}, {"file": "h_o62w01020_spc.fits", "obj": "HD108907", "mode": "E140M", "nominal": 4.210169380817671e-15, "lam_med": 1390.9370040284073, "ra": 187.527875, "dec": 69.201111}, {"file": "h_o62w01030_spc.fits", "obj": "HD108907", "mode": "E140M", "nominal": 4.22736896272736e-15, "lam_med": 1390.8246959875319, "ra": 187.527875, "dec": 69.201111}, {"file": "h_o5lh01010_spc.fits", "obj": "HD108", "mode": "E140H", "nominal": 8.752765398320066e-14, "lam_med": 1255.409930299368, "ra": 1.514107, "dec": 63.679655}, {"file": "h_o5lh01020_spc.fits", "obj": "HD108", "mode": "E140H", "nominal": 8.508081824428066e-14, "lam_med": 1255.3840644864422, "ra": 1.514107, "dec": 63.679655, "rec": [0.0, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o5lh01030_spc.fits", "obj": "HD108", "mode": "E140H", "nominal": 8.62657288185562e-14, "lam_med": 1255.285233135866, "ra": 1.514107, "dec": 63.679655}, {"file": "h_o5lh01040_spc.fits", "obj": "HD108", "mode": "E140H", "nominal": 8.873582445093705e-14, "lam_med": 1255.2824404387645, "ra": 1.514107, "dec": 63.679655}, {"file": "h_o5lh01050_spc.fits", "obj": "HD108", "mode": "E230H", "nominal": 1.5159876264665096e-13, "lam_med": 1760.7840262716443, "ra": 1.514107, "dec": 63.679655}, {"file": "h_o5lh01060_spc.fits", "obj": "HD108", "mode": "E230H", "nominal": 1.403317745859313e-13, "lam_med": 1760.7729785308425, "ra": 1.514107, "dec": 63.679655}, {"file": "h_o5lh01070_spc.fits", "obj": "HD108", "mode": "E230H", "nominal": 1.3649174394402694e-13, "lam_med": 1760.7730221119332, "ra": 1.514107, "dec": 63.679655}, {"file": "h_o5lh01080_spc.fits", "obj": "HD108", "mode": "E230H", "nominal": 1.4405283523011224e-13, "lam_med": 1760.7804538032262, "ra": 1.514107, "dec": 63.679655}, {"file": "h_o54303010_spc.fits", "obj": "HD109399", "mode": "E140H", "nominal": 1.1716125539234517e-13, "lam_med": 1253.7591826457997, "ra": 188.818885, "dec": -72.716902}, {"file": "h_o54303020_spc.fits", "obj": "HD109399", "mode": "E230H", "nominal": 1.44802577983167e-13, "lam_med": 1760.3257226743458, "ra": 188.818885, "dec": -72.716902}, {"file": "h_o6fg01010_spc.fits", "obj": "HD109573", "mode": "E230H", "nominal": 1.2832688969502936e-13, "lam_med": 2010.1226920960191, "ra": 189.004568, "dec": -39.869793}, {"file": "h_o6fg01020_spc.fits", "obj": "HD109573", "mode": "E140H", "nominal": 1.3568228829689375e-13, "lam_med": 1521.5786093170314, "ra": 189.004568, "dec": -39.869793}, {"file": "h_o6e608010_spc.fits", "obj": "HD109799", "mode": "E230H", "nominal": 2.369160536467894e-14, "lam_med": 2510.467036627603, "ra": 189.426241, "dec": -27.138962}, {"file": "h_o6lj0b010_spc.fits", "obj": "HD110434", "mode": "E140H", "nominal": 1.1867572635452137e-13, "lam_med": 1451.7141109957695, "ra": 190.706064, "dec": -66.457732}, {"file": "h_o6lj0b020_spc.fits", "obj": "HD110434", "mode": "E140H", "nominal": 7.887430279097566e-14, "lam_med": 1254.9186676941647, "ra": 190.706064, "dec": -66.457732}, {"file": "h_o62u09010_spc.fits", "obj": "HD110897", "mode": "E230M", "nominal": 2.643057261639105e-14, "lam_med": 2661.551792363908, "ra": 191.247301, "dec": 39.278991}, {"file": "h_o6aq01010_spc.fits", "obj": "HD111812", "mode": "E140M", "nominal": 3.669205511798459e-15, "lam_med": 1390.5271301163311, "ra": 192.924664, "dec": 27.54072}, {"file": "h_o6aq01020_spc.fits", "obj": "HD111812", "mode": "E140M", "nominal": 2.1564062483445215e-15, "lam_med": 1391.0392368701926, "ra": 192.924664, "dec": 27.54072}, {"file": "h_o5c03n010_spc.fits", "obj": "HD111934", "mode": "E140H", "nominal": 6.948792965072016e-14, "lam_med": 1254.5705921194776, "ra": 193.406742, "dec": -60.357057, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o8rk43010_spc.fits", "obj": "HD112092", "mode": "E140M", "nominal": 2.51819129027884e-11, "lam_med": 1395.9973713094307, "ra": 193.648417, "dec": -57.177925}, {"file": "h_o6lj0c010_spc.fits", "obj": "HD112999", "mode": "E140H", "nominal": 5.2000715447199154e-14, "lam_med": 1252.9955075634994, "ra": 195.395386, "dec": -60.671404}, {"file": "h_o6lj0c020_spc.fits", "obj": "HD112999", "mode": "E140H", "nominal": 5.6565959248275316e-14, "lam_med": 1252.8759010955716, "ra": 195.395386, "dec": -60.671404}, {"file": "h_o6lz53010_spc.fits", "obj": "HD114441", "mode": "E140M", "nominal": 1.7019413553852358e-13, "lam_med": 1396.2827406262081, "ra": 197.872993, "dec": -55.356722}, {"file": "h_o56d08010_spc.fits", "obj": "HD114762", "mode": "E230M", "nominal": 3.188409513294753e-14, "lam_med": 2658.9392554559267, "ra": 198.082327, "dec": 17.517111}, {"file": "h_o56d10010_spc.fits", "obj": "HD114762", "mode": "E230M", "nominal": 4.0771554265388596e-14, "lam_med": 2660.101295624984, "ra": 198.082347, "dec": 17.517111}, {"file": "h_o6lj0d010_spc.fits", "obj": "HD114886", "mode": "E140H", "nominal": 1.2604943725897225e-13, "lam_med": 1450.024382467097, "ra": 198.684918, "dec": -63.581057}, {"file": "h_o6lj0d020_spc.fits", "obj": "HD114886", "mode": "E140H", "nominal": 1.2695503930631495e-13, "lam_med": 1253.1213242054548, "ra": 198.684918, "dec": -63.581057}, {"file": "h_o6lj0e010_spc.fits", "obj": "HD115071", "mode": "E140H", "nominal": 3.7832876158893986e-14, "lam_med": 1253.1639124833757, "ra": 199.020017, "dec": -62.583754}, {"file": "h_o6lj0e020_spc.fits", "obj": "HD115071", "mode": "E140H", "nominal": 3.7230760828466555e-14, "lam_med": 1253.1778353802174, "ra": 199.020017, "dec": -62.583754}, {"file": "h_o5f601010_spc.fits", "obj": "HD115444", "mode": "E230M", "nominal": 4.591456113400955e-15, "lam_med": 2642.479886967934, "ra": 199.176929, "dec": 36.381306}, {"file": "h_o5f601020_spc.fits", "obj": "HD115444", "mode": "E230M", "nominal": 1.8600675174200863e-15, "lam_med": 2642.4262746421073, "ra": 199.176929, "dec": 36.381306}, {"file": "h_o5f602010_spc.fits", "obj": "HD115444", "mode": "E230M", "nominal": 4.5779020935199014e-15, "lam_med": 2648.0786201144756, "ra": 199.176929, "dec": 36.381306}, {"file": "h_o6lj0f010_spc.fits", "obj": "HD115455", "mode": "E140H", "nominal": 6.207669875276644e-14, "lam_med": 1253.0875005681607, "ra": 199.647383, "dec": -62.491224}, {"file": "h_o6lj0f020_spc.fits", "obj": "HD115455", "mode": "E140H", "nominal": 6.279749707064464e-14, "lam_med": 1253.0826270790567, "ra": 199.647383, "dec": -62.491224}, {"file": "h_o4vb02050_spc.fits", "obj": "HD115617", "mode": "E140M", "nominal": 1.9636161389414785e-15, "lam_med": 1394.0804172494923, "ra": 199.601241, "dec": -18.311019}, {"file": "h_o4vb52010_spc.fits", "obj": "HD115617", "mode": "E230M", "nominal": 2.5052837351879944e-14, "lam_med": 2661.4672530011476, "ra": 199.601664, "dec": -18.310901}, {"file": "h_o4vb52020_spc.fits", "obj": "HD115617", "mode": "E140M", "nominal": 2.154206117259491e-15, "lam_med": 1396.6543565309541, "ra": 199.601664, "dec": -18.310901, "rec": [0.0, 1.0, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o62u02010_spc.fits", "obj": "HD11592", "mode": "E230M", "nominal": 2.1802378902540798e-14, "lam_med": 2660.949352353291, "ra": 28.490269, "dec": 10.613935}, {"file": "h_o62u02020_spc.fits", "obj": "HD11592", "mode": "E230M", "nominal": 1.6238062409271612e-14, "lam_med": 2660.954516900909, "ra": 28.490269, "dec": 10.613935}, {"file": "h_o5lh05010_spc.fits", "obj": "HD116781", "mode": "E140H", "nominal": 1.6581941795564879e-13, "lam_med": 1255.847319926037, "ra": 201.854415, "dec": -62.649011}, {"file": "h_o5lh05020_spc.fits", "obj": "HD116781", "mode": "E140H", "nominal": 1.687591059160836e-13, "lam_med": 1255.8236924801759, "ra": 201.854415, "dec": -62.649011}, {"file": "h_o5lh05030_spc.fits", "obj": "HD116781", "mode": "E230H", "nominal": 1.9219953834859766e-13, "lam_med": 1761.7119683830479, "ra": 201.854415, "dec": -62.649011, "rec": [0.16666666666666666, 1.0, 1.0, 0.6666666666666666, 0.5, 1.0]}, {"file": "h_o5lh05040_spc.fits", "obj": "HD116781", "mode": "E230H", "nominal": 1.7927252224548399e-13, "lam_med": 1761.6825050547122, "ra": 201.854415, "dec": -62.649011}, {"file": "h_o5c01c010_spc.fits", "obj": "HD116852", "mode": "E140H", "nominal": 1.6453026203667377e-13, "lam_med": 1255.8858649756119, "ra": 202.597919, "dec": -78.855714}, {"file": "h_o8na03010_spc.fits", "obj": "HD116852", "mode": "E140H", "nominal": 6.338339862163702e-14, "lam_med": 1252.715589567475, "ra": 202.597917, "dec": -78.855694, "rec": [0.0, 0.5, 0.5, 0.3333333333333333, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o8na03020_spc.fits", "obj": "HD116852", "mode": "E140H", "nominal": 5.580636362730131e-14, "lam_med": 1252.8228080213428, "ra": 202.597917, "dec": -78.855694}, {"file": "h_o6co01040_spc.fits", "obj": "HD116956", "mode": "E140M", "nominal": 2.12875267862845e-15, "lam_med": 1389.5107060169037, "ra": 201.439392, "dec": 56.970508, "rec": [0.0, 0.8333333333333334, 0.6666666666666666, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o6co01050_spc.fits", "obj": "HD116956", "mode": "E140M", "nominal": 4.9801775855680746e-15, "lam_med": 1389.94045232184, "ra": 201.439392, "dec": 56.970508, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6co01060_spc.fits", "obj": "HD116956", "mode": "E230M", "nominal": 7.856998949446693e-15, "lam_med": 2642.795894474341, "ra": 201.439392, "dec": 56.970508}, {"file": "h_o61o01010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.4213154704489453e-14, "lam_med": 1391.7534194401712, "ra": 203.575605, "dec": -25.380097}, {"file": "h_o61o02010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.3855580055309802e-14, "lam_med": 1391.3720730633872, "ra": 203.575605, "dec": -25.380097}, {"file": "h_o61o03010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.354562805282853e-14, "lam_med": 1392.636688596541, "ra": 203.575605, "dec": -25.380097, "rec": [0.0, 0.0, 0.3333333333333333, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o61o04010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.3373075806348927e-14, "lam_med": 1390.366258629184, "ra": 203.575605, "dec": -25.380097}, {"file": "h_o61o05010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.2749656785330898e-14, "lam_med": 1392.1708751572207, "ra": 203.575604, "dec": -25.380097}, {"file": "h_o61o06010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.2743376899350654e-14, "lam_med": 1391.1359619228351, "ra": 203.575604, "dec": -25.380097}, {"file": "h_o61o07010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.2161127515051226e-14, "lam_med": 1391.2262958611436, "ra": 203.575604, "dec": -25.380097}, {"file": "h_o61o08010_spc.fits", "obj": "HD117970", "mode": "E140M", "nominal": 2.1829015191034814e-14, "lam_med": 1392.5339222895673, "ra": 203.575604, "dec": -25.380097}, {"file": "h_o63572010_spc.fits", "obj": "HD118246", "mode": "E140H", "nominal": 1.0486732937051887e-13, "lam_med": 1484.0907532327685, "ra": 203.930542, "dec": -6.156139}, {"file": "h_o5lh06010_spc.fits", "obj": "HD120086", "mode": "E140H", "nominal": 2.764673354243084e-13, "lam_med": 1255.9117248652797, "ra": 206.829987, "dec": -2.443509}, {"file": "h_o5lh06020_spc.fits", "obj": "HD120086", "mode": "E140H", "nominal": 2.886839818373889e-13, "lam_med": 1256.252566222237, "ra": 206.829987, "dec": -2.443509}, {"file": "h_o5lh06030_spc.fits", "obj": "HD120086", "mode": "E230H", "nominal": 1.8264707874125586e-13, "lam_med": 1761.9719616119964, "ra": 206.829987, "dec": -2.443509}, {"file": "h_o5lh06040_spc.fits", "obj": "HD120086", "mode": "E230H", "nominal": 2.0621612584469134e-13, "lam_med": 1761.9714022785458, "ra": 206.829987, "dec": -2.443509}, {"file": "h_o5lh06050_spc.fits", "obj": "HD120086", "mode": "E230H", "nominal": 2.2190690319538135e-13, "lam_med": 1761.9708611402098, "ra": 206.829987, "dec": -2.443509}, {"file": "h_o57r02010_spc.fits", "obj": "HD121968", "mode": "E140H", "nominal": 4.22075126811067e-14, "lam_med": 1253.7071935919225, "ra": 209.713167, "dec": -2.91475}, {"file": "h_o57r02020_spc.fits", "obj": "HD121968", "mode": "E140H", "nominal": 3.159578780308939e-14, "lam_med": 1253.6714163343024, "ra": 209.713167, "dec": -2.91475}, {"file": "h_o57r02030_spc.fits", "obj": "HD121968", "mode": "E140H", "nominal": 1.7745267689569028e-14, "lam_med": 1451.4960788373771, "ra": 209.713167, "dec": -2.91475}, {"file": "h_o5el01010_spc.fits", "obj": "HD122563", "mode": "E230M", "nominal": 8.841833182050017e-15, "lam_med": 2642.7063931900675, "ra": 210.632722, "dec": 9.686116, "rec": [0.0, 0.16666666666666666, 0.5, 0.3333333333333333, 0.6666666666666666, 1.0]}, {"file": "h_o5el01020_spc.fits", "obj": "HD122563", "mode": "E230M", "nominal": 6.924181151285794e-15, "lam_med": 2642.1262330822865, "ra": 210.632722, "dec": 9.686116}, {"file": "h_o5el01030_spc.fits", "obj": "HD122563", "mode": "E230M", "nominal": 6.856042076326668e-15, "lam_med": 2642.32797169264, "ra": 210.632722, "dec": 9.686116}, {"file": "h_o5el01040_spc.fits", "obj": "HD122563", "mode": "E230M", "nominal": 6.899752338685905e-15, "lam_med": 2642.6508178787412, "ra": 210.632722, "dec": 9.686116}, {"file": "h_o5c037010_spc.fits", "obj": "HD122879", "mode": "E140H", "nominal": 2.308573438131329e-13, "lam_med": 1255.305824979694, "ra": 211.604829, "dec": -59.715892}, {"file": "h_o5lh07010_spc.fits", "obj": "HD122879", "mode": "E140H", "nominal": 2.4325736456582886e-13, "lam_med": 1253.5069354525158, "ra": 211.604828, "dec": -59.715909}, {"file": "h_o5lh07020_spc.fits", "obj": "HD122879", "mode": "E140H", "nominal": 2.5110414792698823e-13, "lam_med": 1253.4138917928321, "ra": 211.604828, "dec": -59.715909}, {"file": "h_o5lh07030_spc.fits", "obj": "HD122879", "mode": "E230H", "nominal": 3.0195674590220934e-13, "lam_med": 1757.9400833173027, "ra": 211.604828, "dec": -59.715909, "rec": [0.0, 0.5, 0.5, 0.8333333333333334, 1.0, 0.6666666666666666]}, {"file": "h_o5lh07040_spc.fits", "obj": "HD122879", "mode": "E230H", "nominal": 2.7418473941370164e-13, "lam_med": 1757.940087430308, "ra": 211.604828, "dec": -59.715909}, {"file": "h_o5f605010_spc.fits", "obj": "HD122956", "mode": "E230M", "nominal": 4.7346930585715266e-15, "lam_med": 2642.426840256433, "ra": 211.304155, "dec": -14.857074}, {"file": "h_o5f605020_spc.fits", "obj": "HD122956", "mode": "E230M", "nominal": 3.822412729627906e-15, "lam_med": 2642.43501900077, "ra": 211.304155, "dec": -14.857074}, {"file": "h_o63505010_spc.fits", "obj": "HD12323", "mode": "E140M", "nominal": 9.16845886020541e-14, "lam_med": 1391.2213800078598, "ra": 30.625542, "dec": 55.623972}, {"file": "h_o54307010_spc.fits", "obj": "HD124314", "mode": "E140H", "nominal": 1.1574035561735054e-13, "lam_med": 1254.8382764729208, "ra": 213.756693, "dec": -61.706774}, {"file": "h_o54307020_spc.fits", "obj": "HD124314", "mode": "E230H", "nominal": 1.7497062136283123e-13, "lam_med": 1760.3277589597265, "ra": 213.756693, "dec": -61.706774}, {"file": "h_o6lz58010_spc.fits", "obj": "HD124314", "mode": "E140H", "nominal": 2.2087321696665841e-13, "lam_med": 1484.9954850235977, "ra": 213.756708, "dec": -61.706778}, {"file": "h_o6mb02010_spc.fits", "obj": "HD124448", "mode": "E230M", "nominal": 2.0432371713853272e-14, "lam_med": 2218.2969550035787, "ra": 213.744297, "dec": -46.288913, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 0.8333333333333334]}, {"file": "h_o6mb02020_spc.fits", "obj": "HD124448", "mode": "E230M", "nominal": 1.7339294554774244e-14, "lam_med": 2218.2765162111345, "ra": 213.744297, "dec": -46.288913}, {"file": "h_o4y701010_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 3.0438854153118904e-14, "lam_med": 2707.5028288851863, "ra": 213.915746, "dec": 19.183168}, {"file": "h_o4y701020_spc.fits", "obj": "HD124897", "mode": "E230M", "nominal": 1.3206739127054977e-14, "lam_med": 2058.1286892205053, "ra": 213.915746, "dec": 19.183168}, {"file": "h_o4y701030_spc.fits", "obj": "HD124897", "mode": "E140M", "nominal": 4.392740206980494e-15, "lam_med": 1396.318413002382, "ra": 213.915746, "dec": 19.183168, "rec": [0.16666666666666666, 0.16666666666666666, 0.5, 0.6666666666666666, 1.0, 0.8333333333333334]}, {"file": "h_o62l01010_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 7.510386847829562e-15, "lam_med": 2258.5110522585564, "ra": 213.914774, "dec": 19.181486}, {"file": "h_o62l01020_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 4.275333954206884e-15, "lam_med": 2258.503488504033, "ra": 213.914774, "dec": 19.181486, "rec": [0.0, 0.3333333333333333, 0.16666666666666666, 0.5, 0.16666666666666666, 0.16666666666666666]}, {"file": "h_o62l02010_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 3.018460105668675e-14, "lam_med": 2750.790846038911, "ra": 213.914774, "dec": 19.181485}, {"file": "h_o62l02020_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 2.436955667741212e-14, "lam_med": 2750.8070578707748, "ra": 213.914774, "dec": 19.181485}, {"file": "h_o62l02030_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 4.157342323069095e-14, "lam_med": 2750.7952917912908, "ra": 213.914774, "dec": 19.181485}, {"file": "h_o62l02040_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 2.306802386369709e-14, "lam_med": 3017.2962258629204, "ra": 213.914774, "dec": 19.181485}, {"file": "h_o62l02050_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 1.2726634078863338e-14, "lam_med": 3017.2949121930715, "ra": 213.914774, "dec": 19.181484}, {"file": "h_o62l53010_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 1.4508347943187973e-14, "lam_med": 2510.976745539011, "ra": 213.914336, "dec": 19.180663}, {"file": "h_o62l53020_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 1.128698558895001e-14, "lam_med": 2510.987410211439, "ra": 213.914336, "dec": 19.180662}, {"file": "h_o62l53030_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 1.5388261251839337e-14, "lam_med": 2510.9663396493534, "ra": 213.914336, "dec": 19.180662}, {"file": "h_o62l53040_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 2.359745030083144e-13, "lam_med": 3017.61112204396, "ra": 213.914336, "dec": 19.180662}, {"file": "h_o62l53050_spc.fits", "obj": "HD124897", "mode": "E230H", "nominal": 8.748255012760028e-14, "lam_med": 3017.6566926746964, "ra": 213.914336, "dec": 19.180662}, {"file": "h_o5f606010_spc.fits", "obj": "HD126587", "mode": "E230M", "nominal": 4.75061841805853e-15, "lam_med": 2643.849453344531, "ra": 216.751499, "dec": -22.244164}, {"file": "h_o5f606020_spc.fits", "obj": "HD126587", "mode": "E230M", "nominal": 1.87908802424424e-15, "lam_med": 2643.247462679798, "ra": 216.751499, "dec": -22.244164}, {"file": "h_o8s601010_spc.fits", "obj": "HD127381", "mode": "E140M", "nominal": 1.1224753621849008e-11, "lam_med": 1395.9859949741206, "ra": 218.154343, "dec": -50.457173}, {"file": "h_o4ao12010_spc.fits", "obj": "HD128167", "mode": "E230H", "nominal": 4.989009796446851e-14, "lam_med": 2510.68322374536, "ra": 218.670042, "dec": 29.745115}, {"file": "h_o4ao12020_spc.fits", "obj": "HD128167", "mode": "E230H", "nominal": 1.4764713786978863e-13, "lam_med": 2750.8598733199874, "ra": 218.670042, "dec": 29.745115}, {"file": "h_o4ao12030_spc.fits", "obj": "HD128167", "mode": "E230H", "nominal": 7.912719674353451e-14, "lam_med": 2750.8163989995437, "ra": 218.670042, "dec": 29.745115}, {"file": "h_o4ao12040_spc.fits", "obj": "HD128167", "mode": "E230H", "nominal": 1.027951343298515e-13, "lam_med": 3012.0050996528726, "ra": 218.670042, "dec": 29.745115}, {"file": "h_o8s602010_spc.fits", "obj": "HD128345", "mode": "E140M", "nominal": 8.839576528015612e-12, "lam_med": 1395.5441553192923, "ra": 219.471716, "dec": -49.425857}, {"file": "h_o53p01010_spc.fits", "obj": "HD128620", "mode": "E140H", "nominal": 2.5192053321704974e-15, "lam_med": 1233.1095169092703, "ra": 219.904476, "dec": -60.833691}, {"file": "h_o53p01020_spc.fits", "obj": "HD128620", "mode": "E140H", "nominal": 2.0655270780295832e-15, "lam_med": 1412.0393392453695, "ra": 219.904476, "dec": -60.833691}, {"file": "h_o53p01030_spc.fits", "obj": "HD128620", "mode": "E140H", "nominal": 6.582374357581418e-15, "lam_med": 1587.0113746784114, "ra": 219.904475, "dec": -60.833691}, {"file": "h_o53p02010_spc.fits", "obj": "HD128620", "mode": "E230H", "nominal": 3.23073957746065e-14, "lam_med": 1760.3576944029348, "ra": 219.903914, "dec": -60.833745}, {"file": "h_o53p02020_spc.fits", "obj": "HD128620", "mode": "E230H", "nominal": 4.0630004815710643e-14, "lam_med": 2012.7168392724097, "ra": 219.903914, "dec": -60.833745}, {"file": "h_o53p02030_spc.fits", "obj": "HD128620", "mode": "E230H", "nominal": 5.99835130541609e-13, "lam_med": 2261.595983522089, "ra": 219.903913, "dec": -60.833745}, {"file": "h_o53p02040_spc.fits", "obj": "HD128620", "mode": "E230H", "nominal": 5.899884726083847e-13, "lam_med": 2261.593621229018, "ra": 219.903913, "dec": -60.833745, "rec": [0.0, 0.3333333333333333, 0.3333333333333333, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o53p02050_spc.fits", "obj": "HD128620", "mode": "E230H", "nominal": 5.079076871998197e-13, "lam_med": 2510.854219934996, "ra": 219.903912, "dec": -60.833745}, {"file": "h_o53p02060_spc.fits", "obj": "HD128620", "mode": "E230H", "nominal": 1.1394242110372446e-12, "lam_med": 2751.050826507493, "ra": 219.903912, "dec": -60.833745}, {"file": "h_o53p02070_spc.fits", "obj": "HD128620", "mode": "E230H", "nominal": 2.590993816663191e-12, "lam_med": 3012.232379650709, "ra": 219.903911, "dec": -60.833745}, {"file": "h_o6co04040_spc.fits", "obj": "HD128987", "mode": "E140M", "nominal": 1.4840989386572623e-15, "lam_med": 1394.3874438511534, "ra": 220.129526, "dec": -16.209324}, {"file": "h_o6co04050_spc.fits", "obj": "HD128987", "mode": "E140M", "nominal": 3.8084984734358195e-15, "lam_med": 1395.5547343090816, "ra": 220.129526, "dec": -16.209324, "rec": [0.0, 0.8333333333333334, 1.0, 0.5, 1.0, 0.8333333333333334]}, {"file": "h_o6co04060_spc.fits", "obj": "HD128987", "mode": "E230M", "nominal": 9.997186055297536e-15, "lam_med": 2662.1022941964866, "ra": 220.129526, "dec": -16.209324}, {"file": "h_o4vb01040_spc.fits", "obj": "HD131156", "mode": "E230M", "nominal": 2.1676037044068256e-15, "lam_med": 2642.3043222167717, "ra": 222.846903, "dec": 19.101195}, {"file": "h_o4vb01050_spc.fits", "obj": "HD131156", "mode": "E140M", "nominal": 1.84469289166909e-15, "lam_med": 1389.9040600179662, "ra": 222.846903, "dec": 19.101195}, {"file": "h_o4vb51010_spc.fits", "obj": "HD131156", "mode": "E230M", "nominal": 2.7867129080897113e-14, "lam_med": 2661.3774650838504, "ra": 222.847387, "dec": 19.100458}, {"file": "h_o4vb51020_spc.fits", "obj": "HD131156", "mode": "E140M", "nominal": 2.873273013393786e-15, "lam_med": 1396.5583173197922, "ra": 222.847387, "dec": 19.100458}, {"file": "h_o8oe03010_spc.fits", "obj": "HD132475", "mode": "E230M", "nominal": 1.0516319425602096e-14, "lam_med": 2661.1521324449245, "ra": 224.956609, "dec": -22.013346}, {"file": "h_o8oe03020_spc.fits", "obj": "HD132475", "mode": "E230M", "nominal": 8.318195475758318e-15, "lam_med": 2661.155306812909, "ra": 224.956609, "dec": -22.013346}, {"file": "h_o8oe03030_spc.fits", "obj": "HD132475", "mode": "E230M", "nominal": 9.722253908203232e-15, "lam_med": 2661.14171953557, "ra": 224.956609, "dec": -22.013347}, {"file": "h_o8oe03040_spc.fits", "obj": "HD132475", "mode": "E230M", "nominal": 8.241390758092004e-15, "lam_med": 2661.144863432702, "ra": 224.956609, "dec": -22.013347}, {"file": "h_o63506010_spc.fits", "obj": "HD13268", "mode": "E140M", "nominal": 7.5621187201529e-14, "lam_med": 1397.3974594921592, "ra": 32.87375, "dec": 56.158806}, {"file": "h_o6lz60010_spc.fits", "obj": "HD134411", "mode": "E140M", "nominal": 1.0832874451195946e-13, "lam_med": 1396.4404489367002, "ra": 227.786575, "dec": -39.864228}, {"file": "h_o6e602010_spc.fits", "obj": "HD13456", "mode": "E230M", "nominal": 3.207414864750252e-14, "lam_med": 2365.8326438065587, "ra": 32.842585, "dec": -10.052267}, {"file": "h_o62u03010_spc.fits", "obj": "HD13555", "mode": "E230H", "nominal": 2.094565550421275e-14, "lam_med": 2514.76656345582, "ra": 33.200429, "dec": 21.210987, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.6666666666666666]}, {"file": "h_o6lz05010_spc.fits", "obj": "HD13745", "mode": "E140M", "nominal": 9.806720443099347e-14, "lam_med": 1389.8397426250579, "ra": 33.941417, "dec": 55.996333}, {"file": "h_o6lj03010_spc.fits", "obj": "HD137595", "mode": "E140H", "nominal": 1.3445392080583088e-13, "lam_med": 1252.816170668509, "ra": 232.009414, "dec": -33.545265}, {"file": "h_o6lj03020_spc.fits", "obj": "HD137595", "mode": "E140H", "nominal": 1.502318244276339e-13, "lam_med": 1450.1663148934515, "ra": 232.009414, "dec": -33.545265}, {"file": "h_o92l41010_spc.fits", "obj": "HD137759", "mode": "E230H", "nominal": 1.4434718432199555e-14, "lam_med": 2707.7721813103662, "ra": 231.232374, "dec": 58.966092}, {"file": "h_o5c07c010_spc.fits", "obj": "HD1383", "mode": "E140H", "nominal": 3.550433284630036e-14, "lam_med": 1253.0923043434882, "ra": 4.573913, "dec": 61.727048}, {"file": "h_o8s603010_spc.fits", "obj": "HD138769", "mode": "E140M", "nominal": 8.569321123539946e-12, "lam_med": 1395.750693322636, "ra": 233.971811, "dec": -44.958411}, {"file": "h_o6lj04010_spc.fits", "obj": "HD140037", "mode": "E140H", "nominal": 1.0174424149918327e-13, "lam_med": 1252.6703656442724, "ra": 235.667045, "dec": -32.18603}, {"file": "h_o6kz01010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.899147858081981e-14, "lam_med": 3017.2141747077217, "ra": 235.761777, "dec": -10.933784, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o6kz01020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1820463400073087e-14, "lam_med": 3017.1298051422796, "ra": 235.761777, "dec": -10.933784}, {"file": "h_o6kz01030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1955899252625613e-14, "lam_med": 3017.2250658220883, "ra": 235.761777, "dec": -10.933784}, {"file": "h_o6kz02010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.89330569562857e-14, "lam_med": 3017.0993451645445, "ra": 235.761778, "dec": -10.933784}, {"file": "h_o6kz02020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.2200186826285076e-14, "lam_med": 3017.231351065821, "ra": 235.761778, "dec": -10.933784}, {"file": "h_o6kz02030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.2410899125443492e-14, "lam_med": 3017.2874274638943, "ra": 235.761778, "dec": -10.933784}, {"file": "h_o6kz03010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.891352134860614e-14, "lam_med": 3017.202951097257, "ra": 235.761779, "dec": -10.933784}, {"file": "h_o6kz03020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.2050677959043045e-14, "lam_med": 3017.295064579733, "ra": 235.761778, "dec": -10.933784}, {"file": "h_o6kz03030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.185405811820612e-14, "lam_med": 3017.1980930093723, "ra": 235.761778, "dec": -10.933784}, {"file": "h_o6kz04010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.90801188918758e-14, "lam_med": 3017.285715830747, "ra": 235.761789, "dec": -10.933781}, {"file": "h_o6kz04020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.227636543996083e-14, "lam_med": 3017.2241564368196, "ra": 235.761789, "dec": -10.933781}, {"file": "h_o6kz04030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.249040896175111e-14, "lam_med": 3017.2720272620863, "ra": 235.761789, "dec": -10.933781}, {"file": "h_o6kz05010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.8678028643422305e-14, "lam_med": 3017.2021314773892, "ra": 235.761787, "dec": -10.933781}, {"file": "h_o6kz05020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1287706810213076e-14, "lam_med": 3017.2670943634753, "ra": 235.761787, "dec": -10.933781}, {"file": "h_o6kz05030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1169019691840202e-14, "lam_med": 3017.157636258501, "ra": 235.761787, "dec": -10.933781}, {"file": "h_o6kz06010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.8885360073678744e-14, "lam_med": 3017.223527251588, "ra": 235.761784, "dec": -10.933782, "rec": [0.0, 0.8333333333333334, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6kz06020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.190663837022835e-14, "lam_med": 3017.147709429587, "ra": 235.761784, "dec": -10.933782}, {"file": "h_o6kz06030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.2175847001275875e-14, "lam_med": 3017.244902749864, "ra": 235.761784, "dec": -10.933782}, {"file": "h_o6kz07010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.884222562116677e-14, "lam_med": 3017.1097132408217, "ra": 235.761784, "dec": -10.933782}, {"file": "h_o6kz07020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.2134338660982685e-14, "lam_med": 3017.298055038521, "ra": 235.761784, "dec": -10.933782}, {"file": "h_o6kz07030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.2029300431222807e-14, "lam_med": 3017.2047718246495, "ra": 235.761783, "dec": -10.933782}, {"file": "h_o6kz08010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.881646211373802e-14, "lam_med": 3017.1971876743983, "ra": 235.761778, "dec": -10.933784, "rec": [0.0, 0.5, 0.5, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o6kz08020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1730367365314906e-14, "lam_med": 3017.2848587465096, "ra": 235.761777, "dec": -10.933784}, {"file": "h_o6kz08030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1878332925957696e-14, "lam_med": 3017.1893860417294, "ra": 235.761777, "dec": -10.933784}, {"file": "h_o6kz08040_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1884993284808566e-14, "lam_med": 3017.2377422281347, "ra": 235.761777, "dec": -10.933784, "rec": [0.16666666666666666, 0.5, 1.0, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "h_o6lm71010_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 1.542157893622775e-14, "lam_med": 2750.6968868883923, "ra": 235.762056, "dec": -10.933715}, {"file": "h_o6lm71020_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 1.158759003345365e-14, "lam_med": 2510.6036946474305, "ra": 235.762056, "dec": -10.933716}, {"file": "h_o6lm71030_spc.fits", "obj": "HD140283", "mode": "E230H", "nominal": 2.1622656654303492e-14, "lam_med": 3017.2309834495, "ra": 235.762055, "dec": -10.933716, "rec": [0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o6lm71040_spc.fits", "obj": "HD140283", "mode": "E140M", "nominal": 2.067887588704448e-15, "lam_med": 1397.2744540805013, "ra": 235.762055, "dec": -10.933716}, {"file": "h_o5km06040_spc.fits", "obj": "HD141556", "mode": "E140H", "nominal": 9.564625754884796e-14, "lam_med": 1449.8790926908346, "ra": 237.739729, "dec": -33.627168}, {"file": "h_o5km06050_spc.fits", "obj": "HD141556", "mode": "E140H", "nominal": 2.681997856205126e-13, "lam_med": 1450.2224340185317, "ra": 237.739729, "dec": -33.627168}, {"file": "h_o5km06060_spc.fits", "obj": "HD141556", "mode": "E140H", "nominal": 1.3466240269402217e-11, "lam_med": 1402.981370822018, "ra": 237.739729, "dec": -33.627168, "rec": [0.16666666666666666, 0.3333333333333333, 0.5, 0.3333333333333333, 0.16666666666666666, 0.6666666666666666]}, {"file": "h_o5km56030_spc.fits", "obj": "HD141556", "mode": "E140H", "nominal": 2.1491162818890184e-13, "lam_med": 1451.6311784448671, "ra": 237.739737, "dec": -33.627175}, {"file": "h_o5km56040_spc.fits", "obj": "HD141556", "mode": "E140H", "nominal": 3.0546467732073636e-13, "lam_med": 1451.1194903001456, "ra": 237.739737, "dec": -33.627175}, {"file": "h_o8o703010_spc.fits", "obj": "HD141969", "mode": "E140H", "nominal": 5.583538835166348e-15, "lam_med": 1233.322547344045, "ra": 239.007375, "dec": -66.152333}, {"file": "h_o8o705010_spc.fits", "obj": "HD141969", "mode": "E140H", "nominal": 7.314859840266963e-15, "lam_med": 1585.2961155503542, "ra": 239.007375, "dec": -66.152333}, {"file": "h_o8s604010_spc.fits", "obj": "HD142256", "mode": "E140M", "nominal": 1.362063400595745e-13, "lam_med": 1395.7211921570913, "ra": 238.845312, "dec": -44.526032}, {"file": "h_o5c03y010_spc.fits", "obj": "HD142315", "mode": "E140H", "nominal": 7.227568886529254e-14, "lam_med": 1253.2641504409507, "ra": 238.6733, "dec": -22.766246}, {"file": "h_o6mr02010_spc.fits", "obj": "HD142373", "mode": "E140M", "nominal": 2.370521506529915e-15, "lam_med": 1395.2798435312907, "ra": 238.169469, "dec": 42.452159, "rec": [0.16666666666666666, 1.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o6mr02020_spc.fits", "obj": "HD142373", "mode": "E140M", "nominal": 1.3055221822035354e-15, "lam_med": 1395.1580843219774, "ra": 238.169469, "dec": 42.452159}, {"file": "h_o6mr03010_spc.fits", "obj": "HD142373", "mode": "E140M", "nominal": 2.368642065940753e-15, "lam_med": 1395.724317511002, "ra": 238.169473, "dec": 42.452163}, {"file": "h_o6mr03020_spc.fits", "obj": "HD142373", "mode": "E140M", "nominal": 1.2360706865808191e-15, "lam_med": 1395.699421641673, "ra": 238.169473, "dec": 42.452163}, {"file": "h_o5e305010_spc.fits", "obj": "HD142560", "mode": "E140M", "nominal": 3.355972017159258e-15, "lam_med": 1389.439591716589, "ra": 239.176083, "dec": -37.821028}, {"file": "h_o5e305020_spc.fits", "obj": "HD142560", "mode": "E140M", "nominal": 2.5577630125072566e-15, "lam_med": 1389.5782656203419, "ra": 239.176083, "dec": -37.821028}, {"file": "h_o5e305040_spc.fits", "obj": "HD142560", "mode": "E140M", "nominal": 3.3952282071124568e-15, "lam_med": 1389.837139478483, "ra": 239.176083, "dec": -37.821028}, {"file": "h_o5e305050_spc.fits", "obj": "HD142560", "mode": "E140M", "nominal": 2.839490929830486e-15, "lam_med": 1389.6565522761384, "ra": 239.176083, "dec": -37.821028}, {"file": "h_o5e305060_spc.fits", "obj": "HD142560", "mode": "E140M", "nominal": 3.1694904838821124e-15, "lam_med": 1389.6305634409282, "ra": 239.176083, "dec": -37.821028, "rec": [0.16666666666666666, 0.5, 0.6666666666666666, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o62u10010_spc.fits", "obj": "HD142640", "mode": "E230M", "nominal": 2.0861766940412258e-14, "lam_med": 2661.853481402482, "ra": 239.06015, "dec": -14.399425}, {"file": "h_o5c040010_spc.fits", "obj": "HD142763", "mode": "E140H", "nominal": 1.895888819741829e-13, "lam_med": 1255.7763661116287, "ra": 238.916064, "dec": 18.620751}, {"file": "h_o62u11010_spc.fits", "obj": "HD142860", "mode": "E230H", "nominal": 3.443252946374595e-14, "lam_med": 2514.5181268200445, "ra": 239.113368, "dec": 15.661014}, {"file": "h_o5a101010_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 4.279425641569296e-15, "lam_med": 2662.565840930124, "ra": 34.836651, "dec": -2.97761}, {"file": "h_o5a101020_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 3.239024192100098e-15, "lam_med": 2662.5241692719865, "ra": 34.836651, "dec": -2.97761}, {"file": "h_o5a101030_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 2.4601261744863154e-15, "lam_med": 2662.520178289924, "ra": 34.836651, "dec": -2.97761}, {"file": "h_o5a101040_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 3.82229783599348e-15, "lam_med": 2662.586745995892, "ra": 34.836651, "dec": -2.97761}, {"file": "h_o5a101050_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 2.9536799536122465e-15, "lam_med": 2664.6825650769097, "ra": 34.836651, "dec": -2.97761}, {"file": "h_o5a101060_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 2.8861535907870693e-15, "lam_med": 2662.579006989581, "ra": 34.836651, "dec": -2.97761}, {"file": "h_o5a101070_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 2.0882300828573193e-15, "lam_med": 2677.374220477719, "ra": 34.836651, "dec": -2.97761}, {"file": "h_o8wy02010_spc.fits", "obj": "HD14386", "mode": "E230M", "nominal": 2.7085381236693794e-15, "lam_med": 2661.121191233704, "ra": 34.836635, "dec": -2.977914}, {"file": "h_o8wy03010_spc.fits", "obj": "HD14386", "mode": "E140M", "nominal": 1.6812619685537581e-15, "lam_med": 1395.5348660715913, "ra": 34.836635, "dec": -2.977914}, {"file": "h_o63508010_spc.fits", "obj": "HD14434", "mode": "E140M", "nominal": 6.560140247031216e-14, "lam_med": 1391.0010799524782, "ra": 35.468375, "dec": 56.905028}, {"file": "h_o6lj05010_spc.fits", "obj": "HD144965", "mode": "E140H", "nominal": 8.600137329027855e-14, "lam_med": 1252.781740206748, "ra": 242.543975, "dec": -40.128835}, {"file": "h_o62u12010_spc.fits", "obj": "HD146233", "mode": "E230M", "nominal": 1.8732349422706108e-14, "lam_med": 2661.718079009479, "ra": 243.905368, "dec": -8.36961}, {"file": "h_o63579010_spc.fits", "obj": "HD146813", "mode": "E140M", "nominal": 1.948925221769937e-13, "lam_med": 1390.6612778618928, "ra": 243.81175, "dec": 55.799611}, {"file": "h_o8rk49010_spc.fits", "obj": "HD147394", "mode": "E140M", "nominal": 1.5153213930157523e-11, "lam_med": 1395.8989175535412, "ra": 244.935167, "dec": 46.313367}, {"file": "h_o8rk50010_spc.fits", "obj": "HD147394", "mode": "E230M", "nominal": 1.911916883752032e-11, "lam_med": 1950.3617683787252, "ra": 244.935167, "dec": 46.313367}, {"file": "h_o6lj06010_spc.fits", "obj": "HD147683", "mode": "E140H", "nominal": 5.277040882185432e-14, "lam_med": 1450.4517485357972, "ra": 246.182162, "dec": -34.893782}, {"file": "h_o6lj06020_spc.fits", "obj": "HD147683", "mode": "E140H", "nominal": 2.784046660881964e-14, "lam_med": 1252.8704546994043, "ra": 246.182162, "dec": -34.893782}, {"file": "h_o59s05010_spc.fits", "obj": "HD147888", "mode": "E140H", "nominal": 6.520705572885363e-14, "lam_med": 1253.8839662155456, "ra": 246.351184, "dec": -23.460221}, {"file": "h_o6lb04010_spc.fits", "obj": "HD147888", "mode": "E230H", "nominal": 2.590698589638435e-14, "lam_med": 2258.775433036353, "ra": 246.351177, "dec": -23.460236}, {"file": "h_o6lb04020_spc.fits", "obj": "HD147888", "mode": "E230H", "nominal": 2.0688492152671165e-14, "lam_med": 2258.6892921296167, "ra": 246.351177, "dec": -23.460236}, {"file": "h_o6lb04030_spc.fits", "obj": "HD147888", "mode": "E230H", "nominal": 2.0757264366618832e-14, "lam_med": 2258.771772345437, "ra": 246.351177, "dec": -23.460236, "rec": [0.0, 1.0, 0.5, 1.0, 1.0, 1.0]}, {"file": "h_o6lb04040_spc.fits", "obj": "HD147888", "mode": "E230H", "nominal": 2.0756073388848484e-14, "lam_med": 2258.8090585639366, "ra": 246.351177, "dec": -23.460236}, {"file": "h_o5c04a010_spc.fits", "obj": "HD148594", "mode": "E140H", "nominal": 6.948546455193407e-14, "lam_med": 1255.5821208980815, "ra": 247.565312, "dec": -27.916257}, {"file": "h_o6f301010_spc.fits", "obj": "HD148937", "mode": "E140H", "nominal": 1.3029901369305568e-13, "lam_med": 1556.6667070615422, "ra": 248.468285, "dec": -48.111245}, {"file": "h_o6f301020_spc.fits", "obj": "HD148937", "mode": "E140H", "nominal": 8.47477663582103e-14, "lam_med": 1372.9778471311263, "ra": 248.468285, "dec": -48.111245}, {"file": "h_o4ao10010_spc.fits", "obj": "HD150177", "mode": "E230M", "nominal": 3.3791187977866584e-14, "lam_med": 2660.1106946153604, "ra": 249.913093, "dec": -9.554522}, {"file": "h_o5a501010_spc.fits", "obj": "HD150798", "mode": "E140M", "nominal": 2.288230144017611e-15, "lam_med": 1388.4621128621177, "ra": 252.166198, "dec": -69.027719}, {"file": "h_o5a501020_spc.fits", "obj": "HD150798", "mode": "E230M", "nominal": 1.0350178152059428e-14, "lam_med": 2075.6446516989527, "ra": 252.166198, "dec": -69.027719}, {"file": "h_o5a501030_spc.fits", "obj": "HD150798", "mode": "E230H", "nominal": 1.9409164027079962e-14, "lam_med": 2656.655754380678, "ra": 252.166198, "dec": -69.027719}, {"file": "h_o5a501040_spc.fits", "obj": "HD150798", "mode": "E230H", "nominal": 6.035361798292757e-14, "lam_med": 2851.512159926916, "ra": 252.166198, "dec": -69.027719}, {"file": "h_o5lh02010_spc.fits", "obj": "HD15137", "mode": "E140H", "nominal": 1.1817595875820427e-13, "lam_med": 1254.310840480491, "ra": 36.999213, "dec": 52.54933}, {"file": "h_o5lh02020_spc.fits", "obj": "HD15137", "mode": "E140H", "nominal": 1.225339449071897e-13, "lam_med": 1254.2671239422525, "ra": 36.999213, "dec": 52.54933}, {"file": "h_o5lh02030_spc.fits", "obj": "HD15137", "mode": "E140H", "nominal": 1.0523678013249394e-13, "lam_med": 1254.3516893265967, "ra": 36.999213, "dec": 52.54933}, {"file": "h_o5lh02040_spc.fits", "obj": "HD15137", "mode": "E140H", "nominal": 1.0795645461737013e-13, "lam_med": 1254.203235888308, "ra": 36.999213, "dec": 52.54933}, {"file": "h_o5lh02050_spc.fits", "obj": "HD15137", "mode": "E230H", "nominal": 1.533574275023498e-13, "lam_med": 1760.1403257783468, "ra": 36.999213, "dec": 52.54933, "rec": [0.0, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o5lh02060_spc.fits", "obj": "HD15137", "mode": "E230H", "nominal": 1.5450154129857816e-13, "lam_med": 1760.128955824926, "ra": 36.999213, "dec": 52.54933}, {"file": "h_o5lh02070_spc.fits", "obj": "HD15137", "mode": "E230H", "nominal": 1.4849019803434358e-13, "lam_med": 1760.1103631027622, "ra": 36.999213, "dec": 52.54933}, {"file": "h_o5lh02080_spc.fits", "obj": "HD15137", "mode": "E230H", "nominal": 1.481263870467331e-13, "lam_med": 1760.136270836084, "ra": 36.999213, "dec": 52.54933}, {"file": "h_o6lz63010_spc.fits", "obj": "HD151805", "mode": "E140M", "nominal": 7.726296646837143e-14, "lam_med": 1396.5122032472423, "ra": 252.898792, "dec": -41.776528}, {"file": "h_o5c08p010_spc.fits", "obj": "HD152590", "mode": "E140H", "nominal": 4.5149046574936277e-14, "lam_med": 1253.2565669155058, "ra": 254.02175, "dec": -40.349333}, {"file": "h_o6lb05010_spc.fits", "obj": "HD152590", "mode": "E230H", "nominal": 1.9727611460545418e-14, "lam_med": 2258.8022539500084, "ra": 254.02175, "dec": -40.349333}, {"file": "h_o6lb05020_spc.fits", "obj": "HD152590", "mode": "E230H", "nominal": 1.5844157098414454e-14, "lam_med": 2258.7114500074495, "ra": 254.02175, "dec": -40.349333}, {"file": "h_o6lb05030_spc.fits", "obj": "HD152590", "mode": "E230H", "nominal": 1.5990428884348755e-14, "lam_med": 2258.7818645010275, "ra": 254.02175, "dec": -40.349333}, {"file": "h_o6lb05040_spc.fits", "obj": "HD152590", "mode": "E230H", "nominal": 1.6078052422987672e-14, "lam_med": 2258.8252932619735, "ra": 254.02175, "dec": -40.349333}, {"file": "h_o8na04010_spc.fits", "obj": "HD152590", "mode": "E140H", "nominal": 3.657671900691765e-14, "lam_med": 1252.565250024702, "ra": 254.02175, "dec": -40.349333}, {"file": "h_o8na04020_spc.fits", "obj": "HD152590", "mode": "E140H", "nominal": 1.9235537127199628e-14, "lam_med": 1252.5802164149652, "ra": 254.02175, "dec": -40.349333}, {"file": "h_o63586010_spc.fits", "obj": "HD152723", "mode": "E140H", "nominal": 1.172685888335679e-13, "lam_med": 1481.873347616846, "ra": 254.227792, "dec": -40.512333}, {"file": "h_o62u13010_spc.fits", "obj": "HD154417", "mode": "E230M", "nominal": 2.244832053203519e-14, "lam_med": 2661.1685792098297, "ra": 256.320095, "dec": 0.702435}, {"file": "h_o6e609010_spc.fits", "obj": "HD155646", "mode": "E230M", "nominal": 1.6394504284321156e-14, "lam_med": 2338.8270272900513, "ra": 258.226469, "dec": 0.352029}, {"file": "h_o4wf01010_spc.fits", "obj": "HD155886", "mode": "E230H", "nominal": 1.0729417220226844e-14, "lam_med": 2564.5931440882223, "ra": 258.836816, "dec": -26.601371}, {"file": "h_o4wf01020_spc.fits", "obj": "HD155886", "mode": "E230H", "nominal": 1.859765505788371e-14, "lam_med": 2800.4043701999435, "ra": 258.836816, "dec": -26.601371, "rec": [0.0, 0.3333333333333333, 0.5, 0.6666666666666666, 1.0, 0.8333333333333334]}, {"file": "h_o4wf01030_spc.fits", "obj": "HD155886", "mode": "E140H", "nominal": 6.080682314119697e-16, "lam_med": 1253.6948573459786, "ra": 258.836816, "dec": -26.601371}, {"file": "h_o5c01k010_spc.fits", "obj": "HD156110", "mode": "E140H", "nominal": 2.361765693304676e-13, "lam_med": 1256.5098807140794, "ra": 258.365491, "dec": 45.372233}, {"file": "h_o6lz70010_spc.fits", "obj": "HD156359", "mode": "E140M", "nominal": 8.452475368163739e-14, "lam_med": 1396.4427902755874, "ra": 260.328092, "dec": -62.918172, "rec": [0.0, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o62u14010_spc.fits", "obj": "HD157214", "mode": "E230H", "nominal": 9.488898760122144e-15, "lam_med": 2510.9387241508443, "ra": 260.164923, "dec": 32.467408}, {"file": "h_o6lm81010_spc.fits", "obj": "HD157466", "mode": "E230H", "nominal": 2.4086006074033026e-14, "lam_med": 3017.3111337593627, "ra": 260.615255, "dec": 24.879326}, {"file": "h_o6lm81020_spc.fits", "obj": "HD157466", "mode": "E230H", "nominal": 6.6702941928516405e-15, "lam_med": 2510.6785597549424, "ra": 260.615255, "dec": 24.879326}, {"file": "h_o6lm81030_spc.fits", "obj": "HD157466", "mode": "E230H", "nominal": 1.1199353089989955e-14, "lam_med": 2750.7910415369024, "ra": 260.615255, "dec": 24.879326}, {"file": "h_o6lm81040_spc.fits", "obj": "HD157466", "mode": "E230H", "nominal": 6.6985575253842575e-15, "lam_med": 2510.6758154062454, "ra": 260.615255, "dec": 24.879326}, {"file": "h_o6e610010_spc.fits", "obj": "HD157856", "mode": "E230M", "nominal": 2.2692084696340723e-14, "lam_med": 2338.8557408359575, "ra": 261.491197, "dec": -1.651765}, {"file": "h_o5c04d010_spc.fits", "obj": "HD157857", "mode": "E140H", "nominal": 8.455053604190725e-14, "lam_med": 1255.2428281735033, "ra": 261.572224, "dec": -10.992999, "rec": [0.0, 0.5, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o62u04010_spc.fits", "obj": "HD15798", "mode": "E230H", "nominal": 2.5576028271127784e-14, "lam_med": 2510.6888355605042, "ra": 38.021766, "dec": -15.244735}, {"file": "h_o6lt01010_spc.fits", "obj": "HD158643", "mode": "E140H", "nominal": 2.2838716160936496e-13, "lam_med": 1559.3045034850295, "ra": 262.854162, "dec": -23.962729}, {"file": "h_o6lt01020_spc.fits", "obj": "HD158643", "mode": "E140H", "nominal": 1.5589487201959723e-13, "lam_med": 1373.2752416801159, "ra": 262.854162, "dec": -23.962729}, {"file": "h_o6lt01030_spc.fits", "obj": "HD158643", "mode": "E230H", "nominal": 3.1055467110950684e-13, "lam_med": 1760.3205702287833, "ra": 262.854162, "dec": -23.962729}, {"file": "h_o6lt01040_spc.fits", "obj": "HD158643", "mode": "E230H", "nominal": 2.885106842306023e-13, "lam_med": 2010.2837093270903, "ra": 262.854162, "dec": -23.962729}, {"file": "h_o6lt01050_spc.fits", "obj": "HD158643", "mode": "E230H", "nominal": 2.4892269147868033e-13, "lam_med": 2258.654635091506, "ra": 262.854162, "dec": -23.962729}, {"file": "h_o6lt01060_spc.fits", "obj": "HD158643", "mode": "E230H", "nominal": 2.1975078808050575e-13, "lam_med": 2707.9127754167603, "ra": 262.854162, "dec": -23.962729, "rec": [0.0, 1.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o5cn05010_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 8.194669631613749e-15, "lam_med": 2010.1490837995311, "ra": 265.705523, "dec": -40.320961}, {"file": "h_o5cn05020_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 6.749780370521048e-15, "lam_med": 2010.1456410637675, "ra": 265.705523, "dec": -40.320961}, {"file": "h_o5cn05030_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.347962954391103e-15, "lam_med": 2010.1436365724794, "ra": 265.705523, "dec": -40.320961}, {"file": "h_o5cn05040_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.553891496452352e-15, "lam_med": 2010.1432325280953, "ra": 265.705523, "dec": -40.320961}, {"file": "h_o5cn05050_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.004897228044588e-15, "lam_med": 2010.1419437541776, "ra": 265.705523, "dec": -40.320961}, {"file": "h_o5cn06010_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 8.268762416185884e-15, "lam_med": 2010.4616265091931, "ra": 265.705519, "dec": -40.321004}, {"file": "h_o5cn06020_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 6.809786812297388e-15, "lam_med": 2010.4616881396882, "ra": 265.705519, "dec": -40.321004}, {"file": "h_o5cn06030_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.411147228590735e-15, "lam_med": 2010.4592256138626, "ra": 265.705519, "dec": -40.321004}, {"file": "h_o5cn06040_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.709703335587905e-15, "lam_med": 2010.456117206444, "ra": 265.705519, "dec": -40.321004}, {"file": "h_o5cn06050_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.151626609855732e-15, "lam_med": 2010.4556643988776, "ra": 265.705519, "dec": -40.321004}, {"file": "h_o5cn54010_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 8.1230490419298e-15, "lam_med": 2010.0503623272955, "ra": 265.705501, "dec": -40.321055, "rec": [0.0, 1.0, 1.0, 0.3333333333333333, 1.0, 1.0]}, {"file": "h_o5cn54020_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 6.454904988154316e-15, "lam_med": 2009.939422240431, "ra": 265.705501, "dec": -40.321055}, {"file": "h_o5cn54030_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.005694924559552e-15, "lam_med": 2009.814530827344, "ra": 265.705501, "dec": -40.321055}, {"file": "h_o5cn54040_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 7.35720983210973e-15, "lam_med": 2009.7280836156224, "ra": 265.705501, "dec": -40.321055}, {"file": "h_o5cn54050_spc.fits", "obj": "HD160617", "mode": "E230H", "nominal": 6.852926242767283e-15, "lam_med": 2009.6683057279265, "ra": 265.705501, "dec": -40.321055}, {"file": "h_o66v02010_spc.fits", "obj": "HD160641", "mode": "E140M", "nominal": 1.2339787746022474e-13, "lam_med": 1397.6397429897336, "ra": 265.464833, "dec": -17.896833}, {"file": "h_o8rk55010_spc.fits", "obj": "HD160762", "mode": "E140M", "nominal": 2.183786137088384e-11, "lam_med": 1395.926231279368, "ra": 264.866208, "dec": 46.006333}, {"file": "h_o8rk56010_spc.fits", "obj": "HD160762", "mode": "E230M", "nominal": 2.685883821174053e-11, "lam_med": 1950.4269972008842, "ra": 264.866208, "dec": 46.006333}, {"file": "h_o8o708010_spc.fits", "obj": "HD161044", "mode": "E140H", "nominal": 1.6244251789806175e-14, "lam_med": 1233.426885420987, "ra": 266.39725, "dec": -46.089778}, {"file": "h_o8o708020_spc.fits", "obj": "HD161044", "mode": "E140H", "nominal": 9.762712925698845e-15, "lam_med": 1233.6747578561292, "ra": 266.39725, "dec": -46.089778}, {"file": "h_o8o709010_spc.fits", "obj": "HD161044", "mode": "E140H", "nominal": 1.5920410397032537e-14, "lam_med": 1233.3327609853675, "ra": 266.39725, "dec": -46.089778}, {"file": "h_o8o709020_spc.fits", "obj": "HD161044", "mode": "E140H", "nominal": 1.0124858375011665e-14, "lam_med": 1233.4066544816912, "ra": 266.39725, "dec": -46.089778}, {"file": "h_o8o711010_spc.fits", "obj": "HD161044", "mode": "E140H", "nominal": 2.3620210237376143e-14, "lam_med": 1584.9138738064648, "ra": 266.39725, "dec": -46.089778}, {"file": "h_o8o711020_spc.fits", "obj": "HD161044", "mode": "E140H", "nominal": 1.4727537899130204e-14, "lam_med": 1584.6533461861904, "ra": 266.39725, "dec": -46.089778}, {"file": "h_o8qy18010_spc.fits", "obj": "HD161817", "mode": "E230M", "nominal": 4.0953930495483236e-14, "lam_med": 2661.3233212675777, "ra": 266.669224, "dec": 25.749099}, {"file": "h_o8qy18020_spc.fits", "obj": "HD161817", "mode": "E140M", "nominal": 9.881525245166382e-15, "lam_med": 1395.9689404227338, "ra": 266.669224, "dec": 25.749099}, {"file": "h_o6e603010_spc.fits", "obj": "HD16220", "mode": "E230M", "nominal": 2.2753590714209412e-14, "lam_med": 2365.791787647294, "ra": 39.277432, "dec": 32.891104}, {"file": "h_o4xn05040_spc.fits", "obj": "HD163296", "mode": "E140M", "nominal": 2.238236708816388e-14, "lam_med": 1396.68766419917, "ra": 269.0894, "dec": -21.956156}, {"file": "h_o66q01010_spc.fits", "obj": "HD163296", "mode": "E230M", "nominal": 7.220724454405342e-14, "lam_med": 1950.238601199168, "ra": 269.0887, "dec": -21.956078}, {"file": "h_o66q01020_spc.fits", "obj": "HD163296", "mode": "E230M", "nominal": 6.89961696153831e-14, "lam_med": 2642.601524107902, "ra": 269.0887, "dec": -21.956078, "rec": [0.0, 0.0, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "h_o66q01030_spc.fits", "obj": "HD163296", "mode": "E140M", "nominal": 1.6324306278968824e-14, "lam_med": 1389.8864721680025, "ra": 269.0887, "dec": -21.956078}, {"file": "h_o63595010_spc.fits", "obj": "HD163758", "mode": "E140H", "nominal": 1.0772231999442512e-13, "lam_med": 1484.396708120065, "ra": 269.868167, "dec": -36.021}, {"file": "h_o62u05010_spc.fits", "obj": "HD16399", "mode": "E230M", "nominal": 2.788456212169457e-14, "lam_med": 2662.2555468249757, "ra": 39.503152, "dec": 7.69528}, {"file": "h_o5c08r010_spc.fits", "obj": "HD164340", "mode": "E140H", "nominal": 4.4271405867027646e-14, "lam_med": 1255.9237736732991, "ra": 270.63725, "dec": -40.087889}, {"file": "h_o8o707010_spc.fits", "obj": "HD164963", "mode": "E140H", "nominal": 2.329808285132523e-14, "lam_med": 1233.3258253433667, "ra": 269.638708, "dec": 66.633028}, {"file": "h_o8o707020_spc.fits", "obj": "HD164963", "mode": "E140H", "nominal": 2.8039547894921713e-14, "lam_med": 1412.0401489007072, "ra": 269.638708, "dec": 66.633028, "rec": [0.0, 0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 1.0]}, {"file": "h_o6co07040_spc.fits", "obj": "HD165185", "mode": "E140M", "nominal": 2.2076808094306983e-15, "lam_med": 1396.0690642623442, "ra": 271.59886, "dec": -36.019783}, {"file": "h_o6co07050_spc.fits", "obj": "HD165185", "mode": "E140M", "nominal": 4.91155235853251e-15, "lam_med": 1396.0169407867404, "ra": 271.59886, "dec": -36.019783}, {"file": "h_o6co07060_spc.fits", "obj": "HD165185", "mode": "E230M", "nominal": 2.6464116867669847e-14, "lam_med": 2661.9081483748223, "ra": 271.59886, "dec": -36.019783}, {"file": "h_o5f608010_spc.fits", "obj": "HD165195", "mode": "E230M", "nominal": 3.316756639080968e-15, "lam_med": 2661.672053776192, "ra": 271.166973, "dec": 3.779081}, {"file": "h_o5f608020_spc.fits", "obj": "HD165195", "mode": "E230M", "nominal": 2.6512696992786406e-15, "lam_med": 2661.7159844996095, "ra": 271.166973, "dec": 3.779081}, {"file": "h_o8na05010_spc.fits", "obj": "HD165246", "mode": "E140H", "nominal": 6.978096076503975e-14, "lam_med": 1252.2158243285744, "ra": 271.5195, "dec": -24.195528}, {"file": "h_o8na05020_spc.fits", "obj": "HD165246", "mode": "E140H", "nominal": 6.294837800404398e-14, "lam_med": 1252.0504939542645, "ra": 271.5195, "dec": -24.195528, "rec": [0.0, 0.3333333333333333, 0.16666666666666666, 0.5, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o5bn05010_spc.fits", "obj": "HD165341", "mode": "E230M", "nominal": 1.3525710050570622e-14, "lam_med": 2058.11368092735, "ra": 271.363957, "dec": 2.499679}, {"file": "h_o5bn05020_spc.fits", "obj": "HD165341", "mode": "E230M", "nominal": 2.4063068999876698e-14, "lam_med": 2058.113608673806, "ra": 271.363957, "dec": 2.499679}, {"file": "h_o5bn05030_spc.fits", "obj": "HD165341", "mode": "E230H", "nominal": 2.041326193197377e-14, "lam_med": 2665.7069350811607, "ra": 271.363957, "dec": 2.499679}, {"file": "h_o5bn05040_spc.fits", "obj": "HD165341", "mode": "E230H", "nominal": 5.5692491905097976e-14, "lam_med": 2862.026284337451, "ra": 271.363957, "dec": 2.499679}, {"file": "h_o5bn05050_spc.fits", "obj": "HD165341", "mode": "E140M", "nominal": 2.945940184118638e-15, "lam_med": 1396.6659827508124, "ra": 271.363957, "dec": 2.499679}, {"file": "h_o5bn05060_spc.fits", "obj": "HD165341", "mode": "E140M", "nominal": 1.7419510553365433e-15, "lam_med": 1396.2392212409009, "ra": 271.363957, "dec": 2.499678, "rec": [0.0, 0.5, 1.0, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o4w240010_spc.fits", "obj": "HD16582", "mode": "E230H", "nominal": 4.111708776066907e-12, "lam_med": 2110.8645425400264, "ra": 39.870625, "dec": 0.3285}, {"file": "h_o4w240020_spc.fits", "obj": "HD16582", "mode": "E230H", "nominal": 5.020801939829874e-12, "lam_med": 2063.5557183109886, "ra": 39.870625, "dec": 0.3285}, {"file": "h_o4w240030_spc.fits", "obj": "HD16582", "mode": "E230H", "nominal": 4.990028586602169e-12, "lam_med": 2063.6062764568055, "ra": 39.870625, "dec": 0.3285}, {"file": "h_o4w240040_spc.fits", "obj": "HD16582", "mode": "E230H", "nominal": 3.1185507064378144e-11, "lam_med": 2010.0841457621805, "ra": 39.870625, "dec": 0.3285}, {"file": "h_o4w240050_spc.fits", "obj": "HD16582", "mode": "E230H", "nominal": 5.171560920638104e-12, "lam_med": 2010.0328134491676, "ra": 39.870625, "dec": 0.3285}, {"file": "h_o4w240060_spc.fits", "obj": "HD16582", "mode": "E230H", "nominal": 5.1501850304118686e-12, "lam_med": 2010.041363946943, "ra": 39.870625, "dec": 0.3285, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o62u15010_spc.fits", "obj": "HD165908", "mode": "E230H", "nominal": 2.0816301775544495e-14, "lam_med": 2514.670067064495, "ra": 271.75638, "dec": 30.56215}, {"file": "h_o63599010_spc.fits", "obj": "HD165955", "mode": "E140M", "nominal": 8.598211229070807e-14, "lam_med": 1392.131157610243, "ra": 272.491543, "dec": -34.868723, "rec": [0.0, 1.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o8oe04010_spc.fits", "obj": "HD166913", "mode": "E230M", "nominal": 1.719446310450526e-14, "lam_med": 2661.5192984032874, "ra": 274.106431, "dec": -59.403255}, {"file": "h_o8oe04020_spc.fits", "obj": "HD166913", "mode": "E230M", "nominal": 1.4083044635624817e-14, "lam_med": 2661.524667873368, "ra": 274.106431, "dec": -59.403255}, {"file": "h_o8oe04030_spc.fits", "obj": "HD166913", "mode": "E230M", "nominal": 1.3855656203719091e-14, "lam_med": 2661.5289037745497, "ra": 274.106431, "dec": -59.403255}, {"file": "h_o61t01010_spc.fits", "obj": "HD166", "mode": "E140M", "nominal": 1.7458226581647192e-15, "lam_med": 1397.4093490761022, "ra": 1.653351, "dec": 29.021476, "rec": [0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o59c01010_spc.fits", "obj": "HD167362", "mode": "E140M", "nominal": 1.478128918219684e-14, "lam_med": 1397.7298718611867, "ra": 274.05075, "dec": -30.868917}, {"file": "h_o6mb05010_spc.fits", "obj": "HD168476", "mode": "E230M", "nominal": 1.8869642102426647e-14, "lam_med": 2218.362974753476, "ra": 275.811334, "dec": -56.628726}, {"file": "h_o6mb05020_spc.fits", "obj": "HD168476", "mode": "E230M", "nominal": 1.3965039643896841e-14, "lam_med": 2218.344316166884, "ra": 275.811334, "dec": -56.628726}, {"file": "h_o6lz81010_spc.fits", "obj": "HD168941", "mode": "E140M", "nominal": 8.10675613304932e-14, "lam_med": 1396.12637612653, "ra": 275.8565, "dec": -26.953034}, {"file": "h_o62u06010_spc.fits", "obj": "HD16895", "mode": "E230H", "nominal": 2.5308359422975233e-14, "lam_med": 2510.7380181622866, "ra": 41.050064, "dec": 49.228431}, {"file": "h_o5c01o010_spc.fits", "obj": "HD175156", "mode": "E140H", "nominal": 8.826031782469758e-14, "lam_med": 1253.3635385400273, "ra": 283.679662, "dec": -15.603014}, {"file": "h_o5f609010_spc.fits", "obj": "HD175305", "mode": "E230M", "nominal": 8.931533615382894e-15, "lam_med": 2662.3421202579348, "ra": 281.776569, "dec": 74.72541}, {"file": "h_o5c047010_spc.fits", "obj": "HD175360", "mode": "E140H", "nominal": 1.917574798073605e-13, "lam_med": 1254.7385901626524, "ra": 284.002789, "dec": -23.173757}, {"file": "h_o44n02160_spc.fits", "obj": "HD177989", "mode": "E230H", "nominal": 1.370489388178255e-14, "lam_med": 2707.738370775657, "ra": 286.907417, "dec": -18.726333}, {"file": "h_o44n02170_spc.fits", "obj": "HD177989", "mode": "E230H", "nominal": 1.3687415838058647e-14, "lam_med": 2707.740232322675, "ra": 286.907417, "dec": -18.726333}, {"file": "h_o44n02180_spc.fits", "obj": "HD177989", "mode": "E230H", "nominal": 1.3747260870969326e-14, "lam_med": 2707.7421236836435, "ra": 286.907417, "dec": -18.726333}, {"file": "h_o44n02190_spc.fits", "obj": "HD177989", "mode": "E230H", "nominal": 1.3975672617990863e-14, "lam_med": 2707.7454254341087, "ra": 286.907417, "dec": -18.726333, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o44n021a0_spc.fits", "obj": "HD177989", "mode": "E230H", "nominal": 1.6345319437364515e-14, "lam_med": 2707.744294262595, "ra": 286.907417, "dec": -18.726333}, {"file": "h_o57r03010_spc.fits", "obj": "HD177989", "mode": "E140H", "nominal": 4.1504582407873786e-14, "lam_med": 1255.569618299991, "ra": 286.907375, "dec": -18.726333}, {"file": "h_o57r03020_spc.fits", "obj": "HD177989", "mode": "E140H", "nominal": 3.1447707541553817e-14, "lam_med": 1255.4448134876345, "ra": 286.907375, "dec": -18.726333}, {"file": "h_o57r03030_spc.fits", "obj": "HD177989", "mode": "E140H", "nominal": 1.8905663046052207e-14, "lam_med": 1451.7042628346935, "ra": 286.907375, "dec": -18.726333}, {"file": "h_o57r04010_spc.fits", "obj": "HD177989", "mode": "E140H", "nominal": 4.3998834766131743e-14, "lam_med": 1483.8533746234077, "ra": 286.907375, "dec": -18.726333}, {"file": "h_o57r04020_spc.fits", "obj": "HD177989", "mode": "E140H", "nominal": 1.9313955046942348e-14, "lam_med": 1484.1804069226664, "ra": 286.907375, "dec": -18.726333}, {"file": "h_o6e604010_spc.fits", "obj": "HD17948", "mode": "E230H", "nominal": 1.330056564928298e-14, "lam_med": 2510.9852177166886, "ra": 43.987324, "dec": 61.52119}, {"file": "h_o63511010_spc.fits", "obj": "HD18100", "mode": "E140H", "nominal": 1.5514322328972464e-13, "lam_med": 1481.7701896864169, "ra": 43.420042, "dec": -26.155693}, {"file": "h_o8mi01010_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.7890124902116195e-14, "lam_med": 1760.2321637810478, "ra": 292.339, "dec": -7.044088}, {"file": "h_o8mi01020_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.3688216652306043e-14, "lam_med": 1760.2347788454304, "ra": 292.339, "dec": -7.044088}, {"file": "h_o8mi01030_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.4091290158012919e-14, "lam_med": 1760.1854677568606, "ra": 292.339, "dec": -7.044088}, {"file": "h_o8mi01040_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.8170128738847665e-14, "lam_med": 1760.1914088376848, "ra": 292.339, "dec": -7.044088}, {"file": "h_o8mi01050_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.4480845605963752e-14, "lam_med": 1760.1534232130903, "ra": 292.339, "dec": -7.044088}, {"file": "h_o8mi02010_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.8326269818807497e-14, "lam_med": 1760.2359042289163, "ra": 292.339, "dec": -7.044088}, {"file": "h_o8mi02020_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.3132390770323189e-14, "lam_med": 1760.2305919948758, "ra": 292.339, "dec": -7.044088}, {"file": "h_o8mi02030_spc.fits", "obj": "HD183344", "mode": "E230H", "nominal": 1.3595663150219196e-14, "lam_med": 1760.1849147052747, "ra": 292.339, "dec": -7.044088}, {"file": "h_o56d15010_spc.fits", "obj": "HD184499", "mode": "E230M", "nominal": 5.165909780325369e-14, "lam_med": 2661.166992204598, "ra": 293.362993, "dec": 33.201825}, {"file": "h_o6lm91010_spc.fits", "obj": "HD184499", "mode": "E230H", "nominal": 2.3759757179081798e-14, "lam_med": 3017.372720503272, "ra": 293.362396, "dec": 33.202044}, {"file": "h_o6lm91020_spc.fits", "obj": "HD184499", "mode": "E230H", "nominal": 6.028619102535629e-15, "lam_med": 2510.7282197675668, "ra": 293.362396, "dec": 33.202044}, {"file": "h_o6lm91030_spc.fits", "obj": "HD184499", "mode": "E230H", "nominal": 1.0585353772062501e-14, "lam_med": 2750.856052488928, "ra": 293.362396, "dec": 33.202044}, {"file": "h_o6lm91040_spc.fits", "obj": "HD184499", "mode": "E230H", "nominal": 6.073262438908201e-15, "lam_med": 2510.7230125754054, "ra": 293.362396, "dec": 33.202045, "rec": [0.0, 0.0, 0.0, 0.0, 0.5, 1.0]}, {"file": "h_o6lm91050_spc.fits", "obj": "HD184499", "mode": "E140M", "nominal": 2.1478721317019713e-15, "lam_med": 1396.1879055586471, "ra": 293.362396, "dec": 33.202045}, {"file": "h_o52901010_spc.fits", "obj": "HD184738", "mode": "E140M", "nominal": 5.009442902156013e-14, "lam_med": 1397.2396389419068, "ra": 293.688654, "dec": 30.516506}, {"file": "h_o52901020_spc.fits", "obj": "HD184738", "mode": "E140M", "nominal": 2.1504926406083234e-14, "lam_med": 1397.3251174796467, "ra": 293.688654, "dec": 30.516506}, {"file": "h_o59c02010_spc.fits", "obj": "HD184738", "mode": "E140M", "nominal": 2.340657001447035e-14, "lam_med": 1397.6397757229909, "ra": 293.688333, "dec": 30.516472}, {"file": "h_o5ep01010_spc.fits", "obj": "HD184738", "mode": "E230H", "nominal": 4.423459744707996e-15, "lam_med": 2405.712205127241, "ra": 293.688542, "dec": 30.516472}, {"file": "h_o5ep01020_spc.fits", "obj": "HD184738", "mode": "E230H", "nominal": 4.507486112879676e-15, "lam_med": 2405.689245437975, "ra": 293.688542, "dec": 30.516472}, {"file": "h_o5ep02010_spc.fits", "obj": "HD184738", "mode": "E230H", "nominal": 3.79593778436054e-15, "lam_med": 2405.909710374653, "ra": 293.688542, "dec": 30.516472}, {"file": "h_o5ep02020_spc.fits", "obj": "HD184738", "mode": "E230H", "nominal": 3.892579052937367e-15, "lam_med": 2405.8688755340345, "ra": 293.688542, "dec": 30.516472}, {"file": "h_o6e611010_spc.fits", "obj": "HD184985", "mode": "E230M", "nominal": 2.547632770851996e-14, "lam_med": 2338.8932231061053, "ra": 294.393353, "dec": -14.301871}, {"file": "h_o5c01q010_spc.fits", "obj": "HD185418", "mode": "E140H", "nominal": 9.376981800914957e-14, "lam_med": 1256.530218779226, "ra": 294.614508, "dec": 17.257235}, {"file": "h_o5f610010_spc.fits", "obj": "HD186478", "mode": "E230M", "nominal": 3.4123127220025955e-15, "lam_med": 2654.968338075263, "ra": 296.308908, "dec": -17.49083}, {"file": "h_o5f610020_spc.fits", "obj": "HD186478", "mode": "E230M", "nominal": 1.4194718821774447e-15, "lam_med": 2654.7188397009795, "ra": 296.308908, "dec": -17.49083}, {"file": "h_o5f611010_spc.fits", "obj": "HD186478", "mode": "E230M", "nominal": 3.812301604993784e-15, "lam_med": 2662.2208158006533, "ra": 296.308906, "dec": -17.490836, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 0.5, 1.0, 1.0]}, {"file": "h_o8pg05010_spc.fits", "obj": "HD187311", "mode": "E140M", "nominal": 4.044234624770457e-14, "lam_med": 1396.3421931850867, "ra": 297.769583, "dec": -41.023231}, {"file": "h_o52601020_spc.fits", "obj": "HD187691", "mode": "E230M", "nominal": 3.5753195139320596e-14, "lam_med": 2659.844233780018, "ra": 297.756776, "dec": 10.415755, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.6666666666666666]}, {"file": "h_o6e612010_spc.fits", "obj": "HD190009", "mode": "E230M", "nominal": 1.615952642956607e-14, "lam_med": 2338.8997296391776, "ra": 300.934586, "dec": -22.595572, "rec": [0.0, 0.0, 0.3333333333333333, 0.0, 0.5, 0.8333333333333334]}, {"file": "h_o6359j010_spc.fits", "obj": "HD190918", "mode": "E140M", "nominal": 2.1671869292485996e-13, "lam_med": 1397.8833319883715, "ra": 301.488875, "dec": 35.788362}, {"file": "h_o5c054010_spc.fits", "obj": "HD1909", "mode": "E140H", "nominal": 9.425853109238902e-14, "lam_med": 1253.4215224716177, "ra": 5.802503, "dec": -31.035772}, {"file": "h_o6e613010_spc.fits", "obj": "HD191195", "mode": "E230M", "nominal": 2.921519039544922e-14, "lam_med": 2341.0898373116006, "ra": 301.557885, "dec": 53.165874}, {"file": "h_o8pg07010_spc.fits", "obj": "HD191466", "mode": "E140M", "nominal": 5.867418195955399e-14, "lam_med": 1395.984657204117, "ra": 303.242, "dec": -56.846639}, {"file": "h_o6359k010_spc.fits", "obj": "HD192035", "mode": "E140M", "nominal": 8.088543463327387e-14, "lam_med": 1395.9394468699809, "ra": 302.706625, "dec": 47.813111, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o44n010d0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.6735994438350888e-14, "lam_med": 2707.734384754759, "ra": 304.775234, "dec": -69.434873}, {"file": "h_o44n010e0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.7497366084092754e-14, "lam_med": 2707.734337766966, "ra": 304.775234, "dec": -69.434873, "rec": [0.0, 1.0, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o44n010f0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.6971073883995358e-14, "lam_med": 2707.7362810598197, "ra": 304.775234, "dec": -69.434873}, {"file": "h_o44n010g0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.8840164921412825e-14, "lam_med": 2707.7366198224645, "ra": 304.775234, "dec": -69.434873}, {"file": "h_o44n010h0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.7816238783893936e-14, "lam_med": 2707.738596743373, "ra": 304.775234, "dec": -69.434873, "rec": [0.0, 1.0, 0.6666666666666666, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o44n010i0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.9068977868572667e-14, "lam_med": 2707.738952322099, "ra": 304.775234, "dec": -69.434873}, {"file": "h_o44n010j0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.695445504329618e-14, "lam_med": 2707.7409830153456, "ra": 304.775234, "dec": -69.434873}, {"file": "h_o44n010k0_spc.fits", "obj": "HD192273", "mode": "E230H", "nominal": 1.808045376585306e-14, "lam_med": 2707.7409317402407, "ra": 304.775234, "dec": -69.434873}, {"file": "h_o5c01r010_spc.fits", "obj": "HD192273", "mode": "E140H", "nominal": 1.5273784397761536e-13, "lam_med": 1256.054706330896, "ra": 304.776384, "dec": -69.435135}, {"file": "h_o6ff010a0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 1.0436392534601758e-13, "lam_med": 1756.946621690939, "ra": 303.407934, "dec": 46.741339}, {"file": "h_o6ff010b0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 3.8977684405488896e-14, "lam_med": 3017.513349503053, "ra": 303.407934, "dec": 46.741339}, {"file": "h_o6ff010c0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 7.738899628989148e-14, "lam_med": 1589.0473330722477, "ra": 303.407934, "dec": 46.741339}, {"file": "h_o6ff010d0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 7.511036611265242e-14, "lam_med": 1230.5649916714365, "ra": 303.407934, "dec": 46.741339}, {"file": "h_o6ff010e0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 1.0345208884846566e-13, "lam_med": 1411.2157099161598, "ra": 303.407934, "dec": 46.741339}, {"file": "h_o6ff010f0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 7.303868734595142e-14, "lam_med": 2007.6015728940677, "ra": 303.407934, "dec": 46.741339, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o6ff010g0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 3.968104639413386e-14, "lam_med": 2751.045951995662, "ra": 303.407934, "dec": 46.741339}, {"file": "h_o6ff020b0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 2.783634031024156e-13, "lam_med": 1585.753517422489, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020c0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 4.008857718979062e-13, "lam_med": 1412.440777847257, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020d0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 4.2012070447362745e-13, "lam_med": 1231.4514507124807, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020e0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 3.767446123671905e-13, "lam_med": 1760.2217226911057, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020f0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 1.231174238891489e-13, "lam_med": 3017.4007333071386, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020g0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 2.1473080529415715e-13, "lam_med": 2258.554698107206, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020h0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 1.600819232602661e-13, "lam_med": 2510.7611984213304, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020i0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 1.298101184517832e-13, "lam_med": 2750.9098780053187, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff020j0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 2.985316136953969e-13, "lam_med": 2010.2173946875073, "ra": 303.407936, "dec": 46.741339}, {"file": "h_o6ff110a0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 4.728631494452205e-13, "lam_med": 1759.0648207090576, "ra": 303.407935, "dec": 46.741339}, {"file": "h_o6ff110b0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 1.5518991887788233e-13, "lam_med": 3017.2945026423363, "ra": 303.407935, "dec": 46.741339}, {"file": "h_o6ff110c0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 3.598683304560607e-13, "lam_med": 1587.0407907218914, "ra": 303.407935, "dec": 46.741339}, {"file": "h_o6ff110d0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 3.74577135437173e-13, "lam_med": 1231.340187896631, "ra": 303.407935, "dec": 46.741339}, {"file": "h_o6ff110e0_spc.fits", "obj": "HD192577", "mode": "E140H", "nominal": 4.999262004621539e-13, "lam_med": 1413.0029127248908, "ra": 303.407935, "dec": 46.741339}, {"file": "h_o6ff110f0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 3.4457471672994807e-13, "lam_med": 2010.173505772973, "ra": 303.407935, "dec": 46.741339}, {"file": "h_o6ff110g0_spc.fits", "obj": "HD192577", "mode": "E230H", "nominal": 1.41179959660378e-13, "lam_med": 2750.8453547599274, "ra": 303.407935, "dec": 46.741339}, {"file": "h_o5c08t010_spc.fits", "obj": "HD192639", "mode": "E140H", "nominal": 3.8371441491466103e-14, "lam_med": 1253.1509454278762, "ra": 303.626792, "dec": 37.353833, "rec": [0.0, 0.5, 0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 1.0]}, {"file": "h_o56d01010_spc.fits", "obj": "HD19445", "mode": "E230M", "nominal": 3.455771010780677e-14, "lam_med": 2661.377714187445, "ra": 47.10669, "dec": 26.331168}, {"file": "h_o56d03010_spc.fits", "obj": "HD19445", "mode": "E230M", "nominal": 3.260754440767206e-14, "lam_med": 2661.1312385205338, "ra": 47.106695, "dec": 26.331182}, {"file": "h_o5c04l010_spc.fits", "obj": "HD195455", "mode": "E140H", "nominal": 7.843192802516112e-14, "lam_med": 1252.9983712067406, "ra": 308.061212, "dec": -24.067689}, {"file": "h_o6bg01010_spc.fits", "obj": "HD195965", "mode": "E140H", "nominal": 2.6837029413245967e-13, "lam_med": 1292.8453318317252, "ra": 308.106792, "dec": 48.216417}, {"file": "h_o6bg01020_spc.fits", "obj": "HD195965", "mode": "E140H", "nominal": 3.3231948924359626e-13, "lam_med": 1483.1024740982048, "ra": 308.106792, "dec": 48.216417}, {"file": "h_o6bg01030_spc.fits", "obj": "HD195965", "mode": "E230H", "nominal": 2.0256427065456106e-13, "lam_med": 1909.3604551670885, "ra": 308.106792, "dec": 48.216417}, {"file": "h_o50001010_spc.fits", "obj": "HD196867", "mode": "E140H", "nominal": 5.1326542955979e-13, "lam_med": 1231.0750511470515, "ra": 309.90958, "dec": 15.912028}, {"file": "h_o50001020_spc.fits", "obj": "HD196867", "mode": "E140H", "nominal": 4.70110279446455e-13, "lam_med": 1231.0386116585582, "ra": 309.90958, "dec": 15.912028}, {"file": "h_o50001030_spc.fits", "obj": "HD196867", "mode": "E140H", "nominal": 1.3143438697715215e-12, "lam_med": 1587.6437839472446, "ra": 309.90958, "dec": 15.912028, "rec": [0.0, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o50001040_spc.fits", "obj": "HD196867", "mode": "E140H", "nominal": 1.1045362213407068e-12, "lam_med": 1587.6455261981741, "ra": 309.90958, "dec": 15.912028}, {"file": "h_o4z301010_spc.fits", "obj": "HD197481", "mode": "E140M", "nominal": 1.9112569355879514e-15, "lam_med": 1396.5508729706655, "ra": 311.289422, "dec": -31.340621}, {"file": "h_o4z301020_spc.fits", "obj": "HD197481", "mode": "E140M", "nominal": 1.6064622844820857e-15, "lam_med": 1396.420583452585, "ra": 311.289422, "dec": -31.340621}, {"file": "h_o4z301030_spc.fits", "obj": "HD197481", "mode": "E140M", "nominal": 1.735278765028165e-15, "lam_med": 1396.4804954169194, "ra": 311.289422, "dec": -31.340621}, {"file": "h_o4z301040_spc.fits", "obj": "HD197481", "mode": "E140M", "nominal": 1.8575949425769567e-15, "lam_med": 1396.4233259313403, "ra": 311.289422, "dec": -31.340621}, {"file": "h_o6e614010_spc.fits", "obj": "HD198084", "mode": "E230H", "nominal": 1.0426572470743206e-14, "lam_med": 2511.6690929943584, "ra": 311.337937, "dec": 57.579614}, {"file": "h_o5c06j010_spc.fits", "obj": "HD198478", "mode": "E140H", "nominal": 7.269940284255103e-14, "lam_med": 1254.8527418244678, "ra": 312.234537, "dec": 46.114132, "rec": [0.0, 0.3333333333333333, 0.3333333333333333, 0.5, 0.8333333333333334, 0.3333333333333333]}, {"file": "h_o5c049010_spc.fits", "obj": "HD198781", "mode": "E140H", "nominal": 1.8036586322437023e-13, "lam_med": 1253.33282048006, "ra": 312.322454, "dec": 64.042267}, {"file": "h_o5c07d010_spc.fits", "obj": "HD1999", "mode": "E140H", "nominal": 3.736400068090326e-14, "lam_med": 1253.3030686195016, "ra": 6.015209, "dec": -37.410598}, {"file": "h_o6e615010_spc.fits", "obj": "HD200790", "mode": "E230M", "nominal": 1.885951664185867e-14, "lam_med": 2342.9931474473356, "ra": 316.361373, "dec": 5.958177}, {"file": "h_o5cl02030_spc.fits", "obj": "HD201272", "mode": "E140H", "nominal": 8.791539929897928e-15, "lam_med": 1586.5580843808777, "ra": 316.757625, "dec": 42.236092, "rec": [0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o5cl02040_spc.fits", "obj": "HD201272", "mode": "E140H", "nominal": 8.745765620875659e-15, "lam_med": 1586.890610303753, "ra": 316.757625, "dec": 42.236092}, {"file": "h_o5cl02050_spc.fits", "obj": "HD201272", "mode": "E140H", "nominal": 8.834157254184784e-15, "lam_med": 1586.3720338986795, "ra": 316.757625, "dec": 42.236092}, {"file": "h_o5cl02060_spc.fits", "obj": "HD201272", "mode": "E140H", "nominal": 8.954659343897895e-15, "lam_med": 1586.8923939150968, "ra": 316.757625, "dec": 42.236092}, {"file": "h_o5cl02070_spc.fits", "obj": "HD201272", "mode": "E140H", "nominal": 9.08702578296466e-15, "lam_med": 1586.428784924518, "ra": 316.757625, "dec": 42.236092}, {"file": "h_o5c050010_spc.fits", "obj": "HD201345", "mode": "E140H", "nominal": 2.288682646004493e-13, "lam_med": 1256.5884981001163, "ra": 316.980879, "dec": 33.39701}, {"file": "h_o6359p010_spc.fits", "obj": "HD201345", "mode": "E140H", "nominal": 2.396016011914169e-13, "lam_med": 1483.4800247338121, "ra": 316.980875, "dec": 33.397, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o56d18010_spc.fits", "obj": "HD201891", "mode": "E230M", "nominal": 3.363551914572105e-14, "lam_med": 2661.517777986238, "ra": 317.995997, "dec": 17.727966}, {"file": "h_o5c051010_spc.fits", "obj": "HD201908", "mode": "E140H", "nominal": 1.822397946490987e-13, "lam_med": 1253.3902534253216, "ra": 316.37171, "dec": 78.126403}, {"file": "h_o5g301010_spc.fits", "obj": "HD202347", "mode": "E140H", "nominal": 2.0883759280290662e-13, "lam_med": 1253.2904021929348, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o5g301020_spc.fits", "obj": "HD202347", "mode": "E140H", "nominal": 3.2991597980221085e-13, "lam_med": 1449.9870831248259, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o5g301030_spc.fits", "obj": "HD202347", "mode": "E140H", "nominal": 3.3279234968347854e-13, "lam_med": 1449.9789770794941, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o5g301040_spc.fits", "obj": "HD202347", "mode": "E140H", "nominal": 2.1668291537608463e-13, "lam_med": 1483.6521571166697, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o5g301050_spc.fits", "obj": "HD202347", "mode": "E230H", "nominal": 2.309646546715746e-13, "lam_med": 1760.194747283836, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o5g301060_spc.fits", "obj": "HD202347", "mode": "E230H", "nominal": 1.1870970625561749e-13, "lam_med": 2010.2241071498283, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o5g301070_spc.fits", "obj": "HD202347", "mode": "E230H", "nominal": 9.894557522470412e-14, "lam_med": 2258.520845747657, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o5g301080_spc.fits", "obj": "HD202347", "mode": "E230H", "nominal": 8.725968876828802e-14, "lam_med": 2514.504980651482, "ra": 318.424417, "dec": 45.611472}, {"file": "h_o6co03040_spc.fits", "obj": "HD203244", "mode": "E140M", "nominal": 1.4140054351182214e-15, "lam_med": 1395.7664709812282, "ra": 321.169504, "dec": -68.227771}, {"file": "h_o6co03050_spc.fits", "obj": "HD203244", "mode": "E140M", "nominal": 3.4161318309723545e-15, "lam_med": 1395.53921812917, "ra": 321.169504, "dec": -68.227771}, {"file": "h_o6co03060_spc.fits", "obj": "HD203244", "mode": "E230M", "nominal": 1.2279138873904514e-14, "lam_med": 2662.2611361642585, "ra": 321.169504, "dec": -68.227771}, {"file": "h_o5dn04040_spc.fits", "obj": "HD203338", "mode": "E230H", "nominal": 1.0225064656169846e-13, "lam_med": 3017.5608406718848, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5dn04050_spc.fits", "obj": "HD203338", "mode": "E230H", "nominal": 8.637367879872367e-14, "lam_med": 2862.3374805613603, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5dn04060_spc.fits", "obj": "HD203338", "mode": "E230H", "nominal": 7.595690173826808e-14, "lam_med": 2707.954837611398, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5dn04070_spc.fits", "obj": "HD203338", "mode": "E230H", "nominal": 6.490015517591367e-14, "lam_med": 2564.9932623273585, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5dn04080_spc.fits", "obj": "HD203338", "mode": "E230H", "nominal": 5.954124800111778e-14, "lam_med": 2405.9962767411225, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5dn04090_spc.fits", "obj": "HD203338", "mode": "E230H", "nominal": 4.607508797932053e-14, "lam_med": 2258.716874768981, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5dn040a0_spc.fits", "obj": "HD203338", "mode": "E230M", "nominal": 1.8430922812378054e-13, "lam_med": 1950.1456900372523, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5dn040b0_spc.fits", "obj": "HD203338", "mode": "E140M", "nominal": 1.9707779564354902e-13, "lam_med": 1396.4436185637978, "ra": 319.815305, "dec": 58.623542}, {"file": "h_o5lh08010_spc.fits", "obj": "HD203374", "mode": "E140H", "nominal": 1.0193912290501742e-13, "lam_med": 1254.5492918927607, "ra": 319.780662, "dec": 61.85845}, {"file": "h_o5lh08020_spc.fits", "obj": "HD203374", "mode": "E140H", "nominal": 9.401166735330215e-14, "lam_med": 1254.6448855950264, "ra": 319.780662, "dec": 61.85845}, {"file": "h_o5lh08030_spc.fits", "obj": "HD203374", "mode": "E140H", "nominal": 8.84435983839408e-14, "lam_med": 1254.6757072811552, "ra": 319.780662, "dec": 61.85845}, {"file": "h_o5lh08040_spc.fits", "obj": "HD203374", "mode": "E230H", "nominal": 1.438695813006346e-13, "lam_med": 1760.2255532957647, "ra": 319.780662, "dec": 61.85845}, {"file": "h_o5lh08050_spc.fits", "obj": "HD203374", "mode": "E230H", "nominal": 1.4573370853939516e-13, "lam_med": 1760.2320983365853, "ra": 319.780662, "dec": 61.85845}, {"file": "h_o5lh08060_spc.fits", "obj": "HD203374", "mode": "E230H", "nominal": 1.3230118716199762e-13, "lam_med": 1760.2242425503136, "ra": 319.780662, "dec": 61.85845}, {"file": "h_o5bn40010_spc.fits", "obj": "HD203387", "mode": "E140M", "nominal": 2.6496267431815725e-15, "lam_med": 1392.1810396259043, "ra": 320.561673, "dec": -16.834554}, {"file": "h_o5bn40020_spc.fits", "obj": "HD203387", "mode": "E140M", "nominal": 1.2673771086651073e-15, "lam_med": 1392.515382908037, "ra": 320.561673, "dec": -16.834554}, {"file": "h_o5bn40030_spc.fits", "obj": "HD203387", "mode": "E140M", "nominal": 4.28961921285359e-15, "lam_med": 1391.1122746043718, "ra": 320.561673, "dec": -16.834554}, {"file": "h_o5bn40040_spc.fits", "obj": "HD203387", "mode": "E230H", "nominal": 1.619409500488436e-14, "lam_med": 2657.0442966699447, "ra": 320.561673, "dec": -16.834554, "rec": [0.0, 0.0, 0.3333333333333333, 0.5, 0.6666666666666666, 1.0]}, {"file": "h_o5bn41010_spc.fits", "obj": "HD203387", "mode": "E230M", "nominal": 1.3584209630790017e-14, "lam_med": 2075.94575589767, "ra": 320.561674, "dec": -16.834554}, {"file": "h_o5bn41020_spc.fits", "obj": "HD203387", "mode": "E230M", "nominal": 1.3368943303673224e-14, "lam_med": 2075.93956303486, "ra": 320.561674, "dec": -16.834554, "rec": [0.0, 0.3333333333333333, 0.5, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o5bn41030_spc.fits", "obj": "HD203387", "mode": "E230H", "nominal": 4.1614647560195563e-14, "lam_med": 2851.936009011122, "ra": 320.561674, "dec": -16.834554}, {"file": "h_o5c01s010_spc.fits", "obj": "HD203532", "mode": "E140H", "nominal": 8.901333303259796e-14, "lam_med": 1255.872524052173, "ra": 323.476972, "dec": -82.68309}, {"file": "h_o6e605010_spc.fits", "obj": "HD20395", "mode": "E230M", "nominal": 3.026811929637741e-14, "lam_med": 2365.4530878767937, "ra": 49.149046, "dec": -9.154663}, {"file": "h_o5bn50010_spc.fits", "obj": "HD204867", "mode": "E140M", "nominal": 3.692043022182078e-15, "lam_med": 1391.710409526161, "ra": 322.889711, "dec": -5.571167}, {"file": "h_o5bn50020_spc.fits", "obj": "HD204867", "mode": "E140M", "nominal": 1.559538359955949e-15, "lam_med": 1392.4274050423955, "ra": 322.889711, "dec": -5.571167}, {"file": "h_o5bn51010_spc.fits", "obj": "HD204867", "mode": "E230M", "nominal": 1.690996809923378e-14, "lam_med": 2071.6997158725117, "ra": 322.889712, "dec": -5.571167}, {"file": "h_o5bn51020_spc.fits", "obj": "HD204867", "mode": "E230H", "nominal": 6.802844032642196e-14, "lam_med": 2852.3230019461694, "ra": 322.889712, "dec": -5.571167, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.3333333333333333]}, {"file": "h_o5bn51030_spc.fits", "obj": "HD204867", "mode": "E230H", "nominal": 3.046858412832265e-14, "lam_med": 2657.0815575938736, "ra": 322.889712, "dec": -5.571167}, {"file": "h_o5bn51040_spc.fits", "obj": "HD204867", "mode": "E140M", "nominal": 5.034869414888323e-15, "lam_med": 1391.1937564033537, "ra": 322.889712, "dec": -5.571167, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o5bn51050_spc.fits", "obj": "HD204867", "mode": "E140M", "nominal": 3.0220016589303767e-15, "lam_med": 1392.2478373864747, "ra": 322.889712, "dec": -5.571167}, {"file": "h_o4w250010_spc.fits", "obj": "HD205021", "mode": "E230H", "nominal": 7.531924259949947e-12, "lam_med": 2066.2769628259093, "ra": 322.164333, "dec": 70.560944}, {"file": "h_o4w250020_spc.fits", "obj": "HD205021", "mode": "E230H", "nominal": 7.59753757999206e-12, "lam_med": 2066.2813156504326, "ra": 322.164333, "dec": 70.560944, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4w250030_spc.fits", "obj": "HD205021", "mode": "E230H", "nominal": 1.1179576008795442e-11, "lam_med": 2010.2366396605466, "ra": 322.164333, "dec": 70.560944}, {"file": "h_o4w250040_spc.fits", "obj": "HD205021", "mode": "E230H", "nominal": 8.344483152878653e-12, "lam_med": 2111.239088314075, "ra": 322.164333, "dec": 70.560944}, {"file": "h_o4w250050_spc.fits", "obj": "HD205021", "mode": "E230H", "nominal": 1.0343700742009951e-11, "lam_med": 1964.5180339018725, "ra": 322.164333, "dec": 70.560944}, {"file": "h_o6e616010_spc.fits", "obj": "HD205420", "mode": "E230M", "nominal": 1.720932420430556e-14, "lam_med": 2363.247056451536, "ra": 323.641505, "dec": 22.754477}, {"file": "h_o5lh09010_spc.fits", "obj": "HD206267", "mode": "E140H", "nominal": 1.8575014945341429e-13, "lam_med": 1254.5484964733268, "ra": 324.740075, "dec": 57.489036}, {"file": "h_o5lh09020_spc.fits", "obj": "HD206267", "mode": "E140H", "nominal": 1.8426126633806353e-13, "lam_med": 1254.6001115166969, "ra": 324.740075, "dec": 57.489036}, {"file": "h_o5lh09030_spc.fits", "obj": "HD206267", "mode": "E230H", "nominal": 3.302579895687035e-13, "lam_med": 1760.23922765289, "ra": 324.740075, "dec": 57.489036}, {"file": "h_o5lh09040_spc.fits", "obj": "HD206267", "mode": "E230H", "nominal": 3.3384883146709833e-13, "lam_med": 1760.23923900901, "ra": 324.740075, "dec": 57.489036}, {"file": "h_o5bn03010_spc.fits", "obj": "HD20630", "mode": "E230M", "nominal": 1.5228397109302033e-14, "lam_med": 2058.3628067752816, "ra": 49.840495, "dec": 3.370215}, {"file": "h_o5bn03020_spc.fits", "obj": "HD20630", "mode": "E230M", "nominal": 2.9412813526110973e-14, "lam_med": 2058.396320437087, "ra": 49.840495, "dec": 3.370215}, {"file": "h_o5bn03030_spc.fits", "obj": "HD20630", "mode": "E230H", "nominal": 2.2473135509710447e-14, "lam_med": 2661.8981169221324, "ra": 49.840495, "dec": 3.370215}, {"file": "h_o5bn03040_spc.fits", "obj": "HD20630", "mode": "E230H", "nominal": 6.125767203314037e-14, "lam_med": 2862.4164778627705, "ra": 49.840495, "dec": 3.370215}, {"file": "h_o5bn03050_spc.fits", "obj": "HD20630", "mode": "E140M", "nominal": 2.935908973114649e-15, "lam_med": 1396.6142538613508, "ra": 49.840495, "dec": 3.370215}, {"file": "h_o5bn03060_spc.fits", "obj": "HD20630", "mode": "E140M", "nominal": 1.730278596713751e-15, "lam_med": 1396.6679484314575, "ra": 49.840495, "dec": 3.370215}, {"file": "h_o57p01030_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 5.524566132258818e-14, "lam_med": 1586.9710843012017, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o57p01040_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 5.599533865129387e-14, "lam_med": 1586.9566807448161, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o57p02030_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 5.5557714578259776e-14, "lam_med": 1587.2390360069849, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o57p02040_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 5.521595369121155e-14, "lam_med": 1587.2662973207193, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o57p03030_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 2.5945320627611655e-14, "lam_med": 1587.197079916916, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o57p03040_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 2.5854028246410996e-14, "lam_med": 1587.1914133693676, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o57p04030_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 8.104272195005579e-15, "lam_med": 1587.2975874615909, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o57p04040_spc.fits", "obj": "HD206697", "mode": "E140H", "nominal": 8.231368517496499e-15, "lam_med": 1587.322271157636, "ra": 325.67775, "dec": 43.585972}, {"file": "h_o5c04t010_spc.fits", "obj": "HD206773", "mode": "E140H", "nominal": 1.5821187764733426e-13, "lam_med": 1253.4970859292398, "ra": 325.600788, "dec": 57.736045}, {"file": "h_o59s06010_spc.fits", "obj": "HD207198", "mode": "E140H", "nominal": 4.1057739162160306e-14, "lam_med": 1253.2177452709368, "ra": 326.221983, "dec": 62.460576}, {"file": "h_o59s06020_spc.fits", "obj": "HD207198", "mode": "E140H", "nominal": 3.3325872996867944e-14, "lam_med": 1253.1467038869096, "ra": 326.221983, "dec": 62.460576}, {"file": "h_o6lb06010_spc.fits", "obj": "HD207198", "mode": "E230H", "nominal": 3.2675633281151494e-14, "lam_med": 2258.6171123407557, "ra": 326.22198, "dec": 62.460574, "rec": [0.3333333333333333, 1.0, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o6lb06020_spc.fits", "obj": "HD207198", "mode": "E230H", "nominal": 2.7059820396306816e-14, "lam_med": 2258.6095242620713, "ra": 326.22198, "dec": 62.460574}, {"file": "h_o6lb06030_spc.fits", "obj": "HD207198", "mode": "E230H", "nominal": 2.701652463754762e-14, "lam_med": 2258.6079798140827, "ra": 326.22198, "dec": 62.460574}, {"file": "h_o6lb06040_spc.fits", "obj": "HD207198", "mode": "E230H", "nominal": 2.7048463281506965e-14, "lam_med": 2258.605781250003, "ra": 326.22198, "dec": 62.460574}, {"file": "h_o63y02010_spc.fits", "obj": "HD207308", "mode": "E140M", "nominal": 6.144525783760989e-14, "lam_med": 1397.197920054127, "ra": 326.426528, "dec": 62.308321}, {"file": "h_o63y02020_spc.fits", "obj": "HD207308", "mode": "E140M", "nominal": 5.1972616195669615e-14, "lam_med": 1397.6578272415586, "ra": 326.426528, "dec": 62.308321}, {"file": "h_o63y01010_spc.fits", "obj": "HD207538", "mode": "E140M", "nominal": 7.076148129637255e-14, "lam_med": 1390.6688982335986, "ra": 326.915775, "dec": 59.700382}, {"file": "h_o63y01020_spc.fits", "obj": "HD207538", "mode": "E140M", "nominal": 6.048944899694652e-14, "lam_med": 1391.2001473231308, "ra": 326.915775, "dec": 59.700382}, {"file": "h_o63y03010_spc.fits", "obj": "HD208266", "mode": "E140M", "nominal": 6.231826358031125e-14, "lam_med": 1390.679499537027, "ra": 328.251442, "dec": 60.642408}, {"file": "h_o63y03020_spc.fits", "obj": "HD208266", "mode": "E140M", "nominal": 5.2827999210960416e-14, "lam_med": 1390.9983617769774, "ra": 328.251442, "dec": 60.642408}, {"file": "h_o5c06m010_spc.fits", "obj": "HD208440", "mode": "E140H", "nominal": 7.870518070540031e-14, "lam_med": 1253.0875460644952, "ra": 328.472079, "dec": 62.600217}, {"file": "h_o4g201040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.593650055887825e-14, "lam_med": 3017.340818911523, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g201050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.542007961106436e-14, "lam_med": 2857.0192602520565, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g201060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.486315663110406e-14, "lam_med": 2707.7343197965765, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g201070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.3649312999740696e-14, "lam_med": 2564.797272602306, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g201080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 9.43838612265919e-15, "lam_med": 2405.7083470275447, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g201090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.807188752475173e-15, "lam_med": 2258.4982434905123, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2010a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 1.996409766528389e-14, "lam_med": 1950.1839720496328, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2010b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 5.9911380058937275e-15, "lam_med": 1520.5883850916784, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2010c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 6.691291654112209e-15, "lam_med": 1335.9948166374675, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2010d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 1.3330424978094495e-14, "lam_med": 1396.100265375727, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g202040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.467790320464427e-14, "lam_med": 3013.668950330246, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g202050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.422949132866908e-14, "lam_med": 2855.1203925803184, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g202060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.3800540006676306e-14, "lam_med": 2707.764160151898, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g202070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.2548201488711345e-14, "lam_med": 2560.337061701417, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g202080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 8.551413827077078e-15, "lam_med": 2405.687612118825, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g202090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.447121113491526e-15, "lam_med": 2258.5425611836063, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2020a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 1.864929475411608e-14, "lam_med": 1950.3231102622585, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2020b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 5.663290818909154e-15, "lam_med": 1521.2285604017482, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2020c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 6.334817041225474e-15, "lam_med": 1336.6268849562641, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2020d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 1.2349800219476426e-14, "lam_med": 1392.6019810859584, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g204040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.0158692457397546e-14, "lam_med": 3011.3345346596216, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g204050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.5578169041654446e-14, "lam_med": 2851.707093658727, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g204060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.6681593400796754e-14, "lam_med": 2703.011205864259, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g204070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.1212247241663867e-14, "lam_med": 2560.359285370109, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g204080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.417620884919661e-14, "lam_med": 2560.3539018613237, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g204090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 8.941697487188293e-15, "lam_med": 2407.8159272806797, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2040a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.0863114670740414e-14, "lam_med": 1950.391577401786, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g205040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.4928286450192245e-14, "lam_med": 3011.322413570491, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g205050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.486231650675057e-14, "lam_med": 2851.689754382174, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.16666666666666666, 0.16666666666666666, 0.3333333333333333, 0.5, 0.8333333333333334]}, {"file": "h_o4g205060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.403031914448667e-14, "lam_med": 2703.030417679517, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g205070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.2961551125025015e-14, "lam_med": 2560.369015952569, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g205080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 8.776869748900434e-15, "lam_med": 2407.4331260822146, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 0.3333333333333333, 0.5, 0.6666666666666666]}, {"file": "h_o4g205090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.518478775391316e-15, "lam_med": 2261.718907139968, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2050a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 1.894557630659058e-14, "lam_med": 1950.4182743999115, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2050b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 5.7614316647491e-15, "lam_med": 1518.4039216411575, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2050c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 6.56104773760203e-15, "lam_med": 1338.4968595129299, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2050d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 1.2733381034519108e-14, "lam_med": 1388.8177140498192, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g206040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.1957772537301675e-14, "lam_med": 3017.5385941005225, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g206050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.0585273885913796e-14, "lam_med": 2862.3141531292986, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g206060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.953749880132422e-14, "lam_med": 2707.929113286423, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.0, 0.3333333333333333, 0.5, 0.5, 0.6666666666666666]}, {"file": "h_o4g206070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.9326328076943312e-14, "lam_med": 2565.4849108688354, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g206080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.1804871138289497e-14, "lam_med": 2405.9512212586787, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g206090_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.429852751398961e-14, "lam_med": 1950.156559887013, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g207040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.030208924744779e-14, "lam_med": 3017.534355893066, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.0, 0.0, 0.16666666666666666, 0.5, 0.5]}, {"file": "h_o4g207050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.93524206196035e-14, "lam_med": 2862.261672041007, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g207060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.9140679761087765e-14, "lam_med": 2707.942930541134, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g207070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.6687944880724888e-14, "lam_med": 2564.946918156995, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g207080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.2333244725720833e-14, "lam_med": 2405.933658000122, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.0, 0.16666666666666666, 0.5, 0.5, 0.6666666666666666]}, {"file": "h_o4g207090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 8.245243458676257e-15, "lam_med": 2258.659380326244, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2070a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.324028085131739e-14, "lam_med": 1950.1684481570617, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2070b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 6.345166728470859e-15, "lam_med": 1520.5440157804223, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2070c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 7.045575552700917e-15, "lam_med": 1334.376559800118, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2070d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 1.3897541554023164e-14, "lam_med": 1397.1125290567172, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.5, 0.5, 0.5, 0.6666666666666666, 1.0]}, {"file": "h_o4g208040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.153165652609881e-14, "lam_med": 3017.4900003894372, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g208050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.0940468367411482e-14, "lam_med": 2862.2663239557833, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g208060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.9824034798687673e-14, "lam_med": 2707.9717009503483, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g208070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.956947875184777e-14, "lam_med": 2564.9247172445835, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g208080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.2031197217810929e-14, "lam_med": 2405.9133105350934, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g208090_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.4071480164789033e-14, "lam_med": 1950.164744447717, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g209040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.2143013463751915e-14, "lam_med": 3017.4237148205184, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g209050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.0976237037316953e-14, "lam_med": 2857.1329467164287, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g209060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.039014427147202e-14, "lam_med": 2707.8492143487, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g209070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.7507212253847683e-14, "lam_med": 2564.831769392514, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g209080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.287857940996611e-14, "lam_med": 2405.8342841454887, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g209090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 8.73309852668142e-15, "lam_med": 2258.567275611681, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2090a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.504798745991995e-14, "lam_med": 1950.1845072130734, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2090b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 6.844796328605859e-15, "lam_med": 1520.936686875481, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2090c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 7.610523012570886e-15, "lam_med": 1336.5734136711642, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2090d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 1.5056929718085916e-14, "lam_med": 1397.3891185305692, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g210040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.85615053039291e-14, "lam_med": 3017.341008502063, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g210050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.1002631654950523e-14, "lam_med": 2857.0525278266023, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g210060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.4913227242081896e-14, "lam_med": 2707.6675286595246, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g210070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.221525027097138e-14, "lam_med": 2564.795241450447, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g210080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.3168417093664324e-14, "lam_med": 2405.7418485788894, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g210090_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.973184167871624e-14, "lam_med": 1950.1637877071846, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g211040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.919195574792494e-14, "lam_med": 3017.3341107203933, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g211050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.5068723739793964e-14, "lam_med": 2857.00141843004, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g211060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.1439731945692885e-14, "lam_med": 2707.7059595457085, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g211070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.4479409502098057e-14, "lam_med": 2564.7453217128627, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g211080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.7819761288067118e-14, "lam_med": 2405.654690907289, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g211090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.3755450525211455e-14, "lam_med": 2258.473392139258, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2110a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 4.647983016690077e-14, "lam_med": 1950.1529077499906, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2110b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 7.872323611541518e-15, "lam_med": 1520.971951765176, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2110c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 8.089621605952843e-15, "lam_med": 1335.9136009256665, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2110d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 1.65392867747964e-14, "lam_med": 1396.163356828356, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g212040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 6.658022529701359e-14, "lam_med": 3017.3154085823667, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g212050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.115310629946423e-14, "lam_med": 2857.082298566228, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g212060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.5273814742312e-14, "lam_med": 2707.7209913697634, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g212070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.500013748658024e-14, "lam_med": 2564.7498234855884, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g212080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.7493811726273836e-14, "lam_med": 2405.6574512229495, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g212090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.1884928787138715e-14, "lam_med": 2258.4785586971548, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2120a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 5.621757303184375e-14, "lam_med": 1950.1674543713325, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2120b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 1.0904550389567189e-14, "lam_med": 1336.4885254204505, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2120c0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 2.715392649034633e-14, "lam_med": 1396.3345889540897, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g213040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.618259725845557e-14, "lam_med": 3012.0447254008623, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g213050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.406347594278685e-14, "lam_med": 2852.0489246072284, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g213060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.971457923127053e-14, "lam_med": 2707.83908413639, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g213070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.239613268005943e-14, "lam_med": 2560.373840660125, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g213080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.615875483190335e-14, "lam_med": 2405.693616329125, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g213090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.9886151178398035e-14, "lam_med": 2259.4790087224824, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2130a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 5.1341365911160535e-14, "lam_med": 1950.3945499320541, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2130b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 1.06917377591943e-14, "lam_med": 1337.5691718865578, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2130c0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 2.5535624285264807e-14, "lam_med": 1389.9266074566283, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g214040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.904622774806196e-14, "lam_med": 3011.3302463824016, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g214050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.150348911545811e-14, "lam_med": 2851.7352221941983, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g214060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.923674433639746e-14, "lam_med": 2703.0785281784265, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g214070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.4755994000827145e-14, "lam_med": 2560.3693994314326, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g214080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.068752980794234e-14, "lam_med": 2406.3471214026836, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g214090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.5727426703484287e-14, "lam_med": 2261.704438610201, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.0, 0.3333333333333333, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o4g2140a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 4.5368870328653515e-14, "lam_med": 1950.4665277925533, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 0.5, 1.0, 0.8333333333333334]}, {"file": "h_o4g2140b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 9.432764118186278e-15, "lam_med": 1338.4281757382378, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g2140c0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 2.3999419198207988e-14, "lam_med": 1390.0814878730127, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 0.5, 1.0, 1.0]}, {"file": "h_o4g253040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.3824456447436376e-14, "lam_med": 3017.441044923309, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g253050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.327330114000185e-14, "lam_med": 2857.1656610537, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g253060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.124042082226192e-14, "lam_med": 2707.8673755809577, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g253070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.034254624295748e-14, "lam_med": 2564.849241328, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o4g253080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.2767367450051364e-14, "lam_med": 2405.8557267407186, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.0, 0.5, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o4g253090_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.5184518435385628e-14, "lam_med": 1950.2045622006906, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn01040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 6.493103803188432e-14, "lam_med": 3017.578441976535, "ra": 329.163021, "dec": 63.625564, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "h_o5dn01050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.660790265114484e-14, "lam_med": 2862.3610498787175, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn01060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.678956808554003e-14, "lam_med": 2707.979337967331, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn01070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.842918516744625e-14, "lam_med": 2567.1693567433176, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn01080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.0021002171540894e-14, "lam_med": 2406.015510021298, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn01090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.1639118092656517e-14, "lam_med": 2258.7353314256143, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn010a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 5.703890921597688e-14, "lam_med": 1950.1706097004594, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn010b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 2.5386409402909545e-14, "lam_med": 1520.4590733491625, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn010c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 1.3164681415622338e-14, "lam_med": 1333.8001746827895, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn010d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 3.499243814292659e-14, "lam_med": 1396.3056548103486, "ra": 329.163021, "dec": 63.625564}, {"file": "h_o5dn02040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.847410312542252e-14, "lam_med": 3011.355514110185, "ra": 329.163021, "dec": 63.625563}, {"file": "h_o5dn02050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.001150753458115e-14, "lam_med": 2851.7396900229396, "ra": 329.163021, "dec": 63.625563}, {"file": "h_o5dn02060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.223104931617635e-14, "lam_med": 2707.914205310801, "ra": 329.163021, "dec": 63.625563, "rec": [0.3333333333333333, 0.0, 0.3333333333333333, 0.3333333333333333, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o5dn02070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.487797248336811e-14, "lam_med": 2560.374155023969, "ra": 329.163021, "dec": 63.625563}, {"file": "h_o5dn02080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.769970444068889e-14, "lam_med": 2405.7179810633857, "ra": 329.163021, "dec": 63.625563, "rec": [0.0, 0.0, 0.16666666666666666, 0.0, 0.5, 0.8333333333333334]}, {"file": "h_o5dn02090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.9536380055335377e-14, "lam_med": 2261.5389197183113, "ra": 329.163021, "dec": 63.625563}, {"file": "h_o5dn020a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 5.2388556991256164e-14, "lam_med": 1950.441905753557, "ra": 329.163021, "dec": 63.625563}, {"file": "h_o5dn020b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 2.329866550013252e-14, "lam_med": 1519.69566807703, "ra": 329.163021, "dec": 63.625563}, {"file": "h_o5dn020c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 1.445463254248568e-14, "lam_med": 1336.8444579297516, "ra": 329.163021, "dec": 63.625563}, {"file": "h_o5dn020d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 3.421496755458176e-14, "lam_med": 1390.6937834721111, "ra": 329.163021, "dec": 63.625563, "rec": [0.16666666666666666, 0.5, 0.5, 0.6666666666666666, 0.6666666666666666, 1.0]}, {"file": "h_o65p01040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.4752606778152066e-14, "lam_med": 3017.5598975026996, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p01050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.6052640910386406e-14, "lam_med": 2862.308177168625, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p01060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.124537480566058e-14, "lam_med": 2707.9696397600505, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p01070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.457252559045331e-14, "lam_med": 2564.962826838111, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p01080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.7653329448575695e-14, "lam_med": 2405.958709569881, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p01090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.792469988800018e-14, "lam_med": 2258.676070577364, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p010a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 5.329965302888924e-14, "lam_med": 1950.2188035958861, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p010b0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 3.6572950705999115e-14, "lam_med": 1397.1910461471466, "ra": 329.163081, "dec": 63.625546}, {"file": "h_o65p02040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 8.050039729602836e-14, "lam_med": 3017.341148004897, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p02050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 6.691263680249763e-14, "lam_med": 2857.088309559134, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p02060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.449800113987489e-14, "lam_med": 2707.7551474017264, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p02070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.2123126831088093e-14, "lam_med": 2562.749996733436, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p02080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.1102412424324175e-14, "lam_med": 2405.676571209144, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p02090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.3737307151814338e-14, "lam_med": 2258.5010932716177, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p020a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 6.330536918864169e-14, "lam_med": 1950.2140179546873, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p020b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 3.057577693741443e-14, "lam_med": 1520.8758885967372, "ra": 329.163081, "dec": 63.625545, "rec": [0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o65p020c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 1.937229656553996e-14, "lam_med": 1336.53102296452, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o65p020d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 4.680833317977488e-14, "lam_med": 1396.427461015679, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c301040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 7.842603947962436e-14, "lam_med": 3017.6007140947227, "ra": 329.163081, "dec": 63.625545, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6c301050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 6.581116176674719e-14, "lam_med": 2862.363849617763, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c301060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.7426355756604e-14, "lam_med": 2707.9816241379735, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c301070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.573810307479832e-14, "lam_med": 2565.016515133107, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c301080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.395585464836685e-14, "lam_med": 2406.043839687487, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c301090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.3785350360776135e-14, "lam_med": 2258.7360506051523, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c3010a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 6.9250084782568e-14, "lam_med": 1950.249074333149, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c3010b0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 5.286216970496436e-14, "lam_med": 1396.0389554099372, "ra": 329.163081, "dec": 63.625545}, {"file": "h_o6c302040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 7.946768376166089e-14, "lam_med": 3017.5486338967685, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c302050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 7.107273860667752e-14, "lam_med": 2857.2283984205656, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c302060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 2.1761880629598573e-15, "lam_med": 2707.9184869730525, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c302070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.936892783831902e-15, "lam_med": 2527.633064090046, "ra": 329.163081, "dec": 63.625544, "rec": [0.0, 0.6666666666666666, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6c302080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.691896009112512e-15, "lam_med": 2377.618023958902, "ra": 329.163081, "dec": 63.625544, "rec": [0.0, 0.3333333333333333, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6c302090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.230223459477317e-15, "lam_med": 2316.4355695223967, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c3020a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 2.2744676881506955e-15, "lam_med": 2129.417231560509, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c3020b0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 3.178637274490544e-14, "lam_med": 1521.1305819814002, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c3020c0_spc.fits", "obj": "HD208816", "mode": "E140H", "nominal": 2.33170127760763e-14, "lam_med": 1336.0851790039746, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c3020d0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 5.207575267532496e-14, "lam_med": 1396.2773484137924, "ra": 329.163081, "dec": 63.625544}, {"file": "h_o6c312040_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 5.065751672158223e-14, "lam_med": 3017.5078540264426, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o6c312050_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.4946174899472364e-14, "lam_med": 2857.2329069476373, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o6c312060_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 4.025731519958447e-14, "lam_med": 2707.8890730517005, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o6c312070_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 3.11402336612577e-14, "lam_med": 2564.9193632690353, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o6c312080_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.8523316277583942e-14, "lam_med": 2405.7990008863862, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o6c312090_spc.fits", "obj": "HD208816", "mode": "E230H", "nominal": 1.1050039821594465e-14, "lam_med": 2258.614926574744, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o6c3120a0_spc.fits", "obj": "HD208816", "mode": "E230M", "nominal": 3.388876338949007e-14, "lam_med": 1950.3311200174767, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o6c3120b0_spc.fits", "obj": "HD208816", "mode": "E140M", "nominal": 2.906621169000928e-14, "lam_med": 1395.9062476070822, "ra": 329.163081, "dec": 63.625542}, {"file": "h_o5lh0a010_spc.fits", "obj": "HD208947", "mode": "E140H", "nominal": 2.9264986115623973e-13, "lam_med": 1256.4383569328652, "ra": 329.29624, "dec": 66.15615, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o5lh0a020_spc.fits", "obj": "HD208947", "mode": "E140H", "nominal": 3.1271620116143613e-13, "lam_med": 1256.5061206640498, "ra": 329.29624, "dec": 66.15615}, {"file": "h_o5lh0a030_spc.fits", "obj": "HD208947", "mode": "E230H", "nominal": 3.456688787120009e-13, "lam_med": 1762.2718905339784, "ra": 329.29624, "dec": 66.15615}, {"file": "h_o5lh0a040_spc.fits", "obj": "HD208947", "mode": "E230H", "nominal": 3.359274555233093e-13, "lam_med": 1762.3086680349443, "ra": 329.29624, "dec": 66.15615}, {"file": "h_o5lh0b010_spc.fits", "obj": "HD209339", "mode": "E140H", "nominal": 2.513331481804361e-13, "lam_med": 1255.3078648524738, "ra": 330.163596, "dec": 62.487794}, {"file": "h_o5lh0b020_spc.fits", "obj": "HD209339", "mode": "E140H", "nominal": 2.543013574883e-13, "lam_med": 1255.3457182490158, "ra": 330.163596, "dec": 62.487794}, {"file": "h_o5lh0b030_spc.fits", "obj": "HD209339", "mode": "E230H", "nominal": 3.310250230095823e-13, "lam_med": 1760.8548649575487, "ra": 330.163596, "dec": 62.487794}, {"file": "h_o5lh0b040_spc.fits", "obj": "HD209339", "mode": "E230H", "nominal": 3.3418954797943067e-13, "lam_med": 1760.817906323321, "ra": 330.163596, "dec": 62.487794}, {"file": "h_o6e204010_spc.fits", "obj": "HD209458", "mode": "E140M", "nominal": 1.979582928637743e-15, "lam_med": 1397.1324178955729, "ra": 330.794876, "dec": 18.884307}, {"file": "h_o6e204020_spc.fits", "obj": "HD209458", "mode": "E140M", "nominal": 1.9343130091080112e-15, "lam_med": 1397.0366532640996, "ra": 330.794876, "dec": 18.884307}, {"file": "h_o6e205010_spc.fits", "obj": "HD209458", "mode": "E140M", "nominal": 1.9675101532008326e-15, "lam_med": 1395.4175826700834, "ra": 330.794881, "dec": 18.884312}, {"file": "h_o6e205020_spc.fits", "obj": "HD209458", "mode": "E140M", "nominal": 1.8169411410979375e-15, "lam_med": 1395.4122813110234, "ra": 330.794881, "dec": 18.884312}, {"file": "h_o5c01v010_spc.fits", "obj": "HD210809", "mode": "E140H", "nominal": 8.866259460068326e-14, "lam_med": 1253.222571833436, "ra": 332.910826, "dec": 52.429995}, {"file": "h_o6359t010_spc.fits", "obj": "HD210809", "mode": "E140M", "nominal": 1.846684793799054e-13, "lam_med": 1390.7418429813154, "ra": 332.910833, "dec": 52.43}, {"file": "h_o54304010_spc.fits", "obj": "HD210839", "mode": "E140H", "nominal": 1.9595382399574155e-13, "lam_med": 1254.7299036836118, "ra": 332.877411, "dec": 59.414488}, {"file": "h_o54304020_spc.fits", "obj": "HD210839", "mode": "E230H", "nominal": 3.002466101466956e-13, "lam_med": 1760.2768304918307, "ra": 332.877411, "dec": 59.414488}, {"file": "h_o8p203010_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 7.561370265074232e-15, "lam_med": 2010.1948576521286, "ra": 336.158578, "dec": -72.256262}, {"file": "h_o8p203020_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 7.78343281859224e-15, "lam_med": 2010.189252440322, "ra": 336.158578, "dec": -72.256262, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 0.8333333333333334]}, {"file": "h_o8p203030_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 7.852760727411766e-15, "lam_med": 2010.180625158548, "ra": 336.158578, "dec": -72.256262}, {"file": "h_o8p203040_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 8.026446654669297e-15, "lam_med": 2010.1790231236787, "ra": 336.158578, "dec": -72.256263}, {"file": "h_o8p203050_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 8.098665633380159e-15, "lam_med": 2010.1732208831295, "ra": 336.158578, "dec": -72.256263}, {"file": "h_o8p204010_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 7.694486026284506e-15, "lam_med": 2010.1819153626284, "ra": 336.158581, "dec": -72.256263}, {"file": "h_o8p204020_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 7.865576781830249e-15, "lam_med": 2010.1791335358193, "ra": 336.158581, "dec": -72.256263}, {"file": "h_o8p204030_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 7.987411102338441e-15, "lam_med": 2010.1772479570982, "ra": 336.158581, "dec": -72.256263}, {"file": "h_o8p204040_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 8.11199337627605e-15, "lam_med": 2010.17147000992, "ra": 336.158581, "dec": -72.256263, "rec": [0.0, 1.0, 0.6666666666666666, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o8p204050_spc.fits", "obj": "HD211998", "mode": "E230H", "nominal": 8.117887560061092e-15, "lam_med": 2010.174903023989, "ra": 336.158581, "dec": -72.256263}, {"file": "h_o5c04q010_spc.fits", "obj": "HD212791", "mode": "E140H", "nominal": 4.955913918791739e-14, "lam_med": 1254.3855875796103, "ra": 336.423961, "dec": 52.438466}, {"file": "h_o5b607010_spc.fits", "obj": "HD214239", "mode": "E140M", "nominal": 3.980208244205021e-15, "lam_med": 1391.6200575820953, "ra": 338.952625, "dec": 52.71655}, {"file": "h_o6lv07010_spc.fits", "obj": "HD214993", "mode": "E230M", "nominal": 4.278220861797809e-12, "lam_med": 2061.2836044782584, "ra": 340.369373, "dec": 40.225453, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6lv07020_spc.fits", "obj": "HD214993", "mode": "E230M", "nominal": 4.969277022592315e-12, "lam_med": 1950.5581548759017, "ra": 340.369373, "dec": 40.225453}, {"file": "h_o6lv07030_spc.fits", "obj": "HD214993", "mode": "E230M", "nominal": 3.5458300636011863e-12, "lam_med": 2218.7321733797976, "ra": 340.369373, "dec": 40.225453}, {"file": "h_o4w210010_spc.fits", "obj": "HD216916", "mode": "E230M", "nominal": 4.831028930066375e-12, "lam_med": 2066.8606317169074, "ra": 344.09825, "dec": 41.603861}, {"file": "h_o4w210020_spc.fits", "obj": "HD216916", "mode": "E230M", "nominal": 1.047766570443468e-11, "lam_med": 2066.8774091482364, "ra": 344.09825, "dec": 41.603861}, {"file": "h_o4w210030_spc.fits", "obj": "HD216916", "mode": "E230M", "nominal": 9.231895192485963e-12, "lam_med": 2066.877390982653, "ra": 344.09825, "dec": 41.603861}, {"file": "h_o4w210040_spc.fits", "obj": "HD216916", "mode": "E230M", "nominal": 7.49036967885425e-12, "lam_med": 1950.0914882760276, "ra": 344.09825, "dec": 41.603861}, {"file": "h_o4w210050_spc.fits", "obj": "HD216916", "mode": "E230M", "nominal": 3.910862269312432e-12, "lam_med": 2221.6053685099496, "ra": 344.09825, "dec": 41.603861}, {"file": "h_o6e617010_spc.fits", "obj": "HD218261", "mode": "E230M", "nominal": 1.4151824899535839e-14, "lam_med": 2348.1470927970113, "ra": 346.633034, "dec": 19.910824}, {"file": "h_o4x907010_spc.fits", "obj": "HD21847", "mode": "E230H", "nominal": 3.3392781407828695e-14, "lam_med": 2800.3795889799017, "ra": 53.166281, "dec": 35.659315, "rec": [0.0, 0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o57r05010_spc.fits", "obj": "HD218915", "mode": "E140H", "nominal": 8.075224221443355e-14, "lam_med": 1253.4476442412697, "ra": 347.778875, "dec": 53.058417}, {"file": "h_o57r05020_spc.fits", "obj": "HD218915", "mode": "E140H", "nominal": 1.0611450133281715e-13, "lam_med": 1450.2240318346896, "ra": 347.778875, "dec": 53.058417}, {"file": "h_o57r05030_spc.fits", "obj": "HD218915", "mode": "E140H", "nominal": 1.1105151902748369e-13, "lam_med": 1484.3742705712002, "ra": 347.778875, "dec": 53.058417}, {"file": "h_o6e701010_spc.fits", "obj": "HD219188", "mode": "E140H", "nominal": 2.3333588166067194e-13, "lam_med": 1253.1560579936308, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o6e701020_spc.fits", "obj": "HD219188", "mode": "E230H", "nominal": 1.6976977976303402e-13, "lam_med": 2354.788987607023, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o6e701030_spc.fits", "obj": "HD219188", "mode": "E230H", "nominal": 1.2594257159615005e-13, "lam_med": 2800.569237243778, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o8dp01010_spc.fits", "obj": "HD219188", "mode": "E140H", "nominal": 2.2212684079230776e-13, "lam_med": 1252.635676343636, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o8dp01020_spc.fits", "obj": "HD219188", "mode": "E230H", "nominal": 1.596996435318181e-13, "lam_med": 2355.133110758079, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o8dp01030_spc.fits", "obj": "HD219188", "mode": "E230H", "nominal": 1.3721180804631434e-13, "lam_med": 2800.9106754038953, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o8sw01010_spc.fits", "obj": "HD219188", "mode": "E140H", "nominal": 2.0684735790552501e-13, "lam_med": 1253.1064530777148, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o8sw01020_spc.fits", "obj": "HD219188", "mode": "E230H", "nominal": 1.571180799962678e-13, "lam_med": 2356.252226393306, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o8sw01030_spc.fits", "obj": "HD219188", "mode": "E230H", "nominal": 1.4319268679746247e-13, "lam_med": 2800.9106001836667, "ra": 348.502208, "dec": 4.997111}, {"file": "h_o5c01x010_spc.fits", "obj": "HD220057", "mode": "E140H", "nominal": 1.573511868521621e-13, "lam_med": 1254.70590069401, "ra": 350.002707, "dec": 61.149828}, {"file": "h_o62u16010_spc.fits", "obj": "HD220242", "mode": "E230M", "nominal": 2.555698031691855e-14, "lam_med": 2662.1965939195, "ra": 350.492645, "dec": 26.60887}, {"file": "h_o6e618010_spc.fits", "obj": "HD220242", "mode": "E230M", "nominal": 2.376456794110456e-14, "lam_med": 2363.341321551885, "ra": 350.492781, "dec": 26.608894}, {"file": "h_o55p01010_spc.fits", "obj": "HD22049", "mode": "E230H", "nominal": 5.95561410574201e-14, "lam_med": 2707.6383032604745, "ra": 53.232588, "dec": -9.458254}, {"file": "h_o55p01020_spc.fits", "obj": "HD22049", "mode": "E230M", "nominal": 1.4060864303217782e-14, "lam_med": 1950.2103877617185, "ra": 53.232588, "dec": -9.458254}, {"file": "h_o55p01030_spc.fits", "obj": "HD22049", "mode": "E140M", "nominal": 2.3731149173738725e-15, "lam_med": 1390.5540790053917, "ra": 53.232588, "dec": -9.458254}, {"file": "h_o55p01040_spc.fits", "obj": "HD22049", "mode": "E140M", "nominal": 2.5097494123335696e-15, "lam_med": 1390.6909873723391, "ra": 53.232588, "dec": -9.458254}, {"file": "h_o5bn06010_spc.fits", "obj": "HD220657", "mode": "E230M", "nominal": 2.637120998308984e-14, "lam_med": 2076.7482603873104, "ra": 351.344952, "dec": 23.404119}, {"file": "h_o5bn06020_spc.fits", "obj": "HD220657", "mode": "E230H", "nominal": 2.6588829558914407e-14, "lam_med": 2657.033789178692, "ra": 351.344952, "dec": 23.404119}, {"file": "h_o5bn06030_spc.fits", "obj": "HD220657", "mode": "E230H", "nominal": 7.197768975888114e-14, "lam_med": 2851.874300884406, "ra": 351.344952, "dec": 23.404119}, {"file": "h_o5bn06040_spc.fits", "obj": "HD220657", "mode": "E140M", "nominal": 3.868619538441152e-15, "lam_med": 1389.6787366333333, "ra": 351.344952, "dec": 23.404119, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "h_o5bn06050_spc.fits", "obj": "HD220657", "mode": "E140M", "nominal": 2.612573154397617e-15, "lam_med": 1389.7218443876884, "ra": 351.344952, "dec": 23.404119}, {"file": "h_o5f662010_spc.fits", "obj": "HD221170", "mode": "E230M", "nominal": 3.575048903014554e-15, "lam_med": 2642.870456525285, "ra": 352.370038, "dec": 30.432721}, {"file": "h_o5bn20010_spc.fits", "obj": "HD223460", "mode": "E140M", "nominal": 2.3310593820182132e-15, "lam_med": 1391.3236413758766, "ra": 357.420669, "dec": 36.425273}, {"file": "h_o5bn20020_spc.fits", "obj": "HD223460", "mode": "E140M", "nominal": 1.1202854062789435e-15, "lam_med": 1392.4754599437233, "ra": 357.420669, "dec": 36.425273}, {"file": "h_o5bn20030_spc.fits", "obj": "HD223460", "mode": "E140M", "nominal": 3.619881652335494e-15, "lam_med": 1391.3206901863314, "ra": 357.420669, "dec": 36.425273, "rec": [0.0, 0.5, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o5bn20040_spc.fits", "obj": "HD223460", "mode": "E230M", "nominal": 1.6881412671096977e-14, "lam_med": 2655.3187184172593, "ra": 357.420669, "dec": 36.425273}, {"file": "h_o5bn21010_spc.fits", "obj": "HD223460", "mode": "E230M", "nominal": 9.915715595495988e-15, "lam_med": 2075.8728099582986, "ra": 357.420669, "dec": 36.425273}, {"file": "h_o5bn21020_spc.fits", "obj": "HD223460", "mode": "E230M", "nominal": 7.831698486365227e-15, "lam_med": 2075.873161738936, "ra": 357.420669, "dec": 36.425273}, {"file": "h_o54308010_spc.fits", "obj": "HD224151", "mode": "E140H", "nominal": 1.1621848295356157e-13, "lam_med": 1253.3288897121138, "ra": 358.89101, "dec": 57.41217}, {"file": "h_o54308020_spc.fits", "obj": "HD224151", "mode": "E230H", "nominal": 1.830657324451434e-13, "lam_med": 1760.1460002840404, "ra": 358.89101, "dec": 57.41217}, {"file": "h_o6lz96010_spc.fits", "obj": "HD224151", "mode": "E140H", "nominal": 2.3767651847132875e-13, "lam_med": 1484.766446483821, "ra": 358.891, "dec": 57.412167}, {"file": "h_o5bn99010_spc.fits", "obj": "HD22468", "mode": "E140M", "nominal": 6.55488621173865e-15, "lam_med": 1396.5070424729843, "ra": 54.197045, "dec": 0.587763}, {"file": "h_o5bn99020_spc.fits", "obj": "HD22468", "mode": "E140M", "nominal": 2.036888088739672e-15, "lam_med": 1396.295266839953, "ra": 54.197045, "dec": 0.587763}, {"file": "h_o6mb06010_spc.fits", "obj": "HD225642", "mode": "E230M", "nominal": 1.3538538586847426e-14, "lam_med": 2218.3436072216064, "ra": 296.321961, "dec": 33.974046, "rec": [0.0, 0.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o6mb06020_spc.fits", "obj": "HD225642", "mode": "E230M", "nominal": 1.0837474219104583e-14, "lam_med": 2218.2834293811375, "ra": 296.321961, "dec": 33.974046}, {"file": "h_o8hd01010_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 8.05183456490157e-15, "lam_med": 1389.8215104734356, "ra": 299.590267, "dec": 35.201655}, {"file": "h_o8hd01020_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 7.254914449225515e-15, "lam_med": 1390.474650270664, "ra": 299.590267, "dec": 35.201655}, {"file": "h_o8hd02010_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 7.855117960905881e-15, "lam_med": 1390.0966845529192, "ra": 299.590267, "dec": 35.201655}, {"file": "h_o8hd02020_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 7.074835690451418e-15, "lam_med": 1390.7115543377645, "ra": 299.590267, "dec": 35.201655}, {"file": "h_o8nx01010_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 8.740386219031444e-15, "lam_med": 1395.6870754948038, "ra": 299.590317, "dec": 35.20158, "rec": [0.16666666666666666, 1.0, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o8nx01020_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 7.86856506925951e-15, "lam_med": 1395.9474589471693, "ra": 299.590317, "dec": 35.20158}, {"file": "h_o8nx02010_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 8.287384912378666e-15, "lam_med": 1395.1047591086467, "ra": 299.590317, "dec": 35.20158}, {"file": "h_o8nx02020_spc.fits", "obj": "HD226868", "mode": "E140M", "nominal": 7.42794239586057e-15, "lam_med": 1395.2758154832013, "ra": 299.590317, "dec": 35.20158, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o64805010_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 3.185171947037491e-12, "lam_med": 1410.268598880538, "ra": 55.594344, "dec": 33.965014}, {"file": "h_o64805020_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 1.7473672173035986e-12, "lam_med": 1410.2188458501969, "ra": 55.594344, "dec": 33.965014, "rec": [0.16666666666666666, 0.6666666666666666, 0.5, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o64806010_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 3.2862702947465905e-12, "lam_med": 1410.1602006084704, "ra": 55.594344, "dec": 33.965014}, {"file": "h_o64806020_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 1.6837584656793121e-12, "lam_med": 1410.3933256741716, "ra": 55.594344, "dec": 33.965014}, {"file": "h_o64807010_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 3.0828062624849283e-12, "lam_med": 1410.2132018092584, "ra": 55.594344, "dec": 33.965014, "rec": [0.0, 0.5, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o64807020_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 1.7010896729604254e-12, "lam_med": 1410.2309864650563, "ra": 55.594344, "dec": 33.965014}, {"file": "h_o64808010_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 3.1763556396503722e-12, "lam_med": 1410.1627876348425, "ra": 55.594344, "dec": 33.965014}, {"file": "h_o64808020_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 1.950055235744572e-12, "lam_med": 1410.4046752997408, "ra": 55.594344, "dec": 33.965014}, {"file": "h_o64809010_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 2.816617162167995e-12, "lam_med": 1412.8512926170358, "ra": 55.594345, "dec": 33.965013}, {"file": "h_o64809020_spc.fits", "obj": "HD22951", "mode": "E140H", "nominal": 1.5045867464651417e-12, "lam_med": 1411.9657553716415, "ra": 55.594345, "dec": 33.965013}, {"file": "h_o6lv01010_spc.fits", "obj": "HD22951", "mode": "E230M", "nominal": 3.5915722746968822e-12, "lam_med": 2064.3545896472233, "ra": 55.594347, "dec": 33.96501}, {"file": "h_o6lv01020_spc.fits", "obj": "HD22951", "mode": "E230M", "nominal": 2.9339982047127573e-12, "lam_med": 2063.913812891997, "ra": 55.594347, "dec": 33.96501}, {"file": "h_o6lv01030_spc.fits", "obj": "HD22951", "mode": "E230M", "nominal": 3.994813829672663e-12, "lam_med": 1950.2373592385488, "ra": 55.594347, "dec": 33.96501}, {"file": "h_o6lv01040_spc.fits", "obj": "HD22951", "mode": "E230M", "nominal": 2.035779659115604e-12, "lam_med": 2218.401430718556, "ra": 55.594347, "dec": 33.96501}, {"file": "h_o64801010_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 3.8888142379096385e-12, "lam_med": 1410.2704442139325, "ra": 56.079729, "dec": 32.288251}, {"file": "h_o64801020_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 2.0636763560354877e-12, "lam_med": 1410.1983031821171, "ra": 56.079729, "dec": 32.288251}, {"file": "h_o64802010_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 2.8100001453936756e-12, "lam_med": 1410.2338984376024, "ra": 56.079729, "dec": 32.288251}, {"file": "h_o64802020_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 1.9865512302529093e-12, "lam_med": 1410.0338211147075, "ra": 56.079729, "dec": 32.288251}, {"file": "h_o64803010_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 3.92295259835313e-12, "lam_med": 1412.3850879466268, "ra": 56.079728, "dec": 32.288249}, {"file": "h_o64803020_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 2.058796488500553e-12, "lam_med": 1412.923877290864, "ra": 56.079728, "dec": 32.288249, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 1.0, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o64804010_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 3.0548083211585137e-12, "lam_med": 1411.9202024942501, "ra": 56.079731, "dec": 32.288248}, {"file": "h_o64804020_spc.fits", "obj": "HD23180", "mode": "E140H", "nominal": 2.3265794605446913e-12, "lam_med": 1411.7084932434727, "ra": 56.079731, "dec": 32.288248}, {"file": "h_o6mr01010_spc.fits", "obj": "HD23249", "mode": "E140M", "nominal": 3.089045136451951e-15, "lam_med": 1396.011094925232, "ra": 55.811999, "dec": -9.762722}, {"file": "h_o6mr01020_spc.fits", "obj": "HD23249", "mode": "E140M", "nominal": 1.5402114162127194e-15, "lam_med": 1395.9539627236081, "ra": 55.811999, "dec": -9.762722, "rec": [0.16666666666666666, 0.3333333333333333, 1.0, 0.8333333333333334, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o5c08j010_spc.fits", "obj": "HD232522", "mode": "E140H", "nominal": 3.7743026989661116e-14, "lam_med": 1253.2704920601964, "ra": 26.509124, "dec": 55.331913}, {"file": "h_o63539010_spc.fits", "obj": "HD233622", "mode": "E140M", "nominal": 7.556733298156585e-14, "lam_med": 1391.5856678454234, "ra": 140.39, "dec": 50.098972, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o6lj01010_spc.fits", "obj": "HD23478", "mode": "E140H", "nominal": 1.3616003383397778e-13, "lam_med": 1450.1922030238916, "ra": 56.67032, "dec": 32.290169}, {"file": "h_o6lj01020_spc.fits", "obj": "HD23478", "mode": "E140H", "nominal": 9.080992747683303e-14, "lam_med": 1253.8649708992507, "ra": 56.67032, "dec": 32.290169}, {"file": "h_o5c02f010_spc.fits", "obj": "HD23873", "mode": "E140H", "nominal": 4.306544798212647e-14, "lam_med": 1253.2248879958306, "ra": 57.340622, "dec": 24.380945, "rec": [0.0, 0.5, 0.5, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o63l06010_spc.fits", "obj": "HD240764", "mode": "E230M", "nominal": 5.59171771158044e-15, "lam_med": 2660.931908688094, "ra": 76.956292, "dec": 30.401528}, {"file": "h_o63l06020_spc.fits", "obj": "HD240764", "mode": "E230M", "nominal": 5.029177689328454e-15, "lam_med": 2660.937214240331, "ra": 76.956292, "dec": 30.401528}, {"file": "h_o6lj02010_spc.fits", "obj": "HD24190", "mode": "E140H", "nominal": 9.820216847356468e-14, "lam_med": 1450.0126201102307, "ra": 58.079015, "dec": 34.222095, "rec": [0.0, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334, 0.5, 1.0]}, {"file": "h_o6lj02020_spc.fits", "obj": "HD24190", "mode": "E140H", "nominal": 8.043631642639547e-14, "lam_med": 1253.005608844483, "ra": 58.079015, "dec": 34.222095}, {"file": "h_o64810010_spc.fits", "obj": "HD24398", "mode": "E140H", "nominal": 4.273220869074443e-12, "lam_med": 1412.0072769145752, "ra": 58.533009, "dec": 31.883641}, {"file": "h_o64810020_spc.fits", "obj": "HD24398", "mode": "E140H", "nominal": 2.3778478086746657e-12, "lam_med": 1412.4424277066814, "ra": 58.533009, "dec": 31.883641, "rec": [0.0, 0.3333333333333333, 0.16666666666666666, 0.5, 0.6666666666666666, 1.0]}, {"file": "h_o64811010_spc.fits", "obj": "HD24398", "mode": "E140H", "nominal": 4.881636244217329e-12, "lam_med": 1411.9956144978414, "ra": 58.533009, "dec": 31.883641}, {"file": "h_o64811020_spc.fits", "obj": "HD24398", "mode": "E140H", "nominal": 2.6634859252393263e-12, "lam_med": 1412.423141074918, "ra": 58.533009, "dec": 31.883641}, {"file": "h_o64812010_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 1.6837133484775758e-13, "lam_med": 1412.5067373581046, "ra": 58.84616, "dec": 31.045849}, {"file": "h_o64812020_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 1.0710075781659423e-13, "lam_med": 1412.3856263410885, "ra": 58.84616, "dec": 31.045849}, {"file": "h_o64812030_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 1.4027041621313294e-13, "lam_med": 1412.258892010996, "ra": 58.84616, "dec": 31.045849}, {"file": "h_o64813010_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 1.4810720990518674e-13, "lam_med": 1412.0955438259934, "ra": 58.84616, "dec": 31.045849, "rec": [0.0, 1.0, 1.0, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o64813020_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 1.0796075102713898e-13, "lam_med": 1412.8383339074744, "ra": 58.84616, "dec": 31.045849}, {"file": "h_o66p01010_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 9.26186122949609e-14, "lam_med": 1335.3551293635671, "ra": 58.846282, "dec": 31.045749}, {"file": "h_o66p01020_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 4.268983287781463e-14, "lam_med": 1335.3350498757063, "ra": 58.846282, "dec": 31.045749}, {"file": "h_o66p02010_spc.fits", "obj": "HD24534", "mode": "E140H", "nominal": 1.2259370289025438e-13, "lam_med": 1522.4228133665329, "ra": 58.846283, "dec": 31.045749, "rec": [0.0, 0.5, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o66p03010_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 1.1111829105414438e-13, "lam_med": 1814.530313006001, "ra": 58.846281, "dec": 31.045748}, {"file": "h_o66p03020_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 5.320376368772236e-14, "lam_med": 1814.3830483163092, "ra": 58.846281, "dec": 31.045748, "rec": [0.0, 0.3333333333333333, 0.5, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o66p04010_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 4.384003329742296e-14, "lam_med": 2159.5206864314823, "ra": 58.846281, "dec": 31.045748}, {"file": "h_o66p04020_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 2.0663838289132974e-14, "lam_med": 2159.2407877206697, "ra": 58.846281, "dec": 31.045748}, {"file": "h_o66p05010_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 4.7677283695189386e-14, "lam_med": 2462.904115258164, "ra": 58.846281, "dec": 31.045748}, {"file": "h_o66p05020_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 2.2567403887873424e-14, "lam_med": 2462.897650791251, "ra": 58.846281, "dec": 31.045748}, {"file": "h_o66p06010_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 4.6336007967892743e-14, "lam_med": 2462.9104055547305, "ra": 58.846281, "dec": 31.045748}, {"file": "h_o66p06020_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 2.2206399415991276e-14, "lam_med": 2462.9088598996786, "ra": 58.846281, "dec": 31.045748}, {"file": "h_o66p07010_spc.fits", "obj": "HD24534", "mode": "E230H", "nominal": 6.08595341812468e-14, "lam_med": 2954.3253280531435, "ra": 58.846283, "dec": 31.045749}, {"file": "h_o4ao01010_spc.fits", "obj": "HD2454", "mode": "E230M", "nominal": 3.699162906547786e-14, "lam_med": 2657.3414580939834, "ra": 7.083582, "dec": 10.18989}, {"file": "h_o6e601010_spc.fits", "obj": "HD2454", "mode": "E230M", "nominal": 3.0173106799746373e-14, "lam_med": 2348.2520054032902, "ra": 7.08369, "dec": 10.189748}, {"file": "h_o6lt04010_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 8.005519088858749e-14, "lam_med": 1760.1968956619662, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o6lt04020_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 6.797783894006734e-14, "lam_med": 2010.1861737531317, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o6lt04030_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 6.692286161911049e-14, "lam_med": 2707.7197495879786, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o6lt04040_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 5.91324316949512e-14, "lam_med": 2258.4896752199106, "ra": 1.825787, "dec": -17.386935, "rec": [0.0, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6lt04050_spc.fits", "obj": "HD256", "mode": "E140H", "nominal": 2.657645291470178e-14, "lam_med": 1560.3559976466381, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o6lt04060_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 1.3954000052840777e-13, "lam_med": 1760.1944419811698, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o6lt04070_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 1.2024984422694839e-13, "lam_med": 2010.1631660563885, "ra": 1.825787, "dec": -17.386935, "rec": [0.0, 1.0, 0.6666666666666666, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6lt04080_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 8.168427629591322e-14, "lam_med": 2707.714986485621, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o6lt04090_spc.fits", "obj": "HD256", "mode": "E230H", "nominal": 1.0398052788546013e-13, "lam_med": 2258.4812811661363, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o6lt040a0_spc.fits", "obj": "HD256", "mode": "E140H", "nominal": 4.686624166766063e-14, "lam_med": 1559.188352648258, "ra": 1.825787, "dec": -17.386935}, {"file": "h_o4x903010_spc.fits", "obj": "HD26345", "mode": "E230H", "nominal": 6.458698283232876e-14, "lam_med": 2800.4271339734337, "ra": 62.676505, "dec": 18.423307, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 0.5, 0.6666666666666666, 1.0]}, {"file": "h_o8op01010_spc.fits", "obj": "HD26462", "mode": "E230M", "nominal": 4.483755123835367e-14, "lam_med": 2661.6319621045777, "ra": 62.83468, "dec": 5.523046}, {"file": "h_o4x908010_spc.fits", "obj": "HD26784", "mode": "E230H", "nominal": 3.1131799805043737e-14, "lam_med": 2805.7927444964753, "ra": 63.643116, "dec": 10.701306}, {"file": "h_o64d04010_spc.fits", "obj": "HD26847", "mode": "E140M", "nominal": 4.2820702233779624e-14, "lam_med": 1397.5744448621008, "ra": 63.565792, "dec": -12.739461}, {"file": "h_o8p101010_spc.fits", "obj": "HD268605", "mode": "E140H", "nominal": 7.813136568776215e-15, "lam_med": 1253.009935164433, "ra": 72.579167, "dec": -67.660583}, {"file": "h_o8p101020_spc.fits", "obj": "HD268605", "mode": "E230H", "nominal": 8.286452772851016e-15, "lam_med": 1910.5072714157268, "ra": 72.579167, "dec": -67.660583}, {"file": "h_o8p101030_spc.fits", "obj": "HD268605", "mode": "E230H", "nominal": 6.1236905162875305e-15, "lam_med": 2354.697876748211, "ra": 72.579167, "dec": -67.660583}, {"file": "h_o63521010_spc.fits", "obj": "HD269676", "mode": "E140M", "nominal": 2.7757164719236546e-14, "lam_med": 1398.2567963403567, "ra": 82.814792, "dec": -71.069139}, {"file": "h_o4zv01010_spc.fits", "obj": "HD269781", "mode": "E230M", "nominal": 1.6668731232134752e-14, "lam_med": 2661.132566360053, "ra": 83.594, "dec": -67.023222, "rec": [0.0, 0.0, 0.5, 1.0, 1.0, 1.0]}, {"file": "h_o4zv01020_spc.fits", "obj": "HD269781", "mode": "E230M", "nominal": 2.9925550291843236e-14, "lam_med": 1950.2027514348697, "ra": 83.594, "dec": -67.023222}, {"file": "h_o4zv01030_spc.fits", "obj": "HD269781", "mode": "E230M", "nominal": 1.7562645341830362e-14, "lam_med": 1950.1704199155106, "ra": 83.594, "dec": -67.023222}, {"file": "h_o6lz11010_spc.fits", "obj": "HD269810", "mode": "E140M", "nominal": 4.054671079257157e-14, "lam_med": 1396.2164908900522, "ra": 83.808042, "dec": -67.557611}, {"file": "h_o8p103010_spc.fits", "obj": "HD270145", "mode": "E140H", "nominal": 5.266532578203515e-15, "lam_med": 1252.9570335546264, "ra": 87.207042, "dec": -70.066}, {"file": "h_o8p103020_spc.fits", "obj": "HD270145", "mode": "E230H", "nominal": 6.2706654258069146e-15, "lam_med": 1910.1276682666862, "ra": 87.207042, "dec": -70.066}, {"file": "h_o8p103030_spc.fits", "obj": "HD270145", "mode": "E230H", "nominal": 4.2014844225821506e-15, "lam_med": 2354.7275510918444, "ra": 87.207042, "dec": -70.066, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o8p104010_spc.fits", "obj": "HD270145", "mode": "E140H", "nominal": 5.294726540176815e-15, "lam_med": 1252.8795090389085, "ra": 87.207042, "dec": -70.066}, {"file": "h_o8p104020_spc.fits", "obj": "HD270145", "mode": "E230H", "nominal": 6.366049559281398e-15, "lam_med": 1910.3459658634633, "ra": 87.207042, "dec": -70.066}, {"file": "h_o8p104030_spc.fits", "obj": "HD270145", "mode": "E230H", "nominal": 4.2640277626261964e-15, "lam_med": 2355.9990247081632, "ra": 87.207042, "dec": -70.066}, {"file": "h_o6lz10010_spc.fits", "obj": "HD270952", "mode": "E140M", "nominal": 4.071519301196665e-14, "lam_med": 1395.6206890565954, "ra": 75.346375, "dec": -65.875833}, {"file": "h_o4x901010_spc.fits", "obj": "HD27561", "mode": "E230H", "nominal": 7.181382911077638e-14, "lam_med": 2800.7287590970327, "ra": 65.395005, "dec": 14.409815}, {"file": "h_o59s01010_spc.fits", "obj": "HD27778", "mode": "E140H", "nominal": 4.36071383853253e-14, "lam_med": 1253.9079161806922, "ra": 65.999012, "dec": 24.300995}, {"file": "h_o59s01020_spc.fits", "obj": "HD27778", "mode": "E140H", "nominal": 3.422021261165588e-14, "lam_med": 1253.4504831188478, "ra": 65.999012, "dec": 24.300995}, {"file": "h_o6lb01010_spc.fits", "obj": "HD27778", "mode": "E230H", "nominal": 3.737675850765363e-14, "lam_med": 2258.4025048463063, "ra": 65.999017, "dec": 24.300985}, {"file": "h_o6lb01020_spc.fits", "obj": "HD27778", "mode": "E230H", "nominal": 2.994077179684821e-14, "lam_med": 2258.3195702274334, "ra": 65.999017, "dec": 24.300985}, {"file": "h_o6lb01030_spc.fits", "obj": "HD27778", "mode": "E230H", "nominal": 3.0067007575905576e-14, "lam_med": 2258.396739374453, "ra": 65.999017, "dec": 24.300985}, {"file": "h_o6lb01040_spc.fits", "obj": "HD27778", "mode": "E230H", "nominal": 3.008171513041381e-14, "lam_med": 2258.446843833481, "ra": 65.999017, "dec": 24.300985}, {"file": "h_o4x916010_spc.fits", "obj": "HD27808", "mode": "E230H", "nominal": 2.899936333115242e-14, "lam_med": 2800.4185046301827, "ra": 66.060673, "dec": 21.736181}, {"file": "h_o4x905010_spc.fits", "obj": "HD27848", "mode": "E230H", "nominal": 5.256681140692015e-14, "lam_med": 2800.3973849585673, "ra": 66.092677, "dec": 17.078895}, {"file": "h_o4x911010_spc.fits", "obj": "HD27848", "mode": "E230H", "nominal": 5.455442043456e-14, "lam_med": 2800.3854318161348, "ra": 66.092678, "dec": 17.078895}, {"file": "h_o4x918030_spc.fits", "obj": "HD28033", "mode": "E140M", "nominal": 2.5035755920119163e-15, "lam_med": 1396.0408730943552, "ra": 66.57701, "dec": 21.470426}, {"file": "h_o4x920010_spc.fits", "obj": "HD28033", "mode": "E230H", "nominal": 2.468897013874548e-14, "lam_med": 2795.524670015069, "ra": 66.577034, "dec": 21.470422}, {"file": "h_o4x920020_spc.fits", "obj": "HD28033", "mode": "E140M", "nominal": 4.3240560888352644e-15, "lam_med": 1389.451046008965, "ra": 66.577034, "dec": 21.470422, "rec": [0.0, 0.8333333333333334, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o4x920030_spc.fits", "obj": "HD28033", "mode": "E140M", "nominal": 2.6086673461568136e-15, "lam_med": 1388.3783464698179, "ra": 66.577034, "dec": 21.470422, "rec": [0.16666666666666666, 1.0, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o6lm31010_spc.fits", "obj": "HD28033", "mode": "E230H", "nominal": 1.9807421750027286e-15, "lam_med": 2750.644736950265, "ra": 66.577167, "dec": 21.470405}, {"file": "h_o6lmc1010_spc.fits", "obj": "HD28033", "mode": "E230H", "nominal": 8.172963772439823e-15, "lam_med": 2751.2264077723307, "ra": 66.577195, "dec": 21.470402}, {"file": "h_o6lmc1020_spc.fits", "obj": "HD28033", "mode": "E230H", "nominal": 1.6163259200431012e-14, "lam_med": 3017.7968534530437, "ra": 66.577195, "dec": 21.470402}, {"file": "h_o6lmc1030_spc.fits", "obj": "HD28033", "mode": "E230H", "nominal": 7.428484217934104e-15, "lam_med": 2751.232983417457, "ra": 66.577195, "dec": 21.470402}, {"file": "h_o6lmc1040_spc.fits", "obj": "HD28033", "mode": "E230H", "nominal": 1.6190060613437504e-14, "lam_med": 3017.796136517035, "ra": 66.577195, "dec": 21.470402}, {"file": "h_o6lmc1050_spc.fits", "obj": "HD28033", "mode": "E230H", "nominal": 7.425701729143596e-15, "lam_med": 2751.2320876040785, "ra": 66.577195, "dec": 21.470402}, {"file": "h_o4x910010_spc.fits", "obj": "HD28205", "mode": "E230H", "nominal": 2.8244912237056663e-14, "lam_med": 2800.40462933381, "ra": 66.899552, "dec": 15.589145, "rec": [0.0, 0.3333333333333333, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o4x910020_spc.fits", "obj": "HD28205", "mode": "E140M", "nominal": 4.173535667401499e-15, "lam_med": 1396.1418480269513, "ra": 66.899552, "dec": 15.589145}, {"file": "h_o4x910030_spc.fits", "obj": "HD28205", "mode": "E140M", "nominal": 2.700788489613219e-15, "lam_med": 1395.9274382758472, "ra": 66.899552, "dec": 15.589145}, {"file": "h_o4x909010_spc.fits", "obj": "HD28237", "mode": "E230H", "nominal": 6.3771244368599555e-15, "lam_med": 2800.4534458775306, "ra": 66.941922, "dec": 11.736443}, {"file": "h_o63l05010_spc.fits", "obj": "HD282624", "mode": "E230M", "nominal": 2.7844949996744295e-15, "lam_med": 2660.9369588269133, "ra": 73.997417, "dec": 30.567139}, {"file": "h_o63l05020_spc.fits", "obj": "HD282624", "mode": "E230M", "nominal": 2.5422294379331533e-15, "lam_med": 2660.9415887252276, "ra": 73.997417, "dec": 30.567139}, {"file": "h_o6cv02020_spc.fits", "obj": "HD282624", "mode": "E140H", "nominal": 1.7478696274418673e-15, "lam_med": 1336.7424276621691, "ra": 73.997436, "dec": 30.567074, "rec": [0.0, 0.6666666666666666, 0.5, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o6cv02030_spc.fits", "obj": "HD282624", "mode": "E140H", "nominal": 1.0911200508619296e-15, "lam_med": 1336.265170514785, "ra": 73.997436, "dec": 30.567074}, {"file": "h_o6cv02040_spc.fits", "obj": "HD282624", "mode": "E140H", "nominal": 1.2144605240624825e-15, "lam_med": 1336.202836245335, "ra": 73.997436, "dec": 30.567074}, {"file": "h_o6cv02050_spc.fits", "obj": "HD282624", "mode": "E140H", "nominal": 1.337617260500966e-15, "lam_med": 1335.7772593280285, "ra": 73.997436, "dec": 30.567074}, {"file": "h_o6cv02060_spc.fits", "obj": "HD282624", "mode": "E140H", "nominal": 1.4677233730713247e-15, "lam_med": 1337.0241971473183, "ra": 73.997436, "dec": 30.567074, "rec": [0.16666666666666666, 0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o5e308010_spc.fits", "obj": "HD283518", "mode": "E140M", "nominal": 2.3651752414051096e-15, "lam_med": 1399.0009878219046, "ra": 64.629917, "dec": 28.454556}, {"file": "h_o5e308020_spc.fits", "obj": "HD283518", "mode": "E140M", "nominal": 1.9247142728829897e-15, "lam_med": 1398.097993326695, "ra": 64.629917, "dec": 28.454556}, {"file": "h_o5e308040_spc.fits", "obj": "HD283518", "mode": "E140M", "nominal": 2.880177257891591e-15, "lam_med": 1398.1848022921145, "ra": 64.629917, "dec": 28.454556}, {"file": "h_o5e308050_spc.fits", "obj": "HD283518", "mode": "E140M", "nominal": 2.6050607884714964e-15, "lam_med": 1398.957903862431, "ra": 64.629917, "dec": 28.454556}, {"file": "h_o63l01010_spc.fits", "obj": "HD283571", "mode": "E230M", "nominal": 2.3838891613895137e-15, "lam_med": 2660.939011102857, "ra": 65.489333, "dec": 28.443333}, {"file": "h_o63l01020_spc.fits", "obj": "HD283571", "mode": "E230M", "nominal": 2.1755426362102027e-15, "lam_med": 2660.9000050686445, "ra": 65.489333, "dec": 28.443333}, {"file": "h_o63l01030_spc.fits", "obj": "HD283571", "mode": "E230M", "nominal": 2.2025503746874417e-15, "lam_med": 2660.9026015398977, "ra": 65.489333, "dec": 28.443333}, {"file": "h_o5e306010_spc.fits", "obj": "HD283654", "mode": "E140M", "nominal": 2.417067810591381e-15, "lam_med": 1397.7684463478145, "ra": 66.761667, "dec": 25.706422}, {"file": "h_o5e306020_spc.fits", "obj": "HD283654", "mode": "E140M", "nominal": 1.975872090359095e-15, "lam_med": 1397.784643822616, "ra": 66.761667, "dec": 25.706422}, {"file": "h_o5e306040_spc.fits", "obj": "HD283654", "mode": "E140M", "nominal": 3.110030654535286e-15, "lam_med": 1397.5590090609585, "ra": 66.761667, "dec": 25.706422}, {"file": "h_o5e306050_spc.fits", "obj": "HD283654", "mode": "E140M", "nominal": 2.5168810312980917e-15, "lam_med": 1397.8127687070473, "ra": 66.761667, "dec": 25.706422}, {"file": "h_o5kc01020_spc.fits", "obj": "HD283654", "mode": "E230M", "nominal": 3.1751686662280605e-15, "lam_med": 2504.097985065739, "ra": 66.761625, "dec": 25.706278, "rec": [0.0, 0.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o5kc01030_spc.fits", "obj": "HD283654", "mode": "E140M", "nominal": 1.5990501170636513e-15, "lam_med": 1397.1808252358974, "ra": 66.761625, "dec": 25.706278}, {"file": "h_o6cv01020_spc.fits", "obj": "HD283654", "mode": "E140H", "nominal": 1.7157322743774173e-15, "lam_med": 1336.3880132121049, "ra": 66.761661, "dec": 25.706183, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o6cv01030_spc.fits", "obj": "HD283654", "mode": "E140H", "nominal": 9.705315972824307e-16, "lam_med": 1336.373063985656, "ra": 66.761661, "dec": 25.706183}, {"file": "h_o6cv01040_spc.fits", "obj": "HD283654", "mode": "E140H", "nominal": 1.0614886613919585e-15, "lam_med": 1336.342331981658, "ra": 66.761661, "dec": 25.706183}, {"file": "h_o6cv01050_spc.fits", "obj": "HD283654", "mode": "E140H", "nominal": 1.151885446124611e-15, "lam_med": 1336.586680741674, "ra": 66.761661, "dec": 25.706183}, {"file": "h_o6cv01060_spc.fits", "obj": "HD283654", "mode": "E140H", "nominal": 1.2566581887862008e-15, "lam_med": 1336.3702042371187, "ra": 66.761661, "dec": 25.706183}, {"file": "h_o4x914010_spc.fits", "obj": "HD28406", "mode": "E230H", "nominal": 4.2183357739713866e-14, "lam_med": 2800.7099130359475, "ra": 67.376089, "dec": 17.863179, "rec": [0.0, 0.3333333333333333, 0.3333333333333333, 1.0, 1.0, 1.0]}, {"file": "h_o5e304010_spc.fits", "obj": "HD284419", "mode": "E140M", "nominal": 2.842399391754552e-15, "lam_med": 1397.1352821631704, "ra": 65.4975, "dec": 19.535417}, {"file": "h_o5e304020_spc.fits", "obj": "HD284419", "mode": "E140M", "nominal": 2.317480585597318e-15, "lam_med": 1397.2052649437478, "ra": 65.4975, "dec": 19.535417}, {"file": "h_o5e304040_spc.fits", "obj": "HD284419", "mode": "E140M", "nominal": 2.7365193249541355e-15, "lam_med": 1397.078616578501, "ra": 65.4975, "dec": 19.535417}, {"file": "h_o5e304050_spc.fits", "obj": "HD284419", "mode": "E140M", "nominal": 2.6209913065641776e-15, "lam_med": 1397.108830605287, "ra": 65.4975, "dec": 19.535417}, {"file": "h_o5e304060_spc.fits", "obj": "HD284419", "mode": "E140M", "nominal": 2.702655914123123e-15, "lam_med": 1397.4467503326232, "ra": 65.4975, "dec": 19.535417}, {"file": "h_o63l02010_spc.fits", "obj": "HD284419", "mode": "E230M", "nominal": 2.5815161770979686e-15, "lam_med": 2660.945408537282, "ra": 65.497583, "dec": 19.535111}, {"file": "h_o63l02020_spc.fits", "obj": "HD284419", "mode": "E230M", "nominal": 2.356247767679778e-15, "lam_med": 2660.9447589737047, "ra": 65.497583, "dec": 19.535111}, {"file": "h_o63l02030_spc.fits", "obj": "HD284419", "mode": "E230M", "nominal": 2.4203174739498174e-15, "lam_med": 2660.943929574687, "ra": 65.497583, "dec": 19.535111}, {"file": "h_o4x917010_spc.fits", "obj": "HD28483", "mode": "E230H", "nominal": 4.21933444308892e-14, "lam_med": 2800.739906791393, "ra": 67.574807, "dec": 19.840513}, {"file": "h_o4c501020_spc.fits", "obj": "HD28497", "mode": "E230H", "nominal": 3.2547088037466125e-12, "lam_med": 2258.4889971871785, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o4c501030_spc.fits", "obj": "HD28497", "mode": "E140M", "nominal": 1.1075654160767178e-11, "lam_med": 1396.8797290978966, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o4c503020_spc.fits", "obj": "HD28497", "mode": "E140H", "nominal": 5.468084903968121e-12, "lam_med": 1586.7978507638459, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o4c503030_spc.fits", "obj": "HD28497", "mode": "E230M", "nominal": 5.747218302052887e-12, "lam_med": 2661.6050661973045, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o5jy01010_spc.fits", "obj": "HD28497", "mode": "E140H", "nominal": 1.1657899744974504e-12, "lam_med": 1587.184677185799, "ra": 67.278667, "dec": -13.0485, "rec": [0.0, 0.5, 0.8333333333333334, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o5jy01020_spc.fits", "obj": "HD28497", "mode": "E140H", "nominal": 1.1302768730427383e-12, "lam_med": 1587.161775761857, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o5jy01030_spc.fits", "obj": "HD28497", "mode": "E140H", "nominal": 1.1174917540016556e-12, "lam_med": 1587.1653070836974, "ra": 67.278667, "dec": -13.0485, "rec": [0.0, 0.3333333333333333, 0.5, 1.0, 0.5, 1.0]}, {"file": "h_o5jy51010_spc.fits", "obj": "HD28497", "mode": "E140H", "nominal": 1.1372850525909327e-12, "lam_med": 1586.7418125172305, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o5jy51020_spc.fits", "obj": "HD28497", "mode": "E140H", "nominal": 1.081747852501754e-12, "lam_med": 1586.6320015423462, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o5jy51030_spc.fits", "obj": "HD28497", "mode": "E140H", "nominal": 1.172689640099681e-12, "lam_med": 1586.623146550985, "ra": 67.278667, "dec": -13.0485}, {"file": "h_o4x904010_spc.fits", "obj": "HD28568", "mode": "E230H", "nominal": 5.6044303963400245e-14, "lam_med": 2800.7626704865297, "ra": 67.694677, "dec": 16.148651, "rec": [0.0, 0.5, 1.0, 0.8333333333333334, 1.0, 0.6666666666666666]}, {"file": "h_o4x904020_spc.fits", "obj": "HD28568", "mode": "E140M", "nominal": 4.532209522583716e-15, "lam_med": 1397.320092553483, "ra": 67.694677, "dec": 16.148651}, {"file": "h_o4x915010_spc.fits", "obj": "HD28608", "mode": "E230H", "nominal": 3.7187536237417325e-14, "lam_med": 2800.757468849691, "ra": 67.737964, "dec": 10.751805, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o4x902010_spc.fits", "obj": "HD28736", "mode": "E230H", "nominal": 7.161260631796251e-14, "lam_med": 2800.426485478233, "ra": 68.020006, "dec": 5.410051, "rec": [0.0, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 1.0, 0.6666666666666666]}, {"file": "h_o6je01010_spc.fits", "obj": "HD29139", "mode": "E140M", "nominal": 5.340375825691497e-15, "lam_med": 1396.5049154017254, "ra": 68.980196, "dec": 16.509198}, {"file": "h_o6je01020_spc.fits", "obj": "HD29139", "mode": "E140M", "nominal": 2.6506397548482055e-15, "lam_med": 1397.5054984659935, "ra": 68.980196, "dec": 16.509198}, {"file": "h_o4x912010_spc.fits", "obj": "HD29225", "mode": "E230H", "nominal": 4.591384494740075e-14, "lam_med": 2800.8788349433244, "ra": 69.169594, "dec": 15.86926}, {"file": "h_o4x919010_spc.fits", "obj": "HD29419", "mode": "E230H", "nominal": 2.1882181894935405e-14, "lam_med": 2800.755772795661, "ra": 69.713687, "dec": 23.149961}, {"file": "h_o8oe06010_spc.fits", "obj": "HD298986", "mode": "E230M", "nominal": 7.539949068046124e-15, "lam_med": 2661.234018065968, "ra": 154.312857, "dec": -52.488513}, {"file": "h_o8oe06020_spc.fits", "obj": "HD298986", "mode": "E230M", "nominal": 6.189159361049452e-15, "lam_med": 2661.2850420746845, "ra": 154.312857, "dec": -52.488513}, {"file": "h_o5c065010_spc.fits", "obj": "HD30122", "mode": "E140H", "nominal": 1.5612317134680152e-13, "lam_med": 1253.4296115434458, "ra": 71.426938, "dec": 23.627988}, {"file": "h_o4qx04010_spc.fits", "obj": "HD303308", "mode": "E140H", "nominal": 4.4478413273939755e-14, "lam_med": 1233.011237453585, "ra": 161.274833, "dec": -59.668444}, {"file": "h_o4qx04020_spc.fits", "obj": "HD303308", "mode": "E140H", "nominal": 5.4738063458869045e-14, "lam_med": 1412.503936770309, "ra": 161.274833, "dec": -59.668444}, {"file": "h_o4qx04030_spc.fits", "obj": "HD303308", "mode": "E140H", "nominal": 7.170065517687004e-14, "lam_med": 1588.0523842528905, "ra": 161.274833, "dec": -59.668444}, {"file": "h_o4qx04040_spc.fits", "obj": "HD303308", "mode": "E230H", "nominal": 5.303549662017583e-14, "lam_med": 1760.3671210857826, "ra": 161.274833, "dec": -59.668444}, {"file": "h_o4qx04050_spc.fits", "obj": "HD303308", "mode": "E230H", "nominal": 2.917317601407663e-14, "lam_med": 2510.8892006129668, "ra": 161.274833, "dec": -59.668444}, {"file": "h_o4qx04060_spc.fits", "obj": "HD303308", "mode": "E230H", "nominal": 3.4271466766763097e-14, "lam_med": 2751.106312095395, "ra": 161.274833, "dec": -59.668444}, {"file": "h_o62u07010_spc.fits", "obj": "HD30649", "mode": "E230M", "nominal": 1.4785128027544678e-14, "lam_med": 2660.870245577431, "ra": 72.931634, "dec": 45.833978}, {"file": "h_o62u07020_spc.fits", "obj": "HD30649", "mode": "E230M", "nominal": 1.1583473981057732e-14, "lam_med": 2660.8691331504924, "ra": 72.931634, "dec": 45.833978}, {"file": "h_o4x913010_spc.fits", "obj": "HD30738", "mode": "E230H", "nominal": 2.9201247005539325e-14, "lam_med": 2800.7620868133663, "ra": 72.702253, "dec": 16.210395}, {"file": "h_o6lv02010_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 1.6017084472793355e-12, "lam_med": 2065.1627776321197, "ra": 72.801529, "dec": 5.605115}, {"file": "h_o6lv02020_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 1.6852954609086444e-12, "lam_med": 2063.114520030277, "ra": 72.801529, "dec": 5.605115}, {"file": "h_o6lv02030_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 2.001543829532384e-12, "lam_med": 1950.240241750511, "ra": 72.801529, "dec": 5.605115}, {"file": "h_o6lv02040_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 8.546177968935173e-13, "lam_med": 2218.7606420663424, "ra": 72.801529, "dec": 5.605115}, {"file": "h_o6lv12010_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 1.2177961707680383e-11, "lam_med": 2065.640686174291, "ra": 72.80153, "dec": 5.605115}, {"file": "h_o6lv12020_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 1.2846609989608602e-11, "lam_med": 2065.5735456873986, "ra": 72.80153, "dec": 5.605115, "rec": [0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o6lv12030_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 1.2886913520843054e-11, "lam_med": 1950.5110909839361, "ra": 72.80153, "dec": 5.605115}, {"file": "h_o6lv12040_spc.fits", "obj": "HD30836", "mode": "E230M", "nominal": 7.621464914087275e-12, "lam_med": 2219.092647978172, "ra": 72.80153, "dec": 5.605115}, {"file": "h_o63559010_spc.fits", "obj": "HD308813", "mode": "E140M", "nominal": 8.123591467725762e-14, "lam_med": 1396.6462476776087, "ra": 174.493418, "dec": -63.316445}, {"file": "h_o5bi07010_spc.fits", "obj": "HD310376", "mode": "E140M", "nominal": 2.3645746717335046e-14, "lam_med": 1397.0625599760901, "ra": 166.428333, "dec": -68.632778}, {"file": "h_o5bi08010_spc.fits", "obj": "HD310376", "mode": "E140M", "nominal": 2.10727770397683e-14, "lam_med": 1389.459981387955, "ra": 166.428333, "dec": -68.632778}, {"file": "h_o5bi09010_spc.fits", "obj": "HD310376", "mode": "E140M", "nominal": 2.2105258399717167e-14, "lam_med": 1396.4795309133478, "ra": 166.428333, "dec": -68.632778}, {"file": "h_o57z04010_spc.fits", "obj": "HD31293", "mode": "E140M", "nominal": 3.71774806230103e-14, "lam_med": 1395.8076451679303, "ra": 73.940998, "dec": 30.55119}, {"file": "h_o5c08v010_spc.fits", "obj": "HD3175", "mode": "E140H", "nominal": 3.859028032693509e-14, "lam_med": 1256.1379130894975, "ra": 8.593287, "dec": -63.06168}, {"file": "h_o4x906010_spc.fits", "obj": "HD31845", "mode": "E230H", "nominal": 5.461064942817197e-14, "lam_med": 2800.7665826034695, "ra": 74.934474, "dec": 15.916735}, {"file": "h_o5bn60010_spc.fits", "obj": "HD31910", "mode": "E140M", "nominal": 1.193352835062227e-15, "lam_med": 1396.4628137761824, "ra": 75.854544, "dec": 60.442251}, {"file": "h_o5bn60020_spc.fits", "obj": "HD31910", "mode": "E230M", "nominal": 1.1818595058038268e-14, "lam_med": 2058.434899518974, "ra": 75.854544, "dec": 60.442251}, {"file": "h_o5bn60030_spc.fits", "obj": "HD31910", "mode": "E230H", "nominal": 1.3724183500842877e-14, "lam_med": 2661.9183301849534, "ra": 75.854544, "dec": 60.442251}, {"file": "h_o5bn60040_spc.fits", "obj": "HD31910", "mode": "E230H", "nominal": 4.5137978877318764e-14, "lam_med": 2862.4329427864877, "ra": 75.854544, "dec": 60.442251}, {"file": "h_o8om01010_spc.fits", "obj": "HD32008", "mode": "E140M", "nominal": 2.5946663969081708e-14, "lam_med": 1395.6133596453997, "ra": 74.960249, "dec": -10.26345}, {"file": "h_o56l03010_spc.fits", "obj": "HD32039", "mode": "E230H", "nominal": 7.538963969197355e-14, "lam_med": 1964.3971918635348, "ra": 75.135581, "dec": 3.614801}, {"file": "h_o56l03020_spc.fits", "obj": "HD32039", "mode": "E230H", "nominal": 7.445309096364816e-14, "lam_med": 1964.3971760871273, "ra": 75.135581, "dec": 3.614801}, {"file": "h_o56l03030_spc.fits", "obj": "HD32039", "mode": "E140H", "nominal": 5.116344751784445e-14, "lam_med": 1253.472700734578, "ra": 75.135581, "dec": 3.614801}, {"file": "h_o56l03040_spc.fits", "obj": "HD32039", "mode": "E140H", "nominal": 5.061001258682562e-14, "lam_med": 1253.5314213180989, "ra": 75.135581, "dec": 3.614801}, {"file": "h_o56l03050_spc.fits", "obj": "HD32039", "mode": "E140H", "nominal": 1.654664059832338e-13, "lam_med": 1253.445722299069, "ra": 75.135581, "dec": 3.614801}, {"file": "h_o56l03060_spc.fits", "obj": "HD32039", "mode": "E140H", "nominal": 4.937152378699348e-14, "lam_med": 1253.5798184750051, "ra": 75.135581, "dec": 3.614801}, {"file": "h_o56l03070_spc.fits", "obj": "HD32039", "mode": "E140H", "nominal": 4.411215117297184e-14, "lam_med": 1253.591041734127, "ra": 75.135581, "dec": 3.614801}, {"file": "h_o56l04010_spc.fits", "obj": "HD32040", "mode": "E140H", "nominal": 9.772511430160951e-14, "lam_med": 1253.3110799437957, "ra": 75.141398, "dec": 3.615746}, {"file": "h_o56l04020_spc.fits", "obj": "HD32040", "mode": "E140H", "nominal": 9.681426630504302e-14, "lam_med": 1253.317750755135, "ra": 75.141398, "dec": 3.615746}, {"file": "h_o56l04030_spc.fits", "obj": "HD32040", "mode": "E140H", "nominal": 8.094364012178107e-14, "lam_med": 1253.351305141896, "ra": 75.141398, "dec": 3.615746, "rec": [0.0, 0.5, 0.5, 0.8333333333333334, 0.6666666666666666, 1.0]}, {"file": "h_o56l04040_spc.fits", "obj": "HD32040", "mode": "E230H", "nominal": 8.667908873611476e-14, "lam_med": 1965.3942764668584, "ra": 75.141398, "dec": 3.615746}, {"file": "h_o5bn01010_spc.fits", "obj": "HD33262", "mode": "E140M", "nominal": 1.7374590177398163e-15, "lam_med": 1390.186979177829, "ra": 76.377734, "dec": -57.472697}, {"file": "h_o5bn01020_spc.fits", "obj": "HD33262", "mode": "E230M", "nominal": 4.535584312914696e-14, "lam_med": 2071.7723323640357, "ra": 76.377734, "dec": -57.472697}, {"file": "h_o5bn01030_spc.fits", "obj": "HD33262", "mode": "E230H", "nominal": 4.151262145492559e-14, "lam_med": 2656.812172801301, "ra": 76.377734, "dec": -57.472697}, {"file": "h_o5bn01040_spc.fits", "obj": "HD33262", "mode": "E230H", "nominal": 1.0727227600036305e-13, "lam_med": 2852.0573483079315, "ra": 76.377734, "dec": -57.472697}, {"file": "h_o8rk06010_spc.fits", "obj": "HD3369", "mode": "E230M", "nominal": 1.3083066257537767e-11, "lam_med": 1950.2465419283174, "ra": 9.220208, "dec": 33.719344}, {"file": "h_o5lc01010_spc.fits", "obj": "HD34029", "mode": "E140M", "nominal": 2.2948251103501064e-14, "lam_med": 1396.8291480363018, "ra": 79.172354, "dec": 45.997953}, {"file": "h_o5lc01020_spc.fits", "obj": "HD34029", "mode": "E140M", "nominal": 1.323929601029677e-14, "lam_med": 1396.649926206445, "ra": 79.172354, "dec": 45.997953}, {"file": "h_o5gm05010_spc.fits", "obj": "HD34078", "mode": "E230H", "nominal": 1.3091389809670136e-13, "lam_med": 2066.0883972250617, "ra": 79.075625, "dec": 34.312306}, {"file": "h_o5gm05020_spc.fits", "obj": "HD34078", "mode": "E230H", "nominal": 1.5574406037330337e-13, "lam_med": 2010.0592381381352, "ra": 79.075625, "dec": 34.312306}, {"file": "h_o6lv03010_spc.fits", "obj": "HD34816", "mode": "E230M", "nominal": 1.6499064437223943e-11, "lam_med": 2065.2370856170082, "ra": 79.893866, "dec": -13.176793}, {"file": "h_o6lv03020_spc.fits", "obj": "HD34816", "mode": "E230M", "nominal": 1.736777868541812e-11, "lam_med": 2065.287468882172, "ra": 79.893866, "dec": -13.176793}, {"file": "h_o6lv03030_spc.fits", "obj": "HD34816", "mode": "E230M", "nominal": 1.7552886016269763e-11, "lam_med": 1950.2969554875667, "ra": 79.893866, "dec": -13.176793}, {"file": "h_o6lv03040_spc.fits", "obj": "HD34816", "mode": "E230M", "nominal": 1.0300164293418632e-11, "lam_med": 2218.6301379811516, "ra": 79.893866, "dec": -13.176793}, {"file": "h_o8rk12010_spc.fits", "obj": "HD34816", "mode": "E230M", "nominal": 3.419089967477483e-11, "lam_med": 1950.4490053515906, "ra": 79.893833, "dec": -13.176789, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6lv04010_spc.fits", "obj": "HD35337", "mode": "E230M", "nominal": 4.851707339587566e-12, "lam_med": 2065.4697961802494, "ra": 80.87567, "dec": -13.927364}, {"file": "h_o6lv04020_spc.fits", "obj": "HD35337", "mode": "E230M", "nominal": 7.102645828134887e-12, "lam_med": 1950.2764659220466, "ra": 80.87567, "dec": -13.927364}, {"file": "h_o6lv04030_spc.fits", "obj": "HD35337", "mode": "E230M", "nominal": 5.108940787028683e-12, "lam_med": 2218.683648944867, "ra": 80.87567, "dec": -13.927364}, {"file": "h_o52902010_spc.fits", "obj": "HD35914", "mode": "E140H", "nominal": 4.10741038138683e-14, "lam_med": 1233.0358378538517, "ra": 81.867417, "dec": -12.697339}, {"file": "h_o52902020_spc.fits", "obj": "HD35914", "mode": "E140H", "nominal": 1.5018446491107454e-13, "lam_med": 1412.7983093801872, "ra": 81.867417, "dec": -12.697339}, {"file": "h_o52902030_spc.fits", "obj": "HD35914", "mode": "E140H", "nominal": 3.7331895183187894e-14, "lam_med": 1412.5627197161034, "ra": 81.867417, "dec": -12.697339}, {"file": "h_o52902040_spc.fits", "obj": "HD35914", "mode": "E140H", "nominal": 5.3053607301079404e-14, "lam_med": 1587.9183447436242, "ra": 81.867417, "dec": -12.697339}, {"file": "h_o6lv05010_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 5.301293110338471e-13, "lam_med": 2010.1274575524367, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv05020_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 4.031756974425114e-13, "lam_med": 2010.1628980573762, "ra": 82.58646, "dec": -7.434805, "rec": [0.16666666666666666, 0.3333333333333333, 0.5, 0.6666666666666666, 0.5, 0.8333333333333334]}, {"file": "h_o6lv05030_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 3.936519621246193e-13, "lam_med": 2010.1655604658736, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv05040_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 3.7810199471176136e-13, "lam_med": 2010.1410345487777, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv05050_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 4.18047327492245e-13, "lam_med": 2010.1630246344903, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv05060_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 4.610243832621927e-13, "lam_med": 2010.151094974135, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv05070_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 3.7962807459501877e-13, "lam_med": 2010.0988164603946, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv05080_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 3.5956043195951885e-13, "lam_med": 2010.1583361646824, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv05090_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 3.5361319075449e-13, "lam_med": 2010.162767617649, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o6lv050a0_spc.fits", "obj": "HD36285", "mode": "E230H", "nominal": 3.396490150305434e-13, "lam_med": 2010.115866330837, "ra": 82.58646, "dec": -7.434805}, {"file": "h_o8mm04010_spc.fits", "obj": "HD36408B", "mode": "E230H", "nominal": 4.087224673068522e-14, "lam_med": 2111.114759408233, "ra": 83.060694, "dec": 17.056044}, {"file": "h_o8mm04020_spc.fits", "obj": "HD36408B", "mode": "E140H", "nominal": 3.557202086113725e-14, "lam_med": 1252.4082759114424, "ra": 83.060694, "dec": 17.056044}, {"file": "h_o8mm04030_spc.fits", "obj": "HD36408B", "mode": "E140H", "nominal": 7.347015749078883e-14, "lam_med": 1584.2255285213932, "ra": 83.060694, "dec": 17.056044, "rec": [0.0, 0.6666666666666666, 0.3333333333333333, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o8rk22010_spc.fits", "obj": "HD36512", "mode": "E230M", "nominal": 3.67694174801926e-11, "lam_med": 1950.2044174549983, "ra": 82.98275, "dec": -7.301536}, {"file": "h_o4w220010_spc.fits", "obj": "HD36591", "mode": "E230M", "nominal": 1.053311973985225e-11, "lam_med": 2066.948250374214, "ra": 83.172292, "dec": -1.592028}, {"file": "h_o4w220020_spc.fits", "obj": "HD36591", "mode": "E230M", "nominal": 1.033988951327886e-11, "lam_med": 2066.9482387876014, "ra": 83.172292, "dec": -1.592028}, {"file": "h_o4w220030_spc.fits", "obj": "HD36591", "mode": "E230M", "nominal": 1.0082215772304673e-11, "lam_med": 2066.948229536236, "ra": 83.172292, "dec": -1.592028}, {"file": "h_o4w220040_spc.fits", "obj": "HD36591", "mode": "E230M", "nominal": 1.1548801003566805e-11, "lam_med": 1950.1877482243112, "ra": 83.172292, "dec": -1.592028}, {"file": "h_o4w220050_spc.fits", "obj": "HD36591", "mode": "E230M", "nominal": 1.1678503604183512e-11, "lam_med": 1950.1877373041755, "ra": 83.172292, "dec": -1.592028, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4w220060_spc.fits", "obj": "HD36591", "mode": "E230M", "nominal": 6.315844264645709e-12, "lam_med": 2228.362052684304, "ra": 83.172292, "dec": -1.592028}, {"file": "h_o4w220070_spc.fits", "obj": "HD36591", "mode": "E230M", "nominal": 6.088442961654151e-12, "lam_med": 2228.3620427159053, "ra": 83.172292, "dec": -1.592028}, {"file": "h_o63516010_spc.fits", "obj": "HD36841", "mode": "E140M", "nominal": 6.47494221296156e-14, "lam_med": 1399.3551782247182, "ra": 83.6405, "dec": -0.386528}, {"file": "h_o8rk27010_spc.fits", "obj": "HD36959", "mode": "E140M", "nominal": 1.0556241657777773e-11, "lam_med": 1395.8393163958108, "ra": 83.754208, "dec": -6.009269, "rec": [0.0, 0.5, 0.8333333333333334, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o6lv06010_spc.fits", "obj": "HD36960", "mode": "E230M", "nominal": 8.952854236306568e-12, "lam_med": 2065.538495959599, "ra": 83.761168, "dec": -6.002025}, {"file": "h_o6lv06020_spc.fits", "obj": "HD36960", "mode": "E230M", "nominal": 1.2061687481473426e-11, "lam_med": 1950.197170967339, "ra": 83.761168, "dec": -6.002025}, {"file": "h_o6lv06030_spc.fits", "obj": "HD36960", "mode": "E230M", "nominal": 9.448137983047568e-12, "lam_med": 2218.3891515141377, "ra": 83.761168, "dec": -6.002025}, {"file": "h_o8rk29010_spc.fits", "obj": "HD36960", "mode": "E140M", "nominal": 3.138000573276544e-11, "lam_med": 1395.7353214016566, "ra": 83.761167, "dec": -6.002028}, {"file": "h_o8rk30010_spc.fits", "obj": "HD36960", "mode": "E230M", "nominal": 3.0208004288723085e-11, "lam_med": 1950.238261679584, "ra": 83.761167, "dec": -6.002028}, {"file": "h_o59s02010_spc.fits", "obj": "HD37021", "mode": "E140H", "nominal": 5.6409587905709395e-14, "lam_med": 1253.0287795785982, "ra": 83.817123, "dec": -5.38525, "rec": [0.0, 0.3333333333333333, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334, 0.3333333333333333]}, {"file": "h_o6lb02010_spc.fits", "obj": "HD37021", "mode": "E230H", "nominal": 2.459454873195207e-14, "lam_med": 2258.405275630671, "ra": 83.817122, "dec": -5.38525}, {"file": "h_o6lb02020_spc.fits", "obj": "HD37021", "mode": "E230H", "nominal": 2.01751379085985e-14, "lam_med": 2258.404588322929, "ra": 83.817122, "dec": -5.38525, "rec": [0.16666666666666666, 1.0, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6lb02030_spc.fits", "obj": "HD37021", "mode": "E230H", "nominal": 1.9295505487715112e-14, "lam_med": 2302.030819182407, "ra": 83.817122, "dec": -5.38525}, {"file": "h_o6lb02040_spc.fits", "obj": "HD37021", "mode": "E230H", "nominal": 1.9708793478697706e-14, "lam_med": 2354.550092050874, "ra": 83.817122, "dec": -5.38525}, {"file": "h_o59s03010_spc.fits", "obj": "HD37061", "mode": "E140H", "nominal": 2.3681657050661454e-13, "lam_med": 1254.2203346644042, "ra": 83.880671, "dec": -5.267385}, {"file": "h_o6lb03010_spc.fits", "obj": "HD37061", "mode": "E230H", "nominal": 4.5934867173831616e-14, "lam_med": 2258.377163740125, "ra": 83.880673, "dec": -5.267383}, {"file": "h_o6lb03020_spc.fits", "obj": "HD37061", "mode": "E230H", "nominal": 3.7166058704329635e-14, "lam_med": 2258.262005421424, "ra": 83.880673, "dec": -5.267383}, {"file": "h_o6lb03030_spc.fits", "obj": "HD37061", "mode": "E230H", "nominal": 3.7250727763717946e-14, "lam_med": 2258.3359212117884, "ra": 83.880673, "dec": -5.267383}, {"file": "h_o6lb03040_spc.fits", "obj": "HD37061", "mode": "E230H", "nominal": 3.7322460328557504e-14, "lam_med": 2258.382302430666, "ra": 83.880673, "dec": -5.267383}, {"file": "h_o5c013010_spc.fits", "obj": "HD37367", "mode": "E140H", "nominal": 2.1204896037869986e-13, "lam_med": 1254.3717041779348, "ra": 84.826287, "dec": 29.215204}, {"file": "h_o6co02040_spc.fits", "obj": "HD37394", "mode": "E140M", "nominal": 1.9823449035828833e-15, "lam_med": 1398.2626451244255, "ra": 85.334689, "dec": 53.480756, "rec": [0.0, 0.5, 0.8333333333333334, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o6co02050_spc.fits", "obj": "HD37394", "mode": "E140M", "nominal": 4.6062482496453334e-15, "lam_med": 1396.5592750462692, "ra": 85.334689, "dec": 53.480756}, {"file": "h_o6co02060_spc.fits", "obj": "HD37394", "mode": "E230M", "nominal": 1.1572296329892191e-14, "lam_med": 2656.785646388843, "ra": 85.334689, "dec": 53.480756}, {"file": "h_o59s04010_spc.fits", "obj": "HD37903", "mode": "E140H", "nominal": 6.313106754722324e-14, "lam_med": 1253.0495155788694, "ra": 85.409954, "dec": -2.259027}, {"file": "h_o54359010_spc.fits", "obj": "HD3827", "mode": "E140H", "nominal": 1.9490178354142992e-13, "lam_med": 1253.4642332893075, "ra": 10.300683, "dec": 39.603812}, {"file": "h_o54359020_spc.fits", "obj": "HD3827", "mode": "E230H", "nominal": 2.321809326368255e-13, "lam_med": 1758.18437629221, "ra": 10.300683, "dec": 39.603812}, {"file": "h_o54359030_spc.fits", "obj": "HD3827", "mode": "E230H", "nominal": 2.0856105312944009e-13, "lam_med": 1758.1733473425904, "ra": 10.300683, "dec": 39.603812, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 0.6666666666666666]}, {"file": "h_o6lz02010_spc.fits", "obj": "HD3827", "mode": "E140H", "nominal": 3.2697295259449744e-13, "lam_med": 1484.718182373303, "ra": 10.300667, "dec": 39.603801}, {"file": "h_o6lz12010_spc.fits", "obj": "HD38282", "mode": "E140M", "nominal": 4.0701163059604587e-14, "lam_med": 1396.233061166024, "ra": 84.722917, "dec": -69.033528}, {"file": "h_o5bn02010_spc.fits", "obj": "HD39587", "mode": "E140M", "nominal": 3.3229332014839065e-15, "lam_med": 1398.3486859939546, "ra": 88.595747, "dec": 20.276146}, {"file": "h_o5bn02020_spc.fits", "obj": "HD39587", "mode": "E140M", "nominal": 2.6300283084261682e-15, "lam_med": 1398.1217942748042, "ra": 88.595747, "dec": 20.276146}, {"file": "h_o5bn02030_spc.fits", "obj": "HD39587", "mode": "E140M", "nominal": 3.371023385960071e-15, "lam_med": 1397.7954911317647, "ra": 88.595747, "dec": 20.276146}, {"file": "h_o5bn02040_spc.fits", "obj": "HD39587", "mode": "E230M", "nominal": 5.035627432354741e-14, "lam_med": 2058.4385781129604, "ra": 88.595747, "dec": 20.276146}, {"file": "h_o5bn02050_spc.fits", "obj": "HD39587", "mode": "E230M", "nominal": 4.7065154706517114e-14, "lam_med": 2058.438550277021, "ra": 88.595747, "dec": 20.276146, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o5bn02060_spc.fits", "obj": "HD39587", "mode": "E230H", "nominal": 3.510853266765558e-14, "lam_med": 2661.930702159004, "ra": 88.595747, "dec": 20.276146, "rec": [0.0, 0.16666666666666666, 0.16666666666666666, 0.3333333333333333, 0.3333333333333333, 0.16666666666666666]}, {"file": "h_o5bn02070_spc.fits", "obj": "HD39587", "mode": "E230H", "nominal": 8.124212746359989e-14, "lam_med": 2857.4386383568744, "ra": 88.595747, "dec": 20.276146}, {"file": "h_o63520010_spc.fits", "obj": "HD40005", "mode": "E140H", "nominal": 2.7496177118410647e-13, "lam_med": 1484.2324946817885, "ra": 89.210792, "dec": 16.355083}, {"file": "h_o8na02010_spc.fits", "obj": "HD40893", "mode": "E140H", "nominal": 2.4319521352788062e-14, "lam_med": 1252.8183700667898, "ra": 90.77675, "dec": 31.052278}, {"file": "h_o8na02020_spc.fits", "obj": "HD40893", "mode": "E140H", "nominal": 1.2791899877582274e-14, "lam_med": 1252.6824169463264, "ra": 90.77675, "dec": 31.052278}, {"file": "h_o5b701010_spc.fits", "obj": "HD4128", "mode": "E140M", "nominal": 5.379819194182262e-15, "lam_med": 1396.4051236977916, "ra": 10.897358, "dec": -17.986616}, {"file": "h_o5b701020_spc.fits", "obj": "HD4128", "mode": "E140M", "nominal": 4.254988118544145e-15, "lam_med": 1396.4635182774794, "ra": 10.897358, "dec": -17.986616, "rec": [0.0, 0.3333333333333333, 0.6666666666666666, 0.3333333333333333, 0.6666666666666666, 1.0]}, {"file": "h_o8c401010_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 2.338839084671143e-14, "lam_med": 1950.4082236872937, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c401020_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.7687768545628225e-14, "lam_med": 2656.833972453058, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c401030_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 1.748287474244222e-14, "lam_med": 1395.7130689639616, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c402010_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.858498743649189e-14, "lam_med": 1950.3816016050182, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c402020_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.3024992630081287e-14, "lam_med": 2659.0370906763956, "ra": 11.154917, "dec": 40.679333, "rec": [0.0, 0.0, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o8c402030_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 1.2343658219089319e-14, "lam_med": 1396.7676211673902, "ra": 11.154917, "dec": 40.679333, "rec": [0.16666666666666666, 0.3333333333333333, 0.6666666666666666, 0.8333333333333334, 0.6666666666666666, 1.0]}, {"file": "h_o8c403010_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.813008598301976e-14, "lam_med": 1950.3199180825443, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c403020_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 9.889943943525853e-15, "lam_med": 2659.431777158794, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c403030_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 9.655554846395193e-15, "lam_med": 1396.2898159714198, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c404010_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.3648060624438984e-14, "lam_med": 1950.1354780759584, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c404020_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 6.608850909762078e-15, "lam_med": 2658.4164559058645, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c404030_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 1.4391262119027015e-14, "lam_med": 1396.0699144641599, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c404040_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 1.0140796795521561e-14, "lam_med": 1395.9942884891657, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c405010_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.4638421131714075e-14, "lam_med": 1950.1386297626982, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c405020_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 6.95507090757324e-15, "lam_med": 2656.9503029882035, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c405030_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 1.3547335031519562e-14, "lam_med": 1396.3451766568598, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c405040_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 1.017572040159166e-14, "lam_med": 1396.2041676280908, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c406010_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 5.592234188423477e-15, "lam_med": 2659.9763670120215, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c406020_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.756862435236642e-14, "lam_med": 1950.1732265545866, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c406030_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.7068718703083983e-14, "lam_med": 1950.1573621222342, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c406040_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 5.2933608821484e-15, "lam_med": 1396.2386189006547, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c406050_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 4.0261034584457845e-15, "lam_med": 1396.2265781864078, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c407010_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 6.495776352376988e-15, "lam_med": 2660.139116116274, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c407020_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 1.9723643408631505e-14, "lam_med": 1950.1453556899858, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c407030_spc.fits", "obj": "HD4174", "mode": "E230M", "nominal": 2.4554796208957078e-14, "lam_med": 1950.1295442895344, "ra": 11.154917, "dec": 40.679333, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 0.6666666666666666]}, {"file": "h_o8c407040_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 1.1270580077147353e-14, "lam_med": 1396.3061922981638, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o8c407050_spc.fits", "obj": "HD4174", "mode": "E140M", "nominal": 8.822734203329082e-15, "lam_med": 1396.1762898150698, "ra": 11.154917, "dec": 40.679333}, {"file": "h_o6lt02010_spc.fits", "obj": "HD42111", "mode": "E140H", "nominal": 3.502402860569274e-14, "lam_med": 1372.1882540014728, "ra": 92.241244, "dec": 2.499645, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334]}, {"file": "h_o6lt02020_spc.fits", "obj": "HD42111", "mode": "E230H", "nominal": 9.956714572897532e-14, "lam_med": 2010.1192479953029, "ra": 92.241244, "dec": 2.499645}, {"file": "h_o6lt02030_spc.fits", "obj": "HD42111", "mode": "E230H", "nominal": 8.915166888032374e-14, "lam_med": 2707.6459441946517, "ra": 92.241244, "dec": 2.499645}, {"file": "h_o6lt02040_spc.fits", "obj": "HD42111", "mode": "E140H", "nominal": 6.658609841216743e-14, "lam_med": 1559.4716098105685, "ra": 92.241244, "dec": 2.499645}, {"file": "h_o6lt02050_spc.fits", "obj": "HD42111", "mode": "E230H", "nominal": 7.893103532515941e-14, "lam_med": 2258.4337652610902, "ra": 92.241244, "dec": 2.499645}, {"file": "h_o6lt02060_spc.fits", "obj": "HD42111", "mode": "E230H", "nominal": 1.0791709304454528e-13, "lam_med": 1760.1330580368535, "ra": 92.241244, "dec": 2.499645}, {"file": "h_o61t02010_spc.fits", "obj": "HD43162", "mode": "E140M", "nominal": 2.098131954702347e-15, "lam_med": 1391.9057522718194, "ra": 93.438748, "dec": -23.861918}, {"file": "h_o6e606010_spc.fits", "obj": "HD43318", "mode": "E230M", "nominal": 2.761086887194252e-14, "lam_med": 2365.8684455303355, "ra": 93.892655, "dec": -0.512356}, {"file": "h_o5c07i010_spc.fits", "obj": "HD43818", "mode": "E140H", "nominal": 4.293166900475464e-14, "lam_med": 1254.5826984888686, "ra": 94.830416, "dec": 23.469412}, {"file": "h_o5c06f010_spc.fits", "obj": "HD43819", "mode": "E140H", "nominal": 4.2162029319044886e-14, "lam_med": 1253.954550029644, "ra": 94.757686, "dec": 17.325266}, {"file": "h_o6e607010_spc.fits", "obj": "HD43905", "mode": "E230H", "nominal": 1.530283382262113e-14, "lam_med": 2511.7203358615297, "ra": 95.442184, "dec": 53.452217}, {"file": "h_o5c020010_spc.fits", "obj": "HD44173", "mode": "E140H", "nominal": 2.0579728270033268e-13, "lam_med": 1254.7438085487186, "ra": 95.217153, "dec": 11.756212, "rec": [0.0, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o56451010_spc.fits", "obj": "HD44743", "mode": "E140H", "nominal": 2.825293863193789e-11, "lam_med": 1251.345975816052, "ra": 95.674954, "dec": -17.955916}, {"file": "h_o56451020_spc.fits", "obj": "HD44743", "mode": "E140H", "nominal": 1.5111432566092713e-11, "lam_med": 1589.7359378725193, "ra": 95.674954, "dec": -17.955916}, {"file": "h_o8rk35010_spc.fits", "obj": "HD44743", "mode": "E140M", "nominal": 2.3184967433419726e-10, "lam_med": 1396.1368078148723, "ra": 95.674958, "dec": -17.955917}, {"file": "h_o4v652010_spc.fits", "obj": "HD45348", "mode": "E230M", "nominal": 1.528301013902662e-11, "lam_med": 1950.4825624330358, "ra": 95.987979, "dec": -52.695642}, {"file": "h_o4v652020_spc.fits", "obj": "HD45348", "mode": "E230H", "nominal": 5.396120620121716e-12, "lam_med": 2261.427870966253, "ra": 95.987979, "dec": -52.695642}, {"file": "h_o4v652030_spc.fits", "obj": "HD45348", "mode": "E230H", "nominal": 6.013919728253994e-12, "lam_med": 2510.707133154691, "ra": 95.987979, "dec": -52.695642}, {"file": "h_o4v652040_spc.fits", "obj": "HD45348", "mode": "E230H", "nominal": 7.30395239207698e-12, "lam_med": 2750.954131047867, "ra": 95.987979, "dec": -52.695642}, {"file": "h_o4v652050_spc.fits", "obj": "HD45348", "mode": "E230H", "nominal": 1.3726810814130718e-11, "lam_med": 3011.1839234813096, "ra": 95.987979, "dec": -52.695642}, {"file": "h_o4v652060_spc.fits", "obj": "HD45348", "mode": "E140M", "nominal": 4.7590399622193465e-14, "lam_med": 1390.399545044862, "ra": 95.987979, "dec": -52.695642, "rec": [0.16666666666666666, 0.3333333333333333, 0.16666666666666666, 0.3333333333333333, 0.6666666666666666, 1.0]}, {"file": "h_o4v652070_spc.fits", "obj": "HD45348", "mode": "E140H", "nominal": 1.702976693211323e-13, "lam_med": 1589.7392295627515, "ra": 95.987979, "dec": -52.695642, "rec": [0.0, 0.0, 0.0, 0.0, 0.0, 0.3333333333333333]}, {"file": "h_o8qy03020_spc.fits", "obj": "HD4539", "mode": "E140M", "nominal": 8.814495756085996e-14, "lam_med": 1395.755496749825, "ra": 11.871768, "dec": 9.982163}, {"file": "h_o8qy03030_spc.fits", "obj": "HD4539", "mode": "E230M", "nominal": 6.90642084807607e-14, "lam_med": 1950.4742452607215, "ra": 11.871768, "dec": 9.982163}, {"file": "h_o8qy03040_spc.fits", "obj": "HD4539", "mode": "E230M", "nominal": 3.877448335060029e-14, "lam_med": 2657.8666122664818, "ra": 11.871768, "dec": 9.982163, "rec": [0.0, 0.0, 0.6666666666666666, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o62u01010_spc.fits", "obj": "HD4614", "mode": "E230H", "nominal": 2.8506015528404285e-14, "lam_med": 2510.626378913175, "ra": 12.276784, "dec": 57.814988}, {"file": "h_o4w280010_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 1.482467640899927e-13, "lam_med": 1336.6400340546866, "ra": 98.225917, "dec": 7.332944}, {"file": "h_o4w280020_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 1.4706791329904095e-13, "lam_med": 1336.6561787984876, "ra": 98.225917, "dec": 7.332944}, {"file": "h_o4w280030_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 1.4718777188774464e-13, "lam_med": 1336.68112340268, "ra": 98.225917, "dec": 7.332944}, {"file": "h_o4w280040_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 5.443176190875292e-13, "lam_med": 1372.8657808785874, "ra": 98.225917, "dec": 7.332944}, {"file": "h_o4w280050_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 1.6806894434873983e-13, "lam_med": 1372.8777147678336, "ra": 98.225917, "dec": 7.332944}, {"file": "h_o4w280060_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 1.5895767767566842e-13, "lam_med": 1372.8911219254512, "ra": 98.225917, "dec": 7.332944}, {"file": "h_o4w280070_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 1.738455940739754e-13, "lam_med": 1409.9319352887705, "ra": 98.225917, "dec": 7.332944}, {"file": "h_o4w280080_spc.fits", "obj": "HD46300", "mode": "E140H", "nominal": 1.0445730218156878e-13, "lam_med": 1289.5403118118857, "ra": 98.225917, "dec": 7.332944, "rec": [0.16666666666666666, 0.3333333333333333, 0.6666666666666666, 0.5, 0.5, 0.6666666666666666]}, {"file": "h_o5bn70010_spc.fits", "obj": "HD48329", "mode": "E230M", "nominal": 1.0059577863896068e-14, "lam_med": 2068.306654853883, "ra": 100.98304, "dec": 25.131111}, {"file": "h_o5bn70020_spc.fits", "obj": "HD48329", "mode": "E230M", "nominal": 1.517249178659254e-14, "lam_med": 2068.4991546072442, "ra": 100.98304, "dec": 25.131111}, {"file": "h_o5bn70030_spc.fits", "obj": "HD48329", "mode": "E140M", "nominal": 3.832651141233321e-15, "lam_med": 1390.0519650919912, "ra": 100.98304, "dec": 25.131111, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o5bn70040_spc.fits", "obj": "HD48329", "mode": "E140M", "nominal": 1.6681395546574626e-15, "lam_med": 1390.0315404480516, "ra": 100.98304, "dec": 25.131111, "rec": [0.0, 0.5, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o5bn71010_spc.fits", "obj": "HD48329", "mode": "E230M", "nominal": 1.0422402901693998e-14, "lam_med": 2068.4338629921926, "ra": 100.98304, "dec": 25.13111}, {"file": "h_o5bn71020_spc.fits", "obj": "HD48329", "mode": "E230M", "nominal": 8.146436099645514e-15, "lam_med": 2068.5817312880117, "ra": 100.98304, "dec": 25.13111}, {"file": "h_o5bn71030_spc.fits", "obj": "HD48329", "mode": "E230H", "nominal": 1.023472049979709e-14, "lam_med": 2656.5680684791864, "ra": 100.98304, "dec": 25.13111}, {"file": "h_o5bn71040_spc.fits", "obj": "HD48329", "mode": "E230H", "nominal": 2.2251630540287628e-14, "lam_med": 2851.7986770488296, "ra": 100.98304, "dec": 25.13111}, {"file": "h_o4w230010_spc.fits", "obj": "HD50707", "mode": "E230M", "nominal": 1.9912825092071097e-11, "lam_med": 2059.406815493052, "ra": 103.387042, "dec": -20.224278, "rec": [0.0, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4w230020_spc.fits", "obj": "HD50707", "mode": "E230M", "nominal": 1.4358261470395916e-11, "lam_med": 2218.6911497797228, "ra": 103.387042, "dec": -20.224278}, {"file": "h_o4w230030_spc.fits", "obj": "HD50707", "mode": "E230M", "nominal": 2.2982314986548004e-11, "lam_med": 1950.451647015025, "ra": 103.387042, "dec": -20.224278}, {"file": "h_o5c027010_spc.fits", "obj": "HD52266", "mode": "E140H", "nominal": 2.2093692151348626e-13, "lam_med": 1254.3728748262984, "ra": 105.087831, "dec": -5.826668, "rec": [0.0, 0.6666666666666666, 0.5, 0.8333333333333334, 0.8333333333333334, 1.0]}, {"file": "h_o5c07l010_spc.fits", "obj": "HD52329", "mode": "E140H", "nominal": 3.691934842935633e-14, "lam_med": 1253.7942806750075, "ra": 105.119242, "dec": -8.86602}, {"file": "h_o6lz22010_spc.fits", "obj": "HD52463", "mode": "E140M", "nominal": 2.2549767159236994e-13, "lam_med": 1396.3396118604337, "ra": 105.051125, "dec": -27.799944}, {"file": "h_o8s606010_spc.fits", "obj": "HD54893", "mode": "E140M", "nominal": 6.977247070408669e-12, "lam_med": 1395.5518493298694, "ra": 107.212783, "dec": -39.655647}, {"file": "h_o63530010_spc.fits", "obj": "HD58510", "mode": "E140H", "nominal": 7.410252306507975e-14, "lam_med": 1484.4104522153516, "ra": 111.283208, "dec": -21.173861}, {"file": "h_o4ao02010_spc.fits", "obj": "HD58551", "mode": "E230M", "nominal": 2.994573460235585e-14, "lam_med": 2660.135540617561, "ra": 111.709531, "dec": 21.535723, "rec": [0.0, 0.0, 0.0, 0.0, 0.16666666666666666, 0.6666666666666666]}, {"file": "h_o8s605010_spc.fits", "obj": "HD59635", "mode": "E140M", "nominal": 4.525398557896351e-12, "lam_med": 1395.9127184024937, "ra": 112.273681, "dec": -38.812044}, {"file": "h_o8s605020_spc.fits", "obj": "HD59635", "mode": "E140M", "nominal": 4.319917519182988e-12, "lam_med": 1395.8266452849355, "ra": 112.273681, "dec": -38.812044, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o55q01070_spc.fits", "obj": "HD5980", "mode": "E140M", "nominal": 3.2969965339175704e-14, "lam_med": 1390.1619151088676, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o55q02070_spc.fits", "obj": "HD5980", "mode": "E140M", "nominal": 3.021494608954123e-14, "lam_med": 1391.674948095941, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o55q03070_spc.fits", "obj": "HD5980", "mode": "E140M", "nominal": 3.0445525429675474e-14, "lam_med": 1390.2036377588563, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o55q04070_spc.fits", "obj": "HD5980", "mode": "E140M", "nominal": 3.396266739600098e-14, "lam_med": 1389.9619218481562, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o55q05070_spc.fits", "obj": "HD5980", "mode": "E140M", "nominal": 3.110864652280146e-14, "lam_med": 1390.1215971814825, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o55q06070_spc.fits", "obj": "HD5980", "mode": "E140M", "nominal": 3.232663668610248e-14, "lam_med": 1389.9564668332564, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o6cd01010_spc.fits", "obj": "HD5980", "mode": "E140M", "nominal": 3.248130066192445e-14, "lam_med": 1390.5987511465544, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o6cd01020_spc.fits", "obj": "HD5980", "mode": "E230M", "nominal": 3.7965859343249475e-14, "lam_med": 1950.5139594239245, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o6cd01030_spc.fits", "obj": "HD5980", "mode": "E230M", "nominal": 1.6862088487382305e-14, "lam_med": 2652.8789680421132, "ra": 14.860542, "dec": -72.165083}, {"file": "h_o6co05040_spc.fits", "obj": "HD59967", "mode": "E140M", "nominal": 2.1190026672447308e-15, "lam_med": 1396.4454787318714, "ra": 112.677077, "dec": -37.339324}, {"file": "h_o6co05050_spc.fits", "obj": "HD59967", "mode": "E140M", "nominal": 4.7036097227904866e-15, "lam_med": 1396.3411624574696, "ra": 112.677077, "dec": -37.339324}, {"file": "h_o6co05060_spc.fits", "obj": "HD59967", "mode": "E230M", "nominal": 1.710531180274044e-14, "lam_med": 2661.518920102147, "ra": 112.677077, "dec": -37.339324}, {"file": "h_o4ao03010_spc.fits", "obj": "HD59984", "mode": "E230M", "nominal": 3.619523478244093e-14, "lam_med": 2661.9282140588352, "ra": 113.024153, "dec": -8.880895}, {"file": "h_o5dn03040_spc.fits", "obj": "HD60414", "mode": "E230H", "nominal": 1.278573537777376e-13, "lam_med": 3017.7152987482223, "ra": 113.449909, "dec": -14.52387}, {"file": "h_o5dn03050_spc.fits", "obj": "HD60414", "mode": "E230H", "nominal": 1.282747454077289e-13, "lam_med": 2800.9359893171863, "ra": 113.449909, "dec": -14.52387, "rec": [0.0, 0.3333333333333333, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o5dn03060_spc.fits", "obj": "HD60414", "mode": "E230H", "nominal": 1.3457210649154876e-13, "lam_med": 2800.9360226524204, "ra": 113.449909, "dec": -14.52387}, {"file": "h_o5dn03070_spc.fits", "obj": "HD60414", "mode": "E230H", "nominal": 7.887961660575136e-14, "lam_med": 2616.843532997118, "ra": 113.449909, "dec": -14.52387}, {"file": "h_o5dn03080_spc.fits", "obj": "HD60414", "mode": "E230H", "nominal": 7.01617280061626e-14, "lam_med": 2406.0738127209916, "ra": 113.449909, "dec": -14.52387, "rec": [0.0, 0.0, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 0.6666666666666666]}, {"file": "h_o5dn03090_spc.fits", "obj": "HD60414", "mode": "E230M", "nominal": 2.52437343448373e-13, "lam_med": 1950.3609365118973, "ra": 113.449909, "dec": -14.52387}, {"file": "h_o5dn030a0_spc.fits", "obj": "HD60414", "mode": "E140M", "nominal": 2.5026618825867207e-13, "lam_med": 1397.2082941622527, "ra": 113.449909, "dec": -14.52387}, {"file": "h_o6lm41010_spc.fits", "obj": "HD61421", "mode": "E230H", "nominal": 4.735020432488729e-12, "lam_med": 3017.2563271822924, "ra": 114.8248, "dec": 5.22411}, {"file": "h_o6lm41020_spc.fits", "obj": "HD61421", "mode": "E230H", "nominal": 1.4244941000467291e-12, "lam_med": 2510.648597658066, "ra": 114.8248, "dec": 5.22411}, {"file": "h_o6lm41030_spc.fits", "obj": "HD61421", "mode": "E230H", "nominal": 1.825042140262058e-12, "lam_med": 2750.763685436469, "ra": 114.8248, "dec": 5.22411}, {"file": "h_o6lm41040_spc.fits", "obj": "HD61421", "mode": "E230H", "nominal": 1.3982235018999721e-12, "lam_med": 2510.643081559623, "ra": 114.824799, "dec": 5.22411}, {"file": "h_o6lm41050_spc.fits", "obj": "HD61421", "mode": "E230H", "nominal": 1.9127120038498256e-12, "lam_med": 2258.4217602971985, "ra": 114.824799, "dec": 5.22411}, {"file": "h_o5bs01010_spc.fits", "obj": "HD62509", "mode": "E230H", "nominal": 1.1920940775878195e-14, "lam_med": 2357.8324114239367, "ra": 116.328869, "dec": 28.0262}, {"file": "h_o5f603010_spc.fits", "obj": "HD6268", "mode": "E230M", "nominal": 5.041052529714733e-15, "lam_med": 2661.2951542758956, "ra": 15.825697, "dec": -27.880565}, {"file": "h_o5f603020_spc.fits", "obj": "HD6268", "mode": "E230M", "nominal": 3.748836521610981e-15, "lam_med": 2661.299637482418, "ra": 15.825697, "dec": -27.880565, "rec": [0.0, 0.0, 0.16666666666666666, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o5c089010_spc.fits", "obj": "HD62714", "mode": "E140H", "nominal": 9.246676521041213e-14, "lam_med": 1253.3121383827872, "ra": 115.599108, "dec": -56.14601}, {"file": "h_o63531010_spc.fits", "obj": "HD63005", "mode": "E140M", "nominal": 9.109587989132755e-14, "lam_med": 1390.782730930182, "ra": 116.454292, "dec": -26.492083}, {"file": "h_o5c03b010_spc.fits", "obj": "HD64109", "mode": "E140H", "nominal": 7.873582434936746e-14, "lam_med": 1255.0343176579772, "ra": 118.094313, "dec": 3.843157}, {"file": "h_o56l01010_spc.fits", "obj": "HD6456", "mode": "E140H", "nominal": 4.9349499858287356e-14, "lam_med": 1253.4315231888681, "ra": 16.420644, "dec": 21.473192}, {"file": "h_o56l01020_spc.fits", "obj": "HD6456", "mode": "E140H", "nominal": 5.160603147151644e-14, "lam_med": 1253.3310664285905, "ra": 16.420644, "dec": 21.473192}, {"file": "h_o56l01030_spc.fits", "obj": "HD6456", "mode": "E140H", "nominal": 4.639277223626448e-14, "lam_med": 1253.3920332293264, "ra": 16.420644, "dec": 21.473192}, {"file": "h_o56l01040_spc.fits", "obj": "HD6456", "mode": "E230H", "nominal": 4.6127885211973296e-14, "lam_med": 1964.3753606549903, "ra": 16.420644, "dec": 21.473192}, {"file": "h_o56l51010_spc.fits", "obj": "HD6456", "mode": "E140H", "nominal": 8.429527143590495e-14, "lam_med": 1253.9850845483898, "ra": 16.420667, "dec": 21.473185}, {"file": "h_o56l51020_spc.fits", "obj": "HD6456", "mode": "E140H", "nominal": 6.836997326647012e-14, "lam_med": 1254.0386786188078, "ra": 16.420667, "dec": 21.473185, "rec": [0.0, 0.6666666666666666, 0.5, 0.5, 1.0, 0.6666666666666666]}, {"file": "h_o56l51030_spc.fits", "obj": "HD6456", "mode": "E230H", "nominal": 1.4667348587609548e-13, "lam_med": 1962.3103721696634, "ra": 16.420667, "dec": 21.473185}, {"file": "h_o56l02010_spc.fits", "obj": "HD6457", "mode": "E140H", "nominal": 1.5170061561074467e-13, "lam_med": 1253.5225007044235, "ra": 16.423791, "dec": 21.465445, "rec": [0.0, 0.5, 0.3333333333333333, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "h_o56l02020_spc.fits", "obj": "HD6457", "mode": "E140H", "nominal": 1.70362134646714e-13, "lam_med": 1253.4470151647777, "ra": 16.423791, "dec": 21.465445}, {"file": "h_o56l02030_spc.fits", "obj": "HD6457", "mode": "E140H", "nominal": 1.2285102673722145e-13, "lam_med": 1253.4063661109087, "ra": 16.423791, "dec": 21.465445}, {"file": "h_o56l02040_spc.fits", "obj": "HD6457", "mode": "E230H", "nominal": 1.6126756143514777e-13, "lam_med": 1964.3635390911795, "ra": 16.423791, "dec": 21.465445}, {"file": "h_o6lz26010_spc.fits", "obj": "HD66788", "mode": "E140M", "nominal": 9.384238473827263e-14, "lam_med": 1396.005623794149, "ra": 121.035583, "dec": -27.485806}, {"file": "h_o5f654010_spc.fits", "obj": "HD6755", "mode": "E230M", "nominal": 8.921180821218416e-15, "lam_med": 2658.664791574338, "ra": 17.429481, "dec": 61.547276}, {"file": "h_o5lh03010_spc.fits", "obj": "HD69106", "mode": "E140H", "nominal": 3.3692847484193135e-13, "lam_med": 1255.8310799973808, "ra": 123.51582, "dec": -36.952205}, {"file": "h_o5lh03020_spc.fits", "obj": "HD69106", "mode": "E140H", "nominal": 3.452137990045184e-13, "lam_med": 1255.9505086069457, "ra": 123.51582, "dec": -36.952205, "rec": [0.0, 0.5, 0.8333333333333334, 0.5, 1.0, 1.0]}, {"file": "h_o5lh03030_spc.fits", "obj": "HD69106", "mode": "E230H", "nominal": 2.975974539386916e-13, "lam_med": 1762.039117233056, "ra": 123.51582, "dec": -36.952205}, {"file": "h_o5lh03040_spc.fits", "obj": "HD69106", "mode": "E230H", "nominal": 2.977855084477446e-13, "lam_med": 1761.8931376320859, "ra": 123.51582, "dec": -36.952205}, {"file": "h_o5lh03050_spc.fits", "obj": "HD69106", "mode": "E230H", "nominal": 3.070947575976176e-13, "lam_med": 1761.9035058987515, "ra": 123.51582, "dec": -36.952205}, {"file": "h_o4ao04010_spc.fits", "obj": "HD70110", "mode": "E230M", "nominal": 1.9099890356262153e-14, "lam_med": 2661.9674850682354, "ra": 125.054182, "dec": -0.909429}, {"file": "h_o5c090010_spc.fits", "obj": "HD71634", "mode": "E140H", "nominal": 1.0321220824136673e-13, "lam_med": 1255.4069225840835, "ra": 126.376113, "dec": -58.133211}, {"file": "h_o40o01040_spc.fits", "obj": "HD72089", "mode": "E140H", "nominal": 6.021734318972117e-14, "lam_med": 1292.1408402995007, "ra": 127.278525, "dec": -45.55736}, {"file": "h_o40o01050_spc.fits", "obj": "HD72089", "mode": "E140H", "nominal": 6.002152640114968e-14, "lam_med": 1292.1856542619057, "ra": 127.278525, "dec": -45.55736}, {"file": "h_o40o01060_spc.fits", "obj": "HD72089", "mode": "E140H", "nominal": 7.920931934854968e-14, "lam_med": 1292.286216590257, "ra": 127.278525, "dec": -45.55736}, {"file": "h_o6lm51010_spc.fits", "obj": "HD72660", "mode": "E230H", "nominal": 7.609321490079186e-14, "lam_med": 2510.7336285147844, "ra": 128.506723, "dec": -2.151562}, {"file": "h_o6lm51020_spc.fits", "obj": "HD72660", "mode": "E230H", "nominal": 8.650859969699883e-14, "lam_med": 2750.899765443889, "ra": 128.506723, "dec": -2.151562, "rec": [0.0, 0.5, 0.6666666666666666, 0.5, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o6lm51030_spc.fits", "obj": "HD72660", "mode": "E230H", "nominal": 8.588402759613907e-14, "lam_med": 2258.5239183881154, "ra": 128.506723, "dec": -2.151562}, {"file": "h_o5c03e010_spc.fits", "obj": "HD72754", "mode": "E140H", "nominal": 7.329888526113329e-14, "lam_med": 1253.3006006870505, "ra": 128.097412, "dec": -49.601325}, {"file": "h_o5bn10010_spc.fits", "obj": "HD72779", "mode": "E140M", "nominal": 2.260426430684441e-15, "lam_med": 1392.2502609504168, "ra": 128.831036, "dec": 19.590055}, {"file": "h_o5bn10020_spc.fits", "obj": "HD72779", "mode": "E140M", "nominal": 1.1484868915857487e-15, "lam_med": 1394.9587206768933, "ra": 128.831036, "dec": 19.590055}, {"file": "h_o5bn10030_spc.fits", "obj": "HD72779", "mode": "E140M", "nominal": 3.781640668812261e-15, "lam_med": 1391.775076316283, "ra": 128.831036, "dec": 19.590055}, {"file": "h_o5bn10040_spc.fits", "obj": "HD72779", "mode": "E230M", "nominal": 1.4933831136053594e-14, "lam_med": 2653.141193024137, "ra": 128.831036, "dec": 19.590055}, {"file": "h_o5bn11010_spc.fits", "obj": "HD72779", "mode": "E230M", "nominal": 1.1383749025000084e-14, "lam_med": 2075.5466396096735, "ra": 128.831036, "dec": 19.590055}, {"file": "h_o5bn11020_spc.fits", "obj": "HD72779", "mode": "E230M", "nominal": 8.509982209923671e-15, "lam_med": 2075.5462568366283, "ra": 128.831036, "dec": 19.590055}, {"file": "h_o6co06040_spc.fits", "obj": "HD73350", "mode": "E140M", "nominal": 1.6130522294582066e-15, "lam_med": 1391.7912934627768, "ra": 129.459358, "dec": -6.806864}, {"file": "h_o6co06050_spc.fits", "obj": "HD73350", "mode": "E140M", "nominal": 3.940719830613713e-15, "lam_med": 1391.107967931524, "ra": 129.459358, "dec": -6.806864}, {"file": "h_o6co06060_spc.fits", "obj": "HD73350", "mode": "E230M", "nominal": 1.434316253218459e-14, "lam_med": 2657.4632654877814, "ra": 129.459358, "dec": -6.806864}, {"file": "h_o8qy13010_spc.fits", "obj": "HD74721", "mode": "E230M", "nominal": 1.4733390153409202e-14, "lam_med": 2661.0891433059633, "ra": 131.496884, "dec": 13.263361}, {"file": "h_o5c05b010_spc.fits", "obj": "HD75309", "mode": "E140H", "nominal": 9.518368176978046e-14, "lam_med": 1254.6995588706222, "ra": 131.866542, "dec": -46.451111}, {"file": "h_o8p201010_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.3953856684897892e-14, "lam_med": 2010.2032921715293, "ra": 134.683329, "dec": -16.132511, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o8p201020_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.1176611606952792e-14, "lam_med": 2010.1787040252811, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o8p201030_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.130354859154773e-14, "lam_med": 2010.1760025576828, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o8p201040_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.1352204602600576e-14, "lam_med": 2010.173341125464, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o8p201050_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.1372423500070829e-14, "lam_med": 2010.1717277508274, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o8p202010_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.4150490755806526e-14, "lam_med": 2010.1989177654254, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o8p202020_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.118149210009132e-14, "lam_med": 2010.1741660278276, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o8p202030_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.1274552609722796e-14, "lam_med": 2010.171428684523, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o8p202040_spc.fits", "obj": "HD76932", "mode": "E230H", "nominal": 1.133373912903992e-14, "lam_med": 2010.1437118831548, "ra": 134.683329, "dec": -16.132511}, {"file": "h_o5c092010_spc.fits", "obj": "HD79186", "mode": "E140H", "nominal": 1.479477886292082e-13, "lam_med": 1254.9533795479256, "ra": 137.768325, "dec": -44.867906}, {"file": "h_o5c033010_spc.fits", "obj": "HD79931", "mode": "E140H", "nominal": 1.8808102382099813e-13, "lam_med": 1255.1300392357896, "ra": 139.172375, "dec": -8.744749}, {"file": "h_o5bn31010_spc.fits", "obj": "HD82210", "mode": "E140M", "nominal": 1.2155132331584807e-15, "lam_med": 1396.5844023572308, "ra": 143.620237, "dec": 69.830344}, {"file": "h_o5bn31020_spc.fits", "obj": "HD82210", "mode": "E230M", "nominal": 1.294351139783829e-14, "lam_med": 2066.869526078346, "ra": 143.620236, "dec": 69.830344}, {"file": "h_o5bn31030_spc.fits", "obj": "HD82210", "mode": "E230H", "nominal": 1.699952079326819e-14, "lam_med": 2657.0088114174605, "ra": 143.620236, "dec": 69.830344}, {"file": "h_o5bn31040_spc.fits", "obj": "HD82210", "mode": "E230H", "nominal": 4.676610363923988e-14, "lam_med": 2857.076616399721, "ra": 143.620236, "dec": 69.830344}, {"file": "h_o4zo01010_spc.fits", "obj": "HD84748", "mode": "E230M", "nominal": 2.172943919081183e-15, "lam_med": 2516.8511361997066, "ra": 146.889314, "dec": 11.428606}, {"file": "h_o4zo01020_spc.fits", "obj": "HD84748", "mode": "E230M", "nominal": 2.0205594831946263e-15, "lam_med": 2516.872187487046, "ra": 146.889314, "dec": 11.428606, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 0.3333333333333333, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o4zo01030_spc.fits", "obj": "HD84748", "mode": "E230M", "nominal": 2.083891060836649e-15, "lam_med": 2516.8705663516075, "ra": 146.889314, "dec": 11.428606}, {"file": "h_o4zo01040_spc.fits", "obj": "HD84748", "mode": "E230M", "nominal": 2.115607669000088e-15, "lam_med": 2516.867417380474, "ra": 146.889314, "dec": 11.428606, "rec": [0.0, 0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 0.6666666666666666]}, {"file": "h_o56d04010_spc.fits", "obj": "HD84937", "mode": "E230M", "nominal": 3.1057172883941654e-14, "lam_med": 2661.727834093206, "ra": 147.233609, "dec": 13.744455}, {"file": "h_o56d05010_spc.fits", "obj": "HD84937", "mode": "E230M", "nominal": 3.083380388073191e-14, "lam_med": 2660.3089675622286, "ra": 147.233628, "dec": 13.744403}, {"file": "h_o8qy16010_spc.fits", "obj": "HD85503", "mode": "E230H", "nominal": 1.5539367052911337e-14, "lam_med": 3017.3507630022514, "ra": 148.190632, "dec": 26.006884}, {"file": "h_o8qy16020_spc.fits", "obj": "HD85503", "mode": "E230H", "nominal": 1.4053208457132278e-14, "lam_med": 3017.361220210876, "ra": 148.190632, "dec": 26.006884}, {"file": "h_o6lt03010_spc.fits", "obj": "HD85905", "mode": "E140H", "nominal": 3.262948451207575e-14, "lam_med": 1372.135708209548, "ra": 148.632563, "dec": -22.487458}, {"file": "h_o6lt03020_spc.fits", "obj": "HD85905", "mode": "E230H", "nominal": 9.078291677851637e-14, "lam_med": 2010.1274958718614, "ra": 148.632563, "dec": -22.487458}, {"file": "h_o6lt03030_spc.fits", "obj": "HD85905", "mode": "E230H", "nominal": 7.813896460961883e-14, "lam_med": 2707.644971152954, "ra": 148.632563, "dec": -22.487458}, {"file": "h_o6lt03040_spc.fits", "obj": "HD85905", "mode": "E230H", "nominal": 9.602085256981713e-14, "lam_med": 1760.1490827954663, "ra": 148.632563, "dec": -22.487458}, {"file": "h_o6lt03050_spc.fits", "obj": "HD85905", "mode": "E230H", "nominal": 7.178608682594962e-14, "lam_med": 2258.437268257563, "ra": 148.632563, "dec": -22.487458}, {"file": "h_o6lt03060_spc.fits", "obj": "HD85905", "mode": "E140H", "nominal": 6.267518295552359e-14, "lam_med": 1559.2376677156271, "ra": 148.632563, "dec": -22.487458}, {"file": "h_o5c093010_spc.fits", "obj": "HD86360", "mode": "E140H", "nominal": 1.4204227517889883e-13, "lam_med": 1255.0527461227382, "ra": 149.555727, "dec": 12.444793}, {"file": "h_o54305010_spc.fits", "obj": "HD88115", "mode": "E140H", "nominal": 6.922420438009081e-14, "lam_med": 1254.6302222083414, "ra": 151.882432, "dec": -62.65357}, {"file": "h_o54305020_spc.fits", "obj": "HD88115", "mode": "E140H", "nominal": 7.654282482428334e-14, "lam_med": 1254.6239629353054, "ra": 151.882432, "dec": -62.65357}, {"file": "h_o54305030_spc.fits", "obj": "HD88115", "mode": "E140H", "nominal": 7.94585473068842e-14, "lam_med": 1254.6547616307435, "ra": 151.882432, "dec": -62.65357}, {"file": "h_o54305040_spc.fits", "obj": "HD88115", "mode": "E230H", "nominal": 9.414126434509653e-14, "lam_med": 1760.2505002031673, "ra": 151.882432, "dec": -62.65357}, {"file": "h_o54305050_spc.fits", "obj": "HD88115", "mode": "E230H", "nominal": 9.019395111700025e-14, "lam_med": 1760.2496747964585, "ra": 151.882432, "dec": -62.65357}, {"file": "h_o54305060_spc.fits", "obj": "HD88115", "mode": "E230H", "nominal": 1.0350046347077087e-13, "lam_med": 1760.245519707244, "ra": 151.882432, "dec": -62.65357}, {"file": "h_o6lz30010_spc.fits", "obj": "HD88115", "mode": "E140M", "nominal": 1.7553846660468714e-13, "lam_med": 1396.3911885266766, "ra": 151.882411, "dec": -62.653583, "rec": [0.0, 0.16666666666666666, 0.5, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o4ao05010_spc.fits", "obj": "HD88737", "mode": "E230M", "nominal": 2.4385891848299194e-14, "lam_med": 2661.3902385019073, "ra": 153.623983, "dec": 21.167973}, {"file": "h_o5jy02010_spc.fits", "obj": "HD89688", "mode": "E230H", "nominal": 1.5726353657869538e-13, "lam_med": 2750.6708266512615, "ra": 155.258208, "dec": 2.28975}, {"file": "h_o5jy02020_spc.fits", "obj": "HD89688", "mode": "E230H", "nominal": 1.5691777104269917e-13, "lam_med": 2750.6621536215744, "ra": 155.258208, "dec": 2.28975}, {"file": "h_o5jy02030_spc.fits", "obj": "HD89688", "mode": "E230H", "nominal": 1.7678672705142683e-13, "lam_med": 2750.6679251397177, "ra": 155.258208, "dec": 2.28975}, {"file": "h_o6lz32010_spc.fits", "obj": "HD90087", "mode": "E140H", "nominal": 9.657828149887274e-14, "lam_med": 1484.5421453366641, "ra": 155.586949, "dec": -59.755472}, {"file": "h_o6g401010_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 1.831896548783906e-14, "lam_med": 1760.2280138545536, "ra": 158.29522, "dec": -58.498628}, {"file": "h_o6g401020_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 1.466986394405216e-14, "lam_med": 1760.2170057608942, "ra": 158.29522, "dec": -58.498628}, {"file": "h_o6g401030_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 1.527309504561072e-14, "lam_med": 1760.2115164118259, "ra": 158.29522, "dec": -58.498628, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6g401040_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 1.930710351372307e-14, "lam_med": 1760.1964814370644, "ra": 158.29522, "dec": -58.498628}, {"file": "h_o6g401050_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 1.6125137695855578e-14, "lam_med": 1760.1847721002591, "ra": 158.29522, "dec": -58.498628}, {"file": "h_o6g402010_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 2.075426353765626e-14, "lam_med": 1760.2190118085837, "ra": 158.295219, "dec": -58.498628}, {"file": "h_o6g402020_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 1.6273249270025054e-14, "lam_med": 1760.2118925531884, "ra": 158.295219, "dec": -58.498628}, {"file": "h_o6g402030_spc.fits", "obj": "HD91595", "mode": "E230H", "nominal": 1.649234490459828e-14, "lam_med": 1760.2105779863075, "ra": 158.295219, "dec": -58.498628}, {"file": "h_o6lz33010_spc.fits", "obj": "HD91597", "mode": "E140M", "nominal": 5.515732272920372e-14, "lam_med": 1396.6377881840908, "ra": 158.25475, "dec": -60.844944}, {"file": "h_o6lz34010_spc.fits", "obj": "HD91651", "mode": "E140M", "nominal": 1.0682355696081896e-13, "lam_med": 1396.6515225486828, "ra": 158.376244, "dec": -60.127806}, {"file": "h_o5c095010_spc.fits", "obj": "HD91824", "mode": "E140H", "nominal": 1.6208103802411613e-13, "lam_med": 1254.614932167593, "ra": 158.694269, "dec": -58.156134}, {"file": "h_o5c08n010_spc.fits", "obj": "HD91983", "mode": "E140H", "nominal": 4.1838187699031225e-14, "lam_med": 1255.573431739801, "ra": 158.975875, "dec": -58.257528}, {"file": "h_o5c035010_spc.fits", "obj": "HD92536", "mode": "E140H", "nominal": 1.7071522802042244e-13, "lam_med": 1253.2978440407715, "ra": 159.845194, "dec": -64.111829}, {"file": "h_o6lz36010_spc.fits", "obj": "HD92554", "mode": "E140M", "nominal": 6.242123525253627e-14, "lam_med": 1396.4602305495268, "ra": 159.940208, "dec": -60.911, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o4qx01010_spc.fits", "obj": "HD93205", "mode": "E140H", "nominal": 9.806629020697962e-14, "lam_med": 1233.0430861123937, "ra": 161.140917, "dec": -59.737578}, {"file": "h_o4qx01020_spc.fits", "obj": "HD93205", "mode": "E140H", "nominal": 1.1689853013203874e-13, "lam_med": 1413.0723695169331, "ra": 161.140917, "dec": -59.737578, "rec": [0.0, 0.16666666666666666, 1.0, 0.8333333333333334, 1.0, 0.8333333333333334]}, {"file": "h_o4qx01030_spc.fits", "obj": "HD93205", "mode": "E140H", "nominal": 1.442551204838594e-13, "lam_med": 1588.0537777248173, "ra": 161.140917, "dec": -59.737578}, {"file": "h_o4qx01040_spc.fits", "obj": "HD93205", "mode": "E230H", "nominal": 1.0300342109888653e-13, "lam_med": 1760.334927294968, "ra": 161.140917, "dec": -59.737578}, {"file": "h_o4qx01050_spc.fits", "obj": "HD93205", "mode": "E230H", "nominal": 5.706476111088179e-14, "lam_med": 2510.827418793022, "ra": 161.140917, "dec": -59.737578}, {"file": "h_o4qx01060_spc.fits", "obj": "HD93205", "mode": "E230H", "nominal": 6.070010610791335e-14, "lam_med": 2751.003032924161, "ra": 161.140917, "dec": -59.737578}, {"file": "h_o6lz37010_spc.fits", "obj": "HD93206", "mode": "E140H", "nominal": 2.092827231241746e-13, "lam_med": 1485.0565497771927, "ra": 161.095453, "dec": -59.993333}, {"file": "h_o4qx02010_spc.fits", "obj": "HD93222", "mode": "E140H", "nominal": 6.931522715417516e-14, "lam_med": 1233.3490953726518, "ra": 161.151375, "dec": -60.091333}, {"file": "h_o4qx02020_spc.fits", "obj": "HD93222", "mode": "E140H", "nominal": 8.345889205009647e-14, "lam_med": 1412.3928960077585, "ra": 161.151375, "dec": -60.091333}, {"file": "h_o4qx02030_spc.fits", "obj": "HD93222", "mode": "E140H", "nominal": 8.217588069297985e-14, "lam_med": 1586.026607219233, "ra": 161.151375, "dec": -60.091333}, {"file": "h_o4qx02040_spc.fits", "obj": "HD93222", "mode": "E230H", "nominal": 6.196659767926422e-14, "lam_med": 1760.4294602485322, "ra": 161.151375, "dec": -60.091333}, {"file": "h_o4qx02050_spc.fits", "obj": "HD93222", "mode": "E230H", "nominal": 4.034887262336063e-14, "lam_med": 2511.022443035188, "ra": 161.151375, "dec": -60.091333}, {"file": "h_o4qx02060_spc.fits", "obj": "HD93222", "mode": "E230H", "nominal": 4.2985116505937043e-14, "lam_med": 2751.2285910291102, "ra": 161.151375, "dec": -60.091333}, {"file": "h_o6lj0g010_spc.fits", "obj": "HD93237", "mode": "E140H", "nominal": 3.60810766126551e-13, "lam_med": 1450.185398280648, "ra": 160.464577, "dec": -79.783286}, {"file": "h_o6lj0g020_spc.fits", "obj": "HD93237", "mode": "E140H", "nominal": 2.657914929907264e-13, "lam_med": 1253.111435387218, "ra": 160.464577, "dec": -79.783286}, {"file": "h_o6aq02010_spc.fits", "obj": "HD93497", "mode": "E140M", "nominal": 3.460391078484911e-15, "lam_med": 1396.0328803510952, "ra": 161.692467, "dec": -49.420271}, {"file": "h_o6aq02020_spc.fits", "obj": "HD93497", "mode": "E140M", "nominal": 2.5017144152024574e-15, "lam_med": 1396.052404504635, "ra": 161.692467, "dec": -49.420271}, {"file": "h_o63549010_spc.fits", "obj": "HD93840", "mode": "E140H", "nominal": 1.055399708971428e-13, "lam_med": 1483.3513980814537, "ra": 162.286166, "dec": -46.778306, "rec": [0.0, 0.16666666666666666, 0.5, 0.8333333333333334, 1.0, 0.6666666666666666]}, {"file": "h_o5lh04010_spc.fits", "obj": "HD93843", "mode": "E140H", "nominal": 2.716389762927237e-13, "lam_med": 1255.2613966066328, "ra": 162.1575, "dec": -60.223972}, {"file": "h_o5lh04020_spc.fits", "obj": "HD93843", "mode": "E140H", "nominal": 2.671200840548491e-13, "lam_med": 1255.2600361127033, "ra": 162.1575, "dec": -60.223972}, {"file": "h_o5lh04030_spc.fits", "obj": "HD93843", "mode": "E230H", "nominal": 3.399886513784379e-13, "lam_med": 1761.1131329783962, "ra": 162.1575, "dec": -60.223972}, {"file": "h_o5lh04040_spc.fits", "obj": "HD93843", "mode": "E230H", "nominal": 3.4225836887962317e-13, "lam_med": 1761.072521789915, "ra": 162.1575, "dec": -60.223972}, {"file": "h_o56d06010_spc.fits", "obj": "HD94028", "mode": "E230M", "nominal": 2.714449077102833e-14, "lam_med": 2661.584114638208, "ra": 162.867206, "dec": 20.27763}, {"file": "h_o5cn01010_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 9.128866791674804e-15, "lam_med": 2012.3875401508426, "ra": 162.867152, "dec": 20.277453}, {"file": "h_o5cn01020_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.41383580708406e-15, "lam_med": 2012.251250106112, "ra": 162.867152, "dec": 20.277453}, {"file": "h_o5cn01030_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.53632856221075e-15, "lam_med": 2012.1262604561161, "ra": 162.867152, "dec": 20.277453}, {"file": "h_o5cn01040_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 9.036732041784915e-15, "lam_med": 2011.9809602999098, "ra": 162.867152, "dec": 20.277453}, {"file": "h_o5cn01050_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.682754561278495e-15, "lam_med": 2011.9083653630564, "ra": 162.867152, "dec": 20.277453}, {"file": "h_o5cn02010_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 9.366307795952523e-15, "lam_med": 2012.3861267743944, "ra": 162.867153, "dec": 20.277455}, {"file": "h_o5cn02020_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.639130881245141e-15, "lam_med": 2012.366777228799, "ra": 162.867153, "dec": 20.277455}, {"file": "h_o5cn02030_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.731405786767344e-15, "lam_med": 2012.3658327474216, "ra": 162.867153, "dec": 20.277455}, {"file": "h_o5cn02040_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 9.325106966506085e-15, "lam_med": 2012.3723743350079, "ra": 162.867153, "dec": 20.277455, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o5cn02050_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 1.0491885457620221e-13, "lam_med": 2012.4123384436787, "ra": 162.867153, "dec": 20.277455}, {"file": "h_o5cn03010_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 9.273368300281389e-15, "lam_med": 2012.387628396419, "ra": 162.867151, "dec": 20.277452}, {"file": "h_o5cn03020_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.474347431087458e-15, "lam_med": 2012.364325411563, "ra": 162.867151, "dec": 20.277452}, {"file": "h_o5cn03030_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.557122871927998e-15, "lam_med": 2012.3545233999805, "ra": 162.867151, "dec": 20.277452}, {"file": "h_o5cn03040_spc.fits", "obj": "HD94028", "mode": "E230H", "nominal": 7.634335026849126e-15, "lam_med": 2012.303180378562, "ra": 162.867151, "dec": 20.277452}, {"file": "h_o5c01a010_spc.fits", "obj": "HD94144", "mode": "E140H", "nominal": 1.7050252291205962e-13, "lam_med": 1255.1322972065436, "ra": 162.66681, "dec": -61.269546, "rec": [0.16666666666666666, 0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o6lj0h010_spc.fits", "obj": "HD94454", "mode": "E140H", "nominal": 7.037970581476834e-14, "lam_med": 1252.886019336507, "ra": 162.876074, "dec": -75.882773}, {"file": "h_o54306010_spc.fits", "obj": "HD94493", "mode": "E140H", "nominal": 1.2717291505495184e-13, "lam_med": 1254.7008670194123, "ra": 163.313375, "dec": -60.814889}, {"file": "h_o54306020_spc.fits", "obj": "HD94493", "mode": "E230H", "nominal": 1.4939005761500645e-13, "lam_med": 1760.2445417402223, "ra": 163.313375, "dec": -60.814889}, {"file": "h_o8oe01010_spc.fits", "obj": "HD97320", "mode": "E230M", "nominal": 1.0939818134611633e-14, "lam_med": 2661.263328789705, "ra": 167.753478, "dec": -65.427399}, {"file": "h_o8oe01020_spc.fits", "obj": "HD97320", "mode": "E230M", "nominal": 1.0031741287064153e-14, "lam_med": 2661.3443575931724, "ra": 167.753478, "dec": -65.427399}, {"file": "h_o6co08040_spc.fits", "obj": "HD97334", "mode": "E140M", "nominal": 1.7966828518813904e-15, "lam_med": 1390.5525552915851, "ra": 168.134573, "dec": 35.813976, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "h_o6co08050_spc.fits", "obj": "HD97334", "mode": "E140M", "nominal": 4.1002367116971786e-15, "lam_med": 1389.961700131564, "ra": 168.134573, "dec": 35.813976}, {"file": "h_o6co08060_spc.fits", "obj": "HD97334", "mode": "E230M", "nominal": 1.8706535428553353e-14, "lam_med": 2645.7442923775097, "ra": 168.134573, "dec": 35.813976}, {"file": "h_o62u08010_spc.fits", "obj": "HD99028", "mode": "E230H", "nominal": 3.216931928647588e-14, "lam_med": 2510.948139305533, "ra": 170.981105, "dec": 10.52948}, {"file": "h_o54301010_spc.fits", "obj": "HD99857", "mode": "E140H", "nominal": 9.614462619433948e-14, "lam_med": 1253.5308797622984, "ra": 172.113336, "dec": -66.489267, "rec": [0.16666666666666666, 0.3333333333333333, 0.3333333333333333, 1.0, 1.0, 1.0]}, {"file": "h_o54301020_spc.fits", "obj": "HD99857", "mode": "E140H", "nominal": 1.0202758408137721e-13, "lam_med": 1253.3781292661538, "ra": 172.113336, "dec": -66.489267, "rec": [0.0, 0.3333333333333333, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o54301030_spc.fits", "obj": "HD99857", "mode": "E140H", "nominal": 9.463921596805434e-14, "lam_med": 1253.4175618546037, "ra": 172.113336, "dec": -66.489267}, {"file": "h_o54301040_spc.fits", "obj": "HD99857", "mode": "E230H", "nominal": 1.2445804096268504e-13, "lam_med": 1760.3203475356186, "ra": 172.113336, "dec": -66.489267}, {"file": "h_o54301050_spc.fits", "obj": "HD99857", "mode": "E230H", "nominal": 1.3767190540326328e-13, "lam_med": 1760.3194556508138, "ra": 172.113336, "dec": -66.489267, "rec": [0.0, 0.5, 1.0, 0.3333333333333333, 1.0, 0.8333333333333334]}, {"file": "h_o54301060_spc.fits", "obj": "HD99857", "mode": "E230H", "nominal": 1.3879610961535365e-13, "lam_med": 1760.3189772259232, "ra": 172.113336, "dec": -66.489267}, {"file": "h_o6lz44010_spc.fits", "obj": "HD99857", "mode": "E140H", "nominal": 8.349196334618194e-14, "lam_med": 1485.1424222215915, "ra": 172.113375, "dec": -66.489278}, {"file": "h_o6lj0i010_spc.fits", "obj": "HD99872", "mode": "E140H", "nominal": 1.357156362913976e-13, "lam_med": 1451.1123030075828, "ra": 172.076653, "dec": -72.473981}, {"file": "h_o6lj0i020_spc.fits", "obj": "HD99872", "mode": "E140H", "nominal": 8.955623976300289e-14, "lam_med": 1254.5960515584784, "ra": 172.076653, "dec": -72.473981}, {"file": "h_o6lz45010_spc.fits", "obj": "HD99890", "mode": "E140M", "nominal": 1.9093579993498793e-13, "lam_med": 1396.3421453497156, "ra": 172.273949, "dec": -56.644167}, {"file": "h_o4v403010_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 1.7286699761644287e-15, "lam_med": 1389.3754561889662, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v403020_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 2.56326239291918e-15, "lam_med": 1389.158814907384, "ra": 254.457542, "dec": 35.342417, "rec": [0.0, 1.0, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o4v403030_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.02321816093734e-15, "lam_med": 1389.0368230521403, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v403040_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.3584452421199675e-15, "lam_med": 1389.002517109783, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v403050_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.730308179926942e-15, "lam_med": 1388.8525728958239, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v404010_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 5.658135041646906e-15, "lam_med": 1389.0506714535722, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v404020_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 4.908519270454552e-15, "lam_med": 1388.8720086985172, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v404030_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 4.666361193433523e-15, "lam_med": 1388.8558350571375, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v404040_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.873161172664934e-15, "lam_med": 1388.887725383654, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v404050_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.360346123922824e-15, "lam_med": 1388.8987366680267, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v405010_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 6.464242187888317e-15, "lam_med": 1389.0490450125842, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v405020_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 5.8377786920905676e-15, "lam_med": 1389.0406968986674, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v405030_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 5.610608298093704e-15, "lam_med": 1388.9066583182596, "ra": 254.457542, "dec": 35.342417, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 0.8333333333333334, 0.6666666666666666, 1.0]}, {"file": "h_o4v405040_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 5.317481907026993e-15, "lam_med": 1388.876109631186, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v405050_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 4.772762137966088e-15, "lam_med": 1388.834194313616, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v406010_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 1.7143346609910163e-15, "lam_med": 1388.9194816497732, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v406020_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 2.008352217169224e-15, "lam_med": 1388.9817059494198, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v406030_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 2.149870378347253e-15, "lam_med": 1389.0763138589998, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v406040_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 2.4124192236352643e-15, "lam_med": 1389.0602521113442, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v406050_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 2.8358615863677365e-15, "lam_med": 1389.0210721354574, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v407010_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 6.0964253594980245e-15, "lam_med": 1388.9999257073378, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v407020_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 4.962305970830641e-15, "lam_med": 1388.8922092271127, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v407030_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 4.356267396155373e-15, "lam_med": 1388.923472332644, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v407040_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.70197606076512e-15, "lam_med": 1389.026428095014, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v407050_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.04517370445527e-15, "lam_med": 1389.0852188214435, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v408010_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 2.4808988060207982e-15, "lam_med": 1389.2871806909895, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v408020_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 2.8355609084586677e-15, "lam_med": 1389.231981231091, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v408030_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 3.5559432527242595e-15, "lam_med": 1389.3630459152805, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v408040_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 4.324884363088266e-15, "lam_med": 1389.241042495294, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v452010_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 6.6728386757187186e-15, "lam_med": 1398.4885002676654, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v452020_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 6.835251419933037e-15, "lam_med": 1398.468950801571, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v452030_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 7.650984903981507e-15, "lam_med": 1398.3206165548609, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v452040_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 8.076060225796416e-15, "lam_med": 1398.260864534057, "ra": 254.457542, "dec": 35.342417}, {"file": "h_o4v452050_spc.fits", "obj": "HZ-HER", "mode": "E140M", "nominal": 7.74233676612807e-15, "lam_med": 1398.2550883446447, "ra": 254.457542, "dec": 35.342417, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o5bi01010_spc.fits", "obj": "IX-VEL", "mode": "E140M", "nominal": 1.1313889789655557e-13, "lam_med": 1390.9926186462692, "ra": 123.828463, "dec": -49.222417}, {"file": "h_o5bi02010_spc.fits", "obj": "IX-VEL", "mode": "E140M", "nominal": 7.596236273394461e-14, "lam_med": 1391.5170421659404, "ra": 123.828461, "dec": -49.222421}, {"file": "h_o5bi03010_spc.fits", "obj": "IX-VEL", "mode": "E140M", "nominal": 9.018610732040997e-14, "lam_med": 1389.285459583583, "ra": 123.828459, "dec": -49.222425}, {"file": "h_o64002010_spc.fits", "obj": "KL-UMA", "mode": "E140M", "nominal": 1.797763517202734e-14, "lam_med": 1390.570071568245, "ra": 176.810667, "dec": 61.258861}, {"file": "h_o64002020_spc.fits", "obj": "KL-UMA", "mode": "E140M", "nominal": 1.7980219040365392e-14, "lam_med": 1390.6131596641226, "ra": 176.810667, "dec": 61.258861}, {"file": "h_o64002030_spc.fits", "obj": "KL-UMA", "mode": "E230M", "nominal": 1.4543187748048556e-14, "lam_med": 1950.2549826954378, "ra": 176.810667, "dec": 61.258861}, {"file": "h_o64002040_spc.fits", "obj": "KL-UMA", "mode": "E230M", "nominal": 1.4482585151727033e-14, "lam_med": 1950.246399842397, "ra": 176.810667, "dec": 61.258861}, {"file": "h_o67d01010_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.260365530213082e-14, "lam_med": 1391.4418167301355, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d01020_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 1.6774499710853222e-14, "lam_med": 1950.2412113251303, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d01030_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 7.071699228430456e-15, "lam_med": 2656.588235013857, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d01040_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.81789890937825e-14, "lam_med": 1390.6813631351656, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d010a0_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.0668479919250575e-14, "lam_med": 1392.0703434700852, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d010b0_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.0624253962018828e-14, "lam_med": 1392.0270851467349, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d02010_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 1.9424774727488423e-14, "lam_med": 1950.2310642957837, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d02020_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 9.319920287203188e-15, "lam_med": 2653.995937638494, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d02080_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.0581747993438724e-14, "lam_med": 1390.9009082431357, "ra": 169.545208, "dec": 48.036917, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o67d03010_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 2.134924742205075e-14, "lam_med": 1950.22800748817, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d03020_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 9.344183553436315e-15, "lam_med": 2654.8451945954175, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d03030_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.4305948215083984e-14, "lam_med": 1390.773403471937, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d04010_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 1.8385913316282384e-14, "lam_med": 1950.2469247586746, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d04020_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 8.348616900321295e-15, "lam_med": 2650.67173925468, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d04030_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.2841653833229552e-14, "lam_med": 1392.1675777850485, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d05010_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 1.7985494696036227e-14, "lam_med": 1950.2737354671003, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d05020_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 8.257739257476604e-15, "lam_med": 2645.7287223214507, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d05030_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.2322750673966547e-14, "lam_med": 1390.6596063789596, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d05070_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 7.839952046439647e-15, "lam_med": 1389.623334832322, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d06010_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 1.779774314160391e-14, "lam_med": 1950.2881524920986, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o67d06020_spc.fits", "obj": "KV-UMA", "mode": "E230M", "nominal": 7.443439019518663e-15, "lam_med": 2642.6369652544035, "ra": 169.545208, "dec": 48.036917, "rec": [0.0, 0.0, 0.8333333333333334, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o67d06030_spc.fits", "obj": "KV-UMA", "mode": "E140M", "nominal": 1.1971202323950088e-14, "lam_med": 1390.3271250410485, "ra": 169.545208, "dec": 48.036917}, {"file": "h_o64003010_spc.fits", "obj": "KY-UMA", "mode": "E140M", "nominal": 2.9167116814091774e-14, "lam_med": 1392.027438615508, "ra": 185.371417, "dec": 53.076861}, {"file": "h_o64003020_spc.fits", "obj": "KY-UMA", "mode": "E140M", "nominal": 2.4243950341735672e-14, "lam_med": 1391.400796526943, "ra": 185.371417, "dec": 53.076861}, {"file": "h_o64003030_spc.fits", "obj": "KY-UMA", "mode": "E230M", "nominal": 1.8504401826121147e-14, "lam_med": 1950.2620741488593, "ra": 185.371417, "dec": 53.076861}, {"file": "h_o64003040_spc.fits", "obj": "KY-UMA", "mode": "E230M", "nominal": 1.878103351916856e-14, "lam_med": 1950.2596171441921, "ra": 185.371417, "dec": 53.076861}, {"file": "h_o4of03020_spc.fits", "obj": "NOID1911-5957", "mode": "E230M", "nominal": 9.610073090032722e-16, "lam_med": 2642.5753337363813, "ra": 287.754417, "dec": -59.961361}, {"file": "h_o4z101010_spc.fits", "obj": "QR-AND", "mode": "E230M", "nominal": 1.134027293860366e-14, "lam_med": 2058.19827352399, "ra": 4.958072, "dec": 21.947631, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4z101020_spc.fits", "obj": "QR-AND", "mode": "E140M", "nominal": 9.791709558747347e-15, "lam_med": 1397.2721470360016, "ra": 4.958072, "dec": 21.947631}, {"file": "h_o4z102010_spc.fits", "obj": "QR-AND", "mode": "E230M", "nominal": 1.28545878492162e-14, "lam_med": 2060.474096897486, "ra": 4.958072, "dec": 21.947631}, {"file": "h_o4z102020_spc.fits", "obj": "QR-AND", "mode": "E140M", "nominal": 1.176228085470892e-14, "lam_med": 1397.4599370551207, "ra": 4.958072, "dec": 21.947631}, {"file": "h_o5eh01010_spc.fits", "obj": "RR-TEL", "mode": "E140M", "nominal": 1.2448415435479224e-14, "lam_med": 1397.7653140161267, "ra": 301.077167, "dec": -55.725889}, {"file": "h_o5eh01030_spc.fits", "obj": "RR-TEL", "mode": "E230M", "nominal": 2.0163103737493037e-14, "lam_med": 1950.079294211971, "ra": 301.077167, "dec": -55.725889}, {"file": "h_o5eh01090_spc.fits", "obj": "RR-TEL", "mode": "E230M", "nominal": 9.62334899748971e-15, "lam_med": 2661.6854169355747, "ra": 301.077167, "dec": -55.725889}, {"file": "h_o5dv01030_spc.fits", "obj": "SN1999EM", "mode": "E140M", "nominal": 1.659922354101558e-15, "lam_med": 1397.7974489454134, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o5dv01050_spc.fits", "obj": "SN1999EM", "mode": "E140M", "nominal": 1.2362790723876142e-15, "lam_med": 1397.8041662651767, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o5dv01060_spc.fits", "obj": "SN1999EM", "mode": "E140M", "nominal": 1.3947668921040588e-15, "lam_med": 1397.7708392174277, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o5dv01070_spc.fits", "obj": "SN1999EM", "mode": "E140M", "nominal": 1.5139395934129168e-15, "lam_med": 1397.8388705116167, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o5dv02030_spc.fits", "obj": "SN1999EM", "mode": "E230M", "nominal": 2.9896311128429236e-15, "lam_med": 2218.503937313902, "ra": 70.36275, "dec": -2.862689, "rec": [0.0, 0.3333333333333333, 1.0, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o5dv02040_spc.fits", "obj": "SN1999EM", "mode": "E230M", "nominal": 2.6250274923535184e-15, "lam_med": 2218.510124491822, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o5dv02050_spc.fits", "obj": "SN1999EM", "mode": "E230M", "nominal": 2.736259892195469e-15, "lam_med": 2218.5160383114703, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o5dv02060_spc.fits", "obj": "SN1999EM", "mode": "E140M", "nominal": 1.5810880751647589e-15, "lam_med": 1398.1633733981066, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o5dv02070_spc.fits", "obj": "SN1999EM", "mode": "E140M", "nominal": 1.6470312580964783e-15, "lam_med": 1397.6885337364024, "ra": 70.36275, "dec": -2.862689}, {"file": "h_o6gl50020_spc.fits", "obj": "SN2001IG", "mode": "E140M", "nominal": 3.0363333350948625e-15, "lam_med": 1397.5696424878192, "ra": 344.377875, "dec": -41.040531}, {"file": "h_o6gl50030_spc.fits", "obj": "SN2001IG", "mode": "E140M", "nominal": 2.219765347329475e-15, "lam_med": 1397.876206031753, "ra": 344.377875, "dec": -41.040531}, {"file": "h_o6gl55020_spc.fits", "obj": "SN2001IG", "mode": "E140M", "nominal": 1.8966607588451418e-15, "lam_med": 1396.4487351803173, "ra": 344.377875, "dec": -41.040531}, {"file": "h_o6gl55030_spc.fits", "obj": "SN2001IG", "mode": "E140M", "nominal": 1.4315048543037656e-15, "lam_med": 1397.357001524239, "ra": 344.377875, "dec": -41.040531}, {"file": "h_o6gl55040_spc.fits", "obj": "SN2001IG", "mode": "E140M", "nominal": 1.6564220044847299e-15, "lam_med": 1397.5063815859667, "ra": 344.377875, "dec": -41.040531}, {"file": "h_o8sd01020_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 2.2365484418352517e-15, "lam_med": 1396.1953827663442, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd01030_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 1.9890442719035353e-15, "lam_med": 1395.316546730206, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd01040_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 2.220971590181144e-15, "lam_med": 1395.938500818137, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd01050_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 2.343472031471586e-15, "lam_med": 1396.3826182944313, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd01060_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 2.4190885432423997e-15, "lam_med": 1398.4560957279268, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd02020_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 1.8436849611375385e-15, "lam_med": 1395.3018024077307, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd02030_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 1.501431943776183e-15, "lam_med": 1394.32306348465, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd02040_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 1.7882125454676725e-15, "lam_med": 1395.9027553259007, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd02050_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 2.0087664701016754e-15, "lam_med": 1396.9725817434105, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o8sd02060_spc.fits", "obj": "SN2003GD", "mode": "E140M", "nominal": 2.1551451475855066e-15, "lam_med": 1398.4061141021734, "ra": 24.177708, "dec": 15.739139}, {"file": "h_o4wr14010_spc.fits", "obj": "STAR0046-7324", "mode": "E140M", "nominal": 1.3804190910827136e-14, "lam_med": 1390.3165230767463, "ra": 11.675667, "dec": -73.415333}, {"file": "h_o4wr14020_spc.fits", "obj": "STAR0046-7324", "mode": "E140M", "nominal": 3.613147275303253e-14, "lam_med": 1390.2373536407697, "ra": 11.675667, "dec": -73.415333}, {"file": "h_o6df06020_spc.fits", "obj": "STAR0047-7306", "mode": "E230M", "nominal": 1.1683974163367781e-14, "lam_med": 1950.2147426679721, "ra": 11.800612, "dec": -73.109039}, {"file": "h_o6df06030_spc.fits", "obj": "STAR0047-7306", "mode": "E140M", "nominal": 4.192346007548608e-15, "lam_med": 1396.7604124078698, "ra": 11.800612, "dec": -73.109039}, {"file": "h_o6df07020_spc.fits", "obj": "STAR0047-7306", "mode": "E230M", "nominal": 1.196420677872302e-14, "lam_med": 1950.189974286784, "ra": 11.800612, "dec": -73.109039}, {"file": "h_o6df07030_spc.fits", "obj": "STAR0047-7306", "mode": "E140M", "nominal": 4.2652080984012465e-15, "lam_med": 1396.9706377086543, "ra": 11.800612, "dec": -73.109039}, {"file": "h_o8ew01010_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 2.3570171581896083e-15, "lam_med": 1233.2861482602882, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew01020_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 1.8952482508666597e-15, "lam_med": 1233.3610231184912, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew01030_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 4.459946709077411e-15, "lam_med": 1233.2192380204342, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew01040_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 1.808978676944766e-15, "lam_med": 1233.2965035938723, "ra": 11.80075, "dec": -73.109056, "rec": [0.5, 0.6666666666666666, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 1.0]}, {"file": "h_o8ew02010_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 2.372425715073508e-15, "lam_med": 1233.3921481637676, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew02020_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 1.9657850533887493e-15, "lam_med": 1233.2912669043521, "ra": 11.80075, "dec": -73.109056, "rec": [0.0, 0.8333333333333334, 0.5, 1.0, 1.0, 1.0]}, {"file": "h_o8ew02030_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 4.68326627656546e-15, "lam_med": 1233.237398805111, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew02040_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 1.9394727203824203e-15, "lam_med": 1233.2559186539572, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew03010_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 2.460383663796015e-15, "lam_med": 1233.2740493971166, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew03020_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 1.996543940592228e-15, "lam_med": 1233.4057214531845, "ra": 11.80075, "dec": -73.109056, "rec": [0.16666666666666666, 1.0, 1.0, 0.6666666666666666, 1.0, 0.6666666666666666]}, {"file": "h_o8ew03030_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 4.582679436098442e-15, "lam_med": 1233.3639065822754, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew03040_spc.fits", "obj": "STAR0047-7306", "mode": "E140H", "nominal": 1.90742259651124e-15, "lam_med": 1233.279785824563, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew04010_spc.fits", "obj": "STAR0047-7306", "mode": "E230H", "nominal": 6.7719648160408156e-15, "lam_med": 1910.8242184320338, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew04020_spc.fits", "obj": "STAR0047-7306", "mode": "E230H", "nominal": 5.242748235291546e-15, "lam_med": 1910.7240207846103, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew04030_spc.fits", "obj": "STAR0047-7306", "mode": "E230H", "nominal": 1.1462898936018901e-14, "lam_med": 1910.8374204256907, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew04040_spc.fits", "obj": "STAR0047-7306", "mode": "E230H", "nominal": 4.872295262396506e-15, "lam_med": 1910.751555686606, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew05010_spc.fits", "obj": "STAR0047-7306", "mode": "E230H", "nominal": 7.173929183417638e-15, "lam_med": 1910.556171542857, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o8ew05020_spc.fits", "obj": "STAR0047-7306", "mode": "E230H", "nominal": 2.7035200870021114e-15, "lam_med": 2158.12747607655, "ra": 11.80075, "dec": -73.109056}, {"file": "h_o6df09020_spc.fits", "obj": "STAR0047-7307", "mode": "E230M", "nominal": 1.3091142688022416e-14, "lam_med": 1950.1889509628454, "ra": 11.911392, "dec": -73.130111}, {"file": "h_o6df09030_spc.fits", "obj": "STAR0047-7307", "mode": "E140M", "nominal": 7.165367724891686e-15, "lam_med": 1397.2951249113432, "ra": 11.911392, "dec": -73.130111}, {"file": "h_o6df10020_spc.fits", "obj": "STAR0047-7307", "mode": "E230M", "nominal": 1.2420039918003748e-14, "lam_med": 1950.2147406083309, "ra": 11.911392, "dec": -73.130111}, {"file": "h_o6df10030_spc.fits", "obj": "STAR0047-7307", "mode": "E140M", "nominal": 4.9830914047213854e-15, "lam_med": 1397.227554774966, "ra": 11.911392, "dec": -73.130111}, {"file": "h_o4wr16010_spc.fits", "obj": "STAR0048-7325", "mode": "E140M", "nominal": 1.254112055891271e-14, "lam_med": 1390.0131724926855, "ra": 12.214667, "dec": -73.432917}, {"file": "h_o4wr16020_spc.fits", "obj": "STAR0048-7325", "mode": "E140M", "nominal": 1.1014719210871615e-14, "lam_med": 1390.0671015648059, "ra": 12.214667, "dec": -73.432917}, {"file": "h_o4wr15010_spc.fits", "obj": "STAR0050-7242", "mode": "E140M", "nominal": 1.2930341507253281e-14, "lam_med": 1390.112258234285, "ra": 12.716708, "dec": -72.704028}, {"file": "h_o4wr15020_spc.fits", "obj": "STAR0050-7242", "mode": "E140M", "nominal": 1.1294477029431826e-14, "lam_med": 1390.1166708392561, "ra": 12.716708, "dec": -72.704028}, {"file": "h_o4wr12010_spc.fits", "obj": "STAR0050-7247", "mode": "E140M", "nominal": 1.0607323220529875e-14, "lam_med": 1390.1951104758605, "ra": 12.682458, "dec": -72.794722}, {"file": "h_o4wr12020_spc.fits", "obj": "STAR0050-7247", "mode": "E140M", "nominal": 9.378483798405641e-15, "lam_med": 1390.1983401183666, "ra": 12.682458, "dec": -72.794722}, {"file": "h_o4wr11010_spc.fits", "obj": "STAR0050-7252", "mode": "E140M", "nominal": 1.4945234793706116e-14, "lam_med": 1390.3092856318074, "ra": 12.634875, "dec": -72.876611}, {"file": "h_o4wr11020_spc.fits", "obj": "STAR0050-7252", "mode": "E140M", "nominal": 1.3132011623605101e-14, "lam_med": 1390.2850537172262, "ra": 12.634875, "dec": -72.876611}, {"file": "h_o4wr13010_spc.fits", "obj": "STAR0050-7253", "mode": "E140M", "nominal": 1.267027805446878e-14, "lam_med": 1390.3214861176923, "ra": 12.571958, "dec": -72.891556}, {"file": "h_o4wr13020_spc.fits", "obj": "STAR0050-7253", "mode": "E140M", "nominal": 1.112068217124125e-14, "lam_med": 1390.3305171807278, "ra": 12.571958, "dec": -72.891556, "rec": [0.16666666666666666, 0.6666666666666666, 0.8333333333333334, 0.5, 1.0, 1.0]}, {"file": "h_o4wr17010_spc.fits", "obj": "STAR0051-7244", "mode": "E140M", "nominal": 1.1048044508640617e-14, "lam_med": 1390.2774157288436, "ra": 12.839792, "dec": -72.737361}, {"file": "h_o4wr17020_spc.fits", "obj": "STAR0051-7244", "mode": "E140M", "nominal": 9.703452628798966e-15, "lam_med": 1390.3168287388733, "ra": 12.839792, "dec": -72.737361}, {"file": "h_o6df02020_spc.fits", "obj": "STAR0051-7248", "mode": "E230M", "nominal": 1.447579152180997e-14, "lam_med": 1950.2489705119078, "ra": 12.910521, "dec": -72.801528}, {"file": "h_o6df02030_spc.fits", "obj": "STAR0051-7248", "mode": "E140M", "nominal": 7.929269966085561e-15, "lam_med": 1396.8685378779537, "ra": 12.910521, "dec": -72.801528}, {"file": "h_o4wr19010_spc.fits", "obj": "STAR0055-7317", "mode": "E140M", "nominal": 1.0710907010412885e-14, "lam_med": 1397.485081709382, "ra": 13.926667, "dec": -73.291667}, {"file": "h_o4wr19020_spc.fits", "obj": "STAR0055-7317", "mode": "E140M", "nominal": 6.381262756937484e-15, "lam_med": 1397.1354955038566, "ra": 13.926667, "dec": -73.291667}, {"file": "h_o6df16020_spc.fits", "obj": "STAR0056-7227a", "mode": "E230M", "nominal": 9.426424251944718e-15, "lam_med": 1950.1876434070027, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df16030_spc.fits", "obj": "STAR0056-7227a", "mode": "E230M", "nominal": 5.655668794330619e-15, "lam_med": 1950.1801661638078, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df17010_spc.fits", "obj": "STAR0056-7227a", "mode": "E230M", "nominal": 9.387134683541826e-15, "lam_med": 1950.1930602375955, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df17020_spc.fits", "obj": "STAR0056-7227a", "mode": "E230M", "nominal": 8.705679783711206e-15, "lam_med": 1950.1915079034184, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df18010_spc.fits", "obj": "STAR0056-7227a", "mode": "E140M", "nominal": 5.481487909131669e-15, "lam_med": 1396.2483029211699, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df18020_spc.fits", "obj": "STAR0056-7227a", "mode": "E140M", "nominal": 3.6270870741470245e-15, "lam_med": 1396.0519162037604, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df19010_spc.fits", "obj": "STAR0056-7227a", "mode": "E140M", "nominal": 5.3575782916313495e-15, "lam_med": 1396.9621379179628, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df19020_spc.fits", "obj": "STAR0056-7227a", "mode": "E140M", "nominal": 3.5125003619707573e-15, "lam_med": 1396.9073472066543, "ra": 14.041929, "dec": -72.459}, {"file": "h_o6df22020_spc.fits", "obj": "STAR0056-7227b", "mode": "E230M", "nominal": 1.0815443633219464e-14, "lam_med": 1950.243124022863, "ra": 14.103563, "dec": -72.461608}, {"file": "h_o6df22030_spc.fits", "obj": "STAR0056-7227b", "mode": "E230M", "nominal": 6.5369592297623554e-15, "lam_med": 1950.2650219643328, "ra": 14.103563, "dec": -72.461608}, {"file": "h_o6df23020_spc.fits", "obj": "STAR0056-7227b", "mode": "E140M", "nominal": 7.768860150464473e-15, "lam_med": 1396.328861733184, "ra": 14.103563, "dec": -72.461608}, {"file": "h_o6df23030_spc.fits", "obj": "STAR0056-7227b", "mode": "E140M", "nominal": 4.610398390634782e-15, "lam_med": 1396.0454610057673, "ra": 14.103563, "dec": -72.461608}, {"file": "h_o6df24020_spc.fits", "obj": "STAR0056-7227b", "mode": "E140M", "nominal": 7.769533122674925e-15, "lam_med": 1396.276192084952, "ra": 14.103563, "dec": -72.461608}, {"file": "h_o6df24030_spc.fits", "obj": "STAR0056-7227b", "mode": "E140M", "nominal": 6.502355696255463e-15, "lam_med": 1396.2538265011117, "ra": 14.103563, "dec": -72.461608}, {"file": "h_o6df11020_spc.fits", "obj": "STAR0056-7227c", "mode": "E230M", "nominal": 9.436929600934953e-15, "lam_med": 1950.2617971899174, "ra": 14.107633, "dec": -72.464767}, {"file": "h_o6df11030_spc.fits", "obj": "STAR0056-7227c", "mode": "E230M", "nominal": 5.700945424089363e-15, "lam_med": 1950.243613420254, "ra": 14.107633, "dec": -72.464767}, {"file": "h_o6df12020_spc.fits", "obj": "STAR0056-7227c", "mode": "E140M", "nominal": 6.640235041495789e-15, "lam_med": 1396.9533398557414, "ra": 14.107633, "dec": -72.464767}, {"file": "h_o6df12030_spc.fits", "obj": "STAR0056-7227c", "mode": "E140M", "nominal": 3.901223398393783e-15, "lam_med": 1396.838906980936, "ra": 14.107633, "dec": -72.464767, "rec": [0.0, 1.0, 1.0, 0.6666666666666666, 1.0, 0.5]}, {"file": "h_o6df13020_spc.fits", "obj": "STAR0056-7227c", "mode": "E140M", "nominal": 6.82694032141992e-15, "lam_med": 1396.3178699214627, "ra": 14.107633, "dec": -72.464767}, {"file": "h_o6df13030_spc.fits", "obj": "STAR0056-7227c", "mode": "E140M", "nominal": 5.702841819599706e-15, "lam_med": 1396.2513598830915, "ra": 14.107633, "dec": -72.464767}, {"file": "h_o6df20020_spc.fits", "obj": "STAR0056-7228", "mode": "E140M", "nominal": 7.907798121700136e-15, "lam_med": 1397.1330182778077, "ra": 14.086717, "dec": -72.476097}, {"file": "h_o6df20030_spc.fits", "obj": "STAR0056-7228", "mode": "E140M", "nominal": 6.627219203462155e-15, "lam_med": 1397.1756267715743, "ra": 14.086717, "dec": -72.476097}, {"file": "h_o6df20040_spc.fits", "obj": "STAR0056-7228", "mode": "E230M", "nominal": 9.559881519798583e-15, "lam_med": 1950.1817444795515, "ra": 14.086717, "dec": -72.476097}, {"file": "h_o6df21020_spc.fits", "obj": "STAR0056-7228", "mode": "E140M", "nominal": 7.887905654020816e-15, "lam_med": 1396.010095247209, "ra": 14.086717, "dec": -72.476097}, {"file": "h_o6df21030_spc.fits", "obj": "STAR0056-7228", "mode": "E140M", "nominal": 6.578808444007526e-15, "lam_med": 1396.0770791110983, "ra": 14.086717, "dec": -72.476097}, {"file": "h_o6df21040_spc.fits", "obj": "STAR0056-7228", "mode": "E230M", "nominal": 9.355034352361837e-15, "lam_med": 1950.2160066221672, "ra": 14.086717, "dec": -72.476097, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4wr21010_spc.fits", "obj": "STAR0058-7210a", "mode": "E140M", "nominal": 2.1522842403380407e-15, "lam_med": 1396.9204273895677, "ra": 14.559042, "dec": -72.179528}, {"file": "h_o4wr02010_spc.fits", "obj": "STAR0058-7210b", "mode": "E140M", "nominal": 3.785690389962384e-15, "lam_med": 1396.1157094656432, "ra": 14.632667, "dec": -72.183361}, {"file": "h_o4wr01020_spc.fits", "obj": "STAR0058-7210c", "mode": "E140M", "nominal": 8.267372877904065e-15, "lam_med": 1396.3030808634044, "ra": 14.739833, "dec": -72.176583}, {"file": "h_o6df04020_spc.fits", "obj": "STAR0058-7216", "mode": "E230M", "nominal": 1.2594511389417496e-14, "lam_med": 1950.1856338211546, "ra": 14.648929, "dec": -72.273575}, {"file": "h_o6df04030_spc.fits", "obj": "STAR0058-7216", "mode": "E140M", "nominal": 7.750429258462302e-15, "lam_med": 1397.2493849848977, "ra": 14.648929, "dec": -72.273575, "rec": [0.0, 0.6666666666666666, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o6df05010_spc.fits", "obj": "STAR0058-7216", "mode": "E230M", "nominal": 1.6530015268555822e-14, "lam_med": 1950.1812350491323, "ra": 14.648929, "dec": -72.273575}, {"file": "h_o6df05020_spc.fits", "obj": "STAR0058-7216", "mode": "E140M", "nominal": 6.8960833272765745e-15, "lam_med": 1397.0446019617198, "ra": 14.648929, "dec": -72.273575}, {"file": "h_o6df01020_spc.fits", "obj": "STAR0058-7232", "mode": "E230M", "nominal": 1.5565690174402208e-14, "lam_med": 1950.1878546033238, "ra": 14.731708, "dec": -72.535583}, {"file": "h_o6df01030_spc.fits", "obj": "STAR0058-7232", "mode": "E140M", "nominal": 7.219756008410912e-15, "lam_med": 1397.286143736043, "ra": 14.731708, "dec": -72.535583}, {"file": "h_o6df14020_spc.fits", "obj": "STAR0058-7244", "mode": "E140M", "nominal": 8.02926741779029e-15, "lam_med": 1396.5839615423806, "ra": 14.746588, "dec": -72.742706}, {"file": "h_o6df14030_spc.fits", "obj": "STAR0058-7244", "mode": "E140M", "nominal": 6.8318603387171225e-15, "lam_med": 1396.2561635783745, "ra": 14.746588, "dec": -72.742706, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o6df14040_spc.fits", "obj": "STAR0058-7244", "mode": "E230M", "nominal": 8.755673554290248e-15, "lam_med": 1950.2161600718814, "ra": 14.746588, "dec": -72.742706}, {"file": "h_o6df15020_spc.fits", "obj": "STAR0058-7244", "mode": "E140M", "nominal": 8.15072872543514e-15, "lam_med": 1396.768091775873, "ra": 14.746588, "dec": -72.742706}, {"file": "h_o6df15030_spc.fits", "obj": "STAR0058-7244", "mode": "E140M", "nominal": 6.7624483792558694e-15, "lam_med": 1396.8850227925445, "ra": 14.746588, "dec": -72.742706}, {"file": "h_o6df15040_spc.fits", "obj": "STAR0058-7244", "mode": "E230M", "nominal": 9.044702445829263e-15, "lam_med": 1950.184797183937, "ra": 14.746588, "dec": -72.742706}, {"file": "h_o4wr20010_spc.fits", "obj": "STAR0059-7205", "mode": "E140M", "nominal": 1.0059213875119374e-14, "lam_med": 1390.2802812985835, "ra": 14.791583, "dec": -72.096722}, {"file": "h_o4wr20020_spc.fits", "obj": "STAR0059-7205", "mode": "E140M", "nominal": 6.229674636122732e-15, "lam_med": 1390.1769934315116, "ra": 14.791583, "dec": -72.096722}, {"file": "h_o4wr01010_spc.fits", "obj": "STAR0059-7210a", "mode": "E140M", "nominal": 1.520684686530612e-14, "lam_med": 1396.09745820643, "ra": 14.753917, "dec": -72.175083}, {"file": "h_o4wr01030_spc.fits", "obj": "STAR0059-7210b", "mode": "E140M", "nominal": 7.15014400460384e-15, "lam_med": 1396.3032230670133, "ra": 14.758333, "dec": -72.175917}, {"file": "h_o4wra2010_spc.fits", "obj": "STAR0059-7210c", "mode": "E140M", "nominal": 1.4882212383037658e-15, "lam_med": 1394.2364195976866, "ra": 14.7695, "dec": -72.174056, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o4wr01040_spc.fits", "obj": "STAR0059-7210d", "mode": "E140M", "nominal": 9.792820824802128e-16, "lam_med": 1395.9174637559283, "ra": 14.778667, "dec": -72.178639}, {"file": "h_o4wr23010_spc.fits", "obj": "STAR0059-7210d", "mode": "E140M", "nominal": 3.905206959314762e-15, "lam_med": 1396.4358069066586, "ra": 14.777792, "dec": -72.177956}, {"file": "h_o6lz03010_spc.fits", "obj": "STAR0059-7210e", "mode": "E140M", "nominal": 3.3494019070451684e-14, "lam_med": 1395.8881747395544, "ra": 14.882917, "dec": -72.179556, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o4wr24010_spc.fits", "obj": "STAR0059-7211a", "mode": "E140M", "nominal": 2.2120742477456743e-15, "lam_med": 1398.4954507422049, "ra": 14.756583, "dec": -72.186064}, {"file": "h_o4wra2020_spc.fits", "obj": "STAR0059-7211b", "mode": "E140M", "nominal": 8.402803770111469e-16, "lam_med": 1393.688168028508, "ra": 14.828042, "dec": -72.186583}, {"file": "h_o4wr30010_spc.fits", "obj": "STAR0103-7202", "mode": "E140M", "nominal": 1.4461235899098863e-14, "lam_med": 1397.5210484394893, "ra": 15.794083, "dec": -72.037167}, {"file": "h_o4wr30020_spc.fits", "obj": "STAR0103-7202", "mode": "E140M", "nominal": 1.2682757752300129e-14, "lam_med": 1397.663126779018, "ra": 15.794083, "dec": -72.037167}, {"file": "h_o6df08020_spc.fits", "obj": "STAR0104-7206", "mode": "E230M", "nominal": 1.7492705488697294e-14, "lam_med": 1950.1963956953, "ra": 16.205987, "dec": -72.105942}, {"file": "h_o6df08030_spc.fits", "obj": "STAR0104-7206", "mode": "E140M", "nominal": 1.1730843229265142e-14, "lam_med": 1397.2821760066079, "ra": 16.205987, "dec": -72.105942}, {"file": "h_o4wr18010_spc.fits", "obj": "STAR0107-7251", "mode": "E140M", "nominal": 1.3145549245586308e-14, "lam_med": 1397.3979690738754, "ra": 16.918458, "dec": -72.849889}, {"file": "h_o4wr18020_spc.fits", "obj": "STAR0107-7251", "mode": "E140M", "nominal": 1.1551176657284351e-14, "lam_med": 1397.3599816499354, "ra": 16.918458, "dec": -72.849889}, {"file": "h_o8ew06010_spc.fits", "obj": "STAR0110-7242", "mode": "E140H", "nominal": 2.806022212365299e-15, "lam_med": 1233.2592841134256, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew06020_spc.fits", "obj": "STAR0110-7242", "mode": "E140H", "nominal": 2.1961107561085318e-15, "lam_med": 1233.3186405916854, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew06030_spc.fits", "obj": "STAR0110-7242", "mode": "E140H", "nominal": 4.854306622613573e-15, "lam_med": 1233.3269570484663, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew06040_spc.fits", "obj": "STAR0110-7242", "mode": "E140H", "nominal": 2.0027798138933222e-15, "lam_med": 1233.3256548306626, "ra": 17.732375, "dec": -72.715522, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o8ew07010_spc.fits", "obj": "STAR0110-7242", "mode": "E140H", "nominal": 2.828566014697189e-15, "lam_med": 1233.2885733305964, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew07020_spc.fits", "obj": "STAR0110-7242", "mode": "E140H", "nominal": 2.725946034584418e-15, "lam_med": 1233.3300455423105, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew09010_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 6.2664267417611384e-15, "lam_med": 1910.4058120970878, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew09020_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 4.972724876098002e-15, "lam_med": 1910.2933285626916, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew09030_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 1.083729113462292e-14, "lam_med": 1910.2758235418871, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew09040_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 6.483573444532569e-15, "lam_med": 1910.2471471693095, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew10010_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 3.0836102916758316e-15, "lam_med": 2158.207454274094, "ra": 17.732375, "dec": -72.715522, "rec": [0.0, 0.5, 1.0, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o8ew10020_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 2.397254458221813e-15, "lam_med": 2158.207968082733, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew10030_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 5.240567921519283e-15, "lam_med": 2158.202695276818, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o8ew10040_spc.fits", "obj": "STAR0110-7242", "mode": "E230H", "nominal": 2.2544998713811064e-15, "lam_med": 2158.2014156874316, "ra": 17.732375, "dec": -72.715522}, {"file": "h_o5dw01010_spc.fits", "obj": "STAR0114-7320", "mode": "E140H", "nominal": 1.0995083038044485e-14, "lam_med": 1253.2392454018282, "ra": 18.709167, "dec": -73.338111}, {"file": "h_o5dw01020_spc.fits", "obj": "STAR0114-7320", "mode": "E140H", "nominal": 5.436836209837049e-15, "lam_med": 1253.2337716927332, "ra": 18.709167, "dec": -73.338111, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 0.5, 0.8333333333333334, 1.0]}, {"file": "h_o5dw02010_spc.fits", "obj": "STAR0114-7320", "mode": "E140H", "nominal": 1.1076756229621915e-14, "lam_med": 1253.1207397537453, "ra": 18.709167, "dec": -73.338111, "rec": [0.16666666666666666, 0.8333333333333334, 0.8333333333333334, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o5dw02020_spc.fits", "obj": "STAR0114-7320", "mode": "E140H", "nominal": 5.427293013964515e-15, "lam_med": 1253.4092462378817, "ra": 18.709167, "dec": -73.338111}, {"file": "h_o5dw03010_spc.fits", "obj": "STAR0114-7320", "mode": "E230H", "nominal": 6.951343429230012e-15, "lam_med": 2155.550839030333, "ra": 18.709167, "dec": -73.338111}, {"file": "h_o5dw03020_spc.fits", "obj": "STAR0114-7320", "mode": "E230H", "nominal": 3.734505397152931e-15, "lam_med": 2155.3145439581735, "ra": 18.709167, "dec": -73.338111}, {"file": "h_o5dw04010_spc.fits", "obj": "STAR0114-7320", "mode": "E230H", "nominal": 5.048281468407086e-15, "lam_med": 2707.7175557299943, "ra": 18.709167, "dec": -73.338111}, {"file": "h_o5dw04020_spc.fits", "obj": "STAR0114-7320", "mode": "E230H", "nominal": 2.720949235029328e-15, "lam_med": 2707.7192478853312, "ra": 18.709167, "dec": -73.338111, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o5dw05010_spc.fits", "obj": "STAR0114-7320", "mode": "E230H", "nominal": 1.1801348558063884e-14, "lam_med": 1913.9068165610831, "ra": 18.709167, "dec": -73.338111, "rec": [0.0, 0.6666666666666666, 0.6666666666666666, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o5dw05020_spc.fits", "obj": "STAR0114-7320", "mode": "E230H", "nominal": 6.025951808270508e-15, "lam_med": 1913.742199219686, "ra": 18.709167, "dec": -73.338111}, {"file": "h_o67t01010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2324005240209409e-14, "lam_med": 1398.6879225326977, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t01020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.188049495675819e-14, "lam_med": 1398.7174589122253, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t02010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2308027617400404e-14, "lam_med": 1398.5677604710452, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t02020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.186023392242774e-14, "lam_med": 1398.5662707494284, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t03010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2494769393392474e-14, "lam_med": 1398.6006274891242, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t03020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.1982137748740702e-14, "lam_med": 1398.821053184553, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t04010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2115167724498762e-14, "lam_med": 1397.950942317285, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t04020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.16958820123642e-14, "lam_med": 1398.1831550982401, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t05010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2066220058530808e-14, "lam_med": 1398.109858233558, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t05020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.1669770297718287e-14, "lam_med": 1398.4526640661522, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t06010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2610536759532979e-14, "lam_med": 1397.683352882846, "ra": 19.271667, "dec": -73.443306, "rec": [0.16666666666666666, 0.6666666666666666, 1.0, 0.5, 0.6666666666666666, 0.6666666666666666]}, {"file": "h_o67t06020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.204536482134967e-14, "lam_med": 1398.0325075942887, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t07010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2146303627456844e-14, "lam_med": 1397.462305796093, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t07020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.1745726184251537e-14, "lam_med": 1397.597387385842, "ra": 19.271667, "dec": -73.443306, "rec": [0.0, 1.0, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o67t08010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2816892414657724e-14, "lam_med": 1398.4409988225789, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t08020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2337263265396556e-14, "lam_med": 1398.4822138977165, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t53010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.2241333362059517e-14, "lam_med": 1391.2996016619388, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t53020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.1818637267654853e-14, "lam_med": 1391.402842514136, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t54010_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.1852461124600247e-14, "lam_med": 1390.990562294861, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o67t54020_spc.fits", "obj": "STAR0117-7326", "mode": "E140M", "nominal": 1.1454735234185594e-14, "lam_med": 1390.8825808922788, "ra": 19.271667, "dec": -73.443306}, {"file": "h_o6m101010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.248209110844402e-15, "lam_med": 2661.3808929481834, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m101020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 1.882300634470015e-15, "lam_med": 2661.398286765438, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m101030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 1.9673264437140126e-15, "lam_med": 2661.404250577468, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m101040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.006972229190774e-15, "lam_med": 2661.4071598538094, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m101050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.0317739928715795e-15, "lam_med": 2661.407966007654, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m102010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.68660628807025e-15, "lam_med": 2661.406185574223, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m102020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.2100973382663317e-15, "lam_med": 2661.4623060771282, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m102030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.253265082976137e-15, "lam_med": 2661.4707895277443, "ra": 22.379617, "dec": -16.012538, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o6m102040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.28334733958882e-15, "lam_med": 2661.4626039937625, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m102050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.2885385414589385e-15, "lam_med": 2660.8811939706184, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m103010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.7534769008014197e-15, "lam_med": 2661.3878733985275, "ra": 22.379617, "dec": -16.012538, "rec": [0.0, 0.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6m103020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.256046333449295e-15, "lam_med": 2661.4007370087534, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m103030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.3127524495753376e-15, "lam_med": 2661.409710869889, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m103040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.3442443205116824e-15, "lam_med": 2661.468039750741, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m103050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.356509325415657e-15, "lam_med": 2661.513587540154, "ra": 22.379617, "dec": -16.012538, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o6m104010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.2557281669725372e-15, "lam_med": 2661.383368043525, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m104020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 1.8586336138184628e-15, "lam_med": 2661.368532167571, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m104030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 1.930393277550056e-15, "lam_med": 2661.488887508722, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m104040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 1.990407542543502e-15, "lam_med": 2661.3926211935395, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m104050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.0300666482794747e-15, "lam_med": 2661.4902010900705, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m105010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.6600543922971806e-15, "lam_med": 2661.216812932522, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m105020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.1244790376388765e-15, "lam_med": 2660.4595625565744, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m105030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.162694681587457e-15, "lam_med": 2659.9223364783156, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m105040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.212640386244233e-15, "lam_med": 2659.4709262167717, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m105050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.2318173998184773e-15, "lam_med": 2659.256142859569, "ra": 22.379617, "dec": -16.012538}, {"file": "h_o6m106010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.601779836524523e-15, "lam_med": 2661.612964015856, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m106020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 1.7384364164176585e-15, "lam_med": 2646.785823613904, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m106040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.658526547318362e-15, "lam_med": 2661.189350200083, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m106050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.3072597748888006e-15, "lam_med": 2661.2804988750318, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m110010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.795429698029479e-15, "lam_med": 2661.583099442593, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m110020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.336841863034767e-15, "lam_med": 2661.5541307902395, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m110030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.248927364661197e-15, "lam_med": 2661.5583344182255, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m151010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.689525107629702e-15, "lam_med": 2661.678328388411, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m151020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.1934190431907095e-15, "lam_med": 2661.663384853461, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m151030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.1916263897307242e-15, "lam_med": 2661.5640379072124, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m151040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.645028068818282e-15, "lam_med": 2661.5435647737418, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m151050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.2797455572301575e-15, "lam_med": 2661.52453950363, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m154010_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.593538650172148e-15, "lam_med": 2661.631946861631, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m154020_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 1.8512145828990385e-15, "lam_med": 2661.5496257668865, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m154030_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.12532298183286e-15, "lam_med": 2661.616108234007, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m154040_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.6842504433630924e-15, "lam_med": 2661.579567087124, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6m154050_spc.fits", "obj": "STAR0129-1600", "mode": "E230M", "nominal": 2.073245167670585e-15, "lam_med": 2661.617534251633, "ra": 22.37962, "dec": -16.012547}, {"file": "h_o6df03020_spc.fits", "obj": "STAR0141-7350", "mode": "E230M", "nominal": 1.6667219338315005e-14, "lam_med": 1950.2084247625075, "ra": 25.425783, "dec": -73.843917, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6df03030_spc.fits", "obj": "STAR0141-7350", "mode": "E140M", "nominal": 1.169554171013029e-14, "lam_med": 1397.3869073580877, "ra": 25.425783, "dec": -73.843917}, {"file": "h_o64005010_spc.fits", "obj": "STAR0143-2405", "mode": "E140M", "nominal": 9.444521400138289e-14, "lam_med": 1397.1954481608, "ra": 25.951625, "dec": -24.086, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o64005020_spc.fits", "obj": "STAR0143-2405", "mode": "E230M", "nominal": 7.271337282717624e-14, "lam_med": 1950.0877169365297, "ra": 25.951625, "dec": -24.086}, {"file": "h_o64d01010_spc.fits", "obj": "STAR0333-2552", "mode": "E140M", "nominal": 8.170936772136225e-14, "lam_med": 1394.8643878213445, "ra": 53.310958, "dec": -25.871806}, {"file": "h_o4a802010_spc.fits", "obj": "STAR0419-7352", "mode": "E140M", "nominal": 6.28625425483404e-15, "lam_med": 1390.35052791933, "ra": 64.994292, "dec": -73.873833}, {"file": "h_o4a802020_spc.fits", "obj": "STAR0419-7352", "mode": "E140M", "nominal": 2.6886795152131907e-15, "lam_med": 1390.390045638393, "ra": 64.994292, "dec": -73.873833}, {"file": "h_o5ez01010_spc.fits", "obj": "STAR0456-6624", "mode": "E140M", "nominal": 9.997997979352176e-15, "lam_med": 1391.0581515899298, "ra": 74.195333, "dec": -66.413}, {"file": "h_o5ez01020_spc.fits", "obj": "STAR0456-6624", "mode": "E140M", "nominal": 8.433542309720377e-15, "lam_med": 1391.5115426512089, "ra": 74.195333, "dec": -66.413}, {"file": "h_o5ez01030_spc.fits", "obj": "STAR0456-6624", "mode": "E140M", "nominal": 8.529803034915973e-15, "lam_med": 1391.4678096939201, "ra": 74.195333, "dec": -66.413}, {"file": "h_o67o01010_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 6.992336978033039e-15, "lam_med": 1396.568533150421, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o01020_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 5.359302789022271e-15, "lam_med": 1396.7075398697139, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o01030_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 5.4674789902142014e-15, "lam_med": 1396.6738422391177, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o01040_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 5.607228305880638e-15, "lam_med": 1396.5441680567576, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o01050_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 5.801412316539047e-15, "lam_med": 1396.5476706137274, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o02010_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 3.7769794870439064e-15, "lam_med": 2662.3297267646485, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o02020_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 2.9063773781293688e-15, "lam_med": 2662.3298594264925, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o02030_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 9.359765702289609e-15, "lam_med": 1950.044983329492, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o02040_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 9.567292825234397e-15, "lam_med": 1950.0363352617262, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o03010_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 3.698080600809746e-15, "lam_med": 1398.2597703380088, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o03020_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 3.0388673640504936e-15, "lam_med": 1398.5922638647237, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o03030_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 3.145034535162647e-15, "lam_med": 1398.6823089383768, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o03040_spc.fits", "obj": "STAR0525-7014", "mode": "E140M", "nominal": 3.281116965624316e-15, "lam_med": 1398.6527856820478, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o04010_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 9.511127276462788e-15, "lam_med": 1950.1495853160789, "ra": 81.257333, "dec": -70.23875, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o67o04020_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 8.25780259659978e-15, "lam_med": 1950.1459771319282, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o04030_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 1.1392527772188247e-14, "lam_med": 1950.1619966870314, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o04040_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 1.439063035276692e-14, "lam_med": 1950.1626073412613, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o67o04050_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 2.252512379069444e-15, "lam_med": 2661.6833676927117, "ra": 81.257333, "dec": -70.23875, "rec": [0.0, 0.0, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o67o04060_spc.fits", "obj": "STAR0525-7014", "mode": "E230M", "nominal": 2.3347402567670706e-15, "lam_med": 2661.6982146849477, "ra": 81.257333, "dec": -70.23875}, {"file": "h_o49wa1010_spc.fits", "obj": "STAR0532-6622", "mode": "E140M", "nominal": 9.000143656059722e-15, "lam_med": 1396.1817477474506, "ra": 83.2065, "dec": -66.370361}, {"file": "h_o49wa2010_spc.fits", "obj": "STAR0532-6622", "mode": "E140M", "nominal": 9.998246414535223e-15, "lam_med": 1396.1335876402782, "ra": 83.2065, "dec": -66.370361, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o49wa3010_spc.fits", "obj": "STAR0532-6622", "mode": "E140M", "nominal": 8.846778914342245e-15, "lam_med": 1396.0978884873548, "ra": 83.2065, "dec": -66.370361}, {"file": "h_o49wa4010_spc.fits", "obj": "STAR0532-6622", "mode": "E140M", "nominal": 9.123328763119361e-15, "lam_med": 1396.0835837809084, "ra": 83.2065, "dec": -66.370361}, {"file": "h_o49wa5010_spc.fits", "obj": "STAR0532-6622", "mode": "E140M", "nominal": 8.85733307643729e-15, "lam_med": 1396.1175997000382, "ra": 83.2065, "dec": -66.370361}, {"file": "h_o59851010_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.974275029199621e-14, "lam_med": 1908.334715231689, "ra": 83.819896, "dec": -5.387656}, {"file": "h_o59851020_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.3570718716056419e-14, "lam_med": 1909.3936696314381, "ra": 83.819896, "dec": -5.387656, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o59851030_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.3061832258457356e-14, "lam_med": 1907.128134939176, "ra": 83.819896, "dec": -5.387656}, {"file": "h_o59851040_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.0725381366073753e-14, "lam_med": 1907.0886205118727, "ra": 83.819896, "dec": -5.387656}, {"file": "h_o59851050_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.0873917915679841e-14, "lam_med": 1907.1462815686887, "ra": 83.819896, "dec": -5.387656}, {"file": "h_o59851060_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.1819445012300935e-14, "lam_med": 1907.1315578842348, "ra": 83.819896, "dec": -5.387656, "rec": [0.5, 1.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o59851070_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.1347741735955262e-14, "lam_med": 1908.8658162350146, "ra": 83.819896, "dec": -5.387656}, {"file": "h_o59851080_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.1545295765119355e-14, "lam_med": 1907.263867080876, "ra": 83.819896, "dec": -5.387656}, {"file": "h_o59851090_spc.fits", "obj": "STAR0535-0523", "mode": "E230H", "nominal": 1.1913548270562496e-14, "lam_med": 1907.1085090765414, "ra": 83.819896, "dec": -5.387656}, {"file": "h_o5c07h010_spc.fits", "obj": "STAR0547-6423", "mode": "E140H", "nominal": 3.8763154942462824e-14, "lam_med": 1253.209457460228, "ra": 86.997963, "dec": -64.384138}, {"file": "h_o8qy12010_spc.fits", "obj": "STAR0754+6542", "mode": "E230M", "nominal": 8.723695936178701e-15, "lam_med": 2659.9958863365628, "ra": 118.601636, "dec": 65.701951}, {"file": "h_o5c03c010_spc.fits", "obj": "STAR0802-0358", "mode": "E140H", "nominal": 8.74437260485334e-14, "lam_med": 1253.0885449186953, "ra": 120.561802, "dec": -3.971354, "rec": [0.0, 0.6666666666666666, 0.5, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o4w270010_spc.fits", "obj": "STAR0837+6724", "mode": "E230M", "nominal": 6.627258741938938e-15, "lam_med": 2067.0126869438277, "ra": 129.395, "dec": 67.403583}, {"file": "h_o4w270020_spc.fits", "obj": "STAR0837+6724", "mode": "E230M", "nominal": 6.5535469864520696e-15, "lam_med": 2066.9882283244606, "ra": 129.395, "dec": 67.403583}, {"file": "h_o4w270030_spc.fits", "obj": "STAR0837+6724", "mode": "E230M", "nominal": 6.662815652429454e-15, "lam_med": 2066.9816056706195, "ra": 129.395, "dec": 67.403583}, {"file": "h_o4w270040_spc.fits", "obj": "STAR0837+6724", "mode": "E230M", "nominal": 6.548558302484321e-15, "lam_med": 2066.9806354940665, "ra": 129.395, "dec": 67.403583}, {"file": "h_o52o03010_spc.fits", "obj": "STAR0843+3944", "mode": "E140M", "nominal": 1.3933027737091895e-14, "lam_med": 1397.1475695966308, "ra": 130.802917, "dec": 39.747194}, {"file": "h_o64d02010_spc.fits", "obj": "STAR0952-4616", "mode": "E140M", "nominal": 3.5413492552354e-14, "lam_med": 1391.1417576866565, "ra": 148.185292, "dec": -46.280194}, {"file": "h_o64d02020_spc.fits", "obj": "STAR0952-4616", "mode": "E140M", "nominal": 3.197695844120264e-14, "lam_med": 1391.1421997112893, "ra": 148.185292, "dec": -46.280194}, {"file": "h_o6lz41010_spc.fits", "obj": "STAR1049+3800", "mode": "E140M", "nominal": 4.516800593902719e-14, "lam_med": 1396.335021416288, "ra": 162.303792, "dec": 38.004111}, {"file": "h_o5c06t010_spc.fits", "obj": "STAR1237+2504", "mode": "E140H", "nominal": 8.228059674723568e-14, "lam_med": 1255.220517879364, "ra": 189.348125, "dec": 25.06675, "rec": [0.0, 0.0, 0.5, 0.6666666666666666, 1.0, 0.6666666666666666]}, {"file": "h_o64004010_spc.fits", "obj": "STAR1237+2504", "mode": "E140M", "nominal": 1.5184421469175235e-13, "lam_med": 1390.975430719531, "ra": 189.348125, "dec": 25.06675}, {"file": "h_o64004020_spc.fits", "obj": "STAR1237+2504", "mode": "E230M", "nominal": 1.1700687596269521e-13, "lam_med": 1950.2499258323712, "ra": 189.348125, "dec": 25.06675}, {"file": "h_o63566010_spc.fits", "obj": "STAR1300-7012", "mode": "E140M", "nominal": 5.866791532497448e-14, "lam_med": 1396.0749485720562, "ra": 195.141959, "dec": -70.209917}, {"file": "h_o5ds21010_spc.fits", "obj": "STAR1326-4727", "mode": "E230M", "nominal": 1.1679822250188903e-14, "lam_med": 1950.329728035489, "ra": 201.68725, "dec": -47.452833}, {"file": "h_o5ds21020_spc.fits", "obj": "STAR1326-4727", "mode": "E230M", "nominal": 1.0901424172097582e-14, "lam_med": 1950.3323673187967, "ra": 201.68725, "dec": -47.452833}, {"file": "h_o6ed01010_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 4.9815114761548534e-15, "lam_med": 2377.3387957254245, "ra": 205.010236, "dec": -0.038585}, {"file": "h_o6ed01020_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 2.0623909093592554e-15, "lam_med": 2377.3240570139747, "ra": 205.010236, "dec": -0.038585}, {"file": "h_o6ed02010_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 4.916898761673418e-15, "lam_med": 2365.9355345784325, "ra": 205.010179, "dec": -0.038605}, {"file": "h_o6ed02020_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 2.0658950553377287e-15, "lam_med": 2365.921551800144, "ra": 205.010179, "dec": -0.038605}, {"file": "h_o6ed03010_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 4.732191416661642e-15, "lam_med": 2365.899145296446, "ra": 205.010176, "dec": -0.038606}, {"file": "h_o6ed03020_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 1.98622694751826e-15, "lam_med": 2365.880927886413, "ra": 205.010176, "dec": -0.038606}, {"file": "h_o6ed04010_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 5.077217593860085e-15, "lam_med": 2365.965886640441, "ra": 205.010181, "dec": -0.038604}, {"file": "h_o6ed04020_spc.fits", "obj": "STAR1340-0002", "mode": "E230M", "nominal": 2.4032158450173904e-15, "lam_med": 2365.9890085073184, "ra": 205.010181, "dec": -0.038604}, {"file": "h_o64d06010_spc.fits", "obj": "STAR1340-1952", "mode": "E140M", "nominal": 6.85403110602455e-14, "lam_med": 1395.42019376702, "ra": 205.172042, "dec": -19.881861}, {"file": "h_o6f501010_spc.fits", "obj": "STAR1342+2826", "mode": "E230M", "nominal": 1.2938401786974645e-14, "lam_med": 1950.1729799000245, "ra": 205.569792, "dec": 28.433639}, {"file": "h_o6f501020_spc.fits", "obj": "STAR1342+2826", "mode": "E230M", "nominal": 6.541686890437922e-15, "lam_med": 1950.216829851567, "ra": 205.569792, "dec": 28.433639}, {"file": "h_o6f501030_spc.fits", "obj": "STAR1342+2826", "mode": "E230M", "nominal": 3.5262181193468353e-15, "lam_med": 2656.9177950363774, "ra": 205.569792, "dec": 28.433639}, {"file": "h_o6f502010_spc.fits", "obj": "STAR1342+2826", "mode": "E140M", "nominal": 1.3885087085157084e-14, "lam_med": 1396.6824331581154, "ra": 205.569792, "dec": 28.433639}, {"file": "h_o6f502020_spc.fits", "obj": "STAR1342+2826", "mode": "E140M", "nominal": 6.1323517228954185e-15, "lam_med": 1397.4943531942963, "ra": 205.569792, "dec": 28.433639}, {"file": "h_o52o01010_spc.fits", "obj": "STAR1502-4159", "mode": "E140M", "nominal": 3.406722043983933e-15, "lam_med": 1388.8684383932618, "ra": 225.721583, "dec": -41.98825}, {"file": "h_o52o01020_spc.fits", "obj": "STAR1502-4159", "mode": "E140M", "nominal": 1.8555538931891284e-15, "lam_med": 1388.4272243492992, "ra": 225.721583, "dec": -41.98825}, {"file": "h_o52o02010_spc.fits", "obj": "STAR1502-4159", "mode": "E140M", "nominal": 3.4914025572064856e-15, "lam_med": 1388.8885915433152, "ra": 225.721583, "dec": -41.98825}, {"file": "h_o52o02020_spc.fits", "obj": "STAR1502-4159", "mode": "E140M", "nominal": 1.8794995288621904e-15, "lam_med": 1388.9576694413463, "ra": 225.721583, "dec": -41.98825, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o6n403010_spc.fits", "obj": "STAR1518+0204", "mode": "E140M", "nominal": 1.513044445450651e-14, "lam_med": 1395.4225113753232, "ra": 229.642083, "dec": 2.083175}, {"file": "h_o6n403020_spc.fits", "obj": "STAR1518+0204", "mode": "E140M", "nominal": 1.2758152329445696e-14, "lam_med": 1395.3379368528772, "ra": 229.642083, "dec": 2.083175}, {"file": "h_o6n403030_spc.fits", "obj": "STAR1518+0204", "mode": "E140M", "nominal": 1.2791788177173549e-14, "lam_med": 1395.7151107697687, "ra": 229.642083, "dec": 2.083175}, {"file": "h_o6n404010_spc.fits", "obj": "STAR1518+0204", "mode": "E140M", "nominal": 1.513624761309863e-14, "lam_med": 1395.6412780311844, "ra": 229.642083, "dec": 2.083175}, {"file": "h_o6n404020_spc.fits", "obj": "STAR1518+0204", "mode": "E140M", "nominal": 1.2693337757902264e-14, "lam_med": 1396.1280684278313, "ra": 229.642083, "dec": 2.083175}, {"file": "h_o47s01060_spc.fits", "obj": "STAR1552+3256", "mode": "E140H", "nominal": 1.765463997497375e-14, "lam_med": 1293.155133779854, "ra": 237.999583, "dec": 32.948333}, {"file": "h_o47s01070_spc.fits", "obj": "STAR1552+3256", "mode": "E140H", "nominal": 1.7663203091041634e-14, "lam_med": 1293.1566817677915, "ra": 237.999583, "dec": 32.948333}, {"file": "h_o47s01080_spc.fits", "obj": "STAR1552+3256", "mode": "E140H", "nominal": 1.8701393612272688e-14, "lam_med": 1293.1214475173565, "ra": 237.999583, "dec": 32.948333, "rec": [0.16666666666666666, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 0.6666666666666666, 1.0]}, {"file": "h_o47s010a0_spc.fits", "obj": "STAR1552+3256", "mode": "E140H", "nominal": 1.8761316004327543e-14, "lam_med": 1293.1078614070645, "ra": 237.999583, "dec": 32.948333}, {"file": "h_o5f607010_spc.fits", "obj": "STAR1728+1730", "mode": "E230M", "nominal": 5.7903277500024194e-15, "lam_med": 2661.6927717191957, "ra": 262.060302, "dec": 17.509945}, {"file": "h_o5f607020_spc.fits", "obj": "STAR1728+1730", "mode": "E230M", "nominal": 2.7364981109888045e-15, "lam_med": 2661.6286313199635, "ra": 262.060302, "dec": 17.509945}, {"file": "h_o6n401010_spc.fits", "obj": "STAR1740-5338", "mode": "E140M", "nominal": 1.574559663395623e-14, "lam_med": 1395.7037952901037, "ra": 265.159792, "dec": -53.642111}, {"file": "h_o6n401020_spc.fits", "obj": "STAR1740-5338", "mode": "E140M", "nominal": 1.4484883347163103e-14, "lam_med": 1395.7498452830291, "ra": 265.159792, "dec": -53.642111}, {"file": "h_o6n401030_spc.fits", "obj": "STAR1740-5338", "mode": "E140M", "nominal": 1.4525922920836695e-14, "lam_med": 1395.8422856536718, "ra": 265.159792, "dec": -53.642111}, {"file": "h_o6n402010_spc.fits", "obj": "STAR1740-5338", "mode": "E140M", "nominal": 1.59562311472919e-14, "lam_med": 1395.8395916461145, "ra": 265.159792, "dec": -53.642111}, {"file": "h_o6n402020_spc.fits", "obj": "STAR1740-5338", "mode": "E140M", "nominal": 1.4768012452091743e-14, "lam_med": 1395.9817140034138, "ra": 265.159792, "dec": -53.642111}, {"file": "h_o6mb03010_spc.fits", "obj": "STAR1742-4658", "mode": "E230M", "nominal": 9.520432874596266e-15, "lam_med": 2218.687259529359, "ra": 265.641827, "dec": -46.980177, "rec": [0.0, 0.5, 0.6666666666666666, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o6mb03020_spc.fits", "obj": "STAR1742-4658", "mode": "E230M", "nominal": 6.1828350436622814e-15, "lam_med": 2218.6834467323515, "ra": 265.641827, "dec": -46.980177, "rec": [0.0, 0.5, 1.0, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o5a001010_spc.fits", "obj": "STAR1816-3045", "mode": "E140M", "nominal": 1.1533813744258737e-14, "lam_med": 1392.485204372386, "ra": 274.001917, "dec": -30.756417}, {"file": "h_o5a001020_spc.fits", "obj": "STAR1816-3045", "mode": "E140M", "nominal": 4.763087236629353e-15, "lam_med": 1392.5526621691222, "ra": 274.001917, "dec": -30.756417}, {"file": "h_o5a002010_spc.fits", "obj": "STAR1816-3045", "mode": "E230M", "nominal": 6.725923402000247e-15, "lam_med": 2661.8116942477513, "ra": 274.001917, "dec": -30.756417}, {"file": "h_o5a002020_spc.fits", "obj": "STAR1816-3045", "mode": "E230M", "nominal": 1.0705939608138515e-14, "lam_med": 1949.9666965159208, "ra": 274.001917, "dec": -30.756417}, {"file": "h_o5a002030_spc.fits", "obj": "STAR1816-3045", "mode": "E230M", "nominal": 1.0944031228507933e-14, "lam_med": 1949.9570711707643, "ra": 274.001917, "dec": -30.756417, "rec": [0.0, 1.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o4ofa1010_spc.fits", "obj": "STAR1911-5952", "mode": "E230M", "nominal": 1.1348466067179652e-15, "lam_med": 2659.797465423181, "ra": 287.786667, "dec": -59.872472}, {"file": "h_o4of03010_spc.fits", "obj": "STAR1911-5957", "mode": "E230M", "nominal": 7.261109507467302e-16, "lam_med": 2644.7382909223425, "ra": 287.75125, "dec": -59.955778}, {"file": "h_o4of01010_spc.fits", "obj": "STAR1911-6001", "mode": "E230M", "nominal": 7.217792608262529e-16, "lam_med": 2661.0864681027942, "ra": 287.762917, "dec": -60.030083}, {"file": "h_o4of04010_spc.fits", "obj": "STAR1911-6001", "mode": "E230M", "nominal": 1.3748123745340494e-15, "lam_med": 2659.3811347096, "ra": 287.762917, "dec": -60.030083, "rec": [0.0, 0.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o6lz89010_spc.fits", "obj": "STAR2046+3532", "mode": "E140M", "nominal": 6.6101123776915e-14, "lam_med": 1396.4344771214091, "ra": 311.55275, "dec": 35.540444}, {"file": "h_o8pw01030_spc.fits", "obj": "STAR2129+1210", "mode": "E140M", "nominal": 5.752164405498359e-15, "lam_med": 1396.0541892222345, "ra": 322.497777, "dec": 12.173931}, {"file": "h_o8pw01040_spc.fits", "obj": "STAR2129+1210", "mode": "E140M", "nominal": 2.0174531301867726e-15, "lam_med": 1395.439975532535, "ra": 322.497777, "dec": 12.173931, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o6359s010_spc.fits", "obj": "STAR2136+4920", "mode": "E140M", "nominal": 5.244347323374706e-14, "lam_med": 1390.4549036518574, "ra": 324.06625, "dec": 49.349111}, {"file": "h_o6359q010_spc.fits", "obj": "STAR2213+5424", "mode": "E140M", "nominal": 3.964140255145923e-14, "lam_med": 1398.0419794612667, "ra": 333.457083, "dec": 54.40975}, {"file": "h_o5el02010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.4288136081464122e-15, "lam_med": 2657.9399134002115, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el02020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.1148337445428655e-15, "lam_med": 2657.4455581118164, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el03010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.2990386908483373e-15, "lam_med": 2661.6805578556505, "ra": 334.256958, "dec": -16.657417, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o5el03020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.0497710946853649e-15, "lam_med": 2661.6554008251705, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el04010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.6884451168015885e-15, "lam_med": 2661.6522044824446, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el04020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.0750836341211603e-15, "lam_med": 2661.643246780057, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el05010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.319132387638875e-15, "lam_med": 2661.4803461984616, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el05020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.073373154245284e-15, "lam_med": 2661.4181179618167, "ra": 334.256958, "dec": -16.657417, "rec": [0.0, 0.0, 0.6666666666666666, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o5el06010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.3810168684598705e-15, "lam_med": 2661.0796860606442, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el06020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.0123322503491463e-15, "lam_med": 2660.881627261736, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el07010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.560301255089474e-15, "lam_med": 2661.69500935391, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el07020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.1602984938828028e-15, "lam_med": 2661.662229217237, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el08010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.6210570692228586e-15, "lam_med": 2661.682993000461, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el08020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.1504081031343132e-15, "lam_med": 2661.6593205380896, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el09010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.345485417928696e-15, "lam_med": 2660.983819718949, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el09020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.011133357273292e-15, "lam_med": 2661.0224395542245, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el10010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.314845372739038e-15, "lam_med": 2660.9709769508086, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el10020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.0211622677150143e-15, "lam_med": 2660.8727331711275, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el11010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.3397639379847322e-15, "lam_med": 2660.977697851781, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el11020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.011766838191665e-15, "lam_med": 2660.878443047729, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el12010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.2929534688425538e-15, "lam_med": 2661.4668047346863, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el12020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.0455694840869352e-15, "lam_med": 2661.444486958004, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el13010_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 2.432092086921718e-15, "lam_med": 2644.1806869478605, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o5el13020_spc.fits", "obj": "STAR2217-1639", "mode": "E230M", "nominal": 1.088981695155873e-15, "lam_med": 2643.575263074008, "ra": 334.256958, "dec": -16.657417}, {"file": "h_o59d01020_spc.fits", "obj": "TW-HYA", "mode": "E230M", "nominal": 4.835400006974172e-15, "lam_med": 2516.1003486071404, "ra": 165.466081, "dec": -34.704754}, {"file": "h_o59d01030_spc.fits", "obj": "TW-HYA", "mode": "E140M", "nominal": 3.803436301756187e-15, "lam_med": 1391.9322838261696, "ra": 165.466081, "dec": -34.704754}, {"file": "h_o6cv03020_spc.fits", "obj": "TW-HYA", "mode": "E140H", "nominal": 3.3116045660113295e-15, "lam_med": 1338.6300584024093, "ra": 165.465941, "dec": -34.704733}, {"file": "h_o6cv03030_spc.fits", "obj": "TW-HYA", "mode": "E140H", "nominal": 2.216097153307929e-15, "lam_med": 1338.0628862309154, "ra": 165.465941, "dec": -34.704733}, {"file": "h_o5b611010_spc.fits", "obj": "TY-PSC", "mode": "E140M", "nominal": 2.2156108013886108e-14, "lam_med": 1398.5806516171647, "ra": 21.413958, "dec": 32.386017}, {"file": "h_o5b611020_spc.fits", "obj": "TY-PSC", "mode": "E140M", "nominal": 2.0080516332506547e-14, "lam_med": 1398.1286571050696, "ra": 21.413958, "dec": 32.386017}, {"file": "h_o5b611030_spc.fits", "obj": "TY-PSC", "mode": "E140M", "nominal": 2.0208859796156547e-14, "lam_med": 1398.0851670995553, "ra": 21.413958, "dec": 32.386017}, {"file": "h_o5b661010_spc.fits", "obj": "TY-PSC", "mode": "E140M", "nominal": 1.2083740847015437e-14, "lam_med": 1397.3809295901451, "ra": 21.413958, "dec": 32.386017}, {"file": "h_o5b661020_spc.fits", "obj": "TY-PSC", "mode": "E140M", "nominal": 1.0833700587437452e-14, "lam_med": 1397.235883912474, "ra": 21.413958, "dec": 32.386017}, {"file": "h_o5b661030_spc.fits", "obj": "TY-PSC", "mode": "E140M", "nominal": 1.0825271888777104e-14, "lam_med": 1397.0804756472485, "ra": 21.413958, "dec": 32.386017}, {"file": "h_o5b610010_spc.fits", "obj": "TZ-PER", "mode": "E140M", "nominal": 6.870815255218425e-15, "lam_med": 1389.1009640775856, "ra": 33.462458, "dec": 58.381292}, {"file": "h_o8nz44010_spc.fits", "obj": "V1190-SCO", "mode": "E230M", "nominal": 1.5808192234163748e-15, "lam_med": 2661.1591574227987, "ra": 242.123792, "dec": -39.0531}, {"file": "h_o8nz44020_spc.fits", "obj": "V1190-SCO", "mode": "E230M", "nominal": 1.4007833594110061e-15, "lam_med": 2643.745969254235, "ra": 242.123792, "dec": -39.0531}, {"file": "h_o8nz44030_spc.fits", "obj": "V1190-SCO", "mode": "E230M", "nominal": 1.433506058131947e-15, "lam_med": 2643.8210210087173, "ra": 242.123792, "dec": -39.0531}, {"file": "h_o8nz44040_spc.fits", "obj": "V1190-SCO", "mode": "E230M", "nominal": 1.5231331037363277e-15, "lam_med": 2661.239171126373, "ra": 242.123792, "dec": -39.0531}, {"file": "h_o6mb04010_spc.fits", "obj": "V2244-OPH", "mode": "E230M", "nominal": 5.149563803842502e-15, "lam_med": 2218.262503651648, "ra": 267.861543, "dec": -1.722638}, {"file": "h_o6mb04020_spc.fits", "obj": "V2244-OPH", "mode": "E230M", "nominal": 2.817268078676803e-15, "lam_med": 2218.2032651154686, "ra": 267.861543, "dec": -1.722638}, {"file": "h_o64001010_spc.fits", "obj": "V338-SER", "mode": "E140M", "nominal": 2.5788759552900535e-14, "lam_med": 1399.1027406007802, "ra": 242.015375, "dec": 7.074667}, {"file": "h_o64001020_spc.fits", "obj": "V338-SER", "mode": "E140M", "nominal": 2.3335936096365208e-14, "lam_med": 1399.1799206294213, "ra": 242.015375, "dec": 7.074667}, {"file": "h_o64001030_spc.fits", "obj": "V338-SER", "mode": "E230M", "nominal": 1.972826945650806e-14, "lam_med": 1950.410610136365, "ra": 242.015375, "dec": 7.074667, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o5jv01010_spc.fits", "obj": "V382-VEL", "mode": "E140M", "nominal": 1.6568137520126013e-12, "lam_med": 1389.9982240364798, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv01020_spc.fits", "obj": "V382-VEL", "mode": "E230M", "nominal": 2.932305088857559e-12, "lam_med": 1950.349067212775, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv01030_spc.fits", "obj": "V382-VEL", "mode": "E230M", "nominal": 1.77061680498318e-12, "lam_med": 2651.2543085202506, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv02010_spc.fits", "obj": "V382-VEL", "mode": "E140M", "nominal": 2.4074935422211103e-13, "lam_med": 1389.74266952035, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv02020_spc.fits", "obj": "V382-VEL", "mode": "E230M", "nominal": 4.676640175513841e-10, "lam_med": 1950.3474508860195, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv02030_spc.fits", "obj": "V382-VEL", "mode": "E230M", "nominal": 2.702181757655256e-12, "lam_med": 1950.3474355288306, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv02040_spc.fits", "obj": "V382-VEL", "mode": "E230M", "nominal": 1.2090590877056796e-12, "lam_med": 2647.606428374018, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv03010_spc.fits", "obj": "V382-VEL", "mode": "E140M", "nominal": 8.200991816557805e-13, "lam_med": 1396.3890043691588, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv03020_spc.fits", "obj": "V382-VEL", "mode": "E140M", "nominal": 6.392682470145566e-13, "lam_med": 1396.4126752295936, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv03030_spc.fits", "obj": "V382-VEL", "mode": "E230M", "nominal": 1.271103623973815e-12, "lam_med": 1950.0529232010217, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5jv03040_spc.fits", "obj": "V382-VEL", "mode": "E230M", "nominal": 3.300789557098366e-13, "lam_med": 2662.3846936741165, "ra": 161.201542, "dec": -52.425167}, {"file": "h_o5bi04010_spc.fits", "obj": "V3885-SGR", "mode": "E140M", "nominal": 4.103485288374206e-14, "lam_med": 1391.7733838569604, "ra": 296.919167, "dec": -42.007353}, {"file": "h_o5bi05010_spc.fits", "obj": "V3885-SGR", "mode": "E140M", "nominal": 4.6450278857209575e-14, "lam_med": 1396.5090588314474, "ra": 296.91917, "dec": -42.007356, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o5bi06010_spc.fits", "obj": "V3885-SGR", "mode": "E140M", "nominal": 3.9840453868897506e-14, "lam_med": 1399.0739421553549, "ra": 296.919173, "dec": -42.007359}, {"file": "h_o5dl01010_spc.fits", "obj": "V405-AUR", "mode": "E140M", "nominal": 3.600767687081869e-15, "lam_med": 1391.594887987941, "ra": 89.497042, "dec": 53.895806}, {"file": "h_o5dl01020_spc.fits", "obj": "V405-AUR", "mode": "E140M", "nominal": 3.100995776827869e-15, "lam_med": 1392.056500059239, "ra": 89.497042, "dec": 53.895806}, {"file": "h_o5dl01030_spc.fits", "obj": "V405-AUR", "mode": "E140M", "nominal": 3.031479982475909e-15, "lam_med": 1392.1161035193072, "ra": 89.497042, "dec": 53.895806}, {"file": "h_o5dl01040_spc.fits", "obj": "V405-AUR", "mode": "E140M", "nominal": 3.565046044334038e-15, "lam_med": 1392.0620907995033, "ra": 89.497042, "dec": 53.895806, "rec": [0.0, 1.0, 0.8333333333333334, 0.6666666666666666, 1.0, 0.8333333333333334]}, {"file": "h_o4mu01010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.889846720164485e-14, "lam_med": 1390.9594860126451, "ra": 57.603961, "dec": 17.24652, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4mu01020_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.331281476780239e-14, "lam_med": 1390.9728066958482, "ra": 57.603961, "dec": 17.24652, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4mu02010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.88277471471683e-14, "lam_med": 1390.8749315123155, "ra": 57.60396, "dec": 17.24652}, {"file": "h_o4mua1010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.4404938074612054e-14, "lam_med": 1392.4606424425328, "ra": 57.603961, "dec": 17.24652, "rec": [0.0, 1.0, 1.0, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o4mua2010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.0066297745811757e-14, "lam_med": 1392.7872472909594, "ra": 57.60396, "dec": 17.24652}, {"file": "h_o4mua2020_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.3501085485037364e-14, "lam_med": 1392.7166490899021, "ra": 57.60396, "dec": 17.24652}, {"file": "h_o5dma1010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.446075423119055e-14, "lam_med": 1396.7816260246104, "ra": 57.604337, "dec": 17.246636}, {"file": "h_o5dma2010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.442133640905834e-14, "lam_med": 1396.4659054333088, "ra": 57.604337, "dec": 17.246635}, {"file": "h_o5dma3010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.4037813461736024e-14, "lam_med": 1396.7181435863247, "ra": 57.604338, "dec": 17.246635}, {"file": "h_o5dma4010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.4460378352451957e-14, "lam_med": 1396.6879444323881, "ra": 57.604337, "dec": 17.246636}, {"file": "h_o6jc01010_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 3.035184229948587e-14, "lam_med": 1398.0384371937319, "ra": 57.604011, "dec": 17.246488}, {"file": "h_o6jc01020_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.192223807365122e-14, "lam_med": 1398.2043871858737, "ra": 57.604011, "dec": 17.246488}, {"file": "h_o6jc01030_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 1.4906838660601574e-14, "lam_med": 1397.3540206074795, "ra": 57.604011, "dec": 17.246488}, {"file": "h_o6jc01040_spc.fits", "obj": "V471-TAU", "mode": "E140M", "nominal": 2.2184494893957775e-14, "lam_med": 1397.4626149488636, "ra": 57.604011, "dec": 17.246488}, {"file": "h_o40p01030_spc.fits", "obj": "V572-CAR", "mode": "E140H", "nominal": 3.877292396165532e-14, "lam_med": 1409.5795964140561, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o40p01040_spc.fits", "obj": "V572-CAR", "mode": "E230H", "nominal": 2.4579503673223308e-14, "lam_med": 2750.9511715808485, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4qx03010_spc.fits", "obj": "V572-CAR", "mode": "E140H", "nominal": 1.6961532392686934e-14, "lam_med": 1233.0804711714154, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4qx03020_spc.fits", "obj": "V572-CAR", "mode": "E140H", "nominal": 2.3892242726711502e-14, "lam_med": 1413.4770936150471, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4qx03030_spc.fits", "obj": "V572-CAR", "mode": "E140H", "nominal": 3.186806584347962e-14, "lam_med": 1588.06297091344, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4qx03040_spc.fits", "obj": "V572-CAR", "mode": "E230H", "nominal": 1.4602177669858112e-14, "lam_med": 2510.8273620729515, "ra": 161.197583, "dec": -59.731556, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o4qx03050_spc.fits", "obj": "V572-CAR", "mode": "E230H", "nominal": 1.6586211522390882e-14, "lam_med": 2751.0179606930897, "ra": 161.197583, "dec": -59.731556, "rec": [0.0, 1.0, 0.6666666666666666, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o4wn01010_spc.fits", "obj": "V572-CAR", "mode": "E140M", "nominal": 6.463223187482239e-14, "lam_med": 1388.8587460907147, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4wn01020_spc.fits", "obj": "V572-CAR", "mode": "E140M", "nominal": 7.631014517379221e-14, "lam_med": 1388.9031319603769, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4wn01030_spc.fits", "obj": "V572-CAR", "mode": "E140M", "nominal": 9.140673235361382e-14, "lam_med": 1388.9636979059119, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4wn01040_spc.fits", "obj": "V572-CAR", "mode": "E230M", "nominal": 5.0628678227851156e-14, "lam_med": 2645.748040488239, "ra": 161.197583, "dec": -59.731556, "rec": [0.0, 0.16666666666666666, 0.5, 1.0, 1.0, 1.0]}, {"file": "h_o4wn01050_spc.fits", "obj": "V572-CAR", "mode": "E230M", "nominal": 4.160557441711057e-14, "lam_med": 2645.83904791202, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4wn01060_spc.fits", "obj": "V572-CAR", "mode": "E230M", "nominal": 5.4641464941002313e-14, "lam_med": 2645.2160744946923, "ra": 161.197583, "dec": -59.731556}, {"file": "h_o4w260010_spc.fits", "obj": "V621-PER", "mode": "E230M", "nominal": 1.683322437283753e-14, "lam_med": 2066.79762728297, "ra": 35.54, "dec": 57.117167}, {"file": "h_o4w260020_spc.fits", "obj": "V621-PER", "mode": "E230M", "nominal": 9.994102185430002e-14, "lam_med": 1950.0904821855033, "ra": 35.54, "dec": 57.117167}, {"file": "h_o4w260030_spc.fits", "obj": "V621-PER", "mode": "E230M", "nominal": 2.7282732197986327e-14, "lam_med": 1950.0904810238835, "ra": 35.54, "dec": 57.117167}, {"file": "h_o4w260040_spc.fits", "obj": "V621-PER", "mode": "E230M", "nominal": 1.4850023930508637e-14, "lam_med": 2228.300053771495, "ra": 35.54, "dec": 57.117167}, {"file": "h_o5eo01010_spc.fits", "obj": "V645-CEN", "mode": "E140M", "nominal": 1.1923750192909057e-15, "lam_med": 1390.842836663694, "ra": 217.428091, "dec": -62.679563}, {"file": "h_o5eo01020_spc.fits", "obj": "V645-CEN", "mode": "E140M", "nominal": 1.1102797578546924e-15, "lam_med": 1390.6795869031207, "ra": 217.42809, "dec": -62.679563}, {"file": "h_o5eo01030_spc.fits", "obj": "V645-CEN", "mode": "E140M", "nominal": 1.194840524864531e-15, "lam_med": 1389.7192984020394, "ra": 217.428089, "dec": -62.679563}, {"file": "h_o5eo01040_spc.fits", "obj": "V645-CEN", "mode": "E140M", "nominal": 1.2383029223438772e-15, "lam_med": 1390.8596087572075, "ra": 217.428088, "dec": -62.679562, "rec": [0.3333333333333333, 0.8333333333333334, 0.6666666666666666, 1.0, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o5eo02010_spc.fits", "obj": "V645-CEN", "mode": "E140M", "nominal": 9.405723379616664e-16, "lam_med": 1390.708471927772, "ra": 217.428078, "dec": -62.679561}, {"file": "h_o5eo02020_spc.fits", "obj": "V645-CEN", "mode": "E140M", "nominal": 1.0117729539310273e-15, "lam_med": 1390.7338636252916, "ra": 217.428077, "dec": -62.679561}, {"file": "h_o5eo02040_spc.fits", "obj": "V645-CEN", "mode": "E140M", "nominal": 1.1652232481420525e-15, "lam_med": 1390.698724668898, "ra": 217.428075, "dec": -62.679561}, {"file": "h_o5cf04010_spc.fits", "obj": "V819-TAU", "mode": "E230M", "nominal": 1.9732723307244676e-15, "lam_med": 2662.5199402962544, "ra": 64.85975, "dec": 28.437417}, {"file": "h_o5cf04020_spc.fits", "obj": "V819-TAU", "mode": "E230M", "nominal": 6.986577599580528e-15, "lam_med": 1950.374757123028, "ra": 64.85975, "dec": 28.437417}, {"file": "h_o5e309010_spc.fits", "obj": "V819-TAU", "mode": "E140M", "nominal": 2.8030035675146868e-15, "lam_med": 1398.7972795193202, "ra": 64.85975, "dec": 28.437417}, {"file": "h_o5e309020_spc.fits", "obj": "V819-TAU", "mode": "E140M", "nominal": 2.3114598134273465e-15, "lam_med": 1395.8040760867752, "ra": 64.85975, "dec": 28.437417}, {"file": "h_o5e309040_spc.fits", "obj": "V819-TAU", "mode": "E140M", "nominal": 3.327861955755094e-15, "lam_med": 1396.7416777068263, "ra": 64.85975, "dec": 28.437417}, {"file": "h_o5e309050_spc.fits", "obj": "V819-TAU", "mode": "E140M", "nominal": 2.5671845466027086e-15, "lam_med": 1394.663309781231, "ra": 64.85975, "dec": 28.437417}, {"file": "h_o5e310010_spc.fits", "obj": "V836-TAU", "mode": "E140M", "nominal": 2.326072034916005e-15, "lam_med": 1396.643904903519, "ra": 75.7775, "dec": 25.388778}, {"file": "h_o5e310020_spc.fits", "obj": "V836-TAU", "mode": "E140M", "nominal": 1.767334212889986e-15, "lam_med": 1397.8573199660577, "ra": 75.7775, "dec": 25.388778}, {"file": "h_o5e310040_spc.fits", "obj": "V836-TAU", "mode": "E140M", "nominal": 2.846173069156964e-15, "lam_med": 1397.93589398421, "ra": 75.7775, "dec": 25.388778}, {"file": "h_o5e310050_spc.fits", "obj": "V836-TAU", "mode": "E140M", "nominal": 2.315450487510265e-15, "lam_med": 1396.2371693723633, "ra": 75.7775, "dec": 25.388778}, {"file": "h_o5e201010_spc.fits", "obj": "VW-HYI", "mode": "E140M", "nominal": 6.771206671553167e-15, "lam_med": 1396.739607445298, "ra": 62.297083, "dec": -71.294778, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 0.6666666666666666]}, {"file": "h_o5e202010_spc.fits", "obj": "VW-HYI", "mode": "E140M", "nominal": 6.889689652540723e-14, "lam_med": 1391.8653850069786, "ra": 62.297083, "dec": -71.297556}, {"file": "h_o5e203010_spc.fits", "obj": "VW-HYI", "mode": "E140M", "nominal": 6.033995620826987e-14, "lam_med": 1391.2484567415818, "ra": 62.297083, "dec": -71.297556}, {"file": "h_o5e204010_spc.fits", "obj": "VW-HYI", "mode": "E140M", "nominal": 4.709849335044879e-14, "lam_med": 1391.065532233013, "ra": 62.297083, "dec": -71.297556}, {"file": "h_o5e205010_spc.fits", "obj": "VW-HYI", "mode": "E140M", "nominal": 8.41121471532448e-15, "lam_med": 1390.991002678602, "ra": 62.297083, "dec": -71.294778}, {"file": "h_o5e206010_spc.fits", "obj": "VW-HYI", "mode": "E140M", "nominal": 8.399832411996919e-15, "lam_med": 1390.98432573326, "ra": 62.297083, "dec": -71.294778}, {"file": "h_o5b602010_spc.fits", "obj": "VY-AQR", "mode": "E140M", "nominal": 2.0062028270281003e-15, "lam_med": 1390.2291671942621, "ra": 318.038333, "dec": -8.826806}, {"file": "h_o5b602020_spc.fits", "obj": "VY-AQR", "mode": "E140M", "nominal": 1.801744579091779e-15, "lam_med": 1390.0836565327722, "ra": 318.038333, "dec": -8.826806}, {"file": "h_o5b602030_spc.fits", "obj": "VY-AQR", "mode": "E140M", "nominal": 2.07154497436386e-15, "lam_med": 1389.5656430429, "ra": 318.038333, "dec": -8.826806, "rec": [0.0, 0.5, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o5a101080_spc.fits", "obj": "VZ-CET", "mode": "E230M", "nominal": 5.221293211644439e-15, "lam_med": 2662.577407091031, "ra": 34.836804, "dec": -2.97766}, {"file": "h_o5a101090_spc.fits", "obj": "VZ-CET", "mode": "E140M", "nominal": 2.5574516550754745e-15, "lam_med": 1396.4736193081637, "ra": 34.836804, "dec": -2.97766}, {"file": "h_o8wy02020_spc.fits", "obj": "VZ-CET", "mode": "E230M", "nominal": 8.503271882708118e-15, "lam_med": 2661.207513619826, "ra": 34.836781, "dec": -2.977954}, {"file": "h_o8wy03020_spc.fits", "obj": "VZ-CET", "mode": "E140M", "nominal": 2.7244709975130396e-15, "lam_med": 1394.954487005563, "ra": 34.836781, "dec": -2.977954}, {"file": "h_o8o701010_spc.fits", "obj": "WD0044-121", "mode": "E140H", "nominal": 4.815651590547051e-14, "lam_med": 1233.886344681906, "ra": 11.763833, "dec": -11.872028}, {"file": "h_o8o701020_spc.fits", "obj": "WD0044-121", "mode": "E140H", "nominal": 3.381471806120583e-14, "lam_med": 1412.3250140208393, "ra": 11.763833, "dec": -11.872028}, {"file": "h_o4g101010_spc.fits", "obj": "WD0050-332", "mode": "E140H", "nominal": 1.6826567046769722e-14, "lam_med": 1253.09915167681, "ra": 13.322079, "dec": -32.999254}, {"file": "h_o4g101020_spc.fits", "obj": "WD0050-332", "mode": "E140H", "nominal": 1.64575582029819e-14, "lam_med": 1253.0253689410097, "ra": 13.322079, "dec": -32.999254}, {"file": "h_o55f01010_spc.fits", "obj": "WD0209+085", "mode": "E140M", "nominal": 2.073958950564664e-14, "lam_med": 1397.4634522424064, "ra": 33.019792, "dec": 8.781028}, {"file": "h_o55f01020_spc.fits", "obj": "WD0209+085", "mode": "E140M", "nominal": 2.7664793449788496e-14, "lam_med": 1397.4116794680058, "ra": 33.019792, "dec": 8.781028, "rec": [0.0, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0, 0.6666666666666666]}, {"file": "h_o4g701010_spc.fits", "obj": "WD0232+035", "mode": "E140M", "nominal": 4.4284621194612133e-14, "lam_med": 1396.0168110680029, "ra": 38.781522, "dec": 3.732415}, {"file": "h_o4g702010_spc.fits", "obj": "WD0232+035", "mode": "E140M", "nominal": 4.6303120707182767e-14, "lam_med": 1396.165239652748, "ra": 38.78152, "dec": 3.732415}, {"file": "h_o5dma5010_spc.fits", "obj": "WD0429+176", "mode": "E140M", "nominal": 8.329883095616372e-15, "lam_med": 1396.4717764721295, "ra": 68.098833, "dec": 17.750972}, {"file": "h_o5dma6010_spc.fits", "obj": "WD0429+176", "mode": "E140M", "nominal": 8.30720527264385e-15, "lam_med": 1396.603885731041, "ra": 68.098833, "dec": 17.750972, "rec": [0.0, 0.8333333333333334, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o5dma7010_spc.fits", "obj": "WD0429+176", "mode": "E140M", "nominal": 8.436554219634456e-15, "lam_med": 1396.586291939385, "ra": 68.098833, "dec": 17.750972}, {"file": "h_o5dma8010_spc.fits", "obj": "WD0429+176", "mode": "E140M", "nominal": 8.44285449677226e-15, "lam_med": 1396.2319043626674, "ra": 68.098833, "dec": 17.750972}, {"file": "h_o64d03010_spc.fits", "obj": "WD0439+466", "mode": "E140M", "nominal": 4.2479449349780027e-14, "lam_med": 1398.1980661405728, "ra": 70.838625, "dec": 46.701694}, {"file": "h_o64d03020_spc.fits", "obj": "WD0439+466", "mode": "E140M", "nominal": 3.816581390593361e-14, "lam_med": 1398.2573410304908, "ra": 70.838625, "dec": 46.701694}, {"file": "h_o4dd16020_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 4.3898998550332344e-14, "lam_med": 1396.2655383606389, "ra": 76.377637, "dec": 52.831279}, {"file": "h_o4pg02040_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 5.347873258674976e-14, "lam_med": 1396.4134002807725, "ra": 76.377634, "dec": 52.831301}, {"file": "h_o4pg02050_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 6.495934550860706e-14, "lam_med": 1396.2778662711332, "ra": 76.377634, "dec": 52.831301}, {"file": "h_o4vt02040_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 5.403207584760235e-14, "lam_med": 1389.2307879206219, "ra": 76.377635, "dec": 52.83129}, {"file": "h_o4vt02050_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 6.552199853044099e-14, "lam_med": 1396.4783302822425, "ra": 76.377635, "dec": 52.83129}, {"file": "h_o57u01020_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.3152943375749e-14, "lam_med": 1412.3360492441493, "ra": 76.377636, "dec": 52.831283}, {"file": "h_o57u01030_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.49551170530418e-14, "lam_med": 1231.1928660103458, "ra": 76.377636, "dec": 52.831283}, {"file": "h_o57u01040_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.7272961422644604e-14, "lam_med": 1586.1811021302615, "ra": 76.377636, "dec": 52.831283}, {"file": "h_o5i009010_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 6.408022427107789e-14, "lam_med": 1396.6904599916422, "ra": 76.37764, "dec": 52.831253}, {"file": "h_o5i010010_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.870309501313505e-14, "lam_med": 1232.8650576073098, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i010020_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.3771260541754074e-14, "lam_med": 1232.8491894338358, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i010030_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.382282595615931e-14, "lam_med": 1232.876352607453, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i011010_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 4.153937820655257e-14, "lam_med": 1587.6787782448114, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i011020_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.619986914176138e-14, "lam_med": 1587.6702532733757, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i011030_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 3.6167254055969386e-14, "lam_med": 1587.6843942034639, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i012010_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 4.421111983447631e-14, "lam_med": 1950.1742434241744, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i012020_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 1.3799728262852382e-14, "lam_med": 2654.384939157215, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i013010_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.8881250558376956e-14, "lam_med": 1760.0704448297206, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i013020_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.3947749206240557e-14, "lam_med": 1760.0550687520104, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i013030_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.388033207676852e-14, "lam_med": 1760.0549085024768, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i014010_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.0274345191205626e-14, "lam_med": 2510.490716513635, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i014020_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 8.94931926167597e-15, "lam_med": 2510.48584516727, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i014030_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 8.855302188811068e-15, "lam_med": 2510.485118471459, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i015010_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.1145347995650825e-14, "lam_med": 3013.288087634512, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i015020_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 9.869720969448941e-15, "lam_med": 3013.2410129944183, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5i015030_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 9.917640859325354e-15, "lam_med": 3013.107089050847, "ra": 76.37764, "dec": 52.831252}, {"file": "h_o5jy03010_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 1.7404167447059036e-13, "lam_med": 1396.6858473721222, "ra": 76.37764, "dec": 52.831253}, {"file": "h_o5jy03020_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 1.5981099822213428e-13, "lam_med": 1396.2726722821826, "ra": 76.37764, "dec": 52.831253, "rec": [0.16666666666666666, 1.0, 1.0, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o5jy03030_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 1.5623149647911783e-13, "lam_med": 1396.4290265680656, "ra": 76.37764, "dec": 52.831253, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o5jy04010_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 3.9593074936581023e-14, "lam_med": 2660.781172624327, "ra": 76.37764, "dec": 52.831254}, {"file": "h_o5jy04020_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 3.688000475583448e-14, "lam_med": 2660.8135282229496, "ra": 76.37764, "dec": 52.831254}, {"file": "h_o5jy04030_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 3.8338388749960316e-14, "lam_med": 2660.791946447345, "ra": 76.37764, "dec": 52.831254}, {"file": "h_o6hb10010_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 6.276505335416373e-14, "lam_med": 1231.7044675302743, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb10020_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 6.276542315804453e-14, "lam_med": 1231.5376221776346, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb10030_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 2.3420792550899864e-13, "lam_med": 1253.3598074159927, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb10040_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 6.771004629267452e-14, "lam_med": 1253.418783143972, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb10050_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 6.231000552676262e-14, "lam_med": 1291.5027505918827, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb10060_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 5.89909466411284e-14, "lam_med": 1336.9246412256443, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6hb10070_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 2.6737712242807906e-13, "lam_med": 1373.2900722096451, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb10080_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 5.739627731617436e-14, "lam_med": 1373.1399686397328, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb10090_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 5.200632252463337e-14, "lam_med": 1410.1552822112353, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 0.6666666666666666, 0.5, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o6hb100a0_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 5.5348790506614516e-14, "lam_med": 1450.6156935929384, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 1.0, 1.0, 1.0, 0.8333333333333334, 0.8333333333333334]}, {"file": "h_o6hb100b0_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 1.0325983081093548e-13, "lam_med": 1450.4788214342832, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb100c0_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 4.565627563392383e-14, "lam_med": 1483.59760774149, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb100d0_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 5.787654210774498e-14, "lam_med": 1520.6587860021696, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb100e0_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 6.254214229167054e-14, "lam_med": 1520.7734309209054, "ra": 76.377645, "dec": 52.831216, "rec": [0.16666666666666666, 1.0, 1.0, 0.5, 0.6666666666666666, 1.0]}, {"file": "h_o6hb100f0_spc.fits", "obj": "WD0501+527", "mode": "E140H", "nominal": 4.143043157105975e-14, "lam_med": 1556.9332556093555, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20010_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 5.273253493154256e-14, "lam_med": 1758.2251130096229, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20020_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 6.124126822692318e-14, "lam_med": 1811.7050051063025, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20030_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 7.348421790137733e-14, "lam_med": 1811.7012138404953, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20040_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 4.3056381181176444e-14, "lam_med": 1857.0860394324905, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20050_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 4.003175886213171e-14, "lam_med": 1909.5459591074691, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20060_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.626904738890276e-14, "lam_med": 1962.4061879878182, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20070_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.4090166118503125e-14, "lam_med": 2010.4487979006424, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb20080_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.216433090316717e-14, "lam_med": 2061.311312984167, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 1.0, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o6hb20090_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.002136882699004e-14, "lam_med": 2108.7576017529304, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb200a0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 2.8269005798158014e-14, "lam_med": 2155.553306290223, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb200b0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 2.669645282354728e-14, "lam_med": 2204.425779906903, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb200c0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 6.219360556143545e-14, "lam_med": 2258.8224217702577, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb200d0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 2.5009772252756192e-14, "lam_med": 2258.822410806765, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb200e0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 2.160812725367792e-14, "lam_med": 2299.300051025187, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb200f0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 2.0457060339093878e-14, "lam_med": 2355.027629305486, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30010_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.9603922211935586e-14, "lam_med": 2463.4889401951123, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6hb30020_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.900102620732052e-14, "lam_med": 2514.978479076829, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30030_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 3.0297997985176245e-14, "lam_med": 2565.1327088014814, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30040_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 2.156294485415064e-14, "lam_med": 2565.1136003304737, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30050_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.6647970100191658e-14, "lam_med": 2616.8679787402048, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30060_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.4522565141083305e-14, "lam_med": 2661.9239335583825, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30070_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.505047500149209e-14, "lam_med": 2708.0927889305112, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30080_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.4411508836352517e-14, "lam_med": 2751.2582736288964, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb30090_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.98499750779201e-14, "lam_med": 2800.9825260766056, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6hb300a0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.8885055491787894e-14, "lam_med": 2800.964860135341, "ra": 76.377645, "dec": 52.831215}, {"file": "h_o6hb300b0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.313425643018669e-14, "lam_med": 2860.7632384685, "ra": 76.377645, "dec": 52.831215}, {"file": "h_o6hb300c0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 2.0412847123596288e-14, "lam_med": 2916.3481562016555, "ra": 76.377645, "dec": 52.831215}, {"file": "h_o6hb300d0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.6227970479295336e-14, "lam_med": 2916.3481375051324, "ra": 76.377645, "dec": 52.831215}, {"file": "h_o6hb300e0_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.1630370365846598e-14, "lam_med": 2960.126988316634, "ra": 76.377645, "dec": 52.831215}, {"file": "h_o6hb40010_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 1.0071995296747273e-13, "lam_med": 1950.347179886405, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6hb40020_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 8.80245298087078e-14, "lam_med": 2058.5204428025154, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb40030_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 6.702902157408658e-14, "lam_med": 2218.8191486291817, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb40040_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 6.071368632153557e-14, "lam_med": 2340.5391215646373, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb40050_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 4.665772786643317e-14, "lam_med": 2504.174748303242, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb40060_spc.fits", "obj": "WD0501+527", "mode": "E230M", "nominal": 4.0812089332642715e-14, "lam_med": 2662.3488328112817, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o6hb40070_spc.fits", "obj": "WD0501+527", "mode": "E140M", "nominal": 1.4024024034183713e-13, "lam_med": 1396.1862131403418, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb40080_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.976541049091569e-14, "lam_med": 2406.08522108509, "ra": 76.377645, "dec": 52.831216}, {"file": "h_o6hb40090_spc.fits", "obj": "WD0501+527", "mode": "E230H", "nominal": 1.187777773036654e-14, "lam_med": 3017.744151860071, "ra": 76.377645, "dec": 52.831216, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o56401010_spc.fits", "obj": "WD0501-289", "mode": "E140H", "nominal": 1.5957024087742762e-15, "lam_med": 1254.4325007360035, "ra": 75.98075, "dec": -28.910139}, {"file": "h_o56401020_spc.fits", "obj": "WD0501-289", "mode": "E140H", "nominal": 7.848461897866342e-16, "lam_med": 1254.0220773113983, "ra": 75.98075, "dec": -28.910139}, {"file": "h_o64301010_spc.fits", "obj": "WD0505+012", "mode": "E140M", "nominal": 1.7010659242120044e-14, "lam_med": 1398.4809271110444, "ra": 77.128458, "dec": 1.277583}, {"file": "h_o64301020_spc.fits", "obj": "WD0505+012", "mode": "E140M", "nominal": 6.94209820837456e-15, "lam_med": 1399.2641070326783, "ra": 77.128458, "dec": 1.277583, "rec": [0.0, 1.0, 0.6666666666666666, 1.0, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o59p03010_spc.fits", "obj": "WD0556-375", "mode": "E140M", "nominal": 1.8984791586244642e-14, "lam_med": 1391.708202683907, "ra": 89.560542, "dec": -37.573561}, {"file": "h_o59p03020_spc.fits", "obj": "WD0556-375", "mode": "E140M", "nominal": 1.734111337287719e-14, "lam_med": 1392.005422924193, "ra": 89.560542, "dec": -37.573561}, {"file": "h_o59p03030_spc.fits", "obj": "WD0556-375", "mode": "E140M", "nominal": 1.7355336602635037e-14, "lam_med": 1391.9891261348753, "ra": 89.560542, "dec": -37.573561}, {"file": "h_o64302010_spc.fits", "obj": "WD0615+655", "mode": "E140M", "nominal": 2.9465252381089673e-15, "lam_med": 1397.8414087858646, "ra": 95.125583, "dec": 65.572694}, {"file": "h_o59p02010_spc.fits", "obj": "WD0939+262", "mode": "E140M", "nominal": 1.6701912211007295e-14, "lam_med": 1398.383870358541, "ra": 145.711333, "dec": 26.016647}, {"file": "h_o59p02020_spc.fits", "obj": "WD0939+262", "mode": "E140M", "nominal": 1.521972825803065e-14, "lam_med": 1398.3653768820357, "ra": 145.711333, "dec": 26.016647}, {"file": "h_o59p02030_spc.fits", "obj": "WD0939+262", "mode": "E140M", "nominal": 1.520011686735736e-14, "lam_med": 1398.3001251643618, "ra": 145.711333, "dec": 26.016647}, {"file": "h_o59p05010_spc.fits", "obj": "WD0948+534", "mode": "E140M", "nominal": 1.2408553515331314e-14, "lam_med": 1390.8401468999195, "ra": 147.85775, "dec": 53.158517}, {"file": "h_o59p05020_spc.fits", "obj": "WD0948+534", "mode": "E140M", "nominal": 1.1405640436717507e-14, "lam_med": 1391.0605038931521, "ra": 147.85775, "dec": 53.158517}, {"file": "h_o59p05030_spc.fits", "obj": "WD0948+534", "mode": "E140M", "nominal": 1.1435886859080922e-14, "lam_med": 1391.1248046269939, "ra": 147.85775, "dec": 53.158517}, {"file": "h_o59p05040_spc.fits", "obj": "WD0948+534", "mode": "E140M", "nominal": 1.1460158652222305e-14, "lam_med": 1391.1522178229632, "ra": 147.85775, "dec": 53.158517, "rec": [0.0, 1.0, 1.0, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o4g103010_spc.fits", "obj": "WD1029+537", "mode": "E140M", "nominal": 1.7675005645305882e-14, "lam_med": 1396.3558821406766, "ra": 158.041958, "dec": 53.493217}, {"file": "h_o4g104010_spc.fits", "obj": "WD1123+189", "mode": "E140H", "nominal": 1.3438999935668102e-14, "lam_med": 1255.2410891966074, "ra": 171.579667, "dec": 18.654689}, {"file": "h_o4g104020_spc.fits", "obj": "WD1123+189", "mode": "E140H", "nominal": 1.3179165417164278e-14, "lam_med": 1255.3247815629852, "ra": 171.579667, "dec": 18.654689}, {"file": "h_o8paa1010_spc.fits", "obj": "WD1136+667", "mode": "E140H", "nominal": 1.021225466506827e-14, "lam_med": 1233.305927889411, "ra": 174.775083, "dec": 66.505056}, {"file": "h_o8paa2010_spc.fits", "obj": "WD1136+667", "mode": "E140M", "nominal": 3.05531595212358e-14, "lam_med": 1395.9306937548981, "ra": 174.775083, "dec": 66.505056}, {"file": "h_o8paa2020_spc.fits", "obj": "WD1136+667", "mode": "E140M", "nominal": 3.012350267333392e-14, "lam_med": 1395.9942277534822, "ra": 174.775083, "dec": 66.505056, "rec": [0.0, 1.0, 1.0, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o8paa2030_spc.fits", "obj": "WD1136+667", "mode": "E140M", "nominal": 3.025226298867027e-14, "lam_med": 1396.124681081068, "ra": 174.775083, "dec": 66.505056}, {"file": "h_o8mu03010_spc.fits", "obj": "WD1159-034", "mode": "E140M", "nominal": 3.44927677521504e-14, "lam_med": 1395.4478851015047, "ra": 180.441583, "dec": -3.761278, "rec": [0.0, 1.0, 1.0, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o8mu03020_spc.fits", "obj": "WD1159-034", "mode": "E140M", "nominal": 3.421991375482939e-14, "lam_med": 1395.609200380131, "ra": 180.441583, "dec": -3.761278}, {"file": "h_o8mu03030_spc.fits", "obj": "WD1159-034", "mode": "E140M", "nominal": 3.44257308881454e-14, "lam_med": 1395.7037182942734, "ra": 180.441583, "dec": -3.761278, "rec": [0.0, 1.0, 1.0, 1.0, 0.8333333333333334, 0.5]}, {"file": "h_o5f203010_spc.fits", "obj": "WD1210+533", "mode": "E140M", "nominal": 1.9326854961552408e-14, "lam_med": 1398.0773095869417, "ra": 183.352667, "dec": 53.066083}, {"file": "h_o5f203020_spc.fits", "obj": "WD1210+533", "mode": "E140M", "nominal": 1.7771678464592143e-14, "lam_med": 1398.3021880406059, "ra": 183.352667, "dec": 53.066083}, {"file": "h_o5f204010_spc.fits", "obj": "WD1210+533", "mode": "E140M", "nominal": 1.9166329991580308e-14, "lam_med": 1398.2014013192595, "ra": 183.352667, "dec": 53.066083}, {"file": "h_o67k03010_spc.fits", "obj": "WD1254+223", "mode": "E140H", "nominal": 1.9384386142214643e-14, "lam_med": 1233.3151371983731, "ra": 194.259785, "dec": 22.03123, "rec": [0.16666666666666666, 0.6666666666666666, 0.6666666666666666, 0.8333333333333334, 1.0, 0.5]}, {"file": "h_o67k03020_spc.fits", "obj": "WD1254+223", "mode": "E140H", "nominal": 1.6079868592806795e-14, "lam_med": 1233.1958436194907, "ra": 194.259785, "dec": 22.03123}, {"file": "h_o67k03030_spc.fits", "obj": "WD1254+223", "mode": "E140H", "nominal": 1.6129011918730553e-14, "lam_med": 1233.1602740958556, "ra": 194.259785, "dec": 22.03123}, {"file": "h_o67k03040_spc.fits", "obj": "WD1254+223", "mode": "E140H", "nominal": 1.8959454217004634e-14, "lam_med": 1233.1456705598055, "ra": 194.259785, "dec": 22.03123}, {"file": "h_o67k03050_spc.fits", "obj": "WD1254+223", "mode": "E140H", "nominal": 1.6174993130147663e-14, "lam_med": 1233.0135085970705, "ra": 194.259785, "dec": 22.03123}, {"file": "h_o67k04010_spc.fits", "obj": "WD1254+223", "mode": "E140H", "nominal": 1.96151501666483e-14, "lam_med": 1233.0274440447643, "ra": 194.259785, "dec": 22.031229}, {"file": "h_o67k04020_spc.fits", "obj": "WD1254+223", "mode": "E230H", "nominal": 4.651369191663668e-15, "lam_med": 2510.7118715558377, "ra": 194.259785, "dec": 22.031229}, {"file": "h_o67k04030_spc.fits", "obj": "WD1254+223", "mode": "E230H", "nominal": 4.696696470194882e-15, "lam_med": 2510.708580559227, "ra": 194.259785, "dec": 22.031229, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o67k04040_spc.fits", "obj": "WD1254+223", "mode": "E230H", "nominal": 5.460357765755046e-15, "lam_med": 2510.7070791151973, "ra": 194.259785, "dec": 22.031229}, {"file": "h_o67k04050_spc.fits", "obj": "WD1254+223", "mode": "E230H", "nominal": 4.735828887675393e-15, "lam_med": 2510.706405581889, "ra": 194.259785, "dec": 22.031229}, {"file": "h_o67k01010_spc.fits", "obj": "WD1314+293", "mode": "E140H", "nominal": 2.6860162784850893e-14, "lam_med": 1233.2464207482315, "ra": 199.090707, "dec": 29.098742}, {"file": "h_o67k01020_spc.fits", "obj": "WD1314+293", "mode": "E140H", "nominal": 2.1442630581812564e-14, "lam_med": 1233.4712425406497, "ra": 199.090707, "dec": 29.098742}, {"file": "h_o67k01030_spc.fits", "obj": "WD1314+293", "mode": "E140H", "nominal": 2.1506680498734695e-14, "lam_med": 1233.4030022246536, "ra": 199.090707, "dec": 29.098742}, {"file": "h_o67k01040_spc.fits", "obj": "WD1314+293", "mode": "E140H", "nominal": 2.5474322154624496e-14, "lam_med": 1233.4892735501976, "ra": 199.090707, "dec": 29.098742}, {"file": "h_o67k01050_spc.fits", "obj": "WD1314+293", "mode": "E140H", "nominal": 2.1648952482731807e-14, "lam_med": 1233.681126919422, "ra": 199.090707, "dec": 29.098742}, {"file": "h_o67k02010_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 7.097531486585732e-15, "lam_med": 2510.589217039613, "ra": 199.090709, "dec": 29.098742}, {"file": "h_o67k02020_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 5.6710520321219255e-15, "lam_med": 2510.564083204484, "ra": 199.090709, "dec": 29.098742}, {"file": "h_o67k02030_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 5.715557999400465e-15, "lam_med": 2510.563877362273, "ra": 199.090709, "dec": 29.098742}, {"file": "h_o8gn10060_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 4.470503854905419e-15, "lam_med": 2506.301775111756, "ra": 199.090652, "dec": 29.098717}, {"file": "h_o8gn10070_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 4.479666533799596e-15, "lam_med": 2510.547022914724, "ra": 199.090652, "dec": 29.098717}, {"file": "h_o8gn10080_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 4.537404391824201e-15, "lam_med": 2510.5285480418265, "ra": 199.090652, "dec": 29.098717}, {"file": "h_o8gn10090_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 4.4695184494522674e-15, "lam_med": 2514.3750472746115, "ra": 199.090652, "dec": 29.098717}, {"file": "h_o8gn100a0_spc.fits", "obj": "WD1314+293", "mode": "E230H", "nominal": 4.433585056370469e-15, "lam_med": 2514.51292213991, "ra": 199.090652, "dec": 29.098717}, {"file": "h_o59p01010_spc.fits", "obj": "WD1738+669", "mode": "E140M", "nominal": 8.519851948266274e-15, "lam_med": 1389.8094360398113, "ra": 264.51025, "dec": 66.896611}, {"file": "h_o64d07010_spc.fits", "obj": "WD1957+225", "mode": "E140M", "nominal": 2.4594164465371364e-14, "lam_med": 1392.1052528753335, "ra": 299.901542, "dec": 22.721139}, {"file": "h_o64d07020_spc.fits", "obj": "WD1957+225", "mode": "E140M", "nominal": 2.164648694036875e-14, "lam_med": 1392.1099626661817, "ra": 299.901542, "dec": 22.721139}, {"file": "h_o8mu02010_spc.fits", "obj": "WD2134+125", "mode": "E140M", "nominal": 4.11176599993938e-14, "lam_med": 1396.410467527473, "ra": 324.22075, "dec": 12.788639}, {"file": "h_o8mu02020_spc.fits", "obj": "WD2134+125", "mode": "E140M", "nominal": 4.0792420561311246e-14, "lam_med": 1396.5337373098112, "ra": 324.22075, "dec": 12.788639}, {"file": "h_o8mu02030_spc.fits", "obj": "WD2134+125", "mode": "E140M", "nominal": 4.098566713160524e-14, "lam_med": 1396.4167989426248, "ra": 324.22075, "dec": 12.788639, "rec": [0.0, 1.0, 0.8333333333333334, 1.0, 0.6666666666666666, 1.0]}, {"file": "h_o3zx02050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.569384242323747e-14, "lam_med": 2661.21066296429, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o3zx02060_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 4.237470494705378e-14, "lam_med": 2661.189241628944, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o3zx02070_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.1594804539332162e-13, "lam_med": 1950.209363757461, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o3zx02080_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 1.3808038900727423e-13, "lam_med": 1396.2698610599555, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45930010_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.314064378795884e-14, "lam_med": 1412.2981243932322, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45930020_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.6635733896290418e-14, "lam_med": 2258.4240295091636, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45930030_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.129101689172538e-13, "lam_med": 1396.1957910461679, "ra": 327.796125, "dec": 28.864389, "rec": [0.16666666666666666, 1.0, 0.6666666666666666, 0.6666666666666666, 1.0, 1.0]}, {"file": "h_o45930040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.9196470586505177e-13, "lam_med": 1950.1047476953286, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45930050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 7.249084660084055e-14, "lam_med": 2661.1327872429383, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45931010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.639018526176186e-14, "lam_med": 2258.7594718977225, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o45931020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.1524726419569646e-13, "lam_med": 1396.2886595647365, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o45931030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.14426995026888e-14, "lam_med": 1412.6275303666694, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45931040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.745961676758239e-13, "lam_med": 1950.3322593627402, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45931050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.577388599627749e-14, "lam_med": 2661.507861441771, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45932010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.6705128906347488e-14, "lam_med": 2258.5649310595313, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45932020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.1805326935039763e-13, "lam_med": 1396.3686472120144, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45932030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.071774060651402e-14, "lam_med": 1412.3479568333753, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45932040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.7378578427537093e-13, "lam_med": 1950.165644284523, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o45932050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.577658074963807e-14, "lam_med": 2661.2746186836425, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o45933010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.6869682569480143e-14, "lam_med": 2258.4554678025197, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45933020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.1585679561802863e-13, "lam_med": 1396.1460564376046, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45933030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.098713105136969e-14, "lam_med": 1412.4693708714399, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45933040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.7473206517671502e-13, "lam_med": 1950.0971749186517, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45933050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.600832809034222e-14, "lam_med": 2661.1594548271164, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o45934010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.6532936472660028e-14, "lam_med": 2258.7633968341806, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45934020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.113502017129171e-13, "lam_med": 1396.1872028769508, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45934030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.148784783573677e-14, "lam_med": 1412.4817755777117, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o45934040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.7171713035200907e-13, "lam_med": 1950.3740066445234, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o45934050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.505400333644946e-14, "lam_med": 2661.5339602731797, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 1.0, 1.0, 1.0]}, {"file": "h_o47k01070_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 7.923809232636702e-13, "lam_med": 1396.1303511245874, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k01080_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.9485478378829616e-13, "lam_med": 2661.2568456202507, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k01090_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.9583552976085396e-13, "lam_med": 2661.6647166452535, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k010a0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.9593836422317073e-13, "lam_med": 2661.3655257987502, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.0, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o47k010b0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.9572157995250266e-13, "lam_med": 2660.899480472566, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k010c0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.8376537476437617e-13, "lam_med": 2661.4392977213856, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.16666666666666666, 0.5, 1.0, 0.6666666666666666, 0.8333333333333334]}, {"file": "h_o47k020f0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.6479337905679034e-14, "lam_med": 2661.546020657641, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o47k020g0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.666973304565842e-14, "lam_med": 2661.273193546371, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020h0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.2627793322066114e-13, "lam_med": 2661.2516355694356, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.3333333333333333, 0.5, 1.0, 1.0, 1.0]}, {"file": "h_o47k020i0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 7.266140762190537e-14, "lam_med": 2661.2732281352055, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020j0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.3132523249064526e-13, "lam_med": 2661.273360545196, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020k0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.636349188282347e-14, "lam_med": 2660.708696213505, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020l0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.2532825191916593e-13, "lam_med": 2660.7277090962207, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020m0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 7.485986751946188e-14, "lam_med": 2660.706146242162, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020n0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.713539521512492e-14, "lam_med": 2661.2757266290027, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020o0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.1296479981654619e-13, "lam_med": 2661.254169099019, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020p0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 3.653886514098306e-14, "lam_med": 2661.1331799436607, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020q0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 3.5904137900084194e-14, "lam_med": 2660.6321362905883, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020r0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 4.1977493046521366e-14, "lam_med": 2661.1677089412296, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k020s0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.117035401410689e-14, "lam_med": 2661.1678942229705, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k03090_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 7.202101850694639e-14, "lam_med": 2661.124034232178, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.0, 0.5, 1.0, 1.0, 1.0]}, {"file": "h_o47k030a0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.6202112256305194e-14, "lam_med": 2661.0496356287385, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k030b0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.1188661916121538e-13, "lam_med": 2661.0582386687556, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k030c0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 7.28303979157355e-14, "lam_med": 2661.5048910851283, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k030d0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 4.18868768113602e-14, "lam_med": 2661.138874718784, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k030e0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.297208496603046e-14, "lam_med": 2660.9503843988714, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.0, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o47k030f0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.154232639106247e-14, "lam_med": 2661.3753008793146, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o47k030g0_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 4.1764555421457405e-14, "lam_med": 2661.3862729337134, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040f0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.326841940924814e-13, "lam_med": 1396.278752021095, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "h_o47k040g0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.371011818396452e-13, "lam_med": 1396.201487582287, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040h0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 4.707960016282911e-13, "lam_med": 1396.1605328538396, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 0.8333333333333334, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o47k040i0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.0239187913927975e-13, "lam_med": 1396.0748801669881, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040j0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 4.748018072950102e-13, "lam_med": 1396.1978512811888, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 1.0, 0.8333333333333334, 1.0, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o47k040k0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.397909328860587e-13, "lam_med": 1396.0595751508868, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040l0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 5.034289054782535e-13, "lam_med": 1396.058141348565, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040m0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.0625843547884613e-13, "lam_med": 1396.0804968311681, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040n0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.3624809230387754e-13, "lam_med": 1396.2023987215118, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040o0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 4.702614395136757e-13, "lam_med": 1396.2284770072665, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040p0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 1.529545327595197e-13, "lam_med": 1396.179269560894, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040q0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 1.5231395968661934e-13, "lam_med": 1396.0381558727308, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k040r0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 1.7471925469914456e-13, "lam_med": 1396.1725389726055, "ra": 327.796125, "dec": 28.864722, "rec": [0.0, 1.0, 0.8333333333333334, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o47k040s0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.1142032822885444e-13, "lam_med": 1396.1800832928934, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k05090_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.0637165775310827e-13, "lam_med": 1396.1845087583797, "ra": 327.796125, "dec": 28.864722, "rec": [0.16666666666666666, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o47k050a0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.379708379463853e-13, "lam_med": 1396.203352501703, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k050b0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 5.016673860762354e-13, "lam_med": 1396.171540884347, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k050c0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.0373567994097896e-13, "lam_med": 1396.2281802522982, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k050d0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 1.7497444575876422e-13, "lam_med": 1396.1555226825858, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k050e0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.148582910020517e-13, "lam_med": 1396.1194195111161, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k050f0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 2.101127527773126e-13, "lam_med": 1396.1946016827035, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o47k050g0_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 1.7018266664317453e-13, "lam_med": 1396.1313850756328, "ra": 327.796125, "dec": 28.864722}, {"file": "h_o4dd15020_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.4773631248927775e-13, "lam_med": 1950.0415647402754, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o4dd15030_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 5.1667880251819685e-14, "lam_med": 2661.0765063737945, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.16666666666666666, 0.8333333333333334, 0.8333333333333334, 0.6666666666666666, 0.6666666666666666]}, {"file": "h_o5jj22010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.818463362250582e-14, "lam_med": 2258.4189708850663, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj22020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.216163163777897e-13, "lam_med": 1396.2495938634033, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj22030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 8.697080441666261e-14, "lam_med": 1412.1766977744828, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj22040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.7117417460099226e-13, "lam_med": 1950.0707793008996, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj22050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.596370987884897e-14, "lam_med": 2661.1200136405073, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj23010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.8226663028905244e-14, "lam_med": 2258.745164497949, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj23020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.2114442532643777e-13, "lam_med": 1396.7790764414162, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.5, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o5jj23030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 8.944615383056695e-14, "lam_med": 1412.7305053899388, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj23040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.726122317398814e-13, "lam_med": 1950.33916578848, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o5jj23050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.570453188746808e-14, "lam_med": 2661.5194487058925, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o69s19010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.8633586981385134e-14, "lam_med": 2258.420664675062, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 1.0, 0.6666666666666666, 1.0, 1.0, 1.0]}, {"file": "h_o69s19020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.2542761364933085e-13, "lam_med": 1396.403955126837, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o69s19030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 8.618734013774121e-14, "lam_med": 1412.7390201235487, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o69s19040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.7387350099696779e-13, "lam_med": 1950.090830697622, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o69s19050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.686706415524494e-14, "lam_med": 2661.121311657246, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o69s20010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.88349028265482e-14, "lam_med": 2258.666842919911, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o69s20020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.275384070705523e-13, "lam_med": 1397.156917109146, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.8333333333333334, 0.8333333333333334, 0.6666666666666666, 1.0, 0.8333333333333334]}, {"file": "h_o69s20030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 8.982146137625e-14, "lam_med": 1412.1545576352753, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o69s20040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.780054727977905e-13, "lam_med": 1950.327920556077, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o69s20050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.660489704933596e-14, "lam_med": 2658.4145123126646, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i819010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.860371397100138e-14, "lam_med": 2258.4477060421787, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i819020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.2292231004765437e-13, "lam_med": 1396.471138162202, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i819030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.028251582112522e-14, "lam_med": 1411.9319637329465, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i819040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.762021815600825e-13, "lam_med": 1950.1284205623633, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i819050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.60310120108041e-14, "lam_med": 2660.0859154802215, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i820010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.877298941465376e-14, "lam_med": 2258.7730534787142, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i820020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.3020238102358113e-13, "lam_med": 1396.5230876323158, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i820030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.116674170825144e-14, "lam_med": 1412.6061094923814, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i820040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.758908615695391e-13, "lam_med": 1950.3972501128133, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o6i820050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.559811758363498e-14, "lam_med": 2660.3718264977542, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8gn50060_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 3.412013636661317e-14, "lam_med": 2510.85238175218, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8gn50070_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 3.429342267240751e-14, "lam_med": 2510.913327312222, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8gn50080_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.1620802813511854e-13, "lam_med": 2510.916191054029, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8gn50090_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 3.558875494579128e-14, "lam_med": 2514.7380985222476, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8gn500a0_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 3.464433153710795e-14, "lam_med": 2514.8709097588176, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8ia12010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.8783465653524174e-14, "lam_med": 2258.4494630953404, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8ia12020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.2748106891516647e-13, "lam_med": 1396.2334523038967, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8ia12030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.132376807644486e-14, "lam_med": 1411.862558627623, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8ia12040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.7865065345660469e-13, "lam_med": 1950.1521337205913, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.8333333333333334, 0.6666666666666666, 1.0, 0.8333333333333334, 0.6666666666666666]}, {"file": "h_o8ia12050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.646152561267724e-14, "lam_med": 2658.7947377265436, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.16666666666666666, 0.3333333333333333, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o8ia13010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.8735131956102596e-14, "lam_med": 2258.7429889663126, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8ia13020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.3563283881521503e-13, "lam_med": 1396.4578206787878, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8ia13030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.154589217489515e-14, "lam_med": 1412.8858176008375, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8ia13040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.7812697132532287e-13, "lam_med": 1950.3825291591556, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o8ia13050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.648432269278197e-14, "lam_med": 2657.421495730944, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v560010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.8992437053339746e-14, "lam_med": 2258.4211302134554, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o8v560020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.289905027615108e-13, "lam_med": 1396.1658211749952, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v560030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.183653369890085e-14, "lam_med": 1412.0913964209303, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v560040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.8113738991682912e-13, "lam_med": 1950.1600716106454, "ra": 327.796125, "dec": 28.864389, "rec": [0.0, 0.8333333333333334, 1.0, 1.0, 1.0, 0.8333333333333334]}, {"file": "h_o8v560050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.679530219656364e-14, "lam_med": 2658.363049385169, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v561010_spc.fits", "obj": "WD2148+286", "mode": "E230H", "nominal": 2.752720480529984e-14, "lam_med": 2258.790183402868, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v561020_spc.fits", "obj": "WD2148+286", "mode": "E140M", "nominal": 3.3181595739245445e-13, "lam_med": 1396.4185176154358, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v561030_spc.fits", "obj": "WD2148+286", "mode": "E140H", "nominal": 9.239666970143764e-14, "lam_med": 1412.6171864951493, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v561040_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 1.8031568402055335e-13, "lam_med": 1950.4214837534364, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o8v561050_spc.fits", "obj": "WD2148+286", "mode": "E230M", "nominal": 6.670424143900456e-14, "lam_med": 2658.040088176038, "ra": 327.796125, "dec": 28.864389}, {"file": "h_o4g105010_spc.fits", "obj": "WD2152-548", "mode": "E140M", "nominal": 1.717766873846313e-14, "lam_med": 1390.2388655913792, "ra": 329.088208, "dec": -54.639778}, {"file": "h_o59p04010_spc.fits", "obj": "WD2218+706", "mode": "E140M", "nominal": 3.200448831054989e-15, "lam_med": 1396.876178648872, "ra": 334.890792, "dec": 70.934442}, {"file": "h_o64d05010_spc.fits", "obj": "WD2226-210", "mode": "E140M", "nominal": 3.480438136738325e-14, "lam_med": 1398.4549221971038, "ra": 337.410292, "dec": -20.837111}, {"file": "h_o64d05020_spc.fits", "obj": "WD2226-210", "mode": "E140M", "nominal": 3.073930375384897e-14, "lam_med": 1398.6252935630107, "ra": 337.410292, "dec": -20.837111}, {"file": "h_o4g102010_spc.fits", "obj": "WD2309+105", "mode": "E140M", "nominal": 4.2800478105426395e-14, "lam_med": 1397.5066815443117, "ra": 348.089687, "dec": 10.784624}, {"file": "h_o4g102020_spc.fits", "obj": "WD2309+105", "mode": "E140H", "nominal": 2.0247370906306424e-14, "lam_med": 1252.8966526227557, "ra": 348.089687, "dec": 10.784624}, {"file": "h_o5f201010_spc.fits", "obj": "WD2342+806", "mode": "E140M", "nominal": 1.4580702759563418e-14, "lam_med": 1397.2551035204092, "ra": 356.260417, "dec": 80.95}, {"file": "h_o5f201020_spc.fits", "obj": "WD2342+806", "mode": "E140M", "nominal": 1.3499372622497445e-14, "lam_med": 1397.3116978076446, "ra": 356.260417, "dec": 80.95, "rec": [0.0, 1.0, 1.0, 1.0, 0.8333333333333334, 1.0]}, {"file": "h_o5f202010_spc.fits", "obj": "WD2342+806", "mode": "E140M", "nominal": 1.4639641776553286e-14, "lam_med": 1397.0741066508322, "ra": 356.260417, "dec": 80.95}, {"file": "h_o5b604010_spc.fits", "obj": "WX-CET", "mode": "E140M", "nominal": 1.8285651336538946e-15, "lam_med": 1398.675765725906, "ra": 19.267375, "dec": -17.939714}, {"file": "h_o5b604020_spc.fits", "obj": "WX-CET", "mode": "E140M", "nominal": 1.7111811720055163e-15, "lam_med": 1398.922885186374, "ra": 19.267375, "dec": -17.939714}, {"file": "h_o5b604030_spc.fits", "obj": "WX-CET", "mode": "E140M", "nominal": 1.930106934835506e-15, "lam_med": 1398.7856379106447, "ra": 19.267375, "dec": -17.939714}, {"file": "h_o6j711010_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 1.67770308357893e-13, "lam_med": 1944.787451205838, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j711020_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 7.804258333285972e-14, "lam_med": 2662.247279283683, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j711030_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 1.2504490164010295e-13, "lam_med": 1395.8711014231699, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j711040_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 5.126694695654675e-14, "lam_med": 1395.1415755227795, "ra": 301.901667, "dec": 17.704278, "rec": [0.0, 0.5, 0.8333333333333334, 0.5, 1.0, 0.8333333333333334]}, {"file": "h_o6j712010_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 1.6123473491536512e-13, "lam_med": 1944.8533322380326, "ra": 301.901667, "dec": 17.704278, "rec": [0.0, 0.6666666666666666, 1.0, 1.0, 1.0, 1.0]}, {"file": "h_o6j712020_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 7.261502821496899e-14, "lam_med": 2662.2551950830293, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j712030_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 1.1593606005430048e-13, "lam_med": 1396.0483422407938, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j712040_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 4.980268546811795e-14, "lam_med": 1395.3329135605422, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j723010_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 6.550213936012769e-14, "lam_med": 1950.137148292928, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j723020_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 2.483768949938693e-14, "lam_med": 2662.2221557697276, "ra": 301.901667, "dec": 17.704278, "rec": [0.0, 0.16666666666666666, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0]}, {"file": "h_o6j723030_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 2.3456817619111557e-14, "lam_med": 1396.042389572115, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j723040_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 1.5173204334716425e-14, "lam_med": 1396.1028811377714, "ra": 301.901667, "dec": 17.704278, "rec": [0.16666666666666666, 1.0, 1.0, 0.8333333333333334, 0.5, 1.0]}, {"file": "h_o6j724010_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 6.882627570382834e-14, "lam_med": 1950.130067757467, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j724020_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 2.4857745419634978e-14, "lam_med": 2662.2211684897893, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j724030_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 2.249240110612577e-14, "lam_med": 1395.4061774106021, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j724040_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 1.480949850939558e-14, "lam_med": 1394.8735700249551, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j725010_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 1.088783034572874e-13, "lam_med": 1950.1184788042515, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j725020_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 4.8490735264850826e-14, "lam_med": 2662.197122058891, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j725030_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 4.093335742326422e-14, "lam_med": 1396.1030435046816, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j725040_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 2.6791646640457955e-14, "lam_med": 1396.1314692343722, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j726010_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 1.1078291970634697e-13, "lam_med": 1950.1154186314839, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j726020_spc.fits", "obj": "WZ-SGE", "mode": "E230M", "nominal": 4.7948650272033045e-14, "lam_med": 2662.186502050451, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j726030_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 3.984859130860759e-14, "lam_med": 1395.974814260826, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6j726040_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 2.679301974617272e-14, "lam_med": 1395.7891782147944, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6jl01010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 1.3108283960666266e-14, "lam_med": 1395.9667342456412, "ra": 301.901667, "dec": 17.704278, "rec": [0.0, 0.6666666666666666, 1.0, 0.6666666666666666, 1.0, 0.8333333333333334]}, {"file": "h_o6jl02010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 1.0694566751761419e-14, "lam_med": 1396.8510255689257, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6jl03010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 9.34436354267353e-15, "lam_med": 1397.3409851970089, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6jl04010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 8.566787824729361e-15, "lam_med": 1397.8821713212178, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf01010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 6.490138789570817e-15, "lam_med": 1392.1585212875814, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf01020_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 5.885452343761051e-15, "lam_med": 1391.5059617403062, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf02010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 4.5936342358041716e-15, "lam_med": 1395.9043458691092, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf02020_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 3.936255670281225e-15, "lam_med": 1395.698113246207, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf02040_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 4.0880467896611255e-15, "lam_med": 1395.0843486181777, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf02050_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 4.179672489594385e-15, "lam_med": 1395.0956537234563, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf03010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 6.004345909891612e-15, "lam_med": 1390.0179280016223, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf03020_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 5.570175928289391e-15, "lam_med": 1390.0602946817107, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf04010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 5.255785781585485e-15, "lam_med": 1396.2113110813839, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf04020_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 4.721254404517525e-15, "lam_med": 1396.1022634848273, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf05010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 5.1180034338277836e-15, "lam_med": 1396.8044123038087, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf05020_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 4.541395378122289e-15, "lam_med": 1396.4909076115748, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf06010_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 5.823108062572833e-15, "lam_med": 1396.9530550084764, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o6nf06020_spc.fits", "obj": "WZ-SGE", "mode": "E140M", "nominal": 5.266755954667885e-15, "lam_med": 1397.0959897171042, "ra": 301.901667, "dec": 17.704278}, {"file": "h_o59k01010_spc.fits", "obj": "YZ-CMI", "mode": "E230M", "nominal": 2.1791923785818732e-15, "lam_med": 2661.5367062549476, "ra": 116.167369, "dec": 3.55238}, {"file": "h_o59k01020_spc.fits", "obj": "YZ-CMI", "mode": "E230M", "nominal": 1.9502604346525006e-15, "lam_med": 2661.5735685946393, "ra": 116.167369, "dec": 3.55238}, {"file": "h_o59k01030_spc.fits", "obj": "YZ-CMI", "mode": "E230M", "nominal": 1.989810890182348e-15, "lam_med": 2661.5827814652575, "ra": 116.167369, "dec": 3.55238}, {"file": "h_o59k01040_spc.fits", "obj": "YZ-CMI", "mode": "E230M", "nominal": 2.1074914866729058e-15, "lam_med": 2661.583599097878, "ra": 116.167369, "dec": 3.55238}, {"file": "h_o59k01050_spc.fits", "obj": "YZ-CMI", "mode": "E230M", "nominal": 2.159885413878739e-15, "lam_med": 2661.580994339853, "ra": 116.167369, "dec": 3.55238}, {"file": "h_o59k01060_spc.fits", "obj": "YZ-CMI", "mode": "E230M", "nominal": 2.25498011065772e-15, "lam_med": 2661.554873546654, "ra": 116.167369, "dec": 3.55238}]} \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_limits_stis.json b/papers/uv_lasers/data/uv_limits_stis.json new file mode 100644 index 0000000000000000000000000000000000000000..6e3f8c9db2db355b6295c0b90477ff9958aee47c --- /dev/null +++ b/papers/uv_lasers/data/uv_limits_stis.json @@ -0,0 +1 @@ +{"set": "stis", "mult": [1.0, 1.5, 2.0, 3.0, 5.0, 8.0], "recovery": [0.0192899503311562, 0.34889162867268453, 0.5999268719168801, 0.7527409513105028, 0.8388907074046441, 0.8787307812010903], "n_injected": 300, "plateau": 0.8787307812010903, "m50": 1.680201315079596, "m90": 3.884895175531916, "exposures": [{"file": "o8oe03010_x1d.fits", "star": "HD 132475", "mode": "E230M", "nominal": 8.423739391191989e-15, "lam_med": 2632.645316394851}, {"file": "o8oe03020_x1d.fits", "star": "HD 132475", "mode": "E230M", "nominal": 6.662483271125605e-15, "lam_med": 2632.6914247711234}, {"file": "o8oe03030_x1d.fits", "star": "HD 132475", "mode": "E230M", "nominal": 7.776658240473238e-15, "lam_med": 2632.6540602983023}, {"file": "o8oe03040_x1d.fits", "star": "HD 132475", "mode": "E230M", "nominal": 6.594858109953107e-15, "lam_med": 2632.6593809492224}, {"file": "o8qy18010_x1d.fits", "star": "HD 161817", "mode": "E230M", "nominal": 3.2602278572068576e-14, "lam_med": 2632.8790628242978}, {"file": "o8qy18020_x1d.fits", "star": "HD 161817", "mode": "E140M", "nominal": 4.284227480575172e-15, "lam_med": 1378.4450323979104}, {"file": "oa9z03010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.76450873167342e-14, "lam_med": 2258.0456050429957}, {"file": "oa9z03020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6023337929323345e-13, "lam_med": 1380.5011670986685}, {"file": "oa9z03030_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.085564984439671e-14, "lam_med": 1415.0867613149608}, {"file": "oa9z03040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 2.0892531148405678e-13, "lam_med": 1917.5760862927127}, {"file": "oa9z03050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.05369296962187e-14, "lam_med": 2630.1309325040475}, {"file": "ob1q01010_x1d.fits", "star": "HD 61005", "mode": "E230M", "nominal": 5.083914852661672e-15, "lam_med": 2332.299403167235}, {"file": "ob1q01020_x1d.fits", "star": "HD 61005", "mode": "E230M", "nominal": 4.569231099335935e-15, "lam_med": 2332.3320567205838}, {"file": "ob2301010_x1d.fits", "star": "* sig Sgr", "mode": "E140H", "nominal": 4.3852191667252564e-11, "lam_med": 1330.3311001816917}, {"file": "ob2301020_x1d.fits", "star": "* sig Sgr", "mode": "E140H", "nominal": 3.061764531996261e-11, "lam_med": 1584.693560231688}, {"file": "ob2302010_x1d.fits", "star": "* alf Ara", "mode": "E140H", "nominal": 9.788370108507302e-12, "lam_med": 1330.568286325155, "rec": [0.03571428571428571, 0.4642857142857143, 0.7530864197530864, 0.8470588235294118, 0.8571428571428571, 0.9418604651162791]}, {"file": "ob2303010_x1d.fits", "star": "* eta Aur", "mode": "E140H", "nominal": 8.160590184753015e-12, "lam_med": 1289.5265974985111}, {"file": "ob2303020_x1d.fits", "star": "* eta Aur", "mode": "E140H", "nominal": 1.0928965808462866e-11, "lam_med": 1584.9935456563144}, {"file": "ob232a010_x1d.fits", "star": "* alf Ara", "mode": "E140H", "nominal": 8.515193163869437e-12, "lam_med": 1583.2771965041168}, {"file": "ob2501010_x1d.fits", "star": "* 7 Leo", "mode": "E140H", "nominal": 3.2205315970009433e-14, "lam_med": 1330.3965361670073}, {"file": "ob2501020_x1d.fits", "star": "* 7 Leo", "mode": "E140H", "nominal": 3.640933376408473e-14, "lam_med": 1330.4703538768347}, {"file": "ob2501030_x1d.fits", "star": "* 7 Leo", "mode": "E230H", "nominal": 5.675459205317295e-14, "lam_med": 1962.4843710983696, "rec": [0.018518518518518517, 0.3055555555555556, 0.8148148148148148, 0.9351851851851852, 1.0, 1.0]}, {"file": "ob2502010_x1d.fits", "star": "* 19 Leo", "mode": "E230H", "nominal": 3.8552613778292025e-14, "lam_med": 1962.7460421273747}, {"file": "ob2503010_x1d.fits", "star": "* 21 Leo", "mode": "E140H", "nominal": 3.777662270111388e-14, "lam_med": 1330.4573455289114}, {"file": "ob2503020_x1d.fits", "star": "* 21 Leo", "mode": "E140H", "nominal": 4.3790919596090627e-14, "lam_med": 1330.5478556775734}, {"file": "ob2503030_x1d.fits", "star": "* 21 Leo", "mode": "E230H", "nominal": 5.6594322106304245e-14, "lam_med": 1962.8088673626412}, {"file": "ob2601010_x1d.fits", "star": "HD 108639", "mode": "E140H", "nominal": 5.148258261031347e-14, "lam_med": 1228.1532675620003}, {"file": "ob2602010_x1d.fits", "star": "HD 147888", "mode": "E140H", "nominal": 5.573220192904638e-14, "lam_med": 1227.493671318432}, {"file": "ob2602020_x1d.fits", "star": "HD 147888", "mode": "E140H", "nominal": 6.296871212736462e-14, "lam_med": 1227.6929701158892}, {"file": "ob2603010_x1d.fits", "star": "HD 99872", "mode": "E140H", "nominal": 7.941016919040487e-14, "lam_med": 1228.1429807150084}, {"file": "ob2604010_x1d.fits", "star": "HD 24190", "mode": "E140H", "nominal": 1.0376886388545381e-13, "lam_med": 1228.1877541221845}, {"file": "ob2605010_x1d.fits", "star": "HD 37903", "mode": "E140H", "nominal": 5.3556672727536853e-14, "lam_med": 1227.5013550105527, "rec": [0.02, 0.3125, 0.5416666666666666, 0.7551020408163265, 0.8333333333333334, 0.9183673469387755]}, {"file": "ob2605020_x1d.fits", "star": "HD 37903", "mode": "E140H", "nominal": 6.188873316506284e-14, "lam_med": 1227.6464864590332}, {"file": "ob2606010_x1d.fits", "star": "HD 37061", "mode": "E140H", "nominal": 1.494867237024173e-13, "lam_med": 1227.7191977009868}, {"file": "ob2608010_x1d.fits", "star": "HD 52266", "mode": "E140H", "nominal": 1.400958420209567e-13, "lam_med": 1228.0260859508178}, {"file": "ob2609010_x1d.fits", "star": "HD 185418", "mode": "E140H", "nominal": 5.741229012822313e-14, "lam_med": 1227.476139307809}, {"file": "ob2609020_x1d.fits", "star": "HD 185418", "mode": "E140H", "nominal": 6.287100995896026e-14, "lam_med": 1227.664114516897}, {"file": "ob2610010_x1d.fits", "star": "HD 165246", "mode": "E140H", "nominal": 1.0421133933617123e-13, "lam_med": 1228.0505522151261}, {"file": "ob2611010_x1d.fits", "star": "HD 122879", "mode": "E140H", "nominal": 1.3330224076311975e-13, "lam_med": 1227.9930730122765}, {"file": "ob2612010_x1d.fits", "star": "HD 91824", "mode": "E140H", "nominal": 9.557878828298268e-14, "lam_med": 1227.9303792377316}, {"file": "ob2613010_x1d.fits", "star": "HD 201345", "mode": "E140H", "nominal": 1.426615554185073e-13, "lam_med": 1228.0573230572143}, {"file": "ob2614010_x1d.fits", "star": "HD 210809", "mode": "E140H", "nominal": 4.9679467216544134e-14, "lam_med": 1227.8494654425376}, {"file": "ob2614020_x1d.fits", "star": "HD 210809", "mode": "E140H", "nominal": 5.912492977709261e-14, "lam_med": 1227.950745179276}, {"file": "ob2657010_x1d.fits", "star": "HD 69106", "mode": "E140H", "nominal": 1.7538187061796812e-13, "lam_med": 1228.044668127185}, {"file": "ob2l01010_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 2.1036063448718887e-15, "lam_med": 2633.105823311572}, {"file": "ob2l01020_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 1.971087666054002e-15, "lam_med": 2632.1704092966274}, {"file": "ob2l01030_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 2.045867697464731e-15, "lam_med": 2631.719680315796}, {"file": "ob2l01040_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 2.0286078982874946e-15, "lam_med": 2624.1718998755605}, {"file": "ob2l01050_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 2.0539198764713976e-15, "lam_med": 2624.0662713432953, "rec": [0.0, 0.5, 0.875, 0.9166666666666666, 0.9166666666666666, 1.0]}, {"file": "ob2l02010_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 1.8876342317611185e-15, "lam_med": 2632.1527600154463}, {"file": "ob2l02020_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 1.791572445895978e-15, "lam_med": 2632.0185509985586}, {"file": "ob2l02030_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 1.8781443993660297e-15, "lam_med": 2631.533289061636}, {"file": "ob2l02040_x1d.fits", "star": "V* RW Aur", "mode": "E230M", "nominal": 1.9259726412856894e-15, "lam_med": 2631.258965689907}, {"file": "ob2l03010_x1d.fits", "star": "V* CW Tau", "mode": "E230M", "nominal": 1.8587517900088725e-15, "lam_med": 2622.9960757136914}, {"file": "ob2l04010_x1d.fits", "star": "V* DP Tau", "mode": "E230M", "nominal": 2.2561909775528473e-15, "lam_med": 2624.6473457209368}, {"file": "ob2l05010_x1d.fits", "star": "V* HN Tau", "mode": "E230M", "nominal": 2.5518479803109944e-15, "lam_med": 2624.780701473785}, {"file": "ob2l05020_x1d.fits", "star": "V* HN Tau", "mode": "E230M", "nominal": 2.424954074723718e-15, "lam_med": 2632.916762385385}, {"file": "ob2l05030_x1d.fits", "star": "V* HN Tau", "mode": "E230M", "nominal": 2.4517933690740088e-15, "lam_med": 2627.901954948788}, {"file": "ob2la3010_x1d.fits", "star": "V* CW Tau", "mode": "E230M", "nominal": 1.9220223889831433e-15, "lam_med": 2621.898010944163}, {"file": "ob2la4010_x1d.fits", "star": "V* DP Tau", "mode": "E230M", "nominal": 2.3845021937559604e-15, "lam_med": 2622.5406869599465, "rec": [0.041666666666666664, 0.5416666666666666, 0.875, 1.0, 1.0, 1.0]}, {"file": "ob2lb3010_x1d.fits", "star": "V* CW Tau", "mode": "E230M", "nominal": 2.0624873340927916e-15, "lam_med": 2622.5466982804173, "rec": [0.041666666666666664, 0.6666666666666666, 0.8333333333333334, 1.0, 1.0, 0.9583333333333334]}, {"file": "ob2lb4010_x1d.fits", "star": "V* DP Tau", "mode": "E230M", "nominal": 2.4699849413487386e-15, "lam_med": 2623.37282794407}, {"file": "ob2na1010_x1d.fits", "star": "HD 5980", "mode": "E140M", "nominal": 2.6239918595569416e-14, "lam_med": 1379.8158813186565}, {"file": "ob2na1020_x1d.fits", "star": "HD 5980", "mode": "E140M", "nominal": 2.5557000396395673e-14, "lam_med": 1379.8176489640439}, {"file": "ob3j01010_x1d.fits", "star": "HD 33133", "mode": "E140M", "nominal": 1.5070809419170313e-14, "lam_med": 1379.5268470762312}, {"file": "ob3r07050_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 8.737779067953048e-16, "lam_med": 1380.2363975621815}, {"file": "ob3r07060_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 3.2233471916641564e-15, "lam_med": 1379.6588675596379}, {"file": "ob3r08050_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 6.607207217016652e-16, "lam_med": 1380.708485660206}, {"file": "ob3r08060_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 2.8991523298963714e-15, "lam_med": 1379.523322920373}, {"file": "ob3r09050_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 5.696085429998582e-15, "lam_med": 1380.7901974559766}, {"file": "ob3r09060_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 2.861409588568303e-15, "lam_med": 1380.405804619934}, {"file": "ob3s03010_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.7169412763727124e-14, "lam_med": 1917.4349873223603}, {"file": "ob3s03020_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.6248306140606977e-14, "lam_med": 1917.02293114478}, {"file": "ob3s03030_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.6050097484757648e-14, "lam_med": 2631.080976664004}, {"file": "ob3s03040_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.5959475201065532e-14, "lam_med": 2630.723307273354}, {"file": "ob3s05010_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.494774216298302e-14, "lam_med": 1917.4892862254144}, {"file": "ob3s05020_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.5912531995758245e-14, "lam_med": 1917.0885181875897}, {"file": "ob3s05030_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.636406591850447e-14, "lam_med": 2631.2324262091715}, {"file": "ob3s05040_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.6407490285771976e-14, "lam_med": 2630.9618800143894}, {"file": "ob3s07010_x1d.fits", "star": "HD 147889", "mode": "E230M", "nominal": 2.4590195666696898e-14, "lam_med": 1917.669030742636}, {"file": "ob3s07020_x1d.fits", "star": "HD 147889", "mode": "E230M", "nominal": 2.216260135126166e-14, "lam_med": 1917.2512838268108}, {"file": "ob3s07030_x1d.fits", "star": "HD 147889", "mode": "E140M", "nominal": 1.8872540576920785e-14, "lam_med": 1379.4268201211842}, {"file": "ob3s07040_x1d.fits", "star": "HD 147889", "mode": "E140M", "nominal": 1.915570408502605e-14, "lam_med": 1379.5446912811096}, {"file": "ob3s07050_x1d.fits", "star": "HD 147889", "mode": "E230M", "nominal": 1.385621029516325e-14, "lam_med": 2631.7441976237665}, {"file": "ob3s07060_x1d.fits", "star": "HD 147889", "mode": "E230M", "nominal": 1.3832031391180544e-14, "lam_med": 2631.1504956119984}, {"file": "ob3s09010_x1d.fits", "star": "BD+63 1964", "mode": "E230M", "nominal": 2.018389019122131e-14, "lam_med": 1917.3891712546306}, {"file": "ob3s09020_x1d.fits", "star": "BD+63 1964", "mode": "E230M", "nominal": 1.947702382494479e-14, "lam_med": 2630.2133267620015}, {"file": "ob3s12010_x1d.fits", "star": "HD 281159A", "mode": "E230M", "nominal": 9.318170448200605e-15, "lam_med": 2631.6455007253817}, {"file": "ob3s12020_x1d.fits", "star": "HD 281159A", "mode": "E230M", "nominal": 9.36162499781702e-15, "lam_med": 2631.2042731860724}, {"file": "ob3s12030_x1d.fits", "star": "HD 281159A", "mode": "E230M", "nominal": 1.7319331618467192e-14, "lam_med": 1917.2967894151354}, {"file": "ob3s12040_x1d.fits", "star": "HD 281159A", "mode": "E230M", "nominal": 1.78384052310742e-14, "lam_med": 1916.8929072444753}, {"file": "ob3u01010_x1d.fits", "star": "HD 32297", "mode": "E230H", "nominal": 1.8280705932532145e-14, "lam_med": 2953.3428792605446}, {"file": "ob3u01020_x1d.fits", "star": "HD 32297", "mode": "E230H", "nominal": 1.510088779981173e-14, "lam_med": 2696.470281148215}, {"file": "ob3u01030_x1d.fits", "star": "HD 32297", "mode": "E230H", "nominal": 1.0902365689610711e-14, "lam_med": 2402.476349396559}, {"file": "ob3u01040_x1d.fits", "star": "HD 32297", "mode": "E230H", "nominal": 1.39884103254066e-14, "lam_med": 2008.2778475567302}, {"file": "ob3u01050_x1d.fits", "star": "HD 32297", "mode": "E230H", "nominal": 2.5779470346926043e-14, "lam_med": 1754.9272477596564}, {"file": "ob3u01060_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 1.51868682918604e-15, "lam_med": 1512.5068552739801}, {"file": "ob3u01070_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 8.424311101787384e-16, "lam_med": 1252.583902998078}, {"file": "ob3u02010_x1d.fits", "star": "* 18 Ori", "mode": "E140H", "nominal": 5.345409257014303e-14, "lam_med": 1254.0984024298823}, {"file": "ob3u02020_x1d.fits", "star": "* 18 Ori", "mode": "E140H", "nominal": 1.8260157303032448e-13, "lam_med": 1512.4786533021502}, {"file": "ob3u02030_x1d.fits", "star": "* 18 Ori", "mode": "E230H", "nominal": 2.470004212804395e-13, "lam_med": 1754.8906205476483}, {"file": "ob3u03010_x1d.fits", "star": "HD 32304", "mode": "E230H", "nominal": 1.0544550416908329e-14, "lam_med": 2953.2989976411322}, {"file": "ob3u03020_x1d.fits", "star": "HD 32304", "mode": "E230H", "nominal": 5.6604387910744344e-15, "lam_med": 2696.4245163475616}, {"file": "ob3u53010_x1d.fits", "star": "HD 32304", "mode": "E230H", "nominal": 1.3123089903946101e-14, "lam_med": 2952.944543671257}, {"file": "ob3u53020_x1d.fits", "star": "HD 32304", "mode": "E230H", "nominal": 6.026715413386699e-15, "lam_med": 2696.1006332676393}, {"file": "ob3z10010_x1d.fits", "star": "PG 2219+094", "mode": "E140M", "nominal": 1.524194517501232e-14, "lam_med": 1378.752135943346, "rec": [0.0, 0.47619047619047616, 0.675, 0.8717948717948718, 0.9512195121951219, 0.8780487804878049]}, {"file": "ob3z16010_x1d.fits", "star": "PG 0122+214", "mode": "E140M", "nominal": 1.1618355912734375e-14, "lam_med": 1379.8649700292553}, {"file": "ob3z18010_x1d.fits", "star": "PG 1511+367", "mode": "E140M", "nominal": 1.2389623043583394e-14, "lam_med": 1379.3232689151807}, {"file": "ob3z20010_x1d.fits", "star": "V* HN Aqr", "mode": "E140M", "nominal": 2.1434315024566803e-14, "lam_med": 1379.3183809145548}, {"file": "ob3z24010_x1d.fits", "star": "PG 0855+294", "mode": "E140M", "nominal": 1.791818822435397e-14, "lam_med": 1379.2402291598085}, {"file": "ob4501010_x1d.fits", "star": "* eps Ind", "mode": "E230H", "nominal": 7.995054889529966e-15, "lam_med": 2696.4047246661507}, {"file": "ob4507010_x1d.fits", "star": "* 61 Vir", "mode": "E230H", "nominal": 2.5389419093108082e-14, "lam_med": 2696.273509030936}, {"file": "ob4509010_x1d.fits", "star": "* bet Com", "mode": "E230H", "nominal": 6.378399896161123e-14, "lam_med": 2696.4036618382793}, {"file": "ob4514010_x1d.fits", "star": "CD-38 10980", "mode": "E230H", "nominal": 2.3245143655883966e-14, "lam_med": 2696.3203398031083}, {"file": "ob4517010_x1d.fits", "star": "* pi.01 UMa", "mode": "E230H", "nominal": 2.3382272292158667e-14, "lam_med": 2696.025547636122}, {"file": "ob4520010_x1d.fits", "star": "* 51 Peg", "mode": "E230H", "nominal": 2.010655294338071e-14, "lam_med": 2695.989145110507}, {"file": "ob4522010_x1d.fits", "star": "* tau Boo", "mode": "E230H", "nominal": 6.776470133180672e-14, "lam_med": 2696.167688784497}, {"file": "ob4523010_x1d.fits", "star": "* chi Her", "mode": "E230H", "nominal": 6.286630545236893e-14, "lam_med": 2696.12333786288}, {"file": "ob4528010_x1d.fits", "star": "HD 220140", "mode": "E230H", "nominal": 5.916643547659983e-15, "lam_med": 2696.0995402164835}, {"file": "ob4530010_x1d.fits", "star": "HD 97334", "mode": "E230H", "nominal": 1.723043945113806e-14, "lam_med": 2696.2829477302107}, {"file": "ob4537010_x1d.fits", "star": "LAWD 52", "mode": "E230H", "nominal": 6.8068484148060925e-15, "lam_med": 2696.2703968999313}, {"file": "ob4539010_x1d.fits", "star": "* lam And", "mode": "E230H", "nominal": 3.1942269178276105e-14, "lam_med": 2696.0437386720305}, {"file": "ob4540010_x1d.fits", "star": "* del Dra", "mode": "E230H", "nominal": 3.2178135264809e-14, "lam_med": 2696.2230224138175}, {"file": "ob4541010_x1d.fits", "star": "* 49 Cet", "mode": "E230H", "nominal": 6.052175398419461e-14, "lam_med": 2696.397967564184}, {"file": "ob4542010_x1d.fits", "star": "* 47 Cas", "mode": "E230H", "nominal": 6.720671742336979e-14, "lam_med": 2696.148611449461}, {"file": "ob4544010_x1d.fits", "star": "* ksi Dra", "mode": "E230H", "nominal": 8.763010030313438e-15, "lam_med": 2696.2559062678974}, {"file": "ob4545010_x1d.fits", "star": "* iot Cep", "mode": "E230H", "nominal": 1.3747644170867849e-14, "lam_med": 2696.127227773073}, {"file": "ob4546010_x1d.fits", "star": "* mu. Vel", "mode": "E230H", "nominal": 5.3383212399740785e-14, "lam_med": 2696.3816839408096, "rec": [0.034482758620689655, 0.10714285714285714, 0.10344827586206896, 0.20689655172413793, 0.5517241379310345, 0.6206896551724138]}, {"file": "ob4548010_x1d.fits", "star": "HD 149499", "mode": "E230H", "nominal": 5.087373222374259e-15, "lam_med": 2696.338441564008}, {"file": "ob4550010_x1d.fits", "star": "* bet UMi", "mode": "E230H", "nominal": 1.7566626021935915e-14, "lam_med": 2696.127170597599}, {"file": "ob4553010_x1d.fits", "star": "V* AR Lac", "mode": "E230H", "nominal": 1.504621234900341e-14, "lam_med": 2696.3344465562905}, {"file": "ob4556010_x1d.fits", "star": "HD 28911", "mode": "E230H", "nominal": 1.8020488701928625e-14, "lam_med": 2696.413194080555}, {"file": "ob4558010_x1d.fits", "star": "* 85 Tau", "mode": "E230H", "nominal": 3.321095152808707e-14, "lam_med": 2695.9874685417144}, {"file": "ob4559010_x1d.fits", "star": "V* IK Peg", "mode": "E230H", "nominal": 5.422408593630217e-14, "lam_med": 2696.399208845378}, {"file": "ob4562010_x1d.fits", "star": "GD 71", "mode": "E230H", "nominal": 6.506428890237483e-15, "lam_med": 2695.9763507345797}, {"file": "ob4570010_x1d.fits", "star": "EC 20048-6034", "mode": "E230H", "nominal": 6.4855652098056344e-15, "lam_med": 2696.361898873192}, {"file": "ob4572010_x1d.fits", "star": "HD 43940", "mode": "E230H", "nominal": 4.6787662122279555e-14, "lam_med": 2696.1921997792656}, {"file": "ob4573010_x1d.fits", "star": "* rho Oct", "mode": "E230H", "nominal": 5.80275257442081e-14, "lam_med": 2696.295758291959}, {"file": "ob4574010_x1d.fits", "star": "RX J1629.0+7804", "mode": "E230H", "nominal": 4.675793097093422e-15, "lam_med": 2696.1302711800504}, {"file": "ob4575010_x1d.fits", "star": "* alf Cas", "mode": "E230H", "nominal": 3.282854446844038e-14, "lam_med": 2696.3476341145374}, {"file": "ob4579010_x1d.fits", "star": "HD 149382", "mode": "E230H", "nominal": 6.660670456873637e-14, "lam_med": 2696.3020716286774}, {"file": "ob4580010_x1d.fits", "star": "RX J0623.2-3741", "mode": "E230H", "nominal": 1.1006153130326505e-14, "lam_med": 2696.1251328660446}, {"file": "ob4582010_x1d.fits", "star": "* R Ara", "mode": "E230H", "nominal": 6.445293616003261e-14, "lam_med": 2696.148489406148}, {"file": "ob4587010_x1d.fits", "star": "V* IX Vel", "mode": "E230H", "nominal": 3.1942447630666843e-14, "lam_med": 2696.2425813775167}, {"file": "ob4589010_x1d.fits", "star": "* 9 Cha", "mode": "E230H", "nominal": 5.343472070034657e-14, "lam_med": 2696.238528847197, "rec": [0.0, 0.10344827586206896, 0.5862068965517241, 0.9285714285714286, 1.0, 1.0]}, {"file": "ob4590010_x1d.fits", "star": "HD 141569", "mode": "E230H", "nominal": 4.487183317571842e-14, "lam_med": 2696.368367254664}, {"file": "ob6b18020_x1d.fits", "star": "V* CV Cha", "mode": "E230M", "nominal": 2.3682357597457257e-15, "lam_med": 2488.9554748626406}, {"file": "ob6b18030_x1d.fits", "star": "V* CV Cha", "mode": "E140M", "nominal": 6.305821850961476e-16, "lam_med": 1380.7536650245127}, {"file": "ob6b18040_x1d.fits", "star": "V* CV Cha", "mode": "E140M", "nominal": 8.556864434790148e-16, "lam_med": 1380.2781084438661}, {"file": "ob6b20030_x1d.fits", "star": "CD-24 12689", "mode": "E230M", "nominal": 2.490923830877574e-15, "lam_med": 2488.386599913456}, {"file": "ob6b20040_x1d.fits", "star": "CD-24 12689", "mode": "E140M", "nominal": 2.2157160001214094e-16, "lam_med": 1377.878622944561}, {"file": "ob6b20050_x1d.fits", "star": "CD-24 12689", "mode": "E140M", "nominal": 5.516947080135606e-16, "lam_med": 1377.5221852413756}, {"file": "ob6b21020_x1d.fits", "star": "V* AK Sco", "mode": "E230M", "nominal": 1.861258631597278e-14, "lam_med": 1917.2452552747295}, {"file": "ob6b21030_x1d.fits", "star": "V* AK Sco", "mode": "E230M", "nominal": 6.822703279486076e-15, "lam_med": 2630.3682514703196}, {"file": "ob6b21040_x1d.fits", "star": "V* AK Sco", "mode": "E140M", "nominal": 7.851583858462569e-16, "lam_med": 1379.8583300297823}, {"file": "ob6b22030_x1d.fits", "star": "TWA 3A", "mode": "E230M", "nominal": 3.138555426193874e-15, "lam_med": 2488.7812053288612}, {"file": "ob6b23030_x1d.fits", "star": "CPD-68 1894", "mode": "E230M", "nominal": 3.1326174339375098e-15, "lam_med": 2488.5794817756105}, {"file": "ob6b23040_x1d.fits", "star": "CPD-68 1894", "mode": "E140M", "nominal": 1.1958488739750097e-15, "lam_med": 1380.3666557978881}, {"file": "ob6b23050_x1d.fits", "star": "CPD-68 1894", "mode": "E140M", "nominal": 1.3874208107959897e-15, "lam_med": 1380.5959366839033}, {"file": "ob6b25020_x1d.fits", "star": "V* DX Cha", "mode": "E230M", "nominal": 5.527862147051834e-14, "lam_med": 2032.723044010529, "rec": [0.05263157894736842, 0.05263157894736842, 0.13157894736842105, 0.2631578947368421, 0.39473684210526316, 0.6842105263157895]}, {"file": "ob6b25030_x1d.fits", "star": "V* DX Cha", "mode": "E230H", "nominal": 3.500708258399007e-14, "lam_med": 2653.7654576553323}, {"file": "ob6b25040_x1d.fits", "star": "V* DX Cha", "mode": "E230H", "nominal": 4.7555743448756884e-14, "lam_med": 2907.637956797083}, {"file": "ob6b25050_x1d.fits", "star": "V* DX Cha", "mode": "E140M", "nominal": 6.2788051298331725e-15, "lam_med": 1379.9426435213668}, {"file": "ob6b33030_x1d.fits", "star": "2MASS J04390163+2336029", "mode": "E230M", "nominal": 3.326963967359483e-15, "lam_med": 2488.902781711886}, {"file": "ob6b34030_x1d.fits", "star": "V* UX Tau A", "mode": "E230M", "nominal": 3.175646381573137e-15, "lam_med": 2488.604942722188}, {"file": "ob6b54030_x1d.fits", "star": "V* UX Tau A", "mode": "E230M", "nominal": 2.5364119099223096e-15, "lam_med": 2488.8491798453997}, {"file": "ob6ba0030_x1d.fits", "star": "V* FM Tau", "mode": "E230M", "nominal": 2.819806856405691e-15, "lam_med": 2489.04955999843}, {"file": "ob6ba1030_x1d.fits", "star": "V* GM Aur", "mode": "E230M", "nominal": 3.2315888794610218e-15, "lam_med": 2489.0687271715474}, {"file": "ob6ba2030_x1d.fits", "star": "V* DM Tau", "mode": "E230M", "nominal": 3.024340719505294e-15, "lam_med": 2488.898028704135}, {"file": "ob6ba3030_x1d.fits", "star": "EM* LkCa 15", "mode": "E230M", "nominal": 5.939523243023345e-15, "lam_med": 2488.4381672908057}, {"file": "ob6ba4030_x1d.fits", "star": "V* DN Tau", "mode": "E230M", "nominal": 2.8800668740314425e-15, "lam_med": 2489.1108603641987}, {"file": "ob6ba5030_x1d.fits", "star": "V* IP Tau", "mode": "E230M", "nominal": 2.837196892185279e-15, "lam_med": 2488.3700659645715}, {"file": "ob6ba6030_x1d.fits", "star": "V* V836 Tau", "mode": "E230M", "nominal": 3.0990814632176623e-15, "lam_med": 2488.7561801764678, "rec": [0.0, 0.4583333333333333, 0.92, 1.0, 1.0, 0.96]}, {"file": "ob6ba7030_x1d.fits", "star": "V* AA Tau", "mode": "E230M", "nominal": 3.0243252044725878e-15, "lam_med": 2488.5237269205}, {"file": "ob6ba8030_x1d.fits", "star": "V* DE Tau", "mode": "E230M", "nominal": 2.9672822374288266e-15, "lam_med": 2488.8398868592267}, {"file": "ob6ba9030_x1d.fits", "star": "V* HN Tau", "mode": "E230M", "nominal": 5.190376921416482e-15, "lam_med": 2488.4242926442466}, {"file": "ob6bb0030_x1d.fits", "star": "V* CE Ant", "mode": "E230M", "nominal": 2.5798437197925022e-15, "lam_med": 2488.5937102389976}, {"file": "ob6bb1030_x1d.fits", "star": "V* SU Aur", "mode": "E230M", "nominal": 3.5123083905914713e-15, "lam_med": 2488.683353470331}, {"file": "ob6bb2030_x1d.fits", "star": "V* DK Tau A", "mode": "E230M", "nominal": 4.7139442667816134e-15, "lam_med": 2488.3731563883566, "rec": [0.0, 0.4, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "ob6bb4030_x1d.fits", "star": "V* DR Tau", "mode": "E230M", "nominal": 4.870991928093882e-15, "lam_med": 2488.685659913318}, {"file": "ob6bb5030_x1d.fits", "star": "V* RW Aur A", "mode": "E230M", "nominal": 3.7978232622716725e-15, "lam_med": 2488.448957340277}, {"file": "ob6bb6030_x1d.fits", "star": "V* CS Cha B", "mode": "E230M", "nominal": 2.5406871258251102e-15, "lam_med": 2488.655539929032}, {"file": "ob6bb7030_x1d.fits", "star": "V* ET Cha", "mode": "E230M", "nominal": 4.385998795956115e-15, "lam_med": 2488.678082078193}, {"file": "ob6bb8030_x1d.fits", "star": "HD 282630", "mode": "E230M", "nominal": 2.8479105861015437e-15, "lam_med": 2488.652894677371}, {"file": "ob6bb9030_x1d.fits", "star": "WRAY 16-203", "mode": "E230M", "nominal": 2.5944613386561673e-15, "lam_med": 2488.7359149989597}, {"file": "ob6bc2030_x1d.fits", "star": "V* EG Cha", "mode": "E230M", "nominal": 4.903521297864654e-15, "lam_med": 2488.619267348132}, {"file": "ob6bc4030_x1d.fits", "star": "V* EP Cha", "mode": "E230M", "nominal": 5.742828926886142e-15, "lam_med": 2488.685595160324}, {"file": "ob6bc6030_x1d.fits", "star": "V* V397 Aur", "mode": "E230M", "nominal": 2.719885724710755e-15, "lam_med": 2488.36618706636}, {"file": "ob6bc7030_x1d.fits", "star": "EM* LkCa 4", "mode": "E230M", "nominal": 3.0039157472135233e-15, "lam_med": 2488.553767726737}, {"file": "ob6bc9030_x1d.fits", "star": "CD-29 8887", "mode": "E230M", "nominal": 5.792485758744948e-15, "lam_med": 2489.0587642957157}, {"file": "ob6ja1010_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7272383872776792e-14, "lam_med": 2633.1961791403482}, {"file": "ob6ja1020_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7774880206235472e-14, "lam_med": 2633.152827733018}, {"file": "ob6ja1030_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7524592424953806e-14, "lam_med": 2633.14028219978}, {"file": "ob6ja1040_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7578574008501856e-14, "lam_med": 2633.09695866851}, {"file": "ob6ja1050_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.768233274005632e-14, "lam_med": 2633.1177341330895}, {"file": "ob6ja1060_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7634830871494334e-14, "lam_med": 2632.970224369649}, {"file": "ob6ja1070_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.766626135696266e-14, "lam_med": 2633.147112379283}, {"file": "ob6ja1080_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7776890094404677e-14, "lam_med": 2633.1045162801934}, {"file": "ob6ja1090_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.802441280767268e-14, "lam_med": 2632.9256949289024}, {"file": "ob6ja10a0_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.804794672222474e-14, "lam_med": 2632.712749128439}, {"file": "ob6ja2010_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7034913889839356e-14, "lam_med": 2631.9336044509982}, {"file": "ob6ja2020_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7522137852478696e-14, "lam_med": 2631.814869474285}, {"file": "ob6ja2030_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7235824088315935e-14, "lam_med": 2632.619664713894}, {"file": "ob6ja2040_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7273078213728787e-14, "lam_med": 2632.5173854890527}, {"file": "ob6ja2050_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7545568544182606e-14, "lam_med": 2632.9832925565447}, {"file": "ob6ja2060_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7421191927295763e-14, "lam_med": 2632.938609904202, "rec": [0.03255813953488372, 0.09345794392523364, 0.2757009345794392, 0.4719626168224299, 0.7638888888888888, 0.8685446009389671]}, {"file": "ob6ja2070_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7504086554201676e-14, "lam_med": 2632.961740013281}, {"file": "ob6ja2080_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7451930396750895e-14, "lam_med": 2632.8991603781487}, {"file": "ob6ja2090_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.781223914753834e-14, "lam_med": 2632.9755482294936}, {"file": "ob6ja20a0_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.774359629980188e-14, "lam_med": 2632.9321938439853}, {"file": "ob6ja3010_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.750999195863291e-14, "lam_med": 2632.723353650908}, {"file": "ob6ja3020_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.806463831449308e-14, "lam_med": 2632.589877119722}, {"file": "ob6ja3030_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7144977012861356e-14, "lam_med": 2629.9487746693876}, {"file": "ob6ja3040_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7326102017625948e-14, "lam_med": 2629.821025596279}, {"file": "ob6ja3050_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7483099449058396e-14, "lam_med": 2629.948256065561}, {"file": "ob6ja3060_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7535193526776968e-14, "lam_med": 2629.897242489704}, {"file": "ob6ja3070_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.765790660830286e-14, "lam_med": 2630.8730360509257, "rec": [0.0, 0.08333333333333333, 0.25, 0.5217391304347826, 0.7916666666666666, 0.9166666666666666]}, {"file": "ob6ja3080_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7807866581641815e-14, "lam_med": 2630.8053412869876}, {"file": "ob6ja3090_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.803154703306898e-14, "lam_med": 2630.5937027739687}, {"file": "ob6ja30a0_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.8056408937596463e-14, "lam_med": 2630.551126875527}, {"file": "ob6ja4010_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.7212950182551615e-14, "lam_med": 2633.1695951909687}, {"file": "ob6ja4020_x1d.fits", "star": "HD 209458", "mode": "E230M", "nominal": 2.858554441884541e-14, "lam_med": 2633.124836821973}, {"file": "ob7501010_x1d.fits", "star": "V* V2105 Oph", "mode": "E230M", "nominal": 7.054258445306078e-15, "lam_med": 2630.907900791809}, {"file": "ob7502020_x1d.fits", "star": "* chi Peg", "mode": "E230M", "nominal": 6.321757242353854e-15, "lam_med": 2616.0327668846767, "rec": [0.043478260869565216, 0.5652173913043478, 0.782608695652174, 1.0, 1.0, 1.0]}, {"file": "ob8709010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6077911970996972e-14, "lam_med": 2257.800348867667}, {"file": "ob8709020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5965258902552607e-13, "lam_med": 1380.7083241222704}, {"file": "ob8709030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8228885887405679e-13, "lam_med": 1917.4568261070765}, {"file": "ob8709040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.012648454187378e-14, "lam_med": 1414.5926469813514}, {"file": "ob8709050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.498494248001886e-14, "lam_med": 2632.858052642086}, {"file": "ob8710010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.56461683484722e-14, "lam_med": 2258.0149269011004}, {"file": "ob8710020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.607767476911283e-13, "lam_med": 1380.4611710835816}, {"file": "ob8710030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8457590045219594e-13, "lam_med": 1917.62646511906, "rec": [0.0, 0.41025641025641024, 0.8, 1.0, 0.975, 1.0]}, {"file": "ob8710040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.292055906378935e-14, "lam_med": 1415.1412337064494}, {"file": "ob8710050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.4398291238419986e-14, "lam_med": 2632.4904034339124}, {"file": "ob87x1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5599988833776003e-14, "lam_med": 2257.9540945187528}, {"file": "ob87x1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.602489960421192e-13, "lam_med": 1380.3041795505937}, {"file": "ob87x1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8412481142092565e-13, "lam_med": 1917.546186806051}, {"file": "ob87x1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.234986572747043e-14, "lam_med": 1414.9961267242113}, {"file": "ob87x1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.4408577606424776e-14, "lam_med": 2633.0285094655155}, {"file": "ob8w01010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.27561219104818e-15, "lam_med": 1380.2483336176306}, {"file": "ob8w01020_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 7.009040314186812e-16, "lam_med": 1379.0811757612291}, {"file": "ob8w01030_x1d.fits", "star": "* alf Cen B", "mode": "E230M", "nominal": 1.7497811072154413e-14, "lam_med": 2033.5226105948002}, {"file": "ob8w01040_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 7.844276165154967e-15, "lam_med": 2507.65595003026}, {"file": "ob8w01050_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 1.916273947922831e-14, "lam_med": 2744.3120289807875, "rec": [0.037037037037037035, 0.6981132075471698, 0.9230769230769231, 1.0, 1.0, 1.0]}, {"file": "obb001010_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 5.640912037837924e-14, "lam_med": 1254.026917034793}, {"file": "obb001020_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 3.878973072100047e-14, "lam_med": 1448.584247194422, "rec": [0.05555555555555555, 0.6052631578947368, 0.8918918918918919, 0.8857142857142857, 0.9736842105263158, 0.8421052631578947]}, {"file": "obb001030_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 4.621516697697575e-14, "lam_med": 1373.7259971002804}, {"file": "obb001040_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 5.620049873798439e-14, "lam_med": 1228.5633833354145}, {"file": "obb001050_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 4.195416609634773e-14, "lam_med": 1414.9655097325563}, {"file": "obb001060_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 4.7620641516856706e-14, "lam_med": 1330.4787830726164}, {"file": "obb001070_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 3.011801751183017e-14, "lam_med": 1512.1915839014935}, {"file": "obb001080_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 3.237291104921796e-14, "lam_med": 1553.8080143623265}, {"file": "obb001090_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 5.2611316441661757e-14, "lam_med": 1288.9326415588366}, {"file": "obb0010a0_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 3.856672762053646e-14, "lam_med": 1477.8677261855992, "rec": [0.027777777777777776, 0.7142857142857143, 0.9722222222222222, 0.8918918918918919, 0.972972972972973, 0.9444444444444444]}, {"file": "obb0010b0_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 4.0176071559201653e-14, "lam_med": 1584.2985359063546}, {"file": "obb002010_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 4.719387626159365e-14, "lam_med": 1856.6953349116084}, {"file": "obb002020_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 3.799913362628912e-14, "lam_med": 1962.6330221940254}, {"file": "obb002030_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 4.405170802962547e-14, "lam_med": 1906.882549448997}, {"file": "obb002040_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 3.569186532075263e-14, "lam_med": 2008.4687423049702}, {"file": "obb002050_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 3.305441933915164e-14, "lam_med": 2061.1722346091765}, {"file": "obb002060_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 2.1128952998674398e-14, "lam_med": 2257.912389375338}, {"file": "obb002070_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 2.7257135261645107e-14, "lam_med": 2109.900628227596}, {"file": "obb002080_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 2.531360111217341e-14, "lam_med": 2157.0807553888694}, {"file": "obb002090_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 5.93620532959451e-14, "lam_med": 1754.3600386960027}, {"file": "obb0020a0_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 2.0523584336948373e-14, "lam_med": 2206.3867897128234}, {"file": "obb0020b0_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 5.738837241017035e-14, "lam_med": 1807.4898078468027}, {"file": "obb0020c0_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 2.1864086329177965e-14, "lam_med": 2301.7745291027086}, {"file": "obb0020d0_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 2.0617499992001367e-14, "lam_med": 2351.3560798179938}, {"file": "obb004010_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 3.871331832462559e-14, "lam_med": 2488.8091994359406}, {"file": "obb004020_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 8.546540114117407e-14, "lam_med": 2032.6713794300806}, {"file": "obb004030_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 6.250066204671823e-14, "lam_med": 2196.0394400148934}, {"file": "obb004040_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 5.03281565559875e-14, "lam_med": 2332.324475748742}, {"file": "obb004050_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 1.1091693231966641e-13, "lam_med": 1917.4585727381425}, {"file": "obb004060_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 3.407820824837733e-14, "lam_med": 2628.632050510122}, {"file": "obb004070_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 9.62008349215467e-14, "lam_med": 1380.0243139916242}, {"file": "obb004080_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.9190719298395616e-14, "lam_med": 2402.177086521191}, {"file": "obb004090_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.1638599553312338e-14, "lam_med": 3016.221375611811}, {"file": "obb0040a0_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 1.0042676561134306e-13, "lam_med": 1380.4702824969127}, {"file": "obb0040b0_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 4.510544380460185e-14, "lam_med": 1379.5200987777125}, {"file": "obb005010_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 3.5510488984345717e-14, "lam_med": 1227.569909238603}, {"file": "obb005020_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 2.987760179170986e-14, "lam_med": 1227.4566567367278}, {"file": "obb005030_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 2.315436961405159e-14, "lam_med": 1330.117006014345}, {"file": "obb005040_x1d.fits", "star": "BD+52 913", "mode": "E140H", "nominal": 2.3175292061720456e-14, "lam_med": 1330.1775067180051}, {"file": "obb053010_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.3667273162344962e-14, "lam_med": 2556.0702380038265}, {"file": "obb053020_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.2867040088943713e-14, "lam_med": 2608.6334036570765}, {"file": "obb053030_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.3741159033777187e-14, "lam_med": 2653.675334134903}, {"file": "obb053040_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.7484253142471715e-14, "lam_med": 2459.207731175472}, {"file": "obb053050_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.2888344197076482e-14, "lam_med": 2696.061449337224}, {"file": "obb053060_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.1276769989121417e-14, "lam_med": 2744.0450163944897}, {"file": "obb053070_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 9.908993749916283e-15, "lam_med": 2857.72380458116}, {"file": "obb053080_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.3944889526418804e-14, "lam_med": 2507.491671412678}, {"file": "obb053090_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 9.980409296198512e-15, "lam_med": 2907.3965899754726}, {"file": "obb0530a0_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.2036581459926818e-14, "lam_med": 2793.52189006954}, {"file": "obb0530b0_x1d.fits", "star": "BD+52 913", "mode": "E230H", "nominal": 1.0942684217624902e-14, "lam_med": 2952.853388686519}, {"file": "obdc01010_x1d.fits", "star": "SK 155", "mode": "E140H", "nominal": 1.1817965475052243e-14, "lam_med": 1583.8794723283936}, {"file": "obdc01020_x1d.fits", "star": "SK 155", "mode": "E140H", "nominal": 9.658045402481261e-15, "lam_med": 1583.8792061970835, "rec": [0.0, 0.2903225806451613, 0.65625, 0.78125, 0.8, 0.8064516129032258]}, {"file": "obeb01010_x1d.fits", "star": "HD 6655", "mode": "E230M", "nominal": 6.646048948491102e-15, "lam_med": 2633.0140653699873}, {"file": "obg101010_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 3.2026109005640094e-14, "lam_med": 1380.3126850972076}, {"file": "obg101020_x1d.fits", "star": "V* T Pyx", "mode": "E230M", "nominal": 8.833894796860617e-14, "lam_med": 1917.338062025634}, {"file": "obg101030_x1d.fits", "star": "V* T Pyx", "mode": "E230H", "nominal": 3.37812158329824e-14, "lam_med": 2743.975224990949}, {"file": "obg103010_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 2.0592982432213227e-14, "lam_med": 1380.3269561469235}, {"file": "obg103020_x1d.fits", "star": "V* T Pyx", "mode": "E230M", "nominal": 2.988654534257315e-14, "lam_med": 1917.4843863353494}, {"file": "obg103040_x1d.fits", "star": "V* T Pyx", "mode": "E230M", "nominal": 1.7024925692544652e-14, "lam_med": 2630.723454154456}, {"file": "obg199010_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 7.341088722694513e-14, "lam_med": 1380.359828437781}, {"file": "obg199020_x1d.fits", "star": "V* T Pyx", "mode": "E230M", "nominal": 8.790762258041726e-14, "lam_med": 1917.3323951321806}, {"file": "obg199030_x1d.fits", "star": "V* T Pyx", "mode": "E230H", "nominal": 5.6735815446499036e-14, "lam_med": 2744.0589009099567}, {"file": "obg608010_x1d.fits", "star": "HD 29647", "mode": "E230M", "nominal": 5.12132861259146e-15, "lam_med": 2633.080644455482}, {"file": "obg608020_x1d.fits", "star": "HD 29647", "mode": "E230M", "nominal": 1.118579516853412e-14, "lam_med": 1917.5404997810556}, {"file": "obg609010_x1d.fits", "star": "HD 169454", "mode": "E140M", "nominal": 8.375403198256915e-15, "lam_med": 1378.9967237764931}, {"file": "obgd04010_x1d.fits", "star": "* eta UMa", "mode": "E140H", "nominal": 4.455053875761756e-11, "lam_med": 1330.6024780074065}, {"file": "obgd04020_x1d.fits", "star": "* eta UMa", "mode": "E140H", "nominal": 3.24677926332932e-11, "lam_med": 1585.098821589778}, {"file": "obgh03010_x1d.fits", "star": "BD-07 4003", "mode": "E140M", "nominal": 3.3840949456461783e-18, "lam_med": 1375.1820419307933}, {"file": "obgh03020_x1d.fits", "star": "BD-07 4003", "mode": "E230H", "nominal": 6.269880688831847e-15, "lam_med": 2695.924843180209}, {"file": "obgh05010_x1d.fits", "star": "BD-07 4003", "mode": "E140M", "nominal": 2.26396761740928e-18, "lam_med": 1379.8492748480553}, {"file": "obgh05020_x1d.fits", "star": "BD-07 4003", "mode": "E230H", "nominal": 6.6224516256218455e-15, "lam_med": 2696.0317222651997}, {"file": "obgi01010_x1d.fits", "star": "HD 204961", "mode": "E140M", "nominal": 7.503607692682103e-16, "lam_med": 1379.524126446323}, {"file": "obgi01020_x1d.fits", "star": "HD 204961", "mode": "E230H", "nominal": 2.3669182285903376e-15, "lam_med": 2696.256244532652}, {"file": "obgi02010_x1d.fits", "star": "HD 156384C", "mode": "E140M", "nominal": 1.1808869641303166e-15, "lam_med": 1377.8453303285012}, {"file": "obgi02020_x1d.fits", "star": "HD 156384C", "mode": "E230H", "nominal": 2.520547734995201e-15, "lam_med": 2695.9620302784315}, {"file": "obgu16010_x1d.fits", "star": "[CTH90] NGC 4151 C04", "mode": "E140M", "nominal": 1.3232928311069215e-14, "lam_med": 1379.7991965303154}, {"file": "obgu16020_x1d.fits", "star": "[CTH90] NGC 4151 C04", "mode": "E140M", "nominal": 1.2135585184767202e-14, "lam_med": 1379.766189747705}, {"file": "obh501010_x1d.fits", "star": "HD 27561", "mode": "E230M", "nominal": 2.1611134443660258e-14, "lam_med": 2633.18623982346}, {"file": "obh501020_x1d.fits", "star": "HD 27561", "mode": "E230M", "nominal": 1.6816925173368415e-14, "lam_med": 2633.1933508329425}, {"file": "obh502010_x1d.fits", "star": "HD 26345", "mode": "E230M", "nominal": 2.060125882878382e-14, "lam_med": 2633.132852698288}, {"file": "obh502020_x1d.fits", "star": "HD 26345", "mode": "E230M", "nominal": 1.596646030359895e-14, "lam_med": 2633.165533488368}, {"file": "obi401010_x1d.fits", "star": "SK -65 47", "mode": "E140M", "nominal": 1.7533541530289932e-14, "lam_med": 1380.1345517502623}, {"file": "obi402010_x1d.fits", "star": "SK -67 105", "mode": "E140M", "nominal": 1.4972620553215802e-14, "lam_med": 1380.0088557654392}, {"file": "obi403010_x1d.fits", "star": "SK -67 111", "mode": "E140M", "nominal": 1.597346315363761e-14, "lam_med": 1379.9181001597126}, {"file": "obi404010_x1d.fits", "star": "HD 270145", "mode": "E140M", "nominal": 1.4037179847936508e-14, "lam_med": 1379.8747539413098}, {"file": "obi405010_x1d.fits", "star": "SK -69 50", "mode": "E140M", "nominal": 1.0129078021573101e-14, "lam_med": 1379.8131121245688}, {"file": "obi406010_x1d.fits", "star": "HD 269702", "mode": "E140M", "nominal": 1.9620883748789537e-14, "lam_med": 1380.4992155477648}, {"file": "obi407010_x1d.fits", "star": "SK -71 41", "mode": "E140M", "nominal": 8.909570394848137e-15, "lam_med": 1379.8090908022812}, {"file": "obie08010_x1d.fits", "star": "HD 191877", "mode": "E140H", "nominal": 1.8677833921668943e-13, "lam_med": 1253.9590806388387}, {"file": "obie09010_x1d.fits", "star": "BD+39 3226", "mode": "E140H", "nominal": 6.890357189199828e-14, "lam_med": 1253.7497239752079, "rec": [0.0, 0.4444444444444444, 0.6666666666666666, 0.6304347826086957, 0.7777777777777778, 0.8888888888888888]}, {"file": "obie11010_x1d.fits", "star": "HD 41161", "mode": "E140H", "nominal": 1.5091434588621392e-13, "lam_med": 1254.2286400531013}, {"file": "obie12010_x1d.fits", "star": "HD 53975", "mode": "E140H", "nominal": 2.714031112918118e-13, "lam_med": 1254.0909146636752}, {"file": "obie15010_x1d.fits", "star": "HD 90087", "mode": "E140H", "nominal": 5.721430119155129e-14, "lam_med": 1254.240328475324}, {"file": "obik01010_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 1.1657219532478181e-14, "lam_med": 1289.6276024553633}, {"file": "obik01020_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 9.297069373905566e-15, "lam_med": 1289.3870614921939}, {"file": "obik01030_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 9.294923566192613e-15, "lam_med": 1289.380016382064}, {"file": "obik01040_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 1.1525700511163712e-14, "lam_med": 1289.4381055023898}, {"file": "obik01050_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 9.457283791523947e-15, "lam_med": 1289.4196025275046}, {"file": "obik02010_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 1.4080978098922229e-14, "lam_med": 1330.4958217222963}, {"file": "obik02020_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 1.11087106931554e-14, "lam_med": 1330.2139611156836}, {"file": "obik02030_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 1.1072272745965805e-14, "lam_med": 1330.302776844825}, {"file": "obik02040_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 1.3674493370627126e-14, "lam_med": 1330.336670515062}, {"file": "obik02050_x1d.fits", "star": "HD 62542", "mode": "E140H", "nominal": 1.1137148794259831e-14, "lam_med": 1330.3243417652152}, {"file": "obik03010_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 2.925668299047223e-14, "lam_med": 1906.7386335047922}, {"file": "obik03020_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 2.3236233379749045e-14, "lam_med": 1906.8026882610482}, {"file": "obik03030_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 2.3117422620163178e-14, "lam_med": 1906.822559549172}, {"file": "obik04010_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 1.588627618532846e-14, "lam_med": 2257.753461405835}, {"file": "obik04020_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 1.2540168035991303e-14, "lam_med": 2257.7681775331303}, {"file": "obik04030_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 1.2507276972883099e-14, "lam_med": 2257.765240741077}, {"file": "obik04040_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 1.4950916768491814e-14, "lam_med": 2257.7117718945156}, {"file": "obik04050_x1d.fits", "star": "HD 62542", "mode": "E230H", "nominal": 1.2301842076051967e-14, "lam_med": 2257.729707150009}, {"file": "obil01010_x1d.fits", "star": "HD 191612", "mode": "E140M", "nominal": 7.359938805025478e-14, "lam_med": 1379.640480564713}, {"file": "obil01020_x1d.fits", "star": "HD 191612", "mode": "E230M", "nominal": 1.1159411514601986e-13, "lam_med": 2632.943685226775}, {"file": "obil02010_x1d.fits", "star": "HD 191612", "mode": "E140M", "nominal": 7.695347940958952e-14, "lam_med": 1380.5957802523983}, {"file": "obil02020_x1d.fits", "star": "HD 191612", "mode": "E230M", "nominal": 1.1251081933548244e-13, "lam_med": 2632.40336545589}, {"file": "obil03010_x1d.fits", "star": "HD 191612", "mode": "E140M", "nominal": 7.600447142527367e-14, "lam_med": 1380.4268318272912}, {"file": "obil03020_x1d.fits", "star": "HD 191612", "mode": "E230M", "nominal": 1.1083695457980592e-13, "lam_med": 2633.081346706482}, {"file": "obil04010_x1d.fits", "star": "HD 191612", "mode": "E140M", "nominal": 7.399666991446922e-14, "lam_med": 1380.4296521256915}, {"file": "obil04020_x1d.fits", "star": "HD 191612", "mode": "E230M", "nominal": 1.1070144207308876e-13, "lam_med": 2632.8082934822287}, {"file": "obil05010_x1d.fits", "star": "HD 108", "mode": "E140M", "nominal": 1.8071628194634422e-13, "lam_med": 1380.6416170425964}, {"file": "obil05020_x1d.fits", "star": "HD 108", "mode": "E230M", "nominal": 2.062296759898215e-13, "lam_med": 2632.9202248811653}, {"file": "obj401010_x1d.fits", "star": "HD 271791", "mode": "E230M", "nominal": 6.062627585756913e-15, "lam_med": 2632.9845470043188}, {"file": "obj401020_x1d.fits", "star": "HD 271791", "mode": "E230M", "nominal": 5.148434307873193e-15, "lam_med": 2633.016062923395}, {"file": "obj401030_x1d.fits", "star": "HD 271791", "mode": "E230M", "nominal": 5.8152247066820706e-15, "lam_med": 2632.9953235168414}, {"file": "obj402010_x1d.fits", "star": "HD 271791", "mode": "E230M", "nominal": 1.0354615004494497e-14, "lam_med": 1917.4744089491242}, {"file": "obj402020_x1d.fits", "star": "HD 271791", "mode": "E230M", "nominal": 9.715971968785564e-15, "lam_med": 1917.4839514956686}, {"file": "obj452010_x1d.fits", "star": "HD 271791", "mode": "E230M", "nominal": 2.752038152473571e-14, "lam_med": 1917.456967634308}, {"file": "obj452020_x1d.fits", "star": "HD 271791", "mode": "E230M", "nominal": 2.973522247017926e-14, "lam_med": 1917.4553429402022}, {"file": "objq01010_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.0057186084121923e-14, "lam_med": 2631.5930014605483, "rec": [0.0, 0.2916666666666667, 0.375, 0.6666666666666666, 0.7083333333333334, 0.8695652173913043]}, {"file": "objq01020_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.415238764001958e-15, "lam_med": 2631.349419968733}, {"file": "objq01030_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 9.64388442132037e-15, "lam_med": 2632.6380100478}, {"file": "objq01040_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.891194833786333e-15, "lam_med": 2632.686039958264, "rec": [0.0, 0.125, 0.2916666666666667, 0.3333333333333333, 0.4583333333333333, 0.625]}, {"file": "objq01050_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.935930527055357e-15, "lam_med": 2632.68720540256}, {"file": "objq02010_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.0121536426074895e-14, "lam_med": 2630.8762841292382}, {"file": "objq02020_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.44679661836088e-15, "lam_med": 2630.7166425987543}, {"file": "objq02030_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 9.586419800131889e-15, "lam_med": 2630.233640087234}, {"file": "objq02040_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.629201719544269e-15, "lam_med": 2630.159605023596}, {"file": "objq02050_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.602575642615144e-15, "lam_med": 2630.1437333447448}, {"file": "objq03010_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.0379030197417475e-14, "lam_med": 2630.2381127683707, "rec": [0.0, 0.13043478260869565, 0.2916666666666667, 0.43478260869565216, 0.5, 0.7916666666666666]}, {"file": "objq03020_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.751107633433856e-15, "lam_med": 2630.112873209036}, {"file": "objq03030_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 9.433327610366025e-15, "lam_med": 2629.7224993376067}, {"file": "objq03040_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.626469502849797e-15, "lam_med": 2629.671028311129}, {"file": "objq03050_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 7.6819055784068e-15, "lam_med": 2629.633353700062, "rec": [0.043478260869565216, 0.125, 0.2608695652173913, 0.2916666666666667, 0.7916666666666666, 0.75]}, {"file": "objq04010_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.0261351612795805e-14, "lam_med": 2632.6884778458566}, {"file": "objq04020_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 7.96914891620736e-15, "lam_med": 2632.743401866125}, {"file": "objq04030_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 9.784810321504802e-15, "lam_med": 2631.6096188853}, {"file": "objq04040_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 7.986809052647822e-15, "lam_med": 2631.5363962705705}, {"file": "objq04050_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 8.036642686713504e-15, "lam_med": 2631.4881506213746}, {"file": "objq05010_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.0059389802179476e-14, "lam_med": 2631.3549551011256}, {"file": "objq05020_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 7.834094644513308e-15, "lam_med": 2631.2999799333966}, {"file": "objq05030_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 9.688432451203596e-15, "lam_med": 2632.6576096136914}, {"file": "objq05040_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 7.908854611726347e-15, "lam_med": 2632.687289038974}, {"file": "objq05050_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 7.85103352593187e-15, "lam_med": 2632.7102921222677, "rec": [0.041666666666666664, 0.125, 0.17391304347826086, 0.375, 0.34782608695652173, 0.5]}, {"file": "objq06010_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.024068327111548e-14, "lam_med": 2632.6479069679663}, {"file": "objq06020_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 8.140944834463505e-15, "lam_med": 2632.7353182553034}, {"file": "objq06030_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 9.848648410724969e-15, "lam_med": 2630.765549979787}, {"file": "objq06040_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 8.161203559212385e-15, "lam_med": 2630.794680037516}, {"file": "objq06050_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 8.125703006435955e-15, "lam_med": 2630.8229380629546, "rec": [0.041666666666666664, 0.08333333333333333, 0.2916666666666667, 0.25, 0.5652173913043478, 0.625]}, {"file": "objq07010_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 6.399604409160458e-15, "lam_med": 2630.4078333263456}, {"file": "objq07020_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 5.141199188703664e-15, "lam_med": 2630.1086478625703}, {"file": "objq07030_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 6.206984080067321e-15, "lam_med": 2629.5086986828346}, {"file": "objq07040_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 5.26317961029933e-15, "lam_med": 2629.376278651832}, {"file": "objq07050_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 5.331279615480385e-15, "lam_med": 2629.2588560581084}, {"file": "objq08010_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 6.422984955275263e-15, "lam_med": 2632.088364599801}, {"file": "objq08020_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 5.1540663881933125e-15, "lam_med": 2631.8050252735497}, {"file": "objq08030_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 6.1941030847277574e-15, "lam_med": 2630.503274376289}, {"file": "objq08040_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 5.255043786809691e-15, "lam_med": 2630.4454399008423}, {"file": "objq08050_x1d.fits", "star": "HD 126238", "mode": "E230M", "nominal": 5.281699558613422e-15, "lam_med": 2630.3799142801563}, {"file": "objq09010_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 8.284938258375194e-15, "lam_med": 2632.6545820120855}, {"file": "objq09020_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 6.435944595168139e-15, "lam_med": 2632.7111832508867}, {"file": "objq09030_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 7.948434646289346e-15, "lam_med": 2631.841680267323}, {"file": "objq09040_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 6.568561679307145e-15, "lam_med": 2631.7835203355216, "rec": [0.0, 0.125, 0.375, 0.5833333333333334, 0.6521739130434783, 0.6956521739130435]}, {"file": "objq10010_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 8.097387247758086e-15, "lam_med": 2631.5615575659385}, {"file": "objq10020_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 6.188537358204932e-15, "lam_med": 2631.409286224097}, {"file": "objq10030_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 7.767977104480415e-15, "lam_med": 2632.678506909808}, {"file": "objq10040_x1d.fits", "star": "HD 122563", "mode": "E230M", "nominal": 6.361303750782173e-15, "lam_med": 2632.537178990193}, {"file": "obkj01010_x1d.fits", "star": "HD 99890", "mode": "E230H", "nominal": 5.364391927388926e-14, "lam_med": 2007.5523209074354}, {"file": "obkj01020_x1d.fits", "star": "HD 99890", "mode": "E230H", "nominal": 5.176961414911103e-14, "lam_med": 2007.4885342091502}, {"file": "obkj01030_x1d.fits", "star": "HD 99890", "mode": "E230H", "nominal": 4.9514312422843836e-14, "lam_med": 2007.5139879572855}, {"file": "obkj01040_x1d.fits", "star": "HD 99890", "mode": "E230H", "nominal": 5.399777577850498e-14, "lam_med": 2007.5344033472852}, {"file": "obkj01050_x1d.fits", "star": "HD 99890", "mode": "E230H", "nominal": 5.345007828348016e-14, "lam_med": 2007.4673658718916}, {"file": "obkj02010_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.5923969143269884e-14, "lam_med": 1414.8288671765447}, {"file": "obkj02020_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.623957768145864e-14, "lam_med": 1414.7999780686353}, {"file": "obkj02030_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.204224518685229e-14, "lam_med": 1414.974114882899}, {"file": "obkj02040_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.6484327001021404e-14, "lam_med": 1415.1818766182266}, {"file": "obkj02050_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.6333889869020885e-14, "lam_med": 1415.0860554292246}, {"file": "obkj03010_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.811709776807582e-14, "lam_med": 1228.1292411296095}, {"file": "obkj03020_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.947571851067329e-14, "lam_med": 1228.015954537931}, {"file": "obkj03030_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.969449780566602e-14, "lam_med": 1228.0749128202335}, {"file": "obkj03040_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.941045191142458e-14, "lam_med": 1228.1225597413538}, {"file": "obkj03050_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 5.921981963632017e-14, "lam_med": 1228.02747276572}, {"file": "obkj04010_x1d.fits", "star": "HD 232522", "mode": "E230H", "nominal": 3.512037700101231e-14, "lam_med": 2007.4902993661087}, {"file": "obkj04020_x1d.fits", "star": "HD 232522", "mode": "E230H", "nominal": 3.4597002441615804e-14, "lam_med": 2007.2997306449756}, {"file": "obkj04030_x1d.fits", "star": "HD 232522", "mode": "E230H", "nominal": 3.427742949012478e-14, "lam_med": 2007.243181545659}, {"file": "obkj04040_x1d.fits", "star": "HD 232522", "mode": "E230H", "nominal": 3.429234425697662e-14, "lam_med": 2007.1734518425626}, {"file": "obkj04050_x1d.fits", "star": "HD 232522", "mode": "E230H", "nominal": 4.0667596308904686e-14, "lam_med": 2007.1351029659174}, {"file": "obkj04060_x1d.fits", "star": "HD 232522", "mode": "E230H", "nominal": 3.780594479421979e-14, "lam_med": 2007.0907068416027}, {"file": "obkj04070_x1d.fits", "star": "HD 232522", "mode": "E230H", "nominal": 3.060750540269348e-14, "lam_med": 2006.9325540446846}, {"file": "obkj05010_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.66326911888459e-14, "lam_med": 1414.804293466421}, {"file": "obkj05020_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.664674225021194e-14, "lam_med": 1414.9040126714785}, {"file": "obkj05030_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.674931233758097e-14, "lam_med": 1414.8274375957171}, {"file": "obkj05040_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.633139616980821e-14, "lam_med": 1414.8212842647795, "rec": [0.0136986301369863, 0.35526315789473684, 0.6081081081081081, 0.8571428571428571, 0.9594594594594594, 0.9459459459459459]}, {"file": "obkj05050_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 4.349127212493555e-14, "lam_med": 1414.8643433389602}, {"file": "obkj05060_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 4.099364203815331e-14, "lam_med": 1414.9131112845369}, {"file": "obkj05070_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.565873251755322e-14, "lam_med": 1414.6836040478609}, {"file": "obkj06010_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.603559968216741e-14, "lam_med": 1228.0884823531787}, {"file": "obkj06020_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.7482357095516175e-14, "lam_med": 1228.04765038453}, {"file": "obkj06030_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.770123384816862e-14, "lam_med": 1228.0173808103068}, {"file": "obkj06040_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.848411155309334e-14, "lam_med": 1228.0942724664787}, {"file": "obkj06050_x1d.fits", "star": "HD 232522", "mode": "E140H", "nominal": 3.782635636573409e-14, "lam_med": 1227.970124416013, "rec": [0.035211267605633804, 0.46853146853146854, 0.6950354609929078, 0.8482758620689655, 0.9041095890410958, 0.8827586206896552]}, {"file": "obkk11010_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 3.568039085435065e-12, "lam_med": 3015.9655250439528}, {"file": "obkk11020_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 2.4994413622371642e-12, "lam_med": 2744.00987577021}, {"file": "obkk11030_x1d.fits", "star": "* alf CMi", "mode": "E140M", "nominal": 2.3253009945435037e-14, "lam_med": 1380.389993385304}, {"file": "obkk11040_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 6.641206673249902e-15, "lam_med": 1254.170152290162, "rec": [0.021505376344086023, 0.43820224719101125, 0.5957446808510638, 0.717391304347826, 0.7096774193548387, 0.7912087912087912]}, {"file": "obkk12010_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 2.0123324320532975e-12, "lam_med": 2743.9280250678257}, {"file": "obkk12020_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 1.91570662343507e-12, "lam_med": 2507.366789458704}, {"file": "obkk12030_x1d.fits", "star": "* alf CMi", "mode": "E140M", "nominal": 2.3163237088327863e-14, "lam_med": 1380.0433792372596}, {"file": "obkk12040_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 6.873125533600495e-15, "lam_med": 1254.0485108988921}, {"file": "obkk13010_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 1.4750151177420696e-12, "lam_med": 2257.6302341046367}, {"file": "obkk13020_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 3.036234472265957e-12, "lam_med": 2007.4853116352117}, {"file": "obkk13030_x1d.fits", "star": "* alf CMi", "mode": "E140M", "nominal": 2.262931445075152e-14, "lam_med": 1379.990125086931}, {"file": "obkk13040_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 6.541258302787023e-15, "lam_med": 1254.0212724593225, "rec": [0.052083333333333336, 0.2808988764044944, 0.5824175824175825, 0.7311827956989247, 0.7717391304347826, 0.7956989247311828]}, {"file": "obkk14010_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 2.6429848275184827e-12, "lam_med": 2007.4853154951602}, {"file": "obkk14020_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 2.6591348656699635e-12, "lam_med": 2257.667873452619}, {"file": "obkk14030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 1.8114133565105493e-12, "lam_med": 2507.402856878599}, {"file": "obkk14040_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 6.633983695894706e-15, "lam_med": 1253.8612770541936}, {"file": "obkk15020_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 1.6590827441841695e-12, "lam_med": 2006.9001021114645}, {"file": "obkk15030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 3.312988569278089e-14, "lam_med": 1754.7934921571175}, {"file": "obkk16010_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 1.21210303161408e-12, "lam_med": 2743.961033342146}, {"file": "obkk16020_x1d.fits", "star": "* alf CMi", "mode": "E140M", "nominal": 2.234721135727463e-14, "lam_med": 1379.97933679752}, {"file": "obkk16030_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 6.677255027031364e-15, "lam_med": 1254.0189809447838}, {"file": "obkk17010_x1d.fits", "star": "* alf CMi", "mode": "E140M", "nominal": 1.8688472995214572e-14, "lam_med": 1379.2736841799356}, {"file": "obkk17020_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 3.0163965569292726e-12, "lam_med": 2007.7098529734656}, {"file": "obkk17030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 1.8041680648704707e-13, "lam_med": 1754.7557558869958}, {"file": "obkk21010_x1d.fits", "star": "* bet Cas", "mode": "E230M", "nominal": 1.9532427516524636e-12, "lam_med": 2633.026562714571}, {"file": "obkk21020_x1d.fits", "star": "* bet Cas", "mode": "E230M", "nominal": 3.930513532914391e-12, "lam_med": 1917.5421057884946}, {"file": "obkk21030_x1d.fits", "star": "* bet Cas", "mode": "E230H", "nominal": 9.297233803395814e-13, "lam_med": 2507.521371377557, "rec": [0.015151515151515152, 0.22727272727272727, 0.5454545454545454, 0.9090909090909091, 1.0, 1.0]}, {"file": "obkk21040_x1d.fits", "star": "* bet Cas", "mode": "E230H", "nominal": 1.100422792978573e-12, "lam_med": 2744.099474514418}, {"file": "obkk21050_x1d.fits", "star": "* bet Cas", "mode": "E140H", "nominal": 4.121393785612013e-15, "lam_med": 1254.302382143523}, {"file": "obkk21060_x1d.fits", "star": "* bet Cas", "mode": "E140M", "nominal": 1.1324488090092544e-14, "lam_med": 1381.0973067322875}, {"file": "obkk22010_x1d.fits", "star": "* bet Cas", "mode": "E230M", "nominal": 3.966854534120031e-12, "lam_med": 1917.465871786273}, {"file": "obkk22020_x1d.fits", "star": "* bet Cas", "mode": "E230M", "nominal": 2.0425689658943943e-12, "lam_med": 2630.125806551287}, {"file": "obkk22030_x1d.fits", "star": "* bet Cas", "mode": "E230H", "nominal": 1.0136394284211128e-12, "lam_med": 2744.106817379002}, {"file": "obkk22040_x1d.fits", "star": "* bet Cas", "mode": "E230H", "nominal": 9.676418769795789e-13, "lam_med": 2507.517931592043}, {"file": "obkk22050_x1d.fits", "star": "* bet Cas", "mode": "E140M", "nominal": 1.1749677628481361e-14, "lam_med": 1380.3763392000606}, {"file": "obkk22060_x1d.fits", "star": "* bet Cas", "mode": "E140H", "nominal": 4.422135725819274e-15, "lam_med": 1254.28905300808}, {"file": "obkk23010_x1d.fits", "star": "* bet Cas", "mode": "E230H", "nominal": 8.955246982776296e-13, "lam_med": 2507.5099971720183}, {"file": "obkk23020_x1d.fits", "star": "* bet Cas", "mode": "E230H", "nominal": 1.059981203249852e-12, "lam_med": 2744.0873811238976}, {"file": "obkk23030_x1d.fits", "star": "* bet Cas", "mode": "E230M", "nominal": 2.5165940421684355e-12, "lam_med": 2633.1377092810553}, {"file": "obkk23040_x1d.fits", "star": "* bet Cas", "mode": "E230M", "nominal": 4.140464140435465e-12, "lam_med": 1917.4936631559087}, {"file": "obkk23050_x1d.fits", "star": "* bet Cas", "mode": "E140H", "nominal": 4.54342853226697e-15, "lam_med": 1254.2304120381955}, {"file": "obkk23060_x1d.fits", "star": "* bet Cas", "mode": "E140M", "nominal": 1.1872736873860586e-14, "lam_med": 1380.837338330022}, {"file": "obkk31010_x1d.fits", "star": "* gam Dra", "mode": "E230M", "nominal": 1.3663475951778439e-14, "lam_med": 1917.4371925867342}, {"file": "obkk31020_x1d.fits", "star": "* gam Dra", "mode": "E230H", "nominal": 5.087046028869646e-15, "lam_med": 2257.793039872297}, {"file": "obkk31030_x1d.fits", "star": "* gam Dra", "mode": "E140H", "nominal": 2.0969796420584857e-15, "lam_med": 1254.2233029926688}, {"file": "obkk31040_x1d.fits", "star": "* gam Dra", "mode": "E140M", "nominal": 3.002934989442396e-15, "lam_med": 1380.3230598567716}, {"file": "obkk32010_x1d.fits", "star": "* gam Dra", "mode": "E230M", "nominal": 1.3968254576659257e-14, "lam_med": 1917.33223272613}, {"file": "obkk32020_x1d.fits", "star": "* gam Dra", "mode": "E230H", "nominal": 4.894390295238871e-15, "lam_med": 2507.4945692970905}, {"file": "obkk32030_x1d.fits", "star": "* gam Dra", "mode": "E140H", "nominal": 2.0172526726388806e-15, "lam_med": 1254.1878187348411}, {"file": "obkk32040_x1d.fits", "star": "* gam Dra", "mode": "E140M", "nominal": 2.9213705190259716e-15, "lam_med": 1380.4136200864093}, {"file": "obkk33010_x1d.fits", "star": "* gam Dra", "mode": "E230M", "nominal": 1.5041323313285727e-14, "lam_med": 1917.346353608236}, {"file": "obkk33020_x1d.fits", "star": "* gam Dra", "mode": "E230H", "nominal": 7.237301849711407e-15, "lam_med": 2744.1137842317867}, {"file": "obkk33040_x1d.fits", "star": "* gam Dra", "mode": "E140M", "nominal": 3.2702068684595433e-15, "lam_med": 1380.150297935383}, {"file": "obkk34010_x1d.fits", "star": "* gam Dra", "mode": "E230M", "nominal": 8.255949536838515e-15, "lam_med": 2632.8963634844886}, {"file": "obkk34020_x1d.fits", "star": "* gam Dra", "mode": "E230M", "nominal": 1.6823868699350956e-14, "lam_med": 1917.4474371934975}, {"file": "obkk34030_x1d.fits", "star": "* gam Dra", "mode": "E230H", "nominal": 5.469374937099215e-15, "lam_med": 2257.797783507919}, {"file": "obkk34040_x1d.fits", "star": "* gam Dra", "mode": "E140M", "nominal": 2.858592003948786e-15, "lam_med": 1380.2123067282228}, {"file": "obkk35010_x1d.fits", "star": "* gam Dra", "mode": "E140M", "nominal": 2.5697966327923012e-15, "lam_med": 1380.541229427332}, {"file": "obkk35020_x1d.fits", "star": "* gam Dra", "mode": "E230M", "nominal": 1.8415069835741113e-14, "lam_med": 1917.4116442568145}, {"file": "obkk35030_x1d.fits", "star": "* gam Dra", "mode": "E230H", "nominal": 5.2007786473694245e-15, "lam_med": 2507.5046664721613}, {"file": "obkk35040_x1d.fits", "star": "* gam Dra", "mode": "E140M", "nominal": 3.288001195757316e-15, "lam_med": 1381.1569448706853}, {"file": "obkk36010_x1d.fits", "star": "* gam Dra", "mode": "E140H", "nominal": 2.227867990112082e-15, "lam_med": 1254.1614648272227}, {"file": "obkk36020_x1d.fits", "star": "* gam Dra", "mode": "E140H", "nominal": 2.6538108132257543e-15, "lam_med": 1254.1643288257874}, {"file": "obkk41020_x1d.fits", "star": "* bet Gem", "mode": "E230H", "nominal": 8.6228978411098e-15, "lam_med": 2257.823015895051, "rec": [0.012195121951219513, 0.10975609756097561, 0.3780487804878049, 0.6463414634146342, 0.7926829268292683, 0.9390243902439024]}, {"file": "obkk41030_x1d.fits", "star": "* bet Gem", "mode": "E140H", "nominal": 1.5223494002684581e-15, "lam_med": 1254.0318793438769}, {"file": "obkk41040_x1d.fits", "star": "* bet Gem", "mode": "E140M", "nominal": 2.5749246543751807e-15, "lam_med": 1379.3862468398197}, {"file": "obkk42010_x1d.fits", "star": "* bet Gem", "mode": "E230M", "nominal": 2.1954976716715023e-14, "lam_med": 1917.2825377155477}, {"file": "obkk42020_x1d.fits", "star": "* bet Gem", "mode": "E230H", "nominal": 1.7480693278610727e-14, "lam_med": 2507.383120041824}, {"file": "obkk42030_x1d.fits", "star": "* bet Gem", "mode": "E140H", "nominal": 2.047242985373058e-15, "lam_med": 1253.9053339808847}, {"file": "obkk42040_x1d.fits", "star": "* bet Gem", "mode": "E140M", "nominal": 3.3956279047934106e-15, "lam_med": 1379.8570787596273}, {"file": "obkk43010_x1d.fits", "star": "* bet Gem", "mode": "E230M", "nominal": 2.0677416360074628e-14, "lam_med": 1917.2796986888848}, {"file": "obkk43020_x1d.fits", "star": "* bet Gem", "mode": "E230H", "nominal": 3.4442868124790346e-14, "lam_med": 2744.0109035935207}, {"file": "obkk43030_x1d.fits", "star": "* bet Gem", "mode": "E140H", "nominal": 1.4419064003260323e-15, "lam_med": 1254.207965824113}, {"file": "obkk43040_x1d.fits", "star": "* bet Gem", "mode": "E140M", "nominal": 2.884401872493259e-15, "lam_med": 1380.4363551343115}, {"file": "obkk44010_x1d.fits", "star": "* bet Gem", "mode": "E230H", "nominal": 9.408727351917162e-14, "lam_med": 3015.9277339092177}, {"file": "obkk44020_x1d.fits", "star": "* bet Gem", "mode": "E230M", "nominal": 2.415325837386396e-14, "lam_med": 1917.316333957725, "rec": [0.0, 0.21518987341772153, 0.5569620253164557, 0.7468354430379747, 0.8125, 0.8875]}, {"file": "obkk44030_x1d.fits", "star": "* bet Gem", "mode": "E230H", "nominal": 1.1133382986346229e-14, "lam_med": 2257.796995701896}, {"file": "obkk44040_x1d.fits", "star": "* bet Gem", "mode": "E140M", "nominal": 3.016782772341293e-15, "lam_med": 1379.5491720573891}, {"file": "obkk45010_x1d.fits", "star": "* bet Gem", "mode": "E140M", "nominal": 2.377932630249599e-15, "lam_med": 1378.6708209689077}, {"file": "obkk45020_x1d.fits", "star": "* bet Gem", "mode": "E230H", "nominal": 1.7576776891795527e-14, "lam_med": 2507.384287341753}, {"file": "obkk45030_x1d.fits", "star": "* bet Gem", "mode": "E140M", "nominal": 3.0461262138135705e-15, "lam_med": 1379.5157847904584}, {"file": "obkk46010_x1d.fits", "star": "* bet Gem", "mode": "E230M", "nominal": 2.2388296291719914e-14, "lam_med": 1917.2337068768652}, {"file": "obkk46020_x1d.fits", "star": "* bet Gem", "mode": "E230H", "nominal": 1.1633282902720531e-14, "lam_med": 2257.7477068470316}, {"file": "obkk46030_x1d.fits", "star": "* bet Gem", "mode": "E140H", "nominal": 1.907726009382493e-15, "lam_med": 1253.9542437198252}, {"file": "obkk46040_x1d.fits", "star": "* bet Gem", "mode": "E140M", "nominal": 3.2942174663741856e-15, "lam_med": 1380.1345831793305}, {"file": "obkk51010_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 1.0990181751884083e-14, "lam_med": 2257.7289203854207}, {"file": "obkk51020_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 1.4494317856969378e-14, "lam_med": 2507.3232078353453}, {"file": "obkk51030_x1d.fits", "star": "* alf Aqr", "mode": "E230M", "nominal": 2.7316119735025858e-14, "lam_med": 1917.3047114878289}, {"file": "obkk51040_x1d.fits", "star": "* alf Aqr", "mode": "E140M", "nominal": 3.243356187161586e-15, "lam_med": 1379.8461986280927}, {"file": "obkk52010_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 1.3049868881313422e-14, "lam_med": 2507.3202189989406}, {"file": "obkk52020_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 2.373351465295034e-14, "lam_med": 2743.87872721406}, {"file": "obkk52030_x1d.fits", "star": "* alf Aqr", "mode": "E230M", "nominal": 2.637367420960451e-14, "lam_med": 1917.270614463599}, {"file": "obkk52040_x1d.fits", "star": "* alf Aqr", "mode": "E140M", "nominal": 3.125937407599909e-15, "lam_med": 1379.4091445776662}, {"file": "obkk53010_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 2.095078441473907e-14, "lam_med": 2743.9176715288568, "rec": [0.0, 0.0, 0.037037037037037035, 0.07407407407407407, 0.1111111111111111, 0.2222222222222222]}, {"file": "obkk53020_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 1.2531159496490374e-14, "lam_med": 2257.775388346269}, {"file": "obkk53030_x1d.fits", "star": "* alf Aqr", "mode": "E230M", "nominal": 2.754512115251531e-14, "lam_med": 1917.3230976836217}, {"file": "obkk53040_x1d.fits", "star": "* alf Aqr", "mode": "E140M", "nominal": 3.300270242377202e-15, "lam_med": 1379.7936488083405}, {"file": "obkk54010_x1d.fits", "star": "* alf Aqr", "mode": "E230M", "nominal": 2.8594340066233944e-14, "lam_med": 2632.764232808202}, {"file": "obkk54020_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 1.4829949499433896e-14, "lam_med": 2507.366399614732}, {"file": "obkk54030_x1d.fits", "star": "* alf Aqr", "mode": "E230H", "nominal": 1.2732776065577296e-14, "lam_med": 2257.792804510769}, {"file": "obkk54040_x1d.fits", "star": "* alf Aqr", "mode": "E140M", "nominal": 3.4278229916883884e-15, "lam_med": 1380.1284570307535}, {"file": "obkk55010_x1d.fits", "star": "* alf Aqr", "mode": "E140M", "nominal": 2.5107822918144453e-15, "lam_med": 1379.6438463108839}, {"file": "obkk55020_x1d.fits", "star": "* alf Aqr", "mode": "E230M", "nominal": 2.5197917974905847e-14, "lam_med": 1917.3293046613721}, {"file": "obkk55030_x1d.fits", "star": "* alf Aqr", "mode": "E140M", "nominal": 2.8579989252323855e-15, "lam_med": 1379.8386584123}, {"file": "obkk61010_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 1.3061479040176327e-14, "lam_med": 2257.897287803324}, {"file": "obkk61020_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 1.8942219875048958e-14, "lam_med": 2507.5342689503445}, {"file": "obkk61030_x1d.fits", "star": "* bet Dra", "mode": "E230M", "nominal": 3.179776674185218e-14, "lam_med": 1917.4412612195015}, {"file": "obkk61040_x1d.fits", "star": "* bet Dra", "mode": "E140M", "nominal": 4.789164553329043e-15, "lam_med": 1380.6034364930301}, {"file": "obkk62010_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 1.6323332138453078e-14, "lam_med": 2507.503819761997}, {"file": "obkk62020_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 2.946280999224342e-14, "lam_med": 2744.1028800709755}, {"file": "obkk62030_x1d.fits", "star": "* bet Dra", "mode": "E230M", "nominal": 3.199041505936319e-14, "lam_med": 1917.4188770840292}, {"file": "obkk62040_x1d.fits", "star": "* bet Dra", "mode": "E140M", "nominal": 5.238421381142431e-15, "lam_med": 1380.4568438768874}, {"file": "obkk63010_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 2.506656805443638e-14, "lam_med": 2744.118773946305}, {"file": "obkk63020_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 1.5271347852828612e-14, "lam_med": 2257.907839549132}, {"file": "obkk63030_x1d.fits", "star": "* bet Dra", "mode": "E230M", "nominal": 3.17862586605468e-14, "lam_med": 1917.4469671163329}, {"file": "obkk63040_x1d.fits", "star": "* bet Dra", "mode": "E140M", "nominal": 5.1225652441519935e-15, "lam_med": 1380.6514271343462}, {"file": "obkk64010_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 5.663216505710259e-14, "lam_med": 3016.1619367493363}, {"file": "obkk64020_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 1.853523069577078e-14, "lam_med": 2507.5672600415683}, {"file": "obkk64030_x1d.fits", "star": "* bet Dra", "mode": "E230H", "nominal": 1.4988802676411038e-14, "lam_med": 2257.7289524351454}, {"file": "obkk64040_x1d.fits", "star": "* bet Dra", "mode": "E140M", "nominal": 5.211245484348885e-15, "lam_med": 1380.199857161892}, {"file": "obkk65010_x1d.fits", "star": "* bet Dra", "mode": "E140M", "nominal": 3.925882248449571e-15, "lam_med": 1380.5077086099088}, {"file": "obkk65020_x1d.fits", "star": "* bet Dra", "mode": "E230M", "nominal": 3.1621668341698665e-14, "lam_med": 1917.421495393152, "rec": [0.0125, 0.22784810126582278, 0.4, 0.6375, 0.775, 0.875]}, {"file": "obkk65030_x1d.fits", "star": "* bet Dra", "mode": "E140M", "nominal": 4.658001781754246e-15, "lam_med": 1380.4175479414944}, {"file": "obkk71020_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 9.393144173146465e-15, "lam_med": 2507.406218491982}, {"file": "obkk72010_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 8.872116713142303e-15, "lam_med": 2507.398486552243}, {"file": "obkk72020_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 1.4747567387158442e-14, "lam_med": 2743.9783301538637}, {"file": "obkk72030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.085177229771918e-14, "lam_med": 1917.3543110630578, "rec": [0.0125, 0.225, 0.4625, 0.65, 0.75, 0.8]}, {"file": "obkk72040_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.847267255695197e-15, "lam_med": 1380.3547616360338}, {"file": "obkk73010_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 1.3432755625520554e-14, "lam_med": 2743.969308847655}, {"file": "obkk73020_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 6.6763440186218545e-15, "lam_med": 2257.777202412871}, {"file": "obkk73030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.014099559260436e-14, "lam_med": 1917.2924789398535}, {"file": "obkk73040_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.710774022687353e-15, "lam_med": 1379.83889717624}, {"file": "obkk74010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.9411660338626212e-14, "lam_med": 2632.715850979128}, {"file": "obkk74020_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 9.568310784624585e-15, "lam_med": 2507.368762641175}, {"file": "obkk74030_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 6.942491040208127e-15, "lam_med": 2257.7684308403677, "rec": [0.036585365853658534, 0.2682926829268293, 0.4146341463414634, 0.5975609756097561, 0.6951219512195121, 0.8414634146341463]}, {"file": "obkk74040_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.9120700906399086e-15, "lam_med": 1380.0336966729085}, {"file": "obkk75010_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 1.981955386483922e-15, "lam_med": 1379.452369053349}, {"file": "obkk75020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.068748289576332e-14, "lam_med": 1917.3187282545432}, {"file": "obkk75030_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.5499135072067005e-15, "lam_med": 1380.3609924144791}, {"file": "obkk76010_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 6.012870839091191e-15, "lam_med": 2257.719196219515}, {"file": "obkk76020_x1d.fits", "star": "* alf Ori", "mode": "E230H", "nominal": 9.68271973961743e-15, "lam_med": 2507.3470046135526}, {"file": "obkk76030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.0689939320582788e-14, "lam_med": 1917.3445790267542}, {"file": "obkk76040_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.5881941841167432e-15, "lam_med": 1379.7551470942262}, {"file": "obkk81010_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 4.462654126359591e-15, "lam_med": 2257.7154106454645}, {"file": "obkk81020_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 5.775117654520051e-15, "lam_med": 2507.3798867646597}, {"file": "obkk81030_x1d.fits", "star": "* gam Cru", "mode": "E230M", "nominal": 1.5538699833680773e-14, "lam_med": 1917.3130321705914}, {"file": "obkk81040_x1d.fits", "star": "* gam Cru", "mode": "E140M", "nominal": 4.6640966546593044e-15, "lam_med": 1380.1243078798968}, {"file": "obkk82010_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 4.975847134660743e-15, "lam_med": 2507.3954695297643}, {"file": "obkk82020_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 8.746460690421621e-15, "lam_med": 2743.9923681451646}, {"file": "obkk82030_x1d.fits", "star": "* gam Cru", "mode": "E230M", "nominal": 1.567126117455364e-14, "lam_med": 1917.3188307565056}, {"file": "obkk82040_x1d.fits", "star": "* gam Cru", "mode": "E140M", "nominal": 4.490650244746052e-15, "lam_med": 1380.3353906972652}, {"file": "obkk83010_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 7.448042460010588e-15, "lam_med": 2744.0107298597204}, {"file": "obkk83020_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 5.230032515234815e-15, "lam_med": 2257.794988027939, "rec": [0.0, 0.17073170731707318, 0.4268292682926829, 0.5121951219512195, 0.6097560975609756, 0.6951219512195121]}, {"file": "obkk83030_x1d.fits", "star": "* gam Cru", "mode": "E230M", "nominal": 1.5258864822326574e-14, "lam_med": 1917.3454853261596}, {"file": "obkk83040_x1d.fits", "star": "* gam Cru", "mode": "E140M", "nominal": 4.654193953958835e-15, "lam_med": 1380.3629238206852}, {"file": "obkk84010_x1d.fits", "star": "* gam Cru", "mode": "E230M", "nominal": 1.0371461948632736e-14, "lam_med": 2632.771302440254}, {"file": "obkk84020_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 5.669066795681063e-15, "lam_med": 2507.391275974825}, {"file": "obkk84030_x1d.fits", "star": "* gam Cru", "mode": "E230H", "nominal": 5.571676316610963e-15, "lam_med": 2257.8021380153364}, {"file": "obkk84040_x1d.fits", "star": "* gam Cru", "mode": "E140M", "nominal": 4.520844130078667e-15, "lam_med": 1380.0628694873983}, {"file": "obkk85010_x1d.fits", "star": "* gam Cru", "mode": "E140M", "nominal": 3.510486333426811e-15, "lam_med": 1379.6681037491287}, {"file": "obkk85020_x1d.fits", "star": "* gam Cru", "mode": "E230M", "nominal": 1.5522214240399538e-14, "lam_med": 1917.292459398001}, {"file": "obkk85030_x1d.fits", "star": "* gam Cru", "mode": "E140M", "nominal": 4.60677926092202e-15, "lam_med": 1380.367468762533}, {"file": "obkr03010_x1d.fits", "star": "HD 21551", "mode": "E140H", "nominal": 1.2770444771016913e-13, "lam_med": 1254.2219403189515}, {"file": "obkr10010_x1d.fits", "star": "* kap Pic", "mode": "E140H", "nominal": 1.3797965254817295e-13, "lam_med": 1254.2543998061565}, {"file": "obkr1c010_x1d.fits", "star": "HD 116852", "mode": "E140H", "nominal": 1.063498360115569e-13, "lam_med": 1254.2405351847676}, {"file": "obkr1k010_x1d.fits", "star": "HD 156110", "mode": "E140H", "nominal": 1.567847687666352e-13, "lam_med": 1253.958705322022, "rec": [0.043478260869565216, 0.26666666666666666, 0.4, 0.7111111111111111, 0.8, 0.8222222222222222]}, {"file": "obkr1n010_x1d.fits", "star": "HD 170740", "mode": "E140H", "nominal": 9.109192330492022e-14, "lam_med": 1253.92819336313}, {"file": "obkr1o010_x1d.fits", "star": "HD 175156", "mode": "E140H", "nominal": 8.527983288660136e-14, "lam_med": 1253.9367267879875}, {"file": "obkr1p010_x1d.fits", "star": "HD 182308", "mode": "E140H", "nominal": 8.629528952240034e-14, "lam_med": 1254.2665585290192}, {"file": "obkr1q010_x1d.fits", "star": "HD 185418", "mode": "E140H", "nominal": 8.583389555309842e-14, "lam_med": 1254.2023589853356}, {"file": "obkr1s010_x1d.fits", "star": "HD 203532", "mode": "E140H", "nominal": 8.673274935876464e-14, "lam_med": 1254.148298192496, "rec": [0.044444444444444446, 0.37777777777777777, 0.6590909090909091, 0.6382978723404256, 0.8222222222222222, 0.8863636363636364]}, {"file": "obkr1v010_x1d.fits", "star": "HD 210809", "mode": "E140H", "nominal": 8.195701030045173e-14, "lam_med": 1254.2625656831362}, {"file": "obkr1w010_x1d.fits", "star": "* 4 Lac", "mode": "E140H", "nominal": 9.107061077609507e-14, "lam_med": 1254.09402260116}, {"file": "obkr1y010_x1d.fits", "star": "HD 220787", "mode": "E140H", "nominal": 1.0401370790073088e-13, "lam_med": 1254.0284919573742}, {"file": "obkr1z010_x1d.fits", "star": "HD 224257", "mode": "E140H", "nominal": 1.0218426211931124e-13, "lam_med": 1253.9849623526488}, {"file": "obkr26010_x1d.fits", "star": "HD 51285", "mode": "E140H", "nominal": 1.275898193932648e-13, "lam_med": 1254.317686561573}, {"file": "obkr2a010_x1d.fits", "star": "HD 108", "mode": "E140H", "nominal": 6.641950663663588e-14, "lam_med": 1254.084320548759}, {"file": "obkr2d010_x1d.fits", "star": "HD 20863", "mode": "E140H", "nominal": 4.087426244752291e-14, "lam_med": 1254.0496835333638}, {"file": "obkr2n010_x1d.fits", "star": "HD 36541", "mode": "E140H", "nominal": 7.023677228210244e-14, "lam_med": 1253.9964788731736, "rec": [0.0, 0.42857142857142855, 0.625, 0.8260869565217391, 0.7727272727272727, 0.9787234042553191]}, {"file": "obkr2w010_x1d.fits", "star": "HD 47382", "mode": "E140H", "nominal": 8.028783099139682e-14, "lam_med": 1254.0942140520274}, {"file": "obkr2x010_x1d.fits", "star": "HD 50138", "mode": "E140H", "nominal": 3.4851942130398425e-14, "lam_med": 1253.9730474771677}, {"file": "obkr30010_x1d.fits", "star": "HD 72350", "mode": "E140H", "nominal": 1.3633216507232665e-13, "lam_med": 1254.2062129480303}, {"file": "obkr31010_x1d.fits", "star": "HD 74604", "mode": "E140H", "nominal": 1.4050767733351982e-13, "lam_med": 1254.2293940163745}, {"file": "obkr37010_x1d.fits", "star": "HD 122879", "mode": "E140H", "nominal": 1.4800866574341484e-13, "lam_med": 1254.0807501522168}, {"file": "obkr3d010_x1d.fits", "star": "HD 72648", "mode": "E140H", "nominal": 5.033967072579255e-14, "lam_med": 1254.1807167008417}, {"file": "obkr3g010_x1d.fits", "star": "HD 91651", "mode": "E140H", "nominal": 4.322189601743418e-14, "lam_med": 1254.3684831612545}, {"file": "obkr3i010_x1d.fits", "star": "HD 97175", "mode": "E140H", "nominal": 7.500588731088175e-14, "lam_med": 1254.160902504595, "rec": [0.0, 0.6511627906976745, 0.6956521739130435, 0.8541666666666666, 0.8809523809523809, 0.9545454545454546]}, {"file": "obkr3k010_x1d.fits", "star": "HD 99890", "mode": "E140H", "nominal": 7.77860536441125e-14, "lam_med": 1253.9939924543492}, {"file": "obkr3t010_x1d.fits", "star": "HD 117111", "mode": "E140H", "nominal": 5.5605365322234373e-14, "lam_med": 1254.0222096763848}, {"file": "obkr3w010_x1d.fits", "star": "HD 138679", "mode": "E140H", "nominal": 4.7857800110291895e-14, "lam_med": 1254.2501622287464}, {"file": "obkr42010_x1d.fits", "star": "HD 148937", "mode": "E140H", "nominal": 7.434512210296863e-14, "lam_med": 1254.2029990202177}, {"file": "obkr46010_x1d.fits", "star": "* z Her", "mode": "E140H", "nominal": 1.0031470082979773e-13, "lam_med": 1254.3364850206276}, {"file": "obkr47010_x1d.fits", "star": "HD 175360", "mode": "E140H", "nominal": 1.3237504942013673e-13, "lam_med": 1254.090025630891}, {"file": "obkr49010_x1d.fits", "star": "HD 198781", "mode": "E140H", "nominal": 1.2164908331597243e-13, "lam_med": 1254.3340421951086}, {"file": "obkr4b010_x1d.fits", "star": "HD 153262", "mode": "E140H", "nominal": 7.862256564003926e-14, "lam_med": 1254.32752306762}, {"file": "obkr4d010_x1d.fits", "star": "HD 157857", "mode": "E140H", "nominal": 7.605880739394799e-14, "lam_med": 1254.0009011581828, "rec": [0.0, 0.2391304347826087, 0.6363636363636364, 0.8095238095238095, 0.8888888888888888, 0.9318181818181818]}, {"file": "obkr4l010_x1d.fits", "star": "HD 195455", "mode": "E140H", "nominal": 7.425749245602197e-14, "lam_med": 1253.9429208006554}, {"file": "obkr4o010_x1d.fits", "star": "HD 205805", "mode": "E140H", "nominal": 7.745035085769763e-14, "lam_med": 1254.0767641336852}, {"file": "obkr4t010_x1d.fits", "star": "HD 206773", "mode": "E140H", "nominal": 1.0775618458714545e-13, "lam_med": 1254.186987985011}, {"file": "obkr4v010_x1d.fits", "star": "* del Ant", "mode": "E140H", "nominal": 9.985006912354731e-14, "lam_med": 1254.1261629238}, {"file": "obkr50010_x1d.fits", "star": "HD 201345", "mode": "E140H", "nominal": 1.4724354174415084e-13, "lam_med": 1254.0445941540704}, {"file": "obkr51010_x1d.fits", "star": "* 77 Dra", "mode": "E140H", "nominal": 1.2186182922413284e-13, "lam_med": 1254.234290757263}, {"file": "obkr52010_x1d.fits", "star": "HD 214930", "mode": "E140H", "nominal": 1.2721532966391416e-13, "lam_med": 1254.112173618536}, {"file": "obkr55010_x1d.fits", "star": "* 42 Cas", "mode": "E140H", "nominal": 7.898908099826035e-14, "lam_med": 1254.2819073124363}, {"file": "obkr5e010_x1d.fits", "star": "HD 152249", "mode": "E140H", "nominal": 1.0811378044975543e-13, "lam_med": 1253.9423246371325}, {"file": "obkr60010_x1d.fits", "star": "* 13 Tau", "mode": "E140H", "nominal": 1.0787322759655115e-13, "lam_med": 1254.0248594098216}, {"file": "obkr6h010_x1d.fits", "star": "HD 152424", "mode": "E140H", "nominal": 4.6277466526218844e-14, "lam_med": 1254.162184003152}, {"file": "obkr6m010_x1d.fits", "star": "HD 208440", "mode": "E140H", "nominal": 7.308966156839642e-14, "lam_med": 1254.2928691603424}, {"file": "obkr7a010_x1d.fits", "star": "HD 105056", "mode": "E140H", "nominal": 1.2061797618988163e-13, "lam_med": 1254.0972957266476}, {"file": "obkr7c010_x1d.fits", "star": "HD 1383", "mode": "E140H", "nominal": 3.404224113166854e-14, "lam_med": 1253.9581589319553}, {"file": "obkr7f010_x1d.fits", "star": "* 10 Per", "mode": "E140H", "nominal": 3.778110264539905e-14, "lam_med": 1254.2582605601422}, {"file": "obkr7g010_x1d.fits", "star": "HD 25443", "mode": "E140H", "nominal": 4.034148943716687e-14, "lam_med": 1254.266289357754}, {"file": "obkr7v010_x1d.fits", "star": "HD 108927", "mode": "E140H", "nominal": 3.448277283047419e-14, "lam_med": 1254.0618893796745}, {"file": "obkr7w010_x1d.fits", "star": "CPD-59 4552", "mode": "E140H", "nominal": 3.566425029909076e-14, "lam_med": 1254.1223845545114}, {"file": "obkr7x010_x1d.fits", "star": "HD 124979", "mode": "E140H", "nominal": 3.105068009722866e-14, "lam_med": 1254.266194023695}, {"file": "obkr8a010_x1d.fits", "star": "HD 21279", "mode": "E140H", "nominal": 3.0924769143457747e-14, "lam_med": 1254.2439644268757}, {"file": "obkr8f010_x1d.fits", "star": "HD 173502", "mode": "E140H", "nominal": 3.606257766746883e-14, "lam_med": 1253.7067246454494}, {"file": "obkr8k010_x1d.fits", "star": "HD 50562", "mode": "E140H", "nominal": 3.2598735754418053e-14, "lam_med": 1253.997836083663}, {"file": "obkr8m010_x1d.fits", "star": "HD 13841", "mode": "E140H", "nominal": 3.073026096985526e-14, "lam_med": 1254.3541982308689}, {"file": "obkr8o010_x1d.fits", "star": "HD 99953", "mode": "E140H", "nominal": 4.1082765328683624e-14, "lam_med": 1254.3487963397806}, {"file": "obkr8t010_x1d.fits", "star": "HD 192639", "mode": "E140H", "nominal": 3.424108566993001e-14, "lam_med": 1253.778096355414}, {"file": "obkr94010_x1d.fits", "star": "HD 89137", "mode": "E140H", "nominal": 1.0699510275385444e-13, "lam_med": 1254.3159257007815}, {"file": "oblh01020_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.675276825008784e-15, "lam_med": 1380.3555461633637}, {"file": "oblh01040_x1d.fits", "star": "* alf Cen B", "mode": "E230M", "nominal": 3.7102464372158624e-14, "lam_med": 1917.694927214995, "rec": [0.0, 0.175, 0.4810126582278481, 0.625, 0.675, 0.825]}, {"file": "oblh01050_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 3.8944853801655684e-15, "lam_med": 1380.5451925455677}, {"file": "oblh02020_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.768206261752113e-15, "lam_med": 1380.6411845274401}, {"file": "oblh02040_x1d.fits", "star": "* alf Cen B", "mode": "E230M", "nominal": 3.770087073582663e-14, "lam_med": 1917.5472300840127}, {"file": "oblh02050_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 4.255396226012787e-15, "lam_med": 1380.5548447880908}, {"file": "obmca1020_x1d.fits", "star": "CD-34 7390A", "mode": "E230M", "nominal": 2.9525367240990406e-15, "lam_med": 2488.8372219536154}, {"file": "obme01020_x1d.fits", "star": "V* FK Com", "mode": "E140M", "nominal": 2.960622235516777e-15, "lam_med": 1379.9210702454411}, {"file": "obn6e1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5981857390820436e-14, "lam_med": 2257.7976574804934}, {"file": "obn6e1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.604785532902152e-13, "lam_med": 1380.6585246110146}, {"file": "obn6e1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8481302665323875e-13, "lam_med": 1917.3726811494428}, {"file": "obn6e1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.109965406724878e-14, "lam_med": 1414.8974524191226}, {"file": "obn6e1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.4914488398082824e-14, "lam_med": 2632.143293928088}, {"file": "obn6e2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.576455616624586e-14, "lam_med": 2257.859529172703}, {"file": "obn6e2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.610408515778706e-13, "lam_med": 1380.6106042753956}, {"file": "obn6e2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8510167926535758e-13, "lam_med": 1917.3841902661138}, {"file": "obn6e2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.276311207676917e-14, "lam_med": 1414.8268820036549}, {"file": "obn6e2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.4674107181699166e-14, "lam_med": 2631.6757573820487}, {"file": "obn6e3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5456665606494194e-14, "lam_med": 2258.02195910738}, {"file": "obn6e3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5673734612032074e-13, "lam_med": 1380.622001818635}, {"file": "obn6e3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.861695534149083e-13, "lam_med": 1917.587711940073}, {"file": "obn6e3040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.260770224934376e-14, "lam_med": 1415.1833265032724}, {"file": "obn6e3050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.3861747881384373e-14, "lam_med": 2632.0933580041324}, {"file": "obn6e4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.557257764857656e-14, "lam_med": 2258.0493321237172}, {"file": "obn6e4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5916209246582303e-13, "lam_med": 1380.2841702951937}, {"file": "obn6e4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8297014316506785e-13, "lam_med": 1917.492079186557, "rec": [0.025, 0.35, 0.775, 1.0, 0.975, 1.0]}, {"file": "obn6e4040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.21774870636131e-14, "lam_med": 1414.955324935487}, {"file": "obn6e4050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.442452878644515e-14, "lam_med": 2632.9828570733343}, {"file": "obon01010_x1d.fits", "star": "KPD 0005+5106", "mode": "E230M", "nominal": 6.543941077091763e-14, "lam_med": 1917.4041195084246}, {"file": "obon01020_x1d.fits", "star": "KPD 0005+5106", "mode": "E230M", "nominal": 1.3971288601943082e-14, "lam_med": 2629.60685434764}, {"file": "obon01030_x1d.fits", "star": "KPD 0005+5106", "mode": "E140M", "nominal": 3.507849416641853e-14, "lam_med": 1380.3263689533487}, {"file": "obon01040_x1d.fits", "star": "KPD 0005+5106", "mode": "E140M", "nominal": 2.1769972605896388e-14, "lam_med": 1379.441319632038}, {"file": "oboq01010_x1d.fits", "star": "V* EK Dra", "mode": "E140M", "nominal": 6.8137523710648e-16, "lam_med": 1380.937409117268}, {"file": "obot01010_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 2.0712489090039127e-13, "lam_med": 1380.3985369790512}, {"file": "obot01020_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 2.8359153430927103e-13, "lam_med": 1380.4378137102196}, {"file": "obot01030_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 5.825198967145786e-13, "lam_med": 1380.5044996008241}, {"file": "obot01040_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 2.5008920171049565e-13, "lam_med": 1380.4786972746685}, {"file": "obot01050_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 2.4401475909474815e-13, "lam_med": 1380.4834008378198}, {"file": "obot02010_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 1.8519978179655866e-13, "lam_med": 1917.3568556094383}, {"file": "obot02020_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 3.4986692544520557e-13, "lam_med": 1917.450371878307}, {"file": "obot02030_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 7.089567818906194e-13, "lam_med": 1917.4219940927517}, {"file": "obot02040_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 2.796517653444532e-13, "lam_med": 1917.4105099102776}, {"file": "obot02050_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 2.3389247000536743e-13, "lam_med": 1917.3857748607059}, {"file": "obot03010_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 5.013854958594714e-14, "lam_med": 2632.7522002357405}, {"file": "obot03020_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 8.288448886939358e-14, "lam_med": 2632.1943151128808}, {"file": "obot03030_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 1.738120321391427e-13, "lam_med": 2631.9456480271365}, {"file": "obot03040_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 7.291452465564446e-14, "lam_med": 2632.785684281415}, {"file": "obot03050_x1d.fits", "star": "BD+52 913", "mode": "E230M", "nominal": 6.620819995798582e-14, "lam_med": 2632.833463083634}, {"file": "obot04010_x1d.fits", "star": "* alf Lyr", "mode": "E140M", "nominal": 1.2291855839181115e-11, "lam_med": 1380.2059395180431}, {"file": "obot04020_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 4.460931603087462e-12, "lam_med": 1254.1088258892705}, {"file": "obot04030_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 4.256387053649027e-12, "lam_med": 1254.2103977546185}, {"file": "obot04040_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 3.212856143871778e-12, "lam_med": 1254.206340948251}, {"file": "obovs1010_x1d.fits", "star": "EGGR 141", "mode": "E140M", "nominal": 2.2464719379207023e-14, "lam_med": 1379.8097634649848}, {"file": "obpf02010_x1d.fits", "star": "HD 91943", "mode": "E230H", "nominal": 1.3436139486296636e-13, "lam_med": 1962.4965912801636}, {"file": "obpf02020_x1d.fits", "star": "HD 91943", "mode": "E230H", "nominal": 1.2665009639931665e-13, "lam_med": 1962.5672878207306}, {"file": "obpf02030_x1d.fits", "star": "HD 91943", "mode": "E230H", "nominal": 1.3317696240180217e-13, "lam_med": 1962.5852311540455}, {"file": "obpf02040_x1d.fits", "star": "HD 91943", "mode": "E230H", "nominal": 1.3547766667514452e-13, "lam_med": 1962.6186790222105}, {"file": "obq201010_x1d.fits", "star": "* pi.03 Ori", "mode": "E230H", "nominal": 1.0036503967651505e-14, "lam_med": 2696.4842685506464}, {"file": "obq201020_x1d.fits", "star": "* pi.03 Ori", "mode": "E140M", "nominal": 8.006581767869255e-18, "lam_med": 1380.7503928446815}, {"file": "obq201030_x1d.fits", "star": "* pi.03 Ori", "mode": "E140M", "nominal": 6.252166811910464e-16, "lam_med": 1378.4117715998693}, {"file": "obq202010_x1d.fits", "star": "* pi.01 UMa", "mode": "E140M", "nominal": 1.0075581124892883e-15, "lam_med": 1380.5080538955774}, {"file": "obq202020_x1d.fits", "star": "* pi.01 UMa", "mode": "E140M", "nominal": 9.44863684094681e-16, "lam_med": 1380.4624356045128}, {"file": "obq203010_x1d.fits", "star": "* 111 Tau", "mode": "E230H", "nominal": 3.962144645982731e-14, "lam_med": 2696.463998326062}, {"file": "obq203020_x1d.fits", "star": "* 111 Tau", "mode": "E140M", "nominal": 2.2635355262010767e-15, "lam_med": 1379.8034011664713}, {"file": "obq203030_x1d.fits", "star": "* 111 Tau", "mode": "E140M", "nominal": 1.7248388818841772e-15, "lam_med": 1378.3625733409456}, {"file": "obq204010_x1d.fits", "star": "V* HN Peg", "mode": "E230H", "nominal": 1.6759223052334238e-14, "lam_med": 2695.9912228870153}, {"file": "obq204020_x1d.fits", "star": "V* HN Peg", "mode": "E140M", "nominal": 2.8100170122624425e-17, "lam_med": 1380.6013112244866}, {"file": "obq204030_x1d.fits", "star": "V* HN Peg", "mode": "E140M", "nominal": 8.811396657491398e-16, "lam_med": 1379.9323354011383}, {"file": "obq601010_x1d.fits", "star": "HD 196944", "mode": "E230M", "nominal": 8.388868457453618e-15, "lam_med": 2632.750287909885}, {"file": "obq601020_x1d.fits", "star": "HD 196944", "mode": "E230M", "nominal": 6.328873647550155e-15, "lam_med": 2632.759198312434}, {"file": "obq601030_x1d.fits", "star": "HD 196944", "mode": "E230M", "nominal": 6.42919667158066e-15, "lam_med": 2632.755128279784}, {"file": "obq602010_x1d.fits", "star": "HD 201626", "mode": "E230M", "nominal": 5.6641244265451444e-15, "lam_med": 2632.6864804892825}, {"file": "obq602020_x1d.fits", "star": "HD 201626", "mode": "E230M", "nominal": 4.536455516369091e-15, "lam_med": 2632.552519394933}, {"file": "obq602030_x1d.fits", "star": "HD 201626", "mode": "E230M", "nominal": 4.594686262652221e-15, "lam_med": 2632.488182774149}, {"file": "obq603010_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 8.126562318020803e-15, "lam_med": 2632.714122555466}, {"file": "obq603020_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 6.354664175496906e-15, "lam_med": 2632.7403260975716}, {"file": "obq603030_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 7.681136965309025e-15, "lam_med": 2632.723415963751}, {"file": "obq603040_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 6.4309596823380235e-15, "lam_med": 2632.730701978773}, {"file": "obq604010_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 8.111889646703743e-15, "lam_med": 2632.6614678367323, "rec": [0.0, 0.375, 0.7083333333333334, 0.875, 0.875, 0.9166666666666666]}, {"file": "obq604020_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 6.432284733231139e-15, "lam_med": 2632.6899023732008}, {"file": "obq604030_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 7.579259969549557e-15, "lam_med": 2631.9483146013804}, {"file": "obq604040_x1d.fits", "star": "BD+44 493", "mode": "E230M", "nominal": 6.341732189129953e-15, "lam_med": 2631.9043912924662}, {"file": "obqr01010_x1d.fits", "star": "HD 192310", "mode": "E230H", "nominal": 6.127797910085119e-15, "lam_med": 2695.935723583745}, {"file": "obqr01020_x1d.fits", "star": "HD 192310", "mode": "E140M", "nominal": 9.062395444078743e-16, "lam_med": 1378.4784744162632}, {"file": "obqr01030_x1d.fits", "star": "HD 192310", "mode": "E140M", "nominal": 1.099303207923154e-15, "lam_med": 1377.6902838795838}, {"file": "obqr04010_x1d.fits", "star": "* ups And", "mode": "E230H", "nominal": 2.8324821232001994e-14, "lam_med": 2696.144079766104}, {"file": "obqr04020_x1d.fits", "star": "* ups And", "mode": "E140M", "nominal": 1.273573562455629e-15, "lam_med": 1379.5635495734957, "rec": [0.0, 0.325, 0.5365853658536586, 0.5121951219512195, 0.6585365853658537, 0.8048780487804879]}, {"file": "obqr04030_x1d.fits", "star": "* ups And", "mode": "E140M", "nominal": 1.3758085782745912e-15, "lam_med": 1379.945510029483}, {"file": "obqr53010_x1d.fits", "star": "HD 1237", "mode": "E230H", "nominal": 2.721735302743868e-15, "lam_med": 2696.1178279037895}, {"file": "obqr53020_x1d.fits", "star": "HD 1237", "mode": "E140M", "nominal": 4.18516012992064e-16, "lam_med": 1379.4200761341951}, {"file": "obqr53030_x1d.fits", "star": "HD 1237", "mode": "E140M", "nominal": 6.891312984012349e-16, "lam_med": 1378.259025626911, "rec": [0.025, 0.30952380952380953, 0.38095238095238093, 0.6190476190476191, 0.5952380952380952, 0.5853658536585366]}, {"file": "obqx01010_x1d.fits", "star": "V* S Dor", "mode": "E230M", "nominal": 2.5168771335489655e-14, "lam_med": 2631.642684982318}, {"file": "obqx01020_x1d.fits", "star": "V* S Dor", "mode": "E230M", "nominal": 3.0189069051375525e-14, "lam_med": 1917.507201971166}, {"file": "obqx01030_x1d.fits", "star": "V* S Dor", "mode": "E140M", "nominal": 1.2044699965169523e-14, "lam_med": 1380.4148466959855}, {"file": "obrn02010_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1051695641931015e-14, "lam_med": 1917.4189953231723}, {"file": "obrn02020_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1370619717823585e-14, "lam_med": 1917.0133234567024}, {"file": "obrn02030_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1570249195303513e-14, "lam_med": 1917.3333493222474}, {"file": "obrn02040_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1804169293432357e-14, "lam_med": 1917.5578637086396}, {"file": "obrn02050_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1892545994270629e-14, "lam_med": 1917.2235930679708}, {"file": "obrn02060_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.2786561417807068e-14, "lam_med": 2629.223309309845}, {"file": "obrn02070_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.2825513674098988e-14, "lam_med": 2629.218806282569}, {"file": "obrn02080_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.2733043128293427e-14, "lam_med": 2629.147552964047}, {"file": "obrn02090_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.2677688694602614e-14, "lam_med": 2628.9361812688558}, {"file": "obrn020a0_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.2585812262180823e-14, "lam_med": 2628.9362571665197}, {"file": "obrn06010_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.0620176975846164e-14, "lam_med": 1917.3798033502844}, {"file": "obrn06020_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.0775956861603372e-14, "lam_med": 1916.9745847128038}, {"file": "obrn06030_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.10134526945099e-14, "lam_med": 1917.326831851157}, {"file": "obrn06040_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1184304159440907e-14, "lam_med": 1917.5351844964316}, {"file": "obrn06050_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1195723995698929e-14, "lam_med": 1917.1896861887424}, {"file": "obrn06060_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.1915804334180034e-14, "lam_med": 2630.402509989788, "rec": [0.0, 0.4166666666666667, 0.9166666666666666, 1.0, 1.0, 0.9583333333333334]}, {"file": "obrn06070_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.205027695373712e-14, "lam_med": 2630.731516538197}, {"file": "obrn06080_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.2023415527679735e-14, "lam_med": 2630.5523117267758}, {"file": "obrn06090_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.207598910345902e-14, "lam_med": 2630.2162691324174}, {"file": "obrn060a0_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.198051485278202e-14, "lam_med": 2630.4895834488475}, {"file": "obrn09010_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.0619452496404174e-14, "lam_med": 1917.4469589060973}, {"file": "obrn09020_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.0777530515908203e-14, "lam_med": 1917.029603401939}, {"file": "obrn09030_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.0987799940505596e-14, "lam_med": 1917.3783503040736}, {"file": "obrn09040_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1174297811023478e-14, "lam_med": 1917.6181085959897}, {"file": "obrn09050_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 1.1183862752262615e-14, "lam_med": 1917.2719882741476}, {"file": "obrn09060_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.30005666038617e-14, "lam_med": 2630.1270234513304}, {"file": "obrn09070_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.302557847569776e-14, "lam_med": 2630.417640764313}, {"file": "obrn09080_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.3002797551423887e-14, "lam_med": 2630.279791997937}, {"file": "obrn09090_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.2932137454931767e-14, "lam_med": 2629.829671681535}, {"file": "obrn090a0_x1d.fits", "star": "HD 204827", "mode": "E230M", "nominal": 2.299339757978935e-14, "lam_med": 2630.177755557071}, {"file": "obtg01010_x1d.fits", "star": "LMCN 2012-03a", "mode": "E140M", "nominal": 2.396329668415953e-17, "lam_med": 1379.9870597304334}, {"file": "obtg01020_x1d.fits", "star": "LMCN 2012-03a", "mode": "E230M", "nominal": 1.7320525704637394e-14, "lam_med": 1917.4769515460673}, {"file": "obtg01030_x1d.fits", "star": "LMCN 2012-03a", "mode": "E230M", "nominal": 3.3812055115720775e-15, "lam_med": 2629.6345047926425}, {"file": "obua01010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.19494913275943e-15, "lam_med": 1380.3135898876826, "rec": [0.016129032258064516, 0.11382113821138211, 0.19834710743801653, 0.4462809917355372, 0.6833333333333333, 0.8]}, {"file": "obua02010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.315274951203008e-15, "lam_med": 1380.676306124388}, {"file": "obw0a1020_x1d.fits", "star": "BD+49 3025", "mode": "E230M", "nominal": 2.4628682288613424e-15, "lam_med": 2488.9602407319626}, {"file": "obw3e1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5259019119911907e-14, "lam_med": 2257.615545263501}, {"file": "obw3e1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6004695488454084e-13, "lam_med": 1380.3520470310098}, {"file": "obw3e1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.831966835673315e-13, "lam_med": 1917.291709463027}, {"file": "obw3e1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.16330779278623e-14, "lam_med": 1414.8970210071134}, {"file": "obw3e1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.447043194794674e-14, "lam_med": 2632.6815684423627}, {"file": "obw3e2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.539698075238495e-14, "lam_med": 2257.7245257460827}, {"file": "obw3e2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.64189162427143e-13, "lam_med": 1380.5508432266242}, {"file": "obw3e2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.856773542531181e-13, "lam_med": 1917.3105476763606}, {"file": "obw3e2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.339005523283405e-14, "lam_med": 1414.8623197608729}, {"file": "obw3e2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.4516010565491806e-14, "lam_med": 2632.250684567332}, {"file": "obw3e3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5245257232363355e-14, "lam_med": 2258.1792827071113}, {"file": "obw3e3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6049089022270885e-13, "lam_med": 1380.2515346731739}, {"file": "obw3e3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8288409852876446e-13, "lam_med": 1917.6177138103521}, {"file": "obw3e3040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.2790101563351e-14, "lam_med": 1415.1505153558471, "rec": [0.02631578947368421, 0.5263157894736842, 0.5897435897435898, 0.8108108108108109, 0.8648648648648649, 0.8918918918918919]}, {"file": "obw3e3050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.3847195165177394e-14, "lam_med": 2631.5148260076207}, {"file": "obw3e4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5442209137062803e-14, "lam_med": 2258.058637084304}, {"file": "obw3e4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5846801215329174e-13, "lam_med": 1380.4086250368746, "rec": [0.024390243902439025, 0.5454545454545454, 0.8780487804878049, 0.9302325581395349, 0.9512195121951219, 0.975609756097561]}, {"file": "obw3e4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8326969708661025e-13, "lam_med": 1917.54237836459}, {"file": "obw3e4040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.246922516989802e-14, "lam_med": 1415.0612846650674}, {"file": "obw3e4050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.393906680192163e-14, "lam_med": 2631.7671326341565}, {"file": "obx701010_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 3.4222350428480642e-15, "lam_med": 1379.2096130188577}, {"file": "obx701020_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 3.10011145750791e-15, "lam_med": 1378.5654909572775}, {"file": "obxs01010_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 2.432123131367586e-15, "lam_med": 1379.1536305694137}, {"file": "obxs01020_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 2.2217978262286046e-15, "lam_med": 1379.6579298302152}, {"file": "obxs03010_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 2.4590498250416594e-15, "lam_med": 1379.3713821788615}, {"file": "obxs03020_x1d.fits", "star": "V* T Pyx", "mode": "E140M", "nominal": 2.1909777100009225e-15, "lam_med": 1379.3802259938293}, {"file": "obxv01010_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.500271876325339e-14, "lam_med": 1917.2638240856948}, {"file": "obxv01020_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.1973686639248765e-14, "lam_med": 1917.2934083889809}, {"file": "obxv01030_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.239917860281861e-14, "lam_med": 1917.2922073120665}, {"file": "obxv02010_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.3503719569781757e-14, "lam_med": 1917.243110344936}, {"file": "obxv02020_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.0689034103928433e-14, "lam_med": 1917.3102129089038}, {"file": "obxv02030_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.118099471024005e-14, "lam_med": 1917.2895197455332}, {"file": "obxv03010_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.4038484771899818e-14, "lam_med": 1917.2136204729227}, {"file": "obxv03020_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.0844303211072549e-14, "lam_med": 1917.257572388309}, {"file": "obxv03030_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.1241800037085473e-14, "lam_med": 1917.2568047047257}, {"file": "obxv04010_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.4096940638650866e-14, "lam_med": 1917.2198995495162}, {"file": "obxv04020_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.0921968420432119e-14, "lam_med": 1917.2748720706797}, {"file": "obxv04030_x1d.fits", "star": "HD 108317", "mode": "E230M", "nominal": 1.1113160119525942e-14, "lam_med": 1917.2719785531358}, {"file": "obxv05010_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.3945333807325789e-14, "lam_med": 1917.637018829478}, {"file": "obxv05020_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.1258344932197007e-14, "lam_med": 1917.6027462414108}, {"file": "obxv05030_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.3640681952400445e-14, "lam_med": 1917.6001231457333, "rec": [0.0, 0.4, 0.575, 0.95, 0.9736842105263158, 0.9487179487179487]}, {"file": "obxv05040_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.1558034832028299e-14, "lam_med": 1917.6162898545008}, {"file": "obxv05050_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.1658446681811523e-14, "lam_med": 1917.6323292356205}, {"file": "obxv06010_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.36969085394503e-14, "lam_med": 1917.6601833691636}, {"file": "obxv06020_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.12203119039605e-14, "lam_med": 1917.6384653168002}, {"file": "obxv06030_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.548805643337684e-14, "lam_med": 1917.6329092208284}, {"file": "obxv06040_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.1558534332033051e-14, "lam_med": 1917.61809381433}, {"file": "obxv06050_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.1725490595830074e-14, "lam_med": 1917.6190425479103}, {"file": "obxv07010_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.3684350873387074e-14, "lam_med": 1917.634499102679}, {"file": "obxv07020_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.0574141581709425e-14, "lam_med": 1917.6138815323243}, {"file": "obxv07030_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.3497422444817535e-14, "lam_med": 1917.6213872423873}, {"file": "obxv07040_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.1546404296425232e-14, "lam_med": 1917.6021518049204}, {"file": "obxv07050_x1d.fits", "star": "HD 128279", "mode": "E230M", "nominal": 1.405495828209728e-14, "lam_med": 1917.600376681737}, {"file": "obye01010_x1d.fits", "star": "* 49 Cet", "mode": "E140H", "nominal": 6.252550742377957e-15, "lam_med": 1253.7152789128595}, {"file": "obye01020_x1d.fits", "star": "* 49 Cet", "mode": "E140H", "nominal": 3.2821471073180366e-14, "lam_med": 1415.2933798767015}, {"file": "obye01030_x1d.fits", "star": "* 49 Cet", "mode": "E140H", "nominal": 5.82626334669591e-14, "lam_med": 1583.7058271393016}, {"file": "obye02010_x1d.fits", "star": "* 49 Cet", "mode": "E140H", "nominal": 6.182376150020936e-15, "lam_med": 1254.0141350554322}, {"file": "obye02020_x1d.fits", "star": "* 49 Cet", "mode": "E140H", "nominal": 3.2547945933003547e-14, "lam_med": 1415.1331305420704}, {"file": "obye02030_x1d.fits", "star": "* 49 Cet", "mode": "E140H", "nominal": 5.845315848056777e-14, "lam_med": 1583.8090208036524}, {"file": "obzl01010_x1d.fits", "star": "BBB SMC 266", "mode": "E140H", "nominal": 5.942116331412929e-15, "lam_med": 1289.4419589626589}, {"file": "obzl01020_x1d.fits", "star": "BBB SMC 266", "mode": "E140H", "nominal": 5.339419040135876e-15, "lam_med": 1289.3918557395364, "rec": [0.023255813953488372, 0.4, 0.7674418604651163, 0.8181818181818182, 0.8372093023255814, 0.8604651162790697]}, {"file": "obzl01030_x1d.fits", "star": "BBB SMC 266", "mode": "E140H", "nominal": 5.381178624401327e-15, "lam_med": 1289.4386330319924}, {"file": "obzl01040_x1d.fits", "star": "BBB SMC 266", "mode": "E140H", "nominal": 5.429194565228605e-15, "lam_med": 1289.4380441151495}, {"file": "obzl01050_x1d.fits", "star": "BBB SMC 266", "mode": "E140H", "nominal": 5.449478749933812e-15, "lam_med": 1289.4257321910845}, {"file": "obzl02010_x1d.fits", "star": "BBB SMC 266", "mode": "E230M", "nominal": 2.057053927436381e-14, "lam_med": 1917.5378812846511}, {"file": "obzl02020_x1d.fits", "star": "BBB SMC 266", "mode": "E230M", "nominal": 1.88247157853792e-14, "lam_med": 1917.5311765276786}, {"file": "obzl02030_x1d.fits", "star": "BBB SMC 266", "mode": "E230M", "nominal": 1.8984777653528223e-14, "lam_med": 1917.5285771952085, "rec": [0.0, 0.3, 0.875, 0.925, 0.9487179487179487, 1.0]}, {"file": "obzl02040_x1d.fits", "star": "BBB SMC 266", "mode": "E230M", "nominal": 1.9198979517551404e-14, "lam_med": 1917.5268526532082}, {"file": "obzl02050_x1d.fits", "star": "BBB SMC 266", "mode": "E230M", "nominal": 1.929740405472119e-14, "lam_med": 1917.5237608017387}, {"file": "obzl03010_x1d.fits", "star": "HD 269445", "mode": "E140H", "nominal": 2.700597025276407e-15, "lam_med": 1289.552957095586}, {"file": "obzl04010_x1d.fits", "star": "HD 269445", "mode": "E230M", "nominal": 1.470314713081505e-14, "lam_med": 1917.49581607314}, {"file": "obzl04020_x1d.fits", "star": "HD 269445", "mode": "E230M", "nominal": 1.3635155282712944e-14, "lam_med": 1917.4751489137743}, {"file": "obzl04030_x1d.fits", "star": "HD 269445", "mode": "E230M", "nominal": 1.3844417650932041e-14, "lam_med": 1917.4727505582046}, {"file": "obzl04040_x1d.fits", "star": "HD 269445", "mode": "E230M", "nominal": 1.4087077404269732e-14, "lam_med": 1917.485558367902}, {"file": "obzl04050_x1d.fits", "star": "HD 269445", "mode": "E230M", "nominal": 1.4302313201616808e-14, "lam_med": 1917.4830357676326}, {"file": "oc0e01010_x1d.fits", "star": "HD 188112", "mode": "E230H", "nominal": 1.5347649889435044e-14, "lam_med": 2793.923777019412}, {"file": "oc0e01020_x1d.fits", "star": "HD 188112", "mode": "E140H", "nominal": 1.4369790432796172e-13, "lam_med": 1330.8567086071098}, {"file": "oc0e01030_x1d.fits", "star": "HD 188112", "mode": "E230H", "nominal": 9.307744647372444e-15, "lam_med": 2794.0477655317163}, {"file": "oc1i10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.357276480928838e-15, "lam_med": 1380.1730202483923}, {"file": "oc1i11010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.520702103457215e-15, "lam_med": 1380.306255817926}, {"file": "oc2503010_x1d.fits", "star": "CD-38 13815", "mode": "E140M", "nominal": 2.9167296987611833e-14, "lam_med": 1379.8322423324335}, {"file": "oc2505010_x1d.fits", "star": "V* BR Mic", "mode": "E140H", "nominal": 1.485408208154101e-13, "lam_med": 1254.0133246437938}, {"file": "oc2505020_x1d.fits", "star": "V* BR Mic", "mode": "E140H", "nominal": 8.295266203926222e-14, "lam_med": 1477.8559473406679}, {"file": "oc2507010_x1d.fits", "star": "CD-80 228", "mode": "E140M", "nominal": 1.876732067204158e-14, "lam_med": 1379.6370627418896}, {"file": "oc2508010_x1d.fits", "star": "LB 3193", "mode": "E140M", "nominal": 9.196371264384287e-15, "lam_med": 1379.5170730495715}, {"file": "oc2509010_x1d.fits", "star": "HD 86248", "mode": "E140H", "nominal": 8.458050130220283e-14, "lam_med": 1254.1113969937333}, {"file": "oc2509020_x1d.fits", "star": "HD 86248", "mode": "E140H", "nominal": 8.285698248743428e-14, "lam_med": 1477.9978087902246, "rec": [0.027777777777777776, 0.4, 0.6857142857142857, 0.8571428571428571, 0.9722222222222222, 0.972972972972973]}, {"file": "oc2511010_x1d.fits", "star": "CD-24 16312", "mode": "E140M", "nominal": 1.6398098517041166e-14, "lam_med": 1379.558967033875, "rec": [0.0, 0.5, 0.6410256410256411, 0.825, 0.9285714285714286, 0.8536585365853658]}, {"file": "oc2512010_x1d.fits", "star": "PHL 460", "mode": "E140M", "nominal": 1.1823627820461464e-14, "lam_med": 1379.9729548838804}, {"file": "oc2513010_x1d.fits", "star": "HD 108230", "mode": "E140H", "nominal": 6.188664955302834e-14, "lam_med": 1254.2419737612197}, {"file": "oc2513020_x1d.fits", "star": "HD 108230", "mode": "E140H", "nominal": 6.264581999259968e-14, "lam_med": 1477.9111410448177}, {"file": "oc2514010_x1d.fits", "star": "CD-61 1208", "mode": "E140M", "nominal": 3.392940746687222e-14, "lam_med": 1379.4054807163175}, {"file": "oc2515010_x1d.fits", "star": "PG 1205+228", "mode": "E140M", "nominal": 3.021506813064693e-14, "lam_med": 1379.1188718265525}, {"file": "oc2516010_x1d.fits", "star": "PG 1533+467", "mode": "E140M", "nominal": 2.492735568820195e-14, "lam_med": 1378.7320466759243}, {"file": "oc2518010_x1d.fits", "star": "HD 125924", "mode": "E140H", "nominal": 6.574586016506445e-14, "lam_med": 1254.0122626766808}, {"file": "oc2518020_x1d.fits", "star": "HD 125924", "mode": "E140H", "nominal": 6.419223058183146e-14, "lam_med": 1477.9164280944517}, {"file": "oc2520010_x1d.fits", "star": "V* UX CVn", "mode": "E140M", "nominal": 1.9477195767094958e-14, "lam_med": 1380.3942461740871}, {"file": "oc2523010_x1d.fits", "star": "PG 2345+241", "mode": "E140M", "nominal": 1.3293815766055366e-14, "lam_med": 1379.6906056465098}, {"file": "oc2524010_x1d.fits", "star": "HD 206144", "mode": "E140H", "nominal": 5.786449697689164e-14, "lam_med": 1254.3532534999717}, {"file": "oc2524020_x1d.fits", "star": "HD 206144", "mode": "E140H", "nominal": 4.685675279688329e-14, "lam_med": 1477.5498525844928, "rec": [0.08571428571428572, 0.4166666666666667, 0.7142857142857143, 0.8571428571428571, 0.8611111111111112, 0.9142857142857143]}, {"file": "oc2525010_x1d.fits", "star": "HD 214080", "mode": "E140H", "nominal": 2.643407438856363e-13, "lam_med": 1254.1580925404473}, {"file": "oc2525020_x1d.fits", "star": "HD 214080", "mode": "E140H", "nominal": 2.1259408317294753e-13, "lam_med": 1477.6737940970934}, {"file": "oc2527010_x1d.fits", "star": "BD-15 115", "mode": "E140M", "nominal": 4.249661364590135e-14, "lam_med": 1378.8500123514987}, {"file": "oc2c01010_x1d.fits", "star": "* alf CMa B", "mode": "E140H", "nominal": 1.0212627610115988e-14, "lam_med": 1254.0792539112224}, {"file": "oc2c01020_x1d.fits", "star": "* alf CMa B", "mode": "E140H", "nominal": 1.4225608857818577e-14, "lam_med": 1477.7918341587174}, {"file": "oc2c01030_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 4.2692909616360985e-15, "lam_med": 2744.0786551506703}, {"file": "oc2c01040_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 3.036009064552992e-15, "lam_med": 2793.713187045716}, {"file": "oc2c01050_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 3.246171169193177e-15, "lam_med": 2857.810480740366}, {"file": "oc2c01060_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 3.500169167199284e-15, "lam_med": 2907.519448743699}, {"file": "oc2c51010_x1d.fits", "star": "* alf CMa B", "mode": "E140H", "nominal": 1.3859526373565393e-13, "lam_med": 1254.0448291786038}, {"file": "oc2c51020_x1d.fits", "star": "* alf CMa B", "mode": "E140H", "nominal": 1.0400440643662162e-13, "lam_med": 1477.5989648614102}, {"file": "oc2c51030_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 3.1475306731444966e-14, "lam_med": 2744.0397368629338}, {"file": "oc2c51040_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 1.90219874883541e-14, "lam_med": 2793.5394993907366}, {"file": "oc2c51050_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 1.8885520975474564e-14, "lam_med": 2857.7125295049314}, {"file": "oc2c51060_x1d.fits", "star": "* alf CMa B", "mode": "E230H", "nominal": 1.8867882253732136e-14, "lam_med": 2907.251338865109}, {"file": "oc2h01020_x1d.fits", "star": "V* XY Per", "mode": "E140M", "nominal": 2.0703663667530947e-15, "lam_med": 1380.013414393337}, {"file": "oc2h01030_x1d.fits", "star": "V* XY Per", "mode": "E140M", "nominal": 1.78982645784234e-15, "lam_med": 1379.5337499333004}, {"file": "oc2h02020_x1d.fits", "star": "HD 169142", "mode": "E140M", "nominal": 1.7402521757894218e-15, "lam_med": 1379.238768201762}, {"file": "oc2h02030_x1d.fits", "star": "HD 169142", "mode": "E140M", "nominal": 1.4915685230101133e-15, "lam_med": 1378.4980067809297}, {"file": "oc2h03020_x1d.fits", "star": "HD 142666", "mode": "E140M", "nominal": 6.769262034051619e-17, "lam_med": 1379.6951191339951}, {"file": "oc2h03030_x1d.fits", "star": "HD 142666", "mode": "E140M", "nominal": 5.705695080051796e-16, "lam_med": 1378.7839737211734}, {"file": "oc2h04020_x1d.fits", "star": "HD 141569", "mode": "E140M", "nominal": 1.0273714008533617e-13, "lam_med": 1380.372008442232}, {"file": "oc2h04030_x1d.fits", "star": "HD 141569", "mode": "E140M", "nominal": 1.0338717500900028e-13, "lam_med": 1380.6688938349512}, {"file": "oc2h05020_x1d.fits", "star": "HD 139614", "mode": "E140M", "nominal": 1.7751789519514009e-15, "lam_med": 1379.5919314752655}, {"file": "oc2h05030_x1d.fits", "star": "HD 139614", "mode": "E140M", "nominal": 1.5139131214397372e-15, "lam_med": 1379.8167949780966, "rec": [0.025, 0.21951219512195122, 0.36585365853658536, 0.7, 0.7, 0.7619047619047619]}, {"file": "oc4701010_x1d.fits", "star": "V* V959 Mon", "mode": "E140M", "nominal": 2.2907347407045502e-15, "lam_med": 1380.1357630359503}, {"file": "oc4701020_x1d.fits", "star": "V* V959 Mon", "mode": "E230M", "nominal": 2.842987219601602e-14, "lam_med": 1917.570696956497}, {"file": "oc4701030_x1d.fits", "star": "V* V959 Mon", "mode": "E230M", "nominal": 7.404804891687509e-15, "lam_med": 2630.874813692758}, {"file": "oc4ke1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3068732611952622e-14, "lam_med": 2257.8363882714425}, {"file": "oc4ke1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.620794249154785e-13, "lam_med": 1380.5087114519547}, {"file": "oc4ke1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.638115581008244e-13, "lam_med": 1917.2756118214272}, {"file": "oc4ke1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.225834110255962e-14, "lam_med": 1414.8524268595913, "rec": [0.05263157894736842, 0.5675675675675675, 0.8378378378378378, 0.8333333333333334, 0.9473684210526315, 0.7837837837837838]}, {"file": "oc4ke1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.474802659896631e-14, "lam_med": 2632.274041934802}, {"file": "oc4ke2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3093092160708966e-14, "lam_med": 2257.6580763927827}, {"file": "oc4ke2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6303310207542e-13, "lam_med": 1380.2928221735485}, {"file": "oc4ke2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6487281950672049e-13, "lam_med": 1917.31642564916}, {"file": "oc4ke2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.30433309331909e-14, "lam_med": 1414.8658704270679}, {"file": "oc4ke2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.4762457592062675e-14, "lam_med": 2631.061804565535}, {"file": "oc4ke3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.332991125674644e-14, "lam_med": 2258.162707594546}, {"file": "oc4ke3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6196328625816967e-13, "lam_med": 1380.624293556211}, {"file": "oc4ke3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6767197762731057e-13, "lam_med": 1917.585802344286}, {"file": "oc4ke3040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.344599819002708e-14, "lam_med": 1415.0418925338745}, {"file": "oc4ke3050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.470690244641622e-14, "lam_med": 2633.075554047048}, {"file": "oc4ke4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.317584358660876e-14, "lam_med": 2257.865078679007}, {"file": "oc4ke4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.614721332022011e-13, "lam_med": 1380.2262237655104}, {"file": "oc4ke4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6280047990057835e-13, "lam_med": 1917.469929943291}, {"file": "oc4ke4040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.217199072589418e-14, "lam_med": 1414.7363077797609}, {"file": "oc4ke4050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.512399993002786e-14, "lam_med": 2632.8709132942386}, {"file": "oc7n01010_x1d.fits", "star": "MCT 0501-2858", "mode": "E140M", "nominal": 2.0116397862004826e-14, "lam_med": 1379.4941438290389}, {"file": "oc7n01020_x1d.fits", "star": "MCT 0501-2858", "mode": "E140M", "nominal": 1.8193335311884545e-14, "lam_med": 1379.9626224957024}, {"file": "oc7n01030_x1d.fits", "star": "MCT 0501-2858", "mode": "E230M", "nominal": 2.6743540139360238e-14, "lam_med": 1917.6120689603747}, {"file": "oc7n01040_x1d.fits", "star": "MCT 0501-2858", "mode": "E230M", "nominal": 7.077241218402955e-15, "lam_med": 2633.031375998453}, {"file": "oc7r01010_x1d.fits", "star": "V* V339 Del", "mode": "E140M", "nominal": 2.3621803617884035e-13, "lam_med": 1380.4952929419737}, {"file": "oc7r01020_x1d.fits", "star": "V* V339 Del", "mode": "E230H", "nominal": 2.9015741309666437e-13, "lam_med": 1754.5581901218}, {"file": "oc7r01030_x1d.fits", "star": "V* V339 Del", "mode": "E230H", "nominal": 1.4156440798837547e-13, "lam_med": 2008.3699498598203}, {"file": "oc7r01040_x1d.fits", "star": "V* V339 Del", "mode": "E230H", "nominal": 1.0107553340748201e-13, "lam_med": 2257.7485535962574}, {"file": "oc7r01050_x1d.fits", "star": "V* V339 Del", "mode": "E230H", "nominal": 9.918416751104159e-14, "lam_med": 2507.4252804882244}, {"file": "oc7r01060_x1d.fits", "star": "V* V339 Del", "mode": "E230H", "nominal": 1.0550983380769486e-13, "lam_med": 2743.9944433053442}, {"file": "oc7r02010_x1d.fits", "star": "V* V339 Del", "mode": "E140M", "nominal": 3.6460171127006995e-14, "lam_med": 1380.5093511732052}, {"file": "oc7r02020_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 4.250984061148894e-14, "lam_med": 1917.2930864204625, "rec": [0.0, 0.325, 0.675, 0.825, 0.9230769230769231, 0.875]}, {"file": "oc7r02030_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 1.4094092260189132e-14, "lam_med": 2632.657073681712}, {"file": "oc7r03010_x1d.fits", "star": "V* V339 Del", "mode": "E140M", "nominal": 2.2014775102596634e-14, "lam_med": 1380.2127537215774}, {"file": "oc7r03020_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 3.647749788609913e-14, "lam_med": 1917.5985153466386}, {"file": "oc7r03030_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 1.0464538048964212e-14, "lam_med": 2631.187150603978}, {"file": "oc7r04010_x1d.fits", "star": "V* V1369 Cen", "mode": "E140H", "nominal": 4.900750764336649e-14, "lam_med": 1228.2349311951784}, {"file": "oc7r04020_x1d.fits", "star": "V* V1369 Cen", "mode": "E140H", "nominal": 3.57779765124981e-14, "lam_med": 1414.7846574680962}, {"file": "oc7r04030_x1d.fits", "star": "V* V1369 Cen", "mode": "E140H", "nominal": 5.6441747954980684e-14, "lam_med": 1584.7123611810114}, {"file": "oc7r04040_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 9.53355027795826e-14, "lam_med": 1917.3512027881761}, {"file": "oc7r04050_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 3.448641295071646e-14, "lam_med": 2628.4324854601014}, {"file": "oc7r05010_x1d.fits", "star": "V* V1369 Cen", "mode": "E140H", "nominal": 3.864226547947748e-14, "lam_med": 1228.1227302730592}, {"file": "oc7r05020_x1d.fits", "star": "V* V1369 Cen", "mode": "E140H", "nominal": 3.1013324913765935e-14, "lam_med": 1414.667665156254}, {"file": "oc7r05030_x1d.fits", "star": "V* V1369 Cen", "mode": "E140H", "nominal": 4.545610485685515e-14, "lam_med": 1584.926500072555}, {"file": "oc7r05040_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 7.824364698654592e-14, "lam_med": 1917.3886383586646}, {"file": "oc7r05050_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 2.70779368094229e-14, "lam_med": 2630.15123330782}, {"file": "oc7r06010_x1d.fits", "star": "V* V339 Del", "mode": "E140M", "nominal": 8.187972973089561e-15, "lam_med": 1379.9164255215521}, {"file": "oc7r06020_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 2.02761219495875e-14, "lam_med": 1917.2843945369768}, {"file": "oc7r06030_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 5.110654531948957e-15, "lam_med": 2630.0239844493217}, {"file": "oc7w10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.748449543938863e-15, "lam_med": 1381.0057442611405, "rec": [0.064, 0.072, 0.2644628099173554, 0.49206349206349204, 0.6585365853658537, 0.7698412698412699]}, {"file": "oc7w11010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.574971477773933e-15, "lam_med": 1380.0312219671741}, {"file": "oc7x01010_x1d.fits", "star": "* sig Pup", "mode": "E230H", "nominal": 4.5417422068438345e-15, "lam_med": 2696.1601283748205}, {"file": "oc7x01020_x1d.fits", "star": "* sig Pup", "mode": "E140M", "nominal": 1.0948411345856422e-15, "lam_med": 1379.9005261813288}, {"file": "oc7x01030_x1d.fits", "star": "* sig Pup", "mode": "E140M", "nominal": 1.2895478426029266e-15, "lam_med": 1380.062025861}, {"file": "oc7x01040_x1d.fits", "star": "* sig Pup", "mode": "E140M", "nominal": 1.5396655257080065e-15, "lam_med": 1380.0605590551709}, {"file": "oc7x02010_x1d.fits", "star": "* alf Tuc", "mode": "E230H", "nominal": 5.0593287778389695e-15, "lam_med": 2696.3772749748096}, {"file": "oc7x02020_x1d.fits", "star": "* alf Tuc", "mode": "E140M", "nominal": 1.271944662701028e-15, "lam_med": 1380.0117038430787}, {"file": "oc7x02030_x1d.fits", "star": "* alf Tuc", "mode": "E140M", "nominal": 1.4917277855550284e-15, "lam_med": 1380.067302792383}, {"file": "oc7x02040_x1d.fits", "star": "* alf Tuc", "mode": "E140M", "nominal": 1.687444608255214e-15, "lam_med": 1380.2755440053504, "rec": [0.04878048780487805, 0.2682926829268293, 0.45454545454545453, 0.6190476190476191, 0.9024390243902439, 0.7857142857142857]}, {"file": "oc7x03010_x1d.fits", "star": "* tet CMa", "mode": "E230H", "nominal": 3.2293618515403382e-15, "lam_med": 2696.0046470604834}, {"file": "oc7x03020_x1d.fits", "star": "* tet CMa", "mode": "E140M", "nominal": 1.8705431256993454e-15, "lam_med": 1378.52361084956}, {"file": "oc7x03030_x1d.fits", "star": "* tet CMa", "mode": "E140M", "nominal": 2.0159872207982037e-15, "lam_med": 1379.0185227579702}, {"file": "oc7x03040_x1d.fits", "star": "* tet CMa", "mode": "E140M", "nominal": 2.1118272534422655e-15, "lam_med": 1378.506724532124}, {"file": "oc7x04010_x1d.fits", "star": "* g Cen", "mode": "E230H", "nominal": 3.3700085081062246e-15, "lam_med": 2695.988093031575}, {"file": "oc7x04020_x1d.fits", "star": "* g Cen", "mode": "E140M", "nominal": 1.136550580616078e-15, "lam_med": 1379.9257892295457}, {"file": "oc7x04030_x1d.fits", "star": "* g Cen", "mode": "E140M", "nominal": 1.2886915764202505e-15, "lam_med": 1380.066289021628}, {"file": "oc7x04040_x1d.fits", "star": "* g Cen", "mode": "E140M", "nominal": 1.4382047715481544e-15, "lam_med": 1380.172568083005}, {"file": "oc7x05010_x1d.fits", "star": "* gam Eri", "mode": "E230H", "nominal": 3.641803370671321e-15, "lam_med": 2696.031029052227}, {"file": "oc7x05020_x1d.fits", "star": "* gam Eri", "mode": "E140M", "nominal": 1.3004634587212797e-15, "lam_med": 1378.5216988081886}, {"file": "oc7x05030_x1d.fits", "star": "* gam Eri", "mode": "E140M", "nominal": 1.4949936295143553e-15, "lam_med": 1379.3713370435676, "rec": [0.0, 0.17073170731707318, 0.375, 0.6829268292682927, 0.6829268292682927, 0.7560975609756098]}, {"file": "oc7x05040_x1d.fits", "star": "* gam Eri", "mode": "E140M", "nominal": 1.756928529409697e-15, "lam_med": 1379.0581201085733, "rec": [0.047619047619047616, 0.2682926829268293, 0.3488372093023256, 0.6, 0.7317073170731707, 0.7804878048780488]}, {"file": "oc7x06010_x1d.fits", "star": "* tau04 Eri", "mode": "E230H", "nominal": 3.628951905215258e-15, "lam_med": 2696.398893727588}, {"file": "oc7x06020_x1d.fits", "star": "* tau04 Eri", "mode": "E140M", "nominal": 1.2144995853923887e-15, "lam_med": 1378.8885038813025}, {"file": "oc7x06030_x1d.fits", "star": "* tau04 Eri", "mode": "E140M", "nominal": 1.3846903263399285e-15, "lam_med": 1379.041972662721}, {"file": "oc7x06040_x1d.fits", "star": "* tau04 Eri", "mode": "E140M", "nominal": 1.5743326368362513e-15, "lam_med": 1378.8611367696021, "rec": [0.046511627906976744, 0.1, 0.3023255813953488, 0.5609756097560976, 0.6097560975609756, 0.8536585365853658]}, {"file": "oc7x07010_x1d.fits", "star": "* 31 Leo", "mode": "E230H", "nominal": 3.1663736283109557e-15, "lam_med": 2695.947779309899}, {"file": "oc7x07020_x1d.fits", "star": "* 31 Leo", "mode": "E140M", "nominal": 9.039878922074575e-16, "lam_med": 1379.882789236352}, {"file": "oc7x07030_x1d.fits", "star": "* 31 Leo", "mode": "E140M", "nominal": 1.0637992512665337e-15, "lam_med": 1379.6883328166696}, {"file": "oc7x07040_x1d.fits", "star": "* 31 Leo", "mode": "E140M", "nominal": 1.2249856928165212e-15, "lam_med": 1378.6054824370078}, {"file": "oc7x08010_x1d.fits", "star": "* G CMi", "mode": "E230H", "nominal": 3.631750800225294e-15, "lam_med": 2695.988844102425}, {"file": "oc7x08020_x1d.fits", "star": "* G CMi", "mode": "E140M", "nominal": 7.126395798788326e-16, "lam_med": 1379.488743168931}, {"file": "oc7x08030_x1d.fits", "star": "* G CMi", "mode": "E140M", "nominal": 1.0238281453983537e-15, "lam_med": 1379.1082810034236}, {"file": "oc7x08040_x1d.fits", "star": "* G CMi", "mode": "E140M", "nominal": 1.346961047849992e-15, "lam_med": 1379.858078763003}, {"file": "oc7x09010_x1d.fits", "star": "* mu. Gem", "mode": "E230H", "nominal": 4.638727652901203e-15, "lam_med": 2696.436767536106}, {"file": "oc7x09020_x1d.fits", "star": "* mu. Gem", "mode": "E140M", "nominal": 1.9446136049539455e-15, "lam_med": 1378.7998466454114}, {"file": "oc7x09030_x1d.fits", "star": "* mu. Gem", "mode": "E140M", "nominal": 2.151123513312085e-15, "lam_med": 1378.8124283312397}, {"file": "oc7x09040_x1d.fits", "star": "* mu. Gem", "mode": "E140M", "nominal": 2.324074053121943e-15, "lam_med": 1378.7394044623204}, {"file": "oc8b01010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 3.055227488260727e-14, "lam_med": 1253.8942405652956}, {"file": "oc8b02010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 2.9685850899201304e-14, "lam_med": 1253.809545156747}, {"file": "oc8p01010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.383100678324006e-15, "lam_med": 1414.894013575432}, {"file": "oc8p01020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.8070826323690405e-15, "lam_med": 1415.1053850914088}, {"file": "oc8p01030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.8801393570380276e-15, "lam_med": 1415.0403521856615, "rec": [0.0, 0.5405405405405406, 0.6410256410256411, 0.8648648648648649, 0.8108108108108109, 0.7777777777777778]}, {"file": "oc8p02010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.3641724640211252e-15, "lam_med": 1414.9393958881906}, {"file": "oc8p02020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.890585838692764e-15, "lam_med": 1414.8368454237186}, {"file": "oc8p02030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.9941809734318942e-15, "lam_med": 1414.8441704994973}, {"file": "oc8p03010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.4271679838729977e-15, "lam_med": 1414.5299541522088, "rec": [0.05263157894736842, 0.43243243243243246, 0.7027027027027027, 0.7777777777777778, 0.9459459459459459, 0.8333333333333334]}, {"file": "oc8p03020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.9773396138547286e-15, "lam_med": 1414.9645937155324}, {"file": "oc8p03030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.0994083936258136e-15, "lam_med": 1415.0514908327937}, {"file": "oc8p04010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.41910927860505e-15, "lam_med": 1414.6650678779058}, {"file": "oc8p04020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.977454917758458e-15, "lam_med": 1414.4610170286828}, {"file": "oc8p04030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.1099840196987187e-15, "lam_med": 1414.890415318126}, {"file": "oc8y01010_x1d.fits", "star": "HD 148422", "mode": "E140M", "nominal": 3.929808128795331e-14, "lam_med": 1380.366639498886}, {"file": "oc8y02010_x1d.fits", "star": "HD 163522", "mode": "E140M", "nominal": 5.1448704628555323e-14, "lam_med": 1379.448054143592}, {"file": "oc8y03010_x1d.fits", "star": "HD 167402", "mode": "E140M", "nominal": 5.1390805905582894e-14, "lam_med": 1379.8853758396463}, {"file": "oc8y04010_x1d.fits", "star": "HD 177566", "mode": "E140M", "nominal": 7.690608097267722e-14, "lam_med": 1379.4279354618275}, {"file": "oc8y05010_x1d.fits", "star": "HD 178487", "mode": "E140M", "nominal": 4.758344178743816e-14, "lam_med": 1379.3946325468194}, {"file": "oc8y06010_x1d.fits", "star": "HD 179407", "mode": "E140M", "nominal": 3.335659011535618e-14, "lam_med": 1380.1404931333316}, {"file": "oc9a01010_x1d.fits", "star": "* rho Oph A", "mode": "E140H", "nominal": 3.388500804247967e-13, "lam_med": 1253.9019249797793}, {"file": "oc9a01020_x1d.fits", "star": "* rho Oph A", "mode": "E230H", "nominal": 1.0116045780152315e-13, "lam_med": 2257.8869632447327}, {"file": "oc9a01030_x1d.fits", "star": "* rho Oph B", "mode": "E230H", "nominal": 8.674162385917987e-14, "lam_med": 2257.753907421986}, {"file": "oc9a01040_x1d.fits", "star": "* rho Oph B", "mode": "E230H", "nominal": 7.257630479632897e-14, "lam_med": 2257.782360642798}, {"file": "oc9a01050_x1d.fits", "star": "* rho Oph B", "mode": "E140H", "nominal": 1.9074047073454412e-13, "lam_med": 1253.3780614981956}, {"file": "oc9a02010_x1d.fits", "star": "HD 147888", "mode": "E140H", "nominal": 5.567912538518298e-14, "lam_med": 1253.92720690548}, {"file": "oc9a02020_x1d.fits", "star": "HD 147888", "mode": "E140H", "nominal": 4.3023779186414304e-14, "lam_med": 1253.4172367136011}, {"file": "oc9a02030_x1d.fits", "star": "HD 147888", "mode": "E140H", "nominal": 4.3263904677655014e-14, "lam_med": 1253.503378066014}, {"file": "oca001010_x1d.fits", "star": "* tet01 Ori B", "mode": "E140H", "nominal": 4.823715764781051e-14, "lam_med": 1227.3333900573343}, {"file": "oca001020_x1d.fits", "star": "* tet01 Ori B", "mode": "E140H", "nominal": 3.6465824743009e-14, "lam_med": 1226.5578159950487}, {"file": "oca001030_x1d.fits", "star": "* tet01 Ori B", "mode": "E140H", "nominal": 3.5754767656672353e-14, "lam_med": 1226.722036749843}, {"file": "oca001040_x1d.fits", "star": "* tet01 Ori B", "mode": "E140H", "nominal": 3.478605170574092e-14, "lam_med": 1226.872428297426}, {"file": "ocax01010_x1d.fits", "star": "HD 5980", "mode": "E140M", "nominal": 2.4554026118594838e-14, "lam_med": 1379.7219588451171}, {"file": "ocax01020_x1d.fits", "star": "HD 5980", "mode": "E140M", "nominal": 2.676138025051932e-14, "lam_med": 1379.9425440771258}, {"file": "ocb6a0010_x1d.fits", "star": "HD 93129A", "mode": "E230M", "nominal": 1.2262101738531708e-13, "lam_med": 1917.4320171149463}, {"file": "ocb6a0030_x1d.fits", "star": "HD 93129A", "mode": "E230M", "nominal": 4.4408668834667285e-14, "lam_med": 2632.8328724837506}, {"file": "ocb6a1010_x1d.fits", "star": "HD 93129A", "mode": "E230M", "nominal": 1.236494138477147e-13, "lam_med": 1917.4788039374741}, {"file": "ocb6a1030_x1d.fits", "star": "HD 93129A", "mode": "E230M", "nominal": 4.78733534904332e-14, "lam_med": 2632.9042723895955}, {"file": "ocb6b0010_x1d.fits", "star": "* zet Pup", "mode": "E230M", "nominal": 3.733068348730425e-11, "lam_med": 2633.116002751598}, {"file": "ocb6b0020_x1d.fits", "star": "* zet Pup", "mode": "E230M", "nominal": 1.6276864134675203e-10, "lam_med": 1917.603852381891}, {"file": "ocb6b0030_x1d.fits", "star": "* zet Pup", "mode": "E140M", "nominal": 1.187698032164603e-10, "lam_med": 1380.0952469706126}, {"file": "ocb6b1010_x1d.fits", "star": "* zet Pup", "mode": "E230M", "nominal": 3.255756249826674e-11, "lam_med": 2633.1082545058352}, {"file": "ocb6b1020_x1d.fits", "star": "* zet Pup", "mode": "E230M", "nominal": 1.748386862056786e-10, "lam_med": 1917.5771331494489}, {"file": "ocb6b1030_x1d.fits", "star": "* zet Pup", "mode": "E140M", "nominal": 1.2842575345227003e-10, "lam_med": 1379.9754561038094}, {"file": "ocb6c0010_x1d.fits", "star": "HD 46223", "mode": "E230M", "nominal": 4.6957485844021746e-14, "lam_med": 2633.154744133682}, {"file": "ocb6c0020_x1d.fits", "star": "HD 46223", "mode": "E230M", "nominal": 1.2438490955889673e-13, "lam_med": 1917.6307283302604}, {"file": "ocb6c0030_x1d.fits", "star": "HD 46223", "mode": "E140M", "nominal": 9.016086432099245e-14, "lam_med": 1379.4109081057657}, {"file": "ocb6c1010_x1d.fits", "star": "HD 46223", "mode": "E230M", "nominal": 4.9293557162266935e-14, "lam_med": 2633.181174047785, "rec": [0.0, 0.375, 0.625, 0.9583333333333334, 1.0, 1.0]}, {"file": "ocb6c1020_x1d.fits", "star": "HD 46223", "mode": "E230M", "nominal": 1.233141099544475e-13, "lam_med": 1917.6619589778309}, {"file": "ocb6c1030_x1d.fits", "star": "HD 46223", "mode": "E140M", "nominal": 9.096514293278573e-14, "lam_med": 1380.1213464370724}, {"file": "ocb6d0010_x1d.fits", "star": "HD 101190", "mode": "E230M", "nominal": 1.144242230199667e-13, "lam_med": 2633.1139652060683}, {"file": "ocb6d0020_x1d.fits", "star": "HD 101190", "mode": "E230M", "nominal": 1.2761110864963087e-13, "lam_med": 1917.5459722544042}, {"file": "ocb6d0030_x1d.fits", "star": "HD 101190", "mode": "E140M", "nominal": 1.4041155675325238e-13, "lam_med": 1380.2177048665862}, {"file": "ocb6d1010_x1d.fits", "star": "HD 101190", "mode": "E230M", "nominal": 1.0481487351320821e-13, "lam_med": 2633.121290185274}, {"file": "ocb6d1020_x1d.fits", "star": "HD 101190", "mode": "E230M", "nominal": 1.6219381869317381e-13, "lam_med": 1917.5446505854152}, {"file": "ocb6d1030_x1d.fits", "star": "HD 101190", "mode": "E140M", "nominal": 1.648393476038156e-13, "lam_med": 1379.923089349987}, {"file": "ocb6e0010_x1d.fits", "star": "HD 46202", "mode": "E230M", "nominal": 3.14462495793234e-14, "lam_med": 2630.958967609752}, {"file": "ocb6e0020_x1d.fits", "star": "HD 46202", "mode": "E230M", "nominal": 8.449015824055895e-14, "lam_med": 1917.6593334868085}, {"file": "ocb6e0030_x1d.fits", "star": "HD 46202", "mode": "E140M", "nominal": 6.407889701212973e-14, "lam_med": 1379.4973879461409}, {"file": "ocb6e1010_x1d.fits", "star": "HD 46202", "mode": "E230M", "nominal": 2.724441418737798e-14, "lam_med": 2633.172972356866}, {"file": "ocb6e1020_x1d.fits", "star": "HD 46202", "mode": "E230M", "nominal": 8.455536939014541e-14, "lam_med": 1917.6317884681844}, {"file": "ocb6e1030_x1d.fits", "star": "HD 46202", "mode": "E140M", "nominal": 6.366930385581735e-14, "lam_med": 1379.7347923235875}, {"file": "ocb6f0010_x1d.fits", "star": "* ups Ori", "mode": "E140M", "nominal": 1.1937221646412988e-11, "lam_med": 1379.09516518472}, {"file": "ocb6f0020_x1d.fits", "star": "* ups Ori", "mode": "E140H", "nominal": 8.040732758645501e-12, "lam_med": 1253.8728396572014, "rec": [0.03409090909090909, 0.3595505617977528, 0.391304347826087, 0.5869565217391305, 0.8409090909090909, 0.797752808988764]}, {"file": "ocb6f0030_x1d.fits", "star": "* ups Ori", "mode": "E230M", "nominal": 1.3597628226599939e-11, "lam_med": 1917.5866522698445}, {"file": "ocb6f0040_x1d.fits", "star": "* ups Ori", "mode": "E230H", "nominal": 8.435799009472564e-13, "lam_med": 2696.2829502756686}, {"file": "ocb6f1010_x1d.fits", "star": "* ups Ori", "mode": "E140M", "nominal": 1.0639553174712207e-11, "lam_med": 1378.938915269588}, {"file": "ocb6f1020_x1d.fits", "star": "* ups Ori", "mode": "E140H", "nominal": 5.82077537068165e-12, "lam_med": 1253.9584153147948}, {"file": "ocb6f1030_x1d.fits", "star": "* ups Ori", "mode": "E230M", "nominal": 1.1344890182074688e-11, "lam_med": 1917.589309899508}, {"file": "ocb6f1040_x1d.fits", "star": "* ups Ori", "mode": "E230H", "nominal": 8.234412459434087e-13, "lam_med": 2696.294303285008}, {"file": "ocb6f2010_x1d.fits", "star": "* ups Ori", "mode": "E140M", "nominal": 1.1540274394736677e-11, "lam_med": 1379.135274950073}, {"file": "ocb6f2020_x1d.fits", "star": "* ups Ori", "mode": "E230H", "nominal": 2.308878566422521e-12, "lam_med": 2459.285478513048}, {"file": "ocb6f2030_x1d.fits", "star": "* ups Ori", "mode": "E230H", "nominal": 2.360940007939968e-12, "lam_med": 2507.620091485569}, {"file": "ocb6f2040_x1d.fits", "star": "* ups Ori", "mode": "E230H", "nominal": 8.43033924682809e-13, "lam_med": 2907.5795443839465}, {"file": "ocb6g0010_x1d.fits", "star": "HD 36959", "mode": "E140M", "nominal": 6.2993633689786375e-12, "lam_med": 1379.2623955523895, "rec": [0.024390243902439025, 0.21428571428571427, 0.5714285714285714, 0.6976744186046512, 0.6829268292682927, 0.8837209302325582]}, {"file": "ocb6g0020_x1d.fits", "star": "HD 36959", "mode": "E140H", "nominal": 1.6853413467618372e-12, "lam_med": 1253.6620395889272}, {"file": "ocb6g0030_x1d.fits", "star": "HD 36959", "mode": "E230M", "nominal": 2.8760193131738045e-12, "lam_med": 1917.7526158467558}, {"file": "ocb6g0040_x1d.fits", "star": "HD 36959", "mode": "E230H", "nominal": 2.81732684103476e-13, "lam_med": 2696.4323019356116}, {"file": "ocb6g1010_x1d.fits", "star": "HD 36959", "mode": "E140M", "nominal": 6.062541580240611e-12, "lam_med": 1379.0200991666889}, {"file": "ocb6g1020_x1d.fits", "star": "HD 36959", "mode": "E140H", "nominal": 1.671655598032301e-12, "lam_med": 1253.3842514147416}, {"file": "ocb6g1030_x1d.fits", "star": "HD 36959", "mode": "E230M", "nominal": 2.9707087089298643e-12, "lam_med": 1917.7316276360716}, {"file": "ocb6g1040_x1d.fits", "star": "HD 36959", "mode": "E230H", "nominal": 2.6847624300346913e-13, "lam_med": 2696.423535644106}, {"file": "ocb6g2010_x1d.fits", "star": "HD 36959", "mode": "E140M", "nominal": 6.087921983723181e-12, "lam_med": 1379.6163548276604}, {"file": "ocb6g2020_x1d.fits", "star": "HD 36959", "mode": "E230H", "nominal": 3.6137420628532755e-13, "lam_med": 2459.57229512627}, {"file": "ocb6g2030_x1d.fits", "star": "HD 36959", "mode": "E230H", "nominal": 4.247306269104053e-13, "lam_med": 2507.7581309105926}, {"file": "ocb6g2040_x1d.fits", "star": "HD 36959", "mode": "E230H", "nominal": 1.629204265513052e-13, "lam_med": 2907.8008958426153}, {"file": "ocb6h0010_x1d.fits", "star": "* sig Ori E", "mode": "E140M", "nominal": 6.717252542644482e-13, "lam_med": 1379.4184082269774}, {"file": "ocb6h0020_x1d.fits", "star": "* sig Ori E", "mode": "E230M", "nominal": 8.336362718129593e-13, "lam_med": 1917.3478695278266}, {"file": "ocb6h0030_x1d.fits", "star": "* sig Ori E", "mode": "E140H", "nominal": 2.801262233999633e-13, "lam_med": 1253.844903495814}, {"file": "ocb6h0040_x1d.fits", "star": "* sig Ori E", "mode": "E230H", "nominal": 4.2320526916857926e-14, "lam_med": 2695.9337800026065}, {"file": "ocb6h1010_x1d.fits", "star": "* sig Ori E", "mode": "E140M", "nominal": 8.582634784977264e-13, "lam_med": 1379.3021098578376}, {"file": "ocb6h1020_x1d.fits", "star": "* sig Ori E", "mode": "E230M", "nominal": 1.1004449766770095e-12, "lam_med": 1917.6127153534585}, {"file": "ocb6h1030_x1d.fits", "star": "* sig Ori E", "mode": "E140H", "nominal": 3.066282963130103e-13, "lam_med": 1253.4827610344441}, {"file": "ocb6h1040_x1d.fits", "star": "* sig Ori E", "mode": "E230H", "nominal": 1.1265999967592402e-13, "lam_med": 2696.4510823853275}, {"file": "ocb6h2010_x1d.fits", "star": "* sig Ori E", "mode": "E140M", "nominal": 8.643268723624048e-13, "lam_med": 1379.817369937257}, {"file": "ocb6h2020_x1d.fits", "star": "* sig Ori E", "mode": "E230H", "nominal": 8.038854870041109e-14, "lam_med": 2907.221183131473}, {"file": "ocb6h2030_x1d.fits", "star": "* sig Ori E", "mode": "E230H", "nominal": 1.173795887030289e-13, "lam_med": 2507.4389020692433}, {"file": "ocb6h2040_x1d.fits", "star": "* sig Ori E", "mode": "E230H", "nominal": 1.3239535611736743e-13, "lam_med": 2459.052592843093}, {"file": "ocb6h3010_x1d.fits", "star": "* sig Ori E", "mode": "E230H", "nominal": 8.61314379282791e-14, "lam_med": 2696.446940961383}, {"file": "ocb6i0010_x1d.fits", "star": "HD 36285", "mode": "E140M", "nominal": 1.4539287289024601e-12, "lam_med": 1380.0537099500377}, {"file": "ocb6i0020_x1d.fits", "star": "HD 36285", "mode": "E140H", "nominal": 5.365406907293653e-13, "lam_med": 1253.6008442931484}, {"file": "ocb6i0030_x1d.fits", "star": "HD 36285", "mode": "E230M", "nominal": 1.23185555809286e-12, "lam_med": 1917.4697781482646}, {"file": "ocb6i0040_x1d.fits", "star": "HD 36285", "mode": "E230H", "nominal": 1.224879257342308e-13, "lam_med": 2695.98984604665, "rec": [0.0, 0.4482758620689655, 0.75, 0.896551724137931, 0.9655172413793104, 0.9285714285714286]}, {"file": "ocb6i1010_x1d.fits", "star": "HD 36285", "mode": "E140M", "nominal": 1.6594970529484486e-12, "lam_med": 1379.9539442446924}, {"file": "ocb6i1020_x1d.fits", "star": "HD 36285", "mode": "E140H", "nominal": 5.451463207358766e-13, "lam_med": 1253.2133959095622}, {"file": "ocb6i1030_x1d.fits", "star": "HD 36285", "mode": "E230M", "nominal": 1.2511859579557273e-12, "lam_med": 1917.4572395970617}, {"file": "ocb6i1040_x1d.fits", "star": "HD 36285", "mode": "E230H", "nominal": 1.1967664777782607e-13, "lam_med": 2696.0026002944346}, {"file": "ocb6i2010_x1d.fits", "star": "HD 36285", "mode": "E140M", "nominal": 1.6191330346296994e-12, "lam_med": 1379.101968170335}, {"file": "ocb6i2020_x1d.fits", "star": "HD 36285", "mode": "E230H", "nominal": 1.1074301552181981e-13, "lam_med": 2459.1357759045877}, {"file": "ocb6i2030_x1d.fits", "star": "HD 36285", "mode": "E230H", "nominal": 1.3103364644508101e-13, "lam_med": 2507.3810850925543}, {"file": "ocb6i2040_x1d.fits", "star": "HD 36285", "mode": "E230H", "nominal": 5.710559025886591e-14, "lam_med": 2907.1654620592685}, {"file": "ocb6j0010_x1d.fits", "star": "* eps CMa", "mode": "E140M", "nominal": 1.0094938265466916e-10, "lam_med": 1379.8940095154821}, {"file": "ocb6j0020_x1d.fits", "star": "* eps CMa", "mode": "E140H", "nominal": 5.913044790726549e-11, "lam_med": 1254.1129156329262}, {"file": "ocb6j0030_x1d.fits", "star": "* eps CMa", "mode": "E230M", "nominal": 1.5183261160173731e-10, "lam_med": 1917.5220816366423}, {"file": "ocb6j0040_x1d.fits", "star": "* eps CMa", "mode": "E230H", "nominal": 1.91584402116041e-11, "lam_med": 2696.1868889689617}, {"file": "ocb6j1010_x1d.fits", "star": "* eps CMa", "mode": "E140M", "nominal": 1.0670452356283699e-10, "lam_med": 1380.6297266031124}, {"file": "ocb6j1020_x1d.fits", "star": "* eps CMa", "mode": "E140H", "nominal": 5.704622441046748e-11, "lam_med": 1254.1394087958608}, {"file": "ocb6j1030_x1d.fits", "star": "* eps CMa", "mode": "E230M", "nominal": 1.3389000123416272e-10, "lam_med": 1917.5905652658143}, {"file": "ocb6j1040_x1d.fits", "star": "* eps CMa", "mode": "E230H", "nominal": 2.2215234915403047e-11, "lam_med": 2696.1568251002686}, {"file": "ocb6j2010_x1d.fits", "star": "* eps CMa", "mode": "E140M", "nominal": 1.084153770783501e-10, "lam_med": 1379.5601085158216}, {"file": "ocb6j2020_x1d.fits", "star": "* eps CMa", "mode": "E230H", "nominal": 2.9476337754138894e-11, "lam_med": 2459.4219905839045}, {"file": "ocb6j2030_x1d.fits", "star": "* eps CMa", "mode": "E230H", "nominal": 2.1950746202078973e-11, "lam_med": 2907.6988414164734}, {"file": "ocb6j3010_x1d.fits", "star": "* eps CMa", "mode": "E230H", "nominal": 2.1199814659919197e-11, "lam_med": 2696.340492187275}, {"file": "ocb6j3020_x1d.fits", "star": "* eps CMa", "mode": "E230H", "nominal": 3.249876343062324e-11, "lam_med": 2507.7230691016016}, {"file": "ocb6j3030_x1d.fits", "star": "* eps CMa", "mode": "E230H", "nominal": 2.673132149901189e-11, "lam_med": 2907.7390272114562}, {"file": "ocb6k0010_x1d.fits", "star": "* iot Her", "mode": "E140M", "nominal": 9.628264177933535e-12, "lam_med": 1379.4296373051438, "rec": [0.0, 0.17073170731707318, 0.30952380952380953, 0.5, 0.5681818181818182, 0.7619047619047619]}, {"file": "ocb6k0020_x1d.fits", "star": "* iot Her", "mode": "E140H", "nominal": 6.3454049703651475e-12, "lam_med": 1253.8982769292943}, {"file": "ocb6k0030_x1d.fits", "star": "* iot Her", "mode": "E230M", "nominal": 1.3585700958222369e-11, "lam_med": 1917.581711353635}, {"file": "ocb6k0040_x1d.fits", "star": "* iot Her", "mode": "E230H", "nominal": 7.820315037004796e-13, "lam_med": 2696.265131846632}, {"file": "ocb6k1010_x1d.fits", "star": "* iot Her", "mode": "E140M", "nominal": 9.788464870530191e-12, "lam_med": 1379.830508839932}, {"file": "ocb6k1020_x1d.fits", "star": "* iot Her", "mode": "E140H", "nominal": 6.336288916782646e-12, "lam_med": 1253.9251842667982}, {"file": "ocb6k1030_x1d.fits", "star": "* iot Her", "mode": "E230M", "nominal": 1.3434558858048544e-11, "lam_med": 1917.6093240966725}, {"file": "ocb6k1040_x1d.fits", "star": "* iot Her", "mode": "E230H", "nominal": 9.141729922951778e-13, "lam_med": 2696.2776475668747}, {"file": "ocb6k2010_x1d.fits", "star": "* iot Her", "mode": "E140M", "nominal": 9.711196663866819e-12, "lam_med": 1379.4277149509326}, {"file": "ocb6k2020_x1d.fits", "star": "* iot Her", "mode": "E230H", "nominal": 7.913073143325979e-13, "lam_med": 2459.344979756384}, {"file": "ocb6k2030_x1d.fits", "star": "* iot Her", "mode": "E230H", "nominal": 9.013497458618609e-13, "lam_med": 2507.673076222833}, {"file": "ocb6k2040_x1d.fits", "star": "* iot Her", "mode": "E230H", "nominal": 8.175016506438687e-13, "lam_med": 2907.663417871261}, {"file": "ocb6l0010_x1d.fits", "star": "* 3 Cen A", "mode": "E140M", "nominal": 2.9249941894901013e-12, "lam_med": 1379.924293245259}, {"file": "ocb6l0020_x1d.fits", "star": "* 3 Cen A", "mode": "E140H", "nominal": 1.7077244931990996e-12, "lam_med": 1253.9850425494574}, {"file": "ocb6l0030_x1d.fits", "star": "* 3 Cen A", "mode": "E230M", "nominal": 3.4817672224764384e-12, "lam_med": 1917.781309104447}, {"file": "ocb6l0040_x1d.fits", "star": "* 3 Cen A", "mode": "E230H", "nominal": 4.082845103930098e-13, "lam_med": 2696.432350067582}, {"file": "ocb6l1010_x1d.fits", "star": "* 3 Cen A", "mode": "E140M", "nominal": 2.7683648113319774e-12, "lam_med": 1379.5737400377748, "rec": [0.0, 0.15, 0.1590909090909091, 0.3902439024390244, 0.6410256410256411, 0.7317073170731707]}, {"file": "ocb6l1020_x1d.fits", "star": "* 3 Cen A", "mode": "E140H", "nominal": 1.7860133318092368e-12, "lam_med": 1253.9051687465467}, {"file": "ocb6l1030_x1d.fits", "star": "* 3 Cen A", "mode": "E230M", "nominal": 3.511400625538105e-12, "lam_med": 1917.5899199805865}, {"file": "ocb6l1040_x1d.fits", "star": "* 3 Cen A", "mode": "E230H", "nominal": 3.8587133779284134e-13, "lam_med": 2696.2805928634752}, {"file": "ocb6l2010_x1d.fits", "star": "* 3 Cen A", "mode": "E140M", "nominal": 2.870837975199281e-12, "lam_med": 1379.5137580352482}, {"file": "ocb6l2020_x1d.fits", "star": "* 3 Cen A", "mode": "E230H", "nominal": 3.987354431216974e-13, "lam_med": 2459.6147510248156}, {"file": "ocb6l2030_x1d.fits", "star": "* 3 Cen A", "mode": "E230H", "nominal": 4.828273526993562e-13, "lam_med": 2507.7688773484797}, {"file": "ocb6l2040_x1d.fits", "star": "* 3 Cen A", "mode": "E230H", "nominal": 4.833556937484893e-13, "lam_med": 2907.729813881221}, {"file": "ocb6m0010_x1d.fits", "star": "* ksi Oct", "mode": "E140M", "nominal": 9.854660053871825e-13, "lam_med": 1380.1328175096999}, {"file": "ocb6m0020_x1d.fits", "star": "* ksi Oct", "mode": "E230M", "nominal": 1.4561149464168434e-12, "lam_med": 1917.450060468018, "rec": [0.012658227848101266, 0.1125, 0.525, 0.5949367088607594, 0.6962025316455697, 0.8875]}, {"file": "ocb6m0030_x1d.fits", "star": "* ksi Oct", "mode": "E230H", "nominal": 9.28256798641392e-14, "lam_med": 2696.1195142776496}, {"file": "ocb6m0040_x1d.fits", "star": "* ksi Oct", "mode": "E140H", "nominal": 3.7665765558009083e-13, "lam_med": 1254.1634313925924}, {"file": "ocb6m1010_x1d.fits", "star": "* ksi Oct", "mode": "E140M", "nominal": 9.51166388049686e-13, "lam_med": 1380.4629469566307}, {"file": "ocb6m1020_x1d.fits", "star": "* ksi Oct", "mode": "E230M", "nominal": 1.4976138253002305e-12, "lam_med": 1917.4627396414423}, {"file": "ocb6m1030_x1d.fits", "star": "* ksi Oct", "mode": "E230H", "nominal": 1.4761009106015127e-13, "lam_med": 2696.1046584863843}, {"file": "ocb6m1040_x1d.fits", "star": "* ksi Oct", "mode": "E140H", "nominal": 3.6511695586834886e-13, "lam_med": 1254.2245416124827}, {"file": "ocb6m2010_x1d.fits", "star": "* ksi Oct", "mode": "E140M", "nominal": 9.746534022865546e-13, "lam_med": 1379.7621188348685}, {"file": "ocb6m2020_x1d.fits", "star": "* ksi Oct", "mode": "E230H", "nominal": 1.36389390112162e-13, "lam_med": 2459.1840665470186}, {"file": "ocb6m2030_x1d.fits", "star": "* ksi Oct", "mode": "E230H", "nominal": 1.7065384476097219e-13, "lam_med": 2507.4749216686278}, {"file": "ocb6m2040_x1d.fits", "star": "* ksi Oct", "mode": "E230H", "nominal": 1.691165960043094e-13, "lam_med": 2907.4015520175526, "rec": [0.0625, 0.5306122448979592, 0.7551020408163265, 0.8571428571428571, 0.9591836734693877, 0.8979591836734694]}, {"file": "ocb6n0010_x1d.fits", "star": "* 41 Ari", "mode": "E140M", "nominal": 2.6690534824322382e-12, "lam_med": 1379.7676993363327}, {"file": "ocb6n0020_x1d.fits", "star": "* 41 Ari", "mode": "E230M", "nominal": 3.5195412232191024e-12, "lam_med": 1917.3176533389628}, {"file": "ocb6n0030_x1d.fits", "star": "* 41 Ari", "mode": "E230H", "nominal": 3.984562612081032e-13, "lam_med": 2696.0493443747464}, {"file": "ocb6n0040_x1d.fits", "star": "* 41 Ari", "mode": "E140H", "nominal": 8.673236191377049e-13, "lam_med": 1254.1318371911154}, {"file": "ocb6n1010_x1d.fits", "star": "* 41 Ari", "mode": "E140M", "nominal": 2.6415034751951278e-12, "lam_med": 1380.183052075669}, {"file": "ocb6n1020_x1d.fits", "star": "* 41 Ari", "mode": "E230M", "nominal": 3.6092235695981874e-12, "lam_med": 1917.33489771829}, {"file": "ocb6n1030_x1d.fits", "star": "* 41 Ari", "mode": "E230H", "nominal": 4.0513458109509885e-13, "lam_med": 2696.0506352736556}, {"file": "ocb6n1040_x1d.fits", "star": "* 41 Ari", "mode": "E140H", "nominal": 8.834350924568562e-13, "lam_med": 1254.119658786587}, {"file": "ocb6n2010_x1d.fits", "star": "* 41 Ari", "mode": "E140M", "nominal": 2.780962160183413e-12, "lam_med": 1379.737008040957}, {"file": "ocb6n2020_x1d.fits", "star": "* 41 Ari", "mode": "E230H", "nominal": 5.04842811781905e-13, "lam_med": 2459.1680003293845}, {"file": "ocb6n2030_x1d.fits", "star": "* 41 Ari", "mode": "E230H", "nominal": 6.06005285080638e-13, "lam_med": 2507.417359149571}, {"file": "ocb6n2040_x1d.fits", "star": "* 41 Ari", "mode": "E230H", "nominal": 6.587651505448171e-13, "lam_med": 2907.3155188106266}, {"file": "ocb6o0010_x1d.fits", "star": "* alf Leo", "mode": "E140H", "nominal": 7.626847144195895e-12, "lam_med": 1253.8959882317629}, {"file": "ocb6o0020_x1d.fits", "star": "* alf Leo", "mode": "E140H", "nominal": 1.1745357550505458e-11, "lam_med": 1583.9954842818365}, {"file": "ocb6o0030_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 1.6573364677265394e-11, "lam_med": 1755.355969612143}, {"file": "ocb6o0040_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 1.029205246450209e-11, "lam_med": 2008.339880168634}, {"file": "ocb6o1010_x1d.fits", "star": "* alf Leo", "mode": "E140H", "nominal": 8.28890229378191e-12, "lam_med": 1414.6552507843971}, {"file": "ocb6o1020_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 4.98296306699755e-12, "lam_med": 2510.6544576245337}, {"file": "ocb6o1030_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 4.49029425263257e-12, "lam_med": 2696.04046880484}, {"file": "ocb6o1040_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 4.928332801571089e-12, "lam_med": 2907.299175476711}, {"file": "ocb6o2010_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 5.051245973611769e-12, "lam_med": 2459.1234435063825}, {"file": "ocb6o2020_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 6.53861214063569e-12, "lam_med": 2257.8122959681564}, {"file": "ocb6o2030_x1d.fits", "star": "* alf Leo", "mode": "E140H", "nominal": 7.740549709459204e-12, "lam_med": 1253.9264921442507}, {"file": "ocb6o3010_x1d.fits", "star": "* alf Leo", "mode": "E140H", "nominal": 8.194072445249345e-12, "lam_med": 1414.8420865223832}, {"file": "ocb6o3020_x1d.fits", "star": "* alf Leo", "mode": "E140H", "nominal": 1.1549064002929639e-11, "lam_med": 1584.1680323424082}, {"file": "ocb6o3030_x1d.fits", "star": "* alf Leo", "mode": "E230H", "nominal": 1.635860373980901e-11, "lam_med": 1755.0044776653317, "rec": [0.022222222222222223, 0.44776119402985076, 0.7985074626865671, 0.9776119402985075, 0.9703703703703703, 0.9851851851851852]}, {"file": "ocb6p0010_x1d.fits", "star": "V* GY And", "mode": "E140M", "nominal": 4.9941183993359604e-14, "lam_med": 1380.1131974138764}, {"file": "ocb6p0020_x1d.fits", "star": "V* GY And", "mode": "E140M", "nominal": 5.764744944418734e-14, "lam_med": 1380.0176139124178}, {"file": "ocb6p0030_x1d.fits", "star": "V* GY And", "mode": "E230M", "nominal": 1.2902421470206674e-13, "lam_med": 1917.5624065075567}, {"file": "ocb6p0040_x1d.fits", "star": "V* GY And", "mode": "E230H", "nominal": 2.8281016523360248e-14, "lam_med": 2696.39798542039}, {"file": "ocb6p1010_x1d.fits", "star": "V* GY And", "mode": "E140M", "nominal": 4.996972917892136e-14, "lam_med": 1379.6166983636454}, {"file": "ocb6p1020_x1d.fits", "star": "V* GY And", "mode": "E140M", "nominal": 5.810327618455486e-14, "lam_med": 1379.8683542724964}, {"file": "ocb6p1030_x1d.fits", "star": "V* GY And", "mode": "E230M", "nominal": 1.3038219102220656e-13, "lam_med": 1917.533914052131}, {"file": "ocb6p1040_x1d.fits", "star": "V* GY And", "mode": "E230H", "nominal": 2.98531252515516e-14, "lam_med": 2696.390560196426}, {"file": "ocb6p2010_x1d.fits", "star": "V* GY And", "mode": "E140M", "nominal": 5.0366026548851755e-14, "lam_med": 1379.1646459854178}, {"file": "ocb6p2020_x1d.fits", "star": "V* GY And", "mode": "E230H", "nominal": 3.085983583776322e-14, "lam_med": 2459.425163346049}, {"file": "ocb6p2030_x1d.fits", "star": "V* GY And", "mode": "E230H", "nominal": 3.036465051420629e-14, "lam_med": 2507.6163511435398}, {"file": "ocb6p2040_x1d.fits", "star": "V* GY And", "mode": "E230H", "nominal": 3.620044276070974e-14, "lam_med": 2907.6498693034255}, {"file": "ocb6q0020_x1d.fits", "star": "HD 175640", "mode": "E140H", "nominal": 6.130635927958925e-14, "lam_med": 1253.8047693771314}, {"file": "ocb6q0030_x1d.fits", "star": "HD 175640", "mode": "E230H", "nominal": 3.848763594769108e-14, "lam_med": 2696.010534261565}, {"file": "ocb6q0040_x1d.fits", "star": "HD 175640", "mode": "E230M", "nominal": 1.4894305847652286e-13, "lam_med": 1917.165380266564, "rec": [0.05, 0.225, 0.2564102564102564, 0.3, 0.6153846153846154, 0.725]}, {"file": "ocb6q1020_x1d.fits", "star": "HD 175640", "mode": "E140H", "nominal": 1.0154489503333962e-14, "lam_med": 1253.9101006500798}, {"file": "ocb6q1030_x1d.fits", "star": "HD 175640", "mode": "E230H", "nominal": 4.883632067189473e-15, "lam_med": 2696.08890586636}, {"file": "ocb6q1040_x1d.fits", "star": "HD 175640", "mode": "E230M", "nominal": 2.493815404772782e-14, "lam_med": 1917.2091365567542}, {"file": "ocb6q2020_x1d.fits", "star": "HD 175640", "mode": "E230H", "nominal": 4.110850098114919e-14, "lam_med": 2459.0394850633625}, {"file": "ocb6q2030_x1d.fits", "star": "HD 175640", "mode": "E230H", "nominal": 3.927688179934004e-14, "lam_med": 2507.362964822896}, {"file": "ocb6q2040_x1d.fits", "star": "HD 175640", "mode": "E230H", "nominal": 4.3041127088922766e-14, "lam_med": 2907.1078224373823}, {"file": "ocb6q3020_x1d.fits", "star": "HD 175640", "mode": "E140H", "nominal": 6.257721264345292e-14, "lam_med": 1253.9389565255208}, {"file": "ocb6q3030_x1d.fits", "star": "HD 175640", "mode": "E230H", "nominal": 3.98338768223803e-14, "lam_med": 2696.450801707918}, {"file": "ocb6q3040_x1d.fits", "star": "HD 175640", "mode": "E230M", "nominal": 3.220905042293132e-13, "lam_med": 1917.6211769239972}, {"file": "ocb6r0010_x1d.fits", "star": "* gam Lyr", "mode": "E140M", "nominal": 8.551213346985297e-13, "lam_med": 1379.2194599712548}, {"file": "ocb6r0020_x1d.fits", "star": "* gam Lyr", "mode": "E230H", "nominal": 4.1190481041026505e-13, "lam_med": 2696.1077154432974}, {"file": "ocb6r0030_x1d.fits", "star": "* gam Lyr", "mode": "E230M", "nominal": 2.0420677740900496e-12, "lam_med": 1917.428247779929}, {"file": "ocb6r0040_x1d.fits", "star": "* gam Lyr", "mode": "E140H", "nominal": 1.5547287917143814e-13, "lam_med": 1253.799331988359}, {"file": "ocb6r1010_x1d.fits", "star": "* gam Lyr", "mode": "E140M", "nominal": 8.766109274020822e-13, "lam_med": 1379.166410141646}, {"file": "ocb6r1020_x1d.fits", "star": "* gam Lyr", "mode": "E230H", "nominal": 4.616086280872898e-13, "lam_med": 2696.122803252647}, {"file": "ocb6r1030_x1d.fits", "star": "* gam Lyr", "mode": "E230M", "nominal": 2.307812179360862e-12, "lam_med": 1917.4273865417488}, {"file": "ocb6r1040_x1d.fits", "star": "* gam Lyr", "mode": "E140H", "nominal": 1.600598150671121e-13, "lam_med": 1253.1681959265688}, {"file": "ocb6r2010_x1d.fits", "star": "* gam Lyr", "mode": "E140M", "nominal": 9.190996245752815e-13, "lam_med": 1379.0287581014145}, {"file": "ocb6r2020_x1d.fits", "star": "* gam Lyr", "mode": "E230H", "nominal": 4.679942187518512e-13, "lam_med": 2459.2812316980853}, {"file": "ocb6r2030_x1d.fits", "star": "* gam Lyr", "mode": "E230H", "nominal": 4.322075030668466e-13, "lam_med": 2507.5686529839577}, {"file": "ocb6r2040_x1d.fits", "star": "* gam Lyr", "mode": "E230H", "nominal": 5.010263365735477e-13, "lam_med": 2907.570321330704}, {"file": "ocb6s0010_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 1.887241016026826e-12, "lam_med": 1227.5876972565509}, {"file": "ocb6s0020_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 7.493514138160647e-12, "lam_med": 1414.3493507535493}, {"file": "ocb6s0030_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 1.4706618687036467e-11, "lam_med": 1584.3710782849716}, {"file": "ocb6s0040_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 1.8913531414116476e-11, "lam_med": 1755.4633536220235}, {"file": "ocb6s1010_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 1.7180933296762807e-12, "lam_med": 1228.124532293914, "rec": [0.0, 0.19148936170212766, 0.3829787234042553, 0.5319148936170213, 0.6595744680851063, 0.7021276595744681]}, {"file": "ocb6s1020_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 1.266647514802805e-11, "lam_med": 1584.1913902285914}, {"file": "ocb6s1030_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 2.0472679946986167e-11, "lam_med": 1755.338046254874}, {"file": "ocb6s1040_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 1.356591227951328e-11, "lam_med": 2008.5660380560703}, {"file": "ocb6s2010_x1d.fits", "star": "* alf Lyr", "mode": "E140H", "nominal": 7.95995744541183e-12, "lam_med": 1414.747342275577}, {"file": "ocb6s2020_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 8.633057278500215e-12, "lam_med": 2258.0423099189807}, {"file": "ocb6s2030_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 6.89329358205028e-12, "lam_med": 2459.2896562692786}, {"file": "ocb6s2040_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 6.2932858031160105e-12, "lam_med": 2696.26911606829}, {"file": "ocb6s3010_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 1.2610374412821873e-11, "lam_med": 2007.4055218170329}, {"file": "ocb6s3020_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 6.638595852871223e-12, "lam_med": 2507.6044247529444}, {"file": "ocb6s3030_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 6.0884359436682284e-12, "lam_med": 2696.266441961876}, {"file": "ocb6s3040_x1d.fits", "star": "* alf Lyr", "mode": "E230H", "nominal": 6.655093794384146e-12, "lam_med": 2907.6429963143487}, {"file": "ocb6u0020_x1d.fits", "star": "V* V1027 Sco", "mode": "E140H", "nominal": 7.158267923208337e-14, "lam_med": 1253.8029215567021}, {"file": "ocb6u0030_x1d.fits", "star": "V* V1027 Sco", "mode": "E230H", "nominal": 3.8639531673088994e-14, "lam_med": 2696.1223159580977}, {"file": "ocb6u0040_x1d.fits", "star": "V* V1027 Sco", "mode": "E230M", "nominal": 2.90933328927126e-13, "lam_med": 1917.333126372245}, {"file": "ocb6u1020_x1d.fits", "star": "V* V1027 Sco", "mode": "E140H", "nominal": 7.163288425196682e-14, "lam_med": 1253.9054672620684}, {"file": "ocb6u1030_x1d.fits", "star": "V* V1027 Sco", "mode": "E230H", "nominal": 3.793803776401855e-14, "lam_med": 2696.0674588110624}, {"file": "ocb6u1040_x1d.fits", "star": "V* V1027 Sco", "mode": "E230M", "nominal": 2.9646406937914957e-13, "lam_med": 1917.34106226613}, {"file": "ocb6u2020_x1d.fits", "star": "V* V1027 Sco", "mode": "E230H", "nominal": 3.757132581572934e-14, "lam_med": 2459.1609041930906}, {"file": "ocb6u2030_x1d.fits", "star": "V* V1027 Sco", "mode": "E230H", "nominal": 3.767367417897735e-14, "lam_med": 2507.3836624387413}, {"file": "ocb6u2040_x1d.fits", "star": "V* V1027 Sco", "mode": "E230H", "nominal": 4.269874433744565e-14, "lam_med": 2907.2667149753524}, {"file": "ocbv02010_x1d.fits", "star": "* eta Car", "mode": "E140M", "nominal": 7.236749536460336e-14, "lam_med": 1379.9245836644905}, {"file": "ocbv02020_x1d.fits", "star": "* eta Car", "mode": "E230M", "nominal": 1.3001633649597787e-13, "lam_med": 1917.4510405443202}, {"file": "occ701010_x1d.fits", "star": "* del Ori", "mode": "E140M", "nominal": 1.5098174600830375e-10, "lam_med": 1380.9300690118769}, {"file": "occ701020_x1d.fits", "star": "* del Ori B", "mode": "E140M", "nominal": 4.5427295526166616e-11, "lam_med": 1380.7597351049324}, {"file": "occ702010_x1d.fits", "star": "* del Ori", "mode": "E140M", "nominal": 1.788515290765669e-10, "lam_med": 1380.7618397743174}, {"file": "occ702020_x1d.fits", "star": "* del Ori B", "mode": "E140M", "nominal": 4.281414570978253e-11, "lam_med": 1379.8356601366222}, {"file": "ocd801010_x1d.fits", "star": "* 61 Cyg A", "mode": "E230H", "nominal": 9.688894070527227e-15, "lam_med": 2696.0969150278574}, {"file": "ocd803010_x1d.fits", "star": "HD 33793", "mode": "E230H", "nominal": 4.393079637316559e-15, "lam_med": 2696.338512810419}, {"file": "ocd807010_x1d.fits", "star": "HD 191408", "mode": "E230H", "nominal": 1.757379854558101e-14, "lam_med": 2696.322626549131}, {"file": "ocd809010_x1d.fits", "star": "Ross 905", "mode": "E230H", "nominal": 4.415265237280276e-15, "lam_med": 2696.0497032205503}, {"file": "ocd810010_x1d.fits", "star": "HD 17925", "mode": "E230H", "nominal": 1.472200724071491e-14, "lam_med": 2696.3459940450607}, {"file": "ocd811010_x1d.fits", "star": "HD 13445", "mode": "E230H", "nominal": 1.5001043569393523e-14, "lam_med": 2696.3896428629932}, {"file": "ocd813010_x1d.fits", "star": "HD 37394", "mode": "E230H", "nominal": 1.457305320209305e-14, "lam_med": 2696.164402843322}, {"file": "ocd815010_x1d.fits", "star": "* ups And", "mode": "E230H", "nominal": 7.377534889810569e-14, "lam_med": 2695.9967114305764}, {"file": "ocd816010_x1d.fits", "star": "HD 166", "mode": "E230H", "nominal": 1.8689732329324116e-14, "lam_med": 2695.9782557424123}, {"file": "ocd820010_x1d.fits", "star": "LAWD 23", "mode": "E230H", "nominal": 6.751779353779707e-15, "lam_med": 2696.264285379337}, {"file": "ocd821010_x1d.fits", "star": "HD 43162", "mode": "E230H", "nominal": 1.8792182255547003e-14, "lam_med": 2696.361030233413}, {"file": "ocd822010_x1d.fits", "star": "HD 165185", "mode": "E230H", "nominal": 2.884499982782149e-14, "lam_med": 2696.317317529794}, {"file": "ocd823010_x1d.fits", "star": "HD 82443", "mode": "E230H", "nominal": 1.259522202634218e-14, "lam_med": 2696.370071854505}, {"file": "ocd824010_x1d.fits", "star": "V* LQ Hya", "mode": "E230H", "nominal": 6.929695235957294e-15, "lam_med": 2696.0928638149435}, {"file": "ocd826010_x1d.fits", "star": "HD 203244", "mode": "E230H", "nominal": 7.377810427418183e-15, "lam_med": 2696.413245845262}, {"file": "ocd828010_x1d.fits", "star": "HD 59967", "mode": "E230H", "nominal": 2.024103103464959e-14, "lam_med": 2696.0939889878987}, {"file": "ocd829010_x1d.fits", "star": "HD 116956", "mode": "E230H", "nominal": 1.1081371048841358e-14, "lam_med": 2696.304868098259}, {"file": "ocd831010_x1d.fits", "star": "HD 199288", "mode": "E230H", "nominal": 2.731395741844146e-14, "lam_med": 2696.020071453039}, {"file": "ocd833010_x1d.fits", "star": "V* V1038 Tau", "mode": "E230H", "nominal": 3.5606034471427644e-15, "lam_med": 2696.459591833994}, {"file": "ocd834010_x1d.fits", "star": "V* V401 Hya", "mode": "E230H", "nominal": 1.230094716766866e-14, "lam_med": 2696.3401147349505}, {"file": "ocd835010_x1d.fits", "star": "V* KU Lib", "mode": "E230H", "nominal": 9.019866248203923e-15, "lam_med": 2695.997037761127}, {"file": "ocd836010_x1d.fits", "star": "* 14 Aur B", "mode": "E230H", "nominal": 1.3333480490991002e-14, "lam_med": 2696.425321721561}, {"file": "ocd837010_x1d.fits", "star": "Feige 22", "mode": "E230H", "nominal": 4.341252614071138e-15, "lam_med": 2696.2474383448584}, {"file": "ocd839010_x1d.fits", "star": "V* EK Dra", "mode": "E230H", "nominal": 9.998938850521518e-15, "lam_med": 2696.1440082614085}, {"file": "ocd842010_x1d.fits", "star": "* 45 Tau", "mode": "E230H", "nominal": 3.050592040701071e-14, "lam_med": 2696.232216682568}, {"file": "ocd844010_x1d.fits", "star": "V* DF Tau", "mode": "E230H", "nominal": 3.0219413272816683e-15, "lam_med": 2696.0531858062295}, {"file": "ocd847010_x1d.fits", "star": "HD 83443", "mode": "E230H", "nominal": 3.6705748914093764e-15, "lam_med": 2696.2114611619254}, {"file": "ocd852010_x1d.fits", "star": "HD 209458", "mode": "E230H", "nominal": 8.644024772738579e-15, "lam_med": 2696.1799577280385}, {"file": "ocd853010_x1d.fits", "star": "HD 27901", "mode": "E230H", "nominal": 2.2166959202806628e-14, "lam_med": 2696.434333550806}, {"file": "ocd854010_x1d.fits", "star": "GD 394", "mode": "E230H", "nominal": 5.194566937130508e-15, "lam_med": 2696.0794900161877, "rec": [0.034482758620689655, 0.6206896551724138, 1.0, 1.0, 1.0, 1.0]}, {"file": "ocd855010_x1d.fits", "star": "RX J2214.1-4918", "mode": "E230H", "nominal": 1.2643960242611095e-14, "lam_med": 2696.143268587547}, {"file": "ocd856010_x1d.fits", "star": "* 63 Eri", "mode": "E230H", "nominal": 1.2289399874262688e-14, "lam_med": 2696.3145806492303}, {"file": "ocd857010_x1d.fits", "star": "V* TW Hya", "mode": "E230H", "nominal": 5.188434991605362e-15, "lam_med": 2696.097178506415}, {"file": "ocd860010_x1d.fits", "star": "V* RW Aur", "mode": "E230H", "nominal": 3.97273494013805e-15, "lam_med": 2696.0078191983193}, {"file": "ocd867010_x1d.fits", "star": "HD 188112", "mode": "E230H", "nominal": 1.6637487219203727e-14, "lam_med": 2696.4596632152056}, {"file": "ocd869010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.0854341511715552e-14, "lam_med": 2696.194667221226}, {"file": "ocd870010_x1d.fits", "star": "HD 160365", "mode": "E230H", "nominal": 1.4360937711262444e-14, "lam_med": 2696.280146384071}, {"file": "ocem01010_x1d.fits", "star": "[CTH90] NGC 4151 C04", "mode": "E140M", "nominal": 4.275527647777215e-15, "lam_med": 1379.8464453298225}, {"file": "ocem01020_x1d.fits", "star": "[CTH90] NGC 4151 C04", "mode": "E140M", "nominal": 4.0149660732970116e-15, "lam_med": 1380.0122044580373}, {"file": "ocete1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.4684182627494885e-14, "lam_med": 2257.812743913457}, {"file": "ocete1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5931404060027464e-13, "lam_med": 1380.7516528304468}, {"file": "ocete1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.5946960349155766e-13, "lam_med": 1917.3449784321892}, {"file": "ocete1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 6.900078792569392e-14, "lam_med": 1414.8753326251822}, {"file": "ocete1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.5033875031634934e-14, "lam_med": 2632.7436601807103}, {"file": "ocete2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3386925655963396e-14, "lam_med": 2257.708904735062}, {"file": "ocete2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5906558365969925e-13, "lam_med": 1380.4242184861857}, {"file": "ocete2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6722434523789752e-13, "lam_med": 1917.382152518991}, {"file": "ocete2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.235923525021406e-14, "lam_med": 1414.6113023910477}, {"file": "ocete2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.5107616829880995e-14, "lam_med": 2632.811436143698}, {"file": "ocete3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3388954161996986e-14, "lam_med": 2258.006939126701}, {"file": "ocete3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6015936203728964e-13, "lam_med": 1380.1932981336017, "rec": [0.0, 0.4634146341463415, 0.7948717948717948, 0.9285714285714286, 0.9285714285714286, 0.975609756097561]}, {"file": "ocete3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6752220284253083e-13, "lam_med": 1917.5563612344536}, {"file": "ocete3040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.279704596144642e-14, "lam_med": 1414.5239307451689}, {"file": "ocete3050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.511428762283559e-14, "lam_med": 2633.0064005445283}, {"file": "ocete4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3505652555608676e-14, "lam_med": 2257.803549014836}, {"file": "ocete4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6333229734195003e-13, "lam_med": 1380.6897661258367}, {"file": "ocete4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6230576409837375e-13, "lam_med": 1917.513388002229, "rec": [0.0, 0.375, 0.8461538461538461, 0.925, 1.0, 0.9743589743589743]}, {"file": "ocete4040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.179828335955698e-14, "lam_med": 1415.0418407909858}, {"file": "ocete4050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.575380740922704e-14, "lam_med": 2632.952288129862}, {"file": "ocete5010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3659018570793388e-14, "lam_med": 2258.0154001911806}, {"file": "ocete5020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6410008142436325e-13, "lam_med": 1380.2403699673093}, {"file": "ocete5030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.655718493910024e-13, "lam_med": 1917.6056924058853}, {"file": "ocete5040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.268186350702858e-14, "lam_med": 1415.1248747367545}, {"file": "ocete5050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.566492917779639e-14, "lam_med": 2633.0846955587376}, {"file": "oci7a1010_x1d.fits", "star": "CD-28 5104", "mode": "E140M", "nominal": 2.7570856210897192e-14, "lam_med": 1379.7096666413922}, {"file": "oci7a2010_x1d.fits", "star": "CD-28 5104", "mode": "E140M", "nominal": 2.989639963794708e-14, "lam_med": 1379.406794548606}, {"file": "oci7a3010_x1d.fits", "star": "CD-28 5104", "mode": "E140M", "nominal": 2.8131692070930886e-14, "lam_med": 1380.3125298768132}, {"file": "ocj501010_x1d.fits", "star": "HD 172555", "mode": "E140M", "nominal": 4.755170726564972e-15, "lam_med": 1380.607002491555}, {"file": "ocj501020_x1d.fits", "star": "HD 172555", "mode": "E140M", "nominal": 3.91409805344289e-15, "lam_med": 1380.7405157791873}, {"file": "ocj501030_x1d.fits", "star": "HD 172555", "mode": "E140M", "nominal": 4.9072851851432494e-15, "lam_med": 1380.688685571385}, {"file": "ocj501040_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.2265458935639318e-13, "lam_med": 2061.9488383094913}, {"file": "ocj501050_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.716608929204949e-13, "lam_med": 1754.750282533749}, {"file": "ocj502010_x1d.fits", "star": "HD 172555", "mode": "E140M", "nominal": 5.829174178120881e-15, "lam_med": 1380.1196246089266}, {"file": "ocj502020_x1d.fits", "star": "HD 172555", "mode": "E140M", "nominal": 4.799655618807765e-15, "lam_med": 1380.326666864629}, {"file": "ocj502030_x1d.fits", "star": "HD 172555", "mode": "E140M", "nominal": 6.0054253234841836e-15, "lam_med": 1380.4679229573999}, {"file": "ocj502040_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.5354868140023285e-13, "lam_med": 2061.492788363864}, {"file": "ocj502050_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 2.0634407186519837e-13, "lam_med": 1754.6534375563065}, {"file": "ocja02010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 2.906565153862716e-14, "lam_med": 1253.875738474243}, {"file": "ocjt11010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.355142228706769e-14, "lam_med": 1227.8123095417443, "rec": [0.0, 0.2978723404255319, 0.6808510638297872, 0.7291666666666666, 0.8541666666666666, 0.8979591836734694]}, {"file": "ocjt12010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.2074340647692642e-14, "lam_med": 1228.173974638823}, {"file": "ocjt13010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.2275308161699478e-14, "lam_med": 1227.7519144593743}, {"file": "ocjt14010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.1976470549451616e-14, "lam_med": 1227.726297461299}, {"file": "ocjt21010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.2159293296096555e-14, "lam_med": 1227.582628767597}, {"file": "ocjt22010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.2307615341690706e-14, "lam_med": 1227.7287702884132}, {"file": "ocjt23010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.25026554193214e-14, "lam_med": 1227.7362454763108}, {"file": "ocjt24010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.165099602418653e-14, "lam_med": 1227.611000764773}, {"file": "ock101010_x1d.fits", "star": "* eps Eri", "mode": "E230M", "nominal": 2.5434689514382073e-14, "lam_med": 1917.294427185376}, {"file": "ock101020_x1d.fits", "star": "* eps Eri", "mode": "E230H", "nominal": 1.6028387869255616e-14, "lam_med": 2507.2899619709897}, {"file": "ock101030_x1d.fits", "star": "* eps Eri", "mode": "E230H", "nominal": 3.751300181249003e-14, "lam_med": 2743.8838125044576}, {"file": "ock101040_x1d.fits", "star": "* eps Eri", "mode": "E140M", "nominal": 2.8977797319604428e-15, "lam_med": 1379.2776284732875}, {"file": "ock104010_x1d.fits", "star": "HD 85512", "mode": "E230M", "nominal": 1.5955112056559032e-14, "lam_med": 1917.4816995041058}, {"file": "ock104020_x1d.fits", "star": "HD 85512", "mode": "E230M", "nominal": 4.2505676426884494e-15, "lam_med": 2632.9169564300646}, {"file": "ock104030_x1d.fits", "star": "HD 85512", "mode": "E140M", "nominal": 1.1593015693422698e-16, "lam_med": 1379.7749047980617}, {"file": "ock107010_x1d.fits", "star": "HD 40307", "mode": "E230M", "nominal": 1.7438280106584552e-14, "lam_med": 1917.3111762548006}, {"file": "ock107020_x1d.fits", "star": "HD 40307", "mode": "E230M", "nominal": 6.657832527550905e-15, "lam_med": 2627.2650967870095}, {"file": "ock107030_x1d.fits", "star": "HD 40307", "mode": "E140M", "nominal": 7.705294781881962e-16, "lam_med": 1379.0904973535248}, {"file": "ock110010_x1d.fits", "star": "HD 97658", "mode": "E230M", "nominal": 1.8965527445962268e-14, "lam_med": 1917.4611971997215}, {"file": "ock110020_x1d.fits", "star": "HD 97658", "mode": "E230M", "nominal": 8.162173517390907e-15, "lam_med": 2632.917722832033}, {"file": "ock110030_x1d.fits", "star": "HD 97658", "mode": "E140M", "nominal": 1.5696657852608231e-16, "lam_med": 1378.0976643162319}, {"file": "ocki01010_x1d.fits", "star": "HD 43582", "mode": "E140H", "nominal": 9.24024995924084e-15, "lam_med": 1289.2191258341945}, {"file": "ocki01020_x1d.fits", "star": "HD 43582", "mode": "E140H", "nominal": 6.975854506709902e-15, "lam_med": 1289.178492834275}, {"file": "ocki01030_x1d.fits", "star": "HD 43582", "mode": "E140H", "nominal": 6.980669429622797e-15, "lam_med": 1289.1603119316492}, {"file": "ocki01040_x1d.fits", "star": "HD 43582", "mode": "E140H", "nominal": 8.775281964288954e-15, "lam_med": 1289.3035178964262}, {"file": "ocki01050_x1d.fits", "star": "HD 43582", "mode": "E140H", "nominal": 6.934337853146741e-15, "lam_med": 1289.2082143344724, "rec": [0.044444444444444446, 0.46511627906976744, 0.5777777777777777, 0.6444444444444445, 0.7674418604651163, 0.7674418604651163]}, {"file": "ocki02010_x1d.fits", "star": "HD 254755", "mode": "E140H", "nominal": 3.918265892688179e-15, "lam_med": 1289.1917203571795}, {"file": "ocki02020_x1d.fits", "star": "HD 254755", "mode": "E140H", "nominal": 2.9728768186294824e-15, "lam_med": 1288.893176685825}, {"file": "ocki02030_x1d.fits", "star": "HD 254755", "mode": "E140H", "nominal": 3.0276897570558253e-15, "lam_med": 1288.7948662536405, "rec": [0.0, 0.4444444444444444, 0.5952380952380952, 0.7857142857142857, 0.7674418604651163, 0.8222222222222222]}, {"file": "ocki02040_x1d.fits", "star": "HD 254755", "mode": "E140H", "nominal": 4.014857943039704e-15, "lam_med": 1289.0297244941878}, {"file": "ocki02050_x1d.fits", "star": "HD 254755", "mode": "E140H", "nominal": 3.2672952183122176e-15, "lam_med": 1288.7469809252166}, {"file": "ockm01010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.2293498095401266e-14, "lam_med": 1379.8867982582185}, {"file": "ockm02010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.2044176938649482e-14, "lam_med": 1379.9121635243596}, {"file": "ockm03010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.263355846490626e-14, "lam_med": 1380.4859879890346}, {"file": "ockm04010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.2157308860110708e-14, "lam_med": 1379.595237239984}, {"file": "ockm05010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.2415141496869984e-14, "lam_med": 1379.523043942644}, {"file": "ockm06010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.2237203414893142e-14, "lam_med": 1380.1049161799915}, {"file": "ockm07010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.2163552565589235e-14, "lam_med": 1380.237948797309}, {"file": "ockm08010_x1d.fits", "star": "GD 394", "mode": "E140M", "nominal": 2.1808420631478236e-14, "lam_med": 1380.1716288412963}, {"file": "ockp01010_x1d.fits", "star": "SK 13", "mode": "E230M", "nominal": 5.649548067560873e-15, "lam_med": 2196.1187136335984}, {"file": "ockp03010_x1d.fits", "star": "AzV 47", "mode": "E230M", "nominal": 6.0967911544038326e-15, "lam_med": 2195.9658339110006}, {"file": "ockp03020_x1d.fits", "star": "AzV 47", "mode": "E230M", "nominal": 1.2650887649295064e-14, "lam_med": 1917.4268968230306}, {"file": "ockp04010_x1d.fits", "star": "HD 5045", "mode": "E230M", "nominal": 2.319610452277567e-14, "lam_med": 2195.92126000871}, {"file": "ockp04020_x1d.fits", "star": "HD 5045", "mode": "E230M", "nominal": 2.965249509665244e-14, "lam_med": 1917.3819507906103}, {"file": "ockp04030_x1d.fits", "star": "HD 5045", "mode": "E140M", "nominal": 1.3728085363674573e-14, "lam_med": 1380.3850794618252}, {"file": "ockp05010_x1d.fits", "star": "AzV 80", "mode": "E230M", "nominal": 6.1731509362475594e-15, "lam_med": 2195.997889069467}, {"file": "ockp05020_x1d.fits", "star": "AzV 80", "mode": "E230M", "nominal": 1.2310689835618754e-14, "lam_med": 1917.446415837094}, {"file": "ockp06010_x1d.fits", "star": "AzV 95", "mode": "E230M", "nominal": 5.5067474574367884e-15, "lam_med": 2195.967720762623}, {"file": "ockp06020_x1d.fits", "star": "AzV 95", "mode": "E230M", "nominal": 1.1633037513075485e-14, "lam_med": 1917.4304449078015}, {"file": "ockp07010_x1d.fits", "star": "AzV 207", "mode": "E230M", "nominal": 4.69391212247469e-15, "lam_med": 2195.9931123295123}, {"file": "ockp07020_x1d.fits", "star": "AzV 207", "mode": "E230M", "nominal": 1.0746733891309864e-14, "lam_med": 1917.4141123491981}, {"file": "ockp08010_x1d.fits", "star": "RMC 18", "mode": "E230M", "nominal": 2.1095882802775304e-14, "lam_med": 2195.9463582710696}, {"file": "ockp08020_x1d.fits", "star": "RMC 18", "mode": "E230M", "nominal": 3.046361494222204e-14, "lam_med": 1917.3911656394912}, {"file": "ockp08030_x1d.fits", "star": "RMC 18", "mode": "E140M", "nominal": 3.4730230986709584e-14, "lam_med": 1380.3193238086951}, {"file": "ockp08040_x1d.fits", "star": "RMC 18", "mode": "E140M", "nominal": 1.2549326945743389e-14, "lam_med": 1379.5389834744392}, {"file": "ockp09010_x1d.fits", "star": "AzV 321", "mode": "E230M", "nominal": 5.8376864918998084e-15, "lam_med": 2195.9081837034523}, {"file": "ockp09020_x1d.fits", "star": "AzV 321", "mode": "E230M", "nominal": 1.2092899539761878e-14, "lam_med": 1917.4196231742985}, {"file": "ockp10010_x1d.fits", "star": "AzV 321", "mode": "E140M", "nominal": 8.421012690989054e-15, "lam_med": 1380.1428422889524}, {"file": "ockp11010_x1d.fits", "star": "AzV 388", "mode": "E230M", "nominal": 5.451296151872433e-15, "lam_med": 2195.895078079304}, {"file": "ockp11020_x1d.fits", "star": "AzV 388", "mode": "E230M", "nominal": 1.1717608467847594e-14, "lam_med": 1917.3936380008024}, {"file": "ockp12010_x1d.fits", "star": "AzV 388", "mode": "E140M", "nominal": 8.154842370885224e-15, "lam_med": 1379.5289311985512}, {"file": "ockp13010_x1d.fits", "star": "SK 143", "mode": "E230M", "nominal": 4.100975039556392e-15, "lam_med": 2195.9637310678554}, {"file": "ockp13020_x1d.fits", "star": "SK 143", "mode": "E230M", "nominal": 9.573772196356538e-15, "lam_med": 1917.445248761363}, {"file": "ockp14010_x1d.fits", "star": "Dachs SMC 3-10", "mode": "E230M", "nominal": 4.6969303882586135e-15, "lam_med": 2195.93870793555}, {"file": "ockp15010_x1d.fits", "star": "Dachs SMC 3-10", "mode": "E230M", "nominal": 1.1046360337379448e-14, "lam_med": 1917.4081419131705}, {"file": "ockp16010_x1d.fits", "star": "SK 190", "mode": "E230M", "nominal": 1.0608251377819362e-14, "lam_med": 2195.965541084255}, {"file": "ockp16020_x1d.fits", "star": "SK 190", "mode": "E230M", "nominal": 1.957017483064824e-14, "lam_med": 1917.493306101202}, {"file": "ockp16030_x1d.fits", "star": "SK 190", "mode": "E140M", "nominal": 9.474323165372265e-15, "lam_med": 1380.395299303566}, {"file": "ockp17010_x1d.fits", "star": "WDG 1", "mode": "E230M", "nominal": 8.971536368169173e-15, "lam_med": 2196.045498331979}, {"file": "ockp18010_x1d.fits", "star": "BBB SMC 266", "mode": "E230M", "nominal": 9.255064863002176e-15, "lam_med": 2196.0092037201202}, {"file": "ocks01010_x1d.fits", "star": "[CW83] 0512-08", "mode": "E140M", "nominal": 6.161199985930966e-14, "lam_med": 1380.0733198660066}, {"file": "ocks01020_x1d.fits", "star": "[CW83] 0512-08", "mode": "E230M", "nominal": 5.4562355320240857e-14, "lam_med": 2032.3369258992902}, {"file": "ocks02010_x1d.fits", "star": "PG 0909+276", "mode": "E230M", "nominal": 2.0632469248643148e-14, "lam_med": 2032.379725875274}, {"file": "ocks02020_x1d.fits", "star": "PG 0909+276", "mode": "E140M", "nominal": 2.4113683267096625e-14, "lam_med": 1379.3320996270681}, {"file": "ocks03010_x1d.fits", "star": "LS IV -14 116", "mode": "E230M", "nominal": 5.921119017332642e-15, "lam_med": 2032.533177762597}, {"file": "ocks03020_x1d.fits", "star": "LS IV -14 116", "mode": "E140M", "nominal": 1.546484430600321e-17, "lam_med": 1380.6648961999877}, {"file": "oclc03010_x1d.fits", "star": "* eta Car", "mode": "E140M", "nominal": 8.10159245941147e-14, "lam_med": 1379.879585459007}, {"file": "oclc03020_x1d.fits", "star": "* eta Car", "mode": "E230M", "nominal": 1.4774990032858762e-13, "lam_med": 1917.4237885137713}, {"file": "ocli01010_x1d.fits", "star": "HD 306414", "mode": "E140M", "nominal": 4.876081454378211e-15, "lam_med": 1380.0431196776108}, {"file": "ocli02010_x1d.fits", "star": "BD+53 2790", "mode": "E140M", "nominal": 1.6077302666788595e-14, "lam_med": 1379.5432435687662}, {"file": "ocli03010_x1d.fits", "star": "BD+60 73", "mode": "E140M", "nominal": 4.756488506484193e-15, "lam_med": 1379.0454505498046}, {"file": "ocli04010_x1d.fits", "star": "HD 153919", "mode": "E140M", "nominal": 3.3402140530537704e-13, "lam_med": 1379.5738044614202}, {"file": "ocli05010_x1d.fits", "star": "HD 100199", "mode": "E140M", "nominal": 1.4865519710517242e-13, "lam_med": 1380.4685513370637}, {"file": "ocli06010_x1d.fits", "star": "HD 74194", "mode": "E140M", "nominal": 6.734264307126487e-14, "lam_med": 1379.1935370508527}, {"file": "oclv03050_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 7.867912043251222e-15, "lam_med": 1380.488539526925}, {"file": "oclv03060_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 3.67509823715731e-15, "lam_med": 1379.6209164489658}, {"file": "ocmn01010_x1d.fits", "star": "BD+05 3409", "mode": "E230H", "nominal": 2.379263280241716e-15, "lam_med": 2696.0032713515175}, {"file": "ocmn01020_x1d.fits", "star": "BD+05 3409", "mode": "E140M", "nominal": 1.0643791230450338e-15, "lam_med": 1378.308217074541}, {"file": "ocmn01030_x1d.fits", "star": "BD+05 3409", "mode": "E140M", "nominal": 1.2098919880614937e-15, "lam_med": 1377.0469043652593}, {"file": "ocmn02010_x1d.fits", "star": "BD+18 3421", "mode": "E230H", "nominal": 2.3105204728558e-15, "lam_med": 2695.994208761568}, {"file": "ocmn02020_x1d.fits", "star": "BD+18 3421", "mode": "E140M", "nominal": 1.7133632931749708e-16, "lam_med": 1377.3392018180198}, {"file": "ocmn02030_x1d.fits", "star": "BD+18 3421", "mode": "E140M", "nominal": 6.18548563927473e-16, "lam_med": 1376.2151186924818}, {"file": "ocmn03010_x1d.fits", "star": "* del Pav", "mode": "E230H", "nominal": 1.8631817774691562e-14, "lam_med": 2696.0170833110847}, {"file": "ocmn03020_x1d.fits", "star": "* del Pav", "mode": "E140H", "nominal": 4.601450812314431e-16, "lam_med": 1254.0966664618504}, {"file": "ocmn03030_x1d.fits", "star": "* del Pav", "mode": "E140H", "nominal": 6.831758877721911e-16, "lam_med": 1254.1879071336193}, {"file": "ocmn04010_x1d.fits", "star": "L 347-14", "mode": "E230H", "nominal": 2.3226940294796862e-15, "lam_med": 2695.9378206756915}, {"file": "ocmn04020_x1d.fits", "star": "L 347-14", "mode": "E140M", "nominal": 2.3491900846252835e-17, "lam_med": 1380.1435532797443}, {"file": "ocmn04030_x1d.fits", "star": "L 347-14", "mode": "E140M", "nominal": 4.0173734534271454e-16, "lam_med": 1379.4369862281542}, {"file": "ocmn04040_x1d.fits", "star": "L 347-14", "mode": "E140M", "nominal": 6.560856197424414e-16, "lam_med": 1378.8204047443778}, {"file": "ocmn04050_x1d.fits", "star": "L 347-14", "mode": "E140M", "nominal": 8.986315253169484e-16, "lam_med": 1378.6120328555976}, {"file": "ocoj01010_x1d.fits", "star": "V* V959 Mon", "mode": "E140M", "nominal": 1.6668109109603476e-15, "lam_med": 1379.8596018703347, "rec": [0.0975609756097561, 0.325, 0.5116279069767442, 0.6136363636363636, 0.8205128205128205, 0.7317073170731707]}, {"file": "ocoj01020_x1d.fits", "star": "V* V959 Mon", "mode": "E140M", "nominal": 1.7335666850971809e-15, "lam_med": 1379.9878571304903, "rec": [0.023809523809523808, 0.3902439024390244, 0.5365853658536586, 0.6976744186046512, 0.8421052631578947, 0.8292682926829268]}, {"file": "ocoj01030_x1d.fits", "star": "V* V959 Mon", "mode": "E140M", "nominal": 1.8566084748883343e-15, "lam_med": 1380.61156410188}, {"file": "ocoj02010_x1d.fits", "star": "V* V959 Mon", "mode": "E230M", "nominal": 9.016828141613778e-15, "lam_med": 1917.2751540764864}, {"file": "ocoj02020_x1d.fits", "star": "V* V959 Mon", "mode": "E230M", "nominal": 8.173899633739388e-15, "lam_med": 1917.5025953139584}, {"file": "ocoj03010_x1d.fits", "star": "V* V959 Mon", "mode": "E140M", "nominal": 1.8085902023359627e-15, "lam_med": 1379.8425121424766}, {"file": "ocoj03020_x1d.fits", "star": "V* V959 Mon", "mode": "E230M", "nominal": 1.6120491387390309e-15, "lam_med": 2632.6623093673857}, {"file": "ocoj04010_x1d.fits", "star": "V* V1369 Cen", "mode": "E140M", "nominal": 2.1892906416697572e-14, "lam_med": 1380.7801035154775}, {"file": "ocoj04020_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 3.1801418066633614e-14, "lam_med": 1917.5893363305654}, {"file": "ocoj04030_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 9.956924121398494e-15, "lam_med": 2630.6859524810397}, {"file": "ocoj05010_x1d.fits", "star": "V* V1369 Cen", "mode": "E140M", "nominal": 1.939817281740543e-14, "lam_med": 1380.714939403521}, {"file": "ocoj05020_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 2.9610265224335465e-14, "lam_med": 1917.3740385602196}, {"file": "ocoj05030_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 8.94447034751347e-15, "lam_med": 2630.6111182153772}, {"file": "ocoj08010_x1d.fits", "star": "V* V339 Del", "mode": "E140M", "nominal": 2.9485050361623183e-15, "lam_med": 1380.0303988360624}, {"file": "ocoj08020_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 1.2734211390633364e-14, "lam_med": 1917.6144128580208}, {"file": "ocoj08030_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 2.922136423737356e-15, "lam_med": 2630.2215837784483}, {"file": "ocoj09010_x1d.fits", "star": "V* V339 Del", "mode": "E140M", "nominal": 2.450132939672617e-15, "lam_med": 1378.6745293490167}, {"file": "ocoj59010_x1d.fits", "star": "V* V339 Del", "mode": "E140M", "nominal": 2.3590660776382544e-15, "lam_med": 1379.456398671803}, {"file": "ocoj59020_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 1.289086158165783e-14, "lam_med": 1917.3854840996737}, {"file": "ocoj59030_x1d.fits", "star": "V* V339 Del", "mode": "E230M", "nominal": 2.7550155679662298e-15, "lam_med": 2630.729348885804}, {"file": "ocqje1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3225883383427173e-14, "lam_med": 2257.6339234717}, {"file": "ocqje1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.581079777515718e-13, "lam_med": 1380.608351604947}, {"file": "ocqje1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.5163534671686655e-13, "lam_med": 1917.340822681466}, {"file": "ocqje1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 6.955359945306648e-14, "lam_med": 1414.8597547437244}, {"file": "ocqje1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.500111322057441e-14, "lam_med": 2632.7878743715883}, {"file": "ocqje2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3604582678948275e-14, "lam_med": 2257.7152871702074, "rec": [0.0, 0.7804878048780488, 0.975609756097561, 0.975609756097561, 1.0, 1.0]}, {"file": "ocqje2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.62689795851389e-13, "lam_med": 1380.655271227156}, {"file": "ocqje2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.543990557495861e-13, "lam_med": 1917.36266255701}, {"file": "ocqje2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.210907873777499e-14, "lam_med": 1414.9336124258093}, {"file": "ocqje2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.5455255915746336e-14, "lam_med": 2632.8123405594783}, {"file": "ocqje3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3810829423710285e-14, "lam_med": 2257.9613154558874, "rec": [0.024390243902439025, 0.7804878048780488, 0.975609756097561, 0.9512195121951219, 1.0, 0.975609756097561]}, {"file": "ocqje3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6525277430982253e-13, "lam_med": 1380.5159377079333}, {"file": "ocqje3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6997033131551279e-13, "lam_med": 1917.5816449481442}, {"file": "ocqje3040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.357848546770632e-14, "lam_med": 1415.1055251448968, "rec": [0.05555555555555555, 0.48717948717948717, 0.7105263157894737, 0.7368421052631579, 0.8378378378378378, 0.8108108108108109]}, {"file": "ocqje3050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.607957903855087e-14, "lam_med": 2633.1275972921585}, {"file": "ocqje4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.362474559393055e-14, "lam_med": 2257.765288029404}, {"file": "ocqje4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6481424051505776e-13, "lam_med": 1380.4741821312416}, {"file": "ocqje4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.637918119456629e-13, "lam_med": 1917.429451508994}, {"file": "ocqje4040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.200603429462239e-14, "lam_med": 1414.8551261274595}, {"file": "ocqje4050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.6180871790496556e-14, "lam_med": 2632.80557829014}, {"file": "ocre10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.158695061377308e-15, "lam_med": 1380.4745043504283}, {"file": "ocre10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.3652880012705843e-12, "lam_med": 2793.8071181440473}, {"file": "ocre11010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.39013008626497e-15, "lam_med": 1380.6532175516793}, {"file": "ocre11020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.3638179433866855e-12, "lam_med": 2793.453639878272}, {"file": "octka0010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 9.829744869512854e-15, "lam_med": 2007.3580391057126}, {"file": "octka0020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 7.57585660905569e-15, "lam_med": 2007.3906127534553}, {"file": "octka0030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 7.729269058206933e-15, "lam_med": 2007.3455671325387}, {"file": "octka1010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 9.526677964591499e-15, "lam_med": 2007.6135676577544}, {"file": "octka1020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 7.405289355398123e-15, "lam_med": 2007.6285552370364}, {"file": "octka1030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 7.517021360059258e-15, "lam_med": 2007.5920809468353}, {"file": "octka2010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.0515016029977467e-14, "lam_med": 2007.3029854698948, "rec": [0.038461538461538464, 0.38461538461538464, 0.8076923076923077, 0.9807692307692307, 1.0, 1.0]}, {"file": "octka2020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.376397785766734e-15, "lam_med": 2007.310185300023}, {"file": "octka2030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.465097275448437e-15, "lam_med": 2007.283937638491}, {"file": "octka3010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.0476296619903683e-14, "lam_med": 2007.5384177343371}, {"file": "octka3020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.186444573838271e-15, "lam_med": 2007.52448240603}, {"file": "octka3030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.158152769315767e-15, "lam_med": 2007.4901207899884}, {"file": "octka4010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.1104773980306719e-14, "lam_med": 2007.5637575770252, "rec": [0.019230769230769232, 0.5192307692307693, 0.8461538461538461, 0.9230769230769231, 1.0, 1.0]}, {"file": "octka4020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.615879763185375e-15, "lam_med": 2007.6187934225736}, {"file": "octka4030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.587082476127327e-15, "lam_med": 2007.6095399765043}, {"file": "octka5010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.0599605405813015e-14, "lam_med": 2007.503488794843}, {"file": "octka5020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.269433487185362e-15, "lam_med": 2007.5210243298463}, {"file": "octka5030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.383978720549686e-15, "lam_med": 2007.483196130492}, {"file": "octka6010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.310759011522757e-15, "lam_med": 2257.5885552178697}, {"file": "octka6020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 6.337518032407092e-15, "lam_med": 2257.5815873289466}, {"file": "octka6030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 6.2530957769745e-15, "lam_med": 2257.5760982200086}, {"file": "octka7010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 7.731265882247463e-15, "lam_med": 2257.7276604192243}, {"file": "octka7020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 5.7205159839640616e-15, "lam_med": 2257.7775615615915}, {"file": "octka7030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 5.711635211531931e-15, "lam_med": 2257.771537931838}, {"file": "octka8010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 7.567953741436448e-15, "lam_med": 2257.5804096591246}, {"file": "octka8020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 5.7844062998948436e-15, "lam_med": 2257.6085984824344}, {"file": "octka8030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 5.746209260260548e-15, "lam_med": 2257.603278331522}, {"file": "octka9010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.168806660384634e-15, "lam_med": 2507.321159742828}, {"file": "octka9020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 6.274281506006974e-15, "lam_med": 2507.376170385073}, {"file": "octka9030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 6.243459781392959e-15, "lam_med": 2507.3666229639516}, {"file": "octkaa010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 7.367040659986143e-15, "lam_med": 2507.369886366531}, {"file": "octkaa020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 5.80067236447e-15, "lam_med": 2507.3996510590473}, {"file": "octkab010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.127388588959973e-15, "lam_med": 2743.996950410643}, {"file": "octkab020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 6.2959914794031554e-15, "lam_med": 2744.089055005985}, {"file": "octkab030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 6.399962872398689e-15, "lam_med": 2744.074383280205}, {"file": "octkac010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.1871608788836676e-14, "lam_med": 3015.919341315532}, {"file": "octkac020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 9.33347403115069e-15, "lam_med": 3015.9867575063363}, {"file": "octkac030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 9.486572259427802e-15, "lam_med": 3015.990588048234}, {"file": "octkad010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.2371414787031103e-14, "lam_med": 3015.8754204064344}, {"file": "octkad020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 6.198682180188819e-15, "lam_med": 2257.5916695787346}, {"file": "octkad030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 8.25767628527446e-15, "lam_med": 2007.2962484914083}, {"file": "octkb0010_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 7.490777478417788e-15, "lam_med": 2257.8872699200824}, {"file": "octkb0020_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.781652851410224e-15, "lam_med": 2257.93035895954}, {"file": "octkb0030_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.81725790564214e-15, "lam_med": 2257.9129631128653}, {"file": "octkb1010_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 7.777742284754116e-15, "lam_med": 2257.840133788576}, {"file": "octkb1020_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 6.0162104167756035e-15, "lam_med": 2257.8769459306345}, {"file": "octkb1030_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 6.009045731467093e-15, "lam_med": 2257.876121695373}, {"file": "octkb2010_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 7.240728464892058e-15, "lam_med": 2257.7622087647947}, {"file": "octkb2020_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.677193268270116e-15, "lam_med": 2257.81210538311, "rec": [0.04878048780487805, 0.34146341463414637, 0.6341463414634146, 0.5609756097560976, 0.7804878048780488, 0.926829268292683]}, {"file": "octkb2030_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.673823392686154e-15, "lam_med": 2257.8106586441954}, {"file": "octkb3010_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 6.828491645304938e-15, "lam_med": 2507.404532635334}, {"file": "octkb3020_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.238603835223999e-15, "lam_med": 2507.436463269333}, {"file": "octkb3030_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.337085624408399e-15, "lam_med": 2507.4363599334033, "rec": [0.0, 0.3939393939393939, 0.42424242424242425, 0.5454545454545454, 0.6666666666666666, 0.8181818181818182]}, {"file": "octkb4010_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 6.44371332060581e-15, "lam_med": 2507.321351522033}, {"file": "octkb4020_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.06451115325165e-15, "lam_med": 2507.362910874925}, {"file": "octkb4030_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 5.117349860086828e-15, "lam_med": 2507.3568221061687}, {"file": "octkb5010_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 8.171275166598688e-15, "lam_med": 2743.9531092782663}, {"file": "octkb5020_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 6.213414870750315e-15, "lam_med": 2744.018039881067}, {"file": "octkb5030_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 6.174671199725467e-15, "lam_med": 2743.9699829566016}, {"file": "octkb6010_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 1.2949747942675635e-14, "lam_med": 3015.863173587428}, {"file": "octkb6020_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 1.0089590420330914e-14, "lam_med": 3015.941282893913}, {"file": "octkb6030_x1d.fits", "star": "HD 94028", "mode": "E230H", "nominal": 9.985146001625464e-15, "lam_med": 3015.942538373658}, {"file": "octkc0010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.156577914806533e-14, "lam_med": 2507.4286899308718}, {"file": "octkc0020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.50551196550286e-15, "lam_med": 2257.8333038051146}, {"file": "octkc0030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.455281208033275e-15, "lam_med": 2257.868635305345}, {"file": "octkc1010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.042050546747946e-14, "lam_med": 2507.405705895243}, {"file": "octkc1020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 9.314588118369367e-15, "lam_med": 2744.0831735586607}, {"file": "octkc1030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 7.629436238734505e-15, "lam_med": 2257.6446527318603}, {"file": "octkd0010_x1d.fits", "star": "* nu. Ind", "mode": "E230H", "nominal": 2.864977415971064e-14, "lam_med": 3016.2760120208636}, {"file": "octkd0020_x1d.fits", "star": "* nu. Ind", "mode": "E230H", "nominal": 8.730691417228958e-15, "lam_med": 2257.8624644327692, "rec": [0.04878048780487805, 0.024390243902439025, 0.24390243902439024, 0.36585365853658536, 0.4878048780487805, 0.6829268292682927]}, {"file": "octkd0030_x1d.fits", "star": "* nu. Ind", "mode": "E230H", "nominal": 8.71619871104362e-15, "lam_med": 2257.8609107841494}, {"file": "octkd1010_x1d.fits", "star": "* nu. Ind", "mode": "E230H", "nominal": 1.793295743430749e-14, "lam_med": 2744.3026284102484}, {"file": "octkd1020_x1d.fits", "star": "* nu. Ind", "mode": "E230H", "nominal": 9.800476610329805e-15, "lam_med": 2507.6990605261567}, {"file": "octkd1030_x1d.fits", "star": "* nu. Ind", "mode": "E230H", "nominal": 9.39894189916231e-15, "lam_med": 2257.9164971480723}, {"file": "octr10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.240911735546878e-15, "lam_med": 1380.68935892125}, {"file": "octr10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.3274431028986442e-12, "lam_med": 2793.82647338742}, {"file": "octr11010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 4.200420246540466e-18, "lam_med": 1379.1821379944981}, {"file": "octr11020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 9.697462898565705e-14, "lam_med": 2793.4407906962806, "rec": [0.0, 0.7037037037037037, 0.9230769230769231, 1.0, 1.0, 1.0]}, {"file": "octs01010_x1d.fits", "star": "BD+03 740", "mode": "E230M", "nominal": 6.957590730293144e-15, "lam_med": 2632.663277000016, "rec": [0.0, 0.16666666666666666, 0.875, 0.9166666666666666, 0.9583333333333334, 0.9130434782608695]}, {"file": "octs02010_x1d.fits", "star": "BD+03 740", "mode": "E230M", "nominal": 7.68453757103171e-15, "lam_med": 2632.733523148284, "rec": [0.0, 0.375, 0.7083333333333334, 0.9166666666666666, 0.9166666666666666, 1.0]}, {"file": "octs02020_x1d.fits", "star": "BD+03 740", "mode": "E230M", "nominal": 5.871011838734996e-15, "lam_med": 2632.7745549266456}, {"file": "octs02030_x1d.fits", "star": "BD+03 740", "mode": "E230M", "nominal": 5.690111588492997e-15, "lam_med": 2632.7824297860398}, {"file": "octs03010_x1d.fits", "star": "BD-13 3442", "mode": "E230M", "nominal": 5.703920752601488e-15, "lam_med": 2633.167497389651}, {"file": "octs03020_x1d.fits", "star": "BD-13 3442", "mode": "E230M", "nominal": 4.3755938898135005e-15, "lam_med": 2633.174799664457}, {"file": "octs03030_x1d.fits", "star": "BD-13 3442", "mode": "E230M", "nominal": 4.375020554574383e-15, "lam_med": 2633.180504870008}, {"file": "octs04010_x1d.fits", "star": "BD-13 3442", "mode": "E230M", "nominal": 5.9124702900905356e-15, "lam_med": 2633.214028186828}, {"file": "octs04020_x1d.fits", "star": "BD-13 3442", "mode": "E230M", "nominal": 4.179995315046427e-15, "lam_med": 2633.2414235772467}, {"file": "octs05010_x1d.fits", "star": "BD-13 3442", "mode": "E230M", "nominal": 5.754682588300084e-15, "lam_med": 2633.2343136473273}, {"file": "octs05020_x1d.fits", "star": "BD-13 3442", "mode": "E230M", "nominal": 4.226294120473731e-15, "lam_med": 2633.2208791356943}, {"file": "octs06010_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 4.869611535475048e-15, "lam_med": 2632.7498689602735}, {"file": "octs06020_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 3.502433267060684e-15, "lam_med": 2632.7938740876}, {"file": "octs06030_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 3.489272302392702e-15, "lam_med": 2632.8369650409873}, {"file": "octs07010_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 5.116042648239378e-15, "lam_med": 2632.7411449557176}, {"file": "octs07020_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 3.718360307545193e-15, "lam_med": 2632.744964271161}, {"file": "octs07030_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 3.715685178972751e-15, "lam_med": 2632.747126710311}, {"file": "octs08010_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 4.156852544352356e-15, "lam_med": 2632.796148162742}, {"file": "octs08020_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 3.1161988011992096e-15, "lam_med": 2632.8053465672524}, {"file": "octs08030_x1d.fits", "star": "CD-33 1173", "mode": "E230M", "nominal": 3.1468940807054576e-15, "lam_med": 2632.8055693062715}, {"file": "octw01010_x1d.fits", "star": "* eta Tel", "mode": "E140H", "nominal": 1.4197284319069095e-13, "lam_med": 1584.270412291386}, {"file": "octw01020_x1d.fits", "star": "* eta Tel", "mode": "E140H", "nominal": 1.5631569013455422e-13, "lam_med": 1414.4290157553103}, {"file": "octw01030_x1d.fits", "star": "* eta Tel", "mode": "E140H", "nominal": 3.131439080923647e-14, "lam_med": 1254.4588866242045, "rec": [0.021739130434782608, 0.43478260869565216, 0.5217391304347826, 0.7391304347826086, 0.8444444444444444, 0.8604651162790697]}, {"file": "octw01040_x1d.fits", "star": "* eta Tel", "mode": "E230H", "nominal": 3.5061322067209804e-13, "lam_med": 1807.5428875924097}, {"file": "octw01050_x1d.fits", "star": "* eta Tel", "mode": "E230H", "nominal": 1.347790842393141e-13, "lam_med": 2695.9226784068424}, {"file": "octw02010_x1d.fits", "star": "* eta Tel", "mode": "E140H", "nominal": 1.482999891342955e-13, "lam_med": 1584.662818179474}, {"file": "octw02020_x1d.fits", "star": "* eta Tel", "mode": "E140H", "nominal": 1.558197632292954e-13, "lam_med": 1414.4466294886572}, {"file": "octw02030_x1d.fits", "star": "* eta Tel", "mode": "E140H", "nominal": 3.178644014307815e-14, "lam_med": 1254.5294068379292}, {"file": "octw02040_x1d.fits", "star": "* eta Tel", "mode": "E230H", "nominal": 3.5755501815762493e-13, "lam_med": 1807.6582169930016}, {"file": "octw02050_x1d.fits", "star": "* eta Tel", "mode": "E230H", "nominal": 1.4138615752981748e-13, "lam_med": 2695.9273532175207}, {"file": "octx01010_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.1788020674763413e-14, "lam_med": 2632.7239555520355}, {"file": "octx01020_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.1123767415215473e-14, "lam_med": 2632.730306708035}, {"file": "octx01030_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.1250559103802222e-14, "lam_med": 2632.689024173545}, {"file": "octx01040_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.1274634116854852e-14, "lam_med": 2632.6849727644408}, {"file": "octx03010_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.1434167499240523e-14, "lam_med": 2632.763756362423}, {"file": "octx03020_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.0711566307622094e-14, "lam_med": 2632.756386649462, "rec": [0.010471204188481676, 0.15706806282722513, 0.31413612565445026, 0.6197916666666666, 0.796875, 0.8952879581151832]}, {"file": "octx03030_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.0845769642073895e-14, "lam_med": 2632.7751496645833}, {"file": "octx03040_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.0913707931185553e-14, "lam_med": 2632.7480679615096}, {"file": "octx03050_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.097319504363627e-14, "lam_med": 2632.745925362583}, {"file": "ocu911010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.1045097551348876e-14, "lam_med": 1228.0911094599367}, {"file": "ocu912010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.0945973716825845e-14, "lam_med": 1228.0196369992898}, {"file": "ocu913010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.2453486828908075e-14, "lam_med": 1228.1598779322255}, {"file": "ocu914010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.103121027656914e-14, "lam_med": 1227.7381947614854}, {"file": "ocu921010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.1843855106498163e-14, "lam_med": 1227.7968094072035}, {"file": "ocu922010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.2545947020548973e-14, "lam_med": 1227.7849100186293}, {"file": "ocu923010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.213705003178502e-14, "lam_med": 1227.671056741066, "rec": [0.0425531914893617, 0.375, 0.48936170212765956, 0.5833333333333334, 0.6595744680851063, 0.7872340425531915]}, {"file": "ocu924010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.2453762971487343e-14, "lam_med": 1227.5208572071783}, {"file": "ocus02010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 2.988963922655484e-14, "lam_med": 1253.9301510743855}, {"file": "ocvi08010_x1d.fits", "star": "CPD-69 177", "mode": "E140M", "nominal": 1.8671966426181413e-14, "lam_med": 1380.0642309619216}, {"file": "ocvi28010_x1d.fits", "star": "CD-38 10980", "mode": "E140M", "nominal": 4.477605842991947e-14, "lam_med": 1379.872525840539}, {"file": "ocvi28020_x1d.fits", "star": "CD-38 10980", "mode": "E230M", "nominal": 6.207775974664558e-14, "lam_med": 1917.3980560019688}, {"file": "ocvi28030_x1d.fits", "star": "CD-38 10980", "mode": "E230M", "nominal": 1.8557588398669176e-14, "lam_med": 2630.3030823899444}, {"file": "ocvi33010_x1d.fits", "star": "LAWD 74", "mode": "E230M", "nominal": 1.1802013065886139e-14, "lam_med": 1917.3448346960915}, {"file": "ocvi33020_x1d.fits", "star": "LAWD 74", "mode": "E230M", "nominal": 4.331398331557055e-15, "lam_med": 2631.144471939013}, {"file": "ocvi47010_x1d.fits", "star": "CPD-69 177", "mode": "E230M", "nominal": 4.006857700219428e-14, "lam_med": 1917.4398819776343}, {"file": "ocvi47020_x1d.fits", "star": "CPD-69 177", "mode": "E230M", "nominal": 1.247501113922813e-14, "lam_med": 2632.740412735283}, {"file": "ocvr01010_x1d.fits", "star": "* 26 Cir", "mode": "E140H", "nominal": 6.791862364104456e-15, "lam_med": 1254.1589550962744}, {"file": "ocvrb1010_x1d.fits", "star": "V* AW Per", "mode": "E140H", "nominal": 3.6207595986810965e-15, "lam_med": 1414.9788270494798}, {"file": "ocvrb1020_x1d.fits", "star": "V* AW Per", "mode": "E140H", "nominal": 2.7982575462554913e-15, "lam_med": 1414.8541746396272}, {"file": "ocvrb1030_x1d.fits", "star": "V* AW Per", "mode": "E140H", "nominal": 2.8223658830014052e-15, "lam_med": 1415.0623057376663}, {"file": "ocvrb2010_x1d.fits", "star": "V* AW Per", "mode": "E140H", "nominal": 3.580014851849641e-15, "lam_med": 1415.0143463241336}, {"file": "ocvrb2020_x1d.fits", "star": "V* AW Per", "mode": "E140H", "nominal": 2.8739288029731615e-15, "lam_med": 1415.3168150858055}, {"file": "ocvrb2030_x1d.fits", "star": "V* AW Per", "mode": "E140H", "nominal": 2.993476435933985e-15, "lam_med": 1415.2838092088168}, {"file": "ocvs01010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.4213095711384694e-15, "lam_med": 1414.6348993275542}, {"file": "ocvs01020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.8360016645399213e-15, "lam_med": 1414.5683950370762}, {"file": "ocvs01030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.952970159451355e-15, "lam_med": 1414.5877582343498}, {"file": "ocvs02010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.4242045948824733e-15, "lam_med": 1414.620809064067}, {"file": "ocvs02020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.8929782810048354e-15, "lam_med": 1415.064541284132}, {"file": "ocvs02030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.0380992767509346e-15, "lam_med": 1414.7784870630867}, {"file": "ocvs03010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.238058463589675e-15, "lam_med": 1414.606428031544}, {"file": "ocvs03020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.7018352640475348e-15, "lam_med": 1414.5860995215783}, {"file": "ocvs03030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.8363916559535876e-15, "lam_med": 1414.8894385268043}, {"file": "ocvs04010_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.4292095607951812e-15, "lam_med": 1414.690589643461}, {"file": "ocvs04020_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 1.9123533057488043e-15, "lam_med": 1415.0187493522735}, {"file": "ocvs04030_x1d.fits", "star": "V* V350 Sgr", "mode": "E140H", "nominal": 2.0605391584701876e-15, "lam_med": 1415.0934955524917}, {"file": "ocw3a4010_x1d.fits", "star": "* bet Pic", "mode": "E140H", "nominal": 6.3875051134203325e-15, "lam_med": 1448.2150011804356}, {"file": "ocwf01010_x1d.fits", "star": "V* RY Tau", "mode": "E230M", "nominal": 1.3901213308577122e-15, "lam_med": 2633.004186636648}, {"file": "ocwf01020_x1d.fits", "star": "V* RY Tau", "mode": "E230M", "nominal": 1.3399235253330068e-15, "lam_med": 2630.309072140857}, {"file": "ocwf01030_x1d.fits", "star": "V* RY Tau", "mode": "E230M", "nominal": 1.4264013937720497e-15, "lam_med": 2632.945698248095}, {"file": "ocwf02010_x1d.fits", "star": "[EM98] DG Tau B cRN", "mode": "E230M", "nominal": 1.4207767448814437e-15, "lam_med": 2627.238680722995, "rec": [0.0, 0.4583333333333333, 0.875, 0.9565217391304348, 1.0, 0.9583333333333334]}, {"file": "ocwf02020_x1d.fits", "star": "[EM98] DG Tau B cRN", "mode": "E230M", "nominal": 1.3526400096315249e-15, "lam_med": 2624.0852369084632}, {"file": "ocwf02030_x1d.fits", "star": "[EM98] DG Tau B cRN", "mode": "E230M", "nominal": 1.4282110128387623e-15, "lam_med": 2622.865446202589}, {"file": "ocx901010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.987072990746933e-12, "lam_med": 1379.4725893261448}, {"file": "ocx902010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.402767045613927e-12, "lam_med": 1379.2784583545395}, {"file": "ocx903010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.279785985533124e-12, "lam_med": 1379.9674858386954}, {"file": "ocx904010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.693740828948126e-12, "lam_med": 1379.8809748896283}, {"file": "ocx905010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.748994162654136e-12, "lam_med": 1380.0363590781753}, {"file": "ocx906010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.32138208525904e-12, "lam_med": 1379.092114252364}, {"file": "ocx907010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.609309569211861e-12, "lam_med": 1379.5089553725004}, {"file": "ocx908010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.003747770571725e-12, "lam_med": 1379.3793190661693}, {"file": "ocx909010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.270475427707331e-12, "lam_med": 1380.2898030973083}, {"file": "ocx910010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.238962445061715e-12, "lam_med": 1379.3814966367759}, {"file": "ocx911010_x1d.fits", "star": "* ksi Per", "mode": "E140M", "nominal": 8.818116261709914e-12, "lam_med": 1380.0428769369219}, {"file": "ocyg40010_x1d.fits", "star": "CD-30 18854", "mode": "E140M", "nominal": 7.383624514033755e-17, "lam_med": 1379.5102590283948, "rec": [0.05, 0.14285714285714285, 0.11904761904761904, 0.275, 0.275, 0.3076923076923077]}, {"file": "ocyl01010_x1d.fits", "star": "HD 165783", "mode": "E140H", "nominal": 1.75674459773704e-14, "lam_med": 1373.7777451497254}, {"file": "ocyl01020_x1d.fits", "star": "HD 165783", "mode": "E140H", "nominal": 1.3444303220551862e-14, "lam_med": 1330.1150328529166}, {"file": "ocyl02010_x1d.fits", "star": "HD 165783", "mode": "E140H", "nominal": 1.601120889149315e-14, "lam_med": 1330.5619727013113}, {"file": "ocyl02020_x1d.fits", "star": "HD 165783", "mode": "E140H", "nominal": 1.3723408728050233e-14, "lam_med": 1330.565430122073}, {"file": "ocyl03010_x1d.fits", "star": "HD 165918", "mode": "E140H", "nominal": 2.7365892192783307e-14, "lam_med": 1373.724080384893}, {"file": "ocyl03020_x1d.fits", "star": "HD 165918", "mode": "E140H", "nominal": 2.157310675966026e-14, "lam_med": 1329.9507678713926}, {"file": "ocyl04010_x1d.fits", "star": "HD 174509", "mode": "E140H", "nominal": 1.1263273685836698e-14, "lam_med": 1373.2277221731988}, {"file": "ocyl04020_x1d.fits", "star": "HD 174509", "mode": "E140H", "nominal": 9.262850582233702e-15, "lam_med": 1373.2547744166245}, {"file": "ocyl04030_x1d.fits", "star": "HD 174509", "mode": "E140H", "nominal": 8.22055924459873e-15, "lam_med": 1329.5672821015341}, {"file": "ocyl05010_x1d.fits", "star": "HD 174509", "mode": "E140H", "nominal": 9.808652805921678e-15, "lam_med": 1330.196800396161}, {"file": "ocyl05020_x1d.fits", "star": "HD 174509", "mode": "E140H", "nominal": 7.929405334924342e-15, "lam_med": 1330.054100020468}, {"file": "ocyl05030_x1d.fits", "star": "HD 174509", "mode": "E140H", "nominal": 7.944617943634892e-15, "lam_med": 1329.8760874759278}, {"file": "ocyw01010_x1d.fits", "star": "LP 656-38", "mode": "E230H", "nominal": 2.6470317913961588e-15, "lam_med": 2696.421396915048}, {"file": "ocyw01020_x1d.fits", "star": "LP 656-38", "mode": "E140M", "nominal": 5.207165273159891e-16, "lam_med": 1377.7540903667727}, {"file": "ocyw01030_x1d.fits", "star": "LP 656-38", "mode": "E140M", "nominal": 8.380480371184012e-16, "lam_med": 1377.5676369069922}, {"file": "ocyw02010_x1d.fits", "star": "HD 32147", "mode": "E230H", "nominal": 3.4304903410523907e-15, "lam_med": 2696.4348391902904, "rec": [0.0, 0.10344827586206896, 0.5357142857142857, 0.8620689655172413, 0.9655172413793104, 0.9310344827586207]}, {"file": "ocyw02020_x1d.fits", "star": "HD 32147", "mode": "E140M", "nominal": 3.9386104971629585e-16, "lam_med": 1378.4140695829453}, {"file": "ocyw02030_x1d.fits", "star": "HD 32147", "mode": "E140M", "nominal": 6.953644927860959e-16, "lam_med": 1378.4571322560282, "rec": [0.046511627906976744, 0.175, 0.32558139534883723, 0.5, 0.5609756097560976, 0.6666666666666666]}, {"file": "ocyw03010_x1d.fits", "star": "LP 776-46", "mode": "E230H", "nominal": 2.5107142006857025e-15, "lam_med": 2695.9791937372825}, {"file": "ocyw04010_x1d.fits", "star": "L 737-9", "mode": "E230H", "nominal": 2.313141631167278e-15, "lam_med": 2696.1310529849643}, {"file": "ocyw05010_x1d.fits", "star": "BD-11 916", "mode": "E230H", "nominal": 2.827698857880641e-15, "lam_med": 2696.365142387758}, {"file": "ocyw05020_x1d.fits", "star": "BD-11 916", "mode": "E140M", "nominal": 1.3060764965443957e-15, "lam_med": 1376.5573104031928}, {"file": "ocyw05030_x1d.fits", "star": "BD-11 916", "mode": "E140M", "nominal": 1.5157356682824203e-15, "lam_med": 1376.7306407109977}, {"file": "ocyw06010_x1d.fits", "star": "BD-09 956", "mode": "E230H", "nominal": 2.5578044383771406e-15, "lam_med": 2695.9900407330124}, {"file": "ocyw07010_x1d.fits", "star": "HD 30523", "mode": "E230H", "nominal": 2.551781372489246e-15, "lam_med": 2696.00035917912}, {"file": "ocyw08010_x1d.fits", "star": "HD 29980", "mode": "E230H", "nominal": 4.475742202404658e-15, "lam_med": 2696.390672984551}, {"file": "ocyy01010_x1d.fits", "star": "* 31 Cyg", "mode": "E140H", "nominal": 4.956279904720545e-13, "lam_med": 1330.6525355297524}, {"file": "ocyy01020_x1d.fits", "star": "* 31 Cyg", "mode": "E140H", "nominal": 6.083174347719399e-13, "lam_med": 1254.5405805924584}, {"file": "ocyy01030_x1d.fits", "star": "* 31 Cyg", "mode": "E140H", "nominal": 4.847788482671682e-13, "lam_med": 1289.682458283151}, {"file": "ocyy01040_x1d.fits", "star": "* 31 Cyg", "mode": "E140H", "nominal": 6.261554493055207e-13, "lam_med": 1228.519457513531}, {"file": "oczq06010_x1d.fits", "star": "V* V1369 Cen", "mode": "E140M", "nominal": 8.028764858086067e-15, "lam_med": 1380.0463628933448}, {"file": "oczq06020_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 1.6835505960062234e-14, "lam_med": 1917.4829159806466}, {"file": "oczq06030_x1d.fits", "star": "V* V1369 Cen", "mode": "E230M", "nominal": 4.844352592102869e-15, "lam_med": 2630.06504051393}, {"file": "od0610010_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 4.4004371937067666e-15, "lam_med": 1289.0288515156801}, {"file": "od0610020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.3783146670187033e-14, "lam_med": 1477.258610760793}, {"file": "od0610030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 5.161266542877789e-12, "lam_med": 2743.905689610147}, {"file": "od0611010_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 4.523271643258171e-15, "lam_med": 1289.3460497583142}, {"file": "od0611020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.439748067062207e-14, "lam_med": 1477.7055741485783}, {"file": "od0611030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 4.416445646633965e-12, "lam_med": 2744.402895193518}, {"file": "od1ce1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3495790093264123e-14, "lam_med": 2257.8660054120433}, {"file": "od1ce1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.659026305126944e-13, "lam_med": 1380.3817233581694}, {"file": "od1ce1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.5979952263667861e-13, "lam_med": 1917.3920575734855}, {"file": "od1ce1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.172556235861671e-14, "lam_med": 1414.8642182501042}, {"file": "od1ce1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.640186241681329e-14, "lam_med": 2632.690363957283}, {"file": "od1ce2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3140625038385774e-14, "lam_med": 2257.841272742889}, {"file": "od1ce2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.613090993614012e-13, "lam_med": 1380.431669839585}, {"file": "od1ce2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6133741195658343e-13, "lam_med": 1917.3734385230755}, {"file": "od1ce2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 6.996168016943267e-14, "lam_med": 1414.9995073785644}, {"file": "od1ce2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.5762121569593764e-14, "lam_med": 2632.7203918435252}, {"file": "od1ce3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3601986938581938e-14, "lam_med": 2257.9992617664393}, {"file": "od1ce3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6150221100440617e-13, "lam_med": 1380.628979902792}, {"file": "od1ce3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6516381976144114e-13, "lam_med": 1917.5980300368528}, {"file": "od1ce3040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.246170845321118e-14, "lam_med": 1415.1198698052808, "rec": [0.0, 0.5945945945945946, 0.918918918918919, 0.6666666666666666, 0.8205128205128205, 0.8648648648648649]}, {"file": "od1ce3050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.6040679913751456e-14, "lam_med": 2633.084125679532}, {"file": "od1ce4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3584292788143003e-14, "lam_med": 2257.817668320339}, {"file": "od1ce4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5899263514360825e-13, "lam_med": 1380.2549752794566}, {"file": "od1ce4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.625601886303444e-13, "lam_med": 1917.4822457690966}, {"file": "od1ce4040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.169560689706379e-14, "lam_med": 1414.8692343811697}, {"file": "od1ce4050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.636979800168289e-14, "lam_med": 2632.8839796898437}, {"file": "od1t01010_x1d.fits", "star": "V* V5668 Sgr", "mode": "E140M", "nominal": 6.298777058294978e-14, "lam_med": 1380.4211240989412}, {"file": "od1t01020_x1d.fits", "star": "V* V5668 Sgr", "mode": "E230M", "nominal": 7.295266498311154e-14, "lam_med": 1917.305613878964}, {"file": "od1t01030_x1d.fits", "star": "V* V5668 Sgr", "mode": "E230M", "nominal": 2.4320273484392847e-14, "lam_med": 2630.327154016669}, {"file": "od2z01010_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 7.14175366620285e-18, "lam_med": 1253.9715324917725}, {"file": "od3g01010_x1d.fits", "star": "HD 5980", "mode": "E140M", "nominal": 2.50180081915089e-14, "lam_med": 1380.0111956312348}, {"file": "od3g01020_x1d.fits", "star": "HD 5980", "mode": "E140M", "nominal": 2.884543761537291e-14, "lam_med": 1379.8808241377756}, {"file": "od3j01010_x1d.fits", "star": "HD 54879", "mode": "E140M", "nominal": 2.5624373480924277e-13, "lam_med": 1380.0623701506822}, {"file": "od3j01020_x1d.fits", "star": "HD 54879", "mode": "E140M", "nominal": 2.784946990502089e-13, "lam_med": 1380.2550460687553}, {"file": "od3j01030_x1d.fits", "star": "HD 54879", "mode": "E140M", "nominal": 3.0914236182197744e-13, "lam_med": 1380.4402639785362}, {"file": "od4n01010_x1d.fits", "star": "* omi Aql", "mode": "E230M", "nominal": 2.7597095717541716e-14, "lam_med": 1917.5007302114545}, {"file": "od5510020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.2554156990827779e-14, "lam_med": 1477.3728606406403}, {"file": "od5510030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 3.749278230175169e-12, "lam_med": 2743.903290016936}, {"file": "od5511020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.3705245092299118e-14, "lam_med": 1477.6850347106765}, {"file": "od5511030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 4.8499738953142416e-12, "lam_med": 2744.425694349709}, {"file": "od5601010_x1d.fits", "star": "CD-22 9142", "mode": "E140M", "nominal": 3.771268949507681e-14, "lam_med": 1379.465343678576}, {"file": "od5602010_x1d.fits", "star": "Feige 110", "mode": "E140M", "nominal": 3.8513746497829606e-14, "lam_med": 1380.0366914630351}, {"file": "od5603010_x1d.fits", "star": "PG 0909+276", "mode": "E140M", "nominal": 2.668103917112688e-14, "lam_med": 1378.768889800368}, {"file": "od5a01010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.9870734460783454e-15, "lam_med": 2156.9831295680274}, {"file": "od5a01020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.98332565730063e-15, "lam_med": 2157.024724814101}, {"file": "od5a01030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.1318448602175564e-15, "lam_med": 2157.0273401003165}, {"file": "od5a02010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.518155869240812e-15, "lam_med": 2156.972904342867}, {"file": "od5a02020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.310640944722622e-15, "lam_med": 2157.0079099193845, "rec": [0.0, 0.4, 0.8, 0.9777777777777777, 1.0, 1.0]}, {"file": "od5a02030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.331114481206137e-15, "lam_med": 2157.007869100619}, {"file": "od5a03010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.045057063602989e-15, "lam_med": 2156.9737100258662, "rec": [0.022222222222222223, 0.28888888888888886, 0.8222222222222222, 0.9777777777777777, 0.9777777777777777, 1.0]}, {"file": "od5a03020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.069684502692289e-15, "lam_med": 2157.0071708708538}, {"file": "od5a03030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.2015296474123204e-15, "lam_med": 2156.9997253385186}, {"file": "od5a04010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.04799465547381e-15, "lam_med": 2156.9772140577597}, {"file": "od5a04020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.033593000631636e-15, "lam_med": 2157.0295019435894}, {"file": "od5a04030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.139898532113144e-15, "lam_med": 2157.028030107901}, {"file": "od5a05010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.7223117659485615e-15, "lam_med": 2157.048158916904}, {"file": "od5a05020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.617111807818514e-15, "lam_med": 2157.097564905665}, {"file": "od5a05030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.724306840314542e-15, "lam_med": 2157.0942556398036}, {"file": "od5a06010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.195420927304601e-15, "lam_med": 2157.1038325969193}, {"file": "od5a06020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.048396764457256e-15, "lam_med": 2157.1980870363786}, {"file": "od5a06030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.113946524619269e-15, "lam_med": 2157.191909104587}, {"file": "od5a07010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.8144058282998825e-15, "lam_med": 2157.112777078548}, {"file": "od5a07020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.818682062723996e-15, "lam_med": 2157.1669914579397}, {"file": "od5a07030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.98264795834844e-15, "lam_med": 2157.123453495731}, {"file": "od5a08010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.363424305591268e-15, "lam_med": 2156.9424740401814}, {"file": "od5a08020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.157120112122639e-15, "lam_med": 2156.9817942478085}, {"file": "od5a08030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.2513096460206465e-15, "lam_med": 2156.999735445498}, {"file": "od5a09010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.708738767801255e-15, "lam_med": 2157.0025079546253}, {"file": "od5a09020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.6759802697290414e-15, "lam_med": 2157.048093415813, "rec": [0.06666666666666667, 0.4222222222222222, 0.7555555555555555, 0.9777777777777777, 1.0, 1.0]}, {"file": "od5a09030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.8431824040951196e-15, "lam_med": 2156.9993125986375}, {"file": "od5a10010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.062446951752499e-15, "lam_med": 2157.020856635897}, {"file": "od5a10020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.0681267050190895e-15, "lam_med": 2157.085657176425}, {"file": "od5a10030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.205794649693627e-15, "lam_med": 2157.073739303067}, {"file": "od5a11010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.762566045686292e-15, "lam_med": 2156.920737488977}, {"file": "od5a11020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.717950341340818e-15, "lam_med": 2156.9844873988804}, {"file": "od5a11030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.826203187536971e-15, "lam_med": 2156.9812331119974}, {"file": "od5a12010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.86244571125516e-15, "lam_med": 2156.9389899916673}, {"file": "od5a12020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.786792743312628e-15, "lam_med": 2156.985598562465}, {"file": "od5a12030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.900008203913153e-15, "lam_med": 2156.981325885231, "rec": [0.044444444444444446, 0.35555555555555557, 0.7777777777777778, 1.0, 1.0, 1.0]}, {"file": "od5a13010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.0516516081412564e-15, "lam_med": 2157.040943161672}, {"file": "od5a13020_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 3.998328497316465e-15, "lam_med": 2157.1304168035585}, {"file": "od5a13030_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 4.080899820026315e-15, "lam_med": 2157.1288364473453}, {"file": "od5a14010_x1d.fits", "star": "HD 196944", "mode": "E230H", "nominal": 5.138638678381138e-15, "lam_med": 2156.9603776154686}, {"file": "od5c10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.340973781239823e-15, "lam_med": 1380.5514332137504}, {"file": "od5c10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.4531581769769e-12, "lam_med": 2793.854474953654}, {"file": "od5c11010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 8.279081059954145e-15, "lam_med": 1380.543647558894}, {"file": "od5c11020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.4475463291376335e-12, "lam_med": 2793.458297976484}, {"file": "od5y02010_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 4.2588046120077276e-13, "lam_med": 1373.3939686492974}, {"file": "od5y02020_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 5.944111890098992e-13, "lam_med": 1584.6783853238646}, {"file": "od5y03010_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 3.7816650329598556e-13, "lam_med": 1373.240401955813}, {"file": "od5y03020_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 5.241159015320742e-13, "lam_med": 1584.8548480178156}, {"file": "od5y04010_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 4.040922126352673e-13, "lam_med": 1373.3098812398955}, {"file": "od5y04020_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 5.701752015606372e-13, "lam_med": 1584.834774509045}, {"file": "od5y05010_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 4.290366509908067e-13, "lam_med": 1373.2234026078627}, {"file": "od5y05020_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 5.629923469011509e-13, "lam_med": 1584.844451766543, "rec": [0.03225806451612903, 0.4838709677419355, 0.6666666666666666, 0.84375, 0.9375, 0.9375]}, {"file": "od5y51010_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 4.791555104875862e-13, "lam_med": 1373.5369980308487}, {"file": "od5y51020_x1d.fits", "star": "V* CU Vir", "mode": "E140H", "nominal": 5.992051505460166e-13, "lam_med": 1584.950763555736, "rec": [0.03333333333333333, 0.45161290322580644, 0.7333333333333333, 0.8333333333333334, 0.967741935483871, 0.90625]}, {"file": "od6502010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 9.59867228804615e-15, "lam_med": 2007.354304384782}, {"file": "od6502020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.782776396447739e-15, "lam_med": 2007.3681036714065}, {"file": "od6502030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.86850622836796e-15, "lam_med": 2007.332569892767}, {"file": "od65a1010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 9.603067862347489e-15, "lam_med": 2007.5084330150275}, {"file": "od65a1020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.493586480930018e-15, "lam_med": 2007.5501363451144}, {"file": "od65a2010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 6.569955279929395e-15, "lam_med": 2005.8393935214601}, {"file": "od65a2020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 4.943411801091008e-15, "lam_med": 2005.8008878899411}, {"file": "od65a2030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 5.144820499892902e-15, "lam_med": 2007.2536204858502, "rec": [0.0, 0.2692307692307692, 0.6923076923076923, 0.9807692307692307, 1.0, 1.0]}, {"file": "od65a3010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 9.465240118348083e-15, "lam_med": 2007.4487051220349}, {"file": "od65a3020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.553113446888805e-15, "lam_med": 2007.4777000715349}, {"file": "od65a3030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.671376944145469e-15, "lam_med": 2007.449265123159}, {"file": "od65a4010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 9.855019005609333e-15, "lam_med": 2007.219634612966}, {"file": "od65a4020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.719788057264351e-15, "lam_med": 2007.2520478349206}, {"file": "od65a4030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.728772388950914e-15, "lam_med": 2007.2855011326806}, {"file": "od65a5010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 9.186742266442027e-15, "lam_med": 2007.5951558557258}, {"file": "od65a5020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.32658509683777e-15, "lam_med": 2007.6165452798105}, {"file": "od65a5030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.458824829546485e-15, "lam_med": 2007.5597796689021}, {"file": "od65a6010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 9.697549239853188e-15, "lam_med": 2007.4090864491914, "rec": [0.0, 0.40384615384615385, 0.7884615384615384, 0.9807692307692307, 0.9615384615384616, 1.0]}, {"file": "od65a6020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.564937261181213e-15, "lam_med": 2007.4543887633786}, {"file": "od65a6030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.564231943204733e-15, "lam_med": 2007.4680079826583}, {"file": "od65a7010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 8.926543370869292e-15, "lam_med": 2007.6707217397345}, {"file": "od65a7020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.104876336659129e-15, "lam_med": 2007.6793715768763}, {"file": "od65a7030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.248781492577419e-15, "lam_med": 2007.6478167304313}, {"file": "od65a8010_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 8.919305625898185e-15, "lam_med": 2007.606610823043}, {"file": "od65a8020_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.162812696554826e-15, "lam_med": 2007.6329921305771, "rec": [0.0, 0.46153846153846156, 0.8461538461538461, 0.9230769230769231, 0.9807692307692307, 1.0]}, {"file": "od65a8030_x1d.fits", "star": "HD 19445", "mode": "E230H", "nominal": 7.32321770629965e-15, "lam_med": 2007.6031628431801}, {"file": "od65b1010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.0571929546258579e-14, "lam_med": 1962.4082945961381}, {"file": "od65b1020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.415317878746949e-15, "lam_med": 1962.45492050136}, {"file": "od65b1030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.719821912799354e-15, "lam_med": 1962.4477741297583}, {"file": "od65b2010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.1112614850924291e-14, "lam_med": 1962.391877920959}, {"file": "od65b2020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.925604799603947e-15, "lam_med": 1962.4255397102902, "rec": [0.037037037037037035, 0.3148148148148148, 0.7592592592592593, 0.9259259259259259, 0.9814814814814815, 0.9814814814814815]}, {"file": "od65b2030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 9.113485444426219e-15, "lam_med": 1962.4437607212622}, {"file": "od65b3010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.0692664843228725e-14, "lam_med": 1962.415888884132}, {"file": "od65b3020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.505770720130665e-15, "lam_med": 1962.4477589668488}, {"file": "od65b3030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.801148517780728e-15, "lam_med": 1962.4429105004583, "rec": [0.0, 0.3148148148148148, 0.5925925925925926, 0.8518518518518519, 1.0, 1.0]}, {"file": "od65b4010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.0783876207823053e-14, "lam_med": 1962.3996235949123}, {"file": "od65b4020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.377304294391465e-15, "lam_med": 1962.4328807206352}, {"file": "od65b4030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.56474145234528e-15, "lam_med": 1962.4285243886088}, {"file": "od65b5010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.1407070179413036e-14, "lam_med": 1962.3734211184558}, {"file": "od65b5020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.96759251306068e-15, "lam_med": 1962.4388102386345}, {"file": "od65b5030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 9.05072208461134e-15, "lam_med": 1962.4342389666433}, {"file": "od65b6010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.1073899732847447e-14, "lam_med": 1962.4002072292537}, {"file": "od65b6020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.696309103385881e-15, "lam_med": 1962.4312234180625}, {"file": "od65b6030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.888547426643853e-15, "lam_med": 1962.4401271305917}, {"file": "od65b7010_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 1.1391207797526081e-14, "lam_med": 1962.3767632549402, "rec": [0.018518518518518517, 0.3148148148148148, 0.7222222222222222, 0.9814814814814815, 1.0, 1.0]}, {"file": "od65b7020_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.925760896391216e-15, "lam_med": 1962.428921973568}, {"file": "od65b7030_x1d.fits", "star": "HD 140283", "mode": "E230H", "nominal": 8.96986810497538e-15, "lam_med": 1962.4288564085555}, {"file": "od6n01010_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.649939068550356e-10, "lam_med": 1380.2543201831463}, {"file": "od6n01020_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.695399429439016e-10, "lam_med": 1380.1283393766205}, {"file": "od6n01030_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7349406084876594e-10, "lam_med": 1380.1357477186905}, {"file": "od6n01040_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7430745332842953e-10, "lam_med": 1380.4913871173244}, {"file": "od6n01050_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.764733271730804e-10, "lam_med": 1380.3950814346579}, {"file": "od6n01060_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.763293939203831e-10, "lam_med": 1380.49878933301}, {"file": "od6n01070_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.756425083080206e-10, "lam_med": 1380.49137925706, "rec": [0.0, 0.4523809523809524, 0.7073170731707317, 0.8409090909090909, 0.925, 0.9534883720930233]}, {"file": "od6n02010_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.5996288273471583e-10, "lam_med": 1380.3775604048633}, {"file": "od6n02020_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6420450228021995e-10, "lam_med": 1380.347921723464}, {"file": "od6n02030_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.682021852531025e-10, "lam_med": 1380.0515059866957}, {"file": "od6n02040_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.708612119183269e-10, "lam_med": 1380.3553252871347}, {"file": "od6n02050_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.72613032294924e-10, "lam_med": 1380.1774905835541}, {"file": "od6n02060_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.724179673988082e-10, "lam_med": 1380.3182752122602}, {"file": "od6n02070_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.720500306897459e-10, "lam_med": 1380.325681684148}, {"file": "od6n03010_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.563200048489994e-10, "lam_med": 1379.99755810311}, {"file": "od6n03020_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6241152259349197e-10, "lam_med": 1380.0790854473428}, {"file": "od6n03030_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6612730136514007e-10, "lam_med": 1380.2421184967304}, {"file": "od6n03040_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.676430507487591e-10, "lam_med": 1380.5606743775186}, {"file": "od6n03050_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.687338163288795e-10, "lam_med": 1380.4273381142245}, {"file": "od6n03060_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6797947809400547e-10, "lam_med": 1380.5236344406248}, {"file": "od6n03070_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6738905427621843e-10, "lam_med": 1380.5236318315292}, {"file": "od6n04010_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.5551200798671853e-10, "lam_med": 1379.8939869549995}, {"file": "od6n04020_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.624401316165313e-10, "lam_med": 1379.8717428548314}, {"file": "od6n04030_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6657287057190425e-10, "lam_med": 1379.938459306386}, {"file": "od6n04040_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6915181283460335e-10, "lam_med": 1380.1534001837265}, {"file": "od6n04050_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.714171375683991e-10, "lam_med": 1380.00516730294}, {"file": "od6n04060_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.716280338870284e-10, "lam_med": 1380.1682163961632}, {"file": "od6n04070_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.715252918198873e-10, "lam_med": 1380.160803083021}, {"file": "od6n05010_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.5982808005567334e-10, "lam_med": 1380.1750514644941}, {"file": "od6n05020_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6637674276193034e-10, "lam_med": 1380.4047401919763}, {"file": "od6n05030_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7106747613512424e-10, "lam_med": 1380.397329217234}, {"file": "od6n05040_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.744126130700384e-10, "lam_med": 1380.5751066033654, "rec": [0.02631578947368421, 0.4634146341463415, 0.6829268292682927, 0.8292682926829268, 0.8780487804878049, 0.9761904761904762]}, {"file": "od6n05050_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7622466547309153e-10, "lam_med": 1380.4195488533571}, {"file": "od6n05060_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7606125718987256e-10, "lam_med": 1380.4343624214728}, {"file": "od6n05070_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7637738092852905e-10, "lam_med": 1380.4491755514298}, {"file": "od6n06010_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.5294656768876986e-10, "lam_med": 1379.901764160197}, {"file": "od6n06020_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.598019405352139e-10, "lam_med": 1379.9833018434983}, {"file": "od6n06030_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6376962055378695e-10, "lam_med": 1380.1389448242721}, {"file": "od6n06040_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.6726690937411724e-10, "lam_med": 1380.5019898027517}, {"file": "od6n06050_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7042382255745457e-10, "lam_med": 1380.3982772130375}, {"file": "od6n06060_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.7053204982657334e-10, "lam_med": 1380.524206361559, "rec": [0.023809523809523808, 0.4186046511627907, 0.6190476190476191, 0.9069767441860465, 0.9767441860465116, 0.9761904761904762]}, {"file": "od6n06070_x1d.fits", "star": "* bet CMa", "mode": "E140M", "nominal": 2.710606994290424e-10, "lam_med": 1380.5316108221932}, {"file": "od6n07010_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.730900113234768e-11, "lam_med": 1379.8940187512567}, {"file": "od6n07020_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.666118430462877e-11, "lam_med": 1380.1756798345461, "rec": [0.023255813953488372, 0.5853658536585366, 0.775, 0.9024390243902439, 0.975609756097561, 0.975]}, {"file": "od6n07030_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.584192781504936e-11, "lam_med": 1380.2794215746862}, {"file": "od6n07040_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.460886169787874e-11, "lam_med": 1380.2497783401527}, {"file": "od6n07050_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.29541177306685e-11, "lam_med": 1380.1089692930868}, {"file": "od6n07060_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.118010517424034e-11, "lam_med": 1380.3164601317396}, {"file": "od6n07070_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.199034668590917e-11, "lam_med": 1380.45722384787}, {"file": "od6n08010_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.273738834989667e-11, "lam_med": 1380.3395481854297, "rec": [0.0, 0.42857142857142855, 0.65, 0.7674418604651163, 0.9512195121951219, 0.9285714285714286]}, {"file": "od6n08020_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.365379819148757e-11, "lam_med": 1380.4654901397357}, {"file": "od6n08030_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.319003756428622e-11, "lam_med": 1380.5173411936546}, {"file": "od6n08040_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.232939489979641e-11, "lam_med": 1380.3469461153736}, {"file": "od6n08050_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.15693177647255e-11, "lam_med": 1380.176512475792}, {"file": "od6n08060_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.096509292452715e-11, "lam_med": 1380.3691668343592}, {"file": "od6n08070_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.217025385150597e-11, "lam_med": 1380.3617546061168}, {"file": "od6n09010_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.695468784116415e-11, "lam_med": 1380.0285590124229}, {"file": "od6n09020_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.859132006391283e-11, "lam_med": 1380.3398069536095}, {"file": "od6n09030_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.862961661543022e-11, "lam_med": 1380.487973809137, "rec": [0.04878048780487805, 0.5476190476190477, 0.8421052631578947, 0.8780487804878049, 0.9761904761904762, 0.975609756097561]}, {"file": "od6n09040_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.880178441996782e-11, "lam_med": 1380.4509308342151}, {"file": "od6n09050_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.842379087391661e-11, "lam_med": 1380.3249785492894}, {"file": "od6n09060_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.774405106927715e-11, "lam_med": 1380.584259155707}, {"file": "od6n09070_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.898627225971556e-11, "lam_med": 1380.5842559630078}, {"file": "od6n10010_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.670583339459032e-11, "lam_med": 1380.2348022250694}, {"file": "od6n10020_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.786115010666525e-11, "lam_med": 1380.531150151166}, {"file": "od6n10030_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.795869314226925e-11, "lam_med": 1380.6570613646513}, {"file": "od6n10040_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.770558529338647e-11, "lam_med": 1380.6200266586734}, {"file": "od6n10050_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.718105613763954e-11, "lam_med": 1380.5459549561308}, {"file": "od6n10060_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.61693492655859e-11, "lam_med": 1380.8051593244322}, {"file": "od6n10070_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.719965462604315e-11, "lam_med": 1380.8273698143819}, {"file": "od6n11010_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 8.978489282471477e-11, "lam_med": 1380.0930009966874}, {"file": "od6n11020_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.19383662305822e-11, "lam_med": 1380.2782653638203}, {"file": "od6n11030_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.308245256538158e-11, "lam_med": 1380.4634854547926}, {"file": "od6n11040_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.379553111577763e-11, "lam_med": 1380.4560741834355}, {"file": "od6n11050_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.427996419112022e-11, "lam_med": 1380.2856651006705}, {"file": "od6n11060_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.402917994230742e-11, "lam_med": 1380.56718086689}, {"file": "od6n11070_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.583650935496688e-11, "lam_med": 1380.5671776826148}, {"file": "od6n12010_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.421515240483782e-11, "lam_med": 1379.9901614831188}, {"file": "od6n12020_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.697169223720302e-11, "lam_med": 1380.353290865647}, {"file": "od6n12030_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.873525576020881e-11, "lam_med": 1380.5014551910465}, {"file": "od6n12040_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.906151973512875e-11, "lam_med": 1380.5162670971172}, {"file": "od6n12050_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.914711812965661e-11, "lam_med": 1380.382916982489}, {"file": "od6n12060_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 9.85424013137796e-11, "lam_med": 1380.568111300469}, {"file": "od6n12070_x1d.fits", "star": "* ksi01 CMa", "mode": "E140M", "nominal": 1.0051532214607369e-10, "lam_med": 1380.5829219576228}, {"file": "od7201010_x1d.fits", "star": "V* IX Vel", "mode": "E140M", "nominal": 1.2444226240760784e-13, "lam_med": 1379.6385189923526}, {"file": "od7202010_x1d.fits", "star": "CD-42 14462", "mode": "E140M", "nominal": 8.259676953327004e-14, "lam_med": 1380.4672009773847}, {"file": "od7203010_x1d.fits", "star": "V* RW Sex", "mode": "E140M", "nominal": 6.535157984212202e-14, "lam_med": 1379.8436614993282, "rec": [0.0, 0.5365853658536586, 0.8780487804878049, 0.926829268292683, 0.926829268292683, 0.9534883720930233]}, {"file": "od7m04010_x1d.fits", "star": "BI 214", "mode": "E140M", "nominal": 1.0917538601308763e-14, "lam_med": 1380.110358967317}, {"file": "od7m04020_x1d.fits", "star": "BI 214", "mode": "E140M", "nominal": 1.0048966684843551e-14, "lam_med": 1379.956732910328}, {"file": "od7m04030_x1d.fits", "star": "BI 214", "mode": "E140M", "nominal": 1.0124511843005793e-14, "lam_med": 1380.1797675469963}, {"file": "od7m05010_x1d.fits", "star": "[ELS2006] N11 020", "mode": "E140M", "nominal": 9.627031712918909e-15, "lam_med": 1379.7526399311892}, {"file": "od7m05020_x1d.fits", "star": "[ELS2006] N11 020", "mode": "E140M", "nominal": 8.868541634568548e-15, "lam_med": 1379.865229098919}, {"file": "od7m06010_x1d.fits", "star": "SK -69 212", "mode": "E140M", "nominal": 9.835037101599418e-15, "lam_med": 1379.3598478000563}, {"file": "od7m07010_x1d.fits", "star": "BI 265", "mode": "E140M", "nominal": 1.050472648352029e-14, "lam_med": 1379.6465543246277}, {"file": "od7m07020_x1d.fits", "star": "BI 265", "mode": "E140M", "nominal": 9.671584905485742e-15, "lam_med": 1379.7421115934108}, {"file": "od7m07030_x1d.fits", "star": "BI 265", "mode": "E140M", "nominal": 9.734296554729254e-15, "lam_med": 1379.7875375341591}, {"file": "od7m08010_x1d.fits", "star": "SK -68 112", "mode": "E140M", "nominal": 1.3222854877441752e-14, "lam_med": 1379.7983869145396}, {"file": "od7m08020_x1d.fits", "star": "SK -68 112", "mode": "E140M", "nominal": 1.2116352899842834e-14, "lam_med": 1379.6630700079627, "rec": [0.024390243902439025, 0.4146341463414634, 0.8292682926829268, 0.8095238095238095, 0.9459459459459459, 0.9302325581395349]}, {"file": "od7qa0020_x1d.fits", "star": "RX J2214.1-4918", "mode": "E140H", "nominal": 2.3737593430933823e-14, "lam_med": 1414.9128159993377}, {"file": "od7qc0030_x1d.fits", "star": "RX J0623.2-3741", "mode": "E140H", "nominal": 2.0062793657841926e-14, "lam_med": 1415.041085817345}, {"file": "od7qc0040_x1d.fits", "star": "RX J0623.2-3741", "mode": "E140H", "nominal": 1.9640535967171904e-14, "lam_med": 1415.040655931895}, {"file": "od7qd1010_x1d.fits", "star": "MCT 0455-2812", "mode": "E140H", "nominal": 8.826270610222717e-15, "lam_med": 1414.790407591167}, {"file": "od7qd1020_x1d.fits", "star": "MCT 0455-2812", "mode": "E140H", "nominal": 8.112203510163792e-15, "lam_med": 1414.8451092140936}, {"file": "od7qd1030_x1d.fits", "star": "MCT 0455-2812", "mode": "E140H", "nominal": 8.12396154149766e-15, "lam_med": 1414.9729654233802}, {"file": "od7t05010_x1d.fits", "star": "V* WW PsA", "mode": "E140M", "nominal": 6.124892134227802e-17, "lam_med": 1378.7737383071762}, {"file": "od7t07010_x1d.fits", "star": "G 80-21", "mode": "E140M", "nominal": 2.87976981701615e-17, "lam_med": 1379.9199605793992}, {"file": "od8p01010_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.969632273020273e-14, "lam_med": 2458.9746122511087}, {"file": "od8p01020_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.983387711794956e-14, "lam_med": 2458.9589613042945}, {"file": "od8p01030_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.6381763033676406e-14, "lam_med": 2907.166477253949}, {"file": "od8p01040_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.6556638769450885e-14, "lam_med": 2907.1664820985825}, {"file": "od8p02010_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.2349042188626736e-13, "lam_med": 2459.3982861153336}, {"file": "od8p02020_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.1584921381159513e-13, "lam_med": 2459.377408728602}, {"file": "od8p02030_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.185219097608154e-13, "lam_med": 2907.805694088301}, {"file": "od8p02040_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 1.2672556531009864e-13, "lam_med": 2907.8178476703492}, {"file": "od9a10010_x1d.fits", "star": "LHA 120-S 35", "mode": "E140M", "nominal": 3.732595407842549e-15, "lam_med": 1380.5010670897336}, {"file": "od9a13010_x1d.fits", "star": "LHA 115-S 6", "mode": "E140M", "nominal": 4.032553689668851e-15, "lam_med": 1380.535926325501}, {"file": "od9m55010_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 3.1220496994072613e-15, "lam_med": 2632.8878080952563}, {"file": "od9m55020_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 2.813444008503651e-15, "lam_med": 2632.2102866506693, "rec": [0.0, 0.20833333333333334, 0.2916666666666667, 0.5, 0.7916666666666666, 0.9166666666666666]}, {"file": "od9m55030_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 2.8530797707119776e-15, "lam_med": 2631.9563823310077}, {"file": "od9m55040_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 2.8985068133918846e-15, "lam_med": 2631.882207706611}, {"file": "od9m55050_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 2.941462848643593e-15, "lam_med": 2631.7544746721887}, {"file": "od9m56010_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 3.3207118434367344e-15, "lam_med": 2632.927249111844}, {"file": "od9m56020_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 2.9464656269837958e-15, "lam_med": 2632.915188641131}, {"file": "od9m56030_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 2.9889522002743857e-15, "lam_med": 2632.9196215472143}, {"file": "od9m56040_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 2.9969827985412462e-15, "lam_med": 2632.922220747654}, {"file": "od9m56050_x1d.fits", "star": "CPD-64 484", "mode": "E230M", "nominal": 3.0103942870604463e-15, "lam_med": 2632.9208831164606}, {"file": "od9m65010_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 4.208660577306089e-15, "lam_med": 2632.7879908997265}, {"file": "od9m65030_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 3.69190901803449e-15, "lam_med": 2632.807844093446}, {"file": "od9m65040_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 3.716224237468808e-15, "lam_med": 2632.787376299407}, {"file": "od9m65050_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 3.750226956658453e-15, "lam_med": 2632.786477453741}, {"file": "od9m66010_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 4.1867160764842775e-15, "lam_med": 2632.885016362631}, {"file": "od9m66020_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 3.693192479619752e-15, "lam_med": 2632.8613712379993}, {"file": "od9m66030_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 3.726200719803198e-15, "lam_med": 2632.8605431298065}, {"file": "od9m66040_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 3.7602322277166085e-15, "lam_med": 2632.8396211256586}, {"file": "od9m66050_x1d.fits", "star": "CD-30 1812", "mode": "E230M", "nominal": 3.79992834043759e-15, "lam_med": 2632.8444028269696}, {"file": "od9m81010_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.486846612652583e-15, "lam_med": 2632.7603007816815}, {"file": "od9m81020_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.213168206106826e-15, "lam_med": 2632.793656221039}, {"file": "od9m81030_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.2722239387817705e-15, "lam_med": 2632.7924980905264}, {"file": "od9m81040_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.311292695072681e-15, "lam_med": 2632.7933769452748}, {"file": "od9m81050_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.3502520419631177e-15, "lam_med": 2632.7941356720635}, {"file": "od9m82010_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.445183071268144e-15, "lam_med": 2632.7275097251522}, {"file": "od9m82020_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.159813743869812e-15, "lam_med": 2632.729997922722}, {"file": "od9m82030_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.2226331157247295e-15, "lam_med": 2632.512581108237}, {"file": "od9m82040_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.2908763031631565e-15, "lam_med": 2632.515719428828}, {"file": "od9m82050_x1d.fits", "star": "HAT-P-41", "mode": "E230M", "nominal": 2.3352617207346047e-15, "lam_med": 2632.558489042944}, {"file": "od9m97010_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 3.300271656221959e-15, "lam_med": 2632.8649476099195}, {"file": "od9m97020_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 2.9246869956671345e-15, "lam_med": 2632.8924699461995}, {"file": "od9m97030_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 2.958980695053243e-15, "lam_med": 2632.893129459704}, {"file": "od9m97040_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 2.992831559270932e-15, "lam_med": 2632.8717119626226}, {"file": "od9m97050_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 3.036780739962314e-15, "lam_med": 2632.873981762372}, {"file": "od9m98010_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 3.3311602359029462e-15, "lam_med": 2632.822144655921}, {"file": "od9m98020_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 2.8787439926389137e-15, "lam_med": 2632.8082686090247}, {"file": "od9m98030_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 2.904303227394469e-15, "lam_med": 2632.8118080843005, "rec": [0.0, 0.16666666666666666, 0.21739130434782608, 0.5, 0.875, 0.9565217391304348]}, {"file": "od9m98040_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 2.9263593681902294e-15, "lam_med": 2632.7935211066033}, {"file": "od9m98050_x1d.fits", "star": "CD-38 3220", "mode": "E230M", "nominal": 2.972264034307566e-15, "lam_med": 2632.797650280171}, {"file": "od9s01010_x1d.fits", "star": "HD 15137", "mode": "E230H", "nominal": 3.691781653771247e-14, "lam_med": 2109.8139655575396}, {"file": "od9s02010_x1d.fits", "star": "HD 14633", "mode": "E230H", "nominal": 1.4597448788316633e-13, "lam_med": 2109.7544466201675}, {"file": "od9s02020_x1d.fits", "star": "HD 14633", "mode": "E230H", "nominal": 6.041028063867681e-13, "lam_med": 1807.5436432782087}, {"file": "od9s02030_x1d.fits", "star": "HD 14633", "mode": "E230H", "nominal": 3.1115089691061784e-13, "lam_med": 1807.5740699742198, "rec": [0.015625, 0.296875, 0.71875, 0.9375, 1.0, 1.0]}, {"file": "od9s02040_x1d.fits", "star": "HD 14633", "mode": "E140H", "nominal": 2.5374265400638786e-13, "lam_med": 1228.328153484098}, {"file": "od9s02050_x1d.fits", "star": "HD 14633", "mode": "E140H", "nominal": 2.301315895601287e-13, "lam_med": 1478.0564487472711}, {"file": "od9s03010_x1d.fits", "star": "HD 242926", "mode": "E230H", "nominal": 1.2879118035312319e-14, "lam_med": 1962.4248919452648}, {"file": "od9s03020_x1d.fits", "star": "HD 242926", "mode": "E230H", "nominal": 1.4046067529727733e-14, "lam_med": 1962.4274293218543}, {"file": "od9s03030_x1d.fits", "star": "HD 242926", "mode": "E230H", "nominal": 1.5745351102339752e-14, "lam_med": 1962.3982134684259}, {"file": "od9s03040_x1d.fits", "star": "HD 242926", "mode": "E140H", "nominal": 1.1731604188928347e-14, "lam_med": 1228.2918523554767, "rec": [0.02, 0.5957446808510638, 0.7608695652173914, 0.8958333333333334, 0.9375, 0.8958333333333334]}, {"file": "od9s03050_x1d.fits", "star": "HD 242926", "mode": "E140H", "nominal": 1.2708662760520378e-14, "lam_med": 1228.2475818422822}, {"file": "od9s04010_x1d.fits", "star": "HD 233622", "mode": "E140H", "nominal": 3.68040514274595e-14, "lam_med": 1228.0234236336628, "rec": [0.0, 0.5217391304347826, 0.8367346938775511, 0.9183673469387755, 0.86, 0.9183673469387755]}, {"file": "od9s04020_x1d.fits", "star": "HD 233622", "mode": "E140H", "nominal": 3.5606096267578875e-14, "lam_med": 1477.976485396727}, {"file": "od9s04030_x1d.fits", "star": "HD 233622", "mode": "E140H", "nominal": 4.111364571935006e-14, "lam_med": 1553.828489733028}, {"file": "od9s04040_x1d.fits", "star": "HD 233622", "mode": "E230H", "nominal": 2.999030420133601e-14, "lam_med": 1962.5913485548297}, {"file": "od9s04050_x1d.fits", "star": "HD 233622", "mode": "E230H", "nominal": 2.8021225860863557e-14, "lam_med": 1962.5566027784764}, {"file": "od9s05010_x1d.fits", "star": "PG 0122+214", "mode": "E140M", "nominal": 9.485568122300885e-15, "lam_med": 1379.3307263908473}, {"file": "od9s05020_x1d.fits", "star": "PG 0122+214", "mode": "E140M", "nominal": 1.028315410881344e-14, "lam_med": 1379.775539222062}, {"file": "od9s05030_x1d.fits", "star": "PG 0122+214", "mode": "E230H", "nominal": 1.0777204600189842e-14, "lam_med": 1962.3744072702314}, {"file": "od9s05040_x1d.fits", "star": "PG 0122+214", "mode": "E230H", "nominal": 1.027997052057048e-14, "lam_med": 1962.409262110284}, {"file": "od9s05050_x1d.fits", "star": "PG 0122+214", "mode": "E230H", "nominal": 1.078772690321552e-14, "lam_med": 1962.367214015864}, {"file": "od9s05060_x1d.fits", "star": "PG 0122+214", "mode": "E230H", "nominal": 1.0906217122205769e-14, "lam_med": 1962.4079375310585}, {"file": "od9s05070_x1d.fits", "star": "PG 0122+214", "mode": "E230H", "nominal": 1.0644062906446439e-14, "lam_med": 1962.374551209607}, {"file": "od9v01010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 1.0237134442639945e-13, "lam_med": 1380.394458790372, "rec": [0.010238907849829351, 0.3931034482758621, 0.7256944444444444, 0.8724137931034482, 0.906896551724138, 0.958041958041958]}, {"file": "od9v02010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 1.0778852813225436e-13, "lam_med": 1380.5946690251315}, {"file": "od9va1010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 9.451877286538054e-14, "lam_med": 1380.4291222627085}, {"file": "od9va2010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 1.0202860863704604e-13, "lam_med": 1380.3872449635235}, {"file": "od9vb1010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 1.062961424959897e-13, "lam_med": 1380.2956802799797}, {"file": "od9vb2010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 1.1015633653461454e-13, "lam_med": 1380.3286680132833}, {"file": "od9vc1010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 9.655683521618075e-14, "lam_med": 1380.3122253007452}, {"file": "od9vc2010_x1d.fits", "star": "V* V652 Her", "mode": "E140M", "nominal": 9.71066755198704e-14, "lam_med": 1380.254667720118}, {"file": "oda901010_x1d.fits", "star": "HD 270952", "mode": "E230M", "nominal": 2.861562452720856e-14, "lam_med": 1917.4870211874766}, {"file": "oda902010_x1d.fits", "star": "SK -67 101", "mode": "E230M", "nominal": 2.2251955280490455e-14, "lam_med": 1917.479278934276}, {"file": "oda903010_x1d.fits", "star": "HD 269810", "mode": "E230M", "nominal": 2.812315690010726e-14, "lam_med": 1917.4769192274196}, {"file": "oda904010_x1d.fits", "star": "HD 268685", "mode": "E230M", "nominal": 2.4356849574283307e-14, "lam_med": 1917.4966721647525}, {"file": "oda904020_x1d.fits", "star": "HD 268685", "mode": "E140M", "nominal": 1.6312511154364568e-14, "lam_med": 1379.4039510980433}, {"file": "oda905010_x1d.fits", "star": "HD 268732", "mode": "E230M", "nominal": 2.2926526687998577e-14, "lam_med": 1917.512252432664}, {"file": "oda905020_x1d.fits", "star": "HD 268732", "mode": "E140M", "nominal": 1.4730987862787537e-14, "lam_med": 1379.90067350805}, {"file": "oda906010_x1d.fits", "star": "HD 269357", "mode": "E230M", "nominal": 2.865710636344111e-14, "lam_med": 1917.4581227168421, "rec": [0.0, 0.4, 0.825, 1.0, 1.0, 0.9743589743589743]}, {"file": "oda906020_x1d.fits", "star": "HD 269357", "mode": "E140M", "nominal": 2.139978480866243e-14, "lam_med": 1380.020529501903}, {"file": "oda907010_x1d.fits", "star": "SK -67 191", "mode": "E230M", "nominal": 1.6580916148203544e-14, "lam_med": 1917.4752710797632}, {"file": "oda907020_x1d.fits", "star": "SK -67 191", "mode": "E230M", "nominal": 1.5082605044891823e-14, "lam_med": 1917.4680975009028}, {"file": "oda907030_x1d.fits", "star": "SK -67 191", "mode": "E140M", "nominal": 1.1033690845150966e-14, "lam_med": 1379.088212428822}, {"file": "oda907040_x1d.fits", "star": "SK -67 191", "mode": "E140M", "nominal": 1.0696628233731106e-14, "lam_med": 1379.2675051515223}, {"file": "oda908010_x1d.fits", "star": "HD 268605", "mode": "E230M", "nominal": 3.093319724430488e-14, "lam_med": 1917.4727367228038}, {"file": "oda908020_x1d.fits", "star": "HD 268605", "mode": "E140M", "nominal": 2.108633365746316e-14, "lam_med": 1379.6495095004302}, {"file": "oda909010_x1d.fits", "star": "HD 269676", "mode": "E230M", "nominal": 2.384422511730244e-14, "lam_med": 1917.4562339367333}, {"file": "oda910010_x1d.fits", "star": "HD 269687", "mode": "E140M", "nominal": 1.6023892978503187e-14, "lam_med": 1379.173607979901}, {"file": "oda910020_x1d.fits", "star": "HD 269687", "mode": "E230M", "nominal": 2.167164505715569e-14, "lam_med": 1917.4751831368922}, {"file": "oda912010_x1d.fits", "star": "PGMW 3120", "mode": "E230M", "nominal": 1.3412566544531701e-14, "lam_med": 1917.485595695176}, {"file": "oda912020_x1d.fits", "star": "PGMW 3120", "mode": "E230M", "nominal": 1.63577041864831e-14, "lam_med": 1917.497893789749}, {"file": "oda913010_x1d.fits", "star": "SK -67 105", "mode": "E230M", "nominal": 2.2816594599430002e-14, "lam_med": 1917.3865431144823}, {"file": "oda913020_x1d.fits", "star": "SK -67 105", "mode": "E230M", "nominal": 2.0800111190441482e-14, "lam_med": 1917.379404246016}, {"file": "oda914010_x1d.fits", "star": "BI 173", "mode": "E230M", "nominal": 1.7711037973381117e-14, "lam_med": 1917.4570720282559}, {"file": "oda914020_x1d.fits", "star": "BI 173", "mode": "E230M", "nominal": 1.828604209605153e-14, "lam_med": 1917.4675405440507}, {"file": "oda914040_x1d.fits", "star": "BI 173", "mode": "E140M", "nominal": 1.158386732688827e-14, "lam_med": 1378.5841725808746}, {"file": "oda914050_x1d.fits", "star": "BI 173", "mode": "E140M", "nominal": 1.2290928946888419e-14, "lam_med": 1379.0467332421995}, {"file": "oda916010_x1d.fits", "star": "HD 38282", "mode": "E230M", "nominal": 3.268642543921464e-14, "lam_med": 1917.4649455716008}, {"file": "oda917010_x1d.fits", "star": "HD 270145", "mode": "E230M", "nominal": 2.2555189157833468e-14, "lam_med": 1917.4847175907694}, {"file": "oda917020_x1d.fits", "star": "HD 270145", "mode": "E230M", "nominal": 2.0470632446638327e-14, "lam_med": 1917.4802689143805, "rec": [0.0, 0.325, 0.725, 0.9743589743589743, 1.0, 1.0]}, {"file": "oda918010_x1d.fits", "star": "BI 184", "mode": "E230M", "nominal": 1.321749996780152e-14, "lam_med": 1917.5090960728921}, {"file": "oda918020_x1d.fits", "star": "BI 184", "mode": "E230M", "nominal": 1.2070742730709097e-14, "lam_med": 1917.474943649123}, {"file": "oda918030_x1d.fits", "star": "BI 184", "mode": "E230M", "nominal": 1.3752410299834217e-14, "lam_med": 1917.4741148758983}, {"file": "oda919010_x1d.fits", "star": "SK -71 50", "mode": "E230M", "nominal": 1.453113807835224e-14, "lam_med": 1917.5182719659867}, {"file": "oda919020_x1d.fits", "star": "SK -71 50", "mode": "E230M", "nominal": 1.331274840564201e-14, "lam_med": 1917.5112270394864}, {"file": "oda919030_x1d.fits", "star": "SK -71 50", "mode": "E230M", "nominal": 1.7035871038912623e-14, "lam_med": 1917.5121790530284, "rec": [0.0, 0.4, 0.8, 1.0, 1.0, 0.975]}, {"file": "oda919060_x1d.fits", "star": "SK -71 50", "mode": "E140M", "nominal": 8.112582751340901e-15, "lam_med": 1379.9183716143912}, {"file": "oda919070_x1d.fits", "star": "SK -71 50", "mode": "E140M", "nominal": 7.720409508690057e-15, "lam_med": 1380.3203974317207}, {"file": "oda922010_x1d.fits", "star": "HD 269050", "mode": "E230M", "nominal": 2.4125401033868867e-14, "lam_med": 1917.3513500073423}, {"file": "oda922020_x1d.fits", "star": "HD 269050", "mode": "E230M", "nominal": 2.1555887683062617e-14, "lam_med": 1917.3656007488335}, {"file": "oda922030_x1d.fits", "star": "HD 269050", "mode": "E140M", "nominal": 1.4173804314364134e-14, "lam_med": 1379.2577376805593}, {"file": "oda923010_x1d.fits", "star": "HD 269858", "mode": "E230M", "nominal": 2.3950217774653082e-14, "lam_med": 1917.4580264858746}, {"file": "oda923020_x1d.fits", "star": "HD 269858", "mode": "E140M", "nominal": 1.239463232526463e-14, "lam_med": 1379.2456670540155}, {"file": "oda926010_x1d.fits", "star": "BI 237", "mode": "E230M", "nominal": 1.2587548577189053e-14, "lam_med": 1917.4817846739008}, {"file": "oda926020_x1d.fits", "star": "BI 237", "mode": "E230M", "nominal": 1.1585590231600214e-14, "lam_med": 1917.4437133283031}, {"file": "oda926030_x1d.fits", "star": "BI 237", "mode": "E230M", "nominal": 1.334989101438405e-14, "lam_med": 1917.4561360716975}, {"file": "oda928010_x1d.fits", "star": "W61 27-56", "mode": "E230M", "nominal": 1.2271723526080994e-14, "lam_med": 1917.4984362532696}, {"file": "oda928020_x1d.fits", "star": "W61 27-56", "mode": "E230M", "nominal": 1.1265515402201836e-14, "lam_med": 1917.500976613806}, {"file": "oda928030_x1d.fits", "star": "W61 27-56", "mode": "E230M", "nominal": 1.151320081841764e-14, "lam_med": 1917.4968858504983}, {"file": "oda928040_x1d.fits", "star": "W61 27-56", "mode": "E230M", "nominal": 1.1723093592177874e-14, "lam_med": 1917.497850823316}, {"file": "oda928050_x1d.fits", "star": "W61 27-56", "mode": "E230M", "nominal": 1.1791449101751975e-14, "lam_med": 1917.4986785504013}, {"file": "oda929010_x1d.fits", "star": "BI 253", "mode": "E230M", "nominal": 1.2697068366759599e-14, "lam_med": 1917.4709523311979}, {"file": "oda929020_x1d.fits", "star": "BI 253", "mode": "E230M", "nominal": 1.1459209623770281e-14, "lam_med": 1917.4697159860948}, {"file": "oda929030_x1d.fits", "star": "BI 253", "mode": "E230M", "nominal": 1.1671382372234663e-14, "lam_med": 1917.4670182814555}, {"file": "oda929040_x1d.fits", "star": "BI 253", "mode": "E230M", "nominal": 1.313878603749523e-14, "lam_med": 1917.4662444491978}, {"file": "oda931010_x1d.fits", "star": "HD 269896", "mode": "E140M", "nominal": 1.409434545474013e-14, "lam_med": 1379.6773566542317, "rec": [0.0, 0.41025641025641024, 0.5813953488372093, 0.7948717948717948, 0.85, 0.9302325581395349]}, {"file": "oda931020_x1d.fits", "star": "HD 269896", "mode": "E140M", "nominal": 1.2717765643484837e-14, "lam_med": 1380.0456307528473}, {"file": "oda931030_x1d.fits", "star": "HD 269896", "mode": "E230M", "nominal": 2.281602820405947e-14, "lam_med": 1917.4276565384398}, {"file": "oda932010_x1d.fits", "star": "SK -68 140", "mode": "E230M", "nominal": 1.2434950765395162e-14, "lam_med": 1917.436561571897, "rec": [0.0, 0.475, 0.9, 1.0, 0.9487179487179487, 1.0]}, {"file": "oda932030_x1d.fits", "star": "SK -68 140", "mode": "E230M", "nominal": 1.1541534805987418e-14, "lam_med": 1917.4344826018746}, {"file": "oda932040_x1d.fits", "star": "SK -68 140", "mode": "E230M", "nominal": 5.3465816487250396e-14, "lam_med": 1917.4657972916466}, {"file": "oda934010_x1d.fits", "star": "SK -68 26", "mode": "E230M", "nominal": 1.4569437946352298e-14, "lam_med": 1917.4553103752569, "rec": [0.0, 0.325, 0.7, 0.9230769230769231, 0.8717948717948718, 1.0]}, {"file": "oda934020_x1d.fits", "star": "SK -68 26", "mode": "E230M", "nominal": 1.3144101828580097e-14, "lam_med": 1917.4607910934674, "rec": [0.0, 0.25, 0.5128205128205128, 1.0, 0.975, 1.0]}, {"file": "oda934030_x1d.fits", "star": "SK -68 26", "mode": "E230M", "nominal": 1.3328015962108798e-14, "lam_med": 1917.443295424082}, {"file": "oda962010_x1d.fits", "star": "SK -68 140", "mode": "E230M", "nominal": 1.2627295699519607e-14, "lam_med": 1917.5041296014726}, {"file": "oda962020_x1d.fits", "star": "SK -68 140", "mode": "E230M", "nominal": 1.1122888730655882e-14, "lam_med": 1917.494818598042}, {"file": "oda963010_x1d.fits", "star": "HD 270754", "mode": "E230M", "nominal": 1.8183791399224607e-14, "lam_med": 1917.4582008936006}, {"file": "oda963020_x1d.fits", "star": "HD 270754", "mode": "E230M", "nominal": 1.6420564787608144e-14, "lam_med": 1917.4711513837588}, {"file": "oda964010_x1d.fits", "star": "HD 270754", "mode": "E140M", "nominal": 9.943778759482384e-15, "lam_med": 1379.6021197519724}, {"file": "oda964020_x1d.fits", "star": "HD 270754", "mode": "E140M", "nominal": 9.037819578805046e-15, "lam_med": 1379.937077744885}, {"file": "oda965010_x1d.fits", "star": "SK -66 19", "mode": "E230M", "nominal": 1.0604446406635685e-14, "lam_med": 1917.480144025683}, {"file": "oda965020_x1d.fits", "star": "SK -66 19", "mode": "E230M", "nominal": 9.924069066993597e-15, "lam_med": 1917.461908423281}, {"file": "oda966010_x1d.fits", "star": "SK -66 19", "mode": "E230M", "nominal": 1.1462095751285134e-14, "lam_med": 1917.4932674689217}, {"file": "oda966020_x1d.fits", "star": "SK -66 19", "mode": "E230M", "nominal": 1.058071638317247e-14, "lam_med": 1917.490478004528}, {"file": "oda967010_x1d.fits", "star": "SK -69 279", "mode": "E230M", "nominal": 1.4073429927780237e-14, "lam_med": 1917.4805319618395}, {"file": "oda967020_x1d.fits", "star": "SK -69 279", "mode": "E230M", "nominal": 1.2526166708164165e-14, "lam_med": 1917.47270656137}, {"file": "oda968010_x1d.fits", "star": "SK -69 279", "mode": "E230M", "nominal": 1.2838522445599751e-14, "lam_med": 1917.515268436525}, {"file": "oda968020_x1d.fits", "star": "SK -69 279", "mode": "E230M", "nominal": 1.19985448595535e-14, "lam_med": 1917.5081107710566}, {"file": "oda969010_x1d.fits", "star": "SK -66 172", "mode": "E230M", "nominal": 1.506853401240808e-14, "lam_med": 1917.4613063346033}, {"file": "oda969020_x1d.fits", "star": "SK -66 172", "mode": "E230M", "nominal": 1.3618191104509016e-14, "lam_med": 1917.4688048069888}, {"file": "oda970010_x1d.fits", "star": "SK -66 172", "mode": "E140M", "nominal": 1.0996782365302364e-14, "lam_med": 1379.1826892111796}, {"file": "oda970020_x1d.fits", "star": "SK -66 172", "mode": "E140M", "nominal": 1.0040905046540941e-14, "lam_med": 1379.1472728459692}, {"file": "oda971010_x1d.fits", "star": "SK -70 79", "mode": "E230M", "nominal": 1.5207161142249755e-14, "lam_med": 1917.5313088185803}, {"file": "oda971020_x1d.fits", "star": "SK -70 79", "mode": "E230M", "nominal": 1.3828317139380698e-14, "lam_med": 1917.5264320631732}, {"file": "oda971030_x1d.fits", "star": "SK -70 79", "mode": "E140M", "nominal": 8.893299176494707e-15, "lam_med": 1380.0403076609277}, {"file": "oda972010_x1d.fits", "star": "SK -70 79", "mode": "E140M", "nominal": 9.511514545101821e-15, "lam_med": 1379.159491137034}, {"file": "oda972020_x1d.fits", "star": "SK -70 79", "mode": "E140M", "nominal": 8.596282835270501e-15, "lam_med": 1379.8236842778026}, {"file": "oda973010_x1d.fits", "star": "BI 42", "mode": "E140M", "nominal": 8.544277024738223e-15, "lam_med": 1379.7683171114472}, {"file": "oda973020_x1d.fits", "star": "BI 42", "mode": "E140M", "nominal": 7.685981181004603e-15, "lam_med": 1379.8974653086061}, {"file": "oda973030_x1d.fits", "star": "BI 42", "mode": "E140M", "nominal": 7.77798983041379e-15, "lam_med": 1379.997015233126}, {"file": "oda974010_x1d.fits", "star": "BI 42", "mode": "E230M", "nominal": 1.4082761815099561e-14, "lam_med": 1917.4937646406042}, {"file": "oda974020_x1d.fits", "star": "BI 42", "mode": "E230M", "nominal": 1.2818118380129418e-14, "lam_med": 1917.4761897728122}, {"file": "oda975010_x1d.fits", "star": "SK -68 155", "mode": "E230M", "nominal": 1.3652503847621434e-14, "lam_med": 1917.473105147914}, {"file": "oda975020_x1d.fits", "star": "SK -68 155", "mode": "E230M", "nominal": 1.2425641858292488e-14, "lam_med": 1917.4655223109664}, {"file": "oda976010_x1d.fits", "star": "SK -68 155", "mode": "E230M", "nominal": 1.3799851589160524e-14, "lam_med": 1917.4794676628921}, {"file": "oda976020_x1d.fits", "star": "SK -68 155", "mode": "E230M", "nominal": 1.2583170132777602e-14, "lam_med": 1917.4656519172033}, {"file": "odaa01010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.773382495484539e-13, "lam_med": 2793.720188141601}, {"file": "odaa01020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.5890953618414675e-13, "lam_med": 2953.096044206105}, {"file": "odaa03010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.2250532083474485e-13, "lam_med": 2793.6279486341223}, {"file": "odaa03020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.986078005666396e-13, "lam_med": 2953.000250252928}, {"file": "odaa62010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.892737552015127e-13, "lam_med": 2793.5774966169092}, {"file": "odaa62020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.2854534706675183e-13, "lam_med": 2952.912085045631}, {"file": "odam01010_x1d.fits", "star": "BD+56 864", "mode": "E140M", "nominal": 1.4292204110424947e-14, "lam_med": 1379.8087694725978}, {"file": "odam02010_x1d.fits", "star": "BD+56 864", "mode": "E140M", "nominal": 2.270232397271417e-14, "lam_med": 1379.8805764261656}, {"file": "odam02020_x1d.fits", "star": "BD+56 864", "mode": "E230M", "nominal": 3.3235205913167995e-14, "lam_med": 1917.3232019525035}, {"file": "odam03010_x1d.fits", "star": "BD+56 864", "mode": "E140M", "nominal": 1.634031686470663e-14, "lam_med": 1379.7942356528383}, {"file": "odam04010_x1d.fits", "star": "BD+56 864", "mode": "E140M", "nominal": 2.60099677186489e-14, "lam_med": 1380.502839369343}, {"file": "odam04020_x1d.fits", "star": "BD+56 864", "mode": "E230M", "nominal": 3.742888391842821e-14, "lam_med": 1917.3540362780548}, {"file": "odam05010_x1d.fits", "star": "BD+56 864", "mode": "E140M", "nominal": 1.3930489366756037e-14, "lam_med": 1380.4517452565701}, {"file": "odam06010_x1d.fits", "star": "BD+56 864", "mode": "E140M", "nominal": 2.2911169437484658e-14, "lam_med": 1380.034711810505}, {"file": "odam06020_x1d.fits", "star": "BD+56 864", "mode": "E230M", "nominal": 3.477231533781685e-14, "lam_med": 1917.2777029482218}, {"file": "odam07010_x1d.fits", "star": "Hilt 412", "mode": "E140M", "nominal": 1.3489069500083835e-14, "lam_med": 1379.9088866875588}, {"file": "odam07020_x1d.fits", "star": "Hilt 412", "mode": "E140M", "nominal": 2.5340443329932723e-14, "lam_med": 1380.102682199848}, {"file": "odam07030_x1d.fits", "star": "Hilt 412", "mode": "E230M", "nominal": 2.3937489929711854e-14, "lam_med": 1917.3188029305932}, {"file": "odao14010_x1d.fits", "star": "LAWD 52", "mode": "E140M", "nominal": 1.425213437442215e-14, "lam_med": 1379.701940129343}, {"file": "odao14020_x1d.fits", "star": "LAWD 52", "mode": "E140M", "nominal": 1.289350381528998e-14, "lam_med": 1379.9270350410409}, {"file": "odao22010_x1d.fits", "star": "HD 340611", "mode": "E140M", "nominal": 2.5980469797312405e-14, "lam_med": 1379.1337746460842}, {"file": "odao24010_x1d.fits", "star": "EGGR 150", "mode": "E140M", "nominal": 1.2285939295165477e-14, "lam_med": 1380.0748811826693}, {"file": "odao24020_x1d.fits", "star": "EGGR 150", "mode": "E140M", "nominal": 1.0960475466275741e-14, "lam_med": 1379.5640840627118}, {"file": "odao28010_x1d.fits", "star": "GD 683", "mode": "E140M", "nominal": 9.451884076033133e-15, "lam_med": 1380.0513120160686}, {"file": "odao28020_x1d.fits", "star": "GD 683", "mode": "E140M", "nominal": 8.386616221137966e-15, "lam_med": 1379.1990291106554}, {"file": "odbue1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3417328811198945e-14, "lam_med": 2257.6720908486323}, {"file": "odbue1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5843145846755886e-13, "lam_med": 1380.137482528693}, {"file": "odbue1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.602837680768176e-13, "lam_med": 1917.3414931094237}, {"file": "odbue1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.160214570005215e-14, "lam_med": 1414.5556411355983}, {"file": "odbue1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.6300269635810056e-14, "lam_med": 2632.6782745286628}, {"file": "odbue2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3635391715980792e-14, "lam_med": 2257.7866151912194}, {"file": "odbue2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.555472522023261e-13, "lam_med": 1380.2267793548442}, {"file": "odbue2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6580989075724955e-13, "lam_med": 1917.344883082354}, {"file": "odbue2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.141444736675534e-14, "lam_med": 1414.6520918241376}, {"file": "odbue2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.5929539632934554e-14, "lam_med": 2632.7118942898587}, {"file": "odbue3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3955056742018966e-14, "lam_med": 2257.873506910442}, {"file": "odbue3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.601386947733441e-13, "lam_med": 1380.0289494505312}, {"file": "odbue3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7086069714219995e-13, "lam_med": 1917.5369377067077}, {"file": "odbue3040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.43599954074559e-14, "lam_med": 1415.1680849972513}, {"file": "odbue3050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.6450312464063706e-14, "lam_med": 2633.0930037772796}, {"file": "odbue4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.373001906039524e-14, "lam_med": 2257.907568626674}, {"file": "odbue4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.605917810224486e-13, "lam_med": 1380.4706602780864}, {"file": "odbue4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.647190010339061e-13, "lam_med": 1917.5094569438143}, {"file": "odbue4040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.297065173913115e-14, "lam_med": 1415.046641922149}, {"file": "odbue4050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.622709011844914e-14, "lam_med": 2632.819959952267}, {"file": "odbue5010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.370884135189716e-14, "lam_med": 2258.1923218827774}, {"file": "odbue5020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5675690607662967e-13, "lam_med": 1379.8897176248129}, {"file": "odbue5030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6728363199793318e-13, "lam_med": 1917.6337023771698}, {"file": "odbue5040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.274969280731148e-14, "lam_med": 1414.9225684880475}, {"file": "odbue5050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.610378954365806e-14, "lam_med": 2633.086679130278}, {"file": "oddz01010_x1d.fits", "star": "HD 93129A", "mode": "E140M", "nominal": 1.9173534713957033e-13, "lam_med": 1379.750082048841}, {"file": "oddz02010_x1d.fits", "star": "HD 93129A", "mode": "E140M", "nominal": 1.8558976223604548e-13, "lam_med": 1380.0563985472463}, {"file": "oddz03010_x1d.fits", "star": "HD 93129A", "mode": "E140M", "nominal": 1.887663905024972e-13, "lam_med": 1380.310964252028}, {"file": "oddz04010_x1d.fits", "star": "HD 93129A", "mode": "E140M", "nominal": 1.7450253330574093e-13, "lam_med": 1380.0862137349247}, {"file": "oddz06010_x1d.fits", "star": "HD 93129A", "mode": "E140M", "nominal": 1.8610282294693396e-13, "lam_med": 1380.071131004533}, {"file": "oddz07010_x1d.fits", "star": "HD 93129A", "mode": "E140M", "nominal": 1.9362467310233242e-13, "lam_med": 1380.0159038731067}, {"file": "oden01010_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.167193348598066e-14, "lam_med": 2632.7399394305785}, {"file": "oden01030_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.107046781232808e-14, "lam_med": 2632.6970762321257, "rec": [0.010471204188481676, 0.16842105263157894, 0.328125, 0.5602094240837696, 0.7872340425531915, 0.8697916666666666]}, {"file": "oden01040_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.119380624845388e-14, "lam_med": 2632.7474523030696, "rec": [0.005235602094240838, 0.17277486910994763, 0.3882978723404255, 0.5729166666666666, 0.7486910994764397, 0.8736842105263158]}, {"file": "oden01050_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.125945762208062e-14, "lam_med": 2632.753699575395}, {"file": "oden02010_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.1581655389000442e-14, "lam_med": 2632.711332064271}, {"file": "oden02020_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.097826950133743e-14, "lam_med": 2632.6897536255733}, {"file": "oden02030_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.1113956886090822e-14, "lam_med": 2632.687828928384}, {"file": "oden02040_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.116757804209154e-14, "lam_med": 2632.682140666444}, {"file": "oden02050_x1d.fits", "star": "* rho01 Cnc", "mode": "E230M", "nominal": 2.119843919498158e-14, "lam_med": 2632.688570480121}, {"file": "odfv01010_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.913493282200757e-15, "lam_med": 2633.139234108697}, {"file": "odfv01020_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.475839557030091e-15, "lam_med": 2633.135781956744}, {"file": "odfv01030_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.637963681699069e-15, "lam_med": 2633.1358517098743}, {"file": "odfv01040_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.649205905088768e-15, "lam_med": 2633.138580455334}, {"file": "odfv01050_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.818627192998794e-15, "lam_med": 2633.141689551091, "rec": [0.009345794392523364, 0.2803738317757009, 0.4537037037037037, 0.6837209302325581, 0.9014084507042254, 0.9577464788732394]}, {"file": "odfv02010_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 1.0143460816600934e-14, "lam_med": 2631.8029995558713}, {"file": "odfv02020_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.598919706117492e-15, "lam_med": 2631.749243170099}, {"file": "odfv02030_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.738973502334894e-15, "lam_med": 2631.622951066629}, {"file": "odfv02040_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.757917153152817e-15, "lam_med": 2631.5823332158625}, {"file": "odfv02050_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.924905233313985e-15, "lam_med": 2631.5239270432294}, {"file": "odfv03010_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 1.0113102972735033e-14, "lam_med": 2632.927344937342}, {"file": "odfv03020_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.493146031148079e-15, "lam_med": 2632.925810206132}, {"file": "odfv03030_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.678170635114623e-15, "lam_med": 2632.918842023743}, {"file": "odfv03040_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.739454295465375e-15, "lam_med": 2632.913622613669}, {"file": "odfv03050_x1d.fits", "star": "HD 189733", "mode": "E230M", "nominal": 9.971687168024845e-15, "lam_med": 2632.9138793772177}, {"file": "odg710010_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 4.479610168555412e-15, "lam_med": 1289.2972714020725}, {"file": "odg710020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.3535301068988703e-14, "lam_med": 1477.2887524006446}, {"file": "odg710030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 4.324215754792347e-12, "lam_med": 2743.94418636665}, {"file": "odg751010_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 4.461777204629499e-15, "lam_med": 1289.0431723164731, "rec": [0.06976744186046512, 0.35555555555555557, 0.5714285714285714, 0.6744186046511628, 0.6818181818181818, 0.6976744186046512]}, {"file": "odg751020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.3640421796848676e-14, "lam_med": 1477.9677854964339}, {"file": "odg751030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 4.502059888011861e-12, "lam_med": 2744.3916247234674}, {"file": "odgd01010_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 2.100540413445952e-13, "lam_med": 2459.3812205563413}, {"file": "odgd01020_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 2.1987686771470468e-13, "lam_med": 2459.370795561646}, {"file": "odgd01030_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 2.4628902549115616e-13, "lam_med": 2907.87875779103}, {"file": "odgd01040_x1d.fits", "star": "* zet Aur", "mode": "E230H", "nominal": 2.597664379668946e-13, "lam_med": 2907.8666259322845}, {"file": "odgn01010_x1d.fits", "star": "HD 217943", "mode": "E140H", "nominal": 2.7560121166787953e-13, "lam_med": 1330.5755699982174, "rec": [0.023255813953488372, 0.3953488372093023, 0.7093023255813954, 0.9176470588235294, 0.8470588235294118, 0.9047619047619048]}, {"file": "odgn02010_x1d.fits", "star": "HD 147196", "mode": "E140H", "nominal": 3.6448378403703065e-14, "lam_med": 1330.5358546898597}, {"file": "odgn03010_x1d.fits", "star": "HD 4768", "mode": "E140H", "nominal": 9.208630363815528e-15, "lam_med": 1330.7759353583162}, {"file": "odgn04010_x1d.fits", "star": "HD 94414", "mode": "E140H", "nominal": 1.0637679481756384e-14, "lam_med": 1330.6068651014693}, {"file": "odgn04020_x1d.fits", "star": "HD 94414", "mode": "E140H", "nominal": 9.413953468963195e-15, "lam_med": 1330.6186569981307}, {"file": "odgn05010_x1d.fits", "star": "HD 220058", "mode": "E140H", "nominal": 2.6299565480456733e-14, "lam_med": 1330.7539044336615}, {"file": "odgn06010_x1d.fits", "star": "HD 236101", "mode": "E140H", "nominal": 9.579053524103568e-15, "lam_med": 1330.590699684015, "rec": [0.024096385542168676, 0.6071428571428571, 0.8235294117647058, 0.9135802469135802, 0.8823529411764706, 0.9069767441860465]}, {"file": "odgn07010_x1d.fits", "star": "HD 334041", "mode": "E140H", "nominal": 6.4543479697205666e-15, "lam_med": 1330.4529381950001}, {"file": "odgn07020_x1d.fits", "star": "HD 334041", "mode": "E140H", "nominal": 5.878854958866213e-15, "lam_med": 1330.4426009324532}, {"file": "odgn07030_x1d.fits", "star": "HD 334041", "mode": "E140H", "nominal": 5.8736721417887534e-15, "lam_med": 1330.4443574469576}, {"file": "odgx11010_x1d.fits", "star": "V* T Ori", "mode": "E230M", "nominal": 2.7706718979931826e-15, "lam_med": 2632.78152022371}, {"file": "odgx14010_x1d.fits", "star": "V* HK Ori", "mode": "E230M", "nominal": 4.138552595816079e-15, "lam_med": 2632.7441024629275}, {"file": "odhg01010_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.329771224927199e-15, "lam_med": 2632.8260484674947}, {"file": "odhg01020_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.811590345143929e-15, "lam_med": 2632.87027421986}, {"file": "odhg01030_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.930625987215592e-15, "lam_med": 2632.8690659000417}, {"file": "odhg01040_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 7.0254248121814146e-15, "lam_med": 2632.86875851977}, {"file": "odhg01050_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 7.110704436858859e-15, "lam_med": 2632.8695504155585}, {"file": "odhg02010_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.286036474539376e-15, "lam_med": 2632.7270796361922}, {"file": "odhg02020_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.6826846340542346e-15, "lam_med": 2632.685011165714, "rec": [0.023952095808383235, 0.3652694610778443, 0.5714285714285714, 0.8170731707317073, 0.9397590361445783, 0.9640718562874252]}, {"file": "odhg02030_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.80113441382252e-15, "lam_med": 2632.7760340946916}, {"file": "odhg02040_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.8833531291546026e-15, "lam_med": 2632.776809944194}, {"file": "odhg02050_x1d.fits", "star": "CD-34 14724A", "mode": "E230M", "nominal": 6.974129729056997e-15, "lam_med": 2632.7815349063444, "rec": [0.005988023952095809, 0.2619047619047619, 0.6227544910179641, 0.8502994011976048, 0.9281437125748503, 0.9819277108433735]}, {"file": "odhg11010_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.6228457629711716e-14, "lam_med": 2632.746948740063, "rec": [0.0, 0.13559322033898305, 0.2916666666666667, 0.7083333333333334, 0.8991596638655462, 0.9663865546218487]}, {"file": "odhg11020_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.7444179928656252e-14, "lam_med": 2632.771382325369}, {"file": "odhg11030_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.7440317592370498e-14, "lam_med": 2632.7531491768946}, {"file": "odhg11040_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.7725833132370233e-14, "lam_med": 2632.75440477168}, {"file": "odhg11050_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.7798395600001515e-14, "lam_med": 2632.7360432140085}, {"file": "odhg12010_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.704286575676806e-14, "lam_med": 2632.8650179355427}, {"file": "odhg12020_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.8291851326795705e-14, "lam_med": 2632.837482623318}, {"file": "odhg12030_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.8487853423967805e-14, "lam_med": 2632.8611659236085}, {"file": "odhg12040_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.874424530720704e-14, "lam_med": 2632.8450975770015, "rec": [0.005988023952095809, 0.15476190476190477, 0.3072289156626506, 0.625, 0.9281437125748503, 0.9820359281437125]}, {"file": "odhg12050_x1d.fits", "star": "HD 15082", "mode": "E230M", "nominal": 2.878889399173148e-14, "lam_med": 2632.847096949142}, {"file": "odhu01010_x1d.fits", "star": "HD 326332", "mode": "E140M", "nominal": 2.2065090922698095e-14, "lam_med": 1379.9750606217312}, {"file": "odhu02010_x1d.fits", "star": "HD 326328", "mode": "E140M", "nominal": 1.7875414344619375e-14, "lam_med": 1380.7525967854806}, {"file": "odhu03010_x1d.fits", "star": "V* V1032 Sco", "mode": "E140M", "nominal": 2.1089466629070767e-14, "lam_med": 1379.5693883453246}, {"file": "odhu04010_x1d.fits", "star": "CPD-41 7712", "mode": "E140M", "nominal": 3.38532374865939e-14, "lam_med": 1379.8077384747792}, {"file": "odhu05010_x1d.fits", "star": "V* V946 Sco", "mode": "E140M", "nominal": 1.6286844845987624e-14, "lam_med": 1379.5961481016247}, {"file": "odhu06010_x1d.fits", "star": "CD-41 11031", "mode": "E140M", "nominal": 1.8064239744502412e-14, "lam_med": 1380.1292051012315}, {"file": "odhu07010_x1d.fits", "star": "CD-41 7736", "mode": "E140M", "nominal": 1.4611746546530375e-14, "lam_med": 1379.2733607554503}, {"file": "odhu08010_x1d.fits", "star": "V* V1208 Sco", "mode": "E140M", "nominal": 2.2523448095486967e-14, "lam_med": 1379.815688492623}, {"file": "odhu09010_x1d.fits", "star": "NGC 6231 209", "mode": "E140M", "nominal": 1.1319154361160203e-14, "lam_med": 1379.4021598744216}, {"file": "odhxa0010_x1d.fits", "star": "HD 72660", "mode": "E230H", "nominal": 7.147196214410839e-14, "lam_med": 3015.855463209614}, {"file": "odhxa0020_x1d.fits", "star": "HD 72660", "mode": "E230H", "nominal": 6.936220886487503e-14, "lam_med": 2007.6093775149377}, {"file": "odhxb0010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 2.1463783882789593e-14, "lam_med": 1754.3467096616555}, {"file": "odhxb0020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.7922736924999384e-14, "lam_med": 1754.3784112086219}, {"file": "odhxb0030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.8620806579150558e-14, "lam_med": 1754.3758301388793}, {"file": "odhxb1010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 2.319774457817927e-14, "lam_med": 1754.3496967465258, "rec": [0.0, 0.16176470588235295, 0.35294117647058826, 0.6911764705882353, 0.9411764705882353, 1.0]}, {"file": "odhxb1020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.9421289696491546e-14, "lam_med": 1754.37706812818}, {"file": "odhxb1030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.9993633879414224e-14, "lam_med": 1754.3654430651218}, {"file": "odhxb2010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 2.1511533765974286e-14, "lam_med": 1754.5201577029684}, {"file": "odhxb2020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.7980785267838832e-14, "lam_med": 1754.5324069187513}, {"file": "odhxb2030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.8575621581115163e-14, "lam_med": 1754.5207609647227}, {"file": "odhxb3010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 2.1302648609362398e-14, "lam_med": 1754.395817742107}, {"file": "odhxb3020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.7510395414587374e-14, "lam_med": 1754.4113938133064}, {"file": "odhxb3030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.8137141865084018e-14, "lam_med": 1754.394925958389}, {"file": "odhxb4010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 2.139585261390162e-14, "lam_med": 1754.5182263473125}, {"file": "odhxb4020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.7569445436770946e-14, "lam_med": 1754.510136494846}, {"file": "odhxb4030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.8183605154996702e-14, "lam_med": 1754.4998939728496}, {"file": "odhxb5010_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 2.3177507762949967e-14, "lam_med": 1754.4861556653102}, {"file": "odhxb5020_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.9130756930797296e-14, "lam_med": 1754.5068316805775}, {"file": "odhxb5030_x1d.fits", "star": "HD 84937", "mode": "E230H", "nominal": 1.973851788615305e-14, "lam_med": 1754.4780124719953}, {"file": "odhxc0010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.995737017885981e-14, "lam_med": 1754.7550893507844}, {"file": "odhxc0020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.3878370763346895e-14, "lam_med": 1754.7624241825338}, {"file": "odhxc0030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.4258265436120286e-14, "lam_med": 1754.7448292604931}, {"file": "odhxc1010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 3.234570390821242e-14, "lam_med": 1754.701708810795}, {"file": "odhxc1020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.5925198884154807e-14, "lam_med": 1754.727157236358}, {"file": "odhxc1030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.5923435830617388e-14, "lam_med": 1754.7267333738098}, {"file": "odhxc2010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 3.044013000003696e-14, "lam_med": 1754.743433928336}, {"file": "odhxc2020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.4749599464558368e-14, "lam_med": 1754.7505795581847}, {"file": "odhxc2030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.523707695495471e-14, "lam_med": 1754.7495148704222}, {"file": "odhxc3010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 3.0138946619085024e-14, "lam_med": 1754.7248472784074}, {"file": "odhxc3020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.382566235663285e-14, "lam_med": 1754.7152956482366}, {"file": "odhxc3030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.4395284395551717e-14, "lam_med": 1754.6941997558483}, {"file": "odhxc4010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 3.0851709899044924e-14, "lam_med": 1754.6595331520734}, {"file": "odhxc4020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.481505156204104e-14, "lam_med": 1754.6650966612988}, {"file": "odhxc4030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.5433663166092428e-14, "lam_med": 1754.6548222784563}, {"file": "odhxc5010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 3.04466056647982e-14, "lam_med": 1754.7010825767761}, {"file": "odhxc5020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.4846259398178758e-14, "lam_med": 1754.6867981860578}, {"file": "odhxc5030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 2.5477818042899194e-14, "lam_med": 1754.6918206634177}, {"file": "odhxc6010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.5786180201848558e-14, "lam_med": 2007.6549809567387}, {"file": "odhxc6020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.2529684499412404e-14, "lam_med": 2007.653903688952}, {"file": "odhxc6030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.2584484037820804e-14, "lam_med": 2007.6222600927858}, {"file": "odhxc7010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.556423119452183e-14, "lam_med": 2007.6839610105492}, {"file": "odhxc7020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.213181754289804e-14, "lam_med": 2007.6513655338988, "rec": [0.019230769230769232, 0.36538461538461536, 0.7692307692307693, 0.9230769230769231, 1.0, 1.0]}, {"file": "odhxc7030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.2169244882956758e-14, "lam_med": 2007.6468025640127}, {"file": "odhxc8010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.0464610449319388e-14, "lam_med": 2258.0906655848185}, {"file": "odhxc8020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 8.1797509239998e-15, "lam_med": 2258.1017318947434}, {"file": "odhxc8030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 7.548665166764715e-15, "lam_med": 2507.7352067707516}, {"file": "odhxc9010_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.4195558130573264e-14, "lam_med": 3016.3158008668324}, {"file": "odhxc9020_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 1.0865705586264339e-14, "lam_med": 3016.3859888288666}, {"file": "odhxc9030_x1d.fits", "star": "HD 86986", "mode": "E230H", "nominal": 7.66062262227806e-15, "lam_med": 2744.454972490844, "rec": [0.0, 0.48148148148148145, 0.8148148148148148, 0.8148148148148148, 0.8846153846153846, 1.0]}, {"file": "odhxd0010_x1d.fits", "star": "* sig Boo", "mode": "E230H", "nominal": 5.89582762333013e-14, "lam_med": 2258.1053864489686}, {"file": "odhxd0020_x1d.fits", "star": "* sig Boo", "mode": "E230M", "nominal": 1.0292820593803074e-13, "lam_med": 1917.5125146136015}, {"file": "odhy01010_x1d.fits", "star": "HD 217987", "mode": "E230H", "nominal": 2.7326218992618497e-15, "lam_med": 2695.9752766625234}, {"file": "odhy01020_x1d.fits", "star": "HD 217987", "mode": "E140M", "nominal": 8.065922613796047e-16, "lam_med": 1380.1555990497075}, {"file": "odhy03010_x1d.fits", "star": "BD+05 1668", "mode": "E230H", "nominal": 2.879908818071841e-15, "lam_med": 2696.4263421606142}, {"file": "odhy03020_x1d.fits", "star": "BD+05 1668", "mode": "E140M", "nominal": 3.7710691700893307e-17, "lam_med": 1377.2840401900694}, {"file": "odhy04010_x1d.fits", "star": "HD 239960", "mode": "E230H", "nominal": 2.8985291108503356e-15, "lam_med": 2696.1572687144203}, {"file": "odhy04020_x1d.fits", "star": "HD 239960", "mode": "E140M", "nominal": 4.857082444002705e-16, "lam_med": 1379.7401147956261}, {"file": "odhy05010_x1d.fits", "star": "HD 36395", "mode": "E230H", "nominal": 2.9448838531331918e-15, "lam_med": 2696.4000997966623}, {"file": "odhy05020_x1d.fits", "star": "HD 36395", "mode": "E140M", "nominal": 4.333749215822523e-16, "lam_med": 1377.7411638150893}, {"file": "odhy06010_x1d.fits", "star": "CD-40 9712", "mode": "E230H", "nominal": 2.5491890611830382e-15, "lam_med": 2695.9513226525155}, {"file": "odhy06020_x1d.fits", "star": "CD-40 9712", "mode": "E140M", "nominal": 3.3446649579270604e-16, "lam_med": 1378.9619011917239}, {"file": "odhy08010_x1d.fits", "star": "V* YZ CMi", "mode": "E230H", "nominal": 2.9087468987076943e-15, "lam_med": 2696.4426920801643}, {"file": "odhy08020_x1d.fits", "star": "V* YZ CMi", "mode": "E140H", "nominal": 1.1911137154402718e-15, "lam_med": 1253.0210763931004}, {"file": "odhy09010_x1d.fits", "star": "HD 152751", "mode": "E230H", "nominal": 2.8175564944914587e-15, "lam_med": 2695.924327849926}, {"file": "odhy09020_x1d.fits", "star": "HD 152751", "mode": "E140H", "nominal": 5.42379505805054e-16, "lam_med": 1253.6698120338267, "rec": [0.06666666666666667, 0.2765957446808511, 0.4444444444444444, 0.48936170212765956, 0.45652173913043476, 0.6136363636363636]}, {"file": "odhy10010_x1d.fits", "star": "HD 217987", "mode": "E140M", "nominal": 3.8266014298907204e-17, "lam_med": 1379.3302309276814}, {"file": "odhy12010_x1d.fits", "star": "BD+05 1668", "mode": "E140M", "nominal": 5.538300596583575e-18, "lam_med": 1378.26404456063, "rec": [0.1, 0.225, 0.17073170731707318, 0.1, 0.1794871794871795, 0.19047619047619047]}, {"file": "odhy12020_x1d.fits", "star": "BD+05 1668", "mode": "E140M", "nominal": 8.651658816132588e-17, "lam_med": 1376.6310328580512}, {"file": "odhy13010_x1d.fits", "star": "HD 239960", "mode": "E140M", "nominal": 7.382172659248779e-17, "lam_med": 1380.4591863531123}, {"file": "odhy13020_x1d.fits", "star": "HD 239960", "mode": "E140M", "nominal": 6.149654121738385e-16, "lam_med": 1378.679741257243}, {"file": "odhy14010_x1d.fits", "star": "HD 36395", "mode": "E140M", "nominal": 4.729958776479173e-16, "lam_med": 1379.5898279127523}, {"file": "odhy14020_x1d.fits", "star": "HD 36395", "mode": "E140M", "nominal": 1.0092356916015651e-15, "lam_med": 1379.630386413732}, {"file": "odhy15010_x1d.fits", "star": "CD-40 9712", "mode": "E140M", "nominal": 1.8708910308167193e-17, "lam_med": 1380.3417282723785}, {"file": "odhy15020_x1d.fits", "star": "CD-40 9712", "mode": "E140M", "nominal": 6.201748388291658e-16, "lam_med": 1379.7607678205675}, {"file": "odhy17010_x1d.fits", "star": "V* YZ CMi", "mode": "E140H", "nominal": 2.2390909888848975e-16, "lam_med": 1253.2570652902543, "rec": [0.0851063829787234, 0.17391304347826086, 0.2558139534883721, 0.3191489361702128, 0.3125, 0.4186046511627907]}, {"file": "odhy17020_x1d.fits", "star": "V* YZ CMi", "mode": "E140H", "nominal": 6.86933077017753e-16, "lam_med": 1252.8922944510116}, {"file": "odhy18010_x1d.fits", "star": "HD 152751", "mode": "E140H", "nominal": 4.575501255886274e-16, "lam_med": 1253.2321781588464}, {"file": "odik01010_x1d.fits", "star": "* alf Boo", "mode": "E140H", "nominal": 3.067147500252967e-15, "lam_med": 1254.0904479255878}, {"file": "odik01020_x1d.fits", "star": "* alf Boo", "mode": "E140H", "nominal": 2.3481541980071592e-15, "lam_med": 1254.1092665009473}, {"file": "odik02010_x1d.fits", "star": "* alf Tau", "mode": "E140H", "nominal": 2.533102024786054e-15, "lam_med": 1289.1327524221279}, {"file": "odik02020_x1d.fits", "star": "* alf Tau", "mode": "E140H", "nominal": 1.919233130094595e-15, "lam_med": 1289.0225772328392}, {"file": "odik02030_x1d.fits", "star": "* alf Tau", "mode": "E140H", "nominal": 2.6946613275826163e-15, "lam_med": 1254.3246598983937}, {"file": "odik03010_x1d.fits", "star": "* alf Tau", "mode": "E140H", "nominal": 2.465308759836139e-15, "lam_med": 1253.6203273317062}, {"file": "odik03020_x1d.fits", "star": "* alf Tau", "mode": "E140H", "nominal": 1.977574535463001e-15, "lam_med": 1252.7411603500022}, {"file": "odik03030_x1d.fits", "star": "* alf Tau", "mode": "E140H", "nominal": 1.728123082641072e-15, "lam_med": 1289.2330756279175}, {"file": "odik51010_x1d.fits", "star": "* alf Boo", "mode": "E140H", "nominal": 2.183142259548092e-15, "lam_med": 1289.2850062820926}, {"file": "odik51020_x1d.fits", "star": "* alf Boo", "mode": "E140H", "nominal": 2.2105263896943976e-15, "lam_med": 1289.2809632897615}, {"file": "odj101010_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.4097932458765843e-13, "lam_med": 2743.992221649918}, {"file": "odj101020_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.1500590105515287e-13, "lam_med": 2507.407949855599}, {"file": "odj101030_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.9865617884579935e-13, "lam_med": 1754.4506771161364, "rec": [0.0, 0.26865671641791045, 0.5294117647058824, 0.8088235294117647, 0.9701492537313433, 0.9850746268656716]}, {"file": "odj101040_x1d.fits", "star": "* phi Leo", "mode": "E140M", "nominal": 7.09825602931433e-15, "lam_med": 1379.9113290902947}, {"file": "odj104010_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.184868436401041e-13, "lam_med": 2743.9432243330098}, {"file": "odj104020_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.0158631648785421e-13, "lam_med": 2507.331770539756}, {"file": "odj104030_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 2.0919059091484981e-13, "lam_med": 1754.4461062162986}, {"file": "odj151010_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.0894017151245788e-13, "lam_med": 2743.9235029582183}, {"file": "odj151020_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 9.758740033836004e-14, "lam_med": 2507.2939590724836}, {"file": "odj151030_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 2.095884663094965e-13, "lam_med": 1754.5694720021597, "rec": [0.0, 0.35294117647058826, 0.6567164179104478, 0.835820895522388, 0.9552238805970149, 0.9852941176470589]}, {"file": "odj151040_x1d.fits", "star": "* phi Leo", "mode": "E140M", "nominal": 6.8871024210406974e-15, "lam_med": 1378.5607428296757}, {"file": "odj154010_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.5812446992345427e-13, "lam_med": 2743.9125498458407}, {"file": "odj154020_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.2750579645074485e-13, "lam_med": 2507.3258810145535}, {"file": "odj154030_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 2.334992825342221e-13, "lam_med": 1754.3483415720086}, {"file": "odj154040_x1d.fits", "star": "* phi Leo", "mode": "E140M", "nominal": 7.599578766923874e-15, "lam_med": 1380.288657324365}, {"file": "odj156010_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.472419442464418e-13, "lam_med": 2743.8998555574963}, {"file": "odj156020_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 1.2348596672487446e-13, "lam_med": 2507.3222471646536}, {"file": "odj156030_x1d.fits", "star": "* phi Leo", "mode": "E230H", "nominal": 2.2333293042713277e-13, "lam_med": 1754.3876432222596}, {"file": "odj156040_x1d.fits", "star": "* phi Leo", "mode": "E140M", "nominal": 7.231124668579308e-15, "lam_med": 1379.8144851271559}, {"file": "odkha1010_x1d.fits", "star": "Kepler-451", "mode": "E140M", "nominal": 2.3541015305967316e-14, "lam_med": 1378.5408408420672}, {"file": "odkha2010_x1d.fits", "star": "Kepler-451", "mode": "E140M", "nominal": 2.3832306903433365e-14, "lam_med": 1379.2513836926792}, {"file": "odkha3010_x1d.fits", "star": "Kepler-451", "mode": "E140M", "nominal": 2.41018019862584e-14, "lam_med": 1379.4393779296008}, {"file": "odlc02010_x1d.fits", "star": "WG 17", "mode": "E140M", "nominal": 1.451445295740066e-14, "lam_med": 1380.8151506699148}, {"file": "odld02010_x1d.fits", "star": "* eta Car", "mode": "E140M", "nominal": 9.407571535723103e-14, "lam_med": 1379.6711905105144}, {"file": "odld02020_x1d.fits", "star": "* eta Car", "mode": "E230M", "nominal": 1.7209955576400606e-13, "lam_med": 1917.4197986073411}, {"file": "odlm37030_x1d.fits", "star": "CD-23 14742", "mode": "E140M", "nominal": 1.1252944248422794e-16, "lam_med": 1379.8567415991772}, {"file": "odlm37040_x1d.fits", "star": "CD-23 14742", "mode": "E140M", "nominal": 1.1128340813184386e-15, "lam_med": 1378.3807023491463}, {"file": "odlm37050_x1d.fits", "star": "CD-23 14742", "mode": "E140M", "nominal": 1.3851884366446594e-15, "lam_med": 1378.891237049357}, {"file": "odlm37060_x1d.fits", "star": "CD-23 14742", "mode": "E140M", "nominal": 1.58820519142129e-15, "lam_med": 1377.1218361172428}, {"file": "odlm38030_x1d.fits", "star": "CD-23 14742", "mode": "E140M", "nominal": 1.3065587829302985e-17, "lam_med": 1380.1030374632267, "rec": [0.0, 0.023255813953488372, 0.0975609756097561, 0.175, 0.20930232558139536, 0.18181818181818182]}, {"file": "odlm38040_x1d.fits", "star": "CD-23 14742", "mode": "E140M", "nominal": 3.107024992935366e-16, "lam_med": 1379.212966764223}, {"file": "odlm38050_x1d.fits", "star": "CD-23 14742", "mode": "E140M", "nominal": 5.392791225334658e-16, "lam_med": 1379.3373496407319}, {"file": "odlq01010_x1d.fits", "star": "* iot Hor", "mode": "E230H", "nominal": 1.4793784953371905e-14, "lam_med": 2696.2372448196193}, {"file": "odlq01020_x1d.fits", "star": "* iot Hor", "mode": "E140M", "nominal": 1.3347808310696633e-15, "lam_med": 1379.888147575079}, {"file": "odlq01030_x1d.fits", "star": "* iot Hor", "mode": "E140M", "nominal": 1.7125474278072736e-15, "lam_med": 1379.8856456848753}, {"file": "odlq02010_x1d.fits", "star": "HD 1237", "mode": "E230H", "nominal": 5.268129113574407e-15, "lam_med": 2696.112507790133, "rec": [0.0, 0.10344827586206896, 0.20689655172413793, 0.4827586206896552, 0.6785714285714286, 0.8275862068965517]}, {"file": "odlq03010_x1d.fits", "star": "HD 147513", "mode": "E230H", "nominal": 1.2256587636653588e-14, "lam_med": 2695.944508968283}, {"file": "odlq03020_x1d.fits", "star": "HD 147513", "mode": "E140M", "nominal": 9.361255653165376e-16, "lam_med": 1378.0725744011404}, {"file": "odlq04010_x1d.fits", "star": "HD 190771", "mode": "E230H", "nominal": 8.687833556224121e-15, "lam_med": 2696.092469016499, "rec": [0.0, 0.14285714285714285, 0.10714285714285714, 0.1724137931034483, 0.42857142857142855, 0.7857142857142857]}, {"file": "odlq04020_x1d.fits", "star": "HD 190771", "mode": "E140M", "nominal": 6.168864542545764e-16, "lam_med": 1377.620164776214}, {"file": "odlq04030_x1d.fits", "star": "HD 190771", "mode": "E140M", "nominal": 8.712252816897675e-16, "lam_med": 1377.7809252146026}, {"file": "odlqz2010_x1d.fits", "star": "HD 1237", "mode": "E140M", "nominal": 5.248019253095528e-16, "lam_med": 1379.9081718406292}, {"file": "odlqz2020_x1d.fits", "star": "HD 1237", "mode": "E140M", "nominal": 8.59732242736761e-16, "lam_med": 1379.8205219615945}, {"file": "odlqz3010_x1d.fits", "star": "HD 147513", "mode": "E140M", "nominal": 8.72883495522366e-16, "lam_med": 1378.787922052653}, {"file": "odlz01010_x1d.fits", "star": "* omi Per", "mode": "E230M", "nominal": 6.791622994720275e-12, "lam_med": 1917.3649671236074}, {"file": "odlz02010_x1d.fits", "star": "V* X Per", "mode": "E230M", "nominal": 1.5728611723726767e-13, "lam_med": 1917.3955958460815}, {"file": "odlz03010_x1d.fits", "star": "* eps Per", "mode": "E230M", "nominal": 6.909346297949958e-11, "lam_med": 1917.375762683689}, {"file": "odlz04010_x1d.fits", "star": "* 62 Tau", "mode": "E230M", "nominal": 1.1845075521075744e-13, "lam_med": 1917.2930613453864}, {"file": "odlz05010_x1d.fits", "star": "* tet01 Ori C", "mode": "E230M", "nominal": 3.3027225914658857e-12, "lam_med": 1917.3841848345828}, {"file": "odlz06010_x1d.fits", "star": "* iot Ori", "mode": "E230M", "nominal": 9.870295939765023e-11, "lam_med": 1917.4363927085765}, {"file": "odlz07010_x1d.fits", "star": "* zet Ori A", "mode": "E230M", "nominal": 1.496268988305547e-10, "lam_med": 1917.4029525550536}, {"file": "odlz08010_x1d.fits", "star": "HD 62542", "mode": "E230M", "nominal": 4.8378751732389984e-14, "lam_med": 1917.39299679627}, {"file": "odlz09010_x1d.fits", "star": "HD 73882", "mode": "E230M", "nominal": 5.736781356597099e-14, "lam_med": 1917.559184766779}, {"file": "odlz11010_x1d.fits", "star": "HD 112244", "mode": "E230M", "nominal": 1.283839767547552e-12, "lam_med": 1917.4830589965563}, {"file": "odlz12010_x1d.fits", "star": "* tet Mus", "mode": "E230M", "nominal": 1.1876536479432873e-12, "lam_med": 1917.488450458291}, {"file": "odlz13010_x1d.fits", "star": "* rho Oph A", "mode": "E230M", "nominal": 9.611953523807408e-13, "lam_med": 1917.3887910336127}, {"file": "odlz14010_x1d.fits", "star": "* chi Oph", "mode": "E230M", "nominal": 1.3135033248038614e-12, "lam_med": 1917.7103626926732}, {"file": "odlz15010_x1d.fits", "star": "HD 149404", "mode": "E230M", "nominal": 1.5318091474933903e-13, "lam_med": 1917.237677263401}, {"file": "odlz16010_x1d.fits", "star": "* zet01 Sco", "mode": "E230M", "nominal": 2.3342061377813473e-13, "lam_med": 1917.7078554099344}, {"file": "odlz17010_x1d.fits", "star": "HD 154368", "mode": "E230M", "nominal": 7.201482970069459e-14, "lam_med": 1917.3089116701108}, {"file": "odlz18010_x1d.fits", "star": "HD 164402", "mode": "E230M", "nominal": 1.1342496540573691e-12, "lam_med": 1917.425889425077}, {"file": "odlz19010_x1d.fits", "star": "* 15 Sgr", "mode": "E230M", "nominal": 1.257009376170676e-12, "lam_med": 1917.7204810507574}, {"file": "odlz20010_x1d.fits", "star": "* kap Aql", "mode": "E230M", "nominal": 1.912472780263958e-12, "lam_med": 1917.3962980498995}, {"file": "odlz21010_x1d.fits", "star": "HD 188439", "mode": "E230M", "nominal": 7.863662373941981e-13, "lam_med": 1917.5268329540418}, {"file": "odlz22010_x1d.fits", "star": "HD 199579", "mode": "E230M", "nominal": 4.806188977195768e-13, "lam_med": 1917.3843438004626}, {"file": "odlz23010_x1d.fits", "star": "HD 206267", "mode": "E230M", "nominal": 3.2284082072823524e-13, "lam_med": 1917.4098931792448}, {"file": "odlz24010_x1d.fits", "star": "HD 207198", "mode": "E230M", "nominal": 1.1417893823541586e-13, "lam_med": 1917.463219418105}, {"file": "odlz25010_x1d.fits", "star": "HD 167971", "mode": "E230M", "nominal": 2.6905838013097512e-14, "lam_med": 1917.5616826482276}, {"file": "odlz25020_x1d.fits", "star": "HD 167971", "mode": "E230M", "nominal": 2.4567954177453234e-14, "lam_med": 1917.5893079943332}, {"file": "odlz50010_x1d.fits", "star": "HD 110432", "mode": "E230M", "nominal": 5.555850858534031e-13, "lam_med": 1917.4258091532793}, {"file": "odmr01010_x1d.fits", "star": "HD 32309", "mode": "E140H", "nominal": 7.868659663435756e-14, "lam_med": 1253.8709089096349}, {"file": "odmr01020_x1d.fits", "star": "HD 32309", "mode": "E140H", "nominal": 7.209755331416617e-14, "lam_med": 1253.8092191687558}, {"file": "odmr01030_x1d.fits", "star": "HD 32309", "mode": "E140H", "nominal": 1.2291490825718767e-13, "lam_med": 1228.3212553967562}, {"file": "odmr01040_x1d.fits", "star": "HD 32309", "mode": "E140H", "nominal": 8.011487991242447e-14, "lam_med": 1228.3556664413238}, {"file": "odmr01050_x1d.fits", "star": "HD 32309", "mode": "E140H", "nominal": 9.19742651794711e-14, "lam_med": 1228.3658281577455}, {"file": "odmr01060_x1d.fits", "star": "HD 32309", "mode": "E140H", "nominal": 1.1954480432601481e-13, "lam_med": 1477.7042401759013}, {"file": "odmr01070_x1d.fits", "star": "HD 32309", "mode": "E140H", "nominal": 1.8201913517363371e-13, "lam_med": 1584.316759555562}, {"file": "odn901010_x1d.fits", "star": "HD 33793", "mode": "E140M", "nominal": 2.4184284785339363e-15, "lam_med": 1381.175561247909}, {"file": "odn901020_x1d.fits", "star": "HD 33793", "mode": "E140M", "nominal": 2.4773907401489193e-15, "lam_med": 1378.8732397872811}, {"file": "odn901030_x1d.fits", "star": "HD 33793", "mode": "E230H", "nominal": 3.679430143961549e-15, "lam_med": 2696.124330308121}, {"file": "odn901040_x1d.fits", "star": "HD 33793", "mode": "E140M", "nominal": 3.689504993160215e-15, "lam_med": 1380.77575390027}, {"file": "odn902010_x1d.fits", "star": "HD 191408", "mode": "E140M", "nominal": 1.3481807152411339e-15, "lam_med": 1379.297456751931}, {"file": "odn902020_x1d.fits", "star": "HD 191408", "mode": "E230H", "nominal": 1.676516309551906e-14, "lam_med": 2696.04850778866}, {"file": "odn902030_x1d.fits", "star": "HD 191408", "mode": "E140M", "nominal": 2.11620070062352e-15, "lam_med": 1379.603453801891}, {"file": "odn905010_x1d.fits", "star": "HD 95735", "mode": "E140M", "nominal": 2.3213890275804793e-17, "lam_med": 1378.9319488769283}, {"file": "odn905030_x1d.fits", "star": "HD 95735", "mode": "E140M", "nominal": 1.7590350945757244e-15, "lam_med": 1377.2453405483523}, {"file": "odn905040_x1d.fits", "star": "HD 95735", "mode": "E140M", "nominal": 2.6578003099723456e-15, "lam_med": 1377.6842697012307}, {"file": "odn905050_x1d.fits", "star": "HD 95735", "mode": "E230H", "nominal": 5.4890456994125955e-15, "lam_med": 2695.9427778228937}, {"file": "odn906010_x1d.fits", "star": "HD 95735", "mode": "E140M", "nominal": 1.8961776002738463e-17, "lam_med": 1380.2913749066133}, {"file": "odn906020_x1d.fits", "star": "HD 95735", "mode": "E140M", "nominal": 1.3285094946163325e-16, "lam_med": 1379.5724609474594}, {"file": "odn906030_x1d.fits", "star": "HD 95735", "mode": "E140M", "nominal": 4.687977654856332e-16, "lam_med": 1379.4538008836175}, {"file": "odn906040_x1d.fits", "star": "HD 95735", "mode": "E230H", "nominal": 6.677676101268507e-15, "lam_med": 2696.330535843599, "rec": [0.034482758620689655, 0.5172413793103449, 0.7586206896551724, 0.9655172413793104, 1.0, 1.0]}, {"file": "odnu0k010_x1d.fits", "star": "RX J1847.9-2219", "mode": "E140M", "nominal": 2.286762038331383e-14, "lam_med": 1379.5112251478927}, {"file": "odpce1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3466851716548808e-14, "lam_med": 2257.822010794572}, {"file": "odpce1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.557533785219722e-13, "lam_med": 1380.5453964456515}, {"file": "odpce1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6568216158408528e-13, "lam_med": 1917.3299411208366, "rec": [0.0, 0.6153846153846154, 0.9, 0.95, 0.975, 1.0]}, {"file": "odpce1040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.011867529529459e-14, "lam_med": 1414.7686540927334}, {"file": "odpce1050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.59584113207538e-14, "lam_med": 2632.691573409275}, {"file": "odpce2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3850313198986062e-14, "lam_med": 2257.6980990204775, "rec": [0.04878048780487805, 0.6829268292682927, 0.9512195121951219, 0.975609756097561, 1.0, 1.0]}, {"file": "odpce2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.6070397950957106e-13, "lam_med": 1380.3659483122997}, {"file": "odpce2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6893243037167051e-13, "lam_med": 1917.3259633175046}, {"file": "odpce2040_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.341917572560337e-14, "lam_med": 1414.811398446749}, {"file": "odpce2050_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.6165514142284016e-14, "lam_med": 2632.745655765728}, {"file": "odpce3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.393497492452461e-14, "lam_med": 2258.1326961603368}, {"file": "odpce3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.5984358266493503e-13, "lam_med": 1380.4882630563673}, {"file": "odpce3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.595595521188712e-14, "lam_med": 2633.126073379824, "rec": [0.041666666666666664, 0.625, 0.875, 0.9583333333333334, 1.0, 1.0]}, {"file": "odpce3040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6993064598740868e-13, "lam_med": 1917.6278985780043}, {"file": "odpce3050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.399641395014812e-14, "lam_med": 1415.2410173948674}, {"file": "odpce4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.3602204005542047e-14, "lam_med": 2257.943169671459}, {"file": "odpce4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.591908619915369e-13, "lam_med": 1380.5743425614878}, {"file": "odpce4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.1091710852195046e-14, "lam_med": 2632.9404240482754}, {"file": "odpce4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6514943710717682e-13, "lam_med": 1917.4707960631597}, {"file": "odpce4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.286740462462185e-14, "lam_med": 1414.9675117193087}, {"file": "odqw01010_x1d.fits", "star": "BD+52 913", "mode": "E140M", "nominal": 9.370861872203272e-14, "lam_med": 1380.4758405361736}, {"file": "odra01010_x1d.fits", "star": "HD 6226", "mode": "E230M", "nominal": 1.1963703775760029e-12, "lam_med": 2632.9159845242657}, {"file": "odra01020_x1d.fits", "star": "HD 6226", "mode": "E230M", "nominal": 3.47449443607312e-12, "lam_med": 1917.4261501282626}, {"file": "odra01030_x1d.fits", "star": "HD 6226", "mode": "E140M", "nominal": 9.13492623417533e-13, "lam_med": 1380.2290200652228, "rec": [0.0, 0.675, 0.6666666666666666, 0.9047619047619048, 0.9761904761904762, 0.9]}, {"file": "odrb01010_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 9.744712656203899e-18, "lam_med": 1253.7597336631911}, {"file": "odrb01020_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 4.417103004109965e-16, "lam_med": 1253.7516239229747}, {"file": "odrb01030_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 7.865685864050902e-16, "lam_med": 1253.8122445869212, "rec": [0.08888888888888889, 0.29545454545454547, 0.4, 0.48936170212765956, 0.5531914893617021, 0.5652173913043478]}, {"file": "odrb01040_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 1.032038833063413e-15, "lam_med": 1254.2597824767192}, {"file": "odrb02010_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 1.1995284612319216e-17, "lam_med": 1254.0582671505376}, {"file": "odrb02020_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 6.12627326745092e-16, "lam_med": 1253.888583603215}, {"file": "odrb02030_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 1.0525183083851433e-15, "lam_med": 1254.1033162263498}, {"file": "odrb02040_x1d.fits", "star": "HD 219134", "mode": "E140H", "nominal": 1.3812892425733039e-15, "lam_med": 1254.11315768832}, {"file": "odrl03010_x1d.fits", "star": "BD-02 5958", "mode": "E230H", "nominal": 2.52554117026783e-15, "lam_med": 2695.9456136680956}, {"file": "ods801010_x1d.fits", "star": "MAXI J1820+070", "mode": "E140M", "nominal": 9.763433860531086e-15, "lam_med": 1378.7738012246728}, {"file": "ods801020_x1d.fits", "star": "MAXI J1820+070", "mode": "E140M", "nominal": 8.597768915313543e-15, "lam_med": 1379.1398821676823}, {"file": "ods801030_x1d.fits", "star": "MAXI J1820+070", "mode": "E140M", "nominal": 8.795947951423099e-15, "lam_med": 1378.7787476116146}, {"file": "ods801040_x1d.fits", "star": "MAXI J1820+070", "mode": "E230M", "nominal": 1.3442194163085394e-14, "lam_med": 1917.6174664275802}, {"file": "ods801050_x1d.fits", "star": "MAXI J1820+070", "mode": "E230M", "nominal": 4.4373491672118646e-15, "lam_med": 2631.468346173291, "rec": [0.0, 0.5, 0.7083333333333334, 1.0, 0.9583333333333334, 1.0]}, {"file": "odt901010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.2919890725246537e-13, "lam_med": 2793.728605368814}, {"file": "odt902010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.4051227340873631e-13, "lam_med": 2793.639625106883}, {"file": "odtm01010_x1d.fits", "star": "GSC 00444-02282", "mode": "E140M", "nominal": 1.163551030602572e-15, "lam_med": 1377.6725514468321}, {"file": "odtm01020_x1d.fits", "star": "GSC 00444-02282", "mode": "E140M", "nominal": 1.4208169817150477e-15, "lam_med": 1379.445272798709}, {"file": "odtm01030_x1d.fits", "star": "GSC 00444-02282", "mode": "E230M", "nominal": 1.455865444321472e-14, "lam_med": 1917.4842479645797}, {"file": "odtm01040_x1d.fits", "star": "GSC 00444-02282", "mode": "E230M", "nominal": 2.8228326654393763e-15, "lam_med": 2631.1139061450713}, {"file": "oduz10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.489879349396213e-15, "lam_med": 1380.524221964643}, {"file": "oduz10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.204056471466201e-12, "lam_med": 2696.10741554006}, {"file": "oduz10030_x1d.fits", "star": "* alf Cen B", "mode": "E140H", "nominal": 1.1772724707118604e-15, "lam_med": 1289.6209940251022, "rec": [0.047619047619047616, 0.18181818181818182, 0.4318181818181818, 0.5681818181818182, 0.6818181818181818, 0.8809523809523809]}, {"file": "oduz10040_x1d.fits", "star": "* alf Cen B", "mode": "E140H", "nominal": 1.7826464110819623e-15, "lam_med": 1478.0321014480462}, {"file": "oduz10050_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 7.647776388531342e-14, "lam_med": 2696.060207908619}, {"file": "oduz11010_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 4.499678042051894e-15, "lam_med": 1289.0447953200073}, {"file": "oduz11020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.4128955872288789e-14, "lam_med": 1477.3609102429764}, {"file": "oduz11030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 4.0764388276041185e-12, "lam_med": 2696.445365177882}, {"file": "odv501010_x1d.fits", "star": "* iot Hor", "mode": "E230H", "nominal": 1.5140913344146236e-14, "lam_med": 2696.3180686167952}, {"file": "odv501020_x1d.fits", "star": "* iot Hor", "mode": "E140M", "nominal": 8.752483600576443e-16, "lam_med": 1379.9686704538537}, {"file": "odv501030_x1d.fits", "star": "* iot Hor", "mode": "E140M", "nominal": 1.0948730747376278e-15, "lam_med": 1379.6161053882074}, {"file": "odvie1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5935155071297074e-14, "lam_med": 2257.8818364405183, "rec": [0.0, 0.6097560975609756, 1.0, 1.0, 1.0, 1.0]}, {"file": "odvie1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.889033500271391e-13, "lam_med": 1380.6536996877371}, {"file": "odvie1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.426264737389399e-14, "lam_med": 2632.864858073695}, {"file": "odvie1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6701379838824613e-13, "lam_med": 1917.3880465571551}, {"file": "odvie1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.16502414513147e-14, "lam_med": 1414.7544588279359}, {"file": "odvie2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6307606330640906e-14, "lam_med": 2258.155394936076}, {"file": "odvie2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.8937036448168303e-13, "lam_med": 1379.9289345161642}, {"file": "odvie2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.548700135088174e-14, "lam_med": 2632.17545512142, "rec": [0.0, 0.30434782608695654, 0.7083333333333334, 0.8695652173913043, 1.0, 0.9166666666666666]}, {"file": "odvie2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.6888250375715111e-13, "lam_med": 1917.6133427427421}, {"file": "odvie2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.327464500770303e-14, "lam_med": 1414.8473231204323}, {"file": "odvie3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6284251280181817e-14, "lam_med": 2258.1113769847657}, {"file": "odvie3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.8863112143485802e-13, "lam_med": 1380.4649788707977}, {"file": "odvie3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.642457427035793e-14, "lam_med": 2633.1329509046236}, {"file": "odvie3040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.742864414998175e-13, "lam_med": 1917.635271118141}, {"file": "odvie3050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.554856499684121e-14, "lam_med": 1415.0783434619466}, {"file": "odvie4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.5897874071657635e-14, "lam_med": 2257.9624865769974, "rec": [0.024390243902439025, 0.6097560975609756, 0.975609756097561, 1.0, 1.0, 1.0]}, {"file": "odvie4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.8979827251559022e-13, "lam_med": 1380.4311472083232}, {"file": "odvie4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.4248048288663145e-14, "lam_med": 2632.959378480591}, {"file": "odvie4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7075890761176325e-13, "lam_med": 1917.4437411810095}, {"file": "odvie4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.547969841204524e-14, "lam_med": 1414.8869289289305}, {"file": "odvr06010_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 1.2266072176641184e-13, "lam_med": 1584.9590101547365}, {"file": "odvr06020_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 7.978916542660154e-14, "lam_med": 1414.489567038042}, {"file": "odvr06030_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 5.882762502533335e-14, "lam_med": 1228.4670066609738}, {"file": "odvr07010_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 1.2291607573834508e-13, "lam_med": 1584.9877711658082}, {"file": "odvr07020_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 8.036648603344391e-14, "lam_med": 1414.5536971530885}, {"file": "odvr07030_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 5.949706442595712e-14, "lam_med": 1228.5200639030156, "rec": [0.0, 0.35555555555555557, 0.5869565217391305, 0.7083333333333334, 0.8541666666666666, 0.9166666666666666]}, {"file": "odvr08010_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 1.2330911053298344e-13, "lam_med": 1585.2272290826597}, {"file": "odvr08020_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 8.149391015154148e-14, "lam_med": 1414.6683308323463}, {"file": "odvr08030_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 6.187170805072315e-14, "lam_med": 1228.5746725827426}, {"file": "odx901010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 8.214644014042768e-15, "lam_med": 3015.9719112351354}, {"file": "odx902010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.9845006919085254e-15, "lam_med": 2793.493141433825}, {"file": "odx903010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.67863379502828e-15, "lam_med": 2793.705436816682, "rec": [0.038461538461538464, 0.2222222222222222, 0.6153846153846154, 0.7037037037037037, 0.9615384615384616, 0.9615384615384616]}, {"file": "odx903020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.9189421370641715e-15, "lam_med": 2793.7061270663526}, {"file": "odx903030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.796577258069726e-15, "lam_med": 2793.7038990422316}, {"file": "odx904010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.846002534295712e-15, "lam_med": 2553.8496408131646, "rec": [0.03125, 0.375, 0.78125, 0.84375, 0.96875, 1.0]}, {"file": "odx905010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 2.9701425526131476e-15, "lam_med": 2552.8801299532715}, {"file": "odx906010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.005941338835129e-15, "lam_med": 2301.674832929513}, {"file": "odx906020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.3195324799116607e-15, "lam_med": 2301.701443820428}, {"file": "odx906030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.383879375432293e-15, "lam_med": 2301.705397784767}, {"file": "odx907010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.167656971097932e-15, "lam_med": 2301.617080385711}, {"file": "odx908030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.3934698331708307e-15, "lam_med": 2301.6511431056815}, {"file": "odx909010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 6.600847520232515e-15, "lam_med": 2062.6062482015977}, {"file": "odx909020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.601476497061208e-15, "lam_med": 2062.592770013611}, {"file": "odx909030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.72732685937677e-15, "lam_med": 2062.572126888562}, {"file": "odx910010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.8689166337237356e-15, "lam_med": 2062.0798199642436}, {"file": "odx910020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.896833891523815e-15, "lam_med": 2062.0837963098556}, {"file": "odx911010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 6.577812488244412e-15, "lam_med": 2062.414817727224}, {"file": "odx911020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.394577890152673e-15, "lam_med": 2062.407979686746}, {"file": "odx911030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.520362055348353e-15, "lam_med": 2062.3854444476033}, {"file": "odx912010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 6.572428081446684e-15, "lam_med": 2062.0440165952077}, {"file": "odx913010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.8945987267797674e-15, "lam_med": 2062.8385024415643}, {"file": "odx913020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.9810812455248905e-15, "lam_med": 2062.8366428480504}, {"file": "odx913030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.191770890118792e-15, "lam_med": 2062.799092136628}, {"file": "odx914010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 6.193409091801948e-15, "lam_med": 2062.046580675341}, {"file": "odx914020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.24078137305091e-15, "lam_med": 2061.9171190167317}, {"file": "odx914030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.402072129148711e-15, "lam_med": 2061.8434569822925}, {"file": "odx915010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 9.881564971634317e-15, "lam_med": 2061.8531330450405}, {"file": "odx915020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.564285044547538e-15, "lam_med": 2061.854011192753}, {"file": "odx915030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.58318099150002e-15, "lam_med": 2061.825477918049}, {"file": "odx916010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 6.0608119720233316e-15, "lam_med": 2063.0204246065337}, {"file": "odx916020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.050538322068862e-15, "lam_med": 2062.9648538909487}, {"file": "odx916030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.260449398296812e-15, "lam_med": 2062.850998562194}, {"file": "odx917010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.94082934194028e-15, "lam_med": 2062.629568598519}, {"file": "odx917020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.856560567755896e-15, "lam_med": 2062.544828668648}, {"file": "odx917030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.011950892552628e-15, "lam_med": 2062.4840383034884}, {"file": "odx951010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 8.009146694799396e-15, "lam_med": 3016.2617835392402}, {"file": "odx954010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.9225015506890935e-15, "lam_med": 2554.542567211336, "rec": [0.03125, 0.25, 0.65625, 0.90625, 0.96875, 1.0]}, {"file": "odx954020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.1098155168243258e-15, "lam_med": 2554.61424087832}, {"file": "odx955010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.7909959258524086e-15, "lam_med": 2558.2107661798204}, {"file": "odx955020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.034000778200133e-15, "lam_med": 2557.875008538231}, {"file": "odx957010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.926471349020162e-15, "lam_med": 2301.85279476325}, {"file": "odx957020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.2281494018739528e-15, "lam_med": 2301.88286202292}, {"file": "odx958010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 4.220567075031048e-15, "lam_med": 2301.6963696608555}, {"file": "odx958020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 3.4157384935610815e-15, "lam_med": 2301.6937112888463}, {"file": "odx960010_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 6.765815995749408e-15, "lam_med": 2061.829599784634}, {"file": "odx960020_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.4121088526296526e-15, "lam_med": 2061.8547771344597}, {"file": "odx960030_x1d.fits", "star": "HD 222925", "mode": "E230H", "nominal": 5.452798393883507e-15, "lam_med": 2061.909951174318}, {"file": "odxg01010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0328229430139335e-14, "lam_med": 2632.6878985200224}, {"file": "odxg01020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.7773975961456392e-14, "lam_med": 2632.7874500928574}, {"file": "odxg01030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.5777904986456634e-14, "lam_med": 2632.7423146817423}, {"file": "odxg01040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.112851055932523e-14, "lam_med": 2632.70304185881}, {"file": "odxg01050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.762286691127911e-14, "lam_med": 2632.6635987005616}, {"file": "odxg01060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.5723753373294715e-14, "lam_med": 2632.6828324013923}, {"file": "odxg01070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.130971955617025e-15, "lam_med": 2632.7498438980506}, {"file": "odxg02010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1697398417169804e-14, "lam_med": 2632.6289735303853}, {"file": "odxg02020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.0485250900534737e-14, "lam_med": 2632.6349298011887}, {"file": "odxg02030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.8822067344947635e-14, "lam_med": 2632.6354316790544}, {"file": "odxg02040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.1624454188230146e-14, "lam_med": 2632.587894616426}, {"file": "odxg02050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.718766371495734e-14, "lam_med": 2632.5883168651226}, {"file": "odxg02060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.5977588814520623e-14, "lam_med": 2632.548709100128}, {"file": "odxg02070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.980543953366083e-15, "lam_med": 2632.593335769461}, {"file": "odxg03010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1746818072538022e-14, "lam_med": 2632.598078052434}, {"file": "odxg03030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.739290676749031e-14, "lam_med": 2632.652303998154}, {"file": "odxg03040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 4.491485039279559e-14, "lam_med": 2632.610314408956}, {"file": "odxg03050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.309926590010873e-14, "lam_med": 2632.607657659211}, {"file": "odxg03060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.6688363699378697e-14, "lam_med": 2632.589424042345}, {"file": "odxg03070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.107888595573145e-15, "lam_med": 2632.6342021215546}, {"file": "odxg04010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.012570709291923e-15, "lam_med": 2633.0010891007105}, {"file": "odxg04070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.5013848912818865e-15, "lam_med": 2633.046081460986}, {"file": "odxg06010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.4524510781554236e-14, "lam_med": 2632.5453785189875}, {"file": "odxg07010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0785048721335225e-14, "lam_med": 2633.162724328905}, {"file": "odxg07020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.3594380197535902e-14, "lam_med": 2633.0779828804207}, {"file": "odxg07030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 4.1045492718377543e-14, "lam_med": 2633.0387940039172}, {"file": "odxg07040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 4.0639443984242494e-14, "lam_med": 2633.169180873543}, {"file": "odxg07050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.217197889245312e-14, "lam_med": 2633.1287321892914}, {"file": "odxg07060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.557070100100113e-14, "lam_med": 2633.1079801818864}, {"file": "odxg07070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.506513252302223e-15, "lam_med": 2633.09211452437}, {"file": "odxg08010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1253281129818474e-14, "lam_med": 2633.054869422199}, {"file": "odxg08020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.018264164642245e-14, "lam_med": 2633.1455223226794}, {"file": "odxg08030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 4.686297665924478e-14, "lam_med": 2633.103269903606}, {"file": "odxg08040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 4.270385473245557e-14, "lam_med": 2633.0815533515984}, {"file": "odxg08050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.302596006401378e-14, "lam_med": 2633.081190227611}, {"file": "odxg08060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2316802128761332e-14, "lam_med": 2633.01650003905}, {"file": "odxg08070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 4.99358911794289e-15, "lam_med": 2633.0768745791092}, {"file": "odxs01010_x1d.fits", "star": "HD 29441", "mode": "E140M", "nominal": 2.322959319742833e-13, "lam_med": 1379.5639758969216}, {"file": "odxs02010_x1d.fits", "star": "HD 29441", "mode": "E140M", "nominal": 2.3067000447266823e-13, "lam_med": 1379.9289940250937}, {"file": "odxs03010_x1d.fits", "star": "HD 29441", "mode": "E140M", "nominal": 2.0490737227285156e-13, "lam_med": 1379.1935557899942}, {"file": "odxs05010_x1d.fits", "star": "HD 43544", "mode": "E140M", "nominal": 1.5845995519418142e-12, "lam_med": 1379.1813588105974}, {"file": "odxs06010_x1d.fits", "star": "HD 43544", "mode": "E140M", "nominal": 6.303083064430454e-14, "lam_med": 1378.869957071457}, {"file": "odxs07010_x1d.fits", "star": "HD 51354", "mode": "E140M", "nominal": 5.136756092024137e-13, "lam_med": 1380.3873599519136}, {"file": "odxs08010_x1d.fits", "star": "HD 51354", "mode": "E140M", "nominal": 5.314835168941142e-13, "lam_med": 1379.9913529831279}, {"file": "odxs09010_x1d.fits", "star": "HD 51354", "mode": "E140M", "nominal": 5.260173451024066e-13, "lam_med": 1379.3588393315777}, {"file": "odxs11010_x1d.fits", "star": "HD 55606", "mode": "E140M", "nominal": 5.0430744677610166e-14, "lam_med": 1378.3380198135853}, {"file": "odxs13010_x1d.fits", "star": "HD 60855", "mode": "E140M", "nominal": 1.4454709533909224e-12, "lam_med": 1379.6148646960653}, {"file": "odxs14010_x1d.fits", "star": "HD 60855", "mode": "E140M", "nominal": 1.5048483797454256e-12, "lam_med": 1380.208167939516}, {"file": "odxs15010_x1d.fits", "star": "HD 60855", "mode": "E140M", "nominal": 1.4342954686581689e-12, "lam_med": 1379.9688647564396}, {"file": "odxs16010_x1d.fits", "star": "HD 113120", "mode": "E140M", "nominal": 2.6836428383230654e-12, "lam_med": 1379.4287595686606}, {"file": "odxs17010_x1d.fits", "star": "HD 113120", "mode": "E140M", "nominal": 2.6487051689272563e-12, "lam_med": 1380.07306662843}, {"file": "odxs19010_x1d.fits", "star": "* kap01 Aps", "mode": "E140M", "nominal": 4.270434514680722e-12, "lam_med": 1380.0198809930712}, {"file": "odxs20010_x1d.fits", "star": "* kap01 Aps", "mode": "E140M", "nominal": 4.23128080258732e-12, "lam_med": 1379.8118594449077}, {"file": "odxs21010_x1d.fits", "star": "* kap01 Aps", "mode": "E140M", "nominal": 3.932605375704323e-12, "lam_med": 1380.711349178276, "rec": [0.0, 0.40476190476190477, 0.6744186046511628, 0.9047619047619048, 0.9047619047619048, 0.9512195121951219]}, {"file": "odxs22010_x1d.fits", "star": "HD 152478", "mode": "E140M", "nominal": 5.827330546720667e-13, "lam_med": 1379.8402320727982}, {"file": "odxs23010_x1d.fits", "star": "HD 152478", "mode": "E140M", "nominal": 5.854849850585585e-13, "lam_med": 1380.1810781712875}, {"file": "odxs24010_x1d.fits", "star": "HD 152478", "mode": "E140M", "nominal": 5.682802516456034e-13, "lam_med": 1379.5489047110023}, {"file": "odxs25010_x1d.fits", "star": "* iot Ara", "mode": "E140M", "nominal": 4.176037820707162e-12, "lam_med": 1380.0480502504406}, {"file": "odxs26010_x1d.fits", "star": "* iot Ara", "mode": "E140M", "nominal": 4.3073075305381955e-12, "lam_med": 1379.7087067706263}, {"file": "odxs27010_x1d.fits", "star": "* iot Ara", "mode": "E140M", "nominal": 4.388698990024248e-12, "lam_med": 1380.149540384938}, {"file": "odxs28010_x1d.fits", "star": "HD 157832", "mode": "E140M", "nominal": 4.685393895672847e-13, "lam_med": 1379.570370603862}, {"file": "odxs29010_x1d.fits", "star": "HD 157832", "mode": "E140M", "nominal": 5.226626318725825e-13, "lam_med": 1380.075963824021}, {"file": "odxs30010_x1d.fits", "star": "HD 157832", "mode": "E140M", "nominal": 5.062261214623169e-13, "lam_med": 1380.2948159378823}, {"file": "odxs31010_x1d.fits", "star": "* b02 Cyg", "mode": "E140M", "nominal": 4.770592539157411e-12, "lam_med": 1379.665848576522}, {"file": "odxs32010_x1d.fits", "star": "* b02 Cyg", "mode": "E140M", "nominal": 4.866726612858182e-12, "lam_med": 1379.6657118832322}, {"file": "odxs33010_x1d.fits", "star": "* b02 Cyg", "mode": "E140M", "nominal": 4.934825539601559e-12, "lam_med": 1379.027354896138}, {"file": "odxs34010_x1d.fits", "star": "HD 194335", "mode": "E140M", "nominal": 3.9987363973396594e-12, "lam_med": 1378.475079191678}, {"file": "odxs35010_x1d.fits", "star": "HD 194335", "mode": "E140M", "nominal": 3.981731750120634e-12, "lam_med": 1379.672525346072, "rec": [0.025, 0.5348837209302325, 0.775, 0.8717948717948718, 0.975609756097561, 0.9069767441860465]}, {"file": "odxs36010_x1d.fits", "star": "HD 194335", "mode": "E140M", "nominal": 3.859611173125264e-12, "lam_med": 1378.8242914540126}, {"file": "odxs37010_x1d.fits", "star": "* 8 Lac A", "mode": "E140M", "nominal": 4.120597120311087e-12, "lam_med": 1380.2894531939319}, {"file": "odxs38010_x1d.fits", "star": "* 8 Lac A", "mode": "E140M", "nominal": 4.299172076419917e-12, "lam_med": 1379.2319323935267}, {"file": "odxs39010_x1d.fits", "star": "* 8 Lac A", "mode": "E140M", "nominal": 3.838083318198528e-12, "lam_med": 1379.4985980892975}, {"file": "odxs52010_x1d.fits", "star": "HD 55606", "mode": "E140M", "nominal": 5.0853151805867534e-14, "lam_med": 1379.713010123305}, {"file": "odxs54010_x1d.fits", "star": "HD 43544", "mode": "E140M", "nominal": 1.3914511633774544e-12, "lam_med": 1379.8758955751077}, {"file": "odxs56010_x1d.fits", "star": "HD 43544", "mode": "E140M", "nominal": 1.6296996894044679e-12, "lam_med": 1379.5117653730986}, {"file": "odxs60010_x1d.fits", "star": "HD 55606", "mode": "E140M", "nominal": 5.03648745705667e-14, "lam_med": 1379.0375007518658, "rec": [0.0, 0.3902439024390244, 0.55, 0.7906976744186046, 0.8636363636363636, 0.7906976744186046]}, {"file": "odxs68010_x1d.fits", "star": "HD 113120", "mode": "E140M", "nominal": 2.6792941293979323e-12, "lam_med": 1380.7461644468326}, {"file": "ody109010_x1d.fits", "star": "VB 8", "mode": "E230H", "nominal": 2.9077950358379317e-15, "lam_med": 2696.007770564689}, {"file": "ody109020_x1d.fits", "star": "VB 8", "mode": "E230H", "nominal": 2.4462008260667995e-15, "lam_med": 2696.119617016757}, {"file": "ody109030_x1d.fits", "star": "VB 8", "mode": "E140M", "nominal": 1.1122363655734097e-15, "lam_med": 1377.722490654655}, {"file": "ody110010_x1d.fits", "star": "VB 8", "mode": "E140M", "nominal": 5.81358307291395e-18, "lam_med": 1379.7471136679173}, {"file": "ody110020_x1d.fits", "star": "VB 8", "mode": "E140M", "nominal": 1.9807290283998846e-17, "lam_med": 1376.9322993872752}, {"file": "ody110030_x1d.fits", "star": "VB 8", "mode": "E140M", "nominal": 4.617519685097035e-16, "lam_med": 1378.671946768918}, {"file": "ody111010_x1d.fits", "star": "VB 8", "mode": "E140M", "nominal": 8.915735645530348e-18, "lam_med": 1381.419702673929}, {"file": "ody111020_x1d.fits", "star": "VB 8", "mode": "E140M", "nominal": 4.396006902565835e-16, "lam_med": 1379.6350209706663}, {"file": "ody111030_x1d.fits", "star": "VB 8", "mode": "E140M", "nominal": 9.21360929843727e-16, "lam_med": 1377.4667606371665}, {"file": "ody203010_x1d.fits", "star": "Brey 74a", "mode": "E140M", "nominal": 5.414902036685431e-15, "lam_med": 1379.898974802985}, {"file": "ody211010_x1d.fits", "star": "2MASS J05380840-6905446", "mode": "E140M", "nominal": 4.687301195515316e-15, "lam_med": 1379.4069382523346}, {"file": "ody213010_x1d.fits", "star": "2MASS J05384539-6902514", "mode": "E140M", "nominal": 3.995664247774961e-15, "lam_med": 1380.2870635432337}, {"file": "ody217010_x1d.fits", "star": "2MASS J05373854-6910199", "mode": "E140M", "nominal": 3.154654223861483e-15, "lam_med": 1379.962354309302}, {"file": "ody219010_x1d.fits", "star": "Cl* NGC 2070 MEL 47", "mode": "E140M", "nominal": 4.1682798912980674e-15, "lam_med": 1380.612777332394}, {"file": "ody221010_x1d.fits", "star": "2MASS J05373664-6907318", "mode": "E140M", "nominal": 5.574826030047029e-15, "lam_med": 1379.4937940381114}, {"file": "ody229010_x1d.fits", "star": "SMC AB 2", "mode": "E140M", "nominal": 6.1991796768900144e-15, "lam_med": 1379.3216511206513}, {"file": "ody230010_x1d.fits", "star": "LIN 160", "mode": "E140M", "nominal": 8.65221918227448e-15, "lam_med": 1379.463223054332}, {"file": "ody234010_x1d.fits", "star": "SK 32", "mode": "E140M", "nominal": 1.1172454986394987e-14, "lam_med": 1379.7251143899318}, {"file": "ody235010_x1d.fits", "star": "SK 142", "mode": "E140M", "nominal": 1.0415319811811818e-14, "lam_med": 1380.30341977327}, {"file": "ody236010_x1d.fits", "star": "SK 101", "mode": "E140M", "nominal": 1.1564626387590813e-14, "lam_med": 1379.6405435067436}, {"file": "ody237010_x1d.fits", "star": "AzV 258", "mode": "E140M", "nominal": 6.709179949805795e-15, "lam_med": 1379.8409243973915}, {"file": "ody239010_x1d.fits", "star": "LIN 78", "mode": "E140M", "nominal": 8.453005720676801e-15, "lam_med": 1379.695193652566}, {"file": "ody240010_x1d.fits", "star": "AzV 296", "mode": "E140M", "nominal": 6.954028470702052e-15, "lam_med": 1379.9414920877591}, {"file": "ody241010_x1d.fits", "star": "[MA93] 1694", "mode": "E140M", "nominal": 5.132734234224089e-15, "lam_med": 1379.6544133651971}, {"file": "odzy10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.613489047370075e-15, "lam_med": 1380.5892524309024}, {"file": "odzy10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.2246124057935685e-12, "lam_med": 2696.242184978629}, {"file": "odzy10030_x1d.fits", "star": "* alf Cen B", "mode": "E140H", "nominal": 1.1780923122359012e-15, "lam_med": 1289.699308710705, "rec": [0.045454545454545456, 0.2727272727272727, 0.6590909090909091, 0.7380952380952381, 0.8409090909090909, 0.8095238095238095]}, {"file": "odzy10040_x1d.fits", "star": "* alf Cen B", "mode": "E140H", "nominal": 1.812270679012374e-15, "lam_med": 1478.1948450945144}, {"file": "odzy10050_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 8.242120320462045e-14, "lam_med": 2696.2047204687537}, {"file": "odzy11010_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 4.557629206052576e-15, "lam_med": 1289.257265334986}, {"file": "odzy11020_x1d.fits", "star": "* alf CMi", "mode": "E140H", "nominal": 1.4342079265177572e-14, "lam_med": 1476.8641605456985}, {"file": "odzy11030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 4.487275618717863e-12, "lam_med": 2695.925094222868}, {"file": "oe1i01010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0528515385217038e-14, "lam_med": 2632.9405802070487}, {"file": "oe1i01020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.2430661441296868e-14, "lam_med": 2633.029977202694}, {"file": "oe1i01030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.5699102066942723e-14, "lam_med": 2632.9901616298976}, {"file": "oe1i01040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.993118403903118e-14, "lam_med": 2632.9933820048705}, {"file": "oe1i01050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.7596651980921033e-14, "lam_med": 2632.9513149610575, "rec": [0.0, 0.0, 0.20833333333333334, 0.3333333333333333, 0.4166666666666667, 0.7916666666666666]}, {"file": "oe1i01060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.5439019096232446e-14, "lam_med": 2632.991941344374}, {"file": "oe1i01070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 7.509731195283766e-15, "lam_med": 2632.9464346239674}, {"file": "oe1i01080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.813460726979896e-15, "lam_med": 2632.9918763889423}, {"file": "oe1i02010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0379572756593956e-14, "lam_med": 2632.705350099567}, {"file": "oe1i03010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.178554214804604e-14, "lam_med": 2632.5775767753844}, {"file": "oe1i03020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.706331112049966e-14, "lam_med": 2632.6652854695076}, {"file": "oe1i03030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.2572312102380904e-14, "lam_med": 2632.6230337216402}, {"file": "oe1i03040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.318054237274687e-14, "lam_med": 2632.583613988936}, {"file": "oe1i03050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.8674445834342714e-14, "lam_med": 2632.5594597181166}, {"file": "oe1i03060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1258624196196386e-14, "lam_med": 2632.5775567304}, {"file": "oe1i03070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.933903241917743e-15, "lam_med": 2632.6436477858488}, {"file": "oe1i03080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.925074030976256e-15, "lam_med": 2632.557507157251}, {"file": "oe1i04010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.705831749437444e-15, "lam_med": 2632.555118250976}, {"file": "oe1i04020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.9427329030385648e-14, "lam_med": 2632.6299620997793}, {"file": "oe1i04030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.8032920595646358e-14, "lam_med": 2632.60733633328}, {"file": "oe1i04040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.067565141567413e-14, "lam_med": 2632.5653011116874}, {"file": "oe1i04050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.398341469595731e-14, "lam_med": 2632.5414908089806}, {"file": "oe1i04060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.274588083218495e-14, "lam_med": 2632.5453659197046}, {"file": "oe1i04070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 7.62946145696445e-15, "lam_med": 2632.6360634498296}, {"file": "oe1i04080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.526983338886572e-15, "lam_med": 2632.551058167676}, {"file": "oe1i52010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.454461343746537e-15, "lam_med": 2632.667988632511}, {"file": "oe1i52020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.977573078067882e-14, "lam_med": 2632.738853460012}, {"file": "oe1i52030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.795393783271809e-14, "lam_med": 2632.7160820230692}, {"file": "oe1i52040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.981057682747514e-14, "lam_med": 2632.673647142058}, {"file": "oe1i52050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.2469059103970886e-14, "lam_med": 2632.6494868154896}, {"file": "oe1i52060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1870859509498175e-14, "lam_med": 2632.6524022739436}, {"file": "oe1i52070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 7.37653602313221e-15, "lam_med": 2632.736738111261}, {"file": "oe1i52080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.218418771877339e-15, "lam_med": 2632.650212719663}, {"file": "oe3k01010_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 4.264738086743952e-15, "lam_med": 2632.6963802210466}, {"file": "oe3k01020_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.850310826840727e-15, "lam_med": 2632.785238011473}, {"file": "oe3k01030_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.862188437114275e-15, "lam_med": 2632.79234165886, "rec": [0.0, 0.4166666666666667, 0.7916666666666666, 0.6666666666666666, 0.9166666666666666, 0.9583333333333334]}, {"file": "oe3k02010_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 4.3509464020289235e-15, "lam_med": 2632.746167179004}, {"file": "oe3k02020_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.888279041658113e-15, "lam_med": 2632.7954171378487}, {"file": "oe3k02030_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.895253453991187e-15, "lam_med": 2632.8010599219056}, {"file": "oe3k03010_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 4.194697020859896e-15, "lam_med": 2632.661368502295, "rec": [0.0, 0.2916666666666667, 0.8333333333333334, 0.6666666666666666, 0.8695652173913043, 0.9166666666666666]}, {"file": "oe3k03020_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.811130326988017e-15, "lam_med": 2632.6847254714653}, {"file": "oe3k03030_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.8298459507245794e-15, "lam_med": 2632.7127595386746}, {"file": "oe3k04010_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 4.127431517373288e-15, "lam_med": 2632.6787280089893}, {"file": "oe3k04020_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.703498448665851e-15, "lam_med": 2632.7147017924203}, {"file": "oe3k04030_x1d.fits", "star": "BD-11 160", "mode": "E230M", "nominal": 3.796099356678254e-15, "lam_med": 2632.6930152836903}, {"file": "oe3k05010_x1d.fits", "star": "CD-59 1105", "mode": "E230M", "nominal": 4.36546853292955e-15, "lam_med": 2632.9242002016426}, {"file": "oe3k05020_x1d.fits", "star": "CD-59 1105", "mode": "E230M", "nominal": 3.977794799875532e-15, "lam_med": 2632.901229619615}, {"file": "oe3k06010_x1d.fits", "star": "CD-59 1105", "mode": "E230M", "nominal": 4.389888477010811e-15, "lam_med": 2632.363002358253}, {"file": "oe3k06020_x1d.fits", "star": "CD-59 1105", "mode": "E230M", "nominal": 4.016380207208561e-15, "lam_med": 2632.6561097226986}, {"file": "oe3k07010_x1d.fits", "star": "CD-59 1105", "mode": "E230M", "nominal": 4.303501095872054e-15, "lam_med": 2632.9477276479392}, {"file": "oe3s04010_x1d.fits", "star": "* eta Car", "mode": "E230M", "nominal": 1.4973374508886038e-13, "lam_med": 1917.662868805047}, {"file": "oe3s04020_x1d.fits", "star": "* eta Car", "mode": "E140M", "nominal": 9.158403397689217e-14, "lam_med": 1380.3980717596028}, {"file": "oe4303010_x1d.fits", "star": "LBQS 1145+0145", "mode": "E230M", "nominal": 1.732643176929446e-15, "lam_med": 2632.676312638753}, {"file": "oe4303020_x1d.fits", "star": "LBQS 1145+0145", "mode": "E230M", "nominal": 1.6016751339071958e-15, "lam_med": 2632.6987351109283}, {"file": "oe4303030_x1d.fits", "star": "LBQS 1145+0145", "mode": "E230M", "nominal": 1.6767531144197799e-15, "lam_med": 2632.696190196478, "rec": [0.08333333333333333, 0.625, 0.8333333333333334, 1.0, 1.0, 1.0]}, {"file": "oe4b05010_x1d.fits", "star": "CD-41 11034", "mode": "E140M", "nominal": 4.075940148879566e-14, "lam_med": 1379.4300848354308}, {"file": "oe4b05020_x1d.fits", "star": "CD-41 11034", "mode": "E230M", "nominal": 5.0332451996590227e-14, "lam_med": 1917.5516755710682}, {"file": "oe4b07010_x1d.fits", "star": "HD 14476", "mode": "E140M", "nominal": 2.4400472717049353e-14, "lam_med": 1380.3819359850506}, {"file": "oe4b07020_x1d.fits", "star": "HD 14476", "mode": "E230M", "nominal": 3.6169484743209755e-14, "lam_med": 1917.343551134309}, {"file": "oe4b08010_x1d.fits", "star": "BD-21 1882", "mode": "E140M", "nominal": 3.649654977313774e-14, "lam_med": 1380.1182744151572}, {"file": "oe4b08020_x1d.fits", "star": "BD-21 1882", "mode": "E230M", "nominal": 4.588273101848313e-14, "lam_med": 1917.3180023476777}, {"file": "oe4h01010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 3.4438933398277812e-15, "lam_med": 1379.5288840158873}, {"file": "oe4h01020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 9.57439167353097e-16, "lam_med": 1379.5720548571642}, {"file": "oe4h02010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.6002526355250166e-15, "lam_med": 1379.3006863547334}, {"file": "oe4h02020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.734101059014419e-15, "lam_med": 1379.3227517831745}, {"file": "oe4h02030_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.967108145994189e-15, "lam_med": 1379.4035908942844}, {"file": "oe4h03010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 9.320905872267603e-16, "lam_med": 1379.2438564010706, "rec": [0.07894736842105263, 0.21951219512195122, 0.25, 0.5116279069767442, 0.47619047619047616, 0.6341463414634146]}, {"file": "oe4h04010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 7.500908608116839e-16, "lam_med": 1380.118969901292}, {"file": "oe4h04020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.002714595116731e-15, "lam_med": 1380.1132107098194}, {"file": "oe4h04030_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.3760037027141953e-15, "lam_med": 1380.4700685198657}, {"file": "oe4h04040_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.7848392091606253e-15, "lam_med": 1380.7460284028703}, {"file": "oe4h04050_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.080675952146301e-15, "lam_med": 1380.6177166888676}, {"file": "oe4h05010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.3855659076400518e-15, "lam_med": 1380.0552254914746}, {"file": "oe4v08010_x1d.fits", "star": "HD 110058", "mode": "E140H", "nominal": 7.484963249622086e-15, "lam_med": 1553.802106419154}, {"file": "oe4v08020_x1d.fits", "star": "HD 110058", "mode": "E140H", "nominal": 5.935061672238686e-15, "lam_med": 1553.7801292692748, "rec": [0.03125, 0.3548387096774194, 0.6875, 0.90625, 0.9375, 1.0]}, {"file": "oe4v08030_x1d.fits", "star": "HD 110058", "mode": "E140H", "nominal": 6.0772986728137176e-15, "lam_med": 1553.8671103091385}, {"file": "oe4v09010_x1d.fits", "star": "HD 131488", "mode": "E230H", "nominal": 3.554435705685562e-14, "lam_med": 1754.1859963819684}, {"file": "oe4v09020_x1d.fits", "star": "HD 131488", "mode": "E140H", "nominal": 9.198391497495714e-15, "lam_med": 1553.8557104687577}, {"file": "oe4v09030_x1d.fits", "star": "HD 131488", "mode": "E230H", "nominal": 1.2375103652129307e-14, "lam_med": 2459.1494879063343}, {"file": "oe4v09040_x1d.fits", "star": "HD 131488", "mode": "E230H", "nominal": 1.50211550648671e-14, "lam_med": 2907.260056049983}, {"file": "oe4v10010_x1d.fits", "star": "HD 110058", "mode": "E230H", "nominal": 3.352751562576353e-14, "lam_med": 1754.2825837647756}, {"file": "oe4v10020_x1d.fits", "star": "HD 110058", "mode": "E230H", "nominal": 1.3124832011411152e-14, "lam_med": 2459.0219117894253}, {"file": "oe4v10030_x1d.fits", "star": "HD 110058", "mode": "E230H", "nominal": 1.551575997942391e-14, "lam_med": 2907.251930219275}, {"file": "oe4v11010_x1d.fits", "star": "HD 110058", "mode": "E230H", "nominal": 3.472704263314538e-14, "lam_med": 1754.188938539165}, {"file": "oe4x01010_x1d.fits", "star": "SK 183", "mode": "E140M", "nominal": 1.119898325739405e-14, "lam_med": 1380.0672919685694}, {"file": "oe4x03010_x1d.fits", "star": "Dachs SMC 3-10", "mode": "E140M", "nominal": 5.512453868103949e-15, "lam_med": 1379.7951769946978}, {"file": "oe4x04010_x1d.fits", "star": "Cl* NGC 346 SSN 25", "mode": "E140M", "nominal": 5.450169305713009e-15, "lam_med": 1379.2066114417407}, {"file": "oe4x08010_x1d.fits", "star": "MOA J010321.3-720538", "mode": "E140M", "nominal": 1.2034617725879032e-14, "lam_med": 1380.1945196931704}, {"file": "oe4x10010_x1d.fits", "star": "BBB SMC 266", "mode": "E140M", "nominal": 1.1633823380135472e-14, "lam_med": 1380.4325343554524}, {"file": "oe4x14010_x1d.fits", "star": "SK 148", "mode": "E140M", "nominal": 1.1509742657509183e-14, "lam_med": 1380.227824089189}, {"file": "oe4x15010_x1d.fits", "star": "SK 107", "mode": "E140M", "nominal": 1.3933600717144679e-14, "lam_med": 1380.3367912211618}, {"file": "oe4x16010_x1d.fits", "star": "LIN 547", "mode": "E140M", "nominal": 1.6323725411217187e-14, "lam_med": 1379.3161895878495}, {"file": "oe4x17010_x1d.fits", "star": "SK 35", "mode": "E140M", "nominal": 1.5508028126457994e-14, "lam_med": 1379.6068305709282}, {"file": "oe4x18010_x1d.fits", "star": "Cl* NGC 346 W 4", "mode": "E140M", "nominal": 1.0131664145705513e-14, "lam_med": 1379.8827173802488, "rec": [0.0, 0.6511627906976745, 0.8048780487804879, 0.95, 0.8604651162790697, 0.975609756097561]}, {"file": "oe5c53010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6288031810701064e-14, "lam_med": 2257.8216687864697}, {"file": "oe5c53020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.965365027502676e-13, "lam_med": 1379.9400087005658}, {"file": "oe5c53030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.773588011628861e-14, "lam_med": 2633.002044231396}, {"file": "oe5c53040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7653497194642715e-13, "lam_med": 1917.4708579644607}, {"file": "oe5c53050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.814981400941942e-14, "lam_med": 1414.8810993312923}, {"file": "oe5c54010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6419471893283758e-14, "lam_med": 2257.668109674658}, {"file": "oe5c54020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9583209903259888e-13, "lam_med": 1380.1824924245325}, {"file": "oe5c54030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.732762627208901e-14, "lam_med": 2632.7388107751303}, {"file": "oe5c54040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7653434504223549e-13, "lam_med": 1917.3025163354814}, {"file": "oe5c54050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.767643876812909e-14, "lam_med": 1414.8302608898164}, {"file": "oe5ce1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.628860732442477e-14, "lam_med": 2257.797341171772}, {"file": "oe5ce1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9471524446895938e-13, "lam_med": 1380.6725521208784}, {"file": "oe5ce1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.726862422058965e-14, "lam_med": 2632.774858545232}, {"file": "oe5ce1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7203544051795666e-13, "lam_med": 1917.3621935742328}, {"file": "oe5ce1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.477404166673989e-14, "lam_med": 1414.8839771574635}, {"file": "oe5ce2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6348541411096768e-14, "lam_med": 2258.0872886669863}, {"file": "oe5ce2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9542580395562288e-13, "lam_med": 1380.277390897707, "rec": [0.0, 0.47619047619047616, 0.6904761904761905, 0.9047619047619048, 0.9, 0.9523809523809523]}, {"file": "oe5ce2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.711774566514007e-14, "lam_med": 2632.211516950672}, {"file": "oe5ce2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.732056354307472e-13, "lam_med": 1917.6077370675469}, {"file": "oe5ce2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.60940185961078e-14, "lam_med": 1415.0550632673637}, {"file": "oe5ce4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 4.494310668332571e-15, "lam_med": 2257.9501463781407}, {"file": "oe5ce4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 3.891319568639719e-18, "lam_med": 1380.506082053978}, {"file": "oe5ce4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 4.795026524808282e-15, "lam_med": 2617.062790262891}, {"file": "oe5ce4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 2.08762313799013e-14, "lam_med": 1917.3873728124659}, {"file": "oe5ce4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 2.019347988038848e-18, "lam_med": 1414.3606969872774}, {"file": "oe6f01010_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 1.270993633894318e-13, "lam_med": 1585.088110147704, "rec": [0.03125, 0.22580645161290322, 0.41935483870967744, 0.7419354838709677, 0.8387096774193549, 0.84375]}, {"file": "oe6f01020_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 8.556745485721785e-14, "lam_med": 1414.6883010045922}, {"file": "oe6f01030_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 6.139866766541292e-14, "lam_med": 1228.6671301337233}, {"file": "oe6f02010_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 1.2012432133362795e-13, "lam_med": 1585.211144117248}, {"file": "oe6f02020_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 8.890373674886919e-14, "lam_med": 1414.7255656862371}, {"file": "oe6f02030_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 4.8825109016558634e-14, "lam_med": 1228.6597469142632}, {"file": "oe6f03010_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 9.663862642817145e-14, "lam_med": 1585.0495993904458}, {"file": "oe6f03020_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 8.118692443943625e-14, "lam_med": 1414.6839557882167}, {"file": "oe6f03030_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 4.465971628322835e-14, "lam_med": 1228.4932674031966}, {"file": "oe6f04010_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 1.0432101229654117e-13, "lam_med": 1585.14150096239}, {"file": "oe6f04020_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 7.716417431454348e-14, "lam_med": 1414.6021585953686}, {"file": "oe6f04030_x1d.fits", "star": "* eta Car", "mode": "E140H", "nominal": 4.759302777070604e-14, "lam_med": 1228.532005705947}, {"file": "oe8m01010_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 4.205154066211666e-18, "lam_med": 1253.9610030607164}, {"file": "oe8m01020_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 1.0696397150320984e-17, "lam_med": 1253.9653744489842}, {"file": "oe8m01030_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 4.097782246147765e-16, "lam_med": 1253.6538376623803}, {"file": "oe8m01040_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 6.798348944735816e-16, "lam_med": 1253.7708569293677}, {"file": "oe8m51010_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 4.933839006085714e-18, "lam_med": 1253.7047907843653}, {"file": "oe8m51020_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 3.4526074856875287e-16, "lam_med": 1253.3738433739122}, {"file": "oe8m51030_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 7.446368014786221e-16, "lam_med": 1253.8585066587266}, {"file": "oe8m51040_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 1.0829536270044602e-15, "lam_med": 1254.1848629622916}, {"file": "oe8m51050_x1d.fits", "star": "* pi. Men", "mode": "E140H", "nominal": 1.3373920548571983e-15, "lam_med": 1254.1322444247396}, {"file": "oe8s01010_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 2.1090250483668622e-11, "lam_med": 1380.3579394387393}, {"file": "oe8s01020_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.933387510117082e-11, "lam_med": 1380.255794481086, "rec": [0.012195121951219513, 0.3575757575757576, 0.7108433734939759, 0.875, 0.8902439024390244, 0.9329268292682927]}, {"file": "oe8s01030_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.925612018450913e-11, "lam_med": 1380.3157564101314}, {"file": "oe8s01040_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.9130044971531522e-11, "lam_med": 1380.3305404039293}, {"file": "oe8s01050_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.914988271258406e-11, "lam_med": 1380.3303408263585, "rec": [0.01764705882352941, 0.375, 0.6787878787878788, 0.8711656441717791, 0.93125, 0.9418604651162791]}, {"file": "oe8s02010_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 2.0874244904865288e-11, "lam_med": 1380.3773529426048}, {"file": "oe8s02050_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.898242690125147e-11, "lam_med": 1380.3930227815758}, {"file": "oe8s03010_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 2.042757940549997e-11, "lam_med": 1380.2741501453402}, {"file": "oe8s03020_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.844776189588912e-11, "lam_med": 1380.185211748209}, {"file": "oe8s03030_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.854238786047925e-11, "lam_med": 1380.245310954066}, {"file": "oe8s03040_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.8618470574151432e-11, "lam_med": 1380.11177078142}, {"file": "oe8s03050_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.8760236711752045e-11, "lam_med": 1380.1127430144638}, {"file": "oe8s04010_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 2.1208650780746525e-11, "lam_med": 1380.228513692843}, {"file": "oe8s04020_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.9231853673495888e-11, "lam_med": 1380.1032105601898}, {"file": "oe8s04030_x1d.fits", "star": "* zet Oph", "mode": "E140M", "nominal": 1.9596339896870578e-11, "lam_med": 1380.121036753237}, {"file": "oe9101010_x1d.fits", "star": "HD 134004", "mode": "E230M", "nominal": 1.98727468393347e-14, "lam_med": 2632.6859206640383, "rec": [0.017857142857142856, 0.3072289156626506, 0.5421686746987951, 0.7409638554216867, 0.9226190476190477, 0.9642857142857143]}, {"file": "oe9101020_x1d.fits", "star": "HD 134004", "mode": "E230M", "nominal": 1.97057376673463e-14, "lam_med": 2632.690432718402}, {"file": "oe9101030_x1d.fits", "star": "HD 134004", "mode": "E230M", "nominal": 1.970065028430309e-14, "lam_med": 2632.683057482051}, {"file": "oe9101040_x1d.fits", "star": "HD 134004", "mode": "E230M", "nominal": 2.0037053654364516e-14, "lam_med": 2632.677936425245}, {"file": "oe9101050_x1d.fits", "star": "HD 134004", "mode": "E230M", "nominal": 2.0275417725630808e-14, "lam_med": 2632.678607488305}, {"file": "oe9e1s010_x1d.fits", "star": "RMC 31", "mode": "E140M", "nominal": 2.2842921093027673e-14, "lam_med": 1380.8060018055467}, {"file": "oe9e2s010_x1d.fits", "star": "Cl* NGC 346 W 3", "mode": "E140M", "nominal": 1.3867812991968435e-14, "lam_med": 1379.1694965796594}, {"file": "oe9e2s020_x1d.fits", "star": "Cl* NGC 346 W 3", "mode": "E140M", "nominal": 1.2875171638087509e-14, "lam_med": 1379.740394902471}, {"file": "oe9f1s010_x1d.fits", "star": "RMC 17", "mode": "E230M", "nominal": 2.3637056409440933e-14, "lam_med": 1917.467120668106}, {"file": "oe9f1s020_x1d.fits", "star": "RMC 17", "mode": "E140M", "nominal": 1.4648556342791745e-14, "lam_med": 1380.167441166091}, {"file": "oe9f2s010_x1d.fits", "star": "SK 95", "mode": "E140M", "nominal": 1.1895397603924744e-14, "lam_med": 1378.8967020167006}, {"file": "oe9f2s020_x1d.fits", "star": "SK 95", "mode": "E140M", "nominal": 1.0889733088916379e-14, "lam_med": 1378.9103719967618}, {"file": "oe9f2t010_x1d.fits", "star": "SK 95", "mode": "E140M", "nominal": 1.1901405808251013e-14, "lam_med": 1378.6664819262314}, {"file": "oe9f2t020_x1d.fits", "star": "SK 95", "mode": "E230M", "nominal": 1.7529417513599883e-14, "lam_med": 1917.4553397870197}, {"file": "oe9f3s010_x1d.fits", "star": "SK 116", "mode": "E230M", "nominal": 2.0998044504240194e-14, "lam_med": 1917.4000514761942}, {"file": "oe9f3s020_x1d.fits", "star": "SK 116", "mode": "E140M", "nominal": 1.2805715334862156e-14, "lam_med": 1378.9173100386213}, {"file": "oe9f3s030_x1d.fits", "star": "SK 116", "mode": "E140M", "nominal": 1.2518815087620701e-14, "lam_med": 1379.0891878645402}, {"file": "oe9f4s010_x1d.fits", "star": "SK 159", "mode": "E230M", "nominal": 3.4817723284758923e-14, "lam_med": 1917.4780790294953}, {"file": "oe9f4s020_x1d.fits", "star": "SK 159", "mode": "E140M", "nominal": 3.622561938120786e-14, "lam_med": 1380.0819468929922}, {"file": "oe9f4s030_x1d.fits", "star": "SK 159", "mode": "E140M", "nominal": 1.6273522774912778e-14, "lam_med": 1379.2883620341395}, {"file": "oe9f5s010_x1d.fits", "star": "SK 35", "mode": "E230M", "nominal": 2.353826560801968e-14, "lam_med": 1917.4082655645816}, {"file": "oe9f5s020_x1d.fits", "star": "SK 35", "mode": "E140M", "nominal": 1.6151093648036304e-14, "lam_med": 1380.5553623384733}, {"file": "oe9p1s010_x1d.fits", "star": "SK 68", "mode": "E230M", "nominal": 1.839334375211353e-14, "lam_med": 1917.4965579261973}, {"file": "oe9p1s020_x1d.fits", "star": "SK 68", "mode": "E230M", "nominal": 1.666374485779041e-14, "lam_med": 1917.496236924994}, {"file": "oe9p2s010_x1d.fits", "star": "SK 81", "mode": "E230M", "nominal": 1.4215843060616885e-14, "lam_med": 1917.411862401789}, {"file": "oe9p2s020_x1d.fits", "star": "SK 81", "mode": "E230M", "nominal": 1.3060243406272016e-14, "lam_med": 1917.4104367819655}, {"file": "oe9p2t010_x1d.fits", "star": "SK 81", "mode": "E230M", "nominal": 1.5223387148397995e-14, "lam_med": 1917.4091518894418}, {"file": "oe9p2t020_x1d.fits", "star": "SK 81", "mode": "E230M", "nominal": 1.388327974764605e-14, "lam_med": 1917.378953294807}, {"file": "oe9p3s010_x1d.fits", "star": "Dachs SMC 2-8", "mode": "E230M", "nominal": 3.756362128479194e-15, "lam_med": 2632.9734639455887}, {"file": "oe9p4s010_x1d.fits", "star": "LHA 115-S 45", "mode": "E230M", "nominal": 2.1336797018838516e-14, "lam_med": 1917.4492166023397}, {"file": "oe9s1s010_x1d.fits", "star": "BI 272", "mode": "E140M", "nominal": 1.32980368765617e-14, "lam_med": 1379.1558612799486}, {"file": "oe9s1s020_x1d.fits", "star": "BI 272", "mode": "E140M", "nominal": 1.2144704827821576e-14, "lam_med": 1379.4218589398838}, {"file": "oe9s1s030_x1d.fits", "star": "BI 272", "mode": "E140M", "nominal": 1.2164586769828375e-14, "lam_med": 1379.4604770238075}, {"file": "oe9s2s010_x1d.fits", "star": "BI 37", "mode": "E140M", "nominal": 1.2395616893866305e-15, "lam_med": 1379.63399481077}, {"file": "oe9s3s010_x1d.fits", "star": "SK -67 118", "mode": "E140M", "nominal": 1.4552803046303562e-14, "lam_med": 1379.6603204192772}, {"file": "oe9s3s020_x1d.fits", "star": "SK -67 118", "mode": "E140M", "nominal": 1.3264434141735461e-14, "lam_med": 1379.4165413533701}, {"file": "oe9s4s010_x1d.fits", "star": "SK -68 16", "mode": "E140M", "nominal": 1.3363799688832492e-14, "lam_med": 1378.401687032163}, {"file": "oe9s4s020_x1d.fits", "star": "SK -68 16", "mode": "E140M", "nominal": 1.2118423648824299e-14, "lam_med": 1378.2915390392618}, {"file": "oe9s4t010_x1d.fits", "star": "SK -68 16", "mode": "E140M", "nominal": 1.3668659463598473e-14, "lam_med": 1379.2193994148322}, {"file": "oe9s4t020_x1d.fits", "star": "SK -68 16", "mode": "E140M", "nominal": 1.2453321681769125e-14, "lam_med": 1379.2267481530534}, {"file": "oe9sbs010_x1d.fits", "star": "BI 37", "mode": "E140M", "nominal": 1.1685880895555074e-14, "lam_med": 1379.5239657920988}, {"file": "oe9sbs030_x1d.fits", "star": "BI 37", "mode": "E140M", "nominal": 1.0604940937547962e-14, "lam_med": 1379.890269575843}, {"file": "oe9sgs010_x1d.fits", "star": "BI 37", "mode": "E140M", "nominal": 1.177774375723686e-14, "lam_med": 1379.5900268056876}, {"file": "oeae10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.082158137427352e-15, "lam_med": 1380.406305572636}, {"file": "oeae10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.2155526727067245e-12, "lam_med": 2696.392264701247}, {"file": "oeae10030_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 7.849808808930397e-14, "lam_med": 2696.3971880277863}, {"file": "oeae10040_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 3.9930801303272895e-15, "lam_med": 1380.4403746482574, "rec": [0.0, 0.09523809523809523, 0.2962962962962963, 0.524390243902439, 0.6265060240963856, 0.8271604938271605]}, {"file": "oeae11010_x1d.fits", "star": "* alf CMi", "mode": "E140M", "nominal": 1.636378011888409e-14, "lam_med": 1379.8139969911917}, {"file": "oeae11030_x1d.fits", "star": "* alf CMi", "mode": "E230H", "nominal": 4.45362036501549e-12, "lam_med": 2695.9283796754253}, {"file": "oeb71s010_x1d.fits", "star": "Brey 77", "mode": "E140M", "nominal": 8.653725012891235e-15, "lam_med": 1378.667015980361}, {"file": "oeb71s020_x1d.fits", "star": "Brey 77", "mode": "E140M", "nominal": 7.859393344242374e-15, "lam_med": 1378.7296004387802}, {"file": "oeb71t010_x1d.fits", "star": "Brey 77", "mode": "E140M", "nominal": 8.495086261597216e-15, "lam_med": 1379.1841987325415}, {"file": "oeb71t020_x1d.fits", "star": "Brey 77", "mode": "E140M", "nominal": 7.736119615180426e-15, "lam_med": 1379.0623543447975}, {"file": "oeb72s010_x1d.fits", "star": "[L72] LH 114-7", "mode": "E140M", "nominal": 1.2844197923158716e-14, "lam_med": 1379.2216128195303}, {"file": "oeb72s020_x1d.fits", "star": "[L72] LH 114-7", "mode": "E140M", "nominal": 1.1702727999444698e-14, "lam_med": 1379.2629279937514}, {"file": "oeb73s010_x1d.fits", "star": "SK -67 108", "mode": "E140M", "nominal": 1.914356182686206e-14, "lam_med": 1379.5136652951644, "rec": [0.023809523809523808, 0.34146341463414637, 0.7073170731707317, 0.7317073170731707, 0.8837209302325582, 0.8571428571428571]}, {"file": "oeb73s020_x1d.fits", "star": "SK -67 108", "mode": "E140M", "nominal": 1.7497365256290693e-14, "lam_med": 1379.6104880389184}, {"file": "oeb74s010_x1d.fits", "star": "Brey 10a", "mode": "E140M", "nominal": 1.267942027754473e-14, "lam_med": 1379.0740887541028}, {"file": "oeb74s020_x1d.fits", "star": "Brey 10a", "mode": "E140M", "nominal": 1.1733776203569502e-14, "lam_med": 1379.2442926591382}, {"file": "oeb74s030_x1d.fits", "star": "Brey 10a", "mode": "E140M", "nominal": 1.1849702418581653e-14, "lam_med": 1379.5544132640564}, {"file": "oeb802010_x1d.fits", "star": "* eta Car", "mode": "E230M", "nominal": 2.1790166403012592e-13, "lam_med": 1917.653197348346}, {"file": "oeb802020_x1d.fits", "star": "* eta Car", "mode": "E140M", "nominal": 1.3521889952770118e-13, "lam_med": 1380.359577724244}, {"file": "oec103010_x1d.fits", "star": "HD 32228", "mode": "E140M", "nominal": 9.694474748667543e-15, "lam_med": 1379.5135605866606}, {"file": "oec105010_x1d.fits", "star": "HD 35517", "mode": "E140M", "nominal": 1.7958572099711894e-14, "lam_med": 1379.9843888580701}, {"file": "oec107010_x1d.fits", "star": "HD 36521", "mode": "E140M", "nominal": 1.7979960019560927e-14, "lam_med": 1380.1694120167801}, {"file": "oec112010_x1d.fits", "star": "HD 38030", "mode": "E140M", "nominal": 9.232078383728463e-15, "lam_med": 1380.6030177324485}, {"file": "oec117010_x1d.fits", "star": "RMC 140", "mode": "E140M", "nominal": 6.244806224565085e-18, "lam_med": 1381.1358501831614}, {"file": "oec121010_x1d.fits", "star": "BSDL 2747", "mode": "E140M", "nominal": 8.532987460740846e-15, "lam_med": 1379.9789684534505}, {"file": "oec159010_x1d.fits", "star": "RMC 140", "mode": "E140M", "nominal": 8.731878993093146e-15, "lam_med": 1380.842727771681, "rec": [0.0, 0.4146341463414634, 0.6744186046511628, 0.9024390243902439, 0.8837209302325582, 0.9767441860465116]}, {"file": "oecb10050_x1d.fits", "star": "HD 149026", "mode": "E230M", "nominal": 6.3593347125800144e-15, "lam_med": 2631.7111295122513, "rec": [0.0, 0.5, 0.9166666666666666, 1.0, 0.9583333333333334, 1.0]}, {"file": "oecbz1050_x1d.fits", "star": "HD 149026", "mode": "E230M", "nominal": 1.51865383644158e-14, "lam_med": 2632.2789483823344}, {"file": "oecf01010_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.533991739009673e-14, "lam_med": 2632.840789420102}, {"file": "oecf01020_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.495254657730782e-14, "lam_med": 2632.836949113425}, {"file": "oecf01030_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.487139900708082e-14, "lam_med": 2632.83374325508}, {"file": "oecf01040_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.512360149984022e-14, "lam_med": 2632.8351233711246}, {"file": "oecf01050_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.549463183457764e-14, "lam_med": 2632.8363736570714}, {"file": "oecf03010_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.459432871940691e-14, "lam_med": 2632.742114890054}, {"file": "oecf03020_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.441737556771094e-14, "lam_med": 2632.749217367026}, {"file": "oecf03030_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.4398140434034846e-14, "lam_med": 2632.750909708188}, {"file": "oecf03040_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.440010928897517e-14, "lam_med": 2632.750235313505}, {"file": "oecf03050_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.4577518565661744e-14, "lam_med": 2632.7505679830256}, {"file": "oecf04010_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.4829686543411373e-14, "lam_med": 2632.7638342704263}, {"file": "oecf04020_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.4753723951866284e-14, "lam_med": 2632.7734733835573}, {"file": "oecf04030_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.477769355876357e-14, "lam_med": 2632.7783418118474}, {"file": "oecf04040_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.4859591555523776e-14, "lam_med": 2632.783058530271}, {"file": "oecf04050_x1d.fits", "star": "HD 201585", "mode": "E230M", "nominal": 3.4878028321881345e-14, "lam_med": 2632.7877041528855}, {"file": "oecfz2010_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.586254537484108e-14, "lam_med": 2632.909929696731}, {"file": "oecfz2020_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.559288923106752e-14, "lam_med": 2632.9216116338357}, {"file": "oecfz2030_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.568387777759153e-14, "lam_med": 2632.9234014910785}, {"file": "oecfz2040_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.599240414663046e-14, "lam_med": 2632.92577192439}, {"file": "oecfz2050_x1d.fits", "star": "HD 195689", "mode": "E230M", "nominal": 6.60716392842787e-14, "lam_med": 2632.9297641754392}, {"file": "oedg1a010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 3.1076454084045985e-14, "lam_med": 1253.8883980566277}, {"file": "oedg1b010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 3.073243963865426e-14, "lam_med": 1253.6462888150745}, {"file": "oedg2a010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.232189872204624e-14, "lam_med": 1228.1520839029672}, {"file": "oedg2b010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.23246075846278e-14, "lam_med": 1227.9138721619383}, {"file": "oedg2c010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.2353720681706943e-14, "lam_med": 1227.6979441043693}, {"file": "oedg2d010_x1d.fits", "star": "V* S Mus", "mode": "E140H", "nominal": 2.2756747657218604e-14, "lam_med": 1227.90713889929}, {"file": "oedg3a010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.315029102064599e-14, "lam_med": 1227.629427144487}, {"file": "oedg3b010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.2938207497618933e-14, "lam_med": 1227.749124836259}, {"file": "oedj01010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2077426126336252e-14, "lam_med": 1380.088701223676}, {"file": "oedj01020_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.8954524772467245e-14, "lam_med": 1380.438052323196}, {"file": "oedj01030_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2004849293292677e-14, "lam_med": 1380.171309878956}, {"file": "oedj01040_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.4557979055714225e-14, "lam_med": 1380.2306301274582}, {"file": "oedj01050_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.201444116917543e-14, "lam_med": 1380.0596996399536}, {"file": "oedj01060_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.8993890847774544e-14, "lam_med": 1380.1863665292292}, {"file": "oedj01070_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2046340351300973e-14, "lam_med": 1379.9416248273026}, {"file": "oedj01080_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.454130223692066e-14, "lam_med": 1380.222673869836}, {"file": "oedj01090_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2143715852357917e-14, "lam_med": 1379.8749450105854}, {"file": "oedj010a0_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.6293669241594568e-14, "lam_med": 1380.3127950909525}, {"file": "oedj02010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.194263016356833e-14, "lam_med": 1380.0645392225392}, {"file": "oedj02020_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2005805409139348e-14, "lam_med": 1380.2791864806054, "rec": [0.0, 0.375, 0.575, 0.8048780487804879, 0.8780487804878049, 0.8809523809523809]}, {"file": "oedj02030_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2045625946154103e-14, "lam_med": 1380.3905524206295}, {"file": "oedj02040_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.203489351064598e-14, "lam_med": 1380.5836482805043}, {"file": "oedj02050_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.203417412424648e-14, "lam_med": 1380.3979311328703}, {"file": "oedj02060_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.70025319195339e-14, "lam_med": 1380.5757724548284}, {"file": "oedj03010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.211673678187871e-14, "lam_med": 1380.4430012671662}, {"file": "oedj03020_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.209828620168537e-14, "lam_med": 1380.5480926308942}, {"file": "oedj03030_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2163844949429752e-14, "lam_med": 1380.3715822241074}, {"file": "oedj03040_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2114844909495227e-14, "lam_med": 1380.5038368463622}, {"file": "oedj03050_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.221444882172818e-14, "lam_med": 1380.2084932802734}, {"file": "oedj03060_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2158496054168084e-14, "lam_med": 1380.433287511533}, {"file": "oedj03070_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.225105073547349e-14, "lam_med": 1380.2087953301161}, {"file": "oedj03080_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 3.007104571425091e-14, "lam_med": 1380.4224786272455}, {"file": "oedj04010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.1801950413175916e-14, "lam_med": 1380.2404758062005}, {"file": "oedj04020_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.1777179929255534e-14, "lam_med": 1380.3072814040981}, {"file": "oedj04030_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.1975072722914262e-14, "lam_med": 1380.1433703895805}, {"file": "oedj04040_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.5327099160309476e-14, "lam_med": 1380.2312754900654}, {"file": "oedj040a0_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 3.5299613811142716e-14, "lam_med": 1380.5983406658283}, {"file": "oedj05010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.266620114083597e-14, "lam_med": 1380.2049352594831}, {"file": "oedj05020_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.1727891028704778e-14, "lam_med": 1380.4411728989194}, {"file": "oedj05030_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 5.956192155235521e-14, "lam_med": 1380.6472817761774}, {"file": "oedj05040_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.1939945691338736e-14, "lam_med": 1380.3809695972946}, {"file": "oedj05050_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 5.998408586828716e-14, "lam_med": 1380.5900203781998}, {"file": "oedj06010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2283985388042834e-14, "lam_med": 1379.6246220979062}, {"file": "oedj06020_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.187927593745033e-14, "lam_med": 1380.313974557348}, {"file": "oedj06030_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 5.983372326325327e-14, "lam_med": 1380.52013626072}, {"file": "oedj07010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.2291121964835177e-14, "lam_med": 1379.6932100955962}, {"file": "oedj07020_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.1757461025104024e-14, "lam_med": 1379.931439790773}, {"file": "oedj07030_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 5.930618293194433e-14, "lam_med": 1380.058851469741}, {"file": "oedj08010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.3116037776667502e-14, "lam_med": 1379.7493904396902}, {"file": "oedja8010_x1d.fits", "star": "HD 269698", "mode": "E140M", "nominal": 2.3205375605111954e-14, "lam_med": 1380.1279387372083}, {"file": "oedl01010_x1d.fits", "star": "HD 216898", "mode": "E140H", "nominal": 1.2163057347167524e-14, "lam_med": 1289.663328133406}, {"file": "oedl01020_x1d.fits", "star": "HD 216898", "mode": "E230H", "nominal": 5.466693596409863e-15, "lam_med": 2257.9057642729094}, {"file": "oedl02010_x1d.fits", "star": "HD 14434", "mode": "E230H", "nominal": 1.0931029691659253e-14, "lam_med": 2258.1545475749795}, {"file": "oedl04010_x1d.fits", "star": "V* V379 Cep", "mode": "E140H", "nominal": 8.098408662405729e-14, "lam_med": 1289.7528479216135}, {"file": "oedl04020_x1d.fits", "star": "V* V379 Cep", "mode": "E230H", "nominal": 2.1127354671236873e-14, "lam_med": 2257.92350722874}, {"file": "oedl05010_x1d.fits", "star": "HD 152249", "mode": "E230H", "nominal": 2.968122527774469e-14, "lam_med": 2257.7882121119533}, {"file": "oedl06010_x1d.fits", "star": "HD 190603", "mode": "E140H", "nominal": 2.893648879769268e-14, "lam_med": 1289.4768109721322}, {"file": "oedl06020_x1d.fits", "star": "HD 190603", "mode": "E230H", "nominal": 2.5300751422808983e-14, "lam_med": 2258.063471445321}, {"file": "oedl07010_x1d.fits", "star": "HD 192639", "mode": "E230H", "nominal": 7.928714343774908e-15, "lam_med": 2258.001552734786}, {"file": "oedl08010_x1d.fits", "star": "HD 203938", "mode": "E140H", "nominal": 1.447350764193401e-14, "lam_med": 1289.304634860635}, {"file": "oedl08020_x1d.fits", "star": "HD 203938", "mode": "E230H", "nominal": 7.964131923856204e-15, "lam_med": 2257.9155915796136, "rec": [0.0, 0.5609756097560976, 0.9512195121951219, 0.9878048780487805, 1.0, 0.9878048780487805]}, {"file": "oedl09010_x1d.fits", "star": "HD 239729", "mode": "E140H", "nominal": 1.0043722085149237e-14, "lam_med": 1289.3269476699006}, {"file": "oedl09020_x1d.fits", "star": "HD 239729", "mode": "E230H", "nominal": 8.04338128005142e-15, "lam_med": 2257.9005186949926}, {"file": "oedl10010_x1d.fits", "star": "HD 93250", "mode": "E140H", "nominal": 8.046564718518044e-14, "lam_med": 1289.7162989560532}, {"file": "oedl10020_x1d.fits", "star": "HD 93250", "mode": "E230H", "nominal": 2.930297085943607e-14, "lam_med": 2258.092037987123}, {"file": "oedl11010_x1d.fits", "star": "HD 152723", "mode": "E140H", "nominal": 8.369469548076878e-14, "lam_med": 1289.552288364906, "rec": [0.0, 0.36363636363636365, 0.5348837209302325, 0.7142857142857143, 0.8888888888888888, 0.8863636363636364]}, {"file": "oedl11020_x1d.fits", "star": "HD 152723", "mode": "E230H", "nominal": 3.2292796101820595e-14, "lam_med": 2257.8229836574246}, {"file": "oedl12010_x1d.fits", "star": "HD 168076", "mode": "E140H", "nominal": 1.326859209112246e-14, "lam_med": 1289.3589333750547}, {"file": "oedl12020_x1d.fits", "star": "HD 168076", "mode": "E230H", "nominal": 7.355392299979745e-15, "lam_med": 2258.1805880584166}, {"file": "oedl13010_x1d.fits", "star": "HD 149404", "mode": "E140H", "nominal": 9.483845582143963e-14, "lam_med": 1289.5172035286805}, {"file": "oedl13020_x1d.fits", "star": "HD 149404", "mode": "E230H", "nominal": 3.784980503625766e-14, "lam_med": 2257.741507118538}, {"file": "oedl14010_x1d.fits", "star": "HD 73882", "mode": "E140H", "nominal": 1.45399355311213e-14, "lam_med": 1289.3425998622379}, {"file": "oedl14020_x1d.fits", "star": "HD 73882", "mode": "E230H", "nominal": 1.295353021495514e-14, "lam_med": 2257.684790098525}, {"file": "oedl15010_x1d.fits", "star": "HD 37903", "mode": "E230H", "nominal": 2.1744076759263796e-14, "lam_med": 2258.02831082957}, {"file": "oedl16010_x1d.fits", "star": "HD 38087", "mode": "E140H", "nominal": 2.8014371072227424e-14, "lam_med": 1289.2855581993883}, {"file": "oedl16020_x1d.fits", "star": "HD 38087", "mode": "E230H", "nominal": 1.218710955081789e-14, "lam_med": 2257.8172761999085}, {"file": "oedl17010_x1d.fits", "star": "HD 200775", "mode": "E140H", "nominal": 1.6241440485474377e-14, "lam_med": 1289.5687384839912}, {"file": "oedl17020_x1d.fits", "star": "HD 200775", "mode": "E230H", "nominal": 5.803501939239235e-15, "lam_med": 2258.0948292067865}, {"file": "oedl18010_x1d.fits", "star": "HD 192639", "mode": "E230H", "nominal": 1.1780837780785198e-14, "lam_med": 2258.0398170410385}, {"file": "oedl19010_x1d.fits", "star": "HD 206267", "mode": "E230H", "nominal": 3.7275658448793084e-14, "lam_med": 2257.7717735782735}, {"file": "oedq01010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1521770338035509e-14, "lam_med": 2633.018666738433}, {"file": "oedq01020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.3129720725972578e-14, "lam_med": 2633.0632782042458}, {"file": "oedq01030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.2741388126303646e-14, "lam_med": 2633.0662868104955}, {"file": "oedq01040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.41066784521729e-14, "lam_med": 2633.0880761044236}, {"file": "oedq01050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.2504290913436162e-14, "lam_med": 2633.023783036542}, {"file": "oedq01060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1733747638072552e-14, "lam_med": 2633.0027755113424}, {"file": "oedq01070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 7.216019019716766e-15, "lam_med": 2633.047751186784}, {"file": "oedq01080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.609329639972688e-15, "lam_med": 2633.0055400371007}, {"file": "oedq02010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.107322470024003e-15, "lam_med": 2633.0045189794714}, {"file": "oedq02020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.7927892206477446e-15, "lam_med": 2633.09365981397}, {"file": "oedq02030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.868426043427044e-14, "lam_med": 2633.054518370705}, {"file": "oedq02040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.13758027788628e-14, "lam_med": 2633.092716894561}, {"file": "oedq02050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.5735106253761246e-14, "lam_med": 2633.0500015808257}, {"file": "oedq02060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2726107058783815e-14, "lam_med": 2633.006974362916}, {"file": "oedq02070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 7.886095063248092e-15, "lam_med": 2633.0980988156853}, {"file": "oedq02080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.788936220061065e-15, "lam_med": 2633.009699700014}, {"file": "oedq03010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 8.989705874714819e-15, "lam_med": 2632.6885258048533}, {"file": "oedq03030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.3527910320611307e-14, "lam_med": 2632.7123610178724}, {"file": "oedq03040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.8041120009905654e-14, "lam_med": 2632.672004397301}, {"file": "oedq03050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.8414213735048387e-14, "lam_med": 2632.6722157609074}, {"file": "oedq03060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.9206165033459842e-14, "lam_med": 2632.650913762688}, {"file": "oedq03070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0782108991721006e-14, "lam_med": 2632.6745719521255}, {"file": "oedq03080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 7.003326874579976e-15, "lam_med": 2632.6290967131067}, {"file": "oedq04010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 8.549535944980881e-15, "lam_med": 2632.649713229647}, {"file": "oedq52010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 8.010703347953483e-15, "lam_med": 2632.9476034021327, "rec": [0.0, 0.043478260869565216, 0.2916666666666667, 0.30434782608695654, 0.5, 0.7391304347826086]}, {"file": "oedq52020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.688292843963441e-14, "lam_med": 2633.0256872247887}, {"file": "oedq52030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.5445813295978975e-14, "lam_med": 2632.9846851475995}, {"file": "oedq52040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.9749303706625663e-14, "lam_med": 2633.024221791981}, {"file": "oedq52050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.7993711525801662e-14, "lam_med": 2632.981680182402}, {"file": "oedq52060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.599596854170929e-14, "lam_med": 2632.920085518408}, {"file": "oedq52070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.345012911832419e-15, "lam_med": 2633.0261583292513}, {"file": "oedq52080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.001993565234501e-15, "lam_med": 2632.9214757529467}, {"file": "oedq54010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.402542909008584e-15, "lam_med": 2633.1452512402684}, {"file": "oedq54020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.974626533972452e-14, "lam_med": 2633.1745036590764}, {"file": "oedq54030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.373392708859088e-14, "lam_med": 2633.195283792857}, {"file": "oedq54040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.697026875495651e-14, "lam_med": 2633.2000271903407}, {"file": "oedq54050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.230380344584988e-14, "lam_med": 2633.158519366945}, {"file": "oedq54060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.6519898681009547e-14, "lam_med": 2633.154789307467}, {"file": "oedq54070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 8.86035481754648e-15, "lam_med": 2633.1834064019686, "rec": [0.0, 0.125, 0.16666666666666666, 0.2916666666666667, 0.6086956521739131, 0.6666666666666666]}, {"file": "oedq54080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.277966589295948e-15, "lam_med": 2633.1613287683176}, {"file": "oedz01010_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 2.926398516797984e-14, "lam_med": 2744.467367219766}, {"file": "oedz01020_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 2.377723866883962e-14, "lam_med": 2744.459799597625}, {"file": "oedz01030_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 2.4367114249357042e-14, "lam_med": 2744.451525430945}, {"file": "oedz02010_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 1.1130061358501503e-14, "lam_med": 1512.9177668360242}, {"file": "oedz02020_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 8.925070348844029e-15, "lam_med": 1512.9502773861843}, {"file": "oedz02030_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 9.420325983222346e-15, "lam_med": 1512.792210093223}, {"file": "oedz03010_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 2.1814700409982435e-14, "lam_med": 2507.344758105669}, {"file": "oedz03020_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 1.7226933541313166e-14, "lam_med": 2507.357170765395}, {"file": "oedz03030_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 1.7561863128508233e-14, "lam_med": 2507.3494029574535}, {"file": "oedz03040_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 1.764503227040781e-14, "lam_med": 2507.341911374292}, {"file": "oedz04010_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 1.0375163754816672e-14, "lam_med": 1512.9474802199281}, {"file": "oedz04020_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 8.228913314089688e-15, "lam_med": 1512.641775186222}, {"file": "oedz04030_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 8.573512240398228e-15, "lam_med": 1512.6829998019648}, {"file": "oedz05010_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 1.6877077917764484e-14, "lam_med": 2257.644542666905}, {"file": "oedz05020_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 1.3675281485174605e-14, "lam_med": 2257.6410437400646}, {"file": "oedz05030_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 1.4362181603874484e-14, "lam_med": 2257.6369911926436}, {"file": "oedz05040_x1d.fits", "star": "* alf Sco", "mode": "E230H", "nominal": 1.4717526685428145e-14, "lam_med": 2257.63050870124}, {"file": "oedz06010_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 8.675087336488829e-15, "lam_med": 1512.1020372813323}, {"file": "oedz06020_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 7.278161473288617e-15, "lam_med": 1512.0332742460942}, {"file": "oedz06030_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 8.028245320984385e-15, "lam_med": 1512.3714046909515}, {"file": "oedz07010_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 8.608191497724797e-15, "lam_med": 1512.020188186807}, {"file": "oedz07020_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 7.296529085563358e-15, "lam_med": 1511.6790931888181}, {"file": "oedz07030_x1d.fits", "star": "* alf Sco", "mode": "E140H", "nominal": 8.201284975941112e-15, "lam_med": 1512.121951743451}, {"file": "oee503010_x1d.fits", "star": "HD 173739", "mode": "E230H", "nominal": 3.2193693067055897e-15, "lam_med": 2696.2542812395823, "rec": [0.06896551724137931, 0.5862068965517241, 0.896551724137931, 0.9310344827586207, 0.9655172413793104, 1.0]}, {"file": "oee504010_x1d.fits", "star": "* tau Cet", "mode": "E230H", "nominal": 6.515141676586329e-14, "lam_med": 2696.395405637947}, {"file": "oee505010_x1d.fits", "star": "L 372-58", "mode": "E230H", "nominal": 2.8693435100616483e-15, "lam_med": 2696.236025494573}, {"file": "oee507010_x1d.fits", "star": "CD-46 11540", "mode": "E230H", "nominal": 3.5045985003128446e-15, "lam_med": 2696.4099244254753}, {"file": "oee508010_x1d.fits", "star": "V* AD Leo", "mode": "E230H", "nominal": 4.648501467031828e-15, "lam_med": 2696.2975468855248}, {"file": "oee510010_x1d.fits", "star": "V* EV Lac", "mode": "E230H", "nominal": 4.336487814861123e-15, "lam_med": 2696.046516577421, "rec": [0.06896551724137931, 0.4827586206896552, 0.7142857142857143, 0.8571428571428571, 0.9285714285714286, 1.0]}, {"file": "oee511010_x1d.fits", "star": "HD 219134", "mode": "E230H", "nominal": 1.1965684681430422e-14, "lam_med": 2696.1006190204444}, {"file": "oee514010_x1d.fits", "star": "* del Eri", "mode": "E230H", "nominal": 3.288726926472038e-14, "lam_med": 2696.1456560150637}, {"file": "oee516010_x1d.fits", "star": "BD+25 3173", "mode": "E230H", "nominal": 3.3644402938510918e-15, "lam_med": 2696.0537956332273}, {"file": "oee519010_x1d.fits", "star": "HD 85512", "mode": "E230H", "nominal": 3.176321565203346e-15, "lam_med": 2696.137168614972}, {"file": "oee520010_x1d.fits", "star": "HD 69830", "mode": "E230H", "nominal": 1.3421693555764592e-14, "lam_med": 2696.2635914346383}, {"file": "oee521010_x1d.fits", "star": "* rho01 Cnc", "mode": "E230H", "nominal": 1.4214430381766734e-14, "lam_med": 2696.273125425975}, {"file": "oee522010_x1d.fits", "star": "HD 40307", "mode": "E230H", "nominal": 4.509586701581731e-15, "lam_med": 2696.1969706716404}, {"file": "oee523010_x1d.fits", "star": "BD+19 3268", "mode": "E230H", "nominal": 3.0893116751151364e-15, "lam_med": 2696.0381761284307}, {"file": "oee524010_x1d.fits", "star": "* 47 UMa", "mode": "E230H", "nominal": 3.995728724405432e-14, "lam_med": 2696.2915515454733}, {"file": "oee525010_x1d.fits", "star": "* 18 Sco", "mode": "E230H", "nominal": 3.05265566722654e-14, "lam_med": 2696.1856561137183}, {"file": "oee526010_x1d.fits", "star": "HD 340611", "mode": "E230H", "nominal": 7.312823421084069e-15, "lam_med": 2696.0428276361913}, {"file": "oee527010_x1d.fits", "star": "* b Aql", "mode": "E230H", "nominal": 1.7091479863970244e-14, "lam_med": 2696.0204799633493}, {"file": "oee528010_x1d.fits", "star": "GD 140", "mode": "E230H", "nominal": 5.3751509857888234e-15, "lam_med": 2696.022662896997}, {"file": "oee529010_x1d.fits", "star": "* mu. Ara", "mode": "E230H", "nominal": 2.1189356178812678e-14, "lam_med": 2696.4246890035197}, {"file": "oee532010_x1d.fits", "star": "G 80-21", "mode": "E230H", "nominal": 2.831828941957815e-15, "lam_med": 2696.0138508163745}, {"file": "oee535010_x1d.fits", "star": "* q01 Eri", "mode": "E230H", "nominal": 4.111384055823551e-14, "lam_med": 2696.165202744104}, {"file": "oee536010_x1d.fits", "star": "* rho CrB", "mode": "E230H", "nominal": 3.668187237561516e-14, "lam_med": 2696.2511229890383}, {"file": "oee540010_x1d.fits", "star": "HD 154345", "mode": "E230H", "nominal": 1.0582940872890792e-14, "lam_med": 2696.1462304683923}, {"file": "oee542010_x1d.fits", "star": "HD 189733", "mode": "E230H", "nominal": 5.001072078871847e-15, "lam_med": 2696.3597706229643, "rec": [0.0, 0.39285714285714285, 0.7241379310344828, 0.8620689655172413, 0.9642857142857143, 1.0]}, {"file": "oee546010_x1d.fits", "star": "BD+05 2767", "mode": "E230H", "nominal": 2.7158118986370557e-15, "lam_med": 2695.983433075693}, {"file": "oee550010_x1d.fits", "star": "* 16 Cyg A", "mode": "E230H", "nominal": 1.1932350991910592e-14, "lam_med": 2696.152178346145}, {"file": "oee554010_x1d.fits", "star": "HD 90156", "mode": "E230H", "nominal": 1.1458869300439882e-14, "lam_med": 2696.419942495789}, {"file": "oee558010_x1d.fits", "star": "HD 106516", "mode": "E230H", "nominal": 4.6419976821684534e-14, "lam_med": 2695.9779149403657}, {"file": "oee559010_x1d.fits", "star": "HD 1461", "mode": "E230H", "nominal": 1.2612098341333156e-14, "lam_med": 2696.298391665417}, {"file": "oee560010_x1d.fits", "star": "G 75-55", "mode": "E230H", "nominal": 3.0979771728120687e-15, "lam_med": 2696.107755607921}, {"file": "oee561010_x1d.fits", "star": "HD 151541", "mode": "E230H", "nominal": 5.799555483727743e-15, "lam_med": 2696.1673308209315}, {"file": "oee562010_x1d.fits", "star": "HD 156668", "mode": "E230H", "nominal": 3.0118885552031526e-15, "lam_med": 2696.1972426188822}, {"file": "oee568010_x1d.fits", "star": "V* CE Ant", "mode": "E230H", "nominal": 2.7003447439784255e-15, "lam_med": 2696.0040977605886}, {"file": "oee569010_x1d.fits", "star": "CD-34 7390", "mode": "E230H", "nominal": 3.501054251424201e-15, "lam_med": 2696.252193674644}, {"file": "oee578010_x1d.fits", "star": "HD 109573", "mode": "E230H", "nominal": 9.454864882161724e-14, "lam_med": 2696.3726310083684}, {"file": "oee579010_x1d.fits", "star": "GD 246", "mode": "E230H", "nominal": 5.633577884286664e-15, "lam_med": 2696.4329902221875}, {"file": "oee581010_x1d.fits", "star": "* mu. UMa", "mode": "E230H", "nominal": 8.49914349166558e-15, "lam_med": 2696.01843980807}, {"file": "oee582010_x1d.fits", "star": "* 39 Cet", "mode": "E230H", "nominal": 1.8908608854015843e-14, "lam_med": 2696.311421869983}, {"file": "oee583010_x1d.fits", "star": "* 74 Psc A", "mode": "E230H", "nominal": 1.1776007252837336e-13, "lam_med": 2696.483443421946}, {"file": "oee584010_x1d.fits", "star": "HD 217411", "mode": "E230H", "nominal": 7.963148903040462e-15, "lam_med": 2696.419106052909}, {"file": "oef11s010_x1d.fits", "star": "RMC 109", "mode": "E230M", "nominal": 1.545390304698192e-14, "lam_med": 1917.4398148857265}, {"file": "oef11s020_x1d.fits", "star": "RMC 109", "mode": "E230M", "nominal": 1.8528335304538277e-14, "lam_med": 1917.4558590077172}, {"file": "oef11s030_x1d.fits", "star": "RMC 109", "mode": "E230M", "nominal": 9.958287823554907e-15, "lam_med": 2629.7234603344746}, {"file": "oef12s010_x1d.fits", "star": "HD 268729", "mode": "E230M", "nominal": 1.845229359620829e-14, "lam_med": 1917.474088014262}, {"file": "oef12s030_x1d.fits", "star": "HD 268729", "mode": "E230M", "nominal": 1.6281525125230815e-14, "lam_med": 2630.1511262558047}, {"file": "oef13s010_x1d.fits", "star": "SK -69 140", "mode": "E230M", "nominal": 1.635389699275487e-14, "lam_med": 1917.461628719848}, {"file": "oef13s020_x1d.fits", "star": "SK -69 140", "mode": "E230M", "nominal": 1.5354322211190945e-14, "lam_med": 1917.4633486242992, "rec": [0.0, 0.375, 0.65, 0.95, 0.975, 0.975]}, {"file": "oef1gs010_x1d.fits", "star": "HD 268729", "mode": "E230M", "nominal": 1.746867936224683e-14, "lam_med": 1917.4574127207381}, {"file": "oef31s010_x1d.fits", "star": "HD 32109", "mode": "E140M", "nominal": 1.0954282518633597e-14, "lam_med": 1380.3905532451581}, {"file": "oef31s020_x1d.fits", "star": "HD 32109", "mode": "E140M", "nominal": 9.995190410802967e-15, "lam_med": 1380.6068644476495}, {"file": "oef31s030_x1d.fits", "star": "HD 32109", "mode": "E140M", "nominal": 9.987300999221696e-15, "lam_med": 1380.6298259973082}, {"file": "oef32s010_x1d.fits", "star": "HD 32402", "mode": "E140M", "nominal": 1.174926480142621e-14, "lam_med": 1378.7089523470063}, {"file": "oef32s020_x1d.fits", "star": "HD 32402", "mode": "E140M", "nominal": 1.0702164691481201e-14, "lam_med": 1379.5094451909727}, {"file": "oef33s010_x1d.fits", "star": "HD 37680", "mode": "E140M", "nominal": 1.0916736847056746e-14, "lam_med": 1379.2750705231651}, {"file": "oef33s020_x1d.fits", "star": "HD 37680", "mode": "E140M", "nominal": 9.912875206318267e-15, "lam_med": 1379.5585961969687}, {"file": "oef33s030_x1d.fits", "star": "HD 37680", "mode": "E140M", "nominal": 9.944891042585498e-15, "lam_med": 1379.575097949119}, {"file": "oefse1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6755767049300887e-14, "lam_med": 2257.8310476960187}, {"file": "oefse1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9780692928440524e-13, "lam_med": 1380.343881723544}, {"file": "oefse1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.865552942147974e-14, "lam_med": 2632.8094372553583}, {"file": "oefse1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7892411734948292e-13, "lam_med": 1917.3815767056067}, {"file": "oefse1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.8325742494426e-14, "lam_med": 1414.7581551347305}, {"file": "oefse2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.669425473208017e-14, "lam_med": 2258.0772515705476}, {"file": "oefse2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9570108573490978e-13, "lam_med": 1380.2932941907725, "rec": [0.0, 0.5675675675675675, 0.8536585365853658, 0.8205128205128205, 0.9767441860465116, 0.9512195121951219]}, {"file": "oefse2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.887346117745963e-14, "lam_med": 2633.1515512500982}, {"file": "oefse2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7999728653315492e-13, "lam_med": 1917.6170804228498}, {"file": "oefse2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.794145835208722e-14, "lam_med": 1415.0859065188295}, {"file": "oefse3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6420696220398927e-14, "lam_med": 2257.840318871506}, {"file": "oefse3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9681956327765528e-13, "lam_med": 1379.911737926323}, {"file": "oefse3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.727656417370692e-14, "lam_med": 2633.047183140955}, {"file": "oefse3040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7725874839866687e-13, "lam_med": 1917.4492129013845}, {"file": "oefse3050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.80223144479827e-14, "lam_med": 1414.835090248443}, {"file": "oefse4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.653126176355127e-14, "lam_med": 2257.838976563369}, {"file": "oefse4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9535370874229502e-13, "lam_med": 1380.3763261364304}, {"file": "oefse4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.834055900278271e-14, "lam_med": 2632.816861884173}, {"file": "oefse4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7657234072091924e-13, "lam_med": 1917.31687650503}, {"file": "oefse4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.72633475820455e-14, "lam_med": 1414.9250295830545}, {"file": "oeh202010_x1d.fits", "star": "HD 245770", "mode": "E140M", "nominal": 2.1407573977235495e-14, "lam_med": 1380.0516752798655}, {"file": "oeh202020_x1d.fits", "star": "HD 245770", "mode": "E140M", "nominal": 2.14632567557337e-14, "lam_med": 1380.1776646952612}, {"file": "oehi2s010_x1d.fits", "star": "SK -67 167", "mode": "E140M", "nominal": 2.121204009980111e-14, "lam_med": 1380.2321054006413}, {"file": "oehi4t010_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 8.212759023922785e-15, "lam_med": 1380.062842899297}, {"file": "oehi4t020_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 2.322880748817857e-15, "lam_med": 1379.9629042801596}, {"file": "oehics010_x1d.fits", "star": "SK -67 69", "mode": "E140M", "nominal": 1.3673496991971329e-14, "lam_med": 1380.3150981451083}, {"file": "oehics020_x1d.fits", "star": "SK -67 69", "mode": "E140M", "nominal": 1.2757662661609382e-14, "lam_med": 1380.6050291937954}, {"file": "oehids010_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 9.94735453438475e-15, "lam_med": 1379.9665943202915}, {"file": "oehids020_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 6.012158756850166e-15, "lam_med": 1380.7821581011121, "rec": [0.04878048780487805, 0.3333333333333333, 0.8780487804878049, 0.926829268292683, 0.9761904761904762, 0.9]}, {"file": "oehidt010_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 1.0332816993660707e-14, "lam_med": 1380.2286853401356}, {"file": "oehidt020_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 9.644019524724205e-15, "lam_med": 1379.959581272989}, {"file": "oehiis010_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 1.0551518319203187e-14, "lam_med": 1380.3238598302662}, {"file": "oehiis020_x1d.fits", "star": "SK -70 60", "mode": "E140M", "nominal": 9.913358742133495e-15, "lam_med": 1380.307868935414, "rec": [0.024390243902439025, 0.5454545454545454, 0.8717948717948718, 0.8536585365853658, 0.9047619047619048, 0.9534883720930233]}, {"file": "oeiw03020_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E230M", "nominal": 6.213717347932862e-15, "lam_med": 2632.9399946922877}, {"file": "oeiw03030_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E140M", "nominal": 4.0043530516405955e-15, "lam_med": 1379.8487484979094}, {"file": "oeiw04010_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E140M", "nominal": 3.606915028631896e-15, "lam_med": 1378.6735977769108}, {"file": "oeiw04020_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E140M", "nominal": 3.331360316058172e-15, "lam_med": 1378.5870984894168}, {"file": "oeiw06010_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E140M", "nominal": 2.9312103466099575e-15, "lam_med": 1380.4703343094634}, {"file": "oeiwa5010_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E140M", "nominal": 3.4435764482832676e-15, "lam_med": 1380.625588767537}, {"file": "oeiwa5020_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E230M", "nominal": 3.184191068444026e-14, "lam_med": 1917.2973536242507}, {"file": "oeiwa5030_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E230M", "nominal": 8.515881096877835e-15, "lam_med": 2632.251650329246}, {"file": "oeiwa5040_x1d.fits", "star": "SWIFT J1727.8-1613", "mode": "E140M", "nominal": 4.279980965247042e-15, "lam_med": 1380.331196247199}, {"file": "oejf1s010_x1d.fits", "star": "HD 269889", "mode": "E140M", "nominal": 1.9163106095430037e-14, "lam_med": 1379.9203532530503}, {"file": "oejf1s020_x1d.fits", "star": "HD 269889", "mode": "E140M", "nominal": 2.842445683983639e-14, "lam_med": 1380.252983491735}, {"file": "oejf1s030_x1d.fits", "star": "HD 269889", "mode": "E230M", "nominal": 3.588204678343152e-14, "lam_med": 1917.3810081775046}, {"file": "oejf2s010_x1d.fits", "star": "SK -68 41", "mode": "E140M", "nominal": 1.7198204893152586e-14, "lam_med": 1380.151435009402}, {"file": "oejf2s020_x1d.fits", "star": "SK -68 41", "mode": "E140M", "nominal": 2.5564147079186487e-14, "lam_med": 1380.2490602373894}, {"file": "oejf2s030_x1d.fits", "star": "SK -68 41", "mode": "E230M", "nominal": 3.294155623886132e-14, "lam_med": 1917.4059715526155}, {"file": "oejf5s010_x1d.fits", "star": "SK -70 32", "mode": "E140M", "nominal": 1.5158151547209327e-15, "lam_med": 1380.6055655879072}, {"file": "oejf5s020_x1d.fits", "star": "SK -70 32", "mode": "E140M", "nominal": 1.5955245758412104e-15, "lam_med": 1380.80606549352}, {"file": "oejf5s030_x1d.fits", "star": "SK -70 32", "mode": "E140M", "nominal": 1.8930038179581743e-15, "lam_med": 1379.8795358894483}, {"file": "oejf6s010_x1d.fits", "star": "SK -71 8", "mode": "E140M", "nominal": 9.977605830642888e-15, "lam_med": 1380.895393313809}, {"file": "oejf6s020_x1d.fits", "star": "SK -71 8", "mode": "E140M", "nominal": 9.323533321299965e-15, "lam_med": 1380.781248155421}, {"file": "oejf6s030_x1d.fits", "star": "SK -71 8", "mode": "E140M", "nominal": 9.351611288130947e-15, "lam_med": 1380.6103518213226}, {"file": "oejfcs010_x1d.fits", "star": "HD 268809", "mode": "E140M", "nominal": 1.4521269897543913e-14, "lam_med": 1380.2369408328075}, {"file": "oejfcs020_x1d.fits", "star": "HD 268809", "mode": "E140M", "nominal": 1.349060463525626e-14, "lam_med": 1380.2819712649236}, {"file": "oejfcs030_x1d.fits", "star": "HD 268809", "mode": "E140M", "nominal": 1.3572666424379529e-14, "lam_med": 1380.3574550413746}, {"file": "oejfds010_x1d.fits", "star": "HD 268809", "mode": "E230M", "nominal": 2.0731606585612823e-14, "lam_med": 1917.4608457750114}, {"file": "oejfes010_x1d.fits", "star": "SK -70 32", "mode": "E140M", "nominal": 1.4244709899426787e-14, "lam_med": 1380.835543538181}, {"file": "oejfes020_x1d.fits", "star": "SK -70 32", "mode": "E140M", "nominal": 1.3255138750780232e-14, "lam_med": 1380.4863978938229}, {"file": "oejfes030_x1d.fits", "star": "SK -70 32", "mode": "E140M", "nominal": 1.325260460302608e-14, "lam_med": 1380.5029080045915}, {"file": "oejg1s010_x1d.fits", "star": "W61 3-8", "mode": "E140M", "nominal": 1.1912434268288145e-14, "lam_med": 1379.8268174967939}, {"file": "oejg1s020_x1d.fits", "star": "W61 3-8", "mode": "E140M", "nominal": 1.1084723189960246e-14, "lam_med": 1379.21261324422}, {"file": "oejg2s010_x1d.fits", "star": "LHA 120-S 28", "mode": "E140M", "nominal": 1.3844500560153276e-14, "lam_med": 1379.2238406288493, "rec": [0.024390243902439025, 0.3902439024390244, 0.47619047619047616, 0.9, 0.8947368421052632, 0.926829268292683]}, {"file": "oejg2s020_x1d.fits", "star": "LHA 120-S 28", "mode": "E140M", "nominal": 1.2953395970333537e-14, "lam_med": 1379.0835903070986}, {"file": "oejg3s010_x1d.fits", "star": "LHA 120-S 61", "mode": "E140M", "nominal": 1.6941058357440156e-14, "lam_med": 1379.0118796860804}, {"file": "oejg4s010_x1d.fits", "star": "HD 36063", "mode": "E140M", "nominal": 1.7375434351317395e-14, "lam_med": 1379.2307098932504}, {"file": "oejv1s010_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.206146272543585e-14, "lam_med": 1917.4210098605124}, {"file": "oejv1s020_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.1429053789108888e-14, "lam_med": 1917.4199832282122}, {"file": "oejv1s030_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.1792971914804522e-14, "lam_med": 1917.417417705466, "rec": [0.0, 0.6, 0.925, 0.9743589743589743, 0.9743589743589743, 1.0]}, {"file": "oejv1t010_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.2480912161878054e-14, "lam_med": 1917.3715541863824}, {"file": "oejv1t020_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.1886697938745404e-14, "lam_med": 1917.3577373013472, "rec": [0.05, 0.46153846153846156, 0.875, 0.975, 0.975, 1.0]}, {"file": "oejv1t030_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.2083028039868943e-14, "lam_med": 1917.3572999958706}, {"file": "oejv1u010_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.2751381612888504e-14, "lam_med": 1917.3990326476387}, {"file": "oejv1u020_x1d.fits", "star": "AzV 261", "mode": "E230M", "nominal": 1.1937456463587392e-14, "lam_med": 1917.3959664072495}, {"file": "oejv2s020_x1d.fits", "star": "SK 94", "mode": "E140M", "nominal": 1.3722428574642055e-17, "lam_med": 1379.2026187392355}, {"file": "oejv2s030_x1d.fits", "star": "SK 94", "mode": "E230M", "nominal": 1.786962820798595e-14, "lam_med": 1917.2800284809975}, {"file": "oejv4s010_x1d.fits", "star": "SK 46", "mode": "E230M", "nominal": 1.7806244381956532e-14, "lam_med": 1917.5002993052306}, {"file": "oejv4s020_x1d.fits", "star": "SK 46", "mode": "E140M", "nominal": 1.0542111508840274e-14, "lam_med": 1380.192786418405}, {"file": "oejv4s030_x1d.fits", "star": "SK 46", "mode": "E140M", "nominal": 1.0629740519617902e-14, "lam_med": 1380.3200203556837}, {"file": "oejv4t010_x1d.fits", "star": "SK 46", "mode": "E230M", "nominal": 1.837917382945065e-14, "lam_med": 1917.4940456574618}, {"file": "oejv4t020_x1d.fits", "star": "SK 46", "mode": "E140M", "nominal": 1.1041194995282568e-14, "lam_med": 1379.9048398623002}, {"file": "oejvbs010_x1d.fits", "star": "SK 94", "mode": "E140M", "nominal": 1.4142513514007568e-14, "lam_med": 1380.7947986216755, "rec": [0.0, 0.4878048780487805, 0.6829268292682927, 0.8809523809523809, 0.95, 0.9024390243902439]}, {"file": "oejvbs020_x1d.fits", "star": "SK 94", "mode": "E140M", "nominal": 1.3178759355254138e-14, "lam_med": 1380.4754779150944}, {"file": "oejvbs030_x1d.fits", "star": "SK 94", "mode": "E230M", "nominal": 1.9091209447981885e-14, "lam_med": 1917.5250240591322}, {"file": "oejvcs010_x1d.fits", "star": "LIN 166", "mode": "E140M", "nominal": 6.967893241906659e-15, "lam_med": 1379.7607520852907}, {"file": "oejvcs020_x1d.fits", "star": "LIN 166", "mode": "E140M", "nominal": 6.550737264230485e-15, "lam_med": 1379.8604792583762, "rec": [0.024390243902439025, 0.6341463414634146, 0.7142857142857143, 0.8571428571428571, 0.926829268292683, 0.9230769230769231]}, {"file": "oejvcs030_x1d.fits", "star": "LIN 166", "mode": "E140M", "nominal": 6.68416824460532e-15, "lam_med": 1380.2666112559068}, {"file": "oejvct010_x1d.fits", "star": "LIN 166", "mode": "E140M", "nominal": 7.13955954179771e-15, "lam_med": 1380.1646492214668}, {"file": "oejvct020_x1d.fits", "star": "LIN 166", "mode": "E140M", "nominal": 6.644480934266278e-15, "lam_med": 1380.4974629690264}, {"file": "oekh1s010_x1d.fits", "star": "HD 268907", "mode": "E230M", "nominal": 9.923739192551456e-15, "lam_med": 2633.015342728008}, {"file": "oekh2s010_x1d.fits", "star": "SK -67 195", "mode": "E230M", "nominal": 3.8276461887938385e-15, "lam_med": 2633.0250998046577}, {"file": "oekh3s010_x1d.fits", "star": "SK -67 197", "mode": "E230M", "nominal": 4.590306862566703e-15, "lam_med": 2632.963941843044}, {"file": "oekh4s010_x1d.fits", "star": "HD 269801", "mode": "E230M", "nominal": 8.079917796569065e-15, "lam_med": 2631.937772315531}, {"file": "oelce1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6311163955121415e-14, "lam_med": 2257.6827736966757}, {"file": "oelce1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9542644491293524e-13, "lam_med": 1380.6852845400508}, {"file": "oelce1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.717392112906905e-14, "lam_med": 2632.8466780949584}, {"file": "oelce1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7636789327566733e-13, "lam_med": 1917.3096209327014}, {"file": "oelce1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.59273189587134e-14, "lam_med": 1414.8779373023767}, {"file": "oelce2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6637564226554226e-14, "lam_med": 2258.140911507426}, {"file": "oelce2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9496973911097042e-13, "lam_med": 1380.876404363516}, {"file": "oelce2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.867559644306876e-14, "lam_med": 2633.120118330751}, {"file": "oelce2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8029029982198154e-13, "lam_med": 1917.6256646813754}, {"file": "oelce2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.814781942691354e-14, "lam_med": 1415.1350085619201}, {"file": "oelce4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.677507179088373e-14, "lam_med": 2257.802265888021}, {"file": "oelce4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9094785181856145e-13, "lam_med": 1380.6448815088652}, {"file": "oelce4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.872970241983566e-14, "lam_med": 2632.964788851919}, {"file": "oelce4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8235600354576425e-13, "lam_med": 1917.4207280345465}, {"file": "oelce4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.709774208539235e-14, "lam_med": 1414.911052773275}, {"file": "oelcer010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.639309190353802e-14, "lam_med": 2257.7946691170782}, {"file": "oelcer020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9527789359467076e-13, "lam_med": 1381.17296664033}, {"file": "oelcer030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.835444106156041e-14, "lam_med": 2632.689620498194}, {"file": "oelcer040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7831021755687264e-13, "lam_med": 1917.308377019832}, {"file": "oelcer050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.627311242783149e-14, "lam_med": 1414.8344876463623}, {"file": "oem8a1010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.141523959618048e-14, "lam_med": 1380.5457848923784, "rec": [0.047619047619047616, 0.35714285714285715, 0.6904761904761905, 0.8, 0.9523809523809523, 1.0]}, {"file": "oem8a2010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.1757265476909753e-14, "lam_med": 1380.5163018031394}, {"file": "oem8a3010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.172217366068427e-14, "lam_med": 1379.7246353596079}, {"file": "oem8a4010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.1814798003966702e-14, "lam_med": 1380.4819116398007}, {"file": "oem8a5010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.1869042588170383e-14, "lam_med": 1379.5828326435046}, {"file": "oem8a6010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.1540689747333358e-14, "lam_med": 1380.111823230322}, {"file": "oem8a7010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.170497815506264e-14, "lam_med": 1379.687789131735}, {"file": "oem8a8010_x1d.fits", "star": "HD 130298", "mode": "E140M", "nominal": 1.1703874100968693e-14, "lam_med": 1380.2683820986408}, {"file": "oemu4s010_x1d.fits", "star": "SK 138", "mode": "E230M", "nominal": 4.484213062108367e-15, "lam_med": 2632.8876454145816}, {"file": "oemu5s010_x1d.fits", "star": "SK 179", "mode": "E230M", "nominal": 4.2356978915073295e-15, "lam_med": 2632.9575620398214}, {"file": "oemuas010_x1d.fits", "star": "SK 69", "mode": "E230M", "nominal": 4.491823330221673e-15, "lam_med": 2633.0400979787682}, {"file": "oemubs010_x1d.fits", "star": "AzV 314", "mode": "E230M", "nominal": 4.093898984282227e-15, "lam_med": 2633.10226838924}, {"file": "oemucs010_x1d.fits", "star": "SK 111", "mode": "E230M", "nominal": 3.5911204129247434e-15, "lam_med": 2633.063305732605}, {"file": "oen701030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.2433612598906778e-15, "lam_med": 2632.6442785720246}, {"file": "oen701040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.46162074012491e-15, "lam_med": 2632.626316740755}, {"file": "oen702010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.5597193394862157e-14, "lam_med": 2632.680425507211}, {"file": "oen702020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.9879089795967254e-14, "lam_med": 2632.6423290303474}, {"file": "oen702030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2074723133876695e-14, "lam_med": 2632.695156467439}, {"file": "oen702040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0333514957111087e-14, "lam_med": 2632.6141161313963}, {"file": "oen702050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2398357350566234e-14, "lam_med": 2632.5318013440897}, {"file": "oen703010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.6699624293851942e-14, "lam_med": 2632.616329328173}, {"file": "oen703020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.9224011740563435e-14, "lam_med": 2632.636467227325}, {"file": "oen703030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0504262678731209e-14, "lam_med": 2632.6887288243115}, {"file": "oen703040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0039999549844581e-14, "lam_med": 2632.670743425585}, {"file": "oen703050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0487206634844878e-14, "lam_med": 2632.670057834007}, {"file": "oen704010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.48858905797671e-14, "lam_med": 2632.6112355857485}, {"file": "oen704020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.1215720874343492e-14, "lam_med": 2632.591390861465}, {"file": "oen704030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2926659046496538e-14, "lam_med": 2632.6436475962782}, {"file": "oen704040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0821851105574744e-14, "lam_med": 2632.6464613594744, "rec": [0.0, 0.041666666666666664, 0.16666666666666666, 0.125, 0.16666666666666666, 0.375]}, {"file": "oen704050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.298806081399819e-14, "lam_med": 2632.647312288002}, {"file": "oen705010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.5319659336151696e-14, "lam_med": 2632.250359795692}, {"file": "oen705020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.1009886252133692e-14, "lam_med": 2632.504778279382}, {"file": "oen705030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2518850681836404e-14, "lam_med": 2631.802725784109}, {"file": "oen705040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0353424858703518e-14, "lam_med": 2631.622405212966}, {"file": "oen705050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2249958894391347e-14, "lam_med": 2631.6229528798517}, {"file": "oen751010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.6722850697265005e-14, "lam_med": 2632.6107864026176}, {"file": "oen751020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.4233617451371032e-14, "lam_med": 2632.5888656704597}, {"file": "oen751030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.423624809073452e-14, "lam_med": 2632.6650869958094}, {"file": "oen751040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.1634177301154977e-14, "lam_med": 2632.672171079185}, {"file": "oen751050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.3944191907974523e-14, "lam_med": 2632.6594980744185}, {"file": "oenc01010_x1d.fits", "star": "* chi Oph", "mode": "E230H", "nominal": 2.0802815881254992e-13, "lam_med": 2109.7087230804286}, {"file": "oenc01020_x1d.fits", "star": "* chi Oph", "mode": "E140H", "nominal": 4.951282914379089e-13, "lam_med": 1253.7575900315057}, {"file": "oenc02010_x1d.fits", "star": "HD 110432", "mode": "E230H", "nominal": 1.1242371017245165e-13, "lam_med": 2109.7877637464594}, {"file": "oenc02020_x1d.fits", "star": "HD 110432", "mode": "E140H", "nominal": 1.5140042114112e-13, "lam_med": 1254.2265410136906}, {"file": "oenc03010_x1d.fits", "star": "HD 154368", "mode": "E230H", "nominal": 1.7294532858560593e-14, "lam_med": 2109.8998265092478}, {"file": "oenc03020_x1d.fits", "star": "HD 154368", "mode": "E230H", "nominal": 1.5934882213027697e-14, "lam_med": 2109.921033057669}, {"file": "oenc03030_x1d.fits", "star": "HD 154368", "mode": "E140H", "nominal": 1.5557214544595543e-14, "lam_med": 1254.09847312061}, {"file": "oenc03040_x1d.fits", "star": "HD 154368", "mode": "E140H", "nominal": 1.519825672531021e-14, "lam_med": 1254.0263668288535, "rec": [0.041666666666666664, 0.3829787234042553, 0.5217391304347826, 0.6304347826086957, 0.7777777777777778, 0.7555555555555555]}, {"file": "oenc05010_x1d.fits", "star": "* tet01 Ori C", "mode": "E230H", "nominal": 6.70625851313057e-13, "lam_med": 2110.0844992164557}, {"file": "oenc05020_x1d.fits", "star": "* tet01 Ori C", "mode": "E140H", "nominal": 1.6046364424867002e-12, "lam_med": 1254.0652844974684}, {"file": "oenc06010_x1d.fits", "star": "HD 206267", "mode": "E230H", "nominal": 2.990274242788174e-14, "lam_med": 2109.783150380115}, {"file": "oenc07010_x1d.fits", "star": "HD 207198", "mode": "E230H", "nominal": 3.041708403764984e-14, "lam_med": 2109.988186176205}, {"file": "oenc08010_x1d.fits", "star": "* kap Aql", "mode": "E230H", "nominal": 2.40166817921902e-13, "lam_med": 2110.2404083149827, "rec": [0.02127659574468085, 0.2978723404255319, 0.44680851063829785, 0.7659574468085106, 0.9787234042553191, 1.0]}, {"file": "oenc08020_x1d.fits", "star": "* kap Aql", "mode": "E140H", "nominal": 5.958799173186294e-13, "lam_med": 1254.0744003033747}, {"file": "oens1a010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 4.7934792939820584e-14, "lam_med": 1254.0579854200164}, {"file": "oens1b010_x1d.fits", "star": "V* V1334 Cyg", "mode": "E140H", "nominal": 3.0918569875252125e-14, "lam_med": 1254.006939581261}, {"file": "oens3a010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.3529961798057547e-14, "lam_med": 1227.9147850423444, "rec": [0.06, 0.3958333333333333, 0.42, 0.7291666666666666, 0.8333333333333334, 0.7708333333333334]}, {"file": "oens3b010_x1d.fits", "star": "V* SU Cyg", "mode": "E140H", "nominal": 1.309564683387987e-14, "lam_med": 1227.9805780407642}, {"file": "oep501010_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 4.252062378609159e-15, "lam_med": 2632.6579781291302}, {"file": "oep501020_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 4.045340417581004e-15, "lam_med": 2632.705528330831}, {"file": "oep501030_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 4.20964282127295e-15, "lam_med": 2632.7051538035485}, {"file": "oep501040_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 4.3543894921894616e-15, "lam_med": 2632.6814492035865}, {"file": "oep501050_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 4.245316561002519e-15, "lam_med": 2632.68143624741}, {"file": "oep502040_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 2.576172663896457e-15, "lam_med": 2630.989250969155}, {"file": "oep502050_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 2.6124060296334125e-15, "lam_med": 2630.3834271972173}, {"file": "oep5r2010_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 3.7487090107096896e-15, "lam_med": 2631.702171252749}, {"file": "oep5r2020_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 3.4815561411730823e-15, "lam_med": 2631.4628352432146}, {"file": "oep5s2010_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 3.774165616138334e-15, "lam_med": 2632.717131060485, "rec": [0.0, 0.0, 0.25, 0.375, 0.6666666666666666, 0.8333333333333334]}, {"file": "oep5s2020_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 3.5071616221328473e-15, "lam_med": 2632.722473336297}, {"file": "oep5s2030_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 3.530124898470128e-15, "lam_med": 2632.7246628623807}, {"file": "oep5s2040_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 3.5631551935258795e-15, "lam_med": 2632.7283181991156}, {"file": "oep5s2050_x1d.fits", "star": "BD+01 316", "mode": "E230M", "nominal": 1.791403118772213e-15, "lam_med": 2632.731329141184}, {"file": "oeq801010_x1d.fits", "star": "HD 71336", "mode": "E140H", "nominal": 8.923286589296106e-14, "lam_med": 1289.6967933399533}, {"file": "oeq801020_x1d.fits", "star": "HD 71336", "mode": "E140H", "nominal": 8.003455115913935e-14, "lam_med": 1554.0481190976664}, {"file": "oeq802010_x1d.fits", "star": "HD 72088", "mode": "E140H", "nominal": 3.470433052280265e-14, "lam_med": 1584.726526943656}, {"file": "oeq802020_x1d.fits", "star": "HD 72088", "mode": "E140H", "nominal": 3.2248700383093444e-14, "lam_med": 1584.7300046744147}, {"file": "oeq802030_x1d.fits", "star": "HD 72088", "mode": "E140H", "nominal": 2.173833389070384e-14, "lam_med": 1288.9432337783905}, {"file": "oeq803010_x1d.fits", "star": "HD 72089", "mode": "E140H", "nominal": 5.643753944649943e-14, "lam_med": 1289.5762446873516}, {"file": "oeq803020_x1d.fits", "star": "HD 72089", "mode": "E140H", "nominal": 8.114545082895776e-14, "lam_med": 1584.9711533684253}, {"file": "oeq804010_x1d.fits", "star": "HD 72350", "mode": "E140H", "nominal": 1.2905674575678328e-13, "lam_med": 1289.4328683329384}, {"file": "oeq804020_x1d.fits", "star": "HD 72350", "mode": "E140H", "nominal": 1.9239537185003754e-13, "lam_med": 1584.9873852547657}, {"file": "oeq805010_x1d.fits", "star": "HD 72537", "mode": "E140H", "nominal": 1.4049195482506508e-13, "lam_med": 1289.5516459768496}, {"file": "oeq805020_x1d.fits", "star": "HD 72537", "mode": "E140H", "nominal": 1.7520757145391855e-13, "lam_med": 1584.9932770390203}, {"file": "oeq806010_x1d.fits", "star": "HD 72648", "mode": "E140H", "nominal": 5.050055868605378e-14, "lam_med": 1289.3882171755913}, {"file": "oeq806020_x1d.fits", "star": "HD 72648", "mode": "E140H", "nominal": 7.816540092658181e-14, "lam_med": 1584.7845244590612}, {"file": "oeq807010_x1d.fits", "star": "HD 72127A", "mode": "E140H", "nominal": 2.921796980306856e-12, "lam_med": 1289.4331175099105}, {"file": "oeq807020_x1d.fits", "star": "HD 72127A", "mode": "E140H", "nominal": 2.912279494336395e-12, "lam_med": 1584.3220438725257}, {"file": "oeq807030_x1d.fits", "star": "HD 72127B", "mode": "E140H", "nominal": 9.788699032864332e-13, "lam_med": 1289.4292295966252}, {"file": "oeq807040_x1d.fits", "star": "HD 72127B", "mode": "E140H", "nominal": 8.425083561977629e-13, "lam_med": 1289.3700838902812}, {"file": "oeqd03010_x1d.fits", "star": "PM J04343+4302", "mode": "E230M", "nominal": 1.996711087698152e-15, "lam_med": 2632.6789863269273}, {"file": "oeqk32020_x1d.fits", "star": "V* HP Lib", "mode": "E140M", "nominal": 6.1953059290081045e-15, "lam_med": 1379.0895859851564}, {"file": "oeqk82010_x1d.fits", "star": "V* HP Lib", "mode": "E140M", "nominal": 8.773402465349562e-15, "lam_med": 1379.7194930488793}, {"file": "oeqk82020_x1d.fits", "star": "V* HP Lib", "mode": "E140M", "nominal": 7.960039558328685e-15, "lam_med": 1380.0385568177253}, {"file": "oeqw10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.228147544990639e-15, "lam_med": 1381.0643635133802}, {"file": "oeqw10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.2931023863054314e-12, "lam_med": 2696.0237746661583}, {"file": "oeqw10030_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 7.672674873877968e-14, "lam_med": 2695.997547181471}, {"file": "oeqw10040_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 4.532593819625625e-15, "lam_med": 1380.5444938186852}, {"file": "oeqw11010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 6.993532981918857e-15, "lam_med": 1380.9521085925167}, {"file": "oeqw11020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.2522605997700491e-12, "lam_med": 2696.387467048389}, {"file": "oeqw11030_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 7.049585597636945e-14, "lam_med": 2696.3810767202485}, {"file": "oeqw11040_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 3.3714381937524312e-15, "lam_med": 1380.7390440963718}, {"file": "oetn1s010_x1d.fits", "star": "2dFS 3780", "mode": "E140M", "nominal": 8.717330498474517e-15, "lam_med": 1379.3940506753565, "rec": [0.023255813953488372, 0.42105263157894735, 0.8048780487804879, 0.8372093023255814, 0.8809523809523809, 0.9302325581395349]}, {"file": "oetn1s020_x1d.fits", "star": "2dFS 3780", "mode": "E140M", "nominal": 8.133853399624516e-15, "lam_med": 1379.466999094629}, {"file": "oetn1s030_x1d.fits", "star": "2dFS 3780", "mode": "E140M", "nominal": 8.245939502990684e-15, "lam_med": 1379.8865507556843}, {"file": "oetn2s010_x1d.fits", "star": "AzV 410", "mode": "E140M", "nominal": 1.1085931270149479e-14, "lam_med": 1379.6841435821293}, {"file": "oetn2s020_x1d.fits", "star": "AzV 410", "mode": "E140M", "nominal": 1.0347119472103936e-14, "lam_med": 1379.9613472696933}, {"file": "oetn2t010_x1d.fits", "star": "AzV 410", "mode": "E140M", "nominal": 1.1253712674453831e-14, "lam_med": 1380.1414027300443}, {"file": "oetn2t020_x1d.fits", "star": "AzV 410", "mode": "E140M", "nominal": 1.0549285076811457e-14, "lam_med": 1380.4003914509942}, {"file": "oetn3s010_x1d.fits", "star": "SK 187", "mode": "E140M", "nominal": 1.406749069670839e-14, "lam_med": 1379.6338162919187}, {"file": "oetn3s020_x1d.fits", "star": "SK 187", "mode": "E140M", "nominal": 1.3014297222956205e-14, "lam_med": 1379.2929872110533}, {"file": "oeto1s010_x1d.fits", "star": "HD 269371", "mode": "E230M", "nominal": 2.1073578370036672e-14, "lam_med": 1917.368915748129, "rec": [0.025, 0.275, 0.525, 0.8, 0.9743589743589743, 0.975]}, {"file": "oeto2s010_x1d.fits", "star": "HD 268867", "mode": "E230M", "nominal": 2.08536761327222e-14, "lam_med": 1917.3658535287313}, {"file": "oeto3s010_x1d.fits", "star": "HD 269009", "mode": "E230M", "nominal": 2.1177116363137602e-14, "lam_med": 1917.3988528885504}, {"file": "oeuaas010_x1d.fits", "star": "Cl* NGC 346 SSN 7", "mode": "E140M", "nominal": 1.8367874360860766e-14, "lam_med": 1380.8599399482553}, {"file": "oeuc2s010_x1d.fits", "star": "SK -65 2", "mode": "E140M", "nominal": 1.1246175056858336e-14, "lam_med": 1380.2889389145016}, {"file": "oeuc2s020_x1d.fits", "star": "SK -65 2", "mode": "E140M", "nominal": 1.0503085147829154e-14, "lam_med": 1380.384602762623}, {"file": "oeuc2s030_x1d.fits", "star": "SK -65 2", "mode": "E140M", "nominal": 1.0568476288893128e-14, "lam_med": 1380.4423056151165}, {"file": "oeuc3s010_x1d.fits", "star": "SK -67 216", "mode": "E140M", "nominal": 1.2072710513255685e-14, "lam_med": 1379.7998393339133}, {"file": "oeuc3s020_x1d.fits", "star": "SK -67 216", "mode": "E140M", "nominal": 1.1239460625451203e-14, "lam_med": 1380.2786909762594}, {"file": "oeuc3s030_x1d.fits", "star": "SK -67 216", "mode": "E140M", "nominal": 1.1304346511233034e-14, "lam_med": 1380.0251128049895}, {"file": "oeuc4s010_x1d.fits", "star": "SK -70 13", "mode": "E140M", "nominal": 1.645059010371938e-14, "lam_med": 1379.6461023319548}, {"file": "oeuc4s020_x1d.fits", "star": "SK -70 13", "mode": "E140M", "nominal": 1.536225190327488e-14, "lam_med": 1380.1801600207032}, {"file": "oeuf1s010_x1d.fits", "star": "LHA 120-S 6", "mode": "E140M", "nominal": 1.0685644912544682e-14, "lam_med": 1380.7984691106049}, {"file": "oeuf1s020_x1d.fits", "star": "LHA 120-S 6", "mode": "E140M", "nominal": 9.95417922606491e-15, "lam_med": 1380.8345615395353}, {"file": "oeuf1s030_x1d.fits", "star": "LHA 120-S 6", "mode": "E140M", "nominal": 1.0004450352812753e-14, "lam_med": 1380.8001043431782}, {"file": "oeuf2s010_x1d.fits", "star": "BRRG 75", "mode": "E140M", "nominal": 1.2087662528370123e-14, "lam_med": 1380.4941904012508}, {"file": "oeuf2s020_x1d.fits", "star": "BRRG 75", "mode": "E140M", "nominal": 1.1456201308703788e-14, "lam_med": 1380.3307739592854}, {"file": "oeuf2s030_x1d.fits", "star": "BRRG 75", "mode": "E140M", "nominal": 1.1631529230979073e-14, "lam_med": 1380.4036358042067}, {"file": "oeuf3s010_x1d.fits", "star": "SK -66 18", "mode": "E140M", "nominal": 1.2343844274048158e-14, "lam_med": 1380.0127002580882, "rec": [0.0, 0.40476190476190477, 0.75, 0.7857142857142857, 0.8604651162790697, 0.8536585365853658]}, {"file": "oeuf3s020_x1d.fits", "star": "SK -66 18", "mode": "E140M", "nominal": 1.1492349905308785e-14, "lam_med": 1380.2125271406203}, {"file": "oeuf4s010_x1d.fits", "star": "SK -70 69", "mode": "E140M", "nominal": 1.1061794953296513e-14, "lam_med": 1379.6494063858925}, {"file": "oeuf4s020_x1d.fits", "star": "SK -70 69", "mode": "E140M", "nominal": 1.025243515530199e-14, "lam_med": 1379.6670243237131}, {"file": "oeuf4s030_x1d.fits", "star": "SK -70 69", "mode": "E140M", "nominal": 1.0350530341558521e-14, "lam_med": 1379.7616882233606}, {"file": "oeui1s010_x1d.fits", "star": "SK -66 100", "mode": "E140M", "nominal": 1.4070571694905203e-14, "lam_med": 1379.7712670765543}, {"file": "oeui1s020_x1d.fits", "star": "SK -66 100", "mode": "E140M", "nominal": 1.3053851220505254e-14, "lam_med": 1379.913837166871}, {"file": "oeuk1s010_x1d.fits", "star": "SK -67 261", "mode": "E140M", "nominal": 1.453601369638538e-14, "lam_med": 1380.1476011376797}, {"file": "oeuk1s020_x1d.fits", "star": "SK -67 261", "mode": "E140M", "nominal": 1.3530138387246409e-14, "lam_med": 1379.4216586409734, "rec": [0.0, 0.375, 0.6976744186046512, 0.7674418604651163, 0.813953488372093, 0.8809523809523809]}, {"file": "oeuk1s030_x1d.fits", "star": "SK -67 261", "mode": "E140M", "nominal": 1.355777762168767e-14, "lam_med": 1379.440130753082}, {"file": "oevc01010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2700099011174152e-14, "lam_med": 2633.104808865722}, {"file": "oevc01020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.6454814489663923e-14, "lam_med": 2633.063294730834}, {"file": "oevc01030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.461174067007679e-14, "lam_med": 2633.1132113488284}, {"file": "oevc01040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0994322120915798e-14, "lam_med": 2633.120770495131}, {"file": "oevc01050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.4105405849157908e-14, "lam_med": 2633.119731527745, "rec": [0.0, 0.0, 0.08333333333333333, 0.041666666666666664, 0.16666666666666666, 0.375]}, {"file": "oevc02010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.4127271406207675e-14, "lam_med": 2633.0276787209586}, {"file": "oevc02020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.2886440325294826e-14, "lam_med": 2632.9855528830185}, {"file": "oevc02030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.45000952986169e-14, "lam_med": 2633.041761386651}, {"file": "oevc02040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0786051933439381e-14, "lam_med": 2633.041484041806}, {"file": "oevc02050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.4158134103481823e-14, "lam_med": 2633.0449073815985}, {"file": "oevc03010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.901191290025159e-14, "lam_med": 2632.647243775327}, {"file": "oevc03020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.213203914510608e-14, "lam_med": 2632.608346186321}, {"file": "oevc03030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.4860494015382177e-14, "lam_med": 2632.663582338733}, {"file": "oevc03040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2870817777250598e-14, "lam_med": 2632.6680111952437}, {"file": "oevc03050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.3903971402469972e-14, "lam_med": 2632.6882806380318}, {"file": "oevc04010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.3173117816748526e-14, "lam_med": 2632.581068134485}, {"file": "oevc04020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.651107029184471e-14, "lam_med": 2632.557214494531, "rec": [0.0, 0.0, 0.25, 0.4166666666666667, 0.4782608695652174, 0.5833333333333334]}, {"file": "oevc04030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2491855086386057e-14, "lam_med": 2632.602028197317}, {"file": "oevc04040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.483919367035419e-15, "lam_med": 2632.623924594265}, {"file": "oevc04050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2825672196107969e-14, "lam_med": 2632.588069463159}, {"file": "oevc05010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.354273545511103e-14, "lam_med": 2633.12058215943}, {"file": "oevc05020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.67117440292444e-14, "lam_med": 2633.081574407207}, {"file": "oevc05030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.3750737442558009e-14, "lam_med": 2633.131845783692}, {"file": "oevc05040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.3704760192905e-15, "lam_med": 2633.1346796972152}, {"file": "oevc05050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.5300864171365e-14, "lam_med": 2633.1378417735464}, {"file": "oevd01010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.1242439138749055e-15, "lam_med": 2157.2045793745165}, {"file": "oevd01020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.6176533526789e-15, "lam_med": 2157.2373479209873}, {"file": "oevd01030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.80146618268373e-15, "lam_med": 2157.2199736111643}, {"file": "oevd02010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.981140750947587e-15, "lam_med": 2157.238443087971}, {"file": "oevd02020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.184049215886812e-15, "lam_med": 2157.268891460407}, {"file": "oevd02030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.236753624423462e-15, "lam_med": 2157.2680751276694}, {"file": "oevd03010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.222970752969433e-15, "lam_med": 2157.28950088473}, {"file": "oevd03020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.680694680842512e-15, "lam_med": 2157.3177972253707}, {"file": "oevd03030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.8672794582032716e-15, "lam_med": 2157.3099388408896}, {"file": "oevd04010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.045684646361255e-15, "lam_med": 2157.262464605627}, {"file": "oevd04020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.5228816023656462e-15, "lam_med": 2157.277122935401}, {"file": "oevd04030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.714839689860051e-15, "lam_med": 2157.295222498393}, {"file": "oevd05010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.680458673292451e-15, "lam_med": 2157.294262848596}, {"file": "oevd05020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.973393617804075e-15, "lam_med": 2157.3100031936447}, {"file": "oevd05030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.062879383725138e-15, "lam_med": 2157.309865074644}, {"file": "oevd06010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.780217444436251e-15, "lam_med": 2157.209870161158}, {"file": "oevd06020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.042550141511763e-15, "lam_med": 2157.2538615128706}, {"file": "oevd06030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.112308739382838e-15, "lam_med": 2157.2563276057385}, {"file": "oevd07010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.067974335402123e-15, "lam_med": 2157.2096564059725}, {"file": "oevd07020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.4461041802834927e-15, "lam_med": 2157.2226786552073}, {"file": "oevd07030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.6136955584931656e-15, "lam_med": 2157.282835708985}, {"file": "oevd08010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.554269405112955e-15, "lam_med": 2157.2251051663534}, {"file": "oevd08020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.8892673837069724e-15, "lam_med": 2157.269133324732}, {"file": "oevd08030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.975585429371423e-15, "lam_med": 2157.2718731350114, "rec": [0.0, 0.35555555555555557, 0.7555555555555555, 1.0, 1.0, 0.9777777777777777]}, {"file": "oevd09010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.3426091543669212e-15, "lam_med": 2157.3686988021554}, {"file": "oevd09020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 2.925990962150008e-15, "lam_med": 2157.400500841076}, {"file": "oevd09030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 2.7545491307439257e-15, "lam_med": 2157.3976654639837}, {"file": "oevd10010_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 4.1478008706820585e-15, "lam_med": 2157.240307379342}, {"file": "oevd10020_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.61210217582597e-15, "lam_med": 2157.2915555898626}, {"file": "oevd10030_x1d.fits", "star": "CD-52 112", "mode": "E230H", "nominal": 3.738893054965715e-15, "lam_med": 2157.2925270400324}, {"file": "oevd11010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 5.000219477603202e-15, "lam_med": 2156.939128241626}, {"file": "oevd11030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.3123304521541925e-15, "lam_med": 2156.987385693582}, {"file": "oevd12010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.949218030215334e-15, "lam_med": 2157.4016575793985}, {"file": "oevd12020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.417051356692256e-15, "lam_med": 2157.4356408361814}, {"file": "oevd12030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.521049679124635e-15, "lam_med": 2157.4153037271326}, {"file": "oevd13010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.001284825055963e-15, "lam_med": 2157.400739178096}, {"file": "oevd13020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.4698562991646336e-15, "lam_med": 2157.420847110752}, {"file": "oevd13030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.220925957703716e-15, "lam_med": 2157.308230437748}, {"file": "oevd14010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.9484009988691464e-15, "lam_med": 2157.3895501212464, "rec": [0.044444444444444446, 0.4444444444444444, 0.7111111111111111, 1.0, 1.0, 1.0]}, {"file": "oevd14020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.395901988990239e-15, "lam_med": 2157.404925757407}, {"file": "oevd14030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.5110892578784743e-15, "lam_med": 2157.3871098567392}, {"file": "oevd15010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.352786798557505e-15, "lam_med": 2157.3815621553695}, {"file": "oevd15020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.2334464697981088e-15, "lam_med": 2157.499270658758}, {"file": "oevd16020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.545276526367191e-15, "lam_med": 2157.064931772461}, {"file": "oevd16030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.724684005003138e-15, "lam_med": 2157.0399574844473}, {"file": "oevd17010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.497731419628056e-15, "lam_med": 2157.0385650088992}, {"file": "oevd17020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.949586509273164e-15, "lam_med": 2157.03885198517}, {"file": "oevd17030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.7822986592173445e-15, "lam_med": 2157.0137239004316}, {"file": "oevd18010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 5.057554418973775e-15, "lam_med": 2157.0086471596715}, {"file": "oevd18020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.285356929967362e-15, "lam_med": 2157.0338266585577}, {"file": "oevd18030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.3330088922589316e-15, "lam_med": 2157.0277250353374}, {"file": "oevd19010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.505382498829743e-15, "lam_med": 2157.0078989955964}, {"file": "oevd19020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.916390180307119e-15, "lam_med": 2157.013894495645}, {"file": "oevd19030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.0930818461564846e-15, "lam_med": 2157.007530309755}, {"file": "oevd20010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.275938784748825e-15, "lam_med": 2157.014549086481}, {"file": "oevd20020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.746005441944297e-15, "lam_med": 2157.0379969628766}, {"file": "oevd20030_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.916091864343506e-15, "lam_med": 2157.031375551014}, {"file": "oevd61010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.14165555612474e-15, "lam_med": 2157.3807495293377}, {"file": "oevd61020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.526925517488373e-15, "lam_med": 2157.4060945182346}, {"file": "oevd66010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.289274007786828e-15, "lam_med": 2157.1261486517274}, {"file": "oevd66020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.650120866280693e-15, "lam_med": 2157.181236502294}, {"file": "oevd67010_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 4.663981398568829e-15, "lam_med": 2156.986864003967}, {"file": "oevd67020_x1d.fits", "star": "CD-23 12296", "mode": "E230H", "nominal": 3.583219488794958e-15, "lam_med": 2157.034319266006}, {"file": "oevf08010_x1d.fits", "star": "V* FU Ori", "mode": "E230M", "nominal": 4.462028488740805e-15, "lam_med": 2032.705856412003, "rec": [0.02631578947368421, 0.5789473684210527, 0.868421052631579, 1.0, 0.9210526315789473, 0.9473684210526315]}, {"file": "oevf08020_x1d.fits", "star": "V* FU Ori", "mode": "E230M", "nominal": 4.193459274012739e-15, "lam_med": 2032.6854830121324}, {"file": "oevf08030_x1d.fits", "star": "V* FU Ori", "mode": "E230M", "nominal": 4.4078421291682865e-15, "lam_med": 2032.6854689950023}, {"file": "oevf08050_x1d.fits", "star": "V* FU Ori", "mode": "E230M", "nominal": 1.8362970956199555e-15, "lam_med": 2631.1934593509577}, {"file": "oevg10010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 7.036153352556212e-15, "lam_med": 1381.0862340616297}, {"file": "oevg10020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.2295482570472163e-12, "lam_med": 2696.0520307217007}, {"file": "oevg10030_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 7.712208810389213e-14, "lam_med": 2696.04260482472}, {"file": "oevg10040_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 3.4162396538683945e-15, "lam_med": 1380.9723692527377, "rec": [0.0, 0.16666666666666666, 0.2857142857142857, 0.48148148148148145, 0.5714285714285714, 0.8024691358024691]}, {"file": "oevg11010_x1d.fits", "star": "* alf Cen A", "mode": "E140M", "nominal": 6.968340378849522e-15, "lam_med": 1380.4842166688343}, {"file": "oevg11020_x1d.fits", "star": "* alf Cen A", "mode": "E230H", "nominal": 1.1845054765712491e-12, "lam_med": 2696.3889926691104}, {"file": "oevg11030_x1d.fits", "star": "* alf Cen B", "mode": "E230H", "nominal": 7.895106676111569e-14, "lam_med": 2696.3792171401174}, {"file": "oevg11040_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 3.711670114239927e-15, "lam_med": 1380.5059021399838}, {"file": "oevq01010_x1d.fits", "star": "ATO J300.8707+08.6463", "mode": "E140M", "nominal": 1.3302972355859331e-14, "lam_med": 1379.622323480481, "rec": [0.0, 0.425, 0.6829268292682927, 0.8095238095238095, 0.8780487804878049, 0.8571428571428571]}, {"file": "oevq01020_x1d.fits", "star": "ATO J300.8707+08.6463", "mode": "E140M", "nominal": 7.329772293679516e-15, "lam_med": 1379.9678794262823}, {"file": "oevq02010_x1d.fits", "star": "ATO J300.8707+08.6463", "mode": "E140M", "nominal": 1.2922753139440139e-14, "lam_med": 1379.785083131611}, {"file": "oevq02030_x1d.fits", "star": "ATO J300.8707+08.6463", "mode": "E140M", "nominal": 1.1896514215886117e-14, "lam_med": 1380.0124973712777}, {"file": "oevq52010_x1d.fits", "star": "ATO J300.8707+08.6463", "mode": "E140M", "nominal": 1.3384017271863838e-14, "lam_med": 1379.6802242296444}, {"file": "oevq52020_x1d.fits", "star": "ATO J300.8707+08.6463", "mode": "E140M", "nominal": 1.2219146007571985e-14, "lam_med": 1379.9125698484072}, {"file": "oevq52030_x1d.fits", "star": "ATO J300.8707+08.6463", "mode": "E140M", "nominal": 1.2302292269707431e-14, "lam_med": 1379.956449255712}, {"file": "oewge1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.638837766011102e-14, "lam_med": 2257.7840361065755}, {"file": "oewge1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9503132481138074e-13, "lam_med": 1381.1684223398152}, {"file": "oewge1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.82353645510347e-14, "lam_med": 2631.093719238819}, {"file": "oewge1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.775659640512366e-13, "lam_med": 1917.288231709545}, {"file": "oewge1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.680994978879942e-14, "lam_med": 1414.8699302746963}, {"file": "oewge2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.669261907050392e-14, "lam_med": 2258.1560664667904}, {"file": "oewge2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9253863415270253e-13, "lam_med": 1380.8362438924323}, {"file": "oewge2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.876751565831917e-14, "lam_med": 2633.1129857562128}, {"file": "oewge2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.8092275086987157e-13, "lam_med": 1917.615793626655}, {"file": "oewge2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.693473730838682e-14, "lam_med": 1415.125682919267}, {"file": "oewge3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6517854575856046e-14, "lam_med": 2258.0610798354687}, {"file": "oewge3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.972549766230032e-13, "lam_med": 1380.531292236898}, {"file": "oewge3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.815058024818916e-14, "lam_med": 2633.0464176191485}, {"file": "oewge3040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7894614610564578e-13, "lam_med": 1917.5859328780073}, {"file": "oewge3050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.784626433722839e-14, "lam_med": 1415.0948412711687}, {"file": "oewge4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.667849271449494e-14, "lam_med": 2257.9464432720906}, {"file": "oewge4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9582323959720976e-13, "lam_med": 1380.603733359453}, {"file": "oewge4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.824903817705249e-14, "lam_med": 2632.920317514507}, {"file": "oewge4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.796544924154328e-13, "lam_med": 1917.367629925301}, {"file": "oewge4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.767827450806474e-14, "lam_med": 1414.9845854672883}, {"file": "oewi01010_x1d.fits", "star": "HD 215227", "mode": "E140M", "nominal": 4.6407393723736105e-14, "lam_med": 1379.7282667976965}, {"file": "oewi04010_x1d.fits", "star": "HD 215227", "mode": "E140M", "nominal": 4.713354502534851e-14, "lam_med": 1379.977215061249}, {"file": "oewia2010_x1d.fits", "star": "HD 215227", "mode": "E140M", "nominal": 4.678858024092747e-14, "lam_med": 1380.4745462590026}, {"file": "oewv01010_x1d.fits", "star": "HD 194598", "mode": "E230H", "nominal": 6.5406789816259e-15, "lam_med": 2744.1245017008514}, {"file": "oewv02010_x1d.fits", "star": "HD 194598", "mode": "E230H", "nominal": 6.8990081615826715e-15, "lam_med": 2744.050480742916}, {"file": "oewv03010_x1d.fits", "star": "HD 194598", "mode": "E230H", "nominal": 1.096301648290181e-14, "lam_med": 3016.5973047538437}, {"file": "oewv04010_x1d.fits", "star": "HD 111980", "mode": "E230H", "nominal": 5.784918622071197e-15, "lam_med": 2744.4972624963552}, {"file": "oewv05010_x1d.fits", "star": "HD 111980", "mode": "E230H", "nominal": 6.119549200119652e-15, "lam_med": 2744.443719167114}, {"file": "oewv06010_x1d.fits", "star": "HD 111980", "mode": "E230H", "nominal": 9.630627949370255e-15, "lam_med": 3016.5105483677594}, {"file": "oewv07010_x1d.fits", "star": "HD 132475", "mode": "E230H", "nominal": 5.8226788149233965e-15, "lam_med": 2744.380401366858}, {"file": "oewv08010_x1d.fits", "star": "HD 132475", "mode": "E230H", "nominal": 5.947759801999493e-15, "lam_med": 2744.3617797574066, "rec": [0.0625, 0.3125, 0.5625, 0.6, 0.7625, 0.9012345679012346]}, {"file": "oewv09010_x1d.fits", "star": "HD 132475", "mode": "E230H", "nominal": 9.580643018570297e-15, "lam_med": 3016.4308722356564}, {"file": "oewv10010_x1d.fits", "star": "HD 284248", "mode": "E230H", "nominal": 5.350958720932869e-15, "lam_med": 2744.346853839241}, {"file": "oewv11010_x1d.fits", "star": "HD 284248", "mode": "E230H", "nominal": 5.197069018596897e-15, "lam_med": 2744.385107181224, "rec": [0.018518518518518517, 0.49056603773584906, 0.5887850467289719, 0.8018867924528302, 0.8504672897196262, 0.9428571428571428]}, {"file": "oewv12010_x1d.fits", "star": "HD 284248", "mode": "E230H", "nominal": 8.49121874805865e-15, "lam_med": 3016.380600359817}, {"file": "oewv13010_x1d.fits", "star": "HD 284248", "mode": "E230H", "nominal": 8.650628435921842e-15, "lam_med": 3016.375968112039, "rec": [0.043478260869565216, 0.6231884057971014, 0.8405797101449275, 0.8840579710144928, 0.9565217391304348, 0.9710144927536232]}, {"file": "oexb01010_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.15709831285497e-14, "lam_med": 1380.785869984288}, {"file": "oexb01020_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.1482004506040976e-14, "lam_med": 1380.9272111735077}, {"file": "oexb01030_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.134202441775171e-14, "lam_med": 1381.0461964305073}, {"file": "oexb01040_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.1303349462378584e-14, "lam_med": 1381.224373072935}, {"file": "oexb01050_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.785093624543519e-14, "lam_med": 1380.7767637897982}, {"file": "oexb01060_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.8232357484675096e-14, "lam_med": 1380.9103080538973}, {"file": "oexb01070_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.817066980707664e-14, "lam_med": 1380.7102768342866}, {"file": "oexb01080_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.814260203124336e-14, "lam_med": 1381.1470003743007}, {"file": "oexb01090_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.284465934676606e-14, "lam_med": 1381.0871547131146}, {"file": "oexb010a0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.302402810527419e-14, "lam_med": 1381.0500648127122}, {"file": "oexb010b0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.334293747519784e-14, "lam_med": 1381.1241698341653}, {"file": "oexb010c0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.315828504374308e-14, "lam_med": 1381.1835185219484}, {"file": "oexb010d0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 4.170132331683417e-14, "lam_med": 1381.324270757109}, {"file": "oexb010e0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.854743486908786e-14, "lam_med": 1381.155167355787}, {"file": "oexb010f0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.871063709974765e-14, "lam_med": 1380.9628755898618}, {"file": "oexb010g0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.8827682377427065e-14, "lam_med": 1381.0961197994816}, {"file": "oexb010h0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.873486302279508e-14, "lam_med": 1381.4364203448622}, {"file": "oexb010i0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.871368204834941e-14, "lam_med": 1381.2284495431654}, {"file": "oexb010j0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.8914861356603415e-14, "lam_med": 1380.9470466977332}, {"file": "oexb010k0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.9129814282913366e-14, "lam_med": 1381.1320544190294}, {"file": "oexb010l0_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 3.90711578355594e-14, "lam_med": 1381.4724654647423}, {"file": "oexp02010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.8925490236189726e-15, "lam_med": 1289.407694023827}, {"file": "oexp02020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.350949417984903e-15, "lam_med": 1289.2802113764817}, {"file": "oexp03010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.8863246548176283e-15, "lam_med": 1289.4583705156706}, {"file": "oexp03020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.385086299797263e-15, "lam_med": 1289.3407488814182}, {"file": "oexp04010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.9119704246197018e-15, "lam_med": 1289.4581579285511}, {"file": "oexp04020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.3880156033064203e-15, "lam_med": 1289.34424607031}, {"file": "oexp05010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 3.0031415224555598e-15, "lam_med": 1289.4662945467105}, {"file": "oexp05020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.462557910442545e-15, "lam_med": 1289.3801478412875}, {"file": "oexp06010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 3.0491632127230905e-15, "lam_med": 1289.5300313654584}, {"file": "oexp06020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.5047581824860135e-15, "lam_med": 1289.4971908089697}, {"file": "oexp07010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.8950298114242198e-15, "lam_med": 1289.5481867034937}, {"file": "oexp07020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.3717673718815366e-15, "lam_med": 1289.5615304593375}, {"file": "oexp08010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 3.0083290500260792e-15, "lam_med": 1289.4792455595466}, {"file": "oexp08020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.4625324192311286e-15, "lam_med": 1289.4236681260659}, {"file": "oexp09010_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.8523325182157042e-15, "lam_med": 1289.622647782202}, {"file": "oexp09020_x1d.fits", "star": "NVSS J143622+584741", "mode": "E140H", "nominal": 2.3277163895448743e-15, "lam_med": 1289.5326290024714}, {"file": "oexq01010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.7205879523435725e-17, "lam_med": 1383.1537090540328}, {"file": "oexq01020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 6.940705973341786e-16, "lam_med": 1380.3372490183833}, {"file": "oexq02010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.689701552550818e-15, "lam_med": 1378.9116523989667}, {"file": "oexq02020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.9633867678632278e-15, "lam_med": 1379.3878189716777}, {"file": "oexq02030_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.175047970671741e-15, "lam_med": 1379.5074580703747}, {"file": "oexq02040_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.3110190320819337e-15, "lam_med": 1378.5369773359084}, {"file": "oexq02050_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.396637280623112e-15, "lam_med": 1378.6943979089763}, {"file": "oexq03010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.2964873847354057e-17, "lam_med": 1381.5611648264376}, {"file": "oexq03020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 7.049797536602631e-16, "lam_med": 1376.9388120174656}, {"file": "oexq04010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 8.973082964772561e-16, "lam_med": 1379.213082753698}, {"file": "oexq04020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.1368961921690538e-15, "lam_med": 1379.3481953278852}, {"file": "oexq04030_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.4479248760560978e-15, "lam_med": 1379.8963455986454}, {"file": "oexq04040_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.834685188114528e-15, "lam_med": 1379.5263637617954}, {"file": "oexq04050_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.136795268981184e-15, "lam_med": 1379.6001162514565}, {"file": "oexq53020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 4.485285553691553e-15, "lam_med": 1379.7850643429588, "rec": [0.0, 0.5121951219512195, 0.5853658536585366, 0.9047619047619048, 0.925, 0.975609756097561]}, {"file": "oey801010_x1d.fits", "star": "LS IV -14 116", "mode": "E140M", "nominal": 2.1457838868423392e-14, "lam_med": 1379.9742976387015}, {"file": "oey801030_x1d.fits", "star": "LS IV -14 116", "mode": "E140M", "nominal": 1.955377361147652e-14, "lam_med": 1379.466688199678}, {"file": "oey802010_x1d.fits", "star": "EC 22536-5304", "mode": "E140M", "nominal": 1.5835192829514404e-14, "lam_med": 1380.11890739185}, {"file": "oey802020_x1d.fits", "star": "EC 22536-5304", "mode": "E140M", "nominal": 1.476884856181907e-14, "lam_med": 1379.7570355873854}, {"file": "oey802030_x1d.fits", "star": "EC 22536-5304", "mode": "E140M", "nominal": 1.4842633760082798e-14, "lam_med": 1379.8302461927508}, {"file": "oey803010_x1d.fits", "star": "HD 127493", "mode": "E140H", "nominal": 5.922490176592069e-14, "lam_med": 1253.7652448313033}, {"file": "oey803020_x1d.fits", "star": "HD 127493", "mode": "E140H", "nominal": 4.8871589044930616e-14, "lam_med": 1253.6990461636879}, {"file": "oey804010_x1d.fits", "star": "LS IV -14 116", "mode": "E140M", "nominal": 2.1309788466136722e-14, "lam_med": 1379.7587568135477}, {"file": "oeyea2010_x1d.fits", "star": "HD 92406", "mode": "E140M", "nominal": 6.956669033839028e-14, "lam_med": 1380.604709596691}, {"file": "oeyeb2010_x1d.fits", "star": "HD 92406", "mode": "E230M", "nominal": 8.729044958576026e-14, "lam_med": 2032.447899532966, "rec": [0.0, 0.10526315789473684, 0.3157894736842105, 0.6052631578947368, 0.7368421052631579, 0.9210526315789473]}, {"file": "oez502010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.1596939516837116e-13, "lam_med": 2696.4038877757635}, {"file": "oez504010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.1623671749563264e-13, "lam_med": 2696.3816981140144}, {"file": "oez506010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.202954790972909e-13, "lam_med": 2696.364367050595}, {"file": "oez508010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.1601765072205481e-13, "lam_med": 2696.370766926439}, {"file": "oez510010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.19488799796418e-13, "lam_med": 2696.343819189953}, {"file": "oez512010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.198041657366246e-13, "lam_med": 2696.2033526831005}, {"file": "oez514010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.2053991776785183e-13, "lam_med": 2696.196695069644}, {"file": "oez516010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.2108773715911727e-13, "lam_med": 2696.175930746051}, {"file": "oez554010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.188826294125718e-13, "lam_med": 2696.17235213562}, {"file": "oez556010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 5.6383108015750306e-14, "lam_med": 2696.153250210882}, {"file": "oez560010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.208602733880164e-13, "lam_med": 2696.1791037504836}, {"file": "oez562010_x1d.fits", "star": "HD 172555", "mode": "E230H", "nominal": 1.1895154005363051e-13, "lam_med": 2695.9937390345}, {"file": "oezca1010_x1d.fits", "star": "GALEX J031437.3+313639", "mode": "E140M", "nominal": 2.5191003947256094e-14, "lam_med": 1379.37330356054}, {"file": "oezca1020_x1d.fits", "star": "GALEX J031437.3+313639", "mode": "E140M", "nominal": 2.3015493927457746e-14, "lam_med": 1379.7268829111765}, {"file": "oezca2010_x1d.fits", "star": "UCAC4 429-006270", "mode": "E140M", "nominal": 1.706671324823467e-14, "lam_med": 1379.7405687822325}, {"file": "oezca2020_x1d.fits", "star": "UCAC4 429-006270", "mode": "E140M", "nominal": 1.5530757212993338e-14, "lam_med": 1380.0036205311465}, {"file": "oezca3010_x1d.fits", "star": "FBS 0706+407", "mode": "E140M", "nominal": 1.806146745472563e-14, "lam_med": 1379.9706189078192, "rec": [0.024390243902439025, 0.475, 0.6829268292682927, 0.7894736842105263, 0.813953488372093, 0.925]}, {"file": "oezca3020_x1d.fits", "star": "FBS 0706+407", "mode": "E140M", "nominal": 6.922487394678171e-16, "lam_med": 1380.5079709467295, "rec": [0.07894736842105263, 0.1282051282051282, 0.23809523809523808, 0.225, 0.5238095238095238, 0.625]}, {"file": "oezca4010_x1d.fits", "star": "Gaia DR3 866719456827107712", "mode": "E140M", "nominal": 1.873358050524906e-14, "lam_med": 1378.4263139594864}, {"file": "oezca4020_x1d.fits", "star": "Gaia DR3 866719456827107712", "mode": "E140M", "nominal": 1.6893610900342092e-14, "lam_med": 1379.3573978074562, "rec": [0.024390243902439025, 0.5116279069767442, 0.525, 0.8095238095238095, 0.7619047619047619, 0.775]}, {"file": "oezca5010_x1d.fits", "star": "UCAC4 524-042847", "mode": "E140M", "nominal": 1.966088371272823e-14, "lam_med": 1379.623597118556, "rec": [0.0, 0.5348837209302325, 0.7560975609756098, 0.9285714285714286, 0.8333333333333334, 0.7857142857142857]}, {"file": "oezca5020_x1d.fits", "star": "UCAC4 524-042847", "mode": "E140M", "nominal": 1.7783352434815647e-14, "lam_med": 1379.7804518429593}, {"file": "oezca7010_x1d.fits", "star": "GALEX J194511.4-445954", "mode": "E140M", "nominal": 2.0731119167603484e-14, "lam_med": 1380.2533845568569, "rec": [0.0, 0.5, 0.8, 0.8, 0.8974358974358975, 0.925]}, {"file": "oezca7020_x1d.fits", "star": "GALEX J194511.4-445954", "mode": "E140M", "nominal": 1.8774331619489362e-14, "lam_med": 1380.6042126352054}, {"file": "oezca8010_x1d.fits", "star": "PHL 497", "mode": "E140M", "nominal": 1.7428174130718425e-14, "lam_med": 1379.9964941200135}, {"file": "oezca8020_x1d.fits", "star": "PHL 497", "mode": "E140M", "nominal": 1.56762892798891e-14, "lam_med": 1380.149290915584}, {"file": "oezca9010_x1d.fits", "star": "FBS 0702+616", "mode": "E140M", "nominal": 2.4511730266484322e-14, "lam_med": 1379.8414587906939}, {"file": "oezca9020_x1d.fits", "star": "FBS 0702+616", "mode": "E140M", "nominal": 2.2544526056359612e-14, "lam_med": 1379.843678386162}, {"file": "oezcaa010_x1d.fits", "star": "PG 1141+078", "mode": "E140M", "nominal": 1.6862100252401863e-14, "lam_med": 1379.6754671741683}, {"file": "oezcaa020_x1d.fits", "star": "PG 1141+078", "mode": "E140M", "nominal": 1.5268582454999496e-14, "lam_med": 1379.5687373975238}, {"file": "oezcab010_x1d.fits", "star": "UCAC4 712-065016", "mode": "E140M", "nominal": 2.0141422085243996e-14, "lam_med": 1379.1590991969929}, {"file": "oezcab020_x1d.fits", "star": "UCAC4 712-065016", "mode": "E140M", "nominal": 1.8494693999052874e-14, "lam_med": 1379.354994525946}, {"file": "oezcac010_x1d.fits", "star": "RX J2124.9+2826", "mode": "E140M", "nominal": 1.9597649438920274e-14, "lam_med": 1380.0420475974547}, {"file": "oezcac020_x1d.fits", "star": "RX J2124.9+2826", "mode": "E140M", "nominal": 1.735876294259301e-14, "lam_med": 1380.680284499384}, {"file": "oezcad010_x1d.fits", "star": "Cl* NGC 7092 PLAT 6931", "mode": "E140M", "nominal": 1.2317279817502787e-14, "lam_med": 1380.5093280244037}, {"file": "oezcad020_x1d.fits", "star": "Cl* NGC 7092 PLAT 6931", "mode": "E140M", "nominal": 1.1194426516451195e-14, "lam_med": 1380.4673147940389}, {"file": "oezcae010_x1d.fits", "star": "EC 11575-1845", "mode": "E140M", "nominal": 2.501513800603972e-14, "lam_med": 1380.2398982100815}, {"file": "oezcae020_x1d.fits", "star": "EC 11575-1845", "mode": "E140M", "nominal": 2.320443689876535e-14, "lam_med": 1380.0709898048262}, {"file": "oezcag010_x1d.fits", "star": "FBS 0212+385", "mode": "E140M", "nominal": 1.9738325538263958e-14, "lam_med": 1379.3913418010304}, {"file": "oezcag020_x1d.fits", "star": "FBS 0212+385", "mode": "E140M", "nominal": 1.7848047932471893e-14, "lam_med": 1378.711443053017}, {"file": "oezm01010_x1d.fits", "star": "MR 35", "mode": "E230H", "nominal": 1.2564948928398545e-14, "lam_med": 2507.461568573505}, {"file": "oezm01020_x1d.fits", "star": "MR 35", "mode": "E230H", "nominal": 8.269581215906915e-15, "lam_med": 2744.1558636501472}, {"file": "oezm02010_x1d.fits", "star": "V* AG Car", "mode": "E140H", "nominal": 6.3965802501452485e-15, "lam_med": 1228.0309980763814}, {"file": "oezm02020_x1d.fits", "star": "V* AG Car", "mode": "E230H", "nominal": 1.2889825862011976e-14, "lam_med": 2008.4854290457763}, {"file": "oezm03010_x1d.fits", "star": "V* AG Car", "mode": "E230H", "nominal": 9.248808892826347e-14, "lam_med": 2507.599344141228}, {"file": "oezm03020_x1d.fits", "star": "V* AG Car", "mode": "E230H", "nominal": 2.556241343646931e-13, "lam_med": 3016.1615456759955}, {"file": "oezm03030_x1d.fits", "star": "V* AG Car", "mode": "E140H", "nominal": 1.0593572889798472e-14, "lam_med": 1415.0247046448226}, {"file": "oezm03040_x1d.fits", "star": "V* AG Car", "mode": "E140H", "nominal": 1.530201669094612e-14, "lam_med": 1584.9962234289862}, {"file": "oezm04010_x1d.fits", "star": "HD 90177", "mode": "E230H", "nominal": 1.0336279779011351e-14, "lam_med": 3016.2474358812897}, {"file": "oezm04020_x1d.fits", "star": "HD 90177", "mode": "E230H", "nominal": 7.286468611611305e-15, "lam_med": 2744.254076239302}, {"file": "oezm04030_x1d.fits", "star": "HD 90177", "mode": "E230H", "nominal": 6.6425778099023615e-15, "lam_med": 2507.591348118077}, {"file": "oezm04040_x1d.fits", "star": "HD 90177", "mode": "E140M", "nominal": 4.118971260112664e-15, "lam_med": 1380.3437181682355, "rec": [0.0, 0.38095238095238093, 0.5581395348837209, 0.7804878048780488, 0.9024390243902439, 0.8571428571428571]}, {"file": "oezm05010_x1d.fits", "star": "V* AG Car", "mode": "E230H", "nominal": 7.411497507831188e-14, "lam_med": 2507.692203430748}, {"file": "oezm05020_x1d.fits", "star": "V* AG Car", "mode": "E230H", "nominal": 2.448299745717802e-13, "lam_med": 3016.200396720378}, {"file": "oezm05030_x1d.fits", "star": "V* AG Car", "mode": "E140H", "nominal": 1.4139907346073104e-14, "lam_med": 1415.032630704307}, {"file": "oezm05040_x1d.fits", "star": "V* AG Car", "mode": "E140H", "nominal": 1.272444608958354e-14, "lam_med": 1585.1584667636603}, {"file": "oezm05050_x1d.fits", "star": "V* AG Car", "mode": "E230H", "nominal": 2.179666829600163e-14, "lam_med": 2008.5499619148509}, {"file": "oezq01010_x1d.fits", "star": "HD 215227", "mode": "E140M", "nominal": 5.820954608418403e-14, "lam_med": 1379.4906694346814}, {"file": "oezq01020_x1d.fits", "star": "HD 215227", "mode": "E230M", "nominal": 6.99221467560321e-14, "lam_med": 2032.2937555176761}, {"file": "of0e54030_x1d.fits", "star": "HD 86226", "mode": "E230M", "nominal": 2.0652172464732467e-14, "lam_med": 2632.7247008303284}, {"file": "of1801010_x1d.fits", "star": "HD 113120", "mode": "E140M", "nominal": 2.6210798836536925e-12, "lam_med": 1380.918566194322}, {"file": "of1802010_x1d.fits", "star": "HD 113120", "mode": "E140M", "nominal": 2.627161341076111e-12, "lam_med": 1380.2819011069814}, {"file": "of1803010_x1d.fits", "star": "HD 113120", "mode": "E140M", "nominal": 2.714337253859123e-12, "lam_med": 1380.3250692889865}, {"file": "of1804010_x1d.fits", "star": "* kap01 Aps", "mode": "E140M", "nominal": 3.670645989472705e-12, "lam_med": 1380.8128668883407}, {"file": "of1805010_x1d.fits", "star": "* kap01 Aps", "mode": "E140M", "nominal": 3.9767311653997915e-12, "lam_med": 1380.1744184167608}, {"file": "of1806010_x1d.fits", "star": "* kap01 Aps", "mode": "E140M", "nominal": 4.171865143765631e-12, "lam_med": 1380.4419260624675}, {"file": "of1807010_x1d.fits", "star": "HD 152478", "mode": "E140M", "nominal": 5.804154189321137e-13, "lam_med": 1380.6403073866347}, {"file": "of1808010_x1d.fits", "star": "HD 152478", "mode": "E140M", "nominal": 5.674504599414515e-13, "lam_med": 1380.1878771267195}, {"file": "of1809010_x1d.fits", "star": "HD 152478", "mode": "E140M", "nominal": 5.552848735937196e-13, "lam_med": 1380.881200086657}, {"file": "of1810010_x1d.fits", "star": "* iot Ara", "mode": "E140M", "nominal": 3.817301365526666e-12, "lam_med": 1380.5742878493747}, {"file": "of1812010_x1d.fits", "star": "* iot Ara", "mode": "E140M", "nominal": 4.3917643896678925e-12, "lam_med": 1380.4428635050308, "rec": [0.025, 0.4523809523809524, 0.7560975609756098, 0.8571428571428571, 0.9024390243902439, 0.9302325581395349]}, {"file": "of1813010_x1d.fits", "star": "HD 157832", "mode": "E140M", "nominal": 5.020488714900266e-13, "lam_med": 1379.4461737883976}, {"file": "of1814010_x1d.fits", "star": "HD 157832", "mode": "E140M", "nominal": 4.993595211794559e-13, "lam_med": 1380.1796001345137}, {"file": "of1815010_x1d.fits", "star": "HD 157832", "mode": "E140M", "nominal": 5.203752335115004e-13, "lam_med": 1380.365305852255}, {"file": "of1n1s010_x1d.fits", "star": "PGMW 3204", "mode": "E140M", "nominal": 7.619786610488411e-15, "lam_med": 1379.6373056264608}, {"file": "of1n1s020_x1d.fits", "star": "PGMW 3204", "mode": "E140M", "nominal": 7.0962798266146526e-15, "lam_med": 1379.1948131529775}, {"file": "of1n1s030_x1d.fits", "star": "PGMW 3204", "mode": "E140M", "nominal": 7.127434895366696e-15, "lam_med": 1379.2979137643379}, {"file": "of1n1t010_x1d.fits", "star": "PGMW 3204", "mode": "E140M", "nominal": 7.878446395846266e-15, "lam_med": 1379.7824496135395}, {"file": "of1n1t020_x1d.fits", "star": "PGMW 3204", "mode": "E140M", "nominal": 7.334431639512988e-15, "lam_med": 1380.1967255345612}, {"file": "of1o1s010_x1d.fits", "star": "[ELS2006] N11 046", "mode": "E140M", "nominal": 8.446893350158017e-15, "lam_med": 1379.765628683134}, {"file": "of1o1s020_x1d.fits", "star": "[ELS2006] N11 046", "mode": "E140M", "nominal": 7.763099122145648e-15, "lam_med": 1380.2547401259674}, {"file": "of1o1s030_x1d.fits", "star": "[ELS2006] N11 046", "mode": "E140M", "nominal": 7.880618750232548e-15, "lam_med": 1380.1530420818497}, {"file": "of1o2s010_x1d.fits", "star": "[L72] LH 9-73", "mode": "E140M", "nominal": 8.667431936084659e-15, "lam_med": 1380.7507347910148}, {"file": "of1o2s020_x1d.fits", "star": "[L72] LH 9-73", "mode": "E140M", "nominal": 8.115826095864714e-15, "lam_med": 1380.2305855481}, {"file": "of1o2s030_x1d.fits", "star": "[L72] LH 9-73", "mode": "E140M", "nominal": 8.245110076654523e-15, "lam_med": 1380.1370371195171}, {"file": "of1q1s010_x1d.fits", "star": "HD 271366", "mode": "E140M", "nominal": 1.79343486107845e-14, "lam_med": 1379.419946020987}, {"file": "of1q1s020_x1d.fits", "star": "HD 271366", "mode": "E140M", "nominal": 1.6670651680074272e-14, "lam_med": 1379.604219610673}, {"file": "of1q2s010_x1d.fits", "star": "HD 269244", "mode": "E140M", "nominal": 2.405802645691701e-14, "lam_med": 1380.8053812833768}, {"file": "of2c1s020_x1d.fits", "star": "AzV 238", "mode": "E140M", "nominal": 8.295839573971878e-15, "lam_med": 1379.677315122117}, {"file": "of2c1s030_x1d.fits", "star": "AzV 238", "mode": "E140M", "nominal": 5.266850529512756e-16, "lam_med": 1377.0783597790294}, {"file": "of2c1t010_x1d.fits", "star": "AzV 238", "mode": "E140M", "nominal": 9.759504983951679e-15, "lam_med": 1379.9234928216201, "rec": [0.0, 0.5116279069767442, 0.813953488372093, 0.7073170731707317, 0.926829268292683, 0.825]}, {"file": "of2c1t020_x1d.fits", "star": "AzV 238", "mode": "E140M", "nominal": 9.101049942325367e-15, "lam_med": 1379.8258818127083}, {"file": "of2c1t030_x1d.fits", "star": "AzV 238", "mode": "E140M", "nominal": 9.138764126576179e-15, "lam_med": 1380.085831169077}, {"file": "of2c2s010_x1d.fits", "star": "SK 169", "mode": "E140M", "nominal": 9.575540902718298e-15, "lam_med": 1379.5630927971135, "rec": [0.075, 0.4878048780487805, 0.75, 0.8333333333333334, 0.85, 0.8571428571428571]}, {"file": "of2c2s020_x1d.fits", "star": "SK 169", "mode": "E140M", "nominal": 8.933986728662383e-15, "lam_med": 1379.4135337959485}, {"file": "of2c2s030_x1d.fits", "star": "SK 169", "mode": "E140M", "nominal": 9.055705777670536e-15, "lam_med": 1379.887044292933}, {"file": "of2c2t010_x1d.fits", "star": "SK 169", "mode": "E140M", "nominal": 2.2019684886661924e-14, "lam_med": 1380.5057041031694}, {"file": "of2c2t020_x1d.fits", "star": "SK 169", "mode": "E140M", "nominal": 9.109365023900677e-15, "lam_med": 1379.764588984824}, {"file": "of2l1s010_x1d.fits", "star": "[ELS2006] N11 026", "mode": "E140M", "nominal": 9.104480538648153e-15, "lam_med": 1379.826438050026}, {"file": "of2l1s020_x1d.fits", "star": "[ELS2006] N11 026", "mode": "E140M", "nominal": 8.526845756885534e-15, "lam_med": 1379.9362349927228}, {"file": "of2v1s010_x1d.fits", "star": "[L72] LH 58-496", "mode": "E140M", "nominal": 1.2161406725726743e-14, "lam_med": 1380.0968210307228}, {"file": "of2v1s020_x1d.fits", "star": "[L72] LH 58-496", "mode": "E140M", "nominal": 1.1378292944967078e-14, "lam_med": 1379.555986553652}, {"file": "of2v1s030_x1d.fits", "star": "[L72] LH 58-496", "mode": "E140M", "nominal": 1.140039816495092e-14, "lam_med": 1379.401341600035, "rec": [0.0, 0.47619047619047616, 0.7804878048780488, 0.8604651162790697, 0.9024390243902439, 0.8095238095238095]}, {"file": "of6ee1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6508827920405015e-14, "lam_med": 2257.846194985531}, {"file": "of6ee1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9430104695578245e-13, "lam_med": 1380.6204012137146}, {"file": "of6ee1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.841087521845755e-14, "lam_med": 2632.8096045070756}, {"file": "of6ee1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7941860389093747e-13, "lam_med": 1917.35835955481}, {"file": "of6ee1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.700240753110391e-14, "lam_med": 1414.801274191951}, {"file": "of6ee2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.6755970493789125e-14, "lam_med": 2258.1469924945313}, {"file": "of6ee2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9358126320266675e-13, "lam_med": 1380.6206411957492}, {"file": "of6ee2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 5.817855038931889e-14, "lam_med": 2633.0796673424584}, {"file": "of6ee2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.798973286269255e-13, "lam_med": 1917.612054893878}, {"file": "of6ee2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.638565546662754e-14, "lam_med": 1415.1436415486075}, {"file": "of6ee3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.8962888930934074e-14, "lam_med": 2257.896537902886}, {"file": "of6ee3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.111726299841748e-13, "lam_med": 1380.6587316611312, "rec": [0.023809523809523808, 0.5348837209302325, 0.6904761904761905, 0.7906976744186046, 1.0, 0.9024390243902439]}, {"file": "of6ee3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.351252285331512e-14, "lam_med": 2633.1770796126175}, {"file": "of6ee3040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9527508074231781e-13, "lam_med": 1917.5971710042886}, {"file": "of6ee3050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 8.341067267958815e-14, "lam_med": 1415.123683394674}, {"file": "of6ee4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.9078429890708685e-14, "lam_med": 2257.8909342596103}, {"file": "of6ee4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.0842394051615208e-13, "lam_med": 1380.9365198781938}, {"file": "of6ee4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.35108983719794e-14, "lam_med": 2633.069729160199}, {"file": "of6ee4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9837672919768787e-13, "lam_med": 1917.5311931138585, "rec": [0.0, 0.4358974358974359, 0.8, 0.975, 1.0, 0.975]}, {"file": "of6ee4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 8.328151150388186e-14, "lam_med": 1414.8931558176612}, {"file": "of6r11020_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 3.41266568832046e-15, "lam_med": 1381.338554580785}, {"file": "of6r50020_x1d.fits", "star": "* alf Cen B", "mode": "E140M", "nominal": 3.3085987745900542e-15, "lam_med": 1380.8276593592473}, {"file": "of7201010_x1d.fits", "star": "BD+38 2182", "mode": "E140H", "nominal": 1.46496244525364e-14, "lam_med": 1253.5587988639222}, {"file": "of7201020_x1d.fits", "star": "BD+38 2182", "mode": "E140H", "nominal": 1.3051355641285325e-14, "lam_med": 1448.3371492058623}, {"file": "of7b01010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.0364970145629112e-15, "lam_med": 1380.2613020150043}, {"file": "of7b01020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 8.476553676203288e-16, "lam_med": 1379.7137806977005}, {"file": "of7b06020_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 5.857763547739886e-16, "lam_med": 1374.899311979355}, {"file": "of7b06030_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.0249705521670913e-15, "lam_med": 1376.7864853749916}, {"file": "of7b55010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.033620935446513e-15, "lam_med": 1379.6398918103062}, {"file": "of7b56010_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.0048021657104573e-15, "lam_med": 1379.912036614238}, {"file": "of7b56030_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 1.807192801807344e-15, "lam_med": 1379.1753197342184}, {"file": "of7b56040_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.0463995593271955e-15, "lam_med": 1378.6862201337383}, {"file": "of7b56050_x1d.fits", "star": "HD 197481", "mode": "E140M", "nominal": 2.2497097720259803e-15, "lam_med": 1379.1399520806258}, {"file": "of7z02070_x1d.fits", "star": "HD 260655", "mode": "E140M", "nominal": 8.210168418833719e-16, "lam_med": 1379.358267128111}, {"file": "of7z52070_x1d.fits", "star": "HD 260655", "mode": "E140M", "nominal": 3.088039227674701e-15, "lam_med": 1381.7575762607842}, {"file": "of8w01010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.0511255062012766e-13, "lam_med": 1754.4444400879643}, {"file": "of8w01020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.099021455113011e-13, "lam_med": 1754.437992171405}, {"file": "of8w01030_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.1000535966859316e-13, "lam_med": 1754.421296588448}, {"file": "of8w02010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.0604603404099923e-13, "lam_med": 1754.5701914425085}, {"file": "of8w02020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.104786395305364e-13, "lam_med": 1754.5523635860764}, {"file": "of8w02030_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.100906554720422e-13, "lam_med": 1754.5367190752536}, {"file": "of8w03010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.0442205602761946e-13, "lam_med": 1754.5305694066226}, {"file": "of8w03020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.1020456816422094e-13, "lam_med": 1754.5297542046026}, {"file": "of8w03030_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.101052666401514e-13, "lam_med": 1754.5214119608816}, {"file": "of8w03040_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 4.0957379847952593e-13, "lam_med": 1754.5143638106474}, {"file": "of9l03050_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 3.467278570892543e-16, "lam_med": 1380.8821588018473, "rec": [0.047619047619047616, 0.1282051282051282, 0.1, 0.20512820512820512, 0.2682926829268293, 0.2926829268292683]}, {"file": "of9l03060_x1d.fits", "star": "V* TW Hya", "mode": "E140M", "nominal": 3.054278914858114e-15, "lam_med": 1380.1342035542443}, {"file": "of9o01010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.8778402839838406e-16, "lam_med": 1379.7077507342788}, {"file": "of9o01040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 1.5615364451027994e-15, "lam_med": 1379.758982000009}, {"file": "of9o01050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.2430042745067686e-15, "lam_med": 1379.7802989463432}, {"file": "of9o02010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 3.2961573888031864e-15, "lam_med": 1380.2405555017629}, {"file": "of9o02040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.9909842417764315e-15, "lam_med": 1379.805753058593}, {"file": "of9o02050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 3.2679575213626878e-15, "lam_med": 1380.2165563968397}, {"file": "of9o03010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 3.2209509828948007e-15, "lam_med": 1379.9106085412425}, {"file": "of9o03040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.902070174578052e-15, "lam_med": 1379.154177650348}, {"file": "of9o03050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 3.2127038564913502e-15, "lam_med": 1378.6271216485884}, {"file": "of9o04010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 9.451063151354684e-18, "lam_med": 1379.0317873092984}, {"file": "of9o04040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 1.2206971726518348e-15, "lam_med": 1380.6698436484799}, {"file": "of9o04050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.2244764570199936e-15, "lam_med": 1378.8307961600187}, {"file": "of9o05010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 1.1924221340556412e-17, "lam_med": 1380.1395003003167}, {"file": "of9o05040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 1.1427020542014371e-15, "lam_med": 1380.7095009051232}, {"file": "of9o05050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.096157281572686e-15, "lam_med": 1378.4162736678177}, {"file": "of9o06010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 4.092270127983784e-15, "lam_med": 1380.0460154863097}, {"file": "of9o06040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 3.54432073321446e-15, "lam_med": 1380.026899550699}, {"file": "of9o06050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 3.7562681529015126e-15, "lam_med": 1380.085711645911}, {"file": "of9o07010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.3356741647828154e-17, "lam_med": 1379.7033900100137}, {"file": "of9o07040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 7.555746586646178e-16, "lam_med": 1378.9512975114746}, {"file": "of9o07050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 1.1508717044176706e-15, "lam_med": 1379.1283631468357}, {"file": "of9o08010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 1.357345490064334e-17, "lam_med": 1379.9942291188236}, {"file": "of9o08040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 3.623712156527816e-16, "lam_med": 1379.7341101824743}, {"file": "of9o08050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 7.485248597468525e-16, "lam_med": 1379.5549548461331}, {"file": "of9o09010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 5.039422689871927e-18, "lam_med": 1380.6289700807424}, {"file": "of9o09040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 7.511763203382651e-17, "lam_med": 1380.0238133648131}, {"file": "of9o09050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 8.437820522404344e-16, "lam_med": 1375.3787089576936}, {"file": "of9o10010_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 1.6268824602696209e-15, "lam_med": 1378.9199122492507}, {"file": "of9o10040_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.0282337773649122e-15, "lam_med": 1377.0596479314354}, {"file": "of9o10050_x1d.fits", "star": "V* RU Lup", "mode": "E140M", "nominal": 2.4823255940839552e-15, "lam_med": 1376.584558424861}, {"file": "of9r01010_x1d.fits", "star": "HD 41335", "mode": "E140M", "nominal": 4.350849308274988e-12, "lam_med": 1380.5345810053261}, {"file": "of9r03010_x1d.fits", "star": "HD 41335", "mode": "E140M", "nominal": 4.39840714103315e-12, "lam_med": 1380.041907951261}, {"file": "of9r04010_x1d.fits", "star": "HD 41335", "mode": "E140M", "nominal": 4.029173479541754e-12, "lam_med": 1379.9411036961126}, {"file": "of9r06010_x1d.fits", "star": "* kap Dra", "mode": "E140M", "nominal": 4.9485329796372386e-12, "lam_med": 1380.834713555404}, {"file": "of9r07010_x1d.fits", "star": "* kap Dra", "mode": "E140M", "nominal": 4.990220217096651e-12, "lam_med": 1380.886060189891, "rec": [0.02564102564102564, 0.35714285714285715, 0.7142857142857143, 0.8809523809523809, 0.925, 0.9285714285714286]}, {"file": "of9r08010_x1d.fits", "star": "HD 161306", "mode": "E140M", "nominal": 3.291390854970886e-14, "lam_med": 1378.674784970981}, {"file": "of9r10010_x1d.fits", "star": "HD 161306", "mode": "E140M", "nominal": 2.0334931154750657e-14, "lam_med": 1380.0013454935513}, {"file": "of9r11010_x1d.fits", "star": "* 7 Vul", "mode": "E140M", "nominal": 5.684143831757195e-13, "lam_med": 1379.9603959784715}, {"file": "of9r12010_x1d.fits", "star": "* 7 Vul", "mode": "E140M", "nominal": 5.275272090247017e-13, "lam_med": 1380.5684973390426}, {"file": "of9r13010_x1d.fits", "star": "* 7 Vul", "mode": "E140M", "nominal": 5.346982003089486e-13, "lam_med": 1379.974015265023}, {"file": "of9r14010_x1d.fits", "star": "* 60 Cyg", "mode": "E140M", "nominal": 5.1494710160589996e-12, "lam_med": 1380.116059179808}, {"file": "of9r15010_x1d.fits", "star": "* 60 Cyg", "mode": "E140M", "nominal": 5.727791420655573e-12, "lam_med": 1380.0795551605074}, {"file": "of9r16010_x1d.fits", "star": "* 60 Cyg", "mode": "E140M", "nominal": 5.440903825816622e-12, "lam_med": 1380.707104382724}, {"file": "of9r55010_x1d.fits", "star": "* kap Dra", "mode": "E140M", "nominal": 5.180186223327677e-12, "lam_med": 1380.1842032437853, "rec": [0.024390243902439025, 0.38095238095238093, 0.7380952380952381, 0.8, 0.9285714285714286, 0.9285714285714286]}, {"file": "ofa701010_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 3.0938647099436525e-15, "lam_med": 2632.7170038665063}, {"file": "ofa701020_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.8204714404373894e-15, "lam_med": 2632.7314661827277}, {"file": "ofa701030_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.875300906233126e-15, "lam_med": 2632.7391227948247}, {"file": "ofa702010_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.825125239244751e-15, "lam_med": 2632.7837348911185}, {"file": "ofa702020_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.5337761116770045e-15, "lam_med": 2632.839159876105}, {"file": "ofa702030_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.5663035376629223e-15, "lam_med": 2632.8460559789173}, {"file": "ofa703010_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.5676711045546943e-15, "lam_med": 2633.171658449756}, {"file": "ofa703020_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.343733873602228e-15, "lam_med": 2633.176791066296}, {"file": "ofa703030_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.3940509155534263e-15, "lam_med": 2633.1788437386263}, {"file": "ofa704010_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.4193076704492443e-15, "lam_med": 2633.108517204481}, {"file": "ofa704020_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.1851807432932012e-15, "lam_med": 2633.1638611204085}, {"file": "ofa704030_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.2122428860792983e-15, "lam_med": 2633.1638699375744}, {"file": "ofa705010_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 2.031520354960514e-15, "lam_med": 2633.171465570399}, {"file": "ofa705020_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 1.855077974520489e-15, "lam_med": 2633.135871718275}, {"file": "ofa755010_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 1.9891999868767735e-15, "lam_med": 2632.821573696576, "rec": [0.0, 0.2916666666666667, 0.7083333333333334, 0.7916666666666666, 0.9583333333333334, 0.9166666666666666]}, {"file": "ofa755020_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 1.8039861805419903e-15, "lam_med": 2632.5066582529003}, {"file": "ofa755030_x1d.fits", "star": "CD-38 15670", "mode": "E230M", "nominal": 1.832354496566004e-15, "lam_med": 2631.8944132088195}, {"file": "ofae01010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 1.751664910734805e-12, "lam_med": 1379.967693314089}, {"file": "ofae01020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 2.43642311643756e-12, "lam_med": 1917.434725305077}, {"file": "ofae01030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 7.359744907678525e-13, "lam_med": 2632.6752661784285}, {"file": "ofae01040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 2.899636624273578e-13, "lam_med": 2907.449593700555}, {"file": "ofae02010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 1.372979800456881e-12, "lam_med": 1380.440128508556}, {"file": "ofae02020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 2.2256759466812326e-12, "lam_med": 1917.4900745207467}, {"file": "ofae02030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 9.066836492909944e-13, "lam_med": 2632.947693525055}, {"file": "ofae02040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 2.655419175658189e-13, "lam_med": 2907.547945404571}, {"file": "ofae03010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 9.155038372242468e-13, "lam_med": 1381.0799036719668}, {"file": "ofae03020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 2.0461174434852995e-12, "lam_med": 1917.4906124971658}, {"file": "ofae03030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 1.0419910858580197e-12, "lam_med": 2631.4807662615217}, {"file": "ofae03040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 2.4639713487484943e-13, "lam_med": 2907.540541962578}, {"file": "ofae04010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 3.465307495319627e-14, "lam_med": 1380.9142951210124}, {"file": "ofae04020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 5.850509571914847e-14, "lam_med": 1917.4665842710908}, {"file": "ofae04030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 5.08558823779425e-14, "lam_med": 2631.767753440649}, {"file": "ofae04040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 2.0151352682395137e-14, "lam_med": 2907.614794113252}, {"file": "ofae05010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 3.4168341539278836e-14, "lam_med": 1380.837734326235}, {"file": "ofae05020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 5.612406647777453e-14, "lam_med": 1917.4106924772345}, {"file": "ofae05030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 5.1546027522213115e-14, "lam_med": 2630.006474087996}, {"file": "ofae05040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 2.0849723400762033e-14, "lam_med": 2907.6122176921253}, {"file": "ofae06010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 6.673729758876947e-14, "lam_med": 1380.4976127664224}, {"file": "ofae06020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 2.897100009659052e-13, "lam_med": 1917.5709357918386}, {"file": "ofae06030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 1.6878743387195154e-13, "lam_med": 2630.5815954463355}, {"file": "ofae06040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 3.913871921214724e-14, "lam_med": 2907.7162783158606}, {"file": "ofae07010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 2.142421055644706e-12, "lam_med": 1380.425643560986}, {"file": "ofae07020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 3.1527379410274412e-12, "lam_med": 1917.507280191346}, {"file": "ofae07030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 1.32899380191214e-12, "lam_med": 2630.16945851329, "rec": [0.0, 0.375, 0.4583333333333333, 0.75, 0.9166666666666666, 0.9166666666666666]}, {"file": "ofae07040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 2.851208108228723e-13, "lam_med": 2907.4542778396903}, {"file": "ofae08010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 2.079907183580137e-12, "lam_med": 1380.8738026128815, "rec": [0.0, 0.575, 0.7560975609756098, 0.9473684210526315, 0.8780487804878049, 0.9523809523809523]}, {"file": "ofae08020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 2.9688856451660423e-12, "lam_med": 1917.433568639175}, {"file": "ofae08030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 1.3864132393921964e-12, "lam_med": 2631.0996769441326}, {"file": "ofae08040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 2.9771938219945735e-13, "lam_med": 2907.371423794798}, {"file": "ofae09010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 1.6424738044675465e-12, "lam_med": 1380.7691967366354}, {"file": "ofae09020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 2.3716411325042835e-12, "lam_med": 1917.4584261278724}, {"file": "ofae09030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 1.2028313633391374e-12, "lam_med": 2631.564234127382}, {"file": "ofae09040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 3.935695023382801e-13, "lam_med": 2907.609468033723}, {"file": "ofae10010_x1d.fits", "star": "* 31 Cyg", "mode": "E140M", "nominal": 2.000291102716879e-12, "lam_med": 1380.5928903587096}, {"file": "ofae10020_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 3.0369661680662913e-12, "lam_med": 1917.426805098693}, {"file": "ofae10030_x1d.fits", "star": "* 31 Cyg", "mode": "E230M", "nominal": 1.6523511566562087e-12, "lam_med": 2629.3156782438036}, {"file": "ofae10040_x1d.fits", "star": "* 31 Cyg", "mode": "E230H", "nominal": 4.093752755500292e-13, "lam_med": 2907.41230847321}, {"file": "ofai01010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.3224891253062067e-14, "lam_med": 2633.0058484691817}, {"file": "ofai01020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.6961034793060605e-14, "lam_med": 2632.963388987232}, {"file": "ofai01030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2694635958127786e-14, "lam_med": 2633.036678421897}, {"file": "ofai01040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.14017770495628e-15, "lam_med": 2633.0192708843597}, {"file": "ofai01050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.5094845642629514e-14, "lam_med": 2633.01542617626}, {"file": "ofai02010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.410412729046735e-14, "lam_med": 2632.74766204499}, {"file": "ofai02020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.447628281706924e-14, "lam_med": 2632.7459308214584}, {"file": "ofai02030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2155625984292067e-14, "lam_med": 2632.149319329432}, {"file": "ofai02040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 8.311598727447479e-15, "lam_med": 2632.633157167337}, {"file": "ofai02050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.3970297141432137e-14, "lam_med": 2632.196706783926}, {"file": "ofas01010_x1d.fits", "star": "HD 73752", "mode": "E230H", "nominal": 1.126997134165761e-14, "lam_med": 2696.3624127005733}, {"file": "ofas01020_x1d.fits", "star": "HD 73752", "mode": "E140M", "nominal": 6.977619125213533e-16, "lam_med": 1379.950695435915}, {"file": "ofas01030_x1d.fits", "star": "HD 73752", "mode": "E140M", "nominal": 1.1285036060855391e-15, "lam_med": 1379.7840764204866}, {"file": "ofas01040_x1d.fits", "star": "HD 73752", "mode": "E140M", "nominal": 1.5769836408138599e-15, "lam_med": 1379.7247858140372, "rec": [0.07317073170731707, 0.4146341463414634, 0.42857142857142855, 0.5365853658536586, 0.675, 0.7317073170731707]}, {"file": "ofas01050_x1d.fits", "star": "HD 73752", "mode": "E140M", "nominal": 1.8790316068625513e-15, "lam_med": 1378.9991378633129}, {"file": "ofas02010_x1d.fits", "star": "HD 52698", "mode": "E230H", "nominal": 4.74812389113905e-15, "lam_med": 2696.3047384038086}, {"file": "ofas02020_x1d.fits", "star": "HD 52698", "mode": "E140M", "nominal": 4.325774774409902e-16, "lam_med": 1379.293628423333}, {"file": "ofas02030_x1d.fits", "star": "HD 52698", "mode": "E140M", "nominal": 8.868355269460834e-16, "lam_med": 1377.8751248131325, "rec": [0.0, 0.20512820512820512, 0.25, 0.5, 0.5952380952380952, 0.725]}, {"file": "ofas03010_x1d.fits", "star": "HD 57095", "mode": "E230H", "nominal": 4.061458749276316e-15, "lam_med": 2696.1865189484442, "rec": [0.034482758620689655, 0.13793103448275862, 0.5172413793103449, 0.5862068965517241, 0.9310344827586207, 0.9642857142857143]}, {"file": "ofas03020_x1d.fits", "star": "HD 57095", "mode": "E140M", "nominal": 1.0493231228513777e-15, "lam_med": 1380.0305827071597}, {"file": "ofas03030_x1d.fits", "star": "HD 57095", "mode": "E140M", "nominal": 1.4121579766461393e-15, "lam_med": 1380.859536097538}, {"file": "ofas04010_x1d.fits", "star": "HD 27274", "mode": "E230H", "nominal": 2.9429783645872193e-15, "lam_med": 2696.25227402962}, {"file": "ofas04020_x1d.fits", "star": "HD 27274", "mode": "E140M", "nominal": 3.2427444071823235e-17, "lam_med": 1380.1936161933077}, {"file": "ofas04030_x1d.fits", "star": "HD 27274", "mode": "E140M", "nominal": 4.970043561912027e-16, "lam_med": 1378.7867623924978, "rec": [0.02564102564102564, 0.15, 0.3902439024390244, 0.4, 0.5238095238095238, 0.36585365853658536]}, {"file": "ofe701010_x1d.fits", "star": "* tau Cet", "mode": "E140M", "nominal": 1.0093210981030339e-15, "lam_med": 1379.365245386911}, {"file": "ofe702010_x1d.fits", "star": "* bet Hyi", "mode": "E230H", "nominal": 6.379982365819177e-14, "lam_med": 2696.242857522628}, {"file": "ofe702020_x1d.fits", "star": "* bet Hyi", "mode": "E140M", "nominal": 1.9386967780727374e-15, "lam_med": 1380.4977173753223}, {"file": "ofe703020_x1d.fits", "star": "* sig Dra", "mode": "E140M", "nominal": 1.4453359586446824e-15, "lam_med": 1375.0722717289063}, {"file": "ofe704010_x1d.fits", "star": "HD 166620", "mode": "E230H", "nominal": 4.773501666594209e-15, "lam_med": 2696.2806152539397}, {"file": "ofe704020_x1d.fits", "star": "HD 166620", "mode": "E140M", "nominal": 2.0083364589586883e-15, "lam_med": 1376.9104155543614}, {"file": "ofe753010_x1d.fits", "star": "* sig Dra", "mode": "E230H", "nominal": 1.2317914526708796e-14, "lam_med": 2696.1505033120143}, {"file": "ofe753020_x1d.fits", "star": "* sig Dra", "mode": "E140M", "nominal": 5.199996962728831e-16, "lam_med": 1380.0003452835538}, {"file": "ofet02010_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.3899155198273049e-15, "lam_med": 2488.603680066787}, {"file": "ofet02020_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.2942286558207703e-15, "lam_med": 2488.5711388121313}, {"file": "ofet02030_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.328428406870758e-15, "lam_med": 2488.5661835416345}, {"file": "ofet03010_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.3522907812049286e-15, "lam_med": 2488.3673382484194}, {"file": "ofet03020_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.2532923944147733e-15, "lam_med": 2488.4224735977905}, {"file": "ofet03030_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.2956279177769928e-15, "lam_med": 2488.379546269386}, {"file": "ofet04010_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.3339743847647239e-15, "lam_med": 2488.5440757514893}, {"file": "ofet04020_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.2329087152075067e-15, "lam_med": 2488.5139092780014}, {"file": "ofet04030_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.2780494932039363e-15, "lam_med": 2488.4889798178165, "rec": [0.04, 0.52, 0.88, 1.0, 0.96, 1.0]}, {"file": "ofet04040_x1d.fits", "star": "2MASS J08022777+5631555", "mode": "E230M", "nominal": 1.316467304242602e-15, "lam_med": 2488.485458317753}, {"file": "off801010_x1d.fits", "star": "* gam Tri", "mode": "E140H", "nominal": 1.866642653635436e-13, "lam_med": 1554.0981553303363}, {"file": "off801020_x1d.fits", "star": "* gam Tri", "mode": "E140H", "nominal": 2.1365453594026777e-13, "lam_med": 1554.0541183325638}, {"file": "off802010_x1d.fits", "star": "HD 36546", "mode": "E140H", "nominal": 4.8820213222489566e-14, "lam_med": 1554.0783824731916}, {"file": "off802020_x1d.fits", "star": "HD 36546", "mode": "E140H", "nominal": 3.8625967784829405e-14, "lam_med": 1554.2941753748812}, {"file": "off803020_x1d.fits", "star": "HD 38206", "mode": "E140H", "nominal": 4.365900754527292e-14, "lam_med": 1554.1425363922508}, {"file": "off804010_x1d.fits", "star": "HD 158352", "mode": "E140H", "nominal": 5.9080321771410145e-15, "lam_med": 1554.0438628954714}, {"file": "off804020_x1d.fits", "star": "HD 158352", "mode": "E140H", "nominal": 4.511988497843306e-15, "lam_med": 1554.0700564709864, "rec": [0.0, 0.3870967741935484, 0.71875, 0.84375, 0.84375, 0.7741935483870968]}, {"file": "off804030_x1d.fits", "star": "HD 158352", "mode": "E140H", "nominal": 4.574188560039102e-15, "lam_med": 1554.1840749832074}, {"file": "off804040_x1d.fits", "star": "HD 158352", "mode": "E140H", "nominal": 4.745462073404756e-15, "lam_med": 1553.8514619221305}, {"file": "off804050_x1d.fits", "star": "HD 158352", "mode": "E140H", "nominal": 4.929131437573221e-15, "lam_med": 1554.0440055701285}, {"file": "off805010_x1d.fits", "star": "HD 143675", "mode": "E140H", "nominal": 2.643309374914556e-15, "lam_med": 1554.2079756534768}, {"file": "off805020_x1d.fits", "star": "HD 143675", "mode": "E140H", "nominal": 2.140428127687252e-15, "lam_med": 1554.4079003773713}, {"file": "off806010_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 2.9392435837515445e-15, "lam_med": 1553.9164073953873}, {"file": "off806020_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 2.329867221550395e-15, "lam_med": 1554.248987231103}, {"file": "off806030_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 2.6362211320012674e-15, "lam_med": 1554.1527512955138}, {"file": "off806040_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 3.0853777625980432e-15, "lam_med": 1553.9953380222805}, {"file": "off806050_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 3.5597104490297274e-15, "lam_med": 1554.1952763825527}, {"file": "off807010_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 2.9444961667578116e-15, "lam_med": 1554.337273115533}, {"file": "off807020_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 2.3665600342223917e-15, "lam_med": 1553.6447796023656}, {"file": "off807030_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 2.701582372150952e-15, "lam_med": 1553.663768049249}, {"file": "off807040_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 3.1702922114077476e-15, "lam_med": 1553.1353843858092}, {"file": "off807050_x1d.fits", "star": "HD 32297", "mode": "E140H", "nominal": 3.6073837451600764e-15, "lam_med": 1553.1170902048468}, {"file": "off808010_x1d.fits", "star": "HD 98363", "mode": "E140H", "nominal": 4.682243809453904e-15, "lam_med": 1554.0210941109337}, {"file": "off808020_x1d.fits", "star": "HD 98363", "mode": "E140H", "nominal": 3.584969603206659e-15, "lam_med": 1554.1282986378387}, {"file": "off808030_x1d.fits", "star": "HD 98363", "mode": "E140H", "nominal": 3.790096161176609e-15, "lam_med": 1554.1444776349774}, {"file": "offg05010_x1d.fits", "star": "TYC 3814-1598-1", "mode": "E230M", "nominal": 1.3646633345886798e-15, "lam_med": 2633.135283284115}, {"file": "ofgk01010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 8.664034759616027e-15, "lam_med": 2633.0338308159453}, {"file": "ofgk01020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.6505488737917892e-14, "lam_med": 2633.1068543823803}, {"file": "ofgk01030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.8227379923657792e-14, "lam_med": 2633.0624758795548}, {"file": "ofgk01040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.3736060377345864e-14, "lam_med": 2633.020441044784}, {"file": "ofgk01050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.7341096944329182e-14, "lam_med": 2632.978643744073}, {"file": "ofgk01060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.8941954576180813e-14, "lam_med": 2633.109795626389}, {"file": "ofgk01070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.491802654390351e-15, "lam_med": 2633.024903731904}, {"file": "ofgk01080_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 6.752821165180289e-15, "lam_med": 2633.0766500543605}, {"file": "ofgk01090_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.801109155327151e-15, "lam_med": 2632.98523084108}, {"file": "ofgk02010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.222459792534042e-15, "lam_med": 2633.0682756828164}, {"file": "ofgk02020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.163851866714773e-14, "lam_med": 2633.163508623294}, {"file": "ofgk02030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.0125298342799154e-14, "lam_med": 2633.1215669479616}, {"file": "ofgk02040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.376270160801522e-14, "lam_med": 2633.082304552333}, {"file": "ofgk02050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.481317830384244e-14, "lam_med": 2633.0435941145593}, {"file": "ofgk02060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.4017101036247852e-14, "lam_med": 2633.170295639317}, {"file": "ofgk02070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.6950921165228475e-15, "lam_med": 2633.0876032081596}, {"file": "ofgk03010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.766183641030998e-15, "lam_med": 2633.0300936256635}, {"file": "ofgk03020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.3214142888181243e-14, "lam_med": 2633.098310808671}, {"file": "ofgk03030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.0089933654355634e-14, "lam_med": 2633.0740884811703}, {"file": "ofgk03040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.260172728985629e-14, "lam_med": 2633.0308682865134}, {"file": "ofgk03050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.0443669474342742e-14, "lam_med": 2632.9936867162014}, {"file": "ofgk03060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.2390544282528944e-14, "lam_med": 2633.07127373196}, {"file": "ofgk03070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.0133738104121318e-14, "lam_med": 2633.049217018055}, {"file": "ofgk04010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.37189131179087e-15, "lam_med": 2632.9384777513615}, {"file": "ofgk04020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.9912866972945575e-14, "lam_med": 2632.9861057605294}, {"file": "ofgk04030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.6199344055664878e-14, "lam_med": 2632.9438209580676}, {"file": "ofgk04040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.0704904965586856e-14, "lam_med": 2632.90150440647}, {"file": "ofgk04050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.3391411580632644e-14, "lam_med": 2632.876844228846}, {"file": "ofgk04060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.4672464838055486e-14, "lam_med": 2632.981612846299}, {"file": "ofgk04070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.547238422258351e-15, "lam_med": 2632.6468160294585}, {"file": "ofgk05010_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 9.152174655173507e-15, "lam_med": 2632.821018038396}, {"file": "ofgk05020_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.0045575756230752e-14, "lam_med": 2632.9192251544273}, {"file": "ofgk05030_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.905393504587131e-14, "lam_med": 2632.875365291009}, {"file": "ofgk05040_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 3.177548306625635e-14, "lam_med": 2632.840242188857}, {"file": "ofgk05050_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 2.286630149299405e-14, "lam_med": 2632.8351402639514, "rec": [0.0, 0.0, 0.20833333333333334, 0.16666666666666666, 0.5, 0.4583333333333333]}, {"file": "ofgk05060_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 1.34138217987417e-14, "lam_med": 2632.906091844786}, {"file": "ofgk05070_x1d.fits", "star": "* alf Ori", "mode": "E230M", "nominal": 5.939271433744322e-15, "lam_med": 2632.8642927718324}, {"file": "ofgr01010_x1d.fits", "star": "SB 744", "mode": "E140M", "nominal": 2.3423922105158807e-14, "lam_med": 1379.8436180522456}, {"file": "ofgr01020_x1d.fits", "star": "SB 744", "mode": "E140M", "nominal": 2.640735616428193e-14, "lam_med": 1380.340152000343}, {"file": "ofgr01030_x1d.fits", "star": "SB 744", "mode": "E140M", "nominal": 2.6378321115899157e-14, "lam_med": 1380.2127069656703}, {"file": "ofgs01010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.470348400006122e-13, "lam_med": 2007.5114962788894}, {"file": "ofgs01020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.5817375734757623e-13, "lam_med": 2793.5559020162027}, {"file": "ofgs01030_x1d.fits", "star": "* bet Pic", "mode": "E140H", "nominal": 2.525822436705731e-14, "lam_med": 1584.4531312789318, "rec": [0.0, 0.28125, 0.3333333333333333, 0.7096774193548387, 0.8064516129032258, 0.8709677419354839]}, {"file": "ofgs01040_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.8969484691703585e-13, "lam_med": 1755.0733220574339}, {"file": "ofgs01050_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.3673339445514184e-13, "lam_med": 2257.9073002205705}, {"file": "ofgs01060_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.4364629331771561e-13, "lam_med": 2507.5037215787943}, {"file": "ofgs03010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 3.006950661099768e-13, "lam_med": 2007.2693313650625}, {"file": "ofgs03020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.0258324180357723e-13, "lam_med": 2793.661123299542, "rec": [0.0, 0.25925925925925924, 0.5185185185185185, 0.8846153846153846, 1.0, 1.0]}, {"file": "ofgs03030_x1d.fits", "star": "* bet Pic", "mode": "E140H", "nominal": 2.486921393446913e-14, "lam_med": 1583.3015584636516}, {"file": "ofgs03040_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.901202491964804e-13, "lam_med": 1755.109735475218, "rec": [0.014925373134328358, 0.23880597014925373, 0.2835820895522388, 0.6417910447761194, 0.7910447761194029, 0.9552238805970149]}, {"file": "ofgs03050_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.6350957872853108e-13, "lam_med": 2257.9701099204403}, {"file": "ofgs03060_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.1899326033359055e-13, "lam_med": 2507.540764841401}, {"file": "ofgs05010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.0985496329423046e-13, "lam_med": 2007.2314321623358, "rec": [0.019230769230769232, 0.36538461538461536, 0.6923076923076923, 0.9038461538461539, 1.0, 1.0]}, {"file": "ofgs05020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.4477289472221453e-13, "lam_med": 2793.658692783061}, {"file": "ofgs05030_x1d.fits", "star": "* bet Pic", "mode": "E140H", "nominal": 2.448689704856224e-14, "lam_med": 1582.437907520879}, {"file": "ofgs05040_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.875077106579859e-13, "lam_med": 1755.0505098897956, "rec": [0.0, 0.208955223880597, 0.3382352941176471, 0.5970149253731343, 0.8656716417910447, 0.9253731343283582]}, {"file": "ofgs05050_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.0899041881378069e-13, "lam_med": 2257.9783100393142}, {"file": "ofgs05060_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.2982311338778247e-13, "lam_med": 2507.601250945433}, {"file": "ofgs07010_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.586348487689105e-13, "lam_med": 2007.1590237885025, "rec": [0.038461538461538464, 0.3076923076923077, 0.5961538461538461, 0.8846153846153846, 0.9807692307692307, 1.0]}, {"file": "ofgs07020_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 2.1279430534901756e-13, "lam_med": 2793.6776582369293}, {"file": "ofgs07030_x1d.fits", "star": "* bet Pic", "mode": "E140H", "nominal": 2.5205352798991562e-14, "lam_med": 1584.3730446711797}, {"file": "ofgs07040_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.9005373929496897e-13, "lam_med": 1755.043304998855}, {"file": "ofgs07050_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.4740998599557073e-13, "lam_med": 2257.96682485862}, {"file": "ofgs07060_x1d.fits", "star": "* bet Pic", "mode": "E230H", "nominal": 1.4218983344878812e-13, "lam_med": 2507.592203559086}, {"file": "ofgx13010_x1d.fits", "star": "TYC 8216-799-1", "mode": "E140M", "nominal": 4.6832981537797744e-14, "lam_med": 1380.7902480199273}, {"file": "ofgx13020_x1d.fits", "star": "TYC 8216-799-1", "mode": "E140M", "nominal": 2.709181556485306e-14, "lam_med": 1378.7137600468761}, {"file": "ofh301010_x1d.fits", "star": "BD+25 4655", "mode": "E140M", "nominal": 1.3006833462023956e-13, "lam_med": 1379.9207655989158}, {"file": "ofh302010_x1d.fits", "star": "GD 300", "mode": "E140M", "nominal": 3.039710794342482e-14, "lam_med": 1380.3346327014656}, {"file": "ofh303010_x1d.fits", "star": "UCAC4 108-030787", "mode": "E140M", "nominal": 1.2495950696997653e-14, "lam_med": 1379.860460695891}, {"file": "ofh303020_x1d.fits", "star": "UCAC4 108-030787", "mode": "E140M", "nominal": 1.1357800823056883e-14, "lam_med": 1380.2243693013684, "rec": [0.046511627906976744, 0.4, 0.6666666666666666, 0.9024390243902439, 0.9761904761904762, 0.9285714285714286]}, {"file": "ofh307010_x1d.fits", "star": "UCAC4 318-042721", "mode": "E140M", "nominal": 7.995597401774763e-15, "lam_med": 1380.1946857197238}, {"file": "ofh307020_x1d.fits", "star": "UCAC4 318-042721", "mode": "E140M", "nominal": 7.286416966113337e-15, "lam_med": 1379.9138492937113}, {"file": "ofh307030_x1d.fits", "star": "UCAC4 318-042721", "mode": "E140M", "nominal": 7.416638589997352e-15, "lam_med": 1380.2776386190312}, {"file": "ofh307040_x1d.fits", "star": "UCAC4 318-042721", "mode": "E140M", "nominal": 7.52001183395328e-15, "lam_med": 1380.2789707231673}, {"file": "ofh308010_x1d.fits", "star": "PG 1355-064", "mode": "E140M", "nominal": 2.475917733574933e-14, "lam_med": 1379.955236760909}, {"file": "ofh308020_x1d.fits", "star": "PG 1355-064", "mode": "E140M", "nominal": 2.0799813321990964e-14, "lam_med": 1379.8678182033464}, {"file": "ofh309010_x1d.fits", "star": "Feige 54", "mode": "E140M", "nominal": 1.2022727632672536e-14, "lam_med": 1379.9447223767406}, {"file": "ofh309020_x1d.fits", "star": "Feige 54", "mode": "E140M", "nominal": 1.0948619051322678e-14, "lam_med": 1380.3040685202368}, {"file": "ofh309030_x1d.fits", "star": "Feige 54", "mode": "E140M", "nominal": 1.0950775648805484e-14, "lam_med": 1379.5245214265988}, {"file": "ofh309040_x1d.fits", "star": "Feige 54", "mode": "E140M", "nominal": 1.0997109885849816e-14, "lam_med": 1378.7935562390373}, {"file": "ofh310010_x1d.fits", "star": "[CW83] 0711+22", "mode": "E140M", "nominal": 4.292157033940482e-14, "lam_med": 1380.5287929947835}, {"file": "ofh311010_x1d.fits", "star": "GALEX J191109.3-140654", "mode": "E140M", "nominal": 3.209935155917672e-14, "lam_med": 1379.1327004482328}, {"file": "ofh312010_x1d.fits", "star": "EC 04110-1348", "mode": "E140M", "nominal": 2.6756171807632497e-14, "lam_med": 1380.1142546847636}, {"file": "ofh313010_x1d.fits", "star": "PG 1518-098", "mode": "E140M", "nominal": 1.368486946778664e-14, "lam_med": 1379.974399599339}, {"file": "ofh313020_x1d.fits", "star": "PG 1518-098", "mode": "E140M", "nominal": 1.2407930766108983e-14, "lam_med": 1380.0165531037742}, {"file": "ofh313030_x1d.fits", "star": "PG 1518-098", "mode": "E140M", "nominal": 1.2431636477988606e-14, "lam_med": 1379.9770968763048}, {"file": "ofh314010_x1d.fits", "star": "Gaia DR3 5369742867090186624", "mode": "E140M", "nominal": 2.016488514988305e-14, "lam_med": 1379.1349094119787}, {"file": "ofh314020_x1d.fits", "star": "Gaia DR3 5369742867090186624", "mode": "E140M", "nominal": 1.833998207428317e-14, "lam_med": 1379.5734498983006}, {"file": "ofh315010_x1d.fits", "star": "GSC 08265-00355", "mode": "E140M", "nominal": 2.7554917070811006e-14, "lam_med": 1380.151595331292}, {"file": "ofh316010_x1d.fits", "star": "CD-30 11223", "mode": "E140M", "nominal": 2.6964159509187237e-14, "lam_med": 1380.0917183676652}, {"file": "ofh317010_x1d.fits", "star": "HD 265435", "mode": "E140M", "nominal": 3.257349885835383e-14, "lam_med": 1380.1425579838258}, {"file": "ofh319010_x1d.fits", "star": "Ton S 415", "mode": "E140M", "nominal": 2.122730832274558e-14, "lam_med": 1379.4515327199008}, {"file": "ofh319020_x1d.fits", "star": "Ton S 415", "mode": "E140M", "nominal": 1.9350623344931875e-14, "lam_med": 1379.9951173328927}, {"file": "ofh320010_x1d.fits", "star": "CPD-20 1123", "mode": "E140M", "nominal": 2.1401826295852808e-14, "lam_med": 1378.3904930630983}, {"file": "ofh321010_x1d.fits", "star": "TYC 4544-2658-1", "mode": "E140M", "nominal": 4.4436639335655705e-14, "lam_med": 1380.549834360645}, {"file": "ofh322010_x1d.fits", "star": "Feige 11", "mode": "E140M", "nominal": 1.0517707768362888e-14, "lam_med": 1380.023678780674}, {"file": "ofh323010_x1d.fits", "star": "JL 87", "mode": "E140M", "nominal": 1.988550336294871e-14, "lam_med": 1380.373290396356}, {"file": "ofh324010_x1d.fits", "star": "BPS CS 22940-0009", "mode": "E140M", "nominal": 9.871274497802129e-15, "lam_med": 1380.0379925637762}, {"file": "ofh326010_x1d.fits", "star": "LS IV +06 2", "mode": "E140M", "nominal": 1.679671161751474e-14, "lam_med": 1379.264387824116, "rec": [0.023809523809523808, 0.2619047619047619, 0.5121951219512195, 0.7272727272727273, 0.8181818181818182, 0.85]}, {"file": "ofh327010_x1d.fits", "star": "EC 19529-4430", "mode": "E140M", "nominal": 1.6365894498375765e-14, "lam_med": 1379.7829203462973}, {"file": "ofh328010_x1d.fits", "star": "V* BX Cir", "mode": "E140M", "nominal": 8.755568080092738e-15, "lam_med": 1379.805054334925}, {"file": "ofh329010_x1d.fits", "star": "BPS BS 16981-0016", "mode": "E140M", "nominal": 8.508571619015072e-15, "lam_med": 1380.3994265813822}, {"file": "ofh330010_x1d.fits", "star": "UCAC4 024-005294", "mode": "E140M", "nominal": 1.2036292476085996e-14, "lam_med": 1380.0911335623366, "rec": [0.02564102564102564, 0.30952380952380953, 0.42857142857142855, 0.8571428571428571, 0.9761904761904762, 0.8809523809523809]}, {"file": "ofh331010_x1d.fits", "star": "Feige 36", "mode": "E140M", "nominal": 2.2937906038721707e-14, "lam_med": 1379.6669752898138}, {"file": "ofh332010_x1d.fits", "star": "GALEX J080510.9-105834", "mode": "E140M", "nominal": 2.05129527531602e-14, "lam_med": 1379.5778078704193}, {"file": "ofh333010_x1d.fits", "star": "EC 22081-1916", "mode": "E140M", "nominal": 2.338260001007956e-14, "lam_med": 1380.7315401626015, "rec": [0.024390243902439025, 0.6666666666666666, 0.9024390243902439, 0.7804878048780488, 0.8461538461538461, 0.813953488372093]}, {"file": "ofh334010_x1d.fits", "star": "HD 133729", "mode": "E140H", "nominal": 2.207879516014486e-14, "lam_med": 1330.5778679632454}, {"file": "ofh336010_x1d.fits", "star": "V* EO Cet", "mode": "E140M", "nominal": 1.6182823621813885e-14, "lam_med": 1380.1935218177891}, {"file": "ofh338010_x1d.fits", "star": "[CW83] 0832-01", "mode": "E140M", "nominal": 5.010514660388059e-14, "lam_med": 1380.22582896934}, {"file": "ofh3z5010_x1d.fits", "star": "Ton 139", "mode": "E140M", "nominal": 1.5117000459044443e-14, "lam_med": 1380.1593981101962}, {"file": "ofhde1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.8313426224159524e-14, "lam_med": 2257.970559644004}, {"file": "ofhde1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.0091367100853994e-13, "lam_med": 1380.7068138032855}, {"file": "ofhde1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 3.685248149203572e-15, "lam_med": 2631.8851758478518}, {"file": "ofhde1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.5521265612561423e-14, "lam_med": 1917.6444120392657}, {"file": "ofhde2010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.8185883633991764e-14, "lam_med": 2258.1327820734923, "rec": [0.0, 0.6097560975609756, 0.9512195121951219, 1.0, 1.0, 1.0]}, {"file": "ofhde2020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.0415058321994222e-13, "lam_med": 1380.9786408737132}, {"file": "ofhde2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.184841670154564e-14, "lam_med": 2632.547471983711}, {"file": "ofhde2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9327314863971576e-13, "lam_med": 1917.6685053725882}, {"file": "ofhde2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 8.244605082243563e-14, "lam_med": 1414.9125934029034}, {"file": "ofhde3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.8205917396481504e-14, "lam_med": 2258.1065570800647}, {"file": "ofhde3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 1.9725208804584624e-13, "lam_med": 1380.218880474663}, {"file": "ofhde3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.115031153309265e-14, "lam_med": 2631.33324768647}, {"file": "ofhde3040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9299289885003954e-13, "lam_med": 1917.5440011889837}, {"file": "ofhde3050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 8.040040956528653e-14, "lam_med": 1415.04788037624}, {"file": "ofhde4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.838195219027066e-14, "lam_med": 2257.8773051950575}, {"file": "ofhde4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.0196190123970384e-13, "lam_med": 1380.6153823021316, "rec": [0.04878048780487805, 0.4, 0.6904761904761905, 0.9047619047619048, 0.926829268292683, 0.926829268292683]}, {"file": "ofhde4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.218178141004678e-14, "lam_med": 2633.0024097501364}, {"file": "ofhde4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9511556031060377e-13, "lam_med": 1917.5146476501156}, {"file": "ofhde4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 8.222316172555253e-14, "lam_med": 1414.9955509124866}, {"file": "ofhdf1010_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.226543915817608e-14, "lam_med": 2633.134419228544}, {"file": "ofhdf1020_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9439145289027142e-13, "lam_med": 1917.634840969353}, {"file": "ofhh01010_x1d.fits", "star": "HD 124314", "mode": "E230H", "nominal": 2.6150191720660672e-14, "lam_med": 2157.206473047358}, {"file": "ofhh01020_x1d.fits", "star": "HD 124314", "mode": "E230H", "nominal": 6.723517446572942e-14, "lam_med": 1906.8933356684274}, {"file": "ofhh02010_x1d.fits", "star": "HD 210809", "mode": "E230H", "nominal": 3.6777137520915104e-14, "lam_med": 2156.936866634361}, {"file": "ofhh02020_x1d.fits", "star": "HD 210809", "mode": "E230H", "nominal": 5.980794760248649e-14, "lam_med": 1906.6822166424738}, {"file": "ofhh03010_x1d.fits", "star": "HD 122879", "mode": "E230H", "nominal": 4.696490525317859e-14, "lam_med": 2156.943140373479}, {"file": "ofhh03020_x1d.fits", "star": "HD 122879", "mode": "E230H", "nominal": 8.635476863000131e-14, "lam_med": 1906.709340281142}, {"file": "ofhh04010_x1d.fits", "star": "HD 218915", "mode": "E230H", "nominal": 4.622937582761429e-14, "lam_med": 2157.161312244614}, {"file": "ofhh04020_x1d.fits", "star": "HD 218915", "mode": "E230H", "nominal": 7.303369493020353e-14, "lam_med": 1907.0196243201117}, {"file": "ofhh05010_x1d.fits", "star": "HD 13841", "mode": "E230H", "nominal": 1.6395601000110896e-14, "lam_med": 2156.8822017928023}, {"file": "ofhh05020_x1d.fits", "star": "HD 13841", "mode": "E230H", "nominal": 3.214725440234372e-14, "lam_med": 1906.7424643322358, "rec": [0.0, 0.10526315789473684, 0.2807017543859649, 0.49122807017543857, 0.7894736842105263, 1.0]}, {"file": "ofhh06010_x1d.fits", "star": "HD 116781", "mode": "E230H", "nominal": 3.049068088552129e-14, "lam_med": 2157.179581499591}, {"file": "ofhh06020_x1d.fits", "star": "HD 116781", "mode": "E230H", "nominal": 5.828604488625617e-14, "lam_med": 1906.9192422125943}, {"file": "ofhh07010_x1d.fits", "star": "HD 164340", "mode": "E230H", "nominal": 2.5158142059410406e-14, "lam_med": 2157.314632657722}, {"file": "ofhh07020_x1d.fits", "star": "HD 164340", "mode": "E230H", "nominal": 3.5844092179292884e-14, "lam_med": 1907.0846118433374}, {"file": "ofhh08010_x1d.fits", "star": "* 10 Per", "mode": "E230H", "nominal": 2.1024692070641493e-14, "lam_med": 2156.9645580711444}, {"file": "ofhh08020_x1d.fits", "star": "* 10 Per", "mode": "E230H", "nominal": 4.1350495499233894e-14, "lam_med": 1906.7337155453913}, {"file": "ofhh09010_x1d.fits", "star": "HD 109399", "mode": "E230H", "nominal": 3.843884319211763e-14, "lam_med": 2157.023314137731, "rec": [0.0, 0.4444444444444444, 0.8222222222222222, 0.9333333333333333, 0.9777777777777777, 1.0]}, {"file": "ofhh09020_x1d.fits", "star": "HD 109399", "mode": "E230H", "nominal": 5.758930733181979e-14, "lam_med": 1906.8665116928232}, {"file": "ofhh10010_x1d.fits", "star": "HD 108", "mode": "E230H", "nominal": 2.3533171872508064e-14, "lam_med": 2157.001943880472}, {"file": "ofhh10020_x1d.fits", "star": "HD 108", "mode": "E230H", "nominal": 5.247822925298648e-14, "lam_med": 1906.7879288520999, "rec": [0.017543859649122806, 0.3157894736842105, 0.6666666666666666, 0.9473684210526315, 1.0, 1.0]}, {"file": "ofhh11010_x1d.fits", "star": "V* V373 Cas", "mode": "E230H", "nominal": 4.087929697771316e-14, "lam_med": 2156.917574920636}, {"file": "ofhh11020_x1d.fits", "star": "V* V373 Cas", "mode": "E230H", "nominal": 7.445234572936949e-14, "lam_med": 1906.6837280392301}, {"file": "ofhh12010_x1d.fits", "star": "V* V961 Cen", "mode": "E230H", "nominal": 1.442845755687073e-14, "lam_med": 2157.1338421780515, "rec": [0.0, 0.6, 0.9555555555555556, 1.0, 1.0, 1.0]}, {"file": "ofhh12020_x1d.fits", "star": "V* V961 Cen", "mode": "E230H", "nominal": 3.3679529011953494e-14, "lam_med": 1906.8691290217434}, {"file": "ofhh13010_x1d.fits", "star": "HD 103779", "mode": "E230H", "nominal": 4.775092866235038e-14, "lam_med": 2157.1152822537747}, {"file": "ofhh13020_x1d.fits", "star": "HD 103779", "mode": "E230H", "nominal": 7.42027878566182e-14, "lam_med": 1906.8546378338638}, {"file": "ofhh15010_x1d.fits", "star": "HD 99953", "mode": "E230H", "nominal": 2.1554339621134522e-14, "lam_med": 2157.1097799796457}, {"file": "ofhh15020_x1d.fits", "star": "HD 99953", "mode": "E230H", "nominal": 4.072093534113037e-14, "lam_med": 1906.842948908497}, {"file": "ofhh16010_x1d.fits", "star": "HD 152424", "mode": "E230H", "nominal": 1.8347061569573995e-14, "lam_med": 2157.4617425839533}, {"file": "ofhh16020_x1d.fits", "star": "HD 152424", "mode": "E230H", "nominal": 4.743231773662788e-14, "lam_med": 1907.1029387527174}, {"file": "ofhh17010_x1d.fits", "star": "HD 152249", "mode": "E230H", "nominal": 3.7628364777427285e-14, "lam_med": 2157.151153581487}, {"file": "ofhh17020_x1d.fits", "star": "HD 152249", "mode": "E230H", "nominal": 6.92146095898277e-14, "lam_med": 1907.1082605181873}, {"file": "ofhh18010_x1d.fits", "star": "HD 94493", "mode": "E230H", "nominal": 4.150782846222728e-14, "lam_med": 2157.120191452759, "rec": [0.0, 0.3111111111111111, 0.6666666666666666, 0.8666666666666667, 1.0, 0.9777777777777777]}, {"file": "ofhh18020_x1d.fits", "star": "HD 94493", "mode": "E230H", "nominal": 6.419410661079504e-14, "lam_med": 1906.8322983185626, "rec": [0.017543859649122806, 0.15789473684210525, 0.38596491228070173, 0.5614035087719298, 0.8421052631578947, 0.9824561403508771]}, {"file": "ofhh19010_x1d.fits", "star": "HD 93843", "mode": "E230H", "nominal": 5.613283198190602e-14, "lam_med": 2157.0341372920557}, {"file": "ofhh19020_x1d.fits", "star": "HD 93843", "mode": "E230H", "nominal": 9.088147649262969e-14, "lam_med": 1906.7985566751277, "rec": [0.0, 0.3157894736842105, 0.6666666666666666, 0.8596491228070176, 0.9649122807017544, 1.0]}, {"file": "ofhh20010_x1d.fits", "star": "HD 53975", "mode": "E230H", "nominal": 1.4298357299113774e-13, "lam_med": 2157.2088060710225}, {"file": "ofhh20020_x1d.fits", "star": "HD 53975", "mode": "E230H", "nominal": 2.0195672285027273e-13, "lam_med": 1907.1099607339497}, {"file": "ofhh21010_x1d.fits", "star": "HD 236810", "mode": "E140M", "nominal": 2.4820233862150044e-14, "lam_med": 1379.1692883146084}, {"file": "ofhh21020_x1d.fits", "star": "HD 236810", "mode": "E230M", "nominal": 3.097505010272676e-14, "lam_med": 1917.5610828398812}, {"file": "ofhh22010_x1d.fits", "star": "HD 47240", "mode": "E140H", "nominal": 9.24717510249854e-14, "lam_med": 1254.0429533389424}, {"file": "ofhh22020_x1d.fits", "star": "HD 47240", "mode": "E140H", "nominal": 1.9040937394625438e-13, "lam_med": 1553.6626055963482}, {"file": "ofhh22030_x1d.fits", "star": "HD 47240", "mode": "E230H", "nominal": 9.442343132113631e-14, "lam_med": 1907.7207487936607, "rec": [0.017543859649122806, 0.07017543859649122, 0.3508771929824561, 0.543859649122807, 0.7894736842105263, 0.9473684210526315]}, {"file": "ofhh22040_x1d.fits", "star": "HD 47240", "mode": "E230H", "nominal": 5.6611318502949775e-14, "lam_med": 2157.282434454737, "rec": [0.0, 0.3111111111111111, 0.4888888888888889, 0.9333333333333333, 0.9777777777777777, 0.9777777777777777]}, {"file": "ofhh23010_x1d.fits", "star": "HD 35619", "mode": "E140M", "nominal": 3.8925261221832993e-14, "lam_med": 1380.1380452396793}, {"file": "ofhh23020_x1d.fits", "star": "HD 35619", "mode": "E230M", "nominal": 5.0012560053787105e-14, "lam_med": 1917.612967285805}, {"file": "ofhh24010_x1d.fits", "star": "HD 10125", "mode": "E140M", "nominal": 2.876226088575487e-14, "lam_med": 1380.7896925219125}, {"file": "ofhh24020_x1d.fits", "star": "HD 10125", "mode": "E230M", "nominal": 4.127787154334304e-14, "lam_med": 1917.2552758190047}, {"file": "ofhh25010_x1d.fits", "star": "HD 12740", "mode": "E140M", "nominal": 9.013438918578574e-14, "lam_med": 1379.9887823567346}, {"file": "ofhh25020_x1d.fits", "star": "HD 12740", "mode": "E230M", "nominal": 9.417499445849607e-14, "lam_med": 1917.580434314132}, {"file": "ofhh26010_x1d.fits", "star": "HD 63005", "mode": "E230M", "nominal": 7.517517191495946e-14, "lam_med": 1917.5527271054389}, {"file": "ofhh28010_x1d.fits", "star": "HD 64993", "mode": "E140M", "nominal": 1.0246911393998274e-13, "lam_med": 1379.649019742089}, {"file": "ofhh28020_x1d.fits", "star": "HD 64993", "mode": "E230M", "nominal": 1.0146298623413632e-13, "lam_med": 1917.5266661125538}, {"file": "ofhh29010_x1d.fits", "star": "HD 10898", "mode": "E140M", "nominal": 2.8248936509491917e-14, "lam_med": 1379.3094180359185}, {"file": "ofhh29020_x1d.fits", "star": "HD 10898", "mode": "E230M", "nominal": 4.2248446724448985e-14, "lam_med": 1917.5383592408011}, {"file": "ofhh30010_x1d.fits", "star": "BD+56 574", "mode": "E140M", "nominal": 2.341498007725443e-14, "lam_med": 1380.7885594720824}, {"file": "ofhh30020_x1d.fits", "star": "BD+56 574", "mode": "E230M", "nominal": 3.0543555569360786e-14, "lam_med": 1917.1970773824078}, {"file": "ofhh31010_x1d.fits", "star": "BD+56 508", "mode": "E140M", "nominal": 1.4623469829479895e-14, "lam_med": 1379.8890392702783}, {"file": "ofhh31020_x1d.fits", "star": "BD+56 508", "mode": "E230M", "nominal": 1.9822427186955506e-14, "lam_med": 1917.501600187326}, {"file": "ofhh32010_x1d.fits", "star": "HD 13745", "mode": "E230M", "nominal": 8.200429115401677e-14, "lam_med": 1917.2411748073578}, {"file": "ofhh33010_x1d.fits", "star": "HD 12150", "mode": "E140M", "nominal": 2.2545316681064744e-14, "lam_med": 1379.534292593766}, {"file": "ofhh33020_x1d.fits", "star": "HD 12150", "mode": "E230M", "nominal": 3.251766704539348e-14, "lam_med": 1917.570790048415}, {"file": "ofhh34010_x1d.fits", "star": "HD 232590", "mode": "E140M", "nominal": 3.4921104681924134e-14, "lam_med": 1380.169088681628}, {"file": "ofhh34020_x1d.fits", "star": "HD 232590", "mode": "E230M", "nominal": 4.783707101967301e-14, "lam_med": 1917.4907892855092}, {"file": "ofhh35010_x1d.fits", "star": "HD 13854", "mode": "E140M", "nominal": 8.281688862135519e-14, "lam_med": 1380.0599518193376}, {"file": "ofhh35020_x1d.fits", "star": "HD 13854", "mode": "E230M", "nominal": 8.810699023889813e-14, "lam_med": 1917.575041745157}, {"file": "ofhh36010_x1d.fits", "star": "HD 60479", "mode": "E140M", "nominal": 2.2259031535573773e-14, "lam_med": 1380.236520890608}, {"file": "ofhh36020_x1d.fits", "star": "HD 60479", "mode": "E230M", "nominal": 3.671256378458065e-14, "lam_med": 1917.5372925906886, "rec": [0.0, 0.225, 0.7, 0.875, 0.975, 1.0]}, {"file": "ofhh37010_x1d.fits", "star": "HD 12993", "mode": "E140M", "nominal": 3.279438490606325e-14, "lam_med": 1379.9013918706758}, {"file": "ofhh37020_x1d.fits", "star": "HD 12993", "mode": "E230M", "nominal": 4.412420102302073e-14, "lam_med": 1917.5683432956835}, {"file": "ofhh38010_x1d.fits", "star": "HD 42379", "mode": "E140M", "nominal": 2.9911022076778255e-14, "lam_med": 1379.1988910168113}, {"file": "ofhh38020_x1d.fits", "star": "HD 42379", "mode": "E230M", "nominal": 4.71610567459161e-14, "lam_med": 1917.618809171519}, {"file": "ofhh39010_x1d.fits", "star": "HD 42088", "mode": "E140M", "nominal": 1.281168336140273e-13, "lam_med": 1379.384921282744}, {"file": "ofhh39020_x1d.fits", "star": "HD 42088", "mode": "E230M", "nominal": 1.234496891995115e-13, "lam_med": 1917.588139150659}, {"file": "ofhh40010_x1d.fits", "star": "HD 41690", "mode": "E140M", "nominal": 3.9391581979036415e-14, "lam_med": 1379.7923016405875}, {"file": "ofhh40020_x1d.fits", "star": "HD 41690", "mode": "E230M", "nominal": 5.495099906530945e-14, "lam_med": 1917.6249111159198}, {"file": "ofhh41010_x1d.fits", "star": "HD 46966", "mode": "E140H", "nominal": 2.0392385480159e-13, "lam_med": 1253.9033355676384}, {"file": "ofhh41020_x1d.fits", "star": "HD 46966", "mode": "E230H", "nominal": 1.376251699860047e-13, "lam_med": 1907.0779906212551, "rec": [0.017543859649122806, 0.2807017543859649, 0.6491228070175439, 0.8421052631578947, 0.9649122807017544, 0.9824561403508771]}, {"file": "ofhh41030_x1d.fits", "star": "HD 46966", "mode": "E230H", "nominal": 7.303674526448188e-14, "lam_med": 2157.393245999791}, {"file": "ofhh42010_x1d.fits", "star": "HD 30677", "mode": "E140H", "nominal": 1.5777575304742325e-13, "lam_med": 1254.122952370431}, {"file": "ofhh42020_x1d.fits", "star": "HD 30677", "mode": "E140H", "nominal": 1.6262362688086966e-13, "lam_med": 1553.282624924604}, {"file": "ofhh42030_x1d.fits", "star": "HD 30677", "mode": "E230H", "nominal": 1.0024793662602505e-13, "lam_med": 1907.5151245760144}, {"file": "ofhh42040_x1d.fits", "star": "HD 30677", "mode": "E230H", "nominal": 7.497258636694919e-14, "lam_med": 2157.30237321945}, {"file": "ofhh43010_x1d.fits", "star": "BD+60 586", "mode": "E140M", "nominal": 3.3253448567689495e-14, "lam_med": 1380.1471256305974}, {"file": "ofhh43020_x1d.fits", "star": "BD+60 586", "mode": "E230M", "nominal": 4.349158206723721e-14, "lam_med": 1917.3108926890645}, {"file": "ofhh44010_x1d.fits", "star": "HD 39746", "mode": "E140M", "nominal": 6.434002444594088e-14, "lam_med": 1379.7735604386517}, {"file": "ofhh44020_x1d.fits", "star": "HD 39746", "mode": "E230M", "nominal": 7.998916681041076e-14, "lam_med": 1917.64158504803, "rec": [0.0, 0.1, 0.35, 0.75, 0.825, 0.9230769230769231]}, {"file": "ofhh45010_x1d.fits", "star": "HD 13866", "mode": "E140M", "nominal": 4.478689575743588e-14, "lam_med": 1380.5829567226542}, {"file": "ofhh45020_x1d.fits", "star": "HD 13866", "mode": "E230M", "nominal": 6.188335796542116e-14, "lam_med": 1917.5535488490927}, {"file": "ofhh46010_x1d.fits", "star": "* alf Cam", "mode": "E230H", "nominal": 2.9362240197289466e-13, "lam_med": 1906.5128644531144}, {"file": "ofhh46020_x1d.fits", "star": "* alf Cam", "mode": "E230H", "nominal": 1.2118480972156562e-13, "lam_med": 2156.890214304456}, {"file": "ofhh46030_x1d.fits", "star": "* alf Cam", "mode": "E140H", "nominal": 7.641694965952146e-14, "lam_med": 1254.0796167004905}, {"file": "ofhh46040_x1d.fits", "star": "* alf Cam", "mode": "E140H", "nominal": 6.143344206571929e-14, "lam_med": 1552.0195635149637}, {"file": "ofhh47010_x1d.fits", "star": "* 139 Tau", "mode": "E140H", "nominal": 1.8800307959616635e-12, "lam_med": 1254.0972750236947}, {"file": "ofhh47020_x1d.fits", "star": "* 139 Tau", "mode": "E140H", "nominal": 2.3140791071133737e-12, "lam_med": 1553.3014411392612, "rec": [0.03125, 0.40625, 0.7419354838709677, 0.9375, 0.9393939393939394, 0.9032258064516129]}, {"file": "ofhh47030_x1d.fits", "star": "* 139 Tau", "mode": "E230H", "nominal": 1.0336704336927587e-12, "lam_med": 1907.983890680511}, {"file": "ofhh47040_x1d.fits", "star": "* 139 Tau", "mode": "E230H", "nominal": 7.08099396230312e-13, "lam_med": 2157.4274493716184}, {"file": "ofhh48010_x1d.fits", "star": "HD 47432", "mode": "E140H", "nominal": 1.2379219377328076e-13, "lam_med": 1254.0103370547}, {"file": "ofhh48020_x1d.fits", "star": "HD 47432", "mode": "E140H", "nominal": 2.0530229516019007e-13, "lam_med": 1553.435143094558}, {"file": "ofhh48030_x1d.fits", "star": "HD 47432", "mode": "E230H", "nominal": 1.2158725315442249e-13, "lam_med": 1907.8254945763185}, {"file": "ofhh48040_x1d.fits", "star": "HD 47432", "mode": "E230H", "nominal": 5.5444946409200195e-14, "lam_med": 2157.3374237373664}, {"file": "ofhh49010_x1d.fits", "star": "HD 46150", "mode": "E140H", "nominal": 9.133980385238e-14, "lam_med": 1253.9608005093846}, {"file": "ofhh49020_x1d.fits", "star": "HD 46150", "mode": "E140H", "nominal": 3.2887409213705766e-13, "lam_med": 1553.6575402833423}, {"file": "ofhh49030_x1d.fits", "star": "HD 46150", "mode": "E230H", "nominal": 1.2394509390793115e-13, "lam_med": 1907.8610103506796}, {"file": "ofhh49040_x1d.fits", "star": "HD 46150", "mode": "E230H", "nominal": 4.168232661248927e-14, "lam_med": 2157.307377685416}, {"file": "ofhh50010_x1d.fits", "star": "HD 58465A", "mode": "E140M", "nominal": 6.405698862077482e-14, "lam_med": 1379.6821265800636}, {"file": "ofhh50020_x1d.fits", "star": "HD 58465A", "mode": "E230M", "nominal": 5.417461105178768e-14, "lam_med": 1917.5602238647432}, {"file": "ofhh51010_x1d.fits", "star": "* chi02 Ori", "mode": "E140H", "nominal": 1.3971841358049567e-13, "lam_med": 1254.1331165612178}, {"file": "ofhh51020_x1d.fits", "star": "* chi02 Ori", "mode": "E140H", "nominal": 2.178830053915664e-13, "lam_med": 1553.4989990355862}, {"file": "ofhh51030_x1d.fits", "star": "* chi02 Ori", "mode": "E230H", "nominal": 1.2831854266228685e-13, "lam_med": 1907.8693859247292}, {"file": "ofhh51040_x1d.fits", "star": "* chi02 Ori", "mode": "E230H", "nominal": 7.263306584141446e-14, "lam_med": 2157.4092878138763}, {"file": "ofhh52010_x1d.fits", "star": "HD 48279", "mode": "E140M", "nominal": 7.891620481612958e-14, "lam_med": 1379.3304069989913}, {"file": "ofhh52020_x1d.fits", "star": "HD 48279", "mode": "E230M", "nominal": 7.829013820108904e-14, "lam_med": 1917.589851461732}, {"file": "ofhh53010_x1d.fits", "star": "HD 13621", "mode": "E140M", "nominal": 7.666801610077936e-14, "lam_med": 1379.9508126630135, "rec": [0.0, 0.3023255813953488, 0.5, 0.7, 0.9, 0.9024390243902439]}, {"file": "ofhh53020_x1d.fits", "star": "HD 13621", "mode": "E230M", "nominal": 7.725517862411644e-14, "lam_med": 1917.5549655655166}, {"file": "ofhh54010_x1d.fits", "star": "HD 54764", "mode": "E140H", "nominal": 2.168560305369523e-13, "lam_med": 1253.969496524193}, {"file": "ofhh54020_x1d.fits", "star": "HD 54764", "mode": "E230H", "nominal": 1.4149263025922063e-13, "lam_med": 1907.0307830969923}, {"file": "ofhh54030_x1d.fits", "star": "HD 54764", "mode": "E230H", "nominal": 7.782506413647121e-14, "lam_med": 2157.3598358088825}, {"file": "ofhh55010_x1d.fits", "star": "HD 34656", "mode": "E140H", "nominal": 1.823618371559813e-13, "lam_med": 1253.9587076893195}, {"file": "ofhh55020_x1d.fits", "star": "HD 34656", "mode": "E230H", "nominal": 1.8032377783911195e-13, "lam_med": 1907.0025116287616}, {"file": "ofhh55030_x1d.fits", "star": "HD 34656", "mode": "E230H", "nominal": 4.986561691097453e-14, "lam_med": 2157.350372178341}, {"file": "ofhh56010_x1d.fits", "star": "HD 48038", "mode": "E140H", "nominal": 6.159553983539922e-14, "lam_med": 1253.3231737238527}, {"file": "ofhh56020_x1d.fits", "star": "HD 48038", "mode": "E140H", "nominal": 1.2734955382300352e-13, "lam_med": 1553.4437664990946}, {"file": "ofhh56030_x1d.fits", "star": "HD 48038", "mode": "E230H", "nominal": 7.702493931220297e-14, "lam_med": 1907.8701423869131}, {"file": "ofhh56040_x1d.fits", "star": "HD 48038", "mode": "E230H", "nominal": 4.556840984954793e-14, "lam_med": 2157.2995910236423}, {"file": "ofhhz4010_x1d.fits", "star": "HD 104705", "mode": "E230H", "nominal": 3.791405524790407e-14, "lam_med": 2157.1917857634953}, {"file": "ofhhz4020_x1d.fits", "star": "HD 104705", "mode": "E230H", "nominal": 6.003879782955935e-14, "lam_med": 1907.0340041532415}, {"file": "ofhhz6010_x1d.fits", "star": "* alf Cam", "mode": "E230H", "nominal": 1.6840335052658407e-12, "lam_med": 1906.95576799747}, {"file": "ofhhz6020_x1d.fits", "star": "* alf Cam", "mode": "E230H", "nominal": 1.0137030121809986e-12, "lam_med": 2157.265346595044}, {"file": "ofhhz6030_x1d.fits", "star": "* alf Cam", "mode": "E140H", "nominal": 1.6096673065876567e-12, "lam_med": 1254.002247352034}, {"file": "ofhhz6040_x1d.fits", "star": "* alf Cam", "mode": "E140H", "nominal": 1.2648719521537577e-12, "lam_med": 1553.3210142039738}, {"file": "ofhj14010_x1d.fits", "star": "PM J01276+7217", "mode": "E140M", "nominal": 2.0172044706758003e-15, "lam_med": 1380.4926318640432}, {"file": "ofhjab010_x1d.fits", "star": "TOI-2015", "mode": "E140M", "nominal": 4.8971908776355936e-18, "lam_med": 1373.9809335744937}, {"file": "ofhjah010_x1d.fits", "star": "TOI-1452", "mode": "E140M", "nominal": 2.9340945588334097e-16, "lam_med": 1375.932830026894}, {"file": "ofhjaz010_x1d.fits", "star": "PM J12213+5745", "mode": "E140M", "nominal": 3.0950901181838456e-18, "lam_med": 1381.1477717025232}, {"file": "ofhjk6010_x1d.fits", "star": "HD 5278", "mode": "E140M", "nominal": 1.6346093678357515e-15, "lam_med": 1377.6465025142531}, {"file": "ofhjl9010_x1d.fits", "star": "TOI-1224", "mode": "E140M", "nominal": 5.34676302665336e-18, "lam_med": 1380.2953559219416, "rec": [0.09523809523809523, 0.1, 0.09302325581395349, 0.20930232558139536, 0.18604651162790697, 0.14285714285714285]}, {"file": "ofhjm2010_x1d.fits", "star": "LP 759-72", "mode": "E140M", "nominal": 4.490794584684051e-18, "lam_med": 1379.3216195172602}, {"file": "ofhjm9010_x1d.fits", "star": "TOI-2094", "mode": "E140M", "nominal": 2.6139841988117408e-15, "lam_med": 1379.0736182943604}, {"file": "ofhv51010_x1d.fits", "star": "SK 17", "mode": "E230M", "nominal": 9.827164310441085e-15, "lam_med": 1917.5164797277503}, {"file": "ofhv51020_x1d.fits", "star": "SK 17", "mode": "E230M", "nominal": 9.126362307972296e-15, "lam_med": 1917.4920398899394}, {"file": "ofhv51030_x1d.fits", "star": "SK 17", "mode": "E230M", "nominal": 9.370246613489531e-15, "lam_med": 1917.5173745169386}, {"file": "ofhv61010_x1d.fits", "star": "AzV 214", "mode": "E230M", "nominal": 8.64898789987056e-15, "lam_med": 1917.5462840196765}, {"file": "ofhv61020_x1d.fits", "star": "AzV 214", "mode": "E230M", "nominal": 8.13278570952627e-15, "lam_med": 1917.5050249898127}, {"file": "ofhv61030_x1d.fits", "star": "AzV 214", "mode": "E230M", "nominal": 8.364972986004148e-15, "lam_med": 1917.5285312631654}, {"file": "ofhv71010_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 8.089653953867702e-15, "lam_med": 1917.413012683564}, {"file": "ofhv71020_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.45936920644004e-15, "lam_med": 1917.406732443215}, {"file": "ofhv71030_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.639831748270287e-15, "lam_med": 1917.4029009763747}, {"file": "ofhv72010_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 8.529812875964543e-15, "lam_med": 1917.3984769584813}, {"file": "ofhv72020_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.950592259216255e-15, "lam_med": 1917.4244841362108}, {"file": "ofhv72030_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 8.299203187242227e-15, "lam_med": 1917.4055325239494}, {"file": "ofhv73010_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.406206848904054e-15, "lam_med": 1917.5054884601486}, {"file": "ofhv73020_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 6.972834746025911e-15, "lam_med": 1917.5095946630124}, {"file": "ofhv73030_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.236730568937338e-15, "lam_med": 1917.475942149103}, {"file": "ofhv74010_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.895023135463008e-15, "lam_med": 1917.5081729344283}, {"file": "ofhv74020_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.31239752109416e-15, "lam_med": 1917.5151562610117}, {"file": "ofhv74030_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.440664915640238e-15, "lam_med": 1917.5115624672417}, {"file": "ofhv75010_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 8.107320033866786e-15, "lam_med": 1917.5103432178812}, {"file": "ofhv75020_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.465083554593918e-15, "lam_med": 1917.491496678701}, {"file": "ofhv75030_x1d.fits", "star": "AzV 398", "mode": "E230M", "nominal": 7.535654027807308e-15, "lam_med": 1917.4901854817167}, {"file": "ofhv81010_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 7.665455185414126e-15, "lam_med": 1917.4987396500903}, {"file": "ofhv81020_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 7.288664527554054e-15, "lam_med": 1917.5227817766215}, {"file": "ofhv81030_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 7.501578948141459e-15, "lam_med": 1917.5187404861915}, {"file": "ofhv82010_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 8.059899306030777e-15, "lam_med": 1917.477053266481}, {"file": "ofhv82020_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 7.492904660405541e-15, "lam_med": 1917.516528932976}, {"file": "ofhv82030_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 7.627219552610003e-15, "lam_med": 1917.4974691999673}, {"file": "ofhv83010_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 7.0011263739574975e-15, "lam_med": 1917.5264216483297}, {"file": "ofhv83020_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 6.635950440711822e-15, "lam_med": 1917.516970326949}, {"file": "ofhv83030_x1d.fits", "star": "2dFS 3030", "mode": "E230M", "nominal": 6.8379526277690045e-15, "lam_med": 1917.513989476968, "rec": [0.0, 0.4, 0.775, 0.9230769230769231, 0.975, 0.975]}, {"file": "ofiu01010_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.4896610790272873e-15, "lam_med": 1381.331607381414}, {"file": "ofiu01020_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.539269099035386e-15, "lam_med": 1381.590602356706}, {"file": "ofiu02010_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 1.9918025292431582e-15, "lam_med": 1380.712495725073}, {"file": "ofiu02020_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.1516702936277205e-15, "lam_med": 1381.0605627631717}, {"file": "ofiu03010_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.7056271675099103e-15, "lam_med": 1379.1207739942}, {"file": "ofiu03020_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.711595360376455e-15, "lam_med": 1379.5066723388509, "rec": [0.0, 0.07317073170731707, 0.3333333333333333, 0.5714285714285714, 0.5853658536585366, 0.675]}, {"file": "ofiu04010_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.9840699005442284e-15, "lam_med": 1379.6187335408654}, {"file": "ofiu04020_x1d.fits", "star": "* alf Ori", "mode": "E140M", "nominal": 2.9888139427388006e-15, "lam_med": 1379.8783008199273}, {"file": "ofm902010_x1d.fits", "star": "BD-20 2976", "mode": "E230M", "nominal": 3.5006869516202286e-15, "lam_med": 2633.012930808607}, {"file": "ofm902020_x1d.fits", "star": "BD-20 2976", "mode": "E230M", "nominal": 3.196398907425977e-15, "lam_med": 2633.0136142084407}, {"file": "ofm902030_x1d.fits", "star": "BD-20 2976", "mode": "E230M", "nominal": 3.2257669279109466e-15, "lam_med": 2633.0093247180803}, {"file": "ofm902040_x1d.fits", "star": "BD-20 2976", "mode": "E230M", "nominal": 3.24156265337369e-15, "lam_med": 2632.6608085043276}, {"file": "ofm902050_x1d.fits", "star": "BD-20 2976", "mode": "E230M", "nominal": 3.255780576399424e-15, "lam_med": 2632.328725741353}, {"file": "ofms11010_x1d.fits", "star": "* alf Ara", "mode": "E140M", "nominal": 3.7856384746005035e-11, "lam_med": 1380.639819882086}, {"file": "ofms12010_x1d.fits", "star": "* alf Ara", "mode": "E140M", "nominal": 3.9852152156075564e-11, "lam_med": 1380.3984285024999}, {"file": "ofms13010_x1d.fits", "star": "* alf Ara", "mode": "E140M", "nominal": 3.960672103878737e-11, "lam_med": 1380.110139610822, "rec": [0.02631578947368421, 0.38095238095238093, 0.6666666666666666, 0.8717948717948718, 0.825, 0.9512195121951219]}, {"file": "ofms14010_x1d.fits", "star": "* b02 Cyg", "mode": "E140M", "nominal": 4.8046323161337265e-12, "lam_med": 1380.790588863468, "rec": [0.023809523809523808, 0.4523809523809524, 0.7857142857142857, 0.8333333333333334, 0.8333333333333334, 0.9024390243902439]}, {"file": "ofno01010_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 7.606074762831009e-15, "lam_med": 2953.1261145006206}, {"file": "ofno01020_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 4.117217052135412e-15, "lam_med": 2744.4644885360103}, {"file": "ofno01030_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 4.122758458853618e-15, "lam_med": 2744.437633719929}, {"file": "ofno02010_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 3.90578265178209e-15, "lam_med": 2507.6876466476397}, {"file": "ofno02020_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 3.04502263105137e-15, "lam_med": 2507.7395526505}, {"file": "ofno02030_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 3.0627798219819697e-15, "lam_med": 2507.7335528222466}, {"file": "ofno03010_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 3.09716696830453e-15, "lam_med": 2258.0958395156345}, {"file": "ofno03020_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 2.550659140522815e-15, "lam_med": 2258.163890033333}, {"file": "ofno03030_x1d.fits", "star": "* alf Her", "mode": "E230H", "nominal": 2.6683816511804774e-15, "lam_med": 2258.160919851536}, {"file": "ofno04010_x1d.fits", "star": "* alf Her", "mode": "E230M", "nominal": 8.02118085713519e-15, "lam_med": 1917.4617262211993}, {"file": "ofno04020_x1d.fits", "star": "* alf Her", "mode": "E230M", "nominal": 7.579603509422735e-15, "lam_med": 1917.4720894707812}, {"file": "ofno04030_x1d.fits", "star": "* alf Her", "mode": "E230M", "nominal": 7.828084962585382e-15, "lam_med": 1917.4674078938135}, {"file": "ofno05010_x1d.fits", "star": "* alf Her", "mode": "E230M", "nominal": 8.30269323670398e-15, "lam_med": 1917.467294213415}, {"file": "ofno05020_x1d.fits", "star": "* alf Her", "mode": "E230M", "nominal": 7.714148814282676e-15, "lam_med": 1917.4780968430855}, {"file": "ofno06010_x1d.fits", "star": "* alf Her", "mode": "E140M", "nominal": 1.933016032782535e-15, "lam_med": 1380.2302256679982, "rec": [0.0, 0.09302325581395349, 0.25, 0.2619047619047619, 0.4878048780487805, 0.6097560975609756]}, {"file": "ofno06020_x1d.fits", "star": "* alf Her", "mode": "E140M", "nominal": 1.8975442874907554e-15, "lam_med": 1380.2540190441584}, {"file": "ofno06030_x1d.fits", "star": "* alf Her", "mode": "E140M", "nominal": 2.202638710946848e-15, "lam_med": 1379.8093133434206}, {"file": "ofno07010_x1d.fits", "star": "* alf Her", "mode": "E140M", "nominal": 2.7955301168772407e-15, "lam_med": 1379.9846473672335}, {"file": "ofno07020_x1d.fits", "star": "* alf Her", "mode": "E140M", "nominal": 2.826100283809872e-15, "lam_med": 1380.0456068010892}, {"file": "ofno07030_x1d.fits", "star": "* alf Her", "mode": "E140M", "nominal": 3.0469562380846564e-15, "lam_med": 1380.127352602763}, {"file": "ofnu16010_x1d.fits", "star": "HD 131977", "mode": "E230H", "nominal": 4.1784105670182966e-15, "lam_med": 2696.3295345056094}, {"file": "ofoa03010_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 3.103998129200307e-14, "lam_med": 2633.2628615185713}, {"file": "ofoa03030_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 8.943872007050716e-14, "lam_med": 2633.3582995387624, "rec": [0.0049382716049382715, 0.1662531017369727, 0.4962962962962963, 0.7196029776674938, 0.941031941031941, 0.9777227722772277]}, {"file": "ofoa03040_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 6.792404114701807e-15, "lam_med": 2631.7219385402163}, {"file": "ofoa03050_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 5.889295075594312e-15, "lam_med": 2632.561398975669}, {"file": "ofoa04010_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 9.888051214978228e-14, "lam_med": 2632.965070211952}, {"file": "ofoa04020_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.0027980393827676e-13, "lam_med": 2632.9713180782715}, {"file": "ofoa04030_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.0006931492058715e-13, "lam_med": 2632.9664045340724}, {"file": "ofoa04040_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.0027466892683051e-13, "lam_med": 2632.96582682373}, {"file": "ofoa04050_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.0081584004355128e-13, "lam_med": 2632.9305769615025}, {"file": "ofoa07010_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.315945176286662e-14, "lam_med": 2630.9474082994398}, {"file": "ofoa07020_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.45278944533355e-14, "lam_med": 2630.8654624382216}, {"file": "ofoa07030_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.4591540503350426e-14, "lam_med": 2630.8261326015086}, {"file": "ofoa07040_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.437684062012217e-14, "lam_med": 2630.784185149663}, {"file": "ofoa07050_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.448787695047024e-14, "lam_med": 2630.7847071340957}, {"file": "ofoa08010_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.1543289688987677e-14, "lam_med": 2632.775226295884, "rec": [0.006430868167202572, 0.18387096774193548, 0.44516129032258067, 0.7211538461538461, 0.8928571428571429, 0.9611650485436893]}, {"file": "ofoa08020_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.268340168790439e-14, "lam_med": 2632.8021987339}, {"file": "ofoa08030_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.24086413563343e-14, "lam_med": 2632.845100927057, "rec": [0.009852216748768473, 0.22962962962962963, 0.5111111111111111, 0.7475490196078431, 0.8814814814814815, 0.9827586206896551]}, {"file": "ofoa08040_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 5.223710560336902e-14, "lam_med": 2632.931568447381}, {"file": "ofoa08050_x1d.fits", "star": "HD 85628", "mode": "E230M", "nominal": 4.651772751147431e-14, "lam_med": 2631.699922725917, "rec": [0.014705882352941176, 0.29802955665024633, 0.6246913580246913, 0.7586206896551724, 0.9257425742574258, 0.9852579852579852]}, {"file": "ofoa13010_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.42715793438106e-14, "lam_med": 1380.459595896782}, {"file": "ofoa13020_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.603002017023146e-14, "lam_med": 1380.6371960772788}, {"file": "ofoa13030_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.626652245994931e-14, "lam_med": 1380.6831349956792}, {"file": "ofoa13040_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.67780042376631e-14, "lam_med": 1380.8170284421803}, {"file": "ofoa13050_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.788951258883518e-14, "lam_med": 1380.9057816057687}, {"file": "ofoa14010_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.436356186322447e-14, "lam_med": 1380.4830497522917}, {"file": "ofoa14020_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.621563565067532e-14, "lam_med": 1380.6480582593329}, {"file": "ofoa14030_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.613371761633823e-14, "lam_med": 1380.7369025724174}, {"file": "ofoa14040_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.724375622060066e-14, "lam_med": 1380.9164508551912}, {"file": "ofoa14050_x1d.fits", "star": "HD 195689", "mode": "E140M", "nominal": 7.794585200757848e-14, "lam_med": 1380.915049163547}, {"file": "ofoa15010_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.45216474357831e-14, "lam_med": 2631.136169497575}, {"file": "ofoa15020_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.616409036009038e-14, "lam_med": 2631.1461403182866}, {"file": "ofoa15030_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.552505182421194e-14, "lam_med": 2630.9777565642426}, {"file": "ofoa15040_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.541836248452706e-14, "lam_med": 2630.9370336547427}, {"file": "ofoa15050_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.614255291642207e-14, "lam_med": 2630.8992104311983}, {"file": "ofoa16010_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.457077402002335e-14, "lam_med": 2631.78963999596}, {"file": "ofoa16020_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.626853003304827e-14, "lam_med": 2631.765922521625}, {"file": "ofoa16030_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.548057742805387e-14, "lam_med": 2631.5392261895627}, {"file": "ofoa16040_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.557229116240006e-14, "lam_med": 2631.4670710425553}, {"file": "ofoa16050_x1d.fits", "star": "HD 185603", "mode": "E230M", "nominal": 8.615041186911632e-14, "lam_med": 2631.2862463142733}, {"file": "ofoa53010_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 9.822708498839861e-14, "lam_med": 2632.9626098582917}, {"file": "ofoa53020_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.0056953275761843e-13, "lam_med": 2632.960972917441}, {"file": "ofoa53030_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.0025754581931684e-13, "lam_med": 2632.9601468858964}, {"file": "ofoa53040_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.0009635005416212e-13, "lam_med": 2632.953424331415}, {"file": "ofoa53050_x1d.fits", "star": "HD 133112", "mode": "E230M", "nominal": 1.003242307742826e-13, "lam_med": 2632.952024805796}, {"file": "ofp001010_x1d.fits", "star": "* lam Aur", "mode": "E230H", "nominal": 3.4931817866012704e-14, "lam_med": 2696.424945757586}, {"file": "ofp01a010_x1d.fits", "star": "HD 45184", "mode": "E230H", "nominal": 9.602409279517094e-15, "lam_med": 2696.202040438212}, {"file": "ofp01j010_x1d.fits", "star": "HD 134060", "mode": "E230H", "nominal": 9.924983530801894e-15, "lam_med": 2696.0131299140594}, {"file": "ofpa01010_x1d.fits", "star": "HD 54879", "mode": "E140M", "nominal": 1.9580465645407465e-13, "lam_med": 1380.5271941647745, "rec": [0.046511627906976744, 0.2619047619047619, 0.3902439024390244, 0.47619047619047616, 0.6744186046511628, 0.7804878048780488]}, {"file": "ofpa01020_x1d.fits", "star": "HD 54879", "mode": "E140M", "nominal": 1.9365836163846973e-13, "lam_med": 1380.6531454235512, "rec": [0.024390243902439025, 0.36585365853658536, 0.43902439024390244, 0.55, 0.7073170731707317, 0.8536585365853658]}, {"file": "ofqle1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.863492734912761e-14, "lam_med": 2258.1203751934745}, {"file": "ofqle1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.0434853540686247e-13, "lam_med": 1380.6582080819458}, {"file": "ofqle1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 4.1553526116197826e-15, "lam_med": 2633.09035303891}, {"file": "ofqle1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.7233985724080302e-14, "lam_med": 1917.653386296209}, {"file": "ofqle1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 6.3912714703509295e-15, "lam_med": 1415.098489022339}, {"file": "ofqle2030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 3.2594425138826238e-15, "lam_med": 2624.842670666314}, {"file": "ofqle2040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.4173182849142832e-14, "lam_med": 1917.5120548720156, "rec": [0.025, 0.35, 0.775, 0.9743589743589743, 0.925, 1.0]}, {"file": "ofqle2050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 1.2281444647230092e-18, "lam_med": 1414.8937940890291}, {"file": "ofqle3010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.8384167420910887e-14, "lam_med": 2257.9428953629413}, {"file": "ofqle3020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.0391624524211647e-13, "lam_med": 1380.8778494677374}, {"file": "ofqle3030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.229405462625019e-14, "lam_med": 2633.086402917927}, {"file": "ofqle3040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9690059184436738e-13, "lam_med": 1917.5763120641943}, {"file": "ofqle3050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 8.147183207956065e-14, "lam_med": 1415.1320956084141}, {"file": "ofqle4010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.8600940724903856e-14, "lam_med": 2257.9804915073496}, {"file": "ofqle4020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.0203856146179308e-13, "lam_med": 1381.0501733108965}, {"file": "ofqle4030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.312391736346108e-14, "lam_med": 2632.958490849642}, {"file": "ofqle4040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9590339674397734e-13, "lam_med": 1917.5593774200997}, {"file": "ofqle4050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 7.808664336166175e-14, "lam_med": 1414.9336871605065}, {"file": "ofqlf1010_x1d.fits", "star": "BD+28 4211", "mode": "E230H", "nominal": 2.883736052293522e-14, "lam_med": 2257.9518640618758}, {"file": "ofqlf1020_x1d.fits", "star": "BD+28 4211", "mode": "E140M", "nominal": 2.062295211886068e-13, "lam_med": 1380.1481304411839}, {"file": "ofqlf1030_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 6.285718759355388e-14, "lam_med": 2633.180723652492}, {"file": "ofqlf1040_x1d.fits", "star": "BD+28 4211", "mode": "E230M", "nominal": 1.9888921580894118e-13, "lam_med": 1917.6159551889891}, {"file": "ofqlf1050_x1d.fits", "star": "BD+28 4211", "mode": "E140H", "nominal": 8.222150932873303e-14, "lam_med": 1415.1107541425108}]} \ No newline at end of file diff --git a/papers/uv_lasers/data/uv_limits_table.json b/papers/uv_lasers/data/uv_limits_table.json new file mode 100644 index 0000000000000000000000000000000000000000..23ce033f12423d1ee2f041541126de8c9a0fa542 --- /dev/null +++ b/papers/uv_lasers/data/uv_limits_table.json @@ -0,0 +1,10799 @@ +{ + "m90": { + "starcat": 3.266666666666667, + "iue": 3.1008906620206083, + "cos": 2.8077883908890504, + "fuse": 4.738047138047139, + "stis": 3.884895175531916 + }, + "rows": [ + { + "set": "starcat", + "star": "AD-LEO", + "setting": "E140M", + "n": 26, + "lam": 1391.3035658085237, + "flux": 5.841867379038237e-15, + "plx": 201.4064, + "sp": "V* AD Leo; dM3", + "L_iso_W": 1.7231473833505093e+18, + "P_10m_W": 26.543388110723733 + }, + { + "set": "starcat", + "star": "AG-DRA", + "setting": "E140M", + "n": 2, + "lam": 1396.3206812392577, + "flux": 3.916943498896683e-14, + "plx": 0.3411, + "sp": "V* AG Dra; K3IIIep", + "L_iso_W": 4.028108250846977e+24, + "P_10m_W": 62497351.05554667 + }, + { + "set": "starcat", + "star": "AO-PSC", + "setting": "E140M", + "n": 8, + "lam": 1389.3361411736364, + "flux": 2.2735047456708012e-14, + "plx": 2.125, + "sp": "V* AO Psc; ", + "L_iso_W": 6.0241428450707274e+22, + "P_10m_W": 925337.2895954641 + }, + { + "set": "starcat", + "star": "CI-CAM", + "setting": "E140M", + "n": 3, + "lam": 1390.3158719581297, + "flux": 7.82135100466716e-15, + "plx": 0.2101, + "sp": "V* CI Cam; B0/2I[e]", + "L_iso_W": 2.1200540669245343e+24, + "P_10m_W": 32610993.82188138 + }, + { + "set": "starcat", + "star": "CY-TAU", + "setting": "E140M", + "n": 2, + "lam": 1397.8385523147645, + "flux": 6.935351675062792e-15, + "plx": 7.9158, + "sp": "V* CY Tau; M1.5", + "L_iso_W": 1.324329726098548e+21, + "P_10m_W": 20592.083547937902 + }, + { + "set": "starcat", + "star": "DG-TAU", + "setting": "E230M", + "n": 6, + "lam": 2660.948361150576, + "flux": 5.527650818248606e-15, + "plx": 7.9836, + "sp": "V* DG Tau; K6Ve", + "L_iso_W": 1.037672546639134e+21, + "P_10m_W": 58468.68900868098 + }, + { + "set": "starcat", + "star": "DN-LEO", + "setting": "E230M", + "n": 2, + "lam": 2218.5761301955913, + "flux": 8.466334745931123e-14, + "plx": 0.4883, + "sp": "V* DN Leo; Bp", + "L_iso_W": 4.248535507815978e+24, + "P_10m_W": 166409478.81651875 + }, + { + "set": "starcat", + "star": "DR-TAU", + "setting": "E140M", + "n": 2, + "lam": 1396.4822679562421, + "flux": 6.454490872613675e-15, + "plx": 5.1823, + "sp": "V* DR Tau; K5Ve", + "L_iso_W": 2.875637611221109e+21, + "P_10m_W": 44626.73791259462 + }, + { + "set": "starcat", + "star": "DS-TAU", + "setting": "E140M", + "n": 2, + "lam": 1396.7086990713522, + "flux": 6.579141934739058e-15, + "plx": 6.315, + "sp": "V* DS Tau; K4Ve", + "L_iso_W": 1.9739666498021433e+21, + "P_10m_W": 30643.729712824355 + }, + { + "set": "starcat", + "star": "EF-PEG", + "setting": "E140M", + "n": 3, + "lam": 1391.1923096177024, + "flux": 5.616982298557676e-15, + "plx": 3.4624, + "sp": "V* EF Peg; ", + "L_iso_W": 5.606164565995328e+21, + "P_10m_W": 86343.632302425 + }, + { + "set": "starcat", + "star": "EV-LAC", + "setting": "E140M", + "n": 4, + "lam": 1396.2948308222435, + "flux": 6.635886913605769e-15, + "plx": 197.9573, + "sp": "V* EV Lac; M4.0Ve", + "L_iso_W": 2.0261574834741292e+18, + "P_10m_W": 31.43529891781323 + }, + { + "set": "starcat", + "star": "EX-HYA", + "setting": "E140M", + "n": 6, + "lam": 1392.1758392830495, + "flux": 2.6926490196131258e-14, + "plx": 17.5716, + "sp": "V* EX Hya; M5-6V", + "L_iso_W": 1.0434566136271642e+21, + "P_10m_W": 16093.581991802766 + }, + { + "set": "starcat", + "star": "FQ-AQR", + "setting": "E230M", + "n": 2, + "lam": 2218.2713433212057, + "flux": 3.5425157151081575e-14, + "plx": 0.1778, + "sp": "V* FQ Aqr; F", + "L_iso_W": 1.3408047421190895e+25, + "P_10m_W": 525031077.6147385 + }, + { + "set": "starcat", + "star": "FU-ORI", + "setting": "E230M", + "n": 2, + "lam": 2660.960791309208, + "flux": 7.126685764764156e-15, + "plx": 2.4538, + "sp": "V* FU Ori; F0Iab", + "L_iso_W": 1.4162063937577385e+22, + "P_10m_W": 797982.9965171115 + }, + { + "set": "starcat", + "star": "HD100546", + "setting": "E230H", + "n": 13, + "lam": 2514.5751637724543, + "flux": 6.038112874038953e-14, + "plx": 9.2494, + "sp": "HD 100546; A0VaekB8_lB", + "L_iso_W": 8.444838910137278e+21, + "P_10m_W": 424923.49907937646 + }, + { + "set": "starcat", + "star": "HD102065", + "setting": "E230H", + "n": 2, + "lam": 2631.019816516076, + "flux": 1.1736858471656294e-13, + "plx": 5.3002, + "sp": "HD 102065; B9IV", + "L_iso_W": 4.9990170410260734e+22, + "P_10m_W": 2753740.3705241783 + }, + { + "set": "starcat", + "star": "HD103095", + "setting": "E230H", + "n": 4, + "lam": 2884.091903938248, + "flux": 2.472916689638947e-14, + "plx": 109.0296, + "sp": "HD 103095; K1V_Fe-1.5", + "L_iso_W": 2.4890746003433996e+19, + "P_10m_W": 1647.5789699894528 + }, + { + "set": "starcat", + "star": "HD103779", + "setting": "E140H", + "n": 2, + "lam": 1369.456324525474, + "flux": 4.993027536297546e-13, + "plx": 0.4841, + "sp": "HD 103779; B0.5II", + "L_iso_W": 2.549241975663453e+25, + "P_10m_W": 380449982.9758833 + }, + { + "set": "starcat", + "star": "HD104705", + "setting": "E140H", + "n": 3, + "lam": 1450.3772228910802, + "flux": 2.1571244826414116e-13, + "plx": 0.5076, + "sp": "HD 104705; B0III/IV", + "L_iso_W": 1.0017266920272401e+25, + "P_10m_W": 167687744.7347335 + }, + { + "set": "starcat", + "star": "HD106516", + "setting": "E230M", + "n": 2, + "lam": 2661.643312351428, + "flux": 2.957997767837871e-13, + "plx": 44.74, + "sp": "HD 106516; F9VFe-1.7CH-0.7", + "L_iso_W": 1.7681664566948138e+21, + "P_10m_W": 99681.13942448741 + }, + { + "set": "starcat", + "star": "HD106943", + "setting": "E140H", + "n": 2, + "lam": 1351.553222112095, + "flux": 3.609176955541896e-13, + "plx": 2.8818, + "sp": "HD 106943; B7IV", + "L_iso_W": 5.199933225876073e+23, + "P_10m_W": 7558823.544931765 + }, + { + "set": "starcat", + "star": "HD10700", + "setting": "E140M", + "n": 2, + "lam": 1389.4813866965928, + "flux": 7.545622028999616e-15, + "plx": 273.8097, + "sp": "* tau Cet; G8V", + "L_iso_W": 1.2042444492540518e+18, + "P_10m_W": 18.501641263443094 + }, + { + "set": "starcat", + "star": "HD107113", + "setting": "E230M", + "n": 3, + "lam": 1950.312326620469, + "flux": 1.38476476878897e-13, + "plx": 25.016, + "sp": "HD 107113; F4V", + "L_iso_W": 2.6476314684047496e+21, + "P_10m_W": 80141.22960808272 + }, + { + "set": "starcat", + "star": "HD107213", + "setting": "E230M", + "n": 5, + "lam": 2642.460028284971, + "flux": 7.382458766085288e-14, + "plx": 20.9039, + "sp": "* 9 Com; F8Va", + "L_iso_W": 2.0214530395919213e+21, + "P_10m_W": 112323.50471226352 + }, + { + "set": "starcat", + "star": "HD107969", + "setting": "E140M", + "n": 2, + "lam": 1397.1680165895978, + "flux": 1.2579152512843282e-13, + "plx": 0.9653, + "sp": "NGC 4361; [WC]", + "L_iso_W": 1.6152659393003114e+24, + "P_10m_W": 25091778.32386031 + }, + { + "set": "starcat", + "star": "HD108002", + "setting": "E140H", + "n": 2, + "lam": 1351.623460126511, + "flux": 3.217472241860034e-13, + "plx": 0.4106, + "sp": "HD 108002; B2Ia/ab", + "L_iso_W": 2.283464077037332e+25, + "P_10m_W": 331967648.539512 + }, + { + "set": "starcat", + "star": "HD108610", + "setting": "E140H", + "n": 2, + "lam": 1351.5990285695675, + "flux": 3.907893376484489e-13, + "plx": 2.0141, + "sp": "HD 108610; B3IV/V", + "L_iso_W": 1.1526512138846891e+24, + "P_10m_W": 16756518.48197568 + }, + { + "set": "starcat", + "star": "HD108639", + "setting": "E140H", + "n": 2, + "lam": 1351.6555788889023, + "flux": 2.1946816462899596e-13, + "plx": 0.4897, + "sp": "HD 108639; B1III", + "L_iso_W": 1.0950364831661993e+25, + "P_10m_W": 159202838.70844635 + }, + { + "set": "starcat", + "star": "HD108907", + "setting": "E140M", + "n": 3, + "lam": 1390.9370040284073, + "flux": 1.380940527824271e-14, + "plx": 5.7233, + "sp": "* 4 Dra; M3+IIIa", + "L_iso_W": 5.044280381342531e+21, + "P_10m_W": 77661.2321387782 + }, + { + "set": "starcat", + "star": "HD108", + "setting": "E140H", + "n": 4, + "lam": 1255.3346488111542, + "flux": 2.818013808072836e-13, + "plx": 0.498, + "sp": "HD 108; O4-8f?p", + "L_iso_W": 1.359570386155113e+25, + "P_10m_W": 170494692.6826668 + }, + { + "set": "starcat", + "star": "HD110434", + "setting": "E140H", + "n": 2, + "lam": 1353.316389344967, + "flux": 3.8767403942476983e-13, + "plx": 2.339, + "sp": "HD 110434; B8/9III", + "L_iso_W": 8.478588171510793e+23, + "P_10m_W": 12356980.451172566 + }, + { + "set": "starcat", + "star": "HD111812", + "setting": "E140M", + "n": 2, + "lam": 1390.7831834932617, + "flux": 1.1986071338541633e-14, + "plx": 11.8467, + "sp": "* 31 Com; G0IIIp", + "L_iso_W": 1.0218786880867193e+21, + "P_10m_W": 15729.261743063282 + }, + { + "set": "starcat", + "star": "HD112999", + "setting": "E140H", + "n": 2, + "lam": 1252.9357043295354, + "flux": 1.8478213354436606e-13, + "plx": 1.402, + "sp": "HD 112999; B6V", + "L_iso_W": 1.1248152999283698e+24, + "P_10m_W": 14051701.698565824 + }, + { + "set": "starcat", + "star": "HD114762", + "setting": "E230M", + "n": 2, + "lam": 2659.5202755404553, + "flux": 1.331870772669361e-13, + "plx": 26.1979, + "sp": "HD 114762; F9VgF8mF4+M6?V", + "L_iso_W": 2.3219154083106545e+21, + "P_10m_W": 130690.23556478375 + }, + { + "set": "starcat", + "star": "HD114886", + "setting": "E140H", + "n": 2, + "lam": 1351.5728533362758, + "flux": 4.147197950672956e-13, + "plx": 2.13, + "sp": "HD 114886; O9-B0V", + "L_iso_W": 1.0937367967959134e+24, + "P_10m_W": 15899441.896741115 + }, + { + "set": "starcat", + "star": "HD115071", + "setting": "E140H", + "n": 2, + "lam": 1253.1708739317965, + "flux": 1.2358739545238704e-13, + "plx": 0.588, + "sp": "V* V961 Cen; O9.5III+B0Ib", + "L_iso_W": 4.276975797325891e+24, + "P_10m_W": 53449975.88966785 + }, + { + "set": "starcat", + "star": "HD115444", + "setting": "E230M", + "n": 3, + "lam": 2642.479886967934, + "flux": 1.4954480172165015e-14, + "plx": 1.1786, + "sp": "HD 115444; G9V", + "L_iso_W": 1.2881181890319766e+23, + "P_10m_W": 7157629.751722421 + }, + { + "set": "starcat", + "star": "HD115455", + "setting": "E140H", + "n": 2, + "lam": 1253.0850638236088, + "flux": 2.051384904307725e-13, + "plx": 0.5372, + "sp": "HD 115455; O8III((f))", + "L_iso_W": 8.505354359069541e+24, + "P_10m_W": 106278069.05604367 + }, + { + "set": "starcat", + "star": "HD115617", + "setting": "E140M", + "n": 2, + "lam": 1395.3673868902233, + "flux": 7.037073316381005e-15, + "plx": 117.1726, + "sp": "* 61 Vir; G6.5V", + "L_iso_W": 6.13277748102686e+18, + "P_10m_W": 95.02206839533058 + }, + { + "set": "starcat", + "star": "HD11592", + "setting": "E230M", + "n": 2, + "lam": 2660.9519346271, + "flux": 7.122110441496661e-14, + "plx": 24.6741, + "sp": "HD 11592; F6", + "L_iso_W": 1.3997269610835746e+21, + "P_10m_W": 78869.21597931933 + }, + { + "set": "starcat", + "star": "HD116781", + "setting": "E140H", + "n": 2, + "lam": 1255.8355062031064, + "flux": 5.512797459925399e-13, + "plx": 0.4614, + "sp": "HD 116781; O9/B1(I)e", + "L_iso_W": 3.0983760108670654e+25, + "P_10m_W": 388856867.064134 + }, + { + "set": "starcat", + "star": "HD116852", + "setting": "E140H", + "n": 3, + "lam": 1252.8228080213428, + "flux": 2.0705243549734763e-13, + "plx": 0.2823, + "sp": "HD 116852; O8.5II-III((f))", + "L_iso_W": 3.1086788044300773e+25, + "P_10m_W": 388280241.05254793 + }, + { + "set": "starcat", + "star": "HD116956", + "setting": "E140M", + "n": 2, + "lam": 1389.725579169372, + "flux": 1.6268580112855713e-14, + "plx": 46.1911, + "sp": "HD 116956; G9V", + "L_iso_W": 9.1232653378823e+19, + "P_10m_W": 1402.1631336551231 + }, + { + "set": "starcat", + "star": "HD117970", + "setting": "E140M", + "n": 8, + "lam": 1391.5627462517791, + "flux": 7.239301654916734e-14, + "plx": 0.6479, + "sp": "V* RW Hya; M1/2IIIe", + "L_iso_W": 2.063469142775959e+24, + "P_10m_W": 31797553.163397826 + }, + { + "set": "starcat", + "star": "HD120086", + "setting": "E230H", + "n": 3, + "lam": 1761.9714022785458, + "flux": 6.736393444259918e-13, + "plx": 1.0111, + "sp": "HD 120086; B2IV", + "L_iso_W": 7.884179235844523e+24, + "P_10m_W": 194779988.2905972 + }, + { + "set": "starcat", + "star": "HD121968", + "setting": "E140H", + "n": 3, + "lam": 1253.7071935919225, + "flux": 1.0321290682342535e-13, + "plx": 0.2186, + "sp": "HD 121968; B2II", + "L_iso_W": 2.584347793350598e+25, + "P_10m_W": 323246127.5527168 + }, + { + "set": "starcat", + "star": "HD122563", + "setting": "E230M", + "n": 4, + "lam": 2642.489394785691, + "flux": 2.2539190973040626e-14, + "plx": 3.0991, + "sp": "HD 122563; G8:III:Fe-5", + "L_iso_W": 2.807917918621343e+22, + "P_10m_W": 1560274.6420512537 + }, + { + "set": "starcat", + "star": "HD122879", + "setting": "E140H", + "n": 3, + "lam": 1253.5069354525158, + "flux": 7.946407242483744e-13, + "plx": 0.432, + "sp": "HD 122879; B0Ia", + "L_iso_W": 5.0947231559873305e+25, + "P_10m_W": 637036340.7209474 + }, + { + "set": "starcat", + "star": "HD122956", + "setting": "E230M", + "n": 2, + "lam": 2642.4309296286015, + "flux": 1.5466663991333657e-14, + "plx": 2.707, + "sp": "HD 122956; G6IV/VwF6", + "L_iso_W": 2.525442031272198e+22, + "P_10m_W": 1403249.2812456295 + }, + { + "set": "starcat", + "star": "HD124314", + "setting": "E140H", + "n": 2, + "lam": 1369.9168807482592, + "flux": 7.215191754244175e-13, + "plx": 0.32, + "sp": "HD 124314; O6V(n)((f))", + "L_iso_W": 8.430730098078135e+25, + "P_10m_W": 1259052258.88151 + }, + { + "set": "starcat", + "star": "HD124448", + "setting": "E230M", + "n": 2, + "lam": 2218.2867356073566, + "flux": 6.674574759858736e-14, + "plx": 0.624, + "sp": "V* V821 Cen; (B)p", + "L_iso_W": 2.051028463934529e+24, + "P_10m_W": 80315096.98223293 + }, + { + "set": "starcat", + "star": "HD124897", + "setting": "E230H", + "n": 13, + "lam": 2750.790846038911, + "flux": 2.4533930369576572e-14, + "plx": 88.83, + "sp": "* alf Boo; K1.5IIIFe-0.5", + "L_iso_W": 3.720189555907961e+19, + "P_10m_W": 2240.115164643659 + }, + { + "set": "starcat", + "star": "HD126587", + "setting": "E230M", + "n": 2, + "lam": 2643.5484580121647, + "flux": 1.551868683232453e-14, + "plx": 1.5676, + "sp": "HD 126587; CEMP-no", + "L_iso_W": 7.556170076141689e+22, + "P_10m_W": 4202100.276919513 + }, + { + "set": "starcat", + "star": "HD128167", + "setting": "E230H", + "n": 4, + "lam": 2750.838136159766, + "flux": 2.584821760288794e-13, + "plx": 63.4679, + "sp": "* sig Boo; F4VkF2mF1", + "L_iso_W": 7.677849742023967e+20, + "P_10m_W": 46233.82423592036 + }, + { + "set": "starcat", + "star": "HD128620", + "setting": "E140H", + "n": 3, + "lam": 1412.0393392453695, + "flux": 8.229404085090292e-15, + "plx": 742.12, + "sp": "* alf Cen A; G2V", + "L_iso_W": 1.7878759444515376e+17, + "P_10m_W": 2.836750300862531 + }, + { + "set": "starcat", + "star": "HD128987", + "setting": "E140M", + "n": 2, + "lam": 1394.9710890801175, + "flux": 1.2441095013223679e-14, + "plx": 42.1376, + "sp": "V* KU Lib; G8Vk:", + "L_iso_W": 8.383710622020121e+19, + "P_10m_W": 1298.24551005914 + }, + { + "set": "starcat", + "star": "HD131156", + "setting": "E140M", + "n": 2, + "lam": 1393.2311886688792, + "flux": 9.386025177086368e-15, + "plx": 148.98, + "sp": "* ksi Boo; G7Ve+K5Ve", + "L_iso_W": 5.059912887424615e+18, + "P_10m_W": 78.15910036313383 + }, + { + "set": "starcat", + "star": "HD132475", + "setting": "E230M", + "n": 4, + "lam": 2661.1484979388133, + "flux": 2.7172771887477176e-14, + "plx": 10.6709, + "sp": "HD 132475; F5/6V", + "L_iso_W": 2.855282660263924e+21, + "P_10m_W": 160907.93579621226 + }, + { + "set": "starcat", + "star": "HD137595", + "setting": "E140H", + "n": 2, + "lam": 1351.4912427809802, + "flux": 4.907572931302708e-13, + "plx": 1.3097, + "sp": "HD 137595; B2II/III", + "L_iso_W": 3.4232638377771144e+24, + "P_10m_W": 49757319.962266475 + }, + { + "set": "starcat", + "star": "HD140283", + "setting": "E230H", + "n": 28, + "lam": 3017.218850979655, + "flux": 5.037715785834399e-14, + "plx": 16.2672, + "sp": "HD 140283; F9VkA5mA1", + "L_iso_W": 2.2778510125299686e+21, + "P_10m_W": 165017.1475070596 + }, + { + "set": "starcat", + "star": "HD141556", + "setting": "E140H", + "n": 5, + "lam": 1450.2224340185317, + "flux": 7.020446520837461e-13, + "plx": 15.9039, + "sp": "* chi Lup; B9III", + "L_iso_W": 3.3210447514380672e+22, + "P_10m_W": 555819.9131011444 + }, + { + "set": "starcat", + "star": "HD141969", + "setting": "E140H", + "n": 2, + "lam": 1409.3093314471996, + "flux": 2.389520881153875e-14, + "plx": 0.2029, + "sp": "HD 141969; BC0Ibe", + "L_iso_W": 6.944868086402156e+24, + "P_10m_W": 109765735.55823088 + }, + { + "set": "starcat", + "star": "HD142373", + "setting": "E140M", + "n": 4, + "lam": 1395.489632586482, + "flux": 4.264705795198216e-15, + "plx": 62.9028, + "sp": "* chi Her; F8VFe-2Hdel-1", + "L_iso_W": 1.2896337375537127e+19, + "P_10m_W": 199.85257610739217 + }, + { + "set": "starcat", + "star": "HD142560", + "setting": "E140M", + "n": 5, + "lam": 1389.6305634409282, + "flux": 9.27567037077959e-15, + "plx": 6.3489, + "sp": "V* RU Lup; K7/M0e", + "L_iso_W": 2.7533764812937075e+21, + "P_10m_W": 42311.1129554638 + }, + { + "set": "starcat", + "star": "HD14386", + "setting": "E230M", + "n": 8, + "lam": 2662.5724239598526, + "flux": 8.036412169988631e-15, + "plx": 10.91, + "sp": "* omi Cet; M5/6IIIe", + "L_iso_W": 8.078485811035822e+20, + "P_10m_W": 45574.61011269115 + }, + { + "set": "starcat", + "star": "HD147683", + "setting": "E140H", + "n": 2, + "lam": 1351.6611016176007, + "flux": 1.7238333548472413e-13, + "plx": 3.4073, + "sp": "V* V760 Sco; B4V", + "L_iso_W": 1.776608756245291e+23, + "P_10m_W": 2582959.3163550054 + }, + { + "set": "starcat", + "star": "HD147888", + "setting": "E230H", + "n": 4, + "lam": 2258.773602690895, + "flux": 6.780317307023838e-14, + "plx": 8.0932, + "sp": "HD 147888; B3V", + "L_iso_W": 1.2385876288007848e+22, + "P_10m_W": 502877.5887066164 + }, + { + "set": "starcat", + "star": "HD148937", + "setting": "E140H", + "n": 2, + "lam": 1464.8222770963343, + "flux": 4.2564344473064863e-13, + "plx": 0.8417, + "sp": "HD 148937; O6f?p", + "L_iso_W": 7.188670205803687e+24, + "P_10m_W": 122746344.75008611 + }, + { + "set": "starcat", + "star": "HD150798", + "setting": "E230H", + "n": 2, + "lam": 2754.083957153797, + "flux": 1.971551520775634e-13, + "plx": 8.35, + "sp": "* alf TrA; K2III_Ba1", + "L_iso_W": 3.383392986041943e+22, + "P_10m_W": 2042193.6970549785 + }, + { + "set": "starcat", + "star": "HD15137", + "setting": "E140H", + "n": 4, + "lam": 1254.2889822113716, + "flux": 3.5265775175007577e-13, + "plx": 0.4538, + "sp": "HD 15137; O9.5II-IIIn", + "L_iso_W": 2.048998858385971e+25, + "P_10m_W": 256523447.09381184 + }, + { + "set": "starcat", + "star": "HD152590", + "setting": "E230H", + "n": 4, + "lam": 2258.7920592255177, + "flux": 5.223540102220594e-14, + "plx": 0.5684, + "sp": "V* V1297 Sco; O7.5Vz", + "L_iso_W": 1.9345237226715775e+24, + "P_10m_W": 78544666.5576149 + }, + { + "set": "starcat", + "star": "HD155886", + "setting": "E230H", + "n": 2, + "lam": 2682.498757144083, + "flux": 6.075233985575347e-14, + "plx": 168.0031, + "sp": "* 36 Oph A; K2V", + "L_iso_W": 2.575405883481733e+19, + "P_10m_W": 1474.7380249049036 + }, + { + "set": "starcat", + "star": "HD157466", + "setting": "E230H", + "n": 4, + "lam": 2630.7348006459224, + "flux": 2.188195458292191e-14, + "plx": 33.5684, + "sp": "HD 157466; F8V", + "L_iso_W": 2.323496882830982e+20, + "P_10m_W": 12796.35765308688 + }, + { + "set": "starcat", + "star": "HD158643", + "setting": "E140H", + "n": 2, + "lam": 1466.2898725825726, + "flux": 7.460647279239256e-13, + "plx": 7.9538, + "sp": "* c Oph; A0V", + "L_iso_W": 1.4110566195190295e+23, + "P_10m_W": 2414205.563336493 + }, + { + "set": "starcat", + "star": "HD160617", + "setting": "E230H", + "n": 15, + "lam": 2010.1436365724794, + "flux": 2.2049282543702094e-14, + "plx": 9.5249, + "sp": "HD 160617; G0", + "L_iso_W": 2.9079764028849463e+21, + "P_10m_W": 93505.07801157354 + }, + { + "set": "starcat", + "star": "HD161044", + "setting": "E140H", + "n": 6, + "lam": 1233.550821638558, + "flux": 3.307453735837144e-14, + "plx": 0.2672, + "sp": "PN Tc 1; PCyg", + "L_iso_W": 5.542913936910994e+24, + "P_10m_W": 67118519.03640857 + }, + { + "set": "starcat", + "star": "HD163296", + "setting": "E140M", + "n": 2, + "lam": 1393.2870681835861, + "flux": 7.311573248800201e-14, + "plx": 9.9043, + "sp": "HD 163296; A3VaekA1mA1", + "L_iso_W": 8.918268164031984e+21, + "P_10m_W": 137769.11717523067 + }, + { + "set": "starcat", + "star": "HD164963", + "setting": "E140H", + "n": 2, + "lam": 1322.682987122037, + "flux": 9.159585645674428e-14, + "plx": 0.7321, + "sp": "NGC 6543; [WC]", + "L_iso_W": 2.0448067926499676e+24, + "P_10m_W": 28467802.892695535 + }, + { + "set": "starcat", + "star": "HD165185", + "setting": "E140M", + "n": 2, + "lam": 1396.0430025245423, + "flux": 1.60444043712062e-14, + "plx": 58.4296, + "sp": "HD 165185; G1V", + "L_iso_W": 5.623090039756423e+19, + "P_10m_W": 872.0929304859131 + }, + { + "set": "starcat", + "star": "HD165195", + "setting": "E230M", + "n": 2, + "lam": 2661.694019137901, + "flux": 1.0834738354331164e-14, + "plx": 1.4649, + "sp": "V* V2564 Oph; F6/7V", + "L_iso_W": 6.041151611733524e+22, + "P_10m_W": 3405854.796934207 + }, + { + "set": "starcat", + "star": "HD165246", + "setting": "E140H", + "n": 2, + "lam": 1252.1331591414196, + "flux": 2.279511384991299e-13, + "plx": 0.8187, + "sp": "HD 165246; O8V(n)", + "L_iso_W": 4.069203879591544e+24, + "P_10m_W": 50769234.989629194 + }, + { + "set": "starcat", + "star": "HD165341", + "setting": "E140M", + "n": 2, + "lam": 1396.4526019958566, + "flux": 9.623404601454218e-15, + "plx": 196.72, + "sp": "* 70 Oph; K0-V", + "L_iso_W": 2.9754248034281774e+18, + "P_10m_W": 46.173363740412 + }, + { + "set": "starcat", + "star": "HD16582", + "setting": "E230H", + "n": 6, + "lam": 2036.8199320365845, + "flux": 1.630076004956709e-11, + "plx": 5.1312, + "sp": "* del Cet; B2IV", + "L_iso_W": 7.40776564599843e+24, + "P_10m_W": 244558432.9819115 + }, + { + "set": "starcat", + "star": "HD166913", + "setting": "E230M", + "n": 3, + "lam": 2661.524667873368, + "flux": 4.600461247637441e-14, + "plx": 16.7069, + "sp": "HD 166913; F5/7Vw", + "L_iso_W": 1.9720907475846848e+21, + "P_10m_W": 111167.54705383704 + }, + { + "set": "starcat", + "star": "HD168476", + "setting": "E230M", + "n": 2, + "lam": 2218.35364546018, + "flux": 6.164083086792705e-14, + "plx": 0.2521, + "sp": "V* PV Tel; B5?I?pec", + "L_iso_W": 1.1604864066279527e+25, + "P_10m_W": 454455911.5115258 + }, + { + "set": "starcat", + "star": "HD177989", + "setting": "E230H", + "n": 5, + "lam": 2707.7421236836435, + "flux": 4.4769320013823e-14, + "plx": 0.3932, + "sp": "HD 177989; B2II", + "L_iso_W": 3.464740756535133e+24, + "P_10m_W": 202150808.78059396 + }, + { + "set": "starcat", + "star": "HD183344", + "setting": "E230H", + "n": 8, + "lam": 1760.2110004162803, + "flux": 4.441249962404938e-14, + "plx": 1.73, + "sp": "V* U Aql; F5I/II+B9.8V", + "L_iso_W": 1.7755392433121133e+23, + "P_10m_W": 4377739.077626064 + }, + { + "set": "starcat", + "star": "HD184499", + "setting": "E230H", + "n": 4, + "lam": 2630.7921361282474, + "flux": 1.9839323967100126e-14, + "plx": 31.4156, + "sp": "HD 184499; G0V", + "L_iso_W": 2.405212305405703e+20, + "P_10m_W": 13246.972144624986 + }, + { + "set": "starcat", + "star": "HD184738", + "setting": "E230H", + "n": 4, + "lam": 2405.7905403306377, + "flux": 1.27157582395954e-14, + "plx": 0.6184, + "sp": "HD 184738; [WC9]", + "L_iso_W": 3.9785110209633996e+23, + "P_10m_W": 18324255.01778734 + }, + { + "set": "starcat", + "star": "HD186478", + "setting": "E230M", + "n": 3, + "lam": 2654.968338075263, + "flux": 1.114688822520848e-14, + "plx": 1.0967, + "sp": "HD 186478; K2III", + "L_iso_W": 1.1089072538323969e+23, + "P_10m_W": 6220195.759858491 + }, + { + "set": "starcat", + "star": "HD192273", + "setting": "E230H", + "n": 8, + "lam": 2707.7376082829187, + "flux": 5.538455314143419e-14, + "plx": 0.6869, + "sp": "HD 192273; B2V", + "L_iso_W": 1.4044907663658694e+24, + "P_10m_W": 81944946.93169805 + }, + { + "set": "starcat", + "star": "HD192577", + "setting": "E230H", + "n": 14, + "lam": 2384.6579482642683, + "flux": 1.2962475155417064e-13, + "plx": 2.9167, + "sp": "* 31 Cyg; K3Ib+B2IV-V", + "L_iso_W": 1.8231469648113106e+23, + "P_10m_W": 8250190.968336989 + }, + { + "set": "starcat", + "star": "HD19445", + "setting": "E230M", + "n": 2, + "lam": 2661.254476353989, + "flux": 1.1288851968550212e-13, + "plx": 25.8707, + "sp": "HD 19445; G2VFe-3", + "L_iso_W": 2.0181371800808805e+21, + "P_10m_W": 113740.10618140723 + }, + { + "set": "starcat", + "star": "HD195965", + "setting": "E140H", + "n": 2, + "lam": 1387.973902964965, + "flux": 1.0855769981957478e-12, + "plx": 1.243, + "sp": "HD 195965; B0.2Vn", + "L_iso_W": 8.406895333209355e+24, + "P_10m_W": 128880845.7503641 + }, + { + "set": "starcat", + "star": "HD196867", + "setting": "E140H", + "n": 4, + "lam": 1409.359417547148, + "flux": 1.6766670698953142e-12, + "plx": 13.7298, + "sp": "* alf Del; B9IV", + "L_iso_W": 1.064230442571355e+23, + "P_10m_W": 1682167.885486237 + }, + { + "set": "starcat", + "star": "HD197481", + "setting": "E140M", + "n": 4, + "lam": 1396.45191067413, + "flux": 5.668577299092006e-15, + "plx": 102.9432, + "sp": "HD 197481; M1VeBa1", + "L_iso_W": 6.400236317614727e+18, + "P_10m_W": 99.32032111155628 + }, + { + "set": "starcat", + "star": "HD201272", + "setting": "E140H", + "n": 5, + "lam": 1586.5580843808777, + "flux": 2.871903043766657e-14, + "plx": null, + "sp": "NGC 7027; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "HD201345", + "setting": "E140H", + "n": 2, + "lam": 1370.0342614169642, + "flux": 7.826985638919619e-13, + "plx": 0.5213, + "sp": "HD 201345; ON9.2IV", + "L_iso_W": 3.4461672601303583e+25, + "P_10m_W": 514741690.0599653 + }, + { + "set": "starcat", + "star": "HD202347", + "setting": "E230H", + "n": 4, + "lam": 2134.3724764487424, + "flux": 3.232222124007002e-13, + "plx": 1.288, + "sp": "HD 202347; B1V", + "L_iso_W": 2.331238665444393e+24, + "P_10m_W": 84511789.4109317 + }, + { + "set": "starcat", + "star": "HD203244", + "setting": "E140M", + "n": 2, + "lam": 1395.652844555199, + "flux": 1.115936398117636e-14, + "plx": 48.0625, + "sp": "HD 203244; G5V", + "L_iso_W": 5.780215014978338e+19, + "P_10m_W": 895.9606577831237 + }, + { + "set": "starcat", + "star": "HD203338", + "setting": "E230H", + "n": 6, + "lam": 2636.474049969378, + "flux": 1.9450141013698477e-13, + "plx": 0.5546, + "sp": "HD 203338; M1Ibep", + "L_iso_W": 7.566243065179619e+24, + "P_10m_W": 418521166.35438395 + }, + { + "set": "starcat", + "star": "HD203374", + "setting": "E140H", + "n": 3, + "lam": 1254.6448855950264, + "flux": 3.0710478002078705e-13, + "plx": 0.8506, + "sp": "HD 203374; B0IVpe", + "L_iso_W": 5.078706136769301e+24, + "P_10m_W": 63618710.44054615 + }, + { + "set": "starcat", + "star": "HD203387", + "setting": "E140M", + "n": 3, + "lam": 1392.1810396259043, + "flux": 8.655447361059805e-15, + "plx": 16.2048, + "sp": "* iot Cap; G7IIIFe-1.5", + "L_iso_W": 3.943841329679128e+20, + "P_10m_W": 6082.764453292436 + }, + { + "set": "starcat", + "star": "HD204867", + "setting": "E140M", + "n": 4, + "lam": 1391.9791234563177, + "flux": 9.871872085839232e-15, + "plx": 5.9728, + "sp": "* bet Aqr; G0Ib", + "L_iso_W": 3.3110126442452825e+21, + "P_10m_W": 51052.43005781594 + }, + { + "set": "starcat", + "star": "HD205021", + "setting": "E230H", + "n": 5, + "lam": 2066.2769628259093, + "flux": 2.48186227613074e-11, + "plx": 4.76, + "sp": "* bet Cep; B0.5IIIs", + "L_iso_W": 1.3106328152504237e+25, + "P_10m_W": 445295432.93379337 + }, + { + "set": "starcat", + "star": "HD206267", + "setting": "E140H", + "n": 2, + "lam": 1254.5743039950119, + "flux": 6.0678382154782e-13, + "plx": 1.3604, + "sp": "HD 206267; O6.0V((f))+O9:V", + "L_iso_W": 3.9229973192313826e+24, + "P_10m_W": 49136127.22691957 + }, + { + "set": "starcat", + "star": "HD20630", + "setting": "E140M", + "n": 2, + "lam": 1396.6411011464043, + "flux": 9.590635978841188e-15, + "plx": 107.8023, + "sp": "* kap01 Cet; G5V", + "L_iso_W": 9.874352316267762e+18, + "P_10m_W": 153.27396488225668 + }, + { + "set": "starcat", + "star": "HD206697", + "setting": "E140H", + "n": 8, + "lam": 1587.2180579619503, + "flux": 2.6889137157155235e-14, + "plx": 8.8541, + "sp": "V* SS Cyg; K5V", + "L_iso_W": 4.1039804766538e+21, + "P_10m_W": 82275.13693465527 + }, + { + "set": "starcat", + "star": "HD207198", + "setting": "E230H", + "n": 4, + "lam": 2258.608752038077, + "flux": 8.83583133862561e-14, + "plx": 0.9978, + "sp": "HD 207198; O8.5II", + "L_iso_W": 1.0618854818623522e+24, + "P_10m_W": 43107201.79101458 + }, + { + "set": "starcat", + "star": "HD207308", + "setting": "E140M", + "n": 2, + "lam": 1397.4278736478427, + "flux": 2.0072117560285901e-13, + "plx": 1.0817, + "sp": "HD 207308; B0.5V", + "L_iso_W": 2.0525644254962972e+24, + "P_10m_W": 31896698.75471284 + }, + { + "set": "starcat", + "star": "HD207538", + "setting": "E140M", + "n": 2, + "lam": 1390.9345227783647, + "flux": 2.31154172234817e-13, + "plx": 1.1773, + "sp": "HD 207538; O9.7IV", + "L_iso_W": 1.9954677518721816e+24, + "P_10m_W": 30721910.697718006 + }, + { + "set": "starcat", + "star": "HD208266", + "setting": "E140M", + "n": 2, + "lam": 1390.838930657002, + "flux": 2.035729943623501e-13, + "plx": 1.0963, + "sp": "HD 208266; B1V", + "L_iso_W": 2.026649293136535e+24, + "P_10m_W": 31197688.27933907 + }, + { + "set": "starcat", + "star": "HD208816", + "setting": "E230H", + "n": 122, + "lam": 2703.054472928972, + "flux": 7.108881005668868e-15, + "plx": 1.0033, + "sp": "V* VV Cep; M2Ibep+B2?ep_sh", + "L_iso_W": 8.450003430382634e+22, + "P_10m_W": 4913111.461964573 + }, + { + "set": "starcat", + "star": "HD208947", + "setting": "E140H", + "n": 2, + "lam": 1256.4722387984575, + "flux": 1.0215395904606915e-12, + "plx": 2.134, + "sp": "HD 208947; B2V", + "L_iso_W": 2.684006959087977e+24, + "P_10m_W": 33719379.05753931 + }, + { + "set": "starcat", + "star": "HD209339", + "setting": "E140H", + "n": 2, + "lam": 1255.326791550745, + "flux": 8.307177677951134e-13, + "plx": 1.0386, + "sp": "HD 209339; O9.7IV", + "L_iso_W": 9.214549937154155e+24, + "P_10m_W": 115552104.49745771 + }, + { + "set": "starcat", + "star": "HD209458", + "setting": "E140M", + "n": 4, + "lam": 1396.2271179670915, + "flux": 6.318755829752837e-15, + "plx": 20.7694, + "sp": "HD 209458; F9V", + "L_iso_W": 1.7526731662905586e+20, + "P_10m_W": 2718.962457798724 + }, + { + "set": "starcat", + "star": "HD211998", + "setting": "E230H", + "n": 10, + "lam": 2010.179078329749, + "flux": 2.5135321019196057e-14, + "plx": 35.1281, + "sp": "* nu. Ind; G9VFe-3.1CH-1.5", + "L_iso_W": 2.437206796030726e+20, + "P_10m_W": 7837.039102011597 + }, + { + "set": "starcat", + "star": "HD214993", + "setting": "E230M", + "n": 3, + "lam": 2061.2836044782584, + "flux": 1.3975521481872844e-11, + "plx": 2.5877, + "sp": "* 12 Lac; B1.5III", + "L_iso_W": 2.4972236282899838e+25, + "P_10m_W": 844351091.7015064 + }, + { + "set": "starcat", + "star": "HD216916", + "setting": "E230M", + "n": 5, + "lam": 2066.877390982653, + "flux": 1.578136117155016e-11, + "plx": 2.2387, + "sp": "* 16 Lac; B2IVs", + "L_iso_W": 3.7676445690308786e+25, + "P_10m_W": 1280824100.9240673 + }, + { + "set": "starcat", + "star": "HD218915", + "setting": "E140H", + "n": 3, + "lam": 1450.2240318346896, + "flux": 3.466407043538694e-13, + "plx": 0.3192, + "sp": "HD 218915; O9.2Iab", + "L_iso_W": 4.070718380631842e+25, + "P_10m_W": 681289019.4625765 + }, + { + "set": "starcat", + "star": "HD219188", + "setting": "E230H", + "n": 6, + "lam": 2578.410731818542, + "flux": 4.4822523961796024e-13, + "plx": 0.4378, + "sp": "HD 219188; K0III", + "L_iso_W": 2.798092443546173e+25, + "P_10m_W": 1480322686.3115952 + }, + { + "set": "starcat", + "star": "HD220242", + "setting": "E230M", + "n": 2, + "lam": 2512.7689577356923, + "flux": 8.348613570193394e-14, + "plx": 14.4243, + "sp": "HD 220242; F5V", + "L_iso_W": 4.801115255538822e+21, + "P_10m_W": 241233.37016162445 + }, + { + "set": "starcat", + "star": "HD22049", + "setting": "E140M", + "n": 2, + "lam": 1390.6225331888654, + "flux": 8.198514746956328e-15, + "plx": 310.5773, + "sp": "* eps Eri; K2V", + "L_iso_W": 1.0169814398609187e+18, + "P_10m_W": 15.650264706496163 + }, + { + "set": "starcat", + "star": "HD220657", + "setting": "E140M", + "n": 2, + "lam": 1389.700290510511, + "flux": 1.2637490492241098e-14, + "plx": 18.7061, + "sp": "* ups Peg; F8III", + "L_iso_W": 4.3212719993371066e+20, + "P_10m_W": 6641.16141667791 + }, + { + "set": "starcat", + "star": "HD223460", + "setting": "E140M", + "n": 3, + "lam": 1391.3236413758766, + "flux": 7.614793981259497e-15, + "plx": 7.2647, + "sp": "V* OU And; G1IIICaIIem", + "L_iso_W": 1.7263945402712203e+21, + "P_10m_W": 26594.174819802407 + }, + { + "set": "starcat", + "star": "HD224151", + "setting": "E140H", + "n": 2, + "lam": 1369.0476680979673, + "flux": 7.76409960339674e-13, + "plx": 0.5019, + "sp": "V* V373 Cas; B0.5II+B3.5/4III/V", + "L_iso_W": 3.687856145082429e+25, + "P_10m_W": 550048832.9287604 + }, + { + "set": "starcat", + "star": "HD22468", + "setting": "E140M", + "n": 2, + "lam": 1396.4011546564686, + "flux": 2.141262829167959e-14, + "plx": 33.9783, + "sp": "HD 22468; K2:Vnk", + "L_iso_W": 2.2191361596923678e+20, + "P_10m_W": 3443.4555763247554 + }, + { + "set": "starcat", + "star": "HD225642", + "setting": "E230M", + "n": 2, + "lam": 2218.313518301372, + "flux": 4.422589271703493e-14, + "plx": 0.2155, + "sp": "V* V1920 Cyg; B2/3", + "L_iso_W": 1.1394606295921317e+25, + "P_10m_W": 446205903.2685532 + }, + { + "set": "starcat", + "star": "HD226868", + "setting": "E140M", + "n": 8, + "lam": 1392.9081567232056, + "flux": 2.369938720080335e-14, + "plx": 0.4439, + "sp": "HD 226868; O9.7Iabpvar", + "L_iso_W": 1.4390771967387697e+24, + "P_10m_W": 22218727.910778467 + }, + { + "set": "starcat", + "star": "HD22951", + "setting": "E140H", + "n": 10, + "lam": 1410.2497926727972, + "flux": 5.50027765455242e-12, + "plx": 2.7034, + "sp": "* o Per; B0.5V", + "L_iso_W": 9.00494903914886e+24, + "P_10m_W": 142515954.05246624 + }, + { + "set": "starcat", + "star": "HD23180", + "setting": "E140H", + "n": 8, + "lam": 1410.9894687287026, + "flux": 6.72540186243514e-12, + "plx": 3.0224, + "sp": "* omi Per; B1III", + "L_iso_W": 8.809101696129582e+24, + "P_10m_W": 139562681.2010661 + }, + { + "set": "starcat", + "star": "HD23249", + "setting": "E140M", + "n": 2, + "lam": 1395.9825288244201, + "flux": 1.0090880779076375e-14, + "plx": 110.0254, + "sp": "* del Eri; K0+IV", + "L_iso_W": 9.973794779076448e+18, + "P_10m_W": 154.6715828201937 + }, + { + "set": "starcat", + "star": "HD23478", + "setting": "E140H", + "n": 2, + "lam": 1352.0285869615711, + "flux": 4.447894438576608e-13, + "plx": 3.9731, + "sp": "HD 23478; B3IV", + "L_iso_W": 3.371419112882681e+23, + "P_10m_W": 4904272.905686497 + }, + { + "set": "starcat", + "star": "HD240764", + "setting": "E230M", + "n": 2, + "lam": 2660.9345614642125, + "flux": 1.826627785782944e-14, + "plx": 15.42, + "sp": "V* RW Aur; K1/5e+K5e", + "L_iso_W": 9.19175790470942e+20, + "P_10m_W": 51791.33454971105 + }, + { + "set": "starcat", + "star": "HD24190", + "setting": "E140H", + "n": 2, + "lam": 1351.509114477357, + "flux": 3.2079375034697797e-13, + "plx": 2.6313, + "sp": "HD 24190; B2V", + "L_iso_W": 5.5437346214052467e+23, + "P_10m_W": 8058060.545232645 + }, + { + "set": "starcat", + "star": "HD24398", + "setting": "E140H", + "n": 4, + "lam": 1412.2152089947467, + "flux": 8.700720689115134e-12, + "plx": 3.8556, + "sp": "* zet Per; B1Ib", + "L_iso_W": 7.003071315374624e+24, + "P_10m_W": 111142574.79393797 + }, + { + "set": "starcat", + "star": "HD24534", + "setting": "E230H", + "n": 9, + "lam": 2462.897650791251, + "flux": 7.254090475890484e-14, + "plx": 1.6274, + "sp": "V* X Per; O9.5III", + "L_iso_W": 3.277265375740095e+23, + "P_10m_W": 15819562.71898906 + }, + { + "set": "starcat", + "star": "HD2454", + "setting": "E230M", + "n": 2, + "lam": 2502.796731748637, + "flux": 1.2083932161389434e-13, + "plx": 26.2526, + "sp": "HD 2454; F5VSr", + "L_iso_W": 2.097881246216003e+21, + "P_10m_W": 104573.63272638514 + }, + { + "set": "starcat", + "star": "HD256", + "setting": "E140H", + "n": 2, + "lam": 1559.772175147448, + "flux": 1.5309638944769142e-13, + "plx": 9.7179, + "sp": "HD 256; A3Vn_sh", + "L_iso_W": 1.939712489673395e+22, + "P_10m_W": 375534.49492048804 + }, + { + "set": "starcat", + "star": "HD268605", + "setting": "E230H", + "n": 2, + "lam": 2132.6025740819687, + "flux": 2.706907905797999e-14, + "plx": null, + "sp": "HD 268605; O9.5/B0Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "HD269781", + "setting": "E230M", + "n": 3, + "lam": 1950.2027514348697, + "flux": 5.737130811664586e-14, + "plx": 0.0225, + "sp": "HD 269781; A0Iae", + "L_iso_W": 1.3559603210166823e+27, + "P_10m_W": 41038988376.06194 + }, + { + "set": "starcat", + "star": "HD270145", + "setting": "E230H", + "n": 4, + "lam": 2132.536758477654, + "flux": 1.3929157357912244e-14, + "plx": 0.0016, + "sp": "HD 270145; O6.5Iaf", + "L_iso_W": 6.510317129639137e+28, + "P_10m_W": 2356054498480.411 + }, + { + "set": "starcat", + "star": "HD27778", + "setting": "E230H", + "n": 4, + "lam": 2258.39962211038, + "flux": 9.821889141462489e-14, + "plx": 4.7132, + "sp": "* 62 Tau; B3V", + "L_iso_W": 5.290303100159665e+22, + "P_10m_W": 2147198.8996517644 + }, + { + "set": "starcat", + "star": "HD27848", + "setting": "E230H", + "n": 2, + "lam": 2800.391408387351, + "flux": 1.78211106752896e-13, + "plx": 19.959, + "sp": "HD 27848; F6V", + "L_iso_W": 5.352719383016256e+21, + "P_10m_W": 334042.7767647273 + }, + { + "set": "starcat", + "star": "HD28033", + "setting": "E140M", + "n": 3, + "lam": 1389.451046008965, + "flux": 8.521646664112259e-15, + "plx": 21.0221, + "sp": "HD 28033; F8V", + "L_iso_W": 2.3072177951099788e+20, + "P_10m_W": 3544.5836407886327 + }, + { + "set": "starcat", + "star": "HD28205", + "setting": "E140M", + "n": 2, + "lam": 1396.0346431513992, + "flux": 1.3633549846844898e-14, + "plx": 21.284, + "sp": "V* V993 Tau; F8V", + "L_iso_W": 3.6009717548190047e+20, + "P_10m_W": 5584.730778890833 + }, + { + "set": "starcat", + "star": "HD282624", + "setting": "E140H", + "n": 5, + "lam": 1336.265170514785, + "flux": 3.967237711937444e-15, + "plx": 6.37, + "sp": "V* SU Aur; G2IIIne", + "L_iso_W": 1.1698404229617549e+21, + "P_10m_W": 16622.718774964236 + }, + { + "set": "starcat", + "star": "HD283518", + "setting": "E140M", + "n": 4, + "lam": 1398.5713530772728, + "flux": 7.726239121923359e-15, + "plx": 7.7303, + "sp": "V* V410 Tau; K3Ve", + "L_iso_W": 1.5470085473069108e+21, + "P_10m_W": 24079.757329107953 + }, + { + "set": "starcat", + "star": "HD283571", + "setting": "E230M", + "n": 3, + "lam": 2660.9026015398977, + "flux": 7.194997890645643e-15, + "plx": 7.2349, + "sp": "V* RY Tau; K1IV/Ve", + "L_iso_W": 1.6446855263635261e+21, + "P_10m_W": 92668.25024246522 + }, + { + "set": "starcat", + "star": "HD283654", + "setting": "E140H", + "n": 5, + "lam": 1336.373063985656, + "flux": 3.4675296272137317e-15, + "plx": 5.6672, + "sp": "V* DF Tau; M3Ve", + "L_iso_W": 1.2918151290860213e+21, + "P_10m_W": 18358.86926619895 + }, + { + "set": "starcat", + "star": "HD284419", + "setting": "E230M", + "n": 3, + "lam": 2660.9447589737047, + "flux": 7.906370414902737e-15, + "plx": 6.8901, + "sp": "V* T Tau; K0IV/Ve", + "L_iso_W": 1.9927066589097506e+21, + "P_10m_W": 112280.7294619948 + }, + { + "set": "starcat", + "star": "HD28497", + "setting": "E140H", + "n": 7, + "lam": 1586.7978507638459, + "flux": 3.650473063072075e-12, + "plx": 2.1159, + "sp": "* 228 Eri; B2(V)ne", + "L_iso_W": 9.756097592952398e+24, + "P_10m_W": 195483217.76779795 + }, + { + "set": "starcat", + "star": "HD29139", + "setting": "E140M", + "n": 2, + "lam": 1397.0052069338594, + "flux": 1.744522769725889e-14, + "plx": 48.94, + "sp": "* alf Tau; K5+III", + "L_iso_W": 8.71497162224758e+19, + "P_10m_W": 1353.4809979614174 + }, + { + "set": "starcat", + "star": "HD298986", + "setting": "E230M", + "n": 2, + "lam": 2661.259530070326, + "flux": 2.4630500288950674e-14, + "plx": 7.4889, + "sp": "HD 298986; F5", + "L_iso_W": 5.254778754542032e+21, + "P_10m_W": 296154.97369814897 + }, + { + "set": "starcat", + "star": "HD303308", + "setting": "E230H", + "n": 3, + "lam": 2510.8892006129668, + "flux": 1.1195345810475947e-13, + "plx": 0.4432, + "sp": "HD 303308; O4.5V((fc))", + "L_iso_W": 6.819543037921574e+24, + "P_10m_W": 342137366.41052747 + }, + { + "set": "starcat", + "star": "HD30649", + "setting": "E230M", + "n": 2, + "lam": 2660.8696893639617, + "flux": 4.8298084889979284e-14, + "plx": 32.2304, + "sp": "HD 30649; F9VgG1mF7", + "L_iso_W": 5.5630861400005096e+20, + "P_10m_W": 31343.907245023212 + }, + { + "set": "starcat", + "star": "HD30836", + "setting": "E230M", + "n": 8, + "lam": 2065.368161659759, + "flux": 5.23224759444583e-12, + "plx": 3.8715, + "sp": "* pi.04 Ori; B2III", + "L_iso_W": 4.176832166885785e+24, + "P_10m_W": 141785597.17077166 + }, + { + "set": "starcat", + "star": "HD310376", + "setting": "E140M", + "n": 3, + "lam": 1396.4795309133478, + "flux": 7.221051077240942e-14, + "plx": 1.7201, + "sp": "V* QU Car; A", + "L_iso_W": 2.920184492081979e+23, + "P_10m_W": 4531787.894288874 + }, + { + "set": "starcat", + "star": "HD31910", + "setting": "E230H", + "n": 2, + "lam": 2762.1756364857206, + "flux": 1.4745073099924132e-13, + "plx": 3.88, + "sp": "* bet Cam; G1Ib", + "L_iso_W": 1.1719274957683592e+23, + "P_10m_W": 7115304.006479342 + }, + { + "set": "starcat", + "star": "HD32039", + "setting": "E140H", + "n": 5, + "lam": 1253.5314213180989, + "flux": 1.6128031103751206e-13, + "plx": 5.6479, + "sp": "HD 32039; B9V", + "L_iso_W": 6.049571584788266e+22, + "P_10m_W": 756458.6706795443 + }, + { + "set": "starcat", + "star": "HD32040", + "setting": "E140H", + "n": 3, + "lam": 1253.317750755135, + "flux": 3.162599365964739e-13, + "plx": 5.8775, + "sp": "HD 32040; B9V", + "L_iso_W": 1.095408657375243e+23, + "P_10m_W": 1369268.717183261 + }, + { + "set": "starcat", + "star": "HD33262", + "setting": "E230H", + "n": 2, + "lam": 2754.4347605546163, + "flux": 3.504227682678527e-13, + "plx": 85.5233, + "sp": "* zet Dor; F9VFe-0.5", + "L_iso_W": 5.732455350983659e+20, + "P_10m_W": 34609.53765814522 + }, + { + "set": "starcat", + "star": "HD34029", + "setting": "E140M", + "n": 2, + "lam": 1396.7395371213734, + "flux": 7.496428693810348e-14, + "plx": 76.2, + "sp": "* alf Aur; G3III:", + "L_iso_W": 1.5447625659510256e+20, + "P_10m_W": 2398.1852427575436 + }, + { + "set": "starcat", + "star": "HD34078", + "setting": "E230H", + "n": 2, + "lam": 2038.0738176815985, + "flux": 5.08763930552791e-13, + "plx": 2.574, + "sp": "V* AE Aur; O9.5V", + "L_iso_W": 9.187904951598452e+23, + "P_10m_W": 30370115.906879563 + }, + { + "set": "starcat", + "star": "HD34816", + "setting": "E230M", + "n": 5, + "lam": 2065.2370856170082, + "flux": 5.389694382826489e-11, + "plx": 3.3378, + "sp": "* lam Lep; B0.5V", + "L_iso_W": 5.788429978011266e+25, + "P_10m_W": 1964675141.7680383 + }, + { + "set": "starcat", + "star": "HD35337", + "setting": "E230M", + "n": 3, + "lam": 2065.4697961802494, + "flux": 1.6689206570960364e-11, + "plx": 2.7009, + "sp": "* 8 Lep; B2IV", + "L_iso_W": 2.7373853930822883e+25, + "P_10m_W": 929316779.2742443 + }, + { + "set": "starcat", + "star": "HD35914", + "setting": "E140H", + "n": 4, + "lam": 1412.6805145481453, + "flux": 1.341754057919698e-13, + "plx": 0.7341, + "sp": "IC 418; O7fp", + "L_iso_W": 2.9790633204755204e+24, + "P_10m_W": 47310526.3769145 + }, + { + "set": "starcat", + "star": "HD36285", + "setting": "E230H", + "n": 10, + "lam": 2010.1547155694088, + "flux": 1.155136423131334e-12, + "plx": 2.8252, + "sp": "HD 36285; B2V", + "L_iso_W": 1.7316182243844085e+24, + "P_10m_W": 55680259.92448559 + }, + { + "set": "starcat", + "star": "HD36408B", + "setting": "E140H", + "n": 2, + "lam": 1418.316902216418, + "flux": 2.400025144699102e-13, + "plx": 3.0296, + "sp": "HD 36408B; B8V", + "L_iso_W": 3.1286895570335105e+23, + "P_10m_W": 5008401.8290180275 + }, + { + "set": "starcat", + "star": "HD36591", + "setting": "E230M", + "n": 7, + "lam": 2066.9482387876014, + "flux": 2.0631757931175986e-11, + "plx": 2.351, + "sp": "HD 36591; B1IV", + "L_iso_W": 4.466303592287765e+25, + "P_10m_W": 1518439799.5889466 + }, + { + "set": "starcat", + "star": "HD36960", + "setting": "E230M", + "n": 4, + "lam": 2007.8883788195915, + "flux": 3.0863917411288725e-11, + "plx": 2.6166, + "sp": "HD 36960; B0.5V", + "L_iso_W": 5.393785098322374e+25, + "P_10m_W": 1730465348.9550953 + }, + { + "set": "starcat", + "star": "HD37021", + "setting": "E230H", + "n": 4, + "lam": 2280.218047406539, + "flux": 6.438205869707918e-14, + "plx": 2.6548, + "sp": "* tet01 Ori B; B1V", + "L_iso_W": 1.0929958344085133e+23, + "P_10m_W": 4522321.14866787 + }, + { + "set": "starcat", + "star": "HD37061", + "setting": "E230H", + "n": 4, + "lam": 2258.3565424759568, + "flux": 1.2168571069481196e-13, + "plx": 2.4059, + "sp": "HD 37061; O9.5V", + "L_iso_W": 2.5153689964054543e+23, + "P_10m_W": 10208850.778098885 + }, + { + "set": "starcat", + "star": "HD37394", + "setting": "E140M", + "n": 2, + "lam": 1397.4109600853474, + "flux": 1.5047077615508092e-14, + "plx": 81.4987, + "sp": "HD 37394; K0V", + "L_iso_W": 2.7106164125213606e+19, + "P_10m_W": 421.2175812053888 + }, + { + "set": "starcat", + "star": "HD3827", + "setting": "E230H", + "n": 2, + "lam": 1758.1788618174, + "flux": 7.584577132802968e-13, + "plx": 0.5737, + "sp": "HD 3827; B0.7V((n))", + "L_iso_W": 2.7572677272788903e+25, + "P_10m_W": 678258401.8481295 + }, + { + "set": "starcat", + "star": "HD39587", + "setting": "E140M", + "n": 3, + "lam": 1398.1217942748042, + "flux": 1.085491512484743e-14, + "plx": 115.43, + "sp": "* chi01 Ori; G0V", + "L_iso_W": 9.74779317144929e+18, + "P_10m_W": 151.63046019426386 + }, + { + "set": "starcat", + "star": "HD40893", + "setting": "E140H", + "n": 2, + "lam": 1252.750393506558, + "flux": 7.944376975244101e-14, + "plx": 0.2265, + "sp": "HD 40893; B0IV:", + "L_iso_W": 1.8528518539361314e+25, + "P_10m_W": 231398174.2607729 + }, + { + "set": "starcat", + "star": "HD4128", + "setting": "E140M", + "n": 2, + "lam": 1396.4343209876356, + "flux": 1.7574076034328724e-14, + "plx": 33.86, + "sp": "* bet Cet; G9.5IIICH-1", + "L_iso_W": 1.8340697947519264e+20, + "P_10m_W": 2846.079472162598 + }, + { + "set": "starcat", + "star": "HD4174", + "setting": "E140M", + "n": 11, + "lam": 1396.2265781864078, + "flux": 1.7291645548351442e-14, + "plx": 1.6452, + "sp": "V* EG And; M2.4III", + "L_iso_W": 7.643920964702474e+22, + "P_10m_W": 1185818.2382965228 + }, + { + "set": "starcat", + "star": "HD42111", + "setting": "E140H", + "n": 2, + "lam": 1465.8299319060206, + "flux": 2.1751458814641365e-13, + "plx": 5.6327, + "sp": "HD 42111; B9V", + "L_iso_W": 8.202994342854573e+22, + "P_10m_W": 1402586.7093866945 + }, + { + "set": "starcat", + "star": "HD44743", + "setting": "E140H", + "n": 2, + "lam": 1420.5409568442856, + "flux": 9.229293286433044e-11, + "plx": 6.62, + "sp": "* bet CMa; B1II-III", + "L_iso_W": 2.5198212453757877e+25, + "P_10m_W": 404638673.95976233 + }, + { + "set": "starcat", + "star": "HD45348", + "setting": "E230H", + "n": 4, + "lam": 2630.8306321012788, + "flux": 1.9645471112296383e-11, + "plx": 10.55, + "sp": "* alf Car; A9II", + "L_iso_W": 2.11190701972922e+24, + "P_10m_W": 116319013.308574 + }, + { + "set": "starcat", + "star": "HD4539", + "setting": "E230M", + "n": 2, + "lam": 2304.1704287636016, + "flux": 2.256097477038183e-13, + "plx": 5.8281, + "sp": "HD 4539; sdB", + "L_iso_W": 7.947327956793033e+22, + "P_10m_W": 3357689.0042073764 + }, + { + "set": "starcat", + "star": "HD46300", + "setting": "E140H", + "n": 8, + "lam": 1354.7734521406337, + "flux": 4.804218501102005e-13, + "plx": 1.2159, + "sp": "* 13 Mon; A0Ib", + "L_iso_W": 3.8881615344957166e+24, + "P_10m_W": 56789466.77421117 + }, + { + "set": "starcat", + "star": "HD48329", + "setting": "E140M", + "n": 2, + "lam": 1390.0417527700215, + "flux": 1.251999372802885e-14, + "plx": 3.7477, + "sp": "* eps Gem; G8Ib", + "L_iso_W": 1.0665758327551455e+22, + "P_10m_W": 163997.6276290998 + }, + { + "set": "starcat", + "star": "HD50707", + "setting": "E230M", + "n": 3, + "lam": 2059.406815493052, + "flux": 6.504856196743225e-11, + "plx": 2.682, + "sp": "* 15 CMa; B1IV", + "L_iso_W": 1.0820253060838616e+26, + "P_10m_W": 3651840875.133159 + }, + { + "set": "starcat", + "star": "HD59635", + "setting": "E140M", + "n": 2, + "lam": 1395.8696818437147, + "flux": 1.4782968622461415e-11, + "plx": 5.0843, + "sp": "* y Pup; B3V", + "L_iso_W": 6.84252800589264e+24, + "P_10m_W": 106095379.02035452 + }, + { + "set": "starcat", + "star": "HD5980", + "setting": "E140M", + "n": 7, + "lam": 1390.1619151088676, + "flux": 9.945538307027322e-14, + "plx": 0.0608, + "sp": "HD 5980; WN4+O7I:", + "L_iso_W": 3.219129151901099e+26, + "P_10m_W": 4950616782.679203 + }, + { + "set": "starcat", + "star": "HD59967", + "setting": "E140M", + "n": 2, + "lam": 1396.3933205946705, + "flux": 1.5365125094448924e-14, + "plx": 45.9738, + "sp": "HD 59967; G3V", + "L_iso_W": 8.698263525820139e+19, + "P_10m_W": 1349.7030292299899 + }, + { + "set": "starcat", + "star": "HD60414", + "setting": "E230H", + "n": 5, + "lam": 2800.9359893171863, + "flux": 2.576734142454545e-13, + "plx": 1.3538, + "sp": "V* KQ Pup; M1Iabe+B2", + "L_iso_W": 1.6822008866328744e+24, + "P_10m_W": 105020567.62029028 + }, + { + "set": "starcat", + "star": "HD61421", + "setting": "E230H", + "n": 5, + "lam": 2510.648597658066, + "flux": 4.6533473934859824e-12, + "plx": 284.56, + "sp": "* alf CMi; F5IV-V+DQZ", + "L_iso_W": 6.875986834698174e+20, + "P_10m_W": 34490.30497326574 + }, + { + "set": "starcat", + "star": "HD6268", + "setting": "E230M", + "n": 2, + "lam": 2661.2973958791567, + "flux": 1.6467438263734798e-14, + "plx": 1.472, + "sp": "HD 6268; F/Gw", + "L_iso_W": 9.093429183019676e+22, + "P_10m_W": 5125127.133902331 + }, + { + "set": "starcat", + "star": "HD6456", + "setting": "E140H", + "n": 5, + "lam": 1253.4315231888681, + "flux": 1.6120836620373872e-13, + "plx": 10.7087, + "sp": "* 74 Psc A; A0IV-Vnn", + "L_iso_W": 1.6820207043022202e+22, + "P_10m_W": 210291.97455507735 + }, + { + "set": "starcat", + "star": "HD6457", + "setting": "E140H", + "n": 3, + "lam": 1253.4470151647777, + "flux": 4.955553443284326e-13, + "plx": 11.3778, + "sp": "* 74 Psc B; B9IVn", + "L_iso_W": 4.580288546772445e+22, + "P_10m_W": 572657.476686311 + }, + { + "set": "starcat", + "star": "HD69106", + "setting": "E230H", + "n": 3, + "lam": 1761.9035058987515, + "flux": 9.727659942626325e-13, + "plx": 0.6973, + "sp": "HD 69106; O9.7IIn", + "L_iso_W": 2.3937914687188703e+25, + "P_10m_W": 591344674.8958279 + }, + { + "set": "starcat", + "star": "HD72089", + "setting": "E140H", + "n": 3, + "lam": 1292.1856542619057, + "flux": 1.967099877530892e-13, + "plx": 1.7594, + "sp": "HD 72089; B5II/III", + "L_iso_W": 7.603516647043172e+23, + "P_10m_W": 10103095.717690486 + }, + { + "set": "starcat", + "star": "HD72660", + "setting": "E230H", + "n": 3, + "lam": 2510.7336285147844, + "flux": 2.8055449014738763e-13, + "plx": 10.1869, + "sp": "HD 72660; A0V", + "L_iso_W": 3.234822111059538e+22, + "P_10m_W": 1622713.3832469515 + }, + { + "set": "starcat", + "star": "HD72779", + "setting": "E140M", + "n": 3, + "lam": 1392.2502609504168, + "flux": 7.384059673569175e-15, + "plx": 5.3538, + "sp": "* 35 Cnc; G0III", + "L_iso_W": 3.082394180334067e+21, + "P_10m_W": 47545.88416271332 + }, + { + "set": "starcat", + "star": "HD73350", + "setting": "E140M", + "n": 2, + "lam": 1391.4496306971505, + "flux": 1.2873018113338132e-14, + "plx": 41.0649, + "sp": "V* V401 Hya; G5V", + "L_iso_W": 9.13389692243158e+19, + "P_10m_W": 1407.282288724648 + }, + { + "set": "starcat", + "star": "HD76932", + "setting": "E230H", + "n": 9, + "lam": 2010.1741660278276, + "flux": 3.6526207526964984e-14, + "plx": 46.6872, + "sp": "HD 76932; G2VFe-1.8CH-1", + "L_iso_W": 2.005054539222585e+20, + "P_10m_W": 6447.386430941784 + }, + { + "set": "starcat", + "star": "HD82210", + "setting": "E230H", + "n": 2, + "lam": 2757.0427139085905, + "flux": 1.5276927188818362e-13, + "plx": 31.1546, + "sp": "* d UMa; G5III-IV", + "L_iso_W": 1.883254069284131e+21, + "P_10m_W": 113916.34430719796 + }, + { + "set": "starcat", + "star": "HD84748", + "setting": "E230M", + "n": 4, + "lam": 2516.8689918660407, + "flux": 6.8073774653997216e-15, + "plx": 14.0566, + "sp": "V* R Leo; M7-9e", + "L_iso_W": 4.1222708622641843e+20, + "P_10m_W": 20780.111858896 + }, + { + "set": "starcat", + "star": "HD84937", + "setting": "E230M", + "n": 2, + "lam": 2661.0184008277174, + "flux": 1.0145343142087608e-13, + "plx": 13.4978, + "sp": "HD 84937; F8Vm-5", + "L_iso_W": 6.662819191585498e+21, + "P_10m_W": 375442.9203753826 + }, + { + "set": "starcat", + "star": "HD85503", + "setting": "E230H", + "n": 2, + "lam": 3017.3559916065637, + "flux": 5.0761932372843705e-14, + "plx": 26.0971, + "sp": "* mu. Leo; K2IIIbCN1Ca1", + "L_iso_W": 8.918070716426252e+20, + "P_10m_W": 64612.14386950526 + }, + { + "set": "starcat", + "star": "HD85905", + "setting": "E140H", + "n": 2, + "lam": 1465.6866879625877, + "flux": 2.0473893098804374e-13, + "plx": 5.4555, + "sp": "HD 85905; A1IVn", + "L_iso_W": 8.230923706530985e+22, + "P_10m_W": 1407087.156606078 + }, + { + "set": "starcat", + "star": "HD88115", + "setting": "E140H", + "n": 3, + "lam": 1254.6302222083414, + "flux": 2.5003989442599225e-13, + "plx": 0.3901, + "sp": "HD 88115; B1Ib/II", + "L_iso_W": 1.9659599727204313e+25, + "P_10m_W": 246261373.2550795 + }, + { + "set": "starcat", + "star": "HD89688", + "setting": "E230H", + "n": 3, + "lam": 2750.6679251397177, + "flux": 5.137275528237383e-13, + "plx": 1.1613, + "sp": "* 23 Sex; B2IV/V", + "L_iso_W": 4.5578630509069806e+24, + "P_10m_W": 274427566.45012176 + }, + { + "set": "starcat", + "star": "HD91595", + "setting": "E230H", + "n": 8, + "lam": 1760.2117044825072, + "flux": 4.989211048232835e-14, + "plx": 0.4457, + "sp": "V* Y Car; F0/3", + "L_iso_W": 3.005134208535198e+24, + "P_10m_W": 74094132.42795923 + }, + { + "set": "starcat", + "star": "HD93205", + "setting": "E230H", + "n": 3, + "lam": 2510.827418793022, + "flux": 1.9828701328585028e-13, + "plx": 0.4308, + "sp": "V* V560 Car; O3.5V((f))+O8V", + "L_iso_W": 1.2783805282003763e+25, + "P_10m_W": 641333621.5950234 + }, + { + "set": "starcat", + "star": "HD93222", + "setting": "E230H", + "n": 3, + "lam": 2511.022443035188, + "flux": 1.4041804725272768e-13, + "plx": 0.4102, + "sp": "HD 93222; O7V((f))z", + "L_iso_W": 9.985018690130137e+24, + "P_10m_W": 501002862.0540711 + }, + { + "set": "starcat", + "star": "HD93237", + "setting": "E140H", + "n": 2, + "lam": 1351.648416833933, + "flux": 1.1786485026800668e-12, + "plx": 3.0765, + "sp": "HD 93237; B5III", + "L_iso_W": 1.490005031703344e+24, + "P_10m_W": 21662339.15816898 + }, + { + "set": "starcat", + "star": "HD93497", + "setting": "E140M", + "n": 2, + "lam": 1396.042642427865, + "flux": 1.1303944189717378e-14, + "plx": 29.0506, + "sp": "* mu. Vel; G6III", + "L_iso_W": 1.6026439799415852e+20, + "P_10m_W": 2485.561771350918 + }, + { + "set": "starcat", + "star": "HD93843", + "setting": "E140H", + "n": 2, + "lam": 1255.260716359668, + "flux": 8.873539892228976e-13, + "plx": 0.4157, + "sp": "HD 93843; O5III(fc)", + "L_iso_W": 6.144041240012179e+25, + "P_10m_W": 770392654.924728 + }, + { + "set": "starcat", + "star": "HD94028", + "setting": "E230H", + "n": 14, + "lam": 2012.3650790794923, + "flux": 2.4416201608219032e-14, + "plx": 20.2078, + "sp": "HD 94028; F8", + "L_iso_W": 7.154137740359303e+20, + "P_10m_W": 23054.77977637799 + }, + { + "set": "starcat", + "star": "HD97320", + "setting": "E230M", + "n": 2, + "lam": 2661.303843191439, + "flux": 3.573673923973134e-14, + "plx": 17.4961, + "sp": "HD 97320; F3V", + "L_iso_W": 1.3968497156947884e+21, + "P_10m_W": 78727.91356347014 + }, + { + "set": "starcat", + "star": "HD97334", + "setting": "E140M", + "n": 2, + "lam": 1390.2571277115744, + "flux": 1.3394106591544119e-14, + "plx": 44.0583, + "sp": "HD 97334; G2", + "L_iso_W": 8.256111399493345e+19, + "P_10m_W": 1269.8602852889098 + }, + { + "set": "starcat", + "star": "HD99857", + "setting": "E140H", + "n": 4, + "lam": 1253.474220808451, + "flux": 3.091547721623109e-13, + "plx": 0.5447, + "sp": "HD 99857; B1Ib", + "L_iso_W": 1.246747394310082e+25, + "P_10m_W": 155883238.01502258 + }, + { + "set": "starcat", + "star": "HD99872", + "setting": "E140H", + "n": 2, + "lam": 1352.8541772830306, + "flux": 4.4333774521856554e-13, + "plx": 4.16, + "sp": "HD 99872; B3V", + "L_iso_W": 3.06524584174097e+23, + "P_10m_W": 4464341.6367897745 + }, + { + "set": "starcat", + "star": "HZ-HER", + "setting": "E140M", + "n": 34, + "lam": 1389.038759975404, + "flux": 5.646988588803801e-15, + "plx": 0.1153, + "sp": "V* HZ Her; B3/6ep", + "L_iso_W": 5.082478622088647e+24, + "P_10m_W": 78035896.78501464 + }, + { + "set": "starcat", + "star": "IX-VEL", + "setting": "E140M", + "n": 3, + "lam": 1390.9926186462692, + "flux": 2.9460795058000595e-13, + "plx": 11.0674, + "sp": "V* IX Vel; sdOBe", + "L_iso_W": 2.8778656455572775e+22, + "P_10m_W": 443108.72505839827 + }, + { + "set": "starcat", + "star": "KL-UMA", + "setting": "E230M", + "n": 2, + "lam": 1950.2506912689173, + "flux": 4.750774664362529e-14, + "plx": 1.2641, + "sp": "Feige 48; sdB", + "L_iso_W": 3.5572864174308167e+23, + "P_10m_W": 10766879.463908946 + }, + { + "set": "starcat", + "star": "KV-UMA", + "setting": "E230M", + "n": 12, + "lam": 2296.462558873251, + "flux": 2.4315234130427634e-14, + "plx": 0.1605, + "sp": "V* KV UMa; K5V-M1V", + "L_iso_W": 1.1293944449672266e+25, + "P_10m_W": 473974002.8429507 + }, + { + "set": "starcat", + "star": "KY-UMA", + "setting": "E230M", + "n": 2, + "lam": 1950.2608456465257, + "flux": 6.13513761626173e-14, + "plx": 1.8154, + "sp": "PG 1219+534; sdB", + "L_iso_W": 2.2273933134048586e+23, + "P_10m_W": 6741747.007608505 + }, + { + "set": "starcat", + "star": "QR-AND", + "setting": "E140M", + "n": 2, + "lam": 1397.3660420455612, + "flux": 3.8423450792049146e-14, + "plx": 0.2757, + "sp": "V* QR And; Ss", + "L_iso_W": 6.048394347977008e+24, + "P_10m_W": 93983281.57504334 + }, + { + "set": "starcat", + "star": "RR-TEL", + "setting": "E230M", + "n": 2, + "lam": 2305.8823555737727, + "flux": 6.58661388758106e-14, + "plx": null, + "sp": "V* RR Tel; M5e", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "SN1999EM", + "setting": "E140M", + "n": 6, + "lam": 1397.8008076052952, + "flux": 4.5562385142065924e-15, + "plx": null, + "sp": "SN 1999em; SNIIP", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "SN2001IG", + "setting": "E140M", + "n": 5, + "lam": 1397.5063815859667, + "flux": 5.410978547983452e-15, + "plx": null, + "sp": "SN 2001ig; SNIIb", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "SN2003GD", + "setting": "E140M", + "n": 10, + "lam": 1396.0669417922406, + "flux": 5.841494315194398e-15, + "plx": null, + "sp": "SN 2003gd; SNIIP", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0046-7324", + "setting": "E140M", + "n": 2, + "lam": 1390.276938358758, + "flux": 1.1802947765990627e-13, + "plx": 0.0159, + "sp": "SK 10; O6.5III(f)", + "L_iso_W": 5.586161683156037e+27, + "P_10m_W": 85922375443.26556 + }, + { + "set": "starcat", + "star": "STAR0047-7306", + "setting": "E140H", + "n": 12, + "lam": 1233.28870758232, + "flux": 6.1911442861644225e-15, + "plx": 0.0096, + "sp": "SK 13; B1.5Ia", + "L_iso_W": 8.037957849177179e+26, + "P_10m_W": 9728936534.756441 + }, + { + "set": "starcat", + "star": "STAR0047-7307", + "setting": "E140M", + "n": 2, + "lam": 1397.2613398431545, + "flux": 2.3406867901312842e-14, + "plx": 0.0028, + "sp": "BBB SMC 259; B3Ia", + "L_iso_W": 3.572271892950949e+28, + "P_10m_W": 554996096232.6875 + }, + { + "set": "starcat", + "star": "STAR0048-7325", + "setting": "E140M", + "n": 2, + "lam": 1390.0401370287457, + "flux": 4.0967660492448187e-14, + "plx": 1.8315, + "sp": "AzV 47; O8III((f))", + "L_iso_W": 1.4613174918511383e+23, + "P_10m_W": 2246929.260794351 + }, + { + "set": "starcat", + "star": "STAR0050-7242", + "setting": "E140M", + "n": 2, + "lam": 1390.1144645367706, + "flux": 4.2239115590360726e-14, + "plx": null, + "sp": "AzV 83; O7Iaf", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0050-7247", + "setting": "E140M", + "n": 2, + "lam": 1390.1967252971135, + "flux": 3.465058918706426e-14, + "plx": 0.1368, + "sp": "AzV 80; O6IIInn(f)p", + "L_iso_W": 2.215418070918003e+25, + "P_10m_W": 340720568.8864723 + }, + { + "set": "starcat", + "star": "STAR0050-7252", + "setting": "E140M", + "n": 2, + "lam": 1390.2971696745167, + "flux": 4.882110032610665e-14, + "plx": 0.0204, + "sp": "LIN 156; O5.5I(f)", + "L_iso_W": 1.4036683045950656e+27, + "P_10m_W": 21590858278.853085 + }, + { + "set": "starcat", + "star": "STAR0050-7253", + "setting": "E140M", + "n": 2, + "lam": 1390.32600164921, + "flux": 4.138957497793135e-14, + "plx": 0.01, + "sp": "BBB SMC 1; OC7III", + "L_iso_W": 4.952314667939868e+27, + "P_10m_W": 76178366820.9515 + }, + { + "set": "starcat", + "star": "STAR0051-7244", + "setting": "E140M", + "n": 2, + "lam": 1390.2971222338583, + "flux": 3.609027872822602e-14, + "plx": 0.1119, + "sp": "AzV 95; O7.5III((f))", + "L_iso_W": 3.4486357673415595e+25, + "P_10m_W": 530460086.49496925 + }, + { + "set": "starcat", + "star": "STAR0055-7317", + "setting": "E140M", + "n": 2, + "lam": 1397.3102886066195, + "flux": 3.49889629006821e-14, + "plx": 0.023, + "sp": "AzV 170; O9.7I", + "L_iso_W": 7.913938351758052e+26, + "P_10m_W": 12296131881.649319 + }, + { + "set": "starcat", + "star": "STAR0056-7227a", + "setting": "E140M", + "n": 4, + "lam": 1396.577825063912, + "flux": 1.1848484442213614e-14, + "plx": null, + "sp": "Cl* NGC 330 ARP 45; B2IIe", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0056-7227b", + "setting": "E140M", + "n": 4, + "lam": 1396.2650092930319, + "flux": 2.1241028607767848e-14, + "plx": 0.0325, + "sp": "Cl* NGC 330 ARP 14; B3Ib", + "L_iso_W": 2.4061687767057887e+26, + "P_10m_W": 3732947930.84873 + }, + { + "set": "starcat", + "star": "STAR0056-7227c", + "setting": "E140M", + "n": 4, + "lam": 1396.5783884511993, + "flux": 1.862928327735904e-14, + "plx": null, + "sp": "Cl* NGC 330 ARP 13; B0.5Ve", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0056-7228", + "setting": "E140M", + "n": 4, + "lam": 1396.605048694453, + "flux": 2.164891606464304e-14, + "plx": 0.008, + "sp": "Cl* NGC 330 ARP 8; B2.5Ib", + "L_iso_W": 4.047375026995613e+27, + "P_10m_W": 62821861210.498024 + }, + { + "set": "starcat", + "star": "STAR0058-7216", + "setting": "E140M", + "n": 2, + "lam": 1397.1469934733086, + "flux": 2.5318068910976855e-14, + "plx": 0.083, + "sp": "SK 73; B1Iab-Ib", + "L_iso_W": 4.3973563173680505e+25, + "P_10m_W": 683071231.6881434 + }, + { + "set": "starcat", + "star": "STAR0058-7244", + "setting": "E140M", + "n": 4, + "lam": 1396.6760266591268, + "flux": 2.2317410439809268e-14, + "plx": 0.6567, + "sp": "AzV 216; B0IIw", + "L_iso_W": 6.191944187542267e+23, + "P_10m_W": 9611884.123953111 + }, + { + "set": "starcat", + "star": "STAR0059-7205", + "setting": "E140M", + "n": 2, + "lam": 1390.2286373650477, + "flux": 3.286009865872329e-14, + "plx": null, + "sp": "AzV 220; O7If", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0059-7210d", + "setting": "E140M", + "n": 2, + "lam": 1396.1766353312935, + "flux": 1.2757009400428225e-14, + "plx": null, + "sp": "Cl* NGC 346 NMC 17; O8V", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0103-7202", + "setting": "E140M", + "n": 2, + "lam": 1397.5920876092537, + "flux": 4.7240037270389625e-14, + "plx": null, + "sp": "RMC 28; O9.7Ib", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0107-7251", + "setting": "E140M", + "n": 2, + "lam": 1397.3789753619053, + "flux": 4.2942127535581947e-14, + "plx": null, + "sp": "SK 132; O9.5II(n)", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0110-7242", + "setting": "E140H", + "n": 6, + "lam": 1233.322147711174, + "flux": 7.173961803287872e-15, + "plx": 2.7874, + "sp": "SK 143; O9.7Ib", + "L_iso_W": 1.104784909883915e+22, + "P_10m_W": 133727.5631268945 + }, + { + "set": "starcat", + "star": "STAR0114-7320", + "setting": "E230H", + "n": 6, + "lam": 2155.432691494253, + "flux": 1.2199384297366243e-14, + "plx": 0.1857, + "sp": "SK 155; O9Iab(ff)", + "L_iso_W": 4.2328352960182653e+24, + "P_10m_W": 156491385.9979876 + }, + { + "set": "starcat", + "star": "STAR0117-7326", + "setting": "E140M", + "n": 20, + "lam": 1398.146506665899, + "flux": 3.812124963921308e-14, + "plx": 0.004, + "sp": "SK 160; O9.7Ia+", + "L_iso_W": 2.8507846457884183e+28, + "P_10m_W": 443465573434.8546 + }, + { + "set": "starcat", + "star": "STAR0129-1600", + "setting": "E230M", + "n": 42, + "lam": 2661.4360084735085, + "flux": 6.047300970803527e-15, + "plx": 0.4605, + "sp": "BD-16 251; CEMP", + "L_iso_W": 3.412082942951821e+23, + "P_10m_W": 19232767.104096644 + }, + { + "set": "starcat", + "star": "STAR0419-7352", + "setting": "E140M", + "n": 2, + "lam": 1390.3702867788616, + "flux": 2.0535097232457867e-14, + "plx": null, + "sp": "EC 04209-7359; sdB/B", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0456-6624", + "setting": "E140M", + "n": 3, + "lam": 1391.4678096939201, + "flux": 2.786402324739218e-14, + "plx": null, + "sp": "NGC 1763W; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0525-7014", + "setting": "E230M", + "n": 10, + "lam": 1950.1623020141465, + "flux": 7.626818172105765e-15, + "plx": null, + "sp": "LMCN 2000-07a; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0532-6622", + "setting": "E140M", + "n": 5, + "lam": 1396.1175997000382, + "flux": 2.8933954716361815e-14, + "plx": 0.0011, + "sp": "X LMC X-4; O8III", + "L_iso_W": 2.8611438416467505e+29, + "P_10m_W": 4437862395513.661 + }, + { + "set": "starcat", + "star": "STAR0535-0523", + "setting": "E230H", + "n": 9, + "lam": 1907.1462815686887, + "flux": 3.552146519122082e-14, + "plx": null, + "sp": "AT20G J053516-052315; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR0837+6724", + "setting": "E230M", + "n": 4, + "lam": 2066.98491699754, + "flux": 2.1408253489076762e-14, + "plx": 0.1427, + "sp": "PG 0832+676; sdOA", + "L_iso_W": 1.2579128606556798e+25, + "P_10m_W": 427676422.29556394 + }, + { + "set": "starcat", + "star": "STAR0952-4616", + "setting": "E140M", + "n": 2, + "lam": 1391.141978698973, + "flux": 1.1568407567102308e-13, + "plx": null, + "sp": "", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR1326-4727", + "setting": "E230M", + "n": 2, + "lam": 1950.331047677143, + "flux": 3.8154086017283756e-14, + "plx": null, + "sp": "Cl* NGC 5139 BPB 223519; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR1340-0002", + "setting": "E230M", + "n": 8, + "lam": 2365.950710609437, + "flux": 6.737143637240235e-15, + "plx": 3.6494, + "sp": "Wolf 1492; sdF0:", + "L_iso_W": 6.052713762930667e+21, + "P_10m_W": 269619.7228360606 + }, + { + "set": "starcat", + "star": "STAR1342+2826", + "setting": "E230M", + "n": 3, + "lam": 1950.216829851567, + "flux": 2.136951050876388e-14, + "plx": 0.0387, + "sp": "NAME vZ 1128; O8p", + "L_iso_W": 1.707221648896842e+26, + "P_10m_W": 5167087847.609149 + }, + { + "set": "starcat", + "star": "STAR1502-4159", + "setting": "E140M", + "n": 4, + "lam": 1388.8785149682885, + "flux": 6.139698460949823e-15, + "plx": 0.5994, + "sp": "NAME SM Star; sdOB", + "L_iso_W": 2.0447058050484215e+23, + "P_10m_W": 3138697.672801756 + }, + { + "set": "starcat", + "star": "STAR1518+0204", + "setting": "E140M", + "n": 5, + "lam": 1395.6412780311844, + "flux": 4.1676630942855944e-14, + "plx": null, + "sp": "Cl* NGC 5904 SB 2-28; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR1552+3256", + "setting": "E140H", + "n": 4, + "lam": 1293.138290648605, + "flux": 5.769979676406935e-14, + "plx": 0.2708, + "sp": "BD+33 2642; O7p", + "L_iso_W": 9.414434288309804e+24, + "P_10m_W": 125277854.68080424 + }, + { + "set": "starcat", + "star": "STAR1728+1730", + "setting": "E230M", + "n": 2, + "lam": 2661.6607015195796, + "flux": 1.8915070650007907e-14, + "plx": 1.2357, + "sp": "BD+17 3248; KIIvw", + "L_iso_W": 1.4821738251634318e+23, + "P_10m_W": 8355927.445066097 + }, + { + "set": "starcat", + "star": "STAR1740-5338", + "setting": "E140M", + "n": 5, + "lam": 1395.8395916461145, + "flux": 4.7451348208066544e-14, + "plx": 0.4026, + "sp": "NGC 6397 162; sdOp", + "L_iso_W": 3.502823706181756e+24, + "P_10m_W": 54309954.785663195 + }, + { + "set": "starcat", + "star": "STAR1742-4658", + "setting": "E230M", + "n": 2, + "lam": 2218.685353130855, + "flux": 3.110008072368114e-14, + "plx": 0.1585, + "sp": "CD-46 11775; OB+", + "L_iso_W": 1.481222321939352e+25, + "P_10m_W": 580232187.3959789 + }, + { + "set": "starcat", + "star": "STAR1816-3045", + "setting": "E230M", + "n": 3, + "lam": 1949.9666965159208, + "flux": 3.4972736053252486e-14, + "plx": 0.0032, + "sp": "CD-30 15464; B1Ib", + "L_iso_W": 4.086456860732241e+28, + "P_10m_W": 1236492375613.434 + }, + { + "set": "starcat", + "star": "STAR1911-6001", + "setting": "E230M", + "n": 2, + "lam": 2660.233801406197, + "flux": 4.491053756811228e-15, + "plx": 0.2381, + "sp": "NGC 6752 12; K", + "L_iso_W": 9.478655249500058e+23, + "P_10m_W": 53379742.993425414 + }, + { + "set": "starcat", + "star": "STAR2129+1210", + "setting": "E140M", + "n": 2, + "lam": 1395.7470823773847, + "flux": 1.8790403724627974e-14, + "plx": null, + "sp": "Cl* NGC 7078 GEB 682; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "STAR2217-1639", + "setting": "E230M", + "n": 24, + "lam": 2661.2489020112307, + "flux": 3.3051050047594395e-15, + "plx": 0.1602, + "sp": "BPS CS 22892-0052; KIIvw", + "L_iso_W": 1.540910815085782e+24, + "P_10m_W": 86843762.27288528 + }, + { + "set": "starcat", + "star": "TW-HYA", + "setting": "E140H", + "n": 2, + "lam": 1338.3464723166624, + "flux": 1.0817908248970345e-14, + "plx": 16.6289, + "sp": "V* TW Hya; K6Ve", + "L_iso_W": 4.680944753897455e+20, + "P_10m_W": 6672.072679992023 + }, + { + "set": "starcat", + "star": "TY-PSC", + "setting": "E140M", + "n": 6, + "lam": 1397.7330483448502, + "flux": 3.5390088585629016e-14, + "plx": 3.8428, + "sp": "V* TY Psc; ", + "L_iso_W": 2.8674994991110872e+22, + "P_10m_W": 445801.94033722515 + }, + { + "set": "starcat", + "star": "V1190-SCO", + "setting": "E230M", + "n": 4, + "lam": 2652.490089215758, + "flux": 4.6827864565643604e-15, + "plx": 1.4371, + "sp": "WRAY 16-203; K0:", + "L_iso_W": 2.7129865450461803e+22, + "P_10m_W": 1518956.4263704096 + }, + { + "set": "starcat", + "star": "V2244-OPH", + "setting": "E230M", + "n": 2, + "lam": 2218.2328843835585, + "flux": 1.682190842588551e-14, + "plx": 0.1593, + "sp": "LS IV -01 2; OB+", + "L_iso_W": 7.931603174113793e+24, + "P_10m_W": 310574212.2633954 + }, + { + "set": "starcat", + "star": "V338-SER", + "setting": "E140M", + "n": 2, + "lam": 1399.1413306151007, + "flux": 8.424328120614176e-14, + "plx": 1.3446, + "sp": "PG 1605+072; sdB0.2VIHe3", + "L_iso_W": 5.575275402222315e+23, + "P_10m_W": 8685196.181757856 + }, + { + "set": "starcat", + "star": "V382-VEL", + "setting": "E140M", + "n": 4, + "lam": 1393.1936142028194, + "flux": 2.088276273580885e-12, + "plx": 0.6439, + "sp": "V* V382 Vel; ", + "L_iso_W": 6.0265445179245885e+25, + "P_10m_W": 930853755.7519164 + }, + { + "set": "starcat", + "star": "V3885-SGR", + "setting": "E140M", + "n": 3, + "lam": 1396.5090588314474, + "flux": 1.3404718608689075e-13, + "plx": 7.7535, + "sp": "CD-42 14462; sdB", + "L_iso_W": 2.6679604317599585e+22, + "P_10m_W": 414054.04785034794 + }, + { + "set": "starcat", + "star": "V405-AUR", + "setting": "E140M", + "n": 4, + "lam": 1392.059295429371, + "flux": 1.0129919537637706e-14, + "plx": 1.4834, + "sp": "V* V405 Aur; ", + "L_iso_W": 5.50816208472878e+22, + "P_10m_W": 849400.1174780464 + }, + { + "set": "starcat", + "star": "V471-TAU", + "setting": "E140M", + "n": 14, + "lam": 1396.5769249328484, + "flux": 6.554990596965175e-14, + "plx": null, + "sp": "V* V471 Tau C; ", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "V572-CAR", + "setting": "E230H", + "n": 3, + "lam": 2750.9511715808485, + "flux": 5.4181624306476886e-14, + "plx": 0.369, + "sp": "V* V572 Car; O7V+O9.5V+B0.2IV", + "L_iso_W": 4.761201407306525e+24, + "P_10m_W": 286729549.94860774 + }, + { + "set": "starcat", + "star": "V621-PER", + "setting": "E230M", + "n": 4, + "lam": 2008.4440547342367, + "flux": 5.498853295126927e-14, + "plx": 0.3952, + "sp": "V* V621 Per; B1.5I", + "L_iso_W": 4.212651438812665e+24, + "P_10m_W": 135227537.725671 + }, + { + "set": "starcat", + "star": "V645-CEN", + "setting": "E140M", + "n": 7, + "lam": 1390.708471927772, + "flux": 3.3051249828413565e-15, + "plx": 768.0665, + "sp": "NAME Proxima Centauri; M5.5Ve", + "L_iso_W": 6.703590939445756e+16, + "P_10m_W": 1.031738987127015 + }, + { + "set": "starcat", + "star": "V819-TAU", + "setting": "E140M", + "n": 4, + "lam": 1396.2728768968009, + "flux": 8.38613618556885e-15, + "plx": 7.7342, + "sp": "WK81 1; K7", + "L_iso_W": 1.6774453462127215e+21, + "P_10m_W": 26024.303708906456 + }, + { + "set": "starcat", + "star": "V836-TAU", + "setting": "E140M", + "n": 4, + "lam": 1397.2506124347883, + "flux": 7.563804925866867e-15, + "plx": 5.9882, + "sp": "V* V836 Tau; K7/M0Ve", + "L_iso_W": 2.5238584319801017e+21, + "P_10m_W": 39210.62313139006 + }, + { + "set": "starcat", + "star": "VW-HYI", + "setting": "E140M", + "n": 6, + "lam": 1391.1569944872974, + "flux": 2.7439452545856606e-14, + "plx": 18.5743, + "sp": "V* VW Hyi; DQ", + "L_iso_W": 9.516292798093799e+20, + "P_10m_W": 14655.82326714136 + }, + { + "set": "starcat", + "star": "VY-AQR", + "setting": "E140M", + "n": 3, + "lam": 1390.0836565327722, + "flux": 6.553595901625128e-15, + "plx": 7.0526, + "sp": "V* VY Aqr; ", + "L_iso_W": 1.5765161296584544e+21, + "P_10m_W": 24242.1106408634 + }, + { + "set": "starcat", + "star": "VZ-CET", + "setting": "E140M", + "n": 2, + "lam": 1395.7140531568634, + "flux": 8.89993859187593e-15, + "plx": null, + "sp": "* omi Cet B; DA", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "WD0044-121", + "setting": "E140H", + "n": 2, + "lam": 1323.1056793513726, + "flux": 1.5731128529120368e-13, + "plx": 1.8753, + "sp": "UCAC4 391-000857; ", + "L_iso_W": 5.352240712357842e+23, + "P_10m_W": 7456153.503000755 + }, + { + "set": "starcat", + "star": "WD0050-332", + "setting": "E140H", + "n": 2, + "lam": 1253.0622603089098, + "flux": 5.496678568611443e-14, + "plx": 16.8988, + "sp": "GD 659; DA1.4", + "L_iso_W": 2.3030632973079022e+21, + "P_10m_W": 28776.721283835697 + }, + { + "set": "starcat", + "star": "WD0209+085", + "setting": "E140M", + "n": 2, + "lam": 1397.4375658552062, + "flux": 9.037165860264243e-14, + "plx": 12.0996, + "sp": "Feige 20; DA1.4", + "L_iso_W": 7.385969188141286e+21, + "P_10m_W": 114779.00486290615 + }, + { + "set": "starcat", + "star": "WD0232+035", + "setting": "E140M", + "n": 2, + "lam": 1396.0910253603754, + "flux": 1.5125686097679705e-13, + "plx": 12.8677, + "sp": "V* FS Cet; DA1+dM", + "L_iso_W": 1.0930260034027612e+22, + "P_10m_W": 169530.60059880375 + }, + { + "set": "starcat", + "star": "WD0429+176", + "setting": "E140M", + "n": 4, + "lam": 1396.5290342057574, + "flux": 2.7210951445680153e-14, + "plx": 23.3916, + "sp": "HZ 9; DA3+dM", + "L_iso_W": 5.950331134054699e+20, + "P_10m_W": 9234.878993932532 + }, + { + "set": "starcat", + "star": "WD0439+466", + "setting": "E140M", + "n": 2, + "lam": 1398.2277035855318, + "flux": 1.3876620120928144e-13, + "plx": 7.8395, + "sp": "SH 2-216; DAO.6", + "L_iso_W": 2.7016198312390354e+22, + "P_10m_W": 420310.4395060624 + }, + { + "set": "starcat", + "star": "WD0501+527", + "setting": "E230H", + "n": 40, + "lam": 2486.9870293332856, + "flux": 2.9234442921474836e-14, + "plx": 19.0497, + "sp": "BD+52 913; DA.8", + "L_iso_W": 9.639084915881713e+20, + "P_10m_W": 47443.09169701425 + }, + { + "set": "starcat", + "star": "WD0501-289", + "setting": "E140H", + "n": 2, + "lam": 1254.227289023701, + "flux": 5.212627868662636e-15, + "plx": 7.2332, + "sp": "MCT 0501-2858; DOZ", + "L_iso_W": 1.1921009645848937e+21, + "P_10m_W": 14922.983778143185 + }, + { + "set": "starcat", + "star": "WD0505+012", + "setting": "E140M", + "n": 2, + "lam": 1398.8725170718612, + "flux": 5.5568153524258815e-14, + "plx": 2.4929, + "sp": "HS 0505+0112; DAOZ.8", + "L_iso_W": 1.0698761733617482e+23, + "P_10m_W": 1666018.9136109208 + }, + { + "set": "starcat", + "star": "WD0556-375", + "setting": "E140M", + "n": 3, + "lam": 1391.9891261348753, + "flux": 5.6694099568607794e-14, + "plx": 5.0964, + "sp": "2RE J055812-373503; DA.85?", + "L_iso_W": 2.6117290101218877e+22, + "P_10m_W": 402707.7007214247 + }, + { + "set": "starcat", + "star": "WD0939+262", + "setting": "E140M", + "n": 3, + "lam": 1398.3653768820357, + "flux": 4.9717778976233455e-14, + "plx": 5.4462, + "sp": "Ton 21; DA.7", + "L_iso_W": 2.005588416821128e+22, + "P_10m_W": 312085.27178645274 + }, + { + "set": "starcat", + "star": "WD0948+534", + "setting": "E140M", + "n": 4, + "lam": 1391.092654260073, + "flux": 3.735723040633102e-14, + "plx": 3.1772, + "sp": "PG 0948+534; DA.4", + "L_iso_W": 4.427951224032635e+22, + "P_10m_W": 681875.4881874721 + }, + { + "set": "starcat", + "star": "WD1123+189", + "setting": "E140H", + "n": 2, + "lam": 1255.2829353797963, + "flux": 4.3900733123182475e-14, + "plx": 7.9657, + "sp": "PG 1123+189A; DA.9", + "L_iso_W": 8.278299705729061e+21, + "P_10m_W": 103804.10572743641 + }, + { + "set": "starcat", + "star": "WD1136+667", + "setting": "E140M", + "n": 3, + "lam": 1395.9942277534822, + "flux": 9.88240590963229e-14, + "plx": 4.447, + "sp": "HS 1136+6646; DAO.6", + "L_iso_W": 5.9792359852891475e+22, + "P_10m_W": 927263.3086878143 + }, + { + "set": "starcat", + "star": "WD1159-034", + "setting": "E140M", + "n": 3, + "lam": 1395.609200380131, + "flux": 1.1245738756794166e-13, + "plx": 1.6905, + "sp": "V* GW Vir; DOQZ1", + "L_iso_W": 4.708416850474232e+23, + "P_10m_W": 7297812.296592422 + }, + { + "set": "starcat", + "star": "WD1210+533", + "setting": "E140M", + "n": 3, + "lam": 1398.2014013192595, + "flux": 6.261001130582902e-14, + "plx": 9.4489, + "sp": "PG 1210+533; DAO1.1", + "L_iso_W": 8.390706724411153e+21, + "P_10m_W": 130535.35175345937 + }, + { + "set": "starcat", + "star": "WD1254+223", + "setting": "E230H", + "n": 4, + "lam": 2510.707829837212, + "flux": 1.5342541802636617e-14, + "plx": 14.593, + "sp": "GD 153; DA1.2", + "L_iso_W": 8.620360244385879e+20, + "P_10m_W": 43242.21236040014 + }, + { + "set": "starcat", + "star": "WD1314+293", + "setting": "E230H", + "n": 8, + "lam": 2510.5639802833784, + "flux": 1.460042693487741e-14, + "plx": 16.5725, + "sp": "HZ 43A; DAwk", + "L_iso_W": 6.360727127835224e+20, + "P_10m_W": 31903.585053729188 + }, + { + "set": "starcat", + "star": "WD1957+225", + "setting": "E140M", + "n": 2, + "lam": 1392.1076077707576, + "flux": 8.034093725354646e-14, + "plx": 2.57, + "sp": "M 27; DAO.6", + "L_iso_W": 1.4554185712881113e+23, + "P_10m_W": 2244520.9426587704 + }, + { + "set": "starcat", + "star": "WD2134+125", + "setting": "E140M", + "n": 3, + "lam": 1396.4167989426248, + "flux": 1.3388651262991045e-13, + "plx": 0.6042, + "sp": "NGC 7094; sdB/sdO", + "L_iso_W": 4.3882630468374075e+24, + "P_10m_W": 68094638.42940912 + }, + { + "set": "starcat", + "star": "WD2148+286", + "setting": "E230H", + "n": 20, + "lam": 2258.744076732131, + "flux": 8.667425914402277e-14, + "plx": 8.9169, + "sp": "BD+28 4211; sdO2VIIIHe5", + "L_iso_W": 1.304306356498854e+22, + "P_10m_W": 529546.1320277711 + }, + { + "set": "starcat", + "star": "WD2226-210", + "setting": "E140M", + "n": 2, + "lam": 1398.5401078800573, + "flux": 1.136943124667853e-13, + "plx": null, + "sp": "", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "starcat", + "star": "WD2342+806", + "setting": "E140M", + "n": 3, + "lam": 1397.2551035204092, + "flux": 4.7630295681240504e-14, + "plx": 3.446, + "sp": "GD 561; DAO.7", + "L_iso_W": 4.7992126798565416e+22, + "P_10m_W": 745609.6865153133 + }, + { + "set": "starcat", + "star": "WX-CET", + "setting": "E140M", + "n": 3, + "lam": 1398.7856379106447, + "flux": 5.973312769936056e-15, + "plx": 3.9363, + "sp": "V* WX Cet; ", + "L_iso_W": 4.612709879714641e+21, + "P_10m_W": 71820.5299162288 + }, + { + "set": "starcat", + "star": "WZ-SGE", + "setting": "E140M", + "n": 30, + "lam": 1395.9707742532337, + "flux": 1.3354286179559678e-14, + "plx": 22.1035, + "sp": "V* WZ Sge; D", + "L_iso_W": 3.270512761336336e+20, + "P_10m_W": 5071.759323073756 + }, + { + "set": "starcat", + "star": "YZ-CMI", + "setting": "E230M", + "n": 6, + "lam": 2661.5772814672464, + "flux": 6.500048907929005e-15, + "plx": 166.9769, + "sp": "V* YZ CMi; M4.0Ve", + "L_iso_W": 2.7894661881763804e+18, + "P_10m_W": 157.24954564236447 + }, + { + "set": "iue", + "star": "* eps Ind", + "setting": "lwp", + "n": 6, + "lam": 2991.3088158701685, + "flux": 1.7712522119872732e-12, + "plx": 274.8431, + "sp": "K5V", + "L_iso_W": 2.8056144774069554e+20, + "P_10m_W": 19977.476649193533 + }, + { + "set": "iue", + "star": "HD 4628", + "setting": "lwp", + "n": 3, + "lam": 3015.2830786549202, + "flux": 1.9657292681572436e-12, + "plx": 134.4948, + "sp": "K2.5V", + "L_iso_W": 1.300259340261706e+21, + "P_10m_W": 94075.44886728762 + }, + { + "set": "iue", + "star": "* tau Cet", + "setting": "lwp", + "n": 2, + "lam": 2785.8268885416496, + "flux": 9.58230446337821e-12, + "plx": 273.8097, + "sp": "G8V", + "L_iso_W": 1.5292890257074553e+21, + "P_10m_W": 94446.95477751168 + }, + { + "set": "iue", + "star": "* eps Eri", + "setting": "swp", + "n": 5, + "lam": 1226.2258329925926, + "flux": 1.2263092914277492e-12, + "plx": 310.5773, + "sp": "K2V", + "L_iso_W": 1.5211703917151696e+20, + "P_10m_W": 1820.1573009130666 + }, + { + "set": "iue", + "star": "* chi01 Ori", + "setting": "swp", + "n": 8, + "lam": 1878.6814199689595, + "flux": 3.733224797051379e-13, + "plx": 115.43, + "sp": "G0V", + "L_iso_W": 3.352463171350138e+20, + "P_10m_W": 9415.869528739438 + }, + { + "set": "iue", + "star": "* ksi Boo", + "setting": "swp", + "n": 2, + "lam": 1221.7966261060253, + "flux": 1.5402567086911997e-12, + "plx": 148.98, + "sp": "G7Ve+K5Ve", + "L_iso_W": 8.303370833987172e+20, + "P_10m_W": 9863.758105429797 + }, + { + "set": "iue", + "star": "* alf Lyr", + "setting": "swp", + "n": 17, + "lam": 1565.0105787988698, + "flux": 1.005266331129914e-09, + "plx": 130.23, + "sp": "A0V", + "L_iso_W": 7.09212401372319e+23, + "P_10m_W": 13822958.754946075 + }, + { + "set": "iue", + "star": "* e Eri", + "setting": "lwr", + "n": 31, + "lam": 2817.6379649794594, + "flux": 6.649148167023897e-12, + "plx": 165.5242, + "sp": "G6V", + "L_iso_W": 2.9037570727811445e+21, + "P_10m_W": 183451.30155442163 + }, + { + "set": "iue", + "star": "* alf CMi", + "setting": "swp", + "n": 18, + "lam": 1771.6680521266694, + "flux": 8.461203847651537e-12, + "plx": 284.56, + "sp": "F5IV-V+DQZ", + "L_iso_W": 1.2502639786488307e+21, + "P_10m_W": 31228.891040232465 + }, + { + "set": "iue", + "star": "* alf Cen A", + "setting": "swp", + "n": 15, + "lam": 1872.0979390521716, + "flux": 1.2398271921994998e-12, + "plx": 742.12, + "sp": "G2V", + "L_iso_W": 2.6935816850049085e+19, + "P_10m_W": 751.2377732574964 + }, + { + "set": "iue", + "star": "* 70 Oph", + "setting": "lwp", + "n": 12, + "lam": 2875.206255961895, + "flux": 3.969982485853346e-12, + "plx": 196.72, + "sp": "K0-V", + "L_iso_W": 1.227464171650696e+21, + "P_10m_W": 80748.96599256141 + }, + { + "set": "iue", + "star": "HD 191408", + "setting": "lwp", + "n": 2, + "lam": 3035.7232613238366, + "flux": 4.086086760842095e-12, + "plx": 166.3272, + "sp": "K2.5V", + "L_iso_W": 1.7672512431221212e+21, + "P_10m_W": 129602.32382080315 + }, + { + "set": "iue", + "star": "* alf CMa B", + "setting": "lwp", + "n": 2, + "lam": 2744.16682500346, + "flux": 5.325229573608406e-12, + "plx": 374.4896, + "sp": "DA1.9", + "L_iso_W": 4.5433487786871987e+20, + "P_10m_W": 27226.21269395566 + }, + { + "set": "iue", + "star": "* alf Aql", + "setting": "swp", + "n": 10, + "lam": 1435.3759281012312, + "flux": 9.393622962729719e-12, + "plx": 194.95, + "sp": "A7Vn", + "L_iso_W": 2.9573580672178974e+21, + "P_10m_W": 48487.005555384865 + }, + { + "set": "iue", + "star": "* bet CVn", + "setting": "lwp", + "n": 2, + "lam": 2836.139733367414, + "flux": 1.6768912103179656e-11, + "plx": 118.0266, + "sp": "G0V", + "L_iso_W": 1.4403311731452454e+22, + "P_10m_W": 921950.7982644803 + }, + { + "set": "iue", + "star": "* del Eri", + "setting": "lwp", + "n": 3, + "lam": 2920.104923123755, + "flux": 6.341361260800825e-12, + "plx": 110.0254, + "sp": "K0+IV", + "L_iso_W": 6.26778149696879e+21, + "P_10m_W": 425305.4000598499 + }, + { + "set": "iue", + "star": "* bet Hyi", + "setting": "lwr", + "n": 100, + "lam": 2680.808331010174, + "flux": 1.0712807442500814e-11, + "plx": 134.07, + "sp": "G0V", + "L_iso_W": 7.13111343801154e+21, + "P_10m_W": 407829.85030512424 + }, + { + "set": "iue", + "star": "V* AT Mic A", + "setting": "lwp", + "n": 3, + "lam": 2820.845433410453, + "flux": 1.0908788134988168e-12, + "plx": 100.7921, + "sp": "M4.5Ve", + "L_iso_W": 1.284815551245892e+21, + "P_10m_W": 81355.983651952 + }, + { + "set": "iue", + "star": "* kap01 Cet", + "setting": "lwp", + "n": 23, + "lam": 2857.326856784576, + "flux": 3.040775174233317e-12, + "plx": 107.8023, + "sp": "G5V", + "L_iso_W": 3.130729333402162e+21, + "P_10m_W": 203402.13393729902 + }, + { + "set": "iue", + "star": "* omi02 Eri", + "setting": "lwr", + "n": 3, + "lam": 2836.1012780009924, + "flux": 4.5669267599296045e-12, + "plx": 199.608, + "sp": "K0V", + "L_iso_W": 1.371467200085112e+21, + "P_10m_W": 87784.74109998823 + }, + { + "set": "iue", + "star": "* ksi Boo B", + "setting": "swp", + "n": 2, + "lam": 1728.5450158527947, + "flux": 2.4817932450477576e-10, + "plx": 148.1793, + "sp": "K5Ve", + "L_iso_W": 1.3524081694238044e+23, + "P_10m_W": 3215579.9339579213 + }, + { + "set": "iue", + "star": "* alf Cen B", + "setting": "swp", + "n": 2, + "lam": 1224.828391930223, + "flux": 3.718016418843354e-12, + "plx": 742.12, + "sp": "K1V", + "L_iso_W": 8.077561932302357e+19, + "P_10m_W": 964.3194408419325 + }, + { + "set": "iue", + "star": "V* AD Leo", + "setting": "lwp", + "n": 2, + "lam": 2820.7793006645516, + "flux": 7.81335857744185e-13, + "plx": 201.4064, + "sp": "dM3", + "L_iso_W": 2.3046686126782163e+20, + "P_10m_W": 14592.739817909522 + }, + { + "set": "iue", + "star": "HD 103095", + "setting": "lwp", + "n": 2, + "lam": 2894.263992582961, + "flux": 1.671484676487492e-12, + "plx": 109.0296, + "sp": "K1V_Fe-1.5", + "L_iso_W": 1.6824060715590298e+21, + "P_10m_W": 112149.47533359677 + }, + { + "set": "iue", + "star": "HD 16160", + "setting": "lwp", + "n": 2, + "lam": 3058.6208966892236, + "flux": 2.386581821886501e-12, + "plx": 138.34, + "sp": "K3V", + "L_iso_W": 1.4921004134920558e+21, + "P_10m_W": 111080.92545585454 + }, + { + "set": "iue", + "star": "* pi.03 Ori", + "setting": "swp", + "n": 2, + "lam": 1641.8937209182734, + "flux": 4.860891671669534e-12, + "plx": 124.6198, + "sp": "F6V", + "L_iso_W": 3.745062827117763e+21, + "P_10m_W": 80341.38750659859 + }, + { + "set": "iue", + "star": "* 61 Vir", + "setting": "lwp", + "n": 3, + "lam": 2875.109727626021, + "flux": 4.89686674643965e-12, + "plx": 117.1726, + "sp": "G6.5V", + "L_iso_W": 4.267597161485702e+21, + "P_10m_W": 280725.8475289882 + }, + { + "set": "iue", + "star": "* omi02 Eri B", + "setting": "lwp", + "n": 5, + "lam": 2740.3695341824973, + "flux": 2.2362104149456003e-12, + "plx": 199.6911, + "sp": "DA2.9", + "L_iso_W": 6.709845376210111e+20, + "P_10m_W": 40097.833625503226 + }, + { + "set": "iue", + "star": "* bet Com", + "setting": "lwr", + "n": 5, + "lam": 2807.900863522223, + "flux": 7.6262277637991e-12, + "plx": 108.725, + "sp": "F9.5V", + "L_iso_W": 7.71912731627361e+21, + "P_10m_W": 484308.26531684265 + }, + { + "set": "iue", + "star": "* del Pav", + "setting": "lwr", + "n": 10, + "lam": 2816.4859364173167, + "flux": 5.226223790514914e-12, + "plx": 163.9544, + "sp": "G8IV", + "L_iso_W": 2.32626461800654e+21, + "P_10m_W": 146846.77908300178 + }, + { + "set": "iue", + "star": "* zet Tuc", + "setting": "lwr", + "n": 7, + "lam": 2768.9676229770494, + "flux": 6.281505515627012e-12, + "plx": 116.1826, + "sp": "F9.5V", + "L_iso_W": 5.567994892415084e+21, + "P_10m_W": 339722.8192511124 + }, + { + "set": "iue", + "star": "* mu.01 Her", + "setting": "lwr", + "n": 2, + "lam": 2853.479162925625, + "flux": 1.907538101945804e-11, + "plx": 119.9248, + "sp": "G5IV", + "L_iso_W": 1.5869837536963785e+22, + "P_10m_W": 1028281.5128913715 + }, + { + "set": "iue", + "star": "* gam Lep", + "setting": "lwr", + "n": 4, + "lam": 2595.252708101706, + "flux": 1.7277557411281076e-11, + "plx": 112.296, + "sp": "F6V", + "L_iso_W": 1.6393475500756886e+22, + "P_10m_W": 878659.2345547337 + }, + { + "set": "iue", + "star": "* eta Cas", + "setting": "lwr", + "n": 2, + "lam": 2649.425954150764, + "flux": 3.159948795335723e-11, + "plx": 168.8322, + "sp": "F9V", + "L_iso_W": 1.3264373764624336e+22, + "P_10m_W": 740935.5961979269 + }, + { + "set": "iue", + "star": "* alf CMa", + "setting": "swp", + "n": 9, + "lam": 1562.975215142958, + "flux": 2.7151572674555192e-09, + "plx": 379.21, + "sp": "A0mA1Va", + "L_iso_W": 2.2591896620317577e+23, + "P_10m_W": 4391845.063253048 + }, + { + "set": "iue", + "star": "* chi Dra", + "setting": "lwr", + "n": 3, + "lam": 2641.5369623683573, + "flux": 3.3273954555451096e-11, + "plx": 124.11, + "sp": "F7V", + "L_iso_W": 2.5846880382208876e+22, + "P_10m_W": 1435197.4464780653 + }, + { + "set": "iue", + "star": "* alf PsA", + "setting": "swp", + "n": 7, + "lam": 1459.688807406938, + "flux": 4.168380206273543e-11, + "plx": 129.81, + "sp": "A4V", + "L_iso_W": 2.9598403756672042e+22, + "P_10m_W": 501855.8396986032 + }, + { + "set": "iue", + "star": "* ksi Boo A", + "setting": "lwr", + "n": 2, + "lam": 2821.118752416239, + "flux": 1.0016882978030031e-11, + "plx": 148.0695, + "sp": "G7Ve", + "L_iso_W": 5.466616973478163e+21, + "P_10m_W": 346219.49374288396 + }, + { + "set": "iue", + "star": "HD 102365", + "setting": "lwr", + "n": 2, + "lam": 2807.265285163856, + "flux": 6.898723210365325e-12, + "plx": 107.3024, + "sp": "G2V", + "L_iso_W": 7.169140868060029e+21, + "P_10m_W": 449597.78231599304 + }, + { + "set": "iue", + "star": "* 12 Oph", + "setting": "lwr", + "n": 4, + "lam": 2893.6084826915717, + "flux": 3.691574215226804e-12, + "plx": 101.0719, + "sp": "K1V", + "L_iso_W": 4.3238240138199334e+21, + "P_10m_W": 288096.3015096262 + }, + { + "set": "cos", + "star": "Ross 905", + "setting": "G130M", + "n": 54, + "lam": 1362.7840233509355, + "flux": 1.5828958737251076e-16, + "plx": 102.3014, + "sp": "M3V", + "L_iso_W": 1.8096994642923088e+17, + "P_10m_W": 2.67454962680277 + }, + { + "set": "cos", + "star": "HD 260655", + "setting": "G130M", + "n": 8, + "lam": 1213.9307976756943, + "flux": 1.5375002418939089e-15, + "plx": 100.0232, + "sp": "M0.0V", + "L_iso_W": 1.8387850687540938e+18, + "P_10m_W": 21.5629891280456 + }, + { + "set": "cos", + "star": "HD 197481", + "setting": "G130M", + "n": 90, + "lam": 1215.625399930802, + "flux": 2.7416919531633966e-16, + "plx": 102.9432, + "sp": "M1VeBa1", + "L_iso_W": 3.0955697496017536e+17, + "P_10m_W": 3.6402420473451493 + }, + { + "set": "cos", + "star": "HD 285968", + "setting": "G130M", + "n": 10, + "lam": 1310.4244451678833, + "flux": 1.9472908136379331e-16, + "plx": 105.4275, + "sp": "M2.5V", + "L_iso_W": 2.0962364273171594e+17, + "P_10m_W": 2.8645365739069932 + }, + { + "set": "cos", + "star": "BD-17 588A", + "setting": "G130M", + "n": 40, + "lam": 1213.6546083833186, + "flux": 2.34215813593617e-16, + "plx": 145.6922, + "sp": "M3V", + "L_iso_W": 1.320264288840341e+17, + "P_10m_W": 1.5475376758057189 + }, + { + "set": "cos", + "star": "L 678-39", + "setting": "G130M", + "n": 4, + "lam": 1216.3474196617099, + "flux": 6.953730376971131e-16, + "plx": 105.9789, + "sp": "M2.5V", + "L_iso_W": 7.40792023614691e+17, + "P_10m_W": 8.721711359114172 + }, + { + "set": "cos", + "star": "HD 103095", + "setting": "G140L", + "n": 6, + "lam": 1269.2816931787734, + "flux": 1.3028470705362272e-16, + "plx": 109.0296, + "sp": "K1V_Fe-1.5", + "L_iso_W": 1.3113598064142627e+17, + "P_10m_W": 1.6812335065814248 + }, + { + "set": "cos", + "star": "* kap01 Cet", + "setting": "G130M", + "n": 4, + "lam": 1363.2067085805052, + "flux": 1.163080720130441e-15, + "plx": 107.8023, + "sp": "G5V", + "L_iso_W": 1.197487719079716e+18, + "P_10m_W": 17.708616523536243 + }, + { + "set": "cos", + "star": "CD-45 5378", + "setting": "G130M", + "n": 8, + "lam": 1213.5489027863914, + "flux": 1.1543205258800813e-15, + "plx": 106.1727, + "sp": "M1V", + "L_iso_W": 1.2252309530138455e+18, + "P_10m_W": 14.358949221900643 + }, + { + "set": "cos", + "star": "* chi01 Ori", + "setting": "G130M", + "n": 2, + "lam": 1361.87053142069, + "flux": 2.5973637368139334e-15, + "plx": 115.43, + "sp": "G0V", + "L_iso_W": 2.3324516319367107e+18, + "P_10m_W": 34.42503794953917 + }, + { + "set": "cos", + "star": "LP 666-9", + "setting": "G140L", + "n": 48, + "lam": 1153.2204111629226, + "flux": 9.239194284146648e-17, + "plx": 115.4876, + "sp": "M9Ve", + "L_iso_W": 8.288589901267858e+16, + "P_10m_W": 0.8771935492905095 + }, + { + "set": "cos", + "star": "HD 192310", + "setting": "G130M", + "n": 4, + "lam": 1293.4609884199572, + "flux": 5.919925390666003e-16, + "plx": 113.4872, + "sp": "K2+V", + "L_iso_W": 5.4997093224154285e+17, + "P_10m_W": 7.322114931878265 + }, + { + "set": "cos", + "star": "BD-05 5715", + "setting": "G130M", + "n": 10, + "lam": 1283.840424987936, + "flux": 2.312804064854121e-16, + "plx": 113.4447, + "sp": "M3.5V", + "L_iso_W": 2.150243705632617e+17, + "P_10m_W": 2.8203299145367273 + }, + { + "set": "cos", + "star": "CD-32 5613", + "setting": "G140L", + "n": 4, + "lam": 1656.578439958339, + "flux": 2.032579123520777e-14, + "plx": 117.3961, + "sp": "DA5.5", + "L_iso_W": 1.7646451493202184e+19, + "P_10m_W": 385.36434698061487 + }, + { + "set": "cos", + "star": "Wolf 437", + "setting": "G130M", + "n": 8, + "lam": 1213.2866711820652, + "flux": 2.8597879693797233e-16, + "plx": 123.7756, + "sp": "M3.5V", + "L_iso_W": 2.2334746078327706e+17, + "P_10m_W": 2.6163630586148616 + }, + { + "set": "cos", + "star": "2MASSW J1507476-162738", + "setting": "G140L", + "n": 8, + "lam": 1142.60149050018, + "flux": 3.566294622178555e-17, + "plx": 134.9474, + "sp": "L5V", + "L_iso_W": 2.3431788608420624e+16, + "P_10m_W": 0.24343619384555115 + }, + { + "set": "cos", + "star": "LP 914-54", + "setting": "G140L", + "n": 20, + "lam": 1152.5421190772802, + "flux": 5.719063056461272e-17, + "plx": 141.7891, + "sp": "M7.0Ve", + "L_iso_W": 3.403740625980079e+16, + "P_10m_W": 0.359799209731581 + }, + { + "set": "cos", + "star": "HD 156384C", + "setting": "G130M", + "n": 8, + "lam": 1366.018574903746, + "flux": 1.6198180412780744e-16, + "plx": 138.0663, + "sp": "M1.5V", + "L_iso_W": 1.0167358192246693e+17, + "P_10m_W": 1.5097723573452924 + }, + { + "set": "cos", + "star": "* ksi Boo A", + "setting": "G130M", + "n": 48, + "lam": 1218.8300853889332, + "flux": 3.5184810152658553e-15, + "plx": 148.0695, + "sp": "G7Ve", + "L_iso_W": 1.920176973325857e+18, + "P_10m_W": 22.699574933981594 + }, + { + "set": "cos", + "star": "* ksi Boo B", + "setting": "G130M", + "n": 40, + "lam": 1215.8169547527457, + "flux": 2.005388869712308e-15, + "plx": 148.1793, + "sp": "K5Ve", + "L_iso_W": 1.0928002546877371e+18, + "P_10m_W": 12.854858908914007 + }, + { + "set": "cos", + "star": "* ksi Boo", + "setting": "G130M", + "n": 16, + "lam": 1216.0953219357534, + "flux": 2.1244883520566774e-15, + "plx": 148.98, + "sp": "G7Ve+K5Ve", + "L_iso_W": 1.1452905557932906e+18, + "P_10m_W": 13.478484115141272 + }, + { + "set": "cos", + "star": "BD-07 4003", + "setting": "G130M", + "n": 12, + "lam": 1365.3199211711965, + "flux": 1.5538884361359942e-16, + "plx": 158.7183, + "sp": "M3V", + "L_iso_W": 7.38045426545672e+16, + "P_10m_W": 1.0948183889288 + }, + { + "set": "cos", + "star": "V* YZ CMi", + "setting": "G130M", + "n": 8, + "lam": 1213.3393837422923, + "flux": 3.1827035262069925e-16, + "plx": 166.9769, + "sp": "M4.0Ve", + "L_iso_W": 1.3658426265861434e+17, + "P_10m_W": 1.600130442039048 + }, + { + "set": "cos", + "star": "Ross 47", + "setting": "G140L", + "n": 4, + "lam": 1422.549634054338, + "flux": 1.1993947608613039e-15, + "plx": 172.6762, + "sp": "M4V", + "L_iso_W": 4.8129843211209197e+17, + "P_10m_W": 7.750673445692729 + }, + { + "set": "cos", + "star": "LSR J1835+3259", + "setting": "G160M", + "n": 6, + "lam": 1595.6161603106048, + "flux": 2.1850070090756376e-16, + "plx": 175.793, + "sp": "M8.5V", + "L_iso_W": 8.459933400712974e+16, + "P_10m_W": 1.7140122933222013 + }, + { + "set": "cos", + "star": "G 175-34", + "setting": "G140L", + "n": 4, + "lam": 1402.4566612523383, + "flux": 1.7126859889619675e-15, + "plx": 181.2438, + "sp": "M4.0V", + "L_iso_W": 6.238334984594317e+17, + "P_10m_W": 9.764223838525844 + }, + { + "set": "cos", + "star": "EGGR 180", + "setting": "G140L", + "n": 4, + "lam": 1579.1594916128856, + "flux": 1.291314731627777e-15, + "plx": 181.273, + "sp": "DC5", + "L_iso_W": 4.7020054285839456e+17, + "P_10m_W": 9.33093689221127 + }, + { + "set": "cos", + "star": "* 70 Oph A", + "setting": "G130M", + "n": 56, + "lam": 1218.261743303091, + "flux": 2.544430366481187e-15, + "plx": 195.5674, + "sp": "K0V", + "L_iso_W": 7.96003378534844e+17, + "P_10m_W": 9.401264247275309 + }, + { + "set": "cos", + "star": "* 70 Oph B", + "setting": "G130M", + "n": 56, + "lam": 1216.148814193027, + "flux": 1.863996912276408e-15, + "plx": 195.8563, + "sp": "K4V", + "L_iso_W": 5.814165128215017e+17, + "P_10m_W": 6.843069319336912 + }, + { + "set": "cos", + "star": "HD 204961", + "setting": "G130M", + "n": 14, + "lam": 1312.1968372749734, + "flux": 1.863844221015575e-16, + "plx": 201.3252, + "sp": "M1.5V", + "L_iso_W": 5.502126842330899e+16, + "P_10m_W": 0.7539086173145164 + }, + { + "set": "cos", + "star": "V* AD Leo", + "setting": "G130M", + "n": 2, + "lam": 1139.4453644679493, + "flux": 1.188331039629804e-15, + "plx": 201.4064, + "sp": "dM3", + "L_iso_W": 3.505162628031793e+17, + "P_10m_W": 3.6214735736067816 + }, + { + "set": "cos", + "star": "DENIS J025503.3-470049", + "setting": "G140L", + "n": 10, + "lam": 1156.103646500643, + "flux": 3.385616411586953e-17, + "plx": 205.4251, + "sp": "L9", + "L_iso_W": 9599486499546310.0, + "P_10m_W": 0.10210139601549562 + }, + { + "set": "cos", + "star": "BD-15 6290", + "setting": "G130M", + "n": 14, + "lam": 1311.984617070258, + "flux": 2.257139330148774e-16, + "plx": 214.038, + "sp": "M3.5V", + "L_iso_W": 5.895136492240022e+16, + "P_10m_W": 0.8074980586556841 + }, + { + "set": "cos", + "star": "LAWD 37", + "setting": "G140L", + "n": 4, + "lam": 1667.8666075957458, + "flux": 1.1140416050038703e-14, + "plx": 215.6753, + "sp": "DQ", + "L_iso_W": 2.8656150786464026e+18, + "P_10m_W": 63.43524436694365 + }, + { + "set": "cos", + "star": "HD 33793", + "setting": "G130M", + "n": 5, + "lam": 1361.6595198229, + "flux": 6.735964834217558e-16, + "plx": 254.1986, + "sp": "M1VIp", + "L_iso_W": 1.2472995554851282e+17, + "P_10m_W": 1.8403395393503823 + }, + { + "set": "cos", + "star": "L 372-58", + "setting": "G160M", + "n": 4, + "lam": 1586.611204516278, + "flux": 3.1912801849261405e-16, + "plx": 272.1615, + "sp": "M5.5V", + "L_iso_W": 5.1550017963155e+16, + "P_10m_W": 1.0326662673229445 + }, + { + "set": "cos", + "star": "BD-12 4523", + "setting": "G160M", + "n": 4, + "lam": 1586.3672984843479, + "flux": 3.952061619619975e-16, + "plx": 232.139, + "sp": "M3V", + "L_iso_W": 8.774952088541677e+16, + "P_10m_W": 1.7572857498466299 + }, + { + "set": "cos", + "star": "Wolf 28", + "setting": "G140L", + "n": 4, + "lam": 1638.553406820763, + "flux": 1.4859067198281896e-15, + "plx": 231.78, + "sp": "DZ7.5", + "L_iso_W": 3.3094581589739475e+17, + "P_10m_W": 7.070794790831309 + }, + { + "set": "cos", + "star": "CD-46 11540", + "setting": "G130M", + "n": 10, + "lam": 1216.6175947029583, + "flux": 3.421911651086155e-16, + "plx": 219.6463, + "sp": "M3V", + "L_iso_W": 8.486688732876037e+16, + "P_10m_W": 0.9996238183498353 + }, + { + "set": "cos", + "star": "HD 173739", + "setting": "G160M", + "n": 4, + "lam": 1586.8421876957257, + "flux": 3.762083345556312e-16, + "plx": 283.8401, + "sp": "M3V", + "L_iso_W": 5.587250916793818e+16, + "P_10m_W": 1.1195816908565537 + }, + { + "set": "cos", + "star": "* 61 Cyg A", + "setting": "G130M", + "n": 2, + "lam": 1362.197830421952, + "flux": 1.2827880526751986e-15, + "plx": 285.9949, + "sp": "K5V", + "L_iso_W": 1.8765303557866243e+17, + "P_10m_W": 2.7709334709229436 + }, + { + "set": "cos", + "star": "* eps Eri", + "setting": "G130M", + "n": 28, + "lam": 1371.5124847957768, + "flux": 7.763369491662014e-16, + "plx": 310.5773, + "sp": "K2V", + "L_iso_W": 9.630040229828008e+16, + "P_10m_W": 1.4415103601578656 + }, + { + "set": "cos", + "star": "HD 217987", + "setting": "G160M", + "n": 4, + "lam": 1586.2627462525302, + "flux": 5.658398663033014e-16, + "plx": 304.1354, + "sp": "M2V", + "L_iso_W": 7.319423253995962e+16, + "P_10m_W": 1.465606043381655 + }, + { + "set": "cos", + "star": "NAME Barnard's star", + "setting": "G130M", + "n": 10, + "lam": 1212.1066039525258, + "flux": 3.0280701232304793e-16, + "plx": 546.9759, + "sp": "M4V", + "L_iso_W": 1.2110074368245278e+16, + "P_10m_W": 0.14158543549517222 + }, + { + "set": "fuse", + "star": "V* AD Leo", + "setting": "a02", + "n": 1, + "lam": 1040.0, + "flux": 3.08188279291519e-15, + "plx": 201.4064, + "sp": "dM3", + "L_iso_W": 9.090480707350563e+17, + "P_10m_W": 7.824267033661549 + }, + { + "set": "fuse", + "star": "* bet Ari", + "setting": "a04", + "n": 1, + "lam": 1040.0, + "flux": 1.3195272772603724e-14, + "plx": 55.6, + "sp": "kA4hA5mA5Va", + "L_iso_W": 5.107237501128304e+19, + "P_10m_W": 439.58500435346843 + }, + { + "set": "fuse", + "star": "* bet Leo", + "setting": "a04", + "n": 1, + "lam": 1040.0, + "flux": 1.0800235693194835e-14, + "plx": 90.91, + "sp": "A3Va", + "L_iso_W": 1.5636054758682431e+19, + "P_10m_W": 134.58107631861657 + }, + { + "set": "fuse", + "star": "* del Leo", + "setting": "a04", + "n": 1, + "lam": 1040.0, + "flux": 6.275185270504676e-15, + "plx": 55.82, + "sp": "A5IV(n)", + "L_iso_W": 2.4097065232392643e+19, + "P_10m_W": 207.4058338337891 + }, + { + "set": "fuse", + "star": "* iot UMa A", + "setting": "a04", + "n": 1, + "lam": 1040.0, + "flux": 8.93421202329437e-15, + "plx": 68.001, + "sp": "A7V(n)", + "L_iso_W": 2.3117609378493346e+19, + "P_10m_W": 198.97556001736228 + }, + { + "set": "fuse", + "star": "* iot Cen", + "setting": "a04", + "n": 1, + "lam": 1040.0, + "flux": 1.115107409900651e-14, + "plx": 56.0571, + "sp": "kA1.5hA3mA3Va", + "L_iso_W": 4.24592886085291e+19, + "P_10m_W": 365.45131421246873 + }, + { + "set": "fuse", + "star": "* alf Cep", + "setting": "a04", + "n": 2, + "lam": 1040.0, + "flux": 4.053190778161784e-15, + "plx": 66.5, + "sp": "A8Vn", + "L_iso_W": 1.0966575182122471e+19, + "P_10m_W": 94.39040181920137 + }, + { + "set": "fuse", + "star": "* bet Hyi", + "setting": "a08", + "n": 1, + "lam": 1040.0, + "flux": 5.566892206631184e-15, + "plx": 134.07, + "sp": "G0V", + "L_iso_W": 3.705670995744339e+18, + "P_10m_W": 31.89507831654438 + }, + { + "set": "fuse", + "star": "* kap01 Cet", + "setting": "a08", + "n": 1, + "lam": 1040.0, + "flux": 5.783998853833323e-15, + "plx": 107.8023, + "sp": "G5V", + "L_iso_W": 5.955104813240967e+18, + "P_10m_W": 51.256178602925075 + }, + { + "set": "fuse", + "star": "* bet Com", + "setting": "a08", + "n": 1, + "lam": 1040.0, + "flux": 4.300045351311279e-15, + "plx": 108.725, + "sp": "F9.5V", + "L_iso_W": 4.3524267253181194e+18, + "P_10m_W": 37.46176911832346 + }, + { + "set": "fuse", + "star": "* bet Cas", + "setting": "b07", + "n": 1, + "lam": 1040.0, + "flux": 6.5792339601361585e-15, + "plx": 59.58, + "sp": "F2III", + "L_iso_W": 2.2176428144994906e+19, + "P_10m_W": 190.8747196602531 + }, + { + "set": "fuse", + "star": "* pi.01 UMa", + "setting": "d91", + "n": 1, + "lam": 1040.0, + "flux": 3.277896259712309e-15, + "plx": 69.2576, + "sp": "G0.5V", + "L_iso_W": 8.176691156269783e+18, + "P_10m_W": 70.37759291068305 + }, + { + "set": "fuse", + "star": "LAWD 23", + "setting": "b11", + "n": 1, + "lam": 1040.0, + "flux": 8.033714580670185e-14, + "plx": 58.5336, + "sp": "DA2.3", + "L_iso_W": 2.8055834591378237e+20, + "P_10m_W": 2414.793549010903 + }, + { + "set": "fuse", + "star": "HD 340611", + "setting": "b11", + "n": 1, + "lam": 1040.0, + "flux": 1.2555805097836204e-13, + "plx": 67.4085, + "sp": "DA2.4", + "L_iso_W": 3.30622575239057e+20, + "P_10m_W": 2845.701343313438 + }, + { + "set": "fuse", + "star": "HD 166", + "setting": "b13", + "n": 1, + "lam": 1040.0, + "flux": 5.81471148999035e-15, + "plx": 72.6419, + "sp": "G8V", + "L_iso_W": 1.3184724099016382e+19, + "P_10m_W": 113.48222985880275 + }, + { + "set": "fuse", + "star": "HD 43162", + "setting": "b13", + "n": 1, + "lam": 1040.0, + "flux": 6.339878865667824e-15, + "plx": 59.885, + "sp": "G6.5V", + "L_iso_W": 2.115252014217959e+19, + "P_10m_W": 182.06184178301154 + }, + { + "set": "fuse", + "star": "* chi01 Ori", + "setting": "c10", + "n": 1, + "lam": 1040.0, + "flux": 9.159862576434499e-15, + "plx": 115.43, + "sp": "G0V", + "L_iso_W": 8.225623585908701e+18, + "P_10m_W": 70.79875919267204 + }, + { + "set": "fuse", + "star": "V* EV Lac", + "setting": "c11", + "n": 1, + "lam": 1040.0, + "flux": 4.113952498480622e-15, + "plx": 197.9573, + "sp": "M4.0Ve", + "L_iso_W": 1.2561268372978191e+18, + "P_10m_W": 10.8116084501667 + }, + { + "set": "fuse", + "star": "* bet Pic", + "setting": "q11", + "n": 2, + "lam": 1040.0, + "flux": 2.6951602944504386e-15, + "plx": 50.9307, + "sp": "A6V", + "L_iso_W": 1.243204502952346e+19, + "P_10m_W": 107.00384634977827 + }, + { + "set": "fuse", + "star": "* alf PsA", + "setting": "d03", + "n": 1, + "lam": 1040.0, + "flux": 3.73568509203412e-14, + "plx": 129.81, + "sp": "A4V", + "L_iso_W": 2.6525966968031048e+19, + "P_10m_W": 228.31163231680213 + }, + { + "set": "fuse", + "star": "* alf Aql", + "setting": "d09", + "n": 1, + "lam": 1040.0, + "flux": 1.318654949279783e-14, + "plx": 194.95, + "sp": "A7Vn", + "L_iso_W": 4.151470489716291e+18, + "P_10m_W": 35.73211883904096 + }, + { + "set": "fuse", + "star": "V* DN Dra", + "setting": "d10", + "n": 2, + "lam": 1040.0, + "flux": 6.649657003517059e-15, + "plx": 91.34, + "sp": "DA4.0", + "L_iso_W": 9.536620375396084e+18, + "P_10m_W": 82.08263877115019 + }, + { + "set": "fuse", + "star": "V* PY Vul", + "setting": "d10", + "n": 2, + "lam": 1040.0, + "flux": 5.874249800884691e-15, + "plx": 54.7767, + "sp": "DA4.0", + "L_iso_W": 2.3424910823983817e+19, + "P_10m_W": 201.6205340806188 + }, + { + "set": "fuse", + "star": "NAME Proxima Centauri", + "setting": "d12", + "n": 1, + "lam": 1040.0, + "flux": 3.615178334005184e-15, + "plx": 768.0665, + "sp": "M5.5Ve", + "L_iso_W": 7.332453946562602e+16, + "P_10m_W": 0.6311115939505929 + }, + { + "set": "fuse", + "star": "V* AB Dor", + "setting": "d12", + "n": 1, + "lam": 1040.0, + "flux": 3.46543844630491e-15, + "plx": 67.3331, + "sp": "K0V", + "L_iso_W": 9.145727026305082e+18, + "P_10m_W": 78.71818089105457 + }, + { + "set": "fuse", + "star": "CPD-69 177", + "setting": "d90", + "n": 1, + "lam": 1040.0, + "flux": 2.3643382359971867e-14, + "plx": 96.1834, + "sp": "DA3.0", + "L_iso_W": 3.0579235306596016e+19, + "P_10m_W": 263.1985154872094 + }, + { + "set": "fuse", + "star": "HD 17925", + "setting": "e16", + "n": 1, + "lam": 1040.0, + "flux": 5.896579923272728e-15, + "plx": 96.52, + "sp": "K1V", + "L_iso_W": 7.573259319977569e+18, + "P_10m_W": 65.1837951614119 + }, + { + "set": "fuse", + "star": "* 61 Cyg A", + "setting": "e16", + "n": 1, + "lam": 1040.0, + "flux": 7.543334664194509e-15, + "plx": 285.9949, + "sp": "K5V", + "L_iso_W": 1.1034789770374181e+18, + "P_10m_W": 9.497753155552111 + }, + { + "set": "fuse", + "star": "* eta Cep", + "setting": "g01", + "n": 2, + "lam": 1040.0, + "flux": 2.202529827142312e-14, + "plx": 69.5976, + "sp": "K0IV", + "L_iso_W": 5.440646839457033e+19, + "P_10m_W": 468.28187725361107 + }, + { + "set": "fuse", + "star": "* alf Hyi", + "setting": "g01", + "n": 2, + "lam": 1040.0, + "flux": 5.861739782249792e-15, + "plx": 51.5547, + "sp": "F0IV", + "L_iso_W": 2.638804840699735e+19, + "P_10m_W": 227.12455356358126 + }, + { + "set": "fuse", + "star": "V* SZ UMa", + "setting": "g06", + "n": 1, + "lam": 1040.0, + "flux": 4.722575869384451e-15, + "plx": 110.2305, + "sp": "M2V", + "L_iso_W": 4.650425100361168e+18, + "P_10m_W": 40.02667073023567 + }, + { + "set": "fuse", + "star": "* alf Cen A", + "setting": "g08", + "n": 1, + "lam": 1040.0, + "flux": 2.0351217176856848e-14, + "plx": 742.12, + "sp": "G2V", + "L_iso_W": 4.4213956751416557e+17, + "P_10m_W": 3.8055391719616924 + }, + { + "set": "fuse", + "star": "EGGR 140", + "setting": "g92", + "n": 1, + "lam": 1040.0, + "flux": 1.1248445519735686e-14, + "plx": 51.0992, + "sp": "DA3.0", + "L_iso_W": 5.154440993982924e+19, + "P_10m_W": 443.6478558671121 + }, + { + "set": "fuse", + "star": "* alf Cir B", + "setting": "h90", + "n": 5, + "lam": 1040.0, + "flux": 5.410729663958418e-15, + "plx": 60.8225, + "sp": "K5V", + "L_iso_W": 1.7500262648314171e+19, + "P_10m_W": 150.62649878229672 + }, + { + "set": "fuse", + "star": "* alf Aur", + "setting": "p10", + "n": 2, + "lam": 1040.0, + "flux": 2.2773107209511447e-14, + "plx": 76.2, + "sp": "G3III:", + "L_iso_W": 4.69277371459417e+19, + "P_10m_W": 403.9116945910553 + }, + { + "set": "fuse", + "star": "* bet Gem", + "setting": "p11", + "n": 1, + "lam": 1040.0, + "flux": 5.6587923482707405e-15, + "plx": 96.54, + "sp": "K0IIIb", + "L_iso_W": 7.26484635325908e+18, + "P_10m_W": 62.52925412454682 + }, + { + "set": "fuse", + "star": "HD 197481", + "setting": "p11", + "n": 1, + "lam": 1040.0, + "flux": 4.133647801218936e-15, + "plx": 102.9432, + "sp": "M1VeBa1", + "L_iso_W": 4.667189205627923e+18, + "P_10m_W": 40.170961049317974 + }, + { + "set": "fuse", + "star": "* i Boo", + "setting": "p24", + "n": 2, + "lam": 1040.0, + "flux": 4.8645262234521e-15, + "plx": 79.95, + "sp": "G0Vn", + "L_iso_W": 9.105858090225703e+18, + "P_10m_W": 78.37502499834055 + }, + { + "set": "fuse", + "star": "EGGR 378", + "setting": "q21", + "n": 1, + "lam": 1040.0, + "flux": 1.538222513618271e-14, + "plx": 57.7643, + "sp": "DA3.4", + "L_iso_W": 5.5159128881272816e+19, + "P_10m_W": 474.76010081871266 + }, + { + "set": "fuse", + "star": "* ups And", + "setting": "q30", + "n": 1, + "lam": 1040.0, + "flux": 6.5941155927313835e-15, + "plx": 74.194, + "sp": "F9V", + "L_iso_W": 1.4332971903728347e+19, + "P_10m_W": 123.36531276069753 + }, + { + "set": "fuse", + "star": "BD-15 6290", + "setting": "q30", + "n": 1, + "lam": 1040.0, + "flux": 5.459385268512298e-15, + "plx": 214.038, + "sp": "M3.5V", + "L_iso_W": 1.4258677296400271e+18, + "P_10m_W": 12.272585169630538 + }, + { + "set": "fuse", + "star": "* 51 Peg", + "setting": "q30", + "n": 1, + "lam": 1040.0, + "flux": 2.9291009497636224e-14, + "plx": 64.4048, + "sp": "G2IV", + "L_iso_W": 8.449191098651963e+19, + "P_10m_W": 727.2302698011739 + }, + { + "set": "stis", + "star": "HD 132475", + "setting": "E230H", + "n": 3, + "lam": 2744.380401366858, + "flux": 2.3106423360010494e-14, + "plx": 10.6709, + "sp": "F5/6V", + "L_iso_W": 2.4279955771078544e+21, + "P_10m_W": 145521.32676532454 + }, + { + "set": "stis", + "star": "BD+28 4211", + "setting": "E140H", + "n": 71, + "lam": 1414.9125934029034, + "flux": 7.844955256452203e-18, + "plx": 8.9169, + "sp": "sdO2VIIIHe5", + "L_iso_W": 1.1805379253876598e+18, + "P_10m_W": 18.807423484120353 + }, + { + "set": "stis", + "star": "HD 61005", + "setting": "E230M", + "n": 2, + "lam": 2332.3157299439094, + "flux": 1.975047628392038e-14, + "plx": 27.4344, + "sp": "G8Vk", + "L_iso_W": 3.139813881830428e+20, + "P_10m_W": 13591.541761078588 + }, + { + "set": "stis", + "star": "* sig Sgr", + "setting": "E140H", + "n": 2, + "lam": 1457.51233020669, + "flux": 1.7036116784461037e-10, + "plx": 14.32, + "sp": "B2.5V", + "L_iso_W": 9.940353695543198e+24, + "P_10m_W": 168041460.92682883 + }, + { + "set": "stis", + "star": "* alf Ara", + "setting": "E140H", + "n": 2, + "lam": 1456.9227414146358, + "flux": 3.8026791810860836e-11, + "plx": 12.2, + "sp": "B2Vne", + "L_iso_W": 3.056942646719119e+24, + "P_10m_W": 51635747.85339678 + }, + { + "set": "stis", + "star": "* eta Aur", + "setting": "E140H", + "n": 2, + "lam": 1437.2600715774129, + "flux": 4.245788654285065e-11, + "plx": 14.0208, + "sp": "B3V", + "L_iso_W": 2.58422336335326e+24, + "P_10m_W": 42480625.78836944 + }, + { + "set": "stis", + "star": "* 7 Leo", + "setting": "E140H", + "n": 2, + "lam": 1330.433445021921, + "flux": 1.4144644508442404e-13, + "plx": 5.518, + "sp": "A1V", + "L_iso_W": 5.558350251365464e+22, + "P_10m_W": 782928.9523791964 + }, + { + "set": "stis", + "star": "* 21 Leo", + "setting": "E140H", + "n": 2, + "lam": 1330.5026006032424, + "flux": 1.701231322709585e-13, + "plx": 5.9512, + "sp": "A0", + "L_iso_W": 5.74740159138509e+22, + "P_10m_W": 809642.1983273072 + }, + { + "set": "stis", + "star": "HD 147888", + "setting": "E140H", + "n": 5, + "lam": 1253.4172367136011, + "flux": 1.6807573455689465e-13, + "plx": 8.0932, + "sp": "B3V", + "L_iso_W": 3.0703065372489415e+22, + "P_10m_W": 383851.4616955319 + }, + { + "set": "stis", + "star": "HD 37903", + "setting": "E140H", + "n": 2, + "lam": 1227.5739207347929, + "flux": 2.404312408927347e-13, + "plx": 2.504, + "sp": "B3IV", + "L_iso_W": 4.588170136507259e+23, + "P_10m_W": 5502055.371854905 + }, + { + "set": "stis", + "star": "HD 185418", + "setting": "E140H", + "n": 3, + "lam": 1227.664114516897, + "flux": 2.4424728327038374e-13, + "plx": 1.4147, + "sp": "B0.5V", + "L_iso_W": 1.4602200245844397e+24, + "P_10m_W": 17513282.709830396 + }, + { + "set": "stis", + "star": "HD 122879", + "setting": "E230H", + "n": 2, + "lam": 2031.8262403273104, + "flux": 3.3547922403486693e-13, + "plx": 0.432, + "sp": "B0Ia", + "L_iso_W": 2.150876136709142e+25, + "P_10m_W": 706608189.8845954 + }, + { + "set": "stis", + "star": "HD 201345", + "setting": "E140H", + "n": 2, + "lam": 1241.0509586056423, + "flux": 5.720257249500839e-13, + "plx": 0.5213, + "sp": "ON9.2IV", + "L_iso_W": 2.518589424098414e+25, + "P_10m_W": 308692970.60896444 + }, + { + "set": "stis", + "star": "HD 210809", + "setting": "E140H", + "n": 3, + "lam": 1227.950745179276, + "flux": 2.296941544446904e-13, + "plx": 0.2478, + "sp": "O9Iab", + "L_iso_W": 4.475737462691651e+25, + "P_10m_W": 537052365.4493281 + }, + { + "set": "stis", + "star": "V* RW Aur", + "setting": "E230M", + "n": 9, + "lam": 2631.719680315796, + "flux": 7.296394116049377e-15, + "plx": 15.42, + "sp": "K1/5e+K5e", + "L_iso_W": 3.671612181423459e+20, + "P_10m_W": 20236.07099607563 + }, + { + "set": "stis", + "star": "V* CW Tau", + "setting": "E230M", + "n": 3, + "lam": 2622.5466982804173, + "flux": 7.466855506224941e-15, + "plx": 7.6017, + "sp": "K0Ve", + "L_iso_W": 1.5460856874237297e+21, + "P_10m_W": 84619.44179901971 + }, + { + "set": "stis", + "star": "V* DP Tau", + "setting": "E230M", + "n": 3, + "lam": 2623.37282794407, + "flux": 9.2635410685678e-15, + "plx": null, + "sp": "M0.8", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "V* HN Tau", + "setting": "E230M", + "n": 4, + "lam": 2626.3413282112865, + "flux": 9.524960230916759e-15, + "plx": 7.4391, + "sp": "K5e", + "L_iso_W": 2.0593949460823084e+21, + "P_10m_W": 113039.99098301525 + }, + { + "set": "stis", + "star": "HD 5980", + "setting": "E140M", + "n": 6, + "lam": 1379.8492365509096, + "flux": 9.719233932461088e-14, + "plx": 0.0608, + "sp": "WN4+O7I:", + "L_iso_W": 3.1458799232641564e+26, + "P_10m_W": 4766455612.483322 + }, + { + "set": "stis", + "star": "V* TW Hya", + "setting": "E140M", + "n": 10, + "lam": 1380.3211010910577, + "flux": 2.5668307441127648e-15, + "plx": 16.6289, + "sp": "K6Ve", + "L_iso_W": 1.1106761704085409e+20, + "P_10m_W": 1683.9835485803683 + }, + { + "set": "stis", + "star": "HD 204827", + "setting": "E230M", + "n": 38, + "lam": 2273.2771449324227, + "flux": 4.1258274296759893e-14, + "plx": 1.0765, + "sp": "O9.5IV", + "L_iso_W": 4.259908350187162e+23, + "P_10m_W": 17518429.221588902 + }, + { + "set": "stis", + "star": "HD 147889", + "setting": "E230M", + "n": 4, + "lam": 2274.4097631773175, + "flux": 5.3829924526835376e-14, + "plx": 7.3337, + "sp": "B2V", + "L_iso_W": 1.1975530340107583e+22, + "P_10m_W": 492972.0686608797 + }, + { + "set": "stis", + "star": "BD+63 1964", + "setting": "E230M", + "n": 2, + "lam": 2273.801249008316, + "flux": 7.841229762734162e-14, + "plx": 0.398, + "sp": "B0Iab", + "L_iso_W": 5.922912278826378e+24, + "P_10m_W": 243685920.72363225 + }, + { + "set": "stis", + "star": "HD 281159A", + "setting": "E230M", + "n": 4, + "lam": 2274.250531300604, + "flux": 3.636893178915832e-14, + "plx": 2.8527, + "sp": "", + "L_iso_W": 5.3473130035595075e+22, + "P_10m_W": 2200910.3453556164 + }, + { + "set": "stis", + "star": "HD 32297", + "setting": "E140H", + "n": 12, + "lam": 1553.7900877223183, + "flux": 5.899939135848709e-15, + "plx": 7.7081, + "sp": "A0V", + "L_iso_W": 1.1881468362751596e+21, + "P_10m_W": 22826.79534062472 + }, + { + "set": "stis", + "star": "* 18 Ori", + "setting": "E140H", + "n": 2, + "lam": 1383.2885278660162, + "flux": 7.093879701100464e-13, + "plx": 8.3219, + "sp": "A0V", + "L_iso_W": 1.2256207324708176e+23, + "P_10m_W": 1866258.441639106 + }, + { + "set": "stis", + "star": "HD 32304", + "setting": "E230H", + "n": 4, + "lam": 2824.684530009409, + "flux": 2.3413157633769824e-14, + "plx": 5.8252, + "sp": "G5", + "L_iso_W": 8.255731736788569e+21, + "P_10m_W": 524186.2338282897 + }, + { + "set": "stis", + "star": "PG 0122+214", + "setting": "E140M", + "n": 3, + "lam": 1379.775539222062, + "flux": 3.994897578658053e-14, + "plx": 0.1514, + "sp": "B3V", + "L_iso_W": 2.085312584103149e+25, + "P_10m_W": 315920772.70512664 + }, + { + "set": "stis", + "star": "V* CV Cha", + "setting": "E140M", + "n": 2, + "lam": 1380.5158867341893, + "flux": 3.324252136039688e-15, + "plx": 5.2148, + "sp": "G9Ve", + "L_iso_W": 1.462634818797764e+21, + "P_10m_W": 22182.416805068176 + }, + { + "set": "stis", + "star": "CD-24 12689", + "setting": "E140M", + "n": 2, + "lam": 1377.7004040929683, + "flux": 2.1432761095283707e-15, + "plx": 7.5792, + "sp": "K5e", + "L_iso_W": 4.46425150089943e+20, + "P_10m_W": 6742.925492472953 + }, + { + "set": "stis", + "star": "V* AK Sco", + "setting": "E230M", + "n": 2, + "lam": 2273.8067533725243, + "flux": 7.2307946783094e-14, + "plx": 7.1543, + "sp": "F5V", + "L_iso_W": 1.6903202719804154e+22, + "P_10m_W": 695450.5261557571 + }, + { + "set": "stis", + "star": "CPD-68 1894", + "setting": "E140M", + "n": 2, + "lam": 1380.4812962408957, + "flux": 5.389984414293919e-15, + "plx": 10.2152, + "sp": "K1Ve", + "L_iso_W": 6.180320914423226e+20, + "P_10m_W": 9372.646042791033 + }, + { + "set": "stis", + "star": "V* DX Cha", + "setting": "E230H", + "n": 2, + "lam": 2780.701707226208, + "flux": 1.8474907829290913e-13, + "plx": 9.3805, + "sp": "A4V", + "L_iso_W": 2.5121615826501147e+22, + "P_10m_W": 1545775.8319567475 + }, + { + "set": "stis", + "star": "V* UX Tau A", + "setting": "E230M", + "n": 2, + "lam": 2488.727061283794, + "flux": 1.2337053306968866e-14, + "plx": 7.0308, + "sp": "K2Ve", + "L_iso_W": 2.986202248975526e+21, + "P_10m_W": 147185.11599732263 + }, + { + "set": "stis", + "star": "HD 209458", + "setting": "E230M", + "n": 32, + "lam": 2632.912427653526, + "flux": 1.0545539023718985e-13, + "plx": 20.7694, + "sp": "F9V", + "L_iso_W": 2.9250826854097905e+21, + "P_10m_W": 161361.94198451107 + }, + { + "set": "stis", + "star": "* alf Cen A", + "setting": "E140M", + "n": 22, + "lam": 1380.5339347617685, + "flux": 2.707127191925675e-14, + "plx": 742.12, + "sp": "G2V", + "L_iso_W": 5.881358522403206e+17, + "P_10m_W": 8.919940620256035 + }, + { + "set": "stis", + "star": "* alf Cen B", + "setting": "E140H", + "n": 4, + "lam": 1383.8657050793756, + "flux": 4.5767651401364916e-15, + "plx": 742.12, + "sp": "K1V", + "L_iso_W": 9.94323308570966e+16, + "P_10m_W": 1.5153245161699818 + }, + { + "set": "stis", + "star": "BD+52 913", + "setting": "E230H", + "n": 26, + "lam": 2376.766583169592, + "flux": 3.877284392463548e-14, + "plx": 19.0497, + "sp": "DA.8", + "L_iso_W": 1.278405530160639e+21, + "P_10m_W": 57468.76207059318 + }, + { + "set": "stis", + "star": "SK 155", + "setting": "E140H", + "n": 2, + "lam": 1583.8793392627385, + "flux": 4.5911557058633204e-14, + "plx": 0.1857, + "sp": "O9Iab(ff)", + "L_iso_W": 1.5929989126983637e+25, + "P_10m_W": 318016609.3118762 + }, + { + "set": "stis", + "star": "V* T Pyx", + "setting": "E140M", + "n": 9, + "lam": 1379.3802259938293, + "flux": 8.631451656122805e-15, + "plx": 0.3467, + "sp": "", + "L_iso_W": 8.591983298752564e+23, + "P_10m_W": 13009228.800862854 + }, + { + "set": "stis", + "star": "HD 29647", + "setting": "E230M", + "n": 2, + "lam": 2275.3105721182687, + "flux": 4.345564168472642e-14, + "plx": 6.4188, + "sp": "B9IIIpHgMn", + "L_iso_W": 1.261989508525521e+22, + "P_10m_W": 519908.89761415776 + }, + { + "set": "stis", + "star": "* eta UMa", + "setting": "E140H", + "n": 2, + "lam": 1457.8506497985923, + "flux": 1.730741730868161e-10, + "plx": 31.38, + "sp": "B3V", + "L_iso_W": 2.1030212055240292e+24, + "P_10m_W": 35568033.74155775 + }, + { + "set": "stis", + "star": "BD-07 4003", + "setting": "E140M", + "n": 2, + "lam": 1377.5156583894243, + "flux": 1.3146854127882779e-17, + "plx": 158.7183, + "sp": "M3V", + "L_iso_W": 6244319306909227.0, + "P_10m_W": 0.0942905843687425 + }, + { + "set": "stis", + "star": "[CTH90] NGC 4151 C04", + "setting": "E140M", + "n": 4, + "lam": 1379.822820930069, + "flux": 1.6609976731703022e-14, + "plx": null, + "sp": "", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 27561", + "setting": "E230M", + "n": 2, + "lam": 2633.1897953282014, + "flux": 8.395699193794734e-14, + "plx": 20.6798, + "sp": "F5IV-V", + "L_iso_W": 2.3489916151365863e+21, + "P_10m_W": 129609.2296186005 + }, + { + "set": "stis", + "star": "HD 26345", + "setting": "E230M", + "n": 2, + "lam": 2633.149193093328, + "flux": 8.003373103382655e-14, + "plx": 21.4123, + "sp": "F6V", + "L_iso_W": 2.088640473485995e+21, + "P_10m_W": 115240.40049840802 + }, + { + "set": "stis", + "star": "HD 62542", + "setting": "E140H", + "n": 10, + "lam": 1309.9207817855236, + "flux": 3.611813995727126e-14, + "plx": 2.7229, + "sp": "B3V", + "L_iso_W": 5.8288013936029505e+22, + "P_10m_W": 795901.7473944547 + }, + { + "set": "stis", + "star": "HD 191612", + "setting": "E140M", + "n": 4, + "lam": 1380.4282419764913, + "flux": 2.8746930595614913e-13, + "plx": 0.5362, + "sp": "O8fpe", + "L_iso_W": 1.1963413840825628e+25, + "P_10m_W": 181414891.72484207 + }, + { + "set": "stis", + "star": "HD 271791", + "setting": "E230M", + "n": 7, + "lam": 1917.4839514956686, + "flux": 2.2591538407623175e-14, + "plx": 0.049, + "sp": "B2(III)", + "L_iso_W": 1.1258250584674071e+26, + "P_10m_W": 3294007035.646938 + }, + { + "set": "stis", + "star": "HD 108317", + "setting": "E230M", + "n": 27, + "lam": 2629.671028311129, + "flux": 2.893002425583757e-14, + "plx": 5.15, + "sp": "G2IVm-5", + "L_iso_W": 1.3051234852863476e+22, + "P_10m_W": 718198.6493591239 + }, + { + "set": "stis", + "star": "HD 128279", + "setting": "E230M", + "n": 30, + "lam": 2274.212866674475, + "flux": 3.050044226783205e-14, + "plx": 7.6334, + "sp": "Gw", + "L_iso_W": 6.263071370780009e+21, + "P_10m_W": 257774.36237917052 + }, + { + "set": "stis", + "star": "HD 126238", + "setting": "E230M", + "n": 10, + "lam": 2630.393873803251, + "flux": 2.0023007645863405e-14, + "plx": 3.6027, + "sp": "G3/8wF0/2", + "L_iso_W": 1.8458243851726084e+22, + "P_10m_W": 1016300.3704985469 + }, + { + "set": "stis", + "star": "HD 122563", + "setting": "E230M", + "n": 8, + "lam": 2632.1894296287583, + "flux": 2.4712998251506747e-14, + "plx": 3.0991, + "sp": "G8:III:Fe-5", + "L_iso_W": 3.0787294316049025e+22, + "P_10m_W": 1697445.8972627956 + }, + { + "set": "stis", + "star": "HD 99890", + "setting": "E230H", + "n": 5, + "lam": 2007.5139879572855, + "flux": 2.0111952424703023e-13, + "plx": 0.3917, + "sp": "B1IV", + "L_iso_W": 1.5684271625609395e+25, + "P_10m_W": 503004245.92663556 + }, + { + "set": "stis", + "star": "HD 232522", + "setting": "E230H", + "n": 7, + "lam": 2007.1734518425626, + "flux": 1.3316422045582118e-13, + "plx": 0.2678, + "sp": "B1II", + "L_iso_W": 2.221691076922881e+25, + "P_10m_W": 712268297.893003 + }, + { + "set": "stis", + "star": "* alf CMi", + "setting": "E140H", + "n": 19, + "lam": 1289.2972714020725, + "flux": 1.733353673656342e-14, + "plx": 284.56, + "sp": "F5IV-V+DQZ", + "L_iso_W": 2.561278157874251e+18, + "P_10m_W": 33.8807494925259 + }, + { + "set": "stis", + "star": "* bet Cas", + "setting": "E140H", + "n": 3, + "lam": 1254.28905300808, + "flux": 1.7179533746782627e-14, + "plx": 59.58, + "sp": "F2III", + "L_iso_W": 5.790654322500421e+19, + "P_10m_W": 724.9583226190246 + }, + { + "set": "stis", + "star": "* gam Dra", + "setting": "E140H", + "n": 4, + "lam": 1254.1760737803143, + "flux": 8.146546094621654e-15, + "plx": 21.14, + "sp": "K5III", + "L_iso_W": 2.1811263189143405e+20, + "P_10m_W": 2730.159230236997 + }, + { + "set": "stis", + "star": "* bet Gem", + "setting": "E140H", + "n": 4, + "lam": 1253.993061531851, + "flux": 5.914167840576839e-15, + "plx": 96.54, + "sp": "K0IIIb", + "L_iso_W": 7.592701414871058e+18, + "P_10m_W": 95.01162029300619 + }, + { + "set": "stis", + "star": "* alf Aqr", + "setting": "E140M", + "n": 6, + "lam": 1379.8161536103203, + "flux": 1.1103026236310696e-14, + "plx": 4.9451, + "sp": "G2Ib", + "L_iso_W": 5.432609320621662e+21, + "P_10m_W": 82307.81263850874 + }, + { + "set": "stis", + "star": "* bet Dra", + "setting": "E140M", + "n": 6, + "lam": 1380.4822762433982, + "flux": 1.8095848649556137e-14, + "plx": 8.58, + "sp": "G2Ib-IIa", + "L_iso_W": 2.9411802740611723e+21, + "P_10m_W": 44603.9634148547 + }, + { + "set": "stis", + "star": "* alf Ori", + "setting": "E140M", + "n": 14, + "lam": 1379.955998746418, + "flux": 7.737944036469013e-15, + "plx": 6.55, + "sp": "M1-M2Ia-Iab", + "L_iso_W": 2.1580437728560627e+21, + "P_10m_W": 32702.49311449661 + }, + { + "set": "stis", + "star": "* gam Cru", + "setting": "E140M", + "n": 6, + "lam": 1380.2298492885811, + "flux": 1.7445705470815154e-14, + "plx": 36.83, + "sp": "M3.5III", + "L_iso_W": 1.5388715245993116e+20, + "P_10m_W": 2332.8957407369016 + }, + { + "set": "stis", + "star": "HD 72350", + "setting": "E140H", + "n": 3, + "lam": 1289.4328683329384, + "flux": 5.296361703593026e-13, + "plx": 1.7979, + "sp": "B3IV", + "L_iso_W": 1.9604864132496468e+24, + "P_10m_W": 25938893.478105593 + }, + { + "set": "stis", + "star": "HD 72648", + "setting": "E140H", + "n": 3, + "lam": 1289.3882171755913, + "flux": 1.9618937680111673e-13, + "plx": 0.8934, + "sp": "B3III(II)", + "L_iso_W": 2.9410394933637525e+24, + "P_10m_W": 38909745.191430524 + }, + { + "set": "stis", + "star": "KPD 0005+5106", + "setting": "E140M", + "n": 2, + "lam": 1379.8838442926933, + "flux": 1.362762727520438e-13, + "plx": 2.4089, + "sp": "DOZ1", + "L_iso_W": 2.809958905684339e+23, + "P_10m_W": 4257701.048347849 + }, + { + "set": "stis", + "star": "* alf Lyr", + "setting": "E140H", + "n": 9, + "lam": 1254.2103977546185, + "flux": 7.331733518228567e-12, + "plx": 130.23, + "sp": "A0V", + "L_iso_W": 5.17251615185431e+21, + "P_10m_W": 64748.958219259184 + }, + { + "set": "stis", + "star": "HD 91943", + "setting": "E230H", + "n": 4, + "lam": 1962.5762594873881, + "flux": 5.173785387267566e-13, + "plx": 0.4087, + "sp": "B0.7Ib", + "L_iso_W": 3.7060937361746764e+25, + "P_10m_W": 1135951050.6720212 + }, + { + "set": "stis", + "star": "* pi.03 Ori", + "setting": "E140M", + "n": 2, + "lam": 1379.5810822222754, + "flux": 2.428901268421172e-15, + "plx": 124.6198, + "sp": "F6V", + "L_iso_W": 1.8713414051416305e+18, + "P_10m_W": 28.342465301023946 + }, + { + "set": "stis", + "star": "* pi.01 UMa", + "setting": "E140M", + "n": 2, + "lam": 1380.4852447500452, + "flux": 3.91425765027768e-15, + "plx": 69.2576, + "sp": "G0.5V", + "L_iso_W": 9.764090555811516e+18, + "P_10m_W": 148.0762722345768 + }, + { + "set": "stis", + "star": "* 111 Tau", + "setting": "E140M", + "n": 2, + "lam": 1379.0829872537083, + "flux": 8.793598245383659e-15, + "plx": 68.5908, + "sp": "F8V", + "L_iso_W": 2.2364137237382316e+19, + "P_10m_W": 338.47226408846274 + }, + { + "set": "stis", + "star": "V* HN Peg", + "setting": "E140M", + "n": 2, + "lam": 1380.2668233128124, + "flux": 3.423135236438638e-15, + "plx": 55.148, + "sp": "G0V+", + "L_iso_W": 1.3467338871546765e+19, + "P_10m_W": 204.17286483961445 + }, + { + "set": "stis", + "star": "HD 196944", + "setting": "E230H", + "n": 40, + "lam": 2157.0143832776407, + "flux": 1.4280798015220865e-14, + "plx": 1.9082, + "sp": "CEMP-rs", + "L_iso_W": 4.692691005479699e+22, + "P_10m_W": 1737473.4490894198 + }, + { + "set": "stis", + "star": "HD 201626", + "setting": "E230M", + "n": 3, + "lam": 2632.552519394933, + "flux": 1.7849874494860383e-14, + "plx": 3.5754, + "sp": "C-H2IV:", + "L_iso_W": 1.6707180332847687e+22, + "P_10m_W": 921398.2530392057 + }, + { + "set": "stis", + "star": "BD+44 493", + "setting": "E230M", + "n": 8, + "lam": 2632.702012464333, + "flux": 2.468720419751343e-14, + "plx": 4.8661, + "sp": "CEMP-no", + "L_iso_W": 1.2474613969869481e+22, + "P_10m_W": 688051.0500251218 + }, + { + "set": "stis", + "star": "HD 192310", + "setting": "E140M", + "n": 2, + "lam": 1378.0843791479235, + "flux": 4.2706777289074196e-15, + "plx": 113.4872, + "sp": "K2+V", + "L_iso_W": 3.9675307657993467e+18, + "P_10m_W": 59.96006003008959 + }, + { + "set": "stis", + "star": "* ups And", + "setting": "E140M", + "n": 2, + "lam": 1379.7545298014893, + "flux": 5.3448721081943834e-15, + "plx": 74.194, + "sp": "F9V", + "L_iso_W": 1.1617615839221166e+19, + "P_10m_W": 175.99924492438942 + }, + { + "set": "stis", + "star": "HD 1237", + "setting": "E140M", + "n": 4, + "lam": 1379.6202990478948, + "flux": 2.0388004677449423e-15, + "plx": 56.9644, + "sp": "G8V", + "L_iso_W": 7.517699031067241e+18, + "P_10m_W": 113.8660413565869 + }, + { + "set": "stis", + "star": "V* S Dor", + "setting": "E230M", + "n": 2, + "lam": 2274.574943476742, + "flux": 1.1728136871148866e-13, + "plx": 0.0073, + "sp": "Be3", + "L_iso_W": 2.6333014027441554e+28, + "P_10m_W": 1084154577532.081 + }, + { + "set": "stis", + "star": "LMCN 2012-03a", + "setting": "E230M", + "n": 2, + "lam": 2273.555728169355, + "flux": 6.728842674762235e-14, + "plx": 0.0695, + "sp": "", + "L_iso_W": 1.666817418145157e+26, + "P_10m_W": 6856293082.286286 + }, + { + "set": "stis", + "star": "* 49 Cet", + "setting": "E140H", + "n": 6, + "lam": 1415.2132552093858, + "flux": 2.4290504213832626e-14, + "plx": 17.4725, + "sp": "A1V", + "L_iso_W": 9.520147925747502e+20, + "P_10m_W": 15173.214864140431 + }, + { + "set": "stis", + "star": "BBB SMC 266", + "setting": "E140H", + "n": 5, + "lam": 1289.4380441151495, + "flux": 2.0905314876612187e-14, + "plx": null, + "sp": "O6I(f)+O7.5", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 269445", + "setting": "E230M", + "n": 5, + "lam": 1917.4830357676326, + "flux": 5.378411134015479e-14, + "plx": 0.0401, + "sp": "Ofpe/WN9", + "L_iso_W": 4.002050063217968e+26, + "P_10m_W": 11709428898.18441 + }, + { + "set": "stis", + "star": "HD 188112", + "setting": "E230H", + "n": 3, + "lam": 2793.923777019412, + "flux": 5.962401101121915e-14, + "plx": 13.9738, + "sp": "sdB", + "L_iso_W": 3.653502486225439e+21, + "P_10m_W": 226949.1970276103 + }, + { + "set": "stis", + "star": "V* BR Mic", + "setting": "E140H", + "n": 2, + "lam": 1365.9346359922308, + "flux": 5.770655181553374e-13, + "plx": 0.4555, + "sp": "B2II", + "L_iso_W": 3.3278644377384403e+25, + "P_10m_W": 494100846.4514258 + }, + { + "set": "stis", + "star": "HD 86248", + "setting": "E140H", + "n": 2, + "lam": 1366.054602891979, + "flux": 3.2858638145299867e-13, + "plx": 0.3989, + "sp": "B2II", + "L_iso_W": 2.4708065967640196e+25, + "P_10m_W": 366914610.8895441 + }, + { + "set": "stis", + "star": "HD 108230", + "setting": "E140H", + "n": 2, + "lam": 1366.0765574030188, + "flux": 2.433724438564913e-13, + "plx": 0.4953, + "sp": "B2III/IV", + "L_iso_W": 1.1870035347400863e+25, + "P_10m_W": 176275609.73030755 + }, + { + "set": "stis", + "star": "HD 125924", + "setting": "E140H", + "n": 2, + "lam": 1365.9643453855663, + "flux": 2.5541577496645483e-13, + "plx": 0.391, + "sp": "B2IV", + "L_iso_W": 1.9989938908262763e+25, + "P_10m_W": 296811230.763807 + }, + { + "set": "stis", + "star": "HD 206144", + "setting": "E140H", + "n": 2, + "lam": 1365.9515530422323, + "flux": 2.2479750514010745e-13, + "plx": 0.2164, + "sp": "B2II(n)", + "L_iso_W": 5.7437329451802385e+25, + "P_10m_W": 852815269.4240718 + }, + { + "set": "stis", + "star": "HD 214080", + "setting": "E140H", + "n": 2, + "lam": 1365.9159433187704, + "flux": 1.0269360806178262e-12, + "plx": 0.6415, + "sp": "B1/2Ib", + "L_iso_W": 2.9858456689488703e+25, + "P_10m_W": 443307869.47042614 + }, + { + "set": "stis", + "star": "* alf CMa B", + "setting": "E230H", + "n": 8, + "lam": 2825.712858275324, + "flux": 1.2611034714149371e-14, + "plx": 374.4896, + "sp": "DA1.9", + "L_iso_W": 1.0759410157727359e+18, + "P_10m_W": 68.36513176663341 + }, + { + "set": "stis", + "star": "V* XY Per", + "setting": "E140M", + "n": 2, + "lam": 1379.7735821633187, + "flux": 8.043156309782638e-15, + "plx": 2.3537, + "sp": "A2II+B6", + "L_iso_W": 1.7371669538311e+22, + "P_10m_W": 263176.64493692614 + }, + { + "set": "stis", + "star": "HD 169142", + "setting": "E140M", + "n": 2, + "lam": 1378.8683874913459, + "flux": 6.760697281933244e-15, + "plx": 8.7053, + "sp": "F1VekA3mA3_lB?", + "L_iso_W": 1.0674345873513567e+21, + "P_10m_W": 16150.167711103108 + }, + { + "set": "stis", + "star": "HD 142666", + "setting": "E140M", + "n": 2, + "lam": 1379.2395464275842, + "flux": 2.2166027289549412e-15, + "plx": 6.8375, + "sp": "F0V_sh", + "L_iso_W": 5.6729695169014556e+20, + "P_10m_W": 8587.761762854401 + }, + { + "set": "stis", + "star": "HD 141569", + "setting": "E140M", + "n": 2, + "lam": 1380.5204511385916, + "flux": 4.016483374043391e-13, + "plx": 8.9597, + "sp": "A2VekB9mB9(_lB)", + "L_iso_W": 5.986545697677111e+22, + "P_10m_W": 907929.5003188113 + }, + { + "set": "stis", + "star": "HD 139614", + "setting": "E140M", + "n": 2, + "lam": 1379.704363226681, + "flux": 6.8963841461418e-15, + "plx": 7.484, + "sp": "A9VekA5mA5(_lB)", + "L_iso_W": 1.4732320292020533e+21, + "P_10m_W": 22316.87411204326 + }, + { + "set": "stis", + "star": "V* V959 Mon", + "setting": "E140M", + "n": 5, + "lam": 1379.9878571304903, + "flux": 6.734724851396894e-15, + "plx": 0.2507, + "sp": "", + "L_iso_W": 1.282119348993312e+24, + "P_10m_W": 19429835.343738817 + }, + { + "set": "stis", + "star": "MCT 0501-2858", + "setting": "E140M", + "n": 2, + "lam": 1379.7283831623706, + "flux": 7.81500970031831e-14, + "plx": 7.2332, + "sp": "DOZ", + "L_iso_W": 1.7872521953845065e+22, + "P_10m_W": 270746.7001617575 + }, + { + "set": "stis", + "star": "V* V339 Del", + "setting": "E140M", + "n": 7, + "lam": 1380.0303988360624, + "flux": 9.51850963674598e-15, + "plx": 0.802, + "sp": "", + "L_iso_W": 1.7706694014408563e+23, + "P_10m_W": 2683520.543667676 + }, + { + "set": "stis", + "star": "V* V1369 Cen", + "setting": "E230M", + "n": 10, + "lam": 2273.0109108953334, + "flux": 3.474832970074336e-14, + "plx": 3.738, + "sp": "", + "L_iso_W": 2.9755866701103184e+22, + "P_10m_W": 1223392.4087669684 + }, + { + "set": "stis", + "star": "* sig Pup", + "setting": "E140M", + "n": 3, + "lam": 1380.0605590551709, + "flux": 5.0097581923457e-15, + "plx": 17.0234, + "sp": "K5III", + "L_iso_W": 2.0684328257579932e+20, + "P_10m_W": 3134.9299856790803 + }, + { + "set": "stis", + "star": "* alf Tuc", + "setting": "E140M", + "n": 3, + "lam": 1380.067302792383, + "flux": 5.7952060773096385e-15, + "plx": 17.7324, + "sp": "K3III", + "L_iso_W": 2.2052158756893288e+20, + "P_10m_W": 3342.2719128516305 + }, + { + "set": "stis", + "star": "* tet CMa", + "setting": "E140M", + "n": 3, + "lam": 1378.52361084956, + "flux": 7.831899028012937e-15, + "plx": 12.0676, + "sp": "K3/4III", + "L_iso_W": 6.434910813721943e+20, + "P_10m_W": 9731.080963256412 + }, + { + "set": "stis", + "star": "* g Cen", + "setting": "E140M", + "n": 3, + "lam": 1380.066289021628, + "flux": 5.00643168798365e-15, + "plx": 15.8468, + "sp": "M5-III:", + "L_iso_W": 2.385406542712125e+20, + "P_10m_W": 3615.3673947237617 + }, + { + "set": "stis", + "star": "* gam Eri", + "setting": "E140M", + "n": 3, + "lam": 1379.0581201085733, + "flux": 5.807893538751268e-15, + "plx": 17.0016, + "sp": "M0III-IIIb", + "L_iso_W": 2.4041210083517042e+20, + "P_10m_W": 3638.409685721232 + }, + { + "set": "stis", + "star": "* tau04 Eri", + "setting": "E140M", + "n": 3, + "lam": 1378.8885038813025, + "flux": 5.379376768403702e-15, + "plx": 10.6153, + "sp": "M3III-IIIaCa-1", + "L_iso_W": 5.711953766010608e+20, + "P_10m_W": 8642.375284082453 + }, + { + "set": "stis", + "star": "* 31 Leo", + "setting": "E140M", + "n": 3, + "lam": 1379.6883328166696, + "flux": 4.132748578979821e-15, + "plx": 11.0209, + "sp": "K3.5IIIbFe-1:", + "L_iso_W": 4.071197083434146e+20, + "P_10m_W": 6167.004228541201 + }, + { + "set": "stis", + "star": "* G CMi", + "setting": "E140M", + "n": 3, + "lam": 1379.488743168931, + "flux": 3.9774650226318534e-15, + "plx": 12.5234, + "sp": "K2IIIbFe-0.5:", + "L_iso_W": 3.034444018386934e+20, + "P_10m_W": 4595.212372400255 + }, + { + "set": "stis", + "star": "* mu. Gem", + "setting": "E140M", + "n": 3, + "lam": 1378.7998466454114, + "flux": 8.356889358839384e-15, + "plx": 14.08, + "sp": "M3IIIab", + "L_iso_W": 5.043785488224247e+20, + "P_10m_W": 7630.4332337312 + }, + { + "set": "stis", + "star": "V* V1334 Cyg", + "setting": "E140H", + "n": 8, + "lam": 1253.8913193109615, + "flux": 1.1532641893986693e-13, + "plx": 1.0831, + "sp": "F1II+B7.0V", + "L_iso_W": 1.1762752526524028e+24, + "P_10m_W": 14716986.368845768 + }, + { + "set": "stis", + "star": "V* V350 Sgr", + "setting": "E140H", + "n": 24, + "lam": 1414.840507961608, + "flux": 7.020326600278e-15, + "plx": 0.7739, + "sp": "F8Ib/II", + "L_iso_W": 1.4025065190938161e+23, + "P_10m_W": 2234138.0007178667 + }, + { + "set": "stis", + "star": "* rho Oph B", + "setting": "E230H", + "n": 2, + "lam": 2257.7681340323916, + "flux": 3.36982116048332e-13, + "plx": 5.4764, + "sp": "B2V", + "L_iso_W": 1.3444163781058079e+23, + "P_10m_W": 5453591.559250899 + }, + { + "set": "stis", + "star": "* tet01 Ori B", + "setting": "E140H", + "n": 4, + "lam": 1226.7972325236346, + "flux": 1.38903524371671e-13, + "plx": 2.6548, + "sp": "B1V", + "L_iso_W": 2.3581254870587957e+23, + "P_10m_W": 2824246.6574815437 + }, + { + "set": "stis", + "star": "HD 93129A", + "setting": "E230M", + "n": 4, + "lam": 2275.1558382106123, + "flux": 1.8598296001151795e-13, + "plx": 0.4037, + "sp": "O2If*", + "L_iso_W": 1.3654409447375507e+25, + "P_10m_W": 562451858.5752964 + }, + { + "set": "stis", + "star": "* zet Pup", + "setting": "E230M", + "n": 4, + "lam": 2275.356053443863, + "flux": 1.4502579217913725e-10, + "plx": 3.01, + "sp": "O4I(n)fp", + "L_iso_W": 1.9152678573753804e+26, + "P_10m_W": 7890751886.956534 + }, + { + "set": "stis", + "star": "HD 46223", + "setting": "E230M", + "n": 4, + "lam": 2275.4083515557563, + "flux": 1.9150030240449753e-13, + "plx": 0.6968, + "sp": "O4V((f))", + "L_iso_W": 4.719222406428751e+24, + "P_10m_W": 194437163.42036867 + }, + { + "set": "stis", + "star": "HD 101190", + "setting": "E230M", + "n": 4, + "lam": 2275.329968730236, + "flux": 4.445261119742566e-13, + "plx": 0.4153, + "sp": "O6IV((f))", + "L_iso_W": 3.0838317810395913e+25, + "P_10m_W": 1270485140.2301586 + }, + { + "set": "stis", + "star": "HD 46202", + "setting": "E230M", + "n": 4, + "lam": 2274.3091505482803, + "flux": 1.2216538327928602e-13, + "plx": 0.7087, + "sp": "O9.2V", + "L_iso_W": 2.9103187774523275e+24, + "P_10m_W": 119792518.2961545 + }, + { + "set": "stis", + "star": "* ups Ori", + "setting": "E230H", + "n": 5, + "lam": 2696.2829502756686, + "flux": 3.275098426809981e-12, + "plx": 2.4567, + "sp": "O9.7V", + "L_iso_W": 6.492879900979064e+24, + "P_10m_W": 375628414.16278344 + }, + { + "set": "stis", + "star": "HD 36959", + "setting": "E230H", + "n": 5, + "lam": 2696.423535644106, + "flux": 1.0430020611891115e-12, + "plx": 2.7919, + "sp": "B1V", + "L_iso_W": 1.6010419609966856e+24, + "P_10m_W": 92633712.28377266 + }, + { + "set": "stis", + "star": "* sig Ori E", + "setting": "E230H", + "n": 6, + "lam": 2696.1903604819945, + "flux": 3.123010850142395e-13, + "plx": 2.3077, + "sp": "B2IV-Vp_He", + "L_iso_W": 7.016686257305202e+23, + "P_10m_W": 40590396.8396093 + }, + { + "set": "stis", + "star": "HD 36285", + "setting": "E230H", + "n": 5, + "lam": 2695.98984604665, + "flux": 4.3022500672457384e-13, + "plx": 2.8252, + "sp": "B2V", + "L_iso_W": 6.449328817895609e+23, + "P_10m_W": 37302776.67829634 + }, + { + "set": "stis", + "star": "* eps CMa", + "setting": "E230H", + "n": 7, + "lam": 2696.1868889689617, + "flux": 8.235905769449087e-11, + "plx": 8.05, + "sp": "B1.5II", + "L_iso_W": 1.5206766357470781e+25, + "P_10m_W": 879684610.3288507 + }, + { + "set": "stis", + "star": "* iot Her", + "setting": "E230H", + "n": 5, + "lam": 2696.265131846632, + "flux": 3.0741459678138267e-12, + "plx": 6.5157, + "sp": "B3IV", + "L_iso_W": 8.664022869264487e+23, + "P_10m_W": 50122753.01891168 + }, + { + "set": "stis", + "star": "* 3 Cen A", + "setting": "E230H", + "n": 5, + "lam": 2696.2805928634752, + "flux": 1.5490453992970628e-12, + "plx": 9.9104, + "sp": "B5III", + "L_iso_W": 1.8871179426226705e+23, + "P_10m_W": 10917403.23870355 + }, + { + "set": "stis", + "star": "* ksi Oct", + "setting": "E230H", + "n": 5, + "lam": 2696.1046584863843, + "flux": 5.298584836404785e-13, + "plx": 6.35, + "sp": "B6V", + "L_iso_W": 1.5722793362864914e+23, + "P_10m_W": 9094803.836921122 + }, + { + "set": "stis", + "star": "* 41 Ari", + "setting": "E230H", + "n": 5, + "lam": 2696.0493443747464, + "flux": 1.5739053795374933e-12, + "plx": 19.69, + "sp": "B8Vn", + "L_iso_W": 4.857406532480202e+22, + "P_10m_W": 2809637.312136701 + }, + { + "set": "stis", + "star": "* alf Leo", + "setting": "E230H", + "n": 8, + "lam": 2358.467869737269, + "flux": 1.9146056324239214e-11, + "plx": 41.13, + "sp": "B8IVn", + "L_iso_W": 1.3541886772452778e+23, + "P_10m_W": 5994172.575118715 + }, + { + "set": "stis", + "star": "V* GY And", + "setting": "E230H", + "n": 5, + "lam": 2696.390560196426, + "flux": 1.1597626226430282e-13, + "plx": 7.1093, + "sp": "A2:VpSiSrCrEu", + "L_iso_W": 2.745571075260526e+22, + "P_10m_W": 1588504.4030350775 + }, + { + "set": "stis", + "star": "HD 175640", + "setting": "E230H", + "n": 6, + "lam": 2696.049720063963, + "flux": 1.495204312108138e-13, + "plx": 6.3201, + "sp": "B9IIIpHgMnEu", + "L_iso_W": 4.47888494142671e+22, + "P_10m_W": 2590692.3110464793 + }, + { + "set": "stis", + "star": "* gam Lyr", + "setting": "E140H", + "n": 2, + "lam": 1253.483763957464, + "flux": 6.218156033507545e-13, + "plx": 4.9656, + "sp": "B9.5II-III", + "L_iso_W": 3.017417577821688e+23, + "P_10m_W": 3772793.003302688 + }, + { + "set": "stis", + "star": "V* V1027 Sco", + "setting": "E230H", + "n": 5, + "lam": 2696.0674588110624, + "flux": 1.4635827506247042e-13, + "plx": 6.3115, + "sp": "A0/3III", + "L_iso_W": 4.3961183353558996e+22, + "P_10m_W": 2542851.622168332 + }, + { + "set": "stis", + "star": "* eta Car", + "setting": "E140H", + "n": 21, + "lam": 1414.6683308323463, + "flux": 1.848939239753724e-13, + "plx": null, + "sp": "LBV", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "* del Ori", + "setting": "E140M", + "n": 2, + "lam": 1380.8459543930971, + "flux": 6.948194424460609e-10, + "plx": 4.71, + "sp": "O9.5IINwk", + "L_iso_W": 3.747549803464372e+26, + "P_10m_W": 5686277011.924807 + }, + { + "set": "stis", + "star": "* del Ori B", + "setting": "E140M", + "n": 2, + "lam": 1380.2976976207774, + "flux": 1.7648028122706728e-10, + "plx": null, + "sp": "O9V", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 33793", + "setting": "E140M", + "n": 3, + "lam": 1380.77575390027, + "flux": 9.624403334311979e-15, + "plx": 254.1986, + "sp": "M1VIp", + "L_iso_W": 1.7821521186862528e+18, + "P_10m_W": 27.03841390013941 + }, + { + "set": "stis", + "star": "HD 191408", + "setting": "E140M", + "n": 2, + "lam": 1379.4504552769108, + "flux": 8.221217892309572e-15, + "plx": 166.3272, + "sp": "K2.5V", + "L_iso_W": 3.5557144012203177e+18, + "P_10m_W": 53.84299636443018 + }, + { + "set": "stis", + "star": "CD-28 5104", + "setting": "E140M", + "n": 3, + "lam": 1379.7096666413922, + "flux": 1.0928867480590885e-13, + "plx": 0.1802, + "sp": "O6Ifp", + "L_iso_W": 4.027011331454472e+25, + "P_10m_W": 610026079.0742642 + }, + { + "set": "stis", + "star": "HD 172555", + "setting": "E140M", + "n": 6, + "lam": 1380.5374627244773, + "flux": 1.8473339814462853e-14, + "plx": 34.7355, + "sp": "A7V", + "L_iso_W": 1.831958261693348e+20, + "P_10m_W": 2778.446913207002 + }, + { + "set": "stis", + "star": "V* S Mus", + "setting": "E140H", + "n": 12, + "lam": 1227.910505530614, + "flux": 8.17040473390407e-14, + "plx": 1.1707, + "sp": "F6Ib+B5V", + "L_iso_W": 7.132956883611032e+23, + "P_10m_W": 8558411.515720878 + }, + { + "set": "stis", + "star": "V* SU Cyg", + "setting": "E140H", + "n": 12, + "lam": 1227.732507882362, + "flux": 4.601213556293376e-14, + "plx": 1.0275, + "sp": "F2Iab:+B8.0V", + "L_iso_W": 5.2146599671568844e+23, + "P_10m_W": 6254947.099599979 + }, + { + "set": "stis", + "star": "* eps Eri", + "setting": "E230H", + "n": 2, + "lam": 2625.5868872377237, + "flux": 1.457340797610625e-13, + "plx": 310.5773, + "sp": "K2V", + "L_iso_W": 1.8077524874518688e+19, + "P_10m_W": 991.7036079852186 + }, + { + "set": "stis", + "star": "HD 85512", + "setting": "E230M", + "n": 2, + "lam": 2275.199327967085, + "flux": 6.198393785359729e-14, + "plx": 88.6737, + "sp": "K6Vk:", + "L_iso_W": 9.432064635541774e+19, + "P_10m_W": 3885.400625237893 + }, + { + "set": "stis", + "star": "HD 40307", + "setting": "E230M", + "n": 2, + "lam": 2272.288136520905, + "flux": 6.774589025564451e-14, + "plx": 77.3261, + "sp": "K2.5V", + "L_iso_W": 1.3556513340362044e+20, + "P_10m_W": 5570.125032240689 + }, + { + "set": "stis", + "star": "HD 97658", + "setting": "E230M", + "n": 2, + "lam": 2275.1894600158776, + "flux": 7.367908607623695e-14, + "plx": 46.3763, + "sp": "K1V", + "L_iso_W": 4.098918674953204e+20, + "P_10m_W": 16884.74756139063 + }, + { + "set": "stis", + "star": "HD 43582", + "setting": "E140H", + "n": 5, + "lam": 1289.2082143344724, + "flux": 2.710046351832987e-14, + "plx": 0.5081, + "sp": "B0IIIn", + "L_iso_W": 1.25601722168384e+24, + "P_10m_W": 16612380.052301595 + }, + { + "set": "stis", + "star": "HD 254755", + "setting": "E140H", + "n": 5, + "lam": 1288.893176685825, + "flux": 1.1762257330193575e-14, + "plx": 0.8832, + "sp": "O9Vp", + "L_iso_W": 1.8042213628488453e+23, + "P_10m_W": 2385139.6160122324 + }, + { + "set": "stis", + "star": "GD 394", + "setting": "E140M", + "n": 8, + "lam": 1380.0085398521755, + "flux": 8.563931663753129e-14, + "plx": 19.88, + "sp": "DA1.3", + "L_iso_W": 2.5927324192222473e+21, + "P_10m_W": 39292.65562481679 + }, + { + "set": "stis", + "star": "AzV 47", + "setting": "E230M", + "n": 2, + "lam": 2056.6963653670155, + "flux": 4.914737239494269e-14, + "plx": 1.8315, + "sp": "O8III((f))", + "L_iso_W": 1.753088023478678e+23, + "P_10m_W": 5901116.9258793015 + }, + { + "set": "stis", + "star": "HD 5045", + "setting": "E230M", + "n": 2, + "lam": 2056.65160539966, + "flux": 1.1519683514346886e-13, + "plx": 0.29, + "sp": "B1Ia+", + "L_iso_W": 1.6389353286321499e+25, + "P_10m_W": 551662433.2968414 + }, + { + "set": "stis", + "star": "AzV 80", + "setting": "E230M", + "n": 2, + "lam": 2056.7221524532806, + "flux": 4.7825739549865094e-14, + "plx": 0.1368, + "sp": "O6IIInn(f)p", + "L_iso_W": 3.057783724305145e+25, + "P_10m_W": 1029314645.7098488 + }, + { + "set": "stis", + "star": "AzV 95", + "setting": "E230M", + "n": 2, + "lam": 2056.6990828352123, + "flux": 4.519313131132875e-14, + "plx": 0.1119, + "sp": "O7.5III((f))", + "L_iso_W": 4.318466206705103e+25, + "P_10m_W": 1453654410.2340653 + }, + { + "set": "stis", + "star": "AzV 207", + "setting": "E230M", + "n": 2, + "lam": 2056.7036123393555, + "flux": 4.174993464707502e-14, + "plx": null, + "sp": "O7V((f))z", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "RMC 18", + "setting": "E230M", + "n": 2, + "lam": 2056.6687619552804, + "flux": 1.183479507183004e-13, + "plx": null, + "sp": "B1Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "AzV 321", + "setting": "E230M", + "n": 2, + "lam": 2056.6639034388754, + "flux": 4.697964708021305e-14, + "plx": null, + "sp": "O9.5Ibn", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "AzV 388", + "setting": "E230M", + "n": 2, + "lam": 2056.6443580400532, + "flux": 4.5521680605513044e-14, + "plx": 0.0365, + "sp": "O5V", + "L_iso_W": 4.08836652268798e+26, + "P_10m_W": 13761264946.278254 + }, + { + "set": "stis", + "star": "SK 143", + "setting": "E230M", + "n": 2, + "lam": 2056.7044899146094, + "flux": 3.719310141726711e-14, + "plx": 2.7874, + "sp": "O9.7Ib", + "L_iso_W": 5.727710618524172e+22, + "P_10m_W": 1928035.3675408245 + }, + { + "set": "stis", + "star": "Dachs SMC 3-10", + "setting": "E230M", + "n": 2, + "lam": 2056.6734249243605, + "flux": 4.2913951981872524e-14, + "plx": 0.0452, + "sp": "O2-3V", + "L_iso_W": 2.5132686058149296e+26, + "P_10m_W": 8459792582.880285 + }, + { + "set": "stis", + "star": "SK 190", + "setting": "E230M", + "n": 2, + "lam": 2056.7294235927284, + "flux": 7.602807778390147e-14, + "plx": null, + "sp": "O7.5(f)np", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "PG 0909+276", + "setting": "E140M", + "n": 2, + "lam": 1379.050494713718, + "flux": 1.0365304035408888e-13, + "plx": 3.5812, + "sp": "sdB0.5VIIHe19", + "L_iso_W": 9.670349241172001e+22, + "P_10m_W": 1463499.6791003472 + }, + { + "set": "stis", + "star": "LS IV -14 116", + "setting": "E140M", + "n": 4, + "lam": 1379.8665272261246, + "flux": 7.596436076666843e-14, + "plx": 2.3406, + "sp": "sdB0.5VIIHe18", + "L_iso_W": 1.6591007180785832e+23, + "P_10m_W": 2513836.6091774306 + }, + { + "set": "stis", + "star": "BD+05 3409", + "setting": "E140M", + "n": 2, + "lam": 1377.6775607199002, + "flux": 4.700303547334815e-15, + "plx": 98.8439, + "sp": "M1.0V", + "L_iso_W": 5.756300073789676e+18, + "P_10m_W": 86.9418207474609 + }, + { + "set": "stis", + "star": "BD+18 3421", + "setting": "E140M", + "n": 2, + "lam": 1376.7771602552507, + "flux": 2.4029963318340346e-15, + "plx": 122.5546, + "sp": "M1.5V", + "L_iso_W": 1.914305024481382e+18, + "P_10m_W": 28.875438007748922 + }, + { + "set": "stis", + "star": "* del Pav", + "setting": "E140H", + "n": 2, + "lam": 1254.1422867977349, + "flux": 2.6540667104459186e-15, + "plx": 163.9544, + "sp": "G8IV", + "L_iso_W": 1.1813618646688394e+18, + "P_10m_W": 14.786544899487195 + }, + { + "set": "stis", + "star": "L 347-14", + "setting": "E140M", + "n": 4, + "lam": 1379.128695486266, + "flux": 1.560707474752911e-15, + "plx": 169.2351, + "sp": "M4.5V", + "L_iso_W": 6.520154558320095e+17, + "P_10m_W": 9.868647042721022 + }, + { + "set": "stis", + "star": "HD 84937", + "setting": "E230H", + "n": 59, + "lam": 2007.52448240603, + "flux": 2.2223604947655195e-14, + "plx": 13.4978, + "sp": "F8Vm-5", + "L_iso_W": 1.4595057010657473e+21, + "P_10m_W": 46807.73565178898 + }, + { + "set": "stis", + "star": "HD 94028", + "setting": "E230H", + "n": 21, + "lam": 2507.3568221061687, + "flux": 1.988036778296024e-14, + "plx": 20.2078, + "sp": "F8", + "L_iso_W": 5.825103008668734e+20, + "P_10m_W": 29142.44807194091 + }, + { + "set": "stis", + "star": "HD 140283", + "setting": "E230H", + "n": 27, + "lam": 1962.4342389666433, + "flux": 3.2544949037244204e-14, + "plx": 16.2672, + "sp": "F9VkA5mA1", + "L_iso_W": 1.4715507636551662e+21, + "P_10m_W": 45097.82628270442 + }, + { + "set": "stis", + "star": "* nu. Ind", + "setting": "E230H", + "n": 6, + "lam": 2382.8077788371147, + "flux": 3.391782096585069e-14, + "plx": 35.1281, + "sp": "G9VFe-3.1CH-1.5", + "L_iso_W": 3.28878806446884e+20, + "P_10m_W": 14859.494722168676 + }, + { + "set": "stis", + "star": "BD+03 740", + "setting": "E230M", + "n": 4, + "lam": 2632.7540390374647, + "flux": 2.280826556779235e-14, + "plx": 5.8932, + "sp": "sdF0", + "L_iso_W": 7.857912087490671e+21, + "P_10m_W": 433428.9114329754 + }, + { + "set": "stis", + "star": "BD-13 3442", + "setting": "E230M", + "n": 7, + "lam": 2633.214028186828, + "flux": 1.64187096390073e-14, + "plx": 4.7032, + "sp": "CEMP", + "L_iso_W": 8.88115384422235e+21, + "P_10m_W": 490040.35901401355 + }, + { + "set": "stis", + "star": "CD-33 1173", + "setting": "E230M", + "n": 9, + "lam": 2632.7938740876, + "flux": 1.2225353632042576e-14, + "plx": 4.5579, + "sp": "CEMP", + "L_iso_W": 7.041239398455524e+21, + "P_10m_W": 388394.4039528412 + }, + { + "set": "stis", + "star": "* eta Tel", + "setting": "E140H", + "n": 6, + "lam": 1414.4378226219837, + "flux": 1.2348698795917833e-13, + "plx": 20.6028, + "sp": "A0V", + "L_iso_W": 3.480855295121145e+21, + "P_10m_W": 55417.1040999394 + }, + { + "set": "stis", + "star": "* rho01 Cnc", + "setting": "E230M", + "n": 18, + "lam": 2632.7271311300356, + "flux": 8.098362991274254e-14, + "plx": 79.4482, + "sp": "K0IV-V", + "L_iso_W": 1.535134315902316e+20, + "P_10m_W": 8467.36368801246 + }, + { + "set": "stis", + "star": "CD-38 10980", + "setting": "E230M", + "n": 2, + "lam": 2273.8505691959567, + "flux": 2.4116558934757277e-13, + "plx": 77.4545, + "sp": "DA2", + "L_iso_W": 4.809935983015026e+20, + "P_10m_W": 19790.340828768018 + }, + { + "set": "stis", + "star": "LAWD 74", + "setting": "E230M", + "n": 2, + "lam": 2274.244653317552, + "flux": 4.58495836212257e-14, + "plx": 95.1758, + "sp": "DBQA5", + "L_iso_W": 6.056191357779924e+19, + "P_10m_W": 2492.6659994604556 + }, + { + "set": "stis", + "star": "CPD-69 177", + "setting": "E230M", + "n": 2, + "lam": 2275.0901473564586, + "flux": 1.5566222148625365e-13, + "plx": 96.1834, + "sp": "DA3.0", + "L_iso_W": 2.013261735019067e+20, + "P_10m_W": 8292.540371423876 + }, + { + "set": "stis", + "star": "V* AW Per", + "setting": "E140H", + "n": 6, + "lam": 1415.0383260309, + "flux": 1.0964595602458034e-14, + "plx": 1.0566, + "sp": "F0+B6:", + "L_iso_W": 1.1751374610825161e+23, + "P_10m_W": 1872471.4840074938 + }, + { + "set": "stis", + "star": "* bet Pic", + "setting": "E140H", + "n": 5, + "lam": 1583.3015584636516, + "flux": 9.512902820770616e-14, + "plx": 50.9307, + "sp": "A6V", + "L_iso_W": 4.3880446173393945e+20, + "P_10m_W": 8753.63531008622 + }, + { + "set": "stis", + "star": "V* RY Tau", + "setting": "E230M", + "n": 3, + "lam": 2632.945698248095, + "flux": 5.400475651653133e-15, + "plx": 7.2349, + "sp": "K1IV/Ve", + "L_iso_W": 1.234480436929705e+21, + "P_10m_W": 68101.73126887651 + }, + { + "set": "stis", + "star": "[EM98] DG Tau B cRN", + "setting": "E230M", + "n": 3, + "lam": 2624.0852369084632, + "flux": 5.51956872169786e-15, + "plx": null, + "sp": "", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "* ksi Per", + "setting": "E140M", + "n": 11, + "lam": 1379.5089553725004, + "flux": 3.2007505454208896e-11, + "plx": 2.4457, + "sp": "O7.5III(n)((f))", + "L_iso_W": 6.402693701484924e+25, + "P_10m_W": 969620771.1719803 + }, + { + "set": "stis", + "star": "HD 165783", + "setting": "E140H", + "n": 4, + "lam": 1330.5637014116921, + "flux": 5.3314004359454936e-14, + "plx": 0.7041, + "sp": "B3/5Ib", + "L_iso_W": 1.286737267622239e+24, + "P_10m_W": 18128061.18976402 + }, + { + "set": "stis", + "star": "HD 165918", + "setting": "E140H", + "n": 2, + "lam": 1351.8374241281429, + "flux": 1.063136225538704e-13, + "plx": 2.8488, + "sp": "B5IV/V", + "L_iso_W": 1.5674087264903105e+23, + "P_10m_W": 2279404.1089170775 + }, + { + "set": "stis", + "star": "HD 174509", + "setting": "E140H", + "n": 6, + "lam": 1330.1254502083145, + "flux": 3.086400792067148e-14, + "plx": 1.7819, + "sp": "B3V(n)", + "L_iso_W": 1.1630621730039061e+23, + "P_10m_W": 1637488.5559890426 + }, + { + "set": "stis", + "star": "LP 656-38", + "setting": "E140M", + "n": 2, + "lam": 1377.6608636368824, + "flux": 3.2557287762652686e-15, + "plx": 186.0466, + "sp": "M4.0Ve", + "L_iso_W": 1.1254391218241015e+18, + "P_10m_W": 16.997959344620657 + }, + { + "set": "stis", + "star": "HD 32147", + "setting": "E140M", + "n": 2, + "lam": 1378.4356009194867, + "flux": 2.7014181632609017e-15, + "plx": 113.0715, + "sp": "K3+V", + "L_iso_W": 2.5281496253110016e+18, + "P_10m_W": 38.22661757044147 + }, + { + "set": "stis", + "star": "BD-11 916", + "setting": "E140M", + "n": 2, + "lam": 1376.6439755570952, + "flux": 5.888474185092019e-15, + "plx": 89.1897, + "sp": "M1V", + "L_iso_W": 8.857081363629785e+18, + "P_10m_W": 133.57465075129144 + }, + { + "set": "stis", + "star": "* 31 Cyg", + "setting": "E230H", + "n": 10, + "lam": 2907.5442436835747, + "flux": 8.099898985079532e-14, + "plx": 2.9167, + "sp": "K3Ib+B2IV-V", + "L_iso_W": 1.139235066827083e+23, + "P_10m_W": 7664011.444659672 + }, + { + "set": "stis", + "star": "V* V5668 Sgr", + "setting": "E230M", + "n": 2, + "lam": 2273.8163839478166, + "flux": 2.8341345623508614e-13, + "plx": null, + "sp": "", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 219134", + "setting": "E140H", + "n": 9, + "lam": 1253.9715324917725, + "flux": 3.785718718503133e-17, + "plx": 152.864, + "sp": "K3V", + "L_iso_W": 1.9384525214124844e+16, + "P_10m_W": 0.2425608237674737 + }, + { + "set": "stis", + "star": "HD 54879", + "setting": "E140M", + "n": 5, + "lam": 1380.4402639785362, + "flux": 7.606805652051189e-13, + "plx": 0.799, + "sp": "O9.7V", + "L_iso_W": 1.4256930316970768e+25, + "P_10m_W": 216197864.09571245 + }, + { + "set": "stis", + "star": "V* CU Vir", + "setting": "E140H", + "n": 10, + "lam": 1479.1076916773568, + "flux": 1.5698558873367671e-12, + "plx": 13.2281, + "sp": "ApSi", + "L_iso_W": 1.0734507217247962e+23, + "P_10m_W": 1868838.7877091835 + }, + { + "set": "stis", + "star": "HD 19445", + "setting": "E230H", + "n": 26, + "lam": 2007.4611983730183, + "flux": 1.9987088339011632e-14, + "plx": 25.8707, + "sp": "G2VFe-3", + "L_iso_W": 3.573143328559449e+20, + "P_10m_W": 11458.687950503161 + }, + { + "set": "stis", + "star": "* bet CMa", + "setting": "E140M", + "n": 42, + "lam": 1380.336801703806, + "flux": 9.926373671180751e-10, + "plx": 6.62, + "sp": "B1II-III", + "L_iso_W": 2.7101411223921634e+26, + "P_10m_W": 4109151713.3964305 + }, + { + "set": "stis", + "star": "* ksi01 CMa", + "setting": "E140M", + "n": 42, + "lam": 1380.4169239083521, + "flux": 3.5338985064430795e-10, + "plx": 2.166, + "sp": "B0.7IV", + "L_iso_W": 9.012689990078463e+26, + "P_10m_W": 13666745875.295649 + }, + { + "set": "stis", + "star": "BI 214", + "setting": "E140M", + "n": 3, + "lam": 1380.110358967317, + "flux": 3.933266721350895e-14, + "plx": null, + "sp": "O7(f)(n)p", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "[ELS2006] N11 020", + "setting": "E140M", + "n": 2, + "lam": 1379.808934515054, + "flux": 3.740000905621142e-14, + "plx": 0.0367, + "sp": "O5I(n)f+", + "L_iso_W": 3.3224376831000975e+26, + "P_10m_W": 5033671680.0438795 + }, + { + "set": "stis", + "star": "BI 265", + "setting": "E140M", + "n": 3, + "lam": 1379.7421115934108, + "flux": 3.781672172266463e-14, + "plx": null, + "sp": "O5III(fc)", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -68 112", + "setting": "E140M", + "n": 2, + "lam": 1379.7307284612511, + "flux": 5.1369405120132124e-14, + "plx": 0.0271, + "sp": "O7.5(f)(n)p", + "L_iso_W": 8.369185996824043e+26, + "P_10m_W": 12678329342.173168 + }, + { + "set": "stis", + "star": "RX J0623.2-3741", + "setting": "E140H", + "n": 2, + "lam": 1415.04087087462, + "flux": 7.794185028904242e-14, + "plx": 13.0389, + "sp": "DA.8", + "L_iso_W": 5.485371772500807e+21, + "P_10m_W": 87404.5761232246 + }, + { + "set": "stis", + "star": "MCT 0455-2812", + "setting": "E140H", + "n": 3, + "lam": 1414.8451092140936, + "flux": 3.1560738998771087e-14, + "plx": 7.9641, + "sp": "DA.8", + "L_iso_W": 5.95375582846896e+21, + "P_10m_W": 94841.6173405189 + }, + { + "set": "stis", + "star": "* zet Aur", + "setting": "E230H", + "n": 12, + "lam": 2683.282381684641, + "flux": 6.432080607846443e-14, + "plx": 1.4244, + "sp": "K5II+B7V", + "L_iso_W": 3.7931918909523e+23, + "P_10m_W": 21733401.723460168 + }, + { + "set": "stis", + "star": "CPD-64 484", + "setting": "E230M", + "n": 10, + "lam": 2632.9014983681936, + "flux": 1.1083915836646666e-14, + "plx": 5.691, + "sp": "", + "L_iso_W": 4.0948058326427443e+21, + "P_10m_W": 225887.74634201452 + }, + { + "set": "stis", + "star": "CD-30 1812", + "setting": "E230M", + "n": 9, + "lam": 2632.8396211256586, + "flux": 1.434766564638553e-14, + "plx": 4.0708, + "sp": "F5", + "L_iso_W": 1.0359504438235813e+22, + "P_10m_W": 571449.5916264442 + }, + { + "set": "stis", + "star": "HAT-P-41", + "setting": "E230M", + "n": 10, + "lam": 2632.7451493522017, + "flux": 8.597926486545033e-15, + "plx": 2.8477, + "sp": "", + "L_iso_W": 1.2685936175371914e+22, + "P_10m_W": 699729.6882429646 + }, + { + "set": "stis", + "star": "CD-38 3220", + "setting": "E230M", + "n": 10, + "lam": 2632.84354613292, + "flux": 1.1282913596386545e-14, + "plx": 3.7996, + "sp": "F6V", + "L_iso_W": 9.351101465557613e+21, + "P_10m_W": 515825.7403358803 + }, + { + "set": "stis", + "star": "HD 14633", + "setting": "E140H", + "n": 2, + "lam": 1353.1923011156846, + "flux": 9.857636123760803e-13, + "plx": 0.6746, + "sp": "ON8.5V", + "L_iso_W": 2.591775464833478e+25, + "P_10m_W": 377664833.17608273 + }, + { + "set": "stis", + "star": "HD 242926", + "setting": "E140H", + "n": 2, + "lam": 1228.2697170988795, + "flux": 4.9371822645807735e-14, + "plx": 0.0493, + "sp": "O7Vz", + "L_iso_W": 2.430538958871783e+26, + "P_10m_W": 2917965895.5975285 + }, + { + "set": "stis", + "star": "HD 233622", + "setting": "E230H", + "n": 2, + "lam": 1962.573975666653, + "flux": 1.165091881045048e-13, + "plx": 0.1759, + "sp": "B2-4", + "L_iso_W": 4.505528715976645e+25, + "P_10m_W": 1380981845.4337957 + }, + { + "set": "stis", + "star": "V* V652 Her", + "setting": "E140M", + "n": 8, + "lam": 1380.3579564884035, + "flux": 3.751131832959708e-13, + "plx": 0.6355, + "sp": "", + "L_iso_W": 1.111343932821801e+25, + "P_10m_W": 168508597.7724926 + }, + { + "set": "stis", + "star": "SK -67 191", + "setting": "E140M", + "n": 2, + "lam": 1379.1778587901722, + "flux": 4.286473233263766e-14, + "plx": null, + "sp": "O8V", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "PGMW 3120", + "setting": "E230M", + "n": 2, + "lam": 1917.4917447424625, + "flux": 6.354796607684642e-14, + "plx": null, + "sp": "O5.5V((f*))", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -67 105", + "setting": "E230M", + "n": 2, + "lam": 1917.382973680249, + "flux": 8.864007828139319e-14, + "plx": 0.0449, + "sp": "OB", + "L_iso_W": 5.260835400879661e+26, + "P_10m_W": 15390849200.782305 + }, + { + "set": "stis", + "star": "BI 173", + "setting": "E140M", + "n": 2, + "lam": 1378.815452911537, + "flux": 4.774897056857239e-14, + "plx": 0.0116, + "sp": "O7.5III((f))p", + "L_iso_W": 4.245856378844215e+27, + "P_10m_W": 64234407075.56756 + }, + { + "set": "stis", + "star": "HD 270145", + "setting": "E230M", + "n": 2, + "lam": 1917.4824932525748, + "flux": 8.762454554247702e-14, + "plx": 0.0016, + "sp": "O6.5Iaf", + "L_iso_W": 4.09546367496516e+29, + "P_10m_W": 11982737050606.49 + }, + { + "set": "stis", + "star": "BI 184", + "setting": "E230M", + "n": 3, + "lam": 1917.474943649123, + "flux": 5.134860185750538e-14, + "plx": 0.0253, + "sp": "B0.5V", + "L_iso_W": 9.598532630422283e+26, + "P_10m_W": 28083703339.49338 + }, + { + "set": "stis", + "star": "SK -71 50", + "setting": "E140M", + "n": 2, + "lam": 1380.119384523056, + "flux": 3.1516533591787706e-14, + "plx": 0.001, + "sp": "O6.5III", + "L_iso_W": 3.77099285683534e+29, + "P_10m_W": 5715828076153.799 + }, + { + "set": "stis", + "star": "HD 269050", + "setting": "E230M", + "n": 2, + "lam": 1917.3584753780879, + "flux": 9.372465408424986e-14, + "plx": null, + "sp": "B0Ia(e?)", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "BI 237", + "setting": "E230M", + "n": 3, + "lam": 1917.4561360716975, + "flux": 4.890130673929538e-14, + "plx": null, + "sp": "O2V(f*)", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "W61 27-56", + "setting": "E230M", + "n": 5, + "lam": 1917.4984362532696, + "flux": 4.4727578314400794e-14, + "plx": null, + "sp": "B1I", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "BI 253", + "setting": "E230M", + "n": 4, + "lam": 1917.4683671337752, + "flux": 4.534209706968269e-14, + "plx": 0.0145, + "sp": "O2V(f*)", + "L_iso_W": 2.5803752219137043e+27, + "P_10m_W": 75496951398.45314 + }, + { + "set": "stis", + "star": "HD 269896", + "setting": "E140M", + "n": 2, + "lam": 1379.8614937035395, + "flux": 5.4755054659400114e-14, + "plx": null, + "sp": "ON9.7Ia+", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -68 140", + "setting": "E230M", + "n": 5, + "lam": 1917.4657972916466, + "flux": 4.483765288601421e-14, + "plx": null, + "sp": "B0.7Ib-IabNwk", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -68 26", + "setting": "E230M", + "n": 3, + "lam": 1917.4553103752569, + "flux": 5.177794491060884e-14, + "plx": 0.08, + "sp": "BC2Ia", + "L_iso_W": 9.6801502927259e+25, + "P_10m_W": 2832192299.512441 + }, + { + "set": "stis", + "star": "HD 270754", + "setting": "E140M", + "n": 2, + "lam": 1379.7695987484287, + "flux": 3.8630538129269854e-14, + "plx": 0.0404, + "sp": "B1.5Ia", + "L_iso_W": 2.831948118574483e+26, + "P_10m_W": 4290308996.829236 + }, + { + "set": "stis", + "star": "SK -66 19", + "setting": "E230M", + "n": 4, + "lam": 1917.4853110151057, + "flux": 4.110497403065823e-14, + "plx": null, + "sp": "O7V", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -69 279", + "setting": "E230M", + "n": 4, + "lam": 1917.494321366448, + "flux": 4.866284461245547e-14, + "plx": null, + "sp": "ON9.5Ia+", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -66 172", + "setting": "E140M", + "n": 2, + "lam": 1379.1649810285744, + "flux": 4.2721346757337604e-14, + "plx": 0.3905, + "sp": "O2III(f*)+OB", + "L_iso_W": 3.3521243720345406e+24, + "P_10m_W": 50739093.29682795 + }, + { + "set": "stis", + "star": "SK -70 79", + "setting": "E140M", + "n": 3, + "lam": 1379.8236842778026, + "flux": 3.454953506532625e-14, + "plx": 0.0041, + "sp": "B0III", + "L_iso_W": 2.459188158994971e+28, + "P_10m_W": 372588190493.8575 + }, + { + "set": "stis", + "star": "BI 42", + "setting": "E140M", + "n": 3, + "lam": 1379.8974653086061, + "flux": 3.021667516751084e-14, + "plx": null, + "sp": "O8V", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -68 155", + "setting": "E230M", + "n": 4, + "lam": 1917.4693785325587, + "flux": 4.8884296941725e-14, + "plx": 0.0079, + "sp": "O9Ia", + "L_iso_W": 9.372003798898056e+27, + "P_10m_W": 274207586450.08713 + }, + { + "set": "stis", + "star": "BD+56 864", + "setting": "E140M", + "n": 6, + "lam": 1379.9576441183353, + "flux": 5.55237147963073e-14, + "plx": 0.1788, + "sp": "O5.5V(n)+O6.5V(n)", + "L_iso_W": 2.078072766417187e+25, + "P_10m_W": 314907061.8865594 + }, + { + "set": "stis", + "star": "Hilt 412", + "setting": "E140M", + "n": 2, + "lam": 1380.0057844437033, + "flux": 9.844496603829555e-14, + "plx": 0.2646, + "sp": "O8Vz", + "L_iso_W": 1.6824071246365848e+25, + "P_10m_W": 254966456.6069349 + }, + { + "set": "stis", + "star": "LAWD 52", + "setting": "E140M", + "n": 2, + "lam": 1379.814487585192, + "flux": 5.5368048072225195e-14, + "plx": 37.7291, + "sp": "DA2.4", + "L_iso_W": 4.653970083531258e+20, + "P_10m_W": 7051.071594249205 + }, + { + "set": "stis", + "star": "EGGR 150", + "setting": "E140M", + "n": 2, + "lam": 1379.8194826226904, + "flux": 4.7729586294666345e-14, + "plx": 44.3255, + "sp": "DA2.8", + "L_iso_W": 2.9066828529042558e+20, + "P_10m_W": 4403.848095005116 + }, + { + "set": "stis", + "star": "GD 683", + "setting": "E140M", + "n": 2, + "lam": 1379.625170563362, + "flux": 3.671957884666806e-14, + "plx": 10.6896, + "sp": "DA1.6", + "L_iso_W": 3.844961961593942e+21, + "P_10m_W": 58237.725106622536 + }, + { + "set": "stis", + "star": "HD 189733", + "setting": "E230M", + "n": 15, + "lam": 2632.918842023743, + "flux": 3.687987721702713e-14, + "plx": 50.5668, + "sp": "K2V", + "L_iso_W": 1.7257416833740816e+20, + "P_10m_W": 9520.085965795102 + }, + { + "set": "stis", + "star": "HD 94414", + "setting": "E140H", + "n": 2, + "lam": 1330.6127610498002, + "flux": 4.1326269697530227e-14, + "plx": 3.2833, + "sp": "B4V", + "L_iso_W": 4.586932373959023e+22, + "P_10m_W": 646272.7459272321 + }, + { + "set": "stis", + "star": "HD 334041", + "setting": "E140H", + "n": 3, + "lam": 1330.4443574469576, + "flux": 2.283873526735123e-14, + "plx": 1.3098, + "sp": "B8", + "L_iso_W": 1.5928663706122293e+23, + "P_10m_W": 2243690.3044075468 + }, + { + "set": "stis", + "star": "CD-34 14724A", + "setting": "E230M", + "n": 10, + "lam": 2632.80379168692, + "flux": 2.4590497693940423e-14, + "plx": 4.7498, + "sp": "F8", + "L_iso_W": 1.3041691937396484e+22, + "P_10m_W": 719384.4778728186 + }, + { + "set": "stis", + "star": "HD 15082", + "setting": "E230M", + "n": 10, + "lam": 2632.8044324743432, + "flux": 1.0505869871102549e-13, + "plx": 8.2238, + "sp": "kA5hA8mF4", + "L_iso_W": 1.8586781881619792e+22, + "P_10m_W": 1025254.1581320692 + }, + { + "set": "stis", + "star": "HD 72660", + "setting": "E230H", + "n": 2, + "lam": 2511.7324203622757, + "flux": 2.776610809194464e-13, + "plx": 10.1869, + "sp": "A0V", + "L_iso_W": 3.2014608052327417e+22, + "P_10m_W": 1607256.044908228 + }, + { + "set": "stis", + "star": "HD 86986", + "setting": "E230H", + "n": 30, + "lam": 1754.7500472143033, + "flux": 2.976071586685869e-14, + "plx": 3.6407, + "sp": "A1V", + "L_iso_W": 2.686524781519988e+22, + "P_10m_W": 658281.2915221629 + }, + { + "set": "stis", + "star": "HD 217987", + "setting": "E140M", + "n": 2, + "lam": 1379.7429149886943, + "flux": 3.1335263848550043e-15, + "plx": 304.1354, + "sp": "M2V", + "L_iso_W": 4.0533739763086394e+17, + "P_10m_W": 6.140491805395655 + }, + { + "set": "stis", + "star": "BD+05 1668", + "setting": "E140M", + "n": 3, + "lam": 1377.2840401900694, + "flux": 1.4650208425477186e-16, + "plx": 264.1269, + "sp": "M3.5V", + "L_iso_W": 2.5126719989991748e+16, + "P_10m_W": 0.37929137402658253 + }, + { + "set": "stis", + "star": "HD 239960", + "setting": "E140M", + "n": 3, + "lam": 1379.7401147956261, + "flux": 1.886925615386688e-15, + "plx": 249.94, + "sp": "M3", + "L_iso_W": 3.6141029056176755e+17, + "P_10m_W": 5.475013982578929 + }, + { + "set": "stis", + "star": "HD 36395", + "setting": "E140M", + "n": 3, + "lam": 1379.5898279127523, + "flux": 1.837539403120878e-15, + "plx": 175.3131, + "sp": "M1.5Ve", + "L_iso_W": 7.153608805020489e+17, + "P_10m_W": 10.834660068713163 + }, + { + "set": "stis", + "star": "CD-40 9712", + "setting": "E140M", + "n": 3, + "lam": 1379.7607678205675, + "flux": 1.2993672758821496e-15, + "plx": 168.9965, + "sp": "M2.5V", + "L_iso_W": 5.4436948123490605e+17, + "P_10m_W": 8.246914453645685 + }, + { + "set": "stis", + "star": "V* YZ CMi", + "setting": "E140H", + "n": 3, + "lam": 1253.0210763931004, + "flux": 2.6686629968195626e-15, + "plx": 166.9769, + "sp": "M4.0Ve", + "L_iso_W": 1.1452444901122163e+18, + "P_10m_W": 14.308862130917124 + }, + { + "set": "stis", + "star": "HD 152751", + "setting": "E140H", + "n": 2, + "lam": 1253.4509950963366, + "flux": 2.107087525409439e-15, + "plx": 161.41, + "sp": "M3.5Ve", + "L_iso_W": 9.676960447561106e+17, + "P_10m_W": 12.098842434303302 + }, + { + "set": "stis", + "star": "* alf Boo", + "setting": "E140H", + "n": 4, + "lam": 1271.6951148953544, + "flux": 8.587663306709749e-15, + "plx": 88.83, + "sp": "K1.5IIIFe-0.5", + "L_iso_W": 1.3021857836073665e+19, + "P_10m_W": 167.58266465338914 + }, + { + "set": "stis", + "star": "* alf Tau", + "setting": "E140H", + "n": 6, + "lam": 1271.6736185656164, + "flux": 7.45601952782551e-15, + "plx": 48.94, + "sp": "K5+III", + "L_iso_W": 3.724743507368096e+19, + "P_10m_W": 479.3335540227551 + }, + { + "set": "stis", + "star": "* phi Leo", + "setting": "E140M", + "n": 4, + "lam": 1379.8629071087253, + "flux": 2.7575980602973575e-14, + "plx": 17.2827, + "sp": "A5V", + "L_iso_W": 1.1046508911445076e+21, + "P_10m_W": 16737.364101360392 + }, + { + "set": "stis", + "star": "Kepler-451", + "setting": "E140M", + "n": 3, + "lam": 1379.2513836926792, + "flux": 9.258601411094425e-14, + "plx": 2.441, + "sp": "sdB+dM", + "L_iso_W": 1.8592042096149482e+23, + "P_10m_W": 2814518.364012029 + }, + { + "set": "stis", + "star": "CD-23 14742", + "setting": "E140M", + "n": 7, + "lam": 1379.212966764223, + "flux": 4.371650882122733e-16, + "plx": 336.0266, + "sp": "M3.5Ve", + "L_iso_W": 4.632499934069064e+16, + "P_10m_W": 0.7012424862865021 + }, + { + "set": "stis", + "star": "* iot Hor", + "setting": "E140M", + "n": 4, + "lam": 1379.8868966299772, + "flux": 4.2534671258680055e-15, + "plx": 57.6131, + "sp": "F8V", + "L_iso_W": 1.5332672435005438e+19, + "P_10m_W": 232.32448054409514 + }, + { + "set": "stis", + "star": "HD 147513", + "setting": "E140M", + "n": 2, + "lam": 1378.4302482268968, + "flux": 3.636749692390304e-15, + "plx": 77.5655, + "sp": "G5V", + "L_iso_W": 7.23258394639369e+18, + "P_10m_W": 109.35866714053694 + }, + { + "set": "stis", + "star": "HD 190771", + "setting": "E140M", + "n": 2, + "lam": 1377.7005449954083, + "flux": 3.3846188936380123e-15, + "plx": 52.5334, + "sp": "G2V", + "L_iso_W": 1.467425360246465e+19, + "P_10m_W": 221.64391705655396 + }, + { + "set": "stis", + "star": "HD 167971", + "setting": "E230M", + "n": 2, + "lam": 1917.5754953212804, + "flux": 1.0452636029072575e-13, + "plx": 0.7273, + "sp": "O8Iaf(n)+O4/5", + "L_iso_W": 2.3643726011083062e+24, + "P_10m_W": 69184848.84215839 + }, + { + "set": "stis", + "star": "HD 32309", + "setting": "E140H", + "n": 7, + "lam": 1253.8092191687558, + "flux": 3.0568917964384155e-13, + "plx": 16.5691, + "sp": "B9V", + "L_iso_W": 1.332292224775435e+22, + "P_10m_W": 166668.1239913316 + }, + { + "set": "stis", + "star": "HD 95735", + "setting": "E140M", + "n": 6, + "lam": 1379.192874880273, + "flux": 9.01835303378013e-17, + "plx": 392.7529, + "sp": "M2+V", + "L_iso_W": 6995289563003232.0, + "P_10m_W": 0.10588777973515205 + }, + { + "set": "stis", + "star": "HD 6226", + "setting": "E230M", + "n": 2, + "lam": 2275.171067326264, + "flux": 1.3498046672112949e-11, + "plx": 0.8153, + "sp": "", + "L_iso_W": 2.429703648641296e+26, + "P_10m_W": 10008559017.395563 + }, + { + "set": "stis", + "star": "MAXI J1820+070", + "setting": "E140M", + "n": 3, + "lam": 1378.7787476116146, + "flux": 3.4171335760713434e-14, + "plx": 0.3692, + "sp": "", + "L_iso_W": 2.9995481380502053e+24, + "P_10m_W": 45376932.41818718 + }, + { + "set": "stis", + "star": "GSC 00444-02282", + "setting": "E140M", + "n": 2, + "lam": 1378.5589121227706, + "flux": 5.5197250375786076e-15, + "plx": 0.9344, + "sp": "", + "L_iso_W": 7.56430531193702e+22, + "P_10m_W": 1143957.3842831673 + }, + { + "set": "stis", + "star": "HD 222925", + "setting": "E230H", + "n": 48, + "lam": 2062.8447505018794, + "flux": 1.1786774985789775e-14, + "plx": 2.2202, + "sp": "ApSrEu", + "L_iso_W": 2.861067217407652e+22, + "P_10m_W": 968838.2702692458 + }, + { + "set": "stis", + "star": "HD 29441", + "setting": "E140M", + "n": 3, + "lam": 1379.5639758969216, + "flux": 8.961287875157942e-13, + "plx": 1.5735, + "sp": "B2.5Vne", + "L_iso_W": 4.330661105655941e+24, + "P_10m_W": 65588549.41841704 + }, + { + "set": "stis", + "star": "HD 43544", + "setting": "E140M", + "n": 4, + "lam": 1379.346562091848, + "flux": 5.4056419115933445e-12, + "plx": 3.2307, + "sp": "B2/B3Ve", + "L_iso_W": 6.196854152433477e+24, + "P_10m_W": 93822759.96521825 + }, + { + "set": "stis", + "star": "HD 51354", + "setting": "E140M", + "n": 3, + "lam": 1379.9913529831279, + "flux": 2.0435222462344463e-12, + "plx": 1.7888, + "sp": "B3ne", + "L_iso_W": 7.641402260669887e+24, + "P_10m_W": 115801964.97817978 + }, + { + "set": "stis", + "star": "HD 55606", + "setting": "E140M", + "n": 3, + "lam": 1379.0375007518658, + "flux": 1.9591815669652959e-13, + "plx": 0.9895, + "sp": "B0.5Vnnpe", + "L_iso_W": 2.3941996005896635e+24, + "P_10m_W": 36232862.22266578 + }, + { + "set": "stis", + "star": "HD 60855", + "setting": "E140M", + "n": 3, + "lam": 1379.9688647564396, + "flux": 5.615503133199913e-12, + "plx": 2.0401, + "sp": "B2Ve", + "L_iso_W": 1.6143698097176486e+25, + "P_10m_W": 244642405.78724217 + }, + { + "set": "stis", + "star": "HD 113120", + "setting": "E140M", + "n": 6, + "lam": 1380.303485197984, + "flux": 1.0206246419290541e-11, + "plx": 2.3566, + "sp": "B2IVne", + "L_iso_W": 2.1989308286949953e+25, + "P_10m_W": 333388698.12355185 + }, + { + "set": "stis", + "star": "* kap01 Aps", + "setting": "E140M", + "n": 6, + "lam": 1380.3081722396141, + "flux": 1.52777596513446e-11, + "plx": 3.0798, + "sp": "B2Vnpe", + "L_iso_W": 1.9272227301851311e+25, + "P_10m_W": 292195930.92866874 + }, + { + "set": "stis", + "star": "HD 152478", + "setting": "E140M", + "n": 6, + "lam": 1380.1844776490034, + "flux": 2.204485554179912e-12, + "plx": 3.3089, + "sp": "B3Vnpe", + "L_iso_W": 2.4091133690098604e+24, + "P_10m_W": 36519233.30018649 + }, + { + "set": "stis", + "star": "* iot Ara", + "setting": "E140M", + "n": 5, + "lam": 1380.149540384938, + "flux": 1.622346918250407e-11, + "plx": 3.5613, + "sp": "B1V", + "L_iso_W": 1.5305371440151335e+25, + "P_10m_W": 231999099.94626683 + }, + { + "set": "stis", + "star": "HD 157832", + "setting": "E140M", + "n": 6, + "lam": 1380.1277819792674, + "flux": 1.939959394685996e-12, + "plx": 0.9867, + "sp": "B2ne", + "L_iso_W": 2.3841833373334833e+25, + "P_10m_W": 361383551.030699 + }, + { + "set": "stis", + "star": "* b02 Cyg", + "setting": "E140M", + "n": 4, + "lam": 1379.665780229877, + "flux": 1.8665492905152648e-11, + "plx": 3.8921, + "sp": "B2.5Ve", + "L_iso_W": 1.4743097844552309e+25, + "P_10m_W": 223319511.44248912 + }, + { + "set": "stis", + "star": "HD 194335", + "setting": "E140M", + "n": 3, + "lam": 1378.8242914540126, + "flux": 1.5468610466305905e-11, + "plx": 2.712, + "sp": "B2IIIe", + "L_iso_W": 2.516455168820475e+25, + "P_10m_W": 380712543.3056999 + }, + { + "set": "stis", + "star": "* 8 Lac A", + "setting": "E140M", + "n": 3, + "lam": 1379.4985980892975, + "flux": 1.6008087873007248e-11, + "plx": 1.8914, + "sp": "B1Vne", + "L_iso_W": 5.354142864069729e+25, + "P_10m_W": 810816575.0696771 + }, + { + "set": "stis", + "star": "VB 8", + "setting": "E140M", + "n": 7, + "lam": 1378.671946768918, + "flux": 3.463669839563878e-17, + "plx": 153.9659, + "sp": "M7Ve", + "L_iso_W": 1.748254533133233e+16, + "P_10m_W": 0.2644336236047256 + }, + { + "set": "stis", + "star": "BD-11 160", + "setting": "E230M", + "n": 12, + "lam": 2632.7137306655477, + "flux": 1.4747448076599157e-14, + "plx": 3.7469, + "sp": "", + "L_iso_W": 1.2568687717099288e+22, + "P_10m_W": 693245.9622506056 + }, + { + "set": "stis", + "star": "CD-59 1105", + "setting": "E230M", + "n": 5, + "lam": 2632.901229619615, + "flux": 1.5603216090086416e-14, + "plx": 0.8804, + "sp": "F5ep", + "L_iso_W": 2.408636816743829e+23, + "P_10m_W": 13287111.854758762 + }, + { + "set": "stis", + "star": "LBQS 1145+0145", + "setting": "E230M", + "n": 3, + "lam": 2632.696190196478, + "flux": 6.5140100847675175e-15, + "plx": 6.8534, + "sp": "DB", + "L_iso_W": 1.659409343678149e+21, + "P_10m_W": 91526.14213669019 + }, + { + "set": "stis", + "star": "HD 197481", + "setting": "E140M", + "n": 36, + "lam": 1379.5276238888414, + "flux": 6.684303835137882e-17, + "plx": 102.9432, + "sp": "M1VeBa1", + "L_iso_W": 7.54706549921681e+16, + "P_10m_W": 1.1429548048517237 + }, + { + "set": "stis", + "star": "HD 110058", + "setting": "E140H", + "n": 3, + "lam": 1553.802106419154, + "flux": 2.3609668294280528e-14, + "plx": 7.6878, + "sp": "A0V", + "L_iso_W": 4.779725958805312e+21, + "P_10m_W": 91829.99172051858 + }, + { + "set": "stis", + "star": "HD 131488", + "setting": "E230H", + "n": 3, + "lam": 2459.1494879063343, + "flux": 5.8355612842419e-14, + "plx": 6.5684, + "sp": "A1V", + "L_iso_W": 1.6183807890685495e+22, + "P_10m_W": 778826.4812643466 + }, + { + "set": "stis", + "star": "SK 35", + "setting": "E140M", + "n": 2, + "lam": 1380.0810964547009, + "flux": 6.274530579282041e-14, + "plx": 0.0125, + "sp": "O9.5Iab", + "L_iso_W": 4.8048350090141447e+27, + "P_10m_W": 72824553338.75659 + }, + { + "set": "stis", + "star": "* pi. Men", + "setting": "E140H", + "n": 9, + "lam": 1253.8585066587266, + "flux": 1.9167447351593572e-17, + "plx": 54.6825, + "sp": "G0V", + "L_iso_W": 7.669813801759467e+16, + "P_10m_W": 0.9595597402870277 + }, + { + "set": "stis", + "star": "* zet Oph", + "setting": "E140M", + "n": 15, + "lam": 1380.255794481086, + "flux": 7.20352331420174e-11, + "plx": 7.4088, + "sp": "O9.2IVnn", + "L_iso_W": 1.5702416359103973e+25, + "P_10m_W": 238054164.18248397 + }, + { + "set": "stis", + "star": "HD 134004", + "setting": "E230M", + "n": 5, + "lam": 2632.683057482051, + "flux": 7.65547251941712e-14, + "plx": 2.4248, + "sp": "A1V", + "L_iso_W": 1.5578922619537056e+23, + "P_10m_W": 8592602.337810887 + }, + { + "set": "stis", + "star": "Cl* NGC 346 W 3", + "setting": "E140M", + "n": 2, + "lam": 1379.4549457410653, + "flux": 5.3874999787676993e-14, + "plx": null, + "sp": "O2III(f)", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK 95", + "setting": "E140M", + "n": 3, + "lam": 1378.8967020167006, + "flux": 4.621237276252115e-14, + "plx": 0.0479, + "sp": "B0.7Ia", + "L_iso_W": 2.4099304329025468e+26, + "P_10m_W": 3646347943.6810646 + }, + { + "set": "stis", + "star": "SK 116", + "setting": "E140M", + "n": 2, + "lam": 1379.0032489515806, + "flux": 4.9748861723641066e-14, + "plx": null, + "sp": "O9.2Iab", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK 159", + "setting": "E140M", + "n": 2, + "lam": 1379.6851544635658, + "flux": 1.4073273396470987e-13, + "plx": null, + "sp": "B0.2Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK 68", + "setting": "E230M", + "n": 2, + "lam": 1917.4963974255957, + "flux": 7.145621240448596e-14, + "plx": null, + "sp": "B2.5Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK 81", + "setting": "E230M", + "n": 4, + "lam": 1917.4097943357037, + "flux": 5.393508651219009e-14, + "plx": null, + "sp": "B2.5Ib", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "BI 272", + "setting": "E140M", + "n": 3, + "lam": 1379.4218589398838, + "flux": 4.7258144454445626e-14, + "plx": 0.1036, + "sp": "O7II", + "L_iso_W": 5.268347577841323e+25, + "P_10m_W": 797735213.7050432 + }, + { + "set": "stis", + "star": "BI 37", + "setting": "E140M", + "n": 4, + "lam": 1379.6120108082287, + "flux": 4.119908388508099e-14, + "plx": null, + "sp": "O8.5Iaf", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -67 118", + "setting": "E140M", + "n": 2, + "lam": 1379.5384308863236, + "flux": 5.6536114345050875e-14, + "plx": 0.1417, + "sp": "O7V", + "L_iso_W": 3.3690194730063366e+25, + "P_10m_W": 510224447.5669461 + }, + { + "set": "stis", + "star": "SK -68 16", + "setting": "E140M", + "n": 4, + "lam": 1378.8105432234975, + "flux": 4.8379849320851875e-14, + "plx": 0.0133, + "sp": "O7III", + "L_iso_W": 3.2724912538998516e+27, + "P_10m_W": 49508278093.63148 + }, + { + "set": "stis", + "star": "Brey 77", + "setting": "E140M", + "n": 4, + "lam": 1378.8959773917888, + "flux": 3.053291928565485e-14, + "plx": null, + "sp": "O2If*", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "[L72] LH 114-7", + "setting": "E140M", + "n": 2, + "lam": 1379.2422704066407, + "flux": 4.989836254525635e-14, + "plx": 0.6128, + "sp": "O2III(f*)+OV", + "L_iso_W": 1.5898862226472932e+24, + "P_10m_W": 24067850.18096016 + }, + { + "set": "stis", + "star": "SK -67 108", + "setting": "E140M", + "n": 2, + "lam": 1379.5620766670413, + "flux": 7.437073098367337e-14, + "plx": 0.0311, + "sp": "O4-5III", + "L_iso_W": 9.20022687675174e+26, + "P_10m_W": 13933851182.91784 + }, + { + "set": "stis", + "star": "Brey 10a", + "setting": "E140M", + "n": 3, + "lam": 1379.2442926591382, + "flux": 4.6034851757436736e-14, + "plx": 0.0736, + "sp": "O2If*/WN5", + "L_iso_W": 1.0168300805570918e+26, + "P_10m_W": 1539291645.806162 + }, + { + "set": "stis", + "star": "RMC 140", + "setting": "E140M", + "n": 2, + "lam": 1380.9892889774212, + "flux": 3.392243457359605e-14, + "plx": null, + "sp": "WN7+WC4/5pec", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 149026", + "setting": "E230M", + "n": 2, + "lam": 2631.995038947293, + "flux": 5.89981096249493e-14, + "plx": 13.1203, + "sp": "G0IV", + "L_iso_W": 4.1007928410652153e+21, + "P_10m_W": 226062.27785240265 + }, + { + "set": "stis", + "star": "HD 195689", + "setting": "E140M", + "n": 31, + "lam": 1380.9470466977332, + "flux": 1.481800106134112e-13, + "plx": 4.8258, + "sp": "A0", + "L_iso_W": 7.613217696450058e+22, + "P_10m_W": 1155346.9856601218 + }, + { + "set": "stis", + "star": "HD 201585", + "setting": "E230M", + "n": 10, + "lam": 2632.757371989307, + "flux": 1.336408186145103e-13, + "plx": 5.4889, + "sp": "A8", + "L_iso_W": 5.307448087970857e+22, + "P_10m_W": 2927504.4643702907 + }, + { + "set": "stis", + "star": "HD 269698", + "setting": "E140M", + "n": 42, + "lam": 1380.259831143403, + "flux": 8.452545536825032e-14, + "plx": null, + "sp": "O4Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 152249", + "setting": "E230H", + "n": 3, + "lam": 2157.151153581487, + "flux": 1.4618225278698234e-13, + "plx": 0.6463, + "sp": "OC9Iab", + "L_iso_W": 4.187391851834107e+24, + "P_10m_W": 155058255.9254185 + }, + { + "set": "stis", + "star": "HD 192639", + "setting": "E230H", + "n": 2, + "lam": 2258.0206848879125, + "flux": 4.576731985829654e-14, + "plx": 0.5246, + "sp": "O7.5Iabf", + "L_iso_W": 1.98983091203169e+24, + "P_10m_W": 80735054.23605378 + }, + { + "set": "stis", + "star": "HD 206267", + "setting": "E230H", + "n": 2, + "lam": 2183.7774619791944, + "flux": 1.4481202567249175e-13, + "plx": 1.3604, + "sp": "O6.0V((f))+O9:V", + "L_iso_W": 9.362431368992592e+23, + "P_10m_W": 35530027.37158896 + }, + { + "set": "stis", + "star": "* alf Sco", + "setting": "E140H", + "n": 12, + "lam": 1512.5065899385868, + "flux": 2.8346250642633388e-14, + "plx": 5.89, + "sp": "M1.5Iab+B2Vn", + "L_iso_W": 9.776475097489132e+21, + "P_10m_W": 177978.27182002307 + }, + { + "set": "stis", + "star": "RMC 109", + "setting": "E230M", + "n": 3, + "lam": 1917.4558590077172, + "flux": 6.003679339035804e-14, + "plx": 0.78, + "sp": "B5Ia", + "L_iso_W": 1.180716270274207e+24, + "P_10m_W": 34545098.38248706 + }, + { + "set": "stis", + "star": "HD 268729", + "setting": "E230M", + "n": 3, + "lam": 1917.474088014262, + "flux": 6.786398817730665e-14, + "plx": 0.03, + "sp": "B5Ia+", + "L_iso_W": 9.022234980522705e+26, + "P_10m_W": 26397529109.777386 + }, + { + "set": "stis", + "star": "SK -69 140", + "setting": "E230M", + "n": 2, + "lam": 1917.4624886720735, + "flux": 6.35331755282993e-14, + "plx": null, + "sp": "B1Ib", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 32109", + "setting": "E140M", + "n": 3, + "lam": 1380.6068644476495, + "flux": 3.883026700545131e-14, + "plx": null, + "sp": "WN4b", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 32402", + "setting": "E140M", + "n": 2, + "lam": 1379.1091987689895, + "flux": 4.564466214310764e-14, + "plx": 0.0283, + "sp": "WC", + "L_iso_W": 6.819215117428848e+26, + "P_10m_W": 10321001408.339216 + }, + { + "set": "stis", + "star": "HD 37680", + "setting": "E140M", + "n": 3, + "lam": 1379.5585961969687, + "flux": 3.863485923253096e-14, + "plx": 0.0201, + "sp": "WC", + "L_iso_W": 1.144206694549352e+27, + "P_10m_W": 17329056742.215595 + }, + { + "set": "stis", + "star": "HD 245770", + "setting": "E140M", + "n": 2, + "lam": 1380.1146699875635, + "flux": 8.338250262155266e-14, + "plx": 0.5245, + "sp": "O9/B0III/Ve", + "L_iso_W": 3.626612931348814e+24, + "P_10m_W": 54969487.29138601 + }, + { + "set": "stis", + "star": "SK -70 60", + "setting": "E140M", + "n": 8, + "lam": 1380.1457641197162, + "flux": 2.335660654901917e-14, + "plx": 0.0022, + "sp": "O4V", + "L_iso_W": 5.7740647316094935e+28, + "P_10m_W": 875228997545.9928 + }, + { + "set": "stis", + "star": "SK -67 69", + "setting": "E140M", + "n": 2, + "lam": 1380.4600636694518, + "flux": 5.3120102496759576e-14, + "plx": 0.0373, + "sp": "O3III", + "L_iso_W": 4.568340913441357e+26, + "P_10m_W": 6927815865.104432 + }, + { + "set": "stis", + "star": "SWIFT J1727.8-1613", + "setting": "E140M", + "n": 6, + "lam": 1380.0899723725543, + "flux": 1.294198561981287e-14, + "plx": 0.0294, + "sp": "", + "L_iso_W": 1.7915276574172766e+26, + "P_10m_W": 2715366487.959435 + }, + { + "set": "stis", + "star": "HD 269889", + "setting": "E140M", + "n": 2, + "lam": 1380.0866683723925, + "flux": 1.1042603524419556e-13, + "plx": 0.0052, + "sp": "O9Ia", + "L_iso_W": 4.886321712098249e+28, + "P_10m_W": 740602057824.556 + }, + { + "set": "stis", + "star": "SK -68 41", + "setting": "E140M", + "n": 2, + "lam": 1380.2002476233956, + "flux": 9.931403165451991e-14, + "plx": 0.0087, + "sp": "B0.7Ia", + "L_iso_W": 1.5699628370361588e+28, + "P_10m_W": 237992740628.76505 + }, + { + "set": "stis", + "star": "SK -70 32", + "setting": "E140M", + "n": 6, + "lam": 1380.5542367962494, + "flux": 6.198445727128125e-15, + "plx": null, + "sp": "OB", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -71 8", + "setting": "E140M", + "n": 3, + "lam": 1380.781248155421, + "flux": 3.633002957670972e-14, + "plx": null, + "sp": "B0II:", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 268809", + "setting": "E140M", + "n": 3, + "lam": 1380.2819712649236, + "flux": 5.272838631117605e-14, + "plx": null, + "sp": "B0.7Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "W61 3-8", + "setting": "E140M", + "n": 2, + "lam": 1379.519715370507, + "flux": 4.627855841771368e-14, + "plx": 0.0214, + "sp": "WN9h", + "L_iso_W": 1.2091203776284621e+27, + "P_10m_W": 18311144913.267216 + }, + { + "set": "stis", + "star": "LHA 120-S 28", + "setting": "E140M", + "n": 2, + "lam": 1379.153715467974, + "flux": 5.3784433433788366e-14, + "plx": null, + "sp": "WN6h", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "AzV 261", + "setting": "E230M", + "n": 8, + "lam": 1917.397499527444, + "flux": 4.581445969700747e-14, + "plx": null, + "sp": "B2(Ib)e", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK 94", + "setting": "E140M", + "n": 3, + "lam": 1380.4754779150944, + "flux": 5.1198098638722904e-14, + "plx": 0.0026, + "sp": "B1Ia", + "L_iso_W": 9.062007177684648e+28, + "P_10m_W": 1374269571740.3267 + }, + { + "set": "stis", + "star": "SK 46", + "setting": "E140M", + "n": 3, + "lam": 1380.192786418405, + "flux": 4.1295427661819704e-14, + "plx": 0.0321, + "sp": "B1Iab", + "L_iso_W": 4.795226971045508e+26, + "P_10m_W": 7269069325.578524 + }, + { + "set": "stis", + "star": "LIN 166", + "setting": "E140M", + "n": 5, + "lam": 1380.1646492214668, + "flux": 2.581311192544486e-14, + "plx": null, + "sp": "B0.7II", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 130298", + "setting": "E140M", + "n": 8, + "lam": 1380.1901026644814, + "flux": 4.483436992172601e-14, + "plx": 0.3918, + "sp": "O6.5III(n)(f)", + "L_iso_W": 3.494616092809177e+24, + "P_10m_W": 52974568.27131539 + }, + { + "set": "stis", + "star": "HD 154368", + "setting": "E140H", + "n": 2, + "lam": 1254.0624199747317, + "flux": 6.043814772901417e-14, + "plx": 0.9396, + "sp": "O9.5Iab", + "L_iso_W": 8.1911031444226e+23, + "P_10m_W": 10251108.685976189 + }, + { + "set": "stis", + "star": "BD+01 316", + "setting": "E230M", + "n": 14, + "lam": 2632.6933015035675, + "flux": 1.000816075330855e-14, + "plx": 5.2899, + "sp": "F7", + "L_iso_W": 4.279338224868608e+21, + "P_10m_W": 236030.0432199081 + }, + { + "set": "stis", + "star": "HD 71336", + "setting": "E140H", + "n": 2, + "lam": 1421.87245621881, + "flux": 3.4666033020645087e-13, + "plx": 1.5839, + "sp": "B3III/IV", + "L_iso_W": 1.6533541651181356e+24, + "P_10m_W": 26599735.154046576 + }, + { + "set": "stis", + "star": "HD 72088", + "setting": "E140H", + "n": 3, + "lam": 1584.726526943656, + "flux": 1.2528282053545396e-13, + "plx": 1.2817, + "sp": "B3III/IV", + "L_iso_W": 9.125066091171655e+23, + "P_10m_W": 18236219.461693943 + }, + { + "set": "stis", + "star": "HD 72089", + "setting": "E140H", + "n": 2, + "lam": 1437.2736990278886, + "flux": 3.152415704417803e-13, + "plx": 1.7594, + "sp": "B5II/III", + "L_iso_W": 1.2185169426693065e+24, + "P_10m_W": 20030909.321020845 + }, + { + "set": "stis", + "star": "HD 72537", + "setting": "E140H", + "n": 2, + "lam": 1437.272461507935, + "flux": 6.806630490579916e-13, + "plx": 3.1628, + "sp": "B3V", + "L_iso_W": 8.141529102371951e+23, + "P_10m_W": 13383642.41314021 + }, + { + "set": "stis", + "star": "HD 72127A", + "setting": "E140H", + "n": 2, + "lam": 1436.877580691218, + "flux": 1.1350874992677826e-11, + "plx": null, + "sp": "B2IIIk", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "HD 72127B", + "setting": "E140H", + "n": 2, + "lam": 1289.3996567434533, + "flux": 3.802806964750857e-12, + "plx": 2.0509, + "sp": "B2.5V", + "L_iso_W": 1.0817641271337688e+25, + "P_10m_W": 143119171.01250172 + }, + { + "set": "stis", + "star": "V* HP Lib", + "setting": "E140M", + "n": 3, + "lam": 1379.7194930488793, + "flux": 3.092391927719431e-14, + "plx": 3.5674, + "sp": "Bpec", + "L_iso_W": 2.9074227207500636e+22, + "P_10m_W": 440433.0656569309 + }, + { + "set": "stis", + "star": "2dFS 3780", + "setting": "E140M", + "n": 3, + "lam": 1379.466999094629, + "flux": 3.2034610592896554e-14, + "plx": null, + "sp": "O9.5III", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "AzV 410", + "setting": "E140M", + "n": 4, + "lam": 1380.0513749998688, + "flux": 4.0982866700215666e-14, + "plx": 0.0362, + "sp": "B0III", + "L_iso_W": 3.741988577368432e+26, + "P_10m_W": 5671306274.973666 + }, + { + "set": "stis", + "star": "SK 187", + "setting": "E140M", + "n": 2, + "lam": 1379.463401751486, + "flux": 5.4650726739482537e-14, + "plx": null, + "sp": "O8.5III:", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -65 2", + "setting": "E140M", + "n": 3, + "lam": 1380.384602762623, + "flux": 4.105742254744436e-14, + "plx": 0.005, + "sp": "B1Ib", + "L_iso_W": 1.9650288848622153e+28, + "P_10m_W": 297960906867.0149 + }, + { + "set": "stis", + "star": "SK -67 216", + "setting": "E140M", + "n": 3, + "lam": 1380.0251128049895, + "flux": 4.3916201224030255e-14, + "plx": 0.0189, + "sp": "B0.5Ib", + "L_iso_W": 1.4710194770464957e+27, + "P_10m_W": 22293719780.53537 + }, + { + "set": "stis", + "star": "SK -70 13", + "setting": "E140M", + "n": 2, + "lam": 1379.913131176329, + "flux": 6.390881812859251e-14, + "plx": null, + "sp": "O9.7Iab", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "LHA 120-S 6", + "setting": "E140M", + "n": 3, + "lam": 1380.8001043431782, + "flux": 3.886624090949084e-14, + "plx": null, + "sp": "O6.5V", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "BRRG 75", + "setting": "E140M", + "n": 3, + "lam": 1380.4036358042067, + "flux": 4.518727179348906e-14, + "plx": null, + "sp": "", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -66 18", + "setting": "E140M", + "n": 2, + "lam": 1380.1126136993544, + "flux": 4.7954541067766954e-14, + "plx": null, + "sp": "O6.5III((f))", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "SK -70 69", + "setting": "E140M", + "n": 3, + "lam": 1379.6670243237131, + "flux": 4.0210725388117415e-14, + "plx": 0.0256, + "sp": "O3V(f)", + "L_iso_W": 7.341405994939072e+26, + "P_10m_W": 11120336947.71695 + }, + { + "set": "stis", + "star": "SK -66 100", + "setting": "E140M", + "n": 2, + "lam": 1379.8425521217127, + "flux": 5.466269609451316e-14, + "plx": 0.0271, + "sp": "O6II(f)", + "L_iso_W": 8.905734252381997e+26, + "P_10m_W": 13493323577.529856 + }, + { + "set": "stis", + "star": "SK -67 261", + "setting": "E140M", + "n": 3, + "lam": 1379.440130753082, + "flux": 5.2670544873429004e-14, + "plx": null, + "sp": "B0Ib", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "CD-52 112", + "setting": "E230H", + "n": 30, + "lam": 2157.270503229872, + "flux": 1.1367168172506555e-14, + "plx": 6.7194, + "sp": "F7Vwl", + "L_iso_W": 3.0123717090168443e+21, + "P_10m_W": 111559.8461974859 + }, + { + "set": "stis", + "star": "CD-23 12296", + "setting": "E230H", + "n": 33, + "lam": 2157.0399574844473, + "flux": 1.2561600590859377e-14, + "plx": 6.5603, + "sp": "CEMP", + "L_iso_W": 3.492326549569546e+21, + "P_10m_W": 129306.79929868638 + }, + { + "set": "stis", + "star": "V* FU Ori", + "setting": "E230M", + "n": 4, + "lam": 2032.6956697120677, + "flux": 1.6291149702401662e-14, + "plx": 2.4538, + "sp": "F0Iab", + "L_iso_W": 3.2373576065717306e+22, + "P_10m_W": 1064450.6591690874 + }, + { + "set": "stis", + "star": "ATO J300.8707+08.6463", + "setting": "E140M", + "n": 7, + "lam": 1379.9125698484072, + "flux": 4.6216710682942827e-14, + "plx": 2.589, + "sp": "", + "L_iso_W": 8.24996672672502e+22, + "P_10m_W": 1250102.0702799435 + }, + { + "set": "stis", + "star": "HD 215227", + "setting": "E140M", + "n": 4, + "lam": 1379.8527409294727, + "flux": 1.8176872964796705e-13, + "plx": 0.486, + "sp": "B1.5-2III", + "L_iso_W": 9.207970060587575e+24, + "P_10m_W": 139514554.1975035 + }, + { + "set": "stis", + "star": "HD 194598", + "setting": "E230H", + "n": 3, + "lam": 2744.1245017008514, + "flux": 2.6801923522887834e-14, + "plx": 18.4392, + "sp": "F8", + "L_iso_W": 9.431897639093161e+20, + "P_10m_W": 56519.308268374545 + }, + { + "set": "stis", + "star": "HD 111980", + "setting": "E230H", + "n": 3, + "lam": 2744.4972624963552, + "flux": 2.377380716397503e-14, + "plx": 12.9277, + "sp": "F7V", + "L_iso_W": 1.7020545312441518e+21, + "P_10m_W": 102020.91397923008 + }, + { + "set": "stis", + "star": "HD 284248", + "setting": "E230H", + "n": 4, + "lam": 2880.3805376466316, + "flux": 2.0787913719422534e-14, + "plx": 11.3783, + "sp": "sdG0", + "L_iso_W": 1.9212036819588054e+21, + "P_10m_W": 126842.0585966274 + }, + { + "set": "stis", + "star": "NVSS J143622+584741", + "setting": "E140H", + "n": 16, + "lam": 1289.4623325311904, + "flux": 9.133192051849116e-15, + "plx": null, + "sp": "", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "EC 22536-5304", + "setting": "E140M", + "n": 3, + "lam": 1379.8302461927508, + "flux": 5.76620762867328e-14, + "plx": 1.3682, + "sp": "sdB0.2VIIHe23", + "L_iso_W": 3.685601442338006e+23, + "P_10m_W": 5584056.7881356105 + }, + { + "set": "stis", + "star": "HD 127493", + "setting": "E140H", + "n": 2, + "lam": 1253.7321454974956, + "flux": 2.300825351417769e-13, + "plx": 5.6924, + "sp": "sdOHe", + "L_iso_W": 8.495913832397525e+22, + "P_10m_W": 1062697.7413090672 + }, + { + "set": "stis", + "star": "GALEX J031437.3+313639", + "setting": "E140M", + "n": 2, + "lam": 1379.5500932358582, + "flux": 9.786440970150065e-14, + "plx": 8.6431, + "sp": "DA", + "L_iso_W": 1.5674834725204585e+22, + "P_10m_W": 237393.08053132292 + }, + { + "set": "stis", + "star": "UCAC4 429-006270", + "setting": "E140M", + "n": 2, + "lam": 1379.8720946566896, + "flux": 6.63023919602535e-14, + "plx": 7.5346, + "sp": "", + "L_iso_W": 1.3974171183514607e+22, + "P_10m_W": 211735.58780517732 + }, + { + "set": "stis", + "star": "FBS 0706+407", + "setting": "E140M", + "n": 2, + "lam": 1380.2392949272744, + "flux": 7.016690777789031e-14, + "plx": 4.1475, + "sp": "sdB", + "L_iso_W": 4.880640432967126e+22, + "P_10m_W": 739904.5948785483 + }, + { + "set": "stis", + "star": "Gaia DR3 866719456827107712", + "setting": "E140M", + "n": 2, + "lam": 1378.8918558834712, + "flux": 7.277799652528082e-14, + "plx": 4.3445, + "sp": "DA:", + "L_iso_W": 4.61357683536726e+22, + "P_10m_W": 698052.8537406932 + }, + { + "set": "stis", + "star": "UCAC4 524-042847", + "setting": "E140M", + "n": 2, + "lam": 1379.7020244807577, + "flux": 7.638047228227193e-14, + "plx": 6.6431, + "sp": "DOZ", + "L_iso_W": 2.07089473714101e+22, + "P_10m_W": 313703.0661184592 + }, + { + "set": "stis", + "star": "GALEX J194511.4-445954", + "setting": "E140M", + "n": 2, + "lam": 1380.4287985960311, + "flux": 8.053822483760001e-14, + "plx": 3.819, + "sp": "DAO", + "L_iso_W": 6.607238767162624e+22, + "P_10m_W": 1001931.7965085523 + }, + { + "set": "stis", + "star": "PHL 497", + "setting": "E140M", + "n": 2, + "lam": 1380.0728925177987, + "flux": 6.770662959875815e-14, + "plx": 5.7841, + "sp": "DA", + "L_iso_W": 2.4214576333187797e+22, + "P_10m_W": 367004.22327547916 + }, + { + "set": "stis", + "star": "FBS 0702+616", + "setting": "E140M", + "n": 2, + "lam": 1379.842568588428, + "flux": 9.522550265620458e-14, + "plx": 6.3286, + "sp": "DA", + "L_iso_W": 2.844822964122854e+22, + "P_10m_W": 431026.9833350569 + }, + { + "set": "stis", + "star": "PG 1141+078", + "setting": "E140M", + "n": 2, + "lam": 1379.622102285846, + "flux": 6.55074919198915e-14, + "plx": 5.4206, + "sp": "DA.8", + "L_iso_W": 2.6675558166067967e+22, + "P_10m_W": 404039.60533613415 + }, + { + "set": "stis", + "star": "UCAC4 712-065016", + "setting": "E140M", + "n": 2, + "lam": 1379.2570468614695, + "flux": 7.824731348731638e-14, + "plx": 7.7728, + "sp": "DOZ", + "L_iso_W": 1.549643198194587e+22, + "P_10m_W": 234591.50064839298 + }, + { + "set": "stis", + "star": "RX J2124.9+2826", + "setting": "E140M", + "n": 2, + "lam": 1380.3611660484194, + "flux": 7.613481375702713e-14, + "plx": 8.3332, + "sp": "DA", + "L_iso_W": 1.3118281449945004e+22, + "P_10m_W": 198908.1351683574 + }, + { + "set": "stis", + "star": "Cl* NGC 7092 PLAT 6931", + "setting": "E140M", + "n": 2, + "lam": 1380.4883214092213, + "flux": 4.785134093869322e-14, + "plx": 2.0024, + "sp": "", + "L_iso_W": 1.4279391614863535e+23, + "P_10m_W": 2165535.533335218 + }, + { + "set": "stis", + "star": "EC 11575-1845", + "setting": "E140M", + "n": 2, + "lam": 1380.1554440074538, + "flux": 9.718118895492878e-14, + "plx": 2.1382, + "sp": "sdO+dMe", + "L_iso_W": 2.5433306364354712e+23, + "P_10m_W": 3855218.2071915916 + }, + { + "set": "stis", + "star": "FBS 0212+385", + "setting": "E140M", + "n": 2, + "lam": 1379.0513924270238, + "flux": 7.668132565668006e-14, + "plx": 3.2225, + "sp": "sdB/sdO", + "L_iso_W": 8.8352944024028e+22, + "P_10m_W": 1337125.1683613227 + }, + { + "set": "stis", + "star": "MR 35", + "setting": "E230H", + "n": 2, + "lam": 2625.808716111826, + "flux": 4.8813509472740424e-14, + "plx": 0.0991, + "sp": "LBV", + "L_iso_W": 5.947165011090477e+25, + "P_10m_W": 3263069289.08554 + }, + { + "set": "stis", + "star": "V* AG Car", + "setting": "E140H", + "n": 5, + "lam": 1415.032630704307, + "flux": 4.115492021122378e-14, + "plx": 0.1925, + "sp": "WN11h", + "L_iso_W": 1.3288548976676938e+25, + "P_10m_W": 211738877.7966493 + }, + { + "set": "stis", + "star": "HD 90177", + "setting": "E230H", + "n": 3, + "lam": 2744.254076239302, + "flux": 2.8307166755913496e-14, + "plx": 0.2032, + "sp": "LBV", + "L_iso_W": 8.202878164733703e+24, + "P_10m_W": 491592256.19560105 + }, + { + "set": "stis", + "star": "PGMW 3204", + "setting": "E140M", + "n": 5, + "lam": 1379.6373056264608, + "flux": 2.7689337438927903e-14, + "plx": 0.2375, + "sp": "O6.5V((f))", + "L_iso_W": 5.873576114012169e+24, + "P_10m_W": 88965699.03403492 + }, + { + "set": "stis", + "star": "[ELS2006] N11 046", + "setting": "E140M", + "n": 3, + "lam": 1380.1530420818497, + "flux": 3.0615377762984784e-14, + "plx": 0.7458, + "sp": "O9.5V", + "L_iso_W": 6.585854467456523e+23, + "P_10m_W": 9982900.892073972 + }, + { + "set": "stis", + "star": "[L72] LH 9-73", + "setting": "E140M", + "n": 3, + "lam": 1380.2305855481, + "flux": 3.203138835852474e-14, + "plx": 0.0061, + "sp": "O7.5V", + "L_iso_W": 1.0299908295585452e+28, + "P_10m_W": 156144534770.7163 + }, + { + "set": "stis", + "star": "HD 271366", + "setting": "E140M", + "n": 2, + "lam": 1379.5120828158301, + "flux": 6.967306439434422e-14, + "plx": 0.0216, + "sp": "O7.5Ifp", + "L_iso_W": 1.7867947800143872e+27, + "P_10m_W": 27059254569.504402 + }, + { + "set": "stis", + "star": "AzV 238", + "setting": "E140M", + "n": 5, + "lam": 1379.8258818127083, + "flux": 3.222846713791009e-14, + "plx": 0.034, + "sp": "O9.7III", + "L_iso_W": 3.3357929069599146e+26, + "P_10m_W": 5054029710.517989 + }, + { + "set": "stis", + "star": "SK 169", + "setting": "E140M", + "n": 5, + "lam": 1379.764588984824, + "flux": 3.518046768670876e-14, + "plx": null, + "sp": "B0.5III", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "[ELS2006] N11 026", + "setting": "E140M", + "n": 2, + "lam": 1379.8813365213744, + "flux": 3.536995252031843e-14, + "plx": 0.0311, + "sp": "O2.5III(f*)", + "L_iso_W": 4.3755330020664204e+26, + "P_10m_W": 6629863411.125866 + }, + { + "set": "stis", + "star": "[L72] LH 58-496", + "setting": "E140M", + "n": 3, + "lam": 1379.555986553652, + "flux": 4.4289351830160737e-14, + "plx": 0.0346, + "sp": "O5V(f)", + "L_iso_W": 4.4265399887966084e+26, + "P_10m_W": 6703987382.22782 + }, + { + "set": "stis", + "star": "BD+38 2182", + "setting": "E140H", + "n": 2, + "lam": 1350.9479740348922, + "flux": 5.691225535901305e-14, + "plx": 0.2363, + "sp": "B3V", + "L_iso_W": 1.219538789251639e+25, + "P_10m_W": 177118123.73259392 + }, + { + "set": "stis", + "star": "HD 260655", + "setting": "E140M", + "n": 2, + "lam": 1380.5579216944475, + "flux": 1.199670869744675e-14, + "plx": 100.0232, + "sp": "M0.0V", + "L_iso_W": 1.434755470339601e+19, + "P_10m_W": 217.60921879198077 + }, + { + "set": "stis", + "star": "V* RU Lup", + "setting": "E140M", + "n": 30, + "lam": 1379.7465460912417, + "flux": 3.671638964034528e-17, + "plx": 6.3489, + "sp": "K7/M0e", + "L_iso_W": 1.089883961726488e+19, + "P_10m_W": 165.1083467797379 + }, + { + "set": "stis", + "star": "HD 41335", + "setting": "E140M", + "n": 3, + "lam": 1380.041907951261, + "flux": 1.6902593487183873e-11, + "plx": 2.0004, + "sp": "B1V", + "L_iso_W": 5.054019578294538e+25, + "P_10m_W": 765969727.2285348 + }, + { + "set": "stis", + "star": "* kap Dra", + "setting": "E140M", + "n": 3, + "lam": 1380.834713555404, + "flux": 1.938648244624061e-11, + "plx": 7.0093, + "sp": "B6IIIe", + "L_iso_W": 4.7213585691065916e+24, + "P_10m_W": 71637515.19969012 + }, + { + "set": "stis", + "star": "HD 161306", + "setting": "E140M", + "n": 2, + "lam": 1379.3380652322662, + "flux": 1.2786708453266262e-13, + "plx": 2.1838, + "sp": "B3/5Vnne", + "L_iso_W": 3.2081177841844804e+23, + "P_10m_W": 4857154.116014079 + }, + { + "set": "stis", + "star": "* 7 Vul", + "setting": "E140M", + "n": 3, + "lam": 1379.974015265023, + "flux": 2.0772464587458325e-12, + "plx": 3.5826, + "sp": "B5Vn", + "L_iso_W": 1.9364605290622496e+24, + "P_10m_W": 29345438.44997097 + }, + { + "set": "stis", + "star": "* 60 Cyg", + "setting": "E140M", + "n": 3, + "lam": 1380.116059179808, + "flux": 2.1137341023448138e-11, + "plx": 2.6621, + "sp": "B1Ve", + "L_iso_W": 3.568772703255824e+25, + "P_10m_W": 540928972.5676411 + }, + { + "set": "stis", + "star": "CD-38 15670", + "setting": "E230M", + "n": 17, + "lam": 2632.8460559789173, + "flux": 7.118505143573481e-15, + "plx": 12.3381, + "sp": "G7V", + "L_iso_W": 5.5951211735592016e+20, + "P_10m_W": 30863.88309237889 + }, + { + "set": "stis", + "star": "HD 73752", + "setting": "E140M", + "n": 4, + "lam": 1379.754431117262, + "flux": 4.38411821485208e-15, + "plx": 50.9663, + "sp": "G3V+K0V", + "L_iso_W": 2.019450947520062e+19, + "P_10m_W": 305.9335030547086 + }, + { + "set": "stis", + "star": "HD 52698", + "setting": "E140M", + "n": 2, + "lam": 1378.584376618233, + "flux": 3.4452630601231437e-15, + "plx": 67.8007, + "sp": "K1V", + "L_iso_W": 8.967498182255482e+18, + "P_10m_W": 135.62137339242852 + }, + { + "set": "stis", + "star": "HD 57095", + "setting": "E140M", + "n": 2, + "lam": 1380.4450594023488, + "flux": 5.4860857105614985e-15, + "plx": 68.52, + "sp": "K1V+K4V", + "L_iso_W": 1.3981222424512934e+19, + "P_10m_W": 212.01839100447248 + }, + { + "set": "stis", + "star": "HD 27274", + "setting": "E140M", + "n": 2, + "lam": 1379.4901892929029, + "flux": 1.9308098255855493e-15, + "plx": 76.6638, + "sp": "K4.5Vk:", + "L_iso_W": 3.9307559540434816e+18, + "P_10m_W": 59.52555444688337 + }, + { + "set": "stis", + "star": "* sig Dra", + "setting": "E140M", + "n": 2, + "lam": 1377.53630850623, + "flux": 5.614978692761523e-15, + "plx": 173.4939, + "sp": "K0V", + "L_iso_W": 2.2320142254205806e+18, + "P_10m_W": 33.70491245232201 + }, + { + "set": "stis", + "star": "2MASS J08022777+5631555", + "setting": "E230M", + "n": 10, + "lam": 2488.501444547909, + "flux": 4.868909576592796e-15, + "plx": 15.9494, + "sp": "DA", + "L_iso_W": 2.290130728919832e+20, + "P_10m_W": 11285.640308390708 + }, + { + "set": "stis", + "star": "* gam Tri", + "setting": "E140H", + "n": 2, + "lam": 1554.0761368314502, + "flux": 8.300254759048566e-13, + "plx": 27.9795, + "sp": "A1Vnn", + "L_iso_W": 1.26861192311003e+22, + "P_10m_W": 243816.73341326864 + }, + { + "set": "stis", + "star": "HD 36546", + "setting": "E140H", + "n": 2, + "lam": 1554.1862789240363, + "flux": 1.8966141081648917e-13, + "plx": 9.9821, + "sp": "B8", + "L_iso_W": 2.2774686591917276e+22, + "P_10m_W": 437772.71131514275 + }, + { + "set": "stis", + "star": "HD 158352", + "setting": "E140H", + "n": 5, + "lam": 1554.0440055701285, + "flux": 1.777024306886919e-14, + "plx": 15.6711, + "sp": "A8Vp", + "L_iso_W": 8.657882140754358e+20, + "P_10m_W": 16639.046307673736 + }, + { + "set": "stis", + "star": "HD 143675", + "setting": "E140H", + "n": 2, + "lam": 1554.307938015424, + "flux": 1.0268979838043843e-14, + "plx": 7.3692, + "sp": "A5IV/V", + "L_iso_W": 2.2625796638540316e+21, + "P_10m_W": 43497.88545945409 + }, + { + "set": "stis", + "star": "HD 98363", + "setting": "E140H", + "n": 3, + "lam": 1554.1282986378387, + "flux": 1.4724126291357042e-14, + "plx": 7.288, + "sp": "A2V", + "L_iso_W": 3.31688237731511e+21, + "P_10m_W": 63752.01907998296 + }, + { + "set": "stis", + "star": "SB 744", + "setting": "E140M", + "n": 3, + "lam": 1380.2127069656703, + "flux": 1.024770124417883e-13, + "plx": 2.1758, + "sp": "sdO7He1+F/G", + "L_iso_W": 2.590035853153962e+23, + "P_10m_W": 3926340.4549078764 + }, + { + "set": "stis", + "star": "TYC 8216-799-1", + "setting": "E140M", + "n": 2, + "lam": 1379.7520040334016, + "flux": 1.8194122403196574e-13, + "plx": 0.4107, + "sp": "", + "L_iso_W": 1.2906217255588578e+25, + "P_10m_W": 195519993.68308735 + }, + { + "set": "stis", + "star": "UCAC4 108-030787", + "setting": "E140M", + "n": 2, + "lam": 1380.0424149986297, + "flux": 4.8545458576450864e-14, + "plx": 0.5457, + "sp": "", + "L_iso_W": 1.9505539433734438e+24, + "P_10m_W": 29561942.66143059 + }, + { + "set": "stis", + "star": "UCAC4 318-042721", + "setting": "E140M", + "n": 4, + "lam": 1380.2361621693776, + "flux": 2.881286347694454e-14, + "plx": 0.6585, + "sp": "sdBOHe", + "L_iso_W": 7.950457637722322e+23, + "P_10m_W": 12052831.005955853 + }, + { + "set": "stis", + "star": "PG 1355-064", + "setting": "E140M", + "n": 2, + "lam": 1379.9115274821277, + "flux": 9.618680858179173e-14, + "plx": 0.7717, + "sp": "sdO2VIIIHe40", + "L_iso_W": 1.93257243122453e+24, + "P_10m_W": 29283865.346060477 + }, + { + "set": "stis", + "star": "Feige 54", + "setting": "E140M", + "n": 4, + "lam": 1379.7346219016697, + "flux": 4.254261548637681e-14, + "plx": 0.7617, + "sp": "sdOHe", + "L_iso_W": 8.77351333121599e+23, + "P_10m_W": 13290912.559510183 + }, + { + "set": "stis", + "star": "PG 1518-098", + "setting": "E140M", + "n": 3, + "lam": 1379.9770968763048, + "flux": 4.829560457730451e-14, + "plx": 0.1406, + "sp": "sdOC2VIeHe40", + "L_iso_W": 2.923171062026524e+25, + "P_10m_W": 442984085.18925583 + }, + { + "set": "stis", + "star": "Gaia DR3 5369742867090186624", + "setting": "E140M", + "n": 2, + "lam": 1379.3541796551397, + "flux": 7.833846503393583e-14, + "plx": 0.3797, + "sp": "", + "L_iso_W": 6.50146349654239e+24, + "P_10m_W": 98435750.05435313 + }, + { + "set": "stis", + "star": "Ton S 415", + "setting": "E140M", + "n": 2, + "lam": 1379.7233250263967, + "flux": 8.246586769256279e-14, + "plx": 1.8718, + "sp": "sdO8VIIHe30", + "L_iso_W": 2.8162591261403463e+23, + "P_10m_W": 4266254.5136462245 + }, + { + "set": "stis", + "star": "HD 124314", + "setting": "E230H", + "n": 2, + "lam": 2032.0499043578927, + "flux": 2.612016049079589e-13, + "plx": 0.32, + "sp": "O6V(n)((f))", + "L_iso_W": 3.0520605788037367e+25, + "P_10m_W": 1002887051.965547 + }, + { + "set": "stis", + "star": "HD 218915", + "setting": "E230H", + "n": 2, + "lam": 2032.0904682823627, + "flux": 2.8372824908561746e-13, + "plx": 0.3192, + "sp": "O9.2Iab", + "L_iso_W": 3.3319162583925783e+25, + "P_10m_W": 1094889500.6407387 + }, + { + "set": "stis", + "star": "HD 13841", + "setting": "E230H", + "n": 2, + "lam": 2031.812333062519, + "flux": 1.2488871353426225e-13, + "plx": 0.4137, + "sp": "B1.5Ib", + "L_iso_W": 8.731109105128245e+24, + "P_10m_W": 286831428.3154087 + }, + { + "set": "stis", + "star": "HD 116781", + "setting": "E230H", + "n": 2, + "lam": 2032.0494118560928, + "flux": 2.2643517457945331e-13, + "plx": 0.4614, + "sp": "O9/B1(I)e", + "L_iso_W": 1.272641191760686e+25, + "P_10m_W": 418181330.7394174 + }, + { + "set": "stis", + "star": "HD 164340", + "setting": "E230H", + "n": 2, + "lam": 2032.1996222505297, + "flux": 1.392505407786562e-13, + "plx": 0.2121, + "sp": "B0/0.5(III)", + "L_iso_W": 3.7036745598786384e+25, + "P_10m_W": 1217182464.5165596 + }, + { + "set": "stis", + "star": "* 10 Per", + "setting": "E230H", + "n": 2, + "lam": 2031.8491368082678, + "flux": 1.6064234047082795e-13, + "plx": 0.4424, + "sp": "B2Ia", + "L_iso_W": 9.820804175294538e+24, + "P_10m_W": 322641408.5111019 + }, + { + "set": "stis", + "star": "HD 109399", + "setting": "E230H", + "n": 2, + "lam": 2031.9449129152772, + "flux": 2.2372842221561148e-13, + "plx": 0.4232, + "sp": "B0.5III", + "L_iso_W": 1.4946761575337223e+25, + "P_10m_W": 491090013.30659217 + }, + { + "set": "stis", + "star": "HD 108", + "setting": "E230H", + "n": 2, + "lam": 2031.894936366286, + "flux": 2.0387241964538502e-13, + "plx": 0.498, + "sp": "O4-8f?p", + "L_iso_W": 9.835966861113734e+24, + "P_10m_W": 323154113.78589386 + }, + { + "set": "stis", + "star": "V* V373 Cas", + "setting": "E230H", + "n": 2, + "lam": 2031.800651479933, + "flux": 2.8923955873106174e-13, + "plx": 0.5019, + "sp": "B0.5II+B3.5/4III/V", + "L_iso_W": 1.3738539412871698e+25, + "P_10m_W": 451328636.8569618 + }, + { + "set": "stis", + "star": "V* V961 Cen", + "setting": "E230H", + "n": 2, + "lam": 2032.0014855998975, + "flux": 1.3084143977272533e-13, + "plx": 0.588, + "sp": "O9.5III+B0Ib", + "L_iso_W": 4.528015734507584e+24, + "P_10m_W": 148780531.40181217 + }, + { + "set": "stis", + "star": "HD 103779", + "setting": "E230H", + "n": 2, + "lam": 2031.9849600438192, + "flux": 2.8827005255519425e-13, + "plx": 0.4841, + "sp": "B0.5II", + "L_iso_W": 1.4717926407538605e+25, + "P_10m_W": 483590478.43242306 + }, + { + "set": "stis", + "star": "HD 99953", + "setting": "E230H", + "n": 2, + "lam": 2031.9763644440714, + "flux": 1.5819656524990447e-13, + "plx": 0.3953, + "sp": "B2Ia", + "L_iso_W": 1.2113250159803642e+25, + "P_10m_W": 398004631.82603896 + }, + { + "set": "stis", + "star": "HD 152424", + "setting": "E230H", + "n": 2, + "lam": 2032.2823406683353, + "flux": 1.8426958233932257e-13, + "plx": 0.6155, + "sp": "OC9.2Ia", + "L_iso_W": 5.819890344836369e+24, + "P_10m_W": 191281524.6660014 + }, + { + "set": "stis", + "star": "HD 94493", + "setting": "E230H", + "n": 2, + "lam": 2031.976244885661, + "flux": 2.493873750698591e-13, + "plx": 0.4558, + "sp": "B0.5Iab/b", + "L_iso_W": 1.4362931440201721e+25, + "P_10m_W": 471922274.5079392 + }, + { + "set": "stis", + "star": "HD 93843", + "setting": "E230H", + "n": 2, + "lam": 2031.9163469835917, + "flux": 3.530650095714343e-13, + "plx": 0.4157, + "sp": "O5III(fc)", + "L_iso_W": 2.444623009033756e+25, + "P_10m_W": 803181468.5193352 + }, + { + "set": "stis", + "star": "HD 53975", + "setting": "E230H", + "n": 2, + "lam": 2032.1593834024861, + "flux": 7.845806982672608e-13, + "plx": 0.8668, + "sp": "O7.5Vz", + "L_iso_W": 1.2494448158989121e+25, + "P_10m_W": 410603596.6692662 + }, + { + "set": "stis", + "star": "HD 47240", + "setting": "E230H", + "n": 2, + "lam": 2032.501591624199, + "flux": 3.6682513279665163e-13, + "plx": 0.2143, + "sp": "B1Ib", + "L_iso_W": 9.557229311678979e+25, + "P_10m_W": 3141839034.28911 + }, + { + "set": "stis", + "star": "HD 46966", + "setting": "E230H", + "n": 2, + "lam": 2032.235618310523, + "flux": 5.346593589103895e-13, + "plx": 0.5945, + "sp": "O8.5IV", + "L_iso_W": 1.8100506195378794e+25, + "P_10m_W": 594879460.2871019 + }, + { + "set": "stis", + "star": "HD 30677", + "setting": "E230H", + "n": 2, + "lam": 2032.4087488977323, + "flux": 3.89452725355474e-13, + "plx": 0.618, + "sp": "B1II-III((n))", + "L_iso_W": 1.2200989747980715e+25, + "P_10m_W": 401058116.29922915 + }, + { + "set": "stis", + "star": "* alf Cam", + "setting": "E140H", + "n": 4, + "lam": 1403.049590107727, + "flux": 2.968718390611402e-13, + "plx": 0.5916, + "sp": "O9Ia", + "L_iso_W": 1.014915621629043e+25, + "P_10m_W": 158988647.7975427 + }, + { + "set": "stis", + "star": "* 139 Tau", + "setting": "E230H", + "n": 2, + "lam": 2032.7056700260646, + "flux": 4.015701280942981e-12, + "plx": 0.8615, + "sp": "B1Ia", + "L_iso_W": 6.473931511152283e+25, + "P_10m_W": 2128664580.0688615 + }, + { + "set": "stis", + "star": "HD 47432", + "setting": "E230H", + "n": 2, + "lam": 2032.5814591568424, + "flux": 4.723537331857936e-13, + "plx": 0.5903, + "sp": "O9.7Ib", + "L_iso_W": 1.6219559330986009e+25, + "P_10m_W": 533242930.01623195 + }, + { + "set": "stis", + "star": "HD 46150", + "setting": "E230H", + "n": 2, + "lam": 2032.584194018048, + "flux": 4.81513697353772e-13, + "plx": 0.6431, + "sp": "O5V((f))z", + "L_iso_W": 1.3930570152115876e+25, + "P_10m_W": 457990126.80113006 + }, + { + "set": "stis", + "star": "* chi02 Ori", + "setting": "E230H", + "n": 2, + "lam": 2032.6393368693027, + "flux": 4.985040873200045e-13, + "plx": 0.7636, + "sp": "B2Ia", + "L_iso_W": 1.0229493933247206e+25, + "P_10m_W": 336329481.06505567 + }, + { + "set": "stis", + "star": "HD 54764", + "setting": "E230H", + "n": 2, + "lam": 2032.1953094529374, + "flux": 5.496840366673674e-13, + "plx": 0.7036, + "sp": "B1Ib/II", + "L_iso_W": 1.3285525224507088e+25, + "P_10m_W": 436616107.5164874 + }, + { + "set": "stis", + "star": "HD 34656", + "setting": "E230H", + "n": 2, + "lam": 2032.1764419035512, + "flux": 7.00538974560855e-13, + "plx": 1.0432, + "sp": "O7.5II(f)", + "L_iso_W": 7.702193242836295e+24, + "P_10m_W": 253120530.20011622 + }, + { + "set": "stis", + "star": "HD 48038", + "setting": "E230H", + "n": 2, + "lam": 2032.5848667052778, + "flux": 2.992338151296159e-13, + "plx": 0.889, + "sp": "B2III", + "L_iso_W": 4.530273405614817e+24, + "P_10m_W": 148940197.1460024 + }, + { + "set": "stis", + "star": "HD 104705", + "setting": "E230H", + "n": 2, + "lam": 2032.1128949583685, + "flux": 2.332444360327912e-13, + "plx": 0.5076, + "sp": "B0III/IV", + "L_iso_W": 1.0831418363709112e+25, + "P_10m_W": 355935356.34575546 + }, + { + "set": "stis", + "star": "SK 17", + "setting": "E230M", + "n": 3, + "lam": 1917.5164797277503, + "flux": 3.640242586228975e-14, + "plx": null, + "sp": "B3Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "AzV 214", + "setting": "E230M", + "n": 3, + "lam": 1917.5285312631654, + "flux": 3.2497043196782315e-14, + "plx": null, + "sp": "B1Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "AzV 398", + "setting": "E230M", + "n": 15, + "lam": 1917.4901854817167, + "flux": 2.8113939673889e-14, + "plx": null, + "sp": "O9.7Ia", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "2dFS 3030", + "setting": "E230M", + "n": 9, + "lam": 1917.516528932976, + "flux": 2.6564729174135592e-14, + "plx": null, + "sp": "O7-8V", + "L_iso_W": null, + "P_10m_W": null + }, + { + "set": "stis", + "star": "BD-20 2976", + "setting": "E230M", + "n": 5, + "lam": 2633.0093247180803, + "flux": 1.2531766375631645e-14, + "plx": 8.7523, + "sp": "F9V", + "L_iso_W": 1.95742515021165e+21, + "P_10m_W": 107989.14293675515 + }, + { + "set": "stis", + "star": "* alf Her", + "setting": "E140M", + "n": 6, + "lam": 1380.0864797019262, + "flux": 7.509564659982715e-15, + "plx": 9.07, + "sp": "M5Ib-II+G5III+F2V:", + "L_iso_W": 1.0922384275759848e+21, + "P_10m_W": 16554.65713448903 + }, + { + "set": "stis", + "star": "HD 133112", + "setting": "E230M", + "n": 14, + "lam": 2632.9617913878665, + "flux": 2.6387777975468184e-14, + "plx": 10.0997, + "sp": "A4/5IV/V", + "L_iso_W": 3.0953027876315495e+21, + "P_10m_W": 170758.52253061964 + }, + { + "set": "stis", + "star": "HD 85628", + "setting": "E230M", + "n": 10, + "lam": 2631.3236655126784, + "flux": 2.0024027744379218e-13, + "plx": 5.9437, + "sp": "A3V", + "L_iso_W": 6.781955590175254e+22, + "P_10m_W": 3736746.366912817 + }, + { + "set": "stis", + "star": "HD 185603", + "setting": "E230M", + "n": 10, + "lam": 2631.2161933162797, + "flux": 3.285485919813886e-13, + "plx": 7.3001, + "sp": "A0", + "L_iso_W": 7.376651337785748e+22, + "P_10m_W": 4064081.9740023543 + } + ] +} \ No newline at end of file diff --git a/papers/uv_lasers/make_numbers.py b/papers/uv_lasers/make_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..4e619ac72f4edb475779e77f8335a7aad0a322f3 --- /dev/null +++ b/papers/uv_lasers/make_numbers.py @@ -0,0 +1,200 @@ +"""Numbers, Tables 4 and 5 and Figure 1 of the ultraviolet laser paper from the ultraviolet results.""" +import json +import math +import os +import sys + +import numpy as np + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(os.path.dirname(HERE)) +sys.path.insert(0, ROOT) +sys.argv = sys.argv[:1] +from setitools import core # noqa: E402 +from setitools import ultraviolet as uv # noqa: E402 + +RES = core.RESULTS +SETS = ("starcat", "stis", "cos", "iue", "fuse") +INST = {"starcat": "STIS", "stis": "STIS, later", "cos": "COS", "iue": "IUE", "fuse": "FUSE"} +NAMES = {"Proxima Centauri": "Proxima Centauri", "alf Cen A": r"$\alpha$~Cen~A", "alf Cen B": r"$\alpha$~Cen~B", + "Barnard's star": "Barnard's star", "alf CMa": "Sirius~A", "alf CMa B": "Sirius~B", + "eps Eri": r"$\epsilon$~Eri", "HD 217987": "GJ~887", "61 Cyg A": "61~Cyg~A", "alf CMi": "Procyon", + "HD 173739": "GJ~725~A", "eps Ind": r"$\epsilon$~Ind", "tau Cet": r"$\tau$~Cet", "L 372-58": "GJ~1061", + "HD 33793": "Kapteyn's star", "BD-12 4523": "GJ~628", "Wolf 28": "van Maanen's star", "CD-46 11540": "GJ~674", + "LAWD 37": "LAWD~37", "BD-15 6290": "GJ~876", "DENIS J025503.3-470049": r"DENIS~J0255$-$4700", + "AD Leo": "AD~Leo", "HD 204961": "GJ~832", "alf Boo": "Arcturus", "R Leo": "R~Leo", "EG And": "EG~And"} +TYPES = {"alf Boo": r"K1.5\,III", "R Leo": "M7--9e, Mira", "EG And": r"M2.4\,III, symbiotic", "eps Eri": r"K2\,V"} +STYLE = {"starcat": ("black", "o", "1.5pt", "solid"), "stis": ("black!65", "x", "1.8pt", "dashdotted"), + "cos": ("black", "square*", "1.3pt", "solid"), "iue": ("black!55", "triangle*", "1.6pt", "densely dashed"), + "fuse": ("black!75", "diamond*", "1.6pt", "densely dotted")} + + +def load(name): + """Result file from data/, else the results directory.""" + p = os.path.join(HERE, "data", name) + return json.load(open(p if os.path.exists(p) else os.path.join(RES, name))) + + +def short(n): + return " ".join(n.replace("NAME ", "").replace("V* ", "").replace("* ", "").split()) + + +def sci(x, digits=1): + """LaTeX scientific notation.""" + e = int(math.floor(math.log10(abs(x)))) + m = x / 10 ** e + if round(m, digits) >= 10: + m, e = m / 10, e + 1 + return r"%.*f\times10^{%d}" % (digits, m, e) + + +def searches(): + sc, cos, fu = load("uv_laser.json"), load("cos_laser.json"), load("fuse_laser.json") + left = uv.limits_left("starcat", sc) + print("STIS: %d exposures of %d objects; %d peaks; %d persistent; %d pass the first test; %d left in %d stars" % ( + sc["exposures"], sc["objects"], sc["peaks"], len(sc["persistent"]), + sum(1 for p in sc["persistent"] if "forced_rest" in p), len(left), len({p["obj"] for p in left}))) + st = load("stis_laser.json") + sl = uv.limits_left("stis", st) + print("STIS x1d: %d exposures of %d objects; %d peaks; %d persistent in %d stars; %d pass the first test; %d left in %d " + "stars, %d with a NIST line within 15 km/s" % ( + st["exposures"], st["objects"], st["peaks"], len(st["persistent"]), len({p["star"] for p in st["persistent"]}), + sum(1 for p in st["persistent"] if p["stars_rest"] < 2 and p["stars_obs"] < 2), len(sl), + len({p["star"] for p in sl}), sum(1 for p in st["identified"] if p["id"]))) + first = [p for p in cos["persistent"] if p["stars_rest"] < 2 and p["stars_obs"] < 2] + print("COS: %d spectra of %d stars; %d peaks; %d persistent in %d stars; %d pass the first test; %d left" % ( + cos["spectra"], cos["stars"], cos["peaks"], len(cos["persistent"]), + len({p["star"] for p in cos["persistent"]}), len(first), len(uv.limits_left("cos", cos)))) + for tag in ("6sig", "45sig"): + d = load("iue_laser_%s.json" % tag) + pp = [p for p in d["persistent"] if "aperture_fixed" in p] + print("IUE %s: %d images; %d peaks; %d persistent; %d pass the first test (%d fixed to an aperture); %d left" % ( + tag, d["images"], d["peaks"], len(d["persistent"]), len(pp), sum(p["aperture_fixed"] for p in pp), + len(uv.limits_left("iue", d)))) + print("FUSE: %d observations of %d stars; %d single-channel peaks; %d confirmed" % ( + fu["files"], fu["objects"], len(fu["found"]), sum(1 for x in fu["found"] if x["confirmed"]))) + for x in fu["found"]: + print(" %-22s %s %.3f A, z %.1f" % (x["star"], x["channel"], x["lam"], x["z"])) + + +def sensitivity(): + tab = load("uv_limits_table.json") + for key in SETS: + d = load("uv_limits_%s.json" % key) + rows = [r for r in tab["rows"] if r["set"] == key] + near = [r for r in rows if r["plx"] and r["plx"] > 100] + print("%s: %d exposures injected; plateau %.2f, m90 %.2f; %d stars, median %.1e erg cm-2 s-1; %d within 10 pc, " + "median %.1e W isotropic, %.2g W through 10 m" % ( + INST[key], d["n_injected"], d["plateau"], d["m90"], len(rows), np.median([r["flux"] for r in rows]), + len(near), np.median([r["L_iso_W"] for r in near]), np.median([r["P_10m_W"] for r in near]))) + + +def table_left(): + sc, cos = load("uv_laser.json"), load("cos_laser.json") + for p in sorted(uv.limits_left("starcat", sc), key=lambda p: (short(p["main_id"]) != "alf Boo", p["main_id"], p["rest"])): + s = short(p["main_id"]) + print(r"%s & %s & STIS %s & $%.3f$ & $%d/%d$ & $%.1f$\\" % (NAMES[s], TYPES[s], p["mode"], p["rest"], p["n"], + p["of"], p["z"])) + for p in sorted(uv.limits_left("cos", cos), key=lambda p: p["rest"]): + s = short(p["star"]) + print(r"%s & %s & COS %s & $%.3f$ & $%d$ & $p=%s$\\" % (NAMES[s], TYPES[s], p["grating"], p["rest"], p["n"], + sci(p["p"], 0).replace(r"1\times", ""))) + + +def table_nearest(): + best = {} + for r in load("uv_limits_table.json")["rows"]: + if r["plx"] and r["plx"] >= 200: + n = short(r["sp"].split(";")[0] if r["set"] == "starcat" and r.get("sp") else r["star"]) + if n not in best or r["L_iso_W"] < best[n]["L_iso_W"]: + best[n] = dict(r, name=n) + for r in sorted(best.values(), key=lambda r: -r["plx"]): + print(r"%s & $%.2f$ & %s & $%.0f$ & $%s$ & $%s$ & $%s$\\" % ( + NAMES.get(r["name"], r["name"]), 1000.0 / r["plx"], INST[r["set"]], r["lam"], sci(r["flux"]), + sci(r["L_iso_W"]), sci(r["P_10m_W"]))) + P = np.array([r["P_10m_W"] for r in best.values()]) + print("%% %d stars within 5 pc; median %.2g W; %d below 10 W, %.2g to %.2g W" % ( + len(P), np.median(P), (P < 10).sum(), P[P < 10].min(), P[P < 10].max())) + + +def figure(): + print(r"\begin{tikzpicture}") + print(r"\begin{semilogxaxis}[name=rec,width=0.47\textwidth,height=0.4\textwidth,xmin=0.9,xmax=9,ymin=0,ymax=1.02,") + print(r" xtick={1,1.5,2,3,5,8},xticklabels={$1$,$1.5$,$2$,$3$,$5$,$8$},minor xtick={},") + print(r" xlabel={injected flux / $F_{\mathrm{nom}}$},ylabel={fraction recovered},") + print(r" tick label style={font=\footnotesize},label style={font=\small},title={(a)},title style={font=\footnotesize},") + print(r" legend style={font=\scriptsize,at={(0.97,0.03)},anchor=south east,draw=none,fill=none},legend cell align=left]") + for key in SETS: + d = load("uv_limits_%s.json" % key) + col, mk, ms, line = STYLE[key] + print(r"\addplot[%s,thick,%s,mark=%s,mark size=%s,mark options={solid}] coordinates {%s};" % ( + col, line, mk, ms, " ".join("(%g,%.3f)" % (m, x) for m, x in zip(d["mult"], d["recovery"])))) + print(r"\addlegendentry{%s ($%d$)}" % (INST[key], d["n_injected"])) + print(r"\end{semilogxaxis}") + print(r"\begin{loglogaxis}[at={(rec.east)},anchor=west,xshift=1.9cm,width=0.47\textwidth,height=0.4\textwidth,") + print(r" xmin=1,xmax=1000,ymin=1e-17,ymax=1e-9,xlabel={distance (pc)},ylabel={line-flux limit (\flux)},") + print(r" tick label style={font=\footnotesize},label style={font=\small},title={(b)},title style={font=\footnotesize},") + print(r" legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,") + print(r" text opacity=1},legend cell align=left]") + tab = load("uv_limits_table.json") + for key in SETS: + col, mk, _, _ = STYLE[key] + pts = sorted((1000.0 / r["plx"], r["flux"]) for r in tab["rows"] if r["set"] == key and r["plx"] and r["plx"] > 0) + print(r"\addplot[only marks,mark=%s,mark size=1.1pt,%s%s] coordinates {%s};" % ( + mk, col, "" if key == "starcat" else ",fill opacity=0.8", " ".join("(%.3g,%.3g)" % p for p in pts))) + print(r"\addlegendentry{%s}" % INST[key]) + for L in (16, 18, 20, 22): + d_end = min(1000.0, math.sqrt(10 ** (L + 7) / (4 * math.pi * 1e-17)) / 3.0857e18) + print(r"\addplot[densely dotted,black!45,domain=1:%.4g,samples=2,forget plot] {1e%d/(4*pi*(x*3.0857e18)^2)} " + r"node[pos=0.78,sloped,above,font=\tiny,text=black!60,inner sep=1pt] {$10^{%d}$\,W};" % (d_end, L + 7, L)) + print(r"\end{loglogaxis}") + print(r"\end{tikzpicture}") + + +def arcturus(): + """Arcturus features passing both tests: peak against the brightest flux within 10 A per E230H exposure, and iron-group NIST lines within 15 km/s with chance-match odds.""" + import glob + import re + C = 299792.458 + IONS = ("Fe I", "Fe II", "Cr I", "Cr II", "Ti I", "Ti II", "Mn I", "Mn II", "V I", "V II", "Ni I", "Ni II", "Co I", "Co II", + "Si I", "Mg I", "Ca I", "Ca II", "Al I", "Sc II", "Y II", "Zr II", "Cu I", "Zn I") + sc = load("uv_laser.json") + feats = [p for p in sc["persistent"] if p.get("main_id") == "* alf Boo" and p["stars_rest"] < 2 and p["stars_obs"] < 2] + spectra = [] + for f in sorted(glob.glob(os.path.join(uv.starcat_ROOT, "fits", "HD124897", "*.fits"))): + x = uv.starcat_load(f) + if x and x[3]["mode"] == "E230H": + spectra.append(x) + lines = [] + for ion in IONS: + lines += core.nist_lines(ion, 2600, 3100, cache_dir=os.path.join(os.path.dirname(uv.starcat_ROOT), "nist")) + + def inten(s): + m = re.match(r"\s*(\d+)", s or "") + return int(m.group(1)) if m else 0 + strong = [x for x in lines if inten(x["intens"]) >= 100] + dens = len(strong) / 500.0 + print("%d features; %d E230H exposures; %d NIST lines of %d ions over 2600-3100 A, %d with intensity 100 or more: a random " + "wavelength lies within 0.5 and 5 km/s of a strong one with probability %.2f and %.2f" + % (len(feats), len(spectra), len(lines), len(IONS), len(strong), min(1, dens * 2 * 0.5 / C * 2850), min(1, dens * 2 * 5 / C * 2850))) + for p in sorted(feats, key=lambda p: p["rest"]): + ratios = [] + for w, f, e, meta in spectra: + i = int(np.argmin(np.abs(w - p["lam"]))) + if abs(w[i] - p["lam"]) > 0.05 or w.min() + 10 > p["lam"] or w.max() - 10 < p["lam"]: + continue + near = (np.abs(w - p["lam"]) < 10.0) & (np.abs(w - p["lam"]) > 0.15) + ratios.append(float(np.max(f[np.abs(w - p["lam"]) <= 0.06]) / np.max(f[near]))) + ids = sorted((x for x in strong if abs(x["lam"] - p["rest"]) / p["rest"] * C < 15), key=lambda x: abs(x["lam"] - p["rest"])) + print("%.3f A (z %.1f, %d/%d): peak over the brightest flux within 10 A %s; strong NIST lines within 15 km/s: %s" % ( + p["rest"], p["z"], p["n"], p["of"], ", ".join("%.2f" % r for r in ratios), + "; ".join("%s %.3f (%+.1f km/s)" % (x["ion"], x["lam"], (x["lam"] - p["rest"]) / p["rest"] * C) for x in ids[:4]) or "none")) + + +if __name__ == "__main__": + import warnings + warnings.filterwarnings("ignore") + for title, fn in (("searches", searches), ("sensitivity", sensitivity), ("Table 4 rows", table_left), + ("Table 5 rows", table_nearest), ("Figure 1", figure), ("Arcturus", arcturus)): + print("%% == %s" % title) + fn() diff --git a/papers/uv_lasers/uv_lasers.pdf b/papers/uv_lasers/uv_lasers.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f71a006407a6e0217e869838b10e84bcad0127a5 --- /dev/null +++ b/papers/uv_lasers/uv_lasers.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9cc14739d4f69c9f93097582b7ede320a20a2f141c4c018ee93c9dca8b4bb54 +size 135832 diff --git a/papers/uv_lasers/uv_lasers.tex b/papers/uv_lasers/uv_lasers.tex new file mode 100644 index 0000000000000000000000000000000000000000..eda14ab5e0e536623009259d2c30b821558f75d1 --- /dev/null +++ b/papers/uv_lasers/uv_lasers.tex @@ -0,0 +1,733 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{A Search for Ultraviolet Laser Lines\\ in Archival Spectra of Nearby Stars} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +A laser aimed at Earth from another star adds an unresolved emission line to the +star's spectrum. We search the ultraviolet, where a diffraction-limited beam fills a +solid angle twenty times smaller than at visible wavelengths and cool stars are faint: $2356$ HST/STIS +echelle exposures of $530$ stars from StarCAT and $4312$ taken since, of $881$ stars, +$1138$ HST/COS far-ultraviolet spectra of $44$ stars within $10$\,pc, $851$ IUE +high-dispersion images of $58$ stars within $10$\,pc and $70$ FUSE observations of $42$ +stars within $20$\,pc. A candidate is an +unresolved peak above the local upper envelope of the spectrum that recurs in a second +exposure, grating offset or detector channel and that fewer than two other stars show at +its rest or its observed wavelength, whether detected there or measured there directly. +No candidate remains. The features that persist in one star are narrow windows in the +line-blanketed spectrum of Arcturus at the wavelengths of its iron-group ions, emission +lines of the Mira R~Leo, the symbiotic EG~And and $\epsilon$~Eri, +lines of the crowded ultraviolet spectra of cool giants, T~Tauri stars, the Ap star +GY~And and the chromospheres of $\alpha$~Cen~A and B and Procyon, IUE features fixed to +one aperture's position on the camera, and IUE features +$440$\,\kms\ redward of the \ion{Si}{ii} $1808$ and $1817$\,\AA\ lines of the brightest +G and K dwarfs, which the STIS spectrum of $\alpha$~Cen~A excludes. Lines injected into +the archival spectra and recovered by the same detectors give the sensitivity. At the +stars within $10$\,pc the median limit for an isotropic source is $\sci{2.0}{17}$\,W +with COS and $\sci{1.0}{18}$\,W with the later STIS spectra, and a transmitter aimed at +Earth through a diffraction-limited $10$\,m aperture, whose beam at $1200$\,\AA\ is +$0.005$\,au wide at the nearest stars, would have been detected at $0.1$ +to $7$\,W from $21$ of the $27$ stars within $5$\,pc, at $0.11$\,W from Lalande~21185 +and $0.14$\,W from Barnard's star. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +Schwartz and Townes proposed that a civilization could signal with optical masers, +whose light, confined to a narrow beam and a narrow band, would outshine its star at +that wavelength~\cite{SchwartzTownes1961}. A laser aimed at Earth from another star +would add an unresolved emission line to the star's spectrum, and spectroscopic searches +for such lines have examined optical spectra of nearby stars: $577$ FGKM stars with +Keck/HIRES at $4000$--$5000$\,\AA~\cite{ReinesMarcy2002}, $2796$ stars at +$3640$--$7890$\,\AA~\cite{TellisMarcy2015}, $5600$ FGKM stars with thresholds of +megawatts~\cite{TellisMarcy2017}, $1983$ spectra of $388$ stars from the Automated +Planet Finder~\cite{Zuckerman2023}, and $2821$ stars in archival HARPS +spectra~\cite{FieldsGoodman2025}. + +The ultraviolet favours such a transmitter in two ways. A diffraction-limited beam from +an aperture $D$ fills a solid angle of about $(\lambda/D)^2$, so at $1200$\,\AA\ an +aperture puts its power into a solid angle twenty times smaller than at $5500$\,\AA; +from $10$\,m the beam is $0.005$\,au wide at $2$\,pc and $0.025$\,au at $10$\,pc, far +narrower than the Earth's orbit, so the transmitter must be aimed at the Earth itself, +at its position when the light arrives, and not at the Sun. And +the photospheres of K and M dwarfs, the commonest nearby stars, emit almost no +far-ultraviolet continuum, so a line of given power stands out against far less light. +The cost is that the atmosphere absorbs the ultraviolet, so only a receiver in space sees +the signal, and that the interstellar medium absorbs the Lyman series and the resonance +lines of abundant ions. Within $10$ to $20$\,pc the hydrogen column is of order +$10^{18}$\,cm$^{-2}$~\cite{RedfieldLinsky2008}, which leaves the medium transparent +longward of $912$\,\AA\ outside those lines. + +This paper asks whether archival ultraviolet spectra of nearby stars hold such lines. +Four archives hold high-resolution ultraviolet spectra of them: those of the Space +Telescope Imaging Spectrograph (STIS)~\cite{Woodgate1998}, whose echelle spectra of $545$ +stars are collected in StarCAT~\cite{Ayres2010}; of the Cosmic Origins Spectrograph +(COS)~\cite{Green2012}; of the International Ultraviolet Explorer +(IUE)~\cite{Boggess1978}, in its final processing~\cite{NicholsLinsky1996}; and of the +Far Ultraviolet Spectroscopic Explorer (FUSE)~\cite{Moos2000,Sahnow2000,Dixon2007}. We +search all four for unresolved emission lines with one set of criteria, and measure what +each search could have found by passing lines injected into the archival spectra through +the same detectors. + +\subsection{Contributions} + +\begin{enumerate}[leftmargin=*,itemsep=1pt] +\item \emph{A search of four archives.} $2356$ STIS echelle exposures of $530$ stars +from StarCAT and $4312$ later exposures of $881$ stars from the pipeline, $1138$ COS +spectra of the $44$ stars within $10$\,pc that COS observed, $851$ IUE +high-dispersion images of the $58$ stars within $10$\,pc that IUE observed, and $70$ +FUSE observations of $42$ stars within $20$\,pc, each spectrum credited to the star in +the aperture (Section~\ref{sec:data}). A candidate must be unresolved, rise above the +local upper envelope of the spectrum, recur in a second exposure, grating offset or +detector channel, and be absent from other stars at its rest and its observed wavelength +(Section~\ref{sec:method}). +\item \emph{What the tests remove.} No candidate remains (Table~\ref{tab:stages}). The +features that persist in one star and that no two other stars share are windows between +the absorption lines of Arcturus at the wavelengths of its iron-group ions, +\ion{Fe}{ii} and C\,\textsc{iii}] emission of the Mira R~Leo and the +symbiotic EG~And, chromospheric lines of $\epsilon$~Eri (Table~\ref{tab:left}), and in +the later STIS spectra $138$ lines of eleven stars whose ultraviolet spectra are crowded +with natural lines. In +IUE spectra the tests remove features fixed to one aperture's position on the camera, +and features $440$\,\kms\ redward of \ion{Si}{ii} $1808$ and $1817$\,\AA\ in the +brightest G and K dwarfs, which other stars show below the detection criteria and the +STIS spectrum of $\alpha$~Cen~A excludes (Section~\ref{sec:cand}). +\item \emph{Sensitivity.} Injected lines are recovered at $90\%$ of each search's plateau +at $2.8$ to $4.7$ times the nominal threshold. At the stars within $10$\,pc the median +limit for an isotropic source is $\sci{2.0}{17}$\,W with COS, $\sci{1.0}{18}$\,W with the +later STIS spectra and $\sci{3.9}{18}$ to $\sci{2.9}{21}$\,W with the others, and from +$21$ of the $27$ stars within $5$\,pc a transmitter aimed at Earth through a $10$\,m +aperture would have been detected at $0.1$ to $7$\,W (Section~\ref{sec:limits}, +Table~\ref{tab:nearest}). +\end{enumerate} + +Section~\ref{sec:data} describes the data and how each spectrum is credited to a star, +Section~\ref{sec:method} the detection, the tests and the measurement of sensitivity, +and Section~\ref{sec:results} the candidates and the limits. Section~\ref{sec:related} +discusses related work and Section~\ref{sec:conclusion} concludes. + +% ============================================================================= +\section{Data}\label{sec:data} +% ============================================================================= + +Table~\ref{tab:data} lists the data. From StarCAT we use every single-exposure spectrum +in the echelle settings E140M, E140H, E230M and E230H, $2356$ exposures of $530$ objects +observed from $1997$ to $2004$, with the flux, error and data-quality arrays and +heliocentric vacuum wavelengths of its processing. For the STIS exposures taken after +StarCAT, from $2004$ July on, we take the pipeline's extracted x1d spectra of every +echelle exposure in the same four settings: $4402$ files, of which the archive served +$4312$, of $881$ stars observed to $2026$; the $90$ it did not serve belong mostly to +AU~Mic and $\xi^1$~CMa. For COS we build spectra from the +photon events of every far-ultraviolet exposure of a star within $10$\,pc: events with +good data-quality flags and pulse heights, outside the flashes of the +wavelength-calibration lamp, in bins of two pixels along the dispersion, with the +background scaled from the pipeline's background regions and the heliocentric +wavelengths of the pipeline, leaving out the lamp, dark and flat exposures filed under +science visits. This gives $1138$ segment spectra of $44$ stars from $2009$ to $2026$. +For IUE we use the net flux and noise of every NEWSIPS high-dispersion image of a star +within $10$\,pc at the pixels with quality flag zero, $851$ images of $58$ stars from +the short-wavelength (SWP) and long-wavelength (LWP, LWR) cameras, $1978$ to $1995$. For +FUSE we use the combined spectra of the eight channels, LiF and SiC on the detector +segments 1A, 1B, 2A and 2B, which record each wavelength two or three times on different +detectors, of every observation of a star within $20$\,pc: $70$ observations of $42$ +stars, $1999$ to $2007$. + +A star lies within $10$\,pc ($20$\,pc) when its SIMBAD parallax~\cite{Wenger2000} +exceeds $100$\,mas ($50$\,mas). The coordinates an archive gives for an observation are +the observer's catalogue position of the target, of any epoch between $1950$ and the +observation, so a pointing is matched to the stars whose proper-motion track over that +interval passes near it, and a spectrum is credited to the nearest such star when the +track lies inside the aperture: within $3''$ for COS, whose aperture is $2.5''$ across, +within $3''$ for the later STIS exposures, or $15''$ when the observer's target name +resolves to that star, since the orbital motion of a binary such as $\alpha$~Cen carries +its stars several arcseconds off their catalogue tracks, and within $15''$ for FUSE, +whose large aperture is $30''$ square. Some archived IUE +coordinates are $30''$ in error, so an IUE image is credited to the star its target name +resolves to in SIMBAD, and otherwise to the nearest track within $10''$. FUSE +observations that place the star at the reference point, outside every aperture, are +left out. A spectrum of a companion is thereby credited to the companion, and pointings +at fast-moving stars such as Barnard's star, which moves $10''$ a year, are matched. + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{4.5pt} +\caption{The ultraviolet spectra searched. Spectra are single exposures (STIS, from +StarCAT and, later, from the pipeline's x1d files), segment spectra (COS), echelle images +(IUE) and observations of eight channels (FUSE). +The COS and IUE stars are those within $10$\,pc, the FUSE stars those within $20$\,pc, +and StarCAT holds stars at all distances.} +\label{tab:data} +\begin{tabular}{@{}lllrrrr@{}} +\toprule +Instrument & Settings & Range (\AA) & $R$ & Years & Spectra & Stars\\ +\midrule +STIS & E140M, E140H, E230M, E230H & $1150$--$3100$ & $30{,}000$--$114{,}000$ & $1997$--$2004$ & $2356$ & $530$\\ +STIS, later & E140M, E140H, E230M, E230H & $1150$--$3100$ & $30{,}000$--$114{,}000$ & $2004$--$2026$ & $4312$ & $881$\\ +COS & G130M, G160M & $1065$--$1800$ & $16{,}000$--$24{,}000$ & $2009$--$2026$ & $1138$ & $44$\\ + & G140L & $1100$--$2150$ & $2{,}000$--$3{,}000$ & & & \\ +IUE & SWP, LWP, LWR & $1150$--$3350$ & $10{,}000$ & $1978$--$1995$ & $851$ & $58$\\ +FUSE & LiF, SiC & $905$--$1187$ & $17{,}000$ & $1999$--$2007$ & $70$ & $42$\\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Method}\label{sec:method} +% ============================================================================= + +\subsection{Detection} + +Let $f_i$ and $\sigma_i$ be the flux and its error at pixel $i$, and $e_i$ the $90$th +percentile of the flux in a running window. Between dense absorption lines a running +median falls below the continuum and the gaps between lines rise above it, so a peak is +measured against this upper envelope, +\[ +z_i=\frac{f_i-e_i}{\sigma_i}. +\] +For STIS, in both sets, and IUE a peak must reach $z_i\ge6$ and exceed every other pixel within +$2.5$\,\AA\ by $3\sigma_i$, and a Gaussian fitted to it must have a full width at half +maximum between one half and one and a half instrumental widths $\lambda/R$, centred +within one of them. For COS the counts are summed over three bins, six pixels, and a +peak must have a Poisson probability below $10^{-9}$ against the larger of the envelope +of these sums and the background, with a fitted width of $3.3$ to $9.8$ pixels, half to +one and a half times the $6.5$ pixels of the line spread function. For FUSE a filter +matched to a Gaussian of $\sigma=0.026$\,\AA, the line spread function of a point +source, gives the amplitude of a line at each pixel in units of its error; a peak must +reach $5$ in one channel, with a fitted $\sigma$ of $0.013$ to $0.052$\,\AA, narrower +than the airglow lines that fill the aperture. Table~\ref{tab:detect} gives the windows +and the persistence required of each instrument. The geocoronal lines and the strongest +chromospheric and transition-region lines are masked in the STIS, COS and IUE spectra: +\ion{H}{i} Ly$\alpha$, \ion{O}{i} $1302$--$1306$ and $1356$--$1358$\,\AA\ and +\ion{N}{i} $1200$\,\AA\ within $0.6$\,\AA\ (Ly$\alpha$ within $2$\,\AA\ for COS), and +\ion{C}{iii} $1176$, \ion{Si}{iii} $1206$, \ion{N}{v}, \ion{C}{ii} $1335$, +\ion{Si}{iv}, \ion{C}{iv}, \ion{He}{ii} $1640$ and \ion{Mg}{ii} within $1.2$\,\AA. + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{5pt} +\caption{Detection and persistence. The envelope is the running $90$th percentile of the +flux over the window given; a persistent feature recurs within a third of a resolution +element (COS: two pixels). IUE is searched twice, at $6\sigma$ in two images and at +$4.5\sigma$ in three.} +\label{tab:detect} +\begin{tabular}{@{}l>{\raggedright\arraybackslash}p{3.0cm}>{\raggedright\arraybackslash}p{5.4cm}>{\raggedright\arraybackslash}p{5.0cm}@{}} +\toprule + & Envelope & Peak & Persistence\\ +\midrule +STIS & $1$\,\AA & $z\ge6$, $3\sigma$ above the rest of $\pm2.5$\,\AA & two exposures with one grating\\ +COS & $2$\,\AA, sums of six pixels & Poisson $p<10^{-9}$ & two exposures at two FP-POS settings\\ +IUE & $5$\,\AA & $z\ge6$ ($4.5$), $3\sigma$ above the rest of $\pm2.5$\,\AA & two (three) images with one camera and aperture\\ +FUSE & $2$\,\AA & matched filter, $5\sigma$ & $3\sigma$ in a second channel within $20$\,\kms\\ +\bottomrule +\end{tabular} +\end{table} + +\subsection{Persistence} + +A laser on a star stays at the star's wavelength, while a defect of the detector stays +at one pixel. A feature must recur in a second STIS exposure with the same grating, in a +second COS exposure at a different FP-POS setting, which moves the spectrum along the +detector, in a second IUE image with the same camera and aperture, or, for FUSE, at +$3\sigma$ within $20$\,\kms\ in a second channel that records the same wavelength on +another detector (Table~\ref{tab:detect}). + +\subsection{Tests against other stars}\label{sec:tests} + +A feature that other stars share is a line of their spectra, of the instrument or of the +sky. Two tests compare each persistent feature with the other stars. The first counts the +other stars with a detected peak within $15$\,\kms\ ($20$\,\kms\ for FUSE) of the +feature's rest wavelength, each star in its own rest frame from its SIMBAD radial +velocity, and of its observed wavelength; the peaks counted are those at the detection +threshold for STIS and IUE, at $p<10^{-5}$ for COS, and those confirmed in a second +channel for FUSE. The second measures without the detection criteria: the largest +$z_i$ within two pixels of the feature's rest wavelength, in each other star's frame and +in every spectrum of it from the same instrument (for IUE, the same camera), and of its +observed wavelength in every spectrum with the same setting (for STIS, grating and +central wavelength; for IUE, camera and aperture). For COS the second test is the sum of +all other stars' spectra in the same grating, each in its rest frame, in which a feature +with Poisson probability below $10^{-5}$ is a stellar line. A feature that two or more +other stars show, by either test and in either frame, at $z>5$ in the second, is +removed. An IUE feature that one aperture shows and that lies below $2\sigma$ in every +image of the star through the other aperture belongs to the first aperture's position on +the camera, since the two apertures put the same wavelength on different pixels, and is +removed as well. + +\subsection{Sensitivity}\label{sec:sens} + +The nominal threshold of an exposure is the flux of an unresolved line whose peak sits +at the detection threshold, +\[ +F_{\mathrm{nom}}=k\,\sigma_F\sqrt{2\pi}\,\sigma_\lambda,\qquad +\sigma_\lambda=\frac{\lambda}{2.355\,R}, +\] +with $k=6$ for STIS and IUE, $\sigma_F$ the flux error per unit wavelength, and the +median taken over the exposure's unmasked pixels. For COS it is the number of counts a +line needs to reach the Poisson threshold, divided by the $72\%$ of the line spread +function that falls within six pixels and converted to flux with the sensitivity of each +grating setting from the pipeline's extracted spectra; for FUSE it is the larger of the +$5\sigma$ flux in the most sensitive channel covering each wavelength and the $3\sigma$ +flux in the next. Lines of $m=1$ to $8$ times the local nominal flux are injected at +random unmasked wavelengths, six per exposure and multiple (for IUE, one per echelle +order), into $300$ StarCAT and $300$ later STIS exposures, $288$ COS +spectra, $138$ IUE images and $69$ FUSE observations, and the same detector is run on +the result (Figure~\ref{fig:sens}a). Recovery rises to a plateau, the fraction of the +band in which a line can be found at all, since a line on a strong stellar or airglow +line lies below the envelope. We take as a star's limit the flux at which recovery +reaches $90\%$ of the plateau, $m_{90}F_{\mathrm{nom}}$, with $F_{\mathrm{nom}}$ that of +the star's second most sensitive exposure in one setting, since a feature must persist +in two; for FUSE, that of its most sensitive observation, whose recovery already +requires the second channel. The recovery measures detection in single exposures; the +tests against other stars remove a laser only where its wavelength coincides with a +feature of two other stars. + +A source at distance $d$ that radiates isotropically and gives a line flux $F$ at the +Earth has luminosity $L=4\pi d^2F$. A transmitter aimed at Earth whose diffraction-limited +beam from an aperture $D$ fills a solid angle $(\lambda/D)^2$ needs a power +\[ +P=F\,d^2\left(\frac{\lambda}{D}\right)^2, +\] +which we evaluate for $D=10$\,m at the median wavelength of the spectra that give each +limit; the beam, $\lambda d/D$ across, is $0.005$ to $0.025$\,au wide at the stars +within $10$\,pc, so it must be pointed at the Earth's position at arrival rather than at +the Sun, which a transmitter that knows the Earth's orbit can do. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +\subsection{Candidates}\label{sec:cand} + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{6pt} +\caption{Features at each stage. Peaks are detections in single exposures (FUSE: in +single channels); persistent features recur as Table~\ref{tab:detect} requires; the +first and second tests are those of Section~\ref{sec:tests}, the second for IUE +including the comparison of apertures and for COS the other stars' summed spectra. Left +are the features that pass every test, all identified in the text.} +\label{tab:stages} +\begin{tabular}{@{}lrrrrr@{}} +\toprule + & Peaks & Persistent & First test & Second test & Left\\ +\midrule +STIS & $313$ & $16$ & $13$ & $11$ & $11$\\ +STIS, later & $4043$ & $318$ & $217$ & $138$ & $138$\\ +COS & $280$ & $30$ & $21$ & $3$ & $3$\\ +IUE, $6\sigma$ & $643$ & $73$ & $8$ & $0$ & $0$\\ +IUE, $4.5\sigma$ & $1320$ & $61$ & $3$ & $0$ & $0$\\ +FUSE & $9$ & $0$ & -- & -- & $0$\\ +\bottomrule +\end{tabular} +\end{table} + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{5pt} +\caption{The persistent features that pass both tests against other stars. Wavelengths +are in vacuum in the star's rest frame. For STIS, $n$ gives the exposures holding the +feature and the exposures in the setting, and Peak the largest $z$; for COS, $n$ is the +number of exposures and Peak the smallest Poisson probability.} +\label{tab:left} +\begin{tabular}{@{}lllrrl@{}} +\toprule +Star & Type & Setting & $\lambda_{\mathrm{rest}}$ (\AA) & $n$ & Peak\\ +\midrule +Arcturus & K1.5\,III & STIS E230H & $2638.708$ & $6/13$ & $25.3$\\ +Arcturus & K1.5\,III & STIS E230H & $2700.655$ & $3/13$ & $26.0$\\ +Arcturus & K1.5\,III & STIS E230H & $2746.177$ & $2/13$ & $14.1$\\ +Arcturus & K1.5\,III & STIS E230H & $2765.438$ & $3/13$ & $7.5$\\ +Arcturus & K1.5\,III & STIS E230H & $2765.901$ & $4/13$ & $10.1$\\ +Arcturus & K1.5\,III & STIS E230H & $2978.266$ & $2/13$ & $15.8$\\ +Arcturus & K1.5\,III & STIS E230H & $3072.258$ & $2/13$ & $34.4$\\ +EG~And & M2.4\,III, symbiotic & STIS E230M & $1908.816$ & $3/16$ & $7.9$\\ +R~Leo & M7--9e, Mira & STIS E230M & $2612.492$ & $4/4$ & $6.8$\\ +R~Leo & M7--9e, Mira & STIS E230M & $2626.304$ & $4/4$ & $13.4$\\ +R~Leo & M7--9e, Mira & STIS E230M & $2733.136$ & $4/4$ & $8.6$\\ +$\epsilon$~Eri & K2\,V & COS G130M & $1330.925$ & $3$ & $p=4\times10^{-15}$\\ +$\epsilon$~Eri & K2\,V & COS G160M & $1468.405$ & $4$ & $p=10^{-18}$\\ +$\epsilon$~Eri & K2\,V & COS G160M & $1769.775$ & $2$ & $p=4\times10^{-13}$\\ +\bottomrule +\end{tabular} +\end{table} + +Table~\ref{tab:stages} gives the number of features at each stage and +Table~\ref{tab:left} the features that pass both tests in one star. The $11$ STIS +features left lie in three evolved stars. Seven are in the K1.5 +giant Arcturus, between $2638$ and $3072$\,\AA, and recur in every exposure that covers +them with a signal-to-noise ratio above $20$, from $1998$ to $2003$. A laser would +recur too, so what identifies them is their relation to the spectrum around them. The +near-ultraviolet spectrum of a K giant is blanketed by the lines of the iron-group +ions, and between $2600$ and $3100$\,\AA\ the flux reaches the continuum only in +narrow windows between them, which the upper envelope cannot follow and the detector +reads as unresolved peaks. In every exposure each of the seven sits at the brightest +flux within $10$\,\AA\ of it, within $10$ per cent of the next brightest sample for +five of them and below it for the other two, as a window does and an emission line +above the continuum need not; the same rest wavelengths carry peaks at $z>5$ in the G +dwarfs 61~Vir ($2638.7$\,\AA), $\xi$~Boo ($2746.2$\,\AA) and in the K giant $\mu$~Leo +($3072.3$\,\AA), one star each, below the two the second test requires; and their +wavelengths are those of the ions whose lines shape the spectrum, at the star's own +velocity: \ion{V}{ii} $2638.711$ and \ion{Cr}{ii} $2638.705$ ($0.3$ and $0.4$\,\kms), +\ion{Mn}{ii} $2700.654$ ($0.1$\,\kms), \ion{Fe}{ii} $2746.177$ ($0.1$\,\kms), +\ion{Cr}{ii} $2765.461$ ($2.5$\,\kms), \ion{Fe}{ii} $2765.945$ ($4.8$\,\kms), +\ion{Fe}{ii} $2978.219$ ($4.7$\,\kms) and \ion{Cr}{i} $3072.303$ ($4.3$\,\kms) in the +NIST database~\cite{NIST}, where the $4174$ lines of these ions with arc intensities +of $100$ or more over the range put a random wavelength within $0.5$\,\kms\ of one with +probability $0.08$ and within $5$\,\kms\ with probability $0.8$. They are features of +the star's spectrum, and the Arcturus ultraviolet atlas~\cite{Hinkle2005} is where each +can be read against the identified lines around it. Three are in the Mira R~Leo, in all four exposures of one +visit in December $1998$, $50$ to $75\%$ above every other pixel within $2.5$\,\AA; the +ultraviolet lines of Mira variables other than \ion{Mg}{ii} are mostly narrow +\ion{Fe}{ii} emission~\cite{WoodKarovska2000}, and the strongest of the three lies +$3.6$\,\kms\ from \ion{Fe}{ii} $2626.27$\,\AA. The last is in the symbiotic star +EG~And, $13$\,\kms\ from the C\,\textsc{iii}] $1908.73$\,\AA\ intercombination line, +and reaches $z>5$ in seven of the nine exposures that cover it. Two features that pass +the first test, in Arcturus at $3070.70$\,\AA\ and in $\mu$~Leo at $3110.08$\,\AA, reach +$z>5$ in two or more other stars and are removed by the second. + +The later STIS exposures hold $318$ persistent features in $24$ stars, of which $217$ +pass the first test and $138$ the second, in eleven stars: $60$ in the Ap star GY~And, +whose spectrum is a forest of rare-earth lines, $52$ in Betelgeuse, five each in Procyon +and Pollux, four each in $\alpha$~Cen~A and B, three in $\gamma$~Cru, two in TW~Hya and +one each in $\beta$~Pic, $\eta$~Car and $\alpha$~Her. They recur in many exposures of +each star, in Betelgeuse in up to $73$ of $214$, at up to $46\sigma$, and $84$ of the +$138$ lie within $15$\,\kms\ of a line in the NIST database of the ions of stellar +chromospheres and transition regions, where a random wavelength does so with probability +$0.70$, so the database neither confirms nor excludes them: they are lines of spectra so +crowded that the upper envelope cannot follow them, the $\alpha$~Cen features among them +within $15$\,\kms\ of \ion{Fe}{ii} and \ion{Cr}{ii} lines at $6$ to $12\sigma$ in up to +$11$ of their $13$ exposures. No feature of a star with a clean spectrum survives. + +The $30$ persistent COS features lie in five stars, $24$ of them in +$\epsilon$~Eri. Nine are detected in two or more other stars and $18$ more appear in the +other stars' summed spectra. The three left are in $\epsilon$~Eri, the young and active +K2 dwarf, within $2$\,\kms\ of \ion{Cr}{ii} $1330.93$, \ion{C}{i} $1468.41$ and +\ion{Si}{i} $1769.79$\,\AA, where a random wavelength lies within $2$\,\kms\ of one of +the NIST lines compared~\cite{NIST} with probability $0.12$. They recur in most of the +$24$, $33$ and $14$ exposures that cover them from $2015$ to $2025$, at a significance +that follows the depth of each exposure, and the first two appear in the other stars' +summed spectra at Poisson probabilities of $\sci{6}{-5}$ and $\sci{4}{-4}$. They are +lines of the chromosphere of $\epsilon$~Eri, which only its deep spectra show. + +Of the $73$ persistent IUE features at $6\sigma$, eight pass the first test. Four, +in small-aperture SWP images of $\chi^1$~Ori, lie below $2\sigma$ in all of its +large-aperture images. Three, in small-aperture images of $\xi$~Boo~B and Procyon, reach +$z>5$ at the same observed wavelength in four or five other stars' images through the +same camera and aperture. The eighth, in $5$ of the $15$ large-aperture SWP +images of $\alpha$~Cen~A at $1810.64$\,\AA, lies $2.65$\,\AA, $440$\,\kms, redward of +\ion{Si}{ii} $1808.01$\,\AA; the $4.5\sigma$ search adds one at $1819.58$\,\AA, at the +same offset from \ion{Si}{ii} $1816.93$\,\AA. The same offset from \ion{Si}{ii} +$1808$\,\AA\ reaches $z>5$ in images of $\alpha$~Cen~B, $\chi^1$~Ori and +$\epsilon$~Eri, in some images of each star and not in others, and no other strong line +of $\alpha$~Cen~A (\ion{C}{ii}, \ion{Si}{iv}, \ion{C}{iv}, \ion{He}{ii}, \ion{Al}{ii}) +shows it. The STIS E230H spectrum of $\alpha$~Cen~A shows an excess of at most +$(1.0\pm0.1)\times10^{-13}$\,\flux\ within $0.12$\,\AA\ of $1810.64$\,\AA, where the IUE +feature carries $\sci{5}{-13}$ to $\sci{2}{-12}$\,\flux, so the feature is not a line of +the star but an effect of the SWP camera near $1810$\,\AA. + +Of the nine single-channel FUSE peaks, four lie on the Ly$\beta$, \ion{C}{iii} +and \ion{O}{vi} lines of Capella, EV~Lac and AU~Mic, and five reach $5.0$ to $5.5\sigma$ +in AD~Leo, Proxima Centauri and HD~340611 with nothing at $3\sigma$ in the overlapping +channel. None recurs in a second channel. + +\subsection{Limits}\label{sec:limits} + +Figure~\ref{fig:sens} shows the recovery of injected lines and each star's limit, and +Table~\ref{tab:nearest} the best limit at each star within $5$\,pc. Recovery reaches +$90\%$ of its plateau at $2.8$ (COS), $3.1$ (IUE), $3.3$ (StarCAT), $3.9$ (later STIS) +and $4.7$ (FUSE) times the nominal threshold, and the plateaus are $0.96$, $0.91$, +$0.90$, $0.88$ and $0.84$. The median limit is $\sci{4.8}{-16}$\,\flux\ over the $44$ +COS stars, $\sci{6.3}{-15}$ over the $42$ FUSE stars, $\sci{4.8}{-14}$ over the $315$ +StarCAT stars and $\sci{4.9}{-14}$ over the $458$ later STIS stars with two exposures in +one setting, and $\sci{5.3}{-12}$ over the $40$ IUE stars. At the stars within $10$\,pc +the median limit for an isotropic source is $\sci{2.0}{17}$\,W with COS, +$\sci{1.0}{18}$\,W with the later STIS spectra of $30$ of them, $\sci{3.9}{18}$\,W with +FUSE, $\sci{5.1}{18}$\,W with StarCAT and $\sci{2.9}{21}$\,W with IUE, and for a +transmitter aimed at Earth through a $10$\,m aperture $2.7$, $13$, $34$, $95$ and +$\sci{1.4}{5}$\,W. Within $5$\,pc, $21$ of the $27$ stars are limited to $0.1$ to +$7$\,W, Lalande~21185 to $0.11$\,W, Barnard's star to $0.14$\,W and Proxima Centauri to +$1.0$\,W, for a beam held on the Earth; a beam pointed at the Sun would miss the Earth +by $200$ times its width from Barnard's star. + +\begin{figure}[tp] +\centering +\begin{tikzpicture} +\begin{semilogxaxis}[name=rec,width=0.47\textwidth,height=0.4\textwidth,xmin=0.9,xmax=9,ymin=0,ymax=1.02, + xtick={1,1.5,2,3,5,8},xticklabels={$1$,$1.5$,$2$,$3$,$5$,$8$},minor xtick={}, + xlabel={injected flux / $F_{\mathrm{nom}}$},ylabel={fraction recovered}, + tick label style={font=\footnotesize},label style={font=\small},title={(a)},title style={font=\footnotesize}, + legend style={font=\scriptsize,at={(0.97,0.03)},anchor=south east,draw=none,fill=none},legend cell align=left] +\addplot[black,thick,solid,mark=o,mark size=1.5pt,mark options={solid}] coordinates {(1,0.032) (1.5,0.551) (2,0.736) (3,0.806) (5,0.869) (8,0.904)}; +\addlegendentry{STIS, StarCAT ($300$)} +\addplot[black!65,thick,dashdotted,mark=x,mark size=1.8pt,mark options={solid}] coordinates {(1,0.019) (1.5,0.349) (2,0.600) (3,0.753) (5,0.839) (8,0.879)}; +\addlegendentry{STIS, later ($300$)} +\addplot[black,thick,solid,mark=square*,mark size=1.3pt,mark options={solid}] coordinates {(1,0.174) (1.5,0.595) (2,0.797) (3,0.875) (5,0.908) (8,0.956)}; +\addlegendentry{COS ($288$)} +\addplot[black!55,thick,densely dashed,mark=triangle*,mark size=1.6pt,mark options={solid}] coordinates {(1,0.034) (1.5,0.453) (2,0.662) (3,0.819) (5,0.910) (8,0.915)}; +\addlegendentry{IUE ($138$)} +\addplot[black!75,thick,densely dotted,mark=diamond*,mark size=1.6pt,mark options={solid}] coordinates {(1,0.002) (1.5,0.015) (2,0.179) (3,0.511) (5,0.798) (8,0.844)}; +\addlegendentry{FUSE ($69$)} +\end{semilogxaxis} +\begin{loglogaxis}[at={(rec.east)},anchor=west,xshift=1.9cm,width=0.47\textwidth,height=0.4\textwidth, + xmin=1,xmax=1000,ymin=1e-17,ymax=1e-9,xlabel={distance (pc)},ylabel={line-flux limit (\flux)}, + tick label style={font=\footnotesize},label style={font=\small},title={(b)},title style={font=\footnotesize}, + legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8, + text opacity=1},legend cell align=left] +\addplot[only marks,mark=o,mark size=1.1pt,black] coordinates {(1.3,3.31e-15) (1.35,8.23e-15) (3.22,8.2e-15) (3.51,4.65e-12) (3.65,7.55e-15) (4.97,5.84e-15) (5.05,6.64e-15) (5.08,9.62e-15) (5.95,6.08e-14) (5.99,6.5e-15) (6.71,9.39e-15) (8.53,7.04e-15) (8.66,1.09e-14) (9.09,1.01e-14) (9.17,2.47e-14) (9.28,9.59e-15) (9.71,5.67e-15) (11.3,2.45e-14) (11.7,3.5e-13) (12.3,1.5e-14) (13.1,7.5e-14) (15.8,2.58e-13) (15.9,4.26e-15) (17.1,1.6e-14) (20.4,1.74e-14) (20.8,1.12e-14) (21.4,3.65e-14) (21.6,1.63e-14) (21.8,1.54e-14) (22.4,2.96e-13) (22.7,1.34e-14) (23.7,1.24e-14) (24.4,1.29e-14) (28.5,2.51e-14) (29.4,2.14e-14) (29.5,1.76e-14) (29.8,2.19e-14) (31,4.83e-14) (31.8,1.98e-14) (32.1,1.53e-13) (34.4,1.13e-14) (38.1,1.21e-13) (38.2,1.33e-13) (38.3,5.08e-14) (38.7,1.13e-13) (40,1.38e-13) (40.5,7.12e-14) (42.8,2.72e-14) (45.2,1.34e-14) (47,1.36e-14) (47.6,8.52e-15) (47.8,7.38e-14) (48.1,6.32e-15) (49.5,2.44e-14) (50.1,1.78e-13) (52.5,2.92e-14) (53.5,1.26e-14) (53.8,2.74e-14) (56.9,2.69e-14) (57.2,3.57e-14) (59.2,5.5e-14) (59.9,4.6e-14) (60.1,1.08e-14) (60.3,1.46e-14) (61.5,5.04e-14) (61.7,8.66e-15) (62.9,7.02e-13) (64.9,1.83e-14) (68.5,1.53e-14) (69.3,8.35e-14) (71.1,6.81e-15) (72.8,1.68e-12) (74.1,1.01e-13) (77.7,1.51e-13) (82.6,9.04e-14) (84.4,1.2e-14) (87.9,4.96e-13) (90.4,2.95e-13) (91.7,8.04e-15) (93.4,1.61e-13) (93.7,2.72e-14) (94.8,1.96e-11) (98.2,2.81e-13) (101,7.31e-14) (103,1.53e-13) (105,2.2e-14) (106,6.26e-14) (108,6.04e-14) (112,8.67e-14) (113,2.69e-14) (120,1.97e-13) (124,6.78e-14) (125,5.53e-15) (126,4.39e-14) (126,7.46e-13) (126,6.94e-15) (128,1.39e-13) (129,1.34e-13) (129,8.39e-15) (129,7.73e-15) (134,2.46e-14) (138,7.61e-15) (138,7.19e-15) (138,5.21e-15) (142,6.55e-15) (145,7.91e-15) (151,9.23e-11) (157,3.97e-15) (158,9.28e-15) (158,6.58e-15) (167,7.56e-15) (167,9.87e-15) (170,3.16e-13) (172,2.26e-13) (175,1.38e-14) (176,3.47e-15) (177,1.61e-13) (178,2.18e-13) (183,2.05e-13) (184,4.97e-14) (187,7.38e-15) (189,1.17e-13) (193,6.45e-15) (195,1.63e-11) (196,5.67e-14) (197,1.48e-11) (210,2.48e-11) (212,9.82e-14) (225,9.88e-14) (240,4.43e-13) (252,4.45e-13) (254,5.97e-15) (258,1.47e-13) (258,5.23e-12) (259,8.7e-12) (260,3.54e-14) (267,1.25e-14) (274,6.74e-15) (289,5.62e-15) (290,4.76e-14) (293,1.72e-13) (300,5.39e-11) (315,3.74e-14) (323,2.25e-14) (325,1.18e-12) (330,2.4e-13) (331,6.73e-12) (343,1.3e-13) (347,3.61e-13) (354,1.16e-12) (359,7.17e-15) (369,1.55e-14) (370,5.5e-12) (370,1.67e-11) (373,6.5e-11) (377,6.44e-14) (380,3.21e-13) (382,3.09e-11) (386,1.4e-11) (389,5.09e-13) (389,8.03e-14) (401,5.56e-14) (408,7.13e-15) (416,1.22e-13) (425,2.06e-11) (428,3.88e-13) (447,1.58e-11) (469,1.02e-12) (469,4.15e-13) (471,2.27e-14) (473,3.65e-12) (496,3.91e-13) (533,1.57e-13) (546,4.1e-14) (551,6.14e-14) (568,1.97e-13) (578,4.44e-14) (581,7.22e-14) (592,1.12e-13) (608,1.73e-14) (614,7.25e-14) (638,1.55e-14) (674,1.01e-14) (679,1.65e-14) (683,1.08e-14) (696,4.68e-15) (713,1.85e-13) (735,6.07e-13) (739,2.58e-13) (744,8.42e-14) (764,4.91e-13) (776,3.23e-13) (791,4.75e-14) (805,1.09e-12) (809,1.89e-14) (822,4.8e-13) (848,1.5e-14) (849,2.31e-13) (861,5.14e-13) (912,1.11e-14) (912,2.04e-13) (924,2.01e-13) (963,8.31e-13) (989,6.74e-13) (997,7.11e-15) (1e+03,8.84e-14) (1.04e+03,1.26e-13) (1.18e+03,3.07e-13) (1.19e+03,4.26e-13) (1.22e+03,2.28e-13) (1.36e+03,1.34e-13) (1.37e+03,9.16e-14) (1.43e+03,9.73e-13) (1.46e+03,5.54e-14) (1.52e+03,2.23e-14) (1.54e+03,7.24e-14) (1.55e+03,2.09e-12) (1.6e+03,6.67e-14) (1.62e+03,1.27e-14) (1.66e+03,1.34e-13) (1.67e+03,6.14e-15) (1.7e+03,1.24e-13) (1.74e+03,7.58e-13) (1.76e+03,5.22e-14) (1.8e+03,1.95e-13) (1.84e+03,3.09e-13) (1.86e+03,2.05e-13) (1.92e+03,7.83e-13) (1.97e+03,2.16e-13) (1.99e+03,7.76e-13) (2.01e+03,2.82e-13) (2.04e+03,2.19e-13) (2.05e+03,8.47e-14) (2.07e+03,4.99e-13) (2.17e+03,5.51e-13) (2.17e+03,6.05e-15) (2.2e+03,3.53e-13) (2.24e+03,4.99e-14) (2.25e+03,2.37e-14) (2.26e+03,1.12e-13) (2.28e+03,4.48e-13) (2.31e+03,7.95e-13) (2.32e+03,1.98e-13) (2.41e+03,8.87e-13) (2.44e+03,3.22e-13) (2.44e+03,1.4e-13) (2.48e+03,4.75e-14) (2.53e+03,5.5e-14) (2.54e+03,4.48e-14) (2.56e+03,2.5e-13) (2.71e+03,5.42e-14) (2.93e+03,3.92e-14) (3.12e+03,7.22e-13) (3.13e+03,3.47e-13) (3.54e+03,2.07e-13) (3.63e+03,3.84e-14) (3.69e+03,5.77e-14) (3.74e+03,3.31e-14) (3.97e+03,6.16e-14) (4.2e+03,4.49e-15) (4.42e+03,7.94e-14) (4.57e+03,1.03e-13) (4.64e+03,4.42e-14) (4.76e+03,7.82e-15) (4.93e+03,2.39e-14) (5.39e+03,1.22e-14) (5.62e+03,3.54e-14) (6.23e+03,2.43e-14) (6.24e+03,3.31e-15) (6.28e+03,1.68e-14) (6.31e+03,3.11e-14) (7.01e+03,2.14e-14) (7.31e+03,3.47e-14) (8.67e+03,5.65e-15) (8.94e+03,3.61e-14) (1.2e+04,2.53e-14) (1.64e+04,9.95e-14) (2.58e+04,2.14e-14) (3.08e+04,2.12e-14) (4.35e+04,3.5e-14) (4.44e+04,5.74e-14) (4.9e+04,4.88e-14) (6.29e+04,1.18e-13) (1e+05,4.14e-14) (1.04e+05,6.19e-15) (1.25e+05,2.16e-14) (2.5e+05,3.81e-14) (3.12e+05,3.5e-14) (3.57e+05,2.34e-14) (6.25e+05,1.39e-14) (9.09e+05,2.89e-14)}; +\addlegendentry{STIS, StarCAT} +\addplot[only marks,mark=x,mark size=1.1pt,black!65,fill opacity=0.8] coordinates {(1.35,4.58e-15) (1.35,2.71e-14) (2.55,9.02e-17) (2.67,1.26e-14) (2.98,4.37e-16) (3.22,1.46e-13) (3.29,3.13e-15) (3.51,1.73e-14) (3.79,1.47e-16) (3.93,9.62e-15) (4,1.89e-15) (5.37,3.26e-15) (5.7,1.84e-15) (5.76,5.61e-15) (5.91,1.56e-15) (5.92,1.3e-15) (5.99,2.67e-15) (6.01,8.22e-15) (6.1,2.65e-15) (6.2,2.11e-15) (6.3,1.31e-17) (6.49,3.46e-17) (6.54,3.79e-17) (7.68,7.33e-12) (8.02,2.43e-15) (8.16,2.4e-15) (8.81,4.27e-15) (8.84,2.7e-15) (9.71,6.68e-17) (10,1.2e-14) (10.1,4.7e-15) (10.4,5.91e-15) (10.4,1.56e-13) (10.5,4.58e-14) (11.2,5.89e-15) (11.3,8.59e-15) (11.3,6.2e-14) (12.6,8.1e-14) (12.9,3.64e-15) (12.9,2.41e-13) (12.9,6.77e-14) (13,1.93e-15) (13.5,5.34e-15) (14.4,3.91e-15) (14.6,8.79e-15) (14.6,5.49e-15) (14.7,3.45e-15) (16.8,1.72e-14) (17.4,4.25e-15) (17.6,2.04e-15) (18.1,3.42e-15) (18.3,1.92e-17) (19,3.38e-15) (19.6,4.38e-15) (19.6,9.51e-14) (19.8,3.69e-14) (20.4,7.46e-15) (21.6,7.37e-14) (22.6,4.77e-14) (24.3,1.91e-11) (26.5,5.54e-14) (27.2,1.74e-14) (28.5,3.39e-14) (28.8,1.85e-14) (31.9,1.73e-10) (35.7,8.3e-13) (36.5,1.98e-14) (38.7,2e-14) (46.7,8e-14) (47.3,8.15e-15) (48.1,1.05e-13) (48.4,8.4e-14) (48.5,1.23e-13) (49.5,1.99e-14) (50.3,8.56e-14) (50.8,1.57e-12) (52.5,3.88e-14) (54.2,2.68e-14) (56.4,5.8e-15) (57.2,2.43e-14) (57.9,2.76e-14) (58.7,5.01e-15) (58.8,5.81e-15) (60.1,2.57e-15) (60.4,3.06e-13) (61.5,3.25e-14) (62.7,4.87e-15) (63.1,5.01e-15) (63.8,1.78e-14) (64.9,7.3e-15) (69.8,1.7e-10) (71,8.36e-15) (71.3,4.25e-11) (71.6,5.96e-14) (74.1,2.22e-14) (75.6,1.57e-12) (76.2,5.9e-14) (76.7,7.79e-14) (77.4,2.38e-14) (79.9,3.98e-15) (81,7.12e-15) (82,3.8e-11) (82.9,7.83e-15) (87.9,2.08e-14) (90.7,4.13e-15) (93.5,3.67e-14) (93.7,2.31e-14) (94.2,5.38e-15) (97.9,5.39e-15) (98.2,2.78e-13) (99,2.64e-14) (100,1.9e-13) (101,1.55e-12) (107,1.85e-13) (110,7.51e-15) (112,4.02e-13) (112,7.84e-18) (114,1.25e-14) (115,6.76e-15) (116,9.79e-14) (117,1.81e-14) (120,7.61e-14) (120,7.09e-13) (122,1.05e-13) (124,1.68e-13) (124,8.24e-11) (126,3.16e-14) (129,7.82e-14) (130,5.9e-15) (130,2.36e-14) (131,3.05e-14) (132,7.47e-15) (132,2.14e-15) (133,6.63e-14) (134,6.9e-15) (134,9.52e-15) (135,7.2e-11) (136,1.03e-14) (136,5.38e-14) (137,3.29e-13) (137,1.47e-14) (138,5.4e-15) (138,7.82e-14) (140,7.23e-14) (141,1.16e-13) (142,1.23e-14) (143,1.94e-11) (146,6.51e-15) (146,2.22e-15) (149,1.14e-14) (151,7.64e-14) (151,9.93e-10) (152,5.84e-14) (152,1.26e-14) (153,7.74e-15) (153,3.07e-12) (156,4.35e-14) (157,5.3e-13) (158,3.67e-17) (158,9.52e-14) (158,1.5e-13) (158,1.46e-13) (168,1.7e-13) (168,2e-13) (170,2.28e-14) (170,2.83e-14) (172,2.34e-14) (173,6.77e-14) (176,2.3e-13) (176,1.11e-14) (181,1.41e-13) (182,1.34e-13) (183,3.37e-13) (184,6.55e-14) (189,1e-14) (192,3.32e-15) (194,2.89e-14) (201,6.22e-13) (202,1.11e-14) (206,2.47e-14) (207,1.48e-13) (211,2.46e-14) (212,6.95e-10) (213,1.64e-14) (219,1.22e-14) (230,7.28e-14) (241,7.02e-14) (246,1.43e-14) (257,1.87e-11) (262,8.05e-14) (263,1.13e-14) (267,1.47e-14) (268,3.47e-14) (275,2.98e-14) (278,2e-14) (279,2.08e-12) (279,1.04e-13) (280,1.78e-14) (280,3.09e-14) (281,1.62e-11) (302,2.2e-12) (305,4.13e-14) (310,5.41e-12) (310,7.67e-14) (316,6.81e-13) (323,2.47e-14) (325,1.53e-11) (332,1.45e-10) (343,8.1e-14) (351,3.64e-14) (351,1.06e-13) (351,8.6e-15) (354,4.3e-13) (358,1.04e-12) (359,3.72e-14) (367,3.61e-14) (369,1.55e-11) (376,2.11e-11) (377,1.39e-13) (386,4.62e-14) (399,2.4e-13) (407,3.28e-12) (408,1.63e-14) (409,3.2e-11) (410,9.26e-14) (412,7.66e-14) (415,1.36e-13) (424,1.02e-11) (425,8.04e-15) (427,7.6e-14) (433,3.12e-13) (450,1.18e-14) (458,1.28e-13) (460,1.02e-13) (462,3.53e-10) (468,9.72e-14) (488,3.8e-12) (490,5.62e-12) (499,4.79e-14) (500,1.69e-11) (524,1.43e-14) (529,1.6e-11) (534,8.25e-14) (546,4.91e-14) (556,5.3e-13) (559,2.04e-12) (561,3.09e-14) (568,3.15e-13) (631,3.47e-13) (636,8.96e-13) (702,6.43e-14) (707,2.44e-13) (731,5.77e-14) (735,1.45e-13) (763,2.28e-14) (780,1.25e-13) (854,8.17e-14) (923,1.15e-13) (929,4.13e-14) (946,1.1e-14) (959,7.01e-13) (973,4.6e-14) (1.01e+03,1.96e-13) (1.01e+03,1.94e-12) (1.06e+03,6.04e-14) (1.07e+03,5.52e-15) (1.12e+03,1.96e-13) (1.12e+03,2.99e-13) (1.13e+03,1.18e-14) (1.14e+03,1.56e-14) (1.15e+03,7.85e-13) (1.16e+03,4.02e-12) (1.23e+03,1.35e-11) (1.25e+03,9.52e-15) (1.25e+03,7.61e-13) (1.28e+03,6e-14) (1.29e+03,7.02e-15) (1.3e+03,9.62e-14) (1.31e+03,4.99e-13) (1.31e+03,4.25e-14) (1.34e+03,3.06e-14) (1.37e+03,1.05e-13) (1.41e+03,1.22e-13) (1.42e+03,5.33e-14) (1.42e+03,5.5e-13) (1.44e+03,1.92e-13) (1.48e+03,9.86e-13) (1.52e+03,2.88e-14) (1.55e+03,1.46e-13) (1.55e+03,4.82e-13) (1.56e+03,1.03e-12) (1.57e+03,3.75e-13) (1.62e+03,3.89e-13) (1.62e+03,1.84e-13) (1.63e+03,4.99e-14) (1.68e+03,5.35e-13) (1.69e+03,2.97e-13) (1.69e+03,4.72e-13) (1.7e+03,1.31e-13) (1.83e+03,4.85e-14) (1.86e+03,2.87e-13) (1.91e+03,4.58e-14) (1.91e+03,8.34e-14) (1.92e+03,5.72e-13) (1.97e+03,2.71e-14) (1.97e+03,2.33e-13) (1.99e+03,2.89e-13) (2.01e+03,2.04e-13) (2.02e+03,2.43e-13) (2.06e+03,1.82e-13) (2.07e+03,2.88e-13) (2.17e+03,2.26e-13) (2.19e+03,2.49e-13) (2.2e+03,5.77e-13) (2.26e+03,1.61e-13) (2.31e+03,3.35e-13) (2.36e+03,2.24e-13) (2.41e+03,3.53e-13) (2.41e+03,4.45e-13) (2.42e+03,1.25e-13) (2.43e+03,1.82e-13) (2.45e+03,5.17e-13) (2.48e+03,1.86e-13) (2.51e+03,3.29e-13) (2.51e+03,7.84e-14) (2.53e+03,1.58e-13) (2.55e+03,4.48e-14) (2.55e+03,2.01e-13) (2.56e+03,2.55e-13) (2.56e+03,4.27e-14) (2.63e+03,7.83e-14) (2.71e+03,3.42e-14) (2.88e+03,8.63e-15) (3.12e+03,2.61e-13) (3.13e+03,2.84e-13) (3.45e+03,1.15e-13) (3.73e+03,1.33e-13) (3.78e+03,9.84e-14) (3.99e+03,6.73e-15) (4.04e+03,2.3e-13) (4.21e+03,2.77e-14) (4.23e+03,5.69e-14) (4.62e+03,2.25e-13) (4.67e+03,3.67e-13) (4.71e+03,1.39e-13) (4.92e+03,2.83e-14) (5.19e+03,4.12e-14) (5.39e+03,4.59e-14) (5.55e+03,1.09e-13) (5.59e+03,5.55e-14) (5.69e+03,1.17e-13) (6.61e+03,3.99e-14) (7.06e+03,5.65e-14) (7.11e+03,4.83e-14) (7.31e+03,4.78e-14) (8.94e+03,4.52e-14) (9.65e+03,4.73e-14) (1.01e+04,4.88e-14) (1.25e+04,5.18e-14) (1.36e+04,4.6e-14) (1.44e+04,6.73e-14) (1.64e+04,9.72e-14) (2.03e+04,4.94e-14) (2.04e+04,2.26e-14) (2.09e+04,4.62e-14) (2.21e+04,4.29e-14) (2.23e+04,8.86e-14) (2.48e+04,3.86e-14) (2.49e+04,5.38e-14) (2.68e+04,5.31e-14) (2.72e+04,3.74e-14) (2.74e+04,4.55e-14) (2.76e+04,4.1e-14) (2.89e+04,4.43e-14) (2.94e+04,3.22e-14) (3.12e+04,4.13e-14) (3.22e+04,3.54e-14) (3.22e+04,7.44e-14) (3.33e+04,6.79e-14) (3.4e+04,1.29e-14) (3.53e+04,4.56e-14) (3.69e+04,5.14e-14) (3.69e+04,5.47e-14) (3.91e+04,4.02e-14) (3.95e+04,5.13e-14) (4.63e+04,6.97e-14) (4.67e+04,4.63e-14) (4.98e+04,3.86e-14) (5.29e+04,4.39e-14) (6.9e+04,4.53e-14) (7.52e+04,4.84e-14) (8e+04,6.27e-14) (8.62e+04,4.77e-14) (1.15e+05,9.93e-14) (1.27e+05,4.89e-14) (1.37e+05,1.17e-13) (1.64e+05,3.2e-14) (1.92e+05,1.1e-13) (2e+05,4.11e-14) (2.44e+05,3.45e-14) (3.85e+05,5.12e-14) (4.55e+05,2.34e-14) (6.25e+05,8.76e-14) (1e+06,3.15e-14)}; +\addlegendentry{STIS, later} +\addplot[only marks,mark=square*,mark size=1.1pt,black,fill opacity=0.8] coordinates {(1.83,3.03e-16) (3.22,7.76e-16) (3.29,5.66e-16) (3.5,1.28e-15) (3.52,3.76e-16) (3.67,3.19e-16) (3.93,6.74e-16) (4.31,3.95e-16) (4.31,1.49e-15) (4.55,3.42e-16) (4.64,1.11e-14) (4.67,2.26e-16) (4.87,3.39e-17) (4.97,1.19e-15) (4.97,1.86e-16) (5.11,1.86e-15) (5.11,2.54e-15) (5.52,1.29e-15) (5.52,1.71e-15) (5.69,2.19e-16) (5.79,1.2e-15) (5.99,3.18e-16) (6.3,1.55e-16) (6.71,2.12e-15) (6.75,2.01e-15) (6.75,3.52e-15) (6.86,2.34e-16) (7.05,5.72e-17) (7.24,1.62e-16) (7.41,3.57e-17) (8.08,2.86e-16) (8.52,2.03e-14) (8.66,9.24e-17) (8.66,2.6e-15) (8.81,5.92e-16) (8.81,2.31e-16) (9.17,1.3e-16) (9.28,1.16e-15) (9.42,1.15e-15) (9.44,6.95e-16) (9.49,1.95e-16) (9.71,2.74e-16) (9.78,1.58e-16) (10,1.54e-15)}; +\addlegendentry{COS} +\addplot[only marks,mark=triangle*,mark size=1.1pt,black!55,fill opacity=0.8] coordinates {(1.35,1.24e-12) (1.35,3.72e-12) (2.64,2.72e-09) (2.67,5.33e-12) (3.22,1.23e-12) (3.51,8.46e-12) (3.64,1.77e-12) (3.65,9.58e-12) (4.97,7.81e-13) (5.01,2.24e-12) (5.01,4.57e-12) (5.08,3.97e-12) (5.13,9.39e-12) (5.92,3.16e-11) (6.01,4.09e-12) (6.04,6.65e-12) (6.1,5.23e-12) (6.71,1.54e-12) (6.75,2.48e-10) (6.75,1e-11) (7.23,2.39e-12) (7.44,1.97e-12) (7.46,1.07e-11) (7.68,1.01e-09) (7.7,4.17e-11) (8.02,4.86e-12) (8.06,3.33e-11) (8.34,1.91e-11) (8.47,1.68e-11) (8.53,4.9e-12) (8.61,6.28e-12) (8.66,3.73e-13) (8.91,1.73e-11) (9.09,6.34e-12) (9.17,1.67e-12) (9.2,7.63e-12) (9.28,3.04e-12) (9.32,6.9e-12) (9.89,3.69e-12) (9.92,1.09e-12)}; +\addlegendentry{IUE} +\addplot[only marks,mark=diamond*,mark size=1.1pt,black!75,fill opacity=0.8] coordinates {(1.3,3.62e-15) (1.35,2.04e-14) (3.5,7.54e-15) (4.67,5.46e-15) (4.97,3.08e-15) (5.05,4.11e-15) (5.13,1.32e-14) (7.46,5.57e-15) (7.7,3.74e-14) (8.66,9.16e-15) (9.07,4.72e-15) (9.2,4.3e-15) (9.28,5.78e-15) (9.71,4.13e-15) (10.4,5.66e-15) (10.4,5.9e-15) (10.4,2.36e-14) (10.9,6.65e-15) (11,1.08e-14) (12.5,4.86e-15) (13.1,2.28e-14) (13.5,6.59e-15) (13.8,5.81e-15) (14.4,2.2e-14) (14.4,3.28e-15) (14.7,8.93e-15) (14.8,1.26e-13) (14.9,3.47e-15) (15,4.05e-15) (15.5,2.93e-14) (16.4,5.41e-15) (16.7,6.34e-15) (16.8,6.58e-15) (17.1,8.03e-14) (17.3,1.54e-14) (17.8,1.12e-14) (17.9,6.28e-15) (18,1.32e-14) (18.3,5.87e-15) (19.4,5.86e-15) (19.6,1.12e-14) (19.6,2.7e-15)}; +\addlegendentry{FUSE} +\addplot[densely dotted,black!45,domain=1:9.142,samples=2,forget plot] {1e23/(4*pi*(x*3.0857e18)^2)} node[pos=0.78,sloped,above,font=\tiny,text=black!60,inner sep=1pt] {$10^{16}$\,W}; +\addplot[densely dotted,black!45,domain=1:91.42,samples=2,forget plot] {1e25/(4*pi*(x*3.0857e18)^2)} node[pos=0.78,sloped,above,font=\tiny,text=black!60,inner sep=1pt] {$10^{18}$\,W}; +\addplot[densely dotted,black!45,domain=1:914.2,samples=2,forget plot] {1e27/(4*pi*(x*3.0857e18)^2)} node[pos=0.78,sloped,above,font=\tiny,text=black!60,inner sep=1pt] {$10^{20}$\,W}; +\addplot[densely dotted,black!45,domain=1:1000,samples=2,forget plot] {1e29/(4*pi*(x*3.0857e18)^2)} node[pos=0.78,sloped,above,font=\tiny,text=black!60,inner sep=1pt] {$10^{22}$\,W}; +\end{loglogaxis} +\end{tikzpicture} +\caption{(a)~The fraction of injected lines recovered against their flux in units of +each exposure's nominal threshold, with the number of exposures in brackets. +(b)~Each star's limit on an unresolved line against its distance, with dotted lines of +constant isotropic luminosity.} +\label{fig:sens} +\end{figure} + +\begin{table}[t] +\centering\small +\setlength{\tabcolsep}{5pt} +\caption{The best limit at each star within $5$\,pc. $\lambda$ is the median wavelength +of the spectra that give it, $F$ the line flux at the Earth, $L=4\pi d^2F$ the luminosity +of an isotropic source and $P_{10\,\mathrm{m}}$ the power of a transmitter aimed at +Earth through a diffraction-limited $10$\,m aperture.} +\label{tab:nearest} +\begin{tabular}{@{}lrlrlll@{}} +\toprule +Star & $d$ (pc) & Instrument & $\lambda$ (\AA) & $F$ (\flux) & $L$ (W) & $P_{10\,\mathrm{m}}$ (W)\\ +\midrule +Proxima Centauri & $1.30$ & STIS & $1391$ & $3.3\times10^{-15}$ & $6.7\times10^{16}$ & $1.0\times10^{0}$\\ +$\alpha$~Cen~A & $1.35$ & STIS & $1412$ & $8.2\times10^{-15}$ & $1.8\times10^{17}$ & $2.8\times10^{0}$\\ +$\alpha$~Cen~B & $1.35$ & STIS, later & $1384$ & $4.6\times10^{-15}$ & $9.9\times10^{16}$ & $1.5\times10^{0}$\\ +Barnard's star & $1.83$ & COS & $1212$ & $3.0\times10^{-16}$ & $1.2\times10^{16}$ & $1.4\times10^{-1}$\\ +Lalande~21185 & $2.55$ & STIS, later & $1379$ & $9.0\times10^{-17}$ & $7.0\times10^{15}$ & $1.1\times10^{-1}$\\ +Sirius~A & $2.64$ & IUE & $1563$ & $2.7\times10^{-9}$ & $2.3\times10^{23}$ & $4.4\times10^{6}$\\ +Sirius~B & $2.67$ & STIS, later & $2826$ & $1.3\times10^{-14}$ & $1.1\times10^{18}$ & $6.8\times10^{1}$\\ +Ross~154 & $2.98$ & STIS, later & $1379$ & $4.4\times10^{-16}$ & $4.6\times10^{16}$ & $7.0\times10^{-1}$\\ +$\epsilon$~Eri & $3.22$ & COS & $1372$ & $7.8\times10^{-16}$ & $9.6\times10^{16}$ & $1.4\times10^{0}$\\ +GJ~887 & $3.29$ & COS & $1586$ & $5.7\times10^{-16}$ & $7.3\times10^{16}$ & $1.5\times10^{0}$\\ +61~Cyg~A & $3.50$ & COS & $1362$ & $1.3\times10^{-15}$ & $1.9\times10^{17}$ & $2.8\times10^{0}$\\ +Procyon & $3.51$ & STIS, later & $1289$ & $1.7\times10^{-14}$ & $2.6\times10^{18}$ & $3.4\times10^{1}$\\ +GJ~725~A & $3.52$ & COS & $1587$ & $3.8\times10^{-16}$ & $5.6\times10^{16}$ & $1.1\times10^{0}$\\ +$\epsilon$~Ind & $3.64$ & IUE & $2991$ & $1.8\times10^{-12}$ & $2.8\times10^{20}$ & $2.0\times10^{4}$\\ +$\tau$~Cet & $3.65$ & STIS & $1389$ & $7.5\times10^{-15}$ & $1.2\times10^{18}$ & $1.9\times10^{1}$\\ +GJ~1061 & $3.67$ & COS & $1587$ & $3.2\times10^{-16}$ & $5.2\times10^{16}$ & $1.0\times10^{0}$\\ +Luyten's star & $3.79$ & STIS, later & $1377$ & $1.5\times10^{-16}$ & $2.5\times10^{16}$ & $3.8\times10^{-1}$\\ +Kapteyn's star & $3.93$ & COS & $1362$ & $6.7\times10^{-16}$ & $1.2\times10^{17}$ & $1.8\times10^{0}$\\ +Kruger~60 & $4.00$ & STIS, later & $1380$ & $1.9\times10^{-15}$ & $3.6\times10^{17}$ & $5.5\times10^{0}$\\ +GJ~628 & $4.31$ & COS & $1586$ & $4.0\times10^{-16}$ & $8.8\times10^{16}$ & $1.8\times10^{0}$\\ +van Maanen's star & $4.31$ & COS & $1639$ & $1.5\times10^{-15}$ & $3.3\times10^{17}$ & $7.1\times10^{0}$\\ +GJ~674 & $4.55$ & COS & $1217$ & $3.4\times10^{-16}$ & $8.5\times10^{16}$ & $1.0\times10^{0}$\\ +LAWD~37 & $4.64$ & COS & $1668$ & $1.1\times10^{-14}$ & $2.9\times10^{18}$ & $6.3\times10^{1}$\\ +GJ~876 & $4.67$ & COS & $1312$ & $2.3\times10^{-16}$ & $5.9\times10^{16}$ & $8.1\times10^{-1}$\\ +DENIS~J0255$-$4700 & $4.87$ & COS & $1156$ & $3.4\times10^{-17}$ & $9.6\times10^{15}$ & $1.0\times10^{-1}$\\ +AD~Leo & $4.97$ & COS & $1139$ & $1.2\times10^{-15}$ & $3.5\times10^{17}$ & $3.6\times10^{0}$\\ +GJ~832 & $4.97$ & COS & $1312$ & $1.9\times10^{-16}$ & $5.5\times10^{16}$ & $7.5\times10^{-1}$\\ +\bottomrule +\end{tabular} +\end{table} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +\emph{Laser searches.} The searches of +Section~\ref{sec:intro}~\cite{ReinesMarcy2002,TellisMarcy2015,TellisMarcy2017,Zuckerman2023,FieldsGoodman2025} +look for unresolved lines in optical spectra from the ground, with thresholds of tens of +kilowatts to megawatts for a $10$\,m transmitter at the distances of their stars; the +HARPS search, like this one, finds that the features which survive its tests lie in +stars whose own spectra must be excluded first. We find no search of ultraviolet +spectra. + +\emph{Ultraviolet spectra of nearby stars.} The archives were assembled to study +chromospheres, transition regions, winds and the interstellar medium. StarCAT collects +the STIS echelle spectra of $545$ stars~\cite{Ayres2010}, the pipeline's x1d files hold +the later ones, and the COS spectra of nearby M +dwarfs come largely from programmes that measure their ultraviolet radiation for the +atmospheres of their planets~\cite{France2016}. These are the deepest ultraviolet spectra +of the nearest stars, and the narrow emission lines they reveal, such as the +\ion{Fe}{ii} lines that follow \ion{Mg}{ii} through the pulsation of Mira +variables~\cite{WoodKarovska2000}, are what an unresolved feature must be told apart +from. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +No unresolved ultraviolet emission line that a laser aimed at Earth could produce is +found in the STIS, COS, IUE and FUSE spectra of nearby stars. Every feature that persists +in one star and that the tests against other stars do not remove belongs to the spectrum +of an evolved star or is a chromospheric line of $\epsilon$~Eri, and at the nearest stars +a transmitter of about a watt behind a $10$\,m aperture, its beam held on the Earth, +would have been seen, from $21$ of the $27$ stars within $5$\,pc. + +The limits apply to lines that are steady or recur in the spectra of a star, that rise +above the local upper envelope and that lie away from the masked lines, and to the +epochs of the archival spectra. A laser at the wavelength of a strong stellar line, one +in an evolved star whose spectrum holds narrow emission lines, or one that was off when +the spectra were taken is not constrained. The COS spectra of the stars beyond $10$\,pc +remain to be searched. + +\section*{Acknowledgements} + +This work is based on observations made with the NASA/ESA Hubble Space Telescope, +obtained from the Mikulski Archive for Space Telescopes (MAST) at the Space Telescope +Science Institute, which is operated by the Association of Universities for Research in +Astronomy, Inc., under NASA contract NAS~5-26555, and on IUE and FUSE data from MAST. It +uses the StarCAT catalogue, the SIMBAD database, operated at CDS, Strasbourg, France, +and the NIST Atomic Spectra Database, and the software Astropy~\cite{Astropy2022}, +NumPy~\cite{Harris2020} and SciPy~\cite{Virtanen2020}. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{SchwartzTownes1961} +R.~N. Schwartz and C.~H. Townes, Interstellar and interplanetary communication by +optical masers, \emph{Nature} \textbf{190}, 205 (1961). + +\bibitem{ReinesMarcy2002} +A.~E. Reines and G.~W. Marcy, Optical search for extraterrestrial intelligence: a +spectroscopic search for laser emission from nearby stars, \emph{Publ. Astron. Soc. +Pac.} \textbf{114}, 416 (2002). + +\bibitem{TellisMarcy2015} +N.~K. Tellis and G.~W. Marcy, A search for optical laser emission using Keck HIRES, +\emph{Publ. Astron. Soc. Pac.} \textbf{127}, 540 (2015). + +\bibitem{TellisMarcy2017} +N.~K. Tellis and G.~W. Marcy, A search for laser emission with megawatt thresholds from +5600 FGKM stars, \emph{Astron. J.} \textbf{153}, 251 (2017). + +\bibitem{Zuckerman2023} +A.~Zuckerman, Z.~Ko, H.~Isaacson, et al., The Breakthrough Listen search for +intelligent life: a laser search pipeline for the Automated Planet Finder, +\emph{Astron. J.} \textbf{165}, 114 (2023). + +\bibitem{FieldsGoodman2025} +B.~Fields and J.~C. Goodman, A 2821 star optical SETI survey using ESO HARPS archival +data, arXiv:2508.08628 (2025). + +\bibitem{Hinkle2005} +K.~Hinkle, L.~Wallace, J.~Valenti and T.~Ayres, \emph{Ultraviolet Atlas of the Arcturus +Spectrum, 1150--3800\,\AA} (Astronomical Society of the Pacific, San Francisco, 2005). + +\bibitem{RedfieldLinsky2008} +S.~Redfield and J.~L. Linsky, The structure of the local interstellar medium. IV. +Dynamics, morphology, physical properties, and implications of cloud-cloud +interactions, \emph{Astrophys. J.} \textbf{673}, 283 (2008). + +\bibitem{Woodgate1998} +B.~E. Woodgate, R.~A. Kimble, C.~W. Bowers, et al., The Space Telescope Imaging +Spectrograph design, \emph{Publ. Astron. Soc. Pac.} \textbf{110}, 1183 (1998). + +\bibitem{Ayres2010} +T.~R. Ayres, StarCAT: a catalog of Space Telescope Imaging Spectrograph ultraviolet +echelle spectra of stars, \emph{Astrophys. J. Suppl. Ser.} \textbf{187}, 149 (2010). + +\bibitem{Green2012} +J.~C. Green, C.~S. Froning, S.~Osterman, et al., The Cosmic Origins Spectrograph, +\emph{Astrophys. J.} \textbf{744}, 60 (2012). + +\bibitem{Boggess1978} +A.~Boggess, F.~A. Carr, D.~C. Evans, et al., The IUE spacecraft and instrumentation, +\emph{Nature} \textbf{275}, 372 (1978). + +\bibitem{NicholsLinsky1996} +J.~S. Nichols and J.~L. Linsky, The final archive and recalibration of the +International Ultraviolet Explorer (IUE) satellite, \emph{Astron. J.} \textbf{111}, 517 +(1996). + +\bibitem{Moos2000} +H.~W. Moos, W.~C. Cash, L.~L. Cowie, et al., Overview of the Far Ultraviolet +Spectroscopic Explorer mission, \emph{Astrophys. J.} \textbf{538}, L1 (2000). + +\bibitem{Sahnow2000} +D.~J. Sahnow, H.~W. Moos, T.~B. Ake, et al., On-orbit performance of the Far +Ultraviolet Spectroscopic Explorer satellite, \emph{Astrophys. J.} \textbf{538}, L7 +(2000). + +\bibitem{Dixon2007} +W.~V. Dixon, D.~J. Sahnow, P.~E. Barrett, et al., CalFUSE version 3: a data reduction +pipeline for the Far Ultraviolet Spectroscopic Explorer, \emph{Publ. Astron. Soc. Pac.} +\textbf{119}, 527 (2007). + +\bibitem{Wenger2000} +M.~Wenger, F.~Ochsenbein, D.~Egret, et al., The SIMBAD astronomical database, +\emph{Astron. Astrophys. Suppl. Ser.} \textbf{143}, 9 (2000). + +\bibitem{NIST} +A.~Kramida, Yu.~Ralchenko, J.~Reader and NIST ASD Team, \emph{NIST Atomic Spectra +Database} (National Institute of Standards and Technology, Gaithersburg, 2024). + +\bibitem{WoodKarovska2000} +B.~E. Wood and M.~Karovska, Studying the pulsation of Mira variables in the +ultraviolet, \emph{Astrophys. J.} \textbf{535}, 304 (2000). + +\bibitem{France2016} +K.~France, R.~O.~P. Loyd, A.~Youngblood, et al., The MUSCLES Treasury Survey. I. +Motivation and overview, \emph{Astrophys. J.} \textbf{820}, 89 (2016). + +\bibitem{Astropy2022} +Astropy Collaboration, A.~M. Price-Whelan, P.~L. Lim, et al., The Astropy Project: +sustaining and growing a community-oriented open-source project and the latest major +release (v5.0) of the core package, \emph{Astrophys. J.} \textbf{935}, 167 (2022). + +\bibitem{Harris2020} +C.~R. Harris, K.~J. Millman, S.~J. van~der Walt, et al., Array programming with NumPy, +\emph{Nature} \textbf{585}, 357 (2020). + +\bibitem{Virtanen2020} +P.~Virtanen, R.~Gommers, T.~E. Oliphant, et al., SciPy 1.0: fundamental algorithms for +scientific computing in Python, \emph{Nat. Methods} \textbf{17}, 261 (2020). + +\end{thebibliography} + +\end{document} diff --git a/papers/wow_cloud/wow_cloud.pdf b/papers/wow_cloud/wow_cloud.pdf new file mode 100644 index 0000000000000000000000000000000000000000..641e92ad28f64501a5bd8c5503b894b7d9e9929e Binary files /dev/null and b/papers/wow_cloud/wow_cloud.pdf differ diff --git a/papers/wow_cloud/wow_cloud.tex b/papers/wow_cloud/wow_cloud.tex new file mode 100644 index 0000000000000000000000000000000000000000..518f23aac49098537b6771bf330e1f75901cd3e7 --- /dev/null +++ b/papers/wow_cloud/wow_cloud.tex @@ -0,0 +1,221 @@ +% !TEX program = pdflatex +\documentclass[11pt]{article} +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\textheight}{9in} +\setlength{\topmargin}{0pt} +\addtolength{\topmargin}{-\headheight} +\addtolength{\topmargin}{-\headsep} +\ifdefined\pdfpagewidth \pdfpagewidth=8.5in \pdfpageheight=11in \fi +\ifdefined\pagewidth \pagewidth=8.5in \pageheight=11in \fi +\usepackage{amsmath,amssymb} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top]{caption} +\usepackage{longtable} +\usepackage{enumitem} +\usepackage{tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=1.18} +\emergencystretch=3em + +% ---- notation --------------------------------------------------------------- +\newcommand{\um}{\,$\mu$m} +\newcommand{\kms}{km\,s$^{-1}$} +\newcommand{\flux}{erg\,cm$^{-2}$\,s$^{-1}$} +\newcommand{\mA}{m\AA} +\newcommand{\sci}[2]{#1\times10^{#2}} +\newcommand{\ion}[2]{#1\,\textsc{#2}} +\newcommand{\nuc}[2]{$^{#1}$#2} +\newcommand{\lxl}{$L_X/L_\mathrm{bol}$} + +% ---- front matter ----------------------------------------------------------- +\title{No Hydrogen at the Wow!\ Signal's Velocity\\ in Its Two Candidate Fields} +\author{Charles C. Norton} +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +A reanalysis of the Ohio State data of 1977 places the Wow!\ signal at +$1420.726$\,MHz, a velocity of $-74$\,\kms\ in the local standard of rest, in one of two +fields at declination $-26^\circ57'\pm20'$, and reads it as a flare of stimulated 21\,cm +emission from a cold hydrogen cloud, which must then lie on one of those lines of sight +at that velocity. The HI4PI survey shows none. Averaged over $10'$ at each field the +brightness at $-74$\,\kms\ is $0.010$ and $0.003$\,K against a noise of $0.019$\,K, and +a line one channel ($1.29$\,\kms) wide is limited to a column of +$1.4\times10^{17}$\,cm$^{-2}$ at $3\sigma$, while each field's own emission peaks at +$+3$ to $+4$\,\kms\ at $26$\,K. Within each field's $\pm20'$ the brightest pixel between +$-79$ and $-69$\,\kms\ reaches $2.8$ times its noise of $0.040$\,K, none of the $8800$ +pixels within $3^\circ$ of either field reaches five times its own noise there, and the +mean of those pixels shows only the smooth wing of the local emission, $0.014$\,K, with +no feature at the velocity. A cloud filling HI4PI's $16.2'$ beam at the signal's +velocity lies in neither field; one of angular size $\theta$ smaller than the beam is +limited to $1.4\times10^{17}(16.2'/\theta)^2$\,cm$^{-2}$ in a single channel, a limit +that only interferometric 21\,cm data at arcminute resolution can lower. +\end{abstract} + +% ============================================================================= +\section{Introduction}\label{sec:intro} +% ============================================================================= + +On 1977 August 15 the Big Ear radio telescope of Ohio State University recorded a +narrowband source near the 21\,cm line that rose and fell as the sky drifted through its +beam and was never seen again, the Wow!\ signal. Searches of the same sky since, among +them with the Very Large Array~\cite{GrayMarvel2001} and at the Australian +radio telescopes~\cite{GrayEllingsen2002}, found nothing. Arecibo Wow!~I proposed an +astrophysical origin: a transient brightening of a cold hydrogen cloud by stimulated +emission, triggered by a passing burst of radiation~\cite{Mendez2024}. Arecibo Wow!~II +reanalysed the archival Ohio data and revised the signal's properties: a frequency of +$1420.726$\,MHz, a velocity of $-74$\,\kms\ in the local standard of rest, and one of two +fields, at right ascensions $19^\mathrm{h}25^\mathrm{m}02^\mathrm{s}$ and +$19^\mathrm{h}27^\mathrm{m}55^\mathrm{s}$ and declination $-26^\circ57'$ within +$\pm20'$~\cite{Mendez2025}. + +A stimulated-emission flare needs hydrogen at the signal's velocity on the line of +sight, and the HI4PI survey~\cite{HI4PI2016} maps the 21\,cm line over the whole sky at +$16.2'$ resolution. This note reads HI4PI at the two fields. + +% ============================================================================= +\section{Data and method}\label{sec:method} +% ============================================================================= + +HI4PI combines the Effelsberg-Bonn H\,\textsc{i} Survey and the Galactic All-Sky +Survey~\cite{McClureGriffiths2009}, which covers these fields, into spectra on a HEALPix +grid of $3.4'$ pixels with channels of $1.29$\,\kms\ in the local standard of rest. For +each field we average the spectra of the pixels within $10'$ of its centre, $38$ and +$40$ pixels, and read the brightness at $-74$\,\kms, the brightest channel within +$\pm5$\,\kms\ of it, and the noise from the emission-free channels beyond +$\pm200$\,\kms. A line one channel wide at $3\sigma$ has, if optically thin, a column +$N=1.823\times10^{18}\,\int T_B\,dv$\,cm$^{-2}$~\cite{DickeyLockman1990}. Each pixel +within the field's uncertainty, $\pm3$\,s of right ascension and $\pm20'$ of +declination, is read on its own between $-79$ and $-69$\,\kms, and every pixel within +$3^\circ$ is tested there against five times its own noise. The mean spectrum of those +pixels shows any diffuse gas at the velocity. + +% ============================================================================= +\section{Results}\label{sec:results} +% ============================================================================= + +Table~\ref{tab:fields} gives the two fields. Neither holds emission at the signal's +velocity: the $10'$ averages are $0.010$ and $0.003$\,K at $-74$\,\kms\ against a noise +of $0.019$\,K, the brightest channels within $\pm5$\,\kms\ reach $1.6$ and $2.5$ times +the noise, and a one-channel line is limited to $1.4\times10^{17}$ and +$1.3\times10^{17}$\,cm$^{-2}$. Each field's hydrogen lies near zero velocity, peaking at +$+4.0$ and $+2.7$\,\kms\ with $26$\,K (Figure~\ref{fig:spec}). Inside each field's +uncertainty, $21$ and $20$ pixels, the brightest at the velocity holds $0.106$ and +$0.113$\,K, $2.7$ and $2.8$ times the single-pixel noise of $0.040$\,K, as the largest of +some $160$ independent channels does by chance. None of the $8826$ and $8836$ pixels +within $3^\circ$ reaches five times its own noise between $-79$ and $-69$\,\kms. Their +mean spectrum, with a noise of $0.0026$\,K a channel, carries the wing of the local +emission falling smoothly from $0.03$\,K at $-50$\,\kms\ through $0.014$\,K at the +signal's velocity to the baseline near $-100$\,\kms, with no feature at $-74$\,\kms. + +\begin{table}[t] +\centering\small +\caption{HI4PI at the two fields of Arecibo Wow!~II. $T_{-74}$ is the brightness of the +$10'$ average at $-74$\,\kms, $\sigma$ its noise, $T_\mathrm{max}$ the brightest channel +within $\pm5$\,\kms, $N_{3\sigma}$ the column of a one-channel line at $3\sigma$, and +$v_\mathrm{peak}$ and $T_\mathrm{peak}$ the field's own emission.} +\label{tab:fields} +\begin{tabular}{lrrrrrrr} +\toprule +Field & $l$ & $b$ & $T_{-74}$ (K) & $\sigma$ (K) & $T_\mathrm{max}$ (K) & $N_{3\sigma}$ (cm$^{-2}$) & $v_\mathrm{peak}$, $T_\mathrm{peak}$ \\ +\midrule +$19^\mathrm{h}25^\mathrm{m}02^\mathrm{s}$ & $11.62^\circ$ & $-18.82^\circ$ & $0.010$ & $0.019$ & $0.032$ & $1.4\times10^{17}$ & $+4.0$\,\kms, $25.8$\,K \\ +$19^\mathrm{h}27^\mathrm{m}55^\mathrm{s}$ & $11.87^\circ$ & $-19.41^\circ$ & $0.003$ & $0.019$ & $0.047$ & $1.3\times10^{17}$ & $+2.7$\,\kms, $26.4$\,K \\ +\bottomrule +\end{tabular} +\end{table} + +\begin{figure}[tp] +\centering +\begin{tikzpicture} +\begin{axis}[width=0.85\textwidth,height=0.42\textwidth,xmin=-120,xmax=-20,ymin=-0.06,ymax=0.32, + xlabel={$v_\mathrm{LSR}$ (\kms)},ylabel={$T_B$ (K)},tick label style={font=\footnotesize},label style={font=\small}, + legend style={font=\scriptsize,at={(0.03,0.97)},anchor=north west,draw=none,fill=white,fill opacity=0.8,text opacity=1},legend cell align=left] +\fill[black!8] (axis cs:-79,-0.06) rectangle (axis cs:-69,0.32); +\addplot[black!45,densely dotted,forget plot] coordinates {(-74,-0.06) (-74,0.32)}; +\addplot[black,thin,const plot mark mid] coordinates {(-119.7,-0.004) (-118.4,-0.029) (-117.1,-0.012) (-115.8,-0.019) (-114.5,-0.002) (-113.3,0.009) (-112.0,-0.011) (-110.7,0.026) (-109.4,-0.019) (-108.1,-0.008) (-106.8,-0.004) (-105.5,-0.036) (-104.2,0.017) (-103.0,-0.005) (-101.7,-0.016) (-100.4,0.015) (-99.1,-0.002) (-97.8,0.005) (-96.5,-0.009) (-95.2,0.024) (-93.9,0.018) (-92.7,-0.017) (-91.4,0.023) (-90.1,-0.021) (-88.8,0.009) (-87.5,-0.007) (-86.2,0.019) (-84.9,0.040) (-83.6,0.012) (-82.3,-0.020) (-81.1,-0.022) (-79.8,0.004) (-78.5,-0.002) (-77.2,0.032) (-75.9,0.003) (-74.6,0.010) (-73.3,0.018) (-72.0,0.001) (-70.8,-0.002) (-69.5,-0.010) (-68.2,-0.003) (-66.9,0.030) (-65.6,-0.016) (-64.3,-0.039) (-63.0,0.033) (-61.7,0.000) (-60.5,0.003) (-59.2,0.034) (-57.9,0.000) (-56.6,0.027) (-55.3,-0.003) (-54.0,0.029) (-52.7,-0.007) (-51.4,-0.004) (-50.1,0.011) (-48.9,0.005) (-47.6,0.020) (-46.3,0.020) (-45.0,0.046) (-43.7,0.012) (-42.4,0.019) (-41.1,0.042) (-39.8,0.036) (-38.5,0.055) (-37.3,0.054) (-36.0,0.046) (-34.7,0.079) (-33.4,0.066) (-32.1,0.058) (-30.8,0.095) (-29.5,0.095) (-28.2,0.138) (-26.9,0.179) (-25.7,0.212) (-24.4,0.247) (-23.1,0.299)}; +\addlegendentry{$19^\mathrm{h}25^\mathrm{m}02^\mathrm{s}$, $10'$} +\addplot[black!50,thin,const plot mark mid] coordinates {(-119.7,0.025) (-118.4,-0.011) (-117.1,-0.013) (-115.8,0.000) (-114.5,-0.027) (-113.3,-0.021) (-112.0,0.002) (-110.7,0.004) (-109.4,0.004) (-108.1,-0.013) (-106.8,-0.004) (-105.5,-0.033) (-104.2,-0.018) (-103.0,-0.013) (-101.7,0.008) (-100.4,-0.003) (-99.1,-0.024) (-97.8,-0.035) (-96.5,0.005) (-95.2,-0.011) (-93.9,0.033) (-92.7,0.011) (-91.4,-0.008) (-90.1,0.010) (-88.8,0.015) (-87.5,0.035) (-86.2,-0.011) (-84.9,0.024) (-83.6,-0.007) (-82.3,0.011) (-81.1,-0.013) (-79.8,0.004) (-78.5,0.003) (-77.2,0.011) (-75.9,0.047) (-74.6,0.003) (-73.3,0.046) (-72.0,0.007) (-70.8,0.014) (-69.5,0.011) (-68.2,0.026) (-66.9,0.040) (-65.6,0.024) (-64.3,0.008) (-63.0,-0.000) (-61.7,0.003) (-60.5,0.038) (-59.2,0.012) (-57.9,0.037) (-56.6,0.040) (-55.3,0.025) (-54.0,0.033) (-52.7,0.045) (-51.4,0.024) (-50.1,0.052) (-48.9,0.064) (-47.6,0.028) (-46.3,-0.004) (-45.0,0.024) (-43.7,0.037) (-42.4,0.034) (-41.1,0.032) (-39.8,0.061) (-38.5,0.053) (-37.3,0.046) (-36.0,0.069) (-34.7,0.089) (-33.4,0.069) (-32.1,0.080) (-30.8,0.114) (-29.5,0.113) (-28.2,0.113) (-26.9,0.144) (-25.7,0.191) (-24.4,0.255) (-23.1,0.307)}; +\addlegendentry{$19^\mathrm{h}27^\mathrm{m}55^\mathrm{s}$, $10'$} +\addplot[black,very thick] coordinates {(-119.7,-0.0069) (-118.4,-0.0079) (-117.1,-0.0074) (-115.8,-0.0031) (-114.5,-0.0043) (-113.3,-0.0055) (-112.0,-0.0061) (-110.7,-0.0031) (-109.4,-0.0030) (-108.1,-0.0058) (-106.8,-0.0101) (-105.5,-0.0093) (-104.2,-0.0051) (-103.0,-0.0058) (-101.7,-0.0040) (-100.4,-0.0019) (-99.1,0.0019) (-97.8,0.0001) (-96.5,0.0015) (-95.2,0.0010) (-93.9,0.0034) (-92.7,0.0079) (-91.4,0.0060) (-90.1,0.0063) (-88.8,0.0072) (-87.5,0.0100) (-86.2,0.0080) (-84.9,0.0079) (-83.6,0.0100) (-82.3,0.0098) (-81.1,0.0099) (-79.8,0.0128) (-78.5,0.0130) (-77.2,0.0136) (-75.9,0.0124) (-74.6,0.0129) (-73.3,0.0135) (-72.0,0.0140) (-70.8,0.0166) (-69.5,0.0150) (-68.2,0.0196) (-66.9,0.0200) (-65.6,0.0191) (-64.3,0.0209) (-63.0,0.0203) (-61.7,0.0201) (-60.5,0.0232) (-59.2,0.0240) (-57.9,0.0260) (-56.6,0.0284) (-55.3,0.0275) (-54.0,0.0272) (-52.7,0.0313) (-51.4,0.0315) (-50.1,0.0318) (-48.9,0.0317) (-47.6,0.0341) (-46.3,0.0336) (-45.0,0.0365) (-43.7,0.0385) (-42.4,0.0420) (-41.1,0.0443) (-39.8,0.0503) (-38.5,0.0523) (-37.3,0.0589) (-36.0,0.0630) (-34.7,0.0724) (-33.4,0.0820) (-32.1,0.0915) (-30.8,0.1053) (-29.5,0.1264) (-28.2,0.1477) (-26.9,0.1811) (-25.7,0.2237) (-24.4,0.2755) (-23.1,0.3464)}; +\addlegendentry{mean within $3^\circ$} +\end{axis} +\end{tikzpicture} +\caption{HI4PI spectra of the two fields averaged within $10'$, and the mean of the +$8826$ pixels within $3^\circ$ of the first, from $-120$ to $-20$\,\kms; the grey band is +$-79$ to $-69$\,\kms\ and the dotted line the signal's $-74$\,\kms. The fields' own +emission, off the plot, peaks at $+3$ to $+4$\,\kms\ with $26$\,K.} +\label{fig:spec} +\end{figure} + +% ============================================================================= +\section{Related work}\label{sec:related} +% ============================================================================= + +The Wow!\ signal's sky has been revisited with the Very Large Array~\cite{GrayMarvel2001} +and at the Australian radio telescopes~\cite{GrayEllingsen2002} in search of a +recurrence, and Arecibo Wow!~I and~II~\cite{Mendez2024,Mendez2025} proposed and refined +an astrophysical origin in cold hydrogen. We find no earlier reading of 21\,cm surveys at +the revised fields and velocity. + +% ============================================================================= +\section{Conclusion}\label{sec:conclusion} +% ============================================================================= + +HI4PI shows no hydrogen at the Wow!\ signal's revised velocity in either of its candidate +fields: no emission above its noise in the $10'$ averages, no pixel within $3^\circ$ at +five times its own noise, and only the smooth wing of the local emission in the region's +mean. A cloud that fills the $16.2'$ beam at $-74$\,\kms\ is excluded to a column of +$1.4\times10^{17}$\,cm$^{-2}$ in a single channel. A stimulated-emission source that the +Big Ear's beam could catch need not fill HI4PI's, and a compact cloud of angular size +$\theta$ escapes these data below $1.4\times10^{17}(16.2'/\theta)^2$\,cm$^{-2}$, about +$4\times10^{19}$\,cm$^{-2}$ for $\theta=1'$. Interferometric 21\,cm maps of the two +fields at arcminute resolution, which the declination of $-27^\circ$ puts within reach of +the southern arrays, would test the cloud the hypothesis needs. + +\section*{Acknowledgements} + +This work uses the HI4PI survey through the CDS, Strasbourg, and the software astropy, +astropy-healpix and NumPy. + +\begin{thebibliography}{99}\small\raggedright +\setlength{\itemsep}{1pt} + +\bibitem{GrayMarvel2001} +R.~H. Gray and K.~B. Marvel, A VLA search for the Ohio State ``Wow'', \emph{Astrophys. +J.} \textbf{546}, 1171 (2001). + +\bibitem{GrayEllingsen2002} +R.~H. Gray and S.~Ellingsen, A search for periodic emissions at the Wow locale, +\emph{Astrophys. J.} \textbf{578}, 967 (2002). + +\bibitem{Mendez2024} +A.~M\'endez, K.~N. Ortiz Ceballos and J.~I. Zuluaga, Arecibo Wow!\ I: an astrophysical +explanation for the Wow!\ signal, arXiv:2408.08513 (2024). + +\bibitem{Mendez2025} +A.~M\'endez, K.~N. Ortiz Ceballos, J.~I. Zuluaga, et al., Arecibo Wow!\ II: revised +properties of the Wow!\ signal from archival Ohio SETI data, arXiv:2508.10657 (2025). + +\bibitem{HI4PI2016} +HI4PI Collaboration, N.~Ben~Bekhti, L.~Fl\"oer, R.~Keller, et al., HI4PI: a full-sky +H\,\textsc{i} survey based on EBHIS and GASS, \emph{Astron. Astrophys.} \textbf{594}, +A116 (2016). + +\bibitem{McClureGriffiths2009} +N.~M. McClure-Griffiths, D.~J. Pisano, M.~R. Calabretta, et al., GASS: the Parkes +Galactic All-Sky Survey. I. Survey description, goals, and initial data release, +\emph{Astrophys. J. Suppl.} \textbf{181}, 398 (2009). + +\bibitem{DickeyLockman1990} +J.~M. Dickey and F.~J. Lockman, H\,\textsc{i} in the Galaxy, \emph{Annu. Rev. Astron. +Astrophys.} \textbf{28}, 215 (1990). + +\end{thebibliography} + +\end{document} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..d31bb44aa05e1ca2547dfd7b4717a4a8482f669d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,19 @@ +numpy>=1.26 +scipy>=1.11 +astropy>=6.0 +astroquery>=0.4.7 +astropy-healpix>=1.0 +h5py>=3.10 +hdf5plugin>=4.4 +fsspec>=2024.2 +requests>=2.31 +pandas>=2.1 +pyarrow>=15 +matplotlib>=3.8 +cdflib>=1.3 +lightkurve>=2.4 +tess-point>=0.9 +daschlab>=0.4 +sparclclient>=1.2 +# GPU paths (curved-drift radio search, GPU trends): torch with CUDA +torch>=2.2 diff --git a/seti.py b/seti.py new file mode 100644 index 0000000000000000000000000000000000000000..45ad8cbc7fc24ac3ab58507fef6519008c876afc --- /dev/null +++ b/seti.py @@ -0,0 +1,480 @@ +"""Command line of seti-tools: search families, the coverage store and the self-test.""" +import math +import os +import sys +import tempfile +import time +import traceback + +# one math-library thread per process, so the process cap bounds CPU load +for _v in ("OMP_NUM_THREADS", "OPENBLAS_NUM_THREADS", "MKL_NUM_THREADS"): + os.environ.setdefault(_v, "1") +import numpy as np # noqa: E402 + +for _p in (os.environ.get("SETITOOLS", ""), os.path.dirname(os.path.abspath(__file__))): + if _p and os.path.isdir(os.path.join(_p, "setitools")): + sys.path.insert(0, _p) + break + +from setitools import science # noqa: E402 + +CHECKS = [] + + +def check(name): + def wrap(fn): + def run(): + t0 = time.time() + try: + msg = fn() or "" + CHECKS.append((name, True, msg, time.time() - t0)) + except Exception as e: + CHECKS.append((name, False, "%s: %s" % (type(e).__name__, e), time.time() - t0)) + traceback.print_exc() + run.__name__ = fn.__name__ + return run + return wrap + + +def synthetic_star(n=6000, nv=6, seed=0, line_at=3000, line_amp=0.0, line_visits=(1, 4), topo_at=None, topo_amp=0.0, + sigma=1.5): + """Synthetic visits of one star: absorption features, noise, and optional rest-frame and observatory-frame lines.""" + rng = np.random.default_rng(seed) + dlog = 6e-6 + lam = 10 ** (np.log10(15200.0) + dlog * np.arange(n)) + base = 1.0 - 0.3 * np.exp(-0.5 * ((np.arange(n)[:, None] - rng.uniform(0, n, 60)[None, :]) / 3.0) ** 2).sum(1) + vobs = np.linspace(-25.0, 25.0, nv) + V, E = [], [] + x = np.arange(n) + for k in range(nv): + f = base * (1.0 + (line_amp if k in line_visits else 0.0) * np.exp(-0.5 * ((x - line_at) / sigma) ** 2)) + if topo_at is not None: + # an observatory-frame line moves in the rest frame from visit to visit + shift = -vobs[k] / science.C / (dlog * math.log(10.0)) + f = f * (1.0 + topo_amp * np.exp(-0.5 * ((x - topo_at - shift) / sigma) ** 2)) + e = np.full(n, 0.004) + V.append(1000.0 * (f + rng.normal(0, 0.004, n))) + E.append(1000.0 * e) + return lam, np.array(V), np.array(E), np.zeros((nv, n), bool), vobs, dlog + + +@check("spectra: matched filter recovers an unresolved line at its width") +def t_matched(): + rng = np.random.default_rng(1) + n, sp = 4000, 2.0 + res = rng.normal(0, 0.01, n) + res += 0.06 * np.exp(-0.5 * ((np.arange(n) - 1700) / sp) ** 2) + snr, amp = science.matched_filter(res, np.full(n, 0.01), sp) + j = int(np.argmax(snr)) + w = science.width_ratio(res, j, sp) + assert abs(j - 1700) <= 1 and snr[j] > 8 and 0.7 < w < 1.4, (j, snr[j], w) + return "peak %d, S/N %.1f, width ratio %.2f, amplitude %.3f" % (j, snr[j], w, amp[j]) + + +@check("spectra: a single hot pixel is spiky, a resolved line is not") +def t_spiky(): + f = np.ones(200) + f[100] = 3.0 + assert science.profile_is_spiky(f, 100, 2.0, base=1.0) + g = 1.0 + np.exp(-0.5 * ((np.arange(200) - 100) / 2.0) ** 2) + assert not science.profile_is_spiky(g, 100, 2.0, base=1.0) + + +@check("spectra: LSF width on log and linear grids") +def t_lsf(): + a = science.lsf_sigma_px(22500, dlog10=6e-6) + b = science.lsf_sigma_px(115000, 5000.0, 0.01) + assert 1.2 < a < 1.5 and 1.7 < b < 1.9, (a, b) + return "APOGEE %.2f px, HARPS %.2f px" % (a, b) + + +@check("spectra: visit recurrence keeps an intermittent rest-frame line and rejects an observatory-frame one") +def t_recurrence(): + sp = science.lsf_sigma_px(22500, dlog10=6e-6) + lam, V, E, bad, vobs, _ = synthetic_star(line_at=2500, line_amp=0.06, topo_at=4200, topo_amp=0.06, sigma=sp) + out = science.visit_recurrence(lam, V, E, bad, vobs, sp) + pos = [g["lam"] for g in out["pos"]] + assert any(abs(x - lam[2500]) < 0.5 for x in pos), pos + assert not any(abs(x - lam[4200]) < 3.0 for x in pos), pos + assert out["terrestrial"], out + return "rest-frame groups %s, terrestrial %s" % (pos, out["terrestrial"]) + + +@check("spectra: dropouts in several visits do not turn the others into emission") +def t_dropout(): + sp = science.lsf_sigma_px(22500, dlog10=6e-6) + lam, V, E, bad, vobs, _ = synthetic_star(nv=7, line_amp=0.0, sigma=sp) + for k, s in ((0, 3000), (4, 3004), (5, 3001)): + V[k, s:s + 8] *= 0.33 + bad[1:3, 2990:3020] = True + out = science.visit_recurrence(lam, V, E, bad, vobs, sp) + assert not any(abs(g["lam"] - lam[3003]) < 3.0 for g in out["pos"]), out["pos"] + return "emission groups near the dropouts: none" + + +@check("spectra: twin model cannot absorb narrow emission") +def t_twin(): + rng = np.random.default_rng(2) + n = 800 + x = np.arange(n) + feats = rng.uniform(0, n, 30) + def star(s): + return 1 - 0.2 * np.exp(-0.5 * ((x[:, None] - feats[None, :] - s) / 3.0) ** 2).sum(1) + basis = np.array([star(0.0) + rng.normal(0, 0.002, n) for _ in range(5)]) + target = star(0.0) + 0.05 * np.exp(-0.5 * ((x - 400) / 1.5) ** 2) + rng.normal(0, 0.002, n) + model, _ = science.twin_model(target, basis, np.ones(n, bool)) + res = target / model - 1 + assert res[400] > 0.03, res[400] + return "residual at the line %.3f" % res[400] + + +@check("spectra: fixed-line absorption against twins, and the weighted multi-line score") +def t_absorption(): + rng = np.random.default_rng(5) + grid = np.round(np.arange(4200.0, 4300.0, 0.01), 2) + feats = rng.uniform(4200, 4300, 150) + + def star(depth_scale): + f = np.ones(len(grid)) + for c in feats: + f *= 1 - depth_scale * 0.3 * np.exp(-0.5 * ((grid - c) / 0.05) ** 2) + return f + twins = [star(1.0 + 0.02 * k) + rng.normal(0, 0.003, len(grid)) for k in range(6)] + lines = (4220.0, 4250.0, 4280.0) + target = star(1.01) + rng.normal(0, 0.003, len(grid)) + sp = 4250.0 / 115000.0 / 2.3548 + for c in lines: + target *= 1 - 0.03 * np.exp(-0.5 * ((grid - c) / sp) ** 2) + z = [science.line_absorption(target, twins, grid, c, 115000.0)[0] for c in lines] + centres = rng.uniform(4210, 4290, 300) + null = np.array([science.line_absorption(target, twins, grid, c, 115000.0)[0] for c in centres + if all(abs(c - x) > 1 for x in lines)]) + zc, p = science.combined_line_score(z, [1.0, 1.0, 1.0], null[np.isfinite(null)]) + assert all(v < -4 for v in z) and p < 0.01, (z, zc, p) + return "line scores %s, combined %.1f, p %.4f" % ([round(v, 1) for v in z], zc, p) + + +@check("frames: barycentric correction and Solar System frame track") +def t_frames(): + bc = float(science.barycentric_correction(83.82, -5.39, 60000.0, "Paranal")) + assert abs(bc) < 31.0, bc + tr, half = science.line_tracks(1420.405751768, 83.82, -5.39, np.array([60000.0, 60000.01]), "GBT", + star=dict(rv=20.0, rv_err=0.5, plx=50.0, pmra=10.0, pmdec=-5.0)) + df = (tr["ssb"] - 1420.405751768) / 1420.405751768 * science.C + assert np.all(np.abs(df) < 31.0) and set(tr) == {"cmb", "ssb", "star"}, (df, tr.keys()) + return "Paranal correction %.3f km/s; GBT SSB offset %.3f km/s" % (bc, df[0]) + + +@check("radio: track search recovers an injected drifting tone") +def t_track(): + rng = np.random.default_rng(3) + nt, nch = 16, 40000 + z = rng.normal(0, 1, (nt, nch)).astype(np.float32) + path_ch = 20000 + 3.0 * np.arange(nt) + z[np.arange(nt), path_ch.astype(int)] += 2.5 + foff, f_first = 2.8e-6, 1420.0 + deltas = np.arange(-15000, 15001, 500) + out = science.track_search(z, f_first + foff * path_ch, f_first, foff, 3, deltas) + p = science.gumbel_p(out["null"], out["s"].max()) + assert out["s"].max() > 7 and p < 1e-3 and out["flat"].max() < out["s"].max(), (out["s"].max(), p) + return "track %.1f sigma, zero-drift %.1f, p %.1e" % (out["s"].max(), out["flat"].max(), p) + + +@check("timeseries: Theil-Sen slope and differential trend") +def t_trend(): + rng = np.random.default_rng(4) + t = np.sort(rng.uniform(1890, 1990, 400)) + lab = np.where(t < 1940, "A", "B") + + def curve(s): + return t, 10.0 + s * (t - 1940) / 100.0 + rng.normal(0, 0.15, len(t)), lab + r = science.differential_trend(curve(0.30), [curve(0.0) for _ in range(6)]) + assert abs(r["diff"] - 0.30) < 0.06 and r["sigma"] > 3, r + return "difference %.3f mag/century, %.1f sigma, device %s" % (r["diff"], r["sigma"], science._device()) + + +@check("photometry: binned spectral ratio") +def t_ratio(): + w = np.linspace(0.75, 5.0, 300) + tgt = [dict(wave=x, flux=1.0 + (0.1 if x > 4 else 0.0), err=0.01) for x in w] + ctl = [dict(wave=x, flux=1.0, err=0.01) for x in w] + c, r, e = science.binned_ratio(tgt, [ctl, ctl], np.linspace(0.75, 5.0, 18)) + assert abs(r[c > 4.2].mean() - 1.1) < 0.01 and abs(r[c < 3].mean() - 1.0) < 0.01, r + return "ratio above 4.2 um %.3f" % r[c > 4.2].mean() + + +@check("coverage: record a run, read a target's card and coverage, vets stored as codes") +def t_coverage(): + from setitools import core + path = os.path.join(tempfile.mkdtemp(), "coverage.db") + db = core.connect(path) + sel = core.ids_selection(["gaia_dr3:1", "gaia_dr3:2", "gaia_dr3:3"]) + core.record_search("test_run", "Test approach", archive="test", selection=sel, code=__file__, db=db, + n_targets=3, n_unit="stars") + core.record_targets("test_run", [dict(target="gaia_dr3:1", stat=2.5, p=0.3), + dict(target="gaia_dr3:2", vet="cosmic-ray"), + dict(target="gaia_dr3:3", vet="X-ray source (eRASS1); binary (RUWE 2.1, NSS 0)", + note="5 pc")], db=db) + card = core.card("gaia_dr3:2", db) + row = db.execute("SELECT vet, note FROM coverage WHERE target = 'gaia_dr3:3'").fetchone() + assert core.covered("gaia_dr3:1", "Test approach", db) == ["test_run"] and card[0][7] == "cosmic-ray", card + assert row == ("active-star; binary", "X-ray source (eRASS1); binary (RUWE 2.1, NSS 0); 5 pc"), row + assert not core.covered("gaia_dr3:4", db=db) + try: + core.record_targets("test_run", [dict(target="gaia_dr3:4", vet="an explanation with no code")], db=db) + raise AssertionError("an explanation without a code was recorded") + except KeyError: + pass + db.close() + return "three targets recorded and read back; a worded vet stored as its codes; an uncoded one refused" + + +def synthetic_plate(nfib=40, npix=4000, seed=0, sigma=1.0): + """Synthetic sky-fibre plate: Gaussian noise of known variance and a sky model with thirty airglow lines.""" + rng = np.random.default_rng(seed) + lam = 10 ** (3.5563 + 1e-4 * np.arange(npix)) + cont = 1.0 + 0.3 * np.sin(np.arange(npix) / 700.0) + sky = np.tile(cont, (nfib, 1)) + glow = rng.choice(np.arange(60, npix - 60), 30, replace=False) + for j in glow: + sky[:, j - 1:j + 2] += 8.0 + return dict(lam=lam, sky=np.arange(nfib), flux=rng.normal(0, sigma, (nfib, npix)), + ivar=np.full((nfib, npix), 1.0 / sigma ** 2), skym=sky), glow + + +@check("end to end, sky fibres: unresolved lines recovered; shared, airglow, masked and absorption features set aside") +def t_skyfibre(): + from setitools import lasers as L + k = np.arange(-4, 5) + w = np.exp(-0.5 * (k / L.skyfibre_LSF_PX) ** 2) + gain = math.sqrt(float(np.sum(w ** 2))) + clean = lambda p: p[0] > 0 and not p[5] # noqa: E731 + # uninjected plate: the false-alarm rate of clean peaks per fibre + d0, glow = synthetic_plate(seed=11) + false = sum(1 for p in L.skyfibre_detect(d0, common=False, shared_min=1)[0] if clean(p)) + rng = np.random.default_rng(12) + rec = {1: [0, 0], 2: [0, 0]} + for trial in range(3): + d, glow = synthetic_plate(seed=20 + trial) + _, on_line, _ = L.skyfibre_detect(d, common=False) + ok = np.nonzero(~on_line)[0] + ok = ok[(ok > 10) & (ok < len(d["lam"]) - 10)] + where = [(i, int(rng.choice(ok))) for i in range(len(d["sky"]))] + for i, j in where: + d["flux"][i][j - 4:j + 5] += 10.0 / gain * w # S/N 10 in the matched filter + for rule in (1, 2): + peaks = L.skyfibre_detect(d, common=False, shared_min=rule)[0] + for i, j in where: + rec[rule][1] += 1 + rec[rule][0] += any(clean(p) and p[1] == i and abs(p[2] - j) <= 1 for p in peaks) + # hard negatives: a line in six fibres, on an airglow line, on a masked pixel, and an absorption dip; a one-pixel spike passes the width test + d, glow = synthetic_plate(seed=30) + j_sh, j_sp, j_gl, j_m, j_dip = 900, 1700, int(glow[0]), 2600, 3300 + for i in range(6): + d["flux"][i][j_sh - 4:j_sh + 5] += 10.0 / gain * w + d["flux"][10][j_sp] += 25.0 + d["flux"][11][j_gl - 4:j_gl + 5] += 10.0 / gain * w + d["flux"][12][j_m - 4:j_m + 5] += 10.0 / gain * w + d["ivar"][12][j_m] = 0.0 + d["flux"][13][j_dip - 4:j_dip + 5] -= 10.0 / gain * w + peaks = L.skyfibre_detect(d, common=False, shared_min=1)[0] + near = lambda i, j: [p for p in peaks if p[1] == i and abs(p[2] - j) <= 1] # noqa: E731 + assert all(near(i, j_sh) and all("shared" in p[5] for p in near(i, j_sh)) for i in range(6)), "shared line kept" + spike = [p for p in near(10, j_sp) if p[0] > 0] + assert not any(clean(p) for p in near(11, j_gl)), near(11, j_gl) + assert not any(clean(p) for p in near(12, j_m)), near(12, j_m) + assert not any(clean(p) for p in near(13, j_dip)) and any(p[0] < 0 for p in near(13, j_dip)), near(13, j_dip) + # two strong lines at one redshift mark a galaxy; a lone line or [S II] pair does not + z = 0.3 + gal = L.skyfibre_lines(sorted([6562.80 * (1 + z), 5006.84 * (1 + z)])) + sii = L.skyfibre_lines(sorted([6716.44 * (1 + z), 6730.82 * (1 + z)])) + assert gal and abs(gal[0] - z) < 1e-3 and L.skyfibre_lines([7000.0]) is None and sii is None, (gal, sii) + r1, r2 = rec[1][0] / rec[1][1], rec[2][0] / rec[2][1] + assert r1 > 0.7 and r2 > 0.9 and false <= 1, (r1, r2, false) + return ("S/N 10 lines recovered %.2f (one-fibre rule) and %.2f (two-fibre); %d clean peaks in %d noise fibres; " + "a one-pixel spike %s" % (r1, r2, false, len(d0["sky"]), + "kept at S/N %.0f, width %.2f px" % (spike[0][3], spike[0][4]) if spike and + clean(spike[0]) else "set aside")) + + +@check("end to end, Kepler glints: periodic flashes recovered and phase-locked, flare-like and random ones not") +def t_glints(): + """Isolated-flash completeness is bounded by the quiet-neighbour rule: 0.954^8 = 0.69 in white noise.""" + from setitools import flashes as F + rng = np.random.default_rng(40) + t = np.arange(0.0, 60.0, F.kepler_CAD) + q = np.zeros(len(t), int) + + def curve(): + return 1.0 + 0.002 * np.sin(2 * np.pi * t / 7.3) + rng.normal(0, 780e-6, len(t)) + sig = 780e-6 + P, t0 = 3.3, 0.71 + f = curve() + inj = [t0 + n * P for n in range(int((t[-1] - t0) / P) + 1)] + for ti in inj: + f[int(round((ti - t[0]) / F.kepler_CAD))] += 10 * sig + found, good = F.kepler_flashes(t, f, q) + got = [x for x in found if min(abs(x[0] - ti) for ti in inj) < 2 * F.kepler_CAD] + n0, fap = F.kepler_phase_cluster([x[0] for x in got], good, P, t0, rng, ntrial=300) + # the same number of flashes at random times + g = curve() + rand = rng.uniform(t[0], t[-1], len(inj)) + for ti in rand: + g[int(round((ti - t[0]) / F.kepler_CAD))] += 10 * sig + found_r, good_r = F.kepler_flashes(t, g, q) + n0_r, fap_r = F.kepler_phase_cluster([x[0] for x in found_r], good_r, P, t0, rng, ntrial=300) + # a six-cadence flare and a flash beside a dip are rejected; pure noise gives none + h = curve() + h[20000:20006] += 10 * sig + h[40000] += 10 * sig + h[40002:40005] -= 5 * sig + found_h, _ = F.kepler_flashes(t, h, q) + bad = [x for x in found_h if abs(x[0] - t[20003]) < 0.01 or abs(x[0] - t[40000]) < 0.01] + noise, _ = F.kepler_flashes(t, curve(), q) + # completeness over isolated flashes in fresh noise, against the quiet-neighbour bound + hits = n_inj = 0 + for trial in range(4): + c = curve() + idx = rng.choice(np.arange(100, len(t) - 100, 40), 200, replace=False) + c[idx] += 10 * sig + fl, _ = F.kepler_flashes(t, c, q) + ft = np.array([x[0] for x in fl]) + hits += sum(1 for i in idx if len(ft) and np.min(np.abs(ft - t[i])) < 2 * F.kepler_CAD) + n_inj += len(idx) + comp = hits / n_inj + assert 0.6 < comp < 0.8 and fap < 0.01 and fap_r > 0.05 and not bad and len(noise) <= 2, ( + comp, fap, fap_r, bad, len(noise)) + return ("%d of %d periodic flashes found, phase FAP %.3f; random flashes FAP %.2f; completeness for 10 sigma " + "flashes %.2f against 0.69 from the quiet-neighbour rule; %d flashes in pure noise" % ( + len(got), len(inj), fap, fap_r, comp, len(noise))) + + +@check("end to end, hyperbolic meteor streams: a coherent stream found, a speed-incoherent group and the background not") +def t_meteors(): + from setitools import solar_system as SS + rng = np.random.default_rng(50) + + def iso(n): + x = rng.normal(size=(n, 3)) + return x / np.linalg.norm(x, axis=1)[:, None] + + def around(axis, n, deg): + a = np.asarray(axis, float) / np.linalg.norm(axis) + x = a[None, :] + np.radians(deg) * rng.normal(size=(n, 3)) + return x / np.linalg.norm(x, axis=1)[:, None] + nb = 20000 + xyz_b, v_b = iso(nb), np.abs(rng.normal(10.0, 5.0, nb)) + axis = (0.3, -0.8, 0.52) + for label, v_s in (("coherent", rng.normal(12.0, 0.4, 16)), ("incoherent", rng.uniform(1.0, 40.0, 16))): + xyz = np.vstack([xyz_b, around(axis, 16, 0.25)]) + v = np.concatenate([v_b, v_s]) + _, _, p = SS.meteors_pvalues(xyz, v) + hit = int(np.sum(p[nb:] < 1e-4)) + if label == "coherent": + groups = SS.meteors_groups(xyz, v, p < 1e-4) + big = max((len([k for k in g if k >= nb]) for g in groups), default=0) + coherent = (hit, big) + else: + incoherent = hit + _, _, p0 = SS.meteors_pvalues(xyz_b, v_b) + false = int(np.sum(p0 < 1e-4)) + assert coherent[0] >= 12 and coherent[1] >= 12 and incoherent <= 3 and false <= 10, (coherent, incoherent, false) + return "coherent stream: %d of 16 members below p 1e-4, %d in one group; speed-incoherent group: %d; background: %d of %d" % ( + coherent[0], coherent[1], incoherent, false, nb) + + +@check("ultraviolet: a pointing belongs to the star whose proper-motion track passes through it") +def t_owner(): + from setitools import ultraviolet as uv + star = dict(ra=269.452, dec=4.693, pmra=-801.6, pmdec=10362.4) # Barnard's star + comp = dict(star, ra=star["ra"] + 10 / 3600.0) # a companion 10 arcsec east + mjd = 58700.0 + yrs = (mjd - 51544.5) / 365.25 + ra = star["ra"] + star["pmra"] / 3.6e6 * yrs / math.cos(math.radians(star["dec"])) + dec = star["dec"] + star["pmdec"] / 3.6e6 * yrs + d_now = float(uv.uv_track_dist(star, [ra], [dec], [mjd])[0]) + d_cat = float(uv.uv_track_dist(star, [star["ra"]], [star["dec"]], [mjd])[0]) + d_comp = float(uv.uv_track_dist(comp, [ra], [dec], [mjd])[0]) + owner = uv.uv_owner({"star": d_now, "companion": d_comp}, 3.0) + assert d_now < 0.01 and d_cat < 0.01 and 9.5 < d_comp < 10.5 and owner == "star", (d_now, d_cat, d_comp, owner) + groups = uv.uv_groups([1.0, 1.01, 1.02, 2.0], [0.015] * 4) + assert groups == [[0, 1, 2], [3]], groups + return "epoch and catalogue positions %.3f and %.3f arcsec from the track, companion %.1f" % (d_now, d_cat, d_comp) + + +@check("package: every docstring is one line") +def t_docstrings(): + import ast + import glob + root = os.path.dirname(os.path.abspath(__file__)) + files = (sorted(glob.glob(os.path.join(root, "setitools", "*.py"))) + [os.path.abspath(__file__)] + + sorted(glob.glob(os.path.join(root, "papers", "*", "*.py")))) + bad, n = [], 0 + for f in files: + for node in ast.walk(ast.parse(open(f, encoding="utf-8").read())): + if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef, ast.Module)): + d = ast.get_docstring(node, clean=False) + if d is not None: + n += 1 + if chr(10) in d.strip(): + bad.append("%s:%d %s" % (os.path.relpath(f, root), node.body[0].lineno, getattr(node, "name", "module"))) + assert not bad, bad[:10] + return "%d docstrings in %d files" % (n, len(files)) + + +def online(): + from setitools import core + + @check("online: Gaia") + def a(): + return "%d row" % len(core.gaia("SELECT TOP 1 source_id FROM gaiadr3.gaia_source")) + + @check("online: SIMBAD") + def b(): + return "%d row" % len(core.simbad("SELECT TOP 1 main_id FROM basic")) + + @check("online: ESO") + def c(): + return "%d spectra near HD 10700" % len(core.eso_spectra(26.017, -15.937, "HARPS")) + + @check("online: IRSA") + def d(): + return "%d row" % len(core.irsa("SELECT TOP 1 designation FROM allwise_p3as_psd")) + + @check("online: VizieR TAP") + def e(): + from setitools import core + return "%d row" % len(core.tap("vizier", 'SELECT TOP 1 * FROM "I/239/hip_main"')) + + for fn in (a, b, c, d, e): + fn() + + +def selftest(): + for fn in (t_matched, t_spiky, t_lsf, t_recurrence, t_dropout, t_twin, t_absorption, t_frames, t_track, t_trend, + t_ratio, t_coverage, t_owner, t_skyfibre, t_glints, t_meteors, t_docstrings): + fn() + if "--online" in sys.argv: + online() + print() + for name, ok, msg, dt in CHECKS: + print("%-4s %-80s %5.1fs %s" % ("ok" if ok else "FAIL", name, dt, msg)) + sys.exit(0 if all(r[1] for r in CHECKS) else 1) + + +def main(): + argv = list(sys.argv) + if len(argv) > 1 and argv[1] in ("selftest", "store"): + from setitools.core import quiet_warnings + quiet_warnings() + sys.argv = [argv[0]] + argv[2:] + if argv[1] == "selftest": + return selftest() + from setitools import core + return core.main() + from setitools import run + return run() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/setitools/__init__.py b/setitools/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69971ea366bae2a241fb6f8407744e65cc5b45c --- /dev/null +++ b/setitools/__init__.py @@ -0,0 +1,71 @@ +"""seti-tools: technosignature and biosignature searches on public archives; core, science and thirteen family modules of approaches.""" + +import importlib +import os +import sys + +from setitools.core import quiet_warnings + +# one math-library thread per process, so the process cap bounds CPU load +for _v in ("OMP_NUM_THREADS", "OPENBLAS_NUM_THREADS", "MKL_NUM_THREADS"): + os.environ.setdefault(_v, "1") + +USAGE = """ python -I seti.py the families + python -I seti.py a family's approaches + python -I seti.py --help an approach's method and modes + python -I seti.py a run + python -I seti.py store the coverage store: summary, table, verify, card, covered, codes + python -I seti.py selftest [--online] the package's checks on synthetic data +""" + +FAMILIES = { + "lasers": "laser lines in stellar and sky-fibre spectra", + "ultraviolet": "ultraviolet lines and photon timing", + "composition": "short-lived elements, fission products and industrial gases", + "flashes": "glints, flares, levels and clocks in light curves", + "transits": "transit shapes, timing, belts and geometry", + "dimming": "dimming, dips and colour in survey photometry", + "infrared": "waste heat, dark companions and missing flux", + "breakthrough": "Breakthrough Listen radio tracks, pulses and drifts", + "radio_sky": "persistent lines, sidereal tests and lensed receivers in radio surveys", + "highenergy": "X-ray, gamma-ray, neutrino and cosmic-ray tests", + "solar_system": "asteroids, comets, meteors and occultations", + "neighbourhood": "the nearby stars' kinematics, polarisation and companions", + "biosignatures": "gases of life and their abiotic mimics in temperate worlds' spectra", +} + + +def family(name): + """The family module by name, imported on demand.""" + if name not in FAMILIES: + raise KeyError(name) + return importlib.import_module("setitools." + name) + + +def run(argv=None): + """Dispatch the command line: family, approach, then the approach's own arguments.""" + quiet_warnings() + argv = list(sys.argv if argv is None else argv) + prog = os.path.basename(argv[0]) if argv else "seti.py" + if len(argv) < 2 or argv[1] not in FAMILIES: + print(USAGE) + for name, what in FAMILIES.items(): + print(" %-14s %s" % (name, what)) + return 0 + mod = family(argv[1]) + approaches = mod.APPROACHES + if len(argv) < 3 or argv[2] not in approaches: + # family summary and each registered approach with the first line of its method + print((mod.__doc__ or "").strip() + "\n") + for k, (_, doc) in approaches.items(): + print(" %-16s %s" % (k, doc.strip().split("\n")[0])) + print("\n python -I seti.py %s [mode ...] (each approach's own modes and options; help lists them)" + % argv[1]) + return 0 + name = argv[2] + if len(argv) > 3 and argv[3] in ("-h", "--help", "help"): + print(approaches[name][1]) + return 0 + sys.argv = ["%s %s %s" % (prog, argv[1], name)] + argv[3:] + approaches[name][0]() + return 0 diff --git a/setitools/biosignatures.py b/setitools/biosignatures.py new file mode 100644 index 0000000000000000000000000000000000000000..9411ad5dc7d3e3b05e342eb5d4e6937b1a420631 --- /dev/null +++ b/setitools/biosignatures.py @@ -0,0 +1,1615 @@ +"""Biosignatures: gases of life and their abiotic mimics in the public spectra of temperate worlds.""" +import json +import math +import os +import re +import time +import urllib.error +import urllib.parse +import urllib.request + +import numpy as np + +from setitools import core + +ARCHIVE = "https://exoplanetarchive.ipac.caltech.edu" + + +def exo_workspace(): + """A workspace path the archive's spectra page creates, under which its spectrum files are served.""" + t = core.get(ARCHIVE + "/cgi-bin/atmospheres/nph-firefly?atmospheres", timeout=120).decode("utf-8", "replace") + m = re.search(r"FF_InitPage \('[^']*', '(/workspace/TMP_[A-Za-z0-9_]+)'", t) + if not m: + raise IOError("the archive's spectra page gave no workspace") + return m.group(1) + + +def exo_spectrum(spec_path, workspace=None): + """An archive spectrum file as arrays of wavelength (um), half bin width (um), transit or eclipse depth and its error (ppm), limits left out, downloaded once into the cache.""" + local = core.data("exospectra", spec_path.replace("/", "_")) + if not os.path.exists(local): + os.makedirs(os.path.dirname(local), exist_ok=True) + ws = workspace or exo_workspace() + open(local, "wb").write(core.get(ARCHIVE + ws + "/atmospheres/tab1/data/" + spec_path, timeout=120)) + cols, rows = None, [] + for line in open(local, encoding="utf-8", errors="replace"): + if line.startswith("|") and cols is None: + cols = [c.strip() for c in line.strip().strip("|").split("|")] + continue + if line.startswith(("\\", "|")) or not line.strip(): + continue + rows.append(line.split()) + k = {c: i for i, c in enumerate(cols)} + + def col(name): + return np.array([float(r[k[name]]) if r[k[name]] not in ("null", "") else np.nan for r in rows]) + w, bw = col("CENTRALWAVELNG"), col("BANDWIDTH") + # transit files give PL_TRANDEP and eclipse files ESPECLIPDEP, both in per cent, a nonzero LIM marking a limit + dep = "PL_TRANDEP" if "PL_TRANDEP" in k else "ESPECLIPDEP" + d = col(dep) * 1e4 + e = 0.5 * (np.abs(col(dep + "ERR1")) + np.abs(col(dep + "ERR2"))) * 1e4 + lim = col(dep + "LIM") if dep + "LIM" in k else np.zeros(len(d)) + ok = np.isfinite(w) & np.isfinite(d) & np.isfinite(e) & (e > 0) & ~(np.nan_to_num(lim) != 0) + w, bw, d, e = w[ok], bw[ok], d[ok], e[ok] + if len(w) > 1 and not np.all(np.isfinite(bw)): + # a file without bin widths takes them from the spacing of its wavelengths + bw = np.where(np.isfinite(bw), bw, np.abs(np.gradient(w))) + return w, bw / 2.0, d, e + + +def temperate_spectra(rade_max=3.5, teq_max=450.0, facility="James Webb"): + """The archive's transmission spectra of small temperate planets from one facility, one reference per planet and instrument, each visit or detector once, with each planet's parameters.""" + pl = core.exoplanets("SELECT pl_name, pl_rade, pl_bmasse, pl_eqt, pl_insol, st_rad, st_teff FROM pscomppars WHERE pl_rade < %g AND (pl_eqt < %g OR pl_insol < 3)" % (rade_max, teq_max)) + planets = {p["pl_name"]: p for p in pl} + sp = core.exoplanets("SELECT pl_name, spec_type, authors, num_datapoints, instrument, minwavelng, maxwavelng, note, bibcode, spec_path FROM spectra WHERE spec_type = 'Transmission' " + "AND facility LIKE '%%%s%%'" % facility) + sp = [s for s in sp if s["pl_name"] in planets] + chosen = {} + for s in sp: + key = (s["pl_name"], s["instrument"]) + chosen.setdefault(key, {}).setdefault(s["authors"], []).append(s) + out = {} + for (name, inst), refs in chosen.items(): + best = max(refs.values(), key=lambda v: max(int(x["num_datapoints"] or 0) for x in v)) + out.setdefault(name, []).extend(distinct_spectra(best)) + return planets, out + + +def distinct_spectra(group): + """One spectrum per visit and detector from one reference's spectra of one instrument: native binning over low, a combined spectrum over its visits, and the plainest of alternative reductions.""" + notes = [(x.get("note") or "").lower() for x in group] + if any("native" in n for n in notes): + group = [x for x, n in zip(group, notes) if "low resolution" not in n] + comb = [x for x in group if re.search(r"combined|joint", (x.get("note") or "").lower())] + if comb: + group = comb + keep = {} + for x in group: + n = (x.get("note") or "").lower() + visit = re.search(r"visit\s*(\d+)", n) + det = re.search(r"nrs\s*[12]|g235h|g395h|g140h|g395m", n) + key = (visit.group(1) if visit and not comb else None, det.group(0).replace(" ", "") if det else None) + if key not in keep or (len(n), -int(x["num_datapoints"] or 0)) < (len((keep[key].get("note") or "")), -int(keep[key]["num_datapoints"] or 0)): + keep[key] = x + return list(keep.values()) + + +def band_template(w, hw, bands): + """A gas's band template averaged over each bin: Gaussian bands of the given centres, widths and strengths.""" + from scipy.special import erf + t = np.zeros(len(w)) + for c, fwhm, a in bands: + s = fwhm / 2.355 + lo, hi = (w - hw - c) / (np.sqrt(2) * s), (w + hw - c) / (np.sqrt(2) * s) + t += a * 0.5 * (erf(hi) - erf(lo)) * s * np.sqrt(2 * np.pi) / np.maximum(2 * hw, 1e-6) + return t + + +def scale_height_ppm(p, mu=2.3): + """The transit depth one atmospheric scale height adds for a planet, in ppm, at mean molecular weight mu.""" + rp, mp, teq, rs = (core.num(p.get(k)) for k in ("pl_rade", "pl_bmasse", "pl_eqt", "st_rad")) + if None in (rp, mp, teq, rs) or mp <= 0: + return None + g = 6.674e-11 * mp * 5.972e24 / (rp * 6.371e6) ** 2 + h = 1.380649e-23 * teq / (mu * 1.6605e-27 * g) + return 2 * rp * 6.371e6 * h / (rs * 6.957e8) ** 2 * 1e6 + + +disequilibrium_DOC = r"""Methane and carbon dioxide without carbon monoxide: every JWST transmission spectrum the NASA Exoplanet Archive holds for planets below 3.5 Earth radii that are temperate (equilibrium temperature below 450 K or insolation below three Earths'), one reference per planet and instrument, fitted for each planet at once with an offset per spectrum and templates of H2O, CH4, CO2, CO, NH3, dimethyl sulfide, N2O, SO2, OCS and O3 built from their cross-sections at the planet's temperature; each gas counted by how much the fit worsens without it, so that overlapping bands cannot share one feature; the pair CH4 and CO2 at 3 sigma with CO below 2 sigma is the chemical disequilibrium that methanogenic life keeps and that hydrogen-rich mini-Neptunes and magma oceans can also make, and dimethyl sulfide at 3 sigma is the gas claimed for K2-18 b; band amplitudes are given in ppm and in scale heights of a hydrogen atmosphere. + + python -I seti.py biosignatures disequilibrium [record] [--rade-max 3.5] [--teq-max 450] [--sigma 3]""" + + +def disequilibrium_main(record=False, rade_max=3.5, teq_max=450.0, sigma=3.0): + planets, spectra = temperate_spectra(rade_max, teq_max) + ws = exo_workspace() + out = [] + for name in sorted(spectra): + parts = [] + for s in spectra[name]: + try: + parts.append((s, exo_spectrum(s["spec_path"], ws))) + except Exception as e: + print(" %s: %s unreadable (%s)" % (name, s["spec_path"], str(e)[:60])) + parts = [(s, x) for s, x in parts if len(x[0]) >= 5] + if not parts: + continue + w = np.concatenate([x[0] for _, x in parts]) + hw = np.concatenate([x[1] for _, x in parts]) + d = np.concatenate([x[2] for _, x in parts]) + e = np.concatenate([x[3] for _, x in parts]) + cols, names = [], [] + for k, (_, x) in enumerate(parts): + c = np.zeros(len(w)) + start = sum(len(y[0]) for _, y in parts[:k]) + c[start:start + len(x[0])] = 1.0 + cols.append(c) + names.append("offset %d" % k) + gases = [] + for gas in LINE_GASES: + t = gas_template(gas, w, hw, core.num(planets[name]["pl_eqt"]) or XS_T) + if np.ptp(t) > 0.05: + cols.append(t) + names.append(gas) + gases.append(gas) + A = np.array(cols).T + W = 1.0 / e ** 2 + + def fit(M): + cov = np.linalg.pinv(M.T @ (M * W[:, None])) + par = cov @ (M.T @ (W * d)) + return par, cov, float(np.sum(W * (d - M @ par) ** 2)) + par, cov, chi = fit(A) + chi_flat = fit(np.array(cols[:len(parts)]).T)[2] + amp = {g: (float(par[names.index(g)]), float(math.sqrt(max(cov[names.index(g), names.index(g)], 0)))) for g in gases} + sig = {} + for g in gases: + j = names.index(g) + dchi = fit(np.delete(A, j, axis=1))[2] - chi + # a gas counts by how much the fit worsens without it, signed by its band's sense + sig[g] = math.copysign(math.sqrt(max(dchi, 0.0)), amp[g][0]) + hppm = scale_height_ppm(planets[name]) + diseq = sig.get("CH4", 0) >= sigma and sig.get("CO2", 0) >= sigma and sig.get("CO", 0) < 2.0 + p = planets[name] + o = dict(planet=name, rade=core.num(p["pl_rade"]), teq=core.num(p["pl_eqt"]), st_teff=core.num(p["st_teff"]), n=len(w), spectra=[(s["instrument"], s["authors"], s.get("note")) for s, _ in parts], + chi2=chi, chi2_flat=chi_flat, dof=len(w) - len(names), amp=amp, sig=sig, h_ppm=hppm, diseq=diseq, dms=sig.get("DMS", 0) >= sigma) + o["vet"] = None + if diseq or o["dms"]: + # hydrogen-rich mini-Neptunes and magma oceans keep CH4 and CO2 without CO by abiotic chemistry; cool M-dwarf hosts add spots and faculae to the spectrum + o["vet"] = "abiotic-chemistry" if (o["rade"] or 0) > 1.6 else ("stellar-contamination" if (o["st_teff"] or 9999) < 3500 else None) + out.append(o) + print("%d temperate small planets with JWST transmission spectra; CH4 and CO2 at %g sigma without CO: %d; DMS at %g sigma: %d" % ( + len(out), sigma, sum(o["diseq"] for o in out), sigma, sum(o["dms"] for o in out))) + for o in out: + print(" %-13s %.2f R_E, %s K, %d points (%s): chi2 %.0f against %.0f flat for %d dof; %s; one scale height %s ppm%s" % ( + o["planet"], o["rade"] or 0, o["teq"], o["n"], "; ".join("%s %s" % (i.split("(")[-1].rstrip(")")[:12], a) for i, a, _ in o["spectra"]), o["chi2"], o["chi2_flat"], o["dof"], + ", ".join("%s %+.1f" % (g, s) for g, s in sorted(o["sig"].items(), key=lambda kv: -kv[1])), "%.0f" % o["h_ppm"] if o["h_ppm"] else "-", + "; DISEQUILIBRIUM, %s" % (o["vet"] or "unexplained") if o["diseq"] else ("; DMS, %s" % (o["vet"] or "unexplained") if o["dms"] else ""))) + json.dump(out, open(core.results("biosig_disequilibrium.json"), "w"), indent=1, default=float) + if record: + core.record_run( + "jwst_temperate_disequilibrium", "Methane and carbon dioxide without carbon monoxide", "NASA Exoplanet Archive atmospheric spectroscopy table (JWST transmission spectra); planetary parameters from the composite table", + "planets below %g Earth radii with equilibrium temperature below %g K or insolation below three Earths', with JWST transmission spectra: %d" % (rade_max, teq_max, len(out)), + os.path.abspath(__file__), "disequilibrium", len(out), "planets", dict(rade_max=rade_max, teq_max=teq_max, sigma=sigma), + "a flat spectrum with an offset per spectrum; the band templates' formal errors", + "CH4 and CO2 at %g sigma without CO at 2 sigma, or dimethyl sulfide at %g sigma" % (sigma, sigma), + "%d with the disequilibrium pair, %d with dimethyl sulfide" % (sum(o["diseq"] for o in out), sum(o["dms"] for o in out)), + [dict(target="planet:%s" % o["planet"], stat=round(min(o["sig"].get("CH4", 0), o["sig"].get("CO2", 0)), 2), unit="sigma of the weaker of CH4 and CO2", vet=o["vet"], + note="%s; CO %+.1f sigma, DMS %+.1f sigma, chi2 %.0f against %.0f flat" % (", ".join("%s %+.1f" % (g, s) for g, s in o["sig"].items()), o["sig"].get("CO", 0), o["sig"].get("DMS", 0), + o["chi2"], o["chi2_flat"])) for o in out]) + print("recorded") + + +# a planet's name as papers and file names write it: survey or catalogue, number, an optional component and a planet letter +PLANET_RE = re.compile(r"\b(WASP|HAT-?P|HATS|KELT|XO|TrES|Qatar|CoRoT|Kepler|K2|TOI|GJ|LHS|LTT|LP|HD|HIP|TRAPPIST|L|WD|TIC|NGTS|KOI|NGC|HR|AU Mic|" + r"V1298 Tau|Ross|Wolf|Teegarden's Star|Barnard's Star|Gliese)[-_ ]?([0-9][0-9.\-+]*)[ _-]?(A|B)?[ _-]?([b-i])\b", re.I) + + +NAMED_RE = re.compile(r"\b(55 Cnc|AU Mic|pi Men|tau Boo|51 Peg|HR 8799|beta Pic|51 Eri|kappa And|HD 189733|HD 209458|HD 149026|HD 80606|HD 97658|HD 3167|HD 106315|HD 219134|HD 260655|HD 15337|HD 73583)[ _-]?([b-i])\b", re.I) + + +def planet_names(text): + """Planet names written in a text, normalised as the catalogues write them (WASP-39 b, TRAPPIST-1 e, L 98-59 d, GJ 1214 b).""" + canon = {n.lower(): n for n in NAMED_RE.pattern.split("(")[1].split(")")[0].split("|")} + out = ["%s %s" % (canon.get(m.group(1).lower(), m.group(1)), m.group(2).lower()) for m in NAMED_RE.finditer(text or "")] + for m in PLANET_RE.finditer(text or ""): + survey, num, comp, letter = m.group(1), m.group(2).rstrip(".-"), m.group(3) or "", m.group(4).lower() + su = {"hatp": "HAT-P", "hat-p": "HAT-P", "gliese": "GJ"}.get(survey.lower(), survey) + su = {"wasp": "WASP", "hats": "HATS", "kelt": "KELT", "xo": "XO", "tres": "TrES", "qatar": "Qatar", "corot": "CoRoT", "kepler": "Kepler", + "k2": "K2", "toi": "TOI", "gj": "GJ", "lhs": "LHS", "ltt": "LTT", "lp": "LP", "hd": "HD", "hip": "HIP", "trappist": "TRAPPIST", + "l": "L", "wd": "WD", "tic": "TIC", "ngts": "NGTS", "koi": "KOI", "hr": "HR"}.get(su.lower(), su) + sep = " " if su in ("GJ", "LHS", "LTT", "LP", "HD", "HIP", "L", "WD", "TIC", "HR", "Ross", "Wolf", "BD", "G", "55 Cnc") else "-" + out.append("%s%s%s%s %s" % (su, sep, num, " " + comp if comp else "", letter)) + return list(dict.fromkeys(out)) + + +class _Columns: + """A table as named columns, enough for the column reader: colnames and indexing by name.""" + + def __init__(self, names, rows, note=""): + self.colnames, self._a, self.note = list(names), np.asarray(rows, dtype=float), note + + def __getitem__(self, name): + return self._a[:, self.colnames.index(name)] + + +def _text_table(path): + """A plain text table read line by line: comment lines skipped, the last of them or a non-numeric first line as the header, comma, tab or space delimited; None when fewer than three numeric columns or four rows.""" + header, data = None, [] + for line in open(path, encoding="utf-8", errors="replace"): + t = line.strip() + if not t: + continue + if t[0] in "#%\\|;!" or t.startswith("//"): + h = t.lstrip("#%\\|;!/ ").strip() + if re.search(r"[A-Za-z]", h): + header = h + continue + data.append(t) + if len(data) < 5: + return None + delim = "," if data[0].count(",") >= 2 else ("\t" if "\t" in data[0] else None) + + def split(t): + out = [x.strip() for x in (t.split(delim) if delim else t.split())] + while out and out[-1] == "": + out.pop() + return out + + def number(x): + try: + return float(x) + except ValueError: + return None if x not in ("", "nan", "NaN", "null", "--", "NA") else float("nan") + first = split(data[0]) + if any(number(x) is None for x in first): + names, rows = first, data[1:] + else: + names, rows = (split(header) if header else None), data + out, ncol = [], None + for t in rows: + vals = [number(x) for x in split(t)] + if any(v is None for v in vals): + continue + ncol = ncol or len(vals) + if len(vals) == ncol: + out.append(vals) + if len(out) < 4 or not ncol or ncol < 3: + return None + if not names or len(names) != ncol: + names = ["col%d" % (i + 1) for i in range(ncol)] + return _Columns(names, out, note=header or "") + + +def table_spectrum(path, hint=""): + """A published spectrum file read as wavelength (um), half bin width (um), depth and its error (ppm), with its kind (transmission or emission) guessed from its columns and the hint text; None when no column set fits.""" + from astropy.io import ascii as aascii + from astropy.io import fits + from astropy.table import Table + tables = [] + low = path.lower() + try: + if low.endswith((".fits", ".fit", ".fits.gz")): + with fits.open(path) as h: + for e in h[1:]: + if hasattr(e, "columns"): + tables.append(Table(e.data)) + elif low.endswith(".ecsv"): + tables.append(Table.read(path, format="ascii.ecsv")) + elif low.endswith((".npy",)): + a = np.load(path, allow_pickle=False) + if a.ndim == 2 and min(a.shape) >= 3: + tables.append(Table(a if a.shape[1] < a.shape[0] else a.T)) + else: + head = open(path, encoding="utf-8", errors="replace").read(4000) + t = aascii.read(path, format="mrt") if "Byte-by-byte Description" in head else _text_table(path) + if t is None and os.path.getsize(path) < 2e6: + t = aascii.read(path, guess=True, fast_reader=False) + if t is not None: + tables.append(t) + except Exception: + return None + head = "" + if not low.endswith((".fits", ".fit", ".fits.gz", ".npy")): + head = open(path, encoding="utf-8", errors="replace").read(2000) + for t in tables: + r = _columns_spectrum(t, hint + " " + os.path.basename(path) + " " + getattr(t, "note", "") + " " + head) + if r is not None: + return r + return None + + +def _unnamed_spectrum(cols, note): + """A table without column names read by the layouts papers use: wavelength first, then bin edges, a width or a half width, then depth and error, told apart by their sizes.""" + c = [np.asarray(x, dtype=float) for x in cols] + w = c[0] + f = np.isfinite(w) + # wavelengths that mostly rise, as a table of two detectors or orders in turn does, are put in order with their rows + if f.sum() < 5 or np.mean(np.diff(w[f]) > 0) < 0.8 or not (0.2 <= np.nanmedian(w) <= 30): + return None + order = np.argsort(w) + c = [x[order] for x in c] + w = c[0] + f = np.isfinite(w) + hw = None + rest = c[1:] + if len(c) >= 4 and np.all(c[1][f] > w[f]) and np.nanmedian((c[1] - w) / w) < 0.2: + hw, w, rest = (c[1] - w) / 2, (c[1] + w) / 2, c[2:] + elif len(c) >= 4 and np.nanmedian(c[1] / w) < 0.2: + step = np.nanmedian(np.diff(w)) + half = re.search(r"half", note.lower()) or abs(np.nanmedian(c[1]) - step / 2) < abs(np.nanmedian(c[1]) - step) + hw, rest = (c[1] if half else c[1] / 2), c[2:] + if len(rest) < 2: + return None + d, e = rest[0], np.abs(rest[1]) + if len(rest) >= 3 and np.nanmedian(np.abs(rest[2])) < np.nanmedian(np.abs(d)) and np.nanmedian(e) < np.nanmedian(np.abs(d)): + # an upper and a lower error: their mean + e = (np.abs(rest[1]) + np.abs(rest[2])) / 2 + return w, (hw if hw is not None else np.abs(np.gradient(w)) / 2), d, e + + +def _columns_spectrum(t, hint): + """The wavelength, depth, error and bin-width columns of a table by name and by value, converted to um and ppm.""" + names = list(t.colnames) + num_cols = {} + for n in names: + try: + v = np.asarray(t[n], dtype=float) + except (TypeError, ValueError): + continue + if v.ndim == 1 and np.isfinite(v).sum() >= 4: + num_cols[n] = v + if len(num_cols) < 3: + return None + low = {n: n.lower().replace(" ", "") for n in num_cols} + if all(re.match(r"^col\d+$", n) for n in num_cols): + u = _unnamed_spectrum([num_cols[n] for n in num_cols], hint) + if u is None: + return None + w, hw, d, e = u + md = np.nanmedian(np.abs(d)) + if md < 0.2: + d, e = d * 1e6, e * 1e6 + elif md < 20 and not re.search(r"ppm", hint.lower()): + d, e = d * 1e4, e * 1e4 + ok = np.isfinite(w) & np.isfinite(hw) & np.isfinite(d) & np.isfinite(e) & (e > 0) & (w > 0.2) & (w < 30) + if ok.sum() < 5: + return None + text = hint.lower() + kind = "emission" if re.search(r"emission|eclipse|dayside|fp/?fs|fpfs|secondary|occultation", text) and not re.search(r"transmission|transit.?depth|rp/?rs", text) else "transmission" + return dict(w=w[ok], hw=hw[ok], d=d[ok], e=e[ok], kind=kind, columns=("col1", "layout", "", "")) + + def pick(patterns, exclude=()): + for pat in patterns: + for n in num_cols: + if re.search(pat, low[n]) and not any(re.search(x, low[n]) for x in exclude): + return n + return None + wl = pick([r"^wave|^wl|^lam|wavelength|^wav|micron|^w$|^x$"], exclude=[r"err|width|bin|low|up|min|max|edge"]) + if wl is None and re.search(r"spec|transmission|emission|depth|eclipse|transit|fpfs|tspec|dayside", hint.lower()): + # the first column whose values look like wavelengths in um, nm or Angstrom and rise + for n, v in num_cols.items(): + f = v[np.isfinite(v)] + if len(f) and np.all(np.diff(f) >= 0) and (0.2 <= np.median(f) <= 30 or 200 <= np.median(f) <= 30000): + wl = n + break + if wl is None: + return None + w = num_cols[wl] + med = np.nanmedian(w) + scale = 1.0 if med < 40 else (1e-3 if med < 40000 else 1e-4) + rprs = pick([r"rp/?rs|rprs|radius.?ratio|^k$|r_p/r_s|rp_rs"], exclude=[r"err|unc|sig|low|up"]) + dep = pick([r"depth|trandep|dppm|^td$|transit|^d$|fp/?fs|fpfs|eclipse|ppm|occult|flux.?ratio|^y$|signal|spec"], exclude=[r"err|unc|sig|low|up|wave|wl|lam|width|bin"]) + col = rprs or dep + if col is None: + # a column that holds the signal: named for flux, spectrum or ratio first, then any that is not an error, a width or a wavelength + rest = [n for n in num_cols if n != wl and not re.search(r"err|unc|sig|width|bin|wave|wl|lam|^e_|_e$|model|fit", low[n])] + named = [n for n in rest if re.search(r"flux|spec|ratio|signal|abs|excess", low[n])] + if not (named or rest): + return None + col = (named or rest)[0] + err = None + for n in num_cols: + if n in (wl, col): + continue + if re.search(r"err|unc|sig|^e_|_e$|^d" + re.escape(low[col]) + r"|\+|-", low[n]) and not re.search(r"wave|wl|lam|width|bin", low[n]): + err = n if err is None else err + if err is None: + cands = [n for n in num_cols if n not in (wl, col)] + for n in cands: + v = num_cols[n] + if np.nanmedian(np.abs(v)) < np.nanmedian(np.abs(num_cols[col])) and np.all(np.asarray(v)[np.isfinite(v)] >= 0): + err = n + break + if err is None: + return None + hw_col = pick([r"half|bin.?width|width|^dw|dlam|wave.?err|wl.?err|^bw"], exclude=[r"depth|flux"]) + if re.search(r"flux|fnu|flam|mjy|ujy|jy|erg|w/m", low[col]) and not re.search(r"ratio|depth|fp|rp|transit|eclipse|occult|contrast", low[col]): + return None + d, e = num_cols[col].copy(), np.abs(num_cols[err].copy()) + if col == rprs: + e, d = 2 * np.abs(d) * e, d ** 2 + md = np.nanmedian(np.abs(d)) + if md < 0.2: + d, e = d * 1e6, e * 1e6 + elif md < 20 and not re.search(r"ppm", low[col]): + d, e = d * 1e4, e * 1e4 + hw = np.abs(num_cols[hw_col]) * scale if hw_col else np.full(len(w), np.nan) + if hw_col and re.search(r"width|^bw|^dw|bin", low[hw_col]) and not re.search(r"half", low[hw_col]): + hw = hw / 2.0 + w = w * scale + ok = np.isfinite(w) & np.isfinite(d) & np.isfinite(e) & (e > 0) & (w > 0.2) & (w < 30) + if ok.sum() < 4: + return None + w, hw, d, e = w[ok], hw[ok], d[ok], e[ok] + if not np.all(np.isfinite(hw)): + hw = np.where(np.isfinite(hw), hw, np.abs(np.gradient(w)) / 2.0 if len(w) > 1 else 0.01) + order = np.argsort(w) + text = (hint + " " + " ".join(names)).lower() + kind = "emission" if re.search(r"emission|eclipse|dayside|fp/?fs|fpfs|secondary|occultation", text) and not re.search(r"transmission|transit.?depth|rp/?rs", text) else "transmission" + return dict(w=w[order], hw=hw[order], d=d[order], e=e[order], kind=kind, columns=(wl, col, err, hw_col)) + + +ZENODO_API = "https://zenodo.org/api/records" +ZENODO_QUERIES = ( + 'JWST "transmission spectrum"', 'JWST "transmission spectra"', 'JWST "emission spectrum"', 'JWST "eclipse spectrum"', 'JWST "phase curve"', + 'JWST exoplanet NIRSpec', 'JWST exoplanet NIRISS', 'JWST exoplanet MIRI', 'JWST exoplanet NIRCam', 'JWST exoplanet atmosphere spectrum', + 'HST WFC3 "transmission spectrum"', 'Hubble "transmission spectrum" exoplanet', 'STIS "transmission spectrum" exoplanet', + '"transmission spectrum" exoplanet data', '"secondary eclipse" spectrum JWST', 'exoplanet "spectroscopic light curves"', 'Eureka! JWST exoplanet', + 'ExoTiC JWST', '"JWST-TST"', 'JWST ERS transiting exoplanet', 'JWST "sub-Neptune" spectrum', 'JWST super-Earth spectrum', 'JWST rocky planet eclipse', + 'JWST hot Jupiter spectrum', 'HST WFC3 population study transmission spectra', 'population exoplanet atmospheres transmission spectra', + 'homogeneous survey transmission spectra', 'panchromatic transmission spectrum', 'PanCET', 'BOWIE-ALIGN', 'Hidden GEMS JWST', 'COMPASS JWST', + 'Hot Rocks Survey', 'JWST MIRI LRS transmission', 'JWST NIRSpec G395H transmission', 'emission spectrum hot Jupiter HST', + 'thermal emission spectrum rocky exoplanet', 'SPACE program transmission spectrum', 'transmission spectrum sub-Neptune', + 'transmission spectrum super-Earth', 'transmission spectrum mini-Neptune', 'dayside spectrum exoplanet', 'eclipse depths exoplanet spectrum', + 'Spitzer secondary eclipse exoplanet', 'exoplanet atmosphere retrieval data products', +) +# a record that names no planet in its title is still taken when it speaks of planetary spectra, its planets named inside its files +SPECTRA_RECORD = re.compile(r"transmission spectr|emission spectr|eclipse spectr|dayside spectr|exoplanet atmospher|planetary atmospher|transit spectr", re.I) +# records of models, retrievals and opacities, whose large archives hold no observed spectrum +MODEL_RECORD = re.compile(r"\bmodels?\b|cross.?sections|opacit|grid|synthetic|simulat|\bGCM\b|photochem|retriev|uncalibrated|database", re.I) +SPECTRUM_EXT = (".txt", ".dat", ".csv", ".ecsv", ".tsv", ".tbl", ".fits", ".fit", ".npy", ".zip", ".tar", ".gz", ".tgz") +atlas_ROOT = os.environ.get("ATLAS_ROOT", core.data("spectra_atlas")) + + +def instrument_of(text): + """The instrument and mode a file name or a title names, as the archive writes them.""" + t = (text or "").lower() + for pat, name in ((r"prism", "NIRSpec PRISM"), (r"g395h", "NIRSpec G395H"), (r"g395m", "NIRSpec G395M"), (r"g235h", "NIRSpec G235H"), + (r"g140h", "NIRSpec G140H"), (r"nirspec", "NIRSpec"), (r"soss", "NIRISS SOSS"), (r"niriss", "NIRISS"), (r"miri.?lrs|\blrs\b", "MIRI LRS"), + (r"miri", "MIRI"), (r"f322w2", "NIRCam F322W2"), (r"f444w", "NIRCam F444W"), (r"nircam", "NIRCam"), (r"g141", "WFC3 G141"), + (r"g102", "WFC3 G102"), (r"wfc3", "WFC3"), (r"stis|g430l|g750l", "STIS"), (r"spitzer|irac", "Spitzer")): + if re.search(pat, t): + return name + return None + + +def zenodo_search(queries=ZENODO_QUERIES, pages=4, threads=4): + """Zenodo records the queries find, keyed by record id, with title, description, DOI and files: each query's best matches, several queries at once.""" + import time as _time + from concurrent.futures import ThreadPoolExecutor + + def one(q): + seen = {} + for page in range(1, pages + 1): + url = ZENODO_API + "?" + urllib.parse.urlencode(dict(q=q, size=25, page=page, sort="bestmatch")) + d = None + for attempt in range(4): + try: + d = json.loads(core.get(url, timeout=60, retries=1)) + break + except Exception as e: + # Zenodo answers 429 to a guest asking too often; the query waits and asks again + if "429" not in str(e): + break + _time.sleep(15 * (attempt + 1)) + if d is None: + break + hits = d["hits"]["hits"] + for h in hits: + m = h["metadata"] + seen[str(h["id"])] = dict(id=h["id"], q=q, title=m.get("title", ""), date=m.get("publication_date"), doi=m.get("doi"), + desc=re.sub(r"<[^>]+>", " ", m.get("description") or "")[:2000], + files=[dict(key=f["key"], size=f["size"], url=f["links"]["self"]) for f in h.get("files", [])]) + if len(hits) < 25: + break + return seen + seen = {} + with ThreadPoolExecutor(threads) as ex: + for q, got in zip(queries, ex.map(one, queries)): + for k, v in got.items(): + seen.setdefault(k, v) + print(" %-45s %3d records, %d in all" % (q[:45], len(got), len(seen)), flush=True) + return seen + + +def safe_member(root, name): + """The path under root for an archive member's name, each part stripped of the characters Windows refuses, or None for a name that would leave root.""" + parts = [re.sub(r'[<>:"|?*\x00-\x1f]', "_", p).rstrip(" .") for p in name.replace("\\", "/").split("/") if p not in ("", ".")] + if not parts or ".." in parts or "__MACOSX" in parts or not all(parts): + return None + return os.path.join(root, *parts) + + +def zenodo_fetch(records, max_mb=300, threads=4): + """Each record that names a planet: its files that may hold a spectrum, downloaded once into ROOT/zenodo// on a few threads and archives unpacked beside them.""" + import tarfile + import zipfile + from concurrent.futures import ThreadPoolExecutor + tasks = [] + for rid, r in records.items(): + text = " ".join([r["title"], r["desc"]] + [f["key"] for f in r["files"]]) + about = r["title"] + " " + r["desc"] + # optics and materials records speak of transmission spectra too; one that names no planet must speak of planets + if not planet_names(text) and not (SPECTRA_RECORD.search(about) and re.search(r"planet", about, re.I)): + continue + for f in r["files"]: + # an archive too large to take whole is read by its members only when neither it nor its record is of models, retrievals or opacities + big = f["size"] > max_mb * 1e6 + if not f["key"].lower().endswith(SPECTRUM_EXT) or NOT_PLANET.search(f["key"]) or (big and (not f["key"].lower().endswith(".zip") or MODEL_RECORD.search(r["title"]))): + continue + tasks.append((rid, f)) + + def members(rid, f, max_member_mb=20): + """A large zip's small tables read by byte range, without the rest of the archive.""" + out = os.path.join(atlas_ROOT, "zenodo", rid, os.path.basename(f["key"]) + "_x") + if os.path.exists(out): + return None + try: + z = core.open_zip(f["url"]) + for m in z.infolist(): + name = m.filename + if m.is_dir() or ".." in name or name.startswith("/") or "__MACOSX" in name or not name.lower().endswith(TABLE_EXT) or m.file_size > max_member_mb * 1e6: + continue + dst = os.path.join(out, *name.split("/")) + os.makedirs(os.path.dirname(dst), exist_ok=True) + open(dst, "wb").write(z.read(m)) + except Exception as e: + if os.path.isdir(out): + import shutil + shutil.rmtree(out) + return "%s %s: members unread (%s)" % (rid, f["key"], str(e)[:60]) + return None + + def one(task): + rid, f = task + if f["size"] > max_mb * 1e6: + return members(rid, f) + d = os.path.join(atlas_ROOT, "zenodo", rid) + local = os.path.join(d, os.path.basename(f["key"])) + if os.path.exists(local) and os.path.getsize(local) != f["size"]: + # a file cut short by an interrupted download is fetched again, its unpacked copy with it + os.remove(local) + if os.path.isdir(local + "_x"): + import shutil + shutil.rmtree(local + "_x") + if not os.path.exists(local): + os.makedirs(d, exist_ok=True) + try: + data = core.get(f["url"], timeout=900, retries=2) + except Exception as e: + return "%s %s: %s" % (rid, f["key"], str(e)[:80]) + open(local + ".part", "wb").write(data) + os.replace(local + ".part", local) + low, out = local.lower(), local + "_x" + if os.path.exists(out) or not low.endswith((".zip", ".tar", ".tgz", ".tar.gz")): + return None + # an archive's tables are written to a side directory renamed into place once all are out, so that one cut short is unpacked again + import shutil + tmp = out + ".part" + shutil.rmtree(tmp, ignore_errors=True) + try: + if low.endswith(".zip"): + with zipfile.ZipFile(local) as z: + for m in z.infolist(): + dst = None if m.is_dir() or not m.filename.lower().endswith(TABLE_EXT) else safe_member(tmp, m.filename) + if dst: + os.makedirs(os.path.dirname(dst), exist_ok=True) + open(dst, "wb").write(z.read(m)) + else: + with tarfile.open(local) as t: + for m in t.getmembers(): + dst = safe_member(tmp, m.name) if m.isfile() and m.name.lower().endswith(TABLE_EXT) else None + if dst: + os.makedirs(os.path.dirname(dst), exist_ok=True) + open(dst, "wb").write(t.extractfile(m).read()) + os.makedirs(tmp, exist_ok=True) + os.replace(tmp, out) + except Exception as e: + shutil.rmtree(tmp, ignore_errors=True) + return "%s %s: unpacked badly (%s)" % (rid, f["key"], str(e)[:60]) + return None + import time as _time + left = [] + with ThreadPoolExecutor(threads) as ex: + for task, msg in zip(tasks, ex.map(one, tasks)): + if msg and "429" in msg: + left.append(task) + elif msg: + print(" " + msg, flush=True) + # Zenodo answers too many requests with 429; those files are taken again one at a time, a minute apart after each refusal + for attempt in range(6): + if not left: + break + print(" %d files refused for too many requests; again one at a time (pass %d)" % (len(left), attempt + 1), flush=True) + again = [] + for task in left: + msg = one(task) + if msg and "429" in msg: + again.append(task) + _time.sleep(60) + elif msg: + print(" " + msg, flush=True) + else: + _time.sleep(2) + left = again + for rid, f in left: + print(" %s %s: still refused" % (rid, f["key"]), flush=True) + print("%d files of %d records under %s" % (len(tasks), len({t[0] for t in tasks}), os.path.join(atlas_ROOT, "zenodo"))) + + +EXOMAST_API = "https://exo.mast.stsci.edu/api/v0.1/spectra/" + + +def exomast_fetch(names, threads=6): + """The spectra MAST's Exo.MAST serves for each named planet, downloaded once into ROOT/exomast// with an index of each file's planet.""" + from concurrent.futures import ThreadPoolExecutor + root = os.path.join(atlas_ROOT, "exomast") + os.makedirs(root, exist_ok=True) + ipath = os.path.join(root, "index.json") + index = json.load(open(ipath)) if os.path.exists(ipath) else {} + + def one(name): + q = urllib.parse.quote(name) + b = core.get(EXOMAST_API + q + "/filelist", timeout=60, retries=1, soft=True) + try: + files = json.loads(b).get("filenames") or [] if b else [] + except ValueError: + files = [] + got = [] + for f in files: + rel = os.path.join(planet_key(name), os.path.basename(f)) + out = os.path.join(root, rel) + if not os.path.exists(out): + body = core.get(EXOMAST_API + q + "/file/" + urllib.parse.quote(f), timeout=120, retries=3, soft=True) + if body is None: + continue + os.makedirs(os.path.dirname(out), exist_ok=True) + open(out, "wb").write(body) + got.append((rel.replace(os.sep, "/"), name)) + return got + with ThreadPoolExecutor(threads) as ex: + for got in ex.map(one, names): + index.update(dict(got)) + json.dump(index, open(ipath, "w"), indent=1) + print("%d Exo.MAST spectra of %d planets under %s" % (len(index), len(set(index.values())), root)) + + +def exomast_spectra(): + """Every spectrum downloaded from Exo.MAST read as one, its planet the one it was asked for.""" + root = os.path.join(atlas_ROOT, "exomast") + ipath = os.path.join(root, "index.json") + if not os.path.exists(ipath): + return [] + known = known_planets() + out = [] + for rel, name in sorted(json.load(open(ipath)).items()): + path = os.path.join(root, rel) + x = _parse_one((path, "exo.mast " + rel)) + if not usable_spectrum(x): + continue + head = open(path, encoding="utf-8", errors="replace").read(1500) + out.append(dict(planet=canonical_planet(name, known), kind=x["kind"], instrument=instrument_of(rel + " " + head), source="exomast:%s" % rel, + doi=None, file=rel, n=len(x["w"]), wmin=float(x["w"][0]), wmax=float(x["w"][-1]), columns=x["columns"], + w=x["w"], hw=x["hw"], d=x["d"], e=x["e"])) + return out + + +def dedupe_spectra(sp): + """Spectra kept once where two sources hold the same numbers for the same planet.""" + seen, out = set(), [] + for x in sp: + key = (x["planet"], x["n"], round(float(np.sum(x["w"])), 3), round(float(np.sum(x["d"])) / max(x["n"], 1), 0)) + if key not in seen: + seen.add(key) + out.append(x) + return out + + +# descriptions of VizieR tables that may hold a planet's spectrum, and of those that do not +VIZIER_SPECTRA = ("ransmission spectr", "mission spectr", "ransit spectr", "clipse spectr", "ransit depth", "clipse depth", "adius ratio", "Rp/R", + "planet-to-star", "pectroscopic channel", "avelength-dependent", "avelength bin", "pectral bin", "ayside spectr", "ransit radi", + "pectroscopic transit", "pectroscopic light curve fit") +VIZIER_NOT = re.compile(r"light curves?(?! fit)|limb.?dark|LD coeff|radial velocit|filter|\bmodel|torque|standard star|quasar|galax|candidates|metric|bias|ephemer|" + r"mid-?transit time|Venus|Titan|H\{alpha|Ca ?II|Na ?I\b|Fe ?II|Mg ?I\b|He ?I\b", re.I) +WAVE_UNITS = {"nm": 1e-3, "Angstrom": 1e-4, "0.1nm": 1e-4, "um": 1.0, "mum": 1.0, "micron": 1.0, "cm": 1e4, "m": 1e6} + + +def vizier_path(table): + """The file under ROOT/vizier/ that keeps a VizieR table's rows.""" + return os.path.join(atlas_ROOT, "vizier", re.sub(r"[^0-9A-Za-z_.-]", "_", table) + ".csv") + + +VIZIER_ASU = "https://vizier.cds.unistra.fr/viz-bin/asu-tsv" + + +def vizier_meta(table): + """A VizieR table's catalogue title and its columns' descriptions and UCDs, from the ASU service's metadata.""" + text = core.get(VIZIER_ASU + "?" + urllib.parse.urlencode({"-meta": "", "-source": table, "-out.max": 1}), timeout=120).decode("utf-8", "replace") + title, cols, lines = "", {}, text.split("\n") + for i, line in enumerate(lines): + if line.startswith("#Title:") and not title and i + 1 < len(lines): + title = lines[i + 1].strip("# \t") + elif line.startswith("#Column"): + f = line.split("\t") + ucd = re.search(r"\[ucd=([^\]]*)\]", line) + if len(f) > 3: + cols[f[1].strip()] = dict(desc=re.sub(r"^\[[^\]]*\]\s*", "", f[3].strip()), ucd=ucd.group(1) if ucd else "") + return title, cols + + +def vizier_fetch(threads=4): + """Every VizieR table whose description speaks of a planet's spectrum, its transit or eclipse depths or its radius ratios by wavelength: its rows kept as CSV under ROOT/vizier/, beside an index of its catalogue's title, its columns' units, descriptions and UCDs, and its catalogue's other tables.""" + import csv + from concurrent.futures import ThreadPoolExecutor + os.makedirs(os.path.join(atlas_ROOT, "vizier"), exist_ok=True) + rows = core.tap("vizier", "SELECT table_name, description, nrows FROM TAP_SCHEMA.tables WHERE (%s) AND nrows >= 5 AND nrows <= 20000" % " OR ".join( + "description LIKE '%%%s%%'" % w for w in VIZIER_SPECTRA)) + cands = {r["table_name"].strip("'"): r["description"] for r in rows if not VIZIER_NOT.search(r["description"])} + names = sorted(cands) + cats = sorted({t.rsplit("/", 1)[0] for t in names}) + sib, units = {}, {} + # VizieR keeps its table names inside single quotes, which its ADQL reaches with LIKE + for i in range(0, len(cats), 30): + for r in core.tap("vizier", "SELECT table_name, description FROM TAP_SCHEMA.tables WHERE " + " OR ".join("table_name LIKE '%%%s/%%'" % c for c in cats[i:i + 30])): + sib.setdefault(r["table_name"].strip("'").rsplit("/", 1)[0], []).append(r["description"]) + for i in range(0, len(names), 30): + for r in core.tap("vizier", "SELECT table_name, column_name, unit FROM TAP_SCHEMA.columns WHERE " + " OR ".join("table_name LIKE '%%%s%%'" % t for t in names[i:i + 30])): + units.setdefault(r["table_name"].strip("'"), {})[r["column_name"].strip("'\"")] = r["unit"] + + def one(t): + path = vizier_path(t) + meta = path[:-4] + ".meta.json" + try: + if not os.path.exists(path): + data = core.tap("vizier", 'SELECT * FROM "%s"' % t) + with open(path + ".part", "w", newline="", encoding="utf-8") as f: + if data: + w = csv.DictWriter(f, fieldnames=list(data[0])) + w.writeheader() + w.writerows(data) + os.replace(path + ".part", path) + if not os.path.exists(meta): + title, cols = vizier_meta(t) + json.dump(dict(title=title, columns=cols), open(meta, "w"), indent=1) + except Exception as e: + return "%s: %s" % (t, str(e)[:80]) + return None + with ThreadPoolExecutor(threads) as ex: + for msg in ex.map(one, names): + if msg: + print(" " + msg, flush=True) + index = {} + for t in names: + mp = vizier_path(t)[:-4] + ".meta.json" + m = json.load(open(mp)) if os.path.exists(mp) else dict(title="", columns={}) + index[t] = dict(description=cands[t], title=m["title"], catalogue=sib.get(t.rsplit("/", 1)[0], []), units=units.get(t, {}), columns=m["columns"]) + json.dump(index, open(os.path.join(atlas_ROOT, "vizier", "index.json"), "w"), indent=1) + print("%d VizieR tables of %d catalogues under %s" % (len(names), len(cats), os.path.join(atlas_ROOT, "vizier"))) + + +def _vizier_um(v, unit): + """Wavelengths or widths in a VizieR column's unit put in um; without a unit, by their size.""" + if unit in WAVE_UNITS: + return v * WAVE_UNITS[unit] + med = np.nanmedian(np.abs(v[np.isfinite(v)])) if np.isfinite(v).any() else 1.0 + return v if med < 40 else v * 1e-3 + + +def vizier_spectra(): + """Every kept VizieR table read as one spectrum or several: the wavelength found by its UCD and put in um by its unit, bin edges made a centre and half width, bounds made errors, rows a flag excludes dropped, a table of several planets, instruments or visits split by its text column; each planet named by its group, the table, the catalogue's title or its other tables.""" + import csv + ipath = os.path.join(atlas_ROOT, "vizier", "index.json") + if not os.path.exists(ipath): + return [] + known = known_planets() + out = [] + for t, meta in sorted(json.load(open(ipath)).items()): + path = vizier_path(t) + if not os.path.exists(path): + continue + rows = list(csv.DictReader(open(path, encoding="utf-8"))) + cols, units = meta.get("columns", {}), meta.get("units", {}) + + def ucd(c): + return cols.get(c, {}).get("ucd", "") + + def desc(c): + return cols.get(c, {}).get("desc", "").lower() + # rows a flag marks as left out of the paper's fits are left out here + for c in list(rows[0]) if rows else []: + if ucd(c).startswith("meta.code") and "exclud" in desc(c): + rows = [r for r in rows if not (r[c] or "").strip()] + if len(rows) < 5: + continue + num, text = {}, {} + for c in rows[0]: + vals = [(r[c] or "").strip() for r in rows] + try: + v = np.array([float(x) if x else np.nan for x in vals]) + except ValueError: + if not ucd(c).startswith("meta.code"): + text[c] = vals + continue + if c == "recno" or ucd(c).startswith(("phot.limbDark", "time", "meta.number", "meta.id")): + continue + num[c] = v + # the wavelength columns, told apart by unit, UCD, description and name: a centre, the bin's edges, its width + lengths = [c for c in num if (units.get(c) or "").strip() in WAVE_UNITS or "em.wl" in ucd(c) or "spect.binSize" in ucd(c)] + # a column's name settles which edge it is before its description does, since descriptions are sometimes swapped + edge_lo = [c for c in lengths if re.search(r"(?i)min|^lo|start", c)] or [c for c in lengths if "stat.min" in ucd(c) or re.search(r"lower|minimum|start", desc(c))] + edge_hi = [c for c in lengths if re.search(r"(?i)max|^hi|end", c)] or [c for c in lengths if "stat.max" in ucd(c) or re.search(r"upper|maximum|end", desc(c))] + widths = [c for c in lengths if c not in edge_lo + edge_hi and re.search(r"width|bandwidth", desc(c) + " " + ucd(c).replace("instr.bandwidth", "width")) and not re.search(r"cent", desc(c))] + centres = [c for c in lengths if c not in edge_lo + edge_hi + widths] + half = None + if widths: + width = _vizier_um(num[widths[0]], units.get(widths[0], "")) + half = width if "half" in desc(widths[0]) else width / 2 + if centres: + w = _vizier_um(num[centres[0]], units.get(centres[0], "")) + if half is None and edge_lo and edge_hi: + half = np.abs(_vizier_um(num[edge_hi[0]], units.get(edge_hi[0], "")) - _vizier_um(num[edge_lo[0]], units.get(edge_lo[0], ""))) / 2 + elif edge_lo and edge_hi: + a, b = _vizier_um(num[edge_lo[0]], units.get(edge_lo[0], "")), _vizier_um(num[edge_hi[0]], units.get(edge_hi[0], "")) + w, half = (a + b) / 2, np.abs(b - a) / 2 + else: + continue + for c in lengths: + num.pop(c) + # a measurement given with its lower and upper bounds takes half their spread as its error + for c in list(num): + for a, b in ((c + "min", c + "max"), (c + "low", c + "up")): + if a in num and b in num: + num["e_" + c] = np.abs(num.pop(b) - num.pop(a)) / 2 + eclipse = re.search(r"eclipse|emission|dayside|occultation", (meta["description"] + " " + meta.get("title", "")).lower()) + named = {} + for c, v in num.items(): + n = re.sub(r"(?i)^([e]_)?(rp/r\*|rp/rs|r_?p/r_?\*|rp/r_?s)$", lambda m: (m.group(1) or "") + "RpRs", c) + if eclipse and re.match(r"(?i)^(e_)?flux$", n): + n = re.sub(r"(?i)flux", "FpFs", n) + named[n] = v + named["wave"] = w + if half is not None: + named["halfwidth"] = half + key = None + for c, vals in text.items(): + k = len(set(vals)) + if 2 <= k <= 30 and k < len(vals) / 2 and (key is None or planet_names(" ".join(set(vals)))): + key = c + groups = sorted(set(text[key])) if key else [""] + about = " ".join([meta["description"], meta.get("title", "")]) + cat = planet_names(" ".join(meta["catalogue"])) + own = planet_names(meta["description"]) or planet_names(meta.get("title", "")) or (cat if len(cat) == 1 else []) + for g in groups: + m = np.array([v == g for v in text[key]]) if key else np.ones(len(rows), bool) + pl = planet_names(g) + if not pl and re.match(r"^[b-i]$", g): + # a column of planet letters beside a system the table or catalogue names + pl = [k for k in known.values() if k.endswith(" " + g) and re.search(r"(? 7 * 86400: + os.makedirs(os.path.dirname(local), exist_ok=True) + body = core.get(TEPCAT_URL, timeout=120) + open(local, "wb").write(body) + out = {} + for line in open(local, encoding="utf-8", errors="replace"): + if line.startswith("#") or not line.strip(): + continue + f = line.split() + if len(f) < 41: + continue + + def v(i): + x = core.num(f[i]) + return None if x is None or x == -1 else x + out[tepcat_name(f[0])] = dict(system=f[0], teff=v(1), teff_err=v(2), rs=v(10), rs_err=v(11), a_au=v(23), a_err=v(24), rp_rjup=v(29), + rp_err=v(30), mp_mjup=v(26), teq=v(38), porb=v(19)) + return out + + +ROCKY_PAGE = "https://archive.stsci.edu/hlsp/rocky-worlds" +rocky_ROOT = os.environ.get("ROCKY_ROOT", core.data("rocky_worlds")) +rocky_LAMBDA_UM = 15.0 # MIRI F1500W + + +def rockyworlds_fetch(): + """Every JWST eclipse catalogue the Rocky Worlds DDT page lists, into ROOT.""" + os.makedirs(rocky_ROOT, exist_ok=True) + page = core.get(ROCKY_PAGE, timeout=120).decode("utf-8", "replace") + links = sorted(set(re.findall(r'href="(https://archive\.stsci\.edu/hlsps/rocky-worlds/JWST/[^"]+_eclipse-cat\.fits)"', page))) + for u in links: + local = os.path.join(rocky_ROOT, os.path.basename(u)) + if not os.path.exists(local): + open(local, "wb").write(core.get(u, timeout=300)) + print("%d eclipse catalogues in %s" % (len(links), rocky_ROOT)) + + +def planck_inverse(b, lam_um): + """Brightness temperature (K) of a specific intensity b (W m^-2 Hz^-1 sr^-1) at a wavelength in um.""" + nu = 2.998e8 / (lam_um * 1e-6) + with np.errstate(all="ignore"): + return 6.626e-34 * nu / (1.381e-23 * np.log1p(2 * 6.626e-34 * nu ** 3 / (2.998e8 ** 2 * b))) + + +rockyworlds_DOC = r"""Atmospheres of the Rocky Worlds planets: every JWST MIRI 15 um eclipse the Rocky Worlds DDT has released, each planet's depth (the team's joint fit where one exists, else the weighted mean of its eclipses) turned into a dayside brightness temperature through the star's own measured 15 um flux, its radius and distance and the planet's radius ratio, against the hottest a bare dark rock without redistribution can be, T_eff (R*/a)^1/2 (2/3)^1/4; a ratio below 0.8 at 3 sigma is heat carried away by an atmosphere or reflected by a bright surface, one above 1 at 3 sigma more heat than starlight supplies; the errors drawn from the depth's and the radius's. + + python -I seti.py biosignatures rockyworlds fetch + python -I seti.py biosignatures rockyworlds [record] [--ratio-atm 0.8] [--sigma 3] [--draws 20000]""" + + +def rockyworlds_main(record=False, ratio_atm=0.8, sigma=3.0, draws=20000): + import glob + from astropy.io import fits + by = {} + for path in sorted(glob.glob(os.path.join(rocky_ROOT, "*_eclipse-cat.fits"))): + with fits.open(path) as h: + name = h[0].header.get("HLSPTARG") + m = h["MEASUREMENTS"].data + by.setdefault(name, []).append(dict(file=os.path.basename(path), joint="checkpoint" in path, depth=float(m["ECLIPSEDEPTH"][0]), + err=float(m["ECLIPSEDEPTHERROR"][0]), absflux=float(np.mean(m["ABSFLUX"])), n=len(m))) + tep = tepcat() + dist = {k: core.num(v["star_distance"]) for k, v in eu_planets(sorted(by)).items()} + rng = np.random.default_rng(1) + out = [] + for name, cats in sorted(by.items()): + joint = [c for c in cats if c["joint"]] + if joint: + c = sorted(joint, key=lambda c: c["file"])[-1] + depth, err, n_ecl = c["depth"], c["err"], c["n"] + else: + w = np.array([1 / c["err"] ** 2 for c in cats]) + depth = float(np.sum(w * np.array([c["depth"] for c in cats])) / np.sum(w)) + err, n_ecl = float(1 / math.sqrt(np.sum(w))), len(cats) + f_star = float(np.mean([c["absflux"] for c in cats])) + p = tep.get(name) + if not p or not dist.get(name) or None in (p["rp_rjup"], p["rs"], p["a_au"], p["teff"]): + print(" %s: no parameters" % name) + continue + rp, rp_err = p["rp_rjup"] * 7.1492e7, (p["rp_err"] or 0) * 7.1492e7 + rs, a_au, teff, d_m = p["rs"] * 6.957e8, p["a_au"], p["teff"], dist[name] * 3.0857e16 + b_star = f_star * 1e-29 / (math.pi * (rs / d_m) ** 2) + t_max = teff * math.sqrt(rs / (a_au * 1.496e11)) * (2 / 3) ** 0.25 + dd = rng.normal(depth, err, draws) * 1e-6 + kk = rng.normal(rp, rp_err, draws) / rs + tb = planck_inverse(np.where(dd > 0, dd, np.nan) * b_star / kk ** 2, rocky_LAMBDA_UM) + ratio = np.nan_to_num(tb / t_max, nan=0.0) + t_day = float(planck_inverse(depth * 1e-6 * b_star / (rp / rs) ** 2, rocky_LAMBDA_UM)) if depth > 0 else 0.0 + lo, med, hi = np.percentile(ratio, [16, 50, 84]) + p_atm = float(np.mean(ratio >= ratio_atm)) + p_hot = float(np.mean(ratio <= 1.0)) + z_atm = (ratio_atm - med) / max(med - lo, 1e-9) if med < ratio_atm else -(med - ratio_atm) / max(med - lo, 1e-9) + z_hot = (med - 1.0) / max(med - lo, 1e-9) + verdict = ("heat carried off or reflected" if z_atm >= sigma else "more heat than starlight supplies" if z_hot >= sigma else "a bare rock's dayside" if lo >= ratio_atm else "undecided") + out.append(dict(planet=name, depth=depth, err=err, n_eclipses=n_ecl, absflux_mjy=f_star, t_day=t_day, t_max=t_max, ratio=float(med), ratio_lo=float(lo), + ratio_hi=float(hi), p_ratio_above_atm=p_atm, p_ratio_below_1=p_hot, z_atm=z_atm, z_hot=z_hot, teq=p["teq"], verdict=verdict)) + print("%d Rocky Worlds planets with JWST 15 um eclipses" % len(out)) + for o in out: + print(" %-10s %d eclipse%s, depth %.0f +- %.0f ppm, star %.2f mJy: dayside %.0f K against a bare rock's %.0f K, ratio %.2f (%.2f-%.2f); %s" % ( + o["planet"], o["n_eclipses"], "" if o["n_eclipses"] == 1 else "s", o["depth"], o["err"], o["absflux_mjy"], o["t_day"], o["t_max"], o["ratio"], o["ratio_lo"], o["ratio_hi"], o["verdict"])) + json.dump(out, open(core.results("biosig_rockyworlds.json"), "w"), indent=1) + if record: + core.record_run( + "rocky_worlds_15um", "Atmospheres of the Rocky Worlds planets", "MAST high-level science products of the JWST Rocky Worlds DDT (MIRI F1500W eclipse catalogues); planetary and stellar parameters from TEPCat, distances from the Encyclopaedia of Exoplanetary Systems", + "every Rocky Worlds planet with a released JWST eclipse: %s" % ", ".join(o["planet"] for o in out), os.path.abspath(__file__), "rockyworlds", len(out), "planets", + dict(ratio_atm=ratio_atm, sigma=sigma, draws=draws, wavelength_um=rocky_LAMBDA_UM), + "the bare dark rock's dayside without redistribution, T_eff (R*/a)^1/2 (2/3)^1/4", "the depth's and the planet radius's errors drawn %d times" % draws, + "; ".join("%s %.2f of a bare rock's dayside, %s" % (o["planet"], o["ratio"], o["verdict"]) for o in out), + [dict(target="planet:%s" % o["planet"], stat=round(o["ratio"], 3), unit="dayside brightness temperature over a bare dark rock's", + note="%d eclipse%s, depth %.0f +- %.0f ppm, dayside %.0f K against %.0f K (16-84 per cent %.2f-%.2f); %s" % ( + o["n_eclipses"], "" if o["n_eclipses"] == 1 else "s", o["depth"], o["err"], o["t_day"], o["t_max"], o["ratio_lo"], o["ratio_hi"], o["verdict"])) for o in out]) + print("recorded") + + +# the screen of every planet adds the optical alkali lines, which hot giants' spectra carry +ATOMIC_BANDS = dict(Na=((0.589, 0.02, 1.0),), K=((0.767, 0.02, 1.0),)) +HITRAN_API = "https://hitran.org/lbl/api" +# N2O's main isotopologue by HITRAN's global isotopologue id; Exo-Transmit's tables lack it +HITRAN_ISO = dict(N2O=21) +EXO_TRANSMIT = "https://raw.githubusercontent.com/elizakempton/Exo_Transmit/master/Opac/opac%s.dat" +NIST_DMS = "https://webbook.nist.gov/cgi/cbook.cgi?JCAMP=C75183&Index=0&Type=IR" +LINE_GASES = ("H2O", "CH4", "CO2", "CO", "NH3", "DMS", "N2O", "SO2", "OCS", "O3") +XS_R, XS_UM = 1000.0, (0.3, 30.0) +# the cross-sections of a temperate atmosphere's middle, 300 K and 0.1 bar +XS_T, XS_PA = 300.0, 1e4 +# a gas stops shaping the spectrum where its cross-section falls below this fraction of its strongest, about where Earth's methane meets the rest of the opacity +XS_FLOOR = 1e-4 + + +def xs_grid(): + """The edges of the logarithmic wavelength grid (um) on which cross-sections are kept, at R 1,000 from 0.3 to 30 um.""" + return np.exp(np.arange(np.log(XS_UM[0]), np.log(XS_UM[1]), 1 / XS_R)) + + +def xs_centres(): + """The centres of the cross-section grid's bins (um).""" + e = xs_grid() + return np.sqrt(e[1:] * e[:-1]) + + +def exo_transmit_xs(gas): + """A gas's cross-sections on the grid at every temperature of Exo-Transmit's opacity table (Kempton et al. 2017), at 0.1 bar, in the table's m2: the temperatures (K) and one row per temperature.""" + path = core.data("opacities", "%s_R%d_T.npz" % (gas, XS_R)) + if os.path.exists(path): + z = np.load(path) + return z["temps"], z["xs"] + local = core.data("opacities", "opac%s.dat" % gas) + if not os.path.exists(local): + os.makedirs(os.path.dirname(local), exist_ok=True) + body = core.get(EXO_TRANSMIT % gas, timeout=600) + open(local, "wb").write(body) + lines = [line for line in open(local) if line.strip()] + temps, pres = np.array(lines[0].split(), dtype=float), np.array(lines[1].split(), dtype=float) + ip = int(np.argmin(np.abs(np.log10(pres) - np.log10(XS_PA)))) + # each wavelength (m) is followed by one row per pressure: its log10 and the cross-section at each temperature + lam = np.array([float(lines[i]) for i in range(2, len(lines), 1 + len(pres))]) * 1e6 + xs = np.array([lines[i + 1 + ip].split()[1:] for i in range(2, len(lines), 1 + len(pres))], dtype=float) + c = np.log(xs_centres()) + out = np.exp(np.array([np.interp(c, np.log(lam), np.log(np.maximum(xs[:, j], 1e-60))) for j in range(len(temps))])) + np.savez(path, temps=temps, xs=out) + return temps, out + + +def hitran_xs(gas, threads=8, step=250.0): + """A gas's mean cross-section (cm2) in each bin of the grid from HITRAN's lines of its main isotopologue at 296 K, each wavenumber range read page by page until a page comes back empty, since the service cuts long answers short.""" + import http.client + from concurrent.futures import ThreadPoolExecutor + path = core.data("opacities", "%s_R%d.npy" % (gas, XS_R)) + if os.path.exists(path): + return np.load(path) + edges = xs_grid() + + def page(lo, hi): + url = HITRAN_API + "?" + urllib.parse.urlencode(dict(iso_ids_list=HITRAN_ISO[gas], numin="%.6f" % lo, numax="%.6f" % hi, request_params="nu,sw")) + for attempt in range(4): + try: + body = urllib.request.urlopen(urllib.request.Request(url, headers=core.UA), timeout=300).read() + except http.client.IncompleteRead as e: + body = e.partial + except urllib.error.HTTPError as e: + if e.code == 404: + return np.zeros((0, 2)) + time.sleep(5 * (attempt + 1)) + continue + except OSError: + time.sleep(5 * (attempt + 1)) + continue + rows = [r.split(",") for r in body.decode("ascii", "replace").split() if r.count(",") == 1] + # the last row of an answer cut short may be cut too + return np.array(rows[:-1] if len(rows) > 1 else rows, dtype=float).reshape(-1, 2) + raise IOError("HITRAN did not answer for %s %g-%g" % (gas, lo, hi)) + + def one(lo): + hi, parts = lo + step, [] + while True: + a = page(lo, hi) + if not len(a): + return np.concatenate(parts) if parts else a + parts.append(a) + lo = a[-1, 0] + 1e-6 + with ThreadPoolExecutor(threads) as ex: + a = np.concatenate(list(ex.map(one, np.arange(1e4 / edges[-1], 1e4 / edges[0], step)))) + a = np.unique(a, axis=0) + k = np.searchsorted(edges, 1e4 / a[:, 0]) - 1 + ok = (k >= 0) & (k < len(edges) - 1) + xs = np.bincount(k[ok], weights=a[ok, 1], minlength=len(edges) - 1) / (1e4 / edges[:-1] - 1e4 / edges[1:]) + os.makedirs(os.path.dirname(path), exist_ok=True) + np.save(path, xs) + return xs + + +def nist_dms_xs(): + """Dimethyl sulfide's absorbance on the grid, from the NIST WebBook's infrared spectrum (Coblentz 5969, liquid, 2.5-16 um), its baseline removed; zero outside it.""" + local = core.data("opacities", "DMS_nist.jdx") + if not os.path.exists(local): + os.makedirs(os.path.dirname(local), exist_ok=True) + body = core.get(NIST_DMS, timeout=120) + open(local, "wb").write(body) + nu, tr, step = [], [], 1.0 + for line in open(local, encoding="utf-8", errors="replace"): + if line.startswith("##DELTAX="): + step = float(line.split("=")[1]) + elif line[:1].isdigit(): + v = [float(x) for x in line.split()] + nu += [v[0] + step * i for i in range(len(v) - 1)] + tr += v[1:] + nu, ab = np.array(nu), -np.log10(np.clip(tr, 1e-4, 1)) + ab = np.clip(ab - np.percentile(ab, 5), 0, None) + c = xs_centres() + o = np.argsort(1e4 / nu) + lam = (1e4 / nu)[o] + return np.where((c >= lam[0]) & (c <= lam[-1]), np.interp(c, lam, ab[o]), 0.0) + + +_TEMPLATES = {} + + +def gas_template(gas, w, hw, temp=XS_T): + """A gas's transmission template averaged over each bin, from its cross-sections at the tabulated temperature nearest the atmosphere's: the logarithm of the cross-section above a floor of its strongest, which is how an atmosphere's effective height follows opacity (Lecavelier des Etangs et al. 2008), scaled to one at its peak.""" + if gas in HITRAN_ISO or gas == "DMS": + key = (gas, None) + else: + temps, table = exo_transmit_xs(gas) + j = int(np.argmin(np.abs(temps - temp))) + key = (gas, j) + if key not in _TEMPLATES: + xs = nist_dms_xs() if gas == "DMS" else hitran_xs(gas) if gas in HITRAN_ISO else table[key[1]] + floor = XS_FLOOR * xs.max() + t = np.log(np.maximum(xs, floor) / floor) / np.log(1 / XS_FLOOR) + _TEMPLATES[key] = np.concatenate([[0.0], np.cumsum(t)]) + c = _TEMPLATES[key] + edges = xs_grid() + hw = np.where(hw > 0, hw, np.abs(np.gradient(w)) / 2 if len(w) > 1 else 0.01) + # a bin narrower than the grid's takes the grid bin it falls in + lo = np.clip(np.searchsorted(edges, w - hw) - 1, 0, len(c) - 2) + hi = np.clip(np.maximum(np.searchsorted(edges, w + hw) - 1, lo + 1), 1, len(c) - 1) + inside = (w > edges[0]) & (w < edges[-1]) + return np.where(inside, (c[hi] - c[lo]) / (hi - lo), 0.0) + + +TABLE_EXT = (".txt", ".dat", ".csv", ".ecsv", ".tsv", ".tbl", ".fits", ".fit", ".npy") + + +def bin_spectrum(w, hw, d, e, resolution=100.0): + """A spectrum averaged with inverse-variance weights into bins of constant resolution, each with its half width; a spectrum already that coarse is returned as it is.""" + ok = np.isfinite(w) & (w > 0) & np.isfinite(d) & np.isfinite(e) & (e > 0) + w, hw, d, e = w[ok], np.where(np.isfinite(hw[ok]), hw[ok], 0.0), d[ok], e[ok] + if len(w) < 2 or np.median(w / np.maximum(2 * hw, 1e-9)) <= resolution * 1.5: + return w, hw, d, e + edges = np.exp(np.arange(np.log(w.min()), np.log(w.max()) + 1 / resolution, 1 / resolution)) + k = np.digitize(w, edges) + ow, ohw, od, oe = [], [], [], [] + for j in np.unique(k): + m = k == j + wt = 1 / e[m] ** 2 + ow.append(float(np.sum(wt * w[m]) / np.sum(wt))) + od.append(float(np.sum(wt * d[m]) / np.sum(wt))) + oe.append(float(1 / math.sqrt(np.sum(wt)))) + ohw.append(float((w[m].max() + hw[m][np.argmax(w[m])] - w[m].min() + hw[m][np.argmin(w[m])]) / 2)) + return np.array(ow), np.array(ohw), np.array(od), np.array(oe) + + +def screen_spectrum(w, hw, d, e, gases=LINE_GASES + tuple(ATOMIC_BANDS), temp=XS_T): + """One spectrum, binned to R 100, fitted with an offset, a scattering slope where it reaches below 1 um, and every gas whose bands it covers at the atmosphere's temperature; each gas's signed significance from how much the fit worsens without it, its errors scaled up to the fit's own scatter.""" + w, hw, d, e = bin_spectrum(w, hw, d, e) + cols, names = [np.ones(len(w))], ["offset"] + if np.min(w) < 1.0: + cols.append(np.log(w)) + names.append("slope") + base = len(cols) + for gas in gases: + t = gas_template(gas, w, hw, temp) if gas in LINE_GASES else band_template(w, hw, ATOMIC_BANDS[gas]) + if np.ptp(t) > 0.05: + cols.append(t) + names.append(gas) + A = np.array(cols).T + W = 1.0 / e ** 2 + + def fit(M): + cov = np.linalg.pinv(M.T @ (M * W[:, None])) + par = cov @ (M.T @ (W * d)) + return par, cov, float(np.sum(W * (d - M @ par) ** 2)) + par, cov, chi = fit(A) + dof = len(w) - len(names) + scale = max(1.0, chi / dof) if dof > 0 else 1.0 + sig = {} + for j in range(base, len(names)): + dchi = (fit(np.delete(A, j, axis=1))[2] - chi) / scale + sig[names[j]] = math.copysign(math.sqrt(max(dchi, 0.0)), par[j]) + return dict(sig=sig, chi2=chi, chi2_flat=fit(A[:, :base])[2], dof=dof, n_binned=len(w), error_scale=math.sqrt(scale)) + + +# files that hold the sky's, a star's or a model's spectrum rather than a planet's +NOT_PLANET = re.compile(r"sky|telluric|stellar|star_spec|host|phoenix|bt.?settl|model|retriev|posterior|sample|chain|forward|synthetic|simulat|opacity|xsec|cross.?sec|template|grid|mass.?metal|mh_curve", re.I) + + +def canonical_planet(name, known): + """A planet name matched to a catalogue's spelling by its letters and digits alone (LP 79118 c to LP 791-18 c), its numbers' zero padding dropped (WASP-039 b), or its component letter dropped (WASP-77 A b to WASP-77 b); otherwise itself.""" + unpadded = re.sub(r"(? 20000 or x["w"][-1] - x["w"][0] < 0.2: + return False + md, me = np.median(np.abs(x["d"])), np.median(x["e"]) + return bool(1 <= md <= 2e5 and 0 < me <= 10 * max(md, 1)) + + +def atlas_parse(records, procs=8): + """Every downloaded Zenodo file that may be a planet's spectrum read as one where its columns allow, on several processes with a cache of each file's reading; a record of many files is read only where its names speak of spectra; identical spectra kept once.""" + from concurrent.futures import ProcessPoolExecutor + out, seen, dropped = [], set(), set() + known = known_planets() + root = os.path.join(atlas_ROOT, "zenodo") + cache_path = os.path.join(atlas_ROOT, "parse_cache.json") + cache = json.load(open(cache_path)) if os.path.exists(cache_path) else {} + jobs = [] + for rid in sorted(os.listdir(root)) if os.path.isdir(root) else []: + r = records.get(rid, {}) + rec_planets = planet_names(" ".join([r.get("title", ""), r.get("desc", "")])) + files = [] + for d, _, fs in os.walk(os.path.join(root, rid)): + for f in fs: + path = os.path.join(d, f) + rel = os.path.relpath(path, os.path.join(root, rid)) + if f.lower().endswith(TABLE_EXT) and os.path.getsize(path) <= 50e6 and not NOT_PLANET.search(rel): + files.append((path, rel)) + if len(files) > 20: + files = [(p, rel) for p, rel in files if SPEC_NAME.search(rel)] + for path, rel in files: + pl = planet_names(rel.replace(os.sep, " ")) or (rec_planets if len(rec_planets) == 1 else []) + pl = [canonical_planet(x, known) for x in pl] + if len(pl) != 1: + continue + if pl[0] not in known.values(): + # transit and eclipse spectra belong to transiting planets, which TEPCat lists; a name it lacks is a companion imaged directly or a misreading + dropped.add(pl[0]) + continue + key = "%s|%s|%d|%d" % (rid, rel, os.path.getsize(path), int(os.path.getmtime(path))) + jobs.append((key, path, rel, rid, r, pl[0])) + todo = [j for j in jobs if j[0] not in cache] + if todo: + with ProcessPoolExecutor(procs) as ex: + for j, x in zip(todo, ex.map(_parse_one, [(j[1], j[4].get("title", "") + " " + j[2]) for j in todo], chunksize=8)): + cache[j[0]] = x + json.dump(cache, open(cache_path, "w")) + for key, path, rel, rid, r, planet in jobs: + x = cache.get(key) + if not usable_spectrum(x): + continue + dedupe = (planet, len(x["w"]), round(float(np.sum(x["w"])), 4), round(float(np.sum(x["d"])), 1)) + if dedupe in seen: + continue + seen.add(dedupe) + out.append(dict(planet=planet, kind=x["kind"], instrument=instrument_of(rel + " " + r.get("title", "")), source="zenodo:%s" % rid, + doi=r.get("doi"), file=rel, n=len(x["w"]), wmin=float(x["w"][0]), wmax=float(x["w"][-1]), columns=x["columns"], + w=x["w"], hw=x["hw"], d=x["d"], e=x["e"])) + print(" %d files considered, %d read now and %d from the cache" % (len(jobs), len(todo), len(jobs) - len(todo))) + if dropped: + print(" names TEPCat does not list as transiting planets, set aside: %s" % ", ".join(sorted(dropped))) + return out + + +atlas_DOC = r"""Gases of every planet with a published spectrum: every transmission and emission spectrum the NASA Exoplanet Archive holds, every one MAST's Exo.MAST serves, every one a VizieR table holds and every one published on Zenodo that a table reader can take (wavelength, depth and error columns by name and value, radius ratios squared, units to um and ppm), each binned to R 100 and fitted alone with an offset, a scattering slope below 1 um and templates of H2O, CH4, CO2, CO, NH3, SO2, OCS and O3 from Exo-Transmit's cross-sections at the tabulated temperature nearest the planet's, N2O from HITRAN's lines and dimethyl sulfide from NIST's infrared spectrum, each the logarithm of its cross-section above a floor of 1e-4 of its peak, with Na and K as bands; each gas counted by how much the fit worsens without it, its errors scaled to the fit's own scatter, and by its median over a planet's spectra; in transmission, CH4 and CO2 at 3 sigma with CO below 2 sigma, dimethyl sulfide at 3 sigma or N2O at 3 sigma flag a planet, which a hot, giant or hydrogen-enveloped planet's own chemistry, methane beside a DMS reading and a cool host's spots then explain where they apply; Earth's transit spectrum from ACE-FTS (Macdonald & Cowan 2019) is the control, read alone and laid on each temperate small planet's spectra with their errors; TEPCat gives each planet's size, temperature and host. + + python -I seti.py biosignatures atlas search|fetch|exomast|vizier|parse + python -I seti.py biosignatures atlas [record] [--sigma 3] [--hot-k 450] [--giant-rjup 0.32] [--envelope-rjup 0.143] [--cool-host-k 3500]""" + + +def atlas_cli(): + import sys + mode = sys.argv[1] if len(sys.argv) > 1 else "" + scan = os.path.join(atlas_ROOT, "zenodo_records.json") + if mode == "search": + os.makedirs(atlas_ROOT, exist_ok=True) + recs = json.load(open(scan)) if os.path.exists(scan) else {} + qpath = os.path.join(atlas_ROOT, "zenodo_queries.json") + done = set(json.load(open(qpath))) if os.path.exists(qpath) and recs else set() + todo = [q for q in ZENODO_QUERIES if q not in done] + recs.update(zenodo_search(todo)) + json.dump(recs, open(scan, "w"), indent=1) + json.dump(sorted(done | set(todo)), open(qpath, "w"), indent=1) + print("%d Zenodo records, %d naming a planet" % (len(recs), sum(1 for r in recs.values() if planet_names(r["title"] + " " + r["desc"])))) + return + if mode == "fetch": + zenodo_fetch(json.load(open(scan))) + return + if mode == "exomast": + exomast_fetch(sorted(tepcat())) + return + if mode == "vizier": + vizier_fetch() + return + if mode == "parse": + sp = atlas_parse(json.load(open(scan))) + ex = exomast_spectra() + vz = vizier_spectra() + ar = archive_atlas_spectra() + print(" %d Zenodo, %d Exo.MAST, %d VizieR and %d archive spectra" % (len(sp), len(ex), len(vz), len(ar))) + sp = dedupe_spectra(sp + ex + vz + ar) + json.dump(sp, open(os.path.join(atlas_ROOT, "atlas.json"), "w")) + pl = {} + for x in sp: + pl.setdefault(x["planet"], set()).add(x["kind"]) + print("%d spectra of %d planets (%d with transmission, %d with emission)" % ( + len(sp), len(pl), sum("transmission" in v for v in pl.values()), sum("emission" in v for v in pl.values()))) + return + core.run_cli(atlas_main) + + +def archive_atlas_spectra(): + """Every transit and eclipse spectrum the NASA Exoplanet Archive's spectroscopy table lists, read through its workspace on a few threads, or none while the archive does not answer.""" + from concurrent.futures import ThreadPoolExecutor + try: + rows = core.exoplanets("SELECT pl_name, spec_type, instrument, facility, authors, note, num_datapoints, bibcode, spec_path FROM spectra") + ws = exo_workspace() + except Exception as e: + print(" the NASA Exoplanet Archive did not answer (%s); its spectra wait for the next parse" % str(e)[:60]) + return [] + known = known_planets() + + def fetch(r): + """One spectrum read, through the cache, or None.""" + try: + return exo_spectrum(r["spec_path"], ws) + except Exception: + return None + rows = [r for r in rows if r["spec_type"] in ("Transmission", "Eclipse")] + with ThreadPoolExecutor(8) as ex: + read = list(ex.map(fetch, rows)) + out = [] + for r, x in zip(rows, read): + kind = {"Transmission": "transmission", "Eclipse": "emission"}[r["spec_type"]] + if x is None: + continue + o = np.argsort(x[0]) + w, hw, d, e = (a[o] for a in x) + y = dict(planet=canonical_planet(r["pl_name"], known), kind=kind, instrument=r["instrument"], source="archive:%s" % r["bibcode"], doi=None, file=r["spec_path"], + n=len(w), wmin=float(w[0]) if len(w) else 0.0, wmax=float(w[-1]) if len(w) else 0.0, columns=None, w=w.tolist(), hw=hw.tolist(), d=d.tolist(), e=e.tolist()) + if usable_spectrum(y): + out.append(y) + return out + + +EARTH_SPECTRUM = "https://zenodo.org/api/records/8280710/files/Spectrum.txt/content" +R_EARTH_KM, R_SUN_KM = 6371.0, 695700.0 + + +def earth_transit(): + """Earth's transit spectrum built from ACE-FTS solar occultations (Macdonald & Cowan 2019): wavelengths (um, rising) and the atmosphere's effective height (km).""" + npz = core.data("earth_control", "earth_transit.npz") + if os.path.exists(npz): + z = np.load(npz) + return z["w"], z["h"] + local = core.data("earth_control", "Spectrum.txt") + if not os.path.exists(local): + os.makedirs(os.path.dirname(local), exist_ok=True) + body = core.get(EARTH_SPECTRUM, timeout=600) + open(local, "wb").write(body) + rows = [line for line in open(local) if line.strip()] + w, h = np.array(rows[0].split(), dtype=float), np.array(rows[1].split(), dtype=float) + o = np.argsort(w) + np.savez(npz, w=w[o], h=h[o]) + return w[o], h[o] + + +def earth_depth_on(centres, halves, r_star_sun): + """The depth (ppm) Earth's atmosphere adds to its transit of a star of the given radius, averaged over each bin; NaN where a bin reaches past the spectrum's 2.2-14.3 um.""" + w, h = earth_transit() + d = ((R_EARTH_KM + h) ** 2 - R_EARTH_KM ** 2) / (r_star_sun * R_SUN_KM) ** 2 * 1e6 + c = np.concatenate([[0.0], np.cumsum(d)]) + halves = np.where(halves > 0, halves, np.abs(np.gradient(centres)) / 2 if len(centres) > 1 else 0.01) + lo, hi = np.searchsorted(w, centres - halves), np.searchsorted(w, centres + halves) + out = np.full(len(centres), np.nan) + ok = (hi > lo) & (centres - halves >= w[0]) & (centres + halves <= w[-1]) + out[ok] = (c[hi[ok]] - c[lo[ok]]) / (hi[ok] - lo[ok]) + return out + + +def earth_control(): + """Earth's own transit spectrum through the screen at R 100: each gas's significance against the templates' misfit, the noise when the errors are set far below the signal.""" + w, _ = earth_transit() + edges = np.exp(np.arange(np.log(w[0]), np.log(w[-1]), 0.01)) + centres, halves = (edges[1:] + edges[:-1]) / 2, (edges[1:] - edges[:-1]) / 2 + d = earth_depth_on(centres, halves, 1.0) + ok = np.isfinite(d) + return screen_spectrum(centres[ok], halves[ok], d[ok], np.full(int(ok.sum()), 1e-6 * float(np.ptp(d[ok]))), temp=288.0) + + +def earth_twin(spectra, r_star_sun, temp=288.0): + """An Earth twin in front of a planet's host: Earth's transit spectrum laid on the bins of each of the planet's spectra with their errors, as their own fits scaled them, and screened as they were; each gas's median significance and the spectra used.""" + sigs = [] + for x in spectra: + w, hw = np.asarray(x["w"], dtype=float), np.asarray(x["hw"], dtype=float) + e = np.asarray(x["e"], dtype=float) * x.get("error_scale", 1.0) + d = earth_depth_on(w, hw, r_star_sun) + ok = np.isfinite(d) + if ok.sum() >= 5: + sigs.append(screen_spectrum(w[ok], hw[ok], d[ok], e[ok], temp=temp)["sig"]) + gases = sorted({g for z in sigs for g in z}) + return {g: float(np.median([z[g] for z in sigs if g in z])) for g in gases}, len(sigs) + + +def flags_of(tr, sigma): + """The biosignature flags a planet's median transmission significances raise: CH4 and CO2 without CO, dimethyl sulfide, N2O.""" + flags = [] + if tr.get("CH4", 0) >= sigma and tr.get("CO2", 0) >= sigma and tr.get("CO", 0) < 2: + flags.append("CH4 %.1f and CO2 %.1f sigma without CO" % (tr["CH4"], tr["CO2"])) + if tr.get("DMS", 0) >= sigma: + flags.append("dimethyl sulfide %.1f sigma" % tr["DMS"]) + if tr.get("N2O", 0) >= sigma: + flags.append("N2O %.1f sigma" % tr["N2O"]) + return flags + + +def atlas_main(record=False, sigma=3.0, hot_k=450.0, giant_rjup=0.32, envelope_rjup=0.143, cool_host_k=3500.0): + sp = json.load(open(os.path.join(atlas_ROOT, "atlas.json"))) + tep = tepcat() + earth = earth_control() + planets = {} + for x in sp: + x.update(screen_spectrum(np.array(x["w"]), np.array(x["hw"]), np.array(x["d"]), np.array(x["e"]), temp=tep.get(x["planet"], {}).get("teq") or XS_T)) + planets.setdefault(x["planet"], []).append(x) + out = [] + for name, xs in sorted(planets.items()): + t = tep.get(name, {}) + summary = {} + for kind in ("transmission", "emission"): + ks = [x for x in xs if x["kind"] == kind] + gases = sorted({g for x in ks for g in x["sig"]}) + # each gas's median significance over the spectra whose range covers its bands, so that one reduction among many cannot carry it + summary[kind] = {g: dict(median=float(np.median([x["sig"][g] for x in ks if g in x["sig"]])), n=sum(1 for x in ks if g in x["sig"]), + n_sig=sum(1 for x in ks if x["sig"].get(g, 0) >= sigma)) for g in gases} + tr = {g: v["median"] for g, v in summary["transmission"].items()} + flags = flags_of(tr, sigma) + twin, n_twin, need = {}, 0, None + ks = [x for x in xs if x["kind"] == "transmission"] + if ks and t.get("rs") and (t.get("teq") or 9999) <= hot_k and (t.get("rp_rjup") or 1) <= envelope_rjup: + # a temperate small planet: what its data would show if it were Earth + twin, n_twin = earth_twin(ks, t["rs"]) + # a gas whose twin reading is below a hundredth of a sigma is out of reach of any number of such spectra + if twin.get("CH4", 0) >= 0.01 and twin.get("CO2", 0) >= 0.01: + need = max((sigma / twin["CH4"]) ** 2, (sigma / twin["CO2"]) ** 2) + vet, why = None, None + if flags: + if (t.get("teq") or 0) > hot_k or (t.get("rp_rjup") or 0) > envelope_rjup: + kind = "hot" if (t.get("teq") or 0) > hot_k else "giant" if (t.get("rp_rjup") or 0) > giant_rjup else "hydrogen-enveloped" + vet, why = "abiotic-chemistry", "a %s planet (%s K, %.2f Jupiter radii), whose hydrogen atmosphere makes these gases without life, its CH4 band at 3.3 um beside the DMS template's" % ( + kind, t.get("teq"), t.get("rp_rjup") or 0) + elif all(f.startswith("dimethyl") for f in flags) and tr.get("CH4", 0) >= 2: + vet, why = "methane-overlap", "methane at %.1f sigma, whose 3.3 um band the DMS template overlaps; Earth's own transit spectrum, without detectable DMS, reads DMS at %.1f sigma beside its methane" % ( + tr["CH4"], earth["sig"].get("DMS", 0)) + elif (t.get("teff") or 9999) < cool_host_k: + vet, why = "stellar-contamination", "a %s K host whose spots and faculae imprint bands on the transit spectrum" % t.get("teff") + detected = {k: sorted(g for g, v in summary[k].items() if v["median"] >= sigma) for k in summary} + out.append(dict(planet=name, n_spectra=len(xs), kinds=sorted({x["kind"] for x in xs}), instruments=sorted({x["instrument"] or "?" for x in xs}), + sources=sorted({x["source"] for x in xs}), teq=t.get("teq"), rp_rjup=t.get("rp_rjup"), host_teff=t.get("teff"), summary=summary, + detected=detected, flags=flags, vet=vet, why=why, earth_twin=twin, n_twin=n_twin, need=need)) + n_flag = sum(1 for o in out if o["flags"]) + eflags = flags_of(earth["sig"], sigma) + control = "Earth's own transit spectrum (ACE-FTS, Macdonald & Cowan 2019) at R 100 reads %s and %s" % ( + ", ".join("%s %.1f" % (g, v) for g, v in sorted(earth["sig"].items(), key=lambda kv: -kv[1]) if v >= 2) or "nothing at 2 sigma", + "raises " + "; ".join(eflags) if eflags else "raises no flag") + print(control) + print("%d spectra of %d planets; flagged %d, unexplained %d" % (len(sp), len(out), n_flag, sum(1 for o in out if o["flags"] and not o["vet"]))) + for o in out: + print(" %-16s %5s K %5.2f R_J host %5s K %3d spectra transmission: %-32s emission: %-24s%s" % ( + o["planet"], o["teq"], o["rp_rjup"] or 0, o["host_teff"], o["n_spectra"], ",".join(o["detected"].get("transmission", [])) or "-", + ",".join(o["detected"].get("emission", [])) or "-", (" FLAG " + "; ".join(o["flags"]) + " -> " + (o["why"] or "unexplained")) if o["flags"] else "")) + twins = [o for o in out if o["n_twin"]] + for o in sorted(twins, key=lambda o: o["need"] or 1e9): + print(" an Earth twin in place of %-14s CO2 %4.1f, CH4 %4.1f, N2O %4.1f sigma in the median of %d spectra; %s" % ( + o["planet"], o["earth_twin"].get("CO2", 0), o["earth_twin"].get("CH4", 0), o["earth_twin"].get("N2O", 0), o["n_twin"], + "%.0f spectra like the median one for CH4 and CO2 at %g sigma" % (o["need"], sigma) if o["need"] else "CH4 or CO2 out of reach")) + json.dump(dict(spectra=[{k: v for k, v in x.items() if k not in ("w", "hw", "d", "e")} for x in sp], planets=out), + open(core.results("biosig_atlas.json"), "w"), indent=1, default=float) + if record: + core.record_run( + "spectra_atlas_gases", "Gases of every planet with a published spectrum", + "NASA Exoplanet Archive atmospheric spectroscopy table, MAST's Exo.MAST spectra, VizieR's published tables and Zenodo's published spectra; planet parameters from TEPCat", + "every planet with a transmission or emission spectrum the archive lists, Exo.MAST serves, a VizieR table holds or a Zenodo record holds in a readable table: %d spectra of %d planets" % (len(sp), len(out)), + os.path.abspath(__file__), "atlas", len(out), "planets", dict(sigma=sigma, hot_k=hot_k, giant_rjup=giant_rjup, envelope_rjup=envelope_rjup, cool_host_k=cool_host_k), + "each spectrum's flat fit with its offset and slope; the band templates' formal errors; each gas's median over the spectra that cover it; %s; " + "an Earth twin laid on each temperate small planet's spectra with their errors, %s" % (control, "; ".join( + "%s CO2 %.1f, CH4 %.1f sigma (%s)" % (o["planet"], o["earth_twin"].get("CO2", 0), o["earth_twin"].get("CH4", 0), + "%.0f spectra like its median one for both at %g sigma" % (o["need"], sigma) if o["need"] else "out of reach") + for o in sorted(twins, key=lambda o: o["need"] or 1e9)) or "none such"), + "CH4 and CO2 at %g sigma without CO at 2 sigma, dimethyl sulfide or N2O at %g sigma, in transmission, as medians over a planet's spectra" % (sigma, sigma), + "%d planets: %d flagged, %d of them unexplained" % (len(out), n_flag, sum(1 for o in out if o["flags"] and not o["vet"])), + [dict(target="planet:%s" % o["planet"], stat=float(len(o["detected"].get("transmission", [])) + len(o["detected"].get("emission", []))), + unit="gases at %g sigma in the median of its spectra" % sigma, vet=o["vet"], + note="%d spectra (%s); transmission %s; emission %s%s%s" % ( + o["n_spectra"], ", ".join(o["instruments"])[:100], ", ".join(o["detected"].get("transmission", [])) or "none", + ", ".join(o["detected"].get("emission", [])) or "none", "; " + "; ".join(o["flags"]) + ("; " + o["why"] if o["why"] else "") if o["flags"] else "", + "; an Earth twin here: CO2 %.1f, CH4 %.1f sigma" % (o["earth_twin"].get("CO2", 0), o["earth_twin"].get("CH4", 0)) if o["n_twin"] else "")) + for o in out]) + print("recorded") + + +def rockyworlds_cli(): + import sys + if len(sys.argv) > 1 and sys.argv[1] == "fetch": + rockyworlds_fetch() + return + core.run_cli(rockyworlds_main) + + +APPROACHES = { + "disequilibrium": (lambda: core.run_cli(disequilibrium_main), disequilibrium_DOC), + "rockyworlds": (rockyworlds_cli, rockyworlds_DOC), + "atlas": (atlas_cli, atlas_DOC), +} diff --git a/setitools/breakthrough.py b/setitools/breakthrough.py new file mode 100644 index 0000000000000000000000000000000000000000..86105fd3ea1ee196d1914f89d6d58b8bfbdabf10 --- /dev/null +++ b/setitools/breakthrough.py @@ -0,0 +1,2464 @@ +"""Narrowband searches of Breakthrough Listen spectrograms.""" +import argparse +import glob +import json +import math +import os +import re +import sys +import time +from concurrent.futures import ProcessPoolExecutor + +import numpy as np + +from setitools import core, science +from setitools.core import quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------- + +frames_DOC = r"""H I and OH lines tracked in the CMB, barycentre, star and planet frames through BL cadences; stacked ON sums against shifted-track nulls. + + python -I seti.py breakthrough frames --session AGBT16A_999_240 --target Hip3765 [--workers 6] + python -I seti.py breakthrough frames summary [--p 1e-3] + python -I seti.py breakthrough frames waterfall SESSION FREQ_MHZ SCANFILE [SCANFILE ...] [--half 3000] [--out hit.png]""" + +frames_HERE = core.RESULTS +frames_PIPE = "https://bldata.berkeley.edu/pipeline/" +frames_LINES = {"HI": 1420.405751768, "OH1665": 1665.401803, "OH1667": 1667.358996} +frames_EXTRA = {"piHI": 1420.405751768 * math.pi, "He3": 8665.65, "2piHI": 2.0 * math.pi * 1420.405751768, + "OH1612": 1612.231, "OH1720": 1720.530} +frames_C = science.C +frames_LB = 1.550519768e-8 +frames_COARSE = science.COARSE +frames_NNULL = 2000 +frames_NULL_VALUES = 40000000 +frames_EDGE = int(0.03 * science.COARSE) + + +def frames_null_reach(half): + """Farthest null-window centre offset for a window of +-half channels.""" + return 4 * half + 22000 +frames_GBT = (-79.839835, 38.433121, 807.43) + + +def frames_star_params(hip): + q = ("SELECT basic.ra, basic.dec, basic.pmra, basic.pmdec, basic.plx_value, basic.rvz_radvel, basic.rvz_err, " + "basic.rvz_type, basic.main_id FROM basic JOIN ident ON ident.oidref=basic.oid WHERE ident.id='%s'" % hip) + r = core.tap("simbad", q, fmt="json", timeout=90)["data"][0] + ra, dec, pmra, pmdec, plx, rv, rve, rvt, name = r + return dict(ra=ra, dec=dec, pmra=pmra or 0.0, pmdec=pmdec or 0.0, plx=plx or np.nan, + rv=rv if rv is not None and rvt in ("v", None) else np.nan, + rv_err=rve if rve is not None else np.nan, name=name) + + +def frames_tracks(st, mjd0, tsamp, nt, lines=None): + """{line: {frame: topocentric MHz per spectrum}} and window half-widths (km/s).""" + lines = lines or frames_LINES + from astropy.coordinates import EarthLocation, get_body_barycentric_posvel + from astropy.time import Time + import astropy.units as u + t = Time(mjd0 + (np.arange(nt) + 0.5) * tsamp / 86400.0, format="mjd", scale="utc") + yrs = (t.jd.mean() - 2451545.0) / 365.25 + ra = st["ra"] + st["pmra"] / 3.6e6 * yrs / np.cos(np.radians(st["dec"])) + dec = st["dec"] + st["pmdec"] / 3.6e6 * yrs + n = science.unit_vector(ra, dec) + _, vel = get_body_barycentric_posvel("earth", t, ephemeris="builtin") + loc = EarthLocation.from_geodetic(lon=frames_GBT[0] * u.deg, lat=frames_GBT[1] * u.deg, height=frames_GBT[2] * u.m) + _, gv = loc.get_gcrs_posvel(t) + v = vel.xyz.to(u.km / u.s).value + gv.xyz.to(u.km / u.s).value + obs = (1.0 + n @ v / frames_C) * (1.0 + frames_LB) + bs = science.cmb_beta() + gs = 1.0 / math.sqrt(1.0 - bs @ bs) + out, halfs = {}, {"cmb": 0.45, "ssb": 0.021} + if np.isfinite(st["rv"]): + vt = 4.74047 * math.hypot(st["pmra"], st["pmdec"]) / 1000.0 * (1000.0 / st["plx"]) if st["plx"] > 0 else 0.0 + g = 1.0 / math.sqrt(1.0 - (st["rv"] / frames_C) ** 2 - (vt / frames_C) ** 2) + err = st["rv_err"] if np.isfinite(st["rv_err"]) else 1.0 + halfs["star"] = 3.0 * err + 0.7 + pl = st.get("planet") + if pl and "star" in halfs: + from astropy.coordinates import SkyCoord + sc = SkyCoord(ra * u.deg, dec * u.deg) + bjd = (t.tdb + t.light_travel_time(sc, kind="barycentric", location=loc)).jd + phase = ((bjd - pl["T0"]) / pl["P"]) % 1.0 + vorb = (2.0 * math.pi * 6.674e-11 * pl["mass"] * 1.98892e30 / (pl["P"] * 86400.0)) ** (1.0 / 3.0) / 1000.0 + vp = vorb * np.sin(2.0 * math.pi * phase) + # one reference epoch per cadence, so every scan shares the window + cycles = abs((pl.get("t_ref", bjd.mean()) - pl["T0"]) / pl["P"]) + dph = (pl["eT0"] + cycles * pl["eP"]) / pl["P"] + # bounds valid at every orbital phase + ev_mass = vorb * pl["e_mass"] / (3.0 * pl["mass"]) + ev_phase = vorb * 2.0 * math.pi * dph + err_p = math.sqrt(err ** 2 + ev_mass ** 2 + ev_phase ** 2) + halfs["planet"] = 3.0 * err_p + 1.0 + gp = 1.0 / np.sqrt(1.0 - ((st["rv"] + vp) / frames_C) ** 2 - (vt / frames_C) ** 2) + st["planet_state"] = dict(phase=[round(float(x), 4) for x in phase[[0, -1]]], vorb=round(vorb, 2), + vp=[round(float(x), 3) for x in vp[[0, -1]]], err_kms=round(err_p, 3)) + for line, f0 in lines.items(): + fr = {"cmb": f0 * gs * (1.0 + n @ bs), "ssb": f0} + if "star" in halfs: + fr["star"] = f0 / (g * (1.0 + st["rv"] / frames_C)) + if "planet" in halfs: + fr["planet"] = f0 / (gp * (1.0 + (st["rv"] + vp) / frames_C)) + out[line] = {k: f * obs for k, f in fr.items()} + return out, halfs + + +def frames_scan_job(job): + """Track sums in one scan, with the random-offset null for ON scans.""" + url, st, deltas, is_on, lines = job + try: + meta = science.header(url) + fch1, foff, tsamp, mjd0 = meta["fch1"], meta["foff"], meta["tsamp"], meta["tstart"] + nt, nch = meta["nt"], meta["nch"] + src = tuple(meta["src"]) + trk, halfs = frames_tracks(st, mjd0, tsamp, nt, lines) + need = {} + for line, frames_ in trk.items(): + for frame, path in frames_.items(): + half = int(math.ceil(halfs[frame] / frames_C * lines[line] * 1e6 / (abs(foff) * 1e6))) + apos = (path - fch1) / foff + lo, hi = int(math.floor(apos.min())) - half - 2, int(math.ceil(apos.max())) + half + 2 + if lo < 0 or hi >= nch: + continue + # ON scans also load the null's reach + ext = frames_null_reach(half) + half + 2 if is_on else 0 + lo, hi = max(lo - ext, 0), min(hi + ext, nch - 1) + need.setdefault((lo // frames_COARSE, hi // frames_COARSE), []).append((line, frame, half)) + science.header(url, sorted({k for blk in need for k in range(blk[0], blk[1] + 1)})) + out = dict(url=url, mjd=mjd0, src=src, res={}, planet=st.get("planet_state")) + flat_cache = {} + for (k0, k1), items in need.items(): + parts = [] + for k in range(k0, k1 + 1): + if k not in flat_cache: + x, _ = science.coarse_channel(url, k) + flat_cache[k] = science.flatten(x) + parts.append(flat_cache[k]) + z = parts[0] if len(parts) == 1 else np.hstack(parts) + # filterbank roll-off inflates noise at coarse-channel edges; edges zeroed for window and null + z = z.copy() + for i in range(len(parts)): + z[:, i * frames_COARSE:i * frames_COARSE + frames_EDGE] = 0.0 + z[:, (i + 1) * frames_COARSE - frames_EDGE:(i + 1) * frames_COARSE] = 0.0 + width = z.shape[1] + fstart = fch1 + foff * k0 * frames_COARSE + inj = os.environ.get("FRAMESEARCH_INJECT") + if inj and is_on: + il, ifr, ihz, iamp = inj.split(",") + if any((il, ifr) == (ln, fr) for ln, fr, _ in items): + ipos = np.round((trk[il][ifr] - fstart) / foff + float(ihz) / (foff * 1e6)).astype(int) + z[np.arange(nt), ipos] += float(iamp) + for line, frame, half in items: + path = trk[line][frame] + pos = (path - fstart) / foff + base = np.round(pos).astype(int) + offs = np.arange(-half, half + 1) + if base.min() - half < 0 or base.max() + half >= width: + continue + s_ = science.track_sum(z, base, offs) + flat = science.track_sum(z, np.full(nt, int(round(pos.mean()))), offs) + rec = dict(s=s_.astype(np.float32), flat=flat.astype(np.float32), half=half, + fmid=float(path.mean()), drift_hz_s=float((path[-1] - path[0]) * 1e6 / ((nt - 1) * tsamp)), + df_hz=foff * 1e6) + if is_on: + # wide windows keep fewer null values (at most about 80 MB per scan and frame); the tail rests on the Gumbel fit + n_use = min(len(deltas), max(50, int(frames_NULL_VALUES / (2 * half + 1)))) + nul = np.full((n_use, 2 * half + 1), np.nan, dtype=np.float16) + for i, u in enumerate(deltas[:n_use]): + # null windows lie 2 half + 2000 to 4 half + 22000 channels away + dl = int(np.sign(u) * (2 * half + 2000 + abs(u) * (2 * half + 20000))) + b = base + dl + if b.min() - half < 0 or b.max() + half >= width: + continue + # DC bins zeroed alike for window and null + nul[i] = science.track_sum(z, b, offs) + rec["null"] = nul + out["res"][(line, frame)] = rec + return out + except Exception as e: + return dict(url=url, error=str(e)[:200]) + + +def frames_search(cad, hip_name, st, workers, roles=None, lines=None): + lines = lines or frames_LINES + rng = np.random.default_rng(12345) + deltas = rng.uniform(-1.0, 1.0, size=frames_NNULL) + roles = roles or [i % 2 == 0 for i in range(len(cad))] + jobs = [(u, st, deltas, roles[i], lines) for i, (_, u) in enumerate(cad)] + with ProcessPoolExecutor(workers) as ex: + res = list(ex.map(frames_scan_job, jobs)) + errs = [r for r in res if "error" in r] + if errs: + return dict(error=errs[0]["error"]) + on = [r for r, is_on in zip(res, roles) if is_on] + off = [r for r, is_on in zip(res, roles) if not is_on] + norm = math.sqrt(len(on)) + report = [] + for line in lines: + for frame in ("cmb", "ssb", "star", "planet"): + key = (line, frame) + if not all(key in r["res"] for r in on): + continue + ss = np.array([r["res"][key]["s"] for r in on]) + stack = ss.sum(0) / norm + j = int(np.argmax(stack)) + nulls = np.array([r["res"][key]["null"].astype(np.float32) for r in on]) + good = np.all(np.isfinite(nulls).all(axis=2), axis=0) + nullmax = (nulls[:, good, :].sum(0) / norm).max(axis=1) + p_emp = (1 + int(np.sum(nullmax >= stack[j]))) / (1 + len(nullmax)) + p_gum = science.gumbel_p(nullmax, float(stack[j])) + rec0 = on[0]["res"][key] + f_hit = rec0["fmid"] + (j - rec0["half"]) * rec0["df_hz"] / 1e6 + offv = [] + for r in off: + if key not in r["res"]: + continue + ro = r["res"][key] + k = int(round((f_hit - ro["fmid"]) * 1e6 / ro["df_hz"])) + ro["half"] + lo, hi = max(k - 40, 0), min(k + 41, len(ro["s"])) + offv.append(float(max(ro["s"][lo:hi].max(), ro["flat"][lo:hi].max())) if hi > lo else float("nan")) + flat = [float(r["res"][key]["flat"][max(j - 1, 0):j + 2].max()) for r in on] + report.append(dict(target=hip_name, line=line, frame=frame, stack_max=round(float(stack[j]), 2), + offset_hz=round((j - rec0["half"]) * rec0["df_hz"], 1), + per_scan=[round(float(x), 2) for x in ss[:, j]], off=[round(x, 2) for x in offv], + zero_drift_on=[round(x, 2) for x in flat], p_emp=p_emp, p_gumbel=p_gum, + n_null=int(len(nullmax)), window_hz=round(rec0["half"] * abs(rec0["df_hz"]), 1), + drift_hz_s=round(rec0["drift_hz_s"], 4), fmid_mhz=round(rec0["fmid"], 6))) + return dict(report=report, scans=[(r["url"].split("/")[-1], r["mjd"], r["src"], r.get("planet")) for r in res]) + + +def frames_main(): + p = argparse.ArgumentParser() + p.add_argument("--session", required=True) + p.add_argument("--target", required=True) + p.add_argument("--workers", type=int, default=6) + p.add_argument("--base", help="full directory URL of the scans, in place of the session's holding area") + p.add_argument("--simbad", help="SIMBAD identifier of the star, in place of HIP + the target's number") + p.add_argument("--planet", help="TIC id whose transiting planet (planet_targets.json) adds a planet-frame track") + p.add_argument("--lines", default="HI,OH1665,OH1667", + help="comma-separated line names from LINES and EXTRA (piHI, He3, 2piHI, OH1612, OH1720)") + p.add_argument("--single", action="store_true", + help="the target has one scan (an OFF position of another cadence); the scans before and " + "after it, pointed elsewhere, serve as its OFF scans") + a = p.parse_args() + session = a.base or (frames_PIPE + a.session + "/holding/") + roles = None + if a.single: + scans = core.bl_scans(session) + idx = [k for k, x in enumerate(scans) if x[2].lower() == a.target.lower()] + if not idx or idx[0] == 0 or idx[0] == len(scans) - 1: + print("%s %s: no single scan with neighbours" % (a.session, a.target), flush=True) + return + k = idx[0] + cads = [[(scans[i][2], scans[i][3]) for i in (k, k - 1, k + 1)]] + roles = [True, False, False] + else: + cads = [c for c in core.bl_cadences(session) if c[0][0].lower() == a.target.lower()] + if not cads: + print("%s %s: no full cadence" % (a.session, a.target), flush=True) + return + hip = a.simbad or ("HIP " + a.target[3:]) + pt = ({str(r["tid"]): r for r in json.load(open(os.path.join(frames_HERE, "planet_targets.json")))}[a.planet] + if a.planet else None) + try: + st = frames_star_params(hip) + except Exception: + if pt is None: + raise + st = dict(ra=float(pt["ra"]), dec=float(pt["dec"]), pmra=0.0, pmdec=0.0, plx=np.nan, rv=np.nan, + rv_err=np.nan, name="TOI-" + pt["toi"]) + if a.planet: + if pt.get("gaia_rv"): + st["rv"], st["rv_err"] = float(pt["gaia_rv"]), float(pt["gaia_rv_err"] or 1.0) + st["planet"] = dict(P=float(pt["pl_orbper"]), eP=float(pt["pl_orbpererr1"] or 1e-4), + T0=float(pt["pl_tranmid"]), eT0=float(pt["pl_tranmiderr1"] or 1e-3), + mass=float(pt["mass"]), e_mass=float(pt["e_mass"]), toi=pt["toi"]) + if a.planet: + import re + m = re.search(r"guppi_(\d{5})_(\d+)_", cads[0][0][1]) + if m: + st["planet"]["t_ref"] = int(m.group(1)) + int(m.group(2)) / 86400.0 + 2400000.5 + t0 = time.time() + lines = {k: {**frames_LINES, **frames_EXTRA}[k] for k in a.lines.split(",")} + out = frames_search(cads[0], a.target, st, a.workers, roles, lines) + out.update(session=a.session, star=st, single=bool(a.single)) + with open(os.path.join(frames_HERE, "framesearch.jsonl"), "a") as fh: + fh.write(json.dumps(out, default=float) + "\n") + if "error" in out: + print("%s %s: error %s" % (a.session, a.target, out["error"]), flush=True) + return + for r in out["report"]: + flag = "" + offs = [x for x in r["off"] if np.isfinite(x)] + if r["p_gumbel"] < 1e-4 and offs and max(offs) < 3.0 and max(r["zero_drift_on"]) < r["stack_max"]: + flag = "CANDIDATE " + print("%s%s %s %-6s %-4s max %.2f at %+.1f Hz (window +-%.0f Hz, drift %+.4f Hz/s) scans %s off %s " + "flat %s p_emp %.4f p_gumbel %.2e" + % (flag, a.session, a.target, r["line"], r["frame"], r["stack_max"], r["offset_hz"], r["window_hz"], + r["drift_hz_s"], r["per_scan"], r["off"], r["zero_drift_on"], r["p_emp"], r["p_gumbel"]), + flush=True) + print("%s %s %s: %.0fs" % (a.session, a.target, st["name"], time.time() - t0), flush=True) + + +def frames_summary_main(argv): + p = argparse.ArgumentParser(prog="seti.py breakthrough frames summary") + p.add_argument("--p", type=float, default=1e-3) + a = p.parse_args(argv) + rows = [json.loads(line) for line in open(os.path.join(frames_HERE, "framesearch.jsonl"))] + tests, errors = [], [] + for o in rows: + if "error" in o: + errors.append((o.get("session"), o["star"]["name"] if "star" in o else "?", o["error"][:100])) + continue + for r in o["report"]: + tests.append(dict(r, session=o["session"], star=o["star"]["name"])) + pe = np.array([t["p_emp"] for t in tests]) + print("%d cadences, %d tests, %d errors" % (len(rows) - len(errors), len(tests), len(errors))) + for lim in (0.5, 0.1, 0.01): + print(" fraction with empirical p < %g: %.3f" % (lim, float(np.mean(pe < lim)) if len(pe) else 0.0)) + for t in sorted(tests, key=lambda t: t["p_gumbel"]): + if t["p_gumbel"] > a.p: + break + print("%s %s %s %s max %.2f at %+.1f Hz scans %s off %s flat %s p_emp %.4f p_gumbel %.2e" + % (t["session"], t["star"], t["line"], t["frame"], t["stack_max"], t["offset_hz"], t["per_scan"], + t["off"], t["zero_drift_on"], t["p_emp"], t["p_gumbel"])) + for e in errors: + print("error", *e) + + +def frames_waterfall_main(argv): + p = argparse.ArgumentParser(prog="seti.py breakthrough frames waterfall") + p.add_argument("session") + p.add_argument("freq", type=float) + p.add_argument("scans", nargs="+") + p.add_argument("--half", type=float, default=3000.0) + p.add_argument("--maxd", type=float, default=1.0) + p.add_argument("--out", default=os.path.join(frames_HERE, "hit.png")) + a = p.parse_args(argv) + panels = [] + for name in a.scans: + url = frames_PIPE + a.session + "/holding/" + name + meta = science.header(url) + k = int((a.freq - meta["fch1"]) / meta["foff"]) // frames_COARSE + x, f0 = science.coarse_channel(url, k) + z = science.flatten(x) + df = meta["foff"] + c = int(round((a.freq - f0) / df)) + h = int(a.half / (abs(df) * 1e6)) + lo, hi = max(c - h, 0), min(c + h + 1, z.shape[1]) + w = z[:, lo:hi] + nt = w.shape[0] + maxd = int(math.ceil(a.maxd * meta["tsamp"] * (nt - 1) / (abs(df) * 1e6))) + best = (-np.inf, 0, 0) + for dr in range(-maxd, maxd + 1): + s = np.zeros(w.shape[1]) + for t in range(nt): + s += np.roll(w[t], -int(round(dr * t / (nt - 1)))) + s /= math.sqrt(nt) + j = int(np.argmax(s[maxd:-maxd or None])) + maxd + if s[j] > best[0]: + best = (float(s[j]), dr, j) + flat = w.sum(0) / math.sqrt(nt) + jf = int(np.argmax(flat)) + fbest = f0 + df * (lo + best[2]) + print("%s MJD %.5f best track %.1f sigma at %.6f MHz, drift %+.4f Hz/s; zero-drift peak %.1f sigma at " + "%.6f MHz" % (name.split("guppi_")[1][:40], meta["tstart"], best[0], fbest, + best[1] * abs(df) * 1e6 / (meta["tsamp"] * (nt - 1)) * (-1 if df < 0 else 1), + float(flat[jf]), f0 + df * (lo + jf)), flush=True) + panels.append((name, w, f0 + df * lo, df)) + import matplotlib + matplotlib.use("Agg") + import matplotlib.pyplot as plt + fig, axs = plt.subplots(len(panels), 1, figsize=(10, 2.2 * len(panels)), sharex=True) + for ax, (name, w, fl, df) in zip(np.atleast_1d(axs), panels): + ext = [(fl - a.freq) * 1e6, (fl + df * w.shape[1] - a.freq) * 1e6, w.shape[0], 0] + ax.imshow(w, aspect="auto", extent=ext, cmap="viridis", vmin=-1, vmax=6, interpolation="nearest") + ax.set_ylabel(name.split("_")[-2][:12], fontsize=7) + np.atleast_1d(axs)[-1].set_xlabel("Hz from %.6f MHz" % a.freq) + fig.tight_layout() + fig.savefig(a.out, dpi=110) + + +def frames_cli(): + modes = {"summary": frames_summary_main, "waterfall": frames_waterfall_main} + if len(sys.argv) > 1 and sys.argv[1] in modes: + modes[sys.argv[1]](sys.argv[2:]) + else: + frames_main() + + +# -------------------------------------------------------------------------------------------------------------- + +curved_DOC = r"""Curved-drift narrowband search on the GPU: joined half-scan tracks, ON recurrence, OFF veto, occupied allocations excluded, and same-session sidelobe sweep. + + python -I seti.py breakthrough curved search [--limit N] (GPU; reads setitools's cache, idx and blob) + python -I seti.py breakthrough curved cadences FRAMESEARCH.jsonl + python -I seti.py breakthrough curved session FRAMESEARCH.jsonl + python -I seti.py breakthrough curved record CADENCES.jsonl --run RUN_ID --release SESSIONS [--ledger ROW]""" + +curved_CACHE = core.CACHE +curved_OUT = os.environ.get("CURVED_OUT", os.path.join(curved_CACHE, "curved")) +curved_COARSE = 1048576 +curved_STEP = 1.0 / 7.0 +curved_DMAX = 26.0 +curved_DELTA = 5.0 +curved_HALF_SNR = 5.0 +curved_BLOCK = 131072 +curved_MARGIN = 1024 + + +def curved_load(blobfile): + """Spectrogram and metadata of one cached coarse channel.""" + name, k = os.path.basename(blobfile).rsplit(".k", 1) + k = int(k[:-4]) + got = science.cached_channel(name, k) + if got is None: + return None + x, meta = got + return x, dict(name=name, k=k, f_first=meta["fch1"] + meta["foff"] * k * curved_COARSE, foff=meta["foff"], + tsamp=meta["tsamp"], tstart=meta["tstart"], nt=meta["nt"]) + + +def curved_flatten(x): + """flatten, clipped at +-50.""" + return np.clip(science.flatten(x), -50, 50) + + +def curved_search_scan(z, dev): + """Per channel: best curved statistic, its drifts, and best straight statistic over 16 spectra.""" + import torch + nt = z.shape[0] + h = nt // 2 + drifts = np.arange(-curved_DMAX, curved_DMAX + 1e-9, curved_STEP) + nd = len(drifts) + tt = np.arange(h) + shifts = torch.as_tensor(np.round(drifts[:, None] * tt[None, :]).astype(np.int64), device=dev) + s8 = torch.as_tensor(np.round(drifts * h).astype(np.int64), device=dev) + win = int(round(curved_DELTA / curved_STEP)) + C = z.shape[1] + best_c = np.full(C, -np.inf, np.float32) + best_l = np.full(C, -np.inf, np.float32) + best_d1 = np.zeros(C, np.float32) + best_d2 = np.zeros(C, np.float32) + for b0 in range(0, C, curved_BLOCK): + lo, hi = max(b0 - curved_MARGIN, 0), min(b0 + curved_BLOCK + curved_MARGIN, C) + zb = torch.as_tensor(z[:, lo:hi], device=dev) + B = hi - lo + base = torch.arange(B, device=dev) + S = [] + for half in (0, 1): + acc = torch.zeros((nd, B), device=dev) + for t in range(h): + idx = (base[None, :] + shifts[:, t:t + 1]).clamp(0, B - 1) + acc += zb[half * h + t][idx] + S.append(acc) + S1, S2 = S + bc = torch.full((B,), -1e9, device=dev) + bl = torch.full((B,), -1e9, device=dev) + bd1 = torch.zeros(B, device=dev) + bd2 = torch.zeros(B, device=dev) + half_thr = curved_HALF_SNR * math.sqrt(h) + for j1 in range(nd): + c2 = (base + s8[j1]).clamp(0, B - 1) + ja, jb = max(j1 - win, 0), min(j1 + win, nd - 1) + s2 = S2[ja:jb + 1][:, c2] + tot = S1[j1][None, :] + s2 + far = torch.as_tensor(np.abs(np.arange(ja, jb + 1) - j1) * curved_STEP >= 1.0, device=dev) + # signal required in both halves + both = (S1[j1][None, :] >= half_thr) & (s2 >= half_thr) + curved = torch.where(far[:, None] & both, tot, torch.full_like(tot, -1e9)) + m, arg = curved.max(0) + upd = m > bc + bc = torch.where(upd, m, bc) + bd1 = torch.where(upd, torch.full_like(bd1, float(drifts[j1])), bd1) + bd2 = torch.where(upd, torch.as_tensor(drifts[ja:jb + 1], device=dev, dtype=torch.float32)[arg], bd2) + bl = torch.maximum(bl, tot[j1 - ja]) + keep = slice(b0 - lo, b0 - lo + min(curved_BLOCK, C - b0)) + norm = math.sqrt(nt) + best_c[b0:b0 + min(curved_BLOCK, C - b0)] = (bc[keep] / norm).cpu().numpy() + best_l[b0:b0 + min(curved_BLOCK, C - b0)] = (bl[keep] / norm).cpu().numpy() + best_d1[b0:b0 + min(curved_BLOCK, C - b0)] = bd1[keep].cpu().numpy() + best_d2[b0:b0 + min(curved_BLOCK, C - b0)] = bd2[keep].cpu().numpy() + return best_c, best_l, best_d1, best_d2 + + +def curved_hits_of(best_c, best_l, d1, d2, meta, thr=10.0, gain=2.0, sep=20): + cand = np.nonzero((best_c >= thr) & (best_c - best_l >= gain))[0] + out = [] + for i in cand[np.argsort(-best_c[cand])]: + if all(abs(i - j["chan"]) >= sep for j in out): + out.append(dict(chan=int(i), mhz=float(meta["f_first"] + meta["foff"] * i), snr_curved=float(best_c[i]), + snr_straight=float(best_l[i]), d1_hz_s=float(d1[i] * meta["foff"] * 1e6 / meta["tsamp"]), + d2_hz_s=float(d2[i] * meta["foff"] * 1e6 / meta["tsamp"]))) + if len(out) >= 300: + break + return out + + +def curved_search(limit): + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + os.makedirs(curved_OUT, exist_ok=True) + files = sorted(glob.glob(os.path.join(curved_CACHE, "blob", "*.bin")))[:limit or None] + import time + for f in files: + out = os.path.join(curved_OUT, os.path.basename(f) + ".json") + if os.path.exists(out): + continue + t0 = time.time() + r = curved_load(f) + if r is None: + continue + x, meta = r + z = curved_flatten(x) + bc, bl, d1, d2 = curved_search_scan(z, dev) + hits = curved_hits_of(bc, bl, d1, d2, meta) + straight_hits = int(np.sum(bl >= 10.0)) + # strong straight-track channels kept for the OFF veto + strong = np.nonzero(bl >= 6.0)[0] + strong = strong[np.argsort(-bl[strong])][:20000] + json.dump(dict(meta=meta, hits=hits, n_straight_ge10=straight_hits, + strong_mhz=[round(float(meta["f_first"] + meta["foff"] * i), 7) for i in strong], + curved_hist=np.histogram(bc[np.isfinite(bc)], bins=[0, 6, 8, 10, 12, 15, 20, 1e9])[0].tolist()), + open(out, "w")) + print("%s k%d: %d curved hits, %d straight samples >= 10, %.1f s" % (meta["name"][:60], meta["k"], len(hits), + straight_hits, time.time() - t0), flush=True) + + +def curved_cadences(fs_path): + """ON-only curved hits per cadence and the OFF-only count as null.""" + res = {} + for p in glob.glob(os.path.join(curved_OUT, "*.bin.json")): + d = json.load(open(p)) + res.setdefault(d["meta"]["name"], {})[d["meta"]["k"]] = d + on_only, off_only, cads, single_trials = [], [], 0, [0, 0] + for line in open(fs_path): + o = json.loads(line) + if "scans" not in o: + continue + names = [s[0] for s in o["scans"]] + roles = [True, False, False] if o.get("single") else [i % 2 == 0 for i in range(len(names))] + ks = set() + for n in names: + ks |= set(res.get(n, {}).keys()) + for k in ks: + scans = [(n, r, res.get(n, {}).get(k)) for n, r in zip(names, roles)] + if any(s[2] is None for s in scans): + continue + cads += 1 + if o.get("single"): + # single-ON cadence: each scan against the other two, ON for the search, OFF for the null + for i, (n, r, d) in enumerate(scans): + single_trials[0 if r else 1] += 1 + other = np.array(sorted([g["mhz"] for j, (n2, r2, d2) in enumerate(scans) if j != i + for g in d2["hits"]] + + [m for j, (n2, r2, d2) in enumerate(scans) if j != i + for m in d2.get("strong_mhz", [])])) + for h in d["hits"]: + jj = np.searchsorted(other, h["mhz"]) + near = other[max(jj - 1, 0):jj + 1] + if not len(near) or np.min(np.abs(near - h["mhz"])) * 1e6 > 2000: + (on_only if r else off_only).append(dict(h, target=o.get("star", {}).get("name"), + session=o.get("session"), k=k, single=True, scan=n)) + continue + for role_on in (True, False): + # a source recurs in another scan of the same role within 5 kHz + mine = [] + same_role = [(n, d) for n, r, d in scans if r == role_on] + for n, d in same_role: + for h in d["hits"]: + if any(n2 != n and any(abs(h["mhz"] - g["mhz"]) * 1e6 < 5000 for g in d2["hits"]) + for n2, d2 in same_role): + mine.append(dict(h, scan=n)) + other = np.array(sorted([g["mhz"] for n, r, d in scans if r != role_on for g in d["hits"]] + + [m for n, r, d in scans if r != role_on for m in d.get("strong_mhz", [])])) + for h in mine: + j = np.searchsorted(other, h["mhz"]) + near = other[max(j - 1, 0):j + 1] + if not len(near) or np.min(np.abs(near - h["mhz"])) * 1e6 > 2000: + (on_only if role_on else off_only).append(dict(h, target=o.get("star", {}).get("name"), + session=o.get("session"), k=k)) + for h in on_only + off_only: + h["occupied"] = science.occupied(h["mhz"]) + print("%d cadence-channels searched; curved hits found only in ON scans %d, only in OFF scans (null) %d" + % (cads, len(on_only), len(off_only))) + for name, hs in (("ON", on_only), ("OFF", off_only)): + by = {} + for h in hs: + by[h["occupied"] or "no occupied allocation"] = by.get(h["occupied"] or "no occupied allocation", 0) + 1 + print(" %s-only hits by allocation: %s" % (name, "; ".join("%s %d" % kv for kv in sorted(by.items())))) + if sum(single_trials): + print(" of which single-ON cadences: %d ON scan-channels with %d lone hits, %d OFF scan-channels with %d" + % (single_trials[0], sum(1 for h in on_only if h.get("single")), single_trials[1], + sum(1 for h in off_only if h.get("single")))) + for h in sorted(on_only, key=lambda h: -h["snr_curved"])[:20]: + print(" %s %s k%d %.6f MHz curved %.1f straight %.1f drifts %+.3f -> %+.3f Hz/s" + % (h["session"], h["target"], h["k"], h["mhz"], h["snr_curved"], h["snr_straight"], h["d1_hz_s"], + h["d2_hz_s"])) + json.dump(dict(on_only=on_only, off_only=off_only, cadences=cads, single_trials=single_trials), + open(os.path.join(curved_OUT, "cadences.json"), "w")) + + +curved_SESSION_S = 3600.0 # seconds either side swept for the same carrier +curved_SESSION_HZ = 1500.0 # Hz from the drift-extrapolated frequency + + +def curved_session(fs_path, session_dir_of=None): + """Sweep each ON-only hit's carrier through every scan of its session within an hour; recurrences mark sidelobe transmitters.""" + path = os.path.join(curved_OUT, "cadences.json") + d = json.load(open(path)) + cads = [json.loads(line) for line in open(fs_path) if line.strip()] + + def dir_of(scan): + """Session directory of a scan from the open-data API.""" + tgt = scan.split("_guppi_")[1].split("_", 2)[2].rsplit("_", 1)[0] + for r in core.bl_query_files(tgt): + if scan in r.get("url", ""): + return r["url"].rsplit("/", 1)[0] + "/" + return None + session_dir_of = session_dir_of or dir_of + drifts = np.arange(-8, 8.01, 0.25) + for h in d["on_only"]: + if h.get("occupied") or science.occupied(h["mhz"]): + continue + o = next((o for o in cads if o.get("session") == h.get("session") and o["star"]["name"] == h["target"]), None) + if o is None: + continue + roles = [True, False, False] if o.get("single") else [i % 2 == 0 for i in range(len(o["scans"]))] + on_scans = [s[0] for s, r in zip(o["scans"], roles) if r] + sess_dir = o.get("dir") or session_dir_of(on_scans[0]) + if not sess_dir: + print(" %s %.6f MHz: no session directory" % (h["target"], h["mhz"])) + continue + scans = core.bl_scans(sess_dir) + on_url = next(s for s in scans if any(n in s[3] for n in ([h["scan"]] if h.get("scan") else on_scans))) + t_hit = on_url[1] + rate = 0.5 * (h["d1_hz_s"] + h["d2_hz_s"]) + # companion lines within 500 kHz switching on with the hit at its drift + x, f0 = science.coarse_channel(on_url[3], h["k"]) + z = np.clip(science.flatten(x), -50, 50) + hdr = science.header(on_url[3], (h["k"],)) + foff, tsamp, nt = hdr["foff"], hdr["tsamp"], z.shape[0] + members = [(h["mhz"], rate)] + c0 = int(round((h["mhz"] - f0) / foff)) + lo, hi = max(c0 - 180000, 0), min(c0 + 180000, z.shape[1]) + d1_ch = h["d1_hz_s"] * tsamp / (foff * 1e6) + + def track(t0, dr, c, width): + """Straight-track sums over spectra t0..t0+5 at drift dr for channels c+-width, and the first channel index.""" + a, b = max(c - width, 0), min(c + width + 1, z.shape[1]) + return sum(np.roll(z[t0 + n, a:b], -int(round(dr * n))) for n in range(6)) / math.sqrt(6), a + + # brightest straight track near the hit in its six spectra + best_h = (-np.inf, 0, d1_ch) + for t0 in range(0, nt - 5): + for dr in drifts: + acc, _ = track(t0, dr, int(round(c0 + d1_ch * t0)), 40) + if float(acc.max()) > best_h[0]: + best_h = (float(acc.max()), t0, float(dr)) + _, t_h, dr_h = best_h + # lines within 500 kHz bright in those spectra at nearby drifts + acc_all = np.full(hi - lo, -np.inf, np.float32) + for dr in drifts[np.abs(drifts - dr_h) <= 1.5]: + acc_all = np.maximum(acc_all, sum(np.roll(z[t_h + n, lo:hi], -int(round(dr * n))) for n in range(6)) / math.sqrt(6)) + idx = np.where(acc_all >= 9.0)[0] + groups = [] + for i in idx: + if not groups or i - groups[-1][-1] > 20: + groups.append([i]) + else: + groups[-1].append(i) + c_hit = int(round(c0 + d1_ch * t_h)) + for g in groups: + j = lo + g[int(np.argmax(acc_all[g]))] + if abs(j - c_hit) * abs(foff) * 1e6 <= 2000: + continue + # a member shares the hit's best drift over the full range + snr, dr_m, j_m = -np.inf, 0.0, j + for dr in drifts: + acc, a = track(t_h, dr, j, 30) + k = int(np.argmax(acc)) + if float(acc[k]) > snr: + snr, dr_m, j_m = float(acc[k]), float(dr), a + k + if abs(dr_m - dr_h) > 1.5: + continue + # a member is under half its S/N outside the hit's spectra + rest = [t for t in range(nt) if not t_h <= t < t_h + 6] + if rest: + vals = [] + for dc in range(-3, 4): + s_ = 0.0 + for t in rest: + c = j_m + dc + int(round(dr_m * (t - t_h))) + if 0 <= c < z.shape[1]: + s_ += float(z[t, c]) + vals.append(s_ / math.sqrt(len(rest))) + if max(vals) >= 0.5 * snr: + continue + r_m = dr_m * foff * 1e6 / tsamp + f_t0 = f0 + foff * j_m - r_m * t_h * tsamp * 1e-6 # member frequency at spectrum 0 + members.append((f_t0, r_m)) + h["companions"] = [round(m[0], 6) for m in members[1:]] + seen = [] + for mjd, sec, tgt, url in scans: + if abs(sec - t_hit) > curved_SESSION_S or any(n in url for n in on_scans): + continue + try: + x, f0 = science.coarse_channel(url, h["k"]) + except Exception as e: + print(" %s: fetch failed %s" % (tgt, str(e)[:60])) + continue + z = np.clip(science.flatten(x), -50, 50) + hdr = science.header(url, (h["k"],)) + foff, tsamp, nt = hdr["foff"], hdr["tsamp"], z.shape[0] + for f_m, r_m in members: + best = (0.0, None, None) + for t0 in range(0, nt - 5): + f_pred = f_m + r_m * ((sec + t0 * tsamp) - t_hit) * 1e-6 + c = int(round((f_pred - f0) / foff)) + lo2, hi2 = c - 3000, c + 3000 + if lo2 < 0 or hi2 >= z.shape[1]: + continue + seg = z[t0:t0 + 6, lo2:hi2] + for dr in drifts: + acc = sum(np.roll(seg[n], -int(round(dr * n))) for n in range(6)) / math.sqrt(6) + j = int(np.argmax(acc)) + if acc[j] > best[0]: + best = (float(acc[j]), f0 + foff * (lo2 + j), f_pred) + if best[1] is not None and best[0] >= 7.0 and abs(best[1] - best[2]) * 1e6 < curved_SESSION_HZ: + seen.append(dict(target=tgt, sec=sec, snr=round(best[0], 1), member=round(f_m, 6), mhz=best[1], off_hz=round((best[1] - best[2]) * 1e6))) + h["session_recur"] = seen + print(" %s %.6f MHz with %d companions (%s): on its drift (%+.3f Hz/s) in %d other pointings of the session: %s" % ( + h["target"], h["mhz"], len(members) - 1, ", ".join("%.6f" % m[0] for m in members[1:]), rate, len(seen), + "; ".join("%s at %d s, the %.6f MHz member at S/N %.1f, %+d Hz from the extrapolation" % (s["target"], s["sec"], s["member"], s["snr"], s["off_hz"]) for s in seen))) + json.dump(d, open(path, "w")) + + +def curved_record(fs_path, run_id, release, ledger="Reply windows, further archives"): + """Record a cadence judgment: one row per target with its ON-only hits outside occupied allocations.""" + d = json.load(open(os.path.join(curved_OUT, "cadences.json"))) + cads = [json.loads(line) for line in open(fs_path) if line.strip()] + names = sorted({o["star"]["name"] for o in cads}) + on_scans = set() + for o in cads: + roles = [True, False, False] if o.get("single") else [i % 2 == 0 for i in range(len(o["scans"]))] + on_scans |= {s[0] for s, r in zip(o["scans"], roles) if r} + searched = sum(1 for p in glob.glob(os.path.join(curved_OUT, "*.bin.json")) if os.path.basename(p).split(".k")[0] in on_scans) + left = [h for h in d["on_only"] if not h.get("occupied") and not h.get("session_recur")] + swept = [h for h in d["on_only"] if not h.get("occupied") and h.get("session_recur")] + core.record_search( + run_id, "Curved drift tracks, radio", archive="Breakthrough Listen GBT high-resolution spectrograms (open data)", + release=release, selection="%s: every coarse channel of every ON scan (%d scan-channels); OFF scans where an ON " + "hit recurs, and every channel holding a hit in a single-ON cadence" + % (", ".join(names), searched), + code=os.path.abspath(__file__), entry="curved", + params=dict(threshold=10.0, gain=2.0, half_snr=curved_HALF_SNR, max_drift_ch=curved_DMAX, + max_bend_ch=curved_DELTA, recur_hz=5000, veto_hz=2000, veto_straight_snr=6.0), + n_targets=len(names), + null_summary="%d cadence-channels judged: %d ON-only hits against %d OFF-only; single-ON cadences %d ON " + "scan-channels against %d OFF; ON-only hits outside the occupied allocations %d, %d of them recurring on their drift in other targets' pointings of the session" + % (d["cadences"], len(d["on_only"]), len(d["off_only"]), d.get("single_trials", [0, 0])[0], + d.get("single_trials", [0, 0])[1], len(left) + len(swept), len(swept)), + sensitivity="a track bending by up to 5 channels per spectrum at S/N 10 over 16 spectra, each half at S/N 5", + result=("no curved hit found only in ON scans" if not d["on_only"] else + "every ON-only hit lies in an occupied allocation" if not swept else + "every ON-only hit lies in an occupied allocation or recurs in other targets' pointings on its drift") if not left else + "%d ON-only hits outside the occupied allocations" % len(left), ledger=ledger) + core.clear_targets(run_id) + core.record_targets(run_id, [ + dict(target="simbad:%s" % n, stat=float(sum(1 for h in left if h["target"] == n)), + unit="ON-only curved hits outside occupied allocations", + vet=("; ".join("%.6f MHz recurs on its drift in %s" % (h["mhz"], ", ".join("%s (%d s, S/N %.1f)" % (r["target"], r["sec"], r["snr"]) for r in h["session_recur"])) + for h in swept if h["target"] == n) or None), + note="%d ON-only hits in occupied allocations" % sum(1 for h in d["on_only"] if h["target"] == n + and h.get("occupied"))) for n in names]) + print("recorded") + + +def curved_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("search", "cadences", "session", "record")) + p.add_argument("fs", nargs="?") + p.add_argument("--limit", type=int, default=0) + p.add_argument("--run") + p.add_argument("--release") + p.add_argument("--ledger", default="Reply windows, further archives") + a = p.parse_args() + if a.mode == "search": + curved_search(a.limit) + elif a.mode == "cadences": + curved_cadences(a.fs) + elif a.mode == "session": + curved_session(a.fs) + else: + curved_record(a.fs, a.run, a.release, a.ledger) + + +def curved_cli(): + quiet_warnings() + curved_main() + + +# -------------------------------------------------------------------------------------------------------------- + +curved_batch_DOC = r"""Curved-drift search of BL coarse channels fetched by byte range from Berkeley, hits kept and chunks deleted. + + python -I seti.py breakthrough curved_batch TASKS.json [--threads 8] + python -I seti.py breakthrough curved_batch split TASKS.json N (the remaining tasks in N parts by file, curved_part.json)""" + + + +def curved_batch_main(): + p = argparse.ArgumentParser() + p.add_argument("tasks") + p.add_argument("--threads", type=int, default=8) + a = p.parse_args() + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + out_dir = os.environ.get("CURVED_OUT", core.data("curved")) + os.makedirs(out_dir, exist_ok=True) + tasks = json.load(open(a.tasks)) + by = {} + for t in tasks: + by.setdefault(t["url"], []).append(int(t["k"])) + print("%d coarse channels in %d files on %s" % (len(tasks), len(by), dev), flush=True) + for url, ks in by.items(): + name = url.rstrip("/").split("/")[-1] + todo = [k for k in ks if not os.path.exists(os.path.join(out_dir, "%s.k%d.bin.json" % (name, k)))] + if not todo: + continue + try: + science.header(url, todo) + except Exception as e: + print("%s: header failed (%s)" % (name, str(e)[:80]), flush=True) + continue + for k in todo: + t0 = time.time() + try: + x, f_first = science.coarse_channel(url, k, threads=a.threads) + except Exception as e: + print("%s k%d: fetch failed (%s)" % (name, k, str(e)[:80]), flush=True) + continue + meta_all = json.load(open(os.path.join(core.CACHE, "idx", name + ".json"))) + meta = dict(name=name, k=k, f_first=f_first, foff=meta_all["foff"], tsamp=meta_all["tsamp"], + tstart=meta_all["tstart"], nt=meta_all["nt"]) + z = curved_flatten(x) + bc, bl, d1, d2 = curved_search_scan(z, dev) + hits = curved_hits_of(bc, bl, d1, d2, meta) + strong = np.nonzero(bl >= 6.0)[0] + strong = strong[np.argsort(-bl[strong])][:20000] + json.dump(dict(meta=meta, hits=hits, n_straight_ge10=int(np.sum(bl >= 10.0)), + strong_mhz=[round(float(f_first + meta["foff"] * i), 7) for i in strong], + curved_hist=np.histogram(bc[np.isfinite(bc)], bins=[0, 6, 8, 10, 12, 15, 20, 1e9])[0].tolist()), + open(os.path.join(out_dir, "%s.k%d.bin.json" % (name, k)), "w")) + blob = os.path.join(core.CACHE, "blob", "%s.k%d.bin" % (name, k)) + if os.path.exists(blob): + os.remove(blob) + print("%s k%d: %d curved hits, %.1f s" % (name[:60], k, len(hits), time.time() - t0), flush=True) + + +def curved_batch_split(tasks, n): + """Unsearched tasks split by file into n parts.""" + out_dir = os.environ.get("CURVED_OUT", core.data("curved")) + t = json.load(open(tasks)) + done = set(os.listdir(out_dir)) if os.path.isdir(out_dir) else set() + rest = [x for x in t if "%s.k%d.bin.json" % (x["url"].rstrip("/").split("/")[-1], x["k"]) not in done] + files = sorted({x["url"] for x in rest}) + for i in range(n): + mine = set(files[i::n]) + json.dump([x for x in rest if x["url"] in mine], open("curved_part%d.json" % i, "w")) + print("%d done, %d left in %d parts" % (len(done), len(rest), n)) + + +def curved_batch_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "split": + curved_batch_split(sys.argv[2], int(sys.argv[3])) + else: + curved_batch_main() + + +# -------------------------------------------------------------------------------------------------------------- + +offs_DOC = r"""OFF-scan task list for channels whose ON curved hits recur or stand in single-ON sessions. + + python -I seti.py breakthrough offs CURVED_OUT PLAN.json OUT.json (PLAN: {"on": [URL ...], "offs": [URL ...]})""" + + +def offs_name(url): + return url.rstrip("/").split("/")[-1] + + +def offs_session(name): + m = re.search(r"guppi_(\d+)_", name) + return m.group(1) if m else "" + + +def offs_main(out_dir, plan_path, dest): + res = {} + for p in glob.glob(os.path.join(out_dir, "*.bin.json")): + d = json.load(open(p)) + res.setdefault(d["meta"]["name"], {})[d["meta"]["k"]] = d + plan = json.load(open(plan_path)) + ons = {} + for u in plan["on"]: + ons.setdefault(offs_session(offs_name(u)), []).append(offs_name(u)) + need = set() + for sess, names in ons.items(): + names = [n for n in names if n in res] + ks = set().union(*(set(res[n]) for n in names)) if names else set() + for k in ks: + hits = [(n, h["mhz"]) for n in names if k in res[n] for h in res[n][k]["hits"]] + if len(names) == 1: + if hits: + need.add((sess, k)) + continue + if any(n2 != n1 and abs(f1 - f2) * 1e6 < 5000 for n1, f1 in hits for n2, f2 in hits): + need.add((sess, k)) + out = [dict(url=u, k=k) for u in plan["offs"] for sess, k in sorted(need) if offs_session(offs_name(u)) == sess] + json.dump(out, open(dest, "w")) + print("%d ON coarse channels searched in %d sessions; %d need their OFF scans (%s); %d tasks" + % (sum(len(res[n]) for v in ons.values() for n in v if n in res), len(ons), len(need), + ", ".join("%s: %d" % (s, sum(1 for x in need if x[0] == s)) for s in sorted(ons)), len(out))) + + +def offs_cli(): + offs_main(*sys.argv[1:4]) + + +# -------------------------------------------------------------------------------------------------------------- + +followup_DOC = r"""Follow-up of first-ON curved searches: cadence resolution, remaining ON scans, then OFF scans where hits recur. + + python -I seti.py breakthrough followup cadences PLAN.json CADENCES.jsonl + python -I seti.py breakthrough followup ons CADENCES.jsonl TASKS.json + python -I seti.py breakthrough followup offs CADENCES.jsonl TASKS.json""" + + +def followup_results(): + res = {} + for p in glob.glob(os.path.join(curved_OUT, "*.bin.json")): + d = json.load(open(p)) + res.setdefault(d["meta"]["name"], {})[d["meta"]["k"]] = [h for h in d["hits"] if not science.occupied(h["mhz"])] + return res + + +def followup_cadences(plan_path, dest): + plan = json.load(open(plan_path)) + n = 0 + with open(dest, "w") as fh: + for star, bands in plan.items(): + for band, d in bands.items(): + first = d["on"][0] + found = [c for c in core.bl_cadences(first.rsplit("/", 1)[0] + "/") if c[0][1] == first] + if not found: + print("%s %s: no ABACAD cadence begins with %s" % (star, band, offs_name(first))) + continue + c = found[0] + fh.write(json.dumps(dict(star=dict(name=star), band=band, session=offs_session(offs_name(first)), + scans=[[offs_name(u), t] for t, u in c], urls=[u for t, u in c])) + "\n") + n += 1 + print("%d cadences written to %s" % (n, dest)) + + +def followup_tasks(cad_path, dest, stage): + res = followup_results() + tasks, chans = [], 0 + for line in open(cad_path): + c = json.loads(line) + names, urls = [s[0] for s in c["scans"]], c["urls"] + if stage == "ons": + ks = sorted(k for k, hs in res.get(names[0], {}).items() if hs) + todo = [urls[2], urls[4]] + else: + ks = [] + for k in sorted(res.get(names[0], {})): + found = [(n, h["mhz"]) for n in names[0::2] for h in res.get(n, {}).get(k, [])] + if any(n1 != n2 and abs(f1 - f2) * 1e6 < 5000 for n1, f1 in found for n2, f2 in found): + ks.append(k) + todo = [urls[1], urls[3], urls[5]] + chans += len(ks) + tasks += [dict(url=u, k=k) for u in todo for k in ks] + json.dump(tasks, open(dest, "w")) + print("%s: %d cadence-channels need them; %d tasks written to %s" % (stage, chans, len(tasks), dest)) + + +def followup_cli(): + if len(sys.argv) < 4 or sys.argv[1] not in ("cadences", "ons", "offs"): + print(followup_DOC) + sys.exit(2) + if sys.argv[1] == "cadences": + followup_cadences(sys.argv[2], sys.argv[3]) + else: + followup_tasks(sys.argv[2], sys.argv[3], sys.argv[1]) + + +# -------------------------------------------------------------------------------------------------------------- + +combs_DOC = r"""Frequency combs: Fourier power of averaged spectra at each spacing; all ON scans above threshold, no OFF above a third; roles swapped as null. + + python -I seti.py breakthrough combs search [--thr 20] + python -I seti.py breakthrough combs record""" + +combs_HERE = core.RESULTS +combs_NAME = re.compile(r"guppi_(\d+)_(\d+)_(.+)_(\d{4})\.gpuspec\.0000\.h5$") + + +def combs_cadences(): + """ABACAD cadences among cached scans.""" + names = sorted({os.path.basename(p).split(".k")[0] for p in glob.glob(os.path.join(core.CACHE, "blob", "*.bin"))}) + scans = [] + for n in names: + m = combs_NAME.search(n) + if m: + scans.append(dict(name=n, mjd=int(m.group(1)), sec=int(m.group(2)), target=m.group(3), scan=int(m.group(4)))) + scans.sort(key=lambda s: (s["mjd"], s["sec"])) + out = [] + for i in range(len(scans) - 5): + six = scans[i:i + 6] + if any(six[j + 1]["scan"] != six[j]["scan"] + 1 or six[j + 1]["mjd"] != six[j]["mjd"] for j in range(5)): + continue + t = [s["target"] for s in six] + if t[0] == t[2] == t[4] and len({t[1], t[3], t[5]} - {t[0]}) == 3: + out.append(six) + return out + + +def combs_comb_power(spectra, dev): + """Normalised Fourier power of each spectrum against spacing index.""" + import torch + x = torch.as_tensor(np.asarray(spectra, np.float32), device=dev) + x = x - x.mean(dim=1, keepdim=True) + p = torch.fft.rfft(x, dim=1).abs() ** 2 + p = p[:, 1:].cpu().numpy() + q = np.arange(1, p.shape[1] + 1) + lq = np.log10(q) + edges = np.arange(0, lq[-1] + 0.02, 0.02) + k = np.digitize(lq, edges) + out = np.empty_like(p) + for b in np.unique(k): + sel = k == b + med = np.median(p[:, sel], axis=1, keepdims=True) + out[:, sel] = p[:, sel] / np.maximum(med, 1e-30) * math.log(2) + return out + + +def combs_search(thr): + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + cads = combs_cadences() + print("%d cadences in the cache" % len(cads), flush=True) + rows, null_hits, tests = [], 0, 0 + for six in cads: + ks = None + for s in six: + got = {int(re.search(r"\.k(\d+)\.bin$", p).group(1)) for p in glob.glob(os.path.join( + core.CACHE, "blob", s["name"] + ".k*.bin"))} + ks = got if ks is None else ks & got + for k in sorted(ks or ()): + specs = [] + for s in six: + got = science.cached_channel(s["name"], k) + if got is None: + break + z = science.flatten(got[0]) + specs.append(z.mean(axis=0)) + if len(specs) < 6: + continue + foff = abs(float(got[1]["foff"])) * 1e6 + p = combs_comb_power(specs, dev) + on, off = p[[0, 2, 4]], p[[1, 3, 5]] + tests += p.shape[1] + hit = np.nonzero((on.min(axis=0) > thr) & (off.max(axis=0) < thr / 3))[0] + # null: the second OFF target as ON, the ON scans as OFF + alt_on, alt_off = p[[1, 3, 5]], p[[0, 2, 4]] + null_hits += int(np.sum((alt_on.min(axis=0) > thr) & (alt_off.max(axis=0) < thr / 3))) + n = len(specs[0]) + for j in hit: + q = j + 1 + rows.append(dict(target=six[0]["target"], mjd=six[0]["mjd"], k=k, q=int(q), + spacing_hz=float(n / q * foff), on=[float(x) for x in on[:, j]], + off=[float(x) for x in off[:, j]], scans=[s["name"] for s in six])) + print("%s k%d: %d spacings on the target alone" % (six[0]["target"], k, len(hit)), flush=True) + json.dump(dict(tests=tests, null_hits=null_hits, hits=rows, thr=thr), open(os.path.join(combs_HERE, "radio_combs.json"), "w"), + indent=1) + print("%d spacing tests; %d on the target alone against %d with the roles exchanged" % (tests, len(rows), null_hits)) + for r in sorted(rows, key=lambda r: -min(r["on"]))[:20]: + print(" %s MJD %d k%d spacing %.2f Hz: ON %s OFF %s" % (r["target"], r["mjd"], r["k"], r["spacing_hz"], + [round(x, 1) for x in r["on"]], + [round(x, 1) for x in r["off"]])) + + +def combs_record(): + """Record the run: one row per cadence and coarse channel.""" + r = json.load(open(os.path.join(combs_HERE, "radio_combs.json"))) + cads = combs_cadences() + core.record_search( + "bl_frequency_combs", "Frequency combs on the target alone, Breakthrough Listen", + archive="Breakthrough Listen GBT L band (open data cache)", release="AGBT16A-17B sessions", + selection="the cached H I and OH coarse channels of %d ABACAD cadences" % len(cads), code="seti.py breakthrough combs", + params=dict(threshold=r["thr"], off_ceiling=r["thr"] / 3, normalisation="median per 1/50 dex of spacing"), + n_targets=len(cads), + null_summary="%d spacing tests: %d on the target alone against %d with an OFF target standing in" + % (r["tests"], len(r["hits"]), r["null_hits"]), + sensitivity="teeth summing coherently to 4.5 sigma times the root of the channel count in every ON scan, " + "e.g. 1e5 teeth at 0.05 sigma each in the scan-averaged spectrum", + result="no comb on a target alone", ledger="Other radio morphologies") + core.clear_targets("bl_frequency_combs") + core.record_targets("bl_frequency_combs", [ + dict(target="bl:%s" % six[0]["name"], note="cadence on %s, MJD %d" % (six[0]["target"], six[0]["mjd"])) + for six in cads]) + print("recorded") + + +def combs_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("search", "record")) + p.add_argument("--thr", type=float, default=20.0) + a = p.parse_args() + combs_search(a.thr) if a.mode == "search" else combs_record() + + +def combs_cli(): + quiet_warnings() + combs_main() + + +# -------------------------------------------------------------------------------------------------------------- + +hops_DOC = r"""Frequency hopping: isolated single-spectrum bright pixels counted per cadence, ON above OFF with reused frequencies; roles swapped as null. + + python -I seti.py breakthrough hops search + python -I seti.py breakthrough hops record""" + +hops_HERE = core.RESULTS +hops_Z_HOP, hops_Z_NEAR, hops_REACH, hops_Z_VETO = 8.0, 5.0, 30, 7.0 + + +def hops_hops(z): + """(time step, channel) of isolated bright pixels, excluding each scan's first and last spectra.""" + from scipy.ndimage import maximum_filter1d + nt = z.shape[0] + near = maximum_filter1d(z, size=2 * hops_REACH + 1, axis=1) + out = [] + t, c = np.nonzero(z[1:nt - 1] > hops_Z_HOP) + for ti, ci in zip(t + 1, c): + if near[ti - 1, ci] < hops_Z_NEAR and near[ti + 1, ci] < hops_Z_NEAR: + out.append((int(ti), int(ci))) + return out + + +def hops_busy(z, c): + """Brightest pixel within REACH channels of c in any spectrum.""" + return float(z[:, max(c - hops_REACH, 0):c + hops_REACH + 1].max()) + + +def hops_search(): + cads = combs_cadences() + print("%d cadences in the cache" % len(cads), flush=True) + rows, n_cc = [], 0 + stats = dict(on_above=0, off_above=0, on_reuse=0, off_reuse=0) + for six in cads: + ks = None + for s in six: + got = {int(re.search(r"\.k(\d+)\.bin$", p).group(1)) for p in glob.glob(os.path.join( + core.CACHE, "blob", s["name"] + ".k*.bin"))} + ks = got if ks is None else ks & got + for k in sorted(ks or ()): + hs, zs = [], [] + for s in six: + got = science.cached_channel(s["name"], k) + if got is None: + break + z = science.flatten(got[0]) + zs.append(z) + hs.append(hops_hops(z)) + if len(hs) < 6: + continue + n_cc += 1 + counts = [len(h) for h in hs] + for role, on_i, off_i in (("on", (0, 2, 4), (1, 3, 5)), ("off", (1, 3, 5), (0, 2, 4))): + if min(counts[i] for i in on_i) > max(counts[i] for i in off_i): + stats[role + "_above"] += 1 + # hop frequency reused within 2 channels and absent from the other role + other = np.array(sorted(c for i in off_i for _, c in hs[i])) + reuse = [] + for a in on_i: + for _, c in hs[a]: + if any(any(abs(c - c2) <= 2 for _, c2 in hs[b]) for b in on_i if b != a): + j = np.searchsorted(other, c) + near = other[max(j - 1, 0):j + 1] + # the other role must be quiet there + quiet = max(hops_busy(zs[i], c) for i in off_i) < hops_Z_VETO + if (not len(near) or np.min(np.abs(near - c)) > 2) and quiet: + reuse.append(c) + if reuse: + stats[role + "_reuse"] += 1 + if role == "on": + foff = abs(float(got[1]["foff"])) + rows.append(dict(target=six[0]["target"], mjd=six[0]["mjd"], k=k, counts=counts, + channels=sorted(set(reuse)), + mhz=[float(got[1]["fch1"]) + float(got[1]["foff"]) * (k * science.COARSE + c) + for c in sorted(set(reuse))], foff_hz=foff * 1e6)) + print("%s k%d: isolated hops per scan %s" % (six[0]["target"], k, counts), flush=True) + json.dump(dict(cadence_channels=n_cc, stats=stats, reuse=rows), open(os.path.join(hops_HERE, "radio_hops.json"), "w"), + indent=1) + print("%d cadence-channels: every ON scan above every OFF scan in %d (roles exchanged %d); a hop frequency reused in " + "two ON scans and absent from the OFF scans in %d (roles exchanged %d)" + % (n_cc, stats["on_above"], stats["off_above"], stats["on_reuse"], stats["off_reuse"])) + for r in rows[:20]: + print(" %s MJD %d k%d: hops %s, reused at %s MHz" % (r["target"], r["mjd"], r["k"], r["counts"], + ", ".join("%.6f" % m for m in r["mhz"][:5]))) + + +def hops_record(): + """Record the run: one row per cadence.""" + r = json.load(open(os.path.join(hops_HERE, "radio_hops.json"))) + cads = combs_cadences() + s = r["stats"] + core.record_search( + "bl_frequency_hops", "Frequency hopping on the target alone, Breakthrough Listen", + archive="Breakthrough Listen GBT L band (open data cache)", release="AGBT16A-17B sessions", + selection="the cached H I and OH coarse channels of %d ABACAD cadences" % len(cads), code="seti.py breakthrough hops", + params=dict(z_hop=hops_Z_HOP, z_near=hops_Z_NEAR, reach_channels=hops_REACH, reuse_channels=2), + n_targets=len(cads), + null_summary="%d cadence-channels: every ON scan above every OFF in %d (roles exchanged %d); a hop frequency " + "reused in two ON scans and absent from the OFF scans in %d (roles exchanged %d)" + % (r["cadence_channels"], s["on_above"], s["off_above"], s["on_reuse"], s["off_reuse"]), + sensitivity="single-spectrum bursts at 8 robust deviations in 2.79 Hz channels", + result="no hopping on a target alone beyond the role-exchanged count" if s["on_reuse"] <= s["off_reuse"] and + s["on_above"] <= s["off_above"] else "see the null summary", ledger="Other radio morphologies") + core.clear_targets("bl_frequency_hops") + core.record_targets("bl_frequency_hops", [ + dict(target="bl:%s" % six[0]["name"], note="cadence on %s, MJD %d" % (six[0]["target"], six[0]["mjd"])) + for six in cads]) + print("recorded") + + +def hops_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("search", "record")) + a = p.parse_args() + hops_search() if a.mode == "search" else hops_record() + + +def hops_cli(): + quiet_warnings() + hops_main() + + +# -------------------------------------------------------------------------------------------------------------- + +pulses_DOC = r"""Broadband pulses at DM -30 to +3 in 349 us BL products (ON against OFF), and zero-DM folds at periods keyed to J0437-4715, Crab, Vela and B1937+21 as seen from each star. + + python -I seti.py breakthrough pulses tasks CADENCES.jsonl TASKS.json + python -I seti.py breakthrough pulses search TASKS.json [--workers 2] + python -I seti.py breakthrough pulses summary + python -I seti.py breakthrough pulses record [--control DIR] (OFF scans folded the same way as the null)""" + +pulses_OUT = os.environ.get("PULSES_OUT", core.data("bl_pulses")) +pulses_SNR = 7.0 +pulses_NSUB = 64 +pulses_WIDTHS = (1, 2, 4, 8, 16, 32, 64) +pulses_KDM = 4.148808e-3 # s GHz^2 per pc cm^-3 +# name, RA, Dec (deg), F0 (Hz), F1, F2, PEPOCH (MJD), distance (pc), proper motion (mas/yr) +pulses_PSRS = (("J0437-4715", 69.3168725, -47.2527840, 173.6879456649439, -1.728367e-15, -6.1e-29, 55486.0, 157.0, 121.4, -71.5), + ("Crab", 83.6330565, 22.0144980, 29.9469230, -3.77535e-10, 1.1147e-20, 48442.5, 2000.0, -11.5, 2.3), + ("Vela", 128.8358812, -45.1763542, 11.1946499395, -1.5666e-11, 1.028e-21, 51559.319, 280.0, -49.7, 29.9), + ("B1937+21", 294.9106716, 21.5830943, 641.928222127829, -4.330987e-14, 0.0, 55656.0, 3500.0, 0.07, -0.42)) +pulses_C = 299792.458 + + +def pulses_unit(ra, dec): + a, d = math.radians(ra), math.radians(dec) + return np.array([math.cos(d) * math.cos(a), math.cos(d) * math.sin(a), math.sin(d)]) + + +def pulses_vel(ra, dec, pmra, pmdec, rv, dist_pc): + """Barycentric space velocity (km/s) from astrometry, radial velocity and distance.""" + u = pulses_unit(ra, dec) + a, d = math.radians(ra), math.radians(dec) + east = np.array([-math.sin(a), math.cos(a), 0.0]) + north = np.array([-math.sin(d) * math.cos(a), -math.sin(d) * math.sin(a), math.cos(d)]) + k = 4.74047 * dist_pc / 1000.0 + return rv * u + k * (pmra * east + pmdec * north) + + +def pulses_periods(star, mjd, berv): + """Topocentric period of a sender at the star keyed on each pulsar, and the pulsar's own.""" + out = {} + uS = pulses_unit(star["ra"], star["dec"]) + vS = pulses_vel(star["ra"], star["dec"], star["pmra"], star["pmdec"], star["rv"], star["d"]) + for name, ra, dec, f0, f1, f2, pep, dpsr, pmra, pmdec in pulses_PSRS: + uP = pulses_unit(ra, dec) + cos_t = float(np.dot(uS, uP)) + lag_days = star["d"] * 3.0857e13 / pulses_C / 86400.0 * (1.0 - cos_t) + def f_at(m): + dt = (m - pep) * 86400.0 + return f0 + f1 * dt + 0.5 * f2 * dt * dt + p_bary_now = 1.0 / f_at(mjd) + p_bary_then = 1.0 / f_at(mjd - lag_days) + # star-to-pulsar direction and the pulsar's transverse velocity + xS = uS * star["d"] + xP = uP * dpsr + uSP = (xP - xS) / np.linalg.norm(xP - xS) + vP = pulses_vel(ra, dec, pmra, pmdec, 0.0, dpsr) + p_sender = p_bary_then * (1.0 + (float(np.dot(vP, uSP - uP)) - float(np.dot(vS, uSP))) / pulses_C) + p_bary_beacon = p_sender * (1.0 + float(np.dot(vS, uS)) / pulses_C) + out[name] = dict(beacon=p_bary_beacon * (1.0 - berv / pulses_C), psr_topo=p_bary_now, + lag_years=lag_days / 365.25, cos_theta=cos_t) + return out + + +def pulses_load(path, nsub=pulses_NSUB): + """Normalised subband time series of a 349 us product with outlier channels removed: series, subband centres (GHz), header.""" + import h5py + import hdf5plugin # noqa: F401 + f = h5py.File(path, "r") + d = f["data"] + hdr = {k: (v.decode() if isinstance(v, bytes) else v) for k, v in d.attrs.items() if k != "DIMENSION_LABELS"} + nt, nch = d.shape[0], d.shape[2] + freqs = (hdr["fch1"] + hdr["foff"] * np.arange(nch)) / 1000.0 + # channel statistics from 16 blocks + samp = np.concatenate([d[s:s + 2048, 0, :] for s in np.linspace(0, nt - 2048, 16).astype(int)]).astype(np.float32) + med = np.median(samp, axis=0) + mad = 1.4826 * np.median(np.abs(samp - med), axis=0) + ok = mad > 0 + lm = np.log(np.where(ok, mad, 1.0)) + centre = np.median(lm[ok]) + spread = 1.4826 * np.median(np.abs(lm[ok] - centre)) + ok &= np.abs(lm - centre) < 4 * max(spread, 0.05) + kurt = np.mean(((samp - med) / np.where(ok, mad, 1.0)) ** 4, axis=0) + ok &= kurt < np.median(kurt[ok]) + 6 * 1.4826 * np.median(np.abs(kurt[ok] - np.median(kurt[ok]))) + edges = np.linspace(0, nch, nsub + 1).astype(int) + S = np.zeros((nsub, nt), np.float32) + fsub = np.array([freqs[a:b].mean() for a, b in zip(edges[:-1], edges[1:])]) + nok = np.array([ok[a:b].sum() for a, b in zip(edges[:-1], edges[1:])]) + for s in range(0, nt, 32768): + blk = d[s:s + 32768, 0, :].astype(np.float32) + z = (blk - med) / np.where(ok, mad, 1.0) + z[:, ~ok] = 0.0 + for i, (a, b) in enumerate(zip(edges[:-1], edges[1:])): + if nok[i]: + S[i, s:s + len(blk)] = z[:, a:b].sum(axis=1) / math.sqrt(nok[i]) + f.close() + return S, fsub, nok, hdr, float(ok.mean()) + + +def pulses_search_scan(S, fsub, nok, tsamp): + """Single pulses over DM -30 to +3: strongest per 0.5 s and counts above threshold per DM.""" + from scipy.ndimage import uniform_filter1d + use = nok > 0 + ftop = fsub[use].max() + kdm = pulses_KDM * (fsub ** -2 - ftop ** -2) / tsamp # samples per unit DM per subband + step = 1.0 / max(np.max(np.abs(kdm[use])), 1e-9) + dms = np.arange(-30.0, 3.0 + 1e-9, step) + nt = S.shape[1] + w_all = math.sqrt(float(use.sum())) + best = {} + counts = [] + iu = np.nonzero(use)[0] + Ssh = np.empty((len(iu), nt), np.float32) + for dm in dms: + sh = np.round(dm * kdm).astype(int) + for r, i in enumerate(iu): + Ssh[r] = np.roll(S[i], -sh[i]) + ts = Ssh.sum(axis=0) / w_all + base = uniform_filter1d(ts, 2861, mode="nearest") # about 1 s + ts = ts - base + sd = 1.4826 * np.median(np.abs(ts[::7] - np.median(ts[::7]))) + n_above = 0 + for w in pulses_WIDTHS: + sm = uniform_filter1d(ts, w, mode="nearest") * math.sqrt(w) / max(sd, 1e-6) + above = sm >= pulses_SNR + n_above += int(above.sum()) + # local maxima above threshold, one per 0.5 s + idx = np.nonzero(above & (sm >= np.roll(sm, 1)) & (sm > np.roll(sm, -1)))[0] + for j in idx: + key = int(j * tsamp / 0.5) + if key in best and sm[j] <= best[key]["snr"]: + continue + a, b = max(j - w // 2, 0), min(j + w - w // 2, nt) + sub = Ssh[:, a:b].sum(axis=1) / math.sqrt(max(b - a, 1)) + best[key] = dict(t=float(j * tsamp), dm=float(dm), width=int(w), snr=float(sm[j]), + frac_sub=float(np.mean(sub > 1.0))) + counts.append(n_above) + cands = sorted(best.values(), key=lambda c: -c["snr"])[:200] + # DM sensitivity: S/N at DM 0 against DMs smearing it over four widths; steps score flat + kmax = max(np.max(np.abs(kdm[use])), 1e-9) + for c in cands: + j, w = int(round(c["t"] / tsamp)), c["width"] + a, b = max(j - 3000, 0), min(j + 3000, nt) + def snr_at(dm): + sh = np.round(dm * kdm).astype(int) + seg = np.zeros(b - a, np.float32) + for i in iu: + seg += np.roll(S[i], -sh[i])[a:b] + seg /= w_all + seg -= np.median(seg) + sd = 1.4826 * np.median(np.abs(seg)) + sm = uniform_filter1d(seg, w, mode="nearest") * math.sqrt(w) / max(sd, 1e-6) + k = j - a + return float(sm[max(k - w, 0):k + w + 1].max()) + delta = 4.0 * w / kmax + c["snr_dm0"] = snr_at(0.0) + c["peaked"] = c["snr"] / max(snr_at(c["dm"] - delta), snr_at(c["dm"] + delta), 1e-6) + return dms, np.array(counts), cands + + +def pulses_fold(ts, tsamp, period, nbins): + ph = (np.arange(len(ts)) * tsamp / period) % 1.0 + idx = np.minimum((ph * nbins).astype(int), nbins - 1) + s = np.bincount(idx, weights=ts, minlength=nbins) + n = np.bincount(idx, minlength=nbins) + prof = s / np.maximum(n, 1) + sd = np.std(ts) + return float(np.sum((prof - prof.mean()) ** 2 / (sd ** 2 / np.maximum(n, 1)))), prof + + +def pulses_scan(task): + """Download, search and delete one scan's 349 us product; result in OUT/.json.""" + name = task["url"].rstrip("/").split("/")[-1] + out_p = os.path.join(pulses_OUT, name + ".json") + if os.path.exists(out_p): + return 1 + tmp = os.path.join(pulses_OUT, "tmp", name) + os.makedirs(os.path.dirname(tmp), exist_ok=True) + try: + core.download(task["url"], tmp) + S, fsub, nok, hdr, frac_ok = pulses_load(tmp) + except Exception as e: + print("%s: %s" % (name[:60], str(e)[:100]), flush=True) + return 0 + finally: + if os.path.exists(tmp): + os.remove(tmp) + tsamp = float(hdr["tsamp"]) + dms, counts, cands = pulses_search_scan(S, fsub, nok, tsamp) + use = nok > 0 + ts0 = S[use].sum(axis=0) / math.sqrt(use.sum()) + mjd = float(hdr["tstart"]) + 0.5 * len(ts0) * tsamp / 86400.0 + folds = {} + star = task.get("star") + if star: + berv = science.barycentric_correction(star["ra"], star["dec"], mjd, "GBT") + for psr, pr in pulses_periods(star, mjd, berv).items(): + nb = int(min(64, max(4, pr["beacon"] / tsamp))) + span = len(ts0) * tsamp + step = pr["beacon"] / (span / pr["beacon"]) / (4 * nb) # a quarter bin of drift over the scan + trials = [pr["beacon"] + k * step for k in range(-3, 4)] + obs = max(pulses_fold(ts0, tsamp, p, nb)[0] for p in trials) + null = [max(pulses_fold(ts0, tsamp, pr["beacon"] * (1 + off), nb)[0] for _ in [0]) + for off in np.linspace(2e-4, 2e-3, 60) * np.where(np.arange(60) % 2, 1, -1)] + leak = pulses_fold(ts0, tsamp, pr["psr_topo"] * (1 - berv / pulses_C), nb)[0] + folds[psr] = dict(period=pr["beacon"], lag_years=pr["lag_years"], chi2=obs, nbins=nb, + p=float(np.mean(np.array(null) >= obs)), null_median=float(np.median(null)), leak_chi2=leak) + res = dict(name=name, target=task.get("target"), on=bool(task.get("on")), session=task.get("session"), mjd=mjd, + tsamp=tsamp, frac_channels=frac_ok, dms=[float(dms[0]), float(dms[-1]), len(dms)], + counts=counts.tolist(), cands=cands, folds=folds) + os.makedirs(pulses_OUT, exist_ok=True) + json.dump(res, open(out_p, "w")) + top = cands[0] if cands else None + print("%s: %s; best pulse %s; folds %s" % (name[:50], "ON" if task.get("on") else "OFF", + ("DM %.2f SNR %.1f w %d frac %.2f" % (top["dm"], top["snr"], top["width"], top["frac_sub"])) if top else "none", + ", ".join("%s p %.2f" % (k, v["p"]) for k, v in folds.items())), flush=True) + return 1 + + +def pulses_tasks(cad_path, dest): + """Every scan of the cadences with the target's astrometry for the folds.""" + from astroquery.simbad import Simbad + s = Simbad() + s.add_votable_fields("pmra", "pmdec", "plx_value", "rvz_radvel") + stars, tasks = {}, [] + for line in open(cad_path): + c = json.loads(line) + name = c["star"]["name"] + if name not in stars: + q = re.sub(r"^GJ(\d)", r"GJ \1", re.sub(r"^HIP(\d)", r"HIP \1", name)) + try: + r = s.query_object(q) + stars[name] = dict(ra=float(r["ra"][0]), dec=float(r["dec"][0]), pmra=float(r["pmra"][0] or 0.0), + pmdec=float(r["pmdec"][0] or 0.0), d=1000.0 / float(r["plx_value"][0]), + rv=float(r["rvz_radvel"][0]) if r["rvz_radvel"][0] is not np.ma.masked else 0.0) + except Exception as e: + print("%s: not resolved (%s)" % (name, str(e)[:60])) + stars[name] = None + for k, ((scan, tgt), url) in enumerate(zip(c["scans"], c["urls"])): + u = url.replace(".gpuspec.0000.h5", ".gpuspec.8.0001.h5") + # OFF scans carry the star for the far-field control folds + tasks.append(dict(url=u, target=tgt, on=k % 2 == 0, session=c["session"], star=stars[name])) + json.dump(tasks, open(dest, "w")) + print("%d scans in %d cadences of %d stars" % (len(tasks), len(tasks) // 6, len(stars))) + + +def pulses_search_main(tasks_path, workers): + tasks = json.load(open(tasks_path)) + from concurrent.futures import ThreadPoolExecutor + with ThreadPoolExecutor(workers) as ex: + n = sum(ex.map(pulses_scan, tasks)) + print("%d of %d scans searched" % (n, len(tasks))) + + +def pulses_summary(): + R = [json.load(open(p)) for p in glob.glob(os.path.join(pulses_OUT, "*.h5.json"))] + on = [r for r in R if r["on"]] + off = [r for r in R if not r["on"]] + print("%d scans (%d ON, %d OFF)" % (len(R), len(on), len(off))) + for lab, sel in (("DM < -1", lambda c: c["dm"] < -1), ("-1 <= DM <= 1", lambda c: -1 <= c["dm"] <= 1), ("DM > 1", lambda c: c["dm"] > 1)): + for thr in (7, 9, 12): + def keep(c, thr=thr): + return sel(c) and c["snr"] >= thr and c["frac_sub"] >= 0.5 and c.get("peaked", 2.0) >= 1.5 + n_on = sum(1 for r in on for c in r["cands"] if keep(c)) + n_off = sum(1 for r in off for c in r["cands"] if keep(c)) + print(" %-14s SNR >= %2d, broadband and DM-peaked: ON %4d (%.2f per scan) OFF %4d (%.2f per scan)" + % (lab, thr, n_on, n_on / max(len(on), 1), n_off, n_off / max(len(off), 1))) + fl = [(r["name"], k, v) for r in on for k, v in r["folds"].items()] + fl.sort(key=lambda x: x[2]["p"]) + fo = [(r["name"], k, v) for r in off for k, v in r.get("folds", {}).items()] + print("pulsar-locked folds: ON %d, p below 0.05: %d (%.1f expected); OFF %d, p below 0.05: %d" + % (len(fl), sum(1 for x in fl if x[2]["p"] < 0.05), 0.05 * len(fl), len(fo), sum(1 for x in fo if x[2]["p"] < 0.05))) + for n, k, v in fl[:10]: + print(" %s %s: chi2 %.1f (null median %.1f) p %.3f, %d bins, lag %.1f yr; pulsar's own period chi2 %.1f" + % (n[:50], k, v["chi2"], v["null_median"], v["p"], v["nbins"], v["lag_years"], v["leak_chi2"])) + + +def pulses_record(control=None): + """Record pulses by DM class (ON against OFF) and pulsar-locked folds against chance; one row per ON target.""" + R = [json.load(open(p)) for p in glob.glob(os.path.join(pulses_OUT, "*.h5.json"))] + on = [r for r in R if r["on"]] + off = [r for r in R if not r["on"]] + + def keep(c): + return c["snr"] >= 7 and c["frac_sub"] >= 0.5 and c.get("peaked", 2.0) >= 1.5 + + def rate(rs, lo, hi): + return sum(1 for r in rs for c in r["cands"] if keep(c) and lo <= c["dm"] < hi) / max(len(rs), 1) + classes = (("negative", -99.0, -1.0), ("zero", -1.0, 1.0), ("positive", 1.0, 99.0)) + rates = {k: (rate(on, lo, hi), rate(off, lo, hi)) for k, lo, hi in classes} + fl = [v for r in on for v in r["folds"].values()] + low = sum(1 for v in fl if v["p"] < 0.05) + ctl = "" + if control and os.path.isdir(control): + C = [json.load(open(p)) for p in glob.glob(os.path.join(control, "*.h5.json"))] + cf = [v for r in C if not r["on"] for v in r.get("folds", {}).values()] + ctl = "; the OFF scans of a control cadence folded the same way give %d of %d below p 0.05" % ( + sum(1 for v in cf if v["p"] < 0.05), len(cf)) + targets = sorted({r["target"] for r in on}) + core.record_search( + "bl_pulses", "Negatively dispersed and pulsar-locked pulses", + archive="Breakthrough Listen GBT 349 us products (gpuspec.8.0001.h5, open data)", + release="%d scans (%d ON, %d OFF) of %d targets" % (len(R), len(on), len(off), len(targets)), + selection="ABACAD cadences of the nearest stars with high-time-resolution products in the open data", + code=os.path.abspath(__file__), entry="pulses", n_targets=len(targets), + params=dict(snr=pulses_SNR, nsub=pulses_NSUB, widths=list(pulses_WIDTHS), dm=[-30, 3], frac_sub=0.5, peaked=1.5), + null_summary="OFF scans of the same cadences: broadband DM-peaked pulses per scan at DM < -1: %.1f, -1 to 1: %.1f, " + "> 1: %.1f%s" % (rates["negative"][1], rates["zero"][1], rates["positive"][1], ctl), + sensitivity="a 7 sigma pulse of 0.35 to 22 ms in at least half of 64 subbands, DM -30 to +3 pc cm^-3", + ledger="Pulses at zero and negative dispersion measure", + result="ON scans: broadband DM-peaked pulses per scan at DM < -1: %.1f, -1 to 1: %.1f, > 1: %.1f, against %.1f, %.1f " + "and %.1f in the OFF scans; pulsar-locked folds of the ON scans: %d of %d below p 0.05 against %.1f by chance%s" + % (rates["negative"][0], rates["zero"][0], rates["positive"][0], rates["negative"][1], rates["zero"][1], + rates["positive"][1], low, len(fl), 0.05 * len(fl), ctl)) + rows = [] + for t in targets: + rs = [r for r in on if r["target"] == t] + neg = [c for r in rs for c in r["cands"] if keep(c) and c["dm"] < -1] + pmin = min(((v["p"], k) for r in rs for k, v in r["folds"].items()), default=None) + rows.append(dict(target="bl:" + t, stat=max((c["snr"] for c in neg), default=None), p=pmin[0] if pmin else None, + unit="S/N of the strongest broadband pulse at DM < -1", + vet="OFF scans carry such pulses at %.1f per scan" % rates["negative"][1], + note="%d ON scans; %d negative-DM pulses; lowest fold p %s (%s)" + % (len(rs), len(neg), "%.3f" % pmin[0] if pmin else "-", pmin[1] if pmin else "-"))) + core.clear_targets("bl_pulses") + core.record_targets("bl_pulses", rows) + print("recorded %d scans, %d targets" % (len(R), len(targets))) + + +def pulses_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("tasks", "search", "summary", "record")) + p.add_argument("args", nargs="*") + p.add_argument("--workers", type=int, default=2) + p.add_argument("--control", default=None, help="a directory of OFF scans folded the same way, the folds' null") + a = p.parse_args() + if a.mode == "tasks": + pulses_tasks(*a.args) + elif a.mode == "search": + pulses_search_main(a.args[0], a.workers) + elif a.mode == "record": + pulses_record(a.control) + else: + pulses_summary() + + +# -------------------------------------------------------------------------------------------------------------- + +highdrift_DOC = r"""High-drift narrowband search of 2.86 kHz BL products on the GPU (+-300 Hz/s, with curvature); hits in all ON scans, OFF below 5 sigma. + + python -I seti.py breakthrough highdrift sessions (every session's mid-resolution scans, ROOT/sessions.json) + python -I seti.py breakthrough highdrift plan (ABACAD cadences, ROOT/plan.json; new cadences after the existing ones) + python -I seti.py breakthrough highdrift search [--part k/n] [--streams 4] [--limit N] [--redo] (--redo: results before the fitted bandpass, and failed fetches) + python -I seti.py breakthrough highdrift inject [--scans 1000] [--per 40] (completeness on synthetic scans, ROOT/injections.jsonl) + python -I seti.py breakthrough highdrift record""" + +highdrift_ROOT = os.environ.get("HIGHDRIFT_ROOT", core.data("bl_midres")) +highdrift_PIPE = "https://bldata.berkeley.edu/pipeline/" +highdrift_RX = re.compile(r'href="(spliced_blc[0-9]+_guppi_(\d+)_(\d+)_([^"]+?)_(\d{4})\.gpuspec\.0002\.h5)"') +highdrift_DRIFT = 300.0 # Hz/s +highdrift_CURV = 0.3 # Hz/s^2; an Earth-like rotating planet gives 0.16 Hz/s^2 at L band +highdrift_CURV_STEP = 0.03 # Hz/s^2 +highdrift_SNR = 10.0 +highdrift_OFF_SNR = 5.0 +highdrift_BLOCK = 4096 +highdrift_COARSE = 1024 # channels per coarse channel +highdrift_TOL = 3 # channel tolerance across the cadence +highdrift_SEFD = 10.0 # Jy, GBT at L and S band +highdrift_NORM = 2 # bandpass from each coarse channel's level and the folded coarse-channel response, noise per position; results without it used a smoothed level alone + + +def highdrift_sessions(): + from concurrent.futures import ThreadPoolExecutor + os.makedirs(highdrift_ROOT, exist_ok=True) + page = core.get(highdrift_PIPE, timeout=120).decode(errors="replace") + sessions = sorted(set(re.findall(r'href="(AGBT[0-9]{2}[AB]_[0-9]+_[0-9]+)/?"', page))) + + def one(s): + d = core.get(highdrift_PIPE + s + "/holding/", timeout=120, soft=True) + if d is None: + return s, None + return s, sorted({(int(m[1]), int(m[2]), m[3], m[0]) for m in highdrift_RX.findall(d.decode(errors="replace"))}) + out = {} + with ThreadPoolExecutor(6) as ex: + for s, files in ex.map(one, sessions): + out[s] = files + json.dump(out, open(os.path.join(highdrift_ROOT, "sessions.json"), "w")) + print("%d sessions, %d with mid-resolution scans, %d scans, %d failed listings" + % (len(out), sum(1 for v in out.values() if v), sum(len(v) for v in out.values() if v), + sum(1 for v in out.values() if v is None))) + + +def highdrift_plan(): + """ABACAD cadences: six scans within 0.1 d, target at 0, 2 and 4. An existing plan keeps its order and new cadences follow it, so each part's share of the earlier plan is unchanged.""" + d = json.load(open(os.path.join(highdrift_ROOT, "sessions.json"))) + path = os.path.join(highdrift_ROOT, "plan.json") + old = json.load(open(path)) if os.path.exists(path) else [] + plan = [] + for sess, files in sorted(d.items()): + s = sorted(files or []) + i = 0 + while i <= len(s) - 6: + w = s[i:i + 6] + a = w[0][2] + t = [f[0] + f[1] / 86400.0 for f in w] + if (w[2][2] == a and w[4][2] == a and len({w[1][2], w[3][2], w[5][2], a}) == 4 and t[5] - t[0] < 0.1 + and not a.lower().startswith("diag")): + plan.append(dict(session=sess, target=a, scans=[dict(mjd=t[j], target=f[2], file=f[3], on=(j % 2 == 0)) + for j, f in enumerate(w)])) + i += 6 + else: + i += 1 + seen = {(c["session"], c["scans"][0]["file"]) for c in old} + new = [c for c in plan if (c["session"], c["scans"][0]["file"]) not in seen] + plan = old + new + json.dump(plan, open(path + ".tmp", "w")) + os.replace(path + ".tmp", path) + print("%d cadences of %d targets in %d sessions, %d of them new" % (len(plan), len({c["target"] for c in plan}), + len({c["session"] for c in plan}), len(new))) + + +def highdrift_fetch(url, path, streams=4): + """Download one file by parallel byte ranges.""" + import urllib.request + if os.path.exists(path): + return path + req = urllib.request.Request(url, method="HEAD", headers=core.UA) + size = int(urllib.request.urlopen(req, timeout=120).headers["Content-Length"]) + edges = [size * i // streams for i in range(streams + 1)] + with open(path + ".tmp", "wb") as fh: + fh.truncate(size) + + def part(i): + b = core.get(url, byte_range=(edges[i], edges[i + 1] - 1), timeout=1800) + with open(path + ".tmp", "r+b") as fh: + fh.seek(edges[i]) + fh.write(b) + return len(b) + got = core.pmap(part, range(streams), threads=streams) + if sum(got) != size: + raise IOError("%s: %d of %d bytes" % (url, sum(got), size)) + os.replace(path + ".tmp", path) + return path + + +def highdrift_read(path): + import h5py + import hdf5plugin # noqa: F401 (registers the bitshuffle filter the files use) + with h5py.File(path, "r") as f: + d = f["data"] + hdr = {k: d.attrs[k] for k in ("fch1", "foff", "tsamp", "tstart", "source_name", "src_raj", "src_dej")} + x = d[:, 0, :] + hdr = {k: (str(v) if k == "source_name" else float(v)) for k, v in hdr.items()} + return np.asarray(x, np.float32), hdr + + +def highdrift_scan(x, hdr, dev): + """Hits of one scan and its best sum over all drifts per channel (noise units).""" + import torch + nt, nch = x.shape + tsamp, foff = hdr["tsamp"], hdr["foff"] * 1e6 + C = highdrift_COARSE + nc = max(nch // C, 1) + m = np.median(x, axis=0) + mc = m[:nc * C].reshape(nc, C) + # each coarse channel's level, a line through the medians of its two middle quarters (coarse channels differ in gain), and + # the filterbank's response across a coarse channel, the same in every one, folded from the spectrum over that level; a + # smooth level alone leaves every coarse channel's edges at half the bandpass + q, uu = C // 4, (np.arange(C) + 0.5) / C + resp = np.ones(C) + for _ in range(2): + r = mc / resp[None, :] + lo, hi = np.median(r[:, q:2 * q], axis=1), np.median(r[:, 2 * q:3 * q], axis=1) + level = np.maximum(lo[:, None] + (hi - lo)[:, None] * (uu[None, :] - 0.375) / 0.25, 1e-6 * np.median(m)) + resp = np.maximum(np.median(mc / level, axis=0), 1e-3) + band = (level * resp[None, :]).ravel() + band = np.concatenate([band, np.resize(band[-C:], nch - nc * C)]) + z = x / band[None, :] - 1.0 + dc = np.concatenate([np.clip(np.arange(C // 2, nch, C) + off, 0, nch - 1) for off in (-1, 0, 1)]) + z[:, dc] = 0.0 + B = highdrift_BLOCK + nb = max(nch // B, 1) + med = np.median(z[:, :nb * B].reshape(nt, nb, B), axis=(0, 2)) + med = np.concatenate([np.repeat(med, B), np.full(nch - nb * B, med[-1])]) + # the noise of each block, shaped across the coarse channel by the folded noise of single channels over time + s_ch = 1.4826 * np.median(np.abs(z - np.median(z, axis=0)[None, :]), axis=0) + lvl = np.median(s_ch[:nb * B].reshape(nb, B), axis=1) + lvl = np.maximum(np.concatenate([np.repeat(lvl, B), np.full(nch - nb * B, lvl[-1])]), 1e-9) + prof = np.maximum(np.median((s_ch / lvl)[:nc * C].reshape(nc, C), axis=0), 1e-3) + sig = np.maximum(lvl * np.resize(prof, nch), 1e-6) + z = ((z - med[None, :]) / sig[None, :]).astype(np.float32) + z[:, dc] = 0.0 + step = abs(foff) / (nt * tsamp) / 2.0 + drifts = step * np.arange(-int(highdrift_DRIFT / step), int(highdrift_DRIFT / step) + 1) + curvs = highdrift_CURV_STEP * np.arange(-int(highdrift_CURV / highdrift_CURV_STEP), int(highdrift_CURV / highdrift_CURV_STEP) + 1) + t = np.arange(nt) * tsamp + zt = torch.as_tensor(z, device=dev) + base = torch.arange(nch, device=dev) + best = torch.full((nch,), -1e9, device=dev) + bestd = torch.zeros(nch, dtype=torch.long, device=dev) + bestc = torch.zeros(nch, dtype=torch.long, device=dev) + zero = None + for i, d in enumerate(drifts): + for ci, a in enumerate(curvs): + # track channel per sample from midpoint drift and curvature + sh = torch.as_tensor(np.round((d * (t - t[-1] / 2) + 0.5 * a * (t - t[-1] / 2) ** 2) / foff).astype(np.int64), device=dev) + idx = (base[None, :] + sh[:, None]).clamp_(0, nch - 1) + acc = zt.gather(1, idx).sum(0) / math.sqrt(nt) + if abs(d) < step / 2 and abs(a) < highdrift_CURV_STEP / 2: + zero = acc.clone() + better = acc > best + best = torch.where(better, acc, best) + bestd = torch.where(better, torch.full_like(bestd, i), bestd) + bestc = torch.where(better, torch.full_like(bestc, ci), bestc) + snr, di, cvi, s0 = best.cpu().numpy(), bestd.cpu().numpy(), bestc.cpu().numpy(), zero.cpu().numpy() + edge = int(np.ceil(highdrift_DRIFT * nt * tsamp / abs(foff))) + 2 + snr[:edge] = -1e9 + snr[nch - edge:] = -1e9 + # a hit near a brighter zero-drift line is that line's sidelobe + hits = [] + order = np.argsort(-snr) + taken = np.zeros(nch, bool) + span_per = nt * tsamp / abs(foff) + for c in order: + if snr[c] < highdrift_SNR: + break + if taken[c]: + continue + d, a = float(drifts[di[c]]), float(curvs[cvi[c]]) + span = int((abs(d) + abs(a) * nt * tsamp / 2) * span_per / 2) + 1 + peak0 = float(s0[max(c - span, 0):c + span + 1].max()) + if (abs(d) >= step or abs(a) >= highdrift_CURV_STEP) and peak0 >= max(highdrift_SNR, snr[c] / 3.0) and s0[c] < peak0 / 2.0: + taken[c] = True + continue + taken[max(c - highdrift_TOL, 0):c + highdrift_TOL + 1] = True + # channel, frequency and drift at the scan midpoint + hits.append(dict(chan=int(c), freq_mhz=float(hdr["fch1"] + hdr["foff"] * c), drift=d, curv=a, snr=float(snr[c]), snr0=float(s0[c]))) + return hits, np.maximum(snr, s0), step + + +def highdrift_fast(drift, snr, snr0): + """Hit beyond +-4 Hz/s whose zero-drift sum is under half its best.""" + return abs(drift) > 4.0 and snr0 < 0.5 * snr + + +def highdrift_events(scans, step): + """Hits in all three ON scans along one drift, OFF scans below threshold at the predicted channels.""" + on = [s for s in scans if s["on"]] + off = [s for s in scans if not s["on"]] + foff = on[0]["hdr"]["foff"] * 1e6 + events, pairs = [], 0 + + def at(s, h, s_from): + """Channel and drift in scan s of hit h from scan s_from.""" + dt = (s["mjd"] - s_from["mjd"]) * 86400.0 + a = h.get("curv", 0.0) + return h["chan"] + (h["drift"] * dt + 0.5 * a * dt * dt) / foff, h["drift"] + a * dt + + for h in on[0]["hits"]: + chain = [h] + for s in on[1:]: + c, d_at = at(s, h, on[0]) + m = [g for g in s["hits"] if abs(g["chan"] - c) <= highdrift_TOL and abs(g["drift"] - d_at) <= 2.5 * step] + if m: + chain.append(max(m, key=lambda g: g["snr"])) + if len(chain) == 2: + pairs += 1 + if len(chain) < 3: + continue + clean = True + offs = [] + for s in off: + c = int(round(at(s, h, on[0])[0])) + lo, hi = max(c - highdrift_TOL, 0), min(c + highdrift_TOL + 1, len(s["best"])) + v = float(s["best"][lo:hi].max()) if hi > lo else 0.0 + offs.append(v) + if v >= highdrift_OFF_SNR: + clean = False + if clean: + events.append(dict(freq_mhz=h["freq_mhz"], drift=h["drift"], curv=h.get("curv", 0.0), snr=[g["snr"] for g in chain], + snr0=[g["snr0"] for g in chain], off_max=offs)) + return events, pairs + + +def highdrift_search(part=None, streams=4, limit=0, redo=False): + """Search the part's cadences without a result; with redo, those whose result predates highdrift_NORM or records a failed fetch, the earlier result kept under ROOT/results_norm1.""" + import shutil + from concurrent.futures import ThreadPoolExecutor + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + plan = json.load(open(os.path.join(highdrift_ROOT, "plan.json"))) + k, n = (int(x) for x in part.split("/")) if part else (0, 1) + todo = plan[k::n] + if limit: + todo = todo[:limit] + tmp = os.path.join(highdrift_ROOT, "tmp_%dof%d" % (k, n) if part else "tmp") # one scratch directory per part + res = os.path.join(highdrift_ROOT, "results") + os.makedirs(tmp, exist_ok=True) + os.makedirs(res, exist_ok=True) + + def name(c): + return "%s_%s_%d.json" % (c["session"], re.sub(r"[^A-Za-z0-9+-]", "_", c["target"]), int(c["scans"][0]["mjd"] * 86400) % 86400) + + def fetch(c): + paths = [] + for s in c["scans"]: + paths.append(highdrift_fetch(highdrift_PIPE + c["session"] + "/holding/" + s["file"], os.path.join(tmp, s["file"]), streams)) + return paths + + def current(c): + p = os.path.join(res, name(c)) + if not os.path.exists(p): + return False + if not redo: + return True + try: + return json.load(open(p)).get("norm") == highdrift_NORM + except ValueError: + return False + + def keep(c): + p = os.path.join(res, name(c)) + if os.path.exists(p): + os.makedirs(os.path.join(highdrift_ROOT, "results_norm1"), exist_ok=True) + os.replace(p, os.path.join(highdrift_ROOT, "results_norm1", name(c))) + + todo = [c for c in todo if not current(c)] + print("%d cadences to search on %s%s" % (len(todo), dev, " again" if redo else ""), flush=True) + ex = ThreadPoolExecutor(1) + fut = ex.submit(fetch, todo[0]) if todo else None + for i, c in enumerate(todo): + t0 = time.time() + try: + paths = fut.result() + except Exception as e: + keep(c) + json.dump(dict(session=c["session"], target=c["target"], error=str(e)[:200]), open(os.path.join(res, name(c)), "w")) + print("%s %s: fetch failed, %s" % (c["session"], c["target"], str(e)[:80]), flush=True) + fut = ex.submit(fetch, todo[i + 1]) if i + 1 < len(todo) else None + continue + fut = ex.submit(fetch, todo[i + 1]) if i + 1 < len(todo) else None + t1 = time.time() + scans, step = [], None + for s, p in zip(c["scans"], paths): + x, hdr = highdrift_read(p) + os.remove(p) + hits, best, step = highdrift_scan(x, hdr, dev) + scans.append(dict(s, hdr=hdr, nt=int(x.shape[0]), nch=int(x.shape[1]), hits=hits, best=best)) + del x + events, pairs = highdrift_events(scans, step) + nt, tsamp = scans[0]["nt"], scans[0]["hdr"]["tsamp"] + dnu = abs(scans[0]["hdr"]["foff"]) * 1e6 + flux = highdrift_SNR * highdrift_SEFD / math.sqrt(dnu * nt * tsamp) + out = dict(session=c["session"], target=c["target"], norm=highdrift_NORM, + band=("L" if scans[0]["hdr"]["fch1"] < 2000 else "S" if scans[0]["hdr"]["fch1"] < 3500 else "other"), + fch1=scans[0]["hdr"]["fch1"], nt=nt, nch=scans[0]["nch"], tsamp=tsamp, dnu_hz=dnu, step_hz_s=step, + flux_limit_jy=flux, events=events, pairs=pairs, + scans=[dict(file=s["file"], on=s["on"], mjd=s["mjd"], target=s["target"], source=s["hdr"]["source_name"], + n_hits=len(s["hits"]), n_hits_fast=sum(1 for h in s["hits"] if highdrift_fast(h["drift"], h["snr"], h["snr0"])), + n_fast_iridium=sum(1 for h in s["hits"] if highdrift_fast(h["drift"], h["snr"], h["snr0"]) + and 1616.0 <= h["freq_mhz"] <= 1626.5), + hits=sorted(s["hits"], key=lambda h: -h["snr"])[:200]) for s in scans]) + keep(c) + json.dump(out, open(os.path.join(res, name(c)), "w")) + print("%s %s: hits per ON scan %s, OFF %s; %d pairs, %d events; fetch %.0f s, search %.0f s" + % (c["session"], c["target"], [s["n_hits"] for s in out["scans"] if s["on"]], + [s["n_hits"] for s in out["scans"] if not s["on"]], pairs, len(events), t1 - t0, time.time() - t1), flush=True) + ex.shutdown() + shutil.rmtree(tmp, ignore_errors=True) + + +def highdrift_inject(scans=1000, per=40, nch=315392, nt=277, tsamp=1.058013): + """Completeness of the per-scan search on synthetic scans of the L-band products' shape: Gaussian noise on a bandpass dipping at every coarse-channel edge, per lines a scan at drifts to +-highdrift_DRIFT, curvatures to +-highdrift_CURV and integrated S/N 5-30, each sample's power split between the two channels it falls between; one line a scan in ROOT/injections.jsonl (resumable).""" + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + path = os.path.join(highdrift_ROOT, "injections.jsonl") + done = sum(1 for _ in open(path)) if os.path.exists(path) else 0 + foff = -2.861023e-3 # MHz + hdr = dict(fch1=1900.0, foff=foff, tsamp=tsamp, tstart=0.0, source_name="injection", src_raj=0.0, src_dej=0.0) + u = (np.arange(nch) % highdrift_COARSE) / highdrift_COARSE + band = ((1 + 0.2 * np.sin(2 * np.pi * np.arange(nch) / nch)) * (1 - 0.5 * np.abs(2 * u - 1) ** 8)).astype(np.float32) + tm = np.arange(nt) * tsamp + tm -= tm[-1] / 2 + edge = int(np.ceil(highdrift_DRIFT * nt * tsamp / (abs(foff) * 1e6))) + 2 + rows = np.arange(nt) + print("%d synthetic scans to search on %s, %d done" % (scans - done, dev, done), flush=True) + t0 = time.time() + for k in range(done, scans): + rng = np.random.default_rng(1000003 * (k + 1)) + c = [] + while len(c) < per: # midpoint channels 300 apart, clear of the band edges + x0 = int(rng.integers(edge + 100, nch - edge - 100)) + if all(abs(x0 - y) >= 300 for y in c): + c.append(x0) + d = rng.uniform(-highdrift_DRIFT, highdrift_DRIFT, per) + a = rng.uniform(-highdrift_CURV, highdrift_CURV, per) + s = rng.uniform(5.0, 30.0, per) + x = rng.standard_normal((nt, nch), dtype=np.float32) + for ci, di, ai, si in zip(c, d, a, s): + p = ci + (di * tm + 0.5 * ai * tm ** 2) / (foff * 1e6) + lo = np.floor(p).astype(np.int64) + w = (p - lo).astype(np.float32) + x[rows, lo] += si / math.sqrt(nt) * (1 - w) + x[rows, lo + 1] += si / math.sqrt(nt) * w + x = band[None, :] * (1 + 0.01 * x) + hits, _, step = highdrift_scan(x, hdr, dev) + out = [] + for ci, di in zip(c, d): + m = [h for h in hits if abs(h["chan"] - ci) <= highdrift_TOL and abs(h["drift"] - di) <= 2.5 * step] + out.append(round(max(h["snr"] for h in m), 2) if m else None) + with open(path, "a") as fh: + fh.write(json.dumps(dict(scan=k, norm=highdrift_NORM, chan=c, drift=[round(float(v), 3) for v in d], + curv=[round(float(v), 4) for v in a], snr_in=[round(float(v), 2) for v in s], snr_out=out, + hits=len(hits)), separators=(",", ":")) + "\n") + if (k + 1) % 10 == 0: + print("%d of %d, %.0f s a scan" % (k + 1, scans, (time.time() - t0) / (k + 1 - done)), flush=True) + + +def highdrift_distances(targets): + """Parallaxes (mas) of targets by SIMBAD identifier.""" + ids = {t: re.sub(r"^(HIP|Hip|GJ|Gj|GL|LHS|BD)(?=[0-9+-])", lambda m: m.group(1).upper() + " ", t) for t in targets} + out = {} + keys = sorted(set(ids.values())) + for k in range(0, len(keys), 50): + q = ("SELECT i.id, b.plx_value FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'%s'" % x.replace("'", "''") for x in keys[k:k + 50])) + for r in core.simbad(q): + out[" ".join(str(r["id"]).split())] = r.get("plx_value") + return {t: out.get(v) for t, v in ids.items()} + + +def highdrift_record(): + R = [json.load(open(p)) for p in glob.glob(os.path.join(highdrift_ROOT, "results", "*.json"))] + ok = [r for r in R if "events" in r] + targets = sorted({r["target"] for r in ok}) + on_fast = [s["n_hits_fast"] for r in ok for s in r["scans"] if s["on"]] + off_fast = [s["n_hits_fast"] for r in ok for s in r["scans"] if not s["on"]] + irid = [s.get("n_fast_iridium") for r in ok for s in r["scans"] if s.get("n_fast_iridium") is not None] + irid_frac = sum(irid) / max(sum(s["n_hits_fast"] for r in ok for s in r["scans"] if s.get("n_fast_iridium") is not None), 1) + on_all = [s["n_hits"] for r in ok for s in r["scans"] if s["on"]] + off_all = [s["n_hits"] for r in ok for s in r["scans"] if not s["on"]] + ev = [(r, e) for r in ok for e in r["events"]] + ev_fast = [(r, e) for r, e in ev if all(highdrift_fast(e["drift"], s, s0) for s, s0 in zip(e["snr"], e["snr0"]))] + plx = highdrift_distances(targets) + rows = [] + for t in targets: + rs = [r for r in ok if r["target"] == t] + flux = min(r["flux_limit_jy"] for r in rs) + p = plx.get(t) + eirp = 4 * math.pi * (3.0857e16 * 1000.0 / float(p)) ** 2 * flux * 1e-26 * rs[0]["dnu_hz"] if p else None + n_ev = sum(len(r["events"]) for r in rs) + n_fast = sum(1 for r in rs for e in r["events"] if all(highdrift_fast(e["drift"], s, s0) for s, s0 in zip(e["snr"], e["snr0"]))) + rows.append(dict(target="bl:" + t, stat=n_ev, upper_limit=eirp, unit="EIRP (W) of an unresolved line at 10 sigma", + vet=None if n_fast else ("events only within +-4 Hz/s" if n_ev else None), + note="%d cadences (%s band); %.3f Jy over %.0f Hz; events at |drift| > 4 Hz/s: %d" + % (len(rs), rs[0]["band"], flux, rs[0]["dnu_hz"], n_fast))) + core.record_search( + "bl_highdrift", "Narrowband signals at high drift rates", + archive="Breakthrough Listen GBT mid-resolution products (gpuspec.0002.h5, open data)", + release="%d cadences of %d targets in %d sessions (%d failed)" % (len(ok), len(targets), len({r["session"] for r in ok}), len(R) - len(ok)), + selection="every ABACAD cadence with mid-resolution products in the pipeline directory", + code=os.path.abspath(__file__), entry="highdrift", n_targets=len(targets), + params=dict(drift=highdrift_DRIFT, step="half a channel per scan", snr=highdrift_SNR, off_snr=highdrift_OFF_SNR, + block=highdrift_BLOCK, tol=highdrift_TOL, sefd=highdrift_SEFD), + null_summary="OFF scans: %.1f drifting hits per scan beyond +-4 Hz/s (%.1f hits at any drift) against %.1f (%.1f) in the ON " + "scans; %.0f per cent of the drifting hits lie in the Iridium downlink band, 1616-1626.5 MHz" + % (np.mean(off_fast) if off_fast else 0, np.mean(off_all) if off_all else 0, + np.mean(on_fast) if on_fast else 0, np.mean(on_all) if on_all else 0, 100 * irid_frac), + sensitivity="an unresolved line at 10 sigma over 2.86 kHz and 293 s: %.3f Jy at SEFD %.0f Jy; drifts to +-%.0f Hz/s" + % (np.median([r["flux_limit_jy"] for r in ok]) if ok else 0, highdrift_SEFD, highdrift_DRIFT), + ledger="Narrowband signals at high drift rates", + result="%d events in all three ON scans and absent from the OFF scans, %d of them beyond +-4 Hz/s, in %d cadences of %d targets" + % (len(ev), len(ev_fast), len(ok), len(targets))) + core.clear_targets("bl_highdrift") + core.record_targets("bl_highdrift", rows) + print("recorded %d cadences, %d targets, %d events (%d beyond 4 Hz/s)" % (len(ok), len(targets), len(ev), len(ev_fast))) + for r, e in sorted(ev_fast, key=lambda x: -max(x[1]["snr"]))[:20]: + print(" %s %s: %.6f MHz, %+.1f Hz/s, S/N %s, zero-drift %s, OFF max %s" + % (r["session"], r["target"], e["freq_mhz"], e["drift"], ["%.0f" % v for v in e["snr"]], + ["%.0f" % v for v in e["snr0"]], ["%.1f" % v for v in e["off_max"]])) + + +def highdrift_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("sessions", "plan", "search", "inject", "record")) + p.add_argument("--part", default=None) + p.add_argument("--streams", type=int, default=4) + p.add_argument("--limit", type=int, default=0) + p.add_argument("--scans", type=int, default=1000) + p.add_argument("--per", type=int, default=40) + p.add_argument("--redo", action="store_true") + a = p.parse_args() + if a.mode == "sessions": + highdrift_sessions() + elif a.mode == "plan": + highdrift_plan() + elif a.mode == "search": + highdrift_search(a.part, a.streams, a.limit, a.redo) + elif a.mode == "inject": + highdrift_inject(a.scans, a.per) + else: + highdrift_record() + + +# -------------------------------------------------------------------------------------------------------------- + +soi_DOC = r"""Published signals of interest (Ma et al. 2023, Table 1) traced through their whole session in the 2.84 Hz product: each +signal's line through the per-spectrum peaks of its ON scans, its power on that line in every scan against parallel tracks, and +the narrowband tracks near it in every scan, each spectrum summed over the channels a track's drift crosses within it. + + python -I seti.py breakthrough soi trace [--tag MLc8] [--procs 4] (ROOT/.jsonl: the line, then one line a scan) + python -I seti.py breakthrough soi table (ROOT/table.json) + python -I seti.py breakthrough soi waterfall --tag MLc8 (ROOT/_waterfall.npz: every scan over the band the line crosses) + python -I seti.py breakthrough soi record""" + +soi_ROOT = os.environ.get("SOI_ROOT", core.data("bl_soi")) +# Ma et al. (2023), Table 1: tag, star, session, frequency (MHz) and drift rate (Hz/s) as tabulated +soi_LIST = (("MLc1", "HIP13402", "AGBT16A_999_212", 1188.539231, 1.11), ("MLc2", "HIP118212", "AGBT16B_999_105", 1347.862244, -0.44), + ("MLc3", "HIP62207", "AGBT16A_999_213", 1351.625410, -0.05), ("MLc4", "HIP54677", "AGBT16A_999_182", 1372.987594, -0.11), + ("MLc5", "HIP54677", "AGBT16A_999_182", 1376.988694, -0.11), ("MLc6", "HIP56802", "AGBT16A_999_188", 1435.940307, -0.18), + ("MLc7", "HIP13402", "AGBT16A_999_215", 1487.482046, 0.10), ("MLc8", "HIP62207", "AGBT16A_999_213", 1724.972561, -0.126)) +soi_HALF = 25000.0 # Hz searched either side of the tabulated frequency +soi_OWN = 6000.0 # Hz from the tabulated frequency within which the signal is the strongest track of each ON scan +soi_DRIFTS = np.arange(-2.0, 2.0001, 0.002) # Hz/s +soi_SNR = 8.0 +soi_NEAR = (500.0, 0.05) # a track of another pointing: Hz from the line carried to its time, Hz/s from the line's drift +soi_OFF_Z = 3.0 # combined significance of the three OFF scans' power on the line + + +def soi_listing(session): + """Every mid-resolution scan of a session in time order, each marked ON, OFF or neither by its ABACAD cadence.""" + path = os.path.join(soi_ROOT, "listing_%s.json" % session) + if not os.path.exists(path): + os.makedirs(soi_ROOT, exist_ok=True) + d = core.get(highdrift_PIPE + session + "/holding/", timeout=120).decode(errors="replace") + json.dump(sorted({(int(m[1]), int(m[2]), m[3], m[0]) for m in highdrift_RX.findall(d)}), open(path, "w")) + s = [tuple(x) for x in json.load(open(path))] + scans = [dict(mjd=f[0] + f[1] / 86400.0, target=f[2], file=f[3], on=None, cadence=None) for f in s] + i = 0 + while i <= len(s) - 6: + w = s[i:i + 6] + a = w[0][2] + t = [f[0] + f[1] / 86400.0 for f in w] + if w[2][2] == a and w[4][2] == a and len({w[1][2], w[3][2], w[5][2], a}) == 4 and t[5] - t[0] < 0.1: + for j in range(6): + scans[i + j].update(on=(j % 2 == 0), cadence=a) + i += 6 + else: + i += 1 + return scans + + +def soi_window(session, scan, f0, smooth): + """Unit-noise spectrogram of a scan within soi_HALF of f0 and its channels in Hz from f0: over each channel's own level in the scan, or with smooth over 256-channel block medians of the scan's median spectrum, which keeps a steady tone.""" + url = highdrift_PIPE + session + "/holding/" + scan["file"].replace(".gpuspec.0002.h5", ".gpuspec.0000.h5") + meta = science.header(url) + k = int(((f0 - meta["fch1"]) / meta["foff"]) // science.COARSE) + x, ffirst = science.coarse_channel(url, k) + c = int(round((f0 - ffirst) / meta["foff"])) + h = int(soi_HALF / abs(meta["foff"] * 1e6)) + lo = max(c - h, 0) + w = x[:, lo:c + h + 1].astype(float) + if smooth: + m = np.median(w, axis=0) + nb = len(m) // 256 + z = w / np.interp(np.arange(len(m)), np.arange(nb) * 256 + 128, [np.median(m[j * 256:(j + 1) * 256]) for j in range(nb)])[None, :] - 1 + else: + z = w / np.median(w, axis=0, keepdims=True) - 1 + z /= 1.4826 * np.median(np.abs(z - np.median(z))) + return dict(z=z, hz=(ffirst + meta["foff"] * np.arange(lo, lo + z.shape[1]) - f0) * 1e6, foff=meta["foff"] * 1e6, + t=meta["tstart"] + (np.arange(meta["nt"]) + 0.5) * meta["tsamp"] / 86400, tsamp=meta["tsamp"]) + + +def soi_width(d, w): + """Channels a line drifting at d (Hz/s) crosses within one spectrum.""" + return max(1, int(round(abs(d) * w["tsamp"] / abs(w["foff"])))) + + +def soi_boxcar(z, n): + """Each channel summed with its neighbours over n channels centred on it, over sqrt(n), so the noise stays unit.""" + if n == 1: + return z + c = np.cumsum(np.pad(z, ((0, 0), (1, 0))), axis=1) + out = np.zeros_like(z) + out[:, (n - 1) // 2:(n - 1) // 2 + z.shape[1] - n + 1] = (c[:, n:] - c[:, :-n]) / math.sqrt(n) + return out + + +def soi_sweep(w): + """Best straight-track sum over the drifts by mid-scan channel and the drift giving it, each drift's spectra summed over the channels it crosses.""" + z, foff, tsamp = w["z"], w["foff"], w["tsamp"] + nt, nch = z.shape + tt = (np.arange(nt) - (nt - 1) / 2) * tsamp + best, bd, zs = np.full(nch, -1e9), np.zeros(nch), {} + for d in soi_DRIFTS: + n = soi_width(d, w) + if n not in zs: + zs[n] = soi_boxcar(z, n) + sh = np.round(d * tt / foff).astype(int) + lo, hi = max(0, -sh.min()), nch - max(0, sh.max()) + acc = sum(zs[n][i, lo + sh[i]:hi + sh[i]] for i in range(nt)) / math.sqrt(nt) + seg = best[lo:hi] + up = acc > seg + seg[up] = acc[up] + bd[lo:hi][up] = d + return best, bd + + +def soi_tracks(w, sep=20): + """Local maxima of the sweep above soi_SNR, at most 40: (S/N, Hz from f0 at mid-scan, drift).""" + best, bd = soi_sweep(w) + out, taken = [], np.zeros(len(best), bool) + for j in np.argsort(-best): + if best[j] < soi_SNR or len(out) >= 40: + break + if taken[max(0, j - sep):j + sep + 1].any(): + continue + taken[j] = True + out.append((round(float(best[j]), 1), round(float(w["hz"][j]), 1), round(float(bd[j]), 3))) + return out + + +def soi_line(session, star, f0, scans): + """The signal's topocentric line through the per-spectrum peaks of the strongest track within soi_OWN of f0 in each of its three ON scans: reference MJD, Hz from f0 there and drift (Hz/s), with those tracks' S/N.""" + T, F, H, snr, first = [], [], [], [], None + for s in [s for s in scans if s["cadence"] == star and s["on"]][:3]: + w = soi_window(session, s, f0, False) + best, bd = soi_sweep(w) + best[np.abs(w["hz"]) > soi_OWN] = -1e9 + c = int(np.argmax(best)) + d = float(bd[c]) + snr.append(round(float(best[c]), 1)) + if first is None or best[c] > first[0]: + first = (float(best[c]), float(w["t"].mean()), float(w["hz"][c]), d) + z = soi_boxcar(w["z"], soi_width(d, w)) + nt, nch = z.shape + tt = (np.arange(nt) - (nt - 1) / 2) * w["tsamp"] + for i in range(nt): + ci = int(round(c + d * tt[i] / w["foff"])) + seg = z[i, ci - 4:ci + 5] + j = int(np.argmax(seg)) + dj = 0.0 + if 0 < j < 8: + den = seg[j - 1] - 2 * seg[j] + seg[j + 1] + dj = 0.5 * (seg[j - 1] - seg[j + 1]) / den if den != 0 else 0.0 + T.append(w["t"][i]) + F.append(float(np.interp(ci - 4 + j + dj, np.arange(nch), w["hz"]))) + H.append(float(seg[j])) + T, F, H = np.array(T), np.array(F), np.array(H) + g = H >= 3 + if g.sum() < 8: # too faint for peaks: the strongest ON track itself + return dict(t0=first[1], hz=first[2], drift=first[3], on_snr=snr) + t0 = float(T[g].mean()) + A = np.vstack([np.ones(g.sum()), (T[g] - t0) * 86400]).T + wt = np.minimum(H[g], 30) ** 2 + beta = np.linalg.solve(A.T @ (A * wt[:, None]), A.T @ (wt * F[g])) + return dict(t0=t0, hz=float(beta[0]), drift=float(beta[1]), on_snr=snr) + + +def soi_scan(job): + """One scan of the session: its tracks above soi_SNR, and the power on the signal's line (each spectrum summed over the channels the line crosses, three such sums about it) against parallel tracks 20 to 2000 channels away.""" + session, f0, s, line = job + try: + w = soi_window(session, s, f0, True) + except Exception as e: + return dict(file=s["file"], target=s["target"], cadence=s["cadence"], on=s["on"], error=str(e)[:200]) + z = soi_boxcar(w["z"], soi_width(line["drift"], w)) + nt, nch = z.shape + ci = np.round(np.interp(line["hz"] + line["drift"] * (w["t"] - line["t0"]) * 86400, w["hz"][::-1], np.arange(nch)[::-1])).astype(int) + pw = [] + for o in [0] + [o for o in range(-2000, 2001, 20) if abs(o) >= 20]: + idx = ci + o + pw.append(np.nan if idx.min() < 1 or idx.max() > nch - 2 else float(np.mean([z[i, idx[i] - 1:idx[i] + 2].sum() for i in range(nt)]))) + pw = np.array(pw) + null = pw[1:][np.isfinite(pw[1:])] + return dict(file=s["file"], target=s["target"], cadence=s["cadence"], on=s["on"], mjd=round(float(w["t"].mean()), 5), + on_line=round(float(pw[0]), 2), null_mean=round(float(null.mean()), 2), null_std=round(float(null.std()), 2), + null_n=int(len(null)), as_high=int((null >= pw[0]).sum()), tracks=soi_tracks(w)) + + +def soi_trace(tag=None, procs=4): + """Each signal of interest, or the one tagged, through every scan of its session: ROOT/.jsonl, the line, then a scan a line.""" + from multiprocessing import Pool + os.makedirs(soi_ROOT, exist_ok=True) + for name, star, session, f0, _ in soi_LIST: + if tag and name != tag: + continue + scans = soi_listing(session) + line = soi_line(session, star, f0, scans) + print("%s, %s %s: %.6f MHz at MJD %.5f, drift %+.4f Hz/s, ON tracks S/N %s; %d scans" + % (name, session, star, f0 + line["hz"] / 1e6, line["t0"], line["drift"], line["on_snr"], len(scans)), flush=True) + with Pool(procs) as p, open(os.path.join(soi_ROOT, "%s.jsonl" % name), "w") as fh: + fh.write(json.dumps(dict(line, tag=name, star=star, session=session, f0=f0)) + "\n") + for r in p.imap(soi_scan, [(session, f0, s, line) for s in scans]): + fh.write(json.dumps(r) + "\n") + + +def soi_off_z(off): + """Combined significance of the OFF scans' power on the line against their parallel tracks.""" + z = [(o["on_line"] - o["null_mean"]) / o["null_std"] for o in off if o["null_std"] > 0] + return sum(z) / math.sqrt(len(z)) if z else 0.0 + + +def soi_table(): + """Each signal: its line, ON tracks and power on the line, its own OFF scans' power on the line, and the pointings away from its star holding a track within soi_NEAR of the line above soi_SNR; ROOT/table.json.""" + out = [] + for name, star, session, f0, d_tab in soi_LIST: + rows = [json.loads(l) for l in open(os.path.join(soi_ROOT, "%s.jsonl" % name))] + line, rows = rows[0], rows[1:] + ok = [r for r in rows if "error" not in r] + own = [r for r in ok if r["cadence"] == star and abs(r["mjd"] - line["t0"]) < 0.05] + off = [dict((k, r[k]) for k in ("file", "on_line", "null_mean", "null_std", "as_high", "null_n")) for r in own if r["on"] is False] + other = [] + for r in ok: + if r["target"] == star: + continue + pred = line["hz"] + line["drift"] * (r["mjd"] - line["t0"]) * 86400 + near = [q for q in r["tracks"] if abs(q[1] - pred) <= soi_NEAR[0] and abs(q[2] - line["drift"]) <= soi_NEAR[1]] + if near: + other.append(dict(file=r["file"], target=r["target"], on=r["on"], hours=round((r["mjd"] - line["t0"]) * 24, 2), + snr=max(q[0] for q in near))) + out.append(dict(tag=name, star=star, session=session, f0=f0, drift_tabulated=d_tab, mhz=round(f0 + line["hz"] / 1e6, 6), + drift=round(line["drift"], 4), t0=line["t0"], on_snr=line["on_snr"], on_line=[r["on_line"] for r in own if r["on"]], + off=off, off_z=round(soi_off_z(off), 1), other=other, scans=len(rows), failed=len(rows) - len(ok))) + o = out[-1] + print("%s %s: %.6f MHz, %+.3f Hz/s (tabulated %+.3f), ON S/N %s, on the line ON %s OFF %s (%.1f sigma); %d scans away from " + "the star hold it, S/N to %s" % (name, star, o["mhz"], o["drift"], d_tab, o["on_snr"], o["on_line"], [x["on_line"] for x in off], + o["off_z"], len(other), max([x["snr"] for x in other], default="-"))) + json.dump(out, open(os.path.join(soi_ROOT, "table.json"), "w"), indent=1) + + +def soi_waterfall(tag): + """Every scan of the signal's session over the band its line crosses in the session and 700 Hz either side, on the smooth level: ROOT/_waterfall.npz with each scan's spectra (float16, NaN-padded), their MJDs, Hz from f0, ON, OFF or neither (1, 0, -1), and each scan's target and cadence.""" + line = json.loads(open(os.path.join(soi_ROOT, "%s.jsonl" % tag)).readline()) + name, star, session, f0, _ = [x for x in soi_LIST if x[0] == tag][0] + scans = soi_listing(session) + ends = [line["hz"] + line["drift"] * (t - line["t0"]) * 86400 for t in (scans[0]["mjd"], scans[-1]["mjd"] + 300 / 86400)] + lo, hi = min(ends) - 700, max(ends) + 700 + W = [soi_window(session, s, f0, True) for s in scans] + m = (W[0]["hz"] >= lo) & (W[0]["hz"] <= hi) + nt = max(w["z"].shape[0] for w in W) + Z = np.full((len(W), nt, int(m.sum())), np.nan, np.float16) + T = np.full((len(W), nt), np.nan) + for i, w in enumerate(W): + Z[i, :w["z"].shape[0]] = w["z"][:, m] + T[i, :len(w["t"])] = w["t"] + np.savez_compressed(os.path.join(soi_ROOT, "%s_waterfall.npz" % tag), z=Z, t=T, hz=W[0]["hz"][m], + on=np.array([{True: 1, False: 0, None: -1}[s["on"]] for s in scans]), + target=np.array([s["target"] for s in scans]), cadence=np.array([s["cadence"] or "" for s in scans])) + print("%s: %d scans, %.0f to %.0f Hz from %.6f MHz" % (tag, len(W), lo, hi, f0)) + + +def soi_record(): + T = json.load(open(os.path.join(soi_ROOT, "table.json"))) + rows = [] + for star in sorted({t["star"] for t in T}): + notes, vets = [], [] + for t in [t for t in T if t["star"] == star]: + v = "sidelobe-transmitter" if t["other"] else "off-source" if t["off_z"] >= soi_OFF_Z else None + vets.append(v) + notes.append("%s %.6f MHz %+.3f Hz/s, ON S/N %s: %s" % ( + t["tag"], t["mhz"], t["drift"], "/".join("%.0f" % x for x in t["on_snr"]), + "in %d scans away from the star (S/N to %.0f) and its OFF scans at %.1f sigma" % (len(t["other"]), max(x["snr"] for x in t["other"]), t["off_z"]) + if t["other"] else "in its OFF scans at %.1f sigma" % t["off_z"] if v else "no track above S/N %.0f in its ON scans" % soi_SNR + if max(t["on_snr"]) < soi_SNR else "absent from its OFF scans (%.1f sigma) and other pointings" % t["off_z"])) + rows.append(dict(target="bl:" + star, stat=len(notes), unit="signals of interest of Ma et al. (2023)", + vet=vets[0] if all(vets) else None, note="; ".join(notes))) + explained = sum(1 for t in T if t["other"] or t["off_z"] >= soi_OFF_Z) + core.record_search( + "bl_soi", "Signals of interest traced through their sessions", + archive="Breakthrough Listen GBT high-resolution products (gpuspec.0000.h5, open data)", + release="%d signals of interest in %d sessions, %d scans" % (len(T), len({t["session"] for t in T}), sum(t["scans"] for t in T)), + selection="the eight signals of interest of Ma et al. (2023), Table 1", + code=os.path.abspath(__file__), entry="soi", n_targets=len(rows), n_unit="stars", + params=dict(half_hz=soi_HALF, own_hz=soi_OWN, drifts="%+.0f to %+.0f Hz/s by 0.002" % (soi_DRIFTS[0], soi_DRIFTS[-1]), snr=soi_SNR, + near_hz=soi_NEAR[0], near_drift=soi_NEAR[1], off_z=soi_OFF_Z), + null_summary="each scan's power on the signal's line against parallel tracks 20 to 2000 channels away in the same scan", + sensitivity="tracks of S/N %.0f over a 5-minute scan in 2.84 Hz channels, each spectrum summed over the channels the drift crosses" % soi_SNR, + ledger="Signals of interest traced through their sessions", + result="%d of %d signals are in pointings away from their star or in their own OFF scans on their line" % (explained, len(T))) + core.clear_targets("bl_soi") + core.record_targets("bl_soi", rows) + print("recorded %d signals of %d stars, %d explained" % (len(T), len(rows), explained)) + + +def soi_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("trace", "table", "waterfall", "record")) + p.add_argument("--tag", default=None) + p.add_argument("--procs", type=int, default=4) + a = p.parse_args() + if a.mode == "trace": + soi_trace(a.tag, a.procs) + elif a.mode == "table": + soi_table() + elif a.mode == "waterfall": + soi_waterfall(a.tag or "MLc8") + else: + soi_record() + + +shgb_DOC = r"""The 2004 SETI@home candidate SHGb02+14a: a tone near 1420 MHz between Pisces and Aries beside G 73-10 and TZ Arietis (GJ 83.1, 4.5 pc), drifting 8-37 Hz/s. Breakthrough Listen's GBT cadences on GJ 83.1 (2016-06-18 at L band, which holds the line; 2016-09-03 and 2017-08-21 at S band, which does not): the coarse channel holding 1420.4 MHz in every ON and OFF scan, within 0.5 MHz of the line, each spectrogram divided by its channels' medians over time, dedrifted at every rate from -40 to +40 Hz/s in steps of 0.25 Hz/s and summed over its spectra, and peaks above 10 times the robust noise kept; a tone on the ON scans of a cadence that no OFF scan of the cadence shows. + + python -I seti.py breakthrough shgb [record] [--target gj83.1] [--line-mhz 1420.405751] [--window-mhz 0.5] [--rate-max 40] [--rate-step 0.25] [--snr 10] [--drift-min 8] [--drift-max 37]""" + +SHGB_DIRS = ("https://bldata.berkeley.edu/pipeline/AGBT16A_999_224/holding/", "https://bldata.berkeley.edu/pipeline/AGBT16B_999_19/holding/", + "https://bldata.berkeley.edu/pipeline/AGBT17B_999_12/holding/") +SHGB_FILE = re.compile(r"href=\"([^\"]*guppi_(\d+)_(\d+)_([^_\"/]+?)_(\d{4})\.gpuspec\.0000\.h5)\"") +SHGB_HI = 1420.405751 + + +def shgb_scans(directory_url): + """High-resolution scans of a BL directory in time order: (scan number, target, url).""" + page = core.get(directory_url, timeout=60).decode(errors="replace") + return sorted({(int(m[4]), m[3], directory_url + m[0]) for m in SHGB_FILE.findall(page)}) + + +def shgb_peaks(x, dt_s, foff_hz, rates, snr=10.0): + """Peaks of the dedrifted sums of a normalised spectrogram at each rate (Hz/s): (rate, channel, S/N) above SNR times the robust noise.""" + nt, nc = x.shape + out = [] + for r in rates: + s = np.zeros(nc) + for t in range(nt): + s += np.roll(x[t], -int(round(r * t * dt_s / foff_hz))) + med = np.median(s) + z = (s - med) / (1.4826 * np.median(np.abs(s - med)) + 1e-12) + for c in np.nonzero(z > snr)[0]: + out.append((float(r), int(c), float(z[c]))) + return out + + +def shgb_main(record=False, target="gj83.1", line_mhz=SHGB_HI, window_mhz=0.5, rate_max=40.0, rate_step=0.25, snr=10.0, drift_min=8.0, drift_max=37.0): + rates = np.arange(-rate_max, rate_max + rate_step / 2, rate_step) + on_name = target.lower() + cadences = [] + for d in SHGB_DIRS: + scans = shgb_scans(d) + on = [s for s in scans if s[1].lower() == on_name] + if not on: + continue + lo, hi = on[0][0], on[-1][0] + cadences.append([s for s in scans if lo <= s[0] <= hi + 1]) + summary = [] + for cad in cadences: + peaks = {} + for n, target, url in cad: + try: + meta = science.header(url) + foff_hz = meta["foff"] * 1e6 + k = int((line_mhz - meta["fch1"]) / (meta["foff"] * science.COARSE)) + if not 0 <= k < meta["nch"] // science.COARSE: + # a band that does not hold the line: the S-band cadences of 2016-09 and 2017 + print("scan %04d %s: %.0f-%.0f MHz, no coverage of the line" % (n, target, meta["fch1"] + meta["foff"] * meta["nch"], meta["fch1"]), flush=True) + peaks[(n, target)] = None + continue + x, f0 = science.coarse_channel(url, k) + except Exception as exc: + print("scan %04d %s: not read (%s)" % (n, target, repr(exc)[:80]), flush=True) + peaks[(n, target)] = None + continue + f = f0 + meta["foff"] * np.arange(x.shape[1]) + win = np.abs(f - line_mhz) < window_mhz + x = x[:, win].astype(np.float64) + x = x / np.median(x, axis=0) - 1.0 + fw = f[win] + p = shgb_peaks(x, meta["tsamp"], foff_hz, rates, snr) + peaks[(n, target)] = [(r, float(fw[c]), z) for r, c, z in p] + print("scan %04d %s: %d peaks above %g sigma; strongest %s" % (n, target, len(p), snr, sorted(peaks[(n, target)], key=lambda t: -t[2])[:3]), flush=True) + off = [pk for (n, t), v in peaks.items() if t.lower() != on_name and v for pk in v] + left = [] + for (n, t), v in peaks.items(): + if t.lower() != on_name or v is None: + continue + for r, fq, z in v: + if not any(abs(fq - fo) < 0.002 and abs(r - ro) < 1.0 for ro, fo, zo in off): + left.append((n, r, fq, z)) + summary.append(dict(dir=cad[0][2].rsplit("/", 2)[0], scans=[(n, t) for n, t, _ in cad], on_only=left, unread=[(n, t) for (n, t), v in peaks.items() if v is None], + n_on=sum(len(v) for (n, t), v in peaks.items() if t.lower() == on_name and v), n_off=len(off))) + print("cadence %s: %d ON peaks, %d OFF peaks, %d on the target alone %s" % (summary[-1]["dir"], summary[-1]["n_on"], len(off), len(left), left[:10]), flush=True) + cand = [(s["dir"], pk) for s in summary for pk in s["on_only"] if drift_min <= abs(pk[1]) <= drift_max] + print("%d cadences; peaks on %s alone: %d, of them in the candidate's drift range %g-%g Hz/s: %d %s" % ( + len(summary), on_name, sum(len(s["on_only"]) for s in summary), drift_min, drift_max, len(cand), cand)) + if record: + core.record_run("shgb02_14a", "The 2004 SETI@home candidate SHGb02+14a", "Breakthrough Listen open data, GBT L band, GJ 83.1 cadences of 2016-2017", + "%d cadences, %d scans" % (len(summary), sum(len(s["scans"]) for s in summary)), os.path.abspath(__file__), "shgb", len(summary), "cadences", + dict(line_mhz=line_mhz, window_mhz=window_mhz, rates_hz_s=[-rate_max, rate_max], step=rate_step, snr=snr, drift_hz_s=[drift_min, drift_max]), + "the OFF scans of each cadence, dedrifted the same way", + "a tone within %g MHz of %.1f MHz drifting %g-%g Hz/s on TZ Arietis and not off it" % (window_mhz, line_mhz, drift_min, drift_max), + "%d peaks on the target alone, %d in the candidate's drift range" % (sum(len(s["on_only"]) for s in summary), len(cand)), + [dict(target="bl:GJ83.1:%s" % s["dir"].rsplit("/", 1)[-1], stat=len(s["on_only"]), unit="peaks on the target alone", + vet=None if any(drift_min <= abs(pk[1]) <= drift_max for pk in s["on_only"]) else "not-measured" if not s["n_on"] and not s["n_off"] else "off-source", + note="scans %s; unread %s; ON-only peaks %s" % (s["scans"], s["unread"], s["on_only"][:10])) for s in summary]) + print("recorded") + + +APPROACHES = { + "shgb": (lambda: core.run_cli(shgb_main), shgb_DOC), + "highdrift": (highdrift_cli, highdrift_DOC), + "soi": (soi_cli, soi_DOC), + "pulses": (pulses_cli, pulses_DOC), + "frames": (frames_cli, frames_DOC), + "curved": (curved_cli, curved_DOC), + "curved_batch": (curved_batch_cli, curved_batch_DOC), + "offs": (offs_cli, offs_DOC), + "followup": (followup_cli, followup_DOC), + "combs": (combs_cli, combs_DOC), + "hops": (hops_cli, hops_DOC), +} + + diff --git a/setitools/catalogues.py b/setitools/catalogues.py new file mode 100644 index 0000000000000000000000000000000000000000..f8c023889a5a94a2a4a8f4ca511bbe51352c7f4c --- /dev/null +++ b/setitools/catalogues.py @@ -0,0 +1,113 @@ +"""Readers of the catalogues that several approaches share, each answering rows as dicts, with the epochs of their positions and the moved-position null.""" +import math +import re + +from setitools import core + +# the epoch of each CDS catalogue's positions, to which a star's proper motion carries it before a cross-match +EPOCH = {"I/355/gaiadr3": 2016.0, "II/246/out": 2000.0, "II/328/allwise": 2010.5, "II/335/galex_ais": 2007.0, "J/A+A/682/A34/erass1-m": 2020.0, + "J/ApJS/255/30/comp": 2019.0, "VIII/65/nvss": 1995.0, "II/125/main": 1983.5} + +GCNS = "external.gaiaedr3_gcns_main_1" +WD_CATALOGUE = '"J/MNRAS/508/3877/maincat"' +FRB_CATALOGUE = '"J/ApJS/257/59/table2"' +PSR_CATALOGUE = '"B/psr/psr"' +TY_CATALOGUE = ('"J/ApJS/253/7/plx"', '"J/ApJS/253/7/table11"') + + +def carried(ra, dec, pmra, pmdec, years): + """A position (deg) carried YEARS forward by proper motions in mas/yr (pmra with cos dec).""" + return ra + pmra / 3.6e6 * years / max(math.cos(math.radians(dec)), 1e-9), dec + pmdec / 3.6e6 * years + + +def gcns(columns, where="gcns_prob > 0.9", ranges=0, maxrec=400000, timeout=600): + """Gaia Catalogue of Nearby Stars rows: COLUMNS of the sources meeting WHERE, read in RANGES source_id ranges when the selection is too large for one statement.""" + if ranges: + return core.gaia_by_range("SELECT %s FROM %s WHERE source_id BETWEEN {lo} AND {hi} AND %s" % (columns, GCNS, where), n=ranges, maxrec=maxrec) + return core.tap("gaia", "SELECT %s FROM %s WHERE %s" % (columns, GCNS, where), maxrec=maxrec, timeout=timeout) + + +def white_dwarfs(columns="WDJname, RA_ICRS, DE_ICRS, pmRA, pmDE, Plx, TeffH", plx_min=10.0, pwd=0.75, teff_max=None, where=None, timeout=600): + """Gentile Fusillo et al. (2021) white dwarfs beyond PLX_MIN mas at white-dwarf probability above PWD, below TEFF_MAX in the hydrogen model, meeting WHERE.""" + q = "SELECT %s FROM %s WHERE Plx > %g AND Pwd > %g" % (columns, WD_CATALOGUE, plx_min, pwd) + if teff_max is not None: + q += " AND TeffH < %g" % teff_max + if where: + q += " AND " + where + return core.tap("vizier", q, timeout=timeout) + + +def white_dwarf_positions(epoch, teff_max=None, plx_min=10.0, pwd=0.75): + """White dwarfs as cross-match positions (name, ra, dec) carried from 2016.0 to EPOCH, with each row's TeffH and Plx.""" + out = [] + for w in white_dwarfs(plx_min=plx_min, pwd=pwd, teff_max=teff_max): + ra, de = carried(float(w["RA_ICRS"]), float(w["DE_ICRS"]), core.num(w["pmRA"]) or 0.0, core.num(w["pmDE"]) or 0.0, epoch - 2016.0) + out.append(dict(name=w["WDJname"].strip(), ra=ra, dec=de, teff=core.num(w["TeffH"]), plx=core.num(w["Plx"]))) + return out + + +def frb_catalog1(columns="Name, RpName, RAJ2000, DEJ2000, DMfitb, e_DMfitb, MJDinf, MJD400", one_per_burst=True, one_per_source=False, timeout=300): + """CHIME/FRB Catalog 1 rows: COLUMNS, one row per burst (the table lists sub-bursts as rows of their own) and, if asked, one per source, the first burst of each repeater.""" + rows = core.tap("vizier", "SELECT %s FROM %s" % (columns, FRB_CATALOGUE), timeout=timeout) + if one_per_burst or one_per_source: + out = {} + for r in rows: + key = (r.get("RpName") or "").strip() if one_per_source and (r.get("RpName") or "").strip() not in ("", "-") else r["Name"] + out.setdefault(key, r) + rows = list(out.values()) + return rows + + +def pulsars(columns="PSRJ, RAJ2000, DEJ2000, P0, P1, e_P1, P1I, DM, Dist, Assoc, Binary, PB, BINCOMP", where=None, timeout=300): + """ATNF pulsar catalogue rows (VizieR B/psr): COLUMNS of the pulsars meeting WHERE.""" + q = "SELECT %s FROM %s" % (columns, PSR_CATALOGUE) + if where: + q += " WHERE " + where + return core.tap("vizier", q, timeout=timeout) + + +def pulsar_isolated(r): + """A pulsar with no binary companion in the catalogue.""" + return not (r.get("Binary") or "").strip() and not (r.get("PB") or "").strip() + + +def pulsar_in_field(r): + """A pulsar outside globular clusters and other galaxies by the catalogue's association.""" + a = r.get("Assoc") or "" + return "GC:" not in a and "EXGAL" not in a + + +def cold_dwarfs(epoch=2020.0, types=("T", "Y")): + """The dwarfs of the Kirkpatrick et al. (2021) 20 pc census with Spitzer astrometry whose infrared type begins with one of TYPES: name, type, temperature and position carried to EPOCH by the census's proper motion.""" + sp = {} + for r in core.tap("vizier", "SELECT FName, SpTIR, Teff FROM %s" % TY_CATALOGUE[1]): + m = re.search(r"J\d{6}\.\d{2}[+-]\d{6}\.\d", r["FName"]) + if m: + sp[m.group(0)] = r + out = [] + for r in core.tap("vizier", "SELECT FName, RA_ICRS, DE_ICRS, MJD, plx, pmRA, pmDE FROM %s" % TY_CATALOGUE[0]): + m = re.search(r"J\d{6}\.\d{2}[+-]\d{6}\.\d", r["FName"]) + s = sp.get(m.group(0)) if m else None + if s is None or str(s["SpTIR"]).strip()[:1] not in types or core.num(r["RA_ICRS"]) is None or core.num(r["MJD"]) is None: + continue + years = epoch - (2000.0 + (float(r["MJD"]) - 51544.5) / 365.25) + ra, de = carried(float(r["RA_ICRS"]), float(r["DE_ICRS"]), core.num(r["pmRA"]) or 0.0, core.num(r["pmDE"]) or 0.0, years) + out.append(dict(name=r["FName"].strip(), ra=ra, dec=de, plx=core.num(r["plx"]), sptype=(s or {}).get("SpTIR"), teff=core.num((s or {}).get("Teff")))) + return out + + +def shifted_matches(pos, cat, radius, shift_arcmin=2.0, keyfn=None): + """CDS XMatch of positions (dicts with name, ra, dec) at their places and moved SHIFT_ARCMIN in eight directions: the matches at their places, and the counts of matched positions when moved, the null of chance alignment.""" + def moved(dra, dde): + up = [] + for p in pos: + ra, de = p["ra"] + dra / max(math.cos(math.radians(p["dec"])), 0.05), p["dec"] + dde + if abs(de) > 90: + ra, de = ra + 180, math.copysign(180, de) - de + up.append(dict(source_id=p["name"], ra=ra % 360, dec=de)) + return core.xmatch(up, cat, radius) + d = shift_arcmin / 60.0 + at = moved(0, 0) + null = [len({m["source_id"] for m in moved(x, y) if keyfn is None or keyfn(m)}) + for x, y in ((d, 0), (-d, 0), (0, d), (0, -d), (d, d), (-d, d), (d, -d), (-d, -d))] + return [m for m in at if keyfn is None or keyfn(m)], null diff --git a/setitools/composition.py b/setitools/composition.py new file mode 100644 index 0000000000000000000000000000000000000000..ce638a79b6c3f89648370ef45f009382eaf08596 --- /dev/null +++ b/setitools/composition.py @@ -0,0 +1,3056 @@ +"""Composition and spectral-modulation anomalies: elements without stable isotopes, periodic modulation, industrial gases.""" +import argparse +import csv +import glob +import io +import json +import math +import os +import re +import sys +import urllib.parse +import zlib + +import numpy as np + +from setitools import core, science +from setitools.core import quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------- + +elements_DOC = r"""Tc, Pm, Pa, Pu, Am and Cm lines in stacked HARPS, UVES, FEROS and ESPRESSO spectra of nearby sun-like stars, fitted against twin stacks and random-wavelength nulls. + + python -I seti.py composition elements census + python -I seti.py composition elements harps_sample + python -I seti.py composition elements fetch HARPS|UVES|FEROS|ESPRESSO [--max-stars 120] + python -I seti.py composition elements search HARPS|UVES|FEROS|ESPRESSO [ELEMENT ...] [--inject STAR EW_mA] [--restack] + python -I seti.py composition elements check HARPS|UVES|FEROS|ESPRESSO + python -I seti.py composition elements record""" + +elements_C = 299792.458 +elements_ROOT = core.data("tc_eso") +elements_GRID = np.round(np.arange(4100.0, 5600.0, 0.01), 2) +elements_RES = {"HARPS": 115000.0, "UVES": 45000.0, "FEROS": 48000.0, "ESPRESSO": 140000.0} +elements_SITE_NAME = {"HARPS": "LaSilla", "FEROS": "LaSilla", "UVES": "Paranal", "ESPRESSO": "Paranal"} +elements_BALMER = (4101.73, 4340.46, 4861.33) +elements_NAMES = {"Tc": "technetium", "Pm": "promethium", "Pa": "protactinium", "Pu": "plutonium", "Am": "americium", + "Cm": "curium"} +elements_P_LIMIT = 0.001 +# (air wavelength A, log gf, lower level cm^-1): Tc I from Palmeri et al. 2005, Pm II from Fivet et al. 2007 +elements_LINES = { + "Pm": [(4137.95, 0.30, 2950.31), (4157.86, 0.36, 1983.52), (4186.03, 0.32, 1133.45), (4297.78, 0.08, 0.00), + (4325.92, -0.54, 4000.15), (4332.05, -0.58, 2950.31), (4340.53, -0.37, 1983.52), (4342.12, -0.90, 1133.45), + (4381.88, -0.71, 446.45), (4432.51, -0.70, 1602.97), (4525.20, -0.73, 5017.77), (4615.87, -0.76, 1602.97), + (4651.93, -0.67, 2666.76), (5546.08, -0.26, 6131.47), (5556.88, -0.03, 9119.34), (5558.39, -0.94, 8041.72), + (5561.73, -0.04, 7040.66), (5576.02, -0.17, 5332.36)], + "Tc": [(4238.19, -0.575, 0.0), (4262.27, -0.377, 0.0), (4297.06, -0.237, 0.0)], +} +# short-lived actinides, singly ionised at 5800 K; NIST arc intensities stand in for gf, lower levels taken as ground +elements_LINES.update({ + "Pa": [(4217.23, 0.0, 0.0), (4248.08, 0.0, 0.0), (4176.18, -0.52, 0.0), (4291.34, -0.52, 0.0), (4601.43, -0.52, 0.0)], + "Pu": [(lam, 0.0, 0.0) for lam in (4105.95, 4129.93, 4141.20, 4159.39, 4178.28, 4189.90, 4190.06, 4196.20, 4229.77, + 4254.76, 4273.34, 4289.08, 4337.18, 4352.71, 4379.91, 4385.35, 4393.93, 4441.65, + 4468.54, 4472.79, 4493.78, 4504.91, 4536.15)], + "Am": [(4509.45, -0.30, 0.0), (4575.59, -0.30, 0.0), (4324.57, -0.70, 0.0), (4441.36, -0.70, 0.0), + (4699.70, -0.70, 0.0), (4872.22, -0.70, 0.0), (4188.12, -1.00, 0.0), (4593.31, -1.00, 0.0), + (5020.96, -1.00, 0.0)], + "Cm": [(4207.66, 0.0, 0.0)], +}) + + +def elements_line_set(element, teff=5800.0): + kt = 0.69504 * teff + rows = [(lam, (lam / 4500.0) ** 2 * 10 ** gf * np.exp(-e / kt)) for lam, gf, e in elements_LINES[element]] + rows = [(lam, w) for lam, w in rows if all(abs(lam - b) > 3.0 for b in elements_BALMER)] + top = max(w for _, w in rows) + return [(lam, w / top) for lam, w in rows if w >= 0.1 * top] + + +def elements_census(): + """UVES, FEROS and ESPRESSO 1D spectra of Gaia DR3 sun-like stars within 50 pc, into elements_census.json.""" + rows = core.gaia("SELECT source_id, ra, dec, parallax, phot_g_mean_mag, bp_rp, radial_velocity FROM " + "gaiadr3.gaia_source WHERE parallax > 20 AND bp_rp BETWEEN 0.62 AND 1.0 AND dec < 30 AND " + "phot_g_mean_mag < 10 AND ruwe < 1.4") + print("%d stars" % len(rows), flush=True) + + def count(r): + q = ("SELECT obs_collection, COUNT(*) AS n FROM ivoa.ObsCore WHERE obs_collection IN ('UVES','FEROS'," + "'ESPRESSO') AND dataproduct_type='spectrum' AND CONTAINS(POINT('ICRS',s_ra,s_dec),CIRCLE('ICRS',%f,%f," + "0.0083))=1 GROUP BY obs_collection" % (float(r["ra"]), float(r["dec"]))) + try: + r["eso"] = {x["obs_collection"]: int(x["n"]) for x in core.tap("eso", q)} + except Exception: + r["eso"] = None + return r + out = core.pmap(count, rows, threads=8) + json.dump(out, open(core.results("elements_census.json"), "w")) + for inst in ("UVES", "FEROS", "ESPRESSO"): + print("%s: %d stars with two or more spectra" + % (inst, sum(1 for r in out if r["eso"] and r["eso"].get(inst, 0) >= 2))) + print("%d stars whose count failed" % sum(1 for r in out if r["eso"] is None)) + + +def elements_harps_sample(): + """HARPS sample: Gaia DR3 sun-like stars within 30 pc with five or more HARPS spectra, into harps_sample.json.""" + rows = core.gaia("SELECT source_id, ra, dec, parallax, phot_g_mean_mag, bp_rp, radial_velocity FROM " + "gaiadr3.gaia_source WHERE parallax > 33.3 AND bp_rp BETWEEN 0.62 AND 1.0 AND dec < 20 AND " + "phot_g_mean_mag < 9 AND ruwe < 1.4") + + def count(r): + q = ("SELECT COUNT(*) AS n FROM ivoa.ObsCore WHERE obs_collection='HARPS' AND dataproduct_type='spectrum' AND " + "CONTAINS(POINT('ICRS',s_ra,s_dec),CIRCLE('ICRS',%f,%f,0.0083))=1" % (float(r["ra"]), float(r["dec"]))) + try: + r["harps"] = int(core.tap("eso", q)[0]["n"]) + except Exception: + r["harps"] = -1 + return r + rows = [r for r in core.pmap(count, rows, threads=8) if r["harps"] >= 5 and r.get("radial_velocity")] + refs = {} + for k in range(0, len(rows), 200): + ids = ",".join("'Gaia DR3 %s'" % r["source_id"] for r in rows[k:k + 200]) + for x in core.simbad("SELECT ident.id, basic.nbref FROM basic JOIN ident ON ident.oidref = basic.oid " + "WHERE ident.id IN (%s)" % ids): + refs[x["id"].split()[-1]] = x["nbref"] + sel = [dict(r, refs=refs[r["source_id"]]) for r in rows + if refs.get(r["source_id"]) is not None and refs[r["source_id"]] < 200] + json.dump(sel, open(core.results("harps_sample.json"), "w")) + print("%d stars" % len(sel)) + + +def elements_fetch(inst, max_stars, threads=4): + """Highest-S/N spectra covering 4220-4310 A of the nearest qualifying stars (one a night for HARPS).""" + if inst == "HARPS": + rows = json.load(open(core.results("harps_sample.json"))) + else: + rows = [r for r in json.load(open(core.results("elements_census.json"))) + if r["eso"] and r["eso"].get(inst, 0) >= 2 and r.get("radial_velocity")] + rows = sorted(rows, key=lambda r: -float(r["parallax"]))[:max_stars] + + def one(r): + d = os.path.join(elements_ROOT, inst, r["source_id"]) + os.makedirs(d, exist_ok=True) + try: + found = sorted(core.eso_spectra(float(r["ra"]), float(r["dec"]), inst, covers=(4.22e-7, 4.31e-7)), + key=lambda x: -float(x["snr"] or 0)) + except Exception: + return 0 + if inst == "HARPS": + nights, first, rest = set(), [], [] + for x in found: + night = int(float(x["t_min"]) - 0.5) + (rest if night in nights else first).append(x) + nights.add(night) + found = (first + rest)[:6] + got = 0 + for x in found[:6 if inst == "HARPS" else 4]: + path = os.path.join(d, x["dp_id"].replace(":", "_") + ".fits") + try: + if os.path.exists(path) or core.eso_download(x["dp_id"], path): + got += 1 + except Exception: + continue + json.dump(dict(rv=float(r["radial_velocity"]), bp_rp=float(r["bp_rp"]), plx=float(r["parallax"]), + g=float(r["phot_g_mean_mag"]), ra=float(r["ra"]), dec=float(r["dec"])), + open(os.path.join(d, "star.json"), "w")) + return got + got = core.pmap(one, rows, threads=threads) + print("%s: %d stars, %d spectra" % (inst, len(rows), sum(got)), flush=True) + + +def elements_baryc(inst, ra, dec, mjd): + """Barycentric correction (km/s) at the instrument's site.""" + return science.barycentric_correction(ra, dec, mjd, elements_SITE_NAME[inst]) + + +def elements_load(inst, path): + """Flux on GRID in air wavelengths, barycentric frame.""" + from astropy.io import fits + with fits.open(path) as h: + H = h[0].header + t = h[1].data + names = [n.upper() for n in t.columns.names] + wname = "WAVE_AIR" if "WAVE_AIR" in names else "WAVE" + ucd = str(h[1].header.get("TUCD%d" % (names.index(wname) + 1), "obs.atmos")) + w = np.asarray(t[t.columns.names[names.index(wname)]][0], float) + f = np.asarray(t[t.columns.names[names.index("FLUX")] if "FLUX" in names else t.columns.names[1]][0], float) + spec = str(H.get("SPECSYS", h[1].header.get("SPECSYS", ""))).upper() + if w.max() < 100: + w = w * 10.0 if w.max() > 10 else w * 1e4 + if "obs.atmos" not in ucd: + w = science.vac_to_air(w) + if not spec.startswith("BARY"): + mjd = float(H.get("MJD-OBS")) + float(H.get("EXPTIME", 0)) / 172800.0 + w = w * (1.0 + elements_baryc(inst, float(H.get("RA")), float(H.get("DEC")), mjd) / elements_C) + f = np.where(f > 0, f, np.nan) + fi = np.interp(elements_GRID, w, f, left=np.nan, right=np.nan) + if inst == "HARPS": + fi[(elements_GRID > 5290.0) & (elements_GRID < 5350.0)] = np.nan + return fi + + +def elements_file_owners(inst): + """{file: star} for files fetched for two stars of a wide pair, assigned to the star nearest the pointing.""" + from astropy.io import fits + files = {} + for p in glob.glob(os.path.join(elements_ROOT, inst, "*", "*.fits")): + files.setdefault(os.path.basename(p), []).append(p) + shared = {f: ps for f, ps in files.items() if len(ps) > 1} + if not shared: + return {} + pos = {} + for s in {os.path.basename(os.path.dirname(p)) for ps in shared.values() for p in ps}: + meta = json.load(open(os.path.join(elements_ROOT, inst, s, "star.json"))) + if "ra" not in meta: + meta.update(core.gaia("SELECT ra, dec FROM gaiadr3.gaia_source WHERE source_id = %s" % s)[0]) + pos[s] = (float(meta["ra"]), float(meta["dec"])) + out = {} + for f, ps in shared.items(): + h = fits.getheader(ps[0]) + ra, dec = float(h["RA"]), float(h["DEC"]) + stars = [os.path.basename(os.path.dirname(p)) for p in ps] + out[f] = min(stars, key=lambda s: ((pos[s][0] - ra) * np.cos(np.radians(dec))) ** 2 + (pos[s][1] - dec) ** 2) + return out + + +def elements_stacks(inst, restack=False): + """{star: (rest-frame stack, n spectra, line velocity, Gaia RV)} from envelope-normalised median stacks; noisy stacks dropped.""" + cache = os.path.join(elements_ROOT, "stacks_%s.npz" % inst) + if os.path.exists(cache) and not restack: + z = np.load(cache) + return {str(n): (z["stacks"][i].astype(float), int(z["nspec"][i]), float(z["v"][i]), float(z["rv"][i])) + for i, n in enumerate(z["names"])} + owner = elements_file_owners(inst) + out = {} + for d in sorted(glob.glob(os.path.join(elements_ROOT, inst, "*"))): + meta = os.path.join(d, "star.json") + if not os.path.exists(meta): + continue + N = [] + for p in sorted(glob.glob(os.path.join(d, "*.fits"))): + if owner.get(os.path.basename(p), os.path.basename(d)) != os.path.basename(d): + continue + try: + f = elements_load(inst, p) + except Exception: + continue + if np.isfinite(f).mean() >= 0.15: + N.append(f / science.envelope(f, block=300, q=92.0, smooth=1)) + if not N: + continue + T = np.nanmedian(np.array(N), axis=0) + seg = T[(elements_GRID > 4150) & (elements_GRID < 4550)] + if np.nanmedian(seg) <= 0 or 1.4826 * np.nanmedian(np.abs(np.diff(seg))) / np.sqrt(2) / np.nanmedian(seg) > 0.1: + continue + v = science.line_velocity(T, elements_GRID) + if np.isfinite(v): + out[os.path.basename(d)] = (science.to_rest(T, elements_GRID, v), len(N), v, + float(json.load(open(meta))["rv"])) + names = sorted(out) + np.savez_compressed(cache, names=np.array(names), stacks=np.array([out[n][0] for n in names], np.float32), + nspec=np.array([out[n][1] for n in names]), v=np.array([out[n][2] for n in names]), + rv=np.array([out[n][3] for n in names])) + return out + + +def elements_twins(T, names, k=6): + """Each star's k most correlated stacks and its highest correlation.""" + out = {} + for n in names: + corr = np.full(len(names), -2.0) + for i, m in enumerate(names): + if m != n: + ok = np.isfinite(T[n]) & np.isfinite(T[m]) + corr[i] = np.corrcoef(T[n][ok], T[m][ok])[0, 1] if ok.sum() > 5000 else -1.0 + out[n] = ([names[i] for i in np.argsort(corr)[::-1][:k]], float(corr.max())) + return out + + +def elements_inject(T, lines, R, ew): + """Stacks with Gaussian absorption lines added, strongest at ew mA, others by weight.""" + out = T.copy() + for lam0, w in lines: + sp = lam0 / R / 2.3548 + out *= 1.0 - w * ew / 1000.0 / (sp * np.sqrt(2 * np.pi)) * np.exp(-0.5 * ((elements_GRID - lam0) / sp) ** 2) + return out + + +def elements_local_flux(T, lam, R): + """Stack flux at a line weighted by the instrumental profile over +-3 sigma.""" + sp = lam / R / 2.3548 + m = np.abs(elements_GRID - lam) < 3 * sp + g = np.exp(-0.5 * ((elements_GRID[m] - lam) / sp) ** 2) + y = T[m] + ok = np.isfinite(y) + return float(np.dot(g[ok], y[ok]) / g[ok].sum()) if ok.mean() > 0.9 else float("nan") + + +def elements_score(z, ew, local, w, null): + """Element score, p and the star's limit (mA in the strongest line).""" + zc, p = science.combined_line_score(z, w, null) + # an injected line shifts z by its equivalent width times the local stack flux + ok = np.isfinite(z) & (z != 0) & np.isfinite(local) + if not np.isfinite(zc) or not ok.any(): + return None + thr = science.combined_line_threshold(w[ok], null, elements_P_LIMIT) + gain = np.sum(w[ok] ** 2 * local[ok] * z[ok] / ew[ok]) / np.sqrt(np.sum(w[ok] ** 2)) + return zc, p, int(ok.sum()), max(zc - thr, 0.0) / gain + + +def elements_search(inst, elements, inject=None, restack=False): + """Each star's score and limit per element against 400 random-wavelength nulls; lines scattering beyond 1.5 times the null are dropped.""" + st = elements_stacks(inst, restack) + names = sorted(st) + T = {n: st[n][0] for n in names} + print("%s: %d stars with usable stacks" % (inst, len(names)), flush=True) + twins = elements_twins(T, names) + sets = {el: elements_line_set(el) for el in elements} + avoid = [lam for ls in elements_LINES.values() for lam, _, _ in ls] + list(elements_BALMER) + R = elements_RES[inst] + meas = [] + for n in ([inject[0]] if inject else names): + tw, r = twins[n] + if r < 0.9: + continue + B = [T[m] for m in tw] + cov = elements_GRID[np.isfinite(T[n])] + lo, hi = cov.min() + 10, cov.max() - 10 + rng = np.random.default_rng(zlib.crc32(n.encode())) + centres = [c for c in rng.uniform(lo, hi, 2000) if all(abs(c - x) > 1.0 for x in avoid)][:400] + null = np.array([science.line_absorption(T[n], B, elements_GRID, c, R)[0] for c in centres]) + null = null[np.isfinite(null)] + row = dict(star=n, r=r, null=null, lines={}) + for el in elements: + x = (inject[1][el] if isinstance(inject[1], dict) else float(inject[1])) if inject else 0.0 + y = elements_inject(T[n], sets[el], R, x) if inject else T[n] + m = [science.line_absorption(y, B, elements_GRID, lam, R) if lo <= lam <= hi else (np.nan, np.nan) + for lam, _ in sets[el]] + row["lines"][el] = (np.array([a for a, _ in m]), np.array([b for _, b in m]), + np.array([elements_local_flux(T[n], lam, R) for lam, _ in sets[el]])) + meas.append(row) + null_sd = float(np.median([np.std(row["null"]) for row in meas])) if meas else np.nan + stable = {} + for el in elements: + if inject: + stable[el] = np.array(json.load(open(core.results("element_%s_%s.json" % (el, inst))))["stable"]) + continue + keep = [] + for i in range(len(sets[el])): + zi = np.array([row["lines"][el][0][i] for row in meas]) + zi = zi[np.isfinite(zi)] + keep.append(len(zi) < 10 or 1.4826 * np.median(np.abs(zi - np.median(zi))) <= 1.5 * null_sd) + stable[el] = np.array(keep) + out = {el: [] for el in elements} + for row in meas: + for el in elements: + z, ew, local = row["lines"][el] + w = np.array([x for _, x in sets[el]]) + s = elements_score(np.where(stable[el], z, np.nan), ew, local, w, row["null"]) + if s is None: + continue + n = row["star"] + out[el].append(dict(star=n, z=[round(float(x), 2) if np.isfinite(x) else None for x in z], + ew_ma=[round(float(x), 2) if np.isfinite(x) else None for x in ew], + z_comb=round(s[0], 2), p=s[1], n_lines=s[2], n_spectra=st[n][1], twin_r=round(row["r"], 4), + null_sd=round(float(np.std(row["null"])), 2), v=round(st[n][2], 2), + rv_gaia=round(st[n][3], 2), ew_limit_ma=round(s[3], 3))) + if inject: + return out + # a low-p star is vetted for absorption shared by three or more stars and for features wider than an unresolved line + step = elements_GRID[1] - elements_GRID[0] + for el in elements: + w = np.array([x for _, x in sets[el]]) + for r in out[el]: + if r["p"] >= 0.01: + continue + i = min((w[j] * r["z"][j], j) for j in range(len(w)) if r["z"][j] is not None and stable[el][j])[1] + lam = sets[el][i][0] + r["dominant"], r["shared"] = lam, sum(1 for o in out[el] if o is not r and o["z"][i] is not None + and o["z"][i] <= 0.5 * r["z"][i]) + res = science.line_absorption(T[r["star"]], [T[m] for m in twins[r["star"]][0]], elements_GRID, lam, R, + residual=True)[2] + r["width"] = (round(science.width_ratio(-res, len(res) // 2, lam / R / 2.3548 / step), 2) + if res is not None else None) + if r["shared"] >= 3: + r["vet"] = "absorption at %.2f A shared by %d other stars" % (lam, r["shared"]) + elif r["width"] and r["width"] > 1.6: + r["vet"] = "absorption at %.2f A %.1f times as wide as an unresolved line" % (lam, r["width"]) + for el in elements: + res = sorted(out[el], key=lambda x: x["p"]) + json.dump(dict(lines=sets[el], stable=[bool(k) for k in stable[el]], results=res), + open(core.results("element_%s_%s.json" % (el, inst)), "w")) + pv = np.array([x["p"] for x in res]) + print("%s %s: %d stars; %d below p 0.01 (%.1f expected); median limit %.2f mA in the strongest line; lines left " + "out %s; lowest:" % (el, inst, len(res), int((pv < 0.01).sum()), 0.01 * len(res), + np.median([x["ew_limit_ma"] for x in res]), + [lam for (lam, _), k in zip(sets[el], stable[el]) if not k]), flush=True) + for x in res[:3]: + print(" Gaia DR3 %s z %s combined %+.2f p %.5f (%d lines, %d spectra, twin r %.4f)%s" + % (x["star"], x["z"], x["z_comb"], x["p"], x["n_lines"], x["n_spectra"], x["twin_r"], + "; " + x["vet"] if x.get("vet") else "")) + for i, (lam, _) in enumerate(sets[el]): + zi = np.array([x["z"][i] for x in res if x["z"][i] is not None]) + if len(zi): + print(" line %.2f: %d stars, z median %+.2f, robust sd %.2f (null sd median %.2f)%s" + % (lam, len(zi), np.median(zi), 1.4826 * np.median(np.abs(zi - np.median(zi))), null_sd, + "" if stable[el][i] else ", left out")) + + +def elements_check(inst, n=12): + """Recovery p of lines injected at each star's limit into n stacks, into element_check_.json.""" + res = {el: {r["star"]: r for r in json.load(open(core.results("element_%s_%s.json" % (el, inst))))["results"]} + for el in elements_NAMES} + stars = sorted(set.intersection(*[set(v) for v in res.values()])) + rows = [] + for star in [stars[i] for i in np.linspace(0, len(stars) - 1, min(n, len(stars))).astype(int)]: + got = elements_search(inst, list(elements_NAMES), inject=(star, {el: res[el][star]["ew_limit_ma"] + for el in elements_NAMES})) + for el, r in got.items(): + if r: + rows.append(dict(star=star, element=el, ew_ma=res[el][star]["ew_limit_ma"], p=r[0]["p"], + z_comb=r[0]["z_comb"])) + print("%s %s %s: %.3f mA injected, p %.5f" % (inst, star, el, rows[-1]["ew_ma"], rows[-1]["p"]), + flush=True) + json.dump(rows, open(core.results("element_check_%s.json" % inst), "w")) + p = np.array([r["p"] for r in rows]) + print("%s: %d injections at the limit, p median %.4f, 10-90 per cent %.4f-%.4f" + % (inst, len(p), np.median(p), *np.percentile(p, [10, 90]))) + + +elements_APPROACH = {"Tc": "Technetium", "Pm": "Promethium (Pm II)", "Pa": "Short-lived actinides (Pa II)", + "Pu": "Short-lived actinides (Pu II)", "Am": "Short-lived actinides (Am II)", + "Cm": "Short-lived actinides (Cm II)"} +elements_LEDGER = {"Tc": "Technetium", "Pm": "Promethium (Pm II)"} + + +def elements_record(): + """Record each element and instrument run with every star's score and limit.""" + for el, name in elements_NAMES.items(): + for inst in elements_RES: + path = core.results("element_%s_%s.json" % (el, inst)) + if not os.path.exists(path): + continue + d = json.load(open(path)) + res = d["results"] + pv = np.array([r["p"] for r in res]) + lim = np.array([r["ew_limit_ma"] for r in res]) + low = min(res, key=lambda r: r["p"]) + sid = "%s_%s" % (name, inst.lower()) + selection = ("the Gaia DR3 stars within 30 pc with BP-RP 0.62-1.0, G < 9, RUWE < 1.4, declination below " + "+20, five or more HARPS spectra, a Gaia radial velocity and fewer than 200 SIMBAD references; " + "up to six spectra a star, one a night" if inst == "HARPS" else + "the 120 nearest Gaia DR3 stars within 50 pc with BP-RP 0.62-1.0, G < 10, RUWE < 1.4, " + "declination below +30, two or more %s spectra and a Gaia radial velocity; up to four " + "spectra a star covering 4220-4310 A" % inst) + core.record_search( + sid, elements_APPROACH[el], archive="ESO archive, %s" % inst, release="Phase 3 1D spectra", + selection=selection + "; stacks with a comparison stack correlating above 0.9", + code=os.path.abspath(__file__), entry="elements", n_targets=len(res), + params=dict(lines=[lam for lam, _ in d["lines"]], weights=[round(w, 3) for _, w in d["lines"]], + twins=6, core_a=0.25, window_a=8.0, resolution=elements_RES[inst], + null="400 random wavelengths of the same star", p_limit=elements_P_LIMIT), + null_summary="%d stars: %d below p 0.01 (%.1f expected), %d of them explained, %d below p 0.1 (%.1f " + "expected)" % (len(res), int((pv < 0.01).sum()), 0.01 * len(res), + sum(1 for r in res if r.get("vet")), int((pv < 0.1).sum()), + 0.1 * len(res)), + sensitivity="equivalent width of the strongest line at p = %g: median %.2f mA, 10-90 per cent " + "%.2f-%.2f mA" % (elements_P_LIMIT, np.median(lim), *np.percentile(lim, [10, 90])), + ledger=elements_LEDGER.get(el, "(G) Technetium, promethium and short-lived actinides"), + result="lowest p %.4f (Gaia DR3 %s) among %d stars; %d below p 0.01 against %.1f expected" + % (low["p"], low["star"], len(res), int((pv < 0.01).sum()), 0.01 * len(res))) + core.clear_targets(sid) + core.record_targets(sid, [dict(target="gaia_dr3:%s" % r["star"], stat=r["z_comb"], p=r["p"], + upper_limit=r["ew_limit_ma"], + unit="combined line score; limit in mA, equivalent width of the " + "strongest line at p = %g" % elements_P_LIMIT, vet=r.get("vet"), + note="%d lines, %d spectra" % (r["n_lines"], r["n_spectra"])) + for r in res]) + print("recorded %s: %d stars" % (sid, len(res))) + + +def elements_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("census", "harps_sample", "fetch", "search", "check", "record")) + p.add_argument("inst", nargs="?", choices=tuple(elements_RES)) + p.add_argument("elements", nargs="*") + p.add_argument("--inject", nargs=2, metavar=("STAR", "EW_mA")) + p.add_argument("--restack", action="store_true") + p.add_argument("--max-stars", type=int, default=120) + p.add_argument("--threads", type=int, default=4) + a = p.parse_args() + bad = [e for e in a.elements if e not in elements_LINES] + if bad: + p.error("unknown elements %s (choose from %s)" % (bad, ", ".join(elements_LINES))) + if a.mode == "census": + elements_census() + elif a.mode == "harps_sample": + elements_harps_sample() + elif a.mode == "fetch": + elements_fetch(a.inst, a.max_stars, a.threads) + elif a.mode == "search" and a.inject: + got = elements_search(a.inst, a.elements or list(elements_NAMES), (a.inject[0], float(a.inject[1])), a.restack) + for el, r in got.items(): + print("%s %s, %s mA injected into %s: %s" % (el, a.inst, a.inject[1], a.inject[0], r[0] if r else "not measured")) + elif a.mode == "search": + elements_search(a.inst, a.elements or list(elements_NAMES), None, a.restack) + elif a.mode == "check": + elements_check(a.inst) + else: + elements_record() + + +def elements_cli(): + quiet_warnings() + elements_main() + + +# -------------------------------------------------------------------------------------------------------------- + +borra_DOC = r"""Borra and Trottier (2016) 6.07 THz spectral modulation tested in independent LAMOST and DESI spectra and same-plate SDSS controls. + + python -I seti.py composition borra table|fetch|controls|measure|rayleigh|stack|record [--all-pixels]""" + +borra_ROOT = os.environ.get("BORRA_ROOT", core.data("borra")) +borra_HERE = core.RESULTS +borra_PDF = "https://arxiv.org/pdf/1610.03031" +borra_T0 = 1.6465e-13 +borra_C_AS = 2.99792458e18 +borra_SDSS = "https://data.sdss.org/sas/dr17/sdss/spectro/redux/%s/spectra/lite/%04d/spec-%04d-%05d-%04d.fits" +borra_LAMOST_TAP = "https://www.lamost.org/dr10/v2.0/voservice/tap/sync" +borra_LAMOST_FITS = "https://www.lamost.org/dr10/v2.0/spectrum/fits/%s" + + +def borra_table(): + import fitz + os.makedirs(borra_ROOT, exist_ok=True) + path = os.path.join(borra_ROOT, "borra2016.pdf") + if not os.path.exists(path): + open(path, "wb").write(core.get(borra_PDF, timeout=120)) + text = "\n".join(p.get_text() for p in fitz.open(path)) + toks = [t.strip() for t in text[text.index("Stars detected in the SDSS"):].split("\n") if t.strip()] + # two rows print g or SNR with a decimal comma + pat = [r"^\d{3,4}$", r"^\d{1,4}$", r"^5\d{4}$", r"^-?\d+\.\d+$", r"^-?\d+\.\d+$", r"^[OBAFGKM]\d(\.\d)?[IVab]*$", + r"^\d+[.,]\d+$", r"^\d+[.,]\d+$"] + rows, i = [], 0 + while i <= len(toks) - 8: + w = toks[i:i + 8] + if all(re.match(p, x) for p, x in zip(pat, w)): + rows.append(dict(plate=int(w[0]), fiber=int(w[1]), mjd=int(w[2]), ra=float(w[3]), dec=float(w[4]), sp=w[5], + g=float(w[6].replace(",", ".")), snr=float(w[7].replace(",", ".")))) + i += 8 + else: + i += 1 + json.dump(rows, open(os.path.join(borra_ROOT, "table1.json"), "w"), indent=1) + print("%d stars read from Table 1" % len(rows)) + + +def borra_lamost_tap(q): + from astropy.io.votable import parse_single_table + b = core.get(borra_LAMOST_TAP, data=urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", QUERY=q, + FORMAT="votable")).encode(), timeout=120) + t = parse_single_table(io.BytesIO(b)).to_table() + return [dict(zip(t.colnames, [r[c] for c in t.colnames])) for r in t] + + +def borra_fetch(): + stars = json.load(open(os.path.join(borra_ROOT, "table1.json"))) + d = os.path.join(borra_ROOT, "spec") + os.makedirs(d, exist_ok=True) + for k, s in enumerate(stars): + tag = "%04d-%05d-%04d" % (s["plate"], s["mjd"], s["fiber"]) + p = os.path.join(d, "sdss_%s.fits" % tag) + if not os.path.exists(p): + for run in ("26", "103", "104"): + b = core.get(borra_SDSS % (run, s["plate"], s["plate"], s["mjd"], s["fiber"]), timeout=120, retries=2, soft=True) + if b and b.startswith(b"SIMPLE"): + open(p, "wb").write(b) + break + s["lamost"] = [] + try: + rows = borra_lamost_tap("SELECT obsid, snrg, class, subclass FROM public.catalogue WHERE 1 = CONTAINS(POINT('ICRS', " + "ra, dec), CIRCLE('ICRS', %.6f, %.6f, 0.000833))" % (s["ra"], s["dec"])) + except Exception as e: + print("LAMOST query failed for %s: %s" % (tag, str(e)[:120]), flush=True) + rows = [] + for r in rows: + o = str(r["obsid"]) + q = os.path.join(d, "lamost_%s.fits" % o) + if not os.path.exists(q): + b = core.get(borra_LAMOST_FITS % o, timeout=120, retries=2, soft=True) + if b and b[:2] == b"\x1f\x8b": + import gzip + b = gzip.decompress(b) + if b and b.startswith(b"SIMPLE"): + open(q, "wb").write(b) + if os.path.exists(q): + s["lamost"].append(o) + s["desi"] = [] + try: + # Data Lab lacks CONTAINS here: box, then 1.5 arcsec radius + r0 = 1.5 / 3600.0 + dra = r0 / max(np.cos(np.radians(s["dec"])), 1e-3) + rows = core.datalab("SELECT targetid, mean_fiber_ra, mean_fiber_dec FROM desi_dr1.zpix WHERE mean_fiber_ra " + "BETWEEN %.7f AND %.7f AND mean_fiber_dec BETWEEN %.7f AND %.7f AND zcat_primary = 't'" + % (s["ra"] - dra, s["ra"] + dra, s["dec"] - r0, s["dec"] + r0)) + rows = [r for r in rows if np.hypot((float(r["mean_fiber_ra"]) - s["ra"]) * np.cos(np.radians(s["dec"])), + float(r["mean_fiber_dec"]) - s["dec"]) < r0] + except Exception as e: + print("DESI query failed for %s: %s" % (tag, str(e)[:120]), flush=True) + rows = [] + s["desi"] = sorted({str(r["targetid"]) for r in rows}) + if k % 20 == 0: + print("%d of %d stars: SDSS %s, LAMOST %d, DESI %d" % (k + 1, len(stars), os.path.exists(p), len(s["lamost"]), + len(s["desi"])), flush=True) + ids = sorted({t for s in stars for t in s["desi"]}) + if ids: + recs = core.desi_spectra([int(x) for x in ids], include=("targetid", "wavelength", "flux", "ivar")) + for r in recs: + np.savez_compressed(os.path.join(d, "desi_%s.npz" % r["targetid"]), wave=np.asarray(r["wavelength"]), + flux=np.asarray(r["flux"]), ivar=np.asarray(r["ivar"])) + json.dump(stars, open(os.path.join(borra_ROOT, "stars.json"), "w"), indent=1) + print("SDSS %d, LAMOST stars %d (%d spectra), DESI stars %d" % ( + sum(os.path.exists(os.path.join(d, "sdss_%04d-%05d-%04d.fits" % (s["plate"], s["mjd"], s["fiber"]))) for s in stars), + sum(1 for s in stars if s["lamost"]), sum(len(s["lamost"]) for s in stars), sum(1 for s in stars if s["desi"]))) + + +def borra_read(path): + """(vacuum wavelength A, flux, ivar) of an SDSS, LAMOST or saved DESI spectrum.""" + if path.endswith(".npz"): + z = np.load(path) + return z["wave"], z["flux"], z["ivar"] + from astropy.io import fits + with fits.open(path) as h: + if "COADD" in [x.name for x in h]: + c = h["COADD"].data + col = {n.lower(): n for n in c.columns.names} + if "loglam" in col: + return (10 ** np.asarray(c[col["loglam"]], float), np.asarray(c[col["flux"]], float), + np.asarray(c[col["ivar"]], float)) + # LAMOST DR10 v2.0: one row of vector columns in HDU COADD + return (np.asarray(c[col["wavelength"]][0], float), np.asarray(c[col["flux"]][0], float), + np.asarray(c[col["ivar"]][0], float)) + if h[0].data is not None and np.ndim(h[0].data) == 2: + a = np.asarray(h[0].data, float) + return a[2], a[0], a[1] + c = h[1].data + return (np.asarray(c["WAVELENGTH"][0], float), np.asarray(c["FLUX"][0], float), + np.asarray(c["IVAR"][0], float)) + + +def borra_modulation(w, f, iv, t0=borra_T0): + """Fourier modulus at t0 of the equal-frequency spectrum, in robust deviations over 0.7-1.3 t0.""" + from scipy.ndimage import median_filter + ok = np.isfinite(f) & np.isfinite(w) & (iv > 0) + if ok.sum() < 500: + return None + w, f = w[ok], f[ok] + nu = borra_C_AS / w + o = np.argsort(nu) + nu, f = nu[o], f[o] + grid = np.linspace(nu[0], nu[-1], len(nu)) + g = np.interp(grid, nu, f) + g = g - median_filter(g, size=151, mode="nearest") + m = np.abs(np.fft.rfft(g - g.mean())) + t = np.fft.rfftfreq(len(g), grid[1] - grid[0]) + j = int(np.argmin(np.abs(t - t0))) + sel = (t > 0.7 * t0) & (t < 1.3 * t0) & (np.abs(np.arange(len(t)) - j) > 1) + if sel.sum() < 10 or j < 2: + return None + med = np.median(m[sel]) + sd = 1.4826 * np.median(np.abs(m[sel] - med)) + peak = m[max(j - 1, 0):j + 2].max() + # null: the same statistic at times offset by 10 per cent + nulls = [] + for f_ in (0.85, 0.9, 1.1, 1.15): + jj = int(np.argmin(np.abs(t - f_ * t0))) + nulls.append(float((m[max(jj - 1, 0):jj + 2].max() - med) / sd)) + return dict(z=float((peak - med) / sd), null=nulls, bin_s=float(t[1])) + + +def borra_measure(): + stars = json.load(open(os.path.join(borra_ROOT, "stars.json"))) + d = os.path.join(borra_ROOT, "spec") + out = [] + for s in stars: + r = dict(s) + p = os.path.join(d, "sdss_%04d-%05d-%04d.fits" % (s["plate"], s["mjd"], s["fiber"])) + r["sdss"] = borra_modulation(*borra_read(p)) if os.path.exists(p) else None + r["lamost_z"] = [m for m in (borra_modulation(*borra_read(os.path.join(d, "lamost_%s.fits" % o))) for o in s["lamost"]) if m] + r["desi_z"] = [m for m in (borra_modulation(*borra_read(os.path.join(d, "desi_%s.npz" % t))) for t in s["desi"] + if os.path.exists(os.path.join(d, "desi_%s.npz" % t))) if m] + out.append(r) + json.dump(out, open(os.path.join(borra_HERE, "borra_modulation.json"), "w"), indent=1) + for name, key in (("SDSS", "sdss"), ("LAMOST", "lamost_z"), ("DESI", "desi_z")): + ms = [r[key] for r in out if r[key]] if key == "sdss" else [m for r in out for m in r[key]] + if not ms: + print("%s: no spectra" % name) + continue + z = np.array([m["z"] for m in ms]) + nz = np.array([x for m in ms for x in m["null"]]) + print("%s: %d spectra; at t the median statistic is %.2f and %d exceed 3; at the offset times %.2f and %.3f of " + "them exceed 3" % (name, len(z), np.median(z), np.sum(z > 3), np.median(nz), np.mean(nz > 3))) + + +def borra_controls(per_plate=2): + """SDSS spectra of other FGK stars on the same plates, g 16-18.6.""" + stars = json.load(open(os.path.join(borra_ROOT, "table1.json"))) + d = os.path.join(borra_ROOT, "spec") + os.makedirs(d, exist_ok=True) + mine = {(s["plate"], s["mjd"], s["fiber"]) for s in stars} + out = [] + for plate, mjd in sorted({(s["plate"], s["mjd"]) for s in stars}): + q = ("SELECT TOP 12 s.plate, s.mjd, s.fiberid, s.subclass, p.g FROM SpecObj AS s JOIN PhotoObj AS p ON " + "s.bestobjid = p.objid WHERE s.plate = %d AND s.mjd = %d AND s.class = 'STAR' AND (s.subclass LIKE 'F%%' " + "OR s.subclass LIKE 'G%%' OR s.subclass LIKE 'K%%') AND p.g BETWEEN 16 AND 18.6" % (plate, mjd)) + try: + rows = core.sdss_sql(q) + except Exception: + continue + rows = [r for r in rows if (int(r["plate"]), int(r["mjd"]), int(r["fiberid"])) not in mine][:per_plate] + for r in rows: + pl, mj, fi = int(r["plate"]), int(r["mjd"]), int(r["fiberid"]) + p = os.path.join(d, "ctrl_%04d-%05d-%04d.fits" % (pl, mj, fi)) + if not os.path.exists(p): + for run in ("26", "103", "104"): + b = core.get(borra_SDSS % (run, pl, pl, mj, fi), timeout=120, retries=2, soft=True) + if b and b.startswith(b"SIMPLE"): + open(p, "wb").write(b) + break + if os.path.exists(p): + out.append(dict(plate=pl, mjd=mj, fiber=fi, sp=r["subclass"], g=float(r["g"]))) + json.dump(out, open(os.path.join(borra_ROOT, "controls.json"), "w"), indent=1) + print("%d control spectra from %d plates" % (len(out), len({(c["plate"], c["mjd"]) for c in out}))) + + +def borra_stack(): + """Mean normalised Fourier modulus over 1.3-2.0e-13 s per spectrum set, and the time of its maximum.""" + from scipy.ndimage import median_filter + d = os.path.join(borra_ROOT, "spec") + tt = np.arange(1.30e-13, 2.0e-13, 0.0025e-13) + sets = {"SDSS, the list": sorted(borra_glob_files(d, "sdss_")), "SDSS, same-plate controls": sorted(borra_glob_files(d, "ctrl_")), + "LAMOST, the list": sorted(borra_glob_files(d, "lamost_")), "DESI, the list": sorted(borra_glob_files(d, "desi_"))} + res = {} + for name, fs in sets.items(): + acc, n = np.zeros(len(tt)), 0 + for f in fs: + w, fl, iv = borra_read(f) + ok = np.isfinite(fl) & np.isfinite(w) & (iv > 0) + if ok.sum() < 500: + continue + nu = borra_C_AS / w[ok] + o = np.argsort(nu) + nu, g0 = nu[o], fl[ok][o] + grid = np.linspace(nu[0], nu[-1], len(nu)) + g = np.interp(grid, nu, g0) + h = g - median_filter(g, size=151, mode="nearest") + m = np.abs(np.fft.rfft(h - h.mean())) + t = np.fft.rfftfreq(len(h), grid[1] - grid[0]) + m = m / np.median(m[(t > 0.7e-13) & (t < 3e-13)]) + acc += np.interp(tt, t, m) + n += 1 + if not n: + continue + acc /= n + j0 = int(np.argmin(np.abs(tt - borra_T0))) + jm = int(np.argmax(acc)) + res[name] = dict(n=n, t_max=float(tt[jm]), at_max=float(acc[jm]), at_t0=float(acc[j0]), median=float(np.median(acc))) + print("%s: %d spectra; mean modulus peaks at %.4e s (%.2f), %.2f at %.4e s, median %.2f" + % (name, n, tt[jm], acc[jm], acc[j0], borra_T0, np.median(acc))) + json.dump(res, open(os.path.join(borra_HERE, "borra_stack.json"), "w"), indent=1) + + +def borra_rayleigh(w, f, iv, smooth_hz, t0=borra_T0, offsets=(0.8, 0.9, 1.1, 1.2), all_pixels=False): + """Borra and Trottier's statistic: modulus at t0 over the Rayleigh sigma below 5.385e-13 s; None for short spectra.""" + from scipy.ndimage import uniform_filter1d + ok = np.isfinite(f) & np.isfinite(w) & ((iv > 0) | all_pixels) + if ok.sum() < 500: + return None + nu = borra_C_AS / w[ok] + o = np.argsort(nu) + # intensity per unit frequency + nu, g0 = nu[o], (f[ok] * w[ok] ** 2)[o] + grid = np.linspace(nu[0], nu[-1], len(nu)) + g = np.interp(grid, nu, g0) + dnu = grid[1] - grid[0] + h = g - uniform_filter1d(g, size=max(int(round(smooth_hz / dnu)), 3), mode="nearest") + m = np.abs(np.fft.rfft(h)) + t = np.fft.rfftfreq(len(h), dnu) + box = (t > 0) & (t < 5.385e-13) + sigma = np.sqrt(np.sum(m[box] ** 2) / (2.0 * box.sum())) + + def at(tt): + j = int(np.argmin(np.abs(t - tt))) + return float(m[max(j - 1, 1):j + 2].max() / sigma) + return dict(snr=at(t0), null=[at(x * t0) for x in offsets], bin_s=float(t[1])) + + +def borra_rayleigh_main(all_pixels=False): + """Borra and Trottier's statistic at t0 in all sets for 1-32 THz smoothing.""" + d = os.path.join(borra_ROOT, "spec") + sets = {"SDSS, the list": sorted(borra_glob_files(d, "sdss_")), "SDSS, same-plate controls": sorted(borra_glob_files(d, "ctrl_")), + "LAMOST, the list": sorted(borra_glob_files(d, "lamost_")), "DESI, the list": sorted(borra_glob_files(d, "desi_"))} + spectra = {name: [borra_read(f) for f in fs] for name, fs in sets.items()} + res = {} + for sm in (1e12, 2e12, 4e12, 8e12, 16e12, 32e12): + for name, sp in spectra.items(): + rs = [r for r in (borra_rayleigh(*x, smooth_hz=sm, all_pixels=all_pixels) for x in sp) if r] + if not rs: + continue + z = np.array([r["snr"] for r in rs]) + nz = np.array([x for r in rs for x in r["null"]]) + res["%s, %g Hz" % (name, sm)] = dict(n=len(z), above5=int(np.sum(z > 5)), median=float(np.median(z)), + null_above5=float(np.mean(nz > 5)), null_median=float(np.median(nz))) + print("smoothing %.0f THz, %s: %d spectra, SNR at t0 median %.2f, %d above 5 (%.3f); at offset times " + "median %.2f, %.3f above 5" % (sm / 1e12, name, len(z), np.median(z), np.sum(z > 5), np.mean(z > 5), + np.median(nz), np.mean(nz > 5)), flush=True) + json.dump(res, open(os.path.join(borra_HERE, "borra_rayleigh%s.json" % ("_allpix" if all_pixels else "")), "w"), indent=1) + + +def borra_record(smooth_hz=8e12): + """Record the run and each star's SNR at t0.""" + d = os.path.join(borra_ROOT, "spec") + stars = json.load(open(os.path.join(borra_ROOT, "stars.json"))) + rows, z_list, z_null = [], [], [] + for s in stars: + tag = "%04d-%05d-%04d" % (s["plate"], s["mjd"], s["fiber"]) + p = os.path.join(d, "sdss_%s.fits" % tag) + r = borra_rayleigh(*borra_read(p), smooth_hz=smooth_hz) if os.path.exists(p) else None + other = [borra_rayleigh(*borra_read(os.path.join(d, "lamost_%s.fits" % o)), smooth_hz=smooth_hz) for o in s["lamost"]] + other += [borra_rayleigh(*borra_read(os.path.join(d, "desi_%s.npz" % t)), smooth_hz=smooth_hz) for t in s["desi"] + if os.path.exists(os.path.join(d, "desi_%s.npz" % t))] + other = [x for x in other if x] + if r: + z_list.append(r["snr"]) + z_null += r["null"] + rows.append(dict(target="sdss:%s" % tag, stat=r["snr"] if r else None, unit="Fourier modulus at t0 over the " + "Rayleigh sigma (Borra and Trottier's SNR)", + note="%s; LAMOST %d and DESI %d spectra, highest SNR at t0 %s" + % (s["sp"], len(s["lamost"]), len(s["desi"]), + "%.2f" % max(x["snr"] for x in other) if other else "none"))) + ctrl = [borra_rayleigh(*borra_read(f), smooth_hz=smooth_hz) for f in sorted(borra_glob_files(d, "ctrl_"))] + zc = [x["snr"] for x in ctrl if x] + lam = [borra_rayleigh(*borra_read(f), smooth_hz=smooth_hz) for f in sorted(borra_glob_files(d, "lamost_"))] + des = [borra_rayleigh(*borra_read(f), smooth_hz=smooth_hz) for f in sorted(borra_glob_files(d, "desi_"))] + stk = json.load(open(os.path.join(borra_HERE, "borra_stack.json"))) + core.record_search( + "borra_modulation", "Periodic spectral modulation", archive="SDSS DR17 lite spectra, LAMOST DR10 v2.0 " + "low-resolution spectra, DESI DR1 (SPARCL)", release="SDSS DR17, LAMOST DR10 v2.0, DESI DR1", + selection="Borra and Trottier 2016 Table 1 (228 rows); LAMOST within 3 arcsec, DESI within 1.5 arcsec; two F, G " + "or K stars of g 16-18.6 from each plate as controls", + code=os.path.abspath(__file__), entry="borra", n_targets=len(stars), + params=dict(t0_s=borra_T0, smoothing_hz=smooth_hz, rayleigh_box_s=5.385e-13, snr_threshold=5.0, + smoothing_tried_hz=[1e12, 2e12, 4e12, 8e12, 16e12, 32e12]), + null_summary="SNR at 0.8, 0.9, 1.1 and 1.2 t0: median %.2f, %.3f above 5; same-plate controls at t0: median " + "%.2f, %d of %d above 5" % (np.median(z_null), np.mean(np.array(z_null) > 5), np.median(zc), + int(np.sum(np.array(zc) > 5)), len(zc)), + sensitivity="the paper's detection threshold, SNR 5, in the same SDSS spectra", + ledger="Periodic spectral modulation", + result="none of the %d SDSS spectra of the list reaches SNR 5 at t0 (median %.2f; controls %.2f), with a boxcar " + "continuum of 1 to 32 THz; their LAMOST (%d) and DESI (%d) spectra show nothing at t0; the mean modulus of " + "every set peaks at %.2e s" % (len(z_list), np.median(z_list), np.median(zc), sum(1 for x in lam if x), + sum(1 for x in des if x), stk["SDSS, the list"]["t_max"])) + core.clear_targets("borra_modulation") + core.record_targets("borra_modulation", rows) + print("recorded %d stars" % len(rows)) + + +def borra_glob_files(d, prefix): + return [os.path.join(d, f) for f in os.listdir(d) if f.startswith(prefix)] + + +def borra_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("table", "fetch", "controls", "measure", "stack", "rayleigh", "record")) + p.add_argument("--all-pixels", action="store_true") + a = p.parse_args() + if a.mode == "rayleigh": + borra_rayleigh_main(a.all_pixels) + else: + {"table": borra_table, "fetch": borra_fetch, "controls": borra_controls, "measure": borra_measure, "stack": borra_stack, + "record": borra_record}[a.mode]() + + +def borra_cli(): + quiet_warnings() + borra_main() + + +# -------------------------------------------------------------------------------------------------------------- + +gases_DOC = r"""SF6, NF3, CF4, CFC-11 and CFC-12 band depths in K2-18 b's JWST MIRI transmission spectrum (Luque et al. 2025), in scale heights. + + python -I seti.py composition gases""" + +gases_ROOT = os.environ.get("K218B_ROOT", core.data("k218b")) +gases_HERE = core.RESULTS +gases_FILES = ("SPARTA_K2-18b_MIRI_LRS_R70.csv", "exoTEDRF_K2-18b_MIRI_LRS_R70.csv", "Eureka_K2-18b_MIRI_LRS_R70.csv") +gases_GASES = {"SF6": (10.55,), "NF3": (9.69, 11.03), "CF4": (7.82,), "CFC-11": (9.22, 11.81), "CFC-12": (8.68, 9.13, 10.85)} +gases_FWHM = 0.15 +gases_PPM_PER_H = 34.0 + + +def gases_load(name): + rows = list(csv.DictReader(open(os.path.join(gases_ROOT, name)))) + w = np.array([float(r["wavelength"]) for r in rows]) + hw = np.array([float(r["bin_width"]) for r in rows]) + d = np.array([float(r["dppm"]) for r in rows]) + if "dppm_err" in rows[0]: + e = np.array([float(r["dppm_err"]) for r in rows]) + else: + e = 0.5 * (np.array([float(r["dppm_err_neg"]) for r in rows]) + np.array([float(r["dppm_err_pos"]) for r in rows])) + return w, hw, d, e + + +def gases_band(w, hw, centres): + """Gaussian bands averaged over each bin.""" + from scipy.special import erf + s = gases_FWHM / 2.355 + out = np.zeros(len(w)) + for c in centres: + lo, hi = (w - hw - c) / (np.sqrt(2) * s), (w + hw - c) / (np.sqrt(2) * s) + out += 0.5 * (erf(hi) - erf(lo)) * s * np.sqrt(2 * np.pi) / (2 * hw) + return out + + +def gases_main(): + res = [] + for f in gases_FILES: + w, hw, d, e = gases_load(f) + x = (w - 8.5) / 3.5 + for gas, cen in gases_GASES.items(): + if not any(w.min() <= c <= w.max() for c in cen): + continue + A = np.vstack([np.ones_like(x), x, x ** 2, gases_band(w, hw, cen)]).T + W = 1 / e ** 2 + cov = np.linalg.inv(A.T @ (A * W[:, None])) + p = cov @ (A.T @ (W * d)) + chi = float(np.sum(W * (d - A @ p) ** 2)) + res.append(dict(reduction=f.split("_")[0], gas=gas, depth=float(p[3]), err=float(np.sqrt(cov[3, 3])), + chi2=chi, dof=len(d) - 4)) + print("band depth in ppm (positive is absorption) and 3-sigma upper limit in scale heights:") + for gas in gases_GASES: + rs = [r for r in res if r["gas"] == gas] + if not rs: + continue + line = "; ".join("%s %+.0f +- %.0f" % (r["reduction"], r["depth"], r["err"]) for r in rs) + lim = max(max(r["depth"], 0) + 3 * r["err"] for r in rs) / gases_PPM_PER_H + print(" %-7s %s; at most %.1f scale heights" % (gas, line, lim)) + json.dump(res, open(os.path.join(gases_HERE, "k218b_gases.json"), "w"), indent=1) + + +def gases_cli(): + gases_main() + + +# -------------------------------------------------------------------------------------------------------------- + +fission_DOC = r"""Fission-yield humps in GALAH DR4 abundances: Mo, Ru over Zr and Nd, Sm over Ba, La with Eu flat, against neighbours; the mirror pattern as null. + + python -I seti.py composition fission [record] [--neighbours 200] [--snr-min 40] + +The cached table is fetched at S/N 40, so a lower floor needs the cache removed.""" + +fission_ELS = ("sr", "y", "zr", "mo", "ru", "ba", "la", "ce", "nd", "sm", "eu") + + +def fission_main(record=False, neighbours=200, snr_min=40.0): + from scipy.spatial import cKDTree + p = core.data("galah_dr4_ncapture.json") + if not os.path.exists(p): + cols = ", ".join(["sobject_id", "gaiadr3_source_id", "teff", "logg", "fe_h", "snr_px_ccd3"] + + ["%s_fe, e_%s_fe, flag_%s_fe" % (e, e, e) for e in fission_ELS]) + rows = core.tap_async("datacentral", "SELECT %s FROM galah_dr4.mainstartable WHERE flag_sp = 0 AND snr_px_ccd3 > 40 AND " + "flag_mo_fe = 0 AND flag_ru_fe = 0 AND flag_zr_fe = 0 AND flag_nd_fe = 0 AND flag_ba_fe = 0 AND " + "flag_eu_fe = 0" % cols) + json.dump(rows, open(p, "w")) + rows = json.load(open(p)) + + def f(x): + try: + return float(x) + except (TypeError, ValueError): + return np.nan + rows = [r for r in rows if f(r["snr_px_ccd3"]) > snr_min] + X = np.array([[f(r[e + "_fe"]) for e in fission_ELS] for r in rows]) + F = np.array([[f(r["flag_" + e + "_fe"]) for e in fission_ELS] for r in rows]) + P = np.array([[f(r["teff"]) / 1000.0, f(r["logg"]), 2 * f(r["fe_h"])] for r in rows]) + X[(F != 0) | ~np.isfinite(X)] = np.nan + _, nb = cKDTree(P).query(P, k=neighbours + 1) + D = X - np.array([np.nanmedian(X[nb[i][1:]], axis=0) for i in range(len(rows))]) + ix = {e: j for j, e in enumerate(fission_ELS)} + + def mean(es): + return np.nanmean(np.vstack([D[:, ix[e]] for e in es]), axis=0) + A = mean(["mo", "ru"]) - D[:, ix["zr"]] + B = mean(["nd", "sm"]) - mean(["ba", "la"]) + C = D[:, ix["eu"]] - mean(["nd", "sm"]) + + def rob(v): + w = v[np.isfinite(v)] + med = np.median(w) + s = 1.4826 * np.median(np.abs(w - med)) + return (v - med) / s, s + (zA, sA), (zB, sB), (zC, sC) = rob(A), rob(B), rob(C) + Z, Zm = (zA + zB - zC) / np.sqrt(3), (-zA - zB + zC) / np.sqrt(3) + good = np.isfinite(Z) + counts = {t: (int(np.sum(Z[good] > t)), int(np.sum(Zm[good] > t))) for t in (3, 4, 5, 6)} + teff, logg = P[:, 0] * 1000, P[:, 1] + dwarf = (teff > 4800) & (teff < 6500) & (logg > 3.8) + print("%d stars (%d FGK dwarfs); spreads A %.3f, B %.3f, C %.3f dex" % (good.sum(), dwarf.sum(), sA, sB, sC)) + for t, (a, b) in counts.items(): + print(" combined z above %d: fission-like %d, mirror %d" % (t, a, b)) + order = np.argsort(-np.where(good, Z, -99)) + for i in order[:10]: + r = rows[i] + print(" %s Gaia DR3 %s: z %.1f (A %+.1f, B %+.1f, C %+.1f), Teff %.0f, logg %.2f" % (r["sobject_id"], r["gaiadr3_source_id"], + Z[i], zA[i], zB[i], zC[i], teff[i], logg[i])) + if not record: + return + core.record_search( + "fission_galah", "Fission-product abundances", archive="GALAH DR4 mainstartable (Data Central)", + selection="stars with clean Zr, Mo, Ru, Ba, Nd and Eu at S/N above %g" % snr_min, code=os.path.abspath(__file__), entry="fission", + n_targets=int(good.sum()), params=dict(neighbours=neighbours, snr_min=snr_min), + null_summary="the mirror pattern: %s" % ", ".join("z>%d %d" % (t, b) for t, (a, b) in counts.items()), + sensitivity="0.1 dex in the Mo/Ru and Nd/Sm contrasts; diluted by the deep envelopes of giants", + ledger="Fission-product abundances", + result="fission-like patterns rarer than the mirror at every threshold (z above 5: %d against %d); the strongest are " + "single-element outliers in cool giants and M dwarfs; %d FGK dwarfs carry Mo and Ru" % (counts[5][0], counts[5][1], dwarf.sum())) + core.clear_targets("fission_galah") + core.record_targets("fission_galah", [dict(target="gaia_dr3:%s" % rows[i]["gaiadr3_source_id"], stat=float(Z[i]), + unit="combined fission-pattern z", note="Teff %.0f logg %.2f" % (teff[i], logg[i])) + for i in np.nonzero(good)[0] if rows[i]["gaiadr3_source_id"]]) + print("recorded") + + +cno_DOC = r"""CN-processed surfaces on unevolved metal-rich APOGEE dwarfs: [C/N] 5 sigma below the Teff-[Fe/H] locus, vetted for transfer, cluster origin, binarity and the Teff edge. + + python -I seti.py composition cno [record] [--sigma 5] [--ce-max 0.3] [--na-max 0.3] [--rv-scatter-max 1] [--teff-edge 4900] [--vsini-max 15] [--n-control 600]""" + +cno_TAP = "http://tapvizier.cds.unistra.fr/TAPVizieR/tap/sync" + + +def cno_fetch(): + p = core.data("apogee_dr17_dwarfs_cn_k.csv") + if not os.path.exists(p): + q = ('SELECT "APOGEE", "RAJ2000", "DEJ2000", "Teff", "logg", "[Fe/H]", "[C/Fe]", "e_[C/Fe]", "f_[C/Fe]", "[N/Fe]", ' + '"e_[N/Fe]", "f_[N/Fe]", "[Na/Fe]", "f_[Na/Fe]", "[Ce/Fe]", "f_[Ce/Fe]", "s_HRV", "Nvis", "SNR", "Vsini", ' + '"GaiaEDR3", "plx", "Ksmag", "AFlag" FROM "III/286/catalog" WHERE "logg" > 4.2 AND "Teff" > 4800 AND "Teff" < 6500 ' + 'AND "[Fe/H]" > -0.3 AND "SNR" > 70 AND "[C/Fe]" IS NOT NULL AND "[N/Fe]" IS NOT NULL') + u = cno_TAP + "?" + urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", FORMAT="csv", QUERY=q, MAXREC=2000000)) + b = core.get(u, timeout=1800) + open(p, "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + return list(csv.DictReader(open(p, encoding="utf-8"))) + + +def cno_gaia_binary(ids): + """{source_id: (binary, note)} from Gaia DR3 RUWE, non_single_star and RV chi-square p.""" + from astroquery.gaia import Gaia + out = {} + ids = [i for i in dict.fromkeys(ids) if i and i.strip().isdigit()] + for k in range(0, len(ids), 400): + q = ("SELECT source_id, ruwe, non_single_star, rv_chisq_pvalue FROM gaiadr3.gaia_source WHERE source_id IN (%s)" + % ",".join(ids[k:k + 400])) + for r in Gaia.launch_job(q).get_results(): + ruwe = float(r["ruwe"]) if r["ruwe"] is not np.ma.masked else None + nss = int(r["non_single_star"]) if r["non_single_star"] is not np.ma.masked else 0 + pv = float(r["rv_chisq_pvalue"]) if r["rv_chisq_pvalue"] is not np.ma.masked else None + flag = (ruwe is not None and ruwe > 1.4) or nss > 0 or (pv is not None and pv < 0.01) + out[str(r["source_id"])] = (bool(flag), "RUWE %s, NSS %d%s" % ("%.2f" % ruwe if ruwe is not None else "-", nss, + ", RV p %.1e" % pv if pv is not None and pv < 0.01 else "")) + return out + + +def cno_mk_ms(teff): + """Main-sequence M_K at solar metallicity (Pecaut and Mamajek 2013) at Teff.""" + t = [4800, 5000, 5200, 5400, 5600, 5800, 6000, 6200, 6400, 6600] + m = [4.20, 3.95, 3.70, 3.45, 3.25, 3.05, 2.85, 2.65, 2.50, 2.35] + return float(np.interp(teff, t, m)) + + +def cno_main(record=False, sigma=5.0, ce_max=0.3, na_max=0.3, rv_scatter_max=1.0, teff_edge=4900.0, vsini_max=15.0, n_control=600): + from setitools.core import num + rows = cno_fetch() + keep = [] + for r in rows: + c, n, fe, te = num(r["[C/Fe]"]), num(r["[N/Fe]"]), num(r["[Fe/H]"]), num(r["Teff"]) + if None in (c, n, fe, te) or (r["f_[C/Fe]"] or "0").strip() not in ("0", "") or (r["f_[N/Fe]"] or "0").strip() not in ("0", ""): + continue + keep.append(dict(id=r["APOGEE"], ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), teff=te, logg=num(r["logg"]), feh=fe, + cn=c - n, c=c, n=n, e_c=num(r["e_[C/Fe]"]) or 0.05, e_n=num(r["e_[N/Fe]"]) or 0.05, + na=num(r["[Na/Fe]"]), ce=num(r["[Ce/Fe]"]), srv=num(r["s_HRV"]), nvis=num(r["Nvis"]), + vsini=num(r["Vsini"]), gaia=r["GaiaEDR3"], plx=num(r["plx"]), ks=num(r["Ksmag"]))) + T = np.array([k["teff"] for k in keep]) + F = np.array([k["feh"] for k in keep]) + Y = np.array([k["cn"] for k in keep]) + # locus: running median in 100 K Teff and 0.1 dex [Fe/H] cells, smoothed + ti = np.clip(((T - 4800) // 100).astype(int), 0, 16) + fi = np.clip(((F + 0.3) // 0.1).astype(int), 0, 8) + med = np.full((17, 9), np.nan) + for a in range(17): + for b in range(9): + sel = (np.abs(ti - a) <= 1) & (np.abs(fi - b) <= 1) + if sel.sum() >= 30: + med[a, b] = np.median(Y[sel]) + loc = med[ti, fi] + res = Y - loc + ok = np.isfinite(res) + sig = 1.4826 * np.median(np.abs(res[ok] - np.median(res[ok]))) + z = res / sig + print("%d APOGEE DR17 dwarfs fetched, %d with unflagged C and N; [C/N] locus scatter %.3f dex" % (len(rows), len(keep), sig)) + low = [i for i in np.argsort(z) if ok[i] and z[i] < -sigma] + high = [i for i in np.argsort(-z) if ok[i] and z[i] > sigma] + print("below the locus at %g sigma (nitrogen-rich): %d; above it (carbon-rich, the mirror): %d" % (sigma, len(low), len(high))) + out = [] + for i in low: + k = keep[i] + why = [] + if k["ce"] is not None and k["ce"] > ce_max: + why.append("s-process [Ce/Fe] %+.2f" % k["ce"]) + if k["na"] is not None and k["na"] > na_max: + why.append("[Na/Fe] %+.2f" % k["na"]) + if k["srv"] is not None and k["nvis"] and k["nvis"] > 1 and k["srv"] > rv_scatter_max: + why.append("RV scatter %.1f km/s" % k["srv"]) + if k["teff"] < teff_edge: + why.append("Teff edge") + if k["vsini"] and k["vsini"] > vsini_max: + why.append("vsini %.0f" % k["vsini"]) + # dwarfs lie within 1 mag of the main sequence in M_K + mk = k["ks"] + 5 * np.log10(k["plx"] / 100.0) if k["plx"] and k["plx"] > 0 and k["ks"] is not None else None + k["mk"] = float(mk) if mk is not None else None + ms = cno_mk_ms(k["teff"]) + if mk is not None and mk < ms - 1.0: + why.append("M_K %.1f, %.1f mag above the main sequence" % (mk, ms - mk)) + out.append(dict(k, z=float(z[i]), locus=float(loc[i]), vet="; ".join(why) or None)) + # candidate binarity against a random draw of the same dwarfs + rng = np.random.default_rng(3) + ctrl = [keep[i] for i in rng.choice(len(keep), size=min(n_control, len(keep)), replace=False)] + gb = cno_gaia_binary([o["gaia"] for o in out] + [k["gaia"] for k in ctrl]) + base = np.mean([gb.get(k["gaia"]) is not None and gb[k["gaia"]][0] for k in ctrl if gb.get(k["gaia"]) is not None]) + for o in out: + b = gb.get(o["gaia"]) + if b is not None and b[0]: + o["vet"] = "; ".join(x for x in (o["vet"], "Gaia binary (%s)" % b[1]) if x) + print("Gaia DR3 binarity (RUWE above 1.4, a non-single-star solution or RV variability at p 0.01): candidates %d of %d, " + "random dwarfs %.0f per cent" % (sum(1 for o in out if gb.get(o["gaia"]) and gb[o["gaia"]][0]), len(out), 100 * base)) + for o in out[:40]: + print(" %s Teff %4.0f logg %.2f [Fe/H] %+.2f [C/N] %+.2f (locus %+.2f, %.1f sigma) [C/Fe] %+.2f [N/Fe] %+.2f; %s" + % (o["id"], o["teff"], o["logg"], o["feh"], o["cn"], o["locus"], o["z"], o["c"], o["n"], o["vet"] or "no natural flag")) + json.dump(dict(n=len(keep), sigma=float(sig), low=out, n_high=len(high)), open(core.results("cno_dwarfs.json"), "w"), indent=1) + if record: + clean = [o for o in out if not o["vet"]] + core.record_search( + "apogee_cno_dwarfs", "CNO-processed unevolved dwarfs", archive="APOGEE DR17 (VizieR III/286)", + selection="%d dwarfs: log g above 4.2, Teff 4800-6500 K, [Fe/H] above -0.3, S/N above 70, unflagged C and N" % len(keep), + code=os.path.abspath(__file__), entry="cno", n_targets=len(keep), + params=dict(sigma_dex=round(float(sig), 3), threshold=-sigma, teff=[4800, 6500], logg=4.2, feh=-0.3, ce_max=ce_max, na_max=na_max, + rv_scatter_max=rv_scatter_max, teff_edge=teff_edge, vsini_max=vsini_max, n_control=n_control), + null_summary="the carbon-rich mirror: %d stars %g sigma above the locus against %d below" % (len(high), sigma, len(out)), + sensitivity="[C/N] %.2f dex below the locus, the nitrogen doubling of an envelope stripped by a few tenths of a solar mass" + % (sigma * sig), + ledger="CNO-processed unevolved dwarfs", + result="%d dwarfs %g sigma nitrogen-rich against %d carbon-rich; %d are Gaia binaries against %.0f per cent of " + "random dwarfs; %d carry s-process, sodium, companion, rotation, evolution or Teff-edge flags, %d none" + % (len(out), sigma, len(high), sum(1 for o in out if o["vet"] and "Gaia binary" in o["vet"]), 100 * base, + len(out) - len(clean), len(clean))) + core.clear_targets("apogee_cno_dwarfs") + core.record_targets("apogee_cno_dwarfs", [dict( + target="2mass:%s" % o["id"].replace("2M", ""), stat=o["z"], unit="sigma below the [C/N] dwarf locus", vet=o["vet"], + note="Teff %.0f, log g %.2f, [Fe/H] %+.2f, [C/N] %+.2f against %+.2f" % (o["teff"], o["logg"], o["feh"], o["cn"], o["locus"])) + for o in out]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- +# lithium: an element old cool dwarfs have burned + +lithium_DOC = r"""Lithium in old cool dwarfs: GALAH DR4 dwarfs below 5300 K (log g above 4.3) with a clean A(Li) above 2.0 and an isochrone age above 6 Gyr, an element such a star has burned, read against their Gaia DR3 speeds (young stars move slowly, old ones fast, and isochrone ages of K dwarfs are loose) and the lithium mass a 0.04 M_sun convective envelope needs to hold it. + +`refit` measures the Li I 6708 A line again in each star's red-arm spectrum: the spectrum's velocity from H-alpha, Fe I 6705.10 and 6710.32 and Ca I 6717.69, then a Gaussian at the doublet's centre on a local linear continuum at each width the star's line may have (the instrument's, that broadened by GALAH's vsini, and the star's own Ca I 6717.69 width), its error the larger of the formal one and the scatter of the same fit at 40 control wavelengths of the star's own spectrum; GALAH's line is confirmed at any width, absent where every width excludes it at 3 sigma, weaker, or unconstrained by the spectrum. Lithium-poor stars of the same selection matched in S/N, read against their rich partners' claimed widths, give the rule's false confirmations, and the same stars with a line of the claimed width injected at the rotational width measure the recovery; each spectrum's velocity against the catalogue's barycentric velocity and correction gives the frame the served spectra are in. + + python -I seti.py composition lithium [refit|record]""" + +lithium_C = 299792.458 +# H-alpha, Fe I 6705.10 and 6710.32 and Ca I 6717.69 (air, A): the spectrum's velocity +lithium_REF = (6562.80, 6705.10, 6710.32, 6717.69) +# the 7Li doublet's gf-weighted centre (6707.761 and 6707.912 A at log gf -0.002 and -0.303) +lithium_LINE = 6707.81 +# the instrumental profile at R 28000 with the doublet's spread (A); the doublet alone spreads its 2:1 components by 0.071 A +lithium_SIGMA = 0.13 +lithium_DOUBLET = 0.071 +# Ca I 6717.69 A: the star's own line width, rotation included +lithium_WIDTH_LINE = 6717.69 +# strong lines of a K dwarf at 6600-6700 A, kept 2 A from the control wavelengths +lithium_AVOID = lithium_REF + (6707.8, 6678.0, 6643.6, 6663.4, 6625.0, 6634.1, 6696.0, 6699.1) + + +def lithium_main(record=False): + import math + num = core.num + rows = core.tap("datacentral", "SELECT sobject_id, gaiadr3_source_id, teff, logg, fe_h, a_li, age FROM galah_dr4.mainstartable " + "WHERE teff < 5300 AND logg > 4.3 AND flag_a_li = 0 AND age > 6", timeout=600) + rich = [r for r in rows if num(r["a_li"]) is not None and float(r["a_li"]) > 2.0 and r["gaiadr3_source_id"]] + g = core.tap_by_ids("gaia", [r["gaiadr3_source_id"] for r in rich], "SELECT source_id, parallax, pmra, pmdec, radial_velocity, ruwe " + "FROM gaiadr3.gaia_source WHERE source_id IN (%s)") + # a 0.04 M_sun envelope, hydrogen mass fraction 0.7: lithium mass (kg) at abundance A + m_env, m_h, m_li = 0.04 * 1.989e30, 1.6735e-27, 7.016 * 1.6605e-27 + out = [] + for r in rich: + x = g.get(r["gaiadr3_source_id"]) + v = None + if x and num(x["parallax"]) and float(x["parallax"]) > 0: + vt = 4.74047 * math.hypot(float(x["pmra"]), float(x["pmdec"])) / float(x["parallax"]) + rv = num(x["radial_velocity"]) + v = math.hypot(vt, rv) if rv is not None else vt + a = float(r["a_li"]) + out.append(dict(gaia=r["gaiadr3_source_id"], sobject=r["sobject_id"], teff=float(r["teff"]), feh=num(r["fe_h"]), a_li=a, + age=float(r["age"]), v=v, ruwe=num(x["ruwe"]) if x else None, + li_kg=10 ** (a - 12) * 0.7 * m_env / m_h * m_li)) + slow = [o for o in out if o["v"] is not None and o["v"] < 20] + fast = sorted([o for o in out if o["v"] is not None and o["v"] > 60], key=lambda o: -o["a_li"]) + top = max(out, key=lambda o: o["a_li"]) if out else None + print("%d old cool dwarfs with a clean A(Li); %d above 2.0, %d of them at young-disc speeds (below 20 km/s), %d at thick-disc speeds " + "(above 60 km/s); the highest A(Li) %.2f needs %.1e kg of lithium in the envelope" % ( + len(rows), len(out), len(slow), len(fast), top["a_li"] if top else 0, top["li_kg"] if top else 0)) + for o in fast: + print(" Gaia DR3 %s: A(Li) %.2f, %.0f K, [Fe/H] %+.2f, age %.1f, %.0f km/s, RUWE %.2f" % ( + o["gaia"], o["a_li"], o["teff"], o["feh"] or 0, o["age"], o["v"], o["ruwe"] or 0)) + json.dump(dict(n=len(rows), rich=out), open(core.results("lithium_old_dwarfs.json"), "w"), indent=1) + if record: + # the refit's verdict on each star's line, when it has run + fit = {} + if os.path.exists(core.results("lithium_refit.json")): + fit = {r["gaiadr3_source_id"]: r for r in json.load(open(core.results("lithium_refit.json")))["rich"] if "verdict" in r} + + def vet(o): + f = fit.get(o["gaia"]) + if f and (f["verdict"] == "absent" or (f["verdict"] == "weaker" and f["a_li_refit"] < 2.0)): + return "artefact" + if f and f["verdict"] == "unconstrained": + return None + codes = [] + if (f and f.get("young")) or (o["v"] is not None and o["v"] < 20): + codes.append("young-star") + if f and f.get("double"): + codes.append("binary") + return "; ".join(codes) or None + + def note(o): + f = fit.get(o["gaia"]) + s = "%.0f K, [Fe/H] %+.2f, isochrone age %.1f Gyr, %s km/s" % (o["teff"], o["feh"] or 0, o["age"], + "%.0f" % o["v"] if o["v"] is not None else "-") + if f: + s += "; Li I 6708 refitted at %.0f +- %.0f mA against GALAH's %.0f: %s" % (f["ew_fit"], f["e"], float(f["ew_li"]), f["verdict"]) + if f["verdict"] == "unconstrained": + s += ", the spectrum (S/N %.0f) too noisy to test the line" % float(f["snr_px_ccd3"] or 0) + elif f.get("young") or f.get("double"): + s += "; %s" % ", ".join(f.get("young", []) + f.get("double", [])) + return s + n_fit = {k: sum(1 for f in fit.values() if f["verdict"] == k) for k in ("confirmed", "weaker", "absent", "unconstrained")} + core.record_search( + "galah_lithium_old_dwarfs", "Lithium in old cool dwarfs", archive="GALAH DR4 (Data Central) catalogue and red-arm spectra; " + "Gaia DR3 gaia_source", release="DR4", + selection="dwarfs below 5300 K, log g above 4.3, clean A(Li), isochrone age above 6 Gyr: %d" % len(rows), + code=os.path.abspath(__file__), entry="lithium", n_targets=len(rows), n_unit="stars", + params=dict(teff_k=5300, logg=4.3, a_li=2.0, age_gyr=6, slow_kms=20, fast_kms=60, envelope_msun=0.04, + line_a=lithium_LINE, sigma_a=lithium_SIGMA, control_wavelengths=40), + null_summary="kinematic ages: stars at young-disc speeds, where the isochrone age misleads; the line refitted in each " + "spectrum against lithium-poor stars of the same S/N and injected lines", + sensitivity="A(Li) above 2.0 at a K dwarf's surface, %.0e kg of lithium in its envelope at the threshold" % ( + 10 ** (2.0 - 12) * 0.7 * m_env / m_h * m_li), + ledger="Lithium in old cool dwarfs", + result="%d above 2.0, %d at young-disc speeds, %d at thick-disc speeds; the highest, A(Li) %.2f, needs %.0e kg of lithium%s" % ( + len(out), len(slow), len(fast), top["a_li"] if top else 0, top["li_kg"] if top else 0, + "; refitted: %d confirmed, %d weaker, %d absent, %d unconstrained" % ( + n_fit["confirmed"], n_fit["weaker"], n_fit["absent"], n_fit["unconstrained"]) if fit else "")) + core.clear_targets("galah_lithium_old_dwarfs") + core.record_targets("galah_lithium_old_dwarfs", [dict( + target="gaia_dr3:%s" % o["gaia"], stat=o["a_li"], unit="A(Li)", vet=vet(o), note=note(o)) for o in out]) + print("recorded") + + +def lithium_spectrum(sobject): + """GALAH DR4 red-arm spectrum: wavelength (air, A) and normalised flux, the star's lines at its observed velocity.""" + from astropy.io import fits + h = fits.open(io.BytesIO(core.galah_spectrum(sobject, "R"))) + H, f = h[0].header, np.asarray(h[0].data, float) + return H["CRVAL1"] + H.get("PC1_1", 1.0) * H.get("CDELT1", 1.0) * (np.arange(len(f)) + 1 - H["CRPIX1"]), f + + +def lithium_velocity(lam, f): + """The velocity (km/s) that puts the reference lines deepest: a 0.5 km/s grid over +-300 km/s, then 0.05 km/s.""" + def depth(v): + return sum(np.interp(c * (1 + v / lithium_C), lam, f) for c in lithium_REF) + v0 = min(np.arange(-300.0, 300.01, 0.5), key=depth) + return float(min(np.arange(v0 - 2.0, v0 + 2.01, 0.05), key=depth)) + + +def lithium_fit(lam, f, centre, sigma=lithium_SIGMA): + """A Gaussian of fixed width at a fixed centre on a linear continuum within 1.5 A: equivalent width and its formal error (mA).""" + from scipy.optimize import least_squares + w = (np.abs(lam - centre) < 1.5) & np.isfinite(f) + x, y = lam[w] - centre, f[w] + if len(y) < 20: + return np.nan, np.nan + + def resid(p): + return (p[0] + p[1] * x) * (1 - p[2] * np.exp(-0.5 * (x / sigma) ** 2)) - y + r = least_squares(resid, [np.percentile(y, 90), 0.0, 0.1]) + s2 = float(np.sum(r.fun ** 2) / max(len(y) - 3, 1)) + try: + e = float(np.sqrt(np.linalg.inv(r.jac.T @ r.jac)[2, 2] * s2)) + except np.linalg.LinAlgError: + e = np.nan + k = np.sqrt(2 * np.pi) * sigma * 1000.0 + return float(r.x[2] * k), e * k + + +def lithium_width(lam, f, centre): + """The star's line width (A): a Gaussian of free width and depth fitted to Ca I 6717.69 at its velocity, which carries the instrument, the star's rotation and its turbulence.""" + from scipy.optimize import least_squares + w = (np.abs(lam - centre) < 1.5) & np.isfinite(f) + x, y = lam[w] - centre, f[w] + if len(y) < 20: + return np.nan + + def resid(p): + return (p[0] + p[1] * x) * (1 - p[2] * np.exp(-0.5 * (x / p[3]) ** 2)) - y + r = least_squares(resid, [np.percentile(y, 90), 0.0, 0.3, 0.13], bounds=([0, -np.inf, 0, 0.06], [np.inf, np.inf, 1, 0.8])) + return float(r.x[3]) if r.x[2] > 0.05 else np.nan + + +def lithium_inject(lam, f, centre, ew_ma, sigma=lithium_SIGMA): + """The spectrum with a line of the given equivalent width and width added at the centre, no deeper than 0.7, wider where the equivalent width demands it, as a saturated line is.""" + sigma = max(sigma, ew_ma / 1000.0 / (np.sqrt(2 * np.pi) * 0.7)) + d = ew_ma / 1000.0 / (np.sqrt(2 * np.pi) * sigma) + return f * (1 - d * np.exp(-0.5 * ((lam - centre) / sigma) ** 2)) + + +def lithium_widths(row, lam, f, s): + """The widths (A) a lithium line of this star may have: the instrument's with the doublet's spread, that broadened by GALAH's vsini (a rotation profile's standard deviation is 0.47 of its half-width), and the star's own Ca I 6717.69 width with the doublet's spread, each within 0.13-0.8 A.""" + out = {"instrument": lithium_SIGMA} + vs = core.num(row.get("vsini")) + if vs is not None and np.isfinite(vs): + out["rotation"] = float(np.clip(np.hypot(lithium_SIGMA, 0.47 * lithium_LINE * vs / lithium_C), lithium_SIGMA, 0.8)) + w = lithium_width(lam, f, lithium_WIDTH_LINE * s) + if np.isfinite(w): + out["calcium"] = float(np.clip(np.hypot(w, lithium_DOUBLET), lithium_SIGMA, 0.8)) + return out + + +def lithium_measure(row, inject=None): + """One spectrum: its velocity, then at each width `lithium_widths` allows the Li line's equivalent width with the larger of its formal error and the robust scatter of the same fit at 40 control wavelengths of the star's own spectrum; with `inject` (mA) the widths recovered from a line of that equivalent width added at the rotational width.""" + try: + lam, f = lithium_spectrum(row["sobject_id"]) + except Exception as ex: + return dict(row, error=repr(ex)[:160]) + v = lithium_velocity(lam, f) + s = 1 + v / lithium_C + rng = np.random.default_rng(int(row["sobject_id"]) % 2 ** 32) + controls = [c for c in rng.uniform(6600.0, 6700.0, 400) if all(abs(c - a) > 2.0 for a in lithium_AVOID)][:40] + widths = lithium_widths(row, lam, f, s) + fits = {} + for name, sg in widths.items(): + ew, ef = lithium_fit(lam, f, lithium_LINE * s, sg) + null = np.array([x for x in (lithium_fit(lam, f, c * s, sg)[0] for c in controls) if np.isfinite(x)]) + en = core.robust_sigma(null) if len(null) >= 10 else np.nan + fits[name] = dict(sigma=sg, ew=ew, e=float(np.nanmax([ef, en])), e_formal=ef, e_null=float(en), + null_median=float(np.median(null)) if len(null) else np.nan) + out = dict(row, v_fit=v, fits=fits) + if inject: + sg = widths.get("rotation", lithium_SIGMA) + fi = lithium_inject(lam, f, lithium_LINE * s, inject, sg) + out["ew_injected"] = float(inject) + out["recovered"] = {k: lithium_fit(lam, fi, lithium_LINE * s, x["sigma"])[0] for k, x in fits.items()} + return out + + +def lithium_verdict(m, ew=None, recovered=False): + """GALAH's line (or `ew`, mA) at each width: confirmed (detected at 3 sigma and at least half the width or within 3 sigma of it), weaker (detected, the width excluded at 3 sigma and under half), absent (not detected, the width excluded at 3 sigma) or unconstrained; the star's verdict is confirmed at any width, else absent at every width, else weaker at any, else unconstrained. With `recovered` the widths measured after injection stand in for the fitted ones.""" + g = float(m["ew_li"]) if ew is None else ew + each = {} + for k, x in m["fits"].items(): + val = m["recovered"][k] if recovered else x["ew"] + if not (np.isfinite(val) and np.isfinite(x["e"])): + continue + excluded = g - val > 3 * x["e"] + if val >= 3 * x["e"]: + each[k] = "confirmed" if val >= 0.5 * g or not excluded else "weaker" + else: + each[k] = "absent" if excluded else "unconstrained" + if not each: + return "unmeasured" + v = set(each.values()) + return ("confirmed" if "confirmed" in v else "absent" if v == {"absent"} else "weaker" if "weaker" in v else "unconstrained") + + +def lithium_young(m): + """Signs of youth in a K dwarf: a young-disc speed (below 20 km/s), rotation that a K dwarf keeps for about its first gigayear (vsini 5 km/s or more, a period under 8 days at 0.8 R_sun), H-alpha filled in by emission (GALAH's residual equivalent width below -0.3 A) or the RVS Ca II triplet activity index above 0.05 nm.""" + why = [] + if m.get("v_gaia") is not None and m["v_gaia"] < 20: + why.append("young-disc speed %.0f km/s" % m["v_gaia"]) + vs = core.num(m.get("vsini")) + if vs is not None and vs >= 5: + why.append("vsini %.0f km/s" % vs) + ha = core.num(m.get("ew_h_alpha")) + if ha is not None and ha < -0.3: + why.append("H-alpha in emission (%.2f A)" % ha) + if m.get("activity") is not None and m["activity"] > 0.05: + why.append("Ca II triplet activity %.2f nm" % m["activity"]) + return why + + +def lithium_double(m): + """Signs of a companion: RUWE above 1.4, Gaia images doubled in more than a tenth of transits, or RVS velocities that vary (chi-square p below 0.01).""" + why = [] + if (m.get("ruwe") or 0) > 1.4: + why.append("RUWE %.1f" % m["ruwe"]) + if (m.get("multi_peak") or 0) > 10: + why.append("double images in %d per cent of transits" % m["multi_peak"]) + if m.get("rv_p") is not None and m["rv_p"] < 0.01: + why.append("velocity varies (p %.1e)" % m["rv_p"]) + return why + + +def lithium_best(m): + """The width at which the line stands highest over its error: (name, equivalent width, error, sigma).""" + k = max(m["fits"], key=lambda k: m["fits"][k]["ew"] / m["fits"][k]["e"] if np.isfinite(m["fits"][k]["ew"] / m["fits"][k]["e"]) else -np.inf) + x = m["fits"][k] + return k, x["ew"], x["e"], x["sigma"] + + +def lithium_refit(): + from concurrent.futures import ThreadPoolExecutor + if not os.path.exists(core.results("lithium_old_dwarfs.json")): + lithium_main() + kin = {o["gaia"]: o for o in json.load(open(core.results("lithium_old_dwarfs.json")))["rich"]} + cols = "sobject_id, gaiadr3_source_id, teff, logg, fe_h, a_li, ew_li, age, snr_px_ccd3, rv_comp_1, v_bary_eff, vsini, nn_li_fe, ew_h_alpha" + rich = core.tap("datacentral", "SELECT %s FROM galah_dr4.mainstartable WHERE teff < 5300 AND logg > 4.3 AND age > 6 " + "AND flag_a_li = 0 AND a_li > 2.0" % cols, timeout=600) + rich = [r for r in rich if r["gaiadr3_source_id"] in kin] + poor = core.tap("datacentral", "SELECT %s FROM galah_dr4.mainstartable WHERE teff < 5300 AND logg > 4.3 AND age > 6 " + "AND flag_sp = 0 AND ew_li < 20" % cols, timeout=600) + # one lithium-poor star of the nearest S/N for each rich one, without replacement + pool = sorted(poor, key=lambda r: float(r["snr_px_ccd3"] or 0)) + snr = np.array([float(r["snr_px_ccd3"] or 0) for r in pool]) + used, controls = set(), [] + for r in sorted(rich, key=lambda r: -float(r["snr_px_ccd3"] or 0)): + for j in np.argsort(np.abs(snr - float(r["snr_px_ccd3"] or 0))): + if j not in used and pool[j]["gaiadr3_source_id"] not in kin: + used.add(j) + controls.append(dict(pool[j], inject_for=r["sobject_id"], inject_ew=float(r["ew_li"]))) + break + print("%d rich stars, %d lithium-poor stars of the selection, %d S/N-matched controls" % (len(rich), len(poor), len(controls)), flush=True) + with ThreadPoolExecutor(6) as ex: + rich_m = list(ex.map(lithium_measure, rich)) + ctrl_m = list(ex.map(lambda r: lithium_measure(r, inject=r["inject_ew"]), controls)) + ok_r = [m for m in rich_m if m.get("fits")] + ok_c = [m for m in ctrl_m if m.get("fits")] + for m in ok_r: + m["verdict"] = lithium_verdict(m) + m["width_name"], m["ew_fit"], m["e"], m["sigma"] = lithium_best(m) + # on the linear part of the curve of growth the abundance moves with the log of the width + m["a_li_refit"] = float(m["a_li"]) + float(np.log10(max(m["ew_fit"], m["e"]) / float(m["ew_li"]))) + k = kin[m["gaiadr3_source_id"]] + m["v_gaia"], m["ruwe"] = k["v"], k["ruwe"] + # what makes a lithium-rich K dwarf young or double: Gaia DR3 image doubling, velocity scatter and the RVS activity index + ids = [m["gaiadr3_source_id"] for m in ok_r] + gx = core.tap_by_ids("gaia", ids, "SELECT source_id, ipd_frac_multi_peak, rv_chisq_pvalue FROM gaiadr3.gaia_source WHERE source_id IN (%s)") + ax = core.tap_by_ids("gaia", ids, "SELECT source_id, activityindex_espcs FROM gaiadr3.astrophysical_parameters WHERE source_id IN (%s)") + for m in ok_r: + x, a = gx.get(m["gaiadr3_source_id"], {}), ax.get(m["gaiadr3_source_id"], {}) + m["multi_peak"], m["rv_p"] = core.num(x.get("ipd_frac_multi_peak")), core.num(x.get("rv_chisq_pvalue")) + m["activity"] = core.num(a.get("activityindex_espcs")) + m["young"] = lithium_young(m) + m["double"] = lithium_double(m) + for m in ok_c: + # a lithium-poor star read against the claimed width of its rich partner: the rule's false confirmations + m["verdict"] = lithium_verdict(m, ew=m["inject_ew"]) + m["verdict_injected"] = lithium_verdict(m, ew=m["inject_ew"], recovered=True) + m["width_name"], m["ew_fit"], m["e"], m["sigma"] = lithium_best(m) + counts = {k: sum(m["verdict"] == k for m in ok_r) for k in ("confirmed", "weaker", "absent", "unconstrained", "unmeasured")} + print("rich: %d refitted of %d: %s" % (len(ok_r), len(rich), counts)) + for name in ("instrument", "rotation", "calcium"): + w = [m["fits"][name]["sigma"] for m in ok_r if name in m["fits"]] + print(" %s widths: %d stars, median %.3f A (5th-95th %.3f-%.3f)" % (name, len(w), np.median(w), *np.percentile(w, [5, 95]))) + c_ew = np.array([m["fits"]["instrument"]["ew"] for m in ok_c]) + c_e = np.array([m["fits"]["instrument"]["e"] for m in ok_c]) + print("controls: %d refitted; at the instrumental width their line reads %.1f mA median (robust scatter %.1f), %d above 3 sigma; " + "errors median %.1f mA; against their rich partners' widths %s" % ( + len(ok_c), np.median(c_ew), core.robust_sigma(c_ew), int(np.sum(c_ew > 3 * c_e)), np.median(c_e), + {k: sum(m["verdict"] == k for m in ok_c) for k in ("confirmed", "weaker", "absent", "unconstrained")})) + rec = np.array([m["recovered"]["rotation"] / m["ew_injected"] for m in ok_c if "rotation" in m.get("recovered", {})]) + print("lines of the partners' widths injected at the rotational width: recovered over injected at that width median %.2f " + "(quartiles %.2f-%.2f); verdicts %s" % (np.median(rec), *np.percentile(rec, [25, 75]), + {k: sum(m["verdict_injected"] == k for m in ok_c) for k in ("confirmed", "weaker", "absent", "unconstrained")})) + # the frame: velocity found against the catalogue's barycentric velocity and the barycentric correction + allm = [m for m in ok_r + ok_c if m.get("rv_comp_1") and m.get("v_bary_eff")] + dv = np.array([m["v_fit"] - float(m["rv_comp_1"]) for m in allm]) + vb = np.array([float(m["v_bary_eff"]) for m in allm]) + good = np.abs(dv + vb * 0.5) < 15 + slope, icpt = np.polyfit(vb[good], dv[good], 1) + print("frame: spectrum velocity minus rv_comp_1 = %.2f %+.3f v_bary_eff over %d spectra (slope -1 for topocentric, 0 for barycentric); " + "residual scatter %.2f km/s" % (icpt, slope, int(good.sum()), core.robust_sigma(dv[good] - (icpt + slope * vb[good])))) + def line(m): + return (" Gaia DR3 %s: GALAH %.0f mA (A(Li) %.2f); refitted %s; %.0f K, S/N %.0f, %s km/s, vsini %.0f, H-alpha EW %.2f, %s" % ( + m["gaiadr3_source_id"], float(m["ew_li"]), float(m["a_li"]), + ", ".join("%.0f +- %.0f mA at %.2f A" % (x["ew"], x["e"], x["sigma"]) for x in m["fits"].values()), + float(m["teff"]), float(m["snr_px_ccd3"] or 0), "%.0f" % m["v_gaia"] if m["v_gaia"] is not None else "-", + core.num(m["vsini"], np.nan), core.num(m["ew_h_alpha"], np.nan), m["verdict"])) + for v in ("confirmed", "weaker", "absent", "unconstrained"): + s = sorted([m for m in ok_r if m["verdict"] == v], key=lambda m: -float(m["ew_li"])) + print("%s (%d), S/N median %.0f, vsini median %.0f:" % (v, len(s), np.median([float(m["snr_px_ccd3"] or 0) for m in s]) if s else 0, + np.nanmedian([core.num(m["vsini"], np.nan) for m in s]) if s else 0)) + for m in s[:10]: + print(line(m)) + fast = sorted([m for m in ok_r if m["v_gaia"] is not None and m["v_gaia"] > 60], key=lambda m: -float(m["ew_li"])) + print("at thick-disc speeds (%d):" % len(fast)) + for m in fast: + print(line(m) + "; %s" % ", ".join(m["young"] + m["double"])) + real = [m for m in ok_r if m["verdict"] in ("confirmed", "weaker")] + left = [m for m in real if not (m["young"] or m["double"])] + print("lines in the spectra (%d): signs of youth in %d, of a companion in %d, neither in %d" % ( + len(real), sum(bool(m["young"]) for m in real), sum(bool(m["double"]) for m in real), len(left))) + for m in left: + print(line(m)) + json.dump(dict(rich=rich_m, controls=ctrl_m, frame=dict(intercept=float(icpt), slope=float(slope), n=int(good.sum()))), + open(core.results("lithium_refit.json"), "w"), indent=1, default=float) + + +def lithium_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + if mode == "refit": + lithium_refit() + else: + lithium_main(record=mode == "record") + + +# -------------------------------------------------------------------------------------------------------------- +# misfit: spectra no stellar model fits + +misfit_DOC = r"""Spectra no stellar model fits: GALAH DR4 dwarfs within 100 pc (parallax above 10 mas, log g above 3.8) at S/N above 100 in the red arm, the 0.5 per cent whose spectral fit has the highest chi-square, light that is not a single star's, each read for a second velocity component, fast rotation, emission in H-alpha, GALAH's own flags and a companion in Gaia DR3 (RUWE, doubled images, velocity scatter, a non-single-star solution). + + python -I seti.py composition misfit [record] [--top 0.005] [--snr 100] [--plx-mas 10] [--logg-min 3.8] [--vsini-kms 20] [--halpha-ew -0.3]""" + +MISFIT_TOP = 0.005 + + +def misfit_main(record=False, top=MISFIT_TOP, snr=100.0, plx_mas=10.0, logg_min=3.8, vsini_kms=20.0, halpha_ew=-0.3): + rows = core.tap("datacentral", "SELECT sobject_id, gaiadr3_source_id, teff, logg, fe_h, chi2_sp, flag_sp, snr_px_ccd3, vsini, rv_comp_1, rv_comp_2, " + "sb2_rv_50, ew_h_alpha, parallax FROM galah_dr4.mainstartable WHERE parallax > %g AND logg > %g AND snr_px_ccd3 > %g" + % (plx_mas, logg_min, snr), timeout=600) + rows = [r for r in rows if core.num(r["chi2_sp"]) is not None] + chi = np.array([float(r["chi2_sp"]) for r in rows]) + cut = float(np.quantile(chi, 1 - top)) + top = sorted([r for r in rows if float(r["chi2_sp"]) >= cut], key=lambda r: -float(r["chi2_sp"])) + g = core.tap_by_ids("gaia", [r["gaiadr3_source_id"] for r in top if r["gaiadr3_source_id"]], + "SELECT source_id, ruwe, ipd_frac_multi_peak, rv_chisq_pvalue, non_single_star FROM gaiadr3.gaia_source WHERE source_id IN (%s)") + out = [] + for r in top: + x = g.get(r["gaiadr3_source_id"], {}) + why = [] + if core.num(r["rv_comp_2"]) is not None or core.num(r["sb2_rv_50"]) is not None: + why.append("second velocity component") + if (core.num(r["vsini"]) or 0) > vsini_kms: + why.append("vsini %.0f km/s" % float(r["vsini"])) + if (core.num(r["ew_h_alpha"]) or 0) < halpha_ew: + why.append("H-alpha in emission (%.2f A)" % float(r["ew_h_alpha"])) + if (core.num(x.get("ruwe")) or 0) > 1.4 or (core.num(x.get("ipd_frac_multi_peak")) or 0) > 10 or (core.num(x.get("non_single_star")) or 0) > 0 \ + or (core.num(x.get("rv_chisq_pvalue")) is not None and core.num(x.get("rv_chisq_pvalue")) < 0.01): + why.append("companion in Gaia (RUWE %s, double images %s%%, NSS %s, RV p %s)" % (x.get("ruwe"), x.get("ipd_frac_multi_peak"), + x.get("non_single_star"), x.get("rv_chisq_pvalue"))) + if int(core.num(r["flag_sp"]) or 0) != 0: + why.append("GALAH flag_sp %d" % int(core.num(r["flag_sp"]))) + out.append(dict(sobject=r["sobject_id"], gaia=r["gaiadr3_source_id"], chi2=float(r["chi2_sp"]), teff=core.num(r["teff"]), logg=core.num(r["logg"]), + snr=core.num(r["snr_px_ccd3"]), d=1000.0 / float(r["parallax"]), why=why)) + left = [o for o in out if not o["why"]] + print("%d GALAH dwarfs within 100 pc at S/N above 100; chi-square median %.2f, the top %.1f per cent above %.2f: %d stars, %d with no " + "binary, rotation, emission, flag or companion" % (len(rows), float(np.median(chi)), 100 * top, cut, len(out), len(left))) + for o in out[:25]: + print(" Gaia DR3 %s: chi2 %.2f, %.0f K, log g %.2f, %.0f pc, S/N %.0f; %s" % (o["gaia"], o["chi2"], o["teff"] or 0, o["logg"] or 0, o["d"], o["snr"] or 0, + "; ".join(o["why"]) or "nothing")) + json.dump(dict(n=len(rows), cut=cut, top=out), open(core.results("misfit_spectra.json"), "w"), indent=1) + if record: + def vet(o): + v = [] + if any(w.startswith(("second", "companion")) for w in o["why"]): + v.append("binary") + if any(w.startswith("vsini") for w in o["why"]): + v.append("rotation") + if any(w.startswith("H-alpha") for w in o["why"]): + v.append("active-star") + return "; ".join(v) or None + core.record_search( + "galah_misfit_spectra", "Spectra no stellar model fits", archive="GALAH DR4 (Data Central); Gaia DR3 gaia_source", release="DR4", + selection="dwarfs within 100 pc at S/N above 100 in the red arm: %d" % len(rows), code=os.path.abspath(__file__), entry="misfit", + n_targets=len(rows), n_unit="stars", params=dict(top=top, snr=snr, plx_mas=plx_mas, logg=logg_min, vsini_kms=vsini_kms, halpha_ew=halpha_ew), + null_summary="the fit's chi-square across the same stars: median %.2f, the top %.1f per cent above %.2f" % (float(np.median(chi)), 100 * top, cut), + sensitivity="a nearby dwarf whose high-S/N spectrum no GALAH model fits and that is not a binary, a fast rotator or an active star", + ledger="Spectra no stellar model fits", + result="%d stars in the top %.1f per cent of chi-square, %d of them with no binary, rotation, emission, flag or companion" % (len(out), 100 * top, len(left))) + core.clear_targets("galah_misfit_spectra") + core.record_targets("galah_misfit_spectra", [dict( + target="gaia_dr3:%s" % o["gaia"], stat=o["chi2"], unit="GALAH spectral-fit chi-square", vet=vet(o), + note="%.0f K, log g %.2f, %.0f pc, S/N %.0f; %s" % (o["teff"] or 0, o["logg"] or 0, o["d"], o["snr"] or 0, "; ".join(o["why"]) or "nothing found")) + for o in out if o["gaia"]]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- +# spectra the surveys could not classify, and abundances and rotation no star should show + + +def gaia_near(ids, plx=10.0): + """{source_id: gaia row} for the ids with a parallax above plx at 10 sigma.""" + g = core.tap_by_ids("gaia", [i for i in ids if i], "SELECT source_id, parallax, parallax_over_error, phot_g_mean_mag, bp_rp, ruwe FROM " + "gaiadr3.gaia_source WHERE source_id IN (%s)") + return {k: v for k, v in g.items() if (core.num(v["parallax"]) or 0) > plx and (core.num(v["parallax_over_error"]) or 0) > 10} + + +sdssunknown_DOC = r"""Nearby stars SDSS could not classify: SDSS DR17 primary spectra (SkyServer SpecObj) classed STAR with a nonzero redshift warning or no subclass at a median S/N above 20, matched to Gaia DR3 within 2 arcsec by CDS XMatch and kept within 100 pc at 10 sigma, each read in SIMBAD for a white dwarf or cataclysmic variable, which SDSS's stellar templates cover sparsely. + + python -I seti.py composition sdssunknown [record] [--snr 20] [--plx-mas 10] [--sigma 10] [--radius-arcsec 2]""" + + +def sdssunknown_main(record=False, snr=20.0, plx_mas=10.0, sigma=10.0, radius_arcsec=2.0): + rows = core.sdss_sql("SELECT specObjID, ra, dec, subClass, zWarning, snMedian FROM SpecObj WHERE class = 'STAR' AND sciencePrimary = 1 AND " + "snMedian > %g AND (zWarning <> 0 OR subClass = '' OR subClass IS NULL)" % snr) + # XMatch reads a numeric id column as a double, so the spectra travel under their row number + up = [dict(source_id="s%d" % k, ra=float(r["ra"]), dec=float(r["dec"])) for k, r in enumerate(rows)] + m = {} + for x in core.xmatch(up, "I/355/gaiadr3", radius_arcsec) if up else []: + plx = core.num(x.get("Plx")) + if plx and plx > plx_mas and plx > sigma * (core.num(x.get("e_Plx")) or 1e9): + m[x["source_id"]] = x + by = {"s%d" % k: r for k, r in enumerate(rows)} + hits = [dict(by[k], gaia=v.get("Source"), plx=core.num(v["Plx"]), g=core.num(v.get("Gmag"))) for k, v in m.items()] + # a subclass is SDSS's own classification and the warning concerns the redshift fit (4 a weak best fit, 16 outlying pixels); white dwarfs, + # which SDSS's templates cover sparsely, take the nearest template of any class + from setitools import neighbourhood + names = neighbourhood.simbad_names([str(h["gaia"]) for h in hits]) + + def vet(h): + t = names.get(str(h["gaia"]), ("-", "-"))[1] + if t.startswith("WD") or t.startswith("CV"): + return "white-dwarf" + return "published-classification" if (h["subClass"] or "").strip() else None + typed = [h for h in hits if (h["subClass"] or "").strip()] + print("%d SDSS stellar spectra at S/N above 20 with a warning or no subclass; within 100 pc: %d, %d of them with a subclass, %d white dwarfs " + "or cataclysmic variables in SIMBAD" % (len(rows), len(hits), len(typed), sum(vet(h) == "white-dwarf" for h in hits))) + for h in sorted(hits, key=lambda h: h["subClass"] or ""): + print(" SDSS %s: subclass %s, warning %s, %.1f mas, G %s; SIMBAD %s (%s)" % (h["specObjID"], h["subClass"] or "none", h["zWarning"], h["plx"], + h["g"], *names.get(str(h["gaia"]), ("-", "-")))) + if record: + core.record_run( + "sdss_unclassified_nearby", "Nearby stars SDSS could not classify", "SDSS DR17 SpecObj (SkyServer); Gaia DR3 by CDS XMatch", + "primary stellar spectra at S/N above 20 with a warning or no subclass: %d" % len(rows), os.path.abspath(__file__), "sdssunknown", len(rows), + "spectra", dict(snr=snr, plx_mas=plx_mas, sigma=sigma, radius_arcsec=radius_arcsec), "the stellar spectra of the same S/N the pipeline classified", "a nearby star whose SDSS spectrum " + "the pipeline could neither fit nor type", "%d within 100 pc, %d of them typed by SDSS, %d white dwarfs or cataclysmic variables in SIMBAD" % ( + len(hits), len(typed), sum(vet(h) == "white-dwarf" for h in hits)), + [dict(target="gaia_dr3:%s" % h["gaia"], vet=vet(h), note="SDSS %s, subclass %s, warning %s, %.1f mas; SIMBAD %s (%s)" % ( + h["specObjID"], h["subClass"] or "none", h["zWarning"], h["plx"], *names.get(str(h["gaia"]), ("-", "-")))) for h in hits], + release="DR17") + print("recorded") + + +lamostunknown_DOC = r"""Nearby stars LAMOST labelled unknown: LAMOST DR10 low-resolution spectra (public.catalogue) of class Unknown with r-band S/N above 50, their Gaia DR3 identifiers kept within 100 pc at 10 sigma. + + python -I seti.py composition lamostunknown [record] [--snr 50] [--plx-mas 10]""" + + +def lamostunknown_main(record=False, snr=50.0, plx_mas=10.0): + cols = list(core.tap("lamost", "SELECT TOP 1 * FROM public.catalogue", fmt="votable")[0]) + gid = next((c for c in cols if "gaia" in c.lower() and "source" in c.lower()), None) + rows = core.tap("lamost", "SELECT obsid, ra, dec, class, subclass, snrr%s FROM public.catalogue WHERE class = 'Unknown' AND snrr > %g" % ( + ", " + gid if gid else "", snr), fmt="votable", timeout=900) + if gid: + near = gaia_near([str(r[gid]) for r in rows], plx_mas) + hits = [dict(r, gaia=str(r[gid])) for r in rows if str(r[gid]) in near] + else: + up = [dict(source_id=str(r["obsid"]), ra=float(r["ra"]), dec=float(r["dec"])) for r in rows] + mm = {x["source_id"]: x for x in core.xmatch(up, "I/355/gaiadr3", 2.0) if (core.num(x.get("Plx")) or 0) > plx_mas} + hits = [dict(r, gaia=mm[str(r["obsid"])].get("Source")) for r in rows if str(r["obsid"]) in mm] + print("%d LAMOST spectra classed Unknown at r-band S/N above 50; within 100 pc: %d %s" % ( + len(rows), len(hits), [(h["obsid"], h["gaia"], h["snrr"]) for h in hits[:15]])) + if record: + core.record_run( + "lamost_unknown_nearby", "Nearby stars LAMOST labelled unknown", "LAMOST DR10 LRS general catalogue; Gaia DR3", + "spectra classed Unknown at r-band S/N above 50: %d" % len(rows), os.path.abspath(__file__), "lamostunknown", len(rows), "spectra", + dict(snrr=snr, plx_mas=plx_mas), "the classed spectra of the same S/N", "a nearby star whose good LAMOST spectrum the pipeline could not type", + "%d within 100 pc" % len(hits), [dict(target="gaia_dr3:%s" % h["gaia"], stat=core.num(h["snrr"]), unit="r-band S/N", + note="LAMOST obsid %s" % h["obsid"]) for h in hits]) + print("recorded") + + +desiunknown_DOC = r"""Bright nearby stars DESI fitted badly: DESI DR1 healpix redshifts (desi_dr1.zpix) of spectral type STAR with a nonzero ZWARN, joined to the Milky Way Survey's Gaia identifiers (desi_dr1.mws), kept within 100 pc at 10 sigma and G below 16. + + python -I seti.py composition desiunknown [record] [--plx-mas 10] [--g-max 16]""" + + +def desiunknown_main(record=False, plx_mas=10.0, g_max=16.0): + rows = core.datalab("SELECT z.targetid, z.zwarn, z.deltachi2, m.source_id, m.rr_spectype FROM desi_dr1.zpix AS z JOIN desi_dr1.mws AS m " + "ON z.targetid = m.targetid WHERE z.spectype = 'STAR' AND z.zwarn > 0 AND m.source_id > 0") + near = gaia_near([str(r["source_id"]) for r in rows], plx_mas) + hits = [dict(r, g=core.num(near[str(r["source_id"])]["phot_g_mean_mag"])) for r in rows if str(r["source_id"]) in near + and (core.num(near[str(r["source_id"])]["phot_g_mean_mag"]) or 99) < g_max] + print("%d DESI stellar spectra with a fit warning and a Gaia identifier; within 100 pc at G below 16: %d %s" % ( + len(rows), len(hits), [(h["targetid"], h["source_id"], h["zwarn"], h["g"]) for h in hits[:15]])) + if record: + core.record_run( + "desi_badfit_nearby", "Bright nearby stars DESI fitted badly", "DESI DR1 (Astro Data Lab) zpix and mws; Gaia DR3", + "stellar spectra with a nonzero ZWARN and a Gaia identifier: %d" % len(rows), os.path.abspath(__file__), "desiunknown", len(rows), + "spectra", dict(plx_mas=plx_mas, g=g_max), "the stellar spectra fitted without a warning", "a bright nearby star whose DESI spectrum no template fits", + "%d within 100 pc at G below 16" % len(hits), [dict(target="gaia_dr3:%s" % h["source_id"], stat=core.num(h["zwarn"]), unit="ZWARN bits", + note="DESI target %s" % h["targetid"]) for h in hits]) + print("recorded") + + +def galah_dwarfs(cols, where): + return core.tap("datacentral", "SELECT sobject_id, gaiadr3_source_id, teff, logg, fe_h, %s FROM galah_dr4.mainstartable WHERE logg > 4 AND " + "flag_sp = 0 AND %s" % (cols, where), timeout=900) + + +zinc_DOC = r"""Zinc far above iron: GALAH DR4 dwarfs (log g above 4, clean fits) with clean zinc at [Fe/H] between -0.3 and +0.3 and [Zn/Fe] above +0.8, the signature of a galvanised alloy, against the scatter of the same stars' [Zn/Fe]. + + python -I seti.py composition zinc [record] [--zn-fe 0.8] [--feh-range -0.3 0.3] [--snr-min 25]""" + + +def zinc_main(record=False, zn_fe=0.8, feh_range=[-0.3, 0.3], snr_min=25.0): + rows = galah_dwarfs("zn_fe, e_zn_fe, snr_px_ccd1", "flag_zn_fe = 0 AND fe_h BETWEEN %g AND %g" % (feh_range[0], feh_range[1])) + z = np.array([float(r["zn_fe"]) for r in rows]) + hits = sorted([r for r in rows if float(r["zn_fe"]) > zn_fe], key=lambda r: -float(r["zn_fe"])) + print("%d clean dwarfs at near-solar metallicity; [Zn/Fe] median %+.2f, robust scatter %.2f; above +0.8: %d %s" % ( + len(rows), float(np.median(z)), core.robust_sigma(z), len(hits), [(r["gaiadr3_source_id"], r["zn_fe"], r["e_zn_fe"]) for r in hits[:10]])) + if record: + core.record_run( + "galah_zinc_excess", "Zinc far above iron", "GALAH DR4 (Data Central)", "clean dwarfs at [Fe/H] -0.3 to +0.3 with clean zinc: %d" % len(rows), + os.path.abspath(__file__), "zinc", len(rows), "stars", dict(zn_fe=zn_fe, feh_range=feh_range, snr_min=snr_min), "the sample's own [Zn/Fe]: median %+.2f, robust scatter %.2f" % ( + float(np.median(z)), core.robust_sigma(z)), "a dwarf with [Zn/Fe] above +0.8 at solar metallicity", "%d above +0.8" % len(hits), + [dict(target="gaia_dr3:%s" % r["gaiadr3_source_id"], stat=float(r["zn_fe"]), unit="[Zn/Fe]", + vet="artefact" if float(r["snr_px_ccd1"] or 0) < snr_min else None, + note="+- %s, %.0f K, blue-arm S/N %.0f, where the zinc lines lie" % (r["e_zn_fe"], float(r["teff"]), float(r["snr_px_ccd1"] or 0))) + for r in hits]) + print("recorded") + + +mined_DOC = r"""Dwarfs that look mined: GALAH DR4 dwarfs (log g above 4, clean fits) with clean silicon and aluminium, [Si/Fe] and [Al/Fe] both below -0.4 at [Fe/H] above -0.3, rock-forming elements gone with iron intact, against the scatter of the same stars' ratios. + + python -I seti.py composition mined [record] [--si-fe -0.4] [--al-fe -0.4] [--feh-min -0.3]""" + + +def mined_main(record=False, si_fe=-0.4, al_fe=-0.4, feh_min=-0.3): + rows = galah_dwarfs("si_fe, al_fe, e_si_fe, e_al_fe", "flag_si_fe = 0 AND flag_al_fe = 0 AND fe_h > %g" % feh_min) + si, al = np.array([float(r["si_fe"]) for r in rows]), np.array([float(r["al_fe"]) for r in rows]) + hits = [r for r in rows if float(r["si_fe"]) < si_fe and float(r["al_fe"]) < al_fe] + print("%d clean dwarfs; [Si/Fe] scatter %.2f, [Al/Fe] scatter %.2f; both below -0.4: %d %s" % ( + len(rows), core.robust_sigma(si), core.robust_sigma(al), len(hits), [(r["gaiadr3_source_id"], r["si_fe"], r["al_fe"]) for r in hits[:10]])) + if record: + core.record_run( + "galah_mined_dwarfs", "Dwarfs that look mined", "GALAH DR4 (Data Central)", "clean dwarfs at [Fe/H] above -0.3 with clean Si and Al: %d" % len(rows), + os.path.abspath(__file__), "mined", len(rows), "stars", dict(si_fe=si_fe, al_fe=al_fe, feh_min=feh_min), "the sample's scatter: [Si/Fe] %.2f, [Al/Fe] %.2f" % ( + core.robust_sigma(si), core.robust_sigma(al)), "a dwarf missing silicon and aluminium with iron intact", "%d with both below -0.4" % len(hits), + [dict(target="gaia_dr3:%s" % r["gaiadr3_source_id"], stat=float(r["si_fe"]), unit="[Si/Fe]", note="[Al/Fe] %s" % r["al_fe"]) for r in hits]) + print("recorded") + + +dibnear_DOC = r"""Interstellar bands within 50 pc: GALAH DR4 stars with parallaxes above 20 mas, their fitted 5780 A diffuse-interstellar-band equivalent widths against the scatter of the same fit across them, where the Local Bubble holds too little gas for the band, and against stars at 0.5-1 kpc, where it shows. + + python -I seti.py composition dibnear [record] [--plx-mas 20] [--sigma 5] [--ew-a 0.02] [--far-plx-mas 1 2]""" + + +def dibnear_main(record=False, plx_mas=20.0, sigma=5.0, ew_a=0.02, far_plx_mas=[1.0, 2.0]): + near = core.tap("datacentral", "SELECT sobject_id, gaiadr3_source_id, parallax, teff, ew_dib5780, sigma_dib5780, rv_dib5780 FROM galah_dr4.mainstartable " + "WHERE parallax > %g AND ew_dib5780 IS NOT NULL" % plx_mas, timeout=900) + far = core.tap("datacentral", "SELECT ew_dib5780 FROM galah_dr4.mainstartable WHERE parallax BETWEEN %g AND %g AND ew_dib5780 IS NOT NULL" + % (far_plx_mas[0], far_plx_mas[1]), timeout=900) + e = np.array([float(r["ew_dib5780"]) for r in near]) + f = np.array([float(r["ew_dib5780"]) for r in far]) + s = core.robust_sigma(e) + hits = sorted([r for r in near if float(r["ew_dib5780"]) > max(sigma * s, ew_a)], key=lambda r: -float(r["ew_dib5780"])) + print("%d stars within 50 pc with a fitted band: median %.4f A, robust scatter %.4f; at 0.5-1 kpc (%d stars) median %.4f; within 50 pc above " + "5 sigma and 20 mA: %d %s" % (len(near), float(np.median(e)), s, len(far), float(np.median(f)) if len(f) else float("nan"), len(hits), + [(r["gaiadr3_source_id"], r["ew_dib5780"], r["parallax"]) for r in hits[:10]])) + if record: + core.record_run( + "galah_dib_within_50pc", "Interstellar bands within 50 pc", "GALAH DR4 (Data Central)", "stars within 50 pc with a fitted 5780 A band: %d" % len(near), + os.path.abspath(__file__), "dibnear", len(near), "stars", dict(plx_mas=plx_mas, sigma=sigma, ew_a=ew_a, far_plx_mas=far_plx_mas), "the fit's scatter within 50 pc (%.4f A) and its " + "median at 0.5-1 kpc (%.4f A)" % (s, float(np.median(f)) if len(f) else float("nan")), "a 5780 A band within 50 pc", + "%d above 5 sigma and 20 mA, %d of them cooler than 4500 K, where the star's own lines fill the band" % ( + len(hits), sum(float(r["teff"] or 0) < 4500 for r in hits)), + [dict(target="gaia_dr3:%s" % r["gaiadr3_source_id"], stat=float(r["ew_dib5780"]), unit="EW, A", + vet="stellar-blend" if float(r["teff"] or 0) < 4500 else None, note="%s mas, %.0f K" % (r["parallax"], float(r["teff"] or 0))) + for r in hits]) + print("recorded") + + +spinbreak_DOC = r"""Stars spinning faster than they hold together: GALAH DR4 dwarfs (log g above 4, clean fits) whose v sin i exceeds the break-up speed sqrt(GM/R), 436.7 km/s (M/R)^1/2 in solar units, with GALAH's mass and the radius from its luminosity and temperature. + + python -I seti.py composition spinbreak [record]""" + + +def spinbreak_main(record=False): + rows = galah_dwarfs("vsini, e_vsini, mass, lbol", "vsini IS NOT NULL AND mass IS NOT NULL AND lbol IS NOT NULL") + out = [] + for r in rows: + R = math.sqrt(float(r["lbol"])) * (5772.0 / float(r["teff"])) ** 2 + vb = 436.7 * math.sqrt(float(r["mass"]) / R) + out.append((float(r["vsini"]) / vb, r, vb)) + out.sort(key=lambda x: -x[0]) + hits = [x for x in out if x[0] > 1] + print("%d dwarfs with v sin i, mass and luminosity; above break-up %d; the fastest fractions %s" % ( + len(out), len(hits), [(x[1]["gaiadr3_source_id"], round(x[0], 3), x[1]["vsini"], round(x[2])) for x in out[:5]])) + if record: + core.record_run( + "galah_breakup_rotation", "Stars spinning faster than they hold together", "GALAH DR4 (Data Central)", + "clean dwarfs with v sin i, mass and luminosity: %d" % len(out), os.path.abspath(__file__), "spinbreak", len(out), "stars", dict(), + "the break-up speed from each star's mass and radius", "a dwarf rotating above break-up", "%d above; the fastest at %.2f of break-up" % ( + len(hits), out[0][0] if out else 0), [dict(target="gaia_dr3:%s" % x[1]["gaiadr3_source_id"], stat=x[0], unit="v sin i over break-up") + for x in hits]) + print("recorded") + + +apogeebad_DOC = r"""Nearby dwarfs APOGEE could not fit: SDSS DR17 APOGEE stars (aspcapStar joined to apogeeStar on SkyServer) with Gaia EDR3 parallaxes above 10 mas, combined S/N above 100, Doppler-fit temperatures of 4000-6500 K and gravities above 4.0, whose ASPCAP flag carries STAR_BAD; a spectrum no stellar model fits at that S/N carries something stars do not. Each is explained by a second set of lines (MULTIPLE_SUSPECT, two or more cross-correlation components, or velocities scattering by 1 km/s), by rotation, by a temperature or gravity outside the calibrated range of the pipeline, or by its SIMBAD type. + + python -I seti.py composition apogeebad [record] [--plx-mas 10] [--snr 100] [--teff 4000 6500] [--logg-min 4] [--vsini-kms 20]""" + +# ASPCAPFLAG bits of DR17 +APOGEE_BITS = {16: "TEFF_BAD", 17: "LOGG_BAD", 18: "VMICRO_BAD", 19: "M_H_BAD", 20: "ALPHA_M_BAD", 23: "STAR_BAD", 24: "CHI2_BAD", 25: "COLORTE_BAD", + 26: "ROTATION_BAD", 27: "SN_BAD", 31: "NO_ASPCAP_RESULT", 33: "NO_GRID", 36: "FERRE_FAIL", 40: "PROBLEM_TARGET", 41: "MULTIPLE_SUSPECT"} + + +def apogeebad_main(record=False, plx_mas=10.0, snr=100.0, teff=[4000.0, 6500.0], logg_min=4.0, vsini_kms=20.0): + rows = core.sdss_sql("SELECT a.apogee_id, s.gaiaedr3_source_id, s.gaiaedr3_parallax, s.snr, s.n_components, s.vscatter, s.nvisits, s.starflag, s.rv_teff, " + "s.rv_logg, s.rv_feh, a.aspcapflag, a.vsini, a.aspcap_chi2 FROM aspcapStar a JOIN apogeeStar s ON a.apstar_id = s.apstar_id " + "WHERE s.gaiaedr3_parallax > %g AND s.snr > %g AND s.rv_teff BETWEEN %g AND %g AND s.rv_logg > %g" % (plx_mas, snr, teff[0], teff[1], logg_min)) + bad = [r for r in rows if int(float(r["aspcapflag"])) >> 23 & 1] + sim = {} + ids = [r["gaiaedr3_source_id"] for r in bad if r["gaiaedr3_source_id"] not in ("", "0", "-1")] + for k in range(0, len(ids), 200): + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % x for x in ids[k:k + 200])): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + out = [] + for r in bad: + f = int(float(r["aspcapflag"])) + bits = [n for b, n in sorted(APOGEE_BITS.items()) if f >> b & 1] + s = sim.get(r["gaiaedr3_source_id"]) + vet = ("binary" if "MULTIPLE_SUSPECT" in bits or int(float(r["n_components"])) >= 2 or (int(r["nvisits"]) > 1 and float(r["vscatter"]) > 1) else + "rotation" if "ROTATION_BAD" in bits or float(r["vsini"]) > vsini_kms else + "fit-boundary" if {"TEFF_BAD", "LOGG_BAD", "NO_GRID", "COLORTE_BAD"} & set(bits) else + "natural-type" if s and s[1] not in ("*", "PM*", "HV*") else None) + out.append(dict(apogee=r["apogee_id"], gaia=r["gaiaedr3_source_id"], snr=float(r["snr"]), teff=float(r["rv_teff"]), feh=float(r["rv_feh"]), + ncomp=int(float(r["n_components"])), bits=bits, simbad=s, vet=vet)) + # Gaia's own sign of a companion: a wobble beyond a single star's (RUWE) or a radial velocity that swings + rest = [o for o in out if o["vet"] is None and o["gaia"] not in ("", "0", "-1")] + if rest: + gaia = {r["source_id"]: r for r in core.tap("gaia", "SELECT source_id, ruwe, rv_amplitude_robust, radial_velocity_error FROM gaiadr3.gaia_source " + "WHERE source_id IN (%s)" % ",".join(o["gaia"] for o in rest))} + for o in rest: + g = gaia.get(o["gaia"]) + if g and ((core.num(g["ruwe"]) or 0) > 1.4 or (core.num(g["rv_amplitude_robust"]) or 0) > 5 * max(core.num(g["radial_velocity_error"]) or 1, 1)): + o["vet"] = "binary" + o["bits"] = o["bits"] + ["Gaia RUWE %s, RV amplitude %s km/s" % (g["ruwe"], g["rv_amplitude_robust"])] + left = [o for o in out if o["vet"] is None] + from collections import Counter + print("%d nearby dwarfs at S/N above 100; %d STAR_BAD, explained %s; unexplained %d %s" % ( + len(rows), len(out), dict(Counter(o["vet"] for o in out)), len(left), [(o["apogee"], o["gaia"], o["snr"], o["teff"], o["feh"], o["bits"], o["simbad"]) for o in left])) + if record: + core.record_run("apogee_star_bad_dwarfs", "Nearby dwarfs APOGEE could not fit", "SDSS DR17 APOGEE (aspcapStar, apogeeStar) on SkyServer; SIMBAD", + "dwarfs with parallax above 10 mas, S/N above 100, 4000-6500 K, log g above 4.0: %d" % len(rows), os.path.abspath(__file__), "apogeebad", + len(rows), "stars", dict(plx_mas=plx_mas, snr=snr, teff=teff, logg=logg_min, vsini_kms=vsini_kms, flag="STAR_BAD"), "none: each failure read for its cause", + "a high-S/N dwarf spectrum no stellar model fits", "%d STAR_BAD (%s); %d unexplained" % ( + len(out), ", ".join("%s %d" % (k, v) for k, v in Counter(o["vet"] or "none" for o in out).most_common()), len(left)), + [dict(target="gaia_dr3:%s" % o["gaia"] if o["gaia"] not in ("", "0", "-1") else "apogee:%s" % o["apogee"], stat=o["snr"], unit="S/N", + vet=o["vet"], note="%s; %.0f K, [Fe/H] %.2f, %d components; %s; SIMBAD %s" % (o["apogee"], o["teff"], o["feh"], o["ncomp"], + " ".join(o["bits"]), o["simbad"])) for o in out]) + print("recorded") + + +przybylski_DOC = r"""Przybylski's star re-measured: HD 101065, the one star with published lines of promethium and the short-lived actinides (Cowley et al. 2004; Gopka et al. 2008), in the six highest-S/N HARPS spectra and the four highest-S/N UVES spectra of the ESO archive. Each instrument's envelope-normalised median stack, put in the star's rest frame, is read at the toolkit's Tc I, Pm II, Pa II, Pu II, Am II and Cm II lines for the weighted depth at the lines, against the same measure at 2000 random line sets of the same size drawn from the covered range, which in this star's forest of rare-earth lines is the chance of coincidences; a true identification sits deeper than chance. A set deeper than chance is read line by line in NIST's line list for the star's own species within 0.08 A and scored again without the blended lines. + + python -I seti.py composition przybylski [record] [--n-harps 6] [--n-uves 4] [--draws 2000] [--blend-tol-a 0.08]""" + +PRZYBYLSKI = dict(ra=174.4043373, dec=-46.7096883, teff=6600.0) +# the species that fill this star's spectrum: the iron peak, the lanthanides singly and doubly ionised, thorium and uranium +PRZYBYLSKI_SPECIES = ("Fe I;Fe II;Ti II;Cr II;V II;Mn II;Ni I;Sr II;Y II;Zr II;Ba II;La II;Ce II;Pr II;Nd II;Sm II;Eu II;Gd II;Tb II;Dy II;Ho II;Er II;Tm II;Yb II;" + "Lu II;Hf II;Th II;U II;Ce III;Pr III;Nd III;Sm III;Eu III;Gd III;Tb III;Dy III;Ho III;Er III;Tm III;Yb III") + + +def przybylski_blends(lam, tol=0.08): + """NIST ASD lines of the star's own species within tol A of a wavelength (air): (species, wavelength).""" + import html as htmllib + q = urllib.parse.urlencode(dict(spectra=PRZYBYLSKI_SPECIES, limits_type=0, low_w=round(lam - tol, 3), upp_w=round(lam + tol, 3), unit=0, submit="Retrieve Data", de=0, + format=1, line_out=0, en_unit=0, output=0, bibrefs=1, page_size=15, show_obs_wl=1, show_calc_wl=1, unc_out=1, order_out=0, max_low_enrg="", + show_av=2, max_upp_enrg="", tsb_value=0, min_str="", A_out=0, intens_out="on", max_str="", allowed_out=1, forbid_out=1, min_accur="", + min_intens="", conf_out="on", term_out="on", enrg_out="on", J_out="on")) + body = htmllib.unescape(re.sub(r"<[^>]+>", "", core.get("https://physics.nist.gov/cgi-bin/ASD/lines1.pl?" + q, timeout=60).decode("utf-8", "replace"))) + out = [] + for ln in body.splitlines(): + m = re.match(r"\s*([A-Z][a-z]? I{1,3})\s*\|(.*)", ln) + if m: + w = re.search(r"(\d{4}\.\d+)", m.group(2)) + out.append((m.group(1), float(w.group(1)) if w else None)) + return out + + +def przybylski_stack(inst, n_spec): + """The star's envelope-normalised median stack from its highest-S/N spectra of the instrument, in its rest frame.""" + d = os.path.join(elements_ROOT, inst, "HD101065") + os.makedirs(d, exist_ok=True) + found = sorted(core.eso_spectra(PRZYBYLSKI["ra"], PRZYBYLSKI["dec"], inst, covers=(4.22e-7, 4.31e-7)), key=lambda x: -float(x["snr"] or 0))[:n_spec] + N = [] + for x in found: + path = os.path.join(d, x["dp_id"].replace(":", "_") + ".fits") + if os.path.exists(path) or core.eso_download(x["dp_id"], path): + f = elements_load(inst, path) + if np.isfinite(f).mean() >= 0.15: + N.append(f / science.envelope(f, block=300, q=92.0, smooth=1)) + T = np.nanmedian(np.array(N), axis=0) + v = science.line_velocity(T, elements_GRID) + return science.to_rest(T, elements_GRID, v) if np.isfinite(v) else T, len(N), v + + +def przybylski_main(record=False, n_harps=6, n_uves=4, draws=2000, blend_tol_a=0.08): + rng = np.random.default_rng(101065) + out = [] + for inst, n_spec in (("HARPS", n_harps), ("UVES", n_uves)): + T, n, v = przybylski_stack(inst, n_spec) + R = elements_RES[inst] + cov = elements_GRID[np.isfinite(T)] + lo, hi = cov.min() + 10, cov.max() - 10 + depth = lambda lam: 1.0 - elements_local_flux(T, lam, R) + # the star's line forest: the depth at random wavelengths + forest = np.array([depth(c) for c in rng.uniform(lo, hi, draws)]) + forest = forest[np.isfinite(forest)] + for el in elements_NAMES: + lines = [(lam, w) for lam, w in elements_line_set(el, PRZYBYLSKI["teff"]) if lo <= lam <= hi] + if not lines: + continue + w = np.array([x for _, x in lines]) + d = np.array([depth(lam) for lam, _ in lines]) + ok = np.isfinite(d) + score = float(np.dot(w[ok], d[ok]) / np.sqrt(np.sum(w[ok] ** 2))) + null = np.array([np.dot(w[ok], rng.choice(forest, ok.sum())) / np.sqrt(np.sum(w[ok] ** 2)) for _ in range(draws)]) + p = float(np.mean(null >= score)) + row = dict(inst=inst, el=el, n_lines=int(ok.sum()), n_spectra=n, score=round(score, 3), p=p, depths=[round(float(x), 3) for x in d], + forest=round(float(np.mean(forest > 0.2)), 3), blends={}) + # a set deeper than chance is read line by line against the star's own species: the score again without the lines they blend + if p < 0.05: + blended = {} + for lam, _ in lines: + hits = przybylski_blends(lam, blend_tol_a) + if hits: + blended[lam] = hits[:4] + row["blends"] = {str(k): v for k, v in blended.items()} + free = np.array([lam not in blended for lam, _ in lines]) & ok + if free.any(): + s2 = float(np.dot(w[free], d[free]) / np.sqrt(np.sum(w[free] ** 2))) + null2 = np.array([np.dot(w[free], rng.choice(forest, free.sum())) / np.sqrt(np.sum(w[free] ** 2)) for _ in range(draws)]) + row["n_free"], row["score_free"], row["p_free"] = int(free.sum()), round(s2, 3), float(np.mean(null2 >= s2)) + out.append(row) + print("Przybylski's star: %s" % "; ".join("%s %s %d lines in %d spectra, weighted depth %.3f, p %.3f" % (o["inst"], o["el"], o["n_lines"], o["n_spectra"], o["score"], o["p"]) + for o in out)) + for o in out: + print(" %s %s: depths %s (random wavelengths deeper than 0.2: %.0f per cent)%s" % (o["inst"], o["el"], o["depths"], 100 * o["forest"], + "; blends %s; without them %d lines, depth %s, p %s" % (o["blends"], o.get("n_free", 0), o.get("score_free"), o.get("p_free")) if o["blends"] else "")) + if record: + low = min(out, key=lambda o: o["p"]) + core.record_run("przybylski_actinides", "Przybylski's star re-measured", "ESO archive, HARPS and UVES Phase 3 spectra of HD 101065", + "the six highest-S/N HARPS and four highest-S/N UVES spectra covering 4220-4310 A", os.path.abspath(__file__), "przybylski", 1, "stars", + dict(teff=PRZYBYLSKI["teff"], draws=draws, spectra=dict(HARPS=n_harps, UVES=n_uves), blend_tol_a=blend_tol_a, + lines={o["el"]: o["n_lines"] for o in out if o["inst"] == "HARPS"}), + "%d random line sets of the same size from the same stack: the coincidence rate of the star's line forest" % draws, + "absorption at the lines of promethium and the actinides beyond the forest's coincidences", + "lowest p %.3f (%s %s); %s" % (low["p"], low["inst"], low["el"], ", ".join("%s %s p %.3f%s" % (o["inst"], o["el"], o["p"], + " (%.3f without blended lines)" % o["p_free"] if "p_free" in o else "") for o in out)), + [dict(target="hd:101065", stat=o["score"], p=o["p"], unit="weighted line depth, %s %s" % (o["inst"], o["el"]), + vet="chance-rate" if o["p"] > 0.01 else "stellar-blend" if o.get("p_free", 0) > 0.01 else None, + note="%d lines, %d spectra; depths %s; blends %s; without them p %s" % (o["n_lines"], o["n_spectra"], o["depths"], o["blends"], o.get("p_free"))) for o in out]) + print("recorded") + + +haquiet_DOC = r"""H-alpha emission at quiet Sun-like neighbours: Gaia DR3's emission-line classifier (ESP-ELS) marks the stars whose BP/RP spectra show H-alpha in emission; those within 100 pc at BP-RP 0.5-1.5, the colours of F, G and K dwarfs, each read for the signs of an ordinary cause: an eRASS1 X-ray source within 15 arcsec (a corona), a Gaia line broadening above 15 km/s (a fast rotator), RUWE above 1.4 or a non-single-star solution (a binary), a SIMBAD type of a young, active or interacting star, and a place more than 2 mag under the main sequence of its colour (a white dwarf's light on a red dwarf's). Emission on a slow, quiet, single Sun-like star has no chromosphere to come from. + + python -I seti.py composition haquiet [record] [--plx-mas 10] [--colour 0.5 1.5] [--radius-arcsec 15] [--vbroad-kms 15] [--ruwe-max 1.4] [--under-mag 2]""" + + +def haquiet_main(record=False, plx_mas=10.0, colour=[0.5, 1.5], radius_arcsec=15.0, vbroad_kms=15.0, ruwe_max=1.4, under_mag=2.0): + rows = core.gaia_by_range("SELECT g.source_id, g.ra, g.dec, g.parallax, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.non_single_star, g.vbroad, a.classlabel_espels, " + "a.ew_espels_halpha, a.ew_espels_halpha_uncertainty, a.teff_gspphot FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a " + "ON g.source_id = a.source_id WHERE g.source_id BETWEEN {lo} AND {hi} AND g.parallax > %g AND a.classlabel_espels IS NOT NULL " + "AND g.bp_rp BETWEEN %g AND %g" % (plx_mas, colour[0], colour[1]), n=24, maxrec=20000) + from setitools.catalogues import shifted_matches + pos = [dict(name=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"])) for r in rows] + xr = {m["source_id"] for m in shifted_matches(pos, "J/A+A/682/A34/erass1-m", radius_arcsec)[0]} if pos else set() + sim = {} + if rows: + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % r["source_id"] for r in rows)): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + active = ("BY*", "RS*", "Er*", "Fl*", "TT*", "TT?", "Y*O", "Y*?", "EB*", "SB*", "**", "CV*", "Sy*", "Em*", "Ro*", "El*", "pr*", "Or*", "Ae*", "X", "AB*", "RG*") + out = [] + for r in rows: + s = sim.get(r["source_id"]) + # a star more than 2 mag under the main sequence of its colour is a white dwarf's light added to a red dwarf's, whose emission is the red dwarf's + mg = float(r["phot_g_mean_mag"]) + 5 * math.log10(float(r["parallax"]) / 100) + under = mg - (2.0 + 3.8 * float(r["bp_rp"])) + vet = ("active-star" if r["source_id"] in xr else "binary" if (core.num(r["ruwe"]) or 0) > ruwe_max or (core.num(r["non_single_star"]) or 0) > 0 else + "rotation" if (core.num(r["vbroad"]) or 0) > vbroad_kms else "natural-type" if s and s[1] in active else "white-dwarf" if under > under_mag else None) + out.append(dict(id=r["source_id"], g=core.num(r["phot_g_mean_mag"]), bprp=core.num(r["bp_rp"]), mg=round(mg, 2), teff=core.num(r["teff_gspphot"]), cls=r["classlabel_espels"], + ew=core.num(r["ew_espels_halpha"]), e_ew=core.num(r["ew_espels_halpha_uncertainty"]), ruwe=core.num(r["ruwe"]), vbroad=core.num(r["vbroad"]), xray=r["source_id"] in xr, + simbad=s, vet=vet)) + left = [o for o in out if o["vet"] is None] + print("%d emission-line stars within 100 pc at BP-RP 0.5-1.5; unexplained %d" % (len(out), len(left))) + for o in out: + print(" Gaia DR3 %s: G %.1f, M_G %.1f, BP-RP %.2f, %s K, %s, H-alpha EW %s +- %s A, RUWE %s, vbroad %s, X-ray %s; SIMBAD %s; %s" % ( + o["id"], o["g"], o["mg"], o["bprp"], o["teff"], o["cls"], o["ew"], o["e_ew"], o["ruwe"], o["vbroad"], o["xray"], o["simbad"], o["vet"])) + if record: + core.record_run("gaia_halpha_quiet_dwarfs", "H-alpha emission at quiet Sun-like neighbours", "Gaia DR3 ESP-ELS classes and gaia_source; eRASS1 by CDS XMatch; SIMBAD", + "emission-line stars within 100 pc at BP-RP 0.5-1.5: %d" % len(out), os.path.abspath(__file__), "haquiet", len(out), "stars", + dict(plx_mas=plx_mas, colour=colour, radius_arcsec=radius_arcsec, vbroad_kms=vbroad_kms, ruwe=ruwe_max, under_mag=under_mag), + "none: each star read for a corona, rotation, a companion and its type", + "H-alpha in emission on a slow, quiet, single Sun-like star", "%d stars, %d unexplained %s" % (len(out), len(left), [o["id"] for o in left]), + [dict(target="gaia_dr3:%s" % o["id"], stat=o["ew"], unit="H-alpha equivalent width, A (negative in emission)", vet=o["vet"], + note="%s K, %s; RUWE %s, vbroad %s, X-ray %s; SIMBAD %s" % (o["teff"], o["cls"], o["ruwe"], o["vbroad"], o["xray"], o["simbad"])) for o in out]) + print("recorded") + + +evenheavy_DOC = r"""Stars enriched evenly in every heavy element: GALAH DR4 stars with clean measurements of all eleven neutron-capture elements Sr, Y, Zr, Mo, Ru, Ba, La, Ce, Nd, Sm and Eu, those whose [X/Fe] stand above +0.4 dex in every one with a spread below 0.1 dex across the eleven, a dose of heavy elements in one flat measure, which neither the s-process (humps at Ba and Sr) nor the r-process (Eu over Ba) gives; the stars depleted as evenly are the mirror null, and the spread the abundance errors alone give is read from the whole sample. + + python -I seti.py composition evenheavy [record] [--mean-min 0.4] [--spread-max 0.1]""" + + +def evenheavy_main(record=False, mean_min=0.4, spread_max=0.1): + p = core.data("galah_dr4_ncapture.json") + if not os.path.exists(p): + fission_main() + rows = json.load(open(p)) + + def f(x): + try: + return float(x) + except (TypeError, ValueError): + return np.nan + X = np.array([[f(r[e + "_fe"]) for e in fission_ELS] for r in rows]) + F = np.array([[f(r["flag_" + e + "_fe"]) for e in fission_ELS] for r in rows]) + E = np.array([[f(r["e_" + e + "_fe"]) for e in fission_ELS] for r in rows]) + ok = np.all(np.isfinite(X) & (F == 0), axis=1) + mean, spread = np.nanmean(X, axis=1), np.nanstd(X, axis=1) + err = np.sqrt(np.nanmean(E ** 2, axis=1)) + rich = ok & (mean > mean_min) & (spread < spread_max) + poor = ok & (mean < -mean_min) & (spread < spread_max) + anyrich = ok & (mean > mean_min) + print("%d stars, %d with all eleven elements clean; spread across the elements median %.3f against a typical error of %.3f; enriched above +%g with a spread below %g: %d " + "of %d so enriched; depleted as evenly: %d" % (len(rows), int(ok.sum()), float(np.median(spread[ok])) if ok.any() else 0, float(np.median(err[ok])) if ok.any() else 0, + mean_min, spread_max, int(rich.sum()), int(anyrich.sum()), int(poor.sum()))) + out = [] + for i in np.nonzero(rich)[0]: + r = rows[i] + out.append(dict(sobject=str(r["sobject_id"]), gaia=str(r["gaiadr3_source_id"]), mean=float(mean[i]), spread=float(spread[i]), teff=f(r["teff"]), logg=f(r["logg"]), + feh=f(r["fe_h"]), pattern={e: round(float(X[i, j]), 2) for j, e in enumerate(fission_ELS)}, vet=None)) + print(" %s Gaia DR3 %s: mean %+.2f, spread %.3f, Teff %.0f, log g %.2f, [Fe/H] %+.2f; %s" % (out[-1]["sobject"], out[-1]["gaia"], out[-1]["mean"], out[-1]["spread"], + out[-1]["teff"], out[-1]["logg"], out[-1]["feh"], out[-1]["pattern"])) + json.dump(dict(n=int(ok.sum()), hits=out, poor=int(poor.sum())), open(core.results("even_heavy_enrichment.json"), "w"), indent=1) + if record: + core.record_run( + "galah_even_heavy", "Stars enriched evenly in every heavy element", "GALAH DR4 mainstartable (Data Central)", + "stars with all eleven neutron-capture elements clean: %d" % int(ok.sum()), os.path.abspath(__file__), "evenheavy", int(ok.sum()), "stars", + dict(mean_min=mean_min, spread_max=spread_max, elements=list(fission_ELS)), + "the stars depleted as evenly: %d; the sample's spread across the elements, median %.3f, against a typical error of %.3f" % ( + int(poor.sum()), float(np.median(spread[ok])) if ok.any() else 0, float(np.median(err[ok])) if ok.any() else 0), + "every heavy element raised by the same %g dex or more to within %g dex" % (mean_min, spread_max), + "%d of %d stars enriched above +%g carry a flat pattern; %d depleted as evenly" % (int(rich.sum()), int(anyrich.sum()), mean_min, int(poor.sum())), + [dict(target="gaia_dr3:%s" % o["gaia"], stat=o["spread"], unit="spread of [X/Fe] across eleven heavy elements, dex", vet=o["vet"], + note="mean %+.2f, Teff %.0f, log g %.2f, [Fe/H] %+.2f; %s" % (o["mean"], o["teff"], o["logg"], o["feh"], o["pattern"])) for o in out if o["gaia"] not in ("", "None")]) + print("recorded") + + +ceriumonly_DOC = r"""Cerium without carbon in dwarfs: the unevolved metal-rich APOGEE DR17 dwarfs of the CNO test (log g above 4.2, Teff 4800-6500 K, [Fe/H] above -0.3, S/N above 70) with unflagged carbon and cerium, those with [Ce/Fe] above +0.5 dex while [C/Fe] stays at or below zero; the s-process that makes cerium in an asymptotic-giant companion carries carbon with it, so a dwarf dosed with the heavy element alone has it from elsewhere. Each read for a Gaia binary (RUWE, a non-single-star solution or radial-velocity variability), its Teff edge and its rotation, against the dwarfs with cerium and carbon together. + + python -I seti.py composition ceriumonly [record] [--ce-min 0.5] [--c-max 0.0]""" + + +def ceriumonly_main(record=False, ce_min=0.5, c_max=0.0): + from setitools.core import num + rows = cno_fetch() + keep = [] + for r in rows: + c, ce, te = num(r["[C/Fe]"]), num(r["[Ce/Fe]"]), num(r["Teff"]) + if None in (c, ce, te) or (r["f_[C/Fe]"] or "0").strip() not in ("0", "") or (r["f_[Ce/Fe]"] or "0").strip() not in ("0", ""): + continue + keep.append(dict(id=r["APOGEE"], teff=te, logg=num(r["logg"]), feh=num(r["[Fe/H]"]), c=c, ce=ce, n=num(r["[N/Fe]"]), vsini=num(r["Vsini"]), gaia=r["GaiaEDR3"], + srv=num(r["s_HRV"]), nvis=num(r["Nvis"]))) + rich = [k for k in keep if k["ce"] > ce_min] + alone = [k for k in rich if k["c"] <= c_max] + together = [k for k in rich if k["c"] > c_max] + gb = cno_gaia_binary([k["gaia"] for k in alone]) if alone else {} + for k in alone: + b = gb.get(k["gaia"]) + k["binary"] = b + k["vet"] = ("binary" if b is not None and b[0] else "binary" if k["srv"] is not None and k["nvis"] and k["nvis"] > 1 and k["srv"] > 1.0 else + "fit-boundary" if k["teff"] < 4900 else "rotation" if k["vsini"] and k["vsini"] > 15 else None) + left = [k for k in alone if k["vet"] is None] + cs = np.array([k["c"] for k in rich]) + print("%d dwarfs with unflagged carbon and cerium; [Ce/Fe] above %+g: %d, their [C/Fe] median %+.2f; with [C/Fe] at or below %+g: %d, %d Gaia or velocity binaries, " + "%d at the Teff edge, %d fast rotators; unexplained %d" % (len(keep), ce_min, len(rich), float(np.median(cs)) if len(cs) else 0, c_max, len(alone), + sum(k["vet"] == "binary" for k in alone), sum(k["vet"] == "fit-boundary" for k in alone), + sum(k["vet"] == "rotation" for k in alone), len(left))) + for k in sorted(alone, key=lambda k: -k["ce"]): + print(" %s: [Ce/Fe] %+.2f, [C/Fe] %+.2f, [N/Fe] %s, Teff %.0f, log g %.2f, [Fe/H] %+.2f, vsini %s, RV scatter %s; Gaia %s; %s" % ( + k["id"], k["ce"], k["c"], k["n"], k["teff"], k["logg"], k["feh"], k["vsini"], k["srv"], (k["binary"] or (None, "-"))[1], k["vet"] or "unexplained")) + json.dump(dict(n=len(keep), rich=len(rich), alone=alone), open(core.results("cerium_without_carbon.json"), "w"), indent=1) + if record: + core.record_run( + "apogee_cerium_only", "Cerium without carbon in dwarfs", "APOGEE DR17 (VizieR III/286); Gaia DR3", + "unevolved metal-rich dwarfs with unflagged carbon and cerium: %d" % len(keep), os.path.abspath(__file__), "ceriumonly", len(keep), "dwarfs", + dict(ce_min=ce_min, c_max=c_max), "the %d dwarfs with [Ce/Fe] above %+g carry [C/Fe] of %+.2f at the median; %d hold cerium and carbon together" % ( + len(rich), ce_min, float(np.median(cs)) if len(cs) else 0, len(together)), + "a dwarf with [Ce/Fe] above %+g and [C/Fe] at or below %+g" % (ce_min, c_max), + "%d: %d binaries, %d at the Teff edge, %d fast rotators; %d unexplained" % (len(alone), sum(k["vet"] == "binary" for k in alone), + sum(k["vet"] == "fit-boundary" for k in alone), sum(k["vet"] == "rotation" for k in alone), + len(left)), + [dict(target="2mass:%s" % k["id"].replace("2M", ""), stat=k["ce"], unit="[Ce/Fe]", vet=k["vet"], + note="[C/Fe] %+.2f, [N/Fe] %s, Teff %.0f, log g %.2f, [Fe/H] %+.2f, vsini %s, RV scatter %s, Gaia %s" % ( + k["c"], k["n"], k["teff"], k["logg"], k["feh"], k["vsini"], k["srv"], (k["binary"] or (None, "-"))[1])) for k in alone]) + print("recorded") + + +rvjump_DOC = r"""Stars that changed velocity between GALAH and Gaia: GALAH DR4 stars with a clean fit whose spectroscopic radial velocity (rv_comp_1) and Gaia DR3's differ by more than 30 km/s with both measured to 2 km/s, a star whose line-of-sight speed changed by more than any single-star process allows between the surveys' epochs, which an orbit about a companion does and a driven thing would; each read for a second spectral component in GALAH, for a Gaia non-single-star orbit, radial-velocity amplitude, RUWE and image peaks, for its rotation, since a broad-lined star gives both surveys a poor velocity, for a GALAH temperature far from Gaia's, which marks a fibre on a different star, for a Gaia velocity resting on few transits, and for a third epoch in RAVE DR6 or LAMOST DR5 apart from either, which settles a velocity that moves. + + python -I seti.py composition rvjump [record] [--jump-kms 30] [--err-max-kms 2] [--vsini-max 50] [--teff-mismatch-k 600] [--transits-min 5] [--third-kms 10]""" + + +def rvjump_main(record=False, jump_kms=30.0, err_max_kms=2.0, vsini_max=50.0, teff_mismatch_k=600.0, transits_min=5, third_kms=10.0): + from setitools.core import num + rows = core.tap_async("datacentral", "SELECT sobject_id, gaiadr3_source_id, ra, dec, teff, logg, vsini, rv_comp_1, e_rv_comp_1, rv_comp_2, rv_gaia_dr3, e_rv_gaia_dr3 FROM " + "galah_dr4.mainstartable WHERE flag_sp = 0 AND rv_comp_1 IS NOT NULL AND rv_gaia_dr3 IS NOT NULL AND e_rv_comp_1 < %g AND e_rv_gaia_dr3 < %g" % ( + err_max_kms, err_max_kms), maxrec=1000000) + n_all = len(rows) + st = {} + for r in rows: + rv, grv = num(r["rv_comp_1"]), num(r["rv_gaia_dr3"]) + gid = str(r["gaiadr3_source_id"] or "").strip() + if rv is None or grv is None or not gid or abs(rv - grv) < jump_kms: + continue + if gid not in st or abs(rv - grv) > abs(st[gid]["rv"] - st[gid]["grv"]): + st[gid] = dict(id=gid, sobject=str(r["sobject_id"]), rv=rv, erv=num(r["e_rv_comp_1"]), grv=grv, egrv=num(r["e_rv_gaia_dr3"]), rv2=num(r["rv_comp_2"]), teff=num(r["teff"]), + logg=num(r["logg"]), vsini=num(r["vsini"])) + st = list(st.values()) + nss, amp = {}, {} + for k in range(0, len(st), 500): + ids = ",".join(s["id"] for s in st[k:k + 500]) + for r in core.tap("gaia", "SELECT source_id, nss_solution_type FROM gaiadr3.nss_two_body_orbit WHERE source_id IN (%s)" % ids): + nss.setdefault(str(r["source_id"]), []).append(str(r["nss_solution_type"])) + for r in core.tap("gaia", "SELECT source_id, rv_amplitude_robust, rv_nb_transits, rv_chisq_pvalue, non_single_star, ruwe, ipd_frac_multi_peak, teff_gspphot FROM " + "gaiadr3.gaia_source WHERE source_id IN (%s)" % ids): + amp[str(r["source_id"])] = (num(r["rv_amplitude_robust"]), num(r["rv_nb_transits"]), num(r["rv_chisq_pvalue"]), num(r["non_single_star"]), num(r["ruwe"]), + num(r["ipd_frac_multi_peak"]), num(r["teff_gspphot"])) + pos = {} + for k in range(0, len(st), 500): + for r in core.tap("gaia", "SELECT source_id, ra, dec FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(s["id"] for s in st[k:k + 500])): + pos[str(r["source_id"])] = (float(r["ra"]), float(r["dec"])) + third = {} + up = [dict(source_id=i, ra=p[0], dec=p[1]) for i, p in pos.items()] + for cat, key, ekey, label in (("III/283/ravedr6", "HRV", "e_HRV", "RAVE DR6"), ("V/164/dr5", "rv", "e_rv", "LAMOST DR5")): + for m in core.xmatch(up, cat, 2.0): + v = num(m.get(key)) + if v is not None: + third.setdefault(m["source_id"], []).append((label, v, num(m.get(ekey)))) + for s in st: + s["nss"] = nss.get(s["id"], []) + s["amp"] = amp.get(s["id"]) + s["third"] = third.get(s["id"], []) + s["third_apart"] = any((e or 0) < third_kms and (abs(v - s["rv"]) > third_kms + 3 * (e or 0) or abs(v - s["grv"]) > third_kms + 3 * (e or 0)) for lab, v, e in s["third"]) + a = s["amp"] or (None, None, None, None, None, None, None) + s["ruwe"], s["gaia_teff"] = a[4], a[6] + s["vet"] = ("binary" if s["rv2"] is not None or s["nss"] or (a[3] or 0) > 0 or (a[0] or 0) > jump_kms / 2 or (a[2] is not None and a[2] < 0.01) or (a[4] or 0) > 1.4 + or (a[5] or 0) > 2 or s["third_apart"] else "artefact" if (s["vsini"] or 0) > vsini_max else + "misidentified" if a[6] is not None and s["teff"] is not None and abs(a[6] - s["teff"]) > teff_mismatch_k else + "single-epoch" if (a[1] or 0) < transits_min else None) + left = [s for s in st if s["vet"] is None] + print("%d GALAH stars with both velocities to %g km/s; apart by more than %g km/s: %d (%d binaries by a second component, a Gaia orbit, Gaia's amplitude, variability flag, RUWE " + "or image peaks, %d broad-lined, %d with temperatures apart by %g K, %d on fewer than %d Gaia transits); unexplained %d" % ( + n_all, err_max_kms, jump_kms, len(st), sum(s["vet"] == "binary" for s in st), sum(s["vet"] == "artefact" for s in st), sum(s["vet"] == "misidentified" for s in st), + teff_mismatch_k, sum(s["vet"] == "single-epoch" for s in st), transits_min, len(left))) + for s in sorted(st, key=lambda s: -abs(s["rv"] - s["grv"])): + if s["vet"] != "binary" or len(st) <= 40: + print(" Gaia DR3 %s: GALAH %.1f +- %.1f, Gaia %.1f +- %.1f km/s, third epochs %s, second component %s, Gaia orbits %s, amplitude %s, vsini %s, %s K (Gaia %s); %s" % ( + s["id"], s["rv"], s["erv"], s["grv"], s["egrv"], s["third"] or "-", s["rv2"], s["nss"], s["amp"], s["vsini"], s["teff"], s["gaia_teff"], s["vet"] or "unexplained")) + json.dump(dict(n=n_all, hits=st), open(core.results("rv_jumps_galah_gaia.json"), "w"), indent=1) + if record: + core.record_run( + "galah_gaia_rv_jumps", "Stars that changed velocity between GALAH and Gaia", "GALAH DR4 mainstartable (Data Central); Gaia DR3 gaia_source and nss_two_body_orbit", + "GALAH stars with a clean fit and both velocities to %g km/s: %d" % (err_max_kms, n_all), os.path.abspath(__file__), "rvjump", n_all, "stars", + dict(jump_kms=jump_kms, err_max_kms=err_max_kms, vsini_max=vsini_max, teff_mismatch_k=teff_mismatch_k, transits_min=transits_min, third_kms=third_kms), + "GALAH's second components, Gaia's orbits, radial-velocity amplitudes, variability flags, RUWE and image peaks; the two surveys' temperatures; Gaia's transit counts; a third epoch from RAVE DR6 or LAMOST DR5", + "a radial velocity changed by more than %g km/s between the surveys" % jump_kms, "%d: %d binaries, %d broad-lined, %d with temperatures apart, %d on few Gaia transits; " + "%d unexplained" % (len(st), sum(s["vet"] == "binary" for s in st), sum(s["vet"] == "artefact" for s in st), sum(s["vet"] == "misidentified" for s in st), + sum(s["vet"] == "single-epoch" for s in st), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["rv"] - s["grv"], 1), unit="km/s, GALAH minus Gaia", vet=s["vet"], + note="GALAH %.1f +- %.1f, Gaia %.1f +- %.1f, third epochs %s, second component %s, orbits %s, amplitude %s, vsini %s" % ( + s["rv"], s["erv"], s["grv"], s["egrv"], s["third"] or "none", s["rv2"], s["nss"], (s["amp"] or (None,))[0], s["vsini"])) for s in st]) + print("recorded") + + +europium_DOC = r"""Europium far above iron in dwarfs: GALAH DR4 dwarfs (log g above 4.0) with a clean fit, a clean europium abundance measured to 0.2 dex and a spectrum of signal-to-noise above 40, those with [Eu/Fe] above 1.0, the r-process enrichment of the rarest halo stars found in the disc, where a star's own gas never carried it and a refinery of the heaviest elements would; each read for its metallicity, since the r-process-enhanced stars of the halo are metal-poor, for a second spectral component and a Gaia non-single-star flag, since a companion's transfer enriches, and for barium and lanthanum, since an s-process pattern marks that transfer. + + python -I seti.py composition europium [record] [--eu-min 1.0] [--err-max 0.2] [--snr-min 40] [--logg-min 4] [--metal-poor -1.0] [--ba-s 0.5]""" + + +def europium_main(record=False, eu_min=1.0, err_max=0.2, snr_min=40.0, logg_min=4.0, metal_poor=-1.0, ba_s=0.5): + from setitools.core import num + rows = core.tap_async("datacentral", "SELECT sobject_id, gaiadr3_source_id, teff, logg, fe_h, eu_fe, e_eu_fe, ba_fe, flag_ba_fe, la_fe, flag_la_fe, rv_comp_2, snr_px_ccd3 FROM " + "galah_dr4.mainstartable WHERE flag_sp = 0 AND flag_eu_fe = 0 AND logg > %g AND snr_px_ccd3 > %g AND e_eu_fe < %g" % (logg_min, snr_min, err_max), + maxrec=1000000) + n_all = len(rows) + st = [dict(id=str(r["gaiadr3_source_id"] or "").strip(), sobject=str(r["sobject_id"]), teff=num(r["teff"]), logg=num(r["logg"]), feh=num(r["fe_h"]), eu=num(r["eu_fe"]), eeu=num(r["e_eu_fe"]), + ba=num(r["ba_fe"]) if num(r["flag_ba_fe"]) == 0 else None, la=num(r["la_fe"]) if num(r["flag_la_fe"]) == 0 else None, rv2=num(r["rv_comp_2"]), + snr=num(r["snr_px_ccd3"])) for r in rows] + hits = [s for s in st if s["eu"] is not None and s["eu"] - s["eeu"] > eu_min] + nss = {} + ids = [s["id"] for s in hits if s["id"]] + for k in range(0, len(ids), 500): + for r in core.tap("gaia", "SELECT source_id, non_single_star, ruwe FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(ids[k:k + 500])): + nss[str(r["source_id"])] = (num(r["non_single_star"]), num(r["ruwe"])) + for s in hits: + s["gaia"] = nss.get(s["id"]) + g = s["gaia"] or (0, 0) + s["vet"] = ("metal-poor" if s["feh"] is not None and s["feh"] < metal_poor else + "binary" if s["rv2"] is not None or (g[0] or 0) > 0 or (g[1] or 0) > 1.4 else + "abundance-pattern" if (s["ba"] is not None and s["ba"] > ba_s) or (s["la"] is not None and s["la"] > ba_s) else None) + left = [s for s in hits if s["vet"] is None] + print("%d GALAH dwarfs with a clean europium abundance; [Eu/Fe] above %g at its lower bound: %d (%d metal-poor, %d with a companion, %d with an s-process pattern); unexplained %d" % ( + n_all, eu_min, len(hits), sum(s["vet"] == "metal-poor" for s in hits), sum(s["vet"] == "binary" for s in hits), sum(s["vet"] == "abundance-pattern" for s in hits), len(left))) + for s in sorted(hits, key=lambda s: -s["eu"]): + print(" Gaia DR3 %s: [Eu/Fe] %.2f +- %.2f, [Fe/H] %s, [Ba/Fe] %s, [La/Fe] %s, %s K, log g %s, S/N %s, second component %s, Gaia %s; %s" % ( + s["id"], s["eu"], s["eeu"], s["feh"], s["ba"], s["la"], s["teff"], s["logg"], s["snr"], s["rv2"], s["gaia"], s["vet"] or "unexplained")) + json.dump(dict(n=n_all, hits=hits), open(core.results("europium_rich_dwarfs.json"), "w"), indent=1) + if record: + core.record_run( + "galah_europium_dwarfs", "Europium far above iron in dwarfs", "GALAH DR4 mainstartable (Data Central); Gaia DR3", + "dwarfs with a clean fit and a clean europium abundance to %g dex at S/N above %g: %d" % (err_max, snr_min, n_all), os.path.abspath(__file__), "europium", n_all, "stars", + dict(eu_min=eu_min, err_max=err_max, snr_min=snr_min, logg_min=logg_min, metal_poor=metal_poor, ba_s=ba_s), + "metallicity, second components, Gaia's non-single-star flag and RUWE, barium and lanthanum", "[Eu/Fe] above %g at its lower bound in a dwarf" % eu_min, + "%d: %d metal-poor, %d with a companion, %d with an s-process pattern; %d unexplained" % ( + len(hits), sum(s["vet"] == "metal-poor" for s in hits), sum(s["vet"] == "binary" for s in hits), sum(s["vet"] == "abundance-pattern" for s in hits), len(left)), + [dict(target="gaia_dr3:%s" % s["id"] if s["id"] else "galah:%s" % s["sobject"], stat=round(s["eu"], 2), unit="[Eu/Fe]", vet=s["vet"], + note="[Fe/H] %s, [Ba/Fe] %s, [La/Fe] %s, %s K, log g %s, S/N %s" % (s["feh"], s["ba"], s["la"], s["teff"], s["logg"], s["snr"])) for s in hits]) + print("recorded") + + +zirconium_DOC = r"""Zirconium alone: GALAH DR4 dwarfs (log g above 4.0) with a clean fit and clean zirconium, yttrium and barium abundances measured to 0.15 dex at signal-to-noise above 40, those with [Zr/Fe] above 0.8 while [Y/Fe] and [Ba/Fe] stay below 0.3, the metal of cladding and alloy raised where every process that makes zirconium makes its neighbours on the s-process path with it; each read for a second spectral component and Gaia's non-single-star flag, and for its temperature, since the weak zirconium lines blend with molecular bands below 5000 K and fade above 6500 K, where GALAH's zirconium is not trusted. + + python -I seti.py composition zirconium [record] [--zr-min 0.8] [--others-max 0.3] [--err-max 0.15] [--snr-min 40] [--logg-min 4] [--teff-min 5000] [--teff-max 6500]""" + + +def zirconium_main(record=False, zr_min=0.8, others_max=0.3, err_max=0.15, snr_min=40.0, logg_min=4.0, teff_min=5000.0, teff_max=6500.0): + from setitools.core import num + rows = core.tap_async("datacentral", "SELECT sobject_id, gaiadr3_source_id, teff, logg, fe_h, zr_fe, e_zr_fe, y_fe, e_y_fe, ba_fe, e_ba_fe, rv_comp_2, snr_px_ccd3 FROM " + "galah_dr4.mainstartable WHERE flag_sp = 0 AND flag_zr_fe = 0 AND flag_y_fe = 0 AND flag_ba_fe = 0 AND logg > %g AND snr_px_ccd3 > %g AND " + "e_zr_fe < %g AND e_y_fe < %g AND e_ba_fe < %g" % (logg_min, snr_min, err_max, err_max, err_max), maxrec=1000000) + n_all = len(rows) + st = [dict(id=str(r["gaiadr3_source_id"] or "").strip(), sobject=str(r["sobject_id"]), teff=num(r["teff"]), logg=num(r["logg"]), feh=num(r["fe_h"]), zr=num(r["zr_fe"]), + ezr=num(r["e_zr_fe"]), y=num(r["y_fe"]), ba=num(r["ba_fe"]), rv2=num(r["rv_comp_2"]), snr=num(r["snr_px_ccd3"])) for r in rows] + hits = [s for s in st if None not in (s["zr"], s["y"], s["ba"]) and s["zr"] - s["ezr"] > zr_min and s["y"] < others_max and s["ba"] < others_max] + nss = {} + ids = [s["id"] for s in hits if s["id"]] + for k in range(0, len(ids), 500): + for r in core.tap("gaia", "SELECT source_id, non_single_star, ruwe FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(ids[k:k + 500])): + nss[str(r["source_id"])] = (num(r["non_single_star"]), num(r["ruwe"])) + for s in hits: + s["gaia"] = nss.get(s["id"]) + g = s["gaia"] or (0, 0) + s["vet"] = ("binary" if s["rv2"] is not None or (g[0] or 0) > 0 or (g[1] or 0) > 1.4 else + "defective-spectrum" if s["teff"] is None or not teff_min <= s["teff"] <= teff_max else None) + left = [s for s in hits if s["vet"] is None] + print("%d GALAH dwarfs with clean zirconium, yttrium and barium; [Zr/Fe] above %g at its lower bound with [Y/Fe] and [Ba/Fe] below %g: %d (%d with a companion, %d outside %g-%g K); " + "unexplained %d" % (n_all, zr_min, others_max, len(hits), sum(s["vet"] == "binary" for s in hits), sum(s["vet"] == "defective-spectrum" for s in hits), teff_min, teff_max, + len(left))) + for s in sorted(hits, key=lambda s: -s["zr"]): + print(" Gaia DR3 %s: [Zr/Fe] %.2f +- %.2f, [Y/Fe] %.2f, [Ba/Fe] %.2f, [Fe/H] %s, %s K, log g %s, S/N %s, second component %s, Gaia %s; %s" % ( + s["id"], s["zr"], s["ezr"], s["y"], s["ba"], s["feh"], s["teff"], s["logg"], s["snr"], s["rv2"], s["gaia"], s["vet"] or "unexplained")) + json.dump(dict(n=n_all, hits=hits), open(core.results("zirconium_alone.json"), "w"), indent=1) + if record: + core.record_run( + "galah_zirconium_alone", "Zirconium alone", "GALAH DR4 mainstartable (Data Central); Gaia DR3", + "dwarfs with a clean fit and clean zirconium, yttrium and barium to %g dex at S/N above %g: %d" % (err_max, snr_min, n_all), os.path.abspath(__file__), "zirconium", n_all, + "stars", dict(zr_min=zr_min, others_max=others_max, err_max=err_max, snr_min=snr_min, logg_min=logg_min, teff=[teff_min, teff_max]), + "second components, Gaia's non-single-star flag and RUWE, the temperature range of clean zirconium lines", + "[Zr/Fe] above %g with [Y/Fe] and [Ba/Fe] below %g" % (zr_min, others_max), "%d: %d with a companion, %d outside the temperature range; %d unexplained" % ( + len(hits), sum(s["vet"] == "binary" for s in hits), sum(s["vet"] == "defective-spectrum" for s in hits), len(left)), + [dict(target="gaia_dr3:%s" % s["id"] if s["id"] else "galah:%s" % s["sobject"], stat=round(s["zr"], 2), unit="[Zr/Fe]", vet=s["vet"], + note="[Y/Fe] %.2f, [Ba/Fe] %.2f, [Fe/H] %s, %s K, log g %s, S/N %s" % (s["y"], s["ba"], s["feh"], s["teff"], s["logg"], s["snr"])) for s in hits]) + print("recorded") + + +limeteoritic_DOC = r"""Lithium above the meteoritic: GALAH DR4 dwarfs (log g above 4.0) with a clean fit and a clean lithium abundance measured to 0.15 dex at signal-to-noise above 40, those with A(Li) above 4.3 at the lower bound, a dex above the meteoritic 3.26 and beyond what the engulfment of a giant planet can add to a convective star, where a star fed refined lithium would stand; the stars between 3.6 and 4.3 are counted as within engulfment's reach; each read for its temperature, since the lithium line of a star above 6500 K is weak and blended, and for a second spectral component and a Gaia non-single-star flag, since a companion's spectrum can fill the line. + + python -I seti.py composition limeteoritic [record] [--li-min 4.3] [--err-max 0.15] [--snr-min 40] [--logg-min 4] [--teff-max 6500] [--engulf-min 3.6]""" + + +def limeteoritic_main(record=False, li_min=4.3, err_max=0.15, snr_min=40.0, logg_min=4.0, teff_max=6500.0, engulf_min=3.6): + from setitools.core import num + rows = core.tap_async("datacentral", "SELECT sobject_id, gaiadr3_source_id, teff, logg, fe_h, a_li, e_a_li_low, e_a_li_upp, a_li_upp_lim, rv_comp_2, snr_px_ccd3, vsini FROM " + "galah_dr4.mainstartable WHERE flag_sp = 0 AND flag_a_li = 0 AND (a_li_upp_lim IS NULL OR a_li_upp_lim = 0) AND logg > %g AND snr_px_ccd3 > %g AND e_a_li_low < %g AND " + "e_a_li_upp < %g" % (logg_min, snr_min, err_max, err_max), maxrec=1000000) + n_all = len(rows) + st = [dict(id=str(r["gaiadr3_source_id"] or "").strip(), sobject=str(r["sobject_id"]), teff=num(r["teff"]), logg=num(r["logg"]), feh=num(r["fe_h"]), li=num(r["a_li"]), eli=max(num(r["e_a_li_low"]) or 0, num(r["e_a_li_upp"]) or 0), + rv2=num(r["rv_comp_2"]), snr=num(r["snr_px_ccd3"]), vsini=num(r["vsini"])) for r in rows] + hits = [s for s in st if s["li"] is not None and s["li"] - s["eli"] > li_min] + engulf = [s for s in st if s["li"] is not None and engulf_min < s["li"] - s["eli"] <= li_min] + nss = {} + ids = [s["id"] for s in hits if s["id"]] + for k in range(0, len(ids), 500): + for r in core.tap("gaia", "SELECT source_id, non_single_star, ruwe FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(ids[k:k + 500])): + nss[str(r["source_id"])] = (num(r["non_single_star"]), num(r["ruwe"])) + for s in hits: + s["gaia"] = nss.get(s["id"]) + g = s["gaia"] or (0, 0) + s["vet"] = ("defective-spectrum" if s["teff"] is None or s["teff"] > teff_max else "binary" if s["rv2"] is not None or (g[0] or 0) > 0 or (g[1] or 0) > 1.4 else None) + left = [s for s in hits if s["vet"] is None] + print("%d GALAH dwarfs with a clean lithium abundance; A(Li) above %g at the lower bound: %d (%d hotter than %g K, %d with a companion); between %g and %g, within engulfment's reach: %d; " + "unexplained %d" % (n_all, li_min, len(hits), sum(s["vet"] == "defective-spectrum" for s in hits), teff_max, sum(s["vet"] == "binary" for s in hits), engulf_min, li_min, + len(engulf), len(left))) + for s in sorted(hits, key=lambda s: -s["li"]): + print(" Gaia DR3 %s: A(Li) %.2f +- %.2f, %s K, log g %s, [Fe/H] %s, vsini %s, S/N %s, second component %s, Gaia %s; %s" % ( + s["id"], s["li"], s["eli"], s["teff"], s["logg"], s["feh"], s["vsini"], s["snr"], s["rv2"], s["gaia"], s["vet"] or "unexplained")) + json.dump(dict(n=n_all, hits=hits), open(core.results("lithium_above_meteoritic.json"), "w"), indent=1) + if record: + core.record_run( + "galah_lithium_meteoritic", "Lithium above the meteoritic", "GALAH DR4 mainstartable (Data Central); Gaia DR3", + "dwarfs with a clean fit and a clean lithium abundance to %g dex at S/N above %g: %d" % (err_max, snr_min, n_all), os.path.abspath(__file__), "limeteoritic", n_all, "stars", + dict(li_min=li_min, err_max=err_max, snr_min=snr_min, logg_min=logg_min, teff_max=teff_max, engulf_min=engulf_min), + "the reach of planet engulfment, a dex above the meteoritic; the temperature range of the lithium line; second components, Gaia's flags and RUWE", + "A(Li) above %g at its lower bound in a dwarf" % li_min, "%d: %d too hot for the line, %d with a companion; %d between %g and %g within engulfment's reach; %d unexplained" % ( + len(hits), sum(s["vet"] == "defective-spectrum" for s in hits), sum(s["vet"] == "binary" for s in hits), len(engulf), engulf_min, li_min, len(left)), + [dict(target="gaia_dr3:%s" % s["id"] if s["id"] else "galah:%s" % s["sobject"], stat=round(s["li"], 2), unit="A(Li)", vet=s["vet"], + note="%s K, log g %s, [Fe/H] %s, vsini %s, S/N %s" % (s["teff"], s["logg"], s["feh"], s["vsini"], s["snr"])) for s in hits]) + print("recorded") + + +carbondwarfs_DOC = r"""Carbon stars on the main sequence next door: Gaia DR3's gold sample of carbon stars joined to gaia_source, those within 1 kpc at parallax over error above 5 whose absolute G places them on the main sequence, fainter than 4, a dwarf wearing an atmosphere of carbon it could not have made, since only an evolved star dredges carbon up; each read for RUWE and Gaia's non-single-star flag, since the known dwarf carbon stars carry the carbon of a companion that is now a white dwarf, and in SIMBAD. + + python -I seti.py composition carbondwarfs [record] [--plx-min 1] [--plx-sigma 5] [--mg-min 4]""" + + +def carbondwarfs_main(record=False, plx_min=1.0, plx_sigma=5.0, mg_min=4.0): + from setitools.core import num + rows = core.tap("gaia", "SELECT g.source_id, g.ra, g.dec, g.parallax, g.parallax_over_error, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.non_single_star, g.teff_gspphot, g.logg_gspphot FROM " + "gaiadr3.gold_sample_carbon_stars AS c JOIN gaiadr3.gaia_source AS g ON c.source_id = g.source_id WHERE g.parallax > %g AND g.parallax_over_error > %g" % (plx_min, plx_sigma)) + n_gold = int(core.tap("gaia", "SELECT COUNT(*) AS n FROM gaiadr3.gold_sample_carbon_stars")[0]["n"]) + st = [] + for r in rows: + plx, g = num(r["parallax"]), num(r["phot_g_mean_mag"]) + if plx is None or g is None: + continue + st.append(dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), plx=plx, g=g, mg=g + 5 * math.log10(plx / 100.0), c=num(r["bp_rp"]), ruwe=num(r["ruwe"]), + nss=num(r["non_single_star"]), teff=num(r["teff_gspphot"]), logg=num(r["logg_gspphot"]))) + dwarfs = [s for s in st if s["mg"] > mg_min] + sim = {} + for k in range(0, len(dwarfs), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in dwarfs[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in dwarfs: + s["simbad"] = sim.get(s["id"]) + s["vet"] = "binary" if (s["ruwe"] or 0) > 1.4 or (s["nss"] or 0) > 0 else "companion" + print("%d carbon stars in the gold sample, %d within %.0f pc at parallax over error above %g; on the main sequence (absolute G above %g): %d (%d with a companion shown by RUWE or Gaia's flag, " + "%d with the vanished companion of a dwarf carbon star); unexplained 0" % (n_gold, len(st), 1000 / plx_min, plx_sigma, mg_min, len(dwarfs), sum(s["vet"] == "binary" for s in dwarfs), + sum(s["vet"] == "companion" for s in dwarfs))) + for s in sorted(dwarfs, key=lambda s: -s["mg"]): + print(" Gaia DR3 %s: absolute G %.2f, G %.2f, BP-RP %s, %.0f pc, RUWE %s, Gaia flag %s, %s K; SIMBAD %s; %s" % ( + s["id"], s["mg"], s["g"], s["c"], 1000 / s["plx"], s["ruwe"], s["nss"], s["teff"], s["simbad"], s["vet"])) + json.dump(dict(n=len(st), dwarfs=dwarfs), open(core.results("carbon_dwarfs_nearby.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_carbon_dwarfs", "Carbon stars on the main sequence next door", "Gaia DR3 gold_sample_carbon_stars and gaia_source; SIMBAD", + "gold-sample carbon stars within %.0f pc at parallax over error above %g: %d" % (1000 / plx_min, plx_sigma, len(st)), os.path.abspath(__file__), "carbondwarfs", len(st), "stars", + dict(plx_min=plx_min, plx_sigma=plx_sigma, mg_min=mg_min), "RUWE and Gaia's non-single-star flag; the dwarf carbon stars' white-dwarf companions", + "a carbon star on the main sequence", "%d: %d with a companion shown, %d of the dwarf carbon kind; 0 unexplained" % ( + len(dwarfs), sum(s["vet"] == "binary" for s in dwarfs), sum(s["vet"] == "companion" for s in dwarfs)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["mg"], 2), unit="absolute G", vet=s["vet"], + note="G %.2f, BP-RP %s, %.0f pc, RUWE %s, Gaia flag %s; SIMBAD %s" % (s["g"], s["c"], 1000 / s["plx"], s["ruwe"], s["nss"], s["simbad"])) for s in dwarfs]) + print("recorded") + + +singlesd_DOC = r"""Single hot subdwarfs in the thin disc: the known hot subdwarfs of Culpan et al. (2022, VizieR J/A+A/662/A40) of classes sdB, sdOB and sdO with a Gaia parallax at 5 sigma, a proper motion and a radial velocity from SDSS or LAMOST, their Galactic velocities, those on thin-disc orbits (within 50 km/s of the local standard of rest) that show no companion in their class, Gaia's RUWE, non-single-star flag or BP-RP, which a cool companion reddens; a helium-burning core stripped of its envelope needs a companion or a merger to lose it, and mergers come from the old population, so a young single one on a thin-disc orbit stands out; each counted against the binaries and the thick-disc singles of the same list. + + python -I seti.py composition singlesd [record] [--plx-sigma 5] [--v-lsr-max 50] [--bp-rp-max -0.25]""" + + +def singlesd_main(record=False, plx_sigma=5.0, v_lsr_max=50.0, bp_rp_max=-0.25): + from astropy.coordinates import SkyCoord, Galactocentric + import astropy.units as u + t = [x for x in core.vizier("J/A+A/662/A40") if x.meta.get("name", "").endswith("knownhsd")][0] + st = [] + for r in t: + cls = str(r["SpClass"]).strip() + if not cls.startswith("sd"): + continue + plx, eplx = core.num(r["Plx"]), core.num(r["e_Plx"]) + rv = core.num(r["RVSDSS"]) if core.num(r["RVSDSS"]) is not None else core.num(r["RVLAMOST"]) + if plx is None or not eplx or plx / eplx < plx_sigma or rv is None or core.num(r["pmRAGAIA"]) is None: + continue + st.append(dict(name=str(r["Name"]).strip(), id=str(r["GaiaEDR3"]).strip(), cls=cls, ra=float(r["RA_ICRS"]), dec=float(r["DE_ICRS"]), plx=plx, pmra=float(r["pmRAGAIA"]), + pmdec=float(r["pmDEGAIA"]), rv=rv, c=(core.num(r["BPGAIA"]) - core.num(r["RPGAIA"])) if core.num(r["BPGAIA"]) is not None and core.num(r["RPGAIA"]) is not None else None, + teff=core.num(r["Teff"]), logg=core.num(r["logg"]))) + c = SkyCoord(ra=[s["ra"] for s in st] * u.deg, dec=[s["dec"] for s in st] * u.deg, distance=[1000 / s["plx"] for s in st] * u.pc, pm_ra_cosdec=[s["pmra"] for s in st] * u.mas / u.yr, + pm_dec=[s["pmdec"] for s in st] * u.mas / u.yr, radial_velocity=[s["rv"] for s in st] * u.km / u.s) + g = c.transform_to(Galactocentric()) + sun = SkyCoord(ra=0 * u.deg, dec=0 * u.deg, distance=1e-6 * u.pc, pm_ra_cosdec=0 * u.mas / u.yr, pm_dec=0 * u.mas / u.yr, radial_velocity=0 * u.km / u.s).transform_to(Galactocentric()) + vx, vy, vz = g.v_x.to(u.km / u.s).value, g.v_y.to(u.km / u.s).value, g.v_z.to(u.km / u.s).value + sx, sy, sz = sun.v_x.to(u.km / u.s).value, sun.v_y.to(u.km / u.s).value, sun.v_z.to(u.km / u.s).value + for k, s in enumerate(st): + s["v_lsr"] = float(math.sqrt((vx[k] - sx + 11.1) ** 2 + (vy[k] - sy + 12.2) ** 2 + (vz[k] - sz + 7.25) ** 2)) + gaia = {} + ids = [s["id"] for s in st if s["id"].isdigit()] + for k in range(0, len(ids), 500): + for r in core.tap("gaia", "SELECT source_id, ruwe, non_single_star, ipd_frac_multi_peak FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(ids[k:k + 500])): + gaia[str(r["source_id"])] = (core.num(r["ruwe"]), core.num(r["non_single_star"]), core.num(r["ipd_frac_multi_peak"])) + for s in st: + q = gaia.get(s["id"], (None, None, None)) + s["ruwe"], s["nss"], s["multi"] = q + s["binary"] = "+" in s["cls"] or (q[0] or 0) > 1.4 or (q[1] or 0) > 0 or (q[2] or 0) > 2 or (s["c"] is not None and s["c"] > bp_rp_max) + s["thin"] = s["v_lsr"] < v_lsr_max + singles = [s for s in st if not s["binary"]] + thin_single = [s for s in singles if s["thin"]] + thick_single = [s for s in singles if not s["thin"]] + thin_binary = [s for s in st if s["binary"] and s["thin"]] + for s in thin_single: + s["vet"] = "evolved" + print("%d known hot subdwarfs with parallax, motion and a velocity; %d show no companion, %d of those on thin-disc orbits against %d thick-disc singles and %d thin-disc binaries; " + "the single thin-disc share %.2f against the binaries' %.2f" % (len(st), len(singles), len(thin_single), len(thick_single), len(thin_binary), + len(thin_single) / max(len(singles), 1), len(thin_binary) / max(sum(1 for s in st if s["binary"]), 1))) + for s in sorted(thin_single, key=lambda s: s["v_lsr"])[:15]: + print(" %s (%s): %.0f km/s from the LSR, %s K, log g %s, BP-RP %s, RUWE %s; %s" % (s["name"], s["cls"], s["v_lsr"], s["teff"], s["logg"], s["c"], s["ruwe"], s["vet"])) + json.dump(dict(n=len(st), thin_single=thin_single), open(core.results("single_hot_subdwarfs.json"), "w"), indent=1) + if record: + core.record_run( + "hot_subdwarfs_single_thin_disc", "Single hot subdwarfs in the thin disc", "Culpan et al. (2022) known hot subdwarfs (VizieR J/A+A/662/A40); Gaia DR3", + "known sdB, sdOB and sdO stars with parallax at %g sigma, proper motion and a radial velocity: %d" % (plx_sigma, len(st)), os.path.abspath(__file__), "singlesd", len(st), "stars", + dict(plx_sigma=plx_sigma, v_lsr_max=v_lsr_max, bp_rp_max=bp_rp_max), "the binaries' thin-disc share %.2f; the thick-disc singles %d" % ( + len(thin_binary) / max(sum(1 for s in st if s["binary"]), 1), len(thick_single)), + "single hot subdwarfs on thin-disc orbits beyond the binaries' share", "%d single thin-disc stars of %d singles, a share of %.2f against the binaries' %.2f; every one an evolved " + "star the thin disc's own binaries and mergers can supply" % (len(thin_single), len(singles), len(thin_single) / max(len(singles), 1), + len(thin_binary) / max(sum(1 for s in st if s["binary"]), 1)), + [dict(target="gaia_dr3:%s" % s["id"] if s["id"].isdigit() else "star:%s" % s["name"], stat=round(s["v_lsr"], 1), unit="km/s from the LSR", vet=s["vet"], + note="%s, %s K, log g %s, BP-RP %s, RUWE %s" % (s["cls"], s["teff"], s["logg"], s["c"], s["ruwe"])) for s in thin_single]) + print("recorded") + + +worstfits_DOC = r"""Spectra no stellar model fits: the GALAH DR4 dwarfs (log g above 3.8) within 100 pc at signal-to-noise above 100 in the red arm, the worst 0.5 per cent of the spectral fit's chi-square over the median of its 250 K bin of temperature, each read for what spoils a stellar model: a second velocity component, rotation above 20 km/s, H-alpha in emission or filled in, a Gaia binary signal (RUWE above 1.4), or the fit's own flags; a spectrum carrying light no star makes would remain. + + python -I seti.py composition worstfits [record] [--snr-min 100] [--frac 0.005] [--teff-bin 250]""" + + +def worstfits_main(record=False, snr_min=100.0, frac=0.005, teff_bin=250.0): + rows = core.tap("datacentral", "SELECT sobject_id, gaiadr3_source_id, teff, logg, fe_h, chi2_sp, flag_sp, vsini, rv_comp_1, rv_comp_2, sb2_rv_50, ew_h_alpha, res_h_alpha, ruwe, parallax, " + "snr_px_ccd3 FROM galah_dr4.mainstartable WHERE parallax > 10 AND logg > 3.8 AND snr_px_ccd3 > %g AND chi2_sp IS NOT NULL" % snr_min) + st = [dict(id=str(r["gaiadr3_source_id"]), sob=str(r["sobject_id"]), teff=core.num(r["teff"]), chi2=core.num(r["chi2_sp"]), flag=int(core.num(r["flag_sp"]) or 0), vsini=core.num(r["vsini"]), + rv2=core.num(r["rv_comp_2"]), sb2=core.num(r["sb2_rv_50"]), ewha=core.num(r["ew_h_alpha"]), resha=core.num(r["res_h_alpha"]), ruwe=core.num(r["ruwe"]), feh=core.num(r["fe_h"])) + for r in rows] + st = [s for s in st if s["teff"] is not None and s["chi2"] is not None] + seen = {} + for s in st: + if s["id"] not in seen or s["chi2"] < seen[s["id"]]["chi2"]: + seen[s["id"]] = s + st = list(seen.values()) + for b in {int(s["teff"] // teff_bin) for s in st}: + grp = [s for s in st if int(s["teff"] // teff_bin) == b] + med = float(np.median([s["chi2"] for s in grp])) + for s in grp: + s["rel"] = s["chi2"] / med if med > 0 else 0.0 + worst = sorted(st, key=lambda s: -s["rel"])[:max(1, int(round(frac * len(st))))] + for s in worst: + why = [] + if s["rv2"] is not None or s["sb2"] is not None: + why.append("second component") + if (s["vsini"] or 0) > 20: + why.append("rotation %.0f km/s" % s["vsini"]) + if (s["ewha"] is not None and s["ewha"] < 0) or (s["resha"] or 0) > 0.1: + why.append("H-alpha") + if (s["ruwe"] or 0) > 1.4: + why.append("RUWE %.1f" % s["ruwe"]) + if s["flag"]: + why.append("flag_sp %d" % s["flag"]) + s["why"] = why + s["vet"] = "binary" if ("second component" in why or any(w.startswith("RUWE") for w in why)) else ("active-star" if "H-alpha" in why or any(w.startswith("rotation") for w in why) + else ("artefact" if s["flag"] else None)) + left = [s for s in worst if s["vet"] is None] + print("%d GALAH DR4 dwarfs within 100 pc at S/N above %g; the worst %g per cent by temperature bin: %d; binary %d, activity or rotation %d, flagged fits %d, unexplained %d" % ( + len(st), snr_min, 100 * frac, len(worst), sum(s["vet"] == "binary" for s in worst), sum(s["vet"] == "active-star" for s in worst), sum(s["vet"] == "artefact" for s in worst), len(left))) + for s in sorted(left, key=lambda s: -s["chi2"]): + print(" Gaia DR3 %s (%s): %.0f K, [Fe/H] %s, chi2 %.2f (%.1f times its bin), v sin i %s, H-alpha EW %s residual %s, RUWE %s" % (s["id"], s["sob"], s["teff"], s["feh"], s["chi2"], s["rel"], s["vsini"], s["ewha"], + s["resha"], s["ruwe"])) + json.dump(worst, open(core.results("galah_worst_fits.json"), "w"), indent=1) + if record: + core.record_run( + "galah_worst_fits_nearby", "Spectra no stellar model fits", "GALAH DR4 (Data Central galah_dr4.mainstartable)", + "dwarfs within 100 pc at red-arm S/N above %g: %d" % (snr_min, len(st)), os.path.abspath(__file__), "worstfits", len(st), "stars", dict(snr_min=snr_min, frac=frac, teff_bin=teff_bin), + "the chi-square over the median of its %g K temperature bin" % teff_bin, "a spectrum no stellar model fits, with no binary, activity or fit flag to account for it", + "%d worst fits: %d binaries, %d active or fast rotators, %d flagged, %d unexplained" % (len(worst), sum(s["vet"] == "binary" for s in worst), sum(s["vet"] == "active-star" for s in worst), + sum(s["vet"] == "artefact" for s in worst), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["chi2"], 2), unit="chi-square of the spectral fit", vet=s["vet"], note="%.0f K; %s" % (s["teff"], ", ".join(s["why"]) or "nothing found")) + for s in worst]) + print("recorded") + + +xpworst_DOC = r"""Gaia XP spectra the models fit worst: the Gaia DR3 stars within 100 pc with parallaxes at 10 sigma and a GSP-Phot solution, the GSP-Phot log-posterior of each against the median and spread of its bin of 0.1 mag in BP-RP and 1 mag in G fitted with the same model library, since the libraries fit unequally well, the worst 0.1 per cent read for what spoils a single-star fit: a companion (RUWE above 1.4, several image peaks or a non-single-star solution), emission lines (an ESP-ELS class), blended photometry (corrected BP/RP excess above 3 sigma), or an extinction no star within 100 pc carries (A0 above 0.5 mag), which marks the fit's own degeneracy; light no star makes would remain. + + python -I seti.py composition xpworst [record] [--frac 0.001]""" + + +def xpworst_main(record=False, frac=0.001): + rows = core.tap("gaia", "SELECT g.source_id, g.bp_rp, g.phot_g_mean_mag, g.ruwe, g.ipd_frac_multi_peak, g.non_single_star, g.phot_bp_rp_excess_factor, a.logposterior_gspphot, " + "a.azero_gspphot, a.teff_gspphot, a.libname_gspphot, a.classlabel_espels FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a ON a.source_id = g.source_id " + "WHERE g.parallax > 10 AND g.parallax_over_error > 10 AND a.logposterior_gspphot IS NOT NULL AND g.bp_rp IS NOT NULL", timeout=1200) + st = [] + for r in rows: + c, gm = float(r["bp_rp"]), float(r["phot_g_mean_mag"]) + st.append(dict(id=r["source_id"], c=c, g=gm, lp=float(r["logposterior_gspphot"]), ruwe=core.num(r["ruwe"]), multi=core.num(r["ipd_frac_multi_peak"]), nss=core.num(r["non_single_star"]), + cstar=core.cstar(r["phot_bp_rp_excess_factor"], c) if core.num(r["phot_bp_rp_excess_factor"]) is not None else None, a0=core.num(r["azero_gspphot"]), + teff=core.num(r["teff_gspphot"]), els=(r.get("classlabel_espels") or "").strip(), lib=(r.get("libname_gspphot") or "").strip())) + groups = {} + for s in st: + groups.setdefault((int(s["c"] // 0.1), int(s["g"]), s["lib"]), []).append(s) + for grp in groups.values(): + lp = np.array([s["lp"] for s in grp]) + med, mad = float(np.median(lp)), float(np.median(np.abs(lp - np.median(lp)))) * 1.4826 + for s in grp: + s["z"] = (s["lp"] - med) / mad if mad > 0 and len(grp) >= 20 else 0.0 + worst = sorted(st, key=lambda s: s["z"])[:max(1, int(round(frac * len(st))))] + for s in worst: + why = [] + if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 or (s["nss"] or 0) > 0: + why.append("companion") + if s["els"]: + why.append("emission %s" % s["els"]) + if s["cstar"] is not None and s["cstar"] > 3 * core.cstar_sigma(s["g"]): + why.append("blended photometry") + if (s["a0"] or 0) > 0.5: + why.append("A0 %.2f" % s["a0"]) + s["why"] = why + s["vet"] = ("binary" if "companion" in why else "active-star" if any(w.startswith("emission") for w in why) else "blend" if "blended photometry" in why + else "fit-degeneracy" if any(w.startswith("A0") for w in why) else None) + left = [s for s in worst if s["vet"] is None] + counts = {v: sum(s["vet"] == v for s in worst) for v in ("binary", "active-star", "blend", "fit-degeneracy")} + print("%d stars within 100 pc with a GSP-Phot fit; the worst %g per cent against their colour and magnitude bin: %d; %s; unexplained %d" % (len(st), 100 * frac, len(worst), counts, len(left))) + for s in left[:20]: + print(" Gaia DR3 %s: BP-RP %.2f, G %.2f, %s, log-posterior %.1f (%.1f robust widths below its bin), Teff %s, A0 %s, RUWE %s" % (s["id"], s["c"], s["g"], s["lib"], s["lp"], -s["z"], s["teff"], s["a0"], s["ruwe"])) + json.dump(worst, open(core.results("xp_worst_fits.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_xp_worst_fits_nearby", "Gaia XP spectra the models fit worst", "Gaia DR3 gaia_source and astrophysical_parameters (GSP-Phot, ESP-ELS)", + "stars within 100 pc with parallaxes at 10 sigma and a GSP-Phot fit: %d" % len(st), os.path.abspath(__file__), "xpworst", len(st), "stars", dict(frac=frac), + "the log-posterior's median and robust spread in bins of 0.1 mag in BP-RP and 1 mag in G for each model library", "an XP spectrum no single-star model fits with no companion, emission, blend or degeneracy behind it", + "%d worst fits: %s; %d unexplained" % (len(worst), counts, len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(-s["z"], 1), unit="robust widths below the bin's log-posterior", vet=s["vet"], + note="BP-RP %.2f, G %.2f, Teff %s; %s" % (s["c"], s["g"], s["teff"], ", ".join(s["why"]) or "nothing found")) for s in worst]) + print("recorded") + + +xpmisfits_DOC = r"""What sets the worst-fitted nearby M dwarfs apart: the M dwarfs fitted with the MARCS library among the XP worst fits with no companion, emission, blend or extinction behind them, against 3000 stars of their BP-RP and G range within 100 pc whose GSP-Phot fits are ordinary, each set by its own excess in BP-G over the colour-matched median at its G-RP, where a white-dwarf companion adds blue light, its offset in absolute G from the main sequence, where a binary sits above and a metal-poor subdwarf below, its 2MASS J-Ks at fixed BP-RP, which collision-induced hydrogen absorption makes bluer in a metal-poor star, its tangential speed, its parallax's signal-to-noise, its Galactic latitude, its Gaia radial-velocity scatter and its GALEX ultraviolet detection; a property the misfits share and their peers lack names what the models miss; metallicity itself is read from spectra by the subdwarf-index test. + + python -I seti.py composition xpmisfits [record] [--controls 3000]""" + + +def xp_misfit_traits(worst, controls=3000): + """The misfits' traits against peers of their colour and magnitude within 100 pc: BP-G at fixed G-RP, absolute G at fixed BP-RP and G-RP, J-Ks at fixed BP-RP, speed, radial-velocity scatter and GALEX detection.""" + from scipy.stats import mannwhitneyu, fisher_exact + ids = [w["id"] for w in worst] + cmin, cmax = min(w["c"] for w in worst) - 0.05, max(w["c"] for w in worst) + 0.05 + gmin, gmax = min(w["g"] for w in worst) - 0.5, max(w["g"] for w in worst) + 0.5 + cols = ("g.source_id, g.ra, g.dec, g.parallax, g.pmra, g.pmdec, g.phot_g_mean_mag, g.phot_bp_mean_mag, g.phot_rp_mean_mag, g.bp_rp, g.ruwe, g.radial_velocity, " + "g.rv_amplitude_robust, g.rv_chisq_pvalue, g.rv_nb_transits, g.phot_variable_flag, g.parallax_over_error, g.b, a.logposterior_gspphot") + mine = core.tap("gaia", "SELECT %s FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a ON a.source_id = g.source_id WHERE g.source_id IN (%s)" % (cols, ",".join(ids))) + peers = core.tap("gaia", "SELECT TOP %d %s FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a ON a.source_id = g.source_id WHERE g.parallax > 10 AND " + "g.parallax_over_error > 10 AND g.bp_rp BETWEEN %.3f AND %.3f AND g.phot_g_mean_mag BETWEEN %.2f AND %.2f AND a.libname_gspphot = 'MARCS' " + "AND g.random_index < 400000000 ORDER BY g.random_index" % (controls, cols, cmin, cmax, gmin, gmax)) + peers = [p for p in peers if p["source_id"] not in set(ids)] + + def feats(r): + g, bp, rp, plx = (core.num(r[k]) for k in ("phot_g_mean_mag", "phot_bp_mean_mag", "phot_rp_mean_mag", "parallax")) + if None in (g, bp, rp, plx): + return None + return dict(id=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), grp=g - rp, bpg=bp - g, c=bp - rp, mg=g + 5 * math.log10(plx / 100), g=g, + vt=4.74047 * math.hypot(core.num(r["pmra"]) or 0, core.num(r["pmdec"]) or 0) / plx, pmra=core.num(r["pmra"]) or 0.0, pmdec=core.num(r["pmdec"]) or 0.0, + rvamp=core.num(r["rv_amplitude_robust"]), rvp=core.num(r["rv_chisq_pvalue"]), ruwe=core.num(r["ruwe"]), var=r["phot_variable_flag"], lp=core.num(r["logposterior_gspphot"]), + plxsnr=core.num(r["parallax_over_error"]), absb=abs(core.num(r["b"]) or 0.0)) + m = [x for x in (feats(r) for r in mine) if x] + c = [x for x in (feats(r) for r in peers) if x] + q2 = ("SELECT x.source_id, t.j_m, t.ks_m FROM gaiadr3.tmass_psc_xsc_best_neighbour AS x JOIN gaiadr3.tmass_psc_xsc_join AS j ON j.clean_tmass_psc_xsc_oid = x.clean_tmass_psc_xsc_oid " + "JOIN gaiadr1.tmass_original_valid AS t ON t.designation = j.original_psc_source_id WHERE x.source_id IN (%s)") + jk = {} + allids = [x["id"] for x in m + c] + for k in range(0, len(allids), 400): + for r in core.tap("gaia", q2 % ",".join(allids[k:k + 400])): + if core.num(r["j_m"]) is not None and core.num(r["ks_m"]) is not None: + jk[r["source_id"]] = core.num(r["j_m"]) - core.num(r["ks_m"]) + for x in m + c: + x["jk"] = jk.get(x["id"]) + allp = c + + def resid(x, key, against, mags=False): + near = sorted(allp, key=lambda p: abs(p[against] - x[against]))[:100] + vals = np.array([p[key] for p in near]) + med = float(np.median(vals)) + return (x[key] - med) if mags else (x[key] - med) / (1.4826 * float(np.median(np.abs(vals - med))) or 1e-3) + for group in (m, c): + for x in group: + x["blue"] = resid(x, "bpg", "grp") + x["dmg"] = resid(x, "mg", "c") + x["dmg_grp"] = resid(x, "mg", "grp") + x["dmg_mag"] = resid(x, "mg", "grp", mags=True) + jkp = [p for p in allp if p["jk"] is not None] + for group in (m, c): + for x in group: + if x["jk"] is None: + x["jkres"] = None + continue + near = sorted(jkp, key=lambda p: abs(p["c"] - x["c"]))[:100] + vals = np.array([p["jk"] for p in near]) + med = float(np.median(vals)) + x["jkres"] = (x["jk"] - med) / (1.4826 * float(np.median(np.abs(vals - med))) or 1e-3) + for x in m: + x["vet"] = None + out = {} + for key, label in (("blue", "BP-G excess at fixed G-RP"), ("dmg", "absolute G offset at fixed BP-RP"), ("dmg_grp", "absolute G offset at fixed G-RP"), ("jkres", "J-Ks offset at fixed BP-RP"), + ("vt", "tangential speed, km/s"), ("plxsnr", "parallax signal-to-noise"), ("absb", "Galactic latitude, deg, unsigned")): + a, b = np.array([x[key] for x in m if x[key] is not None]), np.array([x[key] for x in c if x[key] is not None]) + out[key] = dict(label=label, misfits=float(np.median(a)), peers=float(np.median(b)), p=float(mannwhitneyu(a, b).pvalue)) + def rvv(xs): + return sum(1 for x in xs if x["rvp"] is not None and x["rvp"] < 0.01), sum(1 for x in xs if x["rvp"] is not None) + rm, rc = rvv(m), rvv(c) + out["rv"] = dict(label="radial velocity variable (chi-square p below 0.01)", misfits="%d of %d" % rm, peers="%d of %d" % rc, + p=float(fisher_exact([[rm[0], rm[1] - rm[0]], [rc[0], rc[1] - rc[0]]])[1]) if rm[1] and rc[1] else None) + uv = {} + for name, group in (("misfits", m), ("peers", c[:600])): + up = [dict(source_id=x["id"], ra=x["ra"] - 8.5 * x["pmra"] / 3.6e6 / math.cos(math.radians(x["dec"])), dec=x["dec"] - 8.5 * x["pmdec"] / 3.6e6) for x in group] + hit = {mm["source_id"] for mm in core.xmatch(up, "II/335/galex_ais", 10.0)} + cov = {mm["source_id"] for mm in core.xmatch(up, "II/335/galex_ais", 180.0)} + uv[name] = (len(hit), len(cov)) + out["uv"] = dict(label="GALEX AIS detection within 10 arcsec among covered stars", misfits="%d of %d" % uv["misfits"], peers="%d of %d" % uv["peers"], + p=float(fisher_exact([[uv["misfits"][0], uv["misfits"][1] - uv["misfits"][0]], [uv["peers"][0], uv["peers"][1] - uv["peers"][0]]])[1]) if uv["misfits"][1] and uv["peers"][1] else None) + return m, c, out + + +def xpmisfits_main(record=False, controls=3000): + worst = [w for w in json.load(open(core.results("xp_worst_fits.json"))) if w.get("lib") == "MARCS" and w.get("vet") is None] + m, c, out = xp_misfit_traits(worst, controls) + print("%d MARCS misfits with no companion, emission, blend or extinction behind them against %d peers of their colour and magnitude within 100 pc:" % (len(m), len(c))) + for k, v in out.items(): + print(" %s: misfits %s, peers %s, p %s" % (v["label"], v["misfits"], v["peers"], v["p"])) + for x in sorted(m, key=lambda x: -x["blue"]): + print(" Gaia DR3 %s: BP-G excess %+.1f widths, absolute G offset %+.1f widths, J-Ks offset %s widths, %.0f km/s, RV p %s, RUWE %s, %s; %s" % ( + x["id"], x["blue"], x["dmg"], "%+.1f" % x["jkres"] if x["jkres"] is not None else "-", x["vt"], x["rvp"], x["ruwe"], x["var"], x["vet"] or "unexplained")) + json.dump(dict(misfits=m, summary=out), open(core.results("xp_misfits_traits.json"), "w"), indent=1, default=str) + if record: + core.record_run( + "gaia_xp_misfit_traits", "What sets the worst-fitted nearby M dwarfs apart", "Gaia DR3; GALEX AIS by CDS XMatch", + "the MARCS misfits of gaia_xp_worst_fits_nearby with no companion, emission, blend or extinction behind them: %d" % len(m), os.path.abspath(__file__), "xpmisfits", len(m), "stars", dict(controls=controls), + "%d stars of the same colour and magnitude within 100 pc with ordinary fits" % len(c), "a property the misfits share and their peers lack", + "; ".join("%s: %s against %s (p %s)" % (v["label"], v["misfits"] if isinstance(v["misfits"], str) else "%.2f" % v["misfits"], + v["peers"] if isinstance(v["peers"], str) else "%.2f" % v["peers"], "%.3g" % v["p"] if v["p"] is not None else "-") for v in out.values()), + [dict(target="gaia_dr3:%s" % x["id"], stat=round(x["dmg"], 2), unit="absolute G offset below the main sequence in robust widths", vet=x["vet"], + note="J-Ks offset %s widths, BP-G excess %+.1f widths, %.0f km/s" % ("%+.1f" % x["jkres"] if x["jkres"] is not None else "-", x["blue"], x["vt"])) for x in m]) + print("recorded") + + +misfitspectra_DOC = r"""Spectral classes of the worst-fitted nearby M dwarfs: the MARCS misfits the trait test examined, carried to 2014 and looked up in LAMOST DR5's low-resolution catalogue within 3 arcsec, and looked up in SDSS DR17's spectra within 3 arcsec of their 2005 positions, each class (dM, sdM, esdM or usdM in LAMOST's scheme, the subclass in SDSS's) read against the trait test's verdict; a subdwarf class confirms a metal-poor star, a dwarf class leaves its misfit open, and a pipeline type with no metallicity class decides neither. + + python -I seti.py composition misfitspectra [record] [--arcsec 3]""" + + +def misfitspectra_main(record=False, arcsec=3.0): + m = json.load(open(core.results("xp_misfits_traits.json")))["misfits"] + + def carried(x, epoch): + return x["ra"] + (epoch - 2016.0) * x["pmra"] / 3.6e6 / math.cos(math.radians(x["dec"])), x["dec"] + (epoch - 2016.0) * x["pmdec"] / 3.6e6 + lam = {} + for x in m: + ra, de = carried(x, 2014.0) + rows = core.tap("vizier", "SELECT RAJ2000, DEJ2000, Class, SubClass, snrr FROM \"V/164/dr5\" WHERE 1 = CONTAINS(POINT('ICRS', RAJ2000, DEJ2000), CIRCLE('ICRS', %.6f, %.6f, %.6f))" % ( + ra, de, arcsec / 3600.0), timeout=120) + if rows: + lam[x["id"]] = [(str(r.get("Class") or "").strip(), str(r.get("SubClass") or "").strip(), core.num(r.get("snrr"))) for r in rows] + sd = {} + for x in m: + ra, de = carried(x, 2005.0) + d = arcsec / 3600.0 + try: + rows = core.sdss_sql("SELECT TOP 3 s.class, s.subClass, s.ra, s.dec, s.snMedian FROM SpecObj AS s WHERE s.ra BETWEEN %.6f AND %.6f AND s.dec BETWEEN %.6f AND %.6f" % ( + ra - d / math.cos(math.radians(de)), ra + d / math.cos(math.radians(de)), de - d, de + d)) + except Exception: + rows = [] + if rows: + sd[x["id"]] = [(str(r.get("class")), str(r.get("subClass")), core.num(r.get("snMedian"))) for r in rows] + for x in m: + x["lamost"], x["sdss"] = lam.get(x["id"], []), sd.get(x["id"], []) + tags = " ".join(t[1] for t in x["lamost"] + x["sdss"]) + x["spec_sub"] = bool(re.search(r"\b(sd|esd|usd)M", tags)) + x["spec_dwarf"] = bool(re.search(r"\bdM", tags)) and not x["spec_sub"] + x["spec_plain"] = bool(re.search(r"\bM\d", tags)) and not x["spec_sub"] and not x["spec_dwarf"] + n_spec = sum(1 for x in m if x["lamost"] or x["sdss"]) + print("%d misfits; with a LAMOST DR5 or SDSS DR17 spectrum: %d; classed as subdwarfs %d, as dwarfs %d, by a pipeline type with no metallicity class %d" % ( + len(m), n_spec, sum(x["spec_sub"] for x in m), sum(x["spec_dwarf"] for x in m), sum(x["spec_plain"] for x in m))) + for x in m: + print(" Gaia DR3 %s (trait verdict %s): LAMOST %s; SDSS %s" % (x["id"], x.get("vet") or "open", x["lamost"] or "-", x["sdss"] or "-")) + if record: + core.record_run( + "gaia_xp_misfit_spectra", "Spectral classes of the worst-fitted nearby M dwarfs", "LAMOST DR5 (VizieR V/164); SDSS DR17 SpecObj", + "the misfits of gaia_xp_misfit_traits: %d" % len(m), os.path.abspath(__file__), "misfitspectra", len(m), "stars", dict(arcsec=arcsec), + "the trait test's verdicts", "a spectral class that confirms or overturns the metal-poor verdict", + "%d with spectra; subdwarf classes %d, dwarf classes %d, pipeline types with no metallicity class %d" % ( + n_spec, sum(x["spec_sub"] for x in m), sum(x["spec_dwarf"] for x in m), sum(x["spec_plain"] for x in m)), + [dict(target="gaia_dr3:%s" % x["id"], stat=None, unit="spectral class", vet="metal-poor" if x["spec_sub"] else x.get("vet"), + note="LAMOST %s; SDSS %s" % (x["lamost"] or "-", x["sdss"] or "-")) for x in m]) + print("recorded") + + +subdwarfindex_DOC = r"""Subdwarf indices of the worst-fitted nearby M dwarfs: the misfits of the trait test that LAMOST DR5 or SDSS DR17 observed, their spectra fetched, put in air wavelengths at rest, and measured in the CaH2 (6814-6846 A), CaH3 (6960-6990 A) and TiO5 (7126-7135 A) bands against the 7042-7046 A pseudo-continuum, and the TiO-to-CaH ratio zeta of Lepine et al. (2013) classing each as a dwarf (zeta above 0.825), a subdwarf (0.5-0.825), an extreme subdwarf (0.2-0.5) or an ultra subdwarf; the bands measure metallicity directly, which the colours only infer. + + python -I seti.py composition subdwarfindex [record] [--arcsec 3]""" + + +def vac_to_air(w): + """Air wavelengths from vacuum ones (Morton 2000), in angstroms.""" + s2 = (1e4 / w) ** 2 + return w / (1 + 8.34254e-5 + 2.406147e-2 / (130 - s2) + 1.5998e-4 / (38.9 - s2)) + + +def mdwarf_indices(wave_air_rest, flux): + """CaH2, CaH3, TiO5 and the zeta of Lepine et al. (2013) from a rest-frame spectrum in air wavelengths.""" + ok = np.isfinite(flux) & np.isfinite(wave_air_rest) + w, f = wave_air_rest[ok], flux[ok] + + def band(lo, hi): + # the band's mean flux on a fine grid, so a window narrower than a few pixels is still measured + if w.size < 2 or lo < w.min() or hi > w.max(): + return float("nan") + return float(np.mean(np.interp(np.linspace(lo, hi, 200), w, f))) + cont = band(7042.0, 7046.0) + cah2, cah3, tio5 = band(6814.0, 6846.0) / cont, band(6960.0, 6990.0) / cont, band(7126.0, 7135.0) / cont + cah = cah2 + cah3 + tio5_sun = 0.622 - 1.906 * cah + 2.211 * cah ** 2 - 0.588 * cah ** 3 + zeta = (1 - tio5) / (1 - tio5_sun) if tio5_sun < 1 else float("nan") + return cah2, cah3, tio5, zeta + + +def zeta_class(z): + """The metallicity class of an M dwarf from its zeta (Lepine et al. 2007).""" + if not np.isfinite(z): + return "unmeasured" + return "dwarf" if z > 0.825 else "subdwarf" if z > 0.5 else "extreme subdwarf" if z > 0.2 else "ultra subdwarf" + + +def subdwarfindex_main(record=False, arcsec=3.0): + import gzip + from astropy.io import fits + m = json.load(open(core.results("xp_misfits_traits.json")))["misfits"] + os.makedirs(core.data("mdwarf_spectra"), exist_ok=True) + + def carried(x, epoch): + return x["ra"] + (epoch - 2016.0) * x["pmra"] / 3.6e6 / math.cos(math.radians(x["dec"])), x["dec"] + (epoch - 2016.0) * x["pmdec"] / 3.6e6 + out = [] + for x in m: + spectra = [] + ra, de = carried(x, 2014.0) + for r in core.tap("vizier", "SELECT ObsID, PlanId, spId, FiberId, LMJD, z, snrr FROM \"V/164/dr5\" WHERE 1 = CONTAINS(POINT('ICRS', RAJ2000, DEJ2000), CIRCLE('ICRS', %.6f, %.6f, %.6f))" % ( + ra, de, arcsec / 3600.0), timeout=120): + plan, lmjd, sp, fib = str(r["PlanId"]).strip(), int(float(r["LMJD"])), int(float(r["spId"])), int(float(r["FiberId"])) + path = core.data("mdwarf_spectra", "spec-%d-%s_sp%02d-%03d.fits.gz" % (lmjd, plan, sp, fib)) + if not os.path.exists(path): + try: + open(path, "wb").write(core.get("https://dr5.lamost.org/v3/spectrum/fits/%s" % str(r["ObsID"]).strip(), timeout=120)) + except Exception as e: + spectra.append(dict(source="LAMOST %s" % r["ObsID"], error=str(e)[:80])) + continue + try: + with fits.open(gzip.open(path)) as h: + d = h[0].data + flux, wave = np.array(d[0], float), np.array(d[2], float) + z = core.num(r["z"]) or 0.0 + spectra.append(dict(source="LAMOST %s" % r["ObsID"], snr=core.num(r["snrr"]), idx=mdwarf_indices(vac_to_air(wave) / (1 + z), flux))) + except Exception as e: + spectra.append(dict(source="LAMOST %s" % r["ObsID"], error=str(e)[:80])) + ra, de = carried(x, 2005.0) + d = arcsec / 3600.0 + try: + rows = core.sdss_sql("SELECT TOP 3 s.plate, s.mjd, s.fiberID, s.run2d, s.z, s.snMedian FROM SpecObj AS s WHERE s.ra BETWEEN %.6f AND %.6f AND s.dec BETWEEN %.6f AND %.6f" % ( + ra - d / math.cos(math.radians(de)), ra + d / math.cos(math.radians(de)), de - d, de + d)) + except Exception: + rows = [] + for r in rows: + plate, mjd, fib, run2d = int(r["plate"]), int(r["mjd"]), int(r["fiberID"]), str(r["run2d"]).strip() + path = core.data("mdwarf_spectra", "spec-%04d-%05d-%04d.fits" % (plate, mjd, fib)) + if not os.path.exists(path): + base = "sdss" if run2d in ("26", "103", "104") else "eboss" + try: + open(path, "wb").write(core.get("https://data.sdss.org/sas/dr17/%s/spectro/redux/%s/spectra/lite/%04d/spec-%04d-%05d-%04d.fits" % (base, run2d, plate, plate, mjd, fib), timeout=120)) + except Exception as e: + spectra.append(dict(source="SDSS %d-%d-%d" % (plate, mjd, fib), error=str(e)[:80])) + continue + with fits.open(path) as h: + t = h[1].data + wave, flux = 10 ** np.array(t["loglam"], float), np.array(t["flux"], float) + spectra.append(dict(source="SDSS %d-%d-%d" % (plate, mjd, fib), snr=core.num(r["snMedian"]), idx=mdwarf_indices(vac_to_air(wave) / (1 + (core.num(r["z"]) or 0.0)), flux))) + good = [s for s in spectra if "idx" in s and np.isfinite(s["idx"][3])] + best = max(good, key=lambda s: s["snr"] or 0) if good else None + out.append(dict(id=x["id"], trait=x.get("vet"), spectra=spectra, best=best, cls=zeta_class(best["idx"][3]) if best else None)) + meas = [o for o in out if o["cls"]] + print("%d misfits; %d with a measurable LAMOST or SDSS spectrum: %s" % (len(out), len(meas), {c: sum(1 for o in meas if o["cls"] == c) for c in + ("dwarf", "subdwarf", "extreme subdwarf", "ultra subdwarf")})) + for o in out: + if o["spectra"]: + b = o["best"] + print(" Gaia DR3 %s (trait %s): %s" % (o["id"], o["trait"] or "open", "%s S/N %s: CaH2 %.3f, CaH3 %.3f, TiO5 %.3f, zeta %.2f, %s" % ( + b["source"], b["snr"], b["idx"][0], b["idx"][1], b["idx"][2], b["idx"][3], o["cls"]) if b else o["spectra"])) + json.dump(out, open(core.results("misfit_subdwarf_indices.json"), "w"), indent=1, default=str) + if record: + core.record_run( + "gaia_xp_misfit_subdwarf_indices", "Subdwarf indices of the worst-fitted nearby M dwarfs", "LAMOST DR5 spectra (VizieR V/164 and the DR5 archive); SDSS DR17 spectra", + "the misfits of gaia_xp_misfit_traits: %d, %d with a measurable spectrum" % (len(out), len(meas)), os.path.abspath(__file__), "subdwarfindex", len(meas), "stars", dict(arcsec=arcsec), + "the zeta boundaries of Lepine et al. (2007): 0.825, 0.5 and 0.2", "a misfit whose bands show solar metallicity, which the subdwarf verdict cannot explain", + "%s" % {c: sum(1 for o in meas if o["cls"] == c) for c in ("dwarf", "subdwarf", "extreme subdwarf", "ultra subdwarf")}, + [dict(target="gaia_dr3:%s" % o["id"], stat=round(o["best"]["idx"][3], 3), unit="zeta TiO/CaH", vet="metal-poor" if o["cls"] in ("subdwarf", "extreme subdwarf", "ultra subdwarf") else None, + note="%s, CaH2 %.3f, CaH3 %.3f, TiO5 %.3f, %s; trait verdict %s" % (o["best"]["source"], o["best"]["idx"][0], o["best"]["idx"][1], o["best"]["idx"][2], o["cls"], o["trait"] or "open")) + for o in meas]) + print("recorded") + + +ghosts_DOC = r"""Ghost spectra: each rest-frame stack of the ESO laser-line runs (HARPS, ESPRESSO, FEROS and UVES, 4100-5600 A) covering 60 per cent of that range whose nearest twin correlates at 0.9, put on a grid uniform in velocity with its broad wings removed, its lines taken out by the scaled median of its most alike stars, and what remains correlated with the star's own lines at every shift from 1,000 to 60,000 km/s either way; a sail, a fleet or any surface moving fast through the system reflects the star's own light, which arrives as a faint copy of the star's lines shifted by its speed, where no natural body near a star moves at thousands of kilometres a second and a companion's lines sit within a few hundred; each correlation is in units of the star's own line strength, so that it reads as the copy's depth, and judged against its own noise, which grows as the overlap of the spectrum's coverage with itself shrinks, shifts leaving less than a fifth of it unread, a peak at a shift other stars' peaks share belongs to the spectra rather than to a body, and the depth a copy needs to stand out is measured by laying one into every stack. + + python -I seti.py composition ghosts [record] [--v-min 1000] [--v-max 60000] [--z-min 7] [--twins 6] [--inject 0.003] [--coverage 0.6] [--twin-r 0.9] [--shared-kms 30] [--min-overlap 0.2]""" + +GHOSTS_DV = 1.0 # km/s per step of the velocity grid, a fifth of a line's width + + +def ghosts_lines(T): + """A stack's line depths on a grid uniform in velocity, wings and continuum slopes removed by a running mean of 4 A, gaps set to zero.""" + from scipy.ndimage import uniform_filter1d + L = 1.0 - np.asarray(T, float) + L = np.where(np.isfinite(L), L, 0.0) + L = L - uniform_filter1d(L, 401, mode="nearest") + lng = np.arange(np.log(elements_GRID[0]), np.log(elements_GRID[-1]), GHOSTS_DV / elements_C) + return np.interp(np.exp(lng), elements_GRID, L) + + +def ghosts_shifts(a, kmax): + """A circular correlation's values at shifts from -kmax to kmax steps.""" + return np.concatenate([a[::-1][:kmax][::-1], a[:kmax + 1]]) + + +def ghosts_xcorr(R, L, kmax): + """The correlation of a residual with line depths shifted from -kmax to kmax steps (positive redward), in units of the lines' own strength over the pixels the two overlap, with that overlap as a share of the spectrum's coverage.""" + m = 2 * len(L) + c = ghosts_shifts(np.fft.irfft(np.fft.rfft(R, m) * np.conj(np.fft.rfft(L, m)), m), kmax) + cover = (L != 0).astype(float) + F = np.fft.rfft(cover, m) + share = np.maximum(ghosts_shifts(np.fft.irfft(F * np.conj(F), m), kmax), 0) / max(cover.sum(), 1.0) + return c / (float(np.sum(L * L)) * np.maximum(share, 1e-9)), share + + +def ghosts_residual(Li, twins): + """A star's line depths less the scaled median of its most alike stars' line depths.""" + M = np.median(twins, axis=0) + return Li - float(Li @ M) / max(float(M @ M), 1e-12) * M + + +def ghosts_main(record=False, v_min=1000.0, v_max=60000.0, z_min=7.0, twins=6, inject=0.003, coverage=0.6, twin_r=0.9, shared_kms=30.0, min_overlap=0.2): + from collections import Counter + stacks = {} + for inst in ("HARPS", "ESPRESSO", "FEROS", "UVES"): + for n, (T, nspec, v, rv) in elements_stacks(inst).items(): + stacks["%s:%s" % (inst, n)] = (T, nspec) + names = sorted(stacks) + L = np.array([ghosts_lines(stacks[n][0]) for n in names]) + # a stack covering little of the range leaves too few lines to correlate + keep = (L != 0).mean(axis=1) >= coverage + names, L = [n for n, k in zip(names, keep) if k], L[keep] + kmax = int(v_max / GHOSTS_DV) + lag = np.arange(-kmax, kmax + 1) * GHOSTS_DV + far = np.abs(lag) >= v_min + D = L[:, ::10] / np.maximum(np.linalg.norm(L[:, ::10], axis=1, keepdims=True), 1e-12) + sim = D @ D.T + np.fill_diagonal(sim, -2) + shift = int(20000 / GHOSTS_DV) + out, rec = [], [] + for i, n in enumerate(names): + ref = np.argsort(sim[i])[::-1][:twins] + # a star whose nearest twin is unlike it keeps its own lines in the residual, which then echoes itself + if sim[i, ref[0]] < twin_r: + continue + # the correlation's noise grows as the overlap of the two spectra shrinks, as one over its square root; shifts leaving less than a fifth of the coverage are not read + c, share = ghosts_xcorr(ghosts_residual(L[i], L[ref]), L[i], kmax) + grow = np.sqrt(share) + use = far & (share >= min_overlap) + c = c * grow + width = 1.4826 * float(np.median(np.abs(c[use] - np.median(c[use])))) + z = np.where(use, (c - np.median(c[use])) / max(width, 1e-12), -np.inf) + j = int(np.argmax(z)) + out.append(dict(star=n, nspec=stacks[n][1], z=float(z[j]), v=float(lag[j]), depth=float(c[j] / grow[j]), width=width, twin=names[ref[0]], sim=float(sim[i, ref[0]]))) + # the same star with a copy of its own lines laid 20,000 km/s redward at depth INJECT + g = L[i].copy() + g[shift:] += inject * L[i][:-shift] + cg = ghosts_xcorr(ghosts_residual(g, L[ref]), g, kmax)[0] * grow + rec.append(float((cg[kmax + shift] - np.median(cg[use])) / max(width, 1e-12))) + rec = np.array(rec) + zs = np.array([o["z"] for o in out]) + hits = [o for o in out if o["z"] >= z_min] + # a sail moves at its own speed, so a shift that other stars' strongest peaks share belongs to the spectra, not to a body + for o in hits: + o["shared"] = [p["star"] for p in out if p is not o and p["z"] >= 5 and abs(p["v"] - o["v"]) <= shared_kms] + o["vet"] = "shared-feature" if o["shared"] else None + inst = Counter(o["star"].split(":")[0] for o in out) + print("%d stacks with a twin at r %g (%s); the strongest copy of each star's own lines between %g and %g km/s either way: median %.1f widths, the largest %.1f, %d at %g or more, %d of them at a shift other stars share; a copy of %.1f per cent depth at 20,000 km/s scores a median %.1f; the median width is %.2g of the star's line strength" % ( + len(out), twin_r, ", ".join("%s %d" % kv for kv in sorted(inst.items())), v_min, v_max, float(np.median(zs)), float(zs.max()), len(hits), z_min, + sum(o["vet"] == "shared-feature" for o in hits), 100 * inject, float(np.median(rec)), float(np.median([o["width"] for o in out])))) + for o in sorted(hits, key=lambda o: -o["z"]): + print(" %-30s %3d spectra z %5.1f at %+9.1f km/s, depth %.4f (width %.4f); shared with %s" % (o["star"], o["nspec"], o["z"], o["v"], o["depth"], o["width"], ", ".join(o["shared"]) or "none")) + json.dump(dict(stars=out, injected=rec.tolist()), open(core.results("ghost_spectra.json"), "w"), indent=1) + if record: + core.record_run( + "eso_ghost_spectra", "Ghost spectra", "ESO archive spectra of the laser-line runs: rest-frame stacks of HARPS, ESPRESSO, FEROS and UVES, 4100-5600 A", + "stacks covering %g of the range with a twin at r %g: %d (%s)" % (coverage, twin_r, len(out), ", ".join("%s %d" % kv for kv in sorted(inst.items()))), + os.path.abspath(__file__), "ghosts", len(out), "stars", dict(v_min=v_min, v_max=v_max, z_min=z_min, twins=twins, inject=inject, coverage=coverage, twin_r=twin_r, shared_kms=shared_kms), + "each star's own correlation over all shifts beyond %g km/s, in robust widths; its strongest peak's median is %.1f" % (v_min, float(np.median(zs))), + "a copy of the star's lines at %g-%g km/s either way; one of %.1f per cent depth scores a median %.1f, so about %.1f per cent stands at %g" % ( + v_min, v_max, 100 * inject, float(np.median(rec)), 100 * inject * z_min / max(float(np.median(rec)), 1e-9), z_min), + "%d at %g widths or more, the largest %.1f; %d at a shift other stars share" % (len(hits), z_min, float(zs.max()), sum(o["vet"] == "shared-feature" for o in hits)), + [dict(target="gaia_dr3:%s" % o["star"].split(":")[1], stat=round(o["z"], 1), unit="robust widths of the star's correlation", vet=o["vet"], + note="%s stack of %d spectra; copy at %+.0f km/s of depth %.4f; shared with %s" % (o["star"].split(":")[0], o["nspec"], o["v"], o["depth"], ", ".join(o["shared"]) or "none")) + for o in hits]) + print("recorded") + return out, hits, rec + +combs_DOC = r"""Optical frequency combs: each rest-frame stack of the ESO laser-line runs (HARPS, ESPRESSO, FEROS and UVES, 4100-5600 A) covering 60 per cent of the range whose nearest twin correlates at 0.9, its lines taken out by the scaled median of its six most alike stars, the residual laid on a grid uniform in frequency and its Fourier power read at every line spacing from 20 GHz to 1 THz against the power's own running median, the twins' residuals read the same way; a mode-locked laser's light is hundreds of lines at one spacing, each too faint to notice alone, which add into one peak at the spacing and its harmonics, where the bands of molecules space their lines unevenly and the twins share them; a comb of known depth laid into every stack measures the reach. + + python -I seti.py composition combs [record] [--ghz-min 20] [--ghz-max 1000] [--ratio-min 30] [--twins 6] [--inject 0.002]""" + + +def combs_power(R, lnlam): + """The Fourier power of a residual laid on a grid uniform in frequency, with the line spacing (GHz) of each Fourier bin.""" + nu = 299792.458e3 / np.exp(lnlam) * 1e10 / 1e9 # GHz, from wavelength in Angstrom + o = np.argsort(nu) + grid = np.linspace(nu[o][0], nu[o][-1], len(nu)) + x = np.interp(grid, nu[o], R[o]) * np.hanning(len(grid)) + p = np.abs(np.fft.rfft(x)) ** 2 + q = np.fft.rfftfreq(len(grid), d=grid[1] - grid[0]) + with np.errstate(divide="ignore"): + return p, np.where(q > 0, 1.0 / q, np.inf) + + +def combs_inject(lnlam, spacing_ghz, depth, width_kms=3.0): + """Line depths of a comb of unresolved lines at one spacing in frequency across the grid.""" + nu = 299792.458e3 / np.exp(lnlam) * 1e10 / 1e9 + lines = np.arange(nu.min() + spacing_ghz / 3, nu.max(), spacing_ghz) + sig = width_kms / 299792.458 * nu + k = np.clip(np.searchsorted(-nu, -lines), 0, len(nu) - 1) + out = np.zeros(len(nu)) + for i, c in zip(k, lines): + lo, hi = max(i - 30, 0), min(i + 30, len(nu)) + out[lo:hi] += depth * np.exp(-0.5 * ((nu[lo:hi] - c) / sig[lo:hi]) ** 2) + return out + + +def combs_local(p): + """Fourier power over its own running median across 201 bins, the level a comb's spike stands above.""" + from scipy.ndimage import median_filter + return p / np.maximum(median_filter(p, size=201, mode="nearest"), 1e-30) + + +def combs_main(record=False, ghz_min=20.0, ghz_max=1000.0, ratio_min=30.0, twins=6, inject=0.002, coverage=0.6, twin_r=0.9): + stacks = {} + for inst in ("HARPS", "ESPRESSO", "FEROS", "UVES"): + for n, (T, nspec, v, rv) in elements_stacks(inst).items(): + stacks["%s:%s" % (inst, n)] = (T, nspec) + names = sorted(stacks) + L = np.array([ghosts_lines(stacks[n][0]) for n in names]) + keep = (L != 0).mean(axis=1) >= coverage + names, L = [n for n, k in zip(names, keep) if k], L[keep] + lnlam = np.arange(np.log(elements_GRID[0]), np.log(elements_GRID[-1]), GHOSTS_DV / elements_C)[:L.shape[1]] + D = L[:, ::10] / np.maximum(np.linalg.norm(L[:, ::10], axis=1, keepdims=True), 1e-12) + sim = D @ D.T + np.fill_diagonal(sim, -2) + good = [i for i in range(len(names)) if sim[i].max() >= twin_r] + refs = {i: np.argsort(sim[i])[::-1][:twins] for i in good} + P, sp = {}, None + for i in set(good) | {j for r in refs.values() for j in r}: + R = ghosts_residual(L[i], L[refs[i]]) if i in refs else ghosts_residual(L[i], L[np.argsort(sim[i])[::-1][:twins]]) + P[i], sp = combs_power(R, lnlam) + band = (sp >= ghz_min) & (sp <= ghz_max) + comb = combs_inject(lnlam, 50.0, inject) + Q = {i: combs_local(P[i]) for i in P} + out = [] + for i in good: + ratio = np.where(band, Q[i], 0) + k = int(np.argmax(ratio)) + # the same star with a comb of 50 GHz spacing laid in at depth INJECT + pg, _ = combs_power(ghosts_residual(L[i] + comb, L[refs[i]]), lnlam) + kk = int(np.argmin(np.abs(sp - 50.0))) + rec = float(np.max(combs_local(pg)[kk - 2:kk + 3])) + h2 = int(np.argmin(np.abs(sp - sp[k] / 2))) if np.isfinite(sp[k]) else k + out.append(dict(star=names[i], nspec=stacks[names[i]][1], ratio=float(ratio[k]), ghz=float(sp[k]), harmonic=float(np.max(Q[i][h2 - 1:h2 + 2])), rec=rec, + twins=float(np.median([np.max(Q[j][k - 1:k + 2]) for j in refs[i]])))) + rs = np.array([o["ratio"] for o in out]) + rec = np.array([o["rec"] for o in out]) + hits = [o for o in out if o["ratio"] >= ratio_min] + for o in hits: + # a spacing other stars' strongest peaks share belongs to the instrument or the spectra + o["shared"] = [p["star"] for p in out if p is not o and p["ratio"] >= ratio_min / 3 and abs(p["ghz"] / o["ghz"] - 1) < 0.01] + o["vet"] = "shared-feature" if o["shared"] or o["twins"] >= ratio_min / 3 else None + print("%d stacks; the strongest Fourier power of each residual over its own running median between %g GHz and %g THz of line spacing: median %.1f, the largest %.1f, %d at %g or more (%d shared with other stars or the twins); a comb of %.1f per cent depth at 50 GHz gives a median %.0f" % ( + len(out), ghz_min, ghz_max / 1000, float(np.median(rs)), float(rs.max()), len(hits), ratio_min, sum(o["vet"] == "shared-feature" for o in hits), 100 * inject, float(np.median(rec)))) + for o in sorted(out, key=lambda o: -o["ratio"])[:12]: + print(" %-30s %3d spectra power %6.1f times its level at %7.1f GHz, second harmonic %5.1f, twins %5.1f; shared %s" % (o["star"], o["nspec"], o["ratio"], o["ghz"], o["harmonic"], o["twins"], ", ".join(o.get("shared", [])) or "-")) + json.dump(out, open(core.results("optical_combs.json"), "w"), indent=1) + if record: + core.record_run( + "eso_optical_combs", "Optical frequency combs", "ESO archive spectra of the laser-line runs: rest-frame stacks of HARPS, ESPRESSO, FEROS and UVES, 4100-5600 A", + "stacks covering %g of the range with a twin at r %g: %d" % (coverage, twin_r, len(out)), os.path.abspath(__file__), "combs", len(out), "stars", + dict(ghz_min=ghz_min, ghz_max=ghz_max, ratio_min=ratio_min, twins=twins, inject=inject, coverage=coverage, twin_r=twin_r), + "each residual's own running median of power over 201 Fourier bins; each star's strongest ratio has median %.1f" % float(np.median(rs)), + "a residual's Fourier power at one line spacing of %g-%g GHz %g times its running median; a comb of %.1f per cent depth at 50 GHz gives a median %.0f" % (ghz_min, ghz_max, ratio_min, 100 * inject, float(np.median(rec))), + "%d at %g or more, the largest %.1f; %d at a spacing other stars share" % (len(hits), ratio_min, float(rs.max()), sum(o["vet"] == "shared-feature" for o in hits)), + [dict(target="gaia_dr3:%s" % o["star"].split(":")[1], stat=round(o["ratio"], 1), unit="residual power over the twins' at the strongest spacing", vet=o["vet"], + note="%s stack of %d spectra; spacing %.1f GHz, second harmonic %.1f, twins %.1f; shared with %s" % (o["star"].split(":")[0], o["nspec"], o["ghz"], o["harmonic"], o["twins"], ", ".join(o["shared"]) or "none")) + for o in hits]) + print("recorded") + + +APPROACHES = { + "combs": (lambda: core.run_cli(combs_main), combs_DOC), + "ghosts": (lambda: core.run_cli(ghosts_main), ghosts_DOC), + "subdwarfindex": (lambda: core.run_cli(subdwarfindex_main), subdwarfindex_DOC), + "misfitspectra": (lambda: core.run_cli(misfitspectra_main), misfitspectra_DOC), + "xpmisfits": (lambda: core.run_cli(xpmisfits_main), xpmisfits_DOC), + "xpworst": (lambda: core.run_cli(xpworst_main), xpworst_DOC), + "worstfits": (lambda: core.run_cli(worstfits_main), worstfits_DOC), + "singlesd": (lambda: core.run_cli(singlesd_main), singlesd_DOC), + "carbondwarfs": (lambda: core.run_cli(carbondwarfs_main), carbondwarfs_DOC), + "limeteoritic": (lambda: core.run_cli(limeteoritic_main), limeteoritic_DOC), + "zirconium": (lambda: core.run_cli(zirconium_main), zirconium_DOC), + "europium": (lambda: core.run_cli(europium_main), europium_DOC), + "rvjump": (lambda: core.run_cli(rvjump_main), rvjump_DOC), + "ceriumonly": (lambda: core.run_cli(ceriumonly_main), ceriumonly_DOC), + "evenheavy": (lambda: core.run_cli(evenheavy_main), evenheavy_DOC), + "haquiet": (lambda: core.run_cli(haquiet_main), haquiet_DOC), + "przybylski": (lambda: core.run_cli(przybylski_main), przybylski_DOC), + "apogeebad": (lambda: core.run_cli(apogeebad_main), apogeebad_DOC), + "sdssunknown": (lambda: core.run_cli(sdssunknown_main), sdssunknown_DOC), + "lamostunknown": (lambda: core.run_cli(lamostunknown_main), lamostunknown_DOC), + "desiunknown": (lambda: core.run_cli(desiunknown_main), desiunknown_DOC), + "zinc": (lambda: core.run_cli(zinc_main), zinc_DOC), + "mined": (lambda: core.run_cli(mined_main), mined_DOC), + "dibnear": (lambda: core.run_cli(dibnear_main), dibnear_DOC), + "spinbreak": (lambda: core.run_cli(spinbreak_main), spinbreak_DOC), + "lithium": (lithium_cli, lithium_DOC), + "misfit": (lambda: core.run_cli(misfit_main), misfit_DOC), + "cno": (lambda: core.run_cli(cno_main), cno_DOC), + "fission": (lambda: core.run_cli(fission_main), fission_DOC), + "elements": (elements_cli, elements_DOC), + "borra": (borra_cli, borra_DOC), + "gases": (gases_cli, gases_DOC), +} + + diff --git a/setitools/core.py b/setitools/core.py new file mode 100644 index 0000000000000000000000000000000000000000..d9e4de45ff59050bbbfd14ac42389663ab750e73 --- /dev/null +++ b/setitools/core.py @@ -0,0 +1,1882 @@ +"""Core of seti-tools: configuration, network access, archive clients, Kepler and TESS light curves, and the coverage store.""" +import csv +import hashlib +import http.client +import io +import json +import math +import os +import re +import sqlite3 +import sys +import threading +import time +import urllib.parse +import urllib.request +import warnings +import zipfile +from concurrent.futures import ThreadPoolExecutor + +import numpy as np + + +# -------------------------------------------------------------------------------------------------------------------- +# config: paths and resource caps from SETI_* variables, else the config file SETITOOLS_CONFIG names, else repository defaults + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +def _config_path(): + if os.environ.get("SETITOOLS_CONFIG"): + return os.environ["SETITOOLS_CONFIG"] + base = os.environ.get("APPDATA") or os.path.join(os.path.expanduser("~"), ".config") + return os.path.join(base, "setitools", "config.json") + + +_path = _config_path() +LOCAL = json.load(open(_path)) if os.path.exists(_path) else {} + + +def _setting(key, default, *env): + for name in env: + if os.environ.get(name): + return os.environ[name] + return LOCAL.get(key, default) + + +DATA = _setting("data", os.path.join(ROOT, "data"), "SETI_DATA") +WORK = _setting("work", os.path.join(ROOT, "work"), "SETI_WORK") +CACHE = _setting("cache", os.path.join(ROOT, "cache"), "SETI_CACHE") +RESULTS = _setting("results", os.path.join(ROOT, "results"), "SETI_RESULTS", "SETI_HERE") +COVERAGE = _setting("coverage", os.path.join(ROOT, "coverage.db"), "SETI_COVERAGE") + +MAX_PROCS = int(LOCAL.get("max_procs", 8)) +MAX_CONNECTIONS = int(LOCAL.get("max_connections", 32)) + + +def data(*parts): + """Path under the bulk-data directory.""" + return os.path.join(DATA, *parts) + + +def results(*parts): + """Path under the results directory.""" + return os.path.join(RESULTS, *parts) + + +# -------------------------------------------------------------------------------------------------------------------- +# util: catalogue values, angles, proper motion, Gaia photometry, running statistics, warnings + +def quiet_warnings(): + """Silence the expected astropy and numpy warnings (empty, all-NaN, invalid, overflow, divide); show all others.""" + warnings.filterwarnings("ignore", category=RuntimeWarning, + message=r"(Mean of empty slice|All-NaN (slice|axis) encountered|invalid value encountered" + r"|divide by zero encountered|overflow encountered|Degrees of freedom <= 0)") + try: + from astropy.utils.exceptions import AstropyWarning + except ImportError: + return + warnings.filterwarnings("ignore", category=AstropyWarning) + + +def num(x, missing=None): + """Catalogue value as a finite float, else missing.""" + try: + v = float(x) + except (TypeError, ValueError): + return missing + return v if math.isfinite(v) else missing + + +def sep_arcsec(ra1, dec1, ra2, dec2): + """Angular separation in arcsec (haversine).""" + r1, d1, r2, d2 = (math.radians(float(v)) for v in (ra1, dec1, ra2, dec2)) + s = math.sin((d2 - d1) / 2) ** 2 + math.cos(d1) * math.cos(d2) * math.sin((r2 - r1) / 2) ** 2 + return math.degrees(2 * math.asin(min(1.0, math.sqrt(s)))) * 3600.0 + + +def star_at(ra, dec, pmra, pmdec, epoch, at): + """Position (deg) at Julian year at from epoch and proper motion (mas/yr, pmra with cos dec), linear in time.""" + dt = at - epoch + return (ra + (pmra or 0.0) / 3.6e6 * dt / max(math.cos(math.radians(dec)), 1e-6), + dec + (pmdec or 0.0) / 3.6e6 * dt) + + +def mjd_to_year(mjd): + """Julian year of an MJD.""" + return 2000.0 + (mjd - 51544.5) / 365.25 + + +def ms_luminosity(mass_msun): + """Main-sequence luminosity (L_sun): M^4 above 0.43 M_sun, 0.23 M^2.3 below.""" + m = float(mass_msun) + return m ** 4 if m >= 0.43 else 0.23 * m ** 2.3 + + +def cstar(excess_factor, bp_rp): + """Corrected BP/RP flux excess C* (Riello et al. 2021, eq. 6); a companion lost by the G fit raises it.""" + c, x = float(excess_factor), float(bp_rp) + if x < 0.5: + return c - (1.154360 + 0.033772 * x + 0.032277 * x * x) + if x < 4.0: + return c - (1.162004 + 0.011464 * x + 0.049255 * x * x - 0.005879 * x ** 3) + return c - (1.057572 + 0.140537 * x) + + +def cstar_sigma(g): + """Scatter of C* at G magnitude g (Riello et al. 2021, eq. 18).""" + return 0.0059898 + 8.817481e-12 * float(g) ** 7.618399 + + +def gaia_g_scatter(flux, flux_error, n_obs): + """Per-observation G scatter (mag) implied by Gaia's mean flux error.""" + return 1.0857 * float(flux_error) * math.sqrt(float(n_obs)) / float(flux) + + +def robust_sigma(x): + """1.4826 times the median absolute deviation.""" + x = np.asarray(x, float) + x = x[np.isfinite(x)] + if not len(x): + return float("nan") + return float(1.4826 * np.median(np.abs(x - np.median(x)))) + + +def running(x, y, at, half=100): + """Median and robust scatter of y over the 2*half rank-nearest points of x at each value of at.""" + o = np.argsort(x) + xs, ys = np.asarray(x, float)[o], np.asarray(y, float)[o] + med, sd = [], [] + for v in np.atleast_1d(at): + j = np.searchsorted(xs, v) + sl = ys[max(j - half, 0):min(j + half, len(xs))] + m = float(np.median(sl)) + med.append(m) + sd.append(float(1.4826 * np.median(np.abs(sl - m)))) + return np.array(med), np.array(sd) + + +# -------------------------------------------------------------------------------------------------------------------- +# net: HTTP and TAP access with retries, byte ranges and bounded parallelism + +# user agent naming the software and, when configured, a contact address +UA = {"User-Agent": "seti-tools (+https://huggingface.co/phanerozoic/seti-tools%s) Python-urllib/%d.%d" + % (("; " + LOCAL["contact"]) if LOCAL.get("contact") else "", *sys.version_info[:2])} +# soft fetches that failed other than as missing files, as (url, error) +SOFT_FAILURES = [] + +# TAP sync endpoints; ESO answers only HTTPS GET, SIMBAD wants lower-case parameters +TAP = { + "gaia": "https://gea.esac.esa.int/tap-server/tap/sync", + "simbad": "https://simbad.cds.unistra.fr/simbad/sim-tap/sync", + "eso": "https://archive.eso.org/tap_obs/sync", + "irsa": "https://irsa.ipac.caltech.edu/TAP/sync", + "alma": "https://almascience.eso.org/tap/sync", + "casda": "https://casda.csiro.au/casda_vo_tools/tap/sync", + "datacentral": "https://datacentral.org.au/vo/tap/sync", + "vizier": "https://tapvizier.cds.unistra.fr/TAPVizieR/tap/sync", + "exoplanets": "https://exoplanetarchive.ipac.caltech.edu/TAP/sync", + "datalab": "https://datalab.noirlab.edu/tap/sync", + "xsa": "https://nxsa.esac.esa.int/tap-server/tap/sync", + "lamost": "https://www.lamost.org/dr10/v2.0/voservice/tap/sync", +} +MAXREC = 10000000 + + +def get(url, headers=None, data=None, timeout=120, retries=4, byte_range=None, soft=False, pause=5): + """Bytes of a URL with retries and growing pauses; byte_range slices; soft returns None on 404 or exhausted retries and logs the latter.""" + h = dict(UA) + if headers: + h.update(headers) + if byte_range: + h["Range"] = "bytes=%d-%d" % byte_range + last = None + for attempt in range(retries): + try: + req = urllib.request.Request(url, headers=h, data=data) + return urllib.request.urlopen(req, timeout=timeout).read() + except urllib.error.HTTPError as e: + last = e + if soft and e.code == 404: + return None + except Exception as e: + last = e + if attempt < retries - 1: + time.sleep(pause * (attempt + 1)) + if soft: + SOFT_FAILURES.append((url, repr(last)[:200])) + sys.stderr.write("net.get: %s failed %d times (%s); returned None\n" % (url, retries, repr(last)[:200])) + return None + raise last + + +_CONNECTIONS = threading.local() + + +def _drop_connection(scheme, host): + c = getattr(_CONNECTIONS, "pool", {}).pop((scheme, host), None) + if c is not None: + c.close() + + +def _kept_get(scheme, host, path, headers, timeout): + """Response on the thread's kept connection to host, reopened when the server closed it.""" + pool = getattr(_CONNECTIONS, "pool", None) + if pool is None: + pool = _CONNECTIONS.pool = {} + for fresh in (False, True): + c = None if fresh else pool.get((scheme, host)) + new = c is None + if new: + cls = http.client.HTTPSConnection if scheme == "https" else http.client.HTTPConnection + c = pool[(scheme, host)] = cls(host, timeout=timeout) + try: + c.request("GET", path, headers=headers) + return c.getresponse() + except Exception: + _drop_connection(scheme, host) + if new: + raise + + +class RangeError(IOError): + """Range past the end of the file (206 without it, or 416); not retried.""" + + +def get_ranges(url, ranges, timeout=60, retries=4, pause=5, size=False): + """Several (first, last) slices of one URL in one request, with the file length when size is set; raises unless 206 with every range.""" + u = urllib.parse.urlsplit(url) + path = u.path + ("?" + u.query if u.query else "") + h = dict(UA) + h["Range"] = "bytes=" + ",".join("%d-%d" % r for r in ranges) + last = None + for attempt in range(retries): + try: + r = _kept_get(u.scheme, u.netloc, path, h, timeout) + if r.status == 416: + # IRSA refuses the whole request when any range starts past the end + _drop_connection(u.scheme, u.netloc) + raise RangeError("%s answered 416: a range lies past the end of the file" % url) + if r.status != 206: + _drop_connection(u.scheme, u.netloc) + raise IOError("%s answered %d to a range request" % (url, r.status)) + body = r.read() + parts = [] + ctype = r.getheader("Content-Type", "") + if ctype.startswith("multipart/byteranges"): + boundary = ctype.split("boundary=")[1].strip().strip('"').encode() + for chunk in body.split(b"--" + boundary)[1:]: + head, sep, data = chunk.partition(b"\r\n\r\n") + m = re.search(rb"Content-Range:\s*bytes (\d+)-(\d+)/(\d+)", head, re.I) + if sep and m: + a, b, total = int(m.group(1)), int(m.group(2)), int(m.group(3)) + parts.append((a, b, total, data[:b - a + 1])) + else: + m = re.match(r"bytes (\d+)-(\d+)/(\d+)", r.getheader("Content-Range", "")) + a, b, total = int(m.group(1)), int(m.group(2)), int(m.group(3)) + parts.append((a, b, total, body[:b - a + 1])) + out = [] + for first, end in ranges: + # a range past the end comes back cut at the end + p = next((p for p in parts if p[0] <= first <= p[1] and (end <= p[1] or p[1] == p[2] - 1)), None) + if p is None: + raise RangeError("%s left out bytes %d-%d" % (url, first, end)) + out.append(p[3][first - p[0]:end - p[0] + 1]) + return (out, parts[0][2]) if size else out + except RangeError: + raise + except Exception as e: + last = e + _drop_connection(u.scheme, u.netloc) + if attempt < retries - 1: + time.sleep(pause * (attempt + 1)) + raise last + + +def download(url, path, size=None, headers=None, retries=4, timeout=3600, pause=20, chunk=1 << 20): + """Stream a URL to path through path.tmp with retries; True when complete (and size bytes long when given).""" + import os + if os.path.exists(path) and (size is None or os.path.getsize(path) == size): + return True + h = dict(UA) + h.update(headers or {}) + tmp = path + ".tmp" + for attempt in range(retries): + try: + with urllib.request.urlopen(urllib.request.Request(url, headers=h), timeout=timeout) as r, open(tmp, "wb") as fh: + while True: + b = r.read(chunk) + if not b: + break + fh.write(b) + if size is None or os.path.getsize(tmp) == size: + os.replace(tmp, path) + return True + except Exception: + pass + time.sleep(pause * (attempt + 1)) + return False + + +def tap(service, query, fmt="csv", method=None, timeout=600, maxrec=None): + """ADQL on a named TAP service or sync URL: rows as dicts (csv) or text; MAXREC set to avoid silent 50000-row cuts.""" + url = TAP.get(service, service) + if maxrec is None and service != "datalab": + maxrec = MAXREC + params = dict(REQUEST="doQuery", LANG="ADQL", FORMAT=fmt, QUERY=query) + if maxrec: + params["MAXREC"] = maxrec + if service == "simbad": + params = dict(request="doQuery", lang="adql", format="json" if fmt == "json" else fmt, query=query, + maxrec=maxrec) + method = method or ("GET" if service in ("eso", "irsa", "alma", "casda", "datacentral", "exoplanets", "vizier", + "datalab") else "POST") + enc = urllib.parse.urlencode(params) + if method == "GET": + raw = get(url + "?" + enc, timeout=timeout) + else: + raw = get(url, data=enc.encode(), timeout=timeout) + text = raw.decode("utf-8-sig", errors="replace") + if fmt == "votable": + if b"QUERY_STATUS\" value=\"ERROR" in raw: + raise IOError("%s answered with an error: %s" % (service, text[:400])) + elif fmt in ("csv", "json") and text.lstrip()[:1] == "<": + # a maintenance or error page must not pass for rows + raise IOError("%s answered with an HTML or XML page instead of %s: %s" % (service, fmt, text[:200])) + if fmt == "csv": + return list(csv.DictReader(io.StringIO(text))) + if fmt == "json": + return json.loads(text) + if fmt == "votable": + return votable_rows(raw) + return text + + +def tap_by_ids(service, ids, query, key="source_id", size=2000, timeout=600, tries=4): + """Rows of an IN (%s) query by id in batches, keyed by key; a batch failing every retry raises.""" + out = {} + ids = [str(x) for x in ids] + for i in range(0, len(ids), size): + chunk = ids[i:i + size] + part, last = None, None + for attempt in range(tries): + try: + part = tap(service, query % ",".join(chunk), maxrec=3 * size, timeout=timeout) + break + except Exception as e: + last = e + print("batch %d attempt %d: %s" % (i, attempt, repr(e)[:120]), flush=True) + if attempt < tries - 1: + time.sleep(20 * (attempt + 1)) + if part is None: + raise IOError("%s: the batch of ids %d-%d of %d failed %d times: %r" + % (service, i, i + len(chunk) - 1, len(ids), tries, last)) + for p in part: + out[str(p[key])] = p + print(" %d of %d ids; %d rows" % (min(i + size, len(ids)), len(ids), len(out)), flush=True) + return out + + +def votable_rows(raw): + """Rows of a VOTable as dicts of Python values.""" + from astropy.io.votable import parse_single_table + t = parse_single_table(io.BytesIO(raw)).to_table() + return [dict(zip(t.colnames, [x.item() if hasattr(x, "item") else x for x in row])) for row in t] + + +GAIA_ID_MAX = 6917528997577384320 + + +def gaia_by_range(query, n=24, maxrec=None): + """Rows of a Gaia query too long for the archive's 60-s cap on an anonymous statement, run as N asynchronous jobs over equal ranges of source_id (which follows position on the sky): QUERY holds {lo} and {hi} for a BETWEEN on the joined source_id.""" + rows = [] + step = GAIA_ID_MAX // n + 1 + for k in range(n): + rows += tap_async("gaia", query.format(lo=k * step, hi=min((k + 1) * step - 1, GAIA_ID_MAX)), maxrec=maxrec, poll=5) + return rows + + +def tap_async(service, query, fmt="csv", maxrec=None, poll=15, limit=14400): + """ADQL as an asynchronous TAP job (create, start, poll, read): rows as dicts (csv) or text.""" + import re + url = TAP.get(service, service).rsplit("/sync", 1)[0] + "/async" + params = dict(REQUEST="doQuery", LANG="ADQL", FORMAT=fmt, QUERY=query, PHASE="RUN") + if maxrec is None and service != "datalab": + maxrec = MAXREC + if maxrec: + params["MAXREC"] = maxrec + req = urllib.request.Request(url, data=urllib.parse.urlencode(params).encode(), headers=UA) + + class NoRedirect(urllib.request.HTTPRedirectHandler): + def redirect_request(self, *a, **k): + return None + + try: + resp = urllib.request.build_opener(NoRedirect).open(req, timeout=120) + job = resp.geturl() + except urllib.error.HTTPError as e: + if e.code not in (301, 302, 303): + raise + job = e.headers["Location"] + if job.rstrip("/").endswith("/async"): + raise IOError("%s returned no job location" % service) + t0 = time.time() + while True: + phase = get(job + "/phase", timeout=60).decode().strip() + if phase == "COMPLETED": + break + if phase in ("ERROR", "ABORTED"): + err = get(job + "/error", timeout=60, soft=True) or get(job, timeout=60) + # the reason follows the echoed query, after the markup + msg = re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", err.decode("utf-8", "replace"))).strip() + raise IOError("%s job %s: %s" % (service, phase, msg[-600:])) + if time.time() - t0 > limit: + raise IOError("%s job still %s after %d s: %s" % (service, phase, limit, job)) + time.sleep(poll) + text = get(job + "/results/result", timeout=1800).decode("utf-8-sig", errors="replace") + if fmt in ("csv", "json") and text.lstrip()[:1] == "<": + raise IOError("%s answered with an HTML or XML page instead of %s: %s" % (service, fmt, text[:200])) + if fmt == "csv": + return list(csv.DictReader(io.StringIO(text))) + if fmt == "json": + return json.loads(text) + return text + + +def pmap(fn, items, threads=8): + """fn over items on a bounded thread pool, results in order.""" + with ThreadPoolExecutor(threads) as ex: + return list(ex.map(fn, items)) + + +# -------------------------------------------------------------------------------------------------------------------- +# remotezip: members of a remote zip archive read through HTTP byte ranges + +HEADERS = dict(UA, Accept="*/*") + + +class RangeFile(io.RawIOBase): + """Seekable read-only file over a ranged URL, cached in 1 MB blocks.""" + + def __init__(self, url, block=1 << 20): + self.url, self.block, self.pos, self.cache = url, block, 0, {} + req = urllib.request.Request(url, method="HEAD", headers=HEADERS) + with urllib.request.urlopen(req, timeout=120) as r: + self.size = int(r.headers["Content-Length"]) + + def seekable(self): + return True + + def readable(self): + return True + + def tell(self): + return self.pos + + def seek(self, off, whence=0): + self.pos = off if whence == 0 else self.pos + off if whence == 1 else self.size + off + return self.pos + + def _block(self, k): + if k not in self.cache: + lo, hi = k * self.block, min((k + 1) * self.block, self.size) - 1 + req = urllib.request.Request(self.url, headers=dict(HEADERS, Range="bytes=%d-%d" % (lo, hi))) + with urllib.request.urlopen(req, timeout=300) as r: + self.cache[k] = r.read() + return self.cache[k] + + def read(self, n=-1): + if n is None or n < 0: + n = self.size - self.pos + out = bytearray() + while n > 0 and self.pos < self.size: + k, o = divmod(self.pos, self.block) + b = self._block(k)[o:o + n] + out += b + self.pos += len(b) + n -= len(b) + return bytes(out) + + def readinto(self, buf): + b = self.read(len(buf)) + buf[:len(b)] = b + return len(b) + + +def open_zip(url): + """zipfile.ZipFile over a remote archive.""" + return zipfile.ZipFile(RangeFile(url)) + + +# -------------------------------------------------------------------------------------------------------------------- +# archives: clients for the public archives, returning rows or bytes + +# ---------------------------------------------------------------------------------------------- Gaia and SIMBAD + + +def gaia(query): + """Rows of ADQL on the Gaia archive.""" + return tap("gaia", query) + + +def gaia_rvs_spectra(source_ids, outdir, batch=50): + """Gaia DR3 mean RVS spectra (846-870 nm) written as CSV files in outdir; returns the paths.""" + os.makedirs(outdir, exist_ok=True) + paths = [] + for k in range(0, len(source_ids), batch): + ids = [str(s) for s in source_ids[k:k + batch]] + u = "https://gea.esac.esa.int/data-server/data?" + urllib.parse.urlencode(dict( + RETRIEVAL_TYPE="RVS", RELEASE="Gaia DR3", DATA_STRUCTURE="DATAMODEL_STANDARD", FORMAT="csv", + ID=",".join("Gaia DR3 " + i for i in ids))) + b = get(u, timeout=300) + if b[:2] == b"PK": + z = zipfile.ZipFile(io.BytesIO(b)) + for n in z.namelist(): + base = os.path.basename(n) + if base.startswith("RVS_Gaia_DR3_") and base.endswith(".csv"): + p = os.path.join(outdir, base) + open(p, "wb").write(z.read(n)) + paths.append(p) + elif len(ids) == 1 and b.startswith(b"source_id"): + p = os.path.join(outdir, "RVS_Gaia_DR3_%s.csv" % ids[0]) + open(p, "wb").write(b) + paths.append(p) + return paths + + +def simbad(query): + """Rows of ADQL on SIMBAD.""" + d = tap("simbad", query, fmt="json") + names = [m["name"] for m in d["metadata"]] + return [dict(zip(names, r)) for r in d["data"]] + + +def simbad_otypes(identifiers, batch=300): + """Every SIMBAD object type of each identifier, own and listed: {identifier: set}.""" + out = {} + ids = list(identifiers) + for k in range(0, len(ids), batch): + q = ("SELECT i.id, o.otype FROM ident AS i JOIN otypes AS o ON i.oidref = o.oidref WHERE i.id IN (%s)" + % ",".join("'%s'" % x.replace("'", "''") for x in ids[k:k + batch])) + for r in simbad(q): + out.setdefault(r["id"], set()).add(str(r["otype"]).strip()) + return out + + +def simbad_types_near(ra, dec, radius_deg): + """Counter of SIMBAD main object types within radius_deg of a position.""" + from collections import Counter + q = ("SELECT b.otype FROM basic AS b WHERE CONTAINS(POINT('ICRS', b.ra, b.dec), CIRCLE('ICRS', %f, %f, %f)) = 1" + % (ra, dec, radius_deg)) + return Counter(str(r["otype"]).strip() for r in simbad(q)) + + +# ------------------------------------------------------------------------------------------------ Solar System + + +def ssocard(number): + """SsODNet taxonomy class, albedo and diameter (km) of a numbered minor body; None where unknown.""" + b = get("https://ssp.imcce.fr/webservices/ssodnet/api/ssocard/%d" % int(number), timeout=60, retries=2, + soft=True) + if not b: + return None, None, None + try: + ph = json.loads(b)["parameters"]["physical"] + except (ValueError, KeyError, TypeError): + return None, None, None + c = ph.get("taxonomy", {}).get("class") + + def val(d): + return d.get("value") if isinstance(d, dict) else d + return val(c), val(ph.get("albedo")), val(ph.get("diameter")) + + +# ----------------------------------------------------------------------------------------------- XMM-Newton + + +def xsa(query): + """Rows of ADQL on the XMM-Newton Science Archive.""" + return tap("xsa", query) + + +# ------------------------------------------------------------------------------------------------------- ESO + + +def eso_spectra(ra, dec, collection, radius_deg=0.0083, covers=None): + """ESO Phase 3 1D spectra of one instrument near a position; covers=(lo, hi) in metres keeps spanning spectra.""" + q = ("SELECT dp_id, target_name, t_min, snr, em_min, em_max, em_res_power, s_ra, s_dec FROM ivoa.ObsCore " + "WHERE obs_collection='%s' AND dataproduct_type='spectrum' AND " + "CONTAINS(POINT('ICRS',s_ra,s_dec),CIRCLE('ICRS',%f,%f,%f))=1" % (collection, ra, dec, radius_deg)) + if covers: + q += " AND em_min < %g AND em_max > %g" % covers + return tap("eso", q) + + +def eso_download(dp_id, path): + """Download one public ESO product to path; True when a FITS file arrived.""" + b = get("https://dataportal.eso.org/dataportal_new/file/" + dp_id, timeout=300) + if b[:6] != b"SIMPLE": + return False + tmp = path + ".tmp" + open(tmp, "wb").write(b) + os.replace(tmp, path) + return True + + +# --------------------------------------------------------------------------------------------------- IRSA + + +def irsa(query): + """Rows of ADQL on IRSA.""" + return tap("irsa", query) + + +ALLWISE_NUM = ("ra", "dec", "w1mpro", "w2mpro", "w3mpro", "w3sigmpro", "w4mpro", "w4sigmpro", "w3snr", "w4snr", + "k_m_2mass") + + +def allwise_nearest(ra, dec, radius_arcsec=6.0): + """Nearest AllWISE source within the radius as a dict, or None.""" + import math + q = ("SELECT ra, dec, w1mpro, w2mpro, w3mpro, w3sigmpro, w4mpro, w4sigmpro, w3snr, w4snr, k_m_2mass, ph_qual, " + "cc_flags, ext_flg FROM allwise_p3as_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, " + "%.6f))=1" % (ra, dec, radius_arcsec / 3600.0)) + rows = tap("irsa", q) + if not rows: + return None + for r in rows: + for k in ALLWISE_NUM: + r[k] = float(r[k]) if r.get(k) not in (None, "") else None + cosd = math.cos(math.radians(dec)) + return min(rows, key=lambda r: math.hypot((r["ra"] - ra) * cosd, r["dec"] - dec)) + + +def xmatch(rows, cat, radius_arcsec, id_col="source_id", ra_col="ra", dec_col="dec", timeout=900): + """CDS XMatch of rows (id, ra, dec in deg) against a VizieR catalogue or SIMBAD within radius_arcsec; rows with angDist; a server error is retried four times, 30 seconds more apart each time.""" + import csv + import requests + buf = io.StringIO() + w = csv.writer(buf) + w.writerow([id_col, ra_col, dec_col]) + for r in rows: + w.writerow([r[id_col], "%.7f" % float(r[ra_col]), "%.7f" % float(r[dec_col])]) + for attempt in range(5): + resp = requests.post("http://cdsxmatch.u-strasbg.fr/xmatch/api/v1/sync", + data=dict(request="xmatch", distMaxArcsec=radius_arcsec, RESPONSEFORMAT="csv", + cat2=cat if cat == "simbad" else "vizier:" + cat, colRA1=ra_col, colDec1=dec_col), + files={"cat1": ("cat1.csv", buf.getvalue())}, timeout=timeout) + if resp.status_code < 500 or attempt == 4: + break + time.sleep(30 * (attempt + 1)) + resp.raise_for_status() + return list(csv.DictReader(io.StringIO(resp.text))) + + +def spherex_images(ra, dec): + """SPHEREx spectral images covering a position: uri, time, band; the archive is asked four times, ten seconds more apart each time, before an empty answer.""" + q = ("SELECT 'https://irsa.ipac.caltech.edu/' || a.uri AS uri, p.time_bounds_lower AS t, p.energy_bandpassname " + "AS band FROM spherex.artifact a JOIN spherex.plane p ON a.planeid = p.planeid " + "WHERE 1 = CONTAINS(POINT('ICRS', %f, %f), p.poly)" % (ra, dec)) + for attempt in range(4): + try: + return tap("irsa", q) + except Exception: + time.sleep(10 * (attempt + 1)) + return [] + + +def spherex_cutout(uri, ra, dec, size_deg=0.05): + """Bytes of a SPHEREx cutout (IMAGE, FLAGS, VARIANCE, ZODI, PSF, WCS-WAVE), about 5 MB.""" + return get(uri + "?center=%f,%fd&size=%g" % (ra, dec, size_deg), timeout=180, retries=3) + + +SPHEREX_SIDE = 2040 +SPHEREX_PLANE = (SPHEREX_SIDE ** 2 * 4 + 2879) // 2880 * 2880 # bytes of one 2040 x 2040 32-bit plane +SPHEREX_TAIL = 2880 * 4 # the WCS-WAVE table, last in the file, lies within this many final bytes + + +def _fits_cards(raw): + return [raw[i:i + 80].decode("ascii", "replace") for i in range(0, len(raw) - 79, 80)] + + +def _fits_header_length(raw): + """Length of the header at the start of raw (multiple of 2880), or None without END.""" + end = next((i for i, c in enumerate(_fits_cards(raw)) if c.rstrip() == "END"), None) + return None if end is None else ((end + 1) * 80 + 2879) // 2880 * 2880 + + +def _fits_keys(cards): + kv = {} + for c in cards: + if c[8:10] == "= ": + kv.setdefault(c[:8].strip(), c[10:].split("/")[0].strip().strip("'").strip()) + return kv + + +def _fits_signature(cards): + """XTENSION, BITPIX, NAXIS, axis lengths and EXTNAME from a header's first cards.""" + kv = _fits_keys(cards) + n = int(kv.get("NAXIS", 0) or 0) + sig = (kv.get("XTENSION"), kv.get("BITPIX"), n) + tuple(kv.get("NAXIS%d" % k) for k in range(1, n + 1)) + return sig, kv.get("EXTNAME") + + +def _fits_data_length(kv): + """Bytes of an HDU's data unit with heap, padded to 2880.""" + n = 0 + if int(kv.get("NAXIS", 0) or 0): + n = 1 + for k in range(1, int(kv["NAXIS"]) + 1): + n *= int(kv["NAXIS%d" % k]) + return (abs(int(kv.get("BITPIX", 8))) // 8 * n + int(kv.get("PCOUNT", 0) or 0) + 2879) // 2880 * 2880 + + +def spherex_layout(uri, off=0): + """HDU offsets of a SPHEREx image from byte off to WCS-WAVE, walked by byte ranges: {EXTNAME: (offset, header, data, signature)}.""" + out = {} + while "WCS-WAVE" not in out: + raw, hlen = b"", None + while hlen is None: + chunk = get_ranges(uri, [(off + len(raw), off + len(raw) + 28799)])[0] + if not chunk: + raise IOError("%s ends before its WCS-WAVE extension" % uri) + raw += chunk + hlen = _fits_header_length(raw) + cards = _fits_cards(raw[:hlen]) + sig, name = _fits_signature(cards) + dlen = _fits_data_length(_fits_keys(cards)) + out[name or "PRIMARY"] = (off, hlen, dlen, sig) + off += hlen + dlen + return out + + +def _rice1(blocksize, bytepix, tilesize): + try: + from astropy.io.fits.hdu.compressed._codecs import Rice1 + except ImportError: + from astropy.io.fits._tiled_compression.codecs import Rice1 + return Rice1(blocksize=blocksize, bytepix=bytepix, tilesize=tilesize) + + +def _spherex_rows(start, x0, y0, n): + """Byte ranges of an n x n block at (x0, y0) of a 2040-pixel 32-bit plane starting at start.""" + return [(start + ((y0 + j) * SPHEREX_SIDE + x0) * 4, start + ((y0 + j) * SPHEREX_SIDE + x0 + n) * 4 - 1) + for j in range(n)] + + +def _spherex_wave(tail): + """WCS-WAVE table HDU from the file's final bytes, or None.""" + from astropy.io import fits + for k in range(0, len(tail) - 2879, 2880): + cards = _fits_cards(tail[k:k + 2880]) + if cards and cards[0].startswith("XTENSION= 'BINTABLE'"): + hlen = _fits_header_length(tail[k:]) + if hlen and _fits_keys(_fits_cards(tail[k:k + hlen])).get("EXTNAME") == "WCS-WAVE": + return fits.BinTableHDU.fromstring(tail[k:]) + return None + + +def spherex_pixels(uri, ra, dec, half=5): + """IMAGE, FLAGS, VARIANCE and ZODI pixels within half of a position, read by byte ranges (about 100 kB), with header and wave; None near the edge.""" + import warnings + import numpy as np + from astropy.io import fits + from astropy.wcs import WCS + from astropy.coordinates import SkyCoord + import astropy.units as u + lo = 2880 * 6 + SPHEREX_PLANE # a primary header and an IMAGE header of five blocks or more come first + (head, span), total = get_ranges(uri, [(0, 2880 * 12 - 1), (lo, lo + 2880 * 24 - 1)], size=True) + plen = _fits_header_length(head) + ilen = _fits_header_length(head[plen:]) if plen else None + if ilen is None: + lay = spherex_layout(uri) + plen, ilen = lay["IMAGE"][:2] + head = get_ranges(uri, [(0, plen + ilen - 1)])[0] + icards = _fits_cards(head[plen:plen + ilen]) + if _fits_signature(icards) != (("IMAGE", "-32", 2, str(SPHEREX_SIDE), str(SPHEREX_SIDE)), "IMAGE"): + raise IOError("%s: the first extension is not a %d-pixel IMAGE plane" % (uri, SPHEREX_SIDE)) + hdr = fits.Header.fromstring(head[plen:plen + ilen].decode("ascii", "replace")) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + x, y = WCS(hdr).world_to_pixel(SkyCoord(ra * u.deg, dec * u.deg)) + x, y = float(x), float(y) + if not (half <= x < SPHEREX_SIDE - half - 1 and half <= y < SPHEREX_SIDE - half - 1): + return None + x0, y0, n = int(round(x)) - half, int(round(y)) - half, 2 * half + 1 + # FLAGS header + foff = plen + ilen + SPHEREX_PLANE + fraw = span[foff - lo:] if lo <= foff < lo + len(span) else b"" + flen = _fits_header_length(fraw) if fraw else None + if flen is None: + fraw = get_ranges(uri, [(foff, foff + 2880 * 24 - 1)])[0] + flen = _fits_header_length(fraw) + fkv = _fits_keys(_fits_cards(fraw[:flen])) if flen else {} + if fkv.get("EXTNAME") != "FLAGS": + raise IOError("%s: no FLAGS extension after the IMAGE plane" % uri) + fdata = foff + flen + side = str(SPHEREX_SIDE) + if (fkv.get("XTENSION"), fkv.get("BITPIX"), fkv.get("NAXIS1"), fkv.get("NAXIS2")) == ("IMAGE", "32", side, side): + rice = None + elif (fkv.get("XTENSION") == "BINTABLE" and fkv.get("ZIMAGE") == "T" and fkv.get("ZCMPTYPE") == "RICE_1" + and fkv.get("ZBITPIX") == "32" and fkv.get("ZNAXIS1") == side and fkv.get("ZNAXIS2") == side + and fkv.get("ZTILE1") == side and fkv.get("ZTILE2") == "1" and fkv.get("NAXIS1") == "8"): + par = {fkv["ZNAME%d" % k]: int(fkv["ZVAL%d" % k]) for k in range(1, 10) if "ZNAME%d" % k in fkv} + heap = fdata + int(fkv.get("THEAP") or 8 * SPHEREX_SIDE) + rice = (heap, _rice1(par.get("BLOCKSIZE", 32), par.get("BYTEPIX", 4), SPHEREX_SIDE)) + else: + raise IOError("%s: FLAGS is neither a 32-bit plane nor RICE_1 compressed by rows" % uri) + after = fdata + _fits_data_length(fkv) + plane = ("IMAGE", "-32", 2, side, side) + vlen = zlen = 11520 # VARIANCE and ZODI header lengths in every file read so far + for attempt in range(2): + voff = after + zoff = voff + vlen + SPHEREX_PLANE + ranges = [(voff, voff + 1599), (zoff, zoff + 1599), (total - SPHEREX_TAIL, total - 1)] + ranges += _spherex_rows(plen + ilen, x0, y0, n) + ranges += _spherex_rows(voff + vlen, x0, y0, n) + ranges += _spherex_rows(zoff + zlen, x0, y0, n) + ranges += _spherex_rows(fdata, x0, y0, n) if rice is None else [(fdata + y0 * 8, fdata + (y0 + n) * 8 - 1)] + got = get_ranges(uri, ranges) + if (_fits_signature(_fits_cards(got[0])) == (plane, "VARIANCE") + and _fits_signature(_fits_cards(got[1])) == (plane, "ZODI")): + break + lay = spherex_layout(uri, after) + if not {"VARIANCE", "ZODI"} <= set(lay) or lay["ZODI"][0] != lay["VARIANCE"][0] + lay["VARIANCE"][1] + \ + SPHEREX_PLANE or lay["VARIANCE"][3] != plane or lay["ZODI"][3] != plane: + raise IOError("%s: VARIANCE and ZODI do not follow FLAGS as %d-pixel planes" % (uri, SPHEREX_SIDE)) + vlen, zlen = lay["VARIANCE"][1], lay["ZODI"][1] + else: + raise IOError("%s does not have the SPHEREx spectral image layout" % uri) + wave = _spherex_wave(got[2]) + if wave is None: + lay = spherex_layout(uri, after) + w = lay["WCS-WAVE"] + wave = fits.BinTableHDU.fromstring(get_ranges(uri, [(w[0], w[0] + w[1] + w[2] - 1)])[0]) + out = dict(header=hdr, wave=wave, x0=x0, y0=y0, x=x - x0, y=y - y0) + for i, name in enumerate(("IMAGE", "VARIANCE", "ZODI")): + out[name] = np.frombuffer(b"".join(got[3 + i * n:3 + (i + 1) * n]), dtype=">f4").reshape(n, n) + if rice is None: + out["FLAGS"] = np.frombuffer(b"".join(got[3 + 3 * n:3 + 4 * n]), dtype=">i4").reshape(n, n) + else: + desc = np.frombuffer(got[3 + 3 * n], dtype=">i4").reshape(n, 2) + if (desc[:, 0] <= 0).any(): + raise IOError("%s: an empty FLAGS tile" % uri) + tiles = get_ranges(uri, [(rice[0] + int(o), rice[0] + int(o) + int(m) - 1) for m, o in desc]) + out["FLAGS"] = np.array([rice[1].decode(np.frombuffer(t, dtype=np.uint8))[x0:x0 + n] for t in tiles], + dtype=np.int64) + return out + + +# ------------------------------------------------------------------------------------------- GALAH, SDSS, LAMOST + + +def galah(query): + """Rows of ADQL on Data Central.""" + return tap("datacentral", query) + + +def galah_spectrum(sobject_id, camera): + """GALAH DR4 spectrum of one camera (B, V, R, I) from Data Central's SODA links: normalised, on barycentric wavelengths with the star's own velocity left in (the catalogue's rv_comp_1 takes it to rest; IDX 1 serves the counts); header RV is the barycentric correction.""" + u = ("https://datacentral.org.au/vo/slink/links?ID=%s&DR=galah_dr4&IDX=0&FILT=%s&RESPONSEFORMAT=fits" + % (sobject_id, camera)) + return get(u, timeout=120) + + +def sdss_sql(sql, release="dr17"): + """Rows of SQL on the SDSS SkyServer.""" + u = "https://skyserver.sdss.org/%s/SkyServerWS/SearchTools/SqlSearch?" % release + urllib.parse.urlencode( + dict(cmd=sql, format="csv")) + text = get(u, timeout=600).decode("utf-8", errors="replace") + lines = text.splitlines() + if lines and lines[0].startswith("#Table"): + lines = lines[1:] + import csv + return list(csv.DictReader(io.StringIO("\n".join(lines)))) + + +AAT_API = "https://archives.datacentral.org.au/api/" + + +def aat_post(path, body, timeout=600): + """Bytes of a JSON POST to Data Central's AAT archive API.""" + req = urllib.request.Request(AAT_API + path, data=json.dumps(body).encode(), method="POST", + headers=dict(UA, **{"Content-Type": "application/json", "Accept": "application/json"})) + return urllib.request.urlopen(req, timeout=timeout).read() + + +def aat_night(date): + """Every row of one night's AAT log (YYYY-MM-DD): file, detector, class, object, exposure and header. The first page answers the date and each next one the query's uuid with the last row's aat_id.""" + page = json.loads(aat_post("query/", {"obs_date": date}))[0] + rows = list(page["results"]) + seen = {r["aat_id"] for r in rows} + while page.get("next") and len(rows) < page["count"]: + nxt = page["next"]["aat_id"] + page = json.loads(aat_post("query/", {"uuid": page["uuid"], "next": nxt, "previous": nxt}))[0] + new = [r for r in page["results"] if r["aat_id"] not in seen] + if not new: + break + rows += new + seen |= {r["aat_id"] for r in new} + return rows + + +def aat_fetch(rows, out): + """The rows' raw FITS files from the AAT archive into OUT, fetching those not there yet (the download is a gzipped tar); their paths in the rows' order.""" + import tarfile + os.makedirs(out, exist_ok=True) + need = [r for r in rows if not os.path.exists(os.path.join(out, os.path.basename(r["filename"])))] + if need: + tf = tarfile.open(fileobj=io.BytesIO(aat_post("download/", {"aat_ids": [int(r["aat_id"]) for r in need]}, timeout=3600)), mode="r:*") + for m in tf.getmembers(): + if m.isfile(): + open(os.path.join(out, os.path.basename(m.name)), "wb").write(tf.extractfile(m).read()) + return [os.path.join(out, os.path.basename(r["filename"])) for r in rows] + + +def apogee_apstar_url(telescope, field, apogee_id): + """URL of an APOGEE DR17 apStar file (visits in the rest frame, vacuum).""" + return ("https://data.sdss.org/sas/dr17/apogee/spectro/redux/dr17/stars/%s/%s/apStar-dr17-%s.fits" + % (telescope, field, apogee_id)) + + +def datalab(query): + """Rows of ADQL on NOIRLab Astro Data Lab (Postgres: NaN sorts high, booleans compare with 't').""" + return tap("datalab", query) + + +def desi_spectra(targetids, include=("targetid", "flux", "ivar", "mask", "model", "wave_sigma"), release="DESI-DR1"): + """DESI coadded spectra of each target's primary spectrum from SPARCL, with the included fields.""" + from sparcl.client import SparclClient + c = SparclClient() + found = c.find(outfields=["sparcl_id", "targetid", "specprimary"], + constraints={"targetid": list(targetids), "data_release": [release]}, limit=4 * len(targetids)) + ids = [r["sparcl_id"] for r in found.records if r.get("specprimary")] + return c.retrieve(uuid_list=ids, include=list(include), dataset_list=[release], limit=len(ids) + 10).records + + +def lamost_cone(ra, dec, radius_deg): + """LAMOST DR10 v2.0 low-resolution rows within a radius.""" + u = "https://www.lamost.org/dr10/v2.0/voservice/conesearch?ra=%f&dec=%f&sr=%g&format=csv" % (ra, dec, radius_deg) + import csv + return list(csv.DictReader(io.StringIO(get(u).decode("utf-8-sig", errors="replace")))) + + +# --------------------------------------------------------------------------------------- radio and millimetre + + +def alma(query): + """Rows of ADQL on the ALMA archive.""" + return tap("alma", query, maxrec=2000000) + + +def alma_datalink(member_ous_uid): + """Files of one ALMA observing unit with sizes.""" + from astropy.io.votable import parse_single_table + u = "https://almascience.eso.org/datalink/sync?" + urllib.parse.urlencode(dict(ID=member_ous_uid)) + t = parse_single_table(io.BytesIO(get(u, timeout=180))).to_table(use_names_over_ids=True) + return [dict(url=str(r["access_url"]), bytes=r["content_length"], semantics=str(r["semantics"])) for r in t] + + +def casda(query): + """Rows of ADQL on CASDA.""" + return tap("casda", query) + + +HEASARC_TAP = "https://heasarc.gsfc.nasa.gov/xamin/vo/tap/sync" + + +def heasarc(query, maxrec=200000): + """Rows of ADQL on HEASARC's Xamin TAP service as dicts; the service answers in VOTable only, over GET.""" + return tap(HEASARC_TAP, query, fmt="votable", method="GET", maxrec=maxrec) + + +def vizier(catalog): + """All tables of a VizieR catalogue, all columns, no row limit.""" + from astroquery.vizier import Vizier + return Vizier(columns=["**"], row_limit=-1).get_catalogs(catalog) + + +def exoplanets(query): + """Rows of ADQL on the NASA Exoplanet Archive.""" + return tap("exoplanets", query) + + +NIST_LINES = ("https://physics.nist.gov/cgi-bin/ASD/lines1.pl?spectra=%s&output_type=0&low_w=%g&upp_w=%g&unit=0" + "&submit=Retrieve+Data&de=0&plot_out=0&I_scale_type=1&format=3&line_out=0&remove_js=on&en_unit=0&output=0" + "&bibrefs=1&page_size=15&show_obs_wl=1&show_calc_wl=1&unc_out=1&order_out=0&max_low_enrg=&show_av=2" + "&max_upp_enrg=&tsb_value=0&min_str=&A_out=0&intens_out=on&max_str=&allowed_out=1&forbid_out=1" + "&min_accur=&min_intens=&conf_out=on&term_out=on&enrg_out=on&J_out=on") + + +def nist_lines(spectrum, lo, hi, cache_dir=None): + """NIST ASD lines of one spectrum between lo and hi (A): ion, vacuum wavelength, intensity, Aki, lower-level energy.""" + import csv + path = None + if cache_dir: + os.makedirs(cache_dir, exist_ok=True) + path = os.path.join(cache_dir, "%s_%g_%g.tsv" % (spectrum.replace(" ", "_"), lo, hi)) + if path and os.path.exists(path): + t = open(path, encoding="utf-8").read() + else: + b = get(NIST_LINES % (urllib.parse.quote_plus(spectrum), lo, hi), timeout=300, retries=3, soft=True) + t = b.decode("utf-8", "replace") if b else "" + if "Input Error" in t or " 2000.0: + w = float(science.air_to_vac(w)) + out.append(dict(ion=spectrum, lam=w, intens=r.get("intens", ""), aki=r.get("Aki(s^-1)", ""), + ei=r.get("Ei(cm-1)", ""))) + return out + + +BL_FILE = re.compile(r"href=\"([^\"]*guppi_(\d+)_(\d+)_([A-Za-z0-9+%_-]+?)_(\d{4})\.gpuspec\.0000\.h5)\"") + + +def bl_query_files(target): + """Breakthrough Listen open-data files for a target.""" + import json + d = json.loads(get("http://seti.berkeley.edu/opendata/api/query-files?target=%s" % target)) + return d.get("data", []) + + +def bl_scans(directory_url): + """High-resolution scans in a BL directory in time order: (mjd, seconds, target, url).""" + page = get(directory_url, timeout=60).decode(errors="replace") + return sorted({(int(m[1]), int(m[2]), m[3], directory_url + m[0]) for m in BL_FILE.findall(page)}) + + +def bl_cadences(directory_url): + """ABACAD cadences in a BL directory: six (target, url) with the target at 0, 2 and 4.""" + s = bl_scans(directory_url) + out = [] + for i in range(len(s) - 5): + w = s[i:i + 6] + a = w[0][2] + if w[2][2] == a and w[4][2] == a and all(x[2] != a for x in (w[1], w[3], w[5])): + out.append([(x[2], x[3]) for x in w]) + return out + + +# ----------------------------------------------------------------------------------------------------- DASCH + + +def dasch_lightcurves(ra, dec, session_dir, radius_arcsec=1800, n_comp=10, dmag=1.0, dcolor=0.5, retries=3): + """DASCH light curves of a star and up to n_comp comparison stars of similar magnitude and colour on the same plates.""" + import contextlib + import shutil + import numpy as np + import daschlab + import astropy.units as u + from astropy.coordinates import SkyCoord + daschlab.REFCAT_RADIUS = radius_arcsec * u.arcsec + sink = io.StringIO() + for attempt in range(retries): + try: + with contextlib.redirect_stdout(sink), contextlib.redirect_stderr(sink): + sess = daschlab.open_session(session_dir) + sess.select_target(ra_deg=ra, dec_deg=dec) + sess.select_refcat("apass") + rc = sess.refcat() + break + except Exception: + if attempt == retries - 1: + raise + shutil.rmtree(session_dir, ignore_errors=True) + time.sleep(10 * (attempt + 1)) + sep = rc["pos"].separation(SkyCoord(ra * u.deg, dec * u.deg)).arcsec + i0 = int(np.argmin(sep)) + if sep[i0] > 20: + raise ValueError("no reference-catalogue star within 20 arcsec") + m0, c0 = float(rc["stdmag"][i0]), float(rc["color"][i0]) + comp = [i for i in range(len(rc)) if i != i0 and np.isfinite(rc["stdmag"][i]) and np.isfinite(rc["color"][i]) + and abs(float(rc["stdmag"][i]) - m0) < dmag and abs(float(rc["color"][i]) - c0) < dcolor] + comp = sorted(comp, key=lambda i: sep[i])[:n_comp] + + def lc(i): + for attempt in range(retries): + try: + with contextlib.redirect_stdout(sink), contextlib.redirect_stderr(sink): + x = sess.lightcurve(i) + x.apply_standard_rejections() + mag = np.asarray(x["magcal_magdep"].filled(np.nan) if hasattr(x["magcal_magdep"], "filled") + else x["magcal_magdep"], float) + ok = np.isfinite(mag) & (np.asarray(x["reject"], int) == 0) + return (x["time"].jyear[ok], mag[ok], np.asarray(x["series"]).astype(str)[ok]) + except Exception: + time.sleep(5 * (attempt + 1)) + return None + return dict(target=lc(i0), comps=[c for c in (lc(i) for i in comp) if c is not None], mag=m0, color=c0) + + +# -------------------------------------------------------------------------------------------------------------------- +# tess: Kepler and TESS light curves from the STScI AWS mirror and MAST HLSPs; sectors from TESScut or tess-point + +S3 = "https://stpubdata.s3.amazonaws.com/" +HLSP = "https://archive.stsci.edu/hlsps/" +TESSCUT = "https://mast.stsci.edu/tesscut/api/v0.1/sector?ra=%f&dec=%f&radius=1m" +FLUX_COLUMNS = ("PDCSAP_FLUX", "KSPSAP_FLUX", "DET_FLUX", "SAP_FLUX") + + +def tic_path(tic): + """Four-part MAST directory of a TIC id.""" + t16 = "%016d" % int(tic) + return "%s/%s/%s/%s" % (t16[0:4], t16[4:8], t16[8:12], t16[12:16]) + + +def tic_near(ra, dec, radius_arcsec=3.0): + """Nearest TIC 8.2 id within the radius, or None.""" + best = None + for m in xmatch([dict(source_id="s", ra=ra, dec=dec)], "IV/39/tic82", radius_arcsec): + if best is None or float(m["angDist"]) < best[1]: + best = (int(m["TIC"]), float(m["angDist"])) + return best[0] if best else None + + +def sectors(ra, dec): + """Sectors covering a position: TESScut, else tess-point for sectors ended two months ago.""" + b = get(TESSCUT % (ra, dec), timeout=60, retries=2, soft=True) + if b: + return sorted({int(x["sector"]) for x in json.loads(b)["results"]}) + try: + from tess_stars2px import tess_stars2px_function_entry + except ImportError: + return [] + import datetime + # sector 1 began 2018 July 25; sectors average 27.4 days + last = int((datetime.date.today() - datetime.date(2018, 7, 25)).days / 27.4) - 2 + return sorted({int(s) for s in tess_stars2px_function_entry(0, ra, dec)[3] if 0 < int(s) <= last}) + + +def s3_keys(prefix, pattern): + """Keys under an S3 prefix matching the pattern.""" + lst = get(S3 + "?list-type=2&prefix=" + prefix, timeout=120, retries=3, soft=True, pause=0) + if not lst: + return [] + return [k for k in re.findall(r"([^<]*)", lst.decode()) if re.search(pattern, k)] + + +def spoc_keys(tic, sector, fast=False): + """S3 keys of a star's SPOC light curves in one sector, two-minute or twenty-second.""" + prefix = "tess/public/tid/s%04d/%s/" % (sector, tic_path(tic)) + return s3_keys(prefix, r"fast-lc\.fits$" if fast else r"-s_lc\.fits$") + + +def spoc_bytes(tic, sector, fast=False): + """SPOC light curve of one sector as FITS bytes, or None.""" + keys = spoc_keys(tic, sector, fast) + if not keys: + return None + b = get(S3 + keys[0], timeout=300, retries=3, soft=True, pause=2) + return b if b and b.startswith(b"SIMPLE") else None + + +def ffi_urls(tic, sector): + """[(source, URL)] of a star's FFI light curves in one sector, TESS-SPOC before QLP.""" + path, t16 = tic_path(tic), "%016d" % int(tic) + return [("tess-spoc", HLSP + "tess-spoc/s%04d/target/%s/hlsp_tess-spoc_tess_phot_%s-s%04d_tess_v1_lc.fits" + % (sector, path, t16, sector)), + ("qlp", HLSP + "qlp/s%04d/%s/hlsp_qlp_tess_ffi_s%04d-%s_tess_v01_llc.fits" % (sector, path, sector, t16))] + + +def ffi_bytes(tic, sector, retries=1): + """FFI light curve of one sector as (source, bytes), or (None, None).""" + for source, u in ffi_urls(tic, sector): + b = get(u, timeout=120, retries=retries, soft=True, pause=1) + if b and b.startswith(b"SIMPLE"): + return source, b + return None, None + + +def read(fits_bytes, columns=FLUX_COLUMNS, good_only=True, normalise=True): + """(time, flux, quality) from the first flux column present; flagged cadences dropped when good_only.""" + from astropy.io import fits + with fits.open(io.BytesIO(fits_bytes)) as h: + x = h[1].data + names = x.columns.names + col = next(c for c in columns if c in names) + t, f = np.asarray(x["TIME"], float), np.asarray(x[col], float) + q = np.asarray(x["QUALITY"] if "QUALITY" in names else x["SAP_QUALITY"], int) + ok = np.isfinite(t) & np.isfinite(f) + if good_only: + ok &= q == 0 + t, f, q = t[ok], f[ok], q[ok] + if normalise and len(f): + f = f / np.median(f) + return t, f, q + + +def curves(ra, dec, ffi=True, spoc=False, min_points=100): + """TIC id and light curves of the star at a position: [(sector, source, time, flux)], SPOC first when spoc.""" + tic = tic_near(ra, dec) + if tic is None: + return None, [] + out = [] + for s in sectors(ra, dec): + got = None + if spoc: + b = spoc_bytes(tic, s) + if b: + got = ("spoc", b) + if got is None and ffi: + src, b = ffi_bytes(tic, s) + if b: + got = (src, b) + if got is None: + continue + t, f, _ = read(got[1]) + if len(t) > min_points: + out.append((s, got[0], t, f)) + return tic, out + + +def modulation(lcs, pmin=0.07, pmax=15.0, nfreq=6000): + """Best Lomb-Scargle period (d), its power and the median 2-98 per cent range over sectors.""" + from astropy.timeseries import LombScargle + rows = [] + for _, _, t, f in lcs: + fr = np.linspace(1 / pmax, 1 / pmin, nfreq) + pw = LombScargle(t, f).power(fr) + k = int(np.argmax(pw)) + lo, hi = np.percentile(f, [2, 98]) + rows.append((1 / fr[k], float(pw[k]), float(hi - lo))) + if not rows: + return None + best = max(rows, key=lambda r: r[1]) + return dict(period=float(best[0]), power=best[1], range=float(np.median([r[2] for r in rows])), sectors=len(rows)) + + +def kepler_keys(kic, short=True): + """S3 keys of a Kepler star's light curves, short or long cadence.""" + k9 = "%09d" % int(kic) + return s3_keys("kepler/public/lightcurves/%s/%s/" % (k9[:4], k9), r"_slc\.fits$" if short else r"_llc\.fits$") + + +# -------------------------------------------------------------------------------------------------------------------- +# vetting: vet codes of the coverage store and the rules mapping explanations to codes + +VET = { + # spectra + "fibre-fixed": "a line one fibre holds at the same wavelength on other plates or stars: the detector's", + "neighbouring-fibres": "a feature fibres beside it on the same spectrograph show in other stars", + "shared-feature": "a feature other stars show at the same rest or observed wavelength", + "detector-pixel": "a peak narrower than the instrumental profile: detector pixels", + "off-trace": "charge in the raw frame away from the fibre's trace, where light through the spectrograph does not fall", + "bad-pixel": "masked, variance-inflated or dead pixels at the peak", + "detector-edge": "a feature at the end of an arm or order, or at a detector gap", + "instrument-frame": "a feature whose nights agree in the instrument's frame and not in the star's", + "not-one-feature": "peaks of the exposures that lie apart by more than half a resolution element", + "cosmic-ray": "a feature in one exposure or cadence with the others flat", + "one-camera": "a line that one spectrograph camera shows and the other, covering the same wavelength, lacks", + "defective-spectrum": "a spectrum holding clean lines of both signs, which no source of light makes", + "hot-pixel": "a detector site that hosts the strongest events of several targets", + "detector-wide": "an event that other sources across the detector share", + "stellar-blend": "absorption that other stars of the spectrograph share at the line, a blend whose strength varies", + "broad-feature": "a feature wider than an unresolved line", + "line-core": "a peak inside a Balmer or He I line where the comparison template dips", + "background-galaxy": "the lines or light of a background galaxy or active nucleus", + # radio + "off-source": "the same class of signal in the OFF scans", + "sidelobe-transmitter": "a carrier that recurs on one drift in other targets' pointings of the session", + "broadcast-band": "a frequency inside a broadcast band", + "sky-sidereal": "the Galaxy's sidereal swing, which channels across the band share", + "gnss": "satellite navigation signals, sidereal through the constellation's orbits", + "auroral-kilometric-radiation": "auroral kilometric radiation", + "plasma-line": "the solar wind's plasma line", + "terrestrial-hf": "terrestrial HF leakage", + "spacecraft-local": "the spacecraft's own emission", + "spacecraft-anomaly": "a spacecraft anomaly", + "instrument-mode": "a receiver mode that measures some channels and interpolates the rest", + "spacecraft-timing": "a period of the spacecraft's operations", + "natural-source": "a source its discovery papers give a natural nature", + # photometry + "single-epoch": "a dip or excess resting on one epoch, transit or pass, with its neighbours undimmed", + "single-band": "a dip in one band that the other bands, taken at the same transits, do not share", + "field-event": "an event other stars of the field show at the same time", + "binary": "a binary: multiplicity flags, astrometric excess, velocity scatter or blended double lines", + "eclipsing-binary": "an eclipsing or heartbeat binary", + "variable-star": "a catalogued or measured variable star or pulsator", + "rotation": "rotational modulation, a spotted rotator or a period at the rotation period or its multiple", + "chromatic": "modulation that changes colour, as spots do", + "burst": "an isolated burst feeding a phase peak, not a periodic train", + "flare": "a flare on a flare star", + "not-periodic": "a phase scatter above a clock's", + "timing-variation": "a published transit-timing variation", + "data-edge": "a step at the first or last maximum of a data source", + "detrending": "a shoulder made by the detrending gap and the transit's timing and duration", + "fit-boundary": "a fit pinned at the edge of its model", + "fit-degeneracy": "a value inside the pile-up the fits themselves produce", + "unstable-profile": "a profile unstable between sectors, of low S/N, with a secondary eclipse or too few events", + "unconstrained-geometry": "a geometry the catalogue leaves unconstrained", + "single-record": "a value resting on one catalogue record", + # planetary systems + "near-resonance": "a period ratio within 1 per cent of a small-integer ratio, where the resonant phases rather than random ones decide stability", + "estimated-masses": "planet masses estimated from radii rather than measured", + "loose-eccentricities": "eccentricities measured no better than 0.1", + "twin-flags": "stable configurations observed again with the same errors flagged as well", + "catalogue-crossing": "adjacent orbits that already cross at the catalogue's own values", + "unmeasured-eccentricities": "eccentricities the catalogue gives without errors or as limits", + "mass-limits": "masses the catalogue gives as upper limits", + # stars and catalogues + "active-star": "an active star: X-ray source, chromospheric emission or emission lines", + "evolved": "an evolved star or host, off the main sequence", + "young-star": "a young star or star-forming region", + "moving-group": "a member of a catalogued moving group or association, whose shared velocity places it", + "natural-type": "a SIMBAD type that explains the signal", + "white-dwarf": "a white dwarf or white-dwarf companion", + "dust": "warm or hot dust, a debris disc or an infrared excess of dust", + "companion": "a known or red companion", + "blend": "light of a neighbour, a background star or a third body in the aperture or beam", + "crowding": "a depth or amplitude difference made by a pipeline's correction for neighbours' light, absent from the uncorrected flux", + "interstellar": "interstellar dust or gas in the beam or along the sightline", + "artefact": "a catalogue or imaging artefact: ghost, spike, single-exposure detection or a catalogue that reads high", + "catalogue-dropped": "a source one catalogue's processing dropped and another's holds: a faint neighbour inside a bright star's image, a fast mover the " + "cross-match lost, or too few transits in the shorter span", + "event-boundary": "a start, peak or end set by the catalogue's own detection boundary, so the shape is the catalogue's and not the event's", + "our-launch": "a body of our own launching, identified in the database by its orbit and its response to sunlight", + "atmospheric-line": "an absorption line of a known atmospheric species at its wavelength", + "planetary-encounter": "an orbit changed by a close approach to a planet on record", + "comet-family": "a member of a published comet family of one parent body", + "co-orbital": "a body on a horseshoe or wide-librating co-orbital path about a planet, which the 1:1 resonance holds for a time", + "vela-like": "a young pulsar whose large glitches recur at the crust's critical lag, as Vela's do", + "perpendicular-peak": "an orbit in the pile-up of measured obliquities near 90 deg (Albrecht et al. 2021), a natural population feature with tidal and secular mechanisms proposed", + "misidentified": "a spectrum of a different star from the catalogued one, by fibre placement or crossmatch, shown by temperatures that disagree", + "bright-neighbour": "within the artefact zone of a source bright enough to spoil the image around it", + "spider-orbit": "a black-widow or redback pulsar whose orbital period wanders as its companion's shape changes (gravitational quadrupole coupling), swamping relativity's decay", + "arm-tangent": "a line of sight along a spiral arm's tangent, where a whole arm's young pulsars, nebulae and star-forming regions pile up", + "cohesive": "a spin that needs less tensile strength than solid rock holds, about 100 kPa, which a coherent fragment or a cohesive rubble pile supplies", + "sensor-error": "a speed or direction within the published errors of the sensor that measured it", + "radio-hotspot": "a compact radio component away from its source's low-resolution centroid, a knot or hotspot of a larger radio galaxy whose host lies elsewhere", + "out-of-reach": "a known body now too faint or too far for the surveys that would see it", + "abiotic-chemistry": "a gas mixture that published abiotic models of the planet make, hydrogen-rich mini-Neptune and magma-ocean chemistry keeping CH4 and CO2 without CO", + "stellar-contamination": "a spectral feature that spots and faculae on a cool host star imprint on a transit spectrum", + "methane-overlap": "a dimethyl sulfide reading beside methane, whose 3.3 um band the DMS template overlaps, as Earth's own transit spectrum reads DMS it does not hold", + "deep-counterpart": "a counterpart in deeper imaging than the surveys that missed it", + "photosphere": "a colour within the photosphere's range", + "diffuse-emission": "the field's diffuse emission", + "astrometry": "an astrometric solution not to be trusted", + "outside-selection": "a star outside the test's range of colour, temperature or distance", + "metal-poor": "a metal-poor subdwarf, placed below the main sequence by its composition: a subdwarf spectral type or a J-Ks bluer than the main sequence's", + "abundance-pattern": "an abundance pattern of natural mixing or mass transfer", + "published-classification": "classified by the team that published the alert or catalogue", + "published-solution": "an error in the published solution", + "catalogued-false-positive": "a false positive or alarm in the catalogue that lists it", + "group-depth": "a distance its group's other members place elsewhere", + "dust-lane": "a dust lane over the galaxy's light", + "energy-budget": "an energy budget the infrared does not carry", + # small bodies + "asteroid-class": "a metal-rich or enstatite taxonomic class", + "activity": "outgassing or cometary activity", + "yarkovsky": "a drift with the sign and size the Yarkovsky effect gives", + "dark-comet": "a dark comet, published or refitted", + "natural-density": "an area-to-mass ratio from radiation pressure that a rock of the body's size gives", + "no-drift": "a gravity-only orbit that fits as well", + "meteor-shower": "members of a known shower with overestimated speeds", + "speed-bias": "groups that a shared speed overestimate makes", + "tidal-synchronisation": "an orbit inside the range where tides synchronise", + # population-level tests + "chance-rate": "a target of a set that the null produces as often as observed", + "control": "a control target of the test, not a candidate", + "not-measured": "a target the test could not measure", +} + +# (pattern, code); code None marks a descriptive clause kept in the note +RULES = [ + (r"^\d+ chords, \d+ points$|^ellipse null|^run of \d+ points|^class |^[A-]$|^\d+ plates$|^\d+ comparisons$" + r"|^excess [\d.]+ mag$|^Ks-W\d [+-]?[\d.]+ at [\d.]+ sigma|^Ca II K|^residual [\d.]+ per cent|^HD 31435," + r"|^no other polarimetry|^Gaia gives E|^WISE sees the photosphere|^the angle matches|^Planck's" + r"|^the star's Gaia XP spectrum|^one (new|modern) measurement|^Gaia luminosities sum|^SIMBAD\s+no type$" + r"|^undecided$|^above the ceiling: to vet$|^no X-ray source$|^flat-bottomed [\d.]+ per cent box eclipse$" + r"|^[\d.]+ mag$|^a wrong star in \d+|^offset [\d.]+ arcsec$|^alpha [-+\d.]+ to [-+\d.]+$", None), + (r"fibre-fixed|the same fibre (holds|shows) (this line|it)", "fibre-fixed"), + (r"fibres within \d+ on the same spectrograph|fibres beside it on the same plate", "neighbouring-fibres"), + (r"of the arm's end", "detector-edge"), + (r"agree in the instrument's frame", "instrument-frame"), + (r"in every exposure of one night and in none of", "single-epoch"), + (r"shared in the (stellar|instrument's) frame", "shared-feature"), + (r"narrower than the instrument|detector pixels", "detector-pixel"), + (r"masked, variance-inflated or dead pixels", "bad-pixel"), + (r"peaks lie [\d.]+ A apart", "not-one-feature"), + (r"cosmic.ray", "cosmic-ray"), + (r"^one camera of the two covering it", "one-camera"), + (r"^a spectrum with clean lines of both signs", "defective-spectrum"), + (r"^hot pixel", "hot-pixel"), + (r"other events detector-wide", "detector-wide"), + (r"absorption at [\d.]+ A shared by \d+ other stars", "stellar-blend"), + (r"times as wide as an unresolved line", "broad-feature"), + (r"in a Balmer or He I line", "line-core"), + (r"background galaxy|^background_galaxy$|^radio_agn$|background radio galaxy|^natural type (AGN|QSO)$", + "background-galaxy"), + (r"^OFF scans carry", "off-source"), + (r"recurs on its drift in", "sidelobe-transmitter"), + (r"^FM broadcast band$", "broadcast-band"), + (r"broadband sky's sidereal profile|^sky_swing$|^a swing shared by \d+ channels", "sky-sidereal"), + (r"^gnss_sidereal$", "gnss"), + (r"^auroral kilometric radiation$", "auroral-kilometric-radiation"), + (r"^solar wind plasma line$", "plasma-line"), + (r"^terrestrial_hf$", "terrestrial-hf"), + (r"^wind_local$", "spacecraft-local"), + (r"^spacecraft anomaly", "spacecraft-anomaly"), + (r"^RAD\d list mode", "instrument-mode"), + (r"^spacecraft timing", "spacecraft-timing"), + (r"^natural$", "natural-source"), + (r"one dipping epoch|every deep dip is one transit|^one fitted epoch$|^single-pass dip" + r"|the pass partner [\d.]+ minutes away (undimmed|missing)|one transit carries it", "single-epoch"), + (r"^G-only dips", "single-band"), + (r"other catalogue stars dip within half an hour|pair dips run at the catalogue rate|other stars step within", + "field-event"), + (r"Hipparcos (variability )?type D|^SIMBAD (type )?(\*\*|SB\*|RS\*)$|^RUWE [\d.]+$|Gaia binary|^binary \(" + r"|^companion \((RUWE|SB\*)|^RV scatter|blended lines of a double star|RUWE [\d.]+: a close binary" + r"|long-period companion|RSCVN", "binary"), + (r"eclipsing binary|^eb_catalogued$|^SIMBAD EB\*$|^heartbeat_binary$", "eclipsing-binary"), + (r"^VSX (?!.* ROT$)|Hipparcos (variability )?type [PUMR]|^SIMBAD (Em|dS|a2|V|Pu|gD|Er)\*$|^stellar.variability" + r"|^delta_scuti$|events: variability|pulsator|Gaia G scatter|^Gaia variable$|^SIMBAD V\*,", "variable-star"), + (r"rotation period or a multiple|^VSX .* ROT$|spotted rotator|^SIMBAD (BY|Ro)\*$|^vsini", "rotation"), + (r"^chromatic$", "chromatic"), + (r"^a burst", "burst"), + (r"^a flare on a flare star", "flare"), + (r"phase scatter [\d.]+ of the period", "not-periodic"), + (r"Holczer (periodic|polynomial) TTV", "timing-variation"), + (r"of a data source's first or last maximum", "data-edge"), + (r"detrending gap", "detrending"), + (r"pinned at the (model's flat edge|fit's floor)", "fit-boundary"), + (r"within the fit's own pile-up", "fit-degeneracy"), + (r"^unstable, low S/N", "unstable-profile"), + (r"within 1 per cent of a small-integer period ratio", "near-resonance"), + (r"^masses estimated from radii$", "estimated-masses"), + (r"^eccentricity errors above 0\.1$", "loose-eccentricities"), + (r"per cent of its stable twins flagged as well$", "twin-flags"), + (r"^orbits that cross at the archive's own values$", "catalogue-crossing"), + (r"^eccentricities (given without errors|that are upper limits)$", "unmeasured-eccentricities"), + (r"^masses that are upper limits$", "mass-limits"), + (r"no impact parameter in the TOI table|a grazing geometry is not excluded", "unconstrained-geometry"), + (r"^1 records$", "single-record"), + (r"^X-ray source|^active(?! comet)|ultracool dwarf with emission lines|^SIMBAD type X$", "active-star"), + (r"not main-sequence by Gaia|off the main sequence|^giant host|^evolved \(|mag above the main sequence", + "evolved"), + (r"star_forming_region|natural type (YSO|YSO_Candidate|OrionV\*|TTauri\*)$|^young_disk$|pre-main-sequence" + r"|^SIMBAD type Ae\*$|^SIMBAD TT\*$", "young-star"), + (r"^natural type (Em\*|CV\*|CV\?)$|^SIMBAD Pe\*$|^planetary nebula ", "natural-type"), + (r"white dwarf|white-dwarf|WD\*", "white-dwarf"), + (r"^warm dust$|^hot dust$|^infrared excess|debris disc", "dust"), + (r"known brown dwarf in orbital motion|^close planet|^red companion or blend$", "companion"), + (r"\(control\)$|^control$", "control"), + (r"a neighbour in the windows|blend changing with proper motion|^moves [\d.]+ arcsec in|^WDS companion" + r"|a companion [\d.]+(-[\d.]+)? arcsec away|arcsec from HD \d+ A|background giant in the aperture|third light or blend" + r"|summed part of their light|Gaia's G misses a close companion|second source [\d.]+ arcsec away" + r"|extended AllWISE source|crowded SMC field|shallow: blended|^neighbours' light in TESS's aperture", "blend"), + (r"a cloud in the beam|a cold clump in the beam|^cloud_alignment$|Local Leo Cold Cloud|^interstellar:" + r"|within the interstellar bound|aligned with the interstellar field|Lupus \d field|in the Heiles" + r"|cirrus in the beam", "interstellar"), + (r"^crowding correction", "crowding"), + (r"source catalogue reads high|optical ghost|diffraction spike|W\d in \d+ of \d+ single exposures|scattered-light halo" + r"|latent image|^release-dependent photometry", "artefact"), + (r"within the M\d photospheric colour range", "photosphere"), + (r"field's diffuse polarised emission", "diffuse-emission"), + (r"RUWE above [\d.]+, parallax not trusted|scanning-law precession|^Hipparcos stochastic solution$", "astrometry"), + (r"colour BP-RP .* outside F-early K|^Teff edge$|^hot$|^beyond [\d.]+ kpc$|^early type \(|^colour term extrapolated", + "outside-selection"), + (r"^\[Na/Fe\]", "abundance-pattern"), + (r"^explained_by_alert_team$", "published-classification"), + (r"published solution too hot|^TOI depth not in the light curves|^the light curve's duration allows a bound orbit|^not in ZTF at the Gaia period", + "published-solution"), + (r"false positive or alarm|KOI false-positive flags|\(TFOP (FP|FA)\)$|on a blue supergiant \(TFOP comment\)$" + r"|, (FALSE POSITIVE|FP|FA)\)$", "catalogued-false-positive"), + (r"group modulus|group's other moduli", "group-depth"), + (r"dust lane", "dust-lane"), + (r"^energy budget", "energy-budget"), + (r"metal-rich or enstatite class", "asteroid-class"), + (r"^outgassing$|^active comet", "activity"), + (r"^agrees$|within sunlight: Yarkovsky", "yarkovsky"), + (r"published dark comet|dark comet: refitted|dark-comet candidate", "dark-comet"), + (r"no drift needed|gravity alone fits as well", "no-drift"), + (r"shower members with overestimated speeds", "meteor-shower"), + (r"shared speed overestimate", "speed-bias"), + (r"where tides synchronise", "tidal-synchronisation"), + (r"at the chance rate|within the expected rate|^within the (spread|null|re-paired null)$" + r"|^FAP [\d.]+ against \d+ KOIs$|^aligned within \d+ deg$|^beyond \d+ d, matched|shared with \d+ unrelated bodies", + "chance-rate"), + (r"fewer than \d+ comparison light curves|target light curve too short|no differential light curve" + r"|^transit not recovered at the TOI ephemeris" + r"|^\d+ target detections$|querycat API request failed|no refcat match", "not-measured"), +] +_RULES = [(re.compile(p, re.I if code is None else 0), code) for p, code in RULES] +# polarisation narratives: HD 31435 open, the others explained +_PER_TARGET = {"gaia_dr3:154235505416809344": [], "gaia_dr3:4687221887455439616": ["blend", "binary"], + "gaia_dr3:6010997328529547904": ["interstellar"], "gaia_dr3:6286369839598558592": ["interstellar"]} +# runs whose record states a measurement while the ledger gives the explanation +_PER_RUN = {"desi_wd_dust_pollution": ["companion"]} + + +def clauses(text): + """Clauses of a vet or note, split at semicolons outside parentheses.""" + out, depth, cur = [], 0, "" + for ch in text: + depth += ch == "(" + depth -= ch == ")" + if ch == ";" and depth <= 0: + out.append(cur.strip()) + cur = "" + else: + cur += ch + out.append(cur.strip()) + return [c for c in out if c] + + +def codes(search_id, vet, note=None, target=None): + """(codes, note) of a free-text vet: the codes its clauses name, words kept in the note; an unmatched clause raises KeyError.""" + if vet is None: + return [], note + parts = [c.strip() for c in vet.split(";")] + if all(p in VET for p in parts): + return parts, note + words = clauses(vet) + if search_id == "intrinsic_polarisation" and target in _PER_TARGET: + found = list(_PER_TARGET[target]) + else: + if vet.strip() == "explained" and note: + # the explanation follows the feature's position or the dimming's size + words = clauses(re.sub(r"^[RB] [\d.]+ A: |^[-+\d.]+ mag; ", "", note)) + found = [] + for w in words: + hit = [code for rx, code in _RULES if rx.search(w)] + if not hit: + raise KeyError("no vet code for %r (%s)" % (w, search_id)) + for code in hit: + if code and code not in found: + found.append(code) + found = found or list(_PER_RUN.get(search_id, [])) + text = vet if vet.strip() != "explained" else None + return found, "; ".join(x for x in (text, note) if x) or None + + +# -------------------------------------------------------------------------------------------------------------------- +# coverage: the SQLite store of runs (searches) and per-target rows (coverage); columns as in SCHEMA + +SCHEMA = """ +CREATE TABLE IF NOT EXISTS searches ( + id TEXT PRIMARY KEY, approach TEXT NOT NULL, archive TEXT, release TEXT, selection TEXT, code TEXT, + code_sha256 TEXT, params TEXT, n_targets INTEGER, null_summary TEXT, sensitivity TEXT, + result TEXT, ledger TEXT, finished TEXT, n_unit TEXT, code_file TEXT, outputs TEXT, ran TEXT); +CREATE TABLE IF NOT EXISTS coverage ( + search_id TEXT NOT NULL REFERENCES searches(id), target TEXT NOT NULL, stat REAL, p REAL, upper_limit REAL, + unit TEXT, vet TEXT, note TEXT, PRIMARY KEY (search_id, target)); +CREATE INDEX IF NOT EXISTS coverage_target ON coverage(target); +""" +ADDED = ("n_unit", "code_file", "outputs", "ran") +LEDGER = os.path.join(ROOT, "LEDGER.md") +RESULTS_MD = os.path.join(ROOT, "RESULTS.md") + + +def connect(path=None): + db = sqlite3.connect(path or COVERAGE) + db.executescript(SCHEMA) + have = [r[1] for r in db.execute("PRAGMA table_info(searches)")] + for col in ADDED: + if col not in have: + db.execute("ALTER TABLE searches ADD COLUMN %s TEXT" % col) + return db + + +def sha256_file(path): + h = hashlib.sha256() + with open(path, "rb") as f: + for b in iter(lambda: f.read(1 << 20), b""): + h.update(b) + return h.hexdigest() + + +def ids_selection(targets): + """Selection string for a run over an explicit target list.""" + return "ids:" + hashlib.sha256("\n".join(sorted(map(str, targets))).encode()).hexdigest() + + +def _j(x): + return x if x is None or isinstance(x, str) else json.dumps(x, sort_keys=True) + + +def record_search(id, approach, archive=None, release=None, selection=None, code=None, params=None, n_targets=None, + null_summary=None, sensitivity=None, result=None, ledger=None, finished=None, db=None, entry=None, + n_unit=None, outputs=None): + """Insert or replace one run's row; code is hashed, outputs' SHA-256 and times kept; unit, ledger and outputs persist when not given.""" + own = db is None + db = db or connect() + digest = sha256_file(code) if code and os.path.exists(code) else None + name = os.path.basename(code) + (" " + entry if entry else "") if code else None + outs, ran = None, None + if outputs: + rows = [dict(name=os.path.basename(p), sha256=sha256_file(p), + modified=time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(os.path.getmtime(p)))) + for p in outputs if os.path.exists(p)] + if rows: + outs = json.dumps(rows, sort_keys=True) + days = sorted(r["modified"][:10] for r in rows) + ran = days[0] if days[0] == days[-1] else "%s/%s" % (days[0], days[-1]) + old = db.execute("SELECT n_unit, ledger, outputs, ran FROM searches WHERE id = ?", (id,)).fetchone() + if old: + n_unit = n_unit or old[0] + ledger = old[1] if old[1] and ledger_row(old[1]) and not ledger_row(ledger or "") else ledger + outs, ran = (outs, ran) if outs else (old[2], old[3]) + db.execute("INSERT OR REPLACE INTO searches (id, approach, archive, release, selection, code, code_sha256, params, " + "n_targets, null_summary, sensitivity, result, ledger, finished, n_unit, code_file, outputs, ran) " + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", + (id, approach, archive, release, selection, name, digest, + _j(params), n_targets, _j(null_summary), _j(sensitivity), result, ledger, + finished or time.strftime("%Y-%m-%d"), n_unit, os.path.basename(code) if digest else None, outs, ran)) + db.commit() + if own: + db.close() + + +def record_targets(search_id, rows, db=None): + """Insert per-target rows; worded vets are stored as codes with the words in the note.""" + own = db is None + db = db or connect() + out = [] + for r in rows: + vet, note = codes(search_id, r.get("vet"), r.get("note"), r["target"]) + out.append((search_id, r["target"], r.get("stat"), r.get("p"), r.get("upper_limit"), r.get("unit"), + "; ".join(vet) or None, note)) + db.executemany("INSERT OR REPLACE INTO coverage VALUES (?,?,?,?,?,?,?,?)", out) + db.commit() + if own: + db.close() + + +def record_run(id, approach, archive, selection, code, entry, n, unit, params, null, sensitivity, result, rows, release=None): + """A run, its ledger row and its per-target rows in one call.""" + record_search(id, approach, archive=archive, release=release, selection=selection, code=code, entry=entry, n_targets=n, n_unit=unit, + params=params, null_summary=null, sensitivity=sensitivity, ledger=approach, result=result) + clear_targets(id) + if rows: + record_targets(id, rows) + + +def run_cli(main): + """The command line of an approach whose modes are its analysis and `record`, which stores what the analysis prints; every other keyword of MAIN is an option, `--name value` (a list as several values), with the keyword's default.""" + import argparse + import inspect + quiet_warnings() + p = argparse.ArgumentParser(add_help=False) + p.add_argument("mode", nargs="?", choices=("run", "record"), default="run") + for name, par in inspect.signature(main).parameters.items(): + d = par.default + if name == "record" or d is inspect.Parameter.empty or d is None: + continue + flag = "--" + name.replace("_", "-") + if isinstance(d, bool): + p.add_argument(flag, dest=name, default=d, type=lambda v: v.lower() in ("1", "true", "yes", "on")) + elif isinstance(d, (list, tuple)): + p.add_argument(flag, dest=name, default=list(d), nargs="+", type=type(d[0]) if d else str) + else: + p.add_argument(flag, dest=name, default=d, type=type(d)) + a = vars(p.parse_args()) + main(record=a.pop("mode") == "record", **a) + + +def clear_targets(search_id, db=None): + """Remove a run's per-target rows.""" + own = db is None + db = db or connect() + db.execute("DELETE FROM coverage WHERE search_id = ?", (search_id,)) + db.commit() + if own: + db.close() + + +def card(target, db=None): + """Every run covering a target with its result.""" + db = db or connect() + q = ("SELECT s.approach, s.archive, s.release, c.stat, c.p, c.upper_limit, c.unit, c.vet, c.note, s.id " + "FROM coverage c JOIN searches s ON c.search_id = s.id WHERE c.target = ? ORDER BY s.finished") + return db.execute(q, (target,)).fetchall() + + +def covered(target, approach=None, db=None): + """Run ids covering a target, optionally for one approach.""" + db = db or connect() + if approach: + q = ("SELECT c.search_id FROM coverage c JOIN searches s ON c.search_id = s.id " + "WHERE c.target = ? AND s.approach = ?") + return [r[0] for r in db.execute(q, (target, approach))] + return [r[0] for r in db.execute("SELECT search_id FROM coverage WHERE target = ?", (target,))] + + +def summary(db=None): + db = db or connect() + rows = db.execute("SELECT s.id, s.approach, s.archive, s.n_targets, COUNT(c.target), " + "SUM(c.vet IS NOT NULL), s.result FROM searches s LEFT JOIN coverage c ON c.search_id = s.id " + "GROUP BY s.id ORDER BY s.finished, s.id").fetchall() + return rows + + +def ledger_rows(path=None): + """Searched table of LEDGER.md as [(approach, data, result)]; empty without the ledger.""" + path = path or LEDGER + if not os.path.exists(path): + return [] + rows = [] + for line in open(path, encoding="utf-8").read().split("## Queued")[0].splitlines(): + if line.startswith("|") and not line.startswith("|---") and not line.startswith("| Approach |"): + c = [x.strip() for x in line.strip().strip("|").split("|")] + rows.append((c[0], c[1], c[2])) + return rows + + +def ledger_row(name, rows=None): + """Searched row of an approach, or None.""" + return next((r for r in (rows if rows is not None else ledger_rows()) if r[0] == name), None) + + +def _runs(db): + return db.execute("SELECT s.id, s.ledger, s.n_targets, s.n_unit, COUNT(c.target), SUM(c.vet IS NOT NULL), " + "s.finished FROM searches s LEFT JOIN coverage c ON c.search_id = s.id GROUP BY s.id " + "ORDER BY s.finished, s.id").fetchall() + + +def singular(unit): + """A sample unit in the singular, for a sample of one: the noun before any parenthesis loses its plural ending.""" + words, _, rest = unit.partition(" (") + w = words.split(" ") + irregular = {"spectra": "spectrum", "data": "datum", "criteria": "criterion"} + last = w[-1] + if last in irregular: + w[-1] = irregular[last] + elif last.endswith("ies"): + w[-1] = last[:-3] + "y" + elif last.endswith("s") and not last.endswith("ss"): + w[-1] = last[:-1] + return " ".join(w) + (" (" + rest if rest else "") + + +def table(db=None): + """RESULTS.md text: each Searched row with its data, runs, samples, per-target rows and result.""" + db = db or connect() + rows = ledger_rows() + runs = _runs(db) + n_rows = db.execute("SELECT COUNT(*) FROM coverage").fetchone()[0] + n_targets = db.execute("SELECT COUNT(DISTINCT target) FROM coverage").fetchone()[0] + out = ["# Results", "", + "Generated by `python -I seti.py store table` from the Searched table of `LEDGER.md` and the " + "coverage store. Each approach's result is the ledger's, stated after vetting; each run's own output " + "before vetting is the `result` column of its row in the store.", "", + "A run is one row of the store's `searches` table. Its sample is the number of things it searched " + "(`n_targets`) in the unit named (`n_unit`), and samples in different units are never added. Its rows are " + "its rows in the `coverage` table, one for each target for which it recorded a statistic, a limit or a " + "vet; many runs record only their flagged targets, so a run's rows are not its sample. A vetted row " + "carries the codes of `README.md` for the explanations that removed it.", "", + "%d runs of %d approaches; %d per-target rows over %d distinct target identifiers." + % (len(runs), len(rows), n_rows, n_targets), ""] + for name, data, result in rows: + mine = [r for r in runs if r[1] == name] + out.append("## %s" % name) + out.append("") + out.append("**Data.** %s" % data) + out.append("") + if mine: + out.append("**Runs.** " + "; ".join( + "`%s`: %s, %d per-target row%s%s" % ( + sid, ("%s %s" % ("{:,}".format(n), unit if n != 1 else singular(unit))) if n is not None else "sample not recorded (%s)" % unit, + k, "" if k == 1 else "s", (", %d vetted" % v) if v else "") + for sid, _, n, unit, k, v, _ in mine)) + else: + out.append("**Runs.** none in the store") + out.append("") + out.append("**Result.** %s" % result) + out.append("") + return "\n".join(out) + + +def _bad_vets(db): + return sorted({v for (v,) in db.execute("SELECT DISTINCT vet FROM coverage WHERE vet IS NOT NULL") + if any(c.strip() not in VET for c in v.split(";"))}) + + +def _undocumented_codes(): + path = os.path.join(ROOT, "README.md") + text = open(path, encoding="utf-8").read() if os.path.exists(path) else "" + return [c for c in VET if "`%s`" % c not in text] + + +def verify(db=None): + """Checks of the store against the ledger and itself as [(check, items, fatal)].""" + db = db or connect() + rows = ledger_rows() + names = [r[0] for r in rows] + text = open(LEDGER, encoding="utf-8").read() if os.path.exists(LEDGER) else "" + queued = [line.split("|")[1].strip() for line in text.split("## Queued")[-1].split("\n## ")[0].splitlines() + if line.startswith("|") and not line.startswith("|---")] if "## Queued" in text else [] + runs = _runs(db) + linked = {r[1] for r in runs} + out = [ + ("runs whose ledger row is not in the Searched table", [r[0] for r in runs if r[1] not in names], True), + ("runs linked to a Queued row", [r[0] for r in runs if r[1] in queued and r[1] not in names], True), + ("runs without a sample unit", [r[0] for r in runs if not r[3]], True), + ("Searched rows named twice", sorted({n for n in names if names.count(n) > 1}), True), + ("per-target rows of no run", [str(r[0]) for r in db.execute( + "SELECT COUNT(*) FROM coverage c LEFT JOIN searches s ON s.id = c.search_id WHERE s.id IS NULL") + if r[0]], True), + ("vets that are not codes of setitools.core", _bad_vets(db), True), + ("vet codes missing from README.md", _undocumented_codes(), True), + ("Searched rows with no run in the store", [n for n in names if n not in linked], False), + ] + current = open(RESULTS_MD, encoding="utf-8").read() if os.path.exists(RESULTS_MD) else "" + out.append(("RESULTS.md differs from table()", [] if current == table(db) else ["RESULTS.md"], True)) + return out + + +STORE_USAGE = """ python -I seti.py store summary + python -I seti.py store table (writes RESULTS.md beside the store) + python -I seti.py store verify (exits 1 when a check fails) + python -I seti.py store card gaia_dr3:4472832130942575872 + python -I seti.py store covered kic:8719324 + python -I seti.py store codes""" + + +def main(): + """Store command line: summary, table, verify, card, covered, codes.""" + if len(sys.argv) < 2 or sys.argv[1] not in ("summary", "card", "covered", "table", "verify", "codes"): + print(STORE_USAGE) + return + if sys.argv[1] == "codes": + for k, v in VET.items(): + print("%-28s %s" % (k, v)) + return + db = connect() + if sys.argv[1] == "verify": + bad = 0 + for check, items, fatal in verify(db): + print("%-4s %s: %d%s" % ("FAIL" if items and fatal else "ok" if not items else "note", check, len(items), + (" (" + ", ".join(items[:12]) + (", ..." if len(items) > 12 else "") + ")") + if items else "")) + bad += bool(items and fatal) + sys.exit(1 if bad else 0) + if sys.argv[1] == "table": + open(RESULTS_MD, "w", encoding="utf-8", newline="\n").write(table(db)) + print("wrote", RESULTS_MD) + return + if sys.argv[1] == "summary": + tot = 0 + for r in summary(db): + tot += r[4] + print("%-34s %-30s %-22s %7s targets, %6d rows, %5d vetted %s" + % (r[0], r[1][:30], (r[2] or "")[:22], r[3], r[4], r[5] or 0, (r[6] or "")[:80])) + n = db.execute("SELECT COUNT(DISTINCT target) FROM coverage").fetchone()[0] + print("%d rows over %d distinct targets" % (tot, n)) + elif sys.argv[1] == "card": + for r in card(sys.argv[2], db): + print(" | ".join("" if x is None else str(x) for x in r)) + else: + print("\n".join(covered(sys.argv[2], sys.argv[3] if len(sys.argv) > 3 else None, db))) diff --git a/setitools/dimming.py b/setitools/dimming.py new file mode 100644 index 0000000000000000000000000000000000000000..0f9cc8e38692581cb5e07c275a92b1228a7a78de --- /dev/null +++ b/setitools/dimming.py @@ -0,0 +1,2693 @@ +"""Dimming and dips of nearby stars from the Harvard plates to Gaia.""" +import argparse +import contextlib +import csv +import gzip +import io +import json +import math +import os +import sys +import urllib.parse +import urllib.request +from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor + +import numpy as np + +from setitools import core +from setitools.core import cstar, gaia_g_scatter, num, quiet_warnings, running + + +# -------------------------------------------------------------------------------------------------------------- + +hipparcos_DOC = r"""Dips in Hipparcos epoch photometry within 100 pc: 5 robust deviations and 0.03 mag, shared by the pass partner, vetted for variability, binarity and satellite events. + + python -I seti.py dimming hipparcos""" + +hipparcos_ROOT = os.environ.get("HIP_ROOT", core.data("hipparcos")) +hipparcos_HERE = core.RESULTS +hipparcos_BAD = 8 | 16 | 32 | 64 | 128 | 256 +hipparcos_PAIR_D = 0.02 +hipparcos_SIMBAD_EXPLAINED = ("EB*", "SB*", "**", "BY*", "RS*", "Er*", "Fl*", "Ro*", "V*", "dS*", "gD*", "El*", "Pu*", "Ae*", + "TT*", "Y*O", "WU*", "Al*", "bL*", "RR*", "Ce*", "LP*", "Mi*", "sr*", "a2*", "Be*", "Em*") + + +def hipparcos_read_hep(): + stars, cur = {}, None + with gzip.open(os.path.join(hipparcos_ROOT, "hep.gz"), "rt", errors="replace") as f: + for line in f: + if not line.strip(): + continue + parts = line.rstrip("\n").split("|") + if len(parts) >= 10: + hip = int(parts[0]) + # fields: HIP | component | V-I | Ntr | Nh and Hpmag | e_Hp | Hpmax | Hpmin and period | T0 | VType | flags + cur = dict(hip=hip, comp=parts[1].strip(), vtype=parts[9].strip() if len(parts) > 9 else "", t=[], m=[], + e=[], q=[]) + stars[hip] = cur + elif cur is not None and len(parts) >= 4: + try: + cur["t"].append(float(parts[0])) + cur["m"].append(float(parts[1])) + cur["e"].append(float(parts[2])) + cur["q"].append(int(parts[3])) + except ValueError: + continue + return stars + + +def hipparcos_main(): + hep = hipparcos_read_hep() + g = core.gaia("SELECT h.original_ext_source_id AS hip, g.source_id, g.parallax, g.bp_rp, g.ruwe, " + "g.phot_g_mean_mag, g.phot_variable_flag FROM gaiadr3.hipparcos2_best_neighbour AS h JOIN " + "gaiadr3.gaia_source AS g ON h.source_id = g.source_id WHERE g.parallax > 10") + near = {int(r["hip"]): r for r in g} + print("%d Hipparcos stars with epoch photometry; %d within 100 pc through Gaia DR3" % (len(hep), len(near)), flush=True) + res = [] + for hip, gr in near.items(): + s = hep.get(hip) + if not s or len(s["t"]) < 40: + continue + t, m, e, q = (np.array(s[k]) for k in ("t", "m", "e", "q")) + ok = (q & hipparcos_BAD) == 0 + t, m, e = t[ok], m[ok], e[ok] + if len(t) < 40: + continue + med = float(np.median(m)) + sd = float(1.4826 * np.median(np.abs(m - med))) + thr = max(5 * sd, 0.03) + dip = m - med > thr + if not dip.any(): + continue + i = int(np.argmax(m - med)) + partners = np.where((np.abs(t - t[i]) < hipparcos_PAIR_D) & (np.arange(len(t)) != i))[0] + shared = bool(partners.size) and bool(np.any(m[partners] - med > 0.5 * (m[i] - med))) + recur = int(np.sum(m - med > 0.5 * (m[i] - med))) - 1 + dip_t = [float(x) for x in t[m - med > thr]] + res.append(dict(hip=hip, gaia=gr["source_id"], d_pc=1000 / float(gr["parallax"]), bp_rp=gr["bp_rp"], dip_t=dip_t, + ruwe=float(gr["ruwe"]) if gr["ruwe"] else None, gvar=gr["phot_variable_flag"], vtype=s["vtype"], + n=len(t), sd=sd, depth=float(m[i] - med), t_dip=float(t[i]) + 2440000.0, n_dip=int(dip.sum()), + partners=int(partners.size), shared=shared, recur=recur)) + sim = {} + # SIMBAD types by HIP identifier + ids = [r["hip"] for r in res] + for k in range(0, len(ids), 300): + q = ("SELECT i.id, b.main_id, b.otype FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'HIP %d'" % h for h in ids[k:k + 300])) + for r in core.simbad(q): + sim[int(r["id"].split()[-1])] = (r["main_id"], r["otype"]) + # simultaneous dips across the catalogue are the satellite's attitude events + allt = [] + for s_ in hep.values(): + if len(s_["t"]) < 40: + continue + t_, m_, q_ = (np.array(s_[k]) for k in ("t", "m", "q")) + ok_ = (q_ & hipparcos_BAD) == 0 + if ok_.sum() < 40: + continue + mm = m_[ok_] + med_ = np.median(mm) + sd_ = 1.4826 * np.median(np.abs(mm - med_)) + allt += list(t_[ok_][mm - med_ > max(5 * sd_, 0.03)]) + allt = np.sort(np.array(allt)) + print("%d dipping transits over the whole catalogue" % len(allt), flush=True) + for r in res: + r["date_shared"] = int(np.searchsorted(allt, r["t_dip"] - 2440000.0 + 0.02) - + np.searchsorted(allt, r["t_dip"] - 2440000.0 - 0.02)) - sum(1 for x in r["dip_t"] if abs(x - (r["t_dip"] - 2440000.0)) < 0.02) + # VSX names eclipsing binaries that SIMBAD files as plain stars + gpos = {x["source_id"]: x for x in core.gaia("SELECT source_id, ra, dec FROM gaiadr3.gaia_source WHERE source_id " + "IN (%s)" % ",".join(str(r["gaia"]) for r in res))} + vsx = {} + pts = [dict(source_id=str(r["hip"]), ra=float(gpos[str(r["gaia"])]["ra"]), dec=float(gpos[str(r["gaia"])]["dec"])) + for r in res if str(r["gaia"]) in gpos] + for k in range(0, len(pts), 2000): + for m in core.xmatch(pts[k:k + 2000], "B/vsx/vsx", 30.0): + vsx.setdefault(int(m["source_id"]), "%s %s" % (m.get("Name"), m.get("Type"))) + for r in res: + nm, ot = sim.get(r["hip"], ("", "")) + r["simbad"], r["otype"] = nm, ot + why = [] + if r["vtype"] in ("P", "D"): + why.append("Hipparcos type %s" % r["vtype"]) + if r["hip"] in vsx: + why.append("VSX %s" % vsx[r["hip"]]) + if r["ruwe"] and r["ruwe"] > 1.4: + why.append("RUWE %.1f" % r["ruwe"]) + if any(str(ot).startswith(x) for x in hipparcos_SIMBAD_EXPLAINED): + why.append("SIMBAD %s" % ot) + if r["date_shared"] >= 3: + why.append("%d other catalogue stars dip within half an hour" % r["date_shared"]) + if not r["shared"]: + why.append("the pass partner 20.6 minutes away %s" % ("undimmed" if r["partners"] else "missing")) + r["why"] = why + json.dump(res, open(os.path.join(hipparcos_HERE, "hip_dippers.json"), "w"), indent=1, default=str) + left = [r for r in res if not r["why"]] + print("%d stars within 100 pc have a transit 5 robust deviations (0.03 mag) faint; %d unexplained" % (len(res), len(left))) + from collections import Counter + print(" " + ", ".join("%s %d" % kv for kv in Counter(r["why"][0].split(" (")[0].split(" %")[0] for r in res + if r["why"]).most_common(8))) + for r in sorted(left, key=lambda r: -r["depth"] / max(r["sd"], 0.005))[:30]: + print(" HIP %d %-22s %-6s %5.1f pc BP-RP %.2f RUWE %.2f Hip type %s: %d transits, deepest %.3f mag (scatter %.3f) " + "on JD %.2f, %d dipping, partner shares %s, recurs %d, Gaia variable %s" + % (r["hip"], r["simbad"][:22], r["otype"][:6], r["d_pc"], float(r["bp_rp"] or 0), r["ruwe"] or 0, r["vtype"], + r["n"], r["depth"], r["sd"], r["t_dip"], r["n_dip"], r["shared"], r["recur"], r["gvar"])) + + +def hipparcos_cli(): + quiet_warnings() + hipparcos_main() + + +# -------------------------------------------------------------------------------------------------------------- + +gaia_DOC = r"""Dips in Gaia DR3 epoch photometry of skewed variables within 100 pc, recurring, shared by both fields of view and BP/RP, aperiodic; survivors checked in TESS. + + python -I seti.py dimming gaia fetch + python -I seti.py dimming gaia analyse""" + +gaia_ROOT = os.environ.get("DIPPER_ROOT", core.data("gaia_dippers")) +gaia_HERE = core.RESULTS +gaia_NATURAL = {"ECL", "EP", "YSO", "RS", "CEP", "RR", "LPV", "MICROLENSING", "AGN", "SN", "ELL"} +gaia_DL = "https://gea.esac.esa.int/data-server/data?RETRIEVAL_TYPE=EPOCH_PHOTOMETRY&ID=Gaia+DR3+%s&FORMAT=CSV&VALID_DATA=true" + + +def gaia_candidates(): + base = core.gaia("SELECT source_id, parallax, phot_g_mean_mag, bp_rp, ruwe FROM gaiadr3.gaia_source WHERE " + "parallax > 10 AND parallax_over_error > 10 AND phot_variable_flag = 'VARIABLE'") + by = {r["source_id"]: r for r in base} + ids = list(by) + out = [] + for k in range(0, len(ids), 400): + q = ("SELECT v.source_id, v.num_selected_g_fov, v.median_mag_g_fov, v.range_mag_g_fov, v.skewness_mag_g_fov, " + "v.mad_mag_g_fov, c.best_class_name, c.best_class_score FROM gaiadr3.vari_summary AS v LEFT OUTER JOIN " + "gaiadr3.vari_classifier_result AS c ON v.source_id = c.source_id WHERE v.source_id IN (%s)" % ",".join(ids[k:k + 400])) + for r in core.gaia(q): + r.update(by[r["source_id"]]) + out.append(r) + dip = [r for r in out if (num(r["skewness_mag_g_fov"]) or 0) > 1.5 and (num(r["range_mag_g_fov"]) or 0) > 0.05 + and (num(r["num_selected_g_fov"]) or 0) >= 20] + return len(base), dip + + +gaia_VIZ = "https://tapvizier.cds.unistra.fr/TAPVizieR/tap/sync" + + +def gaia_vizier_epochs(sid): + """Per-transit epoch table from VizieR's I/355/epphot, with DataLink column names.""" + import urllib.parse + q = ('SELECT TimeG, Gmag, TimeBP, BPmag, TimeRP, RPmag, GrVFlag, BPrVFlag, RPrVFlag FROM "I/355/epphot" ' + "WHERE Source = %s" % sid) + b = core.get(gaia_VIZ + "?" + urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", FORMAT="csv", QUERY=q)), + timeout=120, retries=3, soft=True, pause=3) + if not b: + return None + rows = list(csv.DictReader(io.StringIO(b.decode("utf-8", "replace")))) + if not rows: + return None + out = io.StringIO() + w = csv.writer(out) + w.writerow(["g_transit_time", "g_transit_mag", "bp_obs_time", "bp_mag", "rp_obs_time", "rp_mag", + "variability_flag_g_reject", "variability_flag_bp_reject", "variability_flag_rp_reject"]) + for r in rows: + w.writerow([r["TimeG"], r["Gmag"], r["TimeBP"], r["BPmag"], r["TimeRP"], r["RPmag"]] + + ["true" if r[k] == "1" else "false" for k in ("GrVFlag", "BPrVFlag", "RPrVFlag")]) + return out.getvalue().encode() + + +def gaia_fetch_one(sid): + p = os.path.join(gaia_ROOT, "epoch", sid + ".csv") + if os.path.exists(p): + return 1 + # the unfiltered table carries the flags gaia_series applies + b = (core.get(gaia_DL % sid, timeout=120, retries=1, soft=True, pause=3) + or core.get(gaia_DL.replace("VALID_DATA=true", "VALID_DATA=false") % sid, timeout=120, retries=1, soft=True, pause=3) + or gaia_vizier_epochs(sid)) + if not b: + return 0 + open(p, "wb").write(b) + return 1 + + +def gaia_fetch(): + os.makedirs(os.path.join(gaia_ROOT, "epoch"), exist_ok=True) + n, dip = gaia_candidates() + keep = [r for r in dip if (r.get("best_class_name") or "") not in gaia_NATURAL] + json.dump(dict(n_variable=n, dip=dip, keep=keep), open(os.path.join(gaia_ROOT, "candidates.json"), "w"), indent=1) + print("%d variable sources within 100 pc; %d dip-skewed; %d after the classifier's natural classes" % (n, len(dip), len(keep)), + flush=True) + with ThreadPoolExecutor(4) as ex: + got = sum(ex.map(gaia_fetch_one, [r["source_id"] for r in keep])) + print("%d epoch photometry files" % got) + + +def gaia_series(sid): + p = os.path.join(gaia_ROOT, "epoch", sid + ".csv") + t = open(p, encoding="utf-8", errors="replace").read() + rows = list(csv.DictReader(io.StringIO("\n".join(ln for ln in t.splitlines() if not ln.startswith("#"))))) + out = {} + # one row per field-of-view transit with G, BP and RP + for band, tc, mc, rej in (("G", "g_transit_time", "g_transit_mag", "variability_flag_g_reject"), + ("BP", "bp_obs_time", "bp_mag", "variability_flag_bp_reject"), + ("RP", "rp_obs_time", "rp_mag", "variability_flag_rp_reject")): + b = [r for r in rows if num(r.get(mc)) is not None and num(r.get(tc)) is not None + and r.get("rejected_by_photometry", "false") != "true" and r.get(rej, "false") != "true"] + out[band] = (np.array([float(r[tc]) for r in b]), np.array([float(r[mc]) for r in b])) + return out + + +def gaia_explain(x): + """Natural cause of a star's dips, or an empty string.""" + if x["dips"] < 2: + return "one dipping epoch (a single-transit outlier)" + if not x.get("spans", True): + return "every deep dip is one transit with its neighbours 106 minutes away undimmed (single-transit outliers)" + if x["ruwe"] and x["ruwe"] > 1.4: + return "RUWE %.1f: a close binary measured differently at each scan angle (period %.0f d)" % (x["ruwe"], x["period"]) + if x["power"] >= 0.3: + return "periodic at %.3f d (power %.2f): an eclipsing binary" % (x["period"], x["power"]) + if x.get("share") is not None and x["share"] < 0.5: + return "G-only dips: BP and RP in the same transits share %.0f per cent of the G drop" % (100 * x["share"]) + if x["dcol"] is not None and x["dcol"] > 0.05: + return "redder in the dips by %.2f mag: dust or a cool companion" % x["dcol"] + return "" + + +def gaia_analyse(): + from astropy.timeseries import LombScargle + c = json.load(open(os.path.join(gaia_ROOT, "candidates.json"))) + res = [] + for r in c["keep"]: + try: + s = gaia_series(r["source_id"]) + except Exception: + continue + t, g = s["G"] + if len(g) < 20: + continue + med = np.median(g) + sd = 1.4826 * np.median(np.abs(g - med)) + dips = g > med + 4 * max(sd, 0.003) + tb, bp = s["BP"] + tr, rp = s["RP"] + dcol = None + share = None + if len(bp) > 10 and len(rp) > 10: + # BP and RP colour and share of each G dip; an occulter dims all three + col, sh = [], [] + for tt, dg in zip(t[dips], g[dips] - med): + i, j = np.argmin(np.abs(tb - tt)), np.argmin(np.abs(tr - tt)) + if abs(tb[i] - tt) < 0.001 and abs(tr[j] - tt) < 0.001: + col.append(bp[i] - rp[j]) + sh.append(((bp[i] - np.median(bp)) + (rp[j] - np.median(rp))) / 2 / dg) + base = np.median(bp) - np.median(rp) + dcol = float(np.median(col) - base) if col else None + share = float(np.median(sh)) if sh else None + fr, pw = LombScargle(t, g).autopower(minimum_frequency=1 / 500.0, maximum_frequency=5.0, samples_per_peak=5) + k = int(np.argmax(pw)) + # the deepest dip must recur at half depth or span neighbouring transits (fields of view 106 min apart) + depth = g - med + i_max = int(np.argmax(depth)) + deep_idx = np.where(depth > 0.5 * depth[i_max])[0] + deep = int(len(deep_idx)) + spans = False + for i in deep_idx: + near = np.abs(t - t[i]) < 0.3 + near[i] = False + spans = spans or bool(np.any(dips & near)) + mg = float(r["phot_g_mean_mag"]) + 5 * math.log10(float(r["parallax"]) / 100.0) + res.append(dict(sid=r["source_id"], cls=r.get("best_class_name") or "", n=len(g), dips=int(dips.sum()), + deep=deep, spans=spans, + depth=float(np.max(g) - med), sd=float(sd), dcol=dcol, share=share, period=float(1 / fr[k]), power=float(pw[k]), + abs_g=mg, bp_rp=num(r["bp_rp"]), ruwe=num(r["ruwe"]), d_pc=1000 / float(r["parallax"]))) + for x in res: + x["why"] = gaia_explain(x) + left = [x for x in res if not x["why"]] + print("%d light curves read; dipping epochs (4 robust deviations below the median) in %d; %d without a natural " + "explanation" % (len(res), sum(1 for x in res if x["dips"] > 0), len(left))) + from collections import Counter + print(" " + ", ".join("%s %d" % kv for kv in Counter(x["why"].split(" (")[0] for x in res if x["why"]).most_common())) + for x in sorted(left, key=lambda x: -x["depth"])[:30]: + print(" Gaia DR3 %s %-10s %5.1f pc M_G %5.2f BP-RP %5.2f RUWE %4.1f: %d epochs, %d dipping, deepest %.3f mag " + "(scatter %.3f), BP-RP change in dips %s, best period %.3f d (power %.2f)" + % (x["sid"], x["cls"], x["d_pc"], x["abs_g"], x["bp_rp"] or 0, x["ruwe"] or 0, x["n"], x["dips"], x["depth"], + x["sd"], "%+.3f" % x["dcol"] if x["dcol"] is not None else "-", x["period"], x["power"])) + json.dump(res, open(os.path.join(gaia_HERE, "gaia_dippers.json"), "w"), indent=1) + + +def gaia_tess(): + """TESS check of unexplained dippers: deepest dip per sector against scatter and a box search.""" + from astropy.timeseries import BoxLeastSquares + res = json.load(open(os.path.join(gaia_HERE, "gaia_dippers.json"))) + for x in [x for x in res if not x["why"]]: + g = core.gaia("SELECT ra, dec FROM gaiadr3.gaia_source WHERE source_id = %s" % x["sid"])[0] + tic, lcs = core.curves(float(g["ra"]), float(g["dec"])) + print("Gaia DR3 %s (TIC %s, Gaia dips to %.3f mag): %d TESS sectors" % (x["sid"], tic, x["depth"], len(lcs)), + flush=True) + if not lcs: + continue + from scipy.ndimage import median_filter + half = 1 - 10 ** (-0.4 * x["depth"] / 2) + for s, src, t, f in lcs: + sm = median_filter(f, size=5, mode="nearest") + sd = 1.4826 * np.median(np.abs(f - np.median(f))) + # separate dips at least half the Gaia depth + low = sm < 1 - half + runs = int(np.sum(low[1:] & ~low[:-1]) + (1 if low[0] else 0)) + # box search from 0.3 d to half the sector + pg = BoxLeastSquares(t, f).power(np.geomspace(0.3, max(np.ptp(t) / 2, 0.6), 4000), [0.05, 0.1, 0.2]) + k = int(np.argmax(pg.power)) + print(" S%d %s: %d points, scatter %.4f, deepest 5-point dip %.4f at BTJD %.2f, %d dips below half the Gaia " + "depth; box search %.4f d, depth %.4f, S/N %.1f" + % (s, src, len(f), sd, 1 - sm.min(), t[int(np.argmin(sm))], runs, pg.period[k], pg.depth[k], + pg.depth_snr[k]), flush=True) + + +def gaia_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "tess")) + a = p.parse_args() + {"fetch": gaia_fetch, "analyse": gaia_analyse, "tess": gaia_tess}[a.mode]() + + +def gaia_cli(): + quiet_warnings() + gaia_main() + + +# -------------------------------------------------------------------------------------------------------------- + +hip_gaia_DOC = r"""Hipparcos-to-Gaia dimming within 100 pc: G - Hp against BP-RP, 5 robust deviations fainter, vetted for variability, companions, binarity and saturation; rotation in TESS. + + python -I seti.py dimming hip_gaia + python -I seti.py dimming hip_gaia rotation (the TESS step alone, on the stars the saved run left unexplained) + python -I seti.py dimming hip_gaia record (the coverage store's line for the saved run)""" + +hip_gaia_HERE = core.RESULTS +hip_gaia_EDGE = 25.0 +hip_gaia_CSTAR = 0.015 +hip_gaia_SIMBAD_VAR = ("V*", "Ro*", "BY*", "RS*", "Er*", "Fl*", "EB*", "El*", "Pu*", "dS*", "gD*", "Ae*", "TT*", "Y*O", "WU*", + "Al*", "bL*", "RR*", "Ce*", "LP*", "Mi*", "sr*", "a2*", "Be*", "Em*", "Ir*", "Or*", "Pe*", "WD*", "ZZ*") + + +def hip_gaia_main(): + g = core.gaia("SELECT h.original_ext_source_id AS hip, g.source_id, g.ra, g.dec, g.parallax, g.phot_g_mean_mag, " + "g.bp_rp, g.ruwe, g.phot_variable_flag, g.phot_g_mean_flux, g.phot_g_mean_flux_error, " + "g.phot_g_n_obs, g.phot_bp_rp_excess_factor, g.ipd_frac_multi_peak FROM gaiadr3.hipparcos2_best_neighbour AS h JOIN gaiadr3.gaia_source AS g ON " + "h.source_id = g.source_id WHERE g.parallax > 10 AND g.phot_g_mean_mag > 6 AND g.bp_rp IS NOT NULL") + hip = {} + from astroquery.vizier import Vizier + v = Vizier(columns=["HIP", "Hpmag", "e_Hpmag", "Hpscat", "HvarType", "MultFlag", "Ncomp", "CCDM"], row_limit=-1) + t = v.query_constraints(catalog="I/239/hip_main", Plx=">9")[0] + for r in t: + hip[int(r["HIP"])] = dict(hp=float(r["Hpmag"]), e_hp=float(r["e_Hpmag"]), + hpscat=float(r["Hpscat"]) if r["Hpscat"] is not np.ma.masked else float("nan"), + var=str(r["HvarType"]).strip(), mult=str(r["MultFlag"]).strip().replace("--", ""), + ncomp=int(r["Ncomp"]) if r["Ncomp"] is not np.ma.masked else 1) + rows = [] + for r in g: + h = hip.get(int(r["hip"])) + if not h or not np.isfinite(h["hp"]): + continue + f, fe, n = float(r["phot_g_mean_flux"]), float(r["phot_g_mean_flux_error"]), int(r["phot_g_n_obs"]) + rows.append(dict(hip=int(r["hip"]), gaia=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), + g=float(r["phot_g_mean_mag"]), bp_rp=float(r["bp_rp"]), ruwe=float(r["ruwe"] or 0), + gvar=r["phot_variable_flag"], gscat=gaia_g_scatter(f, fe, n), + cstar=cstar(float(r["phot_bp_rp_excess_factor"]), float(r["bp_rp"])), + multipeak=int(r["ipd_frac_multi_peak"] or 0), **h)) + print("%d stars within 100 pc with G above 6 and a Hipparcos Hp" % len(rows), flush=True) + # Gaia neighbours within 20 arcsec summed into Hipparcos's 38 arcsec field; light beyond 10 arcsec bounds the residual + pts = [dict(source_id=str(r["gaia"]), ra=r["ra"], dec=r["dec"]) for r in rows] + extra = {} + for k in range(0, len(pts), 3000): + for m in core.xmatch(pts[k:k + 3000], "I/355/gaiadr3", hip_gaia_EDGE): + if str(m.get("Source")) == m["source_id"] or not m.get("Gmag"): + continue + extra.setdefault(m["source_id"], []).append((float(m["Gmag"]), float(m["angDist"]))) + + def summed(r, lo, hi): + return -2.5 * math.log10(10 ** (-0.4 * r["g"]) + sum(10 ** (-0.4 * x[0]) for x in r["nb"] if lo < x[1] <= hi)) + + for r in rows: + r["nb"] = extra.get(str(r["gaia"]), []) + r["neighbours"] = sum(1 for x in r["nb"] if x[0] < r["g"] + 5) + r["g_sum"] = summed(r, 0, 20.0) + r["d"] = r["g_sum"] - r["hp"] + r["d_core"] = summed(r, 0, 10.0) - r["hp"] + r["d_all"] = summed(r, 0, hip_gaia_EDGE) - r["hp"] + const = [r for r in rows if r["var"] in ("", "C") and r["ruwe"] < 1.4 and r["neighbours"] == 0] + cc = np.sort([r["bp_rp"] for r in const]) + med, sd = running(np.array([r["bp_rp"] for r in const]), np.array([r["d"] for r in const]), + [r["bp_rp"] for r in rows]) + for r, m, s in zip(rows, med, sd): + # colour term extrapolated with fewer than 20 constant stars within 0.1 mag + r["colour_support"] = int(np.searchsorted(cc, r["bp_rp"] + 0.1) - np.searchsorted(cc, r["bp_rp"] - 0.1)) + r["resid"] = r["d"] - m + r["resid_range"] = sorted((r["d_core"] - m, r["d_all"] - m)) + r["sd"] = math.hypot(max(s, 0.003), r["e_hp"] or 0.002) + r["z"] = r["resid"] / r["sd"] + # photometric scatter against the median at the star's magnitude, both missions + for key, mag in (("gscat", "g"), ("hpscat", "hp")): + ok = [r for r in rows if np.isfinite(r[key])] + m, _ = running(np.array([r[mag] for r in ok]), np.array([r[key] for r in ok]), [r[mag] for r in ok], half=150) + for r, mm in zip(ok, m): + r[key + "_ratio"] = r[key] / mm + odd = [r for r in rows if abs(r["z"]) >= 5] + print("%d stars changed by 5 robust deviations or more; SIMBAD and WDS for them" % len(odd), flush=True) + sim = {int(k.split()[-1]): v for k, v in core.simbad_otypes(["HIP %d" % r["hip"] for r in odd]).items()} + wds = {} + opts = [dict(source_id=str(r["hip"]), ra=r["ra"], dec=r["dec"]) for r in odd] + for k in range(0, len(opts), 2000): + for m in core.xmatch(opts[k:k + 2000], "B/wds/wds", 20.0): + wds.setdefault(int(m["source_id"]), []).append(m) + for r in odd: + why = [] + if r["var"] not in ("", "C"): + why.append("Hipparcos variability type %s" % r["var"]) + if r.get("hpscat_ratio", 0) >= 3: + why.append("Hipparcos scatter %.3f mag, %.1f times the median" % (r["hpscat"], r["hpscat_ratio"])) + if r.get("gscat_ratio", 0) >= 3: + why.append("Gaia G scatter %.3f mag, %.1f times the median" % (r["gscat"], r["gscat_ratio"])) + if r["gvar"] == "VARIABLE": + why.append("Gaia variable") + types = sorted(x for x in sim.get(r["hip"], ()) if x in hip_gaia_SIMBAD_VAR) + if types: + why.append("SIMBAD %s" % ",".join(types)) + if r["ruwe"] > 1.4: + why.append("RUWE %.1f" % r["ruwe"]) + if r["colour_support"] < 20: + why.append("colour term extrapolated (%d constant stars within 0.1 mag of BP-RP %.2f)" + % (r["colour_support"], r["bp_rp"])) + # a companion lost by the G fit raises C* by about the lost fraction + frac = 1 - 10 ** (-0.4 * r["resid"]) + if r["z"] > 0 and r["cstar"] > hip_gaia_CSTAR and r["cstar"] >= 0.5 * frac: + why.append("Gaia's G misses a close companion that BP and RP collect (C* %.3f, %d per cent of transits " + "with two image peaks)" % (r["cstar"], r["multipeak"])) + lo, hi = r["resid_range"] + if hi > lo and (lo <= 0 <= hi or min(abs(lo), abs(hi)) / r["sd"] < 5): + why.append("Gaia neighbours 10-%d arcsec out, where Hipparcos summed part of their light, span " + "%+.3f to %+.3f mag" % (hip_gaia_EDGE, lo, hi)) + if r["mult"] in ("G", "O", "V", "X"): + why.append("Hipparcos %s solution" % {"G": "acceleration", "O": "orbital", "V": "variability-induced", + "X": "stochastic"}[r["mult"]]) + # WDS companions within 20 arcsec and 5 mag unmatched by Gaia, allowed 0.5 mag brighter + missing = 0.0 + for m in wds.get(r["hip"], []): + comp = str(m.get("Comp") or "").strip() + if comp and not comp.startswith("A"): + continue + s = num(m.get("sep2")) + s = s if s is not None else num(m.get("sep1")) + m1, m2 = num(m.get("mag1")), num(m.get("mag2")) + if s is None or m1 is None or m2 is None or s > 20 or m2 - m1 > 5: + continue + if any(abs(a - s) < 1.5 + 0.1 * s for _, a in r["nb"]): + continue + missing += 10 ** (-0.4 * (m2 - m1 - 0.5)) + why_w = "WDS companion %.1f arcsec, %.1f mag fainter, not in Gaia" % (s, m2 - m1) + if missing and r["z"] > 0: + r["resid_wds"] = r["resid"] - 2.5 * math.log10(1 + missing) + if r["resid_wds"] / r["sd"] < 5: + why.append(why_w + " (accounts for up to %.3f mag)" % (2.5 * math.log10(1 + missing))) + r["why"] = why + for r in rows: + r.pop("nb", None) + resid = np.array([r["resid"] for r in const]) + print("G minus Hp after the colour term: constant single stars' robust spread %.4f mag" % + (1.4826 * np.median(np.abs(resid - np.median(resid))))) + hip_gaia_rotation([r for r in odd if not r["why"]]) + json.dump(rows, open(os.path.join(hip_gaia_HERE, "hip_gaia_dimming.json"), "w"), indent=1, default=str) + hip_gaia_summarise(rows) + + +def hip_gaia_rotation(left): + """Rotational modulation in TESS (power 0.5 below 15 d, range 0.5 per cent) names spotted stars.""" + for r in left: + _, lcs = core.curves(r["ra"], r["dec"]) + m = core.modulation(lcs) + r["tess"] = m + if m and m["power"] >= 0.5 and m["range"] >= 0.005: + r["why"].append("spotted rotator: TESS period %.2f d, 2-98 percentile range %.3f over %d sectors" + % (m["period"], m["range"], m["sectors"])) + + +def hip_gaia_summarise(rows): + from collections import Counter + odd = [r for r in rows if "why" in r] + for label, sel in (("fainter", [r for r in odd if r["z"] >= 5]), ("brighter", [r for r in odd if r["z"] <= -5])): + left = [r for r in sel if not r["why"]] + print("%d stars %s in Gaia than Hipparcos predicts by 5 robust deviations; %d without a natural cause" + % (len(sel), label, len(left))) + print(" first causes: " + ", ".join("%s %d" % kv for kv in Counter( + r["why"][0].split(" %")[0].split(" (")[0].split(":")[0].split(" 0")[0].split(" 1")[0].split(" 2")[0] + for r in sel if r["why"]).most_common(10))) + for r in sorted(left, key=lambda r: -abs(r["z"]))[:25]: + print(" HIP %d (Gaia DR3 %s) G %.2f BP-RP %.2f: %+.3f mag (%.1f sigma), Hp %.3f +- %.3f, %d neighbours, " + "RUWE %.2f, scatter ratios Hip %.1f Gaia %.1f, TESS %s" + % (r["hip"], r["gaia"], r["g"], r["bp_rp"], r["resid"], r["z"], r["hp"], r["e_hp"], r["neighbours"], + r["ruwe"], r.get("hpscat_ratio", float("nan")), r.get("gscat_ratio", float("nan")), r.get("tess"))) + + +def hip_gaia_record(): + """Record the run from hip_gaia_dimming.json.""" + rows = json.load(open(os.path.join(hip_gaia_HERE, "hip_gaia_dimming.json"))) + const = [r for r in rows if r["var"] in ("", "C") and r["ruwe"] < 1.4 and r["neighbours"] == 0] + dim = [r for r in rows if r["z"] >= 5] + bri = [r for r in rows if r["z"] <= -5] + spread = 1.4826 * float(np.median(np.abs(np.array([r["resid"] for r in const]) - + np.median([r["resid"] for r in const])))) + core.record_search( + "hip_gaia_dimming", "Secular dimming between Hipparcos (1991.25) and Gaia DR3 (2016.0)", + archive="Hipparcos main catalogue I/239 (Hp, Hpscat, HvarType, MultFlag); Gaia DR3 gaia_source and " + "hipparcos2_best_neighbour; WDS B/wds; SIMBAD; TESS-SPOC", + release="Hipparcos 1997; Gaia DR3", + selection="Gaia DR3 Hipparcos cross-match, parallax above 10 mas, G above 6, with BP-RP", + code="seti.py dimming hip_gaia", + params=dict(sigma=5, colour_window=200, neighbours_arcsec=[10, 20, hip_gaia_EDGE], cstar=hip_gaia_CSTAR, scatter_ratio=3, + tess_power=0.5, tess_range=0.005), + n_targets=len(rows), + null_summary="%d stars fainter in Gaia by 5 robust deviations, %d without a natural cause; %d brighter, %d of " + "them without one" % (len(dim), sum(1 for r in dim if not r["why"]), len(bri), + sum(1 for r in bri if not r["why"])), + sensitivity="constant single stars G minus Hp spread %.4f mag after the colour term" % spread, + result="no unexplained dimming" if not any(not r["why"] for r in dim) else + "%d unexplained dimmings" % sum(1 for r in dim if not r["why"]), + ledger="Dimming between Hipparcos and Gaia") + core.clear_targets("hip_gaia_dimming") + core.record_targets("hip_gaia_dimming", [ + dict(target="hip:%d" % r["hip"], stat=float(r["z"]), unit="robust deviations of G - Hp", + vet="explained" if r.get("why") else None, + note="%+.4f mag%s" % (r["resid"], ("; " + r["why"][0]) if r.get("why") else "")) for r in rows]) + print("recorded %d stars" % len(rows)) + + +def hip_gaia_cli(): + quiet_warnings() + if sys.argv[1:] == ["record"]: + hip_gaia_record() + elif sys.argv[1:] == ["rotation"]: + rows = json.load(open(os.path.join(hip_gaia_HERE, "hip_gaia_dimming.json"))) + hip_gaia_rotation([r for r in rows if "why" in r and not r["why"]]) + json.dump(rows, open(os.path.join(hip_gaia_HERE, "hip_gaia_dimming.json"), "w"), indent=1, default=str) + hip_gaia_summarise(rows) + else: + hip_gaia_main() + + +# -------------------------------------------------------------------------------------------------------------- + +dasch_DOC = r"""Century trends of nearby sun-like stars on DASCH plates: Theil-Sen slopes against comparisons, coherent across plate series, with injected-fading recovery. + + python -I seti.py dimming dasch trends --list dasch_targets.csv [--workers 6] + python -I seti.py dimming dasch series SOURCE_ID [SOURCE_ID ...] + python -I seti.py dimming dasch judge [--sigma 4] + python -I seti.py dimming dasch inject [--stars 30] [--sizes 0.2,0.4,0.6,1.0]""" + +dasch_HERE = core.RESULTS +dasch_WORK = os.path.join(dasch_HERE, "dasch_work") +dasch_OUT = os.path.join(dasch_HERE, "dasch_trends.jsonl") +dasch_TARGETS = os.path.join(dasch_HERE, "dasch_targets.csv") +# target lists a session may come from +dasch_TARGET_LISTS = (dasch_TARGETS, os.path.join(dasch_HERE, "dasch_hz_targets.csv")) +dasch_MIN_PLATES, dasch_MIN_COMPS, dasch_MAX_SHIFT = 300, 4, 60.0 + + +def dasch__dev(): + import torch + return torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +def dasch_theil_sen(x, y): + """Theil-Sen slope on the GPU.""" + import torch + dev = dasch__dev() + xt = torch.as_tensor(np.asarray(x, np.float64) - np.mean(x), dtype=torch.float32, device=dev) + yt = torch.as_tensor(np.asarray(y, np.float64), dtype=torch.float32, device=dev) + i, j = torch.triu_indices(len(xt), len(xt), 1, device=dev) + dx = xt[j] - xt[i] + keep = dx.abs() > 1e-6 + sl = (yt[j] - yt[i])[keep] / dx[keep] + return float(sl.median()), 0.0 + + +def dasch_slope_stats(t, m, nboot=200, seed=1): + """Theil-Sen slope (mag per century) and bootstrap error on the GPU.""" + import torch + dev = dasch__dev() + yr = (np.asarray(t, np.float64) - np.mean(t)) / 100.0 + s, _ = dasch_theil_sen(yr, m) + xt = torch.as_tensor(yr, dtype=torch.float32, device=dev) + yt = torch.as_tensor(np.asarray(m, np.float64), dtype=torch.float32, device=dev) + n = len(xt) + g = torch.Generator(device=dev).manual_seed(seed) + i, j = torch.triu_indices(n, n, 1, device=dev) + bs = [] + for _ in range(nboot): + k = torch.randint(0, n, (n,), generator=g, device=dev) + xb, yb = xt[k], yt[k] + dx = xb[j] - xb[i] + keep = dx.abs() > 1e-6 + bs.append(float(((yb[j] - yb[i])[keep] / dx[keep]).median())) + return s, float(np.std(bs)) + + +def dasch_clean(lc): + """Times, calibrated magnitudes and series of plates passing the standard rejections.""" + with contextlib.redirect_stdout(io.StringIO()), contextlib.redirect_stderr(io.StringIO()): + lc.apply_standard_rejections() + mag = np.asarray(lc["magcal_magdep"].filled(np.nan) if hasattr(lc["magcal_magdep"], "filled") + else lc["magcal_magdep"], float) + rej = np.asarray(lc["reject"], int) + t = lc["time"].jyear + ser = np.asarray(lc["series"]).astype(str) + ok = np.isfinite(mag) & (rej == 0) + return t[ok], mag[ok], ser[ok] + + +def dasch_comparison_indices(rc, sep, i0): + """Up to ten reference stars within 1.0 mag and 0.5 colour of the target, nearest first.""" + mag0, col0 = float(rc["stdmag"][i0]), float(rc["color"][i0]) + cand = [i for i in range(len(rc)) if i != i0 and np.isfinite(rc["stdmag"][i]) and np.isfinite(rc["color"][i]) + and abs(float(rc["stdmag"][i]) - mag0) < 1.0 and abs(float(rc["color"][i]) - col0) < 0.5] + return sorted(cand, key=lambda i: sep[i])[:10] + + +def dasch_session_curves(sid): + """Target and comparison curves from the star's cached daschlab session.""" + quiet_warnings() + import daschlab + from astropy.coordinates import SkyCoord + import astropy.units as u + known = {} + for path in dasch_TARGET_LISTS: + if os.path.exists(path): + known.update({x["source_id"]: x for x in csv.DictReader(open(path))}) + r = known[sid] + ra, dec = float(r["ra"]), float(r["dec"]) + daschlab.REFCAT_RADIUS = 1800 * u.arcsec + with contextlib.redirect_stdout(io.StringIO()), contextlib.redirect_stderr(io.StringIO()): + sess = daschlab.open_session(os.path.join(dasch_WORK, sid + "_r1800")) + sess.select_target(ra_deg=ra, dec_deg=dec) + sess.select_refcat("apass") + rc = sess.refcat() + sep = rc["pos"].separation(SkyCoord(ra * u.deg, dec * u.deg)).arcsec + i0 = int(np.argmin(sep)) + curves = {} + for i in [i0] + dasch_comparison_indices(rc, sep, i0): + try: + with contextlib.redirect_stdout(io.StringIO()), contextlib.redirect_stderr(io.StringIO()): + curves[i] = dasch_clean(sess.lightcurve(i)) + except Exception: + continue + return curves.pop(i0), curves + + +# ------------------------------------------------------------------------------------------------------------ trends + + +def dasch_one(job): + """Slopes of one target and its comparisons from a fresh daschlab session.""" + sid, ra, dec = job + quiet_warnings() + import daschlab + from astropy.coordinates import SkyCoord + import astropy.units as u + d = os.path.join(dasch_WORK, sid + "_r1800") + daschlab.REFCAT_RADIUS = 1800 * u.arcsec + try: + for attempt in range(3): + try: + with contextlib.redirect_stdout(io.StringIO()), contextlib.redirect_stderr(io.StringIO()): + sess = daschlab.open_session(d) + sess.select_target(ra_deg=ra, dec_deg=dec) + sess.select_refcat("apass") + rc = sess.refcat() + break + except Exception: + if attempt == 2: + raise + import shutil + import time as _t + shutil.rmtree(d, ignore_errors=True) + _t.sleep(10 * (attempt + 1)) + pos = rc["pos"] + sep = pos.separation(SkyCoord(ra * u.deg, dec * u.deg)).arcsec + i0 = int(np.argmin(sep)) + if sep[i0] > 20: + return dict(sid=sid, error="no refcat match within 20 arcsec (%.1f)" % sep[i0]) + mag0, col0 = float(rc["stdmag"][i0]), float(rc["color"][i0]) + cand = dasch_comparison_indices(rc, sep, i0) + res = {} + for i in [i0] + cand: + lc = None + for attempt in range(3): + try: + with contextlib.redirect_stdout(io.StringIO()), contextlib.redirect_stderr(io.StringIO()): + lc = sess.lightcurve(i) + break + except Exception: + import time as _t + _t.sleep(5 * (attempt + 1)) + if lc is None: + continue + t, m, ser = dasch_clean(lc) + if len(t) < 50 or np.ptp(t) < 50: + continue + s, e = dasch_slope_stats(t, m) + per = {} + for name in set(ser): + k = ser == name + if k.sum() >= 30 and np.ptp(t[k]) >= 20: + per[name] = round(dasch_theil_sen(t[k] / 100.0, m[k])[0], 3) + res[i] = dict(n=int(len(t)), span=[round(float(t.min()), 1), round(float(t.max()), 1)], + slope=round(s, 4), err=round(e, 4), rms=round(float(np.std(m - np.median(m))), 3), + series=per) + if i0 not in res: + return dict(sid=sid, error="target light curve too short", mag=mag0) + comps = [res[i]["slope"] for i in cand if i in res] + if len(comps) < 3: + return dict(sid=sid, target=res[i0], mag=mag0, color=col0, error="fewer than 3 comparison light curves") + med = float(np.median(comps)) + spread = float(1.4826 * np.median(np.abs(np.array(comps) - med))) + diff = res[i0]["slope"] - med + sig = diff / max(np.hypot(spread, res[i0]["err"]), 1e-3) + return dict(sid=sid, mag=mag0, color=col0, target=res[i0], comps=comps, comp_median=round(med, 4), + comp_spread=round(spread, 4), diff=round(diff, 4), sigma=round(float(sig), 2)) + except Exception as e: + return dict(sid=sid, error=str(e)[:200]) + + +def dasch_trends_main(argv): + p = argparse.ArgumentParser(prog="seti.py dimming dasch trends") + p.add_argument("--list", required=True) + p.add_argument("--workers", type=int, default=6) + a = p.parse_args(argv) + done = set() + if os.path.exists(dasch_OUT): + done = {json.loads(ln)["sid"] for ln in open(dasch_OUT) if ln.strip()} + jobs = [(r["source_id"], float(r["ra"]), float(r["dec"])) for r in csv.DictReader(open(a.list)) + if r["source_id"] not in done] + print("%d stars to measure" % len(jobs), flush=True) + with ProcessPoolExecutor(a.workers) as ex, open(dasch_OUT, "a") as fh: + for r in ex.map(dasch_one, jobs): + fh.write(json.dumps(r) + "\n") + fh.flush() + if "sigma" in r: + print("%s B %.2f slope %+.3f mag/century, comparisons %+.3f +- %.3f, difference %+.3f (%.1f sigma), " + "%d plates" % (r["sid"], r["mag"], r["target"]["slope"], r["comp_median"], r["comp_spread"], + r["diff"], r["sigma"], r["target"]["n"]), flush=True) + else: + print("%s: %s" % (r["sid"], r.get("error")), flush=True) + + +# ------------------------------------------------------------------------------------------------------------ series + + +def dasch_series_rows(target, comps): + """Per-series target slope, comparison median and spread, and difference (mag per century).""" + t0, m0, s0 = target + rows = [] + for name in sorted(set(s0)): + k = s0 == name + if k.sum() < 30 or np.ptp(t0[k]) < 20: + continue + st = dasch_theil_sen(t0[k] / 100.0, m0[k])[0] + cs = [] + for t, m, s in comps: + kk = s == name + if kk.sum() >= 30 and np.ptp(t[kk]) >= 20: + cs.append(dasch_theil_sen(t[kk] / 100.0, m[kk])[0]) + if cs: + med = float(np.median(cs)) + rows.append(dict(series=name, n=int(k.sum()), span=(float(t0[k].min()), float(t0[k].max())), target=st, + comp=med, spread=float(1.4826 * np.median(np.abs(np.array(cs) - med))), ncomp=len(cs), + diff=st - med)) + return rows + + +def dasch_analyse(sid): + """Per-series rows and decade medians of the same-plate difference.""" + target, curves = dasch_session_curves(sid) + comps = list(curves.values()) + rows = dasch_series_rows(target, comps) + t0, m0, s0 = target + + def key(t): + return np.round(t, 5) + comp_on = {} + for t, m, _ in comps: + for tt, mm in zip(t, m): + comp_on.setdefault(key(tt), []).append(mm) + diff = np.array([m - np.median(comp_on[key(t)]) if len(comp_on.get(key(t), [])) >= 2 else np.nan + for t, m in zip(t0, m0)]) + decades = {} + for name in sorted(set(s0)): + k = (s0 == name) & np.isfinite(diff) + if k.sum() >= 30: + decades[name] = [(d, float(np.median(diff[k & (t0 >= d) & (t0 < d + 10)])), + int((k & (t0 >= d) & (t0 < d + 10)).sum())) + for d in range(1880, 2000, 10) if (k & (t0 >= d) & (t0 < d + 10)).sum() >= 8] + return rows, decades + + +def dasch_coherent(rows, sign): + """Coherence of differential slopes across series: common slope at 3 sigma with p above 0.01 over at least two series.""" + from scipy.stats import chi2 + big = [r for r in rows if r["n"] >= 100 and r["ncomp"] >= 3] + if len(big) < 2: + return False, float("nan"), float("nan"), float("nan"), len(big) + d = np.array([r["diff"] for r in big]) + w = 1.0 / np.maximum(np.array([r["spread"] for r in big]), 0.05) ** 2 + D = float(np.sum(d * w) / np.sum(w)) + sD = float(1.0 / np.sqrt(np.sum(w))) + p = float(chi2.sf(np.sum((d - D) ** 2 * w), len(big) - 1)) + return bool(p > 0.01 and D * sign / sD >= 3.0), D, sD, p, len(big) + + +def dasch_series_main(argv): + for sid in argv: + rows, decades = dasch_analyse(sid) + print("Gaia DR3 %s" % sid) + for r in rows: + print(" series %-4s %4d plates %.0f-%.0f: target %+.3f, comparisons %+.3f (%d stars, spread %.3f), " + "difference %+.3f" % (r["series"], r["n"], r["span"][0], r["span"][1], r["target"], r["comp"], + r["ncomp"], r["spread"], r["diff"])) + print(" target minus comparisons on the same plates, median by decade (plates):") + for name, cells in decades.items(): + print(" %-4s %s" % (name, " ".join("%ds %+.3f (%d)" % c for c in cells))) + + +# ------------------------------------------------------------------------------------------------------------- judge + + +def dasch_proper_motions(ids): + """Total proper motion (arcsec/yr) of Gaia DR3 sources, cached.""" + path = os.path.join(dasch_HERE, "dasch_pm.json") + pm = json.load(open(path)) if os.path.exists(path) else {} + todo = [i for i in ids if i not in pm] + if todo: + for k in range(0, len(todo), 400): + rows = core.gaia("SELECT source_id, pmra, pmdec FROM gaiadr3.gaia_source WHERE source_id IN (%s)" + % ",".join(todo[k:k + 400])) + for r in rows: + pm[r["source_id"]] = float(np.hypot(float(r["pmra"] or 0), float(r["pmdec"] or 0))) / 1000.0 + json.dump(pm, open(path, "w")) + return pm + + +def dasch_moving_blend(sid): + """Neighbours within 120 arcsec and 2.5 mag whose separation changes over 5 arcsec in 1890-1990, mimicking trends on patrol plates.""" + import math + g = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE " + "source_id = %s" % sid) + if not g: + return [] + t = g[0] + ra, dec, gm = float(t["ra"]), float(t["dec"]), float(t["phot_g_mean_mag"]) + c = math.cos(math.radians(dec)) + near = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE " + "CONTAINS(POINT(ra, dec), CIRCLE(%.7f, %.7f, %.5f)) = 1 AND phot_g_mean_mag < %.2f AND " + "source_id != %s" % (ra, dec, 120.0 / 3600, gm + 2.5, sid)) + + def at(x, yr): + return ((float(x["ra"]) * c * 3600 + float(x["pmra"] or 0) / 1000 * (yr - 2016)), + float(x["dec"]) * 3600 + float(x["pmdec"] or 0) / 1000 * (yr - 2016)) + out = [] + for n in near: + s = [math.hypot(at(t, y)[0] - at(n, y)[0], at(t, y)[1] - at(n, y)[1]) for y in (1890, 1990)] + if abs(s[1] - s[0]) > 5.0: + out.append("G %.1f neighbour %s from %.0f to %.0f arcsec" % (float(n["phot_g_mean_mag"]), + "closing" if s[1] < s[0] else "opening", s[0], s[1])) + return out + + +def dasch_judge_main(argv): + p = argparse.ArgumentParser(prog="seti.py dimming dasch judge") + p.add_argument("--sigma", type=float, default=4.0) + a = p.parse_args(argv) + rows = [json.loads(ln) for ln in open(dasch_OUT) if ln.strip()] + total = len(list(csv.DictReader(open(dasch_TARGETS)))) + meas = [r for r in rows if "sigma" in r] + pm = dasch_proper_motions([r["sid"] for r in meas]) + d = np.array([r["diff"] for r in meas]) + pop = float(1.4826 * np.median(np.abs(d - np.median(d)))) + judged, flagged = [], [] + for r in meas: + field = float(np.hypot(r["comp_spread"], r["target"]["err"])) + r["sigma_pop"] = r["diff"] / max(field, pop) + why = [] + if r["target"]["n"] < dasch_MIN_PLATES: + why.append("%d plates" % r["target"]["n"]) + if len(r["comps"]) < dasch_MIN_COMPS: + why.append("%d comparisons" % len(r["comps"])) + if pm.get(r["sid"], 0.0) * 120.0 > dasch_MAX_SHIFT: + why.append("moves %.0f arcsec in 120 yr" % (pm[r["sid"]] * 120.0)) + (flagged if why else judged).append((r, why)) + print("%d of %d targets processed, %d measured; sample spread of differential slopes %.3f mag/century; %d judged, " + "%d not judged" % (len(rows), total, len(meas), pop, len(judged), len(flagged))) + hits = [r for r, _ in judged if abs(r["sigma_pop"]) >= a.sigma] + print("judged trends at %.1f sigma or more: %d" % (a.sigma, len(hits))) + for r in sorted(hits, key=lambda r: -abs(r["sigma_pop"])): + rows_s, _ = dasch_analyse(r["sid"]) + ok, D, sD, p, ns = dasch_coherent(rows_s, np.sign(r["diff"])) + blend = dasch_moving_blend(r["sid"]) + tag = "" if ok and not blend else ("blend changing with proper motion (%s): " % "; ".join(blend)) if blend \ + else "series incoherent: " + print(" %sGaia DR3 %s B %.2f differential %+.3f mag/century (%+.1f sigma), %d plates; common series slope " + "%+.3f +- %.3f over %d series, heterogeneity p %.3g; by series %s" + % (tag, r["sid"], r["mag"], r["diff"], r["sigma_pop"], r["target"]["n"], + D, sD, ns, p, ", ".join("%s %+.2f (spread %.2f, %d plates)" % (x["series"], x["diff"], x["spread"], + x["n"]) for x in rows_s))) + for r, why in sorted(flagged, key=lambda x: -abs(x[0]["sigma_pop"]))[:5]: + print(" not judged: Gaia DR3 %s differential %+.3f (%s)" % (r["sid"], r["diff"], ", ".join(why))) + + +# ------------------------------------------------------------------------------------------------------------ inject + + +def dasch_judge_injected(target, comps, pop): + """Trend judgement of one target curve: slope, significance and recovery; None with fewer than four comparisons.""" + t, m, s = target + sl, err = dasch_slope_stats(t, m, nboot=100) + cs = [dasch_slope_stats(c[0], c[1], nboot=1)[0] for c in comps if len(c[0]) >= 50 and np.ptp(c[0]) >= 50] + if len(cs) < 4: + return None + med = float(np.median(cs)) + spread = float(1.4826 * np.median(np.abs(np.array(cs) - med))) + diff = sl - med + sig = diff / max(np.hypot(spread, err), pop) + ok = abs(sig) >= 4.0 + if ok: + rows = [dict(series=r["series"], n=r["n"], ncomp=r["ncomp"], diff=r["diff"], spread=r["spread"]) + for r in dasch_series_rows(target, comps)] + ok = dasch_coherent(rows, np.sign(diff))[0] + return dict(diff=diff, sigma=sig, recovered=bool(ok)) + + +def dasch_inject_main(argv): + quiet_warnings() + p = argparse.ArgumentParser(prog="seti.py dimming dasch inject") + p.add_argument("--stars", type=int, default=30) + p.add_argument("--sizes", default="0.2,0.4,0.6,1.0") + a = p.parse_args(argv) + rows = [json.loads(ln) for ln in open(dasch_OUT) if ln.strip()] + pm = json.load(open(os.path.join(dasch_HERE, "dasch_pm.json"))) + meas = [r for r in rows if "sigma" in r] + d = np.array([r["diff"] for r in meas]) + pop = float(1.4826 * np.median(np.abs(d - np.median(d)))) + judged = [r for r in meas if r["target"]["n"] >= 300 and len(r["comps"]) >= 4 and pm.get(r["sid"], 0) * 120 <= 60 + and abs(r["diff"]) < 2 * pop] + rng = np.random.default_rng(5) + pick = [judged[i] for i in rng.choice(len(judged), size=min(a.stars, len(judged)), replace=False)] + sizes = [float(x) for x in a.sizes.split(",")] + res = {s: [] for s in sizes} + for r in pick: + try: + target, curves = dasch_session_curves(r["sid"]) + except Exception: + continue + comps = list(curves.values()) + t, m, s = target + tm = 0.5 * (t.min() + t.max()) + for size in sizes: + j = dasch_judge_injected((t, m + size * (t - tm) / 100.0, s), comps, pop) + if j: + res[size].append(j["recovered"]) + print("%s: %s" % (r["sid"], ", ".join("%.1f %s" % (sz, res[sz][-1] if res[sz] else "-") for sz in sizes)), + flush=True) + print("sample spread %.3f mag per century; recovered fraction by injected fading:" % pop) + for size in sizes: + v = res[size] + print(" %.1f mag per century: %d of %d (%.0f per cent)" % (size, sum(v), len(v), 100.0 * sum(v) / max(len(v), 1))) + + +dasch_MODES = {"trends": dasch_trends_main, "series": dasch_series_main, "judge": dasch_judge_main, "inject": dasch_inject_main} + + +def dasch_cli(): + if len(sys.argv) < 2 or sys.argv[1] not in dasch_MODES: + print(__doc__) + sys.exit(2) + dasch_MODES[sys.argv[1]](sys.argv[2:]) + + +# -------------------------------------------------------------------------------------------------------------- + +tess_DOC = r"""Slow TESS dimming the pipeline removes: six-hour bins of cotrended SAP flux, runs 0.1 per cent deep over a day, vetted against background, centroid and rotation. + + python -I seti.py dimming tess "HD 193664" + python -I seti.py dimming tess background "ra dec" SECTOR START-END [START-END ...] + python -I seti.py dimming tess vet "HIP 45963" [...] (names looked up in slow_targets_coords.txt)""" + + +def tess_bin6(t, f, hours=6.0): + w = hours / 24.0 + edges = np.arange(t.min(), t.max() + w, w) + idx = np.digitize(t, edges) + bt, bf = [], [] + for i in np.unique(idx): + m = idx == i + if m.sum() > 30: + bt.append(t[m].mean()) + bf.append(np.median(f[m])) + return np.array(bt), np.array(bf) + + +def tess_edge_mask(bt, after=1.5, before=0.5, gap=0.5): + """Bins near segment starts and ends where thermal settling and cotrending bend the flux.""" + bt = np.asarray(bt) + starts = np.r_[bt[0], bt[1:][np.diff(bt) > gap]] + ends = np.r_[bt[:-1][np.diff(bt) > gap], bt[-1]] + m = np.zeros(len(bt), bool) + for s in starts: + m |= (bt >= s) & (bt < s + after) + for e in ends: + m |= (bt > e - before) & (bt <= e) + return m + + +def tess_bright_sky(lc, bt, limit=1.3): + """Six-hour bins with background above limit times the sector median.""" + q = lc.remove_nans() + t, b = q.time.value, np.asarray(q.sap_bkg.value, float) + b = b / np.nanmedian(b) + w = 0.125 + return np.array([np.nanmedian(b[(t >= x - w) & (t < x + w)]) > limit if np.any((t >= x - w) & (t < x + w)) + else False for x in bt]) + + +def tess_runs(bt, bf, thr=1e-3, min_days=1.0, exclude=None): + low = (bf < 1.0 - thr) & ~tess_edge_mask(bt) + if exclude is not None: + low &= ~exclude + out, i = [], 0 + while i < len(low): + if not low[i]: + i += 1 + continue + j = i + while j + 1 < len(low) and low[j + 1]: + j += 1 + if bt[j] - bt[i] >= min_days - 0.25: + out.append((bt[i], bt[j], float(1.0 - bf[i:j + 1].min()))) + i = j + 1 + return out + + +def tess_cotrended(lc): + """Six-hour bins of SAP flux corrected by single-scale cotrending vectors.""" + from lightkurve.correctors import CBVCorrector + raw = lc[np.isfinite(np.asarray(lc.flux.value, float))].copy() + raw.flux, raw.flux_err = raw.sap_flux, raw.sap_flux_err + raw = raw.remove_nans() + cc = CBVCorrector(raw, interpolate_cbvs=True) + cor = cc.correct_gaussian_prior(cbv_type=["SingleScale"], cbv_indices=[np.arange(1, 5)], alpha=1e-4) + return tess_bin6(cor.time.value, cor.flux.value / np.nanmedian(cor.flux.value)) + + +def tess_neighbours_dip(lc, s, e, n=5, radius_deg=1.5): + """Median depth over [s, e] among other two-minute targets on the same CCD.""" + import lightkurve as lk + from astropy.coordinates import SkyCoord + import astropy.units as u + sector, cam, ccd = lc.meta.get("SECTOR"), lc.meta.get("CAMERA"), lc.meta.get("CCD") + c = SkyCoord(lc.meta["RA_OBJ"] * u.deg, lc.meta["DEC_OBJ"] * u.deg) + sr = lk.search_lightcurve(c, radius=radius_deg * 3600, mission="TESS", author="SPOC", exptime=120, + sector=sector) + depths = [] + for row in sr[1:n * 3]: + if len(depths) >= n: + break + try: + o = row.download(download_dir=core.data("lc")) + if o.meta.get("CAMERA") != cam or o.meta.get("CCD") != ccd or o.meta.get("TICID") == lc.meta.get("TICID"): + continue + bt, bf = tess_cotrended(o) + m = (bt >= s) & (bt <= e) + if m.sum(): + depths.append(float(1.0 - bf[m].min())) + except Exception: + continue + return depths + + +def tess_main(): + p = argparse.ArgumentParser() + p.add_argument("star") + a = p.parse_args() + import lightkurve as lk + target = a.star + parts = a.star.split() + if len(parts) == 2 and all(p.replace(".", "").replace("-", "").isdigit() for p in parts): + from astropy.coordinates import SkyCoord + import astropy.units as u + target = SkyCoord(float(parts[0]) * u.deg, float(parts[1]) * u.deg) + sr = lk.search_lightcurve(target, radius=10, mission="TESS", author="SPOC", exptime=120) + lcs = sr.download_all(download_dir=core.data("lc")) if len(sr) else [] + print("%s: %d sectors" % (a.star, len(lcs)), flush=True) + for lc in lcs: + sector = lc.meta.get("SECTOR") + try: + bt, bf = tess_cotrended(lc) + except Exception as e: + print(" sector %s: no cotrending vectors (%s)" % (sector, str(e)[:60]), flush=True) + continue + pd = lc.remove_nans().normalize() + pt, pf = tess_bin6(pd.time.value, pd.flux.value.astype(float)) + r_raw, r_pdc = tess_runs(bt, bf), tess_runs(pt, pf) + print(" sector %s: raw-cotrended spread %.0f ppm, slow dims %d (pipeline %d)" + % (sector, np.std(bf) * 1e6, len(r_raw), len(r_pdc)), flush=True) + for s, e, d in r_raw: + seen = any(not (e2 < s or s2 > e) for s2, e2, _ in r_pdc) + nd = tess_neighbours_dip(lc, s, e) + shared = len(nd) > 0 and np.median(nd) > 0.5 * d + verdict = ("shared by %d neighbours (systematic)" % len(nd) if shared else + "UNIQUE to the star among %d neighbours" % len(nd)) + print(" BTJD %.2f-%.2f, %.1f days, depth %.0f ppm, %s, %s" + % (s, e, e - s + 0.25, d * 1e6, "also in pipeline" if seen else "removed by pipeline", verdict), + flush=True) + + +def tess_background_main(): + """Six-hour bins around each window beside background and centroid.""" + import lightkurve as lk + from astropy.coordinates import SkyCoord + import astropy.units as u + ra, dec = map(float, sys.argv[1].split()) + sector = int(sys.argv[2]) + sr = lk.search_lightcurve(SkyCoord(ra * u.deg, dec * u.deg), radius=10, mission="TESS", author="SPOC", + exptime=120, sector=sector) + lc = sr.download(download_dir=core.data("lc")) + bt, bf = tess_cotrended(lc) + q = lc.remove_nans() + t = q.time.value + bkg = np.asarray(q.sap_bkg.value, float) + cx = np.asarray(q.centroid_col.value, float) + cy = np.asarray(q.centroid_row.value, float) + _, bb = tess_bin6(t, bkg / np.nanmedian(bkg)) + _, bx = tess_bin6(t, (cx - np.nanmedian(cx)) * 1e3) + _, by = tess_bin6(t, (cy - np.nanmedian(cy)) * 1e3) + n = min(len(bt), len(bb)) + r = np.corrcoef(bf[:n], bb[:n])[0, 1] + print("sector %d: flux-background correlation over the sector %.2f" % (sector, r)) + for w in sys.argv[3:]: + s, e = map(float, w.split("-")) + print(" window %.2f-%.2f" % (s, e)) + for i in range(n): + if s - 1.0 <= bt[i] <= e + 1.0: + print(" %.2f flux %+6.0f ppm bkg x%.2f centroid %+5.0f,%+5.0f mpix%s" + % (bt[i], (bf[i] - 1) * 1e6, bb[i], bx[i], by[i], " <" if s <= bt[i] <= e else "")) + + +def tess_simbad_type(name): + q = ("SELECT basic.otype, basic.sp_type FROM basic JOIN ident ON ident.oidref=basic.oid " + "WHERE ident.id='%s'" % name) + data = urllib.parse.urlencode(dict(request="doQuery", lang="adql", format="json", query=q)).encode() + try: + d = json.loads(urllib.request.urlopen("https://simbad.cds.unistra.fr/simbad/sim-tap/sync", data=data, + timeout=60).read()) + return d["data"][0] if d["data"] else ["?", "?"] + except Exception: + return ["?", "?"] + + +def tess_detrend_rotation(bt, bf): + from astropy.timeseries import LombScargle + ls = LombScargle(bt, bf, nterms=2) + freq, power = ls.autopower(minimum_frequency=1 / 13.0, maximum_frequency=2.0, samples_per_peak=20) + k = int(np.argmax(power)) + model = ls.model(bt, freq[k]) + return 1.0 / freq[k], float(power[k]), float(np.ptp(model)), bf - model + 1.0 + + +def tess_vet_main(): + """Dims left after removing rotational modulation.""" + coords = dict(line.strip().split("|") for line in open(core.results("slow_targets_coords.txt")) if "|" in line) + import lightkurve as lk + from astropy.coordinates import SkyCoord + import astropy.units as u + for name in sys.argv[1:]: + ra, dec = map(float, coords[name].split()) + otype, sp = tess_simbad_type(name) + sr = lk.search_lightcurve(SkyCoord(ra * u.deg, dec * u.deg), radius=10, mission="TESS", author="SPOC", + exptime=120) + lcs = sr.download_all(download_dir=core.data("lc")) if len(sr) else [] + print("=== %s SIMBAD %s %s %d sectors" % (name, otype, sp, len(lcs)), flush=True) + for lc in lcs: + try: + bt, bf = tess_cotrended(lc) + except Exception as e: + print(" sector %s: %s" % (lc.meta.get("SECTOR"), str(e)[:60]), flush=True) + continue + period, power, amp, resid = tess_detrend_rotation(bt, bf) + sig = 1.4826 * np.median(np.abs(resid - np.median(resid))) + left = [r for r in tess_runs(bt, resid, exclude=tess_bright_sky(lc, bt)) if r[2] > 3.0 * sig] + print(" sector %s: period %.2f d, power %.2f, amplitude %.0f ppm, residual spread %.0f ppm, " + "dims left %d" % (lc.meta.get("SECTOR"), period, power, amp * 1e6, np.std(resid) * 1e6, + len(left)), flush=True) + for s, e, d in left: + print(" RESIDUAL DIM BTJD %.2f-%.2f, %.1f days, depth %.0f ppm" % (s, e, e - s + 0.25, d * 1e6), + flush=True) + + +def tess_cli(): + quiet_warnings() + modes = {"background": tess_background_main, "vet": tess_vet_main} + if len(sys.argv) > 1 and sys.argv[1] in modes: + modes[sys.argv.pop(1)]() + else: + tess_main() + + +# -------------------------------------------------------------------------------------------------------------- + +neowise_DOC = r"""Decade NEOWISE brightening of stars within 15 pc against same-frame references, W2 over W1 at 5 sigma; joint test with Hipparcos-to-Gaia dimming by Fisher's method. + + python -I seti.py dimming neowise fetch [--threads 3] [--sample hip_gaia] + python -I seti.py dimming neowise analyse [--sample hip_gaia] + python -I seti.py dimming neowise joint""" + +neowise_ROOT = os.environ.get("NEOWISE_ROOT", core.data("neowise")) +neowise_HERE = core.RESULTS +neowise_RADIUS = 60.0 +neowise_MATCH = 2.0 +neowise_COLS = "ra, dec, mjd, w1mpro, w1sigmpro, w2mpro, w2sigmpro, qual_frame, cc_flags, ph_qual, nb, saa_sep, moon_masked" + + +def neowise_root(sample): + return neowise_ROOT if sample == "nearest" else core.data("neowise_" + sample) + + +def neowise_result(sample): + return os.path.join(neowise_HERE, "neowise_trends.json" if sample == "nearest" else "neowise_trends_%s.json" % sample) + + +def neowise_targets(sample="nearest"): + if sample == "hip_gaia": + ids = [r["gaia"] for r in json.load(open(core.results("hip_gaia_dimming.json")))] + rows = [] + for i in range(0, len(ids), 2000): + rows += core.gaia("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag FROM " + "gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(ids[i:i + 2000])) + else: + rows = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag FROM gaiadr3.gaia_source " + "WHERE parallax > 66.67 AND parallax_over_error > 10") + probe = [dict(source_id=r["source_id"], ra=float(r["ra"]) - float(r["pmra"] or 0) / 3.6e6 * 5.5 / + math.cos(math.radians(float(r["dec"]))), dec=float(r["dec"]) - float(r["pmdec"] or 0) / 3.6e6 * 5.5) + for r in rows] + w = {} + for m in core.xmatch(probe, "II/328/allwise", 3.0): + if m["source_id"] not in w or float(m["angDist"]) < float(w[m["source_id"]]["angDist"]): + w[m["source_id"]] = m + out = [] + for r in rows: + m = w.get(r["source_id"]) + try: + w1 = float(m["W1mag"]) if m else None + except ValueError: + w1 = None + if w1 is not None and 8.0 <= w1 <= 12.5: + out.append(dict(r, w1=w1)) + return out + + +def neowise_fetch_one(s, root=None): + p = os.path.join(root or neowise_ROOT, "cones", "%s.json" % s["source_id"]) + if os.path.exists(p): + return 1 + q = ("SELECT %s FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f)) = 1" + % (neowise_COLS, float(s["ra"]), float(s["dec"]), (neowise_RADIUS + 15 * math.hypot(float(s["pmra"] or 0), float(s["pmdec"] or 0)) / 1000) / 3600)) + for attempt in range(3): + try: + rows = core.irsa(q) + break + except Exception: + rows = None + if rows is None: + return 0 + json.dump(rows, open(p, "w")) + return 1 + + +def neowise_fetch(threads, sample="nearest"): + root = neowise_root(sample) + os.makedirs(os.path.join(root, "cones"), exist_ok=True) + tp = os.path.join(root, "targets.json") + ts = json.load(open(tp)) if os.path.exists(tp) else neowise_targets(sample) + json.dump(ts, open(tp, "w")) + print("%d Gaia DR3 stars (%s) with AllWISE W1 8-12.5" % (len(ts), sample), flush=True) + done = 0 + with ThreadPoolExecutor(threads) as ex: + for i, ok in enumerate(ex.map(lambda s: neowise_fetch_one(s, root), ts)): + done += ok + if (i + 1) % 200 == 0: + print("%d of %d cones fetched" % (done, len(ts)), flush=True) + print("%d cones on disk" % done) + + +def neowise_analyse_one(s, root=None): + p = os.path.join(root or neowise_ROOT, "cones", "%s.json" % s["source_id"]) + if not os.path.exists(p): + return None + rows = json.load(open(p)) + if not rows: + return None + ra = np.array([float(r["ra"]) for r in rows]) + de = np.array([float(r["dec"]) for r in rows]) + mjd = np.array([float(r["mjd"]) for r in rows]) + w1 = np.array([num(r["w1mpro"]) or np.nan for r in rows]) + w2 = np.array([num(r["w2mpro"]) or np.nan for r in rows]) + ok = np.array([r["qual_frame"] not in ("0",) and r["cc_flags"][:2] == "00" and (num(r["saa_sep"]) or 0) > 5 + and r["moon_masked"][:2] == "00" for r in rows]) + yrs = (mjd - 57388.0) / 365.25 # years from 2016.0 + pra = float(s["ra"]) + float(s["pmra"] or 0) / 3.6e6 * yrs / math.cos(math.radians(float(s["dec"]))) + pde = float(s["dec"]) + float(s["pmdec"] or 0) / 3.6e6 * yrs + sep_t = np.hypot((ra - pra) * math.cos(math.radians(float(s["dec"]))), de - pde) * 3600 + tgt = ok & (sep_t < neowise_MATCH) + if tgt.sum() < 40: + return dict(sid=s["source_id"], error="%d target detections" % int(tgt.sum())) + visit = np.floor((mjd - 56600.0) / 182.6).astype(int) + # references: persistent field sources brighter than W1 14.5 on a 2 arcsec grid + ref = ok & (sep_t > 8) & (w1 < 14.5) + key = np.round(ra[ref] * 3600 * math.cos(math.radians(float(s["dec"]))) / 2).astype(np.int64) * 100000 + \ + np.round(de[ref] * 3600 / 2).astype(np.int64) + out = dict(sid=s["source_id"], n=int(tgt.sum()), w1=float(np.nanmedian(w1[tgt])), w2=float(np.nanmedian(w2[tgt]))) + for band, mag in (("W1", w1), ("W2", w2)): + vis = sorted(set(visit[tgt])) + tv, dv = [], [] + rv_idx = np.where(ref)[0] + # reference offsets from their medians, per visit + offs = {} + for k in np.unique(key): + sel = rv_idx[key == k] + if len(sel) < 30: + continue + m0 = np.nanmedian(mag[sel]) + for v in set(visit[sel]): + vv = sel[visit[sel] == v] + offs.setdefault(v, []).append(np.nanmedian(mag[vv]) - m0) + for v in vis: + sel = tgt & (visit == v) + if sel.sum() < 4 or v not in offs or len(offs[v]) < 1: + continue + tv.append(np.median(yrs[sel])) + dv.append(np.nanmedian(mag[sel]) - np.median(offs[v])) + if len(tv) < 8: + out[band] = None + continue + tv, dv = np.array(tv), np.array(dv) + A = np.vstack([np.ones_like(tv), tv]).T + coef, *_ = np.linalg.lstsq(A, dv, rcond=None) + resid = dv - A @ coef + sd = 1.4826 * np.median(np.abs(resid - np.median(resid))) + se = max(sd, 1e-3) / math.sqrt(max(np.sum((tv - tv.mean()) ** 2), 1e-9)) + out[band] = dict(slope_decade=float(coef[1] * 10), err_decade=float(se * 10), visits=len(tv), + scatter=float(sd), refs=int(np.median([len(offs[v]) for v in offs]))) + return out + + +def neowise_analyse(sample="nearest"): + root = neowise_root(sample) + ts = json.load(open(os.path.join(root, "targets.json"))) + from concurrent.futures import ProcessPoolExecutor + from functools import partial + with ProcessPoolExecutor(int(os.environ.get("NEOWISE_PROCS", "2"))) as ex: + res = [r for r in ex.map(partial(neowise_analyse_one, root=root), ts, chunksize=4) if r] + good = [r for r in res if r.get("W1") and r.get("W2") and np.isfinite(r["W1"]["slope_decade"]) + and np.isfinite(r["W2"]["slope_decade"])] + print("%d of %d stars with differential W1 and W2 light curves (median %d visits)" % ( + len(good), len(ts), np.median([r["W1"]["visits"] for r in good]))) + # slopes judged against stars within 0.5 mag in W1 to remove NEOWISE's brightness-dependent drift + w1s = np.array([r["w1"] for r in good]) + for band in ("W1", "W2"): + s = np.array([r[band]["slope_decade"] for r in good]) + for i, r in enumerate(good): + near = np.abs(w1s - r["w1"]) < 0.5 + near[i] = False + if near.sum() < 5: + near = np.argsort(np.abs(w1s - r["w1"]))[1:8] + med = float(np.median(s[near])) + sc = float(1.4826 * np.median(np.abs(s[near] - med))) + r[band]["excess"] = r[band]["slope_decade"] - med + r[band]["z"] = r[band]["excess"] / math.hypot(r[band]["err_decade"], sc) + for band in ("W1", "W2"): + z = np.array([r[band]["z"] for r in good]) + print("%s slope against stars of the same brightness, in units of error and scatter: median %+.2f, robust " + "spread %.2f" % (band, np.median(z), 1.4826 * np.median(np.abs(z - np.median(z))))) + bright = [r for r in good if r["W2"]["z"] < -5 and r["W2"]["excess"] < r["W1"]["excess"]] + print("brightening in W2 at 5 sigma beyond stars of the same brightness, more than in W1: %d" % len(bright)) + for r in sorted(good, key=lambda r: r["W2"]["z"])[:15]: + print(" Gaia DR3 %s W1 %.2f W2 %.2f: W1 %+.3f (%+.1f sigma), W2 %+.3f (%+.1f sigma) mag/decade beyond stars of " + "the same brightness, over %d visits (%d refs)" + % (r["sid"], r["w1"], r["w2"], r["W1"]["excess"], r["W1"]["z"], r["W2"]["excess"], r["W2"]["z"], + r["W2"]["visits"], r["W2"]["refs"])) + json.dump(res, open(neowise_result(sample), "w"), indent=1) + + +def neowise_joint(draws=2000, seed=7): + """Fisher combination of optical-dimming and W2-brightening p-values, null from re-pairing within 0.5 mag in W1.""" + from scipy.stats import norm + hg = {r["gaia"]: r for r in json.load(open(core.results("hip_gaia_dimming.json")))} + nw = [r for r in json.load(open(neowise_result("hip_gaia"))) + if r.get("W2") and r.get("W1") and np.isfinite(r["W2"].get("z", np.nan)) and r["sid"] in hg] + z_opt = np.array([hg[r["sid"]]["z"] for r in nw]) + z_ir = np.array([-r["W2"]["z"] for r in nw]) # brightening positive + w1 = np.array([r["w1"] for r in nw]) + ok = np.isfinite(z_opt) & np.isfinite(z_ir) + nw, z_opt, z_ir, w1 = [x for x, k in zip(nw, ok) if k], z_opt[ok], z_ir[ok], w1[ok] + # each run's z scaled by its own spread + so = 1.4826 * np.median(np.abs(z_opt - np.median(z_opt))) + si = 1.4826 * np.median(np.abs(z_ir - np.median(z_ir))) + zo, zi = (z_opt - np.median(z_opt)) / so, (z_ir - np.median(z_ir)) / si + + def fisher(a, b): + return -2.0 * (norm.logsf(a) + norm.logsf(b)) + x = fisher(zo, zi) + rng = np.random.default_rng(seed) + order = np.argsort(w1) + null = [] + for _ in range(draws): + perm = order.copy() + # shuffle within brightness blocks of at least 20 stars + edges = [0] + for j in range(1, len(order)): + if w1[order[j]] - w1[order[edges[-1]]] > 0.5 and j - edges[-1] >= 20: + edges.append(j) + edges.append(len(order)) + for s0, s1 in zip(edges[:-1], edges[1:]): + blk = perm[s0:s1].copy() + rng.shuffle(blk) + perm[s0:s1] = blk + zi_p = np.empty_like(zi) + zi_p[order] = zi[perm] + null.append(np.sort(fisher(zo, zi_p))[::-1][:20]) + null = np.array(null) + top = np.argsort(-x)[:20] + print("%d stars with a Hipparcos-to-Gaia deviation and a W2 trend; robust spreads %.2f (optical) and %.2f (W2)" + % (len(x), so, si)) + out = [] + for rank, i in enumerate(top): + p_rank = float(np.mean(null[:, rank] >= x[i])) + p_any = float(np.mean(null[:, 0] >= x[i])) + r = nw[i] + out.append(dict(sid=r["sid"], hip=hg[r["sid"]]["hip"], fisher=float(x[i]), z_opt=float(z_opt[i]), + z_w2=float(-z_ir[i]), w1=float(w1[i]), p_rank=p_rank, p_any=p_any, + opt_mag=float(hg[r["sid"]]["resid"]), w2_slope=r["W2"]["excess"])) + print(" HIP %-7d Gaia DR3 %s: Fisher %.1f, optical %+.1f sigma (%+.3f mag fainter), W2 %+.1f sigma " + "(%+.3f mag/decade); chance of a value this high at rank %d %.3f, anywhere %.3f" + % (hg[r["sid"]]["hip"], r["sid"], x[i], z_opt[i], hg[r["sid"]]["resid"], -z_ir[i], r["W2"]["excess"], + rank + 1, p_rank, p_any)) + json.dump(dict(n=len(x), top=out, draws=draws), open(core.results("dimming_ir_joint.json"), "w"), indent=1) + + +def neowise_joint_record(): + """Record the joint statistic: the top twenty stars with Fisher value and chance rate.""" + d = json.load(open(core.results("dimming_ir_joint.json"))) + top = d["top"] + best = min(top, key=lambda r: r["p_rank"]) + core.record_search( + "dimming_ir_joint", "Dimming with mid-infrared brightening", archive="Hipparcos and Gaia DR3 photometry; NEOWISE-R single exposures (IRSA)", + release="the Hipparcos-to-Gaia dimming run and the NEOWISE W2 trends of the same stars", selection="stars carrying both a Hipparcos-to-Gaia deviation and a W2 trend", + code=os.path.abspath(__file__), entry="neowise joint", n_targets=d["n"], params=dict(draws=d.get("draws", 2000), block_mag=0.5, block_min=20), + null_summary="the W2 trends re-paired among stars within 0.5 mag in W1, which keeps both marginal distributions", + sensitivity="one-sided optical and W2 deviations combined by Fisher's method; each robustly scaled to its own run", + ledger="Dimming with mid-infrared brightening", + result="%d stars; the highest Fisher value %.0f (HIP %d, %.1f sigma fainter in Gaia, W2 %s at %.1f sigma) arises by chance at its rank %.0f per cent of the time; the lowest chance at any rank %.2f (HIP %d), one in twenty ranks" % ( + d["n"], top[0]["fisher"], top[0]["hip"], top[0]["z_opt"], "fading" if top[0]["z_w2"] > 0 else "brightening", abs(top[0]["z_w2"]), + 100 * top[0]["p_rank"], best["p_rank"], best["hip"])) + core.clear_targets("dimming_ir_joint") + core.record_targets("dimming_ir_joint", [dict(target="gaia_dr3:%s" % r["sid"], stat=r["fisher"], p=r["p_rank"], unit="Fisher's combined statistic", + vet="within the re-paired null" if r["p_rank"] > 0.01 else None, + note="HIP %d; Gaia fainter than Hipparcos at %+.1f sigma (%+.3f mag); W2 trend %+.1f sigma (%+.3f mag/decade, positive fading)" % ( + r["hip"], r["z_opt"], r["opt_mag"], r["z_w2"], r["w2_slope"])) for r in top]) + print("recorded") + + +def neowise_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "joint", "joint_record")) + p.add_argument("--threads", type=int, default=3) + p.add_argument("--sample", choices=("nearest", "hip_gaia"), default="nearest") + a = p.parse_args() + if a.mode == "fetch": + neowise_fetch(a.threads, a.sample) + elif a.mode == "analyse": + neowise_analyse(a.sample) + elif a.mode == "joint_record": + neowise_joint_record() + else: + neowise_joint() + + +def neowise_cli(): + quiet_warnings() + neowise_main() + + +# -------------------------------------------------------------------------------------------------------------- + +alerts_DOC = r"""Gaia Science Alerts matched to stars within 100 pc, excluding flares, CV outbursts and accretion. + + python -I seti.py dimming alerts""" + +alerts_ROOT = os.environ.get("ALERTS_ROOT", core.data("gaia_alerts")) + + +def alerts_main(): + rows = list(csv.reader(open(os.path.join(alerts_ROOT, "alerts.csv"), encoding="utf-8", errors="replace"))) + hdr = [h.strip().lstrip("#") for h in rows[0]] + al = [dict(zip(hdr, r)) for r in rows[1:] if len(r) >= 8] + pts = [dict(source_id=a["Name"], ra=float(a["RaDeg"]), dec=float(a["DecDeg"])) for a in al] + m = [] + for k in range(0, len(pts), 5000): + m += core.xmatch(pts[k:k + 5000], "I/355/gaiadr3", 2.0) + near = {} + for x in m: + try: + plx = float(x.get("Plx") or 0) + except ValueError: + plx = 0.0 + if plx > 10: + near.setdefault(x["source_id"], []).append(x) + by = {a["Name"]: a for a in al} + out = [] + for n, xs in near.items(): + a, x = by[n], min(xs, key=lambda x: float(x["angDist"])) + out.append(dict(name=n, date=a["Date"], cls=a["Class"], comment=a["Comment"], alert=a["AlertMag"], + hist=a["HistoricMag"], gaia=x["Source"], plx=float(x["Plx"]), g=x.get("Gmag"), + bprp=x.get("BP-RP"), sep=float(x["angDist"]))) + json.dump(out, open(os.path.join(alerts_ROOT, "near.json"), "w"), indent=1) + print("%d alerts, %d on Gaia DR3 stars with parallax above 10 mas" % (len(al), len(out))) + for o in sorted(out, key=lambda o: -o["plx"]): + print(" %s %s %5.1f pc G %s BP-RP %s: %s from %s, class %s, %s" % ( + o["name"], o["date"][:10], 1000 / o["plx"], o["g"], o["bprp"], o["alert"], o["hist"], o["cls"], o["comment"])) + + +def alerts_record(): + """Record one row per alert on a nearby star with the team's comment.""" + near = json.load(open(os.path.join(alerts_ROOT, "near.json"))) + core.record_search( + "gaia_alerts_near", "Gaia Science Alerts on stars within 100 pc", + archive="Gaia photometric science alerts (Cambridge), CDS XMatch with Gaia DR3", release="alerts 2014-2025", + selection="alerts within 2 arcsec of a Gaia DR3 source with parallax above 10 mas", code="seti.py dimming alerts", + params=dict(radius_arcsec=2, parallax_mas=10), n_targets=len(near), + null_summary="flares on red and brown dwarfs, two dwarf-nova outbursts, a young-star flare, a flare star's slow " + "rise and a distant dwarf nova behind a spurious parallax", + sensitivity="alert thresholds of about 0.3-1 mag against the historic mean", + result="no unexplained brightening of a nearby star", ledger="Gaia Science Alerts on nearby stars") + core.clear_targets("gaia_alerts_near") + core.record_targets("gaia_alerts_near", [ + dict(target="gaia_dr3:%s" % o["gaia"], stat=float(o["hist"]) - float(o["alert"]) if o["hist"] and o["alert"] + else None, unit="mag brighter than the historic mean", vet="explained_by_alert_team", + note="%s %s: %s" % (o["name"], o["date"][:10], o["comment"] or o["cls"])) for o in near]) + + +def alerts_cli(): + if sys.argv[1:] == ["record"]: + alerts_record() + else: + alerts_main() + + +# -------------------------------------------------------------------------------------------------------------- + +# -------------------------------------------------------------------------------------------------------------- + +occulters_DOC = r"""Gaia DR3 astrometric noise of long-occultation stars (VVV-WIT-08, -07, Gaia17bpp, TYC 2505-672-1, ASASSN-21qj, J1407; EE Cep control) ranked among field stars matched in G and colour within a cone that doubles until it holds the control count. + + python -I seti.py dimming occulters [record] [--stars NAME ...] [--controls NAME ...] [--dg 0.3] [--dcolour 0.2] [--n-controls 100] [--radius-deg 0.15]""" + +occulters_STARS = ("VVV-WIT-08", "VVV-WIT-07", "Gaia17bpp", "TYC 2505-672-1", "ASASSN-21qj", "V1400 Cen", "EE Cep") +occulters_COLS = ("source_id, ra, dec, phot_g_mean_mag, bp_rp, parallax, parallax_error, ruwe, astrometric_excess_noise, " + "astrometric_excess_noise_sig, ipd_gof_harmonic_amplitude, ipd_frac_multi_peak, astrometric_params_solved") + + +def occulters_main(record=False, stars=occulters_STARS, controls=("EE Cep",), dg=0.3, dcolour=0.2, n_controls=100, radius_deg=0.15): + out = [] + for name in stars: + q = ("SELECT i.id FROM ident AS i JOIN ident AS j ON i.oidref = j.oidref WHERE j.id = '%s' AND i.id LIKE 'Gaia DR3 %%'" % name) + ids = [str(r["id"]).split()[-1] for r in core.simbad(q)] + if not ids: + print("%s: no Gaia DR3 identifier in SIMBAD" % name) + out.append(dict(name=name, gaia=None)) + continue + # Astro Data Lab's indexed Gaia DR3 copy + g = core.datalab("SELECT %s FROM gaia_dr3.gaia_source WHERE source_id = %s" % (occulters_COLS, ids[0])) + if not g: + out.append(dict(name=name, gaia=None)) + continue + t = {k: num(v) for k, v in g[0].items()} + # the cone doubles until it holds the control count + ctl, radius = [], radius_deg + while len(ctl) < n_controls and radius <= 5.0: + ctl = core.datalab("SELECT %s FROM gaia_dr3.gaia_source WHERE q3c_radial_query(ra, dec, %.6f, %.6f, %.3f) = 't' " + "AND phot_g_mean_mag BETWEEN %.3f AND %.3f AND bp_rp BETWEEN %.3f AND %.3f AND " + "astrometric_params_solved >= 31 AND source_id != %s LIMIT 400" + % (occulters_COLS, t["ra"], t["dec"], radius, t["phot_g_mean_mag"] - dg, t["phot_g_mean_mag"] + dg, + (t["bp_rp"] or 0) - dcolour, (t["bp_rp"] or 0) + dcolour, ids[0])) + radius *= 2.0 + ctl = [{k: num(v) for k, v in c.items()} for c in ctl] + + def rank(key): + vals = [c[key] for c in ctl if c[key] is not None] + return (sum(1 for v in vals if v >= (t[key] or 0)) / len(vals) if vals else None, len(vals), + float(np.median(vals)) if vals else None) + r_ruwe, n, med_ruwe = rank("ruwe") + r_aen, _, med_aen = rank("astrometric_excess_noise") + out.append(dict(name=name, gaia=ids[0], g=t["phot_g_mean_mag"], bp_rp=t["bp_rp"], plx=t["parallax"], plx_err=t["parallax_error"], + ruwe=t["ruwe"], aen=t["astrometric_excess_noise"], aen_sig=t["astrometric_excess_noise_sig"], + ipd_amp=t["ipd_gof_harmonic_amplitude"], ipd_multi=t["ipd_frac_multi_peak"], n_ctl=n, + frac_ruwe=r_ruwe, frac_aen=r_aen, ctl_ruwe=med_ruwe, ctl_aen=med_aen)) + print("%-15s Gaia DR3 %s G %.2f: RUWE %.2f (controls' median %.2f, %.0f%% as high), excess noise %.2f mas at %.0f sigma " + "(median %.2f, %.0f%% as high), multi-peak %.0f%%, %d controls" + % (name, ids[0], t["phot_g_mean_mag"], t["ruwe"] or 0, med_ruwe or 0, 100 * (r_ruwe or 0), t["astrometric_excess_noise"] or 0, + t["astrometric_excess_noise_sig"] or 0, med_aen or 0, 100 * (r_aen or 0), t["ipd_frac_multi_peak"] or 0, n)) + json.dump(out, open(os.path.join(core.RESULTS, "occulters_gaia.json"), "w"), indent=1) + if record: + found = [x for x in out if x.get("gaia")] + core.record_search( + "long_occulters_gaia", "Long occulters' companions", archive="Gaia DR3 gaia_source; SIMBAD", + release="Gaia DR3", selection=", ".join(stars), code=os.path.abspath(__file__), entry="occulters", + n_targets=len(found), params=dict(radius_deg="%g, doubled until %d controls" % (radius_deg, n_controls), dg=dg, dcolour=dcolour, n_controls=400), + null_summary="field stars matched in G and colour: the fraction with RUWE and excess noise as high", + sensitivity="an unresolved orbit's photocentre motion above the astrometric excess noise of the controls, about " + "%s mas" % ", ".join("%.2f" % x["ctl_aen"] for x in found if x["ctl_aen"] is not None), + ledger="Long occulters' companions", + result="; ".join("%s RUWE %.2f (%.0f%% of controls as high), excess noise %.2f mas at %.0f sigma (%.0f%% as high)" + % (x["name"], x["ruwe"] or 0, 100 * (x["frac_ruwe"] or 0), x["aen"] or 0, x["aen_sig"] or 0, + 100 * (x["frac_aen"] or 0)) for x in found)) + core.clear_targets("long_occulters_gaia") + core.record_targets("long_occulters_gaia", [dict( + target="gaia_dr3:" + x["gaia"], stat=x["ruwe"], p=x["frac_ruwe"], unit="RUWE; p the fraction of matched field stars as high", + vet="disk-bearing companion established (control)" if x["name"] in controls else None, + note="%s; G %.2f; excess noise %.2f mas at %.0f sigma, %.0f%% of %d controls as high; controls' median RUWE %.2f" + % (x["name"], x["g"], x["aen"] or 0, x["aen_sig"] or 0, 100 * (x["frac_aen"] or 0), x["n_ctl"], x["ctl_ruwe"] or 0)) + for x in found]) + print("recorded %d stars" % len(found)) + + +achromatic_DOC = r"""Achromatic long-period modulation in ZTF: A_r/A_g near 1 in catalogued rotators (spots give 0.75-0.85), vetted for blends, binaries and young-star dust. + + python -I seti.py dimming achromatic select + python -I seti.py dimming achromatic fetch [--threads N] + python -I seti.py dimming achromatic analyse + python -I seti.py dimming achromatic record""" + +achromatic_ROOT = os.environ.get("ACHROMATIC_ROOT", core.data("achromatic")) +achromatic_CAT = os.environ.get("ACHROMATIC_CAT", core.data("dynamo_dead", "ztf_amplitudes.ecsv")) +achromatic_OUT = "achromatic_modulation.json" +achromatic_CLASSES = ("BYDra", "RSCVN") +achromatic_PMIN, achromatic_PMAX, achromatic_AMIN, achromatic_GMAX = 5.0, 500.0, 0.15, 18.0 +achromatic_SELECT, achromatic_CONTROL, achromatic_NCONTROL = 0.90, (0.70, 0.90), 300 +achromatic_GREY, achromatic_MAX, achromatic_PHASE, achromatic_NMIN = 0.97, 1.15, 0.05, 40 +achromatic_W1W2 = 0.2 +achromatic_LC = "https://irsa.ipac.caltech.edu/cgi-bin/ZTF/nph_light_curves?ID=%s&FORMAT=csv&BAD_CATFLAGS_MASK=32768" + + +def achromatic_select(): + from astropy.table import Table + os.makedirs(achromatic_ROOT, exist_ok=True) + t = Table.read(achromatic_CAT, format="ascii.ecsv") + rows = [] + for r in t: + ty = str(r["Type"]) + if ty not in achromatic_CLASSES: + continue + P, g, ag, ar = (float(r[k]) if r[k] == r[k] else None for k in ("Per", "gmag", "gAmp", "rAmp")) + if not P or not ag or not ar or g is None or not (achromatic_PMIN <= P <= achromatic_PMAX) or ag < achromatic_AMIN or g > achromatic_GMAX: + continue + rows.append(dict(id=str(r["ID"]), ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]), P=P, g=g, r=float(r["rmag"]) if r["rmag"] == r["rmag"] else None, + ag=ag, ar=ar, ratio=ar / ag, type=ty, ng=int(r["Ng"]), nr=int(r["Nr"]))) + rng = np.random.default_rng(3) + cand = [x for x in rows if x["ratio"] >= achromatic_SELECT] + pool = [x for x in rows if achromatic_CONTROL[0] <= x["ratio"] < achromatic_CONTROL[1]] + ctrl = [pool[i] for i in rng.choice(len(pool), min(achromatic_NCONTROL, len(pool)), replace=False)] + for x in cand: + x["role"] = "candidate" + for x in ctrl: + x["role"] = "control" + ratios = np.array([x["ratio"] for x in rows]) + json.dump(dict(n_class=len(rows), ratio_median=float(np.median(ratios)), ratio_p90=float(np.percentile(ratios, 90)), targets=cand + ctrl), + open(os.path.join(achromatic_ROOT, "targets.json"), "w"), indent=0) + print("%d rotational variables at %.0f-%.0f d, A_g %.2f or more, g %.0f or brighter: catalogue A_r/A_g median %.3f, 90th percentile %.3f; %d at %.2f or more and %d controls at %.2f-%.2f" + % (len(rows), achromatic_PMIN, achromatic_PMAX, achromatic_AMIN, achromatic_GMAX, np.median(ratios), np.percentile(ratios, 90), len(cand), achromatic_SELECT, + len(ctrl), achromatic_CONTROL[0], achromatic_CONTROL[1])) + + +def achromatic_fetch(threads=6): + """ZTF DR23 g and r light curves of each target by object identifier.""" + d = json.load(open(os.path.join(achromatic_ROOT, "targets.json"))) + lc = os.path.join(achromatic_ROOT, "lc") + os.makedirs(lc, exist_ok=True) + + def one(x): + p = os.path.join(lc, x["id"] + ".csv") + if os.path.exists(p): + return 1 + q = ("SELECT oid, filtercode, ngoodobsrel FROM ztf_objects_dr23 WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f)) = 1" + % (x["ra"], x["dec"], 1.5 / 3600)) + try: + objs = core.tap("irsa", q, timeout=300) + except Exception as e: + print(" %s: objects query failed: %s" % (x["id"], str(e)[:80]), flush=True) + return 0 + parts = [] + for o in objs: + if o["filtercode"] in ("zg", "zr") and (num(o["ngoodobsrel"]) or 0) >= 10: + try: + parts.append(core.get(achromatic_LC % o["oid"], timeout=300, retries=2).decode("utf-8", "replace")) + except Exception as e: + print(" %s: light curve %s failed: %s" % (x["id"], o["oid"], str(e)[:80]), flush=True) + lines = [ln for part in parts for ln in part.splitlines()[1:] if ln.strip()] + head = parts[0].splitlines()[0] if parts else "oid,expid,hjd,mjd,mag,magerr,catflags,filtercode" + open(p, "w", encoding="utf-8").write("\n".join([head] + lines) + "\n") + return 1 if lines else 0 + got = core.pmap(one, d["targets"], threads=threads) + print("%d of %d targets with light curves" % (sum(got), len(d["targets"]))) + + +def achromatic_fit(t, m, e, P): + """Mean plus two harmonics at period P with 4 sigma clipping: amplitude, error, phases, kept points, scatter; None below five points.""" + ph = (t / P) % 1.0 + A = np.column_stack([np.ones_like(ph), np.sin(2 * np.pi * ph), np.cos(2 * np.pi * ph), np.sin(4 * np.pi * ph), np.cos(4 * np.pi * ph)]) + w = 1 / np.maximum(e, 0.01) ** 2 + keep = np.ones(len(t), bool) + coef = None + for _ in range(3): + if keep.sum() < 6: + return None + Aw = A[keep] * np.sqrt(w[keep])[:, None] + coef = np.linalg.lstsq(Aw, m[keep] * np.sqrt(w[keep]), rcond=None)[0] + res = m - A @ coef + s = 1.4826 * np.median(np.abs(res[keep])) + keep = np.abs(res) < 4 * max(s, 0.01) + n = int(keep.sum()) + if n < 6: + return None + Aw = A[keep] * np.sqrt(w[keep])[:, None] + coef = np.linalg.lstsq(Aw, m[keep] * np.sqrt(w[keep]), rcond=None)[0] + res = (m - A @ coef)[keep] + chi2 = float(np.sum(res ** 2 * w[keep]) / max(n - 5, 1)) + cov = np.linalg.pinv(Aw.T @ Aw) * max(chi2, 1.0) + grid = np.linspace(0, 1, 400, endpoint=False) + G = np.column_stack([np.ones_like(grid), np.sin(2 * np.pi * grid), np.cos(2 * np.pi * grid), np.sin(4 * np.pi * grid), np.cos(4 * np.pi * grid)]) + model = G @ coef + draws = np.random.default_rng(5).multivariate_normal(coef, cov, 300) + models = G @ draws.T + return dict(amp=float(model.max() - model.min()), e_amp=float(np.std(models.max(0) - models.min(0))), delta=float(math.atan2(coef[2], coef[1]) / (2 * np.pi)), + a1=float(math.hypot(coef[1], coef[2])), a2=float(math.hypot(coef[3], coef[4])), n=n, chi2=chi2, scatter=float(1.4826 * np.median(np.abs(res)))) + + +def achromatic_read(path): + """(t, mag, err) per band of one target file.""" + import csv + out = {"zg": [], "zr": []} + for r in csv.DictReader(open(path, encoding="utf-8")): + try: + if r["filtercode"] in out and int(r["catflags"]) == 0: + out[r["filtercode"]].append((float(r["mjd"]), float(r["mag"]), float(r["magerr"]))) + except (KeyError, ValueError): + continue + return {k: (np.array([x[0] for x in v]), np.array([x[1] for x in v]), np.array([x[2] for x in v])) for k, v in out.items()} + + +def achromatic_analyse(): + d = json.load(open(os.path.join(achromatic_ROOT, "targets.json"))) + lc = os.path.join(achromatic_ROOT, "lc") + rows = [] + for x in d["targets"]: + p = os.path.join(lc, x["id"] + ".csv") + if not os.path.exists(p): + continue + bands = achromatic_read(p) + fg = achromatic_fit(*bands["zg"], x["P"]) if len(bands["zg"][0]) >= achromatic_NMIN else None + fr = achromatic_fit(*bands["zr"], x["P"]) if len(bands["zr"][0]) >= achromatic_NMIN else None + if not fg or not fr or fg["amp"] <= 0 or fr["amp"] <= 0: + continue + ratio = fr["amp"] / fg["amp"] + e_ratio = ratio * math.hypot(fg["e_amp"] / fg["amp"], fr["e_amp"] / fr["amp"]) + dphase = ((fr["delta"] - fg["delta"]) + 0.5) % 1.0 - 0.5 + rows.append(dict(x, fit_g=fg, fit_r=fr, ratio_lc=ratio, e_ratio=e_ratio, dphase=dphase, + grey=(ratio - 3 * e_ratio >= achromatic_GREY and ratio <= achromatic_MAX and abs(dphase) <= achromatic_PHASE and fg["amp"] >= achromatic_AMIN))) + ctrl = [r for r in rows if r["role"] == "control"] + cand = [r for r in rows if r["role"] == "candidate"] + grey = [r for r in cand if r["grey"]] + print("%d targets fitted: %d controls with light-curve A_r/A_g median %.3f (robust scatter %.3f, catalogue median %.3f); %d candidates, %d grey at 3 sigma (ratio %.2f-%.2f, bands in phase)" % ( + len(rows), len(ctrl), np.median([r["ratio_lc"] for r in ctrl]) if ctrl else 0, 1.4826 * np.median(np.abs(np.array([r["ratio_lc"] for r in ctrl]) - np.median([r["ratio_lc"] for r in ctrl]))) if ctrl else 0, + np.median([r["ratio"] for r in ctrl]) if ctrl else 0, len(cand), len(grey), achromatic_GREY, achromatic_MAX)) + # Gaia DR3 and AllWISE checks of grey candidates + if grey: + pos = [dict(source_id=i, ra=r["ra"], dec=r["dec"]) for i, r in enumerate(grey)] + gaia, wise = {}, {} + for m in core.xmatch(pos, "I/355/gaiadr3", 3.0, id_col="source_id", ra_col="ra", dec_col="dec", timeout=600): + gaia.setdefault(int(m["source_id"]), []).append(m) + for m in core.xmatch(pos, "II/328/allwise", 3.0, id_col="source_id", ra_col="ra", dec_col="dec", timeout=600): + i = int(m["source_id"]) + if i not in wise or float(m["angDist"]) < float(wise[i]["angDist"]): + wise[i] = m + for i, r in enumerate(grey): + gm = sorted(gaia.get(i, []), key=lambda m: float(m["angDist"])) + w = wise.get(i) + r["gaia"] = dict(n=len(gm), ruwe=num(gm[0].get("RUWE")) if gm else None, bprp=num(gm[0].get("BP-RP")) if gm else None, G=num(gm[0].get("Gmag")) if gm else None, + excess=num(gm[0].get("E(BP/RP)")) if gm else None, plx=num(gm[0].get("Plx")) if gm else None, + neighbour=([float(m["angDist"]) for m in gm[1:]] if len(gm) > 1 else [])) + # height above the single-star main sequence; an equal companion lifts a star by up to 0.75 mag + gg = r["gaia"] + gg["above_ms"] = (1.7 + 3.6 * gg["bprp"]) - (gg["G"] + 5 * math.log10(gg["plx"]) - 10) if gg["plx"] and gg["plx"] > 0 and gg["G"] is not None and gg["bprp"] is not None and 0.4 < gg["bprp"] < 3.2 else None + r["wise"] = dict(w1w2=(num(w.get("W1mag")) - num(w.get("W2mag"))) if w and num(w.get("W1mag")) is not None and num(w.get("W2mag")) is not None else None) if w else None + why = [] + if r["gaia"]["n"] > 1: + why.append("a Gaia neighbour at %.1f arcsec" % min(r["gaia"]["neighbour"])) + if r["gaia"]["ruwe"] and r["gaia"]["ruwe"] > 1.4: + why.append("RUWE %.1f" % r["gaia"]["ruwe"]) + if gg["above_ms"] is not None and gg["above_ms"] >= 1.5: + why.append("%.2f mag above the main sequence, an evolved star whose class pairs it with a companion that dilutes the spots' colour" % gg["above_ms"]) + elif gg["above_ms"] is not None and gg["above_ms"] >= 0.5: + why.append("%.2f mag above the main sequence, an unresolved companion" % gg["above_ms"]) + if r["gaia"]["excess"] and r["gaia"]["bprp"] is not None and r["gaia"]["excess"] > 1.3 + 0.06 * r["gaia"]["bprp"] ** 2: + why.append("BP/RP excess factor %.2f" % r["gaia"]["excess"]) + if r["wise"] and r["wise"]["w1w2"] is not None and r["wise"]["w1w2"] > achromatic_W1W2: + why.append("W1-W2 %.2f" % r["wise"]["w1w2"]) + r["explained"] = "; ".join(why) or None + left = [r for r in grey if not r["explained"]] + print(" %d grey candidates: %d with a Gaia neighbour, high RUWE, a BP/RP excess, a seat above the main sequence or warm dust; %d left" % (len(grey), len(grey) - len(left), len(left))) + for r in sorted(grey, key=lambda r: -(r["ratio_lc"] - 3 * r["e_ratio"])): + print(" %s %s P %.2f d g %.1f: A_g %.3f A_r %.3f (catalogue %.3f %.3f), ratio %.3f +- %.3f, phase %+.3f, n %d/%d; Gaia %s RUWE %s BP-RP %s excess %s above MS %s; W1-W2 %s; %s" % ( + r["id"], r["type"], r["P"], r["g"], r["fit_g"]["amp"], r["fit_r"]["amp"], r["ag"], r["ar"], r["ratio_lc"], r["e_ratio"], r["dphase"], r["fit_g"]["n"], r["fit_r"]["n"], + r["gaia"]["n"], "%.2f" % r["gaia"]["ruwe"] if r["gaia"]["ruwe"] else "-", "%.2f" % r["gaia"]["bprp"] if r["gaia"]["bprp"] is not None else "-", + "%.2f" % r["gaia"]["excess"] if r["gaia"]["excess"] else "-", "%+.2f" % r["gaia"]["above_ms"] if r["gaia"]["above_ms"] is not None else "-", + ("%.2f" % r["wise"]["w1w2"]) if r["wise"] and r["wise"]["w1w2"] is not None else "-", r["explained"] or "unexplained")) + json.dump(dict(n=len(rows), n_control=len(ctrl), n_candidate=len(cand), n_grey=len(grey), rows=rows, n_class=d["n_class"], + params=dict(classes=achromatic_CLASSES, pmin=achromatic_PMIN, pmax=achromatic_PMAX, amin=achromatic_AMIN, gmax=achromatic_GMAX, select=achromatic_SELECT, + grey=achromatic_GREY, max=achromatic_MAX, phase=achromatic_PHASE, nmin=achromatic_NMIN)), + open(core.results(achromatic_OUT), "w"), indent=0) + + +def achromatic_record(): + d = json.load(open(core.results(achromatic_OUT))) + rows = d["rows"] + ctrl = [r for r in rows if r["role"] == "control"] + grey = [r for r in rows if r["role"] == "candidate" and r["grey"]] + left = [r for r in grey if not r.get("explained")] + p = d["params"] + core.record_search( + "ztf_achromatic", "Achromatic long-period modulation", archive="ZTF periodic variables (Chen et al. 2020, J/ApJS/249/18); ZTF DR23 light curves (IRSA); Gaia DR3 and AllWISE by CDS XMatch", + release="ZTF DR23", selection="BY Dra and RS CVn variables at %.0f-%.0f d with g amplitudes of %.2f or more and g brighter than %.0f (%d), the %d with catalogue A_r/A_g of %.2f or more and %d controls at 0.7-0.9" % ( + p["pmin"], p["pmax"], p["amin"], p["gmax"], d["n_class"], d["n_candidate"], p["select"], d["n_control"]), + code=os.path.abspath(__file__), entry="achromatic", n_targets=len(rows), params=p, + null_summary="the controls' light-curve A_r/A_g: median %.3f, robust scatter %.3f; spots give 0.75-0.85" % ( + np.median([r["ratio_lc"] for r in ctrl]) if ctrl else 0, 1.4826 * np.median(np.abs(np.array([r["ratio_lc"] for r in ctrl]) - np.median([r["ratio_lc"] for r in ctrl]))) if ctrl else 0), + sensitivity="a ratio of %.2f or more at 3 sigma, which the fits reach at errors of 0.02-0.05 for g brighter than 17" % p["grey"], + ledger="Achromatic long-period modulation", + result="%d light curves fitted: %d grey at 3 sigma, %d of them with a Gaia neighbour within 3 arcsec, RUWE above 1.4, a BP/RP excess, 0.5 mag or more above the main sequence or W1-W2 above %.1f, %d left%s" % ( + len(rows), len(grey), len(grey) - len(left), achromatic_W1W2, len(left), (": " + "; ".join("%s (%.2f +- %.2f at %.1f d)" % (r["id"], r["ratio_lc"], r["e_ratio"], r["P"]) for r in left[:10])) if left else "")) + core.clear_targets("ztf_achromatic") + core.record_targets("ztf_achromatic", [dict(target="ztf:%s" % r["id"], stat=r["ratio_lc"], unit="A_r/A_g from the folded light curves", + vet=(r.get("explained") or ("grey, unexplained" if r["grey"] else "chromatic")) if r["role"] == "candidate" else "control", + note="%s, P %.2f d, g %.1f, A_g %.3f, A_r %.3f, ratio %.3f +- %.3f, phase %+.3f" % ( + r["type"], r["P"], r["g"], r["fit_g"]["amp"], r["fit_r"]["amp"], r["ratio_lc"], r["e_ratio"], r["dphase"])) for r in rows]) + print("recorded %d light curves" % len(rows)) + + +def achromatic_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("select", "fetch", "analyse", "record")) + p.add_argument("--threads", type=int, default=6) + a = p.parse_args() + if a.mode == "fetch": + achromatic_fetch(a.threads) + else: + {"select": achromatic_select, "analyse": achromatic_analyse, "record": achromatic_record}[a.mode]() + + +chromatic_DOC = r"""Chromatic-only variables: Gaia DR3 sources with BP and RP scatter but constant G, then BP-RP anticorrelation in epoch photometry. + + python -I seti.py dimming chromatic fetch + python -I seti.py dimming chromatic analyse + python -I seti.py dimming chromatic record""" + +chromatic_ROOT = os.environ.get("CHROMATIC_ROOT", core.data("chromatic")) +chromatic_OUT = "chromatic_only_variables.json" +chromatic_GMAX, chromatic_NMIN, chromatic_SG, chromatic_SC, chromatic_Z = 16.0, 20, 0.003, 0.02, 5.0 + + +def chromatic_fetch(): + os.makedirs(chromatic_ROOT, exist_ok=True) + cols = ("source_id, num_selected_g_fov, mean_mag_g_fov, std_dev_mag_g_fov, mad_mag_g_fov, range_mag_g_fov, num_selected_bp, mean_mag_bp, std_dev_mag_bp, mad_mag_bp, num_selected_rp, " + "mean_mag_rp, std_dev_mag_rp, mad_mag_rp, std_dev_over_rms_err_mag_g_fov, std_dev_over_rms_err_mag_bp, std_dev_over_rms_err_mag_rp, in_vari_classification_result, " + "in_vari_eclipsing_binary, in_vari_rotation_modulation, in_vari_short_timescale") + base = "FROM gaiadr3.vari_summary WHERE mean_mag_g_fov < %g AND num_selected_g_fov >= %d" % (chromatic_GMAX, chromatic_NMIN) + p = os.path.join(chromatic_ROOT, "tight.json") + if not os.path.exists(p): + rows = core.tap("gaia", "SELECT %s %s AND std_dev_mag_g_fov < %g AND std_dev_mag_bp > %g AND std_dev_mag_rp > %g" % (cols, base, chromatic_SG, chromatic_SC, chromatic_SC), maxrec=100000, timeout=1200) + json.dump(rows, open(p, "w")) + print("%d candidates by the scatter cuts" % len(rows)) + p = os.path.join(chromatic_ROOT, "vari_summary_quiet_g.json") + if not os.path.exists(p): + rows = core.tap("gaia", "SELECT %s %s AND std_dev_mag_g_fov < 0.01" % (cols, base), maxrec=2000000, timeout=1800) + json.dump(rows, open(p, "w")) + print("%d sources quiet in G for the null" % len(rows)) + + +def chromatic_ratio(r): + sg, sb, sr = (num(r[k]) for k in ("std_dev_mag_g_fov", "std_dev_mag_bp", "std_dev_mag_rp")) + if not sg or sb is None or sr is None or sg <= 0: + return None + return math.hypot(sb, sr) / sg + + +def chromatic_epochs(sid): + """BP and RP magnitudes on transits holding both.""" + os.makedirs(os.path.join(gaia_ROOT, "epoch"), exist_ok=True) + if not gaia_fetch_one(str(sid)): + return None + s = gaia_series(str(sid)) + tb, mb = s["BP"] + tr, mr = s["RP"] + if len(tb) < 8 or len(tr) < 8: + return None + # BP and RP of one transit are seconds apart + j = np.searchsorted(tr, tb) + j = np.clip(j, 0, len(tr) - 1) + near = np.abs(tr[j] - tb) < 0.01 + if near.sum() < 8: + return None + return mb[near], mr[j][near], s["G"] + + +def chromatic_analyse(): + pool = json.load(open(os.path.join(chromatic_ROOT, "vari_summary_quiet_g.json"))) + tight = json.load(open(os.path.join(chromatic_ROOT, "tight.json"))) + # scatter-ratio distribution in G bins among G-quiet sources + bins = np.arange(5.0, chromatic_GMAX + 0.5, 0.5) + stats = {} + for lo in bins: + v = np.array([chromatic_ratio(r) for r in pool if num(r["mean_mag_g_fov"]) is not None and lo <= num(r["mean_mag_g_fov"]) < lo + 0.5]) + v = np.log10(v[np.isfinite(v) & (v > 0)]) if len(v) else v + if len(v) >= 50: + stats[lo] = (float(np.median(v)), float(1.4826 * np.median(np.abs(v - np.median(v)))), int(len(v))) + cands = [] + for r in tight: + g, rho = num(r["mean_mag_g_fov"]), chromatic_ratio(r) + if g is None or rho is None: + continue + lo = math.floor(g / 0.5) * 0.5 + if lo not in stats: + continue + med, sd, n = stats[lo] + z = (math.log10(rho) - med) / sd if sd > 0 else 0.0 + if z >= chromatic_Z: + cands.append(dict(source_id=r["source_id"], G=g, s_g=num(r["std_dev_mag_g_fov"]), s_bp=num(r["std_dev_mag_bp"]), s_rp=num(r["std_dev_mag_rp"]), n_g=int(num(r["num_selected_g_fov"]) or 0), + ratio=rho, z=z, snr_g=num(r["std_dev_over_rms_err_mag_g_fov"]), snr_bp=num(r["std_dev_over_rms_err_mag_bp"]), snr_rp=num(r["std_dev_over_rms_err_mag_rp"]), + classified=str(r["in_vari_classification_result"]).lower() == "true", eclipsing=str(r["in_vari_eclipsing_binary"]).lower() == "true", + rotation=str(r["in_vari_rotation_modulation"]).lower() == "true", short=str(r["in_vari_short_timescale"]).lower() == "true")) + print("%d sources quiet in G (scatter below 0.01) for the null in %d bins of G; %d pass the scatter cuts (G scatter below %.3f, BP and RP above %.2f), %d of them beyond the ratio's %.0f sigma tail at their G" % ( + len(pool), len(stats), len(tight), chromatic_SG, chromatic_SC, len(cands), chromatic_Z)) + # finalists' BP against RP over shared transits + for c in sorted(cands, key=lambda c: -c["z"])[:60]: + ep = chromatic_epochs(c["source_id"]) + if ep is None: + c["corr"], c["n_pairs"] = None, 0 + else: + mb, mr, (tg, mg) = ep + c["corr"] = float(np.corrcoef(mb, mr)[0, 1]) if len(mb) > 3 else None + c["n_pairs"] = int(len(mb)) + c["s_g_epochs"] = float(np.std(mg)) if len(mg) else None + c["s_colour_epochs"] = float(np.std(mb - mr)) + c["kind"] = ("a neighbour in the windows (BP and RP vary together)" if c["corr"] is not None and c["corr"] > 0.3 else + ("chromatic only (BP against RP)" if c["corr"] is not None and c["corr"] < -0.3 else "undecided")) + print(" Gaia DR3 %s: G %.2f, scatter G %.4f BP %.3f RP %.3f (%d transits), ratio %.0f, %.1f sigma; epochs %d pairs, BP-RP correlation %s, colour scatter %s; %s%s" % ( + c["source_id"], c["G"], c["s_g"], c["s_bp"], c["s_rp"], c["n_g"], c["ratio"], c["z"], c["n_pairs"], "%.2f" % c["corr"] if c["corr"] is not None else "-", + "%.3f" % c["s_colour_epochs"] if c.get("s_colour_epochs") is not None else "-", c["kind"], ", eclipsing" if c["eclipsing"] else (", rotation" if c["rotation"] else ""))) + json.dump(dict(n_pool=len(pool), n_tight=len(tight), n_cand=len(cands), stats={str(k): v for k, v in stats.items()}, cands=cands, + params=dict(gmax=chromatic_GMAX, nmin=chromatic_NMIN, s_g=chromatic_SG, s_colour=chromatic_SC, z=chromatic_Z)), open(core.results(chromatic_OUT), "w"), indent=0) + + +def chromatic_record(): + d = json.load(open(core.results(chromatic_OUT))) + c = d["cands"] + anti = [x for x in c if x.get("corr") is not None and x["corr"] < -0.3] + blend = [x for x in c if x.get("corr") is not None and x["corr"] > 0.3] + core.record_search( + "chromatic_only_variables", "Chromatic-only variables", archive="Gaia DR3 vari_summary; epoch photometry by DataLink or VizieR I/355/epphot", release="Gaia DR3", + selection="variables brighter than G %.0f with %d or more transits: %d with G scatter below %.3f and BP and RP scatter above %.2f" % (d["params"]["gmax"], d["params"]["nmin"], d["n_tight"], d["params"]["s_g"], d["params"]["s_colour"]), + code=os.path.abspath(__file__), entry="chromatic", n_targets=d["n_tight"], params=d["params"], + null_summary="the ratio sqrt(s_BP^2 + s_RP^2)/s_G of %d sources quiet in G in half-magnitude bins, a candidate beyond its %.0f sigma tail" % (d["n_pool"], d["params"]["z"]), + sensitivity="colour modulation of 1-2 per cent at G below 15 with G constant to 0.3 per cent", ledger="Chromatic-only variables", + result="%d beyond the tail; of those with epoch photometry %d show BP and RP varying together (a neighbour in the windows) and %d against each other%s" % ( + d["n_cand"], len(blend), len(anti), (": " + "; ".join("Gaia DR3 %s (G %.1f, correlation %.2f)" % (x["source_id"], x["G"], x["corr"]) for x in anti[:8])) if anti else "")) + core.clear_targets("chromatic_only_variables") + core.record_targets("chromatic_only_variables", [dict(target="gaia_dr3:%s" % x["source_id"], stat=x["z"], unit="scatter-ratio excess over the quiet sources at the same G, sigma", + vet=x.get("kind"), note="G %.2f, scatter G %.4f BP %.3f RP %.3f, epoch correlation %s" % (x["G"], x["s_g"], x["s_bp"], x["s_rp"], "%.2f" % x["corr"] if x.get("corr") is not None else "-")) for x in c]) + print("recorded %d candidates" % d["n_cand"]) + + +def chromatic_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": chromatic_fetch, "analyse": chromatic_analyse, "record": chromatic_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- +# Hipparcos stars Gaia cannot find + +hipgone_DOC = r"""Hipparcos stars Gaia cannot find: stars of the Hipparcos new reduction at Hp 7-11 without a Gaia DR3 best neighbour, their positions carried from 1991.25 to 2016.0 with their Hipparcos proper motions and matched to Gaia DR3 within 10 arcsec by CDS XMatch; a star with no Gaia source within 10 arcsec of where it should be has gone since Hipparcos measured it, each read in SIMBAD for its type and a Gaia DR3 identifier of its own, and in Gaia DR3 within 30 arcsec and 1 mag of SIMBAD's position, where a Hipparcos motion that misses leaves the star. + + python -I seti.py dimming hipgone [record] [--hp-min 7] [--hp-max 11] [--radius-arcsec 10] [--near-arcsec 30] [--dmag 1]""" + + +def hipgone_main(record=False, hp_min=7.0, hp_max=11.0, radius_arcsec=10.0, near_arcsec=30.0, dmag=1.0): + rows = core.tap_async("gaia", "SELECT h.hip, h.ra, h.dec, h.pm_ra, h.pm_de, h.plx, h.e_plx, h.hp_mag, h.b_v FROM public.hipparcos_newreduction AS h " + "LEFT OUTER JOIN gaiadr3.hipparcos2_best_neighbour AS x ON h.hip = x.original_ext_source_id WHERE x.source_id IS NULL " + "AND h.hp_mag BETWEEN %g AND %g" % (hp_min, hp_max), maxrec=50000) + up = [] + for r in rows: + ra, de = core.star_at(float(r["ra"]), float(r["dec"]), num(r["pm_ra"], 0.0), num(r["pm_de"], 0.0), 1991.25, 2016.0) + up.append(dict(source_id="h%s" % r["hip"], ra=ra, dec=de)) + found = {} + for k in range(0, len(up), 5000): + for m in core.xmatch(up[k:k + 5000], "I/355/gaiadr3", radius_arcsec): + if m["source_id"] not in found or float(m["angDist"]) < found[m["source_id"]]: + found[m["source_id"]] = float(m["angDist"]) + gone = [r for r in rows if "h%s" % r["hip"] not in found] + names = {} + for k in range(0, len(gone), 200): + ids = ",".join("'HIP %s'" % r["hip"] for r in gone[k:k + 200]) + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type, b.oid, b.ra, b.dec FROM ident AS i JOIN basic AS b ON i.oidref = b.oid " + "WHERE i.id IN (%s)" % ids): + names[str(s["id"]).split()[-1]] = dict(main=" ".join(str(s["main_id"]).split()), otype=str(s["otype"]).strip(), sp=s["sp_type"], oid=s["oid"], + ra=num(s["ra"]), dec=num(s["dec"])) + gaia_of = {} + oids = [str(v["oid"]) for v in names.values()] + for k in range(0, len(oids), 200): + for s in core.simbad("SELECT oidref, id FROM ident WHERE oidref IN (%s) AND id LIKE 'Gaia DR3 %%'" % ",".join(oids[k:k + 200])): + gaia_of[str(s["oidref"])] = str(s["id"]).split()[-1] + out = [] + for r in gone: + n = names.get(str(r["hip"]), {}) + o = dict(hip=r["hip"], hp=num(r["hp_mag"]), plx=num(r["plx"]), e_plx=num(r["e_plx"]) if "e_plx" in r else None, main=n.get("main"), + otype=n.get("otype"), sp=n.get("sp"), gaia=gaia_of.get(str(n.get("oid"))), near=[]) + # where the Hipparcos motion misses, Gaia may still hold the star at SIMBAD's position + if not o["gaia"] and n.get("ra") is not None: + o["near"] = [g["source_id"] for g in core.tap("gaia", "SELECT source_id, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE 1 = CONTAINS(" + "POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f)) AND phot_g_mean_mag BETWEEN %.2f AND %.2f" + % (n["ra"], n["dec"], near_arcsec / 3600.0, o["hp"] - dmag, o["hp"] + dmag))] + out.append(o) + with_gaia = [o for o in out if o["gaia"]] + print("%d Hipparcos stars at Hp %g-%g without a Gaia DR3 best neighbour; a Gaia source within %g arcsec of the carried position for %d; none " + "for %d, %d of which SIMBAD gives a Gaia DR3 identifier and %d of the rest a Gaia source within %g arcsec and %g mag at SIMBAD's position" % ( + len(rows), hp_min, hp_max, radius_arcsec, len(found), len(out), len(with_gaia), near_arcsec, dmag, sum(1 for o in out if o["near"]))) + for o in out[:40]: + print(" HIP %s: Hp %.2f, parallax %s mas; SIMBAD %s (%s, %s), Gaia DR3 %s%s" % (o["hip"], o["hp"], o["plx"], o["main"], o["otype"], o["sp"], + o["gaia"], "; at SIMBAD's position %s" % o["near"] if o["near"] else "")) + json.dump(dict(n=len(rows), matched=len(found), gone=out), open(core.results("hipparcos_gone.json"), "w"), indent=1) + if record: + core.record_run( + "hipparcos_gone", "Hipparcos stars Gaia cannot find", "Hipparcos new reduction and Gaia DR3 (hipparcos2_best_neighbour; I/355/gaiadr3 by " + "CDS XMatch); SIMBAD", "stars at Hp %g-%g without a Gaia DR3 best neighbour: %d" % (hp_min, hp_max, len(rows)), os.path.abspath(__file__), + "hipgone", len(rows), "stars", dict(hp=[hp_min, hp_max], radius_arcsec=radius_arcsec, near_arcsec=near_arcsec, dmag=dmag, epochs=[1991.25, 2016.0]), + "the Gaia DR3 sources within %g arcsec of each carried position" % radius_arcsec, + "a star Hipparcos measured with no Gaia source where its motion takes it", "%d with no Gaia source within %g arcsec, %d of them with a " + "Gaia DR3 identifier in SIMBAD" % (len(out), radius_arcsec, len(with_gaia)), + [dict(target="hip:%s" % o["hip"], stat=o["hp"], unit="Hp mag", vet="artefact" if o["gaia"] else "astrometry" if o["near"] else None, + note="SIMBAD %s (%s, %s); Gaia DR3 %s" % (o["main"], o["otype"], o["sp"], o["gaia"] or ", ".join(o["near"]) or "none")) for o in out]) + print("recorded") + + +uniquevar_DOC = r"""Unique variables next door: GCVS stars of the unique type ('*', outside every class of the catalogue's scheme), carried from 2000.0 to 2016.0 with the GCVS proper motions and matched to Gaia DR3 within 10 arcsec by CDS XMatch, kept within 100 pc; a star near enough to be watched closely that varies as no class of variable does, each read in SIMBAD for its type and spectral type. + + python -I seti.py dimming uniquevar [record] [--var-type "*"] [--radius-arcsec 10] [--plx-min 10]""" + +# SIMBAD types that name no class of variability +UNIQUEVAR_GENERIC = ("*", "V*", "PM*", "HV*") +# published accounts of unique variables whose SIMBAD type names no class +UNIQUEVAR_PUBLISHED = {"UU CrB": ("flare", "a superflare on 1980 May 21 while the star served as a comparison star (Schaefer, King & Deliyannis 2000)")} + + +def uniquevar_main(record=False, var_type="*", radius_arcsec=10.0, plx_min=10.0): + rows = core.tap("vizier", "SELECT GCVS, RAJ2000, DEJ2000, VarType, magMax, Min1, flt, Period, SpType, pmRA, pmDE FROM \"B/gcvs/gcvs_cat\" " + "WHERE VarType LIKE '%%%s%%'" % var_type) + up, by = [], {} + for r in rows: + if num(r["RAJ2000"]) is None: + continue + star, con = r["GCVS"].split() + name = "V%d %s" % (int(star[1:]), con) if star[1:].isdigit() else "%s %s" % (star, con) + ra, de = core.star_at(float(r["RAJ2000"]), float(r["DEJ2000"]), 1000 * num(r["pmRA"], 0.0), 1000 * num(r["pmDE"], 0.0), 2000.0, 2016.0) + up.append(dict(source_id=name, ra=ra % 360, dec=de)) + by[name] = r + best = {} + for m in core.xmatch(up, "I/355/gaiadr3", radius_arcsec): + if m["source_id"] not in best or float(m["angDist"]) < float(best[m["source_id"]]["angDist"]): + best[m["source_id"]] = m + near = sorted((k for k, m in best.items() if num(m["Plx"], 0.0) > plx_min), key=lambda k: -float(best[k]["Plx"])) + simbad = {} + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'Gaia DR3 %s'" % best[k]["Source"] for k in near)): + simbad[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + out = [] + for k in near: + r, m = by[k], best[k] + main, otype, sp = simbad.get(m["Source"], (None, None, None)) + vet = "natural-type" if otype and otype not in UNIQUEVAR_GENERIC else UNIQUEVAR_PUBLISHED.get(k, (None, None))[0] + out.append(dict(name=k, gaia=m["Source"], plx=float(m["Plx"]), G=num(m["Gmag"]), period=num(r["Period"]), amp="%s-%s %s" % (r["magMax"], r["Min1"], r["flt"].strip()), + sp=r["SpType"].strip(), main=main, otype=otype, simbad_sp=sp, vet=vet, why=UNIQUEVAR_PUBLISHED.get(k, (None, None))[1])) + print("%d GCVS stars of type %s; %d matched in Gaia DR3; %d within %.0f pc:" % (len(rows), var_type, len(best), len(out), 1000 / plx_min)) + for o in out: + print(" %s (Gaia DR3 %s): parallax %.1f mas, G %.2f, period %s d, %s, GCVS %s; SIMBAD %s (%s, %s) %s" % ( + o["name"], o["gaia"], o["plx"], o["G"], o["period"], o["amp"], o["sp"], o["main"], o["otype"], o["simbad_sp"], o["vet"])) + if record: + core.record_run( + "gcvs_unique_near", "Unique variables next door", "GCVS (VizieR B/gcvs); Gaia DR3 (I/355/gaiadr3) by CDS XMatch; SIMBAD", + "GCVS stars of type %s: %d" % (var_type, len(rows)), os.path.abspath(__file__), "uniquevar", len(rows), "stars", + dict(type=var_type, radius_arcsec=radius_arcsec, parallax_mas=plx_min, epochs=[2000.0, 2016.0]), "none: each star read in SIMBAD", + "a variable within %.0f pc that no class holds" % (1000 / plx_min), "%d within %.0f pc, %d without a specific SIMBAD type" % ( + len(out), 1000 / plx_min, sum(1 for o in out if not o["vet"])), + [dict(target="gcvs:%s" % o["name"], stat=o["plx"], unit="parallax mas", vet=o["vet"], + note="Gaia DR3 %s; period %s d; GCVS %s; SIMBAD %s (%s, %s)%s" % (o["gaia"], o["period"], o["sp"], o["main"], o["otype"], o["simbad_sp"], + "; " + o["why"] if o["why"] else "")) for o in out]) + print("recorded") + + +greysub_DOC = r"""Stars dimmed grey on thin-disc orbits: Gaia Catalogue of Nearby Stars objects (probability above 0.9, white-dwarf probability below 0.1) at BP-RP 0.6-3.0 with parallaxes at 20 sigma, RUWE below 1.4, one IPD peak and BP/RP excess within 0.1 of the single-star relation, lying more than 1.5 mag below the main-sequence locus of their colour while crossing the sky at under 50 km/s; a swarm covering three quarters of a star dims it without changing its colour, and the metal-poor subdwarfs that sit there naturally cross it at halo speeds. Each read in SIMBAD for its type, in GSP-Phot for a metallicity whose upper bound lies below -0.5, against the J-Ks of main-sequence stars of its colour, which collision-induced H2 absorption makes bluer in a metal-poor dwarf and a blue companion's light makes redder for the BP-RP, and in GALEX GUVcat AIS within 5 arcsec at 2007.0, where an NUV within 5 mag of G is a hot companion's. + + python -I seti.py dimming greysub [record] [--below-mag 1.5] [--tangential-kms 50] [--colour-min 0.6] [--colour-max 3.0] [--excess-max 0.1] [--uv-dmag 5]""" + + +def greysub_main(record=False, below_mag=1.5, tangential_kms=50.0, colour_min=0.6, colour_max=3.0, excess_max=0.1, uv_dmag=5.0): + rows = core.gaia_by_range("SELECT g.source_id, g.parallax, g.parallax_error, g.phot_g_mean_mag, g.phot_bp_mean_mag, g.phot_rp_mean_mag, g.phot_bp_rp_excess_factor, " + "g.ruwe, g.ipd_frac_multi_peak, g.ra, g.dec, g.pmra, g.pmdec, g.j_m_2mass, g.j_msig_2mass, g.k_m_2mass, g.k_msig_2mass, a.mh_gspphot, " + "a.mh_gspphot_upper FROM external.gaiaedr3_gcns_main_1 AS g LEFT OUTER JOIN gaiadr3.astrophysical_parameters AS a ON g.source_id = a.source_id " + "WHERE g.source_id BETWEEN {lo} AND {hi} AND g.gcns_prob > 0.9 AND g.wd_prob < 0.1 AND g.ruwe < 1.4 AND g.ipd_frac_multi_peak <= 2 " + "AND g.parallax > 20 * g.parallax_error", n=12, maxrec=400000) + st = [] + for r in rows: + g, bp, rp = num(r["phot_g_mean_mag"]), num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]) + if None in (g, bp, rp) or not colour_min <= bp - rp <= colour_max: + continue + c = bp - rp + # the single-star BP/RP excess (Riello et al. 2021) for the colour + ex = num(r["phot_bp_rp_excess_factor"]) - (1.154360 + 0.033772 * c + 0.032277 * c * c if c < 0.5 else 1.162004 + 0.011464 * c + 0.049255 * c * c - 0.005879 * c ** 3) + speed = 4.74047 * math.hypot(float(r["pmra"]), float(r["pmdec"])) / float(r["parallax"]) + j, k, ej, ek = num(r["j_m_2mass"]), num(r["k_m_2mass"]), num(r["j_msig_2mass"]), num(r["k_msig_2mass"]) + jk = j - k if None not in (j, k, ej, ek) and ej < 0.05 and ek < 0.05 else None + st.append(dict(id=r["source_id"], c=c, mg=g + 5 * math.log10(float(r["parallax"]) / 100), ex=ex, speed=speed, g=g, jk=jk, ra=float(r["ra"]), + dec=float(r["dec"]), pmra=float(r["pmra"]), pmdec=float(r["pmdec"]), mh=num(r["mh_gspphot"]), mh_up=num(r["mh_gspphot_upper"]))) + c = np.array([s["c"] for s in st]) + mg = np.array([s["mg"] for s in st]) + bins = np.floor(c / 0.05).astype(int) + loc = {b: float(np.median(mg[bins == b])) for b in set(bins.tolist()) if np.sum(bins == b) >= 30} + low = [s for s, b in zip(st, bins) if b in loc and s["mg"] - loc[b] > below_mag and abs(s["ex"]) < excess_max] + # J-Ks against the locus of the main-sequence stars of the same colour: collision-induced H2 absorption makes a metal-poor dwarf bluer + ms = [s for s, b in zip(st, bins) if b in loc and abs(s["mg"] - loc[b]) < 0.5 and s["jk"] is not None] + mb = np.floor(np.array([s["c"] for s in ms]) / 0.1).astype(int) + jkl = {} + for b in set(mb.tolist()): + v = np.array([s["jk"] for s, x in zip(ms, mb) if x == b]) + if len(v) >= 30: + med = float(np.median(v)) + jkl[b] = (med, 1.4826 * float(np.median(np.abs(v - med)))) + for s in low: + b = int(math.floor(s["c"] / 0.1)) + s["zjk"] = (s["jk"] - jkl[b][0]) / jkl[b][1] if s["jk"] is not None and b in jkl else None + disc = [s for s in low if s["speed"] < tangential_kms] + halo = [s for s in low if s["speed"] >= tangential_kms] + zmed = lambda grp: float(np.median([s["zjk"] for s in grp if s["zjk"] is not None])) if any(s["zjk"] is not None for s in grp) else float("nan") + sim = {} + for k in range(0, len(disc), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in disc[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in disc: + s["simbad"] = sim.get(s["id"]) + typ = (s["simbad"] or (None, "", ""))[1] + sp = (s["simbad"] or (None, "", ""))[2] + s["vet"] = ("white-dwarf" if typ in ("WD*", "WD?", "CV*", "No*") or "D" in sp[:2] else "metal-poor" if sp.startswith(("sd", "esd", "usd")) or typ == "sdM" + else "natural-type" if typ not in ("", "*", "PM*", "HV*", "low-mass*") else + "metal-poor" if (s["zjk"] is not None and s["zjk"] < -2) or (s["mh_up"] is not None and s["mh_up"] < -0.5) else + # J-Ks redder than the main sequence's at the star's BP-RP: a blue companion drags BP-RP blueward of the cool star's own + "white-dwarf" if s["zjk"] is not None and s["zjk"] > 3 else None) + # a hot companion: ultraviolet within 5 mag of G, which an M dwarf's photosphere or chromosphere does not give + rest = [s for s in disc if s["vet"] is None] + if rest: + up = [] + for s in rest: + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, 2007.0) + up.append(dict(source_id=s["id"], ra=ra % 360, dec=de)) + uv = {} + for m in core.xmatch(up, "II/335/galex_ais", 5.0): + nuv = num(m.get("NUVmag")) + if nuv is not None and (m["source_id"] not in uv or nuv < uv[m["source_id"]]): + uv[m["source_id"]] = nuv + for s in rest: + s["nuv"] = uv.get(s["id"]) + if s["nuv"] is not None and s["nuv"] - s["g"] < uv_dmag: + s["vet"] = "white-dwarf" + left = [s for s in disc if s["vet"] is None] + print("%d stars at BP-RP %g-%g; %d more than %g mag below the locus with clean photometry: %d slower than %g km/s across the sky, %d faster; median J-Ks " + "against the main sequence %.1f widths for the slow and %.1f for the fast; unexplained %d:" % ( + len(st), colour_min, colour_max, len(low), below_mag, len(disc), tangential_kms, len(halo), zmed(disc), zmed(halo), len(left))) + for s in sorted(disc, key=lambda s: -(s["mg"])): + print(" Gaia DR3 %s: BP-RP %.2f, M_G %.2f, %.0f km/s, G %.1f, J-Ks %s widths, [M/H] %s, NUV %s; SIMBAD %s; %s" % (s["id"], s["c"], s["mg"], s["speed"], + s["g"], "%.1f" % s["zjk"] if s["zjk"] is not None else "-", s["mh"], s.get("nuv"), s["simbad"], s["vet"])) + if record: + core.record_run("grey_dimmed_disc_stars", "Stars dimmed grey on thin-disc orbits", "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); SIMBAD", + "stars within 100 pc at BP-RP %g-%g with clean astrometry and photometry: %d" % (colour_min, colour_max, len(st)), os.path.abspath(__file__), + "greysub", len(st), "stars", dict(below_mag=below_mag, tangential_kms=tangential_kms, colour=[colour_min, colour_max], excess=excess_max, uv_dmag=uv_dmag), + "the same stars moving faster than %g km/s: %d" % (tangential_kms, len(halo)), + "a star %g mag fainter than its colour allows on a thin-disc orbit" % below_mag, "%d slower than %g km/s against %d faster, median J-Ks %.1f and %.1f " + "widths from the main sequence; %d unexplained" % (len(disc), tangential_kms, len(halo), zmed(disc), zmed(halo), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["mg"] - loc[int(math.floor(s["c"] / 0.05))], 2), unit="mag below the locus", vet=s["vet"], + note="BP-RP %.2f, %.0f km/s, J-Ks %s widths from the main sequence, GSP-Phot [M/H] %s, NUV %s; SIMBAD %s" % ( + s["c"], s["speed"], "%.1f" % s["zjk"] if s["zjk"] is not None else "unmeasured", s["mh"], s.get("nuv"), s["simbad"])) for s in disc]) + print("recorded") + + +dr2gone_DOC = r"""Stars Gaia DR2 saw that DR3 cannot find: Gaia DR2 sources with parallaxes above 10 mas at 10 sigma and G below 17 that have no row in gaiadr3.dr2_neighbourhood, which lists every DR3 source near each DR2 source with the DR2 proper motion carried forward; a star that stopped shining between the two releases' data spans. Each is sought again in DR3 within 5 arcsec and 1 mag of its position carried to 2016.0, and the rest are read for DR2's duplicated-source flag and excess-noise significance and for a DR3 source within 10 arcsec more than a magnitude brighter, in whose image DR2's detection lay; the scan's candidates are kept in the results directory, so a rerun skips it. + + python -I seti.py dimming dr2gone [record] [--plx-min 10] [--plx-sigma 10] [--g-max 17] [--radius-arcsec 5] [--bright-arcsec 10]""" + +dr2new_DOC = r"""Stars Gaia DR3 sees that DR2 did not: Gaia DR3 sources with parallaxes above 10 mas at 10 sigma, G below 17 and RUWE below 1.4 that have no row in gaiadr3.dr2_neighbourhood; a star that began shining between the releases. Each is sought in DR2 within 5 arcsec and 1 mag of its position carried back to 2015.5, and read for a DR3 neighbour within 2 arcsec, for a DR2 source within 10 arcsec more than a magnitude brighter (DR2 catalogued no second source inside a bright star's image), for a proper motion above 500 mas/yr (DR2's cross-match lost the fastest movers), for a two-parameter or duplicated solution, and for fewer than 13 visibility periods (too few in DR2's 22 months); the scan's candidates are kept in the results directory. + + python -I seti.py dimming dr2new [record] [--plx-min 10] [--plx-sigma 10] [--g-max 17] [--ruwe-max 1.4] [--radius-arcsec 5] [--bright-arcsec 10] [--fast-mas-yr 500] [--min-visibility 13]""" + + +def dr2_candidates(name, scan): + """A release's sources with no counterpart in the other, from NAME in the results directory when a scan was kept there, else from SCAN(), whose count and rows are then kept.""" + path = core.results(name) + if os.path.exists(path): + d = json.load(open(path)) + return d["n_scanned"], d["rows"] + n, rows = scan() + json.dump(dict(n_scanned=n, rows=rows), open(path, "w"), indent=1) + return n, rows + + +def dr2_neighbours(release, ra, dec, radius_arcsec, exclude=None): + """Sources of a Gaia release (gaiadr2 or gaiadr3) within RADIUS_ARCSEC of a position, other than EXCLUDE: id, G, parallax and separation in arcsec.""" + rows = core.tap("gaia", "SELECT source_id, phot_g_mean_mag, parallax, DISTANCE(POINT('ICRS', ra, dec), POINT('ICRS', %.6f, %.6f)) * 3600 AS sep " + "FROM %s.gaia_source WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f))" + % (ra, dec, release, ra, dec, radius_arcsec / 3600.0)) + return [dict(id=r["source_id"], g=num(r["phot_g_mean_mag"]), plx=num(r["parallax"]), sep=float(r["sep"])) for r in rows if r["source_id"] != exclude] + + +def dr2_same(near, g, radius_arcsec): + """The other release's sources within RADIUS_ARCSEC and a magnitude of G: the star itself, placed differently.""" + return [b for b in near if b["sep"] < radius_arcsec and b["g"] is not None and abs(b["g"] - g) < 1] + + +def dr2_brighter(near, g): + """The other release's sources more than a magnitude brighter than G, inside whose images a faint neighbour goes uncatalogued.""" + return [b for b in near if b["g"] is not None and b["g"] < g - 1] + + +def dr2gone_main(record=False, plx_min=10.0, plx_sigma=10.0, g_max=17.0, radius_arcsec=5.0, bright_arcsec=10.0): + def scan(): + near = core.gaia_by_range("SELECT source_id, ra, dec, parallax, parallax_over_error, pmra, pmdec, phot_g_mean_mag, bp_rp, astrometric_excess_noise_sig, " + "duplicated_source, astrometric_params_solved FROM gaiadr2.gaia_source WHERE source_id BETWEEN {lo} AND {hi} AND parallax > %g " + "AND parallax_over_error > %g AND phot_g_mean_mag < %g" % (plx_min, plx_sigma, g_max), n=192, maxrec=50000) + # the neighbourhood table lists every DR3 source near each DR2 source; a DR2 source with no row has nothing near it in DR3 + known = core.tap_by_ids("gaia", [r["source_id"] for r in near], "SELECT DISTINCT dr2_source_id AS source_id FROM gaiadr3.dr2_neighbourhood WHERE dr2_source_id IN (%s)") + return len(near), [r for r in near if r["source_id"] not in known] + n, rows = dr2_candidates("dr2gone_candidates.json", scan) + print("%d DR2 sources within 100 pc at G below %g, %d without a DR3 neighbour" % (n, g_max, len(rows)), flush=True) + out = [] + for r in rows: + ra, de = core.star_at(float(r["ra"]), float(r["dec"]), num(r["pmra"]) or 0.0, num(r["pmdec"]) or 0.0, 2015.5, 2016.0) + g = float(r["phot_g_mean_mag"]) + near = dr2_neighbours("gaiadr3", ra, de, bright_arcsec) + same, bright = dr2_same(near, g, radius_arcsec), dr2_brighter(near, g) + dup = str(r["duplicated_source"]).lower() in ("true", "1") + noisy = (num(r["astrometric_excess_noise_sig"]) or 0) > 2 + if same: + vet, why = "astrometry", "in DR3 within %g arcsec and a magnitude" % radius_arcsec + elif bright: + vet, why = "catalogue-dropped", "%.1f arcsec from a DR3 source %.1f mag brighter, which DR3 holds as one source with it" % (bright[0]["sep"], g - bright[0]["g"]) + elif dup or noisy: + vet, why = "artefact", "a DR2 solution marked %s" % ("duplicated" if dup else "noisy") + else: + vet, why = None, "nothing in DR3 within %g arcsec at any magnitude" % bright_arcsec + out.append(dict(id=r["source_id"], g=g, plx=float(r["parallax"]), bprp=num(r["bp_rp"]), vet=vet, why=why)) + left = [o for o in out if o["vet"] is None] + print("%d DR2 sources without a DR3 neighbour: %d found again in DR3, %d inside a brighter DR3 source's image, %d DR2 artefacts, %d unexplained %s" % ( + len(out), sum(1 for o in out if o["vet"] == "astrometry"), sum(1 for o in out if o["vet"] == "catalogue-dropped"), + sum(1 for o in out if o["vet"] == "artefact"), len(left), [(o["id"], o["g"], o["plx"], o["bprp"]) for o in left])) + for o in out: + print(" Gaia DR2 %s: G %.2f, parallax %.1f mas; %s" % (o["id"], o["g"], o["plx"], o["why"])) + if record: + core.record_run("gaia_dr2_vanished", "Stars Gaia DR2 saw that DR3 cannot find", "Gaia DR2 and DR3 (gaiadr3.dr2_neighbourhood)", + "DR2 sources with parallax above %g mas at %g sigma and G below %g: those without a DR3 neighbour, %d of %d" % (plx_min, plx_sigma, g_max, len(out), n), + os.path.abspath(__file__), "dr2gone", len(out), "Gaia sources", + dict(parallax_mas=plx_min, sigma=plx_sigma, g=g_max, radius_arcsec=radius_arcsec, bright_arcsec=bright_arcsec), + "none: each source sought again in DR3", "a nearby star of 2014-2016 with no light in 2014-2017", "%d unexplained of %d" % (len(left), len(out)), + [dict(target="gaia_dr2:%s" % o["id"], stat=o["g"], unit="G mag", vet=o["vet"], note="parallax %.1f mas, BP-RP %s; %s" % (o["plx"], o["bprp"], o["why"])) + for o in out]) + print("recorded") + + +def dr2new_main(record=False, plx_min=10.0, plx_sigma=10.0, g_max=17.0, ruwe_max=1.4, radius_arcsec=5.0, bright_arcsec=10.0, fast_mas_yr=500.0, min_visibility=13): + def scan(): + near = core.gaia_by_range("SELECT source_id, ra, dec, parallax, parallax_over_error, pmra, pmdec, phot_g_mean_mag, bp_rp, ruwe, ipd_frac_multi_peak, " + "astrometric_params_solved, duplicated_source, visibility_periods_used FROM gaiadr3.gaia_source WHERE source_id BETWEEN {lo} AND {hi} " + "AND parallax > %g AND parallax_over_error > %g AND phot_g_mean_mag < %g AND ruwe < %g" % (plx_min, plx_sigma, g_max, ruwe_max), + n=192, maxrec=50000) + known = core.tap_by_ids("gaia", [r["source_id"] for r in near], "SELECT DISTINCT dr3_source_id AS source_id FROM gaiadr3.dr2_neighbourhood WHERE dr3_source_id IN (%s)") + return len(near), [r for r in near if r["source_id"] not in known] + n, rows = dr2_candidates("dr2new_candidates.json", scan) + print("%d DR3 sources within 100 pc at G below %g with RUWE below %g, %d without a DR2 neighbour" % (n, g_max, ruwe_max, len(rows)), flush=True) + out = [] + for r in rows: + ra, de = core.star_at(float(r["ra"]), float(r["dec"]), num(r["pmra"]) or 0.0, num(r["pmdec"]) or 0.0, 2016.0, 2015.5) + g = float(r["phot_g_mean_mag"]) + pm = math.hypot(num(r["pmra"]) or 0.0, num(r["pmdec"]) or 0.0) + before = dr2_neighbours("gaiadr2", ra, de, bright_arcsec) + same, bright = dr2_same(before, g, radius_arcsec), dr2_brighter(before, g) + beside = dr2_neighbours("gaiadr3", float(r["ra"]), float(r["dec"]), 2.0, exclude=r["source_id"]) + two_par = str(r.get("astrometric_params_solved")) == "31" + dup = str(r.get("duplicated_source")).lower() in ("true", "1") + vis = int(num(r.get("visibility_periods_used")) or 0) + if same: + vet, why = "astrometry", "in DR2 within %g arcsec and a magnitude" % radius_arcsec + elif beside: + vet, why = "blend", "a DR3 source %.1f arcsec away at G %s" % (beside[0]["sep"], beside[0]["g"]) + elif bright: + vet, why = "catalogue-dropped", "%.1f arcsec from a DR2 source %.1f mag brighter, inside whose image DR2 held no second source" % (bright[0]["sep"], g - bright[0]["g"]) + elif pm > fast_mas_yr: + vet, why = "catalogue-dropped", "moving at %.0f mas/yr, beyond what DR2's cross-match followed" % pm + elif two_par or dup: + vet, why = "astrometry", "a %s DR3 solution" % ("duplicated" if dup else "two-parameter") + elif vis < min_visibility: + vet, why = "catalogue-dropped", "%d visibility periods in DR3's 34 months, too few for DR2's 22" % vis + else: + vet, why = None, "nothing in DR2 within %g arcsec within a magnitude or brighter; %d visibility periods, %.0f mas/yr" % (bright_arcsec, vis, pm) + out.append(dict(id=r["source_id"], g=g, plx=float(r["parallax"]), bprp=num(r["bp_rp"]), vet=vet, why=why)) + left = [o for o in out if o["vet"] is None] + counts = {v: sum(1 for o in out if o["vet"] == v) for v in ("astrometry", "blend", "catalogue-dropped")} + print("%d DR3 sources without a DR2 neighbour: %d present in DR2, %d with a DR3 neighbour within 2 arcsec, %d dropped by DR2 (a bright neighbour, a fast mover " + "or too few transits), %d unexplained %s" % (len(out), counts["astrometry"], counts["blend"], counts["catalogue-dropped"], len(left), + [(o["id"], o["g"], o["plx"], o["bprp"], o["why"]) for o in left])) + if record: + core.record_run("gaia_dr3_appeared", "Stars Gaia DR3 sees that DR2 did not", "Gaia DR2 and DR3 (gaiadr3.dr2_neighbourhood)", + "DR3 sources with parallax above %g mas at %g sigma, G below %g and RUWE below %g: those without a DR2 neighbour, %d of %d" % ( + plx_min, plx_sigma, g_max, ruwe_max, len(out), n), os.path.abspath(__file__), "dr2new", len(out), "Gaia sources", + dict(parallax_mas=plx_min, sigma=plx_sigma, g=g_max, ruwe=ruwe_max, radius_arcsec=radius_arcsec, bright_arcsec=bright_arcsec, + fast_mas_yr=fast_mas_yr, min_visibility=min_visibility), + "none: each source sought in DR2", "a nearby star of 2014-2017 with no light in 2014-2016", "%d unexplained of %d" % (len(left), len(out)), + [dict(target="gaia_dr3:%s" % o["id"], stat=o["g"], unit="G mag", vet=o["vet"], note="parallax %.1f mas, BP-RP %s; %s" % (o["plx"], o["bprp"], o["why"])) + for o in out]) + print("recorded") + + +releasestep_DOC = r"""Stars that stepped a magnitude between Gaia releases: Gaia DR3 sources within 100 pc (parallax above 10 mas at 10 sigma) whose DR2 counterpart in gaiadr3.dr2_neighbourhood, within 0.1 arcsec, carries a mean G differing by more than a magnitude; DR2's 22 months lie inside DR3's 34, so a mean that moved a magnitude is a star that changed its light by a large factor during 2016-2017, grey across the whole G band. Each read for DR3's variability flag, in SIMBAD for its type and against the DR2 and DR3 transit counts, since a mean built on a handful of transits is noise; DR2's photometry of stars brighter than G 4 is saturated, and a source without a BP-RP colour sits in a bright neighbour's light, which DR2's window took in. + + python -I seti.py dimming releasestep [record] [--dmag 1.0] [--plx-min 10] [--match-mas 100] [--min-obs 20] [--bright-g 4]""" + + +def releasestep_main(record=False, dmag=1.0, plx_min=10.0, match_mas=100.0, min_obs=20, bright_g=4.0): + rows = core.tap_async("gaia", "SELECT n.dr2_source_id, n.dr3_source_id, n.magnitude_difference, n.angular_distance, g.parallax, g.phot_g_mean_mag, g.phot_g_n_obs, " + "g.phot_variable_flag, g.ra, g.dec, g.bp_rp, g.ruwe FROM gaiadr3.dr2_neighbourhood AS n JOIN gaiadr3.gaia_source AS g " + "ON n.dr3_source_id = g.source_id WHERE g.parallax > %g AND g.parallax_over_error > 10 AND n.angular_distance < %g " + "AND ABS(n.magnitude_difference) > %g" % (plx_min, match_mas, dmag), maxrec=100000) + dr2 = {} + ids = sorted({str(r["dr2_source_id"]) for r in rows}) + for k in range(0, len(ids), 500): + for r in core.tap("gaia", "SELECT source_id, phot_g_mean_mag, phot_g_n_obs, phot_variable_flag FROM gaiadr2.gaia_source WHERE source_id IN (%s)" % ",".join(ids[k:k + 500])): + dr2[str(r["source_id"])] = (num(r["phot_g_mean_mag"]), num(r["phot_g_n_obs"]), str(r["phot_variable_flag"] or "")) + sim = {} + d3 = sorted({str(r["dr3_source_id"]) for r in rows}) + for k in range(0, len(d3), 200): + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % x for x in d3[k:k + 200])): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + out = [] + for r in rows: + g2, n2, v2 = dr2.get(str(r["dr2_source_id"]), (None, None, "")) + o = dict(dr3=str(r["dr3_source_id"]), dr2=str(r["dr2_source_id"]), dG=num(r["magnitude_difference"]), g3=num(r["phot_g_mean_mag"]), g2=g2, n3=num(r["phot_g_n_obs"]), + n2=n2, plx=num(r["parallax"]), bprp=num(r["bp_rp"]), ruwe=num(r["ruwe"]), var3=str(r["phot_variable_flag"] or ""), var2=v2, sep=num(r["angular_distance"]), + simbad=sim.get(str(r["dr3_source_id"]))) + typ = (o["simbad"] or (None, "", ""))[1] + # DR2's photometry of the brightest stars is saturated and wrong; a source without a BP-RP colour sits in a bright neighbour's light, which DR2's window took in + o["vet"] = ("single-record" if (o["n2"] or 0) < min_obs or (o["n3"] or 0) < min_obs else + "variable-star" if o["var3"] == "VARIABLE" or o["var2"] == "VARIABLE" or typ in ("V*", "Mi*", "LP*", "Pu*", "RR*", "dS*", "Ce*", "EB*", "Fl*", "BY*", "RS*", + "Er*", "TT*", "Y*O", "Or*", "CV*", "No*", "SN*", "Ro*", "El*", "a2*") else + "artefact" if (o["g3"] or 99) < bright_g else + "crowding" if o["bprp"] is None else + "blend" if (o["ruwe"] or 0) > 1.4 else None) + out.append(o) + left = [o for o in out if o["vet"] is None] + count = {v: sum(o["vet"] == v for o in out) for v in ("single-record", "variable-star", "artefact", "crowding", "blend")} + print("%d stars within %.0f pc whose DR2 mean G differs from DR3's by more than %g mag within %g mas; %d on few transits, %d flagged or typed variable, %d brighter than " + "G %g where DR2 saturates, %d without a colour in a bright neighbour's light, %d with RUWE above 1.4; unexplained %d" % ( + len(out), 1000 / plx_min, dmag, match_mas, count["single-record"], count["variable-star"], count["artefact"], bright_g, count["crowding"], count["blend"], len(left))) + for o in sorted(out, key=lambda o: -abs(o["dG"] or 0)): + print(" Gaia DR3 %s: G %s (%s transits) against DR2 %s (%s transits), difference %+.2f, BP-RP %s, RUWE %s, flags %s/%s; SIMBAD %s; %s" % ( + o["dr3"], o["g3"], o["n3"], o["g2"], o["n2"], o["dG"] or 0, o["bprp"], o["ruwe"], o["var2"], o["var3"], o["simbad"], o["vet"] or "unexplained")) + json.dump(out, open(core.results("gaia_release_steps.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_release_step", "Stars that stepped a magnitude between Gaia releases", "Gaia DR3 gaia_source and dr2_neighbourhood; Gaia DR2 gaia_source; SIMBAD", + "stars within %.0f pc whose DR2 and DR3 mean G differ by more than %g mag: %d" % (1000 / plx_min, dmag, len(out)), os.path.abspath(__file__), "releasestep", + len(out), "stars", dict(dmag=dmag, plx_min=plx_min, match_mas=match_mas, min_obs=min_obs, bright_g=bright_g), + "the transit counts, the variability flags, SIMBAD's types, DR2's saturation and the missing colours of sources in a bright neighbour's light", + "a star whose light changed by a magnitude between the releases' spans", "%d: %d variable, %d saturated in DR2, %d in a bright neighbour's light, %d blended; " + "%d unexplained" % (len(out), count["variable-star"], count["artefact"], count["crowding"], count["blend"], len(left)), + [dict(target="gaia_dr3:%s" % o["dr3"], stat=o["dG"], unit="DR2 minus DR3 mean G, mag", vet=o["vet"], + note="G %s on %s transits against DR2 %s on %s; flags %s/%s; SIMBAD %s" % (o["g3"], o["n3"], o["g2"], o["n2"], o["var2"], o["var3"], o["simbad"])) for o in out]) + print("recorded") + + +hipdim_DOC = r"""Stars that dimmed since Hipparcos: Hipparcos stars within 100 pc with a Gaia DR3 best neighbour, Gaia's G against Hipparcos's Hp through the sample's own running median of G - Hp in BP-RP, flagged where G is fainter than the median by 0.5 mag, a star that lost a third of its light between 1991 and 2016 without a change of colour recorded, and where it is brighter by as much, the mirror; each read for Hipparcos's scatter and variability, Gaia's variability flag and RUWE, SIMBAD's type and Gaia's saturation at the brightest magnitudes; Hipparcos measured a close pair's joint light where Gaia resolves the components, so a pair's name, a component letter or a Gaia neighbour within 10 arcsec and three magnitudes explains a step of up to 0.75 mag, and an Hp without a listed scatter rests on an incomplete record. + + python -I seti.py dimming hipdim [record] [--dmag 0.5] [--plx-min 10] [--bright-g 3] [--pair-arcsec 10]""" + + +def hipdim_main(record=False, dmag=0.5, plx_min=10.0, bright_g=3.0, pair_arcsec=10.0): + import re + rows = core.tap_async("gaia", "SELECT h.hip, h.hp_mag, h.b_v, h.s_hp, h.var, g.source_id, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.phot_variable_flag, g.parallax, g.ra, g.dec " + "FROM public.hipparcos_newreduction AS h JOIN gaiadr3.hipparcos2_best_neighbour AS x ON h.hip = x.original_ext_source_id " + "JOIN gaiadr3.gaia_source AS g ON x.source_id = g.source_id WHERE g.parallax > %g AND h.hp_mag IS NOT NULL" % plx_min, maxrec=200000) + st = [dict(hip=r["hip"], hp=num(r["hp_mag"]), bv=num(r["b_v"]), scat=num(r["s_hp"]), hvar=str(r["var"] or "").strip(), id=str(r["source_id"]), g=num(r["phot_g_mean_mag"]), + c=num(r["bp_rp"]), ruwe=num(r["ruwe"]), gvar=str(r["phot_variable_flag"] or ""), plx=num(r["parallax"]), ra=float(r["ra"]), dec=float(r["dec"])) for r in rows] + st = [s for s in st if s["g"] is not None and s["c"] is not None and s["hp"] is not None] + for s in st: + s["d"] = s["g"] - s["hp"] + bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int) + d = np.array([s["d"] for s in st]) + for b in set(bins.tolist()): + k = np.nonzero(bins == b)[0] + med = float(np.median(d[k])) if len(k) >= 20 else None + for i in k: + st[i]["res"] = st[i]["d"] - med if med is not None else None + dim = [s for s in st if s["res"] is not None and s["res"] > dmag] + bright = [s for s in st if s["res"] is not None and s["res"] < -dmag] + sim = {} + both = dim + bright + for k in range(0, len(both), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'HIP %s'" % s["hip"] for s in both[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + var_types = ("V*", "Mi*", "LP*", "Pu*", "RR*", "dS*", "Ce*", "EB*", "Fl*", "BY*", "RS*", "Er*", "TT*", "Y*O", "Or*", "CV*", "No*", "Ro*", "El*", "a2*", "gD*", "bC*", "sr*", "cC*") + for s in both: + s["simbad"] = sim.get(str(s["hip"])) + typ = (s["simbad"] or (None, "", ""))[1] + main = (s["simbad"] or ("", "", ""))[0] or "" + # Hipparcos measured a close pair's joint light where Gaia resolves the components: a pair name, a component letter or a neighbour within 10 arcsec + s["vet"] = ("artefact" if s["g"] < bright_g else + "single-record" if not s["scat"] else + "variable-star" if s["gvar"] == "VARIABLE" or s["hvar"] in ("P", "U", "M", "R") or (s["scat"] or 0) > 0.1 or typ in var_types else + "binary" if (s["ruwe"] or 0) > 1.4 or typ in ("**", "SB*", "EB*") or re.search(r"[A-D]$", main) else None) + for s in both: + if s["vet"] is None: + near = core.tap("gaia", "SELECT source_id, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %s, %s, %.5f)) " + "AND source_id <> %s AND phot_g_mean_mag < %.2f" % (s["ra"], s["dec"], pair_arcsec / 3600.0, s["id"], s["g"] + 3)) + s["near"] = ["%s (G %.1f)" % (r["source_id"], float(r["phot_g_mean_mag"])) for r in near] + if s["near"]: + s["vet"] = "binary" + left = [s for s in both if s["vet"] is None] + print("%d Hipparcos stars within %.0f pc with Gaia G; G - Hp against the running median in BP-RP: fainter by %g mag %d, brighter by as much %d; variables %d, " + "binaries %d, brighter than G %g %d; unexplained %d" % (len(st), 1000 / plx_min, dmag, len(dim), len(bright), sum(s["vet"] == "variable-star" for s in both), + sum(s["vet"] == "binary" for s in both), bright_g, sum(s["vet"] == "artefact" for s in both), len(left))) + for s in sorted(both, key=lambda s: -abs(s["res"])): + print(" HIP %s (Gaia DR3 %s): G %.2f, Hp %.2f, BP-RP %.2f, G - Hp %+.2f from the median; Hp scatter %s, Hipparcos %s, Gaia %s, RUWE %s; SIMBAD %s; %s" % ( + s["hip"], s["id"], s["g"], s["hp"], s["c"], s["res"], s["scat"], s["hvar"] or "-", s["gvar"], s["ruwe"], s["simbad"], s["vet"] or ("unexplained, %s" % ( + "dimmed" if s["res"] > 0 else "brightened")))) + json.dump(dict(n=len(st), dim=dim, bright=bright), open(core.results("hipparcos_dimmed.json"), "w"), indent=1) + if record: + core.record_run( + "hipparcos_gaia_dimming", "Stars that dimmed since Hipparcos", "Hipparcos new reduction and Gaia DR3 (hipparcos2_best_neighbour); SIMBAD", + "Hipparcos stars within %.0f pc with Gaia G: %d" % (1000 / plx_min, len(st)), os.path.abspath(__file__), "hipdim", len(st), "stars", + dict(dmag=dmag, plx_min=plx_min, bright_g=bright_g, pair_arcsec=pair_arcsec), "the stars brighter in G than the median by as much: %d" % len(bright), + "a loss of %g mag in G against Hp, grey across the two bands" % dmag, + "%d fainter against %d brighter; %d variables, %d binaries, %d saturated; %d unexplained" % ( + len(dim), len(bright), sum(s["vet"] == "variable-star" for s in both), sum(s["vet"] == "binary" for s in both), sum(s["vet"] == "artefact" for s in both), len(left)), + [dict(target="hip:%s" % s["hip"], stat=s["res"], unit="G - Hp less the median at the colour, mag", vet=s["vet"], + note="Gaia DR3 %s; G %.2f, Hp %.2f, BP-RP %.2f; Hp scatter %s, Hipparcos %s, Gaia %s, RUWE %s; SIMBAD %s; neighbours %s" % ( + s["id"], s["g"], s["hp"], s["c"], s["scat"], s["hvar"] or "-", s["gvar"], s["ruwe"], s["simbad"], s.get("near", "-"))) for s in both]) + print("recorded") + + +colourchange_DOC = r"""Stars that changed colour since Hipparcos: the Hipparcos new reduction (van Leeuwen 2007) matched to Gaia DR3 (hipparcos2_best_neighbour), stars with a B-V measured to 0.03 mag, the Gaia BP-RP of each star against the run of BP-RP with Hipparcos B-V across the whole sample, those more than five robust widths, five times the B-V error carried through the run's slope and 0.2 mag off the run, a star whose colour in 1991 was not its colour in 2016, which no star does on its own and a star under a changing screen or a changing lamp would; each read for its Hipparcos scatter, since a variable star carries a colour of its own epoch, for RUWE, since a binary mixes two colours, for saturation in Gaia's photometry, and for its spectral class, which sides with one colour or the other where the Hipparcos B-V, drawn from many ground sources, is the record that stands alone. + + python -I seti.py dimming colourchange [record] [--widths 5] [--min-mag 0.2] [--bv-min -0.3] [--bv-max 2.0] [--g-sat 6] [--e-bv-max 0.03] [--slope 2] [--class-tol 0.45]""" + + +# the colours of the spectral classes, B-V and BP-RP, for the arbitration of a disagreement by the SIMBAD type +COLOURCHANGE_CLASS = {"O": (-0.30, -0.45), "B": (-0.15, -0.20), "A": (0.10, 0.15), "F": (0.40, 0.60), "G": (0.65, 0.90), "K": (1.05, 1.35), "M": (1.50, 2.30)} + + +def colourchange_main(record=False, widths=5.0, min_mag=0.2, bv_min=-0.3, bv_max=2.0, g_sat=6.0, e_bv_max=0.03, slope=2.0, class_tol=0.45): + rows = core.tap_async("gaia", "SELECT h.hip, h.b_v, h.e_b_v, h.hp_mag, h.s_hp, h.plx, g.source_id, g.bp_rp, g.phot_g_mean_mag, g.ruwe, g.ipd_frac_multi_peak, " + "g.phot_bp_rp_excess_factor FROM public.hipparcos_newreduction AS h JOIN gaiadr3.hipparcos2_best_neighbour AS n ON h.hip = n.original_ext_source_id " + "JOIN gaiadr3.gaia_source AS g ON n.source_id = g.source_id WHERE h.b_v IS NOT NULL AND h.b_v <> 0 AND h.e_b_v IS NOT NULL AND h.e_b_v < %g AND " + "g.bp_rp IS NOT NULL AND h.b_v BETWEEN %g AND %g" % (e_bv_max, bv_min, bv_max), maxrec=200000) + st = [dict(hip=int(r["hip"]), id=str(r["source_id"]), bv=float(r["b_v"]), ebv=float(r["e_b_v"]), hp=num(r["hp_mag"]), shp=num(r["s_hp"]), plx=num(r["plx"]), c=float(r["bp_rp"]), + g=num(r["phot_g_mean_mag"]), ruwe=num(r["ruwe"]), multi=num(r["ipd_frac_multi_peak"]), excess=num(r["phot_bp_rp_excess_factor"])) for r in rows] + bv = np.array([s["bv"] for s in st]) + c = np.array([s["c"] for s in st]) + bins = np.floor(bv / 0.05).astype(int) + for b in set(bins.tolist()): + k = np.nonzero(bins == b)[0] + med = float(np.median(c[k])) if len(k) >= 30 else None + wid = 1.4826 * float(np.median(np.abs(c[k] - med))) if med is not None else None + for i in k: + st[i]["r"] = (float(c[i] - med), wid) if med is not None else None + off = [s for s in st if s["r"] and abs(s["r"][0]) > max(widths * s["r"][1], min_mag, widths * slope * s["ebv"])] + sim = {} + for k in range(0, len(off), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'HIP %d'" % s["hip"] for s in off[k:k + 200])): + sim[int(str(r["id"]).split()[-1])] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in off: + s["simbad"] = sim.get(s["hip"]) + typ = (s["simbad"] or (None, "", ""))[1] + sp = (s["simbad"] or (None, "", ""))[2].lstrip("kgm ").upper() + cls = COLOURCHANGE_CLASS.get(sp[:1]) if sp else None + s["class"] = sp[:2] if sp else None + hip_wrong = cls is not None and abs(s["c"] - cls[1]) < class_tol and abs(s["bv"] - cls[0]) > class_tol + s["vet"] = ("artefact" if (s["g"] or 99) < g_sat or (s["excess"] or 0) > 1.3 + 0.06 * s["c"] ** 2 else "variable-star" if (s["shp"] or 0) > 0.05 or typ.endswith("*") and typ[:-1] in + ("V", "Pu", "dS", "RR", "Ce", "Mi", "LP", "sr", "Er", "RS", "BY", "Ro", "Fl", "Ir", "Or", "EB", "El", "bC", "gD", "RV", "SN", "No", "CV", "XB", "Sy", "Be", "LB", "WR") + else "binary" if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 or typ in ("**", "SB*", "EB*") else "single-record" if hip_wrong else None) + left = [s for s in off if s["vet"] is None] + print("%d Hipparcos stars with B-V and Gaia BP-RP; off the colour run by %g widths and %g mag: %d (%d saturated or with BP/RP excess, %d variable, %d binaries, %d whose spectral " + "class sides with Gaia against the Hipparcos B-V); unexplained %d" % (len(st), widths, min_mag, len(off), sum(s["vet"] == "artefact" for s in off), + sum(s["vet"] == "variable-star" for s in off), sum(s["vet"] == "binary" for s in off), + sum(s["vet"] == "single-record" for s in off), len(left))) + for s in sorted(off, key=lambda s: -abs(s["r"][0]) / s["r"][1]): + if s["vet"] is None or len(off) <= 40: + print(" HIP %d: B-V %.3f +- %.3f, BP-RP %.3f, %+.3f off the run (width %.3f), Hp %s scatter %s, G %s, RUWE %s, multi %s, excess %s; SIMBAD %s; %s" % ( + s["hip"], s["bv"], s["ebv"], s["c"], s["r"][0], s["r"][1], s["hp"], s["shp"], s["g"], s["ruwe"], s["multi"], s["excess"], s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), off=[dict((k, v) for k, v in s.items() if k != "r") | dict(off=s["r"][0], width=s["r"][1]) for s in off]), open(core.results("colour_change_hipparcos.json"), "w"), indent=1) + if record: + core.record_run( + "hipparcos_gaia_colour_change", "Stars that changed colour since Hipparcos", "Hipparcos new reduction (public.hipparcos_newreduction) and Gaia DR3 by hipparcos2_best_neighbour; SIMBAD", + "Hipparcos stars with B-V between %g and %g to %g mag and a Gaia BP-RP: %d" % (bv_min, bv_max, e_bv_max, len(st)), os.path.abspath(__file__), "colourchange", len(st), "stars", + dict(widths=widths, min_mag=min_mag, bv=[bv_min, bv_max], g_sat=g_sat, e_bv_max=e_bv_max, slope=slope, class_tol=class_tol), + "the run of BP-RP with B-V across the sample in bins of 0.05; the B-V errors; Hipparcos scatter, RUWE, SIMBAD types", + "a BP-RP more than %g widths and %g mag from the run at the star's B-V" % (widths, min_mag), + "%d: %d saturated or with excess, %d variable, %d binaries, %d with the Hipparcos B-V against the spectral class; %d unexplained" % ( + len(off), sum(s["vet"] == "artefact" for s in off), sum(s["vet"] == "variable-star" for s in off), sum(s["vet"] == "binary" for s in off), + sum(s["vet"] == "single-record" for s in off), len(left)), + [dict(target="hip:%d" % s["hip"], stat=round(s["r"][0], 3), unit="mag off the BP-RP run", vet=s["vet"], + note="B-V %.3f, BP-RP %.3f, Hp scatter %s, G %s, RUWE %s; SIMBAD %s" % (s["bv"], s["c"], s["shp"], s["g"], s["ruwe"], s["simbad"])) for s in off]) + print("recorded") + + +irchanged_DOC = r"""Stars whose infrared changed since 2MASS: Gaia Catalogue of Nearby Stars objects (probability above 0.9) brighter than G 15 with 2MASS Ks measured to 0.03 mag and fainter than Ks 4, the G-Ks of each star against the run of G-Ks with BP-RP across the sample, those more than five robust widths and 0.3 mag off the run, a star whose 2 um light in 1998 does not match its optical light in 2016, which a variable star or a blend gives and a changing screen would; each read for Gaia's variability flag and RUWE, for a brighter Gaia neighbour within the 2MASS beam, for its image peaks and in SIMBAD, where white dwarfs, young stars with discs and subdwarfs carry colours of their own off the main run. + + python -I seti.py dimming irchanged [record] [--widths 5] [--min-mag 0.3] [--g-max 15] [--ks-sat 4] [--beam-arcsec 6]""" + + +def irchanged_main(record=False, widths=5.0, min_mag=0.3, g_max=15.0, ks_sat=4.0, beam_arcsec=6.0): + from setitools import catalogues + rows = catalogues.gcns("source_id, ra, dec, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, ruwe, ipd_frac_multi_peak, k_m_2mass, k_msig_2mass", + "gcns_prob > 0.9 AND phot_g_mean_mag < %g AND k_msig_2mass < 0.03 AND k_m_2mass > %g" % (g_max, ks_sat), ranges=12) + st = [] + for r in rows: + bp, rp, k, g = num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]), num(r["k_m_2mass"]), num(r["phot_g_mean_mag"]) + if None in (bp, rp, k, g): + continue + st.append(dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), plx=num(r["parallax"]), g=g, c=bp - rp, k=k, gk=g - k, ruwe=num(r["ruwe"]), multi=num(r["ipd_frac_multi_peak"]))) + c = np.array([s["c"] for s in st]) + gk = np.array([s["gk"] for s in st]) + bins = np.floor(c / 0.05).astype(int) + for b in set(bins.tolist()): + kk = np.nonzero(bins == b)[0] + med = float(np.median(gk[kk])) if len(kk) >= 30 else None + wid = 1.4826 * float(np.median(np.abs(gk[kk] - med))) if med is not None else None + for i in kk: + st[i]["r"] = (float(gk[i] - med), wid) if med is not None else None + off = [s for s in st if s["r"] and abs(s["r"][0]) > max(widths * s["r"][1], min_mag)] + var, near = {}, {} + for k in range(0, len(off), 500): + ids = ",".join(s["id"] for s in off[k:k + 500]) + for r in core.tap("gaia", "SELECT source_id, phot_variable_flag, non_single_star FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ids): + var[str(r["source_id"])] = (str(r["phot_variable_flag"] or "").strip(), num(r["non_single_star"])) + gmag = {s["id"]: s["g"] for s in off} + for k in range(0, len(off), 5000): + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in off[k:k + 5000]], "I/355/gaiadr3", beam_arcsec): + other, g = str(m.get("Source") or "").strip(), num(m.get("Gmag")) + if float(m["angDist"]) > 0.5 and other != m["source_id"] and g is not None and g < gmag[m["source_id"]] + 2: + near.setdefault(m["source_id"], []).append((other, g)) + sim = {} + for k in range(0, len(off), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in off[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in off: + s["var"], s["near"], s["simbad"] = var.get(s["id"], ("", 0)), near.get(s["id"], []), sim.get(s["id"]) + typ = (s["simbad"] or (None, "", ""))[1] + sp = (s["simbad"] or (None, "", ""))[2].lower() + s["vet"] = ("blend" if s["near"] or (s["multi"] or 0) > 2 else "white-dwarf" if typ == "WD*" or sp.startswith("d") and sp[1:2] in "abcqzox" else + "young-star" if typ in ("TT*", "Y*?", "Y*O", "Or*", "pr*") else "metal-poor" if typ == "LM*" or "sd" in sp else + "variable-star" if s["var"][0] == "VARIABLE" or (typ.endswith("*") and typ[:-1] in + ("V", "Pu", "dS", "RR", "Ce", "Mi", "LP", "sr", "Er", "RS", "BY", "Ro", "Fl", "Ir", "Or", "EB", "El", "bC", "gD", "RV", "CV", "Sy")) else + "binary" if (s["ruwe"] or 0) > 1.4 or (s["var"][1] or 0) > 0 or typ in ("**", "SB*", "EB*") else None) + left = [s for s in off if s["vet"] is None] + print("%d stars within 100 pc with clean 2MASS Ks and Gaia colours; off the G-Ks run by %g widths and %g mag: %d (%d blended within %g arcsec or with image peaks, %d white dwarfs, " + "%d young stars, %d subdwarfs, %d variable, %d binaries); unexplained %d" % (len(st), widths, min_mag, len(off), sum(s["vet"] == "blend" for s in off), beam_arcsec, + sum(s["vet"] == "white-dwarf" for s in off), sum(s["vet"] == "young-star" for s in off), + sum(s["vet"] == "metal-poor" for s in off), sum(s["vet"] == "variable-star" for s in off), + sum(s["vet"] == "binary" for s in off), len(left))) + for s in sorted(off, key=lambda s: -abs(s["r"][0]) / s["r"][1]): + if s["vet"] is None or len(off) <= 40: + print(" Gaia DR3 %s: BP-RP %.2f, G %.2f, Ks %.2f, G-Ks %+.2f off the run (width %.3f), RUWE %s, multi %s, variable %s, neighbours %s; SIMBAD %s; %s" % ( + s["id"], s["c"], s["g"], s["k"], s["r"][0], s["r"][1], s["ruwe"], s["multi"], s["var"][0] or "-", s["near"] or "-", s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), off=[dict((k, v) for k, v in s.items() if k != "r") | dict(off=s["r"][0], width=s["r"][1]) for s in off]), open(core.results("ir_change_2mass_gaia.json"), "w"), indent=1) + if record: + core.record_run( + "gcns_2mass_gaia_ir_change", "Stars whose infrared changed since 2MASS", "Gaia Catalogue of Nearby Stars with its 2MASS photometry (external.gaiaedr3_gcns_main_1); Gaia DR3; SIMBAD", + "stars within 100 pc brighter than G %g with Ks to 0.03 mag fainter than %g: %d" % (g_max, ks_sat, len(st)), os.path.abspath(__file__), "irchanged", len(st), "stars", + dict(widths=widths, min_mag=min_mag, g_max=g_max, ks_sat=ks_sat, beam_arcsec=beam_arcsec), "the run of G-Ks with BP-RP in bins of 0.05; Gaia's neighbours, variability flag, RUWE and image peaks; SIMBAD", + "a G-Ks more than %g widths and %g mag from the run at the star's colour" % (widths, min_mag), + "%d: %d blends, %d white dwarfs, %d young stars, %d subdwarfs, %d variable, %d binaries; %d unexplained" % ( + len(off), sum(s["vet"] == "blend" for s in off), sum(s["vet"] == "white-dwarf" for s in off), sum(s["vet"] == "young-star" for s in off), + sum(s["vet"] == "metal-poor" for s in off), sum(s["vet"] == "variable-star" for s in off), sum(s["vet"] == "binary" for s in off), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["r"][0], 3), unit="mag off the G-Ks run", vet=s["vet"], + note="BP-RP %.2f, G %.2f, Ks %.2f, RUWE %s, variable %s, neighbours %s; SIMBAD %s" % (s["c"], s["g"], s["k"], s["ruwe"], s["var"][0] or "-", s["near"] or "none", s["simbad"])) + for s in off]) + print("recorded") + + +APPROACHES = { + "irchanged": (lambda: core.run_cli(irchanged_main), irchanged_DOC), + "colourchange": (lambda: core.run_cli(colourchange_main), colourchange_DOC), + "hipdim": (lambda: core.run_cli(hipdim_main), hipdim_DOC), + "releasestep": (lambda: core.run_cli(releasestep_main), releasestep_DOC), + "dr2gone": (lambda: core.run_cli(dr2gone_main), dr2gone_DOC), + "dr2new": (lambda: core.run_cli(dr2new_main), dr2new_DOC), + "greysub": (lambda: core.run_cli(greysub_main), greysub_DOC), + "uniquevar": (lambda: core.run_cli(uniquevar_main), uniquevar_DOC), + "hipgone": (lambda: core.run_cli(hipgone_main), hipgone_DOC), + "chromatic": (chromatic_cli, chromatic_DOC), + "achromatic": (achromatic_cli, achromatic_DOC), + "occulters": (lambda: core.run_cli(occulters_main), occulters_DOC), + "hipparcos": (hipparcos_cli, hipparcos_DOC), + "gaia": (gaia_cli, gaia_DOC), + "hip_gaia": (hip_gaia_cli, hip_gaia_DOC), + "dasch": (dasch_cli, dasch_DOC), + "tess": (tess_cli, tess_DOC), + "neowise": (neowise_cli, neowise_DOC), + "alerts": (alerts_cli, alerts_DOC), +} + + diff --git a/setitools/flashes.py b/setitools/flashes.py new file mode 100644 index 0000000000000000000000000000000000000000..da5d0bde46d0b4d6b481afe9c1187117d7139416 --- /dev/null +++ b/setitools/flashes.py @@ -0,0 +1,4945 @@ +"""Specular glints: brief flashes folded at a planet's or an asteroid's period.""" +import argparse +import csv +import glob +import io +import json +import math +import os +import re +import sys +import time +from concurrent.futures import ThreadPoolExecutor + +import numpy as np + +from setitools import catalogues, core, science +from setitools.core import num, quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------- + +tess20_DOC = r"""Glints in TESS 20 s light curves within 30 pc: 5-sigma flashes of at most three cadences tested for periodicity against draws from good cadences. + + python -I seti.py flashes tess20 targets + python -I seti.py flashes tess20 fetch [--threads 8] [--per-star N] [--list SHARE.json] + python -I seti.py flashes tess20 search [--list SHARE.json] [--out glints.json] [--procs N] + python -I seti.py flashes tess20 merge (merges the shares' glints_*.json and records the run in the coverage store)""" + +tess20_HERE = core.RESULTS +tess20_DL = os.environ.get("SETI_TESS20", core.data("tess20")) +tess20_UA = core.UA + + +def tess20_get(url, timeout=120): + """Bytes of a URL, or None when missing or still failing after three tries.""" + return core.get(url, timeout=timeout, retries=3, soft=True, pause=0) + + +def tess20_targets(): + lists = {} + for s in range(27, 140): + b = tess20_get("https://tess.mit.edu/public/target_lists/20s/all_targets_20s_S%03d_v1.csv" % s) + if not b or not b.lstrip().startswith(b"#"): + if s > 100: + break + continue + rows = [ln for ln in b.decode(errors="replace").splitlines() if ln and not ln.startswith("#")] + lists[s] = list(csv.DictReader(io.StringIO("\n".join(rows)))) + print("%d sectors with 20 s target lists, %d target entries" % (len(lists), sum(len(v) for v in lists.values())), + flush=True) + near = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag, bp_rp FROM " + "gaiadr3.gaia_source WHERE parallax > 33.33 AND phot_g_mean_mag < 16") + ra0 = np.array([float(r["ra"]) - float(r["pmra"] or 0) / 3.6e6 * 16.0 / math.cos(math.radians(float(r["dec"]))) + for r in near]) + de0 = np.array([float(r["dec"]) - float(r["pmdec"] or 0) / 3.6e6 * 16.0 for r in near]) + out = [] + for s, rows in lists.items(): + for t in rows: + try: + ra, dec = float(t["RA"]), float(t["Dec"]) + except (KeyError, ValueError): + continue + d = np.hypot((ra0 - ra) * math.cos(math.radians(dec)), de0 - dec) * 3600.0 + k = int(np.argmin(d)) + if d[k] < 10.0: + g = near[k] + out.append(dict(tic=int(t["TICID"]), sector=s, gaia=g["source_id"], sep=round(float(d[k]), 2), + dist_pc=round(1000.0 / float(g["parallax"]), 2), g=float(g["phot_g_mean_mag"]), + bp_rp=float(g["bp_rp"] or "nan"))) + json.dump(out, open(os.path.join(tess20_HERE, "glint_targets.json"), "w")) + print("%d light curves of %d stars within 30 pc" % (len(out), len({o["gaia"] for o in out}))) + + +def tess20_fetch_one(t): + path = os.path.join(tess20_DL, "s%04d_%d_fast-lc.fits" % (t["sector"], t["tic"])) + if os.path.exists(path): + return True + keys = core.spoc_keys(t["tic"], t["sector"], fast=True) + if not keys: + return False + b = tess20_get(core.S3 + keys[0], timeout=300) + if not b or not b.startswith(b"SIMPLE"): + return False + open(path + ".tmp", "wb").write(b) + os.replace(path + ".tmp", path) + return True + + +def tess20_fetch(threads, per_star, share=None): + os.makedirs(tess20_DL, exist_ok=True) + ts = json.load(open(share or os.path.join(tess20_HERE, "glint_targets.json"))) + if per_star and not share: + by = {} + for t in sorted(ts, key=lambda t: t["sector"]): + by.setdefault(t["gaia"], []).append(t) + ts = [t for v in by.values() for t in v[:per_star]] + with ThreadPoolExecutor(threads) as ex: + ok = list(ex.map(tess20_fetch_one, ts)) + print("%d of %d light curves on disk" % (sum(ok), len(ts))) + + +def tess20_flashes(t, f, q): + good = (q == 0) & np.isfinite(f) & np.isfinite(t) + t, f = t[good], f[good] + if len(f) < 1000: + return None + from scipy.ndimage import median_filter + base = median_filter(f, size=31, mode="nearest") + r = f / base - 1.0 + sig = 1.4826 * np.median(np.abs(r - np.median(r))) + idx = np.nonzero(r > 5 * sig)[0] + out, seen = [], set() + for i in idx: + if i in seen: + continue + j = i + while j + 1 < len(r) and r[j + 1] > 5 * sig and t[j + 1] - t[j] < 30 / 86400.0: + j += 1 + seen.update(range(i, j + 1)) + if j - i >= 3 or i < 4 or j > len(r) - 5: + continue + before, after = r[i - 4:i - 1], r[j + 2:j + 5] + if np.all(np.abs(before) < 2 * sig) and np.all(np.abs(after) < 2 * sig) and \ + t[i] - t[i - 4] < 120 / 86400.0 and t[j + 4] - t[j] < 120 / 86400.0: + k = i + int(np.argmax(r[i:j + 1])) + out.append((float(t[k]), float(r[k] / sig), j - i + 1)) + return out, t, sig + + +def tess20_best_period(times, tol=40.0 / 86400.0): + times = np.sort(np.asarray(times)) + best = (0, None) + for a in range(len(times)): + for b in range(a + 1, len(times)): + for k in range(1, 6): + P = (times[b] - times[a]) / k + if P < 0.01: + continue + ph = (times - times[a]) / P + n = int(np.sum(np.abs(ph - np.round(ph)) * P < tol)) + if n > best[0]: + best = (n, P) + return best + + +def tess20_one_curve(p): + """Flashes in one light-curve file: (name, flashes, good times) or None.""" + from astropy.io import fits + try: + with fits.open(os.path.join(tess20_DL, p)) as h: + d = h[1].data + res = tess20_flashes(np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), + np.asarray(d["QUALITY"], int)) + except Exception: + return None + if res is None: + return None + return p, res[0], res[1].astype(np.float32) + + +def tess20_search(share=None, out="glints.json", procs=1): + ts = {(t["sector"], t["tic"]): t for t in json.load(open(share or os.path.join(tess20_HERE, "glint_targets.json")))} + files = [p for p in sorted(os.listdir(tess20_DL)) if p.endswith("_fast-lc.fits") + and (int(p.split("_")[0][1:]), int(p.split("_")[1])) in ts] + if procs > 1: + from multiprocessing import Pool + with Pool(procs) as pool: + results = pool.map(tess20_one_curve, files, chunksize=4) + else: + results = [tess20_one_curve(p) for p in files] + per_star = {} + stats = dict(curves=0, flashes=0, hours=0.0) + for item in results: + if item is None: + continue + p, fl, tg = item + s, tic = p.split("_")[0], int(p.split("_")[1]) + meta = ts.get((int(s[1:]), tic)) + stats["curves"] += 1 + stats["flashes"] += len(fl) + stats["hours"] += len(tg) * 20.0 / 3600.0 + key = meta["gaia"] if meta else str(tic) + e = per_star.setdefault(key, dict(meta=meta, flashes=[], good_times=[])) + e["flashes"] += [dict(sector=int(s[1:]), t=x[0], snr=round(x[1], 1), n=x[2]) for x in fl] + e["good_times"].append(tg) + print("%d light curves, %.0f star-hours at 20 s, %d short symmetric flashes (%.2f per star-day)" + % (stats["curves"], stats["hours"], stats["flashes"], stats["flashes"] / max(stats["hours"] / 24.0, 1e-9))) + rng = np.random.default_rng(3) + report = [] + for key, e in per_star.items(): + # the 60 strongest flashes carry any periodic family + times = [x["t"] for x in sorted(e["flashes"], key=lambda x: -x["snr"])[:60]] + if len(times) < 3: + continue + n, P = tess20_best_period(times) + allt = np.concatenate(e["good_times"]) + sims = [] + for _ in range(200): + sims.append(tess20_best_period(rng.choice(allt, size=len(times), replace=False))[0]) + p = (1 + sum(1 for v in sims if v >= n)) / 201.0 + report.append(dict(gaia=key, meta=e["meta"], n_flashes=len(times), best_n=n, period_d=P, p=p, + flashes=e["flashes"])) + report.sort(key=lambda r: r["p"]) + stars_all = [dict(gaia=k, meta=e["meta"], n_flashes=len(e["flashes"]), flashes=e["flashes"]) for k, e in per_star.items()] + json.dump(dict(stats=stats, stars=report, all=stars_all), open(os.path.join(tess20_HERE, out), "w"), default=float) + print("%d stars with three or more flashes" % len(report)) + for r in report[:12]: + m = r["meta"] or {} + print(" Gaia DR3 %s (%.1f pc, G %.1f, BP-RP %.2f): %d flashes, %d on one period of %.4f d, p %.3f" + % (r["gaia"], m.get("dist_pc", 0), m.get("g", 0), m.get("bp_rp", 0), r["n_flashes"], r["best_n"], + r["period_d"] or 0, r["p"])) + + +def tess20_merge(): + """Merge shares, compare periodicity p-values with uniform, record one row per star.""" + stats = dict(curves=0, flashes=0, hours=0.0) + report, every = [], {} + import glob + for path in sorted(glob.glob(os.path.join(tess20_HERE, "glints_*.json"))): + d = json.load(open(path)) + if "stats" not in d: + continue + for k in stats: + stats[k] += d["stats"][k] + report += d["stars"] + for s in d["all"]: + e = every.setdefault(s["gaia"], dict(n=0)) + e["n"] += s["n_flashes"] + ps = np.array([r["p"] for r in report]) + null = {str(c): dict(n=int((ps <= c + 1e-9).sum()), expected=round(c * len(ps), 1)) for c in (0.005, 0.01, 0.02, 0.05)} + print("%d light curves, %.0f star-hours, %d flashes (%.2f per star-day); %d stars with three or more flashes" + % (stats["curves"], stats["hours"], stats["flashes"], stats["flashes"] / max(stats["hours"] / 24, 1e-9), len(ps))) + for c, v in null.items(): + print(" p <= %s: %d stars against %.1f for uniform p" % (c, v["n"], v["expected"])) + best = {r["gaia"]: r for r in report} + rows = [dict(target="gaia_dr3:" + k, stat=best[k]["best_n"] if k in best else None, + p=best[k]["p"] if k in best else None, + note="%d flashes%s" % (e["n"], ", period %.5f d" % best[k]["period_d"] if k in best and best[k]["period_d"] else "")) + for k, e in every.items()] + db = core.connect() + sid = "tess20_glints" + core.record_search(sid, "Specular glints, TESS 20 s", archive="MAST TESS SPOC fast-lc (STScI AWS mirror)", + release="sectors 27 on", selection="20 s targets matched to Gaia DR3 stars within 30 pc; the " + "shares in share_glint_.json", code=os.path.abspath(__file__), entry="tess20", + params=dict(flash_sigma=5, max_cadences=3, quiet_sigma=2, period_tol_s=40, draws=200, + strongest=60), + n_targets=len(rows), null_summary=dict(stats=stats, p=null), + result="no star's flashes recur at a period beyond chance", ledger="Specular glints, TESS 20 s", + db=db) + core.record_targets(sid, rows, db=db) + db.close() + print("recorded %d stars under %s" % (len(rows), sid)) + + +def tess20_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("targets", "fetch", "search", "merge")) + p.add_argument("--threads", type=int, default=8) + p.add_argument("--per-star", type=int, default=0, help="light curves per star, earliest sectors first (0: all)") + p.add_argument("--list", default=None, help="JSON list of target records to fetch or search (one share)") + p.add_argument("--out", default="glints.json") + p.add_argument("--procs", type=int, default=1) + a = p.parse_args() + {"targets": tess20_targets, "fetch": lambda: tess20_fetch(a.threads, a.per_star, a.list), + "search": lambda: tess20_search(a.list, a.out, a.procs), "merge": tess20_merge}[a.mode]() + + +def tess20_cli(): + quiet_warnings() + tess20_main() + + +# -------------------------------------------------------------------------------------------------------------- + +toi_DOC = r"""Glints at TOI periods in SPOC two-minute light curves: the busiest 2.5-cadence phase window against 400 draws. + + python -I seti.py flashes toi targets + python -I seti.py flashes toi split N (shares toi_share.json, balanced by sector count) + python -I seti.py flashes toi stream --list SHARE.json --out toi_glints_.jsonl [--procs N] + python -I seti.py flashes toi report toi_glints_*.jsonl + python -I seti.py flashes toi record toi_glints_*.jsonl""" + +toi_ROOT = os.environ.get("TOI_ROOT", core.data("toi_glints")) +toi_HERE = core.RESULTS +toi_TOI_CSV = "https://exofop.ipac.caltech.edu/tess/download_toi.php?sort=toi&output=csv" +toi_CAD = 120.0 / 86400.0 +toi_BTJD = 2457000.0 + + +def toi_targets(): + os.makedirs(toi_ROOT, exist_ok=True) + raw = core.get(toi_TOI_CSV, timeout=300, retries=3).decode("utf-8", "replace") + by = {} + for r in csv.DictReader(io.StringIO(raw)): + if (r.get("TFOPWG Disposition") or "").strip() in ("FP", "FA"): + continue + P, ep, dur = num(r.get("Period (days)")), num(r.get("Epoch (BJD)")), num(r.get("Duration (hours)")) + if not P or P <= 0 or not ep: + continue + tic = int(r["TIC ID"]) + x = by.setdefault(tic, dict(tic=tic, tmag=num(r.get("TESS Mag")), sectors=set(), tois=[])) + x["sectors"] |= {int(s) for s in re.findall(r"\d+", r.get("Sectors") or "")} + x["tois"].append(dict(toi=r["TOI"], period=P, t0=ep - toi_BTJD, dur_h=dur, disp=r.get("TFOPWG Disposition"))) + out = [dict(x, sectors=sorted(x["sectors"])) for x in by.values() if x["sectors"]] + json.dump(out, open(os.path.join(toi_ROOT, "targets.json"), "w")) + print("%d TOI hosts (false positives and false alarms left out), %d TOIs, %d star-sectors" + % (len(out), sum(len(x["tois"]) for x in out), sum(len(x["sectors"]) for x in out))) + + +def toi_split(n): + ts = sorted(json.load(open(os.path.join(toi_ROOT, "targets.json"))), key=lambda t: -len(t["sectors"])) + for i in range(n): + json.dump(ts[i::n], open(os.path.join(toi_ROOT, "toi_share%d.json" % i), "w")) + print("%d shares of %s stars" % (n, ", ".join(str(len(ts[i::n])) for i in range(n)))) + + +def toi_one_star(t): + quiet_warnings() + fl, goods, used = [], [], [] + for s in t["sectors"]: + b = core.spoc_bytes(t["tic"], s) + if not b: + continue + try: + tt, f, _ = core.read(b, columns=("PDCSAP_FLUX",), normalise=False) + except Exception: + continue + if len(tt) < 1000: + continue + ev, _ = science.flash_events(tt, f, toi_CAD, quiet=4) + fl += ev + goods.append(tt) + used.append(s) + if not goods: + return dict(tic=t["tic"], sectors=[], days=0.0, n_flash=0, flashes=[], tois=[]) + good_t = np.concatenate(goods) + rng = np.random.default_rng(t["tic"] % 100000) + times = [x[0] for x in fl] + res = [] + for k in t["tois"]: + if len(times) >= 3: + n0, fap = science.phase_cluster(times, good_t, k["period"], k["t0"], 2.5 * toi_CAD, rng) + else: + n0, fap = len(times), 1.0 + res.append(dict(k, n_cluster=n0, fap=fap)) + return dict(tic=t["tic"], sectors=used, days=float(len(good_t) * toi_CAD), n_flash=len(fl), flashes=fl[:300], tois=res) + + +def toi_stream(share, out, procs): + from concurrent.futures import ProcessPoolExecutor + ts = json.load(open(share or os.path.join(toi_ROOT, "targets.json"))) + path = os.path.join(toi_HERE, out) + done = set() + if os.path.exists(path): + done = {json.loads(ln)["tic"] for ln in open(path) if ln.strip()} + todo = [t for t in ts if t["tic"] not in done] + print("%d stars to search (%d done)" % (len(todo), len(done)), flush=True) + with ProcessPoolExecutor(procs) as ex, open(path, "a") as fh: + for r in ex.map(toi_one_star, todo, chunksize=2): + fh.write(json.dumps(r, default=float) + "\n") + fh.flush() + + +def toi_report(paths): + seen, res = set(), [] + for p in paths: + for ln in open(p): + if ln.strip(): + r = json.loads(ln) + if r["tic"] not in seen: + seen.add(r["tic"]) + res.append(r) + tested = [k for r in res for k in r["tois"] if r["n_flash"] >= 3] + print("%d stars, %.0f days of two-minute cadence, %d flashes; %d TOIs on stars with three or more flashes" + % (len(res), sum(r["days"] for r in res), sum(r["n_flash"] for r in res), len(tested))) + for thr, label in ((0.01, "below 0.01"), (1 / 401.0 + 1e-9, "at the floor 1/401")): + k = sum(1 for x in tested if x["fap"] < thr or (thr < 0.01 and x["fap"] <= thr)) + print(" TOIs with flashes clustered in phase at FAP %s: %d (at most %.1f expected)" % (label, k, thr * len(tested))) + for r in res: + for k in r["tois"]: + if r["n_flash"] >= 3 and k["fap"] < 0.01: + print(" TIC %d TOI %s P %.4f d: %d of %d flashes within 2.5 cadences of one phase, FAP %.4f" + % (r["tic"], k["toi"], k["period"], k["n_cluster"], r["n_flash"], k["fap"])) + return res + + +def toi_record(paths): + """Record one row per star with its lowest TOI false-alarm probability.""" + res = toi_report(paths) + tested = [k for r in res for k in r["tois"] if r["n_flash"] >= 3] + below = sum(1 for k in tested if k["fap"] < 0.01) + floor = sum(1 for k in tested if k["fap"] <= 1 / 401.0 + 1e-9) + core.record_search( + "tess_toi_glints", "Specular glints at TESS planet-candidate periods", + archive="TESS SPOC two-minute light curves (STScI AWS mirror)", release="sectors 1-%d" % max( + s for r in res for s in r["sectors"]), + selection="%d hosts of TOIs that are neither false positives nor false alarms (ExoFOP TOI table)" % len(res), + code="seti.py flashes toi", params=dict(flash_sigma=5, max_cadences=3, clean_window=4, phase_window_cadences=2.5, + null_draws=400), + n_targets=len(res), + null_summary="%d TOIs on stars with three or more flashes: %d below FAP 0.01 against at most %.1f, %d at the " + "1/401 floor against at most %.1f" % (len(tested), below, 0.01 * len(tested), floor, + len(tested) / 401.0), + sensitivity="flashes of 5 robust deviations lasting 1-3 cadences (2-6 min); %.0f star-days, %d flashes" + % (sum(r["days"] for r in res), sum(r["n_flash"] for r in res)), + result="no TOI period gathers flashes at one phase beyond chance", + ledger="Specular glints, TESS TOI hosts") + core.clear_targets("tess_toi_glints") + core.record_targets("tess_toi_glints", [ + dict(target="tic:%s" % r["tic"], stat=float(r["n_flash"]), unit="flashes", + p=min((k["fap"] for k in r["tois"]), default=None) if r["n_flash"] >= 3 else None, + note="%.0f days in %d sectors; lowest TOI false-alarm probability over its folded periods" + % (r["days"], len(r["sectors"]))) for r in res]) + print("recorded") + + +def toi_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("targets", "split", "stream", "report", "record")) + p.add_argument("paths", nargs="*") + p.add_argument("--list") + p.add_argument("--out", default="toi_glints.jsonl") + p.add_argument("--procs", type=int, default=2) + a = p.parse_args() + if a.mode == "targets": + toi_targets() + elif a.mode == "split": + toi_split(int(a.paths[0]) if a.paths else 2) + elif a.mode == "stream": + toi_stream(a.list, a.out, a.procs) + elif a.mode == "record": + toi_record(a.paths) + else: + toi_report(a.paths) + + +def toi_cli(): + quiet_warnings() + toi_main() + + +# -------------------------------------------------------------------------------------------------------------- + +kepler_DOC = r"""Glints at KOI periods in Kepler short cadence: the busiest 2.5-cadence phase window against flash times drawn from good cadences. + + python -I seti.py flashes kepler targets + python -I seti.py flashes kepler fetch [--threads 4] [--list SHARE.json] + python -I seti.py flashes kepler search [--list SHARE.json] [--out kepler_glints.json] [--procs 2] + python -I seti.py flashes kepler split (two shares of the targets, share0.json and share1.json) + python -I seti.py flashes kepler stream --list SHARE.json --out kepler_glints_.jsonl [--procs 2] + python -I seti.py flashes kepler report kepler_glints_*.jsonl""" + +kepler_ROOT = os.environ.get("KEPLER_SC", core.data("kepler_sc")) +kepler_HERE = core.RESULTS +kepler_S3 = "https://stpubdata.s3.amazonaws.com/" +kepler_CAD = 58.85 / 86400.0 + + +def kepler_targets(): + os.makedirs(kepler_ROOT, exist_ok=True) + kois = core.exoplanets("SELECT kepid, kepoi_name, koi_disposition, koi_period, koi_time0bk, koi_duration, " + "koi_prad FROM cumulative WHERE koi_disposition IN ('CONFIRMED', 'CANDIDATE')") + by = {} + for k in kois: + by.setdefault(str(k["kepid"]), []).append(dict(koi=k["kepoi_name"], period=float(k["koi_period"]), + t0=float(k["koi_time0bk"]), dur_h=float(k["koi_duration"] or 0), + prad=k["koi_prad"])) + from concurrent.futures import ThreadPoolExecutor + + def listing(kic): + k9 = "%09d" % int(kic) + b = core.get(kepler_S3 + "?list-type=2&prefix=kepler/public/lightcurves/%s/%s/" % (k9[:4], k9), timeout=60, + retries=3, soft=True, pause=1) + return kic, re.findall(r"([^<]*_slc\.fits)", b.decode()) if b else [] + out = [] + with ThreadPoolExecutor(8) as ex: + for kic, keys in ex.map(listing, sorted(by)): + if keys: + out.append(dict(kic=kic, kois=by[kic], files=keys)) + json.dump(out, open(os.path.join(kepler_ROOT, "targets.json"), "w")) + print("%d KOIs on %d stars; %d stars with short cadence, %d short-cadence files" + % (len(kois), len(by), len(out), sum(len(t["files"]) for t in out))) + + +def kepler_fetch(threads, share=None): + from concurrent.futures import ThreadPoolExecutor + ts = json.load(open(share or os.path.join(kepler_ROOT, "targets.json"))) + keys = [k for t in ts for k in t["files"]] + os.makedirs(os.path.join(kepler_ROOT, "slc"), exist_ok=True) + + def one(k): + p = os.path.join(kepler_ROOT, "slc", os.path.basename(k)) + if os.path.exists(p): + return 1 + b = core.get(kepler_S3 + k, timeout=300, retries=3, soft=True, pause=2) + if not b or not b.startswith(b"SIMPLE"): + return 0 + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + n = 0 + with ThreadPoolExecutor(threads) as ex: + for i, r in enumerate(ex.map(one, keys)): + n += r + if i % 500 == 0: + print("%d of %d files" % (n, len(keys)), flush=True) + print("%d of %d short-cadence files on disk" % (n, len(keys))) + + +def kepler_flashes(t, f, q): + good = (q == 0) & np.isfinite(f) & np.isfinite(t) + t, f = t[good], f[good] + if len(f) < 1000: + return [], t + from scipy.ndimage import median_filter + r = f / median_filter(f, size=31, mode="nearest") - 1.0 + sig = 1.4826 * np.median(np.abs(r - np.median(r))) + out, seen = [], set() + for i in np.nonzero(r > 5 * sig)[0]: + if i in seen: + continue + j = i + while j + 1 < len(r) and r[j + 1] > 5 * sig and t[j + 1] - t[j] < 1.5 * kepler_CAD: + j += 1 + seen.update(range(i, j + 1)) + if j - i >= 3 or i < 5 or j > len(r) - 6: + continue + before, after = r[i - 5:i - 1], r[j + 2:j + 6] + if np.all(np.abs(before) < 2 * sig) and np.all(np.abs(after) < 2 * sig) and \ + t[i] - t[i - 5] < 6 * kepler_CAD and t[j + 5] - t[j] < 6 * kepler_CAD: + k = i + int(np.argmax(r[i:j + 1])) + out.append((float(t[k]), float(r[k] / sig), int(j - i + 1))) + return out, t + + +def kepler_phase_cluster(times, good_t, P, t0, rng, ntrial=400): + """Largest flash count in a 2.5-cadence phase window and its false-alarm probability.""" + w = 2.5 * kepler_CAD / P + + def best(ts): + ph = np.sort(((np.asarray(ts) - t0) / P) % 1.0) + if len(ph) < 2: + return len(ph) + ext = np.concatenate([ph, ph + 1.0]) + j = np.searchsorted(ext, ext[:len(ph)] + w, side="right") + return int(np.max(j - np.arange(len(ph)))) + n0 = best(times) + null = [best(rng.choice(good_t, size=len(times), replace=False)) for _ in range(ntrial)] + return n0, (1 + sum(x >= n0 for x in null)) / (ntrial + 1.0) + + +def kepler_one_star(t, slc_dir=None): + quiet_warnings() + from astropy.io import fits + fl, goods = [], [] + for k in t["files"]: + p = os.path.join(slc_dir or os.path.join(kepler_ROOT, "slc"), os.path.basename(k)) + if not os.path.exists(p): + continue + try: + with fits.open(p) as h: + d = h[1].data + f, g = kepler_flashes(np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), + np.asarray(d["SAP_QUALITY"] if "SAP_QUALITY" in d.columns.names else d["QUALITY"], int)) + except Exception: + continue + fl += f + goods.append(g) + if not goods: + return None + good_t = np.concatenate(goods) + rng = np.random.default_rng(int(t["kic"]) % 100000) + res = [] + times = [x[0] for x in fl] + for k in t["kois"]: + if len(times) >= 3 and k["period"] > 0: + n0, fap = kepler_phase_cluster(times, good_t, k["period"], k["t0"], rng) + else: + n0, fap = len(times), 1.0 + res.append(dict(k, n_cluster=n0, fap=fap)) + return dict(kic=t["kic"], days=float(len(good_t) * kepler_CAD), n_flash=len(fl), flashes=fl[:200], kois=res) + + +def kepler_summary(res): + """Counts against the null: KOIs on stars with three or more flashes; p floor 1/401.""" + allk = [k for r in res for k in r["kois"]] + tested = [k for r in res for k in r["kois"] if r["n_flash"] >= 3 and k["period"] > 0] + print("%d stars, %.0f days of short cadence, %d flashes; %d KOIs folded, %d on stars with three or more flashes" % ( + len(res), sum(r["days"] for r in res), sum(r["n_flash"] for r in res), len(allk), len(tested))) + for thr in (0.01, 1 / 401.0 + 1e-9): + print(" KOIs with flashes clustered in phase at FAP %s %.4f: %d (at most %.1f expected)" + % ("below" if thr == 0.01 else "at the floor", thr, sum(1 for k in tested if k["fap"] < thr or + (thr < 0.01 and k["fap"] <= thr)), thr * len(tested))) + + +def kepler_search(share=None, out="kepler_glints.json", procs=2): + from concurrent.futures import ProcessPoolExecutor + ts = json.load(open(share or os.path.join(kepler_ROOT, "targets.json"))) + with ProcessPoolExecutor(procs) as ex: + res = [r for r in ex.map(kepler_one_star, ts, chunksize=2) if r] + kepler_summary(res) + for r in res: + for k in r["kois"]: + if k["fap"] < 0.01: + print(" KIC %s %s P %.4f d: %d of %d flashes within 2.5 cadences of one phase, FAP %.4f" + % (r["kic"], k["koi"], k["period"], k["n_cluster"], r["n_flash"], k["fap"])) + json.dump(res, open(os.path.join(kepler_HERE, out), "w")) + + +def kepler_stream_star(t): + """Fetch, search and delete one star's short-cadence files; returns its JSONL line.""" + import shutil + tmp = os.path.join(kepler_ROOT, "tmp_%s" % t["kic"]) + os.makedirs(tmp, exist_ok=True) + local = [] + for k in t["files"]: + p = os.path.join(tmp, os.path.basename(k)) + if not os.path.exists(p): + b = core.get(kepler_S3 + k, timeout=300, retries=3, soft=True, pause=2) + if not b or not b.startswith(b"SIMPLE"): + continue + open(p, "wb").write(b) + local.append(p) + r = kepler_one_star(dict(t, files=local), slc_dir=tmp) + shutil.rmtree(tmp, ignore_errors=True) + return r + + +def kepler_stream(share, out, procs): + """Stream every star of the list into out (JSONL), skipping stars already there.""" + from concurrent.futures import ProcessPoolExecutor + ts = json.load(open(share or os.path.join(kepler_ROOT, "targets.json"))) + path = os.path.join(kepler_HERE, out) + done = set() + if os.path.exists(path): + done = {json.loads(ln)["kic"] for ln in open(path) if ln.strip()} + todo = [t for t in ts if t["kic"] not in done] + print("%d stars to search (%d done)" % (len(todo), len(done)), flush=True) + with ProcessPoolExecutor(procs) as ex, open(path, "a") as fh: + for r in ex.map(kepler_stream_star, todo): + if r: + fh.write(json.dumps(r, default=float) + "\n") + fh.flush() + + +def kepler_report(paths): + # a star counts once when two runs overlap + seen, res = set(), [] + for p in paths: + for ln in open(p): + if ln.strip(): + r = json.loads(ln) + if r["kic"] not in seen: + seen.add(r["kic"]) + res.append(r) + kepler_summary(res) + for r in res: + for k in r["kois"]: + if k["fap"] < 0.01: + print(" KIC %s %s P %.4f d: %d of %d flashes within 2.5 cadences of one phase, FAP %.4f" + % (r["kic"], k["koi"], k["period"], k["n_cluster"], r["n_flash"], k["fap"])) + return res + + +def kepler_record(paths): + """Record one row per star with its lowest KOI false-alarm probability.""" + res = kepler_report(paths) + tested = [k for r in res for k in r["kois"] if r["n_flash"] >= 3 and k["period"] > 0] + below = sum(1 for k in tested if k["fap"] < 0.01) + floor = sum(1 for k in tested if k["fap"] <= 1 / 401.0 + 1e-9) + core.record_search( + "kepler_sc_glints", "Specular glints at KOI periods, Kepler short cadence", + archive="MAST Kepler short-cadence light curves (STScI AWS mirror)", release="DR25 light curves", + selection="%d hosts of confirmed and candidate KOIs with short cadence" % len(res), code="seti.py flashes kepler", + params=dict(flash_sigma=5, max_cadences=3, clean_window=4, phase_window_cadences=2.5, null_draws=400), + n_targets=len(res), + null_summary="%d KOIs on stars with three or more flashes: %d below FAP 0.01 against at most %.1f, %d at the " + "1/401 floor against at most %.1f" % (len(tested), below, 0.01 * len(tested), floor, + len(tested) / 401.0), + sensitivity="flashes of 5 robust deviations lasting 1-3 cadences (59-177 s); %.0f star-days, %d flashes" + % (sum(r["days"] for r in res), sum(r["n_flash"] for r in res)), + result="no KOI period gathers flashes at one phase beyond chance", + ledger="Specular glints, Kepler short cadence") + core.clear_targets("kepler_sc_glints") + core.record_targets("kepler_sc_glints", [ + dict(target="kic:%s" % r["kic"], stat=float(r["n_flash"]), unit="flashes", + p=min((k["fap"] for k in r["kois"]), default=None), + note="%.0f days; lowest KOI false-alarm probability over its folded periods" % r["days"]) for r in res]) + + +def kepler_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("targets", "fetch", "search", "stream", "split", "report", "record")) + p.add_argument("paths", nargs="*") + p.add_argument("--threads", type=int, default=4) + p.add_argument("--list") + p.add_argument("--out", default="kepler_glints.json") + p.add_argument("--procs", type=int, default=2) + a = p.parse_args() + if a.mode == "targets": + kepler_targets() + elif a.mode == "fetch": + kepler_fetch(a.threads, a.list) + elif a.mode == "stream": + kepler_stream(a.list, a.out, a.procs) + elif a.mode == "split": + # alternate stars into two shares by short-cadence volume + ts = sorted(json.load(open(os.path.join(kepler_ROOT, "targets.json"))), key=lambda t: -len(t["files"])) + for i in range(2): + json.dump(ts[i::2], open(os.path.join(kepler_ROOT, "share%d.json" % i), "w")) + print("two shares of %d and %d stars" % (len(ts[0::2]), len(ts[1::2]))) + elif a.mode == "report": + kepler_report(a.paths) + elif a.mode == "record": + kepler_record(a.paths) + else: + kepler_search(a.list, a.out, a.procs) + + +def kepler_cli(): + quiet_warnings() + kepler_main() + + +# -------------------------------------------------------------------------------------------------------------- + +asteroids_DOC = r"""Asteroid glints in ALCDEF: spikes above the rotational model recurring in phase, against draws and fades as null; injection recovery. + + python -I seti.py flashes asteroids parse + python -I seti.py flashes asteroids inject [--groups 300] + python -I seti.py flashes asteroids search [--procs 2] [--out alcdef_glints.json]""" + +asteroids_ROOT = os.environ.get("ALCDEF_ROOT", core.data("alcdef")) +asteroids_LCDB = os.environ.get("LCDB", core.data("lcdb", "lc_summary_pub.txt")) +asteroids_HERE = core.RESULTS +# fractional period uncertainty per LCDB quality code +asteroids_FRAC = {"3": 1e-4, "3-": 3e-4, "2+": 1e-3, "2": 2e-3} + + +def asteroids_data_rows(path): + """Row index of the first data line after '# Data' in a PDS4 CSV.""" + with open(path, encoding="latin-1") as f: + for i, line in enumerate(f): + if line.startswith("# Data"): + return i + 1 + raise ValueError(path) + + +def asteroids_parse(): + import pandas as pd + base = os.path.join(asteroids_ROOT, "gbo.ast.alcdef-database_V1_0", "data") + pts = [] + for p in sorted(glob.glob(os.path.join(base, "*", "alcdef_lcdata-*.csv"))): + d = pd.read_csv(p, skiprows=asteroids_data_rows(p), header=None, names=["num", "name", "mdid", "jd", "mag", "err"], + dtype={"num": str, "name": str}, encoding="latin-1", low_memory=False) + pts.append(d[["mdid", "jd", "mag", "err"]]) + d = pd.concat(pts, ignore_index=True) + d = d.sort_values(["mdid", "jd"], kind="stable") + np.savez(os.path.join(asteroids_ROOT, "alcdef.npz"), mdid=d["mdid"].to_numpy(np.int64), jd=d["jd"].to_numpy(np.float64), + mag=d["mag"].to_numpy(np.float32), err=d["err"].to_numpy(np.float32)) + cols = ["ID", "Submitter", "ObjNumber", "ObjName", "Desig", "Facility", "MPCCode", "Instrument", "Detector", + "ObsLong", "ObsLat", "SessionDateTime", "ObjRA", "ObjDec", "Epoch", "Phase", "PABL", "PABB", "Filter", + "MagBand", "CIBand", "CIObject", "CICorr", "DiffMags", "DiffZeroMag", "MagStd", "ExpJD", "Exposure"] + meta = {} + for p in sorted(glob.glob(os.path.join(base, "*", "alcdef_metadata-*.csv"))): + m = pd.read_csv(p, skiprows=asteroids_data_rows(p), header=None, dtype=str, encoding="latin-1", low_memory=False) + m = m.iloc[:, :len(cols)] + m.columns = cols + for r in m.itertuples(index=False): + meta[int(r.ID)] = dict(num=r.ObjNumber, name=r.ObjName, desig=r.Desig, sub=r.Submitter, fac=r.Facility, + tel=r.Instrument, when=r.SessionDateTime, phase=r.Phase, filt=r.Filter, + band=r.MagBand, exp=r.Exposure, mpc=r.MPCCode) + json.dump(meta, open(os.path.join(asteroids_ROOT, "sessions.json"), "w")) + print("%d points in %d sessions (%d metadata records)" % (len(d), d["mdid"].nunique(), len(meta))) + + +def asteroids_lcdb(): + """LCDB number or name -> (period h, U code, diameter km).""" + out = {} + with open(asteroids_LCDB, encoding="latin-1") as f: + lines = f.read().splitlines() + for ln in lines[5:]: + if len(ln) < 190: + continue + per, u = ln[145:158].strip(), ln[187:190].strip() + if not per or u not in asteroids_FRAC: + continue + try: + per = float(per) + except ValueError: + continue + try: + dia = float(ln[88:96]) + except ValueError: + dia = float("nan") + num, name = ln[0:10].strip(), ln[10:41].strip() + rec = (per, u, dia) + if num and num != "0": + out["n" + num.lstrip("0")] = rec + if name: + out["s" + name.lower()] = rec + return out + + +def asteroids_running_median(t, y, w): + lo = np.searchsorted(t, t - w / 2) + hi = np.searchsorted(t, t + w / 2, side="right") + return np.array([np.median(y[a:b]) for a, b in zip(lo, hi)]) + + +def asteroids_fourier_model(t, y, P, order): + """Robust Fourier fit in rotational phase plus a linear term, or None.""" + ph = 2 * np.pi * (t - t[0]) / P + cols = [np.ones_like(t), (t - t.mean())] + for k in range(1, order + 1): + cols += [np.cos(k * ph), np.sin(k * ph)] + A = np.array(cols).T + keep = np.ones(len(t), bool) + for _ in range(5): + if keep.sum() < A.shape[1] + 5: + return None + c, *_ = np.linalg.lstsq(A[keep], y[keep], rcond=None) + r = y - A @ c + s = 1.4826 * np.median(np.abs(r[keep] - np.median(r[keep]))) + new = np.abs(r) < 3 * max(s, 1e-4) + if (new == keep).all(): + break + keep = new + return A @ c + + +def asteroids_events(t, flag, gap): + """Mean times of merged runs of flagged points.""" + idx = np.nonzero(flag)[0] + out = [] + run = [] + for i in idx: + if run and t[i] - t[run[-1]] > gap: + out.append(float(np.mean(t[run]))) + run = [] + run.append(i) + if run: + out.append(float(np.mean(t[run]))) + return out + + +def asteroids_session_events(t, y, e, P_d): + """Spike and fade times of one session, its spacing and robust scatter.""" + dt = float(np.median(np.diff(t))) + span = t[-1] - t[0] + model = None + if span >= 0.8 * P_d: + order = int(min(6, max(2, len(t) // 8))) + model = asteroids_fourier_model(t, y, P_d, order) + if model is None: + w = float(np.clip(P_d / 10, 5 * dt, 1 / 24)) + model = asteroids_running_median(t, y, w) + r = y - model + s = 1.4826 * np.median(np.abs(r - np.median(r))) + thr = np.maximum(np.maximum(5 * s, 3 * np.where(e > 0, e, 0)), 0.05) + spikes = asteroids_events(t, r < -thr, 2.5 * dt) + fades = asteroids_events(t, r > thr, 2.5 * dt) + return spikes, fades, dt, float(s) + + +def asteroids_max_cluster(times, P, tol): + if len(times) < 2: + return len(times) + ph = np.mod(np.asarray(times) / P, 1.0) + d = np.abs(ph[:, None] - ph[None, :]) + d = np.minimum(d, 1 - d) + return int((d < tol / P).sum(axis=1).max()) + + +def asteroids_group_test(args): + """One body's session group: largest phase cluster of spikes and fades against random draws.""" + key, P_d, frac, sess, rng_seed = args + rng = np.random.default_rng(rng_seed) + allt = np.concatenate([s["t"] for s in sess]) + dt = float(np.median([s["dt"] for s in sess])) + tol = max(0.75 * dt, 3 / 1440) + out = dict(key=key, period_h=P_d * 24, n_sessions=len(sess), n_points=int(len(allt)), tol_min=tol * 1440, + mdids=[s["mdid"] for s in sess]) + for kind in ("spikes", "fades"): + ev = [x for s in sess for x in s[kind]] + out["n_" + kind] = len(ev) + best = None + for mult in (1.0, 0.5): + Pt = P_d * mult + m = asteroids_max_cluster(ev, Pt, tol) + if m < 3: + continue + draws = np.array([asteroids_max_cluster(rng.choice(allt, len(ev), replace=False), Pt, tol) for _ in range(2000)]) + p = float((np.sum(draws >= m) + 1) / (len(draws) + 1)) + if best is None or p < best[2]: + best = (mult, m, p) + if best: + out[kind] = dict(mult=best[0], cluster=best[1], p=best[2]) + return out + + +def asteroids_load_sessions(keep_flux=False): + """Sessions passing the cuts, grouped by body.""" + z = np.load(os.path.join(asteroids_ROOT, "alcdef.npz")) + meta = json.load(open(os.path.join(asteroids_ROOT, "sessions.json"))) + per = asteroids_lcdb() + mdid, jd, mag, err = z["mdid"], z["jd"], z["mag"], z["err"] + cut = np.nonzero(np.diff(mdid))[0] + 1 + starts = np.concatenate([[0], cut]) + ends = np.concatenate([cut, [len(mdid)]]) + bodies = {} + nsess = 0 + seen_t = {} + ndup = 0 + for a, b in zip(starts, ends): + if b - a < 20: + continue + m = meta.get(str(int(mdid[a]))) + if not m: + continue + num = str(m["num"]).strip().lstrip("0") + rec = per.get("n" + num) if num and num not in ("-9", "-", "nan") else None + if rec is None: + rec = per.get("s" + str(m["name"]).strip().lower()) + if rec is None: + continue + t = jd[a:b] + y = mag[a:b].astype(float) + e = err[a:b].astype(float) + ok = np.isfinite(t) & np.isfinite(y) & (y > -90) & (y < 90) + t, y, e = t[ok], y[ok], e[ok] + if len(t) < 20: + continue + o = np.argsort(t) + t, y, e = t[o], y[o], e[o] + keep = np.concatenate([[True], np.diff(t) > 0]) + t, y, e = t[keep], y[keep], e[keep] + if len(t) < 20 or np.median(np.diff(t)) > 15 / 1440: + continue + # ALCDEF repeats sessions under new IDs; mostly shared observation times mark copies + key = "n" + num if num and num not in ("-9", "-", "nan") else "s" + str(m["name"]).strip().lower() + stamps = set(np.round(t * 86400 / 2).astype(np.int64).tolist()) + held = seen_t.setdefault(key, set()) + if len(stamps & held) > 0.5 * len(stamps): + ndup += 1 + continue + held |= stamps + P_d = rec[0] / 24.0 + spikes, fades, dt, s = asteroids_session_events(t, y, e, P_d) + nsess += 1 + rec_s = dict(mdid=int(mdid[a]), t=t, dt=dt, spikes=spikes, fades=fades, scatter=s) + if keep_flux: + rec_s.update(y=y, e=e) + bodies.setdefault(key, dict(P=P_d, frac=asteroids_FRAC[rec[1]], dia=rec[2], name=str(m["name"]).strip(), + sess=[]))["sess"].append(rec_s) + print("%d sessions on %d bodies with LCDB periods (%d duplicate sessions dropped)" % (nsess, len(bodies), ndup)) + return bodies + + +def asteroids_make_groups(bodies): + """Session groups at most 10 d long within the period's phase tolerance.""" + groups = [] + seed = 0 + for key, bd in bodies.items(): + ss = sorted(bd["sess"], key=lambda s: s["t"][0]) + group = [] + for s in ss: + if group: + span = s["t"][-1] - group[0]["t"][0] + tol = max(0.75 * np.median([g["dt"] for g in group + [s]]), 3 / 1440) + if span > 10 or span * bd["frac"] > tol: + groups.append((key, bd["P"], bd["frac"], group, seed)) + seed += 1 + group = [] + group.append(s) + if group: + groups.append((key, bd["P"], bd["frac"], group, seed)) + seed += 1 + return groups + + +def asteroids_target_of(key, bd): + return "mpc:" + (key[1:] if key.startswith("n") else bd["name"]) + + +def asteroids_search(procs, outname, sensitivity=None): + bodies = asteroids_load_sessions() + groups = asteroids_make_groups(bodies) + nspk = sum(len(s["spikes"]) for bd in bodies.values() for s in bd["sess"]) + nfad = sum(len(s["fades"]) for bd in bodies.values() for s in bd["sess"]) + tasks = [x for x in groups if sum(len(s["spikes"]) for s in x[3]) >= 3 or sum(len(s["fades"]) for s in x[3]) >= 3] + print("%d spike events and %d fade events; %d session groups hold three or more of either" % (nspk, nfad, len(tasks))) + if procs > 1: + from multiprocessing import Pool + with Pool(procs) as pool: + res = pool.map(asteroids_group_test, tasks, chunksize=4) + else: + res = [asteroids_group_test(x) for x in tasks] + json.dump(res, open(os.path.join(asteroids_HERE, outname), "w")) + summ = {} + for kind in ("spikes", "fades"): + ps = [r[kind]["p"] for r in res if kind in r] + summ[kind] = dict(clusters=len(ps), p01=sum(p < 0.01 for p in ps), p001=sum(p < 0.001 for p in ps)) + print("%s: %d groups with a phase cluster of three or more; %d at p < 0.01, %d at p < 0.001" + % (kind, len(ps), summ[kind]["p01"], summ[kind]["p001"])) + top = sorted([r for r in res if "spikes" in r], key=lambda r: (r["spikes"]["p"], -r["spikes"]["cluster"]))[:15] + for r in top: + print(" %s P %.3f h: %d of %d spikes within %.1f min of one phase (x%.1f period), p %.4f; fades %s; %d sessions" + % (r["key"], r["period_h"], r["spikes"]["cluster"], r["n_spikes"], r["tol_min"], r["spikes"]["mult"], + r["spikes"]["p"], r.get("fades", {}).get("p", "-"), r["n_sessions"])) + asteroids_record(bodies, res, summ, sensitivity) + + +def asteroids_record(bodies, res, summ, sensitivity=None): + """Record the run with one row per body.""" + best = {} + for r in res: + if "spikes" in r: + best[r["key"]] = min(best.get(r["key"], 1.0), r["spikes"]["p"]) + rows = [] + for key, bd in bodies.items(): + n = sum(len(s["spikes"]) for s in bd["sess"]) + rows.append(dict(target=asteroids_target_of(key, bd), stat=n, p=best.get(key), + note="%d sessions, %d spike events, period %.4f h" % (len(bd["sess"]), n, bd["P"] * 24))) + sid = "alcdef_glints_" + time.strftime("%Y%m%d") + db = core.connect() + core.record_search(sid, "Specular glints on asteroids", archive="ALCDEF (PDS SBN gbo.ast.alcdef-database)", + release="V1.0, 2021 snapshot; periods LCDB October 2023", + selection="sessions of 20 or more points at 15 min or less spacing on bodies with an LCDB " + "period of U 2 or better; duplicate sessions dropped", + code=os.path.abspath(__file__), entry="asteroids", + params=dict(spike_sigma=5, spike_err=3, spike_mag=0.05, tol="max(0.75 spacing, 3 min)", + group_days=10, draws=2000, folds=[1.0, 0.5]), + n_targets=len(rows), null_summary=summ, sensitivity=sensitivity, + result="no body with spikes recurring at its period at p < 0.01; fades give %d groups" + % summ["fades"]["p01"], + ledger="Specular glints on asteroids", db=db) + core.record_targets(sid, rows, db=db) + db.close() + print("recorded %d bodies under %s" % (len(rows), sid)) + + +def asteroids_inject(n_groups, amps): + """Recovery of a glint brightening one rotational phase every rotation.""" + bodies = asteroids_load_sessions(keep_flux=True) + groups = asteroids_make_groups(bodies) + rng = np.random.default_rng(7) + ok = [g for g in groups if sum(s["t"][-1] - s["t"][0] for s in g[3]) >= 3 * g[1]] + pick = [ok[i] for i in rng.choice(len(ok), min(n_groups, len(ok)), replace=False)] + print("%d groups cover three or more rotations; injecting into %d" % (len(ok), len(pick))) + out = {} + for A in amps: + hit = 0 + for key, P_d, frac, sess, seed in pick: + phi0 = rng.random() + new = [] + for s in sess: + t, y, e = s["t"], s["y"].copy(), s["e"] + k = np.arange(np.floor(t[0] / P_d - phi0) - 1, np.ceil(t[-1] / P_d - phi0) + 2) + for tg in (k + phi0) * P_d: + j = int(np.argmin(np.abs(t - tg))) + if abs(t[j] - tg) < s["dt"] / 2: + y[j] -= A + spikes, fades, dt, sc = asteroids_session_events(t, y, e, P_d) + new.append(dict(mdid=s["mdid"], t=t, dt=dt, spikes=spikes, fades=fades, scatter=sc)) + r = asteroids_group_test((key, P_d, frac, new, seed)) + hit += "spikes" in r and r["spikes"]["p"] < 0.01 + out[A] = hit / len(pick) + print(" glint of %.2f mag in one exposure per rotation: recovered at p < 0.01 in %.0f per cent" + % (A, 100 * out[A])) + json.dump(out, open(os.path.join(asteroids_HERE, "alcdef_inject.json"), "w")) + return out + + +def asteroids_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("parse", "search", "inject")) + p.add_argument("--procs", type=int, default=1) + p.add_argument("--out", default="alcdef_glints.json") + p.add_argument("--groups", type=int, default=300) + a = p.parse_args() + if a.mode == "parse": + asteroids_parse() + elif a.mode == "search": + inj = os.path.join(asteroids_HERE, "alcdef_inject.json") + asteroids_search(a.procs, a.out, json.load(open(inj)) if os.path.exists(inj) else None) + else: + asteroids_inject(a.groups, (0.05, 0.1, 0.2, 0.5)) + + +def asteroids_cli(): + quiet_warnings() + asteroids_main() + + +# -------------------------------------------------------------------------------------------------------------- + +tophat_DOC = r"""Top-hat brightenings in TESS 20 s light curves within 30 pc: sharp-edged boxes beating a flare template by BIC 10; common-mode and dip nulls. + + python -I seti.py flashes tophat [--procs 4] + python -I seti.py flashes tophat record""" + + +def tophat_flare(t, t0, fwhm, amp): + """Davenport et al. (2014) flare template in FWHM units.""" + x = (t - t0) / fwhm + out = np.zeros_like(x) + r = (x > -1) & (x <= 0) + out[r] = 1 + 1.941 * x[r] - 0.175 * x[r] ** 2 - 2.246 * x[r] ** 3 - 1.125 * x[r] ** 4 + d = x > 0 + out[d] = 0.6890 * np.exp(-1.600 * x[d]) + 0.3030 * np.exp(-0.2783 * x[d]) + return amp * out + + +def tophat_one(p): + from astropy.io import fits + from scipy.ndimage import median_filter + from scipy.optimize import least_squares + try: + with fits.open(os.path.join(tess20_DL, p)) as h: + d = h[1].data + t, f, q = (np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"], int)) + sector = int(h[0].header.get("SECTOR", 0)) + except Exception: + return None + good = (q == 0) & np.isfinite(f) & np.isfinite(t) + t, f = t[good], f[good] + if len(f) < 5000: + return None + base = median_filter(f, size=1081, mode="nearest") # six hours of 20 s cadences + r = f / base - 1.0 + sig = 1.4826 * np.median(np.abs(r - np.median(r))) + events = [] + cs = np.concatenate([[0.0], np.cumsum(r)]) + for w in (30, 60, 90, 135, 180): # 10 to 60 min + box = (cs[w:] - cs[:-w]) / w + snr = box / (sig / math.sqrt(w)) + for sign in (1, -1): + v = sign * snr + idx = np.nonzero((v >= 7) & (v >= np.roll(v, 1)) & (v > np.roll(v, -1)))[0] + for i in idx: + tc = t[i + w // 2] + if any(abs(e["t"] - tc) < 0.03 and e["sign"] == sign for e in events): + continue + events.append(dict(t=float(tc), w=w, snr=float(v[i]), sign=sign, i0=int(i))) + out = [] + for e in sorted(events, key=lambda e: -e["snr"])[:40]: + a, b = max(e["i0"] - 3 * e["w"], 0), min(e["i0"] + 4 * e["w"], len(t)) + tt, rr = t[a:b], e["sign"] * r[a:b] + if len(tt) < 2 * e["w"]: + continue + def box_model(pp): + t1, t2, amp, c0 = pp + return np.where((tt >= t1) & (tt <= t2), amp, 0.0) + c0 + t1g, t2g = t[e["i0"]], t[min(e["i0"] + e["w"], len(t) - 1)] + best_box = None + for d1 in np.linspace(-0.5, 0.5, 11) * e["w"] * 20 / 86400: + for d2 in np.linspace(-0.5, 0.5, 11) * e["w"] * 20 / 86400: + pp = [t1g + d1, t2g + d2, 0.0, 0.0] + inside = (tt >= pp[0]) & (tt <= pp[1]) + if inside.sum() < 5: + continue + pp[3] = float(np.median(rr[~inside])) if (~inside).sum() > 5 else 0.0 + pp[2] = float(np.mean(rr[inside]) - pp[3]) + chi = float(np.sum((rr - box_model(pp)) ** 2) / sig ** 2) + if best_box is None or chi < best_box[0]: + best_box = (chi, pp) + k = int(np.argmax(rr)) + res = least_squares(lambda pp: (tophat_flare(tt, pp[0], abs(pp[1]) + 1e-4, pp[2]) + pp[3] - rr) / sig, + [tt[k], e["w"] * 20 / 86400 / 3, float(rr[k]), 0.0], max_nfev=400) + chi_f = float(np.sum(res.fun ** 2)) + n = len(tt) + bic_box = best_box[0] + 4 * math.log(n) + bic_flare = chi_f + 4 * math.log(n) + # edge sharpness: cadences from 10 to 90 per cent of amplitude + pp = best_box[1] + def edge(t_edge, rising): + j = int(np.searchsorted(tt, t_edge)) + seg = rr[max(j - 6, 0):j + 6] + if len(seg) < 6 or pp[2] <= 0: + return 99 + lo_, hi_ = pp[3] + 0.1 * pp[2], pp[3] + 0.9 * pp[2] + between = np.sum((seg > lo_) & (seg < hi_)) + return int(between) + out.append(dict(t=e["t"], width_min=e["w"] / 3.0, snr=e["snr"], sign=e["sign"], amp=float(pp[2]), + bic_box=bic_box, bic_flare=bic_flare, edges=(edge(pp[0], True), edge(pp[1], False)), + dur_min=float((pp[1] - pp[0]) * 1440))) + return dict(file=p, sector=sector, sig=float(sig), events=out) + + +def tophat_main(procs): + files = sorted(os.listdir(tess20_DL)) + files = [x for x in files if x.endswith("_fast-lc.fits")] + from concurrent.futures import ProcessPoolExecutor + with ProcessPoolExecutor(procs) as ex: + R = [r for r in ex.map(tophat_one, files, chunksize=8) if r] + # common mode: events within 30 min on two or more other stars of the sector + by = {} + for r in R: + for e in r["events"]: + by.setdefault(r["sector"], []).append((e["t"], r["file"])) + for r in R: + for e in r["events"]: + others = {fn for tt, fn in by.get(r["sector"], []) if abs(tt - e["t"]) < 30 / 1440 and fn != r["file"]} + e["common"] = len(others) + def tophat(e): + return (e["bic_flare"] - e["bic_box"] > 10 and max(e["edges"]) <= 2 and e["common"] < 2) + pos = [(r, e) for r in R for e in r["events"] if e["sign"] > 0] + neg = [(r, e) for r in R for e in r["events"] if e["sign"] < 0] + tp, tn = [x for x in pos if tophat(x[1])], [x for x in neg if tophat(x[1])] + print("%d light curves; brightenings %d, dips %d at 7 sigma; top-hat brightenings %d, top-hat dips %d" + % (len(R), len(pos), len(neg), len(tp), len(tn))) + for r, e in sorted(tp, key=lambda x: -x[1]["snr"])[:25]: + print(" %s t %.4f: %.0f min, SNR %.1f, amplitude %.4f, edges %s cadences, BIC box %.0f flare %.0f" + % (r["file"], e["t"], e["dur_min"], e["snr"], e["amp"], e["edges"], e["bic_box"], e["bic_flare"])) + json.dump(dict(n=len(R), pos=len(pos), neg=len(neg), tophat_pos=[dict(file=r["file"], **e) for r, e in tp], + tophat_neg=[dict(file=r["file"], **e) for r, e in tn]), open(os.path.join(tess20_HERE, "tophat_events.json"), "w"), + indent=0) + + +def tophat_record(): + d = json.load(open(os.path.join(tess20_HERE, "tophat_events.json"))) + tg = {} + for t in json.load(open(os.path.join(tess20_HERE, "glint_targets.json"))): + tg[(int(t["sector"]), int(t["tic"]))] = t["gaia"] + files = [x for x in os.listdir(tess20_DL) if x.endswith("_fast-lc.fits")] + stars = {} + for fn in files: + m = re.match(r"s(\d+)_(\d+)_fast-lc\.fits", fn) + g = tg.get((int(m.group(1)), int(m.group(2)))) if m else None + if g: + stars.setdefault(g, []).append(fn) + best = {} + for e in d["tophat_pos"]: + m = re.match(r"s(\d+)_(\d+)_fast-lc\.fits", e["file"]) + g = tg.get((int(m.group(1)), int(m.group(2)))) + if g and (g not in best or e["snr"] > best[g]["snr"]): + best[g] = e + core.record_search( + "tess20_tophat", "Top-hat flares", archive="MAST TESS SPOC 20 s light curves", selection="stars within 30 pc", + code=os.path.abspath(__file__), entry="tophat", n_targets=len(stars), params=dict(snr=7, bic=10, max_edge_cadences=2), + null_summary="dips of the same shape: %d" % len(d["tophat_neg"]), + sensitivity="10-60 minute brightenings at 7 sigma of the binned noise", + ledger="Top-hat flares", + result="%d top-hat brightenings against %d top-hat dips among %d brightenings and %d dips at 7 sigma: the rate of " + "instrumental steps" % (len(d["tophat_pos"]), len(d["tophat_neg"]), d["pos"], d["neg"])) + core.clear_targets("tess20_tophat") + core.record_targets("tess20_tophat", [dict(target="gaia_dr3:%s" % g, stat=best[g]["snr"] if g in best else None, + unit="S/N of the strongest top-hat brightening", + note=("%s t %.4f, %.0f min" % (best[g]["file"], best[g]["t"], best[g]["dur_min"])) + if g in best else None) for g in stars]) + print("recorded %d stars" % len(stars)) + + +def tophat_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + tophat_record() + return + p = argparse.ArgumentParser() + p.add_argument("--procs", type=int, default=4) + a = p.parse_args() + tophat_main(a.procs) + + +clockwork_DOC = r"""Clockwork flares: de Jager H-test of Kepler (and TESS) flare times over 0.5-300 d against quarter-shuffled and pooled nulls, vetted for rotation, binaries and spacecraft timing. + + python -I seti.py flashes clockwork [search] [--procs 1] + python -I seti.py flashes clockwork null [--procs 4] + python -I seti.py flashes clockwork vet + python -I seti.py flashes clockwork record""" + +clockwork_MMAX = 20 +clockwork_CAT = os.environ.get("CLOCKWORK_CAT", "kepler") +clockwork_FMAX = 5.0 if clockwork_CAT == "tess" else 2.0 +clockwork_LABEL = "TIC" if clockwork_CAT == "tess" else "KIC" +clockwork_OUT = "clockwork_flares_tess.json" if clockwork_CAT == "tess" else "clockwork_flares.json" +clockwork_CADENCE = 2.0 / 1440 if clockwork_CAT == "tess" else 0.0204 + + +def clockwork_h(t, freqs): + """de Jager's H per frequency: max over m of Z2_m - 4m + 4, and its m.""" + n = len(t) + best_h = np.full(len(freqs), -np.inf) + best_m = np.zeros(len(freqs), int) + for fb in range(0, len(freqs), 2000): + fr = freqs[fb:fb + 2000] + ph = 2 * np.pi * np.outer(fr, t) + z = np.zeros(len(fr)) + bh = np.full(len(fr), -np.inf) + bm = np.zeros(len(fr), int) + for m in range(1, clockwork_MMAX + 1): + z += (np.cos(m * ph).sum(axis=1) ** 2 + np.sin(m * ph).sum(axis=1) ** 2) * 2.0 / n + h = z - 4 * m + 4 + up = h > bh + bh[up] = h[up] + bm[up] = m + best_h[fb:fb + 2000] = bh + best_m[fb:fb + 2000] = bm + return best_h, best_m + + +def clockwork_data(): + if clockwork_CAT == "tess": + p = core.data("tess_flares_yang2023.json") + if not os.path.exists(p): + from astroquery.vizier import Vizier + t = Vizier(row_limit=-1, columns=["TIC", "TimeS"], timeout=900).get_catalogs("J/A+A/669/A15/table1")[0] + json.dump([[int(r["TIC"]), float(r["TimeS"])] for r in t], open(p, "w")) + by = {} + for tic, ts in json.load(open(p)): + by.setdefault(tic, []).append((ts, int((ts - 1325.29) // 13.7))) + return by, {} + p = core.data("kepler_flares_yang2019.json") + if not os.path.exists(p): + from astroquery.vizier import Vizier + v = Vizier(row_limit=-1, columns=["**"], timeout=900) + t2 = v.get_catalogs("J/ApJS/241/29/table2")[0] + t1 = v.get_catalogs("J/ApJS/241/29/table1")[0] + fl = [dict(kic=int(r["KIC"]), q=int(re.sub(r"\D", "", str(r["Q"])) or -1), begin=float(r["Begin"]), end=float(r["End"])) + for r in t2] + st = [dict(kic=int(r["KIC"]), prot=num(r["Prot"])) for r in t1] + json.dump(dict(flares=fl, stars=st), open(p, "w")) + d = json.load(open(p)) + by = {} + for f in d["flares"]: + by.setdefault(f["kic"], []).append((f["begin"], f["q"])) + return by, {s["kic"]: s.get("prot") for s in d["stars"]} + + +def clockwork_star(args): + kic, ev, seed = args + ev = sorted(ev) + t = np.array([e[0] for e in ev]) + if seed is not None: + rng = np.random.default_rng(seed) + q = np.array([e[1] for e in ev]) + for qq in set(q.tolist()): + sel = q == qq + t[sel] = rng.uniform(t[sel].min(), t[sel].max(), sel.sum()) + span = t.max() - t.min() + freqs = np.arange(max(1 / 300.0, 3.0 / span), clockwork_FMAX, 1.0 / (4 * span)) + h, m = clockwork_h(t - t.min(), freqs) + i = int(np.argmax(h)) + return dict(kic=kic, n=len(t), span=float(span), h=float(h[i]), period=float(1 / freqs[i]), m=int(m[i]), n_freq=len(freqs)) + + +def clockwork_main(procs): + by, prot = clockwork_data() + jobs = [(k, v, None) for k, v in by.items() if len(v) >= 10] + from concurrent.futures import ProcessPoolExecutor + with ProcessPoolExecutor(procs) as ex: + res = list(ex.map(clockwork_star, jobs, chunksize=8)) + res.sort(key=lambda r: -r["h"]) + top = res[:40] + with ProcessPoolExecutor(procs) as ex: + sh = list(ex.map(clockwork_star, [(r["kic"], by[r["kic"]], s) for r in top for s in range(10)])) + shmax = {} + for r in sh: + shmax.setdefault(r["kic"], []).append(r["h"]) + for r in res: + r["prot"] = prot.get(r["kic"]) + rot = r["prot"] + r["rotation"] = bool(rot) and any(abs(r["period"] * k / rot - 1) < 0.05 or abs(r["period"] / (rot * k) - 1) < 0.05 + for k in (1, 2, 3)) + if r["kic"] in shmax: + r["shuffled"] = sorted(shmax[r["kic"]]) + r["p_shuffled"] = float(np.mean(np.array(shmax[r["kic"]]) >= r["h"])) + print("%d stars with 10 or more flares" % len(res)) + for r in top[:25]: + print(" " + clockwork_LABEL + " %d: %d flares over %.0f d; H %.1f at %.3f d (%d harmonics); Prot %s%s; shuffled best H %s" + % (r["kic"], r["n"], r["span"], r["h"], r["period"], r["m"], r["prot"], " (rotation)" if r["rotation"] else "", + ", ".join("%.0f" % v for v in r["shuffled"][-3:]))) + json.dump(res, open(core.results(clockwork_OUT), "w"), indent=0) + + +clockwork_POOL = {} + + +def clockwork_pool_init(): + by, _ = clockwork_data() + pool = {} + for kic, ev in by.items(): + for t, q in ev: + pool.setdefault(q, []).append((t, kic)) + clockwork_POOL.update({q: (np.array([x[0] for x in v]), np.array([x[1] for x in v])) for q, v in pool.items()}) + clockwork_POOL["by"] = by + + +def clockwork_pooled(args): + """Best H with each flare time replaced by another star's from the same quarter.""" + kic, seed = args + rng = np.random.default_rng(seed) + ev = clockwork_POOL["by"][kic] + t = np.empty(len(ev)) + for i, (t0, q) in enumerate(ev): + times, owners = clockwork_POOL[q] + others = times[owners != kic] + t[i] = others[rng.integers(len(others))] if len(others) else t0 + span = t.max() - t.min() + freqs = np.arange(max(1 / 300.0, 3.0 / span), clockwork_FMAX, 1.0 / (4 * span)) + return kic, float(clockwork_h(t - t.min(), freqs)[0].max()) + + +def clockwork_null(procs, n_top=40, n_real=20): + res = json.load(open(core.results(clockwork_OUT))) + top = res[:n_top] + from concurrent.futures import ProcessPoolExecutor + with ProcessPoolExecutor(procs, initializer=clockwork_pool_init) as ex: + sh = list(ex.map(clockwork_pooled, [(r["kic"], s) for r in top for s in range(n_real)])) + by, _ = clockwork_data() + pooled = {} + for k, h in sh: + pooled.setdefault(k, []).append(h) + for r in top: + r["pooled"] = sorted(pooled[r["kic"]]) + r["p_pooled"] = float(np.mean(np.array(pooled[r["kic"]]) >= r["h"])) + t = np.array(sorted(e[0] for e in by[r["kic"]])) + ph = (t / r["period"]) % 1.0 + hist = np.histogram(ph, bins=50, range=(0, 1))[0] + k = int(np.argmax(hist)) + d = np.abs(((ph - (k + 0.5) / 50) + 0.5) % 1.0 - 0.5) + r["in_peak"] = int(np.sum(d < 0.02)) + print("the %d highest stars against %d draws of other stars' flare times in the same quarters:" % (n_top, n_real)) + for r in top: + print(" " + clockwork_LABEL + " %-9d %4d flares H %7.1f at %8.3f d (%2d harmonics) %s; pooled best H %s; p %.2f; %d flares within 0.02 " + "of the peak phase" % (r["kic"], r["n"], r["h"], r["period"], r["m"], "rotation" if r["rotation"] else " ", + ", ".join("%.0f" % v for v in r["pooled"][-3:]), r["p_pooled"], r["in_peak"])) + json.dump(res, open(core.results(clockwork_OUT), "w"), indent=0) + + +clockwork_INSTRUMENT = ((("TESS orbit", 13.7), ("sector", 27.4)) if clockwork_CAT == "tess" else + (("Kepler orbit", 372.5), ("quarter", 93.0), ("monthly downlink", 31.0))) + + +def clockwork_vet(): + """Vet null-beating stars: distinct cycles in the peak, Kepler EB periods, spacecraft timing harmonics.""" + res = json.load(open(core.results(clockwork_OUT))) + by, _ = clockwork_data() + eb_p = core.data("tess_eb_prsa2022.json" if clockwork_CAT == "tess" else "kepler_eb_kirk2016.json") + if not os.path.exists(eb_p): + from astroquery.vizier import Vizier + idc, cat = ("TIC", "J/ApJS/258/16/tess-ebs") if clockwork_CAT == "tess" else ("KIC", "J/AJ/151/68/catalog") + t = Vizier(row_limit=-1, columns=[idc, "Per"], timeout=600).get_catalogs(cat)[0] + json.dump({str(int(r[idc])): float(r["Per"]) for r in t if r["Per"] is not np.ma.masked}, open(eb_p, "w")) + eb = json.load(open(eb_p)) + for r in res: + if "p_pooled" not in r or r["p_pooled"] > 0 or r["rotation"]: + continue + t = np.array(sorted(e[0] for e in by[r["kic"]])) + ph = (t / r["period"]) % 1.0 + k = int(np.argmax(np.histogram(ph, bins=50, range=(0, 1))[0])) + d = np.abs(((ph - (k + 0.5) / 50) + 0.5) % 1.0 - 0.5) + cyc = np.floor(t / r["period"])[d < 0.02] + r["peak_cycles"] = int(len(set(cyc.tolist()))) + r["cycles_spanned"] = int(np.floor(t.max() / r["period"]) - np.floor(t.min() / r["period"]) + 1) + pe = eb.get(str(r["kic"])) + r["eb_period"] = pe + r["eb"] = bool(pe) and any(abs(r["period"] * m / (pe * n) - 1) < 0.01 for m in (1, 2, 3) for n in (1, 2, 3)) + r["instrument"] = next((nm for nm, pi in clockwork_INSTRUMENT for n in (1, 2, 3, 4) + if abs(r["period"] / (pi / n) - 1) < 0.03 or abs(r["period"] / (pi * n) - 1) < 0.03), None) + r["burst"] = r["peak_cycles"] < 4 + # period refined over +-0.2 per cent; a clock keeps the phase scatter below 1e-3 + fr = np.linspace(1 / r["period"] * (1 - 2e-3), 1 / r["period"] * (1 + 2e-3), 801) + h = clockwork_h(t - t.min(), fr)[0] + P = 1 / fr[int(np.argmax(h))] + ph = ((t - t.min()) / P) % 1.0 + hist = np.histogram(ph, bins=100, range=(0, 1))[0] + c = (int(np.argmax(np.convolve(np.r_[hist, hist[:4]], np.ones(5), "valid")[:100])) + 2.5) / 100 + dd = ((ph - c + 0.5) % 1.0) - 0.5 + r["period_refined"] = float(P) + r["jitter"] = float(np.std(dd[np.abs(dd) < 0.03])) + r["jitter_floor"] = clockwork_CADENCE / (P * math.sqrt(12)) + print(" " + clockwork_LABEL + " %-9d %4d flares at %8.3f d: peak fed by %d of %d cycles%s; EB %s%s; spacecraft timing %s; phase scatter " + "%.4f (cadence floor %.4f)" + % (r["kic"], r["n"], P, r["peak_cycles"], r["cycles_spanned"], " (burst)" if r["burst"] else "", + "%.4f d" % pe if pe else "no", " (match)" if r["eb"] else "", r["instrument"] or "no", r["jitter"], + r["jitter_floor"])) + json.dump(res, open(core.results(clockwork_OUT), "w"), indent=0) + + +def clockwork_record(): + res = json.load(open(core.results(clockwork_OUT))) + top = [r for r in res if "p_pooled" in r] + beat = [r for r in top if r["p_pooled"] == 0.0 and not r["rotation"]] + + def vet(r): + if r.get("rotation"): + return "rotation period or a multiple" + if "burst" not in r: + return None + if r["burst"]: + return "a burst: the phase peak is fed by %d cycles" % r["peak_cycles"] + if r["eb"]: + return "eclipsing binary period" + if r["instrument"]: + return "spacecraft timing (%s)" % r["instrument"] + return "phase scatter %.4f of the period, above the 1e-3 of a clock" % r["jitter"] if r["jitter"] >= 1e-3 else \ + "open: phase scatter %.4f of the period" % r["jitter"] + clock = [r for r in beat if vet(r) and vet(r).startswith("open")] + tess = clockwork_CAT == "tess" + rid = "tess_clockwork_flares" if tess else "kepler_clockwork_flares" + lab = clockwork_LABEL + locked = [r for r in beat if vet(r) and vet(r).startswith("phase scatter")] + jit = [r["jitter"] for r in beat if "jitter" in r] + core.record_search( + rid, "Clockwork flares", + archive=("Yang et al. 2023 TESS flare catalogue (J/A+A/669/A15)" if tess else + "Yang and Liu 2019 Kepler flare catalogue (J/ApJS/241/29)"), + selection="%s stars with 10 or more catalogued flares" % ("TESS" if tess else "Kepler"), + code=os.path.abspath(__file__), entry="clockwork", + n_targets=len(res), params=dict(harmonics=clockwork_MMAX, periods_d=[1 / clockwork_FMAX, 300], null_draws=20), + null_summary="each of the %d highest stars' flare times replaced by other stars' flare times from the same %s, " + "20 times, which keeps the spacecraft's gaps" % (len(top), "TESS orbits" if tess else "quarters"), + sensitivity="a train of flare-like events phase-locked within about 2.5 per cent of its period", + ledger="Clockwork flares, TESS" if tess else "Clockwork flares", + result="%d of the %d highest stars beat all 20 of their null draws away from rotation: %d burst%s, %d at spacecraft " + "timing, %d eclipsing binaries, %d phase-locked with scatter %s of the period (%s %s)%s" + % (len(beat), len(top), sum(1 for r in beat if r.get("burst")), + "" if sum(1 for r in beat if r.get("burst")) == 1 else "s", + sum(1 for r in beat if not r.get("burst") and r.get("instrument")), + sum(1 for r in beat if not r.get("burst") and r.get("eb")), len(locked), + "%.4f-%.4f" % (min(jit), max(jit)) if jit else "-", lab, + ", ".join("%d at %.3f d" % (r["kic"], r["period_refined"]) for r in locked) or "none", + "; none below the 1e-3 of a clock" if not clock else + "; below the 1e-3 of a clock: " + ", ".join("%s %d" % (lab, r["kic"]) for r in clock))) + core.clear_targets(rid) + core.record_targets(rid, [dict( + target="%s:%d" % (lab.lower(), r["kic"]), stat=r["h"], p=r.get("p_pooled"), + unit="best H over %.1f-300 d" % (1 / clockwork_FMAX), vet=vet(r), + note="%d flares, best %.3f d with %d harmonics" % (r["n"], r.get("period_refined", r["period"]), r["m"])) for r in res]) + print("recorded %d stars" % len(res)) + + +def clockwork_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + clockwork_record() + return + p = argparse.ArgumentParser() + p.add_argument("mode", nargs="?", choices=("search", "null", "vet"), default="search") + p.add_argument("--procs", type=int, default=1) + a = p.parse_args() + if a.mode == "vet": + clockwork_vet() + return + (clockwork_null if a.mode == "null" else clockwork_main)(a.procs) + + +levels_DOC = r"""Discrete flux levels in TESS 20 s light curves within 30 pc: sharp 7-sigma steps between three or more revisited levels; common-mode steps and flares removed. + + python -I seti.py flashes levels [--procs 4] + python -I seti.py flashes levels record + python -I seti.py flashes levels stream --targets FILE [--part k/n] [--procs 3] (SPOC two-minute light curves of the star-sectors in FILE, a determinism targets list, read in memory, steps and levels into LEVELS_ROOT/levels2_of.jsonl)""" + +levels_W = 15 # 30 min of 2-min bins +levels_SNR = 7.0 +levels_DECAY = 0.5 # an up-step whose light falls by half its jump within the next window is a flare's rise +levels_DECAY_DAYS = 0.125 # steps down within three hours of a flare's rise are its decay + + +def levels_steps(tb, fb, w, gap, sharp_half=1): + """Steps in a binned light curve: 7-sigma jumps between window medians, each with its sharpest transition, and the levels between them.""" + from scipy.ndimage import median_filter + med = median_filter(fb, size=w, mode="nearest") + delta = np.full(len(fb), np.nan) + delta[w:-w] = med[w + w // 2:len(fb) - w + w // 2] - med[w - w // 2 - 1:len(fb) - w - w // 2 - 1] + # no steps across data gaps + for gi in np.nonzero(np.diff(tb) > gap)[0]: + delta[max(gi - w, 0):gi + w + 1] = np.nan + ok = np.isfinite(delta) + if ok.sum() < 3 * w: + return None + sd = 1.4826 * np.median(np.abs(delta[ok] - np.median(delta[ok]))) + sig_bin = 1.4826 * np.median(np.abs(np.diff(fb))) / math.sqrt(2) + steps = [] + order = np.argsort(-np.abs(np.nan_to_num(delta))) + for i in order: + if not ok[i] or abs(delta[i]) < levels_SNR * sd: + break + if any(abs(i - s["i"]) < 2 * w for s in steps): + continue + # sharpest consistent transition: ramps of 0-8 bins near i + best = None + for j in range(i - w // 2, i + w // 2 + 1): + a = fb[max(j - w, 0):j] + b = fb[j:j + w] + if len(a) < 5 or len(b) < 5: + continue + for half in (0, 1, 2, 4, 8): + lo, hi = j - half, j + half + if lo - w < 0 or hi + w > len(fb): + continue + pre, post = fb[lo - w:lo], fb[hi:hi + w] + m1, m2 = float(np.median(pre)), float(np.median(post)) + ramp = np.linspace(m1, m2, hi - lo + 2)[1:-1] if hi > lo else np.array([]) + model = np.concatenate([np.full(len(pre), m1), ramp, np.full(len(post), m2)]) + seg = fb[lo - w:hi + w] + chi = float(np.sum((seg - model) ** 2)) / sig_bin ** 2 - (len(seg) - 2 * w - 2 * half) + if best is None or chi < best[0]: + best = (chi, j, half, m2 - m1) + if best is None: + continue + # a flare rises sharply and decays: the light just after the transition against the window after it, over the jump + j, k = best[1], max(3, w // 5) + early = float(np.median(fb[j:j + k])) if j + k <= len(fb) else float("nan") + late = float(np.median(fb[j + w:j + 2 * w])) if j + 2 * w <= len(fb) else float("nan") + steps.append(dict(i=int(i), t=float(tb[j]), jump=float(best[3]), snr=float(abs(delta[i]) / sd), + half=int(best[2]), sharp=best[2] <= sharp_half, + decay=round((early - late) / best[3], 3) if best[3] and np.isfinite(early - late) else None)) + steps.sort(key=lambda s: s["t"]) + # segments between detected steps with their medians + edges = [0] + [s["i"] for s in steps] + [len(fb)] + segs = [dict(t0=float(tb[a]), t1=float(tb[b - 1]), level=float(np.median(fb[a:b])), n=int(b - a)) + for a, b in zip(edges[:-1], edges[1:]) if b - a >= 5] + return dict(sd=float(sd), sig_bin=float(sig_bin), steps=steps, segs=segs) + + +def levels_one(p): + from astropy.io import fits + try: + with fits.open(os.path.join(tess20_DL, p)) as h: + d = h[1].data + t, f, q = (np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"], int)) + sector = int(h[0].header.get("SECTOR", 0)) + except Exception: + return None + good = (q == 0) & np.isfinite(f) & np.isfinite(t) + t, f = t[good], f[good] + if len(f) < 5000: + return None + f = f / np.median(f) + k = np.floor((t - t[0]) / (2.0 / 1440)).astype(int) + n = np.bincount(k) + keep = n >= 4 + tb = (np.bincount(k, t) / np.maximum(n, 1))[keep] + fb = (np.bincount(k, f) / np.maximum(n, 1))[keep] + r = levels_steps(tb, fb, levels_W, 10.0 / 1440) + if r is None: + return None + for st in r["steps"]: + st["ramp_min"] = 2 * st["half"] * 2.0 + return dict(file=p, sector=sector, **r) + + +levels_ROOT = os.environ.get("LEVELS_ROOT", core.data("levels2")) + + +def levels_one_spoc(x): + """Steps and levels of one star-sector's SPOC two-minute light curve read in memory; None when it cannot be read.""" + try: + b = core.spoc_bytes(x["tic"], x["sector"]) + except Exception: + return None + if not b: + return dict(id=x["id"], status="no light curve") + try: + t, f, _ = core.read(b, columns=("PDCSAP_FLUX",)) + except Exception as e: + return dict(id=x["id"], status="error", error=repr(e)[:160]) + if len(f) < 2000: + return dict(id=x["id"], status="short") + r = levels_steps(t, f, levels_W, 10.0 / 1440) + if r is None: + return dict(id=x["id"], status="short") + for st in r["steps"]: + st["ramp_min"] = 2 * st["half"] * 2.0 + return dict(id=x["id"], status="ok", tic=x["tic"], sector=x["sector"], cam=x.get("cam"), ccd=x.get("ccd"), plx=x.get("plx"), **r) + + +def levels_stream(targets_path, part=None, procs=3): + """The star-sectors of a determinism targets list through levels_one_spoc on procs processes, one line each into ROOT/levels2_of.jsonl, past those any levels2 file under ROOT holds; the number left unread.""" + from concurrent.futures import ProcessPoolExecutor + os.makedirs(levels_ROOT, exist_ok=True) + targets = json.load(open(targets_path)) + k, n = (int(v) for v in part.split("/")) if part else (0, 1) + done = set() + for p in glob.glob(os.path.join(levels_ROOT, "levels2_*.jsonl")): + for ln in open(p, encoding="utf-8", errors="replace"): + try: + done.add(json.loads(ln)["id"]) + except (ValueError, KeyError): + pass + todo = [dict(x, id="tic:%d:s%d" % (x["tic"], x["sector"])) for x in targets[k::n]] + todo = [x for x in todo if x["id"] not in done] + path = os.path.join(levels_ROOT, "levels2_%dof%d.jsonl" % (k, n)) + print("%d star-sectors to read, %d read under the root" % (len(todo), len(done)), flush=True) + t0, m, miss = time.time(), 0, 0 + with ProcessPoolExecutor(procs) as ex, open(path, "a", encoding="utf-8") as fh: + for r in ex.map(levels_one_spoc, todo, chunksize=4): + if r is None: + miss += 1 + continue + fh.write(json.dumps(r, separators=(",", ":")) + "\n") + m += 1 + if m % 200 == 0: + fh.flush() + print("%d of %d, %.1f a minute, %d to read again" % (m, len(todo), 60 * m / (time.time() - t0), miss), flush=True) + print("%d star-sectors read, %d to read again" % (m, miss), flush=True) + return miss + + +def levels_count(segs, real, sd, sig_bin, w, cad): + """Levels of one light curve with the segments joined across rejected steps: (levels, levels revisited twice or more); a segment begins at a kept step when a real step's sharpest transition lies within half a window of its start.""" + # a segment starts where the window medians differ most, a real step at its sharpest transition, at most w // 2 bins away + near = (w // 2 + 1) * cad + times = [st["t"] for st in real] + merged = [] + for sg in segs: + if merged and not any(abs(sg["t0"] - t) <= near for t in times): + m = merged[-1] + m["level"] = (m["level"] * m["n"] + sg["level"] * sg["n"]) / (m["n"] + sg["n"]) + m["n"] += sg["n"] + m["t1"] = sg["t1"] + else: + merged.append(dict(sg)) + tol = 3 * max(sd, sig_bin / math.sqrt(w)) + groups = [] + for v in sorted(m["level"] for m in merged): + if groups and v - groups[-1][-1] < tol: + groups[-1].append(v) + else: + groups.append([v]) + centres = [float(np.mean(g)) for g in groups] + seq = [int(np.argmin([abs(m["level"] - c) for c in centres])) for m in merged] + visits = {g: sum(1 for a, b in zip([None] + seq[:-1], seq) if b == g and a != g) for g in set(seq)} + return len(centres), sum(1 for v in visits.values() if v >= 2) + + +def levels_main(procs): + from concurrent.futures import ProcessPoolExecutor + files = sorted(x for x in os.listdir(tess20_DL) if x.endswith("_fast-lc.fits")) + with ProcessPoolExecutor(procs) as ex: + res = [r for r in ex.map(levels_one, files, chunksize=4) if r] + by_sector = {} + for r in res: + for s in r["steps"]: + by_sector.setdefault(r["sector"], []).append((s["t"], r["file"])) + out = [] + for r in res: + for s in r["steps"]: + others = {fn for tt, fn in by_sector[r["sector"]] if abs(tt - s["t"]) < 1.0 / 24 and fn != r["file"]} + s["common"] = len(others) >= 2 + for s in r["steps"]: + s["flare"] = s["jump"] > 0 and s["decay"] is not None and s["decay"] > levels_DECAY + # the steps down within three hours after a flare's rise are its decay + rises = [s["t"] for s in r["steps"] if s["flare"]] + for s in r["steps"]: + if s["jump"] < 0 and any(0 < s["t"] - t0 <= levels_DECAY_DAYS for t0 in rises): + s["flare"] = True + real = [s for s in r["steps"] if s["sharp"] and not s["common"] and not s["flare"]] + nlev, revisited = levels_count(r["segs"], real, r["sd"], r["sig_bin"], levels_W, 2.0 / 1440) + out.append(dict(file=r["file"], sector=r["sector"], n_steps=len(r["steps"]), n_sharp=sum(s["sharp"] for s in r["steps"]), + n_common=sum(s["common"] for s in r["steps"]), n_flare=sum(s["flare"] and s["sharp"] and not s["common"] for s in r["steps"]), + n_real=len(real), levels=nlev, + revisited=revisited, multi=revisited >= 3, steps=real[:20], sd=r["sd"])) + n_multi = sum(o["multi"] for o in out) + print("%d light curves; sharp steps %d, %d of them common-mode, %d of flares, rises that decay by half within the next window and the steps down after them; " + "light curves with real sharp steps %d; with three or more levels each revisited %d" + % (len(out), sum(o["n_sharp"] for o in out), sum(o["n_common"] for o in out), sum(o["n_flare"] for o in out), + sum(1 for o in out if o["n_real"]), n_multi)) + up = sum(1 for o in out for s in o["steps"] if s["jump"] > 0) + dn = sum(1 for o in out for s in o["steps"] if s["jump"] < 0) + print("real sharp steps up %d, down %d" % (up, dn)) + for o in sorted(out, key=lambda o: (-o["revisited"], -o["n_real"]))[:25]: + print(" %s: %d real sharp steps, %d levels, %d revisited; steps %s" + % (o["file"][:40], o["n_real"], o["levels"], o["revisited"], + ", ".join("%.3f %+.4f (%.0f min)" % (s["t"], s["jump"], s["ramp_min"]) for s in o["steps"][:6]))) + json.dump(out, open(os.path.join(tess20_HERE, "levels.json"), "w")) + + +def levels_record(): + out = json.load(open(os.path.join(tess20_HERE, "levels.json"))) + tg = {} + for t in json.load(open(os.path.join(tess20_HERE, "glint_targets.json"))): + tg[(int(t["sector"]), int(t["tic"]))] = t["gaia"] + best = {} + for o in out: + m = re.match(r"s(\d+)_(\d+)_fast-lc\.fits", o["file"]) + g = tg.get((int(m.group(1)), int(m.group(2)))) if m else None + if g and (g not in best or o["revisited"] > best[g]["revisited"]): + best[g] = o + multi = [o for o in out if o["multi"]] + core.record_search( + "tess20_levels", "Flux in discrete levels", archive="MAST TESS SPOC 20 s light curves", selection="stars within 30 pc", + code=os.path.abspath(__file__), entry="levels", n_targets=len(best), + params=dict(bin_min=2, window_min=30, snr=levels_SNR, max_ramp_min=2, common_hours=1, level_sigma=3), + null_summary="common-mode steps on three or more stars of a sector: %d, and flares, rises that lose half their jump within the next " + "half hour and the steps down within three hours after them: %d, of %d sharp steps" + % (sum(o["n_common"] for o in out), sum(o["n_flare"] for o in out), sum(o["n_sharp"] for o in out)), + sensitivity="levels separated by 7 sigma of the 30-minute median noise, transitions of 2 minutes or less", + ledger="Flux in discrete levels", + result="%d light curves: %d with real sharp steps, %d with three or more levels each revisited%s" + % (len(out), sum(1 for o in out if o["n_real"]), len(multi), + (": " + ", ".join(o["file"][:22] for o in multi[:8])) if multi else "")) + core.clear_targets("tess20_levels") + core.record_targets("tess20_levels", [dict( + target="gaia_dr3:%s" % g, stat=float(o["revisited"]), unit="levels revisited at least twice", + note="%s: %d real sharp steps, %d levels" % (o["file"], o["n_real"], o["levels"])) for g, o in best.items()]) + print("recorded %d stars" % len(best)) + + +def levels_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + levels_record() + return + p = argparse.ArgumentParser() + p.add_argument("mode", nargs="?", choices=["stream"]) + p.add_argument("--procs", type=int, default=4) + p.add_argument("--targets") + p.add_argument("--part", default=None) + a = p.parse_args() + if a.mode == "stream": + sys.exit(1 if levels_stream(a.targets, a.part, a.procs) else 0) + levels_main(a.procs) + + +keplevels_DOC = r"""Discrete flux levels in Kepler long-cadence light curves of the DR25 stars: steps within one cadence between three or more revisited levels in a quarter; steps three other stars of the channel or twenty of the focal plane share removed. + + python -I seti.py flashes keplevels targets (the DR25 stellar table into ROOT/targets.json) + python -I seti.py flashes keplevels stream [--part k/n] [--sub j/m] [--threads 4] (each star's quarters read in memory, steps into ROOT/steps_of[_of].jsonl; exits 1 while stars remain unread) + python -I seti.py flashes keplevels analyse (every part: channel-common and focal-plane steps removed, levels counted) + python -I seti.py flashes keplevels vet (the stars with three or more revisited levels against the eclipsing-binary catalogue, their gravities, their planets' transits, SIMBAD and Gaia's variability classes) + python -I seti.py flashes keplevels record""" + +keplevels_ROOT = os.environ.get("KEPLEVELS_ROOT", core.data("keplevels")) +keplevels_W = 15 # cadences per window, 7.4 h +keplevels_CAD = 29.4244 / 1440 # long cadence, days +keplevels_COMMON = 3 # other stars of the channel stepping within 1.5 cadences +keplevels_PLANE = 20 # stars anywhere on the focal plane stepping within 1.5 cadences, three times the chance median of 6 + + +def keplevels_targets(): + """DR25 stellar table: every KIC star with Kepler data, into ROOT/targets.json.""" + os.makedirs(keplevels_ROOT, exist_ok=True) + rows = core.exoplanets("SELECT kepid, kepmag, teff, logg, radius FROM keplerstellar WHERE st_delivname = 'q1_q17_dr25_stellar'") + json.dump([dict(kepid=int(r["kepid"]), kepmag=num(r["kepmag"]), teff=num(r["teff"]), logg=num(r["logg"]), radius=num(r["radius"])) + for r in rows if num(r["kepid"])], open(os.path.join(keplevels_ROOT, "targets.json"), "w")) + print("%d DR25 stars" % len(rows)) + + +def keplevels_star(x): + """One star's quarters read in memory: steps and levels of each quarter's PDCSAP light curve with its channel; None when the listing or any quarter fails, so the star is read again on the next pass.""" + from astropy.io import fits + out = [] + keys = core.kepler_keys(x["kepid"], short=False) + if not keys: + return None + for key in keys: + b = core.get(core.S3 + key, timeout=300, retries=3, soft=True, pause=2) + if not b or not b.startswith(b"SIMPLE"): + return None + try: + with fits.open(io.BytesIO(b)) as h: + d = h[1].data + t, f, q = (np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["SAP_QUALITY"], int)) + quarter, channel = int(h[0].header.get("QUARTER", -1)), int(h[0].header.get("CHANNEL", -1)) + except Exception: + continue + good = (q == 0) & np.isfinite(f) & np.isfinite(t) + t, f = t[good], f[good] + if len(f) < 500: + continue + r = levels_steps(t, f / np.median(f), keplevels_W, 2.5 * keplevels_CAD) + if r is None: + continue + out.append(dict(q=quarter, ch=channel, sd=round(r["sd"], 7), sig=round(r["sig_bin"], 7), + steps=[[round(st["t"], 5), round(st["jump"], 6), round(st["snr"], 1), st["half"]] for st in r["steps"]], + segs=[[round(sg["t0"], 4), round(sg["t1"], 4), round(sg["level"], 6), sg["n"]] for sg in r["segs"]])) + return dict(kepid=x["kepid"], kepmag=x["kepmag"], quarters=out) + + +def keplevels_stream(part=None, threads=4, sub=None): + """Stream a part of the DR25 stars (and a sub-part j/m of it), appending one line per star to ROOT/steps_of[_of].jsonl, past every star any steps file under ROOT holds with quarters; the number of stars left unread.""" + targets = json.load(open(os.path.join(keplevels_ROOT, "targets.json"))) + k, n = (int(v) for v in part.split("/")) if part else (0, 1) + j, m_ = (int(v) for v in sub.split("/")) if sub else (0, 1) + path = os.path.join(keplevels_ROOT, "steps_%dof%d%s.jsonl" % (k, n, "_%dof%d" % (j, m_) if sub else "")) + done = set() + for p in glob.glob(os.path.join(keplevels_ROOT, "steps_*of*.jsonl")): + for ln in open(p, encoding="utf-8", errors="replace"): + try: + r = json.loads(ln) + except ValueError: + continue + if r.get("quarters"): + done.add(r["kepid"]) + todo = [x for x in targets[k::n][j::m_] if x["kepid"] not in done] + print("%d stars to read, %d read before under the root" % (len(todo), len(done)), flush=True) + t0, m, miss = time.time(), 0, 0 + with ThreadPoolExecutor(threads) as ex, open(path, "a", encoding="utf-8") as fh: + for r in ex.map(keplevels_star, todo): + if r is None: + miss += 1 + continue + fh.write(json.dumps(r, separators=(",", ":")) + "\n") + m += 1 + if m % 200 == 0: + fh.flush() + print("%d of %d, %.1f stars a minute, %d to read again" % (m, len(todo), 60 * m / (time.time() - t0), miss), flush=True) + print("%d stars read, %d to read again" % (m, miss), flush=True) + return miss + + +def keplevels_analyse(): + """Every part's steps: steps three other stars of the channel share within 1.5 cadences removed, levels counted per quarter.""" + best_row = {} + for p in sorted(glob.glob(os.path.join(keplevels_ROOT, "steps_*of*.jsonl"))): + for ln in open(p, encoding="utf-8", errors="replace"): + try: + r = json.loads(ln) + except ValueError: + continue + if r["kepid"] not in best_row or len(r["quarters"]) > len(best_row[r["kepid"]]["quarters"]): + best_row[r["kepid"]] = r # one row a star, the fullest where a star was read twice + rows = list(best_row.values()) + index, plane = {}, {} + for r in rows: + for qd in r["quarters"]: + for st in qd["steps"]: + index.setdefault((qd["q"], qd["ch"]), []).append((st[0], r["kepid"])) + if st[3] <= 1: + plane.setdefault(qd["q"], []).append(st[0]) + for v in index.values(): + v.sort() + plane = {q: np.sort(np.array(v)) for q, v in plane.items()} + out, n_steps, n_sharp, n_common, n_plane = [], 0, 0, 0, 0 + for r in rows: + best = None + for qd in r["quarters"]: + ts = index.get((qd["q"], qd["ch"]), []) + real = [] + for t, jump, snr, half in qd["steps"]: + n_steps += 1 + if half > 1: + continue + n_sharp += 1 + lo = np.searchsorted([x[0] for x in ts], t - 1.5 * keplevels_CAD) + others = {kid for tt, kid in ts[lo:] if tt <= t + 1.5 * keplevels_CAD and kid != r["kepid"]} + if len(others) >= keplevels_COMMON: + n_common += 1 + continue + pq = plane[qd["q"]] + # the spacecraft's events step many stars across the focal plane at once + if np.searchsorted(pq, t + 1.5 * keplevels_CAD, side="right") - np.searchsorted(pq, t - 1.5 * keplevels_CAD) - 1 >= keplevels_PLANE: + n_plane += 1 + continue + real.append(dict(t=t, jump=jump, snr=snr)) + segs = [dict(t0=a, t1=b, level=lv, n=nn) for a, b, lv, nn in qd["segs"]] + nlev, revisited = levels_count(segs, real, qd["sd"], qd["sig"], keplevels_W, keplevels_CAD) + row = dict(q=qd["q"], ch=qd["ch"], n_real=len(real), levels=nlev, revisited=revisited, steps=real[:12]) + if best is None or (revisited, len(real)) > (best["revisited"], best["n_real"]): + best = row + if best: + out.append(dict(kepid=r["kepid"], kepmag=r["kepmag"], n_quarters=len(r["quarters"]), **best)) + multi = [o for o in out if o["revisited"] >= 3] + up = sum(1 for o in out for st in o["steps"] if st["jump"] > 0) + print("%d stars, %d quarters; steps %d, sharp %d, %d of those shared on the channel and %d by %d or more stars of the focal plane; " + "stars with real sharp steps %d; with three or more levels each revisited in a quarter %d; real steps up %d, down %d" + % (len(out), sum(o["n_quarters"] for o in out), n_steps, n_sharp, n_common, n_plane, keplevels_PLANE, + sum(1 for o in out if o["n_real"]), len(multi), up, sum(1 for o in out for st in o["steps"]) - up)) + for o in sorted(multi, key=lambda o: (-o["revisited"], -o["n_real"]))[:25]: + print(" KIC %d (Kp %s) Q%d ch%d: %d real sharp steps, %d levels, %d revisited; %s" % ( + o["kepid"], o["kepmag"], o["q"], o["ch"], o["n_real"], o["levels"], o["revisited"], + ", ".join("%.3f %+.4f" % (st["t"], st["jump"]) for st in o["steps"][:6]))) + json.dump(dict(n_stars=len(out), n_steps=n_steps, n_sharp=n_sharp, n_common=n_common, n_plane=n_plane, rows=out, + params=dict(window=keplevels_W, snr=levels_SNR, common=keplevels_COMMON, plane=keplevels_PLANE)), + open(core.results("keplevels.json"), "w")) + + +keplevels_GIANT_LOGG = 3.5 # giants' oscillations and granulation move the window medians in steps + + +def keplevels_vet(): + """Each star with three or more revisited levels against the Kepler eclipsing-binary catalogue (Kirk et al. 2016), the DR25 gravity, its KOIs' transit times, its SIMBAD type and Gaia DR3's variability class, into results/keplevels_vet.json.""" + from astroquery.vizier import Vizier + d = json.load(open(core.results("keplevels.json"))) + multi = [o for o in d["rows"] if o["revisited"] >= 3] + stars = {x["kepid"]: x for x in json.load(open(os.path.join(keplevels_ROOT, "targets.json")))} + eb = set() + for t in Vizier(columns=["KIC"], row_limit=-1).get_catalogs("J/AJ/151/68"): + if "KIC" in t.colnames: + eb |= {int(x) for x in t["KIC"]} + ids = ",".join(str(o["kepid"]) for o in multi) + kois = core.exoplanets("SELECT kepid, kepoi_name, kepler_name, koi_period, koi_time0bk, koi_duration FROM cumulative " + "WHERE koi_disposition IN ('CANDIDATE', 'CONFIRMED') AND kepid IN (%s)" % ids) + sim = core.simbad("SELECT i.id AS kic, b.oid, b.main_id, b.otype FROM ident i JOIN basic b ON b.oid = i.oidref WHERE i.id IN (%s)" + % ",".join("'KIC %d'" % o["kepid"] for o in multi)) + by_kic = {int(x["kic"].split()[1]): x for x in sim} + gaia_ids = {x["oidref"]: x["id"].split()[-1] for x in core.simbad( + "SELECT oidref, id FROM ident WHERE oidref IN (%s) AND id LIKE 'Gaia DR3%%'" % ",".join(str(x["oid"]) for x in sim))} if sim else {} + classes = {str(x["source_id"]): (x["best_class_name"], float(x["best_class_score"])) for x in core.gaia( + "SELECT source_id, best_class_name, best_class_score FROM gaiadr3.vari_classifier_result WHERE source_id IN (%s)" + % ",".join(gaia_ids.values()))} if gaia_ids else {} + out = {} + for o in multi: + k, why, vet = o["kepid"], [], [] + x = by_kic.get(k) + name = x["main_id"] if x else "KIC %d" % k + if k in eb: + vet.append("eclipsing-binary") + why.append("in the Kepler eclipsing-binary catalogue") + logg = stars.get(k, {}).get("logg") + if logg is not None and logg < keplevels_GIANT_LOGG: + vet.append("evolved") + why.append("a giant (log g %.2f), whose oscillations and granulation step the window medians" % logg) + for kr in (r for r in kois if int(r["kepid"]) == k): + per, t0, dur = num(kr["koi_period"]), num(kr["koi_time0bk"]), num(kr["koi_duration"]) + if not (per and t0 and dur): + continue + near = [abs(((st["t"] - t0 + per / 2) % per) - per / 2) <= dur / 48 + 1.5 * keplevels_CAD for st in o["steps"]] + if sum(near) >= len(near) / 2: + vet.append("natural-source") + why.append("the transits of %s at %.4f d" % (kr["kepler_name"] or kr["kepoi_name"], per)) + if x and x["otype"] in ("CV*", "DN*", "No*", "NL*"): + vet.append("natural-type") + why.append("the cataclysmic variable %s" % name) + cl = classes.get(gaia_ids.get(x["oid"]) if x else None) + if cl and cl[1] >= 0.5: + vet.append("variable-star") + why.append("Gaia DR3 classes it %s (%.2f)" % cl) + elif x and x["otype"] in ("dS*", "gD*", "RR*", "Ce*", "Pu*", "LP*", "Mi*", "sr*"): + vet.append("variable-star") + why.append("a pulsating star (%s) in SIMBAD" % x["otype"]) + out[str(k)] = dict(name=name, vet=";".join(dict.fromkeys(vet)) or None, why="; ".join(why) or None, q=o["q"], ch=o["ch"], + n_real=o["n_real"], levels=o["levels"], revisited=o["revisited"], kepmag=o["kepmag"], logg=logg, + jumps=[round(st["jump"], 4) for st in o["steps"][:8]]) + left = [v for v in out.values() if not v["vet"]] + print("%d stars with three or more revisited levels: %d eclipsing binaries, %d giants, %d planets' transits, %d cataclysmic variables, " + "%d pulsators; %d left" % (len(out), sum("eclipsing-binary" in (v["vet"] or "") for v in out.values()), + sum("evolved" in (v["vet"] or "") for v in out.values()), + sum("natural-source" in (v["vet"] or "") for v in out.values()), + sum("natural-type" in (v["vet"] or "") for v in out.values()), + sum("variable-star" in (v["vet"] or "") for v in out.values()), len(left))) + for v in left: + print(" %s (Kp %s, log g %s) Q%d ch%d: %d real sharp steps, %d levels, %d revisited; jumps %s" % ( + v["name"], v["kepmag"], v["logg"], v["q"], v["ch"], v["n_real"], v["levels"], v["revisited"], v["jumps"])) + json.dump(out, open(core.results("keplevels_vet.json"), "w"), indent=1) + + +def keplevels_record(): + d = json.load(open(core.results("keplevels.json"))) + vets = json.load(open(core.results("keplevels_vet.json"))) + multi = [o for o in d["rows"] if o["revisited"] >= 3] + left = [o for o in multi if not vets[str(o["kepid"])]["vet"]] + core.record_search( + "kepler_levels", "Flux in discrete levels, Kepler", archive="Kepler DR25 long-cadence light curves (STScI AWS mirror)", + release="DR25", selection="the DR25 stellar table: %d stars with light curves" % d["n_stars"], + code=os.path.abspath(__file__), entry="keplevels", n_targets=d["n_stars"], n_unit="stars", params=d["params"], + outputs=[core.results("keplevels.json"), core.results("keplevels_vet.json")], + null_summary="steps that three or more other stars of the CCD channel share within 1.5 cadences: %d, and that %d or more stars of the " + "focal plane share: %d, of %d sharp steps" % (d["n_common"], d["params"]["plane"], d["n_plane"], d["n_sharp"]), + sensitivity="levels separated by 7 sigma of the 7.4-hour median noise, transitions within one cadence", + ledger="Flux in discrete levels, Kepler", + result="%d stars: %d with real sharp steps, %d with three or more levels each revisited in a quarter, %d of them unexplained%s" % ( + d["n_stars"], sum(1 for o in d["rows"] if o["n_real"]), len(multi), len(left), + (": " + ", ".join("KIC %d Q%d" % (o["kepid"], o["q"]) for o in left[:8])) if left else "")) + core.clear_targets("kepler_levels") + + def vet(o): + v = vets.get(str(o["kepid"])) + return (v["vet"], v["why"]) if v else (None, None) + core.record_targets("kepler_levels", [dict(target="kic:%d" % o["kepid"], stat=float(o["revisited"]), unit="levels revisited at least twice in a quarter", + vet=vet(o)[0], note="Q%d channel %d: %d real sharp steps, %d levels%s" % ( + o["q"], o["ch"], o["n_real"], o["levels"], "; " + vet(o)[1] if vet(o)[1] else "")) + for o in d["rows"] if o["n_real"]]) + print("recorded %d stars, rows for the %d with real sharp steps" % (d["n_stars"], sum(1 for o in d["rows"] if o["n_real"]))) + + +def keplevels_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=["targets", "stream", "analyse", "vet", "record"]) + p.add_argument("--part", default=None) + p.add_argument("--threads", type=int, default=4) + p.add_argument("--sub", default=None) + a = p.parse_args() + if a.mode == "stream": + sys.exit(1 if keplevels_stream(a.part, a.threads, a.sub) else 0) + else: + {"targets": keplevels_targets, "analyse": keplevels_analyse, "vet": keplevels_vet, "record": keplevels_record}[a.mode]() + + +determinism_DOC = r"""Determinism in light curves: each segment's residual, once the slow trend, up to three periodic signals and flares are removed, against IAAFT surrogates of the same power spectrum and flux distribution, at the native cadence and binned eightfold: the compressed length of its quantile symbols, its nonlinear prediction error and its time asymmetry; a candidate is more compressible or more predictable than its surrogates by 5 sigma, its asymmetry read beside it (flares carry asymmetry without predictability, chaos carries both), unshared by the stars of its sector and camera; a chaotic signal at the noise's level reaches 14 sigma in prediction binned, one at a third of it is not found. + + python -I seti.py flashes determinism targets --lists DIR [--plx 10] (TESS two-minute star-sectors of the Gaia nearby stars beyond parallax plx, nearest first, into ROOT/targets.json; DIR holds the all_targets_S lists as s.csv) + python -I seti.py flashes determinism stream [--part k/n] [--procs 8] [--gpu] (SPOC two-minute light curves read in memory, one line a star-sector into ROOT/stats_of.jsonl) + python -I seti.py flashes determinism local DIR [--procs 6] [--tag NAME] (every FITS light curve under DIR, 20 s or Kepler short cadence, into ROOT/stats_.jsonl) + python -I seti.py flashes determinism kepler_targets (every KOI host with a candidate or confirmed planet into ROOT/targets_kepler.json) + python -I seti.py flashes determinism kepler [--procs 10] (each host's long-cadence quarters read in memory, every segment on the CPU, into ROOT/stats_kepler.jsonl; exits 1 while stars remain unread) + python -I seti.py flashes determinism check (white and red noise, a chaotic signal, a coded on-off signal and flares through the same statistics) + python -I seti.py flashes determinism report""" + +determinism_ROOT = os.environ.get("DETERMINISM_ROOT", core.data("determinism")) +determinism_NSUR = 99 # surrogates a segment and level +determinism_ITERS = 40 # IAAFT iterations +determinism_LEVELS = 16 # quantile symbols for the compressed length +determinism_EMBED = 4 # embedding dimension of the nonlinear prediction +determinism_K = 4 # neighbours a prediction +determinism_QUERY = 3000 # predicted samples a series +determinism_LAGS = (1, 2, 4, 8, 16, 32) +determinism_BIN = 8 # cadences a sample at the coarse level +determinism_MIN_DAYS = 2.0 +determinism_GAP = 0.25 # days; a longer gap splits a segment +determinism_FLARE = 5.0 # robust sigma + + +def determinism_segments(t, f, cad, seed=0): + """Uniform segments of a light curve's residual: [(residual, info)] with the slow trend (half-day block medians), up to three periodic signals (each folded at its Lomb-Scargle peak and its phase-binned median subtracted) and flares (5 sigma brightenings and the half hour after) removed, flare and missing cadences refilled with noise of the residual's scatter.""" + from astropy.timeseries import LombScargle + o = np.argsort(t) + t, f = t[o], f[o] + cut = np.nonzero(np.diff(t) > determinism_GAP)[0] + 1 + out = [] + rng = np.random.default_rng(seed) + for a, b in zip(np.r_[0, cut], np.r_[cut, len(t)]): + tt, ff = t[a:b], f[a:b] + if len(tt) < 500 or tt[-1] - tt[0] < determinism_MIN_DAYS: + continue + pos = np.round((tt - tt[0]) / cad).astype(np.int64) + n = int(pos[-1]) + 1 + x = np.full(n, np.nan) + x[pos] = ff / np.median(ff) - 1.0 + fill = 1.0 - len(np.unique(pos)) / n + if fill > 0.3: + continue + x = x - science.block_median(x, max(5, int(0.5 / cad))) + grid = tt[0] + cad * np.arange(n) + ok = np.isfinite(x) + periods = [] + for _ in range(3): + ts, xs = grid[ok], x[ok] + if len(xs) > 20000: + k = max(1, len(xs) // 20000) + ts, xs = ts[::k], xs[::k] + fmin, fmax = 2.0 / (grid[-1] - grid[0]), min(0.5 / cad, 100.0) + freq = np.linspace(fmin, fmax, int(5 * (grid[-1] - grid[0]) * (fmax - fmin))) + pw = LombScargle(ts, xs).power(freq, method="fast") + j = int(np.argmax(pw)) + if not pw[j] > 30 * np.median(pw): + break + P = 1.0 / freq[j] + ph = ((grid - grid[0]) / P) % 1.0 + nb = int(np.clip(ok.sum() / 50, 20, 200)) + k = (ph * nb).astype(int) + med = np.array([np.nanmedian(x[k == i]) if np.any(ok & (k == i)) else 0.0 for i in range(nb)]) + x = x - np.interp(ph, (np.arange(nb) + 0.5) / nb, med, period=1.0) + periods.append([round(float(P), 6), round(float(pw[j]), 4)]) + s = core.robust_sigma(x[ok]) + hot = ok & (x > determinism_FLARE * s) + after = max(3, int(round(0.02 / cad))) + mask = np.convolve(hot.astype(float), np.ones(after + 2), mode="full")[1:n + 1] > 0 + events = int(np.sum(np.diff(np.r_[0, hot.astype(int)]) == 1)) + bad = mask | ~ok + x[bad] = rng.normal(0.0, s, int(bad.sum())) + out.append((x, dict(t0=round(float(grid[0]), 4), t1=round(float(grid[-1]), 4), n=n, fill=round(float(fill), 4), + masked=round(float(mask.mean()), 4), periods=periods, flares=events, sigma=float(s)))) + return out + + +def determinism_iaaft(x, n, iters, rng): + """n IAAFT surrogates of x: the amplitude spectrum imposed and the values rank-remapped in turn, ending on the exact values.""" + N = len(x) + amp = np.abs(np.fft.rfft(x)) + sx = np.sort(x) + Y = np.array([rng.permutation(x) for _ in range(n)]) + for _ in range(iters): + F = np.fft.rfft(Y, axis=1) + Y = np.fft.irfft(amp[None, :] * F / np.maximum(np.abs(F), 1e-30), N, axis=1) + np.put_along_axis(Y, np.argsort(Y, axis=1), np.broadcast_to(sx, Y.shape), axis=1) + return Y + + +def determinism_iaaft_torch(x, n, iters, seed, dev): + """determinism_iaaft on a torch device.""" + import torch + N = len(x) + xt = torch.as_tensor(x, dtype=torch.float32, device=dev) + amp = torch.abs(torch.fft.rfft(xt)) + sx = torch.sort(xt).values.expand(n, N).contiguous() + g = torch.Generator(device=dev).manual_seed(seed) + Y = xt[torch.argsort(torch.rand(n, N, generator=g, device=dev), dim=1)] + for _ in range(iters): + F = torch.fft.rfft(Y, dim=1) + Y = torch.fft.irfft(amp[None, :] * F / F.abs().clamp_min(1e-30), N, dim=1) + Y = torch.empty_like(Y).scatter_(1, torch.argsort(Y, dim=1), sx) + return Y + + +def determinism_window(x): + """Theiler window: the first lag where the autocorrelation falls below 1/e, within 5-50 samples.""" + y = x - x.mean() + n = 1 << int(np.ceil(np.log2(2 * len(y)))) + acf = np.fft.irfft(np.abs(np.fft.rfft(y, n)) ** 2, n)[:200] + acf = acf / max(acf[0], 1e-30) + below = np.nonzero(acf < 1 / math.e)[0] + return int(np.clip(below[0] if len(below) else 50, 5, 50)) + + +def determinism_asym(X): + """Time asymmetry of each row: the root sum of squares over lags of /^1.5, d the lagged difference.""" + rows = [] + for L in determinism_LAGS: + if L >= X.shape[1] // 10: + break + d = X[:, L:] - X[:, :-L] + rows.append(np.mean(d ** 3, axis=1) / np.maximum(np.mean(d ** 2, axis=1), 1e-30) ** 1.5) + return np.sqrt(np.sum(np.array(rows) ** 2, axis=0)) + + +def determinism_compress(X, edges, threads=4): + """zlib-compressed length (bytes) of each row's quantile symbols.""" + import zlib + S = np.searchsorted(edges, X).astype(np.uint8) + with ThreadPoolExecutor(threads) as ex: + return np.array(list(ex.map(lambda s: len(zlib.compress(s.tobytes(), 9)), S)), float) + + +def determinism_npe(X, qidx, w): + """Nonlinear prediction error of each row: the next value from the mean of the K nearest delay vectors more than w samples away, its RMS error over the row's scatter at the samples qidx.""" + from scipy.spatial import cKDTree + m, k = determinism_EMBED, determinism_K + out = [] + for x in X: + N = len(x) + E = np.stack([x[m - 1 - j:N - 1 - j] for j in range(m)], axis=1) + target = x[m:] + _, nb = cKDTree(E).query(E[qidx], k=k + 2 * w + 1) + far = np.abs(nb - qidx[:, None]) > w + rank = np.cumsum(far, axis=1) + use = far & (rank <= k) + cnt = use.sum(1) + pred = np.where(use, target[np.minimum(nb, len(target) - 1)], 0.0).sum(1) / np.maximum(cnt, 1) + good = cnt > 0 + out.append(math.sqrt(float(np.mean((target[qidx][good] - pred[good]) ** 2))) / max(float(np.std(x)), 1e-30)) + return np.array(out) + + +def determinism_npe_torch(X, qidx, w, dev, chunk=32): + """determinism_npe on a torch device for every row at once: distances by chunks of queries, near-in-time vectors set to infinity.""" + import torch + m, k = determinism_EMBED, determinism_K + B, N = X.shape + E = torch.stack([X[:, m - 1 - j:N - 1 - j] for j in range(m)], dim=2) + target = X[:, m:] + idx = torch.arange(E.shape[1], device=dev) + qi = torch.as_tensor(qidx, device=dev) + se = torch.zeros(B, device=dev, dtype=torch.float64) + for c in range(0, len(qi), chunk): + q = qi[c:c + chunk] + d = torch.cdist(E[:, q], E) + d.masked_fill_(((idx[None, :] - q[:, None]).abs() <= w)[None], float("inf")) + nb = torch.topk(d, k, dim=2, largest=False).indices + pred = torch.gather(target, 1, nb.reshape(B, -1)).reshape(B, len(q), k).mean(2) + se += ((target[:, q] - pred) ** 2).sum(1).double() + return (torch.sqrt(se / len(qi)) / X.std(dim=1, correction=0).double().clamp_min(1e-30)).cpu().numpy() + + +def determinism_level(x, seed, dev=None): + """One series against its surrogates: (value, surrogate mean, surrogate scatter, z) of the compressed length, the prediction error and the asymmetry.""" + rng = np.random.default_rng(seed) + w = determinism_window(x) + N = len(x) + qidx = np.sort(rng.choice(N - determinism_EMBED - 1, min(determinism_QUERY, N - determinism_EMBED - 1), replace=False)) + edges = np.quantile(x, np.arange(1, determinism_LEVELS) / determinism_LEVELS) + if dev is not None: + import torch + Y = determinism_iaaft_torch(x, determinism_NSUR, determinism_ITERS, seed, dev) + Xt = torch.cat([torch.as_tensor(x, dtype=torch.float32, device=dev)[None, :], Y]) + npe = determinism_npe_torch(Xt, qidx, w, dev) + X = Xt.cpu().numpy().astype(np.float64) + else: + X = np.vstack([x[None, :], determinism_iaaft(x, determinism_NSUR, determinism_ITERS, rng)]) + npe = determinism_npe(X, qidx, w) + stats = dict(comp=determinism_compress(X, edges), npe=npe, asym=determinism_asym(X)) + out = dict(w=w) + for key, v in stats.items(): + mu, sd = float(np.mean(v[1:])), float(np.std(v[1:], ddof=1)) + out[key] = [round(float(v[0]), 6), round(mu, 6), round(sd, 6), round((float(v[0]) - mu) / max(sd, 1e-12), 2)] + return out + + +def determinism_curve(t, f, cad, seed=0, dev=None): + """Every segment of a light curve at the native cadence and binned determinism_BIN-fold, with z combined over segments.""" + segs = [] + for i, (x, info) in enumerate(determinism_segments(t, f, cad, seed)): + info["native"] = determinism_level(x, seed + 101 * i, dev) + nb = len(x) // determinism_BIN + if nb >= 500: + info["coarse"] = determinism_level(x[:nb * determinism_BIN].reshape(nb, determinism_BIN).mean(1), seed + 101 * i + 7, dev) + segs.append(info) + Z = {} + for lev in ("native", "coarse"): + zs = [s[lev] for s in segs if lev in s] + if zs: + Z[lev] = [round(sum(z[key][3] for z in zs) / math.sqrt(len(zs)), 2) for key in ("comp", "npe", "asym")] + return dict(cad_s=round(cad * 86400, 2), segs=segs, Z=Z) + + +def determinism_lists(dirpath): + """{(tic, sector): (camera, ccd, tmag, ra, dec)} from the two-minute target lists s.csv under dirpath.""" + out = {} + for p in sorted(glob.glob(os.path.join(dirpath, "s[0-9][0-9][0-9].csv"))): + sector = int(os.path.basename(p)[1:4]) + for line in open(p, encoding="utf-8", errors="replace"): + v = line.strip().split(",") + if len(v) == 6 and v[0].isdigit(): + out[(int(v[0]), sector)] = (int(v[1]), int(v[2]), num(v[3]), float(v[4]), float(v[5])) + return out + + +def determinism_targets(lists, plx_min=10.0): + """TESS two-minute star-sectors of the Gaia Catalogue of Nearby Stars' sources beyond parallax plx_min, matched within 3 arcsec at the nearest of epochs 2000, 2016 and 2021 and within 2.5 mag of G, nearest first, into ROOT/targets.json.""" + from scipy.spatial import cKDTree + os.makedirs(determinism_ROOT, exist_ok=True) + rows = catalogues.gcns("source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag", "parallax > %g" % plx_min, maxrec=600000, timeout=1800) + print("%d nearby stars beyond parallax %g mas" % (len(rows), plx_min), flush=True) + L = determinism_lists(lists) + print("%d two-minute star-sectors in %s" % (len(L), lists), flush=True) + pos = {} + for (tic, sector), v in L.items(): + pos.setdefault(tic, (v[3], v[4], v[2])) + tics = np.array(list(pos)) + radec = np.array([pos[x][:2] for x in tics]) + tree = cKDTree(science.unit_vector(radec[:, 0], radec[:, 1]).T) + match = {} + for r in rows: + d, j = min(tree.query(science.unit_vector(*core.star_at(float(r["ra"]), float(r["dec"]), num(r["pmra"], 0.0), + num(r["pmdec"], 0.0), 2016.0, at)), k=1) + for at in (2000.0, 2016.0, 2021.0)) + if d < math.radians(3.0 / 3600) and abs((pos[tics[j]][2] or 99) - num(r["phot_g_mean_mag"], 99)) < 2.5: + tic = int(tics[j]) + if tic not in match or float(r["parallax"]) > match[tic][1]: + match[tic] = (r["source_id"], float(r["parallax"]), num(r["phot_g_mean_mag"])) + out = [dict(tic=tic, sector=sector, gaia=match[tic][0], plx=round(match[tic][1], 3), G=match[tic][2], cam=v[0], ccd=v[1]) + for (tic, sector), v in L.items() if tic in match] + out.sort(key=lambda r: (-r["plx"], r["tic"], r["sector"])) + json.dump(out, open(os.path.join(determinism_ROOT, "targets.json"), "w")) + print("%d star-sectors of %d stars" % (len(out), len({r["tic"] for r in out})), flush=True) + + +def determinism_one_spoc(x): + """One star-sector's SPOC two-minute light curve read in memory and its statistics on the CPU; None when unreadable.""" + try: + b = core.spoc_bytes(x["tic"], x["sector"]) + if not b: + return dict(x, status="no light curve") + t, f, _ = core.read(b, columns=("PDCSAP_FLUX",)) + if len(t) < 1000: + return dict(x, status="short") + cad = float(np.median(np.diff(t))) + if _DET_DEV.get("gpu"): + return dict(x, status="segments", cad=cad, segs=[(s.astype(np.float32), info) for s, info in + determinism_segments(t, f, cad, seed=x["tic"] % 100000)]) + return dict(x, status="ok", **determinism_curve(t, f, cad, seed=x["tic"] % 100000)) + except Exception as e: + return dict(x, status="error", error=repr(e)[:200]) + + +_DET_DEV = {} + + +def determinism_pool_init(gpu): + os.environ.setdefault("OMP_NUM_THREADS", "1") + _DET_DEV["gpu"] = gpu + + +def determinism_finish_gpu(r, dev): + """Statistics on the GPU for a star-sector whose segments a worker prepared.""" + segs = [] + seed = r["tic"] % 100000 + for i, (x, info) in enumerate(r.pop("segs")): + x = x.astype(np.float64) + info["native"] = determinism_level(x, seed + 101 * i, dev) + nb = len(x) // determinism_BIN + if nb >= 500: + info["coarse"] = determinism_level(x[:nb * determinism_BIN].reshape(nb, determinism_BIN).mean(1), seed + 101 * i + 7, dev) + segs.append(info) + Z = {} + for lev in ("native", "coarse"): + zs = [s[lev] for s in segs if lev in s] + if zs: + Z[lev] = [round(sum(z[key][3] for z in zs) / math.sqrt(len(zs)), 2) for key in ("comp", "npe", "asym")] + r.update(status="ok", cad_s=round(r.pop("cad") * 86400, 2), segs=segs, Z=Z) + return r + + +def determinism_done(): + done = set() + for p in glob.glob(os.path.join(determinism_ROOT, "stats_*.jsonl")): + for ln in open(p, encoding="utf-8", errors="replace"): + try: + r = json.loads(ln) + except ValueError: + continue + if r.get("status") in ("ok", "no light curve", "short"): + done.add(r["id"]) + return done + + +def determinism_stream(part=None, procs=8, gpu=False): + """Stream a part of the target star-sectors: workers read each light curve in memory and prepare its segments (and on the CPU its statistics); with gpu the surrogates and predictions run in this process on the GPU, the workers started by spawn so that none inherits its CUDA context.""" + import multiprocessing + from concurrent.futures import ProcessPoolExecutor + targets = json.load(open(os.path.join(determinism_ROOT, "targets.json"))) + k, n = (int(v) for v in part.split("/")) if part else (0, 1) + done = determinism_done() + todo = [dict(x, id="tic:%d:s%d" % (x["tic"], x["sector"])) for x in targets[k::n]] + todo = [x for x in todo if x["id"] not in done] + dev = None + if gpu: + import torch + dev = torch.device("cuda") + torch.cuda.set_per_process_memory_fraction(0.25) + path = os.path.join(determinism_ROOT, "stats_%dof%d.jsonl" % (k, n)) + print("%d star-sectors to read, %d done under the root, statistics on %s" % (len(todo), len(done), dev or "the CPU"), flush=True) + t0, m = time.time(), 0 + with ProcessPoolExecutor(procs, mp_context=multiprocessing.get_context("spawn"), initializer=determinism_pool_init, + initargs=(gpu,)) as ex, open(path, "a", encoding="utf-8") as fh: + for r in ex.map(determinism_one_spoc, todo, chunksize=1): + if r.get("status") == "segments": + r = determinism_finish_gpu(r, dev) + fh.write(json.dumps(r, separators=(",", ":")) + "\n") + m += 1 + if m % 50 == 0: + fh.flush() + print("%d of %d, %.1f a minute" % (m, len(todo), 60 * m / (time.time() - t0)), flush=True) + print("%d star-sectors written" % m, flush=True) + + +def determinism_one_file(path): + """One cached FITS light curve's statistics on the CPU.""" + name = os.path.basename(path) + try: + t, f, _ = core.read(open(path, "rb").read(), columns=("PDCSAP_FLUX",)) + if len(t) < 1000: + return dict(id=name, status="short") + cad = float(np.median(np.diff(t))) + seed = int(re.sub(r"\D", "", name)[-5:] or 0) + return dict(id=name, status="ok", **determinism_curve(t, f, cad, seed=seed)) + except Exception as e: + return dict(id=name, status="error", error=repr(e)[:200]) + + +def determinism_local(directory, procs=6, tag="local"): + """Every FITS light curve under a directory through determinism_curve on procs processes, into ROOT/stats_.jsonl.""" + from concurrent.futures import ProcessPoolExecutor + os.makedirs(determinism_ROOT, exist_ok=True) + files = sorted(glob.glob(os.path.join(directory, "**", "*.fits"), recursive=True)) + path = os.path.join(determinism_ROOT, "stats_%s.jsonl" % tag) + done = set() + if os.path.exists(path): + for ln in open(path, encoding="utf-8", errors="replace"): + try: + done.add(json.loads(ln)["id"]) + except (ValueError, KeyError): + pass + todo = [p for p in files if os.path.basename(p) not in done] + print("%d light curves under %s, %d to do" % (len(files), directory, len(todo)), flush=True) + t0, m = time.time(), 0 + with ProcessPoolExecutor(procs, initializer=determinism_pool_init, initargs=(False,)) as ex, open(path, "a", encoding="utf-8") as fh: + for r in ex.map(determinism_one_file, todo, chunksize=1): + fh.write(json.dumps(r, separators=(",", ":")) + "\n") + m += 1 + if m % 20 == 0: + fh.flush() + print("%d of %d, %.2f a minute" % (m, len(todo), 60 * m / (time.time() - t0)), flush=True) + print("%d light curves written" % m, flush=True) + + +def determinism_kepler_targets(): + """Every KOI host with a candidate or confirmed planet, brightest first, into ROOT/targets_kepler.json.""" + os.makedirs(determinism_ROOT, exist_ok=True) + rows = core.exoplanets("SELECT kepid, koi_kepmag, koi_disposition FROM cumulative") + best = {} + for r in rows: + if r["koi_disposition"] in ("CANDIDATE", "CONFIRMED") and num(r["kepid"]): + best[int(r["kepid"])] = num(r["koi_kepmag"], 99.0) + out = [dict(kepid=k, kepmag=v) for k, v in sorted(best.items(), key=lambda kv: kv[1])] + json.dump(out, open(os.path.join(determinism_ROOT, "targets_kepler.json"), "w")) + print("%d KOI hosts" % len(out)) + + +def determinism_one_kepler(x): + """One Kepler star's long-cadence quarters read in memory, every segment of every quarter through the statistics on the CPU, z combined over them; None when the listing or a quarter fails, so the star is read again.""" + keys = core.kepler_keys(x["kepid"], short=False) + if not keys: + return None + segs = [] + for i, key in enumerate(keys): + b = core.get(core.S3 + key, timeout=300, retries=3, soft=True, pause=2) + if not b or not b.startswith(b"SIMPLE"): + return None + try: + t, f, _ = core.read(b, columns=("PDCSAP_FLUX",)) + except Exception: + continue + if len(t) < 1000: + continue + r = determinism_curve(t, f, float(np.median(np.diff(t))), seed=(x["kepid"] + 7919 * i) % 100000) + for s in r["segs"]: + s["file"] = os.path.basename(key) + segs += r["segs"] + Z = {} + for lev in ("native", "coarse"): + zs = [s[lev] for s in segs if lev in s] + if zs: + Z[lev] = [round(sum(z[k][3] for z in zs) / math.sqrt(len(zs)), 2) for k in ("comp", "npe", "asym")] + return dict(id="kic:%d" % x["kepid"], kepid=x["kepid"], kepmag=x["kepmag"], status="ok", cad_s=1765.5, segs=segs, Z=Z) + + +def determinism_kepler(procs=10): + """Every KOI host of ROOT/targets_kepler.json through determinism_one_kepler, one line a star into ROOT/stats_kepler.jsonl.""" + from concurrent.futures import ProcessPoolExecutor + targets = json.load(open(os.path.join(determinism_ROOT, "targets_kepler.json"))) + done = determinism_done() + todo = [x for x in targets if "kic:%d" % x["kepid"] not in done] + path = os.path.join(determinism_ROOT, "stats_kepler.jsonl") + print("%d KOI hosts to read, %d done" % (len(todo), len(targets) - len(todo)), flush=True) + t0, m, miss = time.time(), 0, 0 + with ProcessPoolExecutor(procs, initializer=determinism_pool_init, initargs=(False,)) as ex, open(path, "a", encoding="utf-8") as fh: + for r in ex.map(determinism_one_kepler, todo, chunksize=1): + if r is None: + miss += 1 + continue + fh.write(json.dumps(r, separators=(",", ":")) + "\n") + m += 1 + if m % 20 == 0: + fh.flush() + print("%d of %d, %.1f stars a minute, %d to read again" % (m, len(todo), 60 * m / (time.time() - t0), miss), flush=True) + print("%d stars written, %d to read again" % (m, miss), flush=True) + return miss + + +def determinism_check(gpu=False): + """The statistics on synthetic segments of two-minute cadence: white noise and red noise (AR(1)) as the null, a chaotic signal (the logistic map's orbit, held for ten cadences a step) and a coded on-off signal (a repeating 63-step maximal-length sequence) at a tenth of the noise and a third of it, and flares on red noise.""" + dev = None + if gpu: + import torch + dev = torch.device("cuda") + rng = np.random.default_rng(5) + N = 9000 + ar = np.zeros(N) + e = rng.normal(0, 1, N) + for i in range(1, N): + ar[i] = 0.9 * ar[i - 1] + e[i] + ar /= ar.std() + lm = np.empty(N // 10 + 1) + lm[0] = 0.4 + for i in range(1, len(lm)): + lm[i] = 3.99 * lm[i - 1] * (1 - lm[i - 1]) + chaos = np.repeat(lm - lm.mean(), 10)[:N] / lm.std() + reg = [1, 0, 0, 0, 0, 0] + seq = [] + for _ in range(63): + seq.append(reg[-1]) + reg = [reg[0] ^ reg[-1]] + reg[:-1] + code = np.tile(np.repeat(np.array(seq, float) * 2 - 1, 8), N // (63 * 8) + 1)[:N] + flares = ar.copy() + for t0 in rng.choice(N - 60, 12, replace=False): + flares[t0:t0 + 60] += 8 * np.exp(-np.arange(60) / 8.0) + cases = [("white noise", rng.normal(0, 1, N)), ("red noise", ar)] + for amp in (0.33, 1.0, 3.0): + cases += [("chaos at %.2f of the noise" % amp, rng.normal(0, 1, N) + amp * chaos), + ("code at %.2f of the noise" % amp, rng.normal(0, 1, N) + amp * code)] + cases.append(("flares on red noise", flares)) + for name, x in cases: + r = determinism_level(x, 11, dev) + nb = len(x) // determinism_BIN + c = determinism_level(x[:nb * determinism_BIN].reshape(nb, determinism_BIN).mean(1), 12, dev) + print("%-27s z compressed, prediction, asymmetry: native %+7.2f %+7.2f %+7.2f; binned %+7.2f %+7.2f %+7.2f" % ( + name, r["comp"][3], r["npe"][3], r["asym"][3], c["comp"][3], c["npe"][3], c["asym"][3]), flush=True) + + +def determinism_report(): + """Every star-sector's combined z at both levels: the null's spread from the population, the candidates more compressible or more predictable by 5 sigma with their asymmetry, and the stars of the same sector and camera that share it.""" + rows = {} + for p in sorted(glob.glob(os.path.join(determinism_ROOT, "stats_*.jsonl"))): + for ln in open(p, encoding="utf-8", errors="replace"): + try: + r = json.loads(ln) + except ValueError: + continue + if r.get("status") == "ok" and r.get("Z"): + rows[r["id"]] = r + R = list(rows.values()) + print("%d star-sectors with statistics" % len(R)) + out = [] + for lev in ("native", "coarse"): + Z = np.array([r["Z"][lev] for r in R if lev in r["Z"]]) + if not len(Z): + continue + print("%s: %d; z median and robust scatter compressed %+.2f %.2f, prediction %+.2f %.2f, asymmetry %+.2f %.2f" % ( + lev, len(Z), np.median(Z[:, 0]), core.robust_sigma(Z[:, 0]), np.median(Z[:, 1]), core.robust_sigma(Z[:, 1]), + np.median(Z[:, 2]), core.robust_sigma(Z[:, 2]))) + for thr in (3, 5, 8): + print(" below -%d: compressed %d, prediction %d; asymmetry above %d: %d" % ( + thr, np.sum(Z[:, 0] < -thr), np.sum(Z[:, 1] < -thr), thr, np.sum(Z[:, 2] > thr))) + for r in R: + z = r["Z"].get(lev) + if z and min(z[0], z[1]) < -5: + out.append(dict(id=r["id"], level=lev, z=z, gaia=r.get("gaia"), plx=r.get("plx"), G=r.get("G"), cam=r.get("cam"), + sector=r.get("sector"), periods=[p for s in r["segs"] for p in s["periods"]], + flares=sum(s["flares"] for s in r["segs"]))) + for c in out: + if c.get("sector") is not None: + c["shared"] = sum(1 for o in out if o["id"] != c["id"] and o["level"] == c["level"] and o.get("sector") == c["sector"] + and o.get("cam") == c["cam"]) + out.sort(key=lambda c: min(c["z"][0], c["z"][1])) + for c in out[:40]: + print(" %-28s %-6s z %s plx %s G %s cam %s, %s others in its sector and camera; periods %s; flares %d" % ( + c["id"], c["level"], c["z"], c["plx"], c["G"], c["cam"], c.get("shared"), c["periods"][:3], c["flares"])) + json.dump(dict(n=len(R), candidates=out), open(os.path.join(determinism_ROOT, "report.json"), "w")) + + +def determinism_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=["targets", "stream", "local", "kepler_targets", "kepler", "check", "report"]) + p.add_argument("dir", nargs="?") + p.add_argument("--lists") + p.add_argument("--plx", type=float, default=10.0) + p.add_argument("--part", default=None) + p.add_argument("--procs", type=int, default=8) + p.add_argument("--gpu", action="store_true") + p.add_argument("--tag", default="local") + a = p.parse_args() + if a.mode == "targets": + determinism_targets(a.lists, a.plx) + elif a.mode == "stream": + determinism_stream(a.part, a.procs, a.gpu) + elif a.mode == "local": + determinism_local(a.dir, a.procs, a.tag) + elif a.mode == "kepler_targets": + determinism_kepler_targets() + elif a.mode == "kepler": + sys.exit(1 if determinism_kepler(a.procs) else 0) + elif a.mode == "check": + determinism_check(a.gpu) + else: + determinism_report() + + +psfflash_DOC = r"""PSF-shaped flashes in Kepler's cosmic-ray corrections: the flux the pipeline removed from single cadences of each target pixel file (the COSMIC_RAYS column), in cadences where three or more pixels of the optimal aperture were corrected together, correlated with the star's own pixel image; a flash from the star follows that image (correlation 0.9 or more, 0.2 above the image shifted by one pixel), a cosmic ray or its track does not; the null is the shifted image and the coincidences each pixel's own correction rate gives, events shared by other stars of the CCD channel at the same cadence are the spacecraft's, and light left in the next cadences marks a flare. + + python -I seti.py flashes psfflash targets (every KOI host with a candidate or confirmed planet, brightest first, into ROOT/targets.json) + python -I seti.py flashes psfflash stream [--procs 3] (each star's long-cadence target pixel files read in memory, one line a star into ROOT/events.jsonl; exits 1 while stars remain unread) + python -I seti.py flashes psfflash report + python -I seti.py flashes psfflash record (the PSF-shaped rate against the shifted-image null by stellar temperature; each star's PSF-shaped events its flares when the star is cooler than 5300 K, carries three or more or shows light in the next cadence, else cosmic rays shaped like its image by chance)""" + +psfflash_ROOT = os.environ.get("PSFFLASH_ROOT", core.data("psfflash")) +psfflash_MIN_PIX = 3 +psfflash_R = 0.9 +psfflash_MARGIN = 0.2 +psfflash_SHIFTS = ((1, 0), (-1, 0), (0, 1), (0, -1)) +psfflash_TEFF_BINS = ((2500, 4000), (4000, 4800), (4800, 5300), (5300, 5800), (5800, 6300), (6300, 12000)) +psfflash_FLARE_TEFF = 5300 # below it the PSF-shaped events outrun the null: cool dwarfs' flares +psfflash_FLARE_MIN = 3 # PSF-shaped events on one star, against about half an event the null gives a star over its quarters +psfflash_AFTER = 3.0 # light in the next cadence, in the light curve's sigma + + +def psfflash_targets(): + """Every KOI host with a candidate or confirmed planet, brightest first, into ROOT/targets.json.""" + os.makedirs(psfflash_ROOT, exist_ok=True) + rows = core.exoplanets("SELECT kepid, koi_kepmag, koi_disposition FROM cumulative") + best = {} + for r in rows: + if r["koi_disposition"] in ("CANDIDATE", "CONFIRMED") and num(r["kepid"]): + best[int(r["kepid"])] = num(r["koi_kepmag"], 99.0) + out = [dict(kepid=k, kepmag=v) for k, v in sorted(best.items(), key=lambda kv: kv[1])] + json.dump(out, open(os.path.join(psfflash_ROOT, "targets.json"), "w")) + print("%d KOI hosts" % len(out)) + + +def psfflash_corr(a, b): + a, b = a - a.mean(), b - b.mean() + d = math.sqrt(float(np.dot(a, a) * np.dot(b, b))) + return float(np.dot(a, b) / d) if d > 0 else float("nan") + + +def psfflash_quarter(raw): + """Multi-pixel corrections of one gzipped long-cadence target pixel file: cadences where psfflash_MIN_PIX or more optimal-aperture pixels were corrected, each with its correlation to the median image and to the image shifted by one pixel, its share of the star's flux and the aperture flux in the next two cadences over the scatter; with the counts the per-pixel rates expect.""" + import gzip + from astropy.io import fits + with fits.open(io.BytesIO(gzip.decompress(raw))) as h: + d = h[1].data + quarter, channel = int(h[0].header.get("QUARTER", -1)), int(h[0].header.get("CHANNEL", -1)) + t, cad, q = np.asarray(d["TIME"], float), np.asarray(d["CADENCENO"], int), np.asarray(d["QUALITY"], int) + F, C = np.asarray(d["FLUX"], float), np.asarray(d["COSMIC_RAYS"], float) + ap = np.asarray(h[2].data, int) + # cadences whose only flags are a cosmic ray in the optimal aperture (128), an impulsive outlier (1024) or a cosmic ray + # in the collateral data (2048): every other flag marks the spacecraft's events + good = ((q & ~(128 | 1024 | 2048)) == 0) & np.isfinite(t) + t, cad, F, C = t[good], cad[good], F[good], np.nan_to_num(C[good]) + if len(t) < 500: + return None + with np.errstate(all="ignore"): + M = np.nan_to_num(np.nanmedian(F, axis=0)).clip(0) + core_ = ((ap & 2) > 0) & (M > 0) + if core_.sum() < psfflash_MIN_PIX + 1: + return None + m = M[core_] + total = float(m.sum()) + lc = np.nansum(np.where(core_[None, :, :], F, 0.0), axis=(1, 2)) + base = science.block_median(lc, 48) + scat = core.robust_sigma(lc - base) + hit = (C > 0) & core_[None, :, :] + npix = hit.sum(axis=(1, 2)) + rate = hit.mean(axis=0)[core_] + # cadences with psfflash_MIN_PIX or more corrected pixels if the pixels were hit independently at their own rates + p = rate.clip(0, 1) + dist = np.zeros(len(p) + 1) + dist[0] = 1.0 + for x in p: + dist[1:] = dist[1:] * (1 - x) + dist[:-1] * x + dist[0] *= 1 - x + expect = float(len(t) * dist[psfflash_MIN_PIX:].sum()) + events = [] + shifted = [np.roll(M, s, axis=(0, 1))[core_] for s in psfflash_SHIFTS] + for i in np.nonzero(npix >= psfflash_MIN_PIX)[0]: + c = C[i][core_] + r = psfflash_corr(c, m) + rs = max(psfflash_corr(c, s) for s in shifted) + after = [round(float((lc[j] - base[j]) / scat), 1) if j < len(lc) and scat > 0 else None for j in (i + 1, i + 2)] + events.append(dict(cad=int(cad[i]), t=round(float(t[i]), 5), npix=int(npix[i]), r=round(r, 3), r_shift=round(rs, 3), + frac=round(float(c.sum()) / total, 6), after=after)) + return dict(q=quarter, ch=channel, n=int(len(t)), npix_ap=int(core_.sum()), n_hits=int(hit.sum()), n_multi=len(events), + expect=round(expect, 3), scatter=round(float(scat / total), 7), events=events) + + +def psfflash_star(x): + """One star's long-cadence target pixel files read in memory through psfflash_quarter; None when the listing or a file fails.""" + k9 = "%09d" % x["kepid"] + keys = core.s3_keys("kepler/public/target_pixel_files/%s/%s/" % (k9[:4], k9), r"_lpd-targ\.fits\.gz$") + if not keys: + return None + out = [] + for key in keys: + b = core.get(core.S3 + key, timeout=300, retries=3, soft=True, pause=2) + if not b: + return None + try: + r = psfflash_quarter(b) + except Exception: + continue + if r: + out.append(r) + return dict(kepid=x["kepid"], kepmag=x["kepmag"], quarters=out) + + +def psfflash_stream(procs=3): + """Every target star through psfflash_star on procs processes, one line a star into ROOT/events.jsonl, past those read.""" + from concurrent.futures import ProcessPoolExecutor + targets = json.load(open(os.path.join(psfflash_ROOT, "targets.json"))) + path = os.path.join(psfflash_ROOT, "events.jsonl") + done = set() + if os.path.exists(path): + for ln in open(path, encoding="utf-8", errors="replace"): + try: + done.add(json.loads(ln)["kepid"]) + except (ValueError, KeyError): + pass + todo = [x for x in targets if x["kepid"] not in done] + print("%d stars to read, %d read" % (len(todo), len(done)), flush=True) + t0, m, miss = time.time(), 0, 0 + with ProcessPoolExecutor(procs) as ex, open(path, "a", encoding="utf-8") as fh: + for r in ex.map(psfflash_star, todo, chunksize=1): + if r is None: + miss += 1 + continue + fh.write(json.dumps(r, separators=(",", ":")) + "\n") + m += 1 + if m % 10 == 0: + fh.flush() + print("%d of %d, %.1f stars a minute, %d to read again" % (m, len(todo), 60 * m / (time.time() - t0), miss), flush=True) + print("%d stars read, %d to read again" % (m, miss), flush=True) + return miss + + +def psfflash_report(): + """Multi-pixel corrections against the per-pixel expectation, PSF-shaped ones against the shifted image, shared cadences of a channel, and the flashes left with their after-light.""" + rows = [json.loads(ln) for ln in open(os.path.join(psfflash_ROOT, "events.jsonl"), encoding="utf-8")] + nq = sum(len(r["quarters"]) for r in rows) + multi = sum(qd["n_multi"] for r in rows for qd in r["quarters"]) + expect = sum(qd["expect"] for r in rows for qd in r["quarters"]) + ev = [dict(e, kepid=r["kepid"], kepmag=r["kepmag"], q=qd["q"], ch=qd["ch"]) for r in rows for qd in r["quarters"] for e in qd["events"]] + shape = [e for e in ev if e["r"] >= psfflash_R and e["r"] - e["r_shift"] >= psfflash_MARGIN] + null = [e for e in ev if e["r_shift"] >= psfflash_R and e["r_shift"] - e["r"] >= psfflash_MARGIN] + by = {} + for e in ev: + by.setdefault((e["q"], e["ch"], e["cad"]), set()).add(e["kepid"]) + for e in shape: + e["shared"] = len(by[(e["q"], e["ch"], e["cad"])]) - 1 + lone = [e for e in shape if e["shared"] == 0] + print("%d stars, %d quarters; cadences with %d or more corrected aperture pixels %d against %.1f from the pixels' own rates; " + "PSF-shaped %d, shaped like the shifted image instead %d; PSF-shaped and unshared on the channel %d" + % (len(rows), nq, psfflash_MIN_PIX, multi, expect, len(shape), len(null), len(lone))) + for e in sorted(lone, key=lambda e: -e["frac"])[:30]: + print(" KIC %d (Kp %.1f) Q%d ch%d cadence %d BKJD %.4f: %d pixels, r %.3f against %.3f shifted, %.0f ppm of the star; " + "next cadences %s sigma" % (e["kepid"], e["kepmag"], e["q"], e["ch"], e["cad"], e["t"], e["npix"], e["r"], + e["r_shift"], e["frac"] * 1e6, e["after"])) + json.dump(dict(n_stars=len(rows), n_quarters=nq, multi=multi, expect=expect, shaped=shape, null=len(null)), + open(os.path.join(psfflash_ROOT, "report.json"), "w")) + + +def psfflash_teff(kepids): + """DR25 stellar-table temperatures of the stars: the copy the Kepler levels search keeps, else the archive's table by id.""" + path = os.path.join(keplevels_ROOT, "targets.json") + if os.path.exists(path): + return {x["kepid"]: x["teff"] for x in json.load(open(path)) if x.get("teff")} + teff = {} + left = sorted(set(kepids)) + for i in range(0, len(left), 400): + for r in core.exoplanets("SELECT kepid, teff FROM keplerstellar WHERE st_delivname = 'q1_q17_dr25_stellar' AND kepid IN (%s)" + % ",".join(str(k) for k in left[i:i + 400])): + if num(r["teff"]): + teff[int(r["kepid"])] = num(r["teff"]) + return teff + + +def psfflash_record(): + """The PSF-shaped and shifted-image rates by stellar temperature, and each star's unshared PSF-shaped events judged as its flares or as cosmic rays shaped like its image.""" + rows = [json.loads(ln) for ln in open(os.path.join(psfflash_ROOT, "events.jsonl"), encoding="utf-8")] + rep = json.load(open(os.path.join(psfflash_ROOT, "report.json"))) + teff = psfflash_teff([r["kepid"] for r in rows]) + nq = {r["kepid"]: len(r["quarters"]) for r in rows} + ev = [dict(e, kepid=r["kepid"], kepmag=r["kepmag"], q=qd["q"], ch=qd["ch"]) for r in rows for qd in r["quarters"] for e in qd["events"]] + shape = [e for e in ev if e["r"] >= psfflash_R and e["r"] - e["r_shift"] >= psfflash_MARGIN] + null = [e for e in ev if e["r_shift"] >= psfflash_R and e["r_shift"] - e["r"] >= psfflash_MARGIN] + ratios = [] + for lo, hi in psfflash_TEFF_BINS: + ks = {k for k in nq if lo <= teff.get(k, -1) < hi} + a = sum(1 for e in shape if e["kepid"] in ks) + b = sum(1 for e in null if e["kepid"] in ks) / len(psfflash_SHIFTS) + ratios.append("%d-%d K %.1f" % (lo, hi, a / b if b else float("nan"))) + by = {} + for e in ev: + by.setdefault((e["q"], e["ch"], e["cad"]), set()).add(e["kepid"]) + lone = [e for e in shape if len(by[(e["q"], e["ch"], e["cad"])]) == 1] + per = {} + for e in lone: + per.setdefault(e["kepid"], []).append(e) + out = [] + for k, es in per.items(): + t = teff.get(k) + after = sum(1 for e in es if any(a is not None and a > psfflash_AFTER for a in e["after"])) + flare = (t is not None and t < psfflash_FLARE_TEFF) or len(es) >= psfflash_FLARE_MIN or after > 0 + big = max(es, key=lambda e: e["frac"]) + out.append(dict(target="kic:%d" % k, stat=float(len(es)), unit="unshared PSF-shaped single-cadence corrections", + vet="flare" if flare else "cosmic-ray", + note="%s; %d of them with light in the next cadence; the largest %.0f ppm of the star, Q%d cadence %d; %s" % ( + "Teff %d K" % t if t else "no Teff", after, big["frac"] * 1e6, big["q"], big["cad"], + "the star's flares" if flare else "a cosmic ray shaped like the star's image by chance, at the shifted-image rate"))) + n_flare = sum(1 for o in out if o["vet"] == "flare") + core.record_search( + "kepler_psf_flashes", "PSF-shaped flashes in pixel data", + archive="Kepler DR25 long-cadence target pixel files (STScI AWS mirror)", release="DR25", + selection="every KOI host with a candidate or confirmed planet: %d stars, %d quarters" % (rep["n_stars"], rep["n_quarters"]), + code=os.path.abspath(__file__), entry="psfflash", n_targets=rep["n_stars"], n_unit="stars", + outputs=[os.path.join(psfflash_ROOT, "events.jsonl"), os.path.join(psfflash_ROOT, "report.json")], + params=dict(min_pixels=psfflash_MIN_PIX, r=psfflash_R, margin=psfflash_MARGIN, flare_teff=psfflash_FLARE_TEFF, + flare_min=psfflash_FLARE_MIN, after_sigma=psfflash_AFTER), + null_summary="corrections shaped like the star's image shifted by one pixel, the most like of four shifts: %d, against %d PSF-shaped; " + "PSF-shaped over a quarter of the shifted-image count by temperature: %s" % (len(null), len(shape), ", ".join(ratios)), + sensitivity="a brightening in one 29.4-minute cadence over three or more pixels of the optimal aperture that the pipeline removed as a cosmic ray", + ledger="PSF-shaped flashes in pixel data", + result="%d cadences with three or more corrected aperture pixels against %.0f from the pixels' own rates; %d PSF-shaped, %d of them " + "unshared on the channel, on %d stars: %d stars' flares, %d at the chance rate" % ( + rep["multi"], rep["expect"], len(shape), len(lone), len(out), n_flare, len(out) - n_flare)) + core.clear_targets("kepler_psf_flashes") + core.record_targets("kepler_psf_flashes", out) + print("recorded %d stars with unshared PSF-shaped events: %d flaring, %d at the chance rate; PSF-shaped over the null by temperature: %s" + % (len(out), n_flare, len(out) - n_flare, ", ".join(ratios))) + + +def psfflash_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=["targets", "stream", "report", "record"]) + p.add_argument("--procs", type=int, default=3) + a = p.parse_args() + if a.mode == "targets": + psfflash_targets() + elif a.mode == "stream": + sys.exit(1 if psfflash_stream(a.procs) else 0) + elif a.mode == "record": + psfflash_record() + else: + psfflash_report() + + +etz_DOC = r"""Earth-transit-zone stars at opposition in TESS sectors 42-46: flashes within 6.5 h of opposition against the rest and off-ecliptic controls. + + python -I seti.py flashes etz [--threads 8] + python -I seti.py flashes etz record""" + +etz_ROOT = os.environ.get("ETZ_ROOT", core.data("etz")) +etz_SECTORS = tuple(int(x) for x in os.environ.get("ETZ_SECTORS", "42,43,44,45,46").split(",")) +etz_RUN = "tess_etz_opposition" + ("" if etz_SECTORS == (42, 43, 44, 45, 46) else "_%d_%d" % (etz_SECTORS[0], etz_SECTORS[-1])) + + +def etz_sun_lon(jd): + T = (jd - 2451545.0) / 36525 + L = (280.46646 + 36000.76983 * T) % 360 + M = math.radians((357.52911 + 35999.05029 * T) % 360) + return (L + (1.914602 - 0.004817 * T) * math.sin(M) + 0.019993 * math.sin(2 * M)) % 360 + + +def etz_opposition(lon, t0, t1): + """BTJD in [t0, t1] when the Sun's longitude is the star's plus 180, or None.""" + ts = np.arange(t0, t1, 0.01) + d = np.array([((etz_sun_lon(t + 2457000.0) - (lon + 180.0)) + 180) % 360 - 180 for t in ts]) + k = np.nonzero((d[:-1] <= 0) & (d[1:] > 0))[0] + if not len(k): + return None + i = k[0] + return float(ts[i] + 0.01 * (-d[i]) / (d[i + 1] - d[i])) + + +def etz_tasks(): + from scipy.spatial import cKDTree + os.makedirs(etz_ROOT, exist_ok=True) + gp = os.path.join(etz_ROOT, "gaia100pc_ecl5.json") + if not os.path.exists(gp): + from astroquery.gaia import Gaia + Gaia.ROW_LIMIT = -1 + t = Gaia.launch_job_async("SELECT source_id, ra, dec, ecl_lon, ecl_lat, parallax, pmra, pmdec, phot_g_mean_mag FROM " + "gaiadr3.gaia_source WHERE parallax > 10 AND parallax_over_error > 10 AND ABS(ecl_lat) < 5 " + "AND phot_g_mean_mag < 15").get_results() + json.dump([[str(r["source_id"]), float(r["ra"]), float(r["dec"]), float(r["ecl_lon"]), float(r["ecl_lat"]), + float(r["parallax"]), num(r["pmra"]) or 0.0, num(r["pmdec"]) or 0.0, float(r["phot_g_mean_mag"])] for r in t], + open(gp, "w")) + g = json.load(open(gp)) + ra = np.array([x[1] for x in g]) + de = np.array([x[2] for x in g]) + ra0 = ra - np.array([x[6] for x in g]) / 3.6e6 * 16 / np.cos(np.radians(de)) # back to the TIC epoch 2000 + de0 = de - np.array([x[7] for x in g]) / 3.6e6 * 16 + + def xyz(r, d): + r, d = np.radians(r), np.radians(d) + return np.vstack([np.cos(d) * np.cos(r), np.cos(d) * np.sin(r), np.sin(d)]).T + tree = cKDTree(xyz(ra0, de0)) + out = [] + for s in etz_SECTORS: + tl = core.get("https://tess.mit.edu/public/target_lists/2m/all_targets_S%03d_v1.csv" % s, timeout=300, soft=True) + if tl is None: + tl = core.get("https://tess.mit.edu/wp-content/uploads/all_targets_S%03d_v1.csv" % s, timeout=300) + rows = list(csv.reader([ln for ln in (tl.decode("latin-1") if isinstance(tl, bytes) else tl).splitlines() + if ln and not ln.startswith("#")])) + ix = {h.strip(): i for i, h in enumerate(rows[0])} + sc = core.get("https://archive.stsci.edu/missions/tess/download_scripts/sector/tesscurl_sector_%d_lc.sh" % s, timeout=600) + urls = {int(m.group(2)): m.group(1) for m in re.finditer(r"(https://\S+-s%04d-(\d{16})-\d{4}-s_lc\.fits)" % s, + sc.decode() if isinstance(sc, bytes) else sc)} + tic = np.array([int(r[ix["TICID"]]) for r in rows[1:]]) + d, i = tree.query(xyz(np.array([float(r[ix["RA"]]) for r in rows[1:]]), np.array([float(r[ix["Dec"]]) for r in rows[1:]])), + distance_upper_bound=np.radians(20 / 3600.0)) + for k in np.nonzero(np.isfinite(d))[0]: + x = g[i[k]] + if int(tic[k]) in urls and (abs(x[4]) < 0.27 or 1 < abs(x[4]) < 5): + out.append(dict(sector=s, tic=int(tic[k]), gaia=x[0], ecl_lon=x[3], ecl_lat=x[4], g=x[8], + url=urls[int(tic[k])], etz=abs(x[4]) < 0.27)) + import random + random.seed(4) + ctl = [o for o in out if not o["etz"]] + return [o for o in out if o["etz"]] + random.sample(ctl, min(1500, len(ctl))) + + +def etz_one(task): + from astropy.io import fits + from scipy.ndimage import median_filter + p = os.path.join(etz_ROOT, "%d_%d.json" % (task["sector"], task["tic"])) + if os.path.exists(p): + return json.load(open(p)) + try: + b = core.get(task["url"], timeout=300) + with fits.open(io.BytesIO(b)) as h: + d = h[1].data + t, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"], int) + except Exception as e: + return dict(task, error=str(e)[:100]) + good = (q == 0) & np.isfinite(f) & np.isfinite(t) + t, f = t[good], f[good] + if len(t) < 2000: + return dict(task, error="short") + r = f / median_filter(f, size=61, mode="nearest") - 1.0 + sig = 1.4826 * np.median(np.abs(r - np.median(r))) + lone = (r > 5 * sig) & (np.r_[r[1:], 0] < 2 * sig) & (np.r_[0, r[:-1]] < 2 * sig) + multi = (r > 5 * sig) & ~lone + to = etz_opposition(task["ecl_lon"], t.min(), t.max()) + win = np.abs(t - to) < 6.5 / 24 if to is not None else np.zeros(len(t), bool) + res = dict(task, t_opp=to, n=int(len(t)), n_win=int(win.sum()), sig=float(sig), lone=int(lone.sum()), + lone_win=int((lone & win).sum()), multi=int(multi.sum()), multi_win=int((multi & win).sum()), + max_win=float(np.max(r[win]) / sig) if win.any() else None, lone_times=[float(x) for x in t[lone & win]]) + json.dump(res, open(p, "w")) + return res + + +def etz_summary(res): + out = {} + for lab, sel in (("etz", True), ("control", False)): + rs = [r for r in res if "error" not in r and r["etz"] == sel and r["t_opp"] is not None and r["n_win"] > 100] + out[lab] = dict(windows=len(rs), stars=len({r["gaia"] for r in rs}), lone_win=sum(r["lone_win"] for r in rs), + n_win=sum(r["n_win"] for r in rs), lone_out=sum(r["lone"] - r["lone_win"] for r in rs), + n_out=sum(r["n"] - r["n_win"] for r in rs), multi_win=sum(r["multi_win"] for r in rs), + multi_out=sum(r["multi"] - r["multi_win"] for r in rs), rows=rs) + return out + + +def etz_main(threads): + tasks = etz_tasks() + print("%d light curves: %d transit-zone, %d control" % (len(tasks), sum(t["etz"] for t in tasks), sum(not t["etz"] for t in tasks)), + flush=True) + with ThreadPoolExecutor(threads) as ex: + res = list(ex.map(etz_one, tasks)) + s = etz_summary(res) + for lab in ("etz", "control"): + x = s[lab] + print("%s: %d windows on %d stars; lone flashes %d in %d window cadences against %d in %d outside (%.2f expected); " + "brightenings %d in the windows against %.2f expected" + % (lab, x["windows"], x["stars"], x["lone_win"], x["n_win"], x["lone_out"], x["n_out"], + x["lone_out"] / max(x["n_out"], 1) * x["n_win"], x["multi_win"], x["multi_out"] / max(x["n_out"], 1) * x["n_win"])) + json.dump(res, open(core.results("etz_opposition.json"), "w")) + + +def etz_record(): + res = json.load(open(core.results("etz_opposition.json"))) + s = etz_summary(res) + e, c = s["etz"], s["control"] + exp_l = e["lone_out"] / max(e["n_out"], 1) * e["n_win"] + exp_m = e["multi_out"] / max(e["n_out"], 1) * e["n_win"] + core.record_search( + etz_RUN, "Earth-transit-zone stars at opposition", archive="MAST TESS SPOC 2-minute light curves", + release="sectors %d-%d" % (etz_SECTORS[0], etz_SECTORS[-1]), selection="Gaia DR3 stars within 100 pc and 0.27 deg of the ecliptic, G below 15, with " + "2-minute data and their opposition inside the sector", + code=os.path.abspath(__file__), entry="etz", n_targets=e["stars"], n_unit="stars", + params=dict(window_h=6.5, lone_sigma=5, median_cadences=61, etz_deg=0.27, control_deg=[1, 5]), + null_summary="the same stars outside the window (%.2f lone flashes and %.2f brightenings expected in it); control stars " + "1-5 deg off the ecliptic: %d lone flashes in %d window cadences" % (exp_l, exp_m, c["lone_win"], c["n_win"]), + sensitivity="a one-cadence flash at 5 sigma of each light curve's 2-minute scatter", + ledger="Earth-transit-zone stars at opposition", + result="%d transit windows on %d stars: %d lone flashes against %.2f expected and %d brightenings against %.2f" + % (e["windows"], e["stars"], e["lone_win"], exp_l, e["multi_win"], exp_m)) + core.clear_targets(etz_RUN) + core.record_targets(etz_RUN, [dict( + target="gaia_dr3:%s" % r["gaia"], stat=float(r["lone_win"]), unit="lone flashes within 6.5 h of opposition", + note="sector %d, TIC %d, opposition BTJD %.3f, %d window cadences, peak %.1f sigma" % (r["sector"], r["tic"], r["t_opp"], + r["n_win"], r["max_win"] or 0)) + for r in e["rows"]]) + print("recorded") + + +def etz_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + etz_record() + return + p = argparse.ArgumentParser() + p.add_argument("--threads", type=int, default=8) + a = p.parse_args() + etz_main(a.threads) + + +nova_DOC = r"""Nova-ellipsoid timing: TESS flashes of stars within 100 pc at their arrival dates keyed to T CrB 1866 and 1946 (or another eruption), against the rest of their light curves. + + python -I seti.py flashes nova [--threads 8] + python -I seti.py flashes nova record""" + +nova_ROOT = os.environ.get("NOVA_ROOT", core.data("novae")) +# name -> (RA, Dec deg, parallax mas, [(shell, epoch yr)]) +nova_EVENTS = { + "tcrb": (239.87565, 25.92026, 1.091953, [("1946", 1946.108), ("1866", 1866.363)]), # Gaia DR3 1220110705972528512 + "gkper": (52.80000, 43.90417, 2.26, [("gkper_1901", 1901.140)]), + "v603aql": (282.22750, 0.58417, 3.17, [("v603aql_1918", 1918.433)]), + "rrpic": (98.90042, -62.64000, 2.0, [("rrpic_1925", 1925.395)]), + "dqher": (271.87625, 45.85917, 2.0, [("dqher_1934", 1934.945)]), + "cppup": (122.94208, -35.35139, 1.27, [("cppup_1942", 1942.852)]), + "v1500cyg": (317.90250, 48.15056, 0.67, [("v1500cyg_1975", 1975.658)]), + "sn1572": (6.33958, 64.14083, 0.4, [("sn1572", 1572.877)]), + "sn1604": (262.64992, -21.48228, 0.2, [("sn1604", 1604.773)]), +} +nova_EVENT = os.environ.get("NOVA_EVENT", "tcrb") +nova_TCRB = nova_EVENTS[nova_EVENT][:3] +nova_ERUPTIONS = tuple(nova_EVENTS[nova_EVENT][3]) +nova_TAG = "" if nova_EVENT == "tcrb" else "_" + nova_EVENT + + +def nova_gaia(): + """Gaia DR3 stars within 100 pc, G below 13, parallax at 20 sigma, cached.""" + p = os.path.join(nova_ROOT, "gaia_100pc_g13.json") + if os.path.exists(p): + return json.load(open(p)) + rows = [] + for lo, hi in ((10, 11.5), (11.5, 13), (13, 15), (15, 18), (18, 25), (25, 1000)): + rows += core.datalab("SELECT source_id, ra, dec, parallax, parallax_error, phot_g_mean_mag FROM gaia_dr3.gaia_source " + "WHERE parallax >= %g AND parallax < %g AND parallax_over_error > 20 AND phot_g_mean_mag < 13" % (lo, hi)) + out = [[str(r["source_id"]), float(r["ra"]), float(r["dec"]), float(r["parallax"]), float(r["parallax_error"]), + float(r["phot_g_mean_mag"])] for r in rows] + os.makedirs(nova_ROOT, exist_ok=True) + json.dump(out, open(p, "w")) + return out + + +def nova_targets(): + p = os.path.join(nova_ROOT, "nova_targets%s.json" % nova_TAG) + if os.path.exists(p): + return json.load(open(p)) + from astropy.table import Table + from astroquery.xmatch import XMatch + import astropy.units as u + G = nova_gaia() + sid = np.array([int(x[0]) for x in G], dtype=np.int64) + ra, de = np.radians(np.array([x[1] for x in G])), np.radians(np.array([x[2] for x in G])) + gmag = np.array([x[5] for x in G]) + plx, plx_err = np.array([x[3] for x in G]), np.array([x[4] for x in G]) + r = 1000 / plx + sr = r * plx_err / plx + + def uv(a, d): + return np.array([np.cos(d) * np.cos(a), np.cos(d) * np.sin(a), np.sin(d)]) + dn = 1000 / nova_TCRB[2] + un = uv(math.radians(nova_TCRB[0]), math.radians(nova_TCRB[1])) + xs = (uv(ra, de) * r).T + D = np.linalg.norm(xs - dn * un, axis=1) + r - dn + cos = (xs @ un) / r + rows = [] + for name, t0 in nova_ERUPTIONS: + arr = t0 + D * 3.26156 + sig = np.abs(1 - cos) * sr * 3.26156 + for k in np.nonzero((arr > 2018.55) & (arr < 2026.5))[0]: + rows.append((name, str(sid[k]), float(np.degrees(ra[k])), float(np.degrees(de[k])), float(gmag[k]), + float(arr[k]), float(sig[k]))) + if not rows: + os.makedirs(nova_ROOT, exist_ok=True) + json.dump([], open(p, "w")) + return [] + t = Table(rows=[(i, x[2], x[3]) for i, x in enumerate(rows)], names=("idx", "ra", "dec")) + m = XMatch.query(cat1=t, cat2="vizier:IV/39/tic82", max_distance=6 * u.arcsec, colRA1="ra", colDec1="dec") + best = {} + for x in m: + i = int(x["idx"]) + dg = abs(float(x["Gmag"]) - rows[i][4]) if not np.ma.is_masked(x["Gmag"]) else 0.5 + if i not in best or (dg, float(x["angDist"])) < best[i][0]: + best[i] = ((dg, float(x["angDist"])), int(x["TIC"])) + out = [dict(shell=x[0], gaia=x[1], ra=x[2], dec=x[3], g=x[4], arrival=x[5], sig=x[6], tic=best[i][1]) + for i, x in enumerate(rows) if i in best and best[i][0][0] < 1.0] + os.makedirs(nova_ROOT, exist_ok=True) + json.dump(out, open(p, "w")) + return out + + +def nova_year(stamp): + import datetime + d = datetime.datetime.strptime(stamp[:7], "%Y%j") + datetime.timedelta(hours=int(stamp[7:9]), minutes=int(stamp[9:11])) + y0 = datetime.datetime(d.year, 1, 1) + return d.year + (d - y0).total_seconds() / (datetime.datetime(d.year + 1, 1, 1) - y0).total_seconds() + + +def nova_one(t): + from astropy.io import fits + from scipy.ndimage import median_filter + p = os.path.join(nova_ROOT, "lc", "%s_%d_%d.json" % (t["shell"], t["sector"], t["tic"])) + if os.path.exists(p): + return json.load(open(p)) + try: + with fits.open(io.BytesIO(core.get(t["url"], timeout=300))) as h: + d = h[1].data + tt, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"], int) + except Exception as e: + return dict(t, error=str(e)[:80]) + ok = (q == 0) & np.isfinite(f) & np.isfinite(tt) + tt, f = tt[ok], f[ok] + if len(tt) < 2000: + return dict(t, error="short") + r = f / median_filter(f, size=61, mode="nearest") - 1.0 + sig = 1.4826 * np.median(np.abs(r - np.median(r))) + lone = (r > 5 * sig) & (np.r_[r[1:], 0] < 2 * sig) & (np.r_[0, r[:-1]] < 2 * sig) + yr = 2014.0 + (tt + 2457000.0 - 2456658.5) / 365.25 + win = np.abs(yr - t["arrival"]) <= 2 * t["sig"] + res = dict(t, n=int(len(tt)), n_win=int(win.sum()), lone=int(lone.sum()), lone_win=int((lone & win).sum()), + lone_times=[float(x) for x in tt[lone & win]], max_win=float(np.max(r[win]) / sig) if win.any() else None) + os.makedirs(os.path.dirname(p), exist_ok=True) + json.dump(res, open(p, "w")) + return res + + +def nova_main(threads): + targets = nova_targets() + urls, start = {}, {} + for s in range(1, 100): + p = os.path.join(nova_ROOT, "curl_%03d.sh" % s) + if not os.path.exists(p): + try: + b = core.get("https://archive.stsci.edu/missions/tess/download_scripts/sector/tesscurl_sector_%d_lc.sh" % s, timeout=600) + except Exception: + continue + open(p, "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + txt = open(p, encoding="utf-8", errors="replace").read() + for m in re.finditer(r"(https://\S+/(tess(\d{13})-s%04d-(\d{16})-\d{4}-s_lc\.fits))" % s, txt): + urls[(s, int(m.group(4)))] = m.group(1) + start.setdefault(s, nova_year(m.group(3))) + sect = sorted(start) + end = {s: (start[sect[i + 1]] if i + 1 < len(sect) else start[s] + 27.4 / 365.25) for i, s in enumerate(sect)} + tasks = [] + for t in targets: + for s in sect: + if (s, t["tic"]) in urls: + tasks.append(dict(t, sector=s, url=urls[(s, t["tic"])], t0=start[s], t1=end[s], + in_window=bool(start[s] - 2 * t["sig"] <= t["arrival"] <= end[s] + 2 * t["sig"]))) + keep = {(t["shell"], t["tic"]) for t in tasks if t["in_window"]} + tasks = [t for t in tasks if (t["shell"], t["tic"]) in keep] + print("%d sectors; %d star-sectors of %d stars with a sector over their arrival" % (len(sect), len(tasks), len(keep)), flush=True) + with ThreadPoolExecutor(threads) as ex: + res = [r for r in ex.map(nova_one, tasks) if "error" not in r] + json.dump(res, open(core.results("nova_ellipsoid%s.json" % nova_TAG), "w")) + for name, _ in nova_ERUPTIONS: + s = nova_summary(res, name) + print("%s eruption: %d stars (G 6 or fainter) observed at arrival in %d light curves; capped lone flashes %d against %.1f " + "from the same sectors; light curves with a flash %d against %.1f" % (name, s["stars"], s["lcs"], s["lone_win"], + s["expected"], s["any_obs"], s["any_exp"])) + + +def nova_summary(res, name, gmin=6.0, cap=3): + """Window flashes against the out-of-window rate; G below 6 excluded, counts capped at 3 per light curve.""" + import collections + rs = [r for r in res if r["shell"] == name] + raw = dict(n=sum(r["lone_win"] for r in rs)) + rs = [r for r in rs if r["g"] >= gmin] + n_s, l_s = collections.Counter(), collections.Counter() + for r in rs: + n_s[r["sector"]] += r["n"] - r["n_win"] + l_s[r["sector"]] += min(r["lone"] - r["lone_win"], cap * max(1, round((r["n"] - r["n_win"]) / 15000))) + win = [r for r in rs if r["n_win"] > 0] + rate = {s_: (l_s[s_] / n_s[s_] if n_s[s_] else 0.0) for s_ in n_s} + obs = sum(min(r["lone_win"], cap) for r in win) + exp = sum(r["n_win"] * rate.get(r["sector"], 0.0) for r in win) + any_obs = sum(1 for r in win if r["lone_win"] > 0) + any_exp = sum(1 - math.exp(-r["n_win"] * rate.get(r["sector"], 0.0)) for r in win) + return dict(stars=len({r["tic"] for r in win}), lcs=len(win), lone_win=obs, expected=exp, any_obs=any_obs, any_exp=any_exp, + raw=raw["n"], rows=win) + + +def nova_record(): + res = json.load(open(core.results("nova_ellipsoid%s.json" % nova_TAG))) + S = [(name, nova_summary(res, name)) for name, _ in nova_ERUPTIONS] + run = "tcrb_nova_ellipsoid" if nova_EVENT == "tcrb" else "nova_ellipsoid_" + nova_EVENT + core.record_search( + run, "Nova ellipsoids", archive="MAST TESS SPOC 2-minute light curves", + release="sectors 1-99", selection="Gaia DR3 stars within 100 pc, G below 13, on the %s ellipsoid during the TESS " + "years, with 2-minute data over their arrival" % " or ".join(n for n, _ in nova_ERUPTIONS), + code=os.path.abspath(__file__), entry="nova", n_targets=sum(s["stars"] for _, s in S), + params=dict(window_sigma=2, lone_sigma=5, event=nova_EVENT, ra=nova_TCRB[0], dec=nova_TCRB[1], parallax_mas=nova_TCRB[2], + eruptions=[e for _, e in nova_ERUPTIONS]), + null_summary="the same sectors' light curves outside their windows give the rate; stars brighter than G 6 are left out " + "and each light curve's count is capped at 3; with them, the raw window counts are %s" + % ", ".join("%d" % s["raw"] for _, s in S), + sensitivity="a one-cadence flash at 5 sigma of each light curve's 2-minute scatter within the arrival window", + ledger="Nova ellipsoids", + result="; ".join("%s: %d stars at arrival, %d capped lone flashes against %.1f and %d light curves with a flash against %.1f" + % (name, s["stars"], s["lone_win"], s["expected"], s["any_obs"], s["any_exp"]) for name, s in S)) + core.clear_targets(run) + core.record_targets(run, [dict( + target="gaia_dr3:%s" % r["gaia"], stat=float(r["lone_win"]), unit="lone flashes within 2 sigma of the arrival", + note="%s, arrival %.3f +- %.3f yr, sector %d, %d window cadences" % (r["shell"], r["arrival"], r["sig"], r["sector"], + r["n_win"])) + for _, s in S for r in s["rows"] if r["n_win"] > 0]) + print("recorded %s" % run) + + +def nova_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + nova_record() + return + p = argparse.ArgumentParser() + p.add_argument("--threads", type=int, default=8) + a = p.parse_args() + nova_main(a.threads) + + +clocks_DOC = r"""Shared clocks: ZTF periodic variables pairing in period within a fractional tolerance (counted as well at a tenth and three tenths of it) and in phase at a reference epoch, against the phases shuffled among the stars. + + python -I seti.py flashes clocks [record] [--eps 1e-5] [--phase 0.01] [--tref 58700] [--min-sep-arcsec 10] [--shuffles 20]""" + + +def clocks_main(record=False, eps=1e-5, phase=0.01, tref=58700.0, min_sep_arcsec=10.0, shuffles=20): + from astropy.table import Table + p = core.data("ztf_var", "ztf_periodic.fits") + t = Table.read(p) + P = np.array(np.ma.filled(t["Per"].astype(float), np.nan)) + T0 = np.array(np.ma.filled(t["T0"].astype(float), np.nan)) + ra = np.radians(np.array(t["RAJ2000"], float)) + de = np.radians(np.array(t["DEJ2000"], float)) + ok = np.isfinite(P) & np.isfinite(T0) & (P > 0) + alias = np.zeros(len(P), bool) + for base in (1.0, 0.99726957, 29.530589, 365.25): + for n in range(1, 11): + for k in range(1, 5): + alias |= np.abs(P / (base * n / k) - 1) < 1e-3 + keep = np.nonzero(ok & ~alias)[0] + lp = np.log(P[keep]) + o = np.argsort(lp) + lp, idx = lp[o], keep[o] + xyz = np.vstack([np.cos(de) * np.cos(ra), np.cos(de) * np.sin(ra), np.sin(de)]).T + + def pairs(eps): + out = [] + j = 0 + for i in range(len(lp)): + j = max(j, i + 1) + while j < len(lp) and lp[j] - lp[i] < eps: + j += 1 + for k in range(i + 1, j): + out.append((idx[i], idx[k])) + return out + counts = {} + sep10 = 2 * math.sin(math.radians(min_sep_arcsec / 3600.0) / 2) + for tol in (eps / 10, eps * 0.3, eps): + pr = pairs(tol) + a = np.array(pr, dtype=np.int64).reshape(-1, 2) + far = np.linalg.norm(xyz[a[:, 0]] - xyz[a[:, 1]], axis=1) > sep10 if len(a) else np.zeros(0, bool) + counts[tol] = int(far.sum()) + if tol == eps: + base = a[far] + print("%d variables with periods off the aliases (of %d); pairs within the fractional period tolerance: %s" + % (len(keep), len(P), ", ".join("%.0e: %d (%.3g per unit)" % (e, c, c / e) for e, c in counts.items())), flush=True) + ph = ((tref - T0) / P) % 1.0 + + def coherent(phases): + d = np.abs(phases[base[:, 0]] - phases[base[:, 1]]) + d = np.minimum(d, 1 - d) + return base[d < phase] + + def groups(cp): + parent = {} + + def find(x): + parent.setdefault(x, x) + while parent[x] != x: + parent[x] = parent[parent[x]] + x = parent[x] + return x + for a_, b_ in cp: + parent[find(int(a_))] = find(int(b_)) + g = {} + for a_, b_ in cp: + for x in (int(a_), int(b_)): + g.setdefault(find(x), set()).add(x) + return [sorted(v) for v in g.values()] + cp = coherent(ph) + gr = groups(cp) + rng = np.random.default_rng(5) + nulls = [] + for k in range(shuffles): + sh = ph.copy() + sh[keep] = rng.permutation(ph[keep]) + c2 = coherent(sh) + g2 = groups(c2) + nulls.append((len(c2), sum(1 for g in g2 if len(g) >= 3), max([len(g) for g in g2] or [0]))) + big = sorted([g for g in gr if len(g) >= 3], key=len, reverse=True) + # an exactly repeated catalogue period is a grid, not a measurement + from collections import Counter + reps = Counter(np.round(P[keep], 6).tolist()) + grid = {round(float(P[g[0]]), 6) for g in big if reps[round(float(P[g[0]]), 6)] >= 10} + print("in phase within %g at MJD %.0f: %d pairs, %d groups of 3 or more (largest %d); phases shuffled: pairs %s, groups %s, " + "largest %s" % (phase, tref, len(cp), len(big), len(big[0]) if big else 0, [n[0] for n in nulls[:8]], [n[1] for n in nulls[:8]], + [n[2] for n in nulls[:8]])) + for g in big[:10]: + print(" group of %d at P %.6f d: %s" % (len(g), P[g[0]], ", ".join("%s (%s)" % (t["ID"][i], t["Type"][i]) for i in g[:6]))) + nongrid = [g for g in big if round(float(P[g[0]]), 6) not in grid] + print("groups at a period the catalogue repeats exactly (its grid): %d; the largest of the rest %d, against the shuffled " + "largest %d" % (len(big) - len(nongrid), len(nongrid[0]) if nongrid else 0, max(n[2] for n in nulls))) + res = dict(n=len(keep), counts={str(k): v for k, v in counts.items()}, pairs=len(cp), groups=[[int(i) for i in g] for g in big], + null_pairs=[n[0] for n in nulls], null_groups=[n[1] for n in nulls], null_largest=[n[2] for n in nulls]) + json.dump(res, open(core.results("shared_clocks.json"), "w")) + if record: + core.record_search( + "ztf_shared_clocks", "Shared clocks", archive="ZTF periodic variables (Chen et al. 2020, J/ApJS/249/18)", + selection="%d variables with periods off the n/k-day, sidereal-day, lunar and annual aliases" % len(keep), + code=os.path.abspath(__file__), entry="clocks", n_targets=len(keep), + params=dict(eps=eps, phase=phase, tref=tref, min_sep_arcsec=min_sep_arcsec, shuffles=shuffles), + null_summary="phases shuffled among the stars, %d times: %.0f +- %.0f pairs in phase, groups of 3 or more %.1f, largest " + "%d" % (shuffles, np.mean([n[0] for n in nulls]), np.std([n[0] for n in nulls]), np.mean([n[1] for n in nulls]), + max(n[2] for n in nulls)), + sensitivity="three or more variables sharing a period to %g and a phase to %g cycle" % (eps, phase), + ledger="Shared clocks", + result="pairs within %s in period scale with the tolerance (%s per unit); in phase within %g: %d " + "pairs and %d groups of 3 or more, as shuffled phases give; groups above the shuffled largest (%d) sit at " + "periods the catalogue repeats exactly, its grid for long-period variables; the largest of the rest %d" + % (", ".join("%.3g" % e for e in counts), ", ".join("%.3g" % (c / e) for e, c in counts.items()), phase, len(cp), len(big), + max(n[2] for n in nulls), len(nongrid[0]) if nongrid else 0)) + core.clear_targets("ztf_shared_clocks") + core.record_targets("ztf_shared_clocks", [dict( + target="ztf:%s" % t["ID"][i], stat=float(len(g)), unit="variables sharing its period and phase", + note="P %.6f d, %s" % (P[i], t["Type"][i])) for g in big for i in g]) + print("recorded") + + +superflare_DOC = r"""Superflare deficit among TESS planet hosts: fraction of flares above 1e34 erg against matched non-hosts, 2000 draws. + + python -I seti.py flashes superflare analyse + python -I seti.py flashes superflare record""" + +superflare_ROOT = os.environ.get("SUPERFLARE_ROOT", core.data("superflare")) +superflare_OUT = "superflare_deficit.json" +superflare_E1, superflare_E2, superflare_NMATCH = 1e33, 1e34, 10 + + +def superflare_load(): + from astropy.table import Table + os.makedirs(superflare_ROOT, exist_ok=True) + hp = os.path.join(superflare_ROOT, "hosts.json") + if not os.path.exists(hp): + json.dump(dict(toi=core.exoplanets("SELECT tid, toi, tfopwg_disp, pl_orbper, pl_rade, st_teff, st_dist FROM toi"), + ps=core.exoplanets("SELECT tic_id, hostname, pl_name, pl_orbper, pl_rade, st_teff, sy_dist, discoverymethod FROM pscomppars")), open(hp, "w")) + h = json.load(open(hp)) + hosts = {int(r["tid"]) for r in h["toi"] if r["tfopwg_disp"] in ("PC", "CP", "KP") and r["tid"]} + hosts |= {int(str(r["tic_id"]).replace("TIC", "").strip()) for r in h["ps"] if r["tic_id"] and str(r["tic_id"]).replace("TIC", "").strip().isdigit()} + for cat, tb in (("J/A+A/669/A15", "table1"), ("J/A+A/669/A15", "table2")): + p = os.path.join(superflare_ROOT, "yang2023_%s.ecsv" % tb) + if not os.path.exists(p): + from astroquery.vizier import Vizier + Vizier(row_limit=-1, columns=["**"], timeout=900).get_catalogs("%s/%s" % (cat, tb))[0].write(p, format="ascii.ecsv", overwrite=True) + stars = {} + for r in Table.read(os.path.join(superflare_ROOT, "yang2023_table2.ecsv"), format="ascii.ecsv"): + stars[int(r["TIC"])] = dict(tic=int(r["TIC"]), teff=num(r["Teff"]), rad=num(r["Rad"]), dist=num(r["DistG"]) or num(r["DistT"]), nsec=num(r["NTESS"]), + flare=str(r["Flare"]).strip().lower().startswith("y"), host=int(r["TIC"]) in hosts, E=[]) + for r in Table.read(os.path.join(superflare_ROOT, "yang2023_table1.ecsv"), format="ascii.ecsv"): + tic, e = int(r["TIC"]), num(r["E"]) + if tic in stars and e and e > 0: + stars[tic]["E"].append(e) + return stars + + +def superflare_analyse(): + stars = superflare_load() + flaring = [s for s in stars.values() if s["E"] and s["teff"] and s["rad"] and s["dist"]] + hosts = [s for s in flaring if s["host"]] + pool = [s for s in flaring if not s["host"]] + print("%d stars, %d flaring with energies, %d of them planet hosts (of %d hosts in the sample); %d flaring non-hosts" % ( + len(stars), len(flaring), len(hosts), sum(1 for s in stars.values() if s["host"]), len(pool))) + + def key(s): + return np.array([s["teff"] / 300.0, math.log10(s["rad"]) / 0.1, math.log10(s["dist"]) / 0.15, (s["nsec"] or 1) / 4.0]) + from scipy.spatial import cKDTree + pk = np.array([key(s) for s in pool]) + tree = cKDTree(pk) + matches = [tree.query(key(h), k=superflare_NMATCH)[1] for h in hosts] + + def fractions(group): + e = np.concatenate([np.array(s["E"]) for s in group]) if group else np.array([]) + e = e[e >= superflare_E1] + return (float(np.mean(e >= superflare_E2)) if len(e) else float("nan"), int(len(e)), float(np.mean([max(s["E"]) >= superflare_E2 for s in group])) if group else float("nan")) + fh, nh, ph = fractions(hosts) + rng = np.random.default_rng(4) + draws, draws_star = [], [] + for _ in range(2000): + ctrl = [pool[int(rng.choice(m))] for m in matches] + f, _, p = fractions(ctrl) + draws.append(f) + draws_star.append(p) + draws, draws_star = np.array(draws), np.array(draws_star) + from scipy.stats import ks_2samp + eh = np.concatenate([np.array(s["E"]) for s in hosts]) + eh = np.log10(eh[eh >= superflare_E1]) + ctrl_all = [pool[int(i)] for m in matches for i in m] + ec = np.concatenate([np.array(s["E"]) for s in ctrl_all]) + ec = np.log10(ec[ec >= superflare_E1]) + ks = ks_2samp(eh, ec) + print("flares above %.0e erg among those above %.0e: hosts %.3f (%d flares) against matched non-hosts %.3f +- %.3f (p of a deficit %.3f); stars with a flare above %.0e: " + "hosts %.3f against %.3f +- %.3f (p %.3f); energies above %.0e erg: KS statistic %.3f, p %.3f, medians %.2f and %.2f" % ( + superflare_E2, superflare_E1, fh, nh, draws.mean(), draws.std(), float(np.mean(draws <= fh)), superflare_E2, ph, draws_star.mean(), draws_star.std(), + float(np.mean(draws_star <= ph)), superflare_E1, ks.statistic, ks.pvalue, float(np.median(eh)), float(np.median(ec)))) + # hosts with their largest flares + for s in sorted(hosts, key=lambda s: -max(s["E"]))[:8]: + print(" TIC %d: Teff %.0f K, R %.2f Rsun, %.0f pc, %d flares, largest %.1e erg" % (s["tic"], s["teff"], s["rad"], s["dist"], len(s["E"]), max(s["E"]))) + json.dump(dict(n_stars=len(stars), n_flaring=len(flaring), n_hosts=len(hosts), n_pool=len(pool), frac_hosts=fh, n_flares_hosts=nh, frac_ctrl=float(draws.mean()), sd_ctrl=float(draws.std()), + p_deficit=float(np.mean(draws <= fh)), star_hosts=ph, star_ctrl=float(draws_star.mean()), star_sd=float(draws_star.std()), p_star=float(np.mean(draws_star <= ph)), + ks=float(ks.statistic), ks_p=float(ks.pvalue), params=dict(e1=superflare_E1, e2=superflare_E2, nmatch=superflare_NMATCH), + hosts=[dict(tic=s["tic"], teff=s["teff"], rad=s["rad"], dist=s["dist"], n=len(s["E"]), emax=max(s["E"]), frac=float(np.mean(np.array(s["E"])[np.array(s["E"]) >= superflare_E1] >= superflare_E2)) if any(e >= superflare_E1 for e in s["E"]) else None) for s in hosts]), + open(core.results(superflare_OUT), "w"), indent=0) + + +def superflare_record(): + d = json.load(open(core.results(superflare_OUT))) + core.record_search( + "superflare_deficit", "Superflare deficit among planet hosts", archive="Yang et al. (2023) TESS flare catalogue (J/A+A/669/A15); TESS objects of interest and confirmed planets (NASA Exoplanet Archive)", + selection="flaring TESS two-minute targets with flare energies (%d), the %d planet hosts among them against %d flaring non-hosts" % (d["n_flaring"], d["n_hosts"], d["n_pool"]), + code=os.path.abspath(__file__), entry="superflare", n_targets=d["n_hosts"], params=d["params"], + null_summary="each host's %d nearest non-hosts in temperature, radius, distance and sectors, drawn 2000 times: fraction of flares above %.0e among those above %.0e %.3f +- %.3f, stars with a flare above %.0e %.3f +- %.3f" % ( + d["params"]["nmatch"], d["params"]["e2"], d["params"]["e1"], d["frac_ctrl"], d["sd_ctrl"], d["params"]["e2"], d["star_ctrl"], d["star_sd"]), + sensitivity="a halving of the superflare fraction at about 3 sigma for %d hosts with %d flares above %.0e erg" % (d["n_hosts"], d["n_flares_hosts"], d["params"]["e1"]), + ledger="Superflare deficit among planet hosts", + result="hosts' fraction of flares above %.0e erg %.3f (%d flares) against %.3f +- %.3f matched (p of a deficit %.2f); stars with a superflare %.3f against %.3f +- %.3f (p %.2f); KS on the energies %.3f (p %.2f)" % ( + d["params"]["e2"], d["frac_hosts"], d["n_flares_hosts"], d["frac_ctrl"], d["sd_ctrl"], d["p_deficit"], d["star_hosts"], d["star_ctrl"], d["star_sd"], d["p_star"], d["ks"], d["ks_p"])) + core.clear_targets("superflare_deficit") + core.record_targets("superflare_deficit", [dict(target="tic:%d" % h["tic"], stat=h["frac"], unit="fraction of the star's flares above 1e34 erg among those above 1e33", + note="Teff %.0f K, R %.2f Rsun, %.0f pc, %d flares, largest %.1e erg" % (h["teff"], h["rad"], h["dist"], h["n"], h["emax"])) for h in d["hosts"]]) + print("recorded %d hosts" % d["n_hosts"]) + + +def superflare_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": superflare_analyse, "record": superflare_record}[mode]() + + +neliota_DOC = r"""NELIOTA lunar flashes: R-I colour temperature against impact range, duration against 0.5 s, and positional recurrence against permuted longitudes. + + python -I seti.py flashes neliota fetch + python -I seti.py flashes neliota analyse + python -I seti.py flashes neliota record""" + +neliota_ROOT = os.environ.get("NELIOTA_ROOT", core.data("neliota")) +neliota_OUT = "neliota_flashes.json" +neliota_LAM_R, neliota_LAM_I = 0.64, 0.80 # Cousins R and I (um) +neliota_TMIN, neliota_TMAX, neliota_DURATION, neliota_PAIR = 1000.0, 8000.0, 0.5, 1.5 +neliota_HEAD = dict(core.UA, **{"Accept": "*/*"}) + + +def neliota_mag(s): + """Magnitude m.mm(ee) as (value, error); (None, None) when empty.""" + m = re.match(r"\s*([\d.]+)\s*\((\d+)\)", s or "") + if not m: + return None, None + v, e = m.group(1), m.group(2) + dec = len(v.split(".")[1]) if "." in v else 0 + return float(v), float(e) * 10 ** (-dec) + + +def neliota_fetch(): + """NELIOTA flash tables (2020 PDF, 2024 HTML appendix): id, date, class, duration, R, I, latitude, longitude.""" + import fitz + import html as htmlmod + os.makedirs(neliota_ROOT, exist_ok=True) + rows, seen = [], set() + p = os.path.join(neliota_ROOT, "arxiv_1911.06101.pdf") + if not os.path.exists(p): + core.download("https://arxiv.org/pdf/1911.06101", p, headers=neliota_HEAD) + text = re.sub(r"\s*\n\s*", " ", "".join(pg.get_text() for pg in fitz.open(p))) + pat = re.compile(r"(?]+>", " ", c))).strip() for c in re.findall(r"]*>(.*?)", row, re.S)] + + def number(s): + m = re.match(r"^[−-]?\s*[\d.]+", (s or "").replace("−", "-")) + return float(m.group(0).replace(" ", "")) if m else None + + for tb in re.findall(r"", page, re.S): + trs = re.findall(r"]*>(.*?)", tb, re.S) + if not trs or "Date" not in trs[0] or "Lat" not in trs[0]: + continue + for tr in trs[1:]: + c = cells(tr) + for off in (0, 8): + if len(c) >= off + 8 and re.match(r"^\d+$", c[off]) and int(c[off]) not in seen: + fid, date, val, dt, m1, m2, lat, lon = c[off:off + 8] + (mR, eR), (mI, eI) = neliota_mag(m1), neliota_mag(m2) + rows.append(dict(id=int(fid), date=date, val="V" if val.startswith("Val") else val, dur_ms=number(dt), mR=mR, eR=eR, mI=mI, eI=eI, + lat=number(lat), lon=number(lon), source="Liakos et al. 2024")) + seen.add(int(fid)) + rows.sort(key=lambda r: r["id"]) + json.dump(rows, open(os.path.join(neliota_ROOT, "flashes.json"), "w"), indent=0) + print("%d flashes, %d validated, %d with both bands, ids %d-%d" % (len(rows), sum(r["val"] == "V" for r in rows), sum(1 for r in rows if r["mR"] is not None and r["mI"] is not None), + rows[0]["id"], rows[-1]["id"])) + + +def neliota_planck(lam_um, T): + h, c, k = 6.626e-27, 2.998e10, 1.381e-16 + lam = lam_um * 1e-4 + return 2 * h * c ** 2 / lam ** 5 / math.expm1(h * c / (lam * k * T)) + + +def neliota_temperature(ri): + """Black-body temperature with R - I = ri (Vega as 9602 K); None outside 500-50000 K.""" + def colour(T): + v = neliota_planck(neliota_LAM_R, 9602.0) / neliota_planck(neliota_LAM_I, 9602.0) + return -2.5 * math.log10(neliota_planck(neliota_LAM_R, T) / neliota_planck(neliota_LAM_I, T) / v) + lo, hi = 500.0, 50000.0 + if ri <= colour(hi) or ri >= colour(lo): + return None + for _ in range(60): + mid = 0.5 * (lo + hi) + if colour(mid) > ri: + lo = mid + else: + hi = mid + return 0.5 * (lo + hi) + + +def neliota_pairs(lat, lon, limit_deg): + """Index pairs of flashes within limit_deg on the lunar sphere.""" + la, lo = np.radians(lat), np.radians(lon) + cosd = np.sin(la)[:, None] * np.sin(la)[None, :] + np.cos(la)[:, None] * np.cos(la)[None, :] * np.cos(lo[:, None] - lo[None, :]) + ang = np.degrees(np.arccos(np.clip(cosd, -1, 1))) + i, j = np.where(np.triu(ang < limit_deg, 1)) + return list(zip(i.tolist(), j.tolist(), ang[i, j].tolist())) + + +def neliota_analyse(): + rows = json.load(open(os.path.join(neliota_ROOT, "flashes.json"))) + for r in rows: + r["T"] = r["T_lo3"] = r["T_hi3"] = None + if r["mR"] is not None and r["mI"] is not None: + ri = r["mR"] - r["mI"] + e = math.hypot(r["eR"] or 0.3, r["eI"] or 0.3) + r["T"], r["T_hi3"], r["T_lo3"] = neliota_temperature(ri), neliota_temperature(ri - 3 * e), neliota_temperature(ri + 3 * e) + r["hot"] = r["T_lo3"] is not None and r["T_lo3"] > neliota_TMAX + r["cold"] = r["T_hi3"] is not None and r["T_hi3"] < neliota_TMIN + r["long"] = (r["dur_ms"] or 0) > neliota_DURATION * 1000 + withT = [r for r in rows if r["T"]] + T = np.array([r["T"] for r in withT]) + pos = [r for r in rows if r["lat"] is not None and r["lon"] is not None] + lat, lon = np.array([r["lat"] for r in pos]), np.array([r["lon"] for r in pos]) + pairs = neliota_pairs(lat, lon, neliota_PAIR) + rng = np.random.default_rng(4) + null = np.array([len(neliota_pairs(lat, rng.permutation(lon), neliota_PAIR)) for _ in range(2000)]) + p_pairs = float((np.sum(null >= len(pairs)) + 1) / (len(null) + 1)) + hot, cold, long_ = [r for r in rows if r["hot"]], [r for r in rows if r["cold"]], [r for r in rows if r["long"]] + print("%d flashes (%d validated), %d with colour temperatures: median %.0f K, 5th-95th %.0f-%.0f K; %d hotter than %.0f K at 3 sigma, %d cooler than %.0f, %d longer than %.1f s (longest %.0f ms)" % ( + len(rows), sum(r["val"] == "V" for r in rows), len(withT), np.median(T), np.percentile(T, 5), np.percentile(T, 95), len(hot), neliota_TMAX, len(cold), neliota_TMIN, len(long_), neliota_DURATION, + max(r["dur_ms"] or 0 for r in rows))) + print("pairs within %.1f deg on the Moon: %d against %.1f +- %.1f with the longitudes permuted (p %.3f)" % (neliota_PAIR, len(pairs), null.mean(), null.std(), p_pairs)) + for i, j, ang in sorted(pairs, key=lambda x: x[2]): + a, b = pos[i], pos[j] + print(" flashes %d and %d: %.2f deg apart at (%+.1f, %+.1f), %s and %s, %s/%s, T %s/%s K" % ( + a["id"], b["id"], ang, a["lat"], a["lon"], a["date"][:10], b["date"][:10], a["val"], b["val"], "%.0f" % a["T"] if a["T"] else "-", "%.0f" % b["T"] if b["T"] else "-")) + for r in hot + cold: + print(" flash %d (%s, %s): R %s I %s, T %.0f K (3 sigma range %s-%s), %s ms" % (r["id"], r["date"][:10], r["val"], r["mR"], r["mI"], r["T"], "%.0f" % r["T_lo3"] if r["T_lo3"] else "-", + "%.0f" % r["T_hi3"] if r["T_hi3"] else "-", r["dur_ms"])) + json.dump(dict(n=len(rows), n_T=len(withT), T_median=float(np.median(T)), hot=[r["id"] for r in hot], cold=[r["id"] for r in cold], long=[r["id"] for r in long_], + pairs=[(pos[i]["id"], pos[j]["id"], ang) for i, j, ang in pairs], pairs_null=float(null.mean()), pairs_null_sd=float(null.std()), p_pairs=p_pairs, rows=rows, + params=dict(tmin=neliota_TMIN, tmax=neliota_TMAX, duration_s=neliota_DURATION, pair_deg=neliota_PAIR)), open(core.results(neliota_OUT), "w"), indent=0) + + +def neliota_record(): + d = json.load(open(core.results(neliota_OUT))) + core.record_search( + "neliota_flashes", "Non-thermal or recurrent lunar impact flashes", archive="NELIOTA flash lists of Liakos et al. (2020, 2024), from the papers' tables", release="2017-2023", + selection="%d flashes, %d with R and I" % (d["n"], d["n_T"]), code=os.path.abspath(__file__), entry="neliota", n_targets=d["n"], params=d["params"], + null_summary="pairs within %.1f deg against %.1f +- %.1f with the longitudes permuted among the flashes 2000 times" % (d["params"]["pair_deg"], d["pairs_null"], d["pairs_null_sd"]), + sensitivity="a colour temperature outside %.0f-%.0f K at 3 sigma, a duration above %.1f s, or two flashes within %.1f deg" % (d["params"]["tmin"], d["params"]["tmax"], d["params"]["duration_s"], d["params"]["pair_deg"]), + ledger="Non-thermal or recurrent lunar impact flashes", + result="colour temperatures median %.0f K; %d hotter than the range at 3 sigma, %d cooler, %d longer than %.1f s; %d pairs within %.1f deg against %.1f (p %.2f)" % ( + d["T_median"], len(d["hot"]), len(d["cold"]), len(d["long"]), d["params"]["duration_s"], len(d["pairs"]), d["params"]["pair_deg"], d["pairs_null"], d["p_pairs"])) + core.clear_targets("neliota_flashes") + core.record_targets("neliota_flashes", [dict(target="neliota:%d" % r["id"], stat=r["T"], unit="colour temperature from R - I, K", + note="%s, %s, %s ms, (%s, %s)" % (r["date"][:10], r["val"], r["dur_ms"], r["lat"], r["lon"])) for r in d["rows"]]) + print("recorded %d flashes" % d["n"]) + + +def neliota_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": neliota_fetch, "analyse": neliota_analyse, "record": neliota_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- +# flares together and alike, and stars steadier than their photons + +YANG_FLARES = '"J/A+A/669/A15/table1"' +YANG_STARS = '"J/A+A/669/A15/table2"' + + +flaresync_DOC = r"""Flares firing together across the sky: the TESS flares of Yang et al. (2023) (VizieR J/A+A/669/A15), pairs on stars more than 10 deg apart whose peak times agree to 1 minute, against the pair rate at separations of 10-60 minutes scaled to the 2-minute window. + + python -I seti.py flashes flaresync [record] [--dt-min 1] [--sep-deg 10] [--control-min 10] [--control-max 60]""" + + +def flaresync_main(record=False, dt_min=1.0, sep_deg=10.0, control_min=10.0, control_max=60.0): + fl = core.tap("vizier", "SELECT TIC, TimeP, E FROM %s" % YANG_FLARES, timeout=900) + st = {str(r["TIC"]): (num(r["RAJ2000"]), num(r["DEJ2000"])) for r in core.tap("vizier", "SELECT TIC, RAJ2000, DEJ2000 FROM %s" % YANG_STARS, timeout=900)} + fl = sorted([r for r in fl if num(r["TimeP"]) is not None and str(r["TIC"]) in st], key=lambda r: num(r["TimeP"])) + t = np.array([num(r["TimeP"]) for r in fl]) + near, wide, zero, hits = 0, 0, 0, [] + m1, m10, m60 = dt_min / 1440.0, control_min / 1440.0, control_max / 1440.0 + for i in range(len(fl)): + j = i + 1 + while j < len(fl) and t[j] - t[i] < m60: + a, b = fl[i], fl[j] + if str(a["TIC"]) != str(b["TIC"]) and core.sep_arcsec(*st[str(a["TIC"])], *st[str(b["TIC"])]) > sep_deg * 3600: + dt = t[j] - t[i] + if dt < m1: + near += 1 + zero += dt * 86400 < 1 + hits.append((a["TIC"], b["TIC"], dt * 86400)) + elif dt >= m10: + wide += 1 + j += 1 + expect = wide * dt_min / (control_max - control_min) + print("%d flares on %d stars; pairs more than %g deg apart within %g min: %d (%d of them at one timestamp, the 2-minute cadence all stars " + "share) against %.1f from the rate at %g-%g min" % (len(fl), len(st), sep_deg, dt_min, near, zero, expect, control_min, control_max)) + if record: + core.record_run( + "tess_flare_synchrony", "Flares firing together across the sky", "Yang et al. (2023) TESS flare catalogue (VizieR J/A+A/669/A15)", + "flares with peak times on catalogued stars: %d" % len(fl), os.path.abspath(__file__), "flaresync", len(fl), "flares", + dict(dt_min=dt_min, sep_deg=sep_deg, control_min=[control_min, control_max]), "pairs at %g-%g min scaled to the window: %.1f" % ( + control_min, control_max, expect), "flares on distant stars within %g min of each other" % dt_min, "%d pairs against %.1f" % (near, expect), []) + print("recorded") + + +flarecopies_DOC = r"""Standardised flares: stars of the Yang et al. (2023) TESS flare catalogue with ten or more flares whose flare energies scatter by less than 5 per cent, where a star's flares spread over decades of energy. + + python -I seti.py flashes flarecopies [record] [--n-min 10] [--spread 0.05]""" + + +def flarecopies_main(record=False, n_min=10, spread=0.05): + fl = core.tap("vizier", "SELECT TIC, E FROM %s" % YANG_FLARES, timeout=900) + by = {} + for r in fl: + if num(r["E"]): + by.setdefault(str(r["TIC"]), []).append(num(r["E"])) + many = {k: np.array(v) for k, v in by.items() if len(v) >= n_min} + # energies may be listed as logarithms; the spread is taken on the linear energy either way + spreads = {k: float(np.std(10 ** v if np.median(v) < 100 else v) / np.mean(10 ** v if np.median(v) < 100 else v)) for k, v in many.items()} + hits = sorted([(k, s) for k, s in spreads.items() if s < spread], key=lambda x: x[1]) + vals = np.array(list(spreads.values())) + print("%d stars with %d or more flares; spread of energy median %.2f, lowest %.3f; below %g per cent: %d %s" % ( + len(many), n_min, float(np.median(vals)), float(vals.min()), 100 * spread, len(hits), hits[:10])) + if record: + core.record_run( + "tess_standard_flares", "Standardised flares", "Yang et al. (2023) TESS flare catalogue (VizieR J/A+A/669/A15)", + "stars with %d or more flares: %d" % (n_min, len(many)), os.path.abspath(__file__), "flarecopies", len(many), "stars", dict(spread=spread, n_min=n_min), + "the stars' own energy spreads: median %.2f" % float(np.median(vals)), "a star whose flares all carry one energy to %g per cent" % (100 * spread), + "%d below %g per cent; the lowest spread %.3f" % (len(hits), 100 * spread, float(vals.min())), + [dict(target="tic:%s" % k, stat=s, unit="fractional spread of flare energy") for k, s in hits]) + print("recorded") + + +steady_DOC = r"""Stars steadier than photon noise allows: the Kepler DR25 stellar table's 6-hour combined differential photometric precision against the shot noise of the star's Kepler magnitude, 1.74e5 electrons per second at Kp 12 over 6 hours at a 92 per cent duty cycle (17 ppm at Kp 12), flagged below 0.8 of it. + + python -I seti.py flashes steady [record] [--fraction 0.8] [--hours 6] [--electrons-kp12 1.74e5] [--duty 0.92] + +The hours name the CDPP column (3, 6 or 12 in the DR25 table).""" + + +def steady_main(record=False, fraction=0.8, hours=6.0, electrons_kp12=1.74e5, duty=0.92): + cols = list(core.exoplanets("SELECT TOP 1 * FROM q1_q17_dr25_ks")[0]) + tag = "%02dp%d" % (int(hours), round((hours % 1) * 10)) + cd = next((c for c in cols if "cdpp" in c.lower() and tag in c), None) + rows = core.exoplanets("SELECT kepid, kepmag, %s FROM q1_q17_dr25_ks WHERE %s IS NOT NULL AND kepmag IS NOT NULL" % (cd, cd)) + out = [] + for r in rows: + kp, cdpp = float(r["kepmag"]), float(r[cd]) + shot = 1e6 / math.sqrt(electrons_kp12 * 10 ** (-0.4 * (kp - 12)) * hours * 3600 * duty) + out.append((r["kepid"], kp, cdpp, cdpp / shot)) + hits = sorted([o for o in out if o[3] < fraction], key=lambda o: o[3]) + ratio = np.array([o[3] for o in out]) + print("%d Kepler stars with %g-hour CDPP (%s); noise over shot noise median %.2f; below %g: %d %s" % ( + len(out), hours, cd, float(np.median(ratio)), fraction, len(hits), [(o[0], o[1], o[2], round(o[3], 2)) for o in hits[:10]])) + if record: + core.record_run( + "kepler_steadier_than_photons", "Stars steadier than photon noise allows", "NASA Exoplanet Archive Q1-Q17 DR25 Kepler stellar table", + "stars with a %g-hour CDPP: %d" % (hours, len(out)), os.path.abspath(__file__), "steady", len(out), "stars", + dict(fraction=fraction, hours=hours, electrons_kp12=electrons_kp12, duty=duty), + "each star's shot noise from its Kepler magnitude", "a star whose measured noise falls below the photons' own", + "%d below %g of the shot noise; median ratio %.2f" % (len(hits), fraction, float(np.median(ratio))), + [dict(target="kic:%s" % o[0], stat=o[3], unit="CDPP over shot noise", vet="artefact", + note="Kp %.2f, %s ppm, below the photons' own noise: the pipeline's figure" % (o[1], o[2])) for o in hits[:500]]) + print("recorded") + + +sndeficit_DOC = r"""Galaxies that suppress supernovae: HECATE galaxies within 20 Mpc with a homogenised star-formation rate, each given the core-collapse supernovae its rate predicts over 1980-2015 at one per 100 solar masses formed, against the supernovae the Asiago catalogue (B/sn) lists in it, hosts matched within 1 arcmin; a galaxy whose supernovae fall short of its star formation beyond chance is either hiding them in dust or stopping them. A galaxy whose infrared star-formation rate exceeds its ultraviolet one by a factor of three, or whose infrared luminosity passes 2e10 solar, is dusty, and an active nucleus lends its infrared to the rate. + + python -I seti.py flashes sndeficit [record] [--d-max-mpc 20] [--sn-per-msun 0.01] [--year-min 1980] [--year-max 2015] [--host-arcmin 1] [--dust-ratio 3] [--ltir-max 10.3] [--p-max 0.01]""" + + +def sndeficit_main(record=False, d_max_mpc=20.0, sn_per_msun=0.01, year_min=1980, year_max=2015, host_arcmin=1.0, dust_ratio=3.0, ltir_max=10.3, p_max=0.01): + from scipy.stats import poisson + SN_YEARS = (year_min, year_max) + gal = core.tap("vizier", 'SELECT PGC, NED, RAJ2000, DEJ2000, D, logSFRh, logSFRTIR, logSFRGSW, logLTIR, logMtot, Nuclear, AGNs17, AGNh FROM "J/MNRAS/506/1896/hecate" ' + 'WHERE D < %g AND logSFRh IS NOT NULL' % d_max_mpc) + sne = core.tap("vizier", 'SELECT SN, Galaxy, Type, RAG, DEG FROM "B/sn/sncat" WHERE HRV < 3000 AND RAG IS NOT NULL') + sne = [s for s in sne if SN_YEARS[0] <= int(s["SN"][:4]) <= SN_YEARS[1]] + hosts = {} + for m in core.xmatch([dict(source_id="s%d" % i, ra=float(s["RAG"]), dec=float(s["DEG"])) for i, s in enumerate(sne)], "J/MNRAS/506/1896/hecate", host_arcmin * 60.0): + i = int(m["source_id"][1:]) + if i not in hosts or float(m["angDist"]) < hosts[i][1]: + hosts[i] = (m["PGC"], float(m["angDist"])) + count = {} + for i, (pgc, _) in hosts.items(): + count[pgc] = count.get(pgc, 0) + 1 + years = SN_YEARS[1] - SN_YEARS[0] + 1 + out = [] + for g in gal: + sfr = 10 ** float(g["logSFRh"]) + exp = sfr * sn_per_msun * years + n = count.get(g["PGC"], 0) + p = float(poisson.cdf(n, exp)) + tir, uv, ltir = core.num(g["logSFRTIR"]), core.num(g["logSFRGSW"]), core.num(g["logLTIR"]) + # a luminous infrared galaxy hides its supernovae in dust; an active nucleus lends its infrared to the rate + dusty = (tir is not None and uv is not None and tir - uv > math.log10(dust_ratio)) or (ltir is not None and ltir > ltir_max) + agn = bool((g["AGNs17"] or "").strip() or (g["AGNh"] or "").strip() or (g["Nuclear"] or "").strip() not in ("", "0")) + out.append(dict(pgc=g["PGC"], name=(g["NED"] or "").strip(), d=float(g["D"]), sfr=round(sfr, 2), expected=round(exp, 1), seen=n, p=p, dusty=dusty, agn=agn, + vet="dust" if dusty else "background-galaxy" if agn else None)) + short = sorted([o for o in out if o["p"] < p_max], key=lambda o: o["p"]) + print("%d galaxies within %g Mpc with star-formation rates, %d supernovae of %d-%d matched to them; %d galaxies short of their supernovae at p below %g, %d of them dusty " + "and %d more with active nuclei; the rest %s" % (len(gal), d_max_mpc, len(hosts), SN_YEARS[0], SN_YEARS[1], len(short), p_max, sum(1 for o in short if o["dusty"]), + sum(1 for o in short if o["agn"] and not o["dusty"]), + [(o["name"], o["d"], o["sfr"], o["expected"], o["seen"], round(o["p"], 4)) for o in short if o["vet"] is None])) + for o in short: + print(" %s (PGC %s, %.1f Mpc): %.1f Msun/yr, %.1f expected, %d seen, p %.4f%s%s" % (o["name"], o["pgc"], o["d"], o["sfr"], o["expected"], o["seen"], o["p"], + ", dusty" if o["dusty"] else "", ", active nucleus" if o["agn"] else "")) + if record: + core.record_run("supernova_deficits", "Galaxies that suppress supernovae", "HECATE (J/MNRAS/506/1896); Asiago supernova catalogue (B/sn) by CDS XMatch", + "galaxies within %g Mpc with star-formation rates: %d" % (d_max_mpc, len(gal)), os.path.abspath(__file__), "sndeficit", len(gal), "galaxies", + dict(sn_per_msun=sn_per_msun, years=SN_YEARS, host_arcmin=host_arcmin, dust_ratio=dust_ratio, ltir_max=ltir_max, d_max_mpc=d_max_mpc, p_max=p_max), + "Poisson counts at each galaxy's own rate", + "a galaxy with fewer supernovae than its star formation gives at p below %g" % p_max, "%d short, %d of them dusty and %d with active nuclei; %d unexplained" % ( + len(short), sum(1 for o in short if o["dusty"]), sum(1 for o in short if o["agn"] and not o["dusty"]), sum(1 for o in short if o["vet"] is None)), + [dict(target="pgc:%s" % o["pgc"], stat=o["seen"], p=o["p"], unit="supernovae seen against %.1f expected" % o["expected"], vet=o["vet"], + note="%s, %.1f Mpc, %.1f Msun/yr" % (o["name"], o["d"], o["sfr"])) for o in short]) + print("recorded") + + +symflares_DOC = r"""Symmetric flares: the TESS flares of Yang et al. (2023) (VizieR J/A+A/669/A15) lasting 40 minutes or more, so that the two-minute cadence resolves their shape, whose rise from start to peak takes as long as the decay from peak to end within 10 per cent of the duration, or longer; a stellar flare rises impulsively and decays slowly, and a shape that runs backwards or stands symmetric is not a flare's. Each read for its amplitude and energy, and the star's flare count, since two flares in succession give one symmetric event and a catalogue's boundaries follow its own noise threshold. + + python -I seti.py flashes symflares [record] [--dur-min-d 0.028] [--sym-frac 0.1]""" + + +def symflares_main(record=False, dur_min_d=0.028, sym_frac=0.1): + fl = core.tap("vizier", "SELECT TIC, TimeS, TimeP, TimeE, Dur, Amp, E FROM %s" % YANG_FLARES, timeout=900) + per_star = {} + for r in fl: + per_star[str(r["TIC"])] = per_star.get(str(r["TIC"]), 0) + 1 + long_, sym, back = [], [], [] + for r in fl: + ts, tp, te, d = num(r["TimeS"]), num(r["TimeP"]), num(r["TimeE"]), num(r["Dur"]) + if None in (ts, tp, te, d) or d < dur_min_d: + continue + rise, decay = tp - ts, te - tp + o = dict(tic=str(r["TIC"]), start=ts, dur=d, rise=rise, decay=decay, ratio=rise / d, amp=num(r["Amp"]), e=num(r["E"]), nflares=per_star[str(r["TIC"])]) + long_.append(o) + if rise > decay: + back.append(o) + elif abs(rise - decay) < sym_frac * d: + sym.append(o) + ratios = np.array([o["ratio"] for o in long_]) + print("%d flares, %d lasting %g d or more; rise over duration median %.2f, 90th percentile %.2f; symmetric within %g of the duration: %d; rising longer than " + "decaying: %d" % (len(fl), len(long_), dur_min_d, np.median(ratios) if len(ratios) else 0, np.percentile(ratios, 90) if len(ratios) else 0, sym_frac, len(sym), + len(back))) + for o in sorted(back + sym, key=lambda o: -o["ratio"])[:25]: + print(" TIC %s at %.3f: %.3f d, rise %.3f, decay %.3f (rise %.2f of the duration), amplitude %s, energy %s, %d flares on the star" % ( + o["tic"], o["start"], o["dur"], o["rise"], o["decay"], o["ratio"], o["amp"], o["e"], o["nflares"])) + json.dump(dict(n=len(fl), long=len(long_), symmetric=sym, backwards=back), open(core.results("symmetric_flares.json"), "w"), indent=1) + if record: + hits = back + sym + core.record_run( + "tess_symmetric_flares", "Symmetric flares", "Yang et al. (2023) TESS flare catalogue (VizieR J/A+A/669/A15)", + "flares lasting %g d or more: %d of %d" % (dur_min_d, len(long_), len(fl)), os.path.abspath(__file__), "symflares", len(long_), "flares", + dict(dur_min_d=dur_min_d, sym_frac=sym_frac), "the flares' own rise fractions: median %.2f, 90th percentile %.2f" % ( + np.median(ratios) if len(ratios) else 0, np.percentile(ratios, 90) if len(ratios) else 0), + "a flare whose rise takes as long as its decay to %g of its duration" % sym_frac, + "%d symmetric and %d rising longer than decaying, of %d, at every duration and on quiet and busy stars alike: the catalogue's event boundaries, not flare " + "shapes" % (len(sym), len(back), len(long_)), + [dict(target="tic:%s" % o["tic"], stat=o["ratio"], unit="rise as a fraction of the duration", + vet="event-boundary", + note="start %.3f, duration %.3f d, amplitude %s, energy %s, %d flares on the star" % (o["start"], o["dur"], o["amp"], o["e"], o["nflares"])) for o in hits]) + print("recorded") + + +flicker_DOC = r"""Nearby stars flickering by the minute: Gaia DR3 short-timescale variables (gaiadr3.vari_short_timescale) within 100 pc whose characteristic frequency exceeds 48 cycles a day, light changing within half an hour at a star next door, where a photosphere's own pulsations and spots are slower by far and only compact stars and close binaries keep such time; each read for its amplitude, its white-dwarf locus in colour and absolute magnitude, its RUWE and its SIMBAD type; a red dwarf (BP-RP above 2) the pipeline picks up flares, and its variogram timescale is the flares' rise rather than a period. + + python -I seti.py flashes flicker [record] [--plx-min 10] [--freq-min 48] [--red-colour 2.0]""" + + +def flicker_main(record=False, plx_min=10.0, freq_min=48.0, red_colour=2.0): + rows = core.gaia_by_range("SELECT v.source_id, v.frequency, v.amplitude_estimate, v.number_of_fov_transits, g.parallax, g.phot_g_mean_mag, g.bp_rp, g.ruwe, " + "g.ipd_frac_multi_peak, g.ra, g.dec FROM gaiadr3.vari_short_timescale AS v JOIN gaiadr3.gaia_source AS g ON v.source_id = g.source_id " + "WHERE v.source_id BETWEEN {lo} AND {hi} AND g.parallax > %g AND g.parallax_over_error > 10" % plx_min, n=8, maxrec=100000) + st = [] + for r in rows: + f, plx, g, c = num(r["frequency"]), num(r["parallax"]), num(r["phot_g_mean_mag"]), num(r["bp_rp"]) + if f is None or plx is None or g is None: + continue + st.append(dict(id=str(r["source_id"]), f=f, period_min=1440.0 / f, amp=num(r["amplitude_estimate"]), n=num(r["number_of_fov_transits"]), plx=plx, g=g, c=c, + mg=g + 5 * math.log10(plx / 100.0), ruwe=num(r["ruwe"]), multi=num(r["ipd_frac_multi_peak"]))) + fast = [s for s in st if s["f"] > freq_min] + sim = {} + for k in range(0, len(fast), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in fast[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in fast: + s["simbad"] = sim.get(s["id"]) + typ, sp = (s["simbad"] or (None, "", ""))[1], (s["simbad"] or (None, "", ""))[2] + # the white-dwarf locus: fainter than the main sequence by five magnitudes at the colour + wd = s["c"] is not None and s["mg"] > 5.0 * s["c"] + 7.0 + # a red dwarf the short-timescale pipeline picks up flares, and its variogram timescale is the flares' rise, not a period + s["vet"] = ("white-dwarf" if wd or typ in ("WD*", "WD?", "CV*", "No*") or "D" in sp[:2] else + "natural-type" if typ not in ("", "*", "PM*", "HV*", "low-mass*") else + "blend" if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 else + "flare" if (s["c"] or 0) > red_colour else None) + left = [s for s in fast if s["vet"] is None] + count = {v: sum(s["vet"] == v for s in fast) for v in ("white-dwarf", "natural-type", "blend", "flare")} + print("%d short-timescale variables within %.0f pc, the fastest at %.1f cycles a day; faster than %g cycles a day: %d, %d on the white-dwarf locus or of compact type, " + "%d of other known types, %d blended, %d red dwarfs whose timescale is their flares'; unexplained %d" % ( + len(st), 1000 / plx_min, max(s["f"] for s in st) if st else 0, freq_min, len(fast), count["white-dwarf"], count["natural-type"], count["blend"], count["flare"], + len(left))) + for s in sorted(fast, key=lambda s: -s["f"]): + print(" Gaia DR3 %s: %.1f cycles a day (%.1f min), amplitude %s mag over %s transits, G %.2f, BP-RP %s, M_G %.2f, RUWE %s; SIMBAD %s; %s" % ( + s["id"], s["f"], s["period_min"], s["amp"], s["n"], s["g"], s["c"], s["mg"], s["ruwe"], s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), fast=fast), open(core.results("nearby_flicker.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_short_timescale_nearby", "Nearby stars flickering by the minute", "Gaia DR3 vari_short_timescale and gaia_source; SIMBAD", + "short-timescale variables within %.0f pc: %d" % (1000 / plx_min, len(st)), os.path.abspath(__file__), "flicker", len(st), "stars", + dict(plx_min=plx_min, freq_min=freq_min, red_colour=red_colour), "the white-dwarf locus, SIMBAD's types, the image flags and the flare stars' colour", + "a characteristic frequency above %g cycles a day at a star within %.0f pc" % (freq_min, 1000 / plx_min), + "%d: %d white dwarfs or compact types, %d other known types, %d blended, %d flaring red dwarfs; %d unexplained" % ( + len(fast), count["white-dwarf"], count["natural-type"], count["blend"], count["flare"], len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=s["f"], unit="cycles a day", vet=s["vet"], + note="period %.1f min, amplitude %s mag, G %.2f, BP-RP %s, M_G %.2f, RUWE %s; SIMBAD %s" % (s["period_min"], s["amp"], s["g"], s["c"], s["mg"], s["ruwe"], + s["simbad"])) for s in fast]) + print("recorded") + + +unclassified_DOC = r"""Variables Gaia could not classify next door: Gaia DR3 variables (vari_summary) within 50 pc whose G range exceeds 0.3 mag and to which the DR3 classifier (vari_classifier_result) gave no class, light changing by a third at a star next door in a way none of the two dozen known kinds of variable fits; each read in SIMBAD for its type, for its RUWE and image flags and for the white-dwarf locus, since an eclipsing pair, a flare star or a young star often escapes the classifier on few transits, and a red dwarf's range is one flaring transit against the rest. + + python -I seti.py flashes unclassified [record] [--plx-min 20] [--range-min 0.3] [--red-colour 2.0]""" + + +def unclassified_main(record=False, plx_min=20.0, range_min=0.3, red_colour=2.0): + rows = core.gaia_by_range("SELECT g.source_id, g.parallax, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.ipd_frac_multi_peak, v.num_selected_g_fov, v.range_mag_g_fov, " + "v.in_vari_classification_result, c.best_class_name, c.best_class_score FROM gaiadr3.gaia_source AS g JOIN gaiadr3.vari_summary AS v " + "ON g.source_id = v.source_id LEFT OUTER JOIN gaiadr3.vari_classifier_result AS c ON g.source_id = c.source_id WHERE g.source_id BETWEEN {lo} " + "AND {hi} AND g.parallax > %g AND g.parallax_over_error > 10 AND v.range_mag_g_fov > %g" % (plx_min, range_min), n=8, maxrec=100000) + st = [dict(id=str(r["source_id"]), plx=num(r["parallax"]), g=num(r["phot_g_mean_mag"]), c=num(r["bp_rp"]), ruwe=num(r["ruwe"]), multi=num(r["ipd_frac_multi_peak"]), + n=num(r["num_selected_g_fov"]), rng=num(r["range_mag_g_fov"]), cls=(r["best_class_name"] or "").strip() or None, score=num(r["best_class_score"])) for r in rows] + un = [s for s in st if not s["cls"]] + sim = {} + for k in range(0, len(un), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in un[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in un: + s["simbad"] = sim.get(s["id"]) + typ, sp = (s["simbad"] or (None, "", ""))[1], (s["simbad"] or (None, "", ""))[2] + s["mg"] = s["g"] + 5 * math.log10(s["plx"] / 100.0) if s["g"] is not None and s["plx"] else None + wd = s["c"] is not None and s["mg"] is not None and s["mg"] > 5.0 * s["c"] + 7.0 + # a red dwarf's range is one flaring transit against the rest + s["vet"] = ("white-dwarf" if wd or typ in ("WD*", "WD?", "CV*", "No*") or "D" in sp[:2] else + "natural-type" if typ not in ("", "*", "PM*", "HV*", "low-mass*") else + "blend" if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 else + "flare" if (s["c"] or 0) > red_colour else None) + left = [s for s in un if s["vet"] is None] + count = {v: sum(s["vet"] == v for s in un) for v in ("white-dwarf", "natural-type", "blend", "flare")} + print("%d Gaia variables within %.0f pc with a G range above %g mag; without a class: %d, %d white dwarfs or compact, %d of other known types, %d blended, %d flaring red " + "dwarfs; unexplained %d" % (len(st), 1000 / plx_min, range_min, len(un), count["white-dwarf"], count["natural-type"], count["blend"], count["flare"], len(left))) + for s in sorted(un, key=lambda s: -(s["rng"] or 0)): + print(" Gaia DR3 %s: range %.2f mag over %s transits, G %.2f, BP-RP %s, M_G %s, RUWE %s; SIMBAD %s; %s" % ( + s["id"], s["rng"], s["n"], s["g"], s["c"], "%.2f" % s["mg"] if s["mg"] is not None else "-", s["ruwe"], s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), unclassified=un), open(core.results("gaia_unclassified_nearby.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_unclassified_variables_nearby", "Variables Gaia could not classify next door", "Gaia DR3 vari_summary and vari_classifier_result with gaia_source; SIMBAD", + "Gaia variables within %.0f pc with a G range above %g mag: %d" % (1000 / plx_min, range_min, len(st)), os.path.abspath(__file__), "unclassified", len(st), "stars", + dict(plx_min=plx_min, range_min=range_min, red_colour=red_colour), "the %d classified variables of the same sample" % (len(st) - len(un)), + "a variable of a third of a magnitude that no class of the DR3 classifier fits", + "%d unclassified: %d white dwarfs or compact, %d of other known types, %d blended, %d flaring red dwarfs; %d unexplained" % ( + len(un), count["white-dwarf"], count["natural-type"], count["blend"], count["flare"], len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=s["rng"], unit="G range, mag", vet=s["vet"], + note="%s transits, G %.2f, BP-RP %s, RUWE %s; SIMBAD %s" % (s["n"], s["g"], s["c"], s["ruwe"], s["simbad"])) for s in un]) + print("recorded") + + +wdvary_DOC = r"""White dwarfs varying outside the pulsation strips: Gaia DR3 variables (vari_summary) within 100 pc on the white-dwarf locus (fainter than the main sequence by five magnitudes at their colour) with a G range above 0.1 mag, matched to Gentile Fusillo et al. (2021) for temperature, gravity and white-dwarf probability, those outside the three pulsation strips with their margins (DA 10,000-13,500 K, DB 21,000-31,000 K, GW Vir above 70,000 K); a white dwarf that varies without pulsating is eclipsed, spotted, magnetic or crossed by debris, and debris in orbit around a dead star is the one natural kind of structure the archive would show a made one against. Each read in SIMBAD for its type, including the magnetic types that vary with their rotation, for a companion in its BP/RP flux excess and for its RUWE. + + python -I seti.py flashes wdvary [record] [--plx-min 10] [--range-min 0.1] [--pwd-min 0.75]""" + +WD_STRIPS = ((10000.0, 13500.0), (21000.0, 31000.0), (70000.0, 1e6)) + + +def wdvary_main(record=False, plx_min=10.0, range_min=0.1, pwd_min=0.75): + rows = core.gaia_by_range("SELECT g.source_id, g.parallax, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.phot_bp_rp_excess_factor, v.num_selected_g_fov, v.range_mag_g_fov " + "FROM gaiadr3.gaia_source AS g JOIN gaiadr3.vari_summary AS v ON g.source_id = v.source_id WHERE g.source_id BETWEEN {lo} AND {hi} " + "AND g.parallax > %g AND g.parallax_over_error > 10 AND v.range_mag_g_fov > %g AND g.bp_rp IS NOT NULL " + "AND g.phot_g_mean_mag + 5 * LOG10(g.parallax / 100) > 5 * g.bp_rp + 7" % (plx_min, range_min), n=8, maxrec=100000) + ids = [str(r["source_id"]) for r in rows] + wd = {} + for k in range(0, len(ids), 300): + for r in core.tap("vizier", 'SELECT GaiaEDR3, TeffH, loggH, TeffHe, Pwd, RUWE FROM "J/MNRAS/508/3877/maincat" WHERE GaiaEDR3 IN (%s)' % ",".join(ids[k:k + 300])): + wd[str(r["GaiaEDR3"])] = r + sim = {} + for k in range(0, len(ids), 200): + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % x for x in ids[k:k + 200])): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + out = [] + for r in rows: + w = wd.get(str(r["source_id"])) + if not w or (num(w["Pwd"]) or 0) < pwd_min: + continue + teff = num(w["TeffH"]) + c = num(r["bp_rp"]) + ex = (num(r["phot_bp_rp_excess_factor"]) or 0) - (1.154360 + 0.033772 * c + 0.032277 * c * c if c < 0.5 else 1.162004 + 0.011464 * c + 0.049255 * c * c - 0.005879 * c ** 3) + o = dict(id=str(r["source_id"]), plx=num(r["parallax"]), g=num(r["phot_g_mean_mag"]), c=c, ruwe=num(r["ruwe"]), excess=ex, n=num(r["num_selected_g_fov"]), + rng=num(r["range_mag_g_fov"]), teff=teff, logg=num(w["loggH"]), pwd=num(w["Pwd"]), simbad=sim.get(str(r["source_id"]))) + o["strip"] = teff is not None and any(lo <= teff <= hi for lo, hi in WD_STRIPS) + typ, sp = (o["simbad"] or (None, "", ""))[1], (o["simbad"] or (None, "", ""))[2] + # a magnetic white dwarf (P or H in its type) varies with its rotation as its spots and field cross the disc + o["vet"] = ("natural-type" if o["strip"] or typ in ("CV*", "No*", "EB*", "**", "SB*", "Pu*", "V*", "WD?") or "ZZ" in sp or "+" in sp or "P" in sp or "H" in sp[1:] else + "companion" if abs(ex) > 0.2 or (o["ruwe"] or 0) > 1.4 else None) + out.append(o) + left = [o for o in out if o["vet"] is None] + print("%d Gaia variables within %.0f pc on the white-dwarf locus with a G range above %g mag and a catalogued white dwarf; in a pulsation strip or of a known kind %d, " + "with a companion's flux excess or RUWE %d; unexplained %d" % (len(out), 1000 / plx_min, range_min, sum(o["vet"] == "natural-type" for o in out), + sum(o["vet"] == "companion" for o in out), len(left))) + for o in sorted(out, key=lambda o: -(o["rng"] or 0)): + print(" Gaia DR3 %s: range %.2f mag over %s transits, G %.2f, BP-RP %.2f, Teff %s K, log g %s, P_wd %s, excess %+.3f, RUWE %s; SIMBAD %s; %s" % ( + o["id"], o["rng"], o["n"], o["g"], o["c"], o["teff"], o["logg"], o["pwd"], o["excess"], o["ruwe"], o["simbad"], o["vet"] or "unexplained")) + json.dump(out, open(core.results("white_dwarfs_varying.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_white_dwarfs_varying", "White dwarfs varying outside the pulsation strips", "Gaia DR3 vari_summary and gaia_source; Gentile Fusillo et al. (2021) white dwarfs " + "(VizieR J/MNRAS/508/3877); SIMBAD", "catalogued white dwarfs within %.0f pc that Gaia flags variable with a G range above %g mag: %d" % (1000 / plx_min, range_min, len(out)), + os.path.abspath(__file__), "wdvary", len(out), "white dwarfs", dict(plx_min=plx_min, range_min=range_min, pwd_min=pwd_min, strips_k=WD_STRIPS[:2]), + "the pulsation strips, SIMBAD's types, the BP/RP flux excess and RUWE", "a white dwarf varying by a tenth of a magnitude outside every pulsation strip", + "%d: %d in a strip or of a known kind, %d with a companion's signature; %d unexplained" % ( + len(out), sum(o["vet"] == "natural-type" for o in out), sum(o["vet"] == "companion" for o in out), len(left)), + [dict(target="gaia_dr3:%s" % o["id"], stat=o["rng"], unit="G range, mag", vet=o["vet"], + note="%s transits, Teff %s K, log g %s, BP-RP %.2f, excess %+.3f, RUWE %s; SIMBAD %s" % (o["n"], o["teff"], o["logg"], o["c"], o["excess"], o["ruwe"], o["simbad"])) + for o in out]) + print("recorded") + + +copyebs_DOC = r"""Copy eclipsing binaries: the Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83), pairs of systems whose periods agree within the catalogue's own quantum of 0.00001 d, two clocks set alike, and among them the pairs whose temperature ratios and summed radii agree to 10 per cent as copies would, against the count the periods' own density gives in a window ten times wider and the pairs within 2 arcmin, where one binary's light leaks into another's aperture and the catalogue lists one signal twice. + + python -I seti.py flashes copyebs [record] [--tol-d 0.00001] [--like 0.1] [--blend-arcmin 2]""" + + +def copyebs_main(record=False, tol_d=0.00001, like=0.1, blend_arcmin=2.0): + from scipy.stats import poisson + rows = core.tap("vizier", 'SELECT KIC, Per, "T2/T1", "r1+r2", "_RA", "_DE" FROM "J/AJ/141/83/table1" WHERE Per > 0') + st = sorted([dict(kic=str(r["KIC"]), P=num(r["Per"]), ra=num(r["_RA"]), dec=num(r["_DE"]), t21=num(r["T2/T1"]), rr=num(r["r1+r2"])) for r in rows if num(r["Per"])], + key=lambda s: s["P"]) + P = np.array([s["P"] for s in st]) + + def pairs_within(w): + out = [] + for i in range(len(st)): + j = i + 1 + while j < len(st) and P[j] - P[i] <= w: + out.append((st[i], st[j])) + j += 1 + return out + pairs = pairs_within(tol_d) + # the periods' own density: the pairs within a window ten times wider, scaled down + exp = len(pairs_within(10 * tol_d)) / 10.0 + + def alike(x, y): + return x is not None and y is not None and abs(x - y) <= like * max(abs(x), abs(y), 1e-9) + out = [] + for a, b in pairs: + sep = core.sep_arcsec(a["ra"], a["dec"], b["ra"], b["dec"]) / 60.0 + same = alike(a["t21"], b["t21"]) and alike(a["rr"], b["rr"]) + out.append(dict(kic1=a["kic"], kic2=b["kic"], P1=a["P"], P2=b["P"], dP=abs(a["P"] - b["P"]), sep_arcmin=sep, t21=(a["t21"], b["t21"]), rr=(a["rr"], b["rr"]), copy=same, + vet="blend" if sep < blend_arcmin else "chance-rate" if not same else None)) + far = [o for o in out if o["vet"] != "blend"] + copies = [o for o in far if o["copy"]] + p = float(poisson.sf(len(far) - 1, exp)) if far else 1.0 + print("%d eclipsing binaries; pairs with periods within %g d: %d, %d within %g arcmin of each other (one signal in two apertures), %d apart on the sky against %.1f expected " + "from the periods' own density (Poisson p %.3g); of those, alike in temperature ratio and summed radii to %g: %d" % ( + len(st), tol_d, len(out), sum(o["vet"] == "blend" for o in out), blend_arcmin, len(far), exp, p, like, len(copies))) + for o in sorted(out, key=lambda o: o["dP"]): + print(" KIC %s and KIC %s: P %.6f and %.6f d (%.1e d apart), %.1f arcmin, T2/T1 %s, r1+r2 %s; %s" % ( + o["kic1"], o["kic2"], o["P1"], o["P2"], o["dP"], o["sep_arcmin"], o["t21"], o["rr"], o["vet"] or "unexplained")) + json.dump(dict(n=len(st), pairs=out), open(core.results("copy_eclipsing_binaries.json"), "w"), indent=1) + if record: + core.record_run( + "kepler_eb_copies", "Copy eclipsing binaries", "Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83)", "eclipsing binaries with periods: %d" % len(st), + os.path.abspath(__file__), "copyebs", len(st), "binaries", dict(tol_d=tol_d, like=like, blend_arcmin=blend_arcmin), + "the periods' own density gives %.1f pairs within the window; pairs within %g arcmin are one signal in two apertures" % (exp, blend_arcmin), + "two binaries far apart on the sky with periods within %g d and temperature ratios and summed radii alike to %g" % (tol_d, like), + "%d pairs within the period window, %d of them blends, %d apart against %.1f expected (Poisson p %.3g); alike in temperature ratio and radii: %d" % ( + len(out), sum(o["vet"] == "blend" for o in out), len(far), exp, p, len(copies)), + [dict(target="kic:%s" % o["kic1"], stat=o["dP"], unit="period difference from KIC %s, d" % o["kic2"], vet=o["vet"], + note="P %.6f and %.6f d, %.1f arcmin apart, T2/T1 %s, r1+r2 %s" % (o["P1"], o["P2"], o["sep_arcmin"], o["t21"], o["rr"])) for o in out]) + print("recorded") + + +ebwholedays_DOC = r"""Eclipsing binaries on whole days: the Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83), periods under 50 days measured from space, where no day's cycle aliases a period, those within 0.0002 d of a whole number of days, a binary set to Earth's day, against the same windows at half-integers and the count the periods' own density gives; the catalogue's periods are quoted to 0.00001 d, so none lands on the grid by rounding. + + python -I seti.py flashes ebwholedays [record] [--tol-d 0.0002] [--p-max-d 50]""" + + +def ebwholedays_main(record=False, tol_d=0.0002, p_max_d=50.0): + from scipy.stats import poisson + rows = core.tap("vizier", 'SELECT KIC, Per, "T2/T1", "r1+r2" FROM "J/AJ/141/83/table1" WHERE Per > 0') + ps = [dict(kic=str(r["KIC"]).strip(), P=float(r["Per"]), ratio=num(r["T2/T1"]), radii=num(r["r1+r2"])) for r in rows] + ps = [p for p in ps if 0.5 < p["P"] < p_max_d] + whole = [p for p in ps if abs(p["P"] - round(p["P"])) < tol_d and round(p["P"]) >= 1] + half = [p for p in ps if abs(p["P"] - (math.floor(p["P"]) + 0.5)) < tol_d] + exp = 2 * tol_d * len(ps) + p = float(poisson.sf(len(whole) - 1, exp)) if whole else 1.0 + for w in whole: + w["vet"] = "chance-rate" if p > 0.01 else None + print("%d eclipsing binaries with periods under %g d; within %g d of a whole day: %d (%.2f expected from the periods' density, Poisson p %.3g); at half-days: %d" % ( + len(ps), p_max_d, tol_d, len(whole), exp, p, len(half))) + for w in sorted(whole, key=lambda w: abs(w["P"] - round(w["P"]))): + print(" KIC %s: P %.5f d (off %d by %.5f), T2/T1 %s, r1+r2 %s; %s" % (w["kic"], w["P"], round(w["P"]), w["P"] - round(w["P"]), w["ratio"], w["radii"], w["vet"] or "unexplained")) + json.dump(dict(n=len(ps), whole=whole, half=len(half)), open(core.results("kepler_eb_whole_days.json"), "w"), indent=1) + if record: + core.record_run( + "kepler_eb_whole_days", "Eclipsing binaries on whole days", "Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83)", + "eclipsing binaries with periods between 0.5 and %g d: %d" % (p_max_d, len(ps)), os.path.abspath(__file__), "ebwholedays", len(ps), "binaries", dict(tol_d=tol_d, p_max_d=p_max_d), + "the periods' density gives %.2f in the windows; the half-day windows hold %d" % (exp, len(half)), "a period within %g d of a whole number of days" % tol_d, + "%d against %.2f (Poisson p %.3g), %d at half-days" % (len(whole), exp, p, len(half)), + [dict(target="kic:%s" % w["kic"], stat=round(w["P"] - round(w["P"]), 5), unit="d from the whole day", vet=w["vet"], note="P %.5f d, T2/T1 %s, r1+r2 %s" % (w["P"], w["ratio"], w["radii"])) + for w in whole]) + print("recorded") + + +tesswholedays_DOC = r"""Rotation periods on whole days in TESS: the Fetherolf et al. (2023) catalogue of TESS rotation periods (VizieR J/ApJS/266/22), one period per star from space with no day's cycle to alias it, periods between 0.5 and 13 days measured to 0.005 d, those within 0.005 d of a whole number of days, a star turning on Earth's day, against the same windows at half-integers and the count the periods' own density gives. + + python -I seti.py flashes tesswholedays [record] [--tol-d 0.005] [--p-max-d 13] [--err-max-d 0.005]""" + + +def tesswholedays_main(record=False, tol_d=0.005, p_max_d=13.0, err_max_d=0.005): + from scipy.stats import poisson + from setitools.highenergy import dynamo_vizier + t = dynamo_vizier("fetherolf")[0] + best = {} + for r in t: + P, e = num(r["Pvar"]), num(r["e_Pvar"]) + tic = str(r["TIC"]).strip() + if P is None or e is None or e > err_max_d or not 0.5 < P < p_max_d: + continue + if tic not in best or e < best[tic]["e"]: + best[tic] = dict(tic=tic, P=P, e=e, sector=str(r["Sec"]).strip(), tmag=num(r["Tmag"]), teff=num(r["Teff"])) + ps = list(best.values()) + whole = [p for p in ps if abs(p["P"] - round(p["P"])) < tol_d and round(p["P"]) >= 1] + half = [p for p in ps if abs(p["P"] - (math.floor(p["P"]) + 0.5)) < tol_d] + exp = 2 * tol_d * len(ps) + p = float(poisson.sf(len(whole) - 1, exp)) if whole else 1.0 + for w in whole: + w["vet"] = "chance-rate" if p > 0.01 else None + print("%d stars with a TESS rotation period between 0.5 and %g d to %g d; within %g d of a whole day: %d (%.2f expected from the periods' density, Poisson p %.3g); at half-days: %d" % ( + len(ps), p_max_d, err_max_d, tol_d, len(whole), exp, p, len(half))) + for w in sorted(whole, key=lambda w: abs(w["P"] - round(w["P"]))): + print(" TIC %s: P %.4f +- %.4f d (off %d by %.4f), sector %s, Tmag %s, %s K; %s" % (w["tic"], w["P"], w["e"], round(w["P"]), w["P"] - round(w["P"]), w["sector"], w["tmag"], w["teff"], + w["vet"] or "unexplained")) + json.dump(dict(n=len(ps), whole=whole, half=len(half)), open(core.results("tess_rotation_whole_days.json"), "w"), indent=1) + if record: + core.record_run( + "tess_rotation_whole_days", "Rotation periods on whole days in TESS", "Fetherolf et al. (2023) TESS rotation periods (VizieR J/ApJS/266/22)", + "stars with a rotation period between 0.5 and %g d to %g d: %d" % (p_max_d, err_max_d, len(ps)), os.path.abspath(__file__), "tesswholedays", len(ps), "stars", + dict(tol_d=tol_d, p_max_d=p_max_d, err_max_d=err_max_d), "the periods' density gives %.2f in the windows; the half-day windows hold %d" % (exp, len(half)), + "a rotation period within %g d of a whole number of days" % tol_d, "%d against %.2f (Poisson p %.3g), %d at half-days" % (len(whole), exp, p, len(half)), + [dict(target="tic:%s" % w["tic"], stat=round(w["P"] - round(w["P"]), 4), unit="d from the whole day", vet=w["vet"], note="P %.4f +- %.4f d, sector %s, %s K" % (w["P"], w["e"], w["sector"], w["teff"])) + for w in whole]) + print("recorded") + + +ebtwins_DOC = r"""Eclipsing twins to a part in a thousand: the Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83), systems whose fitted temperature ratio T2/T1 lies within 0.001 of one, two stars alike to a tenth of a per cent, a pair made to one measure, against the count the ratios' own density within 0.05 of one gives; a fit that holds the ratio at exactly 1.000 has pegged a parameter at its boundary, so each is read for the exact value and for its summed radius. + + python -I seti.py flashes ebtwins [record] [--tol 0.001] [--band 0.05]""" + + +def ebtwins_main(record=False, tol=0.001, band=0.05): + from scipy.stats import poisson + rows = core.tap("vizier", 'SELECT KIC, Per, "T2/T1", "r1+r2" FROM "J/AJ/141/83/table1" WHERE "T2/T1" > 0') + st = [dict(kic=str(r["KIC"]).strip(), P=num(r["Per"]), ratio=num(r["T2/T1"]), radii=num(r["r1+r2"])) for r in rows] + st = [s for s in st if s["ratio"] is not None] + near = [s for s in st if abs(s["ratio"] - 1) < band] + twins = [s for s in st if abs(s["ratio"] - 1) < tol] + pegged = [s for s in twins if s["ratio"] == 1.0] + exp = len(near) * (2 * tol) / (2 * band) + free = [s for s in twins if s["ratio"] != 1.0] + p = float(poisson.sf(len(free) - 1, exp)) if free else 1.0 + for s in twins: + s["vet"] = "fit-boundary" if s["ratio"] == 1.0 else ("chance-rate" if p > 0.01 else None) + left = [s for s in twins if s["vet"] is None] + print("%d eclipsing binaries with a temperature ratio, %d within %g of one; within %g: %d, %d of them at exactly 1.000 (the fit's boundary) and %d free against %.1f from the density " + "(Poisson p %.3g); unexplained %d" % (len(st), len(near), band, tol, len(twins), len(pegged), len(free), exp, p, len(left))) + for s in sorted(free, key=lambda s: abs(s["ratio"] - 1)): + print(" KIC %s: T2/T1 %.4f, r1+r2 %s, P %s d; %s" % (s["kic"], s["ratio"], s["radii"], s["P"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), near=len(near), twins=twins), open(core.results("kepler_eb_twins.json"), "w"), indent=1) + if record: + core.record_run( + "kepler_eb_twins", "Eclipsing twins to a part in a thousand", "Kepler eclipsing binary catalogue (Prsa et al. 2011, VizieR J/AJ/141/83)", + "eclipsing binaries with a fitted temperature ratio: %d, %d within %g of one" % (len(st), len(near), band), os.path.abspath(__file__), "ebtwins", len(st), "binaries", + dict(tol=tol, band=band), "the ratios' density within %g of one: %.1f expected within %g; fits pegged at exactly 1.000: %d" % (band, exp, tol, len(pegged)), + "a temperature ratio within %g of one not pegged by the fit" % tol, "%d within %g, %d pegged at the boundary, %d free against %.1f (Poisson p %.3g); %d unexplained" % ( + len(twins), tol, len(pegged), len(free), exp, p, len(left)), + [dict(target="kic:%s" % s["kic"], stat=round(s["ratio"], 4), unit="T2/T1", vet=s["vet"], note="r1+r2 %s, P %s d" % (s["radii"], s["P"])) for s in twins]) + print("recorded") + + +vascobelt_DOC = r"""VASCO transients and the geosynchronous belt: the Villarroel et al. (2020) lists of sources on POSS-I plates with no counterpart on later images (VizieR J/AJ/159/8), their declinations against the belt of geosynchronous satellites, which from Palomar stands at -5.44 deg, the band from -6.1 to -4.6 deg; a glint from something in that orbit on a 1950s plate would be a reflector there before the first launch, and the count in the band is taken against the band's share of the plates' sky, which spans the declinations the lists reach. + + python -I seti.py flashes vascobelt [record] [--belt-lo-deg -6.1] [--belt-hi-deg -4.6]""" + + +def vascobelt_main(record=False, belt_lo_deg=-6.1, belt_hi_deg=-4.6): + from scipy.stats import binomtest + from astropy.coordinates import SkyCoord + import astropy.units as u + dec, n_tab = [], {} + for t in core.vizier("J/AJ/159/8"): + name = t.meta.get("name", "") + if "DEJ2000" not in t.colnames: + continue + c = SkyCoord([str(x) for x in t["RAJ2000"]], [str(x) for x in t["DEJ2000"]], unit=(u.hourangle, u.deg), frame="icrs") + dec += list(c.dec.deg) + n_tab[name] = len(t) + dec = np.array(dec) + lo, hi = float(dec.min()), float(dec.max()) + share = (math.sin(math.radians(belt_hi_deg)) - math.sin(math.radians(belt_lo_deg))) / (math.sin(math.radians(hi)) - math.sin(math.radians(lo))) + n = int(np.sum((dec >= belt_lo_deg) & (dec <= belt_hi_deg))) + p = binomtest(n, len(dec), share, alternative="greater").pvalue if len(dec) else 1.0 + print("%d transient positions from %s spanning declinations %.1f to %.1f; in the belt's band %g to %g deg: %d against %.2f from the band's share of that sky (binomial p %.3g)" % ( + len(dec), n_tab, lo, hi, belt_lo_deg, belt_hi_deg, n, share * len(dec), p)) + if record: + core.record_run( + "vasco_geosynchronous_belt", "VASCO transients and the geosynchronous belt", "Villarroel et al. (2020) POSS-I transient candidates (VizieR J/AJ/159/8)", + "transient positions: %d, spanning declinations %.1f to %.1f" % (len(dec), lo, hi), os.path.abspath(__file__), "vascobelt", len(dec), "positions", + dict(belt_lo_deg=belt_lo_deg, belt_hi_deg=belt_hi_deg), "the band's share of the sky between the lists' extreme declinations: %.4f" % share, + "transients crowding the declination of the geosynchronous belt seen from Palomar", "%d in the band against %.2f (binomial p %.3g)" % (n, share * len(dec), p), []) + print("recorded") + + +twomessengers_DOC = r"""Two messengers at once: the IceCube alert tracks of IceCat-1 (Abbasi et al. 2023, VizieR J/ApJS/269/25) that arrived while TESS was observing for the Yang et al. (2023) flare catalogue (sectors 1-30, VizieR J/A+A/669/A15), the catalogue's stars inside each track's 90 per cent region, and their flares peaking within an hour of the neutrino, against the coincidences the same regions give with the alert times shifted by up to 100 days; a transmitter that fires a neutrino beam and lights its star, or a flare that makes neutrinos, would pair the two, and the stars within 100 pc are counted on their own. + + python -I seti.py flashes twomessengers [record] [--window-h 1] [--shifts 2000] [--near-pc 100]""" + + +def twomessengers_main(record=False, window_h=1.0, shifts=2000, near_pc=100.0): + al = [t for t in core.vizier("J/ApJS/269/25") if t.meta.get("name", "").endswith("table2")][0] + st = core.tap("vizier", "SELECT TIC, RAJ2000, DEJ2000, DistG FROM %s" % YANG_STARS, timeout=900) + fl = core.tap("vizier", "SELECT TIC, TimeP FROM %s" % YANG_FLARES, timeout=900) + times = {} + for r in fl: + if num(r["TimeP"]) is not None: + times.setdefault(str(r["TIC"]), []).append(num(r["TimeP"]) + 56999.5) + lo, hi = min(min(v) for v in times.values()), max(max(v) for v in times.values()) + stars = [(str(r["TIC"]), num(r["RAJ2000"]), num(r["DEJ2000"]), num(r["DistG"])) for r in st if str(r["TIC"]) in times and num(r["RAJ2000"]) is not None] + ra_s = np.array([s[1] for s in stars]) + de_s = np.array([s[2] for s in stars]) + alerts = [] + for a in al: + t = float(a["MJD"]) + if not lo <= t <= hi: + continue + ra, de = float(a["RAJ2000"]), float(a["DEJ2000"]) + dra = (ra_s - ra + 180) % 360 - 180 + dde = de_s - de + inside = np.nonzero((dra <= float(a["E_RAJ2000"])) & (dra >= -float(a["e_RAJ2000"])) & (dde <= float(a["E_DEJ2000"])) & (dde >= -float(a["e_DEJ2000"])))[0] + ft = [(stars[k][0], stars[k][3], tt) for k in inside for tt in times[stars[k][0]]] + alerts.append(dict(alert=str(a["Alert"]).strip(), mjd=t, ra=ra, de=de, energy=num(a["Energy"]), n_stars=len(inside), flares=ft)) + w = window_h / 24.0 + + def hits(shift, near=False): + return sum(1 for a in alerts for tic, d, tt in a["flares"] if abs(tt - (a["mjd"] + shift)) < w and (not near or (d is not None and d < near_pc))) + real, real_near = hits(0.0), hits(0.0, True) + rng = np.random.default_rng(9) + off = rng.uniform(-100, 100, shifts) + off = off[np.abs(off) > 2 * w] + null = np.array([hits(s) for s in off]) + null_near = np.array([hits(s, True) for s in off]) + p, p_near = float((null >= real).mean()) if real else 1.0, float((null_near >= real_near).mean()) if real_near else 1.0 + found = [(a["alert"], tic, d, round((tt - a["mjd"]) * 24, 2)) for a in alerts for tic, d, tt in a["flares"] if abs(tt - a["mjd"]) < w] + print("%d IceCat-1 alerts between MJD %.0f and %.0f; %d flaring stars inside their regions (%d flares); flares within %g h: %d against %.3f from %d shifts (p %.3g); " + "within %g pc: %d against %.3f (p %.3g); %s" % (len(alerts), lo, hi, sum(a["n_stars"] for a in alerts), sum(len(a["flares"]) for a in alerts), window_h, real, + null.mean(), len(off), p, near_pc, real_near, null_near.mean(), p_near, found)) + if record: + core.record_run( + "icecat_tess_flare_coincidence", "Two messengers at once", "IceCat-1 (VizieR J/ApJS/269/25); Yang et al. (2023) TESS flares (VizieR J/A+A/669/A15)", + "IceCube alert tracks during TESS sectors 1-30: %d, with %d flaring stars inside their 90 per cent regions" % (len(alerts), sum(a["n_stars"] for a in alerts)), + os.path.abspath(__file__), "twomessengers", len(alerts), "alerts", dict(window_h=window_h, shifts=shifts, near_pc=near_pc), + "%d shifts of the alert times by up to 100 days: %.3f coincidences, %.3f within %g pc" % (len(off), null.mean(), null_near.mean(), near_pc), + "a flare on a star inside a neutrino track's region within %g h of the neutrino" % window_h, + "%d coincidences against %.3f (p %.3g), %d within %g pc against %.3f" % (real, null.mean(), p, real_near, near_pc, null_near.mean()), + [dict(target="tic:%s" % tic, stat=dt_h, unit="hours from the neutrino", vet=None, note="%s, %s pc" % (alert, d)) for alert, tic, d, dt_h in found]) + print("recorded") + + +flareecho_DOC = r"""Flare echoes: every flare of a flare star in Kepler's one-minute photometry (GJ 1243 by default), or with --tess true of the nearest flare stars in TESS's twenty-second and two-minute photometry (Proxima Centauri, AU Mic, YZ CMi, EV Lac, AD Leo, GJ 1243, Wolf 359 and UV Ceti), or with --nearby true of every star within 30 pc brighter than Tmag 15 whose twenty-second light curves hold 30 flares, the light curve made relative to an hour's running median and then to nine minutes', each flare's five-minute impulse correlated with the light curve after it at every delay from 3 to 180 minutes and the flares averaged with weights of their impulse's signal-to-noise, every other peak at 5 widths masked, the secondary bursts of complex flares among them; a mirror, a ring or a swarm in orbit returns each flare as a faint copy after the light-travel delay of its own geometry, 17 minutes from 1 au straight back, where a disc or a shell spreads its echo over a range of delays and sympathetic flares come at any delay; the same correlation before each flare, where no echo can arrive, is the null, a delay that loses half its echo when one flare is left out rests on that flare, and VSX names the eclipsing binaries whose eclipse edges pass for flares. + + python -I seti.py flashes flareecho [record] [--kic 9726699] [--tess false] [--nearby false] [--min-flares 30] [--snr-min 10] [--tau-max 180] [--z-min 5] [--mask-snr 5]""" + +FLAREECHO_TESS = {"Proxima Cen": 388857263, "AU Mic": 441420236, "YZ CMi": 266744225, "EV Lac": 154101678, "AD Leo": 95431305, "GJ 1243": 273589987, + "Wolf 359": 365006789, "UV Cet": 632499595} + + +# the high-pass spans nine minutes and the impulse five, wide enough to hold a flare's rise and peak whole +FLAREECHO_HP_MIN, FLAREECHO_IMPULSE_MIN = 9.0, 5.0 + + +def flareecho_odd(minutes, cad): + """An odd number of cadences spanning about the given minutes, three at least.""" + return max(3, int(round(minutes / cad)) | 1) + + +def flareecho_prepare(t, f, cad): + """A light curve in minutes as (minutes, relative flux, its high-pass, noise, cadence): flux over an hour's running median, less the relative flux's running median over FLAREECHO_HP_MIN.""" + from scipy.ndimage import median_filter + r = f / median_filter(f, size=flareecho_odd(60, cad), mode="nearest") - 1.0 + hp = r - median_filter(r, size=flareecho_odd(FLAREECHO_HP_MIN, cad), mode="nearest") + return t, r, hp, 1.4826 * float(np.median(np.abs(r - np.median(r)))), cad + + +def flareecho_kepler(kic): + """A Kepler star's short-cadence light curves, PDCSAP flux of quality 0, prepared per file.""" + from astropy.io import fits + out = [] + for key in core.kepler_keys(kic, short=True): + local = core.data("flareecho", os.path.basename(key)) + if not os.path.exists(local): + os.makedirs(os.path.dirname(local), exist_ok=True) + body = core.get(core.S3 + key, timeout=600) + open(local, "wb").write(body) + with fits.open(local) as h: + d = h[1].data + t, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["SAP_QUALITY"]) + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + out.append(flareecho_prepare(t[ok] * 1440.0, f[ok], 0.98084)) + return out + + +def flareecho_tess(tic, sectors=range(1, 100), threads=8): + """A TESS star's SPOC light curves, twenty-second where a sector has them and two-minute otherwise, PDCSAP flux of quality 0, prepared per sector.""" + from astropy.io import fits + + def one(sector): + for fast in (True, False): + local = core.data("flareecho", "tic%d_s%04d_%s.fits" % (tic, sector, "fast" if fast else "2min")) + if not os.path.exists(local): + keys = core.spoc_keys(tic, sector, fast) + if not keys: + continue + body = core.get(core.S3 + keys[0], timeout=600, retries=3, soft=True, pause=2) + if not body or not body.startswith(b"SIMPLE"): + continue + os.makedirs(os.path.dirname(local), exist_ok=True) + open(local, "wb").write(body) + with fits.open(local) as h: + d = h[1].data + t, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"]) + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + if ok.sum() < 1000: + return None + t = t[ok] * 1440.0 + return flareecho_prepare(t, f[ok], float(np.median(np.diff(t)))) + return None + with ThreadPoolExecutor(threads) as ex: + return [c for c in ex.map(one, sectors) if c is not None] + + +def flareecho_stack(curves, snr_min, tau_max, mask_snr=5.0): + """The echo depth of each flare's impulse at every delay of whole minutes from -tau_max to tau_max, weighted over the flares, with their count; every peak at mask_snr widths masked, the secondary bursts of complex flares among them.""" + taus = np.arange(-tau_max, tau_max + 1) + num_, den, n = np.zeros(len(taus)), np.zeros(len(taus)), 0 + for t, r, hp, sig, cad in curves: + h = flareecho_odd(FLAREECHO_IMPULSE_MIN, cad) // 2 + # a flare: a local peak at snr_min noise widths with a neighbour above three + peaks = [i for i in range(h, len(r) - h) if r[i] >= snr_min * sig and r[i] == r[i - h:i + h + 1].max() and max(r[i - 1], r[i + 1]) >= 3 * sig] + busy = np.zeros(len(r), bool) + for i in [i for i in range(h, len(r) - h) if r[i] >= mask_snr * sig and r[i] == r[i - h:i + h + 1].max()]: + busy[max(i - int(3 / cad) - h, 0):i + int(6 / cad) + h + 1] = True + # cadences on one grid, so that a delay counts in steps even across gaps + step = np.round((t - t[0]) / cad).astype(int) + where = np.full(step.max() + 1, -1) + where[step] = np.arange(len(step)) + shift = np.round(taus / cad).astype(int) + for i in peaks: + g = hp[i - h:i + h + 1] + gg = float(g @ g) + if gg <= 0: + continue + n += 1 + w = gg / sig ** 2 + for k, tau in enumerate(taus): + j = step[i] + shift[k] + if abs(tau) < 3 or j - h < 0 or j + h + 1 > len(where): + continue + idx = where[j - h:j + h + 1] + if (idx < 0).any() or busy[idx].any(): + continue + num_[k] += w * float(g @ hp[idx]) / gg + den[k] += w + return taus, np.where(den > 0, num_ / np.maximum(den, 1e-30), np.nan), n + + +def flareecho_score(taus, eps, z_min): + """The echo's strongest delay after the flares in widths of its spread before them, the largest before them, and the delays at z_min or more.""" + pre, post = (taus <= -3) & np.isfinite(eps), (taus >= 3) & np.isfinite(eps) + med = float(np.median(eps[pre])) + width = 1.4826 * float(np.median(np.abs(eps[pre] - med))) + z = (eps - med) / max(width, 1e-12) + k = int(np.nanargmax(np.where(post, z, -np.inf))) + hits = [(int(taus[j]), float(eps[j]), float(z[j])) for j in np.flatnonzero(post & (z >= z_min))] + return dict(tau=int(taus[k]), eps=float(eps[k]), z=float(z[k]), pre=float(np.nanmax(np.abs(z[pre]))), width=width, hits=hits) + + +def flareecho_nearby(min_flares, procs=8, tmag_max=15.0): + """Every star of the twenty-second light curves within 30 pc (the discrete-level search's set) brighter than tmag_max with min_flares flares at ten noise widths, its sectors prepared, as (name, target, curves).""" + import glob + from concurrent.futures import ProcessPoolExecutor + from astropy.io import fits + files = [f for f in sorted(glob.glob(core.data("tess20", "*.fits"))) if (fits.getheader(f).get("TESSMAG") or 99) <= tmag_max] + with ProcessPoolExecutor(procs) as ex: + curves = list(ex.map(flareecho_file, files, chunksize=8)) + by = {} + for path, c in zip(files, curves): + if c is not None: + by.setdefault(int(fits.getheader(path).get("TICID")), []).append(c) + out = [] + for tic, cs in sorted(by.items()): + n = 0 + for t, r, hp, sig, cad in cs: + h = flareecho_odd(FLAREECHO_IMPULSE_MIN, cad) // 2 + n += sum(1 for i in range(h, len(r) - h) if r[i] >= 10 * sig and r[i] == r[i - h:i + h + 1].max() and max(r[i - 1], r[i + 1]) >= 3 * sig) + if n >= min_flares: + out.append(("TIC %d" % tic, "tic:%d" % tic, cs)) + return out + + +def flareecho_file(path): + """One twenty-second light curve file prepared, or None.""" + from astropy.io import fits + with fits.open(path) as h: + d = h[1].data + t, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"]) + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + if ok.sum() < 1000: + return None + t = t[ok] * 1440.0 + return flareecho_prepare(t, f[ok], float(np.median(np.diff(t)))) + + +def flareecho_main(record=False, kic=9726699, tess=False, nearby=False, min_flares=30, snr_min=10.0, tau_max=180, z_min=5.0, mask_snr=5.0): + if nearby: + stars = flareecho_nearby(min_flares) + elif tess: + stars = [(name, "tic:%d" % tic, flareecho_tess(tic)) for name, tic in FLAREECHO_TESS.items()] + else: + stars = [("KIC %d" % kic, "kic:%d" % kic, flareecho_kepler(kic))] + out = [] + for name, target, curves in stars: + if not curves: + print(" %s: no light curves" % name) + continue + taus, eps, n = flareecho_stack(curves, snr_min, tau_max, mask_snr) + if n == 0 or not np.isfinite(eps).any(): + print(" %s: no flare at %g widths in %d curves" % (name, snr_min, len(curves))) + continue + sc = flareecho_score(taus, eps, z_min) + sc.update(name=name, target=target, n=n, curves=len(curves), cadences=sorted({round(c[4], 2) for c in curves}), vet=None, loo=None) + if sc["hits"] and sc["z"] > sc["pre"]: + # an echo returns after every flare: one that falls by half with a single flare left out rests on that flare + k = int(np.flatnonzero(taus == sc["tau"])[0]) + low = sc["eps"] + for ci, (t, r, hp, sig, cad) in enumerate(curves): + h = flareecho_odd(FLAREECHO_IMPULSE_MIN, cad) // 2 + for i in [i for i in range(h, len(r) - h) if r[i] >= snr_min * sig and r[i] == r[i - h:i + h + 1].max() and max(r[i - 1], r[i + 1]) >= 3 * sig]: + r2 = r.copy() + r2[i - h:i + h + 1] = np.minimum(r2[i - h:i + h + 1], 0.9 * snr_min * sig) + low = min(low, float(flareecho_stack(curves[:ci] + [(t, r2, hp, sig, cad)] + curves[ci + 1:], snr_min, tau_max, mask_snr)[1][k])) + sc["loo"] = low + if low < 0.5 * sc["eps"]: + sc["vet"] = "single-epoch" + elif sc["hits"]: + sc["vet"] = "chance-rate" + out.append(sc) + if not nearby or (sc["hits"] and sc["z"] > sc["pre"]): + print("%s: %d flares at %g noise widths or more in %d light curves (cadences %s min); echo spread per delay before the flares %.2g; strongest after them %.4f at %d min (%.1f widths), largest before them %.1f widths; %d delays at %g widths or more" % ( + name, n, snr_min, len(curves), ", ".join("%g" % c for c in sc["cadences"]), sc["width"], sc["eps"], sc["tau"], sc["z"], sc["pre"], len(sc["hits"]), z_min)) + for tau, e, zz in sc["hits"]: + print(" delay %4d min: echo %.4f of the flare (%.1f widths)" % (tau, e, zz)) + # an eclipsing binary's eclipse edges pass the flare finder once its hour's median is taken out + cand = [o for o in out if o["hits"] and o["z"] > o["pre"] and o["vet"] is None and o["target"].startswith("tic:")] + if cand: + pos = {} + for o in cand: + r_ = core.tap("simbad", "SELECT b.ra, b.dec FROM ident AS i JOIN basic AS b ON b.oid = i.oidref WHERE i.id = 'TIC %s'" % o["target"][4:]) + if r_: + pos[o["target"]] = (float(r_[0]["ra"]), float(r_[0]["dec"])) + vsx = {m["source_id"]: (m.get("Type") or "").strip() for m in core.xmatch([dict(source_id=k, ra=v[0], dec=v[1]) for k, v in pos.items()], "B/vsx/vsx", 5.0)} if pos else {} + for o in cand: + if vsx.get(o["target"], "").startswith("E"): + o["vet"] = "eclipsing-binary" + for o in out: + if o["hits"] and o["z"] > o["pre"]: + print(" %s: echo %.4f at %d min (%.1f widths, above the %.1f before the flares); with one flare left out as low as %s; %s" % ( + o["name"], o["eps"], o["tau"], o["z"], o["pre"], "%.4f" % o["loo"] if o["loo"] is not None else "-", o["vet"] or "LEFT")) + if nearby: + print("%d stars within 30 pc brighter than Tmag 15 with %d or more flares at %g widths; %d with a delay after their flares at %g widths above the largest before them, %d of them left; median spread per delay %.2g of the flare" % ( + len(out), min_flares, snr_min, sum(1 for o in out if o["hits"] and o["z"] > o["pre"]), z_min, sum(1 for o in out if o["hits"] and o["z"] > o["pre"] and o["vet"] is None), + float(np.median([o["width"] for o in out])) if out else float("nan"))) + json.dump(out, open(core.results("flare_echoes_%s.json" % ("nearby" if nearby else "tess" if tess else kic)), "w"), indent=1) + if record and out: + core.record_run( + "tess20_nearby_flare_echoes" if nearby else "tess_flare_echoes" if tess else "kepler_flare_echoes_%d" % kic, "Flare echoes", + ("TESS SPOC twenty-second light curves of the stars within 30 pc" if nearby else "TESS SPOC twenty-second and two-minute" if tess else "Kepler short-cadence") + " PDCSAP light curves from the STScI AWS mirror", + "; ".join("%s: %d flares" % (o["name"], o["n"]) for o in out), os.path.abspath(__file__), "flareecho", sum(o["n"] for o in out), "flares", + dict(kic=kic, tess=tess, nearby=nearby, min_flares=min_flares, snr_min=snr_min, tau_max=tau_max, z_min=z_min, mask_snr=mask_snr), + "the same correlation at delays before each star's flares, spread per delay %s of the flare" % ", ".join("%.2g" % o["width"] for o in out), + "a copy of each flare's impulse at one delay of 3-%d minutes; %g widths is an echo of %s of the flare" % (tau_max, z_min, ", ".join("%.2g" % (z_min * o["width"]) for o in out)), + "%d of %d stars with a delay at %g widths or more after their flares, %d of them above the largest before their flares, %d of those left once single flares and eclipses are read" % ( + sum(1 for o in out if o["hits"]), len(out), z_min, sum(1 for o in out if o["hits"] and o["z"] > o["pre"]), + sum(1 for o in out if o["hits"] and o["z"] > o["pre"] and o["vet"] is None)), + [dict(target=o["target"], stat=round(o["z"], 2), unit="widths of the echo spread before the flares, at the strongest delay", + vet=o["vet"] if o["vet"] else (None if o["z"] >= max(z_min, o["pre"]) else "chance-rate"), + note="%s: echo %.4f of the flare at %d min; spread %.2g; largest before the flares %.1f widths; %d flares%s" % ( + o["name"], o["eps"], o["tau"], o["width"], o["pre"], o["n"], "; with one flare left out %.4f" % o["loo"] if o["loo"] is not None else "")) + for o in out]) + print("recorded") + +tones_DOC = r"""Minute tones at the nearest stars: every TESS twenty-second light curve the discrete-level search read (the stars within 30 pc), its hour-long variations and its flares removed, its Fourier amplitude read at every period from 1 to 60 minutes against its own running median; a beacon modulating a star or a swarm of regular structure sounds a pure tone that holds its frequency, where cool dwarfs pulsate too faintly to see at these periods, so a tone belongs to a pulsating white dwarf, delta Scuti or roAp star in the aperture, a hot star of its own, or the spacecraft, and the tone's amplitude in the flux-weighted centroid places the source on or off the target; a frequency other stars share within 0.05 cycles a day is the spacecraft's, a whole multiple of the light curve's strongest slow signal, up to the twentieth, is that signal's harmonic, and VSX and SIMBAD name eclipsing binaries and white dwarfs. + + python -I seti.py flashes tones [record] [--snr-min 6] [--p-min-min 1] [--p-max-min 60] [--offset-max 0.3]""" + + +def tones_one(path, f_lo, f_hi): + """A twenty-second light curve's strongest tone between f_lo and f_hi cycles a day: frequency, amplitude, signal-to-noise against the running median of the amplitude spectrum, and the centroid's amplitude there in pixels per unit flux.""" + from astropy.io import fits + from scipy.ndimage import median_filter + with fits.open(path) as h: + H, d = h[0].header, h[1].data + t, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"]) + cad = np.asarray(d["CADENCENO"], int) + cx, cy = np.asarray(d["MOM_CENTR1"], float), np.asarray(d["MOM_CENTR2"], float) + ok = np.isfinite(t) & np.isfinite(f) & np.isfinite(cx) & np.isfinite(cy) & (q == 0) + if ok.sum() < 20000: + return None + t, f, cad, cx, cy = t[ok], f[ok], cad[ok], cx[ok], cy[ok] + r = f / np.median(f) - 1.0 + r = r - median_filter(r, size=181, mode="nearest") + sig = 1.4826 * float(np.median(np.abs(r))) + # a flare and the half-hour after it are taken out + bad = np.zeros(len(r), bool) + for i in np.flatnonzero(r > 5 * sig): + bad[max(i - 3, 0):i + 90] = True + cx = cx - median_filter(cx, size=181, mode="nearest") + cy = cy - median_filter(cy, size=181, mode="nearest") + n = int(cad.max() - cad.min() + 1) + grid = np.zeros((3, n)) + k = cad - cad.min() + for row, x in enumerate((r, cx, cy)): + grid[row, k] = np.where(bad, 0.0, x) + dt = float(np.median(np.diff(t))) + A = np.abs(np.fft.rfft(grid, axis=1)) * 2 / max((~bad).sum(), 1) + freq = np.fft.rfftfreq(n, d=dt) + # the light curve's strongest slow signal, before the hour-long variations are taken out, of which a tone may be a harmonic + raw = np.zeros(n) + raw[k] = f / np.median(f) - 1.0 + R = np.abs(np.fft.rfft(raw - raw[k].mean() * (raw != 0))) + slow = freq > 0.3 + f0 = float(freq[slow][np.argmax(R[slow])]) + band = (freq >= f_lo) & (freq <= f_hi) + noise = median_filter(A[0], size=401, mode="nearest") + snr = np.where(band, A[0] / np.maximum(noise, 1e-30), 0) + j = int(np.argmax(snr)) + return dict(tic=int(H.get("TICID")), sector=int(H.get("SECTOR")), tmag=float(H.get("TESSMAG") or np.nan), radius=H.get("RADIUS"), ra=float(H.get("RA_OBJ")), dec=float(H.get("DEC_OBJ")), + freq=float(freq[j]), amp=float(A[0][j]), snr=float(snr[j]), offset=float(np.hypot(A[1][j], A[2][j]) / max(A[0][j], 1e-12)), f0=f0) + + +def tones_main(record=False, snr_min=6.0, p_min_min=1.0, p_max_min=60.0, offset_max=0.3, procs=8): + import glob + from concurrent.futures import ProcessPoolExecutor + files = sorted(glob.glob(core.data("tess20", "*.fits"))) + f_lo, f_hi = 1440.0 / p_max_min, 1440.0 / p_min_min + with ProcessPoolExecutor(procs) as ex: + res = [x for x in ex.map(tones_one, files, [f_lo] * len(files), [f_hi] * len(files), chunksize=8) if x] + tones = [x for x in res if x["snr"] >= snr_min] + for x in tones: + x["shared"] = sorted({y["tic"] for y in tones if y["tic"] != x["tic"] and abs(y["freq"] - x["freq"]) < 0.05}) + x["sectors_same"] = sorted({y["sector"] for y in tones if y["tic"] == x["tic"] and abs(y["freq"] - x["freq"]) < 0.05}) + stars = len({x["tic"] for x in res}) + # a tone from the target barely moves the centroid; a neighbour's moves it by its separation in pixels per unit of the target's flux + for x in tones: + x["vet"] = "detector-wide" if x["shared"] else ("blend" if x["offset"] > offset_max else None) + # a harmonic of order up to 20 within two frequency bins of a sector (0.08 cycles a day) + h = int(round(x["freq"] / x["f0"])) + x["harmonic"] = h if 2 <= h <= 20 and abs(x["freq"] - h * x["f0"]) <= 0.08 else 0 + if tones: + sb = {} + for m in core.xmatch([dict(source_id=str(x["tic"]), ra=x["ra"], dec=x["dec"]) for x in tones], "I/355/gaiadr3", 5.0): + if m["source_id"] not in sb or float(m["angDist"]) < sb[m["source_id"]][0]: + sb[m["source_id"]] = (float(m["angDist"]), num(m.get("BP-RP")), num(m.get("Gmag"))) + for x in tones: + g = sb.get(str(x["tic"])) + x["bp_rp"], x["g"] = (g[1], g[2]) if g else (None, None) + # A and F stars pulsate at these periods themselves, delta Scuti and roAp alike + if x["vet"] is None and x["bp_rp"] is not None and x["bp_rp"] < 0.7: + x["vet"] = "variable-star" + # the rest by what the star is: a harmonic of its own slow light curve, an eclipsing binary in VSX, a white dwarf in SIMBAD, which pulsates at minutes + rest = [x for x in tones if x["vet"] is None] + vsx = {} + if rest: + for m in core.xmatch([dict(source_id=str(x["tic"]), ra=x["ra"], dec=x["dec"]) for x in rest], "B/vsx/vsx", 3.0): + vsx[m["source_id"]] = (m.get("Type") or "").strip() + otype = {r_["id"]: r_["otype"] for r_ in core.tap("simbad", "SELECT i.id, b.otype FROM ident AS i JOIN basic AS b ON b.oid = i.oidref WHERE i.id IN (%s)" % ",".join( + "'TIC %d'" % x["tic"] for x in rest))} + for x in rest: + x["vsx"], x["otype"] = vsx.get(str(x["tic"]), ""), otype.get("TIC %d" % x["tic"], "") + if x["otype"].startswith("WD") or x["vsx"].startswith("ZZ"): + x["vet"] = "variable-star" + elif x["vsx"].startswith("E"): + x["vet"] = "eclipsing-binary" + elif x["harmonic"]: + x["vet"] = "rotation" + left = [x for x in tones if x["vet"] is None] + print("%d twenty-second light curves of %d stars within 30 pc; tones at %g times the local amplitude between %g and %g minutes: %d, of which %d at frequencies other stars share, %d moving the centroid as a neighbour would, %d on stars that pulsate at minutes (hot stars and white dwarfs), %d harmonics of a slower signal or an eclipsing binary's, %d left" % ( + len(res), stars, snr_min, p_min_min, p_max_min, len(tones), sum(x["vet"] == "detector-wide" for x in tones), sum(x["vet"] == "blend" for x in tones), + sum(x["vet"] == "variable-star" for x in tones), sum(x["vet"] in ("rotation", "eclipsing-binary") for x in tones), len(left))) + for x in sorted(tones, key=lambda x: -x["snr"])[:25]: + print(" TIC %-10d s%02d %8.3f c/d (%6.2f min) %7.1f ppm S/N %5.1f centroid %.3f px BP-RP %s harmonic %d %s %s %s" % ( + x["tic"], x["sector"], x["freq"], 1440 / x["freq"], 1e6 * x["amp"], x["snr"], x["offset"], "%.2f" % x["bp_rp"] if x.get("bp_rp") is not None else "-", + x["harmonic"], x.get("vsx") or "", x.get("otype") or "", x["vet"] or "LEFT")) + json.dump(dict(n=len(res), tones=tones), open(core.results("tess20_minute_tones.json"), "w"), indent=1) + if record: + core.record_run( + "tess20_minute_tones", "Minute tones at the nearest stars", "TESS SPOC twenty-second PDCSAP light curves of the stars within 30 pc (the discrete-level search's set)", + "%d light curves of %d stars" % (len(res), stars), os.path.abspath(__file__), "tones", len(res), "light curves", + dict(snr_min=snr_min, p_min_min=p_min_min, p_max_min=p_max_min, offset_max=offset_max), + "each amplitude spectrum's running median over 401 bins; a Rayleigh spectrum passes %g times its median once in %.0e bins" % (snr_min, math.exp(-math.log(2) * snr_min ** 2)), + "a tone of 1-60 minutes at %g times the local amplitude" % snr_min, + "%d tones: %d shared, %d off the target, %d on hot stars and white dwarfs, %d harmonics of a slower signal or an eclipsing binary's, %d left" % ( + len(tones), sum(x["vet"] == "detector-wide" for x in tones), sum(x["vet"] == "blend" for x in tones), sum(x["vet"] == "variable-star" for x in tones), + sum(x["vet"] in ("rotation", "eclipsing-binary") for x in tones), len(left)), + [dict(target="tic:%d" % x["tic"], stat=round(x["snr"], 1), unit="times the local amplitude", vet=x["vet"], + note="sector %d, %.3f c/d (%.2f min), %.1f ppm, centroid %.3f px per unit flux, BP-RP %s; harmonic %d of %.4f c/d; VSX %s, SIMBAD %s; shared with %s" % ( + x["sector"], x["freq"], 1440 / x["freq"], 1e6 * x["amp"], x["offset"], "%.2f" % x["bp_rp"] if x.get("bp_rp") is not None else "-", x["harmonic"], x["f0"], + x.get("vsx") or "-", x.get("otype") or "-", ", ".join("TIC %d" % t for t in x["shared"][:5]) or "none")) for x in tones]) + print("recorded") + + +chirps_DOC = r"""Chirps at the nearest stars: every TESS twenty-second light curve the discrete-level search read (the stars within 30 pc, brighter than Tmag 15), its hour-long variations and its flares removed, cut into back-to-back windows of six hours for drifts up to 16 cycles a day per day and of an hour and a half beyond, each window's power at periods of 1-60 minutes, each frequency levelled by its median over the windows and each window by its median over the frequencies, and the windows summed along every straight frequency track whose drift lies between 1 and 60 cycles a day per day either way, as radio searches de-Doppler a drifting carrier; a beacon that sweeps its modulation, or a modulation whose frequency slides with a source's acceleration, gathers its power along one track, where stars hold their pulsation frequencies and a stationary tone belongs to the tone search; a sum's chance is its Gamma tail, a track that the same light curve's windows in shuffled order match belongs to bursts of power rather than to a sweep, a track that other stars of the same sector carry at p 1e-4 when read along it in absolute time, that the flux-weighted centroid carries as strongly as the flux, or that lies within 15 per cent in frequency and a factor of two in drift of such a track in any sector is the spacecraft's, one that vanishes once the band starts 8 cycles a day higher rides the star's own slower variability, and chirps laid into light curves measure the reach. + + python -I seti.py flashes chirps [record] [--rate-max 60] [--rate-min 1] [--p-max 1e-12] [--tmag-max 15] [--inject 0.0005] [--shuffles 100]""" + + +def chirps_prepare(path): + """A twenty-second light curve as (TIC, sector, Tmag, days, relative flux): hour-long variations and flares with the half-hour after them removed, flares set to zero; None when too short.""" + from astropy.io import fits + from scipy.ndimage import median_filter + with fits.open(path) as h: + H, d = h[0].header, h[1].data + t, f, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"]) + cad = np.asarray(d["CADENCENO"], int) + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + if ok.sum() < 20000: + return None + t, f, cad = t[ok], f[ok], cad[ok] + r = f / np.median(f) - 1.0 + r = r - median_filter(r, size=181, mode="nearest") + sig = 1.4826 * float(np.median(np.abs(r))) + bad = np.zeros(len(r), bool) + for i in np.flatnonzero(r > 5 * sig): + bad[max(i - 3, 0):i + 90] = True + n = int(cad.max() - cad.min() + 1) + x, have = np.zeros(n), np.zeros(n, bool) + x[cad - cad.min()] = np.where(bad, 0.0, r) + have[cad - cad.min()] = ~bad + dt = float(np.median(np.diff(t))) + return int(H.get("TICID")), int(H.get("SECTOR")), float(H.get("TESSMAG") or 99), float(t[0]), dt, x, have + + +def chirps_spectrogram(x, have, dt, f_lo, f_hi, window_days): + """Power of back-to-back windows at frequencies f_lo-f_hi (cycles a day), each frequency over its median in time and then each window over its median, with the windows' centres (days) and the frequency step; windows under 70 per cent filled left out.""" + w = int(round(window_days / dt)) + step = w + freq = np.fft.rfftfreq(w, d=dt) + band = (freq >= f_lo) & (freq <= f_hi) + rows, centres = [], [] + hann = np.hanning(w) + for a in range(0, len(x) - w + 1, step): + if have[a:a + w].mean() < 0.7: + continue + p = np.abs(np.fft.rfft(x[a:a + w] * hann)) ** 2 + rows.append(p[band]) + centres.append((a + w / 2) * dt) + P = np.array(rows) + if len(P): + # each frequency over its own median in time, as radio searches level each channel, so that steady lines and red noise drop out and a sweep, which passes each frequency briefly, stays + P = P / np.maximum(np.median(P, axis=0, keepdims=True), 1e-30) + P = P / np.maximum(np.median(P, axis=1, keepdims=True), 1e-30) * math.log(2) + return P, np.array(centres), freq[band], 1.0 / window_days + + +def chirps_logp(acc, cnt): + """The natural log of the chance that cnt unit exponentials sum to acc or more: the Gamma tail, by its leading term where the tail underflows.""" + from scipy.special import gammaln + from scipy.stats import gamma + lp = gamma.logsf(acc, np.maximum(cnt, 1)) + lead = -acc + (np.maximum(cnt, 1) - 1) * np.log(np.maximum(acc, 1e-300)) - gammaln(np.maximum(cnt, 1)) + return np.where(np.isfinite(lp), lp, lead) + + +def chirps_search(P, centres, df, rates): + """Each straight track's summed power: for every drift rate the windows' power shifted to the track's frequency at the window's time, summed; the track of least chance as (log p, rate, bin).""" + K, B = P.shape + tc = centres - centres.mean() + best = (np.inf, None, None) + out = [] + for rate in rates: + shift = np.round(rate * tc / df).astype(int) + acc = np.zeros(B) + cnt = np.zeros(B) + for k in range(K): + lo, hi = max(0, -shift[k]), min(B, B - shift[k]) + if hi > lo: + acc[lo:hi] += P[k, lo + shift[k]:hi + shift[k]] + cnt[lo:hi] += 1 + good = cnt >= max(3, K // 2) + if not good.any(): + continue + lp = np.where(good, chirps_logp(acc, cnt), 0.0) + j = int(np.argmin(lp)) + out.append((float(lp[j]), float(rate), j, int(cnt[j]))) + if lp[j] < best[0]: + best = (float(lp[j]), float(rate), j) + return best, out + + +def chirps_one(args): + """One light curve's strongest drifting track and strongest stationary one, as a dict, optionally with a chirp laid in first and with the strongest drifting track of each of SHUFFLES orderings of the windows.""" + path, f_lo, f_hi, rates, inject = args[:5] + shuffles = args[5] if len(args) > 5 else 0 + c = chirps_prepare(path) + if c is None: + return None + tic, sector, tmag, t0, dt, x, have = c + if inject: + amp, f0, rate = inject + tt = np.arange(len(x)) * dt + tm = tt.mean() + x = x + np.where(have, amp * np.sin(2 * np.pi * (f0 * (tt - tm) + 0.5 * rate * (tt - tm) ** 2)), 0.0) + best = dict(tic=tic, sector=sector, tmag=tmag, logp=0.0, rate=0.0, f=None, windows=0, logp_still=0.0, f_still=None, logp_shuffled=[], t_ref=None, window_days=None) + rng = np.random.default_rng(tic % 100000) + shuffled = np.zeros(shuffles) + # each pass's windows are short enough that its fastest drift crosses no more than one frequency bin within a window + for window_days, rs in rates: + P, centres, freq, df = chirps_spectrogram(x, have, dt, f_lo, f_hi, window_days) + if len(P) < 6: + continue + (lp, rate, j), _ = chirps_search(P, centres, df, rs) + if j is not None and lp < best["logp"]: + best.update(logp=lp, rate=rate, f=float(freq[j]), windows=len(P), t_ref=float(t0 + centres.mean()), window_days=window_days) + # the windows' order shuffled keeps every burst of power and breaks every straight track + for k in range(shuffles): + shuffled[k] = min(shuffled[k], chirps_search(P[rng.permutation(len(P))], centres, df, rs)[0][0]) + if window_days == rates[0][0]: + (lp0, _, j0), _ = chirps_search(P, centres, df, [0.0]) + best.update(logp_still=lp0, f_still=float(freq[j0]) if j0 is not None else None) + best["logp_shuffled"] = shuffled.tolist() + return best if best["windows"] else None + + +def chirps_track(args): + """The chance of one light curve's power along a given track in absolute time (frequency f at time t_ref, drifting by rate), with the window length the track was found in.""" + path, f_lo, f_hi, f, rate, t_ref, window_days = args + c = chirps_prepare(path) + if c is None: + return None + tic, sector, tmag, t0, dt, x, have = c + P, centres, freq, df = chirps_spectrogram(x, have, dt, f_lo, f_hi, window_days) + if len(P) < 6: + return None + b = np.round((f + rate * (t0 + centres - t_ref) - freq[0]) / df).astype(int) + ok = (b >= 0) & (b < P.shape[1]) + if ok.sum() < 6: + return None + acc = float(P[np.flatnonzero(ok), b[ok]].sum()) + return tic, float(chirps_logp(np.array([acc]), np.array([ok.sum()]))[0]) + + +def chirps_centroid(args): + """The chance of a light curve's flux and of each axis of its flux-weighted centroid along one track in absolute time, the flux's first.""" + from astropy.io import fits + from scipy.ndimage import median_filter + path, f_lo, f_hi, f, rate, t_ref, window_days = args + with fits.open(path) as h: + d = h[1].data + t, fl, q = np.asarray(d["TIME"], float), np.asarray(d["PDCSAP_FLUX"], float), np.asarray(d["QUALITY"]) + cad = np.asarray(d["CADENCENO"], int) + cx, cy = np.asarray(d["MOM_CENTR1"], float), np.asarray(d["MOM_CENTR2"], float) + ok = np.isfinite(t) & np.isfinite(fl) & np.isfinite(cx) & np.isfinite(cy) & (q == 0) + t, fl, cad, cx, cy = t[ok], fl[ok], cad[ok], cx[ok], cy[ok] + dt = float(np.median(np.diff(t))) + out = [] + for v in (fl / np.median(fl) - 1, cx - np.median(cx), cy - np.median(cy)): + v = v - median_filter(v, size=181, mode="nearest") + n = int(cad.max() - cad.min() + 1) + x, have = np.zeros(n), np.zeros(n, bool) + x[cad - cad.min()] = v + have[cad - cad.min()] = True + P, centres, freq, df = chirps_spectrogram(x, have, dt, f_lo, f_hi, window_days) + b = np.round((f + rate * (t[0] + centres - t_ref) - freq[0]) / df).astype(int) + good = (b >= 0) & (b < P.shape[1]) + out.append(float(chirps_logp(np.array([float(P[np.flatnonzero(good), b[good]].sum())]), np.array([good.sum()]))[0])) + return out + + +def chirps_prepare_key(path): + """A twenty-second light curve file's (TIC, sector) from its header.""" + from astropy.io import fits + H = fits.getheader(path) + return int(H.get("TICID")), int(H.get("SECTOR")) + + +def chirps_main(record=False, rate_max=60.0, rate_min=1.0, p_max=1e-12, tmag_max=15.0, inject=0.0005, shuffles=100, procs=8): + import glob + from concurrent.futures import ProcessPoolExecutor + from astropy.io import fits + files = [f for f in sorted(glob.glob(core.data("tess20", "*.fits"))) if (fits.getheader(f).get("TESSMAG") or 99) <= tmag_max] + f_lo, f_hi = 24.0, 1440.0 + # six-hour windows for drifts up to 16 cycles a day per day, an hour and a half beyond; the step keeps the track within half a bin over 25 days + span = 25.0 + slow = [r for r in np.arange(-16.0, 16.0 + 1e-9, 4.0 / span / 2) if rate_min <= abs(r) <= min(16.0, rate_max)] + fast = [r for r in np.arange(-64.0, 64.0 + 1e-9, 16.0 / span / 2) if 16.0 < abs(r) <= rate_max] + rates = [(0.25, slow), (0.0625, fast)] if fast else [(0.25, slow)] + with ProcessPoolExecutor(procs) as ex: + res = [x for x in ex.map(chirps_one, [(f, f_lo, f_hi, rates, None) for f in files], chunksize=4) if x] + lim = math.log(p_max) + hits = [x for x in res if x["logp"] <= lim] + if hits: + # each light curve below the threshold read again with its windows shuffled + byname = {chirps_prepare_key(f): f for f in files} + with ProcessPoolExecutor(procs) as ex: + again = list(ex.map(chirps_one, [(byname[(x["tic"], x["sector"])], f_lo, f_hi, rates, None, shuffles) for x in hits], chunksize=1)) + for x, y in zip(hits, again): + x["logp_shuffled"] = y["logp_shuffled"] if y else [] + keys = {chirps_prepare_key(f): f for f in files} if hits else {} + for x in hits: + x["vet"] = "chance-rate" if x["logp_shuffled"] and min(x["logp_shuffled"]) <= x["logp"] else None + x["shared"] = [] + # a track that other stars of the same sector carry at p 1e-4 belongs to the spacecraft: every other light curve of the sector read along it + for x in [x for x in hits if x["vet"] is None]: + others = [f for (tic, sec), f in keys.items() if sec == x["sector"] and tic != x["tic"]] + with ProcessPoolExecutor(procs) as ex: + got = [g for g in ex.map(chirps_track, [(f, f_lo, f_hi, x["f"], x["rate"], x["t_ref"], x["window_days"]) for f in others], chunksize=4) if g] + x["shared"] = [tic for tic, lp in got if lp <= math.log(1e-4)] + x["sector_read"] = len(got) + if x["shared"]: + x["vet"] = "detector-wide" + rest = [x for x in hits if x["vet"] is None] + for x in rest: + path = keys[(x["tic"], x["sector"])] + # pointing jitter moves the image: a track at least as strong in the centroid as in the flux is the spacecraft's + fl, col, row = chirps_centroid((path, f_lo, f_hi, x["f"], x["rate"], x["t_ref"], x["window_days"])) + x["centroid"] = (col, row) + if min(col, row) <= fl: + x["vet"] = "detector-wide" + continue + # a track that vanishes once the band starts 8 cycles a day higher rode the leakage of the star's own slower variability + y = chirps_one((path, f_lo + 8.0, f_hi, rates, None, 20)) + x["above_floor"] = (y["logp"], min(y["logp_shuffled"])) if y else None + if y and y["logp"] >= min(y["logp_shuffled"]): + x["vet"] = "variable-star" + # a track like a spacecraft track of any sector, within 15 per cent in frequency and a factor of two in drift of the same sign, joins its family + craft = [y for y in hits if y["vet"] == "detector-wide"] + for x in [x for x in hits if x["vet"] is None]: + x["family"] = [(y["tic"], y["sector"]) for y in craft if abs(x["f"] / y["f"] - 1) < 0.15 and x["rate"] * y["rate"] > 0 and 0.5 < x["rate"] / y["rate"] < 2] + if x["family"]: + x["vet"] = "detector-wide" + # the reach: chirps of 0.05 per cent at 300 cycles a day sliding 20 cycles a day per day laid into twenty light curves + rng = np.random.default_rng(3) + pick = [files[i] for i in rng.choice(len(files), size=min(20, len(files)), replace=False)] + with ProcessPoolExecutor(procs) as ex: + inj = [x for x in ex.map(chirps_one, [(f, f_lo, f_hi, rates, (inject, 300.0, 20.0)) for f in pick], chunksize=1) if x] + found = sum(1 for x in inj if x["logp"] <= lim and abs(x["rate"] - 20.0) <= 1.0 and abs(x["f"] - 300.0) <= 16.0) + lps = np.array([x["logp"] for x in res]) + print("%d twenty-second light curves of stars within 30 pc at Tmag %g or brighter; drifting tracks of %g-%g cycles a day per day between 1 and 60 minutes: median best log p %.1f, %d below p %g: %d matched by their own windows shuffled, %d the spacecraft's (shared in the sector, in the centroid or of a spacecraft family), %d riding a star's slower variability, %d left; a chirp of %.2f per cent at 300 c/d drifting 20 c/d per day is found in %d of %d light curves" % ( + len(res), tmag_max, rate_min, rate_max, float(np.median(lps)), len(hits), p_max, sum(x["vet"] == "chance-rate" for x in hits), sum(x["vet"] == "detector-wide" for x in hits), + sum(x["vet"] == "variable-star" for x in hits), sum(x["vet"] is None for x in hits), 100 * inject, found, len(inj))) + for x in sorted(res, key=lambda x: x["logp"])[:15]: + print(" TIC %-10d s%02d Tmag %5.2f log p %7.1f at %+6.1f c/d per day from %7.2f c/d; shuffled best %s; stationary log p %7.1f; %s" % ( + x["tic"], x["sector"], x["tmag"], x["logp"], x["rate"], x["f"] or 0, "%.1f" % min(x["logp_shuffled"]) if x.get("logp_shuffled") else "-", x["logp_still"], + x.get("vet") or ("" if x["logp"] > lim else "LEFT"))) + json.dump(dict(n=len(res), hits=hits, injected=inj), open(core.results("tess20_chirps.json"), "w"), indent=1) + if record: + core.record_run( + "tess20_chirps", "Chirps at the nearest stars", "TESS SPOC twenty-second PDCSAP light curves of the stars within 30 pc (the discrete-level search's set)", + "%d light curves at Tmag %g or brighter" % (len(res), tmag_max), os.path.abspath(__file__), "chirps", len(res), "light curves", + dict(rate_max=rate_max, rate_min=rate_min, p_max=p_max, tmag_max=tmag_max, inject=inject, shuffles=shuffles), + "the Gamma tail of each track's summed power over its windows' medians; the median light curve's best track has log p %.1f" % float(np.median(lps)), + "a track drifting %g-%g cycles a day per day at p %g; a chirp of %.2f per cent at 300 c/d drifting 20 c/d per day is found in %d of %d light curves" % (rate_min, rate_max, p_max, 100 * inject, found, len(inj)), + "%d tracks below p %g: %d matched by their own windows shuffled, %d the spacecraft's, %d riding a star's slower variability, %d left" % ( + len(hits), p_max, sum(x["vet"] == "chance-rate" for x in hits), sum(x["vet"] == "detector-wide" for x in hits), sum(x["vet"] == "variable-star" for x in hits), + sum(x["vet"] is None for x in hits)), + [dict(target="tic:%d" % x["tic"], stat=round(x["logp"], 1), unit="natural log of the track's chance", vet=x["vet"], + note="sector %d, Tmag %.2f, %+.1f c/d per day from %.2f c/d over %d windows; shuffled best log p %s; centroid log p %s; band 8 c/d higher %s; shared with %s; family %s" % ( + x["sector"], x["tmag"], x["rate"], x["f"] or 0, x["windows"], "%.1f" % min(x["logp_shuffled"]) if x.get("logp_shuffled") else "-", + "%.1f/%.1f" % x["centroid"] if x.get("centroid") else "-", "%.1f against %.1f shuffled" % x["above_floor"] if x.get("above_floor") else "-", + ", ".join("TIC %d" % t for t in x["shared"]) or "none", ", ".join("TIC %d s%d" % fs for fs in x.get("family", [])) or "none")) + for x in hits]) + print("recorded") + + +APPROACHES = { + "chirps": (lambda: core.run_cli(chirps_main), chirps_DOC), + "tones": (lambda: core.run_cli(tones_main), tones_DOC), + "flareecho": (lambda: core.run_cli(flareecho_main), flareecho_DOC), + "twomessengers": (lambda: core.run_cli(twomessengers_main), twomessengers_DOC), + "vascobelt": (lambda: core.run_cli(vascobelt_main), vascobelt_DOC), + "ebtwins": (lambda: core.run_cli(ebtwins_main), ebtwins_DOC), + "tesswholedays": (lambda: core.run_cli(tesswholedays_main), tesswholedays_DOC), + "ebwholedays": (lambda: core.run_cli(ebwholedays_main), ebwholedays_DOC), + "copyebs": (lambda: core.run_cli(copyebs_main), copyebs_DOC), + "wdvary": (lambda: core.run_cli(wdvary_main), wdvary_DOC), + "unclassified": (lambda: core.run_cli(unclassified_main), unclassified_DOC), + "flicker": (lambda: core.run_cli(flicker_main), flicker_DOC), + "symflares": (lambda: core.run_cli(symflares_main), symflares_DOC), + "sndeficit": (lambda: core.run_cli(sndeficit_main), sndeficit_DOC), + "flaresync": (lambda: core.run_cli(flaresync_main), flaresync_DOC), + "flarecopies": (lambda: core.run_cli(flarecopies_main), flarecopies_DOC), + "steady": (lambda: core.run_cli(steady_main), steady_DOC), + "neliota": (neliota_cli, neliota_DOC), + "superflare": (superflare_cli, superflare_DOC), + "clocks": (lambda: core.run_cli(clocks_main), clocks_DOC), + "nova": (nova_cli, nova_DOC), + "etz": (etz_cli, etz_DOC), + "levels": (levels_cli, levels_DOC), + "keplevels": (keplevels_cli, keplevels_DOC), + "determinism": (determinism_cli, determinism_DOC), + "psfflash": (psfflash_cli, psfflash_DOC), + "clockwork": (clockwork_cli, clockwork_DOC), + "tophat": (tophat_cli, tophat_DOC), + "tess20": (tess20_cli, tess20_DOC), + "toi": (toi_cli, toi_DOC), + "kepler": (kepler_cli, kepler_DOC), + "asteroids": (asteroids_cli, asteroids_DOC), +} + + diff --git a/setitools/highenergy.py b/setitools/highenergy.py new file mode 100644 index 0000000000000000000000000000000000000000..230765203b9cb5b72e0e3020fac4145ac143562f --- /dev/null +++ b/setitools/highenergy.py @@ -0,0 +1,3411 @@ +"""X-ray, gamma-ray, neutrino and millimetre signatures of nearby stars.""" +import argparse +import csv +import glob +import gzip +import io +import json +import math +import os +import sys +import tarfile +import urllib.parse +import urllib.request +from concurrent.futures import ThreadPoolExecutor + +import numpy as np + +from setitools import catalogues, core, science +from setitools.catalogues import cold_dwarfs, shifted_matches +from setitools.core import num, quiet_warnings, sep_arcsec + + +# -------------------------------------------------------------------------------------------------------------- + +sources_DOC = r"""eRASS1 and 4FGL-DR4 sources on stars within 20 pc: log Lx/Lbol above -2.5, hard spectra, or gamma-ray ellipses beyond the area expectation. + + python -I seti.py highenergy sources""" + + +sources_HERE = core.RESULTS +sources_EPOCH = 2020.3 +sources_BP_RP = np.array([0.0, 0.5, 0.82, 1.2, 1.8, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]) +sources_BC_G = np.array([-0.1, 0.05, 0.08, -0.05, -0.35, -0.8, -1.1, -1.4, -1.8, -2.3, -2.8]) +sources_LSUN = 3.828e33 +sources_PC = 3.0857e18 + + +def sources_xmatch(rows, cat, radius=30.0): + """CDS XMatch of epoch-propagated star positions against a VizieR catalogue.""" + return core.xmatch(rows, cat, radius, ra_col="ra_ep", dec_col="dec_ep", timeout=600) + + +def sources_fnum(x): + return num(x, float("nan")) + + +def sources_main(): + stars = list(csv.DictReader(open(os.path.join(sources_HERE, "near20.csv")))) + for r in stars: + dt = sources_EPOCH - 2016.0 + dec = float(r["dec"]) + r["ra_ep"] = float(r["ra"]) + sources_fnum(r["pmra"] or 0) / 3.6e6 * dt / math.cos(math.radians(dec)) + r["dec_ep"] = dec + sources_fnum(r["pmdec"] or 0) / 3.6e6 * dt + byid = {r["source_id"]: r for r in stars} + out = dict(xray=[], hard=[], gamma=[]) + for key, cat in (("xray", "J/A+A/682/A34/erass1-m"), ("hard", "J/A+A/682/A34/erass1-h")): + m = sources_xmatch(stars, cat) + for x in m: + s = byid[x["source_id"]] + sep = sources_fnum(x["angDist"]) + perr = sources_fnum(x.get("posErr")) if x.get("posErr") else sources_fnum(x.get("RADEErr")) + if not (sep <= 3.0 * math.hypot(perr if np.isfinite(perr) else 5.0, 1.0)): + continue + plx = sources_fnum(s["parallax"]) + d = 1000.0 / plx * sources_PC + fx = sources_fnum(x["MLFlux1"]) + lx = 4 * math.pi * d * d * fx if np.isfinite(fx) else float("nan") + mg = sources_fnum(s["phot_g_mean_mag"]) + 5 * math.log10(plx / 100.0) + col = sources_fnum(s["bp_rp"]) + bc = float(np.interp(col, sources_BP_RP, sources_BC_G)) if np.isfinite(col) else -1.0 + sources_lbol = sources_LSUN * 10 ** (-0.4 * (mg + bc - 4.74)) + soft = sum(sources_fnum(x.get("MLFluxP%d" % k)) for k in (1, 2)) if key == "xray" else float("nan") + hard = sum(sources_fnum(x.get("MLFluxP%d" % k)) for k in (3, 4)) if key == "xray" else float("nan") + hr = (hard - soft) / (hard + soft) if np.isfinite(soft) and np.isfinite(hard) and hard + soft > 0 else float("nan") + out[key].append(dict(source_id=s["source_id"], sep=round(sep, 2), pos_err=perr, fx=fx, lx=lx, + log_lx_lbol=round(math.log10(lx / sources_lbol), 2) if lx > 0 else None, hr=round(hr, 2) if np.isfinite(hr) else None, + g=sources_fnum(s["phot_g_mean_mag"]), bp_rp=col, plx=plx, ruwe=sources_fnum(s["ruwe"]), + nss=s["non_single_star"], det_like=sources_fnum(x.get("DetLike0")), ext=sources_fnum(x.get("EXT")), + mjd=sources_fnum(x.get("MJD")), ra=sources_fnum(x.get("RA_ICRS")), dec=sources_fnum(x.get("DE_ICRS")), + name=x.get("IAUName"))) + print("%s: %d stars within 20 pc matched in %s" % (key, len(out[key]), cat), flush=True) + # unassociated 4FGL-DR4 sources whose 95 per cent ellipse holds a star + path = os.path.join(sources_HERE, "gll_psc_v35.fit") + if not os.path.exists(path): + b = urllib.request.urlopen("https://fermi.gsfc.nasa.gov/ssc/data/access/lat/14yr_catalog/gll_psc_v35.fit", + timeout=300).read() + open(path, "wb").write(b) + from astropy.io import fits + with fits.open(path) as h: + t = h["LAT_Point_Source_Catalog"].data + cls = np.char.strip(np.asarray(t["CLASS1"]).astype(str)) + un = (cls == "") | (cls == "unk") + ra, dec = np.asarray(t["RAJ2000"], float)[un], np.asarray(t["DEJ2000"], float)[un] + a, b_, pa = (np.asarray(t["Conf_95_SemiMajor"], float)[un], np.asarray(t["Conf_95_SemiMinor"], float)[un], + np.asarray(t["Conf_95_PosAng"], float)[un]) + names = np.asarray(t["Source_Name"]).astype(str)[un] + ok = np.isfinite(a) & np.isfinite(b_) + area = float(np.sum(np.pi * a[ok] * b_[ok])) + expected = len(stars) * area / 41252.96 + for s in stars: + sra, sdec = s["ra_ep"], s["dec_ep"] + dx = (sra - ra) * np.cos(np.radians(sdec)) + dy = sdec - dec + near = np.nonzero(ok & (np.abs(dy) < 1.0) & (np.abs(dx) < 1.0))[0] + for k in near: + th = np.radians(pa[k]) + u = dx[k] * np.sin(th) + dy[k] * np.cos(th) + v = dx[k] * np.cos(th) - dy[k] * np.sin(th) + r2 = (u / a[k]) ** 2 + (v / b_[k]) ** 2 + if r2 <= 1.0: + out["gamma"].append(dict(source_id=s["source_id"], fgl=names[k], ellipse_r=round(float(np.sqrt(r2)), 2), + a95_deg=float(a[k]), g=sources_fnum(s["phot_g_mean_mag"]), bp_rp=sources_fnum(s["bp_rp"]), + plx=sources_fnum(s["parallax"]))) + print("gamma: %d unassociated 4FGL-DR4 sources, ellipses cover %.1f deg2; %d stars inside an ellipse, %.1f expected by " + "chance" % (int(un.sum()), area, len(out["gamma"]), expected)) + json.dump(out, open(os.path.join(sources_HERE, "highenergy_near.json"), "w"), indent=0) + xr = [x for x in out["xray"] if x["log_lx_lbol"] is not None] + v = np.array([x["log_lx_lbol"] for x in xr]) + print("X-ray: log Lx/Lbol median %.2f, %d above -3.0, %d above -2.5" % (np.median(v), int((v > -3).sum()), int((v > -2.5).sum()))) + hrs = np.array([x["hr"] for x in xr if x["hr"] is not None]) + print("hardness (1-5 keV vs 0.2-1 keV): median %.2f, %d of %d above 0" % (np.median(hrs), int((hrs > 0).sum()), len(hrs))) + for x in sorted(xr, key=lambda x: -x["log_lx_lbol"])[:12]: + print(" Gaia DR3 %s G %.2f BP-RP %.2f %.1f pc: log Lx/Lbol %+.2f, HR %s, sep %.1f arcsec (err %.1f), RUWE %.2f, " + "NSS %s" % (x["source_id"], x["g"], x["bp_rp"], 1000 / x["plx"], x["log_lx_lbol"], x["hr"], x["sep"], + x["pos_err"], x["ruwe"], x["nss"])) + print("hard-band (2.3-5 keV) detections of stars within 20 pc:") + for x in sorted(out["hard"], key=lambda x: -x["fx"]): + print(" Gaia DR3 %s G %.2f BP-RP %.2f %.1f pc sep %.1f arcsec, F(0.2-2.3) %.2e" % ( + x["source_id"], x["g"], x["bp_rp"], 1000 / x["plx"], x["sep"], x["fx"])) + for x in out["gamma"]: + print(" gamma: Gaia DR3 %s G %.2f %.1f pc inside %s (r = %.2f of the ellipse, a95 %.3f deg)" + % (x["source_id"], x["g"], 1000 / x["plx"], x["fgl"], x["ellipse_r"], x["a95_deg"])) + + +def sources_lbol(s): + plx = sources_fnum(s["parallax"]) + mg = sources_fnum(s["phot_g_mean_mag"]) + 5 * math.log10(plx / 100.0) + col = sources_fnum(s["bp_rp"]) + bc = float(np.interp(col, sources_BP_RP, sources_BC_G)) if np.isfinite(col) else -1.0 + return sources_LSUN * 10 ** (-0.4 * (mg + bc - 4.74)) + + +def sources_systems(): + """Each eRASS1 source with its stars within 3 sigma: summed L_bol, Lx/Lbol, hardness, and SIMBAD types above -2.5.""" + d = json.load(open(os.path.join(sources_HERE, "highenergy_near.json"))) + stars = {r["source_id"]: r for r in csv.DictReader(open(os.path.join(sources_HERE, "near20.csv")))} + names = sorted({x["name"] for x in d["xray"]}) + meta = {} + for k in range(0, len(names), 100): + q = ("SELECT IAUName, posErr, DetLike0, EXT, MLFlux1, MJD FROM \"J/A+A/682/A34/erass1-m\" WHERE IAUName IN (%s)" + % ",".join("'%s'" % n for n in names[k:k + 100])) + for r in core.tap("vizier", q): + meta[r["IAUName"]] = r + groups = {} + for x in d["xray"]: + groups.setdefault(x["name"], []).append(x) + out = [] + for name, xs in groups.items(): + m = meta.get(name, {}) + perr = sources_fnum(m.get("posErr")) + lim = 3.0 * math.hypot(perr if np.isfinite(perr) else 5.0, 1.0) + members = [x for x in xs if x["sep"] <= lim] + if not members: + continue + lb = sum(sources_lbol(stars[x["source_id"]]) for x in members) + lx = members[0]["lx"] + best = min(members, key=lambda x: x["sep"]) + out.append(dict(name=name, members=[x["source_id"] for x in members], nearest=best["source_id"], + sep=best["sep"], pos_err=perr, log_lx_lbol=round(math.log10(lx / lb), 2) if lx > 0 else None, + hr=best["hr"], det_like=sources_fnum(m.get("DetLike0")), ext=sources_fnum(m.get("EXT")), + g=[stars[x["source_id"]]["phot_g_mean_mag"] for x in members], + dist_pc=round(1000.0 / sources_fnum(stars[best["source_id"]]["parallax"]), 1))) + v = np.array([o["log_lx_lbol"] for o in out if o["log_lx_lbol"] is not None]) + print("%d X-ray sources on %d systems within 20 pc; log Lx/Lbol median %.2f, %d above -3.0, %d above -2.5" + % (len(out), len(out), np.median(v), int((v > -3).sum()), int((v > -2.5).sum()))) + hi = sorted((o for o in out if (o["log_lx_lbol"] or -9) > -2.5), key=lambda o: -o["log_lx_lbol"]) + for o in hi: + sb = core.simbad("SELECT b.main_id, b.otype, b.sp_type FROM basic b JOIN ident i ON i.oidref=b.oid " + "WHERE i.id='Gaia DR3 %s'" % o["nearest"]) + o["simbad"] = sb[0] if sb else {} + print(" %s %s (%s, %s) %.1f pc: log Lx/Lbol %+.2f, HR %s, %d member(s), sep %.1f arcsec (err %.1f), " + "DET_LIKE %.0f" % (o["name"], o["simbad"].get("main_id", o["nearest"]), o["simbad"].get("otype", "?"), + o["simbad"].get("sp_type", "?"), o["dist_pc"], o["log_lx_lbol"], o["hr"], + len(o["members"]), o["sep"], o["pos_err"], o["det_like"])) + json.dump(out, open(os.path.join(sources_HERE, "highenergy_systems.json"), "w"), indent=0) + + +def sources_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "systems": + sources_systems() + else: + sources_main() + + +# -------------------------------------------------------------------------------------------------------------- + +chandra_DOC = r"""Periodic X-rays (6.5-2000 s) from stars within 10 pc in Chandra event lists: Z^2 with dither and frame frequencies masked; FAP below 1e-3 repeated in a second observation. + + python -I seti.py highenergy chandra fetch + python -I seti.py highenergy chandra search + python -I seti.py highenergy chandra record""" + +chandra_ROOT = os.environ.get("XRAY_ROOT", core.data("xray_beacons")) +chandra_HERE = core.RESULTS +chandra_CLI = "https://cda.cfa.harvard.edu/csccli/" +chandra_DITHER = {"ACIS": (1000.0, 707.0), "HRC": (1087.0, 768.6)} +chandra_FRAME = 3.24104 +chandra_P_MIN = 6.5 +chandra_P_MAX = 2000.0 +chandra_OVERSAMPLE = 5 +chandra_MATCH = 3.0 + + +def chandra_cli_query(q): + u = chandra_CLI + "getProperties?" + urllib.parse.urlencode(dict(query=" ".join(q.split()), coordFormat="decimal", + nullAppearance="NaN", version="cur", outputFormat="tsv")) + t = core.get(u, timeout=300, retries=3).decode("latin-1") + if "Error executing query" in t: + raise RuntimeError(t[:300]) + lines = [ln for ln in t.splitlines() if ln and not ln.startswith("#")] + head = [h.strip() for h in lines[0].split("\t")] + return [dict(zip(head, [v.strip() for v in ln.split("\t")])) for ln in lines[1:]] + + +def chandra_star_at(s, mjd): + yrs = (mjd - 51544.5) / 365.25 + ra, dec = float(s["ra"]), float(s["dec"]) + pmra, pmdec = float(s.get("pmra") or 0), float(s.get("pmdec") or 0) + return ra + pmra / 3.6e6 * yrs / math.cos(math.radians(dec)), dec + pmdec / 3.6e6 * yrs + + +def chandra_detections(s): + """Per-observation CSC detections on the star at their epoch.""" + pm = math.hypot(float(s.get("pmra") or 0), float(s.get("pmdec") or 0)) / 1000.0 + radius = (pm * 25 + 10) / 60.0 + q = ("SELECT m.name, o.obsid, o.obi, o.region_id, s.ra, s.dec, o.theta, o.instrument, o.gti_mjd_obs, o.livetime, " + "o.src_cnts_aper_b, o.src_cnts_aper_w, o.dither_warning_flag FROM master_source m, master_stack_assoc a, observation_source o, " + "stack_observation_assoc b, stack_source s WHERE dbo.cone_distance(m.ra,m.dec,%.8f,%.8f)<=%.6f AND " + "(m.name = a.name) AND (s.detect_stack_id = a.detect_stack_id and s.region_id = a.region_id) AND " + "(s.detect_stack_id = b.detect_stack_id and s.region_id = b.region_id) AND (o.obsid = b.obsid and " + "o.obi = b.obi and o.region_id = b.region_id)" % (float(s["ra"]), float(s["dec"]), radius)) + try: + rows = chandra_cli_query(q) + except Exception as e: + print(s["main_id"], "query failed:", str(e)[:100], flush=True) + return [] + out = {} + for r in rows: + try: + mjd, ra, dec = float(r["gti_mjd_obs"]), float(r["ra"]), float(r["dec"]) + except ValueError: + continue + sra, sdec = chandra_star_at(s, mjd) + d = sep_arcsec(sra, sdec, ra, dec) + if d <= chandra_MATCH: + key = (r["obsid"], r["obi"], r["region_id"]) + out[key] = dict(star=s["main_id"], name=r["name"], obsid=r["obsid"], obi=r["obi"], region=r["region_id"], + ra=ra, dec=dec, theta=float(r["theta"]) if r["theta"] != "NaN" else 0.0, + instrument=r["instrument"], mjd=mjd, offset=d, dither_warning=r["dither_warning_flag"]) + return list(out.values()) + + +def chandra_retrieve(det): + os.makedirs(os.path.join(chandra_ROOT, "regevt"), exist_ok=True) + pkg = "%s.%s.%s/regevt3/" % (det["obsid"], det["obi"], det["region"]) + try: + lst = json.loads(core.get(chandra_CLI + "browse?" + urllib.parse.urlencode(dict(packageset=pkg, version="cur")), + timeout=120, retries=3).decode("ascii")) + fn = lst[0]["filename"] + except Exception as e: + return dict(det, file=None, error="browse: " + str(e)[:80]) + path = os.path.join(chandra_ROOT, "regevt", fn + ".gz") + if not os.path.exists(path): + try: + b = core.get(chandra_CLI + "retrieveFile?" + urllib.parse.urlencode(dict(filetype="regevt3", filename=fn, version="cur")), + timeout=300, retries=3) + except Exception as e: + return dict(det, file=None, error="retrieve: " + str(e)[:80]) + open(path + ".tmp", "wb").write(b) + os.replace(path + ".tmp", path) + return dict(det, file=path) + + +def chandra_fetch(): + os.makedirs(chandra_ROOT, exist_ok=True) + stars = core.simbad("SELECT main_id, ra, dec, pmra, pmdec, plx_value, otype FROM basic WHERE plx_value > 100 " + "AND otype NOT IN ('Pl', 'Pl?') AND ra IS NOT NULL") + cache_path = os.path.join(chandra_ROOT, "detections_by_star.json") + cache = json.load(open(cache_path)) if os.path.exists(cache_path) else {} + todo = [s for s in stars if s["main_id"] not in cache] + print("%d objects within 10 pc, %d still to query" % (len(stars), len(todo)), flush=True) + + def one_star(s): + return s["main_id"], chandra_detections(s) + with ThreadPoolExecutor(int(os.environ.get("XRAY_THREADS", "3"))) as ex: + for k, (name, ds) in enumerate(ex.map(one_star, todo)): + cache[name] = ds + if k % 20 == 19 or ds: + json.dump(cache, open(cache_path, "w")) + print("%d/%d queried; %s: %d detections" % (k + 1, len(todo), name, len(ds)), flush=True) + json.dump(cache, open(cache_path, "w")) + dets = [d for ds in cache.values() for d in ds] + uniq = {} + for d in dets: + uniq.setdefault((d["obsid"], d["obi"], d["region"]), d) + dets = list(uniq.values()) + print("%d objects within 10 pc; %d per-observation CSC detections on them, %d stars" % ( + len(stars), len(dets), len({d["star"] for d in dets})), flush=True) + with ThreadPoolExecutor(4) as ex: + got = list(ex.map(chandra_retrieve, dets)) + json.dump(got, open(os.path.join(chandra_ROOT, "detections.json"), "w"), indent=1) + print("%d region event files on disk" % sum(1 for g in got if g.get("file"))) + + +def chandra_events(det): + from astropy.io import fits + with fits.open(det["file"]) as h: + e = h["EVENTS"] + d, hd = e.data, e.header + cols = [c.name.lower() for c in e.columns] + ix, iy = cols.index("x") + 1, cols.index("y") + 1 + crval = (hd["TCRVL%d" % ix], hd["TCRVL%d" % iy]) + crpix = (hd["TCRPX%d" % ix], hd["TCRPX%d" % iy]) + cdelt = (hd["TCDLT%d" % ix], hd["TCDLT%d" % iy]) + t = np.asarray(d["time"], float) + x, y = np.asarray(d["x"], float), np.asarray(d["y"], float) + # tangent-plane event offsets from the source (arcsec) + dec0 = math.radians(crval[1]) + xi = (x - crpix[0]) * cdelt[0] * 3600 + eta = (y - crpix[1]) * cdelt[1] * 3600 + sx = (det["ra"] - crval[0]) * math.cos(dec0) * 3600 + sy = (det["dec"] - crval[1]) * 3600 + r = np.hypot(xi - sx, eta - sy) + gti = [(float(a), float(b)) for a, b in zip(h["GTI"].data["START"], h["GTI"].data["STOP"])] if "GTI" in h else None + return t, r, hd.get("MJDREF", 50814.0), hd.get("TIMEZERO", 0.0), gti + + +def chandra_barycentre(t, mjdref, det): + from astropy.coordinates import EarthLocation, SkyCoord + from astropy.time import Time + import astropy.units as u + src = SkyCoord(det["ra"], det["dec"], unit="deg") + grid = np.linspace(t.min(), t.max(), 50) + tt = Time(mjdref + grid / 86400.0, format="mjd", scale="tt", + location=EarthLocation.from_geocentric(0 * u.m, 0 * u.m, 0 * u.m)) + ltt = tt.light_travel_time(src, kind="barycentric").to(u.s).value + return t + np.interp(t, grid, ltt) + + +def chandra_zsearch(t, dither): + tspan = t.max() - t.min() + if tspan < 3 * chandra_P_MIN or len(t) < 20: + return None + fmin, fmax = max(1.0 / chandra_P_MAX, 2.0 / tspan), 1.0 / chandra_P_MIN + df = 1.0 / (chandra_OVERSAMPLE * tspan) + f = np.arange(fmin, fmax, df) + # dither combinations and ACIS frame sidebands masked within two resolution elements, harmonics included + inst = [k / p for p in dither for k in (0.5, 1.5, 2.5)] + for k in (0, 1, 2): + for a in range(-5, 6): + for b in range(-5, 6): + inst.append(abs(k / chandra_FRAME + a / dither[0] + b / dither[1])) + inst = np.array(sorted({round(x, 9) for x in inst if x > 0})) + mask = np.ones(len(f), bool) + for m in (1, 2): + j = np.searchsorted(inst, m * f).clip(1, len(inst) - 1) + near = np.minimum(np.abs(m * f - inst[j - 1]), np.abs(m * f - inst[j])) + mask &= near > 2.0 / tspan + f = f[mask] + tt = t - t.min() + z1 = np.empty(len(f)) + z2 = np.empty(len(f)) + for i in range(0, len(f), 2000): + ph = 2 * np.pi * np.outer(f[i:i + 2000], tt) + c1, s1 = np.cos(ph).sum(1), np.sin(ph).sum(1) + c2, s2 = np.cos(2 * ph).sum(1), np.sin(2 * ph).sum(1) + z1[i:i + 2000] = 2.0 / len(t) * (c1 ** 2 + s1 ** 2) + z2[i:i + 2000] = z1[i:i + 2000] + 2.0 / len(t) * (c2 ** 2 + s2 ** 2) + ntrial = max(1, int(len(f) / chandra_OVERSAMPLE)) + # red-noise scaling: statistics divided where their running median exceeds the white-noise median + anchors = np.unique(np.searchsorted(f, np.geomspace(f[0], f[-1], 120)).clip(0, len(f) - 1)) + for z, med0 in ((z1, 2 * math.log(2)), (z2, 3.357)): + meds = [] + for j in anchors: + lo = min(np.searchsorted(f, f[j] * 0.75), max(j - 50, 0)) + hi = max(np.searchsorted(f, f[j] * 1.25), min(j + 50, len(f))) + meds.append(np.median(z[lo:hi])) + local = np.interp(np.arange(len(f)), anchors, meds) + z *= np.minimum(1.0, med0 / np.maximum(local, 1e-9)) + j1, j2 = int(np.argmax(z1)), int(np.argmax(z2)) + from scipy.stats import chi2 + p1 = chi2.sf(z1[j1], 2) + p2 = chi2.sf(z2[j2], 4) + fap1 = -np.expm1(ntrial * np.log1p(-min(p1, 1 - 1e-16))) + fap2 = -np.expm1(ntrial * np.log1p(-min(p2, 1 - 1e-16))) + return dict(n=len(t), span=tspan, ntrial=ntrial, f1=float(f[j1]), z1=float(z1[j1]), fap1=float(fap1), + f2=float(f[j2]), z2=float(z2[j2]), fap2=float(fap2)) + + +def chandra_one(det): + if not det.get("file"): + return None + try: + t, r, mjdref, tz, gti = chandra_events(det) + except Exception as e: + return dict(det, error="read: " + str(e)[:80]) + rad = 2.0 if det["theta"] < 3.0 else 4.0 + t = t[r <= rad] + if len(t) < 20: + return dict(det, n=len(t), result=None) + tb = chandra_barycentre(t, mjdref, det) + inst = "HRC" if "HRC" in det["instrument"].upper() else "ACIS" + return dict(det, result=chandra_zsearch(np.sort(tb), chandra_DITHER[inst])) + + +def chandra_search(): + dets = json.load(open(os.path.join(chandra_ROOT, "detections.json"))) + from concurrent.futures import ProcessPoolExecutor + with ProcessPoolExecutor(4) as ex: + res = [r for r in ex.map(chandra_one, dets) if r] + ok = [r for r in res if r.get("result")] + print("%d detections searched (%d stars), %d with fewer than 20 source events; median %d events over %.0f ks" + % (len(ok), len({r["star"] for r in ok}), sum(1 for r in res if not r.get("result")), + np.median([r["result"]["n"] for r in ok]), np.median([r["result"]["span"] for r in ok]) / 1e3)) + faps = np.array([min(r["result"]["fap1"], r["result"]["fap2"]) for r in ok]) + print("best false-alarm probability per detection: below 0.01 in %d, below 1e-3 in %d (%.1f and %.1f expected)" + % (np.sum(faps < 0.01), np.sum(faps < 1e-3), 0.02 * len(ok), 0.002 * len(ok))) + hits = sorted([r for r in ok if min(r["result"]["fap1"], r["result"]["fap2"]) < 1e-3], + key=lambda r: min(r["result"]["fap1"], r["result"]["fap2"])) + for r in hits: + z = r["result"] + best = (z["f1"], z["fap1"], "Z1") if z["fap1"] <= z["fap2"] else (z["f2"], z["fap2"], "Z2") + # the same period in another observation + again = [] + for o in ok: + if o["star"] == r["star"] and o["obsid"] != r["obsid"]: + res_f = 1.0 / min(o["result"]["span"], z["span"]) + for key in ("f1", "f2"): + if abs(o["result"][key] - best[0]) < res_f: + again.append(o["obsid"]) + print(" %-22s obsid %s %s theta %.1f': %d events over %.1f ks, %s peak at %.2f s, FAP %.1e; same period in %s" + % (r["star"], r["obsid"], r["instrument"], r["theta"], z["n"], z["span"] / 1e3, best[2], 1.0 / best[0], + best[1], ", ".join(sorted(set(again))) or "no other observation")) + json.dump(res, open(os.path.join(chandra_HERE, "xray_beacons.json"), "w"), indent=1) + + +def chandra_record(): + res = [r for r in json.load(open(os.path.join(chandra_HERE, "xray_beacons.json"))) if r.get("result")] + best = {} + for r in res: + fap = min(r["result"]["fap1"], r["result"]["fap2"]) + if r["star"] not in best or fap < best[r["star"]][0]: + best[r["star"]] = (fap, r) + rows = [dict(target="simbad:" + " ".join(k.split()), p=v[0], note="best of %d observations: obsid %s, %d events, " + "period %.2f s" % (sum(1 for r in res if r["star"] == k), v[1]["obsid"], v[1]["result"]["n"], + 1.0 / v[1]["result"]["f1"])) for k, v in best.items()] + core.record_search("xray_beacons_csc", "X-ray event lists", archive="Chandra Source Catalog (csccli, regevt3)", + release="CSC current", selection="SIMBAD objects with parallax above 100 mas", + code=os.path.abspath(__file__), entry="chandra", params=dict(p_min=chandra_P_MIN, p_max=chandra_P_MAX, match=chandra_MATCH), + n_targets=len(rows), result="%d detections searched; none below false-alarm probability 1e-3 after the dither, frame-sideband and red-noise filters" % len(res), ledger="X-ray event lists") + core.record_targets("xray_beacons_csc", rows) + print("recorded %d stars" % len(rows)) + + +def chandra_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "search", "record")) + a = p.parse_args() + {"fetch": chandra_fetch, "search": chandra_search, "record": chandra_record}[a.mode]() + + +def chandra_cli(): + quiet_warnings() + chandra_main() + + +# -------------------------------------------------------------------------------------------------------------- + +xmm_DOC = r"""Periodic X-rays (5-600 s) in XMM-Newton EPIC-pn series of stars within 20 pc: red-noise-normalised FFT with harmonics, FAP below 1e-3 in both halves. + + python -I seti.py highenergy xmm fetch + python -I seti.py highenergy xmm search + python -I seti.py highenergy xmm record""" + +xmm_ROOT = os.environ.get("XMM_ROOT", core.data("xmm")) +xmm_HERE = core.RESULTS +xmm_AIO = "https://nxsa.esac.esa.int/nxsa-sl/servlet/data-action-aio?obsno=%s&name=SRCTSR&level=PPS&instname=PN" +xmm_DT = 0.5 +xmm_P_MIN, xmm_P_MAX = 5.0, 600.0 +xmm_MJDREF = 50814.0 +xmm_GZIP_MAGIC = bytes([0x1F, 0x8B]) + + +def xmm_detections(): + path = os.path.join(xmm_ROOT, "detections.json") + if not os.path.exists(path): + q = ("SELECT obs_id, pps_srcnum, srcid, iauname, ra, dec, gaiadr3_source_id, gaiadr3_parallax, gaiadr3_gmag, " + "pn_cts, pn_ontime, pn_submode, pn_rate, m1_cts, m2_cts, ep_cts, tseries, var_flag, var_prob, fvar, " + "pn_pileup, sum_flag, mjd_first, mjd_last FROM xsa.v_epic_source_cat WHERE gaiadr3_parallax > 50 AND " + "ep_cts > 300") + json.dump(core.xsa(q), open(path, "w")) + rows = json.load(open(path)) + xmm_nearest() + seen, out = set(), [] + for r in rows: + key = (r["obs_id"], r["pps_srcnum"]) + if r["obs_id"] and r["tseries"] == "true" and r["pps_srcnum"] and key not in seen: + seen.add(key) + out.append(r) + return out + + +xmm_COLS = ("obs_id, pps_srcnum, srcid, iauname, ra, dec, gaiadr3_source_id, gaiadr3_parallax, gaiadr3_gmag, pn_cts, " + "pn_ontime, pn_submode, pn_rate, m1_cts, m2_cts, ep_cts, tseries, var_flag, var_prob, fvar, pn_pileup, " + "sum_flag, mjd_first, mjd_last") + + +def xmm_nearest(): + """Detections of stars within 10 pc missed by the catalogue's Gaia match: SIMBAD parallax above 100 mas, within 6 arcsec, over 300 counts.""" + path = os.path.join(xmm_ROOT, "nearest.json") + if os.path.exists(path): + return json.load(open(path)) + from setitools.core import mjd_to_year, sep_arcsec, star_at + stars = core.simbad("SELECT main_id, ra, dec, pmra, pmdec, plx_value FROM basic WHERE plx_value > 100 AND " + "ra IS NOT NULL AND otype NOT IN ('Pl', 'Pl?')") + out = [] + for s in stars: + ra, dec = float(s["ra"]), float(s["dec"]) + pm = math.hypot(float(s["pmra"] or 0), float(s["pmdec"] or 0)) / 1000.0 + rad = (pm * 26 + 15) / 3600.0 + q = ("SELECT %s FROM xsa.v_epic_source_cat WHERE ep_cts > 300 AND 1 = CONTAINS(POINT('ICRS', ra, dec), " + "CIRCLE('ICRS', %.7f, %.7f, %.6f))" % (xmm_COLS, ra, dec, rad)) + try: + rows = core.xsa(q) + except Exception: + continue + for r in rows: + if not r["obs_id"] or not r["mjd_first"]: + continue + at = mjd_to_year(float(r["mjd_first"])) + sra, sdec = star_at(ra, dec, float(s["pmra"] or 0), float(s["pmdec"] or 0), 2000.0, at) + if sep_arcsec(sra, sdec, float(r["ra"]), float(r["dec"])) <= 6.0: + out.append(dict(r, star=s["main_id"], plx=float(s["plx_value"]))) + json.dump(out, open(path, "w")) + return out + + +def xmm_fetch(): + os.makedirs(os.path.join(xmm_ROOT, "tar"), exist_ok=True) + obs = sorted({d["obs_id"] for d in xmm_detections()}) + for o in obs: + p = os.path.join(xmm_ROOT, "tar", o + ".tar") + if os.path.exists(p) and os.path.getsize(p) > 0: + continue + ok = core.download(xmm_AIO % o, p, retries=3) and tarfile.is_tarfile(p) + print(o, "fetched" if ok else "failed", flush=True) + + +def xmm_series(obs): + """Every source's time series in an observation tar: {source: header, times, rates, exposure, background}.""" + out = {} + p = os.path.join(xmm_ROOT, "tar", obs + ".tar") + if not os.path.exists(p): + return out + from astropy.io import fits + with tarfile.open(p) as tf: + best = {} + for m in tf.getmembers(): + base = os.path.basename(m.name) + if "SRCTSR8" not in base: + continue + src = int(base.split("SRCTSR8")[1][:3], 16) + expo = base[13:17] + # combined X000 series first, else the longest exposure + rank = (expo == "X000", m.size) + if src not in best or rank > best[src][0]: + best[src] = (rank, m) + for src, (_, m) in best.items(): + raw = tf.extractfile(m).read() + if raw[:2] == xmm_GZIP_MAGIC: + raw = gzip.decompress(raw) + with fits.open(io.BytesIO(raw)) as h: + d = h["RATE"].data + out[src] = dict(header=dict(h["RATE"].header), time=np.asarray(d["TIME"], float), + rate=np.asarray(d["RATE"], float), fracexp=np.asarray(d["FRACEXP"], float), + back=np.asarray(d["BACKV"], float) if "BACKV" in d.columns.names else None) + return out + + +def xmm_power(t, x, t0, n): + """Normalised FFT power on a regular grid: unit exponential under white noise.""" + from scipy.ndimage import median_filter + g = np.zeros(n) + k = np.clip(((t - t0) / xmm_DT).astype(int), 0, n - 1) + np.add.at(g, k, x) + filled = np.zeros(n) + np.add.at(filled, k, 1.0) + g = np.where(filled > 0, g / np.maximum(filled, 1), 0.0) + g[filled > 0] -= g[filled > 0].mean() + p = np.abs(np.fft.rfft(g)) ** 2 + f = np.fft.rfftfreq(n, xmm_DT) + # running median 1/50 dex wide (at least 15 frequencies), interpolated in log-log to follow red noise + m = len(f) + anchors = np.unique(np.concatenate([np.arange(1, min(m, 100)), + np.round(np.geomspace(1, m - 1, 2000)).astype(int)])) + meds = [] + for i in anchors: + w = max(7, int(0.0236 * i)) + meds.append(np.median(p[max(1, i - w):min(m, i + w + 1)])) + med = np.empty(m) + med[1:] = 10 ** np.interp(np.log10(np.arange(1, m)), np.log10(anchors), np.log10(np.maximum(meds, 1e-30))) + med[0] = med[1] + if m > 401: + # local median kept for narrow lines + med = np.maximum(med, median_filter(p, size=401, mode="nearest")) + return f, p / np.maximum(med, 1e-30) * math.log(2), filled + + +def xmm_analyse(s, ra, dec): + ok = (s["fracexp"] > 0.5) & np.isfinite(s["rate"]) + if ok.sum() < 1000: + return None + t = science.barycentre_seconds(s["time"][ok], xmm_MJDREF, ra, dec) + t0 = t.min() + span = t.max() - t0 + if span < 3 * xmm_P_MAX: + return None + n = int(span / xmm_DT) + 1 + f, pw, filled = xmm_power(t, s["rate"][ok], t0, n) + _, pwin, _ = xmm_power(np.arange(n) * xmm_DT + t0, filled - filled.mean(), t0, n) + pb = xmm_power(t, s["back"][ok], t0, n)[1] if s["back"] is not None else np.zeros_like(pw) + # coarse native bins and their harmonics masked; search stops at 2.5 native bins + dt_native = float(np.median(np.diff(np.sort(s["time"][ok])))) + fmax = min(1 / xmm_P_MIN, 1 / (2.5 * dt_native)) + clean = (pwin < 5 * math.log(2) * 5) & (pb < 5 * math.log(2) * 5) + df = 1.0 / span + for k in range(1, int(f[-1] * dt_native) + 2): + clean &= np.abs(f - k / dt_native) > 2 * df + # periods must fit twenty times into the series + band = (f >= max(1 / xmm_P_MAX, 20.0 / span)) & (f <= fmax) + mask = band & clean + # second harmonic summed where clean + idx = np.arange(len(f)) + two = np.clip(2 * idx, 0, len(f) - 1) + p2 = np.where((f[two] <= fmax) & clean[two], pw + pw[two], pw) + nfreq = int(mask.sum()) + if nfreq < 10: + return None + j1 = int(np.argmax(np.where(mask, pw, -1))) + j2 = int(np.argmax(np.where(mask, p2, -1))) + fap1 = 1 - (1 - math.exp(-pw[j1])) ** nfreq + # gamma(2) survival: (1 + x) e^-x + fap2 = 1 - (1 - (1 + p2[j2]) * math.exp(-p2[j2])) ** nfreq + halves = [] + for lo, hi in ((t0, t0 + span / 2), (t0 + span / 2, t0 + span)): + sel = (t >= lo) & (t < hi) + if sel.sum() < 500: + halves.append(None) + continue + nh = int((hi - lo) / xmm_DT) + 1 + fh, ph, _ = xmm_power(t[sel], s["rate"][ok][sel], lo, nh) + jj = int(np.argmin(np.abs(fh - f[j1]))) + halves.append(float(ph[max(jj - 1, 0):jj + 2].max())) + return dict(span=span, nfreq=nfreq, f1=float(f[j1]), p1=float(pw[j1]), fap1=fap1, f2=float(f[j2]), p2=float(p2[j2]), + fap2=fap2, halves=halves, df=1.0 / span, bin_s=dt_native) + + +def xmm_search(): + dets = xmm_detections() + by = {} + for d in dets: + by.setdefault(d["obs_id"], []).append(d) + res = [] + for obs, ds in sorted(by.items()): + ss = xmm_series(obs) + if not ss: + print(obs, "no time series", flush=True) + continue + # other sources' best peaks for the shared-frequency veto + others = {} + for src, s in ss.items(): + ra = float(s["header"].get("SRC_RA", ds[0]["ra"])) + dec = float(s["header"].get("SRC_DEC", ds[0]["dec"])) + r = xmm_analyse(s, ra, dec) + if r: + others[src] = r + for d in ds: + src = int(d["pps_srcnum"]) + r = others.get(src) + if not r: + print(obs, src, "too short or too sparse", flush=True) + continue + shared = [o for o, x in others.items() if o != src and + (abs(x["f1"] - r["f1"]) < 2 * r["df"] or abs(x["f2"] - r["f2"]) < 2 * r["df"])] + row = dict(d, **r, shared=shared) + res.append(row) + print("%s %s src %d: %.0f ks, best %.2f s FAP %.2g (two harmonics %.2f s FAP %.2g), halves %s%s" + % (obs, d["iauname"], src, r["span"] / 1000, 1 / r["f1"], r["fap1"], 1 / r["f2"], r["fap2"], + r["halves"], ", shared with sources %s" % shared if shared else ""), flush=True) + json.dump(res, open(os.path.join(xmm_HERE, "xmm_beacons.json"), "w"), default=float, indent=1) + n = len(res) + for thr in (0.01, 1e-3): + k = sum(1 for r in res if min(r["fap1"], r["fap2"]) < thr) + print("observations of stars with a best peak below FAP %g: %d of %d (%.1f expected for two statistics)" + % (thr, k, n, 2 * thr * n)) + for r in res: + if min(r["fap1"], r["fap2"]) < 1e-3: + both = all(h is not None and h > 5 for h in r["halves"]) + print(" candidate %s %s: %.2f s, FAP %.2g, both halves %s, shared %s" + % (r["obs_id"], r["iauname"], 1 / r["f1"], r["fap1"], both, r["shared"])) + + +def xmm_record(): + """Record one row per detection with its lowest false-alarm probability.""" + res = json.load(open(os.path.join(xmm_HERE, "xmm_beacons.json"))) + n = len(res) + below = [sum(1 for r in res if min(r["fap1"], r["fap2"]) < thr) for thr in (1e-2, 1e-3)] + core.record_search( + "xray_beacons_xmm", "X-ray event lists", archive="XMM-Newton Science Archive, 5XMM-DR15 EPIC-pn source time " + "series (SRCTSR)", release="5XMM-DR15", + selection="detections with more than 300 EPIC counts of Gaia DR3 stars with parallax above 50 mas, and of SIMBAD " + "objects within 10 pc at their epoch positions", code="seti.py highenergy xmm", + params=dict(dt_s=xmm_DT, p_min_s=xmm_P_MIN, p_max_s=xmm_P_MAX, min_cycles=20, window="1/50 dex, 15 frequencies"), + n_targets=n, + null_summary="%d observations of stars: %d below false-alarm probability 0.01 against %.1f, %d below 1e-3 against " + "%.1f" % (n, below[0], 2 * 0.01 * n, below[1], 2 * 1e-3 * n), + sensitivity="a coherent period of 5-600 s in the EPIC-pn source rate, alone or with its second harmonic", + result="no period beyond the noise" if not below[1] else "%d periods below 1e-3" % below[1], + ledger="X-ray event lists") + core.clear_targets("xray_beacons_xmm") + rows = [] + for r in res: + g = r.get("gaiadr3_source_id") + tgt = "gaia_dr3:%s" % g if g not in (None, "", "None") else "simbad:%s" % r.get("star", r["iauname"]) + rows.append(dict(target=tgt, stat=float(1 / r["f1"]), unit="best period, s", p=float(min(r["fap1"], r["fap2"])), + note="%s obs %s, %.0f ks" % (r["iauname"], r["obs_id"], r["span"] / 1000))) + core.record_targets("xray_beacons_xmm", rows) + print("recorded") + + +def xmm_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "search", "record")) + a = p.parse_args() + if a.mode == "fetch": + xmm_fetch() + elif a.mode == "record": + xmm_record() + else: + xmm_search() + + +def xmm_cli(): + quiet_warnings() + xmm_main() + + +# -------------------------------------------------------------------------------------------------------------- + +icecube_DOC = r"""TeV neutrinos from systems within 10 pc in IceCube's ten-year sample: unbinned likelihood against RA scrambles; E^-2 flux and luminosity limits. + + python -I seti.py highenergy icecube [--pc 10] [--trials 1000]""" + +icecube_ROOT = os.environ.get("ICECUBE_ROOT", core.data("icecube")) +icecube_HERE = core.RESULTS +icecube_R6 = np.radians(6.0) + + +def icecube_load_events(): + out = [] + for p in sorted(glob.glob(os.path.join(icecube_ROOT, "events", "*.tab"))): + a = np.loadtxt(p, comments="#") + out.append(a) + a = np.vstack(out) + return dict(mjd=a[:, 0], logE=a[:, 1], sig=np.radians(np.maximum(a[:, 2], 0.2)), ra=np.radians(a[:, 3]), + dec=np.radians(a[:, 4])) + + +def icecube_unit(ra, dec): + return np.stack([np.cos(dec) * np.cos(ra), np.cos(dec) * np.sin(ra), np.sin(dec)], axis=-1) + + +def icecube_background_density(dec): + """Background density per steradian at each event's declination.""" + s = np.sin(dec) + h, e = np.histogram(s, bins=100, range=(-1, 1)) + from scipy.ndimage import gaussian_filter1d + h = gaussian_filter1d(h.astype(float), 1.0) + dens = h / h.sum() / (e[1] - e[0]) / (2 * np.pi) + idx = np.clip(np.digitize(s, e) - 1, 0, 99) + return dens, e, dens[idx] + + +class icecube_Field: + def __init__(self, ev): + from scipy.spatial import cKDTree + self.ev = ev + self.N = len(ev["ra"]) + self.xyz = icecube_unit(ev["ra"], ev["dec"]) + self.tree = cKDTree(self.xyz) + self.dens, self.edges, self.B = icecube_background_density(ev["dec"]) + + def ts(self, ra, dec, want_limit=False): + """TS, fitted ns and optional 90 per cent limit at one position.""" + c = icecube_unit(np.array(ra), np.array(dec)) + idx = np.array(self.tree.query_ball_point(c, 2 * np.sin(icecube_R6 / 2)), dtype=int) + if len(idx) == 0: + return 0.0, 0.0, None + cosd = np.clip(self.xyz[idx] @ c, -1, 1) + psi = np.arccos(cosd) + sg = self.ev["sig"][idx] + S = np.exp(-psi ** 2 / (2 * sg ** 2)) / (2 * np.pi * sg ** 2) + return icecube_fit(S / self.B[idx] - 1.0, self.N, want_limit) + + +def icecube_fit(x, N, want_limit=False): + """TS, ns and optional 90 per cent ns limit from near-event signal-to-background ratios among N events.""" + n_near = len(x) + + def llh(ns): + return np.sum(np.log1p(ns / N * x)) + (N - n_near) * np.log1p(-ns / N) + + # Newton iterations on the concave log-likelihood, ns >= 0 + ns = 0.0 + g0 = np.sum(x) / N - (N - n_near) / N + if g0 > 0: + ns = 1.0 + for _ in range(50): + d = 1 + ns / N * x + g = np.sum(x / d) / N - (N - n_near) / (N - ns) + h = -np.sum((x / d) ** 2) / N ** 2 - (N - n_near) / (N - ns) ** 2 + step = -g / h + ns = max(ns + step, 0.0) + if abs(step) < 1e-4: + break + L0, L1 = llh(0.0), llh(ns) + ts = max(2 * (L1 - L0), 0.0) + lim = None + if want_limit: + hi = max(ns, 1.0) + while 2 * (L1 - llh(hi)) < 2.71 and hi < 5000: + hi *= 1.5 + lo = ns + for _ in range(60): + mid = 0.5 * (lo + hi) + if 2 * (L1 - llh(mid)) < 2.71: + lo = mid + else: + hi = mid + lim = 0.5 * (lo + hi) + return ts, ns, lim + + +def icecube_acceptance(dec_deg): + """Events per unit E^-2 normalisation (1 TeV-1 PeV) summed over seasons.""" + tot = 0.0 + seasons = ["IC40", "IC59", "IC79", "IC86_I", "IC86_II", "IC86_III", "IC86_IV", "IC86_V", "IC86_VI", "IC86_VII"] + for s in seasons: + ae = os.path.join(icecube_ROOT, "irfs", "%s_effectiveArea.tab" % (s if s in ("IC40", "IC59", "IC79", "IC86_I") else "IC86_II")) + up = os.path.join(icecube_ROOT, "uptime", "%s_exp.tab" % s) + if not (os.path.exists(ae) and os.path.exists(up)): + continue + a = np.loadtxt(ae, comments="#") + u = np.loadtxt(up, comments="#") + live = float(np.sum(u[:, 1] - u[:, 0])) * 86400.0 + sel = (a[:, 2] <= dec_deg) & (dec_deg < a[:, 3]) + e_lo, e_hi = 10 ** a[sel, 0] / 1e3, 10 ** a[sel, 1] / 1e3 # TeV + keep = (e_hi > 1.0) & (e_lo < 1000.0) + e_lo, e_hi = np.clip(e_lo[keep], 1.0, 1000.0), np.clip(e_hi[keep], 1.0, 1000.0) + # E^-2 integral per energy bin (TeV^-1) + tot += float(np.sum(a[sel][keep, 4] * (1 / e_lo - 1 / e_hi))) * live + return tot + + +def icecube_systems(pc): + rows = list(csv.DictReader(open(os.path.join(icecube_HERE, "near20.csv"), encoding="utf-8"))) + rows = [r for r in rows if float(r["parallax"]) >= 1000.0 / pc] + rows.sort(key=lambda r: -float(r["parallax"])) + out = [] + for r in rows: + ra, dec = np.radians(float(r["ra"])), np.radians(float(r["dec"])) + for s in out: + if np.arccos(np.clip(icecube_unit(ra, dec) @ icecube_unit(s["ra"], s["dec"]), -1, 1)) < np.radians(1.0): + s["members"].append(r["source_id"]) + break + else: + out.append(dict(ra=ra, dec=dec, d_pc=1000.0 / float(r["parallax"]), members=[r["source_id"]], + g=float(r["phot_g_mean_mag"] or 99))) + return out + + +def icecube_main(): + p = argparse.ArgumentParser() + p.add_argument("--pc", type=float, default=10.0) + p.add_argument("--trials", type=int, default=1000) + a = p.parse_args() + ev = icecube_load_events() + f = icecube_Field(ev) + syst = icecube_systems(a.pc) + print("%d events; %d systems within %.0f pc" % (f.N, len(syst), a.pc)) + rng = np.random.default_rng(11) + res = [] + for s in syst: + ts, ns, lim = f.ts(s["ra"], s["dec"], want_limit=True) + null = [] + while len(null) < a.trials: + ra = rng.uniform(0, 2 * np.pi) + dra = (ra - s["ra"] + np.pi) % (2 * np.pi) - np.pi + if abs(dra) * np.cos(s["dec"]) < np.radians(6.0): + continue + null.append(f.ts(ra, s["dec"])[0]) + null = np.array(null) + pv = float((np.sum(null >= ts) + 1) / (len(null) + 1)) + acc = icecube_acceptance(np.degrees(s["dec"])) + flux = lim / acc if acc > 0 else float("nan") # TeV^-1 cm^-2 s^-1 at 1 TeV + # energy flux over 1 TeV-1 PeV for E^-2 + eflux = flux * np.log(1000.0) * 1.602 # erg cm^-2 s^-1 + lum = 4 * np.pi * (s["d_pc"] * 3.0857e18) ** 2 * eflux # erg s^-1 + res.append(dict(members=s["members"], ra=float(np.degrees(s["ra"])), dec=float(np.degrees(s["dec"])), + d_pc=s["d_pc"], ts=ts, ns=ns, ns90=lim, p=pv, flux90=flux, lum90_erg_s=lum)) + # stacked TS against RA-rotated catalogues + stack = sum(r["ts"] for r in res) + rot = [] + for _ in range(a.trials): + d = rng.uniform(np.radians(10), 2 * np.pi - np.radians(10)) + rot.append(sum(f.ts((s["ra"] + d) % (2 * np.pi), s["dec"])[0] for s in syst)) + rot = np.array(rot) + p_stack = float((np.sum(rot >= stack) + 1) / (len(rot) + 1)) + json.dump(dict(pc=a.pc, n_events=f.N, systems=res, stack_ts=stack, p_stack=p_stack), + open(os.path.join(icecube_HERE, "icecube_stars_%gpc.json" % a.pc), "w")) + ps = np.array([r["p"] for r in res]) + print("stacked TS %.2f, p %.3f against %d catalogue rotations" % (stack, p_stack, a.trials)) + print("systems at p <= 0.01: %d (%.1f expected), p <= 0.05: %d (%.1f expected)" + % ((ps <= 0.01).sum(), 0.01 * len(ps), (ps <= 0.05).sum(), 0.05 * len(ps))) + for r in sorted(res, key=lambda r: r["p"])[:10]: + print(" Gaia DR3 %s (%.2f pc, dec %+.1f): TS %.2f, ns %.1f, p %.4f; ns90 %.1f, E^-2 flux90 %.2e /TeV/cm2/s, " + "L90 %.1e erg/s" % (r["members"][0], r["d_pc"], r["dec"], r["ts"], r["ns"], r["p"], r["ns90"], + r["flux90"], r["lum90_erg_s"])) + lums = np.array([r["lum90_erg_s"] for r in res]) + print("median 90 per cent luminosity limit %.1e erg/s (range %.1e-%.1e)" % (np.median(lums), lums.min(), lums.max())) + + +def icecube_cli(): + quiet_warnings() + icecube_main() + + +# -------------------------------------------------------------------------------------------------------------- + +planets_DOC = r"""TeV neutrinos tracking Jupiter, Saturn, Mars and Venus in IceCube's sample: planet-frame likelihood against time scrambles; flux and luminosity limits. + + python -I seti.py highenergy planets [--trials 1000]""" + +planets_BODIES = ("jupiter", "saturn", "mars", "venus") + + +def planets_track(body, mjd_lo, mjd_hi): + """Hourly RA, Dec (rad) and distance (AU) of a body between two MJDs.""" + from astropy.time import Time + from astropy.coordinates import get_body, solar_system_ephemeris + grid = np.arange(math.floor(mjd_lo) - 1, math.ceil(mjd_hi) + 1, 1 / 24.0) + with solar_system_ephemeris.set("builtin"): + c = get_body(body, Time(grid, format="mjd")) + return grid, np.radians(c.ra.deg), np.radians(c.dec.deg), c.distance.au + + +def planets_at(track, mjd): + """Track RA and Dec at times mjd, RA interpolated on the unit circle.""" + grid, ra, dec, _ = track + x = np.interp(mjd, grid, np.cos(ra)) + y = np.interp(mjd, grid, np.sin(ra)) + return np.arctan2(y, x) % (2 * np.pi), np.interp(mjd, grid, dec) + + +def planets_ts(ev, B, ra_s, dec_s, want_limit=False): + """TS, ns and 90 per cent limit for a moving source using each event's time-resolved distance.""" + cosd = np.sin(ev["dec"]) * np.sin(dec_s) + np.cos(ev["dec"]) * np.cos(dec_s) * np.cos(ev["ra"] - ra_s) + psi = np.arccos(np.clip(cosd, -1, 1)) + idx = np.where(psi < icecube_R6)[0] + if len(idx) == 0: + return 0.0, 0.0, None + sg = ev["sig"][idx] + S = np.exp(-psi[idx] ** 2 / (2 * sg ** 2)) / (2 * np.pi * sg ** 2) + return icecube_fit(S / B[idx] - 1.0, len(psi), want_limit) + + +def planets_main(): + p = argparse.ArgumentParser() + p.add_argument("--trials", type=int, default=1000) + a = p.parse_args() + ev = icecube_load_events() + _, _, B = icecube_background_density(ev["dec"]) + mjd = ev["mjd"] + sun = planets_track("sun", mjd.min(), mjd.max()) + rng = np.random.default_rng(13) + res = {} + print("%d events, %.1f years" % (len(mjd), (mjd.max() - mjd.min()) / 365.25), flush=True) + for body in planets_BODIES: + tr = planets_track(body, mjd.min(), mjd.max()) + ra_s, dec_s = planets_at(tr, mjd) + ra_sun, dec_sun = planets_at(sun, mjd) + elong = np.arccos(np.clip(np.sin(dec_s) * np.sin(dec_sun) + np.cos(dec_s) * np.cos(dec_sun) * np.cos(ra_s - ra_sun), -1, 1)) + keep = elong > np.radians(5.0) + evk = {k: v[keep] for k, v in ev.items()} + Bk = B[keep] + ts, ns, lim = planets_ts(evk, Bk, ra_s[keep], dec_s[keep], want_limit=True) + null = [] + for _ in range(a.trials): + r2, d2 = planets_at(tr, rng.permutation(evk["mjd"])) + null.append(planets_ts(evk, Bk, r2, d2)[0]) + null = np.array(null) + pv = float((np.sum(null >= ts) + 1) / (len(null) + 1)) + # acceptance averaged along the track every ten days + decs = np.degrees(tr[2][:: 24 * 10]) + acc = float(np.mean([icecube_acceptance(d) for d in decs])) + flux = lim / acc if acc > 0 else float("nan") # TeV^-1 cm^-2 s^-1 at 1 TeV + eflux = flux * np.log(1000.0) * 1.602 # erg cm^-2 s^-1 over 1 TeV-1 PeV + d_cm = float(np.mean(tr[3])) * 1.496e13 + lum = 4 * np.pi * d_cm ** 2 * eflux + res[body] = dict(n_events=int(keep.sum()), ts=ts, ns=ns, ns90=lim, p=pv, null_median=float(np.median(null)), null_max=float(null.max()), + acceptance=acc, flux90=flux, eflux90_erg_cm2_s=eflux, lum90_erg_s=lum, mean_distance_au=float(np.mean(tr[3]))) + print("%s: %d events away from the Sun, TS %.2f, ns %.1f, p %.3f against %d time scrambles (null median %.2f, max %.2f); ns90 %.1f, E^-2 flux90 %.2e /TeV/cm2/s, " + "energy flux %.1e erg/cm2/s, L90 %.1e erg/s (%.1e W) at %.1f AU" % (body, keep.sum(), ts, ns, pv, a.trials, np.median(null), null.max(), lim, flux, eflux, lum, lum * 1e-7, np.mean(tr[3])), flush=True) + json.dump(dict(trials=a.trials, n_events=len(mjd), bodies=res), open(core.results("icecube_planets.json"), "w"), indent=1) + + +def planets_record(): + d = json.load(open(core.results("icecube_planets.json"))) + b = d["bodies"] + core.record_search( + "icecube_planets", "TeV neutrino sources moving with the planets", archive="IceCube ten-year point-source sample (2008-2018), %d tracks" % d["n_events"], release="IceCube 2021 release", + selection="every track, with those taken while the planet lay within 5 deg of the Sun set aside; Jupiter, Saturn, Mars and Venus", code=os.path.abspath(__file__), entry="planets", + n_targets=4, params=dict(trials=d["trials"], radius_deg=6.0, sun_exclusion_deg=5.0), + null_summary="%d time scrambles per planet, the events fixed on the sky and the planet moved under them" % d["trials"], + sensitivity="90 per cent E^-2 energy-flux limits over 1 TeV-1 PeV: " + ", ".join("%s %.1e erg/cm2/s" % (k, v["eflux90_erg_cm2_s"]) for k, v in b.items()), + ledger="TeV neutrino sources moving with the planets", + result="; ".join("%s TS %.2f p %.2f (ns %.1f, L90 %.1e W)" % (k, v["ts"], v["p"], v["ns"], v["lum90_erg_s"] * 1e-7) for k, v in b.items())) + core.clear_targets("icecube_planets") + core.record_targets("icecube_planets", [dict(target="planet:%s" % k, stat=v["ts"], unit="point-source TS in the planet's frame", p=v["p"], + note="ns %.1f, ns90 %.1f, L90 %.1e W at %.1f AU" % (v["ns"], v["ns90"], v["lum90_erg_s"] * 1e-7, v["mean_distance_au"])) for k, v in b.items()]) + print("recorded 4 planets") + + +def planets_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + planets_record() + else: + planets_main() + + +# -------------------------------------------------------------------------------------------------------------- + +lineonly_DOC = r"""Line-only X-ray sources in eRASS:3: 85 per cent of counts in 0.5-1 or 1-2 keV and every other band below 5 per cent at 3 sigma. + + python -I seti.py highenergy lineonly analyse + python -I seti.py highenergy lineonly record""" + +lineonly_ROOT = os.environ.get("LINEONLY_ROOT", core.data("erosita")) +lineonly_OUT = "erosita_line_only.json" +lineonly_BANDS = (("P1", "0.2-0.5"), ("P2", "0.5-1"), ("P3", "1-2"), ("P4", "2-5")) +lineonly_CTS, lineonly_FRAC, lineonly_OTHER = 80.0, 0.85, 0.05 + + +def lineonly_analyse(): + from astropy.table import Table + t = Table.read(os.path.join(lineonly_ROOT, "erass3_main.ecsv"), format="ascii.ecsv") + R = np.column_stack([np.array(t["MLRate%s" % b], float) for b, _ in lineonly_BANDS]) + Elo = np.column_stack([np.array(t["e_MLRate%s" % b], float) for b, _ in lineonly_BANDS]) + Ehi = np.column_stack([np.array(t["E_MLRate%s" % b], float) for b, _ in lineonly_BANDS]) + C = np.column_stack([np.array(t["MLcts%s" % b], float) for b, _ in lineonly_BANDS]) + ext = np.array(t["Ext"], float) + R, Elo, Ehi, C = np.nan_to_num(R), np.nan_to_num(Elo), np.nan_to_num(Ehi), np.nan_to_num(C) + Elo, Ehi = np.abs(Elo), np.abs(Ehi) + tot = R.sum(axis=1) + cts = C.sum(axis=1) + point = (np.nan_to_num(ext) == 0) & (cts >= lineonly_CTS) & (tot > 0) + print("%d sources, %d point sources with %.0f or more counts in the four bands" % (len(t), point.sum(), lineonly_CTS), flush=True) + F = R / np.maximum(tot, 1e-12)[:, None] + Flo = np.clip((R - 3 * Elo), 0, None) / np.maximum(tot, 1e-12)[:, None] + Fhi = (R + 3 * Ehi) / np.maximum(tot, 1e-12)[:, None] + out = {b: [] for b, _ in lineonly_BANDS} + for i in np.where(point)[0]: + k = int(np.argmax(F[i])) + others = [j for j in range(4) if j != k] + if Flo[i, k] >= lineonly_FRAC and all(Fhi[i, j] <= lineonly_OTHER for j in others): + out[lineonly_BANDS[k][0]].append(dict(name=str(t["IAUName"][i]).strip(), ra=float(t["RA_ICRS"][i]), dec=float(t["DE_ICRS"][i]), glat=float(t["GLAT"][i]), + counts=float(cts[i]), fraction=float(F[i, k]), fraction_lo=float(Flo[i, k]), others_hi=float(max(Fhi[i, j] for j in others)), + detlike=float(t["DetLike0"][i]), band=lineonly_BANDS[k][1], rates=[float(x) for x in R[i]])) + maxf = F[point].max(axis=1) + print("band-fraction maxima among the point sources: median %.2f, 90th %.2f, 99th %.2f; single-band sources at %.0f per cent (3 sigma) with the rest below %.0f per cent: %s" % ( + np.median(maxf), np.percentile(maxf, 90), np.percentile(maxf, 99), 100 * lineonly_FRAC, 100 * lineonly_OTHER, {lineonly_BANDS[k][1] + " keV": len(out[lineonly_BANDS[k][0]]) for k in range(4)}), flush=True) + # middle-band candidates named through SIMBAD + middle = out["P2"] + out["P3"] + for x in sorted(middle, key=lambda x: -x["counts"]): + try: + s = core.simbad("SELECT main_id, otype, DISTANCE(POINT('ICRS', ra, dec), POINT('ICRS', %f, %f))*3600 AS sep FROM basic WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %f, %f, 0.005)) = 1 ORDER BY sep" % (x["ra"], x["dec"], x["ra"], x["dec"])) + x["simbad"] = "; ".join("%s (%s, %.0f arcsec)" % (r["main_id"], r["otype"], float(r["sep"])) for r in s[:3]) or "none within 18 arcsec" + except Exception as e: + x["simbad"] = "query failed: %s" % str(e)[:40] + print(" %s (%.4f %+.4f, b %+.1f): %.0f counts, %.0f per cent in %s keV (lower %.2f, others below %.2f), rates %s; %s" % ( + x["name"], x["ra"], x["dec"], x["glat"], x["counts"], 100 * x["fraction"], x["band"], x["fraction_lo"], x["others_hi"], ["%.3f" % r for r in x["rates"]], x["simbad"]), flush=True) + json.dump(dict(n=len(t), n_point=int(point.sum()), counts={k: len(v) for k, v in out.items()}, maxf_percentiles=[float(np.percentile(maxf, p)) for p in (50, 90, 99)], + middle=middle, soft=out["P1"][:200], hard=out["P4"][:200], params=dict(cts=lineonly_CTS, frac=lineonly_FRAC, other=lineonly_OTHER)), + open(core.results(lineonly_OUT), "w"), indent=0) + + +def lineonly_record(): + d = json.load(open(core.results(lineonly_OUT))) + core.record_search( + "erosita_line_only", "Line-only X-ray sources in eROSITA DR1", archive="eROSITA DR2 eRASS:3 main catalogue (VizieR J/A+A/712/A171)", release="eROSITA-DE DR2", + selection="%d point sources with %.0f or more counts in 0.2-5 keV of %d" % (d["n_point"], d["params"]["cts"], d["n"]), code=os.path.abspath(__file__), entry="lineonly", + n_targets=d["n_point"], params=d["params"], null_summary="the band-fraction maximum over the point sources: median %.2f, 90th percentile %.2f, 99th %.2f" % tuple(d["maxf_percentiles"]), + sensitivity="%.0f per cent of the counts in one band at 3 sigma with every other band below %.0f per cent" % (100 * d["params"]["frac"], 100 * d["params"]["other"]), ledger="Line-only X-ray sources in eROSITA DR1", + result="single-band sources: %s; the middle-band ones: %s" % (", ".join("%d in %s" % (v, k) for k, v in d["counts"].items()), + "; ".join("%s (%s keV, %.0f counts: %s)" % (x["name"], x["band"], x["counts"], x.get("simbad", "")) for x in d["middle"][:10]) or "none")) + core.clear_targets("erosita_line_only") + core.record_targets("erosita_line_only", [dict(target="erosita:%s" % x["name"], stat=x["fraction"], unit="fraction of the counts in the %s keV band" % x["band"], vet=x.get("simbad"), + note="%.0f counts, others below %.2f" % (x["counts"], x["others_hi"])) for x in d["middle"]]) + print("recorded %d middle-band sources" % len(d["middle"])) + + +def lineonly_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": lineonly_analyse, "record": lineonly_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- + +mm_DOC = r"""SPT-3G mm-flaring stars without X-ray or chromospheric activity, checked in eRASS1, 4XMM, CSC, Gaia, GALEX and SIMBAD. + + python -I seti.py highenergy mm check + python -I seti.py highenergy mm record""" + +mm_ROOT = os.environ.get("MMFLARE_ROOT", core.data("mm_flares")) +mm_HERE = core.RESULTS +mm_CAT = "https://pole.uchicago.edu/public/data/tandoi24/spt3g_2019_2022_flare_star_catalog.csv" + + +def mm_stars(): + rows = list(csv.DictReader(open(os.path.join(mm_ROOT, "spt3g_flare_catalog.csv"), encoding="utf-8"))) + u = {} + for r in rows: + u.setdefault(r["dr3_source_id"], []).append(r) + return u + + +def mm_check(): + u = mm_stars() + ids = list(u) + g = {r["source_id"]: r for r in core.gaia( + "SELECT g.source_id, g.ra, g.dec, g.pmra, g.pmdec, g.parallax, g.ruwe, g.phot_g_mean_mag, g.bp_rp, " + "g.non_single_star, a.activityindex_espcs, a.activityindex_espcs_uncertainty, a.teff_gspphot, a.logg_gspphot, " + "a.classprob_dsc_combmod_star FROM gaiadr3.gaia_source AS g LEFT OUTER JOIN gaiadr3.astrophysical_parameters AS a " + "ON g.source_id = a.source_id WHERE g.source_id IN (%s)" % ",".join(ids))} + # positions at 2020.5 for eROSITA-era catalogues, 2016.0 otherwise + pos = [dict(source_id=k, ra=float(g[k]["ra"]), dec=float(g[k]["dec"])) for k in ids if k in g] + xr = {} + for cat, rad, name in (("J/A+A/682/A34/erass1-m", 15.0, "eRASS1"), ("IX/69/xmm4d13s", 10.0, "4XMM-DR13"), + ("IX/70/csc21mas", 5.0, "CSC 2.1"), ("II/335/gal_ais", 5.0, "GALEX")): + try: + m = core.xmatch(pos, cat, rad) + except Exception as e: + print("%s: %s" % (name, str(e)[:80]), flush=True) + m = [] + for r in m: + xr.setdefault(r["source_id"], {}).setdefault(name, []).append(r) + print("%s: %d of %d stars matched within %.0f arcsec" % (name, len({r["source_id"] for r in m}), len(pos), rad), + flush=True) + sim = {} + for r in core.xmatch(pos, "simbad", 3.0): + sim.setdefault(r["source_id"], r) + res = [] + for k in ids: + f = u[k] + x = g.get(k, {}) + xm = xr.get(k, {}) + s = sim.get(k, {}) + plx = num(x.get("parallax")) or num(f[0]["parallax"]) + d = 1000.0 / plx if plx and plx > 0 else None + fx = None + if "eRASS1" in xm: + e = min(xm["eRASS1"], key=lambda r: float(r["angDist"])) + fx = num(e.get("Flux") or e.get("ML_FLUX_1") or e.get("FluxP")) + nuv = None + if "GALEX" in xm: + gx = min(xm["GALEX"], key=lambda r: float(r["angDist"])) + nuv = num(gx.get("NUVmag")) + gm = num(x.get("phot_g_mean_mag")) + bprp = num(x.get("bp_rp")) + res.append(dict( + source_id=k, flares=len(f), s150_max=max(num(r["150_flux"]) or 0 for r in f), d_pc=d, g=gm, bp_rp=bprp, + abs_g=gm + 5 * math.log10(plx / 100.0) if gm and plx and plx > 0 else None, ruwe=num(x.get("ruwe")), + nss=x.get("non_single_star"), act=num(x.get("activityindex_espcs")), + act_err=num(x.get("activityindex_espcs_uncertainty")), teff=num(x.get("teff_gspphot")), + rosat=bool(f[0]["2rxs_id"]), erass1=fx, erass1_n=len(xm.get("eRASS1", [])), xmm=len(xm.get("4XMM-DR13", [])), + csc=len(xm.get("CSC 2.1", [])), nuv=nuv, nuv_g=(nuv - gm) if nuv is not None and gm else None, + spt_binary=f[0]["binary"] == "True", simbad=s.get("main_id"), otype=s.get("main_type") or s.get("otype"), + sptype=s.get("sp_type"))) + json.dump(res, open(os.path.join(mm_HERE, "mm_flares.json"), "w"), indent=1) + quiet = [r for r in res if not r["rosat"] and not r["erass1_n"] and not r["xmm"] and not r["csc"]] + print("%d flaring stars; %d without 2RXS; %d without any X-ray source (eRASS1, 4XMM, CSC as well)" + % (len(res), sum(not r["rosat"] for r in res), len(quiet))) + for r in sorted(res, key=lambda r: (r["rosat"] or bool(r["erass1_n"]), r["bp_rp"] or 0)): + if r["rosat"]: + continue + print(" Gaia DR3 %s %s %-12s %s: G %.2f BP-RP %.2f M_G %s d %s pc RUWE %s; %d flare(s), S150 %.0f mJy; eRASS1 %s, " + "4XMM %d, CSC %d; Ca IRT index %s; NUV-G %s; SPT binary flag %s; SIMBAD %s" + % (r["source_id"], (r["simbad"] or "")[:22], (r["otype"] or "")[:12], (r["sptype"] or "")[:8], r["g"] or 0, + r["bp_rp"] or 0, "%.2f" % r["abs_g"] if r["abs_g"] is not None else "-", + "%.0f" % r["d_pc"] if r["d_pc"] else "-", "%.2f" % r["ruwe"] if r["ruwe"] else "-", r["flares"], + r["s150_max"], "%.2e" % r["erass1"] if r["erass1"] else ("match" if r["erass1_n"] else "none"), + r["xmm"], r["csc"], "%.3f +- %.3f" % (r["act"], r["act_err"] or 0) if r["act"] is not None else "-", + "%.2f" % r["nuv_g"] if r["nuv_g"] is not None else "-", r["spt_binary"], r["simbad"] is not None)) + + +def mm_record(): + res = json.load(open(os.path.join(mm_HERE, "mm_flares.json"))) + rows = [] + for r in res: + if r["rosat"] or r["erass1_n"] or r["xmm"] or r["csc"]: + vet = "X-ray source (%s)" % ", ".join(n for n, v in (("2RXS", r["rosat"]), ("eRASS1", r["erass1_n"]), + ("4XMM", r["xmm"]), ("CSC", r["csc"])) if v) + else: + # eRASS1 limit about 5e-14 erg/s/cm^2 in 0.2-2.3 keV + lim = 4 * math.pi * (r["d_pc"] * 3.086e18) ** 2 * 5e-14 if r["d_pc"] else None + vet = "no X-ray source; %s %s dwarf with emission lines, eRASS1 limit log Lx %.1f above an active ultracool " \ + "dwarf's" % (r["sptype"] or "", "ultracool" if (r["bp_rp"] or 0) > 3.5 else "late-M", + math.log10(lim) if lim else float("nan")) + rows.append(dict(target="gaia_dr3:" + r["source_id"], stat=r["s150_max"], unit="mJy at 150 GHz, brightest flare", + vet=vet, note="%d SPT-3G flare(s); %s" % (r["flares"], r["simbad"] or ""))) + core.record_search("spt3g_quiet_flares", "Millimetre flares on inactive stars", + archive="SPT-3G flare star catalogue (Tandoi et al. 2024); eRASS1, 4XMM-DR13, CSC 2.1, Gaia DR3", + release="2019-2022", selection="the 66 Gaia DR3 stars of the 111 SPT-3G flares", + code=os.path.abspath(__file__), entry="mm", n_targets=len(rows), + result="every flaring star has an X-ray source except four M5-M8 emission-line dwarfs at " + "37-49 pc, below eRASS1's limit", ledger="Millimetre transients") + core.record_targets("spt3g_quiet_flares", rows) + print("recorded %d stars" % len(rows)) + + +def mm_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("check", "record")) + a = p.parse_args() + if a.mode == "check": + if not os.path.exists(os.path.join(mm_ROOT, "spt3g_flare_catalog.csv")): + os.makedirs(mm_ROOT, exist_ok=True) + open(os.path.join(mm_ROOT, "spt3g_flare_catalog.csv"), "wb").write(core.get(mm_CAT, timeout=60, retries=3)) + mm_check() + else: + mm_record() + + +def mm_cli(): + quiet_warnings() + mm_main() + + +# -------------------------------------------------------------------------------------------------------------- + +doublets_DOC = r"""Cosmic-ray multiplets in Auger data: pairs and triplets within 2 deg and days, against sidereal-preserving time scrambles; matched to stars within 100 pc. + + python -I seti.py highenergy doublets [record] [--set phase1|sd1500|sd750|inclined]""" + +doublets_URL = "https://zenodo.org/api/records/6759610/files/Anisotropy_%20ApJS_2022.zip/content" +doublets_MEMBER = "Anisotropy_ ApJS_2022/Data/AugerApJS2022_Yr_JD_UTC_Th_Ph_RA_Dec_E_Expo.dat" + + +doublets_OPEN = "https://zenodo.org/records/10488964/files/summary.zip?download=1" +doublets_OPEN_FILES = {"sd1500": "summary/dataSummarySD1500.csv", "sd750": "summary/dataSummarySD750.csv", + "inclined": "summary/dataSummaryInclined.csv"} + + +def doublets_events(which="phase1"): + if which != "phase1": + import zipfile + p = core.data("auger", "opendata_summary.zip") + if not os.path.exists(p): + os.makedirs(os.path.dirname(p), exist_ok=True) + open(p, "wb").write(core.get(doublets_OPEN, timeout=600)) + rows = list(csv.DictReader(io.StringIO(zipfile.ZipFile(p).read(doublets_OPEN_FILES[which]).decode("utf-8")))) + rows = [r for r in rows if num(r["sd_ra"]) is not None and num(r["sd_dec"]) is not None and num(r["gpstime"])] + t = np.array([float(r["gpstime"]) for r in rows]) / 86400.0 + 44244.0 - 40587.0 # GPS epoch as Unix days + ra = np.radians([float(r["sd_ra"]) for r in rows]) + dec = np.radians([float(r["sd_dec"]) for r in rows]) + e = np.array([num(r["sd_energy"]) or 0.0 for r in rows]) + xyz = np.vstack([np.cos(dec) * np.cos(ra), np.cos(dec) * np.sin(ra), np.sin(dec)]).T + return t, xyz, e, np.degrees(ra), np.degrees(dec) + p = core.data("auger", "AugerApJS2022_events.dat") + if not os.path.exists(p): + import zipfile + os.makedirs(os.path.dirname(p), exist_ok=True) + z = zipfile.ZipFile(io.BytesIO(core.get(doublets_URL, timeout=600))) + open(p, "wb").write(z.read(doublets_MEMBER)) + rows = [ln.split() for ln in open(p) if ln.strip() and not ln.startswith("#")] + t = np.array([float(r[2]) for r in rows]) / 86400.0 + ra = np.radians([float(r[5]) for r in rows]) + dec = np.radians([float(r[6]) for r in rows]) + e = np.array([float(r[7]) for r in rows]) + xyz = np.vstack([np.cos(dec) * np.cos(ra), np.cos(dec) * np.sin(ra), np.sin(dec)]).T + return t, xyz, e, np.degrees(ra), np.degrees(dec) + + +def doublets_count(t, close, dt): + """Angular pairs closer than dt days.""" + return int(np.sum(np.abs(t[close[:, 0]] - t[close[:, 1]]) < dt)) + + +def doublets_triplets(t, xyz, nbr, dt, rad): + """Triplets within dt days and rad of their mean direction.""" + n = 0 + found = [] + for i, js in enumerate(nbr): + js = [j for j in js if j > i and abs(t[j] - t[i]) < dt] + for a in range(len(js)): + for b in range(a + 1, len(js)): + j, k = js[a], js[b] + if abs(t[j] - t[k]) >= dt: + continue + m = xyz[i] + xyz[j] + xyz[k] + m /= np.linalg.norm(m) + if min(m @ xyz[i], m @ xyz[j], m @ xyz[k]) > math.cos(rad): + n += 1 + found.append((i, j, k)) + return n, found + + +def doublets_main(record=False, n_perm=10000, which="phase1"): + from scipy.spatial import cKDTree + t, xyz, e, ra, dec = doublets_events(which) + tree = cKDTree(xyz) + rad = math.radians(2.0) + chord = 2 * math.sin(rad / 2) + close = np.array(sorted(tree.query_pairs(chord))) + nbr = tree.query_ball_point(xyz, 2 * math.sin(rad)) + obs = dict(pairs10=doublets_count(t, close, 10.0), pairs1=doublets_count(t, close, 1.0)) + obs["triplets30"], trip = doublets_triplets(t, xyz, nbr, 30.0, rad) + rng = np.random.default_rng(1) + null = {k: [] for k in obs} + sid = 0.99726957 + for k in range(n_perm): + # events moved by whole sidereal days, keeping exposure and freeing time + tq = rng.permutation(t) + tp = t + np.round((tq - t) / sid) * sid + null["pairs10"].append(doublets_count(tp, close, 10.0)) + null["pairs1"].append(doublets_count(tp, close, 1.0)) + if k < 1000: + null["triplets30"].append(doublets_triplets(tp, xyz, nbr, 30.0, rad)[0]) + p = {k: float((np.sum(np.array(null[k]) >= obs[k]) + 1) / (len(null[k]) + 1)) for k in obs} + print("%d events (%s), %d angular pairs within 2 deg" % (len(t), which, len(close))) + for k in obs: + print(" %-11s observed %3d, sidereal-shifted mean %.2f (95th percentile %.0f), p %.4f" + % (k, obs[k], np.mean(null[k]), np.percentile(null[k], 95), p[k])) + mult = [] + for i, j in close: + if abs(t[i] - t[j]) < 10: + mult.append(dict(kind="pair", idx=[int(i), int(j)], dt_days=float(abs(t[i] - t[j])))) + for i, j, k in trip: + mult.append(dict(kind="triplet", idx=[int(i), int(j), int(k)], dt_days=float(max(t[[i, j, k]]) - min(t[[i, j, k]])))) + # stars within 100 pc in each 2 deg circle; with many multiplets only same-day pairs and triplets + many = len(mult) > 60 + for m in mult: + c = xyz[m["idx"]].mean(axis=0) + c /= np.linalg.norm(c) + m["ra"], m["dec"] = math.degrees(math.atan2(c[1], c[0])) % 360, math.degrees(math.asin(c[2])) + m["energies"] = [float(e[i]) for i in m["idx"]] + m["dates_mjd"] = [float(t[i] + 40587.0) for i in m["idx"]] + # only Phase One is matched; lower energies deflect too far + m["stars"] = (doublets_stars(m["ra"], m["dec"])[:5] if which == "phase1" and (not many or m["kind"] == "triplet" + or m["dt_days"] < 1) else []) + print(" %s at RA %.1f Dec %+.1f, %.2f d apart, %s EeV, MJD %s; stars within 100 pc in 2 deg: %s" + % (m["kind"], m["ra"], m["dec"], m["dt_days"], ", ".join("%.0f" % x for x in m["energies"]), + ", ".join("%.1f" % x for x in m["dates_mjd"]), + "; ".join("Gaia DR3 %s at %.1f pc" % (s[1], s[0]) for s in m["stars"]) or "none")) + out = dict(n=len(t), n_angular_pairs=len(close), observed=obs, p=p, n_perm=n_perm, + null_mean={k: float(np.mean(v)) for k, v in null.items()}, multiplets=mult) + out["set"] = which + json.dump(out, open(core.results("auger_doublets%s.json" % ("" if which == "phase1" else "_" + which)), "w"), indent=1) + if record: + doublets_record(out) + + +def doublets_stars(ra, dec): + """Gaia DR3 stars within 100 pc inside 2 deg, nearest first: (pc, source_id).""" + from astroquery.gaia import Gaia + Gaia.ROW_LIMIT = -1 + q = ("SELECT source_id, parallax FROM gaiadr3.gaia_source WHERE parallax > 10 AND parallax_over_error > 10 AND " + "1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.5f, %.5f, 2.0))" % (ra, dec)) + for attempt in range(3): + try: + t = Gaia.launch_job(q).get_results() + return sorted((round(1000.0 / float(r["parallax"]), 1), str(r["source_id"])) for r in t) + except Exception: + pass + return [] + + +def doublets_record(out): + which = out.get("set", "phase1") + rid = "auger_doublets" if which == "phase1" else "auger_doublets_" + which + core.record_search( + rid, "Cosmic-ray doublets", + archive=("Pierre Auger Observatory Phase One events above 32 EeV" if which == "phase1" else + "Pierre Auger Observatory open data 2024, %s" % {"sd1500": "1500 m array", "sd750": "750 m array", + "inclined": "inclined showers"}[which]), + release=("Zenodo 10.5281/zenodo.6504276 (2004-2020)" if which == "phase1" else "Zenodo 10.5281/zenodo.10488964"), + selection="all %d events" % out["n"], + code=os.path.abspath(__file__), entry="doublets", n_targets=out["n"], + params=dict(radius_deg=2, pair_days=[1, 10], triplet_days=30, permutations=out.get("n_perm"), + null="whole sidereal days to another event's date"), + null_summary="; ".join("%s %d against a sidereal-shifted mean of %.2f (p %.4f)" % (k, out["observed"][k], out["null_mean"][k], out["p"][k]) + for k in out["observed"]), + sensitivity="two events above 32 EeV within 2 deg in 10 days: about 6e-9 J/m^2 over the array", + ledger="Cosmic-ray doublets" if which == "phase1" else "Cosmic-ray doublets, further sets", + result="pairs within 2 deg: %d within 10 days and %d within a day, triplets within 30 days %d, against sidereal-shifted " + "means of %.1f, %.1f and %.2f" % (out["observed"]["pairs10"], out["observed"]["pairs1"], out["observed"]["triplets30"], + out["null_mean"]["pairs10"], out["null_mean"]["pairs1"], out["null_mean"]["triplets30"])) + core.clear_targets(rid) + core.record_targets(rid, [dict( + target="sky:ra %.2f dec %+.2f" % (m["ra"], m["dec"]), stat=m["dt_days"], unit="days between members", + note="%s, %s EeV, MJD %s; stars within 100 pc in 2 deg: %s" + % (m["kind"], ", ".join("%.0f" % x for x in m["energies"]), ", ".join("%.2f" % x for x in m["dates_mjd"]), + ", ".join("Gaia DR3 %s" % s[1] for s in m["stars"]) or "none")) for m in out["multiplets"]]) + print("recorded") + + +def doublets_cli(): + p = argparse.ArgumentParser() + p.add_argument("mode", nargs="?", choices=("search", "record"), default="search") + p.add_argument("--set", default="phase1", choices=("phase1", "sd1500", "sd750", "inclined")) + p.add_argument("--perm", type=int, default=10000) + a = p.parse_args() + doublets_main(record=a.mode == "record", n_perm=a.perm, which=a.set) + + +dynamo_DOC = r"""Activity without a dynamo: eRASS1 X-rays above the rotation-activity relation at Ro above 1, and V-LoTSS circular polarisation at inactive slow rotators. + + python -I seti.py highenergy dynamo xray [record] + python -I seti.py highenergy dynamo polarised [record]""" + +dynamo_ROOT = os.environ.get("DYNAMO_ROOT", core.data("dynamo_dead")) +dynamo_OUT = "dynamo_dead.json" +dynamo_VIZIER = {"hamstar": "J/A+A/684/A121", "vlotss": "J/A+A/670/A124", "fetherolf": "J/ApJS/268/4", "ztf": "J/ApJS/249/18"} +dynamo_ERASS_LIMIT = 5e-14 # erg/s/cm^2, eRASS1 limit 0.2-2.3 keV +dynamo_RESID = 1.5 +# dwarf colour-temperature (Pecaut and Mamajek 2013) and bolometric corrections (Andrae et al. 2018) +dynamo_BPRP_TEFF = ((0.4, 7200), (0.5, 6900), (0.65, 6400), (0.82, 5800), (1.0, 5300), (1.2, 4900), (1.5, 4400), (2.0, 3900), (2.5, 3500), (3.0, 3200), (3.5, 3000), (4.0, 2800)) +dynamo_TEFF_BC = ((7200, 0.10), (6500, 0.09), (6000, 0.08), (5800, 0.07), (5500, 0.03), (5000, -0.10), (4500, -0.30), (4000, -0.60), (3500, -1.20), (3000, -2.00), (2800, -2.40)) + + +def dynamo_teff(bprp): + x, y = zip(*dynamo_BPRP_TEFF) + return float(np.interp(bprp, x, y)) + + +def dynamo_bc(teff): + x, y = zip(*sorted(dynamo_TEFF_BC)) + return float(np.interp(teff, x, y)) + + +def dynamo_tauc(teff): + """Convective turnover time (d), Cranmer and Saar (2011).""" + return 314.24 * math.exp(-teff / 1952.5 - (teff / 6250.0) ** 18) + 0.002 + + +def dynamo_expected(ro): + """Expected L_X/L_bol: 10^-3.13 below Ro 0.13, Ro^-2.5 above.""" + return 10 ** -3.13 if ro <= 0.13 else 10 ** -3.13 * (ro / 0.13) ** -2.5 + + +def dynamo_lbol(G, bprp, plx): + """L_bol (L_sun) from G, BP-RP and parallax (mas).""" + teff = dynamo_teff(bprp) + MG = G + 5 * math.log10(plx) - 10 + Mbol = MG + dynamo_bc(teff) + return 10 ** (0.4 * (4.74 - Mbol)), teff + + +def dynamo_vizier(key): + """VizieR tables of a catalogue, cached as ECSV.""" + from astropy.table import Table + paths = sorted(glob.glob(os.path.join(dynamo_ROOT, "%s_*.ecsv" % key))) + if not paths: + os.makedirs(dynamo_ROOT, exist_ok=True) + for i, t in enumerate(core.vizier(dynamo_VIZIER[key])): + t.write(os.path.join(dynamo_ROOT, "%s_%d.ecsv" % (key, i)), format="ascii.ecsv", overwrite=True) + paths = sorted(glob.glob(os.path.join(dynamo_ROOT, "%s_*.ecsv" % key))) + return [Table.read(p, format="ascii.ecsv") for p in paths] + + +def dynamo_rotation(): + """Rotation periods by Gaia source and by position (TESS, ZTF).""" + by_id, pos = {}, [] + p = os.path.join(dynamo_ROOT, "gaia_rotation.csv") + if not os.path.exists(p): + try: + rows = core.tap("gaia", "SELECT source_id, best_rotation_period, best_rotation_period_error, num_segments FROM gaiadr3.vari_rotation_modulation", + timeout=1800, maxrec=600000) + with open(p, "w", newline="") as f: + w = csv.DictWriter(f, fieldnames=list(rows[0].keys())) + w.writeheader() + w.writerows(rows) + except Exception as e: + print("Gaia rotation table not fetched (%s); TESS and ZTF periods only" % str(e)[:80]) + if os.path.exists(p): + for r in csv.DictReader(open(p)): + if num(r["best_rotation_period"]): + by_id[int(r["source_id"])] = (num(r["best_rotation_period"]), "Gaia DR3") + t = dynamo_vizier("fetherolf")[0] + for r in t: + if r["Pvar"] == r["Pvar"] and float(r["Pvar"]) > 0: + pos.append((float(r["RAJ2000"]), float(r["DEJ2000"]), float(r["Pvar"]), "TESS (Fetherolf et al. 2023)")) + zp = sorted(glob.glob(os.path.join(dynamo_ROOT, "ztf_*.ecsv"))) + zf = core.data("ztf_var", "ztf_periodic.fits") + if not zp and os.path.exists(zf): + zp = [zf] + if zp: + from astropy.table import Table + for path in zp: + t = Table.read(path, format="ascii.ecsv") if path.endswith(".ecsv") else Table.read(path) + cols = {c.lower(): c for c in t.colnames} + ck, ra_c, de_c, ty = cols.get("per"), cols.get("raj2000"), cols.get("dej2000"), cols.get("type") + if not (ck and ra_c and de_c): + continue + for r in t: + typ = str(r[ty]) if ty else "" + # rotational variables only (BY Dra, RS CVn) + if typ and typ.upper() not in ("BYDRA", "RSCVN", "BY DRA", "RS CVN", "ROT"): + continue + if r[ck] == r[ck] and float(r[ck]) > 0: + pos.append((float(r[ra_c]), float(r[de_c]), float(r[ck]), "ZTF (Chen et al. 2020, %s)" % typ)) + return by_id, pos + + +def dynamo_match_pos(pos, ra, dec, radius=3.0): + """Nearest position-indexed period within radius arcsec.""" + if not hasattr(dynamo_match_pos, "tree") or dynamo_match_pos.n != len(pos): + from scipy.spatial import cKDTree + a = np.radians([[p[0], p[1]] for p in pos]) + xyz = np.column_stack([np.cos(a[:, 1]) * np.cos(a[:, 0]), np.cos(a[:, 1]) * np.sin(a[:, 0]), np.sin(a[:, 1])]) + dynamo_match_pos.tree, dynamo_match_pos.n = cKDTree(xyz), len(pos) + v = np.array([math.cos(math.radians(dec)) * math.cos(math.radians(ra)), math.cos(math.radians(dec)) * math.sin(math.radians(ra)), math.sin(math.radians(dec))]) + d, i = dynamo_match_pos.tree.query(v) + return pos[i] if 2 * math.asin(d / 2) * 206265.0 <= radius else None + + +def dynamo_stars(): + """HamStar counterparts with L_X, L_bol, Teff and rotation period where known.""" + ham = dynamo_vizier("hamstar")[0] + by_id, pos = dynamo_rotation() + out = [] + for r in ham: + if int(r["Coronal"]) != 1 or int(r["CtpRank"]) != 1: + continue + plx, G, bprp, fx = (float(r[k]) if r[k] == r[k] else None for k in ("plx", "Gmag", "BP-RP", "FX")) + if not plx or plx <= 0.5 or G is None or bprp is None or not fx or fx <= 0: + continue + lbol, teff = dynamo_lbol(G, bprp, plx) + d_cm = 3.0857e18 * 1000.0 / plx + lx = 4 * math.pi * d_cm ** 2 * fx # erg/s + rx = lx / (lbol * 3.828e33) + sid = int(r["CtpId"]) if r["CtpId"] == r["CtpId"] else None + rot = by_id.get(sid) or dynamo_match_pos(pos, float(r["RAJ2000"]), float(r["DEJ2000"])) + if rot and len(rot) == 4: + rot = (rot[2], rot[3]) + out.append(dict(ero=str(r["ERO"]), gaia=sid, ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]), G=G, bprp=bprp, plx=plx, teff=teff, lbol=lbol, + fx=fx, lx=lx, rx=rx, simbad=str(r["SName"]) if r["SName"] == r["SName"] else "", otype=str(r["SOType"]) if r["SOType"] == r["SOType"] else "", + p_coronal=float(r["p-coronal"]), prot=rot[0] if rot else None, prot_src=rot[1] if rot else None)) + return out + + +dynamo_TEFF = (3000.0, 6000.0) # convective envelopes only; late-F stars keep a basal corona + + +def dynamo_xray(record=False): + stars = dynamo_stars() + with_p = [s for s in stars if s["prot"] and dynamo_TEFF[0] <= s["teff"] <= dynamo_TEFF[1]] + for s in with_p: + s["tauc"] = dynamo_tauc(s["teff"]) + s["ro"] = s["prot"] / s["tauc"] + s["resid"] = math.log10(s["rx"]) - math.log10(dynamo_expected(s["ro"])) + res_fast = np.array([s["resid"] for s in with_p if s["ro"] < 1.0]) + slow = [s for s in with_p if s["ro"] >= 1.0] + # Gaia periods beyond 10 d are not trusted + cands = sorted((s for s in slow if s["resid"] >= dynamo_RESID and not (s["prot_src"] == "Gaia DR3" and s["prot"] > 10.0)), key=lambda s: -s["resid"]) + print(" Ro at or above 1 with a Gaia period above 10 d, not counted: %d" % sum(1 for s in slow if s["prot_src"] == "Gaia DR3" and s["prot"] > 10.0)) + print("%d HamStar coronal counterparts with a distance and colour; %d at %.0f-%.0f K with a rotation period (%s); Ro below 1: %d, residual scatter %.2f dex, " + "fraction above %.1f dex %.4f; Ro at or above 1: %d, above %.1f dex: %d" % ( + len(stars), len(with_p), dynamo_TEFF[0], dynamo_TEFF[1], ", ".join("%s %d" % (k, v) for k, v in sorted(((k, sum(1 for s in with_p if s["prot_src"] == k)) for k in {s["prot_src"] for s in with_p}), key=lambda kv: -kv[1])), + int((np.array([s["ro"] for s in with_p]) < 1).sum()), float(np.std(res_fast)) if len(res_fast) else 0, dynamo_RESID, + float(np.mean(res_fast >= dynamo_RESID)) if len(res_fast) else 0, len(slow), dynamo_RESID, len(cands))) + for s in cands[:40]: + print(" %s Gaia %s: G %.2f BP-RP %.2f, %.0f pc, Teff %.0f, L_bol %.3f; P %.1f d (%s), tau_c %.1f, Ro %.2f; L_X %.2e, L_X/L_bol %.1e, residual %+.2f; SIMBAD %s %s" % ( + s["ero"], s["gaia"], s["G"], s["bprp"], 1000 / s["plx"], s["teff"], s["lbol"], s["prot"], s["prot_src"], s["tauc"], s["ro"], s["lx"], s["rx"], s["resid"], s["simbad"], s["otype"])) + out = dict(n=len(stars), n_rot=len(with_p), n_fast=int(len(res_fast)), scatter_fast=float(np.std(res_fast)) if len(res_fast) else None, + frac_fast_above=float(np.mean(res_fast >= dynamo_RESID)) if len(res_fast) else None, n_slow=len(slow), candidates=cands, threshold=dynamo_RESID) + json.dump(out, open(core.results(dynamo_OUT.replace(".json", "_xray.json")), "w"), indent=1) + if record: + core.record_search( + "dynamo_dead_xray", "Coronal X-rays without a dynamo", archive="eRASS1 HamStar (Freund et al. 2024); Gaia DR3 rotation modulation; TESS (Fetherolf et al. 2023); ZTF (Chen et al. 2020)", + release="eRASS1; Gaia DR3; VizieR tables", selection="HamStar coronal counterparts (rank 1) with a parallax above 0.5 mas, a colour and a rotation period", + code=os.path.abspath(__file__), entry="dynamo xray", n_targets=len(with_p), params=dict(residual_dex=dynamo_RESID, ro_min=1.0, relation="Wright et al. 2011, beta -2.5"), + null_summary="residual scatter %.2f dex at Ro below 1, fraction above %.1f dex %.4f" % (out["scatter_fast"] or 0, dynamo_RESID, out["frac_fast_above"] or 0), + sensitivity="L_X/L_bol 30 times the relation at Ro above 1; eRASS1 reaches 5e-14 erg/s/cm2", ledger="Coronal X-rays without a dynamo", + result="%d stars with periods, %d at Ro above 1, %d of them %.1f dex above the relation: %s" % ( + len(with_p), len(slow), len(cands), dynamo_RESID, "; ".join("%s (%s, Ro %.1f, %+.1f dex)" % (s["simbad"] or s["ero"], s["otype"] or "no type", s["ro"], s["resid"]) for s in cands[:12]))) + core.clear_targets("dynamo_dead_xray") + core.record_targets("dynamo_dead_xray", [dict(target="gaia_dr3:%s" % s["gaia"], stat=s["resid"], unit="log L_X/L_bol above the rotation-activity relation", + vet="SIMBAD %s %s; period from %s" % (s["simbad"], s["otype"] or "no type", s["prot_src"]), + note="P %.1f d, Ro %.2f, L_X %.2e erg/s, L_bol %.3f L_sun" % (s["prot"], s["ro"], s["lx"], s["lbol"])) for s in cands]) + print("recorded") + + +dynamo_RACS_SRC = "https://arxiv.org/e-print/2102.01801" + + +def dynamo_racs(): + """RACS circular-polarisation stars (Pritchard et al. 2021) from the table source.""" + import io + import re + import tarfile + p = os.path.join(dynamo_ROOT, "racs_table2.tex") + if not os.path.exists(p): + b = core.get(dynamo_RACS_SRC, timeout=300, retries=2) + t = tarfile.open(fileobj=io.BytesIO(b), mode="r:*") + for n in t.getnames(): + if n.endswith("table2.tex"): + open(p, "wb").write(t.extractfile(n).read()) + rows, section = [], "" + for line in open(p, encoding="utf-8", errors="replace"): + m = re.search(r"multicolumn\{10\}\{c\}\{([^}]*)\}", line) + if m: + section = m.group(1) + continue + cells = [c.strip() for c in line.split("&")] + if len(cells) < 9 or not re.match(r"\d\d:\d\d:\d\d", cells[2]): + continue + + def clean(s): + return re.sub(r"[\$~\\,{}]", "", s).replace("--", "-").strip() + + def val(s): + m2 = re.search(r"[-+]?\d*\.?\d+", clean(s).replace("+", "")) + return float(m2.group(0)) if m2 else None + ra = cells[2].split(":") + dec = clean(cells[3]).split(":") + sign = -1.0 if dec[0].startswith("-") else 1.0 + rows.append(dict(name=clean(cells[0]).replace("~", " "), sptype=clean(cells[1]), section=section, + ra=15 * (float(ra[0]) + float(ra[1]) / 60 + float(ra[2]) / 3600), + dec=sign * (abs(float(dec[0])) + float(dec[1]) / 60 + float(dec[2]) / 3600), + plx=val(cells[5]), s888=val(cells[6]), frac_pol=val(cells[7]))) + return rows + + +def dynamo_polarised(record=False): + from astropy.coordinates import SkyCoord + v = dynamo_vizier("vlotss")[0] + ham = {int(r["CtpId"]): r for r in dynamo_vizier("hamstar")[0] if r["CtpId"] == r["CtpId"] and int(r["Coronal"]) == 1} + ham_pos = [(float(r["RAJ2000"]), float(r["DEJ2000"]), r) for r in ham.values()] + by_id, pos = dynamo_rotation() + rows = [] + def gaia_id(x): + s = str(x).strip().split()[-1] if x == x and str(x).strip() else "" + return int(s) if s.isdigit() else None + sources = [dict(name=str(r["Name"]), survey="V-LoTSS", gaia=gaia_id(r["Gaia"]), ra=float(r["RAGdeg"]) if r["RAGdeg"] == r["RAGdeg"] else float(r["RAJ2000"]), + dec=float(r["DEGdeg"]) if r["DEGdeg"] == r["DEGdeg"] else float(r["DEJ2000"]), + plx=float(r["plx"]) if r["plx"] == r["plx"] else None, G=float(r["Gmag"]) if r["Gmag"] == r["Gmag"] else None, + bprp=float(r["BP-RP"]) if r["BP-RP"] == r["BP-RP"] else None, vI=float(r["vI"]) if r["vI"] == r["vI"] else None, + simbad=str(r["SimbadName"]), sptype="") for r in v if "PSR" not in str(r["Name"])] + sources += [dict(name=r["name"], survey="RACS (%s)" % r["section"].lower(), gaia=None, ra=r["ra"], dec=r["dec"], plx=r["plx"], G=None, bprp=None, + vI=abs(r["frac_pol"]) if r["frac_pol"] is not None else None, simbad=r["sptype"], sptype=r["sptype"]) for r in dynamo_racs()] + for s in sources: + name, sid, ra, dec, plx, G, bprp = s["name"], s["gaia"], s["ra"], s["dec"], s["plx"], s["G"], s["bprp"] + c = SkyCoord(ra, dec, unit="deg", frame="icrs").galactic + in_de = c.l.deg > 180.0 + h = ham.get(sid) if sid else None + if h is None: + # eRASS1 counterpart by position for RACS stars without Gaia ids + near = [x for x in ham_pos if abs(x[1] - dec) < 0.002 and abs(x[0] - ra) * math.cos(math.radians(dec)) < 0.002] + h = near[0][2] if near else None + if h is not None and (G is None or bprp is None or not plx): + G, bprp, plx = (float(h[k]) if h[k] == h[k] else None for k in ("Gmag", "BP-RP", "plx")) + lbol, teff = dynamo_lbol(G, bprp, plx) if plx and plx > 0 and G is not None and bprp is not None else (None, None) + if h is not None and lbol: + lx = 4 * math.pi * (3.0857e18 * 1000.0 / plx) ** 2 * float(h["FX"]) + rx, rx_lim = lx / (lbol * 3.828e33), None + elif in_de and lbol: + rx, rx_lim = None, 4 * math.pi * (3.0857e18 * 1000.0 / plx) ** 2 * dynamo_ERASS_LIMIT / (lbol * 3.828e33) + else: + rx, rx_lim = None, None + rot = (by_id.get(sid) if sid else None) or dynamo_match_pos(pos, ra, dec) + if rot and len(rot) == 4: + rot = (rot[2], rot[3]) + rows.append(dict(name=name, survey=s["survey"], gaia=sid, G=G, bprp=bprp, plx=plx, teff=teff, lbol=lbol, vI=s["vI"], in_erass_de=bool(in_de), + rx=rx, rx_limit=rx_lim, prot=rot[0] if rot else None, prot_src=rot[1] if rot else None, simbad=s["simbad"])) + flagged = [x for x in rows if x["vI"] and x["vI"] >= 30 and x["prot"] and x["prot"] > 20 and ((x["rx"] is not None and x["rx"] < 1e-5) or (x["rx_limit"] is not None and x["rx_limit"] < 1e-5))] + print("%d V-LoTSS stars with Gaia counterparts; %d in the eRASS1 half of the sky, %d with eRASS1 detections, %d with rotation periods; %d above 30 per cent polarisation at " + "L_X/L_bol below 1e-5 and periods above 20 d" % (len(rows), sum(1 for x in rows if x["in_erass_de"]), sum(1 for x in rows if x["rx"] is not None), + sum(1 for x in rows if x["prot"]), len(flagged))) + for x in sorted(rows, key=lambda x: -(x["vI"] or 0)): + print(" %-22s %-28s V/I %5.1f%%; %s pc, Teff %s; L_X/L_bol %s; P %s (%s); eRASS1 sky %s; %s" % ( + x["name"], x["survey"], x["vI"] or 0, "%.0f" % (1000 / x["plx"]) if x["plx"] else "-", "%.0f" % x["teff"] if x["teff"] else "-", + ("%.1e" % x["rx"]) if x["rx"] is not None else ("< %.1e" % x["rx_limit"] if x["rx_limit"] is not None else "-"), + "%.1f d" % x["prot"] if x["prot"] else "-", x["prot_src"] or "-", "yes" if x["in_erass_de"] else "no", x["simbad"])) + json.dump(dict(stars=rows, flagged=flagged), open(core.results(dynamo_OUT.replace(".json", "_polarised.json")), "w"), indent=1) + if record: + core.record_search( + "dynamo_dead_polarised", "Circular polarisation at inactive stars", archive="V-LoTSS (Callingham et al. 2023); RACS circular polarisation (Pritchard et al. 2021); eRASS1 HamStar; Gaia DR3, TESS and ZTF rotation periods", + release="V-LoTSS as on VizieR; RACS table 2; eRASS1", selection="V-LoTSS stars and RACS circularly polarised stars", code=os.path.abspath(__file__), entry="dynamo polarised", + n_targets=len(rows), params=dict(vI_min=30, prot_min_d=20, rx_max=1e-5, erass_limit=dynamo_ERASS_LIMIT), + null_summary="the V-LoTSS stars' own X-ray and rotation distribution", sensitivity="0.5 mJy at 144 MHz; L_X/L_bol to 1e-5 where eRASS1 covers and the star is within about 50 pc", + ledger="Circular polarisation at inactive stars", + result="%d stars, %d with rotation periods, %d with eRASS1 detections and %d limits; flagged %d: %s" % ( + len(rows), sum(1 for x in rows if x["prot"]), sum(1 for x in rows if x["rx"] is not None), sum(1 for x in rows if x["rx_limit"] is not None), len(flagged), + ", ".join(x["name"] for x in flagged) or "none")) + core.clear_targets("dynamo_dead_polarised") + core.record_targets("dynamo_dead_polarised", [dict(target=("gaia_dr3:%s" % x["gaia"]) if x["gaia"] else "star:" + x["name"], stat=x["vI"], unit="circular polarisation per cent", + vet="flagged" if x in flagged else ("active or rotating (L_X/L_bol %s, P %s)" % ( + ("%.1e" % x["rx"]) if x["rx"] is not None else "unknown", ("%.1f d" % x["prot"]) if x["prot"] else "unknown")), + note="%s; %s" % (x["name"], x["simbad"])) for x in rows]) + print("recorded") + + +dynamo_CEILING = 1e-2 +dynamo_CEILING_TYPES = ("CV", "Nova", "WD", "YSO", "TTau", "Orion", "Ae", "Be", "AGN", "QSO", "Sy", "HII", "Pulsar", "XB", "LMXB", "HMXB", "Symb", "Em", "Ae*", "Be*") +dynamo_CEILING_RADIUS = 20.0 # arcsec; SIMBAD places X-ray sources 5-15 arcsec from their Gaia counterparts + + +def dynamo_simbad_near(ra, dec, radius=dynamo_CEILING_RADIUS): + """SIMBAD objects within radius, nearest first: (main_id, otype, sep arcsec).""" + q = ("SELECT main_id, otype, DISTANCE(POINT('ICRS', ra, dec), POINT('ICRS', %f, %f))*3600 AS sep FROM basic " + "WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %f, %f, %f)) = 1" % (ra, dec, ra, dec, radius / 3600.0)) + try: + return sorted(((str(r["main_id"]), str(r["otype"]).strip(), float(r["sep"])) for r in core.simbad(q)), key=lambda x: x[2]) + except Exception as e: + print(" SIMBAD failed at %.5f %+.5f: %s" % (ra, dec, str(e)[:60])) + return [] + + +def dynamo_ceiling(record=False): + """HamStar counterparts above the coronal ceiling L_X/L_bol 1e-2, vetted by SIMBAD types within 20 arcsec, colour and match probability.""" + stars = dynamo_stars() + rx = np.array([s["rx"] for s in stars]) + print("%d HamStar coronal counterparts: log L_X/L_bol percentiles 50/90/99/99.9: %s; above 1e-3: %d, above 1e-2: %d, above 1e-1: %d" % ( + len(stars), np.percentile(np.log10(rx), [50, 90, 99, 99.9]).round(2), int((rx > 1e-3).sum()), int((rx > dynamo_CEILING).sum()), int((rx > 1e-1).sum()))) + high = sorted((s for s in stars if s["rx"] > dynamo_CEILING), key=lambda s: -s["rx"]) + for s in high: + s["natural_type"] = any(k.lower() in (s["otype"] or "").lower() for k in dynamo_CEILING_TYPES) + # types within the ceiling radius read too, since SIMBAD keeps X-ray positions as separate objects + near = dynamo_simbad_near(s["ra"], s["dec"]) + typed = [n for n in near if any(k.lower() in n[1].lower() for k in dynamo_CEILING_TYPES)] + # most telling type first, then nearest + typed.sort(key=lambda n: (min(i for i, k in enumerate(dynamo_CEILING_TYPES) if k.lower() in n[1].lower()), n[2])) + s["near"] = "; ".join("%s (%s, %.0f arcsec)" % n for n in near[:3]) + if typed and not s["natural_type"]: + s["natural_type"], s["otype"], s["simbad"], s["near_sep"] = True, typed[0][1], s["simbad"] or typed[0][0], typed[0][2] + # M_G against the main sequence 1.7 + 3.6 (BP-RP) + s["MG"] = s["G"] + 5 * math.log10(s["plx"]) - 10 + s["dwarf"] = 0.4 < s["bprp"] < 3.5 and abs(s["MG"] - (1.7 + 3.6 * s["bprp"])) < 1.2 + types = {} + for s in high: + types[s["otype"] or "none"] = types.get(s["otype"] or "none", 0) + 1 + print(" SIMBAD types of those above the ceiling: " + ", ".join("%s %d" % kv for kv in sorted(types.items(), key=lambda kv: -kv[1])[:20])) + left = [s for s in high if not s["natural_type"] and s["dwarf"] and s["p_coronal"] >= 0.5] + print(" main-sequence by Gaia, no cataclysmic, young, degenerate or extragalactic type, counterpart probability 0.5 or more: %d" % len(left)) + for s in left[:40]: + print(" %s Gaia %s %s (%s): G %.2f BP-RP %.2f M_G %.2f, %.0f pc, Teff %.0f; F_X %.1e, L_X %.2e, L_X/L_bol %.2e, p %.2f" % ( + s["ero"], s["gaia"], s["simbad"], s["otype"] or "no type", s["G"], s["bprp"], s["MG"], 1000 / s["plx"], s["teff"], s["fx"], s["lx"], s["rx"], s["p_coronal"])) + json.dump(dict(n=len(stars), above_1e3=int((rx > 1e-3).sum()), above_ceiling=len(high), left=left, types=types), open(core.results("coronal_ceiling.json"), "w"), indent=1) + if record: + core.record_search( + "coronal_ceiling", "X-ray output above the coronal ceiling", archive="eRASS1 HamStar (Freund et al. 2024); Gaia DR3", + release="eRASS1", selection="HamStar coronal counterparts (rank 1) with a parallax above 0.5 mas and a colour", code=os.path.abspath(__file__), entry="dynamo ceiling", + n_targets=len(stars), params=dict(ceiling=dynamo_CEILING, types_set_aside=dynamo_CEILING_TYPES), + null_summary="the saturated relation at 1e-3 with its 0.3 dex scatter and the flare duty cycle", sensitivity="L_X/L_bol above 1e-2 in the eRASS1 average", + ledger="X-ray output above the coronal ceiling", + result="%d counterparts, %d above 1e-3, %d above 1e-2; %d of those main-sequence by Gaia without a cataclysmic, young, degenerate or extragalactic type: %s" % ( + len(stars), int((rx > 1e-3).sum()), len(high), len(left), "; ".join("%s (%s, %.1e)" % (s["simbad"] or s["ero"], s["otype"] or "no type", s["rx"]) for s in left[:10]))) + core.clear_targets("coronal_ceiling") + core.record_targets("coronal_ceiling", [dict(target="gaia_dr3:%s" % s["gaia"], stat=s["rx"], unit="L_X/L_bol from the eRASS1 flux and Gaia", + vet=("natural type %s" % s["otype"]) if s["natural_type"] else ("not main-sequence by Gaia" if not s["dwarf"] else ("counterpart probability %.2f" % s["p_coronal"] if s["p_coronal"] < 0.5 else "above the ceiling: to vet")), + note="%s%s; G %.2f BP-RP %.2f M_G %.2f %.0f pc" % (s["simbad"], (" at %.0f arcsec" % s["near_sep"]) if s.get("near_sep") else "", + s["G"], s["bprp"], s["MG"], 1000 / s["plx"])) for s in high]) + print("recorded") + + +def dynamo_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "xray" + rec = "record" in sys.argv[2:] + {"xray": dynamo_xray, "polarised": dynamo_polarised, "ceiling": dynamo_ceiling}[mode](record=rec) + + +# -------------------------------------------------------------------------------------------------------------- +# bursts and X-rays from places that should be dark + +grbstars_DOC = r"""Gamma-ray bursts from nearby stars: Swift's GRB table (HEASARC swiftgrb) positions with an XRT localisation, each against the sources of the Gaia Catalogue of Nearby Stars within 20 pc carried to the burst's year, a star inside the larger of 5 arcsec and three times the XRT error, against the same count with the bursts moved by 1 and 2 deg in four directions. + + python -I seti.py highenergy grbstars [record] [--plx-mas 50] [--min-arcsec 5] [--sigma 3] [--shifts-deg 1 2]""" + + +def grbstars_main(record=False, plx_mas=50.0, min_arcsec=5.0, sigma=3.0, shifts_deg=[1.0, 2.0]): + grbs = [r for r in core.heasarc("SELECT name, ra, dec, xrt_pos_err, start_time FROM swiftgrb WHERE xrt_pos_err IS NOT NULL") + if num(r["ra"]) is not None and num(r["xrt_pos_err"])] + stars = catalogues.gcns("source_id, ra, dec, pmra, pmdec, parallax", "parallax > %g" % plx_mas) + sra = np.radians([float(s["ra"]) for s in stars]) + sde = np.radians([float(s["dec"]) for s in stars]) + + def inside(dra=0.0, dde=0.0): + out = [] + for g in grbs: + a, d = math.radians(num(g["ra"]) + dra), math.radians(num(g["dec"]) + dde) + cs = np.sin(d) * np.sin(sde) + np.cos(d) * np.cos(sde) * np.cos(sra - a) + sep = np.degrees(np.arccos(np.clip(cs, -1, 1))) * 3600 + r = max(min_arcsec, sigma * num(g["xrt_pos_err"])) + for j in np.nonzero(sep < r + 60)[0]: + s = stars[j] + # the star where it stood at the burst, from its proper motion since 2016 + yr = 2016.0 + try: + yr = float(str(g["start_time"])[:4]) + 0.5 + except ValueError: + pass + ra2, de2 = core.star_at(float(s["ra"]), float(s["dec"]), num(s["pmra"], 0.0), num(s["pmdec"], 0.0), 2016.0, yr) + if core.sep_arcsec(ra2, de2, math.degrees(a), math.degrees(d)) < r: + out.append((g["name"], s["source_id"])) + return out + hits = inside() + null = [len(inside(dx, dy)) for k in shifts_deg for dx, dy in ((k, 0), (-k, 0), (0, k), (0, -k))] + print("%d Swift bursts with XRT positions, %d sources within 20 pc; a star inside the error circle: %d %s; moved bursts %s" % ( + len(grbs), len(stars), len(hits), hits, null)) + if record: + core.record_run( + "swift_grb_nearby_stars", "Gamma-ray bursts from nearby stars", "HEASARC swiftgrb; Gaia Catalogue of Nearby Stars", + "Swift bursts with XRT positions: %d; sources within 20 pc: %d" % (len(grbs), len(stars)), os.path.abspath(__file__), "grbstars", + len(grbs), "bursts", dict(radius="max(%g arcsec, %g XRT sigma)" % (min_arcsec, sigma), plx_mas=plx_mas, shifts_deg=shifts_deg), + "the bursts moved %s deg: %s" % (shifts_deg, null), + "a gamma-ray burst localised by XRT onto a star within 20 pc", "%d against a mean of %.2f moved" % (len(hits), float(np.mean(null))), + [dict(target="gaia_dr3:%s" % s, note="inside %s" % g) for g, s in hits]) + print("recorded") + + +coldwdx_DOC = r"""X-rays from cold white dwarfs: Gentile Fusillo et al. (2021) white dwarfs (VizieR J/MNRAS/508/3877) within 100 pc with a white-dwarf probability above 0.75 and hydrogen-model temperatures below 8000 K, too cool for a corona or photospheric X-rays, against eRASS1's main catalogue (J/A+A/682/A34/erass1-m) by CDS XMatch within three times each source's positional error, against the same match with the white dwarfs moved 2 arcmin in eight directions; each match read for another Gaia star inside the X-ray error circle, a companion where its parallax agrees with the white dwarf's. + + python -I seti.py highenergy coldwdx [record] [--teff-max 8000] [--pwd 0.75] [--sigma 3] [--shift-arcmin 2]""" + + +def coldwdx_main(record=False, teff_max=8000.0, pwd=0.75, sigma=3.0, shift_arcmin=2.0, xmatch_arcsec=30.0): + wds = catalogues.white_dwarfs("WDJname, RA_ICRS, DE_ICRS, Plx, TeffH, Pwd", pwd=pwd, teff_max=teff_max) + pos = [dict(source_id=w["WDJname"], ra=float(w["RA_ICRS"]), dec=float(w["DE_ICRS"])) for w in wds] + + def match(dra=0.0, dde=0.0): + up = [] + for p in pos: + ra, de = p["ra"] + dra / max(math.cos(math.radians(p["dec"])), 0.05), p["dec"] + dde + if abs(de) > 90: + ra, de = ra + 180, math.copysign(180, de) - de + up.append(dict(p, ra=ra % 360, dec=de)) + return [(m["source_id"], float(m["angDist"]), m["IAUName"], float(m["RA_ICRS"]), float(m["DE_ICRS"])) + for m in core.xmatch(up, "J/A+A/682/A34/erass1-m", xmatch_arcsec)] + d = shift_arcmin / 60.0 + runs = [match()] + [match(x, y) for x, y in ((d, 0), (-d, 0), (0, d), (0, -d), (d, d), (-d, d), (d, -d), (-d, -d))] + # XMatch returns the catalogue's first hundred columns, without the positional error + names = sorted({x[2] for run in runs for x in run}) + pe = {} + for k in range(0, len(names), 200): + for r in core.tap("vizier", 'SELECT IAUName, posErr FROM "J/A+A/682/A34/erass1-m" WHERE IAUName IN (%s)' % ", ".join( + "'%s'" % n for n in names[k:k + 200])): + pe[r["IAUName"]] = num(r["posErr"]) + hits = [(w, s, pe[n], n, ra, de) for w, s, n, ra, de in runs[0] if pe.get(n) and s < sigma * pe[n]] + null = [sum(1 for w, s, n, ra, de in run if pe.get(n) and s < sigma * pe[n]) for run in runs[1:]] + # a star sharing the X-ray error circle is the natural source: the white dwarf's companion at its parallax, or a neighbour in the beam + by = {w["WDJname"].strip(): w for w in wds} + why = {} + for w, s, e, n, ra, de in hits: + wd = by[w] + near = core.tap("gaia", "SELECT source_id, ra, dec, parallax, parallax_error, phot_g_mean_mag, bp_rp FROM gaiadr3.gaia_source WHERE " + "1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f))" % (ra, de, max(sigma * e, 5.0) / 3600.0)) + others = [g for g in near if core.sep_arcsec(float(g["ra"]), float(g["dec"]), float(wd["RA_ICRS"]), float(wd["DE_ICRS"])) > 1.0] + comp = [g for g in others if num(g["parallax"]) and abs(float(g["parallax"]) - float(wd["Plx"])) < 3 * (num(g["parallax_error"]) or 1) + 1] + why[w] = ("companion", comp) if comp else ("blend", others) if others else (None, []) + print("%d white dwarfs within 100 pc below 8000 K; within 3 sigma of an eRASS1 source: %d; moved 2 arcmin %s" % (len(wds), len(hits), null)) + for w, s, e, n, ra, de in hits: + v, g = why[w] + print(" %s: %s at %.1f arcsec (error %.1f); %s %s" % (w, n, s, e, v or "no other Gaia star in the circle", + [(x["source_id"], x["phot_g_mean_mag"], x["bp_rp"], x["parallax"]) for x in g])) + if record: + core.record_run( + "erass1_cold_white_dwarfs", "X-rays from cold white dwarfs", "Gentile Fusillo et al. (2021) white dwarfs; eRASS1 main catalogue by CDS XMatch", + "white dwarfs within 100 pc below 8000 K: %d" % len(wds), os.path.abspath(__file__), "coldwdx", len(wds), "white dwarfs", + dict(teff_k=teff_max, pwd=pwd, sigma=sigma, shift_arcmin=shift_arcmin), "the white dwarfs moved %g arcmin: %s" % (shift_arcmin, null), + "an eRASS1 source on a white dwarf too cool to emit X-rays", + "%d against a mean of %.2f moved" % (len(hits), float(np.mean(null))), + [dict(target="wd:%s" % w, stat=sep, unit="arcsec", note="%s, error %.1f arcsec%s" % (n, e, "; Gaia DR3 %s in the circle" % ", ".join( + x["source_id"] for x in why[w][1]) if why[w][1] else ""), + vet=why[w][0] or ("chance-rate" if len(hits) <= np.mean(null) + 3 * math.sqrt(max(np.mean(null), 1)) else None)) + for w, sep, e, n, ra, de in hits]) + print("recorded") + + +wdmass_DOC = r"""White dwarfs above the Chandrasekhar mass: Gentile Fusillo et al. (2021) white dwarfs (VizieR J/MNRAS/508/3877) within 100 pc with a white-dwarf probability above 0.75 whose hydrogen-model and helium-model masses both exceed 1.40 solar masses at 3 sigma, more than electron degeneracy holds; each read for its fit's chi-square and temperature. + + python -I seti.py highenergy wdmass [record] [--mass-msun 1.4] [--sigma 3] [--pwd 0.75]""" + + +def wdmass_main(record=False, mass_msun=1.40, sigma=3.0, pwd=0.75): + rows = catalogues.white_dwarfs("WDJname, Plx, Pwd, GmagCorr, TeffH, MassH, e_MassH, chisqH, MassHe, e_MassHe, chisqHe", pwd=pwd, where="MassH IS NOT NULL") + over = [r for r in rows if num(r["MassH"]) - sigma * (num(r["e_MassH"]) or 9) > mass_msun and num(r["MassHe"]) is not None + and num(r["MassHe"]) - sigma * (num(r["e_MassHe"]) or 9) > mass_msun] + top = sorted(rows, key=lambda r: -(num(r["MassH"]) or 0))[:5] + print("%d white dwarfs within 100 pc with hydrogen-model masses; above 1.40 solar masses at 3 sigma in both models: %d; the heaviest %s" % ( + len(rows), len(over), ["%s %s +- %s (He %s), Teff %s, chi2 %s" % (r["WDJname"].strip(), r["MassH"], r["e_MassH"], r["MassHe"], r["TeffH"], r["chisqH"]) for r in top])) + if record: + core.record_run("wd_above_chandrasekhar", "White dwarfs above the Chandrasekhar mass", "Gentile Fusillo et al. (2021) white dwarfs (VizieR J/MNRAS/508/3877)", + "white dwarfs within 100 pc with hydrogen-model masses: %d" % len(rows), os.path.abspath(__file__), "wdmass", len(rows), "white dwarfs", + dict(mass_msun=mass_msun, sigma=sigma, pwd=pwd), "the Chandrasekhar mass", "a white dwarf heavier than degeneracy holds", + "%d; the heaviest %s at %s solar masses" % (len(over), top[0]["WDJname"].strip(), top[0]["MassH"]), + [dict(target="wd:%s" % r["WDJname"].strip(), stat=num(r["MassH"]), unit="solar masses", note="He-model %s, Teff %s, chi2 %s" % ( + r["MassHe"], r["TeffH"], r["chisqH"])) for r in over]) + print("recorded") + + +coldbdx_DOC = r"""X-rays from cold brown dwarfs: the T and Y dwarfs of the Kirkpatrick et al. (2021) 20 pc census with Spitzer astrometry, carried to 2020.0, against eRASS1's main catalogue by CDS XMatch within 15 arcsec, against the same match with the dwarfs moved 2 arcmin in eight directions; a body below 1300 K has no corona. + + python -I seti.py highenergy coldbdx [record] [--radius-arcsec 15] [--epoch 2020]""" + + +def coldbdx_main(record=False, radius_arcsec=15.0, epoch=2020.0): + bd = cold_dwarfs(epoch) + hits, null = shifted_matches(bd, "J/A+A/682/A34/erass1-m", radius_arcsec) + names = sorted({m["source_id"] for m in hits}) + print("%d T and Y dwarfs; eRASS1 sources within 15 arcsec: %d %s; moved 2 arcmin %s" % (len(bd), len(names), [ + (m["source_id"], m.get("IAUName"), round(float(m["angDist"]), 1)) for m in hits], null)) + if record: + mean = float(np.mean(null)) + core.record_run("erass1_cold_brown_dwarfs", "X-rays from cold brown dwarfs", "Kirkpatrick et al. (2021) 20 pc census (J/ApJS/253/7); eRASS1 main " + "catalogue by CDS XMatch", "T and Y dwarfs with Spitzer astrometry: %d" % len(bd), os.path.abspath(__file__), "coldbdx", len(bd), + "brown dwarfs", dict(radius_arcsec=radius_arcsec, epoch=epoch), "the dwarfs moved 2 arcmin: %s" % null, "an X-ray source on a brown dwarf too cold for a corona", + "%d against a mean of %.2f moved" % (len(names), mean), + [dict(target="bd:%s" % n, vet="chance-rate" if len(names) <= mean + 3 * math.sqrt(max(mean, 1)) else None) for n in names]) + print("recorded") + + +coldbduv_DOC = r"""Ultraviolet from cold brown dwarfs: the T and Y dwarfs of the Kirkpatrick et al. (2021) 20 pc census with Spitzer astrometry, carried to 2007.0, against GALEX's all-sky survey (GUVcat AIS, II/335) by CDS XMatch within 5 arcsec, a detection in either band, against the same match with the dwarfs moved 2 arcmin in eight directions; a body below 1300 K gives no ultraviolet GALEX can see. + + python -I seti.py highenergy coldbduv [record] [--radius-arcsec 5] [--epoch 2007]""" + + +def coldbduv_main(record=False, radius_arcsec=5.0, epoch=2007.0): + bd = cold_dwarfs(epoch) + hits, null = shifted_matches(bd, "II/335/galex_ais", radius_arcsec) + names = sorted({m["source_id"] for m in hits}) + print("%d T and Y dwarfs; GALEX sources within 5 arcsec: %d %s; moved 2 arcmin %s" % (len(bd), len(names), [ + (m["source_id"], m.get("NUVmag"), m.get("FUVmag"), round(float(m["angDist"]), 1)) for m in hits], null)) + if record: + mean = float(np.mean(null)) + core.record_run("galex_cold_brown_dwarfs", "Ultraviolet from cold brown dwarfs", "Kirkpatrick et al. (2021) 20 pc census (J/ApJS/253/7); GALEX " + "GUVcat AIS (II/335) by CDS XMatch", "T and Y dwarfs with Spitzer astrometry: %d" % len(bd), os.path.abspath(__file__), "coldbduv", + len(bd), "brown dwarfs", dict(radius_arcsec=radius_arcsec, epoch=epoch), "the dwarfs moved 2 arcmin: %s" % null, + "ultraviolet from a brown dwarf below 1300 K", "%d against a mean of %.2f moved" % (len(names), mean), + [dict(target="bd:%s" % n, vet="chance-rate" if len(names) <= mean + 3 * math.sqrt(max(mean, 1)) else None) for n in names]) + print("recorded") + + +coldwduv_DOC = r"""Ultraviolet from the coldest white dwarfs: Gentile Fusillo et al. (2021) white dwarfs within 100 pc with a white-dwarf probability above 0.75 and hydrogen-model temperatures below 4500 K, carried from 2016.0 to 2007.0, against GALEX GUVcat AIS (II/335) by CDS XMatch within 5 arcsec, a detection in either band, against the same match with the white dwarfs moved 2 arcmin in eight directions. + + python -I seti.py highenergy coldwduv [record] [--teff-max 4500] [--radius-arcsec 5] [--epoch 2007]""" + + +def coldwduv_main(record=False, teff_max=4500.0, radius_arcsec=5.0, epoch=2007.0): + wds = catalogues.white_dwarfs("WDJname, RA_ICRS, DE_ICRS, pmRA, pmDE, TeffH, GmagCorr", teff_max=teff_max) + pos = [] + for w in wds: + ra, de = core.star_at(float(w["RA_ICRS"]), float(w["DE_ICRS"]), num(w["pmRA"], 0.0), num(w["pmDE"], 0.0), 2016.0, epoch) + pos.append(dict(name=w["WDJname"].strip(), ra=ra, dec=de)) + hits, null = shifted_matches(pos, "II/335/galex_ais", radius_arcsec) + names = sorted({m["source_id"] for m in hits}) + mean = float(np.mean(null)) + print("%d white dwarfs within 100 pc below 4500 K; GALEX sources within 5 arcsec: %d %s; moved 2 arcmin %s (mean %.1f)" % ( + len(pos), len(names), [(m["source_id"], m.get("NUVmag"), m.get("FUVmag"), round(float(m["angDist"]), 1)) for m in hits], null, mean)) + if record: + core.record_run("galex_coldest_white_dwarfs", "Ultraviolet from the coldest white dwarfs", "Gentile Fusillo et al. (2021) white dwarfs; GALEX GUVcat AIS " + "(II/335) by CDS XMatch", "white dwarfs within 100 pc below 4500 K: %d" % len(pos), os.path.abspath(__file__), "coldwduv", len(pos), + "white dwarfs", dict(radius_arcsec=radius_arcsec, epoch=epoch, teff_k=teff_max), "the white dwarfs moved 2 arcmin: %s" % null, + "ultraviolet from a white dwarf too cold to give it", "%d against a mean of %.1f moved" % (len(names), mean), + [dict(target="wd:%s" % n, vet="chance-rate" if len(names) <= mean + 3 * math.sqrt(max(mean, 1)) else None) for n in names]) + print("recorded") + + +coldwdgamma_DOC = r"""Gamma rays from cold white dwarfs: Gentile Fusillo et al. (2021) white dwarfs within 100 pc with a white-dwarf probability above 0.75 and hydrogen-model temperatures below 8000 K, inside the 95 per cent ellipse of a 4FGL-DR4 source, against the same count with the white dwarfs moved 1 deg in eight directions; a white dwarf cold enough to have no corona, accretion or wind gives no GeV photons. A source the catalogue associates with another object is that object's. + + python -I seti.py highenergy coldwdgamma [record] [--teff-max 8000] [--shift-deg 1]""" + + +def fgl_sources(): + """4FGL-DR4 (gll_psc_v35): name, position, 95 per cent ellipse and first association and class of every source.""" + path = os.path.join(sources_HERE, "gll_psc_v35.fit") + if not os.path.exists(path): + open(path, "wb").write(core.get("https://fermi.gsfc.nasa.gov/ssc/data/access/lat/14yr_catalog/gll_psc_v35.fit", timeout=300)) + from astropy.io import fits + with fits.open(path) as h: + t = h["LAT_Point_Source_Catalog"].data + return dict(name=np.char.strip(np.asarray(t["Source_Name"]).astype(str)), ra=np.asarray(t["RAJ2000"], float), + dec=np.asarray(t["DEJ2000"], float), a=np.asarray(t["Conf_95_SemiMajor"], float), b=np.asarray(t["Conf_95_SemiMinor"], float), + pa=np.asarray(t["Conf_95_PosAng"], float), cls=np.char.strip(np.asarray(t["CLASS1"]).astype(str)), + assoc=np.char.strip(np.asarray(t["ASSOC1"]).astype(str))) + + +def fgl_inside(fgl, ra, dec): + """Indices of the 4FGL sources whose 95 per cent ellipse holds the position.""" + dx = (ra - fgl["ra"] + 180) % 360 - 180 + dx = dx * math.cos(math.radians(dec)) + dy = dec - fgl["dec"] + near = np.nonzero(np.isfinite(fgl["a"]) & (np.abs(dy) < 1.0) & (np.abs(dx) < 1.0))[0] + th = np.radians(fgl["pa"][near]) + u = dx[near] * np.sin(th) + dy[near] * np.cos(th) + v = dx[near] * np.cos(th) - dy[near] * np.sin(th) + return near[(u / fgl["a"][near]) ** 2 + (v / fgl["b"][near]) ** 2 <= 1.0] + + +def coldwdgamma_main(record=False, teff_max=8000.0, shift_deg=1.0): + wds = catalogues.white_dwarfs("WDJname, RA_ICRS, DE_ICRS, TeffH", teff_max=teff_max) + fgl = fgl_sources() + un = (fgl["cls"] == "") | (fgl["cls"] == "unk") + + def count(dra=0.0, dde=0.0, keep=False): + out = [] + for w in wds: + ra, de = float(w["RA_ICRS"]), float(w["DE_ICRS"]) + dde + ra += dra / max(math.cos(math.radians(de)), 0.05) + if abs(de) > 90: + ra, de = ra + 180, math.copysign(180, de) - de + out += [(w["WDJname"].strip(), int(k)) for k in fgl_inside(fgl, ra % 360, de)] + return out + at = count() + null = [sum(1 for w, k in count(x * shift_deg, y * shift_deg) if un[k]) for x, y in ((1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (-1, 1), (1, -1), (-1, -1))] + mean = float(np.mean(null)) + free = [(w, k) for w, k in at if un[k]] + owned = [(w, k) for w, k in at if not un[k]] + print("%d white dwarfs within 100 pc below 8000 K; inside an unassociated 4FGL-DR4 ellipse: %d %s; moved 1 deg %s (mean %.1f); inside an " + "associated one: %d %s" % (len(wds), len(free), [(w, fgl["name"][k], round(float(fgl["a"][k]) * 60, 1)) for w, k in free], null, mean, + len(owned), [(w, fgl["name"][k], fgl["cls"][k], fgl["assoc"][k]) for w, k in owned])) + if record: + chance = len(free) <= mean + 3 * math.sqrt(max(mean, 1)) + core.record_run("fermi_cold_white_dwarfs", "Gamma rays from cold white dwarfs", "Gentile Fusillo et al. (2021) white dwarfs; Fermi-LAT 4FGL-DR4 " + "(gll_psc_v35)", "white dwarfs within 100 pc below 8000 K: %d" % len(wds), os.path.abspath(__file__), "coldwdgamma", len(wds), + "white dwarfs", dict(teff_k=teff_max, ellipse="95 per cent", shift_deg=shift_deg), "the white dwarfs moved %g deg: %s" % (shift_deg, null), + "GeV gamma rays from a white dwarf with no corona, accretion or wind", + "%d inside an unassociated ellipse against a mean of %.1f moved; %d inside an associated one" % (len(free), mean, len(owned)), + [dict(target="wd:%s" % w, vet="chance-rate" if chance else None, note=str(fgl["name"][k])) for w, k in free] + + [dict(target="wd:%s" % w, vet="natural-source", note="%s, associated with %s (%s)" % (fgl["name"][k], fgl["assoc"][k], fgl["cls"][k])) + for w, k in owned]) + print("recorded") + + +nearbat_DOC = r"""Hard X-rays from the nearest stars: Gaia Catalogue of Nearby Stars objects within 20 pc against the Swift-BAT 105-month (J/ApJS/235/4) and 150-month (J/A+A/709/A12) sources at 14-195 keV, inside a radius of 30 arcmin over the signal-to-noise (at least 1 arcmin; 4.5 arcmin for the 150-month sources), against the same count with the stars moved 1 deg in eight directions; a star's corona gives soft X-rays, and a steady source of hard ones at a quiet star would need another engine. A source whose counterpart the catalogue names is that counterpart's. + + python -I seti.py highenergy nearbat [record] [--plx-mas 50] [--shift-deg 1]""" + + +def nearbat_main(record=False, plx_mas=50.0, shift_deg=1.0): + stars = catalogues.gcns("source_id, ra, dec, parallax", "parallax > %g" % plx_mas) + bat = [dict(name="SWIFT " + r["Swift"].strip(), ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]), r=max(1.0, 30.0 / float(r["S/N"])) / 60, + ctp=(r["CName"] or "").strip(), typ=(r["Type"] or "").strip()) + for r in core.tap("vizier", 'SELECT Swift, RAJ2000, DEJ2000, "S/N", CName, Type FROM "J/ApJS/235/4/table3"')] + bat += [dict(name="BAT " + r["BAT"].strip(), ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]), r=num(r["R95"], 4.5) / 60, ctp=(r["Ctp"] or "").strip(), + typ=(r["Type"] or "").strip()) for r in core.tap("vizier", 'SELECT BAT, RAJ2000, DEJ2000, R95, Ctp, Type FROM "J/A+A/709/A12/catalog"')] + bra, bde, brad = (np.array([b[k] for b in bat]) for k in ("ra", "dec", "r")) + + def inside(dra=0.0, dde=0.0): + out = [] + for s in stars: + de = float(s["dec"]) + dde + ra = float(s["ra"]) + dra / max(math.cos(math.radians(de)), 0.05) + if abs(de) > 90: + ra, de = ra + 180, math.copysign(180, de) - de + c = np.sin(np.radians(de)) * np.sin(np.radians(bde)) + np.cos(np.radians(de)) * np.cos(np.radians(bde)) * np.cos(np.radians(ra % 360 - bra)) + sep = np.degrees(np.arccos(np.clip(c, -1, 1))) + out += [(s["source_id"], int(k), float(sep[k]) * 60) for k in np.nonzero(sep < brad)[0]] + return out + at = inside() + null = [len({s for s, k, d in inside(x * shift_deg, y * shift_deg)}) for x, y in ((1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (-1, 1), (1, -1), (-1, -1))] + mean = float(np.mean(null)) + # the catalogue's counterpart: the star itself (named in SIMBAD under the counterpart's name) or another object + sim = {} + for s, k, d in at: + if bat[k]["ctp"]: + for r in core.simbad("SELECT b.main_id, b.otype FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id = '%s'" % bat[k]["ctp"].replace("'", "''")): + sim[k] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip()) + own = {} + for s, k, d in at: + for r in core.simbad("SELECT b.main_id FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id = 'Gaia DR3 %s'" % s): + own[s] = " ".join(str(r["main_id"]).split()) + rows = [] + for s, k, d in at: + b = bat[k] + same = b["ctp"] and k in sim and own.get(s) == sim[k][0] + vet = "flare" if same else "background-galaxy" if b["typ"][:2] in ("Sy", "Bl", "BL", "FS", "QS", "LI", "Ga", "AG") or "Sy" in b["typ"] else ( + "natural-source" if b["ctp"] else None) + rows.append(dict(star=s, simbad=own.get(s), bat=b["name"], sep_arcmin=round(d, 1), ctp=b["ctp"], typ=b["typ"], ctp_simbad=sim.get(k), vet=vet)) + left = [r for r in rows if r["vet"] is None] + print("%d stars within 20 pc; inside a Swift-BAT error circle: %d stars %s; moved 1 deg %s (mean %.1f); without a named counterpart: %d" % ( + len(stars), len({r["star"] for r in rows}), [(r["simbad"], r["bat"], r["sep_arcmin"], r["ctp"], r["typ"], r["vet"]) for r in rows], null, mean, len(left))) + if record: + chance = len({r["star"] for r in left}) <= mean + 3 * math.sqrt(max(mean, 1)) + core.record_run("bat_nearest_stars", "Hard X-rays from the nearest stars", "Gaia Catalogue of Nearby Stars; Swift-BAT 105-month (J/ApJS/235/4) and " + "150-month (J/A+A/709/A12) catalogues; SIMBAD", "objects within 20 pc: %d" % len(stars), os.path.abspath(__file__), "nearbat", + len(stars), "stars", dict(radius_arcmin="30/(S/N), at least 1; R95 for 150-month", shift_deg=shift_deg, band_kev=[14, 195], plx_mas=plx_mas), + "the stars moved %g deg: %s" % (shift_deg, null), "steady 14-195 keV emission from a star within 20 pc", + "%d stars inside a BAT circle against a mean of %.1f moved; %d without a named counterpart" % (len({r["star"] for r in rows}), mean, len(left)), + [dict(target="gaia_dr3:%s" % r["star"], vet=r["vet"] or ("chance-rate" if chance else None), + note="%s; %s at %.1f arcmin, counterpart %s (%s)" % (r["simbad"], r["bat"], r["sep_arcmin"], r["ctp"] or "none", r["typ"] or "-")) + for r in rows]) + print("recorded") + + +etzxray_DOC = r"""X-rays from Earth's transit zone: Gaia Catalogue of Nearby Stars objects within 0.264 deg of the ecliptic, which see Earth cross the Sun, in the eRASS1 half of the sky (Galactic longitude 180-360 deg), carried to 2020.0, against eRASS1 main-catalogue sources (J/A+A/682/A34) within 15 arcsec by CDS XMatch; the share with an X-ray source in the zone against the share 1-5 deg from the ecliptic and against the zone moved 2 arcmin in eight directions. Matches read in SIMBAD. + + python -I seti.py highenergy etzxray [record] [--radius-arcsec 15] [--epoch 2020]""" + + +def etzxray_main(record=False, radius_arcsec=15.0, epoch=2020.0): + from astropy.coordinates import SkyCoord + import astropy.units as u + from setitools.neighbourhood import etz_share, etz_stars, etz_vets + st = etz_stars() + every = st["zone"] + st["near"] + lon = SkyCoord(np.array([s["ra"] for s in every]) * u.deg, np.array([s["dec"] for s in every]) * u.deg).galactic.l.deg + west = {s["id"] for s, x in zip(every, lon) if x >= 180} + r = etz_share("J/A+A/682/A34/erass1-m", radius_arcsec, epoch, keep=lambda s: s["id"] in west) + vets = etz_vets(r["got"]) + mean = float(np.mean(r["null"])) + print("%d zone stars and %d stars 1-5 deg away in the eRASS1 half; eRASS1 within 15 arcsec: zone %d %s, away %d (%.2f expected in the zone, p %.3g); " + "zone moved 2 arcmin %s (mean %.1f)" % (r["zone"], r["near"], len(r["got"]), [(n, vets[n][0], vets[n][1]) for n in sorted(r["got"])], r["far"], + r["exp"], r["p"], r["null"], mean)) + if record: + core.record_run("etz_erass1_stars", "X-rays from Earth's transit zone", "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); eRASS1 main " + "catalogue (J/A+A/682/A34) by CDS XMatch; SIMBAD", "stars within 100 pc and 0.264 deg of the ecliptic at Galactic longitude 180-360 deg: %d" + % r["zone"], os.path.abspath(__file__), "etzxray", r["zone"], "stars", dict(zone_deg=0.264, control_deg=[1, 5], radius_arcsec=radius_arcsec, + epoch=epoch), "the share 1-5 deg away (%d of %d); the zone moved 2 arcmin: %s" % (r["far"], r["near"], r["null"]), + "X-rays from a star that sees Earth transit, beyond the rate of stars beside the zone", + "%d against %.2f from the share beside the zone (p %.3g) and a mean of %.1f moved" % (len(r["got"]), r["exp"], r["p"], mean), + [dict(target="gaia_dr3:%s" % n[1:], vet=vets[n][1] or ("chance-rate" if r["p"] > 0.01 else None), note="SIMBAD %s; eRASS1 %s at %.1f arcsec" % ( + vets[n][0], m.get("IAUName"), float(m["angDist"]))) for n, m in sorted(r["got"].items())]) + print("recorded") + + +deadstars_DOC = r"""Dead stars with living companions: Gaia DR3 astrometric and astrometric-spectroscopic binaries (binary_masses) whose unseen companion outweighs 1.4 solar masses at its lower bound with a flux ratio below 0.05 or none, and the published black holes Gaia BH1, BH2 and BH3; a neutron star or black hole in a wide orbit round an ordinary star is a power source, and a swarm feeding on it glows warm. AllWISE within 3 arcsec by CDS XMatch for W1-W3 redder than 0.3 mag with W3 measured to 0.2 mag, and eRASS1 within 15 arcsec, each against the stars moved 2 arcmin in eight directions; matches read in SIMBAD, for AllWISE's contamination and extension flags, for SIMBAD's young objects within 1 arcmin, and for the hot dust of an emission-line star (W1-W2 above 0.5) in the plane. + + python -I seti.py highenergy deadstars [record] [--m2-min 1.4] [--fluxratio-max 0.05] [--w13-min 0.3] [--allwise-arcsec 3] [--erass1-arcsec 15]""" + +GAIA_BLACK_HOLES = {"4373465352415301632": "Gaia BH1", "5870569352746779008": "Gaia BH2", "4318465066420528000": "Gaia BH3"} + + +def deadstars_main(record=False, m2_min=1.4, fluxratio_max=0.05, w13_min=0.3, allwise_arcsec=3.0, erass1_arcsec=15.0): + rows = core.tap_async("gaia", "SELECT b.source_id, b.m1, b.m2_lower, b.m2_upper, b.fluxratio, b.combination_method, g.ra, g.dec, g.parallax, g.phot_g_mean_mag, " + "g.bp_rp FROM gaiadr3.binary_masses AS b JOIN gaiadr3.gaia_source AS g ON b.source_id = g.source_id WHERE b.m2_lower > %g AND " + "(b.fluxratio < %g OR b.fluxratio IS NULL) AND b.combination_method IN ('Orbital+M1', 'AstroSpectroSB1+M1', 'Orbital+SB1+M1')" + % (m2_min, fluxratio_max), maxrec=5000) + have = {r["source_id"] for r in rows} + for sid, name in GAIA_BLACK_HOLES.items(): + if sid not in have: + g = core.tap("gaia", "SELECT source_id, ra, dec, parallax, phot_g_mean_mag, bp_rp FROM gaiadr3.gaia_source WHERE source_id = %s" % sid)[0] + rows.append(dict(g, m1=None, m2_lower=None, m2_upper=None, fluxratio=None, combination_method=name)) + pos = [dict(name=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"])) for r in rows] + warm = lambda m: (num(m.get("W3mag")) is not None and num(m.get("e_W3mag")) is not None and num(m["e_W3mag"]) < 0.2 and num(m.get("W1mag")) is not None + and num(m["W1mag"]) - num(m["W3mag"]) > w13_min) + ir, ir_null = shifted_matches(pos, "II/328/allwise", allwise_arcsec, keyfn=warm) + xr, xr_null = shifted_matches(pos, "J/A+A/682/A34/erass1-m", erass1_arcsec) + hit = {} + for m in ir: + hit.setdefault(m["source_id"], {})["W1-W3"] = round(num(m["W1mag"]) - num(m["W3mag"]), 2) + hit[m["source_id"]]["W1-W2"] = round(num(m["W1mag"]) - num(m["W2mag"]), 2) if num(m.get("W2mag")) is not None else None + hit[m["source_id"]]["flags"] = ((m.get("ccf") or "").strip(), (m.get("ex") or "").strip()) + for m in xr: + hit.setdefault(m["source_id"], {})["eRASS1"] = m.get("IAUName") + # the dust of a young or emission-line star: its region's young objects within 1 arcmin, and the Galactic plane + from astropy.coordinates import SkyCoord + import astropy.units as u + young = ("Y*O", "Y*?", "TT*", "HII", "MoC", "DNe", "RNe", "HH", "out", "smm", "mm", "Cl*", "OpC", "cor", "Ae*", "Be*", "Or*", "EmO", "PoC", "SFR", "Cld", "glb", "Em*", "pA*") + for n, h in hit.items(): + r = next(r for r in rows if r["source_id"] == n) + kinds = core.simbad_types_near(float(r["ra"]), float(r["dec"]), 1 / 60.0) + h["young_nearby"] = {k: v for k, v in kinds.items() if k in young} + h["b"] = round(float(SkyCoord(float(r["ra"]) * u.deg, float(r["dec"]) * u.deg).galactic.b.deg), 1) + sim = {} + if hit: + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % n for n in hit)): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + by = {r["source_id"]: r for r in rows} + act = ("BY*", "RS*", "Er*", "Fl*", "TT*", "Y*O", "Y*?", "EB*", "**", "CV*", "Ro*", "El*", "Em*", "X", "Ae*", "Be*", "a2*", "AB*", "Mi*", "sr*", "LP*", "RG*", "s*r", "s*b", "SB*") + out = [] + for n, h in hit.items(): + s = sim.get(n) + vet = ("artefact" if h.get("flags") and (h["flags"][0].strip("0") or h["flags"][1] not in ("", "0")) else + "active-star" if s and s[1] in act else + "young-star" if h.get("young_nearby") else + # hot dust of a Be or Herbig star: W1-W2 above 0.5 beside a W3 excess, in the plane where such stars live + "dust" if h.get("W1-W2") is not None and h["W1-W2"] > 0.5 and abs(h["b"]) < 10 else None) + out.append(dict(id=n, what=by[n]["combination_method"], m2=by[n]["m2_lower"], plx=by[n]["parallax"], g=by[n]["phot_g_mean_mag"], found=h, simbad=s, vet=vet)) + print("%d stars with an unseen companion above 1.4 solar masses (with Gaia BH1-3); warm W1-W3 within 3 arcsec: %d against moved %s; eRASS1 within 15 arcsec: %d against " + "moved %s" % (len(rows), len(ir), ir_null, len(xr), xr_null)) + for o in out: + print(" Gaia DR3 %s (%s, M2 above %s Msun, parallax %s, G %s): %s; SIMBAD %s; %s" % (o["id"], o["what"], o["m2"], o["plx"], o["g"], o["found"], o["simbad"], o["vet"])) + if record: + core.record_run("gaia_dead_companions", "Dead stars with living companions", "Gaia DR3 binary_masses and gaia_source; Gaia BH1-3; AllWISE (II/328) and eRASS1 " + "(J/A+A/682/A34) by CDS XMatch; SIMBAD", "stars with an unseen companion above 1.4 solar masses: %d" % len(rows), os.path.abspath(__file__), + "deadstars", len(rows), "stars", dict(m2_min=m2_min, fluxratio_max=fluxratio_max, w13_min=w13_min, radius_arcsec=dict(allwise=allwise_arcsec, erass1=erass1_arcsec)), + "the stars moved 2 arcmin: warm %s, X-ray %s" % (ir_null, xr_null), "waste heat or X-rays from a swarm feeding on a dead star", + "%d warm and %d X-ray matches against means of %.1f and %.1f moved; %d unexplained" % (len(ir), len(xr), float(np.mean(ir_null)), float(np.mean(xr_null)), sum(1 for o in out if o["vet"] is None)), + [dict(target="gaia_dr3:%s" % o["id"], vet=o["vet"], note="%s; %s; SIMBAD %s" % (o["what"], o["found"], o["simbad"])) for o in out]) + print("recorded") + + +gwequal_DOC = r"""Identical black holes merging: every compact-binary merger in the GWOSC event list (GWTC-1 to GWTC-5) with source-frame component masses and their 90 per cent bounds; the mass difference in units of the combined error, and the mass ratio of the events whose primary mass is known to 10 per cent. Manufactured objects of one design would merge at a mass ratio of exactly one beyond what the population's own preference for near-equal masses gives; the convention that the primary is the heavier piles posteriors at a ratio of one, so the test rests on the best-measured events. + + python -I seti.py highenergy gwequal [record] [--primary-error-max 0.1] [--ratio-error-max 0.05]""" + + +def gwequal_main(record=False, primary_error_max=0.1, ratio_error_max=0.05): + ev = json.loads(core.get("https://gwosc.org/eventapi/json/GWTC/", timeout=120))["events"] + rows = [] + for e in ev.values(): + m1, m2 = e.get("mass_1_source"), e.get("mass_2_source") + b = [e.get(k) for k in ("mass_1_source_lower", "mass_1_source_upper", "mass_2_source_lower", "mass_2_source_upper")] + if m1 is None or m2 is None or None in b: + continue + s1, s2 = (abs(b[0]) + abs(b[1])) / 2, (abs(b[2]) + abs(b[3])) / 2 + rows.append(dict(name=e["commonName"], cat=e["catalog.shortName"], m1=m1, m2=m2, s1=s1, s2=s2, dz=(m1 - m2) / math.hypot(s1, s2), q=m2 / m1, + sq=(m2 / m1) * math.hypot(s1 / m1, s2 / m2), frac=abs(b[0]) / m1)) + tight = sorted((r for r in rows if r["frac"] < primary_error_max), key=lambda r: r["dz"]) + within = sum(1 for r in rows if abs(r["dz"]) < 1) + exact = [r for r in tight if r["q"] + r["sq"] >= 1 and r["sq"] < ratio_error_max] + print("%d mergers with component masses; %d with the primary to 10 per cent; mass difference within one combined error for %d of %d (%.0f per cent); among the " + "best measured, mass ratios %s; at one within a ratio error below 0.05: %d %s" % ( + len(rows), len(tight), within, len(rows), 100.0 * within / len(rows), [(r["name"], round(r["q"], 2), round(r["sq"], 2)) for r in tight], + len(exact), [r["name"] for r in exact])) + if record: + core.record_run("gwtc_equal_masses", "Identical black holes merging", "GWOSC event list (GWTC-1 to GWTC-5)", "mergers with source-frame component masses: %d" % len(rows), + os.path.abspath(__file__), "gwequal", len(rows), "mergers", dict(primary_error_max=primary_error_max, ratio_error_max=ratio_error_max), + "the population's own pile-up at a ratio of one: %d of %d within one combined error" % (within, len(rows)), + "a merger whose components are equal to a few per cent beyond the population's preference", + "%d of %d best-measured events at a ratio of one within an error below 0.05" % (len(exact), len(tight)), + [dict(target="gw:%s" % r["name"], stat=round(r["q"], 3), unit="mass ratio", vet="natural-source" if r["q"] + r["sq"] < 1 else "chance-rate", + note="%s; %.1f and %.1f Msun, ratio %.2f +- %.2f" % (r["cat"], r["m1"], r["m2"], r["q"], r["sq"])) for r in tight]) + print("recorded") + + +tevnear_DOC = r"""TeV light at the nearest stars: the 1LHAASO catalogue's point-like sources (extension 0, 90 sources in all) without an association, against Gaia Catalogue of Nearby Stars objects within 20 pc inside each source's position error plus 0.1 deg, against the same count with the sources moved 2 deg in eight directions; nothing within 20 pc makes TeV photons but a flare star's corona cannot, so a star inside a TeV error circle is a candidate emitter at the energies an engine would reach. A source the catalogue associates is its counterpart's. + + python -I seti.py highenergy tevnear [record] [--plx-mas 50] [--extra-deg 0.1] [--shift-deg 2]""" + + +def tevnear_main(record=False, plx_mas=50.0, extra_deg=0.1, shift_deg=2.0): + src = core.tap("vizier", 'SELECT "1LHAASO", "f_1LHAASO", Comp, RAJ2000, DEJ2000, ePos, r39, TS, Assoc FROM "J/ApJS/271/25/catalog"') + stars = catalogues.gcns("source_id, ra, dec, parallax, phot_g_mean_mag", "parallax > %g AND gcns_prob > 0.9" % plx_mas) + sra, sde = np.array([float(s["ra"]) for s in stars]), np.array([float(s["dec"]) for s in stars]) + point = [r for r in src if num(r["r39"]) == 0] + free = [r for r in point if not (r["Assoc"] or "").strip()] + + def inside(rows, dra=0.0, dde=0.0): + out = [] + for r in rows: + ra, de = float(r["RAJ2000"]) + dra / max(math.cos(math.radians(float(r["DEJ2000"]))), 0.05), float(r["DEJ2000"]) + dde + if abs(de) > 90: + ra, de = ra + 180, math.copysign(180, de) - de + rad = (num(r["ePos"]) or 0.3) + extra_deg + c = np.sin(np.radians(de)) * np.sin(np.radians(sde)) + np.cos(np.radians(de)) * np.cos(np.radians(sde)) * np.cos(np.radians(ra % 360 - sra)) + sep = np.degrees(np.arccos(np.clip(c, -1, 1))) + out += [(r["1LHAASO"].strip(), stars[k]["source_id"], round(float(sep[k]), 2)) for k in np.nonzero(sep < rad)[0]] + return out + at = inside(free) + null = [len(inside(free, x * shift_deg, y * shift_deg)) for x, y in ((1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (-1, 1), (1, -1), (-1, -1))] + owned = inside([r for r in point if (r["Assoc"] or "").strip()]) + print("%d 1LHAASO sources, %d point-like, %d of them unassociated; stars within 20 pc inside an unassociated circle: %d %s against moved %s; inside an associated one: %d %s" % ( + len(src), len(point), len(free), len(at), at, null, len(owned), owned)) + if record: + mean = float(np.mean(null)) + core.record_run("lhaaso_nearest_stars", "TeV light at the nearest stars", "1LHAASO catalogue (J/ApJS/271/25); Gaia Catalogue of Nearby Stars", + "point-like unassociated 1LHAASO sources: %d; stars within 20 pc: %d" % (len(free), len(stars)), os.path.abspath(__file__), "tevnear", len(free), + "TeV sources", dict(extension=0, radius="ePos + %g deg" % extra_deg, shift_deg=shift_deg, plx_mas=plx_mas), "the sources moved %g deg: %s" % (shift_deg, null), + "a star within 20 pc inside the error circle of a TeV source nothing else explains", "%d against a mean of %.1f moved; %d inside associated sources" % ( + len(at), mean, len(owned)), + [dict(target="gaia_dr3:%s" % g, vet="chance-rate" if len(at) <= mean + 3 * math.sqrt(max(mean, 1)) else None, note="%s at %.2f deg" % (n, sep)) for n, g, sep in at] + + [dict(target="gaia_dr3:%s" % g, vet="natural-source", note="%s at %.2f deg, associated" % (n, sep)) for n, g, sep in owned]) + print("recorded") + + +bursts511_DOC = r"""Bursts peaking at the electron's mass: Fermi GBM bursts (HEASARC fermigbrst) whose fluence Band fit gives a peak energy measured to 10 per cent; the count within 2 per cent of 511 keV against the count a smooth run of the peak-energy distribution gives, from the bursts within 0.3 dex either side, and the same for the Comptonised fit. Annihilation radiation peaks at the electron's mass; an engine burning antimatter would send it, and no burst of a collapsing star prefers that energy. + + python -I seti.py highenergy bursts511 [record] [--window 0.02] [--error-max 0.1] [--smooth-dex 0.3]""" + +ELECTRON_KEV = 510.999 + + +def bursts511_main(record=False, window=0.02, error_max=0.1, smooth_dex=0.3): + rows = core.heasarc("SELECT name, trigger_name, t90, flnc_band_epeak, flnc_band_epeak_pos_err, flnc_band_epeak_neg_err, flnc_comp_epeak, flnc_comp_epeak_pos_err, " + "flnc_comp_epeak_neg_err FROM fermigbrst WHERE flnc_band_epeak > 0 OR flnc_comp_epeak > 0") + out = {} + for key in ("band", "comp"): + ep = np.array([core.num(r["flnc_%s_epeak" % key]) or np.nan for r in rows]) + err = np.array([max(abs(core.num(r["flnc_%s_epeak_pos_err" % key]) or np.nan), abs(core.num(r["flnc_%s_epeak_neg_err" % key]) or np.nan)) for r in rows]) + ok = np.isfinite(ep) & np.isfinite(err) & (ep > 0) & (err < error_max * ep) + le = np.log10(ep[ok]) + at = np.sum(np.abs(np.log10(ep[ok] / ELECTRON_KEV)) < math.log10(1 + window)) + # the smooth expectation: the density of peak energies within smooth_dex of the line, spread over the window + near = np.sum(np.abs(le - math.log10(ELECTRON_KEV)) < smooth_dex) + exp = near * (2 * math.log10(1 + window)) / (2 * smooth_dex) + from scipy.stats import poisson + names = [r["name"] for r, k in zip(rows, ok) if k and abs(math.log10((core.num(r["flnc_%s_epeak" % key]) or 1) / ELECTRON_KEV)) < math.log10(1 + window)] + out[key] = dict(n=int(ok.sum()), at=int(at), exp=float(exp), p=float(poisson.sf(at - 1, exp)) if at else 1.0, names=names) + print("%s fit: %d bursts with the peak to %g per cent; %d within %g per cent of 511 keV against %.1f from the neighbouring %g dex (p %.3f) %s" % ( + key, out[key]["n"], 100 * error_max, at, 100 * window, exp, 2 * smooth_dex, out[key]["p"], names[:12])) + if record: + core.record_run("gbm_bursts_511kev", "Bursts peaking at the electron's mass", "Fermi GBM burst catalogue (HEASARC fermigbrst)", + "bursts with a Band peak energy to 10 per cent: %d; Comptonised: %d" % (out["band"]["n"], out["comp"]["n"]), os.path.abspath(__file__), "bursts511", + out["band"]["n"], "bursts", dict(window=window, error_max=error_max, smooth_dex=smooth_dex), "the smooth run of peak energies within %g dex of the line" % smooth_dex, + "an excess of bursts peaking at 511 keV", "; ".join("%s %d against %.1f (p %.3f)" % (k, v["at"], v["exp"], v["p"]) for k, v in out.items()), + [dict(target="grb:%s" % n, vet="chance-rate" if out[k]["p"] > 0.01 else None, note="%s fit peak within 2 per cent of 511 keV" % k) + for k, v in out.items() for n in v["names"]]) + print("recorded") + + +grbrepeat_DOC = r"""Gamma-ray bursts repeating at one position: Swift bursts (HEASARC swiftgrb) with XRT positions, pairs within the sum of their position errors plus 5 arcsec, against the pairs the sky density gives at random; nothing natural makes two gamma-ray bursts at one spot except a magnetar's giant flares in a nearby galaxy, which carry a host name in the catalogue. + + python -I seti.py highenergy grbrepeat [record] [--extra-arcsec 5] [--default-err 5]""" + + +def grbrepeat_main(record=False, extra_arcsec=5.0, default_err=5.0): + rows = [r for r in core.heasarc("SELECT name, xrt_ra, xrt_dec, xrt_pos_err, galaxy_name, redshift, duration FROM swiftgrb WHERE xrt_ra IS NOT NULL AND xrt_dec IS NOT NULL") + if core.num(r["xrt_ra"]) is not None and core.num(r["xrt_dec"]) is not None] + ra = np.radians(np.array([float(r["xrt_ra"]) for r in rows])) + de = np.radians(np.array([float(r["xrt_dec"]) for r in rows])) + err = np.array([core.num(r["xrt_pos_err"]) or default_err for r in rows]) + xyz = np.stack([np.cos(de) * np.cos(ra), np.cos(de) * np.sin(ra), np.sin(de)], axis=1) + pairs = [] + for i in range(len(rows)): + c = np.clip(xyz[i + 1:] @ xyz[i], -1, 1) + sep = np.degrees(np.arccos(c)) * 3600 + tol = err[i] + err[i + 1:] + extra_arcsec + for j in np.nonzero(sep < tol)[0]: + pairs.append((rows[i]["name"], rows[i + 1 + j]["name"], round(float(sep[j]), 1), rows[i]["galaxy_name"], rows[i + 1 + j]["galaxy_name"])) + # chance pairs: every pair's chance of falling within its tolerance on an isotropic sky + tol_all = err[:, None] + err[None, :] + extra_arcsec + iu = np.triu_indices(len(rows), 1) + expected = float(np.sum(np.pi * np.radians(tol_all[iu] / 3600) ** 2 / (4 * np.pi))) + print("%d Swift bursts with XRT positions; %d pairs within their position errors %s against %.4f by chance" % (len(rows), len(pairs), pairs, expected)) + if record: + from scipy.stats import poisson + core.record_run("swift_repeating_bursts", "Gamma-ray bursts repeating at one position", "Swift GRB catalogue (HEASARC swiftgrb), XRT positions", + "bursts with XRT positions: %d" % len(rows), os.path.abspath(__file__), "grbrepeat", len(rows), "bursts", + dict(tolerance="xrt_pos_err sum + %g arcsec" % extra_arcsec, default_err_arcsec=default_err), + "pairs on an isotropic sky: %.4f" % expected, "two gamma-ray bursts at one position", "%d pairs against %.4f (p %.3g)" % ( + len(pairs), expected, float(poisson.sf(len(pairs) - 1, expected)) if pairs else 1.0), + [dict(target="grb:%s" % a, vet="natural-source" if (ga or gb) else None, note="with %s at %.1f arcsec; hosts %s %s" % (b, sep, ga, gb)) + for a, b, sep, ga, gb in pairs]) + print("recorded") + + +coldbdw3_DOC = r"""Twelve-micron light at cold brown dwarfs: the T and Y dwarfs of the Kirkpatrick et al. (2021) 20 pc census with Spitzer astrometry, carried to 2010.5, against AllWISE (II/328) by CDS XMatch within 5 arcsec for a W3 detection at S/N 3, against the same match with the dwarfs moved 2 arcmin in eight directions, and against the share of field sources of the dwarfs' own W1 and W2 that the catalogue gives a W3 at S/N 3, since a source it holds at W1 and W2 is measured at W3 whether or not anything is there; a body below 1300 K gives nothing at 12 um that AllWISE reaches, so a detection beyond that share is something warmer and larger around it. + + python -I seti.py highenergy coldbdw3 [record] [--radius-arcsec 5] [--epoch 2010.5] [--w3-err-max 0.36] [--field-w1 14 18] [--field-w12-min 1.2]""" + + +def coldbdw3_main(record=False, radius_arcsec=5.0, epoch=2010.5, w3_err_max=0.36, field_w1=[14.0, 18.0], field_w12_min=1.2): + bd = cold_dwarfs(epoch) + hits, null = shifted_matches(bd, "II/328/allwise", radius_arcsec, + keyfn=lambda m: num(m.get("W3mag")) is not None and num(m.get("e_W3mag")) is not None and num(m["e_W3mag"]) < w3_err_max) + names = sorted({m["source_id"] for m in hits}) + mean = float(np.mean(null)) + # the catalogue's own habit: a faint red source it holds at W1 and W2 carries a W3 at S/N 3 in a fixed share of cases, measured on field sources of the dwarfs' colours + rng = np.random.default_rng(3) + up = [] + for k, (ra0, de0) in enumerate(((30, 40), (150, 20), (200, -30), (330, -45), (90, 60), (250, 45), (10, -60), (120, -10))): + for i in range(150): + up.append(dict(source_id="p%d_%d" % (k, i), ra=ra0 + rng.uniform(-1, 1) / math.cos(math.radians(de0)), dec=de0 + rng.uniform(-1, 1))) + field = {} + for m in core.xmatch(up, "II/328/allwise", 90.0): + w1, w2 = num(m.get("W1mag")), num(m.get("W2mag")) + if w1 is not None and w2 is not None and field_w1[0] <= w1 <= field_w1[1] and w1 - w2 > field_w12_min: + field[m["AllWISE"]] = num(m.get("e_W3mag")) is not None and num(m["e_W3mag"]) < w3_err_max + share = sum(field.values()) / max(len(field), 1) + from scipy.stats import binom + p = float(binom.sf(len(names) - 1, len(bd), share)) if names else 1.0 + print("%d T and Y dwarfs; AllWISE W3 at S/N 3 within 5 arcsec: %d; moved 2 arcmin %s (mean %.1f); field sources of the dwarfs' colours carry one in %.3f of cases " + "(%d of %d), so %.1f expected (p %.3f) %s" % (len(bd), len(names), null, mean, share, sum(field.values()), len(field), share * len(bd), p, + [(m["source_id"], m.get("W3mag"), m.get("e_W3mag"), m.get("W1mag"), m.get("ccf")) for m in hits][:8])) + if record: + core.record_run("allwise_w3_cold_brown_dwarfs", "Twelve-micron light at cold brown dwarfs", "Kirkpatrick et al. (2021) 20 pc census; AllWISE (II/328) by CDS XMatch", + "T and Y dwarfs with Spitzer astrometry: %d" % len(bd), os.path.abspath(__file__), "coldbdw3", len(bd), "brown dwarfs", + dict(radius_arcsec=radius_arcsec, epoch=epoch, w3_err_max=w3_err_max, field_w1=field_w1, field_w12_min=field_w12_min), + "the share of field sources of the dwarfs' colours carrying a W3 at S/N 3: %.3f (%d of %d); the dwarfs moved 2 arcmin: %s" % ( + share, sum(field.values()), len(field), null), "12 um light at a body too cold to give it", + "%d against %.1f at the field share (p %.3f)" % (len(names), share * len(bd), p), + [dict(target="bd:%s" % n, vet="chance-rate" if p > 0.01 else None, note="a W3 the catalogue gives faint red sources in %.0f per cent of cases" % (100 * share)) + for n in names]) + print("recorded") + + +gammapeak_DOC = r"""Gamma rays peaked like a line: Fermi-LAT point sources (HEASARC's copy of the 4FGL catalogue) detected above 10 sigma whose log-parabola spectrum curves with beta above 0.8 at a curvature significance above 4, a spectrum so sharply peaked that a single energy, which a particle annihilation or a made beam would give, fits better than any power law or cutoff, against the catalogue's own curvatures; each read for its association and source class, since pulsars and blazars curve by nature, and for its analysis flags. + + python -I seti.py highenergy gammapeak [record] [--sig-min 10] [--beta-min 0.8] [--curve-min 4]""" + + +def gammapeak_main(record=False, sig_min=10.0, beta_min=0.8, curve_min=4.0): + rows = core.heasarc("SELECT name, ra, dec, lii, bii, detection_significance, spectrum_type, pl_index, lp_index, lp_beta, lp_beta_error, lp_curve_significance, lp_epeak, " + "plec_curve_significance, variability_index, source_type, assoc_name, analysis_flags FROM fermilpsc WHERE detection_significance > %g AND lp_beta " + "IS NOT NULL" % sig_min, 20000) + betas = np.array([num(r["lp_beta"]) for r in rows if num(r["lp_beta"]) is not None]) + hits = [r for r in rows if (num(r["lp_beta"]) or 0) > beta_min and (num(r["lp_curve_significance"]) or 0) > curve_min] + out = [] + for r in hits: + cls = str(r["source_type"] or "").strip() + flags = str(r["analysis_flags"] or "").strip() + out.append(dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), b=num(r["bii"]), sig=num(r["detection_significance"]), beta=num(r["lp_beta"]), + beta_err=num(r["lp_beta_error"]), curve=num(r["lp_curve_significance"]), epeak=num(r["lp_epeak"]), spec=str(r["spectrum_type"] or "").strip(), + var=num(r["variability_index"]), cls=cls, assoc=str(r["assoc_name"] or "").strip(), flags=flags, + vet="natural-type" if cls else "artefact" if flags not in ("", "0") else None)) + left = [o for o in out if o["vet"] is None] + print("%d sources above %g sigma with a log-parabola curvature; beta median %.2f, 99th percentile %.2f; beta above %g at %g sigma of curvature: %d, %d of a known class, " + "%d flagged; unexplained %d" % (len(rows), sig_min, float(np.median(betas)) if len(betas) else 0, float(np.percentile(betas, 99)) if len(betas) else 0, beta_min, + curve_min, len(out), sum(o["vet"] == "natural-type" for o in out), sum(o["vet"] == "artefact" for o in out), len(left))) + for o in sorted(out, key=lambda o: -(o["beta"] or 0)): + print(" %s (b %+.1f): %.1f sigma, beta %.2f +- %s at %.1f sigma, peak %s MeV, %s, variability %s, class %s %s, flags %s; %s" % ( + o["name"], o["b"] or 0, o["sig"], o["beta"], o["beta_err"], o["curve"], o["epeak"], o["spec"], o["var"], o["cls"] or "-", o["assoc"] or "", o["flags"] or "-", + o["vet"] or "unexplained")) + json.dump(out, open(core.results("gamma_peaked_spectra.json"), "w"), indent=1) + if record: + core.record_run( + "fermi_peaked_spectra", "Gamma rays peaked like a line", "Fermi-LAT 4FGL source catalogue (HEASARC fermilpsc)", + "sources above %g sigma with a log-parabola curvature: %d" % (sig_min, len(rows)), os.path.abspath(__file__), "gammapeak", len(rows), "sources", + dict(sig_min=sig_min, beta_min=beta_min, curve_min=curve_min), "the catalogue's curvatures: median %.2f, 99th percentile %.2f" % ( + float(np.median(betas)) if len(betas) else 0, float(np.percentile(betas, 99)) if len(betas) else 0), + "a spectrum curving with beta above %g at %g sigma, peaked within a factor of a few in energy" % (beta_min, curve_min), + "%d: %d of a known class, %d flagged; %d unexplained" % (len(out), sum(o["vet"] == "natural-type" for o in out), sum(o["vet"] == "artefact" for o in out), len(left)), + [dict(target="fermi:%s" % o["name"], stat=o["beta"], unit="log-parabola beta", vet=o["vet"], + note="%.1f sigma, curvature %.1f sigma, peak %s MeV, class %s %s, variability %s, flags %s" % ( + o["sig"], o["curve"], o["epeak"], o["cls"] or "-", o["assoc"], o["var"], o["flags"] or "-")) for o in out]) + print("recorded") + + +grbfrb_DOC = r"""Gamma rays with fast radio bursts: the Fermi GBM burst catalogue (HEASARC fermigbrst) against CHIME/FRB Catalog 1, pairs of a gamma-ray burst and a radio burst within 100 seconds of each other whose positions overlap within the gamma-ray error circle plus a degree, a message sent twice at once in two bands, against the pairs the two catalogues' rates give by chance in the same window; each read for the gamma-ray burst's duration and error circle. + + python -I seti.py highenergy grbfrb [record] [--window-s 100] [--extra-deg 1]""" + + +def grbfrb_main(record=False, window_s=100.0, extra_deg=1.0): + from scipy.stats import poisson + grbs = core.heasarc("SELECT name, ra, dec, error_radius, trigger_time, t90 FROM fermigbrst WHERE trigger_time > 0", 20000) + frbs = catalogues.frb_catalog1("Name, RpName, RAJ2000, DEJ2000, MJD400, MJDinf, DMfitb") + g = [dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.0, t=num(r["trigger_time"]), t90=num(r["t90"])) for r in grbs] + g = [x for x in g if x["t"] and x["ra"] is not None] + f = [dict(name=str(r["Name"]).strip(), rep=str(r["RpName"] or "").strip().replace("-9999", ""), ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), + t=num(r["MJDinf"]) or num(r["MJD400"]), dm=num(r["DMfitb"])) for r in frbs] + f = [x for x in f if x["t"] and x["ra"] is not None] + w = window_s / 86400.0 + gt = np.array([x["t"] for x in g]) + order = np.argsort(gt) + gt = gt[order] + g = [g[i] for i in order] + close, overlap = [], [] + for x in f: + lo, hi = np.searchsorted(gt, x["t"] - w), np.searchsorted(gt, x["t"] + w) + for i in range(lo, hi): + y = g[i] + sep = core.sep_arcsec(x["ra"], x["dec"], y["ra"], y["dec"]) / 3600.0 + pair = dict(frb=x["name"], grb=y["name"], dt_s=(x["t"] - y["t"]) * 86400.0, sep_deg=sep, err_deg=y["err"], t90=y["t90"], dm=x["dm"], rep=x["rep"]) + close.append(pair) + if sep <= y["err"] + extra_deg: + overlap.append(pair) + span = (gt.max() - gt.min()) if len(gt) > 1 else 1.0 + frbs_in = [x for x in f if gt.min() <= x["t"] <= gt.max()] + exp_time = len(frbs_in) * len(gt) * 2 * w / span + # the chance a random gamma-ray error circle plus the margin covers a given radio position + cover = float(np.mean([(1 - math.cos(math.radians(min(y["err"] + extra_deg, 180.0)))) / 2 for y in g])) + exp = exp_time * cover + p = float(poisson.sf(len(overlap) - 1, exp)) if overlap else 1.0 + for o in overlap: + o["vet"] = "chance-rate" if p > 0.01 else None + print("%d gamma-ray bursts over %.1f years and %d radio bursts, %d inside the gamma-ray span; pairs within %g s: %d (%.2f expected), overlapping in position: %d (%.3f expected, " + "Poisson p %.3g)" % (len(g), span / 365.25, len(f), len(frbs_in), window_s, len(close), exp_time, len(overlap), exp, p)) + for o in sorted(close, key=lambda o: abs(o["dt_s"])): + print(" %s and %s: %+.1f s apart, %.1f deg apart against an error circle of %.1f deg, T90 %s s, DM %s%s; %s" % ( + o["frb"], o["grb"], o["dt_s"], o["sep_deg"], o["err_deg"], o["t90"], o["dm"], " (repeater %s)" % o["rep"] if o["rep"] else "", + o.get("vet") or ("overlapping" if o in overlap else "apart on the sky"))) + json.dump(dict(n_grb=len(g), n_frb=len(f), close=close, overlap=overlap), open(core.results("grb_frb_pairs.json"), "w"), indent=1) + if record: + core.record_run( + "fermi_chime_coincidences", "Gamma rays with fast radio bursts", "Fermi GBM burst catalogue (HEASARC fermigbrst); CHIME/FRB Catalog 1", + "radio bursts inside the gamma-ray catalogue's span: %d against %d gamma-ray bursts" % (len(frbs_in), len(g)), os.path.abspath(__file__), "grbfrb", len(frbs_in), "bursts", + dict(window_s=window_s, extra_deg=extra_deg), "the two catalogues' rates give %.2f pairs in time and %.3f in time and position by chance" % (exp_time, exp), + "a gamma-ray burst within %g s of a radio burst inside its error circle plus %g deg" % (window_s, extra_deg), + "%d pairs in time, %d also overlapping in position against %.3f expected (Poisson p %.3g)" % (len(close), len(overlap), exp, p), + [dict(target="frb:%s" % o["frb"], stat=o["dt_s"], unit="seconds after %s" % o["grb"], vet=o.get("vet") if o in overlap else "off-source", + note="%.1f deg apart against %.1f deg, T90 %s s, DM %s" % (o["sep_deg"], o["err_deg"], o["t90"], o["dm"])) for o in close]) + print("recorded") + + +nocorona_DOC = r"""Spinning stars without coronae: Gaia DR3 stars within 20 pc with a rotation period below 5 days (vari_rotation_modulation), whose dynamos saturate and whose X-rays reach 1e28 erg/s and more, in the half of the sky eROSITA's first survey released (Galactic longitude 180-360 deg), carried to 2020.0 and matched to the eRASS1 main catalogue (VizieR J/A+A/682/A34) within 15 arcsec; a fast rotator without X-rays has a corona switched off, which a star does not do and a shell around it would. Each unmatched star read for its brightness and colour, since the faintest M dwarfs sit at the survey's limit, and in SIMBAD. + + python -I seti.py highenergy nocorona [record] [--plx-min 50] [--period-max-d 5] [--radius-arcsec 15]""" + + +def nocorona_main(record=False, plx_min=50.0, period_max_d=5.0, radius_arcsec=15.0): + rows = core.gaia_by_range("SELECT g.source_id, g.ra, g.dec, g.pmra, g.pmdec, g.parallax, g.phot_g_mean_mag, g.bp_rp, g.l, v.best_rotation_period, v.best_rotation_period_error " + "FROM gaiadr3.gaia_source AS g JOIN gaiadr3.vari_rotation_modulation AS v ON g.source_id = v.source_id WHERE g.source_id BETWEEN {lo} AND {hi} " + "AND g.parallax > %g AND g.parallax_over_error > 10 AND v.best_rotation_period < %g AND g.l > 180" % (plx_min, period_max_d), n=4, maxrec=50000) + st = [dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), pmra=num(r["pmra"]) or 0.0, pmdec=num(r["pmdec"]) or 0.0, plx=num(r["parallax"]), + g=num(r["phot_g_mean_mag"]), c=num(r["bp_rp"]), l=num(r["l"]), period=num(r["best_rotation_period"])) for r in rows] + up = [] + for s in st: + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, 2020.0) + up.append(dict(source_id=s["id"], ra=ra % 360, dec=de)) + got = {} + for k in range(0, len(up), 5000): + for m in core.xmatch(up[k:k + 5000], "J/A+A/682/A34/erass1-m", radius_arcsec): + if m["source_id"] not in got or float(m["angDist"]) < got[m["source_id"]][0]: + got[m["source_id"]] = (float(m["angDist"]), m.get("IAUName")) + missing = [s for s in st if s["id"] not in got] + sim = {} + for k in range(0, len(missing), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in missing[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in missing: + s["simbad"] = sim.get(s["id"]) + # the X-rays of a saturated dwarf scale with its light: a star fainter than G 14 at 20 pc sits at the survey's limit + s["vet"] = "not-measured" if (s["g"] or 0) > 14 else None + left = [s for s in missing if s["vet"] is None] + print("%d stars within %.0f pc with rotation periods below %g d in the eROSITA-DE sky; with an eRASS1 source within %g arcsec: %d; without: %d, %d of them fainter than G 14 at " + "the survey's limit; unexplained %d" % (len(st), 1000 / plx_min, period_max_d, radius_arcsec, len(got), len(missing), sum(s["vet"] == "not-measured" for s in missing), + len(left))) + for s in sorted(missing, key=lambda s: s["g"] or 0): + print(" Gaia DR3 %s: P %.2f d, G %.2f, BP-RP %s, %.1f pc, l %.1f; SIMBAD %s; %s" % (s["id"], s["period"], s["g"], s["c"], 1000 / s["plx"], s["l"], s["simbad"], + s["vet"] or "unexplained")) + json.dump(dict(n=len(st), detected=len(got), missing=missing), open(core.results("rotators_without_xrays.json"), "w"), indent=1) + if record: + core.record_run( + "erass1_rotators_without_xrays", "Spinning stars without coronae", "Gaia DR3 vari_rotation_modulation and gaia_source; eRASS1 main catalogue (VizieR J/A+A/682/A34) by " + "CDS XMatch; SIMBAD", "stars within %.0f pc with rotation periods below %g d in the eROSITA-DE sky: %d" % (1000 / plx_min, period_max_d, len(st)), + os.path.abspath(__file__), "nocorona", len(st), "stars", dict(plx_min=plx_min, period_max_d=period_max_d, radius_arcsec=radius_arcsec, epoch=2020.0), + "the %d rotators the survey detects; the faintest M dwarfs at its limit" % len(got), "a fast rotator within %.0f pc without an eRASS1 source" % (1000 / plx_min), + "%d of %d undetected, %d of them at the survey's limit; %d unexplained" % (len(missing), len(st), sum(s["vet"] == "not-measured" for s in missing), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=s["period"], unit="rotation period, d; no eRASS1 source", vet=s["vet"], + note="G %.2f, BP-RP %s, %.1f pc; SIMBAD %s" % (s["g"], s["c"], 1000 / s["plx"], s["simbad"])) for s in missing]) + print("recorded") + + +nugrb_DOC = r"""Neutrinos with gamma-ray bursts: the IceCube ten-year point-source event list (HEASARC icecubepsc) above 10 TeV against the Fermi GBM burst catalogue, a neutrino within 100 seconds of a gamma-ray burst and inside the two error circles plus a degree, two messengers sent together, against the pairs the event rate gives by chance over the same windows and circles; each pair read for the neutrino's energy and error circle and the burst's duration. + + python -I seti.py highenergy nugrb [record] [--energy-min-gev 10000] [--window-s 100] [--extra-deg 1]""" + + +def nugrb_main(record=False, energy_min_gev=10000.0, window_s=100.0, extra_deg=1.0): + from scipy.stats import poisson + # the service returns at most 100,000 rows a query, so the list is read in five spans of time + bounds = core.heasarc("SELECT MIN(time) AS a, MAX(time) AS b FROM icecubepsc", 5)[0] + edges = np.linspace(float(bounds["a"]) - 1, float(bounds["b"]) + 1, 6) + nus = [] + for a, b in zip(edges[:-1], edges[1:]): + nus += core.heasarc("SELECT event_number, time, ra, dec, error_radius, event_energy FROM icecubepsc WHERE event_energy > %g AND time >= %.5f AND time < %.5f" % ( + energy_min_gev, a, b), 100000) + grbs = core.heasarc("SELECT name, ra, dec, error_radius, trigger_time, t90 FROM fermigbrst WHERE trigger_time > 0", 20000) + nu = sorted([dict(n=str(r["event_number"]), t=num(r["time"]), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.0, e=num(r["event_energy"])) for r in nus + if num(r["time"]) and num(r["ra"]) is not None], key=lambda x: x["t"]) + nt = np.array([x["t"] for x in nu]) + span_lo, span_hi = nt.min(), nt.max() + g = [dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.0, t=num(r["trigger_time"]), t90=num(r["t90"])) for r in grbs] + g = [x for x in g if x["t"] and x["ra"] is not None and span_lo <= x["t"] <= span_hi] + w = window_s / 86400.0 + close, overlap, cover = [], [], 0.0 + for y in g: + lo, hi = np.searchsorted(nt, y["t"] - w), np.searchsorted(nt, y["t"] + w) + for i in range(lo, hi): + x = nu[i] + sep = core.sep_arcsec(x["ra"], x["dec"], y["ra"], y["dec"]) / 3600.0 + r = min(x["err"] + y["err"] + extra_deg, 180.0) + pair = dict(grb=y["name"], nu=x["n"], dt_s=(x["t"] - y["t"]) * 86400.0, sep_deg=sep, circle_deg=r, energy_gev=x["e"], nu_err=x["err"], grb_err=y["err"], t90=y["t90"]) + close.append(pair) + cover += (1 - math.cos(math.radians(r))) / 2 + if sep <= r: + overlap.append(pair) + rate = len(nu) / (span_hi - span_lo) + exp_time = len(g) * rate * 2 * w + p = float(poisson.sf(len(overlap) - 1, cover)) if overlap else 1.0 + for o in overlap: + o["vet"] = "chance-rate" if p > 0.01 else None + print("%d neutrinos above %g GeV over %.1f years and %d gamma-ray bursts in that span; neutrinos within %g s of a burst: %d (%.1f expected from the rate), inside the circles " + "too: %d (%.3f expected from the circles' sky fraction, Poisson p %.3g)" % (len(nu), energy_min_gev, (span_hi - span_lo) / 365.25, len(g), window_s, len(close), exp_time, + len(overlap), cover, p)) + for o in sorted(overlap, key=lambda o: o["sep_deg"] / o["circle_deg"]): + print(" %s and neutrino %s: %+.1f s, %.1f deg apart within a %.1f deg circle, %.0f GeV, errors %.2f and %.2f deg, T90 %s s; %s" % ( + o["grb"], o["nu"], o["dt_s"], o["sep_deg"], o["circle_deg"], o["energy_gev"], o["nu_err"], o["grb_err"], o["t90"], o["vet"] or "unexplained")) + json.dump(dict(n_nu=len(nu), n_grb=len(g), close=len(close), overlap=overlap), open(core.results("neutrino_grb_pairs.json"), "w"), indent=1) + if record: + core.record_run( + "icecube_fermi_coincidences", "Neutrinos with gamma-ray bursts", "IceCube ten-year point-source events (HEASARC icecubepsc); Fermi GBM burst catalogue (HEASARC fermigbrst)", + "gamma-ray bursts inside the neutrino list's span: %d against %d neutrinos above %g GeV" % (len(g), len(nu), energy_min_gev), os.path.abspath(__file__), "nugrb", len(g), + "bursts", dict(energy_min_gev=energy_min_gev, window_s=window_s, extra_deg=extra_deg), + "the event rate gives %.1f neutrinos in the windows and %.3f inside the circles by chance" % (exp_time, cover), + "a neutrino above %g GeV within %g s of a burst inside the two error circles plus %g deg" % (energy_min_gev, window_s, extra_deg), + "%d in the windows, %d inside the circles against %.3f expected (Poisson p %.3g)" % (len(close), len(overlap), cover, p), + [dict(target="grb:%s" % o["grb"], stat=o["dt_s"], unit="seconds to neutrino %s" % o["nu"], vet=o["vet"], + note="%.1f deg apart within %.1f deg, %.0f GeV, T90 %s s" % (o["sep_deg"], o["circle_deg"], o["energy_gev"], o["t90"])) for o in overlap]) + print("recorded") + + +nuetz_DOC = r"""Neutrinos from Earth's transit zone: the IceCube ten-year point-source events above 10 TeV (HEASARC icecubepsc) by ecliptic latitude, the count within the 0.262 deg half-width of the zone from which Earth is seen to transit the Sun, where a sender who has found us would aim, against the mean and scatter of the twenty strips of the same width on either side out to 5.5 deg, which share the zone's declinations and so the detector's acceptance; the zone's count at 10 and 100 TeV, with its highest-energy events listed. + + python -I seti.py highenergy nuetz [record] [--energy-min-gev 10000] [--half-width-deg 0.262] [--band-deg 5.5] [--high-gev 100000]""" + + +def nuetz_main(record=False, energy_min_gev=10000.0, half_width_deg=0.262, band_deg=5.5, high_gev=100000.0): + bounds = core.heasarc("SELECT MIN(time) AS a, MAX(time) AS b FROM icecubepsc", 5)[0] + edges = np.linspace(float(bounds["a"]) - 1, float(bounds["b"]) + 1, 6) + rows = [] + for a, b in zip(edges[:-1], edges[1:]): + rows += core.heasarc("SELECT event_number, time, ra, dec, error_radius, event_energy FROM icecubepsc WHERE event_energy > %g AND time >= %.5f AND time < %.5f" % ( + energy_min_gev, a, b), 100000) + ev = [dict(n=str(r["event_number"]), t=num(r["time"]), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.0, e=num(r["event_energy"])) for r in rows] + ev = [x for x in ev if x["ra"] is not None and x["dec"] is not None and x["e"]] + lam, beta = science.ecliptic_lon_lat([x["ra"] for x in ev], [x["dec"] for x in ev]) + for x, b, l in zip(ev, beta, lam): + x["beta"] = abs(float(b)) + x["lam"] = float(l) + nstrip = int(round(band_deg / half_width_deg)) - 1 + out = {} + for label, emin in (("low", energy_min_gev), ("high", high_gev)): + out[label] = dict(emin=emin, **science.zone_excess([x["beta"] for x in ev if x["e"] >= emin], half_width_deg, band_deg)) + top = sorted([x for x in ev if x["beta"] < half_width_deg], key=lambda x: -x["e"])[:10] + p_low = out["low"]["p"] + for x in top: + x["vet"] = "chance-rate" if p_low > 0.01 and out["high"]["p"] > 0.01 else None + print("%d events above %g GeV; in the transit zone (|beta| < %g deg): %d against %.1f +- %.1f in the %d strips beside it (z %+.2f, Poisson p %.3g); above %g GeV: %d against " + "%.2f +- %.2f (z %+.2f, p %.3g)" % (len(ev), energy_min_gev, half_width_deg, out["low"]["zone"], out["low"]["mean"], out["low"]["sd"], nstrip, out["low"]["z"], p_low, + high_gev, out["high"]["zone"], out["high"]["mean"], out["high"]["sd"], out["high"]["z"], out["high"]["p"])) + for x in top: + print(" event %s: %.0f GeV at RA %.2f Dec %+.2f (ecliptic %.2f, %+.3f), error %.2f deg, MJD %.3f; %s" % ( + x["n"], x["e"], x["ra"], x["dec"], x["lam"], x["beta"], x["err"], x["t"], x["vet"] or "unexplained")) + json.dump(dict(n=len(ev), bands=out, top=top), open(core.results("neutrinos_transit_zone.json"), "w"), indent=1) + if record: + core.record_run( + "icecube_transit_zone", "Neutrinos from Earth's transit zone", "IceCube ten-year point-source events (HEASARC icecubepsc)", + "events above %g GeV: %d, %d of them in the zone" % (energy_min_gev, len(ev), out["low"]["zone"]), os.path.abspath(__file__), "nuetz", len(ev), "events", + dict(energy_min_gev=energy_min_gev, half_width_deg=half_width_deg, band_deg=band_deg, high_gev=high_gev), + "the %d strips of the zone's width beside it: %.1f +- %.1f above %g GeV, %.2f +- %.2f above %g GeV" % ( + nstrip, out["low"]["mean"], out["low"]["sd"], energy_min_gev, out["high"]["mean"], out["high"]["sd"], high_gev), + "an excess of neutrinos from the band of sky that sees Earth transit the Sun", + "%d in the zone above %g GeV (z %+.2f, p %.3g) and %d above %g GeV (z %+.2f, p %.3g)" % ( + out["low"]["zone"], energy_min_gev, out["low"]["z"], p_low, out["high"]["zone"], high_gev, out["high"]["z"], out["high"]["p"]), + [dict(target="icecube_event:%s" % x["n"], stat=x["e"], unit="GeV", vet=x["vet"], + note="RA %.2f Dec %+.2f, ecliptic latitude %+.3f deg, error %.2f deg, MJD %.3f" % (x["ra"], x["dec"], x["beta"], x["err"], x["t"])) for x in top]) + print("recorded") + + +grbetz_DOC = r"""Gamma-ray bursts from Earth's transit zone: the Swift GRB table (HEASARC swiftgrb, arcminute positions) and the Fermi GBM bursts (fermigbrst) with a statistical error radius below 1 deg, by ecliptic latitude, the count within the 0.262 deg half-width of the zone from which Earth is seen to transit the Sun against the mean and scatter of the twenty strips of that width on either side out to 5.5 deg, a flash aimed at a world that has been seen; each burst in the zone listed with its duration. + + python -I seti.py highenergy grbetz [record] [--err-max-deg 1] [--half-width-deg 0.262] [--band-deg 5.5]""" + + +def grbetz_main(record=False, err_max_deg=1.0, half_width_deg=0.262, band_deg=5.5): + cats = {} + sw = core.heasarc("SELECT name, ra, dec, bat_t90, trigger_time FROM swiftgrb WHERE ra IS NOT NULL", 20000) + cats["Swift"] = [dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), err=0.05, t90=num(r["bat_t90"]), t=str(r["trigger_time"] or "")) for r in sw] + gb = core.heasarc("SELECT name, ra, dec, error_radius, t90, trigger_time FROM fermigbrst WHERE error_radius < %g" % err_max_deg, 20000) + cats["GBM"] = [dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]), t90=num(r["t90"]), t=num(r["trigger_time"])) for r in gb] + out, inzone = {}, [] + for label, bursts in cats.items(): + bursts[:] = [b for b in bursts if b["ra"] is not None and b["dec"] is not None] + lam, beta = science.ecliptic_lon_lat([b["ra"] for b in bursts], [b["dec"] for b in bursts]) + for b, l, be in zip(bursts, lam, beta): + b["lam"], b["beta"], b["cat"] = float(l), abs(float(be)), label + out[label] = dict(n=len(bursts), **science.zone_excess([b["beta"] for b in bursts], half_width_deg, band_deg)) + inzone += [b for b in bursts if b["beta"] < half_width_deg] + chance = all(v["p"] > 0.01 for v in out.values()) + for b in inzone: + b["vet"] = "chance-rate" if chance else None + print("; ".join("%s: %d bursts, %d in the zone against %.2f +- %.2f beside it (z %+.2f, Poisson p %.3g)" % ( + k, v["n"], v["zone"], v["mean"], v["sd"], v["z"], v["p"]) for k, v in out.items())) + for b in sorted(inzone, key=lambda b: b["beta"]): + print(" %s (%s): RA %.3f Dec %+.3f, ecliptic latitude %+.3f deg, error %.2f deg, T90 %s s; %s" % (b["name"], b["cat"], b["ra"], b["dec"], b["beta"], b["err"], b["t90"], + b["vet"] or "unexplained")) + json.dump(dict(bands=out, zone=inzone), open(core.results("grbs_transit_zone.json"), "w"), indent=1) + if record: + core.record_run( + "grb_transit_zone", "Gamma-ray bursts from Earth's transit zone", "Swift GRB table (HEASARC swiftgrb); Fermi GBM burst catalogue (fermigbrst)", + "Swift bursts: %d; GBM bursts with an error radius below %g deg: %d" % (out["Swift"]["n"], err_max_deg, out["GBM"]["n"]), os.path.abspath(__file__), "grbetz", + sum(v["n"] for v in out.values()), "bursts", dict(err_max_deg=err_max_deg, half_width_deg=half_width_deg, band_deg=band_deg), + "the twenty strips of the zone's width beside it: Swift %.2f +- %.2f, GBM %.2f +- %.2f" % (out["Swift"]["mean"], out["Swift"]["sd"], out["GBM"]["mean"], out["GBM"]["sd"]), + "an excess of bursts from the band of sky that sees Earth transit the Sun", + "Swift %d in the zone (z %+.2f, p %.3g), GBM %d (z %+.2f, p %.3g)" % (out["Swift"]["zone"], out["Swift"]["z"], out["Swift"]["p"], out["GBM"]["zone"], out["GBM"]["z"], + out["GBM"]["p"]), + [dict(target="grb:%s" % b["name"], stat=round(b["beta"], 4), unit="ecliptic latitude, deg", vet=b["vet"], + note="%s, RA %.3f Dec %+.3f, error %.2f deg, T90 %s s" % (b["cat"], b["ra"], b["dec"], b["err"], b["t90"])) for b in inzone]) + print("recorded") + + +nudoublets_DOC = r"""Two neutrinos from one spot: the IceCube ten-year point-source events above 100 TeV (HEASARC icecubepsc), pairs within one hour and within the sum of their angular errors plus half a degree, a source firing twice where a diffuse sky fires once, against the pairs the same events give with their times shuffled among them twenty times; each doublet listed with its energies and errors. + + python -I seti.py highenergy nudoublets [record] [--energy-min-gev 100000] [--window-h 1] [--extra-deg 0.5] [--draws 20]""" + + +def nudoublets_main(record=False, energy_min_gev=100000.0, window_h=1.0, extra_deg=0.5, draws=20): + from scipy.stats import poisson + bounds = core.heasarc("SELECT MIN(time) AS a, MAX(time) AS b FROM icecubepsc", 5)[0] + edges = np.linspace(float(bounds["a"]) - 1, float(bounds["b"]) + 1, 6) + rows = [] + for a, b in zip(edges[:-1], edges[1:]): + rows += core.heasarc("SELECT event_number, time, ra, dec, error_radius, event_energy FROM icecubepsc WHERE event_energy > %g AND time >= %.5f AND time < %.5f" % ( + energy_min_gev, a, b), 100000) + ev = [dict(n=str(r["event_number"]), t=num(r["time"]), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.0, e=num(r["event_energy"])) for r in rows] + ev = [x for x in ev if x["t"] and x["ra"] is not None and x["dec"] is not None] + t = np.array([x["t"] for x in ev]) + ra = np.radians([x["ra"] for x in ev]) + dec = np.radians([x["dec"] for x in ev]) + err = np.array([x["err"] for x in ev]) + xyz = np.stack([np.cos(dec) * np.cos(ra), np.cos(dec) * np.sin(ra), np.sin(dec)], 1) + w = window_h / 24.0 + + def pairs(times): + order = np.argsort(times) + ts = times[order] + found = [] + for a in range(len(ts)): + b = a + 1 + while b < len(ts) and ts[b] - ts[a] < w: + i, j = order[a], order[b] + sep = math.degrees(math.acos(max(-1.0, min(1.0, float(np.dot(xyz[i], xyz[j])))))) + if sep <= err[i] + err[j] + extra_deg: + found.append((i, j, sep)) + b += 1 + return found + + real = pairs(t) + rng = np.random.default_rng(7) + null = [len(pairs(rng.permutation(t))) for _ in range(draws)] + exp = float(np.mean(null)) + p = float(poisson.sf(len(real) - 1, exp)) if real else 1.0 + out = [dict(a=ev[i]["n"], b=ev[j]["n"], sep_deg=sep, dt_min=abs(ev[i]["t"] - ev[j]["t"]) * 1440, e_a=ev[i]["e"], e_b=ev[j]["e"], err_a=ev[i]["err"], err_b=ev[j]["err"], + ra=ev[i]["ra"], dec=ev[i]["dec"], vet="chance-rate" if p > 0.01 else None) for i, j, sep in real] + print("%d events above %g GeV; pairs within %g h and the summed errors plus %g deg: %d against %.1f +- %.1f with the times shuffled (Poisson p %.3g)" % ( + len(ev), energy_min_gev, window_h, extra_deg, len(real), exp, float(np.std(null)), p)) + for o in sorted(out, key=lambda o: o["sep_deg"] - o["err_a"] - o["err_b"]): + print(" %s and %s: %.2f deg apart (errors %.2f and %.2f), %.1f min, %.0f and %.0f GeV at RA %.2f Dec %+.2f; %s" % ( + o["a"], o["b"], o["sep_deg"], o["err_a"], o["err_b"], o["dt_min"], o["e_a"], o["e_b"], o["ra"], o["dec"], o["vet"] or "unexplained")) + json.dump(dict(n=len(ev), null=null, pairs=out), open(core.results("neutrino_doublets.json"), "w"), indent=1) + if record: + core.record_run( + "icecube_doublets", "Two neutrinos from one spot", "IceCube ten-year point-source events (HEASARC icecubepsc)", "events above %g GeV: %d" % (energy_min_gev, len(ev)), + os.path.abspath(__file__), "nudoublets", len(ev), "events", dict(energy_min_gev=energy_min_gev, window_h=window_h, extra_deg=extra_deg, draws=draws), + "the pairs the same events give with their times shuffled %d times: %.1f +- %.1f" % (draws, exp, float(np.std(null))), + "two events within %g h and the summed errors plus %g deg" % (window_h, extra_deg), "%d against %.1f (Poisson p %.3g)" % (len(real), exp, p), + [dict(target="icecube_event:%s" % o["a"], stat=round(o["sep_deg"], 2), unit="deg to its partner", vet=o["vet"], + note="with %s, %.1f min apart, %.0f and %.0f GeV, errors %.2f and %.2f deg" % (o["b"], o["dt_min"], o["e_a"], o["e_b"], o["err_a"], o["err_b"])) for o in out]) + print("recorded") + + +copygrbs_DOC = r"""Copy gamma-ray bursts: the Fermi GBM burst catalogue (HEASARC fermigbrst), pairs of bursts from directions more than 10 deg apart alike to 2 per cent in T90 and fluence and to 5 per cent in T50 and the Band peak energy, one explosion played twice where nature draws each from broad distributions, against the pairs found after T90 is scaled by factors that keep its distribution and break coincidence. + + python -I seti.py highenergy copygrbs [record] [--tol-time 0.02] [--tol-flux 0.02] [--tol-shape 0.05] [--sep-min-deg 10]""" + + +def copygrbs_main(record=False, tol_time=0.02, tol_flux=0.02, tol_shape=0.05, sep_min_deg=10.0): + from scipy.stats import poisson + rows = core.heasarc("SELECT name, ra, dec, error_radius, t90, t50, fluence, flnc_band_epeak, trigger_time FROM fermigbrst WHERE t90 > 0 AND t50 > 0 AND fluence > 0 AND " + "flnc_band_epeak > 0", 20000) + g = [dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), t90=num(r["t90"]), t50=num(r["t50"]), fl=num(r["fluence"]), ep=num(r["flnc_band_epeak"]), + t=num(r["trigger_time"])) for r in rows] + g = [x for x in g if None not in (x["ra"], x["dec"], x["t90"], x["t50"], x["fl"], x["ep"])] + t90 = np.log(np.array([x["t90"] for x in g])) + t50 = np.log(np.array([x["t50"] for x in g])) + fl = np.log(np.array([x["fl"] for x in g])) + ep = np.log(np.array([x["ep"] for x in g])) + ra = np.radians([x["ra"] for x in g]) + dec = np.radians([x["dec"] for x in g]) + xyz = np.stack([np.cos(dec) * np.cos(ra), np.cos(dec) * np.sin(ra), np.sin(dec)], 1) + far = xyz @ xyz.T < math.cos(math.radians(sep_min_deg)) + + def count(a): + m = (np.abs(a[:, None] - a[None, :]) < tol_time) & (np.abs(fl[:, None] - fl[None, :]) < tol_flux) & (np.abs(t50[:, None] - t50[None, :]) < tol_shape) & \ + (np.abs(ep[:, None] - ep[None, :]) < tol_shape) & far + return np.argwhere(np.triu(m, 1)) + + real = count(t90) + null = [len(count(t90 + math.log(f))) for f in (1.37, 1.73, 2.21, 0.73, 0.58, 0.45)] + exp = float(np.mean(null)) + p = float(poisson.sf(len(real) - 1, exp)) if len(real) else 1.0 + out = [dict(a=g[i]["name"], b=g[j]["name"], t90=(g[i]["t90"], g[j]["t90"]), t50=(g[i]["t50"], g[j]["t50"]), fl=(g[i]["fl"], g[j]["fl"]), ep=(g[i]["ep"], g[j]["ep"]), + sep_deg=math.degrees(math.acos(max(-1.0, min(1.0, float(np.dot(xyz[i], xyz[j])))))), vet="chance-rate" if p > 0.01 else None) for i, j in real] + print("%d bursts with T90, T50, fluence and a Band peak; pairs more than %g deg apart alike to %g in T90 and fluence and %g in T50 and peak energy: %d against %.1f (%s) with " + "T90 rescaled (Poisson p %.3g)" % (len(g), sep_min_deg, tol_time, tol_shape, len(real), exp, null, p)) + for o in out: + print(" %s and %s: T90 %.2f/%.2f s, T50 %.2f/%.2f s, fluence %.2e/%.2e, Epeak %.0f/%.0f keV, %.0f deg apart; %s" % ( + o["a"], o["b"], o["t90"][0], o["t90"][1], o["t50"][0], o["t50"][1], o["fl"][0], o["fl"][1], o["ep"][0], o["ep"][1], o["sep_deg"], o["vet"] or "unexplained")) + json.dump(dict(n=len(g), null=null, pairs=out), open(core.results("grb_copies.json"), "w"), indent=1) + if record: + core.record_run( + "gbm_copy_bursts", "Copy gamma-ray bursts", "Fermi GBM burst catalogue (HEASARC fermigbrst)", "bursts with T90, T50, fluence and a Band peak energy: %d" % len(g), + os.path.abspath(__file__), "copygrbs", len(g), "bursts", dict(tol_time=tol_time, tol_flux=tol_flux, tol_shape=tol_shape, sep_min_deg=sep_min_deg), + "the pairs after T90 is rescaled by six factors: %s" % null, "two bursts from different directions alike in duration, fluence and spectrum", + "%d against %.1f (Poisson p %.3g)" % (len(real), exp, p), + [dict(target="grb:%s" % o["a"], stat=round(o["sep_deg"], 1), unit="deg to its copy", vet=o["vet"], + note="with %s: T90 %.2f/%.2f s, fluence %.2e/%.2e, Epeak %.0f/%.0f keV" % (o["b"], o["t90"][0], o["t90"][1], o["fl"][0], o["fl"][1], o["ep"][0], o["ep"][1])) + for o in out]) + print("recorded") + + +grbtogether_DOC = r"""Gamma-ray bursts arriving together from different directions: the Fermi GBM burst catalogue (HEASARC fermigbrst), pairs of bursts triggered within 10 s whose positions lie farther apart than the sum of their error radii and 5 deg, two explosions timed together across the sky, against the count a Poisson arrival of the same bursts gives, N(N-1) times the window over the span. + + python -I seti.py highenergy grbtogether [record] [--window-s 10] [--extra-deg 5]""" + + +def grbtogether_main(record=False, window_s=10.0, extra_deg=5.0): + from scipy.stats import poisson + rows = core.heasarc("SELECT name, ra, dec, error_radius, trigger_time, t90 FROM fermigbrst WHERE trigger_time > 0", 20000) + g = [dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.0, t=num(r["trigger_time"]), t90=num(r["t90"])) for r in rows] + g = sorted([x for x in g if x["t"] and x["ra"] is not None and x["dec"] is not None], key=lambda x: x["t"]) + w = window_s / 86400.0 + close, apart = [], [] + for a in range(len(g)): + b = a + 1 + while b < len(g) and g[b]["t"] - g[a]["t"] < w: + sep = core.sep_arcsec(g[a]["ra"], g[a]["dec"], g[b]["ra"], g[b]["dec"]) / 3600.0 + pair = dict(a=g[a]["name"], b=g[b]["name"], dt_s=(g[b]["t"] - g[a]["t"]) * 86400.0, sep_deg=sep, err_a=g[a]["err"], err_b=g[b]["err"], t90_a=g[a]["t90"], t90_b=g[b]["t90"]) + close.append(pair) + if sep > g[a]["err"] + g[b]["err"] + extra_deg: + apart.append(pair) + b += 1 + span = g[-1]["t"] - g[0]["t"] + exp = len(g) * (len(g) - 1) * w / span + p = float(poisson.sf(len(apart) - 1, exp)) if apart else 1.0 + for o in apart: + o["vet"] = "chance-rate" if p > 0.01 else None + print("%d bursts over %.1f years; pairs within %g s: %d, from directions apart beyond their errors and %g deg: %d against %.2f for Poisson arrivals (p %.3g)" % ( + len(g), span / 365.25, window_s, len(close), extra_deg, len(apart), exp, p)) + for o in close: + print(" %s and %s: %.1f s apart, %.1f deg apart (errors %.1f and %.1f), T90 %s and %s s; %s" % ( + o["a"], o["b"], o["dt_s"], o["sep_deg"], o["err_a"], o["err_b"], o["t90_a"], o["t90_b"], o.get("vet") or ("the same event" if o not in apart else "unexplained"))) + json.dump(dict(n=len(g), close=close, apart=apart, expected=exp), open(core.results("grbs_together.json"), "w"), indent=1) + if record: + core.record_run( + "gbm_bursts_together", "Gamma-ray bursts arriving together from different directions", "Fermi GBM burst catalogue (HEASARC fermigbrst)", "bursts with a trigger time: %d" % len(g), + os.path.abspath(__file__), "grbtogether", len(g), "bursts", dict(window_s=window_s, extra_deg=extra_deg), "Poisson arrivals of the same bursts: %.2f pairs" % exp, + "two bursts within %g s from directions apart beyond their errors and %g deg" % (window_s, extra_deg), "%d against %.2f (p %.3g); %d pairs within the window in all" % ( + len(apart), exp, p, len(close)), + [dict(target="grb:%s" % o["a"], stat=round(o["dt_s"], 1), unit="s to its partner", vet=o["vet"], + note="with %s, %.1f deg apart, errors %.1f and %.1f deg" % (o["b"], o["sep_deg"], o["err_a"], o["err_b"])) for o in apart]) + print("recorded") + + +fermimoved_DOC = r"""Gamma-ray sources that moved between catalogues: Fermi-LAT sources carrying the same association in the four-year 3FGL and the fourteen-year 4FGL-DR4 (HEASARC fermi3fgl and fermilpsc), the separation of the two positions against the sum in quadrature of their 95 per cent semi-major axes, those apart by more than twice that sum, a source that has shifted on the sky between 2012 and 2022 beyond its errors, which a point at a fixed distance never does and a thing in motion would; each read for extension and for its place in the Galactic plane, since a source confused with its neighbours or an extended one shifts as the model changes. + + python -I seti.py highenergy fermimoved [record] [--factor 2] [--plane-deg 2]""" + + +def fermimoved_main(record=False, factor=2.0, plane_deg=2.0): + old = core.heasarc("SELECT name, ra, dec, semi_major_axis_95, assoc_name_1, detection_significance FROM fermi3fgl WHERE assoc_name_1 IS NOT NULL", 10000) + new = core.heasarc("SELECT name, ra, dec, semi_major_axis_95, assoc_name, assoc_name_alt, extended_source_name, detection_significance FROM fermilpsc WHERE assoc_name IS NOT NULL", 20000) + + def key(v): + return " ".join(str(v or "").split()).lower() + by = {} + for r in new: + for k in (key(r["assoc_name"]), key(r["assoc_name_alt"])): + if k: + by.setdefault(k, r) + out, n = [], 0 + for r in old: + k = key(r["assoc_name_1"]) + if not k or k not in by or num(r["ra"]) is None: + continue + m = by[k] + if num(m["ra"]) is None: + continue + n += 1 + sep = core.sep_arcsec(num(r["ra"]), num(r["dec"]), num(m["ra"]), num(m["dec"])) / 3600.0 + err = math.hypot(num(r["semi_major_axis_95"]) or 0, num(m["semi_major_axis_95"]) or 0) + if err and sep > factor * err: + from astropy.coordinates import SkyCoord + import astropy.units as u + b = float(SkyCoord(ra=num(m["ra"]) * u.deg, dec=num(m["dec"]) * u.deg, frame="icrs").galactic.b.deg) + out.append(dict(old=str(r["name"]).strip(), new=str(m["name"]).strip(), assoc=" ".join(str(r["assoc_name_1"]).split()), sep_deg=sep, err_deg=err, ratio=sep / err, b=b, + extended=str(m["extended_source_name"] or "").strip(), sig=(num(r["detection_significance"]), num(m["detection_significance"])), + vet="diffuse-emission" if str(m["extended_source_name"] or "").strip() else "crowding" if abs(b) < plane_deg else None)) + left = [o for o in out if o["vet"] is None] + print("%d associations shared by 3FGL and 4FGL-DR4; positions apart by more than %g times the combined 95 per cent axes: %d (%d extended in 4FGL, %d within %g deg of the Galactic " + "plane); unexplained %d" % (n, factor, len(out), sum(o["vet"] == "diffuse-emission" for o in out), sum(o["vet"] == "crowding" for o in out), plane_deg, len(left))) + for o in sorted(out, key=lambda o: -o["ratio"]): + print(" %s -> %s (%s): %.3f deg apart against %.3f (%.1f times), b %+.1f, significances %s%s; %s" % ( + o["old"], o["new"], o["assoc"], o["sep_deg"], o["err_deg"], o["ratio"], o["b"], o["sig"], ", extended " + o["extended"] if o["extended"] else "", o["vet"] or "unexplained")) + json.dump(dict(n=n, moved=out), open(core.results("fermi_moved_sources.json"), "w"), indent=1) + if record: + core.record_run( + "fermi_3fgl_4fgl_moved", "Gamma-ray sources that moved between catalogues", "Fermi-LAT 3FGL (HEASARC fermi3fgl) and 4FGL-DR4 (fermilpsc)", + "associations shared by the two catalogues: %d" % n, os.path.abspath(__file__), "fermimoved", n, "sources", dict(factor=factor, plane_deg=plane_deg), + "the catalogues' own 95 per cent error axes in quadrature; the extended sources of 4FGL; the confusion of the Galactic plane", + "two positions of one association apart by more than %g times their combined errors" % factor, + "%d, %d extended, %d in the plane; %d unexplained" % (len(out), sum(o["vet"] == "diffuse-emission" for o in out), sum(o["vet"] == "crowding" for o in out), len(left)), + [dict(target="fermi:%s" % o["new"], stat=round(o["ratio"], 1), unit="separation over the combined 95 per cent axes", vet=o["vet"], + note="%s from %s, %.3f deg against %.3f, significances %s%s" % (o["assoc"], o["old"], o["sep_deg"], o["err_deg"], o["sig"], ", extended " + o["extended"] if o["extended"] else "")) + for o in out]) + print("recorded") + + +frbgalaxies_DOC = r"""Bursts from the nearest galaxies: CHIME/FRB Catalog 1 bursts against the large galaxies within 10 Mpc north of -11 deg, each burst placed within a galaxy's optical radius plus the catalogue's half-degree localisation, a burst from a galaxy close enough that its light could be answered, against the count the bursts' own density within 10 deg of each galaxy gives; FRB 20200120E in M81's globular cluster is the published case, and each match is read against it. + + python -I seti.py highenergy frbgalaxies [record] [--loc-deg 0.5] [--annulus-deg 10]""" + +# the large galaxies within 10 Mpc that CHIME can see: name, RA, Dec (deg) and the optical radius in arcmin +FRBGALAXIES = [("M31", 10.685, 41.269, 95.0), ("M33", 23.462, 30.660, 35.0), ("M81", 148.888, 69.065, 13.0), ("M82", 148.970, 69.680, 6.0), ("IC 342", 56.702, 68.096, 11.0), + ("NGC 6946", 308.718, 60.154, 6.0), ("M94", 192.721, 41.120, 6.0), ("M64", 194.182, 21.683, 5.0), ("M101", 210.802, 54.349, 14.0), ("M51", 202.470, 47.195, 6.0), + ("NGC 2403", 114.214, 65.603, 11.0), ("NGC 4236", 184.175, 69.462, 11.0), ("Maffei 1", 40.192, 59.654, 2.0), ("Maffei 2", 40.479, 59.604, 3.0), + ("NGC 4449", 187.046, 44.094, 3.0), ("M106", 184.740, 47.304, 9.0), ("NGC 4631", 190.533, 32.541, 8.0), ("NGC 891", 35.639, 42.349, 7.0), + ("NGC 4244", 184.374, 37.807, 8.0), ("NGC 4258", 184.740, 47.304, 9.0), ("NGC 3077", 150.830, 68.734, 3.0), ("NGC 4214", 183.913, 36.327, 4.0), + ("NGC 2976", 146.814, 67.916, 3.0), ("NGC 5204", 202.401, 58.418, 3.0), ("NGC 5474", 211.256, 53.663, 2.0), ("Holmberg II", 124.771, 70.721, 4.0), + ("NGC 2366", 112.229, 69.205, 4.0), ("NGC 4605", 189.998, 61.610, 3.0), ("NGC 672", 26.975, 27.433, 4.0), ("IC 1727", 26.875, 27.333, 3.0), + ("NGC 925", 36.820, 33.579, 5.0), ("NGC 3109", 150.780, -26.160, 10.0), ("Sextans A", 152.753, -4.693, 3.0), ("Sextans B", 150.000, 5.333, 3.0), + ("Leo A", 149.860, 30.746, 3.0), ("NGC 3738", 173.952, 54.524, 1.5), ("NGC 4395", 186.454, 33.547, 7.0), ("NGC 5238", 203.738, 51.613, 1.0), + ("UGC 8508", 203.325, 54.912, 1.0), ("NGC 5585", 214.951, 56.729, 3.0), ("NGC 6503", 267.360, 70.144, 4.0), ("NGC 7793", 359.458, -32.591, 5.0), + ("NGC 3621", 169.568, -32.814, 6.0), ("NGC 247", 11.786, -20.760, 11.0), ("NGC 3184", 154.570, 41.424, 4.0), ("M63", 198.956, 42.029, 6.0), + ("NGC 4826", 194.182, 21.683, 5.0), ("NGC 5055", 198.956, 42.029, 6.0), ("NGC 4490", 187.651, 41.644, 3.0), ("NGC 4485", 187.661, 41.702, 1.0)] + + +def frbgalaxies_main(record=False, loc_deg=0.5, annulus_deg=10.0): + from scipy.stats import poisson + frbs = catalogues.frb_catalog1("Name, RpName, RAJ2000, DEJ2000, DMfitb") + f = [dict(name=str(r["Name"]).strip(), rep=str(r["RpName"] or "").strip().replace("-9999", ""), ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), dm=num(r["DMfitb"])) for r in frbs] + f = [x for x in f if x["ra"] is not None and x["dec"] is not None] + seen = set() + f = [x for x in f if not (x["rep"] and x["rep"] in seen or seen.add(x["rep"] or x["name"]))] + gals = [g for g in FRBGALAXIES if g[2] > -11] + out, exp_total = [], 0.0 + for name, ra, dec, rad in gals: + r = rad / 60.0 + loc_deg + seps = np.array([core.sep_arcsec(ra, dec, x["ra"], x["dec"]) / 3600.0 for x in f]) + inside = [f[i] for i in np.nonzero(seps < r)[0]] + ring = int(np.sum((seps >= r) & (seps < annulus_deg))) + exp = ring * (1 - math.cos(math.radians(r))) / (math.cos(math.radians(r)) - math.cos(math.radians(annulus_deg))) + exp_total += exp + for x in inside: + out.append(dict(galaxy=name, frb=x["name"], rep=x["rep"], sep_deg=float(core.sep_arcsec(ra, dec, x["ra"], x["dec"]) / 3600.0), radius_deg=r, dm=x["dm"], expected=exp, + vet="natural-source" if x["rep"] and "20200120E" in x["rep"] else None)) + p = float(poisson.sf(len(out) - 1, exp_total)) if out else 1.0 + for o in out: + if o["vet"] is None and p > 0.01: + o["vet"] = "chance-rate" + left = [o for o in out if o["vet"] is None] + print("%d sources against %d galaxies within 10 Mpc north of -11 deg; bursts inside a galaxy's radius plus %g deg: %d against %.2f from the density within %g deg (Poisson p %.3g); " + "unexplained %d" % (len(f), len(gals), loc_deg, len(out), exp_total, annulus_deg, p, len(left))) + for o in sorted(out, key=lambda o: o["sep_deg"] / o["radius_deg"]): + print(" %s at %s: %.2f deg of %.2f, DM %s%s; %s" % (o["frb"], o["galaxy"], o["sep_deg"], o["radius_deg"], o["dm"], ", repeater " + o["rep"] if o["rep"] else "", o["vet"] or "unexplained")) + json.dump(dict(n=len(f), galaxies=len(gals), expected=exp_total, matches=out), open(core.results("frbs_nearest_galaxies.json"), "w"), indent=1) + if record: + core.record_run( + "chime_nearest_galaxies", "Bursts from the nearest galaxies", "CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59); the large galaxies within 10 Mpc", + "sources: %d; galaxies north of -11 deg: %d" % (len(f), len(gals)), os.path.abspath(__file__), "frbgalaxies", len(f), "sources", dict(loc_deg=loc_deg, annulus_deg=annulus_deg), + "the bursts' density within %g deg of each galaxy: %.2f expected inside" % (annulus_deg, exp_total), "a burst inside a nearby galaxy's radius and the localisation", + "%d against %.2f (Poisson p %.3g); %d unexplained" % (len(out), exp_total, p, len(left)), + [dict(target="frb:%s" % o["frb"], stat=round(o["sep_deg"], 3), unit="deg from the galaxy", vet=o["vet"], note="%s, radius %.2f deg, DM %s" % (o["galaxy"], o["radius_deg"], o["dm"])) + for o in out]) + print("recorded") + + +grbgalaxies_DOC = r"""Gamma-ray bursts from the nearest galaxies: the Swift GRB table (HEASARC swiftgrb, arcminute positions) and the Fermi GBM bursts with a statistical error radius below 1 deg against the large galaxies within 10 Mpc, a burst inside a galaxy's optical radius plus its own error, against the count the bursts' density within 10 deg of each galaxy gives; giant flares of magnetars in nearby galaxies are the published cases, GRB 200415A in NGC 253 and GRB 231115A in M82, and each match is read against them and against the burst's duration. + + python -I seti.py highenergy grbgalaxies [record] [--err-max-deg 1] [--annulus-deg 10]""" + +GRBGALAXIES_KNOWN = {"GRB200415A": "a magnetar giant flare in NGC 253 (Svinkin et al. 2021)", "GRB 200415A": "a magnetar giant flare in NGC 253 (Svinkin et al. 2021)", + "GRB231115650": "a magnetar giant flare in M82 (Mereghetti et al. 2024)", "GRB 231115A": "a magnetar giant flare in M82 (Mereghetti et al. 2024)"} + + +def grbgalaxies_main(record=False, err_max_deg=1.0, annulus_deg=10.0): + from scipy.stats import poisson + bursts = [] + for r in core.heasarc("SELECT name, ra, dec, bat_t90 FROM swiftgrb WHERE ra IS NOT NULL", 20000): + bursts.append(dict(name=str(r["name"]).strip(), cat="Swift", ra=num(r["ra"]), dec=num(r["dec"]), err=0.05, t90=num(r["bat_t90"]))) + for r in core.heasarc("SELECT name, ra, dec, error_radius, t90 FROM fermigbrst WHERE error_radius < %g" % err_max_deg, 20000): + bursts.append(dict(name=str(r["name"]).strip(), cat="GBM", ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.0, t90=num(r["t90"]))) + bursts = [b for b in bursts if b["ra"] is not None and b["dec"] is not None] + out, exp_total = [], 0.0 + for name, ra, dec, rad in FRBGALAXIES: + seps = np.array([core.sep_arcsec(ra, dec, b["ra"], b["dec"]) / 3600.0 for b in bursts]) + radii = np.array([rad / 60.0 + b["err"] for b in bursts]) + inside = [bursts[i] for i in np.nonzero(seps < radii)[0]] + r0 = rad / 60.0 + 0.3 + ring = int(np.sum((seps >= r0) & (seps < annulus_deg))) + exp = ring * (1 - math.cos(math.radians(r0))) / (math.cos(math.radians(r0)) - math.cos(math.radians(annulus_deg))) + exp_total += exp + for b in inside: + out.append(dict(galaxy=name, burst=b["name"], cat=b["cat"], sep_deg=float(core.sep_arcsec(ra, dec, b["ra"], b["dec"]) / 3600.0), radius_deg=rad / 60.0 + b["err"], t90=b["t90"], + vet="natural-source" if b["name"] in GRBGALAXIES_KNOWN else None, note=GRBGALAXIES_KNOWN.get(b["name"]))) + p = float(poisson.sf(len(out) - 1, exp_total)) if out else 1.0 + for o in out: + if o["vet"] is None and p > 0.01: + o["vet"] = "chance-rate" + left = [o for o in out if o["vet"] is None] + print("%d bursts against %d galaxies within 10 Mpc; bursts inside a galaxy's radius plus their error: %d against %.2f from the density within %g deg (Poisson p %.3g); unexplained %d" % ( + len(bursts), len(FRBGALAXIES), len(out), exp_total, annulus_deg, p, len(left))) + for o in sorted(out, key=lambda o: o["sep_deg"] / o["radius_deg"]): + print(" %s (%s) at %s: %.2f deg of %.2f, T90 %s s%s; %s" % (o["burst"], o["cat"], o["galaxy"], o["sep_deg"], o["radius_deg"], o["t90"], ", " + o["note"] if o["note"] else "", + o["vet"] or "unexplained")) + json.dump(dict(n=len(bursts), expected=exp_total, matches=out), open(core.results("grbs_nearest_galaxies.json"), "w"), indent=1) + if record: + core.record_run( + "grb_nearest_galaxies", "Gamma-ray bursts from the nearest galaxies", "Swift GRB table (HEASARC swiftgrb); Fermi GBM burst catalogue (fermigbrst); the large galaxies within 10 Mpc", + "Swift bursts and GBM bursts with errors below %g deg: %d" % (err_max_deg, len(bursts)), os.path.abspath(__file__), "grbgalaxies", len(bursts), "bursts", + dict(err_max_deg=err_max_deg, annulus_deg=annulus_deg), "the bursts' density within %g deg of each galaxy: %.2f expected inside" % (annulus_deg, exp_total), + "a burst inside a nearby galaxy's radius and its own error", "%d against %.2f (Poisson p %.3g); %d unexplained" % (len(out), exp_total, p, len(left)), + [dict(target="grb:%s" % o["burst"], stat=round(o["sep_deg"], 3), unit="deg from the galaxy", vet=o["vet"], + note="%s, %s, radius %.2f deg, T90 %s s%s" % (o["galaxy"], o["cat"], o["radius_deg"], o["t90"], ", " + o["note"] if o["note"] else "")) for o in out]) + print("recorded") + + +hardgamma_DOC = r"""Gamma rays harder than any shock: Fermi-LAT 4FGL-DR4 sources (HEASARC fermilpsc) above 10 sigma whose power-law photon index lies below 1.3 at its upper error, a spectrum rising in energy flux more steeply than any shock accelerator or jet produces, which a monoenergetic or line-like emitter would mimic; each read for its association, since a pulsar's exponentially cut-off spectrum fits a hard power law below the cutoff and a hard blazar's peak does the same, and for its curvature significance. + + python -I seti.py highenergy hardgamma [record] [--index-max 1.3] [--sig-min 10]""" + + +def hardgamma_main(record=False, index_max=1.3, sig_min=10.0): + rows = core.heasarc("SELECT name, ra, dec, pl_index, pl_index_error, lp_curve_significance, plec_curve_significance, source_type, assoc_name, detection_significance, extended_source_name " + "FROM fermilpsc WHERE detection_significance > %g AND pl_index IS NOT NULL" % sig_min, 20000) + n_all = len(rows) + hits = [] + for r in rows: + idx, e = num(r["pl_index"]), num(r["pl_index_error"]) or 0.0 + if idx is None or idx + e >= index_max: + continue + cls = str(r["source_type"] or "").strip().lower() + hits.append(dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), index=idx, err=e, curve=max(num(r["lp_curve_significance"]) or 0, num(r["plec_curve_significance"]) or 0), + cls=cls, assoc=" ".join(str(r["assoc_name"] or "").split()), sig=num(r["detection_significance"]), extended=str(r["extended_source_name"] or "").strip(), + vet=("natural-type" if cls in ("psr", "msp", "pwn", "snr", "spp", "hmb", "lmb", "bin", "glc", "sfr", "nov", "gal", "css", "bcu", "bll", "fsrq", "agn", "rdg", "sey", + "nlsy1", "ssrq", "sbg", "unk") and cls else "diffuse-emission" if str(r["extended_source_name"] or "").strip() else None))) + left = [h for h in hits if h["vet"] is None] + print("%d sources above %g sigma with a power-law index; index below %g at its upper error: %d (%d of associated classes, %d extended); unexplained %d" % ( + n_all, sig_min, index_max, len(hits), sum(h["vet"] == "natural-type" for h in hits), sum(h["vet"] == "diffuse-emission" for h in hits), len(left))) + for h in sorted(hits, key=lambda h: h["index"]): + print(" %s: index %.2f +- %.2f, curvature %.1f sigma, class %s, %s, %.1f sigma%s; %s" % ( + h["name"], h["index"], h["err"], h["curve"], h["cls"] or "-", h["assoc"] or "no association", h["sig"], ", extended " + h["extended"] if h["extended"] else "", h["vet"] or "unexplained")) + json.dump(dict(n=n_all, hits=hits), open(core.results("hard_gamma_sources.json"), "w"), indent=1) + if record: + core.record_run( + "fermi_hard_spectra", "Gamma rays harder than any shock", "Fermi-LAT 4FGL-DR4 (HEASARC fermilpsc)", "sources above %g sigma with a power-law index: %d" % (sig_min, n_all), + os.path.abspath(__file__), "hardgamma", n_all, "sources", dict(index_max=index_max, sig_min=sig_min), "the catalogue's associations and extended sources", + "a photon index below %g at its upper error" % index_max, "%d: %d of associated classes, %d extended; %d unexplained" % ( + len(hits), sum(h["vet"] == "natural-type" for h in hits), sum(h["vet"] == "diffuse-emission" for h in hits), len(left)), + [dict(target="fermi:%s" % h["name"], stat=round(h["index"], 2), unit="photon index", vet=h["vet"], + note="+- %.2f, curvature %.1f sigma, class %s, %s, %.1f sigma" % (h["err"], h["curve"], h["cls"] or "-", h["assoc"] or "no association", h["sig"])) for h in hits]) + print("recorded") + + +gammaflares_DOC = r"""Gamma-ray flares from the nearest stars: the second Fermi All-sky Variability Analysis catalogue of flaring sources (HEASARC fermi2favs, 518 sources with their error radii) against the Gaia Catalogue of Nearby Stars within 20 pc, a flare of GeV light from a star next door, which no quiet star makes and a beam or an engine would; against the same stars moved 2 deg in eight directions, and each match read for the flaring source's own counterpart, since nearly every flaring source is a blazar behind the star. + + python -I seti.py highenergy gammaflares [record] [--plx-min 50] [--extra-deg 0.1]""" + + +def gammaflares_main(record=False, plx_min=50.0, extra_deg=0.1): + from scipy.stats import poisson + flares = [dict(name=str(r["name"]).strip(), ra=num(r["ra"]), dec=num(r["dec"]), err=num(r["error_radius"]) or 0.5, n=num(r["total_flares"]), kind=str(r["source_type"] or "").strip(), + counterpart=" ".join(str(r["gamma_ctrprt_name"] or "").split()), other=" ".join(str(r["other_ctrprt_name"] or "").split())) + for r in core.heasarc("SELECT name, ra, dec, error_radius, total_flares, source_type, gamma_ctrprt_name, other_ctrprt_name FROM fermi2favs", 2000)] + flares = [f for f in flares if f["ra"] is not None and f["dec"] is not None] + stars = [dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), plx=num(r["parallax"]), g=num(r["phot_g_mean_mag"])) for r in + catalogues.gcns("source_id, ra, dec, parallax, phot_g_mean_mag", "gcns_prob > 0.9 AND parallax > %g" % plx_min, ranges=4)] + + def count(dra, ddec): + hits = [] + for s in stars: + ra, dec = s["ra"] + dra / max(math.cos(math.radians(s["dec"])), 0.01), s["dec"] + ddec + if abs(dec) > 90: + continue + for f in flares: + if core.sep_arcsec(ra, dec, f["ra"], f["dec"]) / 3600.0 <= f["err"] + extra_deg: + hits.append((s, f)) + return hits + real = count(0.0, 0.0) + null = [len(count(2 * math.cos(k * math.pi / 4), 2 * math.sin(k * math.pi / 4))) for k in range(8)] + exp = float(np.mean(null)) + p = float(poisson.sf(len(real) - 1, exp)) if real else 1.0 + out = [dict(star=s["id"], g=s["g"], d_pc=1000 / s["plx"] if s["plx"] else None, flare=f["name"], sep_deg=core.sep_arcsec(s["ra"], s["dec"], f["ra"], f["dec"]) / 3600.0, err_deg=f["err"], + flares=f["n"], kind=f["kind"], counterpart=f["counterpart"] or f["other"], + vet="natural-type" if (f["counterpart"] or f["other"]) else ("chance-rate" if p > 0.01 else None)) for s, f in real] + left = [o for o in out if o["vet"] is None] + print("%d flaring sources and %d stars within %.0f pc; stars inside a flaring source's error circle: %d against %.1f with the stars moved 2 deg (%s; Poisson p %.3g); %d sources with a " + "counterpart of their own; unexplained %d" % (len(flares), len(stars), 1000 / plx_min, len(real), exp, null, p, sum(o["vet"] == "natural-type" for o in out), len(left))) + for o in sorted(out, key=lambda o: o["sep_deg"] / o["err_deg"]): + print(" Gaia DR3 %s (G %.1f, %.1f pc) in %s: %.2f deg of %.2f, %s flares, %s, counterpart %s; %s" % ( + o["star"], o["g"] or 0, o["d_pc"] or 0, o["flare"], o["sep_deg"], o["err_deg"], o["flares"], o["kind"] or "-", o["counterpart"] or "none", o["vet"] or "unexplained")) + json.dump(dict(n_flares=len(flares), n_stars=len(stars), null=null, matches=out), open(core.results("gamma_flares_nearby_stars.json"), "w"), indent=1) + if record: + core.record_run( + "fava_nearest_stars", "Gamma-ray flares from the nearest stars", "Fermi All-sky Variability Analysis second catalogue (HEASARC fermi2favs); Gaia Catalogue of Nearby Stars", + "flaring sources: %d; stars within %.0f pc: %d" % (len(flares), 1000 / plx_min, len(stars)), os.path.abspath(__file__), "gammaflares", len(stars), "stars", + dict(plx_min=plx_min, extra_deg=extra_deg), "the stars moved 2 deg in eight directions: %s" % null, "a star within %.0f pc inside a flaring source's error circle" % (1000 / plx_min), + "%d against %.1f (Poisson p %.3g); %d with the source's own counterpart; %d unexplained" % (len(real), exp, p, sum(o["vet"] == "natural-type" for o in out), len(left)), + [dict(target="gaia_dr3:%s" % o["star"], stat=round(o["sep_deg"], 3), unit="deg from the flaring source", vet=o["vet"], + note="%s, error %.2f deg, %s flares, %s, counterpart %s" % (o["flare"], o["err_deg"], o["flares"], o["kind"] or "-", o["counterpart"] or "none")) for o in out]) + print("recorded") + + +barlagrange_DOC = r"""The Lagrange points of the Galactic bar: the bar's L4 and L5, on its minor axis at the corotation radius (6.5 kpc, the bar's major axis 27 deg from the Sun's line to the centre, with the Sun at 8.178 kpc), the only large-scale stable points in the Galaxy, where a builder wanting a fixed place would settle; the unassociated Fermi-LAT 4FGL-DR4 sources within 2 deg of each point's line of sight, leaving out the confused ('c') sources and those flagged as soft Galactic unassociated (flag 14), which mark defects of the diffuse model, against the same count toward 2 deg windows along the inner plane (|l| up to 60 deg) and toward other points of the corotation ring; a point on a spiral arm's tangent, where the line of sight runs along a whole arm, is read as that. + + python -I seti.py highenergy barlagrange [record] [--radius-deg 2] [--r-cr-kpc 6.5] [--bar-angle-deg 27]""" + +ARM_TANGENTS = {"Scutum": 31.0, "Sagittarius": 50.0, "Crux-Centaurus": 310.0, "Norma": 328.0, "Perseus start": 336.0, "3-kpc near": 338.0} + + +def barlagrange_main(record=False, radius_deg=2.0, r_cr_kpc=6.5, bar_angle_deg=27.0): + from scipy.stats import poisson + r0 = 8.178 + phi = math.radians(bar_angle_deg) + rows = core.heasarc("SELECT name, lii, bii, source_type, analysis_flags FROM fermilpsc WHERE ABS(bii) < %g" % (radius_deg + 1)) + unas = [(float(r["lii"]), float(r["bii"])) for r in rows if not (r.get("source_type") or "").strip() and not int(r["analysis_flags"] or 0) & 8192 and not r["name"].strip().endswith("c")] + + def dl(a, b): + return abs((a - b + 180) % 360 - 180) + + def los(theta): + # the point at Galactocentric angle theta from the bar's near end, seen from the Sun; x toward the centre, y toward l = 90 + x = r0 + r_cr_kpc * (-math.cos(phi) * math.cos(theta) + math.sin(phi) * math.sin(theta)) + y = r_cr_kpc * (math.sin(phi) * math.cos(theta) + math.cos(phi) * math.sin(theta)) + return math.degrees(math.atan2(y, x)) % 360, math.hypot(x, y) + + def count(l0): + return sum(1 for l, b in unas if core.sep_arcsec(l0, 0.0, l, b) < radius_deg * 3600) + pts = {"L4": los(math.pi / 2), "L5": los(-math.pi / 2)} + ring = [] + for k in range(72): + th = 2 * math.pi * k / 72 + if min(abs(math.sin(th)), abs(math.cos(th))) < math.sin(math.radians(15)): + continue + l, d = los(th) + if min(dl(l, pts["L4"][0]), dl(l, pts["L5"][0])) >= 2 * radius_deg: + ring.append(count(l)) + plane = [count(l) for l in np.arange(0, 360, 2 * radius_deg) if dl(l, 0) <= 60 and min(dl(l, pts["L4"][0]), dl(l, pts["L5"][0])) >= 2 * radius_deg] + ring, plane = np.array(ring), np.array(plane) + out = {} + for k, (l, d) in pts.items(): + n = count(l) + tangent = min(ARM_TANGENTS, key=lambda t: dl(l, ARM_TANGENTS[t])) + p = float(poisson.sf(n - 1, plane.mean())) if n else 1.0 + out[k] = dict(l=round(l, 2), d_kpc=round(d, 2), n=n, plane_mean=float(plane.mean()), plane_max=int(plane.max()), p=p, ring_share=float((ring >= n).mean()), + tangent=tangent if dl(l, ARM_TANGENTS[tangent]) < 2 * radius_deg + 1 else None) + out[k]["vet"] = "arm-tangent" if p < 0.01 and out[k]["tangent"] else None + print("%d clean unassociated 4FGL sources within %g deg of the plane; inner-plane windows: %d, mean %.2f, max %d; ring windows: %d, median %.1f" % ( + len(unas), radius_deg + 1, len(plane), plane.mean(), plane.max(), len(ring), float(np.median(ring)))) + for k, v in out.items(): + print(" %s at l %.2f deg, %.1f kpc: %d (Poisson p %.2g against the plane's mean, ring share at or above %.2f); nearest arm tangent %s; %s" % ( + k, v["l"], v["d_kpc"], v["n"], v["p"], v["ring_share"], v["tangent"], v["vet"] or "unexplained" if v["p"] < 0.01 else "no excess")) + if record: + core.record_run( + "fermi_bar_lagrange_points", "The Lagrange points of the Galactic bar", "Fermi-LAT 4FGL-DR4 (HEASARC fermilpsc)", + "unassociated sources within %g deg of the plane, without confused or flag-14 sources: %d" % (radius_deg + 1, len(unas)), os.path.abspath(__file__), "barlagrange", 2, "points", + dict(radius_deg=radius_deg, r_cr_kpc=r_cr_kpc, bar_angle_deg=bar_angle_deg), + "%d windows along the inner plane, mean %.2f; %d other lines of sight to the corotation ring" % (len(plane), plane.mean(), len(ring)), + "unassociated gamma-ray sources crowding the bar's L4 or L5", + "; ".join("%s at l %.1f deg %d against the plane's mean %.2f (p %.2g)%s" % (k, v["l"], v["n"], v["plane_mean"], v["p"], ", on the %s arm's tangent" % v["tangent"] if v["vet"] else "") + for k, v in out.items()), + [dict(target="galactic:l%.1f_b0" % v["l"], stat=v["n"], unit="clean unassociated sources within %g deg" % radius_deg, p=v["p"], vet=v["vet"], + note="the bar's %s at %.1f kpc; the plane's mean %.2f, max %d" % (k, v["d_kpc"], v["plane_mean"], v["plane_max"])) for k, v in out.items() if v["p"] < 0.01]) + print("recorded") + + +tadoublets_DOC = r"""Cosmic-ray doublets, northern sky: the 72 Telescope Array events above 57 EeV of its first five years (Abbasi et al. 2014, VizieR J/ApJ/790/L21), pairs within 2 deg arriving within 10 days and within a day, and triplets within 30 days, against 5000 shuffles of the arrival times among the events; a source firing particles in bursts would repeat on the sky within days, which the northern hotspot's steady excess does not. + + python -I seti.py highenergy tadoublets [record] [--sep-deg 2] [--shuffles 5000]""" + + +def tadoublets_main(record=False, sep_deg=2.0, shuffles=5000): + from datetime import datetime + t = core.vizier("J/ApJ/790/L21")[0] + ev = [(datetime.fromisoformat(str(r["Arrival"]).strip()).timestamp() / 86400.0, float(r["RAJ2000"]), float(r["DEJ2000"]), float(r["E"])) for r in t] + n = len(ev) + pairs = [(i, j) for i in range(n) for j in range(i + 1, n) if core.sep_arcsec(ev[i][1], ev[i][2], ev[j][1], ev[j][2]) < sep_deg * 3600] + close = {i: set() for i in range(n)} + for i, j in pairs: + close[i].add(j) + close[j].add(i) + tri = [(i, j, k) for i, j in pairs for k in close[i] & close[j] if k > j] + + def stats(tt): + d10 = sum(1 for i, j in pairs if abs(tt[i] - tt[j]) < 10) + d1 = sum(1 for i, j in pairs if abs(tt[i] - tt[j]) < 1) + t30 = sum(1 for i, j, k in tri if max(tt[i], tt[j], tt[k]) - min(tt[i], tt[j], tt[k]) < 30) + return d10, d1, t30 + tt = np.array([e[0] for e in ev]) + real = stats(tt) + rng = np.random.default_rng(11) + null = np.array([stats(rng.permutation(tt)) for _ in range(shuffles)]) + p = [float((null[:, k] >= real[k]).mean()) for k in range(3)] + found = [(str(t[i]["Arrival"]).strip(), str(t[j]["Arrival"]).strip(), round(abs(tt[i] - tt[j]), 2)) for i, j in pairs if abs(tt[i] - tt[j]) < 10] + print("%d events, %d pairs within %g deg, %d triplets; pairs within 10 days %d against %.2f (p %.3g), within a day %d against %.2f (p %.3g); triplets within 30 days %d against %.2f (p %.3g); %s" % ( + n, len(pairs), sep_deg, len(tri), real[0], null[:, 0].mean(), p[0], real[1], null[:, 1].mean(), p[1], real[2], null[:, 2].mean(), p[2], found)) + if record: + core.record_run( + "ta_doublets", "Cosmic-ray doublets, northern sky", "Telescope Array five-year events above 57 EeV (VizieR J/ApJ/790/L21)", "events: %d; pairs within %g deg: %d" % (n, sep_deg, len(pairs)), + os.path.abspath(__file__), "tadoublets", n, "events", dict(sep_deg=sep_deg, shuffles=shuffles), + "%d shuffles of the arrival times: %.2f pairs within 10 days, %.2f within a day, %.2f triplets within 30 days" % (shuffles, null[:, 0].mean(), null[:, 1].mean(), null[:, 2].mean()), + "cosmic rays repeating from one direction within days", "pairs within 10 days %d against %.2f (p %.3g), within a day %d against %.2f; triplets within 30 days %d against %.2f" % ( + real[0], null[:, 0].mean(), p[0], real[1], null[:, 1].mean(), real[2], null[:, 2].mean()), []) + print("recorded") + + +unasclass_DOC = r"""What a pile of unassociated gamma-ray sources is: the 4FGL-DR4 sources associated with pulsars, with blazars and with supernova remnants, nebulae and star-forming regions train a random forest on spectral shape and variability (power-law index, log-parabola curvature and its significance, peak energy and variability index), and the unassociated sources within a window of the plane, neither confused nor flagged as soft Galactic unassociated, are classed by it against the same classing of the clean unassociated sources elsewhere within 5 deg of the plane; their X-ray counterparts in eRASS1 within 1 arcmin of the 95 per cent ellipse's centre are counted the same way; a pile of young pulsars along an arm's tangent looks like pulsars, a defect of the diffuse model like none of the trained classes. + + python -I seti.py highenergy unasclass [record] [--l-deg 312.07] [--b-deg 0] [--radius-deg 2]""" + + +def unasclass_main(record=False, l_deg=312.07, b_deg=0.0, radius_deg=2.0): + from sklearn.ensemble import RandomForestClassifier + rows = core.heasarc("SELECT name, ra, dec, lii, bii, source_type, analysis_flags, pl_index, lp_beta, lp_curve_significance, lp_epeak, variability_index, detection_significance " + "FROM fermilpsc") + groups = {"pulsar": ("PSR", "MSP"), "blazar": ("BLL", "FSRQ", "BCU", "RDG", "AGN"), "remnant or nebula": ("SNR", "PWN", "SPP", "SFR", "HMB", "BIN")} + + def feats(r): + v = [num(r.get(k)) for k in ("pl_index", "lp_beta", "lp_curve_significance", "lp_epeak", "variability_index")] + if None in v or v[3] <= 0 or v[4] <= 0: + return None + return [v[0], v[1], min(v[2], 30.0), math.log10(v[3]), math.log10(v[4])] + X, y = [], [] + for r in rows: + t = (r.get("source_type") or "").strip().upper() + for g, codes in groups.items(): + if t in codes: + f = feats(r) + if f: + X.append(f) + y.append(g) + clf = RandomForestClassifier(n_estimators=400, min_samples_leaf=3, random_state=41, class_weight="balanced").fit(np.array(X), np.array(y)) + clean = [r for r in rows if not (r.get("source_type") or "").strip() and not int(r["analysis_flags"] or 0) & 8192 and not r["name"].strip().endswith("c") and abs(float(r["bii"])) < 5] + inwin = [r for r in clean if core.sep_arcsec(l_deg, b_deg, float(r["lii"]), float(r["bii"])) < radius_deg * 3600] + rest = [r for r in clean if r not in inwin] + + def classify(rs): + fs = [(r, feats(r)) for r in rs] + fs = [(r, f) for r, f in fs if f] + if not fs: + return [], {} + pr = clf.predict_proba(np.array([f for _, f in fs])) + lab = [(r, clf.classes_[int(np.argmax(p))], float(np.max(p))) for (r, _), p in zip(fs, pr)] + share = {c: sum(1 for _, l, _ in lab if l == c) / len(lab) for c in clf.classes_} + return lab, share + lw, sw = classify(inwin) + lr, sr = classify(rest) + + def xray(rs): + up = [dict(source_id=k, ra=float(r["ra"]), dec=float(r["dec"])) for k, r in enumerate(rs) if float(r["lii"]) > 180] + if not up: + return 0, 0 + hit = {int(m["source_id"]) for m in core.xmatch(up, "J/A+A/682/A34/erass1-m", 60.0)} + return len(hit), len(up) + xw, xr = xray(inwin), xray(rest) + print("classifier trained on %d associated sources; the %d clean unassociated sources within %g deg of l %.2f, b %.2f: %s; the %d elsewhere within 5 deg of the plane: %s; eRASS1 within " + "1 arcmin: %d of %d in the window, %d of %d elsewhere in eRASS1's half of the sky" % ( + len(y), len(lw), radius_deg, l_deg, b_deg, {k: round(v, 2) for k, v in sw.items()}, len(lr), {k: round(v, 2) for k, v in sr.items()}, xw[0], xw[1], xr[0], xr[1])) + for r, lab, p in lw: + print(" %s (l %.2f, b %+.2f): index %s, curvature %s at %s sigma, peak %s MeV, variability %s; %s (%.2f)" % ( + r["name"].strip(), float(r["lii"]), float(r["bii"]), r["pl_index"], r["lp_beta"], r["lp_curve_significance"], r["lp_epeak"], r["variability_index"], lab, p)) + if record: + core.record_run( + "fermi_unassociated_pile_classes", "What a pile of unassociated gamma-ray sources is", "Fermi-LAT 4FGL-DR4 (HEASARC fermilpsc); eRASS1 by CDS XMatch", + "clean unassociated sources within %g deg of l %.2f, b %.2f: %d" % (radius_deg, l_deg, b_deg, len(lw)), os.path.abspath(__file__), "unasclass", len(lw), "sources", + dict(l_deg=l_deg, b_deg=b_deg, radius_deg=radius_deg), "a random forest trained on %d associated pulsars, blazars and remnants or nebulae; the %d clean unassociated sources elsewhere " + "within 5 deg of the plane: %s" % (len(y), len(lr), {k: round(v, 2) for k, v in sr.items()}), "a pile unlike the plane's other unassociated sources", + "classed %s against %s elsewhere; eRASS1 counterparts %d of %d against %d of %d" % ({k: round(v, 2) for k, v in sw.items()}, {k: round(v, 2) for k, v in sr.items()}, + xw[0], xw[1], xr[0], xr[1]), + [dict(target="fermi:%s" % r["name"].strip(), stat=round(p, 2), unit="class probability", vet=None, note="classed %s" % lab) for r, lab, p in lw]) + print("recorded") + + +hgpsoverlap_DOC = r"""Gamma-ray points inside TeV glows: the clean unassociated 4FGL-DR4 sources within a window of the plane against the sources of the H.E.S.S. Galactic Plane Survey (VizieR J/A+A/612/A1), a point counted inside a TeV source when it lies within twice the source's Gaussian width (or 0.1 deg for a point-like one) of its centre, against the same share among the clean unassociated sources elsewhere in the survey's footprint (longitude 250-65 deg through zero, latitude within 3 deg); points that the catalogue's model splits out of an extended glow sit inside it more often than the rest. + + python -I seti.py highenergy hgpsoverlap [record] [--l-deg 312.07] [--b-deg 0] [--radius-deg 2] [--width-factor 2]""" + + +def hgpsoverlap_main(record=False, l_deg=312.07, b_deg=0.0, radius_deg=2.0, width_factor=2.0): + from scipy.stats import fisher_exact + tabs = core.vizier("J/A+A/612/A1") + hg = None + for t in tabs: + cols = set(t.colnames) + if {"GLON", "GLAT"} <= cols and any(c.lower().startswith("size") or c.startswith("sigma") or c.startswith("Size") for c in cols): + hg = t + break + if hg is None: + hg = max(tabs, key=len) + scol = next((c for c in hg.colnames if c.lower().startswith("size")), None) + ncol = next((c for c in hg.colnames if c.upper().startswith("HGPS") or c.lower() in ("name", "source_name", "source")), hg.colnames[0]) + src = [] + for r in hg: + size = num(r[scol]) if scol else None + src.append((float(r["GLON"]), float(r["GLAT"]), max(width_factor * (size or 0.0), 0.1), str(r[ncol]).strip())) + rows = core.heasarc("SELECT name, lii, bii, source_type, analysis_flags FROM fermilpsc WHERE ABS(bii) < 3") + clean = [r for r in rows if not (r.get("source_type") or "").strip() and not int(r["analysis_flags"] or 0) & 8192 and not r["name"].strip().endswith("c")] + + def infoot(l): + return l >= 250 or l <= 65 + + def inside(l, b): + return [s[3] for s in src if core.sep_arcsec(l, b, s[0], s[1]) < s[2] * 3600] + win = [r for r in clean if core.sep_arcsec(l_deg, b_deg, float(r["lii"]), float(r["bii"])) < radius_deg * 3600] + rest = [r for r in clean if r not in win and infoot(float(r["lii"]))] + wi = [(r["name"].strip(), inside(float(r["lii"]), float(r["bii"]))) for r in win] + ri = [inside(float(r["lii"]), float(r["bii"])) for r in rest] + nw, nr = sum(1 for _, x in wi if x), sum(1 for x in ri if x) + p = float(fisher_exact([[nw, len(wi) - nw], [nr, len(ri) - nr]], alternative="greater")[1]) + print("%d H.E.S.S. sources (size column %s); window's clean unassociated sources inside a TeV source: %d of %d; elsewhere in the footprint: %d of %d (Fisher p %.3g)" % ( + len(src), scol, nw, len(wi), nr, len(ri), p)) + for n, x in wi: + print(" %s: %s" % (n, x or "outside every TeV source")) + if record: + core.record_run( + "fermi_unassociated_in_tev_glows", "Gamma-ray points inside TeV glows", "Fermi-LAT 4FGL-DR4 (HEASARC fermilpsc); H.E.S.S. Galactic Plane Survey (VizieR J/A+A/612/A1)", + "clean unassociated sources within %g deg of l %.2f, b %.2f: %d" % (radius_deg, l_deg, b_deg, len(wi)), os.path.abspath(__file__), "hgpsoverlap", len(wi), "sources", + dict(l_deg=l_deg, b_deg=b_deg, radius_deg=radius_deg, width_factor=width_factor), "the clean unassociated sources elsewhere in the survey's footprint: %d of %d inside a TeV source" % (nr, len(ri)), + "a pile of gamma-ray points inside a TeV glow beyond the plane's rate", "%d of %d inside against %d of %d elsewhere (Fisher p %.3g)" % (nw, len(wi), nr, len(ri), p), + [dict(target="fermi:%s" % n, stat=len(x), unit="TeV sources containing it", vet=None, note=", ".join(x) or "outside every TeV source") for n, x in wi]) + print("recorded") + + +gasunder_DOC = r"""Gas under a pile of gamma-ray points: the clean unassociated 4FGL-DR4 sources within a window of the plane, the dust column at each from the Schlegel, Finkbeiner and Davis map (the IRSA dust service's value at the position), against control points at the same latitudes 3-15 deg along the plane on either side of the window; gamma rays from cosmic rays striking gas that the catalogue's model misses appear as points on the gas, so points sitting on more gas than their latitude's share point to unmodelled diffuse emission. + + python -I seti.py highenergy gasunder [record] [--l-deg 312.07] [--b-deg 0] [--radius-deg 2]""" + + +def sfd_dust(l, b): + """E(B-V) of the Schlegel, Finkbeiner and Davis map at a Galactic position, from the IRSA dust service.""" + import re + t = core.get("https://irsa.ipac.caltech.edu/cgi-bin/DUST/nph-dust?locstr=%.4f+%.4f+gal®Size=2.0" % (l, b), timeout=60).decode("utf-8", "replace") + m = re.search(r"\s*([0-9.]+)", t) + return float(m.group(1)) if m else None + + +def gasunder_main(record=False, l_deg=312.07, b_deg=0.0, radius_deg=2.0): + from scipy.stats import mannwhitneyu + rows = core.heasarc("SELECT name, lii, bii, source_type, analysis_flags FROM fermilpsc WHERE ABS(bii) < %g" % (abs(b_deg) + radius_deg + 1)) + clean = [r for r in rows if not (r.get("source_type") or "").strip() and not int(r["analysis_flags"] or 0) & 8192 and not r["name"].strip().endswith("c")] + win = [r for r in clean if core.sep_arcsec(l_deg, b_deg, float(r["lii"]), float(r["bii"])) < radius_deg * 3600] + pts = [] + for r in win: + l, b = float(r["lii"]), float(r["bii"]) + d = sfd_dust(l, b) + ctrl = [sfd_dust((l + s) % 360, b) for s in list(range(-15, -2)) + list(range(3, 16))] + ctrl = [c for c in ctrl if c is not None] + pts.append(dict(name=r["name"].strip(), l=l, b=b, dust=d, ctrl_median=float(np.median(ctrl)), rank=float(np.mean(np.array(ctrl) < d)) if d is not None else None)) + ranks = [p["rank"] for p in pts if p["rank"] is not None] + p_val = float(mannwhitneyu(ranks, np.linspace(0.02, 0.98, 50)).pvalue) if len(ranks) > 2 else None + print("%d clean unassociated sources within %g deg of l %.2f, b %.2f; dust at each against 26 points at its latitude along the plane: median rank %.2f (%s)" % ( + len(pts), radius_deg, l_deg, b_deg, float(np.median(ranks)) if ranks else float("nan"), "p %.3g against uniform ranks" % p_val if p_val is not None else "too few")) + for p in pts: + print(" %s (l %.2f, b %+.2f): E(B-V) %s against a median %.2f at its latitude, rank %s" % (p["name"], p["l"], p["b"], p["dust"], p["ctrl_median"], p["rank"])) + if record: + core.record_run( + "fermi_pile_dust", "Gas under a pile of gamma-ray points", "Fermi-LAT 4FGL-DR4 (HEASARC fermilpsc); the Schlegel, Finkbeiner and Davis dust map (IRSA dust service)", + "clean unassociated sources within %g deg of l %.2f, b %.2f: %d" % (radius_deg, l_deg, b_deg, len(pts)), os.path.abspath(__file__), "gasunder", len(pts), "sources", + dict(l_deg=l_deg, b_deg=b_deg, radius_deg=radius_deg), "26 points at each source's latitude 3-15 deg along the plane", "gamma-ray points sitting on more gas than their latitude's share", + "median rank of the sources' dust among their controls %.2f%s" % (float(np.median(ranks)) if ranks else float("nan"), ", p %.3g against uniform ranks" % p_val if p_val is not None else ""), + [dict(target="fermi:%s" % p["name"], stat=p["rank"], unit="rank of the dust column among 26 points at the same latitude", vet=None, + note="E(B-V) %s against a median %.2f" % (p["dust"], p["ctrl_median"])) for p in pts]) + print("recorded") + + +APPROACHES = { + "gasunder": (lambda: core.run_cli(gasunder_main), gasunder_DOC), + "hgpsoverlap": (lambda: core.run_cli(hgpsoverlap_main), hgpsoverlap_DOC), + "unasclass": (lambda: core.run_cli(unasclass_main), unasclass_DOC), + "tadoublets": (lambda: core.run_cli(tadoublets_main), tadoublets_DOC), + "barlagrange": (lambda: core.run_cli(barlagrange_main), barlagrange_DOC), + "gammaflares": (lambda: core.run_cli(gammaflares_main), gammaflares_DOC), + "hardgamma": (lambda: core.run_cli(hardgamma_main), hardgamma_DOC), + "grbgalaxies": (lambda: core.run_cli(grbgalaxies_main), grbgalaxies_DOC), + "frbgalaxies": (lambda: core.run_cli(frbgalaxies_main), frbgalaxies_DOC), + "fermimoved": (lambda: core.run_cli(fermimoved_main), fermimoved_DOC), + "grbtogether": (lambda: core.run_cli(grbtogether_main), grbtogether_DOC), + "copygrbs": (lambda: core.run_cli(copygrbs_main), copygrbs_DOC), + "nudoublets": (lambda: core.run_cli(nudoublets_main), nudoublets_DOC), + "grbetz": (lambda: core.run_cli(grbetz_main), grbetz_DOC), + "nuetz": (lambda: core.run_cli(nuetz_main), nuetz_DOC), + "nugrb": (lambda: core.run_cli(nugrb_main), nugrb_DOC), + "nocorona": (lambda: core.run_cli(nocorona_main), nocorona_DOC), + "grbfrb": (lambda: core.run_cli(grbfrb_main), grbfrb_DOC), + "gammapeak": (lambda: core.run_cli(gammapeak_main), gammapeak_DOC), + "coldbdw3": (lambda: core.run_cli(coldbdw3_main), coldbdw3_DOC), + "grbrepeat": (lambda: core.run_cli(grbrepeat_main), grbrepeat_DOC), + "bursts511": (lambda: core.run_cli(bursts511_main), bursts511_DOC), + "tevnear": (lambda: core.run_cli(tevnear_main), tevnear_DOC), + "gwequal": (lambda: core.run_cli(gwequal_main), gwequal_DOC), + "deadstars": (lambda: core.run_cli(deadstars_main), deadstars_DOC), + "etzxray": (lambda: core.run_cli(etzxray_main), etzxray_DOC), + "nearbat": (lambda: core.run_cli(nearbat_main), nearbat_DOC), + "coldwdgamma": (lambda: core.run_cli(coldwdgamma_main), coldwdgamma_DOC), + "coldwduv": (lambda: core.run_cli(coldwduv_main), coldwduv_DOC), + "coldbduv": (lambda: core.run_cli(coldbduv_main), coldbduv_DOC), + "coldbdx": (lambda: core.run_cli(coldbdx_main), coldbdx_DOC), + "wdmass": (lambda: core.run_cli(wdmass_main), wdmass_DOC), + "grbstars": (lambda: core.run_cli(grbstars_main), grbstars_DOC), + "coldwdx": (lambda: core.run_cli(coldwdx_main), coldwdx_DOC), + "dynamo": (dynamo_cli, dynamo_DOC), + "doublets": (doublets_cli, doublets_DOC), + "sources": (sources_cli, sources_DOC), + "chandra": (chandra_cli, chandra_DOC), + "xmm": (xmm_cli, xmm_DOC), + "lineonly": (lineonly_cli, lineonly_DOC), + "planets": (planets_cli, planets_DOC), + "icecube": (icecube_cli, icecube_DOC), + "mm": (mm_cli, mm_DOC), +} + + diff --git a/setitools/infrared.py b/setitools/infrared.py new file mode 100644 index 0000000000000000000000000000000000000000..d38780a941b5f60eb97681eeabec6394bccee6e3 --- /dev/null +++ b/setitools/infrared.py @@ -0,0 +1,4562 @@ +"""Waste heat: infrared excess, enclosures and dark companions.""" +import argparse +import csv +import io +import json +import math +import os +import random +import sys +import threading +import time +import urllib.parse +import urllib.request +from collections import Counter +from concurrent.futures import ThreadPoolExecutor + +import numpy as np + +from setitools import catalogues, core, science +from setitools.core import ms_luminosity, num, quiet_warnings, sep_arcsec + + +# -------------------------------------------------------------------------------------------------------------- + +excess_DOC = r"""Mid-infrared excess (Ks-W3, Ks-W4 above 0.25 mag at 5 sigma) and NEOWISE trends of Breakthrough Listen 2016 L-band targets. + + python -I seti.py infrared excess [--types FGK] [--neowise]""" + +excess_SIMBAD = "https://simbad.cds.unistra.fr/simbad/sim-tap/sync" +excess_IRSA = "https://irsa.ipac.caltech.edu/TAP/sync" + + +def excess_tap(url, q, fmt="json", timeout=180): + data = urllib.parse.urlencode(dict(request="doQuery", lang="ADQL", format=fmt, query=q)).encode() + return urllib.request.urlopen(url, data=data, timeout=timeout).read() + + +def excess_simbad_rows(hips): + q = ("SELECT ident.id, basic.ra, basic.dec, basic.pmra, basic.pmdec, basic.otype, basic.nbref " + "FROM basic JOIN ident ON ident.oidref=basic.oid WHERE ident.id IN (%s)" + % ",".join("'%s'" % h for h in hips)) + return {r[0]: r[1:] for r in json.loads(excess_tap(excess_SIMBAD, q))["data"]} + + +def excess_allwise(ra, dec): + """Nearest AllWISE source within 6 arcsec, or None.""" + return core.allwise_nearest(ra, dec, 6.0) + + +def excess_neowise_slopes(ra, dec): + q = ("SELECT mjd, w1mpro, w1sigmpro, w2mpro, w2sigmpro, qual_frame FROM neowiser_p1bs_psd WHERE " + "CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f))=1" % (ra, dec, 3 / 3600.0)) + from astropy.io.votable import parse_single_table + t = parse_single_table(io.BytesIO(excess_tap(excess_IRSA, q, fmt="votable", timeout=600))).to_table(use_names_over_ids=True) + t = t[np.asarray(t["qual_frame"], float) > 0] + out = {} + for b in ("w1", "w2"): + m = np.asarray(t[b + "mpro"], float) + j = np.asarray(t["mjd"], float) + ok = np.isfinite(m) + if ok.sum() < 20: + continue + yr = (j[ok] - j[ok].min()) / 365.25 + mm = m[ok] + # epoch medians; NEOWISE visits every six months + ep = np.round(yr * 2).astype(int) + ey = np.array([yr[ep == e].mean() for e in np.unique(ep)]) + em = np.array([np.median(mm[ep == e]) for e in np.unique(ep)]) + if len(ey) < 6: + continue + p, cov = np.polyfit(ey, em, 1, cov=True) + out[b] = (p[0] * 1000.0, np.sqrt(cov[0, 0]) * 1000.0, len(ey), float(np.ptp(em)) * 1000.0) + return out + + +def excess_main(): + p = argparse.ArgumentParser() + p.add_argument("--types", default="FGK") + p.add_argument("--neowise", action="store_true") + a = p.parse_args() + stars = [s for s in json.load(open(core.results("session_stars.json"))) + if (s["sp"] or "?")[:1].upper() in a.types] + sim = excess_simbad_rows([s["hip"] for s in stars]) + print("%d stars of types %s" % (len(stars), a.types), flush=True) + for s in stars: + r = sim.get(s["hip"]) + if not r: + continue + ra, dec, pmra, pmdec, otype, nbref = r + dt = 2010.5 - 2000.0 + ra10 = ra + (pmra or 0) * dt / 3.6e6 / np.cos(np.radians(dec)) + dec10 = dec + (pmdec or 0) * dt / 3.6e6 + try: + w = excess_allwise(ra10, dec10) + except Exception as e: + print("%s: AllWISE query failed (%s)" % (s["hip"], str(e)[:60]), flush=True) + continue + if w is None: + print("%s: no AllWISE source" % s["hip"], flush=True) + continue + k = w["k_m_2mass"] if w["k_m_2mass"] is not None else np.nan + flags = [] + for band, i in (("w3", 2), ("w4", 3)): + m, sg, snr = float(w[band + "mpro"]), float(w[band + "sigmpro"] or np.nan), float(w[band + "snr"]) + q = str(w["ph_qual"])[i] + cc = str(w["cc_flags"])[i] + ex = k - m + sig = np.hypot(sg, 0.03) + if q == "A" and cc == "0" and snr >= 5 and ex > 0.25 and ex / sig >= 5: + flags.append("%s excess Ks-%s=%.2f (%.1f sigma)" % (band.upper(), band.upper(), ex, ex / sig)) + line = "%s %s %.1f pc %s refs %s Ks %.2f W3 %.2f W4 %.2f qual %s cc %s" % ( + s["hip"], s["sp"], s["pc"], otype, nbref, k, float(w["w3mpro"]), float(w["w4mpro"]), + w["ph_qual"], w["cc_flags"]) + if flags: + print("EXCESS " + line + " " + "; ".join(flags), flush=True) + else: + print(" " + line, flush=True) + if a.neowise: + try: + sl = excess_neowise_slopes(ra + (pmra or 0) * 19.0 / 3.6e6 / np.cos(np.radians(dec)), + dec + (pmdec or 0) * 19.0 / 3.6e6) + except Exception as e: + print(" NEOWISE query failed (%s)" % str(e)[:60], flush=True) + continue + for b, (sl_, se, n, rng) in sl.items(): + tag = "TREND" if abs(sl_) > 10 and abs(sl_) > 4 * se else " " + print(" %s %s slope %+.1f +- %.1f mmag/yr over %d epochs, range %.0f mmag" + % (tag, b.upper(), sl_, se, n, rng), flush=True) + + +def excess_cli(): + excess_main() + + +# -------------------------------------------------------------------------------------------------------------- + +hz_DOC = r"""Stacked W1-W3 and W1-W4 excess of habitable-zone hosts within 100 pc over Gaia-matched controls, bounding the mean 300 K covering fraction. + + python -I seti.py infrared hz fetch + python -I seti.py infrared hz analyse + python -I seti.py infrared hz record""" + +hz_ROOT = os.environ.get("HZ_ROOT", core.data("hz_stack")) +hz_HERE = core.RESULTS +hz_HZ = (0.32, 1.78) +hz_D_MAX = 100.0 +hz_N_CTRL = 25 +hz_N_COMPARE = 250 +hz_WISE_EPOCH = 2010.5 + + +def hz_hosts(): + rows = core.tap("exoplanets", "SELECT pl_name, hostname, ra, dec, sy_dist, pl_insol, st_teff FROM pscomppars " + "WHERE sy_dist < %g" % hz_D_MAX) + by = {} + for r in rows: + by.setdefault(r["hostname"], []).append(r) + hz, other = [], [] + for name, ps in by.items(): + ins = [num(p["pl_insol"]) for p in ps] + h = dict(host=name, ra=num(ps[0]["ra"]), dec=num(ps[0]["dec"]), teff=num(ps[0]["st_teff"]), + planets=[p["pl_name"] for p in ps]) + if any(i is not None and hz_HZ[0] <= i <= hz_HZ[1] for i in ins): + hz.append(h) + elif all(i is not None and not (hz_HZ[0] / 3 <= i <= hz_HZ[1] * 3) for i in ins): + other.append(h) + return hz, other + + +def hz_gaia_of(hs): + m = core.xmatch([dict(source_id=h["host"], ra=h["ra"], dec=h["dec"]) for h in hs], "I/355/gaiadr3", 10.0) + best = {} + for r in m: + if num(r["Gmag"]) is not None and (r["source_id"] not in best or num(r["Gmag"]) < num(best[r["source_id"]]["Gmag"])): + best[r["source_id"]] = r + out = [] + for h in hs: + r = best.get(h["host"]) + if not r or not num(r["Plx"]) or num(r["BP-RP"]) is None: + continue + h.update(source_id=r["Source"], gra=num(r["RAdeg"]), gdec=num(r["DEdeg"]), pmra=num(r["pmRA"]) or 0.0, + pmdec=num(r["pmDE"]) or 0.0, plx=num(r["Plx"]), g=num(r["Gmag"]), bp_rp=num(r["BP-RP"]), + ruwe=num(r["RUWE"])) + out.append(h) + return out + + +def hz_pool(): + """Control pool: Gaia DR3 parallax above 9 mas at S/N 10, RUWE below 1.4, G below 17.""" + path = os.path.join(hz_ROOT, "pool.json") + if os.path.exists(path): + return json.load(open(path)) + rows = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag, bp_rp, b FROM " + "gaiadr3.gaia_source WHERE parallax > 9 AND parallax_over_error > 10 AND ruwe < 1.4 AND " + "phot_g_mean_mag < 17 AND bp_rp IS NOT NULL") + out = [dict(source_id=r["source_id"], gra=float(r["ra"]), gdec=float(r["dec"]), pmra=num(r["pmra"]) or 0.0, + pmdec=num(r["pmdec"]) or 0.0, plx=float(r["parallax"]), g=float(r["phot_g_mean_mag"]), + bp_rp=float(r["bp_rp"]), b=float(r["b"])) for r in rows] + json.dump(out, open(path, "w")) + return out + + +def hz_controls(h, P, rng, exclude): + """Up to N_CTRL pool stars matched in BP-RP, G, parallax and |b|.""" + from astropy.coordinates import SkyCoord + hb = abs(float(SkyCoord(ra=h["gra"], dec=h["gdec"], unit="deg").galactic.b.deg)) + m = ((np.abs(P["bp_rp"] - h["bp_rp"]) < 0.03) & (np.abs(P["g"] - h["g"]) < 0.25) & (P["plx"] > h["plx"] / 1.3) + & (P["plx"] < h["plx"] * 1.3) & (np.abs(np.abs(P["b"]) - hb) < 15.0)) + idx = [i for i in np.where(m)[0] if P["ids"][i] not in exclude] + rng.shuffle(idx) + return [P["rows"][i] for i in idx[:hz_N_CTRL]] + + +def hz_at_wise(s): + dt = hz_WISE_EPOCH - 2016.0 + return (s["gra"] + s["pmra"] / 3.6e6 * dt / max(math.cos(math.radians(s["gdec"])), 1e-6), + s["gdec"] + s["pmdec"] / 3.6e6 * dt) + + +def hz_fetch(): + os.makedirs(hz_ROOT, exist_ok=True) + hz, other = hz_hosts() + random.seed(1) + other = random.sample(other, min(hz_N_COMPARE, len(other))) + hz, other = hz_gaia_of(hz), hz_gaia_of(other) + for h in hz: + h["group"] = "hz" + for h in other: + h["group"] = "other" + allh = hz + other + rows = hz_pool() + P = dict(rows=rows, ids=[r["source_id"] for r in rows], bp_rp=np.array([r["bp_rp"] for r in rows]), + g=np.array([r["g"] for r in rows]), plx=np.array([r["plx"] for r in rows]), b=np.array([r["b"] for r in rows])) + exclude = {h["source_id"] for h in allh} + rng = random.Random(2) + for h in allh: + h["controls"] = hz_controls(h, P, rng, exclude) + stars = [] + for h in allh: + stars.append(dict(source_id=h["source_id"], s=h)) + stars += [dict(source_id=c["source_id"], s=c) for c in h["controls"]] + probe = [] + for x in stars: + ra, dec = hz_at_wise(x["s"]) + probe.append(dict(source_id=x["source_id"], ra=ra, dec=dec)) + wise = {} + for k in range(0, len(probe), 5000): + for r in core.xmatch(probe[k:k + 5000], "II/328/allwise", 3.0): + if r["source_id"] not in wise or float(r["angDist"]) < float(wise[r["source_id"]]["angDist"]): + wise[r["source_id"]] = r + keep = ("W1mag", "W2mag", "W3mag", "W4mag", "e_W1mag", "e_W2mag", "e_W3mag", "e_W4mag", "Kmag", "e_Kmag", "ccf", "ex", + "qph", "angDist") + for h in allh: + h["wise"] = {k: wise[h["source_id"]].get(k) for k in keep} if h["source_id"] in wise else None + for c in h["controls"]: + c["wise"] = {k: wise[c["source_id"]].get(k) for k in keep} if c["source_id"] in wise else None + json.dump(allh, open(os.path.join(hz_ROOT, "hz_stack.json"), "w"), indent=1) + print("%d habitable-zone hosts and %d comparison hosts within %d pc with Gaia DR3 counterparts; %d controls; " + "AllWISE for %d of %d stars" % (len(hz), len(other), hz_D_MAX, sum(len(h["controls"]) for h in allh), len(wise), + len(stars))) + + +def hz_reference(w): + """Colour reference band: W1 when unsaturated (8 mag or fainter), else Ks.""" + w1 = num((w or {}).get("W1mag")) + return "W1" if w1 is not None and w1 >= 8.0 else "K" + + +def hz_colour(w, band, ref): + """Reference minus W3 or W4 with error, or None when a band fails the cuts.""" + if not w: + return None + q, c = str(w.get("qph") or "UUUU"), str(w.get("ccf") or "0000") + wb, eb = num(w.get("W%dmag" % (band + 1))), num(w.get("e_W%dmag" % (band + 1))) + if ref == "W1": + r, er = num(w.get("W1mag")), num(w.get("e_W1mag")) + if r is None or r < 8.0 or q[0] not in "AB" or c[0] != "0": + return None + else: + r, er = num(w.get("Kmag")), num(w.get("e_Kmag")) + if r is None or r < 4.5: + return None + if None in (wb, eb, er) or str(w.get("ex")) != "0" or q[band] not in "AB" or c[band] != "0": + return None + return r - wb, math.hypot(er, eb) + + +def hz_excess(target, others, band): + ref = hz_reference(target) + t = hz_colour(target, band, ref) + cs = [hz_colour(o, band, ref) for o in others] + cs = np.array([x[0] for x in cs if x]) + if t is None or len(cs) < 5: + return None + med = float(np.median(cs)) + sd = 1.4826 * float(np.median(np.abs(cs - med))) + sd = max(sd, 0.01) + return t[0] - med, math.hypot(sd * math.sqrt(1 + 1.0 / len(cs)), t[1]), len(cs) + + +def hz_wmean(xs): + if not xs: + return None, None + w = np.array([1.0 / s ** 2 for _, s in xs]) + v = np.array([x for x, _ in xs]) + return float(np.sum(w * v) / np.sum(w)), float(1.0 / math.sqrt(np.sum(w))) + + +def hz_planck_ratio(lam_um, t1, t2): + """B_nu(t1) / B_nu(t2) at lam_um.""" + x = 14387.77 / lam_um + return math.expm1(x / t2) / math.expm1(x / t1) + + +def hz_swarm_gain(lam_um, teff, t_swarm=300.0): + """Flux added at lam_um by a t_swarm swarm intercepting a teff photosphere, relative to the photosphere.""" + return hz_planck_ratio(lam_um, t_swarm, teff) * (teff / t_swarm) ** 4 + + +def hz_galaxies_near(ra, dec, radius=10.0): + """Extended Pan-STARRS DR2 sources within radius: background galaxies in the W3 and W4 beams.""" + import csv + import io + u = ("https://catalogs.mast.stsci.edu/api/v0.1/panstarrs/dr2/mean.csv?ra=%.6f&dec=%.6f&radius=%.5f" + "&nDetections.gte=5&columns=[objID,raMean,decMean,iMeanPSFMag,iMeanKronMag,rMeanPSFMag]" % (ra, dec, radius / 3600)) + try: + rows = list(csv.DictReader(io.StringIO(core.get(u, timeout=120, retries=3).decode()))) + except Exception: + return None + out = [] + for r in rows: + ip, ik = num(r["iMeanPSFMag"]), num(r["iMeanKronMag"]) + if ip and ik and ip > 0 and ik > 0 and ip - ik > 0.05: + sep = math.hypot((float(r["raMean"]) - ra) * math.cos(math.radians(dec)), float(r["decMean"]) - dec) * 3600 + out.append(dict(sep=sep, i_psf=ip, i_kron=ik, r=num(r["rMeanPSFMag"]))) + return out + + +def hz_analyse(): + allh = json.load(open(os.path.join(hz_ROOT, "hz_stack.json"))) + out = {} + for band, lam in ((2, 12.0), (3, 22.0)): + res = {"hz": [], "other": []} + null = [] + for h in allh: + cw = [c["wise"] for c in h["controls"]] + e = hz_excess(h["wise"], cw, band) + if e: + res[h["group"]].append(dict(host=h["host"], dx=e[0], sd=e[1], n=e[2], teff=h.get("teff"))) + for i, c in enumerate(h["controls"]): + e = hz_excess(c["wise"], cw[:i] + cw[i + 1:], band) + if e: + null.append((e[0], e[1])) + line = {} + for g in ("hz", "other"): + m, s = hz_wmean([(x["dx"], x["sd"]) for x in res[g]]) + line[g] = (m, s, len(res[g])) + nm, ns = hz_wmean(null) + zs = np.array([x / s for x, s in null]) + print("W1/Ks-W%d (%d um): habitable-zone hosts %+.4f +- %.4f mag (%d), other hosts %+.4f +- %.4f (%d), controls " + "against their siblings %+.4f +- %.4f (%d; z beyond 3: %.2f per cent)" + % (band + 1, lam, line["hz"][0], line["hz"][1], line["hz"][2], line["other"][0], line["other"][1], + line["other"][2], nm, ns, len(null), 100.0 * np.mean(zs > 3))) + # each host's excess as a 300 K covering fraction, less the controls' offset + fs = [] + for x in res["hz"]: + g = hz_swarm_gain(lam, x["teff"] or 4000.0) + lo, hi = 10 ** ((x["dx"] - nm) / 2.5) - 1, 10 ** ((x["dx"] - nm + x["sd"]) / 2.5) - 1 + fs.append((lo / g, max(hi - lo, 1e-9) / g)) + fm, fsd = hz_wmean(fs) + fbound = max(fm, 0.0) + 2 * fsd + print(" mean covering fraction of a 300 K swarm over the habitable-zone hosts %.1e +- %.1e; 95 per cent bound %.1e" + % (fm, fsd, fbound)) + top = sorted(res["hz"], key=lambda x: -x["dx"] / x["sd"])[:8] + print(" largest habitable-zone host excesses: " + "; ".join( + "%s %+.3f (%.1f sigma, %d controls)" % (x["host"], x["dx"], x["dx"] / x["sd"], x["n"]) for x in top)) + allg = {h["host"]: h for h in allh} + for x in top: + if x["dx"] / x["sd"] < 2.5: + break + h = allg[x["host"]] + gal = hz_galaxies_near(h["gra"], h["gdec"]) + x["galaxies"] = gal + print(" %s: %s" % (x["host"], "extended Pan-STARRS source(s) within 10 arcsec: " + "; ".join( + "%.1f\" r %.1f, i PSF-Kron %.2f" % (gg["sep"], gg["r"] or 0, gg["i_psf"] - gg["i_kron"]) for gg in gal) + if gal else "no extended Pan-STARRS source within 10 arcsec" if gal is not None else "Pan-STARRS query failed")) + lim = (line["hz"][0] - nm) + 2 * math.hypot(line["hz"][1], ns) + f = fbound + out["W%d" % (band + 1)] = dict(hz=line["hz"], other=line["other"], null=(nm, ns, len(null)), bound_mag=lim, + covering_fraction=f, hosts=res) + json.dump(out, open(os.path.join(hz_HERE, "hz_stack.json"), "w"), indent=1) + + +def hz_record(): + out = json.load(open(os.path.join(hz_HERE, "hz_stack.json"))) + allh = {h["host"]: h for h in json.load(open(os.path.join(hz_ROOT, "hz_stack.json")))} + rows = {} + for band in ("W3", "W4"): + for g in ("hz", "other"): + for x in out[band]["hosts"][g]: + sid = allh[x["host"]]["source_id"] + r = rows.setdefault(sid, dict(target="gaia_dr3:" + sid, note=x["host"] + " (" + g + ")")) + r["note"] += "; W1/Ks-%s excess %+.3f (%.1f sigma)" % (band, x["dx"], x["dx"] / x["sd"]) + if x.get("galaxies"): + r["vet"] = "background galaxy in the beam: " + "; ".join( + "Pan-STARRS extended source %.1f arcsec away, r %.1f" % (gg["sep"], gg["r"] or 0) for gg in x["galaxies"]) + if band == "W3": + r["stat"] = x["dx"] / x["sd"] + w3 = out["W3"] + core.record_search("hz_stack_wise", "Stacking at habitable-zone hosts", archive="NASA Exoplanet Archive, Gaia DR3, AllWISE", + release="pscomppars as of the run; AllWISE", selection="planet hosts within %d pc" % hz_D_MAX, + code=os.path.abspath(__file__), entry="hz", params=dict(hz=hz_HZ, n_ctrl=hz_N_CTRL, n_compare=hz_N_COMPARE), + n_targets=len(rows), null_summary=dict(W3=w3["null"], W4=out["W4"]["null"]), + result="W1-W3 mean excess of habitable-zone hosts %+.4f +- %.4f mag (%d), other hosts %+.4f +- %.4f; " + "mean covering fraction of a 300 K swarm below %s" + % (w3["hz"][0], w3["hz"][1], w3["hz"][2], w3["other"][0], w3["other"][1], + "%.1e" % w3["covering_fraction"] if w3["covering_fraction"] else "-"), + ledger="Stacking at habitable-zone hosts") + core.record_targets("hz_stack_wise", list(rows.values())) + print("recorded %d hosts" % len(rows)) + + +def hz_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "record")) + a = p.parse_args() + {"fetch": hz_fetch, "analyse": hz_analyse, "record": hz_record}[a.mode]() + + +def hz_cli(): + quiet_warnings() + hz_main() + + +# -------------------------------------------------------------------------------------------------------------- + +pma_DOC = r"""Proper-motion-anomaly companions within 50 pc: Ks-W3 and Ks-W4 excess against neighbours bounds reprocessed light at 200-600 K; excesses re-read in WISE All-Sky. + + python -I seti.py infrared pma + python -I seti.py infrared pma record""" + +pma_HERE = core.RESULTS +pma_VIZ = "https://tapvizier.cds.unistra.fr/TAPVizieR/tap/sync" +pma_H, pma_KB, pma_CL, pma_SIGMA = 6.62607015e-34, 1.380649e-23, 2.99792458e8, 5.670374419e-8 +pma_LSUN, pma_PC, pma_MJ_MSUN = 3.828e26, 3.0857e16, 1047.57 +pma_ZP = {"W3": (12.08e-6, 31.674), "W4": (22.19e-6, 8.363)} +pma_KS_ZP = 666.7 +pma_TEMPS = (200.0, 300.0, 600.0) + + +def pma_viz(q): + b = core.get(pma_VIZ + "?" + urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", FORMAT="csv", QUERY=q)), + timeout=300, retries=3) + return list(csv.DictReader(io.StringIO(b.decode("utf-8", "replace")))) + + +def pma_lum(m): + return ms_luminosity(m) + + +def pma_bb_jy(lam, T, L_sun, d_pc): + nu = pma_CL / lam + bnu = 2 * pma_H * nu ** 3 / pma_CL ** 2 / math.expm1(pma_H * nu / (pma_KB * T)) + return bnu * L_sun * pma_LSUN / (4 * pma_SIGMA * T ** 4 * (d_pc * pma_PC) ** 2) / 1e-26 + + +pma_COLS = ("HIP", "GaiaEDR3", "Name", "RAdeg", "DEdeg", "DMS", "W", "Gmag", "Kmag", "e_Kmag", "SpType", "PlxG3", "RUWE", + "snrPMaH2EG3a", "M1", "M23au", "M25au", "M210au", "M230au", "_RA", "_DE") +pma_RELEASE_DIFF = 0.05 # mag; AllWISE minus All-Sky beyond the sample's 5-95 per cent range +# readings the catalogues alone do not give +pma_FOLLOWUP = {"20591": "known DA white-dwarf companion (56 Per B)", + "106694": "Ks-W3 +0.16 within the M0 photospheric colour range"} + + +def pma_sample(): + """Kervella et al. 2022 stars within 50 pc with an anomaly at S/N 5, via VizieR TAP or ASU.""" + try: + return pma_viz("SELECT %s FROM \"J/A+A/657/A7/tablea1\" WHERE PlxG3 > 20 AND snrPMaH2EG3a > 5" + % ", ".join('"%s"' % c if c.startswith("_") else c for c in pma_COLS)) + except OSError: + from astroquery.vizier import Vizier + t = Vizier(columns=list(pma_COLS), column_filters={"PlxG3": ">20", "snrPMaH2EG3a": ">5"}, row_limit=-1).get_catalogs( + "J/A+A/657/A7/tablea1")[0] + return [{c: ("" if np.ma.is_masked(r[c]) else str(r[c])) for c in pma_COLS if c in t.colnames} for r in t] + + +def pma_main(): + rows = pma_sample() + sel = [] + for r in rows: + ms = [num(r[k]) for k in ("M23au", "M25au", "M210au", "M230au")] + ms = [m for m in ms if m] + if not ms: + continue + m2 = min(ms) / pma_MJ_MSUN + if m2 >= 0.3: + r.update(m2=m2, d_pc=1000.0 / float(r["PlxG3"]), ra=num(r["RAdeg"]) or num(r["_RA"]), + dec=num(r["DEdeg"]) or num(r["_DE"])) + if r["ra"] is not None and r["dec"] is not None: + sel.append(r) + print("%d Hipparcos stars within 50 pc with a proper-motion anomaly at S/N 5; %d with a companion of at least 0.3 " + "solar masses everywhere in 3-30 au" % (len(rows), len(sel)), flush=True) + pos = [dict(source_id=r["HIP"], ra=r["ra"], dec=r["dec"]) for r in sel] + wise, allsky = {}, {} + for cat, into in (("II/328/allwise", wise), ("II/311/wise", allsky)): + for m in core.xmatch(pos, cat, 6.0): + if m["source_id"] not in into or float(m["angDist"]) < float(into[m["source_id"]]["angDist"]): + into[m["source_id"]] = m + out = [] + for r in sel: + w = wise.get(r["HIP"]) + if not w: + continue + # Kervella's own 2MASS K; AllWISE's associated source can be a fainter neighbour + ks = num(r["Kmag"]) if num(r["Kmag"]) is not None else num(w.get("Kmag")) + eks = num(r["e_Kmag"]) or 0.05 + if eks > 0.5: + # 9.99 marks an unusable K + ks = None + gm = num(r["Gmag"]) + rec = dict(hip=r["HIP"], name=r["Name"], gaia=r["GaiaEDR3"], sptype=r["SpType"], d_pc=r["d_pc"], m1=num(r["M1"]), + m2=r["m2"], snr=num(r["snrPMaH2EG3a"]), ruwe=num(r["RUWE"]), dms=r["DMS"], ks=ks, e_ks=eks, + g_ks=(gm - ks) if gm is not None and ks is not None else None, L2=pma_lum(r["m2"]), + qph=w.get("qph"), ccf=w.get("ccf")) + s = allsky.get(r["HIP"]) or {} + for band, (lam, f0) in pma_ZP.items(): + mag, err = num(w.get(band + "mag")), num(w.get("e_" + band + "mag")) + rec[band] = mag + rec[band + "_err"] = err + rec["ks_" + band] = (ks - mag) if ks is not None and mag is not None else None + rec[band + "_allsky"] = num(s.get(band + "mag")) + rec["ks_" + band + "_allsky"] = (ks - rec[band + "_allsky"]) if ks is not None and rec[band + "_allsky"] is not None else None + for T in pma_TEMPS: + rec["%s_pred_%d" % (band, T)] = pma_bb_jy(lam, T, rec["L2"], r["d_pc"]) + out.append(rec) + # photospheric colours: median of the 15 nearest in G - Ks, AllWISE and All-Sky + for band in ("W3", "W4"): + for tag in ("", "_allsky"): + ok = [o for o in out if o["ks_" + band + tag] is not None and o["g_ks"] is not None] + jk = np.array([o["g_ks"] for o in ok]) + c = np.array([o["ks_" + band + tag] for o in ok]) + for o in ok: + near = np.argsort(np.abs(jk - o["g_ks"]))[:16] + near = [i for i in near if ok[i] is not o][:15] + base = float(np.median(c[near])) + spread = float(1.4826 * np.median(np.abs(c[near] - base))) + o[band + "_excess_mag" + tag] = o["ks_" + band + tag] - base + if tag: + continue + err = math.sqrt(max(spread, 0.03) ** 2 + (o[band + "_err"] or 0.05) ** 2 + o["e_ks"] ** 2) + o[band + "_excess_sig"] = o[band + "_excess_mag"] / err + o[band + "_excess_err"] = err + for band in ("W3", "W4"): + lam, f0 = pma_ZP[band] + for o in out: + if o.get(band + "_excess_sig") is None: + continue + phot = f0 * 10 ** (-0.4 * (o[band] + o[band + "_excess_mag"])) + meas = f0 * 10 ** (-0.4 * o[band]) + # 3-sigma ceiling when no excess is measured + ex = max(meas - phot, 0.0) if o[band + "_excess_sig"] >= 3 else \ + meas * (10 ** (0.4 * 3 * o[band + "_excess_err"]) - 1) + o[band + "_excess_jy"] = ex + for T in pma_TEMPS: + o["%s_frac_%d" % (band, T)] = ex / o["%s_pred_%d" % (band, T)] + for o in out: + if (o.get("W3_excess_sig") or 0) >= 3 or (o.get("W4_excess_sig") or 0) >= 3: + o["reading"] = pma_reading(o) + json.dump(out, open(os.path.join(pma_HERE, "pma_dark.json"), "w"), indent=1) + lim = [min(o.get("W3_frac_300", 9e9), o.get("W4_frac_300", 9e9)) for o in out] + lim = [x for x in lim if x < 9e9] + print("%d with AllWISE photometry; reprocessed fraction of the least companion luminosity at 300 K: median %.2e, " + "largest %.2e (%d with a usable K); %d below 1 per cent" % (len(out), np.median(lim), np.max(lim), len(lim), + sum(x < 0.01 for x in lim))) + exc = [o for o in out if "reading" in o] + d = [o[b] - o[b + "_allsky"] for o in out for b in ("W3",) if o[b] is not None and o[b + "_allsky"] is not None] + print("infrared excess at 3 sigma in W3 or W4: %d; AllWISE minus All-Sky W3 over the sample: median %+.3f, 5-95 per " + "cent %s" % (len(exc), np.median(d), np.percentile(d, [5, 95]).round(3))) + for o in sorted(exc, key=lambda o: -max(o.get("W3_excess_sig") or 0, o.get("W4_excess_sig") or 0)): + print(" HIP %s %-18s %-10s %5.1f pc M2 >= %.2f (PMa S/N %.0f, RUWE %s): Ks-W3 excess %+.2f (%.1f sigma), Ks-W4 " + "excess %+.2f (%.1f sigma); fraction at 300 K %.1e; qph %s ccf %s; %s" + % (o["hip"], o["name"][:18], (o["sptype"] or "")[:10], o["d_pc"], o["m2"], o["snr"] or 0, + "%.2f" % o["ruwe"] if o["ruwe"] else "-", o.get("W3_excess_mag") or 0, o.get("W3_excess_sig") or 0, + o.get("W4_excess_mag") or 0, o.get("W4_excess_sig") or 0, + min(o.get("W3_frac_300", 9), o.get("W4_frac_300", 9)), o["qph"], o["ccf"], o["reading"] or "unexplained")) + + +pma_CCF = {"d": "a diffraction spike", "h": "a scattered-light halo", "o": "an optical ghost", "p": "a latent image"} + + +def pma_reading(o): + """Explanation of a 3-sigma excess: contamination flag, follow-up reading, or release-dependent photometry; None otherwise.""" + for i, band in ((2, "W3"), (3, "W4")): + f = (o["ccf"] or "0000")[i:i + 1] + if f in pma_CCF and (o.get(band + "_excess_sig") or 0) >= 3: + return "%s flagged as %s (ccf %s)" % (band, pma_CCF[f], o["ccf"]) + if o["hip"] in pma_FOLLOWUP: + return pma_FOLLOWUP[o["hip"]] + for band in ("W3", "W4"): + a, s, xs = o[band], o[band + "_allsky"], o.get(band + "_excess_mag_allsky") + if (o.get(band + "_excess_sig") or 0) >= 3 and s is not None and xs is not None and abs(a - s) > pma_RELEASE_DIFF \ + and xs < 3 * o[band + "_excess_err"]: + return ("release-dependent photometry: AllWISE %s %.3f against All-Sky %.3f, where the All-Sky excess is %+.3f mag" + % (band, a, s, xs)) + return None + + +def pma_record(): + out = json.load(open(os.path.join(pma_HERE, "pma_dark.json"))) + lim = [min(o.get("W3_frac_300", 9e9), o.get("W4_frac_300", 9e9)) for o in out] + lim = [x for x in lim if x < 9e9] + exc = [o for o in out if "reading" in o] + left = [o for o in exc if not o["reading"]] + core.record_search( + "pma_dark_companions", "Dark companions, longer periods", + archive="Kervella et al. 2022 (VizieR J/A+A/657/A7), AllWISE, WISE All-Sky", release="Hipparcos-Gaia EDR3", + selection="Hipparcos stars within 50 pc with a proper-motion anomaly at S/N 5 and a companion of at least 0.3 Msun everywhere in 3-30 au", + code=os.path.abspath(__file__), entry="pma", n_targets=len(out), n_unit="stars", + params=dict(m2_min=0.3, snr=5, temps=list(pma_TEMPS), release_diff=pma_RELEASE_DIFF), + null_summary="the Ks-W3 and Ks-W4 colours of the 15 sample stars nearest in G-Ks", + sensitivity="3 sigma of the colour against its neighbours, median %.2f per cent of the companion's light at 300 K" % (100 * np.median(lim)), + ledger="Dark companions", + result="median bound %.2f per cent of the companion luminosity at 300 K, %d of %d below 1 per cent; %d excesses at 3 sigma: %s%s" % ( + 100 * np.median(lim), sum(x < 0.01 for x in lim), len(lim), len(exc), + "; ".join("%s, %s" % (o["name"], o["reading"]) for o in exc if o["reading"]), + "; unexplained: %s" % ", ".join(o["name"] for o in left) if left else "")) + core.clear_targets("pma_dark_companions") + rows = [] + for o in out: + if not o.get("gaia"): + continue + fr = min(o.get("W3_frac_300", 9e9), o.get("W4_frac_300", 9e9)) + note = "HIP %s %s, M2 >= %.2f Msun at 3-30 au (PMa S/N %.0f), %.1f pc" % (o["hip"], o["name"], o["m2"], o["snr"] or 0, o["d_pc"]) + if "reading" in o: + note = "Ks-W3 %+.2f (%.1f sigma), Ks-W4 %+.2f (%.1f sigma); %s" % ( + o.get("W3_excess_mag") or 0, o.get("W3_excess_sig") or 0, o.get("W4_excess_mag") or 0, o.get("W4_excess_sig") or 0, note) + rows.append(dict(target="gaia_dr3:%s" % o["gaia"], upper_limit=fr if fr < 9e9 else None, + unit="fraction of the least companion luminosity re-radiated at 300 K", vet=o.get("reading"), note=note)) + core.record_targets("pma_dark_companions", rows) + print("recorded %d stars" % len(rows)) + + +def pma_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + pma_record() + else: + pma_main() + + +# -------------------------------------------------------------------------------------------------------------- + +dark_DOC = r"""Gaia DR3 dark companions within 200 pc: W3 and W4 against a 300 K re-emission of a main-sequence companion's luminosity. + + python -I seti.py infrared dark""" + +dark_MASS = np.array([0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.4]) +dark_MG = np.array([11.8, 10.7, 9.6, 8.6, 7.5, 6.6, 5.9, 5.2, 4.6, 3.6, 3.0]) +dark_H, dark_KB, dark_CL, dark_SIGMA = 6.62607015e-34, 1.380649e-23, 2.99792458e8, 5.670374419e-8 +dark_LSUN, dark_PC = 3.828e26, 3.0857e16 +dark_ZP = {"w3": (12.08e-6, 31.674), "w4": (22.19e-6, 8.363)} + + +def dark_mg_of_mass(m): + return float(np.interp(math.log(m), np.log(dark_MASS), dark_MG)) + + +def dark_lum(m): + return m ** 4 if m >= 0.43 else 0.23 * m ** 2.3 + + +def dark_bb_jy(lam, T, L_sun, d_pc): + nu = dark_CL / lam + bnu = 2 * dark_H * nu ** 3 / dark_CL ** 2 / (math.exp(dark_H * nu / (dark_KB * T)) - 1.0) + fnu = bnu * L_sun * dark_LSUN / (4 * dark_SIGMA * T ** 4 * (d_pc * dark_PC) ** 2) + return fnu / 1e-26 + + +def dark_wise(ra, dec): + q = ("SELECT w3mpro, w3sigmpro, w3snr, w4mpro, w4sigmpro, w4snr, ph_qual, cc_flags FROM allwise_p3as_psd WHERE " + "CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f))=1" % (ra, dec, 3 / 3600.0)) + u = "https://irsa.ipac.caltech.edu/TAP/sync?" + urllib.parse.urlencode(dict(QUERY=q, FORMAT="csv")) + for attempt in range(3): + try: + rows = list(csv.DictReader(io.StringIO(urllib.request.urlopen(u, timeout=120).read().decode()))) + return rows[0] if rows else None + except Exception: + pass + return None + + +def dark_main(): + rows = list(csv.DictReader(open(core.results("dark_companions.csv")))) + dark = [] + for r in rows: + m1, m2 = float(r["m1"] or "nan"), float(r["m2"] or "nan") + if not (m1 > 0 and m2 > 0): + continue + fr = r["fluxratio_upper"] or r["fluxratio"] + if not fr: + continue + expected = 10 ** (-0.4 * (dark_mg_of_mass(m2) - dark_mg_of_mass(m1))) + if float(fr) < expected / 3.0: + r.update(expected_fluxratio=expected, d_pc=1000.0 / float(r["parallax"])) + dark.append(r) + print("%d systems; %d with an optically dark companion of >= 0.5 Msun" % (len(rows), len(dark)), flush=True) + with ThreadPoolExecutor(8) as ex: + ws = list(ex.map(lambda r: dark_wise(float(r["ra"]), float(r["dec"])), dark)) + out = [] + for r, w in zip(dark, ws): + m2 = float(r["m2"]) + L = dark_lum(m2) + rec = dict(source_id=r["source_id"], m1=float(r["m1"]), m2=m2, d_pc=round(r["d_pc"], 1), L_pred=round(L, 3), + method=r["combination_method"]) + for band, (lam, f0) in dark_ZP.items(): + pred = dark_bb_jy(lam, 300.0, L, r["d_pc"]) + rec[band + "_pred_jy"] = pred + if w is None: + rec[band + "_ratio"] = None + continue + mag = float(w[band + "mpro"]) if w[band + "mpro"] else float("nan") + snr = float(w[band + "snr"]) if w[band + "snr"] else 0.0 + meas = f0 * 10 ** (-0.4 * mag) + rec[band + "_meas_jy"] = meas + rec[band + "_detected"] = bool(snr >= 3) + rec[band + "_ratio"] = meas / pred + out.append(rec) + json.dump(out, open(core.results("dark_companion_ds.json"), "w"), indent=0) + ok = [o for o in out if o.get("w3_ratio") is not None] + print("%d dark companions with an AllWISE counterpart" % len(ok)) + ok.sort(key=lambda o: -(o["w3_ratio"] or 0)) + print("highest measured/predicted W3 (1.0 = the whole companion reprocessed at 300 K):") + for o in ok[:15]: + print(" Gaia DR3 %s M2 %.2f %.0f pc W3 ratio %.3f (%s) W4 ratio %.3f (%s)" + % (o["source_id"], o["m2"], o["d_pc"], o["w3_ratio"], "det" if o["w3_detected"] else "limit", + o["w4_ratio"], "det" if o["w4_detected"] else "limit")) + lim = np.array([o["w3_ratio"] for o in ok]) + print("median W3 ratio %.4f; %d of %d below 0.1" % (np.median(lim), int(np.sum(lim < 0.1)), len(lim))) + + +def dark_cli(): + dark_main() + + +# -------------------------------------------------------------------------------------------------------------- + +enclosed_DOC = r"""Fully enclosed stars: moving, cold AllWISE point sources (W3 below 8, W2-W3 above 1.5) without Gaia counterparts, vetted for young stars and clouds. + + python -I seti.py infrared enclosed + python -I seti.py infrared enclosed record""" + +enclosed_ROOT = os.environ.get("ENCLOSED_ROOT", core.data("enclosed")) +enclosed_YOUNG = ("Y*O", "Y*?", "TT*", "TT?", "Or*", "Ae*", "HH", "out", "smm", "cor", "MoC", "DNe", "glb", "bub", "HII", "C?*", + "Em*", "FU*", "FIR") + + +def enclosed_f(x): + try: + return float(x) + except (TypeError, ValueError): + return float("nan") + + +def enclosed_cached(name, fn): + p = os.path.join(enclosed_ROOT, name) + if os.path.exists(p): + return json.load(open(p)) + r = fn() + json.dump(r, open(p, "w")) + return r + + +def enclosed_main(): + os.makedirs(enclosed_ROOT, exist_ok=True) + src = enclosed_cached("allwise_cold.json", lambda: core.tap_async( + "irsa", "SELECT designation, ra, dec, w1mpro, w1sigmpro, w1snr, w2mpro, w2sigmpro, w2snr, w3mpro, w3sigmpro, " + "w3snr, w4mpro, w4snr, ph_qual, cc_flags, ext_flg, nb, na, pmra, sigpmra, pmdec, sigpmdec, glat FROM " + "allwise_p3as_psd WHERE w3mpro < 8 AND w3snr > 10 AND w2mpro - w3mpro > 1.5 AND ext_flg = 0")) + pts = [dict(source_id=x["designation"], ra=float(x["ra"]), dec=float(x["dec"])) for x in src] + + def xm(cat): + out = [] + for k in range(0, len(pts), 10000): + out += core.xmatch(pts[k:k + 10000], cat, 3.0) + return out + cw = enclosed_cached("catwise.json", lambda: xm("II/365/catwise")) + ga = enclosed_cached("gaia.json", lambda: xm("I/355/gaiadr3")) + best = {} + for x in cw: + if x["source_id"] not in best or enclosed_f(x["angDist"]) < enclosed_f(best[x["source_id"]]["angDist"]): + best[x["source_id"]] = x + ngaia = Counter(x["source_id"] for x in ga) + moving = [] + for s in src: + c = best.get(s["designation"]) + if not c: + continue + pm = math.hypot(enclosed_f(c["pmRA"]), enclosed_f(c["pmDE"])) + e = math.hypot(enclosed_f(c["e_pmRA"]), enclosed_f(c["e_pmDE"])) / math.sqrt(2) + if pm > 0.04 and pm > 5 * e: + moving.append(dict(s, pm=pm, e_pm=e, ng=ngaia.get(s["designation"], 0))) + dark = [s for s in moving if s["ng"] == 0] + clean = [s for s in dark if s["cc_flags"][:3] == "000" and enclosed_f(s["w2mpro"]) > 7 and enclosed_f(s["w1mpro"]) > 8 + and s["ph_qual"][1] == "A"] + print("%d AllWISE point sources with W3 < 8 (S/N > 10) and W2-W3 > 1.5; %d in CatWISE2020; %d moving above " + "40 mas/yr at 5 sigma; %d without a Gaia source within 3 arcsec; %d with clean flags below saturation" + % (len(src), len(best), len(moving), len(dark), len(clean))) + print(" Galactic latitude of the clean ones: %s" % dict(Counter(int(abs(enclosed_f(s["glat"])) // 5 * 5) for s in clean))) + left = [] + for s in clean: + q = ("SELECT b.otype FROM basic AS b WHERE CONTAINS(POINT('ICRS', b.ra, b.dec), CIRCLE('ICRS', %f, %f, 0.5)) " + "= 1" % (float(s["ra"]), float(s["dec"]))) + types = Counter(x["otype"] for x in core.simbad(q)) + s["young_30arcmin"] = sum(v for k, v in types.items() if k in enclosed_YOUNG) + if s["young_30arcmin"] >= 5: + continue + left.append(s) + print(" away from star-forming clouds (fewer than 5 young stars, cores or clouds in SIMBAD within 30 arcmin): %d, " + "%d of them within 5 deg of the Galactic plane" % (len(left), sum(1 for s in left if abs(enclosed_f(s["glat"])) < 5))) + for s in left: + print(" %s b %+.1f W1 %s W2 %s W3 %s W4 %s pm %.3f +- %.3f arcsec/yr, %d young objects within 30 arcmin" + % (s["designation"], enclosed_f(s["glat"]), s["w1mpro"], s["w2mpro"], s["w3mpro"], s["w4mpro"], s["pm"], + s["e_pm"], s["young_30arcmin"])) + json.dump(dict(moving=len(moving), dark=len(dark), clean=clean, left=left), open(os.path.join(enclosed_ROOT, "result.json"), + "w"), default=str) + + +def enclosed_record(): + """Record one row per clean, moving, optically dark source.""" + r = json.load(open(os.path.join(enclosed_ROOT, "result.json"))) + core.record_search( + "enclosed_stars", "Fully enclosed stars: cold moving infrared sources without optical counterparts", + archive="AllWISE (IRSA asynchronous TAP), CatWISE2020 (CDS II/365/catwise), Gaia DR3, SIMBAD", + release="AllWISE, CatWISE2020, Gaia DR3", selection="AllWISE point sources with W3 < 8 at S/N 10 and W2-W3 > 1.5", + code="seti.py infrared enclosed", params=dict(w3_max=8, w2w3_min=1.5, pm_min_mas=40, pm_sigma=5, gaia_radius_arcsec=3, + young_within_30arcmin=5), + n_targets=len(r["clean"]), + null_summary="%d move at 5 sigma, %d have no Gaia source, %d have clean flags below saturation, and %d of them " + "lie away from young stars, cores and clouds" % (r["moving"], r["dark"], len(r["clean"]), + len(r["left"])), + sensitivity="a 300 K shell around 0.003-1 L_sun within 100 pc (W3 below 8, W2 unsaturated, CatWISE motion above " + "40 mas/yr)", + result="no fully enclosed star" if not r["left"] else "%d candidates" % len(r["left"]), ledger="Fully enclosed stars") + core.clear_targets("enclosed_stars") + core.record_targets("enclosed_stars", [ + dict(target="allwise:%s" % s["designation"], stat=float(s["pm"]), unit="CatWISE proper motion, arcsec/yr", + vet="star_forming_region" if s["young_30arcmin"] >= 5 else None, + note="%d young stars, cores or clouds within 30 arcmin" % s["young_30arcmin"]) for s in r["clean"]]) + + +def enclosed_cli(): + quiet_warnings() + if sys.argv[1:] == ["record"]: + enclosed_record() + else: + enclosed_main() + + +# -------------------------------------------------------------------------------------------------------------- + +cold_DOC = r"""Cold shells (30-100 K) at stars within 50 pc from AKARI FIS: modified black-body fits and chance rates from source density. + + python -I seti.py infrared cold""" + + +cold_HERE = core.RESULTS +cold_BP_RP = np.array([0.0, 0.5, 0.82, 1.2, 1.8, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]) +cold_BC_G = np.array([-0.1, 0.05, 0.08, -0.05, -0.35, -0.8, -1.1, -1.4, -1.8, -2.3, -2.8]) +# dwarf sequence M_G against BP-RP (Pecaut and Mamajek) +cold_SEQ_C = np.array([0.4, 0.6, 0.82, 1.0, 1.2, 1.5, 1.84, 2.2, 2.5, 2.8, 3.2, 3.6, 4.0]) +cold_SEQ_M = np.array([2.6, 3.6, 4.7, 5.6, 6.3, 7.1, 8.0, 9.1, 10.0, 10.9, 12.0, 13.2, 14.4]) +cold_LSUN, cold_PC, cold_H, cold_KB, cold_C = 3.828e33, 3.0857e18, 6.626e-27, 1.381e-16, 2.998e10 +cold_BANDS = {"S65": 65e-4, "S90": 90e-4, "S140": 140e-4, "S160": 160e-4} + + +def cold_xmatch(rows, cat, radius): + """CDS XMatch of the stars against a VizieR catalogue.""" + return core.xmatch(rows, cat, radius) + + +def cold_mbb(lam_cm, T, beta=1.0): + nu = cold_C / lam_cm + return nu ** (3 + beta) / (math.exp(cold_H * nu / (cold_KB * T)) - 1.0) + + +def cold_fit(fluxes): + """Temperature and normalisation of a beta 1 modified black body through the bands (Jy).""" + bands = [(cold_BANDS[k], v) for k, v in fluxes.items()] + best = None + for T in np.arange(15.0, 300.0, 1.0): + model = np.array([cold_mbb(lam, T) for lam, _ in bands]) + obs = np.array([v for _, v in bands]) + a = np.dot(model, obs) / np.dot(model, model) + chi = np.sum((obs - a * model) ** 2 / obs ** 2) + if best is None or chi < best[0]: + best = (chi, T, a) + return best[1], best[2] + + +def cold_lir(T, a, d_cm): + """Luminosity (erg/s) of the fitted modified black body at distance d.""" + nus = np.logspace(10.5, 14.5, 4000) + fnu = a * nus ** 4 / (np.exp(cold_H * nus / (cold_KB * T)) - 1.0) * 1e-23 + return 4 * math.pi * d_cm ** 2 * np.trapezoid(fnu, nus) + + +def cold_main(): + stars = core.gaia("SELECT source_id, ra, dec, parallax, phot_g_mean_mag, bp_rp, ruwe FROM gaiadr3.gaia_source " + "WHERE parallax > 20 AND bp_rp BETWEEN 0.4 AND 4.0 AND phot_g_mean_mag < 15") + keep = [] + for s in stars: + plx, g, col = float(s["parallax"]), float(s["phot_g_mean_mag"]), float(s["bp_rp"]) + mg = g + 5 * math.log10(plx / 100.0) + if abs(mg - float(np.interp(col, cold_SEQ_C, cold_SEQ_M))) < 1.5: + keep.append(s) + print("%d main-sequence Gaia DR3 stars within 50 pc" % len(keep), flush=True) + m = cold_xmatch(keep, "II/298/fis", 20.0) + byid = {s["source_id"]: s for s in keep} + out = [] + for x in m: + s = byid[x["source_id"]] + fl = {} + for k in cold_BANDS: + q = x.get("q_" + k) or x.get("q_" + k.replace("S", "F")) or "" + v = x.get(k) + try: + v = float(v) + except (TypeError, ValueError): + continue + if v > 0 and (q in ("3", "") or q.isdigit() and int(q) >= 3): + fl[k] = v + if "S90" not in fl: + continue + plx = float(s["parallax"]) + d = 1000.0 / plx * cold_PC + mg = float(s["phot_g_mean_mag"]) + 5 * math.log10(plx / 100.0) + lb = cold_LSUN * 10 ** (-0.4 * (mg + float(np.interp(float(s["bp_rp"]), cold_BP_RP, cold_BC_G)) - 4.74)) + if len(fl) >= 2: + T, a = cold_fit(fl) + else: + T = 50.0 + a = fl["S90"] / cold_mbb(cold_BANDS["S90"], T) + f = cold_lir(T, a, d) / lb + out.append(dict(source_id=s["source_id"], g=float(s["phot_g_mean_mag"]), bp_rp=float(s["bp_rp"]), + d_pc=round(1000.0 / plx, 1), sep=float(x["angDist"]), fluxes=fl, T=float(T), frac=f, + akari=x.get("AKARI-FIS") or x.get("AKARI"))) + # chance alignments from FIS density within 1 deg times the match area + print("%d stars with a 90 um detection within 20 arcsec" % len(out)) + out.sort(key=lambda o: -o["frac"]) + for o in out[:25]: + sb = core.simbad("SELECT b.main_id, b.otype, b.sp_type FROM basic AS b JOIN ident AS i ON i.oidref = b.oid " + "WHERE i.id = 'Gaia DR3 %s'" % o["source_id"]) + o["simbad"] = sb[0] if sb else {} + print(" %s (%s, %s) %.1f pc G %.2f: %.0f K, fraction %.1e, sep %.1f arcsec, %s" + % (o["simbad"].get("main_id", o["source_id"]), o["simbad"].get("otype", "?"), + o["simbad"].get("sp_type", "?"), o["d_pc"], o["g"], o["T"], o["frac"], o["sep"], + ", ".join("%s %.2f Jy" % kv for kv in o["fluxes"].items())), flush=True) + json.dump(out, open(os.path.join(cold_HERE, "cold_shells.json"), "w"), indent=0) + + +def cold_cli(): + quiet_warnings() + cold_main() + + +# -------------------------------------------------------------------------------------------------------------- + +colder_DOC = r"""Colder shells (10-30 K) at stars within 50 pc from Planck PCCS2, PGCC and AKARI 140/160 um, against shifted-position chance matches. + + python -I seti.py infrared colder + python -I seti.py infrared colder record""" + +colder_BANDS = {"S140": 140e-4, "S160": 160e-4, "P857": 349.8e-4, "P545": 550.1e-4, "P353": 849.3e-4} +colder_CATS = {"pccs857": ("J/A+A/594/A26/pccs857", 150.0), "pccs545": ("J/A+A/594/A26/pccs545", 150.0), + "pccs353": ("J/A+A/594/A26/pccs353", 150.0), "pgcc": ("J/A+A/594/A28/pgcc", 150.0), + "fis": ("II/298/fis", 20.0)} + + +def colder_stars(): + stars = core.gaia("SELECT source_id, ra, dec, parallax, phot_g_mean_mag, bp_rp, ruwe FROM gaiadr3.gaia_source " + "WHERE parallax > 20 AND bp_rp BETWEEN 0.4 AND 4.0 AND phot_g_mean_mag < 15") + keep = [] + for s in stars: + plx, g, col = float(s["parallax"]), float(s["phot_g_mean_mag"]), float(s["bp_rp"]) + mg = g + 5 * math.log10(plx / 100.0) + if abs(mg - float(np.interp(col, cold_SEQ_C, cold_SEQ_M))) < 1.5: + keep.append(s) + return keep + + +def colder_flux(x, cat): + """Far-infrared fluxes (Jy) of a match from PCCS2, PGCC and FIS.""" + out = {} + + def f(v): + try: + v = float(v) + except (TypeError, ValueError): + return None + return v if np.isfinite(v) and v > 0 else None + if cat.startswith("pccs"): + band = cat[4:] + v = f(x.get("DetFlux" + band)) + if v: + out["P" + band] = v / 1000.0 + elif cat == "pgcc": + for b in ("857", "545", "353"): + v = f(x.get("F%sC" % b)) + if v: + out["P" + b] = v + else: + for k in ("S140", "S160"): + q = x.get("q_" + k) or "" + v = f(x.get(k)) + if v and (q == "" or (q.isdigit() and int(q) >= 3)): + out[k] = v + return out + + +def colder_fit(fl, beta=1.5): + bands = [(colder_BANDS[k], v) for k, v in fl.items()] + best = None + for T in np.arange(6.0, 60.0, 0.5): + model = np.array([cold_mbb(lam, T, beta) for lam, _ in bands]) + obs = np.array([v for _, v in bands]) + a = np.dot(model, obs) / np.dot(model, model) + chi = np.sum((obs - a * model) ** 2 / obs ** 2) + if best is None or chi < best[0]: + best = (chi, T, a) + return best[1], best[2] + + +def colder_lir(T, a, d_cm, beta=1.5): + nus = np.logspace(10.0, 14.0, 4000) + fnu = a * nus ** (3 + beta) / (np.exp(cold_H * nus / (cold_KB * T)) - 1.0) * 1e-23 + return 4 * math.pi * d_cm ** 2 * np.trapezoid(fnu, nus) + + +def colder_main(): + keep = colder_stars() + print("%d main-sequence Gaia DR3 stars within 50 pc" % len(keep), flush=True) + byid = {s["source_id"]: s for s in keep} + offsets = [(0.5 * math.cos(k * math.pi / 4), 0.5 * math.sin(k * math.pi / 4)) for k in range(8)] + found, chance = {}, {} + for cat, (vz, rad) in colder_CATS.items(): + m = core.xmatch(keep, vz, rad) + for x in m: + fl = colder_flux(x, cat) + if not fl: + continue + o = found.setdefault(x["source_id"], dict(source_id=x["source_id"], fluxes={}, cats={})) + o["cats"][cat] = round(float(x["angDist"]), 1) + for k, v in fl.items(): + o["fluxes"].setdefault(k, v) + n_sh = [] + for dra, dde in offsets: + sh = [dict(source_id=s["source_id"], ra=(float(s["ra"]) + dra / max(math.cos(math.radians(float(s["dec"]))), 0.05)) % 360.0, + dec=max(-89.99, min(89.99, float(s["dec"]) + dde))) for s in keep] + n_sh.append(sum(1 for x in core.xmatch(sh, vz, rad) if colder_flux(x, cat))) + chance[cat] = (float(np.mean(n_sh)), float(np.std(n_sh))) + print(" %s within %.0f arcsec: %d stars against %.1f +- %.1f at shifted positions" + % (cat, rad, sum(1 for o in found.values() if cat in o["cats"]), chance[cat][0], chance[cat][1]), flush=True) + from astropy.coordinates import SkyCoord + import astropy.units as u + out = [] + for sid, o in found.items(): + s = byid[sid] + plx = float(s["parallax"]) + d = 1000.0 / plx * cold_PC + mg = float(s["phot_g_mean_mag"]) + 5 * math.log10(plx / 100.0) + lb = cold_LSUN * 10 ** (-0.4 * (mg + float(np.interp(float(s["bp_rp"]), cold_BP_RP, cold_BC_G)) - 4.74)) + if len(o["fluxes"]) >= 2: + T, a = colder_fit(o["fluxes"]) + else: + T = 15.0 + k, v = next(iter(o["fluxes"].items())) + a = v / cold_mbb(colder_BANDS[k], T, 1.5) + c = SkyCoord(float(s["ra"]) * u.deg, float(s["dec"]) * u.deg) + o.update(g=float(s["phot_g_mean_mag"]), bp_rp=float(s["bp_rp"]), d_pc=round(1000.0 / plx, 1), T=float(T), + frac=float(colder_lir(T, a, d) / lb), glat=round(float(c.galactic.b.deg), 1)) + out.append(o) + out.sort(key=lambda o: -o["frac"]) + for o in out[:30]: + sb = core.simbad("SELECT b.main_id, b.otype, b.sp_type FROM basic AS b JOIN ident AS i ON i.oidref = b.oid " + "WHERE i.id = 'Gaia DR3 %s'" % o["source_id"]) + o["simbad"] = sb[0] if sb else {} + print(" %s (%s, %s) %.1f pc, b %+.1f: %.1f K, fraction %.1e; %s; %s" + % (o["simbad"].get("main_id", o["source_id"]), o["simbad"].get("otype", "?"), o["simbad"].get("sp_type", "?"), + o["d_pc"], o["glat"], o["T"], o["frac"], ", ".join("%s %.2f Jy" % kv for kv in o["fluxes"].items()), + ", ".join("%s %.0f\"" % kv for kv in o["cats"].items())), flush=True) + json.dump(dict(n_stars=len(keep), chance=chance, matches=out), open(os.path.join(cold_HERE, "colder_shells.json"), "w"), + indent=0) + + +def colder_record(): + """Record every star searched with the light fraction a match would carry.""" + d = json.load(open(os.path.join(cold_HERE, "colder_shells.json"))) + stars = colder_stars() + m = {o["source_id"]: o for o in d["matches"]} + ch = d["chance"] + n_by = {c: sum(1 for o in d["matches"] if c in o["cats"]) for c in ch} + core.record_search( + "colder_shells", "Cold shells, 10-30 K", archive="Planck PCCS2 857/545/353 GHz, Planck PGCC, AKARI FIS BSC", + selection="Gaia DR3 main-sequence stars within 50 pc", code=os.path.abspath(__file__), entry="colder", + n_targets=len(stars), params=dict(radius_planck_arcsec=150, radius_fis_arcsec=20, beta=1.5), + null_summary="the same match at eight positions shifted by 0.5 deg: " + ", ".join( + "%s %.1f +- %.1f" % (c, v[0], v[1]) for c, v in ch.items()), + sensitivity="about 1 Jy at 350 um: a 10 K shell carrying a solar luminosity out to 50 pc", + ledger="Cold shells, 10-30 K", + result="matches at the chance rate in every catalogue (%s); %d matched stars would need more than their own " + "luminosity, cold clumps and cirrus in the beam, mostly within 20 deg of the plane" + % (", ".join("%s %d" % (c, n_by[c]) for c in ch), sum(1 for o in d["matches"] if o["frac"] > 1))) + core.clear_targets("colder_shells") + rows = [] + for s_ in stars: + o = m.get(s_["source_id"]) + if o is None: + rows.append(dict(target="gaia_dr3:%s" % s_["source_id"], stat=None, unit="fraction of the star's light at 10-30 K")) + continue + vet = ("more than the star's luminosity: a cloud in the beam" if o["frac"] > 1 else + "a cold clump in the beam" if "pgcc" in o["cats"] else "a compact source at the chance rate") + rows.append(dict(target="gaia_dr3:%s" % s_["source_id"], stat=o["frac"], unit="fraction of the star's light at 10-30 K", + vet=vet, note="%.1f K; %s; %s; b %+.1f" % (o["T"], ", ".join("%s %.2f Jy" % kv for kv in o["fluxes"].items()), + ", ".join("%s %.0f arcsec" % kv for kv in o["cats"].items()), o["glat"]))) + core.record_targets("colder_shells", rows) + print("recorded %d stars, %d matched" % (len(rows), len(m))) + + +def colder_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + colder_record() + else: + colder_main() + + +# -------------------------------------------------------------------------------------------------------------- + +massless_DOC = r"""Light without mass: Gaia photocentre orbits within 100 pc whose dark-companion K the HARPS and HIRES velocities exclude, then WISE colours. + + python -I seti.py infrared massless + python -I seti.py infrared massless record""" + +massless_TYPES = ("Orbital", "OrbitalTargetedSearch", "OrbitalTargetedSearchValidated", "OrbitalAlternative", + "OrbitalAlternativeValidated") +massless_AU_DAY = 1731.456836 + + +def massless_campbell(A, B, F, G): + """Semi-major axis (mas) and inclination (deg) from Thiele-Innes constants.""" + p = math.hypot(A + G, B - F) + q = math.hypot(A - G, B + F) + a = 0.5 * (p + q) + cosi = (p - q) / (p + q) if p + q > 0 else 1.0 + return a, math.degrees(math.acos(max(-1.0, min(1.0, cosi)))) + + +def massless_nu(t, P, tp, e): + M = 2 * np.pi * ((t - tp) / P % 1.0) + E = M.copy() + for _ in range(40): + E = E - (E - e * np.sin(E) - M) / (1 - e * np.cos(E)) + return 2 * np.arctan2(np.sqrt(1 + e) * np.sin(E / 2), np.sqrt(1 - e) * np.cos(E / 2)) + + +def massless_kfit(t, v, ev, P, e, tp): + """Linear fit of offset, K cos w and K sin w at fixed periastron: K, error, jitter.""" + nu = massless_nu(t, P, tp, e) + X = np.vstack([np.ones_like(t), np.cos(nu) + e, -np.sin(nu)]).T + jit = 0.0 + for _ in range(3): + w = 1.0 / (ev ** 2 + jit ** 2) + Xw = X * np.sqrt(w)[:, None] + coef, *_ = np.linalg.lstsq(Xw, v * np.sqrt(w), rcond=None) + res = v - X @ coef + dof = max(len(t) - 3, 1) + jit = math.sqrt(max(np.sum(res ** 2) / dof - np.mean(ev ** 2), 0.0)) + cov = np.linalg.pinv(Xw.T @ Xw) + C, S = coef[1], coef[2] + K = math.hypot(C, S) + sk = math.sqrt(max((C ** 2 * cov[1, 1] + S ** 2 * cov[2, 2] + 2 * C * S * cov[1, 2]) / max(K ** 2, 1e-12), 0.0)) + return K, sk, jit + + +def massless_main(): + from astroquery.vizier import Vizier + q = ("SELECT o.source_id, o.nss_solution_type, o.period, o.period_error, o.t_periastron, o.eccentricity, " + "o.a_thiele_innes, o.b_thiele_innes, o.f_thiele_innes, o.g_thiele_innes, o.parallax AS plx, o.significance, " + "g.ra, g.dec, g.phot_g_mean_mag, g.bp_rp, m.m1, m.m2, m.fluxratio, m.combination_method " + "FROM gaiadr3.nss_two_body_orbit AS o JOIN gaiadr3.gaia_source AS g ON g.source_id = o.source_id " + "LEFT JOIN gaiadr3.binary_masses AS m ON m.source_id = o.source_id " + "WHERE o.parallax > 10 AND o.nss_solution_type IN (%s)" % ",".join("'%s'" % t for t in massless_TYPES)) + orbits = core.gaia(q) + print("%d Gaia DR3 astrometric orbits within 100 pc" % len(orbits), flush=True) + lists = [] + vz = Vizier(columns=["**"], row_limit=-1, timeout=600) + t1 = vz.get_catalogs("J/A+A/636/A74/list")[0] + from astropy.coordinates import SkyCoord + import astropy.units as u + c1 = SkyCoord(t1["RAJ2000"], t1["DEJ2000"], unit=(u.hourangle, u.deg)) + lists.append(("harps", [str(n) for n in t1["Name"]], c1)) + t2 = vz.get_catalogs("J/AJ/153/208/targets")[0] + ra2, de2 = np.array(t2["_RA"], float), np.array(t2["_DE"], float) + fin = np.isfinite(ra2) & np.isfinite(de2) + c2 = SkyCoord(ra2[fin] * u.deg, de2[fin] * u.deg) + lists.append(("hires", [str(n) for n, k in zip(t2["Name"], fin) if k], c2)) + co = SkyCoord(np.array([float(o["ra"]) for o in orbits]) * u.deg, np.array([float(o["dec"]) for o in orbits]) * u.deg) + matched = {} + for inst, names, cc in lists: + idx, sep, _ = co.match_to_catalog_sky(cc) + for i, (j, s) in enumerate(zip(idx, sep.arcsec)): + if s < 6.0: + matched.setdefault(i, []).append((inst, names[j])) + print("%d orbits with HARPS or HIRES velocities" % len(matched), flush=True) + out = [] + for i, srcs in matched.items(): + o = orbits[i] + P, e, tp = float(o["period"]), float(o["eccentricity"] or 0.0), float(o["t_periastron"]) + 2457389.0 + a0, inc = massless_campbell(*(float(o[k + "_thiele_innes"]) for k in "abfg")) + plx = float(o["plx"]) + a1 = a0 / plx + Kp = 2 * math.pi * a1 * math.sin(math.radians(inc)) / (P * math.sqrt(1 - e * e)) * massless_AU_DAY * 1000.0 + t, v, ev = [], [], [] + for inst, name in srcs: + if inst == "harps": + r = vz.query_constraints(catalog="J/A+A/636/A74/rvbank", Name=name) + if r: + r = r[0] + good = np.isfinite(np.array(r["RVdrs"], float)) + t += list(np.array(r["BJD"], float)[good]) + vv = np.array(r["RVdrs"], float)[good] + v += list(vv - np.median(vv) if len(vv) else vv) + ev += list(np.array(r["e_RVdrs"], float)[good]) + else: + r = vz.query_constraints(catalog="J/AJ/153/208/table1", Name=name) + if r: + r = r[0] + vv = np.array(r["RV"], float) + t += list(np.array(r["BJD"], float)) + v += list(vv - np.median(vv)) + ev += list(np.array(r["e_RV"], float)) + t, v, ev = np.array(t), np.array(v), np.array(ev) + if len(t) < 8: + continue + ev = np.where(np.isfinite(ev) & (ev > 0), ev, np.nanmedian(ev[ev > 0]) if np.any(ev > 0) else 2.0) + K0, s0, jit = massless_kfit(t, v, ev, P, e, tp) + kmax = 0.0 + for ph in np.linspace(0, 1, 48, endpoint=False): + K, sk, _ = massless_kfit(t, v, ev, P, e, tp + ph * P) + kmax = max(kmax, K + 3 * sk) + rec = dict(source_id=o["source_id"], type=o["nss_solution_type"], P=P, e=e, a0_mas=a0, inc=inc, plx=plx, + K_pred=Kp, K_at_gaia_phase=K0, sK=s0, K_max3=kmax, jitter=jit, n_rv=len(t), + span_d=float(t.max() - t.min()), rv=[s[0] + ":" + s[1] for s in srcs], g=float(o["phot_g_mean_mag"]), + m1=o.get("m1"), m2=o.get("m2"), fluxratio=o.get("fluxratio"), method=o.get("combination_method"), + ra=float(o["ra"]), dec=float(o["dec"])) + out.append(rec) + excl = [r for r in out if r["K_max3"] < 0.3 * r["K_pred"] and r["span_d"] > 0.5 * r["P"]] + print("%d orbits with 8 or more velocities; %d whose velocities allow under 0.3 of the predicted K at any phase" + % (len(out), len(excl)), flush=True) + for r in excl: + w = dark_wise(r["ra"], r["dec"]) + r["wise"] = w + sb = core.simbad("SELECT b.main_id, b.otype, b.sp_type FROM basic AS b JOIN ident AS i ON i.oidref = b.oid " + "WHERE i.id = 'Gaia DR3 %s'" % r["source_id"]) + r["simbad"] = sb[0] if sb else {} + for r in sorted(out, key=lambda r: r["K_max3"] / max(r["K_pred"], 1e-9))[:25]: + print(" %s %s (%s): P %.1f d, a0 %.2f mas, i %.0f, predicted K %.0f m/s; velocities %d over %.0f d allow %.1f m/s " + "(%.2f of predicted), K at Gaia's phase %.1f +- %.1f, jitter %.1f; %s" + % (r.get("simbad", {}).get("main_id", "Gaia DR3 " + str(r["source_id"])), r["type"], ",".join(r["rv"]), r["P"], + r["a0_mas"], r["inc"], r["K_pred"], r["n_rv"], r["span_d"], r["K_max3"], r["K_max3"] / r["K_pred"], + r["K_at_gaia_phase"], r["sK"], r["jitter"], + ("W3 %s W4 %s" % (r["wise"].get("w3mpro"), r["wise"].get("w4mpro"))) if r.get("wise") else ""), flush=True) + json.dump(out, open(core.results("massless_orbits.json"), "w"), indent=0, default=str) + + +wdcold_DOC = r"""Cold W3/W4 excess at white dwarfs within 100 pc with W1 and W2 photospheric, against shifted-position chance matches. + + python -I seti.py infrared wdcold + python -I seti.py infrared wdcold record""" + + +def wdcold_bb_ratio(lam_um, teff, lam_ref_um=0.62): + """Black-body F_nu(lam)/F_nu(lam_ref).""" + def bnu(lam): + nu = 2.998e14 / lam + x = 6.626e-34 * nu / (1.381e-23 * teff) + return nu ** 3 / math.expm1(min(x, 700.0)) + return bnu(lam_um) / bnu(lam_ref_um) + + +def wdcold_main(): + from astroquery.vizier import Vizier + v = Vizier(columns=["GaiaEDR3", "RA_ICRS", "DE_ICRS", "Plx", "pmRA", "pmDE", "Pwd", "Gmag", "TeffH", "TeffHe"], + column_filters={"Plx": ">10", "Pwd": ">0.75"}, row_limit=-1, timeout=600) + t = v.get_catalogs("J/MNRAS/508/3877/maincat")[0] + rows = [] + for r in t: + try: + ra, de = float(r["RA_ICRS"]), float(r["DE_ICRS"]) + pmra, pmde = float(r["pmRA"] or 0), float(r["pmDE"] or 0) + except (TypeError, ValueError): + continue + ra10 = ra - pmra / 3.6e6 * 5.5 / max(math.cos(math.radians(de)), 0.05) + de10 = de - pmde / 3.6e6 * 5.5 + teff = r["TeffH"] if r["TeffH"] is not np.ma.masked else r["TeffHe"] + rows.append(dict(source_id=str(r["GaiaEDR3"]), ra=ra10, dec=de10, plx=float(r["Plx"]), + g=float(r["Gmag"]) if r["Gmag"] is not np.ma.masked else np.nan, + teff=float(teff) if teff is not np.ma.masked else np.nan)) + print("%d white dwarfs within 100 pc" % len(rows), flush=True) + + def match(rr): + m = core.xmatch(rr, "II/328/allwise", 3.0) + best = {} + for x in m: + if x["source_id"] not in best or float(x["angDist"]) < float(best[x["source_id"]]["angDist"]): + best[x["source_id"]] = x + return best + w = match(rows) + shifted = [dict(r, ra=r["ra"] + 30 / 3600.0 / max(math.cos(math.radians(r["dec"])), 0.05)) for r in rows] + w_null = match(shifted) + zp = {"W1": (3.4, 309.54), "W2": (4.6, 171.787), "W3": (12.0, 31.674), "W4": (22.0, 8.363)} + + def judge(r, x): + out = {} + g_jy = 3631.0 * 10 ** (-0.4 * r["g"]) if np.isfinite(r["g"]) else np.nan + for b, (lam, f0) in zp.items(): + try: + mag, err = float(x[b + "mag"]), float(x["e_" + b + "mag"]) + except (TypeError, ValueError, KeyError): + continue + f = f0 * 10 ** (-0.4 * mag) + ef = f * 0.921 * err + pred = g_jy * wdcold_bb_ratio(lam, r["teff"]) if np.isfinite(r["teff"]) else np.nan + out[b] = dict(f=f, ef=ef, pred=pred, z=(f - pred) / ef if ef > 0 and np.isfinite(pred) else np.nan) + return out + cands, n_w3 = [], 0 + for r in rows: + x = w.get(r["source_id"]) + if x is None: + continue + j = judge(r, x) + cold = any(j.get(b, {}).get("z", -1) >= 3 for b in ("W3", "W4")) + warm = any(j.get(b, {}).get("z", -1) >= 3 for b in ("W1", "W2")) + n_w3 += int("W3" in j and j["W3"]["f"] > 3 * j["W3"]["ef"]) + if cold and not warm: + cands.append(dict(r, sep=float(x["angDist"]), bands={b: {k: float(v) for k, v in d.items()} for b, d in j.items()}, + allwise=x.get("AllWISE"))) + null_cold = 0 + for r in shifted: + x = w_null.get(r["source_id"]) + if x is None: + continue + j = judge(r, x) + if any(j.get(b, {}).get("z", -1) >= 3 for b in ("W3", "W4")) and not any(j.get(b, {}).get("z", -1) >= 3 for b in ("W1", "W2")): + null_cold += 1 + print("%d matched to AllWISE within 3 arcsec, %d with a W3 detection; cold excess without near-infrared excess: %d, " + "against %d at positions shifted by 30 arcsec" % (len(w), n_w3, len(cands), null_cold), flush=True) + for c in sorted(cands, key=lambda c: -max(c["bands"].get("W3", {}).get("z", 0), c["bands"].get("W4", {}).get("z", 0)))[:25]: + sb = core.simbad("SELECT b.main_id, b.otype FROM basic AS b JOIN ident AS i ON i.oidref = b.oid WHERE i.id = 'Gaia DR3 %s'" + % c["source_id"]) + c["simbad"] = sb[0] if sb else {} + print(" %s (%s) %.1f pc, %.0f K, sep %.1f\": %s" % (c["simbad"].get("main_id", c["source_id"]), c["simbad"].get("otype", "?"), + 1000 / c["plx"], c["teff"], c["sep"], + ", ".join("%s %.2g mJy (pred %.2g, z %.1f)" % (b, d["f"] * 1e3, d["pred"] * 1e3, d["z"]) + for b, d in c["bands"].items())), flush=True) + json.dump(dict(n=len(rows), matched=len(w), w3=n_w3, cold=cands, null=null_cold), open(core.results("wd_cold_excess.json"), "w"), + indent=0, default=str) + + +wdcold_VETS = { + "5934185854227111808": "an extended AllWISE source 2.5 arcsec off, in the Galactic plane (b -2.1)", + "3455921181049073280": "the 12 um flux is a flat patch over 30 arcsec with no point source at the star (b +3.6): cirrus in the beam", + "2229875964145781504": "W3 in 1 of 38 single exposures", + "1859440674157056128": "W3 in 2 of 21 single exposures", + "5219215228420645248": "AllWISE flags the W3 flux as an optical ghost", +} + + +def wdcold_record(): + d = json.load(open(core.results("wd_cold_excess.json"))) + core.record_search( + "wd_cold_excess", "Cold excess around white dwarfs", archive="Gentile Fusillo et al. 2021 (J/MNRAS/508/3877); AllWISE", + selection="white dwarfs within 100 pc with P_WD above 0.75", code=os.path.abspath(__file__), entry="wdcold", + n_targets=d["n"], params=dict(radius_arcsec=3.0, sigma=3.0), + null_summary="the same match 30 arcsec away: %d" % d["null"], + sensitivity="a 300 K enclosure carrying a white dwarf's whole luminosity at about 20 pc", + ledger="Cold excess around white dwarfs", + result="%d of %d matched white dwarfs exceed their photosphere in W3 or W4 at 3 sigma with W1 and W2 photospheric; the " + "strongest are an extended source in the Galactic plane, a W3 optical ghost, single-exposure W3 detections and " + "LSPM J0543+3637, whose 12 um flux is cirrus with no point source at the star" % (len(d["cold"]), d["matched"])) + core.clear_targets("wd_cold_excess") + rows = [] + for c in d["cold"]: + z = max(c["bands"].get("W3", {}).get("z", 0), c["bands"].get("W4", {}).get("z", 0)) + rows.append(dict(target="gaia_dr3:%s" % c["source_id"], stat=z, unit="sigma of the W3 or W4 excess over the photosphere", + vet=wdcold_VETS.get(c["source_id"]), + note="%.1f pc, %.0f K, %.1f arcsec" % (1000 / c["plx"], c["teff"], c["sep"]))) + core.record_targets("wd_cold_excess", rows) + print("recorded %d" % len(rows)) + + +def wdcold_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + wdcold_record() + else: + wdcold_main() + + +missingflux_DOC = r"""Missing bolometric flux in Kepler giants: Gaia luminosity below the seismic 4 pi R^2 sigma T^4, against the excess tail. + + python -I seti.py infrared missingflux [record] [--ruwe-max 1.4] [--plx-snr 5] [--blend-lsun 3] [--blend-numax 150]""" + + +def missingflux_main(record=False, ruwe_max=1.4, plx_snr=5.0, blend_lsun=3.0, blend_numax=150.0): + from astroquery.vizier import Vizier + yu = Vizier(row_limit=-1, columns=["KIC", "Teff", "NoCorR", "numax"], timeout=900).get_catalogs("J/ApJS/236/42/giants")[0] + b2 = Vizier(row_limit=-1, columns=["KIC", "Lum"], timeout=900).get_catalogs("J/AJ/159/280/table2")[0] + b1 = Vizier(row_limit=-1, columns=["KIC", "plx", "e_plx", "RUWE", "Ncomp"], timeout=900).get_catalogs("J/AJ/159/280/table1")[0] + B2 = {int(r["KIC"]): r for r in b2} + B1 = {int(r["KIC"]): r for r in b1} + + def f(x): + try: + return float(x) + except (TypeError, ValueError): + return float("nan") + rows = [] + for r in yu: + k = int(r["KIC"]) + if k not in B2 or k not in B1: + continue + R, T, logL = f(r["NoCorR"]), f(r["Teff"]), f(B2[k]["Lum"]) # log10(L/Lsun) + if not (R > 0 and T > 0 and np.isfinite(logL)): + continue + ok = f(B1[k]["RUWE"]) < ruwe_max and f(B1[k]["plx"]) / f(B1[k]["e_plx"]) > plx_snr and not f(B1[k]["Ncomp"]) > 1 + rows.append(dict(kic=k, R=R, T=T, L=10 ** logL, ratio=10 ** logL / (R * R * (T / 5772.0) ** 4), ok=ok, numax=f(r["numax"]))) + good = [x for x in rows if x["ok"] and x["ratio"] > 0] + lr = np.log10([x["ratio"] for x in good]) + med = float(np.median(lr)) + s = float(1.4826 * np.median(np.abs(lr - med))) + z = (lr - med) / s + counts = {t: (int(np.sum(z < -t)), int(np.sum(z > t))) for t in (3, 4, 5, 6)} + print("%d clean giants; log10(L_Gaia/L_seismic) median %+.3f, robust spread %.3f dex" % (len(good), med, s)) + for t, (lo, hi) in counts.items(): + print(" deficit beyond %d sigma: %d; excess beyond %d sigma: %d" % (t, lo, t, hi)) + blends = [x for x, zz in zip(good, z) if zz < -6 and x["L"] < blend_lsun and x["numax"] < blend_numax] + print(" of the deficits beyond 6 sigma, %d have a dwarf's luminosity (below %g Lsun) and a giant's numax (below %g uHz)" % (len(blends), blend_lsun, blend_numax)) + if not record: + return + core.record_search( + "missing_flux_giants", "Missing bolometric flux", archive="Yu et al. 2018 (J/ApJS/236/42); Berger et al. 2020 (J/AJ/159/280)", + selection="Kepler red giants, single, RUWE below %g, parallax S/N above %g" % (ruwe_max, plx_snr), code=os.path.abspath(__file__), entry="missingflux", + n_targets=len(good), params=dict(radius="NoCorR", ruwe_max=ruwe_max, plx_snr=plx_snr, blend_lsun=blend_lsun, blend_numax=blend_numax), + null_summary="the excess side of the same distribution: %s" % ", ".join("%d sigma %d/%d" % (t, a, b) for t, (a, b) in counts.items()), + sensitivity="a deficit of %.0f per cent at 3 sigma" % (100 * (1 - 10 ** (-3 * s))), + ledger="Missing bolometric flux", + result="deficits as common as excesses at every threshold (beyond 4 sigma %d against %d); the extreme deficits have a dwarf's " + "luminosity and a giant's oscillations: background giants in foreground dwarfs' apertures" % counts[4]) + core.clear_targets("missing_flux_giants") + core.record_targets("missing_flux_giants", [dict(target="kic:%d" % x["kic"], stat=float(zz), unit="z of log10(L_Gaia/L_seismic)", + vet=("a dwarf's luminosity with a giant's numax: a background giant in the aperture" + if zz < -6 and x["L"] < blend_lsun and x["numax"] < blend_numax else None)) + for x, zz in zip(good, z)]) + print("recorded") + + +massless_VETS = { + "HD 80883": "a companion 0.6-0.7 arcsec away (WDS 09197-5929, found 2021) blends with the star in Gaia's window", + "HD 163441": "a companion 0.5 arcsec away (WDS 17558+1148 Aa,Ab, found 2022) blends with the star in Gaia's window", + "HD 105113B": "4 arcsec from HD 105113 A, 2.2 mag brighter (WDS 12061-3258 AB)", + "HD 217850": "RUWE 35 and a period beyond Gaia DR3's 34-month baseline: a long-period companion the velocities show as an 87 m/s drift", + "HD 223238": "a 61.3-day period beside Gaia's 63-day scanning-law precession, RUWE 1.19, no companion within 4 arcsec brighter than 17.5 mag", +} + + +def massless_record(): + """Record each orbit's allowed K over the predicted dark-companion K with vets.""" + d = json.load(open(core.results("massless_orbits.json"))) + excl = [r for r in d if r["K_max3"] < 0.3 * r["K_pred"]] + core.record_search( + "massless_orbits", "Light without mass", archive="Gaia DR3 nss_two_body_orbit; HARPS RVBank (Trifonov et al. 2020); " + "HIRES (Butler et al. 2017); AllWISE", selection="astrometric orbits within 100 pc of stars with 8 or more velocities", + code=os.path.abspath(__file__), entry="massless", n_targets=len(d), + params=dict(k_ratio=0.3, sigma=3, phases=48), + null_summary="the velocities' own fit at every periastron phase of the orbit's period and eccentricity", + sensitivity="velocity amplitudes of 6 m/s to a few km/s at the orbit's period", + ledger="Light without mass", + result="%d of %d orbits have velocities that allow under 0.3 of the predicted amplitude; the close companions of HD 80883, " + "HD 163441 and HD 105113B, a long-period companion of HD 217850, HD 223238's scanning-law period and two stars " + "whose velocities scatter by 0.5-0.9 km/s; none has warm W3 excess" % (len(excl), len(d))) + core.clear_targets("massless_orbits") + rows = [] + for r in d: + name = r.get("simbad", {}).get("main_id", "") if isinstance(r.get("simbad"), dict) else "" + name = " ".join(name.split()) + vet = massless_VETS.get(name) + if vet is None and r["K_max3"] < 0.3 * r["K_pred"] and r["jitter"] > 300: + vet = "velocities scatter by %.0f m/s: blended lines of a double star" % r["jitter"] + rows.append(dict(target="gaia_dr3:%s" % r["source_id"], stat=r["K_max3"] / r["K_pred"], + unit="largest velocity amplitude allowed over the dark-companion prediction", vet=vet, + note="%s %s, P %.1f d, a0 %.2f mas, predicted K %.0f m/s, allowed %.1f m/s from %d velocities over %.0f d" + % (name or "", r["type"], r["P"], r["a0_mas"], r["K_pred"], r["K_max3"], r["n_rv"], r["span_d"]))) + core.record_targets("massless_orbits", rows) + print("recorded %d orbits, %d excluded by their velocities" % (len(rows), len(excl))) + + +def massless_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + massless_record() + else: + massless_main() + + +# -------------------------------------------------------------------------------------------------------------- + +vasco_DOC = r"""VASCO vanished POSS I sources with warm infrared counterparts: red W1-W2, off the ecliptic, fixed red CatWISE source, no Legacy Surveys source to r 24. + + python -I seti.py infrared vasco fetch + python -I seti.py infrared vasco select""" + +vasco_ROOT = os.environ.get("VASCO_ROOT", core.data("vasco")) +vasco_HERE = core.RESULTS +vasco_SVO = "http://svocats.cab.inta-csic.es/%s/cs.php?RA=180.000000&DEC=0.000000&SR=180.000000&VERB=2&format=ascii" +vasco_EPS = math.radians(23.4392911) + + +def vasco_fetch(): + os.makedirs(vasco_ROOT, exist_ok=True) + for cat in ("vanish-possi", "vanish-neowise", "vanish-onlyir"): + b = urllib.request.urlopen(urllib.request.Request(vasco_SVO % cat, headers=core.UA), + timeout=1800).read() + open(os.path.join(vasco_ROOT, cat + ".txt"), "wb").write(b) + print(cat, b.count(b"\n") - 1, "rows") + + +def vasco_load(cat): + t = [ln for ln in open(os.path.join(vasco_ROOT, cat + ".txt"), encoding="utf-8", errors="replace").read().splitlines() + if ln.strip()] + head = t[0].lstrip("#").split(",") + return [dict(zip(head, ln.split(","))) for ln in t[1:]] + + +def vasco_ecl_lat(ra, dec): + a, d = math.radians(ra), math.radians(dec) + return math.degrees(math.asin(math.sin(d) * math.cos(vasco_EPS) - math.cos(d) * math.sin(vasco_EPS) * math.sin(a))) + + +def vasco_red_rows(): + out = [] + for r in vasco_load("vanish-neowise"): + q = r.get("ph_qual") or "UU" + w1, w2, s2 = num(r["w1mpro"]), num(r["w2mpro"]), num(r["w2sigmpro"]) + if w2 is None or s2 is None or s2 >= 0.2 or q[1:2] not in ("A", "B"): + continue + if q[0] in ("A", "B") and w1 is not None and w1 - w2 <= 1.5: + continue + out.append(dict(src="neowise", ra=float(r["RA"]), dec=float(r["DEC"]), w1=w1, w2=w2, q=q)) + for r in vasco_load("vanish-onlyir"): + c1, c2 = num(r["W1mproPM_CATWISE"]), num(r["W2mproPM_CATWISE"]) + if c2 is not None and (c1 is None or c1 - c2 > 1.5): + out.append(dict(src="onlyir", ra=float(r["RA"]), dec=float(r["DEC"]), w1=c1, w2=c2, q="catwise")) + return out + + +def vasco_legacy(ra, dec): + """Legacy Surveys sources within 30 arcsec with separations, or a string outside DR10 and DR9.""" + for table in ("ls_dr10.tractor", "ls_dr9.tractor"): + q = ("SELECT ra, dec, type, mag_r, mag_z FROM %s WHERE q3c_radial_query(ra, dec, %.6f, %.6f, %.6f) = 't'" + % (table, ra, dec, 30.0 / 3600)) + try: + rows = core.datalab(q) + except Exception as e: + return "query failed: " + str(e)[:60] + if rows and "ra" in rows[0]: + for x in rows: + x["sep"] = math.hypot((float(x["ra"]) - ra) * math.cos(math.radians(dec)), float(x["dec"]) - dec) * 3600 + return rows + return "outside the Legacy Surveys footprint" + + +def vasco_select(): + rows = vasco_red_rows() + off = [r for r in rows if abs(vasco_ecl_lat(r["ra"], r["dec"])) > 20.0] + print("%d red infrared-only counterparts (W2 S/N 5, W1-W2 above 1.5 or W1 undetected); %d beyond 20 deg of the " + "ecliptic" % (len(rows), len(off))) + for i, r in enumerate(off): + r["source_id"] = str(i) + cw = {} + for k in range(0, len(off), 5000): + for m in core.xmatch(off[k:k + 5000], "II/365/catwise", 3.0): + if m["source_id"] not in cw or float(m["angDist"]) < float(cw[m["source_id"]]["angDist"]): + cw[m["source_id"]] = m + fixed = [] + for r in off: + m = cw.get(r["source_id"]) + if not m: + continue + w1, w2 = num(m.get("W1mproPM")), num(m.get("W2mproPM")) + pmra, pmde = num(m.get("pmRA")), num(m.get("pmDE")) + epm = num(m.get("e_pmRA")) or 1.0 + pm = math.hypot(pmra or 0, pmde or 0) * 1000.0 if pmra is not None else None + if w2 is None or (w1 is not None and w1 - w2 <= 1.5): + continue + if pm is not None and pm > 100 and pm > 3 * epm * 1000.0: + continue + fixed.append(dict(r, cw_name=m.get("Name"), cw_w1=w1, cw_w2=w2, pm_mas=pm, sep=float(m["angDist"]))) + print("%d with a fixed CatWISE2020 counterpart within 3 arcsec that is itself red (W1-W2 above 1.5)" % len(fixed)) + left = [] + for r in fixed: + r["ls"] = vasco_legacy(r["ra"], r["dec"]) + if not isinstance(r["ls"], list): + left.append(r) + elif not [x for x in r["ls"] if x["sep"] <= 2.0 and (num(x["mag_r"]) or 99) < 24]: + left.append(r) + print("%d with no Legacy Surveys source brighter than r = 24 within 2 arcsec (or outside its footprint)" % len(left)) + for r in left: + print(" %s %10.5f %+9.5f (beta %+.1f): NEOWISE/IR W1 %s W2 %s (%s); CatWISE %s W1 %s W2 %s, pm %s mas/yr; %s" + % (r["src"], r["ra"], r["dec"], vasco_ecl_lat(r["ra"], r["dec"]), r["w1"], r["w2"], r["q"], r["cw_name"], + r["cw_w1"], r["cw_w2"], "%.0f" % r["pm_mas"] if r["pm_mas"] is not None else "-", + r["ls"] if isinstance(r["ls"], str) else "no Legacy Surveys source to r = 24 within 2 arcsec (%d within 30)" + % len(r["ls"]))) + json.dump(dict(red=len(rows), off=len(off), fixed=fixed, left=left), open(os.path.join(vasco_HERE, "vasco_ir.json"), "w"), + indent=1, default=str) + + +def vasco_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "select")) + a = p.parse_args() + {"fetch": vasco_fetch, "select": vasco_select}[a.mode]() + + +def vasco_cli(): + quiet_warnings() + vasco_main() + + +# -------------------------------------------------------------------------------------------------------------- + +spherex_DOC = r"""SPHEREx 0.75-5 um spectra of candidates by PSF fit on byte-range blocks, against matched controls at 2-3, 3-4 and 4-5 um. + + python -I seti.py infrared spherex spec SOURCE_ID ... | @FILE (SPHX_OUT, SPHX_THREADS) + python -I seti.py infrared spherex controls [--targets CSV --col COLUMN] [--out JSON] [--threads N] [--top 15] [--radius 1.5] + python -I seti.py infrared spherex compare [--targets sphx_targets.json] [--table CSV --idcol COLUMN] + python -I seti.py infrared spherex fitexcess [--targets JSON] + python -I seti.py infrared spherex blends [--targets JSON] (Legacy Surveys deblended W1 and W2 of each star)""" + +spherex_HERE = core.RESULTS +spherex_SPHX = os.environ.get("SPHX_OUT", os.path.join(spherex_HERE, "sphx")) +spherex_TARGETS = os.path.join(spherex_HERE, "sphx_targets.json") +# Project Hephaistos candidates and W26 +spherex_HEPHAISTOS = {"A": "3496509309189181184", "B": "4843191593270342656", "C": "4649396037451459712", + "D": "2660349163149053824", "E": "3190232820489766656", "F": "2956570141274256512", + "G": "2644370304260053376", "H3a": "2437221214075471744", "H3b": "3854090071297359616", + "H3c": "651765552072217216", "W26": "2981818948336660224"} +spherex_EDGES = np.r_[np.arange(0.75, 2.5, 0.1), np.arange(2.5, 5.01, 0.25)] +spherex_RANGES = ((2.0, 3.0), (3.0, 4.0), (4.0, 5.0)) + + +def spherex_gaia(query): + """Gaia rows with retries; empty when the archive keeps failing.""" + for attempt in range(4): + try: + return core.gaia(query) + except Exception: + time.sleep(15 * (attempt + 1)) + return [] + + +# -------------------------------------------------------------------------------------------------------------- spec + + +def spherex_track(r): + """Position of a Gaia DR3 row at an MJD along its proper motion.""" + ra0, dec0 = float(r["ra"]), float(r["dec"]) + pmra, pmdec = float(r.get("pmra") or 0), float(r.get("pmdec") or 0) + + def at(mjd): + dt = (float(mjd) - 57388.5) / 365.25 # J2016.0 + return ra0 + pmra / 3.6e6 * dt / np.cos(np.radians(dec0)), dec0 + pmdec / 3.6e6 * dt + return at + + +def spherex_measure(row, at): + """One image's measurement: wavelength, flux, error (mJy), time, detector; None off detector or flagged.""" + ra, dec = at(row["t"]) + try: + px = core.spherex_pixels(row["uri"], ra, dec) + except Exception as e: + return e + m = science.spherex_point_pixels(px) if px is not None else None + return None if m is None else dict(m, t=row["t"], band=row["band"]) + + +def spherex_star(sid, at, out_dir, threads=8, most=1500): + """Measure one star in every (or most) SPHEREx images, writing out_dir/SID.csv.""" + path = os.path.join(out_dir, sid + ".csv") + if os.path.exists(path): + return "%s: already measured" % sid + t0 = time.time() + rows = sorted(core.spherex_images(*at(61000.0)), key=lambda r: float(r["t"])) + if len(rows) > most: + rows = [rows[int(i)] for i in np.linspace(0, len(rows) - 1, most)] + with ThreadPoolExecutor(threads) as ex: + res = list(ex.map(lambda r: spherex_measure(r, at), rows)) + errs = [r for r in res if isinstance(r, Exception)] + good = sorted((r for r in res if isinstance(r, dict)), key=lambda r: r["wave"]) + if not rows or len(errs) > 0.2 * len(rows): + why = Counter("%s: %s" % (type(e).__name__, str(e).split(".fits")[-1].strip(" :")[:80]) for e in errs) + return "%s: %d of %d images failed at the archive (%s); not written" % ( + sid, len(errs), len(rows), "; ".join("%d %s" % (v, k) for k, v in why.most_common(3)) if errs + else "no image list") + with open(path + ".tmp", "w", newline="") as fh: + wr = csv.DictWriter(fh, fieldnames=["wave", "flux", "err", "t", "band"]) + wr.writeheader() + for r in good: + wr.writerow(r) + os.replace(path + ".tmp", path) + return "%s: %d images, %d measurements, %d failed, %.0f s" % (sid, len(rows), len(good), len(errs), + time.time() - t0) + + +def spherex_spec_main(argv): + os.makedirs(spherex_SPHX, exist_ok=True) + ids = [] + for x in argv: + ids += open(x[1:]).read().split() if x.startswith("@") else [x] + for sid in ids: + if os.path.exists(os.path.join(spherex_SPHX, sid + ".csv")): + print("%s: already measured" % sid, flush=True) + continue + r = spherex_gaia("SELECT ra, dec, pmra, pmdec FROM gaiadr3.gaia_source WHERE source_id = %s" % sid) + if not r: + print("%s: Gaia query failed" % sid, flush=True) + continue + print(spherex_star(sid, spherex_track(r[0]), spherex_SPHX, int(os.environ.get("SPHX_THREADS", "8"))), + flush=True) + + +# ---------------------------------------------------------------------------------------------------------- controls + + +def spherex_controls_main(argv): + ap = argparse.ArgumentParser(prog="seti.py infrared spherex controls") + ap.add_argument("--targets") + ap.add_argument("--col", default="Gaia DR3 source ID") + ap.add_argument("--out", default=spherex_TARGETS) + ap.add_argument("--threads", type=int, default=1) + ap.add_argument("--top", type=int, default=15, help="Gaia candidates tried per target") + ap.add_argument("--radius", type=float, default=1.5, help="search radius in degrees") + a = ap.parse_args(argv) + targets = spherex_HEPHAISTOS + if a.targets: + targets = {"T%02d" % i: r[a.col] for i, r in enumerate(csv.DictReader(open(a.targets, encoding="utf-8")))} + out = json.load(open(a.out)) if os.path.exists(a.out) else {} + lock = threading.Lock() + + def one(item): + lab, sid = item + if lab in out and len(out[lab]["controls"]) >= 2: + return + t = spherex_gaia("SELECT ra, dec, phot_g_mean_mag, bp_rp, parallax FROM gaiadr3.gaia_source WHERE source_id=%s" % sid) + if not t: + print(lab, sid, "Gaia query failed", flush=True) + return + ra, dec, g, c, p = (float(t[0][k]) for k in ("ra", "dec", "phot_g_mean_mag", "bp_rp", "parallax")) + cs = spherex_gaia("SELECT TOP %d source_id, ra, dec FROM gaiadr3.gaia_source WHERE " + "CONTAINS(POINT('ICRS',ra,dec),CIRCLE('ICRS',%f,%f,%f))=1 AND source_id<>%s AND ABS(bp_rp-%f)<0.12 " + "AND ABS(phot_g_mean_mag-%f)<0.8 AND ruwe<1.4 AND parallax BETWEEN %f AND %f" + % (a.top, ra, dec, a.radius, sid, c, g, min(p / 1.6, p * 1.6), max(p / 1.6, p * 1.6))) + ctrl = [] + for x in cs: + try: + w = core.allwise_nearest(float(x["ra"]), float(x["dec"]), 6.0) + except Exception: + continue + if w is not None and float(w["w3snr"] or 0) < 3 and str(w["cc_flags"])[:2] == "00": + ctrl.append(x["source_id"]) + if len(ctrl) >= 2: + break + with lock: + out[lab] = dict(sid=sid, g=g, bp_rp=c, plx=p, controls=ctrl) + json.dump(out, open(a.out, "w"), indent=1) + print(lab, sid, "G %.2f bp_rp %.2f plx %.2f" % (g, c, p), "controls", ctrl, flush=True) + + with ThreadPoolExecutor(a.threads) as ex: + list(ex.map(one, targets.items())) + + +# ----------------------------------------------------------------------------------------------------------- compare + + +def spherex_binned(sid): + path = os.path.join(spherex_SPHX, sid + ".csv") + if not os.path.exists(path): + return None + r = list(csv.DictReader(open(path))) + w = np.array([float(x["wave"]) for x in r]) + f = np.array([float(x["flux"]) for x in r]) + e = np.array([float(x["err"]) for x in r]) + ok = np.isfinite(f) & np.isfinite(e) & (e > 0) + w, f, e = w[ok], f[ok], e[ok] + cen, val, err = [], [], [] + for lo, hi in zip(spherex_EDGES[:-1], spherex_EDGES[1:]): + m = (w >= lo) & (w < hi) + if m.sum() >= 3: + cen.append(0.5 * (lo + hi)) + val.append(np.median(f[m])) + err.append(1.25 * np.std(f[m]) / np.sqrt(m.sum())) + cen, val, err = np.array(cen), np.array(val), np.array(err) + sel = (cen > 1.0) & (cen < 1.6) + if sel.sum() < 2: + return None + norm = np.median(val[sel]) + return cen, val / norm, err / norm + + +def spherex_excess(tb, cbs): + """Weighted mean excess over the control mean per range: [(value, error)].""" + cen = tb[0] + ctrl = np.array([np.interp(cen, c[0], c[1]) for c in cbs]) + cerr = np.array([np.interp(cen, c[0], c[2]) for c in cbs]) + cm = ctrl.mean(0) + ce = np.sqrt((cerr ** 2).sum(0)) / len(cbs) + ratio = tb[1] / cm + rerr = ratio * np.hypot(tb[2] / tb[1], ce / cm) + out = [] + for lo, hi in spherex_RANGES: + m = (cen > lo) & (cen < hi) & np.isfinite(rerr) & (rerr > 0) + if m.sum() == 0: + out.append((np.nan, np.nan)) + continue + wgt = 1.0 / rerr[m] ** 2 + out.append((float(np.sum((ratio[m] - 1.0) * wgt) / wgt.sum()), float(1.0 / np.sqrt(wgt.sum())))) + return out, cen, ratio + + +def spherex_fitexcess_main(argv): + """Temperature and fractional luminosity of each excess from 1.6-5 um ratios, with a 3.3 um PAH residual test.""" + p = argparse.ArgumentParser(prog="seti.py infrared spherex fitexcess") + p.add_argument("--targets", default=spherex_TARGETS) + a = p.parse_args(argv) + T = json.load(open(a.targets)) + teff = {r["source_id"]: float(r["teff_gspphot"]) for r in core.gaia( + "SELECT source_id, teff_gspphot FROM gaiadr3.astrophysical_parameters WHERE source_id IN (%s)" + % ",".join(t["sid"] for t in T.values())) if r["teff_gspphot"] not in ("", None)} + h, c, k = 6.62607015e-34, 2.99792458e8, 1.380649e-23 + + def bl(lam_um, temp): + x = h * c / (lam_um * 1e-6 * k * temp) + return 1.0 / ((lam_um ** 5) * np.expm1(np.minimum(x, 700))) + grid = np.geomspace(150, 3000, 80) + out = [] + for lab, t in T.items(): + tb = spherex_binned(t["sid"]) + cb = [x for x in (spherex_binned(cc) for cc in t["controls"]) if x is not None] + if tb is None or not cb: + continue + ex, cen, ratio = spherex_excess(tb, cb) + ctrl = np.array([np.interp(cen, cc[0], cc[1]) for cc in cb]) + cerr = np.array([np.interp(cen, cc[0], cc[2]) for cc in cb]) + rerr = ratio * np.hypot(tb[2] / tb[1], np.sqrt((cerr ** 2).sum(0)) / len(cb) / ctrl.mean(0)) + m = (cen > 1.6) & np.isfinite(rerr) & (rerr > 0) + x, y, e = cen[m], ratio[m] - 1.0, np.maximum(rerr[m], 0.01) + ts = teff.get(t["sid"], 5500.0) + best = None + for temp in grid: + shape = (ts / temp) ** 4 * bl(x, temp) / bl(x, ts) + w = 1 / e ** 2 + f = float(np.sum(w * y * shape) / np.sum(w * shape ** 2)) + chi = float(np.sum(w * (y - f * shape) ** 2)) + if best is None or chi < best[0]: + best = (chi, temp, f, shape) + chi, temp, f, shape = best + pah = (x > 3.2) & (x < 3.5) + resid = float(np.sum((y - f * shape)[pah] / e[pah] ** 2) / np.sum(1 / e[pah] ** 2)) if pah.any() else float("nan") + rerr_p = float(1 / np.sqrt(np.sum(1 / e[pah] ** 2))) if pah.any() else float("nan") + out.append(dict(lab=lab, sid=t["sid"], teff=ts, T=float(temp), f=f, chi2=chi, dof=int(m.sum() - 2), + pah=resid, pah_err=rerr_p, ex45=ex[2][0], ex45_err=ex[2][1])) + print("%-4s %s Teff %4.0f: excess at %4.0f K holding %.1e of the star's light, chi2 %.1f for %d; 3.3 um residual " + "%+.3f +- %.3f" % (lab, t["sid"], ts, temp, f, chi, m.sum() - 2, resid, rerr_p)) + json.dump(out, open(os.path.join(os.path.dirname(a.targets), "ch53_fitexcess.json"), "w"), indent=1) + sig = [o for o in out if o["ex45"] / o["ex45_err"] >= 3] + tt = np.array([o["T"] for o in sig]) + print("%d with a 4-5 um excess at 3 sigma: excess temperature below 400 K in %d, 400-1000 K in %d, above 1000 K in %d" + % (len(sig), int((tt < 400).sum()), int(((tt >= 400) & (tt <= 1000)).sum()), int((tt > 1000).sum()))) + + +spherex_W2_SIGMA = 6.4 / 2.3548 # arcsec, W2 PSF sigma + + +def spherex_ls_sources(ra, dec, radius=8.0): + """Legacy Surveys model sources within radius with W1 and W2 forced fluxes.""" + w = radius / 3600.0 + wr = w / max(np.cos(np.radians(dec)), 0.01) + for tab in ("ls_dr10.tractor", "ls_dr9.tractor"): + rows = core.datalab( + "SELECT ra, dec, type, ref_cat, ref_id, flux_r, flux_w1, flux_w2, flux_ivar_w1, flux_ivar_w2, shape_r FROM %s " + "WHERE ra BETWEEN %.7f AND %.7f AND dec BETWEEN %.7f AND %.7f" % (tab, ra - wr, ra + wr, dec - w, dec + w)) + if rows: + for r in rows: + r["sep"] = float(np.hypot((float(r["ra"]) - ra) * np.cos(np.radians(dec)), float(r["dec"]) - dec) * 3600) + return tab, [r for r in rows if r["sep"] <= radius] + return None, [] + + +spherex_UNWISE_PX = 2.75 # arcsec per unWISE pixel + + +def spherex_unwise_shift(ra, dec, radius=3.0): + """unWISE W2-minus-W1 centroid offset (arcsec, east, north) with errors, or None.""" + w = radius / 3600.0 + wr = w / max(np.cos(np.radians(dec)), 0.01) + rows = core.datalab("SELECT ra, dec, x_w1, x_w2, y_w1, y_w2, dx_w1, dx_w2, dy_w1, dy_w2, flux_w1, flux_w2 " + "FROM unwise_dr1.object WHERE ra BETWEEN %.7f AND %.7f AND dec BETWEEN %.7f AND %.7f" + % (ra - wr, ra + wr, dec - w, dec + w)) + best = None + for r in rows: + try: + vals = [float(r[k]) for k in ("x_w1", "x_w2", "y_w1", "y_w2", "dx_w1", "dx_w2", "dy_w1", "dy_w2")] + except (TypeError, ValueError): + continue + if not all(np.isfinite(vals)): + continue + sep = np.hypot((float(r["ra"]) - ra) * np.cos(np.radians(dec)), float(r["dec"]) - dec) * 3600 + if best is None or sep < best[0]: + best = (sep, vals) + if best is None: + return None + x1, x2, y1, y2, ex1, ex2, ey1, ey2 = best[1] + # unWISE x grows west, y north + return dict(east=-(x2 - x1) * spherex_UNWISE_PX, north=(y2 - y1) * spherex_UNWISE_PX, + err=float(np.hypot(np.hypot(ex1, ex2), np.hypot(ey1, ey2)) / np.sqrt(2) * spherex_UNWISE_PX)) + + +def spherex_blends_main(argv): + """Each target's W1 and W2 light divided among Legacy Surveys sources within 8 arcsec: own ratio against controls and neighbours' share.""" + p = argparse.ArgumentParser(prog="seti.py infrared spherex blends") + p.add_argument("--targets", default=spherex_TARGETS) + a = p.parse_args(argv) + T = json.load(open(a.targets)) + fits = {} + fp = os.path.join(os.path.dirname(a.targets), "ch53_fitexcess.json") + if os.path.exists(fp): + fits = {o["sid"]: o for o in json.load(open(fp))} + + def measure(sid): + g = spherex_gaia("SELECT ra, dec FROM gaiadr3.gaia_source WHERE source_id = %s" % sid) + if not g: + return None + ra, dec = float(g[0]["ra"]), float(g[0]["dec"]) + shift = spherex_unwise_shift(ra, dec) + tab, rows = spherex_ls_sources(ra, dec) + if not rows: + return dict(sid=sid, tab=None, shift=shift) + star = [r for r in rows if str(r.get("ref_id") or "") == str(sid)] or \ + sorted([r for r in rows if r["sep"] < 1.5], key=lambda r: r["sep"])[:1] + if not star: + return dict(sid=sid, tab=tab, star=None) + s = star[0] + f1, f2 = float(s["flux_w1"] or "nan"), float(s["flux_w2"] or "nan") + e2 = 1 / np.sqrt(float(s["flux_ivar_w2"])) if float(s["flux_ivar_w2"] or 0) > 0 else float("nan") + nb = [r for r in rows if r is not s] + share = sum(float(r["flux_w2"] or 0) * np.exp(-r["sep"] ** 2 / (4 * spherex_W2_SIGMA ** 2)) for r in nb) + near = min(nb, key=lambda r: r["sep"]) if nb else None + return dict(sid=sid, tab=tab, shift=shift, w1=f1, w2=f2, w2_err=e2, ratio=f2 / f1 if f1 > 0 else float("nan"), + neighbour_share=share / f2 if f2 > 0 else float("nan"), n_neighbours=len(nb), + nearest=dict(sep=round(near["sep"], 2), type=near["type"], flux_r=near["flux_r"], + flux_w2=near["flux_w2"]) if near else None) + out, ctrl_shifts = [], [] + for lab, t in T.items(): + m = measure(t["sid"]) or dict(sid=t["sid"], tab=None, shift=None) + cs = [x for x in (measure(c) for c in t["controls"]) if x] + ctrl_shifts += [x["shift"] for x in cs if x.get("shift")] + fx = fits.get(t["sid"], {}) + rec = dict(m, lab=lab, covered="ratio" in m, spherex_ex45=fx.get("ex45"), spherex_T=fx.get("T")) + sh = m.get("shift") + txt = "W2-W1 centroid %+.3f E %+.3f N +- %.3f arcsec" % (sh["east"], sh["north"], sh["err"]) if sh else \ + "no unWISE match" + if "ratio" in m: + cr = [x["ratio"] for x in cs if "ratio" in x and np.isfinite(x["ratio"]) and x["ratio"] > 0.1] + rec["control_ratio"] = float(np.median(cr)) if cr else float("nan") + rec["own_w2_excess"] = m["ratio"] / rec["control_ratio"] - 1 if cr else float("nan") + txt += ("; own W2/W1 %.3f vs controls %.3f, excess the star holds %+.2f; neighbours within 8\" %d, their " + "share of a fit at the star %.2f" % (m["ratio"], rec["control_ratio"], rec["own_w2_excess"], + m["n_neighbours"], m["neighbour_share"])) + else: + txt += "; outside the Legacy Surveys" + out.append(rec) + print("%-4s %s: %s; SPHEREx 4-5 um excess %s" % (lab, t["sid"], txt, "%.2f" % fx["ex45"] + if fx.get("ex45") is not None else "--")) + # controls' offsets set the floor + c_mag = np.array([np.hypot(s["east"], s["north"]) for s in ctrl_shifts]) + floor = float(np.percentile(c_mag, 68)) if len(c_mag) else 0.0 + print("controls: %d W2-W1 centroid offsets, 68th percentile %.3f arcsec, largest %.3f" + % (len(c_mag), floor, c_mag.max() if len(c_mag) else float("nan"))) + for r in out: + s = r.get("shift") + if s: + r["shift_sig"] = float(np.hypot(s["east"], s["north"]) / np.hypot(s["err"], floor)) + big = [r for r in out if r.get("shift_sig", 0) > 3] + print("%d targets whose W2 centroid stands 3 sigma or more from their W1 centroid: %s" + % (len(big), ", ".join("%s %.2f\" (%.1f sigma)" % (r["lab"], np.hypot(r["shift"]["east"], r["shift"]["north"]), + r["shift_sig"]) for r in big))) + json.dump(dict(targets=out, control_shift_68=floor), open(os.path.join( + os.path.dirname(a.targets), os.path.basename(a.targets).replace(".json", "") + "_blends.json"), "w"), indent=1) + + +def spherex_compare_main(argv): + p = argparse.ArgumentParser(prog="seti.py infrared spherex compare") + p.add_argument("--targets", default=spherex_TARGETS) + p.add_argument("--table") + p.add_argument("--idcol", default="Gaia DR3 source ID") + a = p.parse_args(argv) + T = json.load(open(a.targets)) + pred = {} + if a.table: + for r in csv.DictReader(open(a.table, encoding="utf-8")): + try: + pred[r[a.idcol]] = 10 ** (0.4 * (float(r["hatW2_pred"]) - float(r["mag_w2_vg"]))) - 1.0 + except (KeyError, ValueError): + pass + rows, null = [], [] + for lab, t in T.items(): + tb = spherex_binned(t["sid"]) + cb = [x for x in (spherex_binned(c) for c in t["controls"]) if x is not None] + if tb is None or not cb: + print("%-4s %s: spectra not ready (target %s, %d controls)" % (lab, t["sid"], tb is not None, len(cb))) + continue + ex, cen, ratio = spherex_excess(tb, cb) + if len(cb) >= 2: + null.append(spherex_excess(cb[0], [cb[1]])[0]) + rows.append(dict(lab=lab, sid=t["sid"], n_ctrl=len(cb), ex=ex, w2=pred.get(t["sid"]))) + line = "; ".join("%.0f-%.0f um %+.3f +- %.3f (%.1f sigma)" % (lo, hi, v, e, v / e) for (lo, hi), (v, e) in zip(spherex_RANGES, ex)) + w2 = "; WISE W2 excess %+.3f" % pred[t["sid"]] if t["sid"] in pred else "" + print("%-4s %s (%d controls): %s%s" % (lab, t["sid"], len(cb), line, w2)) + print(" ratio by bin: " + " ".join("%.2f:%.2f" % (c, r) for c, r in zip(cen, ratio) if c > 2.4)) + if null: + nv = np.array([[v for v, e in n] for n in null]) + ne = np.array([[e for v, e in n] for n in null]) + tv = np.array([[v for v, e in r["ex"]] for r in rows]) + te = np.array([[e for v, e in r["ex"]] for r in rows]) + for k, (lo, hi) in enumerate(spherex_RANGES): + # control-pair scatter beyond formal errors added to every error + mad = 1.4826 * np.nanmedian(np.abs(nv[:, k] - np.nanmedian(nv[:, k]))) + floor = float(np.sqrt(max(mad ** 2 - np.nanmedian(ne[:, k]) ** 2, 0.0))) if len(nv) >= 5 else 0.0 + tz = tv[:, k] / np.hypot(te[:, k], floor) + nz = nv[:, k] / np.hypot(ne[:, k], floor) + for r, z in zip(rows, tz): + r.setdefault("z_floor", []).append(float(z)) + print("%.0f-%.0f um: systematic floor %.3f from %d control pairs; targets above 3 sigma %d of %d, control " + "pairs %d of %d; median target excess %+.3f" % (lo, hi, floor, len(nv), np.sum(tz > 3), len(tz), + np.sum(nz > 3), len(nz), np.nanmedian(tv[:, k]))) + json.dump(rows, open(os.path.splitext(a.targets)[0] + "_compare.json", "w"), indent=1) + + +spherex_MODES = {"spec": spherex_spec_main, "controls": spherex_controls_main, "compare": spherex_compare_main, + "fitexcess": spherex_fitexcess_main, "blends": spherex_blends_main} + + +# -------------------------------------------------------------------------------------------------------------- + +volume_DOC = r"""SPHEREx spectra of every unsaturated star within a distance: unresolved lines and 3-5 um excesses against neighbours, vetted for blends and companions. + + python -I seti.py infrared volume sample [--plx 40] [--ks 9.5] [--gfaint 15] + python -I seti.py infrared volume spec [--part K/N] [--threads 8] (SPHX_VOLUME, default results/sphx_volume) + python -I seti.py infrared volume lines [--z 5] [--half 3] + python -I seti.py infrared volume excess [--k 15] + python -I seti.py infrared volume vet + python -I seti.py infrared volume record""" + +volume_SAMPLE = core.results("sphx_volume.json") +volume_DIR = os.environ.get("SPHX_VOLUME", core.results("sphx_volume")) + + +def volume_sample_main(argv): + ap = argparse.ArgumentParser(prog="seti.py infrared volume sample") + ap.add_argument("--plx", type=float, default=40.0) + ap.add_argument("--ks", type=float, default=9.5) + ap.add_argument("--gfaint", type=float, default=15.0) + a = ap.parse_args(argv) + rows = spherex_gaia("SELECT source_id, ra, dec, parallax, pmra, pmdec, phot_g_mean_mag AS g, bp_rp, ruwe " + "FROM gaiadr3.gaia_source WHERE parallax > %g AND parallax_over_error > 10" % a.plx) + by = {r["source_id"]: r for r in rows} + ids = list(by) + for i in range(0, len(ids), 400): + q = ("SELECT x.source_id, t.j_m, t.h_m, t.ks_m, t.ph_qual FROM gaiadr3.tmass_psc_xsc_best_neighbour AS x " + "JOIN gaiadr3.tmass_psc_xsc_join AS j ON j.clean_tmass_psc_xsc_oid = x.clean_tmass_psc_xsc_oid " + "JOIN gaiadr1.tmass_original_valid AS t ON t.designation = j.original_psc_source_id " + "WHERE x.source_id IN (%s)" % ",".join(ids[i:i + 400])) + for r in spherex_gaia(q): + by[r["source_id"]].update(r) + keep = [r for r in rows if (r.get("ks_m") and float(r["ks_m"]) >= a.ks) + or (not r.get("ks_m") and r["g"] and float(r["g"]) > a.gfaint)] + json.dump(keep, open(volume_SAMPLE, "w"), indent=0) + print("%d Gaia DR3 sources with parallax above %g mas; %d kept (Ks %g or fainter, or no 2MASS match and G above " + "%g)" % (len(rows), a.plx, len(keep), a.ks, a.gfaint)) + + +def volume_spec_main(argv): + ap = argparse.ArgumentParser(prog="seti.py infrared volume spec") + ap.add_argument("--part", default="0/1", help="K/N: every Nth star of the sample from the Kth") + ap.add_argument("--threads", type=int, default=8) + a = ap.parse_args(argv) + k, n = (int(v) for v in a.part.split("/")) + os.makedirs(volume_DIR, exist_ok=True) + sample = json.load(open(volume_SAMPLE)) + for r in sample[k::n]: + print(spherex_star(r["source_id"], spherex_track(r), volume_DIR, a.threads), flush=True) + + +# SPHEREx resolving power per detector and H, He lines (um) +volume_R = {"SPHEREx-D1": 39.0, "SPHEREx-D2": 41.0, "SPHEREx-D3": 41.0, "SPHEREx-D4": 35.0, "SPHEREx-D5": 110.0, + "SPHEREx-D6": 130.0} +volume_KNOWN = (0.9549, 1.0052, 1.0833, 1.0941, 1.2822, 1.8756, 1.9451, 2.1661, 2.6259, 3.0392, 3.2970, 3.7406, + 4.0523, 4.6538) + + +def volume_read(sid): + p = os.path.join(volume_DIR, sid + ".csv") + if not os.path.exists(p): + return None + r = list(csv.DictReader(open(p))) + if len(r) < 50: + return None + a = {k: np.array([float(x[k]) for x in r]) for k in ("wave", "flux", "err", "t")} + a["band"] = np.array([x["band"] for x in r]) + ok = np.isfinite(a["flux"]) & np.isfinite(a["err"]) & (a["err"] > 0) + return {k: v[ok] for k, v in a.items()} + + +def volume_line_scan(a): + """Stacked line significance at every half-resolution step, whole span and each half.""" + out = [] + tmid = np.median(a["t"]) + for b, R in volume_R.items(): + m = a["band"] == b + if m.sum() < 20: + continue + w, f, e, t = a["wave"][m], a["flux"][m], a["err"][m], a["t"][m] + o = np.argsort(w) + w, f, e, t = w[o], f[o], e[o], t[o] + cont = np.array([np.median(f[np.abs(w - x) < 1.5 * x / R]) for x in w]) + z = (f - cont) / e + s = 1.4826 * np.median(np.abs(z - np.median(z))) + z = z / max(s, 1.0) + # one-sided running median within 1.5 resolution elements of detector ends + lam = w[0] * (1 + 1.5 / R) + while lam < w[-1] * (1 - 1.5 / R): + on = np.abs(w - lam) < 0.5 * lam / R + if on.sum() >= 4: + h1, h2 = on & (t < tmid), on & (t >= tmid) + out.append(dict(band=b, lam=float(lam), n=int(on.sum()), z=float(z[on].sum() / np.sqrt(on.sum())), + z1=float(z[h1].sum() / np.sqrt(h1.sum())) if h1.sum() >= 2 else float("nan"), + z2=float(z[h2].sum() / np.sqrt(h2.sum())) if h2.sum() >= 2 else float("nan"))) + lam += 0.5 * lam / R + return out + + +def volume_lines_main(argv): + ap = argparse.ArgumentParser(prog="seti.py infrared volume lines") + ap.add_argument("--z", type=float, default=5.0) + ap.add_argument("--half", type=float, default=3.0) + a = ap.parse_args(argv) + sample = json.load(open(volume_SAMPLE)) + hits, null, n = [], [], 0 + for r in sample: + d = volume_read(r["source_id"]) + if d is None: + continue + n += 1 + for q in volume_line_scan(d): + for sign, keep in ((1, hits), (-1, null)): + if sign * q["z"] >= a.z and sign * q["z1"] >= a.half and sign * q["z2"] >= a.half: + keep.append(dict(q, star=r["source_id"], sign=sign)) + # a feature in three or more stars is instrumental or zodiacal + for q in hits + null: + R = volume_R[q["band"]] + q["shared"] = len({o["star"] for o in hits + null if o["star"] != q["star"] + and abs(o["lam"] - q["lam"]) < q["lam"] / R}) + q["known"] = any(abs(q["lam"] - k) < k / R for k in volume_KNOWN) + left = [q for q in hits if q["shared"] < 3 and not q["known"]] + nleft = [q for q in null if q["shared"] < 3 and not q["known"]] + print("%d stars; emission-like features at z %.0f with both halves at %.0f: %d (%d after shared and known lines), " + "absorption-like %d (%d)" % (n, a.z, a.half, len(hits), len(left), len(null), len(nleft))) + for q in sorted(left, key=lambda q: -q["z"])[:40]: + print(" %s %.4f um (%s, %d measurements) z %.1f, halves %.1f and %.1f" + % (q["star"], q["lam"], q["band"][-2:], q["n"], q["z"], q["z1"], q["z2"])) + json.dump(dict(hits=hits, null=null), open(core.results("sphx_volume_lines.json"), "w")) + + +def volume_binned(d, sel=None): + """Median binned flux normalised over 1.0-1.6 um.""" + w, f = (d["wave"], d["flux"]) if sel is None else (d["wave"][sel], d["flux"][sel]) + cen, val = [], [] + for lo, hi in zip(spherex_EDGES[:-1], spherex_EDGES[1:]): + m = (w >= lo) & (w < hi) + if m.sum() >= 3: + cen.append(0.5 * (lo + hi)) + val.append(np.median(f[m])) + cen, val = np.array(cen), np.array(val) + norm = np.median(val[(cen > 1.0) & (cen < 1.6)]) if ((cen > 1.0) & (cen < 1.6)).sum() >= 2 else np.nan + return cen, val / norm + + +def volume_excess_main(argv): + ap = argparse.ArgumentParser(prog="seti.py infrared volume excess") + ap.add_argument("--k", type=int, default=15) + a = ap.parse_args(argv) + sample = {r["source_id"]: r for r in json.load(open(volume_SAMPLE))} + spec, halves = {}, {} + for sid in sample: + d = volume_read(sid) + if d is None: + continue + c, v = volume_binned(d) + if not np.isfinite(v).any(): + continue + tmid = np.median(d["t"]) + spec[sid] = np.interp(spherex_EDGES[:-1] + np.diff(spherex_EDGES) / 2, c, v, left=np.nan, right=np.nan) + halves[sid] = [np.interp(spherex_EDGES[:-1] + np.diff(spherex_EDGES) / 2, *volume_binned(d, s), left=np.nan, + right=np.nan) for s in (d["t"] < tmid, d["t"] >= tmid)] + cen = spherex_EDGES[:-1] + np.diff(spherex_EDGES) / 2 + ids = [s for s in spec if sample[s].get("bp_rp") and sample[s].get("g")] + feat = np.array([[float(sample[s]["bp_rp"]), (float(sample[s]["g"]) + 5 * np.log10(float(sample[s]["parallax"]) / 100.0)) + / 2.0] for s in ids]) + S = np.array([spec[s] for s in ids]) + + def excess(x, ref, lo, hi): + m = (cen > lo) & (cen < hi) & np.isfinite(x) & np.isfinite(ref) + return float(np.mean(x[m] / ref[m] - 1.0)) if m.sum() >= 2 else np.nan + rows = [] + for i, s in enumerate(ids): + d = np.hypot(*(feat - feat[i]).T) + d[i] = np.inf + nb = np.argsort(d)[:a.k] + ref = np.nanmedian(S[nb], axis=0) + row = dict(star=s, bp_rp=feat[i][0]) + for lo, hi in ((3.0, 4.0), (4.0, 5.0)): + ex = excess(S[i], ref, lo, hi) + # neighbours' own excesses set the scatter + own = [excess(S[j], np.nanmedian(S[[k for k in nb if k != j]], axis=0), lo, hi) for j in nb] + sd = 1.4826 * np.nanmedian(np.abs(np.array(own) - np.nanmedian(own))) + row["ex_%g" % lo] = ex + row["z_%g" % lo] = ex / sd if sd > 0 else np.nan + row["halves_%g" % lo] = [excess(h, ref, lo, hi) / sd if sd > 0 else np.nan for h in halves[s]] + rows.append(row) + for lo in (3.0, 4.0): + k = "z_%g" % lo + z = np.array([r[k] for r in rows]) + print("%.0f-%.0f um: %d stars, robust spread of z %.2f; above 5 with both halves above 3: %d" % ( + lo, lo + 1, np.isfinite(z).sum(), 1.4826 * np.nanmedian(np.abs(z - np.nanmedian(z))), + sum(1 for r in rows if r[k] > 5 and all(h > 3 for h in r["halves_%g" % lo])))) + for r in sorted((r for r in rows if r[k] > 5), key=lambda r: -r[k])[:20]: + print(" %s BP-RP %.2f excess %+.3f z %.1f halves %s" % (r["star"], r["bp_rp"], r["ex_%g" % lo], r[k], + ["%.1f" % h for h in r["halves_%g" % lo]])) + json.dump(rows, open(core.results("sphx_volume_excess.json"), "w"), default=float) + + +# stars whose 3-5 um excess the literature explains, with sources +volume_EXPLAINED = { + "2660358032257156736": "G 29-38, a dusty white dwarf: silicate emission (Reach et al. 2005)", +} + + +def volume_blends(sid, row, radius=12.0): + """Gaia neighbours within two SPHEREx pixels able to carry the 3-5 um light.""" + ra, dec, g = float(row["ra"]), float(row["dec"]), float(row["g"]) + out = [] + for x in spherex_gaia("SELECT source_id, ra, dec, phot_g_mean_mag AS g, bp_rp, parallax FROM gaiadr3.gaia_source " + "WHERE 1=CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f))" + % (ra, dec, radius / 3600.0)): + if str(x["source_id"]) == sid or not x["g"]: + continue + gx, c = float(x["g"]), float(x["bp_rp"]) if x["bp_rp"] else 0.0 + if gx < g + 3.0 or (c > 2.5 and gx < g + 6.0): + out.append("%.1f arcsec, G %.1f, BP-RP %.2f" % (sep_arcsec(ra, dec, float(x["ra"]), float(x["dec"])), gx, c)) + return out + + +def volume_vet_main(argv): + """Vet excess stars against blends, RUWE and literature readings.""" + sample = {r["source_id"]: r for r in json.load(open(volume_SAMPLE))} + path = core.results("sphx_volume_excess.json") + rows = json.load(open(path)) + for r in rows: + r.pop("vet", None) + hot = [lo for lo in (3, 4) if r["z_%d" % lo] > 5 and all(h > 3 for h in r["halves_%d" % lo])] + if not hot: + continue + s = sample[r["star"]] + blends = volume_blends(r["star"], s) + if blends: + r["vet"] = "blend: " + "; ".join(blends) + elif s.get("ruwe") and float(s["ruwe"]) > 1.4: + r["vet"] = "unresolved companion: RUWE %.2f" % float(s["ruwe"]) + elif r["star"] in volume_EXPLAINED: + r["vet"] = volume_EXPLAINED[r["star"]] + print("%s BP-RP %.2f z(3-4) %.1f z(4-5) %.1f: %s" % (r["star"], r["bp_rp"], r["z_3"], r["z_4"], + r.get("vet") or "UNEXPLAINED")) + json.dump(rows, open(path, "w"), default=float) + + +def volume_record_main(argv): + rows = json.load(open(core.results("sphx_volume_excess.json"))) + lines = json.load(open(core.results("sphx_volume_lines.json"))) + hot = [r for r in rows if any(r["z_%d" % lo] > 5 and all(h > 3 for h in r["halves_%d" % lo]) for lo in (3, 4))] + left = [r for r in hot if not r.get("vet")] + ll = [q for q in lines["hits"] if q["shared"] < 3 and not q["known"]] + nl = [q for q in lines["null"] if q["shared"] < 3 and not q["known"]] + core.record_search( + "sphx_volume", "SPHEREx spectra of every unsaturated star within 25 pc", archive="SPHEREx images (IRSA)", + selection="Gaia DR3 parallax above 40 mas, Ks 9.5 or fainter or no 2MASS match and G above 15", + code=os.path.abspath(__file__), entry="volume", n_targets=len(rows), + params=dict(line_z=5, line_half=3, excess_z=5, excess_half=3, neighbours=15), + null_summary="%d absorption-like line features past the shared and known-line filters" % len(nl), + sensitivity="3-4 and 4-5 um flux against the 15 nearest stars in colour and absolute magnitude", + ledger="SPHEREx at every star", + result="%d emission-like line features past the filters; %d stars with a 3-5 um excess, %d explained, %d left" + % (len(ll), len(hot), len(hot) - len(left), len(left))) + core.clear_targets("sphx_volume") + core.record_targets("sphx_volume", [dict(target="gaia_dr3:%s" % r["star"], + stat=max(r["z_3"], r["z_4"]) if np.isfinite(max(r["z_3"], r["z_4"])) + else None, unit="3-5 um excess z", vet=r.get("vet")) + for r in rows]) + print("%d stars; %d line features, %d excess stars of which %d explained" % (len(rows), len(ll), len(hot), + len(hot) - len(left))) + + +volume_MODES = {"sample": volume_sample_main, "spec": volume_spec_main, "lines": volume_lines_main, + "excess": volume_excess_main, "vet": volume_vet_main, "record": volume_record_main} + + +def volume_cli(): + quiet_warnings() + if len(sys.argv) < 2 or sys.argv[1] not in volume_MODES: + print(volume_DOC) + sys.exit(2) + volume_MODES[sys.argv[1]](sys.argv[2:]) + + +def spherex_cli(): + quiet_warnings() + if len(sys.argv) < 2 or sys.argv[1] not in spherex_MODES: + print(__doc__) + sys.exit(2) + spherex_MODES[sys.argv[1]](sys.argv[2:]) + + +# -------------------------------------------------------------------------------------------------------------- + +sbf_DOC = r"""Surface-brightness-fluctuation distances beyond other methods in Cosmicflows-4, the far tail against the near. + + python -I seti.py infrared sbf [record] [--sigma 4] [--dmag 0.3] [--group-depth 0.1]""" + +sbf_OTHERS = ("DMsnIa", "DMfp", "DMtf", "DMsnII", "DMtrgb", "DMceph", "DMmas") +sbf_VET = {10123: "NGC 1023: its group's other moduli place it at 2.3 Mpc against its own 10-11 Mpc", + 44182: "M64: the dust lane of the Black Eye over the bulge", 42038: "NGC 4565: an edge-on spiral's dust lane", + 13671: "ESO 358-56: a Fornax galaxy 0.5 mag behind the cluster's group modulus", + 13321: "NGC 1381: an edge-on Fornax S0 0.5 mag behind the cluster's group modulus"} + + +def sbf_fetch(): + p = core.data("cf4_sbf.json") + if not os.path.exists(p): + from astroquery.vizier import Vizier + v = Vizier(row_limit=-1, columns=["**"], timeout=900) + g = v.get_catalogs("J/ApJ/944/94/table2")[0] + grp = v.get_catalogs("J/ApJ/944/94/groups")[0] + + def f(x): + return None if x is np.ma.masked or x is None else float(x) + gal = [dict(pgc=int(r["PGC"]), grp=int(r["1PGC"]), sbf=f(r["DMsbf"]), e_sbf=f(r["e_DMsbf"]), ra=f(r["RAJ2000"]), + dec=f(r["DEJ2000"]), vcmb=f(r["Vcmb"]), **{k: f(r[k]) for k in sbf_OTHERS}, + **{"e_" + k: f(r["e_" + k]) for k in sbf_OTHERS}) for r in g] + groups = {int(r["1PGC"]): dict(n=int(r["Ngal"]), **{k: f(r[k]) for k in ("DMsnIa", "DMfp", "DMtf", "DMsnII")}, + **{"e_" + k: f(r["e_" + k]) for k in ("DMsnIa", "DMfp", "DMtf", "DMsnII")}) for r in grp} + json.dump(dict(gal=gal, groups=groups), open(p, "w")) + return json.load(open(p)) + + +def sbf_main(record=False, sigma=4.0, dmag=0.3, group_depth=0.1): + d = sbf_fetch() + groups = {int(k): v for k, v in d["groups"].items()} + rows = [] + for gl in d["gal"]: + if gl["sbf"] is None or not gl["e_sbf"]: + continue + own = [(gl[k], gl["e_" + k]) for k in sbf_OTHERS if gl[k] is not None and gl["e_" + k]] + src = "galaxy" + if not own: + gr = groups.get(gl["grp"], {}) + own = [(gr[k], math.hypot(gr["e_" + k], group_depth)) for k in ("DMsnIa", "DMfp", "DMtf", "DMsnII") + if gr.get(k) is not None and gr.get("e_" + k)] + src = "group" + if not own: + continue + w = np.array([1 / e ** 2 for _, e in own]) + m = float(np.sum(w * np.array([x for x, _ in own])) / w.sum()) + e = float(1 / math.sqrt(w.sum())) + diff = gl["sbf"] - m + z = diff / math.hypot(gl["e_sbf"], e) + rows.append(dict(pgc=gl["pgc"], ra=gl["ra"], dec=gl["dec"], sbf=gl["sbf"], other=m, diff=diff, z=z, src=src, + methods=[k for k in sbf_OTHERS if gl[k] is not None] if src == "galaxy" else ["group"])) + z = np.array([r["z"] for r in rows]) + far = [r for r in rows if r["z"] > sigma and r["diff"] > dmag] + near = [r for r in rows if r["z"] < -sigma and r["diff"] < -dmag] + print("%d SBF galaxies with another distance (%d in the galaxy, %d through its group); median difference %+.3f mag, " + "robust z scatter %.2f" % (len(rows), sum(r["src"] == "galaxy" for r in rows), sum(r["src"] == "group" for r in rows), + float(np.median([r["diff"] for r in rows])), 1.4826 * float(np.median(np.abs(z - np.median(z)))))) + print("too far (fluctuations too weak) by %g mag at %g sigma: %d; too near: %d" % (dmag, sigma, len(far), len(near))) + for r in sorted(far, key=lambda r: -r["z"]) + sorted(near, key=lambda r: r["z"]): + print(" PGC %d at %.4f %+.4f: SBF %.2f against %.2f (%s %s), %+.2f mag, %+.1f sigma" + % (r["pgc"], r["ra"], r["dec"], r["sbf"], r["other"], r["src"], ",".join(r["methods"]), r["diff"], r["z"])) + json.dump(dict(rows=rows, far=far, near=near), open(core.results("sbf_deficit.json"), "w"), indent=1) + if record: + core.record_search( + "cf4_sbf_deficit", "Surface-brightness-fluctuation deficit", archive="Cosmicflows-4 (J/ApJ/944/94)", + selection="%d galaxies with an SBF modulus and another method in the galaxy or its group" % len(rows), + code=os.path.abspath(__file__), entry="sbf", n_targets=len(rows), params=dict(z=sigma, mag=dmag, group_depth=group_depth), + null_summary="the near tail, where globular clusters and backgrounds push: %d" % len(near), + sensitivity="fluctuations %.0f per cent too weak (%g mag) at %g sigma of the combined errors" % (100 * (1 - 10 ** (-0.4 * dmag)), dmag, sigma), + ledger="Surface-brightness-fluctuation deficit", + result="%d galaxies too far by SBF against %d too near; the far ones %s" + % (len(far), len(near), "; ".join(sbf_VET.get(r["pgc"], "PGC %d" % r["pgc"]) for r in far))) + core.clear_targets("cf4_sbf_deficit") + core.record_targets("cf4_sbf_deficit", [dict( + target="pgc:%d" % r["pgc"], stat=r["z"], unit="SBF minus other moduli, sigma", vet=sbf_VET.get(r["pgc"]), + note="%+.2f mag against %s" % (r["diff"], r["src"] if r["src"] == "group" else ",".join(r["methods"]))) for r in rows]) + print("recorded") + + +udg_DOC = r"""Mid-infrared sources at SMUDGes ultra-diffuse galaxy centroids without Gaia stars, against offset-position chance rates. + + python -I seti.py infrared udg [record] [--radius-arcsec 3] [--star-arcsec 2] [--snr 5] [--w1w2 0.5] [--control-offset-arcsec 60]""" + + +def udg_match(ra, dec, cat, radius): + from astropy.table import Table + from astroquery.xmatch import XMatch + import astropy.units as u + t = Table(dict(idx=np.arange(len(ra)), ra=np.asarray(ra), dec=np.asarray(dec))) + out = [] + for k in range(0, len(t), 5000): + out.append(XMatch.query(cat1=t[k:k + 5000], cat2=cat, max_distance=radius * u.arcsec, colRA1="ra", colDec1="dec")) + from astropy.table import vstack + return vstack(out) if out else None + + +def udg_main(record=False, radius_arcsec=3.0, star_arcsec=2.0, snr=5.0, w1w2=0.5, control_offset_arcsec=60.0): + p = core.data("smudges_dr9.json") + if not os.path.exists(p): + from astroquery.vizier import Vizier + t = Vizier(row_limit=-1, columns=["SMDG", "RAJ2000", "DEJ2000", "Re", "mu0g"], timeout=900).get_catalogs("J/ApJS/267/27/table2")[0] + json.dump([[str(r["SMDG"]), float(r["RAJ2000"]), float(r["DEJ2000"]), num(r["Re"]), num(r["mu0g"])] for r in t], open(p, "w")) + g = json.load(open(p)) + ra = np.array([x[1] for x in g]) + dec = np.array([x[2] for x in g]) + res = {} + for lab, dr in (("udg", 0.0), ("control", control_offset_arcsec)): + rr, dd = ra, dec + dr / 3600.0 + w = udg_match(rr, dd, "vizier:II/328/allwise", radius_arcsec) + s = udg_match(rr, dd, "vizier:I/355/gaiadr3", star_arcsec) + stars = set(int(i) for i in s["idx"]) if s is not None and len(s) else set() + best = {} + for r in w: + i = int(r["idx"]) + if i not in best or r["angDist"] < best[i]["angDist"]: + best[i] = r + det = [] + for i, r in best.items(): + def f(c): + v = r[c] + return None if np.ma.is_masked(v) else float(v) + e3, e4 = f("e_W3mag"), f("e_W4mag") + s3, s4 = (1.0857 / e3 if e3 else None), (1.0857 / e4 if e4 else None) + w1, w2 = f("W1mag"), f("W2mag") + if ((s3 or 0) >= snr or (s4 or 0) >= snr): + det.append(dict(i=i, w1=w1, w2=w2, w3=f("W3mag"), w4=f("W4mag"), s3=s3, s4=s4, sep=float(r["angDist"]), + agn=w1 is not None and w2 is not None and w1 - w2 >= w1w2, star=i in stars)) + clean = [x for x in det if not x["agn"] and not x["star"]] + res[lab] = dict(n=len(g), matched=len(best), det=len(det), clean=clean) + print("%s: %d positions, %d AllWISE sources within %g arcsec, %d at %g sigma in W3 or W4, %d of them neither AGN-coloured " + "nor a Gaia star" % (lab, len(g), len(best), radius_arcsec, len(det), snr, len(clean)), flush=True) + for x in sorted(res["udg"]["clean"], key=lambda x: -max(x["s3"] or 0, x["s4"] or 0))[:20]: + gg = g[x["i"]] + print(" %s %.5f %+.5f Re %s mu0g %s: W1 %s W2 %s W3 %s (%.1f) W4 %s (%s), %.1f arcsec" + % (gg[0], gg[1], gg[2], gg[3], gg[4], x["w1"], x["w2"], x["w3"], x["s3"] or 0, x["w4"], x["s4"], x["sep"])) + json.dump(dict(res=res, ids=[g[x["i"]][0] for x in res["udg"]["clean"]]), open(core.results("udg_waste_heat.json"), "w"), default=str) + if record: + u, c = res["udg"], res["control"] + core.record_search( + "smudges_waste_heat", "Waste heat in ultra-diffuse galaxies", archive="SMUDGes DR9 (J/ApJS/267/27); AllWISE and " + "Gaia DR3 through CDS XMatch", selection="all %d SMUDGes galaxies" % u["n"], code=os.path.abspath(__file__), + entry="udg", n_targets=u["n"], params=dict(radius_arcsec=radius_arcsec, star_arcsec=star_arcsec, snr=snr, w1w2=w1w2, + control_offset_arcsec=control_offset_arcsec), + null_summary="positions %g arcsec away: %d clean W3 or W4 sources" % (control_offset_arcsec, len(c["clean"])), + sensitivity="a W3 or W4 source at %g sigma at the centroid (about 1 mJy at 12 um, 6 mJy at 22 um at 5 sigma)" % snr, + ledger="Waste heat in ultra-diffuse and HI-dark galaxies", + result="%d centroid sources at %g sigma in W3 or W4 that are neither AGN-coloured nor Gaia stars, against %d at " + "the offset positions" % (len(u["clean"]), snr, len(c["clean"]))) + core.clear_targets("smudges_waste_heat") + ids = {x["i"]: x for x in u["clean"]} + core.record_targets("smudges_waste_heat", [dict( + target="smudges:%s" % gg[0], stat=float(max(ids[i]["s3"] or 0, ids[i]["s4"] or 0)) if i in ids else 0.0, + unit="W3 or W4 S/N of a clean centroid source") for i, gg in enumerate(g)]) + print("recorded") + + +debs_DOC = r"""Missing light in DEBCat detached binaries: Gaia G fainter than the summed component luminosities by 0.3 mag at 3 sigma. + + python -I seti.py infrared debs fetch + python -I seti.py infrared debs analyse + python -I seti.py infrared debs record""" + +debs_ROOT = os.environ.get("DEBS_ROOT", core.data("debcat")) +debs_URL = "https://www.astro.keele.ac.uk/jkt/debcat/" +debs_OUT = "debs_missing_flux.json" +debs_TEFF_MAX, debs_DMAX, debs_DEFICIT, debs_RUWE = 8000.0, 1000.0, 0.3, 1.4 +debs_TEFF_BC = ((8000, 0.12), (7200, 0.10), (6500, 0.09), (6000, 0.08), (5800, 0.07), (5500, 0.03), (5000, -0.10), (4500, -0.30), (4000, -0.60), (3500, -1.20), (3000, -2.00), (2800, -2.40)) +# dwarf intrinsic B-V against Teff (Pecaut and Mamajek 2013) +debs_TEFF_BV = ((10000, 0.00), (8500, 0.14), (8000, 0.19), (7500, 0.27), (7000, 0.34), (6500, 0.44), (6000, 0.60), (5800, 0.65), (5500, 0.74), (5000, 0.90), (4500, 1.10), (4000, 1.42), (3500, 1.55), (3000, 1.75)) +debs_AG_PER_EBV = 2.7 + + +def debs_parse(html): + """DEBCat rows: name, period, V, B-V, types and per-component mass, radius, log g, log Teff, log L with errors.""" + import re + + def val(s): + m = re.search(r"[-+]?\d*\.\d+|[-+]?\d+", s or "") + return float(m.group(0)) if m else None + + def lines(c): + return [re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", p)).replace("±", "+-").replace(" ", "").strip() for p in re.split(r"
", c, flags=re.I)] + + def pair(c): + return [(val(p.split("+-")[0]), val(p.split("+-")[1]) if "+-" in p else None) for p in lines(c) if p] + out = [] + for r in re.findall(r"]*>(.*?)", html, re.S): + cells = re.findall(r"]*>(.*?)", r, re.S) + if len(cells) < 10: + continue + name = re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", cells[0])).strip() + V = pair(cells[2]) + out.append(dict(name=name, P=val(cells[1]), V=V[0][0] if V else None, bv=V[1][0] if len(V) > 1 else None, sptype=[s for s in lines(cells[3]) if s], + M=pair(cells[4]), R=pair(cells[5]), logg=pair(cells[6]), logT=pair(cells[7]), logL=pair(cells[8]), feh=pair(cells[9]))) + return out + + +def debs_fetch(): + import re + os.makedirs(debs_ROOT, exist_ok=True) + p = os.path.join(debs_ROOT, "debcat.json") + if not os.path.exists(p): + json.dump(debs_parse(core.get(debs_URL, timeout=120).decode("utf-8", "replace")), open(p, "w"), indent=1) + d = json.load(open(p)) + sp = os.path.join(debs_ROOT, "simbad.json") + got = json.load(open(sp)) if os.path.exists(sp) else {} + greek = {"α": "alf", "β": "bet", "γ": "gam", "δ": "del", "ε": "eps", "ζ": "zet", "η": "eta", "θ": "tet", "ι": "iot", + "κ": "kap", "λ": "lam", "μ": "mu.", "ν": "nu.", "ξ": "ksi", "ο": "omi", "π": "pi.", "ρ": "rho", "σ": "sig", "τ": "tau", + "υ": "ups", "φ": "phi", "χ": "chi", "ψ": "psi", "ω": "ome"} + + def norm(s): + return re.sub(r"\s+", "", s).lower() + + def variants(n): + out = [n, "V* " + n, n.replace("BD +", "BD+").replace("CD -", "CD-").replace("CPD -", "CPD-")] + for k, v in greek.items(): + if k in n: + out = ["* " + n.replace(k, v).replace(" 2 ", "02 "), "* " + n.replace(k, v)] + out + if n.startswith("OGLE"): + out = [n.replace("OGLE-", "OGLE "), n.replace("OGLE ", "OGLE-")] + out + if n.startswith("HV "): + out = ["Cl* NGC 2070 HV " + n[3:]] + out + return out + missing = [x["name"] for x in d if x["name"] not in got] + alts = {norm(v): n for n in missing for v in variants(n)} + keys = sorted({v for n in missing for v in variants(n)}) + for k in range(0, len(keys), 60): + q = ("SELECT i.id AS name, b.main_id, b.ra, b.dec, b.otype, b.sp_type FROM ident i JOIN basic b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'%s'" % x.replace("'", "''") for x in keys[k:k + 60])) + for r in core.simbad(q): + n = alts.get(norm(r["name"])) + if n and n not in got: + got[n] = r + json.dump(got, open(sp, "w"), indent=1) + rows = [dict(source_id=i, ra=float(r["ra"]), dec=float(r["dec"]), name=n) for i, (n, r) in enumerate(got.items()) if r.get("ra") not in (None, "")] + gx = {} + for cat, key in (("I/355/gaiadr3", "gaia"), ("I/355/paramp", "paramp")): + m = core.xmatch(rows, cat, 3.0, id_col="source_id", ra_col="ra", dec_col="dec", timeout=600) + for x in m: + i = int(x["source_id"]) + if i not in gx or key not in gx[i] or float(x["angDist"]) < float(gx[i][key]["angDist"]): + gx.setdefault(i, {})[key] = x + out = {rows[i]["name"]: v for i, v in gx.items()} + json.dump(out, open(os.path.join(debs_ROOT, "gaia.json"), "w"), indent=1) + print("%d systems, %d resolved in SIMBAD, %d with Gaia DR3 within 3 arcsec" % (len(d), len(got), len(out))) + + +def debs_bc(teff): + x, y = zip(*sorted(debs_TEFF_BC)) + return float(np.interp(teff, x, y)) + + +def debs_bv0(teff): + x, y = zip(*sorted(debs_TEFF_BV)) + return float(np.interp(teff, x, y)) + + +def debs_analyse(): + d = json.load(open(os.path.join(debs_ROOT, "debcat.json"))) + gaia = json.load(open(os.path.join(debs_ROOT, "gaia.json"))) + simbad = json.load(open(os.path.join(debs_ROOT, "simbad.json"))) + rows = [] + for s in d: + g = gaia.get(s["name"], {}).get("gaia") + if not g or len(s["logL"]) < 2 or len(s["logT"]) < 2 or any(v[0] is None for v in s["logL"][:2] + s["logT"][:2]): + continue + plx, eplx, G = num(g.get("Plx")), num(g.get("e_Plx")), num(g.get("Gmag")) + if not plx or plx <= 0 or G is None: + continue + pp = gaia[s["name"]].get("paramp") or {} + ag = num(pp.get("AG")) if pp else None + teffs = [10 ** v[0] for v in s["logT"][:2]] + L = [10 ** v[0] for v in s["logL"][:2]] + eL = [math.log(10) * (v[1] or 0.05) * lv for v, lv in zip(s["logL"][:2], L)] + # summed G flux of the components at the distance + mbol = [4.74 - 2.5 * math.log10(lv) for lv in L] + MG = [mb - debs_bc(t) for mb, t in zip(mbol, teffs)] + MG_sum = -2.5 * math.log10(sum(10 ** (-0.4 * m) for m in MG)) + dist = 1000.0 / plx + # extinction: larger of the light-weighted colour excess and Gaia A_G + wts = [10 ** (-0.4 * m) for m in MG] + bv0 = sum(w * debs_bv0(t) for w, t in zip(wts, teffs)) / sum(wts) + ebv = max(0.0, s["bv"] - bv0) if s.get("bv") is not None else None + ag_bv = debs_AG_PER_EBV * ebv if ebv is not None else None + a_g = max(ag or 0.0, ag_bv or 0.0) + e_ag = 0.15 if ag_bv is not None and ag_bv >= (ag or 0.0) else (0.05 if ag is not None else (0.1 if dist < 300 else 0.3)) + G_pred = MG_sum + 5 * math.log10(dist) - 5 + a_g + # errors from luminosities, parallax, correction and extinction + var = sum((1.0857 * e / lv) ** 2 * (lv / sum(L)) ** 2 for e, lv in zip(eL, L)) + (2.1715 * (eplx or 0.1) / plx) ** 2 + 2 * 0.05 ** 2 + e_ag ** 2 + err = math.sqrt(var) + deficit = G - G_pred + ruwe = num(g.get("RUWE")) + rows.append(dict(name=s["name"], main_id=simbad.get(s["name"], {}).get("main_id"), otype=simbad.get(s["name"], {}).get("otype"), P=s["P"], teff=teffs, L=L, dist=dist, plx=plx, + G=G, G_pred=G_pred, ag=ag, ag_bv=ag_bv, bv=s.get("bv"), bv0=bv0, deficit=deficit, err=err, z=deficit / err, hot=max(teffs) > debs_TEFF_MAX, far=dist > debs_DMAX, + ruwe=ruwe, bprp=num(g.get("BP-RP")), astrometric=ruwe is not None and ruwe <= debs_RUWE)) + clean = [r for r in rows if not r["hot"] and not r["far"] and r["astrometric"]] + dz = np.array([r["deficit"] for r in clean]) + print("%d systems with Gaia parallaxes and both components' luminosities; %d cooler than %.0f K within %.0f pc at RUWE %.1f or less: deficit G_obs - G_pred median %+.3f, " + "robust scatter %.3f mag; beyond %+.1f mag at 3 sigma: %d too faint, %d too bright" % (len(rows), len(clean), debs_TEFF_MAX, debs_DMAX, debs_RUWE, np.median(dz), + 1.4826 * np.median(np.abs(dz - np.median(dz))), debs_DEFICIT, + sum(1 for r in clean if r["deficit"] > debs_DEFICIT and r["z"] > 3), sum(1 for r in clean if r["deficit"] < -debs_DEFICIT and r["z"] < -3))) + for r in sorted(clean, key=lambda r: -r["z"])[:15]: + print(" %-20s %s (%s): P %.2f d, Teff %.0f + %.0f K, L %.2f + %.2f, %.0f pc; G %.2f, predicted %.2f (A_G %s, from B-V %s %s); deficit %+.2f +- %.2f (%+.1f sigma); RUWE %s" % ( + r["name"], r["main_id"] or "", r["otype"] or "", r["P"] or 0, r["teff"][0], r["teff"][1], r["L"][0], r["L"][1], r["dist"], r["G"], r["G_pred"], + "%.2f" % r["ag"] if r["ag"] is not None else "-", "%.2f" % r["bv"] if r["bv"] is not None else "-", "%.2f" % r["ag_bv"] if r["ag_bv"] is not None else "-", + r["deficit"], r["err"], r["z"], "%.2f" % r["ruwe"] if r["ruwe"] else "-")) + json.dump(dict(n=len(rows), n_clean=len(clean), median=float(np.median(dz)), scatter=float(1.4826 * np.median(np.abs(dz - np.median(dz)))), rows=rows, + teff_max=debs_TEFF_MAX, dmax=debs_DMAX, deficit=debs_DEFICIT, ruwe=debs_RUWE), open(core.results(debs_OUT), "w"), indent=1) + + +def debs_record(): + d = json.load(open(core.results(debs_OUT))) + clean = [r for r in d["rows"] if not r["hot"] and not r["far"] and r["astrometric"]] + faint = [r for r in clean if r["deficit"] > d["deficit"] and r["z"] > 3] + bright = [r for r in clean if r["deficit"] < -d["deficit"] and r["z"] < -3] + core.record_search( + "debs_missing_flux", "Missing bolometric flux, eclipsing binaries", archive="DEBCat (Southworth); SIMBAD; Gaia DR3 by CDS XMatch", release="DEBCat as served", + selection="detached eclipsing binaries with both components' luminosities, Gaia parallaxes at RUWE %.1f or less, components below %.0f K and within %.0f pc" % (d["ruwe"], d["teff_max"], d["dmax"]), + code=os.path.abspath(__file__), entry="debs", n_targets=len(clean), params=dict(teff_max=d["teff_max"], dmax=d["dmax"], deficit=d["deficit"], ruwe=d["ruwe"], ag_per_ebv=debs_AG_PER_EBV), + null_summary="deficit G_obs - G_pred median %+.3f, robust scatter %.3f mag over %d systems" % (d["median"], d["scatter"], len(clean)), + sensitivity="a deficit of %.1f mag at 3 sigma, 30 per cent of the summed surface emission" % d["deficit"], ledger="Missing bolometric flux", + result="%d systems: %d too faint by %.1f mag at 3 sigma (%s), %d too bright (%s)" % ( + len(clean), len(faint), d["deficit"], ", ".join("%s %+.2f" % (r["name"], r["deficit"]) for r in faint[:8]), len(bright), ", ".join("%s %+.2f" % (r["name"], r["deficit"]) for r in bright[:8]))) + core.clear_targets("debs_missing_flux") + core.record_targets("debs_missing_flux", [dict(target="simbad:" + (r["main_id"] or r["name"]), stat=r["deficit"], unit="G observed minus G predicted from the components' surfaces, mag", + vet=("too faint" if r in faint else ("too bright: third light or blend" if r in bright else "within the spread")) + ("; hot" if r["hot"] else "") + ("; beyond 1 kpc" if r["far"] else "") + + ("" if r["astrometric"] else "; RUWE above %.1f, parallax not trusted" % d["ruwe"]), + note="%s, P %.2f d, %.0f pc, Teff %.0f and %.0f K, deficit %+.2f +- %.2f" % (r["name"], r["P"] or 0, r["dist"], r["teff"][0], r["teff"][1], r["deficit"], r["err"])) for r in d["rows"]]) + print("recorded %d systems" % len(d["rows"])) + + +def debs_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": debs_fetch, "analyse": debs_analyse, "record": debs_record}[mode]() + + +bluefloor_DOC = r"""Point sources bluer than Rayleigh-Jeans in Euclid Q1 (I_E - H_E below -2.3 at 3 sigma), vetted by flags, blending and Gaia colour. + + python -I seti.py infrared bluefloor analyse + python -I seti.py infrared bluefloor record""" + +bluefloor_ROOT = os.environ.get("BLUEFLOOR_ROOT", core.data("euclid_blue")) +bluefloor_OUT = "euclid_bluefloor.json" +bluefloor_LAMBDA = dict(vis=0.72, y=1.08, j=1.37, h=1.77) # pivot wavelengths (um) +bluefloor_CUT = -2.3 + + +def bluefloor_rj(a, b): + """Rayleigh-Jeans F_a/F_b (F_nu proportional to nu^2).""" + return (bluefloor_LAMBDA[b] / bluefloor_LAMBDA[a]) ** 2 + + +def bluefloor_analyse(): + rows = json.load(open(os.path.join(bluefloor_ROOT, "mer_blue.json"))) + out = [] + for r in rows: + f = {b: num(r["flux_%s_%s" % (b, "psf" if b == "vis" else "templfit")]) for b in ("vis", "y", "j", "h")} + e = {b: num(r["fluxerr_%s_%s" % (b, "psf" if b == "vis" else "templfit")]) for b in ("vis", "y", "j", "h")} + if any(v is None or v <= 0 for v in f.values()) or any(v is None or v <= 0 for v in e.values()): + continue + c = -2.5 * math.log10(f["vis"] / f["h"]) + ec = 1.0857 * math.hypot(e["vis"] / f["vis"], e["h"] / f["h"]) + flags = [int(num(r.get("flag_%s" % b)) or 0) for b in ("vis", "y", "j", "h")] + super_rj = f["y"] / f["h"] > bluefloor_rj("y", "h") and f["j"] / f["h"] > bluefloor_rj("j", "h") and f["vis"] / f["y"] > bluefloor_rj("vis", "y") + out.append(dict(object_id=r["object_id"], tileid=r["tileid"], ra=float(r["ra"]), dec=float(r["dec"]), flux=f, err=e, colour=c, e_colour=ec, + snr_min=min(f[b] / e[b] for b in f), flags=flags, point_like=num(r.get("point_like_prob")), spurious=num(r.get("spurious_prob")), + blended=num(r.get("blended_prob")), variable=int(num(r.get("variable_flag")) or 0), mu_max=num(r.get("mu_max")), mumax_minus_mag=num(r.get("mumax_minus_mag")), + gaia=str(r.get("gaia_id") or "").strip() or None, super_rj=super_rj, + candidate=c + 3 * ec < bluefloor_CUT and super_rj and not any(flags) and (num(r.get("blended_prob")) or 0) < 0.1 and not int(num(r.get("variable_flag")) or 0))) + cols = np.array([x["colour"] for x in out]) + cand = [x for x in out if x["candidate"]] + print("%d point sources at S/N above 10 in VIS, Y, J and H with I_E - H_E below the Rayleigh-Jeans -1.95: colour median %.2f, 1st percentile %.2f; %d below %.1f, %d of them at 3 sigma with NISP fluxes " + "falling faster than nu^2, clean flags, unblended and not variable" % (len(out), np.median(cols), np.percentile(cols, 1), int(np.sum(cols < bluefloor_CUT)), bluefloor_CUT, len(cand))) + if cand: + pos = [dict(source_id=i, ra=x["ra"], dec=x["dec"]) for i, x in enumerate(cand)] + gaia = {} + for m in core.xmatch(pos, "I/355/gaiadr3", 2.0, id_col="source_id", ra_col="ra", dec_col="dec", timeout=600): + i = int(m["source_id"]) + if i not in gaia or float(m["angDist"]) < float(gaia[i]["angDist"]): + gaia[i] = m + for i, x in enumerate(cand): + g = gaia.get(i) + x["gaia_match"] = dict(source=g.get("Source"), G=num(g.get("Gmag")), bprp=num(g.get("BP-RP")), plx=num(g.get("Plx")), pm=math.hypot(num(g.get("pmRA")) or 0, num(g.get("pmDE")) or 0), sep=float(g["angDist"])) if g else None + x["explained"] = ("Gaia counterpart at BP-RP %.2f, a thermal colour the Euclid fluxes contradict, so a photometric defect" % x["gaia_match"]["bprp"]) if x["gaia_match"] and x["gaia_match"]["bprp"] is not None and x["gaia_match"]["bprp"] > 0.0 else None + print(" %s tile %s (%.5f %+.5f): I_E %.2f, I_E - H_E %.2f +- %.2f, Y/J/H %.1f/%.1f/%.1f uJy, S/N min %.0f, point-like %.2f, mu_max %s; Gaia %s; %s" % ( + x["object_id"], x["tileid"], x["ra"], x["dec"], 23.9 - 2.5 * math.log10(x["flux"]["vis"]), x["colour"], x["e_colour"], x["flux"]["y"], x["flux"]["j"], x["flux"]["h"], x["snr_min"], + x["point_like"] or 0, "%.1f" % x["mu_max"] if x["mu_max"] else "-", ("G %.1f BP-RP %s plx %s mas pm %.0f" % (x["gaia_match"]["G"] or 0, "%.2f" % x["gaia_match"]["bprp"] if x["gaia_match"]["bprp"] is not None else "-", + "%.2f" % x["gaia_match"]["plx"] if x["gaia_match"]["plx"] is not None else "-", x["gaia_match"]["pm"])) if x["gaia_match"] else "none", + x["explained"] or "unexplained")) + json.dump(dict(n=len(out), n_below=int(np.sum(cols < bluefloor_CUT)), n_cand=len(cand), cands=cand, params=dict(cut=bluefloor_CUT, pivots=bluefloor_LAMBDA)), + open(core.results(bluefloor_OUT), "w"), indent=0, default=str) + + +def bluefloor_record(): + d = json.load(open(core.results(bluefloor_OUT))) + cand = d["cands"] + left = [x for x in cand if not x.get("explained")] + core.record_search( + "euclid_bluefloor", "Sources bluer than the Rayleigh-Jeans limit", archive="Euclid Q1 MER catalogue (IRSA); Gaia DR3 by CDS XMatch", release="Euclid Q1", + selection="point-like VIS detections with clean flags at S/N above 10 in VIS, Y, J and H and F_VIS above six times F_H (%d)" % d["n"], code=os.path.abspath(__file__), entry="bluefloor", + n_targets=d["n"], params=d["params"], null_summary="the colour distribution of the selected point sources against the Rayleigh-Jeans line at -1.95", + sensitivity="I_E - H_E below %.1f at three sigma, a flux ratio above 8.3 where no thermal source exceeds 6.0" % d["params"]["cut"], ledger="Euclid Q1 sources bluer than the Rayleigh-Jeans limit", + result="%d sources below %.1f, %d of them at 3 sigma with super-Rayleigh-Jeans NISP fluxes and clean flags, %d with a Gaia counterpart whose colour contradicts the Euclid fluxes, %d left" % ( + d["n_below"], d["params"]["cut"], d["n_cand"], len(cand) - len(left), len(left))) + core.clear_targets("euclid_bluefloor") + core.record_targets("euclid_bluefloor", [dict(target="euclid:%s" % x["object_id"], stat=x["colour"], unit="I_E - H_E (AB)", vet=x.get("explained"), + note="tile %s, I_E %.2f, colour %.2f +- %.2f, Gaia %s" % (x["tileid"], 23.9 - 2.5 * math.log10(x["flux"]["vis"]), x["colour"], x["e_colour"], + x["gaia_match"]["source"] if x.get("gaia_match") else "none")) for x in cand]) + print("recorded %d candidates" % len(cand)) + + +def bluefloor_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": bluefloor_analyse, "record": bluefloor_record}[mode]() + + +wddust_DOC = r"""Warm dust without pollution at DESI white dwarfs: unWISE excess at 5 sigma with 600-2000 K colours and Ca II K below 50 mA, against matched controls. + + python -I seti.py infrared wddust fetch + python -I seti.py infrared wddust analyse + python -I seti.py infrared wddust spectra + python -I seti.py infrared wddust record""" + +wddust_ROOT = os.environ.get("WDDUST_ROOT", core.data("desi_wd")) +wddust_OUT = "wd_dust_pollution.json" +wddust_ZP = dict(w1=309.54, w2=171.79) # Vega zero points (Jy) +wddust_LAM = dict(w1=3.368, w2=4.618) # um +wddust_TMIN, wddust_TMAX, wddust_SIGMA, wddust_EW = 600.0, 2000.0, 5.0, 50.0 +wddust_CAK, wddust_MGII = 3934.78, 4482.3 # vacuum (A) + + +def wddust_fetch(): + os.makedirs(wddust_ROOT, exist_ok=True) + p = os.path.join(wddust_ROOT, "wd_unwise_gaia.json") + if os.path.exists(p): + print("have", p) + return + q = ("SELECT z.id, z.targetid, z.mean_fiber_ra, z.mean_fiber_dec, z.subtype, z.zwarn, u.flux_w1, u.dflux_w1, u.flux_w2, u.dflux_w2, u.fracflux_w1, u.fracflux_w2, " + "u.flags_unwise_w1, u.flags_unwise_w2, xu.distance AS d_unwise, g.source_id, g.parallax, g.parallax_error, g.phot_g_mean_mag, g.bp_rp, g.ruwe, " + "g.phot_bp_rp_excess_factor, xg.distance AS d_gaia FROM desi_dr1.zpix AS z JOIN desi_dr1.x1p5__zpix__unwise_dr1__object AS xu ON xu.id1 = z.id " + "JOIN unwise_dr1.object AS u ON u.unwise_objid = xu.id2 JOIN desi_dr1.x1p5__zpix__gaia_dr3__gaia_source AS xg ON xg.id1 = z.id " + "JOIN gaia_dr3.gaia_source AS g ON g.source_id = xg.id2 WHERE z.spectype = 'STAR' AND z.subtype = 'WD' AND z.zcat_primary = 't'") + rows = core.datalab(q) + json.dump(rows, open(p, "w")) + print("%d rows" % len(rows)) + + +def wddust_planck_ratio(T): + """Black-body F_nu(W2)/F_nu(W1) at T.""" + h, c, k = 6.626e-34, 2.998e8, 1.381e-23 + def b(lam_um): + nu = c / (lam_um * 1e-6) + return nu ** 3 / math.expm1(h * nu / (k * T)) + return b(wddust_LAM["w2"]) / b(wddust_LAM["w1"]) + + +def wddust_temperature(ratio): + """Black-body temperature with W2/W1 ratio, by bisection over 200-5000 K; None outside.""" + lo, hi = 200.0, 5000.0 + if ratio >= wddust_planck_ratio(lo) or ratio <= wddust_planck_ratio(hi): + return None + for _ in range(60): + mid = 0.5 * (lo + hi) + if wddust_planck_ratio(mid) > ratio: + lo = mid + else: + hi = mid + return 0.5 * (lo + hi) + + +def wddust_stars(): + rows = json.load(open(os.path.join(wddust_ROOT, "wd_unwise_gaia.json"))) + by = {} + for r in rows: + s = by.setdefault(r["targetid"], dict(targetid=r["targetid"], ra=float(r["mean_fiber_ra"]), dec=float(r["mean_fiber_dec"]), zwarn=int(num(r["zwarn"]) or 0), source_id=r["source_id"], + plx=num(r["parallax"]), e_plx=num(r["parallax_error"]), G=num(r["phot_g_mean_mag"]), bprp=num(r["bp_rp"]), ruwe=num(r["ruwe"]), + excess_factor=num(r["phot_bp_rp_excess_factor"]), d_gaia=num(r["d_gaia"]), n_unwise=0, w={})) + s["n_unwise"] += 1 + for b in ("w1", "w2"): + f, df = num(r["flux_%s" % b]), num(r["dflux_%s" % b]) + if f and df and f > 0 and (b not in s["w"] or f > s["w"][b]["flux"]): + s["w"][b] = dict(flux=f, dflux=df, frac=num(r["fracflux_%s" % b]), flags=int(num(r["flags_unwise_%s" % b]) or 0), sep=num(r["d_unwise"])) + return list(by.values()) + + +def wddust_analyse(): + stars = wddust_stars() + ok = [s for s in stars if s["plx"] and s["e_plx"] and s["plx"] / s["e_plx"] > 5 and s["G"] is not None and s["bprp"] is not None and (s["d_gaia"] or 9) < 1.0 + and "w1" in s["w"] and s["w"]["w1"]["flux"] / s["w"]["w1"]["dflux"] > 5 and "w2" in s["w"] and s["w"]["w2"]["flux"] / s["w"]["w2"]["dflux"] > 3] + for s in ok: + for b in ("w1", "w2"): + s["w"][b]["mag"] = 22.5 - 2.5 * math.log10(s["w"][b]["flux"]) + s["w"][b]["e_mag"] = 1.0857 * s["w"][b]["dflux"] / s["w"][b]["flux"] + # photosphere locus: running median of G - W in BP-RP bins with robust scatter + bins = np.arange(-0.8, 1.6, 0.1) + locus = {} + for b in ("w1", "w2"): + x = np.array([s["bprp"] for s in ok]) + y = np.array([s["G"] - s["w"][b]["mag"] for s in ok]) + med, sd, ctr = [], [], [] + for lo in bins: + m = (x >= lo) & (x < lo + 0.1) + if m.sum() >= 15: + ctr.append(lo + 0.05) + med.append(float(np.median(y[m]))) + sd.append(float(1.4826 * np.median(np.abs(y[m] - np.median(y[m]))))) + locus[b] = (np.array(ctr), np.array(med), np.array(sd)) + cands = [] + for s in ok: + exc = {} + for b in ("w1", "w2"): + ctr, med, sd = locus[b] + if not (ctr[0] - 0.05 <= s["bprp"] <= ctr[-1] + 0.05): + exc = None + break + mu, sc = float(np.interp(s["bprp"], ctr, med)), float(np.interp(s["bprp"], ctr, sd)) + d = (s["G"] - s["w"][b]["mag"]) - mu + exc[b] = dict(excess_mag=d, sigma=d / math.hypot(s["w"][b]["e_mag"], sc), photosphere_mag=s["G"] - mu) + if not exc: + continue + s["excess"] = exc + if all(exc[b]["sigma"] >= wddust_SIGMA for b in exc): + # excess flux per band and its black body + df = {} + for b in ("w1", "w2"): + f_obs = wddust_ZP[b] * 10 ** (-0.4 * s["w"][b]["mag"]) + f_phot = wddust_ZP[b] * 10 ** (-0.4 * exc[b]["photosphere_mag"]) + df[b] = f_obs - f_phot + s["t_excess"] = wddust_temperature(df["w2"] / df["w1"]) if df["w1"] > 0 and df["w2"] > 0 else None + s["blend"] = (s["w"]["w1"]["frac"] or 1) < 0.7 or (s["w"]["w2"]["frac"] or 1) < 0.7 or (s["ruwe"] or 0) > 1.4 or s["n_unwise"] > 2 + s["warm"] = s["t_excess"] is not None and wddust_TMIN <= s["t_excess"] <= wddust_TMAX + if s["warm"] and not s["blend"]: + cands.append(s) + n_exc = sum(1 for s in ok if s.get("excess") and all(s["excess"][b]["sigma"] >= wddust_SIGMA for b in s["excess"])) + print("%d DESI white dwarfs with unWISE W1 and W2 and Gaia parallaxes at 5 sigma; locus scatter in G - W1 %.2f mag; %d exceed the photosphere at %.0f sigma in both bands, %d of them with excess black bodies at %.0f-%.0f K and unblended" % ( + len(ok), np.median(locus["w1"][2]), n_exc, wddust_SIGMA, len(cands), wddust_TMIN, wddust_TMAX)) + for s in sorted(cands, key=lambda s: -s["excess"]["w2"]["sigma"])[:30]: + print(" targetid %s Gaia %s (%.5f %+.5f): G %.2f BP-RP %.2f plx %.1f mas; excess W1 %.2f mag (%.0f sigma) W2 %.2f (%.0f sigma), T %.0f K; fracflux %.2f/%.2f RUWE %.2f" % ( + s["targetid"], s["source_id"], s["ra"], s["dec"], s["G"], s["bprp"], s["plx"], s["excess"]["w1"]["excess_mag"], s["excess"]["w1"]["sigma"], s["excess"]["w2"]["excess_mag"], + s["excess"]["w2"]["sigma"], s["t_excess"], s["w"]["w1"]["frac"] or 0, s["w"]["w2"]["frac"] or 0, s["ruwe"] or 0)) + # controls: three nearest excess-free white dwarfs in G and BP-RP + plain = [s for s in ok if s.get("excess") and all(abs(s["excess"][b]["sigma"]) < 2 for b in s["excess"])] + ctrl = {} + for s in cands: + d = sorted(plain, key=lambda p: math.hypot((p["G"] - s["G"]) / 0.5, (p["bprp"] - s["bprp"]) / 0.1))[:3] + for p in d: + ctrl[p["targetid"]] = p + json.dump(dict(n=len(ok), n_excess=n_exc, n_cand=len(cands), locus={b: [list(map(float, v)) for v in locus[b]] for b in locus}, + cands=[{k: v for k, v in s.items()} for s in cands], controls=[{k: v for k, v in p.items()} for p in ctrl.values()], + params=dict(sigma=wddust_SIGMA, tmin=wddust_TMIN, tmax=wddust_TMAX, ew_ma=wddust_EW)), open(core.results(wddust_OUT), "w"), indent=0, default=str) + + +def wddust_ew(wave, flux, ivar, centre, model=None, half=4.0, cont=((-35.0, -12.0), (12.0, 35.0))): + """Equivalent width (mA, positive in absorption) of a line against the template or side continuum, with its error.""" + m = np.zeros(len(wave), bool) + for a, b in cont: + m |= (wave >= centre + a) & (wave <= centre + b) + m &= ivar > 0 + if model is not None: + m &= model > 0 + if m.sum() < 10: + return None, None + if model is not None: + p = np.polyfit(wave[m], flux[m] / model[m], 1, w=np.sqrt(ivar[m]) * model[m]) + c = np.polyval(p, wave) * model + else: + p = np.polyfit(wave[m], flux[m], 1, w=np.sqrt(ivar[m])) + c = np.polyval(p, wave) + w = (wave >= centre - half) & (wave <= centre + half) & (ivar > 0) & (c > 0) + if w.sum() < 4: + return None, None + dl = float(np.median(np.diff(wave[w]))) + ew = float(np.sum((1 - flux[w] / c[w]) * dl)) * 1000.0 + err = float(math.sqrt(np.sum(dl ** 2 / (ivar[w] * c[w] ** 2)))) * 1000.0 + return ew, err + + +def wddust_spectra(): + d = json.load(open(core.results(wddust_OUT))) + targets = {s["targetid"]: ("candidate", s) for s in d["cands"]} + targets.update({s["targetid"]: ("control", s) for s in d["controls"]}) + ids = list(targets) + out = {} + for k in range(0, len(ids), 100): + for rec in core.desi_spectra([int(t) for t in ids[k:k + 100]]): + t = str(rec["targetid"]) + wave = np.linspace(3600.0, 9824.0, 7781) + flux, ivar = np.asarray(rec["flux"], float), np.asarray(rec["ivar"], float) + model = np.asarray(rec["model"], float) if rec.get("model") is not None else None + ca, e_ca = wddust_ew(wave, flux, ivar, wddust_CAK, model) + mg, e_mg = wddust_ew(wave, flux, ivar, wddust_MGII, model) + out[t] = dict(role=targets[t][0], ca_k=ca, e_ca_k=e_ca, mg_ii=mg, e_mg_ii=e_mg) + for role in ("candidate", "control"): + rows = [v for v in out.values() if v["role"] == role and v["ca_k"] is not None] + polluted = [v for v in rows if v["ca_k"] - 3 * v["e_ca_k"] > wddust_EW] + clean = [v for v in rows if v["ca_k"] + 3 * v["e_ca_k"] < wddust_EW] + print("%s white dwarfs with spectra: %d; Ca II K above %.0f mA at 3 sigma in %d, below it at 3 sigma in %d, undecided %d" % ( + role, len(rows), wddust_EW, len(polluted), len(clean), len(rows) - len(polluted) - len(clean))) + for t, v in out.items(): + if v["role"] == "candidate": + print(" %s: Ca II K %s mA, Mg II %s mA" % (t, "%.0f +- %.0f" % (v["ca_k"], v["e_ca_k"]) if v["ca_k"] is not None else "-", "%.0f +- %.0f" % (v["mg_ii"], v["e_mg_ii"]) if v["mg_ii"] is not None else "-")) + d["spectra"] = out + json.dump(d, open(core.results(wddust_OUT), "w"), indent=0, default=str) + + +def wddust_record(): + d = json.load(open(core.results(wddust_OUT))) + sp = d.get("spectra", {}) + def tally(role): + rows = [v for v in sp.values() if v["role"] == role and v["ca_k"] is not None] + return len(rows), sum(1 for v in rows if v["ca_k"] - 3 * v["e_ca_k"] > d["params"]["ew_ma"]), sum(1 for v in rows if v["ca_k"] + 3 * v["e_ca_k"] < d["params"]["ew_ma"]) + nc, pc, cc = tally("candidate") + nk, pk, ck = tally("control") + core.record_search( + "desi_wd_dust_pollution", "Warm dust without pollution at white dwarfs", archive="DESI DR1 zpix white dwarfs with unWISE and Gaia DR3 through the Astro Data Lab; DESI spectra through SPARCL", release="DESI DR1", + selection="white dwarfs with unWISE W1 and W2 detections and Gaia parallaxes at 5 sigma (%d)" % d["n"], code=os.path.abspath(__file__), entry="wddust", n_targets=d["n"], params=d["params"], + null_summary="the photosphere locus of G - W1 and G - W2 against BP - RP from the white dwarfs themselves; %d excess-free white dwarfs matched in G and BP - RP as the pollution control" % len(d["controls"]), + sensitivity="an excess of %.0f sigma in both bands at 600-2000 K; Ca II K to about %.0f mA at 3 sigma" % (d["params"]["sigma"], d["params"]["ew_ma"]), ledger="Warm dust without pollution at white dwarfs", + result="%d excess white dwarfs at %.0f sigma in W1 and W2, %d warm (600-2000 K) and unblended; of %d with spectra %d show Ca II K above %.0f mA and %d lie below it, against %d of %d controls above and %d below" % ( + d["n_excess"], d["params"]["sigma"], d["n_cand"], nc, pc, d["params"]["ew_ma"], cc, pk, nk, ck)) + core.clear_targets("desi_wd_dust_pollution") + core.record_targets("desi_wd_dust_pollution", [dict(target="gaia_dr3:%s" % s["source_id"], stat=s["excess"]["w2"]["sigma"], unit="W2 excess over the photosphere locus, sigma", + vet=("Ca II K %.0f +- %.0f mA" % (sp[s["targetid"]]["ca_k"], sp[s["targetid"]]["e_ca_k"])) if s["targetid"] in sp and sp[s["targetid"]]["ca_k"] is not None else None, + note="DESI %s, G %.2f, BP-RP %.2f, excess W1 %.2f W2 %.2f mag, T %.0f K" % (s["targetid"], s["G"], s["bprp"], s["excess"]["w1"]["excess_mag"], s["excess"]["w2"]["excess_mag"], s["t_excess"])) for s in d["cands"]]) + print("recorded %d candidates" % d["n_cand"]) + + +def wddust_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": wddust_fetch, "analyse": wddust_analyse, "spectra": wddust_spectra, "record": wddust_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- +# infrared deficits, one-filter sources, 12 um changes and swollen dwarfs + +irdeficit_DOC = r"""Stars dimmer in the infrared than their spectra allow: Gaia DR3 stars within 100 pc with RVS spectroscopic temperatures (teff_gspspec) whose first ten GSP-Spec flags are 0 or 1, A_G below 0.05 and an unsaturated AllWISE W1 (8-15 mag, photometric quality A) through Gaia's AllWISE best neighbours, G - W1 against the running median at their spectroscopic temperature, the colour temperature from that locus, and stars whose colour temperature exceeds the spectroscopic one by 500 K at 5 sigma, an infrared deficit that a shield absorbing the star's infrared would make; each read for an optical temperature, GSP-Phot's or that of BP-RP on its own locus, nearer the infrared colour's than the spectrum's. + + python -I seti.py infrared irdeficit [record] [--dteff-k 500] [--sigma 5] [--w1-min 8] [--w1-max 15] [--ag-max 0.05] [--ruwe-max 1.4] [--gspspec-flag-max 1]""" + + +def irdeficit_main(record=False, dteff_k=500.0, sigma=5.0, w1_min=8.0, w1_max=15.0, ag_max=0.05, ruwe_max=1.4, gspspec_flag_max=1): + rows = core.tap_async("gaia", "SELECT g.source_id, g.phot_g_mean_mag, g.bp_rp, g.parallax, g.ruwe, a.teff_gspspec, a.flags_gspspec, a.teff_gspphot, " + "a.ag_gspphot, w.w1mpro, w.w1mpro_error, w.ph_qual " + "FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a ON g.source_id = a.source_id " + "JOIN gaiadr3.allwise_best_neighbour AS x ON g.source_id = x.source_id JOIN gaiadr1.allwise_original_valid AS w " + "ON x.allwise_oid = w.allwise_oid WHERE g.parallax > 10 AND g.parallax_over_error > 10 AND a.teff_gspspec IS NOT NULL " + "AND w.w1mpro BETWEEN %g AND %g" % (w1_min, w1_max), maxrec=500000) + # GSP-Spec's first ten flags grade broadening, velocity, flux noise and extrapolation; above 1 the temperature pins to its grid + rows = [r for r in rows if str(r["ph_qual"])[:1] == "A" and (num(r["ag_gspphot"]) or 0) < ag_max and (num(r["ruwe"]) or 9) < ruwe_max + and len(str(r["flags_gspspec"] or "")) >= 10 and max(str(r["flags_gspspec"])[:10]) <= str(gspspec_flag_max)] + T = np.array([float(r["teff_gspspec"]) for r in rows]) + C = np.array([float(r["phot_g_mean_mag"]) - float(r["w1mpro"]) for r in rows]) + B = np.array([num(r["bp_rp"]) if num(r["bp_rp"]) is not None else np.nan for r in rows]) + + def locus(X): + cen, med = [], [] + for lo in np.arange(3000, 7100, 100): + s = (T >= lo) & (T < lo + 100) & np.isfinite(X) + if s.sum() >= 20: + cen.append(lo + 50) + med.append(float(np.median(X[s]))) + cen, med = np.array(cen), np.array(med) + # colours fall with temperature; the colour temperature reads the locus backwards + order = np.argsort(med) + return cen, med, np.interp(X, med[order], cen[order], left=np.nan, right=np.nan) + cen, med, tcol = locus(C) + tbp = locus(B)[2] + resid = C - np.interp(T, cen, med) + s = core.robust_sigma(resid[np.isfinite(resid)]) + hot = sorted([(i, tcol[i] - T[i]) for i in range(len(rows)) if np.isfinite(tcol[i]) and tcol[i] - T[i] > dteff_k and resid[i] < -sigma * s], + key=lambda x: -x[1]) + # an optical temperature, GSP-Phot's or the BP-RP colour's, siding with G - W1 leaves the RVS temperature the odd one out + tp = {i: num(rows[i]["teff_gspphot"]) for i, d in hot} + odd = {i for i, d in hot if any(t and np.isfinite(t) and abs(t - tcol[i]) < abs(t - T[i]) for t in (tp[i], tbp[i]))} + print("%d stars with clean RVS temperatures and clean W1 within 100 pc; G-W1 scatter about the locus %.3f mag; colour temperature %g K above " + "the spectroscopic at %g sigma: %d, %d of them with an optical temperature nearer the colour's" % (len(rows), s, dteff_k, sigma, len(hot), len(odd))) + for i, d in hot: + print(" Gaia DR3 %s: RVS %.0f K, G - W1 %.0f K, BP-RP %.0f K, GSP-Phot %s K, G - W1 %.2f mag below the locus" % ( + rows[i]["source_id"], T[i], tcol[i], tbp[i], "%.0f" % tp[i] if tp[i] else "-", -float(resid[i]))) + if record: + core.record_run( + "gaia_infrared_deficit", "Stars dimmer in the infrared than their spectra allow", "Gaia DR3 astrophysical_parameters and AllWISE best neighbours", + "stars within 100 pc with clean RVS temperatures and clean W1: %d" % len(rows), os.path.abspath(__file__), "irdeficit", len(rows), "stars", + dict(dteff_k=dteff_k, sigma=sigma, gspspec_flags=gspspec_flag_max, w1=[w1_min, w1_max], ag_max=ag_max, ruwe_max=ruwe_max), + "the G - W1 locus at the spectroscopic temperature, scatter %.3f mag" % s, + "an infrared deficit of %g K in colour temperature" % dteff_k, "%d stars, %d with an optical temperature nearer the colour's" % (len(hot), len(odd)), + [dict(target="gaia_dr3:%s" % rows[i]["source_id"], stat=float(d), unit="colour minus spectroscopic temperature, K", + vet="published-solution" if i in odd else None, note="G - W1 %.2f mag below the locus; BP-RP temperature %.0f K, GSP-Phot %s K" % ( + -float(resid[i]), tbp[i], "%.0f" % tp[i] if tp[i] else "-")) for i, d in hot]) + print("recorded") + + +onefilter_DOC = r"""Sources shining in one filter only: Pan-STARRS1 DR1 mean objects (VizieR II/349) detected five or more times in one filter and never in the other four, brighter than the depth of the neighbouring filters by more than any stellar colour bridges (g or r below 19, i below 18.5, z below 18, y below 17), a monochromatic source in a broadband survey. + + python -I seti.py infrared onefilter [record] [--limits 19 19 18.5 18 17] [--n-min 5] + +The limits are the g, r, i, z and y magnitudes in that order; each filter's answer is kept in the results directory, under a name carrying the limit and count when they differ from the defaults.""" + +ONEFILTER = {"g": 19.0, "r": 19.0, "i": 18.5, "z": 18.0, "y": 17.0} + + +def onefilter_main(record=False, limits=(19.0, 19.0, 18.5, 18.0, 17.0), n_min=5): + lims = dict(zip("grizy", limits)) + hits, failed = [], [] + for f, lim in lims.items(): + # each filter's selection reads the whole table, so its answer is kept and a later run starts at the next filter + p = core.results("onefilter_%s.json" % f if (lim, n_min) == (ONEFILTER[f], 5) else "onefilter_%s_%g_%d.json" % (f, lim, n_min)) + if os.path.exists(p): + hits += [dict(r, band=f) for r in json.load(open(p))] + continue + others = [o for o in lims if o != f] + q = ('SELECT TOP 5000 objID, RAJ2000, DEJ2000, %smag, N%s, Qual FROM "II/349/ps1" WHERE N%s >= %d AND %s AND %smag < %.1f' % ( + f, f, f, n_min, " AND ".join("N%s = 0" % o for o in others), f, lim)) + try: + got = core.tap_async("vizier", q, maxrec=5000, limit=21600) + except Exception as ex: + failed.append((f, repr(ex)[:120])) + continue + json.dump(got, open(p, "w")) + hits += [dict(r, band=f) for r in got] + print("one-filter sources: %d %s; queries failed: %s" % (len(hits), [(h["band"], h["objID"], h["%smag" % h["band"]]) for h in hits[:20]], failed)) + json.dump(dict(hits=hits, failed=failed), open(core.results("onefilter.json"), "w"), indent=1, default=str) + if record and not failed: + core.record_run( + "ps1_one_filter", "Sources shining in one filter only", "Pan-STARRS1 DR1 (VizieR II/349)", "mean objects detected five or more times in " + "one filter and in no other, brighter than %s" % lims, os.path.abspath(__file__), "onefilter", len(hits), "sources", + dict(limits=lims, n_min=n_min), "no stellar colour reaches the limits", "a source seen in one Pan-STARRS filter alone", + "%d sources" % len(hits), [dict(target="ps1:%s" % h["objID"], stat=num(h["%smag" % h["band"]]), unit="%s mag" % h["band"]) for h in hits]) + print("recorded") + + +iraswise_DOC = r"""Dwarfs whose 12 um output changed between 1983 and 2010: Gaia DR3 stars within 100 pc at G below 8 with RUWE below 1.4, the IRAS Point Source Catalog (VizieR II/125) at 12 um of high quality within 45 arcsec of the position in 1983 and AllWISE W3 (A quality, no contamination flag, unsaturated beyond 3.8 mag) within 3 arcsec of the position in 2010, the IRAS flux as a magnitude (zero point 28.3 Jy) against W3, flagged where they part by 1 mag from the sample's median offset, and read for a Gaia star within 45 arcsec and 2 mag in G, whose light IRAS's beam takes in and W3's does not. + + python -I seti.py infrared iraswise [record] [--g-max 8] [--ruwe-max 1.4] [--iras-arcsec 45] [--wise-arcsec 3] [--dmag 1] [--blend-dmag 2]""" + + +def iraswise_main(record=False, g_max=8.0, ruwe_max=1.4, iras_arcsec=45.0, wise_arcsec=3.0, dmag=1.0, blend_dmag=2.0): + from setitools import neighbourhood + R, c = neighbourhood.nearby_astrometry() + sel = [i for i in range(len(R)) if c["phot_g_mean_mag"][i] < g_max and (c["ruwe"][i] or 9) < ruwe_max] + up83, up10 = [], [] + for i in sel: + r = R[i] + for yr, up in ((1983.5, up83), (2010.5, up10)): + ra, de = core.star_at(float(r["ra"]), float(r["dec"]), num(r["pmra"], 0.0), num(r["pmdec"], 0.0), 2016.0, yr) + up.append(dict(source_id=r["source_id"], ra=ra, dec=de)) + iras = {} + for m in core.xmatch(up83, "II/125/main", iras_arcsec): + if str(m.get("q_Fnu_12")) == "3" and num(m.get("Fnu_12")): + if m["source_id"] not in iras or float(m["angDist"]) < iras[m["source_id"]][1]: + iras[m["source_id"]] = (num(m["Fnu_12"]), float(m["angDist"])) + wise = {} + for m in core.xmatch(up10, "II/328/allwise", wise_arcsec): + q, cc, w3 = str(m.get("qph") or "UUUU"), str(m.get("ccf") or "0000"), num(m.get("W3mag")) + if w3 and w3 > 3.8 and q[2:3] == "A" and cc[2:3] == "0": + wise[m["source_id"]] = w3 + both = [(s, -2.5 * math.log10(iras[s][0] / 28.3), wise[s]) for s in iras if s in wise] + d = np.array([w - m for s, m, w in both]) + off = float(np.median(d)) if len(d) else 0.0 + hits = sorted([(s, m, w, w - m - off) for s, m, w in both if abs(w - m - off) > dmag], key=lambda x: -abs(x[3])) + # IRAS's 12 um beam spans arcminutes and W3's 6.5 arcsec: a star within 45 arcsec and 2 mag in G adds its light to IRAS alone + at = {R[i]["source_id"]: i for i in sel} + blend = {} + for s, m, w, x in hits: + i = at[s] + blend[s] = [r["source_id"] for r in core.tap("gaia", "SELECT source_id FROM gaiadr3.gaia_source WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), " + "CIRCLE('ICRS', %s, %s, %.5f)) AND source_id <> %s AND phot_g_mean_mag < %.2f" % ( + R[i]["ra"], R[i]["dec"], iras_arcsec / 3600.0, s, c["phot_g_mean_mag"][i] + blend_dmag))] if x > 0 else [] + print("%d stars within 100 pc at G below %g; IRAS 12 um of high quality %d, clean W3 %d, both %d; W3 - IRAS median %.2f, robust scatter %.2f; " + "parted by %g mag: %d %s" % (len(sel), g_max, len(iras), len(wise), len(both), off, core.robust_sigma(d) if len(d) else 0, dmag, len(hits), + [(s, round(x, 2), blend[s]) for s, m, w, x in hits[:10]])) + if record: + core.record_run( + "iras_wise_12um", "Dwarfs whose 12 um output changed between 1983 and 2010", "IRAS PSC (VizieR II/125) and AllWISE (II/328) by CDS XMatch; Gaia DR3", + "stars within 100 pc at G below %g with RUWE below %g: %d, %d measured in both" % (g_max, ruwe_max, len(sel), len(both)), os.path.abspath(__file__), + "iraswise", len(both), "stars", dict(dmag=dmag, iras_q=3, iras_arcsec=iras_arcsec, wise_arcsec=wise_arcsec, blend_dmag=blend_dmag), + "the sample's median W3 - IRAS offset %.2f mag, scatter %.2f" % (off, core.robust_sigma(d) if len(d) else 0), + "a 12 um change of %g mag between IRAS and WISE" % dmag, "%d parted by %g mag" % (len(hits), dmag), + [dict(target="gaia_dr3:%s" % s, stat=x, unit="W3 - IRAS 12 um less the median, mag", vet="blend" if blend[s] else None, + note="IRAS beam shared with Gaia DR3 %s" % ", ".join(blend[s]) if blend[s] else None) for s, m, w, x in hits]) + print("recorded") + + +bigdwarfs_DOC = r"""Dwarfs larger than their light allows: the JMMC Measured Stellar Diameters Catalogue (VizieR II/345) limb-darkened diameters, matched to Gaia DR3 within 5 arcsec by CDS XMatch, against the angular diameter Gaia's FLAME radius gives at its parallax, 9.30e-3 R(R_sun) parallax(mas) mas, for dwarfs (GSP-Phot log g above 4) within 100 pc, flagged where the measured diameter exceeds 1.2 times the predicted at 3 sigma, an envelope around the star. + + python -I seti.py infrared bigdwarfs [record] [--ratio 1.2] [--sigma 3] [--logg-min 4] [--plx-min 10] [--radius-arcsec 5]""" + + +def bigdwarfs_main(record=False, ratio=1.2, sigma=3.0, logg_min=4.0, plx_min=10.0, radius_arcsec=5.0): + jm = core.tap("vizier", 'SELECT SimbadName, "_RA", "_DE", LDdiam, e_LDdiam, Band, Method FROM "II/345/jmdc" WHERE LDdiam > 0 AND e_LDdiam > 0') + up = [dict(source_id=str(k), ra=float(r["_RA"]), dec=float(r["_DE"])) for k, r in enumerate(jm)] + gm = {} + for m in core.xmatch(up, "I/355/gaiadr3", radius_arcsec): + if num(m.get("Plx")) and (m["source_id"] not in gm or (num(m.get("Gmag")) or 99) < (num(gm[m["source_id"]].get("Gmag")) or 99)): + gm[m["source_id"]] = m + ids = sorted({str(m["Source"]) for m in gm.values()}) + ap = core.tap_by_ids("gaia", ids, "SELECT source_id, radius_flame, radius_flame_lower, radius_flame_upper, logg_gspphot FROM " + "gaiadr3.astrophysical_parameters WHERE source_id IN (%s)") + out = [] + for k, m in gm.items(): + a = ap.get(str(m["Source"])) + r = jm[int(k)] + if not a or num(a["radius_flame"]) is None or (num(a["logg_gspphot"]) or 0) <= logg_min or num(m["Plx"]) <= plx_min: + continue + R, lo, hi = num(a["radius_flame"]), num(a["radius_flame_lower"]) or 0, num(a["radius_flame_upper"]) or 0 + pred = 9.30e-3 * R * num(m["Plx"]) + epred = 9.30e-3 * (hi - lo) / 2 * num(m["Plx"]) + th, e = num(r["LDdiam"]), num(r["e_LDdiam"]) + z = (th - ratio * pred) / math.hypot(e, ratio * epred) if math.hypot(e, epred) > 0 else 0 + out.append(dict(name=r["SimbadName"], gaia=m["Source"], th=th, e=e, pred=pred, z=z, ratio=th / pred, band=r["Band"])) + big = sorted([o for o in out if o["z"] > sigma], key=lambda o: -o["z"]) + rat = np.array([o["ratio"] for o in out]) + print("%d measured diameters of dwarfs within %.0f pc; measured over predicted median %.3f, robust scatter %.3f; above %g at %g sigma: %d %s" % ( + len(out), 1000 / plx_min, float(np.median(rat)) if len(rat) else 0, core.robust_sigma(rat) if len(rat) else 0, ratio, sigma, len(big), + [(o["name"], round(o["ratio"], 2), round(o["z"], 1)) for o in big[:10]])) + if record: + core.record_run( + "jmdc_swollen_dwarfs", "Dwarfs larger than their light allows", "JMMC Measured Stellar Diameters Catalogue (VizieR II/345); Gaia DR3 FLAME", + "measured diameters of dwarfs within %.0f pc: %d" % (1000 / plx_min, len(out)), os.path.abspath(__file__), "bigdwarfs", len(out), "measurements", + dict(ratio=ratio, sigma=sigma, logg_min=logg_min, plx_min=plx_min, radius_arcsec=radius_arcsec), + "the sample's measured-over-predicted ratio, median %.3f" % (float(np.median(rat)) if len(rat) else 0), + "a dwarf measured %.0f per cent larger than its light and temperature allow" % (100 * (ratio - 1)), "%d at %g sigma" % (len(big), sigma), + [dict(target="gaia_dr3:%s" % o["gaia"], stat=o["ratio"], unit="measured over predicted diameter", note="%s, %.3f +- %.3f mas against %.3f, %s" % ( + o["name"], o["th"], o["e"], o["pred"], o["band"])) for o in big]) + print("recorded") + + +etzwarm_DOC = r"""Warm stars in Earth's transit zone: Gaia Catalogue of Nearby Stars objects (probability above 0.9, not white dwarfs, RUWE below 1.4, one IPD peak) with WISE W1 and a W3 or W4 detection at S/N 10 or 5, whose W1-W3 or W1-W4 colour lies more than five robust widths and three errors above the locus of single stars of the same BP-RP; the share of such stars within 0.264 deg of the ecliptic, where Earth's transits across the Sun are seen, against the share 1-5 deg away. A watcher of Earth's transits with a civilisation's waste heat would raise the share in the zone. + +With `--planet NAME` the zone is that planet's transit zone, the Sun's angular radius at the planet's distance either side of its orbital plane, where a watcher sees the giant planet rather than Earth, and the control band is measured from that plane. + + python -I seti.py infrared etzwarm [record] [--planet jupiter] [--zone-deg 0.264] [--control-min-deg 1] [--control-max-deg 5] [--widths 5] [--errors 3] [--w3-err-max 0.1] [--w4-err-max 0.2]""" + + +def etzwarm_main(record=False, planet="", zone_deg=0.264, control_min_deg=1.0, control_max_deg=5.0, widths=5.0, errors=3.0, w3_err_max=0.1, w4_err_max=0.2): + if planet: + from setitools.neighbourhood import PLANET_ORBITS + planet = planet.lower() + a, inc, node = PLANET_ORBITS[planet] + zone_deg = math.degrees(math.asin(0.0046505 / a)) + eps, i, o = math.radians(23.4392911), math.radians(inc), math.radians(node) + normal = (math.sin(i) * math.sin(o), -math.sin(i) * math.cos(o), math.cos(i)) + + def latitude(ra_deg, dec_deg): + if not planet: + return abs(vasco_ecl_lat(ra_deg, dec_deg)) + ra, de = math.radians(ra_deg), math.radians(dec_deg) + x, y, z = math.cos(de) * math.cos(ra), math.cos(de) * math.sin(ra), math.sin(de) + ye, ze = y * math.cos(eps) + z * math.sin(eps), -y * math.sin(eps) + z * math.cos(eps) + return abs(math.degrees(math.asin(max(-1.0, min(1.0, x * normal[0] + ye * normal[1] + ze * normal[2]))))) + rows = catalogues.gcns("source_id, ra, dec, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, ruwe, ipd_frac_multi_peak, w1mpro_pm_wise, " + "w1sigmpro_pm_wise, w3mpro_wise, w3sigmpro_wise, w4mpro_wise, w4sigmpro_wise", + "gcns_prob > 0.9 AND wd_prob < 0.1 AND ruwe < 1.4 AND ipd_frac_multi_peak <= 2 AND w1mpro_pm_wise IS NOT NULL", ranges=12) + st = [] + for r in rows: + bprp = num(r["phot_bp_mean_mag"]) - num(r["phot_rp_mean_mag"]) if num(r["phot_bp_mean_mag"]) and num(r["phot_rp_mean_mag"]) else None + if bprp is None: + continue + st.append(dict(id=r["source_id"], beta=latitude(float(r["ra"]), float(r["dec"])), bprp=bprp, w1=num(r["w1mpro_pm_wise"]), + s1=num(r["w1sigmpro_pm_wise"]), w3=num(r["w3mpro_wise"]), s3=num(r["w3sigmpro_wise"]), w4=num(r["w4mpro_wise"]), + s4=num(r["w4sigmpro_wise"]), g=num(r["phot_g_mean_mag"]), plx=num(r["parallax"]))) + warm = {} + for band, lim in (("3", w3_err_max), ("4", w4_err_max)): + use = [s for s in st if s["w" + band] is not None and s["s" + band] is not None and s["s" + band] < lim and s["s1"] is not None] + col = np.array([s["w1"] - s["w" + band] for s in use]) + x = np.array([s["bprp"] for s in use]) + bins = np.floor(x / 0.1).astype(int) + for b in set(bins.tolist()): + k = np.nonzero(bins == b)[0] + if len(k) < 20: + continue + med = float(np.median(col[k])) + wid = 1.4826 * float(np.median(np.abs(col[k] - med))) + for i in k: + s = use[i] + err = math.hypot(s["s1"], s["s" + band]) + if col[i] - med > max(widths * wid, errors * err): + warm.setdefault(s["id"], {})[band] = round(float(col[i] - med), 2) + zone = [s for s in st if s["beta"] < zone_deg and (s["w3"] is not None or s["w4"] is not None)] + near = [s for s in st if control_min_deg <= s["beta"] < control_max_deg and (s["w3"] is not None or s["w4"] is not None)] + wz = [s for s in zone if s["id"] in warm] + wn = sum(1 for s in near if s["id"] in warm) + frac = wn / max(len(near), 1) + exp = frac * len(zone) + sim = {} + for k in range(0, len(wz), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in wz[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + from scipy.stats import poisson + p = float(poisson.sf(len(wz) - 1, exp)) + who = (planet or "earth").capitalize() + print("%s's transit zone, %.3f deg either side of its orbital plane: %d stars with W1 and W3 or W4; in the zone %d, %d warm (%s); %g-%g deg away %d, %d warm (share %.4f, %.2f " + "expected in the zone, p %.3g)" % (who, zone_deg, len(st), len(zone), len(wz), [(s["id"], sim.get(s["id"]), warm[s["id"]], round(s["g"], 1)) for s in wz], + control_min_deg, control_max_deg, len(near), wn, frac, exp, p)) + if record: + core.record_run("etz_warm_stars" if not planet else "%s_zone_warm_stars" % planet, "Warm stars in %s's transit zone" % who, + "Gaia Catalogue of Nearby Stars with its WISE photometry (external.gaiaedr3_gcns_main_1); " + "SIMBAD", "stars within 100 pc with W1 and W3 or W4, %g deg of %s's orbital plane: %d" % (zone_deg, who, len(zone)), os.path.abspath(__file__), "etzwarm", + len(zone), "stars", dict(planet=planet, zone_deg=zone_deg, control_deg=[control_min_deg, control_max_deg], widths=widths, errors=errors, + err_max=dict(w3=w3_err_max, w4=w4_err_max)), + "the share %g-%g deg from the plane: %d of %d" % (control_min_deg, control_max_deg, wn, len(near)), + "a raised share of warm stars among those that see %s transit" % who, + "%d warm in the zone against %.2f expected (p %.3g)" % (len(wz), exp, p), + [dict(target="gaia_dr3:%s" % s["id"], stat=max(warm[s["id"]].values()), unit="mag above the locus", + vet="natural-type" if sim.get(s["id"]) and sim[s["id"]][1] not in ("*", "PM*", "HV*") else ("chance-rate" if p > 0.01 else None), + note="SIMBAD %s; excess %s" % (sim.get(s["id"]), warm[s["id"]])) for s in wz]) + print("recorded") + + +w2only_DOC = r"""Light at 4.6 um alone: Gaia Catalogue of Nearby Stars objects (probability above 0.9, white-dwarf probability below 0.1, RUWE below 1.4, one IPD peak) at BP-RP 0.5-2.5 with WISE W1 8-14, W2 above 7.5 and W1, W2 and W3 measured to 0.05, 0.05 and 0.1 mag, whose W1-W2 lies more than five robust widths and five errors above the single-star locus at their BP-RP while W1-W3 stays within two widths of its own; dust warm enough to shine at 4.6 um shines at 12 um as well, and an emitter in one band does not. The stars as far below the W1-W2 locus are the mirror null. Each candidate read in AllWISE for its contamination and variability flags and in SIMBAD. + + python -I seti.py infrared w2only [record] [--widths 5] [--errors 5] [--w3-widths 2] [--colour-min 0.5] [--colour-max 2.5] [--w1-min 8] [--w1-max 14] [--w2-min 7.5]""" + + +def w2only_main(record=False, widths=5.0, errors=5.0, w3_widths=2.0, colour_min=0.5, colour_max=2.5, w1_min=8.0, w1_max=14.0, w2_min=7.5): + rows = catalogues.gcns("source_id, parallax, phot_bp_mean_mag, phot_rp_mean_mag, w1mpro_pm_wise, w1sigmpro_pm_wise, w2mpro_pm_wise, w2sigmpro_pm_wise, " + "w3mpro_wise, w3sigmpro_wise, ra, dec", + "gcns_prob > 0.9 AND wd_prob < 0.1 AND ruwe < 1.4 AND ipd_frac_multi_peak <= 2 AND w1mpro_pm_wise BETWEEN %g AND %g AND w2mpro_pm_wise > %g " + "AND w1sigmpro_pm_wise < 0.05 AND w2sigmpro_pm_wise < 0.05 AND w3sigmpro_wise < 0.1" % (w1_min, w1_max, w2_min), ranges=12) + st = [] + for r in rows: + bp, rp = num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]) + if bp is None or rp is None or not colour_min <= bp - rp <= colour_max or num(r["w3mpro_wise"]) is None: + continue + w1, w2, w3 = float(r["w1mpro_pm_wise"]), float(r["w2mpro_pm_wise"]), float(r["w3mpro_wise"]) + st.append(dict(id=r["source_id"], c=bp - rp, c12=w1 - w2, c13=w1 - w3, e12=math.hypot(float(r["w1sigmpro_pm_wise"]), float(r["w2sigmpro_pm_wise"])), + ra=float(r["ra"]), dec=float(r["dec"]))) + bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int) + for key in ("c12", "c13"): + val = np.array([s[key] for s in st]) + for b in set(bins.tolist()): + k = np.nonzero(bins == b)[0] + med = float(np.median(val[k])) if len(k) >= 30 else None + wid = 1.4826 * float(np.median(np.abs(val[k] - med))) if med is not None else None + for i in k: + st[i]["r" + key] = (val[i] - med, wid) if med is not None else None + up = [s for s in st if s["rc12"] and s["rc13"] and s["rc12"][0] > max(widths * s["rc12"][1], errors * s["e12"]) and abs(s["rc13"][0]) < w3_widths * s["rc13"][1]] + down = [s for s in st if s["rc12"] and s["rc13"] and -s["rc12"][0] > max(widths * s["rc12"][1], errors * s["e12"]) and abs(s["rc13"][0]) < w3_widths * s["rc13"][1]] + flags = {} + if up: + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in up], "II/328/allwise", 3.0): + if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]: + flags[m["source_id"]] = (float(m["angDist"]), (m.get("ccf") or "").strip(), (m.get("ex") or "").strip(), (m.get("var") or m.get("Var") or "").strip()) + sim = {} + for k in range(0, len(up), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in up[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in up: + f = flags.get(s["id"]) + s["simbad"] = sim.get(s["id"]) + s["flags"] = f + s["vet"] = ("artefact" if f and (f[1].strip("0") or f[2] not in ("", "0")) else + "natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else None) + left = [s for s in up if s["vet"] is None] + print("%d stars; W1-W2 %g widths above the locus with W1-W3 on its own: %d; as far below: %d; unexplained %d" % (len(st), widths, len(up), len(down), len(left))) + for s in sorted(up, key=lambda s: -s["rc12"][0] / s["rc12"][1]): + print(" Gaia DR3 %s: BP-RP %.2f, W1-W2 +%.3f (width %.3f), W1-W3 %+.3f; AllWISE %s; SIMBAD %s; %s" % ( + s["id"], s["c"], s["rc12"][0], s["rc12"][1], s["rc13"][0], s["flags"], s["simbad"], s["vet"])) + if record: + core.record_run("w2_only_excess", "Light at 4.6 um alone", "Gaia Catalogue of Nearby Stars with its WISE photometry (external.gaiaedr3_gcns_main_1); " + "AllWISE (II/328) by CDS XMatch; SIMBAD", "stars within 100 pc at BP-RP %g-%g with clean W1, W2 and W3: %d" % (colour_min, colour_max, len(st)), + os.path.abspath(__file__), "w2only", len(st), "stars", dict(widths=widths, errors=errors, w3_widths=w3_widths, colour=[colour_min, colour_max], + w1=[w1_min, w1_max], w2_min=w2_min), + "the stars as far below the W1-W2 locus: %d" % len(down), "a star brighter at 4.6 um than its 3.4 and 12 um light allow", + "%d above against %d below; %d unexplained" % (len(up), len(down), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["rc12"][0] / s["rc12"][1], 1), unit="widths above the W1-W2 locus", + vet=s["vet"] or ("chance-rate" if len(up) <= len(down) + 3 * math.sqrt(max(len(down), 1)) else None), + note="AllWISE %s; SIMBAD %s" % (s["flags"], s["simbad"])) for s in up]) + print("recorded") + + +w3only_DOC = r"""Light at 12 um alone: Gaia Catalogue of Nearby Stars objects (probability above 0.9, white-dwarf probability below 0.1, RUWE below 1.4, one IPD peak) at BP-RP 0.5-2.5 with WISE W1 8-14 and W1, W3 and W4 measured to 0.05, 0.1 and 0.2 mag, whose W1-W3 lies more than five robust widths and five errors above the single-star locus at their BP-RP while W1-W4 stays within two widths of its own; warm dust that shines at 12 um shines at 22 um as well, and an emitter confined to the 12 um band does not, though the silicate feature at 10 um can lift W3 alone. The stars as far below the W1-W3 locus are the mirror null. Each candidate read in AllWISE for its contamination and variability flags and in SIMBAD; a W3 fainter than 11 mag is an AllWISE faint detection biased bright, a W1-W4 excess at three errors is dust after all, and a second Gaia source within 10 arcsec and five magnitudes shares the 12 um beam. + + python -I seti.py infrared w3only [record] [--widths 5] [--errors 5] [--w4-widths 2] [--colour-min 0.5] [--colour-max 2.5] [--w1-min 8] [--w1-max 14] [--w3-faint 11] [--beam-arcsec 10]""" + + +def w3only_main(record=False, widths=5.0, errors=5.0, w4_widths=2.0, colour_min=0.5, colour_max=2.5, w1_min=8.0, w1_max=14.0, w3_faint=11.0, beam_arcsec=10.0): + rows = catalogues.gcns("source_id, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, w1mpro_pm_wise, w1sigmpro_pm_wise, w3mpro_wise, w3sigmpro_wise, " + "w4mpro_wise, w4sigmpro_wise, ra, dec", + "gcns_prob > 0.9 AND wd_prob < 0.1 AND ruwe < 1.4 AND ipd_frac_multi_peak <= 2 AND w1mpro_pm_wise BETWEEN %g AND %g " + "AND w1sigmpro_pm_wise < 0.05 AND w3sigmpro_wise < 0.1 AND w4sigmpro_wise < 0.2" % (w1_min, w1_max), ranges=12) + st = [] + for r in rows: + bp, rp = num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]) + if bp is None or rp is None or not colour_min <= bp - rp <= colour_max or num(r["w3mpro_wise"]) is None or num(r["w4mpro_wise"]) is None: + continue + w1, w3, w4 = float(r["w1mpro_pm_wise"]), float(r["w3mpro_wise"]), float(r["w4mpro_wise"]) + st.append(dict(id=r["source_id"], c=bp - rp, g=num(r["phot_g_mean_mag"]), w3=w3, c13=w1 - w3, c14=w1 - w4, + e13=math.hypot(float(r["w1sigmpro_pm_wise"]), float(r["w3sigmpro_wise"])), e14=math.hypot(float(r["w1sigmpro_pm_wise"]), float(r["w4sigmpro_wise"])), + ra=float(r["ra"]), dec=float(r["dec"]))) + bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int) + for key in ("c13", "c14"): + val = np.array([s[key] for s in st]) + for b in set(bins.tolist()): + k = np.nonzero(bins == b)[0] + med = float(np.median(val[k])) if len(k) >= 30 else None + wid = 1.4826 * float(np.median(np.abs(val[k] - med))) if med is not None else None + for i in k: + st[i]["r" + key] = (val[i] - med, wid) if med is not None else None + up = [s for s in st if s["rc13"] and s["rc14"] and s["rc13"][0] > max(widths * s["rc13"][1], errors * s["e13"]) and abs(s["rc14"][0]) < w4_widths * s["rc14"][1]] + down = [s for s in st if s["rc13"] and s["rc14"] and -s["rc13"][0] > max(widths * s["rc13"][1], errors * s["e13"]) and abs(s["rc14"][0]) < w4_widths * s["rc14"][1]] + flags = {} + if up: + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in up], "II/328/allwise", 3.0): + if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]: + flags[m["source_id"]] = (float(m["angDist"]), (m.get("ccf") or "").strip(), (m.get("ex") or "").strip(), (m.get("var") or m.get("Var") or "").strip()) + sim = {} + for k in range(0, len(up), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in up[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in up: + f = flags.get(s["id"]) + s["simbad"] = sim.get(s["id"]) + s["flags"] = f + # AllWISE W3 beyond 11 mag is a faint detection biased bright; a W4 excess at three errors is dust, which shines at 22 um as well + s["vet"] = ("artefact" if (f and (f[1].strip("0") or f[2] not in ("", "0"))) or s["w3"] > w3_faint else + "dust" if s["rc14"][0] > 3 * s["e14"] else + "natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else None) + # a second Gaia source inside the 6.5 arcsec W3 beam, within five magnitudes, shares the 12 um flux + for s in up: + s["near"] = [] + if s["vet"] is None and s["g"] is not None: + s["near"] = ["%s (G %.1f)" % (r["source_id"], float(r["phot_g_mean_mag"])) for r in core.tap( + "gaia", "SELECT source_id, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f)) " + "AND source_id <> %s AND phot_g_mean_mag < %.2f" % (s["ra"], s["dec"], beam_arcsec / 3600.0, s["id"], s["g"] + 5))] + if s["near"]: + s["vet"] = "blend" + left = [s for s in up if s["vet"] is None] + print("%d stars; W1-W3 %g widths above the locus with W1-W4 on its own: %d; as far below: %d; unexplained %d" % (len(st), widths, len(up), len(down), len(left))) + for s in sorted(up, key=lambda s: -s["rc13"][0] / s["rc13"][1]): + print(" Gaia DR3 %s: BP-RP %.2f, W3 %.2f, W1-W3 +%.3f (width %.3f), W1-W4 %+.3f (%.1f errors); AllWISE %s; SIMBAD %s; neighbours %s; %s" % ( + s["id"], s["c"], s["w3"], s["rc13"][0], s["rc13"][1], s["rc14"][0], s["rc14"][0] / s["e14"], s["flags"], s["simbad"], s["near"], s["vet"])) + if record: + core.record_run("w3_only_excess", "Light at 12 um alone", "Gaia Catalogue of Nearby Stars with its WISE photometry (external.gaiaedr3_gcns_main_1); " + "AllWISE (II/328) by CDS XMatch; SIMBAD", "stars within 100 pc at BP-RP %g-%g with clean W1, W3 and W4: %d" % (colour_min, colour_max, len(st)), + os.path.abspath(__file__), "w3only", len(st), "stars", dict(widths=widths, errors=errors, w4_widths=w4_widths, colour=[colour_min, colour_max], + w1=[w1_min, w1_max], w3_faint=w3_faint, beam_arcsec=beam_arcsec), + "the stars as far below the W1-W3 locus: %d" % len(down), "a star brighter at 12 um than its 3.4 and 22 um light allow", + "%d above against %d below; %d unexplained" % (len(up), len(down), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["rc13"][0] / s["rc13"][1], 1), unit="widths above the W1-W3 locus", + vet=s["vet"] or ("chance-rate" if len(up) <= len(down) + 3 * math.sqrt(max(len(down), 1)) else None), + note="W3 %.2f, W1-W4 %+.2f at %.1f errors; AllWISE %s; SIMBAD %s; neighbours %s" % ( + s["w3"], s["rc14"][0], s["rc14"][0] / s["e14"], s["flags"], s["simbad"], s["near"] or "none")) for s in up]) + print("recorded") + + +ksexcess_DOC = r"""Light at 2 um alone: Gaia Catalogue of Nearby Stars objects (probability above 0.9, white-dwarf probability below 0.1, RUWE below 1.4, one IPD peak) at BP-RP 0.5-3.0 with 2MASS J, H and Ks and WISE W1 measured to 0.03 and 0.05 mag, whose J-Ks lies more than five robust widths and five errors above the single-star locus at their BP-RP while J-W1 stays within two widths of its own; a cool companion or hot dust that brightens Ks brightens W1 as well, and a source confined to 2 um does not. The stars as far below the J-Ks locus are the mirror null. Each candidate read in SIMBAD and in 2MASS for its quality, read and extended-source flags. + + python -I seti.py infrared ksexcess [record] [--widths 5] [--errors 5] [--w1-widths 2] [--colour-min 0.5] [--colour-max 3.0]""" + + +def ksexcess_main(record=False, widths=5.0, errors=5.0, w1_widths=2.0, colour_min=0.5, colour_max=3.0): + rows = catalogues.gcns("source_id, phot_bp_mean_mag, phot_rp_mean_mag, j_m_2mass, j_msig_2mass, h_m_2mass, k_m_2mass, k_msig_2mass, w1mpro_pm_wise, w1sigmpro_pm_wise, ra, dec", + "gcns_prob > 0.9 AND wd_prob < 0.1 AND ruwe < 1.4 AND ipd_frac_multi_peak <= 2 AND j_msig_2mass < 0.03 AND k_msig_2mass < 0.03 " + "AND w1sigmpro_pm_wise < 0.05", ranges=12) + st = [] + for r in rows: + bp, rp, j, k, w1 = num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]), num(r["j_m_2mass"]), num(r["k_m_2mass"]), num(r["w1mpro_pm_wise"]) + if None in (bp, rp, j, k, w1) or not colour_min <= bp - rp <= colour_max: + continue + st.append(dict(id=r["source_id"], c=bp - rp, j=j, k=k, cjk=j - k, cjw=j - w1, ejk=math.hypot(float(r["j_msig_2mass"]), float(r["k_msig_2mass"])), + ra=float(r["ra"]), dec=float(r["dec"]))) + bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int) + for key in ("cjk", "cjw"): + val = np.array([s[key] for s in st]) + for b in set(bins.tolist()): + kk = np.nonzero(bins == b)[0] + med = float(np.median(val[kk])) if len(kk) >= 30 else None + wid = 1.4826 * float(np.median(np.abs(val[kk] - med))) if med is not None else None + for i in kk: + st[i]["r" + key] = (val[i] - med, wid) if med is not None else None + up = [s for s in st if s["rcjk"] and s["rcjw"] and s["rcjk"][0] > max(widths * s["rcjk"][1], errors * s["ejk"]) and abs(s["rcjw"][0]) < w1_widths * s["rcjw"][1]] + down = [s for s in st if s["rcjk"] and s["rcjw"] and -s["rcjk"][0] > max(widths * s["rcjk"][1], errors * s["ejk"]) and abs(s["rcjw"][0]) < w1_widths * s["rcjw"][1]] + flags = {} + if up: + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in up], "II/246/out", 3.0): + if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]: + flags[m["source_id"]] = (float(m["angDist"]), (m.get("Qfl") or "").strip(), (m.get("Rfl") or "").strip(), (m.get("X") or "").strip()) + sim = {} + for k in range(0, len(up), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in up[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in up: + f = flags.get(s["id"]) + s["simbad"] = sim.get(s["id"]) + s["flags"] = f + # 2MASS quality below AAA or an extended-source flag; a Ks read from a different scan than J (read flags) is not a colour + s["vet"] = ("artefact" if f and (f[1] != "AAA" or f[3] not in ("", "0")) else + "natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else None) + left = [s for s in up if s["vet"] is None] + print("%d stars; J-Ks %g widths above the locus with J-W1 on its own: %d; as far below: %d; unexplained %d" % (len(st), widths, len(up), len(down), len(left))) + for s in sorted(up, key=lambda s: -s["rcjk"][0] / s["rcjk"][1]): + print(" Gaia DR3 %s: BP-RP %.2f, Ks %.2f, J-Ks +%.3f (width %.3f), J-W1 %+.3f; 2MASS %s; SIMBAD %s; %s" % ( + s["id"], s["c"], s["k"], s["rcjk"][0], s["rcjk"][1], s["rcjw"][0], s["flags"], s["simbad"], s["vet"])) + if record: + core.record_run("ks_only_excess", "Light at 2 um alone", "Gaia Catalogue of Nearby Stars with its 2MASS and WISE photometry (external.gaiaedr3_gcns_main_1); " + "2MASS (II/246) by CDS XMatch; SIMBAD", "stars within 100 pc at BP-RP %g-%g with clean J, Ks and W1: %d" % (colour_min, colour_max, len(st)), + os.path.abspath(__file__), "ksexcess", len(st), "stars", dict(widths=widths, errors=errors, w1_widths=w1_widths, colour=[colour_min, colour_max]), + "the stars as far below the J-Ks locus: %d" % len(down), "a star brighter at 2 um than its 1.2 and 3.4 um light allow", + "%d above against %d below; %d unexplained" % (len(up), len(down), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["rcjk"][0] / s["rcjk"][1], 1), unit="widths above the J-Ks locus", + vet=s["vet"] or ("chance-rate" if len(up) <= len(down) + 3 * math.sqrt(max(len(down), 1)) else None), + note="Ks %.2f, J-W1 %+.2f; 2MASS %s; SIMBAD %s" % (s["k"], s["rcjw"][0], s["flags"], s["simbad"])) for s in up]) + print("recorded") + + +warmgalaxies_DOC = r"""Galaxies warm without star formation: HECATE galaxies within 150 Mpc with a GSWLC stellar mass and ultraviolet-optical star-formation rate and with WISE 22 um and IRAS far-infrared luminosities, the quiescent ones (specific star-formation rate below 1e-11 per year) whose 22 um luminosity exceeds a tenth of a solar luminosity per solar mass and lies within a factor of three of their far-infrared luminosity; star-forming dust at 20-40 K peaks at 60-100 um and old stars warm little dust, so mid-infrared heat without young stars or cold dust is what structures at room temperature around a galaxy's stars would radiate. Each read for an active nucleus in HECATE's three flags and for an edge-on disc, whose dust lanes hide the young stars. + + python -I seti.py infrared warmgalaxies [record] [--d-max-mpc 150] [--ssfr-max -11] [--heat-min -1.0] [--warm-min -0.5] [--edge-on-deg 70]""" + + +def warmgalaxies_main(record=False, d_max_mpc=150.0, ssfr_max=-11.0, heat_min=-1.0, warm_min=-0.5, edge_on_deg=70.0): + rows = core.tap("vizier", 'SELECT PGC, NED, RAJ2000, DEJ2000, D, i, logLTIR, logLFIR, logL22um, logL12um, logMGSW, logSFRGSW, logSFRTIR, Nuclear, AGNs17, AGNh, W3mag, W4mag ' + 'FROM "J/MNRAS/506/1896/hecate" WHERE D < %g AND logSFRGSW IS NOT NULL AND logMGSW IS NOT NULL AND logL22um IS NOT NULL AND logLFIR IS NOT NULL' + % d_max_mpc, timeout=900) + gal = [] + for r in rows: + m, sfr, l22, lfir = num(r["logMGSW"]), num(r["logSFRGSW"]), num(r["logL22um"]), num(r["logLFIR"]) + if None in (m, sfr, l22, lfir): + continue + # HECATE's luminosities are in erg/s; a solar luminosity is 3.828e33 erg/s + l22, lfir = l22 - 33.583, lfir - 33.583 + gal.append(dict(pgc=r["PGC"], name=(r["NED"] or "").strip(), d=num(r["D"]), inc=num(r["i"]), m=m, ssfr=sfr - m, heat=l22 - m, warm=l22 - lfir, l22=l22, lfir=lfir, + ltir=num(r["logLTIR"]), agn=bool((r["AGNs17"] or "").strip() or (r["AGNh"] or "").strip() or (r["Nuclear"] or "").strip() not in ("", "0")), + w34=(num(r["W3mag"]) - num(r["W4mag"])) if num(r["W3mag"]) is not None and num(r["W4mag"]) is not None else None)) + quiet = [g for g in gal if g["ssfr"] < ssfr_max] + forming = [g for g in gal if g["ssfr"] >= ssfr_max] + heat_q = np.array([g["heat"] for g in quiet]) + warm_q = np.array([g["warm"] for g in quiet]) + hits = [g for g in quiet if g["heat"] > heat_min and g["warm"] > warm_min] + for g in hits: + g["vet"] = "background-galaxy" if g["agn"] else "dust-lane" if g["inc"] is not None and g["inc"] > edge_on_deg else None + left = [g for g in hits if g["vet"] is None] + print("%d galaxies within %g Mpc with masses, ultraviolet-optical star-formation rates, 22 um and far-infrared luminosities; quiescent (specific rate below 1e%g): %d, " + "whose 22 um heat per stellar mass runs median %.2f (99th percentile %.2f) and 22 um over far-infrared median %.2f (99th %.2f); above %g per solar mass and within " + "%g dex of the far-infrared: %d, %d with active nuclei, %d edge-on; unexplained %d" % ( + len(gal), d_max_mpc, ssfr_max, len(quiet), float(np.median(heat_q)) if len(heat_q) else 0, float(np.percentile(heat_q, 99)) if len(heat_q) else 0, + float(np.median(warm_q)) if len(warm_q) else 0, float(np.percentile(warm_q, 99)) if len(warm_q) else 0, heat_min, warm_min, len(hits), + sum(g["vet"] == "background-galaxy" for g in hits), sum(g["vet"] == "dust-lane" for g in hits), len(left))) + for g in sorted(hits, key=lambda g: -g["heat"]): + print(" %s (PGC %s, %s Mpc): log M %.2f, specific rate %.2f, 22 um per mass %.2f, 22 um over far-infrared %+.2f, W3-W4 %s, inclination %s; %s" % ( + g["name"], g["pgc"], g["d"], g["m"], g["ssfr"], g["heat"], g["warm"], "%.2f" % g["w34"] if g["w34"] is not None else "-", g["inc"], g["vet"] or "unexplained")) + json.dump(dict(n=len(gal), quiet=len(quiet), hits=hits), open(core.results("warm_quiet_galaxies.json"), "w"), indent=1) + if record: + core.record_run( + "hecate_warm_quiet", "Galaxies warm without star formation", "HECATE (J/MNRAS/506/1896) with its GSWLC, WISE and IRAS luminosities", + "quiescent galaxies within %g Mpc with masses, rates, 22 um and far-infrared luminosities: %d of %d" % (d_max_mpc, len(quiet), len(gal)), os.path.abspath(__file__), + "warmgalaxies", len(quiet), "galaxies", dict(d_max_mpc=d_max_mpc, ssfr_max=ssfr_max, heat_min=heat_min, warm_min=warm_min, edge_on_deg=edge_on_deg), + "the quiescent galaxies' own 22 um heat per mass (median %.2f, 99th percentile %.2f) and 22 um over far-infrared (median %.2f, 99th %.2f); the %d star-forming " + "galaxies apart" % (float(np.median(heat_q)) if len(heat_q) else 0, float(np.percentile(heat_q, 99)) if len(heat_q) else 0, + float(np.median(warm_q)) if len(warm_q) else 0, float(np.percentile(warm_q, 99)) if len(warm_q) else 0, len(forming)), + "a quiescent galaxy radiating a tenth of a solar luminosity per solar mass at 22 um with little cold dust", + "%d: %d with active nuclei, %d edge-on; %d unexplained" % (len(hits), sum(g["vet"] == "background-galaxy" for g in hits), sum(g["vet"] == "dust-lane" for g in hits), + len(left)), + [dict(target="pgc:%s" % g["pgc"], stat=g["heat"], unit="log 22 um luminosity per stellar mass, solar units", vet=g["vet"], + note="%s, %s Mpc, log M %.2f, specific rate %.2f, 22 um over far-infrared %+.2f, inclination %s" % (g["name"], g["d"], g["m"], g["ssfr"], g["warm"], g["inc"])) + for g in hits]) + print("recorded") + + +irdim_DOC = r"""Infrared dimming next door: Gaia Catalogue of Nearby Stars objects within 20 pc with an AllWISE W1 between 8 and 15 mag, carried to 2015.0 and matched to CatWISE2020 (II/365) within 3 arcsec by CDS XMatch, whose profile W1 changed by more than 0.3 mag between the 2010 AllWISE mean (II/328, matched at the 2010.5 position) and the 2010-2018 CatWISE mean, a star whose 3.4 um light fell or rose by a third over the decade while nothing in the optical is asked; each read for its Gaia variability flag, its RUWE and image flags, its SIMBAD type and the AllWISE and CatWISE flags, with the stars that brightened as the mirror; CatWISE saturates brighter than W1 8.5, a match beyond 1.5 arcsec at a star next door is another source, and a star moving faster than a second a year is split between the epochs of CatWISE's coadds. + + python -I seti.py infrared irdim [record] [--plx-min 50] [--dmag 0.3] [--radius-arcsec 3] [--saturation 8.5] [--match-arcsec 1.5] [--fast-mas-yr 1000]""" + + +def irdim_main(record=False, plx_min=50.0, dmag=0.3, radius_arcsec=3.0, saturation=8.5, match_arcsec=1.5, fast_mas_yr=1000.0): + rows = catalogues.gcns("source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, ruwe, ipd_frac_multi_peak, w1mpro_pm_wise, " + "w1sigmpro_pm_wise", "gcns_prob > 0.9 AND parallax > %g AND w1mpro_pm_wise BETWEEN 8 AND 15 AND w1sigmpro_pm_wise < 0.05" % plx_min, ranges=12) + # AllWISE's profile magnitude at 2010.5 and CatWISE's at 2015.0, each matched at the star's position for its epoch + def placed(epoch): + out = [] + for r in rows: + ra, de = core.star_at(float(r["ra"]), float(r["dec"]), num(r["pmra"]) or 0.0, num(r["pmdec"]) or 0.0, 2016.0, epoch) + out.append(dict(source_id=str(r["source_id"]), ra=ra % 360, dec=de)) + return out + allw, cat = {}, {} + for k in range(0, len(rows), 5000): + for m in core.xmatch(placed(2010.5)[k:k + 5000], "II/328/allwise", radius_arcsec): + w1 = num(m.get("W1mag")) + if w1 is not None and (m["source_id"] not in allw or float(m["angDist"]) < allw[m["source_id"]][0]): + allw[m["source_id"]] = (float(m["angDist"]), w1, num(m.get("e_W1mag")), (m.get("ccf") or "").strip()) + for m in core.xmatch(placed(2015.0)[k:k + 5000], "II/365/catwise", radius_arcsec): + w1 = num(m.get("W1mproPM")) + if w1 is not None and (m["source_id"] not in cat or float(m["angDist"]) < cat[m["source_id"]][0]): + cat[m["source_id"]] = (float(m["angDist"]), w1, num(m.get("e_W1mproPM")), (m.get("ab_flags") or m.get("abFlags") or "").strip()) + st = [] + for r in rows: + a, c = allw.get(str(r["source_id"])), cat.get(str(r["source_id"])) + if not a or not c: + continue + st.append(dict(id=str(r["source_id"]), w1_all=a[1], w1_cat=c[1], d=c[1] - a[1], e=math.hypot(a[2] or 0, c[2] or 0), sep=c[0], flags=(a[3] + "/" + c[3]).strip("/"), + g=num(r["phot_g_mean_mag"]), ruwe=num(r["ruwe"]), multi=num(r["ipd_frac_multi_peak"]), var="", pm=math.hypot(num(r["pmra"]) or 0.0, num(r["pmdec"]) or 0.0), + c=(num(r["phot_bp_mean_mag"]) - num(r["phot_rp_mean_mag"])) if num(r["phot_bp_mean_mag"]) is not None and num(r["phot_rp_mean_mag"]) is not None else None)) + d = np.array([s["d"] for s in st]) + off = float(np.median(d)) if len(d) else 0.0 + dim = [s for s in st if s["d"] - off > dmag] + bright = [s for s in st if s["d"] - off < -dmag] + both = dim + bright + sim = {} + for k in range(0, len(both), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in both[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for r in core.tap("gaia", "SELECT source_id, phot_variable_flag FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(s["id"] for s in both[k:k + 200])): + for s in both: + if s["id"] == str(r["source_id"]): + s["var"] = str(r["phot_variable_flag"] or "") + var_types = ("V*", "Mi*", "LP*", "Pu*", "RR*", "dS*", "Ce*", "EB*", "Fl*", "BY*", "RS*", "Er*", "TT*", "Y*O", "Or*", "CV*", "No*", "Ro*", "El*", "a2*", "sr*", "Em*") + for s in both: + s["simbad"] = sim.get(s["id"]) + typ = (s["simbad"] or (None, "", ""))[1] + # CatWISE saturates brighter than W1 8.5; a match beyond 1.5 arcsec at a star next door is another source, and a star moving faster than a second a year + # is split between the epochs of CatWISE's coadds, each half carrying part of its light + s["vet"] = ("variable-star" if s["var"] == "VARIABLE" or typ in var_types else + "blend" if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 or typ in ("**", "SB*") else + "artefact" if s["flags"].replace("/", "").strip("0") or s["w1_all"] < saturation else + "astrometry" if s["sep"] > match_arcsec or s["pm"] > fast_mas_yr else None) + left = [s for s in both if s["vet"] is None] + count = {v: sum(s["vet"] == v for s in both) for v in ("variable-star", "blend", "artefact", "astrometry")} + print("%d stars within %.0f pc with AllWISE and CatWISE W1; CatWISE minus AllWISE median %+.3f, robust scatter %.3f; fainter by %g: %d, brighter by as much: %d; variables %d, " + "blends %d, flagged or saturated %d, matched to another source %d; unexplained %d" % (len(st), 1000 / plx_min, off, core.robust_sigma(d) if len(d) else 0, dmag, + len(dim), len(bright), count["variable-star"], count["blend"], count["artefact"], + count["astrometry"], len(left))) + for s in sorted(both, key=lambda s: -abs(s["d"] - off)): + print(" Gaia DR3 %s: W1 %.3f (AllWISE) to %.3f (CatWISE), %+.3f +- %.3f at %.1f arcsec, flags %s; G %s, BP-RP %s, RUWE %s, %s, %.0f mas/yr; SIMBAD %s; %s" % ( + s["id"], s["w1_all"], s["w1_cat"], s["d"] - off, s["e"], s["sep"], s["flags"] or "-", s["g"], s["c"], s["ruwe"], s["var"], s["pm"], s["simbad"], + s["vet"] or "unexplained")) + json.dump(dict(n=len(st), offset=off, dim=dim, bright=bright), open(core.results("infrared_dimming_nearby.json"), "w"), indent=1) + if record: + core.record_run( + "allwise_catwise_w1_change", "Infrared dimming next door", "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); AllWISE (II/328) and " + "CatWISE2020 (II/365) by CDS XMatch; SIMBAD", "stars within %.0f pc with W1 8-15 matched in AllWISE and CatWISE: %d" % (1000 / plx_min, len(st)), + os.path.abspath(__file__), "irdim", len(st), "stars", dict(plx_min=plx_min, dmag=dmag, radius_arcsec=radius_arcsec, saturation=saturation, + match_arcsec=match_arcsec, fast_mas_yr=fast_mas_yr, epochs=[2010.5, 2015.0]), + "the stars that brightened by as much: %d; the sample's offset %+.3f and scatter %.3f" % (len(bright), off, core.robust_sigma(d) if len(d) else 0), + "a change of %g mag at 3.4 um between the AllWISE and CatWISE means" % dmag, + "%d fainter against %d brighter; %d variables, %d blends, %d flagged or saturated, %d matched to another source; %d unexplained" % ( + len(dim), len(bright), count["variable-star"], count["blend"], count["artefact"], count["astrometry"], len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["d"] - off, 3), unit="CatWISE minus AllWISE W1 less the offset, mag", vet=s["vet"], + note="W1 %.3f to %.3f +- %.3f at %.1f arcsec, flags %s; G %s, RUWE %s, %s, %.0f mas/yr; SIMBAD %s" % ( + s["w1_all"], s["w1_cat"], s["e"], s["sep"], s["flags"] or "-", s["g"], s["ruwe"], s["var"], s["pm"], s["simbad"])) for s in both]) + print("recorded") + + +hidark_DOC = r"""Waste heat in HI-dark galaxies: the ALFALFA HI sources of Leisman et al. (2017) (VizieR J/ApJ/842/133) whose optical counterparts are low-surface-brightness ghosts, gas with hardly a star, matched to AllWISE within 10 arcsec, a source at 5 sigma in W3 or W4 where so few stars could warm dust and a civilisation drawing on the gas would radiate, against the same positions moved 2 arcmin in eight directions and against a Gaia star or an AGN colour (W1-W2 above 0.5) at the match. + + python -I seti.py infrared hidark [record] [--radius-arcsec 10] [--snr 5] [--w1w2 0.5]""" + + +def hidark_main(record=False, radius_arcsec=10.0, snr=5.0, w1w2=0.5): + from scipy.stats import poisson + from setitools.catalogues import shifted_matches + rows = core.tap("vizier", 'SELECT AGC, RAJ2000, DEJ2000, cz, Dist, logMHI, mug0, gMAG, rh FROM "J/ApJ/842/133/table1"') + pos = [dict(name="a%s" % r["AGC"], ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"])) for r in rows if num(r["RAJ2000"]) is not None] + hits, null = shifted_matches(pos, "II/328/allwise", radius_arcsec) + + def warm(m): + e3, e4 = num(m.get("e_W3mag")), num(m.get("e_W4mag")) + return (e3 is not None and 1.0857 / e3 >= snr) or (e4 is not None and 1.0857 / e4 >= snr) + got = {} + for m in hits: + if warm(m) and (m["source_id"] not in got or float(m["angDist"]) < float(got[m["source_id"]]["angDist"])): + got[m["source_id"]] = m + stars = set() + if got: + up = [p for p in pos if p["name"] in got] + stars = {m["source_id"] for m in core.xmatch([dict(source_id=p["name"], ra=p["ra"], dec=p["dec"]) for p in up], "I/355/gaiadr3", radius_arcsec)} + # the moved positions count every match, warm or not; the warm share among the matches at the true positions scales them + raw = len({m["source_id"] for m in hits}) + exp = (float(np.mean(null)) if len(null) else 0.0) * (len(got) / raw if raw else 0.0) + out = [] + for n, m in got.items(): + w1, w2 = num(m.get("W1mag")), num(m.get("W2mag")) + agn = w1 is not None and w2 is not None and w1 - w2 >= w1w2 + out.append(dict(agc=n[1:], sep=float(m["angDist"]), w1=w1, w2=w2, w3=num(m.get("W3mag")), w4=num(m.get("W4mag")), e3=num(m.get("e_W3mag")), e4=num(m.get("e_W4mag")), + agn=agn, star=n in stars, vet="background-galaxy" if agn else "stellar-blend" if n in stars else None)) + p = float(poisson.sf(len(out) - 1, exp)) if out and exp > 0 else 1.0 + for o in out: + if o["vet"] is None and p > 0.01: + o["vet"] = "chance-rate" + left = [o for o in out if o["vet"] is None] + print("%d HI-dark galaxies; AllWISE matches within %g arcsec: %d, of them at %g sigma in W3 or W4: %d (the positions moved 2 arcmin give %s matches, mean %.1f, so %.1f " + "warm; p %.3g); %d AGN-coloured, %d Gaia stars; unexplained %d" % (len(pos), radius_arcsec, raw, snr, len(out), null, float(np.mean(null)) if len(null) else 0, exp, p, + sum(o["agn"] for o in out), sum(o["star"] for o in out), len(left))) + for o in sorted(out, key=lambda o: o["sep"]): + print(" AGC %s: W1 %s W2 %s W3 %s (+-%s) W4 %s (+-%s) at %.1f arcsec, %s%s; %s" % (o["agc"], o["w1"], o["w2"], o["w3"], o["e3"], o["w4"], o["e4"], o["sep"], + "AGN colour" if o["agn"] else "galaxy colour", ", Gaia star" if o["star"] else "", + o["vet"] or "unexplained")) + json.dump(dict(n=len(pos), null=null, hits=out), open(core.results("hidark_waste_heat.json"), "w"), indent=1) + if record: + core.record_run( + "alfalfa_hidark_waste_heat", "Waste heat in HI-dark galaxies", "Leisman et al. (2017) ALFALFA HI-dark galaxies (VizieR J/ApJ/842/133); AllWISE (II/328) and Gaia DR3 " + "by CDS XMatch", "HI-dark galaxies: %d" % len(pos), os.path.abspath(__file__), "hidark", len(pos), "galaxies", + dict(radius_arcsec=radius_arcsec, snr=snr, w1w2=w1w2), "the positions moved 2 arcmin in eight directions: %s matches, scaled by the warm share %d of %d" % ( + null, len(out), raw), + "a W3 or W4 source at %g sigma within %g arcsec of the counterpart" % (snr, radius_arcsec), + "%d against %.1f expected from the moved positions (p %.3g); %d AGN-coloured, %d Gaia stars; %d unexplained" % ( + len(out), exp, p, sum(o["agn"] for o in out), sum(o["star"] for o in out), len(left)), + [dict(target="agc:%s" % o["agc"], stat=max(1.0857 / o["e3"] if o["e3"] else 0, 1.0857 / o["e4"] if o["e4"] else 0), unit="W3 or W4 S/N", vet=o["vet"], + note="W1 %s W2 %s W3 %s W4 %s at %.1f arcsec" % (o["w1"], o["w2"], o["w3"], o["w4"], o["sep"])) for o in out]) + print("recorded") + + +missingdwarfs_DOC = r"""Missing bolometric flux, dwarfs: the JMMC Measured Stellar Diameters Catalogue (VizieR II/345) limb-darkened diameters of dwarfs (GSP-Phot log g above 4) within 100 pc, matched to Gaia DR3 within 5 arcsec by CDS XMatch, each diameter and parallax giving a radius, each radius and GSP-Phot temperature a luminosity, against Gaia's FLAME luminosity from the star's light; a star shining less than its surface and temperature allow by 20 per cent at 3 sigma has light missing, as a shade around it would take, and the stars shining more by as much are the mirror. Each read for its SIMBAD type, since a companion within the interferometer's field adds light or area. + + python -I seti.py infrared missingdwarfs [record] [--deficit 0.2] [--sigma 3] [--logg-min 4] [--plx-min 10] [--radius-arcsec 5]""" + + +def missingdwarfs_main(record=False, deficit=0.2, sigma=3.0, logg_min=4.0, plx_min=10.0, radius_arcsec=5.0): + jm = core.tap("vizier", 'SELECT SimbadName, "_RA", "_DE", LDdiam, e_LDdiam, Band, Method FROM "II/345/jmdc" WHERE LDdiam > 0 AND e_LDdiam > 0') + up = [dict(source_id=str(k), ra=float(r["_RA"]), dec=float(r["_DE"])) for k, r in enumerate(jm)] + gm = {} + for m in core.xmatch(up, "I/355/gaiadr3", radius_arcsec): + if num(m.get("Plx")) and (m["source_id"] not in gm or (num(m.get("Gmag")) or 99) < (num(gm[m["source_id"]].get("Gmag")) or 99)): + gm[m["source_id"]] = m + ids = sorted({str(m["Source"]) for m in gm.values()}) + ap = core.tap_by_ids("gaia", ids, "SELECT source_id, teff_gspphot, teff_gspphot_lower, teff_gspphot_upper, logg_gspphot, lum_flame, lum_flame_lower, lum_flame_upper " + "FROM gaiadr3.astrophysical_parameters WHERE source_id IN (%s)") + out = [] + for k, m in gm.items(): + a = ap.get(str(m["Source"])) + r = jm[int(k)] + if not a or num(a["teff_gspphot"]) is None or num(a["lum_flame"]) is None or (num(a["logg_gspphot"]) or 0) <= logg_min or num(m["Plx"]) <= plx_min: + continue + th, eth, plx, eplx = num(r["LDdiam"]), num(r["e_LDdiam"]), num(m["Plx"]), num(m.get("e_Plx")) or 0.0 + T, Tlo, Thi = num(a["teff_gspphot"]), num(a["teff_gspphot_lower"]) or num(a["teff_gspphot"]), num(a["teff_gspphot_upper"]) or num(a["teff_gspphot"]) + L, Llo, Lhi = num(a["lum_flame"]), num(a["lum_flame_lower"]) or num(a["lum_flame"]), num(a["lum_flame_upper"]) or num(a["lum_flame"]) + # radius in solar units from the angular diameter and the parallax (a solar radius at 1 kpc subtends 9.30e-3 mas of diameter), luminosity from radius and temperature + R = th / (9.30e-3 * plx) + pred = R * R * (T / 5772.0) ** 4 + e_pred = pred * math.sqrt((2 * eth / th) ** 2 + (2 * eplx / plx) ** 2 + (4 * (Thi - Tlo) / (2 * T)) ** 2) + e_l = (Lhi - Llo) / 2 + ratio = L / pred + z = (pred * (1 - deficit) - L) / math.hypot(e_pred * (1 - deficit), e_l) if (e_pred or e_l) else 0.0 + zm = (L - pred * (1 + deficit)) / math.hypot(e_pred * (1 + deficit), e_l) if (e_pred or e_l) else 0.0 + out.append(dict(name=str(r["SimbadName"]).strip(), gaia=str(m["Source"]), theta=th, R=R, T=T, pred=pred, L=L, ratio=ratio, z=z, zm=zm, band=r["Band"], method=r["Method"])) + deficits = [o for o in out if o["z"] > sigma] + excess = [o for o in out if o["zm"] > sigma] + sim = {} + both = deficits + excess + for k in range(0, len(both), 200): + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % o["gaia"] for o in both[k:k + 200])): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + for o in both: + o["simbad"] = sim.get(o["gaia"]) + typ = (o["simbad"] or (None, "", ""))[1] + o["vet"] = "binary" if typ in ("**", "SB*", "EB*") else "natural-type" if typ not in ("", "*", "PM*", "HV*") else None + rat = np.array([o["ratio"] for o in out]) + left = [o for o in deficits if o["vet"] is None] + print("%d dwarfs within %.0f pc with a measured diameter, a GSP-Phot temperature and a FLAME luminosity; Gaia over predicted luminosity median %.3f, robust scatter %.3f; " + "short by %.0f per cent at %g sigma: %d, over by as much: %d; unexplained deficits %d" % ( + len(out), 1000 / plx_min, float(np.median(rat)) if len(rat) else 0, core.robust_sigma(rat) if len(rat) else 0, 100 * deficit, sigma, len(deficits), len(excess), + len(left))) + for o in sorted(both, key=lambda o: o["ratio"]): + print(" %s (Gaia DR3 %s): %.3f mas, R %.3f, Teff %.0f K, predicted %.3f against FLAME %.3f Lsun (ratio %.2f, %s %.1f sigma), %s %s; SIMBAD %s; %s" % ( + o["name"], o["gaia"], o["theta"], o["R"], o["T"], o["pred"], o["L"], o["ratio"], "short" if o["z"] > sigma else "over", max(o["z"], o["zm"]), o["band"], o["method"], + o["simbad"], o["vet"] or "unexplained")) + json.dump(dict(n=len(out), deficits=deficits, excess=excess), open(core.results("missing_flux_dwarfs.json"), "w"), indent=1) + if record: + core.record_run( + "jmdc_missing_flux_dwarfs", "Missing bolometric flux, dwarfs", "JMMC Measured Stellar Diameters Catalogue (VizieR II/345); Gaia DR3 GSP-Phot and FLAME; SIMBAD", + "dwarfs within %.0f pc with a measured diameter, a temperature and a FLAME luminosity: %d" % (1000 / plx_min, len(out)), os.path.abspath(__file__), "missingdwarfs", + len(out), "stars", dict(deficit=deficit, sigma=sigma, logg_min=logg_min, plx_min=plx_min, radius_arcsec=radius_arcsec), + "the stars over-luminous by as much: %d; the sample's ratio, median %.3f, scatter %.3f" % (len(excess), float(np.median(rat)) if len(rat) else 0, + core.robust_sigma(rat) if len(rat) else 0), + "a star shining %.0f per cent less than its measured surface and temperature allow, at %g sigma" % (100 * deficit, sigma), + "%d short against %d over; %d unexplained" % (len(deficits), len(excess), len(left)), + [dict(target="gaia_dr3:%s" % o["gaia"], stat=o["ratio"], unit="FLAME over predicted luminosity", vet=o["vet"], + note="%s, %.3f mas, R %.3f, Teff %.0f, %s %s; SIMBAD %s" % (o["name"], o["theta"], o["R"], o["T"], o["band"], o["method"], o["simbad"])) for o in both]) + print("recorded") + + +hyadeswarm_DOC = r"""Warm stars in the Hyades: the Hyades members of Hunt and Reffert (2023) (VizieR J/A+A/673/A114, probability above 0.5) with BP-RP 0.5-2.5, matched to AllWISE within 3 arcsec at 2010.5, whose W1-W3 lies more than five robust widths and five errors above the cluster's own locus at their colour, mid-infrared heat at a star of the nearest cluster, which a settled cluster would show in many of its stars; the share set against the field's 0.8 per cent from the same test on the stars within 100 pc. Each candidate read for its AllWISE flags and its SIMBAD type. + + python -I seti.py infrared hyadeswarm [record] [--cluster Melotte_25] [--prob-min 0.5] [--widths 5] [--errors 5] [--field-share 0.0077] [--w3-err-max 0.2]""" + + +def cluster_warm_stars(cluster, prob_min=0.5, widths=5.0, errors=5.0, w3_err_max=0.2): + """Members of CLUSTER (Hunt and Reffert 2023) at BP-RP 0.5-2.5 with clean AllWISE W1 and W3, and those warm above the cluster's own W1-W3 locus, vetted by flags and SIMBAD type.""" + rows = core.tap("vizier", 'SELECT GaiaDR3, RA_ICRS, DE_ICRS, pmRA, pmDE, Plx, Gmag, "BP-RP", Prob FROM "J/A+A/673/A114/members" WHERE Name = \'%s\' AND Prob > %g' % (cluster, prob_min)) + st = [dict(id=str(r["GaiaDR3"]), ra=float(r["RA_ICRS"]), dec=float(r["DE_ICRS"]), pmra=num(r["pmRA"]) or 0.0, pmdec=num(r["pmDE"]) or 0.0, g=num(r["Gmag"]), c=num(r["BP-RP"])) + for r in rows if num(r["BP-RP"]) is not None and 0.5 <= num(r["BP-RP"]) <= 2.5] + up = [] + for s in st: + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, 2010.5) + up.append(dict(source_id=s["id"], ra=ra % 360, dec=de)) + w = {} + for k in range(0, len(up), 5000): + for m in core.xmatch(up[k:k + 5000], "II/328/allwise", 3.0): + w1, w3, e1, e3 = num(m.get("W1mag")), num(m.get("W3mag")), num(m.get("e_W1mag")), num(m.get("e_W3mag")) + if None not in (w1, w3, e1, e3) and e3 < w3_err_max and (m["source_id"] not in w or float(m["angDist"]) < w[m["source_id"]]["sep"]): + w[m["source_id"]] = dict(sep=float(m["angDist"]), c13=w1 - w3, e13=math.hypot(e1, e3), ccf=(m.get("ccf") or "").strip(), ex=(m.get("ex") or "").strip()) + st = [dict(s, **w[s["id"]]) for s in st if s["id"] in w] + bins = np.floor(np.array([s["c"] for s in st]) / 0.2).astype(int) + val = np.array([s["c13"] for s in st]) + for b in set(bins.tolist()): + k = np.nonzero(bins == b)[0] + med = float(np.median(val[k])) if len(k) >= 10 else None + wid = 1.4826 * float(np.median(np.abs(val[k] - med))) if med is not None else None + for i in k: + st[i]["r"] = (val[i] - med, wid) if med is not None else None + up_ = [s for s in st if s["r"] and s["r"][0] > max(widths * s["r"][1], errors * s["e13"])] + sim = {} + for k in range(0, len(up_), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in up_[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in up_: + s["simbad"] = sim.get(s["id"]) + s["vet"] = ("artefact" if s["ccf"].strip("0") or s["ex"] not in ("", "0") else + "natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else None) + return st, up_ + + +def hyadeswarm_main(record=False, cluster="Melotte_25", prob_min=0.5, widths=5.0, errors=5.0, field_share=0.0077, w3_err_max=0.2): + from scipy.stats import binom + st, up_ = cluster_warm_stars(cluster, prob_min, widths, errors, w3_err_max) + p = float(binom.sf(len(up_) - 1, len(st), field_share)) if up_ else 1.0 + for s in up_: + if s["vet"] is None and p > 0.01: + s["vet"] = "chance-rate" + left = [s for s in up_ if s["vet"] is None] + print("%d members of %s at BP-RP 0.5-2.5 with clean W1 and W3; W1-W3 %g widths above the cluster's locus: %d, a share of %.2f per cent against the field's %.2f (binomial p %.3g); " + "%d flagged, %d of known types; unexplained %d" % (len(st), cluster, widths, len(up_), 100 * len(up_) / max(len(st), 1), 100 * field_share, p, + sum(s["vet"] == "artefact" for s in up_), sum(s["vet"] == "natural-type" for s in up_), len(left))) + for s in sorted(up_, key=lambda s: -s["r"][0] / s["r"][1]): + print(" Gaia DR3 %s: BP-RP %.2f, G %.2f, W1-W3 +%.3f (width %.3f, error %.3f), flags %s/%s; SIMBAD %s; %s" % ( + s["id"], s["c"], s["g"], s["r"][0], s["r"][1], s["e13"], s["ccf"] or "-", s["ex"] or "-", s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), warm=up_), open(core.results("hyades_warm_stars.json"), "w"), indent=1) + if record: + core.record_run( + "hyades_warm_stars", "Warm stars in the Hyades", "Hunt and Reffert (2023) cluster members (VizieR J/A+A/673/A114); AllWISE (II/328) by CDS XMatch; SIMBAD", + "%s members at BP-RP 0.5-2.5 with clean W1 and W3: %d" % (cluster, len(st)), os.path.abspath(__file__), "hyadeswarm", len(st), "stars", + dict(cluster=cluster, prob_min=prob_min, widths=widths, errors=errors, field_share=field_share, w3_err_max=w3_err_max), "the field's share of %.2f per cent from the same test within 100 pc" % ( + 100 * field_share), "a share of stars with 12 um excess above the field's", "%d of %d (%.2f per cent) against the field's %.2f (binomial p %.3g); %d flagged, " + "%d of known types, %d unexplained" % (len(up_), len(st), 100 * len(up_) / max(len(st), 1), 100 * field_share, p, sum(s["vet"] == "artefact" for s in up_), + sum(s["vet"] == "natural-type" for s in up_), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["r"][0] / s["r"][1], 1), unit="widths above the cluster's W1-W3 locus", vet=s["vet"], + note="BP-RP %.2f, G %.2f, flags %s/%s; SIMBAD %s" % (s["c"], s["g"], s["ccf"] or "-", s["ex"] or "-", s["simbad"])) for s in up_]) + print("recorded") + + +w1only_DOC = r"""Light at 3.4 um alone: Gaia Catalogue of Nearby Stars objects (probability above 0.9, white-dwarf probability below 0.1, RUWE below 1.4, one IPD peak) at BP-RP 0.5-2.5 with 2MASS Ks and WISE W1, W2 and W3 measured to 0.03, 0.05, 0.05 and 0.1 mag, whose Ks-W1 lies more than five robust widths and five errors above the single-star locus at their BP-RP while Ks-W2 stays within two widths of its own; hot dust that brightens 3.4 um brightens 4.6 um more, so light confined to the W1 band is no photosphere's and no dust's, though the 3.3 um feature of aromatic grains lifts W1 alone where a nebula lies behind. The stars as far below the Ks-W1 locus are the mirror null. Each candidate read in AllWISE for its flags and its plain profile W1, since the catalogue's proper-motion-fitted W1 mis-fits some fast movers, in 2MASS for its quality flags and in SIMBAD. + + python -I seti.py infrared w1only [record] [--widths 5] [--errors 5] [--w2-widths 2] [--colour-min 0.5] [--colour-max 2.5]""" + + +def w1only_main(record=False, widths=5.0, errors=5.0, w2_widths=2.0, colour_min=0.5, colour_max=2.5): + rows = catalogues.gcns("source_id, phot_bp_mean_mag, phot_rp_mean_mag, k_m_2mass, k_msig_2mass, w1mpro_pm_wise, w1sigmpro_pm_wise, w2mpro_pm_wise, w2sigmpro_pm_wise, ra, dec", + "gcns_prob > 0.9 AND wd_prob < 0.1 AND ruwe < 1.4 AND ipd_frac_multi_peak <= 2 AND k_msig_2mass < 0.03 AND w1sigmpro_pm_wise < 0.05 " + "AND w2sigmpro_pm_wise < 0.05 AND w1mpro_pm_wise > 8", ranges=12, maxrec=200000) + st = [] + for r in rows: + bp, rp, k, w1, w2 = num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]), num(r["k_m_2mass"]), num(r["w1mpro_pm_wise"]), num(r["w2mpro_pm_wise"]) + if None in (bp, rp, k, w1, w2) or not colour_min <= bp - rp <= colour_max: + continue + st.append(dict(id=r["source_id"], c=bp - rp, k=k, w1=w1, ck1=k - w1, ck2=k - w2, ek1=math.hypot(float(r["k_msig_2mass"]), float(r["w1sigmpro_pm_wise"])), + ra=float(r["ra"]), dec=float(r["dec"]))) + bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int) + for key in ("ck1", "ck2"): + val = np.array([s[key] for s in st]) + for b in set(bins.tolist()): + kk = np.nonzero(bins == b)[0] + med = float(np.median(val[kk])) if len(kk) >= 30 else None + wid = 1.4826 * float(np.median(np.abs(val[kk] - med))) if med is not None else None + for i in kk: + st[i]["r" + key] = (val[i] - med, wid) if med is not None else None + up = [s for s in st if s["rck1"] and s["rck2"] and s["rck1"][0] > max(widths * s["rck1"][1], errors * s["ek1"]) and abs(s["rck2"][0]) < w2_widths * s["rck2"][1]] + down = [s for s in st if s["rck1"] and s["rck2"] and -s["rck1"][0] > max(widths * s["rck1"][1], errors * s["ek1"]) and abs(s["rck2"][0]) < w2_widths * s["rck2"][1]] + flags, plain, tm = {}, {}, {} + if up: + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in up], "II/328/allwise", 3.0): + if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]: + flags[m["source_id"]] = (float(m["angDist"]), (m.get("ccf") or "").strip(), (m.get("ex") or "").strip()) + plain[m["source_id"]] = num(m.get("W1mag")) + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in up], "II/246/out", 3.0): + if m["source_id"] not in tm or float(m["angDist"]) < tm[m["source_id"]][0]: + tm[m["source_id"]] = (float(m["angDist"]), (m.get("Qfl") or "").strip(), (m.get("X") or "").strip()) + sim = {} + for k in range(0, len(up), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in up[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in up: + f, q = flags.get(s["id"]), tm.get(s["id"]) + s["simbad"] = sim.get(s["id"]) + s["flags"] = f + s["tmass"] = q + # the proper-motion-fitted W1 of the nearby-star catalogue against AllWISE's plain profile W1: an excess the plain magnitude lacks is the fit's + w1p = plain.get(s["id"]) + s["plain_excess"] = (s["k"] - w1p) - (s["ck1"] - s["rck1"][0]) if w1p is not None else None + # a star with no AllWISE source within 3 arcsec of its 2016 position has moved out of the match, and its fitted W1 belongs to the same mis-fit + s["vet"] = ("artefact" if (f and (f[1].strip("0") or f[2] not in ("", "0"))) or (q and (q[1] != "AAA" or q[2] not in ("", "0"))) or + (s["plain_excess"] is not None and s["plain_excess"] < widths * s["rck1"][1]) else + "astrometry" if f is None else + "natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else None) + left = [s for s in up if s["vet"] is None] + print("%d stars; Ks-W1 %g widths above the locus with Ks-W2 on its own: %d; as far below: %d; unexplained %d" % (len(st), widths, len(up), len(down), len(left))) + for s in sorted(up, key=lambda s: -s["rck1"][0] / s["rck1"][1]): + print(" Gaia DR3 %s: BP-RP %.2f, W1 %.2f, Ks-W1 +%.3f (width %.3f; with the plain W1 %s), Ks-W2 %+.3f; AllWISE %s; 2MASS %s; SIMBAD %s; %s" % ( + s["id"], s["c"], s["w1"], s["rck1"][0], s["rck1"][1], "%+.3f" % s["plain_excess"] if s["plain_excess"] is not None else "-", s["rck2"][0], s["flags"], s["tmass"], + s["simbad"], s["vet"])) + if record: + core.record_run("w1_only_excess", "Light at 3.4 um alone", "Gaia Catalogue of Nearby Stars with its 2MASS and WISE photometry (external.gaiaedr3_gcns_main_1); " + "AllWISE (II/328) by CDS XMatch; SIMBAD", "stars within 100 pc at BP-RP %g-%g with clean Ks, W1 and W2: %d" % (colour_min, colour_max, len(st)), + os.path.abspath(__file__), "w1only", len(st), "stars", dict(widths=widths, errors=errors, w2_widths=w2_widths, colour=[colour_min, colour_max]), + "the stars as far below the Ks-W1 locus: %d" % len(down), "a star brighter at 3.4 um than its 2.2 and 4.6 um light allow", + "%d above against %d below; %d unexplained" % (len(up), len(down), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["rck1"][0] / s["rck1"][1], 1), unit="widths above the Ks-W1 locus", + vet=s["vet"] or ("chance-rate" if len(up) <= len(down) + 3 * math.sqrt(max(len(down), 1)) else None), + note="W1 %.2f, Ks-W2 %+.2f, excess with the plain W1 %s; AllWISE %s; 2MASS %s; SIMBAD %s" % ( + s["w1"], s["rck2"][0], "%+.3f" % s["plain_excess"] if s["plain_excess"] is not None else "-", s["flags"], s["tmass"], s["simbad"])) for s in up]) + print("recorded") + + +methane_DOC = r"""Methane in a star's light: Gaia Catalogue of Nearby Stars objects (probability above 0.9, white-dwarf probability below 0.1) at BP-RP 0.5-3.0 with WISE W1 and W2 measured to 0.05 mag, fainter than W1 8, where WISE is unsaturated, whose W1-W2 exceeds +0.8, the colour methane absorption at 3.4 um gives a T dwarf and no photosphere above 1500 K can show, a warm star's light carrying a cold body's band; each read in AllWISE for its flags, in Gaia for a second source within the 6 arcsec WISE beam and in SIMBAD, since a T-dwarf companion in the beam, a blend or a contaminated W1 gives the colour naturally. + + python -I seti.py infrared methane [record] [--w1w2-min 0.8] [--w1-min 8] [--colour-min 0.5] [--colour-max 3.0] [--beam-arcsec 8]""" + + +def methane_main(record=False, w1w2_min=0.8, w1_min=8.0, colour_min=0.5, colour_max=3.0, beam_arcsec=8.0): + rows = catalogues.gcns("source_id, ra, dec, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, ruwe, ipd_frac_multi_peak, w1mpro_pm_wise, w1sigmpro_pm_wise, " + "w2mpro_pm_wise, w2sigmpro_pm_wise", + "gcns_prob > 0.9 AND wd_prob < 0.1 AND w1sigmpro_pm_wise < 0.05 AND w2sigmpro_pm_wise < 0.05 AND w1mpro_pm_wise > %g AND w1mpro_pm_wise - w2mpro_pm_wise > %g" % (w1_min, w1w2_min), + ranges=12) + st = [] + for r in rows: + bp, rp = num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]) + if bp is None or rp is None or not colour_min <= bp - rp <= colour_max: + continue + st.append(dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), plx=num(r["parallax"]), g=num(r["phot_g_mean_mag"]), c=bp - rp, + w1=num(r["w1mpro_pm_wise"]), w2=num(r["w2mpro_pm_wise"]), ruwe=num(r["ruwe"]), multi=num(r["ipd_frac_multi_peak"]))) + flags = {} + if st: + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in st], "II/328/allwise", 3.0): + if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]: + flags[m["source_id"]] = (float(m["angDist"]), (m.get("ccf") or "").strip(), (m.get("ex") or "").strip(), num(m.get("W1mag")), num(m.get("W2mag"))) + sim = {} + for k in range(0, len(st), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in st[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in st: + f = flags.get(s["id"]) + s["flags"] = f + s["simbad"] = sim.get(s["id"]) + s["plain"] = (f[3] - f[4]) if f and f[3] is not None and f[4] is not None else None + s["near"] = ["%s (G %.1f)" % (r["source_id"], float(r["phot_g_mean_mag"])) for r in core.tap( + "gaia", "SELECT source_id, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f)) AND source_id <> %s " + "AND phot_g_mean_mag < %.2f" % (s["ra"], s["dec"], beam_arcsec / 3600.0, s["id"], (s["g"] or 20) + 6))] if s["g"] is not None else [] + typ = (s["simbad"] or (None, "", ""))[1] + bad = (f and (f[1].strip("0") or f[2] not in ("", "0"))) or (s["plain"] is not None and s["plain"] < w1w2_min) + s["vet"] = ("artefact" if bad else "natural-type" if typ not in ("", "*", "PM*", "HV*", "low-mass*") else "blend" if s["near"] else + "artefact" if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 else None) + left = [s for s in st if s["vet"] is None] + print("%d stars within 100 pc at BP-RP %g-%g fainter than W1 %g with W1-W2 above %g: %d flagged, blended in Gaia or without the colour in AllWISE's plain magnitudes, %d with a Gaia neighbour in the " + "beam, %d of known types; unexplained %d" % (len(st), colour_min, colour_max, w1_min, w1w2_min, sum(s["vet"] == "artefact" for s in st), sum(s["vet"] == "blend" for s in st), + sum(s["vet"] == "natural-type" for s in st), len(left))) + for s in sorted(st, key=lambda s: -(s["w1"] - s["w2"])): + print(" Gaia DR3 %s: BP-RP %.2f, G %.2f, W1-W2 %+.2f (plain %s), RUWE %s, AllWISE %s, neighbours %s; SIMBAD %s; %s" % ( + s["id"], s["c"], s["g"], s["w1"] - s["w2"], "%+.2f" % s["plain"] if s["plain"] is not None else "-", s["ruwe"], s["flags"], s["near"] or "-", s["simbad"], + s["vet"] or "unexplained")) + json.dump(st, open(core.results("methane_in_starlight.json"), "w"), indent=1) + if record: + core.record_run( + "gcns_methane_colour", "Methane in a star's light", "Gaia Catalogue of Nearby Stars with its WISE photometry (external.gaiaedr3_gcns_main_1); AllWISE (II/328) by CDS " + "XMatch; Gaia DR3; SIMBAD", "stars within 100 pc at BP-RP %g-%g fainter than W1 %g with clean W1 and W2 and W1-W2 above %g: %d" % (colour_min, colour_max, w1_min, w1w2_min, len(st)), + os.path.abspath(__file__), "methane", len(st), "stars", dict(w1w2_min=w1w2_min, w1_min=w1_min, colour=[colour_min, colour_max], beam_arcsec=beam_arcsec), + "AllWISE's flags and plain magnitudes, Gaia's image flags and neighbours, SIMBAD's types", "a warm star whose W1-W2 shows a T dwarf's methane band", + "%d: %d artefacts or blends in the photometry, %d with a neighbour in the beam, %d of known types; %d unexplained" % ( + len(st), sum(s["vet"] == "artefact" for s in st), sum(s["vet"] == "blend" for s in st), sum(s["vet"] == "natural-type" for s in st), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["w1"] - s["w2"], 3), unit="W1-W2", vet=s["vet"], + note="BP-RP %.2f, G %.2f, plain W1-W2 %s, RUWE %s, AllWISE %s, neighbours %s; SIMBAD %s" % ( + s["c"], s["g"], s["plain"], s["ruwe"], s["flags"], s["near"] or "none", s["simbad"])) for s in st]) + print("recorded") + + +roomheat_DOC = r"""Waste heat at room temperature: Gaia Catalogue of Nearby Stars objects (probability above 0.9, white-dwarf probability below 0.1, RUWE below 1.4, one IPD peak) with 2MASS Ks and WISE W3 and W4 measured to 0.03, 0.1 and 0.2 mag, those whose Ks-W3 and Ks-W4 both stand five robust widths and five errors above the single-star locus at their BP-RP, the colour temperature of the excess from the ratio of its 12 and 22 um fluxes, and the count between 280 and 320 K against the bins of that width on either side; debris discs span a continuum of temperatures where habitats and machinery radiate at the temperature of water, and each star is read in AllWISE for its flags. + +With `--sunlike true` the colours are those of Sun-like stars, BP-RP 0.65-1.0, the stars every searcher looks at first, recorded as its own run. + + python -I seti.py infrared roomheat [record] [--widths 5] [--errors 5] [--t-lo 280] [--t-hi 320] [--colour-min 0.5] [--colour-max 2.5] [--sunlike]""" + +ROOMHEAT_W3 = (11.56e-6, 31.674) +ROOMHEAT_W4 = (22.09e-6, 8.363) + + +def roomheat_planck_ratio(t): + """The ratio of Planck intensities at W4 to W3 at temperature T.""" + h, c, k = 6.62607e-34, 2.99792e8, 1.380649e-23 + def b(lam): + return (1 / lam ** 3) / math.expm1(h * c / (lam * k * t)) + return b(ROOMHEAT_W4[0]) / b(ROOMHEAT_W3[0]) + + +def roomheat_temperature(ratio): + """The temperature whose Planck W4/W3 ratio equals RATIO, by bisection between 20 and 3000 K.""" + lo, hi = 20.0, 3000.0 + if ratio >= roomheat_planck_ratio(lo) or ratio <= roomheat_planck_ratio(hi): + return None + for _ in range(60): + mid = math.sqrt(lo * hi) + if roomheat_planck_ratio(mid) > ratio: + lo = mid + else: + hi = mid + return math.sqrt(lo * hi) + + +def roomheat_main(record=False, widths=5.0, errors=5.0, t_lo=280.0, t_hi=320.0, colour_min=0.5, colour_max=2.5, sunlike=False): + if sunlike: + colour_min, colour_max = 0.65, 1.0 + from scipy.stats import poisson + rows = catalogues.gcns("source_id, ra, dec, phot_bp_mean_mag, phot_rp_mean_mag, k_m_2mass, k_msig_2mass, w3mpro_wise, w3sigmpro_wise, w4mpro_wise, w4sigmpro_wise", + "gcns_prob > 0.9 AND wd_prob < 0.1 AND ruwe < 1.4 AND ipd_frac_multi_peak <= 2 AND k_msig_2mass < 0.03 AND w3sigmpro_wise < 0.1 " + "AND w4sigmpro_wise < 0.2", ranges=12) + st = [] + for r in rows: + bp, rp, k, w3, w4 = num(r["phot_bp_mean_mag"]), num(r["phot_rp_mean_mag"]), num(r["k_m_2mass"]), num(r["w3mpro_wise"]), num(r["w4mpro_wise"]) + if None in (bp, rp, k, w3, w4) or not colour_min <= bp - rp <= colour_max: + continue + st.append(dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), c=bp - rp, k=k, w3=w3, w4=w4, ck3=k - w3, ck4=k - w4, + ek3=math.hypot(float(r["k_msig_2mass"]), float(r["w3sigmpro_wise"])), ek4=math.hypot(float(r["k_msig_2mass"]), float(r["w4sigmpro_wise"])))) + bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int) + for key in ("ck3", "ck4"): + val = np.array([s[key] for s in st]) + for b in set(bins.tolist()): + kk = np.nonzero(bins == b)[0] + med = float(np.median(val[kk])) if len(kk) >= 30 else None + wid = 1.4826 * float(np.median(np.abs(val[kk] - med))) if med is not None else None + for i in kk: + st[i]["r" + key] = (val[i] - med, wid) if med is not None else None + ex = [s for s in st if s["rck3"] and s["rck4"] and s["rck3"][0] > max(widths * s["rck3"][1], errors * s["ek3"]) and s["rck4"][0] > max(widths * s["rck4"][1], errors * s["ek4"])] + for s in ex: + f3 = ROOMHEAT_W3[1] * (10 ** (-0.4 * s["w3"]) - 10 ** (-0.4 * (s["w3"] + s["rck3"][0]))) + f4 = ROOMHEAT_W4[1] * (10 ** (-0.4 * s["w4"]) - 10 ** (-0.4 * (s["w4"] + s["rck4"][0]))) + s["f3_mjy"], s["f4_mjy"] = f3 * 1000, f4 * 1000 + s["t"] = roomheat_temperature(f4 / f3) if f3 > 0 and f4 > 0 else None + flags = {} + if ex: + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in ex], "II/328/allwise", 3.0): + if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]: + flags[m["source_id"]] = (float(m["angDist"]), (m.get("ccf") or "").strip(), (m.get("ex") or "").strip()) + clean = [] + for s in ex: + f = flags.get(s["id"]) + s["flags"] = f + s["artefact"] = bool(f and (f[1].strip("0") or f[2] not in ("", "0"))) + if s["t"] and not s["artefact"]: + clean.append(s) + ts = np.array([s["t"] for s in clean]) + width = t_hi - t_lo + room = int(np.sum((ts >= t_lo) & (ts < t_hi))) + beside = [int(np.sum((ts >= t_lo - width) & (ts < t_lo))), int(np.sum((ts >= t_hi) & (ts < t_hi + width)))] + exp = float(np.mean(beside)) + p = float(poisson.sf(room - 1, exp)) if room > exp else 1.0 + for s in clean: + s["vet"] = ("chance-rate" if p > 0.01 else None) if t_lo <= s["t"] < t_hi else "dust" + hist = {int(lo): int(np.sum((ts >= lo) & (ts < lo + 100))) for lo in range(0, 1000, 100)} + print("%d stars; excess at both 12 and 22 um: %d, %d of them unflagged with a temperature; by hundreds of kelvin: %s; at %g-%g K: %d against %.1f in the bins beside (%s; Poisson " + "p %.3g)" % (len(st), len(ex), len(clean), hist, t_lo, t_hi, room, exp, beside, p)) + for s in sorted(clean, key=lambda s: s["t"]): + if t_lo - width <= s["t"] < t_hi + width: + print(" Gaia DR3 %s: BP-RP %.2f, %.0f K from %.1f and %.1f mJy of excess at 12 and 22 um (Ks-W3 +%.2f, Ks-W4 +%.2f); %s" % ( + s["id"], s["c"], s["t"], s["f3_mjy"], s["f4_mjy"], s["rck3"][0], s["rck4"][0], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), excess=[dict((k, v) for k, v in s.items() if k not in ("rck3", "rck4")) for s in ex], hist=hist), open(core.results("room_temperature_heat.json"), "w"), + indent=1) + if record: + core.record_run( + "gcns_room_temperature_sunlike" if sunlike else "gcns_room_temperature_excess", "Dyson spheres built for our eyes" if sunlike else "Waste heat at room temperature", "Gaia Catalogue of Nearby Stars with its 2MASS and WISE photometry (external.gaiaedr3_gcns_main_1); " + "AllWISE (II/328) by CDS XMatch", "stars within 100 pc at BP-RP %g-%g with clean Ks, W3 and W4: %d; with excess at both 12 and 22 um: %d" % (colour_min, colour_max, len(st), len(ex)), + os.path.abspath(__file__), "roomheat", len(st), "stars", dict(widths=widths, errors=errors, t_lo=t_lo, t_hi=t_hi, colour=[colour_min, colour_max]), + "the temperature bins of the same width on either side: %s; the excesses by hundreds of kelvin: %s" % (beside, hist), + "an excess of excess temperatures between %g and %g K" % (t_lo, t_hi), "%d against %.1f (Poisson p %.3g)" % (room, exp, p), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["t"]), unit="K, excess colour temperature", vet=s["vet"], + note="BP-RP %.2f, excess %.1f and %.1f mJy at 12 and 22 um, Ks-W3 +%.2f, Ks-W4 +%.2f" % (s["c"], s["f3_mjy"], s["f4_mjy"], s["rck3"][0], s["rck4"][0])) + for s in clean if t_lo - width <= s["t"] < t_hi + width]) + print("recorded") + + +clusterswarm_DOC = r"""Warm stars in the nearest clusters: every Hunt and Reffert (2023) cluster or moving group within 250 pc with 100 or more members, each member of probability above 0.5 at BP-RP 0.5-2.5 matched to AllWISE at 2010.5, those whose W1-W3 lies five robust widths and five errors above the cluster's own locus, each cluster's warm share against the field's 0.77 per cent from the same test within 100 pc, a colony that has settled a cluster and warmed its stars; each warm star read in AllWISE for its flags and in SIMBAD, the warm stars of clusters younger than 30 Myr being the disc-bearing young stars such clusters hold, and a cluster's share judged against the number of clusters tested. + + python -I seti.py infrared clusterswarm [record] [--dist-max-pc 250] [--members-min 100] [--prob-min 0.5] [--widths 5] [--errors 5] [--field-share 0.0077] [--w3-err-max 0.2] [--young-logage 7.5]""" + + +def clusterswarm_main(record=False, dist_max_pc=250.0, members_min=100, prob_min=0.5, widths=5.0, errors=5.0, field_share=0.0077, w3_err_max=0.2, young_logage=7.5): + from scipy.stats import binom + cl = core.tap("vizier", 'SELECT Name, Type, N, dist50, logAge50 FROM "J/A+A/673/A114/clusters" WHERE dist50 < %g AND N >= %d AND Type IN (\'o\', \'m\') ORDER BY dist50' % ( + dist_max_pc, members_min)) + out, rows_all = [], [] + for c in cl: + name = str(c["Name"]).strip() + st, warm = cluster_warm_stars(name, prob_min, widths, errors, w3_err_max) + if not st: + continue + p = float(binom.sf(len(warm) - 1, len(st), field_share)) if warm else 1.0 + o = dict(name=name, kind=str(c["Type"]).strip(), members=int(num(c["N"]) or 0), dist=num(c["dist50"]), logage=num(c["logAge50"]), n=len(st), warm=len(warm), p=p, + share=len(warm) / len(st)) + out.append(o) + for s in warm: + if s["vet"] is None and (o["logage"] or 9) < young_logage: + s["vet"] = "young-star" + elif s["vet"] is None and p * len(cl) > 0.01: + s["vet"] = "chance-rate" + rows_all.append(dict(cluster=name, **dict((k, v) for k, v in s.items() if k != "r"), widths=round(s["r"][0] / s["r"][1], 1))) + hot = [o for o in out if o["p"] * len(out) < 0.01] + left = [s for s in rows_all if s["vet"] is None] + print("%d clusters within %g pc with %d or more members, %d with members tested; warm shares against the field's %.2f per cent, significant over the %d tested: %d; warm stars %d " + "(%d flagged, %d of known types, %d in clusters under 30 Myr); unexplained %d" % ( + len(cl), dist_max_pc, members_min, len(out), 100 * field_share, len(out), len(hot), len(rows_all), sum(s["vet"] == "artefact" for s in rows_all), + sum(s["vet"] == "natural-type" for s in rows_all), sum(s["vet"] == "young-star" for s in rows_all), len(left))) + for o in sorted(out, key=lambda o: o["p"]): + print(" %s (%s, %.0f pc, log age %s): %d of %d warm, %.2f per cent (binomial p %.3g)%s" % ( + o["name"], o["kind"], o["dist"], o["logage"], o["warm"], o["n"], 100 * o["share"], o["p"], ", beyond chance over the clusters tested" if o in hot else "")) + for s in left: + print(" unexplained Gaia DR3 %s in %s: BP-RP %.2f, G %.2f, %.1f widths; SIMBAD %s" % (s["id"], s["cluster"], s["c"], s["g"], s["widths"], s["simbad"])) + json.dump(dict(clusters=out, warm=rows_all), open(core.results("clusters_warm_stars.json"), "w"), indent=1) + if record: + core.record_run( + "clusters_warm_stars", "Warm stars in the nearest clusters", "Hunt and Reffert (2023) clusters and members (VizieR J/A+A/673/A114); AllWISE (II/328) by CDS XMatch; SIMBAD", + "clusters within %g pc with %d or more members: %d, %d with tested members" % (dist_max_pc, members_min, len(cl), len(out)), os.path.abspath(__file__), "clusterswarm", + sum(o["n"] for o in out), "stars", dict(dist_max_pc=dist_max_pc, members_min=members_min, prob_min=prob_min, widths=widths, errors=errors, field_share=field_share, + w3_err_max=w3_err_max, young_logage=young_logage), + "the field's share of %.2f per cent, judged over %d clusters" % (100 * field_share, len(out)), "a cluster whose share of stars with 12 um excess exceeds the field's", + "%d clusters beyond chance; %d warm stars, %d flagged, %d of known types, %d in clusters under 30 Myr, %d unexplained" % ( + len(hot), len(rows_all), sum(s["vet"] == "artefact" for s in rows_all), sum(s["vet"] == "natural-type" for s in rows_all), + sum(s["vet"] == "young-star" for s in rows_all), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=s["widths"], unit="widths above the cluster's W1-W3 locus", vet=s["vet"], + note="%s; BP-RP %.2f, G %.2f, flags %s/%s; SIMBAD %s" % (s["cluster"], s["c"], s["g"], s["ccf"] or "-", s["ex"] or "-", s["simbad"])) for s in rows_all]) + print("recorded") + + +oldsunlike_DOC = r"""Waste heat at the oldest Sun-like neighbours: GALAH DR4 dwarfs within 200 pc at 5300-6200 K and log g above 4.0 with a clean spectroscopic fit and an isochrone age, matched to AllWISE at 2010.5, those whose W1-W3 lies five robust widths and five errors above the locus at their temperature, the warm share of the oldest tenth against the rest, since the oldest Sun-like stars have had longest to be settled and warmed; each warm old star read in AllWISE for its flags and in SIMBAD. + + python -I seti.py infrared oldsunlike [record] [--plx-min 5] [--teff-min 5300] [--teff-max 6200] [--logg-min 4] [--old-fraction 0.1] [--widths 5] [--errors 5] [--w3-err-max 0.2]""" + + +def oldsunlike_main(record=False, plx_min=5.0, teff_min=5300.0, teff_max=6200.0, logg_min=4.0, old_fraction=0.1, widths=5.0, errors=5.0, w3_err_max=0.2): + from scipy.stats import fisher_exact + rows = core.tap_async("datacentral", "SELECT sobject_id, gaiadr3_source_id, ra, dec, teff, logg, age, parallax FROM galah_dr4.mainstartable WHERE flag_sp = 0 AND parallax > %g AND " + "teff BETWEEN %g AND %g AND logg > %g AND age IS NOT NULL" % (plx_min, teff_min, teff_max, logg_min), maxrec=200000) + st = {} + for r in rows: + gid = str(r["gaiadr3_source_id"] or "").strip() + if gid and gid not in st: + st[gid] = dict(id=gid, ra=float(r["ra"]), dec=float(r["dec"]), teff=float(r["teff"]), logg=num(r["logg"]), age=float(r["age"]), plx=num(r["parallax"])) + st = list(st.values()) + w = {} + for k in range(0, len(st), 5000): + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in st[k:k + 5000]], "II/328/allwise", 5.0): + w1, w3, e1, e3 = num(m.get("W1mag")), num(m.get("W3mag")), num(m.get("e_W1mag")), num(m.get("e_W3mag")) + if None not in (w1, w3, e1, e3) and e3 < w3_err_max and (m["source_id"] not in w or float(m["angDist"]) < w[m["source_id"]]["sep"]): + w[m["source_id"]] = dict(sep=float(m["angDist"]), c13=w1 - w3, e13=math.hypot(e1, e3), ccf=(m.get("ccf") or "").strip(), ex=(m.get("ex") or "").strip()) + st = [dict(s, **w[s["id"]]) for s in st if s["id"] in w] + bins = np.floor(np.array([s["teff"] for s in st]) / 100.0).astype(int) + val = np.array([s["c13"] for s in st]) + for b in set(bins.tolist()): + k = np.nonzero(bins == b)[0] + med = float(np.median(val[k])) if len(k) >= 20 else None + wid = 1.4826 * float(np.median(np.abs(val[k] - med))) if med is not None else None + for i in k: + st[i]["r"] = (val[i] - med, wid) if med is not None else None + ages = sorted(s["age"] for s in st) + cut = ages[int((1 - old_fraction) * len(ages))] if ages else 0 + old = [s for s in st if s["age"] >= cut] + young = [s for s in st if s["age"] < cut] + warm = [s for s in st if s["r"] and s["r"][0] > max(widths * s["r"][1], errors * s["e13"])] + warm_old = [s for s in warm if s["age"] >= cut] + sim = {} + for k in range(0, len(warm_old), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in warm_old[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + a, b = len(warm_old), len(old) - len(warm_old) + c, d = len(warm) - len(warm_old), len(young) - (len(warm) - len(warm_old)) + p = float(fisher_exact([[a, b], [c, d]], alternative="greater")[1]) if old and young else 1.0 + for s in warm_old: + s["simbad"] = sim.get(s["id"]) + s["vet"] = ("artefact" if s["ccf"].strip("0") or s["ex"] not in ("", "0") else "natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else + "chance-rate" if p > 0.01 else None) + left = [s for s in warm_old if s["vet"] is None] + print("%d GALAH dwarfs within %.0f pc at %g-%g K with ages and clean W1 and W3; the oldest tenth is older than %.1f Gyr (%d stars); warm: %d of the oldest against %d of the " + "%d younger (Fisher p %.3g); %d flagged, %d of known types; unexplained %d" % (len(st), 1000 / plx_min, teff_min, teff_max, cut, len(old), a, c, len(young), p, + sum(s["vet"] == "artefact" for s in warm_old), sum(s["vet"] == "natural-type" for s in warm_old), + len(left))) + for s in sorted(warm_old, key=lambda s: -s["r"][0] / s["r"][1]): + print(" Gaia DR3 %s: %.1f Gyr, %.0f K, W1-W3 +%.3f (width %.3f, error %.3f), flags %s/%s; SIMBAD %s; %s" % ( + s["id"], s["age"], s["teff"], s["r"][0], s["r"][1], s["e13"], s["ccf"] or "-", s["ex"] or "-", s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), cut=cut, old=len(old), warm_old=[dict((k, v) for k, v in s.items() if k != "r") for s in warm_old], warm_young=c), + open(core.results("oldest_sunlike_warm.json"), "w"), indent=1) + if record: + core.record_run( + "galah_oldest_sunlike_warm", "Waste heat at the oldest Sun-like neighbours", "GALAH DR4 mainstartable (Data Central); AllWISE (II/328) by CDS XMatch; SIMBAD", + "GALAH dwarfs within %.0f pc at %g-%g K with ages and clean W1 and W3: %d, the oldest tenth %d" % (1000 / plx_min, teff_min, teff_max, len(st), len(old)), + os.path.abspath(__file__), "oldsunlike", len(st), "stars", dict(plx_min=plx_min, teff=[teff_min, teff_max], logg_min=logg_min, old_fraction=old_fraction, widths=widths, + errors=errors, w3_err_max=w3_err_max), + "the warm share of the younger nine tenths: %d of %d" % (c, len(young)), "a raised share of 12 um excess among the oldest Sun-like stars", + "%d warm of the oldest %d against %d of %d younger (Fisher p %.3g); %d flagged, %d of known types, %d unexplained" % ( + a, len(old), c, len(young), p, sum(s["vet"] == "artefact" for s in warm_old), sum(s["vet"] == "natural-type" for s in warm_old), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["r"][0] / s["r"][1], 1), unit="widths above the W1-W3 locus", vet=s["vet"], + note="%.1f Gyr, %.0f K, flags %s/%s; SIMBAD %s" % (s["age"], s["teff"], s["ccf"] or "-", s["ex"] or "-", s["simbad"])) for s in warm_old]) + print("recorded") + + +wisemissing_DOC = r"""Stars WISE could not see: Gaia Catalogue of Nearby Stars objects (probability above 0.9) brighter than G 15 that carry no WISE counterpart in the catalogue's own match, each carried to 2010.5 and sought again in AllWISE (II/328) within 3 arcsec by CDS XMatch; a star within 100 pc shines at W1 brighter than 13 and WISE saw every such star, so a star it did not see was hidden in 2010 or is confused; each unmatched star read for saturation, since WISE's detectors saturate on stars brighter than W1 8.5, estimated from G and colour, and the catalogue drops or displaces them, for a brighter Gaia neighbour within 10 arcsec, whose glare and blending swallow it, for a star 2 mag brighter within an arcminute or brighter than G 4 within three or V 3 within ten, whose halo and diffraction spikes hide it, in SIMBAD, in unWISE (II/363), whose deeper coadds list what AllWISE's extraction dropped, and for the Galactic plane, where confusion thins the catalogue. + + python -I seti.py infrared wisemissing [record] [--g-max 15] [--radius-arcsec 3] [--beam-arcsec 10] [--w1-sat 8.5] [--halo-arcsec 60] [--halo-mag 2] [--unwise-epoch 2015.4] [--glare-arcsec 180] [--glare-g 4] [--plane-deg 10] [--far-glare-arcsec 600] [--far-glare-g 3]""" + + +def wisemissing_main(record=False, g_max=15.0, radius_arcsec=3.0, beam_arcsec=10.0, w1_sat=8.5, halo_arcsec=60.0, halo_mag=2.0, unwise_epoch=2015.4, glare_arcsec=180.0, + glare_g=4.0, plane_deg=10.0, far_glare_arcsec=600.0, far_glare_g=3.0): + rows = catalogues.gcns("source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, ruwe, ipd_frac_multi_peak, w1mpro_pm_wise", + "gcns_prob > 0.9 AND phot_g_mean_mag < %g" % g_max, ranges=12) + n_all = len(rows) + st = [dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), pmra=num(r["pmra"]) or 0.0, pmdec=num(r["pmdec"]) or 0.0, plx=num(r["parallax"]), g=num(r["phot_g_mean_mag"]), + c=(num(r["phot_bp_mean_mag"]) - num(r["phot_rp_mean_mag"])) if num(r["phot_bp_mean_mag"]) and num(r["phot_rp_mean_mag"]) else None, ruwe=num(r["ruwe"]), + multi=num(r["ipd_frac_multi_peak"])) for r in rows if num(r["w1mpro_pm_wise"]) is None] + up = [] + for s in st: + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, 2010.5) + up.append(dict(source_id=s["id"], ra=ra % 360, dec=de)) + seen = set() + for k in range(0, len(up), 5000): + seen |= {m["source_id"] for m in core.xmatch(up[k:k + 5000], "II/328/allwise", radius_arcsec)} + gone = [s for s in st if s["id"] not in seen] + near = {} + gmag = {s["id"]: s["g"] for s in gone} + for k in range(0, len(gone), 5000): + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in gone[k:k + 5000]], "I/355/gaiadr3", beam_arcsec): + other, g = str(m.get("Source") or "").strip(), num(m.get("Gmag")) + if float(m["angDist"]) > 0.5 and other != m["source_id"] and g is not None and g < gmag[m["source_id"]] + 1: + near.setdefault(m["source_id"], []).append((other, g)) + halo = {} + for k in range(0, len(gone), 5000): + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in gone[k:k + 5000]], "I/355/gaiadr3", halo_arcsec): + other, g = str(m.get("Source") or "").strip(), num(m.get("Gmag")) + if float(m["angDist"]) > beam_arcsec and other != m["source_id"] and g is not None and g < gmag[m["source_id"]] - halo_mag: + if m["source_id"] not in halo or g < halo[m["source_id"]][1]: + halo[m["source_id"]] = (other, g, round(float(m["angDist"]), 1)) + sim = {} + for k in range(0, len(gone), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in gone[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + unwise = {} + later = [] + for s in gone: + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, unwise_epoch) + later.append(dict(source_id=s["id"], ra=ra % 360, dec=de)) + for k in range(0, len(later), 5000): + for m in core.xmatch(later[k:k + 5000], "II/363/unwise", radius_arcsec): + if m["source_id"] not in unwise or float(m["angDist"]) < unwise[m["source_id"]][0]: + unwise[m["source_id"]] = (round(float(m["angDist"]), 2), num(m.get("FW1")), num(m.get("FW2"))) + glare = {} + for k in range(0, len(gone), 5000): + for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in gone[k:k + 5000]], "I/355/gaiadr3", glare_arcsec): + other, g = str(m.get("Source") or "").strip(), num(m.get("Gmag")) + if other != m["source_id"] and g is not None and g < glare_g and (m["source_id"] not in glare or g < glare[m["source_id"]][1]): + glare[m["source_id"]] = (other, g, round(float(m["angDist"]), 1)) + from astropy.coordinates import SkyCoord + import astropy.units as u + lat = SkyCoord(ra=[s["ra"] for s in gone] * u.deg, dec=[s["dec"] for s in gone] * u.deg, frame="icrs").galactic.b.deg if gone else [] + for s, b in zip(gone, lat): + s["b"] = float(b) + for s in gone: + s["near"] = near.get(s["id"], []) + s["halo"] = halo.get(s["id"]) or glare.get(s["id"]) + s["unwise"] = unwise.get(s["id"]) + if not s["halo"] and not s["near"] and not s["unwise"]: + # the glare of a star of the first magnitudes reaches ten arcminutes, beyond the cross-match service's radius, and such stars are often absent from Gaia, so SIMBAD's V is read + for r in core.simbad("SELECT b.main_id, f.V, DISTANCE(POINT('ICRS', b.ra, b.dec), POINT('ICRS', %.6f, %.6f)) * 3600 AS d FROM basic AS b JOIN allfluxes AS f ON " + "f.oidref = b.oid WHERE f.V < %g AND CONTAINS(POINT('ICRS', b.ra, b.dec), CIRCLE('ICRS', %.6f, %.6f, %.5f)) = 1" % ( + s["ra"], s["dec"], far_glare_g, s["ra"], s["dec"], far_glare_arcsec / 3600.0)): + if float(r["d"]) > beam_arcsec: + s["halo"] = (" ".join(str(r["main_id"]).split()), num(r["V"]), round(float(r["d"]), 1)) + s["simbad"] = sim.get(s["id"]) + typ = (s["simbad"] or (None, "", ""))[1] + s["w1_est"] = s["g"] - (0.5 + 1.3 * (s["c"] if s["c"] is not None else 1.0)) + s["vet"] = ("artefact" if s["w1_est"] < w1_sat else "blend" if s["near"] or (s["multi"] or 0) > 2 else "bright-neighbour" if s["halo"] else + "natural-type" if typ in ("**", "SB*", "EB*") else "astrometry" if (s["ruwe"] or 0) > 1.4 else "catalogue-dropped" if s["unwise"] else + "crowding" if abs(s["b"]) < plane_deg else None) + left = [s for s in gone if s["vet"] is None] + print("%d stars within 100 pc brighter than G %g, %d without a WISE counterpart in the catalogue, %d of them unmatched in AllWISE within %g arcsec at 2010.5 (%d brighter than W1 %g by their " + "colour, saturated in WISE, %d with a brighter or equal Gaia neighbour within %g arcsec or several image peaks, %d in the halo of a star %g mag brighter within %g arcsec, " + "%d double by type, %d of poor astrometry, %d present in unWISE's deeper coadds and so dropped by AllWISE's extraction, %d within %g deg of the Galactic plane, where " + "confusion thins the catalogue); unexplained %d" % ( + n_all, g_max, len(st), len(gone), radius_arcsec, sum(s["vet"] == "artefact" for s in gone), w1_sat, sum(s["vet"] == "blend" for s in gone), beam_arcsec, + sum(s["vet"] == "bright-neighbour" for s in gone), halo_mag, halo_arcsec, sum(s["vet"] == "natural-type" for s in gone), sum(s["vet"] == "astrometry" for s in gone), + sum(s["vet"] == "catalogue-dropped" for s in gone), sum(s["vet"] == "crowding" for s in gone), plane_deg, len(left))) + for s in sorted(gone, key=lambda s: s["g"]): + if s["vet"] is None or len(gone) <= 40: + print(" Gaia DR3 %s: G %.2f, BP-RP %s, W1 about %.1f, %.0f pc, RUWE %s, multi %s, neighbours %s, halo %s, unWISE %s; SIMBAD %s; %s" % ( + s["id"], s["g"], s["c"], s["w1_est"], 1000 / s["plx"] if s["plx"] else 0, s["ruwe"], s["multi"], s["near"] or "-", s["halo"] or "-", s["unwise"] or "-", s["simbad"], + s["vet"] or "unexplained")) + json.dump(dict(n=n_all, no_wise=len(st), gone=gone), open(core.results("stars_wise_missing.json"), "w"), indent=1) + if record: + core.record_run( + "gcns_wise_missing", "Stars WISE could not see", "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); AllWISE (II/328) by CDS XMatch; Gaia DR3; SIMBAD", + "stars within 100 pc brighter than G %g: %d, %d without a WISE counterpart in the catalogue" % (g_max, n_all, len(st)), os.path.abspath(__file__), "wisemissing", n_all, "stars", + dict(g_max=g_max, radius_arcsec=radius_arcsec, beam_arcsec=beam_arcsec, w1_sat=w1_sat, halo_arcsec=halo_arcsec, halo_mag=halo_mag, unwise_epoch=unwise_epoch, + glare_arcsec=glare_arcsec, glare_g=glare_g, plane_deg=plane_deg, far_glare_arcsec=far_glare_arcsec, far_glare_g=far_glare_g), + "WISE's saturation; Gaia's neighbours within the WISE beam and image peaks; the halos of brighter stars within an arcminute; SIMBAD's types; RUWE; unWISE's coadds", + "a nearby star with no AllWISE source at its 2010.5 position", "%d unmatched: %d saturated, %d blended, %d in a brighter star's halo, %d double, %d of poor astrometry, " + "%d in unWISE and so dropped by AllWISE, %d in the Galactic plane's confusion; %d unexplained" % ( + len(gone), sum(s["vet"] == "artefact" for s in gone), sum(s["vet"] == "blend" for s in gone), sum(s["vet"] == "bright-neighbour" for s in gone), + sum(s["vet"] == "natural-type" for s in gone), sum(s["vet"] == "astrometry" for s in gone), sum(s["vet"] == "catalogue-dropped" for s in gone), + sum(s["vet"] == "crowding" for s in gone), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=s["g"], unit="G, no AllWISE source", vet=s["vet"], + note="BP-RP %s, %.0f pc, RUWE %s, neighbours %s, halo %s, unWISE %s; SIMBAD %s" % (s["c"], 1000 / s["plx"] if s["plx"] else 0, s["ruwe"], s["near"] or "none", + s["halo"] or "none", s["unwise"] or "none", s["simbad"])) for s in gone]) + print("recorded") + + +gcdust_DOC = r"""Warm dust in globular clusters: the Galactic globular clusters of the Harris catalogue (VizieR VII/202) with a half-light radius, the AllWISE sources within that radius of each centre whose W1-W3 exceeds 1 mag at W3 signal-to-noise 10, warm dust in systems that hold no gas, against the density of such sources in the annulus from three to five half-light radii; a cluster's own asymptotic-giant stars shed dust and give the natural excess, so each excess cluster is read for the warm sources' brightness, which an AGB star at the cluster's distance sets. + + python -I seti.py infrared gcdust [record] [--colour-min 1.0] [--w3-err-max 0.1]""" + + +def gcdust_main(record=False, colour_min=1.0, w3_err_max=0.1): + from scipy.stats import poisson + from astropy.coordinates import SkyCoord + import astropy.units as u + t = core.vizier("VII/202")[0] + out = [] + for r in t: + rh = core.num(r["Rh"]) + if rh is None or rh <= 0: + continue + c = SkyCoord(str(r["RAJ2000"]), str(r["DEJ2000"]), unit=(u.hourangle, u.deg), frame="icrs") + ra, dec = c.ra.deg, c.dec.deg + rows = core.tap("vizier", 'SELECT RAJ2000, DEJ2000, W1mag, W3mag, e_W3mag, ccf FROM "II/328/allwise" WHERE 1 = CONTAINS(POINT(\'ICRS\', RAJ2000, DEJ2000), CIRCLE(\'ICRS\', %.5f, %.5f, %.5f)) ' + 'AND e_W3mag < %g AND W1mag - W3mag > %g' % (ra, dec, 5 * rh / 60.0, w3_err_max, colour_min), timeout=300) + inside, ring = 0, 0 + w3 = [] + for s in rows: + if (str(s["ccf"]) or "").strip("0"): + continue + d = core.sep_arcsec(ra, dec, float(s["RAJ2000"]), float(s["DEJ2000"])) / 60.0 + if d < rh: + inside += 1 + w3.append(float(s["W3mag"])) + elif 3 * rh <= d < 5 * rh: + ring += 1 + exp = ring / 16.0 + p = float(poisson.sf(inside - 1, exp)) if inside else 1.0 + out.append(dict(name=str(r["ID"]).strip(), other=str(r["Name"]).strip(), rh=rh, dist_kpc=core.num(r["Rsun"]), feh=core.num(r["[Fe/H]"]), inside=inside, ring=ring, expected=exp, p=p, + w3_brightest=min(w3) if w3 else None, vet=None)) + hot = [o for o in out if o["p"] * len(out) < 0.01] + for o in hot: + # an AGB star of the cluster shines at W3 about 6 + 5 log10(d / 1 kpc) mag, within 3 mag of which the excess is the cluster's own giants + o["vet"] = "evolved" if o["w3_brightest"] is not None and o["dist_kpc"] and o["w3_brightest"] > 3 + 5 * math.log10(o["dist_kpc"]) else None + left = [o for o in hot if o["vet"] is None] + print("%d clusters with a half-light radius; clusters with more warm sources inside it than the annulus gives, beyond chance over the %d: %d (%d with the warm sources at their own giants' " + "brightness); unexplained %d" % (len(out), len(out), len(hot), sum(o["vet"] == "evolved" for o in hot), len(left))) + for o in sorted(hot, key=lambda o: o["p"]): + print(" %s (%s, %.1f kpc, [Fe/H] %s): %d warm sources within %.2f arcmin against %.1f (p %.2g), brightest W3 %.1f; %s" % ( + o["name"], o["other"], o["dist_kpc"] or 0, o["feh"], o["inside"], o["rh"], o["expected"], o["p"], o["w3_brightest"] or 0, o["vet"] or "unexplained")) + json.dump(out, open(core.results("globular_warm_dust.json"), "w"), indent=1) + if record: + core.record_run( + "allwise_globular_warm_dust", "Warm dust in globular clusters", "Harris (2010) globular clusters (VizieR VII/202); AllWISE (II/328)", "clusters with a half-light radius: %d" % len(out), + os.path.abspath(__file__), "gcdust", len(out), "clusters", dict(colour_min=colour_min, w3_err_max=w3_err_max), + "the annulus from three to five half-light radii; the clusters' own AGB stars by brightness", "a cluster with more warm sources inside its half-light radius than its surroundings give", + "%d clusters in excess over the %d, %d of them at their giants' brightness; %d unexplained" % (len(hot), len(out), sum(o["vet"] == "evolved" for o in hot), len(left)), + [dict(target="cluster:%s" % o["name"], stat=o["inside"], unit="warm sources within the half-light radius", vet=o["vet"], + note="%s, %.1f kpc, against %.1f (p %.2g), brightest W3 %s" % (o["other"], o["dist_kpc"] or 0, o["expected"], o["p"], o["w3_brightest"])) for o in hot]) + print("recorded") + + +diskvoids_DOC = r"""Debris-disk voids: the WISE excess stars of Cotten and Song (2016, VizieR J/ApJS/225/15) matched to the Gaia DR3 stars within 150 pc brighter than G 11 and bluer than BP-RP 1.5, their Tycho-2 parent population, and every 15 pc sphere about a parent star scanned for fewer excess stars than the colour-binned excess fraction of its members predicts; the deepest deficit's Poisson tail is set against the deepest one that 200 shuffles of the excess labels within colour bins give, so the scan's own trials set the threshold; a civilisation that mines its planetesimal belts over a region would leave its stars of every type without excess. + + python -I seti.py infrared diskvoids [record] [--radius-pc 15] [--shuffles 200] [--min-expected 3]""" + + +def diskvoids_main(record=False, radius_pc=15.0, shuffles=200, min_expected=3.0): + from scipy.spatial import cKDTree + from scipy.sparse import csr_matrix + from scipy.stats import poisson + from astropy.coordinates import SkyCoord + import astropy.units as u + g = core.tap("gaia", "SELECT source_id, ra, dec, parallax, pmra, pmdec, bp_rp, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE parallax > 6.6667 AND parallax_over_error > 10 " + "AND phot_g_mean_mag < 11 AND bp_rp < 1.5") + ra = np.array([float(r["ra"]) for r in g]) + de = np.array([float(r["dec"]) for r in g]) + plx = np.array([float(r["parallax"]) for r in g]) + c = np.array([float(r["bp_rp"]) for r in g]) + pmra = np.array([float(r["pmra"] or 0) for r in g]) + pmde = np.array([float(r["pmdec"] or 0) for r in g]) + ra0 = ra - 16 * pmra / 3.6e6 / np.cos(np.radians(de)) + de0 = de - 16 * pmde / 3.6e6 + ex = [] + for t in core.vizier("J/ApJS/225/15"): + if t.meta.get("name", "").split("/")[-1] in ("table3", "table4"): + sc = SkyCoord([str(x) for x in t["RAJ2000"]], [str(x) for x in t["DEJ2000"]], unit=(u.hourangle, u.deg)) + ex += list(zip(sc.ra.deg, sc.dec.deg)) + tree0 = cKDTree(np.stack([np.cos(np.radians(de0)) * np.cos(np.radians(ra0)), np.cos(np.radians(de0)) * np.sin(np.radians(ra0)), np.sin(np.radians(de0))], 1)) + lab = np.zeros(len(g), bool) + xe = np.array([[math.cos(math.radians(d)) * math.cos(math.radians(a)), math.cos(math.radians(d)) * math.sin(math.radians(a)), math.sin(math.radians(d))] for a, d in ex]) + dist, idx = tree0.query(xe, distance_upper_bound=2 * math.sin(math.radians(3 / 3600) / 2)) + lab[idx[np.isfinite(dist)]] = True + d = 1000 / plx + xyz = np.stack([d * np.cos(np.radians(de)) * np.cos(np.radians(ra)), d * np.cos(np.radians(de)) * np.sin(np.radians(ra)), d * np.sin(np.radians(de))], 1) + nb = cKDTree(xyz).query_ball_point(xyz, radius_pc) + rows = np.concatenate([np.full(len(v), i) for i, v in enumerate(nb)]) + cols = np.concatenate([np.array(v) for v in nb]) + A = csr_matrix((np.ones(len(rows)), (rows, cols)), shape=(len(g), len(g))) + bins = np.digitize(c, np.arange(-0.2, 1.6, 0.1)) + + def frac(labels): + f = np.zeros(bins.max() + 1) + for b in np.unique(bins): + m = bins == b + f[b] = labels[m].mean() + return f[bins] + + def scan(labels): + obs, exp = A @ labels.astype(float), A @ frac(labels) + ok = exp >= min_expected + p = np.ones(len(g)) + p[ok] = poisson.cdf(obs[ok], exp[ok]) + k = int(np.argmin(p)) + return float(p[k]), k, obs[k], exp[k] + real = scan(lab) + rng = np.random.default_rng(13) + null = [] + for _ in range(shuffles): + sh = lab.copy() + for b in np.unique(bins): + m = np.nonzero(bins == b)[0] + sh[m] = rng.permutation(lab[m]) + null.append(scan(sh)[0]) + null = np.array(null) + p_glob = float((null <= real[0]).mean()) + k = real[1] + print("%d parent stars within 150 pc, %d of the %d excess stars matched (%.2f per cent); deepest deficit in a %g pc sphere: %d against %.1f (Poisson %.3g) about Gaia DR3 %s at %.0f pc, " + "RA %.1f, Dec %.1f; shuffles reach it %.2f of the time (median deepest %.3g)" % (len(g), lab.sum(), len(ex), 100 * lab.mean(), radius_pc, real[2], real[3], real[0], g[k]["source_id"], + d[k], ra[k], de[k], p_glob, float(np.median(null)))) + if record: + core.record_run( + "cotten_song_debris_voids", "Debris-disk voids", "Cotten and Song (2016) WISE excess stars (VizieR J/ApJS/225/15); Gaia DR3", + "Gaia DR3 stars within 150 pc at G below 11 and BP-RP below 1.5: %d, %d of them excess stars" % (len(g), lab.sum()), os.path.abspath(__file__), "diskvoids", len(g), "stars", + dict(radius_pc=radius_pc, shuffles=shuffles, min_expected=min_expected), "%d shuffles of the excess labels within colour bins: median deepest deficit %.3g" % (shuffles, float(np.median(null))), + "a %g pc region whose stars lack excess beyond the colour-binned rate" % radius_pc, + "deepest deficit %d against %.1f (Poisson %.3g) about Gaia DR3 %s at %.0f pc, reached by %.2f of the shuffles" % (real[2], real[3], real[0], g[k]["source_id"], d[k], p_glob), []) + print("recorded") + + +coldcomp_DOC = r"""Computation at the cosmic floor: the SPT-SZ survey's sources at 95, 150 and 220 GHz (Everett et al. 2020, 2,500 square degrees), each source's two spectral indices set against the track a body between 2.8 and 10 K draws, seen against the microwave background it hides: a source on that track within two errors, rising from 95 to 150 GHz as synchrotron does not and staying below an index of 2 from 150 to 220 GHz as dust does not, by two errors each, is a candidate, those with no counterpart in SUMSS, AT20G, PMN, IRAS, AKARI, WISE or ROSAT and no extent kept, and the chance of a natural spectrum passing found by drawing each source's best natural model through its own errors; computing lets its heat out as close to the background as it can, since every bit erased costs kT ln 2, and a solar luminosity let out at 4 K peaks near 235 GHz and gives 6.8 Jy at 150 GHz from a kiloparsec, where dust at any temperature keeps rising and synchrotron falls. + + python -I seti.py infrared coldcomp [record] [--t-min 2.8] [--t-max 10] [--sigmas 2] [--dust-alpha 2] [--draws 200]""" + +COLDCOMP_NU = np.array([95.0, 150.0, 220.0]) * 1e9 +COLDCOMP_TCMB = 2.7255 + + +def coldcomp_planck(nu, t): + """The shape of the Planck intensity at frequencies nu (Hz) and temperature t (K), without its constants.""" + return nu ** 3 / np.expm1(4.799243e-11 * nu / t) + + +def coldcomp_shapes(t_min, t_max): + """The spectral families as arrays of shapes at the three SPT frequencies: the cold body against the background, the power law, dust and the background's own fluctuation.""" + nu = COLDCOMP_NU + x = 4.799243e-11 * nu / COLDCOMP_TCMB + return dict(cold=[coldcomp_planck(nu, t) - coldcomp_planck(nu, COLDCOMP_TCMB) for t in np.arange(t_min, t_max + 1e-9, 0.05)], + temps=np.arange(t_min, t_max + 1e-9, 0.05), + power=[(nu / 1.5e11) ** a for a in np.arange(-3.0, 6.0, 0.02)], + dust=[nu ** 1.5 * coldcomp_planck(nu, t) for t in np.arange(5.0, 60.0, 0.25)], + cmb=[nu ** 4 * np.exp(x) / np.expm1(x) ** 2]) + + +def coldcomp_fit(s, e, shapes): + """The least chi-square over a family of shapes for each row of fluxes, each shape scaled by its best amplitude: chi-squares, shape indices and amplitudes, one per row.""" + s = np.atleast_2d(s) + w = 1 / e ** 2 + m = np.array(shapes) + a = (s * w) @ m.T / ((m * m) @ w) + c = ((s[:, None, :] - a[:, :, None] * m[None]) ** 2 * w).sum(axis=2) + k = np.argmin(c, axis=1) + rows = np.arange(len(s)) + return c[rows, k], k, a[rows, k] + + +def coldcomp_test(s, e, sh, sigmas=2.0, dust_alpha=2.0): + """For each row of three fluxes, whether its two spectral indices lie on the cold body's track within the errors while rising from 95 to 150 GHz and staying below dust's index from 150 to 220 GHz, each by SIGMAS errors; with the fits' chi-squares and the cold temperature.""" + s = np.atleast_2d(s) + l1, l2 = math.log(150 / 95), math.log(220 / 150) + with np.errstate(divide="ignore", invalid="ignore"): + a1, a2 = np.log(s[:, 1] / s[:, 0]) / l1, np.log(s[:, 2] / s[:, 1]) / l2 + e1 = np.hypot(e[1] / s[:, 1], e[0] / s[:, 0]) / l1 + e2 = np.hypot(e[2] / s[:, 2], e[1] / s[:, 1]) / l2 + track = np.array(sh["cold"]) + t1, t2 = np.log(track[:, 1] / track[:, 0]) / l1, np.log(track[:, 2] / track[:, 1]) / l2 + d2 = ((a1[:, None] - t1[None]) / e1[:, None]) ** 2 + ((a2[:, None] - t2[None]) / e2[:, None]) ** 2 + near = np.nanmin(d2, axis=1) + # synchrotron falls or stays flat from 95 to 150 GHz and dust rises with an index near 3 from 150 to 220 GHz + ok = (s > 0).all(axis=1) & (a1 - sigmas * e1 > 0) & (a2 + sigmas * e2 < dust_alpha) & (near <= sigmas ** 2 * 1.5) + c_cold, k, _ = coldcomp_fit(s, e, sh["cold"]) + return np.nan_to_num(ok, nan=False).astype(bool), dict(cold=c_cold, t=sh["temps"][k], power=coldcomp_fit(s, e, sh["power"])[0], + dust=coldcomp_fit(s, e, sh["dust"])[0], cmb=coldcomp_fit(s, e, sh["cmb"])[0], a1=a1, a2=a2, e1=e1, e2=e2) + + +def coldcomp_main(record=False, t_min=2.8, t_max=10.0, sigmas=2.0, dust_alpha=2.0, draws=200): + from scipy.stats import chi2 + rows = core.tap("vizier", 'SELECT * FROM "J/ApJ/900/55/table4"') + sh = coldcomp_shapes(t_min, t_max) + rng = np.random.default_rng(1) + src, cands, expected = [], [], 0.0 + for r in rows: + f = [num(r["S%d-best" % b]) for b in (95, 150, 220)] + hi = [num(r["B_S%d-best" % b]) for b in (95, 150, 220)] + lo = [num(r["b_S%d-best" % b]) for b in (95, 150, 220)] + if None in f + hi + lo: + continue + s = np.array(f) + e = np.maximum((np.array(hi) - np.array(lo)) / 2, 1e-3) + ok, fits = coldcomp_test(s, e, sh, sigmas, dust_alpha) + ok, fits = bool(ok[0]), {k: float(v[0]) for k, v in fits.items()} + # the chance of a natural spectrum passing: the better of the power law and dust drawn through the source's errors + nat = min((coldcomp_fit(s, e, sh["power"]), "power"), (coldcomp_fit(s, e, sh["dust"]), "dust"), key=lambda z: z[0][0][0]) + model = nat[0][2][0] * np.array(sh[nat[1]][nat[0][1][0]]) + expected += float(np.mean(coldcomp_test(model + rng.normal(0, e, (draws, 3)), e, sh, sigmas, dust_alpha)[0])) + o = dict(id=r["SPT-S"].strip(), ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]), s=f, e=e.tolist(), sn=[num(r["SN%d" % b]) for b in (95, 150, 220)], + type=r["Type"].strip(), ctpts=r["Ctpts"].strip(), extd=r["Extd"].strip(), cut=r["Cut"].strip(), z=num(r["z"]), fits=fits, cand=ok) + src.append(o) + if ok: + cands.append(o) + from scipy.stats import poisson + clean = [o for o in cands if not o["ctpts"] and o["extd"] != "yes"] + # a set the null fills as often as observed explains its clean members; counterparts, extent and the survey's star list name the rest + by_chance = poisson.sf(len(cands) - 1, expected) > 0.01 if cands else True + for o in cands: + o["vet"] = ("chance-rate" if by_chance else None) if o in clean else "natural-source" + print("%d SPT-SZ sources with three deboosted fluxes; on the cold body's track, rising from 95 to 150 GHz and below dust's index from 150 to 220 GHz: %d against %.1f by chance (Poisson p %.3g); %d with no counterpart and no extent" % ( + len(src), len(cands), expected, poisson.sf(len(cands) - 1, expected) if cands else 1.0, len(clean))) + for o in sorted(cands, key=lambda o: o["fits"]["cold"]): + print(" SPT-S %s %8.3f %7.3f %6.1f %6.1f %6.1f mJy (S/N %s) alpha %.2f+-%.2f, %.2f+-%.2f T %.2f K chi2 cold %.2f power %.1f dust %.1f %s ctpts %s extd %s cut %s z %s" % ( + o["id"], o["ra"], o["dec"], o["s"][0], o["s"][1], o["s"][2], "/".join("%.1f" % x for x in o["sn"]), o["fits"]["a1"], o["fits"]["e1"], o["fits"]["a2"], o["fits"]["e2"], + o["fits"]["t"], o["fits"]["cold"], o["fits"]["power"], o["fits"]["dust"], o["type"], o["ctpts"] or "-", o["extd"], o["cut"] or "-", o["z"])) + json.dump(dict(n=len(src), expected=expected, candidates=cands), open(core.results("spt_cold_computing.json"), "w"), indent=1, default=float) + if record: + core.record_run( + "spt_cold_computing", "Computation at the cosmic floor", "SPT-SZ multiband point-source catalogue at 95, 150 and 220 GHz (Everett et al. 2020, VizieR J/ApJ/900/55)", + "SPT-SZ sources with deboosted fluxes in all three bands: %d over 2,500 square degrees" % len(src), os.path.abspath(__file__), "coldcomp", len(src), "sources", + dict(t_min=t_min, t_max=t_max, sigmas=sigmas, dust_alpha=dust_alpha, draws=draws), + "each source's best power law or dust spectrum drawn %d times through its own errors: %.1f expected to pass" % (draws, expected), + "spectral indices on the track of a 2.8-10 K body within %g errors, rising from 95 to 150 GHz and below %g from 150 to 220 GHz by as much; a solar luminosity let out at 4 K gives 6.8 Jy at 150 GHz from 1 kpc" % (sigmas, dust_alpha), + "%d pass against %.1f by chance; %d with no counterpart and no extent" % (len(cands), expected, len(clean)), + [dict(target="spt:%s" % o["id"], stat=round(o["fits"]["t"], 2), unit="K, temperature of the cold body", vet=o["vet"], + note="%.1f, %.1f and %.1f mJy at 95, 150 and 220 GHz; indices %.2f+-%.2f and %.2f+-%.2f; SPT type %s; counterparts %s; cut %s" % ( + o["s"][0], o["s"][1], o["s"][2], o["fits"]["a1"], o["fits"]["e1"], o["fits"]["a2"], o["fits"]["e2"], o["type"], o["ctpts"] or "none", o["cut"] or "none")) + for o in cands]) + print("recorded") + + +APPROACHES = { + "coldcomp": (lambda: core.run_cli(coldcomp_main), coldcomp_DOC), + "diskvoids": (lambda: core.run_cli(diskvoids_main), diskvoids_DOC), + "gcdust": (lambda: core.run_cli(gcdust_main), gcdust_DOC), + "wisemissing": (lambda: core.run_cli(wisemissing_main), wisemissing_DOC), + "oldsunlike": (lambda: core.run_cli(oldsunlike_main), oldsunlike_DOC), + "clusterswarm": (lambda: core.run_cli(clusterswarm_main), clusterswarm_DOC), + "roomheat": (lambda: core.run_cli(roomheat_main), roomheat_DOC), + "methane": (lambda: core.run_cli(methane_main), methane_DOC), + "w1only": (lambda: core.run_cli(w1only_main), w1only_DOC), + "hyadeswarm": (lambda: core.run_cli(hyadeswarm_main), hyadeswarm_DOC), + "missingdwarfs": (lambda: core.run_cli(missingdwarfs_main), missingdwarfs_DOC), + "hidark": (lambda: core.run_cli(hidark_main), hidark_DOC), + "irdim": (lambda: core.run_cli(irdim_main), irdim_DOC), + "warmgalaxies": (lambda: core.run_cli(warmgalaxies_main), warmgalaxies_DOC), + "ksexcess": (lambda: core.run_cli(ksexcess_main), ksexcess_DOC), + "w3only": (lambda: core.run_cli(w3only_main), w3only_DOC), + "w2only": (lambda: core.run_cli(w2only_main), w2only_DOC), + "etzwarm": (lambda: core.run_cli(etzwarm_main), etzwarm_DOC), + "irdeficit": (lambda: core.run_cli(irdeficit_main), irdeficit_DOC), + "onefilter": (lambda: core.run_cli(onefilter_main), onefilter_DOC), + "iraswise": (lambda: core.run_cli(iraswise_main), iraswise_DOC), + "bigdwarfs": (lambda: core.run_cli(bigdwarfs_main), bigdwarfs_DOC), + "wddust": (wddust_cli, wddust_DOC), + "bluefloor": (bluefloor_cli, bluefloor_DOC), + "debs": (debs_cli, debs_DOC), + "udg": (lambda: core.run_cli(udg_main), udg_DOC), + "sbf": (lambda: core.run_cli(sbf_main), sbf_DOC), + "excess": (excess_cli, excess_DOC), + "hz": (hz_cli, hz_DOC), + "pma": (pma_cli, pma_DOC), + "dark": (dark_cli, dark_DOC), + "enclosed": (enclosed_cli, enclosed_DOC), + "cold": (cold_cli, cold_DOC), + "colder": (colder_cli, colder_DOC), + "massless": (massless_cli, massless_DOC), + "wdcold": (wdcold_cli, wdcold_DOC), + "missingflux": (lambda: core.run_cli(missingflux_main), missingflux_DOC), + "vasco": (vasco_cli, vasco_DOC), + "spherex": (spherex_cli, spherex_DOC), + "volume": (volume_cli, volume_DOC), +} + + diff --git a/setitools/lasers.py b/setitools/lasers.py new file mode 100644 index 0000000000000000000000000000000000000000..51402949017a30c564691beb5c6dd424be5c4296 --- /dev/null +++ b/setitools/lasers.py @@ -0,0 +1,5011 @@ +"""Laser lines in archival optical and infrared spectra of nearby stars.""" +import argparse +import collections +import csv +import glob +import io +import json +import math +import os +import re +import struct +import sys +import time +import urllib.parse +import urllib.request +import zipfile +import zlib +from concurrent.futures import ThreadPoolExecutor + +import numpy as np +from scipy.optimize import nnls + +from setitools import core, science +from setitools.core import num, quiet_warnings, sep_arcsec + + +# -------------------------------------------------------------------------------------------------------------- + +rvs_DOC = r"""Laser lines in Gaia DR3 RVS spectra of nearby FGK stars: neighbour-model residuals above all absorption-like peaks, vetted for stellar cores, sharing and width. + + python -I seti.py lasers rvs [--k 25] [--min-snr 4] + python -I seti.py lasers rvs fetch [--plx 20]""" + +rvs_HERE = core.RESULTS +rvs_W = np.round(np.arange(846.0, 870.0001, 0.01), 2) +rvs_CA = (849.802, 854.209, 866.214) +rvs_PASCHEN = (846.72, 850.25, 854.54, 859.82, 866.50) +rvs_C = 299792.458 +rvs_SIG_PX = 858.0 / 11500.0 / 2.3548 / 0.01 +rvs_USE = (rvs_W > 846.4) & (rvs_W < 869.6) +rvs_SEARCH = (rvs_W > 846.6) & (rvs_W < 869.4) + + +def rvs_local_sigma(r, ok, half=100, step=20): + """Robust residual scatter around each sample from valid samples within half.""" + centres = np.arange(0, len(r), step) + vals = [] + for c in centres: + m = ok[max(c - half, 0):c + half + 1] + x = r[max(c - half, 0):c + half + 1][m] + vals.append(1.4826 * np.median(np.abs(x - np.median(x))) if len(x) > 20 else np.nan) + vals = np.array(vals) + good = np.isfinite(vals) + return np.interp(np.arange(len(r)), centres[good], vals[good]) + + +def rvs_load_sample(): + return {r["source_id"]: r for r in csv.DictReader(open(os.path.join(rvs_HERE, "rvs_sample.csv")))} + + +def rvs_load_spec(path): + f = np.full(len(rvs_W), np.nan) + e = np.full(len(rvs_W), np.nan) + meta = {} + for r in csv.DictReader(open(path)): + i = int(round((float(r["wavelength"]) - 846.0) / 0.01)) + if r["flux"]: + f[i] = float(r["flux"]) + e[i] = float(r["flux_error"]) if r["flux_error"] else np.nan + meta = dict(transits=int(r["combined_transits"] or 0), ccds=int(r["combined_ccds"] or 0), + deblended=int(r["deblended_ccds"] or 0)) + return f, e, meta + + +def rvs_fnum(x): + try: + return float(x) + except (TypeError, ValueError): + return np.nan + + +def rvs_peaks(snr, thr, sep=10): + idx = np.nonzero((snr > thr) & rvs_SEARCH)[0] + out = [] + for i in idx[np.argsort(-snr[idx])]: + if all(abs(i - j) >= sep for j in out): + out.append(int(i)) + return out + + +def rvs_gauss_width(r, i, half=15): + """Best Gaussian sigma (samples) of the residual around sample i.""" + lo, hi = max(i - half, 0), min(i + half + 1, len(r)) + x = np.arange(lo, hi) - i + y = r[lo:hi] + ok = np.isfinite(y) + best, bs = np.inf, np.nan + for s in np.arange(1.0, 9.01, 0.25): + g = np.exp(-0.5 * (x / s) ** 2) + a = np.dot(g[ok], y[ok]) / np.dot(g[ok], g[ok]) + chi = np.sum((y[ok] - a * g[ok]) ** 2) + if chi < best: + best, bs = chi, s + return bs + + +def rvs_main(): + p = argparse.ArgumentParser() + p.add_argument("--k", type=int, default=25) + p.add_argument("--min-snr", type=float, default=4.0) + a = p.parse_args() + sample = rvs_load_sample() + ids, F, E, META = [], [], [], [] + for path in sorted(glob.glob(os.path.join(rvs_HERE, "rvs_dl", "RVS_Gaia_DR3_*.csv"))): + sid = os.path.basename(path)[13:-4] + if sid not in sample: + continue + f, e, m = rvs_load_spec(path) + if np.isfinite(f[rvs_USE]).mean() < 0.95: + continue + ids.append(sid) + F.append(f) + E.append(e) + META.append(m) + F, E = np.array(F), np.array(E) + n = len(ids) + s = [sample[i] for i in ids] + col = np.array([rvs_fnum(r["bp_rp"]) for r in s]) + mg = np.array([rvs_fnum(r["phot_g_mean_mag"]) + 5 * np.log10(rvs_fnum(r["parallax"]) / 100.0) for r in s]) + rv = np.array([rvs_fnum(r["radial_velocity"]) for r in s]) + print("%d spectra" % n, flush=True) + x = (rvs_W - 858.0) / 12.0 + poly = np.array([x ** k * sgn for k in range(4) for sgn in (1.0, -1.0)]) + kern = np.exp(-0.5 * (np.arange(-13, 14) / rvs_SIG_PX) ** 2) + allpk = [] + resid = {} + for i in range(n): + d = np.hypot((col - col[i]) / 0.05, (mg - mg[i]) / 0.3) + d[i] = np.inf + nb = np.argsort(d)[:a.k] + basis = np.nan_to_num(F[nb], nan=1.0) + ok = rvs_USE & np.isfinite(F[i]) + A = np.vstack([basis, poly]).T + coef, _ = nnls(A[ok], F[i][ok]) + model0 = A @ coef + d1 = np.gradient(model0) + d2 = np.gradient(d1) + d1 /= max(np.abs(d1[ok]).max(), 1e-9) + d2 /= max(np.abs(d2[ok]).max(), 1e-9) + A = np.vstack([basis, poly, d1, -d1, d2, -d2]).T + coef, _ = nnls(A[ok], F[i][ok]) + model = A @ coef + tmpl = basis.T @ coef[:len(nb)] / max(coef[:len(nb)].sum(), 1e-9) + r = np.where(ok, F[i] - model, 0.0) + sig = np.maximum(rvs_local_sigma(r, ok), 1e-5) + w = np.where(ok, 1.0 / sig ** 2, 0.0) + num = np.convolve(r * w, kern, mode="same") + den = np.convolve(w, kern ** 2, mode="same") + snr = num / np.sqrt(np.maximum(den, 1e-30)) + amp = num / np.maximum(den, 1e-30) + resid[ids[i]] = r + for sign in (1, -1): + for j in rvs_peaks(sign * snr, a.min_snr): + env = "line" if tmpl[j] < 0.95 else "continuum" + lam = float(rvs_W[j]) + tags = [] + if any(abs(lam - c) < 0.25 for c in rvs_CA): + tags.append("CaII") + if any(abs(lam - c) < 0.20 for c in rvs_PASCHEN): + tags.append("Paschen") + allpk.append(dict(sid=ids[i], sign=sign, lam=lam, snr=round(float(sign * snr[j]), 2), + amp=float(sign * amp[j]), ew_pm=round(float(sign * amp[j]) * rvs_SIG_PX * 0.01 * + np.sqrt(2 * np.pi) * 1000, 3), + env=env, tmpl=round(float(tmpl[j]), 3), tags=tags, + lam_obs=lam * (1 + rv[i] / rvs_C) if np.isfinite(rv[i]) else np.nan, + width=round(rvs_gauss_width(sign * r, j) / rvs_SIG_PX, 2), + deblended=META[i]["deblended"], transits=META[i]["transits"], + clean=bool(rvs_fnum(s[i]["ruwe"]) < 1.4 and s[i]["non_single_star"] in ("0", "") + and META[i]["deblended"] <= 0.5 * max(META[i]["ccds"], 1)))) + span = float(rvs_W[rvs_SEARCH][-1] - rvs_W[rvs_SEARCH][0]) + for sign in (1, -1): + grp = [q for q in allpk if q["sign"] == sign] + ref = [q for q in grp if q["snr"] > 5.0] + rate = len(ref) * 0.04 / span + limit = max(2.0, rate + 4.0 * np.sqrt(rate)) + rest = np.array([q["lam"] for q in ref]) + obs = np.array([q["lam_obs"] for q in ref]) + sids = np.array([q["sid"] for q in ref]) + for q in grp: + other = sids != q["sid"] + q["rest_twins"] = int(np.sum(other & (np.abs(rest - q["lam"]) < 0.02))) + q["obs_twins"] = (int(np.sum(other & (np.abs(obs - q["lam_obs"]) < 0.02))) + if np.isfinite(q["lam_obs"]) else 0) + q["twin_limit"] = round(float(limit), 1) + q["isolated"] = bool(not q["tags"] and q["rest_twins"] <= limit and q["obs_twins"] <= limit + and 0.6 <= q["width"] <= 1.6 and q["clean"]) + print("%s peaks: %d, chance twins per 0.04 nm %.1f, shared above %.1f" + % ("emission-like" if sign > 0 else "absorption-like", len(grp), rate, limit)) + json.dump(allpk, open(os.path.join(rvs_HERE, "rvs_laser_peaks.json"), "w")) + np.savez_compressed(os.path.join(rvs_HERE, "rvs_laser_resid.npz"), ids=np.array(ids), + resid=np.array([resid[i] for i in ids])) + null = {} + for env in ("continuum", "line"): + negs = sorted((q["snr"] for q in allpk if q["sign"] < 0 and q["env"] == env and q["isolated"]), reverse=True) + null[env] = negs[0] if negs else 0.0 + print("%s: isolated absorption-like peaks, strongest %s" % (env, ", ".join("%.1f" % v for v in negs[:5]))) + for thr in (4, 5, 6, 8, 10): + npos = sum(1 for q in allpk if q["sign"] > 0 and q["env"] == env and q["isolated"] and q["snr"] > thr) + nneg = sum(1 for q in allpk if q["sign"] < 0 and q["env"] == env and q["isolated"] and q["snr"] > thr) + print(" SNR>%d: isolated emission-like %d, absorption-like %d" % (thr, npos, nneg)) + cands = sorted((q for q in allpk if q["sign"] > 0 and q["isolated"]), key=lambda q: -q["snr"]) + print("strongest isolated emission-like peaks:") + for q in cands[:25]: + print(" %s%s %.2f nm SNR %.1f EW %.2f pm %s (template %.2f) width %.2f deblended %d/%d transits" + % ("ABOVE-NULL " if q["snr"] > null[q["env"]] else "", q["sid"], q["lam"], q["snr"], q["ew_pm"], + q["env"], q["tmpl"], q["width"], q["deblended"], q["transits"])) + + +# fetch mode + +rvs_TAP = "https://gea.esac.esa.int/tap-server/tap/sync" + +rvs_DL = "https://gea.esac.esa.int/data-server/data" + +rvs_OUT = os.path.join(rvs_HERE, "rvs_dl") + +def rvs_fetch_main(): + p = argparse.ArgumentParser() + p.add_argument("--plx", type=float, default=20.0) + a = p.parse_args() + os.makedirs(rvs_OUT, exist_ok=True) + q = ("SELECT source_id, ra, dec, parallax, pmra, pmdec, phot_g_mean_mag, bp_rp, grvs_mag, radial_velocity, " + "rvs_spec_sig_to_noise, vbroad, ruwe, rv_template_teff, rv_template_logg, rv_template_fe_h, " + "non_single_star FROM gaiadr3.gaia_source WHERE parallax > %g AND has_rvs = 'True' " + "AND bp_rp BETWEEN 0.55 AND 1.6" % a.plx) + d = urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", FORMAT="csv", QUERY=q)).encode() + t = urllib.request.urlopen(rvs_TAP, data=d, timeout=300).read().decode() + open(os.path.join(rvs_HERE, "rvs_sample.csv"), "w").write(t) + ids = [line.split(",")[0] for line in t.strip().splitlines()[1:]] + todo = [i for i in ids if not os.path.exists(os.path.join(rvs_OUT, "RVS_Gaia_DR3_%s.csv" % i))] + print("%d stars, %d to fetch" % (len(ids), len(todo)), flush=True) + for k in range(0, len(todo), 50): + batch = todo[k:k + 50] + u = rvs_DL + "?" + urllib.parse.urlencode(dict(RETRIEVAL_TYPE="RVS", RELEASE="Gaia DR3", + DATA_STRUCTURE="DATAMODEL_STANDARD", FORMAT="csv", + ID=",".join("Gaia DR3 " + i for i in batch))) + for attempt in range(4): + try: + b = urllib.request.urlopen(u, timeout=300).read() + break + except Exception as e: + print(" retry %d (%s)" % (attempt + 1, str(e)[:80]), flush=True) + time.sleep(10 * (attempt + 1)) + else: + continue + if not b.startswith(b"PK"): + if len(batch) == 1 and b.startswith(b"source_id"): + open(os.path.join(rvs_OUT, "RVS_Gaia_DR3_%s.csv" % batch[0]), "wb").write(b) + continue + z = zipfile.ZipFile(io.BytesIO(b)) + for n in z.namelist(): + base = os.path.basename(n) + if base.startswith("RVS_Gaia_DR3_") and base.endswith(".csv"): + open(os.path.join(rvs_OUT, base), "wb").write(z.read(n)) + print(" %d/%d" % (min(k + 50, len(todo)), len(todo)), flush=True) + + +def rvs_cli(): + if len(sys.argv) > 1 and sys.argv[1] == 'fetch': + sys.argv.pop(1) + rvs_fetch_main() + else: + rvs_main() + + +# -------------------------------------------------------------------------------------------------------------- + +eso_DOC = r"""Laser lines in ESO HARPS, ESPRESSO, UVES, FEROS (and SOPHIE) spectra: recurring barycentric peaks across epochs and steady peaks against twin-star fits, with absorption nulls. + + python -I seti.py lasers eso [--inst HARPS|ESPRESSO|UVES|FEROS|SOPHIE] [--root DIR] [--stars HIP103039 ...] [--snr 6] + python -I seti.py lasers eso fetch --n 12 "HIP 103039" "HIP 22762" ... + python -I seti.py lasers eso record [--inst ...] [--tag _fgk] (the run's groups and peaks into the coverage store) + python -I seti.py lasers eso cores [--record] (the unresolved peaks inside chromospheric and Balmer cores, every run)""" + +eso_C = 299792.458 +eso_ROOT = core.data("harps_dl") +eso_CHROMO = (3933.66, 3968.47, 3970.07, 4101.73, 4340.46, 4861.33, 5875.62, 5889.95, 5895.92, 6562.80, 3889.05, + 3835.38, 3797.90, 8498.02, 8542.09, 8662.14) +# range (A), resolving power, grid step (A), detector gaps and site per spectrograph +eso_INST = {"HARPS": dict(lo=3800.0, hi=6900.0, R=115000.0, step=0.01, gaps=((5290.0, 5350.0),), site="LaSilla"), + "ESPRESSO": dict(lo=3800.0, hi=7880.0, R=140000.0, step=0.01, gaps=(), site="Paranal"), + "UVES": dict(lo=3300.0, hi=10400.0, R=45000.0, step=0.025, gaps=(), site="Paranal"), + "FEROS": dict(lo=3550.0, hi=9200.0, R=48000.0, step=0.025, gaps=(), site="LaSilla"), + "SOPHIE": dict(lo=3880.0, hi=6940.0, R=75000.0, step=0.01, gaps=(), site="OHP")} +eso_GRID = np.round(np.arange(3800.0, 6900.0, 0.01), 3) +eso_R = 115000.0 +eso_STEP = 0.01 +eso_GAPS = eso_INST["HARPS"]["gaps"] +eso_SITE = "LaSilla" +eso_TELLURIC = ((5880.0, 5990.0), (6270.0, 6330.0), (6460.0, 6600.0), (6860.0, 6960.0), (7160.0, 7340.0), + (7590.0, 7700.0), (8120.0, 8350.0), (8950.0, 9850.0)) +eso_AIRGLOW = (4046.56, 4358.33, 5197.90, 5200.26, 5460.74, 5577.34, 5769.60, 5790.66, 5889.95, 5895.92, 6300.30, + 6363.78) + + +def eso_set_instrument(name): + """Set the grid, resolving power, gaps and site for one spectrograph.""" + global eso_GRID, eso_R, eso_STEP, eso_GAPS, eso_SITE + p = eso_INST[name] + eso_STEP, eso_R, eso_GAPS, eso_SITE = p["step"], p["R"], p["gaps"], p["site"] + eso_GRID = np.round(np.arange(p["lo"], p["hi"], eso_STEP), 3) + + +def eso_load(path): + """Flux and error on GRID (air, barycentric) with the epoch's BERV (km/s).""" + from astropy.io import fits + with fits.open(path) as h: + H = h[0].header + if "OHP DRS BERV" in H: + return sophie_load(h) + t = h[1].data + names = [n.upper() for n in t.columns.names] + col = {n.upper(): n for n in t.columns.names} + wname = "WAVE_AIR" if "WAVE_AIR" in names else "WAVE" + ucd = str(h[1].header.get("TUCD%d" % (names.index(wname) + 1), "obs.atmos")) + w = np.asarray(t[col[wname]][0], float) + f = np.asarray(t[col["FLUX"]][0] if "FLUX" in col else t[t.columns.names[1]][0], float) + e = np.asarray(t[col["ERR"]][0], float) if "ERR" in col else np.full(len(f), np.nan) + spec = str(H.get("SPECSYS", h[1].header.get("SPECSYS", ""))).upper() + mjd = float(H.get("MJD-OBS", np.nan)) + float(H.get("EXPTIME", 0)) / 172800.0 + berv = np.nan + for k in ("HIERARCH ESO DRS BERV", "HIERARCH ESO QC BERV", "HIERARCH ESO DRS BERV CORR"): + if k in H: + berv = float(H[k]) + break + if not np.isfinite(berv): + berv = science.barycentric_correction(float(H.get("RA")), float(H.get("DEC")), mjd, eso_SITE) + meta = dict(berv=berv, mjd=float(H.get("MJD-OBS", np.nan)), snr=float(H.get("SNR", np.nan)), + dpr=str(H.get("HIERARCH ESO DPR TYPE", "")), specsys=spec, file=os.path.basename(path)) + if w.max() < 100: + w = w * 10.0 if w.max() > 10 else w * 1e4 + if "obs.atmos" not in ucd and wname != "WAVE_AIR": + w = science.vac_to_air(w) + if not spec.startswith("BARY"): + w = w * (1.0 + berv / eso_C) + fi = np.interp(eso_GRID, w, f, left=np.nan, right=np.nan) + ei = np.interp(eso_GRID, w, e, left=np.nan, right=np.nan) + return fi, ei, meta + + +def eso_px(angstrom): + """Grid samples spanning a wavelength interval.""" + return max(int(round(angstrom / eso_STEP)), 1) + + +def eso_envelope(f, block=None, q=90): + """Running upper envelope: block percentiles over 5 A, interpolated and smoothed.""" + block = block or eso_px(5.0) + n = len(f) + cen, val = [], [] + for s in range(0, n, block): + x = f[s:s + block] + x = x[np.isfinite(x)] + if len(x) > block // 4: + cen.append(s + block // 2) + val.append(np.percentile(x, q)) + if not cen: + return np.full(n, np.nan) + env = np.interp(np.arange(n), cen, val) + k = np.ones(5) / 5.0 + return np.convolve(np.pad(env, 2, mode="edge"), k, mode="valid") + + +def eso_block_mad(res, block=None, floor=2e-3): + """Blockwise robust residual scatter over 5 A, interpolated.""" + block = block or eso_px(5.0) + n = len(res) + cen, val = [], [] + for s in range(0, n, block): + x = res[s:s + block] + x = x[np.isfinite(x)] + if len(x) > block // 4: + cen.append(s + block // 2) + val.append(1.4826 * np.median(np.abs(x - np.median(x)))) + if not cen: + return np.full(n, np.inf) + return np.maximum(np.interp(np.arange(n), cen, val), floor) + + +def eso_smooth_ratio(r, size=None): + from scipy.ndimage import median_filter + x = np.where(np.isfinite(r), r, 1.0) + return median_filter(x, size=size or (eso_px(3.0) | 1), mode="nearest") + + +def eso_matched(res, sig): + """Matched-filter significance and amplitude in 100 A chunks.""" + snr = np.zeros_like(res) + amp = np.zeros_like(res) + w = np.where(np.isfinite(res) & np.isfinite(sig) & (sig > 0), 1.0 / np.maximum(sig, 1e-9) ** 2, 0.0) + r0 = np.where(w > 0, res, 0.0) + ch = eso_px(100.0) + for s in range(0, len(eso_GRID), ch): + lam = eso_GRID[min(s + ch // 2, len(eso_GRID) - 1)] + sp = lam / eso_R / 2.3548 / eso_STEP + x = np.arange(-int(4 * sp) - 1, int(4 * sp) + 2) + g = np.exp(-0.5 * (x / sp) ** 2) + lo, hi = max(s - len(x), 0), min(s + ch + len(x), len(eso_GRID)) + num = np.convolve(r0[lo:hi] * w[lo:hi], g, mode="same") + den = np.convolve(w[lo:hi], g * g, mode="same") + a, b = s - lo, s - lo + min(ch, len(eso_GRID) - s) + snr[s:s + ch] = (num / np.sqrt(np.maximum(den, 1e-30)))[a:b] + amp[s:s + ch] = (num / np.maximum(den, 1e-30))[a:b] + return snr, amp + + +def eso_width_ratio(res, j): + lam = eso_GRID[j] + sp = lam / eso_R / 2.3548 / eso_STEP + half = int(5 * sp) + 2 + lo, hi = max(j - half, 0), min(j + half + 1, len(res)) + x = np.arange(lo, hi) - j + y = res[lo:hi] + ok = np.isfinite(y) + if ok.sum() < 5: + return np.nan + best, bs = np.inf, np.nan + for s in np.arange(0.4, 4.01, 0.1) * sp: + g = np.exp(-0.5 * (x / s) ** 2) + a = np.dot(g[ok], y[ok]) / np.dot(g[ok], g[ok]) + chi = np.sum((y[ok] - a * g[ok]) ** 2) + if chi < best: + best, bs = chi, s + return bs / sp + + +def eso_peaks(snr, thr, sep=None): + """Samples above thr, strongest first, at least sep (0.2 A) apart.""" + sep = sep or eso_px(0.2) + idx = np.nonzero(snr > thr)[0] + out = [] + blocked = np.zeros(len(snr), bool) + for i in idx[np.argsort(-snr[idx])]: + if not blocked[i]: + out.append(int(i)) + blocked[max(i - sep + 1, 0):i + sep] = True + if len(out) > 2000: + break + return out + + +def eso_narrow(q): + """Unresolved peak: 0.6-1.6 times the instrumental width, and at least 0.75 of it at 10 sigma.""" + return 0.6 <= q["width"] <= 1.6 and not (q["snr"] >= 10.0 and q["width"] < 0.75) + + +def eso_steady_clean(q, R): + """Steady peak no filter explains: unresolved, off chromospheric lines, unshared, clear of sky and star lines, with BERV spanning a resolution element.""" + return (eso_narrow(q) and not q["chromospheric"] and q["shared"] == 0 and not q.get("sky") + and q.get("depth", 0.0) <= 0.1 and not q.get("second_fibre") + and q.get("berv_spread", np.inf) >= eso_C / R) + + +def eso_star_spectra(d): + """A star's spectra on the grid, one per exposure, keeping the higher S/N of duplicates.""" + got = [] + for path in sorted(glob.glob(os.path.join(d, "*.fits"))): + try: + f, e, m = eso_load(path) + except Exception: + continue + if np.isfinite(m["berv"]): + got.append((f, e, m)) + got.sort(key=lambda x: -(x[2]["snr"] if np.isfinite(x[2]["snr"]) else 0.0)) + keep, seen = [], set() + for f, e, m in got: + key = round(m["mjd"], 4) if np.isfinite(m["mjd"]) else m["file"] + if key not in seen: + seen.add(key) + keep.append((f, e, m)) + keep.sort(key=lambda x: x[2]["file"]) + return np.array([k[0] for k in keep]), np.array([k[1] for k in keep]), [k[2] for k in keep] + + +def eso_valid_mask(F, margin=None): + """Samples usable in every epoch, away from gaps, zero fills and strong telluric bands.""" + from scipy.ndimage import binary_dilation + margin = margin or eso_px(1.0) + bad = np.any(~np.isfinite(F) | (F <= 0), axis=0) + bad = binary_dilation(bad, structure=np.ones(2 * margin + 1, bool)) + for lo, hi in eso_GAPS: + bad |= (eso_GRID > lo) & (eso_GRID < hi) + for lo, hi in eso_TELLURIC: + bad |= (eso_GRID > lo) & (eso_GRID < hi) + return ~bad + + +def eso_register(F, E, M): + """Each epoch registered to the others by cross-correlation, applied above a tenth of a resolution element.""" + import warnings + keep = eso_valid_mask(F) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + N = np.array([np.where(keep, f / eso_envelope(f), np.nan) for f in F]) + for k in range(len(F)): + M[k]["dv"] = 0.0 + others = np.nanmedian(np.delete(N, k, axis=0), axis=0) + m = np.isfinite(N[k]) & np.isfinite(others) + if m.sum() < eso_px(100.0): + continue + v = science.velocity_offset(N[k], others, eso_GRID, mask=m, span=30.0, step=0.05, coarse=0.5) + if abs(v) > 0.1 * eso_C / eso_R: + F[k] = science.to_rest(F[k], eso_GRID, v) + E[k] = science.to_rest(E[k], eso_GRID, v) + M[k]["dv"] = float(v) + return F, E, M + + +def eso_intermittent(name, F, E, M, thr): + F, E, M = eso_register(F, E, M) + keep = eso_valid_mask(F) + N = [] + for f in F: + N.append(np.where(keep, f / eso_envelope(f), np.nan)) + N = np.array(N) + T = np.nanmedian(N, axis=0) + found, resids = [], [] + Tf = np.nan_to_num(T, nan=1.0) + d1 = np.gradient(Tf) + d2 = np.gradient(d1) + envT = eso_envelope(np.where(np.isfinite(T), T, np.nan)) + depth = 1.0 - T / envT + for k in range(len(N)): + ratio = eso_smooth_ratio(N[k] / T) + y = N[k] / ratio + res = np.full(len(eso_GRID), np.nan) + ch = eso_px(20.0) + for s in range(0, len(eso_GRID), ch): + sl = slice(s, s + ch) + ok = np.isfinite(y[sl]) & np.isfinite(T[sl]) + if ok.sum() < ch // 10: + continue + A = np.vstack([np.ones(ok.sum()), Tf[sl][ok], d1[sl][ok], d2[sl][ok]]).T + coef, *_ = np.linalg.lstsq(A, y[sl][ok], rcond=None) + fit = coef[0] + coef[1] * Tf[sl] + coef[2] * d1[sl] + coef[3] * d2[sl] + res[sl] = np.where(ok, y[sl] - fit, np.nan) + sig = eso_block_mad(res) + res = np.where(np.isfinite(res) & (T > 0.05) & (F[k] > 0) & (sig < 0.05), res, np.nan) + resids.append((res / sig).astype(np.float32)) + snr, amp = eso_matched(res, sig) + for sign in (1, -1): + for j in eso_peaks(sign * snr, thr): + wr = eso_width_ratio(sign * res, j) + found.append(dict(star=name, epoch=k, sign=sign, lam=float(eso_GRID[j]), snr=float(sign * snr[j]), + amp=float(sign * amp[j]), width=float(wr), berv=M[k]["berv"], mjd=M[k]["mjd"], + dpr=M[k]["dpr"], lam_topo=float(eso_GRID[j] * (1.0 + M[k]["dv"] / eso_C) + / (1.0 + M[k]["berv"] / eso_C)), + depth=float(depth[j]) if np.isfinite(depth[j]) else float("nan"))) + return found, T, resids + + +def eso_telluric_map(acc, cnt): + """Observatory wavelengths where summed epoch residuals vary beyond their surroundings: the telluric map.""" + from scipy.ndimage import binary_dilation, median_filter + v = acc / np.maximum(cnt, 1) + base = median_filter(np.nan_to_num(v, nan=0.0), size=eso_px(5.0) | 1, mode="nearest") + tell = (cnt >= 4) & (v > 4.0 * np.maximum(base, 1e-6)) + return binary_dilation(tell, structure=np.ones(eso_px(0.1) | 1, bool)) + + +def eso_groups(peaks_, key, tol_kms=None): + """Peaks within tol_kms of neighbours in two or more epochs.""" + tol_kms = tol_kms or 0.9 * 115000.0 / eso_R + pts = sorted(peaks_, key=lambda q: q[key]) + out, cur = [], [] + for q in pts: + if cur and (q[key] - cur[-1][key]) / q[key] * eso_C > tol_kms: + out.append(cur) + cur = [] + cur.append(q) + if cur: + out.append(cur) + return [g for g in out if len({q["epoch"] for q in g}) >= 2] + + +def eso_pair_correlations(X): + """Pairwise Pearson correlation of rest-frame stacks over 5000-6400 A by masked matrix products.""" + def corr(sel): + V = np.array([np.where(np.isfinite(x[sel]), x[sel], 0.0) for x in X], dtype=float) + M = np.array([np.isfinite(x[sel]) for x in X], dtype=float) + n = M @ M.T + sx = V @ M.T + sxx = (V * V) @ M.T + sxy = V @ V.T + with np.errstate(all="ignore"): + c = (n * sxy - sx * sx.T) / np.sqrt((n * sxx - sx ** 2) * (n * sxx.T - sx.T ** 2)) + return np.nan_to_num(c, nan=-1.0), n + band = (eso_GRID > 5000) & (eso_GRID < 6400) + c, n = corr(band) + short = n < eso_px(100.0) + if short.any(): + c2, n2 = corr(np.ones(len(eso_GRID), bool)) + c = np.where(short, np.where(n2 > eso_px(100.0), c2, -1.0), c) + return c + + +def eso_rest_shift(T, ref): + """Velocity (km/s) of T relative to ref by cross-correlation, refined to 0.05 km/s.""" + m = (eso_GRID > 5000) & (eso_GRID < 6400) & np.isfinite(T) & np.isfinite(ref) + if m.sum() < eso_px(100.0): + m = np.isfinite(T) & np.isfinite(ref) + if m.sum() < eso_px(10.0): + return 0.0 + return science.velocity_offset(T, ref, eso_GRID, mask=m, span=150.0, step=0.05, coarse=0.5) + + +def eso_main(): + p = argparse.ArgumentParser() + p.add_argument("--stars", nargs="*") + p.add_argument("--snr", type=float, default=6.0) + p.add_argument("--k", type=int, default=4) + p.add_argument("--root", default=eso_ROOT) + p.add_argument("--tag", default="") + p.add_argument("--inst", choices=tuple(eso_INST), default="HARPS") + a = p.parse_args() + eso_set_instrument(a.inst) + tag = a.tag or ("" if a.inst == "HARPS" else "_" + a.inst.lower()) + vtol = 115000.0 / eso_R # velocity tolerances scale with the resolution element + dirs = sorted(d for d in glob.glob(os.path.join(a.root, "*")) if os.path.isdir(d)) + if a.stars: + dirs = [d for d in dirs if os.path.basename(d) in a.stars] + temps, metas, inter, per_star, pooled = {}, {}, [], [], [] + acc, cnt = np.zeros(len(eso_GRID)), np.zeros(len(eso_GRID)) + for d in dirs: + name = os.path.basename(d) + F, E, M = eso_star_spectra(d) + if len(F) < 3: + print("%s: %d usable spectra, skipped" % (name, len(F)), flush=True) + continue + found, T, resids = eso_intermittent(name, F, E, M, a.snr) + temps[name], metas[name] = T, M + for k, r in enumerate(resids): + rt = np.interp(eso_GRID * (1.0 + M[k]["berv"] / eso_C) / (1.0 + M[k].get("dv", 0.0) / eso_C), eso_GRID, r, + left=np.nan, right=np.nan) + ok = np.isfinite(rt) + acc[ok] += rt[ok] ** 2 + cnt[ok] += 1 + per_star.append((name, len(F), M, found)) + print("%s: %d spectra searched" % (name, len(F)), flush=True) + tell = eso_telluric_map(acc, cnt) + np.savez_compressed(core.results("laser_telluric%s.npz") % tag, grid=eso_GRID, telluric=tell, var=acc / np.maximum(cnt, 1)) + print("telluric map: %.1f per cent of the grid" % (100 * tell.mean()), flush=True) + + def telluric_residual(lam, M): + for m in M: + j = int(round((lam * (1.0 + m.get("dv", 0.0) / eso_C) / (1.0 + m["berv"] / eso_C) - eso_GRID[0]) + / eso_STEP)) + if 0 <= j < len(eso_GRID) and tell[j]: + return True + return False + + for name, nf, M, found in per_star: + narrow = [q for q in found if eso_narrow(q)] + topo = eso_groups([q for q in narrow if q["sign"] > 0], "lam_topo") + topo_lams = [float(np.mean([q["lam_topo"] for q in g])) for g in topo] + + def terrestrial(q): + return (any(abs(q["lam_topo"] - x) / x * eso_C < 1.8 * vtol for x in topo_lams) + or any(abs(q["lam_topo"] - x) / x * eso_C < 3.0 * vtol for x in eso_AIRGLOW)) + + good = [q for q in narrow if q["sign"] > 0 and not terrestrial(q)] + negs = [q for q in narrow if q["sign"] < 0] + + def strength(g): + v = sorted((q["snr"] for q in g), reverse=True) + return v[1] + + bary = [g for g in eso_groups(good, "lam") if np.ptp([q["berv"] for q in g]) >= eso_C / eso_R] + n_tell = sum(1 for g in bary if telluric_residual(float(np.mean([q["lam"] for q in g])), M)) + bary = [g for g in bary if not telluric_residual(float(np.mean([q["lam"] for q in g])), M)] + nbary = [g for g in eso_groups(negs, "lam") if np.ptp([q["berv"] for q in g]) >= eso_C / eso_R + and not telluric_residual(float(np.mean([q["lam"] for q in g])), M)] + null = sorted((strength(g) for g in nbary), reverse=True) + print("%s: %d spectra, %d narrow emission-like peaks (%d terrestrial), %d recurring in the barycentric frame " + "(%d more on another epoch's telluric line); null: %d recurring absorption-like groups, strongest %s" + % (name, nf, len(good), sum(1 for q in narrow if q["sign"] > 0) - len(good), len(bary), n_tell, + len(nbary), ", ".join("%.1f" % v for v in null[:3])), flush=True) + for g in topo[:6]: + print(" terrestrial %.3f A (observatory frame) in %d epochs, SNR up to %.1f" + % (np.mean([q["lam_topo"] for q in g]), len({q["epoch"] for q in g}), max(q["snr"] for q in g))) + pooled.extend(null) + # groups whose epochs two or more other groups share are seeing-dependent line-depth residuals + sets = [frozenset(q["epoch"] for q in g) for g in bary] + for g, es in zip(bary, sets): + g[0]["common_mode"] = sum(1 for e in sets if e == es) >= 3 + for g in bary: + lam = float(np.mean([q["lam"] for q in g])) + dep = float(np.nanmax([q["depth"] for q in g])) + chromo = any(abs(lam - c) < 1.5 for c in eso_CHROMO) + inter.append(dict(star=name, lam_bary=lam, epochs=sorted({q["epoch"] for q in g}), n_epochs=nf, + strength=strength(g), snr=[round(q["snr"], 1) for q in g], + width=[round(q["width"], 2) for q in g], berv_spread=float(np.ptp([q["berv"] for q in g])), + template_depth=dep, in_stellar_line=bool(dep > 0.1), chromospheric=bool(chromo), + lam_topo=[round(float(q["lam_topo"]), 4) for q in g], + dv=[round(M[q["epoch"]].get("dv", 0.0), 2) for q in g], + common_mode=bool(g[0].get("common_mode")))) + # null: the sample's strongest absorption-like group + top = max(pooled) if pooled else 0.0 + for r in inter: + r["above_null"] = bool(r["strength"] > top) + if r["above_null"]: + print(" RECURRING %s %.3f A barycentric in epochs %s of %d, SNR %s, width %s, BERV spread %.1f km/s, " + "template depth %.2f%s%s" % (r["star"], r["lam_bary"], r["epochs"], r["n_epochs"], r["snr"], + r["width"], r["berv_spread"], r["template_depth"], + " (inside a stellar line)" if r["in_stellar_line"] else "", + " (chromospheric line)" if r["chromospheric"] else ""), flush=True) + # groups meeting other stars' in the observatory frame are sky or instrument + tl = np.array([q for r in inter for q in r["lam_topo"]], dtype=float) + ts = np.array([r["star"] for r in inter for _ in r["lam_topo"]], dtype=object) + order = np.argsort(tl) + tl, ts = tl[order], ts[order] + for r in inter: + near = set() + for x in r["lam_topo"]: + w = 1.8 * vtol * x / eso_C + for j in range(np.searchsorted(tl, x - w, "left"), np.searchsorted(tl, x + w, "right")): + if ts[j] != r["star"] and abs(tl[j] - x) / x * eso_C < 1.8 * vtol: + near.add(ts[j]) + r["stars_topo"] = len(near) + shared = [r for r in inter if r["above_null"] and r["stars_topo"] >= 2] + print("recurring groups above the sample's strongest absorption-like group (%.1f, of %d): %d; %d of them meet two " + "or more other stars' groups in the observatory frame; %d share their epochs with two or more other groups " + "of their star" % (top, len(pooled), sum(1 for r in inter if r["above_null"]), len(shared), + sum(1 for r in inter if r["above_null"] and r["common_mode"]))) + for r in shared: + print(" shared in the observatory frame: %s %.3f A (%d other stars)" % (r["star"], r["lam_bary"], + r["stars_topo"])) + json.dump(inter, open(core.results("harps_intermittent%s.json") % tag, "w")) + names = sorted(temps) + if len(names) < 3: + return + # stacks to rest by strong-line cores, else aligned to the first star + ref = temps[names[0]] + v_ref = science.line_velocity(ref, eso_GRID) + v_ref = v_ref if np.isfinite(v_ref) else 0.0 + rest, vels = {}, {} + for n in names: + v = science.line_velocity(temps[n], eso_GRID) + if not np.isfinite(v): + v = eso_rest_shift(temps[n], ref) + v_ref + rest[n], vels[n] = science.to_rest(temps[n], eso_GRID, v), v + + def sky(n, lam): + # peaks on the telluric map or airglow in any epoch are set aside + for m in metas[n]: + lo = lam * (1.0 + vels[n] / eso_C) * (1.0 + m.get("dv", 0.0) / eso_C) / (1.0 + m["berv"] / eso_C) + j = int(round((lo - eso_GRID[0]) / eso_STEP)) + if (0 <= j < len(eso_GRID) and tell[j]) or any(abs(lo - x) / x * eso_C < 3.0 * vtol for x in eso_AIRGLOW): + return True + return False + C = eso_pair_correlations([rest[n] for n in names]) + allpk = [] + for i, n in enumerate(names): + others = [m for m in names if m != n] + corr = [C[i, j] for j in range(len(names)) if j != i] + nb = [others[i] for i in np.argsort(corr)[::-1][:a.k]] + ok = np.isfinite(rest[n]) & np.all([np.isfinite(rest[m]) for m in nb], axis=0) + x = (eso_GRID - 0.5 * (eso_GRID[0] + eso_GRID[-1])) / (0.5 * (eso_GRID[-1] - eso_GRID[0])) + poly = [x ** k * s for k in range(4) for s in (1, -1)] + A = np.vstack([rest[m] for m in nb] + poly).T + model = np.full(len(eso_GRID), np.nan) + ch = eso_px(200.0) + for s in range(0, len(eso_GRID), ch): + sl = slice(s, s + ch) + m_ok = ok[sl] + if m_ok.sum() < eso_px(10.0): + continue + Asl = np.nan_to_num(A[sl]) + coef, _ = nnls(Asl[m_ok], rest[n][sl][m_ok]) + m0 = Asl @ coef + g1 = np.gradient(m0) + g2 = np.gradient(g1) + g1 /= max(np.abs(g1[m_ok]).max(), 1e-9) + g2 /= max(np.abs(g2[m_ok]).max(), 1e-9) + A2 = np.hstack([Asl, np.vstack([g1, -g1, g2, -g2]).T]) + coef, _ = nnls(A2[m_ok], rest[n][sl][m_ok]) + model[sl] = A2 @ coef + from scipy.ndimage import binary_dilation + edge = binary_dilation(~ok, structure=np.ones(eso_px(3.0) | 1, bool)) + res = np.where(~edge & np.isfinite(model) & (model > 0.05), rest[n] / model - 1.0, np.nan) + mdepth = 1.0 - model / eso_envelope(np.where(np.isfinite(model), model, np.nan)) + sig = eso_block_mad(res, floor=1e-3) + res = np.where(sig < 0.05, res, np.nan) + snr, amp = eso_matched(res, sig) + for sign in (1, -1): + for j in eso_peaks(sign * snr, a.snr): + lam = float(eso_GRID[j]) + allpk.append(dict(star=n, sign=sign, lam_rest=lam, snr=float(sign * snr[j]), amp=float(sign * amp[j]), + width=float(eso_width_ratio(sign * res, j)), neighbours=nb, vel=float(vels[n]), + berv_spread=float(np.ptp([m["berv"] for m in metas[n]])), + chromospheric=bool(any(abs(lam - c) < 1.5 for c in eso_CHROMO)), + sky=sky(n, lam), depth=float(mdepth[j]) if np.isfinite(mdepth[j]) else 0.0)) + for sign in (1, -1): + pk = sorted((q for q in allpk if q["sign"] == sign), key=lambda q: q["lam_rest"]) + lams = np.array([q["lam_rest"] for q in pk]) + for q in pk: + w = 1.8 * vtol * q["lam_rest"] / eso_C + lo, hi = np.searchsorted(lams, q["lam_rest"] - w, "left"), np.searchsorted(lams, q["lam_rest"] + w, "right") + q["shared"] = sum(1 for o in pk[lo:hi] if o["star"] != q["star"] + and abs(o["lam_rest"] - q["lam_rest"]) / q["lam_rest"] * eso_C < 1.8 * vtol) + clean = [q for q in allpk if eso_steady_clean(q, eso_R)] + negs = sorted((q["snr"] for q in clean if q["sign"] < 0), reverse=True) + above = [q for q in clean if q["sign"] > 0 and (not negs or q["snr"] > negs[0])] + print("steady search: isolated narrow absorption-like residuals (null), strongest %s; %d emission-like peaks above " + "them" % (", ".join("%.1f" % v for v in negs[:5]), len(above))) + for q in sorted((q for q in allpk if q["sign"] > 0), key=lambda q: -q["snr"])[:30]: + labels = [] + if q["chromospheric"]: + labels.append("chromospheric") + if q["shared"]: + labels.append("shared x%d" % q["shared"]) + if q["sky"]: + labels.append("sky") + if q["depth"] > 0.1: + labels.append("inside a stellar line") + if not eso_narrow(q): + labels.append("width %.2f" % q["width"]) + if not labels and negs and q["snr"] > negs[0]: + labels.append("ABOVE-NULL") + print(" %s %.3f A rest SNR %.1f amp %.3f width %.2f %s" % (q["star"], q["lam_rest"], q["snr"], q["amp"], + q["width"], ", ".join(labels))) + for q in above: + print(" ABOVE-NULL %s %.3f A rest SNR %.1f amp %.3f width %.2f" % (q["star"], q["lam_rest"], q["snr"], + q["amp"], q["width"])) + json.dump(allpk, open(core.results("harps_steady%s.json") % tag, "w")) + + +eso_IDS = {"HARPS": "laser_harps", "ESPRESSO": "laser_espresso", "UVES": "laser_uves", "FEROS": "laser_feros", + "SOPHIE": "laser_sophie"} + + +def eso_cores_main(argv): + """Unresolved, unshared, sky-clear steady peaks inside chromospheric and Balmer cores, with core dips as null.""" + p = argparse.ArgumentParser(prog="seti.py lasers eso cores") + p.add_argument("--record", action="store_true") + a = p.parse_args(argv) + runs = (("HARPS", ""), ("HARPS", "_fgk"), ("ESPRESSO", "_espresso"), ("FEROS", "_feros"), ("UVES", "_uves")) + rows, total, above_all = [], 0, [] + for inst, tag in runs: + path = core.results("harps_steady%s.json" % tag) + if not os.path.exists(path): + continue + steady = json.load(open(path)) + R = eso_INST[inst]["R"] + in_core = [q for q in steady if q["chromospheric"] and eso_narrow(q) and q["shared"] == 0 and not q.get("sky") + and q.get("berv_spread", np.inf) >= eso_C / R] + neg = sorted((q["snr"] for q in in_core if q["sign"] < 0), reverse=True) + pos = [q for q in in_core if q["sign"] > 0] + above = [q for q in pos if not neg or q["snr"] > neg[0]] + for q in above: + line = min(eso_CHROMO, key=lambda c: abs(c - q["lam_rest"])) + q["line"], q["offset_kms"] = line, (q["lam_rest"] - line) / line * eso_C + above_all += [(inst, q) for q in above] + stars = sorted({q["star"] for q in steady}) + total += len(stars) + print("%s%s: %d stars; %d unresolved emission-like and %d absorption-like core peaks; %d above the strongest " + "absorption-like" % (inst, tag, len(stars), len(pos), len(neg), len(above))) + for q in above: + print(" %s %.3f A, %+.0f km/s from %.2f, SNR %.1f, amplitude %.3f, template depth %.2f" + % (q["star"], q["lam_rest"], q["offset_kms"], q["line"], q["snr"], q["amp"], q.get("depth", 0.0))) + for s in stars: + mine = [q for q in above if q["star"] == s] + rows.append(dict(target=eso_target(s), stat=max((q["snr"] for q in mine), default=None), + unit="S/N of the strongest unresolved core peak above the core null", + vet=("in a Balmer or He I line %.0f km/s from its centre, where the template dips by %.0f per cent" + % (abs(mine[0]["offset_kms"]), 100 * mine[0].get("depth", 0.0))) if mine and mine[0]["line"] not in + (3933.66, 3968.47, 5889.95, 5895.92) else None, + note="%s%s" % (inst, tag))) + if a.record: + core.record_search( + "laser_line_cores", "Lasers in line cores", archive="ESO archive, HARPS, ESPRESSO, FEROS and UVES Phase 3 spectra", + selection="the stars of the laser-line runs", code=os.path.abspath(__file__), entry="eso cores", n_targets=total, + params=dict(lines=list(eso_CHROMO)), null_summary="absorption-like unresolved peaks inside the same cores", + ledger="Lasers in line cores", + result=("%d unresolved core peaks above the core null, all in Balmer and He I lines %.0f-%.0f km/s from their " + "centres, where the neighbour template dips by %.0f-%.0f per cent; none in the Ca II H and K or Na D cores" + % (len(above_all), min(abs(q["offset_kms"]) for _, q in above_all), max(abs(q["offset_kms"]) for _, q in above_all), + 100 * min(q.get("depth", 0.0) for _, q in above_all), 100 * max(q.get("depth", 0.0) for _, q in above_all))) + if above_all else "no unresolved core peak above the core null") + core.clear_targets("laser_line_cores") + core.record_targets("laser_line_cores", rows) + print("recorded %d rows" % len(rows)) + + +eso_LON = {"LaSilla": -70.73, "Paranal": -70.40, "OHP": 5.71} + + +def eso_nights(root, q): + """Whether a steady peak lives in one night: tallest night at 5 sigma, every other 3 sigma below.""" + if not os.path.isdir(os.path.join(root, q["star"])): + raise FileNotFoundError("no spectra of %s under %s" % (q["star"], root)) + F, E, M = eso_star_spectra(os.path.join(root, q["star"])) + lb = q["lam_rest"] * (1 + q["vel"] / eso_C) + j = int(round((lb - eso_GRID[0]) / eso_STEP)) + w, core = eso_px(1.0), max(eso_px(lb / eso_R), 1) + lon = eso_LON.get(eso_SITE, 0.0) + by = {} + for f, m in zip(F, M): + if j - w - core < 0 or j + core + w + 1 > len(f) or not np.isfinite(m["mjd"]): + continue + seg = f[j - w - core:j + core + w + 1] + if np.all(np.isfinite(seg)): + by.setdefault(int(math.floor(m["mjd"] + lon / 360.0 - 0.5)), []).append(seg / np.median(seg)) + heights = [] + for night, segs in sorted(by.items()): + s_ = np.mean(segs, axis=0) + side = np.concatenate([s_[:w], s_[-w:]]) + cont = np.median(side) + mad = 1.4826 * np.median(np.abs(side - cont)) + if mad > 0: + heights.append((night, float(np.max(s_[w:w + 2 * core + 1]) - cont), float(mad))) + if len(heights) < 2: + return dict(nights=len(heights), one_night=False, heights=heights) + top = max(heights, key=lambda x: x[1] / x[2]) + others = [x for x in heights if x is not top] + one = ((top[1] / top[2] >= 5.0 and all(x[1] < top[1] - 3.0 * math.hypot(x[2], top[2]) for x in others)) + or (top[1] / top[2] >= 3.0 and all(x[1] < x[2] for x in others))) + return dict(nights=len(heights), one_night=bool(one), heights=heights) + + +def eso_target(name): + """Coverage identifier of an ESO star directory.""" + if name.upper().startswith("HIP"): + return "hip:" + name[3:].strip() + return "gaia_dr3:" + name.replace("GaiaDR3", "").strip() + + +def eso_record_main(argv): + """Record one spectrograph's run: recurring groups above null by explaining filter, and steady peaks above null.""" + p = argparse.ArgumentParser(prog="seti.py lasers eso record") + p.add_argument("--inst", choices=tuple(eso_INST), default="HARPS") + p.add_argument("--tag", default="") + p.add_argument("--selection", default="") + p.add_argument("--root", default=None, help="the star directories the search read (default: the archive cache " + "for the instrument)") + a = p.parse_args(argv) + eso_set_instrument(a.inst) + tag = a.tag or ("" if a.inst == "HARPS" else "_" + a.inst.lower()) + inter = json.load(open(core.results("harps_intermittent%s.json") % tag)) + steady = json.load(open(core.results("harps_steady%s.json") % tag)) + stars = sorted({r["star"] for r in inter} | {q["star"] for q in steady}) + + def why(r): + for key, label in (("stars_topo", "shared in the observatory frame"), ("common_mode", "epoch common mode"), + ("chromospheric", "chromospheric line"), ("in_stellar_line", "inside a stellar line"), + ("second_fibre", "light in the sky fibre")): + v = r.get(key) + if (v >= 2 if key == "stars_topo" else v): + return label + return None + above = [r for r in inter if r.get("above_null")] + left = [r for r in above if why(r) is None] + clean = [q for q in steady if eso_steady_clean(q, eso_INST[a.inst]["R"])] + top = max([q["snr"] for q in clean if q["sign"] < 0] or [0.0]) + st_above = [q for q in clean if q["sign"] > 0 and q["snr"] > top] + root = a.root or {"HARPS": eso_ROOT, "SOPHIE": core.data("sophie")}.get(a.inst, core.results("tc_eso", a.inst)) + for q in st_above: + q["night_test"] = eso_nights(root, q) + # a residual of the neighbour model rises by at most the model's own depth + st_dip = [q for q in st_above if not q["night_test"]["one_night"] and q["amp"] <= 1.3 * q.get("depth", 0.0)] + st_left = [q for q in st_above if not q["night_test"]["one_night"] and q not in st_dip] + st_one = len(st_above) - len(st_left) - len(st_dip) + # regions crowded with other stars' residuals mark line-strength differences + lam_all = np.array([q["lam_rest"] for q in steady]) + snr_all = np.array([q["snr"] for q in steady]) + pos_all = np.array([q["sign"] > 0 for q in steady]) + star_all = np.array([str(q["star"]) for q in steady]) + for q in st_above: + m = (np.abs(lam_all - q["lam_rest"]) < 0.6) & (snr_all >= 10) & pos_all & (star_all != str(q["star"])) + q["crowd"] = len(set(star_all[m].tolist())) + st_crowd = [q for q in st_left if q["crowd"] >= 5] + st_left = [q for q in st_left if q["crowd"] < 5] + from collections import Counter + reasons = Counter(why(r) for r in above if why(r)) + sid = eso_IDS[a.inst] + ("" if a.tag in ("", "_" + a.inst.lower()) else a.tag) + core.record_search( + sid, "Laser lines, %s" % a.inst, archive=("OHP SOPHIE archive, s1d spectra" if a.inst == "SOPHIE" else + "ESO archive, %s Phase 3 spectra" % a.inst), + selection=a.selection or "stars with three or more epochs", code=os.path.abspath(__file__), entry="eso", + n_targets=len(stars), params=dict(snr=6.0, R=eso_INST[a.inst]["R"], width_ratio=[0.6, 1.6]), + null_summary="recurring absorption-like groups across the sample; isolated absorption-like steady residuals " + "(strongest %.1f)" % top, + sensitivity="unresolved lines at 6 sigma of each epoch's residual", + ledger="Laser lines, %s" % ("ESPRESSO, UVES, FEROS" if a.inst in ("ESPRESSO", "UVES", "FEROS") else a.inst), + result="%d recurring groups above the null, explained: %s; %d left; %d steady peaks above the null, %d of " + "them in one night's exposures alone, %d within the neighbour model's own dip and %d where five or more " + "other stars carry model residuals within 0.6 A; %d left" + % (len(above), ", ".join("%s %d" % kv for kv in reasons.most_common()) or "none", len(left), + len(st_above), st_one, len(st_dip), len(st_crowd), len(st_left))) + core.clear_targets(sid) + core.record_targets(sid, [dict(target=eso_target(s), stat=sum(1 for r in left if r["star"] == s) + + sum(1 for q in st_left if q["star"] == s), unit="unexplained features") + for s in stars]) + print("%s: %d stars; %d recurring groups above the null (%s), %d left; %d steady peaks above the null" + % (sid, len(stars), len(above), dict(reasons), len(left), len(st_left))) + for r in left: + print(" group %s %.3f A epochs %s of %d SNR %s" % (r["star"], r["lam_bary"], r["epochs"], r["n_epochs"], r["snr"])) + for q in st_left: + print(" steady %s %.3f A SNR %.1f width %.2f; nightly heights %s" + % (q["star"], q["lam_rest"], q["snr"], q["width"], + ", ".join("%.1f" % (h / e) for _, h, e in q["night_test"]["heights"]))) + for q in st_dip: + print(" model dip: %s %.3f A SNR %.1f, amplitude %.4f against the model's depth %.4f" + % (q["star"], q["lam_rest"], q["snr"], q["amp"], q["depth"])) + for q in st_crowd: + print(" crowded: %s %.3f A SNR %.1f, %d other stars with residuals at S/N 10 or more within 0.6 A" + % (q["star"], q["lam_rest"], q["snr"], q["crowd"])) + for q in st_above: + if q["night_test"]["one_night"]: + print(" one night: %s %.3f A SNR %.1f; nightly heights %s" % ( + q["star"], q["lam_rest"], q["snr"], ", ".join("%.1f" % (h / e) for _, h, e in q["night_test"]["heights"]))) + + +# fetch mode + +eso_TAP = "https://archive.eso.org/tap_obs/sync" + +eso_SIMBAD = "https://simbad.cds.unistra.fr/simbad/sim-tap/sync" + +eso_OUT = core.data("harps_dl") + +def eso_simbad_pos(name): + q = ("SELECT basic.ra, basic.dec FROM basic JOIN ident ON ident.oidref=basic.oid WHERE ident.id='%s'" % name) + d = urllib.parse.urlencode(dict(request="doQuery", lang="adql", format="json", query=q)).encode() + return json.loads(urllib.request.urlopen(eso_SIMBAD, data=d, timeout=90).read())["data"][0] + +def eso_fetch_main(): + p = argparse.ArgumentParser() + p.add_argument("stars", nargs="+") + p.add_argument("--n", type=int, default=12) + p.add_argument("--out", default=eso_OUT) + a = p.parse_args() + for name in a.stars: + ra, dec = eso_simbad_pos(name) + q = ("SELECT dp_id, t_min, snr, target_name FROM ivoa.ObsCore WHERE obs_collection='HARPS' AND " + "dataproduct_type='spectrum' AND CONTAINS(POINT('ICRS',s_ra,s_dec),CIRCLE('ICRS',%f,%f,0.0083))=1" + % (ra, dec)) + u = eso_TAP + "?" + urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", FORMAT="csv", QUERY=q)) + rows = list(csv.DictReader(io.StringIO(urllib.request.urlopen(u, timeout=180).read().decode()))) + rows.sort(key=lambda r: -float(r["snr"] or 0)) + chosen, nights = [], set() + for r in rows: + night = int(float(r["t_min"]) - 0.5) + if night not in nights: + chosen.append(r) + nights.add(night) + if len(chosen) >= a.n: + break + for r in rows: + if len(chosen) >= a.n: + break + if r not in chosen: + chosen.append(r) + d = os.path.join(a.out, name.replace(" ", "")) + os.makedirs(d, exist_ok=True) + got = 0 + for r in chosen: + path = os.path.join(d, r["dp_id"].replace(":", "_") + ".fits") + if os.path.exists(path): + got += 1 + continue + for attempt in range(3): + try: + b = urllib.request.urlopen("https://dataportal.eso.org/dataportal_new/file/" + r["dp_id"], + timeout=300).read() + if b[:6] == b"SIMPLE": + open(path, "wb").write(b) + got += 1 + break + except Exception: + time.sleep(10 * (attempt + 1)) + print("%s: %d spectra in archive, %d on disk" % (name, len(rows), got), flush=True) + + +def eso_cli(): + if len(sys.argv) > 1 and sys.argv[1] == 'fetch': + sys.argv.pop(1) + eso_fetch_main() + elif len(sys.argv) > 1 and sys.argv[1] == 'record': + eso_record_main(sys.argv[2:]) + elif len(sys.argv) > 1 and sys.argv[1] == 'cores': + eso_cores_main(sys.argv[2:]) + else: + eso_main() + + +# -------------------------------------------------------------------------------------------------------------- + +sophie_DOC = r"""Laser lines in SOPHIE spectra of dwarfs within 50 pc via the ESO search, with fibre B sky checks. + + python -I seti.py lasers sophie select [--n 12] + python -I seti.py lasers sophie fetch [--threads 4] + python -I seti.py lasers sophie second-fibre""" + +sophie_ROOT = os.environ.get("SOPHIE_ROOT", core.data("sophie")) +sophie_URL = "http://atlas.obs-hp.fr/sophie/sophie.cgi" +sophie_HEAD = core.UA +sophie_ROW = re.compile(r"J(\d{2})(\d{2})(\d{2}(?:\.\d+)?)([+-])(\d{2})(\d{2})(\d{2}(?:\.\d+)?)\s+S\s+E\s+(\d+)\s+" + r"(?:\d+\s+)?(\d{4}-\d{2}-\d{2})\s+(HR|HE)\s+(?:([A-Z]+)\s+)?([\d.]+)\s+(-?\d+)") + + +def sophie_load(h): + """eso_load for a SOPHIE s1d file: fibre A on the grid.""" + H = h[0].header + d = np.asarray(h[0].data, float) + w = H["CRVAL1"] + (np.arange(len(d)) + 1 - H["CRPIX1"]) * H["CDELT1"] + t = str(H.get("OHP OBS DATE START", "")) + mjd = float(H.get("OHP DRS BJD", np.nan)) - 2400000.5 + meta = dict(berv=float(H["OHP DRS BERV"]), mjd=mjd, snr=float(H.get("OHP DRS CAL EXT SN26", np.nan)), + dpr=str(H.get("OHP DPR TYPE", "")), specsys="BARYCENT", file=os.path.basename(h.filename() or t)) + fi = np.interp(eso_GRID, w, d, left=np.nan, right=np.nan) + return fi, np.full(len(eso_GRID), np.nan), meta + + +def sophie_listing(): + """Public SOPHIE spectra listing as (ra, dec, seq, date, mode, fibre_b, sn26), cached.""" + path = os.path.join(sophie_ROOT, "catalogue_all.txt") + if not os.path.exists(path): + os.makedirs(sophie_ROOT, exist_ok=True) + u = sophie_URL + "?n=sophie&a=t&ob=ra,seq&c=o&o=%25" + t = urllib.request.urlopen(urllib.request.Request(u, headers=sophie_HEAD), timeout=900).read() + open(path, "wb").write(t) + out = [] + for line in open(path, encoding="latin-1"): + m = sophie_ROW.search(line) + if not m or line.startswith("#"): + continue + g = m.groups() + ra = 15.0 * (int(g[0]) + int(g[1]) / 60.0 + float(g[2]) / 3600.0) + dec = (1 if g[3] == "+" else -1) * (int(g[4]) + int(g[5]) / 60.0 + float(g[6]) / 3600.0) + out.append(dict(ra=ra, dec=dec, seq=g[7], date=g[8], mode=g[9], fibre_b=g[10] or "", sn26=int(g[12]))) + return out + + +def sophie_select_main(n): + from collections import defaultdict + spec = [r for r in sophie_listing() if r["mode"] == "HR"] + stars = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag, bp_rp FROM " + "gaiadr3.gaia_source WHERE parallax > 20 AND dec > -45 AND phot_g_mean_mag < 14 AND " + "bp_rp BETWEEN 0.5 AND 4.0") + cells = defaultdict(list) + for s in stars: + if float(s["phot_g_mean_mag"]) + 5 * math.log10(float(s["parallax"]) / 100.0) <= 2.0: + continue + dec = float(s["dec"]) - num(s["pmdec"], 0.0) / 3.6e6 * 16.0 + ra = float(s["ra"]) - num(s["pmra"], 0.0) / 3.6e6 * 16.0 / math.cos(math.radians(dec)) + s["ra2000"], s["dec2000"] = ra, dec + cells[(int(ra * 4), int((dec + 90) * 4))].append(s) + by = defaultdict(list) + for r in spec: + best = None + for i in (-1, 0, 1): + for j in (-1, 0, 1): + for s in cells.get((int(r["ra"] * 4) + i, int((r["dec"] + 90) * 4) + j), ()): + d = sep_arcsec(r["ra"], r["dec"], s["ra2000"], s["dec2000"]) + if d <= 15.0 and (best is None or float(s["phot_g_mean_mag"]) < float(best["phot_g_mean_mag"])): + best = s + if best is not None: + by[str(best["source_id"])].append(r) + sample = {} + for sid, rows in by.items(): + nights = {} + for r in sorted(rows, key=lambda r: -r["sn26"]): + nights.setdefault(r["date"], r) + if len(nights) < 3: + continue + chosen = sorted(nights.values(), key=lambda r: -r["sn26"])[:n] + rest = [r for r in sorted(rows, key=lambda r: -r["sn26"]) if r not in chosen] + chosen += rest[:max(0, n - len(chosen))] + sample[sid] = [dict(seq=r["seq"], date=r["date"], fibre_b=r["fibre_b"], sn26=r["sn26"]) for r in chosen] + json.dump(sample, open(os.path.join(sophie_ROOT, "sample.json"), "w"), indent=0) + print("%d high-resolution spectra; %d nearby dwarfs matched; %d observed on three or more nights, %d spectra chosen" + % (len(spec), len(by), len(sample), sum(len(v) for v in sample.values()))) + + +def sophie_fetch_one(job): + sid, seq = job + path = os.path.join(sophie_ROOT, sid, "%s_s1d.fits" % seq) + if os.path.exists(path): + return True + u = sophie_URL + "?c=i&a=mime:application/fits&o=sophie:[s1d,%s]" % seq + for attempt in range(3): + try: + b = urllib.request.urlopen(urllib.request.Request(u, headers=sophie_HEAD), timeout=300).read() + if b[:6] != b"SIMPLE": + return False + open(path + ".tmp", "wb").write(b) + os.replace(path + ".tmp", path) + return True + except Exception: + time.sleep(10 * (attempt + 1)) + return False + + +def sophie_fetch_main(threads): + sample = json.load(open(os.path.join(sophie_ROOT, "sample.json"))) + jobs = [] + for sid, rows in sample.items(): + os.makedirs(os.path.join(sophie_ROOT, sid), exist_ok=True) + jobs += [(sid, r["seq"]) for r in rows] + t0, ok = time.time(), 0 + with ThreadPoolExecutor(threads) as ex: + for k, got in enumerate(ex.map(sophie_fetch_one, jobs)): + ok += bool(got) + if (k + 1) % 200 == 0: + print("%d of %d spectra, %d on disk, %.0f s" % (k + 1, len(jobs), ok, time.time() - t0), flush=True) + print("%d of %d spectra on disk" % (ok, len(jobs))) + + +def sophie_fibre_b(path): + """Fibre B (wavelength, flux) in the barycentric frame and its content type.""" + from astropy.io import fits + with fits.open(path) as h: + if len(h) < 2 or h[1].data is None: + return None + H = h[1].header + d = np.asarray(h[1].data, float) + kind = str(h[0].header.get("OHP DPR TYPE", "")).split(",") + w = H["CRVAL1"] + (np.arange(len(d)) + 1 - H["CRPIX1"]) * H["CDELT1"] + return w, d, kind[1] if len(kind) > 1 else "" + + +def sophie_peak_b(fb, lam, thr=4.0): + """Peak significance within two resolution elements of lam in fibre B against 4 A scatter.""" + w, d, _ = fb + m = (w > lam - 2.0) & (w < lam + 2.0) & np.isfinite(d) + if m.sum() < 50: + return 0.0 + x, y = w[m], d[m] + base = np.median(y) + s = 1.4826 * np.median(np.abs(y - base)) + near = np.abs(x - lam) < 2 * lam / 75000.0 + return float((y[near].max() - base) / s) if near.any() and s > 0 else 0.0 + + +def sophie_fibre_b_light(path, lam): + """Whether a sky-watching fibre B holds a 4-sigma peak at lam; lamp epochs excluded.""" + fb = sophie_fibre_b(path) + if fb is None or fb[2] != "SKY": + return 0.0, False + s = sophie_peak_b(fb, lam) + return s, s >= 4.0 + + +def sophie_second_fibre_main(): + tag = "_sophie" + inter_p = core.results("harps_intermittent%s.json") % tag + steady_p = core.results("harps_steady%s.json") % tag + inter = json.load(open(inter_p)) + steady = json.load(open(steady_p)) if os.path.exists(steady_p) else [] + eso_set_instrument("SOPHIE") + files = {} + + def star_files(star): + if star not in files: + files[star] = [m["file"] for m in eso_star_spectra(os.path.join(sophie_ROOT, star))[2]] + return files[star] + marked = 0 + for r in inter: + if not r.get("above_null"): + continue + got = [sophie_fibre_b_light(os.path.join(sophie_ROOT, r["star"], star_files(r["star"])[e]), r["lam_bary"]) + for e in r["epochs"]] + r["second_fibre_sigma"] = round(max(g[0] for g in got), 1) + r["second_fibre"] = any(g[1] for g in got) + marked += r["second_fibre"] + clean = [q for q in steady if eso_steady_clean(q, eso_INST["SOPHIE"]["R"])] + top = max([q["snr"] for q in clean if q["sign"] < 0] or [0.0]) + for q in clean: + if q["sign"] < 0 or q["snr"] <= top: + continue + lam = q["lam_rest"] * (1.0 + q.get("vel", 0.0) / eso_C) + q["second_fibre"] = any(sophie_fibre_b_light(os.path.join(sophie_ROOT, q["star"], f), lam)[1] + for f in star_files(q["star"])) + json.dump(inter, open(inter_p, "w")) + if steady: + json.dump(steady, open(steady_p, "w")) + print("%d groups above the null; %d with light at their wavelength in fibre B" % + (sum(1 for r in inter if r.get("above_null")), marked)) + + +def sophie_cli(): + p = argparse.ArgumentParser(prog="seti.py lasers sophie") + p.add_argument("mode", choices=("select", "fetch", "second-fibre")) + p.add_argument("--n", type=int, default=12) + p.add_argument("--threads", type=int, default=4) + a = p.parse_args() + if a.mode == "select": + sophie_select_main(a.n) + elif a.mode == "fetch": + sophie_fetch_main(a.threads) + else: + sophie_second_fibre_main() + + +# -------------------------------------------------------------------------------------------------------------- + +galah_DOC = r"""Laser lines in GALAH DR4 spectra of sun-like dwarfs against twin-star fits, with observatory- and rest-frame sharing and same-exposure fibre checks. The served spectra are on barycentric wavelengths with the star's velocity left in, so each is shifted to rest by the catalogue's rv_comp_1 before the twins are fitted. + +`exposures` reads each candidate in the other fibres of its exposure at its observatory wavelength; `check` reads it in the same fibre's other runs of the night at that wavelength and in the star's other spectra at its rest wavelength; `raw` reads each candidate those leave in the raw HERMES frames of its observation from the AAT archive (hermes_raw//): the fibre's trace from the flat, the fibre less its neighbours exposure by exposure, light the fibre holds in every exposure against excesses one exposure holds, and each excess's place and shape against the trace and the arc lines. + + python -I seti.py lasers galah fetch (downloads galah_dl/_.fits) + python -I seti.py lasers galah search + python -I seti.py lasers galah exposures + python -I seti.py lasers galah check + python -I seti.py lasers galah raw + python -I seti.py lasers galah record""" + +galah_HERE = core.RESULTS +galah_DL = os.path.join(galah_HERE, "galah_dl") +galah_CAMS = ("B", "V", "R", "I") +galah_C = 299792.458 +galah_R_RES = 28000.0 +galah_MASK = ((7590.0, 7700.0),) + + +def galah_fetch_one(args): + sid, cam = args + path = os.path.join(galah_DL, "%s_%s.fits" % (sid, cam)) + if os.path.exists(path): + return True + u = ("https://datacentral.org.au/vo/slink/links?ID=%s&DR=galah_dr4&IDX=0&FILT=%s&RESPONSEFORMAT=fits" % (sid, cam)) + os.makedirs(galah_DL, exist_ok=True) + for attempt in range(3): + try: + b = urllib.request.urlopen(urllib.request.Request(u, headers=core.UA), timeout=120).read() + except Exception: + time.sleep(5 * (attempt + 1)) + continue + if b[:6] == b"SIMPLE": + open(path, "wb").write(b) + return True + return False + return False + + +def galah_load(sid, cam): + from astropy.io import fits + path = os.path.join(galah_DL, "%s_%s.fits" % (sid, cam)) + if not os.path.exists(path): + return None + with fits.open(path) as h: + H = h[0].header + d = np.asarray(h[0].data, float) + w = H["CRVAL1"] + (np.arange(len(d)) + 1 - H["CRPIX1"]) * H["PC1_1"] * H["CDELT1"] + meta = dict(mjd=float(H.get("MJD-BEG", np.nan)) + float(H.get("EXPTIME", 0)) / 172800.0, rv=float(H.get("RV", np.nan)), + ra=float(H.get("RA", np.nan)), dec=float(H.get("DEC", np.nan))) + return w, d, meta + + +def galah_grids(): + """Common rest-frame grid per camera.""" + g = {"B": (4715.0, 4900.0, 0.046), "V": (5649.0, 5870.0, 0.0547), "R": (6480.0, 6735.0, 0.0632), + "I": (7586.0, 7884.0, 0.0736)} + return {c: np.arange(lo, hi, st) for c, (lo, hi, st) in g.items()} + + +def galah_baryc(meta): + """Barycentric correction (km/s) at Siding Spring.""" + return science.barycentric_correction(meta["ra"], meta["dec"], meta["mjd"], "SSO") + + +def galah_matched(res, sig, sp): + k = np.arange(-int(4 * sp) - 1, int(4 * sp) + 2) + g = np.exp(-0.5 * (k / sp) ** 2) + w = np.where(np.isfinite(res) & np.isfinite(sig) & (sig > 0), 1.0 / np.maximum(sig, 1e-9) ** 2, 0.0) + r0 = np.where(w > 0, res, 0.0) + num = np.convolve(r0 * w, g, mode="same") + den = np.convolve(w, g * g, mode="same") + return num / np.sqrt(np.maximum(den, 1e-30)), num / np.maximum(den, 1e-30) + + +def galah_width_ratio(res, j, sp): + half = int(5 * sp) + 2 + lo, hi = max(j - half, 0), min(j + half + 1, len(res)) + x = np.arange(lo, hi) - j + y = res[lo:hi] + ok = np.isfinite(y) + if ok.sum() < 5: + return np.nan + best, bs = np.inf, np.nan + for s in np.arange(0.4, 4.01, 0.1) * sp: + gg = np.exp(-0.5 * (x / s) ** 2) + a = np.dot(gg[ok], y[ok]) / np.dot(gg[ok], gg[ok]) + chi = np.sum((y[ok] - a * gg[ok]) ** 2) + if chi < best: + best, bs = chi, s + return bs / sp + + +def galah_block_mad(res, block=200, floor=2e-3): + n = len(res) + cen, val = [], [] + for s in range(0, n, block): + x = res[s:s + block] + x = x[np.isfinite(x)] + if len(x) > block // 4: + cen.append(s + block // 2) + val.append(1.4826 * np.median(np.abs(x - np.median(x)))) + if not cen: + return np.full(n, np.inf) + return np.maximum(np.interp(np.arange(n), cen, val), floor) + + +def galah_search_part(job, thr=5.5, k=20): + """Peaks for one camera and one slice of the spectra.""" + cam, part, nparts = job + quiet_warnings() + rows = list(csv.DictReader(open(os.path.join(galah_HERE, "galah_sample.csv")))) + G = galah_grids() + params = np.array([[float(r["teff"]) / 100.0, float(r["logg"]) / 0.1, float(r["fe_h"] or 0) / 0.1] for r in rows]) + allpk = [] + for cam in (cam,): + grid = G[cam] + F, metas, ok_rows = [], [], [] + for i, r in enumerate(rows): + x = galah_load(r["sobject_id"], cam) + if x is None: + continue + w, d, meta = x + # the served wavelengths are barycentric with the star's velocity left in; the catalogue's velocity takes them to rest + rv = core.num(r["rv_comp_1"]) + if rv is None: + continue + fi = np.interp(grid, w / (1.0 + rv / galah_C), d, left=np.nan, right=np.nan) + for lo, hi in galah_MASK: + fi[(grid > lo) & (grid < hi)] = np.nan + F.append(fi) + metas.append(meta) + ok_rows.append(i) + F = np.array(F) + P = params[ok_rows] + sp = grid.mean() / galah_R_RES / 2.3548 / (grid[1] - grid[0]) + x = (grid - grid.mean()) / np.ptp(grid) + poly = [x ** p * s for p in range(3) for s in (1, -1)] + for n in range(part, len(F), nparts): + dd = np.hypot(np.hypot(P[:, 0] - P[n, 0], P[:, 1] - P[n, 1]), P[:, 2] - P[n, 2]) + dd[n] = np.inf + same_star = [m for m in range(len(F)) if rows[ok_rows[m]]["gaiadr3_source_id"] == rows[ok_rows[n]]["gaiadr3_source_id"]] + dd[same_star] = np.inf + nb = np.argsort(dd)[:k] + B = np.nan_to_num(F[nb], nan=1.0) + ok = np.isfinite(F[n]) + if ok.sum() < len(grid) * 0.5: + continue + A = np.vstack([B] + poly).T + coef, _ = nnls(A[ok], F[n][ok]) + m0 = A @ coef + g1 = np.gradient(m0) + g2 = np.gradient(g1) + g1 /= max(np.abs(g1[ok]).max(), 1e-9) + g2 /= max(np.abs(g2[ok]).max(), 1e-9) + A2 = np.hstack([A, np.vstack([g1, -g1, g2, -g2]).T]) + coef, _ = nnls(A2[ok], F[n][ok]) + model = A2 @ coef + tmpl = B.T @ coef[:len(nb)] / max(coef[:len(nb)].sum(), 1e-9) + res = np.where(ok, F[n] - model, np.nan) + sig = galah_block_mad(res) + snr, amp = galah_matched(res, sig, sp) + vb = galah_baryc(metas[n]) + # header RV is the barycentric correction; the star's RV comes from the catalogue + try: + rv = float(rows[ok_rows[n]]["rv_comp_1"]) + except ValueError: + rv = 0.0 + for sign in (1, -1): + s_ = sign * snr + idx = np.nonzero((s_ > thr) & ok)[0] + chosen = [] + for j in idx[np.argsort(-s_[idx])]: + if all(abs(j - c) >= 10 for c in chosen): + chosen.append(int(j)) + if len(chosen) > 200: + break + for j in chosen: + lam = float(grid[j]) + allpk.append(dict(sid=rows[ok_rows[n]]["sobject_id"], star=rows[ok_rows[n]]["gaiadr3_source_id"], + cam=cam, sign=sign, lam=lam, snr=round(float(s_[j]), 2), + amp=float(sign * amp[j]), tmpl=round(float(tmpl[j]), 3), + width=round(float(galah_width_ratio(sign * res, j, sp)), 2), + lam_topo=lam * (1.0 + rv / galah_C) * (1.0 - vb / galah_C), mjd=metas[n]["mjd"])) + return allpk + + +def galah_search(nparts=4, workers=min(16, core.MAX_PROCS)): + from concurrent.futures import ProcessPoolExecutor + jobs = [(c, p, nparts) for c in galah_CAMS for p in range(nparts)] + allpk = [] + with ProcessPoolExecutor(workers) as ex: + for pk in ex.map(galah_search_part, jobs): + allpk.extend(pk) + print("%d peaks from %d jobs" % (len(allpk), len(jobs)), flush=True) + return allpk + + +def galah_vet(allpk): + for sign in (1, -1): + grp = [q for q in allpk if q["sign"] == sign] + rest = np.array([q["lam"] for q in grp]) + topo = np.array([q["lam_topo"] for q in grp]) + stars = np.array([q["star"] for q in grp]) + for q in grp: + other = stars != q["star"] + tol = q["lam"] / galah_R_RES / 2.0 + q["rest_twins"] = int(np.sum(other & (np.abs(rest - q["lam"]) < tol))) + q["topo_twins"] = int(np.sum(other & (np.abs(topo - q["lam_topo"]) < tol))) + for q in allpk: + q["isolated"] = bool(q["rest_twins"] <= 1 and q["topo_twins"] <= 1 and 0.6 <= q["width"] <= 1.6) + out = {} + for cam in galah_CAMS: + for env, cond in (("continuum", lambda q: q["tmpl"] >= 0.95), ("line", lambda q: q["tmpl"] < 0.95)): + negs = sorted((q["snr"] for q in allpk if q["cam"] == cam and q["sign"] < 0 and q["isolated"] and cond(q)), + reverse=True) + out[(cam, env)] = negs[0] if negs else 0.0 + npos = sum(1 for q in allpk if q["cam"] == cam and q["sign"] > 0 and q["isolated"] and cond(q)) + print("camera %s %-9s: isolated emission-like %d, absorption-like %d, strongest absorption-like %s" + % (cam, env, npos, len(negs), ", ".join("%.1f" % v for v in negs[:3]))) + cands = [q for q in allpk if q["sign"] > 0 and q["isolated"] + and q["snr"] > out[(q["cam"], "continuum" if q["tmpl"] >= 0.95 else "line")]] + print("%d isolated emission-like peaks above the null" % len(cands)) + for q in sorted(cands, key=lambda q: -q["snr"])[:30]: + print(" %s (Gaia DR3 %s) camera %s %.3f A rest, %.3f A observatory, S/N %.1f, width %.2f, template %.2f" + % (q["sid"], q["star"], q["cam"], q["lam"], q["lam_topo"], q["snr"], q["width"], q["tmpl"])) + json.dump(allpk, open(os.path.join(galah_HERE, "galah_peaks.json"), "w")) + + +def galah_main(): + os.makedirs(galah_DL, exist_ok=True) + if sys.argv[1] == "fetch": + rows = list(csv.DictReader(open(os.path.join(galah_HERE, "galah_sample.csv")))) + jobs = [(r["sobject_id"], c) for r in rows for c in galah_CAMS] + with ThreadPoolExecutor(16) as ex: + got = sum(ex.map(galah_fetch_one, jobs)) + print("%d of %d files" % (got, len(jobs))) + else: + galah_vet(galah_search()) + + +# exposures mode + +def galah_tap(q): + """Rows of ADQL on Data Central's TAP service.""" + return core.tap("datacentral", q) + +def galah_highpass(w, d, width=1.5): + from scipy.ndimage import median_filter + step = np.median(np.diff(w)) + base = median_filter(d, size=max(3, int(width / step)) | 1, mode="nearest") + hp = d / np.maximum(base, 1e-3) - 1.0 + return hp + +def galah_exposures_main(): + pk = json.load(open(core.results("galah_peaks.json"))) + negmax = {} + for cam in "BVRI": + for env in ("continuum", "line"): + f = (lambda q: q["tmpl"] >= 0.95) if env == "continuum" else (lambda q: q["tmpl"] < 0.95) + v = [q["snr"] for q in pk if q["cam"] == cam and q["sign"] < 0 and q["isolated"] and f(q)] + negmax[(cam, env)] = max(v) if v else 0 + cands = [q for q in pk if q["sign"] > 0 and q["isolated"] + and q["snr"] > negmax[(q["cam"], "continuum" if q["tmpl"] >= 0.95 else "line")]] + out = [] + for q in sorted(cands, key=lambda q: -q["snr"]): + pre = q["sid"][:12] + rows = galah_tap("SELECT sobject_id, rv_comp_1 FROM galah_dr4.mainspectable WHERE sobject_id BETWEEN %s000 AND %s999" + % (pre, pre)) + rows = [r for r in rows if r["sobject_id"] != q["sid"] and r["rv_comp_1"]][:60] + os.makedirs(galah_DL, exist_ok=True) + with ThreadPoolExecutor(8) as ex: + list(ex.map(galah_fetch_one, [(r["sobject_id"], q["cam"]) for r in rows])) + vb = None + hits, vals, n = 0, [], 0 + lam_o = q["lam_topo"] + for r in rows: + x = galah_load(r["sobject_id"], q["cam"]) + if x is None: + continue + w, d, meta = x + if vb is None: + vb = galah_baryc(meta) + # barycentric wavelengths to the observatory's + wo = w * (1.0 - vb / galah_C) + hp = galah_highpass(w, d) + m = np.abs(wo - lam_o) < lam_o / galah_R_RES + if not m.any(): + continue + n += 1 + sig = 1.4826 * np.median(np.abs(hp - np.median(hp))) + vals.append(float(hp[m].max())) + if hp[m].max() > 5 * sig: + hits += 1 + rec = dict(sid=q["sid"], cam=q["cam"], lam=q["lam"], lam_obs=lam_o, snr=q["snr"], tmpl=q["tmpl"], + fibres=n, fibres_with_peak=hits, median_highpass=round(float(np.median(vals)) if vals else float("nan"), 4)) + out.append(rec) + print("%s camera %s %.3f A rest (%.3f observatory) S/N %.1f template %.2f: %d of %d fibres in the same exposure " + "peak there, median high-pass %+.4f" % (q["sid"], q["cam"], q["lam"], lam_o, q["snr"], q["tmpl"], hits, n, + rec["median_highpass"]), flush=True) + json.dump(out, open(core.results("galah_exposure_check.json"), "w"), indent=0) + + +def galah_candidates(pk): + """The null per camera and environment (the strongest isolated absorption-like S/N) and the isolated emission-like peaks above it.""" + null = {} + for cam in galah_CAMS: + for env in ("continuum", "line"): + v = [q["snr"] for q in pk if q["cam"] == cam and q["sign"] < 0 and q["isolated"] and (q["tmpl"] >= 0.95) == (env == "continuum")] + null[(cam, env)] = max(v) if v else 0.0 + return null, [q for q in pk if q["sign"] > 0 and q["isolated"] and q["snr"] > null[(q["cam"], "continuum" if q["tmpl"] >= 0.95 else "line")]] + + +def galah_peak_at(w, d, lam, tol): + """The highest high-pass excess within tol (A) of lam over the spectrum's robust scatter, or None where it does not reach.""" + m = np.abs(w - lam) < tol + if not m.any(): + return None + hp = galah_highpass(w, d) + sig = 1.4826 * np.nanmedian(np.abs(hp - np.nanmedian(hp))) + return float(np.nanmax(hp[m]) / sig) if sig > 0 else None + + +def galah_check_main(): + """Each candidate in the same fibre's other runs of its night at the same observatory wavelength, where a detector or fibre defect recurs, and in the star's other GALAH spectra at the same rest wavelength, where a line of the star recurs.""" + pk = json.load(open(core.results("galah_peaks.json"))) + exp = {(r["sid"], r["cam"], round(r["lam"], 2)): r for r in json.load(open(core.results("galah_exposure_check.json")))} \ + if os.path.exists(core.results("galah_exposure_check.json")) else {} + null, cands = galah_candidates(pk) + out = [] + for q in sorted(cands, key=lambda q: -q["snr"]): + tol = q["lam"] / galah_R_RES + day, pivot = int(q["sid"][:6]), int(q["sid"][-3:]) + fib = galah_tap("SELECT sobject_id FROM galah_dr4.mainspectable WHERE sobject_id BETWEEN %d AND %d AND MOD(sobject_id, 1000) = %d" + % (day * 10 ** 9, day * 10 ** 9 + 999999999, pivot)) + fib = [r["sobject_id"] for r in fib if r["sobject_id"] != q["sid"]] + ep = [r for r in galah_tap("SELECT sobject_id, rv_comp_1 FROM galah_dr4.mainspectable WHERE gaiadr3_source_id = %s" % q["star"]) + if r["sobject_id"] != q["sid"] and core.num(r["rv_comp_1"]) is not None] + with ThreadPoolExecutor(8) as ex: + list(ex.map(galah_fetch_one, [(s, q["cam"]) for s in fib] + [(r["sobject_id"], q["cam"]) for r in ep])) + f_snr = [] + for s in fib: + x = galah_load(s, q["cam"]) + if x is not None: + w, d, meta = x + v = galah_peak_at(w * (1.0 - galah_baryc(meta) / galah_C), d, q["lam_topo"], tol) + if v is not None: + f_snr.append(v) + e_snr = [] + for r in ep: + x = galah_load(r["sobject_id"], q["cam"]) + if x is not None: + w, d, meta = x + v = galah_peak_at(w / (1.0 + float(r["rv_comp_1"]) / galah_C), d, q["lam"], tol) + if v is not None: + e_snr.append(v) + e = exp.get((q["sid"], q["cam"], round(q["lam"], 2)), {}) + rec = dict(sid=q["sid"], star=q["star"], cam=q["cam"], lam=q["lam"], lam_obs=q["lam_topo"], snr=q["snr"], width=q["width"], + tmpl=q["tmpl"], exposure_fibres=e.get("fibres"), exposure_peaks=e.get("fibres_with_peak"), + fibre_runs=len(f_snr), fibre_peaks=int(sum(v > 5 for v in f_snr)), fibre_max=max(f_snr) if f_snr else None, + epochs=len(e_snr), epoch_peaks=int(sum(v > 5 for v in e_snr)), epoch_max=max(e_snr) if e_snr else None) + rec["vet"] = galah_vets(rec) + out.append(rec) + print("%s (Gaia DR3 %s) camera %s %.2f A rest, %.2f observatory, S/N %.0f: same exposure %s of %s fibres; same fibre %d of %d " + "runs that night (max %s); the star's other spectra %d of %d (max %s); %s" % ( + q["sid"], q["star"], q["cam"], q["lam"], q["lam_topo"], q["snr"], rec["exposure_peaks"], rec["exposure_fibres"], + rec["fibre_peaks"], rec["fibre_runs"], "%.1f" % rec["fibre_max"] if rec["fibre_max"] is not None else "-", + rec["epoch_peaks"], rec["epochs"], "%.1f" % rec["epoch_max"] if rec["epoch_max"] is not None else "-", + "; ".join(rec["vet"]) or "unexplained"), flush=True) + json.dump(out, open(core.results("galah_candidate_check.json"), "w"), indent=1) + + +def galah_vets(rec, raw=None): + """Vet codes for a checked candidate: peaks in two or more other fibres of the exposure, in the same fibre on another run of the night, a star seen again without it, or a peak narrower than three quarters of the instrumental profile at 10 sigma, which light through the spectrograph cannot make (the unresolved-line rule of the ESO search); and from the raw frames (galah_raw_one), no light the fibre holds in every exposure near the peak's column while one exposure holds an excess there, or in a block of one exposure the excess there off the fibre's trace.""" + v = [] + if (rec.get("exposure_peaks") or 0) >= 2: + v.append("neighbouring-fibres") + if rec["fibre_peaks"] >= 1: + v.append("fibre-fixed") + if rec["epochs"] and not rec["epoch_peaks"]: + v.append("single-epoch") + if rec["snr"] >= 10.0 and rec["width"] < 0.75: + v.append("detector-pixel") + if raw and raw.get("runs"): + if len(raw["runs"]) >= 2 and raw["single"] and not any(all(p["light"]) for p in raw["persistent"]): + v.append("cosmic-ray") + if len(raw["runs"]) >= 2 and any(not any(p["light"]) and max(e["fwhm_x"] for e in p["events"]) < 0.6 * float(np.median( + [a["fwhm_x"] for a in raw["arc_lines"] if abs(a["dy"]) < 1] or [3.0])) for p in raw["persistent"]): + v.append("detector-pixel") + if len(raw["runs"]) == 1 and raw["persistent"]: + top = max(raw["persistent"], key=lambda p: p["min_snr"]) + if abs(top["events"][0]["dy"]) > 1.0: + v.append("off-trace") + return v + + +# the raw HERMES frames of a candidate: its observation block from the AAT archive, the fibre's trace and its neighbours', and +# whether the excess near the peak's column is light the fibre holds in every exposure or charge that one exposure holds + +galah_RAW = os.path.join(galah_HERE, "hermes_raw") +galah_NCOL = 4096 +galah_GAIN = 2.75 +galah_EV_PAIR = 3.65 +# camera I of 2017-01-02, fibre 47: the raw column, observatory wavelength and dispersion where the reduction places the charge +# spot of 170102001601044, from which a peak's column elsewhere is predicted to a few hundred pixels +galah_RAW_ANCHOR = (2578.3, 7791.79, 0.0735) +galah_RAW_HALF = 400 + + +def galah_raw_run(r): + m = re.search(r"(\d{4})\.f(?:i)?ts$", r["filename"], re.I) + return int(m.group(1)) if m else -1 + + +def galah_raw_plate(r): + return (r["fits_header"] if isinstance(r["fits_header"], dict) else {}).get("SOURCE") + + +def galah_raw_block(rows, first): + """Camera IR's (E2V8-IR) science runs of the observation that begins at run FIRST (the first object run from there and those of the same field after it), with the flat and the arc of the same plate nearest them, before or after.""" + run = {galah_raw_run(r): r for r in rows if r["detector"] == "E2V8-IR"} + sci, obj = [], None + for k in sorted(k for k in run if k >= first): + r = run[k] + if r["ndf_class"] == "MFOBJECT": + if obj is None: + obj = r["OBJECT"] + if r["OBJECT"] != obj: + break + sci.append(r) + elif sci: + break + if not sci: + return [], [], [] + k0, k1, pl = galah_raw_run(sci[0]), galah_raw_run(sci[-1]), galah_raw_plate(sci[0]) + + def nearest(cls): + c = [k for k in run if run[k]["ndf_class"] == cls and galah_raw_plate(run[k]) == pl and (k0 - 4 <= k < k0 or k1 < k <= k1 + 4)] + return [run[min(c, key=lambda k: min(abs(k - k0), abs(k - k1)))]] if c else [] + return nearest("MFARC"), nearest("MFFFF"), sci + + +def galah_raw_load(path): + """A raw HERMES frame less its overscan's bias, row by row, and its fibre table.""" + from astropy.io import fits + h = fits.open(path) + a = np.asarray(h[0].data, float) + return a[:, :galah_NCOL] - np.median(a[:, galah_NCOL + 4:], axis=1)[:, None], h[1].data + + +def galah_raw_peaks(flat): + from scipy.signal import find_peaks + prof = np.median(flat[:, galah_NCOL // 2 - 20:galah_NCOL // 2 + 20], axis=1) + return find_peaks(prof, distance=5, prominence=0.02 * np.percentile(prof, 99))[0] + + +def galah_raw_walk(pk, start=1): + """{fibre: y at the detector's centre}, walking the slit from the flat's first trace as fibre START: each next fibre one spacing on, plus the slitlet gap after every tenth fibre, the spacing and the gap following the traces already placed; a fibre with no trace within a third of a spacing of where it is expected is dark.""" + d = np.diff(pk) + sp = float(np.median(d[:8])) + big = d[(d > 1.8 * sp) & (d < 3.0 * sp)] + gap = float(np.median(big) - sp) if len(big) else 13.0 + pos, last_f, last_y, i = {start: int(pk[0])}, start, float(pk[0]), 1 + recent = [sp] + for f in range(start + 1, 401): + if i >= len(pk): + break + s = float(np.median(recent[-8:])) + bounds = (f - 1) // 10 - (last_f - 1) // 10 + pred = last_y + (f - last_f) * s + bounds * gap + if abs(pk[i] - pred) < s / 3: + if f - last_f == 1 and bounds == 0: + recent.append(pk[i] - last_y) + elif f - last_f == 1 and bounds == 1: + gap = 0.7 * gap + 0.3 * (pk[i] - last_y - s) + pos[f], last_f, last_y = int(pk[i]), f, float(pk[i]) + i += 1 + elif pk[i] < pred - s / 3: + i += 1 + return pos + + +def galah_raw_trace(flat, y0, half=4, step=32): + """The trace through (centre, y0) in the flat: centroids every STEP columns, a cubic in x.""" + xs, ys = [], [] + for direction in (1, -1): + y, x = float(y0), galah_NCOL // 2 + while 40 <= x < galah_NCOL - 40: + yi = int(round(y)) + win = np.median(flat[yi - half:yi + half + 1, x - 8:x + 8], axis=1) + win = win - win.min() + if win.sum() > 0: + c = float(np.sum(win * np.arange(-half, half + 1)) / win.sum()) + if abs(c) < 2: + y = yi + c + xs.append(x) + ys.append(y) + x += direction * step + p = np.polyfit(np.array(xs) - galah_NCOL / 2, ys, 3) + return lambda x: np.polyval(p, np.asarray(x, float) - galah_NCOL / 2) + + +def galah_raw_extract(img, ytr, half=3): + x = np.arange(galah_NCOL) + rows = np.clip(np.round(ytr(x)).astype(int)[None, :] + np.arange(-half, half + 1)[:, None], 0, img.shape[0] - 1) + return img[rows, x[None, :]].sum(axis=0) + + +def galah_raw_gauss(v): + """Centre (from the middle) and FWHM of a profile by a Gaussian with a constant.""" + from scipy.optimize import curve_fit + x = np.arange(len(v)) - (len(v) - 1) / 2.0 + try: + p, _ = curve_fit(lambda x, a, m, s, c: a * np.exp(-0.5 * ((x - m) / s) ** 2) + c, x, v, + p0=[float(v.max()), float(x[np.argmax(v)]), 1.5, 0.0], maxfev=20000) + return float(p[1]), float(2.3548 * abs(p[2])) + except Exception: + return np.nan, np.nan + + +def galah_raw_event(img, ytr, x0, search=2, h=6): + """The brightest excess within SEARCH columns of x0 near the trace, each row's continuum taken from columns 12-40 px away: its centre, FWHM along and across the dispersion, offset from the trace's centre (fitted to the same rows' continuum), the trace's FWHM there, and its charge in electrons and in the energy that releases it in silicon.""" + yi, xi = int(round(float(ytr(x0)))), int(round(x0)) + st = img[yi - 14:yi + 15, xi - 40:xi + 41] + cont = np.median(np.concatenate([st[:, :28], st[:, -28:]], axis=1), axis=1) + r = st - cont[:, None] + sub = r[10:19, 40 - search:40 + search + 1] + j = np.unravel_index(np.argmax(sub), sub.shape) + py, px = j[0] + 10, j[1] + 40 - search + box = r[py - h:py + h + 1, px - h:px + h + 1] + mx, fx = galah_raw_gauss(box.sum(axis=0)) + my, fy = galah_raw_gauss(box.sum(axis=1)) + bg = np.median(img[yi - 40:yi + 41, xi - 40:xi + 41]) + ty, tf = galah_raw_gauss((cont - min(bg, cont.min()))[8:21]) + e = float(box.sum()) * galah_GAIN + return dict(x=float(xi - 40 + px + mx), y=float(yi - 14 + py + my), dy=float(py - 14 + my - ty), fwhm_x=fx, fwhm_y=fy, trace_fwhm=tf, + peak_adu=float(r[py, px]), electrons=e, mev=e * galah_EV_PAIR / 1e6) + + +def galah_raw_arcs(arc, ytr, x0, n=10): + """The brightest unsaturated arc lines within 600 px of x0 on the trace, each measured as an event.""" + from scipy.ndimage import median_filter + from scipy.signal import find_peaks + e = galah_raw_extract(arc, ytr) + lo, hi = max(60, int(x0) - 600), min(galah_NCOL - 60, int(x0) + 600) + seg = e[lo:hi] - median_filter(e[lo:hi], size=41, mode="nearest") + pk = find_peaks(seg, distance=15, prominence=20 * 1.4826 * np.median(np.abs(seg - np.median(seg))))[0] + out = [] + for k in sorted(pk, key=lambda k: -seg[k]): + ev = galah_raw_event(arc, ytr, lo + k, search=3) + if ev["peak_adu"] < 40000 and np.isfinite(ev["fwhm_x"]): + out.append(ev) + if len(out) == n: + break + return out + + +def galah_raw_differences(img, flat, ytr, ntr): + """The target less the median of its neighbours, in flux per unit throughput (where the night sky is common) and continuum- normalised (where the telluric absorption is), each high-passed in units of its scatter; and the first as a share of the target's continuum.""" + from scipy.ndimage import median_filter + + def per_throughput(tr): + e, ef = galah_raw_extract(img, tr), galah_raw_extract(flat, tr) + return e / np.where(ef > 0.05 * np.nanmedian(ef), ef, np.nan) + + def z(u): + u = np.nan_to_num(u) + hp = u - median_filter(u, size=51, mode="nearest") + s = 1.4826 * np.median(np.abs(hp - np.median(hp))) + return (hp / s if s > 0 else hp * 0), hp + + def cont(v): + return median_filter(np.nan_to_num(v), size=51, mode="nearest") + a = per_throughput(ytr) + A = [per_throughput(t) for t in ntr] + z1, hp1 = z(a - np.nanmedian(A, axis=0)) + ca = cont(a) + z2, _ = z(a / np.where(ca > 0, ca, np.nan) - np.nanmedian([v / np.where(cont(v) > 0, cont(v), np.nan) for v in A], axis=0)) + return np.minimum(z1, z2), hp1 / np.where(ca > 0, ca, np.nan) + + +def galah_raw_light(ev, arcs): + """Within 1 px of the trace's centre, where the arc lines fall, and as wide as light along and across the dispersion.""" + on = [a["fwhm_x"] for a in arcs if abs(a["dy"]) < 1] + fx = float(np.median(on)) if on else 3.0 + return bool(abs(ev["dy"]) <= 1.0 and ev["fwhm_x"] >= 0.6 * fx and 0.6 * ev["trace_fwhm"] <= ev["fwhm_y"] <= 1.6 * ev["trace_fwhm"]) + + +def galah_raw_one(sid, lam_obs): + """One camera-I candidate in its raw frames: the excesses the fibre holds and its lit neighbours within six fibres do not, above 4 sigma at one column in every exposure (persistent) and above 6 sigma in one exposure with the others below 3 (single), within GALAH_RAW_HALF columns of the anchor's prediction, each with its shape against the arc lines'.""" + from scipy.ndimage import maximum_filter1d + from scipy.signal import find_peaks + date = "20%s-%s-%s" % (sid[0:2], sid[2:4], sid[4:6]) + arcs, flats, sci = galah_raw_block(core.aat_night(date), int(sid[6:10])) + if not (arcs and flats and sci): + return dict(sid=sid, lam_obs=lam_obs, error="the archive holds no complete block from run %s" % sid[6:10]) + paths = core.aat_fetch(arcs + flats + sci, os.path.join(galah_RAW, sid[:6])) + arc = galah_raw_load(paths[0])[0] + flat, tab = galah_raw_load(paths[1]) + imgs = [galah_raw_load(p)[0] for p in paths[2:]] + types = np.asarray(tab["TYPE"]).astype(str) + fibre = int(np.nonzero(np.asarray(tab["PIVOT"]) == int(sid[-3:]))[0][0]) + 1 + pos = galah_raw_walk(galah_raw_peaks(flat)) + if fibre not in pos: + return dict(sid=sid, lam_obs=lam_obs, error="fibre %d has no trace in the flat" % fibre) + # the walk's placement checked by the fibre table's magnitudes against the light of the placed fibres + stack = np.sum(imgs, axis=0) + col = np.median(stack[:, 1848:2248], axis=1) + lit = {f: float(np.median(col[y - 1:y + 2]) - np.median(col)) for f, y in pos.items()} + P = [f for f in pos if types[f - 1] == "P" and lit[f] > 0] + rho = float(np.corrcoef([float(tab["MAGNITUDE"][f - 1]) for f in P], [np.log10(lit[f]) for f in P])[0, 1]) + ytr = galah_raw_trace(flat, pos[fibre]) + ntr = [galah_raw_trace(flat, pos[f]) for f in pos if f != fibre and abs(f - fibre) <= 6 and types[f - 1] in ("P", "S")] + xr = galah_RAW_ANCHOR[0] + (lam_obs - galah_RAW_ANCHOR[1]) / galah_RAW_ANCHOR[2] + lo, hi = int(max(60, xr - galah_RAW_HALF)), int(min(galah_NCOL - 60, xr + galah_RAW_HALF)) + arcl = galah_raw_arcs(arc, ytr, galah_NCOL / 2.0) + Z = [galah_raw_differences(img, flat, ytr, ntr) for img in imgs] + M = [maximum_filter1d(z, 3) for z, rel in Z] + win = (np.arange(galah_NCOL) >= lo) & (np.arange(galah_NCOL) < hi) + persistent, single = [], [] + for k in find_peaks(np.where(win, np.min(M, axis=0), 0), height=4, distance=5)[0]: + evs = [galah_raw_event(img, ytr, k) for img in imgs] + persistent.append(dict(x=int(k), min_snr=float(np.min(M, axis=0)[k]), rel=[float(rel[k]) for z, rel in Z], + light=[galah_raw_light(ev, arcl) for ev in evs], events=evs)) + if len(imgs) > 1: + for i, (z, rel) in enumerate(Z): + for k in find_peaks(np.where(win, z, 0), height=6, distance=5)[0]: + if any(M[j][k] >= 3 for j in range(len(imgs)) if j != i): + continue + ev = galah_raw_event(imgs[i], ytr, k) + single.append(dict(run=os.path.basename(paths[2 + i]), x=int(k), snr=float(z[k]), rel=float(rel[k]), + light=galah_raw_light(ev, arcl), event=ev)) + return dict(sid=sid, lam_obs=lam_obs, fibre=fibre, rho=rho, runs=[os.path.basename(p) for p in paths[2:]], + exposed=[r["EXPOSED"] for r in sci], window=[lo, hi], arc_lines=arcl, persistent=persistent, single=single) + + +def galah_raw_census(sid, span=20, x_min=1300): + """How often an excess one exposure holds on a fibre's trace has the shape of light: across the lit fibres within SPAN of the candidate's, each against its own neighbours, the single-exposure excesses beyond the A band and the share of them light-shaped.""" + from scipy.signal import find_peaks + date = "20%s-%s-%s" % (sid[0:2], sid[2:4], sid[4:6]) + arcs, flats, sci = galah_raw_block(core.aat_night(date), int(sid[6:10])) + paths = core.aat_fetch(arcs + flats + sci, os.path.join(galah_RAW, sid[:6])) + arc = galah_raw_load(paths[0])[0] + flat, tab = galah_raw_load(paths[1]) + imgs = [galah_raw_load(p)[0] for p in paths[2:]] + types = np.asarray(tab["TYPE"]).astype(str) + target = int(np.nonzero(np.asarray(tab["PIVOT"]) == int(sid[-3:]))[0][0]) + 1 + pos = galah_raw_walk(galah_raw_peaks(flat)) + lit = [f for f in pos if types[f - 1] in ("P", "S")] + tr = {f: galah_raw_trace(flat, pos[f]) for f in lit if abs(f - target) <= span + 7} + arcl = galah_raw_arcs(arc, tr[target], galah_NCOL / 2.0) + fibres = [f for f in lit if types[f - 1] == "P" and abs(f - target) <= span] + n = light = 0 + for f in fibres: + Z = [galah_raw_differences(img, flat, tr[f], [tr[g] for g in lit if g != f and abs(g - f) <= 6 and g in tr])[0] for img in imgs] + for i, z in enumerate(Z): + zz = z.copy() + zz[:x_min] = 0 + zz[-60:] = 0 + for k in find_peaks(zz, height=6, distance=5)[0]: + if any(Z[j][k - 1:k + 2].max() >= 3 for j in range(len(Z)) if j != i): + continue + n += 1 + light += galah_raw_light(galah_raw_event(imgs[i], tr[f], k), arcl) + cols = (galah_NCOL - 60 - x_min) * len(fibres) + return dict(fibres=len(fibres), events=n, light=light, per_window=2.0 * galah_RAW_HALF * n / cols, + light_per_window=2.0 * galah_RAW_HALF * light / cols) + + +def galah_raw_main(): + """Each candidate the catalogue checks leave unexplained, in its raw frames; a census beside a candidate whose window holds a light-shaped excess in one exposure.""" + chk = json.load(open(core.results("galah_candidate_check.json"))) + path = core.results("galah_raw_check.json") + done = {(r["sid"], round(r["lam_obs"], 2)): r for r in json.load(open(path))} if os.path.exists(path) else {} + for c in sorted(chk, key=lambda c: -c["snr"]): + key = (c["sid"], round(c["lam_obs"], 2)) + if galah_vets(c) or key in done: + continue + r = galah_raw_one(c["sid"], c["lam_obs"]) + if any(s["light"] for s in r.get("single", [])): + r["census"] = galah_raw_census(c["sid"]) + done[key] = r + json.dump(list(done.values()), open(path, "w"), indent=1, default=float) + if "error" in r: + print("%s %.2f A: %s" % (c["sid"], c["lam_obs"], r["error"]), flush=True) + continue + print("%s %.2f A: %d exposures %s, fibre %d (placement r %.2f); window x %d-%d: in every exposure %s; in one exposure %s%s; vets %s" % ( + c["sid"], c["lam_obs"], len(r["runs"]), r["exposed"], r["fibre"], r["rho"], r["window"][0], r["window"][1], + ["x %d %.0f sigma %s" % (p["x"], p["min_snr"], "light" if all(p["light"]) else "%+.1f px" % p["events"][0]["dy"]) for p in r["persistent"] + ][:4], ["%s x %d %.0f sigma%s" % (s["run"], s["x"], s["snr"], " light-shaped" if s["light"] else "") for s in r["single"]][:6], + "; census %d events in %d fibres, %d light-shaped, %.2f light-shaped expected in a window" % ( + r["census"]["events"], r["census"]["fibres"], r["census"]["light"], r["census"]["light_per_window"]) if "census" in r else "", + galah_vets(c, r)), flush=True) + + +def galah_record(): + rows = list(csv.DictReader(open(os.path.join(galah_HERE, "galah_sample.csv")))) + pk = json.load(open(core.results("galah_peaks.json"))) + null, cands = galah_candidates(pk) + chk = {(r["sid"], r["cam"], round(r["lam"], 2)): r for r in json.load(open(core.results("galah_candidate_check.json")))} + rp = core.results("galah_raw_check.json") + raw = {(r["sid"], round(r["lam_obs"], 2)): r for r in json.load(open(rp))} if os.path.exists(rp) else {} + best = {} + for q in pk: + if q["sign"] > 0 and q["isolated"] and q["snr"] > best.get(q["star"], (0,))[0]: + best[q["star"]] = (q["snr"], q) + stars = sorted({r["gaiadr3_source_id"] for r in rows}) + vetted = {} + for q in cands: + c = chk.get((q["sid"], q["cam"], round(q["lam"], 2))) + vetted.setdefault(q["star"], []).append((q, galah_vets(c, raw.get((c["sid"], round(c["lam_obs"], 2)))) if c else [])) + left = [s for s, v in vetted.items() if any(not codes for q, codes in v)] + core.record_search( + "laser_galah", "Laser lines, GALAH DR4", archive="GALAH DR4 (Data Central SODA spectra, cameras B, V, R and I)", release="DR4", + selection="%d spectra of %d dwarfs within 100 pc (galah_sample.csv)" % (len(rows), len(stars)), + code=os.path.abspath(__file__), entry="galah", n_targets=len(stars), n_unit="stars", + params=dict(threshold_snr=5.5, neighbours=20, resolution=galah_R_RES, isolated="at most one other star at the rest or the " + "observatory wavelength, width 0.6-1.6 of the instrument's", unresolved="at least 0.75 of the instrument's width at 10 sigma"), + null_summary="per camera and environment the strongest isolated absorption-like peak: %s" % ", ".join( + "%s %s %.1f" % (c, e, v) for (c, e), v in sorted(null.items())), + sensitivity="an unresolved emission line above the null in a spectrum shifted to the star's rest frame by the catalogue's velocity", + ledger="Laser lines, GALAH DR4", + result="%d isolated emission-like peaks above the null in %d stars, all checked in the other fibres of their exposure, the same " + "fibre's other runs of the night, the star's other spectra and against the instrument's width, and those left in their raw " + "HERMES exposures; %d stars with a peak no check explains" % (len(cands), len(vetted), len(left)), + outputs=[core.results("galah_peaks.json"), core.results("galah_exposure_check.json"), core.results("galah_candidate_check.json")] + + ([rp] if raw else [])) + core.clear_targets("laser_galah") + recs = [] + for s in stars: + b = best.get(s) + v = vetted.get(s, []) + codes = sorted({c for q, cs in v for c in cs}) if v and all(cs for q, cs in v) else [] + note = "; ".join("%s camera %s %.2f A S/N %.0f%s" % (q["sid"], q["cam"], q["lam"], q["snr"], ": " + ", ".join(cs) if cs else ": unexplained") + for q, cs in v) if v else None + recs.append(dict(target="gaia_dr3:%s" % s, stat=round(b[0], 2) if b else None, unit="S/N of the strongest isolated emission-like peak", + vet="; ".join(codes) or None, note=note)) + core.record_targets("laser_galah", recs) + print("recorded %d stars; %d with candidates, %d unexplained" % (len(recs), len(vetted), len(left))) + + +def galah_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "" + if mode == "exposures": + sys.argv.pop(1) + galah_exposures_main() + elif mode == "check": + galah_check_main() + elif mode == "raw": + galah_raw_main() + elif mode == "record": + galah_record() + else: + galah_main() + + +# -------------------------------------------------------------------------------------------------------------- + +apogee_DOC = r"""Steady laser lines in APOGEE DR17 combined spectra of nearby dwarfs against twin-star fits, with dips as null and sharing and airglow vetoes. + + python -I seti.py lasers apogee pack + python -I seti.py lasers apogee search [--k 12] [--thr 5] [--procs 2] + python -I seti.py lasers apogee vet [--top 30]""" + + +apogee_HERE = core.RESULTS +apogee_DL = os.path.join(apogee_HERE, "apogee_dl") +apogee_OUT = os.path.join(apogee_HERE, "apogee_combined") +apogee_NPIX = 8575 +apogee_LAM = 10 ** (4.179 + 6e-6 * np.arange(apogee_NPIX)) +apogee_SIG_PX = science.lsf_sigma_px(22500.0, dlog10=6e-6) +# masked pixel bits; PERSIST_MED and PERSIST_LOW kept and reported +apogee_BAD = sum(1 << b for b in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14)) +apogee_PERSIST = (1 << 10) | (1 << 11) +# peaks under subtracted sky above this fraction of the star's flux are airglow +apogee_SKY_LIMIT = 0.3 + + +def apogee_pack(): + """Combined spectrum, error and mask of each apStar file as .npy arrays.""" + from astropy.io import fits + os.makedirs(apogee_OUT, exist_ok=True) + files = sorted(glob.glob(os.path.join(apogee_DL, "apStar-dr17-*.fits"))) + aids, F, E, M, S, meta = [], [], [], [], [], [] + for p in files: + try: + with fits.open(p) as h: + H = h[0].header + f = np.asarray(h[1].data, np.float32) + e = np.asarray(h[2].data, np.float32) + m = np.asarray(h[3].data, np.int32) + sk = np.asarray(h[4].data, np.float32) + if f.ndim == 1: + f, e, m, sk = f[None], e[None], m[None], sk[None] + nv = int(H.get("NVISITS", 1)) + rows = range(2, 2 + nv) if f.shape[0] >= nv + 2 else range(0, 1) + # brightest removed sky emission relative to the visit's median flux + skyfrac = np.max([sk[r] / max(float(np.median(f[r][f[r] > 0])) if np.any(f[r] > 0) else 1.0, 1e-9) + for r in rows], axis=0) + vrel = [] + for i in range(1, nv + 1): + vh, b = H.get("VHELIO%d" % i, H.get("VRAD%d" % i)), H.get("BC%d" % i) + vrel.append(round(float(vh) - float(b), 3) if vh is not None and b is not None else None) + except Exception: + continue + if f.shape[1] != apogee_NPIX: + continue + aids.append(os.path.basename(p)[12:-5]) + F.append(f[0]) + E.append(e[0]) + M.append(m[0]) + S.append(skyfrac.astype(np.float32)) + meta.append(dict(nv=nv, snr=float(H.get("SNR", np.nan)), vhelio=float(H.get("VHELIO", np.nan)), + teff=float(H.get("RV_TEFF", np.nan)), logg=float(H.get("RV_LOGG", np.nan)), + feh=float(H.get("RV_FEH", np.nan)), vrel=vrel)) + np.save(os.path.join(apogee_OUT, "flux.npy"), np.array(F)) + np.save(os.path.join(apogee_OUT, "err.npy"), np.array(E)) + np.save(os.path.join(apogee_OUT, "mask.npy"), np.array(M)) + np.save(os.path.join(apogee_OUT, "skyfrac.npy"), np.array(S)) + json.dump(dict(aids=aids, meta=meta), open(os.path.join(apogee_OUT, "meta.json"), "w")) + print("%d combined spectra packed" % len(aids), flush=True) + + +def apogee_chips(good): + """Pixel ranges of the three detectors.""" + frac = good.mean(0) > 0.5 + out, s = [], None + for j, v in enumerate(frac): + if v and s is None: + s = j + if not v and s is not None: + if j - s > 500: + out.append((s, j)) + s = None + if s is not None and apogee_NPIX - s > 500: + out.append((s, apogee_NPIX)) + return out + + +def apogee_normalise(F, good, ranges): + N = np.full(F.shape, np.nan, np.float32) + for i in range(len(F)): + for lo, hi in ranges: + f = np.where(good[i, lo:hi], F[i, lo:hi], np.nan) + env = science.envelope(f, block=100, q=90.0, smooth=3) + N[i, lo:hi] = f / env + return N + + +def apogee_neighbours(N, good, k): + """k most similar spectra per spectrum on the GPU.""" + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + W = torch.as_tensor(good, dtype=torch.float32, device=dev) + X = torch.as_tensor(np.nan_to_num(N, nan=0.0), dtype=torch.float32, device=dev) * W + X2 = X * X + overlap = W @ W.T + d = (X2 @ W.T + W @ X2.T - 2.0 * X @ X.T) / overlap.clamp(min=1.0) + d[overlap < 0.5 * W.sum(1, keepdim=True)] = float("inf") + d.fill_diagonal_(float("inf")) + return torch.topk(d, k, largest=False).indices.cpu().numpy() + + +def apogee_fill(row, ok): + """Comparison spectrum with bad samples interpolated.""" + if ok.all(): + return row + x = np.arange(len(row)) + if ok.sum() < 2: + return np.ones_like(row) + return np.interp(x, x[ok], row[ok]) + + +apogee__S = {} + + +def apogee__init(k): + apogee__S["F"] = np.load(os.path.join(apogee_OUT, "flux.npy"), mmap_mode="r") + apogee__S["E"] = np.load(os.path.join(apogee_OUT, "err.npy"), mmap_mode="r") + apogee__S["M"] = np.load(os.path.join(apogee_OUT, "mask.npy"), mmap_mode="r") + apogee__S["N"] = np.load(os.path.join(apogee_OUT, "norm.npy"), mmap_mode="r") + apogee__S["G"] = np.load(os.path.join(apogee_OUT, "good.npy"), mmap_mode="r") + apogee__S["SKY"] = np.load(os.path.join(apogee_OUT, "skyfrac.npy"), mmap_mode="r") + apogee__S["NB"] = np.load(os.path.join(apogee_OUT, "neighbours.npy"))[:, :k] + apogee__S["R"] = json.load(open(os.path.join(apogee_OUT, "chips.json"))) + + +def apogee_one(args): + """Peaks of both signs in one star's twin-model residual.""" + i, thr = args + quiet_warnings() + N, G, nb = apogee__S["N"], apogee__S["G"], apogee__S["NB"][i] + t = np.asarray(N[i], float) + g = np.asarray(G[i], bool) + B = np.array([apogee_fill(np.asarray(N[j], float), np.asarray(G[j], bool)) for j in nb]) + model = np.full(apogee_NPIX, np.nan) + tmpl = np.full(apogee_NPIX, np.nan) + for lo, hi in apogee__S["R"]: + for s in range(lo, hi, 128): + a, b = max(s - 64, lo), min(s + 192, hi) + m = g[a:b] & np.isfinite(t[a:b]) + if m.sum() < 80: + continue + mod, tp = science.twin_model(np.nan_to_num(t[a:b], nan=1.0), B[:, a:b], m, poly_order=2) + c0, c1 = s, min(s + 128, hi) + model[c0:c1] = mod[c0 - a:c1 - a] + tmpl[c0:c1] = tp[c0 - a:c1 - a] + res = np.where(g & np.isfinite(model) & (model > 0.05), t / model - 1.0, np.nan) + ferr = np.asarray(apogee__S["E"][i], float) / np.maximum(np.asarray(apogee__S["F"][i], float), 1e-9) + sig = np.maximum(np.where(np.isfinite(ferr), ferr, np.inf), science.block_mad(res, block=200, floor=1e-3)) + snr, amp = science.matched_filter(res, sig, apogee_SIG_PX) + near_bad = np.convolve((~g).astype(float), np.ones(5), mode="same") > 0 + mk = np.asarray(apogee__S["M"][i], np.int64) + out = [] + for sign in (1, -1): + for j in science.find_peaks(sign * snr, thr, sep=6, mask=~near_bad & np.isfinite(snr), limit=300): + out.append(dict(i=int(i), sign=sign, pix=int(j), lam=round(float(apogee_LAM[j]), 3), snr=round(float(sign * snr[j]), 2), + amp=round(float(sign * amp[j]), 5), + width=round(science.width_ratio(sign * res, j, apogee_SIG_PX), 2), + spiky=bool(science.profile_is_spiky(np.nan_to_num(sign * res), j, apogee_SIG_PX, base=0.0)), + tmpl=round(float(tmpl[j]), 3) if np.isfinite(tmpl[j]) else None, + persist=bool(np.any(mk[max(j - 2, 0):j + 3] & apogee_PERSIST)), + sky=round(float(np.nanmax(apogee__S["SKY"][i, max(j - 2, 0):j + 3])), 3))) + scat = float(np.nanmedian(sig[np.isfinite(res)])) if np.isfinite(res).any() else float("nan") + return dict(i=int(i), peaks=out, scatter=scat, used=int(np.isfinite(res).sum())) + + +def apogee_search(k, thr, procs, limit=None): + meta = json.load(open(os.path.join(apogee_OUT, "meta.json"))) + aids = meta["aids"] + F = np.load(os.path.join(apogee_OUT, "flux.npy")) + E = np.load(os.path.join(apogee_OUT, "err.npy")) + M = np.load(os.path.join(apogee_OUT, "mask.npy")) + medE = np.nanmedian(np.where(F > 0, E, np.nan), axis=1) + good = ((M.astype(np.int64) & apogee_BAD) == 0) & (F > 0) & np.isfinite(E) & (E > 0) & (E < 50 * medE[:, None]) + ranges = apogee_chips(good) + print("%d stars; detector ranges %s" % (len(aids), [(int(a), int(b)) for a, b in ranges]), flush=True) + N = apogee_normalise(F, good, ranges) + good &= np.isfinite(N) + np.save(os.path.join(apogee_OUT, "norm.npy"), N) + np.save(os.path.join(apogee_OUT, "good.npy"), good) + json.dump([[int(a), int(b)] for a, b in ranges], open(os.path.join(apogee_OUT, "chips.json"), "w")) + nb = apogee_neighbours(N, good, max(k, 20)) + np.save(os.path.join(apogee_OUT, "neighbours.npy"), nb) + del F, E, M, N + idx = list(range(len(aids)))[:limit] if limit else list(range(len(aids))) + jobs = [(i, thr) for i in idx] + if procs > 1: + from multiprocessing import Pool + with Pool(procs, initializer=apogee__init, initargs=(k,)) as pool: + res = pool.map(apogee_one, jobs, chunksize=8) + else: + apogee__init(k) + res = [apogee_one(j) for j in jobs] + peaks = [dict(q, aid=aids[q["i"]]) for r in res for q in r["peaks"]] + for sign in (1, -1): + sel = [q for q in peaks if q["sign"] == sign and not q["spiky"] and 0.6 <= q["width"] <= 1.6] + pix = np.array([q["pix"] for q in sel]) + st = np.array([q["i"] for q in sel]) + for q in sel: + q["shared"] = int(np.sum((np.abs(pix - q["pix"]) <= 1) & (st != q["i"]))) + for q in peaks: + q.setdefault("shared", -1) + q["clean"] = bool(not q["spiky"] and 0.6 <= q["width"] <= 1.6 and 0 <= q["shared"] <= 2 + and not q["sky"] > apogee_SKY_LIMIT) + q["env"] = "continuum" if (q["tmpl"] or 0) >= 0.95 else "line" + json.dump(dict(peaks=peaks, stars=[dict(aid=aids[r["i"]], scatter=r["scatter"], used=r["used"]) for r in res]), + open(os.path.join(apogee_HERE, "apogee_steady.json"), "w")) + print("%d stars searched, %d peaks" % (len(res), len(peaks))) + for env in ("continuum", "line"): + neg = sorted((q["snr"] for q in peaks if q["sign"] < 0 and q["clean"] and q["env"] == env), reverse=True) + pos = sorted((q for q in peaks if q["sign"] > 0 and q["clean"] and q["env"] == env), key=lambda q: -q["snr"]) + top = neg[0] if neg else 0.0 + print("%s: clean absorption-like %d (strongest %s), clean emission-like %d" + % (env, len(neg), ", ".join("%.1f" % v for v in neg[:5]), len(pos))) + for t in (5, 6, 8, 10, 15): + print(" S/N>%d: emission-like %d, absorption-like %d" + % (t, sum(1 for q in pos if q["snr"] > t), sum(1 for v in neg if v > t))) + for q in pos[:15]: + band = " telecom C band" if 15300 < q["lam"] < 15650 else "" + print(" %s%s %.3f A S/N %.1f amp %.4f width %.2f template %.3f%s%s" + % ("ABOVE-NULL " if q["snr"] > top else "", q["aid"], q["lam"], q["snr"], q["amp"], q["width"], + q["tmpl"] or 0, " persistence" if q["persist"] else "", band)) + + +def apogee_vet(top): + """Per-visit amplitude, removed sky and telluric spectra, and observatory wavelength of each emission peak above the null.""" + from astropy.io import fits + apogee__init(12) + meta = json.load(open(os.path.join(apogee_OUT, "meta.json"))) + d = json.load(open(os.path.join(apogee_HERE, "apogee_steady.json"))) + peaks = d["peaks"] + null = {env: max([q["snr"] for q in peaks if q["sign"] < 0 and q["clean"] and q["env"] == env] or [0.0]) + for env in ("continuum", "line")} + cands = sorted((q for q in peaks if q["sign"] > 0 and q["clean"]), key=lambda q: -q["snr"] / null[q["env"]])[:top] + out = [] + for q in cands: + i, j = q["i"], q["pix"] + lo, hi = next((a, b) for a, b in apogee__S["R"] if a <= j < b) + a, b = max(j - 128, lo), min(j + 128, hi) + t = np.asarray(apogee__S["N"][i], float) + g = np.asarray(apogee__S["G"][i], bool) + B = np.array([apogee_fill(np.asarray(apogee__S["N"][n], float), np.asarray(apogee__S["G"][n], bool)) for n in apogee__S["NB"][i]]) + m = g[a:b] & np.isfinite(t[a:b]) & (np.abs(np.arange(a, b) - j) > 4) + model, _ = science.twin_model(np.nan_to_num(t[a:b], nan=1.0), B[:, a:b], m, poly_order=2) + path = os.path.join(apogee_DL, "apStar-dr17-%s.fits" % q["aid"]) + with fits.open(path) as h: + nv = int(h[0].header.get("NVISITS", 1)) + rows = range(2, 2 + nv) if h[1].data.ndim == 2 and h[1].data.shape[0] >= nv + 2 else range(0, 1) + V = [np.asarray(h[1].data[r], float) for r in rows] + Ev = [np.asarray(h[2].data[r], float) for r in rows] + Mv = [np.asarray(h[3].data[r], np.int64) for r in rows] + Sv = [np.asarray(h[4].data[r], float) for r in rows] + Tv = [np.asarray(h[6].data[r], float) for r in rows] + vrel = meta["meta"][i]["vrel"] + visits = [] + k_ = np.arange(-int(4 * apogee_SIG_PX) - 1, int(4 * apogee_SIG_PX) + 2) + gk = np.exp(-0.5 * (k_ / apogee_SIG_PX) ** 2) + for k, (v, e, mk, sky, tel) in enumerate(zip(V, Ev, Mv, Sv, Tv)): + seg, es = v[a:b], e[a:b] + ok = m & (seg > 0) & np.isfinite(es) & ((mk[a:b] & apogee_BAD) == 0) + if ok.sum() < 60 or not np.all((seg[j - a + k_] > 0)): + visits.append(None) + continue + x = np.arange(a, b) - j + A = np.vstack([model, model * x / 128.0]).T + c, *_ = np.linalg.lstsq(A[ok], seg[ok], rcond=None) + fit = A @ c + r = seg / fit - 1.0 + noise = 1.4826 * np.median(np.abs(r[ok] - np.median(r[ok]))) + amp = float(np.dot(r[j - a + k_], gk) / np.dot(gk, gk)) + snr_k = amp / (noise / np.sqrt(np.dot(gk, gk))) + visits.append(dict(amp=round(amp, 4), snr=round(float(snr_k), 1), + sky=round(float(np.max(sky[j - 2:j + 3]) / max(np.median(seg[ok]), 1e-9)), 4), + tell=round(float(1.0 - np.min(tel[j - 2:j + 3])) if np.all(tel[j - 2:j + 3] > 0) else -1.0, 3), + lam_obs=round(apogee_LAM[j] * (1 + vrel[k] / science.C), 3) if k < len(vrel) and vrel[k] is not None else None, + flag=bool(np.any(mk[j - 2:j + 3] & apogee_BAD)))) + rec = dict(q, null=null[q["env"]], visits=visits) + out.append(rec) + amps = [v["amp"] for v in visits if v] + print("%s %.3f A S/N %.1f (null %.1f) amp %.4f template %.3f%s" % (q["aid"], q["lam"], q["snr"], null[q["env"]], + q["amp"], q["tmpl"] or 0, " persistence" if q["persist"] else "")) + print(" visit amplitudes %s" % ["%.3f(%.0f)" % (v["amp"], v["snr"]) if v else "-" for v in visits]) + print(" sky/star %s telluric depth %s" % ([v["sky"] if v else "-" for v in visits], + [v["tell"] if v else "-" for v in visits])) + print(" observatory wavelengths %s" % [v["lam_obs"] if v else "-" for v in visits]) + if amps: + print(" spread of visit amplitudes %.4f, median %.4f, %d of %d visits above half the combined amplitude" + % (np.std(amps), np.median(amps), sum(1 for x in amps if x > 0.5 * q["amp"]), len(amps)), flush=True) + json.dump(out, open(os.path.join(apogee_HERE, "apogee_steady_vet.json"), "w")) + + +def apogee_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("pack", "search", "vet")) + p.add_argument("--top", type=int, default=30) + p.add_argument("--k", type=int, default=12) + p.add_argument("--thr", type=float, default=5.0) + p.add_argument("--procs", type=int, default=2) + p.add_argument("--limit", type=int, default=0) + a = p.parse_args() + if a.mode == "pack": + apogee_pack() + elif a.mode == "vet": + apogee_vet(a.top) + else: + apogee_search(a.k, a.thr, a.procs, a.limit or None) + + +def apogee_cli(): + apogee_main() + + +# -------------------------------------------------------------------------------------------------------------- + +desi_DOC = r"""Laser lines in DESI DR1 spectra of stars within 100 pc against twin fits, with dips as null and sky-prevalent pixels removed. + + python -I seti.py lasers desi sample + python -I seti.py lasers desi fetch [--batch 400] + python -I seti.py lasers desi search [--k 12] [--thr 5] [--procs 2]""" + + +desi_HERE = core.RESULTS +desi_DL = os.path.join(desi_HERE, "desi_dl") +desi_OUT = os.path.join(desi_HERE, "desi_combined") +desi_NPIX = 7781 +desi_LAM = 3600.0 + 0.8 * np.arange(desi_NPIX) +# night-sky and street-light lines (vacuum A) +desi_SKY = (5578.89, 6302.05, 6365.54, 5891.58, 5897.56, 4047.71, 4359.56, 5462.27, 5771.21, 5792.27) +# lines active M dwarfs show or twins disagree on (vacuum A) +desi_STELLAR = (6564.61, 4862.68, 4341.68, 4102.89, 3971.20, 3890.15, 3934.78, 3969.59, 8500.36, 8544.44, 8664.52, + 5877.25, 6679.99, 7067.14, 4472.73, 5891.58, 5897.56, 8185.51, 8197.07, 7667.01, 7701.08, 8809.18, 7774.08, + 8448.68, 9548.59, 9231.55, 9017.39, 8865.22, 8752.88, 8667.40, 8600.75, 8547.73, 8469.58, 8439.08, 8415.63) + + +def desi_summary(): + """Peaks against the null by exposures per coadd, stellar-line peaks set aside.""" + nexp = {int(k): v[0] for k, v in json.load(open(os.path.join(desi_HERE, "desi_numexp.json"))).items()} + rows = {int(r["targetid"]): r for r in csv.DictReader(open(os.path.join(desi_HERE, "desi_sample.csv")))} + pk = json.load(open(os.path.join(desi_HERE, "desi_laser.json")))["peaks"] + for q in pk: + q["stellar"] = bool(any(abs(q["lam"] - s) < 3.0 for s in desi_STELLAR)) + q["nexp"] = nexp.get(q["targetid"], 0) + for label, lo, hi in (("one exposure", 1, 1), ("two exposures", 2, 2), ("three or more", 3, 999)): + nstar = sum(1 for t, n in nexp.items() if lo <= n <= hi) + for env in ("continuum", "line"): + sel = [q for q in pk if q["clean"] and not q["stellar"] and q["env"] == env and lo <= q["nexp"] <= hi] + pos = sorted((q for q in sel if q["sign"] > 0), key=lambda q: -q["snr"]) + neg = sorted((q["snr"] for q in sel if q["sign"] < 0), reverse=True) + top = neg[0] if neg else 0.0 + print("%-14s (%4d stars) %-9s emission-like S/N>8 %3d, >15 %3d; absorption-like S/N>8 %3d, >15 %3d; " + "strongest absorption %.1f" % (label, nstar, env, sum(q["snr"] > 8 for q in pos), + sum(q["snr"] > 15 for q in pos), sum(v > 8 for v in neg), + sum(v > 15 for v in neg), top)) + for q in pos[:5]: + if q["snr"] > top: + r = rows[q["targetid"]] + print(" ABOVE-NULL %d (%d exp, Teff %s, %.0f pc) %.2f A S/N %.1f amp %.3f width %.2f" + % (q["targetid"], q["nexp"], r["teff"][:4], 1000.0 / float(r["parallax"]), q["lam"], q["snr"], + q["amp"], q["width"])) + json.dump(dict(peaks=pk), open(os.path.join(desi_HERE, "desi_laser.json"), "w")) + + +def desi_tap(q): + u = "https://datalab.noirlab.edu/tap/sync?" + urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", FORMAT="csv", + QUERY=q)) + raw = urllib.request.urlopen(urllib.request.Request(u, headers=core.UA), timeout=900).read() + return list(csv.DictReader(io.StringIO(raw.decode()))) + + +def desi_sample(): + # Postgres sorts NaN high; parallax needs an upper bound + rows = desi_tap("SELECT m.targetid, m.source_id, m.target_ra AS ra, m.target_dec AS dec, g.parallax, g.phot_g_mean_mag, " + "g.bp_rp, m.teff, m.logg, m.feh, m.rv_adop, m.sn_b, m.sn_r, m.sn_z, m.survey, m.program, m.healpix " + "FROM desi_dr1.mws AS m JOIN gaia_dr3.gaia_source AS g " + "ON m.source_id = g.source_id WHERE g.parallax BETWEEN 10 AND 800 AND m.zcat_primary = 't' " + "AND m.rvs_warn = 0 AND m.sn_r > 20") + with open(os.path.join(desi_HERE, "desi_sample.csv"), "w", newline="") as fh: + w = csv.DictWriter(fh, fieldnames=list(rows[0])) + w.writeheader() + w.writerows(rows) + print("%d stars" % len(rows)) + + +def desi_fetch(batch): + from sparcl.client import SparclClient + os.makedirs(desi_DL, exist_ok=True) + rows = list(csv.DictReader(open(os.path.join(desi_HERE, "desi_sample.csv")))) + tids = [int(r["targetid"]) for r in rows] + have = set() + for p in glob.glob(os.path.join(desi_DL, "batch_*.npz")): + have |= set(int(x) for x in np.load(p)["targetid"]) + todo = [t for t in tids if t not in have] + print("%d stars, %d to fetch" % (len(tids), len(todo)), flush=True) + c = SparclClient() + k0 = len(glob.glob(os.path.join(desi_DL, "batch_*.npz"))) + for k in range(0, len(todo), batch): + part = todo[k:k + batch] + found = c.find(outfields=["sparcl_id", "targetid", "specprimary"], + constraints={"targetid": part, "data_release": ["DESI-DR1"]}, limit=batch * 4) + ids = [r["sparcl_id"] for r in found.records if r.get("specprimary")] + got = c.retrieve(uuid_list=ids, include=["targetid", "flux", "ivar", "mask", "model", "wave_sigma"], + dataset_list=["DESI-DR1"], limit=len(ids) + 10) + recs = [r for r in got.records if len(r["flux"]) == desi_NPIX] + np.savez_compressed(os.path.join(desi_DL, "batch_%04d.npz" % (k0 + k // batch)), + targetid=np.array([int(r["targetid"]) for r in recs], np.int64), + flux=np.array([r["flux"] for r in recs], np.float32), + ivar=np.array([r["ivar"] for r in recs], np.float32), + mask=np.array([r["mask"] for r in recs], np.int32), + model=np.array([r["model"] for r in recs], np.float32), + wave_sigma=np.array([r["wave_sigma"] for r in recs], np.float32)) + print(" %d/%d (%d spectra in this batch)" % (min(k + batch, len(todo)), len(todo), len(recs)), flush=True) + + +desi__S = {} + + +def desi__init(): + for name in ("norm", "good", "flux", "ivar", "sigma", "skyfrac"): + desi__S[name] = np.load(os.path.join(desi_OUT, name + ".npy"), mmap_mode="r") + desi__S["NB"] = np.load(os.path.join(desi_OUT, "neighbours.npy")) + + +def desi_one(args): + i, thr, k = args + quiet_warnings() + N, G = desi__S["norm"], desi__S["good"] + t = np.asarray(N[i], float) + g = np.asarray(G[i], bool) + nb = desi__S["NB"][i][:k] + B = np.array([science.fill_gaps(np.asarray(N[j], float), np.asarray(G[j], bool)) for j in nb]) + model = np.full(desi_NPIX, np.nan) + tmpl = np.full(desi_NPIX, np.nan) + for s in range(0, desi_NPIX, 128): + a, b = max(s - 64, 0), min(s + 192, desi_NPIX) + m = g[a:b] & np.isfinite(t[a:b]) + if m.sum() < 80: + continue + mod, tp = science.twin_model(np.nan_to_num(t[a:b], nan=1.0), B[:, a:b], m, poly_order=2) + c1 = min(s + 128, desi_NPIX) + model[s:c1] = mod[s - a:c1 - a] + tmpl[s:c1] = tp[s - a:c1 - a] + res = np.where(g & np.isfinite(model) & (model > 0.05), t / model - 1.0, np.nan) + flux = np.asarray(desi__S["flux"][i], float) + ivar = np.asarray(desi__S["ivar"][i], float) + ferr = np.where(ivar > 0, 1.0 / np.sqrt(np.maximum(ivar, 1e-30)) / np.maximum(np.abs(flux), 1e-9), np.inf) + sig = np.maximum(ferr, science.block_mad(res, block=200, floor=1e-3)) + sp_all = np.asarray(desi__S["sigma"][i], float) / 0.8 + snr = np.zeros(desi_NPIX) + amp = np.zeros(desi_NPIX) + for s in range(0, desi_NPIX, 1000): + sp = float(np.median(sp_all[s:s + 1000])) + a, b = max(s - 20, 0), min(s + 1020, desi_NPIX) + z1, a1 = science.matched_filter(res[a:b], sig[a:b], sp) + snr[s:s + 1000] = z1[s - a:s - a + min(1000, desi_NPIX - s)] + amp[s:s + 1000] = a1[s - a:s - a + min(1000, desi_NPIX - s)] + near_bad = np.convolve((~g).astype(float), np.ones(5), mode="same") > 0 + out = [] + for sign in (1, -1): + for j in science.find_peaks(sign * snr, thr, sep=5, mask=~near_bad & np.isfinite(snr), limit=300): + sp = sp_all[j] + out.append(dict(i=int(i), sign=sign, pix=int(j), lam=round(float(desi_LAM[j]), 2), snr=round(float(sign * snr[j]), 2), + amp=round(float(sign * amp[j]), 5), width=round(science.width_ratio(sign * res, j, sp), 2), + spiky=bool(science.profile_is_spiky(np.nan_to_num(sign * res), j, sp, base=0.0)), + tmpl=round(float(tmpl[j]), 3) if np.isfinite(tmpl[j]) else None, + sky=bool(any(abs(desi_LAM[j] - s_) < 2.5 for s_ in desi_SKY)))) + return dict(i=int(i), peaks=out, used=int(np.isfinite(res).sum())) + + +def desi_search(k, thr, procs): + rows = {int(r["targetid"]): r for r in csv.DictReader(open(os.path.join(desi_HERE, "desi_sample.csv")))} + T, F, IV, M, S = [], [], [], [], [] + for p in sorted(glob.glob(os.path.join(desi_DL, "batch_*.npz"))): + z = np.load(p) + T.append(z["targetid"]) + F.append(z["flux"]) + IV.append(z["ivar"]) + M.append(z["mask"]) + S.append(z["wave_sigma"]) + tid = np.concatenate(T) + F, IV, M, S = np.vstack(F), np.vstack(IV), np.vstack(M), np.vstack(S) + good = (IV > 0) & (M == 0) & np.isfinite(F) & (F > 0) + N = np.full(F.shape, np.nan, np.float32) + for i in range(len(F)): + f = np.where(good[i], F[i], np.nan) + N[i] = f / science.envelope(f, block=100, q=90.0, smooth=3) + good &= np.isfinite(N) + os.makedirs(desi_OUT, exist_ok=True) + for name, arr in (("norm", N), ("good", good), ("flux", F), ("ivar", IV), ("sigma", S)): + np.save(os.path.join(desi_OUT, name + ".npy"), arr) + np.save(os.path.join(desi_OUT, "skyfrac.npy"), np.zeros((1, 1), np.float32)) + nb = science.nearest_spectra(N, good, max(k, 20)) + np.save(os.path.join(desi_OUT, "neighbours.npy"), nb) + print("%d spectra; neighbours found" % len(F), flush=True) + del F, IV, M, S, N + jobs = [(i, thr, k) for i in range(len(tid))] + if procs > 1: + from multiprocessing import Pool + with Pool(procs, initializer=desi__init) as pool: + res = pool.map(desi_one, jobs, chunksize=8) + else: + desi__init() + res = [desi_one(j) for j in jobs] + peaks = [dict(q, targetid=int(tid[q["i"]])) for r in res for q in r["peaks"]] + # prevalence: spectra with a peak within 1 pixel against the median over 100 + for sign in (1, -1): + sel = [q for q in peaks if q["sign"] == sign and not q["spiky"] and 0.6 <= q["width"] <= 1.6] + hist = np.bincount([q["pix"] for q in sel], minlength=desi_NPIX).astype(float) + near = np.convolve(hist, np.ones(3), mode="same") + base = np.array([np.median(near[max(j - 100, 0):j + 101]) for j in range(desi_NPIX)]) + for q in sel: + e = max(base[q["pix"]], 0.5) + q["shared"] = round(float(near[q["pix"]] - 1), 1) + q["shared_limit"] = round(float(e + 4 * np.sqrt(e) + 2), 1) + for q in peaks: + q.setdefault("shared", -1) + q.setdefault("shared_limit", 0) + q["clean"] = bool(not q["spiky"] and 0.6 <= q["width"] <= 1.6 and 0 <= q["shared"] <= q["shared_limit"] + and not q["sky"]) + q["env"] = "continuum" if (q["tmpl"] or 0) >= 0.95 else "line" + json.dump(dict(peaks=peaks), open(os.path.join(desi_HERE, "desi_laser.json"), "w")) + print("%d spectra searched, %d peaks" % (len(res), len(peaks))) + for env in ("continuum", "line"): + neg = sorted((q["snr"] for q in peaks if q["sign"] < 0 and q["clean"] and q["env"] == env), reverse=True) + pos = sorted((q for q in peaks if q["sign"] > 0 and q["clean"] and q["env"] == env), key=lambda q: -q["snr"]) + top = neg[0] if neg else 0.0 + print("%s: clean absorption-like %d (strongest %s), clean emission-like %d" + % (env, len(neg), ", ".join("%.1f" % v for v in neg[:5]), len(pos))) + for t in (5, 6, 8, 10, 15): + print(" S/N>%d: emission-like %d, absorption-like %d" + % (t, sum(1 for q in pos if q["snr"] > t), sum(1 for v in neg if v > t))) + for q in pos[:15]: + r = rows.get(q["targetid"], {}) + print(" %s%d (Gaia DR3 %s, %.0f pc, Teff %s) %.2f A S/N %.1f amp %.4f width %.2f template %.3f" + % ("ABOVE-NULL " if q["snr"] > top else "", q["targetid"], r.get("source_id"), + 1000.0 / float(r.get("parallax", "nan") or "nan"), (r.get("teff") or "?")[:4], q["lam"], q["snr"], + q["amp"], q["width"], q["tmpl"] or 0)) + + +def desi_exposures(row): + """Every exposure of one target from its HEALPix file: per camera wavelength, flux, ivar, mask, MJD, fibre, petal.""" + from astropy.io import fits + hp = int(row["healpix"]) + name = "spectra-%s-%s-%d.fits.gz" % (row["survey"], row["program"], hp) + path = os.path.join(desi_HERE, "desi_vet", name) + if not os.path.exists(path): + os.makedirs(os.path.dirname(path), exist_ok=True) + url = ("https://data.desi.lbl.gov/public/dr1/spectro/redux/iron/healpix/%s/%s/%d/%d/%s" + % (row["survey"], row["program"], hp // 100, hp, name)) + with urllib.request.urlopen(urllib.request.Request(url, headers=core.UA), timeout=1800) as r, \ + open(path + ".tmp", "wb") as fh: + while True: + b = r.read(1 << 22) + if not b: + break + fh.write(b) + os.replace(path + ".tmp", path) + out = {} + with fits.open(path) as h: + fm = h["FIBERMAP"].data + rows = np.nonzero(fm["TARGETID"] == int(row["targetid"]))[0] + out["mjd"] = np.asarray(fm["MJD"][rows], float) if "MJD" in fm.columns.names else np.full(len(rows), np.nan) + out["fiber"] = np.asarray(fm["FIBER"][rows]) + out["expid"] = np.asarray(fm["EXPID"][rows]) if "EXPID" in fm.columns.names else np.arange(len(rows)) + for cam in ("B", "R", "Z"): + out[cam] = (np.asarray(h[cam + "_WAVELENGTH"].data, float), np.asarray(h[cam + "_FLUX"].data[rows], float), + np.asarray(h[cam + "_IVAR"].data[rows], float), np.asarray(h[cam + "_MASK"].data[rows])) + return out + + +def desi_vet(top, targets=None): + """Per-exposure amplitude and observatory wavelength of the strongest clean peaks.""" + rows = {int(r["targetid"]): r for r in csv.DictReader(open(os.path.join(desi_HERE, "desi_sample.csv")))} + peaks = json.load(open(os.path.join(desi_HERE, "desi_laser.json")))["peaks"] + null = {env: max([q["snr"] for q in peaks if q["sign"] < 0 and q["clean"] and q["env"] == env] or [0.0]) + for env in ("continuum", "line")} + if targets: + want = [(int(t.split(":")[0]), float(t.split(":")[1])) for t in targets] + cands = [min((q for q in peaks if q["targetid"] == t and q["sign"] > 0), key=lambda q, lam=lam: abs(q["lam"] - lam)) + for t, lam in want] + else: + cands = sorted((q for q in peaks if q["sign"] > 0 and q["clean"]), + key=lambda q: -q["snr"] / max(null[q["env"]], 1))[:top] + from scipy.ndimage import median_filter + report = [] + for q in cands: + r = rows[q["targetid"]] + try: + ex = desi_exposures(r) + except Exception as e: + print("%d: exposures unavailable (%s)" % (q["targetid"], str(e)[:80])) + continue + lam0 = q["lam"] + amps = [] + for cam in ("B", "R", "Z"): + w, F, IV, M = ex[cam] + if not (w[0] + 5 < lam0 < w[-1] - 5): + continue + j = int(np.argmin(np.abs(w - lam0))) + for k in range(len(F)): + f = F[k] + base = median_filter(f, size=31, mode="nearest") + seg = (f[j - 2:j + 3] - base[j - 2:j + 3]) + err = 1.0 / np.sqrt(np.maximum(IV[k][j - 2:j + 3], 1e-30)) + bad = bool(np.any(M[k][j - 2:j + 3])) + a = float(np.sum(seg / err ** 2) / np.sum(1 / err ** 2)) / max(float(np.median(base[j - 50:j + 50])), 1e-9) + s = float(np.sum(seg / err ** 2) / np.sqrt(np.sum(1 / err ** 2))) + mjd = ex["mjd"][k] + bc = (float(science.barycentric_correction(float(r.get("ra") or 0), float(r.get("dec") or 0), mjd, "KPNO")) + if np.isfinite(mjd) and r.get("ra") else float("nan")) + amps.append(dict(cam=cam, expid=int(ex["expid"][k]), mjd=round(float(mjd), 4), fiber=int(ex["fiber"][k]), + amp=round(a, 4), snr=round(s, 1), masked=bad, + lam_obs=round(lam0 / (1 + bc / 299792.458), 2) if np.isfinite(bc) else None)) + report.append(dict(q, null=null[q["env"]], exposures=amps)) + print("%d (Gaia DR3 %s, %.0f pc, Teff %s) %.2f A S/N %.1f (null %.1f) amp %.4f width %.2f" + % (q["targetid"], r["source_id"], 1000.0 / float(r["parallax"]), r["teff"][:4], lam0, q["snr"], + null[q["env"]], q["amp"], q["width"])) + for e in amps: + print(" %s exp %d MJD %.3f fibre %d: amp %+.4f S/N %+.1f%s, observatory %s A" + % (e["cam"], e["expid"], e["mjd"], e["fiber"], e["amp"], e["snr"], " masked" if e["masked"] else "", + e["lam_obs"]), flush=True) + json.dump(report, open(os.path.join(desi_HERE, "desi_laser_vet.json"), "w")) + + +def desi_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("sample", "fetch", "search", "summary", "vet")) + p.add_argument("--top", type=int, default=15) + p.add_argument("--targets", nargs="*", help="TARGETID:WAVELENGTH pairs to vet") + p.add_argument("--batch", type=int, default=400) + p.add_argument("--k", type=int, default=12) + p.add_argument("--thr", type=float, default=5.0) + p.add_argument("--procs", type=int, default=2) + a = p.parse_args() + if a.mode == "sample": + desi_sample() + elif a.mode == "fetch": + desi_fetch(a.batch) + elif a.mode == "vet": + desi_vet(a.top, a.targets) + elif a.mode == "summary": + desi_summary() + else: + desi_search(a.k, a.thr, a.procs) + + +def desi_cli(): + quiet_warnings() + desi_main() + + +# -------------------------------------------------------------------------------------------------------------- + +lamost_DOC = r"""Laser lines in LAMOST medium-resolution exposures of stars within 100 pc: 6-sigma unresolved peaks persisting across exposures, vetted for sharing, fibres and frame. + + python -I seti.py lasers lamost targets + python -I seti.py lasers lamost fetch [--threads 4] + python -I seti.py lasers lamost search + python -I seti.py lasers lamost judge + python -I seti.py lasers lamost neighbours + python -I seti.py lasers lamost record""" + +lamost_ROOT = os.environ.get("LAMOST_ROOT", core.data("lamost_mrs")) +lamost_HERE = core.RESULTS +lamost_TAP = "https://www.lamost.org/dr10/v2.0/voservice/tap/sync" +lamost_FITS = "https://www.lamost.org/dr10/v2.0/medspectrum/fits/%s" +lamost_C_KMS = 299792.458 +lamost_R = 7500.0 +lamost_Z_MIN = 6.0 +lamost_WIN_A = 3.0 + + +def lamost_tap(q): + """Rows of ADQL on LAMOST's TAP service by POST.""" + import time + import urllib.request + from astropy.io.votable import parse_single_table + data = urllib.parse.urlencode(dict(REQUEST="doQuery", LANG="ADQL", QUERY=q)).encode() + for attempt in range(4): + try: + req = urllib.request.Request(lamost_TAP, data=data, headers=dict(core.UA, **{"Content-Type": "application/x-www-form-urlencoded"})) + b = urllib.request.urlopen(req, timeout=300).read() + break + except Exception: + if attempt == 3: + raise + time.sleep(10 * (attempt + 1)) + t = parse_single_table(io.BytesIO(b)).to_table() + return [dict(zip(t.colnames, [x.item() if hasattr(x, "item") else x for x in row])) for row in t] + + +def lamost_targets(): + os.makedirs(lamost_ROOT, exist_ok=True) + # Gaia returns at most 50000 rows; RA slices + gaia = [] + for ra0 in range(0, 360, 30): + gaia += core.gaia("SELECT source_id, ra, dec, parallax, phot_g_mean_mag, bp_rp, radial_velocity FROM " + "gaiadr3.gaia_source WHERE parallax > 10 AND parallax_over_error > 10 AND dec > -15 AND " + "phot_g_mean_mag < 15 AND ra >= %d AND ra < %d" % (ra0, ra0 + 30)) + by = {r["source_id"]: r for r in gaia} + ids = list(by) + rows = [] + for k in range(0, len(ids), 400): + q = ("SELECT obsid, gaia_source_id, band, coadd, snr, lmjm, lmjd, rv_br1, rv_br_flag FROM public.med_catalogue " + "WHERE gaia_source_id IN (%s)" % ",".join("'%s'" % i for i in ids[k:k + 400])) + try: + rows += lamost_tap(q) + except Exception as e: + print("chunk %d: %s" % (k, str(e)[:80]), flush=True) + if k % 8000 == 0: + print("%d of %d Gaia stars queried, %d MRS rows" % (k, len(ids), len(rows)), flush=True) + stars = {} + for r in rows: + s = str(r["gaia_source_id"]) + g = by.get(s, {}) + x = stars.setdefault(s, dict(gaia=s, plx=g.get("parallax"), g=g.get("phot_g_mean_mag"), bp_rp=g.get("bp_rp"), + rv_gaia=g.get("radial_velocity"), obsids=set(), exposures=0, rv=[])) + x["obsids"].add(str(r["obsid"])) + if int(r["coadd"] or 0) == 0: + x["exposures"] += 1 + try: + if float(r["rv_br1"]) > -9000: + x["rv"].append(float(r["rv_br1"])) + except (TypeError, ValueError): + pass + for x in stars.values(): + x["obsids"] = sorted(x["obsids"]) + x["rv"] = float(np.median(x["rv"])) if x["rv"] else None + json.dump(stars, open(os.path.join(lamost_ROOT, "targets.json"), "w")) + print("%d Gaia stars within 100 pc (dec > -15, G < 15); %d with MRS spectra, %d observations, %d single-exposure rows" + % (len(ids), len(stars), len({o for x in stars.values() for o in x["obsids"]}), + sum(x["exposures"] for x in stars.values()))) + + +def lamost_fetch(threads): + from concurrent.futures import ThreadPoolExecutor + stars = json.load(open(os.path.join(lamost_ROOT, "targets.json"))) + obs = sorted({o for x in stars.values() for o in x["obsids"]}) + os.makedirs(os.path.join(lamost_ROOT, "fits"), exist_ok=True) + + def one(o): + p = os.path.join(lamost_ROOT, "fits", o + ".fits.gz") + if os.path.exists(p): + return 1 + b = core.get(lamost_FITS % o, timeout=120, retries=3, soft=True, pause=2) + if not b or b[:2] != b"\x1f\x8b": + return 0 + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + n = 0 + with ThreadPoolExecutor(threads) as ex: + for k, r in enumerate(ex.map(one, obs)): + n += r + if k % 2000 == 0: + print("%d of %d observations fetched" % (n, len(obs)), flush=True) + print("%d of %d observation files on disk" % (n, len(obs))) + + +def lamost_exposures(path): + """Single exposures of one observation: (arm, lmjm, wavelength, flux, sigma, mask, helio_rv, fibre).""" + from astropy.io import fits + out = [] + with fits.open(path) as h: + hrv = h[0].header.get("HELIO_RV") + fibre = "%s-%s" % (h[0].header.get("SPID"), h[0].header.get("FIBERID")) + for e in h[1:]: + name = str(e.name) + if name.startswith("COADD") or "-" not in name: + continue + d = e.data[0] + cols = e.columns.names + w = np.asarray(d["WAVELENGTH"], float) + f = np.asarray(d["FLUX"], float) + iv = np.asarray(d["IVAR"], float) + m = np.asarray(d["PIXMASK"] if "PIXMASK" in cols else d["ANDMASK"] if "ANDMASK" in cols else np.zeros(len(w)), + int) + out.append((name[0], name[2:], w, f, np.where(iv > 0, 1 / np.sqrt(np.maximum(iv, 1e-30)), np.inf), m, hrv, + fibre)) + return out + + +def lamost_peaks_of(w, f, s, m): + from scipy.ndimage import maximum_filter1d, percentile_filter + from scipy.optimize import curve_fit + ok = np.isfinite(f) & np.isfinite(s) & (s < np.inf) & (m == 0) + if ok.sum() < 500: + return [] + w, f, s = w[ok], f[ok], s[ok] + step = float(np.median(np.diff(w))) + win = max(int(lamost_WIN_A / step) | 1, 15) + env = percentile_filter(f, 90, size=win, mode="nearest") + z = (f - env) / s + half = max(int(lamost_WIN_A / step), 10) + left = maximum_filter1d(np.concatenate([np.full(half, -np.inf), f[:-half]]), size=half, origin=(half - 1) // 2) + right = maximum_filter1d(np.concatenate([f[half:], np.full(half, -np.inf)]), size=half, origin=-(half // 2)) + top = np.maximum(left, right) + out = [] + for i in np.where((z >= lamost_Z_MIN) & (z >= np.roll(z, 1)) & (z >= np.roll(z, -1)))[0]: + if i < 6 or i > len(w) - 7 or not f[i] - top[i] > 3 * s[i]: + continue + inst = w[i] / lamost_R + x, y = w[i - 6:i + 7], (f - env)[i - 6:i + 7] + try: + p, _ = curve_fit(lambda x, a, mu, sg: a * np.exp(-0.5 * ((x - mu) / sg) ** 2), x, y, + p0=[y[6], w[i], inst / 2.355], sigma=s[i - 6:i + 7], maxfev=2000) + except Exception: + continue + fw = 2.355 * abs(p[2]) + if 0.5 * inst <= fw <= 1.5 * inst and abs(p[1] - w[i]) < inst: + out.append(dict(lam=float(p[1]), z=float(z[i]), fwhm=float(fw), inst=float(inst))) + return out + + +def lamost_scan_obs(job): + quiet_warnings() + obsid, star, rv = job + p = os.path.join(lamost_ROOT, "fits", obsid + ".fits.gz") + if not os.path.exists(p): + return [] + try: + exps = lamost_exposures(p) + except Exception: + return [] + out = [] + for arm, lmjm, w, f, s, m, hrv, fibre in exps: + lo, hi = float(np.nanmin(w)), float(np.nanmax(w)) + for pk in lamost_peaks_of(w, f, s, m): + out.append(dict(pk, star=star, obsid=obsid, arm=arm, lmjm=lmjm, hrv=hrv, fibre=fibre, + edge=min(pk["lam"] - lo, hi - pk["lam"]), topo=pk["lam"] / (1 + (hrv or 0.0) / lamost_C_KMS), + rest=pk["lam"] / (1 + (rv or 0.0) / lamost_C_KMS))) + return out + + +def lamost_search(): + from concurrent.futures import ProcessPoolExecutor + stars = json.load(open(os.path.join(lamost_ROOT, "targets.json"))) + jobs = [(o, s, x["rv"] if x["rv"] is not None else (float(x["rv_gaia"]) if x["rv_gaia"] not in (None, "") else 0.0)) + for s, x in stars.items() for o in x["obsids"]] + with ProcessPoolExecutor(int(os.environ.get("LAMOST_PROCS", "4"))) as ex: + feats = [f for fs in ex.map(lamost_scan_obs, jobs, chunksize=16) for f in fs] + print("%d observations of %d stars; %d narrow peaks at %.0f sigma in single exposures" + % (len(jobs), len(stars), len(feats), lamost_Z_MIN), flush=True) + json.dump(dict(observations=len(jobs), stars=len(stars), peaks=feats), open(os.path.join(lamost_HERE, "lamost_peaks.json"), "w")) + lamost_judge() + + +def lamost_poisson_sf(n, mu): + """Poisson P(X >= n) for mean mu.""" + if n <= 0: + return 1.0 + term, cdf = math.exp(-mu), 0.0 + for k in range(n): + cdf += term + term *= mu / (k + 1) + return max(0.0, 1.0 - cdf) + + +def lamost_judge(): + """Persistent features tested for sharing with other stars in rest and observed frames beyond Poisson chance at p 1e-3.""" + d = json.load(open(os.path.join(lamost_HERE, "lamost_peaks.json"))) + feats = d["peaks"] + by = {} + for f in feats: + by.setdefault((f["star"], f["arm"]), []).append(f) + pers = [] + for (star, arm), fs in by.items(): + fs.sort(key=lambda f: f["rest"]) + used = set() + for k, f in enumerate(fs): + if k in used: + continue + grp = [j for j, g in enumerate(fs) if abs(g["rest"] - f["rest"]) < f["inst"] / 3] + exps = {(fs[j]["obsid"], fs[j]["lmjm"]) for j in grp} + if len(exps) >= 2: + used.update(grp) + pers.append(dict(star=star, arm=arm, rest=float(np.mean([fs[j]["rest"] for j in grp])), + obs=float(np.mean([fs[j]["lam"] for j in grp])), n=len(exps), + nights=len({fs[j]["obsid"] for j in grp}), z=max(fs[j]["z"] for j in grp), + inst=f["inst"])) + print("%d persistent features in %d stars" % (len(pers), len({p["star"] for p in pers})), flush=True) + for p in pers: + grp = [g for g in by[(p["star"], p["arm"])] if abs(g["rest"] - p["rest"]) < p["inst"] / 3] + p["topo"] = float(np.mean([g["topo"] for g in grp])) + p["edge"] = float(min(g["edge"] for g in grp)) + p["fibres"] = sorted({g["fibre"] for g in grp}) + p["obsids"] = sorted({g["obsid"] for g in grp}) + # sharing against the density 1-20 A either side + for frame, key, kms in (("rest", "rest", 15.0), ("topo", "topo", 5.0)): + w = np.array([f[key] for f in feats]) + st = np.array([f["star"] for f in feats]) + o = np.argsort(w) + w, st = w[o], st[o] + for p in pers: + centre = p[key] + tol = centre * kms / lamost_C_KMS + lo, hi = np.searchsorted(w, [centre - tol, centre + tol]) + n = len(set(st[lo:hi]) - {p["star"]}) + side = set(st[np.searchsorted(w, centre - 20.0):np.searchsorted(w, centre - 1.0)]) | \ + set(st[np.searchsorted(w, centre + 1.0):np.searchsorted(w, centre + 20.0)]) + mu = len(side - {p["star"]}) * (2 * tol / 38.0) + p["n_" + frame], p["mu_" + frame], p["p_" + frame] = n, mu, lamost_poisson_sf(n, mu) + # same or neighbouring fibres, and the star on other nights, in the instrument frame + by_spec = {} + for f in feats: + by_spec.setdefault((f["fibre"].split("-")[0], f["arm"]), []).append(f) + stars = json.load(open(os.path.join(lamost_ROOT, "targets.json"))) + for p in pers: + mine = {(fb.split("-")[0], int(fb.split("-")[1])) for fb in p["fibres"] if fb.split("-")[1].isdigit()} + same, near = set(), set() + for spec, fno in mine: + for f in by_spec.get((spec, p["arm"]), []): + if f["star"] == p["star"] or not f["fibre"].split("-")[1].isdigit(): + continue + df = abs(int(f["fibre"].split("-")[1]) - fno) + if df == 0 and abs(f["topo"] - p["topo"]) < 0.5: + same.add(f["star"]) + elif df <= 6 and abs(f["topo"] - p["topo"]) < 8.0: + near.add(f["star"]) + p["fibre_mates"], p["detector_mates"] = sorted(same), sorted(near - same) + own = [f for f in by[(p["star"], p["arm"])] if f["obsid"] not in p["obsids"] + and abs(f["topo"] - p["topo"]) < p["inst"] / 6 and abs(f["rest"] - p["rest"]) >= p["inst"] / 3] + p["other_nights_topo"] = sorted({f["obsid"] for f in own}) + # members on nights with distinguishable heliocentric corrections + grp = [g for g in by[(p["star"], p["arm"])] if abs(g["rest"] - p["rest"]) < p["inst"] / 3] + hrvs = [g["hrv"] or 0.0 for g in grp] + p["hrv_spread"] = float(max(hrvs) - min(hrvs)) + p["spread_star"] = float(np.ptp([g["rest"] for g in grp])) + p["spread_topo"] = float(np.ptp([g["topo"] for g in grp])) + # the catalogue counts both arms' exposures + p["duty"] = float(p["n"] / max(int(stars.get(p["star"], {}).get("exposures") or 2 * p["n"]) / 2.0, p["n"])) + # other stars in the same exposures within 1 A (sky, satellites, meteors) + lmjms = {g["lmjm"] for g in grp} + p["exposure_mates"] = sorted({f["star"] for f in feats if f["lmjm"] in lmjms and f["star"] != p["star"] + and f["arm"] == p["arm"] and abs(f["topo"] - p["topo"]) < 1.0}) + for p in pers: + why = [] + if p["edge"] < 10.0: + why.append("within %.1f A of the arm's end" % p["edge"]) + if p["p_rest"] < 1e-3: + why.append("shared in the stellar frame (%d other stars against %.1f by chance)" % (p["n_rest"], p["mu_rest"])) + if p["p_topo"] < 1e-3: + why.append("shared in the instrument's frame (%d other stars against %.1f by chance)" + % (p["n_topo"], p["mu_topo"])) + if p["fibre_mates"]: + why.append("the same fibre shows it in %d other stars" % len(p["fibre_mates"])) + if p["detector_mates"]: + why.append("fibres within 6 on the same spectrograph show it in %d other stars" % len(p["detector_mates"])) + if p["other_nights_topo"]: + why.append("fixed in the instrument's frame across %d other nights" % len(p["other_nights_topo"])) + if p["exposure_mates"]: + why.append("other stars in the same exposures show it (%d)" % len(p["exposure_mates"])) + if p["hrv_spread"] >= 8.0 and p["spread_topo"] < 0.5 * p["spread_star"]: + why.append("its nights agree in the instrument's frame (%.3f A) and not in the star's (%.3f A)" + % (p["spread_topo"], p["spread_star"])) + p["why"] = why + left = sorted([p for p in pers if not p["why"]], key=lambda p: -p["z"]) + # chance rate from same-star pair separations of 3-30 A scaled to the window + near_pairs, far_pairs = 0, 0 + for fs in by.values(): + for i in range(len(fs)): + for j in range(i + 1, len(fs)): + if (fs[i]["obsid"], fs[i]["lmjm"]) != (fs[j]["obsid"], fs[j]["lmjm"]): + s = abs(fs[i]["rest"] - fs[j]["rest"]) / (fs[i]["inst"] / 3) + near_pairs += s < 1 + far_pairs += 10 <= s < 100 + chance = far_pairs / 90.0 + print("two-exposure coincidences within a third of a resolution element: %d, of which chance makes %.1f" + % (near_pairs, chance)) + counts = {} + for p in pers: + for w_ in p["why"]: + k = ("edge" if w_.startswith("within") else "stellar" if "stellar" in w_ else "instrument frame" + if "instrument's frame (" in w_ else "fibre" if "fibre" in w_ else "other nights") + counts[k] = counts.get(k, 0) + 1 + print("explained: %s; %d left:" % (", ".join("%s %d" % kv for kv in sorted(counts.items())), len(left))) + for p in left[:60]: + print(" Gaia DR3 %s %s %.3f A (instrument %.3f), %d exposures on %d nights, peak %.1f sigma; other stars %d " + "(%.1f expected) in the stellar frame, %d (%.1f) in the instrument's; fibres %s" + % (p["star"], p["arm"], p["rest"], p["topo"], p["n"], p["nights"], p["z"], p["n_rest"], p["mu_rest"], + p["n_topo"], p["mu_topo"], ",".join(p["fibres"]))) + json.dump(dict(observations=d["observations"], stars=d["stars"], peaks=len(feats), persistent=pers, + near_pairs=int(near_pairs), chance_pairs=float(chance)), + open(os.path.join(lamost_HERE, "lamost_laser.json"), "w"), indent=1) + + +def lamost_excess(w, f, s, m, centre, half=0.5): + """Largest excess over the 3 A running 90th percentile within half of centre.""" + from scipy.ndimage import percentile_filter + ok = np.isfinite(f) & np.isfinite(s) & (s < np.inf) & (m == 0) + if ok.sum() < 500: + return float("nan") + w, f, s = w[ok], f[ok], s[ok] + step = float(np.median(np.diff(w))) + env = percentile_filter(f, 90, size=max(int(lamost_WIN_A / step) | 1, 15), mode="nearest") + sel = np.abs(w - centre) < half + return float(np.max((f[sel] - env[sel]) / s[sel])) if sel.any() else float("nan") + + +def lamost_neighbours(): + """Judged features against fibres within 8 on the same spectrograph and exposures: shared light is cross-talk or sky.""" + r = json.load(open(os.path.join(lamost_HERE, "lamost_laser.json"))) + peaks = json.load(open(os.path.join(lamost_HERE, "lamost_peaks.json")))["peaks"] + os.makedirs(os.path.join(lamost_ROOT, "neighbours"), exist_ok=True) + for p in r["persistent"]: + if p["why"]: + continue + grp = [g for g in peaks if g["star"] == p["star"] and g["arm"] == p["arm"] and abs(g["rest"] - p["rest"]) < p["inst"] / 3] + p["neighbours"] = [] + for obsid in sorted({g["obsid"] for g in grp}): + meta = lamost_tap("SELECT planid, spid, fiberid, lmjd FROM public.med_catalogue WHERE obsid = %s" % obsid) + if not meta: + continue + m = meta[0] + rows = lamost_tap("SELECT obsid, fiberid FROM public.med_catalogue WHERE planid = '%s' AND lmjd = %s AND spid = %s " + "AND fiberid BETWEEN %d AND %d" % (m["planid"], m["lmjd"], m["spid"], int(m["fiberid"]) - 8, + int(m["fiberid"]) + 8)) + nb = [dict(obsid=o) for o in sorted({str(x["obsid"]) for x in rows} - {str(obsid)})] + lmjms = {g["lmjm"] for g in grp if g["obsid"] == obsid} + for n in nb: + path = os.path.join(lamost_ROOT, "neighbours", "%s.fits.gz" % n["obsid"]) + if not os.path.exists(path): + b = core.get(lamost_FITS % n["obsid"], timeout=120, retries=3, soft=True, pause=2) + if not b or b[:2] != b"\x1f\x8b": + continue + open(path, "wb").write(b) + try: + exps = lamost_exposures(path) + except Exception: + continue + for arm, lmjm, w, f, s, mk, hrv, fibre in exps: + if arm == p["arm"] and lmjm in lmjms: + z = lamost_excess(w / (1 + (hrv or 0.0) / lamost_C_KMS), f, s, mk, p["topo"]) + p["neighbours"].append(dict(obsid=n["obsid"], fibre=fibre, lmjm=lmjm, z=z)) + zs = [x["z"] for x in p["neighbours"] if np.isfinite(x["z"])] + print("Gaia DR3 %s %s %.3f A (instrument %.3f): %d neighbouring-fibre exposures, largest excess there %.1f sigma " + "(the star's own peak %.1f)" % (p["star"], p["arm"], p["rest"], p["topo"], len(zs), max(zs) if zs else + float("nan"), p["z"]), flush=True) + if zs and max(zs) >= 5.0: + p["why"].append("fibres beside it on the same plate show it in the same exposures (%.1f sigma)" % max(zs)) + json.dump(r, open(os.path.join(lamost_HERE, "lamost_laser.json"), "w"), indent=1) + + +def lamost_exposure_check(): + """Judged features against every exposure: split peaks, cosmic rays, bad pixels, and single-night instrument features.""" + from scipy.ndimage import percentile_filter + r = json.load(open(os.path.join(lamost_HERE, "lamost_laser.json"))) + peaks = json.load(open(os.path.join(lamost_HERE, "lamost_peaks.json")))["peaks"] + stars = json.load(open(os.path.join(lamost_ROOT, "targets.json"))) + star_obs = {} + for pk in peaks: + star_obs.setdefault(pk["star"], set()).add(pk["obsid"]) + for sid, info in stars.items(): + if isinstance(info, dict): + for o in info.get("obsids", []): + star_obs.setdefault(sid, set()).add(str(o)) + cache = {} + + def exps_of(obsid): + if obsid not in cache: + p = os.path.join(lamost_ROOT, "fits", obsid + ".fits.gz") + try: + cache[obsid] = lamost_exposures(p) if os.path.exists(p) else [] + except Exception: + cache[obsid] = [] + return cache[obsid] + + def read(w, f, s, m, centre, half): + """Strongest unmasked pixel near centre: wavelength, excess, nearby masks, sigma ratio, lowest flux nearby.""" + fin = np.isfinite(f) & np.isfinite(s) & (s < np.inf) + ok = fin & (m == 0) + if ok.sum() < 500: + return None + wc, fc, sc = w[ok], f[ok], s[ok] + step = float(np.median(np.diff(wc))) + env = percentile_filter(fc, 90, size=max(int(lamost_WIN_A / step) | 1, 15), mode="nearest") + sel = np.abs(wc - centre) < half + if not sel.any(): + return None + z = (fc - env) / sc + i = int(np.where(sel)[0][np.argmax(z[sel])]) + med_s = float(np.median(sc[max(i - 40, 0):i + 40])) + j = int(np.argmin(np.abs(w - wc[i]))) # the same pixel in the raw array + lo, hi = max(j - 5, 0), min(j + 6, len(w)) + raw = np.where(fin[lo:hi], f[lo:hi], 0.0) / max(float(env[i]), 1e-9) + # excess width against the instrumental FWHM + ex = fc - env + half_ex, a, b = 0.5 * ex[i], i, i + while a > 0 and ex[a - 1] > half_ex: + a -= 1 + while b < len(ex) - 1 and ex[b + 1] > half_ex: + b += 1 + return dict(lam=float(wc[i]), z=float(z[i]), masked=bool((m[max(j - 3, 0):j + 4] != 0).any()), + sig_ratio=float(sc[i] / med_s) if med_s > 0 else 1.0, floor=float(np.min(raw)), + width=b - a + 1, fwhm_px=float(wc[i] / lamost_R / step)) + + counts = {} + for p in r["persistent"]: + if p["why"]: + continue + found = [] + for obsid in p["obsids"]: + for a, lmjm, w, f, s, m, hrv, fibre in exps_of(obsid): + if a == p["arm"]: + q = read(w, f, s, m, p["obs"], 1.2) + if q and q["z"] >= 4: + found.append(q) + centre = float(np.median([q["lam"] for q in found])) if found else p["obs"] + spread = float(max(q["lam"] for q in found) - min(q["lam"] for q in found)) if len(found) > 1 else 0.0 + nights = [] + for obsid in sorted(star_obs.get(p["star"], set()) | set(p["obsids"])): + zs, hits = [], [] + for a, lmjm, w, f, s, m, hrv, fibre in sorted((e for e in exps_of(obsid) if e[0] == p["arm"]), key=lambda e: e[1]): + q = read(w, f, s, m, centre, 0.4) + zs.append(q["z"] if q else float("nan")) + if q and q["z"] >= 4: + hits.append(q) + good = [z for z in zs if np.isfinite(z)] + nights.append(dict(obsid=obsid, n=len(good), hit=len(hits), zmax=max(good) if good else float("nan"), + masked=any(q["masked"] for q in hits), sig_ratio=max([q["sig_ratio"] for q in hits] or [1.0]), + floor=min([q["floor"] for q in hits] or [1.0]))) + p["peak_pixel"], p["peak_spread"], p["nights_check"] = centre, spread, nights + det = [n for n in nights if n["hit"] > 0] + others = [n for n in nights if n["hit"] == 0 and n["n"] >= 2] + why = [] + if spread > p["inst"] / 2: + why.append("its exposures' peaks lie %.2f A apart, more than half a resolution element: not one feature" % spread) + single = [n for n in det if n["n"] >= 3 and n["hit"] <= max(1, n["n"] // 3)] + if single and not any(n["hit"] >= 2 for n in det): + why.append("in %s of its nights' %s exposures with the others flat: cosmic rays" + % ("+".join(str(n["hit"]) for n in det), "+".join(str(n["n"]) for n in det))) + if any(n["masked"] or n["sig_ratio"] >= 3 or n["floor"] < 0.3 for n in det): + why.append("masked, variance-inflated or dead pixels at the peak") + if found and all(q["width"] < 0.5 * q["fwhm_px"] for q in found): + why.append("narrower than the instrument (%d pixels above half the excess against an instrumental FWHM of %.1f): detector pixels, not light" + % (max(q["width"] for q in found), found[0]["fwhm_px"])) + if len(det) == 1 and det[0]["hit"] >= max(2, det[0]["n"] - 1) and others and all(not (n["zmax"] >= 3) for n in others): + why.append("in every exposure of one night and in none of the star's %d other nights" % len(others)) + p["why"].extend(why) + for k in (why or ["left"]): + key = k.split(":")[0].split(" with ")[0][:48] + counts[key] = counts.get(key, 0) + 1 + print("Gaia DR3 %s %s %.3f A: peak pixel %.3f (spread %.2f); nights %s; %s" + % (p["star"], p["arm"], p["rest"], centre, spread, + ", ".join("%s %d/%d%s" % (n["obsid"], n["hit"], n["n"], "*" if n["obsid"] in p["obsids"] else "") for n in nights), + "; ".join(why) or "left"), flush=True) + print("exposure check: " + "; ".join("%s %d" % kv for kv in sorted(counts.items()))) + json.dump(r, open(os.path.join(lamost_HERE, "lamost_laser.json"), "w"), indent=1) + + +def lamost_record(): + """Record one row per star with its strongest persistent feature and explanation.""" + r = json.load(open(os.path.join(lamost_HERE, "lamost_laser.json"))) + stars = json.load(open(os.path.join(lamost_ROOT, "targets.json"))) + best = {} + for p in r["persistent"]: + if p["star"] not in best or p["z"] > best[p["star"]]["z"]: + best[p["star"]] = p + left = [p for p in r["persistent"] if not p["why"]] + core.record_search( + "laser_lamost_mrs", "Laser lines, LAMOST medium resolution", + archive="LAMOST medium-resolution survey single exposures", release="DR10 v2.0", + selection="Gaia DR3 stars with parallax above 10 mas, dec above -15 deg and G below 15 in the MRS catalogue", + code="seti.py lasers lamost", params=dict(z_min=lamost_Z_MIN, window_a=lamost_WIN_A, persistence="two exposures within a third of " + "a resolution element", stellar_kms=15, instrument_kms=5, edge_a=10, + fibre_a=0.5, p_share=1e-3), + n_targets=len(stars), + null_summary="%d observations, %d narrow single-exposure peaks at %.0f sigma, %d persistent features in %d " + "stars, %d left after the edge, sharing, fibre and instrument-frame filters" + % (r["observations"], r["peaks"], lamost_Z_MIN, len(r["persistent"]), + len({p["star"] for p in r["persistent"]}), len(left)), + sensitivity="an unresolved line 6 sigma above the local continuum in two 20-minute exposures, R 7500, " + "495-535 and 630-680 nm", + result="%d unexplained persistent features against %.0f two-exposure coincidences that " + "chance makes" % (len(left), r.get("chance_pairs", float("nan"))), + ledger="Laser lines, LAMOST medium resolution") + core.clear_targets("laser_lamost_mrs") + rows = [] + for s in stars: + p = best.get(s) + rows.append(dict(target="gaia_dr3:%s" % s, stat=float(p["z"]) if p else None, unit="sigma" if p else None, + vet=("explained" if p["why"] else "unexplained") if p else None, + note=("%s %.3f A: %s" % (p["arm"], p["rest"], "; ".join(p["why"]) or "left")) if p else None)) + core.record_targets("laser_lamost_mrs", rows) + print("recorded") + + +def lamost_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("targets", "fetch", "search", "judge", "neighbours", "exposures", "record")) + p.add_argument("--threads", type=int, default=4) + a = p.parse_args() + if a.mode == "targets": + lamost_targets() + elif a.mode == "fetch": + lamost_fetch(a.threads) + elif a.mode == "judge": + lamost_judge() + elif a.mode == "neighbours": + lamost_neighbours() + elif a.mode == "exposures": + lamost_exposure_check() + elif a.mode == "record": + lamost_record() + else: + lamost_search() + + +def lamost_cli(): + quiet_warnings() + lamost_main() + + +# -------------------------------------------------------------------------------------------------------------- + +carmenes_DOC = r"""Laser lines in CARMENES DR1 M-dwarf spectra: persistent unresolved peak groups across epochs, vetted by sharing, forced photometry in other stars, and twin fits. + + python -I seti.py lasers carmenes stars + python -I seti.py lasers carmenes stream --list SHARE.json --out carmenes_.jsonl [--k 8] [--procs 2] + python -I seti.py lasers carmenes vet carmenes_*.jsonl + python -I seti.py lasers carmenes forced carmenes_*.jsonl [--procs 4] (the cached spectra under CARMENES_ROOT) + python -I seti.py lasers carmenes refit [--procs 4] (the last stage again on carmenes_forced.json) + python -I seti.py lasers carmenes record carmenes_*.jsonl""" + +carmenes_ROOT = os.environ.get("CARMENES_ROOT", core.data("carmenes")) +carmenes_HERE = core.RESULTS +carmenes_PAGE = "https://carmenes.cab.inta-csic.es/gto/jsp/dr1Public.jsp" +carmenes_ZIP = "https://carmenes.cab.inta-csic.es/gto/getDR1DataPublic.action?id=%s_VIS.zip" +carmenes_UA = dict(core.UA, **{"Accept": "*/*", "Accept-Language": "en-US,en;q=0.9"}) +carmenes_C = 299792.458 +carmenes_R = 94600.0 +carmenes_SIG_PX = carmenes_C / carmenes_R / 2.3548 / 1.26 # instrumental sigma in pixels (1.26 km/s per pixel) +carmenes_EDGE = 100 # pixels dropped at each order end +carmenes_THR = 6.0 +carmenes_WIN = 41 +carmenes_PCT = 80 + + +def carmenes_stars(): + """DR1 targets: Karmn identifier and name.""" + os.makedirs(carmenes_ROOT, exist_ok=True) + t = urllib.request.urlopen(urllib.request.Request(carmenes_PAGE, headers=carmenes_UA), timeout=120).read().decode("utf-8", "replace") + ids = re.findall(r"id=\s*(J[0-9]{5}[+-][0-9]{3}[A-Z]?)_VIS\.zip", t.replace("%2B", "+")) + names = {} + for k, nm in re.findall(r"]*>\s*(J[0-9]{5}[+-][0-9]{3}[A-Z]?)\s*\s*]*>\s*([^<]+?)\s*", t, + flags=re.I): + names[k] = nm + out = [dict(karmn=k, name=names.get(k, "")) for k in dict.fromkeys(ids)] + json.dump(out, open(os.path.join(carmenes_ROOT, "stars.json"), "w"), indent=1) + print("%d stars" % len(out)) + + +def carmenes_stream_zip(karmn, k): + """First k car-*-vis_A.fits members of a star's zip read from the stream.""" + r = urllib.request.urlopen(urllib.request.Request(carmenes_ZIP % karmn.replace("+", "%2B"), headers=carmenes_UA), timeout=300) + + def readn(n): + out = bytearray() + while len(out) < n: + c = r.read(min(n - len(out), 1 << 20)) + if not c: + break + out += c + return bytes(out) + + got = [] + try: + while len(got) < k: + h = readn(30) + if len(h) < 30 or h[:4] != b"PK\x03\x04": + break + _, _, flag, meth, _, _, _, csize, _, nl, el = struct.unpack("= k or int(z["complete"]): + return [dict(spec=z["spec"][i], sig=z["sig"][i], wave=z["wave"][i], berv=float(z["berv"][i]), + rv=float(z["rv"][i]), mjd=float(z["mjd"][i]), airmass=float(z["airmass"][i]), + exptime=float(z["exptime"][i]), name=str(z["names"][i])) for i in range(min(n, k))] + for attempt in range(4): + try: + members = carmenes_stream_zip(karmn, k) + break + except Exception as e: + if attempt == 3: + raise + time.sleep(20 * (attempt + 1)) + print("%s: retry after %s" % (karmn, str(e)[:80]), flush=True) + eps = [] + for name, raw in members: + try: + x = carmenes_load(raw) + except Exception: + continue + x["name"] = name + eps.append(x) + if eps: + np.savez_compressed(p, spec=np.array([e["spec"] for e in eps]), sig=np.array([e["sig"] for e in eps]), + wave=np.array([e["wave"] for e in eps]), berv=[e["berv"] for e in eps], + rv=[e["rv"] for e in eps], mjd=[e["mjd"] for e in eps], + airmass=[e["airmass"] for e in eps], exptime=[e["exptime"] for e in eps], + names=[e["name"] for e in eps], complete=int(len(members) < k)) + return eps + + +def carmenes_peaks(ep): + """Unresolved peaks of one spectrum: [(order, pixel, wavelength A, height SIG, sigma px, rel)].""" + from scipy.ndimage import percentile_filter + from scipy.optimize import curve_fit + out = [] + S, E, W = ep["spec"], ep["sig"], ep["wave"] + for o in range(S.shape[0]): + x, s, w = S[o].astype(float), E[o].astype(float), W[o] + ok = np.isfinite(x) & np.isfinite(s) & (s > 0) + if ok.sum() < 1000: + continue + xf = np.where(ok, x, np.nanmedian(x[ok])) + env = percentile_filter(xf, carmenes_PCT, size=carmenes_WIN, mode="nearest") + snr = np.nanmedian(x[ok] / s[ok]) + if not np.isfinite(snr) or snr < 10: + continue + z = np.where(ok, (x - env) / np.where(ok, s, 1.0), 0.0) + cand = np.nonzero((z > carmenes_THR) & ok)[0] + cand = cand[(cand > carmenes_EDGE) & (cand < len(x) - carmenes_EDGE)] + done = set() + for i in cand: + if i in done: + continue + j0 = max(i - 5, 0) + seg = z[j0:i + 6] + i = j0 + int(np.argmax(seg)) + if i in done: + continue + done.update(range(i - 5, i + 6)) + if z[i - 1] < 1.5 or z[i + 1] < 1.5: + continue + xx = np.arange(i - 6, i + 7) + yy = (x[xx] - env[xx]) / env[i] + ee = s[xx] / env[i] + try: + p, _ = curve_fit(lambda t, a, m, sg, b: a * np.exp(-0.5 * ((t - m) / sg) ** 2) + b, xx, yy, + p0=(yy[6], i, carmenes_SIG_PX, 0.0), sigma=ee, maxfev=2000) + except Exception: + continue + a, m, sg, b = p + sg = abs(sg) + if a <= 0 or abs(m - i) > 1.5 or not (0.6 * carmenes_SIG_PX <= sg <= 1.6 * carmenes_SIG_PX): + continue + lam = float(np.interp(m, np.arange(len(w)), w)) + out.append((o, int(i), lam, float(z[i]), float(sg), float(a))) + return out + + +def carmenes_group(cands, tol=1.5): + """Peak groups within tol km/s in the star's frame.""" + cands = sorted(cands, key=lambda c: c["rest"]) + groups, cur = [], [] + for c in cands: + if cur and (c["rest"] - cur[-1]["rest"]) / c["rest"] * carmenes_C > tol: + groups.append(cur) + cur = [] + cur.append(c) + if cur: + groups.append(cur) + return [g for g in groups if len({c["ep"] for c in g}) >= 2] + + +def carmenes_persistent(groups): + """Groups whose epochs span a resolution element in the observatory frame.""" + out = [] + for g in groups: + obs = [c["obs"] for c in g] + span = (max(obs) - min(obs)) / np.mean(obs) * carmenes_C + out.append(dict(rest=float(np.mean([c["rest"] for c in g])), obs_span_kms=float(span), + epochs=sorted({c["ep"] for c in g}), z=[round(c["z"], 1) for c in g], + separated=bool(span >= carmenes_C / carmenes_R))) + return out + + +def carmenes_one_star(args): + karmn, k = args + quiet_warnings() + try: + eps = carmenes_fetch_star(karmn, k) + except Exception as e: + return dict(karmn=karmn, error=str(e)[:200]) + if not eps: + return dict(karmn=karmn, n=0) + rv = float(np.nanmedian([e["rv"] for e in eps])) + vel = carmenes_frame(karmn, rv, len(eps)) + if karmn not in _carmenes_dv: + dv = carmenes_register_star(karmn)[1] + vel = [rv + (dv[i] if i < len(dv) else 0.0) for i in range(len(eps))] + cands = [] + for ie, ep in enumerate(eps): + for o, i, lam, z, sg, a in carmenes_peaks(ep): + cands.append(dict(ep=ie, order=o, px=i, obs=lam, z=z, sig_px=sg, amp=a)) + r = dict(karmn=karmn, n=len(eps), rv=rv, berv=[round(e["berv"], 3) for e in eps], mjd=[e["mjd"] for e in eps], + snr=[float(np.nanmedian(e["spec"][40:50] / e["sig"][40:50])) for e in eps], + cands=[dict(c, obs=round(c["obs"], 4), z=round(c["z"], 2), sig_px=round(c["sig_px"], 2), + amp=round(c["amp"], 4)) for c in cands]) + return carmenes_groups_in_frame(r, vel) + + +def carmenes_groups_in_frame(r, vel): + """Peaks in the star's frame, grouped, with persistent groups and the random-offset chance count.""" + cands =[dict(c, rest=round(c["obs"] * (1 + r["berv"][c["ep"]] / carmenes_C) / (1 + vel[c["ep"]] / carmenes_C), + 4)) for c in r["cands"]] + groups = carmenes_group(cands) + rng = np.random.default_rng(zlib.crc32(r["karmn"].encode())) + nulls = [] + for _ in range(20): + off = {ie: rng.uniform(30, 300) * rng.choice((-1, 1)) for ie in range(r["n"])} + sh = [dict(c, rest=c["rest"] * (1 + off[c["ep"]] / carmenes_C)) for c in cands] + nulls.append(sum(1 for g in carmenes_persistent(carmenes_group(sh)) if g["separated"])) + per = carmenes_persistent(groups) + return dict(r, vel=[round(v, 3) for v in vel], cands=cands, persistent=per, + n_separated=sum(1 for g in per if g["separated"]), null_separated=float(np.mean(nulls))) + + +# telluric-free orders for registration (vacuum ranges) +carmenes_CLEAN = ((5500, 6260), (6340, 6850), (6970, 7150), (7350, 7580), (7730, 8090), (8420, 8880)) +carmenes_REGISTER = os.path.join(core.RESULTS, "carmenes_register.json") +_carmenes_dv = None + + +def carmenes_highpass(f, w): + """High-passed spectrum: f over blockwise median, minus one, clipped at five deviations.""" + nb = max(len(f) // w, 1) + cen = (np.arange(nb) + 0.5) * len(f) / nb + med = np.array([np.median(b) for b in np.array_split(f, nb)]) + h = f / np.interp(np.arange(len(f)), cen, med) - 1.0 + mad = 1.4826 * np.median(np.abs(h - np.median(h))) + return np.clip(h, -5 * mad, 5 * mad) + + +def carmenes_register_star(karmn, vmax=40.0, step=0.5): + """Each epoch's velocity offset (km/s) from the median by cross-correlation over telluric-free orders.""" + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + if not os.path.exists(p): + return karmn, [] + z = dict(np.load(p)) # each member read once + n = len(z["mjd"]) + if n < 2: + return karmn, [0.0] * n + rv0 = float(np.nanmedian(z["rv"])) + W, S, berv = z["wave"], z["spec"], z["berv"] + shifts = np.arange(-int(vmax / step), int(vmax / step) + 1) + ccf = np.zeros((n, len(shifts))) + for o in range(W.shape[1]): + if not any(lo < float(np.nanmedian(W[0][o])) < hi for lo, hi in carmenes_CLEAN): + continue + rest = [W[i][o] * (1 + float(berv[i]) / carmenes_C) / (1 + rv0 / carmenes_C) for i in range(n)] + if not all(np.isfinite(r[carmenes_EDGE]) and np.isfinite(r[-carmenes_EDGE]) for r in rest): + continue + lo = max(r[carmenes_EDGE] for r in rest) + hi = min(r[-carmenes_EDGE] for r in rest) + if hi - lo < 20: + continue + g = np.exp(np.arange(np.log(lo), np.log(hi), step / carmenes_C)) + F = np.full((n, len(g)), np.nan) + for i in range(n): + x = S[i][o].astype(float) + ok = np.isfinite(x) & np.isfinite(rest[i]) + if ok.sum() < 1000: + continue + F[i] = carmenes_highpass(np.interp(g, rest[i][ok], x[ok]), int(3.0 / (g[len(g) // 2] * step / carmenes_C))) + for i in range(n): + if not np.isfinite(F[i]).all(): + continue + others = [j for j in range(n) if j != i and np.isfinite(F[j]).all()] + if not others: + continue + T = np.median(F[others], axis=0) + m = len(g) + norm = np.sqrt(np.dot(T, T) * np.dot(F[i], F[i])) + if not norm > 0: + continue + for k, sft in enumerate(shifts): + if sft >= 0: + ccf[i, k] += float(np.dot(T[:m - sft], F[i][sft:])) / norm + else: + ccf[i, k] += float(np.dot(T[-sft:], F[i][:m + sft])) / norm + dv = [] + for i in range(n): + k = int(np.argmax(ccf[i])) + if not ccf[i].any() or k in (0, len(shifts) - 1): + dv.append(0.0) + continue + a, b, c = ccf[i, k - 1], ccf[i, k], ccf[i, k + 1] + frac = 0.5 * (a - c) / (a - 2 * b + c) if (a - 2 * b + c) != 0 else 0.0 + dv.append(float((shifts[k] + frac) * step)) + return karmn, dv + + +def carmenes_frame(karmn, rv0, n): + """Velocities moving a star's epochs to its frame.""" + global _carmenes_dv + if _carmenes_dv is None: + _carmenes_dv = json.load(open(carmenes_REGISTER)) if os.path.exists(carmenes_REGISTER) else {} + e = _carmenes_dv.get(karmn) + dv, ab = (e.get("dv") or [], e.get("abs") or 0.0) if isinstance(e, dict) else (e or [], 0.0) + return [rv0 + ab + (dv[i] if i < len(dv) else 0.0) for i in range(n)] + + +def carmenes_velocities(karmn, z): + """carmenes_frame for cached epochs.""" + return carmenes_frame(karmn, float(np.nanmedian(z["rv"])), len(z["mjd"])) + + +# reference stars with literature-consistent velocities (GJ 436, Wolf 359) set each star's absolute frame +carmenes_REFS = ("J11421+267", "J10564+070") +_carmenes_refs = None + + +def carmenes_star_spectrum(karmn, step=0.5): + """Epochs in the star's frame, high-passed and median-combined on one log grid: (grid, flux) or None.""" + import warnings + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + if not os.path.exists(p): + return None + z = dict(np.load(p)) + vel = carmenes_velocities(karmn, z) + W, S, berv = z["wave"], z["spec"], z["berv"] + g = np.exp(np.arange(np.log(carmenes_CLEAN[0][0]), np.log(carmenes_CLEAN[-1][1]), step / carmenes_C)) + clean = np.zeros(len(g), bool) + for a, b in carmenes_CLEAN: + clean |= (g > a) & (g < b) + rows = [] + for i in range(len(z["mjd"])): + f = np.full(len(g), np.nan) + for o in range(W.shape[1]): + rest = W[i][o] * (1 + float(berv[i]) / carmenes_C) / (1 + vel[i] / carmenes_C) + x = S[i][o].astype(float) + ok = np.isfinite(x) & np.isfinite(rest) + ok[:carmenes_EDGE] = False + ok[-carmenes_EDGE:] = False + if ok.sum() < 1000: + continue + sel = (g > rest[ok][0]) & (g < rest[ok][-1]) & clean & np.isnan(f) + if sel.sum() < 1000: + continue + f[sel] = carmenes_highpass(np.interp(g[sel], rest[ok], x[ok]), + int(3.0 / (float(np.median(g[sel])) * step / carmenes_C))) + rows.append(f) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + return g, np.nanmedian(np.array(rows), axis=0) + + +def carmenes_absolute_star(karmn, vmax=200.0, step=0.5): + """Offset (km/s) of a star's frame by cross-correlation with the references; 0 for references or weak peaks.""" + global _carmenes_refs + if karmn in carmenes_REFS: + return karmn, 0.0, 1.0, karmn + if _carmenes_refs is None: + _carmenes_refs = {r: carmenes_star_spectrum(r, step) for r in carmenes_REFS} + sp = carmenes_star_spectrum(karmn, step) + if sp is None: + return karmn, 0.0, 0.0, None + sv = np.nan_to_num(sp[1]) + sm = np.isfinite(sp[1]) + best = (0.0, 0.0, None) + shifts = np.arange(-int(vmax / step), int(vmax / step) + 1) + for name, ref in _carmenes_refs.items(): + if ref is None: + continue + rv_, rm = np.nan_to_num(ref[1]), np.isfinite(ref[1]) + m = len(sv) + c = np.zeros(len(shifts)) + for k, t in enumerate(shifts): + a, b = (sv[t:], rv_[:m - t]) if t >= 0 else (sv[:m + t], rv_[-t:]) + ma, mb = (sm[t:], rm[:m - t]) if t >= 0 else (sm[:m + t], rm[-t:]) + both = ma & mb + den = np.sqrt(np.sum(a[both] ** 2) * np.sum(b[both] ** 2)) + c[k] = np.sum(a[both] * b[both]) / den if den > 0 else 0.0 + k = int(np.argmax(c)) + if 0 < k < len(c) - 1 and c[k] > best[1]: + d = c[k - 1] - 2 * c[k] + c[k + 1] + frac = 0.5 * (c[k - 1] - c[k + 1]) / d if d != 0 else 0.0 + best = (float((shifts[k] + frac) * step), float(c[k]), name) + if best[1] < 0.15: + return karmn, 0.0, best[1], best[2] + return karmn, best[0], best[1], best[2] + + +def carmenes_register(paths, procs): + """Register every star and write carmenes_register.json.""" + from concurrent.futures import ProcessPoolExecutor + global _carmenes_dv + res = carmenes_load_results(paths) + out = {} + with ProcessPoolExecutor(procs) as ex: + for karmn, dv in ex.map(carmenes_register_star, [r["karmn"] for r in res], chunksize=2): + out[karmn] = [round(d, 3) for d in dv] + json.dump(out, open(carmenes_REGISTER, "w"), indent=0) + _carmenes_dv = None + # each star's frame against the references + ab = {} + with ProcessPoolExecutor(procs) as ex: + for karmn, off, peak, ref in ex.map(carmenes_absolute_star, [r["karmn"] for r in res], chunksize=2): + ab[karmn] = (off, peak, ref) + full = {k: dict(dv=v, abs=round(ab[k][0], 3), ccf=round(ab[k][1], 3), ref=ab[k][2]) for k, v in out.items()} + json.dump(full, open(carmenes_REGISTER, "w"), indent=0) + _carmenes_dv = None + far = sorted(((k, v) for k, v in full.items() if abs(v["abs"]) > 3.0), key=lambda kv: -abs(kv[1]["abs"])) + print("%d stars placed against the references; %d more than 3 km/s from the recorded velocity, %d with a peak " + "under 0.15 left at it" % (len(full), len(far), sum(1 for v in full.values() if v["ccf"] < 0.15))) + for k, v in far[:40]: + print(" %s %+.2f km/s (peak %.2f against %s)" % (k, v["abs"], v["ccf"], v["ref"])) + big = {k: v for k, v in out.items() if v and max(abs(d) for d in v) > 1.5} + print("%d stars registered; %d have an epoch more than 1.5 km/s from the median recorded velocity's frame" + % (len(out), len(big))) + for k, v in sorted(big.items(), key=lambda kv: -max(abs(d) for d in kv[1]))[:30]: + print(" %s %s" % (k, v)) + + +def carmenes_regroup(paths, out): + """Groups and chance rate recomputed in registered frames.""" + global _carmenes_dv + _carmenes_dv = json.load(open(carmenes_REGISTER)) + res = carmenes_load_results(paths) + path = os.path.join(carmenes_HERE, out) + with open(path, "w") as fh: + for r in res: + r = carmenes_groups_in_frame(r, carmenes_frame(r["karmn"], r["rv"], r["n"])) + fh.write(json.dumps(r) + "\n") + print("%d stars regrouped into %s: %d persistent frame-separated groups against %.1f by chance" + % (len(res), path, sum(r["n_separated"] for r in carmenes_load_results([path])), + sum(r["null_separated"] for r in carmenes_load_results([path])))) + + +def carmenes_stream(share, out, k, procs): + from concurrent.futures import ProcessPoolExecutor + ss = json.load(open(share or os.path.join(carmenes_ROOT, "stars.json"))) + os.makedirs(carmenes_HERE, exist_ok=True) + path = os.path.join(carmenes_HERE, out) + done = set() + if os.path.exists(path): + done = {json.loads(line)["karmn"] for line in open(path) if line.strip()} + todo = [s["karmn"] for s in ss if s["karmn"] not in done] + print("%d stars to search (%d done)" % (len(todo), len(done)), flush=True) + with ProcessPoolExecutor(procs) as ex, open(path, "a") as fh: + for r in ex.map(carmenes_one_star, [(x, k) for x in todo], chunksize=1): + fh.write(json.dumps(r) + "\n") + fh.flush() + print("%s: %s spectra, %d peaks, %s persistent and separated (chance %.2f)%s" + % (r["karmn"], r.get("n"), len(r.get("cands", [])), r.get("n_separated"), + r.get("null_separated", float("nan")), "; " + r["error"] if "error" in r else ""), flush=True) + + +def carmenes_load_results(paths): + seen, res = set(), [] + for p in paths: + for line in open(p): + if line.strip(): + r = json.loads(line) + if r["karmn"] not in seen and r.get("n"): + seen.add(r["karmn"]) + res.append(r) + return res + + +class carmenes_Recurrence: + """All stars' peaks in one frame for counting recurrences against local chance.""" + + def __init__(self, res, key): + pts = sorted((c[key], r["karmn"]) for r in res for c in r["cands"]) + self.lam = np.array([p[0] for p in pts]) + self.who = [p[1] for p in pts] + + def count(self, lam, star, tol): + lo = np.searchsorted(self.lam, lam * (1 - tol / carmenes_C)) + hi = np.searchsorted(self.lam, lam * (1 + tol / carmenes_C), side="right") + return len({self.who[j] for j in range(lo, hi)} - {star}) + + def test(self, lam, star, tol=1.5, offsets=(-50, -40, -30, -20, -10, 10, 20, 30, 40, 50)): + """(stars at lam, mean at offsets, recurring): recurring at four Poisson deviations and at least 3.""" + n = self.count(lam, star, tol) + bg = float(np.mean([self.count(lam * (1 + d / carmenes_C), star, tol) for d in offsets])) + return n, bg, bool(n >= 3 and n > bg + 4 * np.sqrt(bg + 1)) + + +def carmenes_vet(paths): + res = carmenes_load_results(paths) + obs = carmenes_Recurrence(res, "obs") + rest = carmenes_Recurrence(res, "rest") + n_sep = sum(r["n_separated"] for r in res) + n_null = sum(r["null_separated"] for r in res) + print("%d stars, %d spectra, %d single-epoch peaks; persistent and frame-separated groups %d against %.1f by chance" + % (len(res), sum(r["n"] for r in res), sum(len(r["cands"]) for r in res), n_sep, n_null), flush=True) + left, why = [], {} + for r in res: + for g in r["persistent"]: + if not g["separated"]: + continue + mem = [c for c in r["cands"] if abs(c["rest"] - g["rest"]) / g["rest"] * carmenes_C < 1.5] + o = [obs.test(c["obs"], r["karmn"]) for c in mem] + s = rest.test(g["rest"], r["karmn"]) + if sum(x[2] for x in o) * 2 >= len(o): + why["airglow or instrument"] = why.get("airglow or instrument", 0) + 1 + elif s[2]: + why["stellar line"] = why.get("stellar line", 0) + 1 + else: + left.append(dict(karmn=r["karmn"], n=r["n"], rest=g["rest"], epochs=g["epochs"], z=g["z"], + obs_span_kms=g["obs_span_kms"], rest_recurrence=s[:2], + obs_recurrence=[x[:2] for x in o], members=mem)) + print("explained: %s; left %d" % (why, len(left))) + for x in sorted(left, key=lambda x: -len(x["epochs"]))[:60]: + print(" %s rest %.3f A (vacuum), epochs %s of %d, z %s, observatory span %.1f km/s, other stars at it %d " + "(local %.1f)" % (x["karmn"], x["rest"], x["epochs"], x["n"], x["z"], x["obs_span_kms"], + x["rest_recurrence"][0], x["rest_recurrence"][1])) + json.dump(left, open(os.path.join(carmenes_HERE, "carmenes_left.json"), "w"), indent=1) + + +carmenes_OFFSETS = (-50, -40, -30, -20, -10, 10, 20, 30, 40, 50) + + +def carmenes_forced_star(args): + """Largest excess (SIG) in any cached spectrum at each rest wavelength and its offsets.""" + from scipy.ndimage import percentile_filter + karmn, rest = args + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + shifts = np.array((0.0,) + carmenes_OFFSETS) + best = np.full((len(rest), len(shifts)), -np.inf) + if not os.path.exists(p): + return karmn, best + z = dict(np.load(p)) # each member read once + vel = carmenes_velocities(karmn, z) + lam = np.outer(np.asarray(rest, float), 1 + shifts / carmenes_C) + for i in range(len(z["mjd"])): + S, E, W, berv = z["spec"][i], z["sig"][i], z["wave"][i], float(z["berv"][i]) + obs = lam * (1 + vel[i] / carmenes_C) / (1 + berv / carmenes_C) + for o in range(S.shape[0]): + x, s, w = S[o].astype(float), E[o].astype(float), W[o] + ok = np.isfinite(x) & np.isfinite(s) & (s > 0) + if ok.sum() < 1000: + continue + sel = (obs > w[carmenes_EDGE]) & (obs < w[-carmenes_EDGE]) + if not sel.any(): + continue + env = percentile_filter(np.where(ok, x, np.nanmedian(x[ok])), carmenes_PCT, size=carmenes_WIN, mode="nearest") + zz = np.where(ok, (x - env) / np.where(ok, s, 1.0), -np.inf) + j = np.searchsorted(w, obs[sel]) + v = np.max([zz[np.clip(j + d, 0, len(w) - 1)] for d in (-2, -1, 0, 1, 2)], axis=0) + best[sel] = np.maximum(best[sel], v) + return karmn, best + + +def carmenes_forced(paths, procs, thr=4.0): + """Groups measured in every other star: stellar when three or more stars exceed thr beyond the offset count.""" + from concurrent.futures import ProcessPoolExecutor + res = carmenes_load_results(paths) + left = json.load(open(os.path.join(carmenes_HERE, "carmenes_left.json"))) + rest = [x["rest"] for x in left] + hits = np.zeros((len(left), 1 + len(carmenes_OFFSETS)), int) + holders = [[] for _ in left] + with ProcessPoolExecutor(procs) as ex: + for karmn, best in ex.map(carmenes_forced_star, [(r["karmn"], rest) for r in res], chunksize=2): + above = best > thr + for k, x in enumerate(left): + if x["karmn"] != karmn: + hits[k] += above[k] + if above[k, 0]: + holders[k].append(karmn) + out = [] + for k, x in enumerate(left): + n, bg = int(hits[k, 0]), float(np.mean(hits[k, 1:])) + x = dict(x, forced_stars=n, forced_local=bg, forced_holders=holders[k][:20]) + x["stellar"] = bool(n >= 3 and n > bg + 4 * np.sqrt(bg + 1)) + out.append(x) + kept = [x for x in out if not x["stellar"]] + from collections import Counter + print("%d groups measured in %d stars; %d held by other stars above %g sigma; %d left in %d stars" + % (len(out), len(res), len(out) - len(kept), thr, len(kept), len({x["karmn"] for x in kept}))) + print("left by star: " + ", ".join("%s %d" % kv for kv in Counter(x["karmn"] for x in kept).most_common(25))) + # members must stand 3 SIG above every pixel within 2.5 A + by = {} + for x in kept: + by.setdefault(x["karmn"], []).append(x) + with ProcessPoolExecutor(procs) as ex: + for karmn, flags in ex.map(carmenes_above_star, [(k, v) for k, v in by.items()]): + for x, f in zip(by[karmn], flags): + x["above_maxima"] = f + for x in out: + x.setdefault("above_maxima", None) + kept = [x for x in kept if x["above_maxima"] and sum(x["above_maxima"]) * 2 >= len(x["above_maxima"])] + print("%d of them stand above the spectrum's maxima within 2.5 A in half their epochs or more, in %d stars" + % (len(kept), len({x["karmn"] for x in kept}))) + print("left by star: " + ", ".join("%s %d" % kv for kv in Counter(x["karmn"] for x in kept).most_common(25))) + # peculiar-spectrum features checked in the five nearest spectral twins + with ProcessPoolExecutor(procs) as ex: + prof = dict(ex.map(carmenes_profile, [r["karmn"] for r in res])) + prof = {k: v for k, v in prof.items() if v is not None} + names = sorted(prof) + M = np.array([prof[k] for k in names]) + jobs = {} + for x in kept: + if x["karmn"] not in prof: + continue + d = np.nanstd(M - prof[x["karmn"]], axis=1) + twins = [names[j] for j in np.argsort(d) if names[j] != x["karmn"]][:5] + x["twins"] = twins + for t in twins: + jobs.setdefault(t, []).append(x["rest"]) + with ProcessPoolExecutor(procs) as ex: + tw = dict(ex.map(carmenes_twin_star, list(jobs.items()))) + for x in kept: + hits = np.zeros(1 + len(carmenes_OFFSETS)) + for t in x.get("twins", []): + hits += tw[t][x["rest"]] + x["twin_hits"], x["twin_local"] = int(hits[0]), float(np.mean(hits[1:])) + x["twin_shared"] = bool(hits[0] >= 2 and hits[0] >= x["twin_local"] + 2) + left2 = [x for x in kept if not x.get("twin_shared")] + print("%d of them show in two or more of their star's five nearest spectral twins; %d left in %d stars" + % (len(kept) - len(left2), len(left2), len({x["karmn"] for x in left2}))) + print("left by star: " + ", ".join("%s %d" % kv for kv in Counter(x["karmn"] for x in left2).most_common(25))) + # remaining groups against twin fits and the star's other maxima + carmenes_finish(out, carmenes_twin_stage(left2, procs)) + json.dump(out, open(os.path.join(carmenes_HERE, "carmenes_forced.json"), "w"), indent=1) + + +def carmenes_finish(out, left): + ids = {id(x) for x in left} + for x in out: + x["left"] = id(x) in ids + for x in sorted(left, key=lambda x: -len(x["epochs"]))[:40]: + print(" %s rest %.3f A, epochs %s of %d, z %s, other stars %d (local %.1f)" + % (x["karmn"], x["rest"], x["epochs"], x["n"], x["z"], x["forced_stars"], x["forced_local"])) + + +def carmenes_refit(procs): + """Rerun carmenes_forced's last stage on stored groups.""" + path = os.path.join(carmenes_HERE, "carmenes_forced.json") + out = json.load(open(path)) + groups = [x for x in out if x.get("twins") and x.get("above_maxima") + and sum(x["above_maxima"]) * 2 >= len(x["above_maxima"]) and not x.get("twin_shared")] + print("%d groups from the earlier stages" % len(groups)) + carmenes_finish(out, carmenes_twin_stage(groups, procs)) + json.dump(out, open(path, "w"), indent=1) + + +def carmenes_profile(karmn): + """(karmn, log median flux per order relative to the median order), tracking spectral type.""" + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + if not os.path.exists(p): + return karmn, None + z = dict(np.load(p)) # each member read once + S = z["spec"].astype(float) + with np.errstate(all="ignore"): + med = np.nanmedian(S[:, :, 500:-500], axis=2) # epochs x orders + v = np.log(np.nanmedian(med, axis=0)) + v = v - np.nanmedian(v) + return karmn, v if np.isfinite(v).sum() > 20 else None + + +def carmenes_twin_star(args): + """(karmn, {wavelength: 3-SIG local-maximum flags at the wavelength and offsets}).""" + karmn, rests = args + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + out = {r: np.zeros(1 + len(carmenes_OFFSETS)) for r in rests} + if not os.path.exists(p): + return karmn, out + z = dict(np.load(p)) # each member read once + vel = carmenes_velocities(karmn, z) + shifts = np.array((0.0,) + carmenes_OFFSETS) + for r in set(rests): + for i in range(len(z["mjd"])): + W, berv = z["wave"][i], float(z["berv"][i]) + for k, s in enumerate(shifts): + if out[r][k]: + continue + lam = r * (1 + s / carmenes_C) * (1 + vel[i] / carmenes_C) / (1 + berv / carmenes_C) + for o in range(W.shape[0]): + w = W[o] + if not (w[carmenes_EDGE] < lam < w[-carmenes_EDGE]): + continue + x, e = z["spec"][i][o].astype(float), z["sig"][i][o].astype(float) + j = int(np.searchsorted(w, lam)) + j = j - 2 + int(np.nanargmax(x[j - 2:j + 3])) if np.isfinite(x[j - 2:j + 3]).any() else j + half = int(round(2.5 / max(abs(w[min(j + 1, len(w) - 1)] - w[j]), 1e-6))) + nb = np.r_[x[max(j - half, 0):max(j - 3, 0)], x[j + 4:j + half + 1]] + nb = nb[np.isfinite(nb)] + if len(nb) and np.isfinite(x[j]) and e[j] > 0 and x[j] - nb.max() > 3 * e[j]: + out[r][k] = 1 + return karmn, out + + +def carmenes_rest_template(karmn, lam, half=4.0): + """Rest-frame template around lam (+-half A) median-combined over epochs, or None.""" + import warnings + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + if not os.path.exists(p): + return None + z = dict(np.load(p)) # each member read once + vel = carmenes_velocities(karmn, z) + grid = lam + np.arange(-half, half + 0.0001, 0.01) + rows = [] + for i in range(len(z["mjd"])): + W, berv = z["wave"][i], float(z["berv"][i]) + best = None + for o in range(W.shape[0]): + rest = W[o] * (1 + berv / carmenes_C) / (1 + vel[i] / carmenes_C) + inside = (grid > rest[carmenes_EDGE]) & (grid < rest[-carmenes_EDGE]) + if inside.any() and (best is None or inside.sum() > best[0].sum()): + best = (inside, o, rest) + if best is None: + continue + inside, o, rest = best + x = z["spec"][i][o].astype(float) + ok = np.isfinite(x) + f = np.full(grid.shape, np.nan) + f[inside] = np.interp(grid[inside], rest[ok], x[ok]) + rows.append(f / np.nanmedian(f[inside])) + if not rows: + return None + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + return grid, np.nanmedian(np.array(rows), axis=0) + + +def carmenes_twin_fit(x, s, rest, i, temps): + """Excess (SIG) of pixel i over a non-negative fit of twin templates and a linear continuum over +-3 A; None when underconstrained.""" + from scipy.optimize import nnls + idx = np.where(np.abs(rest - rest[i]) < 3.0)[0] + r = rest[idx] + u = (r - rest[i]) / 3.0 + A = np.vstack([np.interp(r, tg, tf, left=np.nan, right=np.nan) for tg, tf in temps] + + [np.ones_like(u), -np.ones_like(u), u, -u]).T + xx, ss = x[idx], s[idx] + good = np.isfinite(xx) & np.isfinite(ss) & (ss > 0) & np.all(np.isfinite(A), axis=1) + k = int(np.searchsorted(idx, i)) + fit = good & (np.abs(r - rest[i]) > 0.15) + if fit.sum() < 50 or k >= len(idx) or idx[k] != i or not good[k]: + return None + scale = np.nanmedian(xx[fit]) + coef, _ = nnls(A[fit], xx[fit] / scale) + return float((xx[k] / scale - A[k] @ coef) * scale / ss[k]) + + +def carmenes_segment_star(args): + """Per member: twin-fit excess and the same excess at the order's other local maxima 4-25 A away.""" + from scipy.ndimage import maximum_filter1d + karmn, groups = args + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + if not os.path.exists(p): + return karmn, [None] * len(groups) + z = dict(np.load(p)) # each member read once + vel = carmenes_velocities(karmn, z) + out = [] + for g in groups: + temps = [carmenes_rest_template(t, g["rest"], half=30.0) for t in g.get("twins", [])] + temps = [t for t in temps if t is not None] + res = [] + for c in g["members"]: + if not temps: + res.append(None) + continue + S, E, W = z["spec"][c["ep"]], z["sig"][c["ep"]], z["wave"][c["ep"]] + x, s, w = S[c["order"]].astype(float), E[c["order"]].astype(float), W[c["order"]] + rest = w * (1 + float(z["berv"][c["ep"]]) / carmenes_C) / (1 + vel[c["ep"]] / carmenes_C) + i = int(c["px"]) + e = carmenes_twin_fit(x, s, rest, i, temps) + if e is None: + res.append(None) + continue + step = abs(w[min(i + 1, len(w) - 1)] - w[i]) or 0.02 + half = max(int(round(2.5 / step)), 1) + xf = np.where(np.isfinite(x), x, -np.inf) + d = np.abs(rest - rest[i]) + peaks = np.where((maximum_filter1d(xf, 2 * half + 1, mode="nearest") == xf) & np.isfinite(x) + & (d >= 4.0) & (d <= 25.0))[0] + peaks = peaks[(peaks >= carmenes_EDGE) & (peaks < len(x) - carmenes_EDGE)] + ctrl = [v for v in (carmenes_twin_fit(x, s, rest, j, temps) for j in peaks) if v is not None] + res.append([round(e, 2), [round(v, 2) for v in ctrl]]) + out.append(res) + return karmn, out + + +def carmenes_twin_pass(m): + """Member passes at 5 SIG above the twin fit, above every control, and 5 deviations above their median.""" + if not m: + return False + e, ctrl = m + if e <= 5.0 or (ctrl and e <= max(ctrl)): + return False + if len(ctrl) >= 5: + med = float(np.median(ctrl)) + sd = max(1.4826 * float(np.median(np.abs(np.array(ctrl) - med))), 1.0) + return (e - med) / sd > 5.0 + return True + + +def carmenes_twin_stage(groups, procs): + """Groups passing the twin test in at least half their epochs.""" + from concurrent.futures import ProcessPoolExecutor + from collections import Counter + by = {} + for x in groups: + by.setdefault(x["karmn"], []).append(x) + with ProcessPoolExecutor(procs) as ex: + for karmn, fits in ex.map(carmenes_segment_star, list(by.items())): + for x, f in zip(by[karmn], fits): + x["twin_fit"] = f + kept = [x for x in groups if x.get("twin_fit") + and sum(carmenes_twin_pass(m) for m in x["twin_fit"]) * 2 >= len(x["twin_fit"])] + print("%d of them stand no further above their twins' fit than the star's other local maxima within 25 A, in half " + "their epochs or more; %d left in %d stars" % (len(groups) - len(kept), len(kept), + len({x["karmn"] for x in kept}))) + print("left by star: " + ", ".join("%s %d" % kv for kv in Counter(x["karmn"] for x in kept).most_common(25))) + return kept + + +def carmenes_above_star(args): + """Per member: whether its pixel stands 3 SIG above every pixel within 2.5 A.""" + karmn, groups = args + p = os.path.join(carmenes_ROOT, "cache", "%s.npz" % karmn) + if not os.path.exists(p): + return karmn, [None] * len(groups) + z = dict(np.load(p)) # each member read once + out = [] + for g in groups: + flags = [] + for c in g["members"]: + S, E, W = z["spec"][c["ep"]], z["sig"][c["ep"]], z["wave"][c["ep"]] + x, s, w = S[c["order"]].astype(float), E[c["order"]].astype(float), W[c["order"]] + i = int(c["px"]) + half = int(round(2.5 / max(abs(w[min(i + 1, len(w) - 1)] - w[i]), 1e-6))) + lo, hi = max(i - half, 0), min(i + half + 1, len(x)) + nb = np.r_[x[lo:max(i - 3, lo)], x[min(i + 4, hi):hi]] + nb = nb[np.isfinite(nb)] + flags.append(bool(len(nb) and np.isfinite(x[i]) and s[i] > 0 and x[i] - nb.max() > 3 * s[i])) + out.append(flags) + return karmn, out + + +def carmenes_record(paths): + """Record the run and each star's result; limit as the equivalent width (mA) of a THR-SIG line at 825 nm.""" + res = carmenes_load_results(paths) + left = [x for x in json.load(open(os.path.join(carmenes_HERE, "carmenes_forced.json"))) if x.get("left")] + by = {} + for x in left: + by.setdefault(x["karmn"], []).append(x) + def ew(snr): + return carmenes_THR / snr * math.sqrt(2 * math.pi) * 8250.0 / carmenes_R / 2.3548 * 1000.0 + lims = [ew(np.median(r["snr"])) for r in res if np.median(r["snr"]) > 0] + n_sep = sum(r["n_separated"] for r in res) + n_null = sum(r["null_separated"] for r in res) + core.record_search( + "laser_carmenes_vis", "Laser lines, CARMENES visible channel", archive="CARMENES DR1 public visible-channel " + "spectra (Ribas et al. 2023)", release="DR1, 2016-2020", selection="the first %d spectra of each DR1 star" + % max(r["n"] for r in res), code=os.path.abspath(__file__), entry="carmenes", n_targets=len(res), + params=dict(threshold=carmenes_THR, envelope_window_px=carmenes_WIN, envelope_percentile=carmenes_PCT, group_kms=1.5, + recurrence="3 or more other stars and 4 Poisson deviations above the local rate"), + null_summary="%d persistent frame-separated groups against %.0f after random velocity offsets between epochs" + % (n_sep, n_null), + sensitivity="median %.1f mA equivalent width at 825 nm for a line %g SIG above the envelope" + % (np.median(lims), carmenes_THR), + ledger="Laser lines in CARMENES spectra of nearby M dwarfs", + result="%d persistent groups left after the airglow, instrument and stellar-line filters, the forced " + "measurement in the other stars and the fit of the star's spectral twins" % len(left)) + core.clear_targets("laser_carmenes_vis") + core.record_targets("laser_carmenes_vis", [ + dict(target="carmenes:%s" % r["karmn"], stat=len(by.get(r["karmn"], [])), unit="persistent groups left", + upper_limit=round(ew(np.median(r["snr"])), 2) if np.median(r["snr"]) > 0 else None, + note="%d spectra, BERV %.0f to %.0f km/s" % (r["n"], min(r["berv"]), max(r["berv"]))) + for r in res]) + print("recorded %d stars" % len(res)) + + +def carmenes_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("stars", "stream", "register", "regroup", "vet", "forced", "refit", "record")) + p.add_argument("paths", nargs="*") + p.add_argument("--list") + p.add_argument("--out", default="carmenes.jsonl") + p.add_argument("--k", type=int, default=8) + p.add_argument("--procs", type=int, default=2) + a = p.parse_args() + if a.mode == "stars": + carmenes_stars() + elif a.mode == "stream": + carmenes_stream(a.list, a.out, a.k, a.procs) + elif a.mode == "forced": + carmenes_forced(a.paths, a.procs) + elif a.mode == "refit": + carmenes_refit(a.procs) + elif a.mode == "register": + carmenes_register(a.paths, a.procs) + elif a.mode == "regroup": + carmenes_regroup(a.paths, a.out) + elif a.mode == "record": + carmenes_record(a.paths) + else: + carmenes_vet(a.paths) + + +def carmenes_cli(): + quiet_warnings() + carmenes_main() + + +# -------------------------------------------------------------------------------------------------------------- + +skyfibre_DOC = r"""Laser lines in SDSS BOSS and eBOSS sky fibres: unresolved 6-sigma peaks off airglow and unshared, against dips through the same tests, with fibre-fixed, galaxy, two-sign, counterpart and exposure vetting. + + python -I seti.py lasers skyfibre search [--threads 6] [--limit N] [--part a:b/n] + python -I seti.py lasers skyfibre summary + python -I seti.py lasers skyfibre record + python -I seti.py lasers skyfibre galaxies (fibres whose lines fall at one redshift, with Legacy Surveys and DESI) + python -I seti.py lasers skyfibre rest (clean 8-sigma peaks against Legacy Surveys and DESI) + python -I seti.py lasers skyfibre inject [--limit 40] + python -I seti.py lasers skyfibre exposures [--threads 4] (each clean 8-sigma line frame by frame)""" + +skyfibre_BASE = "https://data.sdss.org/sas/dr17/eboss/spectro/redux/v5_13_2/" +skyfibre_ROOT = os.environ.get("SKYFIBRE_ROOT", core.data("skyfibre")) +skyfibre_SNR = 6.0 +skyfibre_LSF_PX = 1.1 # instrumental Gaussian sigma (pixels of 1e-4 dex) +skyfibre_MAXRANGES = 100 # Apache returns the whole file beyond MaxRanges +skyfibre_LAYOUT = {} + + +def skyfibre_get(url, ranges=None, timeout=120): + """Bytes of a URL or {start: bytes} of several ranges over the thread's kept connection.""" + if not ranges: + return core.get(url, timeout=timeout) + parts = core.get_ranges(url, [(a, b - 1) for a, b in ranges], timeout=timeout) + return {a: p for (a, _), p in zip(ranges, parts)} + + +def skyfibre_hdus(url, n): + """Header and data offset of the first n HDUs, predicted from the previous layout and checked.""" + from astropy.io import fits + + def parse(raw, off): + """(header, data offset, next offset) of the HDU at off, or None before END.""" + k = next((j for j in range(0, len(raw) - 79, 80) if raw[j:j + 8] == b"END "), None) + if k is None: + return None + h = fits.Header.fromstring(raw[:k + 80].decode("ascii", "replace")) + size = abs(h.get("BITPIX", 8)) // 8 + for a in range(1, h.get("NAXIS", 0) + 1): + size *= h["NAXIS%d" % a] + size = (size + h.get("PCOUNT", 0)) if h.get("NAXIS", 0) else 0 + data = off + (k // 2880 + 1) * 2880 + return h, data, data + ((size + 2879) // 2880) * 2880 + + def read(off, blocks): + raw = b"" + while True: + raw += next(iter(skyfibre_get(url, [(off + len(raw), off + len(raw) + 2880 * blocks)]).values())) + p = parse(raw, off) + if p is not None: + return p + + hdus = [(0,) + read(0, 16)] + d0 = hdus[0][3] - hdus[0][2] + guess = skyfibre_LAYOUT.get(n) + if guess: + starts = [hdus[0][3]] + for hl, same, dl in guess[:-1]: + starts.append(starts[-1] + hl + (d0 if same else dl)) + try: + got = skyfibre_get(url, [(a, a + 2880 * 4) for a in starts]) + except core.RangeError: + got = {} + for a in starts: + raw = got.get(a, b"") + p = parse(raw, a) if a == hdus[-1][3] and raw.startswith(b"XTENSION") else None + if p is None: + break + hdus.append((a,) + p) + while len(hdus) < n: + a = hdus[-1][3] + hdus.append((a,) + read(a, 4)) + skyfibre_LAYOUT[n] = [(d - a, e - d == d0, e - d) for a, h, d, e in hdus[1:]] + return [(h, d) for a, h, d, e in hdus] + + +def skyfibre_rows(url, blocks, rowbytes, dtype): + """Image HDU rows by multi-range requests: one {row: array} per block.""" + spans = [] + for b, (off, rows) in enumerate(blocks): + rows = sorted(set(int(r) for r in rows)) + i = 0 + while i < len(rows): + j = i + while j + 1 < len(rows) and rows[j + 1] == rows[j] + 1: + j += 1 + spans.append((b, off, rows[i], rows[j] + 1)) + i = j + 1 + out = [{} for _ in blocks] + count = rowbytes // np.dtype(dtype).itemsize + for i in range(0, len(spans), skyfibre_MAXRANGES): + part = spans[i:i + skyfibre_MAXRANGES] + res = skyfibre_get(url, [(off + r0 * rowbytes, off + r1 * rowbytes) for b, off, r0, r1 in part]) + for b, off, r0, r1 in part: + raw = res[off + r0 * rowbytes] + for r in range(r0, r1): + out[b][r] = np.frombuffer(raw, dtype=dtype, count=count, offset=(r - r0) * rowbytes) + return out + + +def skyfibre_plugmap(url, hd): + """Plug-map table of an spPlate from its HDU offsets.""" + from astropy.io import fits + hp, off5 = hd[5] + size = hp["NAXIS1"] * hp["NAXIS2"] + hp.get("PCOUNT", 0) + tab = next(iter(skyfibre_get(url, [(off5, off5 + size)]).values())) + blob = fits.PrimaryHDU().header.tostring().encode() + hp.tostring().encode() + tab + b"\0" * ((2880 - len(tab) % 2880) % 2880) + return fits.open(io.BytesIO(blob))[1].data + + +def skyfibre_read(url): + """Wavelengths, plug map and sky-fibre flux, ivar and sky-model rows of an spPlate; None with fewer than four sky fibres.""" + hd = skyfibre_hdus(url, 7) + h0 = hd[0][0] + npix = h0["NAXIS1"] + lam = 10 ** (h0["COEFF0"] + h0["COEFF1"] * np.arange(npix)) + pm = skyfibre_plugmap(url, hd) + objtype = np.array([str(x).strip().upper() for x in pm["OBJTYPE"]]) + sky = np.nonzero(objtype == "SKY")[0] + if len(sky) < 4: + return None + rb = npix * 4 + flux, ivar, skym = skyfibre_rows(url, [(hd[0][1], sky), (hd[1][1], sky), (hd[6][1], sky)], rb, ">f4") + return dict(h0=h0, lam=lam, pm=pm, sky=sky, flux=np.array([flux[r] for r in sky], float), + ivar=np.array([ivar[r] for r in sky], float), skym=np.array([skym[r] for r in sky], float)) + + +skyfibre_COMMON = os.environ.get("SKYFIBRE_COMMON", "0") == "1" # subtract each pixel's median over fibres +skyfibre_SHARED_MIN = int(os.environ.get("SKYFIBRE_SHARED_MIN", "1")) # other fibres at 3 sigma marking a peak shared + + +def skyfibre_detect(d, common=None, shared_min=None): + """Peaks of both signs on one file's sky fibres with labels, shared counts, airglow mask and good-pixel map.""" + from scipy.ndimage import median_filter + common = skyfibre_COMMON if common is None else common + shared_min = skyfibre_SHARED_MIN if shared_min is None else shared_min + sky, flux, ivar = d["sky"], d["flux"], d["ivar"] + npix = len(d["lam"]) + med_sky = np.median(d["skym"], axis=0) + cont = median_filter(med_sky, size=101, mode="nearest") + on_line = med_sky > 3.0 * np.maximum(cont, 1e-3) + on_line = np.convolve(on_line.astype(float), np.ones(5), "same") > 0 + k = np.arange(-4, 5) + w = np.exp(-0.5 * (k / skyfibre_LSF_PX) ** 2) + Z = np.zeros((len(sky), npix)) + G = np.zeros((len(sky), npix), bool) + for i in range(len(sky)): + iv = ivar[i] + good = (iv > 0) & np.isfinite(flux[i]) # masked pixels have zero ivar + z = np.where(good, flux[i] * np.sqrt(np.where(good, iv, 0.0)), 0.0) + s = 1.4826 * np.median(np.abs(z[good] - np.median(z[good]))) if good.sum() > 100 else 1.0 + Z[i] = z / max(s, 1e-3) + G[i] = good + if common: + cm = np.median(np.where(G, Z, np.nan), axis=0) + Z = np.where(G, Z - np.nan_to_num(cm)[None, :], 0.0) + num_ = np.array([np.convolve(Z[i], w[::-1], "same") for i in range(len(sky))]) + den = np.sqrt(np.array([np.convolve(G[i].astype(float), (w ** 2)[::-1], "same") for i in range(len(sky))])) + snr = np.where(den > 0.5 * math.sqrt(np.sum(w ** 2)), num_ / np.maximum(den, 1e-6), 0.0) + out = [] + for sign in (1, -1): + v = sign * snr + for i in range(len(sky)): + pk = np.nonzero((v[i] >= skyfibre_SNR) & (v[i] >= np.roll(v[i], 1)) & (v[i] > np.roll(v[i], -1)))[0] + for j in pk: + if j < 5 or j > npix - 6: + continue + pos = np.clip(sign * Z[i, j - 4:j + 5], 0, None) + width = math.sqrt(np.sum(pos * k ** 2) / max(np.sum(pos), 1e-9)) + labels = [] + if not G[i, j - 1:j + 2].all(): + labels.append("masked") + if on_line[j]: + labels.append("airglow") + others = np.delete(np.arange(len(sky)), i) + n_shared = int(np.sum(np.max(sign * snr[others, j - 1:j + 2], axis=1) >= 3.0)) + if n_shared >= shared_min: + labels.append("shared") + if not 0.6 * skyfibre_LSF_PX <= width <= 2.0 * skyfibre_LSF_PX: + labels.append("width %.2f" % width) + out.append((sign, i, int(j), float(v[i, j]), float(width), labels, n_shared)) + return out, on_line, G + + +def skyfibre_plate(plate): + """Search one plate's sky fibres into ROOT/plates/.json; returns its summary.""" + out_p = os.path.join(skyfibre_ROOT, "plates", "%s.json" % plate) + if os.path.exists(out_p): + return json.load(open(out_p)) + d = skyfibre_get(skyfibre_BASE + "%s/" % plate).decode("utf-8", "replace") + names = sorted(set(re.findall(r'href="(spPlate-%s-\d+\.fits)"' % plate, d))) + res = dict(plate=plate, files=[], peaks=[], n_neg=[0, 0, 0], n_pos=[0, 0, 0], n_sky=0, shared_min=skyfibre_SHARED_MIN) + for name in names: + d = skyfibre_read(skyfibre_BASE + "%s/%s" % (plate, name)) + if d is None: + continue + peaks, _, _ = skyfibre_detect(d) + pm, sky, lam, h0 = d["pm"], d["sky"], d["lam"], d["h0"] + res["n_sky"] += len(sky) + res["files"].append(name) + for sign, i, j, v, width, labels, n_shared in peaks: + key = "n_pos" if sign > 0 else "n_neg" + clean = not labels + res[key][0] += 1 + res[key][1] += int(clean) + if clean and v >= 8: + res[key][2] += 1 + if not [x for x in labels if x != "shared"]: + fib = int(pm["FIBERID"][sky[i]]) if "FIBERID" in pm.names else int(sky[i]) + 1 + res["peaks"].append(dict(file=name, fiber=fib, ra=float(pm["RA"][sky[i]]), dec=float(pm["DEC"][sky[i]]), + lam=float(lam[j]), snr=v, width=width, sign=sign, n_shared=n_shared, + flux=float(sign * np.sum(d["flux"][i][j - 3:j + 4]) * lam[j] * 2.302585 * h0["COEFF1"]))) + os.makedirs(os.path.dirname(out_p), exist_ok=True) + json.dump(res, open(out_p, "w")) + return res + + +def skyfibre_clean(p, sign=1, shared_min=None): + """Whether a stored peak is clean for the sign and sharing rule.""" + shared_min = skyfibre_SHARED_MIN if shared_min is None else shared_min + return p.get("sign", 1) == sign and p.get("n_shared", 0) < shared_min + + +def skyfibre_inject(n_plates=40, mults=(1.0, 1.5, 2.0, 3.0, 5.0), seed=1, variants=((False, 1),)): + """Completeness of injected instrumental-profile lines per detector variant, with losses by test.""" + rng = np.random.default_rng(seed) + plates = skyfibre_plates() + chosen = [plates[int(i)] for i in np.linspace(0, len(plates) - 1, n_plates)] + k = np.arange(-4, 5) + w = np.exp(-0.5 * (k / skyfibre_LSF_PX) ** 2) + gain = math.sqrt(float(np.sum(w ** 2))) # matched-filter S/N of a unit line + tally = {(var, m): dict(n=0, found=0, lost={}, false=0, fibres=0) for var in variants for m in mults} + for pl in chosen: + d0 = skyfibre_get(skyfibre_BASE + "%s/" % pl).decode("utf-8", "replace") + names = sorted(set(re.findall(r'href="(spPlate-%s-\d+\.fits)"' % pl, d0))) + if not names: + continue + try: + d = skyfibre_read(skyfibre_BASE + "%s/%s" % (pl, names[0])) + except Exception as e: + print("plate %s: %s" % (pl, str(e)[:100]), flush=True) + continue + if d is None: + continue + _, on_line, G = skyfibre_detect(d) + npix = len(d["lam"]) + for m in mults: + dm = dict(d, flux=d["flux"].copy()) + where = [] + for i in range(len(d["sky"])): + ok = np.nonzero(G[i] & ~on_line)[0] + ok = ok[(ok > 10) & (ok < npix - 10)] + if len(ok) == 0: + continue + j = int(rng.choice(ok)) + sig = 1.0 / math.sqrt(d["ivar"][i][j]) + dm["flux"][i][j - 4:j + 5] += m * skyfibre_SNR / gain * sig * w + where.append((i, j)) + for var in variants: + peaks, _, _ = skyfibre_detect(dm, common=var[0], shared_min=var[1]) + t = tally[(var, m)] + injected = {(i, j) for i, j in where} + t["false"] += sum(1 for p in peaks if p[0] > 0 and not p[5] and not any(p[1] == i and abs(p[2] - j) <= 1 for i, j in injected)) + t["fibres"] += len(d["sky"]) + for i, j in where: + t["n"] += 1 + hit = [p for p in peaks if p[0] > 0 and p[1] == i and abs(p[2] - j) <= 1] + if hit and not hit[0][5]: + t["found"] += 1 + else: + why = (hit[0][5][0].split()[0] if hit and hit[0][5] else "below threshold") + t["lost"][why] = t["lost"].get(why, 0) + 1 + print("plate %s: %s" % (pl, "; ".join("%s%d: %s" % ("c" if var[0] else "", var[1], ", ".join("%.1fx %d/%d" % (m, tally[(var, m)]["found"], tally[(var, m)]["n"]) for m in mults)) for var in variants)), flush=True) + out = {"%s_%d_%.1f" % ("common" if var[0] else "plain", var[1], m): dict(t, recovered=t["found"] / max(t["n"], 1)) + for (var, m), t in tally.items()} + json.dump(out, open(core.results("skyfibre_inject.json"), "w"), indent=1) + for var in variants: + for m in mults: + t = tally[(var, m)] + print("%s, shared at %d: %.1f times the threshold: %d of %d recovered (%.2f); lost to %s; other clean peaks %.2f per fibre" + % ("common mode removed" if var[0] else "plain", var[1], m, t["found"], t["n"], t["found"] / max(t["n"], 1), + ", ".join("%s %d" % kv for kv in sorted(t["lost"].items())), t["false"] / max(t["fibres"], 1))) + return out + + +def skyfibre_plates(): + p = os.path.join(skyfibre_ROOT, "plates.json") + if os.path.exists(p): + return json.load(open(p)) + d = skyfibre_get(skyfibre_BASE).decode("utf-8", "replace") + plates = sorted(set(re.findall(r'href="(\d{4,5})/"', d)), key=int) + os.makedirs(skyfibre_ROOT, exist_ok=True) + json.dump(plates, open(p, "w")) + return plates + + +def skyfibre_search(threads, limit, part=None): + plates = skyfibre_plates() + if limit: + plates = plates[:limit] + if part: + span, n = part.split("/") + a, b = (int(x) for x in span.split(":")) + plates = [p for i, p in enumerate(plates) if a <= i % int(n) < b] + print("%d plates" % len(plates), flush=True) + done = [0] + + def one(pl): + try: + r = skyfibre_plate(pl) + except Exception as e: + print("plate %s: %s" % (pl, str(e)[:120]), flush=True) + return None + done[0] += 1 + if done[0] % 25 == 0: + print("%d plates searched" % done[0], flush=True) + return r + with ThreadPoolExecutor(threads) as ex: + list(ex.map(one, plates)) + skyfibre_summary() + + +def skyfibre_summary(): + """Counts, clean peaks and dips across plates with the fibre-fixed test applied.""" + files = glob.glob(os.path.join(skyfibre_ROOT, "plates", "*.json")) + R = [json.load(open(f)) for f in files] + stored = [p for r in R for p in r["peaks"]] + if all(r.get("shared_min", 1) == skyfibre_SHARED_MIN for r in R) or not any("sign" in p for p in stored): + pos = np.sum([r["n_pos"] for r in R], axis=0) + neg = np.sum([r["n_neg"] for r in R], axis=0) + else: + # counts under another sharing rule from the stored peaks + pos = np.array([sum(r["n_pos"][0] for r in R), sum(1 for p in stored if skyfibre_clean(p, 1)), + sum(1 for p in stored if skyfibre_clean(p, 1) and p["snr"] >= 8)]) + neg = np.array([sum(r["n_neg"][0] for r in R), sum(1 for p in stored if skyfibre_clean(p, -1)), + sum(1 for p in stored if skyfibre_clean(p, -1) and p["snr"] >= 8)]) + print("%d plates, %d sky-fibre spectra; peaks at 6 sigma: emission-like %d (clean %d, clean at 8 sigma %d), " + "absorption-like %d (clean %d, clean at 8 sigma %d)" % (len(R), sum(r["n_sky"] for r in R), pos[0], pos[1], pos[2], + neg[0], neg[1], neg[2])) + pk = sorted((p for p in stored if skyfibre_clean(p, 1)), key=lambda p: -p["snr"]) + dips = sorted((p for p in stored if skyfibre_clean(p, -1)), key=lambda p: -p["snr"]) + for group in (pk, dips): + for p in group: + plate = p["file"].split("-")[1] + p["fixed"] = sorted({q["file"].split("-")[1] for q in group if q["fiber"] == p["fiber"] and q["file"].split("-")[1] != plate + and abs(math.log10(q["lam"] / p["lam"])) < 3e-4}) + for p in pk[:30]: + print(" %s fibre %d (%.5f %+.5f): %.2f A, SNR %.1f, width %.2f px, flux %.2e erg/s/cm2" + % (p["file"], p["fiber"], p["ra"], p["dec"], p["lam"], p["snr"], p["width"], p["flux"] * 1e-17)) + if dips: + print("dips: %d clean, %d at 8 sigma, fixed to a fibre %d and %d" % (len(dips), sum(1 for p in dips if p["snr"] >= 8), + sum(1 for p in dips if p["fixed"]), + sum(1 for p in dips if p["fixed"] and p["snr"] >= 8))) + json.dump(dict(n_plates=len(R), n_all=len(skyfibre_plates()), n_sky=int(sum(r["n_sky"] for r in R)), pos=pos.tolist(), + neg=neg.tolist(), shared_min=skyfibre_SHARED_MIN, peaks=pk, dips=dips), + open(core.results("skyfibre_summary.json"), "w"), indent=0) + + +skyfibre_LINES = {"[OII]3727": 3728.48, "Hbeta": 4862.68, "[OIII]4959": 4960.29, "[OIII]5007": 5008.24, + "Halpha": 6564.61, "[NII]6583": 6585.27, "[SII]6716": 6718.29, "[SII]6731": 6732.67, "Lyalpha": 1215.67} # vacuum + + +def skyfibre_redshift(lams, tol=4e-4): + """Common galaxy redshift of two or more lines, or None.""" + names = list(skyfibre_LINES) + for i in range(len(lams)): + for j in range(i + 1, len(lams)): + for a in names: + for b in names: + if a == b: + continue + za, zb = lams[i] / skyfibre_LINES[a] - 1, lams[j] / skyfibre_LINES[b] - 1 + if za > -2e-3 and abs(za - zb) < tol * (1 + za): # Galactic nebulae within 600 km/s of rest + return "%s and %s at z %.4f" % (a, b, (za + zb) / 2) + return None + + +def skyfibre_classify(peaks): + """Each clean line with its galaxy identification and the plates where the same fibre holds it at another sky position.""" + by_spec, by_fibre = {}, {} + for p in peaks: + by_spec.setdefault((p["file"], p["fiber"]), []).append((p["lam"], p["flux"])) + by_fibre.setdefault(p["fiber"], []).append(p) + for p in peaks: + found = skyfibre_galaxy(by_spec[(p["file"], p["fiber"])]) + p["galaxy"] = "%s at z %.4f" % (" and ".join(found[1]), found[0]) if found else None + plate = p["file"].split("-")[1] + p["fixed"] = sorted({q["file"].split("-")[1] for q in by_fibre[p["fiber"]] if q["file"].split("-")[1] != plate + and abs(math.log10(q["lam"] / p["lam"])) < 3e-4 and skyfibre_sep(p, q) > 1.5}) + return peaks + + +def skyfibre_sep(p, q): + """Arcsec between two lines' fibre positions.""" + return math.hypot((q["ra"] - p["ra"]) * math.cos(math.radians(p["dec"])), q["dec"] - p["dec"]) * 3600.0 + + +def skyfibre_both_signs(peaks, dips): + """Mark lines whose spectrum also holds an unfixed clean line of the other sign.""" + have = {1: {(p["file"], p["fiber"]) for p in peaks if not p["fixed"]}, + -1: {(p["file"], p["fiber"]) for p in dips if not p["fixed"]}} + for sign, group in ((1, peaks), (-1, dips)): + for p in group: + p["both"] = (p["file"], p["fiber"]) in have[-sign] + return peaks, dips + + +def skyfibre_frames(lines, sign): + """Each line's exposure verdict, None where unread.""" + path = core.results("skyfibre_exposures.json") + ex = json.load(open(path)) if os.path.exists(path) else {} + for p in lines: + p["frames"] = ex.get("%s %d %.3f %+d" % (p["file"], p["fiber"], p["lam"], sign), {}).get("verdict") + return bool(ex) + + +def skyfibre_counterparts(lines, cache): + """(lines, covered, with a source at the fibre, with one 30 arcsec north).""" + keys = ["%.5f %+.5f" % (p["ra"], p["dec"]) for p in lines] + have = [k for k in keys if k in cache] + return len(keys), len(have), sum(1 for k in have if cache[k]["on"]), sum(1 for k in have if cache[k]["off"]) + + +def skyfibre_rest(): + """Clean 8-sigma peaks matched to Legacy Surveys at the fibre and a control, and to DESI, into skyfibre_rest.json.""" + d = json.load(open(core.results("skyfibre_summary.json"))) + peaks = skyfibre_classify(d["peaks"]) + rest = [p for p in peaks if p["snr"] >= 8 and not p["galaxy"] and not p["fixed"]] + + def match(p): + r = 1.5 / 3600 + out = dict(p) + for key, dec in (("ls", p["dec"]), ("ls_off", p["dec"] + 30.0 / 3600)): + rows = core.datalab("SELECT ra, dec, type, mag_g, mag_r, mag_z FROM ls_dr10.tractor WHERE q3c_radial_query(ra, dec, %.6f, %.6f, %.6f) = 't'" + % (p["ra"], dec, r)) + out[key] = [{k: x[k] for k in ("type", "mag_g", "mag_r", "mag_z")} for x in rows] + de = core.datalab("SELECT z, zwarn, spectype FROM desi_dr1.zpix WHERE q3c_radial_query(mean_fiber_ra, mean_fiber_dec, %.6f, %.6f, %.6f) = 't'" + % (p["ra"], p["dec"], r)) + out["desi"] = [dict(z=num(x["z"]), zwarn=int(num(x["zwarn"])), spectype=x["spectype"]) for x in de] + return out + rest = core.pmap(match, rest, threads=6) + withls, off = [p for p in rest if p["ls"]], [p for p in rest if p["ls_off"]] + print("%d leftover lines at 8 sigma: a Legacy Surveys DR10 source within 1.5 arcsec at %d (median r %.2f), at %d of the positions 30 arcsec north; a DESI DR1 spectrum at %d" + % (len(rest), len(withls), np.median([num(p["ls"][0]["mag_r"]) for p in withls if num(p["ls"][0]["mag_r"]) is not None]) if withls else 0.0, len(off), + sum(1 for p in rest if p["desi"]))) + for p in sorted(rest, key=lambda p: -p["snr"])[:12]: + print(" %s fibre %d (%.5f %+.5f): %.2f A, S/N %.1f, width %.2f px, flux %.2e erg/s/cm2; LS %s" % ( + p["file"], p["fiber"], p["ra"], p["dec"], p["lam"], p["snr"], p["width"], p["flux"] * 1e-17, + ", ".join("%s r %s" % (x["type"], x["mag_r"]) for x in p["ls"]) or "none")) + json.dump(dict(n_rest=len(rest), n_ls=len(withls), n_off=len(off), rest=rest), open(core.results("skyfibre_rest.json"), "w"), indent=1) + + +# readings of single positions: (RA, Dec, wavelength or None for every line, vet) +skyfibre_FOLLOWUP = ( + (213.5584, 53.6108, 4732.6, "background galaxy: Ly alpha at z 2.893, recurring at this position on 54 plate-nights " + "and alone in the stack of its 94 spectra, 287 km/s wide"), + (133.6088, 8.8632, None, "planetary nebula Abell 31 (PN G219.1+31.2): its spectrum from [Ne III] 3869 to [S III] 9531 " + "at zero redshift fills the fibre"), +) + + +def skyfibre_record(): + """Record the plates, peaks against dips through the same tests, and every clean 8-sigma peak with its vet.""" + if os.path.isdir(os.path.join(skyfibre_ROOT, "plates")): + skyfibre_summary() + d = json.load(open(core.results("skyfibre_summary.json"))) + pos, neg = d["pos"], d["neg"] + n_all = d.get("n_all") or len(skyfibre_plates()) + peaks = skyfibre_classify(d["peaks"]) + top = [p for p in peaks if p["snr"] >= 8] + gal = sum(1 for p in top if p["galaxy"] and not p["fixed"]) + fixed = sum(1 for p in top if p["fixed"]) + dips = skyfibre_classify(d.get("dips", [])) + skyfibre_both_signs(peaks, dips) + if dips: + # dips through the fibre-fixed, redshift and two-sign tests too + neg = [neg[0], sum(1 for p in dips if not p["fixed"] and not p["galaxy"] and not p["both"]), + sum(1 for p in dips if not p["fixed"] and not p["galaxy"] and not p["both"] and p["snr"] >= 8)] + print("dips fixed to a fibre: %d of %d clean, %d of %d at 8 sigma; at a galaxy redshift %d" % ( + sum(1 for p in dips if p["fixed"]), len(dips), sum(1 for p in dips if p["fixed"] and p["snr"] >= 8), + sum(1 for p in dips if p["snr"] >= 8), sum(1 for p in dips if p["galaxy"] and not p["fixed"]))) + rest = [p for p in top if not p["galaxy"] and not p["fixed"]] + rest_d = [p for p in dips if p["snr"] >= 8 and not p["galaxy"] and not p["fixed"]] + both = (sum(1 for p in rest if p["both"]), sum(1 for p in rest_d if p["both"])) + rest, rest_d = [p for p in rest if not p["both"]], [p for p in rest_d if not p["both"]] + framed = skyfibre_frames(top, 1) and skyfibre_frames(rest_d, -1) + cpath = core.results("skyfibre_counterparts.json") + cp = "" + + def net(lp, ld, cache): + # counterpart excess over control counted on both signs and scaled to all lines + (n_p, h_p, on_p, off_p), (n_d, h_d, on_d, off_d) = skyfibre_counterparts(lp, cache), skyfibre_counterparts(ld, cache) + g_p, g_d = (on_p - off_p) * n_p / max(h_p, 1), (on_d - off_d) * n_d / max(h_d, 1) + sd = math.sqrt(n_p + n_d + (on_p + off_p) * (n_p / max(h_p, 1)) ** 2 + (on_d + off_d) * (n_d / max(h_d, 1)) ** 2) + return (on_p, h_p, off_p, on_d, h_d, off_d, g_p, n_p - g_p, n_d - g_d, (n_p - g_p) - (n_d - g_d), sd) + if os.path.exists(cpath) and dips: + cache = json.load(open(cpath)) + cp = ("; %d peaks and %d dips sit in spectra that hold clean lines of both signs; a Legacy Surveys source " + "within 1.5 arcsec at %d of the %d other peaks the catalogue covers against %d at positions 30 arcsec " + "north, and at %d of %d dips against %d, so %.0f of the peaks are single lines of galaxies; net of them " + "%.0f peaks against %.0f dips, an excess of %+.0f +- %.0f" % (both + net(rest, rest_d, cache))) + if framed: + v = collections.Counter(p["frames"] or "not read" for p in rest) + vd = collections.Counter(p["frames"] or "not read" for p in rest_d) + cp += ("; read exposure by exposure, the peaks hold %s and the dips %s, and of those in every exposure, " + "%d of %d peaks covered have a source against %d at the control and %d of %d dips against %d, so " + "%.0f peaks are galaxies' lines; net of them %.0f persistent peaks against %.0f dips, an excess of " + "%+.0f +- %.0f" % ((", ".join("%s %d" % kv for kv in v.most_common()), ", ".join("%s %d" % kv for kv in vd.most_common())) + + net([p for p in rest if p["frames"] == "persistent"], + [p for p in rest_d if p["frames"] == "persistent"], cache))) + thr = np.array([6 * p["flux"] / p["snr"] for p in peaks]) * 1e-17 + inj = "" + ip = core.results("skyfibre_inject.json") + if os.path.exists(ip): + r = json.load(open(ip)) + key = "plain_%d_" % skyfibre_SHARED_MIN + got = {float(k[len(key):]): v["recovered"] for k, v in r.items() if k.startswith(key)} + if got: + inj = "; injected lines recovered as clean peaks: %s" % ", ".join("%.2f at %.1f times the threshold" % (got[m], m) for m in sorted(got)) + print("%d clean emission peaks (%d at 8 sigma): fibre-fixed %d (%d), galaxy lines %d (%d at 8 sigma), the rest %d (%d) " + "against %d absorption-like at 8 sigma; 6 sigma line flux median %.1e erg/s/cm2 (10-90 per cent %.1e-%.1e)%s" + % (len(peaks), len(top), sum(1 for p in peaks if p["fixed"]), fixed, + sum(1 for p in peaks if p["galaxy"] and not p["fixed"]), gal, + sum(1 for p in peaks if not p["galaxy"] and not p["fixed"] and not p["both"]), len(rest), neg[2], np.median(thr), + *np.percentile(thr, [10, 90]), cp)) + sid = "sdss_sky_fibres" if skyfibre_SHARED_MIN == 1 else "sdss_sky_fibres_shared%d" % skyfibre_SHARED_MIN + core.record_search( + sid, "Lines in sky fibres" + ("" if skyfibre_SHARED_MIN == 1 else ", %d-fibre rule" % skyfibre_SHARED_MIN), + archive="SDSS DR17 BOSS and eBOSS spPlate files (v5_13_2)", + release="%d of %d plates" % (d["n_plates"], n_all), selection="every sky fibre of the plates searched (%d spectra)" % d["n_sky"], + code=os.path.abspath(__file__), entry="skyfibre", n_targets=d["n_sky"], n_unit="sky-fibre spectra", + outputs=[core.results(x) for x in ("skyfibre_summary.json", "skyfibre_inject.json", "skyfibre_counterparts.json")], + params=dict(snr=skyfibre_SNR, lsf_px=skyfibre_LSF_PX, width=[0.6, 2.0], airglow=3.0, shared_sigma=3.0, + shared_min=skyfibre_SHARED_MIN, common=skyfibre_COMMON, fixed_px=3), + null_summary="absorption-like peaks of the same shape put through the same tests, the test against other " + "plates, the redshift test and the two-sign test included: %d at 6 sigma, %d clean, %d clean at 8 sigma" + % tuple(neg), + sensitivity="an unresolved line at 6 sigma of a sky fibre's noise, median %.1e erg/s/cm2 (10-90 per cent %.1e-%.1e)%s" + % (np.median(thr), *np.percentile(thr, [10, 90]), inj), + ledger="Lines in sky fibres", + result="emission-like peaks at 6 sigma %d, %d clean, %d clean at 8 sigma; of the clean 8 sigma peaks %d recur in " + "the same fibre on other plates and %d are galaxy lines (two or more at one redshift), and %d remain " + "against %d absorption-like put through the same tests%s" + % (pos[0], pos[1], pos[2], fixed, gal, len(rest), neg[2], cp)) + core.clear_targets(sid) + + def vet(p): + if p["fixed"]: + return "fibre-fixed: the same fibre holds this line on plates %s" % ", ".join(p["fixed"]) + if p["galaxy"]: + return "background galaxy: %s" % p["galaxy"] + if p["both"]: + return "a spectrum with clean lines of both signs" + for ra, dec, lam, note in skyfibre_FOLLOWUP: + if skyfibre_sep(p, dict(ra=ra, dec=dec)) < 1.5 and (lam is None or abs(p["lam"] - lam) < 2.0): + return note + return {"one exposure": "one exposure of the frames carries it: a cosmic ray", + "one camera": "one camera of the two covering it carries it"}.get(p.get("frames")) + core.record_targets(sid, [dict( + target="sky:ra %.5f dec %+.5f" % (p["ra"], p["dec"]), stat=p["snr"], unit="S/N of an unresolved line", + vet=vet(p), note="%s fibre %d, %.2f A, width %.2f px%s" % ( + p["file"], p["fiber"], p["lam"], p["width"], ", frames: %s" % p["frames"] if p.get("frames") else "")) for p in top]) + print("recorded %d plates, %d clean peaks at 8 sigma" % (d["n_plates"], len(top))) + + +skyfibre_STRONG = ("[OII]3727", "Hbeta", "[OIII]5007", "Halpha", "Lyalpha") + + +def skyfibre_lines(lams, tol=4e-4): + """Redshift where most of a fibre's lines fall on galaxy lines (at least two, one strong), or None.""" + best = None + names = list(skyfibre_LINES) + for i in range(len(lams)): + for j in range(i + 1, len(lams)): + for a in names: + for b in names: + if a == b: + continue + za, zb = lams[i] / skyfibre_LINES[a] - 1, lams[j] / skyfibre_LINES[b] - 1 + if za <= -2e-3 or abs(za - zb) >= tol * (1 + za): + continue + z = (za + zb) / 2 + hit = sorted({n for lam in lams for n in names if abs(lam / skyfibre_LINES[n] - 1 - z) < tol * (1 + z)}) + if not any(n in skyfibre_STRONG for n in hit): + continue + if best is None or len(hit) > len(best[1]): + best = (z, hit) + return best + + +skyfibre_RANGE = (3600.0, 10400.0) + + +def skyfibre_galaxy(lines): + """skyfibre_lines with galaxy flux ratios required: [O III] 4959 with 5007 at 1.5-5, H alpha with a strong line.""" + lams = sorted(lam for lam, _ in lines) + found = skyfibre_lines(lams) + if not found: + return None + z, hit = found + + def flux(name): + lam0 = skyfibre_LINES[name] * (1 + z) + return max((f for lam, f in lines if abs(lam / lam0 - 1) < 4e-4), default=None) + if "[OIII]4959" in hit: + in_range = skyfibre_RANGE[0] < skyfibre_LINES["[OIII]5007"] * (1 + z) < skyfibre_RANGE[1] + if "[OIII]5007" not in hit and in_range: + return None + if "[OIII]5007" in hit: + r = flux("[OIII]5007") / max(flux("[OIII]4959"), 1e-9) + if not 1.5 <= r <= 5.0: + return None + if "Halpha" in hit and not any(n in hit for n in ("[OII]3727", "Hbeta", "[OIII]5007", "Lyalpha")): + return None + return found + + +def skyfibre_galaxies(): + """Fibres at one redshift with Legacy Surveys and DESI matches, into skyfibre_galaxies.json.""" + d = json.load(open(core.results("skyfibre_summary.json"))) + by = {} + for p in d["peaks"]: + by.setdefault((p["file"], p["fiber"]), []).append(p) + gals = [] + for (f, fib), ps in sorted(by.items()): + found = skyfibre_galaxy([(p["lam"], p["flux"]) for p in ps]) + if not found: + continue + z, lines = found + plate, mjd = re.match(r"spPlate-(\d+)-(\d+)\.fits", f).groups() + o3 = [p for p in ps if abs(p["lam"] / skyfibre_LINES["[OIII]5007"] - 1 - z) < 4e-4 * (1 + z)] + gals.append(dict(plate=int(plate), mjd=int(mjd), fiber=fib, ra=ps[0]["ra"], dec=ps[0]["dec"], z=z, lines=lines, + n_peaks=len(ps), snr=max(p["snr"] for p in ps), oiii_flux=o3[0]["flux"] * 1e-17 if o3 else None)) + + def match(g): + r = 1.5 / 3600 + ls = core.datalab("SELECT ra, dec, type, mag_g, mag_r, mag_z, shape_r FROM ls_dr10.tractor WHERE " + "q3c_radial_query(ra, dec, %.6f, %.6f, %.6f) = 't'" % (g["ra"], g["dec"], r)) + de = core.datalab("SELECT mean_fiber_ra, mean_fiber_dec, z, zwarn, spectype, zcat_primary FROM desi_dr1.zpix " + "WHERE q3c_radial_query(mean_fiber_ra, mean_fiber_dec, %.6f, %.6f, %.6f) = 't'" + % (g["ra"], g["dec"], r)) + cosd = math.cos(math.radians(g["dec"])) + for x in ls: + x["sep"] = math.hypot((float(x["ra"]) - g["ra"]) * cosd, float(x["dec"]) - g["dec"]) * 3600 + ls = sorted(ls, key=lambda x: x["sep"]) + de = [x for x in de if str(x.get("zcat_primary")).lower() in ("true", "t", "1")] or de + return dict(g, ls=[{k: x[k] for k in ("type", "mag_g", "mag_r", "mag_z", "shape_r", "sep")} for x in ls], + desi=[dict(z=num(x["z"]), zwarn=int(num(x["zwarn"])), spectype=x["spectype"]) for x in de]) + gals = core.pmap(match, gals, threads=6) + json.dump(dict(n_plates=d["n_plates"], n_sky=d["n_sky"], galaxies=gals), open(core.results("skyfibre_galaxies.json"), "w"), + indent=1) + zs = np.array([g["z"] for g in gals]) + withls = [g for g in gals if g["ls"]] + agree = [g for g in gals if any(x["zwarn"] == 0 and abs(x["z"] - g["z"]) < 0.002 * (1 + g["z"]) for x in g["desi"])] + print("%d galaxies in %d sky spectra of %d plates: z %.3f-%.3f (median %.3f); a Legacy Surveys DR10 source within 1.5 " + "arcsec for %d, median r %.2f; a DESI DR1 redshift for %d, agreeing for %d" + % (len(gals), d["n_sky"], d["n_plates"], zs.min(), zs.max(), np.median(zs), len(withls), + np.median([num(g["ls"][0]["mag_r"]) for g in withls if num(g["ls"][0]["mag_r"]) is not None]), + sum(1 for g in gals if g["desi"]), len(agree))) + for g in sorted(gals, key=lambda g: g["z"]): + ls = g["ls"][0] if g["ls"] else None + print(" %d-%d-%d %.5f %+.5f z %.4f %s; S/N %.1f; LS %s; DESI %s" + % (g["plate"], g["mjd"], g["fiber"], g["ra"], g["dec"], g["z"], "+".join(g["lines"]), g["snr"], + "%s r %s at %.1f arcsec" % (ls["type"], ls["mag_r"], ls["sep"]) if ls else "none", + ", ".join("z %.4f (%s, zwarn %d)" % (x["z"], x["spectype"], x["zwarn"]) for x in g["desi"]) or "none")) + return gals + + +skyfibre_FRAME_SIG_PX = 1.2 # instrumental profile in calibrated-frame pixels + + +def skyfibre_frame_snr(flux, ivar, mask, lam, lam0): + """(S/N, mask, covered) of an instrument-width line at lam0 in one frame; None outside it.""" + j = int(np.argmin(np.abs(lam - lam0))) + if j < 40 or j > len(lam) - 41 or abs(lam[j] - lam0) > 2 * abs(lam[j + 1] - lam[j]): + return None + k = np.arange(-40, 41) + f, iv, m = flux[j - 40:j + 41], ivar[j - 40:j + 41], mask[j - 40:j + 41] + good = iv > 0 + side = good & (np.abs(k) > 5) + cont = float(np.median(f[side])) if side.any() else 0.0 + best = (0.0, 0) + for c in range(-3, 4): + w = np.exp(-0.5 * ((k - c) / skyfibre_FRAME_SIG_PX) ** 2) * (np.abs(k - c) <= 4) + den = math.sqrt(max(float(np.sum(w ** 2 * iv * good)), 1e-30)) + s = float(np.sum(w * (f - cont) * iv * good)) / den + if abs(s) > abs(best[0]): + best = (s, c) + # covered when three or more pixels carry data; cosmic-ray frames keep only some + covered = bool(np.sum(good[36 + best[1]:45 + best[1]]) >= 3) + return round(best[0], 2), int(m[40 + best[1]]), covered + + +def skyfibre_line_frames(file, fiber, lam0, sign=1): + """A sky-fibre line read in every covering spCFrame: [(camera, exposure, S/N, mask, covered)].""" + plate = file.split("-")[1] + h0 = skyfibre_hdus(skyfibre_BASE + "%s/%s" % (plate, file), 1)[0][0] + exps = sorted({h0[k] for k in h0.keys() if k.startswith("EXPID")}) + spec, row = (1 if fiber <= 500 else 2), (fiber - 1) % 500 + out = [] + for e in exps: + cam, expid = e.split("-")[:2] + if not cam.endswith(str(spec)): + continue + url = skyfibre_BASE + "%s/spCFrame-%s-%s.fits" % (plate, cam, expid) + hd = skyfibre_hdus(url, 4) + npix = hd[0][0]["NAXIS1"] + wl = skyfibre_rows(url, [(hd[3][1], [row])], npix * 8, ">f8")[0][row] + lam = 10 ** wl if wl.max() < 10 else wl + if not lam.min() + 20 < lam0 < lam.max() - 20: + continue + fl = skyfibre_rows(url, [(hd[0][1], [row])], npix * 8, ">f8")[0][row].astype(float) + iv = skyfibre_rows(url, [(hd[1][1], [row])], npix * 4, ">f4")[0][row].astype(float) + mk = skyfibre_rows(url, [(hd[2][1], [row])], npix * 4, ">i4")[0][row] + m = skyfibre_frame_snr(sign * fl, iv, mk, lam, lam0) + if m: + out.append((cam, expid) + m) + return out + + +def skyfibre_frames_verdict(frames): + """Verdict of a line over its frames: one exposure, one camera, persistent, one frame, no frame or unclear.""" + cov = [f for f in frames if f[4]] + if len(cov) < 2: + return "one frame" if cov else "no frame" + s = np.array([max(f[2], 0.0) for f in cov]) + if s.max() >= 5 and s.max() ** 2 / max(float(np.sum(s ** 2)), 1e-9) > 0.8: + return "one exposure" + cams = {f[0][0] for f in cov} + if len(cams) == 2: + sb = max(f[2] for f in cov if f[0][0] == "b") + sr = max(f[2] for f in cov if f[0][0] == "r") + if (sb >= 4 and sr < 2) or (sr >= 4 and sb < 2): + return "one camera" + if np.sum(s >= 2.5) >= 2: + return "persistent" + return "unclear" + + +def skyfibre_exposures(threads=4, snr_min=8.0): + """Read every clean line at snr_min frame by frame into skyfibre_exposures.json.""" + d = json.load(open(core.results("skyfibre_summary.json"))) + path = core.results("skyfibre_exposures.json") + done = json.load(open(path)) if os.path.exists(path) else {} + todo = [] + for sign, group in ((1, skyfibre_classify(d["peaks"])), (-1, skyfibre_classify(d.get("dips", [])))): + for p in group: + if p["snr"] >= snr_min and not p["fixed"]: + key = "%s %d %.3f %+d" % (p["file"], p["fiber"], p["lam"], sign) + if key not in done: + todo.append((key, p, sign)) + print("%d lines to read, %d read before" % (len(todo), len(done)), flush=True) + + def one(item): + key, p, sign = item + try: + fr = skyfibre_line_frames(p["file"], p["fiber"], p["lam"], sign) + except Exception as e: + print(" %s: %s" % (key, repr(e)[:120]), flush=True) + return key, None + return key, dict(frames=fr, verdict=skyfibre_frames_verdict(fr), snr=p["snr"], galaxy=bool(p["galaxy"])) + n = 0 + with ThreadPoolExecutor(threads) as ex: + for key, res in ex.map(one, todo): + if res is not None: + done[key] = res + n += 1 + if n % 50 == 0 or n == len(todo): + json.dump(done, open(path, "w")) + print("%d of %d" % (n, len(todo)), flush=True) + json.dump(done, open(path, "w")) + for sign in (1, -1): + c = collections.Counter(v["verdict"] for k, v in done.items() if k.endswith("%+d" % sign) and not v["galaxy"]) + g = collections.Counter(v["verdict"] for k, v in done.items() if k.endswith("%+d" % sign) and v["galaxy"]) + print("%s: %s; galaxy lines %s" % ("peaks" if sign > 0 else "dips", dict(c), dict(g))) + + +def skyfibre_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("search", "summary", "record", "galaxies", "rest", "inject", "exposures")) + p.add_argument("--threads", type=int, default=6) + p.add_argument("--limit", type=int, default=0) + p.add_argument("--part", default=None, help="a:b/n: the plates whose position in the list modulo n lies in [a, b)") + a = p.parse_args() + if a.mode == "search": + skyfibre_search(a.threads, a.limit, a.part) + elif a.mode == "record": + skyfibre_record() + elif a.mode == "galaxies": + skyfibre_galaxies() + elif a.mode == "rest": + skyfibre_rest() + elif a.mode == "inject": + skyfibre_inject(n_plates=a.limit or 40, variants=((False, 1), (False, 2), (True, 1), (True, 2))) + elif a.mode == "exposures": + skyfibre_exposures(threads=min(a.threads, 4)) + else: + skyfibre_summary() + + +APPROACHES = { + "skyfibre": (skyfibre_cli, skyfibre_DOC), + "rvs": (rvs_cli, rvs_DOC), + "eso": (eso_cli, eso_DOC), + "sophie": (sophie_cli, sophie_DOC), + "galah": (galah_cli, galah_DOC), + "apogee": (apogee_cli, apogee_DOC), + "desi": (desi_cli, desi_DOC), + "lamost": (lamost_cli, lamost_DOC), + "carmenes": (carmenes_cli, carmenes_DOC), +} + + diff --git a/setitools/neighbourhood.py b/setitools/neighbourhood.py new file mode 100644 index 0000000000000000000000000000000000000000..d3135691d3a63660952a205b3b36451e5f5e0d12 --- /dev/null +++ b/setitools/neighbourhood.py @@ -0,0 +1,4391 @@ +"""Nearby stars as a population: co-moving pairs, transit-zone entrants, imaging motion and polarisation.""" +import argparse +import csv +import json +import math +import os +import re +import sqlite3 +import sys + +import numpy as np + +from setitools import catalogues, core +from setitools.core import num, quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------- + +imaging_DOC = r"""NaCo direct-imaging candidates moving as neither bound companions nor background stars (chi-square above 25 against both). + + python -I seti.py neighbourhood imaging naco + python -I seti.py neighbourhood imaging record""" + +imaging_HERE = core.RESULTS +imaging_CHI2 = 25.0 + + +def imaging_parallax_factors(ra, dec, when): + """Parallactic displacement (f_alpha*, f_delta) per mas at the given times.""" + from astropy.coordinates import get_body_barycentric + from astropy.time import Time + p = get_body_barycentric("earth", Time(when)) + x, y, z = p.x.to("au").value, p.y.to("au").value, p.z.to("au").value + a, d = math.radians(ra), math.radians(dec) + return (x * math.sin(a) - y * math.cos(a), x * math.cos(a) * math.sin(d) + y * math.sin(a) * math.sin(d) + - z * math.cos(d)) + + +def imaging_hosts(names): + """SIMBAD position, proper motion and parallax per host.""" + out = {} + for k in range(0, len(names), 100): + chunk = names[k:k + 100] + q = ("SELECT i.id AS name, b.ra, b.dec, b.pmra, b.pmdec, b.plx_value FROM ident AS i JOIN basic AS b ON " + "b.oid = i.oidref WHERE i.id IN (%s)" % ", ".join("'%s'" % n.replace("'", "''") for n in chunk)) + for r in core.simbad(q): + out[" ".join(r["name"].split())] = r + return out + + +def imaging_naco(): + cats = core.vizier("J/A+A/509/A52") + t8, t23 = cats["J/A+A/509/A52/table8"], cats["J/A+A/509/A52/table23"] + simbad_name = {str(r["Target"]).strip(): str(r["SimbadName"]).strip() for r in t23} + groups = {} + for r in t8: + key = (str(r["Target"]).strip(), str(r["Cand"]).strip()) + groups.setdefault(key, []).append(r) + names = sorted({simbad_name.get(k[0], k[0]) for k in groups}) + info = imaging_hosts([" ".join(n.split()) for n in names]) + # hosts unknown by name taken as the nearest object within 10 arcsec with motion and parallax + from astropy.coordinates import SkyCoord + import astropy.units as u + for r in t23: + key = " ".join(str(r["SimbadName"]).strip().split()) or str(r["Target"]).strip() + if key in info: + continue + c = SkyCoord(str(r["RAJ2000"]), str(r["DEJ2000"]), unit=(u.hourangle, u.deg)) + rows = core.simbad("SELECT main_id AS name, ra, dec, pmra, pmdec, plx_value, DISTANCE(POINT('ICRS', ra, dec), " + "POINT('ICRS', %.6f, %.6f)) AS d FROM basic WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), " + "CIRCLE('ICRS', %.6f, %.6f, 0.0028)) AND pmra IS NOT NULL AND plx_value IS NOT NULL " + "ORDER BY d" % (c.ra.deg, c.dec.deg, c.ra.deg, c.dec.deg)) + if rows: + info[key] = rows[0] + simbad_name = {k: " ".join(v.split()) or k for k, v in simbad_name.items()} + res = [] + for (target, cand), rows in sorted(groups.items()): + rows = sorted(rows, key=lambda r: str(r["Obs.Date"])) + if len(rows) < 2: + continue + h = info.get(" ".join(simbad_name.get(target, target).split())) + if not h or h["pmra"] is None or h["plx_value"] is None: + res.append(dict(target=target, cand=cand, epochs=len(rows), note="host motion unknown")) + continue + ra, dec, pmra, pmdec, plx = (float(h[k]) for k in ("ra", "dec", "pmra", "pmdec", "plx_value")) + dates = [str(r["Obs.Date"]) for r in rows] + sep = np.array([float(r["Sep"]) for r in rows]) * 1000.0 + pa = np.radians([float(r["PA"]) for r in rows]) + esep = np.array([float(r["e_Sep"]) for r in rows]) * 1000.0 + epa = np.radians([float(r["e_PA"]) for r in rows]) + x, y = sep * np.sin(pa), sep * np.cos(pa) + # RA and Dec errors from separation and angle errors + ex = np.hypot(esep * np.sin(pa), sep * epa * np.cos(pa)) + ey = np.hypot(esep * np.cos(pa), sep * epa * np.sin(pa)) + from astropy.time import Time + yr = Time(dates).decimalyear + fa, fd = imaging_parallax_factors(ra, dec, dates) + fa, fd = np.atleast_1d(fa), np.atleast_1d(fd) + # a background star moves by minus the host's proper motion and parallax + bx = x[0] - pmra * (yr - yr[0]) - plx * (fa - fa[0]) + by = y[0] - pmdec * (yr - yr[0]) - plx * (fd - fd[0]) + vx, vy = ex ** 2 + ex[0] ** 2, ey ** 2 + ey[0] ** 2 + chi_co = float(np.sum((x[1:] - x[0]) ** 2 / vx[1:] + (y[1:] - y[0]) ** 2 / vy[1:])) + chi_bg = float(np.sum((x[1:] - bx[1:]) ** 2 / vx[1:] + (y[1:] - by[1:]) ** 2 / vy[1:])) + span = float(yr[-1] - yr[0]) + motion = math.hypot(x[-1] - x[0], y[-1] - y[0]) / max(span, 1e-3) + res.append(dict(target=target, cand=cand, epochs=len(rows), span_yr=span, sep_mas=float(sep[0]), + chi2_comoving=chi_co, chi2_background=chi_bg, own_motion_mas_yr=motion, + host_pm=[pmra, pmdec], host_plx=plx, status=str(rows[-1]["Status"]).strip(), + dmag=float(rows[0]["Dmag"]) if rows[0]["Dmag"] is not np.ma.masked else None)) + json.dump(res, open(os.path.join(imaging_HERE, "imaging_motion_naco.json"), "w"), indent=1) + tested = [r for r in res if "chi2_comoving" in r] + odd = [r for r in tested if r["chi2_comoving"] > imaging_CHI2 and r["chi2_background"] > imaging_CHI2] + print("%d candidates with two or more epochs, %d with host motions; %d depart from both tracks at chi2 above %.0f" + % (len(res), len(tested), len(odd), imaging_CHI2)) + for r in sorted(odd, key=lambda r: -min(r["chi2_comoving"], r["chi2_background"])): + print(" %s %s: %d epochs over %.1f yr at %.0f mas, chi2 co-moving %.0f, background %.0f; the offset moved %.0f " + "mas/yr against the host's (%.0f, %.0f) mas/yr; survey status %s" + % (r["target"], r["cand"], r["epochs"], r["span_yr"], r["sep_mas"], r["chi2_comoving"], + r["chi2_background"], r["own_motion_mas_yr"], r["host_pm"][0], r["host_pm"][1], r["status"] or "-")) + + +def imaging_record(): + res = json.load(open(os.path.join(imaging_HERE, "imaging_motion_naco.json"))) + tested = [r for r in res if "chi2_comoving" in r] + odd = [r for r in tested if r["chi2_comoving"] > imaging_CHI2 and r["chi2_background"] > imaging_CHI2] + core.record_search( + "naco_candidate_motion", "Direct-imaging survey rejects", archive="VLT/NaCo survey of young austral stars " + "(VizieR J/A+A/509/A52)", release="Chauvin et al. 2010", + selection="candidates with two or more epochs; host motions from SIMBAD", code="seti.py neighbourhood imaging", + params=dict(chi2=imaging_CHI2), n_targets=len(tested), + null_summary="%d of %d candidates depart from both the co-moving and the background track" % (len(odd), len(tested)), + sensitivity="a few mas per year of own motion over the epochs, the separation and angle errors", + result="FS1035 cc-1 lies on the background track in Gaia DR3 (one NaCo epoch off by 0.17 arcsec), 0ES1847 " + "cc-8 sits within an epoch error of it, and 0ES1847 cc-4 moves 200 mas/yr of its own, too faint for Gaia, " + "as a field brown dwarf or late M dwarf would", + ledger="Direct-imaging survey rejects") + core.clear_targets("naco_candidate_motion") + core.record_targets("naco_candidate_motion", [ + dict(target="simbad:%s" % r["target"], stat=float(min(r["chi2_comoving"], r["chi2_background"])), + unit="smaller chi2 of the two tracks", note="%s, %d epochs over %.1f yr" % (r["cand"], r["epochs"], + r["span_yr"])) + for r in tested]) + print("recorded") + + +def imaging_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("naco", "record")) + a = p.parse_args() + imaging_naco() if a.mode == "naco" else imaging_record() + + +def imaging_cli(): + quiet_warnings() + imaging_main() + + +# -------------------------------------------------------------------------------------------------------------- + +phase_space_DOC = r"""Anomalies shared by co-moving pairs (El-Badry et al. 2021) across coverage runs: rank correlations and joint top-1-per-cent pairs against permutations. + + python -I seti.py neighbourhood phase_space ids + python -I seti.py neighbourhood phase_space pairs ELBADRY.npz SHIFT.npz + python -I seti.py neighbourhood phase_space test + python -I seti.py neighbourhood phase_space record""" + +phase_space_ROOT = os.environ.get("PHASE_ROOT", core.data("phase_space")) +phase_space_HERE = core.RESULTS +phase_space_TOP = 0.99 +phase_space_PERMS = 2000 +# statistics that do not measure anomaly, and runs on bodies +phase_space_SKIP = {"radar_beam_stars", "reply_window_etz_bl", "pulsar_ir_allwise", "enclosed_stars", "dark_companions_wise", + "pma_dark_companions", "sgl_parallax_racs", "sgl_parallax_racs_vlass", "pulsar_antipodes"} +# runs anomalous in both directions +phase_space_TWO_SIDED = {"hip_gaia_dimming", "neowise_decade_trends", "dasch_century_dimming", "dasch_hz_trends", "hz_stack_wise"} +# arcsec within which a run measures both members together +phase_space_BLEND_ARCSEC = {"hi4pi_star_frames": 972.0, "icecube_near10": 3600.0, "bl_rest_frame_tracks": 540.0, + "highenergy_near20": 30.0, "hip_gaia_dimming": 38.0, "hipparcos_dippers": 38.0, "cold_shells_akari": 90.0, + "spt3g_quiet_flares": 72.0, "tess20_glints": 60.0, "dasch_century_dimming": 20.0, "dasch_hz_trends": 20.0, + "hz_stack_wise": 12.0, "neowise_decade_trends": 6.0, "spherex_contardo53": 12.0, + "polarised_reflectors": 10.0, "vlass_quiet_radio_stars": 3.0, "laser_desi_dr1": 3.0, "laser_galah": 3.0, + "laser_gaia_rvs": 3.0, "laser_harps": 3.0, "laser_lamost_mrs": 3.0, "gaia_dr3_dippers": 2.0, + "gaia_alerts_near": 2.0} + + +def phase_space_ids(): + """{coverage target: Gaia DR3 source_id} for gaia_dr3, hip and simbad targets.""" + db = sqlite3.connect(core.COVERAGE) + targets = sorted({t for (t,) in db.execute("SELECT DISTINCT target FROM coverage")}) + out = {t: t.split(":", 1)[1] for t in targets if t.startswith("gaia_dr3:")} + hips = {t.split(":", 1)[1]: t for t in targets if t.startswith("hip:")} + if hips: + rows = core.gaia("SELECT original_ext_source_id, source_id FROM gaiadr3.hipparcos2_best_neighbour") + for r in rows: + h = str(r["original_ext_source_id"]).strip() + if h in hips: + out[hips[h]] = str(r["source_id"]) + names = {t.split(":", 1)[1]: t for t in targets if t.startswith("simbad:")} + todo = sorted(names) + for k in range(0, len(todo), 200): + chunk = todo[k:k + 200] + q = ("SELECT i1.id AS name, i2.id AS gaia FROM ident AS i1 JOIN ident AS i2 ON i1.oidref = i2.oidref " + "WHERE i2.id LIKE 'Gaia DR3 %%' AND i1.id IN (%s)" % ", ".join("'%s'" % n.replace("'", "''") for n in chunk)) + norm = {" ".join(n.split()): names[n] for n in chunk} + for r in core.simbad(q): + t = norm.get(" ".join(r["name"].split())) + if t: + out[t] = r["gaia"].split()[-1] + os.makedirs(phase_space_ROOT, exist_ok=True) + json.dump(out, open(os.path.join(phase_space_ROOT, "ids.json"), "w")) + print("%d targets: %d mapped to Gaia DR3 (%d gaia_dr3, %d of %d hip, %d of %d simbad), %d distinct stars" + % (len(targets), len(out), sum(1 for t in out if t.startswith("gaia_dr3:")), + sum(1 for t in out if t.startswith("hip:")), len(hips), sum(1 for t in out if t.startswith("simbad:")), + len(names), len(set(out.values())))) + + +def phase_space_pairs(main_npz, shift_npz): + """Pairs with both members among the mapped stars.""" + mapped = set(int(v) for v in json.load(open(os.path.join(phase_space_ROOT, "ids.json"))).values()) + keep = {} + for label, path in (("main", main_npz), ("shift", shift_npz)): + z = np.load(path) + a, b = z["source_id1"].astype(np.int64), z["source_id2"].astype(np.int64) + both = np.array([x in mapped and y in mapped for x, y in zip(a.tolist(), b.tolist())]) + r = z["R_chance_align"] if "R_chance_align" in z.files else np.full(len(a), np.nan) + sep = z["sep_AU"] + ang = z["pairdistance"] * 3600.0 + rows = [dict(a=str(x), b=str(y), sep_au=float(s), sep_arcsec=float(t), r=float(q)) for x, y, s, t, q in + zip(a[both].tolist(), b[both].tolist(), sep[both].tolist(), ang[both].tolist(), r[both].tolist())] + if label == "main": + keep["bound"] = [x for x in rows if x["r"] < 0.1] + keep["chance"] = [x for x in rows if x["r"] > 0.5] + else: + keep["shift"] = rows + print("%s: %d pairs, %d with both members searched" % (label, len(a), len(rows))) + json.dump(keep, open(os.path.join(phase_space_ROOT, "pairs.json"), "w")) + print("bound %d, close chance alignments %d, shifted %d" % (len(keep["bound"]), len(keep["chance"]), + len(keep["shift"]))) + + +def phase_space_scores(): + """{run: {gaia id: percentile}}, 1 the most anomalous.""" + idmap = json.load(open(os.path.join(phase_space_ROOT, "ids.json"))) + db = sqlite3.connect(core.COVERAGE) + raw = {} + for run, tgt, stat, p in db.execute("SELECT search_id, target, stat, p FROM coverage"): + if run in phase_space_SKIP or tgt not in idmap: + continue + if p is not None and p > 0: + v = -np.log10(p) + elif stat is not None: + v = abs(stat) if run in phase_space_TWO_SIDED else stat + else: + continue + g = idmap[tgt] + d = raw.setdefault(run, {}) + d[g] = max(d.get(g, -np.inf), v) + out = {} + for run, d in raw.items(): + if len(d) < 20: + continue + g = list(d) + v = np.array([d[x] for x in g]) + order = v.argsort(kind="stable") + ranks = np.empty(len(v)) + ranks[order] = np.arange(1, len(v) + 1) + # ties share their mean rank + for val in np.unique(v): + sel = v == val + if sel.sum() > 1: + ranks[sel] = ranks[sel].mean() + out[run] = dict(zip(g, ranks / len(v))) + return out + + +class phase_space_Layout: + """All runs' percentiles in one array with same-run, cross-run and member index arrays for a pair set.""" + + def __init__(self, sc, prs): + self.runs = sorted(sc) + self.flat, self.seg, where = [], [], {} + for run in self.runs: + start = len(self.flat) + for g, u in sc[run].items(): + where.setdefault(g, []).append((run, len(self.flat))) + self.flat.append(u) + self.seg.append((start, len(self.flat))) + self.flat = np.array(self.flat) + sa, sb, ca, cb, kk, ka, kb = [], [], [], [], [], [], [] + self.blended = 0 + for k, pr in enumerate(prs): + ea, eb = dict(where.get(pr["a"], [])), dict(where.get(pr["b"], [])) + for x, ix in ea.items(): + for y, iy in eb.items(): + if x != y: + ca.append(ix) + cb.append(iy) + elif pr.get("sep_arcsec", np.inf) < phase_space_BLEND_ARCSEC.get(x, 0.0): + self.blended += 1 + continue + else: + sa.append(ix) + sb.append(iy) + kk.append(k) + ka.append(ix) + kb.append(iy) + self.n = len(prs) + self.sa, self.sb, self.ca, self.cb, self.kk, self.ka, self.kb = (np.array(v, int) for v in + (sa, sb, ca, cb, kk, ka, kb)) + + def permuted(self, rng): + out = self.flat.copy() + for s, e in self.seg: + out[s:e] = rng.permutation(out[s:e]) + return out + + def statistics(self, u): + rho = lambda a, b: float(np.corrcoef(u[a], u[b])[0, 1]) if len(a) > 10 else float("nan") # noqa: E731 + both = (u[self.ka] >= phase_space_TOP) & (u[self.kb] >= phase_space_TOP) if len(self.kk) else np.zeros(0, bool) + return dict(n_same=len(self.sa), rho_same=rho(self.sa, self.sb), n_cross=len(self.ca), + rho_cross=rho(self.ca, self.cb), top_both=int(len(np.unique(self.kk[both]))), + blended=self.blended) + + +def phase_space_test(): + sc = phase_space_scores() + prs = json.load(open(os.path.join(phase_space_ROOT, "pairs.json"))) + print("%d runs with ranked stars; %d stars ranked" % (len(sc), len({g for d in sc.values() for g in d}))) + rng = np.random.default_rng(55) + res = {} + for label in ("bound", "chance", "shift"): + lay = phase_space_Layout(sc, prs[label]) + obs = lay.statistics(lay.flat) + null = [lay.statistics(lay.permuted(rng)) for _ in range(phase_space_PERMS)] + out = dict(obs, pairs=len(prs[label])) + for key in ("rho_same", "rho_cross", "top_both"): + vals = np.array([n[key] for n in null], float) + vals = vals[np.isfinite(vals)] + if np.isfinite(obs[key]) and len(vals): + out[key + "_null_mean"] = float(vals.mean()) + out[key + "_null_sd"] = float(vals.std()) + out[key + "_p"] = float((np.sum(vals >= obs[key]) + 1) / (len(vals) + 1)) + res[label] = out + print("%s pairs %d (%d same-run pairings inside a run's blend radius set aside): same run %d pairings, rho %.3f " + "(null %.3f +- %.3f, p %.3g); other runs %d pairings, rho %.3f (null %.3f +- %.3f, p %.3g); both members " + "in a top 1%%: %d (null %.1f +- %.1f, p %.3g)" + % (label, len(prs[label]), out["blended"], out["n_same"], out["rho_same"], out.get("rho_same_null_mean", np.nan), + out.get("rho_same_null_sd", np.nan), out.get("rho_same_p", np.nan), out["n_cross"], out["rho_cross"], + out.get("rho_cross_null_mean", np.nan), out.get("rho_cross_null_sd", np.nan), + out.get("rho_cross_p", np.nan), out["top_both"], out.get("top_both_null_mean", np.nan), + out.get("top_both_null_sd", np.nan), out.get("top_both_p", np.nan)), flush=True) + # bound pairs with both members in a run's top 1 per cent + star_runs = {} + for run, d in sc.items(): + for g, u in d.items(): + if u >= phase_space_TOP: + star_runs.setdefault(g, []).append(run) + res["top_pairs"] = [] + for pr in prs["bound"]: + ok = [(x, y) for x in star_runs.get(pr["a"], []) for y in star_runs.get(pr["b"], []) + if x != y or pr.get("sep_arcsec", np.inf) >= phase_space_BLEND_ARCSEC.get(x, 0.0)] + if ok: + res["top_pairs"].append(dict(pr, runs_a=sorted({x for x, y in ok}), runs_b=sorted({y for x, y in ok}))) + for pr in res["top_pairs"]: + print(" Gaia DR3 %s (%s) and %s (%s), %.0f au" % (pr["a"], ", ".join(pr["runs_a"]), pr["b"], + ", ".join(pr["runs_b"]), pr["sep_au"])) + json.dump(res, open(os.path.join(phase_space_HERE, "phase_space.json"), "w"), indent=1) + + +def phase_space_record(): + r = json.load(open(os.path.join(phase_space_HERE, "phase_space.json"))) + b = r["bound"] + core.record_search( + "phase_space_pairs", "Anomalies clustered in phase space", + archive="the coverage store joined to El-Badry, Rix and Heintz (2021) wide binaries (Zenodo 4435257)", + release="Gaia EDR3 pairs", selection="bound pairs (R below 0.1) with both members among the searched stars", + code="seti.py neighbourhood phase_space", params=dict(top=phase_space_TOP, permutations=phase_space_PERMS, bound_r=0.1, chance_r=0.5), + n_targets=b["pairs"], + null_summary="same run: %d pairings, rho %.3f against %.3f +- %.3f; other runs: %d pairings, rho %.3f against " + "%.3f +- %.3f; both in a top 1 per cent: %d against %.1f +- %.1f" + % (b["n_same"], b["rho_same"], b.get("rho_same_null_mean", float("nan")), + b.get("rho_same_null_sd", float("nan")), b["n_cross"], b["rho_cross"], + b.get("rho_cross_null_mean", float("nan")), b.get("rho_cross_null_sd", float("nan")), + b["top_both"], b.get("top_both_null_mean", float("nan")), b.get("top_both_null_sd", float("nan"))), + sensitivity="a shared anomaly in the top 1 per cent of any run among the bound pairs", + result="no pair shares an anomaly beyond the permutations; the resolved same-run correlation is the likeness of " + "co-natal stars, and across unrelated searches the pairs show none", + ledger="Anomalies clustered in phase space") + core.clear_targets("phase_space_pairs") + core.record_targets("phase_space_pairs", [ + dict(target="gaia_dr3:%s" % x, note="bound partner of Gaia DR3 %s at %.0f au; top 1%% in %s" + % (y, pr["sep_au"], ", ".join(runs))) + for pr in r["top_pairs"] for x, y, runs in ((pr["a"], pr["b"], pr["runs_a"]), (pr["b"], pr["a"], pr["runs_b"]))]) + print("recorded") + + +def phase_space_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("ids", "pairs", "test", "record")) + p.add_argument("paths", nargs="*") + a = p.parse_args() + if a.mode == "ids": + phase_space_ids() + elif a.mode == "pairs": + phase_space_pairs(*a.paths) + elif a.mode == "test": + phase_space_test() + else: + phase_space_record() + + +def phase_space_cli(): + quiet_warnings() + phase_space_main() + + +# -------------------------------------------------------------------------------------------------------------- + +etz_DOC = r"""Fresh Earth-transit-zone entrants within 100 pc from proper motion, joined to the coverage store and the BL target list. + + python -I seti.py neighbourhood etz [record] [--since 1000]""" + +etz_HERE = core.RESULTS +etz_HALF = 0.2665 # deg, solar angular radius at 1 AU +etz_EPS = math.radians(23.4392911) # J2000 obliquity + + +def etz_pm_beta(ra, dec, pmra, pmdec): + """Proper motion in ecliptic latitude (mas/yr).""" + a, d = math.radians(ra), math.radians(dec) + # sin b = sin d cos e - cos d sin e sin a + sinb = math.sin(d) * math.cos(etz_EPS) - math.cos(d) * math.sin(etz_EPS) * math.sin(a) + cosb = math.sqrt(max(1 - sinb * sinb, 1e-12)) + dsinb_dd = math.cos(d) * math.cos(etz_EPS) + math.sin(d) * math.sin(etz_EPS) * math.sin(a) + dsinb_da = -math.cos(d) * math.sin(etz_EPS) * math.cos(a) + # pmra includes cos d + mu_a = pmra / max(math.cos(d), 1e-9) + return (dsinb_dd * pmdec + dsinb_da * mu_a) / cosb + + +def etz_main(record=False, since=1000.0): + rows = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag, bp_rp, ecl_lat " + "FROM gaiadr3.gaia_source WHERE parallax > 10 AND parallax_over_error > 10 AND " + "ABS(ecl_lat) < 5 AND pmra IS NOT NULL") + out = [] + for r in rows: + b0, mub = float(r["ecl_lat"]), etz_pm_beta(float(r["ra"]), float(r["dec"]), float(r["pmra"]), float(r["pmdec"])) + rate = mub / 3.6e6 # deg/yr + if abs(rate) < 1e-12: + continue + # years from 2016.0 when b crosses +-HALF + t1, t2 = (etz_HALF - b0) / rate, (-etz_HALF - b0) / rate + t_in, t_out = min(t1, t2), max(t1, t2) + out.append(dict(source_id=r["source_id"], d_pc=1000.0 / float(r["parallax"]), g=float(r["phot_g_mean_mag"] or 99), + bp_rp=float(r["bp_rp"] or 0), ecl_lat=b0, mu_beta=mub, entry=2016.0 + t_in, exit=2016.0 + t_out)) + inside = [x for x in out if x["entry"] <= 2016.0 <= x["exit"]] + fresh = sorted([x for x in inside if x["entry"] >= 2016.0 - since], key=lambda x: -x["entry"]) + soon = sorted([x for x in out if 2016.0 < x["entry"] <= 2116.0], key=lambda x: x["entry"]) + print("%d Gaia DR3 stars within 100 pc and 5 deg of the ecliptic; %d see Earth transit now, %d of them entered after " + "%d; %d enter within the next century" % (len(out), len(inside), len(fresh), 2016 - since, len(soon))) + import sqlite3 + db = sqlite3.connect(core.COVERAGE) + bl = {b.replace(" ", "").upper() for b in json.load(open(os.path.join(etz_HERE, "bl_targets.json")))} + ids = [x["source_id"] for x in fresh[:300] + soon] + hip = {} + for k in range(0, len(ids), 400): + q = ("SELECT source_id, original_ext_source_id FROM gaiadr3.hipparcos2_best_neighbour WHERE source_id IN (%s)" + % ",".join(ids[k:k + 400])) + for r in core.gaia(q): + hip[r["source_id"]] = "HIP" + r["original_ext_source_id"] + for label, group in (("entered", fresh[:25]), ("entering", soon[:25])): + print("%s:" % label) + for x in group: + h = hip.get(x["source_id"]) + card = db.execute("SELECT COUNT(*) FROM coverage WHERE target IN (?, ?)", + ("gaia_dr3:" + x["source_id"], (h or "").replace("HIP", "hip:"))).fetchone()[0] + print(" Gaia DR3 %-20s %5.1f pc G %5.2f BP-RP %4.2f: in the zone %7.0f to %7.0f%s%s; coverage rows %d" + % (x["source_id"], x["d_pc"], x["g"], x["bp_rp"], x["entry"], x["exit"], "; " + h if h else "", + " (BL)" if h and h.upper() in bl else "", card)) + json.dump(dict(fresh=fresh, soon=soon, hip=hip), open(os.path.join(etz_HERE, "etz_entrants.json"), "w"), indent=1) + if record: + covered = sum(1 for x in fresh + soon if db.execute("SELECT COUNT(*) FROM coverage WHERE target = ?", ("gaia_dr3:" + x["source_id"],)).fetchone()[0]) + core.record_run( + "etz_fresh_entrants", "Fresh transit-zone entrants", "Gaia DR3; Hipparcos best neighbours; the coverage store; the Breakthrough Listen target list", + "Gaia DR3 stars within 100 pc and 5 deg of the ecliptic: %d" % len(out), os.path.abspath(__file__), "etz", len(out), "stars", dict(since=since), + "the stars' proper motion in ecliptic latitude", "stars that began to see Earth transit the Sun since %d or will within a century" % (2016 - since), + "%d see Earth transit now, %d of them having entered since %d; %d enter within the next century; %d of the %d entered or entering carry rows in the store" % ( + len(inside), len(fresh), 2016 - since, len(soon), covered, len(fresh) + len(soon)), []) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- + +polarised_DOC = r"""Polarised reflectors within 50 pc: linear polarisation 3 sigma above the distance-scaled neighbour median, filtered for dust, activity, companions and type. + + python -I seti.py neighbourhood polarised fetch + python -I seti.py neighbourhood polarised analyse + python -I seti.py neighbourhood polarised record""" + +polarised_ROOT = os.environ.get("POLAR_ROOT", core.data("polar")) +polarised_HERE = core.RESULTS +polarised_PIIROLA = (("J/A+A/635/A46/table6", "Piirola UH88"), ("J/A+A/635/A46/table7", "Piirola T60"), + ("J/A+A/635/A46/table8", "Piirola H127")) +polarised_PLANETPOL = "J/MNRAS/405/2570/pol" +polarised_HEILES = "II/226/catalog" +polarised_DEBRIS = ("J/ApJS/211/25/catalog", "J/A+A/555/A11/stars") +polarised_ACTIVITY = "J/A+A/616/A108/catalog" +polarised_ACTIVE_TYPES = {"BY*", "RS*", "Fl*", "Ro*", "Er*", "TT*", "Or*", "Y*O", "Y*?", "TT?"} +polarised_BINARY_TYPES = {"SB*", "EB*", "El*", "EB?", "SB?"} +polarised_DUSTY_TYPES = {"LP*", "Mi*", "C*", "S*", "AB*", "Be*", "Ae*", "Pe*", "Em*", "WR*", "a2*", "sg*", "s*b", "s*r", "s*y"} +polarised_MERGE_ARCSEC = 30.0 +# interstellar bound 2.9 ppm/pc within 50 pc (Piirola et al. 2020) +polarised_ISM_BOUND = 2.9 +# Local Leo Cold Cloud, 11-24 pc (Meyer 2006, Peek 2011) +polarised_LLCC = dict(l=(210.0, 232.0), b=(36.0, 50.0), d_min=11.0) +# Heiles catalogues reading above 0.03 per cent median carry offsets +polarised_REF_HIGH = 3.0e2 +# night-to-night q, u at T60 (Piirola et al. 2020 Table 11, ppm) +polarised_VARIABLE = {"16673": [(-21, 31, 9), (-8, -6, 8)], "19373": [(-9, 5, 4), (0, 7, 7), (-3, 12, 9), (-10, 44, 8)], + "34411": [(0, -3, 6), (11, 13, 12), (-17, 14, 5), (0, -19, 6), (-10, -3, 6)], + "34721": [(22, 27, 7), (-9, -7, 8)], + "43042": [(-3, -6, 7), (12, 16, 9), (11, 8, 6), (30, 19, 6), (18, 11, 7)], + "43386": [(0, 0, 6), (13, 13, 7), (8, -27, 7), (0, 15, 7), (20, 0, 7)], + "55575": [(-6, 4, 8), (39, -16, 9), (18, 17, 7), (5, 13, 7)], + "58855": [(-10, -1, 5), (-10, 40, 5), (-31, 6, 7), (-29, -5, 7), (-9, -11, 10)], + "59984": [(-16, -11, 11), (21, 12, 10), (37, 37, 7)], "83287": [(-8, -3, 6), (-14, -36, 6)], + "89449": [(0, -9, 8), (2, -30, 6), (-11, -7, 8)], "115383": [(0, -19, 9), (18, 24, 8)], + "164259": [(-3, 14, 7), (28, 19, 13)], "187691": [(-8, 0, 6), (7, 32, 8)], + "205289": [(5, 20, 8), (6, -23, 8), (-36, 4, 11)], "206826": [(-6, -3, 5), (-29, -5, 7), (-16, -25, 7)], + "207958": [(1, 16, 7), (-5, -14, 8), (-27, -15, 7), (-23, 10, 9), (-9, -8, 8), (12, 0, 6)], + "215648": [(-10, -5, 5), (-18, -9, 8), (-28, -7, 8), (-3, -24, 7), (7, -16, 9), (7, 2, 6)]} +polarised_T60_STARS = 205 +# within this angle of the neighbours' PA the polarisation follows the local field +polarised_PA_ALIGNED = 15.0 + + +def polarised_tap_all(table, where=""): + return core.tap("vizier", 'SELECT * FROM "%s"%s' % (table, (" WHERE " + where) if where else "")) + + +def polarised_measurements(): + out = [] + for table, src in polarised_PIIROLA: + for r in polarised_tap_all(table): + plx = num(r["plx"]) + out.append(dict(src=src, name="HD " + r["HD"].strip(), ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), + p=num(r["p"]), e=num(r["e_p"]), pa=num(r["theta"]), v=num(r["Vmag"]), + d=1000.0 / plx if plx else None, sp=r["SpType"].strip())) + for r in polarised_tap_all(polarised_PLANETPOL): + out.append(dict(src="PlanetPol", name="HR " + r["HR"].strip(), ra=num(r["_RA"]), dec=num(r["_DE"]), + p=num(r["Pol"]), e=num(r["e_Pol"]), pa=num(r["theta"]), v=num(r["Vmag"]), d=num(r["Dist"]), + sp=r["SpType"].strip())) + for r in polarised_tap_all(polarised_HEILES, "Dist > 0 AND Dist <= 50"): + if num(r["Pol"]) is None or not num(r["e_Pol"]): + continue + name = ("HD " + str(int(num(r["HD"])))) if num(r["HD"]) else ("BD " + r["BD"]).strip() + out.append(dict(src="Heiles", name=name, ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), p=num(r["Pol"]) * 1e4, + e=num(r["e_Pol"]) * 1e4, pa=num(r["PA"]), v=num(r["Vmag"]), d=num(r["Dist"]), + sp=r["SpType"].strip(), ref=r["PolRefs"].strip())) + return [m for m in out if m["ra"] is not None and m["p"] is not None and m["e"]] + + +def polarised_sep_deg(ra1, dec1, ra2, dec2): + a1, d1, a2, d2 = map(math.radians, (ra1, dec1, ra2, dec2)) + c = math.sin(d1) * math.sin(d2) + math.cos(d1) * math.cos(d2) * math.cos(a1 - a2) + return math.degrees(math.acos(max(-1.0, min(1.0, c)))) + + +def polarised_merge(ms): + """Group one star's measurements within MERGE_ARCSEC and 1.5 mag in V.""" + stars = [] + for m in sorted(ms, key=lambda m: m["e"]): + for s in stars: + if polarised_sep_deg(s["ra"], s["dec"], m["ra"], m["dec"]) * 3600 < polarised_MERGE_ARCSEC and ( + s["v"] is None or m["v"] is None or abs(s["v"] - m["v"]) < 1.5): + s["meas"].append(m) + break + else: + stars.append(dict(id="s%04d" % len(stars), ra=m["ra"], dec=m["dec"], v=m["v"], meas=[m])) + return stars + + +def polarised_nearest(rows, key): + polarised_best = {} + for r in rows: + if r["source_id"] not in polarised_best or key(r) < key(polarised_best[r["source_id"]]): + polarised_best[r["source_id"]] = r + return polarised_best + + +def polarised_fetch(): + os.makedirs(polarised_ROOT, exist_ok=True) + stars = polarised_merge(polarised_measurements()) + pos = [dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in stars] + sim = polarised_nearest(core.xmatch(pos, "simbad", 15.0), lambda r: float(r["angDist"])) + gaia = polarised_nearest(core.xmatch(pos, "I/355/gaiadr3", 20.0), lambda r: num(r["Gmag"]) or 99.0) + wise = polarised_nearest(core.xmatch(pos, "II/328/allwise", 15.0), lambda r: num(r["W1mag"]) or 99.0) + act = polarised_nearest(core.xmatch(pos, polarised_ACTIVITY, 15.0), lambda r: float(r["angDist"])) + discs = [(num(r["_RA"]), num(r["_DE"])) for r in polarised_tap_all(polarised_DEBRIS[0])] + discs += [(num(r["RAJ2000"]), num(r["DEJ2000"])) for r in polarised_tap_all(polarised_DEBRIS[1], "Ex = 'e'")] + debris = {s["id"] for s in stars for ra, de in discs if ra is not None and polarised_sep_deg(s["ra"], s["dec"], ra, de) * 3600 < 30} + planets = core.tap("exoplanets", "SELECT hostname, ra, dec, pl_name, pl_orbsmax, pl_bmassj FROM pscomppars") + for s in stars: + i = s["id"] + s["simbad"] = {k: sim[i].get(k) for k in ("main_id", "main_type", "other_types", "sp_type", "plx", "V")} if i in sim else None + s["gaia"] = {k: gaia[i].get(k) for k in ("Source", "Plx", "e_Plx", "RUWE", "Gmag", "BP-RP", "RV", "Vbroad")} if i in gaia else None + s["wise"] = {k: wise[i].get(k) for k in ("W1mag", "W2mag", "W3mag", "W4mag", "e_W3mag", "e_W4mag", "Kmag", "e_Kmag", + "ccf", "qph", "ex")} if i in wise else None + s["logrhk"] = num(act[i]["logRpHK"]) if i in act else None + s["debris_listed"] = i in debris + s["planets"] = [dict(name=p["pl_name"], a=num(p["pl_orbsmax"]), m=num(p["pl_bmassj"])) for p in planets + if num(p["ra"]) is not None and polarised_sep_deg(s["ra"], s["dec"], float(p["ra"]), float(p["dec"])) * 3600 < 30] + json.dump(stars, open(os.path.join(polarised_ROOT, "stars.json"), "w"), indent=1) + print("%d measurements of %d stars; SIMBAD %d, Gaia %d, AllWISE %d, log R'HK %d, listed debris discs %d" + % (sum(len(s["meas"]) for s in stars), len(stars), len(sim), len(gaia), len(wise), len(act), len(debris))) + + +def polarised_distance(s): + g = s.get("gaia") or {} + if num(g.get("Plx")) and num(g["Plx"]) > 0: + return 1000.0 / num(g["Plx"]) + sm = s.get("simbad") or {} + if num(sm.get("plx")) and num(sm["plx"]) > 0: + return 1000.0 / num(sm["plx"]) + ds = [m["d"] for m in s["meas"] if m["d"]] + return ds[0] if ds else None + + +def polarised_spectral_type(s): + sm = s.get("simbad") or {} + return (sm.get("sp_type") or s["meas"][0]["sp"] or "").strip() + + +def polarised_evolved(sp): + m = re.match(r"\s*[OBAFGKMSC][\d.]*\s*(?:[-/][OBAFGKM]?[\d.]+)?\s*((?:[IV]+)(?:[ab]+)?(?:[-/][IV]+)?)", sp) + return bool(m) and re.match(r"[IV]+", m.group(1)).group(0) in ("I", "II", "III") + + +def polarised_photosphere_kw4(sp): + return {"F": 0.05, "G": 0.06, "K": 0.12, "M": 0.30}.get(sp[:1], 0.05) + + +def polarised_ir_excess(s, sp): + w = s.get("wise") + if not w: + return None + q, c = str(w.get("qph") or "UUUU"), str(w.get("ccf") or "0000") + w3, w4, e3, e4 = (num(w.get(k)) for k in ("W3mag", "W4mag", "e_W3mag", "e_W4mag")) + k, ek = num(w.get("Kmag")), num(w.get("e_Kmag")) + if w4 is None or q[3] not in "AB" or c[3] != "0": + return None + if w3 is not None and e3 and e4 and q[2] in "AB" and c[2] == "0": + x = w3 - w4 + if x > 0.1 and x > 3 * math.hypot(e3, e4): + return "W3-W4 %.2f" % x + if k is not None and ek and e4: + x = k - w4 - polarised_photosphere_kw4(sp) + if x > 0.1 and x > 3 * math.hypot(ek, e4): + return "Ks-W4 %.2f above the photosphere" % x + return None + + +def polarised_explanations(s, high_refs=()): + sp = polarised_spectral_type(s) + sm = s.get("simbad") or {} + types = set((sm.get("other_types") or "").split("|")) | {sm.get("otype") or ""} + why = [] + b = polarised_best(s) + if b.get("ref") in high_refs: + why.append("source catalogue reads high (Heiles pattern %s)" % b["ref"]) + if s.get("d") and s["p"] - 3 * s["e"] <= polarised_ISM_BOUND * s["d"]: + why.append("within the interstellar bound (%.1f ppm/pc)" % polarised_ISM_BOUND) + if s.get("l") is not None and polarised_LLCC["l"][0] <= s["l"] <= polarised_LLCC["l"][1] and polarised_LLCC["b"][0] <= s["b"] <= polarised_LLCC["b"][1] \ + and s["d"] > polarised_LLCC["d_min"]: + why.append("behind the Local Leo Cold Cloud") + if "+" in sp: + why.append("companion (composite spectrum %s)" % sp) + ir = polarised_ir_excess(s, sp) + if s["debris_listed"]: + why.append("listed debris disc") + if ir: + why.append("infrared excess (%s)" % ir) + if s["logrhk"] is not None and s["logrhk"] > -4.75: + why.append("active (log R'HK %.2f)" % s["logrhk"]) + if types & polarised_ACTIVE_TYPES: + why.append("active (%s)" % ",".join(sorted(types & polarised_ACTIVE_TYPES))) + ruwe = num((s.get("gaia") or {}).get("RUWE")) + if ruwe and ruwe > 1.4: + why.append("companion (RUWE %.1f)" % ruwe) + if types & polarised_BINARY_TYPES: + why.append("companion (%s)" % ",".join(sorted(types & polarised_BINARY_TYPES))) + if polarised_evolved(sp): + why.append("evolved (%s)" % sp) + if types & polarised_DUSTY_TYPES: + why.append("emission, peculiar or dusty type (%s)" % ",".join(sorted(types & polarised_DUSTY_TYPES))) + if sp[:1] in "OBA": + why.append("early type (%s)" % sp) + hj = [p for p in s["planets"] if p["a"] is not None and p["a"] < 0.1] + if hj: + why.append("close planet (%s)" % ", ".join(p["name"] for p in hj)) + return why + + +def polarised_debiased(p, e): + return math.sqrt(max(p * p - e * e, 0.0)) + + +def polarised_best(s): + return min(s["meas"], key=lambda m: m["e"]) + + +def polarised_high_references(stars): + """Heiles source patterns reading high within 50 pc.""" + by = {} + for s in stars: + for m in s["meas"]: + if m.get("ref") and m["d"] and m["d"] <= 50.0: + by.setdefault(m["ref"], []).append((m["p"], m["e"])) + out = {} + for ref, v in by.items(): + if len(v) >= 8: + mp, me = float(np.median([x[0] for x in v])), float(np.median([x[1] for x in v])) + if mp > polarised_REF_HIGH and mp > 2 * me: + out[ref] = (len(v), mp, me) + return out + + +def polarised_galactic(ra, dec): + from astropy.coordinates import SkyCoord + g = SkyCoord(ra=ra, dec=dec, unit="deg").galactic + return float(g.l.deg), float(g.b.deg) + + +def polarised_variability(stars, high_refs): + """Chi-square of nightly q and u (Piirola Table 11) with the 205-star trial factor.""" + from scipy.stats import chi2 + by = {} + for s in stars: + for m in s["meas"]: + if m["name"].startswith("HD "): + by[m["name"][3:].strip()] = s + out = [] + for hd, ms in polarised_VARIABLE.items(): + c = 0.0 + for k in (0, 1): + w = np.array([1.0 / m[2] ** 2 for m in ms]) + x = np.array([m[k] for m in ms], float) + c += float(np.sum(w * (x - np.sum(w * x) / np.sum(w)) ** 2)) + dof = 2 * (len(ms) - 1) + p = float(chi2.sf(c, dof)) + s = by.get(hd) + why = [w for w in polarised_explanations(s, high_refs) if not w.startswith("within the interstellar")] if s else [] + amp = max(math.hypot(a[0] - b[0], a[1] - b[1]) for a in ms for b in ms) + out.append(dict(hd=hd, nights=len(ms), chi2=c, dof=dof, p=p, p_trials=min(1.0, p * polarised_T60_STARS), swing_ppm=amp, + why=why, d=s.get("d") if s else None, sp=polarised_spectral_type(s) if s else "")) + return out + + +def polarised_analyse(): + stars = json.load(open(os.path.join(polarised_ROOT, "stars.json"))) + for s in stars: + s["d"] = polarised_distance(s) + b = polarised_best(s) + s["p"], s["e"], s["pa"], s["src"] = b["p"], b["e"], b["pa"], b["src"] + s["pdb"] = polarised_debiased(b["p"], b["e"]) + s["l"], s["b"] = polarised_galactic(s["ra"], s["dec"]) + s["old_single"] = b["src"] == "Heiles" and not any(m["src"] != "Heiles" for m in s["meas"]) + high_refs = polarised_high_references(stars) + print("Heiles source patterns reading high within 50 pc: " + "; ".join( + "%s (%d stars, median %.0f ppm, error %.0f)" % (r, *v) for r, v in high_refs.items())) + stars = [s for s in stars if s["d"] and s["d"] <= 50.0] + ref = [s for s in stars if s["src"] != "Heiles" and s["e"] <= 30] + ra = np.radians([s["ra"] for s in ref]) + de = np.radians([s["dec"] for s in ref]) + for s in stars: + a, d = math.radians(s["ra"]), math.radians(s["dec"]) + cs = np.sin(d) * np.sin(de) + np.cos(d) * np.cos(de) * np.cos(ra - a) + sep = np.degrees(np.arccos(np.clip(cs, -1, 1))) + for radius in (35.0, 45.0, 60.0): + nb = [j for j in np.where(sep <= radius)[0] if ref[j]["id"] != s["id"]] + if len(nb) >= 5: + break + v = np.array([ref[j]["pdb"] * min(max(s["d"] / ref[j]["d"], 0.2), 5.0) for j in nb]) + s["ism"] = float(np.median(v)) + s["ism_sd"] = float(1.4826 * np.median(np.abs(v - np.median(v)))) + s["n_nb"] = len(nb) + w = np.array([ref[j]["pdb"] / ref[j]["e"] for j in nb]) + th = np.radians([2 * (ref[j]["pa"] or 0.0) for j in nb]) + s["ism_pa"] = float(np.degrees(math.atan2(np.sum(w * np.sin(th)), np.sum(w * np.cos(th)))) / 2) % 180 + s["z"] = (s["pdb"] - s["ism"]) / math.hypot(s["e"], s["ism_sd"]) + s["why"] = polarised_explanations(s, high_refs) + dpa = abs(((s["pa"] or 0.0) - s["ism_pa"] + 90) % 180 - 90) + if s["src"] != "Heiles" and dpa <= polarised_PA_ALIGNED: + s["why"].append("aligned with the interstellar field (%.0f deg)" % dpa) + beyond = [s for s in stars if s["z"] >= 3 and s["p"] >= 4 * s["e"]] + left = sorted([s for s in beyond if not s["why"]], key=lambda s: (s["old_single"], -s["z"])) + print("%d stars within 50 pc with polarimetry (%d in the ppm-level samples); %d polarised beyond the interstellar " + "expectation; %d of them unexplained, %d of those resting on one photoelectric measurement from Heiles' " + "compilation" % (len(stars), len(ref), len(beyond), len(left), sum(s["old_single"] for s in left))) + counts = {} + for s in beyond: + for w in s["why"]: + k = w.split(" (")[0] + counts[k] = counts.get(k, 0) + 1 + print("explanations among them: " + ", ".join("%s %d" % kv for kv in sorted(counts.items(), key=lambda kv: -kv[1]))) + for s in left: + sm = s.get("simbad") or {} + dpa = abs(((s["pa"] or 0) - s["ism_pa"] + 90) % 180 - 90) + print(" %-22s %-10s d %5.1f pc: p %7.1f +- %5.1f ppm (%s), interstellar %6.1f +- %5.1f (%d neighbours), z %5.1f, " + "PA %5.1f vs %5.1f (diff %4.1f); other measurements: %s" + % ((sm.get("main_id") or s["meas"][0]["name"])[:22], polarised_spectral_type(s)[:10], s["d"], s["p"], s["e"], s["src"], + s["ism"], s["ism_sd"], s["n_nb"], s["z"], s["pa"] or 0, s["ism_pa"], dpa, + "; ".join("%s %.0f+-%.0f" % (m["src"], m["p"], m["e"]) for m in s["meas"][1:]) or "none")) + var = polarised_variability(stars, high_refs) + print("night-to-night changes (Piirola et al. 2020 Table 11, %d stars observed at T60): %d of %d without a known cause" + % (polarised_T60_STARS, sum(not v["why"] for v in var), len(var))) + for v in sorted(var, key=lambda v: v["p"]): + print(" HD %-7s %-12s %s: %d nights, chi2 %.1f/%d, p %.1e (%.2f after %d trials), largest swing %.0f ppm; %s" + % (v["hd"], v["sp"][:12], "%.1f pc" % v["d"] if v["d"] else "-", v["nights"], v["chi2"], v["dof"], v["p"], + v["p_trials"], polarised_T60_STARS, v["swing_ppm"], "; ".join(v["why"]) or "no known cause")) + json.dump(stars, open(os.path.join(polarised_HERE, "polarised.json"), "w"), indent=1) + json.dump(var, open(os.path.join(polarised_HERE, "polarised_variable.json"), "w"), indent=1) + + +# follow-up of unexplained stars, appended to their notes +polarised_FOLLOWUP = { + "gaia_dr3:5224975398040550400": ( + "HD 101805, one night's BVR: B 314 +- 18, V 188 +- 19, R 172 +- 19 ppm at 6.6-10.8 deg (Piirola et al. 2020 " + "Table 9), whose authors read circumstellar small particles; a Serkowski curve fits only with lambda_max 0.245 um " + "and K 1.15 (p 0.05) and fails with K tied to lambda_max (chi2 15.4 for 1 dof), bluer than the 350 +- 50 nm of " + "Local Hot Bubble dust (Cotton et al. 2019), while a grey 122 ppm plus 188 ppm in lambda^-4 fits (chi2 0.9); the " + "nine stars measured at the ppm level nearer than 35 pc within 22 deg read 12-45 ppm, five of them at 72-88 deg: " + "I Car (HD 90589, 16 pc, 5.2 deg away) 17 +- 5 ppm at 88 deg and eta Cru (HD 105211, 20 pc, 10.8 deg) 17-21 ppm " + "at 72-79 deg (HIPPI; Marshall et al. 2023, Cotton et al. 2017), beta Car (HD 80007, 34.7 pc, 12.2 deg) 24 +- 3 " + "ppm at 74 deg (HIPPI; Cotton et al. 2016), HD 77370 (26 pc, 21.7 deg) 36 +- 6 at 86 deg and HD 44447 (32 pc, " + "21.6 deg) 24 +- 9 at 88 deg (Piirola et al. 2020); HD 93372 (32 pc, 4.9 deg) reads 22 +- 12 ppm at 172 +- 19 " + "deg, HD 71243 (19.5 pc, 12 deg) 43 +- 14 at 22 +- 10, gamma Cru (27 pc, 18.7 deg) 45 +- 4 at 122 and HD 43834 " + "(10 pc, 19.8 deg) 12 +- 8 at 114; the heliospheric field (IBEX ribbon centre, Frisch et al. 2015 fit) projects " + "to 50-58 deg here; a screen in front of HD 101805 would have to end within 2.7 pc of its sightline (HD 93372) " + "and carry a field turned 63-79 deg from its surroundings'; the angles near 0 deg are alpha Mus (97 pc, 7.4 deg, " + "146 +- 4 ppm at 0.7 deg, a B2 star whose polarisation Cotton et al. 2016 judge possibly intrinsic), HD 101132 " + "(44 pc, 0.7 deg, 150 +- 80 ppm at 168 deg) and Gaia DR2 5860952474301981568 (49 pc, 10.1 deg, 1100 +- 300 ppm " + "at 12 deg, photoelectric); beyond 100 pc the Chamaeleon clouds hold their field at 100-140 deg (Panopoulou et " + "al. 2025 compilation); no excess in WISE W3/W4, AKARI 9 um or IRAS 12/25 um; SCANPI 60 um sigma 65 mJy and " + "AKARI 90 um below 0.28 Jy (3 sigma) cap dust at L/L* < 2e-4 for 30-60 K and < 1e-4 at 80 K, while 223 ppm " + "needs (4.5-22)e-4 of the light scattered; hot dust polarises its star by 30 ppm or less, more in the red " + "(Marshall et al. 2016); the 5.4 arcsec common-proper-motion companion Gaia DR3 5224975398034733952 (G 14.7, " + "the eROSITA source 1eRASS J114216.8-751341) gives 0.05 per cent of the light; Gaia DR3 FLAME age 3.9 " + "(3.2-4.5) Gyr, 1.17 solar masses, constant radial velocity (-7.24 +- 0.13 km/s, p 0.53 over 14 transits); " + "TESS 2-min sectors 11-65: 60-200 ppm variability at 4-11 d and no exocomet-shaped dip beyond the same-shaped " + "brightenings; 20-s sectors 64-65: 28 single-cadence flashes in 1250 h against 21.8 at the survey's rate; " + "Stromgren twins within 25 pc put E(b-y) at 0.003-0.006 against a fit scatter of 0.012; no public " + "high-resolution spectrum (ESO, NOIRLab, MAST); Gemini/GHOST spectra of 2026 July 12 (GS-2026B-Q-134), public " + "from 2027 July 12, measure the Na I D and Ca II H and K columns in front of it; Marshall et al. 2023 adopt it " + "as an interstellar control for eta Cru"), +} + + +def polarised_record(): + stars = json.load(open(os.path.join(polarised_HERE, "polarised.json"))) + var = {v["hd"]: v for v in json.load(open(os.path.join(polarised_HERE, "polarised_variable.json")))} + rows = [] + for s in stars: + g = (s.get("gaia") or {}).get("Source") + sm = (s.get("simbad") or {}).get("main_id") + target = ("gaia_dr3:" + g) if g else ("simbad:" + " ".join(sm.split())) if sm else None + if not target: + continue + beyond = s["z"] >= 3 and s["p"] >= 4 * s["e"] + note = "p %.1f +- %.1f ppm (%s), interstellar %.1f" % (s["p"], s["e"], s["src"], s["ism"]) + hd = [m["name"][3:].strip() for m in s["meas"] if m["name"].startswith("HD ") and m["name"][3:].strip() in var] + if hd: + v = var[hd[0]] + note += "; night-to-night q,u changes over %d nights, p %.1e (%.2f after %d trials)" % ( + v["nights"], v["p"], v["p_trials"], polarised_T60_STARS) + if target in polarised_FOLLOWUP: + note += "; " + polarised_FOLLOWUP[target] + rows.append(dict(target=target, stat=s["z"], upper_limit=s["p"] + 3 * s["e"], unit="ppm, 3-sigma bound on p", + vet="; ".join(s["why"]) if beyond and s["why"] else None, note=note)) + left = [s for s in stars if s["z"] >= 3 and s["p"] >= 4 * s["e"] and not s["why"]] + core.record_search("polarised_reflectors", "Polarised reflectors", + archive="VizieR (Piirola+ 2020, Bailey+ 2010, Heiles 2000) with SIMBAD, Gaia DR3, AllWISE", + release="catalogues as published", selection="stars within 50 pc with linear polarimetry", + code=os.path.abspath(__file__), entry="polarised", params=dict(z=3, snr=4, radius_deg=35, merge_arcsec=polarised_MERGE_ARCSEC), + n_targets=len(rows), result="%d polarised beyond the interstellar expectation with no " + "dust, activity, companion, evolution or early type" % len(left), + ledger="Polarised reflectors") + core.record_targets("polarised_reflectors", rows) + print("recorded %d stars" % len(rows)) + + +def polarised_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "record")) + a = p.parse_args() + {"fetch": polarised_fetch, "analyse": polarised_analyse, "record": polarised_record}[a.mode]() + + +def polarised_cli(): + quiet_warnings() + polarised_main() + + +# -------------------------------------------------------------------------------------------------------------- + +beams_DOC = r"""Antipodal nearby-star pairs within 20 pc whose mutual beams (0.25 deg or narrower) cover Earth, against randomised directions. + + python -I seti.py neighbourhood beams + python -I seti.py neighbourhood beams record""" + +beams_WIDTH = 0.25 # deg, widest beam counted + + +def beams_stars(): + rows = core.gaia("SELECT source_id, ra, dec, parallax, pmra, pmdec, phot_g_mean_mag FROM gaiadr3.gaia_source " + "WHERE parallax > 50 AND parallax_over_error > 10") + stars = [dict(id="gaia_dr3:%s" % r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), d=1000.0 / float(r["parallax"]), + pmra=float(r["pmra"] or 0), pmdec=float(r["pmdec"] or 0), mag=float(r["phot_g_mean_mag"] or 99)) + for r in rows] + have = {str(r["original_ext_source_id"]) for r in core.gaia( + "SELECT h.original_ext_source_id FROM gaiadr3.hipparcos2_best_neighbour AS h JOIN gaiadr3.gaia_source AS g " + "ON g.source_id = h.source_id WHERE g.parallax > 40")} + from astroquery.vizier import Vizier + hip = Vizier(columns=["HIP", "RArad", "DErad", "Plx", "e_Plx", "pmRA", "pmDE", "Hpmag"], row_limit=-1, + column_filters={"Plx": ">50"}, timeout=300).get_catalogs("I/311/hip2")[0] + from scipy.spatial import cKDTree + gra, gde = np.radians([s["ra"] for s in stars]), np.radians([s["dec"] for s in stars]) + tree = cKDTree(np.vstack([np.cos(gde) * np.cos(gra), np.cos(gde) * np.sin(gra), np.sin(gde)]).T) + for r in hip: + if str(int(r["HIP"])) in have or not float(r["Plx"]) > 10 * float(r["e_Plx"]): + continue + # Hipparcos stars carried to 2016.0; one within 10 arcsec of a Gaia source is that source + dec = float(r["DErad"]) + float(r["pmDE"]) / 3.6e6 * 24.75 + ra = float(r["RArad"]) + float(r["pmRA"]) / 3.6e6 * 24.75 / math.cos(math.radians(dec)) + v = [math.cos(math.radians(dec)) * math.cos(math.radians(ra)), math.cos(math.radians(dec)) * math.sin(math.radians(ra)), + math.sin(math.radians(dec))] + if tree.query_ball_point(v, 2 * math.sin(math.radians(10 / 3600.0) / 2)): + continue + stars.append(dict(id="hip:%d" % int(r["HIP"]), ra=ra, dec=dec, d=1000.0 / float(r["Plx"]), + pmra=float(r["pmRA"]), pmdec=float(r["pmDE"]), mag=float(r["Hpmag"]))) + return stars + + +def beams_pairs(stars, u, limit_deg=2.0): + """Pairs missing opposition by under limit_deg, with the beam widths covering Earth.""" + from scipy.spatial import cKDTree + tree = cKDTree(u) + chord = 2 * math.sin(math.radians(limit_deg) / 2) + out = [] + for i, js in enumerate(tree.query_ball_point(-u, chord)): + for j in js: + if j <= i: + continue + e = math.degrees(math.acos(max(-1.0, min(1.0, -float(np.dot(u[i], u[j])))))) + dA, dB = stars[i]["d"], stars[j]["d"] + out.append((i, j, e, 2 * e * dB / (dA + dB), 2 * e * dA / (dA + dB))) + return out + + +def beams_main(): + stars = beams_stars() + ra, de = np.radians([s["ra"] for s in stars]), np.radians([s["dec"] for s in stars]) + u = np.vstack([np.cos(de) * np.cos(ra), np.cos(de) * np.sin(ra), np.sin(de)]).T + pairs = beams_pairs(stars, u) + keep = [p for p in pairs if min(p[3], p[4]) <= beams_WIDTH] + rng = np.random.default_rng(11) + null = [] + for _ in range(200): + v = rng.normal(size=u.shape) + v /= np.linalg.norm(v, axis=1)[:, None] + null.append(sum(1 for p in beams_pairs(stars, v) if min(p[3], p[4]) <= beams_WIDTH)) + print("%d stars within 20 pc; %d pairs a beam of %.2f deg or narrower covers, against %.1f +- %.1f with directions " + "randomised" % (len(stars), len(keep), beams_WIDTH, np.mean(null), np.std(null)), flush=True) + db = sqlite3.connect(core.COVERAGE) if os.path.exists(getattr(core, "COVERAGE", "")) else None + out = [] + for i, j, e, wA, wB in sorted(keep, key=lambda p: min(p[3], p[4])): + rec = dict(e_deg=e, width_from_a=wA, width_from_b=wB, members=[]) + # alignment drift over a century from both proper motions + mu = math.hypot((stars[i]["pmra"] + stars[j]["pmra"]), (stars[i]["pmdec"] + stars[j]["pmdec"])) / 3.6e6 * 100 + rec["drift_deg_per_century"] = mu + for k in (i, j): + s = stars[k] + name = s["id"] + if s["id"].startswith("gaia_dr3:"): + sb = core.simbad("SELECT b.main_id, b.otype, b.sp_type FROM basic AS b JOIN ident AS t ON t.oidref = b.oid " + "WHERE t.id = 'Gaia DR3 %s'" % s["id"].split(":")[1]) + else: + sb = core.simbad("SELECT b.main_id, b.otype, b.sp_type FROM basic AS b JOIN ident AS t ON t.oidref = b.oid " + "WHERE t.id = 'HIP %s'" % s["id"].split(":")[1]) + if sb: + name = "%s (%s, %s)" % (sb[0]["main_id"], sb[0].get("otype"), sb[0].get("sp_type")) + runs = [r[0] for r in db.execute("SELECT DISTINCT search_id FROM coverage WHERE target = ?", (s["id"],))] if db else [] + rec["members"].append(dict(id=s["id"], name=name, d_pc=round(s["d"], 2), mag=s["mag"], runs=runs)) + out.append(rec) + a, b = rec["members"] + print(" %s (%.1f pc) and %s (%.1f pc): %.3f deg from opposition; beam %.3f deg from the first, %.3f from the second; " + "drift %.2f deg/century; searched %s / %s" % (a["name"], a["d_pc"], b["name"], b["d_pc"], e, wA, wB, + mu, ",".join(a["runs"]) or "nothing", ",".join(b["runs"]) or "nothing"), + flush=True) + json.dump(dict(n_stars=len(stars), null=[float(np.mean(null)), float(np.std(null))], pairs=out), + open(core.results("beam_pairs.json"), "w"), indent=1) + + +def beams_record(): + d = json.load(open(core.results("beam_pairs.json"))) + core.record_search( + "beam_pairs_20pc", "Beams between stars", archive="Gaia DR3; Hipparcos (I/311)", + selection="stars within 20 pc at 10 sigma in parallax", code=os.path.abspath(__file__), entry="beams", + n_targets=d["n_stars"], params=dict(width_deg=beams_WIDTH), + null_summary="the same stars with randomised directions: %.1f +- %.1f pairs" % tuple(d["null"]), + ledger="Beams between stars", + result="%d pairs a beam of %.2f deg or narrower would cover, against %.1f +- %.1f by chance; the sightlines list " + "for radio follow-up in the archives" % (len(d["pairs"]), beams_WIDTH, d["null"][0], d["null"][1])) + rows = [] + for p in d["pairs"]: + for k, m in enumerate(p["members"]): + other = p["members"][1 - k] + rows.append(dict(target=m["id"], stat=min(p["width_from_a"], p["width_from_b"]), + unit="full beam width (deg) that carries the pair's traffic across Earth", + note="opposite %s at %.1f pc, %.3f deg from opposition; drift %.2f deg/century" + % (other["name"], other["d_pc"], p["e_deg"], p["drift_deg_per_century"]))) + core.clear_targets("beam_pairs_20pc") + core.record_targets("beam_pairs_20pc", rows) + print("recorded %d pair members" % len(rows)) + + +def beams_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + beams_record() + else: + beams_main() + + +# -------------------------------------------------------------------------------------------------------------- + +joint_DOC = r"""Joint anomaly: rank-uniform p values per run, Sidak-combined by family, Fisher-combined across families, against family-shuffled nulls. + + python -I seti.py neighbourhood joint + python -I seti.py neighbourhood joint record""" + +joint_FAMILIES = (("elements", ("technetium_", "promethium_", "protactinium_", "plutonium_", "americium_", "curium_")), + ("glints", ("tess20_glints", "kepler_sc_glints", "tess_toi_glints", "alcdef_glints")), + ("photon_pulses", ("galex_nuv_pulses", "galex_fuv_pulses", "hst_photon_pulses")), + ("xray_periods", ("xray_beacons_",)), + ("radio_frames", ("bl_rest_frame_tracks", "bl_planet_frame")), + ("neutrinos", ("icecube_",)), + ("lpt", ("lpt_gaia",))) + + +def joint_family(run): + for fam, prefixes in joint_FAMILIES: + if any(run.startswith(p) for p in prefixes): + return fam + return run + + +def joint_main(draws=2000, seed=5): + db = sqlite3.connect(core.COVERAGE) + rows = db.execute("SELECT search_id, target, p FROM coverage WHERE p IS NOT NULL").fetchall() + rng = np.random.default_rng(seed) + runs = {} + for s_, t, p in rows: + runs.setdefault(s_, []).append((t, float(p))) + fam = {} + for s_, lst in runs.items(): + ps = np.array([p for _, p in lst]) + order = np.lexsort((rng.random(len(ps)), ps)) + rank = np.empty(len(ps)) + rank[order] = (np.arange(len(ps)) + 1) / (len(ps) + 1) + for (t, _), r in zip(lst, rank): + fam.setdefault(joint_family(s_), {}).setdefault(t, []).append(r) + fp = {f: {t: 1 - (1 - min(v)) ** len(v) for t, v in d.items()} for f, d in fam.items()} + targets = sorted({t for d in fp.values() for t in d}) + multi = [t for t in targets if sum(t in d for d in fp.values()) >= 2] + fams = sorted(fp) + print("%d runs with p values in %d families; %d targets, %d with two or more families" + % (len(runs), len(fams), len(targets), len(multi)), flush=True) + + def stat(maps): + out = {} + for t in multi: + ps = [maps[f][t] for f in fams if t in maps[f]] + out[t] = -2.0 * float(np.sum(np.log(np.clip(ps, 1e-12, 1.0)))) + return out + obs = stat(fp) + from scipy.stats import chi2 + null_sorted = [] + for _ in range(draws): + sh = {} + for f, d in fp.items(): + ks = list(d) + vs = np.array([d[k] for k in ks]) + rng.shuffle(vs) + sh[f] = dict(zip(ks, vs)) + null_sorted.append(np.sort(np.array(list(stat(sh).values())))[::-1]) + null_sorted = np.array(null_sorted) + top = sorted(obs, key=lambda t: -obs[t])[:20] + out = [] + for rank_, t in enumerate(top): + k = sum(t in fp[f] for f in fams) + p_any = float(np.mean(null_sorted[:, 0] >= obs[t])) + p_rank = float(np.mean(null_sorted[:, rank_] >= obs[t])) + parts = ", ".join("%s %.3f" % (f, fp[f][t]) for f in fams if t in fp[f]) + out.append(dict(target=t, fisher=obs[t], families=k, p_fisher=float(chi2.sf(obs[t], 2 * k)), p_any=p_any, + p_rank=p_rank, parts=parts)) + print(" %-36s Fisher %.1f over %d families (chi2 p %.1e); chance of a value this high anywhere %.3f, at " + "this rank %.3f; %s" % (t, obs[t], k, chi2.sf(obs[t], 2 * k), p_any, p_rank, parts), flush=True) + json.dump(dict(n_runs=len(runs), families=fams, n_multi=len(multi), top=out), open(core.results("joint_anomaly.json"), "w"), + indent=1) + + +def joint_record(): + d = json.load(open(core.results("joint_anomaly.json"))) + best = d["top"][0] if d["top"] else None + core.record_search( + "joint_anomaly", "Joint anomaly across methods", archive="the coverage store", + selection="targets with p values from two or more families of runs", code=os.path.abspath(__file__), entry="joint", + n_targets=d["n_multi"], params=dict(families=d["families"]), + null_summary="each family's values shuffled among its own targets", + ledger="Joint anomaly across methods", + result=("the strongest combination, %s (%s), has chance %.3f of a value this high anywhere" + % (best["target"], best["parts"], best["p_any"])) if best else "no target with two families") + core.clear_targets("joint_anomaly") + core.record_targets("joint_anomaly", [dict(target=r["target"], stat=r["fisher"], p=r["p_rank"], + unit="Fisher statistic over families", note=r["parts"]) for r in d["top"]]) + print("recorded") + + +def joint_cli(): + quiet_warnings() + if len(sys.argv) > 1 and sys.argv[1] == "record": + joint_record() + else: + joint_main() + + +# -------------------------------------------------------------------------------------------------------------- + +herded_DOC = r"""Herded stars: APOGEE dwarfs within 100 pc moving together within 1 km/s and 10 pc but differing in [Fe/H]. + + python -I seti.py neighbourhood herded [record] [--link-pc 10] [--link-kms 1] [--verr-kms 0.5] [--teff-band 600] [--spread-dex 0.2]""" + + +def herded_main(record=False, link_pc=10.0, link_kms=1.0, verr_kms=0.5, teff_band=600, spread_dex=0.2): + import csv as _csv + import urllib.parse + from astropy.coordinates import SkyCoord + import astropy.units as u + from scipy.spatial import cKDTree + p = core.data("apogee_100pc_dwarfs.csv") + if not os.path.exists(p): + q = ('SELECT "APOGEE", "RAJ2000", "DEJ2000", "plx", "e_plx", "pmRA", "e_pmRA", "pmDE", "e_pmDE", "HRV", "e_HRV", "s_HRV", ' + '"Nvis", "Teff", "logg", "[Fe/H]", "e_[Fe/H]", "f_[Fe/H]", "SNR", "GaiaEDR3", "Vsini" FROM "III/286/catalog" WHERE ' + '"plx" > 10 AND "plx"/"e_plx" > 20 AND "logg" > 3.5 AND "[Fe/H]" IS NOT NULL AND "HRV" IS NOT NULL AND "SNR" > 50') + u_ = "http://tapvizier.cds.unistra.fr/TAPVizieR/tap/sync?" + urllib.parse.urlencode( + dict(REQUEST="doQuery", LANG="ADQL", FORMAT="csv", QUERY=q, MAXREC=500000)) + b = core.get(u_, timeout=1800) + open(p, "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + best = {} + for r in _csv.DictReader(open(p, encoding="utf-8")): + g = r["GaiaEDR3"].strip() + if g and (g not in best or (num(r["SNR"]) or 0) > (num(best[g]["SNR"]) or 0)): + best[g] = r + R = [r for r in best.values() if (r["f_[Fe/H]"] or "0").strip() in ("0", "")] + + def col(k): + return np.array([num(r[k]) if num(r[k]) is not None else np.nan for r in R], float) + ra, de, plx, eplx = col("RAJ2000"), col("DEJ2000"), col("plx"), col("e_plx") + pmra, pmde, rv, erv, srv = col("pmRA"), col("pmDE"), col("HRV"), col("e_HRV"), col("s_HRV") + feh, teff = col("[Fe/H]"), col("Teff") + c = SkyCoord(ra=ra * u.deg, dec=de * u.deg, distance=(1000 / plx) * u.pc, pm_ra_cosdec=pmra * u.mas / u.yr, + pm_dec=pmde * u.mas / u.yr, radial_velocity=rv * u.km / u.s).galactic + c.representation_type = "cartesian" + c.differential_type = "cartesian" + X = np.vstack([c.u.to(u.pc).value, c.v.to(u.pc).value, c.w.to(u.pc).value]).T + V = np.vstack([c.velocity.d_x.to(u.km / u.s).value, c.velocity.d_y.to(u.km / u.s).value, c.velocity.d_z.to(u.km / u.s).value]).T + vt = 4.74047 * np.hypot(pmra, pmde) / plx + sv = np.sqrt((vt * eplx / plx) ** 2 + np.nan_to_num(erv) ** 2 + np.where(np.nan_to_num(srv) > 0.5, srv, 0) ** 2) + ok = np.isfinite(X).all(1) & np.isfinite(V).all(1) & (sv < verr_kms) + idx = np.nonzero(ok)[0] + pairs = [(idx[a], idx[b]) for a, b in cKDTree(X[idx]).query_pairs(link_pc) if np.linalg.norm(V[idx[a]] - V[idx[b]]) < link_kms] + parent = {i: i for i in idx} + + def find(a): + while parent[a] != a: + parent[a] = parent[parent[a]] + a = parent[a] + return a + for a, b in pairs: + parent[find(a)] = find(b) + groups = {} + for a, b in pairs: + for x in (a, b): + groups.setdefault(find(x), set()).add(x) + out = [] + for g in sorted((sorted(v) for v in groups.values()), key=len, reverse=True): + fe, te = feh[g], teff[g] + like, band = 0.0, None + for lo in range(3400, 7400 - int(teff_band), 100): + m = (te >= lo) & (te < lo + teff_band) + if m.sum() >= 2 and fe[m].max() - fe[m].min() > like: + like, band = float(fe[m].max() - fe[m].min()), (lo, lo + int(teff_band)) + out.append(dict(n=len(g), ids=[R[i]["APOGEE"] for i in g], gaia=[R[i]["GaiaEDR3"] for i in g], feh=[float(x) for x in fe], + teff=[float(x) for x in te], spread=float(fe.max() - fe.min()), spread_like=like, band=band, + vdisp=float(np.linalg.norm(np.std(V[g], axis=0))), size=float(np.max(np.linalg.norm(X[g] - X[g].mean(0), axis=1))))) + print("%d dwarfs, %d with 3D velocity errors below %g km/s; %d pairs within %g pc and %g km/s in %d groups, %d of 3 or more" + % (len(R), len(idx), verr_kms, len(pairs), link_pc, link_kms, len(out), sum(1 for o in out if o["n"] >= 3))) + for o in out: + if o["n"] >= 3 or o["spread_like"] > spread_dex: + print(" n %d, %.1f pc, %.2f km/s: [Fe/H] %+.2f to %+.2f; like-with-like spread %.2f in Teff %s" + % (o["n"], o["size"], o["vdisp"], min(o["feh"]), max(o["feh"]), o["spread_like"], o["band"])) + json.dump(out, open(core.results("herded_groups.json"), "w"), indent=1) + if record: + big = [o for o in out if o["spread_like"] > spread_dex] + core.record_search( + "apogee_herded_stars", "Herded stars", archive="APOGEE DR17 (VizieR III/286) with its Gaia EDR3 astrometry", + selection="%d dwarfs within 100 pc, %d with 3D velocity errors below %g km/s" % (len(R), len(idx), verr_kms), + code=os.path.abspath(__file__), entry="herded", n_targets=len(idx), + params=dict(link_pc=link_pc, link_kms=link_kms, verr_kms=verr_kms, teff_band=teff_band, spread_dex=spread_dex), + null_summary="coeval groups: the Hyades and the other co-moving groups found, whose like-with-like spreads measure " + "the pipeline's scatter", + sensitivity="a group of two or more stars within %g pc and %g km/s whose [Fe/H] differs by %g dex at like Teff" % (link_pc, link_kms, spread_dex), + ledger="Herded stars", + result="%d groups (%d of 3 or more, the largest %d members, the Hyades); like-with-like spreads above %g dex: %d, %s" + % (len(out), sum(1 for o in out if o["n"] >= 3), out[0]["n"] if out else 0, spread_dex, len(big), + "; ".join("n %d at %d-%d K, %.2f dex" % (o["n"], o["band"][0], o["band"][1], o["spread_like"]) for o in big) or "none")) + core.clear_targets("apogee_herded_stars") + core.record_targets("apogee_herded_stars", [dict( + target="gaia_dr3:%s" % g, stat=o["spread_like"], unit="like-with-like [Fe/H] spread of its group", + note="group of %d within %.1f pc and %.2f km/s" % (o["n"], o["size"], o["vdisp"])) for o in out for g in o["gaia"]]) + print("recorded") + + +intrinsic_DOC = r"""Intrinsic polarisation of quiet dwarfs within 200 pc: Stokes residuals against same-distance neighbours (Panopoulou et al. 2025) at 5 sigma and 0.1 per cent. + + python -I seti.py neighbourhood intrinsic fetch + python -I seti.py neighbourhood intrinsic analyse + python -I seti.py neighbourhood intrinsic record""" + +intrinsic_ROOT = os.environ.get("INTRINSIC_ROOT", core.data("polar_quiet")) +intrinsic_CAT = "J/ApJS/276/15" +intrinsic_OUT = "intrinsic_polarisation.json" +intrinsic_RADIUS_DEG, intrinsic_DIST_FRAC, intrinsic_NMIN = 3.0, 0.2, 5 +intrinsic_PMIN, intrinsic_Z, intrinsic_ANGLE, intrinsic_DMAX = 0.001, 5.0, 30.0, 200.0 # fraction: 0.001 is 0.1 per cent +intrinsic_SYS = 0.001 # allowed inter-catalogue zero-point difference +# catalogue and SIMBAD findings per candidate; cloud-survey stars carry the cloud's polarisation +intrinsic_EXPLAINED = { + 6010997328529547904: "HD 142832, F3V at 158 pc in the Lupus 1 field of Alves and Franco (2006), at the cloud's distance, so the cloud's dust polarises it and not its nearer neighbours", + 4687221887455439616: "Dachs SMC 2-61, G5V at 134 pc with RUWE 8.9 and an X-ray counterpart, measured in a crowded SMC field (Lobo Gomes et al. 2015): a binary or a blend", +} +intrinsic_OPEN = { + 154235505416809344: "HD 31435, F9/G0 at 100 pc, 8-9 Gyr old at the turnoff: 5.48 +- 0.15 per cent at 47 deg in Johnson V on the Lowell 42-inch in 1977 November, listed by " + "name in Table 2 of Moneti et al. (1984), whose other 93 stars of that run read below 0.4 per cent within 130 pc and rise with reddening beyond; " + "no other polarimetry of the star exists in 135 VizieR catalogues; Gaia gives E(BP-RP) 0.00 and B-V 0.565 against an intrinsic 0.58, so an interstellar " + "origin needs ten times the dust in front of it; WISE sees the photosphere to 22 um, TESS, K2 and Hipparcos are flat to 0.03 per cent, RUWE 0.99 and the " + "proper-motion anomaly of 20 +- 32 m/s allow no companion, and the Harvard plates show no dimming around 1977 against matched stars on the same plates; " + "the angle matches the field's 46-66 deg behind the cloud, and HD 283904, a reddened A2 star of the same brightness 5 arcmin away at 214 pc with A_G 1.3, " + "would read near that value; Planck's 353 GHz polarisation at the position predicts 49-54 deg for starlight behind the column against the measured 47, " + "and 2.3-2.8 per cent for its amount, half the measured value; the star's Gaia XP spectrum against 40 unreddened twins is flat to 0.3 per cent from " + "400 to 700 nm, which leaves only a grey reflector, and Pan-STARRS profiles against stars of like brightness show no excess light at 2-13 arcsec, so with " + "WISE inside 10 AU and Gaia's image statistics between, a reflector has no distance left; a wrong star in 1977 on an efficiently polarising sightline; " + "one new measurement of both stars decides", + 6286369839598558592: "HD 127769, A7V at 186 pc: 1.3 per cent at 43 deg in the Heiles (2000) compilation against the field's 0.4 per cent at 87 deg; one modern measurement decides", +} + + +def intrinsic_fetch(): + from astropy.table import Table + os.makedirs(intrinsic_ROOT, exist_ok=True) + p = os.path.join(intrinsic_ROOT, "panopoulou_extended.ecsv") + if not os.path.exists(p): + t = core.vizier(intrinsic_CAT + "/table4")[0] + t.write(p, format="ascii.ecsv", overwrite=True) + t = Table.read(p, format="ascii.ecsv") + # Gaia DR3 photometry, parallax and RUWE via XMatch, keeping the matching identifier + seen, rows = set(), [] + for r in t: + sid = int(r["GaiaEDR3"]) if r["GaiaEDR3"] == r["GaiaEDR3"] else 0 + if sid > 0 and sid not in seen and r["RAJ2000"] == r["RAJ2000"]: + seen.add(sid) + rows.append(dict(source_id=sid, ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]))) + keep = {} + for k in range(0, len(rows), 15000): + for m in core.xmatch(rows[k:k + 15000], "I/355/gaiadr3", 2.0, id_col="source_id", ra_col="ra", dec_col="dec", timeout=900): + sid = int(m["source_id"]) + same = str(m.get("Source")) == str(sid) + if sid not in keep or (same and str(keep[sid].get("Source")) != str(sid)) or (not same and str(keep[sid].get("Source")) != str(sid) and float(m["angDist"]) < float(keep[sid]["angDist"])): + keep[sid] = m + cols = [c for c in ("source_id", "angDist", "Source", "Plx", "e_Plx", "pmRA", "pmDE", "Gmag", "BP-RP", "RUWE", "RV", "Teff", "logg") if keep and c in next(iter(keep.values()))] + with open(os.path.join(intrinsic_ROOT, "gaia_xmatch.csv"), "w", newline="", encoding="utf-8") as f: + w = csv.DictWriter(f, fieldnames=cols, extrasaction="ignore") + w.writeheader() + w.writerows(keep.values()) + print("%d stars, Gaia DR3 rows for %d, %d with the same identifier" % (len(rows), len(keep), sum(1 for s, m in keep.items() if str(m.get("Source")) == str(s)))) + + +def intrinsic_stars(): + """One row per star: weighted q, u with errors, position, distance, G, flag, Gaia colour, M_G and RUWE.""" + from astropy.table import Table + t = Table.read(os.path.join(intrinsic_ROOT, "panopoulou_extended.ecsv"), format="ascii.ecsv") + gaia = {} + gp = os.path.join(intrinsic_ROOT, "gaia_xmatch.csv") + if os.path.exists(gp): + for r in csv.DictReader(open(gp)): + gaia[int(r["source_id"])] = dict(parallax=r["Plx"], bp_rp=r["BP-RP"], phot_g_mean_mag=r["Gmag"], ruwe=r["RUWE"], same=str(r["Source"]) == str(r["source_id"])) + acc = {} + for r in t: + sid = int(r["GaiaEDR3"]) if r["GaiaEDR3"] == r["GaiaEDR3"] else 0 + q, u, eq, eu, d = (float(r[k]) if r[k] == r[k] else None for k in ("q", "u", "e_q", "e_u", "rpgeo")) + if sid <= 0 or q is None or u is None or not eq or not eu or eq <= 0 or eu <= 0 or not d or d <= 0: + continue + a = acc.setdefault(sid, dict(gaia=sid, ra=float(r["RAGdeg"]) if r["RAGdeg"] == r["RAGdeg"] else float(r["RAJ2000"]), + dec=float(r["DEGdeg"]) if r["DEGdeg"] == r["DEGdeg"] else float(r["DEJ2000"]), d=d, + G=float(r["Gmag"]) if r["Gmag"] == r["Gmag"] else None, name=str(r["Name"]) if r["Name"] == r["Name"] else "", + flagged=False, sq=0.0, su=0.0, wq=0.0, wu=0.0, n=0, refs=set())) + if str(r["IntrPol"]) == "1": + a["flagged"] = True + a["refs"].add(int(r["RefID"])) + a["sq"] += q / eq ** 2 + a["wq"] += 1 / eq ** 2 + a["su"] += u / eu ** 2 + a["wu"] += 1 / eu ** 2 + a["n"] += 1 + stars = [] + for a in acc.values(): + a["q"], a["u"] = a["sq"] / a["wq"], a["su"] / a["wu"] + a["eq"], a["eu"] = 1 / math.sqrt(a["wq"]), 1 / math.sqrt(a["wu"]) + g = gaia.get(a["gaia"]) + if g and num(g["parallax"]) and num(g["parallax"]) > 0 and num(g["bp_rp"]) is not None and num(g["phot_g_mean_mag"]) is not None: + a["bprp"] = num(g["bp_rp"]) + a["MG"] = num(g["phot_g_mean_mag"]) + 5 * math.log10(num(g["parallax"])) - 10 + a["ruwe"] = num(g["ruwe"]) + # main sequence M_G = 1.7 + 3.6 (BP-RP), F5 to M3 + a["dwarf"] = 0.4 < a["bprp"] < 3.2 and abs(a["MG"] - (1.7 + 3.6 * a["bprp"])) < 1.2 + else: + a["bprp"], a["MG"], a["ruwe"], a["dwarf"] = None, None, None, None + for k in ("sq", "su", "wq", "wu"): + del a[k] + a["refs"] = sorted(a["refs"]) + stars.append(a) + return stars + + +def intrinsic_residuals(stars, shuffle=None): + """Residual Stokes vector against neighbours; with shuffle, a random neighbour's values stand in.""" + from scipy.spatial import cKDTree + ok = [s for s in stars if not s["flagged"]] + a = np.radians([[s["ra"], s["dec"]] for s in ok]) + xyz = np.column_stack([np.cos(a[:, 1]) * np.cos(a[:, 0]), np.cos(a[:, 1]) * np.sin(a[:, 0]), np.sin(a[:, 1])]) + tree = cKDTree(xyz) + chord = 2 * math.sin(math.radians(intrinsic_RADIUS_DEG) / 2) + d = np.array([s["d"] for s in ok]) + q = np.array([s["q"] for s in ok]) + u = np.array([s["u"] for s in ok]) + eq = np.array([s["eq"] for s in ok]) + eu = np.array([s["eu"] for s in ok]) + refs = [set(s["refs"]) for s in ok] + out = {} + for i, s in enumerate(ok): + nb = [j for j in tree.query_ball_point(xyz[i], chord) if j != i and abs(d[j] - d[i]) <= intrinsic_DIST_FRAC * d[i]] + if len(nb) < intrinsic_NMIN: + continue + # neighbours from the star's own catalogues when enough + same = [j for j in nb if refs[j] & refs[i]] + within = len(same) >= intrinsic_NMIN + nb = np.array(same if within else nb) + sys2 = 0.0 if within else intrinsic_SYS ** 2 + wq, wu = 1 / (eq[nb] ** 2 + sys2 + 0.0001 ** 2), 1 / (eu[nb] ** 2 + sys2 + 0.0001 ** 2) + mq, mu = float(np.sum(wq * q[nb]) / wq.sum()), float(np.sum(wu * u[nb]) / wu.sum()) + sq = float(math.sqrt(np.sum(wq * (q[nb] - mq) ** 2) / wq.sum())) + su = float(math.sqrt(np.sum(wu * (u[nb] - mu) ** 2) / wu.sum())) + if shuffle is not None: + j = int(shuffle.choice(nb)) + qi, ui, eqi, eui = q[j], u[j], eq[j], eu[j] + else: + qi, ui, eqi, eui = q[i], u[i], eq[i], eu[i] + dq, du = qi - mq, ui - mu + z2 = dq ** 2 / (eqi ** 2 + sys2 + sq ** 2) + du ** 2 / (eui ** 2 + sys2 + su ** 2) + p_res = math.hypot(dq, du) + ang_res = 0.5 * math.degrees(math.atan2(du, dq)) % 180 + ang_nb = 0.5 * math.degrees(math.atan2(mu, mq)) % 180 + dang = abs((ang_res - ang_nb + 90) % 180 - 90) + out[s["gaia"]] = dict(dq=float(dq), du=float(du), sq=sq, su=su, n=int(len(nb)), within=within, p_res=p_res, z=math.sqrt(z2), p_nb=math.hypot(mq, mu), + ang_res=ang_res, ang_nb=ang_nb, dang=dang) + return out + + +def intrinsic_analyse(): + stars = intrinsic_stars() + res = intrinsic_residuals(stars) + by = {s["gaia"]: s for s in stars} + z = np.array([r["z"] for r in res.values()]) + print("%d stars with measurements, %d unflagged with %d or more neighbours within %.0f deg and %.0f per cent in distance (%d judged within their own catalogues); " + "residual z: median %.2f, above 3: %d (%.4f), above 5: %d" % (len(stars), len(res), intrinsic_NMIN, intrinsic_RADIUS_DEG, 100 * intrinsic_DIST_FRAC, + sum(1 for r in res.values() if r["within"]), np.median(z), int((z > 3).sum()), float(np.mean(z > 3)), int((z > 5).sum()))) + rng = np.random.default_rng(7) + nulls = [] + for k in range(5): + rn = intrinsic_residuals(stars, shuffle=rng) + zn = np.array([r["z"] for r in rn.values()]) + nulls.append((float(np.mean(zn > 3)), float(np.mean(zn > 5)), float(np.mean([r["z"] > 3 and r["p_res"] >= intrinsic_PMIN for r in rn.values()])))) + print("measurements reassigned to random neighbours, 5 times: fraction above 3 %.4f +- %.4f, above 5 %.4f, above 3 with residual %.2f per cent or more %.4f" % ( + np.mean([n[0] for n in nulls]), np.std([n[0] for n in nulls]), np.mean([n[1] for n in nulls]), 100 * intrinsic_PMIN, np.mean([n[2] for n in nulls]))) + # residual above five times the field scatter and 0.1 per cent + cands = [] + for sid, r in res.items(): + s = by[sid] + floor = max(intrinsic_PMIN, 5 * math.hypot(r["sq"], r["su"])) + if r["z"] >= intrinsic_Z and r["p_res"] >= floor and (r["dang"] >= intrinsic_ANGLE or r["p_nb"] < floor) and s["d"] <= intrinsic_DMAX and s["dwarf"]: + cands.append(dict(s, explained=intrinsic_EXPLAINED.get(sid), open=intrinsic_OPEN.get(sid), **r)) + cands.sort(key=lambda c: -c["z"]) + print("%d candidates: dwarfs within %.0f pc at z %.0f or more with a residual above %.2f per cent and five times the field's scatter, discordant by %.0f deg or in a field below that" % ( + len(cands), intrinsic_DMAX, intrinsic_Z, 100 * intrinsic_PMIN, intrinsic_ANGLE)) + for c in cands[:80]: + print(" Gaia %s %-18s %.0f pc G %.1f BP-RP %.2f M_G %.2f RUWE %s cat %s: q %+.3f u %+.3f %% (+- %.3f, %.3f, %d meas.); %d neighbours%s q %+.3f u %+.3f %% scatter %.3f %.3f; residual %.3f%% at %.0f deg vs field %.3f%% at %.0f deg (%.0f deg apart), z %.1f" % ( + c["gaia"], c["name"][:18], c["d"], c["G"] or 0, c["bprp"], c["MG"], "%.2f" % c["ruwe"] if c["ruwe"] else "-", ",".join(str(x) for x in c["refs"]), 100 * c["q"], 100 * c["u"], 100 * c["eq"], 100 * c["eu"], + c["n_meas"] if "n_meas" in c else c["n"], c["n"], " of its own catalogues" if c["within"] else " of other catalogues", 100 * (c["q"] - c["dq"]), 100 * (c["u"] - c["du"]), 100 * c["sq"], 100 * c["su"], + 100 * c["p_res"], c["ang_res"], 100 * c["p_nb"], c["ang_nb"], c["dang"], c["z"])) + tested = [dict(gaia=sid, name=by[sid]["name"], d=by[sid]["d"], dwarf=by[sid]["dwarf"], bprp=by[sid]["bprp"], MG=by[sid]["MG"], ruwe=by[sid]["ruwe"], **r) for sid, r in res.items() if r["z"] >= 3] + json.dump(dict(n_stars=len(stars), n_tested=len(res), frac_z3=float(np.mean(z > 3)), frac_z5=float(np.mean(z > 5)), null=nulls, candidates=cands, above_3=tested, + params=dict(radius_deg=intrinsic_RADIUS_DEG, dist_frac=intrinsic_DIST_FRAC, nmin=intrinsic_NMIN, pmin=intrinsic_PMIN, z=intrinsic_Z, angle=intrinsic_ANGLE, dmax=intrinsic_DMAX)), + open(core.results(intrinsic_OUT), "w"), indent=1) + + +def intrinsic_record(): + d = json.load(open(core.results(intrinsic_OUT))) + for c in d["candidates"]: + c["explained"], c["open"] = intrinsic_EXPLAINED.get(c["gaia"]), intrinsic_OPEN.get(c["gaia"]) + core.record_search( + "intrinsic_polarisation", "Intrinsic polarisation of quiet dwarfs", archive="Panopoulou et al. (2025) compilation of optical polarisation (VizieR J/ApJS/276/15); Gaia DR3", + release="compilation as on VizieR", selection="stars with Stokes q and u, Gaia identifiers and distances, unflagged, with five or more neighbours (their own catalogues' where there are five)", + code=os.path.abspath(__file__), entry="intrinsic", n_targets=d["n_tested"], params=d["params"], + null_summary="measurements reassigned to random neighbours: fraction above z 3 %.4f, above 5 %.4f, above 3 with residual %.2f per cent or more %.4f" % ( + np.mean([n[0] for n in d["null"]]), np.mean([n[1] for n in d["null"]]), 100 * d["params"]["pmin"], np.mean([n[2] for n in d["null"]])), + sensitivity="a residual of 0.1 per cent at 5 sigma, an asymmetric intercepted fraction of a few 1e-3 for 30-50 per cent polarised reflection", + ledger="Intrinsic polarisation of quiet dwarfs", + result="%d stars tested: residual above 3 sigma in %.4f (null %.4f), above 5 in %.4f (null %.4f); %d dwarf candidates within %.0f pc%s" % ( + d["n_tested"], d["frac_z3"], np.mean([n[0] for n in d["null"]]), d["frac_z5"], np.mean([n[1] for n in d["null"]]), len(d["candidates"]), d["params"]["dmax"], + (": " + "; ".join("%s %.2f per cent (%s)" % (c["name"] or ("Gaia DR3 %d" % c["gaia"]), 100 * c["p_res"], c.get("explained") or c.get("open") or "unexplained") for c in d["candidates"])) if d["candidates"] else "")) + core.clear_targets("intrinsic_polarisation") + core.record_targets("intrinsic_polarisation", [dict(target="gaia_dr3:%d" % c["gaia"], stat=c["z"], unit="residual Stokes vector over its error", + vet="residual %.3f per cent at %.0f deg against the field's %.3f at %.0f deg (%s); RUWE %s%s" % ( + 100 * c["p_res"], c["ang_res"], 100 * c["p_nb"], c["ang_nb"], "own catalogues" if c["within"] else "other catalogues", + "%.2f" % c["ruwe"] if c["ruwe"] else "-", ("; " + (c.get("explained") or c.get("open"))) if (c.get("explained") or c.get("open")) else ""), + note="%s, %.0f pc, BP-RP %.2f, M_G %.2f, %d neighbours, catalogues %s" % (c["name"], c["d"], c["bprp"], c["MG"], c["n"], ",".join(str(x) for x in c["refs"]))) for c in d["candidates"]]) + print("recorded") + + +def intrinsic_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": intrinsic_fetch, "analyse": intrinsic_analyse, "record": intrinsic_record}[mode]() + + +poles_DOC = r"""Orbital poles of Gaia DR3 astrometric orbits near the Galactic poles: substellar against latitude-reweighted stellar companions, bootstrapped. + + python -I seti.py neighbourhood poles fetch + python -I seti.py neighbourhood poles analyse + python -I seti.py neighbourhood poles record""" + +poles_ROOT = os.environ.get("POLES_ROOT", core.data("nss_poles")) +poles_OUT = "orbital_poles.json" +poles_CONE, poles_SUBSTELLAR, poles_STELLAR = 15.0, 0.08, 0.2 # deg; Msun bounds for substellar and stellar companions +poles_NGP = (192.859508, 27.128336) # north Galactic pole, ICRS + + +def poles_fetch(): + os.makedirs(poles_ROOT, exist_ok=True) + p = os.path.join(poles_ROOT, "orbits.csv") + if os.path.exists(p): + print("have", p) + return + # orbits and masses fetched separately and joined here + rows = core.tap("gaia", "SELECT source_id, ra, dec, parallax, period, eccentricity, a_thiele_innes, b_thiele_innes, f_thiele_innes, g_thiele_innes, " + "a_thiele_innes_error, b_thiele_innes_error, f_thiele_innes_error, g_thiele_innes_error, nss_solution_type, goodness_of_fit, " + "significance FROM gaiadr3.nss_two_body_orbit WHERE nss_solution_type IN ('Orbital', 'OrbitalAlternative', " + "'OrbitalAlternativeValidated', 'OrbitalTargetedSearch', 'OrbitalTargetedSearchValidated', 'AstroSpectroSB1') AND a_thiele_innes IS NOT NULL", + maxrec=400000, timeout=1800) + masses = {m["source_id"]: m for m in core.tap("gaia", "SELECT source_id, m1, m2, m2_lower, m2_upper, flag FROM gaiadr3.binary_masses", maxrec=400000, timeout=1800)} + for r in rows: + m = masses.get(r["source_id"], {}) + for k in ("m1", "m2", "m2_lower", "m2_upper", "flag"): + r[k] = m.get(k, "") + with open(p, "w", newline="", encoding="utf-8") as f: + w = csv.DictWriter(f, fieldnames=list(rows[0].keys())) + w.writeheader() + w.writerows(rows) + print("%d orbits, %d with companion masses" % (len(rows), sum(1 for r in rows if r["m2_upper"]))) + + +def poles_elements(A, B, F, G): + """Inclination (deg) and two candidate nodes (deg) from Thiele-Innes elements.""" + k1 = math.hypot(A + G, B - F) + k2 = math.hypot(A - G, B + F) + if k1 + k2 <= 0: + return None + cosi = (k1 - k2) / (k1 + k2) + wpo = math.atan2(B - F, A + G) + wmo = math.atan2(-(B + F), A - G) + node = 0.5 * (wpo - wmo) + return math.degrees(math.acos(max(-1.0, min(1.0, cosi)))), math.degrees(node) % 360.0, (math.degrees(node) + 180.0) % 360.0, 0.5 * (k1 + k2) + + +def poles_galactic_latitude(ra, dec, inc, node): + """Galactic latitude (deg) of the orbital pole for a node and inclination.""" + i, om = math.radians(inc), math.radians(node) + pe, pn, pk = math.sin(i) * math.cos(om), -math.sin(i) * math.sin(om), math.cos(i) + a, d = math.radians(ra), math.radians(dec) + e = np.array([-math.sin(a), math.cos(a), 0.0]) + n = np.array([-math.sin(d) * math.cos(a), -math.sin(d) * math.sin(a), math.cos(d)]) + k = np.array([math.cos(d) * math.cos(a), math.cos(d) * math.sin(a), math.sin(d)]) + pole = pe * e + pn * n + pk * k + ag, dg = math.radians(poles_NGP[0]), math.radians(poles_NGP[1]) + z = np.array([math.cos(dg) * math.cos(ag), math.cos(dg) * math.sin(ag), math.sin(dg)]) + return math.degrees(math.asin(max(-1.0, min(1.0, float(pole @ z))))) + + +def poles_analyse(): + rows = list(csv.DictReader(open(os.path.join(poles_ROOT, "orbits.csv"), encoding="utf-8"))) + out = [] + for r in rows: + A, B, F, G = (num(r[k]) for k in ("a_thiele_innes", "b_thiele_innes", "f_thiele_innes", "g_thiele_innes")) + if None in (A, B, F, G): + continue + el = poles_elements(A, B, F, G) + if not el: + continue + inc, n1, n2, a0 = el + ra, dec = float(r["ra"]), float(r["dec"]) + b1, b2 = poles_galactic_latitude(ra, dec, inc, n1), poles_galactic_latitude(ra, dec, inc, n2) + m2u, m2l = num(r.get("m2_upper")), num(r.get("m2_lower")) + # host Galactic latitude for reweighting + ag, dg = math.radians(poles_NGP[0]), math.radians(poles_NGP[1]) + a, d = math.radians(ra), math.radians(dec) + bh = math.degrees(math.asin(math.sin(d) * math.sin(dg) + math.cos(d) * math.cos(dg) * math.cos(a - ag))) + out.append(dict(source_id=r["source_id"], ra=ra, dec=dec, b_host=bh, inc=inc, a0=a0, period=num(r["period"]), sig=num(r["significance"]), + type=r["nss_solution_type"], m2_upper=m2u, m2_lower=m2l, b_pole=max(abs(b1), abs(b2)), + substellar=m2l is not None and m2l < poles_SUBSTELLAR, strict=m2l is not None and m2l < poles_SUBSTELLAR and m2u is not None and m2u < poles_STELLAR, + aligned=max(abs(b1), abs(b2)) >= 90.0 - poles_CONE)) + sub = [x for x in out if x["substellar"]] + strict = [x for x in out if x["strict"]] + stel = [x for x in out if x["m2_lower"] is not None and x["m2_lower"] >= poles_STELLAR] + # stellar set reweighted in 10 deg latitude bins + bins = np.arange(-90, 91, 10) + hs = np.histogram([x["b_host"] for x in sub], bins)[0].astype(float) + hl = np.histogram([x["b_host"] for x in stel], bins)[0].astype(float) + wt = np.where(hl > 0, hs / np.maximum(hl, 1), 0.0) + wst = np.array([wt[min(int((x["b_host"] + 90) // 10), 17)] for x in stel]) + al_st = np.array([x["aligned"] for x in stel], float) + f_sub = np.mean([x["aligned"] for x in sub]) if sub else float("nan") + f_st = float(np.sum(wst * al_st) / wst.sum()) if wst.sum() > 0 else float("nan") + rng = np.random.default_rng(2) + boots, boots_strict = [], [] + for _ in range(2000): + idx = rng.choice(len(stel), len(sub), replace=True, p=wst / wst.sum()) + boots.append(float(np.mean(al_st[idx]))) + idx = rng.choice(len(stel), max(len(strict), 1), replace=True, p=wst / wst.sum()) + boots_strict.append(float(np.mean(al_st[idx]))) + boots, boots_strict = np.array(boots), np.array(boots_strict) + iso = 1 - math.sin(math.radians(90 - poles_CONE)) + f_strict = float(np.mean([x["aligned"] for x in strict])) if strict else float("nan") + print("%d astrometric orbits with elements: %d companions that may be substellar (m2 lower bound below %.2f Msun, %d of them with the upper bound below %.1f), %d stellar " + "(lower bound above %.1f); poles within %.0f deg of a Galactic pole on either node: possibly substellar %.4f (%d of %d), the strict set %.4f (%d of %d), stellar %.4f " + "reweighted to the substellar hosts' latitudes (bootstrap %.4f +- %.4f, p %.3f; at the strict set's size %.4f +- %.4f, p %.3f), isotropic %.4f" % ( + len(out), len(sub), poles_SUBSTELLAR, len(strict), poles_STELLAR, len(stel), poles_STELLAR, poles_CONE, f_sub, sum(1 for x in sub if x["aligned"]), len(sub), + f_strict, sum(1 for x in strict if x["aligned"]), len(strict), f_st, boots.mean(), boots.std(), float(np.mean(boots >= f_sub)) if sub else float("nan"), + boots_strict.mean(), boots_strict.std(), float(np.mean(boots_strict >= f_strict)) if strict else float("nan"), iso)) + # face-on selection: inclinations against sin i + inc = np.array([x["inc"] for x in out]) + print(" inclinations: fraction within 30 deg of face-on %.3f (isotropic %.3f), within 30 deg of edge-on %.3f (%.3f)" % ( + np.mean((inc < 30) | (inc > 150)), 1 - math.cos(math.radians(30)), np.mean(np.abs(inc - 90) < 30), math.cos(math.radians(60)))) + json.dump(dict(n=len(out), n_sub=len(sub), n_strict=len(strict), f_strict=f_strict, n_aligned_strict=sum(1 for x in strict if x["aligned"]), n_stellar=len(stel), f_sub=f_sub, + f_stellar_weighted=f_st, boot_mean=float(boots.mean()), boot_sd=float(boots.std()), p_strict=float(np.mean(boots_strict >= f_strict)) if strict else None, + boot_strict_sd=float(boots_strict.std()), + p=float(np.mean(boots >= f_sub)) if sub else None, isotropic=iso, params=dict(cone=poles_CONE, substellar=poles_SUBSTELLAR, stellar=poles_STELLAR), + substellar=[x for x in sub], aligned_substellar=[x for x in sub if x["aligned"]]), open(core.results(poles_OUT), "w"), indent=0) + + +def poles_record(): + d = json.load(open(core.results(poles_OUT))) + core.record_search( + "orbital_poles_galactic", "Orbital poles against the Galactic plane", archive="Gaia DR3 nss_two_body_orbit and binary_masses", release="Gaia DR3", + selection="astrometric orbits (Orbital, OrbitalAlternative, OrbitalTargetedSearch, AstroSpectroSB1) with Thiele-Innes elements: %d, %d with companions that may be substellar (%d strictly)" % ( + d["n"], d["n_sub"], d["n_strict"]), + code=os.path.abspath(__file__), entry="poles", n_targets=d["n_sub"], params=d["params"], + null_summary="the %d stellar-mass companions' aligned fraction reweighted to the substellar hosts' Galactic latitudes: %.4f (bootstrap %.4f +- %.4f); isotropic %.4f" % ( + d["n_stellar"], d["f_stellar_weighted"], d["boot_mean"], d["boot_sd"], d["isotropic"]), + sensitivity="an excess of aligned poles of a few per cent among the substellar companions", + ledger="Orbital poles against the Galactic plane", + result="companions that may be substellar with a candidate pole within %.0f deg of a Galactic pole: %.4f against the stellar companions' %.4f (p %.2f); the strict set %.4f (%d of %d, p %.2f at its size)" % ( + d["params"]["cone"], d["f_sub"], d["f_stellar_weighted"], d["p"] if d["p"] is not None else float("nan"), d["f_strict"], d["n_aligned_strict"], d["n_strict"], + d["p_strict"] if d["p_strict"] is not None else float("nan"))) + core.clear_targets("orbital_poles_galactic") + core.record_targets("orbital_poles_galactic", [dict(target="gaia_dr3:%s" % x["source_id"], stat=x["b_pole"], unit="Galactic latitude of the nearer candidate pole, deg", + vet="aligned within %.0f deg" % d["params"]["cone"] if x["aligned"] else None, + note="%s, P %.1f d, i %.0f deg, m2 %.3f-%s Msun" % (x["type"], x["period"] or 0, x["inc"], x["m2_lower"] or 0, + "%.3f" % x["m2_upper"] if x["m2_upper"] is not None else "?")) for x in d["substellar"]]) + print("recorded %d substellar orbits" % d["n_sub"]) + + +def poles_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": poles_fetch, "analyse": poles_analyse, "record": poles_record}[mode]() + + +hotsmall_DOC = r"""Hot bodies too small to be stars: sources within 100 pc at 7000 K or more with black-body radii below 0.003 R_sun, against the noise-propagated white-dwarf sequence. + + python -I seti.py neighbourhood hotsmall fetch + python -I seti.py neighbourhood hotsmall analyse + python -I seti.py neighbourhood hotsmall record""" + +hotsmall_ROOT = os.environ.get("HOTSMALL_ROOT", core.data("hotsmall")) +hotsmall_OUT = "hot_small_bodies.json" +hotsmall_TEFF, hotsmall_FLOOR, hotsmall_WD = 7000.0, 0.003, 0.008 +hotsmall_LAM_G, hotsmall_F0_G = 0.6400, 2.50e-9 # G pivot (um) and Vega flux density at G 0 +hotsmall_LAM_BP, hotsmall_LAM_RP = 0.5110, 0.7770 +hotsmall_SOURCE_COLS = ("source_id, ra, dec, parallax, parallax_over_error, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, bp_rp, teff_gspphot, " + "ruwe, ipd_frac_multi_peak, visibility_periods_used, astrometric_excess_noise, phot_bp_rp_excess_factor, non_single_star, " + "phot_variable_flag, distance_gspphot, logg_gspphot, ag_gspphot") +hotsmall_AP_COLS = ("radius_gspphot", "lum_flame", "radius_flame", "mass_flame", "classprob_dsc_combmod_whitedwarf", "classprob_dsc_combmod_star", + "classprob_dsc_combmod_binarystar", "spectraltype_esphs") + + +def hotsmall_fetch(): + """Nearby-star sources within 100 pc bluer than BP-RP 0.6 at 10-sigma parallax with parameters.""" + os.makedirs(hotsmall_ROOT, exist_ok=True) + near = catalogues.gcns("source_id", "parallax > 10 AND phot_bp_mean_mag - phot_rp_mean_mag < 0.6", timeout=1800) + print("%d nearby sources bluer than BP-RP 0.6" % len(near), flush=True) + src = core.tap_by_ids("gaia", [r["source_id"] for r in near], "SELECT %s FROM gaiadr3.gaia_source WHERE source_id IN (%%s)" % hotsmall_SOURCE_COLS) + rows = [r for r in src.values() if (num(r["parallax_over_error"]) or 0) > 10 and (num(r["parallax"]) or 0) > 10] + print("%d at parallax 10 sigma" % len(rows), flush=True) + extra = core.tap_by_ids("gaia", [r["source_id"] for r in rows], + "SELECT source_id, %s FROM gaiadr3.astrophysical_parameters WHERE source_id IN (%%s)" % ", ".join(hotsmall_AP_COLS)) + for r in rows: + p = extra.get(str(r["source_id"]), {}) + for k in hotsmall_AP_COLS: + r[k] = p.get(k) + json.dump(rows, open(os.path.join(hotsmall_ROOT, "gaia_hot_100pc.json"), "w")) + + +def hotsmall_planck(lam_um, T): + """B_lambda (erg/cm2/s/A/sr) at lam_um and T.""" + h, c, k = 6.626e-27, 2.998e10, 1.381e-16 + lam = lam_um * 1e-4 + return 2 * h * c ** 2 / lam ** 5 / math.expm1(h * c / (lam * k * T)) * 1e-8 + + +def hotsmall_radius(G, plx_mas, T): + """Black-body radius (R_sun) at T giving G at plx_mas.""" + f = hotsmall_F0_G * 10 ** (-0.4 * G) + d_cm = 3.0857e18 * (1000.0 / plx_mas) + return d_cm * math.sqrt(f / (math.pi * hotsmall_planck(hotsmall_LAM_G, T))) / 6.957e10 + + +def hotsmall_colour_temperature(bprp): + """Black-body temperature with BP-RP colour bprp; None beyond 100000 K.""" + def colour(T): + v = hotsmall_planck(hotsmall_LAM_BP, 9602.0) / hotsmall_planck(hotsmall_LAM_RP, 9602.0) # Vega as a 9602 K black body + return -2.5 * math.log10(hotsmall_planck(hotsmall_LAM_BP, T) / hotsmall_planck(hotsmall_LAM_RP, T) / v) + lo, hi = 2500.0, 100000.0 + if bprp <= colour(hi): + return None + if bprp >= colour(lo): + return lo + for _ in range(60): + mid = 0.5 * (lo + hi) + if colour(mid) > bprp: + lo = mid + else: + hi = mid + return 0.5 * (lo + hi) + + +hotsmall_WD_CATS = {"J/MNRAS/508/3877": "Gentile Fusillo et al. (2021)", "J/MNRAS/482/4570": "Gentile Fusillo et al. (2019)", "J/ApJ/934/36": "Bergeron et al. (2022), IR-faint", + "J/ApJ/898/84": "Kilic et al. (2020)", "J/MNRAS/486/2169": "Jimenez-Esteban et al. (2018)"} + + +def hotsmall_vet(x): + """Catalogues already holding a candidate (Gaia WD, IR-faint WDs, GALEX); verdict in x['vet'].""" + from astroquery.vizier import Vizier + from astropy.coordinates import SkyCoord + import astropy.units as u + x["wd_catalogues"], x["galex_nuv"] = [], None + try: + res = Vizier(row_limit=3, timeout=120).query_region(SkyCoord(x["ra"], x["dec"], unit="deg"), radius=3 * u.arcsec) + except Exception: + x["vet"] = "catalogue query failed" + return + for k in res.keys(): + for cat, name in hotsmall_WD_CATS.items(): + if k.startswith(cat) and name not in x["wd_catalogues"]: + x["wd_catalogues"].append(name) + if k.startswith("II/335") or k.startswith("II/312"): + t = res[k] + col = [c for c in t.colnames if c.lower() in ("nuvmag", "nuv")] + if col and str(t[col[0]][0]) not in ("--", ""): + x["galex_nuv"] = float(t[col[0]][0]) + if any("IR-faint" in n for n in x["wd_catalogues"]): + x["vet"] = "an IR-faint white dwarf (Bergeron et al. 2022): collision-induced absorption, not a hot body" + elif x["wd_catalogues"]: + x["vet"] = "a catalogued white dwarf (%s)%s" % (x["wd_catalogues"][0], ", NUV %.1f" % x["galex_nuv"] if x["galex_nuv"] is not None else " with no ultraviolet detection") + elif x["galex_nuv"] is not None: + x["vet"] = "uncatalogued, NUV %.1f" % x["galex_nuv"] + else: + x["vet"] = "uncatalogued, no ultraviolet detection" + + +def hotsmall_analyse(): + rows = json.load(open(os.path.join(hotsmall_ROOT, "gaia_hot_100pc.json"))) + out = [] + # colour temperature is primary; GSP-Phot mis-fits white dwarfs + for r in rows: + plx, G, bprp, teff = num(r["parallax"]), num(r["phot_g_mean_mag"]), num(r["bp_rp"]), num(r["teff_gspphot"]) + if not plx or G is None or bprp is None: + continue + t_col = hotsmall_colour_temperature(bprp) + if not t_col or t_col < hotsmall_TEFF: + continue + R_col = hotsmall_radius(G, plx, t_col) + R_gsp = hotsmall_radius(G, plx, teff) if teff else None + clean = (num(r["ruwe"]) or 9) < 1.4 and (num(r["ipd_frac_multi_peak"]) or 0) < 2 and (num(r["visibility_periods_used"]) or 0) >= 10 and (num(r["astrometric_excess_noise"]) or 0) < 1.0 + ex = num(r["phot_bp_rp_excess_factor"]) + single = ex is not None and ex < 1.3 + 0.06 * bprp ** 2 + out.append(dict(source_id=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), plx=plx, plx_over_error=num(r["parallax_over_error"]), G=G, bprp=bprp, teff=teff, t_colour=t_col, + R_gspphot=R_gsp, R_colour=R_col, radius_gspphot=num(r["radius_gspphot"]), lum_flame=num(r["lum_flame"]), p_wd=num(r["classprob_dsc_combmod_whitedwarf"]), + clean=clean, single=single, ruwe=num(r["ruwe"]), excess_factor=ex, + candidate=R_col < hotsmall_FLOOR and (R_gsp is None or R_gsp < hotsmall_FLOOR) and clean and single)) + R = np.array([x["R_colour"] for x in out]) + wd = [x for x in out if x["clean"] and x["single"] and hotsmall_WD * 0.7 <= x["R_colour"] <= 0.03] + # null: noise-propagated white-dwarf radii, 200 times + rng = np.random.default_rng(8) + below = 0 + for _ in range(200): + for x in wd: + plx = x["plx"] * (1 + rng.normal(0, 1 / x["plx_over_error"])) + if plx > 0 and hotsmall_radius(x["G"] + rng.normal(0, 0.003), plx, x["t_colour"]) < hotsmall_FLOOR: + below += 1 + cand = [x for x in out if x["candidate"]] + for x in cand: + hotsmall_vet(x) + print("%d Gaia sources within 100 pc at parallax 10 sigma with colour temperatures above %.0f K; black-body radii at the colour temperature: median %.3f Rsun, %d below %.3f; " + "%d of those also below it at the gspphot temperature where one exists, with clean astrometry and a single-source BP/RP excess; the white-dwarf sequence's %d members (%.3f-0.03 Rsun) pushed through their errors give %.2f below the floor" % ( + len(out), hotsmall_TEFF, np.median(R), int(np.sum(R < hotsmall_FLOOR)), hotsmall_FLOOR, len(cand), len(wd), hotsmall_WD * 0.7, below / 200.0)) + for x in sorted(cand, key=lambda x: x["R_colour"])[:30]: + print(" Gaia DR3 %s (%.5f %+.5f): G %.2f BP-RP %+.2f plx %.1f mas; colour %.0f K (R %.4f Rsun), Teff gspphot %s (R %s); gspphot radius %s, P(WD) %s, RUWE %.2f, excess factor %.2f; %s" % ( + x["source_id"], x["ra"], x["dec"], x["G"], x["bprp"], x["plx"], x["t_colour"], x["R_colour"], "%.0f K" % x["teff"] if x["teff"] else "-", "%.4f" % x["R_gspphot"] if x["R_gspphot"] else "-", + "%.4f" % x["radius_gspphot"] if x["radius_gspphot"] else "-", "%.2f" % x["p_wd"] if x["p_wd"] is not None else "-", x["ruwe"] or 0, x["excess_factor"] or 0, x.get("vet", ""))) + json.dump(dict(n=len(out), n_below_colour=int(np.sum(R < hotsmall_FLOOR)), n_cand=len(cand), n_wd=len(wd), null_below=below / 200.0, cands=cand, + params=dict(teff=hotsmall_TEFF, floor=hotsmall_FLOOR)), open(core.results(hotsmall_OUT), "w"), indent=0) + + +def hotsmall_record(): + d = json.load(open(core.results(hotsmall_OUT))) + core.record_search( + "hot_small_bodies", "Hot bodies too small to be stars", archive="Gaia DR3 gaia_source and astrophysical_parameters", release="Gaia DR3", + selection="sources within 100 pc with parallax_over_error above 10 and black-body colour temperatures above %.0f K (%d)" % (d["params"]["teff"], d["n"]), code=os.path.abspath(__file__), entry="hotsmall", + n_targets=d["n"], params=d["params"], null_summary="the %d white dwarfs of the sample pushed through their parallax and flux errors 200 times: %.2f below the floor" % (d["n_wd"], d["null_below"]), + sensitivity="a black-body radius below %.3f Rsun at the colour temperature and at the gspphot temperature where one exists, within 100 pc" % d["params"]["floor"], ledger="Hot bodies too small to be stars", + result="%d below the floor at the colour temperature, %d also at the gspphot temperature with clean astrometry and single-source photometry: %d catalogued white dwarfs (%d of them IR-faint ones of Bergeron et al. 2022), %d uncatalogued%s" % ( + d["n_below_colour"], d["n_cand"], sum(1 for x in d["cands"] if x.get("wd_catalogues")), sum(1 for x in d["cands"] if "IR-faint" in x.get("vet", "")), + sum(1 for x in d["cands"] if not x.get("wd_catalogues")), + (": " + "; ".join("Gaia DR3 %s (%.4f Rsun at %.0f K, %s)" % (x["source_id"], x["R_colour"], x["t_colour"], x.get("vet", "")) for x in d["cands"] if not x.get("wd_catalogues"))) if any(not x.get("wd_catalogues") for x in d["cands"]) else "")) + core.clear_targets("hot_small_bodies") + core.record_targets("hot_small_bodies", [dict(target="gaia_dr3:%s" % x["source_id"], stat=x["R_colour"], unit="black-body radius at the colour temperature, solar radii", vet=x.get("vet"), + note="G %.2f, BP-RP %+.2f, plx %.1f mas, colour %.0f K, Teff gspphot %s" % (x["G"], x["bprp"], x["plx"], x["t_colour"], "%.0f K" % x["teff"] if x["teff"] else "-")) for x in d["cands"]]) + print("recorded %d candidates" % d["n_cand"]) + + +def hotsmall_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": hotsmall_fetch, "analyse": hotsmall_analyse, "record": hotsmall_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- +# the nearby stars' velocities, classified spectra, past and catalogues + + +def nearby_rv(): + """Gaia DR3 stars within 100 pc with radial velocities and parallaxes at 10 sigma, cached under DATA: (rows, columns). An asynchronous query, since a synchronous one on gaia_source stops at the archive's time cap with part of the rows.""" + p = core.data("gaia_rv_100pc.csv") + if not os.path.exists(p): + rows = core.tap_async("gaia", "SELECT source_id, ra, dec, parallax, parallax_error, pmra, pmra_error, pmdec, pmdec_error, " + "radial_velocity, radial_velocity_error, phot_g_mean_mag, bp_rp, ruwe FROM gaiadr3.gaia_source " + "WHERE parallax > 10 AND parallax_over_error > 10 AND radial_velocity IS NOT NULL", maxrec=500000) + with open(p + ".tmp", "w", newline="") as fh: + w = csv.DictWriter(fh, fieldnames=list(rows[0])) + w.writeheader() + w.writerows(rows) + os.replace(p + ".tmp", p) + R = list(csv.DictReader(open(p))) + keys = ("ra", "dec", "parallax", "parallax_error", "pmra", "pmra_error", "pmdec", "pmdec_error", "radial_velocity", + "radial_velocity_error", "phot_g_mean_mag", "bp_rp", "ruwe") + return R, {k: np.array([num(r[k], np.nan) for r in R], float) for k in keys} + + +def nearby_velocity(c): + """Velocity relative to the Sun (km/s) along RA, Dec and the line of sight, with each component's error.""" + k = 4.74047 / c["parallax"] + ea = k * np.hypot(c["pmra_error"], c["pmra"] * c["parallax_error"] / c["parallax"]) + ed = k * np.hypot(c["pmdec_error"], c["pmdec"] * c["parallax_error"] / c["parallax"]) + return k * c["pmra"], k * c["pmdec"], c["radial_velocity"], ea, ed, c["radial_velocity_error"] + + +def nearby_astrometry(): + """Gaia DR3 stars within 100 pc with parallaxes at 10 sigma, with or without radial velocities, cached under DATA: (rows, columns), an asynchronous query as in `nearby_rv`.""" + p = core.data("gaia_100pc_astrometry.csv") + if not os.path.exists(p): + rows = core.tap_async("gaia", "SELECT source_id, ra, dec, parallax, parallax_error, pmra, pmra_error, pmdec, pmdec_error, " + "radial_velocity, radial_velocity_error, phot_g_mean_mag, bp_rp, ruwe FROM gaiadr3.gaia_source " + "WHERE parallax > 10 AND parallax_over_error > 10", maxrec=1000000) + with open(p + ".tmp", "w", newline="") as fh: + w = csv.DictWriter(fh, fieldnames=list(rows[0])) + w.writeheader() + w.writerows(rows) + os.replace(p + ".tmp", p) + R = list(csv.DictReader(open(p))) + keys = ("ra", "dec", "parallax", "parallax_error", "pmra", "pmra_error", "pmdec", "pmdec_error", "radial_velocity", + "radial_velocity_error", "phot_g_mean_mag", "bp_rp", "ruwe") + return R, {k: np.array([num(r[k], np.nan) for r in R], float) for k in keys} + + +def nearby_axes(c): + """Each star's unit vectors toward it and along increasing RA and Dec (ICRS Cartesian), and its position (pc).""" + a, d = np.radians(c["ra"]), np.radians(c["dec"]) + rhat = np.stack([np.cos(d) * np.cos(a), np.cos(d) * np.sin(a), np.sin(d)], 1) + ahat = np.stack([-np.sin(a), np.cos(a), np.zeros_like(a)], 1) + dhat = np.stack([-np.sin(d) * np.cos(a), -np.sin(d) * np.sin(a), np.cos(d)], 1) + return rhat, ahat, dhat, rhat * (1000.0 / c["parallax"])[:, None] + + +rest_DOC = r"""Stars at rest with the Sun: Gaia DR3 stars within 100 pc with radial velocities and parallaxes at 10 sigma whose velocity relative to the Sun is below 1 km/s with its error below 0.5 km/s, a companion keeping pace with the Solar System, against the count a velocity density flat near zero gives from the like-measured stars below 5 km/s. + +`null` asks how special the Sun's velocity is: the same count in 1 km/s balls centred elsewhere in velocity space where the density within 5 km/s matches the Sun's (RUWE below 1.4 throughout), stars and systems both, a system being stars linked within 10 pc and 1 km/s; the sideways speeds of every star within 100 pc, radial velocity or not, below 0.25, 0.5 and 1 km/s against the flat two-dimensional density; and further members of each system of the Sun's ball, stars within 15 pc of it whose proper motions match the motion the system's velocity predicts at their positions to 1 km/s, against the count within 5 km/s scaled by area. + + python -I seti.py neighbourhood rest [null|record]""" + +# a system: stars within this distance (pc) and velocity difference (km/s) of another member +rest_LINK = (10.0, 1.0) +rest_GROUP_PC = 15.0 +# the coronae and associations within 200 pc of Moranta et al. (2022), VizieR +rest_CRIUS = "J/ApJ/939/94" + + +def rest_systems(P, V): + """Systems among stars with positions P (pc) and velocities V (km/s): friends of friends within rest_LINK.""" + n = len(P) + lab = list(range(n)) + + def root(i): + while lab[i] != i: + lab[i] = lab[lab[i]] + i = lab[i] + return i + for i in range(n): + for j in range(i + 1, n): + if np.linalg.norm(P[i] - P[j]) < rest_LINK[0] and np.linalg.norm(V[i] - V[j]) < rest_LINK[1]: + lab[root(i)] = root(j) + out = {} + for i in range(n): + out.setdefault(root(i), []).append(i) + return list(out.values()) + + +def rest_null(): + from scipy.spatial import cKDTree + from scipy.stats import poisson + R, c = nearby_rv() + va, vd, vr, ea, ed, er = nearby_velocity(c) + e = np.sqrt(ea ** 2 + ed ** 2 + er ** 2) + good = np.isfinite(vr) & (e < 0.5) & (c["ruwe"] < 1.4) + rhat, ahat, dhat, pos = nearby_axes(c) + vel = rhat * vr[:, None] + ahat * va[:, None] + dhat * vd[:, None] + P, V = pos[good], vel[good] + ids = np.array([r["source_id"] for r in R])[good] + tree = cKDTree(V) + n5 = len(tree.query_ball_point(np.zeros(3), 5.0)) + inner = sorted(tree.query_ball_point(np.zeros(3), 1.0), key=lambda i: np.linalg.norm(V[i])) + mu = n5 / 125.0 + p_sun = float(poisson.sf(len(inner) - 1, mu)) + sys_sun = rest_systems(P[inner], V[inner]) + print("%d stars with RUWE below 1.4 and velocities to 0.5 km/s; at the Sun's velocity %d within 5 km/s, %d within 1 km/s against %.2f " + "(Poisson p %.4f) in %d systems" % (int(good.sum()), n5, len(inner), mu, p_sun, len(sys_sun)), flush=True) + # balls centred elsewhere: star velocities moved by 5 km/s in each axis, kept beyond 10 km/s of the Sun's and at its density + rng = np.random.default_rng(17) + cand = V[rng.integers(0, len(V), 400000)] + rng.normal(0.0, 5.0, (400000, 3)) + cand = cand[np.linalg.norm(cand, axis=1) > 10.0] + m5 = tree.query_ball_point(cand, 5.0, return_length=True) + keep = np.abs(m5 - n5) <= 0.2 * n5 + cand, m5 = cand[keep], m5[keep] + m1 = tree.query_ball_point(cand, 1.0, return_length=True) + p = poisson.sf(m1 - 1, m5 / 125.0) + n_sys = np.zeros(len(cand), int) + for k in np.nonzero(m1 >= len(sys_sun))[0]: + idx = tree.query_ball_point(cand[k], 1.0) + n_sys[k] = len(rest_systems(P[idx], V[idx])) + f_star = float(np.mean(p <= p_sun)) + f_sys = float(np.mean(n_sys >= len(sys_sun))) + print("%d balls elsewhere at the Sun's density (%d-%d within 5 km/s): mean %.2f within 1 km/s; Poisson p at or below the Sun's in " + "%.4f of them, %d or more systems in %.4f" % (len(cand), int(m5.min()), int(m5.max()), float(m1.mean()), f_star, + len(sys_sun), f_sys), flush=True) + # sideways speeds of every star within 100 pc + R2, c2 = nearby_astrometry() + va2, vd2, vr2, ea2, ed2, er2 = nearby_velocity(c2) + vt, et = np.hypot(va2, vd2), np.hypot(ea2, ed2) + good2 = np.isfinite(vt) & (et < 0.1) & (c2["ruwe"] < 1.4) + t5 = int(np.sum(good2 & (vt < 5))) + side = [dict(below=x, n=int(np.sum(good2 & (vt < x))), expect=t5 * (x / 5.0) ** 2, + p=float(poisson.sf(int(np.sum(good2 & (vt < x))) - 1, t5 * (x / 5.0) ** 2))) for x in (0.25, 0.5, 1.0)] + print("%d stars within 100 pc, %d with sideways speeds to 0.1 km/s and RUWE below 1.4, %d below 5 km/s: %s" % ( + len(R2), int(good2.sum()), t5, "; ".join("below %.2f km/s %d against %.1f (p %.3f)" % (s["below"], s["n"], s["expect"], s["p"]) for s in side))) + # further members of each multi-star system of the Sun's ball + rhat2, ahat2, dhat2, pos2 = nearby_axes(c2) + groups = [] + for s in sys_sun: + if len(s) < 2: + continue + Pg, Vg = P[inner][s].mean(0), V[inner][s].mean(0) + own = np.isin(np.array([r["source_id"] for r in R2]), [str(ids[inner][j]) for j in s]) + near = (np.linalg.norm(pos2 - Pg, axis=1) < rest_GROUP_PC) & ~own + pa, pd = ahat2 @ Vg, dhat2 @ Vg + dt = np.hypot(va2 - pa, vd2 - pd) + ok = near & np.isfinite(dt) & (et < 0.25) & (c2["ruwe"] < 1.4) + members = [i for i in np.nonzero(ok & (dt < 1.0))[0]] + expect = float(np.sum(ok & (dt < 5.0))) / 25.0 + rows = [] + for i in sorted(members, key=lambda i: dt[i]): + rvp = float(rhat2[i] @ Vg) + rows.append(dict(source_id=R2[i]["source_id"], dist_pc=float(np.linalg.norm(pos2[i] - Pg)), dvt=float(dt[i]), + g=float(c2["phot_g_mean_mag"][i]), rv=None if not np.isfinite(vr2[i]) else float(vr2[i]), + rv_err=None if not np.isfinite(er2[i]) else float(er2[i]), rv_predicted=rvp)) + groups.append(dict(stars=[str(ids[inner][j]) for j in s], centre_pc=Pg.tolist(), velocity=Vg.tolist(), n_near=int(np.sum(ok)), + members=rows, expect=expect, p=float(poisson.sf(len(rows) - 1, expect)) if rows else 1.0)) + print("system %s: %d other stars within %.0f pc with sideways speeds to 0.25 km/s; %d match its motion to 1 km/s against %.2f by " + "area (Poisson p %.3f)" % (", ".join(groups[-1]["stars"]), int(np.sum(ok)), rest_GROUP_PC, len(rows), expect, groups[-1]["p"])) + for r in rows: + print(" Gaia DR3 %s: %.1f pc from the centre, %.2f km/s off its motion, G %.1f, RV %s (the system's motion predicts %+.2f)" % ( + r["source_id"], r["dist_pc"], r["dvt"], r["g"], "%+.2f +- %.2f" % (r["rv"], r["rv_err"]) if r["rv"] is not None else "-", + r["rv_predicted"])) + # catalogued associations of the slow stars (Moranta et al. 2022) with their mean velocities relative to the Sun + slow = [str(ids[i]) for i in inner] + crius = {} + for r in core.tap("vizier", 'SELECT Crius, Cl, Gaia FROM "%s/table1" WHERE Gaia IN (%s)' % (rest_CRIUS, ",".join(slow))): + g = core.tap("vizier", 'SELECT Crius, Nstar, Dist, U, V, W, "U-mad", "V-mad", "W-mad" FROM "%s/%s" WHERE Crius = %s' + % (rest_CRIUS, "table2" if r["Cl"] == "P" else "table3", r["Crius"])) + if g: + g = g[0] + uvw = [float(g[k]) for k in ("U", "V", "W")] + crius[str(r["Gaia"])] = dict(crius=int(r["Crius"]), n=int(g["Nstar"]), dist_pc=float(g["Dist"]), uvw=uvw, + speed=float(np.linalg.norm(uvw)), mad=[float(g[k]) for k in ("U-mad", "V-mad", "W-mad")]) + for s, g in crius.items(): + print("Gaia DR3 %s: a member of Crius %d (Moranta et al. 2022), %d stars at %.0f pc moving at (%+.1f, %+.1f, %+.1f) km/s relative " + "to the Sun, %.2f km/s, spread %s" % (s, g["crius"], g["n"], g["dist_pc"], *g["uvw"], g["speed"], g["mad"])) + out = dict(n_good=int(good.sum()), n5=n5, k=len(inner), mu=mu, p_sun=p_sun, + stars=[dict(source_id=str(ids[i]), v=float(np.linalg.norm(V[i])), pos=P[i].tolist(), vel=V[i].tolist()) for i in inner], + systems=[[str(ids[inner][j]) for j in s] for s in sys_sun], balls=len(cand), mean_k=float(m1.mean()), + f_star=f_star, f_sys=f_sys, sideways=side, sideways_n=int(good2.sum()), groups=groups, crius=crius) + json.dump(out, open(core.results("rest_null.json"), "w"), indent=1) + + +def rest_main(record=False): + from scipy.stats import poisson + R, c = nearby_rv() + va, vd, vr, ea, ed, er = nearby_velocity(c) + v = np.sqrt(va ** 2 + vd ** 2 + vr ** 2) + e = np.sqrt(ea ** 2 + ed ** 2 + er ** 2) + good = np.isfinite(v) & (e < 0.5) + n5 = int(np.sum(good & (v < 5))) + expect = n5 / 125.0 + slow = sorted(np.nonzero(good & (v < 1))[0], key=lambda i: v[i]) + p = float(poisson.sf(len(slow) - 1, expect)) if slow else 1.0 + print("%d stars, %d with the velocity's error below 0.5 km/s; %d of those below 5 km/s, so %.2f expected below 1 km/s; " + "found %d (Poisson p %.3f)" % (len(R), int(good.sum()), n5, expect, len(slow), p)) + for i in slow: + print(" Gaia DR3 %s: %.2f +- %.2f km/s at %.1f pc, G %.1f, RUWE %.2f" % (R[i]["source_id"], v[i], e[i], 1000 / c["parallax"][i], + c["phot_g_mean_mag"][i], c["ruwe"][i])) + out = [dict(source_id=R[i]["source_id"], v=float(v[i]), e=float(e[i]), d=float(1000 / c["parallax"][i])) for i in slow] + json.dump(dict(n=len(R), n_good=int(good.sum()), n5=n5, expect=expect, p=p, slow=out), open(core.results("rest_stars.json"), "w"), indent=1) + if record: + nl = json.load(open(core.results("rest_null.json"))) if os.path.exists(core.results("rest_null.json")) else None + system_of = {s: grp for grp in (nl["systems"] if nl else []) for s in grp} + crius = nl.get("crius", {}) if nl else {} + # stars of one moving group are not independent: the systems decide + chance = p > 0.01 or (nl is not None and nl["f_sys"] > 0.01) + + def vet(o): + codes = (["moving-group"] if o["source_id"] in crius else []) + (["chance-rate"] if chance else []) + return "; ".join(codes) or None + + def note(o): + s = "+- %.2f km/s at %.1f pc" % (o["e"], o["d"]) + if len(system_of.get(o["source_id"], [])) > 1: + s += "; one system with %s" % ", ".join("Gaia DR3 %s" % x for x in system_of[o["source_id"]] if x != o["source_id"]) + g = crius.get(o["source_id"]) + if g: + s += "; a member of Crius %d (Moranta et al. 2022), %d stars at %.0f pc moving at %.1f km/s relative to the Sun" % ( + g["crius"], g["n"], g["dist_pc"], g["speed"]) + return s + result = "%d below 1 km/s against %.2f expected (Poisson p %.3f)" % (len(slow), expect, p) + if nl: + result += ("; with RUWE below 1.4, %d against %.2f (p %.4f) in %d systems, matched or exceeded by %.3f of %d balls of the same " + "density elsewhere in velocity space (%.3f for the systems); sideways speeds of %d stars without radial velocities " + "needed: %s" % (nl["k"], nl["mu"], nl["p_sun"], len(nl["systems"]), nl["f_star"], nl["balls"], nl["f_sys"], + nl["sideways_n"], ", ".join("%d below %.2f km/s against %.1f" % (s["n"], s["below"], s["expect"]) + for s in nl["sideways"]))) + for g in nl["groups"]: + result += "; %d other stars within %.0f pc share the motion of the system %s to 1 km/s against %.2f by area" % ( + len(g["members"]), rest_GROUP_PC, " and ".join(g["stars"]), g["expect"]) + for s, g in sorted(crius.items()): + result += "; Gaia DR3 %s is a member of Crius %d (Moranta et al. 2022), %d stars at %.0f pc moving at (%+.1f, %+.1f, %+.1f) km/s" % ( + s, g["crius"], g["n"], g["dist_pc"], *g["uvw"]) + core.record_search( + "gaia_rest_stars", "Stars at rest with the Sun", archive="Gaia DR3 gaia_source", release="DR3", + selection="parallax above 10 mas at 10 sigma with a radial velocity: %d stars, %d with the velocity's error below 0.5 km/s" + % (len(R), int(good.sum())), + code=os.path.abspath(__file__), entry="rest", n_targets=int(good.sum()), n_unit="stars", + params=dict(v_kms=1.0, err_kms=0.5, flat_from_kms=5.0, ruwe_null=1.4, link_pc=rest_LINK[0], link_kms=rest_LINK[1], + group_pc=rest_GROUP_PC), + null_summary="a velocity density flat near zero: %d stars below 5 km/s give %.2f below 1 km/s%s" % ( + n5, expect, "; balls of the same density elsewhere in velocity space" if nl else ""), + sensitivity="a star within 100 pc keeping pace with the Sun to 1 km/s, with radial velocity and astrometry good to 0.5 km/s", + ledger="Stars at rest with the Sun", result=result) + core.clear_targets("gaia_rest_stars") + core.record_targets("gaia_rest_stars", [dict( + target="gaia_dr3:%s" % o["source_id"], stat=o["v"], unit="speed relative to the Sun, km/s", vet=vet(o), note=note(o)) + for o in out]) + print("recorded") + + +def rest_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + if mode == "null": + rest_null() + else: + rest_main(record=mode == "record") + + +headon_DOC = r"""Stars on a straight line to the Sun: Gaia DR3 stars within 100 pc moving sideways at under 1 km/s (error below 0.5 km/s) at a radial speed above 20 km/s, an object aimed at the Solar System, each with its least distance to the Sun and the time of it on a straight line, against the count a sideways-velocity density flat near zero gives; the published encounter lists (Bailer-Jones et al. 2022) cover the same stars. + + python -I seti.py neighbourhood headon [record] [--vt-kms 1] [--err-kms 0.5] [--vr-kms 20] [--flat-from-kms 5]""" + + +def headon_main(record=False, vt_kms=1.0, err_kms=0.5, vr_kms=20.0, flat_from_kms=5.0): + R, c = nearby_rv() + va, vd, vr, ea, ed, er = nearby_velocity(c) + vt = np.hypot(va, vd) + et = np.hypot(ea, ed) + v = np.hypot(vt, vr) + d = 1000 / c["parallax"] + fast = np.isfinite(vt) & (et < err_kms) & (np.abs(vr) > vr_kms) + expect = float(np.sum(fast & (vt < flat_from_kms))) / (flat_from_kms / vt_kms) ** 2 + sel = sorted(np.nonzero(fast & (vt < vt_kms))[0], key=lambda i: vt[i] / v[i] * d[i]) + out = [] + for i in sel: + miss_au = float(vt[i] / v[i] * d[i] * 206264.8) + t_myr = float(-d[i] * vr[i] / v[i] ** 2 * 0.97779) + out.append(dict(source_id=R[i]["source_id"], miss_au=miss_au, t_myr=t_myr, d=float(d[i]), rv=float(vr[i]), vt=float(vt[i]))) + print("%d stars with radial speed above 20 km/s and sideways speed measured to 0.5 km/s; below 1 km/s sideways %d against " + "%.1f from a flat density" % (int(fast.sum()), len(out), expect)) + for o in out[:10]: + print(" Gaia DR3 %s: %.0f pc, %+.0f km/s, sideways %.2f km/s; least distance %.0f au %s %.2f Myr" % ( + o["source_id"], o["d"], o["rv"], o["vt"], o["miss_au"], "in" if o["t_myr"] > 0 else "ago,", abs(o["t_myr"]))) + json.dump(dict(n=int(fast.sum()), expect=expect, stars=out), open(core.results("headon_stars.json"), "w"), indent=1) + if record: + core.record_search( + "gaia_headon_stars", "Stars on a straight line to the Sun", archive="Gaia DR3 gaia_source", release="DR3", + selection="parallax above 10 mas at 10 sigma with a radial velocity above 20 km/s in either sense, sideways speed measured " + "to 0.5 km/s: %d stars" % int(fast.sum()), + code=os.path.abspath(__file__), entry="headon", n_targets=int(fast.sum()), n_unit="stars", + params=dict(vt_kms=vt_kms, err_kms=err_kms, vr_kms=vr_kms, flat_from_kms=flat_from_kms), + null_summary="a sideways-velocity density flat near zero: %.1f stars below 1 km/s" % expect, + sensitivity="an object within 100 pc on a line through the Sun to 1 km/s in 20", + ledger="Stars on a straight line to the Sun", + result="%d stars against %.1f expected; least distances from %.0f au" % (len(out), expect, out[0]["miss_au"] if out else 0)) + core.clear_targets("gaia_headon_stars") + core.record_targets("gaia_headon_stars", [dict( + target="gaia_dr3:%s" % o["source_id"], stat=o["miss_au"], unit="least distance to the Sun on a straight line, au", + vet="chance-rate" if len(out) <= expect + 3 * math.sqrt(max(expect, 1)) else None, + note="%.0f pc, %+.0f km/s, %s %.2f Myr" % (o["d"], o["rv"], "in" if o["t_myr"] > 0 else "ago", abs(o["t_myr"]))) + for o in out]) + print("recorded") + + +qsolike_DOC = r"""Non-stellar spectra at stellar distances: sources of the Gaia Catalogue of Nearby Stars beyond parallax 10 mas that Gaia DR3's discrete source classifier calls quasar or galaxy at 0.9, light that is not a star's at a star's distance, each read in SIMBAD and placed on the colour-magnitude diagram, where white dwarfs, white-dwarf binaries and cataclysmic variables explain it. + + python -I seti.py neighbourhood qsolike [record] [--prob 0.9] [--plx-mas 10]""" + + +def qsolike_main(record=False, prob=0.9, plx_mas=10.0): + rows = core.tap("gaia", "SELECT g.source_id, g.parallax, g.parallax_error, g.phot_g_mean_mag, g.phot_bp_mean_mag, g.phot_rp_mean_mag, " + "ap.classprob_dsc_combmod_quasar AS q, ap.classprob_dsc_combmod_galaxy AS gal " + "FROM external.gaiaedr3_gcns_main_1 AS g JOIN gaiadr3.astrophysical_parameters AS ap ON g.source_id = ap.source_id " + "WHERE g.parallax > %g AND (ap.classprob_dsc_combmod_quasar > %g OR ap.classprob_dsc_combmod_galaxy > %g)" % (plx_mas, prob, prob), + timeout=600) + ids = ["Gaia DR3 %s" % r["source_id"] for r in rows] + types = {} + for k in range(0, len(ids), 200): + q = ("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'%s'" % x for x in ids[k:k + 200])) + for s in core.simbad(q): + types[str(s["id"])] = (str(s["main_id"]), str(s["otype"]).strip(), s["sp_type"]) + out = [] + for r in rows: + plx, G = float(r["parallax"]), num(r["phot_g_mean_mag"]) + bprp = (num(r["phot_bp_mean_mag"]) or np.nan) - (num(r["phot_rp_mean_mag"]) or np.nan) + MG = G + 5 * math.log10(plx / 100) if G is not None else np.nan + name, otype, sp = types.get("Gaia DR3 %s" % r["source_id"], (None, None, None)) + vet = [] + if otype and ("WD" in otype or (sp and str(sp).startswith("D"))): + vet.append("white-dwarf") + elif np.isfinite(MG) and np.isfinite(bprp) and MG > 10 + 3 * bprp: + vet.append("white-dwarf") + if otype in ("**", "SB*", "EB*"): + vet.append("binary") + # a component of a resolved multiple: its BP and RP windows hold the companion's light + if name and re.search(r"\d[A-C]$|\s[A-C]$", name.strip()): + vet.append("blend") + if otype and "CV" in otype: + vet.append("natural-type") + if num(r["parallax_error"]) and plx / float(r["parallax_error"]) < 5: + vet.append("astrometry") + if G is None: + vet.append("artefact") + out.append(dict(source_id=r["source_id"], plx=plx, G=G, bprp=None if not np.isfinite(bprp) else float(bprp), + MG=None if not np.isfinite(MG) else float(MG), q=num(r["q"]), gal=num(r["gal"]), simbad=name, otype=otype, + sp=sp, vet=vet)) + # the rest: a catalogued neighbour within 10 arcsec puts its light in the BP and RP windows + for o in out: + if o["vet"]: + continue + g = core.tap("gaia", "SELECT ra, dec FROM gaiadr3.gaia_source WHERE source_id = %s" % o["source_id"])[0] + near = core.simbad("SELECT main_id, otype, DISTANCE(POINT('ICRS', ra, dec), POINT('ICRS', %s, %s)) * 3600 AS sep FROM basic " + "WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %s, %s, %f)) = 1" % (g["ra"], g["dec"], g["ra"], g["dec"], 10 / 3600)) + if near: + o["vet"].append("blend") + o["neighbours"] = ["%s (%s) %.1f arcsec" % (" ".join(str(x["main_id"]).split()), str(x["otype"]).strip(), float(x["sep"])) for x in near] + left = [o for o in out if not o["vet"]] + print("%d nearby sources the classifier calls quasar or galaxy at 0.9; %d explained (white dwarfs %d, binaries %d, components of " + "multiples %d, CVs %d, astrometry %d, no photometry %d); left %d" % ( + len(out), len(out) - len(left), sum("white-dwarf" in o["vet"] for o in out), sum("binary" in o["vet"] for o in out), + sum("blend" in o["vet"] for o in out), sum("natural-type" in o["vet"] for o in out), + sum("astrometry" in o["vet"] for o in out), sum("artefact" in o["vet"] for o in out), len(left))) + for o in sorted(left, key=lambda o: -o["plx"])[:15]: + print(" Gaia DR3 %s: %.1f mas, G %.1f, BP-RP %s, M_G %s, quasar %.2f, galaxy %.2f, SIMBAD %s %s" % ( + o["source_id"], o["plx"], o["G"] or 0, o["bprp"], o["MG"], o["q"] or 0, o["gal"] or 0, o["simbad"], o["otype"])) + json.dump(out, open(core.results("qsolike_nearby.json"), "w"), indent=1, default=str) + if record: + core.record_search( + "gaia_qsolike_nearby", "Non-stellar spectra at stellar distances", archive="Gaia DR3 astrophysical_parameters with the " + "Gaia Catalogue of Nearby Stars; SIMBAD", release="DR3", + selection="Gaia Catalogue of Nearby Stars beyond parallax 10 mas, discrete-source-classifier quasar or galaxy probability above 0.9", + code=os.path.abspath(__file__), entry="qsolike", n_targets=len(out), n_unit="Gaia sources", + params=dict(classprob=prob, plx_mas=plx_mas, wd_locus="M_G > 10 + 3 (BP-RP)"), + null_summary="the classifier's known confusions: white dwarfs, white-dwarf binaries and cataclysmic variables", + sensitivity="a source within 100 pc whose BP/RP spectrum the classifier reads as a quasar's or a galaxy's", + ledger="Non-stellar spectra at stellar distances", + result="%d sources, %d left after white dwarfs, binaries, CVs and astrometry" % (len(out), len(left))) + core.clear_targets("gaia_qsolike_nearby") + core.record_targets("gaia_qsolike_nearby", [dict( + target="gaia_dr3:%s" % o["source_id"], stat=max(o["q"] or 0, o["gal"] or 0), unit="classifier's quasar or galaxy probability", + vet="; ".join(o["vet"]) or None, note="M_G %s, BP-RP %s, SIMBAD %s %s%s" % ( + "%.1f" % o["MG"] if o["MG"] is not None else "-", "%.2f" % o["bprp"] if o["bprp"] is not None else "-", o["simbad"], o["otype"], + ", within 10 arcsec " + ", ".join(o["neighbours"]) if o.get("neighbours") else "")) + for o in out]) + print("recorded") + + +no2mass_DOC = r"""Light that appeared since 2MASS: sources of the Gaia Catalogue of Nearby Stars within 20 pc at G 5-13 without a 2MASS best neighbour in Gaia DR3, a source switched on since 1999, each sought again in the 2MASS point-source catalogue around its position carried back to 2000 (CDS XMatch, II/246) within 5 arcsec plus 2.5 years of its proper motion, since 2MASS observed from 1997 to 2001; a 2MASS source found is the cross-match's miss. + + python -I seti.py neighbourhood no2mass [record] [--plx-mas 50] [--g-range 5 13] [--radius-arcsec 5] [--years 2.5] [--epoch 2000]""" + + +def no2mass_main(record=False, plx_mas=50.0, g_range=[5.0, 13.0], radius_arcsec=5.0, years=2.5, epoch=2000.0): + rows = core.tap("gaia", "SELECT g.source_id, g.ra, g.dec, g.parallax, g.phot_g_mean_mag, g.pmra, g.pmdec FROM external.gaiaedr3_gcns_main_1 AS g " + "LEFT OUTER JOIN gaiadr3.tmass_psc_xsc_best_neighbour AS t ON g.source_id = t.source_id " + "WHERE g.parallax > %g AND g.phot_g_mean_mag BETWEEN %g AND %g AND t.source_id IS NULL" % (plx_mas, g_range[0], g_range[1]), timeout=600) + up, reach = [], {} + for r in rows: + ra, de = core.star_at(float(r["ra"]), float(r["dec"]), num(r["pmra"], 0.0), num(r["pmdec"], 0.0), 2016.0, epoch) + up.append(dict(source_id=r["source_id"], ra=ra, dec=de)) + reach[r["source_id"]] = radius_arcsec + years * math.hypot(num(r["pmra"], 0.0), num(r["pmdec"], 0.0)) / 1000.0 + found = {} + for m in core.xmatch(up, "II/246/out", max(reach.values()) if reach else 5.0) if up else []: + d = float(m["angDist"]) + if d <= reach[m["source_id"]] and (m["source_id"] not in found or d < found[m["source_id"]][0]): + found[m["source_id"]] = (d, m.get("2MASS"), num(m.get("Kmag"))) + out = [] + for r in rows: + pm = math.hypot(num(r["pmra"], 0.0), num(r["pmdec"], 0.0)) + f = found.get(r["source_id"]) + out.append(dict(source_id=r["source_id"], G=num(r["phot_g_mean_mag"]), plx=float(r["parallax"]), pm=pm, + tmass=f[1] if f else None, sep=f[0] if f else None, K=f[2] if f else None)) + # the rest: SIMBAD's name for each; a secondary of a multiple sits in its primary's glare in the 2MASS images + for o in out: + if o["tmass"] is None: + s = core.simbad("SELECT b.main_id, b.otype FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id = 'Gaia DR3 %s'" % o["source_id"]) + o["simbad"] = " ".join(str(s[0]["main_id"]).split()) if s else None + o["secondary"] = bool(o["simbad"] and re.search(r"\s[B-D]$", o["simbad"])) + left = [o for o in out if o["tmass"] is None] + print("%d nearby stars at G 5-13 without a 2MASS best neighbour (median proper motion %.0f mas/yr); a 2MASS source within 5 arcsec " + "of the position in 2000 for %d; none for %d" % (len(out), float(np.median([o["pm"] for o in out])) if out else 0, + len(out) - len(left), len(left))) + for o in left: + print(" Gaia DR3 %s = %s: G %.1f, %.1f mas, %.0f mas/yr%s" % (o["source_id"], o["simbad"], o["G"] or 0, o["plx"], o["pm"], + ", the secondary of a multiple" if o["secondary"] else "")) + json.dump(out, open(core.results("no2mass_nearby.json"), "w"), indent=1) + if record: + core.record_search( + "gaia_no2mass_nearby", "Light that appeared since 2MASS", archive="Gaia DR3 with the Gaia Catalogue of Nearby Stars and its 2MASS " + "best neighbours; 2MASS point sources (VizieR II/246) by CDS XMatch", release="DR3", + selection="Gaia Catalogue of Nearby Stars beyond parallax 50 mas at G 5-13 without a 2MASS best neighbour", + code=os.path.abspath(__file__), entry="no2mass", n_targets=len(out), n_unit="stars", + params=dict(plx_mas=plx_mas, G=g_range, radius_arcsec="%g + %g yr of proper motion" % (radius_arcsec, years), epoch=epoch), + null_summary="the cross-match's misses: a 2MASS source at the position carried back to 2000", + sensitivity="a source within 20 pc at G 13 or brighter, which 2MASS reaches at Ks 14 at its 1999 epoch", + ledger="Light that appeared since 2MASS", + result="%d stars, %d of them in 2MASS after all; none found: %d, %d of them secondaries of multiples (%s)" % ( + len(out), len(out) - len(left), len(left), sum(o["secondary"] for o in left), ", ".join(o["simbad"] or o["source_id"] for o in left))) + core.clear_targets("gaia_no2mass_nearby") + core.record_targets("gaia_no2mass_nearby", [dict( + target="gaia_dr3:%s" % o["source_id"], stat=o["sep"], unit="arcsec to the nearest 2MASS source at the position in 2000", + vet="artefact" if o["tmass"] else "blend" if o.get("secondary") else None, + note="2MASS %s at Ks %s; G %.1f, %.0f mas/yr" % (o["tmass"], o["K"], o["G"] or 0, o["pm"]) + if o["tmass"] else "%s, no 2MASS source within reach; G %.1f, %.0f mas/yr" % (o.get("simbad"), o["G"] or 0, o["pm"])) for o in out]) + print("recorded") + + +unknown_DOC = r"""Objects of unknown nature within 10 pc: SIMBAD entries with a parallax above 100 mas typed as of unknown nature ('?') or as not an object ('err'), each read for what it is. + + python -I seti.py neighbourhood unknown [record] [--plx-mas 100]""" + + +def unknown_main(record=False, plx_mas=100.0): + rows = core.simbad("SELECT main_id, otype, plx_value, sp_type, ra, dec, nbref FROM basic WHERE plx_value > %g AND otype IN ('?', 'err')" % plx_mas) + print("%d SIMBAD entries within 10 pc of unknown nature or not an object" % len(rows)) + for r in rows: + print(" %s: %s, %.1f mas, %s, %s references" % (r["main_id"], r["otype"], r["plx_value"], r["sp_type"], r["nbref"])) + json.dump(rows, open(core.results("unknown_nearby.json"), "w"), indent=1, default=str) + if record: + core.record_search( + "simbad_unknown_nearby", "Objects of unknown nature within 10 pc", archive="SIMBAD", + selection="parallax above 100 mas and object type '?' or 'err'", code=os.path.abspath(__file__), entry="unknown", + n_targets=len(rows), n_unit="SIMBAD entries", null_summary="the entry's own record and references", + sensitivity="any SIMBAD entry within 10 pc left without a nature", ledger="Objects of unknown nature within 10 pc", + result="%d entries: %s" % (len(rows), "; ".join("%s (%s)" % (r["main_id"], r["otype"]) for r in rows))) + core.clear_targets("simbad_unknown_nearby") + core.record_targets("simbad_unknown_nearby", [dict( + target="simbad:%s" % " ".join(str(r["main_id"]).split()), stat=r["plx_value"], unit="parallax, mas", + vet="catalogued-false-positive" if r["otype"] == "err" else None, note="SIMBAD type %s" % r["otype"]) for r in rows]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- +# light no class claims, rest in the universe's frame, thrust, copies, and where our own flags fall + + +def clean_photometry(g, bp_rp, excess): + """Gaia's corrected BP/RP excess (Riello et al. 2021) within 3 sigma of a single source's.""" + c = core.cstar(excess, bp_rp) + return c is not None and abs(c) < 3 * core.cstar_sigma(g) + + +def simbad_names(ids): + """{Gaia DR3 source_id: (main_id, otype)} from SIMBAD.""" + out = {} + for k in range(0, len(ids), 200): + q = ("SELECT i.id, b.main_id, b.otype FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'Gaia DR3 %s'" % x for x in ids[k:k + 200])) + for r in core.simbad(q): + out[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip()) + return out + + +oacells_DOC = r"""Light Gaia's outlier map could not place: sources within 100 pc (parallax above 10 mas at 10 sigma) at G below 17 with RUWE below 1.4 and a single-source BP/RP excess whose Outlier Analysis neuron (astrophysical_parameters.neuron_oa_id) carries no class label in oa_neuron_information, against the share of all Outlier Analysis sources that sit in unlabelled neurons. + + python -I seti.py neighbourhood oacells [record] [--plx-mas 10] [--sigma 10] [--g-max 17] [--ruwe-max 1.4]""" + + +def oacells_main(record=False, plx_mas=10.0, sigma=10.0, g_max=17.0, ruwe_max=1.4): + neurons = core.tap("gaia", "SELECT neuron_id, class_label, quality_category, hits FROM gaiadr3.oa_neuron_information") + label = {r["neuron_id"]: (r["class_label"] or "").strip() for r in neurons} + unlabelled = {n for n, c in label.items() if c.upper() in ("", "UNDEFINED", "UNKNOWN", "NOT_DEFINED", "NONE", "NULL")} + hits_all = sum(int(r["hits"] or 0) for r in neurons) + hits_un = sum(int(r["hits"] or 0) for r in neurons if r["neuron_id"] in unlabelled) + rows = core.tap_async("gaia", "SELECT g.source_id, g.parallax, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.phot_bp_rp_excess_factor, " + "a.neuron_oa_id, a.neuron_oa_dist_percentile_rank FROM gaiadr3.gaia_source AS g " + "JOIN gaiadr3.astrophysical_parameters AS a ON g.source_id = a.source_id WHERE g.parallax > %g AND " + "g.parallax_over_error > %g AND g.phot_g_mean_mag < %g AND g.ruwe < %g AND a.neuron_oa_id IS NOT NULL" % (plx_mas, sigma, g_max, ruwe_max), + maxrec=500000) + clean = [r for r in rows if num(r["bp_rp"]) is not None and clean_photometry(float(r["phot_g_mean_mag"]), float(r["bp_rp"]), + float(r["phot_bp_rp_excess_factor"]))] + hits = sorted([r for r in clean if r["neuron_oa_id"] in unlabelled], key=lambda r: -(num(r["neuron_oa_dist_percentile_rank"]) or 0)) + share_all = hits_un / max(hits_all, 1) + expect = share_all * len(clean) + names = simbad_names([r["source_id"] for r in hits[:200]]) + labels = {} + for r in clean: + c = label.get(r["neuron_oa_id"], "?") or "(none)" + labels[c] = labels.get(c, 0) + 1 + print("%d neurons, %d of them unlabelled holding %.1f per cent of all Outlier Analysis sources; %d clean nearby sources in the map, " + "classes %s; in unlabelled neurons %d against %.1f at the map's share" % (len(neurons), len(unlabelled), 100 * share_all, len(clean), + labels, len(hits), expect)) + for r in hits[:20]: + n = names.get(r["source_id"], ("-", "-")) + print(" Gaia DR3 %s: %.1f pc, G %.1f, BP-RP %.2f, neuron %s at distance rank %s; SIMBAD %s (%s)" % ( + r["source_id"], 1000 / float(r["parallax"]), float(r["phot_g_mean_mag"]), float(r["bp_rp"]), r["neuron_oa_id"], + r["neuron_oa_dist_percentile_rank"], *n)) + json.dump(dict(neurons=len(neurons), unlabelled=len(unlabelled), share=share_all, n=len(clean), labels=labels, hits=hits), open(core.results("oa_cells.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_oa_unlabelled", "Light Gaia's outlier map could not place", "Gaia DR3 astrophysical_parameters and oa_neuron_information", + "sources within 100 pc at G below 17, RUWE below 1.4, single-source BP/RP excess, in the Outlier Analysis map: %d" % len(clean), + os.path.abspath(__file__), "oacells", len(clean), "Gaia sources", dict(plx_mas=plx_mas, sigma=sigma, g=g_max, ruwe=ruwe_max), + "unlabelled neurons hold %.1f per cent of all Outlier Analysis sources: %.1f expected" % (100 * share_all, expect), + "a clean nearby source in a neuron Gaia's Outlier Analysis left without a class", + "%d in unlabelled neurons against %.1f" % (len(hits), expect), + [dict(target="gaia_dr3:%s" % r["source_id"], stat=num(r["neuron_oa_dist_percentile_rank"]), unit="distance rank within the neuron", + vet="chance-rate" if len(hits) <= expect + 3 * math.sqrt(max(expect, 1)) else None, + note="neuron %s; SIMBAD %s (%s)" % (r["neuron_oa_id"], *names.get(r["source_id"], ("-", "-")))) for r in hits]) + print("recorded") + + +noclass_DOC = r"""Bright nearby light no class claims: sources within 100 pc (parallax above 10 mas at 10 sigma) at G below 15 with RUWE below 1.4 and a single-source BP/RP excess whose five combined class probabilities from Gaia DR3's discrete source classifier (star, white dwarf, binary star, quasar, galaxy) all fall below 0.5, each read in SIMBAD. + + python -I seti.py neighbourhood noclass [record] [--plx-mas 10] [--sigma 10] [--g-max 15] [--ruwe-max 1.4] [--prob 0.5]""" + + +def noclass_main(record=False, plx_mas=10.0, sigma=10.0, g_max=15.0, ruwe_max=1.4, prob=0.5): + cls = ("star", "whitedwarf", "binarystar", "quasar", "galaxy") + rows = core.tap_async("gaia", "SELECT g.source_id, g.parallax, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.phot_bp_rp_excess_factor, %s " + "FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a ON g.source_id = a.source_id " + "WHERE g.parallax > %g AND g.parallax_over_error > %g AND g.phot_g_mean_mag < %g AND g.ruwe < %g AND %s" % ( + ", ".join("a.classprob_dsc_combmod_%s" % c for c in cls), plx_mas, sigma, g_max, ruwe_max, + " AND ".join("a.classprob_dsc_combmod_%s < %g" % (c, prob) for c in cls)), maxrec=200000) + total = core.tap("gaia", "SELECT COUNT(*) AS n FROM gaiadr3.gaia_source WHERE parallax > %g AND parallax_over_error > %g AND " + "phot_g_mean_mag < %g AND ruwe < %g" % (plx_mas, sigma, g_max, ruwe_max))[0]["n"] + hits = [r for r in rows if num(r["bp_rp"]) is not None and clean_photometry(float(r["phot_g_mean_mag"]), float(r["bp_rp"]), + float(r["phot_bp_rp_excess_factor"]))] + names = simbad_names([r["source_id"] for r in hits]) + print("%s sources within 100 pc at G below 15 with RUWE below 1.4; every class below 0.5: %d, %d of them with single-source photometry" % ( + total, len(rows), len(hits))) + for r in hits: + print(" Gaia DR3 %s: %.1f pc, G %.1f, BP-RP %.2f, probabilities %s; SIMBAD %s (%s)" % ( + r["source_id"], 1000 / float(r["parallax"]), float(r["phot_g_mean_mag"]), float(r["bp_rp"]), + " ".join("%s %.2f" % (c, float(r["classprob_dsc_combmod_" + c] or 0)) for c in cls), *names.get(r["source_id"], ("-", "-")))) + json.dump(dict(total=total, rows=rows, hits=hits), open(core.results("noclass_nearby.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_noclass_nearby", "Bright nearby light no class claims", "Gaia DR3 astrophysical_parameters (discrete source classifier)", + "sources within 100 pc at G below 15 and RUWE below 1.4: %s" % total, os.path.abspath(__file__), "noclass", int(total), "Gaia sources", + dict(plx_mas=plx_mas, sigma=sigma, g=g_max, ruwe=ruwe_max, prob=prob), "every class below %g among the clean bright sources" % prob, + "a bright nearby source with single-source photometry that the classifier gives to no class", + "%d with every class below 0.5, %d of them with single-source photometry" % (len(rows), len(hits)), + [dict(target="gaia_dr3:%s" % r["source_id"], stat=max(float(r["classprob_dsc_combmod_" + c] or 0) for c in cls), + unit="largest class probability", note="SIMBAD %s (%s)" % names.get(r["source_id"], ("-", "-"))) for r in hits]) + print("recorded") + + +cmbrest_DOC = r"""Something at rest in the universe's frame: the Sun moves at 369.82 km/s toward Galactic (264.021, +48.253) deg relative to the cosmic microwave background (Planck 2018), so a body at rest there moves at that speed toward (84.021, -48.253) as we see it; Gaia DR3 stars with radial velocities, parallaxes at 5 sigma and heliocentric speeds of 300-440 km/s (one asynchronous query), their velocities within 10 km/s of that vector at velocity errors below 10 km/s, against the counts within 10 km/s of 1000 vectors of the same speed in random directions. + + python -I seti.py neighbourhood cmbrest [record] [--tol-kms 10] [--err-kms 10] [--speed-range-kms 300 440] [--draws 1000]""" + +CMB_SUN = (369.82, 264.021, 48.253) + + +def galactic_velocity(rows): + """Heliocentric velocities (km/s) in Galactic Cartesian axes and their errors, for Gaia rows with radial velocities.""" + from astropy.coordinates import SkyCoord + import astropy.units as u + ra, de = np.array([float(r["ra"]) for r in rows]), np.array([float(r["dec"]) for r in rows]) + plx = np.array([float(r["parallax"]) for r in rows]) + c = SkyCoord(ra=ra * u.deg, dec=de * u.deg, distance=(1000 / plx) * u.pc, pm_ra_cosdec=np.array([float(r["pmra"]) for r in rows]) * u.mas / u.yr, + pm_dec=np.array([float(r["pmdec"]) for r in rows]) * u.mas / u.yr, + radial_velocity=np.array([float(r["radial_velocity"]) for r in rows]) * u.km / u.s, frame="icrs") + v = c.galactic.velocity + V = np.stack([v.d_x.to(u.km / u.s).value, v.d_y.to(u.km / u.s).value, v.d_z.to(u.km / u.s).value], 1) + k = 4.74047 / plx + vt = k * np.hypot([float(r["pmra"]) for r in rows], [float(r["pmdec"]) for r in rows]) + e = np.sqrt(np.array([float(r["radial_velocity_error"] or 0) for r in rows]) ** 2 + (vt * np.array([float(r["parallax_error"]) for r in rows]) / plx) ** 2 + + (k * np.hypot([float(r["pmra_error"] or 0) for r in rows], [float(r["pmdec_error"] or 0) for r in rows])) ** 2) + return V, e + + +def cmbrest_main(record=False, tol_kms=10.0, err_kms=10.0, speed_range_kms=[300.0, 440.0], draws=1000): + rows = core.tap_async("gaia", "SELECT source_id, ra, dec, parallax, parallax_error, pmra, pmra_error, pmdec, pmdec_error, radial_velocity, " + "radial_velocity_error, phot_g_mean_mag, ruwe FROM gaiadr3.gaia_source WHERE radial_velocity IS NOT NULL AND " + "parallax_over_error > 5 AND radial_velocity * radial_velocity + 22.4721 * (pmra * pmra + pmdec * pmdec) / " + "(parallax * parallax) BETWEEN %g AND %g" % (speed_range_kms[0] ** 2, speed_range_kms[1] ** 2), maxrec=2000000) + V, e = galactic_velocity(rows) + ok = e < err_kms + v0, l0, b0 = CMB_SUN[0], math.radians(CMB_SUN[1] + 180.0), -math.radians(CMB_SUN[2]) + target = v0 * np.array([math.cos(b0) * math.cos(l0), math.cos(b0) * math.sin(l0), math.sin(b0)]) + from scipy.spatial import cKDTree + tree = cKDTree(V[ok]) + found = tree.query_ball_point(target, tol_kms) + rng = np.random.default_rng(11) + d = rng.normal(size=(draws, 3)) + d = v0 * d / np.linalg.norm(d, axis=1)[:, None] + null = np.array(tree.query_ball_point(d, tol_kms, return_length=True)) + p = float(np.mean(null >= len(found))) + idx = np.nonzero(ok)[0][found] + print("%d stars at heliocentric speeds of 300-440 km/s, %d with velocity errors below 10 km/s; within 10 km/s of rest in the microwave " + "background's frame (U, V, W) = (%.1f, %.1f, %.1f): %d; around 1000 random vectors of the same speed: mean %.2f, maximum %d, as many " + "or more in %.3f" % (len(rows), int(ok.sum()), *target, len(found), float(null.mean()), int(null.max()), p)) + for i in idx: + print(" Gaia DR3 %s: %.0f pc, G %.1f, velocity %s, %.1f km/s from the frame" % ( + rows[i]["source_id"], 1000 / float(rows[i]["parallax"]), float(rows[i]["phot_g_mean_mag"]), np.round(V[i], 1).tolist(), + float(np.linalg.norm(V[i] - target)))) + json.dump(dict(n=len(rows), n_ok=int(ok.sum()), target=target.tolist(), found=[rows[i]["source_id"] for i in idx], null_mean=float(null.mean()), + null_max=int(null.max()), p=p), open(core.results("cmb_rest.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_cmb_rest", "Something at rest in the universe's frame", "Gaia DR3 gaia_source", "stars with radial velocities and parallaxes " + "at 5 sigma at heliocentric speeds of 300-440 km/s: %d, %d with velocity errors below 10 km/s" % (len(rows), int(ok.sum())), + os.path.abspath(__file__), "cmbrest", int(ok.sum()), "stars", dict(v_kms=CMB_SUN[0], l=CMB_SUN[1], b=CMB_SUN[2], tol_kms=tol_kms, err_kms=err_kms, + speed_range_kms=speed_range_kms, draws=draws), + "%d vectors of the same speed in random directions: mean %.2f, maximum %d" % (draws, float(null.mean()), int(null.max())), + "a star at rest in the cosmic microwave background's frame to 10 km/s within Gaia's radial-velocity reach", + "%d within 10 km/s against %.2f around random directions (as many or more in %.3f)" % (len(found), float(null.mean()), p), + [dict(target="gaia_dr3:%s" % rows[i]["source_id"], stat=float(np.linalg.norm(V[i] - target)), unit="km/s from rest in the frame", + vet="chance-rate" if p > 0.01 else None) for i in idx]) + print("recorded") + + +thrust_DOC = r"""Stars accelerating along their own motion: Gaia DR3's 7- and 9-parameter acceleration solutions (nss_acceleration_astro) with the acceleration at 5 sigma, the perspective acceleration of the radial velocity (-2 mu v_r parallax) removed where the cached sample within 100 pc gives the radial velocity, the angle between each acceleration and the star's proper motion, which an orbiting companion leaves uniform and thrust would gather near 0 deg; the share within 8 deg against the 4.4 per cent of a uniform angle. + + python -I seti.py neighbourhood thrust [record] [--sigma 5] [--window-deg 8]""" + + +def thrust_main(record=False, sigma=5.0, window_deg=8.0): + from scipy.stats import binomtest + rows = core.tap_async("gaia", "SELECT source_id, nss_solution_type, accel_ra, accel_ra_error, accel_dec, accel_dec_error, pmra, pmdec, parallax " + "FROM gaiadr3.nss_acceleration_astro", maxrec=500000) + # the perspective term matters only for near, fast stars: their radial velocities come from the cached sample within 100 pc + R, c = nearby_rv() + rvs = {r["source_id"]: v for r, v in zip(R, c["radial_velocity"]) if np.isfinite(v)} + keep, ang = [], [] + for r in rows: + ar, ad, er, ed = (num(r[k]) for k in ("accel_ra", "accel_dec", "accel_ra_error", "accel_dec_error")) + pa, pd, plx, rv = num(r["pmra"]), num(r["pmdec"]), num(r["parallax"]), rvs.get(r["source_id"]) + if None in (ar, ad, er, ed, pa, pd, plx) or not er or not ed or math.hypot(pa, pd) < 1: + continue + if rv is not None and plx > 0: + k = -2.0 * rv * plx * 1.0227e-9 + ar, ad = ar - k * pa, ad - k * pd + if math.hypot(ar / er, ad / ed) < sigma: + continue + cosang = (ar * pa + ad * pd) / (math.hypot(ar, ad) * math.hypot(pa, pd)) + keep.append(r) + ang.append(math.degrees(math.acos(max(-1.0, min(1.0, cosang))))) + ang = np.array(ang) + fwd, back = int(np.sum(ang < window_deg)), int(np.sum(ang > 180 - window_deg)) + p_f = binomtest(fwd, len(ang), window_deg / 180.0, alternative="greater").pvalue if len(ang) else 1.0 + hist = np.histogram(ang, bins=9, range=(0, 180))[0] + print("%d acceleration solutions, %d at 5 sigma after the perspective term; within 8 deg of the motion %d (%.2f per cent), within 8 deg " + "against it %d, against 4.44 per cent uniform (p of the forward excess %.3g); counts in 20 deg bins %s" % ( + len(rows), len(ang), fwd, 100 * fwd / max(len(ang), 1), back, p_f, hist.tolist())) + json.dump(dict(n=len(rows), n_sig=len(ang), forward=fwd, backward=back, p=p_f, hist=hist.tolist()), open(core.results("thrust.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_thrust_alignment", "Stars accelerating along their own motion", "Gaia DR3 nss_acceleration_astro", "acceleration solutions " + "at 5 sigma after the perspective term: %d" % len(ang), os.path.abspath(__file__), "thrust", len(ang), "stars", + dict(sigma=sigma, window_deg=window_deg), "a uniform angle between acceleration and motion: %.2f per cent within %g deg" % (100 * window_deg / 180.0, window_deg), + "an excess of accelerations within 8 deg of the stars' own motion", "%d forward (%.2f per cent) and %d backward against 4.44 per cent " + "each (forward p %.3g); counts in 20 deg bins %s" % (fwd, 100 * fwd / max(len(ang), 1), back, p_f, hist.tolist()), []) + print("recorded") + + +copies_DOC = r"""Copy stars on opposite sides of the sky: Gaia DR3 stars within 100 pc with radial velocities and velocities measured to 0.5 km/s, pairs more than 90 deg apart agreeing in G and BP-RP to 0.002 mag, in parallax to 0.2 per cent and in all three velocity components to 0.5 km/s, against the same count with the velocities shuffled among the stars twenty times. + + python -I seti.py neighbourhood copies [record] [--dmag 0.002] [--dplx 0.002] [--dv-kms 0.5] [--err-kms 0.5] [--shuffles 20]""" + + +def copies_main(record=False, dmag=0.002, dplx=0.002, dv_kms=0.5, err_kms=0.5, shuffles=20): + from scipy.spatial import cKDTree + R, c = nearby_rv() + va, vd, vr, ea, ed, er = nearby_velocity(c) + e = np.sqrt(ea ** 2 + ed ** 2 + er ** 2) + ok = np.isfinite(vr) & (e < err_kms) & np.isfinite(c["bp_rp"]) & np.isfinite(c["phot_g_mean_mag"]) + rhat, ahat, dhat, pos = nearby_axes(c) + vel = rhat * vr[:, None] + ahat * va[:, None] + dhat * vd[:, None] + idx = np.nonzero(ok)[0] + + def pairs(V): + X = np.column_stack([c["phot_g_mean_mag"][idx] / dmag, c["bp_rp"][idx] / dmag, np.log(c["parallax"][idx]) / dplx, V / dv_kms]) + out = [] + for i, j in cKDTree(X).query_pairs(1.0, p=np.inf): + if float(rhat[idx[i]] @ rhat[idx[j]]) < 0: + out.append((int(idx[i]), int(idx[j]))) + return out + found = pairs(vel[idx]) + rng = np.random.default_rng(5) + null = [len(pairs(vel[idx][rng.permutation(len(idx))])) for _ in range(shuffles)] + print("%d stars with velocities to 0.5 km/s; copy pairs more than 90 deg apart %d; with velocities shuffled %s" % (len(idx), len(found), null)) + for i, j in found: + print(" Gaia DR3 %s and %s" % (R[i]["source_id"], R[j]["source_id"])) + json.dump(dict(n=len(idx), pairs=[(R[i]["source_id"], R[j]["source_id"]) for i, j in found], null=null), open(core.results("copy_stars.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_copy_stars", "Copy stars on opposite sides of the sky", "Gaia DR3 gaia_source", "stars within 100 pc with velocities to 0.5 km/s: %d" + % len(idx), os.path.abspath(__file__), "copies", len(idx), "stars", dict(dmag=dmag, dcolour=dmag, dplx=dplx, dv_kms=dv_kms, err_kms=err_kms, sep_deg=90, shuffles=shuffles), + "velocities shuffled among the stars: %s" % null, "two stars more than 90 deg apart alike in brightness, colour, distance and velocity", + "%d pairs against %.1f with velocities shuffled" % (len(found), float(np.mean(null))), + [dict(target="gaia_dr3:%s" % R[i]["source_id"], note="copy of Gaia DR3 %s" % R[j]["source_id"]) for i, j in found]) + print("recorded") + + +def flagzones_positions(): + """Our store's Gaia DR3 targets with their ecliptic latitude and Galactic coordinates, and whether a run vetted them; cached.""" + p = core.results("store_positions.json") + db = sqlite3.connect(core.COVERAGE) + tg = {} + for t, v in db.execute("SELECT target, vet FROM coverage WHERE target LIKE 'gaia_dr3:%'"): + tg[t] = tg.get(t, False) or bool(v) + ids = [t.split(":")[1] for t in tg] + pos = json.load(open(p)) if os.path.exists(p) else {} + todo = [i for i in ids if i not in pos] + if todo: + got = core.tap_by_ids("gaia", todo, "SELECT source_id, l, b, ecl_lat FROM gaiadr3.gaia_source WHERE source_id IN (%s)") + for i, r in got.items(): + pos[i] = (float(r["l"]), float(r["b"]), float(r["ecl_lat"])) + json.dump(pos, open(p, "w")) + return [(i, pos[i], tg["gaia_dr3:" + i]) for i in ids if i in pos] + + +def flagzones_runs(): + """Each run's Gaia DR3 targets of the coverage store as (star id, position, vetted) triples, keyed by run, for nulls that keep every run's own sky coverage.""" + pos = {i: q for i, q, _ in flagzones_positions()} + db = sqlite3.connect(core.COVERAGE) + runs = {} + for sid, t, v in db.execute("SELECT search_id, target, vet FROM coverage WHERE target LIKE 'gaia_dr3:%'"): + i = t.split(":")[1] + if i in pos: + runs.setdefault(sid, []).append((i, pos[i], bool(v))) + return runs + + +flagetz_DOC = r"""Our explained flags in Earth's transit zone: every Gaia DR3 star of the coverage store, the share of those some run vetted within 0.27 deg of the ecliptic, where they would see Earth transit the Sun, against the share of all the store's stars there. + + python -I seti.py neighbourhood flagetz [record] [--ecl-lat-deg 0.27]""" + + +def flagetz_main(record=False, ecl_lat_deg=0.27): + from scipy.stats import binomtest + rows = flagzones_positions() + zone = [r for r in rows if abs(r[1][2]) < ecl_lat_deg] + flagged = [r for r in rows if r[2]] + fz = [r for r in flagged if abs(r[1][2]) < ecl_lat_deg] + share = len(zone) / max(len(rows), 1) + p = binomtest(len(fz), len(flagged), share, alternative="greater").pvalue if flagged else 1.0 + print("%d store stars, %d in the transit zone (%.3f per cent); %d vetted, %d of them in the zone against %.1f (p %.3g)" % ( + len(rows), len(zone), 100 * share, len(flagged), len(fz), share * len(flagged), p)) + if record: + core.record_run( + "store_flags_etz", "Our explained flags in Earth's transit zone", "the coverage store with Gaia DR3 positions", + "Gaia DR3 targets of every run: %d" % len(rows), os.path.abspath(__file__), "flagetz", len(rows), "stars", dict(ecl_lat_deg=ecl_lat_deg), + "the share of all store stars within %g deg of the ecliptic: %.3f per cent" % (ecl_lat_deg, 100 * share), + "an excess of vetted targets in the zone from which Earth is seen to transit", "%d of %d vetted stars in the zone against %.1f " + "(p %.3g)" % (len(fz), len(flagged), share * len(flagged), p), []) + print("recorded") + + +flagdirs_DOC = r"""Our flags toward the obvious meeting-point directions: every Gaia DR3 star of the coverage store, the share of those some run vetted within 30 deg of the Galactic centre, of the anticentre and of either Galactic pole, against the share of all the store's stars in each. + +The share of all store stars toward a direction mixes runs that vet every target with runs that vet none, so the count is also taken run by run, each run's vetted count times its own share of targets toward the direction, with a normal tail on the hypergeometric variance. With `--apex` the directions are the solar apex and antapex instead (l 56.2, b +22.8 deg and its opposite), the way the Sun travels through its neighbours, where a civilisation that has noticed us coming or going would mark the sky, recorded as its own run. + + python -I seti.py neighbourhood flagdirs [record] [--radius-deg 30] [--pole-lat-deg 60] [--apex]""" + + +def flagdirs_main(record=False, radius_deg=30.0, pole_lat_deg=60.0, apex=False): + from scipy.stats import binomtest + rows = flagzones_positions() + flagged = [r for r in rows if r[2]] + + def ang(l1, b1, l2, b2): + return math.degrees(math.acos(max(-1.0, min(1.0, math.sin(math.radians(b1)) * math.sin(math.radians(b2)) + math.cos(math.radians(b1)) * + math.cos(math.radians(b2)) * math.cos(math.radians(l1 - l2)))))) + zones = {"centre": lambda l, b: ang(l, b, 0, 0) < radius_deg, "anticentre": lambda l, b: ang(l, b, 180, 0) < radius_deg, "poles": lambda l, b: abs(b) > pole_lat_deg} + if apex: + zones = {"apex": lambda l, b: ang(l, b, 56.2, 22.8) < radius_deg, "antapex": lambda l, b: ang(l, b, 236.2, -22.8) < radius_deg} + from scipy.stats import norm + runs = flagzones_runs() + out = {} + for k, f in zones.items(): + share = sum(f(r[1][0], r[1][1]) for r in rows) / max(len(rows), 1) + n = sum(f(r[1][0], r[1][1]) for r in flagged) + p = binomtest(n, len(flagged), share, alternative="greater").pvalue if flagged else 1.0 + mean, var, n_rt = 0.0, 0.0, 0 + for rr in runs.values(): + k_i = sum(r[2] for r in rr) + if not k_i: + continue + inzone = [f(r[1][0], r[1][1]) for r in rr] + s_i = sum(inzone) / len(rr) + mean += k_i * s_i + var += k_i * s_i * (1 - s_i) * (len(rr) - k_i) / max(len(rr) - 1, 1) + n_rt += sum(1 for r, z in zip(rr, inzone) if r[2] and z) + out[k] = dict(share=share, n=n, expect=share * len(flagged), p=p, run_n=n_rt, run_expect=mean, run_p=float(norm.sf((n_rt - mean) / math.sqrt(var))) if var else 1.0) + print("%d store stars, %d vetted: %s" % (len(rows), len(flagged), "; ".join("%s %d against %.1f from the whole store's share (p %.3g), %d run targets against %.1f when each " + "run's own coverage sets its share (p %.3g)" % (k, v["n"], v["expect"], v["p"], v["run_n"], v["run_expect"], v["run_p"]) + for k, v in out.items()))) + if record: + core.record_run( + "store_flags_apex" if apex else "store_flags_directions", "Our flags toward the solar apex" if apex else "Our flags toward the obvious meeting-point directions", + "the coverage store with Gaia DR3 positions", + "Gaia DR3 targets of every run: %d" % len(rows), os.path.abspath(__file__), "flagdirs", len(rows), "stars", dict(radius_deg=radius_deg, pole_lat_deg=pole_lat_deg, apex=apex), + "the share of all store stars toward each direction, and each run's own share of its targets toward it", "an excess of vetted targets toward the solar apex or antapex" if apex else + "an excess of vetted targets toward the Galactic centre, anticentre or poles", + "; ".join("%s %d of %d against %.1f from the whole store (p %.3g) and %d run targets against %.1f run by run (p %.3g)" % ( + k, v["n"], len(flagged), v["expect"], v["p"], v["run_n"], v["run_expect"], v["run_p"]) for k, v in out.items()), []) + print("recorded") + + +mysteries_DOC = r"""Well-studied neighbours of unknown nature: SIMBAD entries with parallaxes above 10 mas typed of unknown nature ('?') or as not an object ('err') that carry 20 or more references, objects much studied and still unclassified. + + python -I seti.py neighbourhood mysteries [record] [--plx-mas 10] [--min-refs 20]""" + + +def mysteries_main(record=False, plx_mas=10.0, min_refs=20): + rows = core.simbad("SELECT main_id, otype, plx_value, sp_type, nbref, ra, dec FROM basic WHERE plx_value > %g AND otype IN ('?', 'err') AND nbref >= %d" + % (plx_mas, min_refs)) + print("%d SIMBAD entries within 100 pc of unknown nature with 20 or more references: %s" % ( + len(rows), [(" ".join(str(r["main_id"]).split()), r["otype"], r["plx_value"], r["nbref"]) for r in rows])) + if record: + core.record_run("simbad_studied_unknowns", "Well-studied neighbours of unknown nature", "SIMBAD", "entries within 100 pc typed '?' or 'err' " + "with 20 or more references: %d" % len(rows), os.path.abspath(__file__), "mysteries", len(rows), "SIMBAD entries", dict(plx_mas=plx_mas, nbref=min_refs), + "the entries' own records", "a much-studied neighbour still without a class", "%d: %s" % (len(rows), "; ".join( + " ".join(str(r["main_id"]).split()) for r in rows)), + [dict(target="simbad:%s" % " ".join(str(r["main_id"]).split()), stat=r["nbref"], unit="references", + vet="catalogued-false-positive" if r["otype"] == "err" else None) for r in rows]) + print("recorded") + + +unbound_DOC = r"""Stars leaving the Galaxy from next door: the cached Gaia DR3 stars within 100 pc with radial velocities and velocity errors below 5 km/s, their speed about the Galactic centre with the Sun at (11.1, 245.0, 7.3) km/s, flagged above 550 km/s, the local escape speed (Monari et al. 2018 give 580 +- 63). + + python -I seti.py neighbourhood unbound [record] [--v-esc-kms 550] [--err-kms 5]""" + + +def unbound_main(record=False, v_esc_kms=550.0, err_kms=5.0): + R, c = nearby_rv() + va, vd, vr, ea, ed, er = nearby_velocity(c) + e = np.sqrt(ea ** 2 + ed ** 2 + er ** 2) + rhat, ahat, dhat, pos = nearby_axes(c) + vel = rhat * vr[:, None] + ahat * va[:, None] + dhat * vd[:, None] + # ICRS to Galactic axes (Hipparcos matrix), then the Sun's motion about the centre + A = np.array([[-0.0548755604, -0.8734370902, -0.4838350155], [0.4941094279, -0.4448296300, 0.7469822445], [-0.8676661490, -0.1980763734, 0.4559837762]]) + g = vel @ A.T + np.array([11.1, 245.0, 7.3]) + s = np.linalg.norm(g, axis=1) + ok = np.isfinite(s) & (e < err_kms) + hits = sorted([i for i in np.nonzero(ok & (s > v_esc_kms))[0]], key=lambda i: -s[i]) + print("%d stars with velocities to 5 km/s; Galactocentric speed median %.0f, 99.99th percentile %.0f, maximum %.0f km/s; above 550: %d %s" % ( + int(ok.sum()), float(np.median(s[ok])), float(np.percentile(s[ok], 99.99)), float(np.max(s[ok])), len(hits), + [(R[i]["source_id"], round(float(s[i]))) for i in hits[:10]])) + if record: + core.record_run("gaia_unbound_nearby", "Stars leaving the Galaxy from next door", "Gaia DR3 gaia_source (cached nearby sample)", + "stars within 100 pc with radial velocities and velocity errors below 5 km/s: %d" % int(ok.sum()), os.path.abspath(__file__), + "unbound", int(ok.sum()), "stars", dict(v_esc_kms=v_esc_kms, err_kms=err_kms, sun_uvw=[11.1, 245.0, 7.3]), "the local escape speed", + "a star within 100 pc moving faster than the Galaxy can hold", "%d above 550 km/s; the fastest %.0f km/s" % (len(hits), float(np.max(s[ok]))), + [dict(target="gaia_dr3:%s" % R[i]["source_id"], stat=float(s[i]), unit="Galactocentric speed, km/s") for i in hits]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- +# the nearest, the fastest and the stillest: limits of the nearby stars' astrometry + +proxima_DOC = r"""Something closer than Proxima Centauri: Gaia DR3 sources with parallaxes above 700 mas, flagged where the parallax exceeds Proxima's 768.07 mas at 5 sigma, each read for its solution (parameters solved, parallax over error, RUWE) and in SIMBAD. + + python -I seti.py neighbourhood proxima [record] [--plx-min-mas 700] [--sigma 5]""" + +PROXIMA_MAS = 768.07 + + +def proxima_main(record=False, plx_min_mas=700.0, sigma=5.0): + rows = core.tap("gaia", "SELECT source_id, ra, dec, parallax, parallax_error, parallax_over_error, phot_g_mean_mag, bp_rp, ruwe, pmra, pmdec, " + "astrometric_params_solved FROM gaiadr3.gaia_source WHERE parallax > %g" % plx_min_mas) + names = simbad_names([r["source_id"] for r in rows]) + closer = [r for r in rows if float(r["parallax"]) - sigma * float(r["parallax_error"]) > PROXIMA_MAS] + print("%d Gaia DR3 sources with parallax above 700 mas; above Proxima's %.2f mas at 5 sigma: %d" % (len(rows), PROXIMA_MAS, len(closer))) + for r in sorted(rows, key=lambda r: -float(r["parallax"])): + print(" Gaia DR3 %s: parallax %.1f +- %.1f mas (over error %.0f), G %.1f, RUWE %s, %s parameters; SIMBAD %s (%s)" % ( + r["source_id"], float(r["parallax"]), float(r["parallax_error"]), float(r["parallax_over_error"]), float(r["phot_g_mean_mag"]), + r["ruwe"], r["astrometric_params_solved"], *names.get(r["source_id"], ("-", "-")))) + if record: + core.record_run( + "gaia_closer_than_proxima", "Something closer than Proxima Centauri", "Gaia DR3 gaia_source; SIMBAD", "sources with parallax above 700 mas: %d" % len(rows), + os.path.abspath(__file__), "proxima", len(rows), "Gaia sources", dict(parallax_mas=PROXIMA_MAS, sigma=sigma, plx_min_mas=plx_min_mas), "Proxima Centauri's parallax", + "a source nearer than Proxima Centauri", "%d above %.2f mas at 5 sigma" % (len(closer), PROXIMA_MAS), + [dict(target="gaia_dr3:%s" % r["source_id"], stat=float(r["parallax"]), unit="parallax, mas", + vet="astrometry" if float(r["parallax_over_error"]) < 10 or (num(r["ruwe"]) or 0) > 1.4 else None, + note="SIMBAD %s (%s)" % names.get(r["source_id"], ("-", "-"))) for r in closer]) + print("recorded") + + +barnard_DOC = r"""Something faster across the sky than Barnard's Star: Gaia DR3 sources with total proper motions above 9000 mas/yr, flagged where the motion exceeds Barnard's Star's 10393 mas/yr at 5 sigma, each read for its solution and in SIMBAD. + + python -I seti.py neighbourhood barnard [record] [--pm-min-masyr 9000] [--sigma 5]""" + +BARNARD_MASYR = 10393.35 +BARNARD_ID = "4472832130942575872" + + +def barnard_main(record=False, pm_min_masyr=9000.0, sigma=5.0): + ids = [r["source_id"] for r in core.tap_async("gaia", "SELECT source_id FROM gaiadr3.gaia_source WHERE pm > %g" % pm_min_masyr, maxrec=10000)] + rows = list(core.tap_by_ids("gaia", ids, "SELECT source_id, pm, pmra, pmra_error, pmdec, pmdec_error, parallax, parallax_over_error, " + "phot_g_mean_mag, ruwe FROM gaiadr3.gaia_source WHERE source_id IN (%s)").values()) if ids else [] + names = simbad_names([r["source_id"] for r in rows]) + faster = [r for r in rows if r["source_id"] != BARNARD_ID and float(r["pm"]) - sigma * math.hypot(float(r["pmra_error"]), float(r["pmdec_error"])) > BARNARD_MASYR] + print("%d Gaia DR3 sources with proper motion above 9000 mas/yr; above Barnard's Star's %.0f at 5 sigma: %d" % (len(rows), BARNARD_MASYR, len(faster))) + for r in sorted(rows, key=lambda r: -float(r["pm"])): + print(" Gaia DR3 %s: %.0f mas/yr, parallax %s, G %.1f, RUWE %s; SIMBAD %s (%s)" % (r["source_id"], float(r["pm"]), r["parallax"], + float(r["phot_g_mean_mag"]), r["ruwe"], *names.get(r["source_id"], ("-", "-")))) + if record: + core.record_run( + "gaia_faster_than_barnard", "Something faster across the sky than Barnard's Star", "Gaia DR3 gaia_source; SIMBAD", + "sources with proper motion above 9000 mas/yr: %d" % len(rows), os.path.abspath(__file__), "barnard", len(rows), "Gaia sources", + dict(pm_masyr=BARNARD_MASYR, sigma=sigma, pm_min_masyr=pm_min_masyr), "Barnard's Star's proper motion", "a source crossing the sky faster than Barnard's Star", + "%d above %.0f mas/yr at 5 sigma" % (len(faster), BARNARD_MASYR), + [dict(target="gaia_dr3:%s" % r["source_id"], stat=float(r["pm"]), unit="proper motion, mas/yr", + vet="astrometry" if (num(r["parallax_over_error"]) or 0) < 10 or (num(r["ruwe"]) or 0) > 1.4 else None, + note="SIMBAD %s (%s)" % names.get(r["source_id"], ("-", "-"))) for r in faster]) + print("recorded") + + +still_DOC = r"""Stars standing still in the Galaxy: the cached Gaia DR3 stars within 100 pc with velocity errors below 5 km/s, their speed about the Galactic centre with the Sun at (11.1, 245.0, 7.3) km/s, flagged below 30 km/s, where the disc circles at 245 km/s and halo stars pass through at hundreds; each read in SIMBAD. + + python -I seti.py neighbourhood still [record] [--v-max-kms 30] [--err-kms 5]""" + + +def still_main(record=False, v_max_kms=30.0, err_kms=5.0): + R, c = nearby_rv() + va, vd, vr, ea, ed, er = nearby_velocity(c) + e = np.sqrt(ea ** 2 + ed ** 2 + er ** 2) + rhat, ahat, dhat, pos = nearby_axes(c) + vel = rhat * vr[:, None] + ahat * va[:, None] + dhat * vd[:, None] + A = np.array([[-0.0548755604, -0.8734370902, -0.4838350155], [0.4941094279, -0.4448296300, 0.7469822445], [-0.8676661490, -0.1980763734, 0.4559837762]]) + g = vel @ A.T + np.array([11.1, 245.0, 7.3]) + s = np.linalg.norm(g, axis=1) + ok = np.isfinite(s) & (e < err_kms) + slow = sorted(np.nonzero(ok & (s < v_max_kms))[0], key=lambda i: s[i]) + # a smooth distribution of velocities fills a sphere of speeds in proportion to its volume + n60 = int((ok & (s < 2 * v_max_kms)).sum()) + expect = n60 / 8.0 + order = np.argsort(np.where(ok, s, np.inf))[:5] + names = simbad_names([R[i]["source_id"] for i in order]) + mh = {r["source_id"]: num(r["mh_gspphot"]) for r in core.tap("gaia", "SELECT source_id, mh_gspphot FROM gaiadr3.astrophysical_parameters " + "WHERE source_id IN (%s)" % ",".join(R[i]["source_id"] for i in order))} + print("%d stars with velocities to 5 km/s; Galactocentric speed below 30 km/s: %d against %.1f from the %d below 60; the slowest %s" % ( + int(ok.sum()), len(slow), expect, n60, ["Gaia DR3 %s %.0f km/s (%s, [M/H] %s)" % (R[i]["source_id"], s[i], names.get(R[i]["source_id"], ("-",))[0], + mh.get(R[i]["source_id"])) for i in order])) + if record: + core.record_run("gaia_still_in_galaxy", "Stars standing still in the Galaxy", "Gaia DR3 gaia_source (cached nearby sample)", + "stars within 100 pc with velocity errors below 5 km/s: %d" % int(ok.sum()), os.path.abspath(__file__), "still", int(ok.sum()), + "stars", dict(v_max_kms=v_max_kms, err_kms=err_kms, sun_uvw=[11.1, 245.0, 7.3]), "the stars below %g km/s scaled by the volume of speeds: %.1f" % (2 * v_max_kms, expect), + "a star within 100 pc at rest about the Galactic centre", "%d below 30 km/s against %.1f; the slowest %.0f km/s" % ( + len(slow), expect, float(s[order[0]])), + [dict(target="gaia_dr3:%s" % R[i]["source_id"], stat=float(s[i]), unit="Galactocentric speed, km/s", + vet="chance-rate" if len(slow) <= expect + 3 * math.sqrt(max(expect, 1)) else None, + note="%s, [M/H] %s" % (names.get(R[i]["source_id"], ("-",))[0], mh.get(R[i]["source_id"]))) for i in slow]) + print("recorded") + + +fastrv_DOC = r"""Radial velocities the Galaxy cannot hold: Gaia DR3 radial velocities beyond +-700 km/s (the local escape speed plus the Sun's own motion) measured to 5 km/s over ten or more transits, within the RVS pipeline's +-1000 km/s search; each read for the share of its transits Gaia deblended from a neighbour's spectrum, its expected S/N and template, and in SIMBAD. + + python -I seti.py neighbourhood fastrv [record] [--rv-kms 700] [--error-kms 5] [--min-transits 10] [--deblended-share 0.3]""" + + +def fastrv_main(record=False, rv_kms=700.0, error_kms=5.0, min_transits=10, deblended_share=0.3): + ids = [r["source_id"] for r in core.tap_async("gaia", "SELECT source_id FROM gaiadr3.gaia_source WHERE ABS(radial_velocity) > %g AND " + "radial_velocity_error < %g AND rv_nb_transits >= %d" % (rv_kms, error_kms, min_transits), maxrec=100000)] + rows = list(core.tap_by_ids("gaia", ids, "SELECT source_id, radial_velocity, radial_velocity_error, rv_nb_transits, rv_nb_deblended_transits, " + "rv_expected_sig_to_noise, rv_template_teff, rv_method_used, parallax, parallax_over_error, phot_g_mean_mag, bp_rp, ruwe " + "FROM gaiadr3.gaia_source WHERE source_id IN (%s)").values()) if ids else [] + + def blended(r): + # transits whose spectra Gaia deblended carry a neighbour's light + return (num(r["rv_nb_deblended_transits"]) or 0) > deblended_share * float(r["rv_nb_transits"]) + names = simbad_names([r["source_id"] for r in rows]) + print("%d Gaia DR3 radial velocities beyond +-700 km/s to 5 km/s over ten or more transits" % len(rows)) + for r in sorted(rows, key=lambda r: -abs(float(r["radial_velocity"]))): + print(" Gaia DR3 %s: %+.1f +- %.1f km/s, %s transits (%s deblended), expected S/N %s, template %s K, G %.1f, BP-RP %s, parallax %s; SIMBAD %s (%s)" % ( + r["source_id"], float(r["radial_velocity"]), float(r["radial_velocity_error"]), r["rv_nb_transits"], r["rv_nb_deblended_transits"], + r["rv_expected_sig_to_noise"], r["rv_template_teff"], float(r["phot_g_mean_mag"]), r["bp_rp"], r["parallax"], *names.get(r["source_id"], ("-", "-")))) + if record: + core.record_run("gaia_rv_beyond_escape", "Radial velocities the Galaxy cannot hold", "Gaia DR3 gaia_source; SIMBAD", + "radial velocities beyond +-700 km/s to 5 km/s over ten or more transits: %d" % len(rows), os.path.abspath(__file__), "fastrv", + len(rows), "stars", dict(rv_kms=rv_kms, error_kms=error_kms, transits=min_transits, deblended_share=deblended_share), "the local escape speed plus the Sun's motion", + "a star whose line-of-sight speed alone escapes the Galaxy", "%d, %d of them with more than 0.3 of their transits deblended" % ( + len(rows), sum(blended(r) for r in rows)), + [dict(target="gaia_dr3:%s" % r["source_id"], stat=float(r["radial_velocity"]), unit="radial velocity, km/s", vet="blend" if blended(r) else None, + note="%s of %s transits deblended, expected S/N %s, template %s K; SIMBAD %s (%s)" % ( + r["rv_nb_deblended_transits"], r["rv_nb_transits"], r["rv_expected_sig_to_noise"], r["rv_template_teff"], + *names.get(r["source_id"], ("-", "-")))) for r in rows]) + print("recorded") + + +lattice_DOC = r"""A lattice among the nearby stars: the cached Gaia DR3 stars within 50 pc brighter than absolute G 10 (complete there), systems closer than 0.1 pc merged, the mean distance to the nearest neighbour of those within 45 pc over the Poisson expectation 0.554 n^-1/3 (the Clark-Evans ratio: 1 at random, above 1 for a regular spacing, below for clustering), against 1000 uniform volumes of the same number. + + python -I seti.py neighbourhood lattice [record] [--radius-pc 50] [--inner-pc 45] [--abs-g 10] [--merge-pc 0.1] [--sims 1000]""" + + +def lattice_main(record=False, radius_pc=50.0, inner_pc=45.0, abs_g=10.0, merge_pc=0.1, sims=1000): + from scipy.spatial import cKDTree + R, c = nearby_astrometry() + plx = np.asarray(c["parallax"], float) + g = np.asarray(c["phot_g_mean_mag"], float) + ok = (plx > 1000.0 / radius_pc) & np.isfinite(g) & (g + 5 * np.log10(plx / 100.0) < abs_g) + rhat, ahat, dhat, pos = nearby_axes(c) + P = pos[ok] + # systems: stars within 0.1 pc of one another counted once + tree = cKDTree(P) + keep = np.ones(len(P), bool) + for i, j in sorted(tree.query_pairs(merge_pc)): + if keep[i] and keep[j]: + keep[j] = False + P = P[keep] + + def ratio(X): + d, _ = cKDTree(X).query(X, k=2) + inner = np.linalg.norm(X, axis=1) < inner_pc + n = len(X) / (4 / 3.0 * math.pi * radius_pc ** 3) + return float(np.mean(d[inner, 1]) / (0.554 * n ** (-1 / 3.0))) + obs = ratio(P) + rng = np.random.default_rng(17) + sims = [] + for _ in range(sims): + u = rng.normal(size=(len(P), 3)) + u = u / np.linalg.norm(u, axis=1)[:, None] * (radius_pc * rng.random(len(P)) ** (1 / 3.0))[:, None] + sims.append(ratio(u)) + sims = np.array(sims) + p_reg = float(np.mean(sims >= obs)) + print("%d systems within 50 pc brighter than absolute G 10; Clark-Evans ratio %.3f against %.3f +- %.3f for uniform volumes (as high or higher in %.3f)" % ( + len(P), obs, float(sims.mean()), float(sims.std()), p_reg)) + if record: + core.record_run("gaia_nearby_lattice", "A lattice among the nearby stars", "Gaia DR3 gaia_source (cached nearby sample)", + "systems within 50 pc brighter than absolute G 10: %d" % len(P), os.path.abspath(__file__), "lattice", len(P), "star systems", + dict(radius_pc=radius_pc, inner_pc=inner_pc, abs_g=abs_g, merge_pc=merge_pc, sims=len(sims)), "%d uniform volumes: %.3f +- %.3f" % (len(sims), float(sims.mean()), float(sims.std())), + "nearby star systems spaced more regularly than at random", "Clark-Evans ratio %.3f, as high or higher in %.3f of uniform volumes" % (obs, p_reg), []) + print("recorded") + + +uncatalogued_DOC = r"""Bright stars no older catalogue holds: Gaia DR3 sources brighter than G 6 without a Hipparcos-2 or a Tycho-2 best neighbour; each read in SIMBAD for a name of its own, and those unnamed matched to Hipparcos (I/239) within 3 arcmin by CDS XMatch, a star within 5 arcsec being the same star; flagged where neither holds it. + + python -I seti.py neighbourhood uncatalogued [record] [--g-max 6] [--hip-arcsec 5] [--search-arcsec 180]""" + + +def uncatalogued_main(record=False, g_max=6.0, hip_arcsec=5.0, search_arcsec=180.0): + rows = core.tap_async("gaia", "SELECT g.source_id, g.ra, g.dec, g.phot_g_mean_mag, g.bp_rp, g.parallax, g.ruwe, g.astrometric_params_solved, " + "g.duplicated_source FROM gaiadr3.gaia_source AS g LEFT OUTER JOIN gaiadr3.hipparcos2_best_neighbour AS h " + "ON g.source_id = h.source_id LEFT OUTER JOIN gaiadr3.tycho2tdsc_merge_best_neighbour AS t ON g.source_id = t.source_id " + "WHERE g.phot_g_mean_mag < %g AND h.source_id IS NULL AND t.source_id IS NULL" % g_max, maxrec=100000) + names = simbad_names([r["source_id"] for r in rows]) + # the nearest Hipparcos star within 3 arcmin, whose glare can make a spurious source, by one cross-match of the unnamed + near = {} + for m in core.xmatch([dict(source_id="g%s" % r["source_id"], ra=float(r["ra"]), dec=float(r["dec"])) for r in rows if not names.get(r["source_id"])], + "I/239/hip_main", search_arcsec): + k = m["source_id"][1:] + if k not in near or float(m["angDist"]) < float(near[k]["sep"]): + near[k] = dict(hip=m["HIP"], hp_mag=m.get("Hpmag"), sep=float(m["angDist"])) + out = [dict(r, simbad=names.get(r["source_id"]), near=near.get(r["source_id"])) for r in rows] + named = [o for o in out if o["simbad"]] + print("%d Gaia DR3 sources brighter than G 6 without a Hipparcos-2 or Tycho-2 best neighbour; %d with a SIMBAD entry of their own" % (len(out), len(named))) + for o in sorted(out, key=lambda o: (bool(o["simbad"]), float(o["phot_g_mean_mag"])))[:len(out) - len(named) + 5]: + print(" Gaia DR3 %s: G %.2f, BP-RP %s, %s parameters, RUWE %s, duplicated %s; SIMBAD %s; nearest Hipparcos star %s" % ( + o["source_id"], float(o["phot_g_mean_mag"]), o["bp_rp"], o["astrometric_params_solved"], o["ruwe"], o["duplicated_source"], + "%s (%s)" % o["simbad"] if o["simbad"] else "-", "HIP %s (Hp %s) at %.0f arcsec" % (o["near"]["hip"], o["near"]["hp_mag"], float(o["near"]["sep"])) + if o["near"] else "none within 3 arcmin")) + on_hip = [o for o in out if not o["simbad"] and o["near"] and o["near"]["sep"] < hip_arcsec] + left = [o for o in out if not o["simbad"] and not (o["near"] and o["near"]["sep"] < hip_arcsec)] + print("unnamed within 5 arcsec of a Hipparcos star: %d; neither named nor on a Hipparcos star: %d" % (len(on_hip), len(left))) + if record: + core.record_run("gaia_bright_uncatalogued", "Bright stars no older catalogue holds", "Gaia DR3 gaia_source, hipparcos2 and tycho2tdsc_merge best " + "neighbours; SIMBAD; Hipparcos (I/239) by CDS XMatch", "sources brighter than G 6 without a Hipparcos-2 or Tycho-2 best neighbour: %d" + % len(out), os.path.abspath(__file__), "uncatalogued", len(out), "Gaia sources", dict(g=g_max, hip_arcsec=hip_arcsec, search_arcsec=search_arcsec), + "SIMBAD's names and the nearest Hipparcos star", "a bright star no catalogue before Gaia held", + "%d named in SIMBAD, %d within 5 arcsec of a Hipparcos star, %d neither" % (len(named), len(on_hip), len(left)), + [dict(target="gaia_dr3:%s" % o["source_id"], stat=float(o["phot_g_mean_mag"]), unit="G mag", + note="nearest Hipparcos star %s" % ("HIP %s at %.0f arcsec" % (o["near"]["hip"], o["near"]["sep"]) if o["near"] else "none within 3 arcmin")) + for o in left]) + print("recorded") + + +galplx_DOC = r"""Galaxies with parallaxes: Gaia DR3 sources the discrete source classifier calls galaxies (combined probability above 0.9) with a parallax above 10 mas at 10 sigma, which nothing beyond the Galaxy can have; each read for its solution (RUWE, a second image peak, image asymmetry, excess noise), for BP/RP light that is not a single source's (the classifier reads the BP and RP spectra) and in SIMBAD. + + python -I seti.py neighbourhood galplx [record] [--prob 0.9] [--plx-mas 10] [--sigma 10] [--ruwe-max 1.4] [--multi-peak 2] [--harmonic 0.1] [--excess-noise-sig 2]""" + + +def galplx_main(record=False, prob=0.9, plx_mas=10.0, sigma=10.0, ruwe_max=1.4, multi_peak=2.0, harmonic=0.1, excess_noise_sig=2.0): + rows = core.tap_async("gaia", "SELECT g.source_id, g.l, g.b, g.parallax, g.parallax_over_error, g.pm, g.phot_g_mean_mag, g.bp_rp, g.ruwe, " + "g.ipd_frac_multi_peak, g.ipd_gof_harmonic_amplitude, g.astrometric_excess_noise_sig, g.phot_bp_rp_excess_factor, " + "a.classprob_dsc_combmod_galaxy " + "FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a ON g.source_id = a.source_id WHERE g.parallax > %g " + "AND g.parallax_over_error > %g AND a.classprob_dsc_combmod_galaxy > %g" % (plx_mas, sigma, prob), maxrec=100000) + + def doubtful(r): + # an astrometric solution Gaia's own image and fit statistics doubt: a poor fit, a second peak, an asymmetric image or excess noise + return ((num(r["ruwe"]) or 0) > ruwe_max or (num(r["ipd_frac_multi_peak"]) or 0) > multi_peak or (num(r["ipd_gof_harmonic_amplitude"]) or 0) > harmonic + or (num(r["astrometric_excess_noise_sig"]) or 0) > excess_noise_sig) + def blended(r): + # the classifier reads the BP and RP spectra, which a neighbour's light fills when the flux excess is not a single source's + g, br, c = num(r["phot_g_mean_mag"]), num(r["bp_rp"]), num(r["phot_bp_rp_excess_factor"]) + return g is None or br is None or c is None or not clean_photometry(g, br, c) + + def vet(r): + return "astrometry" if doubtful(r) else "blend" if blended(r) else None + good = [r for r in rows if not doubtful(r)] + names = simbad_names([r["source_id"] for r in good]) + g = np.array([num(r["phot_g_mean_mag"]) or np.nan for r in rows]) + b = np.array([abs(float(r["b"])) for r in rows]) + print("%d Gaia DR3 sources classed galaxies above 0.9 with parallaxes above 10 mas at 10 sigma: median G %.1f, %d within 15 deg of the plane; " + "%d with a solution Gaia's statistics doubt" % (len(rows), float(np.nanmedian(g)), int((b < 15).sum()), len(rows) - len(good))) + for r in good: + print(" Gaia DR3 %s: l %.1f b %.1f, parallax %.1f (over error %.0f), pm %.0f mas/yr, G %s, BP-RP %s, RUWE %s; SIMBAD %s (%s)" % ( + r["source_id"], float(r["l"]), float(r["b"]), float(r["parallax"]), float(r["parallax_over_error"]), num(r["pm"]) or 0, r["phot_g_mean_mag"], + r["bp_rp"], r["ruwe"], *names.get(r["source_id"], ("-", "-")))) + if record: + core.record_run("gaia_galaxies_with_parallax", "Galaxies with parallaxes", "Gaia DR3 gaia_source and astrophysical_parameters; SIMBAD", + "sources classed galaxies above 0.9 with parallaxes above 10 mas at 10 sigma: %d" % len(rows), os.path.abspath(__file__), "galplx", + len(rows), "Gaia sources", dict(prob=prob, plx_mas=plx_mas, sigma=sigma, ruwe=ruwe_max, multi_peak=multi_peak, harmonic=harmonic, excess_noise_sig=excess_noise_sig), + "a parallax that nothing extragalactic has", "a source Gaia calls a galaxy within 100 pc", + "%d, %d with a solution Gaia's statistics doubt and %d of the rest with BP/RP light from a neighbour; median G %.1f, %d within 15 deg " + "of the Galactic plane" % (len(rows), len(rows) - len(good), sum(blended(r) for r in good), float(np.nanmedian(g)), int((b < 15).sum())), + [dict(target="gaia_dr3:%s" % r["source_id"], stat=float(r["parallax"]), unit="parallax, mas", vet=vet(r), + note="G %s, l %.1f b %.1f, RUWE %s, galaxy probability %.2f" % (r["phot_g_mean_mag"], float(r["l"]), float(r["b"]), r["ruwe"], + float(r["classprob_dsc_combmod_galaxy"]))) for r in rows]) + print("recorded") + + +qsomove_DOC = r"""Quasars that move: Gaia DR3 quasar candidates both classifiers call quasars (classlabel_dsc_joint) with a QSOC redshift above 1, whose proper motion exceeds 10 mas/yr at 10 sigma, which no source at cosmological distance can show; each read for its solution, for BP/RP light that is not a single source's, and in SIMBAD. + + python -I seti.py neighbourhood qsomove [record] [--pm-masyr 10] [--sigma 10] [--z-min 1] [--ruwe-max 1.4] [--multi-peak 2] [--harmonic 0.1] [--excess-noise-sig 2]""" + + +def qsomove_main(record=False, pm_masyr=10.0, sigma=10.0, z_min=1.0, ruwe_max=1.4, multi_peak=2.0, harmonic=0.1, excess_noise_sig=2.0): + lean = core.gaia_by_range("SELECT q.source_id, q.redshift_qsoc, q.flags_qsoc, g.pm, g.pmra_error, g.pmdec_error FROM gaiadr3.qso_candidates AS q " + "JOIN gaiadr3.gaia_source AS g ON q.source_id = g.source_id WHERE q.source_id BETWEEN {lo} AND {hi} AND " + "q.classlabel_dsc_joint = 'quasar' AND q.redshift_qsoc > %g AND g.pm > %g" % (z_min, pm_masyr), maxrec=200000) + lean = {r["source_id"]: r for r in lean if float(r["pm"]) > sigma * math.hypot(float(r["pmra_error"]), float(r["pmdec_error"]))} + full = core.tap_by_ids("gaia", list(lean), "SELECT source_id, l, b, parallax, parallax_over_error, phot_g_mean_mag, bp_rp, ruwe, ipd_frac_multi_peak, " + "ipd_gof_harmonic_amplitude, astrometric_excess_noise_sig, phot_bp_rp_excess_factor FROM gaiadr3.gaia_source " + "WHERE source_id IN (%s)") if lean else {} + rows = [dict(full[k], **lean[k]) for k in lean if k in full] + + def doubtful(r): + return ((num(r["ruwe"]) or 0) > ruwe_max or (num(r["ipd_frac_multi_peak"]) or 0) > multi_peak or (num(r["ipd_gof_harmonic_amplitude"]) or 0) > harmonic + or (num(r["astrometric_excess_noise_sig"]) or 0) > excess_noise_sig) + + def blended(r): + g, br, c = num(r["phot_g_mean_mag"]), num(r["bp_rp"]), num(r["phot_bp_rp_excess_factor"]) + return g is None or br is None or c is None or not clean_photometry(g, br, c) + good = [r for r in rows if not doubtful(r) and not blended(r)] + names = simbad_names([r["source_id"] for r in good]) + print("%d joint-class quasars at QSOC redshift above 1 moving above 10 mas/yr at 10 sigma; %d with doubtful astrometry, %d more with a neighbour's " + "BP/RP light; clean %d" % (len(rows), sum(doubtful(r) for r in rows), sum(blended(r) and not doubtful(r) for r in rows), len(good))) + for r in good[:30]: + print(" Gaia DR3 %s: pm %.0f mas/yr, parallax %.1f (over error %.0f), G %s, BP-RP %s, z_QSOC %s (flags %s); SIMBAD %s (%s)" % ( + r["source_id"], float(r["pm"]), float(r["parallax"]), float(r["parallax_over_error"]), r["phot_g_mean_mag"], r["bp_rp"], r["redshift_qsoc"], + r["flags_qsoc"], *names.get(r["source_id"], ("-", "-")))) + if record: + core.record_run("gaia_moving_quasars", "Quasars that move", "Gaia DR3 qso_candidates and gaia_source; SIMBAD", + "joint-class quasars at QSOC redshift above 1 moving above 10 mas/yr at 10 sigma: %d" % len(rows), os.path.abspath(__file__), "qsomove", + len(rows), "Gaia sources", dict(pm_masyr=pm_masyr, sigma=sigma, z=z_min, ruwe=ruwe_max, multi_peak=multi_peak, harmonic=harmonic, excess_noise_sig=excess_noise_sig), + "a proper motion nothing at cosmological distance shows", + "a quasar that moves across the sky", "%d, %d with doubtful astrometry or a neighbour's light; %d clean" % ( + len(rows), len(rows) - len(good), len(good)), + [dict(target="gaia_dr3:%s" % r["source_id"], stat=float(r["pm"]), unit="proper motion, mas/yr", + vet="astrometry" if doubtful(r) else "blend" if blended(r) else None, + note="z_QSOC %s, flags %s, parallax %.1f mas; SIMBAD %s (%s)" % (r["redshift_qsoc"], r["flags_qsoc"], float(r["parallax"]), + *names.get(r["source_id"], ("-", "-")))) for r in rows]) + print("recorded") + + +ETZ_HALF_DEG = 0.264 # Earth is seen to cross the Sun from within this ecliptic latitude + + +def etz_stars(): + """Gaia Catalogue of Nearby Stars objects (probability above 0.9) within ETZ_HALF_DEG of the ecliptic, which see Earth cross the Sun, and those 1-5 deg from it, each with its position, proper motion and parallax at 2016.0 and its ecliptic latitude; kept in the results directory as gcns_etz.json.""" + path = core.results("gcns_etz.json") + if os.path.exists(path): + return json.load(open(path)) + eps = math.radians(23.4392911) + rows = catalogues.gcns("source_id, ra, dec, pmra, pmdec, parallax", ranges=12) + out = dict(zone=[], near=[]) + for r in rows: + a, d = math.radians(float(r["ra"])), math.radians(float(r["dec"])) + beta = abs(math.degrees(math.asin(math.sin(d) * math.cos(eps) - math.cos(d) * math.sin(eps) * math.sin(a)))) + if beta < ETZ_HALF_DEG or 1 <= beta < 5: + out["zone" if beta < ETZ_HALF_DEG else "near"].append(dict(id=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), pmra=num(r["pmra"]) or 0.0, + pmdec=num(r["pmdec"]) or 0.0, plx=float(r["parallax"]), beta=round(beta, 4))) + json.dump(out, open(path, "w")) + return out + + +def etz_share(cat, radius, epoch, keep=None): + """Stars of the transit zone and of the band 1-5 deg beside it (KEEP selects by position) with a source of the CDS catalogue CAT within RADIUS arcsec at EPOCH: the zone's matches (nearest per star), the band's matched count and size, the count the band's share predicts for the zone, its Poisson p, and the zone's matches moved 2 arcmin in eight directions.""" + from scipy.stats import poisson + from setitools.catalogues import shifted_matches + st = etz_stars() + + def place(s): + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, epoch) + return dict(name="g%s" % s["id"], ra=ra % 360, dec=de) + zone = [place(s) for s in st["zone"] if keep is None or keep(s)] + near = [place(s) for s in st["near"] if keep is None or keep(s)] + hits, null = shifted_matches(zone, cat, radius) + got = {} + for m in hits: + if m["source_id"] not in got or float(m["angDist"]) < float(got[m["source_id"]]["angDist"]): + got[m["source_id"]] = m + far = set() + for k in range(0, len(near), 5000): + far |= {m["source_id"] for m in core.xmatch([dict(source_id=p["name"], ra=p["ra"], dec=p["dec"]) for p in near[k:k + 5000]], cat, radius)} + exp = len(far) / max(len(near), 1) * len(zone) + return dict(zone=len(zone), near=len(near), got=got, far=len(far), exp=exp, p=float(poisson.sf(len(got) - 1, exp)) if got else 1.0, null=null) + + +def etz_vets(got): + """SIMBAD's name, type and spectral type for each matched zone star, and an active-star vet where the type says so.""" + sim = {} + if got: + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % n[1:] for n in got)): + sim["g" + str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + active = ("BY*", "RS*", "Er*", "Fl*", "TT*", "Y*O", "Y*?", "EB*", "SB*", "**", "CV*", "WD*", "Ro*", "El*", "Em*", "X", "Ae*", "Be*", "a2*") + return {n: (sim.get(n), "active-star" if sim.get(n) and sim[n][1] in active else None) for n in got} + + +encounters_DOC = r"""Stars that passed within a parsec of the Sun: Bailer-Jones (2022) encounter stars from Gaia EDR3 with a median perihelion distance below 1 pc (J/ApJ/935/L9), past passages and future ones apart; each read in SIMBAD, matched to eRASS1 within 15 arcsec (2020.0), VLASS epoch-1 components within 3 arcsec (2019.0), GALEX GUVcat AIS within 5 arcsec (2007.0) and AllWISE within 3 arcsec for W1-W3 redder than 0.3 mag, each against the stars moved 2 arcmin in eight directions, and looked up among Breakthrough Listen's open-data targets by HIP and GJ name; a civilisation at one of these stars had the Sun within a parsec. X-rays or ultraviolet at a cool dwarf are its corona and chromosphere, and a W1-W3 under 0.7 at a red star its photosphere. + + python -I seti.py neighbourhood encounters [record] [--w13-min 0.3] [--w3-err-max 0.2]""" + + +def encounters_main(record=False, w13_min=0.3, w3_err_max=0.2): + from setitools.catalogues import shifted_matches + rows = core.tap("vizier", 'SELECT * FROM "J/ApJ/935/L9/table12"') + st = [] + for r in rows: + st.append(dict(id=r["GaiaDR3"], t_kyr=num(r["tphmed"]), d_pc=num(r["dphmed"]), d95=num(r["dph95"]), v=num(r["vphmed"]), plx=num(r["Plx"]), g=num(r["Gmag"]), + bprp=num(r["BP-RP"]))) + pm = {r["source_id"]: r for r in core.tap("gaia", "SELECT source_id, ra, dec, pmra, pmdec FROM gaiadr3.gaia_source WHERE source_id IN (%s)" % ",".join(s["id"] for s in st))} + for s in st: + s["ra"], s["dec"] = float(pm[s["id"]]["ra"]), float(pm[s["id"]]["dec"]) + s["pmra"], s["pmdec"] = num(pm[s["id"]]["pmra"]) or 0.0, num(pm[s["id"]]["pmdec"]) or 0.0 + names = {} + for x in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type, b.oid FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in st)): + names[str(x["id"]).split()[-1]] = dict(main=" ".join(str(x["main_id"]).split()), otype=str(x["otype"]).strip(), sp=(x["sp_type"] or "").strip(), oid=str(x["oid"]), ids=[]) + for x in core.simbad("SELECT oidref, id FROM ident WHERE oidref IN (%s) AND (id LIKE 'HIP %%' OR id LIKE 'GJ %%' OR id LIKE 'NAME %%')" % ",".join( + n["oid"] for n in names.values())): + for n in names.values(): + if n["oid"] == str(x["oidref"]): + n["ids"].append(str(x["id"])) + + def at(epoch): + return [dict(name=s["id"], **dict(zip(("ra", "dec"), core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, epoch)))) for s in st] + found = {} + nulls = {} + for key, cat, radius, epoch, keyfn in (("eRASS1", "J/A+A/682/A34/erass1-m", 15.0, 2020.0, None), ("VLASS", "J/ApJS/255/30/comp", 3.0, 2019.0, None), + ("GALEX", "II/335/galex_ais", 5.0, 2007.0, None), + ("warm", "II/328/allwise", 3.0, 2010.5, lambda m: num(m.get("W3mag")) is not None and num(m.get("e_W3mag")) is not None + and num(m["e_W3mag"]) < w3_err_max and num(m["W1mag"]) - num(m["W3mag"]) > w13_min)): + hits, null = shifted_matches(at(epoch), cat, radius, keyfn=keyfn) + nulls[key] = null + for m in hits: + label = ("W1-W3 %.2f" % (num(m["W1mag"]) - num(m["W3mag"])) if key == "warm" else + m.get("IAUName") or m.get("CompName") or m.get("Name") or m.get("objid") or "%.1f arcsec" % float(m["angDist"])) + found.setdefault(m["source_id"], {})[key] = label + bl = {} + for s in st: + for ident in names.get(s["id"], {}).get("ids", []): + tag = ident.replace("HIP ", "HIP").replace("GJ ", "GJ").replace("NAME ", "").replace(" ", "") + try: + files = core.bl_query_files(tag) + except Exception: + files = [] + if files: + bl[s["id"]] = (tag, len(files)) + break + past = [s for s in st if s["t_kyr"] is not None and s["t_kyr"] < 0] + print("%d stars within 1 pc at perihelion, %d past and %d to come; matches %s against moved %s; Breakthrough Listen has observed %d" % ( + len(st), len(past), len(st) - len(past), {k: sum(1 for f in found.values() if k in f) for k in nulls}, nulls, len(bl))) + for s in sorted(st, key=lambda s: s["d_pc"]): + n = names.get(s["id"], {}) + print(" Gaia DR3 %s %s (%s, %s): %.3f pc %+.0f kyr at %.0f km/s, now %.1f pc, G %.1f; %s; BL %s" % ( + s["id"], n.get("main", "-"), n.get("otype", "-"), n.get("sp", "-"), s["d_pc"], s["t_kyr"], s["v"], 1000 / s["plx"], s["g"], found.get(s["id"], {}), bl.get(s["id"]))) + if record: + act = ("BY*", "RS*", "Er*", "Fl*", "TT*", "Y*O", "EB*", "**", "SB*", "CV*", "WD*", "Ro*", "Em*", "X", "LM*", "BD*", "LP*", "Mi*", "RG*", "s*r", "sr*") + + def vet(s): + f = found.get(s["id"]) + if not f: + return "not-measured" + if names.get(s["id"], {}).get("otype") in act: + return "natural-type" + cool = s["bprp"] is not None and s["bprp"] > 0.9 + if ("eRASS1" in f or "GALEX" in f) and cool: + return "active-star" + if set(f) == {"warm"} and cool and float(f["warm"].split()[-1]) < 0.7: + return "photosphere" + return None + core.record_run("close_encounter_stars", "Stars that passed within a parsec of the Sun", "Bailer-Jones (2022) Gaia EDR3 encounters (J/ApJ/935/L9); eRASS1, VLASS, GALEX " + "and AllWISE by CDS XMatch; SIMBAD; Breakthrough Listen open data", "stars with a median perihelion below 1 pc: %d" % len(st), + os.path.abspath(__file__), "encounters", len(st), "stars", dict(perihelion_pc=1, radius_arcsec=dict(erass1=15, vlass=3, galex=5, allwise=3), w13_min=w13_min, + w3_err_max=w3_err_max), + "the stars moved 2 arcmin: %s" % nulls, "emission from a star that had the Sun within a parsec", + "%s against means %s moved; %d observed by Breakthrough Listen" % ({k: sum(1 for f in found.values() if k in f) for k in nulls}, + {k: round(float(np.mean(v)), 1) for k, v in nulls.items()}, len(bl)), + [dict(target="gaia_dr3:%s" % s["id"], stat=s["d_pc"], unit="perihelion, pc", vet=vet(s), + note="%s (%s); %+.0f kyr at %.0f km/s; %s; BL %s" % (names.get(s["id"], {}).get("main"), names.get(s["id"], {}).get("otype"), s["t_kyr"], s["v"], + found.get(s["id"], {}), bl.get(s["id"]))) for s in st]) + print("recorded") + + +nearlens_DOC = r"""Microlensing of the neighbours: Gaia DR3's 363 microlensing events (vari_microlensing) whose lensed source has a parallax above 1 mas at 3 sigma; a lens in front of a star within a kiloparsec is nearer still, and a timescale of weeks to months then needs a lens of stellar mass or more with no star seen, a dark massive body in the solar neighbourhood. Each read for Gaia's own doubt of the parallax (RUWE above 1.4, or under 5 sigma at a source fainter than G 19), for a SIMBAD type that varies on its own, for Gaia's variability class, and for the blended fit's source fraction, under which half the light and the parallax belong to another star; a clean event's lens may sit just in front of its source at any small mass, which these fits cannot exclude. + + python -I seti.py neighbourhood nearlens [record] [--plx-mas 1] [--sigma 3] [--ruwe-max 1.4] [--faint-g 19] [--faint-sigma 5] [--source-fraction 0.5] [--relative-kms 50]""" + + +def nearlens_main(record=False, plx_mas=1.0, sigma=3.0, ruwe_max=1.4, faint_g=19.0, faint_sigma=5.0, source_fraction=0.5, relative_kms=50.0): + rows = core.tap("gaia", "SELECT m.source_id, m.paczynski0_te, m.paczynski0_u0, m.paczynski0_g0, m.paczynski1_fs_g, m.paczynski1_fs_g_error, g.parallax, " + "g.parallax_over_error, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.ra, g.dec, g.l, g.b, c.best_class_name, c.best_class_score FROM " + "gaiadr3.vari_microlensing AS m JOIN gaiadr3.gaia_source AS g ON m.source_id = g.source_id LEFT OUTER JOIN gaiadr3.vari_classifier_result AS c " + "ON m.source_id = c.source_id WHERE g.parallax > %g AND g.parallax_over_error > %g" % (plx_mas, sigma), timeout=300) + total = int(core.tap("gaia", "SELECT COUNT(*) AS n FROM gaiadr3.vari_microlensing")[0]["n"]) + sim = {} + for x in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % r["source_id"] for r in rows)): + sim[str(x["id"]).split()[-1]] = (" ".join(str(x["main_id"]).split()), str(x["otype"]).strip(), (x["sp_type"] or "").strip()) + varies = ("V*", "LP*", "Mi*", "sr*", "RR*", "Ce*", "EB*", "CV*", "No*", "Y*O", "TT*", "Or*", "BY*", "RS*", "Er*", "Fl*", "Sy*", "AB*", "RG*", "s*r", "pA*", "Ro*", "Pu*") + out = [] + for r in rows: + s = sim.get(r["source_id"]) + plx, te = float(r["parallax"]), float(r["paczynski0_te"]) + # the lens mass at half the source's distance for a relative motion of 50 km/s: tE = theta_E / mu, theta_E = 2.85 mas sqrt(M pi_rel) + mu = relative_kms / 4.74 * 2 * plx + mass = (te / 365.25 * mu / 2.85) ** 2 / plx + fs = num(r["paczynski1_fs_g"]) + # a parallax under 5 sigma at a faint source is the faint end's tail of spurious solutions; a source carrying under half the light lends its parallax to the blend; + # a clean event's lens may sit just in front of its source at any small mass, which these columns cannot exclude + vet = ("astrometry" if float(r["ruwe"]) > ruwe_max or (float(r["parallax_over_error"]) < faint_sigma and float(r["phot_g_mean_mag"]) > faint_g) else + "natural-type" if s and s[1] in varies else "variable-star" if r["best_class_name"] and r["best_class_name"] != "MICROLENSING" else + "blend" if fs is not None and fs < source_fraction else "not-measured") + out.append(dict(id=r["source_id"], plx=round(plx, 2), poe=round(float(r["parallax_over_error"]), 1), te=round(te, 1), u0=round(float(r["paczynski0_u0"]), 2), + g=round(float(r["phot_g_mean_mag"]), 1), ruwe=round(float(r["ruwe"]), 2), b=round(float(r["b"]), 1), cls=r["best_class_name"], simbad=s, + fs=fs, mass=round(mass, 1), vet=vet)) + left = [o for o in out if o["vet"] == "not-measured"] + print("%d Gaia DR3 microlensing events, %d on sources with parallax above 1 mas at 3 sigma; %d with doubtful astrometry, %d of a variable type, %d whose source is " + "under half the light; %d clean events whose lens the fits cannot place %s" % (total, len(out), sum(1 for o in out if o["vet"] == "astrometry"), + sum(1 for o in out if o["vet"] in ("natural-type", "variable-star")), + sum(1 for o in out if o["vet"] == "blend"), len(left), [o["id"] for o in left])) + for o in sorted(out, key=lambda o: -o["plx"]): + print(" Gaia DR3 %s: parallax %.2f mas (%.1f sigma), tE %.1f d, u0 %.2f, G %.1f, RUWE %.2f, b %.1f, source fraction %s; class %s; SIMBAD %s; lens at half the " + "distance %.1f Msun; %s" % (o["id"], o["plx"], o["poe"], o["te"], o["u0"], o["g"], o["ruwe"], o["b"], o["fs"], o["cls"], o["simbad"], o["mass"], o["vet"])) + if record: + core.record_run("gaia_microlensing_near", "Microlensing of the neighbours", "Gaia DR3 vari_microlensing, gaia_source and vari_classifier_result; SIMBAD", + "microlensing events on sources with parallax above 1 mas at 3 sigma: %d of %d" % (len(out), total), os.path.abspath(__file__), "nearlens", len(out), + "events", dict(parallax_mas=plx_mas, sigma=sigma, ruwe=ruwe_max, faint_g=faint_g, faint_sigma=faint_sigma, source_fraction=source_fraction, + relative_kms=relative_kms), "none: each event read for its astrometry, type, class and blending", + "a lens of stellar mass or more within a kiloparsec with no star seen", "%d events; %d clean, whose lenses the fits leave anywhere in front of the " + "source at any small mass %s" % (len(out), len(left), [o["id"] for o in left]), + [dict(target="gaia_dr3:%s" % o["id"], stat=o["mass"], unit="lens mass at half the source distance, Msun", vet=o["vet"], + note="parallax %.2f mas at %.1f sigma, tE %.1f d, RUWE %.2f; class %s; SIMBAD %s" % (o["plx"], o["poe"], o["te"], o["ruwe"], o["cls"], o["simbad"])) + for o in out]) + print("recorded") + + +hvsorigin_DOC = r"""Unbound stars from nowhere: the 52 hypervelocity-star candidates of Li et al. (2023; J/AJ/166/12) with Gaia proper motions, velocities and distances, each placed in Galactocentric coordinates and traced straight back along its velocity for 300 Myr: a star thrown by the central black hole passes within 1 kpc of the Centre, one from the Large Magellanic Cloud within 5 kpc of the Cloud, and a disc runaway crossed the disc within 25 kpc of the Centre or sits within 1.5 kpc of it still; a star whose path back does none of these was launched some other way. A velocity error above 150 km/s leaves the path unmeasured, and a star more likely bound than not in the catalogue's own Milky Way potential is a halo star whose speed its distance error inflates. + + python -I seti.py neighbourhood hvsorigin [record] [--centre-kpc 1] [--cloud-kpc 5] [--disc-kpc 25] [--disc-z-kpc 1.5] [--within-myr 300] [--velocity-error-max 150]""" + + +def hvsorigin_main(record=False, centre_kpc=1.0, cloud_kpc=5.0, disc_kpc=25.0, disc_z_kpc=1.5, within_myr=300.0, velocity_error_max=150.0): + from astropy.coordinates import SkyCoord, Galactocentric + import astropy.units as u + rows = core.tap("vizier", 'SELECT Name, Gaia, RAJ2000, DEJ2000, pmRA, e_pmRA, pmDE, e_pmDE, Vlos, e_Vlos, Dist, e_Dist, VGSR, e_VGSR, "Pub-MW" FROM "J/AJ/166/12/table2"') + frame = Galactocentric() + lmc = SkyCoord(80.894 * u.deg, -69.756 * u.deg, distance=49.6 * u.kpc).transform_to(frame) + lmc_xyz = np.array([lmc.x.value, lmc.y.value, lmc.z.value]) + out = [] + for r in rows: + c = SkyCoord(float(r["RAJ2000"]) * u.deg, float(r["DEJ2000"]) * u.deg, distance=float(r["Dist"]) * u.kpc, pm_ra_cosdec=float(r["pmRA"]) * u.mas / u.yr, + pm_dec=float(r["pmDE"]) * u.mas / u.yr, radial_velocity=float(r["Vlos"]) * u.km / u.s).transform_to(frame) + x = np.array([c.x.value, c.y.value, c.z.value]) + v = np.array([c.v_x.value, c.v_y.value, c.v_z.value]) + speed = float(np.linalg.norm(v)) + a_gc = float(np.degrees(np.arccos(np.clip(np.dot(x, v) / (np.linalg.norm(x) * speed), -1, 1)))) + d = x - lmc_xyz + a_lmc = float(np.degrees(np.arccos(np.clip(np.dot(d, v) / (np.linalg.norm(d) * speed), -1, 1)))) + # the straight line back along the velocity (kpc, Myr): the closest approach to the Centre and to the Cloud, and where it last crossed the disc + kpc_per_myr = speed * 1.0227e-3 + unit = v / speed + t_gc = max(float(np.dot(x, unit)) / kpc_per_myr, 0.0) + d_gc = float(np.linalg.norm(x - unit * t_gc * kpc_per_myr)) + t_lmc = max(float(np.dot(d, unit)) / kpc_per_myr, 0.0) + d_lmc = float(np.linalg.norm(d - unit * t_lmc * kpc_per_myr)) + t_disc = float(x[2] / v[2]) * 977.8 if v[2] != 0 else float("inf") + r_disc = float(np.hypot(*(x[:2] - v[:2] * t_disc / 977.8))) if 0 < t_disc < within_myr else None + err = float(r["e_VGSR"]) + # a star still inside the disc is a disc star whatever its speed; one above it is a disc runaway when its path back crosses the disc within 25 kpc + p_unbound = num(r["Pub-MW"]) or 0.0 + origin = ("not-measured" if err > velocity_error_max else "Galactic Centre" if d_gc < centre_kpc and t_gc < within_myr else + "Large Magellanic Cloud" if d_lmc < cloud_kpc and t_lmc < within_myr else + "disc" if abs(x[2]) < disc_z_kpc or (r_disc is not None and r_disc < disc_kpc) else "halo" if p_unbound < 0.5 else None) + out.append(dict(name=r["Name"].strip(), gaia=r["Gaia"], dist_kpc=float(r["Dist"]), vgsr=float(r["VGSR"]), e_vgsr=err, p_unbound=num(r["Pub-MW"]), speed=round(speed), + a_gc=round(a_gc), a_lmc=round(a_lmc), d_gc=round(d_gc, 1), d_lmc=round(d_lmc, 1), t_disc=round(t_disc) if r_disc is not None else None, + r_disc=round(r_disc, 1) if r_disc is not None else None, z=round(float(x[2]), 1), origin=origin)) + left = [o for o in out if o["origin"] is None] + from collections import Counter + print("%d hypervelocity candidates: origins %s; from nowhere %d %s" % (len(out), dict(Counter(o["origin"] for o in out)), len(left), + [(o["name"], o["speed"], o["d_gc"], o["d_lmc"], o["z"]) for o in left])) + for o in sorted(out, key=lambda o: -o["speed"]): + print(" %s: %d +- %.0f km/s at %.1f kpc (unbound with probability %s); passed %.1f kpc from the Centre and %.1f from the Cloud, crossed the disc %s Myr ago at R %s kpc, " + "z now %.1f kpc; %s" % (o["name"], o["speed"], o["e_vgsr"], o["dist_kpc"], o["p_unbound"], o["d_gc"], o["d_lmc"], o["t_disc"], o["r_disc"], o["z"], o["origin"])) + if record: + core.record_run("hvs_origins", "Unbound stars from nowhere", "Li et al. (2023) hypervelocity-star candidates (J/AJ/166/12) with Gaia astrometry", + "hypervelocity candidates: %d" % len(out), os.path.abspath(__file__), "hvsorigin", len(out), "stars", + dict(centre_kpc=centre_kpc, cloud_kpc=cloud_kpc, disc_kpc=disc_kpc, disc_z_kpc=disc_z_kpc, within_myr=within_myr, velocity_error_max=velocity_error_max), + "none: each star's straight path back against the three natural launch sites", + "an unbound star whose path back passes no Centre, Cloud or disc", "%s; %d from nowhere" % (dict(Counter(o["origin"] for o in out)), len(left)), + [dict(target="gaia_dr3:%s" % o["gaia"], stat=o["speed"], unit="Galactocentric speed, km/s", + vet="not-measured" if o["origin"] == "not-measured" else "natural-source" if o["origin"] else None, p=o["p_unbound"], + note="%s; %.1f kpc from the Centre and %.1f from the Cloud on the way back, disc crossing %s Myr ago at R %s kpc; velocity error %.0f km/s; unbound " + "with probability %s" % (o["name"], o["d_gc"], o["d_lmc"], o["t_disc"], o["r_disc"], o["e_vgsr"], o["p_unbound"])) for o in out]) + print("recorded") + + +siblings_DOC = r"""The solar siblings: HD 162826 and HD 186302, the two stars whose composition and age place their birth in the Sun's own cluster, read in eRASS1 (15 arcsec, 2020.0), VLASS (3 arcsec, 2019.0), GALEX (5 arcsec, 2007.0) and AllWISE (3 arcsec, W1-W3) by CDS XMatch, and looked up among Breakthrough Listen's targets; a civilisation there is the Sun's contemporary. + + python -I seti.py neighbourhood siblings [record] [--stars "HD 162826" "HD 186302"]""" + +SIBLINGS = ("HD 162826", "HD 186302") + + +def siblings_main(record=False, stars=list(SIBLINGS)): + st = [] + for x in core.simbad("SELECT b.main_id, b.ra, b.dec, b.pmra, b.pmdec, b.plx_value, b.sp_type, b.oid FROM basic AS b WHERE b.main_id IN (%s)" % ",".join("'%s'" % n for n in stars)): + ids = [str(i["id"]) for i in core.simbad("SELECT id FROM ident WHERE oidref = %s AND (id LIKE 'HIP %%' OR id LIKE 'GJ %%' OR id LIKE 'Gaia DR3 %%')" % x["oid"])] + st.append(dict(name=" ".join(str(x["main_id"]).split()), ra=float(x["ra"]), dec=float(x["dec"]), pmra=num(x["pmra"]) or 0.0, pmdec=num(x["pmdec"]) or 0.0, + plx=num(x["plx_value"]), sp=x["sp_type"], ids=ids)) + found = {s["name"]: {} for s in st} + for key, cat, radius, epoch in (("eRASS1", "J/A+A/682/A34/erass1-m", 15.0, 2020.0), ("VLASS", "J/ApJS/255/30/comp", 3.0, 2019.0), ("GALEX", "II/335/galex_ais", 5.0, 2007.0), + ("AllWISE", "II/328/allwise", 3.0, 2010.5)): + up = [] + for s in st: + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2000.0, epoch) + up.append(dict(source_id=s["name"].replace(" ", "_"), ra=ra, dec=de)) + for m in core.xmatch(up, cat, radius): + name = m["source_id"].replace("_", " ") + found[name][key] = (m.get("IAUName") or m.get("CompName") or ("NUV %s FUV %s" % (m.get("NUVmag"), m.get("FUVmag"))) if key != "AllWISE" else + "W1-W3 %.2f" % (num(m["W1mag"]) - num(m["W3mag"])) if num(m.get("W3mag")) is not None else "W3 unmeasured") + bl = {} + for s in st: + for ident in s["ids"]: + tag = ident.replace("HIP ", "HIP").replace("GJ ", "GJ").replace(" ", "") + try: + files = core.bl_query_files(tag) + except Exception: + files = [] + if files: + bl[s["name"]] = (tag, len(files)) + break + for s in st: + print("%s (%s, %.1f pc): %s; Breakthrough Listen %s" % (s["name"], s["sp"], 1000 / s["plx"], found[s["name"]], bl.get(s["name"]))) + if record: + core.record_run("solar_siblings", "The solar siblings", "SIMBAD; eRASS1, VLASS, GALEX and AllWISE by CDS XMatch; Breakthrough Listen open data", + " and ".join(stars), os.path.abspath(__file__), "siblings", len(st), "stars", dict(stars=list(stars), radius_arcsec=dict(erass1=15, vlass=3, galex=5, allwise=3)), + "none: two stars read in each archive", "emission from a star born beside the Sun", "; ".join("%s %s, BL %s" % (s["name"], found[s["name"]], bl.get(s["name"])) for s in st), + [dict(target="simbad:%s" % s["name"], vet="not-measured" if not found[s["name"]] and not bl.get(s["name"]) else "photosphere", + note="%s; BL %s" % (found[s["name"]], bl.get(s["name"]))) for s in st]) + print("recorded") + + +comovers_DOC = r"""The Sun's co-movers against the Sun: the stars the store holds within 1 km/s of the Sun's velocity (`gaia_rest_stars`), each read in Gaia DR3's astrophysical parameters for its metallicity (GSP-Spec, else GSP-Phot), alpha enhancement and FLAME age against the Sun's own (metallicity 0.00, alpha 0.00, 4.57 Gyr); a star born in the Sun's cluster shares its composition and age to 0.1 dex and a gigayear, so a co-mover that matches is a sibling and one that does not is either a chance alignment in velocity or something holding station with the Sun. Across a store of several hundred tests the lowest p of 0.004 is itself the expected extreme. + + python -I seti.py neighbourhood comovers [record] [--metallicity-dex 0.1] [--age-gyr 1.5] [--teff-min 4800]""" + + +def comovers_main(record=False, metallicity_dex=0.1, age_gyr=1.5, teff_min=4800.0): + import sqlite3 + db = sqlite3.connect(core.COVERAGE) + rows = db.execute("SELECT target, stat, note FROM coverage WHERE search_id = 'gaia_rest_stars'").fetchall() + ids = [t.split(":")[-1] for t, _, _ in rows] + ap = {r["source_id"]: r for r in core.tap("gaia", "SELECT source_id, teff_gspphot, mh_gspphot, mh_gspspec, alphafe_gspspec, age_flame, age_flame_lower, age_flame_upper, " + "mass_flame FROM gaiadr3.astrophysical_parameters WHERE source_id IN (%s)" % ",".join(ids))} + sim = {} + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join("'Gaia DR3 %s'" % i for i in ids)): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + out = [] + for (t, speed, note), i in zip(rows, ids): + a = ap.get(i, {}) + mh = num(a.get("mh_gspspec")) if num(a.get("mh_gspspec")) is not None else num(a.get("mh_gspphot")) + age = num(a.get("age_flame")) + teff = num(a.get("teff_gspphot")) + # the comparison holds for stars warm enough for Gaia's spectroscopic parameters; a cool dwarf's metallicity from Gaia is not to be trusted + measured = teff is not None and teff > teff_min and mh is not None + sibling = measured and abs(mh) < metallicity_dex and (age is None or abs(age - 4.57) < age_gyr) + out.append(dict(id=i, speed=round(float(speed), 2), simbad=sim.get(i), teff=teff, mh=mh, alpha=num(a.get("alphafe_gspspec")), age=age, + age_lo=num(a.get("age_flame_lower")), age_hi=num(a.get("age_flame_upper")), measured=measured, sibling=sibling, + vet="moving-group" if "moving-group" in (note or "") else "not-measured" if not measured else "chance-rate", note=note)) + print("%d stars within 1 km/s of the Sun; %d warm enough to compare; siblings by composition and age: %d" % (len(out), sum(1 for o in out if o["measured"]), + sum(1 for o in out if o["sibling"]))) + for o in out: + print(" Gaia DR3 %s %s: %.2f km/s; %s K, [M/H] %s, alpha %s, age %s (%s-%s) Gyr; %s" % (o["id"], o["simbad"], o["speed"], o["teff"], o["mh"], o["alpha"], o["age"], + o["age_lo"], o["age_hi"], "sibling" if o["sibling"] else o["vet"])) + if record: + core.record_run("sun_comovers_composition", "The Sun's co-movers against the Sun", "the store's gaia_rest_stars targets; Gaia DR3 astrophysical_parameters; SIMBAD", + "stars within 1 km/s of the Sun's velocity: %d" % len(out), os.path.abspath(__file__), "comovers", len(out), "stars", + dict(metallicity_dex=metallicity_dex, age_gyr=age_gyr, teff_min=teff_min), "the Sun's own composition and age", + "a co-mover that shares the Sun's composition and age, a sibling, or one that does not and still keeps its velocity", + "%d of %d comparable; %d siblings; the warm co-movers are 0.24-0.34 dex metal-poor and 1-2 Gyr younger than the Sun" % ( + sum(1 for o in out if o["measured"]), len(out), sum(1 for o in out if o["sibling"])), + [dict(target="gaia_dr3:%s" % o["id"], stat=o["mh"], unit="metallicity, dex", vet=o["vet"], note="%s; %s K, alpha %s, age %s Gyr; %.2f km/s from the Sun; %s" % ( + o["simbad"], o["teff"], o["alpha"], o["age"], o["speed"], o["note"])) for o in out]) + print("recorded") + + +trojanpoints_DOC = r"""The triangular points of nearby binaries: the Sixth Catalog of Orbits of Visual Binary Stars (orb6orbits.txt), orbits of grade 4 or better whose primary Gaia DR3 puts within 100 pc, each solved for 2016.0; a system is kept when Gaia holds the secondary within 0.3 arcsec or 15 per cent of the separation of where the orbit puts it, which checks the orbit, and the separation lies between 1 and 20 arcsec, so the points are resolved from the stars and the tolerance stays within 3 arcsec. L4 and L5 lie at the secondary's distance from the primary, 60 deg ahead of and behind it in the orbital plane, and are unstable for any stellar mass ratio, so nothing natural stays there; Gaia DR3 sources at the two points, other than the components, against the same count at ten other angles of the orbit. + + python -I seti.py neighbourhood trojanpoints [record] [--epoch 2016] [--grade-max 4] [--plx-min 10] [--sep-arcsec 1 20] [--point-deg 60]""" + +ORB6_URL = "https://www.astro.gsu.edu/wds/orb6/orb6orbits.txt" +ORB6_LABELS = ["RA,Dec (J2000)....", "WDS.......", "DD............", "ADS..", "HD....", "HIP...", "V1.11*", "V2.22*", "PPPP.PPPPPP*", "eee.eeeeee", "AAA.AAAAA*", + "ee.eeeee", "III.IIII", "eee.eeee", "NNN.NNNN*", "eee.eeee", "TTTTT.TTTTTT*", "eee.eeeeee", "E.EEEEEE", "e.eeeeee", "OOO.OOOO", "eee.eeee", "EQNX", "LAST", + "G", "N", "REF.....", "PNGFILE"] + + +def orb6_orbits(): + """Every ORB6 orbit: position (deg), WDS name, HIP, grade and the elements in years, arcsec and degrees (T as a Julian year).""" + path = core.results("orb6orbits.txt") + if not os.path.exists(path): + open(path, "wb").write(core.get(ORB6_URL, timeout=300)) + lines = open(path, encoding="latin-1").read().split("\n") + head = lines[5] + pos, k = [], 0 + for lab in ORB6_LABELS: + k = head.index(lab, k) + pos.append(k) + k += len(lab) + pos.append(len(head) + 60) + + def val(s): + m = re.match(r"\s*(\d*\.?\d+)\s*([a-zA-Z]?)", s) + return (float(m.group(1)), m.group(2)) if m else (None, "") + out = [] + for line in lines[7:]: + if len(line) < 200: + continue + f = [line[pos[i]:pos[i + 1]] for i in range(len(ORB6_LABELS))] + try: + ra = 15 * (int(f[0][0:2]) + int(f[0][2:4]) / 60 + float(f[0][4:9]) / 3600) + de = (int(f[0][10:12]) + int(f[0][12:14]) / 60 + float(f[0][14:18]) / 3600) * (-1 if f[0][9] == "-" else 1) + except ValueError: + continue + P, Pu = val(f[8]) + a, au = val(f[10]) + i, _ = val(f[12]) + node, _ = val(f[14]) + T, Tu = val(f[16]) + e, _ = val(f[18]) + om, _ = val(f[20]) + grade = f[24].strip() + if None in (P, a, i, node, T, e, om) or not grade.isdigit(): + continue + P = P * {"y": 1.0, "d": 1 / 365.25, "c": 100.0}.get(Pu, 1.0) + a = a * {"a": 1.0, "m": 1e-3}.get(au, 1.0) + T = T if Tu == "y" else (T - 51544.5) / 365.25 + 2000.0 if Tu == "d" else T + out.append(dict(wds=f[1].strip(), name=f[2].strip(), hip=f[5].strip(), ra=ra, dec=de, P=P, a=a, i=i, node=node, T=T, e=e, om=om, grade=int(grade))) + return out + + +def orb6_place(o, epoch, extra_deg=0.0): + """Sky offset (east, north; arcsec) of the point on the orbit at the true anomaly of EPOCH plus EXTRA_DEG, at the orbit's radius there.""" + M = 2 * math.pi * ((epoch - o["T"]) / o["P"] % 1.0) + E = M + for _ in range(60): + E = E - (E - o["e"] * math.sin(E) - M) / (1 - o["e"] * math.cos(E)) + nu = 2 * math.atan2(math.sqrt(1 + o["e"]) * math.sin(E / 2), math.sqrt(1 - o["e"]) * math.cos(E / 2)) + r = o["a"] * (1 - o["e"] * math.cos(E)) + u = nu + math.radians(extra_deg) + math.radians(o["om"]) + inc, node = math.radians(o["i"]), math.radians(o["node"]) + rho = r * math.sqrt(math.cos(u) ** 2 + math.sin(u) ** 2 * math.cos(inc) ** 2) + theta = node + math.atan2(math.sin(u) * math.cos(inc), math.cos(u)) + return rho * math.sin(theta), rho * math.cos(theta) + + +def trojanpoints_main(record=False, epoch=2016.0, grade_max=4, plx_min=10.0, sep_arcsec=[1.0, 20.0], point_deg=60.0): + orbits = [o for o in orb6_orbits() if o["grade"] <= grade_max] + up = [dict(source_id="o%d" % k, ra=o["ra"], dec=o["dec"]) for k, o in enumerate(orbits)] + near = {} + for k in range(0, len(up), 5000): + for m in core.xmatch(up[k:k + 5000], "I/355/gaiadr3", 5.0): + j = int(m["source_id"][1:]) + if num(m.get("Plx")) is not None and (j not in near or (num(m.get("Gmag")) or 99) < (num(near[j].get("Gmag")) or 99)): + near[j] = m + kept, hits, control = [], [], [] + for j, m in near.items(): + o = orbits[j] + if num(m["Plx"]) < plx_min: + continue + ex, ny = orb6_place(o, epoch) + rho = math.hypot(ex, ny) + if not sep_arcsec[0] <= rho <= sep_arcsec[1]: + continue + ra0, de0 = float(m["RAJ2000"]), float(m["DEJ2000"]) + rad = (3 * rho + 2) / 3600 + src = core.tap("gaia", "SELECT source_id, ra, dec, phot_g_mean_mag, parallax FROM gaiadr3.gaia_source WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.7f, %.7f, %.7f))" + % (ra0, de0, rad)) + pts = [(float(s["ra"]), float(s["dec"]), s["source_id"], num(s["phot_g_mean_mag"])) for s in src if s["source_id"] != m["Source"]] + tol = max(0.3, 0.15 * rho) + + def at(dx, dy): + return [sid for ra, de, sid, g in pts if math.hypot((ra - ra0) * math.cos(math.radians(de0)) * 3600 - dx, (de - de0) * 3600 - dy) < tol] + secondary = at(ex, ny) + if len(secondary) != 1: + continue + kept.append(dict(wds=o["wds"], name=o["name"], plx=num(m["Plx"]), rho=round(rho, 2), P=o["P"], grade=o["grade"], primary=m["Source"], secondary=secondary[0])) + for lab, ang in (("L4", point_deg), ("L5", -point_deg)): + found = [s for s in at(*orb6_place(o, epoch, ang)) if s != secondary[0]] + if found: + hits.append((o["wds"], o["name"], lab, found)) + for ang in (90.0, -90.0, 120.0, -120.0, 150.0, -150.0, 180.0, 30.0, -30.0, 210.0): + control.append(len([s for s in at(*orb6_place(o, epoch, ang)) if s != secondary[0]])) + exp = 2 * len(kept) * float(np.mean(control)) if control else 0.0 + print("%d ORB6 orbits of grade 4 or better; %d within 100 pc with the secondary where the orbit puts it and more than 1 arcsec away; Gaia sources at L4 or L5: %d %s " + "against %.2f from ten other angles of the same orbits" % (len(orbits), len(kept), len(hits), hits, exp)) + if record: + from scipy.stats import poisson + core.record_run("binary_triangular_points", "The triangular points of nearby binaries", "Sixth Catalog of Orbits of Visual Binary Stars; Gaia DR3 (I/355 by CDS XMatch, " + "gaia_source cones)", "orbits within 100 pc checked against Gaia's secondary: %d" % len(kept), os.path.abspath(__file__), "trojanpoints", len(kept), + "binaries", dict(epoch=epoch, grade_max=grade_max, plx_min=plx_min, sep_arcsec=sep_arcsec, point_deg=point_deg, tolerance="max(0.3 arcsec, 0.15 rho)"), + "the same count at ten other angles of each orbit: %.2f" % exp, "a Gaia source at L4 or L5 of a stellar pair, where nothing stays unheld", + "%d at the points against %.2f (p %.3f)" % (len(hits), exp, float(poisson.sf(len(hits) - 1, exp)) if hits else 1.0), + [dict(target="wds:%s" % k["wds"], stat=k["rho"], unit="separation, arcsec", vet="control" if not any(h[0] == k["wds"] for h in hits) else None, + note="%s; parallax %.1f mas, P %.1f yr, grade %d; Gaia DR3 %s + %s%s" % (k["name"], k["plx"], k["P"], k["grade"], k["primary"], k["secondary"], + "".join("; %s %s" % (h[2], h[3]) for h in hits if h[0] == k["wds"]))) for k in kept]) + print("recorded") + + +watchers_DOC = r"""Watchers of Jupiter's transits: Gaia Catalogue of Nearby Stars objects within the band of sky from which Jupiter is seen to cross the Sun, half a Sun's angular radius at Jupiter's distance (0.051 deg) either side of Jupiter's orbital plane, carried to 2007.0 and matched to GALEX GUVcat AIS within 5 arcsec by CDS XMatch, against the share of stars 1-5 deg from the plane and against the band moved 2 arcmin in eight directions; Jupiter is the planet an outside observer finds first, so a watcher sits where its transits show. Any planet's zone may be asked for, each from its orbital plane and distance. + + python -I seti.py neighbourhood watchers [record] [--planet jupiter] [--catalogue II/335/galex_ais] [--radius-arcsec 5] [--epoch 2007]""" + +# semi-major axis (au), inclination and ascending node (deg, J2000 ecliptic) of each planet's orbit +PLANET_ORBITS = {"mercury": (0.38710, 7.005, 48.331), "venus": (0.72333, 3.395, 76.680), "earth": (1.0, 0.0, 0.0), "mars": (1.52368, 1.850, 49.558), + "jupiter": (5.2026, 1.303, 100.464), "saturn": (9.5549, 2.489, 113.665), "uranus": (19.2184, 0.773, 74.006), "neptune": (30.110, 1.770, 131.784)} + + +def planet_zone_stars(planet, control=(1.0, 5.0)): + """Gaia Catalogue of Nearby Stars objects within PLANET's transit zone (a Sun's angular radius at its distance, either side of its orbital plane) and the band CONTROL deg from the plane, with positions, motions and parallaxes at 2016.0; kept in the results directory.""" + a, inc, node = PLANET_ORBITS[planet] + half = math.degrees(math.asin(0.0046505 / a)) + path = core.results("gcns_%s_zone.json" % planet) + if os.path.exists(path): + return json.load(open(path)) + eps = math.radians(23.4392911) + i, o = math.radians(inc), math.radians(node) + n = (math.sin(i) * math.sin(o), -math.sin(i) * math.cos(o), math.cos(i)) + out = dict(zone=[], near=[], half_deg=half) + for r in catalogues.gcns("source_id, ra, dec, pmra, pmdec, parallax", ranges=12): + ra, de = math.radians(float(r["ra"])), math.radians(float(r["dec"])) + x, y, z = math.cos(de) * math.cos(ra), math.cos(de) * math.sin(ra), math.sin(de) + ye, ze = y * math.cos(eps) + z * math.sin(eps), -y * math.sin(eps) + z * math.cos(eps) + beta = abs(math.degrees(math.asin(max(-1.0, min(1.0, x * n[0] + ye * n[1] + ze * n[2]))))) + if beta < half or control[0] <= beta < control[1]: + out["zone" if beta < half else "near"].append(dict(id=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), pmra=num(r["pmra"]) or 0.0, + pmdec=num(r["pmdec"]) or 0.0, plx=float(r["parallax"]), beta=round(beta, 4))) + json.dump(out, open(path, "w")) + return out + + +def watchers_main(record=False, planet="jupiter", catalogue="II/335/galex_ais", radius_arcsec=5.0, epoch=2007.0): + from scipy.stats import poisson + from setitools.catalogues import shifted_matches + planet = planet.lower() + st = planet_zone_stars(planet) + + def place(s): + ra, de = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, epoch) + return dict(name="g%s" % s["id"], ra=ra % 360, dec=de) + zone = [place(s) for s in st["zone"]] + near = [place(s) for s in st["near"]] + hits, null = shifted_matches(zone, catalogue, radius_arcsec) + got = {} + for m in hits: + if m["source_id"] not in got or float(m["angDist"]) < float(got[m["source_id"]]["angDist"]): + got[m["source_id"]] = m + far = set() + for k in range(0, len(near), 5000): + far |= {m["source_id"] for m in core.xmatch([dict(source_id=p["name"], ra=p["ra"], dec=p["dec"]) for p in near[k:k + 5000]], catalogue, radius_arcsec)} + exp = len(far) / max(len(near), 1) * len(zone) + p = float(poisson.sf(len(got) - 1, exp)) if got else 1.0 + vets = etz_vets(got) + mean = float(np.mean(null)) if len(null) else 0.0 + print("%s's transit zone is %.3f deg either side of its orbital plane; %d zone stars and %d stars 1-5 deg away; %s within %g arcsec: zone %d, away %d (%.2f expected in " + "the zone, p %.3g); zone moved 2 arcmin %s (mean %.1f); zone matches by SIMBAD type %s" % ( + planet.capitalize(), st["half_deg"], len(zone), len(near), catalogue, radius_arcsec, len(got), len(far), exp, p, null, mean, + sorted({(v[0] or (None, "none"))[1] for v in vets.values()}))) + if record: + slug = catalogue.split("/")[-1].replace("_ais", "") + core.record_run("%s_transit_zone_%s" % (planet, slug), "Watchers of %s's transits" % planet.capitalize(), + "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); %s by CDS XMatch; SIMBAD" % catalogue, + "stars within 100 pc and %.3f deg of %s's orbital plane: %d" % (st["half_deg"], planet.capitalize(), len(zone)), os.path.abspath(__file__), "watchers", + len(zone), "stars", dict(planet=planet, zone_deg=round(st["half_deg"], 4), control_deg=[1, 5], radius_arcsec=radius_arcsec, epoch=epoch, catalogue=catalogue), + "the share 1-5 deg from the plane (%d of %d); the zone moved 2 arcmin: %s" % (len(far), len(near), null), + "a source of %s at a star that sees %s transit, beyond the rate of stars beside the zone" % (catalogue, planet.capitalize()), + "%d against %.2f from the share beside the zone (p %.3g) and a mean of %.1f moved" % (len(got), exp, p, mean), + [dict(target="gaia_dr3:%s" % n[1:], vet=vets[n][1] or ("chance-rate" if p > 0.01 else None), note="SIMBAD %s; %s at %.1f arcsec" % ( + vets[n][0], ", ".join("%s %s" % (k, m.get(k)) for k in ("NUVmag", "FUVmag") if m.get(k) is not None) or "match", float(m["angDist"]))) + for n, m in sorted(got.items())]) + print("recorded") + + +roundbinaries_DOC = r"""Binaries on perfect circles: spectroscopic binaries of the Ninth Catalogue of Spectroscopic Binary Orbits (VizieR B/sb9) with periods beyond 100 days, where tides cannot have rounded the orbit, whose eccentricity is measured below 0.002 at its upper error, an orbit rounder than formation leaves, against the eccentricities of the rest; an eccentricity fixed at zero by the orbit's author carries a flag or no error and is set aside, and an evolved component rounds its orbit while it is a giant, so each match is read for its spectral types and its orbit's grade. + + python -I seti.py neighbourhood roundbinaries [record] [--p-min-d 100] [--tol 0.002] [--grade-min 3]""" + + +def roundbinaries_main(record=False, p_min_d=100.0, tol=0.002, grade_min=3.0): + orbits = core.tap("vizier", 'SELECT Seq, Per, e, e_e, f_e, K1, K2, Grade, Ref FROM "B/sb9/orbits" WHERE Per > %g AND e IS NOT NULL' % p_min_d) + main = {str(r["Seq"]): r for r in core.tap("vizier", 'SELECT Seq, Name, Sp1, Sp2, mag1, RAJ2000, DEJ2000 FROM "B/sb9/main"')} + meas, out = [], [] + for r in orbits: + e, ee, flag = num(r["e"]), num(r["e_e"]), str(r["f_e"] or "").strip() + if e is None or not ee or flag: + continue + meas.append(e + ee) + if e + ee < tol: + m = main.get(str(r["Seq"]), {}) + sp = " ".join(x for x in (str(m.get("Sp1") or "").strip(), str(m.get("Sp2") or "").strip()) if x) + evolved = any(x in sp for x in ("III", "II", "Ib", "Ia", "I ", "K0I", "G8I")) or (sp and sp[-1] == "I") + grade = num(r["Grade"]) + out.append(dict(seq=str(r["Seq"]), name=str(m.get("Name") or "").strip(), P=num(r["Per"]), e=e, ee=ee, k1=num(r["K1"]), k2=num(r["K2"]), grade=grade, sp=sp, + ref=str(r["Ref"] or "").strip(), + vet="evolved" if evolved else "unconstrained-geometry" if grade is not None and grade < grade_min else None)) + es = sorted(meas) + k = max(1, int(0.01 * len(es))) + left = [o for o in out if o["vet"] is None] + print("%d orbits beyond %g d with a measured eccentricity (flagged or errorless ones set aside); upper eccentricity below %g: %d, %d with an evolved component, %d of low " + "grade; unexplained %d; the lowest percentile of upper eccentricities sits at %.4f" % (len(meas), p_min_d, tol, len(out), sum(o["vet"] == "evolved" for o in out), + sum(o["vet"] == "unconstrained-geometry" for o in out), len(left), es[k - 1] if es else 0)) + for o in sorted(out, key=lambda o: o["e"] + o["ee"]): + print(" %s (SB9 %s): P %.2f d, e %.4f +- %.4f, K1 %s K2 %s km/s, grade %s, %s, %s; %s" % (o["name"], o["seq"], o["P"], o["e"], o["ee"], o["k1"], o["k2"], o["grade"], + o["sp"] or "-", o["ref"], o["vet"] or "unexplained")) + json.dump(dict(n=len(meas), hits=out), open(core.results("binaries_perfect_circles.json"), "w"), indent=1) + if record: + core.record_run( + "sb9_perfect_circles", "Binaries on perfect circles", "Ninth Catalogue of Spectroscopic Binary Orbits (VizieR B/sb9)", + "orbits beyond %g d with a measured eccentricity: %d" % (p_min_d, len(meas)), os.path.abspath(__file__), "roundbinaries", len(meas), "orbits", + dict(p_min_d=p_min_d, tol=tol, grade_min=grade_min), "the measured upper eccentricities themselves: the lowest percentile at %.4f" % (es[k - 1] if es else 0), + "an orbit beyond the tidal reach measured rounder than %g at its upper error" % tol, + "%d below %g: %d with an evolved component, %d of low grade; %d unexplained" % (len(out), tol, sum(o["vet"] == "evolved" for o in out), + sum(o["vet"] == "unconstrained-geometry" for o in out), len(left)), + [dict(target="sb9:%s" % o["seq"], stat=o["e"] + o["ee"], unit="upper eccentricity", vet=o["vet"], + note="%s, P %.2f d, e %.4f +- %.4f, grade %s, %s, %s" % (o["name"], o["P"], o["e"], o["ee"], o["grade"], o["sp"] or "-", o["ref"])) for o in out]) + print("recorded") + + +escapees_DOC = r"""Stars leaving the nearest clusters too fast: members of the open clusters within 200 pc in Hunt and Reffert (2023) (VizieR J/A+A/673/A114) with a Gaia radial velocity, each star's space velocity against its cluster's mean, those moving faster than 10 km/s relative to their cluster, well beyond the escape speed of a few hundred solar masses, as a star pushed out would; a close binary's orbital motion shows the same in one epoch's velocity, so each is read for its RUWE, its velocity error and its SIMBAD type; only clusters with twenty or more velocities whose members cohere to a median of 3 km/s about the mean are taken, since a loose group's mean is no reference; a membership probability below 0.8 leaves a star as likely a field star, and Gaia's velocities of hot stars carry errors of tens of km/s. + + python -I seti.py neighbourhood escapees [record] [--plx-min 5] [--v-min-kms 10] [--prob-min 0.5] [--rv-err-max 2] [--min-members 20] [--coherent-kms 3] [--prob-firm 0.8]""" + + +def escapees_main(record=False, plx_min=5.0, v_min_kms=10.0, prob_min=0.5, rv_err_max=2.0, min_members=20, coherent_kms=3.0, prob_firm=0.8): + from astropy.coordinates import SkyCoord + import astropy.units as u + clusters = {str(r["Name"]).strip(): r for r in core.tap("vizier", 'SELECT Name, RA_ICRS, DE_ICRS, Plx, pmRA, pmDE, RV, s_RV, n_RV, rt FROM "J/A+A/673/A114/clusters" ' + 'WHERE Plx > %g AND RV IS NOT NULL' % plx_min)} + members = core.tap("vizier", 'SELECT Name, GaiaDR3, Prob, inrt, RA_ICRS, DE_ICRS, pmRA, pmDE, Plx, RV, e_RV, RUWE, Gmag, "BP-RP" FROM "J/A+A/673/A114/members" ' + 'WHERE Plx > %g AND RV IS NOT NULL AND Prob > %g' % (plx_min, prob_min), timeout=900) + members = [m for m in members if str(m["Name"]).strip() in clusters and (num(m["e_RV"]) or 99) < rv_err_max] + + def uvw(ra, dec, plx, pmra, pmdec, rv): + c = SkyCoord(ra=ra * u.deg, dec=dec * u.deg, distance=(1000.0 / plx) * u.pc, pm_ra_cosdec=pmra * u.mas / u.yr, pm_dec=pmdec * u.mas / u.yr, + radial_velocity=rv * u.km / u.s).galactic + c.representation_type = "cartesian" + c.differential_type = "cartesian" + return np.array([c.velocity.d_x.to(u.km / u.s).value, c.velocity.d_y.to(u.km / u.s).value, c.velocity.d_z.to(u.km / u.s).value]) + cl_v = {n: uvw(float(r["RA_ICRS"]), float(r["DE_ICRS"]), float(r["Plx"]), float(r["pmRA"]), float(r["pmDE"]), float(r["RV"])) for n, r in clusters.items()} + per, dvs = {}, {} + for m in members: + n = str(m["Name"]).strip() + v = uvw(float(m["RA_ICRS"]), float(m["DE_ICRS"]), float(m["Plx"]), float(m["pmRA"]), float(m["pmDE"]), float(m["RV"])) + dvs[str(m["GaiaDR3"])] = float(np.linalg.norm(v - cl_v[n])) + per.setdefault(n, []).append(dvs[str(m["GaiaDR3"])]) + # a cluster counts when its members' speeds about its mean cohere: at least MIN_MEMBERS with velocities and a median below COHERENT_KMS + coherent = {n for n, v in per.items() if len(v) >= min_members and float(np.median(v)) < coherent_kms} + members = [m for m in members if str(m["Name"]).strip() in coherent] + out = [] + for m in members: + n = str(m["Name"]).strip() + dv = dvs[str(m["GaiaDR3"])] + if dv > v_min_kms: + out.append(dict(cluster=n, id=str(m["GaiaDR3"]), dv=dv, rv=num(m["RV"]), e_rv=num(m["e_RV"]), ruwe=num(m["RUWE"]), prob=num(m["Prob"]), inrt=str(m["inrt"]).strip(), + g=num(m["Gmag"]), c=num(m["BP-RP"]))) + sim = {} + for k in range(0, len(out), 200): + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % o["id"] for o in out[k:k + 200])): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + for o in out: + o["simbad"] = sim.get(o["id"]) + typ = (o["simbad"] or (None, "", ""))[1] + # a membership probability below 0.8 leaves the star as likely a field star; Gaia's velocities of hot stars (BP-RP below 0.3) carry errors of tens of km/s + o["vet"] = ("binary" if (o["ruwe"] or 0) > 1.4 or typ in ("**", "SB*", "EB*") else "outside-selection" if (o["prob"] or 0) < prob_firm else + "artefact" if o["c"] is not None and o["c"] < 0.3 else None) + left = [o for o in out if o["vet"] is None] + disp = {n: round(float(np.median(per[n])), 2) for n in sorted(coherent)} + print("%d members of the %d coherent clusters within %.0f pc (of %d with mean velocities) with radial velocities to %g km/s; median speeds relative to each cluster %s; " + "faster than %g km/s: %d, %d binaries by RUWE or type, %d of membership probability below %g, %d hot stars; unexplained %d" % ( + len(members), len(coherent), 1000 / plx_min, len(clusters), rv_err_max, disp, v_min_kms, len(out), sum(o["vet"] == "binary" for o in out), + sum(o["vet"] == "outside-selection" for o in out), prob_firm, sum(o["vet"] == "artefact" for o in out), len(left))) + for o in sorted(out, key=lambda o: -o["dv"]): + print(" %s: Gaia DR3 %s at %.1f km/s from the cluster, RV %s +- %s, RUWE %s, probability %s, inside tidal radius %s, G %s, BP-RP %s; SIMBAD %s; %s" % ( + o["cluster"], o["id"], o["dv"], o["rv"], o["e_rv"], o["ruwe"], o["prob"], o["inrt"], o["g"], o["c"], o["simbad"], o["vet"] or "unexplained")) + json.dump(dict(n=len(members), clusters=disp, hits=out), open(core.results("cluster_escapees.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_cluster_escapees", "Stars leaving the nearest clusters too fast", "Hunt and Reffert (2023) open-cluster members with Gaia radial velocities (VizieR J/A+A/673/A114); " + "SIMBAD", "members of the %d coherent clusters within %.0f pc with radial velocities to %g km/s: %d" % (len(coherent), 1000 / plx_min, rv_err_max, len(members)), + os.path.abspath(__file__), "escapees", len(members), "stars", dict(plx_min=plx_min, v_min_kms=v_min_kms, prob_min=prob_min, rv_err_max=rv_err_max, + min_members=min_members, coherent_kms=coherent_kms, prob_firm=prob_firm), + "the clusters' own median speeds relative to their means: %s" % disp, "a member moving faster than %g km/s relative to its cluster" % v_min_kms, + "%d: %d binaries, %d of membership probability below %g, %d hot stars; %d unexplained" % ( + len(out), sum(o["vet"] == "binary" for o in out), sum(o["vet"] == "outside-selection" for o in out), prob_firm, sum(o["vet"] == "artefact" for o in out), len(left)), + [dict(target="gaia_dr3:%s" % o["id"], stat=o["dv"], unit="km/s relative to the cluster", vet=o["vet"], + note="%s, RV %s +- %s, RUWE %s, probability %s, inside tidal radius %s; SIMBAD %s" % (o["cluster"], o["rv"], o["e_rv"], o["ruwe"], o["prob"], o["inrt"], o["simbad"])) + for o in out]) + print("recorded") + + +darkcircles_DOC = r"""Dark companions on perfect circles: Gaia DR3 astrometric two-body orbits (nss_two_body_orbit, the Orbital solutions) within 200 pc with periods beyond 200 days, where tides cannot round an orbit, whose eccentricity is measured below 0.005 at its upper error, an unseen companion on an orbit rounder than capture or formation leaves; against the solutions' own eccentricities, each read for its goodness of fit, its significance and its SIMBAD type. + + python -I seti.py neighbourhood darkcircles [record] [--plx-min 5] [--p-min-d 200] [--tol 0.005] [--sig-min 20]""" + + +def darkcircles_main(record=False, plx_min=5.0, p_min_d=200.0, tol=0.005, sig_min=20.0): + rows = core.tap_async("gaia", "SELECT n.source_id, n.period, n.eccentricity, n.eccentricity_error, n.significance, n.goodness_of_fit, n.nss_solution_type, g.parallax, " + "g.phot_g_mean_mag, g.bp_rp FROM gaiadr3.nss_two_body_orbit AS n JOIN gaiadr3.gaia_source AS g ON n.source_id = g.source_id WHERE " + "n.nss_solution_type IN ('Orbital', 'OrbitalTargetedSearch', 'OrbitalTargetedSearchValidated') AND g.parallax > %g AND n.period > %g " + "AND n.eccentricity IS NOT NULL AND n.eccentricity_error IS NOT NULL" % (plx_min, p_min_d), maxrec=100000) + st = [dict(id=str(r["source_id"]), P=num(r["period"]), e=num(r["eccentricity"]), ee=num(r["eccentricity_error"]), sig=num(r["significance"]), gof=num(r["goodness_of_fit"]), + kind=str(r["nss_solution_type"]), plx=num(r["parallax"]), g=num(r["phot_g_mean_mag"]), c=num(r["bp_rp"])) for r in rows] + st = [s for s in st if s["e"] is not None and s["ee"]] + hits = [s for s in st if s["e"] + s["ee"] < tol] + sim = {} + for k in range(0, len(hits), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in hits[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in hits: + s["simbad"] = sim.get(s["id"]) + s["vet"] = "unconstrained-geometry" if (s["sig"] or 0) < sig_min else None + ups = sorted(s["e"] + s["ee"] for s in st) + k = max(1, int(0.01 * len(ups))) + left = [s for s in hits if s["vet"] is None] + print("%d astrometric orbits within %.0f pc with periods beyond %g d and a measured eccentricity; upper eccentricity below %g: %d, %d with significance below %g; unexplained %d; " + "the lowest percentile of upper eccentricities sits at %.4f" % (len(st), 1000 / plx_min, p_min_d, tol, len(hits), sum(s["vet"] == "unconstrained-geometry" for s in hits), + sig_min, len(left), ups[k - 1] if ups else 0)) + for s in sorted(hits, key=lambda s: s["e"] + s["ee"]): + print(" Gaia DR3 %s: P %.1f d, e %.4f +- %.4f, significance %.1f, fit %.1f, %s, G %.2f, BP-RP %s, %.0f pc; SIMBAD %s; %s" % ( + s["id"], s["P"], s["e"], s["ee"], s["sig"] or 0, s["gof"] or 0, s["kind"], s["g"], s["c"], 1000 / s["plx"], s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), hits=hits), open(core.results("dark_companions_circles.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_nss_perfect_circles", "Dark companions on perfect circles", "Gaia DR3 nss_two_body_orbit and gaia_source; SIMBAD", + "astrometric orbits within %.0f pc with periods beyond %g d and a measured eccentricity: %d" % (1000 / plx_min, p_min_d, len(st)), os.path.abspath(__file__), + "darkcircles", len(st), "orbits", dict(plx_min=plx_min, p_min_d=p_min_d, tol=tol, sig_min=sig_min), + "the solutions' own upper eccentricities: the lowest percentile at %.4f" % (ups[k - 1] if ups else 0), + "an astrometric orbit beyond the tidal reach measured rounder than %g at its upper error" % tol, + "%d below %g, %d of low significance; %d unexplained" % (len(hits), tol, sum(s["vet"] == "unconstrained-geometry" for s in hits), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=s["e"] + s["ee"], unit="upper eccentricity", vet=s["vet"], + note="P %.1f d, e %.4f +- %.4f, significance %.1f, %s; SIMBAD %s" % (s["P"], s["e"], s["ee"], s["sig"] or 0, s["kind"], s["simbad"])) for s in hits]) + print("recorded") + + +retroclusters_DOC = r"""Open clusters orbiting backwards: the Hunt and Reffert (2023) clusters (VizieR J/A+A/673/A114) with a parallax at 10 sigma, a radial velocity from three or more members to 10 km/s, Galactic angular momenta from their mean motions and distances; a cluster whose angular momentum about the Galactic axis opposes the Sun's is on a retrograde orbit, which no cluster born of the disc's gas can hold and a fleet could; globular clusters and moving groups set aside by the catalogue's type or the literature's, each read for its velocity's provenance. + + python -I seti.py neighbourhood retroclusters [record] [--plx-sigma 10] [--rv-members 3] [--rv-err 10] [--vz-max 150]""" + + +# clusters the catalogue types as open that the literature holds to be globular +RETROCLUSTERS_GLOBULAR = {"Pismis_26": "Tonantzintla 2"} + + +def retroclusters_main(record=False, plx_sigma=10.0, rv_members=3, rv_err=10.0, vz_max=150.0): + from astropy.coordinates import SkyCoord, Galactocentric + import astropy.units as u + rows = core.tap("vizier", 'SELECT Name, Type, N, RA_ICRS, DE_ICRS, Plx, e_Plx, dist50, pmRA, e_pmRA, pmDE, e_pmDE, RV, e_RV, n_RV, logAge50 FROM "J/A+A/673/A114/clusters" ' + 'WHERE RV IS NOT NULL AND n_RV >= %d AND e_RV < %g AND Plx > %g * e_Plx' % (rv_members, rv_err, plx_sigma)) + cl = [dict(name=str(r["Name"]).strip(), kind=str(r["Type"]).strip(), n=int(num(r["N"]) or 0), ra=float(r["RA_ICRS"]), dec=float(r["DE_ICRS"]), plx=num(r["Plx"]), d=num(r["dist50"]), + pmra=num(r["pmRA"]), pmdec=num(r["pmDE"]), rv=num(r["RV"]), erv=num(r["e_RV"]), nrv=int(num(r["n_RV"]) or 0), logage=num(r["logAge50"])) for r in rows] + cl = [c for c in cl if None not in (c["d"], c["pmra"], c["pmdec"], c["rv"])] + c = SkyCoord(ra=[x["ra"] for x in cl] * u.deg, dec=[x["dec"] for x in cl] * u.deg, distance=[x["d"] for x in cl] * u.pc, + pm_ra_cosdec=[x["pmra"] for x in cl] * u.mas / u.yr, pm_dec=[x["pmdec"] for x in cl] * u.mas / u.yr, radial_velocity=[x["rv"] for x in cl] * u.km / u.s) + g = c.transform_to(Galactocentric()) + sun = SkyCoord(ra=0 * u.deg, dec=0 * u.deg, distance=1e-6 * u.pc, pm_ra_cosdec=0 * u.mas / u.yr, pm_dec=0 * u.mas / u.yr, radial_velocity=0 * u.km / u.s).transform_to(Galactocentric()) + lz_sun = float((sun.x * sun.v_y - sun.y * sun.v_x).to(u.kpc * u.km / u.s).value) + x, y = g.x.to(u.kpc).value, g.y.to(u.kpc).value + vx, vy, vz = g.v_x.to(u.km / u.s).value, g.v_y.to(u.km / u.s).value, g.v_z.to(u.km / u.s).value + r = np.hypot(x, y) + for k, o in enumerate(cl): + o["lz"] = float(x[k] * vy[k] - y[k] * vx[k]) + o["vphi"] = o["lz"] / float(r[k]) * (1 if lz_sun > 0 else -1) + o["vz"] = float(vz[k]) + o["vet"] = "natural-type" if o["kind"] in ("g", "m") or o["name"] in RETROCLUSTERS_GLOBULAR else None + retro = [o for o in cl if o["vphi"] < 0] + fast = [o for o in cl if abs(o["vz"]) > vz_max and o["vphi"] >= 0] + left = [o for o in retro if o["vet"] is None] + v = np.array([o["vphi"] for o in cl]) + print("%d clusters with a parallax at %g sigma and a radial velocity from %d or more members; rotation speeds %.0f median, %.0f lowest; retrograde: %d (%d globular or moving " + "groups); vertical speed above %g km/s: %d; unexplained %d" % (len(cl), plx_sigma, rv_members, np.median(v), v.min(), len(retro), sum(o["vet"] is not None for o in retro), + vz_max, len(fast), len(left))) + for o in sorted(retro + fast, key=lambda o: o["vphi"]): + print(" %s (%s, %d members, %d with velocities): V_phi %+.0f, V_z %+.0f km/s, RV %.1f +- %.1f, %.0f pc, log age %s; %s" % ( + o["name"], o["kind"], o["n"], o["nrv"], o["vphi"], o["vz"], o["rv"], o["erv"], o["d"], o["logage"], o["vet"] or "unexplained")) + json.dump(dict(n=len(cl), retro=retro, fast=fast), open(core.results("clusters_retrograde.json"), "w"), indent=1) + if record: + core.record_run( + "clusters_retrograde", "Open clusters orbiting backwards", "Hunt and Reffert (2023) cluster catalogue (VizieR J/A+A/673/A114)", + "clusters with a parallax at %g sigma and a radial velocity from %d or more members to %g km/s: %d" % (plx_sigma, rv_members, rv_err, len(cl)), os.path.abspath(__file__), + "retroclusters", len(cl), "clusters", dict(plx_sigma=plx_sigma, rv_members=rv_members, rv_err=rv_err, vz_max=vz_max), + "the clusters' rotation speeds: median %.0f km/s, lowest %.0f" % (np.median(v), v.min()), "a cluster whose Galactic angular momentum opposes the Sun's", + "%d retrograde, %d of them globular or moving groups; %d with a vertical speed above %g km/s; %d unexplained" % ( + len(retro), sum(o["vet"] is not None for o in retro), len(fast), vz_max, len(left)), + [dict(target="cluster:%s" % o["name"], stat=round(o["vphi"], 1), unit="rotation speed, km/s", vet=o["vet"], + note="%s, %d members, %d with velocities, V_z %+.0f km/s, RV %.1f +- %.1f, %.0f pc%s" % ( + o["kind"], o["n"], o["nrv"], o["vz"], o["rv"], o["erv"], o["d"], "; " + RETROCLUSTERS_GLOBULAR[o["name"]] if o["name"] in RETROCLUSTERS_GLOBULAR else "")) + for o in retro + fast]) + print("recorded") + + +jumped_DOC = r"""Stars that jumped between 2MASS and Gaia: Gaia DR3 stars within 25 pc with a 2MASS counterpart (tmass_psc_xsc_best_neighbour), the Gaia position carried back to the night 2MASS scanned it with the proper motion and the parallactic shift of that night, against the 2MASS position; a star more than 1 arcsec from where its course puts it changed course between 1998 and 2016, as nothing on a free orbit does and a driven thing may; each read for its 2MASS quality, its neighbours in the 2MASS beam, its Gaia image flags and its brightness, since a saturated or blended 2MASS image sets a false position. + + python -I seti.py neighbourhood jumped [record] [--plx-min 40] [--offset-arcsec 1] [--ks-sat 4]""" + + +def jumped_main(record=False, plx_min=40.0, offset_arcsec=1.0, ks_sat=4.0): + from astropy.coordinates import get_body_barycentric + from astropy.time import Time + rows = core.tap_async("gaia", "SELECT g.source_id, g.ra, g.dec, g.parallax, g.pmra, g.pmdec, g.phot_g_mean_mag, g.ruwe, g.ipd_frac_multi_peak, g.duplicated_source, t.ra AS tra, " + "t.dec AS tdec, t.j_date, t.ph_qual, t.ks_m, t.err_maj, n.angular_distance, n.number_of_neighbours, n.number_of_mates FROM gaiadr3.gaia_source AS g " + "JOIN gaiadr3.tmass_psc_xsc_best_neighbour AS n ON g.source_id = n.source_id JOIN gaiadr1.tmass_original_valid AS t ON " + "n.original_ext_source_id = t.designation WHERE g.parallax > %g AND g.pmra IS NOT NULL" % plx_min, maxrec=100000) + st = [dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), plx=float(r["parallax"]), pmra=float(r["pmra"]), pmdec=float(r["pmdec"]), g=num(r["phot_g_mean_mag"]), + ruwe=num(r["ruwe"]), multi=num(r["ipd_frac_multi_peak"]), dup=num(r["duplicated_source"]), tra=float(r["tra"]), tdec=float(r["tdec"]), jd=float(r["j_date"]), + qual=str(r["ph_qual"] or "").strip(), ks=num(r["ks_m"]), terr=num(r["err_maj"]), nn=num(r["number_of_neighbours"]), mates=num(r["number_of_mates"])) for r in rows] + t = Time([s["jd"] for s in st], format="jd", scale="tt") + earth = get_body_barycentric("earth", t) + ex, ey, ez = (earth.x.to("au").value, earth.y.to("au").value, earth.z.to("au").value) + out = [] + for k, s in enumerate(st): + dt = (s["jd"] - 2457389.0) / 365.25 + ra0, de0 = math.radians(s["ra"]), math.radians(s["dec"]) + ra1 = ra0 + math.radians(s["pmra"] * dt / 3.6e6) / math.cos(de0) + de1 = de0 + math.radians(s["pmdec"] * dt / 3.6e6) + u = np.array([math.cos(de1) * math.cos(ra1), math.cos(de1) * math.sin(ra1), math.sin(de1)]) + east = np.array([-math.sin(ra1), math.cos(ra1), 0.0]) + north = np.array([-math.sin(de1) * math.cos(ra1), -math.sin(de1) * math.sin(ra1), math.cos(de1)]) + R = np.array([ex[k], ey[k], ez[k]]) + shift = -(s["plx"] / 1000.0) * (R - np.dot(R, u) * u) + dra = math.degrees(ra1 - ra0) * 3600 * math.cos(de1) + float(np.dot(shift, east)) + dde = math.degrees(de1 - de0) * 3600 + float(np.dot(shift, north)) + ora = (s["tra"] - s["ra"]) * 3600 * math.cos(de0) + ode = (s["tdec"] - s["dec"]) * 3600 + s["off"] = math.hypot(ora - dra, ode - dde) + s["moved"] = math.hypot(dra, dde) + s["years"] = dt + if s["off"] > offset_arcsec: + s["vet"] = ("artefact" if (s["ks"] is not None and s["ks"] < ks_sat) or any(q not in "ABC" for q in s["qual"]) or (s["multi"] or 0) > 2 or (s["ruwe"] or 0) > 1.4 + else "blend" if (s["nn"] or 0) > 1 or (s["mates"] or 0) > 0 or (s["dup"] or 0) else None) + out.append(s) + left = [s for s in out if s["vet"] is None] + offs = np.array([s["off"] for s in st]) + print("%d stars within %.0f pc with a 2MASS counterpart; offsets from the carried position: median %.2f arcsec, 99th percentile %.2f; above %g arcsec: %d (%d saturated, poor " + "or flagged, %d with neighbours or mates in 2MASS); unexplained %d" % (len(st), 1000 / plx_min, np.median(offs), np.percentile(offs, 99), offset_arcsec, len(out), + sum(s["vet"] == "artefact" for s in out), sum(s["vet"] == "blend" for s in out), len(left))) + for s in sorted(out, key=lambda s: -s["off"]): + print(" Gaia DR3 %s: %.2f arcsec off after %.1f arcsec of motion over %.1f yr, G %.2f, Ks %s (%s), RUWE %s, multi %s, 2MASS neighbours %s, mates %s; %s" % ( + s["id"], s["off"], s["moved"], -s["years"], s["g"], s["ks"], s["qual"], s["ruwe"], s["multi"], s["nn"], s["mates"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), hits=out), open(core.results("stars_jumped_2mass.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_2mass_jumped", "Stars that jumped between 2MASS and Gaia", "Gaia DR3 gaia_source and tmass_psc_xsc_best_neighbour; 2MASS PSC (gaiadr1.tmass_original_valid)", + "stars within %.0f pc with a 2MASS counterpart: %d" % (1000 / plx_min, len(st)), os.path.abspath(__file__), "jumped", len(st), "stars", + dict(plx_min=plx_min, offset_arcsec=offset_arcsec, ks_sat=ks_sat), "the offsets' own distribution: median %.2f arcsec, 99th percentile %.2f" % (np.median(offs), np.percentile(offs, 99)), + "a 2MASS position more than %g arcsec from the Gaia course carried back to the 2MASS night" % offset_arcsec, + "%d: %d saturated, poor or flagged, %d blended in 2MASS; %d unexplained" % (len(out), sum(s["vet"] == "artefact" for s in out), sum(s["vet"] == "blend" for s in out), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["off"], 2), unit="arcsec from the carried position", vet=s["vet"], + note="moved %.1f arcsec over %.1f yr, G %.2f, Ks %s (%s), RUWE %s, 2MASS neighbours %s, mates %s" % ( + s["moved"], -s["years"], s["g"], s["ks"], s["qual"], s["ruwe"], s["nn"], s["mates"])) for s in out]) + print("recorded") + + +dscgalaxies_DOC = r"""Neighbours Gaia's classifier calls galaxies: Gaia DR3 sources within 100 pc at parallax over error above 10 whose discrete source classifier (astrophysical_parameters, the combined model) gives a galaxy or quasar probability above 0.5, light at a stellar distance that looks like no star to the classifier's photometry, colour and astrometry; each read for its image flags, BP/RP excess and RUWE, since a blend gives the classifier a composite, for its colour, since a source without one or bluer than any star or saturated gives it nothing to read, and in SIMBAD. + + python -I seti.py neighbourhood dscgalaxies [record] [--plx-min 10] [--plx-sigma 10] [--prob-min 0.5]""" + + +def dscgalaxies_main(record=False, plx_min=10.0, plx_sigma=10.0, prob_min=0.5): + rows = core.tap_async("gaia", "SELECT g.source_id, g.ra, g.dec, g.parallax, g.parallax_over_error, g.phot_g_mean_mag, g.bp_rp, g.ruwe, g.ipd_frac_multi_peak, g.duplicated_source, " + "g.phot_bp_rp_excess_factor, a.classprob_dsc_combmod_quasar AS pq, a.classprob_dsc_combmod_galaxy AS pg, a.classprob_dsc_combmod_star AS ps, " + "a.classprob_dsc_combmod_whitedwarf AS pw FROM gaiadr3.gaia_source AS g JOIN gaiadr3.astrophysical_parameters AS a ON g.source_id = a.source_id " + "WHERE g.parallax > %g AND g.parallax_over_error > %g AND (a.classprob_dsc_combmod_quasar > %g OR a.classprob_dsc_combmod_galaxy > %g)" % ( + plx_min, plx_sigma, prob_min, prob_min), maxrec=100000) + n_all = int(core.tap("gaia", "SELECT COUNT(*) AS n FROM gaiadr3.gaia_source WHERE parallax > %g AND parallax_over_error > %g" % (plx_min, plx_sigma))[0]["n"]) + st = [dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), plx=num(r["parallax"]), g=num(r["phot_g_mean_mag"]), c=num(r["bp_rp"]), ruwe=num(r["ruwe"]), + multi=num(r["ipd_frac_multi_peak"]), dup=num(r["duplicated_source"]), excess=num(r["phot_bp_rp_excess_factor"]), pq=num(r["pq"]), pg=num(r["pg"]), ps=num(r["ps"]), pw=num(r["pw"])) + for r in rows] + sim = {} + for k in range(0, len(st), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % s["id"] for s in st[k:k + 200])): + sim[str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in st: + s["simbad"] = sim.get(s["id"]) + typ = (s["simbad"] or (None, "", ""))[1] + c = s["c"] if s["c"] is not None else 0.0 + s["vet"] = ("artefact" if s["c"] is None or s["c"] < -0.8 or (s["g"] or 99) < 6 else + "blend" if (s["multi"] or 0) > 2 or (s["dup"] or 0) or (s["excess"] or 0) > 1.3 + 0.06 * c * c else "astrometry" if (s["ruwe"] or 0) > 1.4 else + "natural-type" if typ not in ("", "*", "PM*", "HV*", "low-mass*") else None) + left = [s for s in st if s["vet"] is None] + print("%d sources within %.0f pc at parallax over error above %g; called galaxy or quasar at probability above %g: %d (%d without a colour, bluer than any star or saturated, " + "%d blends, %d of poor astrometry, %d of known types); unexplained %d" % (n_all, 1000 / plx_min, plx_sigma, prob_min, len(st), sum(s["vet"] == "artefact" for s in st), + sum(s["vet"] == "blend" for s in st), sum(s["vet"] == "astrometry" for s in st), + sum(s["vet"] == "natural-type" for s in st), len(left))) + for s in sorted(st, key=lambda s: -max(s["pq"] or 0, s["pg"] or 0)): + print(" Gaia DR3 %s: quasar %.2f galaxy %.2f star %.2f WD %.2f, G %s, BP-RP %s, RUWE %s, multi %s, excess %s, %.0f pc; SIMBAD %s; %s" % ( + s["id"], s["pq"] or 0, s["pg"] or 0, s["ps"] or 0, s["pw"] or 0, s["g"], s["c"], s["ruwe"], s["multi"], s["excess"], 1000 / s["plx"], s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=n_all, hits=st), open(core.results("dsc_galaxies_nearby.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_dsc_galaxies_nearby", "Neighbours Gaia's classifier calls galaxies", "Gaia DR3 gaia_source and astrophysical_parameters; SIMBAD", + "sources within %.0f pc at parallax over error above %g: %d" % (1000 / plx_min, plx_sigma, n_all), os.path.abspath(__file__), "dscgalaxies", n_all, "sources", + dict(plx_min=plx_min, plx_sigma=plx_sigma, prob_min=prob_min), "Gaia's image flags, RUWE and BP/RP excess; SIMBAD's types", + "a source at a stellar distance the classifier calls a galaxy or quasar", "%d: %d without a colour, bluer than any star or saturated, %d blends, %d of poor astrometry, " + "%d of known types; %d unexplained" % (len(st), sum(s["vet"] == "artefact" for s in st), sum(s["vet"] == "blend" for s in st), sum(s["vet"] == "astrometry" for s in st), + sum(s["vet"] == "natural-type" for s in st), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(max(s["pq"] or 0, s["pg"] or 0), 3), unit="galaxy or quasar probability", vet=s["vet"], + note="G %s, BP-RP %s, RUWE %s, multi %s, excess %s, %.0f pc; SIMBAD %s" % (s["g"], s["c"], s["ruwe"], s["multi"], s["excess"], 1000 / s["plx"], s["simbad"])) + for s in st]) + print("recorded") + + +receded_DOC = r"""Stars whose distance changed since Hipparcos: the Hipparcos new reduction (van Leeuwen 2007) matched to Gaia DR3, stars whose two parallaxes differ by more than five times their combined error, scaled by the sample's own scatter, and 2 mas, a star closer or farther in 2016 than in 1991 by more than any motion carries it, since a star at 100 pc moving at 100 km/s changes its parallax by a thousandth in that time; each read for RUWE and Gaia's non-single-star flag, since a binary's orbit drags both solutions, for the Hipparcos solution's quality, for brightness, for a Gaia match far fainter than the Hipparcos star, which is a crossmatch gone astray, in SIMBAD, and the remainder against the Gaussian tail of the scaled errors. + + python -I seti.py neighbourhood receded [record] [--sigma 5] [--min-mas 2] [--g-sat 6] [--f2-max 3] [--match-mag 2]""" + + +def receded_main(record=False, sigma=5.0, min_mas=2.0, g_sat=6.0, f2_max=3.0, match_mag=2.0): + rows = core.tap_async("gaia", "SELECT h.hip, h.plx, h.e_plx, h.f2, h.hp_mag, h.s_hp, g.source_id, g.parallax, g.parallax_error, g.phot_g_mean_mag, g.ruwe, g.non_single_star, " + "g.ipd_frac_multi_peak, g.astrometric_excess_noise FROM public.hipparcos_newreduction AS h JOIN gaiadr3.hipparcos2_best_neighbour AS n ON " + "h.hip = n.original_ext_source_id JOIN gaiadr3.gaia_source AS g ON n.source_id = g.source_id WHERE h.plx IS NOT NULL AND h.e_plx > 0 AND g.parallax IS NOT NULL", + maxrec=200000) + st = [] + for r in rows: + hp, ehp, gp, egp = num(r["plx"]), num(r["e_plx"]), num(r["parallax"]), num(r["parallax_error"]) + if None in (hp, ehp, gp, egp): + continue + err = math.hypot(ehp, egp) + st.append(dict(hip=int(r["hip"]), id=str(r["source_id"]), hplx=hp, ehplx=ehp, gplx=gp, egplx=egp, d=hp - gp, z=(hp - gp) / err, f2=num(r["f2"]), g=num(r["phot_g_mean_mag"]), hp=num(r["hp_mag"]), + ruwe=num(r["ruwe"]), nss=num(r["non_single_star"]), multi=num(r["ipd_frac_multi_peak"]), aen=num(r["astrometric_excess_noise"]), shp=num(r["s_hp"]))) + from scipy.stats import norm, poisson + zs0 = np.array([s["z"] for s in st]) + scale = 1.4826 * float(np.median(np.abs(zs0 - np.median(zs0)))) + for s in st: + s["z"] = s["z"] / scale + off = [s for s in st if abs(s["z"]) > sigma and abs(s["d"]) > min_mas] + tail = 2 * norm.sf(sigma) * len(st) + sim = {} + for k in range(0, len(off), 200): + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'HIP %d'" % s["hip"] for s in off[k:k + 200])): + sim[int(str(r["id"]).split()[-1])] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + for s in off: + s["simbad"] = sim.get(s["hip"]) + typ = (s["simbad"] or (None, "", ""))[1] + s["vet"] = ("misidentified" if s["g"] is not None and s["hp"] is not None and s["g"] > s["hp"] + match_mag else + "binary" if (s["ruwe"] or 0) > 1.4 or (s["nss"] or 0) > 0 or (s["multi"] or 0) > 2 or typ in ("**", "SB*", "EB*", "El*") else + "artefact" if (s["g"] or 99) < g_sat or abs(s["f2"] or 0) > f2_max or (s["aen"] or 0) > 1 else None) + left = [s for s in off if s["vet"] is None] + p = float(poisson.sf(len(left) - 1, tail)) if left else 1.0 + for s in left: + if p > 0.01: + s["vet"] = "chance-rate" + left = [s for s in off if s["vet"] is None] + print("%d Hipparcos stars with both parallaxes; the difference's scatter in combined sigmas %.2f, by which the sigmas are scaled; apart by %g scaled sigma and %g mas: %d (%d matched to a " + "Gaia source %g mag fainter than the Hipparcos star, %d binaries by RUWE, Gaia's flag, image peaks or type, %d saturated or with poor solutions); the rest against the Gaussian " + "tail's %.1f (Poisson p %.3g); unexplained %d" % (len(st), scale, sigma, min_mas, len(off), sum(s["vet"] == "misidentified" for s in off), match_mag, + sum(s["vet"] == "binary" for s in off), sum(s["vet"] == "artefact" for s in off), tail, p, len(left))) + for s in sorted(off, key=lambda s: -abs(s["z"])): + if s["vet"] is None or len(off) <= 30: + print(" HIP %d: Hipparcos %.2f +- %.2f, Gaia %.3f +- %.3f mas (%+.2f mas, %.1f sigma), f2 %s, G %s, RUWE %s, excess noise %s; SIMBAD %s; %s" % ( + s["hip"], s["hplx"], s["ehplx"], s["gplx"], s["egplx"], s["d"], s["z"], s["f2"], s["g"], s["ruwe"], s["aen"], s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), off=off), open(core.results("parallax_change_hipparcos.json"), "w"), indent=1) + if record: + core.record_run( + "hipparcos_gaia_parallax_change", "Stars whose distance changed since Hipparcos", "Hipparcos new reduction (public.hipparcos_newreduction) and Gaia DR3 by hipparcos2_best_neighbour; SIMBAD", + "Hipparcos stars with both parallaxes: %d" % len(st), os.path.abspath(__file__), "receded", len(st), "stars", + dict(sigma=sigma, min_mas=min_mas, g_sat=g_sat, f2_max=f2_max, match_mag=match_mag, scale=round(scale, 3)), + "the combined errors scaled by the sample's scatter of %.2f; the Gaussian tail's %.1f; RUWE, Gaia's non-single-star flag, image peaks, Hipparcos's goodness of fit, Gaia's " + "excess noise, the match's brightness, SIMBAD types" % (scale, tail), + "two parallaxes apart by more than %g scaled sigma and %g mas" % (sigma, min_mas), "%d: %d misidentified, %d binaries, %d saturated or with poor solutions, the rest against " + "the Gaussian tail (Poisson p %.3g); %d unexplained" % (len(off), sum(s["vet"] == "misidentified" for s in off), sum(s["vet"] == "binary" for s in off), + sum(s["vet"] == "artefact" for s in off), p, len(left)), + [dict(target="hip:%d" % s["hip"], stat=round(s["d"], 2), unit="mas, Hipparcos minus Gaia", vet=s["vet"], + note="%.1f sigma, Hipparcos %.2f +- %.2f, Gaia %.3f +- %.3f, f2 %s, G %s, RUWE %s; SIMBAD %s" % ( + s["z"], s["hplx"], s["ehplx"], s["gplx"], s["egplx"], s["f2"], s["g"], s["ruwe"], s["simbad"])) for s in off]) + print("recorded") + + +residueclustering_DOC = r"""Sky clustering of our residues: every Gaia DR3 star of the coverage store with its position, the vetted ones among them, the count of vetted pairs within 1, 3 and 10 deg as a share of all possible pairs, since one star vetted by several runs counts once, against the shares that 50 draws give in which each run marks as many of its own targets at random, so that every test's own sky coverage sets the expectation; a civilisation spread over a few parsecs would mark neighbouring stars in different tests, and a pile of residues at one spot would show as pairs beyond the draws. + + python -I seti.py neighbourhood residueclustering [record] [--draws 50]""" + + +def residueclustering_main(record=False, draws=50): + from scipy.spatial import cKDTree + runs = flagzones_runs() + pos = {r[0]: r[1] for rr in runs.values() for r in rr} + ids = sorted(pos) + index = {i: k for k, i in enumerate(ids)} + lb = np.radians(np.array([[pos[i][0], pos[i][1]] for i in ids])) + xyz = np.stack([np.cos(lb[:, 1]) * np.cos(lb[:, 0]), np.cos(lb[:, 1]) * np.sin(lb[:, 0]), np.sin(lb[:, 1])], 1) + scales = (1.0, 3.0, 10.0) + + def pairs(idx): + tree = cKDTree(xyz[idx]) + return [((tree.count_neighbors(tree, 2 * math.sin(math.radians(d) / 2)) - len(idx)) // 2) / (len(idx) * (len(idx) - 1) / 2) for d in scales] + real_set = sorted({index[r[0]] for rr in runs.values() for r in rr if r[2]}) + real = pairs(np.array(real_set)) + per_run = [(np.array([index[r[0]] for r in rr]), sum(r[2] for r in rr)) for rr in runs.values()] + per_run = [(a, k) for a, k in per_run if k] + rng = np.random.default_rng(5) + null = [] + for _ in range(draws): + chosen = set() + for a, k in per_run: + chosen.update(rng.choice(a, size=k, replace=False).tolist()) + null.append(pairs(np.array(sorted(chosen)))) + null = np.array(null) + out = {} + for k, d in enumerate(scales): + mean, sd = float(null[:, k].mean()), float(null[:, k].std(ddof=1)) + p = float((null[:, k] >= real[k]).mean()) + out["%g deg" % d] = dict(pairs=1e4 * real[k], expected=1e4 * mean, sd=1e4 * sd, p=p) + print("%d store stars in %d runs, %d vetted; vetted pairs: %s" % (len(ids), len(runs), len(real_set), "; ".join("within %s %.3f per 10,000 pairs against %.3f +- %.3f (p %.2f)" % ( + k, v["pairs"], v["expected"], v["sd"], v["p"]) for k, v in out.items()))) + if record: + core.record_run( + "store_residue_clustering", "Sky clustering of our residues", "the coverage store with Gaia DR3 positions", "Gaia DR3 targets of every run: %d, %d of them vetted" % (len(ids), len(real_set)), + os.path.abspath(__file__), "residueclustering", len(ids), "stars", dict(draws=draws, scales_deg=list(scales)), + "%d draws in which each run marks as many of its own targets at random: %s" % (draws, {k: round(v["expected"]) for k, v in out.items()}), "vetted targets paired on the sky beyond the draws", + "; ".join("within %s %.3f per 10,000 pairs against %.3f +- %.3f (p %.2f)" % (k, v["pairs"], v["expected"], v["sd"], v["p"]) for k, v in out.items()), []) + print("recorded") + + +cmbaxis_DOC = r"""The axis of the universe: SIMBAD's objects of unknown nature (type '?') and its unclassified radio, X-ray and gamma-ray sources within 2 deg of the CMB dipole's apex (l 264.02, b +48.25 deg) and antapex, the one direction every observer in the universe can agree on, against 36 patches of the same size at the same Galactic latitude spread in longitude; a beacon placed for anyone who measures the dipole would sit there. + + python -I seti.py neighbourhood cmbaxis [record] [--radius-deg 2] [--controls 36]""" + + +def cmbaxis_main(record=False, radius_deg=2.0, controls=36): + from astropy.coordinates import SkyCoord + import astropy.units as u + types = ("?", "Rad", "X", "gam") + + def counts(l, b): + c = SkyCoord(l=l * u.deg, b=b * u.deg, frame="galactic").icrs + rows = core.simbad("SELECT otype, COUNT(*) AS n FROM basic WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.5f, %.5f, %g)) AND otype IN (%s) GROUP BY otype" % ( + c.ra.deg, c.dec.deg, radius_deg, ",".join("'%s'" % t for t in types))) + d = {str(r["otype"]).strip(): int(r["n"]) for r in rows} + return [d.get(t, 0) for t in types] + out = {} + for name, (l0, b0) in (("apex", (264.02, 48.25)), ("antapex", (84.02, -48.25))): + real = counts(l0, b0) + ctrl = np.array([counts((l0 + 360.0 * (k + 0.5) / controls) % 360, b0) for k in range(controls)]) + ctrl = ctrl[[abs(((l0 + 360.0 * (k + 0.5) / controls) % 360) - l0) > 3 * radius_deg for k in range(controls)]] + rank = [float((ctrl[:, j] >= real[j]).mean()) for j in range(len(types))] + out[name] = dict(counts=dict(zip(types, real)), control_median=dict(zip(types, np.median(ctrl, 0).tolist())), control_max=dict(zip(types, ctrl.max(0).tolist())), + share_at_or_above=dict(zip(types, rank))) + print("%s: %s; controls median %s, max %s; share of controls at or above %s" % (name, out[name]["counts"], out[name]["control_median"], out[name]["control_max"], out[name]["share_at_or_above"])) + if record: + core.record_run( + "simbad_cmb_dipole_axis", "The axis of the universe", "SIMBAD", "the circles of %g deg about the CMB dipole's apex and antapex and %d controls at each one's latitude" % (radius_deg, controls), + os.path.abspath(__file__), "cmbaxis", 2, "directions", dict(radius_deg=radius_deg, controls=controls), "patches of the same size at the same Galactic latitude", + "more objects of unknown nature or unclassified high-energy and radio sources at the dipole's axis than at any control", + "; ".join("%s %s against control medians %s" % (k, v["counts"], v["control_median"]) for k, v in out.items()), []) + print("recorded") + + +herdedages_DOC = r"""Herded stars, GALAH and ages: the GALAH DR4 dwarfs within 100 pc with a GALAH radial velocity, Gaia DR3 astrometry and an isochrone age, pairs within 10 pc moving together within 1 km/s, and those both hotter than 5600 K, where isochrone ages carry information, whose ages differ by more than 5 Gyr; stars born together share an age, so co-moving stars of very different ages would be a group gathered and kept together; the co-moving pairs are counted against velocity shuffles among the stars, which give the chance pairs of the field and the chance pairs of unlike ages. + + python -I seti.py neighbourhood herdedages [record] [--link-pc 10] [--link-kms 1] [--verr-kms 0.5] [--age-gyr 5] [--teff-min 5600] [--shuffles 20]""" + + +def herdedages_main(record=False, link_pc=10.0, link_kms=1.0, verr_kms=0.5, age_gyr=5.0, teff_min=5600.0, shuffles=20): + from astropy.coordinates import SkyCoord + import astropy.units as u + from scipy.spatial import cKDTree + rows = core.tap("datacentral", "SELECT gaiadr3_source_id, sobject_id, teff, logg, fe_h, age, snr_px_ccd3, rv_comp_1, e_rv_comp_1, rv_comp_2, ruwe FROM galah_dr4.mainstartable " + "WHERE parallax > 10 AND logg > 3.8 AND age IS NOT NULL AND rv_comp_1 IS NOT NULL AND snr_px_ccd3 > 30") + best = {} + for r in rows: + g = str(r["gaiadr3_source_id"]) + if g and g != "None" and (g not in best or (core.num(r["snr_px_ccd3"]) or 0) > (core.num(best[g]["snr_px_ccd3"]) or 0)): + best[g] = r + gaia = core.tap_by_ids("gaia", list(best), "SELECT source_id, ra, dec, parallax, parallax_error, pmra, pmdec, pmra_error, pmdec_error FROM gaiadr3.gaia_source WHERE source_id IN (%s)") + ids = [g for g in best if g in gaia] + G = [gaia[g] for g in ids] + B = [best[g] for g in ids] + + def col(rows, k): + return np.array([core.num(r[k]) if core.num(r[k]) is not None else np.nan for r in rows], float) + ra, de, plx, eplx, pmra, pmde = (col(G, k) for k in ("ra", "dec", "parallax", "parallax_error", "pmra", "pmdec")) + rv, erv, age, teff, rv2 = col(B, "rv_comp_1"), col(B, "e_rv_comp_1"), col(B, "age"), col(B, "teff"), col(B, "rv_comp_2") + c = SkyCoord(ra=ra * u.deg, dec=de * u.deg, distance=(1000 / plx) * u.pc, pm_ra_cosdec=pmra * u.mas / u.yr, pm_dec=pmde * u.mas / u.yr, radial_velocity=rv * u.km / u.s).galactic + c.representation_type = "cartesian" + c.differential_type = "cartesian" + X = np.vstack([c.u.to(u.pc).value, c.v.to(u.pc).value, c.w.to(u.pc).value]).T + V = np.vstack([c.velocity.d_x.to(u.km / u.s).value, c.velocity.d_y.to(u.km / u.s).value, c.velocity.d_z.to(u.km / u.s).value]).T + vt = 4.74047 * np.hypot(pmra, pmde) / plx + sv = np.sqrt((vt * eplx / plx) ** 2 + np.nan_to_num(erv) ** 2) + ok = np.nonzero(np.isfinite(X).all(1) & np.isfinite(V).all(1) & (sv < verr_kms) & np.isnan(rv2))[0] + close = [(ok[a], ok[b]) for a, b in cKDTree(X[ok]).query_pairs(link_pc)] + + def comoving(Vs): + return [(a, b) for a, b in close if np.linalg.norm(Vs[a] - Vs[b]) < link_kms] + def unlike(pp): + return [(a, b) for a, b in pp if teff[a] > teff_min and teff[b] > teff_min and abs(age[a] - age[b]) > age_gyr] + pairs = comoving(V) + odd = unlike(pairs) + hot = [(a, b) for a, b in pairs if teff[a] > teff_min and teff[b] > teff_min] + gaps = sorted(abs(age[a] - age[b]) for a, b in hot) + rng = np.random.default_rng(17) + null, null_odd = [], [] + for _ in range(shuffles): + Vs = V.copy() + Vs[ok] = V[rng.permutation(ok)] + pp = comoving(Vs) + null.append(len(pp)) + null_odd.append(len(unlike(pp))) + print("%d GALAH dwarfs within 100 pc with ages, velocities and astrometry, %d with velocity errors under %g km/s and one velocity component; co-moving pairs within %g pc and %g km/s: %d " + "against %.1f from %d velocity shuffles; %d pairs both above %g K, their age gaps at the median %.1f and the largest %.1f Gyr; ages more than %g Gyr apart: %d against %.1f" % ( + len(ids), len(ok), verr_kms, link_pc, link_kms, len(pairs), float(np.mean(null)), shuffles, len(hot), teff_min, float(np.median(gaps)) if gaps else 0, max(gaps) if gaps else 0, + age_gyr, len(odd), float(np.mean(null_odd)))) + for a, b in odd: + print(" Gaia DR3 %s (%.1f Gyr, %.0f K) and %s (%.1f Gyr, %.0f K): %.1f pc and %.2f km/s apart" % ( + ids[a], age[a], teff[a], ids[b], age[b], teff[b], np.linalg.norm(X[a] - X[b]), np.linalg.norm(V[a] - V[b]))) + if record: + core.record_run( + "galah_herded_ages", "Herded stars, GALAH and ages", "GALAH DR4 (Data Central galah_dr4.mainstartable); Gaia DR3", "dwarfs within 100 pc with ages and 3D velocities to %g km/s: %d" % ( + verr_kms, len(ok)), os.path.abspath(__file__), "herdedages", len(ok), "stars", dict(link_pc=link_pc, link_kms=link_kms, verr_kms=verr_kms, age_gyr=age_gyr, teff_min=teff_min, shuffles=shuffles), + "%d velocity shuffles: %.1f co-moving pairs, %.1f of unlike ages" % (shuffles, float(np.mean(null)), float(np.mean(null_odd))), + "co-moving stars above %g K whose ages differ by more than %g Gyr" % (teff_min, age_gyr), + "%d co-moving pairs against %.1f by chance, %d of them both above %g K with the largest age gap %.1f Gyr; %d of unlike ages against %.1f" % ( + len(pairs), float(np.mean(null)), len(hot), teff_min, max(gaps) if gaps else 0, len(odd), float(np.mean(null_odd))), + [dict(target="gaia_dr3:%s" % ids[x], stat=round(abs(age[a] - age[b]), 1), unit="Gyr between the pair's ages", vet=None, + note="paired with Gaia DR3 %s" % ids[b if x == a else a]) for a, b in odd for x in (a, b)]) + print("recorded") + + +hzbands_DOC = r"""The temperate rocky-planet hosts in every band: the NASA Exoplanet Archive hosts of planets below 1.8 Earth radii (or 10 Earth masses without a radius) receiving 0.2-2 times Earth's insolation, within 100 pc, each carried to the mean epoch of eRASS1 (X-rays), GALEX AIS (ultraviolet), VLASS (3 GHz) and RACS-low (888 MHz) and matched inside each survey's footprint within a radius widened by its motion over the survey's span, their detected fraction in each band against the other planet hosts within 100 pc weighted to the same temperatures and distances; a world whose inhabitants light up its star in one band would raise that band's detections above the hosts that hold no such world. + + python -I seti.py neighbourhood hzbands [record] [--dist-pc 100] [--insol-lo 0.2] [--insol-hi 2] [--rade-max 1.8]""" + +HZBANDS = (("eRASS1 X-rays", "J/A+A/682/A34/erass1-m", 15.0, 2020.1, 0.5, lambda l, b, d: l > 180), + ("GALEX AIS ultraviolet", "II/335/galex_ais", 5.0, 2007.5, 4.5, lambda l, b, d: True), + ("VLASS 3 GHz", "J/ApJS/255/30/comp", 3.0, 2018.5, 1.0, lambda l, b, d: d > -40), + ("RACS-low 888 MHz", "J/other/PASA/38.58/galcut", 10.0, 2019.5, 0.5, lambda l, b, d: d < 41 and abs(b) > 5)) + + +def hzbands_main(record=False, dist_pc=100.0, insol_lo=0.2, insol_hi=2.0, rade_max=1.8): + from scipy.stats import binom + from astropy.coordinates import SkyCoord + import astropy.units as u + rows = core.exoplanets("SELECT hostname, pl_name, ra, dec, sy_pmra, sy_pmdec, sy_dist, st_teff, pl_rade, pl_bmasse, pl_insol FROM pscomppars WHERE sy_dist < %g" % dist_pc) + hosts = {} + for r in rows: + h = hosts.setdefault(r["hostname"], dict(name=r["hostname"], ra=core.num(r["ra"]), dec=core.num(r["dec"]), pmra=core.num(r["sy_pmra"]) or 0.0, pmdec=core.num(r["sy_pmdec"]) or 0.0, + d=core.num(r["sy_dist"]), teff=core.num(r["st_teff"]), hz=False)) + rade, mass, ins = core.num(r["pl_rade"]), core.num(r["pl_bmasse"]), core.num(r["pl_insol"]) + rocky = (rade is not None and rade <= rade_max) or (rade is None and mass is not None and mass <= 10) + if rocky and ins is not None and insol_lo <= ins <= insol_hi: + h["hz"] = True + hosts = [h for h in hosts.values() if h["ra"] is not None and h["teff"] is not None and h["d"] is not None] + gal = SkyCoord([h["ra"] for h in hosts] * u.deg, [h["dec"] for h in hosts] * u.deg).galactic + for h, g in zip(hosts, gal): + h["l"], h["b"] = float(g.l.deg), float(g.b.deg) + tb, db = np.array([3000, 3500, 4000, 5000, 6000, 1e5]), np.array([0, 10, 20, 50, 1e5]) + + def cell(h): + return int(np.digitize(h["teff"], tb)), int(np.digitize(h["d"], db)) + out = {} + for band, cat, rad, epoch, span, inside in HZBANDS: + sel = [h for h in hosts if inside(h["l"], h["b"], h["dec"])] + up = [dict(source_id=k, ra=h["ra"] + (epoch - 2016.0) * h["pmra"] / 3.6e6 / math.cos(math.radians(h["dec"])), dec=h["dec"] + (epoch - 2016.0) * h["pmdec"] / 3.6e6) + for k, h in enumerate(sel)] + allow = [rad + span * math.hypot(h["pmra"], h["pmdec"]) / 1000 for h in sel] + hit = {int(m["source_id"]) for m in core.xmatch(up, cat, min(max(allow), 60.0)) if float(m["angDist"]) <= allow[int(m["source_id"])]} if up else set() + for k, h in enumerate(sel): + h["det"] = k in hit + hz = [h for h in sel if h["hz"]] + ctrl = [h for h in sel if not h["hz"]] + rate = {} + for h in ctrl: + rate.setdefault(cell(h), []).append(h["det"]) + allrate = float(np.mean([h["det"] for h in ctrl])) if ctrl else 0.0 + exp = sum(float(np.mean(rate[cell(h)])) if cell(h) in rate and len(rate[cell(h)]) >= 5 else allrate for h in hz) + n = sum(h["det"] for h in hz) + p = float(binom.sf(n - 1, len(hz), exp / len(hz))) if hz and n else 1.0 + p_low = float(binom.cdf(n, len(hz), exp / len(hz))) if hz else 1.0 + out[band] = dict(n_hz=len(hz), det=n, expected=exp, p=p, p_low=p_low, n_ctrl=len(ctrl), ctrl_det=sum(h["det"] for h in ctrl), names=[h["name"] for h in hz if h["det"]]) + print("%s: %d temperate rocky-planet hosts in the footprint, %d detected against %.1f from %d other hosts (%d detected) at the same temperatures and distances (p %.3g, lower tail %.3g); %s" % ( + band, len(hz), n, exp, len(ctrl), out[band]["ctrl_det"], p, p_low, out[band]["names"])) + if record: + core.record_run( + "exoplanet_hz_hosts_bands", "The temperate rocky-planet hosts in every band", "NASA Exoplanet Archive composite table; eRASS1, GALEX AIS, VLASS and RACS-low by CDS XMatch", + "hosts within %g pc of planets below %g Earth radii at %g-%g times Earth's insolation: %d" % (dist_pc, rade_max, insol_lo, insol_hi, sum(h["hz"] for h in hosts)), os.path.abspath(__file__), + "hzbands", len(hosts), "hosts", dict(dist_pc=dist_pc, insol=[insol_lo, insol_hi], rade_max=rade_max), + "the other planet hosts within %g pc, weighted to the same temperature and distance cells" % dist_pc, "a band in which the temperate rocky-planet hosts are detected beyond their peers", + "; ".join("%s %d of %d against %.1f (p %.3g, lower tail %.3g)" % (k, v["det"], v["n_hz"], v["expected"], v["p"], v["p_low"]) for k, v in out.items()), []) + print("recorded") + + +missingbright_DOC = r"""Clusters missing their brightest stars: the open clusters of Hunt and Reffert (2023, VizieR J/A+A/673/A114) between 100 and 1000 pc, younger than 400 Myr, with A_V below 1.5 and 300 or more members, their members of probability above 0.7 counted at absolute G 0.5-2.5, late-B to F stars that every such cluster still holds on the main sequence, and at absolute G 4-6.5; each cluster's bright count against the faint count times the ratio the clusters of its age give, fitted in log age across all of them, and the deficits' Poisson tails corrected for the number of clusters; a civilisation that lifts or harvests its massive stars would leave a cluster short of them. + + python -I seti.py neighbourhood missingbright [record] [--prob-min 0.7] [--min-members 300] [--max-logage 8.6]""" + + +def missingbright_main(record=False, prob_min=0.7, min_members=300, max_logage=8.6): + from scipy.stats import poisson + cl = core.tap("vizier", 'SELECT Name, N, dist50, logAge50, AV50, MOD50 FROM "J/A+A/673/A114/clusters" WHERE Type = \'o\' AND N >= %d AND dist50 BETWEEN 100 AND 1000 AND logAge50 < %g ' + 'AND AV50 < 1.5' % (min_members, max_logage)) + info = {str(r["Name"]).strip(): r for r in cl} + names = sorted(info) + counts = {n: [0, 0] for n in names} + for k in range(0, len(names), 60): + q = 'SELECT Name, Gmag FROM "J/A+A/673/A114/members" WHERE Prob > %g AND Name IN (%s)' % (prob_min, ",".join("'%s'" % n.replace("'", "''") for n in names[k:k + 60])) + for r in core.tap("vizier", q, timeout=600): + n = str(r["Name"]).strip() + g = core.num(r["Gmag"]) + if g is None or n not in info: + continue + mg = g - float(info[n]["MOD50"]) - 0.83 * float(info[n]["AV50"]) + if 0.5 <= mg < 2.5: + counts[n][0] += 1 + elif 4.0 <= mg < 6.5: + counts[n][1] += 1 + rows = [(n, counts[n][0], counts[n][1], float(info[n]["logAge50"]), float(info[n]["dist50"])) for n in names if counts[n][1] >= 20] + la = np.array([r[3] for r in rows]) + lr = np.log(np.array([(r[1] + 0.5) / r[2] for r in rows])) + coef = np.polyfit(la, lr, 1) + out = [] + for n, b, f, a, d in rows: + exp = f * math.exp(np.polyval(coef, a)) + p = float(poisson.cdf(b, exp)) + out.append(dict(name=n, bright=b, faint=f, logage=a, dist=d, expected=exp, p=p, p_corr=min(1.0, p * len(rows)), vet=None)) + short = [o for o in out if o["p_corr"] < 0.01] + print("%d open clusters with 20 or more faint members; bright-to-faint ratio %.3f at log age 7.5 and %.3f at 8.5; clusters short of bright stars beyond the %d trials: %d" % ( + len(out), math.exp(np.polyval(coef, 7.5)), math.exp(np.polyval(coef, 8.5)), len(out), len(short))) + for o in sorted(out, key=lambda o: o["p"])[:10]: + print(" %s (%.0f pc, log age %.2f): %d bright against %.1f from %d faint (p %.2g, corrected %.2g)" % (o["name"], o["dist"], o["logage"], o["bright"], o["expected"], o["faint"], o["p"], o["p_corr"])) + json.dump(out, open(core.results("clusters_missing_bright.json"), "w"), indent=1) + if record: + core.record_run( + "hunt_reffert_missing_bright", "Clusters missing their brightest stars", "Hunt and Reffert (2023) clusters and members (VizieR J/A+A/673/A114)", + "open clusters at 100-1000 pc younger than log age %g with %d or more members and 20 faint members: %d" % (max_logage, min_members, len(out)), os.path.abspath(__file__), "missingbright", + len(out), "clusters", dict(prob_min=prob_min, min_members=min_members, max_logage=max_logage), "the bright-to-faint ratio fitted in log age across the clusters, Poisson, corrected for %d trials" % len(out), + "a cluster short of its late-B to F stars beyond chance", "%d short beyond the trials; the deepest %s" % (len(short), "; ".join("%s %d against %.1f (p %.2g)" % ( + o["name"], o["bright"], o["expected"], o["p"]) for o in sorted(out, key=lambda o: o["p"])[:3])), + [dict(target="cluster:%s" % o["name"], stat=o["bright"], unit="members at absolute G 0.5-2.5", p=o["p"], vet=o["vet"], note="against %.1f from %d faint members, log age %.2f, %.0f pc" % ( + o["expected"], o["faint"], o["logage"], o["dist"])) for o in short]) + print("recorded") + + +nearoutliers_DOC = r"""A model-free outlier search over the nearest stars: the thousand Gaia DR3 sources with the largest parallaxes measured at 10 sigma, their Gaia, 2MASS, AllWISE, GALEX and eRASS1 measurements, each archive's colours or flux ratio set against the stars of the same BP-RP by a running median and robust spread, the ultracool dwarfs fainter than absolute G 15, whose BP flux is noise, against each other by G-RP, a star counted odd in an archive when one of that archive's quantities stands 5 robust widths off, and the stars odd in three or more independent archives read for what makes them so: a white dwarf below the main sequence, a companion in Gaia's astrometry, or youth and activity in X-rays and the ultraviolet; a star unlike its kind in several independent instruments at once would remain. + + python -I seti.py neighbourhood nearoutliers [record] [--n 1000] [--widths 5] [--min-archives 3]""" + + +def nearoutliers_main(record=False, n=1000, widths=5.0, min_archives=3): + g = core.tap("gaia", "SELECT TOP %d source_id, ra, dec, parallax, pmra, pmdec, phot_g_mean_mag, bp_rp, g_rp, ruwe, phot_bp_rp_excess_factor FROM gaiadr3.gaia_source " + "WHERE parallax_over_error > 10 AND bp_rp IS NOT NULL ORDER BY parallax DESC" % n) + st = {r["source_id"]: dict(id=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), plx=float(r["parallax"]), pmra=float(r["pmra"] or 0), pmdec=float(r["pmdec"] or 0), + g=float(r["phot_g_mean_mag"]), c=float(r["bp_rp"]), grp=core.num(r["g_rp"]), ruwe=core.num(r["ruwe"]), cs=core.cstar(r["phot_bp_rp_excess_factor"], r["bp_rp"]) + if core.num(r["phot_bp_rp_excess_factor"]) is not None else None) for r in g} + ids = list(st) + q2 = ("SELECT x.source_id, t.j_m, t.h_m, t.ks_m FROM gaiadr3.tmass_psc_xsc_best_neighbour AS x JOIN gaiadr3.tmass_psc_xsc_join AS j ON j.clean_tmass_psc_xsc_oid = x.clean_tmass_psc_xsc_oid " + "JOIN gaiadr1.tmass_original_valid AS t ON t.designation = j.original_psc_source_id WHERE x.source_id IN (%s)") + qw = ("SELECT x.source_id, w.w1mpro, w.w2mpro, w.w3mpro, w.w4mpro, w.ph_qual FROM gaiadr3.allwise_best_neighbour AS x JOIN gaiadr1.allwise_original_valid AS w ON x.allwise_oid = w.allwise_oid " + "WHERE x.source_id IN (%s)") + for q in (q2, qw): + for i in range(0, len(ids), 400): + for r in core.tap("gaia", q % ",".join(ids[i:i + 400])): + st[r["source_id"]].update({k: core.num(v) if k != "ph_qual" else v for k, v in r.items() if k != "source_id"}) + + def carried(epoch): + return [dict(source_id=s["id"], ra=s["ra"] + (epoch - 2016.0) * s["pmra"] / 3.6e6 / math.cos(math.radians(s["dec"])), dec=s["dec"] + (epoch - 2016.0) * s["pmdec"] / 3.6e6) + for s in st.values()] + for m in core.xmatch(carried(2007.5), "II/335/galex_ais", 20.0): + s = st[m["source_id"]] + if float(m["angDist"]) < 5 + 4.5 * math.hypot(s["pmra"], s["pmdec"]) / 1000 and core.num(m.get("NUVmag")) is not None: + s["nuv"] = min(s.get("nuv", 99), core.num(m["NUVmag"])) + north = [x for x in carried(2020.1)] + for m in core.xmatch(north, "J/A+A/682/A34/erass1-m", 15.0): + f = core.num(m.get("ML_FLUX_1") or m.get("Flux") or m.get("FluxP")) + if f: + st[m["source_id"]]["fx"] = max(st[m["source_id"]].get("fx", 0), f) + for s in st.values(): + s["mg"] = s["g"] + 5 * math.log10(s["plx"] / 100) + s["q"] = {} + s["q"]["gaia"] = dict(mg=s["mg"], ruwe=math.log10(s["ruwe"]) if s["ruwe"] else None, cstar=s["cs"]) + s["q"]["2mass"] = dict(jh=(s.get("j_m") - s.get("h_m")) if s.get("j_m") and s.get("h_m") else None, gk=(s["g"] - s["ks_m"]) if s.get("ks_m") else None) + s["q"]["allwise"] = dict(w12=(s["w1mpro"] - s["w2mpro"]) if s.get("w1mpro") and s.get("w2mpro") else None, w13=(s["w1mpro"] - s["w3mpro"]) if s.get("w1mpro") and s.get("w3mpro") + and str(s.get("ph_qual") or "xxx")[2:3] in ("A", "B") else None) + s["q"]["galex"] = dict(nuvg=(s["nuv"] - s["g"]) if s.get("nuv") else None) + s["q"]["erass1"] = dict(fxg=(math.log10(s["fx"]) + 0.4 * s["g"]) if s.get("fx") else None) + stars = list(st.values()) + for s in stars: + # an ultracool dwarf's BP flux is noise, so the faint ones are set against each other by G-RP + s["cool"] = s["mg"] > 15 and s["grp"] is not None + s["key"] = s["grp"] if s["cool"] else s["c"] + odd = {s["id"]: [] for s in stars} + for arch, key, cool in [(a, k, c) for a in ("gaia", "2mass", "allwise", "galex", "erass1") for k in stars[0]["q"][a] for c in (False, True)]: + if cool and key == "cstar": + continue + order = sorted([s for s in stars if s["cool"] == cool], key=lambda s: s["key"]) + vals = [(s["key"], s["q"][arch][key], s["id"]) for s in order if s["q"][arch][key] is not None] + if len(vals) < 30: + continue + ys = np.array([v[1] for v in vals]) + for k, (c, y, sid) in enumerate(vals): + lo, hi = max(0, k - 25), min(len(vals), k + 26) + win = np.delete(ys[lo:hi], k - lo) + med = float(np.median(win)) + mad = 1.4826 * float(np.median(np.abs(win - med))) or 1e-3 + if abs(y - med) > widths * mad: + odd[sid].append("%s %s %+.1f" % (arch, key, (y - med) / mad)) + flagged = [] + for s in stars: + archs = sorted({x.split()[0] for x in odd[s["id"]]}) + if len(archs) >= min_archives: + why = [] + if s["mg"] > 10 + 2.5 * s["c"] or s["c"] < 0.5 and s["mg"] > 9: + why.append("below the main sequence") + if (s["ruwe"] or 0) > 1.4: + why.append("companion") + if s.get("fx") or s.get("nuv"): + why.append("active") + s["archs"], s["why"] = archs, why + s["vet"] = ("white-dwarf" if "below the main sequence" in why and s["c"] < 1.0 else "binary" if "companion" in why else "active-star" if "active" in why else None) + flagged.append(s) + left = [s for s in flagged if s["vet"] is None] + print("%d nearest stars (parallax %.1f mas and beyond); odd in one archive %d, in %d or more %d: white dwarfs %d, binaries %d, active %d; unexplained %d" % ( + len(stars), min(s["plx"] for s in stars), sum(1 for s in stars if odd[s["id"]]), min_archives, len(flagged), sum(s["vet"] == "white-dwarf" for s in flagged), + sum(s["vet"] == "binary" for s in flagged), sum(s["vet"] == "active-star" for s in flagged), len(left))) + for s in flagged: + print(" Gaia DR3 %s: %.1f pc, BP-RP %.2f, M_G %.2f; %s; %s" % (s["id"], 1000 / s["plx"], s["c"], s["mg"], "; ".join(odd[s["id"]]), s["vet"] or "unexplained")) + if record: + core.record_run( + "nearest_stars_multi_archive_outliers", "A model-free outlier search over the nearest stars", "Gaia DR3; 2MASS and AllWISE by Gaia's best neighbours; GALEX AIS and eRASS1 by CDS XMatch", + "the %d Gaia DR3 sources with the largest parallaxes at 10 sigma" % len(stars), os.path.abspath(__file__), "nearoutliers", len(stars), "stars", + dict(n=n, widths=widths, min_archives=min_archives), "each quantity against the running median and robust spread of the 50 stars nearest in BP-RP", + "a star odd in %d or more independent archives with no white dwarf, companion or activity behind it" % min_archives, + "%d odd in %d or more archives: %d white dwarfs, %d binaries, %d active; %d unexplained" % (len(flagged), min_archives, sum(s["vet"] == "white-dwarf" for s in flagged), + sum(s["vet"] == "binary" for s in flagged), sum(s["vet"] == "active-star" for s in flagged), len(left)), + [dict(target="gaia_dr3:%s" % s["id"], stat=len(s["archs"]), unit="archives in which the star is odd", vet=s["vet"], note="; ".join(odd[s["id"]])) for s in flagged]) + print("recorded") + + +timecluster_DOC = r"""Time clustering of our residues: the coverage-store rows that record a candidate event with its date in the note (an MJD, a TESS BTJD or a calendar date) and no natural explanation, a candidate being a row with a p-value below 0.01 or a cosmic-ray multiplet (a row in days between members), since most dated rows record the epochs searched rather than anything found, reduced to the distinct days of each run, and the days on which unexplained events of two runs on different instruments (by the run's leading name) fall within a day of each other, against the count when each run's days are shifted together by a random offset of up to a year, 500 times; something acting at one moment would mark the records of independent instruments on the same day. + + python -I seti.py neighbourhood timecluster [record] [--window-d 1] [--shifts 500]""" + + +def timecluster_main(record=False, window_d=1.0, shifts=500): + import datetime as _dt + pat = re.compile(r"MJD\s*([0-9]{5}(?:\.[0-9]+)?)|BTJD\s*([0-9]{4}(?:\.[0-9]+)?)|\b((?:19|20)[0-9]{2}-[01][0-9]-[0-3][0-9])") + db = sqlite3.connect(core.COVERAGE) + days = {} + for sid, note, pv, unit in db.execute("SELECT search_id, note, p, unit FROM coverage WHERE vet IS NULL AND note IS NOT NULL"): + if not ((pv is not None and pv < 0.01) or unit == "days between members"): + continue + m = pat.search(note) + if not m: + continue + if m.group(1): + d = float(m.group(1)) + elif m.group(2): + d = float(m.group(2)) + 56999.5 + else: + d = (_dt.date.fromisoformat(m.group(3)) - _dt.date(1858, 11, 17)).days + days.setdefault(sid, set()).add(math.floor(d)) + runs = sorted(days) + arr = {r: np.array(sorted(days[r]), float) for r in runs} + + def coincide(shift): + n, pairs = 0, [] + for i in range(len(runs)): + for j in range(i + 1, len(runs)): + if runs[i].split("_")[0] == runs[j].split("_")[0]: + continue + a, b = arr[runs[i]] + shift[i], arr[runs[j]] + shift[j] + k = np.searchsorted(b, a - window_d) + for x, kk in zip(a, k): + while kk < len(b) and b[kk] <= x + window_d: + n += 1 + if not shift.any(): + pairs.append((runs[i], runs[j], int(x))) + kk += 1 + return n, pairs + real, pairs = coincide(np.zeros(len(runs))) + rng = np.random.default_rng(29) + null = np.array([coincide(np.round(rng.uniform(-365, 365, len(runs))))[0] for _ in range(shifts)]) + p = float((null >= real).mean()) + print("%d runs with dated candidate events, %d distinct days; days of two runs on different instruments within %g d: %d against %.1f +- %.1f from %d shifts (p %.3g)" % ( + len(runs), sum(len(v) for v in days.values()), window_d, real, null.mean(), null.std(), shifts, p)) + by = {} + for a, b, d in pairs: + by.setdefault((a, b), []).append(d) + for (a, b), ds in sorted(by.items(), key=lambda kv: -len(kv[1]))[:10]: + print(" %s and %s: %d days, e.g. MJD %s" % (a, b, len(ds), ds[:3])) + if record: + core.record_run( + "store_residue_time_clustering", "Time clustering of our residues", "the coverage store's unexplained candidate events with dates", + "runs with dated candidate events (p below 0.01 or cosmic-ray multiplets): %d, %d distinct days" % (len(runs), sum(len(v) for v in days.values())), os.path.abspath(__file__), "timecluster", len(runs), "runs", + dict(window_d=window_d, shifts=shifts), "%d shifts of each run's days by up to a year: %.1f +- %.1f" % (shifts, null.mean(), null.std()), + "unexplained events of independent runs on the same day beyond the shifted runs", "%d coinciding days against %.1f (p %.3g)" % (real, null.mean(), p), []) + print("recorded") + + +APPROACHES = { + "timecluster": (lambda: core.run_cli(timecluster_main), timecluster_DOC), + "nearoutliers": (lambda: core.run_cli(nearoutliers_main), nearoutliers_DOC), + "missingbright": (lambda: core.run_cli(missingbright_main), missingbright_DOC), + "hzbands": (lambda: core.run_cli(hzbands_main), hzbands_DOC), + "herdedages": (lambda: core.run_cli(herdedages_main), herdedages_DOC), + "cmbaxis": (lambda: core.run_cli(cmbaxis_main), cmbaxis_DOC), + "residueclustering": (lambda: core.run_cli(residueclustering_main), residueclustering_DOC), + "receded": (lambda: core.run_cli(receded_main), receded_DOC), + "dscgalaxies": (lambda: core.run_cli(dscgalaxies_main), dscgalaxies_DOC), + "jumped": (lambda: core.run_cli(jumped_main), jumped_DOC), + "retroclusters": (lambda: core.run_cli(retroclusters_main), retroclusters_DOC), + "darkcircles": (lambda: core.run_cli(darkcircles_main), darkcircles_DOC), + "escapees": (lambda: core.run_cli(escapees_main), escapees_DOC), + "roundbinaries": (lambda: core.run_cli(roundbinaries_main), roundbinaries_DOC), + "watchers": (lambda: core.run_cli(watchers_main), watchers_DOC), + "trojanpoints": (lambda: core.run_cli(trojanpoints_main), trojanpoints_DOC), + "comovers": (lambda: core.run_cli(comovers_main), comovers_DOC), + "siblings": (lambda: core.run_cli(siblings_main), siblings_DOC), + "hvsorigin": (lambda: core.run_cli(hvsorigin_main), hvsorigin_DOC), + "nearlens": (lambda: core.run_cli(nearlens_main), nearlens_DOC), + "encounters": (lambda: core.run_cli(encounters_main), encounters_DOC), + "qsomove": (lambda: core.run_cli(qsomove_main), qsomove_DOC), + "galplx": (lambda: core.run_cli(galplx_main), galplx_DOC), + "uncatalogued": (lambda: core.run_cli(uncatalogued_main), uncatalogued_DOC), + "lattice": (lambda: core.run_cli(lattice_main), lattice_DOC), + "fastrv": (lambda: core.run_cli(fastrv_main), fastrv_DOC), + "still": (lambda: core.run_cli(still_main), still_DOC), + "barnard": (lambda: core.run_cli(barnard_main), barnard_DOC), + "proxima": (lambda: core.run_cli(proxima_main), proxima_DOC), + "mysteries": (lambda: core.run_cli(mysteries_main), mysteries_DOC), + "unbound": (lambda: core.run_cli(unbound_main), unbound_DOC), + "oacells": (lambda: core.run_cli(oacells_main), oacells_DOC), + "noclass": (lambda: core.run_cli(noclass_main), noclass_DOC), + "cmbrest": (lambda: core.run_cli(cmbrest_main), cmbrest_DOC), + "thrust": (lambda: core.run_cli(thrust_main), thrust_DOC), + "copies": (lambda: core.run_cli(copies_main), copies_DOC), + "flagetz": (lambda: core.run_cli(flagetz_main), flagetz_DOC), + "flagdirs": (lambda: core.run_cli(flagdirs_main), flagdirs_DOC), + "rest": (rest_cli, rest_DOC), + "headon": (lambda: core.run_cli(headon_main), headon_DOC), + "qsolike": (lambda: core.run_cli(qsolike_main), qsolike_DOC), + "no2mass": (lambda: core.run_cli(no2mass_main), no2mass_DOC), + "unknown": (lambda: core.run_cli(unknown_main), unknown_DOC), + "hotsmall": (hotsmall_cli, hotsmall_DOC), + "poles": (poles_cli, poles_DOC), + "intrinsic": (intrinsic_cli, intrinsic_DOC), + "herded": (lambda: core.run_cli(herded_main), herded_DOC), + "imaging": (imaging_cli, imaging_DOC), + "phase_space": (phase_space_cli, phase_space_DOC), + "etz": (lambda: core.run_cli(etz_main), etz_DOC), + "polarised": (polarised_cli, polarised_DOC), + "beams": (beams_cli, beams_DOC), + "joint": (joint_cli, joint_DOC), +} + + diff --git a/setitools/radio_sky.py b/setitools/radio_sky.py new file mode 100644 index 0000000000000000000000000000000000000000..f0ac2d801e96f5bba1d3fa14bdb159bdddadbbc5 --- /dev/null +++ b/setitools/radio_sky.py @@ -0,0 +1,5189 @@ +"""Radio surveys, spacecraft and ground receivers, pulsars and radar beams.""" +import argparse +import glob +import gzip +import io +import json +import math +import os +import re +import sys +import time +import urllib.parse +import urllib.request +from concurrent.futures import ThreadPoolExecutor +from datetime import date, timedelta + +import numpy as np + +from setitools import catalogues, core, science +from setitools.core import num, quiet_warnings, sep_arcsec + + +# -------------------------------------------------------------------------------------------------------------- + +hi4pi_DOC = r"""Single-channel 21 cm spikes at nearby stars' rest velocities in HI4PI, ring-differenced against spectral and sky controls; repeated in the CMB and GSR frames. + + python -I seti.py radio_sky hi4pi fetch [--threads 4] + python -I seti.py radio_sky hi4pi search + python -I seti.py radio_sky hi4pi frames + python -I seti.py radio_sky hi4pi record""" + +hi4pi_ROOT = os.environ.get("HI4PI_ROOT", core.data("hi4pi")) +hi4pi_HERE = core.RESULTS +hi4pi_BASE = "https://cdsarc.cds.unistra.fr/ftp/J/A+A/594/A116/HPX/" +hi4pi_NSIDE = 1024 +hi4pi_START, hi4pi_ROW, hi4pi_NCH, hi4pi_NROW = 11520, 3772, 933, 65536 +hi4pi_SIZE = 247213440 +hi4pi_CRPIX, hi4pi_CDELT = 466.921630003, 1.2882149691242 # km/s, LSRK radio velocity, 1-based pixel +hi4pi_BEAM_ARCMIN = 16.2 +hi4pi_HALF_NOISE = 40 +hi4pi_N_CTRL = 20 + + +def hi4pi_fetch(threads): + """All 192 tables into ROOT/hpx, full size only.""" + from concurrent.futures import ThreadPoolExecutor + d = os.path.join(hi4pi_ROOT, "hpx") + os.makedirs(d, exist_ok=True) + + def one(k): + name = "HPX_%03d.fits" % k + return name, core.download(hi4pi_BASE + name, os.path.join(d, name), size=hi4pi_SIZE) + + with ThreadPoolExecutor(threads) as ex: + for name, ok in ex.map(one, range(1, 193)): + print(name, "ok" if ok else "failed", flush=True) + + +class hi4pi_Sky: + """Row access to the HEALPix tables through memory maps.""" + + def __init__(self): + from astropy_healpix import HEALPix + from astropy.coordinates import Galactic + self.hp = HEALPix(nside=hi4pi_NSIDE, order="ring", frame=Galactic()) + self.maps, self.order = {}, {} + + def _file(self, parent_ring): + if parent_ring not in self.maps: + from astropy_healpix.core import nested_to_ring, ring_to_nested + p = os.path.join(hi4pi_ROOT, "hpx", "HPX_%03d.fits" % (parent_ring + 1)) + self.maps[parent_ring] = np.memmap(p, dtype=np.uint8, mode="r", offset=hi4pi_START, shape=(hi4pi_NROW, hi4pi_ROW)) + pn = int(ring_to_nested(parent_ring, 4)) + self.order[parent_ring] = np.sort(nested_to_ring(pn * hi4pi_NROW + np.arange(hi4pi_NROW), hi4pi_NSIDE).astype(np.int64)) + return self.maps[parent_ring], self.order[parent_ring] + + def spectrum(self, ring): + from astropy_healpix.core import nested_to_ring, ring_to_nested + parent = int(nested_to_ring(int(ring_to_nested(int(ring), hi4pi_NSIDE)) // hi4pi_NROW, 4)) + m, order = self._file(parent) + i = int(np.searchsorted(order, ring)) + b = m[i] + idx = int(np.frombuffer(b[:8].tobytes(), ">i8")[0]) + if idx != ring: + raise ValueError("row %d of base pixel %d holds pixel %d, not %d" % (i, parent, idx, ring)) + return np.frombuffer(b[40:].tobytes(), ">f4").astype(float) + + def pixel(self, glon, b): + import astropy.units as u + return int(self.hp.lonlat_to_healpix(glon * u.deg, b * u.deg)) + + def near(self, glon, b, radius_arcmin): + import astropy.units as u + return [int(x) for x in self.hp.cone_search_lonlat(glon * u.deg, b * u.deg, radius=radius_arcmin * u.arcmin)] + + def lonlat(self, ring): + lo, la = self.hp.healpix_to_lonlat(ring) + return float(lo.deg), float(la.deg) + + +def hi4pi_channel(v_kms): + return v_kms / hi4pi_CDELT + hi4pi_CRPIX - 1.0 + + +def hi4pi_residual(s): + """Channel minus its quadratic prediction from two channels either side; spikes keep their height.""" + d = np.zeros_like(s) + d[2:-2] = s[2:-2] - (4 * (s[1:-3] + s[3:-1]) - (s[:-4] + s[4:])) / 6.0 + return d + + +def hi4pi_zmax(r, c0, half): + """Largest residual in the window over the outside robust scatter: (z, channel), or (nan, -1) at edges.""" + lo, hi = c0 - half, c0 + half + 1 + if lo < hi4pi_HALF_NOISE or hi > hi4pi_NCH - hi4pi_HALF_NOISE: + return float("nan"), -1 + ring = np.r_[r[lo - hi4pi_HALF_NOISE:lo], r[hi:hi + hi4pi_HALF_NOISE]] + sd = 1.4826 * np.median(np.abs(ring - np.median(ring))) + if not sd > 0: + return float("nan"), -1 + k = int(np.argmax(r[lo:hi])) + return float(r[lo + k] / sd), lo + k + + +def hi4pi_beam_fit(sky, glon, b, ch): + """Point-source fit within 15 arcmin: amplitude, error, plane reduced chi-square, pixel count.""" + pix = sky.near(glon, b, 15.0) + vals, dx, dy = [], [], [] + cb = math.cos(math.radians(b)) + for p in pix: + r = hi4pi_residual(sky.spectrum(p)) + vals.append(r[ch]) + pl, pb = sky.lonlat(p) + dx.append(((pl - glon + 180) % 360 - 180) * cb * 60) + dy.append((pb - b) * 60) + vals, dx, dy = np.array(vals), np.array(dx), np.array(dy) + g = np.exp(-4 * math.log(2) * (dx ** 2 + dy ** 2) / hi4pi_BEAM_ARCMIN ** 2) + A = np.c_[g, np.ones_like(g), dx, dy] + coef, *_ = np.linalg.lstsq(A, vals, rcond=None) + res = vals - A @ coef + dof = max(len(vals) - 4, 1) + s2 = float(res @ res / dof) + cov = s2 * np.linalg.pinv(A.T @ A) + return float(coef[0]), float(math.sqrt(max(cov[0, 0], 0))), s2, len(vals) + + +def hi4pi_targets(): + path = os.path.join(hi4pi_ROOT, "targets.json") + if os.path.exists(path): + return json.load(open(path)) + rows = core.gaia("SELECT source_id, ra, dec, l, b, parallax, pmra, pmdec, radial_velocity, " + "radial_velocity_error, phot_g_mean_mag, bp_rp FROM gaiadr3.gaia_source WHERE parallax > 20 " + "AND radial_velocity IS NOT NULL") + vl = science.helio_to_lsrk([float(r["radial_velocity"]) for r in rows], [float(r["l"]) for r in rows], + [float(r["b"]) for r in rows]) + out = [dict(source_id=r["source_id"], l=float(r["l"]), b=float(r["b"]), plx=float(r["parallax"]), + rv=float(r["radial_velocity"]), e_rv=float(r["radial_velocity_error"] or 1.0), v_lsrk=float(v), + g=num(r["phot_g_mean_mag"], float("nan")), bp_rp=num(r["bp_rp"], float("nan"))) + for r, v in zip(rows, vl)] + os.makedirs(hi4pi_ROOT, exist_ok=True) + json.dump(out, open(path, "w")) + return out + + +hi4pi_RING = (20.0, 40.0) # arcmin; beam at 1.5 per cent by 20, Galactic structure persists across 40 +hi4pi_N_RING, hi4pi_N_SKY = 24, 4 + + +def hi4pi_ring_pixels(sky, glon, b, rng): + """Up to N_RING pixels in the ring around (l, b).""" + inner = set(sky.near(glon, b, hi4pi_RING[0])) + pix = [p for p in sky.near(glon, b, hi4pi_RING[1]) if p not in inner] + if len(pix) > hi4pi_N_RING: + pix = [int(x) for x in rng.choice(pix, hi4pi_N_RING, replace=False)] + return pix + + +def hi4pi_differenced(sky, glon, b, rng): + """Residual minus the ring median with ring scatter, floored by the quiet-channel scatter.""" + r0 = hi4pi_residual(sky.spectrum(sky.pixel(glon, b))) + R = np.array([hi4pi_residual(sky.spectrum(p)) for p in hi4pi_ring_pixels(sky, glon, b, rng)]) + med = np.median(R, axis=0) + sd = 1.4826 * np.median(np.abs(R - med), axis=0) + diff = r0 - med + v = (np.arange(hi4pi_NCH) + 1 - hi4pi_CRPIX) * hi4pi_CDELT + # GASS spectra are blank beyond +-470 km/s; only finite channels set the floor + quiet = (np.abs(v) > 200) & (np.arange(hi4pi_NCH) > 2) & (np.arange(hi4pi_NCH) < hi4pi_NCH - 3) & np.isfinite(diff) + floor = 1.4826 * np.median(np.abs(diff[quiet] - np.median(diff[quiet]))) if quiet.sum() > 50 else np.nan + return diff, np.fmax(sd, floor) + + +hi4pi_SPIKE = np.array([1 / 6.0, -2 / 3.0, 1.0, -2 / 3.0, 1 / 6.0]) + + +def hi4pi_spike_shape(diff, ch): + """Correlation of the differenced residual with a one-channel spike's pattern.""" + if ch < 2 or ch > hi4pi_NCH - 3: + return float("nan") + x = diff[ch - 2:ch + 3] + if not np.all(np.isfinite(x)) or np.std(x) == 0: + return float("nan") + return float(np.corrcoef(x, hi4pi_SPIKE)[0, 1]) + + +def hi4pi_window_max(diff, sd, c0, half): + lo, hi = c0 - half, c0 + half + 1 + if lo < 3 or hi > hi4pi_NCH - 3: + return float("nan"), -1 + z = diff[lo:hi] / sd[lo:hi] + k = int(np.argmax(z)) + return float(z[k]), lo + k + + +def hi4pi_search(): + ts = hi4pi_targets() + sky = hi4pi_Sky() + rng = np.random.default_rng(7) + res = [] + t0 = time.time() + offs = [o for o in range(-200, 201, 10) if abs(o) >= 15] + for n, t in enumerate(ts): + c0 = int(round(hi4pi_channel(t["v_lsrk"]))) + half = int(min(max(1, math.ceil(2 * t["e_rv"] / hi4pi_CDELT)), 5)) + diff, sd = hi4pi_differenced(sky, t["l"], t["b"], rng) + z, ch = hi4pi_window_max(diff, sd, c0, half) + # the window elsewhere in the star's own spectrum + ctrl_spec = [] + for o in rng.choice(offs, hi4pi_N_CTRL, replace=False): + zc, cc = hi4pi_window_max(diff, sd, c0 + o, half) + ctrl_spec.append([zc, hi4pi_spike_shape(diff, cc) if cc >= 0 else float("nan")]) + # the window at positions 1-2 deg away, each with its ring + ctrl_sky = [] + for _ in range(hi4pi_N_SKY): + ang, dist = rng.uniform(0, 2 * math.pi), rng.uniform(1.0, 2.0) + bb = max(min(t["b"] + dist * math.sin(ang), 89.9), -89.9) + ll = (t["l"] + dist * math.cos(ang) / max(math.cos(math.radians(bb)), 0.05)) % 360 + d2, s2 = hi4pi_differenced(sky, ll, bb, rng) + zc, cc = hi4pi_window_max(d2, s2, c0, half) + ctrl_sky.append([zc, hi4pi_spike_shape(d2, cc) if cc >= 0 else float("nan")]) + res.append(dict(t, channel=c0, half=half, z=z, ch=ch, shape=hi4pi_spike_shape(diff, ch) if ch >= 0 else float("nan"), + ctrl_spec=ctrl_spec, ctrl_sky=ctrl_sky)) + if n % 1000 == 0: + print("%d of %d stars, %.0f s" % (n, len(ts), time.time() - t0), flush=True) + json.dump(res, open(os.path.join(hi4pi_HERE, "hi4pi_spikes.json"), "w"), default=float) + hi4pi_judge(res, sky) + + +hi4pi_NARROW = 0.8 + + +def hi4pi_judge(res, sky): + """Counts above 4-6 sigma for stars and both control sets; narrow stars above 5 sigma with p and beam fit.""" + zs = np.array([r["z"] for r in res]) + sh = np.array([r.get("shape", np.nan) for r in res]) + cs = np.array([x for r in res for x in r["ctrl_spec"] if np.isfinite(x[0])]) + ck = np.array([x for r in res for x in r["ctrl_sky"] if np.isfinite(x[0])]) + ok = np.isfinite(zs) + print("%d stars within 50 pc with Gaia radial velocities; %d with a finite statistic" % (len(res), ok.sum())) + for thr in (4, 5, 6): + print(" window maximum above %d sigma: stars %.4f, spectral controls %.4f, sky controls %.4f; narrow (shape " + "above %.1f): stars %d (%.5f), spectral %.5f, sky %.5f" + % (thr, np.mean(zs[ok] > thr), np.mean(cs[:, 0] > thr), np.mean(ck[:, 0] > thr), hi4pi_NARROW, + int(np.sum((zs[ok] > thr) & (sh[ok] > hi4pi_NARROW))), np.mean((zs[ok] > thr) & (sh[ok] > hi4pi_NARROW)), + np.mean((cs[:, 0] > thr) & (cs[:, 1] > hi4pi_NARROW)), np.mean((ck[:, 0] > thr) & (ck[:, 1] > hi4pi_NARROW)))) + cand = sorted([r for r in res if np.isfinite(r["z"]) and r["z"] > 5 and r.get("shape", 0) > hi4pi_NARROW], + key=lambda r: -r["z"]) + narrow_spec = cs[cs[:, 1] > hi4pi_NARROW, 0] + narrow_sky = ck[ck[:, 1] > hi4pi_NARROW, 0] + for r in cand[:40]: + p_spec = (1 + np.sum(narrow_spec >= r["z"])) / (1.0 + len(cs)) + p_sky = (1 + np.sum(narrow_sky >= r["z"])) / (1.0 + len(ck)) + a, ea, chi2, npix = hi4pi_beam_fit(sky, r["l"], r["b"], r["ch"]) + r.update(p_spec=p_spec, p_sky=p_sky, beam_amp=a, beam_err=ea, beam_chi2=chi2, beam_npix=npix) + print(" Gaia DR3 %s %.1f pc G %.2f l %.2f b %+.2f: %.1f sigma, shape %.2f, channel %d (v_lsrk %+.1f km/s, " + "star %+.1f +- %.1f), p %.2g against its spectrum and %.2g against the sky; beam fit %.3f +- %.3f K" + % (r["source_id"], 1000 / r["plx"], r["g"], r["l"], r["b"], r["z"], r["shape"], r["ch"], + (r["ch"] + 1 - hi4pi_CRPIX) * hi4pi_CDELT, r["v_lsrk"], r["e_rv"], p_spec, p_sky, a, ea)) + json.dump(cand, open(os.path.join(hi4pi_HERE, "hi4pi_candidates.json"), "w"), default=float, indent=1) + + +# beacons at rest in the CMB (+-2 channels) and GSR (+-3) frames +hi4pi_FRAMES = {"CMB": ("cmb", 2), "GSR": ("gsr", 3)} +hi4pi_EMISSION_K = 0.3 # K; windows above this are inside line emission + + +def hi4pi_frames(): + """Every pixel at the CMB- and GSR-frame 21 cm channel against channels 60 and 120 away, emission windows excluded.""" + offs = np.r_[np.arange(-hi4pi_HALF_NOISE, -5), np.arange(6, hi4pi_HALF_NOISE + 1)] + out, counts = [], {} + t0 = time.time() + for parent in range(192): + m = np.memmap(os.path.join(hi4pi_ROOT, "hpx", "HPX_%03d.fits" % (parent + 1)), dtype=np.uint8, mode="r", + offset=hi4pi_START, shape=(hi4pi_NROW, hi4pi_ROW)) + a = np.ascontiguousarray(m) + ring = a[:, 0:8].copy().view(">i8").ravel().astype(np.int64) + glon = a[:, 24:32].copy().view(">f8").ravel().astype(float) + b = a[:, 32:40].copy().view(">f8").ravel().astype(float) + s = a[:, 40:].copy().view(">f4").astype(np.float32) + d = np.zeros_like(s) + d[:, 2:-2] = s[:, 2:-2] - (4 * (s[:, 1:-3] + s[:, 3:-1]) - (s[:, :-4] + s[:, 4:])) / 6.0 + rows = np.arange(hi4pi_NROW) + for name, (frame, half) in hi4pi_FRAMES.items(): + v = science.helio_to_lsrk(science.frame_rest_velocity(frame, glon, b), glon, b) + c0 = np.rint(v / hi4pi_CDELT + hi4pi_CRPIX - 1).astype(int) + for tag, shift in (("beacon", 0), ("control", 60), ("control", -60), ("control", 120), ("control", -120)): + c = c0 + shift + ok = (c - hi4pi_HALF_NOISE >= 2) & (c + hi4pi_HALF_NOISE < hi4pi_NCH - 2) + win = np.clip(c[:, None] + np.arange(-half, half + 1)[None, :], 0, hi4pi_NCH - 1) + noise = d[rows[:, None], np.clip(c[:, None] + offs[None, :], 0, hi4pi_NCH - 1)] + med = np.median(noise, axis=1) + sd = 1.4826 * np.median(np.abs(noise - med[:, None]), axis=1) + w = d[rows[:, None], win] + k = np.argmax(w, axis=1) + # windows within 5 channels of hydrogen emission are excluded and counted untested + around = s[rows[:, None], np.clip(c[:, None] + np.arange(-5, 6)[None, :], 0, hi4pi_NCH - 1)] + clear = np.nanmax(np.abs(around), axis=1) < hi4pi_EMISSION_K + z = np.where(ok & clear & (sd > 0), w[rows, k] / np.where(sd > 0, sd, 1), np.nan) + key = (name, tag) + cnt = counts.setdefault(key, [0, 0, 0, 0]) + good = np.isfinite(z) + cnt[0] += int(good.sum()) + for j, thr in enumerate((4.0, 5.0, 6.0)): + cnt[j + 1] += int((z[good] > thr).sum()) + if tag == "beacon": + for i in np.where(good & (z > 5.0))[0]: + out.append(dict(frame=name, ring=int(ring[i]), l=float(glon[i]), b=float(b[i]), z=float(z[i]), + ch=int(win[i, k[i]]), v_lsrk=float(v[i]), sd=float(sd[i]), + amp=float(w[i, k[i]]))) + del a, s, d, m + if parent % 16 == 15: + print("%d of 192 base pixels, %d pixels above 5 sigma, %.0f s" % (parent + 1, len(out), + time.time() - t0), flush=True) + for (name, tag), c in sorted(counts.items()): + print("%s %s: %d pixel windows; above 4, 5 and 6 sigma %d, %d, %d (%.2e, %.2e, %.2e)" + % (name, tag, c[0], c[1], c[2], c[3], c[1] / c[0], c[2] / c[0], c[3] / c[0])) + json.dump(dict(counts={"%s %s" % k: v for k, v in counts.items()}, peaks=out), + open(os.path.join(hi4pi_HERE, "hi4pi_frames.json"), "w"), indent=1) + # a beacon fills the 16.2 arcmin beam + sky = hi4pi_Sky() + peaks = sorted(out, key=lambda p: -p["z"]) + for p in peaks[:60]: + a_, ea, chi2, npix = hi4pi_beam_fit(sky, p["l"], p["b"], p["ch"]) + p.update(beam_amp=a_, beam_err=ea, beam_chi2=chi2, beam_npix=npix) + print(" %s l %.3f b %+.3f: %.1f sigma (%.3f K) in channel %d (v_lsrk %+.1f); beam fit %.3f +- %.3f K over %d " + "pixels" % (p["frame"], p["l"], p["b"], p["z"], p["amp"], p["ch"], p["v_lsrk"], a_, ea, npix), flush=True) + json.dump(dict(counts={"%s %s" % k: v for k, v in counts.items()}, peaks=peaks), + open(os.path.join(hi4pi_HERE, "hi4pi_frames.json"), "w"), indent=1) + + +def hi4pi_record(): + """Record the stars' windows and the whole-sky frame counts.""" + res = json.load(open(os.path.join(hi4pi_HERE, "hi4pi_spikes.json"))) + zs = np.array([r["z"] for r in res], float) + sh = np.array([r.get("shape", np.nan) for r in res], float) + ck = np.array([x for r in res for x in r["ctrl_sky"] if np.isfinite(x[0])], float) + ok = np.isfinite(zs) + star5 = float(np.mean((zs[ok] > 5) & (sh[ok] > hi4pi_NARROW))) + sky5 = float(np.mean((ck[:, 0] > 5) & (ck[:, 1] > hi4pi_NARROW))) + core.record_search( + "hi4pi_star_frames", "Single-channel 21 cm lines at nearby stars' rest frequency, HI4PI", + archive="HI4PI HEALPix spectra (CDS J/A+A/594/A116/HPX); Gaia DR3 radial velocities", release="HI4PI 2016", + selection="Gaia DR3 stars within 50 pc with radial velocities", code="seti.py radio_sky hi4pi", + params=dict(window="LSRK velocity +- 2 errors", ring_arcmin=list(hi4pi_RING), ring_pixels=hi4pi_N_RING, narrow=hi4pi_NARROW, + controls_spectral=hi4pi_N_CTRL, controls_sky=hi4pi_N_SKY), + n_targets=int(ok.sum()), + null_summary="narrow features above 5 sigma at %.3f per cent of stars against %.3f per cent of positions 1-2 " + "deg away at the same velocity" % (100 * star5, 100 * sky5), + sensitivity="5 sigma of the ring-differenced residual, about 0.3 K or 0.5 Jy in 6.1 kHz", + result="no excess over the sky controls; the narrow features are cold Galactic hydrogen", + ledger="Single-channel 21 cm lines, HI4PI") + core.record_targets("hi4pi_star_frames", [ + dict(target="gaia_dr3:%s" % r["source_id"], stat=None if not np.isfinite(r["z"]) else float(r["z"]), + note="shape %.2f" % r["shape"] if np.isfinite(r.get("shape", np.nan)) else None) for r in res]) + fr_ = json.load(open(os.path.join(hi4pi_HERE, "hi4pi_frames.json"))) + c = fr_["counts"] + core.record_search( + "hi4pi_cmb_gsr_frames", "21 cm beacons at rest in the CMB frame and the Galactic standard of rest, HI4PI", + archive="HI4PI HEALPix spectra (CDS J/A+A/594/A116/HPX)", release="HI4PI 2016", + selection="every nside-1024 pixel whose frame channel lies clear of hydrogen emission above %.1f K" % hi4pi_EMISSION_K, + code="seti.py radio_sky hi4pi", params=dict(frames=hi4pi_FRAMES, emission_k=hi4pi_EMISSION_K, controls="60 and 120 channels away"), + n_targets=int(c["CMB beacon"][0] + c["GSR beacon"][0]), + null_summary="above 6 sigma: CMB %.2e against %.2e in control channels, GSR %.2e against %.2e" + % (c["CMB beacon"][3] / c["CMB beacon"][0], c["CMB control"][3] / c["CMB control"][0], + c["GSR beacon"][3] / c["GSR beacon"][0], c["GSR control"][3] / c["GSR control"][0]), + sensitivity="6 sigma of the leave-one-out residual, about 0.36 K or 0.56 Jy in 6.1 kHz", + result="no frame-coherent excess", ledger="Single-channel 21 cm lines, HI4PI") + print("recorded %d stars and the whole-sky frames" % ok.sum()) + + +def hi4pi_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "search", "judge", "frames", "record")) + p.add_argument("--threads", type=int, default=4) + a = p.parse_args() + if a.mode == "fetch": + hi4pi_fetch(a.threads) + elif a.mode == "search": + hi4pi_search() + elif a.mode == "frames": + hi4pi_frames() + elif a.mode == "record": + hi4pi_record() + else: + hi4pi_judge(json.load(open(os.path.join(hi4pi_HERE, "hi4pi_spikes.json"))), hi4pi_Sky()) + + +def hi4pi_cli(): + quiet_warnings() + hi4pi_main() + + +# -------------------------------------------------------------------------------------------------------------- + +hi4pi_blind_DOC = r"""Unresolved narrowband sources in every HI4PI voxel on the GPU: point-like isolated groups beyond 6 sigma, negative groups as null. + + python -I seti.py radio_sky hi4pi_blind search + python -I seti.py radio_sky hi4pi_blind vet [--top 60] + python -I seti.py radio_sky hi4pi_blind record""" + +hi4pi_blind_HERE = core.RESULTS +hi4pi_blind_Z = 6.0 +hi4pi_blind_EMISSION_K = 0.3 + + +def hi4pi_blind_file_voxels(parent, dev): + """Voxels beyond +-Z in one base pixel's table: (ring index, l, b, channel, z, K).""" + import torch + m = np.memmap(os.path.join(hi4pi_ROOT, "hpx", "HPX_%03d.fits" % (parent + 1)), dtype=np.uint8, mode="r", + offset=hi4pi_START, shape=(hi4pi_NROW, hi4pi_ROW)) + a = np.ascontiguousarray(m) + ring = a[:, 0:8].copy().view(">i8").ravel().astype(np.int64) + glon = a[:, 24:32].copy().view(">f8").ravel().astype(float) + b = a[:, 32:40].copy().view(">f8").ravel().astype(float) + s = torch.from_numpy(a[:, 40:].copy().view(">f4").astype(np.float32)).to(dev) + del a, m + finite = torch.isfinite(s) + s0 = torch.nan_to_num(s, nan=0.0) + d = torch.zeros_like(s0) + d[:, 2:-2] = s0[:, 2:-2] - (4 * (s0[:, 1:-3] + s0[:, 3:-1]) - (s0[:, :-4] + s0[:, 4:])) / 6.0 + # voxels near bright emission, blank channels or band edges + bright = (s0.abs() > hi4pi_blind_EMISSION_K) | ~finite + near = torch.nn.functional.max_pool1d(bright.float().unsqueeze(1), kernel_size=11, stride=1, padding=5).squeeze(1) > 0 + near[:, :3] = True + near[:, -3:] = True + clear = ~near + # per-pixel robust residual scatter over clear channels + dm = torch.where(clear, d, torch.full_like(d, float("nan"))) + med = torch.nanmedian(dm, dim=1, keepdim=True).values + mad = torch.nanmedian((dm - med).abs(), dim=1, keepdim=True).values * 1.4826 + z = torch.where(clear, (d - med) / mad.clamp_min(1e-6), torch.zeros_like(d)) + out = {} + for sign in (1, -1): + idx = torch.nonzero(sign * z > hi4pi_blind_Z) + rows, ch = idx[:, 0].cpu().numpy(), idx[:, 1].cpu().numpy() + zz = z[idx[:, 0], idx[:, 1]].cpu().numpy() + kk = d[idx[:, 0], idx[:, 1]].cpu().numpy() + out[sign] = [(int(ring[r]), float(glon[r]), float(b[r]), int(c), float(v), float(k)) + for r, c, v, k in zip(rows, ch, zz, kk)] + n_clear = int(clear.sum().item()) + del s, s0, d, dm, z, near, clear, bright, finite + return out, n_clear + + +def hi4pi_blind_group(vox, radius_deg=0.25): + """Positive voxels grouped by channel (+-1) within radius_deg: peak, size, extent.""" + vox = sorted(vox, key=lambda v: -abs(v[4])) + used = np.zeros(len(vox), bool) + arr = np.array([(v[1], v[2], v[3]) for v in vox], float) if vox else np.zeros((0, 3)) + groups = [] + for i, v in enumerate(vox): + if used[i]: + continue + dl = ((arr[:, 0] - v[1] + 180) % 360 - 180) * math.cos(math.radians(v[2])) + sel = (~used) & (np.abs(arr[:, 2] - v[3]) <= 1) & (np.hypot(dl, arr[:, 1] - v[2]) < radius_deg) + members = np.nonzero(sel)[0] + used[members] = True + groups.append(dict(ring=v[0], l=v[1], b=v[2], ch=v[3], z=v[4], k=v[5], n=int(len(members)), + v_lsrk=(v[3] + 1 - hi4pi_CRPIX) * hi4pi_CDELT)) + return groups + + +def hi4pi_blind_search(): + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + pos, neg, clear = [], [], 0 + t0 = time.time() + for parent in range(192): + out, n = hi4pi_blind_file_voxels(parent, dev) + pos += out[1] + neg += out[-1] + clear += n + if parent % 16 == 15: + print("%d of 192 base pixels: %d clear voxels, %d above +%.0f and %d below -%.0f sigma, %.0f s" + % (parent + 1, clear, len(pos), hi4pi_blind_Z, len(neg), hi4pi_blind_Z, time.time() - t0), flush=True) + gp, gn = hi4pi_blind_group(pos), hi4pi_blind_group(neg) + json.dump(dict(clear=clear, n_pos=len(pos), n_neg=len(neg), pos=gp, neg=gn), + open(os.path.join(hi4pi_blind_HERE, "hi4pi_blind.json"), "w")) + print("%d clear voxels; %d above +%.0f sigma in %d groups, %d below -%.0f sigma in %d groups" + % (clear, len(pos), hi4pi_blind_Z, len(gp), len(neg), hi4pi_blind_Z, len(gn))) + for size in (1, 2, 3, 5, 10): + print(" groups of %d voxels or more: positive %d, negative %d" + % (size, sum(1 for g in gp if g["n"] >= size), sum(1 for g in gn if g["n"] >= size))) + + +def hi4pi_blind_isolated(groups, g, radius_deg=5.0): + """Other same-channel groups within radius_deg of g.""" + n = 0 + for o in groups: + if o is g or o["ch"] != g["ch"]: + continue + dl = ((o["l"] - g["l"] + 180) % 360 - 180) * math.cos(math.radians(g["b"])) + if math.hypot(dl, o["b"] - g["b"]) < radius_deg: + n += 1 + return n + + +def hi4pi_blind_vet(top): + """Beam-fit fraction, significance and same-channel neighbours of every group; candidates keep 0.7 of their peak at 5 sigma, alone.""" + res = json.load(open(os.path.join(hi4pi_blind_HERE, "hi4pi_blind.json"))) + sky = hi4pi_Sky() + counts = {} + for sign, key in ((1, "pos"), (-1, "neg")): + gs = res[key] + for g in gs: + a, ea, chi2, npix = hi4pi_beam_fit(sky, g["l"], g["b"], g["ch"]) + a *= sign + g.update(beam_amp=a, beam_err=ea, beam_chi2=chi2, beam_frac=a / abs(g["k"]) if g["k"] else 0.0, + neighbours=hi4pi_blind_isolated(gs, g)) + ok = [g for g in gs if g["beam_frac"] >= 0.7 and g["beam_amp"] >= 5 * g["beam_err"] and g["neighbours"] == 0] + counts[key] = len(ok) + res[key + "_candidates"] = sorted(ok, key=lambda g: -g["z"]) + print("%s groups: %d, point-like and alone in their channel: %d" % (key, len(gs), len(ok)), flush=True) + for g in res["pos_candidates"][:top]: + print(" l %8.3f b %+7.3f channel %d (v_lsrk %+7.1f km/s): peak %.1f sigma (%.3f K), %d voxels; beam fit %.3f " + "+- %.3f K (%.2f of the peak)" % (g["l"], g["b"], g["ch"], g["v_lsrk"], g["z"], g["k"], g["n"], + g["beam_amp"], g["beam_err"], g["beam_frac"])) + json.dump(res, open(os.path.join(hi4pi_blind_HERE, "hi4pi_blind.json"), "w")) + + +def hi4pi_blind_record(): + """Record counts of both signs and one row per positive candidate.""" + res = json.load(open(os.path.join(hi4pi_blind_HERE, "hi4pi_blind.json"))) + pc, nc = res.get("pos_candidates", []), res.get("neg_candidates", []) + core.record_search( + "hi4pi_blind_voxels", "Unresolved narrowband sources anywhere in HI4PI", + archive="HI4PI HEALPix spectra (CDS J/A+A/594/A116/HPX)", release="HI4PI 2016", + selection="every voxel more than 5 channels from hydrogen emission above %.1f K" % hi4pi_blind_EMISSION_K, + code="seti.py radio_sky hi4pi_blind", params=dict(z=hi4pi_blind_Z, emission_k=hi4pi_blind_EMISSION_K, group_radius_deg=0.25, beam_fraction=0.7, + beam_sigma=5, same_channel_radius_deg=5), + n_targets=int(res["clear"]), + null_summary="%d voxels above +%.0f sigma in %d groups and %d below -%.0f in %d; point-like and alone in their " + "channel: %d positive against %d negative" % (res["n_pos"], hi4pi_blind_Z, len(res["pos"]), res["n_neg"], hi4pi_blind_Z, + len(res["neg"]), len(pc), len(nc)), + sensitivity="6 sigma of the leave-one-out residual, about 0.25-0.4 K or 0.4-0.6 Jy in 6.1 kHz", + result="no excess of point-like positive sources over the negative null; the extended " + "groups are faint high-velocity clouds", ledger="Single-channel 21 cm lines, HI4PI") + core.clear_targets("hi4pi_blind_voxels") + core.record_targets("hi4pi_blind_voxels", [ + dict(target="hi4pi:%d#ch%d" % (g["ring"], g["ch"]), stat=float(g["z"]), unit="robust deviations", + note="l %.3f b %+.3f v_lsrk %+.1f km/s, %d voxels, beam fit %.2f of the peak" + % (g["l"], g["b"], g["v_lsrk"], g["n"], g["beam_frac"])) for g in pc]) + print("recorded") + + +def hi4pi_blind_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("search", "vet", "record")) + p.add_argument("--top", type=int, default=60) + a = p.parse_args() + {"search": hi4pi_blind_search, "vet": lambda: hi4pi_blind_vet(a.top), "record": hi4pi_blind_record}[a.mode]() + + +def hi4pi_blind_cli(): + quiet_warnings() + hi4pi_blind_main() + + +# -------------------------------------------------------------------------------------------------------------- + +vlass_DOC = r"""VLASS 3 GHz emission from inactive solar-type stars (Ayanabha et al. 2024), vetted for X-rays, youth, binarity, activity and background sources. + + python -I seti.py radio_sky vlass""" + +vlass_HERE = core.RESULTS +vlass_ACTIVE = ("BY*", "RS*", "Er*", "Fl*", "TT*", "Y*O", "Y*?", "EB*", "SB*", "**", "El*", "WD*", "CV*", "Ae*", "Em*", + "V*", "Ro*", "PM*?", "RG*", "AB*", "C*", "LP*", "Mi*", "BD*", "Pec*", "a2*", "Pu*", "X") + + +def vlass_main(): + t = core.vizier("J/AJ/168/288")[0] + rows = [dict(zip(t.colnames, [r[c] for c in t.colnames])) for r in t] + pos = [dict(source_id=str(r["GaiaDR3"]), ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"])) for r in rows] + xr = {} + for cat, rad, name in (("J/A+A/682/A34/erass1-m", 15.0, "eRASS1"), ("IX/69/xmm4d13s", 10.0, "4XMM"), + ("IX/70/csc21mas", 5.0, "CSC"), ("J/A+A/588/A103/cat2rxs", 30.0, "2RXS")): + try: + m = core.xmatch(pos, cat, rad) + except Exception as e: + print("%s: %s" % (name, str(e)[:80]), flush=True) + m = [] + for r in m: + xr.setdefault(r["source_id"], set()).add(name) + print("%s: %d of %d stars within %.0f arcsec" % (name, len({r["source_id"] for r in m}), len(pos), rad), flush=True) + g = {r["source_id"]: r for r in core.gaia( + "SELECT g.source_id, g.ruwe, g.non_single_star, g.phot_variable_flag, g.bp_rp, g.phot_g_mean_mag, g.parallax, " + "a.activityindex_espcs, a.classprob_dsc_combmod_star FROM gaiadr3.gaia_source AS g LEFT OUTER JOIN " + "gaiadr3.astrophysical_parameters AS a ON g.source_id = a.source_id WHERE g.source_id IN (%s)" + % ",".join(p["source_id"] for p in pos))} + out = [] + for r, p in zip(rows, pos): + sid = p["source_id"] + x = g.get(sid, {}) + bprp, gm, plx = num(x.get("bp_rp")), num(x.get("phot_g_mean_mag")), num(x.get("parallax")) + mg = gm + 5 * math.log10(plx / 100.0) if gm and plx and plx > 0 else None + typ = str(r.get("Type") or "") + why = [] + if sid in xr: + why.append("X-ray source (%s)" % ", ".join(sorted(xr[sid]))) + if any(typ.strip().startswith(a) for a in vlass_ACTIVE) or typ.strip() in vlass_ACTIVE: + why.append("SIMBAD type %s" % typ) + if (num(x.get("ruwe")) or 0) > 1.4 or str(x.get("non_single_star")) not in ("0", "", "None"): + why.append("binary (RUWE %s, NSS %s)" % (x.get("ruwe"), x.get("non_single_star"))) + if bprp is None or not 0.5 <= bprp <= 1.5: + why.append("colour BP-RP %s outside F-early K" % (None if bprp is None else round(bprp, 2))) + # main sequence: M_G within 1 mag of 4.3 (BP-RP - 0.8) + 4.9 + if mg is not None and bprp is not None and abs(mg - (4.3 * (bprp - 0.8) + 4.9)) > 1.0: + why.append("off the main sequence (M_G %.1f)" % mg) + out.append(dict(gaia=sid, simbad=str(r.get("Simbad") or ""), type=typ, cat=str(r.get("Category") or ""), + dist=num(r.get("Dist")), f1=num(r.get("Flux1")), f2=num(r.get("Flux2")), bp_rp=bprp, mg=mg, + ruwe=num(x.get("ruwe")), act=num(x.get("activityindex_espcs")), why=why)) + json.dump(out, open(os.path.join(vlass_HERE, "vlass_quiet.json"), "w"), indent=1) + quiet = [o for o in out if not o["why"]] + print("%d VLASS radio stars; %d inactive single main-sequence F to early K stars without X-rays" % (len(out), len(quiet))) + for o in quiet: + print(" Gaia DR3 %s %-22s %-8s %s: %.0f pc, BP-RP %.2f, M_G %.2f, RUWE %.2f, Ca IRT index %s, 3 GHz %s / %s mJy" + % (o["gaia"], o["simbad"][:22], o["type"][:8], o["cat"][:12], o["dist"] or 0, o["bp_rp"], o["mg"], + o["ruwe"] or 0, o["act"], o["f1"], o["f2"])) + + +def vlass_cli(): + quiet_warnings() + vlass_main() + + +# -------------------------------------------------------------------------------------------------------------- + +lowfreq_DOC = r"""LoTSS-DR2 and RACS-low sources on inactive F-K dwarfs within 100 pc, against 1 arcmin offset chance matches. + + python -I seti.py radio_sky lowfreq stars|match|judge + python -I seti.py radio_sky lowfreq record""" + +lowfreq_ROOT = os.environ.get("LOWFREQ_ROOT", core.data("lowfreq")) +lowfreq_HERE = core.RESULTS +lowfreq_SURVEYS = {"LoTSS-DR2": ("J/A+A/659/A1/catalog", 3.0), "RACS-low": ("J/other/PASA/38.58/galcut", 5.0)} +lowfreq_XRAY = (("J/A+A/682/A34/erass1-m", 15.0, "eRASS1"), ("IX/69/xmm4d13s", 10.0, "4XMM"), ("IX/70/csc21mas", 5.0, "CSC"), + ("J/A+A/588/A103/cat2rxs", 30.0, "2RXS")) +lowfreq_ACTIVE = ("BY*", "RS*", "Er*", "Fl*", "TT*", "Y*O", "Y*?", "EB*", "SB*", "**", "El*", "WD*", "CV*", "Ae*", "Em*", + "V*", "Ro*", "RG*", "AB*", "C*", "LP*", "Mi*", "BD*", "Pec*", "a2*", "Pu*", "X") + + +def lowfreq_stars(): + os.makedirs(lowfreq_ROOT, exist_ok=True) + raw = core.tap_async("gaia", "SELECT source_id, ra, dec, parallax, phot_g_mean_mag, bp_rp, ruwe FROM " + "gaiadr3.gaia_source WHERE parallax > 10 AND parallax_over_error > 10") + rows = raw if isinstance(raw, list) else [] + json.dump(rows, open(os.path.join(lowfreq_ROOT, "stars.json"), "w")) + print("%d stars within 100 pc" % len(rows)) + + +def lowfreq_match(): + st = json.load(open(os.path.join(lowfreq_ROOT, "stars.json"))) + pos = [dict(source_id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"])) for r in st] + shifted = [dict(p, dec=p["dec"] + 1 / 60.0) for p in pos if p["dec"] < 89] + out = {} + for name, (cat, rad) in lowfreq_SURVEYS.items(): + res = {} + for label, rows in (("stars", pos), ("shifted", shifted)): + hits = [] + for k in range(0, len(rows), 50000): + hits += core.xmatch(rows[k:k + 50000], cat, rad) + res[label] = hits + print("%s %s: %d matches" % (name, label, len(hits)), flush=True) + out[name] = res + json.dump(out, open(os.path.join(lowfreq_ROOT, "matches.json"), "w"), default=str) + + +def lowfreq_judge(): + st = {str(r["source_id"]): r for r in json.load(open(os.path.join(lowfreq_ROOT, "stars.json")))} + m = json.load(open(os.path.join(lowfreq_ROOT, "matches.json"))) + ids = sorted({str(h["source_id"]) for s in m.values() for h in s["stars"]}) + pos = [dict(source_id=i, ra=float(st[i]["ra"]), dec=float(st[i]["dec"])) for i in ids] + xray = set() + for cat, rad, name in lowfreq_XRAY: + try: + xray |= {str(h["source_id"]) for h in core.xmatch(pos, cat, rad)} + except Exception as e: + print("%s: %s" % (name, str(e)[:80]), flush=True) + types = {} + for k in range(0, len(ids), 300): + chunk = ids[k:k + 300] + q = ("SELECT i.id, o.otype FROM ident AS i JOIN otypes AS o ON o.oidref = i.oidref WHERE i.id IN (%s)" + % ", ".join("'Gaia DR3 %s'" % x for x in chunk)) + for r in core.simbad(q): + types.setdefault(r["id"].split()[-1], set()).add(r["otype"]) + def dwarf(r): + bp_rp, g, plx, ruwe = num(r["bp_rp"]), num(r["phot_g_mean_mag"]), num(r["parallax"]), num(r["ruwe"]) + if bp_rp is None or g is None or not plx: + return False + absg = g + 5 + 5 * math.log10(plx / 1000.0) + return 0.4 <= bp_rp <= 1.2 and 2.5 + 3 * bp_rp <= absg + 1.5 and absg <= 3.5 + 3.5 * bp_rp and (ruwe or 0) <= 1.4 + out = {} + for name, s in m.items(): + quiet = [] + for h in s["stars"]: + i = str(h["source_id"]) + r = st[i] + if dwarf(r) and i not in xray and not any(t in lowfreq_ACTIVE for t in types.get(i, ())): + quiet.append(dict(source_id=i, sep=num(h.get("angDist")), g=num(r["phot_g_mean_mag"]), + bp_rp=num(r["bp_rp"]), plx=num(r["parallax"]))) + # chance matches among stars passing the same cuts + chance = sum(1 for h in s["shifted"] if dwarf(st[str(h["source_id"])])) + dwarfs = sum(1 for h in s["stars"] if dwarf(st[str(h["source_id"])])) + out[name] = dict(matches=len(s["stars"]), shifted=len(s["shifted"]), dwarfs=dwarfs, chance_dwarfs=chance, + quiet=quiet) + print("%s: %d stars matched against %d at positions 1 arcmin away; F to early K dwarfs %d against %d by chance; " + "%d of them inactive and single" % (name, len(s["stars"]), len(s["shifted"]), dwarfs, chance, len(quiet))) + json.dump(out, open(os.path.join(lowfreq_HERE, "lowfreq_quiet.json"), "w"), indent=1, default=str) + + +def lowfreq_record(): + r = json.load(open(os.path.join(lowfreq_HERE, "lowfreq_quiet.json"))) + for name, (cat, rad) in lowfreq_SURVEYS.items(): + x = r[name] + run = "lowfreq_quiet_%s" % name.split("-")[0].lower() + core.record_search( + run, "Low-frequency radio emission from inactive stars", archive="%s (VizieR %s)" % (name, cat), + release=name, selection="Gaia DR3 stars with parallax above 10 mas at S/N 10, matched within %.0f arcsec" + % rad, + code="seti.py radio_sky lowfreq", params=dict(radius_arcsec=rad, shift_arcmin=1), + n_targets=x["matches"], + null_summary="%d stars matched against %d at shifted positions; F to early K dwarfs %d against %d by chance" + % (x["matches"], x["shifted"], x["dwarfs"], x["chance_dwarfs"]), + sensitivity="the survey's detection limit at the star's position", + result="%d inactive single F to early K dwarfs, as many as chance alignments give" + % len(x["quiet"]), + ledger="Low-frequency radio emission from inactive stars") + core.clear_targets(run) + core.record_targets(run, [dict(target="gaia_dr3:%s" % q["source_id"], stat=q["sep"], + unit="arcsec to the radio source", note="inactive F to early K dwarf") + for q in x["quiet"]]) + print("recorded") + + +def lowfreq_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("stars", "match", "judge", "record")) + a = p.parse_args() + if a.mode == "record": + lowfreq_record() + else: + {"stars": lowfreq_stars, "match": lowfreq_match, "judge": lowfreq_judge}[a.mode]() + + +def lowfreq_cli(): + quiet_warnings() + lowfreq_main() + + +# -------------------------------------------------------------------------------------------------------------- + +sgl_DOC = r"""Unassociated RACS and VLASS components on the solar-gravitational-lens tracks of stars within 6.7 pc, against control positions. + + python -I seti.py radio_sky sgl targets + python -I seti.py radio_sky sgl fetch + python -I seti.py radio_sky sgl vlass + python -I seti.py radio_sky sgl fit + python -I seti.py radio_sky sgl record""" + +sgl_HERE = core.RESULTS +sgl_ROOT = os.environ.get("SGL_ROOT", core.data("sgl")) +sgl_CATALOGUES = { + "racs_low": dict(table="AS110.racs_dr1_gaussians_galacticcut_v2021_08_v02", mhz=887.5, time="obs_start_time"), + "racs_mid": dict(table="AS110.racs_mid_components_v01", mhz=1367.5, time="scan_start_mjd"), + "racs_high": dict(table="AS110.racs_high_components_v01", mhz=1655.5, time=None), + "racs_low2": dict(table="AS110.racs_low2_v02", mhz=887.5, time=None), +} +sgl_RADIUS_DEG = 0.2 +sgl_CONTROLS = ((3.0, 0.0), (-3.0, 0.0), (0.0, 3.0), (0.0, -3.0)) +sgl_D_MIN = 550.0 +sgl_TOL_ARCSEC = 3.0 +sgl_ASSOC_ARCSEC = 5.0 + + +def sgl_unit(ra, dec): + return science.unit_vector(ra, dec) + + +def sgl_radec(v): + v = np.asarray(v, float) + return float(np.degrees(np.arctan2(v[1], v[0])) % 360.0), float(np.degrees(np.arcsin(v[2] / np.linalg.norm(v)))) + + +# ----------------------------------------------------------------------------------------------------------- targets + + +def sgl_targets(): + rows = core.simbad("SELECT main_id, ra, dec, pmra, pmdec, plx_value FROM basic WHERE plx_value > 150 " + "AND ra IS NOT NULL ORDER BY plx_value DESC") + systems = [] + for r in rows: + ra, dec = float(r["ra"]), float(r["dec"]) + for s in systems: + if sep_arcsec(ra, dec, s["ra"], s["dec"]) < 3600.0: + s["members"].append(r["main_id"]) + break + else: + systems.append(dict(name=r["main_id"], ra=ra, dec=dec, pmra=float(r["pmra"] or 0), pmdec=float(r["pmdec"] or 0), + plx=float(r["plx_value"]), members=[r["main_id"]])) + os.makedirs(sgl_ROOT, exist_ok=True) + json.dump(systems, open(os.path.join(sgl_ROOT, "targets.json"), "w"), indent=1) + print("%d SIMBAD objects within 6.7 pc in %d systems" % (len(rows), len(systems))) + + +def sgl_star_dir(s, mjd): + """Unit vector to the star at a date from J2000 position and proper motion.""" + yrs = (mjd - 51544.5) / 365.25 + return sgl_unit(s["ra"] + s["pmra"] / 3.6e6 * yrs / math.cos(math.radians(s["dec"])), s["dec"] + s["pmdec"] / 3.6e6 * yrs) + + +# ------------------------------------------------------------------------------------------------------------- fetch + + +def sgl_field_dates(ra, dec): + """{(field, MHz): [MJD]} of RACS images covering a position.""" + q = ("SELECT t_min, em_min, filename FROM ivoa.obscore WHERE obs_collection = 'The Rapid ASKAP Continuum Survey' " + "AND dataproduct_type = 'image' AND CONTAINS(POINT('ICRS', %f, %f), s_region) = 1" % (ra, dec)) + out = {} + for r in core.tap("casda", q): + m = re.search(r"RACS_\d{4}[+-]\d{2}", r["filename"]) + if not m or not r["t_min"] or not r["em_min"]: + continue + mhz = 299.792458 / float(r["em_min"]) + out.setdefault((m.group(0), round(mhz)), set()).add(round(float(r["t_min"]), 4)) + return {k: sorted(v) for k, v in out.items()} + + +def sgl_cone(cat, ra, dec): + c = sgl_CATALOGUES[cat] + cols = "ra, dec, e_ra, e_dec, peak_flux, maj_axis, s_code" + cols += ", " + c["time"] if c["time"] else ", field_id" + q = ("SELECT %s FROM %s WHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %f, %f, %f))" + % (cols, c["table"], ra, dec, sgl_RADIUS_DEG)) + return core.tap("casda", q) + + +def sgl_mjd_of(cat, row, dates): + c = sgl_CATALOGUES[cat] + if c["time"] == "scan_start_mjd": + return float(row["scan_start_mjd"]) + if c["time"] == "obs_start_time": + v = row["obs_start_time"] + try: + return float(v) + except ValueError: + from astropy.time import Time + return float(Time(v.replace(" ", "T")).mjd) + key = (row["field_id"], round(c["mhz"])) + cands = dates.get(key, []) + if not cands: + return None + # RACS-low and low2 share 887.5 MHz; low2 is the 2022 field + if cat == "racs_low2": + cands = [t for t in cands if t > 59500] or cands + return cands[0] if len(cands) == 1 else float(np.median(cands)) + + +def sgl_one_cone(job): + """Dated components of every catalogue within the radius of one position.""" + name, k, ra, dec, dra, ddec = job + try: + dates = sgl_field_dates(ra, dec) + except Exception: + dates = {} + comps = [] + for cat in sgl_CATALOGUES: + try: + rows = sgl_cone(cat, ra, dec) + except Exception as e: + print("%s %s: %s" % (name, cat, str(e)[:80]), flush=True) + continue + for r in rows: + t = sgl_mjd_of(cat, r, dates) + if t is None: + continue + comps.append(dict(cat=cat, ra=float(r["ra"]), dec=float(r["dec"]), e_ra=float(r["e_ra"] or 0), + e_dec=float(r["e_dec"] or 0), flux=float(r["peak_flux"] or 0), mjd=t, + code=r.get("s_code"))) + return dict(system=name, control=k, centre=[ra, dec], dra=dra, ddec=ddec, comps=comps) + + +def sgl_fetch(threads=4): + from concurrent.futures import ThreadPoolExecutor + systems = json.load(open(os.path.join(sgl_ROOT, "targets.json"))) + jobs = [] + for s in systems: + anti = sgl_radec(-sgl_star_dir(s, 59400.0)) + for k, (dra, ddec) in enumerate([(0.0, 0.0)] + list(sgl_CONTROLS)): + ra = (anti[0] + dra / max(math.cos(math.radians(anti[1])), 0.05)) % 360.0 + dec = float(np.clip(anti[1] + ddec, -89.9, 89.9)) + jobs.append((s["name"], k, ra, dec, dra, ddec)) + out = [] + with ThreadPoolExecutor(threads) as ex: + for r in ex.map(sgl_one_cone, jobs): + out.append(r) + if r["control"] == 0: + print("%s: antipode %.3f %+.3f, %d components" % (r["system"], r["centre"][0], r["centre"][1], + len(r["comps"])), flush=True) + json.dump(out, open(os.path.join(sgl_ROOT, "cones.json"), "w")) + + +# --------------------------------------------------------------------------------------------------------------- fit + + +def sgl_earth_helio(mjd): + """Earth's heliocentric position (AU) at a date.""" + from astropy.coordinates import get_body_barycentric + from astropy.time import Time + t = Time(mjd, format="mjd", scale="utc") + e = get_body_barycentric("earth", t).xyz.to("au").value + s = get_body_barycentric("sun", t).xyz.to("au").value + return e - s + + +def sgl_predicted(axis, mjd, D): + """Position seen from Earth of a point D AU along axis from the Sun.""" + return sgl_radec(D * axis - sgl_earth_helio(mjd)) + + +def sgl_best_distance(axis, c): + """(D, separation arcsec) of the track point closest to component c.""" + re_ = sgl_earth_helio(c["mjd"]) + grid = np.geomspace(sgl_D_MIN, 1e6, 400) + seps = [] + for D in grid: + ra, dec = sgl_radec(D * axis - re_) + seps.append(sep_arcsec(ra, dec, c["ra"], c["dec"])) + j = int(np.argmin(seps)) + lo, hi = grid[max(j - 1, 0)], grid[min(j + 1, len(grid) - 1)] + for _ in range(40): + m1, m2 = lo + (hi - lo) / 3, hi - (hi - lo) / 3 + s1 = sep_arcsec(*sgl_radec(m1 * axis - re_), c["ra"], c["dec"]) + s2 = sep_arcsec(*sgl_radec(m2 * axis - re_), c["ra"], c["dec"]) + if s1 < s2: + hi = m2 + else: + lo = m1 + D = 0.5 * (lo + hi) + return D, sep_arcsec(*sgl_radec(D * axis - re_), c["ra"], c["dec"]) + + +def sgl_fit(): + systems = {s["name"]: s for s in json.load(open(os.path.join(sgl_ROOT, "targets.json")))} + cones = json.load(open(os.path.join(sgl_ROOT, "cones.json"))) + report = [] + for cn in cones: + s = systems[cn["system"]] + comps = cn["comps"] + on = [] + for i, c in enumerate(comps): + # a background source recurs in another epoch + if any(o["cat"] != c["cat"] and sep_arcsec(o["ra"], o["dec"], c["ra"], c["dec"]) < sgl_ASSOC_ARCSEC + for o in comps): + continue + star = sgl_star_dir(s, c["mjd"]) + axis = -star + if cn["control"]: + ra0, dec0 = sgl_radec(axis) + axis = sgl_unit((ra0 + cn["dra"] / max(math.cos(math.radians(dec0)), 0.05)) % 360.0, + float(np.clip(dec0 + cn["ddec"], -89.9, 89.9))) + D, sep = sgl_best_distance(axis, c) + tol = max(sgl_TOL_ARCSEC, 3.0 * math.hypot(c["e_ra"], c["e_dec"])) + if sep < tol: + on.append(dict(c, D=D, sep=sep, tol=tol, axis=axis.tolist())) + chains = [] + for i in range(len(on)): + for j in range(i + 1, len(on)): + a, b = on[i], on[j] + if a["cat"] == b["cat"]: + continue + # one distance must place both + for D in (a["D"], b["D"]): + sa = sep_arcsec(*sgl_predicted(np.array(a["axis"]), a["mjd"], D), a["ra"], a["dec"]) + sb = sep_arcsec(*sgl_predicted(np.array(b["axis"]), b["mjd"], D), b["ra"], b["dec"]) + if sa < a["tol"] and sb < b["tol"]: + chains.append(dict(D=D, members=[a, b])) + break + report.append(dict(system=cn["system"], control=cn["control"], n_comps=len(comps), n_on=len(on), + on=on, chains=chains)) + json.dump(report, open(os.path.join(sgl_HERE, "sgl_parallax.json"), "w"), indent=1, default=float) + real = [r for r in report if r["control"] == 0] + ctrl = [r for r in report if r["control"] != 0] + print("%d systems: %d components within %.1f deg of the antipodes, %d on a track and unassociated, %d chains" + % (len(real), sum(r["n_comps"] for r in real), sgl_RADIUS_DEG, sum(r["n_on"] for r in real), + sum(len(r["chains"]) for r in real))) + print("%d control positions: %d components, %d on their tracks and unassociated, %d chains" + % (len(ctrl), sum(r["n_comps"] for r in ctrl), sum(r["n_on"] for r in ctrl), sum(len(r["chains"]) for r in ctrl))) + for r in real: + for ch in r["chains"]: + print(" CHAIN %s: D %.0f AU, %s" % (r["system"], ch["D"], "; ".join( + "%s MJD %.2f %.5f %+.5f %.2f mJy sep %.1f\"" % (m["cat"], m["mjd"], m["ra"], m["dec"], m["flux"], m["sep"]) + for m in ch["members"]))) + + +def sgl_record(): + report = json.load(open(os.path.join(sgl_HERE, "sgl_parallax.json"))) + real = [r for r in report if r["control"] == 0] + ctrl = [r for r in report if r["control"] != 0] + rows = [dict(target="simbad:" + r["system"], stat=len(r["chains"]), note="%d components, %d on track" % (r["n_comps"], r["n_on"])) + for r in real] + core.record_search("sgl_parallax_racs_vlass", "Receivers on the solar gravitational lens", + archive="CASDA RACS component catalogues (low, mid, high, low2); CIRADA VLASS Quick Look " + "components, epochs 1 and 2", release="AS110; VLASS1QLv3.1, VLASS2QLv2", + selection="SIMBAD systems within 6.7 pc; antipodes and four control positions 3 deg away", + code=os.path.abspath(__file__), entry="sgl", params=dict(radius_deg=sgl_RADIUS_DEG, d_min_au=sgl_D_MIN, + tol_arcsec=sgl_TOL_ARCSEC, assoc_arcsec=sgl_ASSOC_ARCSEC), n_targets=len(rows), + null_summary=dict(control_chains=sum(len(r["chains"]) for r in ctrl), controls=len(ctrl)), + result="%d chains at the antipodes against %d at %d control positions" + % (sum(len(r["chains"]) for r in real), sum(len(r["chains"]) for r in ctrl), len(ctrl)), + ledger="Receivers on the solar gravitational lens") + core.record_targets("sgl_parallax_racs_vlass", rows) + print("recorded %d systems" % len(rows)) + + +sgl_VLASS = {"vlass1": ("CIRADA_VLASS1QLv3.1_table1_components.csv.gz", "CIRADA_VLASS1QLv3_table3_subtile.csv.gz"), + "vlass2": ("CIRADA_VLASS2QLv2_table1_components.csv.gz", "CIRADA_VLASS2QLv1_table3_subtile.csv.gz")} + + +def sgl_vlass(): + """Add dated, unflagged VLASS components near every antipode and control to cones.json.""" + import pandas as pd + from astropy.time import Time + from scipy.spatial import cKDTree + cones = json.load(open(os.path.join(sgl_ROOT, "cones.json"))) + cen = np.array([sgl_unit(c["centre"][0], c["centre"][1]) for c in cones]) + tree = cKDTree(cen) + chord = 2 * math.sin(math.radians(sgl_RADIUS_DEG) / 2) + vdir = os.path.join(sgl_ROOT, "vlass") + for c in cones: + c["comps"] = [x for x in c["comps"] if not x["cat"].startswith("vlass")] + for cat, (comp_file, sub_file) in sgl_VLASS.items(): + sub = pd.read_csv(os.path.join(vdir, sub_file), low_memory=False) + dcol = next(k for k in sub.columns if k.upper().replace("-", "_") in ("DATE_OBS", "DATEOBS")) + # subtile names repeat between half-epochs; tile is part of the key + when = dict(zip(zip(sub["Tile"].astype(str), sub["Subtile"].astype(str)), + Time(list(sub[dcol].astype(str).str.replace(" ", "T")), format="isot", scale="utc").mjd)) + n = 0 + for ch in pd.read_csv(os.path.join(vdir, comp_file), chunksize=500000, low_memory=False, + usecols=lambda k: k in ("RA", "DEC", "E_RA", "E_DEC", "Peak_flux", "S_Code", "Subtile", "Tile", + "Duplicate_flag", "Quality_flag", "Component_name")): + ch = ch[(ch["Duplicate_flag"].fillna(0) < 2) & (ch["Quality_flag"].fillna(0) == 0)] + ra, dec = np.radians(ch["RA"].to_numpy(float)), np.radians(ch["DEC"].to_numpy(float)) + v = np.stack([np.cos(dec) * np.cos(ra), np.cos(dec) * np.sin(ra), np.sin(dec)], 1) + hits = tree.query_ball_point(v, chord) + for i, js in enumerate(hits): + if not js: + continue + r = ch.iloc[i] + t = when.get((str(r["Tile"]), str(r["Subtile"]))) + if t is None: + continue + for j in js: + cones[j]["comps"].append(dict(cat=cat, ra=float(r["RA"]), dec=float(r["DEC"]), + e_ra=float(r["E_RA"]) * 3600, e_dec=float(r["E_DEC"]) * 3600, + flux=float(r["Peak_flux"]), mjd=float(t), code=str(r["S_Code"]))) + n += 1 + print("%s: %d components within %.1f deg of the antipodes and controls" % (cat, n, sgl_RADIUS_DEG), flush=True) + json.dump(cones, open(os.path.join(sgl_ROOT, "cones.json"), "w")) + + +def sgl_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("targets", "fetch", "vlass", "fit", "record")) + a = p.parse_args() + {"targets": sgl_targets, "fetch": sgl_fetch, "vlass": sgl_vlass, "fit": sgl_fit, "record": sgl_record}[a.mode]() + + +def sgl_cli(): + quiet_warnings() + sgl_main() + + +# -------------------------------------------------------------------------------------------------------------- + +pulsars_DOC = r"""AllWISE warm counterparts of ATNF pulsars against offset chance rates, and nearby Gaia stars at bright-pulsar antipodes with BL coverage. + + python -I seti.py radio_sky pulsars ir + python -I seti.py radio_sky pulsars antipodes""" + +pulsars_ROOT = os.environ.get("PULSAR_ROOT", core.data("pulsars")) +pulsars_HERE = core.RESULTS +pulsars_WISE_EPOCH_MJD = 55377.0 # 2010.5 +pulsars_SHIFTS = [(60 * math.cos(a), 60 * math.sin(a)) for a in np.arange(8) * math.pi / 4] + + +def pulsars_sexa(v, hours): + s = v.strip() + sign = -1.0 if s.startswith("-") else 1.0 + parts = [float(x) for x in s.lstrip("+-").split(":")] + while len(parts) < 3: + parts.append(0.0) + val = parts[0] + parts[1] / 60 + parts[2] / 3600 + return sign * val * (15.0 if hours else 1.0) + + +def pulsars_last_unit(v): + """Size of the last quoted digit of a sexagesimal value.""" + s = v.strip().split(":")[-1] + return 10.0 ** -(len(s.split(".")[1]) if "." in s else 0) + + +def pulsars_pulsars(): + out = [] + for x in json.load(open(os.path.join(pulsars_ROOT, "psrcat.json"))): + if "RAJ" not in x or "DECJ" not in x: + continue + try: + ra, dec = pulsars_sexa(x["RAJ"][0], True), pulsars_sexa(x["DECJ"][0], False) + era = float(x["RAJ"][1]) * pulsars_last_unit(x["RAJ"][0]) * 15.0 * math.cos(math.radians(dec)) if len(x["RAJ"]) > 1 else 99.0 + edec = float(x["DECJ"][1]) * pulsars_last_unit(x["DECJ"][0]) if len(x["DECJ"]) > 1 else 99.0 + except (ValueError, IndexError): + continue + def field(k): + return float(x[k][0]) if k in x and x[k][0] not in ("*",) else None + out.append(dict(name=x["PSRJ"][0], ra=ra, dec=dec, err=math.hypot(era, edec), pmra=field("PMRA") or 0.0, + pmdec=field("PMDEC") or 0.0, posepoch=field("POSEPOCH"), s1400=field("S1400"), + dist=field("DIST") or field("DIST_DM"), p0=field("P0"), assoc=" ".join(x.get("ASSOC", [])), + type=" ".join(x.get("TYPE", [])), bincomp=" ".join(x.get("BINCOMP", [])))) + return out + + +def pulsars_at_epoch(p, mjd): + if p["posepoch"] is None: + return p["ra"], p["dec"] + yrs = (mjd - p["posepoch"]) / 365.25 + return (p["ra"] + p["pmra"] / 3.6e6 * yrs / math.cos(math.radians(p["dec"])), p["dec"] + p["pmdec"] / 3.6e6 * yrs) + + +def pulsars_warm(x): + """Warm ring signature: A or B quality at 12 or 22 um without artifacts.""" + q, c = str(x.get("qph") or "UUUU"), str(x.get("ccf") or "0000") + return any(q[i] in "AB" and c[i] == "0" for i in (2, 3)) + + +def pulsars_no_gaia(xs, radius=2.0): + """Matches without a Gaia source within radius.""" + if not xs: + return [] + probe = [dict(source_id=str(i), ra=float(x["RAJ2000"]), dec=float(x["DEJ2000"])) for i, x in enumerate(xs)] + hit = {r["source_id"] for r in core.xmatch(probe, "I/355/gaiadr3", radius)} + return [x for i, x in enumerate(xs) if str(i) not in hit] + + +def pulsars_ring_like(matches, sep=1.0): + best = {} + for x in matches: + if x["source_id"] not in best or float(x["angDist"]) < float(best[x["source_id"]]["angDist"]): + best[x["source_id"]] = x + close = [x for x in best.values() if float(x["angDist"]) < sep and pulsars_warm(x)] + return best, pulsars_no_gaia(close) + + +def pulsars_ir(): + ps = [p for p in pulsars_pulsars() if p["err"] < 1.0] + rows = [] + for p in ps: + ra, dec = pulsars_at_epoch(p, pulsars_WISE_EPOCH_MJD) + rows.append(dict(source_id=p["name"], ra=ra, dec=dec)) + m = core.xmatch(rows, "II/328/allwise", 3.0) + null, null_ring = 0, 0 + for dx, dy in pulsars_SHIFTS: + sh = [dict(source_id=r["source_id"], ra=r["ra"] + dx / 3600.0 / max(math.cos(math.radians(r["dec"])), 0.05), + dec=r["dec"] + dy / 3600.0) for r in rows] + nm = core.xmatch(sh, "II/328/allwise", 3.0) + nb, nr = pulsars_ring_like(nm) + null += len(nb) + null_ring += len(nr) + _, rings = pulsars_ring_like(m) + print("ring-like (within 1 arcsec, warm at 12 or 22 um without artifact flags, no Gaia source within 2 arcsec): %d " + "pulsars against %.2f per shifted copy" % (len(rings), null_ring / len(pulsars_SHIFTS))) + for x in rings: + print(" RING-LIKE %s %.2f\" W1 %s W2 %s W3 %s W4 %s qph %s ccf %s" % (x["source_id"], float(x["angDist"]), x.get("W1mag"), + x.get("W2mag"), x.get("W3mag"), x.get("W4mag"), + x.get("qph"), x.get("ccf"))) + by = {p["name"]: p for p in ps} + hits = {} + for x in m: + if x["source_id"] not in hits or float(x["angDist"]) < float(hits[x["source_id"]]["angDist"]): + hits[x["source_id"]] = x + print("%d pulsars with positions good to 1 arcsec; %d with an AllWISE source within 3 arcsec, %.1f expected by " + "chance (8 shifted copies)" % (len(ps), len(hits), null / len(pulsars_SHIFTS))) + out = [] + for name, x in sorted(hits.items(), key=lambda kv: float(kv[1]["angDist"])): + p = by[name] + w = {k: x.get(k) for k in ("W1mag", "W2mag", "W3mag", "W4mag", "e_W3mag", "e_W4mag", "ccf", "ex", "qph")} + known = ", ".join(t for t in (p["assoc"], p["type"], ("companion " + p["bincomp"]) if p["bincomp"] else "") if t) + out.append(dict(pulsar=name, sep=float(x["angDist"]), wise=w, assoc=p["assoc"], type=p["type"], bincomp=p["bincomp"], + dist_kpc=p["dist"], p0=p["p0"])) + print(" %-12s %.2f\" W1 %s W2 %s W3 %s W4 %s qph %s ccf %s; %s" % (name, float(x["angDist"]), w["W1mag"], w["W2mag"], + w["W3mag"], w["W4mag"], w["qph"], w["ccf"], + known or "no association, companion or class")) + json.dump(dict(n=len(ps), hits=out, chance=null / len(pulsars_SHIFTS)), open(os.path.join(pulsars_HERE, "pulsar_ir.json"), "w"), indent=1) + + +def pulsars_antipodes(): + ps = [p for p in pulsars_pulsars() if p["s1400"] and "GC:" not in p["assoc"] and "EXGAL" not in p["assoc"]] + ps = sorted(ps, key=lambda p: -p["s1400"])[:100] + bl = set(json.load(open(os.path.join(pulsars_HERE, "bl_targets.json")))) + bl_norm = {b.replace(" ", "").upper() for b in bl} + out = [] + for p in ps: + ra, dec = (p["ra"] + 180.0) % 360.0, -p["dec"] + q = ("SELECT g.source_id, g.ra, g.dec, g.parallax, g.phot_g_mean_mag, g.bp_rp, h.original_ext_source_id AS hip " + "FROM gaiadr3.gaia_source AS g LEFT OUTER JOIN gaiadr3.hipparcos2_best_neighbour AS h " + "ON g.source_id = h.source_id WHERE 1 = CONTAINS(POINT('ICRS', g.ra, g.dec), CIRCLE('ICRS', %f, %f, 1.0)) " + "AND g.parallax > 5 AND g.parallax_over_error > 5" % (ra, dec)) + try: + stars = core.gaia(q) + except Exception as e: + print(p["name"], "Gaia query failed", str(e)[:60]) + continue + for s in stars: + hip = ("HIP" + s["hip"]) if s.get("hip") else None + s["bl"] = bool(hip and hip.upper() in bl_norm) + s["hip"] = hip + out.append(dict(pulsar=p["name"], s1400=p["s1400"], p0=p["p0"], antipode=[ra, dec], stars=stars)) + if stars: + print("%-12s S1400 %6.1f mJy P %.4f s: %d stars within 1 deg of the antipode and 200 pc%s" % ( + p["name"], p["s1400"], p["p0"] or 0, len(stars), "; " + ", ".join( + "%s%s" % (s["hip"], " (BL)" if s["bl"] else "") for s in stars if s["hip"]) if any(s["hip"] for s in stars) else "")) + json.dump(out, open(os.path.join(pulsars_HERE, "pulsar_antipodes.json"), "w"), indent=1) + n = sum(len(o["stars"]) for o in out) + print("%d antipodes, %d stars within 1 deg and 200 pc, %d of them Hipparcos stars, %d observed by Breakthrough Listen" + % (len(out), n, sum(1 for o in out for s in o["stars"] if s["hip"]), sum(1 for o in out for s in o["stars"] if s["bl"]))) + + +def pulsars_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("ir", "antipodes")) + a = p.parse_args() + {"ir": pulsars_ir, "antipodes": pulsars_antipodes}[a.mode]() + + +def pulsars_cli(): + quiet_warnings() + pulsars_main() + + +# -------------------------------------------------------------------------------------------------------------- + +wind_DOC = r"""Persistent narrowband lines below the ionospheric cutoff in Wind/WAVES and STEREO spectra, classified by diurnal modulation, broadcast correlation and spacecraft coincidence. + + python -I seti.py radio_sky wind fetch YEAR [--threads 4] + python -I seti.py radio_sky wind analyse YEAR + python -I seti.py radio_sky wind daily YEAR [--freq KHZ ...] + python -I seti.py radio_sky wind stereo YEAR [--freq KHZ ...] [--day0 1] [--days 10] + python -I seti.py radio_sky wind stereo_year YEAR [--craft ahead|behind] [--threads 2] + python -I seti.py radio_sky wind classify YEAR (again from the year's saved line occupancies) + python -I seti.py radio_sky wind rad1 YEAR (RAD1 among its measured channels alone) + python -I seti.py radio_sky wind rad1_record YEAR [YEAR ...] + python -I seti.py radio_sky wind stereo_classify YEAR [--craft ahead|behind] + python -I seti.py radio_sky wind stereo_record YEAR [YEAR ...] (the STEREO years classified, into the coverage store) + python -I seti.py radio_sky wind record YEAR [YEAR ...] (the years analysed, into the coverage store)""" + +wind_ROOT = os.environ.get("WIND_ROOT", core.data("wind")) +wind_UA = core.UA +# known persistent-line sources (kHz): shortwave bands, AKR, solar-wind plasma line +wind_SW_BANDS = ((2300, 2495), (3200, 3400), (3900, 4000), (4750, 5060), (5900, 6200), (7200, 7450), (9400, 9900), + (11600, 12100), (13570, 13870)) +# ITU maritime and aeronautical HF allocations (kHz) +wind_MARITIME = ((4063, 4438), (6200, 6525), (8195, 8815), (12230, 13200)) +wind_AERONAUTICAL = ((2850, 3155), (3400, 3500), (4650, 4750), (5450, 5730), (6525, 6765), (8815, 9040), (10005, 10100), + (11175, 11400), (13200, 13360)) +# amateur allocations below 13.8 MHz +wind_AMATEUR = ((1800, 2000), (3500, 4000), (5351, 5367), (7000, 7300), (10100, 10150)) +# broadcasters work up to 200 kHz outside the bands +wind_OUT_OF_BAND = 200 +# UT-hour modulation above the mean marks terrestrial sources +wind_DIURNAL = 1.0 + + +# lines made on Wind: 8025 and 1175 kHz +wind_WIND_LOCAL = (8025.0, 1175.0) +# spacecraft anomaly excluded, 2014 Oct 26 to 2015 Jan 30 +wind_BAD_PERIODS = ((date(2014, 10, 26), date(2015, 1, 30)),) + + +def wind_bad_day(name): + """True for a WI_H1_WAV file in a listed anomaly.""" + try: + s = name.split("_")[3] + d = date(int(s[:4]), int(s[4:6]), int(s[6:8])) + except (IndexError, ValueError): + return False + return any(a <= d <= b for a, b in wind_BAD_PERIODS) + + +def wind_known(f_khz, modulation=None): + if any(abs(f_khz - x) < 1.0 for x in wind_WIND_LOCAL): + return "Wind's own line" + if any(lo - 25 <= f_khz <= hi + 25 for lo, hi in wind_SW_BANDS): + return "shortwave broadcast band" + if 100 <= f_khz <= 700: + return "auroral kilometric radiation range" + if f_khz < 100: + return "solar-wind plasma line range" + if any(lo - 25 <= f_khz <= hi + 25 for lo, hi in wind_MARITIME): + return "maritime mobile band" + if any(lo - 25 <= f_khz <= hi + 25 for lo, hi in wind_AERONAUTICAL): + return "aeronautical mobile band" + if any(lo <= f_khz <= hi for lo, hi in wind_AMATEUR): + return "amateur band" + if any(lo - wind_OUT_OF_BAND <= f_khz <= hi + wind_OUT_OF_BAND for lo, hi in wind_SW_BANDS): + return "out-of-band broadcasting" + if modulation is not None and modulation > wind_DIURNAL: + return "terrestrial (24 h modulation)" + return None + + +def wind_fetch_day(day): + name = "wi_h1_wav_%s_v01.cdf" % day.strftime("%Y%m%d") + path = os.path.join(wind_ROOT, str(day.year), name) + if os.path.exists(path): + return 1 + url = "https://cdaweb.gsfc.nasa.gov/pub/data/wind/waves/wav_h1/%d/%s" % (day.year, name) + for attempt in range(6): + try: + b = urllib.request.urlopen(urllib.request.Request(url, headers=wind_UA), timeout=180).read() + os.makedirs(os.path.dirname(path), exist_ok=True) + open(path + ".tmp", "wb").write(b) + os.replace(path + ".tmp", path) + return 1 + except urllib.error.HTTPError as e: + if e.code == 404: + return 0 + except Exception: + pass + time.sleep(10 * 2 ** attempt) + return 0 + + +def wind_fetch(year, threads): + """The year's daily files in two passes; missing days printed.""" + days = [date(year, 1, 1) + timedelta(k) for k in range(366) if (date(year, 1, 1) + timedelta(k)).year == year] + for _ in range(2): + with ThreadPoolExecutor(threads) as ex: + got = list(ex.map(wind_fetch_day, days)) + days = [d for d, g in zip(days, got) if not g] + n = len([p for p in os.listdir(os.path.join(wind_ROOT, str(year))) if p.endswith(".cdf")]) \ + if os.path.isdir(os.path.join(wind_ROOT, str(year))) else 0 + print("%d: %d daily files; missing %s" % (year, n, ", ".join(d.isoformat() for d in days) or "none")) + + +def wind_analyse(year): + import cdflib + from scipy.ndimage import median_filter + d = os.path.join(wind_ROOT, str(year)) + occ = {} + hourly = {} + days_with = {} + interp = {} + nmin = 0 + freqs = {} + skipped = 0 + for p in sorted(os.listdir(d)): + if not p.endswith(".cdf"): + continue + if wind_bad_day(p): + skipped += 1 + continue + try: + c = cdflib.CDF(os.path.join(d, p)) + ep = cdflib.cdfepoch.to_datetime(c.varget("Epoch")) + except Exception: + continue + hours = np.array([int(str(x)[11:13]) for x in ep]) + for band in ("RAD1", "RAD2"): + v = np.asarray(c.varget("E_VOLTAGE_" + band), float) + f = np.asarray(c.varget("Frequency_" + band), float) + freqs[band] = f + v = np.where(v > 0, v, np.nan) + # unmeasured channels carry their neighbours' mean (list mode) + mid = 0.5 * (v[:, :-2] + v[:, 2:]) + ip = np.zeros(v.shape) + ip[:, 1:-1] = np.abs(v[:, 1:-1] - mid) < 1e-3 * np.abs(v[:, 1:-1]) + interp.setdefault(band, np.zeros(len(f))) + interp[band] += np.nansum(ip, axis=0) + lv = np.log(v) + base = median_filter(np.nan_to_num(lv, nan=np.nanmedian(lv)), size=(1, 9), mode="nearest") + r = lv - base + mad = 1.4826 * np.nanmedian(np.abs(r - np.nanmedian(r, axis=1, keepdims=True)), axis=1, keepdims=True) + hit = r > 5 * np.maximum(mad, 1e-3) + occ.setdefault(band, np.zeros(len(f))) + occ[band] += np.nansum(hit, axis=0) + hourly.setdefault(band, np.zeros((24, len(f)))) + for h in range(24): + hourly[band][h] += np.nansum(hit[hours == h], axis=0) + days_with.setdefault(band, np.zeros(len(f))) + days_with[band] += (np.nansum(hit, axis=0) > 60) + nmin += len(ep) + print("%d: %d minutes of spectra, %.1f days (%d days in spacecraft anomalies left out)" + % (year, nmin, nmin / 1440.0, skipped)) + for band in ("RAD1", "RAD2"): + np.savez(os.path.join(wind_ROOT, "lines_%s_%d.npz" % (band, year)), freq=freqs[band], occupancy=occ[band] / nmin, + hourly=hourly[band], days=days_with[band], interp=interp[band] / nmin, minutes=nmin, skipped=skipped) + wind_classify(year) + + +def wind_classify(year): + """Classify an analysed year's persistent lines against known sources and day-to-day tests.""" + summary, nmin, skipped = {}, None, None + for band in ("RAD1", "RAD2"): + z = np.load(os.path.join(wind_ROOT, "lines_%s_%d.npz" % (band, year))) + f, o, hp_all, days = z["freq"], z["occupancy"], z["hourly"], z["days"] + if "interp" not in z.files: + # RAD1 lines need the list-mode fill fractions + raise SystemExit("%s %d: the saved occupancies lack the list-mode fractions; analyse the year from its " + "spectra" % (band, year)) + ifrac = z["interp"] + if "minutes" in z.files: + nmin, skipped = int(z["minutes"]), int(z["skipped"]) + days_with = {band: days} + top = np.argsort(-o)[:15] + print("%s: channels with the highest line occupancy" % band) + for j in top: + hp = hp_all[:, j] + print(" %8.1f kHz: occupancy %.3f, days with an hour or more %d, 24 h modulation (max-min)/mean %.2f, " + "peak UT hour %d" % (f[j], o[j], int(days[j]), (hp.max() - hp.min()) / max(hp.mean(), 1e-9), + int(np.argmax(hp)))) + mod = (hp_all.max(axis=0) - hp_all.min(axis=0)) / np.maximum(hp_all.mean(axis=0), 1e-9) + pers = [j for j in np.argsort(-o) if o[j] > 0.01 and days[j] >= 30] + + def why_of(j): + # measured channels beside interpolated ones stand out spuriously + if j > 0 and j < len(f) - 1 and (min(ifrac[j - 1], ifrac[j + 1]) > 0.5 or ifrac[j] > 0.5): + return "list-mode channel (neighbours interpolated %.0f and %.0f per cent of minutes)" % ( + 100 * ifrac[j - 1], 100 * ifrac[j + 1]) + return wind_known(f[j], mod[j]) + for j in pers: + why = why_of(j) + if why: + print(" %8.1f kHz: occupancy %.3f, %d days, 24 h modulation %.2f: %s" + % (f[j], o[j], int(days_with[band][j]), mod[j], why)) + explained = {float(f[j]): why_of(j) for j in pers if why_of(j)} + rest = [j for j in pers if not why_of(j)] + if band == "RAD2" and rest: + # terrestrial leakage tracks the broadcast lines day to day; receiver lines anticorrelate + path = os.path.join(wind_ROOT, "daily_%d.json" % year) + saved = json.load(open(path)) if os.path.exists(path) else {} + dl = {float(k): v for k, v in saved.items()} + need = [float(f[j]) for j in rest if float(f[j]) not in dl] + if need: + dl.update(wind_daily(year, need, wind_REFS)) + json.dump({"%.1f" % k: v for k, v in dl.items()}, open(path, "w")) + for j in rest: + x = dl[float(f[j])] + if x["p"] < 1e-3 and abs(x["rho_ref"]) > 0.3: + why = ("terrestrial leakage" if x["rho_ref"] > 0 else "the receiver's own line") + \ + " (day-to-day Spearman %.2f with the broadcast lines)" % x["rho_ref"] + explained[float(f[j])] = why + print(" %8.1f kHz: occupancy %.3f, %d days: %s" % (f[j], o[j], int(days_with[band][j]), why)) + rest = [j for j in rest if float(f[j]) not in explained] + # a channel diurnal in another year is terrestrial + diurnal = wind_diurnal_years(band, year, f) + for j in rest: + if diurnal.get(j): + why = "terrestrial (24 h modulation in %s)" % ", ".join(str(y) for y in diurnal[j][:4]) + explained[float(f[j])] = why + print(" %8.1f kHz: occupancy %.3f, %d days, 24 h modulation %.2f: %s" + % (f[j], o[j], int(days_with[band][j]), mod[j], why)) + rest = [j for j in rest if float(f[j]) not in explained] + print("%s: persistent lines (occupancy above 1 per cent on 30 days or more) outside the known sources: %d" + % (band, len(rest))) + for j in rest[:15]: + print(" %8.1f kHz: occupancy %.3f, %d days, 24 h modulation %.2f" + % (f[j], o[j], int(days_with[band][j]), mod[j])) + summary[band] = dict(persistent=len(pers), explained=explained, + left=[dict(khz=float(f[j]), occupancy=float(o[j]), days=int(days_with[band][j]), + modulation=float(mod[j])) for j in rest]) + if nmin is None: + nmin = 1440 * (date(year + 1, 1, 1) - date(year, 1, 1)).days + json.dump(dict(year=year, minutes=nmin, skipped_days=skipped, **summary), + open(core.results("wind_%d.json" % year), "w"), indent=1) + + +def wind_diurnal_years(band, year, f): + """{channel: [years]} of channels diurnal at 1 per cent occupancy on 30 days in another year.""" + out = {} + for p in sorted(os.listdir(wind_ROOT)): + m = re.match(r"lines_%s_(\d{4})\.npz$" % band, p) + if not m or int(m.group(1)) == year: + continue + z = np.load(os.path.join(wind_ROOT, p)) + if len(z["freq"]) != len(f): + continue + h = z["hourly"] + mod = (h.max(axis=0) - h.min(axis=0)) / np.maximum(h.mean(axis=0), 1e-9) + for j in np.nonzero((z["occupancy"] > 0.01) & (z["days"] >= 30) & (mod > wind_DIURNAL))[0]: + out.setdefault(int(j), []).append(int(m.group(1))) + return out + + +def wind_record(years): + """Record each analysed year.""" + for y in years: + d = json.load(open(core.results("wind_%d.json" % y))) + left = d["RAD1"]["left"] + d["RAD2"]["left"] + expl = {**d["RAD1"]["explained"], **d["RAD2"]["explained"]} + own = sorted(float(k) for k, v in expl.items() if "own line" in v) + core.record_search( + "wind_waves_%d" % y, "Persistent lines below the ionospheric cutoff, Wind/WAVES", + archive="CDAWeb WI_H1_WAV (Wind/WAVES RAD1, RAD2)", release="v01", selection="every minute of %d" % y, + code=os.path.abspath(__file__), entry="wind", params=dict(line_mad=5, occupancy=0.01, days=30, + diurnal=wind_DIURNAL), + null_summary="%.1f days measured; %d persistent RAD1 and %d RAD2 lines, %d explained" + % (d["minutes"] / 1440.0, d["RAD1"]["persistent"], d["RAD2"]["persistent"], len(expl)), + ledger="Persistent lines below the ionospheric cutoff", + result=("no persistent line outside the known sources in RAD1 or RAD2" if not left else + "%d lines outside the known sources: %s" % (len(left), ", ".join("%.0f kHz" % x["khz"] for x in left))) + + ("; the receiver's own lines at %s kHz" % ", ".join("%.0f" % x for x in own) if own else "")) + print("recorded %d: %d left" % (y, len(left))) + + +wind_STEREO_ROOT = os.environ.get("STEREO_ROOT", core.data("stereo")) +# 41 m broadcast band references +wind_REFS = (7225.0, 7275.0, 7325.0, 7375.0) + + +def wind_stereo_year(year, craft, threads): + """A year of STEREO/WAVES HFR spectra: per-channel line occupancy, days, diurnal modulation and persistent lines outside known sources.""" + import cdflib + from scipy.ndimage import median_filter + sc = "a" if craft == "ahead" else "b" + d = os.path.join(wind_STEREO_ROOT, "tmp_%s_%d" % (sc, year)) + os.makedirs(d, exist_ok=True) + days = [date(year, 1, 1) + timedelta(k) for k in range(366) if (date(year, 1, 1) + timedelta(k)).year == year] + + def one(day): + name = "st%s_l3_wav_hfr_%s_v01.cdf" % (sc, day.strftime("%Y%m%d")) + kept = os.path.join(wind_STEREO_ROOT, name) + p = kept if os.path.exists(kept) else os.path.join(d, name) + url = "https://cdaweb.gsfc.nasa.gov/pub/data/stereo/%s/l3/waves/hfr-direction-finding/%d/%s" % (craft, year, name) + if p != kept: + for attempt in range(6): + try: + b = urllib.request.urlopen(urllib.request.Request(url, headers=wind_UA), timeout=300).read() + open(p, "wb").write(b) + break + except urllib.error.HTTPError as e: + if e.code == 404: + return None + except Exception: + pass + time.sleep(10 * 2 ** attempt) + else: + return "missing" + try: + c = cdflib.CDF(p) + ep = np.array(cdflib.cdfepoch.to_datetime(c.varget("Epoch"))) + v = np.asarray(c.varget("PSD_FLUX"), float) + f = np.asarray(c.varget("FREQUENCY"), float).ravel() / 1e3 + except Exception: + return "unreadable" + finally: + if p != kept and os.path.exists(p): + os.remove(p) + lv = np.log(np.where(v > 0, v, np.nan)) + base = median_filter(np.nan_to_num(lv, nan=np.nanmedian(lv)), size=(1, 9), mode="nearest") + r = lv - base + mad = 1.4826 * np.nanmedian(np.abs(r - np.nanmedian(r, axis=1, keepdims=True)), axis=1, keepdims=True) + hit = r > 5 * np.maximum(mad, 1e-3) + hours = ep.astype("datetime64[h]").astype(np.int64) % 24 + return dict(f=f, n=len(ep), occ=hit.sum(axis=0), hourly=np.array([hit[hours == h].sum(axis=0) for h in range(24)]), + hour_plus=hit.sum(axis=0) > len(ep) / 24.0) + + with ThreadPoolExecutor(threads) as ex: + res = list(ex.map(one, days)) + good = [x for x in res if isinstance(x, dict)] + print("STEREO-%s %d: %d days measured, %d missing or unreadable, %d absent from the archive" + % (sc.upper(), year, len(good), sum(1 for x in res if isinstance(x, str)), sum(1 for x in res if x is None))) + if not good: + return + f = good[0]["f"] + good = [x for x in good if len(x["f"]) == len(f)] + n = sum(x["n"] for x in good) + o = np.sum([x["occ"] for x in good], axis=0) / n + hp = np.sum([x["hourly"] for x in good], axis=0) + days_with = np.sum([x["hour_plus"] for x in good], axis=0) + np.savez(os.path.join(wind_STEREO_ROOT, "lines_st%s_%d.npz" % (sc, year)), freq=f, occupancy=o, hourly=hp, + days=days_with, measured=len(good)) + wind_stereo_classify(year, craft) + + +def wind_stereo_classify(year, craft): + """Classify a STEREO year's persistent lines against known sources and Wind.""" + sc = "a" if craft == "ahead" else "b" + z = np.load(os.path.join(wind_STEREO_ROOT, "lines_st%s_%d.npz" % (sc, year))) + f, o, hp, days_with = z["freq"], z["occupancy"], z["hourly"], z["days"] + measured = int(z["measured"]) if "measured" in z.files else None + mod = (hp.max(axis=0) - hp.min(axis=0)) / np.maximum(hp.mean(axis=0), 1e-9) + pers = [j for j in np.argsort(-o) if o[j] > 0.01 and days_with[j] >= 30] + wind_occ = wind_occupancy_near(year) + osc = "b" if sc == "a" else "a" + op = os.path.join(wind_STEREO_ROOT, "lines_st%s_%d.npz" % (osc, year)) + oz = np.load(op) if os.path.exists(op) else None + rest, explained = [], {} + for j in pers: + why = wind_known(f[j], mod[j]) + # a line STEREO holds five times as often as Wind is made on STEREO + w = wind_occ(f[j]) if wind_occ else None + if not why and w is not None and w < 0.2 * o[j]: + why = "local to STEREO (Wind %.3f within 25 kHz in %d)" % (w, year) + # likewise the other STEREO spacecraft + sel = np.abs(oz["freq"] - f[j]) <= 25.0 if oz is not None else None + wo = float(oz["occupancy"][sel].max()) if sel is not None and sel.any() else None + if not why and wo is not None and wo < 0.2 * o[j]: + why = "local to STEREO-%s (STEREO-%s %.3f within 25 kHz in %d)" % (sc.upper(), osc.upper(), wo, year) + print(" %8.1f kHz: occupancy %.3f, %d days, 24 h modulation %.2f: %s" + % (f[j], o[j], int(days_with[j]), mod[j], why or "not a known source")) + if why: + explained[float(f[j])] = why + else: + rest.append(j) + print("STEREO-%s %d: persistent lines (occupancy above 1 per cent on 30 days or more) outside the known sources: %d" + % (sc.upper(), year, len(rest))) + json.dump(dict(year=year, craft=craft, days=measured, persistent=len(pers), explained=explained, + left=[dict(khz=float(f[j]), occupancy=float(o[j]), days=int(days_with[j]), modulation=float(mod[j])) + for j in rest]), open(core.results("stereo_%s_%d.json" % (sc, year)), "w"), indent=1) + + +def wind_stereo_record(years): + """Record each classified STEREO year.""" + for y in years: + for sc, craft in (("a", "ahead"), ("b", "behind")): + p = core.results("stereo_%s_%d.json" % (sc, y)) + if not os.path.exists(p): + continue + d = json.load(open(p)) + left = d["left"] + core.record_search( + "stereo_waves_%s_%d" % (sc, y), "Persistent lines below the ionospheric cutoff, STEREO/WAVES", + archive="CDAWeb STEREO-%s WAVES HFR L3 (PSD_FLUX)" % sc.upper(), release="v01", + selection="every spectrum of %d" % y, code=os.path.abspath(__file__), entry="wind", + params=dict(line_mad=5, occupancy=0.01, days=30, craft=craft), + null_summary="%s days measured; %d persistent lines, %d explained" + % (d["days"] if d["days"] is not None else "all", d["persistent"], len(d["explained"])), + ledger="Persistent lines below the ionospheric cutoff", + result="no persistent line outside the known sources" if not left else + "%d lines outside the known sources: %s" % (len(left), ", ".join("%.0f kHz" % x["khz"] for x in left))) + print("recorded STEREO-%s %d: %d left" % (sc.upper(), y, len(left))) + + +def wind_occupancy_near(year, width=25.0): + """Function giving Wind's largest occupancy within width kHz in a year, or None.""" + zs = [] + for band in ("RAD1", "RAD2"): + p = os.path.join(wind_ROOT, "lines_%s_%d.npz" % (band, year)) + if os.path.exists(p): + z = np.load(p) + zs.append((z["freq"], z["occupancy"])) + if not zs: + return None + f = np.concatenate([a for a, _ in zs]) + o = np.concatenate([b for _, b in zs]) + + def at(f_khz): + sel = np.abs(f - f_khz) <= width + return float(o[sel].max()) if sel.any() else None + return at + + +def wind_line_minutes(epochs, values, freqs, f_khz): + """Whole minutes with a 5-sigma line at the channel nearest f_khz.""" + from scipy.ndimage import median_filter + v = np.where(values > 0, values, np.nan) + lv = np.log(v) + base = median_filter(np.nan_to_num(lv, nan=np.nanmedian(lv)), size=(1, 9), mode="nearest") + r = lv - base + mad = 1.4826 * np.nanmedian(np.abs(r - np.nanmedian(r, axis=1, keepdims=True)), axis=1, keepdims=True) + hit = r > 5 * np.maximum(mad, 1e-3) + j = int(np.argmin(np.abs(freqs - f_khz))) + mins = (epochs.astype("datetime64[m]").astype(np.int64)) + return set(mins[hit[:, j]].tolist()), set(mins.tolist()), float(freqs[j]) + + +def wind_stereo(year, f_khz, day0, ndays): + """Line minutes at f_khz at Wind and STEREO-A over the same days with chance coincidences.""" + import cdflib + band = "RAD1" if f_khz < 1040 else "RAD2" + wh, wm, sh, sm = set(), set(), set(), set() + fw = fs = float("nan") + for k in range(ndays): + dd = date(year, 1, 1) + timedelta(day0 - 1 + k) + wp = os.path.join(wind_ROOT, str(year), "wi_h1_wav_%s_v01.cdf" % dd.strftime("%Y%m%d")) + sp = os.path.join(wind_STEREO_ROOT, "sta_l3_wav_hfr_%s_v01.cdf" % dd.strftime("%Y%m%d")) + if not os.path.exists(sp): + # HFR files under hfr-direction-finding or hfr + for sub in ("hfr-direction-finding", "hfr"): + url = "https://cdaweb.gsfc.nasa.gov/pub/data/stereo/ahead/l3/waves/%s/%d/%s" % (sub, year, + os.path.basename(sp)) + try: + b = urllib.request.urlopen(urllib.request.Request(url, headers=wind_UA), timeout=180).read() + except Exception: + continue + os.makedirs(wind_STEREO_ROOT, exist_ok=True) + open(sp, "wb").write(b) + break + if not os.path.exists(sp): + continue + if not os.path.exists(wp): + continue + c = cdflib.CDF(wp) + h, m, fw = wind_line_minutes(np.array(cdflib.cdfepoch.to_datetime(c.varget("Epoch"))), + np.asarray(c.varget("E_VOLTAGE_" + band), float), + np.asarray(c.varget("Frequency_" + band), float), f_khz) + wh |= h + wm |= m + s = cdflib.CDF(sp) + h, m, fs = wind_line_minutes(np.array(cdflib.cdfepoch.to_datetime(s.varget("Epoch"))), + np.asarray(s.varget("STOKES_I"), float), + np.asarray(s.varget("FREQUENCY"), float) / 1e3, f_khz) + sh |= h + sm |= m + common = wm & sm + a, b = wh & common, sh & common + both = a & b + exp = len(a) * len(b) / max(len(common), 1) + print("%.1f kHz (Wind %.1f, STEREO-A %.1f): %d common minutes; line at Wind %d, at STEREO-A %d, both %d against " + "%.1f by chance" % (f_khz, fw, fs, len(common), len(a), len(b), len(both), exp)) + return dict(f=f_khz, common=len(common), wind=len(a), stereo=len(b), both=len(both), chance=exp) + + +def wind_daily(year, freqs, refs): + """Daily line minutes per frequency and coincidences; terrestrial lines track the broadcast bands.""" + import cdflib + from scipy.stats import spearmanr + d = os.path.join(wind_ROOT, str(year)) + allf = list(freqs) + list(refs) + per_day = {f: [] for f in allf} + mins = {f: set() for f in allf} + dates = [] + total = 0 + for p in sorted(os.listdir(d)): + if not p.endswith(".cdf"): + continue + try: + c = cdflib.CDF(os.path.join(d, p)) + ep = np.array(cdflib.cdfepoch.to_datetime(c.varget("Epoch"))) + v = np.asarray(c.varget("E_VOLTAGE_RAD2"), float) + fr = np.asarray(c.varget("Frequency_RAD2"), float) + except Exception: + continue + total += len(ep) + dates.append(p.split("_")[3]) + for f in allf: + h, _, _ = wind_line_minutes(ep, v, fr, f) + per_day[f].append(len(h)) + mins[f] |= h + ref = np.sum([per_day[f] for f in refs], axis=0) + out = {} + for f in freqs: + rho, p = spearmanr(per_day[f], ref) + out[f] = dict(days=int(np.sum(np.array(per_day[f]) > 0)), minutes=len(mins[f]), rho_ref=float(rho), p=float(p), + per_day=dict(zip(dates, per_day[f])), line_minutes=sorted(mins[f])) + print("%.1f kHz: line minutes %d on %d days; day-to-day Spearman correlation with the broadcast references %s: " + "%.2f (p %.1g)" % (f, len(mins[f]), out[f]["days"], "+".join("%.0f" % r for r in refs), rho, p)) + top = sorted(out[f]["per_day"].items(), key=lambda kv: -kv[1])[:20] + print(" busiest days: " + ", ".join("%s %d" % kv for kv in top)) + import json + json.dump({"%.1f" % f: o for f, o in out.items()}, open(os.path.join(wind_ROOT, "daily_%d.json" % year), "w")) + for i, f in enumerate(freqs): + for g in list(freqs)[i + 1:] + list(refs): + both = len(mins[f] & mins[g]) + exp = len(mins[f]) * len(mins[g]) / max(total, 1) + print(" %.1f and %.1f kHz: %d minutes together against %.1f by chance" % (f, g, both, exp)) + return out + + +def wind_rad1(year): + """RAD1 lines among measured channels only, against measured neighbours; into wind_rad1_.json.""" + import cdflib + d = os.path.join(wind_ROOT, str(year)) + occ, days, hourly, rel, nmin, nday = {}, {}, {}, {}, 0, 0 + for p in sorted(os.listdir(d)): + if not p.endswith(".cdf") or wind_bad_day(p): + continue + try: + c = cdflib.CDF(os.path.join(d, p)) + ep = cdflib.cdfepoch.to_datetime(c.varget("Epoch")) + except Exception: + continue + fr = np.atleast_2d(c.varget("Frequency_RAD1"))[0] + vm = np.atleast_2d(c.varget("Minimum_voltage_RAD1"))[0] + meas = np.nonzero(vm > 0)[0] + if len(meas) < 9: + continue + hours = np.array([int(str(x)[11:13]) for x in ep]) + x = np.asarray(c.varget("E_VOLTAGE_RAD1"), float) + x = np.where(x > 0, x, np.nan) + pw = x[:, meas] ** 2 + lv = np.log(pw) + n, m = lv.shape + for a in range(m): + cols = [b for b in range(max(0, a - 4), min(m, a + 5)) if b != a] + nb = lv[:, cols] + med = np.nanmedian(nb, axis=1) + resid = lv[:, a] - med + mad = 1.4826 * np.nanmedian(np.abs(resid - np.nanmedian(resid))) + hit = resid > 5 * max(mad, 1e-3) + k = int(round(fr[meas[a]])) + occ[k] = occ.get(k, 0) + int(np.nansum(hit)) + days[k] = days.get(k, 0) + int(np.nansum(hit) > 60) + hourly.setdefault(k, np.zeros(24)) + for h in range(24): + hourly[k][h] += np.nansum(hit[hours == h]) + # measured neighbours' scatter as a fraction of their median + pn = pw[:, cols] + pm = np.nanmedian(pn, axis=1) + rel.setdefault(k, []).append(float(np.nanmedian(1.4826 * np.nanmedian(np.abs(pn - pm[:, None]), axis=1) / pm))) + nmin += n + nday += 1 + out = [] + for k in sorted(occ): + h = hourly[k] + known = "solar wind plasma line" if k < 100 else ("auroral kilometric radiation" if k <= 700 else "") + out.append(dict(khz=k, occupancy=occ[k] / max(nmin, 1), days=days[k], modulation=float((h.max() - h.min()) / max(h.mean(), 1e-9)), + known=known, rel_dev=float(np.median(rel[k])))) + pers = [c for c in out if c["occupancy"] > 0.01 and c["days"] >= 30] + print("%d: %d days, %d minutes; %d measured channels, %d persistent lines" % (year, nday, nmin, len(out), len(pers))) + for c in pers: + print(" %5d kHz: occupancy %.3f on %d days, 24 h modulation %.2f, scatter against measured neighbours %.2f: %s" + % (c["khz"], c["occupancy"], c["days"], c["modulation"], c["rel_dev"], + c["known"] or ("diurnal (terrestrial)" if c["modulation"] >= wind_DIURNAL else "unexplained"))) + json.dump(dict(year=year, days=nday, minutes=nmin, channels=out), open(core.results("wind_rad1_%d.json" % year), "w"), indent=1) + return out + + +def wind_rad1_record(years): + for y in years: + d = json.load(open(core.results("wind_rad1_%d.json" % y))) + ch = d["channels"] + pers = [c for c in ch if c["occupancy"] > 0.01 and c["days"] >= 30] + left = [c for c in pers if not c["known"] and c["modulation"] < wind_DIURNAL] + core.record_search( + "wind_rad1_%d" % y, "Lines below the ionospheric cutoff", archive="CDAWeb WI_H1_WAV (Wind/WAVES RAD1)", release="v01", + selection="every minute of %d at the %d channels RAD1 measured directly" % (y, len(ch)), code=os.path.abspath(__file__), + entry="wind", n_targets=len(ch), + params=dict(sigma=5.0, neighbours=8, occupancy=0.01, days=30, measured_only=True), + null_summary="%.1f days; a measured channel against the median of its eight nearest measured neighbours; scatter %.2f " + "of the background below 300 kHz and %.2f above" % ( + d["minutes"] / 1440.0, np.median([c["rel_dev"] for c in ch if c["khz"] < 300]), + np.median([c["rel_dev"] for c in ch if c["khz"] >= 300])), + sensitivity="a line of 5 robust deviations of the measured neighbours' scatter in a 3 kHz channel, %.2f of the background " + "above 300 kHz" % (5 * np.median([c["rel_dev"] for c in ch if c["khz"] >= 300])), + ledger="Lines below the ionospheric cutoff", + result=("%d persistent lines at the measured channels, all in the plasma-line and auroral ranges below 500 kHz; none above " + "700 kHz" % len(pers)) if not left else "%d lines outside the known sources: %s" % (len(left), ", ".join("%d kHz" % c["khz"] for c in left))) + core.clear_targets("wind_rad1_%d" % y) + core.record_targets("wind_rad1_%d" % y, [dict( + target="wind:rad1:%d kHz" % c["khz"], stat=c["occupancy"], unit="occupancy", vet=c["known"] or None, + note="%d days, 24 h modulation %.2f" % (c["days"], c["modulation"])) for c in pers]) + print("recorded wind_rad1_%d" % y) + + +def wind_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "classify", "stereo", "daily", "stereo_year", + "stereo_classify", "record", "stereo_record", "rad1", "rad1_record")) + p.add_argument("--craft", choices=("ahead", "behind"), default="ahead") + p.add_argument("--refs", type=float, nargs="+", default=list(wind_REFS)) + p.add_argument("year", type=int, nargs="+") + p.add_argument("--threads", type=int, default=4) + p.add_argument("--freq", type=float, nargs="+", default=[8025.0]) + p.add_argument("--day0", type=int, default=1) + p.add_argument("--days", type=int, default=10) + a = p.parse_args() + if a.mode in ("record", "stereo_record", "rad1_record"): + {"record": wind_record, "stereo_record": wind_stereo_record, "rad1_record": wind_rad1_record}[a.mode](a.year) + return + a.year = a.year[0] + if a.mode == "fetch": + wind_fetch(a.year, a.threads) + elif a.mode == "rad1": + wind_rad1(a.year) + elif a.mode == "analyse": + wind_analyse(a.year) + elif a.mode == "classify": + wind_classify(a.year) + elif a.mode == "daily": + wind_daily(a.year, a.freq, a.refs) + elif a.mode == "stereo_year": + wind_stereo_year(a.year, a.craft, a.threads) + elif a.mode == "stereo_classify": + wind_stereo_classify(a.year, a.craft) + else: + for f in a.freq: + wind_stereo(a.year, f, a.day0, a.days) + + +def wind_cli(): + quiet_warnings() + wind_main() + + +# -------------------------------------------------------------------------------------------------------------- + +callisto_DOC = r"""Sidereal test on a year of e-Callisto spectra: channels with sidereal over solar Lomb-Scargle power, excluding broadband, shared, GNSS and FM swings. + + python -I seti.py radio_sky callisto fetch STATION FOCUSCODE YEAR [--threads 6] + python -I seti.py radio_sky callisto analyse STATION FOCUSCODE YEAR + python -I seti.py radio_sky callisto report STATION FOCUSCODE YEAR (the listing again from the saved result) + python -I seti.py radio_sky callisto compare STATION_A CODE_A STATION_B CODE_B YEAR (each residual at the other station)""" + +callisto_ROOT = os.environ.get("CALLISTO_ROOT", core.data("callisto")) +# GNSS downlinks (MHz) repeat every sidereal day +callisto_GNSS = ((1164.0, 1300.0), (1559.0, 1611.0)) +# FM broadcast band +callisto_BROADCAST = ((87.5, 108.0),) +# |r| with the broadband sidereal profile marking the Galaxy's swing +callisto_SKY_R = 0.8 +# swings shared within 10 MHz and 2 h belong to the band +callisto_SHARED_MHZ, callisto_SHARED_H, callisto_SHARED_MIN = 10.0, 2.0, 2 +# dB per digit of the logarithmic detector +callisto_DB_PER_DIGIT = 2500.0 / 256 / 25.4 + + +def callisto_known(f_mhz, row=None): + if any(lo <= f_mhz <= hi for lo, hi in callisto_GNSS): + return "satellite navigation (sidereal by orbit design)" + if any(lo <= f_mhz <= hi for lo, hi in callisto_BROADCAST): + return "FM broadcast band" + if row is not None and row.get("sky_locked"): + return "the broadband sky's sidereal profile (r %+.2f)" % row["r_sky"] + if row is not None and row.get("band_shared", 0) >= callisto_SHARED_MIN: + return "a swing shared by %d channels within %.0f MHz" % (row["band_shared"], callisto_SHARED_MHZ) + return None + + +# bright low-frequency sources by RA (h) +callisto_SKY_TRANSITS = {"Galactic centre": 17.76, "Cygnus A": 19.99, "Cassiopeia A": 23.39, "Taurus A": 5.58, "Virgo A": 12.51} +callisto_SKY_PHASE_H = 1.5 + + +def callisto_compare(paths): + """Each residual of one station at the other: sidereal power over noise, phase, and bright-source transits.""" + st = [json.load(open(p)) for p in paths] + for s in st: + callisto_mark_shared(s["channels"]) + for a, b in ((st[0], st[1]), (st[1], st[0])): + ra = [r for r in a["channels"] if r["ratio"] > 2 and r["sid_over_noise"] > 1 and not callisto_known(r["freq"], r)] + print("%s %s residuals against %s %s:" % (a["station"], a["code"], b["station"], b["code"])) + for r in sorted(ra, key=lambda r: -r["ratio"]): + q = min(b["channels"], key=lambda x: abs(x["freq"] - r["freq"])) + if abs(q["freq"] - r["freq"]) > 0.5 or "phase_h" not in r or "phase_h" not in q: + print(" %.3f MHz: no channel within 0.5 MHz at the other station" % r["freq"]) + continue + dph = abs((r["phase_h"] - q["phase_h"] + 12) % 24 - 12) + sky = [n for n, h in callisto_SKY_TRANSITS.items() if abs((r["phase_h"] - h + 12) % 24 - 12) <= callisto_SKY_PHASE_H + and abs((q["phase_h"] - h + 12) % 24 - 12) <= callisto_SKY_PHASE_H] + print(" %.3f MHz (ratio %.1f, over noise %.2f, phase %.1f h) vs %.3f MHz (ratio %.1f, over noise %.2f, phase " + "%.1f h): phases %.1f h apart%s" % (r["freq"], r["ratio"], r["sid_over_noise"], r["phase_h"], q["freq"], + q["ratio"], q["sid_over_noise"], q["phase_h"], dph, + "; both at the transit of " + ", ".join(sky) if sky else "")) + + +def callisto_mark_shared(rows): + """Count other sidereal channels within SHARED_MHZ agreeing in phase within SHARED_H (mod 12 h).""" + sel = [r for r in rows if r["sid_over_noise"] > 1 and r["ratio"] > 2 and "phase_h" in r] + for r in rows: + r["band_shared"] = 0 + for r in sel: + for q in sel: + if q is r or abs(q["freq"] - r["freq"]) > callisto_SHARED_MHZ: + continue + dh = abs(r["phase_h"] % 12 - q["phase_h"] % 12) + if min(dh, 12 - dh) <= callisto_SHARED_H: + r["band_shared"] += 1 +callisto_BASE = "http://soleil.i4ds.ch/solarradio/data/2002-20yy_Callisto/" +callisto_UA = core.UA + + +def callisto_get(url, timeout=120): + """Bytes of a URL, or None when missing or still failing after three tries.""" + return core.get(url, timeout=timeout, retries=3, soft=True, pause=0) + + +def callisto_reduce_file(raw): + """Per-channel median power and frequencies of one e-Callisto file.""" + from astropy.io import fits + with fits.open(io.BytesIO(gzip.decompress(raw))) as h: + d = np.asarray(h[0].data, float) + freqs = np.asarray(h[1].data["FREQUENCY"][0], float) if len(h) > 1 else np.arange(d.shape[0], dtype=float) + hdr = h[0].header + t0 = "%sT%s" % (hdr.get("DATE-OBS", ""), hdr.get("TIME-OBS", "")) + return np.median(d, axis=1), freqs, t0 + + +def callisto_fetch_day(args): + station, code, day = args + out = os.path.join(callisto_ROOT, "%s_%s" % (station, code), day.strftime("%Y%m%d") + ".npz") + if os.path.exists(out): + return 1 + d = day.strftime("%Y/%m/%d/") + page = callisto_get(callisto_BASE + d) + if not page: + return 0 + names = sorted(set(re.findall(r'href="(%s_\d{8}_(\d{2})(\d{2})\d{2}_%s\.fit\.gz)"' % (re.escape(station), code), + page.decode(errors="replace")))) + hourly = {} + for name, hh, mm in names: + hourly.setdefault(hh, name) + P, T, F = [], [], None + for hh, name in sorted(hourly.items()): + raw = callisto_get(callisto_BASE + d + name) + if not raw: + continue + try: + p, f, t0 = callisto_reduce_file(raw) + except Exception: + continue + if F is None: + F = f + if len(p) != len(F): + continue + P.append(p) + T.append(day.toordinal() + int(hh) / 24.0 + 0.3 / 24.0) + if not P: + return 0 + os.makedirs(os.path.dirname(out), exist_ok=True) + np.savez_compressed(out, power=np.array(P, np.float32), t=np.array(T), freq=F) + return 1 + + +def callisto_fetch(station, code, year, threads): + days = [date(year, 1, 1) + timedelta(k) for k in range(366) if (date(year, 1, 1) + timedelta(k)).year == year] + with ThreadPoolExecutor(threads) as ex: + n = sum(ex.map(callisto_fetch_day, [(station, code, d) for d in days])) + print("%s %s %d: %d days" % (station, code, year, n)) + + +def callisto_analyse(station, code, year): + from astropy.timeseries import LombScargle + d = os.path.join(callisto_ROOT, "%s_%s" % (station, code)) + P, T, F = [], [], None + for p in sorted(os.listdir(d)): + if not p.startswith(str(year)): + continue + z = np.load(os.path.join(d, p)) + if F is None: + F = z["freq"] + if z["power"].shape[1] != len(F): + continue + P.append(z["power"]) + T.append(z["t"]) + P, T = np.vstack(P), np.concatenate(T) + order = np.argsort(F) + X = P[:, order].astype(float) + Fs = F[order] + # repeated frequencies are unused program slots + uniq, cnt = np.unique(Fs, return_counts=True) + keep = ~np.isin(Fs, uniq[cnt > 1]) + X, Fs = X[:, keep], Fs[keep] + # linear power per channel fitted against its neighbours' median; the residual carries the channel's own signal + L = 10 ** (callisto_DB_PER_DIGIT * X / 10.0) + Ln = L / np.nanmedian(L, axis=0) + level = np.nanmedian(X, axis=0) + S = np.nanmedian(Ln, axis=1) + okS = np.isfinite(S) + ex = np.full_like(Ln, np.nan) + nch = Ln.shape[1] + for j in range(nch): + nb = [k for k in range(max(0, j - 4), min(nch, j + 5)) if k != j] + N = np.nanmedian(Ln[:, nb], axis=1) + y = Ln[:, j] + ok = np.isfinite(N) & np.isfinite(y) + if ok.sum() > 100: + A = np.vstack([np.ones(ok.sum()), N[ok]]).T + c, *_ = np.linalg.lstsq(A, y[ok], rcond=None) + ex[ok, j] = y[ok] - A @ c + t_days = T - T.min() + sol, sid = 1.0, 1.0027379093 + rand = np.random.default_rng(1).uniform(0.96, 1.04, 200) + hour = np.floor((t_days * sid % 1.0) * 24).astype(int) + + def sidereal_profile(y, ok): + return np.array([np.mean(y[ok & (hour == h)]) if np.any(ok & (hour == h)) else np.nan for h in range(24)]) + + prof_sky = sidereal_profile(S, okS) + + def sidereal_hour(y, ok): + w = 2 * np.pi * sid * t_days[ok] + A = np.vstack([np.ones(ok.sum()), np.cos(w), np.sin(w)]).T + c, *_ = np.linalg.lstsq(A, y[ok], rcond=None) + return float((np.degrees(np.arctan2(c[2], c[1])) / 15.0) % 24) + rows = [] + for j in range(ex.shape[1]): + y = ex[:, j] + ok = np.isfinite(y) + if ok.sum() < 1000 or np.std(y[ok]) == 0: + continue + ls = LombScargle(t_days[ok], y[ok]) + p_sol, p_sid = float(ls.power(sol)), float(ls.power(sid)) + p_rand = ls.power(rand) + pr = sidereal_profile(y, ok) + good = np.isfinite(pr) & np.isfinite(prof_sky) + r_sky = float(np.corrcoef(pr[good], prof_sky[good])[0, 1]) if good.sum() > 12 and np.std(pr[good]) > 0 else 0.0 + rows.append(dict(freq=float(Fs[j]), p_sol=p_sol, p_sid=p_sid, ratio=p_sid / max(p_sol, 1e-9), + sid_over_noise=p_sid / max(float(np.percentile(p_rand, 95)), 1e-9), + level=float(level[j] - np.median(level)), r_sky=r_sky, phase_h=sidereal_hour(y, ok), + sky_locked=bool(abs(r_sky) >= callisto_SKY_R))) + json.dump(dict(station=station, code=code, year=year, hours=int(len(T)), channels=rows), + open(os.path.join(callisto_ROOT, "sidereal_%s_%s_%d.json" % (station, code, year)), "w")) + np.savez_compressed(os.path.join(callisto_ROOT, "residual_%s_%s_%d.npz" % (station, code, year)), ex=ex.astype(np.float32), + sky=S.astype(np.float32), t=T, freq=Fs) + print("%s %s %d: %d hours, %d channels" % (station, code, year, len(T), len(rows))) + callisto_report(rows) + + +def callisto_report(rows): + """Channels with sidereal power twice the solar and above the local 95th percentile, known sources set aside.""" + callisto_mark_shared(rows) + strong = sorted((r for r in rows if r["sid_over_noise"] > 1 and r["ratio"] > 2), key=lambda r: -r["ratio"]) + kn = [r for r in strong if callisto_known(r["freq"], r)] + rest = [r for r in strong if not callisto_known(r["freq"], r)] + free = [r for r in rows if not callisto_known(r["freq"], r)] + over = sum(r["sid_over_noise"] > 1 for r in free) + print("channels outside known sidereal sources: %d; above the 95th percentile of nearby frequencies: %d " + "(%.1f by chance); also twice their solar power: %d" % (len(free), over, 0.05 * len(free), len(rest))) + for r in kn[:10]: + print(" %.3f MHz: sidereal %.4f, solar %.4f, ratio %.1f, over noise %.2f: %s" + % (r["freq"], r["p_sid"], r["p_sol"], r["ratio"], r["sid_over_noise"], callisto_known(r["freq"], r))) + for r in rest[:15]: + print(" %.3f MHz: sidereal %.4f, solar %.4f, ratio %.1f, over noise %.2f, level %+.1f digits%s, r with the " + "sky %+.2f" % (r["freq"], r["p_sid"], r["p_sol"], r["ratio"], r["sid_over_noise"], r.get("level", 0.0), + ", phase %.1f h" % r["phase_h"] if "phase_h" in r else "", r.get("r_sky", float("nan")))) + top = sorted(rows, key=lambda r: -r["p_sol"])[:5] + print("strongest solar-day channels:", ", ".join("%.2f MHz (%.2f)" % (r["freq"], r["p_sol"]) for r in top)) + return rest + + +def callisto_main(): + if len(sys.argv) > 1 and sys.argv[1] == "compare": + # compare STATION_A CODE_A STATION_B CODE_B YEAR + sa, ca, sb, cb, yr = sys.argv[2:7] + callisto_compare([os.path.join(callisto_ROOT, "sidereal_%s_%s_%s.json" % (s, c, yr)) for s, c in ((sa, ca), (sb, cb))]) + return + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "report")) + p.add_argument("station") + p.add_argument("code") + p.add_argument("year", type=int) + p.add_argument("--threads", type=int, default=6) + a = p.parse_args() + if a.mode == "fetch": + callisto_fetch(a.station, a.code, a.year, a.threads) + elif a.mode == "analyse": + callisto_analyse(a.station, a.code, a.year) + else: + d = json.load(open(os.path.join(callisto_ROOT, "sidereal_%s_%s_%d.json" % (a.station, a.code, a.year)))) + print("%s %s %d: %d hours, %d channels" % (a.station, a.code, a.year, d["hours"], len(d["channels"]))) + callisto_report(d["channels"]) + + +def callisto_cli(): + quiet_warnings() + callisto_main() + + +# -------------------------------------------------------------------------------------------------------------- + +radar_DOC = r"""Stars within 100 pc in the beams of Arecibo and Goldstone asteroid radar, with reply years. + + python -I seti.py radio_sky radar tracks + python -I seti.py radio_sky radar stars + python -I seti.py radio_sky radar record""" + +radar_ROOT = os.environ.get("RADAR_ROOT", core.data("radar")) +radar_HERE = core.RESULTS +radar_API = "https://ssd-api.jpl.nasa.gov/sb_radar.api?fullname=true&observer=true" +radar_HORIZONS = "https://ssd.jpl.nasa.gov/api/horizons.api" +radar_BEAM_ARCMIN = {"-1": 1.0, "-14": 1.1, "-63": 1.1, "-43": 1.1, "-13": 2.3, "-35": 2.3, "-36": 2.3} +radar_NAMES = {"-1": "Arecibo", "-14": "Goldstone DSS-14", "-13": "Goldstone DSS-13", "-43": "Canberra DSS-43", + "-35": "Canberra DSS-35", "-36": "Canberra DSS-36", "-63": "Madrid DSS-63", "-2": "Haystack"} + + +def radar_horizons(des, site, start, stop, step): + q = dict(format="json", COMMAND="'DES=%s;CAP;'" % des if not des.startswith(("C/", "P/")) and not des[0].isdigit() + else "'%s'" % des, EPHEM_TYPE="OBSERVER", CENTER="'%s@399'" % site, START_TIME="'%s'" % start, + STOP_TIME="'%s'" % stop, STEP_SIZE="'%s'" % step, QUANTITIES="'1'", ANG_FORMAT="DEG", CSV_FORMAT="YES", + OBJ_DATA="NO", MAKE_EPHEM="YES") + b = core.get(radar_HORIZONS + "?" + urllib.parse.urlencode(q), timeout=120, retries=3, soft=True, pause=2) + if not b: + return [] + r = json.loads(b).get("result", "") + if "$$SOE" not in r: + return [] + out = [] + for line in r.split("$$SOE")[1].split("$$EOE")[0].strip().splitlines(): + c = [x.strip() for x in line.split(",")] + try: + out.append((c[0], float(c[3]), float(c[4]))) + except (IndexError, ValueError): + continue + return out + + +def radar_tracks(): + os.makedirs(radar_ROOT, exist_ok=True) + d = json.loads(core.get(radar_API, timeout=120, retries=3)) + f = d["fields"] + rows = [dict(zip(f, r)) for r in d["data"]] + groups = {} + for r in rows: + day = r["epoch"][:10] + groups.setdefault((r["des"], r["xmit"], day), []).append(r["epoch"]) + out_path = os.path.join(radar_ROOT, "tracks.jsonl") + done = set() + if os.path.exists(out_path): + done = {(t["des"], t["xmit"], t["day"]) for t in (json.loads(ln) for ln in open(out_path))} + print("%d radar measurements; %d target-transmitter-days (%d done)" % (len(rows), len(groups), len(done)), flush=True) + with open(out_path, "a") as fh: + for (des, xmit, day), eps in sorted(groups.items()): + if (des, xmit, day) in done: + continue + eps = sorted(eps) + from datetime import datetime + t0 = datetime.strptime(eps[0], "%Y-%m-%d %H:%M:%S") + t1 = datetime.strptime(eps[-1], "%Y-%m-%d %H:%M:%S") + a = (t0 - timedelta(hours=1)).strftime("%Y-%m-%d %H:%M") + b = (t1 + timedelta(hours=1)).strftime("%Y-%m-%d %H:%M") + eph = radar_horizons(des, xmit, a, b, "5m") + fh.write(json.dumps(dict(des=des, xmit=xmit, day=day, n=len(eps), eph=eph)) + "\n") + fh.flush() + time.sleep(0.5) + print("tracks written to %s" % out_path) + + +def radar_stars(): + trs = [json.loads(ln) for ln in open(os.path.join(radar_ROOT, "tracks.jsonl"))] + trs = [t for t in trs if t["eph"]] + g = core.gaia("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag, bp_rp FROM gaiadr3.gaia_source " + "WHERE parallax > 10 AND parallax_over_error > 5") + sra = np.radians([float(r["ra"]) for r in g]) + sde = np.radians([float(r["dec"]) for r in g]) + pmra = np.array([float(r["pmra"] or 0) for r in g]) + pmde = np.array([float(r["pmdec"] or 0) for r in g]) + plx = np.array([float(r["parallax"]) for r in g]) + from astropy.time import Time + hits = [] + for t in trs: + rad = radar_BEAM_ARCMIN.get(t["xmit"], 2.3) / 60.0 + ra = np.array([e[1] for e in t["eph"]]) + de = np.array([e[2] for e in t["eph"]]) + # densify to quarter-beam steps + pts_ra, pts_de = [], [] + for i in range(len(ra) - 1): + # short way round in RA + dra = (ra[i + 1] - ra[i] + 180.0) % 360.0 - 180.0 + sep = math.hypot(dra * math.cos(math.radians(de[i])), de[i + 1] - de[i]) + n = max(int(sep / (rad / 4)) + 1, 1) + for k in range(n): + pts_ra.append((ra[i] + dra * k / n) % 360.0) + pts_de.append(de[i] + (de[i + 1] - de[i]) * k / n) + pts_ra.append(ra[-1]) + pts_de.append(de[-1]) + pr, pd = np.radians(pts_ra), np.radians(pts_de) + yrs = (Time(t["day"]).jyear - 2016.0) + cra = sra + np.radians(pmra / 3.6e6 * yrs) / np.cos(sde) + cde = sde + np.radians(pmde / 3.6e6 * yrs) + # stars near the track's bounding box first + box = (cde > pd.min() - 0.02) & (cde < pd.max() + 0.02) + idx = np.where(box)[0] + if len(idx) == 0: + continue + for j in idx: + cs = np.sin(cde[j]) * np.sin(pd) + np.cos(cde[j]) * np.cos(pd) * np.cos(cra[j] - pr) + m = float(np.degrees(np.arccos(np.clip(cs.max(), -1, 1)))) + if m < rad: + d_ly = 3261.56 / plx[j] + year = Time(t["day"]).jyear + hits.append(dict(gaia=g[j]["source_id"], dist_ly=d_ly, g=g[j]["phot_g_mean_mag"], bp_rp=g[j]["bp_rp"], + target=t["des"], station=radar_NAMES.get(t["xmit"], t["xmit"]), date=t["day"], + sep_arcmin=m * 60, reply_year=year + 2 * d_ly)) + hits.sort(key=lambda h: h["reply_year"]) + json.dump(hits, open(os.path.join(radar_HERE, "radar_beams.json"), "w"), indent=1) + print("%d radar target-days with tracks; %d pings of %d Gaia stars within 100 pc" % ( + len(trs), len(hits), len({h["gaia"] for h in hits}))) + for h in hits[:40]: + print(" Gaia DR3 %s %5.1f ly G %s: %s on %s from %s, %.2f arcmin off the beam axis; reply could arrive from %.1f" + % (h["gaia"], h["dist_ly"], h["g"], h["target"], h["date"], h["station"], h["sep_arcmin"], h["reply_year"])) + + +def radar_record(): + """Record one row per ping with star and earliest reply year.""" + hits = json.load(open(os.path.join(radar_HERE, "radar_beams.json"))) + nearest = min(hits, key=lambda h: h["dist_ly"]) + core.record_search( + "radar_beam_stars", "Stars in the beams of planetary radar (reply windows)", + archive="JPL small-body radar astrometry API; JPL Horizons; Gaia DR3", release="radar astrometry to 2025-10", + selection="Gaia DR3 stars within 100 pc (parallax S/N 5) in the half-power beam of every radar target-day", + code="seti.py radio_sky radar", params=dict(beam_arcmin=radar_BEAM_ARCMIN, step="quarter beam", margin_h=1), + n_targets=len({h["gaia"] for h in hits}), + null_summary="no pinged star lies close enough for its reply window to have opened (earliest %.1f)" + % min(h["reply_year"] for h in hits), + sensitivity="every published delay and Doppler measurement, 1968-2025", + result="%d pings of %d stars; nearest %.1f ly (%s, %s, %s), reply from %.1f" + % (len(hits), len({h["gaia"] for h in hits}), nearest["dist_ly"], nearest["station"], nearest["target"], + nearest["date"], nearest["reply_year"]), + ledger="Stars in planetary-radar beams") + core.clear_targets("radar_beam_stars") + first = {} + for h in sorted(hits, key=lambda h: h["reply_year"]): + first.setdefault(h["gaia"], h) + core.record_targets("radar_beam_stars", [ + dict(target="gaia_dr3:%s" % g, stat=float(h["reply_year"]), unit="earliest reply year", + note="%s from %s on %s, %.2f arcmin off axis, %.1f ly" % (h["target"], h["station"], h["date"], + h["sep_arcmin"], h["dist_ly"])) + for g, h in first.items()]) + + +def radar_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("tracks", "stars", "record")) + a = p.parse_args() + {"tracks": radar_tracks, "stars": radar_stars, "record": radar_record}[a.mode]() + + +def radar_cli(): + quiet_warnings() + radar_main() + + +# -------------------------------------------------------------------------------------------------------------- + +# -------------------------------------------------------------------------------------------------------------- + +alma_DOC = r"""Narrowband ALMA cube lines at stars within 20 pc: 6-sigma one- or two-channel peaks against annulus noise, negatives as null, Splatalogue identification. + + python -I seti.py radio_sky alma fetch [--max-gb 1.5] [--units MOUS ...] + python -I seti.py radio_sky alma search + python -I seti.py radio_sky alma record (peaks above the null named against Splatalogue)""" + +alma_ROOT = os.environ.get("ALMA_ROOT", core.data("alma")) +alma_LIST = core.results("alma_nearby.json") +alma_OUT = core.results("alma_lines.json") +alma_MOLECULES = ("CO", "HCN", "HNC", "HCO+", "DCO+", "DCN", "CS", "SiO", "SO", "CN", "H2O", "H2CO", "N2H+", "C2H", "CCH", + "CI", "C-atom", "Hα", "Hβ", "Hγ", "Heα") + + +def alma_units(): + """{member ous: [Gaia DR3 ids]} from alma_nearby.json.""" + out = {} + for row in json.load(open(alma_LIST)): + out.setdefault(row[5], set()).add(str(row[0])) + return {k: sorted(v) for k, v in out.items()} + + +def alma_dir(mous): + return os.path.join(alma_ROOT, "cubes", mous.replace("uid://", "").replace("/", "_")) + + +def alma_fetch_main(max_gb, only=None): + import tarfile + for mous in sorted(alma_units()): + if only and mous not in only: + continue + dest = alma_dir(mous) + if os.path.exists(os.path.join(dest, ".done")): + continue + prod = [f for f in core.alma_datalink(mous) if f["semantics"] == "#this" and str(f["bytes"]).isdigit()] + size = sum(int(f["bytes"]) for f in prod) + if not prod or size > max_gb * 1e9: + print("%s: %.2f GB of products, not fetched" % (mous, size / 1e9), flush=True) + continue + os.makedirs(dest, exist_ok=True) + kept, failed = 0, False + for f in prod: + name = os.path.basename(f["url"]) + if not name.endswith((".tar", ".tgz", ".tar.gz")): + # products served as their own files: cubes only + if "_sci." in name and ".cube.I.pb" in name: + if os.path.exists(os.path.join(dest, name)) or core.download(f["url"], os.path.join(dest, name), + size=int(f["bytes"])): + kept += 1 + else: + print("%s: %s failed" % (mous, name), flush=True) + failed = True + continue + tmp = os.path.join(alma_ROOT, "tar", name) + os.makedirs(os.path.dirname(tmp), exist_ok=True) + if not core.download(f["url"], tmp, size=int(f["bytes"])): + print("%s: %s failed" % (mous, os.path.basename(f["url"])), flush=True) + failed = True + continue + try: + with tarfile.open(tmp) as t: + for m in t.getmembers(): + n = os.path.basename(m.name) + if m.isfile() and "_sci." in n and ".cube.I.pb" in n: + with open(os.path.join(dest, n), "wb") as fh: + fh.write(t.extractfile(m).read()) + kept += 1 + except (tarfile.TarError, EOFError, OSError) as e: + print("%s: %s unreadable (%s), removed for a later pass" % (mous, os.path.basename(f["url"]), + str(e).splitlines()[0][:60]), flush=True) + failed = True + os.remove(tmp) + if not failed: + open(os.path.join(dest, ".done"), "w").write(str(kept)) + print("%s: %.2f GB of products, %d cube files kept%s" % (mous, size / 1e9, kept, + ", a product to fetch again" if failed else ""), flush=True) + + +def alma_spectrum(path, ra, dec): + """(Hz, Jy/beam, noise) at a position of a pbcor cube, annulus-subtracted; None off the image.""" + from astropy.io import fits + from astropy.wcs import WCS + from astropy.coordinates import SkyCoord + import astropy.units as u + with fits.open(path) as h: + hdr = h[0].header + cube = np.squeeze(h[0].data).astype(np.float32) + pbp = path.replace(".pbcor.fits", ".pb.fits.gz") + pb = np.squeeze(fits.getdata(pbp)).astype(np.float32) if os.path.exists(pbp) else np.ones_like(cube) + if cube.ndim != 3: + return None + x, y = WCS(hdr).celestial.world_to_pixel(SkyCoord(ra * u.deg, dec * u.deg)) + ix, iy = int(round(float(x))), int(round(float(y))) + nz, ny, nx = cube.shape + if not (0 <= ix < nx and 0 <= iy < ny): + return None + beam = np.sqrt(hdr["BMAJ"] * hdr["BMIN"]) / abs(hdr["CDELT1"]) + yy, xx = np.mgrid[0:ny, 0:nx] + r = np.hypot(xx - float(x), yy - float(y)) + ann = (r > 2 * beam) & (r < 4 * beam) + if ann.sum() < 20: + return None + flat = cube[:, ann] * pb[:, ann] + with np.errstate(all="ignore"): + med = np.nanmedian(flat, axis=1) + rms = 1.4826 * np.nanmedian(np.abs(flat - med[:, None]), axis=1) + noise = rms / pb[:, iy, ix] + local = cube[:, iy, ix] - np.nanmedian(cube[:, ann], axis=1) + freq = hdr["CRVAL3"] + (np.arange(nz) + 1 - hdr["CRPIX3"]) * hdr["CDELT3"] + return freq, local.astype(float), noise.astype(float) + + +def alma_peaks(freq, s, e, thr=6.0, win=25): + """One- or two-channel runs thr above a win-channel running median, away from window ends: [(index, z, sign)].""" + from scipy.ndimage import median_filter + ok = np.isfinite(s) & np.isfinite(e) & (e > 0) + if ok.sum() < 3 * win: + return [] + edge = max(3, len(s) // 32) + ok[:edge] = ok[-edge:] = False + base = median_filter(np.where(ok, s, np.nanmedian(s[ok])), size=win, mode="nearest") + z = np.where(ok, (s - base) / np.where(ok, e, 1.0), 0.0) + out = [] + for sign in (1, -1): + above = sign * z > 3.0 + k = 0 + while k < len(z): + if above[k]: + j = k + while j < len(z) and above[j]: + j += 1 + run = slice(k, j) + top = k + int(np.argmax(sign * z[run])) + if j - k <= 2 and sign * z[top] >= thr: + out.append((top, float(sign * z[top]), sign)) + k = j + else: + k += 1 + return out + + +def alma_search_main(): + from astropy.io import fits + units = alma_units() + ids = sorted({s for v in units.values() for s in v}) + gaia = {} + for i in range(0, len(ids), 200): + for r in core.gaia("SELECT source_id, ra, dec, pmra, pmdec, radial_velocity FROM gaiadr3.gaia_source WHERE " + "source_id IN (%s)" % ",".join(ids[i:i + 200])): + gaia[r["source_id"]] = r + rows, peaks = [], [] + rng = np.random.default_rng(1) + injected = recovered = 0 + for mous, sids in sorted(units.items()): + d = alma_dir(mous) + for path in sorted(glob.glob(os.path.join(d, "*.cube.I.pbcor.fits"))): + hdr = fits.getheader(path) + t = (time.mktime(time.strptime(hdr["DATE-OBS"][:19], "%Y-%m-%dT%H:%M:%S")) / 86400.0 + 40587.0 - 57388.5) / 365.25 + for sid in sids: + g = gaia.get(sid) + if not g: + continue + dec = float(g["dec"]) + float(g["pmdec"] or 0) / 3.6e6 * t + ra = float(g["ra"]) + float(g["pmra"] or 0) / 3.6e6 * t / np.cos(np.radians(dec)) + sp = alma_spectrum(path, ra, dec) + if sp is None: + continue + freq, s, e = sp + found = alma_peaks(freq, s, e) + edge = max(3, len(s) // 32) + for _ in range(5): + k = int(rng.integers(edge + 15, len(s) - edge - 15)) + s2 = s.copy() + s2[k] += 8 * e[k] + injected += 1 + recovered += any(abs(j - k) <= 1 and sg > 0 for j, _, sg in alma_peaks(freq, s2, e)) + rows.append(dict(mous=mous, star=sid, cube=os.path.basename(path), nchan=len(freq), + chan_mhz=abs(float(freq[1] - freq[0])) / 1e6, ghz=float(np.median(freq)) / 1e9, + noise_mjy=float(np.nanmedian(e)) * 1e3, rv=g.get("radial_velocity"), ra=ra, dec=dec)) + for k, z, sign in found: + peaks.append(dict(mous=mous, star=sid, cube=os.path.basename(path), ghz=float(freq[k]) / 1e9, + z=z, sign=sign, chan_mhz=rows[-1]["chan_mhz"], flux_mjy=float(s[k]) * 1e3, + rv=g.get("radial_velocity"), ra=ra, dec=dec)) + pos = sorted((p for p in peaks if p["sign"] > 0), key=lambda p: -p["z"]) + neg = sorted((p for p in peaks if p["sign"] < 0), key=lambda p: -p["z"]) + top = neg[0]["z"] if neg else 0.0 + above = [p for p in pos if p["z"] > top] + print("%d cube spectra of %d stars in %d units; 6-sigma peaks %d emission-like, %d absorption-like (strongest %.1f); " + "%d emission-like above it" % (len(rows), len({r["star"] for r in rows}), len({r["mous"] for r in rows}), + len(pos), len(neg), top, len(above))) + for p in pos[:30]: + print(" %s %s %.5f GHz z %.1f, %.1f mJy, %.2f MHz channels%s" % (p["star"], p["cube"].split(".")[-5], + p["ghz"], p["z"], p["flux_mjy"], p["chan_mhz"], + " ABOVE THE NULL" if p in above else "")) + print("%d of %d injected 8-sigma single-channel lines recovered" % (recovered, injected)) + json.dump(dict(spectra=rows, peaks=peaks, injected=injected, recovered=recovered), open(alma_OUT, "w"), indent=0) + + +def alma_lsrk(ra, dec, rv): + """Star velocity in the cubes' LSRK frame (km/s).""" + from astropy.coordinates import SkyCoord, LSRK + import astropy.units as u + c = SkyCoord(ra=ra * u.deg, dec=dec * u.deg, distance=10 * u.pc, pm_ra_cosdec=0 * u.mas / u.yr, + pm_dec=0 * u.mas / u.yr, radial_velocity=rv * u.km / u.s, frame="icrs") + return float(c.transform_to(LSRK()).radial_velocity.to(u.km / u.s).value) + + +def alma_identify(p, tol_chan=2.0, shift=0.0): + """Splatalogue species within tol_chan channels of a rest-frame peak; shift measures chance coincidences.""" + import re + from astroquery.splatalogue import Splatalogue + import astropy.units as u + known = p.get("rv") not in (None, "") + v = alma_lsrk(p["ra"], p["dec"], float(p["rv"]) if known else 0.0) + rest = p["ghz"] * (1 + v / 299792.458) + shift + half = tol_chan * p["chan_mhz"] / 1e3 + rest * (3.0 if known else 60.0) / 299792.458 + try: + t = Splatalogue.query_lines((rest - half) * u.GHz, (rest + half) * u.GHz, only_NRAO_recommended=True) + except Exception: + return None + if t is None or not len(t): + return [] + found = set() + for raw in t["name"]: + parent = re.sub(r"<[^>]+>", "", re.sub(r"\d+", "", str(raw))).split() + if parent and parent[0] in alma_MOLECULES: + found.add(re.sub(r"<[^>]+>", "", str(raw)).split()[0]) + return sorted(found) + + +def alma_record_main(): + d = json.load(open(alma_OUT)) + pos = [p for p in d["peaks"] if p["sign"] > 0] + neg = [p for p in d["peaks"] if p["sign"] < 0] + top = max([p["z"] for p in neg] or [0.0]) + above = [p for p in pos if p["z"] > top] + chance = [] + for p in above: + p["molecules"] = alma_identify(p) + chance += [bool(alma_identify(p, shift=s)) for s in (-0.05, 0.05)] + left = [p for p in above if not p.get("molecules")] + rate = float(np.mean(chance)) if chance else 0.0 + stars = sorted({r["star"] for r in d["spectra"]}) + core.record_search( + "alma_nearby", "Narrowband millimetre lines, ALMA cubes of nearby stars", archive="ALMA archive pipeline cubes", + selection="observing units within 15 arcsec of Gaia DR3 stars within 20 pc with products of 1.5 GB or less", + code=os.path.abspath(__file__), entry="alma", n_targets=len(stars), + params=dict(threshold=6.0, run_channels=2, median_channels=25), + null_summary="%d absorption-like peaks, strongest %.1f" % (len(neg), top), + sensitivity="median channel noise %.2f mJy/beam; %d of %d injected 8-sigma single-channel lines recovered" + % (float(np.median([r["noise_mjy"] for r in d["spectra"]])), d["recovered"], d["injected"]), + ledger="ALMA cubes of nearby stars", + result="%d emission-like peaks above the null, %d on molecular lines (chance rate %.2f), %d left" + % (len(above), len(above) - len(left), rate, len(left))) + core.clear_targets("alma_nearby") + core.record_targets("alma_nearby", [dict(target="gaia_dr3:%s" % s, stat=sum(1 for p in left if p["star"] == s), + unit="unexplained narrowband peaks", + note="%d cubes" % sum(1 for r in d["spectra"] if r["star"] == s)) + for s in stars]) + print("%d stars; %d emission-like peaks above the null (%.1f), %d on molecular lines (chance rate %.2f), %d left" + % (len(stars), len(above), top, len(above) - len(left), rate, len(left))) + for p in above: + print(" %s %.5f GHz z %.1f: %s" % (p["star"], p["ghz"], p["z"], ", ".join(p["molecules"] or []) or "no line")) + + +def alma_cli(): + quiet_warnings() + p = argparse.ArgumentParser(prog="seti.py radio_sky alma") + p.add_argument("mode", choices=("fetch", "search", "record")) + p.add_argument("--max-gb", type=float, default=1.5) + p.add_argument("--units", nargs="*", help="fetch only these member OUS ids, at any size up to --max-gb") + a = p.parse_args() + if a.mode == "fetch": + alma_fetch_main(a.max_gb, set(a.units or ())) + elif a.mode == "record": + alma_record_main() + else: + alma_search_main() + + +# -------------------------------------------------------------------------------------------------------------- + +lpt_DOC = r"""Gaia stars inside long-period radio transient localisations at consistent distances, against ring controls. + + python -I seti.py radio_sky lpt match + python -I seti.py radio_sky lpt record""" + +lpt_OUT = core.results("lpt_gaia.json") +# name, position, localisation radius (arcsec), period (min), DM distance (kpc), nature +lpt_SOURCES = [ + ("GCRT J1745-3009", ("eq", "17 45 05.0", "-30 09 54"), 10.0, 77.01, None, ""), + ("GLEAM-X J1627-5235", ("eq", "16 27 59.5", "-52 35 04.3"), 2.0, 18.18, (1.3, 0.5), ""), + ("GPM J1839-10", ("eq", "18 39 02.00", "-10 31 49.37"), 1.0, 21.97, (5.7, 2.9), "binary, 8.75 h orbit"), + ("ASKAP J1935+2148", ("eq", "19 35 05.1", "+21 48 41.0"), 3.0, 53.76, (4.3, 1.3), "three emission states"), + ("CHIME J0630+25", ("eq", "06 30 38.4", "+25 26 24"), 120.0, 7.02, (0.17, 0.2), "spin-down and a glitch"), + ("ASKAP/DART J1832-0911", ("gal", 22.6406, -0.0839), 3.0, 44.27, (4.5, 1.5), "X-ray outburst at the radio period"), + ("ILT J1101+5521", ("gal", 150.4551, 55.5199), 3.0, 125.53, (0.50, 0.15), "white dwarf and M dwarf, period = orbit"), + ("GLEAM-X J0704-37", ("eq", "07 04 13.19", "-37 06 14.3"), 1.0, 174.94, (1.5, 0.5), + "white dwarf and M dwarf, period = orbit"), + ("ASKAP J1839-0756", ("eq", "18 39 50.573", "-07 56 39.17"), 1.0, 387.02, (4.0, 1.2), "interpulse at half the period"), + ("ASKAP J1448-6856", ("gal", 313.1644, -8.4338), 3.0, 93.85, None, "white dwarf and M dwarf"), + ("CHIME/ILT J1634+44", ("gal", 70.1692, 42.5754), 2.0, 14.02, (2.6, 1.7), "spin-up, fully circular"), + ("ASKAP J1755-2527", ("eq", "17 55 34.87", "-25 27 49.1"), 3.0, 69.77, None, ""), + ("ASKAP J1424-6126", ("eq", "14 24 31.2", "-61 26 11"), 3.0, 35.79, None, ""), + ("ASKAP J1745-5051", ("eq", "17 45 08.9", "-50 51 49"), 3.0, 80.68, None, "accreting white dwarf, X-rays at the orbit"), + ("ASKAP J1651-4505", ("eq", "16 51 30.3", "-45 05 20"), 3.0, 388.6, None, ""), + ("ASKAP J1700-4457", ("eq", "17 00 36.6", "-44 57 58"), 3.0, 281.6, None, ""), +] + + +def lpt_radec(pos): + from astropy.coordinates import SkyCoord + import astropy.units as u + if pos[0] == "gal": + c = SkyCoord(l=pos[1] * u.deg, b=pos[2] * u.deg, frame="galactic").icrs + else: + c = SkyCoord(pos[1], pos[2], unit=(u.hourangle, u.deg), frame="icrs") + return float(c.ra.deg), float(c.dec.deg) + + +def lpt_at_distance(r, dist): + """Whether a parallax reaches the DM distance range within 2 sigma; any star without a distance.""" + if not dist: + return True + plx, e = num(r["parallax"]), num(r["parallax_error"]) + if plx is None or not e: + return False + lo, hi = 1.0 / (dist[0] + 2 * dist[1]), 1.0 / max(dist[0] - 2 * dist[1], 0.01) + return plx + 2 * e >= lo and plx - 2 * e <= hi + + +def lpt_match_main(): + out = [] + for name, pos, rad, per, dist, nature in lpt_SOURCES: + ra, dec = lpt_radec(pos) + ring_r = max(60.0, 4 * rad) + rows = core.gaia("SELECT source_id, ra, dec, parallax, parallax_error, pmra, pmdec, phot_g_mean_mag " + "FROM gaiadr3.gaia_source WHERE 1=CONTAINS(POINT('ICRS', ra, dec), " + "CIRCLE('ICRS', %.6f, %.6f, %.6f))" % (ra, dec, (ring_r + 2 * rad) / 3600.0)) + stars = [] + for r in rows: + if not lpt_at_distance(r, dist): + continue + d = float(r["dec"]) + num(r["pmdec"], 0.0) / 3.6e6 * 8.0 + a = float(r["ra"]) + num(r["pmra"], 0.0) / 3.6e6 * 8.0 / math.cos(math.radians(d)) + stars.append((a, d, r)) + hits = [r for a, d, r in stars if sep_arcsec(ra, dec, a, d) <= rad] + ring = [] + for k in range(24): + th = 2 * math.pi * k / 24 + d0 = dec + ring_r / 3600.0 * math.sin(th) + a0 = ra + ring_r / 3600.0 * math.cos(th) / math.cos(math.radians(dec)) + ring.append(sum(sep_arcsec(a0, d0, a, d) <= rad for a, d, _ in stars)) + chance = float(np.mean(ring)) + p = 1.0 - math.exp(-chance) * sum(chance ** j / math.factorial(j) for j in range(len(hits))) if hits else 1.0 + out.append(dict(name=name, ra=ra, dec=dec, radius=rad, period_min=per, dm_kpc=dist, nature=nature, + n=len(hits), chance=chance, p=p, stars=[dict(source_id=str(r["source_id"]), + parallax=num(r["parallax"]), parallax_error=num(r["parallax_error"]), + g=num(r["phot_g_mean_mag"]), sep=sep_arcsec(ra, dec, float(r["ra"]), float(r["dec"]))) + for r in hits])) + print("%-22s %4.0f\" %d star(s)%s against %.2f by chance (p %.2f)%s %s" % ( + name, rad, len(hits), " at the DM distance" if dist else "", chance, p, + "".join(" [plx %.2f+-%.2f G %.1f]" % (s["parallax"] or 0, s["parallax_error"] or 0, s["g"] or 0) + for s in out[-1]["stars"][:6]), nature or "no counterpart"), flush=True) + json.dump(out, open(lpt_OUT, "w"), indent=1) + + +def lpt_record_main(): + d = json.load(open(lpt_OUT)) + explained = [x for x in d if x["nature"]] + hosts = [x for x in d if not x["nature"] and x["n"] and x["p"] < 0.05] + core.record_search( + "lpt_gaia", "Long-period radio transients as beacons on stars", archive="published LPT positions; Gaia DR3", + selection="the twelve LPTs of arXiv:2601.10393 and four ASKAP LPTs of 2026", code=os.path.abspath(__file__), + entry="lpt", n_targets=len(d), params=dict(ring_radii=4, ring_min_arcsec=60, ring_points=24, epoch=2024.0, + parallax_sigma=2), + null_summary="the same count at 24 positions four localisation radii out", + sensitivity="Gaia DR3, G < 21", ledger="Long-period radio transients", + result="%d of %d LPTs given a natural nature by their papers; %d of the rest with a Gaia star at the " + "dispersion-measure distance beyond the chance rate" % (len(explained), len(d), len(hosts))) + core.clear_targets("lpt_gaia") + core.record_targets("lpt_gaia", [dict(target="lpt:" + x["name"], stat=x["n"], p=x["p"], + unit="Gaia stars within the localisation", + vet=("natural" if x["nature"] else None), + note=(x["nature"] or "no counterpart") + "; %.2f by chance" % x["chance"]) + for x in d]) + print("%d LPTs; %d with a natural nature; host candidates: %s" % (len(d), len(explained), + ", ".join(x["name"] for x in hosts) or "none")) + + +def lpt_cli(): + p = argparse.ArgumentParser(prog="seti.py radio_sky lpt") + p.add_argument("mode", choices=("match", "record")) + a = p.parse_args() + lpt_record_main() if a.mode == "record" else lpt_match_main() + + +# -------------------------------------------------------------------------------------------------------------- + +wow_DOC = r"""HI4PI H I at -74 km/s in the two Wow! fields (Mendez et al. 2025): brightness, line limit, column density, nearest emission. + + python -I seti.py radio_sky wow [record] [--v-lsr -74] [--dv 5] [--average-arcmin 10] [--search-deg 3] [--nearest-sigma 5]""" + +wow_FIELDS = (("19h25m02s", 291.2583), ("19h27m55s", 291.9792)) # RA (deg) +wow_DEC = -26.95 +wow_V = -74.0 # km/s, LSR +wow_DV = 5.0 # km/s either side + + +def wow_main(record=False, v_lsr=wow_V, dv=wow_DV, average_arcmin=10.0, search_deg=3.0, nearest_sigma=5.0): + import astropy.units as u + from astropy.coordinates import SkyCoord + sky = hi4pi_Sky() + v = (np.arange(hi4pi_NCH) + 1 - hi4pi_CRPIX) * hi4pi_CDELT + win = (v >= v_lsr - dv) & (v <= v_lsr + dv) + far = (np.abs(v) > 200) & (np.abs(v) < 400) # emission-free valid channels + ch = int(round(hi4pi_channel(v_lsr))) + out = [] + for name, ra in wow_FIELDS: + c = SkyCoord(ra=ra * u.deg, dec=wow_DEC * u.deg, frame="icrs").galactic + glon, b = float(c.l.deg), float(c.b.deg) + pix = sky.near(glon, b, average_arcmin) + spec = np.nanmean([sky.spectrum(p) for p in pix], axis=0) + ok = np.isfinite(spec) + noise = 1.4826 * float(np.nanmedian(np.abs(spec[far & ok] - np.nanmedian(spec[far & ok])))) + main = int(np.nanargmax(np.where(ok, spec, -np.inf))) + cb = math.cos(math.radians(b)) + hits, stack, pix_noise = [], [], [] + for p in sky.near(glon, b, search_deg * 60.0): + s = sky.spectrum(p) + stack.append(s) + # each pixel against its own emission-free noise + f = s[far & np.isfinite(s)] + pn = 1.4826 * float(np.median(np.abs(f - np.median(f)))) + pix_noise.append(pn) + m = float(np.nanmax(s[win])) + if m > nearest_sigma * pn: + pl, pb = sky.lonlat(p) + hits.append((math.hypot(((pl - glon + 180) % 360 - 180) * cb, pb - b), m, pl, pb, float(v[win][np.nanargmax(s[win])]))) + near = min(hits) if hits else None + # mean spectrum of every pixel within the search radius + st = np.nanmean(stack, axis=0) + st_noise = 1.4826 * float(np.nanmedian(np.abs(st[far] - np.nanmedian(st[far])))) + stack_mean = float(np.nanmean(st[win])) + # brightest emission at the velocity within the field's uncertainty + box = [] + for p in sky.near(glon, b, 24.0): + pl, pb = sky.lonlat(p) + q = SkyCoord(l=pl * u.deg, b=pb * u.deg, frame="galactic").icrs + if abs(float(q.dec.deg) - wow_DEC) * 60 <= 20.0 and abs((float(q.ra.deg) - ra) * math.cos(math.radians(wow_DEC))) * 60 <= 3.0: + s = sky.spectrum(p) + box.append((float(np.nanmax(s[win])), float(v[win][np.nanargmax(s[win])]))) + box_max = max(box) if box else (float("nan"), float("nan")) + x = dict(field=name, ra=ra, dec=wow_DEC, l=glon, b=b, n_pix=len(pix), noise_k=noise, t_at_v=float(spec[ch]), + box_pixels=len(box), box_max_k=box_max[0], box_max_v=box_max[1], + peak_window_k=float(np.nanmax(spec[win])), v_peak_window=float(v[win][np.nanargmax(spec[win])]), + n_hi_limit=1.823e18 * 3 * noise * hi4pi_CDELT, v_main=float(v[main]), t_main=float(spec[main]), + pixel_noise_k=float(np.median(pix_noise)), n_pixels_3deg=len(stack), stack_mean_k=stack_mean, stack_noise_k=st_noise, + stack_n_hi=1.823e18 * stack_mean * hi4pi_CDELT * int(win.sum()), + n_emitting_3deg=len(hits), nearest=dict(sep_deg=near[0], t_k=near[1], l=near[2], b=near[3], v=near[4]) if near else None) + out.append(x) + print("%s -26d57m (l %.2f b %.2f): T at %.0f km/s %.3f K against noise %.3f K; peak within +-%.0f km/s %.3f K at %.1f km/s; " + "N(HI) of a one-channel line below %.1e cm-2; the field's emission peaks at %.1f km/s with %.1f K; within the field's " + "+-20 arcmin the brightest pixel at the velocity holds %.3f K at %.1f km/s (%d pixels, single-pixel noise %.3f K); %d of the " + "%d pixels within %g deg emit at the velocity above %g sigma of their own noise, nearest %s; their mean spectrum holds %.4f K " + "over the window (noise %.4f K a channel), N(HI) %.1e cm-2" + % (name, glon, b, v_lsr, x["t_at_v"], noise, dv, x["peak_window_k"], x["v_peak_window"], x["n_hi_limit"], x["v_main"], + x["t_main"], x["box_max_k"], x["box_max_v"], len(box), x["pixel_noise_k"], len(hits), len(stack), search_deg, nearest_sigma, + ("%.2f deg away, %.2f K at %.1f km/s" % (near[0], near[1], near[4])) if near else "none", + stack_mean, st_noise, x["stack_n_hi"])) + json.dump(out, open(core.results("wow_hi4pi.json"), "w"), indent=1) + if record: + core.record_search( + "wow_hi4pi_cloud", "The Wow! signal's cloud", archive="HI4PI HPX tables (LSRK)", release="HI4PI", + selection="the two fields of Arecibo Wow! II (2025)", code=os.path.abspath(__file__), entry="wow", n_targets=2, + params=dict(v_lsr=v_lsr, dv=dv, average_arcmin=average_arcmin, search_deg=search_deg, nearest_sigma=nearest_sigma), + null_summary="the channels beyond +-250 km/s give the noise; each field's own emission at %s km/s" + % " and ".join("%.0f" % x["v_main"] for x in out), + sensitivity="a one-channel (1.29 km/s) line at 3 sigma: N(HI) %s cm-2" % " and ".join("%.1e" % x["n_hi_limit"] for x in out), + ledger="The Wow! signal's cloud", + result="; ".join("%s: %.3f K at %g km/s (noise %.3f K), peak %.3f K within %g km/s, N(HI) below %.1e; within the field's " + "+-20 arcmin the brightest pixel at the velocity holds %.3f K against a single-pixel noise of %.3f K; pixels within " + "%g deg above %g sigma of their own noise at the velocity: %s; the %g deg mean holds %.4f K, N(HI) %.1e" + % (x["field"], x["t_at_v"], v_lsr, x["noise_k"], x["peak_window_k"], dv, x["n_hi_limit"], x["box_max_k"], x["pixel_noise_k"], + search_deg, nearest_sigma, + ("%d, nearest %.2f deg away (%.2f K)" % (x["n_emitting_3deg"], x["nearest"]["sep_deg"], x["nearest"]["t_k"])) if x["nearest"] else "none", + search_deg, x["stack_mean_k"], x["stack_n_hi"]) + for x in out)) + core.clear_targets("wow_hi4pi_cloud") + core.record_targets("wow_hi4pi_cloud", [dict( + target="sky:ra %.4f dec %+.4f" % (x["ra"], x["dec"]), stat=x["t_at_v"], upper_limit=x["n_hi_limit"], + unit="K at %g km/s; N(HI) cm-2 of a one-channel line at 3 sigma" % v_lsr, + note="field %s; the field's emission peaks at %.1f km/s (%.1f K); nearest emission at the velocity %s" + % (x["field"], x["v_main"], x["t_main"], ("%.2f deg away" % x["nearest"]["sep_deg"]) if x["nearest"] else "none within %g deg" % search_deg)) + for x in out]) + print("recorded") + + +polceiling_DOC = r"""NVSS sources polarised above the 72 per cent synchrotron ceiling at 3 sigma, vetted by size, pulsars, bright neighbours and SIMBAD, against a Rician null. + + python -I seti.py radio_sky polceiling fetch + python -I seti.py radio_sky polceiling analyse + python -I seti.py radio_sky polceiling record""" + +polceiling_ROOT = os.environ.get("POLCEILING_ROOT", core.data("polceiling")) +polceiling_OUT = "polarisation_ceiling.json" +polceiling_SMIN, polceiling_PMIN, polceiling_CEILING, polceiling_BRIGHT = 10.0, 6.0, 0.72, 500.0 + + +def polceiling_fetch(): + """NVSS sources above 10 mJy with polarised flux above 6 mJy.""" + from astroquery.vizier import Vizier + os.makedirs(polceiling_ROOT, exist_ok=True) + p = os.path.join(polceiling_ROOT, "nvss_polarised.json") + if os.path.exists(p): + print("have", p) + return + v = Vizier(columns=["NVSS", "RAJ2000", "DEJ2000", "S1.4", "e_S1.4", "MajAxis", "MinAxis", "l_MajAxis", "polFlux", "e_polFlux", "polPA", "resFlux"], + column_filters={"S1.4": ">%g" % polceiling_SMIN, "polFlux": ">%g" % polceiling_PMIN}, row_limit=-1, timeout=1800) + t = v.get_catalogs("VIII/65/nvss")[0] + rows = [] + for r in t: + rows.append({c: (None if np.ma.is_masked(r[c]) else (r[c].item() if hasattr(r[c], "item") else str(r[c]))) for c in t.colnames}) + json.dump(rows, open(p, "w"), default=str) + print("%d sources" % len(rows)) + + +def polceiling_deg(v, hours): + """Degrees from a sexagesimal string or number.""" + if isinstance(v, (int, float)): + return float(v) + parts = str(v).replace(":", " ").split() + sign = -1.0 if parts[0].strip().startswith("-") else 1.0 + d = abs(float(parts[0])) + (float(parts[1]) if len(parts) > 1 else 0.0) / 60 + (float(parts[2]) if len(parts) > 2 else 0.0) / 3600 + return d * 15.0 if hours else sign * d + + +def polceiling_analyse(): + rows = json.load(open(os.path.join(polceiling_ROOT, "nvss_polarised.json"))) + src = [] + for r in rows: + S, eS, P, eP = (num(r.get(k)) for k in ("S1.4", "e_S1.4", "polFlux", "e_polFlux")) + if not S or not P or not eP: + continue + pd = math.sqrt(max(P ** 2 - eP ** 2, 0.0)) + low = (pd - 3 * eP) / (S + 3 * (eS or 0.0)) + src.append(dict(name=r["NVSS"], ra=polceiling_deg(r["RAJ2000"], True), dec=polceiling_deg(r["DEJ2000"], False), S=S, eS=eS, P=P, eP=eP, p=pd / S, p_low=low, + maj=num(r.get("MajAxis")), unresolved=str(r.get("l_MajAxis") or "").strip() == "<", pa=num(r.get("polPA")), res=num(r.get("resFlux")))) + cands = [s for s in src if s["p_low"] > polceiling_CEILING] + # Rician null: every source at the ceiling with its own errors + rng = np.random.default_rng(6) + false = 0 + for s in src: + P0 = polceiling_CEILING * s["S"] + Po = np.hypot(P0 + rng.normal(0, s["eP"], 200), rng.normal(0, s["eP"], 200)) + pd = np.sqrt(np.maximum(Po ** 2 - s["eP"] ** 2, 0)) + false += float(np.mean((pd - 3 * s["eP"]) / (s["S"] + 3 * (s["eS"] or 0.0)) > polceiling_CEILING)) + print("%d NVSS sources above %.0f mJy with polarised flux above %.0f mJy: debiased fraction median %.3f, 99th percentile %.3f; %d with the lower bound above %.2f (the errors alone would give %.2f at the ceiling)" % ( + len(src), polceiling_SMIN, polceiling_PMIN, np.median([s["p"] for s in src]), np.percentile([s["p"] for s in src], 99), len(cands), polceiling_CEILING, false)) + if cands: + pulsars = pulsars_pulsars() + pra, pdec = np.array([p["ra"] for p in pulsars]), np.array([p["dec"] for p in pulsars]) + for s in cands: + sep = np.degrees(np.arccos(np.clip(np.sin(np.radians(pdec)) * math.sin(math.radians(s["dec"])) + np.cos(np.radians(pdec)) * math.cos(math.radians(s["dec"])) * np.cos(np.radians(pra - s["ra"])), -1, 1))) * 3600 + i = int(np.argmin(sep)) + s["pulsar"] = dict(name=pulsars[i]["name"], sep=float(sep[i]), s1400=pulsars[i]["s1400"]) if sep[i] < max(30.0, pulsars[i]["err"]) else None + # polarised flux at or above the total is the field's diffuse emission + s["beyond_unity"] = s["p"] >= 0.95 + if s["beyond_unity"]: + s["bright"], s["simbad"] = [], [] + print(" %s (%.5f %+.5f): S %.1f +- %.1f mJy, P %.1f +- %.1f, debiased %.2f, %s: polarised flux at or above the total, the field's diffuse polarised emission" % ( + s["name"], s["ra"], s["dec"], s["S"], s["eS"] or 0, s["P"], s["eP"], s["p"], "unresolved" if s["unresolved"] else "size %s arcsec" % s["maj"])) + continue + # bright neighbours within 10 arcmin + try: + near = core.tap("vizier", 'SELECT "NVSS", "S1.4" FROM "VIII/65/nvss" WHERE "S1.4" > %g AND 1 = CONTAINS(POINT(\'ICRS\', "RAJ2000", "DEJ2000"), CIRCLE(\'ICRS\', %.6f, %.6f, %.4f))' + % (polceiling_BRIGHT, s["ra"], s["dec"], 10.0 / 60), timeout=120) + s["bright"] = [(x["NVSS"], num(x["S1.4"])) for x in near if x["NVSS"] != s["name"]] + except Exception as e: + s["bright"] = "query failed: %s" % str(e)[:60] + try: + sb = core.simbad("SELECT main_id, otype, sp_type FROM basic WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.5f)) = 1" % (s["ra"], s["dec"], 30.0 / 3600)) + s["simbad"] = [(x["main_id"], x["otype"]) for x in sb] + except Exception as e: + s["simbad"] = "query failed: %s" % str(e)[:60] + print(" %s (%.5f %+.5f): S %.1f +- %.1f mJy, P %.1f +- %.1f, debiased %.2f, lower bound %.2f, %s; pulsar %s; bright within 10 arcmin %s; SIMBAD %s" % ( + s["name"], s["ra"], s["dec"], s["S"], s["eS"] or 0, s["P"], s["eP"], s["p"], s["p_low"], "unresolved" if s["unresolved"] else "size %s arcsec" % s["maj"], + ("%s at %.0f arcsec" % (s["pulsar"]["name"], s["pulsar"]["sep"])) if s["pulsar"] else "none", s["bright"], s["simbad"])) + json.dump(dict(n=len(src), n_cand=len(cands), false=false, cands=cands, params=dict(smin=polceiling_SMIN, pmin=polceiling_PMIN, ceiling=polceiling_CEILING, bright=polceiling_BRIGHT)), + open(core.results(polceiling_OUT), "w"), indent=0, default=str) + + +def polceiling_record(): + d = json.load(open(core.results(polceiling_OUT))) + cands = d["cands"] + core.record_search( + "nvss_polarisation_ceiling", "Linear polarisation above the synchrotron ceiling", archive="NVSS (VIII/65) through VizieR; ATNF pulsar catalogue; SIMBAD", release="NVSS", + selection="sources above %.0f mJy with polarised flux above %.0f mJy (%d)" % (d["params"]["smin"], d["params"]["pmin"], d["n"]), code=os.path.abspath(__file__), entry="polceiling", + n_targets=d["n"], params=d["params"], null_summary="every source placed at the ceiling with its own Rician errors: %.2f false positives" % d["false"], + sensitivity="a debiased polarised fraction whose lower bound at three sigma exceeds %.2f" % d["params"]["ceiling"], ledger="Linear polarisation above the synchrotron ceiling", + result="%d sources with the lower bound above %.2f: %d with the polarised flux at or above the total, the field's diffuse polarised emission, %d at known pulsars, %d within 10 arcmin of a source above %.0f mJy, %d unresolved%s" % ( + len(cands), d["params"]["ceiling"], sum(1 for s in cands if s.get("beyond_unity")), sum(1 for s in cands if s.get("pulsar")), sum(1 for s in cands if isinstance(s.get("bright"), list) and s["bright"]), d["params"]["bright"], + sum(1 for s in cands if s["unresolved"]), ("; " + "; ".join("%s %.2f (%s)" % (s["name"], s["p"], ("pulsar " + s["pulsar"]["name"]) if s.get("pulsar") else ("beyond unity" if s.get("beyond_unity") else ("beside %s" % s["bright"][0][0] if isinstance(s.get("bright"), list) and s["bright"] else "unexplained"))) for s in cands[:12])) if cands else "")) + core.clear_targets("nvss_polarisation_ceiling") + core.record_targets("nvss_polarisation_ceiling", [dict(target="nvss:%s" % s["name"], stat=s["p_low"], unit="lower bound of the debiased polarised fraction", + vet=("pulsar %s" % s["pulsar"]["name"]) if s.get("pulsar") else ("polarised flux at or above the total: the field's diffuse polarised emission" if s.get("beyond_unity") else (("bright source within 10 arcmin") if isinstance(s.get("bright"), list) and s["bright"] else None)), + note="S %.1f mJy, P %.1f +- %.1f, debiased %.2f, %s" % (s["S"], s["P"], s["eP"], s["p"], "unresolved" if s["unresolved"] else "resolved")) for s in cands]) + print("recorded %d candidates" % len(cands)) + + +def polceiling_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": polceiling_fetch, "analyse": polceiling_analyse, "record": polceiling_record}[mode]() + + +gleamx_DOC = r"""Step edges in GLEAM-X sub-band spectra: top-0.1-per-cent chi-square gain of a within-setting step over a curved power law, unshared by neighbours. + + python -I seti.py radio_sky gleamx analyse + python -I seti.py radio_sky gleamx record""" + +gleamx_ROOT = os.environ.get("GLEAMX_ROOT", core.data("gleamx")) +gleamx_OUT = "gleamx_edges.json" +gleamx_BANDS = ("076", "084", "092", "099", "107", "115", "122", "130", "143", "151", "158", "166", "174", "181", "189", "197", "204", "212", "220", "227") +gleamx_SETTINGS = (0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4) # five 30 MHz settings +gleamx_SNR, gleamx_STEP, gleamx_TAIL = 20.0, 0.30, 0.001 + + +def gleamx_fit(x, y, w, step_at=None): + """Weighted fit of a + b x + c x^2 (+ d past step_at): chi-square and coefficients.""" + cols = [np.ones_like(x), x, x * x] + if step_at is not None: + cols.append((np.arange(len(x)) > step_at).astype(float)) + A = np.column_stack(cols) * np.sqrt(w)[:, None] + c, *_ = np.linalg.lstsq(A, y * np.sqrt(w), rcond=None) + r = y * np.sqrt(w) - A @ c + return float(np.sum(r * r)), c + + +def gleamx_analyse(): + from astropy.table import Table + from scipy.spatial import cKDTree + t = Table.read(os.path.join(gleamx_ROOT, "gleamx_dr1.ecsv"), format="ascii.ecsv") + if "Fint092" not in t.colnames: + # 92 MHz columns fetched separately and joined + side = Table.read(os.path.join(gleamx_ROOT, "gleamx_dr1_092.ecsv"), format="ascii.ecsv") + look = {str(n): (s, e) for n, s, e in zip(side["GLEAM-X"], side["Fpint092"], side["e_Fpint092"])} + t["Fint092"] = [float(look.get(str(n), (np.nan, np.nan))[0]) if look.get(str(n), (None,))[0] is not None else np.nan for n in t["GLEAM-X"]] + t["e_Fint092"] = [float(look.get(str(n), (np.nan, np.nan))[1]) if look.get(str(n), (None, None))[1] is not None else np.nan for n in t["GLEAM-X"]] + nu = np.log10(np.array([float(b) for b in gleamx_BANDS])) + S = np.column_stack([np.array(t["Fint%s" % b], float) for b in gleamx_BANDS]) + E = np.column_stack([np.array(t["e_Fint%s" % b], float) for b in gleamx_BANDS]) + wide, e_wide = np.array(t["Fintwide"], float), np.array(t["e_Fintwide"], float) + ra, dec = np.array(t["RAJ2000"], float), np.array(t["DEJ2000"], float) + names = [str(x) for x in t["GLEAM-X"]] + good = np.isfinite(wide) & np.isfinite(e_wide) & (wide / np.maximum(e_wide, 1e-9) > gleamx_SNR) + print("%d sources, %d above %.0f sigma in the wide band" % (len(t), good.sum(), gleamx_SNR), flush=True) + inner = [k for k in range(19) if gleamx_SETTINGS[k] == gleamx_SETTINGS[k + 1]] + rows = [] + for i in np.where(good)[0]: + s, e = S[i], E[i] + ok = np.isfinite(s) & np.isfinite(e) & (s > 0) & (e > 0) + if ok.sum() < 16: + continue + y = np.log10(s[ok]) + w = (s[ok] / e[ok]) ** 2 / (np.log(10) ** 2) + x = nu[ok] + chi0, c0 = gleamx_fit(x, y, w) + best = (0.0, None, 0.0) + idx = np.where(ok)[0] + for k in inner: + # step after band k in kept-band index + pos = np.searchsorted(idx, k, side="right") - 1 + if pos < 2 or pos > len(idx) - 4: + continue + chi, c = gleamx_fit(x, y, w, step_at=pos) + if chi0 - chi > best[0]: + best = (chi0 - chi, k, float(10 ** c[3] - 1)) + resid = y - (c0[0] + c0[1] * x + c0[2] * x * x) + rows.append(dict(i=int(i), name=names[i], ra=ra[i], dec=dec[i], wide=float(wide[i]), snr=float(wide[i] / e_wide[i]), n=int(ok.sum()), chi_curved=chi0, + gain=best[0], boundary=best[1], step=best[2], scatter=float(1.4826 * np.median(np.abs(resid))), alpha=float(c0[1]), curv=float(c0[2]))) + gains = np.array([r["gain"] for r in rows]) + thr = float(np.quantile(gains, 1 - gleamx_TAIL)) + cand = [r for r in rows if r["gain"] >= thr and abs(r["step"]) >= gleamx_STEP and abs(np.log10(1 + r["step"])) >= 3 * r["scatter"]] + # the same step at the boundary in the twenty nearest sources + xyz = np.stack([np.cos(np.radians(dec)) * np.cos(np.radians(ra)), np.cos(np.radians(dec)) * np.sin(np.radians(ra)), np.sin(np.radians(dec))], axis=1) + fitted = np.array([r["i"] for r in rows]) + tree = cKDTree(xyz[fitted]) + all_tree = cKDTree(xyz) + for r in cand: + _, nb = tree.query(xyz[r["i"]], k=21) + steps = [] + for j in nb[1:]: + ii = fitted[j] + s, e = S[ii], E[ii] + ok = np.isfinite(s) & np.isfinite(e) & (s > 0) & (e > 0) + idx = np.where(ok)[0] + pos = np.searchsorted(idx, r["boundary"], side="right") - 1 + if ok.sum() < 16 or pos < 2 or pos > len(idx) - 4: + continue + y = np.log10(s[ok]) + w = (s[ok] / e[ok]) ** 2 / (np.log(10) ** 2) + steps.append(10 ** gleamx_fit(nu[ok], y, w, step_at=pos)[1][3] - 1) + steps = np.array(steps) + r["neighbour_step_median"] = float(np.median(steps)) if len(steps) else None + r["neighbour_step_scatter"] = float(1.4826 * np.median(np.abs(steps - np.median(steps)))) if len(steps) else None + r["shared"] = bool(len(steps) > 5 and abs(r["step"] - np.median(steps)) < 3 * max(r["neighbour_step_scatter"], 0.02)) + r["neighbour_steps"] = [float(x) for x in steps] + # a second source within two beams splits and merges with the beam + dd, jj = all_tree.query(xyz[r["i"]], k=2) + other = int(jj[1]) + r["companion_arcsec"] = float(2 * np.degrees(np.arcsin(dd[1] / 2)) * 3600) + r["companion_jy"] = float(wide[other]) if np.isfinite(wide[other]) else None + r["blend"] = bool(r["companion_arcsec"] < 150 and (r["companion_jy"] or 0) > 0.2 * r["wide"]) + left = [r for r in cand if not r["shared"] and not r["blend"]] + print("%d fitted; gain top %.1f per cent threshold %.1f; %d candidates with steps above %.0f per cent, %d shared with their neighbours at the same boundary, %d blended with a second source within two beams, %d left" % ( + len(rows), 100 * gleamx_TAIL, thr, len(cand), 100 * gleamx_STEP, sum(r["shared"] for r in cand), sum(r["blend"] for r in cand), len(left))) + for r in sorted(cand, key=lambda r: -r["gain"])[:25]: + print(" %s (%.4f %+.4f): %.2f Jy at %.0f sigma, step %+.0f per cent after %s MHz (gain %.0f, band scatter %.3f dex, alpha %.2f); neighbours' step there %s +- %s; nearest source %.0f arcsec at %s Jy%s%s" % ( + r["name"], r["ra"], r["dec"], r["wide"], r["snr"], 100 * r["step"], gleamx_BANDS[r["boundary"]], r["gain"], r["scatter"], r["alpha"], + "%.2f" % r["neighbour_step_median"] if r["neighbour_step_median"] is not None else "-", "%.2f" % r["neighbour_step_scatter"] if r["neighbour_step_scatter"] is not None else "-", + r["companion_arcsec"], "%.2f" % r["companion_jy"] if r["companion_jy"] is not None else "-", "; shared" if r["shared"] else "", "; blend" if r["blend"] else "")) + json.dump(dict(n=len(t), n_fitted=len(rows), threshold=thr, n_cand=len(cand), n_left=len(left), cands=cand, params=dict(snr=gleamx_SNR, step=gleamx_STEP, tail=gleamx_TAIL), + gain_percentiles={str(p): float(np.percentile(gains, p)) for p in (50, 90, 99, 99.9)}), open(core.results(gleamx_OUT), "w"), indent=0) + + +def gleamx_record(): + d = json.load(open(core.results(gleamx_OUT))) + left = [r for r in d["cands"] if not r["shared"] and not r["blend"]] + core.record_search( + "gleamx_edges", "Brick-wall spectral edges in GLEAM-X", archive="GLEAM-X DR1 (VizieR VIII/110), twenty sub-bands 72-231 MHz", release="GLEAM-X DR1", + selection="%d sources above %.0f sigma in the wide band with sixteen or more sub-bands (%d fitted)" % (d["n_fitted"], d["params"]["snr"], d["n_fitted"]), code=os.path.abspath(__file__), entry="gleamx", + n_targets=d["n_fitted"], params=d["params"], null_summary="the chi-square gain of the best within-setting step over a curved power law across the sample: median %.1f, 99th percentile %.1f, 99.9th %.1f" % ( + d["gain_percentiles"]["50"], d["gain_percentiles"]["99"], d["gain_percentiles"]["99.9"]), + sensitivity="a step above %.0f per cent of the flux and three times the band scatter within one observing setting" % (100 * d["params"]["step"]), ledger="Brick-wall spectral edges in GLEAM-X", + result="%d candidates in the top %.1f per cent of gains with steps above %.0f per cent: %d shared with their neighbours at the same boundary, %d blended with a second source within two beams, %d left%s" % ( + d["n_cand"], 100 * d["params"]["tail"], 100 * d["params"]["step"], sum(r["shared"] for r in d["cands"]), sum(r["blend"] for r in d["cands"]), len(left), + (": " + "; ".join("%s (%+.0f per cent after %s MHz)" % (r["name"], 100 * r["step"], gleamx_BANDS[r["boundary"]]) for r in left[:8])) if left else "")) + core.clear_targets("gleamx_edges") + core.record_targets("gleamx_edges", [dict(target="gleamx:%s" % r["name"], stat=r["gain"], unit="chi-square gain of a step over a curved power law", + vet="shared with neighbours" if r["shared"] else ("a second source %.0f arcsec away at %.2f Jy inside the low-frequency beam" % (r["companion_arcsec"], r["companion_jy"] or 0) if r["blend"] else None), + note="step %+.0f per cent after %s MHz, %.2f Jy at %.0f sigma" % (100 * r["step"], gleamx_BANDS[r["boundary"]], r["wide"], r["snr"])) for r in d["cands"]]) + print("recorded %d candidates" % d["n_cand"]) + + +def gleamx_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": gleamx_analyse, "record": gleamx_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- +# pulsars that hold their period, and pulsars on nearby stars + +spinup_DOC = r"""Pulsars that hold their period: isolated pulsars of the ATNF catalogue (VizieR B/psr) outside globular clusters and the Magellanic Clouds whose measured period derivative is zero or negative, a beacon kept at a constant period, each derivative read against its error; those whose derivative is negative only once corrected for the Galactic acceleration and the Shklovskii term at their DM distance (P1I) are counted beside them. + + python -I seti.py radio_sky spinup [record] [--sigma 3]""" + + +def spinup_main(record=False, sigma=3.0): + rows = catalogues.pulsars() + iso = [r for r in rows if catalogues.pulsar_isolated(r) and catalogues.pulsar_in_field(r)] + measured = [r for r in iso if num(r["P1"]) is not None] + out, corrected = [], [] + for r in measured: + p1, e1, p1i = num(r["P1"]), num(r["e_P1"]), num(r["P1I"]) + if p1 <= 0: + z = p1 / e1 if e1 else None + out.append(dict(psr=r["PSRJ"], P0=num(r["P0"]), P1=p1, e_P1=e1, P1I=p1i, z=z, dm=num(r["DM"]), dist=num(r["Dist"]), + assoc=(r["Assoc"] or "").strip())) + elif p1i is not None and p1i <= 0: + corrected.append(r["PSRJ"]) + held = [o for o in out if o["z"] is not None and o["z"] < -sigma] + print("%d pulsars, %d isolated in the field, %d of them with a period derivative; zero or negative as measured: %d; below zero at 3 " + "sigma: %d; negative only once corrected at the DM distance: %d (%s)" % (len(rows), len(iso), len(measured), len(out), len(held), + len(corrected), ", ".join(corrected))) + for o in out: + print(" %s: P %.4f s, P1 %s +- %s (%s sigma), P1I %s, DM %s, %s kpc %s" % ( + o["psr"], o["P0"] or 0, o["P1"], o["e_P1"], "%.1f" % o["z"] if o["z"] is not None else "-", o["P1I"], o["dm"], o["dist"], o["assoc"])) + json.dump(out, open(core.results("spinup_pulsars.json"), "w"), indent=1) + if record: + core.record_search( + "atnf_spinup_pulsars", "Pulsars that hold their period", archive="ATNF pulsar catalogue (VizieR B/psr)", + selection="isolated pulsars outside globular clusters and the Magellanic Clouds with a period derivative: %d" % len(measured), + code=os.path.abspath(__file__), entry="spinup", n_targets=len(measured), n_unit="pulsars", + params=dict(sigma=sigma), null_summary="each derivative's own error", + sensitivity="an isolated field pulsar whose period derivative lies below zero at 3 sigma", + ledger="Pulsars that hold their period", + result="%d with a measured derivative zero or negative, %d below zero at 3 sigma; %d more negative only once corrected at " + "the DM distance (%s)" % (len(out), len(held), len(corrected), ", ".join(corrected))) + core.clear_targets("atnf_spinup_pulsars") + core.record_targets("atnf_spinup_pulsars", [dict( + target="psr:%s" % o["psr"], stat=o["z"], unit="period derivative over its error", + vet="not-measured" if o["z"] is None or o["z"] > -sigma else None, + note="P1 %s +- %s, P1I %s" % (o["P1"], o["e_P1"], o["P1I"])) for o in out]) + print("recorded") + + +psrstar_DOC = r"""Pulsars on nearby stars: every ATNF pulsar (VizieR B/psr) matched to Gaia DR3 within 2 arcsec by CDS XMatch, the matches within 200 pc at 5 sigma in parallax, a beacon placed at a star, read for the pulsar's own binary companion and for the crowding of globular-cluster fields, against the matches beyond 200 pc as the chance rate of the fields. + + python -I seti.py radio_sky psrstar [record] [--radius-arcsec 2] [--plx-mas 5] [--plx-sigma 5]""" + + +def psrstar_main(record=False, radius_arcsec=2.0, plx_mas=5.0, plx_sigma=5.0): + rows = catalogues.pulsars() + up, by = [], {} + for r in rows: + ra, de = num(r["RAJ2000"]), num(r["DEJ2000"]) + if ra is not None and de is not None: + up.append(dict(source_id=r["PSRJ"], ra=ra, dec=de)) + by[r["PSRJ"]] = r + m = core.xmatch(up, "I/355/gaiadr3", radius_arcsec) + near = [x for x in m if (num(x.get("Plx")) or 0) > plx_mas and (num(x.get("Plx")) or 0) > plx_sigma * (num(x.get("e_Plx")) or 1e9)] + out = [] + for x in near: + r = by[x["source_id"]] + vet = [] + if not catalogues.pulsar_in_field(r): + # a globular cluster lies kiloparsecs away: a star within 200 pc is in front of it + vet.append("chance-rate") + elif not catalogues.pulsar_isolated(r): + vet.append("companion") + if (r.get("BINCOMP") or "").strip()[:2] in ("He", "CO", "ON"): + vet.append("white-dwarf") + out.append(dict(psr=r["PSRJ"], gaia=x.get("Source"), plx=num(x.get("Plx")), G=num(x.get("Gmag")), sep=float(x["angDist"]), + binary=(r.get("Binary") or "").strip(), comp=(r.get("BINCOMP") or "").strip(), assoc=(r.get("Assoc") or "").strip(), vet=vet)) + print("%d pulsars, %d Gaia sources within 2 arcsec, %d within 200 pc at 5 sigma" % (len(up), len(m), len(out))) + for o in out: + print(" %s on Gaia DR3 %s: %.2f mas, G %.1f, %.2f arcsec; binary %s, companion %s; %s -> %s" % ( + o["psr"], o["gaia"], o["plx"], o["G"] or 0, o["sep"], o["binary"] or "-", o["comp"] or "-", o["assoc"][:50], o["vet"] or "unexplained")) + json.dump(out, open(core.results("pulsars_on_stars.json"), "w"), indent=1) + if record: + core.record_search( + "atnf_pulsars_on_stars", "Pulsars on nearby stars", archive="ATNF pulsar catalogue (VizieR B/psr); Gaia DR3 (I/355) by CDS XMatch", + selection="every catalogued pulsar position against Gaia DR3 within 2 arcsec", code=os.path.abspath(__file__), entry="psrstar", + n_targets=len(up), n_unit="pulsars", params=dict(radius_arcsec=radius_arcsec, plx_mas=plx_mas, plx_sigma=plx_sigma), + null_summary="%d Gaia sources within 2 arcsec of %d pulsars, nearly all background stars of the Galactic plane" % (len(m), len(up)), + sensitivity="a star within 200 pc inside 2 arcsec of a pulsar's position", ledger="Pulsars on nearby stars", + result="%d within 200 pc: %s" % (len(out), "; ".join("%s (%s)" % (o["psr"], ", ".join(o["vet"]) or "unexplained") for o in out))) + core.clear_targets("atnf_pulsars_on_stars") + core.record_targets("atnf_pulsars_on_stars", [dict( + target="psr:%s" % o["psr"], stat=o["sep"], unit="arcsec to the Gaia source", vet="; ".join(o["vet"]) or None, + note="Gaia DR3 %s at %.2f mas, G %.1f" % (o["gaia"], o["plx"], o["G"] or 0)) for o in out]) + print("recorded") + + +psrclock_DOC = r"""Pulsars on one clock: pairs of ATNF pulsars (VizieR B/psr) with frequencies measured to 1e-7 and first derivatives, more than 1 deg apart and not in one globular cluster, whose rotation frequencies carried to MJD 56000 agree to 1e-6, a beacon period shared between sites, against the pairs within 1e-4 scaled to the tolerance, since a smooth distribution of frequencies gives pairs in proportion to it; catalogue periods given to a few digits pile onto round values and are left out. + + python -I seti.py radio_sky psrclock [record] [--tolerance 1e-6] [--precision 1e-7] [--epoch-mjd 56000] [--min-sep-deg 1]""" + +def psrclock_main(record=False, tolerance=1e-6, precision=1e-7, epoch_mjd=56000.0, min_sep_deg=1.0): + rows = catalogues.pulsars("PSRJ, RA2000, DE2000, P0, e_P0, F0, e_F0, F1, PEpoch, Assoc") + good = [] + for r in rows: + f0, f1, ep = num(r["F0"]), num(r["F1"]), num(r["PEpoch"]) + ef = num(r["e_F0"]) + if f0 is None and num(r["P0"]): + f0 = 1.0 / num(r["P0"]) + ef = num(r["e_P0"]) / num(r["P0"]) ** 2 if num(r["e_P0"]) else None + if f0 is None or f0 <= 0 or num(r["RA2000"]) is None or not ef or ef > precision * f0 or f1 is None or ep is None: + continue + f = f0 + f1 * (epoch_mjd - ep) * 86400.0 + good.append(dict(psr=r["PSRJ"], f=f, ef=ef, f1=f1, ra=num(r["RA2000"]), dec=num(r["DE2000"]), gc=(r["Assoc"] or "").split("GC:")[1].split(",")[0] + if "GC:" in (r["Assoc"] or "") else None)) + good.sort(key=lambda x: x["f"]) + t1, t2, t3 = tolerance, 10 * tolerance, 100 * tolerance + counts, pairs = {t1: 0, t2: 0, t3: 0}, [] + for i, a in enumerate(good): + for b in good[i + 1:]: + d = (b["f"] - a["f"]) / a["f"] + if d > t3: + break + if (a["gc"] and a["gc"] == b["gc"]) or core.sep_arcsec(a["ra"], a["dec"], b["ra"], b["dec"]) < 3600.0 * min_sep_deg: + continue + for t in counts: + counts[t] += d < t + if d < t2: + e = np.hypot(a["ef"] or 0, b["ef"] or 0) + pairs.append(dict(a=a["psr"], b=b["psr"], fa=a["f"], fb=b["f"], frac=d, sigma=(b["f"] - a["f"]) / e if e > 0 else None, + carried=bool(a["f1"] and b["f1"]))) + expect = counts[t3] / 100.0 + print("%d pulsars with a frequency; pairs more than %g deg apart outside one cluster within %g: %d, %g: %d, %g: %d against %.2f " + "scaled" % (len(good), min_sep_deg, t3, counts[t3], t2, counts[t2], t1, counts[t1], expect)) + for x in sorted(pairs, key=lambda x: x["frac"]): + print(" %s %.9f Hz and %s %.9f Hz: %.1e apart, %s combined sigma%s" % ( + x["a"], x["fa"], x["b"], x["fb"], x["frac"], "%.0f" % x["sigma"] if x["sigma"] is not None else "-", "" if x["carried"] else ", not both carried")) + json.dump(dict(n=len(good), counts={str(k): v for k, v in counts.items()}, expect=expect, pairs=pairs), open(core.results("pulsar_clocks.json"), "w"), indent=1) + if record: + core.record_search( + "atnf_shared_clocks", "Pulsars on one clock", archive="ATNF pulsar catalogue (VizieR B/psr)", + selection="pulsars with frequencies measured to 1e-7 and first derivatives: %d" % len(good), code=os.path.abspath(__file__), entry="psrclock", + n_targets=len(good), n_unit="pulsars", params=dict(tolerance=tolerance, precision=precision, epoch_mjd=epoch_mjd, min_sep_deg=min_sep_deg), + null_summary="pairs within %g (%d) scaled to %g: %.2f" % (t3, counts[t3], t1, expect), + sensitivity="two pulsars more than %g deg apart on one frequency to %g at a common epoch" % (min_sep_deg, t1), ledger="Pulsars on one clock", + result="%d pairs within %g against %.2f; %d within %g" % (counts[t1], t1, expect, counts[t2], t2)) + core.clear_targets("atnf_shared_clocks") + core.record_targets("atnf_shared_clocks", [dict( + target="psr:%s" % x["a"], stat=x["frac"], unit="fractional frequency difference", + vet="chance-rate" if counts[t1] <= expect + 3 * np.sqrt(max(expect, 1)) else None, + note="with %s, %s combined sigma" % (x["b"], "%.0f" % x["sigma"] if x["sigma"] is not None else "-")) for x in pairs]) + print("recorded") + + +frbstars_DOC = r"""Fast radio bursts at nearby stars: the CHIME/FRB Catalog 1 localisations (VizieR J/ApJS/257/59) against the sources of the Gaia Catalogue of Nearby Stars within 10 pc, a burst sent from a neighbour, each star inside a burst's 2-sigma ellipse counted against the same count with every burst moved by 5, 10, 15 and 20 deg in right ascension either way. + + python -I seti.py radio_sky frbstars [record] [--plx-mas 100] [--ellipse-sigma 2] [--shifts-deg 5 10 15 20]""" + +def frbstars_inside(frbs, stars, shift=0.0, sigma=2.0): + """The (burst, star, separation in deg) triples with the star inside the burst's SIGMA-sigma error ellipse, the bursts moved SHIFT deg in right ascension.""" + out = [] + for b in frbs: + for s in stars: + da = ((s["ra"] - b["ra"] - shift + 180.0) % 360.0) - 180.0 + dd = s["dec"] - b["dec"] + if (da / b["era"]) ** 2 + (dd / b["edec"]) ** 2 < sigma ** 2: + out.append((b["name"], s["source_id"], float(np.hypot(da * np.cos(np.radians(b["dec"])), dd)))) + return out + + +def frbstars_main(record=False, plx_mas=100.0, ellipse_sigma=2.0, shifts_deg=[5.0, 10.0, 15.0, 20.0]): + rows = catalogues.frb_catalog1("Name, RAJ2000, e_RAJ2000, DEJ2000, e_DEJ2000, DM, DMeYMW16", one_per_burst=False) + frbs = {} + for r in rows: + if r["Name"] not in frbs and num(r["e_RAJ2000"]) and num(r["e_DEJ2000"]): + frbs[r["Name"]] = dict(name=r["Name"], ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), era=num(r["e_RAJ2000"]), edec=num(r["e_DEJ2000"]), + dm=num(r["DM"])) + frbs = list(frbs.values()) + stars = catalogues.gcns("source_id, ra, dec, parallax", "parallax > %g" % plx_mas) + stars = [dict(source_id=s["source_id"], ra=float(s["ra"]), dec=float(s["dec"]), plx=float(s["parallax"])) for s in stars] + hits = frbstars_inside(frbs, stars, sigma=ellipse_sigma) + shifts = [s for k in shifts_deg for s in (k, -k)] + null = [len(frbstars_inside(frbs, stars, s, ellipse_sigma)) for s in shifts] + area = float(np.sum([np.pi * ellipse_sigma ** 2 * b["era"] * b["edec"] * np.cos(np.radians(b["dec"])) for b in frbs])) + print("%d bursts (2-sigma ellipses covering %.1f deg2 together), %d sources within 10 pc; inside an ellipse: %d against %.2f with the bursts " + "moved (%s)" % (len(frbs), area, len(stars), len(hits), float(np.mean(null)), null)) + for h in hits: + print(" %s holds Gaia DR3 %s, %.2f deg from the burst's position" % h) + json.dump(dict(n_frb=len(frbs), n_star=len(stars), area_deg2=area, hits=hits, null=null), open(core.results("frb_nearby_stars.json"), "w"), indent=1) + if record: + core.record_search( + "chime_frb_nearby_stars", "Fast radio bursts at nearby stars", archive="CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59); Gaia Catalogue of " + "Nearby Stars", selection="%d bursts; %d sources within 10 pc" % (len(frbs), len(stars)), code=os.path.abspath(__file__), + entry="frbstars", n_targets=len(frbs), n_unit="bursts", params=dict(ellipse_sigma=ellipse_sigma, shifts_deg=shifts, plx_mas=plx_mas), + null_summary="the bursts moved in right ascension: %s" % null, + sensitivity="a burst of CHIME's first catalogue whose 2-sigma ellipse holds a star within 10 pc", ledger="Fast radio bursts at nearby stars", + result="%d stars inside an ellipse against %.2f with the bursts moved" % (len(hits), float(np.mean(null)))) + core.clear_targets("chime_frb_nearby_stars") + core.record_targets("chime_frb_nearby_stars", [dict( + target="gaia_dr3:%s" % h[1], stat=h[2], unit="deg from the burst's position", + vet="chance-rate" if len(hits) <= np.mean(null) + 3 * np.sqrt(max(np.mean(null), 1)) else None, note="inside %s" % h[0]) for h in hits]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- +# pulse shapes, dispersions, clocks and copies among pulsars and bursts + + +def psr_all(): + """Every pulsar with the timing, width, luminosity and orbit columns the catalogue-wide tests read.""" + return catalogues.pulsars("PSRJ, P0, F0, e_F0, F1, PEpoch, W50, W10, DM, RLUM14, Edot, PB, Assoc, Dist, DistDM") + + +def psr_record(run, approach, n, params, null, sens, result, hits, unit, stat, note): + entry = {"atnf_square_pulses": "boxcar", "atnf_no_dispersion": "nodm", "atnf_breakup": "breakup", "atnf_overpowered": "overpower", + "atnf_year_orbits": "yearpsr"}[run] + core.record_run(run, approach, "ATNF pulsar catalogue (VizieR B/psr)", "catalogued pulsars with the quantity measured: %d" % n, + os.path.abspath(__file__), entry, n, "pulsars", params, null, sens, result, + [dict(target="psr:%s" % h["PSRJ"], stat=stat(h), unit=unit, note=note(h)) for h in hits]) + + +boxcar_DOC = r"""Pulsars with square pulses: ATNF pulsars with both pulse widths measured whose width at 10 per cent of the peak is within 5 per cent of the width at 50 per cent, where a Gaussian pulse gives a ratio of 1.82 and a square one 1.0. + + python -I seti.py radio_sky boxcar [record] [--ratio-max 1.05]""" + + +def boxcar_main(record=False, ratio_max=1.05): + rows = [r for r in psr_all() if num(r["W50"]) and num(r["W10"])] + ratio = lambda r: num(r["W10"]) / num(r["W50"]) # noqa: E731 + hits = sorted([r for r in rows if ratio(r) < ratio_max], key=ratio) + print("%d pulsars with both widths; W10/W50 below %g: %d, median ratio %.2f: %s" % ( + len(rows), ratio_max, len(hits), float(np.median([ratio(r) for r in rows])), ["%s %.3f (W50 %s ms)" % (r["PSRJ"], ratio(r), r["W50"]) for r in hits])) + if record: + psr_record("atnf_square_pulses", "Pulsars with square pulses", len(rows), dict(ratio=ratio_max), "a Gaussian pulse's 1.82", + "a pulse as wide at 10 per cent as at 50 per cent of its peak", "%d below 1.05" % len(hits), hits, "W10 over W50", ratio, + lambda r: "W50 %s ms, W10 %s ms" % (r["W50"], r["W10"])) + print("recorded") + + +nodm_DOC = r"""Pulsars with no electrons in front: ATNF pulsars with a dispersion measure below 1 pc cm^-3, well under the 2.64 of J0437-4715, the nearest millisecond pulsar at 157 pc. + + python -I seti.py radio_sky nodm [record] [--dm-max 1]""" + + +def nodm_main(record=False, dm_max=1.0): + rows = [r for r in psr_all() if num(r["DM"]) is not None] + hits = sorted([r for r in rows if num(r["DM"]) < dm_max], key=lambda r: num(r["DM"])) + print("%d pulsars with a dispersion measure; below %g: %d %s; the lowest five %s" % ( + len(rows), dm_max, len(hits), [(r["PSRJ"], r["DM"]) for r in hits], [(r["PSRJ"], r["DM"]) for r in sorted(rows, key=lambda r: num(r["DM"]))[:5]])) + if record: + psr_record("atnf_no_dispersion", "Pulsars with no electrons in front", len(rows), dict(dm=dm_max), "J0437-4715's 2.64 at 157 pc", + "a pulsar with almost no free electrons on its sightline", "%d below 1 pc cm^-3; the lowest %s" % ( + len(hits), ", ".join("%s %s" % (r["PSRJ"], r["DM"]) for r in sorted(rows, key=lambda r: num(r["DM"]))[:3])), + hits, "dispersion measure, pc cm^-3", lambda r: num(r["DM"]), lambda r: "P %s s" % r["P0"]) + print("recorded") + + +breakup_DOC = r"""Pulsars spinning faster than a neutron star survives: ATNF periods below 0.7 ms, the break-up limit, against the fastest known at 1.396 ms. + + python -I seti.py radio_sky breakup [record] [--p-ms 0.7]""" + + +def breakup_main(record=False, p_ms=0.7): + rows = [r for r in psr_all() if num(r["P0"])] + hits = [r for r in rows if num(r["P0"]) < p_ms / 1000.0] + fastest = sorted(rows, key=lambda r: num(r["P0"]))[:3] + print("%d pulsars with a period; below %g ms: %d; the fastest %s" % (len(rows), p_ms, len(hits), [(r["PSRJ"], r["P0"]) for r in fastest])) + if record: + psr_record("atnf_breakup", "Pulsars spinning faster than a neutron star survives", len(rows), dict(p_ms=p_ms), "the break-up limit", + "a period below 0.7 ms", "%d; the fastest %s" % (len(hits), ", ".join("%s %s s" % (r["PSRJ"], r["P0"]) for r in fastest)), + hits, "period, s", lambda r: num(r["P0"]), lambda r: "") + print("recorded") + + +overpower_DOC = r"""Pulsars radiating more than their spin supplies: ATNF 1.4 GHz luminosities (mJy kpc^2) taken isotropic over a 1 GHz band, 1.2e20 W per mJy kpc^2, against the spin-down power, flagged where the radio exceeds it; beaming makes the isotropic figure an upper bound. + + python -I seti.py radio_sky overpower [record] [--band-hz 1e9]""" + + +def overpower_main(record=False, band_hz=1e9): + k = 4 * math.pi * 1e-29 * (3.0857e19) ** 2 * band_hz + rows = [r for r in psr_all() if num(r["RLUM14"]) and num(r["Edot"])] + for r in rows: + r["ratio"] = num(r["RLUM14"]) * k / (num(r["Edot"]) * 1e-7) + hits = sorted([r for r in rows if r["ratio"] > 1], key=lambda r: -r["ratio"]) + print("%d pulsars with radio luminosity and spin-down power; radio above spin-down (isotropic, 1 GHz): %d %s" % ( + len(rows), len(hits), [("%s %.2f, P %s s, distance %s kpc (DM %s)" % (r["PSRJ"], r["ratio"], r["P0"], r["Dist"], r["DistDM"])) for r in hits[:10]])) + if record: + psr_record("atnf_overpowered", "Pulsars radiating more than their spin supplies", len(rows), dict(band_hz=band_hz, isotropic=True), + "the spin-down power", "an isotropic 1.4 GHz luminosity above the spin-down power", "%d above" % len(hits), hits, + "radio over spin-down power", lambda r: r["ratio"], lambda r: "P %s s, distance %s kpc" % (r["P0"], r["Dist"])) + print("recorded") + + +gcclock_DOC = r"""Pulsars of one globular cluster on one clock: ATNF pulsars of the same cluster whose rotation frequencies, carried to MJD 56000 with their derivatives and measured to 1e-7, agree to 1e-6, against the pairs within 1e-4 scaled to the tolerance. + + python -I seti.py radio_sky gcclock [record] [--tol 1e-6] [--precision 1e-7] [--epoch 56000]""" + + +def gcclock_main(record=False, tol=1e-6, precision=1e-7, epoch=56000.0): + good = [] + for r in psr_all(): + a = r["Assoc"] or "" + f0, ef, f1, ep = num(r["F0"]), num(r["e_F0"]), num(r["F1"]), num(r["PEpoch"]) + if "GC:" not in a or f0 is None or not ef or ef > precision * f0 or f1 is None or ep is None: + continue + good.append(dict(psr=r["PSRJ"], gc=a.split("GC:")[1].split(",")[0].split("[")[0], f=f0 + f1 * (epoch - ep) * 86400.0)) + wide = 100 * tol + counts, pairs = {tol: 0, wide: 0}, [] + for i, a in enumerate(good): + for b in good[i + 1:]: + if a["gc"] != b["gc"]: + continue + d = abs(a["f"] - b["f"]) / a["f"] + for t in counts: + counts[t] += d < t + if d < tol: + pairs.append((a, b, d)) + expect = counts[wide] / 100.0 + print("%d cluster pulsars timed to %g in %d clusters; same-cluster pairs within %g: %d, within %g: %d against %.3f %s" % ( + len(good), precision, len({g["gc"] for g in good}), wide, counts[wide], tol, counts[tol], expect, [(a["psr"], b["psr"], d) for a, b, d in pairs])) + if record: + core.record_run( + "atnf_cluster_clocks", "Pulsars of one globular cluster on one clock", "ATNF pulsar catalogue (VizieR B/psr)", + "globular-cluster pulsars timed to 1e-7: %d" % len(good), os.path.abspath(__file__), "gcclock", len(good), "pulsars", + dict(tol=tol, precision=precision, epoch=epoch), "same-cluster pairs within %g scaled: %.3f" % (wide, expect), "two pulsars of one cluster on one frequency to %g" % tol, + "%d pairs against %.3f" % (counts[tol], expect), [dict(target="psr:%s" % a["psr"], stat=d, note="with %s" % b["psr"]) for a, b, d in pairs]) + print("recorded") + + +yearpsr_DOC = r"""Binary pulsars on Earth's year: ATNF binary pulsars whose orbital period lies within 0.1 per cent of 365.25 days. + + python -I seti.py radio_sky yearpsr [record] [--tol 0.001]""" + + +def yearpsr_main(record=False, tol=0.001): + rows = [r for r in psr_all() if num(r["PB"])] + hits = [r for r in rows if abs(num(r["PB"]) / 365.25 - 1) < tol] + near = sorted(rows, key=lambda r: abs(num(r["PB"]) / 365.25 - 1))[:3] + print("%d binary pulsars; within %g per cent of a year: %d; the nearest %s" % (len(rows), 100 * tol, len(hits), [(r["PSRJ"], r["PB"]) for r in near])) + if record: + psr_record("atnf_year_orbits", "Binary pulsars on Earth's year", len(rows), dict(tol=tol), "the density of orbital periods near a year", + "a binary pulsar whose orbit lasts one Earth year to 0.1 per cent", "%d; the nearest %s" % ( + len(hits), ", ".join("%s %s d" % (r["PSRJ"], r["PB"]) for r in near)), hits, "orbital period, d", lambda r: num(r["PB"]), + lambda r: "") + print("recorded") + + +def frb_rows(): + """CHIME/FRB Catalog 1, one row per burst (its first sub-burst), with the timing, width, fluence, scattering and spectral columns.""" + return catalogues.frb_catalog1("Name, RpName, RAJ2000, DEJ2000, DMfitb, e_DMfitb, MJDinf, Widthfitb, e_Widthfitb, Fluence, e_Fluence, Scat, e_Scat, SpInd, " + "e_SpInd, Nsb") + + +frbdm_DOC = r"""Burst dispersions on shared values: CHIME/FRB Catalog 1 sources, one burst for each repeater, pairs whose fitted dispersion measures agree to 0.5 pc cm^-3, against 1000 draws from the same distribution smoothed by 20 pc cm^-3. + + python -I seti.py radio_sky frbdm [record] [--tol 0.5] [--smooth 20] [--draws 1000]""" + + +def frbdm_main(record=False, tol=0.5, smooth=20.0, draws=1000): + seen, rows = set(), [] + for r in frb_rows(): + src = (r["RpName"] or "").strip() + src = r["Name"] if not src.strip("-9") else src + if num(r["DMfitb"]) and src not in seen: + seen.add(src) + rows.append(r) + dm = np.sort(np.array([num(r["DMfitb"]) for r in rows])) + + def npairs(x): + x = np.sort(x) + return int(sum(np.searchsorted(x, x[i] + tol) - i - 1 for i in range(len(x)))) + obs = npairs(dm) + rng = np.random.default_rng(3) + null = np.array([npairs(rng.choice(dm, len(dm)) + rng.normal(0, smooth, len(dm))) for _ in range(draws)]) + p = float(np.mean(null >= obs)) + print("%d bursts; pairs within 0.5 pc cm^-3: %d against %.1f +- %.1f (as many or more in %.3f)" % (len(rows), obs, null.mean(), null.std(), p)) + if record: + core.record_run( + "chime_dm_shells", "Burst dispersions on shared values", "CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59)", "bursts: %d" % len(rows), + os.path.abspath(__file__), "frbdm", len(rows), "bursts", dict(tol=tol, smooth=smooth, draws=draws), "%d smoothed draws: %.1f +- %.1f" % (draws, null.mean(), null.std()), + "dispersion measures clustering on shared values", "%d pairs against %.1f +- %.1f (p %.3f)" % (obs, null.mean(), null.std(), p), []) + print("recorded") + + +frbsimul_DOC = r"""Bursts arriving together from different directions: CHIME/FRB Catalog 1 bursts more than 10 deg apart whose arrival times at infinite frequency agree to 1 second. + + python -I seti.py radio_sky frbsimul [record] [--dt-s 1] [--sep-deg 10]""" + + +def frbsimul_main(record=False, dt_s=1.0, sep_deg=10.0): + rows = sorted([r for r in frb_rows() if num(r["MJDinf"])], key=lambda r: num(r["MJDinf"])) + hits = [] + for i, a in enumerate(rows): + for b in rows[i + 1:]: + dt = (num(b["MJDinf"]) - num(a["MJDinf"])) * 86400 + if dt > dt_s: + break + if sep_arcsec(num(a["RAJ2000"]), num(a["DEJ2000"]), num(b["RAJ2000"]), num(b["DEJ2000"])) > 3600 * sep_deg: + hits.append((a["Name"], b["Name"], dt)) + span = (num(rows[-1]["MJDinf"]) - num(rows[0]["MJDinf"])) * 86400 + expect = len(rows) ** 2 / 2 * 2 * dt_s / span + print("%d bursts over %.0f days; pairs more than 10 deg apart within 1 s: %d against %.4f by chance %s" % (len(rows), span / 86400, len(hits), expect, hits)) + if record: + core.record_run( + "chime_simultaneous", "Bursts arriving together from different directions", "CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59)", + "bursts: %d" % len(rows), os.path.abspath(__file__), "frbsimul", len(rows), "bursts", dict(dt_s=dt_s, sep_deg=sep_deg), + "uniform arrival times over the catalogue's span: %.4f pairs" % expect, "two bursts from different directions within 1 s", + "%d against %.4f" % (len(hits), expect), [dict(target="frb:%s" % a, stat=dt, unit="s apart", note="with %s" % b) for a, b, dt in hits]) + print("recorded") + + +frbcopies_DOC = r"""Copy bursts from different directions: non-repeating CHIME/FRB Catalog 1 bursts more than 10 deg apart whose width, fluence, scattering time and spectral index all agree within their combined errors and to 10 per cent, against the same count with each property shuffled among the bursts. + + python -I seti.py radio_sky frbcopies [record] [--tol-frac 0.1] [--sep-deg 10] [--shuffles 20]""" + + +def frbcopies_main(record=False, tol_frac=0.1, sep_deg=10.0, shuffles=20): + keys = (("Widthfitb", "e_Widthfitb"), ("Fluence", "e_Fluence"), ("Scat", "e_Scat"), ("SpInd", "e_SpInd")) + rows = [r for r in frb_rows() if not (r["RpName"] or "").strip().strip("-9").strip() and all(num(r[k]) is not None and num(r[e]) for k, e in keys)] + X = np.array([[num(r[k]) for k, e in keys] for r in rows]) + E = np.array([[num(r[e]) for k, e in keys] for r in rows]) + pos = [(num(r["RAJ2000"]), num(r["DEJ2000"])) for r in rows] + + def count(X): + n = [] + for i in range(len(rows)): + d = np.abs(X - X[i]) + ok = np.all((d <= np.hypot(E, E[i])) & (d <= tol_frac * np.abs(X[i]) + 1e-12), axis=1) + for j in np.nonzero(ok)[0]: + if j > i and sep_arcsec(*pos[i], *pos[j]) > 3600 * sep_deg: + n.append((i, int(j))) + return n + found = count(X) + rng = np.random.default_rng(21) + null = [] + for _ in range(shuffles): + Y = X.copy() + for c in range(Y.shape[1]): + Y[:, c] = Y[rng.permutation(len(Y)), c] + null.append(len(count(Y))) + print("%d non-repeating bursts with all four measured; copies %d against %.1f shuffled %s" % ( + len(rows), len(found), float(np.mean(null)), [(rows[i]["Name"], rows[j]["Name"]) for i, j in found][:10])) + if record: + core.record_run( + "chime_copy_bursts", "Copy bursts from different directions", "CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59)", + "non-repeating bursts with width, fluence, scattering and spectral index: %d" % len(rows), os.path.abspath(__file__), "frbcopies", + len(rows), "bursts", dict(tol_frac=tol_frac, sep_deg=sep_deg, shuffles=shuffles), "properties shuffled among the bursts: mean %.1f" % float(np.mean(null)), + "two bursts from different directions alike in width, fluence, scattering and spectral index", "%d pairs against %.1f" % ( + len(found), float(np.mean(null))), + [dict(target="frb:%s" % rows[i]["Name"], note="copy of %s" % rows[j]["Name"], + vet="chance-rate" if len(found) <= np.mean(null) + 3 * math.sqrt(max(np.mean(null), 1)) else None) for i, j in found]) + print("recorded") + + +psrratio_DOC = r"""Pulsars paired in simple ratios: ATNF pulsars within 1 deg of each other outside globular clusters whose rotation frequencies, measured to 1e-7 and carried to MJD 56000, stand in a ratio p/q (q up to 5, p up to 12) to 1e-6, a pair of beacons on one clock, against the hits among pairs 10-20 deg apart scaled by the number of pairs. + + python -I seti.py radio_sky psrratio [record] [--tol 1e-6] [--sep-deg 1] [--control-deg 10 20] [--q-max 5] [--p-max 12]""" + + +def psrratio_main(record=False, tol=1e-6, sep_deg=1.0, control_deg=[10.0, 20.0], q_max=5, p_max=12, precision=1e-7, epoch=56000.0): + good = [] + for r in catalogues.pulsars("PSRJ, RA2000, DE2000, F0, e_F0, F1, PEpoch, Assoc"): + f0, ef, f1, ep = num(r["F0"]), num(r["e_F0"]), num(r["F1"]), num(r["PEpoch"]) + if f0 and ef and ef < precision * f0 and f1 is not None and ep and "GC:" not in (r["Assoc"] or "") and num(r["RA2000"]) is not None: + good.append((r["PSRJ"], num(r["RA2000"]), num(r["DE2000"]), f0 + f1 * (epoch - ep) * 86400.0)) + ratios = sorted({p / q for q in range(1, q_max + 1) for p in range(1, p_max + 1) if p != q}) + + def hits(lo, hi): + n, out = 0, [] + for i in range(len(good)): + for j in range(i + 1, len(good)): + s = core.sep_arcsec(good[i][1], good[i][2], good[j][1], good[j][2]) / 3600 + if lo <= s < hi: + n += 1 + x = good[j][3] / good[i][3] + if any(abs(x / k - 1) < tol for k in ratios): + out.append((good[i][0], good[j][0], x)) + return n, out + n_near, near = hits(0, sep_deg) + n_far, far = hits(control_deg[0], control_deg[1]) + expect = len(far) * n_near / max(n_far, 1) + print("%d pulsars timed to 1e-7 outside clusters; %d pairs within 1 deg, %d in simple ratios to 1e-6 %s; at 10-20 deg %d of %d, so %.3f expected" % ( + len(good), n_near, len(near), near, len(far), n_far, expect)) + if record: + core.record_run("atnf_simple_ratios", "Pulsars paired in simple ratios", "ATNF pulsar catalogue (VizieR B/psr)", + "pulsars timed to 1e-7 outside globular clusters: %d" % len(good), os.path.abspath(__file__), "psrratio", n_near, "pulsar pairs", + dict(tol=tol, sep_deg=sep_deg, control_deg=control_deg, q_max=q_max, p_max=p_max), "pairs %g-%g deg apart scaled: %.3f" % (control_deg[0], control_deg[1], expect), + "two neighbouring pulsars on frequencies in a simple ratio", + "%d against %.3f" % (len(near), expect), [dict(target="psr:%s" % a, stat=x, unit="frequency ratio", note="with %s" % b) for a, b, x in near]) + print("recorded") + + +frbpsr_DOC = r"""Bursts masquerading from pulsars: CHIME/FRB Catalog 1 bursts within 1 deg of an ATNF pulsar whose dispersion measure agrees with the pulsar's to 5 per cent, a burst from a known beacon's place and distance, against the same match with the bursts moved 5 deg in right ascension either way. + + python -I seti.py radio_sky frbpsr [record] [--sep-deg 1] [--dm-tol 0.05] [--shifts-deg 5 10]""" + + +def frbpsr_main(record=False, sep_deg=1.0, dm_tol=0.05, shifts_deg=[5.0, 10.0]): + frbs = [r for r in frb_rows() if num(r["DMfitb"])] + psrs = [r for r in catalogues.pulsars("PSRJ, RA2000, DE2000, DM") if num(r["DM"]) and num(r["RA2000"]) is not None] + + def match(shift): + out = [] + for b in frbs: + for p in psrs: + if abs(num(b["DMfitb"]) / num(p["DM"]) - 1) < dm_tol and core.sep_arcsec((num(b["RAJ2000"]) + shift) % 360, num(b["DEJ2000"]), + num(p["RA2000"]), num(p["DE2000"])) < 3600 * sep_deg: + out.append((b["Name"], p["PSRJ"])) + return out + found = match(0.0) + null = [len(match(s)) for k in shifts_deg for s in (k, -k)] + print("%d bursts, %d pulsars; within 1 deg and 5 per cent in DM: %d %s; moved %s" % (len(frbs), len(psrs), len(found), found, null)) + if record: + core.record_run("chime_frb_pulsars", "Bursts masquerading from pulsars", "CHIME/FRB Catalog 1; ATNF pulsar catalogue", "bursts: %d" % len(frbs), + os.path.abspath(__file__), "frbpsr", len(frbs), "bursts", dict(sep_deg=sep_deg, dm_tol=dm_tol, shifts_deg=shifts_deg), "bursts moved %s deg: %s" % (shifts_deg, null), + "a burst at a pulsar's position and dispersion measure", "%d against %.2f" % (len(found), float(np.mean(null))), + [dict(target="frb:%s" % b, note="at %s" % p) for b, p in found]) + print("recorded") + + +copypsr_DOC = r"""Copy pulsars: ATNF pulsars with period, period derivative, dispersion measure and W50 measured; pairs more than 10 deg apart alike to 1e-3 in period and 5 per cent in period derivative, dispersion measure and W50, against the pairs found with the last three shuffled among pulsars of like period twenty times. + + python -I seti.py radio_sky copypsr [record] [--period-tol 1e-3] [--other-tol 0.05] [--sep-deg 10] [--shuffles 20]""" + + +def copypsr_main(record=False, period_tol=1e-3, other_tol=0.05, sep_deg=10.0, shuffles=20): + rows = [] + for r in catalogues.pulsars("PSRJ, RA2000, DE2000, P0, P1, DM, W50"): + v = [num(r[k]) for k in ("RA2000", "DE2000", "P0", "P1", "DM", "W50")] + if None not in v and v[2] > 0 and v[3] > 0 and v[4] > 0 and v[5] > 0: + rows.append((r["PSRJ"], *v)) + rows.sort(key=lambda t: t[3]) + P = np.array([t[3] for t in rows]) + X = np.array([[t[4], t[5], t[6]] for t in rows]) + ra, dec = np.array([t[1] for t in rows]), np.array([t[2] for t in rows]) + + def pairs(Y): + out = [] + for i in range(len(rows)): + for j in range(i + 1, len(rows)): + if P[j] / P[i] - 1 > period_tol: + break + if np.all(np.abs(Y[j] / Y[i] - 1) < other_tol) and core.sep_arcsec(ra[i], dec[i], ra[j], dec[j]) > 3600 * sep_deg: + out.append((i, j)) + return out + found = pairs(X) + rng = np.random.default_rng(23) + bins = np.digitize(np.log10(P), np.linspace(np.log10(P.min()), np.log10(P.max()), 11)) + null = [] + for _ in range(shuffles): + Y = X.copy() + for b in np.unique(bins): + idx = np.nonzero(bins == b)[0] + for k in range(3): + Y[idx, k] = Y[rng.permutation(idx), k] + null.append(len(pairs(Y))) + print("%d pulsars with period, derivative, DM and W50; copies more than 10 deg apart: %d %s; shuffled %s" % ( + len(rows), len(found), [(rows[i][0], rows[j][0]) for i, j in found], null)) + if record: + core.record_run("atnf_copy_pulsars", "Copy pulsars", "ATNF pulsar catalogue (VizieR B/psr)", + "pulsars with period, period derivative, dispersion measure and W50: %d" % len(rows), os.path.abspath(__file__), "copypsr", len(rows), + "pulsars", dict(period=period_tol, others=other_tol, sep_deg=sep_deg, shuffles=shuffles), "period derivative, DM and W50 shuffled among pulsars of like period: mean %.2f" + % float(np.mean(null)), "two pulsars far apart alike in period, spin-down, dispersion and pulse width", + "%d pairs against %.2f shuffled" % (len(found), float(np.mean(null))), + [dict(target="psr:%s" % rows[i][0], note="copy of %s" % rows[j][0], + vet="chance-rate" if len(found) <= np.mean(null) + 3 * math.sqrt(max(np.mean(null), 1)) else None) for i, j in found]) + print("recorded") + + +daypsr_DOC = r"""Binary pulsars on Earth's day: ATNF orbital periods within 0.1 per cent of the solar day (1 d) or the sidereal day (0.99727 d), against the binaries within 10 per cent of a day scaled to the two windows. + + python -I seti.py radio_sky daypsr [record] [--tol 1e-3]""" + + +def daypsr_main(record=False, tol=1e-3): + rows = [r for r in psr_all() if num(r["PB"])] + days = {"solar day": 1.0, "sidereal day": 0.9972696} + hits = [(r["PSRJ"], num(r["PB"]), k) for r in rows for k, d in days.items() if abs(num(r["PB"]) / d - 1) < tol] + wide = sum(1 for r in rows if abs(num(r["PB"]) - 1) < 0.1) + expect = wide * (2 * 2 * tol) / 0.2 + print("%d binary pulsars; within %g per cent of the solar or sidereal day: %d %s against %.2f from the %d within 10 per cent of a day" % ( + len(rows), 100 * tol, len(hits), hits, expect, wide)) + if record: + core.record_run("atnf_day_orbits", "Binary pulsars on Earth's day", "ATNF pulsar catalogue (VizieR B/psr)", "binary pulsars: %d" % len(rows), + os.path.abspath(__file__), "daypsr", len(rows), "pulsars", dict(tol=tol, days=list(days.values())), + "binaries within 10 per cent of a day scaled: %.2f" % expect, "a binary pulsar orbiting once per Earth day", + "%d against %.2f" % (len(hits), expect), + [dict(target="psr:%s" % n, stat=pb, unit="orbital period, d", note=k, + vet="chance-rate" if len(hits) <= expect + 3 * math.sqrt(max(expect, 1)) else None) for n, pb, k in hits]) + print("recorded") + + +bfield_DOC = r"""Pulsars beyond the magnetar limit: ATNF pulsars with a positive period derivative, their dipole field 3.2e19 (P dP/dt)^1/2 G, flagged above 1e16 G, past the strongest magnetar (about 2e15 G); each read for its association, where a globular cluster's acceleration or a binary distorts the derivative. + + python -I seti.py radio_sky bfield [record] [--b-gauss 1e16]""" + + +def bfield_main(record=False, b_gauss=1e16): + rows = [] + for r in catalogues.pulsars("PSRJ, P0, P1, Assoc, Binary, Type"): + p, pd = num(r["P0"]), num(r["P1"]) + if p and pd and pd > 0: + rows.append((r["PSRJ"], p, pd, 3.2e19 * math.sqrt(p * pd), r["Assoc"], r["Type"])) + rows.sort(key=lambda t: -t[3]) + hits = [t for t in rows if t[3] > b_gauss] + print("%d pulsars with a positive period derivative; field above %g G: %d; the strongest %s" % ( + len(rows), b_gauss, len(hits), ["%s %.2e G (P %.3f s, %s, %s)" % (t[0], t[3], t[1], t[4], t[5]) for t in rows[:5]])) + if record: + core.record_run("atnf_beyond_magnetars", "Pulsars beyond the magnetar limit", "ATNF pulsar catalogue (VizieR B/psr)", + "pulsars with a positive period derivative: %d" % len(rows), os.path.abspath(__file__), "bfield", len(rows), "pulsars", + dict(b_gauss=b_gauss), "the strongest magnetar's field, about 2e15 G", "a neutron star with a dipole field no magnetar reaches", + "%d above 1e16 G; the strongest %s at %.2e G" % (len(hits), rows[0][0], rows[0][3]), + [dict(target="psr:%s" % t[0], stat=t[3], unit="dipole field, G", note="P %.4f s, association %s, type %s" % (t[1], t[4], t[5])) for t in hits]) + print("recorded") + + +psrconst_DOC = r"""Pulsar pairs whose frequencies spell constants: ATNF pulsars timed to 1e-7 outside globular clusters, frequencies carried to MJD 56000 with their derivatives; pairs anywhere on the sky whose frequency ratio equals pi, e, the golden ratio, sqrt 2 or sqrt 3 to 1e-6, against the pairs within 1e-4 scaled to the tolerance. + + python -I seti.py radio_sky psrconst [record] [--tol 1e-6] [--precision 1e-7] [--epoch 56000]""" + + +def psrconst_main(record=False, tol=1e-6, precision=1e-7, epoch=56000.0): + good = [] + for r in catalogues.pulsars("PSRJ, F0, e_F0, F1, PEpoch, Assoc"): + f0, ef, f1, ep = num(r["F0"]), num(r["e_F0"]), num(r["F1"]), num(r["PEpoch"]) + if f0 and ef and ef < precision * f0 and f1 is not None and ep and "GC:" not in (r["Assoc"] or ""): + good.append((r["PSRJ"], f0 + f1 * (epoch - ep) * 86400.0)) + good.sort(key=lambda t: t[1]) + f = np.array([t[1] for t in good]) + consts = {"pi": math.pi, "e": math.e, "golden ratio": (1 + math.sqrt(5)) / 2, "sqrt 2": math.sqrt(2), "sqrt 3": math.sqrt(3)} + wide, hits = 0, [] + for name, c in consts.items(): + lo4, hi4 = np.searchsorted(f, f * c * (1 - 100 * tol)), np.searchsorted(f, f * c * (1 + 100 * tol)) + wide += int((hi4 - lo4).sum()) + lo6, hi6 = np.searchsorted(f, f * c * (1 - tol)), np.searchsorted(f, f * c * (1 + tol)) + for i in np.nonzero(hi6 > lo6)[0]: + for j in range(lo6[i], hi6[i]): + hits.append((good[j][0], good[i][0], name, f[j] / f[i] / c - 1)) + expect = wide / 100.0 + print("%d pulsars timed to 1e-7; frequency ratios within 1e-6 of a constant: %d %s against %.2f from %d within 1e-4" % (len(good), len(hits), hits, expect, wide)) + if record: + core.record_run("atnf_constant_ratios", "Pulsar pairs whose frequencies spell constants", "ATNF pulsar catalogue (VizieR B/psr)", + "pulsars timed to 1e-7 outside globular clusters: %d" % len(good), os.path.abspath(__file__), "psrconst", len(good), "pulsars", + dict(tol=tol, precision=precision, epoch=epoch, constants=list(consts)), "pairs within %g scaled: %.2f" % (100 * tol, expect), + "two pulsars whose frequencies stand in a mathematical constant", + "%d against %.2f" % (len(hits), expect), + [dict(target="psr:%s" % a, stat=d, unit="fractional offset", note="over %s, %s" % (b, n), + vet="chance-rate" if len(hits) <= expect + 3 * math.sqrt(max(expect, 1)) else None) for a, b, n, d in hits]) + print("recorded") + + +frblocal_DOC = r"""Bursts from inside the Galaxy: CHIME/FRB Catalog 1 bursts whose dispersion measure falls below the Milky Way's along their line of sight in both the NE2001 and YMW16 models (the catalogue's excess columns below zero), a source within the Galaxy; one burst per source, the smallest excesses listed. + + python -I seti.py radio_sky frblocal [record]""" + + +def frblocal_main(record=False): + rows, seen = [], set() + for r in catalogues.frb_catalog1("Name, RpName, GLON, GLAT, DMfitb, e_DMfitb, DMeNE2001, DMeYMW16", one_per_burst=False): + rp = (r["RpName"] or "").strip() + src = r["Name"] if not rp or rp.startswith("-") else rp + if src in seen or num(r["DMeNE2001"]) is None or num(r["DMeYMW16"]) is None: + continue + seen.add(src) + rows.append(r) + inside = [r for r in rows if num(r["DMeNE2001"]) < 0 and num(r["DMeYMW16"]) < 0] + low = sorted(rows, key=lambda r: max(num(r["DMeNE2001"]), num(r["DMeYMW16"])))[:5] + print("%d CHIME/FRB sources; dispersion below the Galaxy's in both models: %d; the smallest excesses %s" % (len(rows), len(inside), [ + "%s DM %s, excess NE2001 %s, YMW16 %s, b %s" % (r["Name"], r["DMfitb"], r["DMeNE2001"], r["DMeYMW16"], r["GLAT"]) for r in low])) + if record: + core.record_run("chime_inside_galaxy", "Bursts from inside the Galaxy", "CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59)", + "sources, one burst for each repeater: %d" % len(rows), os.path.abspath(__file__), "frblocal", len(rows), "burst sources", + dict(models=["NE2001", "YMW16"]), "the Galaxy's dispersion along each line of sight", "a fast radio burst from within the Milky Way", + "%d; the smallest excesses %s" % (len(inside), "; ".join("%s (%s, %s pc cm^-3)" % (r["Name"], r["DMeNE2001"], r["DMeYMW16"]) for r in low[:3])), + [dict(target="frb:%s" % r["Name"], stat=num(r["DMeYMW16"]), unit="DM excess over YMW16, pc cm^-3") for r in inside]) + print("recorded") + + +frbetz_DOC = r"""Bursts from Earth's transit zone: CHIME/FRB Catalog 1 sources, one burst per source, within 0.264 deg of the ecliptic, from where Earth is seen to transit the Sun, against the expectation from 2000 random right ascensions at each source's own declination (a transit telescope covers every right ascension of a declination alike). + + python -I seti.py radio_sky frbetz [record] [--zone-deg 0.264] [--draws 2000]""" + + +def frbetz_main(record=False, zone_deg=0.264, draws=2000): + seen, ra, de, names = set(), [], [], [] + for r in catalogues.frb_catalog1("Name, RpName, RAJ2000, DEJ2000", one_per_burst=False): + rp = (r["RpName"] or "").strip() + src = r["Name"] if not rp or rp.startswith("-") else rp + if src in seen or num(r["RAJ2000"]) is None: + continue + seen.add(src) + ra.append(num(r["RAJ2000"])) + de.append(num(r["DEJ2000"])) + names.append(src) + ra, de = np.radians(ra), np.radians(de) + eps = math.radians(23.4392911) + + def beta(a, d): + return np.degrees(np.arcsin(np.sin(d) * math.cos(eps) - np.cos(d) * math.sin(eps) * np.sin(a))) + b = beta(ra, de) + hits = [names[i] for i in np.nonzero(np.abs(b) < zone_deg)[0]] + rng = np.random.default_rng(29) + p = np.mean(np.abs(beta(rng.uniform(0, 2 * math.pi, (draws, len(de))), de[None, :])) < zone_deg, axis=0) + expect = float(p.sum()) + print("%d CHIME/FRB sources; within 0.264 deg of the ecliptic: %d %s against %.2f from random right ascensions" % (len(names), len(hits), hits, expect)) + if record: + core.record_run("chime_transit_zone", "Bursts from Earth's transit zone", "CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59)", + "sources, one burst for each repeater: %d" % len(names), os.path.abspath(__file__), "frbetz", len(names), "burst sources", + dict(zone_deg=zone_deg, draws=draws), "%d random right ascensions at each declination: %.2f" % (draws, expect), + "fast radio bursts gathered where Earth is seen to transit the Sun", "%d against %.2f" % (len(hits), expect), + [dict(target="frb:%s" % h, vet="chance-rate" if len(hits) <= expect + 3 * math.sqrt(max(expect, 1)) else None) for h in hits]) + print("recorded") + + +frbladder_DOC = r"""Burst dispersions on a ladder: CHIME/FRB Catalog 1 dispersion measures, one burst per source, tested for bunching at whole multiples of a spacing between 5 and 200 pc cm^-3 by the Rayleigh power |sum exp(2 pi i DM / s)|^2 / N; the largest power over spacings against the largest from 500 draws of the same number from the distribution smoothed by 20 pc cm^-3. + + python -I seti.py radio_sky frbladder [record] [--spacing-pc-cm3 5 200] [--smoothing 20] [--draws 500]""" + + +def frbladder_main(record=False, spacing_pc_cm3=[5.0, 200.0], smoothing=20.0, draws=500): + seen, dm = set(), [] + for r in catalogues.frb_catalog1("Name, RpName, DMfitb", one_per_burst=False): + rp = (r["RpName"] or "").strip() + src = r["Name"] if not rp or rp.startswith("-") else rp + if src in seen or num(r["DMfitb"]) is None: + continue + seen.add(src) + dm.append(num(r["DMfitb"])) + dm = np.array(dm) + s = np.arange(spacing_pc_cm3[0], spacing_pc_cm3[1], 0.05) + + def zmax(x): + ph = np.exp(2j * np.pi * x[None, :] / s[:, None]) + z = np.abs(ph.sum(axis=1)) ** 2 / len(x) + k = int(np.argmax(z)) + return float(z[k]), float(s[k]) + obs, at = zmax(dm) + rng = np.random.default_rng(31) + null = np.array([zmax(np.abs(rng.choice(dm, len(dm)) + rng.normal(0, smoothing, len(dm))))[0] for _ in range(draws)]) + p = float(np.mean(null >= obs)) + print("%d CHIME/FRB sources; the strongest ladder at %.2f pc cm^-3 with Rayleigh power %.1f; smoothed draws reach %.1f at the median, as high or higher in %.3f" % ( + len(dm), at, obs, float(np.median(null)), p)) + if record: + core.record_run("chime_dm_ladder", "Burst dispersions on a ladder", "CHIME/FRB Catalog 1 (VizieR J/ApJS/257/59)", + "sources, one burst for each repeater: %d" % len(dm), os.path.abspath(__file__), "frbladder", len(dm), "burst sources", + dict(spacing_pc_cm3=spacing_pc_cm3, smoothing=smoothing, draws=draws), "the largest power from smoothed draws: median %.1f" % float(np.median(null)), + "dispersion measures stepping in whole multiples of one spacing", "largest power %.1f at %.2f pc cm^-3, as high or higher in %.3f of draws" % ( + obs, at, p), []) + print("recorded") + + +coldwdradio_DOC = r"""Radio from cold white dwarfs: Gentile Fusillo et al. (2021) white dwarfs within 100 pc with a white-dwarf probability above 0.75 and hydrogen-model temperatures below 8000 K, carried from 2016.0 to NVSS's 1995.0 by their proper motions, against NVSS (VIII/65) by CDS XMatch within 15 arcsec, against the same match with the white dwarfs moved 2 arcmin in eight directions; each match read for another Gaia star near the white dwarf. + + python -I seti.py radio_sky coldwdradio [record] [--teff-max 8000] [--radius-arcsec 15] [--epoch 1995]""" + + +def coldwdradio_main(record=False, teff_max=8000.0, radius_arcsec=15.0, epoch=1995.0): + from setitools.catalogues import shifted_matches + wds = catalogues.white_dwarfs(teff_max=teff_max) + pos = [] + for w in wds: + ra, de = core.star_at(float(w["RA_ICRS"]), float(w["DE_ICRS"]), num(w["pmRA"], 0.0), num(w["pmDE"], 0.0), 2016.0, epoch) + pos.append(dict(name=w["WDJname"].strip(), ra=ra, dec=de)) + hits, null = shifted_matches(pos, "VIII/65/nvss", radius_arcsec) + names = sorted({m["source_id"] for m in hits}) + mean = float(np.mean(null)) + print("%d white dwarfs within 100 pc below 8000 K; NVSS sources within 15 arcsec: %d %s; moved 2 arcmin %s (mean %.1f)" % ( + len(pos), len(names), [(m["source_id"], m.get("S1.4"), round(float(m["angDist"]), 1)) for m in hits], null, mean)) + if record: + core.record_run("nvss_cold_white_dwarfs", "Radio from cold white dwarfs", "Gentile Fusillo et al. (2021) white dwarfs; NVSS (VIII/65) by CDS XMatch", + "white dwarfs within 100 pc below 8000 K: %d" % len(pos), os.path.abspath(__file__), "coldwdradio", len(pos), "white dwarfs", + dict(radius_arcsec=radius_arcsec, epoch=epoch, teff_k=teff_max), "the white dwarfs moved 2 arcmin: %s" % null, + "a radio source on a white dwarf too cool for any", "%d against a mean of %.1f moved" % (len(names), mean), + [dict(target="wd:%s" % n, vet="chance-rate" if len(names) <= mean + 3 * math.sqrt(max(mean, 1)) else None) for n in names]) + print("recorded") + + +msplight_DOC = r"""Infrared at isolated millisecond pulsars: ATNF pulsars with periods below 30 ms, no binary orbit, no globular-cluster association and a timing position good to 1 arcsec, against AllWISE (II/328) by CDS XMatch within 3 arcsec, against the same match with the pulsars moved 2 arcmin in eight directions; an old neutron star with no companion has nothing to warm, so a shell around one shows in the mid-infrared. A match is a companion when a Gaia DR3 star at the infrared position shares the pulsar's proper motion, a background galaxy when the Legacy Survey DR10 resolves a galaxy there, and a neighbour's light when it lies more than three combined errors off the pulsar. + + python -I seti.py radio_sky msplight [record] [--period-s 0.03] [--position-arcsec 1] [--radius-arcsec 3]""" + + +def msplight_vet(p, m): + """Explanation of the AllWISE source M matched to pulsar P: a Gaia star sharing its proper motion, a galaxy the Legacy Survey resolves, or a position off the pulsar's.""" + ra, dec = float(m["RAJ2000"]), float(m["DEJ2000"]) + if p["pmra"] is not None: + for g in core.xmatch([dict(source_id="w", ra=ra, dec=dec)], "I/355/gaiadr3", 1.5): + if num(g["pmRA"]) is not None and math.hypot(num(g["pmRA"]) - p["pmra"], num(g["pmDE"]) - p["pmdec"]) < ( + 1 + 3 * math.hypot(num(g["e_pmRA"]) or 1, num(g["e_pmDE"]) or 1)): + return "companion" + box = 1.0 / 3600 + for r in core.datalab("SELECT type FROM ls_dr10.tractor WHERE ra BETWEEN %.6f AND %.6f AND dec BETWEEN %.6f AND %.6f" % ( + ra - box / math.cos(math.radians(dec)), ra + box / math.cos(math.radians(dec)), dec - box, dec + box)): + if r["type"] not in ("PSF", "DUP"): + return "background-galaxy" + if float(m["angDist"]) > 3 * math.hypot(p["err"], num(m.get("eeMaj")) or 0.5): + return "blend" + return None + + +def msplight_main(record=False, period_s=0.03, position_arcsec=1.0, radius_arcsec=3.0): + from setitools.catalogues import shifted_matches + pos = [] + for r in catalogues.pulsars("PSRJ, RAJ2000, DEJ2000, e_RAJ2000, e_DEJ2000, pmRA, pmDE, P0, Binary, PB, Assoc"): + p, era, ede = num(r["P0"]), num(r["e_RAJ2000"]), num(r["e_DEJ2000"]) + if not (p and p < period_s and catalogues.pulsar_isolated(r) and "GC:" not in (r["Assoc"] or "") and era is not None and ede is not None): + continue + ra, dec = num(r["RAJ2000"]), num(r["DEJ2000"]) + err = math.hypot(era * 15 * math.cos(math.radians(dec)), ede) + if err < position_arcsec: + pos.append(dict(name=r["PSRJ"].strip(), ra=ra, dec=dec, err=err, pmra=num(r["pmRA"]), pmdec=num(r["pmDE"]))) + hits, null = shifted_matches(pos, "II/328/allwise", radius_arcsec) + by = {p["name"]: p for p in pos} + vets = {} + for m in hits: + vets.setdefault(m["source_id"], msplight_vet(by[m["source_id"]], m)) + mean = float(np.mean(null)) + left = sorted(n for n, v in vets.items() if v is None) + print("%d isolated millisecond pulsars outside clusters with timing positions; AllWISE sources within 3 arcsec: %d %s; moved 2 arcmin %s (mean %.1f); unexplained %s" % ( + len(pos), len(vets), [(m["source_id"], m.get("W1mag"), m.get("W2mag"), round(float(m["angDist"]), 1), vets[m["source_id"]]) for m in hits], + null, mean, left)) + if record: + core.record_run("allwise_isolated_msps", "Infrared at isolated millisecond pulsars", "ATNF pulsar catalogue (VizieR B/psr); AllWISE (II/328) by CDS XMatch; Gaia DR3; Legacy Survey DR10 (Data Lab)", + "isolated millisecond pulsars outside globular clusters with positions good to 1 arcsec: %d" % len(pos), os.path.abspath(__file__), "msplight", + len(pos), "pulsars", dict(period_s=period_s, position_arcsec=position_arcsec, radius_arcsec=radius_arcsec), "the pulsars moved 2 arcmin: %s" % null, + "infrared from a lone old neutron star", "%d against a mean of %.1f moved; %d unexplained" % (len(vets), mean, len(left)), + [dict(target="psr:%s" % n, vet=v) for n, v in sorted(vets.items())]) + print("recorded") + + +etzradio_DOC = r"""Radio from Earth's transit zone: Gaia Catalogue of Nearby Stars objects (probability above 0.9) north of declination -40 deg, carried from 2016.0 to 2019.0, against VLASS epoch-1 components (J/ApJS/255/30) within 3 arcsec by CDS XMatch; the share with a 3 GHz source among stars within 0.264 deg of the ecliptic, which see Earth cross the Sun, against the share 1-5 deg away, and the zone's matches against the zone moved 2 arcmin in eight directions. A match is an active star or binary by its SIMBAD type, or a background source where the Legacy Survey DR10 resolves a galaxy at the radio position. + + python -I seti.py radio_sky etzradio [record] [--zone-deg 0.264] [--control-deg 1 5] [--radius-arcsec 3] [--epoch 2019] [--dec-min -40]""" + + +def etzradio_main(record=False, zone_deg=0.264, control_deg=[1.0, 5.0], radius_arcsec=3.0, epoch=2019.0, dec_min=-40.0): + from setitools.catalogues import shifted_matches + from scipy.stats import poisson + eps = math.radians(23.4392911) + rows = catalogues.gcns("source_id, ra, dec, pmra, pmdec, parallax", ranges=12) + zone, near = [], [] + for r in rows: + ra, de = float(r["ra"]), float(r["dec"]) + if de < dec_min: + continue + a, d = math.radians(ra), math.radians(de) + beta = abs(math.degrees(math.asin(math.sin(d) * math.cos(eps) - math.cos(d) * math.sin(eps) * math.sin(a)))) + if beta < zone_deg or control_deg[0] <= beta < control_deg[1]: + ra19, de19 = core.star_at(ra, de, num(r["pmra"]) or 0.0, num(r["pmdec"]) or 0.0, 2016.0, epoch) + (zone if beta < zone_deg else near).append(dict(name="g%s" % r["source_id"], ra=ra19 % 360, dec=de19, plx=float(r["parallax"]))) + hits, null = shifted_matches(zone, "J/ApJS/255/30/comp", radius_arcsec) + far = set() + for k in range(0, len(near), 5000): + far |= {m["source_id"] for m in core.xmatch([dict(source_id=p["name"], ra=p["ra"], dec=p["dec"]) for p in near[k:k + 5000]], + "J/ApJS/255/30/comp", radius_arcsec)} + got = {} + for m in hits: + if m["source_id"] not in got or float(m["angDist"]) < float(got[m["source_id"]]["angDist"]): + got[m["source_id"]] = m + share = len(far) / max(len(near), 1) + exp = share * len(zone) + p = float(poisson.sf(len(got) - 1, exp)) if got else 1.0 + sim = {} + if got: + for r in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % n[1:] for n in got)): + sim["g" + str(r["id"]).split()[-1]] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip(), (r["sp_type"] or "").strip()) + active = ("BY*", "RS*", "Er*", "Fl*", "TT*", "Y*O", "Y*?", "EB*", "SB*", "**", "CV*", "WD*", "Ro*", "El*", "Em*", "X", "Ae*", "Be*", "a2*", "Pu*", "LP*", "Mi*") + rows_out = [] + for n, m in sorted(got.items()): + s = sim.get(n) + vet = "active-star" if s and s[1] in active else None + if vet is None: + ra, de = float(m["RAJ2000"]), float(m["DEJ2000"]) + box = 1.0 / 3600 + for g in core.datalab("SELECT type FROM ls_dr10.tractor WHERE ra BETWEEN %.6f AND %.6f AND dec BETWEEN %.6f AND %.6f" % ( + ra - box / math.cos(math.radians(de)), ra + box / math.cos(math.radians(de)), de - box, de + box)): + if g["type"] not in ("PSF", "DUP"): + vet = "background-galaxy" + rows_out.append(dict(name=n, simbad=s, flux=m.get("Ftot"), sep=round(float(m["angDist"]), 2), vet=vet)) + mean = float(np.mean(null)) + print("%d zone stars and %d stars 1-5 deg away north of -40; VLASS within 3 arcsec: zone %d %s, away %d (share %.4f, %.2f expected in the zone, p %.3g); " + "zone moved 2 arcmin %s (mean %.1f)" % (len(zone), len(near), len(got), [(r["name"], r["simbad"], r["flux"], r["sep"], r["vet"]) for r in rows_out], + len(far), share, exp, p, null, mean)) + if record: + core.record_run("etz_vlass_stars", "Radio from Earth's transit zone", "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); VLASS epoch-1 " + "components (J/ApJS/255/30) by CDS XMatch; SIMBAD; Legacy Survey DR10 (Data Lab)", + "stars within 100 pc and 0.264 deg of the ecliptic north of -40 deg: %d" % len(zone), os.path.abspath(__file__), "etzradio", len(zone), + "stars", dict(zone_deg=zone_deg, control_deg=control_deg, radius_arcsec=radius_arcsec, epoch=epoch, dec_min=dec_min), + "the share 1-5 deg away (%d of %d); the zone moved 2 arcmin: %s" % (len(far), len(near), null), + "3 GHz emission from a star that sees Earth transit, beyond the rate of stars beside the zone", + "%d against %.2f from the share beside the zone (p %.3g) and a mean of %.1f moved" % (len(got), exp, p, mean), + [dict(target="gaia_dr3:%s" % r["name"][1:], vet=r["vet"] or ("chance-rate" if p > 0.01 else None), + note="SIMBAD %s; VLASS %s mJy at %.2f arcsec" % (r["simbad"], r["flux"], r["sep"])) for r in rows_out]) + print("recorded") + + +glitchsync_DOC = r"""Glitches firing together: the Jodrell Bank glitch catalogue (Basu et al. 2022, gTable.html); glitches whose epochs are known to 2 days or better, pairs in different pulsars whose epochs agree within the sum of their uncertainties, against the count with each pulsar's glitches moved together by a random 100-2000 days either way in 1000 draws. A spin-up is the neutron star's own superfluid letting go, and nothing natural reaches two neutron stars at once. + + python -I seti.py radio_sky glitchsync [record] [--max-err-days 2] [--shift-days 100 2000] [--draws 1000]""" + +GLITCH_URL = "https://www.jb.man.ac.uk/pulsar/glitches/gTable.html" + + +def glitch_rows(): + """Every glitch of the Jodrell Bank table: pulsar, epoch (MJD), its uncertainty in days (None where the table gives none) and dF/F.""" + path = core.results("jbo_glitches.html") + if not os.path.exists(path): + open(path, "wb").write(core.get(GLITCH_URL, timeout=300)) + import html as htmllib + text = open(path, encoding="latin-1").read() + out = [] + for row in re.findall(r"]*>(.*?)", text, re.S): + c = [htmllib.unescape(re.sub(r"<[^>]+>", "", x)).strip() for x in re.findall(r"]*>(.*?)", row, re.S)] + if len(c) >= 7 and c[0].isdigit() and num(c[4]) is not None: + out.append(dict(psr=c[2], name=c[1], mjd=float(c[4]), err=num(c[5]), size=num(c[6]))) + return out + + +def glitch_pairs(gl): + """Pairs of glitches in different pulsars whose epochs agree within the sum of their uncertainties.""" + gl = sorted(gl, key=lambda g: g["mjd"]) + out = [] + for i, a in enumerate(gl): + for b in gl[i + 1:]: + if b["mjd"] - a["mjd"] > 4: + break + if a["psr"] != b["psr"] and abs(b["mjd"] - a["mjd"]) <= a["err"] + b["err"]: + out.append((a, b)) + return out + + +def glitchsync_main(record=False, max_err_days=2.0, shift_days=[100.0, 2000.0], draws=1000): + every = glitch_rows() + gl = [g for g in every if g["err"] is not None and g["err"] <= max_err_days] + pairs = glitch_pairs(gl) + rng = np.random.default_rng(7) + by = {} + for g in gl: + by.setdefault(g["psr"], []).append(g) + drawn = [] + for _ in range(draws): + moved = [] + for psr, gs in by.items(): + d = rng.uniform(shift_days[0], shift_days[1]) * rng.choice((-1, 1)) + moved += [dict(g, mjd=g["mjd"] + d) for g in gs] + drawn.append(len(glitch_pairs(moved))) + draws = np.array(drawn) + p = float(np.mean(draws >= len(pairs))) + print("%d glitches in the table, %d timed to 2 days or better in %d pulsars; pairs in different pulsars within their uncertainties: %d %s; moved: mean %.2f, " + "95th percentile %d, as many or more in %.3f" % (len(every), len(gl), len(by), len(pairs), [(a["name"], a["mjd"], a["err"], b["name"], b["mjd"], b["err"]) + for a, b in pairs], draws.mean(), np.percentile(draws, 95), p)) + if record: + core.record_run("glitch_coincidences", "Glitches firing together", "Jodrell Bank glitch catalogue (Basu et al. 2022)", + "glitches timed to 2 days or better: %d in %d pulsars" % (len(gl), len(by)), os.path.abspath(__file__), "glitchsync", len(gl), "glitches", + dict(max_err_days=max_err_days, shift_days=shift_days, draws=len(draws)), "each pulsar's glitches moved together: mean %.2f, 95th percentile %d" % ( + draws.mean(), np.percentile(draws, 95)), "two neutron stars spinning up at the same moment", + "%d pairs against a mean of %.2f moved (p %.3f)" % (len(pairs), draws.mean(), p), + [dict(target="psr:J%s" % g["psr"], vet="chance-rate" if p > 0.01 else None, note="glitch at MJD %.2f +- %s, with %s at MJD %.2f" % ( + g["mjd"], g["err"], o["name"], o["mjd"])) for a, b in pairs for g, o in ((a, b), (b, a))]) + print("recorded") + + +methanolhigh_DOC = r"""Methanol masers away from the Galactic plane: the 6.7 GHz methanol masers of Pestalozzi, Minier and Booth (2005; J/A+A/432/737) more than 2 deg from the plane; this maser arises in the envelopes of forming massive stars and nowhere else, and the massive-star nurseries lie in the plane. Each is read for its IRAS or MSX counterpart and for SIMBAD's young stars, H II regions and clouds within 1 arcmin, then 5. + + python -I seti.py radio_sky methanolhigh [record] [--latitude-deg 2] [--radius-arcmin 1 5]""" + +METHANOL_YOUNG = ("Y*O", "Y*?", "TT*", "TT?", "HII", "MoC", "DNe", "RNe", "ISM", "HH", "out", "of?", "pA?", "smm", "mm", "Cl*", "OpC", "cor", "Ae*", "Ae?", "Or*", + "FIR", "IR", "EmO", "PoC", "GNe", "SFR", "bub", "Cld", "glb") + + +def methanolhigh_main(record=False, latitude_deg=2.0, radius_arcmin=[1.0, 5.0]): + rows = core.tap("vizier", 'SELECT Name, RAJ2000, DEJ2000, GLON, GLAT, IRAS, MSX, OName, PFlux FROM "J/A+A/432/737/catalog"') + off = [r for r in rows if abs(float(r["GLAT"])) > latitude_deg] + out = [] + for r in off: + young, radius = {}, None + for arcmin in radius_arcmin: + kinds = core.simbad_types_near(float(r["RAJ2000"]), float(r["DEJ2000"]), arcmin / 60.0) + young = {k: n for k, n in kinds.items() if k in METHANOL_YOUNG} + if young: + radius = arcmin + break + counterpart = (r["IRAS"] or "").strip() or (r["MSX"] or "").strip() + vet = "young-star" if young or counterpart else None + out.append(dict(name=r["Name"].strip(), b=float(r["GLAT"]), flux=num(r["PFlux"]), other=(r["OName"] or "").strip(), counterpart=counterpart, + young=young, radius=radius, vet=vet)) + left = [o for o in out if o["vet"] is None] + print("%d methanol masers, %d more than 2 deg from the plane; %d at a star-forming region (an IRAS or MSX source, or SIMBAD's young objects within 1 or 5 arcmin); " + "unexplained %d %s" % (len(rows), len(off), len(off) - len(left), len(left), [(o["name"], o["b"], o["flux"]) for o in left])) + for o in out: + print(" %s b %+.2f, %s Jy, %s; counterpart %s; SIMBAD within %s arcmin %s; %s" % (o["name"], o["b"], o["flux"], o["other"] or "-", + o["counterpart"] or "none", o["radius"], o["young"], o["vet"])) + if record: + core.record_run("methanol_masers_off_plane", "Methanol masers away from the Galactic plane", "Pestalozzi, Minier and Booth (2005) 6.7 GHz methanol masers " + "(J/A+A/432/737); SIMBAD", "masers more than 2 deg from the plane: %d of %d" % (len(off), len(rows)), os.path.abspath(__file__), "methanolhigh", + len(off), "masers", dict(latitude_deg=latitude_deg, radius_arcmin=radius_arcmin), "none: each maser read for its star-forming region", + "a 6.7 GHz methanol maser with no forming massive star to pump it", "%d at star-forming regions, %d unexplained" % (len(off) - len(left), len(left)), + [dict(target="maser:%s" % o["name"], stat=o["b"], unit="Galactic latitude, deg", vet=o["vet"], + note="%s; counterpart %s; SIMBAD within %s arcmin %s" % (o["other"] or "-", o["counterpart"] or "none", o["radius"], o["young"])) for o in out]) + print("recorded") + + +rfcnear_DOC = r"""Compact radio sources that move like neighbours: the Radio Fundamental Catalogue (Petrov and Kovalev 2025, rfc_2026c: 23866 VLBI-compact sources) against Gaia DR3 within 0.5 arcsec by CDS XMatch, keeping sources whose Gaia counterpart has a parallax above 2 mas at 5 sigma; a milliarcsecond-compact radio emitter within 500 pc with nothing stellar under it. Each read in SIMBAD, where radio stars, young stars and binaries explain their own emission; a counterpart more than 0.1 arcsec from the VLBI position is a star in front of a background source, and a galaxy's parallax or a doubtful Gaia solution (RUWE, excess noise, IPD peaks) is spurious. + + python -I seti.py radio_sky rfcnear [record] [--radius-arcsec 0.5] [--parallax-mas 2] [--sigma 5] [--offset-arcsec 0.1]""" + +RFC_URL = "https://astrogeo.org/sol/rfc/rfc_2026c/rfc_2026c_cat.txt" + + +def rfc_sources(): + """Every RFC source: name, common name, position (deg), position errors (mas) and the flux densities at S, C, X, U and K band (Jy, short baselines).""" + path = core.results("rfc_2026c_cat.txt") + if not os.path.exists(path): + open(path, "wb").write(core.get(RFC_URL, timeout=300)) + out = [] + for line in open(path, encoding="utf-8", errors="replace"): + if not line.startswith("RFC "): + continue + ra = 15 * (int(line[26:28]) + int(line[29:31]) / 60 + float(line[32:41]) / 3600) + de = (int(line[43:45]) + int(line[46:48]) / 60 + float(line[49:57]) / 3600) * (-1 if line[42] == "-" else 1) + flux = {b: num(line[k:k + 6]) for b, k in (("S", 104), ("C", 126), ("X", 148), ("U", 170), ("K", 192))} + out.append(dict(name=line[0:14].strip(), common=line[16:24].strip(), ra=ra, dec=de, era=num(line[59:65]), ede=num(line[66:72]), + flux={b: f for b, f in flux.items() if f is not None and f > -9})) + return out + + +def rfcnear_main(record=False, radius_arcsec=0.5, parallax_mas=2.0, sigma=5.0, offset_arcsec=0.1): + src = rfc_sources() + up = [dict(source_id="r%d" % i, ra=s["ra"], dec=s["dec"]) for i, s in enumerate(src)] + near = {} + for k in range(0, len(up), 5000): + for m in core.xmatch(up[k:k + 5000], "I/355/gaiadr3", radius_arcsec): + plx, e = num(m.get("Plx")), num(m.get("e_Plx")) + if plx is not None and e and plx > parallax_mas and plx > sigma * e: + i = int(m["source_id"][1:]) + if i not in near or float(m["angDist"]) < float(near[i]["angDist"]): + near[i] = m + sim, astro = {}, {} + if near: + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % m["Source"] for m in near.values())): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + for g in core.tap("gaia", "SELECT source_id, parallax_over_error, ruwe, astrometric_excess_noise_sig, ipd_frac_multi_peak FROM gaiadr3.gaia_source WHERE source_id IN (%s)" + % ",".join(m["Source"] for m in near.values())): + astro[g["source_id"]] = g + stellar = ("*", "PM*", "HV*", "V*", "Ro*", "BY*", "RS*", "Er*", "Fl*", "TT*", "Y*O", "Y*?", "EB*", "SB*", "**", "Al*", "bL*", "WR*", "Be*", "Ae*", "s*b", "s*r", "s*y", "RG*", + "AB*", "Mi*", "LP*", "sr*", "Pu*", "dS*", "Ce*", "gD*", "a2*", "Sy*", "CV*", "No*", "XB*", "LXB", "HXB", "Psr", "WD*", "BD*", "LM*", "Em*", "pA*", "pr*", "Or*", "HB*", "Ir*", "HS*", "Pe*", "Y*") + galaxies = ("QSO", "AGN", "Bla", "BLL", "Bz?", "Q?", "AG?", "G", "Sy1", "Sy2", "rG", "LIN", "SyG", "EmG", "GiG", "BiC", "PaG", "IG") + out = [] + for i, m in sorted(near.items()): + s = sim.get(m["Source"]) + a = astro.get(m["Source"], {}) + doubtful = (num(a.get("ruwe")) or 0) > 1.4 or (num(a.get("astrometric_excess_noise_sig")) or 0) > 2 or (num(a.get("ipd_frac_multi_peak")) or 0) > 2 + # a VLBI position and a Gaia position of the same object agree to milliarcseconds; a 0.1 arcsec offset is a star in front of a background source + vet = ("natural-type" if s and s[1] in stellar else "blend" if float(m["angDist"]) > offset_arcsec else + "astrometry" if doubtful or (s and s[1] in galaxies) else None) + out.append(dict(rfc=src[i]["name"], common=src[i]["common"], gaia=m["Source"], plx=num(m["Plx"]), g=num(m["Gmag"]), sep=round(float(m["angDist"]), 2), + flux=src[i]["flux"], simbad=s, ruwe=a.get("ruwe"), aen=a.get("astrometric_excess_noise_sig"), vet=vet)) + left = [o for o in out if o["vet"] is None] + print("%d RFC sources; %d with a Gaia DR3 counterpart within 0.5 arcsec at parallax above 2 mas (5 sigma); %d of a stellar SIMBAD type; unexplained %d" % ( + len(src), len(out), len(out) - len(left), len(left))) + for o in sorted(out, key=lambda o: -o["plx"]): + print(" %s (%s): Gaia DR3 %s, parallax %.2f mas, G %.1f, %.2f arcsec, RUWE %s, excess noise %s sigma; %s Jy; SIMBAD %s; %s" % ( + o["rfc"], o["common"] or "-", o["gaia"], o["plx"], o["g"], o["sep"], o["ruwe"], o["aen"], o["flux"], o["simbad"], o["vet"])) + if record: + core.record_run("rfc_nearby_compact", "Compact radio sources that move like neighbours", "Radio Fundamental Catalogue rfc_2026c; Gaia DR3 (I/355) by CDS XMatch; SIMBAD", + "VLBI-compact sources: %d" % len(src), os.path.abspath(__file__), "rfcnear", len(src), "radio sources", + dict(radius_arcsec=radius_arcsec, parallax_mas=parallax_mas, sigma=sigma, offset_arcsec=offset_arcsec), + "none: each counterpart read in SIMBAD", "a milliarcsecond-compact radio source within 500 pc that is not a star", + "%d within 500 pc, %d of them stars; %d unexplained" % (len(out), len(out) - len(left), len(left)), + [dict(target="gaia_dr3:%s" % o["gaia"], stat=o["plx"], unit="parallax mas", vet=o["vet"], note="%s %s at %.2f arcsec; %s Jy; RUWE %s; SIMBAD %s" % ( + o["rfc"], o["common"], o["sep"], o["flux"], o["ruwe"], o["simbad"])) for o in out]) + print("recorded") + + +frbrhythm_DOC = r"""Rhythm in the repeaters: the CHIME/FRB first catalogue's repeaters with five or more bursts (Hashimoto et al. 2022 table, J/MNRAS/511/1961), sub-bursts at one arrival time counted once; for each, the share of its burst intervals that are integer multiples of a base period to 2 per cent, over base periods from 10 minutes to 100 days, leaving out the multiples and submultiples of half a sidereal day, which are the transit telescope's own windows, against 2000 sets of the same number of bursts drawn on random days at the real bursts' phases in the sidereal day. A clock keeps its ticks to a fraction of a per cent; a magnetar's activity window, like FRB 20180916B's 16-day cycle, keeps its bursts inside a quarter of the cycle and nowhere near its ticks. + + python -I seti.py radio_sky frbrhythm [record] [--min-bursts 5] [--tol 0.02] [--draws 2000] [--period-range-d 0.00694 100] [--n-periods 4000]""" + + +def frbrhythm_score(t, periods, tol=0.02): + """The largest share of a burst list's intervals that are integer multiples of a base period to tol, and that period.""" + t = np.sort(np.asarray(t, float)) + d = t[1:] - t[0] + best = (0.0, None) + for P in periods: + k = d / P + frac = np.abs(k - np.round(k)) + share = float(np.mean((frac < tol) & (np.round(k) >= 1))) + if share > best[0]: + best = (share, float(P)) + return best + + +def frbrhythm_main(record=False, min_bursts=5, tol=0.02, draws=2000, period_range_d=[10.0 / 1440.0, 100.0], n_periods=4000): + rows = core.tap("vizier", 'SELECT Name, RpName, MJD400 FROM "J/MNRAS/511/1961/table" WHERE MJD400 IS NOT NULL') + rep = {} + for r in rows: + n = (r["RpName"] or "").strip() + if n and not n.startswith("-"): + # the table carries a burst's sub-bursts as rows of their own at one arrival time + if all(abs(float(r["MJD400"]) - t) > 1e-3 for t in rep.get(n, [])): + rep.setdefault(n, []).append(float(r["MJD400"])) + sidereal = 0.99726957 + periods = np.logspace(math.log10(period_range_d[0]), math.log10(period_range_d[1]), n_periods) + # a transit telescope sees a source once or twice a sidereal day, so its bursts fall at multiples of half that day whatever the source does: + # ticks at the sidereal day's multiples and submultiples are the telescope's, and the random bursts keep the real bursts' phases in the sidereal day + periods = periods[np.abs(periods / (sidereal / 2) - np.round(periods / (sidereal / 2))) > 0.01] + rng = np.random.default_rng(16) + out = [] + for n, t in sorted(rep.items()): + if len(t) < min_bursts: + continue + t = np.sort(t) + share, P = frbrhythm_score(t, periods, tol) + span = t[-1] - t[0] + phases = np.mod(t, sidereal) + days = int(span / sidereal) + 1 + + def draw(): + return np.sort(t[0] + sidereal * rng.integers(0, days, len(t)) + rng.choice(phases, len(t)) - phases[0]) + null = np.array([frbrhythm_score(draw(), periods, tol)[0] for _ in range(draws)]) + p = float(np.mean(null >= share)) + out.append(dict(name=n, n=len(t), span=round(float(span), 1), share=round(share, 3), period_d=round(P, 4), p=p, null=round(float(np.mean(null)), 3))) + print(" %s: %d bursts over %.1f d; %.0f per cent of intervals on a %.4f d tick, random bursts in the telescope's windows give %.0f per cent (p %.3f)" % ( + n, len(t), span, 100 * share, P, 100 * np.mean(null), p), flush=True) + print("%d repeaters with five or more bursts; on a clock beyond chance: %d" % (len(out), sum(1 for o in out if o["p"] < 0.01))) + if record: + core.record_run("chime_repeater_rhythm", "Rhythm in the repeaters", "CHIME/FRB first catalogue as tabulated by Hashimoto et al. (2022; J/MNRAS/511/1961)", + "repeaters with %d or more bursts: %d" % (min_bursts, len(out)), os.path.abspath(__file__), "frbrhythm", len(out), "repeaters", + dict(min_bursts=min_bursts, tolerance=tol, periods_d=period_range_d, n_periods=n_periods, draws=draws, excluded="multiples of half a sidereal day"), + "%d random burst sets on random days at the real bursts' sidereal phases" % draws, + "a repeater whose intervals are integer multiples of one period to %g" % tol, "; ".join("%s %.0f per cent on %.3f d (p %.3f)" % ( + o["name"], 100 * o["share"], o["period_d"], o["p"]) for o in out), + [dict(target="frb:%s" % o["name"], stat=o["share"], p=o["p"], unit="share of intervals on the best tick", vet="chance-rate" if o["p"] > 0.01 else None, + note="%d bursts over %.1f d; tick %.4f d; random %.0f per cent" % (o["n"], o["span"], o["period_d"], 100 * o["null"])) for o in out]) + print("recorded") + + +wholehz_DOC = r"""Pulsars ticking in whole hertz: ATNF catalogue pulsars whose spin frequency sits within 0.00001 Hz of a whole number of hertz, or whose period sits within 0.00001 ms of a whole number of milliseconds, a clock set to the second, against the same windows at half-integers and the count uniform fractions give; a catalogue period rounded to few digits lands on the grid by construction, so each match is read for the digits its period carries. + + python -I seti.py radio_sky wholehz [record] [--tol 0.00001] [--digits-min 8]""" + + +def wholehz_main(record=False, tol=0.00001, digits_min=8): + from scipy.stats import poisson + rows = catalogues.pulsars("PSRJ, P0, P1, DM, Dist, Binary, Assoc") + out, half, n, n_prec = [], [], 0, 0 + for r in rows: + raw = str(r["P0"]).strip() + P = num(r["P0"]) + if P is None or P <= 0: + continue + digits = len(raw.replace("-", "").replace(".", "").lstrip("0")) + n += 1 + n_prec += digits >= digits_min + f = 1.0 / P + for key, val, unit in (("frequency", f, "Hz"), ("period", P * 1000.0, "ms")): + k = round(val) + o = dict(psr=r["PSRJ"], key=key, value=val, n=int(k), off=val - k, unit=unit, P=P, raw=raw, digits=digits, dm=num(r["DM"]), binary=str(r["Binary"] or "").strip(), + assoc=str(r["Assoc"] or "").strip(), vet=None) + if k >= 1 and abs(val - k) < tol: + o["vet"] = "single-record" if digits < digits_min else None + out.append(o) + elif abs(val - (math.floor(val) + 0.5)) < tol: + half.append(o) + firm = [o for o in out if o["vet"] is None] + rounded = [o for o in out if o["vet"] == "single-record"] + half = [o for o in half if o["digits"] >= digits_min] + # the expectation counts the periods measured finely enough to land in the window by measurement rather than by rounding + exp = n_prec * 2 * tol * 2 + p = float(poisson.sf(len(firm) - 1, exp)) if firm else 1.0 + for o in firm: + o["vet"] = "chance-rate" if p > 0.01 else None + print("%d pulsars with periods, %d of them quoted to %d digits or more; of those, within %g of a whole hertz or whole millisecond: %d (%.3f expected from uniform " + "fractions, Poisson p %.3g), at half-integers: %d; periods rounded to fewer digits that land on the grid by construction: %d" % ( + n, n_prec, digits_min, tol, len(firm), exp, p, len(half), len(rounded))) + for o in sorted(out, key=lambda o: abs(o["off"])): + print(" %s: %s %.6f %s (%d, off by %+.6f), P0 %s s (%d digits), DM %s, %s%s; %s" % ( + o["psr"], o["key"], o["value"], o["unit"], o["n"], o["off"], o["raw"], o["digits"], o["dm"], "binary" if o["binary"] else "isolated", " " + o["assoc"] if o["assoc"] else "", + o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out, half=half), open(core.results("pulsars_whole_hz.json"), "w"), indent=1) + if record: + core.record_run( + "psrcat_whole_hertz", "Pulsars ticking in whole hertz", "ATNF pulsar catalogue (VizieR B/psr)", + "pulsars with periods quoted to %d digits or more: %d of %d" % (digits_min, n_prec, n), os.path.abspath(__file__), "wholehz", + n_prec, "pulsars", dict(tol=tol, digits_min=digits_min), "uniform fractions give %.3f in the two windows; the half-integer windows hold %d" % (exp, len(half)), + "a spin frequency within %g Hz of a whole hertz or a period within %g ms of a whole millisecond, among periods quoted to %d digits or more" % (tol, tol, digits_min), + "%d against %.3f expected and %d at half-integers (Poisson p %.3g); %d more periods rounded to fewer digits land on the grid by construction" % ( + len(firm), exp, len(half), p, len(rounded)), + [dict(target="psr:%s" % o["psr"], stat=o["off"], unit="%s from a whole %s" % (o["unit"], o["unit"]), vet=o["vet"], + note="%s %.6f %s, P0 %s s (%d digits), DM %s" % (o["key"], o["value"], o["unit"], o["raw"], o["digits"], o["dm"])) for o in out]) + print("recorded") + + +hydrogenhz_DOC = r"""Pulsars on the hydrogen line's decimals: ATNF catalogue pulsars whose spin frequency, quoted to eight digits or more, sits within one part in 100,000 of the hydrogen line's frequency scaled by a power of ten (1.420405751 Hz, 14.20405751 Hz, 142.0405751 Hz, 0.1420405751 Hz), the one frequency every radio astronomer knows, against the same windows around the digits shifted by half a decade and the count uniform logarithmic fractions give. + + python -I seti.py radio_sky hydrogenhz [record] [--tol-rel 0.00001] [--digits-min 8]""" + +HYDROGEN_HZ = 1420.405751768 + + +def hydrogenhz_main(record=False, tol_rel=0.00001, digits_min=8): + from scipy.stats import poisson + rows = catalogues.pulsars("PSRJ, P0, DM, Dist, Binary, Assoc") + out, ctl, n = [], [], 0 + for r in rows: + raw = str(r["P0"]).strip() + P = num(r["P0"]) + if P is None or P <= 0 or len(raw.replace("-", "").replace(".", "").lstrip("0")) < digits_min: + continue + n += 1 + f = 1.0 / P + # the decade in which the line's digits fall nearest this frequency + k = round(math.log10(f / HYDROGEN_HZ)) + target = HYDROGEN_HZ * 10.0 ** k + o = dict(psr=r["PSRJ"], f=f, target=target, decade=int(k), rel=f / target - 1, P=P, dm=num(r["DM"]), binary=str(r["Binary"] or "").strip(), vet=None) + if abs(o["rel"]) < tol_rel: + out.append(o) + k2 = round(math.log10(f / HYDROGEN_HZ) - 0.5) + t2 = HYDROGEN_HZ * 10.0 ** (k2 + 0.5) + if abs(f / t2 - 1) < tol_rel: + ctl.append(dict(o, target=t2)) + # a window of width 2 tol_rel in log10 f covers that fraction of each decade, uniform in log frequency + exp = n * 2 * tol_rel / math.log(10) + p = float(poisson.sf(len(out) - 1, exp)) if out else 1.0 + for o in out: + o["vet"] = "chance-rate" if p > 0.01 else None + print("%d pulsars with frequencies from periods of %d digits or more; within %g of the hydrogen line's digits in any decade: %d (%.4f expected, Poisson p %.3g); " + "at the half-decade shift: %d" % (n, digits_min, tol_rel, len(out), exp, p, len(ctl))) + for o in sorted(out, key=lambda o: abs(o["rel"])): + print(" %s: %.8f Hz against %.8f (decade %d, off by %.2e), P0 %.9f s, DM %s, %s; %s" % ( + o["psr"], o["f"], o["target"], o["decade"], o["rel"], o["P"], o["dm"], "binary" if o["binary"] else "isolated", o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out, control=ctl), open(core.results("pulsars_hydrogen_decimals.json"), "w"), indent=1) + if record: + core.record_run( + "psrcat_hydrogen_decimals", "Pulsars on the hydrogen line's decimals", "ATNF pulsar catalogue (VizieR B/psr)", + "pulsars with periods quoted to %d digits or more: %d" % (digits_min, n), os.path.abspath(__file__), "hydrogenhz", n, "pulsars", + dict(tol_rel=tol_rel, digits_min=digits_min, line_hz=HYDROGEN_HZ), "uniform logarithmic fractions give %.4f; the half-decade windows hold %d" % (exp, len(ctl)), + "a spin frequency within %g of 1420.405751 Hz scaled by a power of ten" % tol_rel, + "%d against %.4f expected and %d at the half-decade shift (Poisson p %.3g)" % (len(out), exp, len(ctl), p), + [dict(target="psr:%s" % o["psr"], stat=o["rel"], unit="fractional offset from the line's digits", vet=o["vet"], + note="%.8f Hz against %.8f (decade %d), P0 %.9f s, DM %s" % (o["f"], o["target"], o["decade"], o["P"], o["dm"])) for o in out]) + print("recorded") + + +maserrest_DOC = r"""Masers at rest in the universe's frame: the 6.7 GHz methanol masers of Pestalozzi et al. (2005) (VizieR J/A+A/432/737), each peak velocity taken from the kinematic local standard of rest to the Sun and then to the cosmic microwave background's frame (the Sun at 369.82 km/s toward Galactic 264.0, +48.3 deg), those within 2 km/s of rest there, a beacon tuned to the one frame every observer shares, against the count the velocities' own density around zero gives; a maser's velocity is its cloud's, so a match at rest is a coincidence unless the masers crowd there. + + python -I seti.py radio_sky maserrest [record] [--tol-kms 2] [--window-kms 30]""" + + +def maserrest_main(record=False, tol_kms=2.0, window_kms=30.0): + from scipy.stats import poisson + rows = core.tap("vizier", 'SELECT Name, RAJ2000, DEJ2000, GLON, GLAT, Vlsr, Vmin, Vmax, PFlux FROM "J/A+A/432/737/catalog" WHERE Vlsr IS NOT NULL') + + def unit(l, b): + l, b = math.radians(l), math.radians(b) + return (math.cos(b) * math.cos(l), math.cos(b) * math.sin(l), math.sin(b)) + # the standard solar motion defining the kinematic LSR, 20 km/s toward RA 18h Dec +30 (1900), in Galactic coordinates; the CMB dipole from Planck 2018 + std = unit(56.16, 22.75) + cmb = unit(264.021, 48.253) + out = [] + for r in rows: + v, l, b = num(r["Vlsr"]), num(r["GLON"]), num(r["GLAT"]) + if None in (v, l, b): + continue + n = unit(l, b) + v_helio = v - 20.0 * sum(a * c for a, c in zip(n, std)) + v_cmb = v_helio + 369.82 * sum(a * c for a, c in zip(n, cmb)) + out.append(dict(name=str(r["Name"]).strip(), l=l, b=b, v_lsr=v, v_helio=v_helio, v_cmb=v_cmb, flux=num(r["PFlux"]), vmin=num(r["Vmin"]), vmax=num(r["Vmax"]))) + vc = np.array([o["v_cmb"] for o in out]) + hits = [o for o in out if abs(o["v_cmb"]) < tol_kms] + near = int((np.abs(vc) < window_kms).sum()) + exp = near * tol_kms / window_kms + p = float(poisson.sf(len(hits) - 1, exp)) if hits else 1.0 + for o in hits: + o["vet"] = "chance-rate" if p > 0.01 else None + print("%d methanol masers with velocities; in the microwave background's frame they run from %.0f to %.0f km/s, %d within %g km/s of rest; at rest within %g km/s: %d " + "(%.2f expected from the density within %g km/s, Poisson p %.3g)" % (len(out), vc.min(), vc.max(), near, window_kms, tol_kms, len(hits), exp, window_kms, p)) + for o in sorted(hits, key=lambda o: abs(o["v_cmb"])): + print(" %s (l %.2f, b %+.2f): V_LSR %+.1f, heliocentric %+.1f, in the background's frame %+.2f km/s, range %s to %s, %s Jy; %s" % ( + o["name"], o["l"], o["b"], o["v_lsr"], o["v_helio"], o["v_cmb"], o["vmin"], o["vmax"], o["flux"], o["vet"] or "unexplained")) + json.dump(dict(n=len(out), hits=hits), open(core.results("masers_cmb_rest.json"), "w"), indent=1) + if record: + core.record_run( + "methanol_masers_cmb_rest", "Masers at rest in the universe's frame", "Pestalozzi et al. (2005) 6.7 GHz methanol maser catalogue (VizieR J/A+A/432/737)", + "masers with peak velocities: %d" % len(out), os.path.abspath(__file__), "maserrest", len(out), "masers", dict(tol_kms=tol_kms, window_kms=window_kms, + sun_cmb_kms=[369.82, 264.021, 48.253]), + "the velocities' own density within %g km/s of rest: %d, giving %.2f in the window" % (window_kms, near, exp), + "a maser within %g km/s of rest in the microwave background's frame" % tol_kms, "%d against %.2f expected (Poisson p %.3g)" % (len(hits), exp, p), + [dict(target="maser:%s" % o["name"], stat=o["v_cmb"], unit="km/s in the microwave background's frame", vet=o["vet"], + note="V_LSR %+.1f, heliocentric %+.1f km/s, range %s to %s, %s Jy, l %.2f b %+.2f" % (o["v_lsr"], o["v_helio"], o["vmin"], o["vmax"], o["flux"], o["l"], o["b"])) + for o in hits]) + print("recorded") + + +psrages_DOC = r"""Slow pulsars older than the universe: ATNF catalogue pulsars with periods above 0.1 s, so not recycled, whose intrinsic period derivative (the Shklovskii term removed) is positive but so small that the characteristic age P / (2 Pdot) exceeds 15 Gyr, a slow clock that has stopped losing time, which a dipole spinning down cannot be; each read for the derivative's error, since an age beyond the universe's from a derivative measured at a few sigma is the error, and for its binary and association. + + python -I seti.py radio_sky psrages [record] [--p-min-s 0.1] [--age-min-gyr 15] [--sigma 3]""" + + +def psrages_main(record=False, p_min_s=0.1, age_min_gyr=15.0, sigma=3.0): + rows = catalogues.pulsars("PSRJ, P0, P1, e_P1, P1I, DM, Dist, Binary, Assoc") + out, n = [], 0 + for r in rows: + P, pd, epd, pdi = num(r["P0"]), num(r["P1"]), num(r["e_P1"]), num(r["P1I"]) + if P is None or P < p_min_s or pd is None: + continue + n += 1 + use = pdi if pdi is not None else pd + if use <= 0: + continue + age = P / (2 * use) / (365.25 * 86400 * 1e9) + if age > age_min_gyr: + out.append(dict(psr=r["PSRJ"], P=P, pdot=pd, e_pdot=epd, pdot_int=pdi, age_gyr=age, snr=(pd / epd) if epd else None, dm=num(r["DM"]), dist=num(r["Dist"]), + binary=str(r["Binary"] or "").strip(), assoc=str(r["Assoc"] or "").strip(), + vet="single-record" if not epd or pd / epd < sigma else "binary" if str(r["Binary"] or "").strip() else None)) + left = [o for o in out if o["vet"] is None] + print("%d pulsars slower than %g s with a period derivative; characteristic ages beyond %g Gyr: %d, %d with derivatives below %g sigma, %d in binaries; unexplained %d" % ( + n, p_min_s, age_min_gyr, len(out), sum(o["vet"] == "single-record" for o in out), sigma, sum(o["vet"] == "binary" for o in out), len(left))) + for o in sorted(out, key=lambda o: -o["age_gyr"]): + print(" %s: P %.4f s, Pdot %.2e +- %s (intrinsic %s), age %.0f Gyr, DM %s, %s kpc%s%s; %s" % ( + o["psr"], o["P"], o["pdot"], o["e_pdot"], o["pdot_int"], o["age_gyr"], o["dm"], o["dist"], ", binary " + o["binary"] if o["binary"] else "", + ", " + o["assoc"] if o["assoc"] else "", o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out), open(core.results("pulsars_older_than_universe.json"), "w"), indent=1) + if record: + core.record_run( + "psrcat_slow_ancient", "Slow pulsars older than the universe", "ATNF pulsar catalogue (VizieR B/psr)", "pulsars slower than %g s with a period derivative: %d" % (p_min_s, n), + os.path.abspath(__file__), "psrages", n, "pulsars", dict(p_min_s=p_min_s, age_min_gyr=age_min_gyr, sigma=sigma), "the derivatives' errors and the binaries", + "a slow pulsar whose intrinsic spin-down gives an age beyond %g Gyr" % age_min_gyr, + "%d: %d with derivatives below %g sigma, %d in binaries; %d unexplained" % (len(out), sum(o["vet"] == "single-record" for o in out), sigma, + sum(o["vet"] == "binary" for o in out), len(left)), + [dict(target="psr:%s" % o["psr"], stat=o["age_gyr"], unit="characteristic age, Gyr", vet=o["vet"], + note="P %.4f s, Pdot %.2e +- %s, intrinsic %s, DM %s, %s" % (o["P"], o["pdot"], o["e_pdot"], o["pdot_int"], o["dm"], o["binary"] or "isolated")) for o in out]) + print("recorded") + + +coldbdradio_DOC = r"""Radio from cold brown dwarfs: the T and Y dwarfs of the Kirkpatrick et al. (2021) 20 pc census carried to 2019.0 and matched to the VLASS epoch-1 component catalogue (Gordon et al. 2021, VizieR J/ApJS/255/30) within 5 arcsec by CDS XMatch, a 3 GHz source at a body of a few hundred kelvin, whose auroral radio is rare and faint and whose made transmitter would not be, against the positions moved 2 arcmin in eight directions; each match read for its flux and extent. + + python -I seti.py radio_sky coldbdradio [record] [--radius-arcsec 5] [--epoch 2019.0]""" + + +def coldbdradio_main(record=False, radius_arcsec=5.0, epoch=2019.0): + from scipy.stats import poisson + from setitools.catalogues import cold_dwarfs, shifted_matches + dw = cold_dwarfs(epoch) + pos = [dict(name=d["name"], ra=d["ra"], dec=d["dec"]) for d in dw] + hits, null = shifted_matches(pos, "J/ApJS/255/30/comp", radius_arcsec) + got = {} + for m in hits: + if m["source_id"] not in got or float(m["angDist"]) < float(got[m["source_id"]]["angDist"]): + got[m["source_id"]] = m + exp = float(np.mean(null)) if len(null) else 0.0 + p = float(poisson.sf(len(got) - 1, exp)) if got and exp > 0 else 1.0 + out = [] + by = {d["name"]: d for d in dw} + for n, m in got.items(): + d = by[n] + out.append(dict(name=n, sptype=d["sptype"], teff=d["teff"], plx=d["plx"], sep=float(m["angDist"]), flux_mjy=num(m.get("Ftot")), peak=num(m.get("Fpeak")), maj=num(m.get("Maj")), + vet="chance-rate" if p > 0.01 else None)) + print("%d T and Y dwarfs within 20 pc; VLASS components within %g arcsec at %.1f: %d (the positions moved 2 arcmin give %s, mean %.2f; Poisson p %.3g)" % ( + len(dw), radius_arcsec, epoch, len(got), null, exp, p)) + for o in sorted(out, key=lambda o: o["sep"]): + print(" %s (%s, %s K, %.1f mas): %.1f mJy total, %.1f mJy peak, %s arcsec major axis at %.1f arcsec; %s" % ( + o["name"], o["sptype"], o["teff"], o["plx"], o["flux_mjy"] or 0, o["peak"] or 0, o["maj"], o["sep"], o["vet"] or "unexplained")) + json.dump(dict(n=len(dw), null=null, hits=out), open(core.results("cold_dwarfs_vlass.json"), "w"), indent=1) + if record: + core.record_run( + "vlass_cold_dwarfs", "Radio from cold brown dwarfs", "Kirkpatrick et al. (2021) 20 pc census; VLASS epoch-1 components (VizieR J/ApJS/255/30) by CDS XMatch", + "T and Y dwarfs within 20 pc: %d" % len(dw), os.path.abspath(__file__), "coldbdradio", len(dw), "dwarfs", dict(radius_arcsec=radius_arcsec, epoch=epoch), + "the positions moved 2 arcmin in eight directions: %s" % null, "a VLASS component within %g arcsec of a T or Y dwarf at %.1f" % (radius_arcsec, epoch), + "%d against a mean of %.2f at the moved positions (Poisson p %.3g)" % (len(got), exp, p), + [dict(target="dwarf:%s" % " ".join(o["name"].split()), stat=o["flux_mjy"], unit="VLASS total flux, mJy", vet=o["vet"], + note="%s, %s K, %.1f arcsec, peak %s mJy, major axis %s arcsec" % (o["sptype"], o["teff"], o["sep"], o["peak"], o["maj"])) for o in out]) + print("recorded") + + +psretz_DOC = r"""Pulsars in Earth's transit zone: the ATNF catalogue's pulsars by ecliptic latitude, the count within the 0.262 deg half-width of the zone from which Earth is seen to transit the Sun against the mean and scatter of the twenty strips of that width on either side out to 5.5 deg, a beacon placed where a watcher of our transits would place it; the Galactic plane crosses the ecliptic twice and fills the strips beside the zone as it fills the zone, and each pulsar in the zone is listed with its period, distance and binary. + + python -I seti.py radio_sky psretz [record] [--half-width-deg 0.262] [--band-deg 5.5]""" + + +def psretz_main(record=False, half_width_deg=0.262, band_deg=5.5): + rows = catalogues.pulsars("PSRJ, RAJ2000, DEJ2000, P0, DM, Dist, Assoc, Binary, PB") + ps = [dict(name=str(r["PSRJ"]).strip(), ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), P=num(r["P0"]), dm=num(r["DM"]), dist=num(r["Dist"]), assoc=str(r["Assoc"] or "").strip(), + binary=str(r["Binary"] or "").strip(), pb=num(r["PB"])) for r in rows] + ps = [p for p in ps if p["ra"] is not None and p["dec"] is not None] + lam, beta = science.ecliptic_lon_lat([p["ra"] for p in ps], [p["dec"] for p in ps]) + for p, l, b in zip(ps, lam, beta): + p["lam"], p["beta"] = float(l), abs(float(b)) + z = science.zone_excess([p["beta"] for p in ps], half_width_deg, band_deg) + msp = science.zone_excess([p["beta"] for p in ps if p["P"] and p["P"] < 0.03], half_width_deg, band_deg) + inzone = [p for p in ps if p["beta"] < half_width_deg] + for p in inzone: + p["vet"] = "chance-rate" if z["p"] > 0.01 and msp["p"] > 0.01 else None + print("%d pulsars; in the zone: %d against %.2f +- %.2f beside it (z %+.2f, Poisson p %.3g); millisecond pulsars: %d against %.2f +- %.2f (z %+.2f, p %.3g)" % ( + len(ps), z["zone"], z["mean"], z["sd"], z["z"], z["p"], msp["zone"], msp["mean"], msp["sd"], msp["z"], msp["p"])) + for p in sorted(inzone, key=lambda p: p["beta"]): + print(" %s: ecliptic latitude %+.3f deg, P %s s, DM %s, %s kpc, %s%s; %s" % (p["name"], p["beta"], p["P"], p["dm"], p["dist"], p["assoc"] or "no association", + ", binary " + p["binary"] if p["binary"] else "", p["vet"] or "unexplained")) + json.dump(dict(n=len(ps), all=z, msp=msp, zone=inzone), open(core.results("pulsars_transit_zone.json"), "w"), indent=1) + if record: + core.record_run( + "atnf_transit_zone", "Pulsars in Earth's transit zone", "ATNF pulsar catalogue (VizieR B/psr)", "pulsars with positions: %d" % len(ps), os.path.abspath(__file__), + "psretz", len(ps), "pulsars", dict(half_width_deg=half_width_deg, band_deg=band_deg), + "the twenty strips of the zone's width beside it: %.2f +- %.2f, millisecond pulsars %.2f +- %.2f" % (z["mean"], z["sd"], msp["mean"], msp["sd"]), + "an excess of pulsars in the band of sky that sees Earth transit the Sun", + "%d in the zone (z %+.2f, p %.3g), %d millisecond pulsars (z %+.2f, p %.3g)" % (z["zone"], z["z"], z["p"], msp["zone"], msp["z"], msp["p"]), + [dict(target="pulsar:%s" % p["name"], stat=round(p["beta"], 4), unit="ecliptic latitude, deg", vet=p["vet"], + note="P %s s, DM %s, %s kpc, %s%s" % (p["P"], p["dm"], p["dist"], p["assoc"] or "no association", ", binary " + p["binary"] if p["binary"] else "")) + for p in inzone]) + print("recorded") + + +psrkick_DOC = r"""Pulsars faster than a kick can throw: ATNF catalogue pulsars with a measured proper motion and a distance, their transverse speeds with the proper motion taken at its lower bound, those above 2000 km/s, beyond the fastest kick a supernova is seen to give and beyond the Galaxy's escape speed, a thing driven rather than thrown; each read for its distance's provenance, since a dispersion-measure distance can be several times wrong, and for its proper motion's error. + + python -I seti.py radio_sky psrkick [record] [--v-max 2000] [--sigma 3]""" + + +def psrkick_main(record=False, v_max=2000.0, sigma=3.0): + rows = catalogues.pulsars("PSRJ, pmRA, e_pmRA, pmDE, e_pmDE, Plx, e_Plx, Dist, DistDM, r_DistDM, P0, Binary, Assoc, VTrans", "pmRA IS NOT NULL AND pmDE IS NOT NULL AND Dist IS NOT NULL") + ps = [] + for r in rows: + pmra, pmdec, d = num(r["pmRA"]), num(r["pmDE"]), num(r["Dist"]) + if None in (pmra, pmdec, d) or d <= 0: + continue + era, ede = num(r["e_pmRA"]) or 0.0, num(r["e_pmDE"]) or 0.0 + pm = math.hypot(pmra, pmdec) + epm = math.hypot(pmra * era, pmdec * ede) / pm if pm else 0.0 + low = max(pm - sigma * epm, 0.0) + ps.append(dict(name=str(r["PSRJ"]).strip(), pm=pm, epm=epm, d=d, dm_distance=num(r["DistDM"]) == d, plx=num(r["Plx"]), eplx=num(r["e_Plx"]), v=4.74047 * pm * d, + v_low=4.74047 * low * d, P=num(r["P0"]), binary=str(r["Binary"] or "").strip(), assoc=str(r["Assoc"] or "").strip())) + hits = [p for p in ps if p["v_low"] > v_max] + for p in hits: + p["vet"] = "published-solution" if p["dm_distance"] and not p["plx"] else None + left = [p for p in hits if p["vet"] is None] + vs = sorted(p["v"] for p in ps) + print("%d pulsars with a proper motion and a distance; transverse speeds: median %.0f km/s, the fastest %.0f; above %g km/s at the proper motion's %g sigma lower bound: %d " + "(%d on dispersion-measure distances); unexplained %d" % (len(ps), np.median(vs), vs[-1], v_max, sigma, len(hits), sum(p["vet"] == "published-solution" for p in hits), + len(left))) + for p in sorted(hits, key=lambda p: -p["v_low"]): + print(" %s: %.0f km/s (lower bound %.0f) from %.1f +- %.1f mas/yr at %.2f kpc (%s), P %s s, %s%s; %s" % ( + p["name"], p["v"], p["v_low"], p["pm"], p["epm"], p["d"], "dispersion measure" if p["dm_distance"] else "independent distance", p["P"], p["assoc"] or "no association", + ", binary " + p["binary"] if p["binary"] else "", p["vet"] or "unexplained")) + json.dump(dict(n=len(ps), hits=hits), open(core.results("pulsars_kick_speeds.json"), "w"), indent=1) + if record: + core.record_run( + "atnf_kick_speeds", "Pulsars faster than a kick can throw", "ATNF pulsar catalogue (VizieR B/psr)", "pulsars with a proper motion and a distance: %d" % len(ps), + os.path.abspath(__file__), "psrkick", len(ps), "pulsars", dict(v_max=v_max, sigma=sigma), "the transverse speeds' distribution: median %.0f km/s" % np.median(vs), + "a transverse speed above %g km/s at the proper motion's %g sigma lower bound" % (v_max, sigma), + "%d, %d of them on dispersion-measure distances; %d unexplained" % (len(hits), sum(p["vet"] == "published-solution" for p in hits), len(left)), + [dict(target="pulsar:%s" % p["name"], stat=round(p["v_low"]), unit="km/s, transverse, lower bound", vet=p["vet"], + note="%.0f km/s from %.1f +- %.1f mas/yr at %.2f kpc (%s)" % (p["v"], p["pm"], p["epm"], p["d"], "dispersion measure" if p["dm_distance"] else "independent distance")) + for p in hits]) + print("recorded") + + +psrpairs_DOC = r"""Two pulsars at one spot: ATNF catalogue pulsars outside globular clusters and the Magellanic Clouds, pairs within 2 arcmin of one another, two beacons at one place where the Galaxy puts one pulsar per square degree at most, against the pairs found with the declinations mirrored; a pair bound to each other is a binary pulsar system, read from the catalogue's binary fields, and the rest are read for their dispersion measures, which agree for two pulsars at one distance. + + python -I seti.py radio_sky psrpairs [record] [--radius-arcmin 2] [--dm-tol 0.1]""" + + +def psrpairs_main(record=False, radius_arcmin=2.0, dm_tol=0.1): + from scipy.stats import poisson + rows = catalogues.pulsars("PSRJ, RAJ2000, DEJ2000, P0, DM, Dist, Assoc, Binary, PB, BINCOMP") + ps = [dict(name=str(r["PSRJ"]).strip(), ra=num(r["RAJ2000"]), dec=num(r["DEJ2000"]), P=num(r["P0"]), dm=num(r["DM"]), dist=num(r["Dist"]), assoc=str(r["Assoc"] or "").strip(), + binary=str(r["Binary"] or "").strip(), pb=num(r["PB"]), comp=str(r["BINCOMP"] or "").strip()) for r in rows] + ps = [p for p in ps if p["ra"] is not None and p["dec"] is not None and "GC:" not in p["assoc"] and "SMC" not in p["assoc"] and "LMC" not in p["assoc"]] + ra = np.radians([p["ra"] for p in ps]) + dec = np.radians([p["dec"] for p in ps]) + + def pairs(dec_arr): + xyz = np.stack([np.cos(dec_arr) * np.cos(ra), np.cos(dec_arr) * np.sin(ra), np.sin(dec_arr)], 1) + m = xyz @ xyz.T > math.cos(math.radians(radius_arcmin / 60.0)) + return [(int(i), int(j)) for i, j in np.argwhere(np.triu(m, 1))] + + real = pairs(dec) + null = len(pairs(-dec)) + exp = max(null, 0.5) + out = [] + for i, j in real: + a, b = ps[i], ps[j] + sep = core.sep_arcsec(a["ra"], a["dec"], b["ra"], b["dec"]) + dm_same = a["dm"] is not None and b["dm"] is not None and abs(a["dm"] - b["dm"]) <= dm_tol * max(a["dm"], b["dm"]) + bound = a["pb"] is not None and b["pb"] is not None and abs(a["pb"] - b["pb"]) < 1e-3 * max(a["pb"], b["pb"]) + out.append(dict(a=a["name"], b=b["name"], sep_arcsec=sep, P=(a["P"], b["P"]), dm=(a["dm"], b["dm"]), dm_same=dm_same, vet="binary" if bound else "chance-rate" if not dm_same else None)) + p = float(poisson.sf(len(real) - 1, exp)) if real else 1.0 + left = [o for o in out if o["vet"] is None] + print("%d pulsars outside clusters and the Clouds; pairs within %g arcmin: %d against %d with the declinations mirrored (Poisson p %.3g); %d bound as a double neutron star, " + "%d at different dispersion measures; unexplained %d" % (len(ps), radius_arcmin, len(real), null, p, sum(o["vet"] == "binary" for o in out), + sum(o["vet"] == "chance-rate" for o in out), len(left))) + for o in sorted(out, key=lambda o: o["sep_arcsec"]): + print(" %s and %s: %.1f arcsec apart, P %s and %s s, DM %s and %s; %s" % (o["a"], o["b"], o["sep_arcsec"], o["P"][0], o["P"][1], o["dm"][0], o["dm"][1], o["vet"] or "unexplained")) + json.dump(dict(n=len(ps), null=null, pairs=out), open(core.results("pulsar_pairs_one_spot.json"), "w"), indent=1) + if record: + core.record_run( + "atnf_pulsars_one_spot", "Two pulsars at one spot", "ATNF pulsar catalogue (VizieR B/psr)", "pulsars outside globular clusters and the Magellanic Clouds: %d" % len(ps), + os.path.abspath(__file__), "psrpairs", len(ps), "pulsars", dict(radius_arcmin=radius_arcmin, dm_tol=dm_tol), "the pairs with the declinations mirrored: %d" % null, + "two pulsars within %g arcmin" % radius_arcmin, "%d pairs against %d mirrored; %d bound, %d at different dispersion measures; %d unexplained" % ( + len(real), null, sum(o["vet"] == "binary" for o in out), sum(o["vet"] == "chance-rate" for o in out), len(left)), + [dict(target="pulsar:%s" % o["a"], stat=round(o["sep_arcsec"], 1), unit="arcsec to its partner", vet=o["vet"], + note="with %s, P %s and %s s, DM %s and %s" % (o["b"], o["P"][0], o["P"][1], o["dm"][0], o["dm"][1])) for o in out]) + print("recorded") + + +glitchsched_DOC = r"""Glitches on a schedule: the Jodrell Bank glitch table, pulsars with five or more dated glitches, the scatter of the intervals between successive glitches as a fraction of their mean, against the scatter that intervals drawn at random from an exponential of the same mean give in 4000 draws; a pulsar that glitches on a timetable is keeping time, which the published quasi-periodic glitchers and the young pulsars whose large glitches recur at the crust's critical lag, as Vela's do, keep through their own crust and superfluid; each regular pulsar is read against them and for the size of its glitches. + + python -I seti.py radio_sky glitchsched [record] [--min-glitches 5] [--cv-max 0.3] [--draws 4000]""" + +# pulsars whose quasi-periodic glitching is published +GLITCHSCHED_KNOWN = {"0537-6910", "0833-45", "0835-4510", "0205+6449", "1737-30", "1740-3015", "0631+1036", "1758-23", "1801-2304"} +# the glitch size above which a glitch is of Vela's kind, a fractional frequency step of a part in a million +GLITCHSCHED_LARGE = 1e-6 + + +def glitchsched_main(record=False, min_glitches=5, cv_max=0.3, draws=4000): + rows = glitch_rows() + by, sizes = {}, {} + for g in rows: + by.setdefault(g["psr"], []).append(g["mjd"]) + sizes.setdefault(g["psr"], []).append(g["size"]) + rng = np.random.default_rng(11) + out, n_tested = [], 0 + for psr, mjds in by.items(): + mjds = sorted(set(mjds)) + if len(mjds) < min_glitches: + continue + n_tested += 1 + gaps = np.diff(mjds) + cv = float(np.std(gaps, ddof=1) / np.mean(gaps)) + sims = rng.exponential(1.0, size=(draws, len(gaps))) + p = float(np.mean(np.std(sims, axis=1, ddof=1) / np.mean(sims, axis=1) <= cv)) + big = [x for x in sizes[psr] if x is not None] + large = bool(big) and float(np.median(big)) * 1e-9 >= GLITCHSCHED_LARGE + o = dict(psr=psr, n=len(mjds), span_d=float(mjds[-1] - mjds[0]), mean_gap_d=float(np.mean(gaps)), cv=cv, p=p, gaps=[round(float(x), 1) for x in gaps], large=large) + if cv < cv_max: + key = psr.lstrip("JB") + o["vet"] = "natural-source" if key in GLITCHSCHED_KNOWN else "vela-like" if large else ("chance-rate" if p * n_tested > 0.05 else None) + out.append(o) + left = [o for o in out if o["vet"] is None] + print("%d pulsars with %d or more dated glitches; interval scatter below %g of the mean: %d (%d published quasi-periodic glitchers, %d glitching large like Vela, %d within " + "chance over the %d tested); unexplained %d" % (n_tested, min_glitches, cv_max, len(out), sum(o["vet"] == "natural-source" for o in out), + sum(o["vet"] == "vela-like" for o in out), sum(o["vet"] == "chance-rate" for o in out), n_tested, len(left))) + for o in sorted(out, key=lambda o: o["cv"]): + print(" %s: %d glitches over %.0f d, mean gap %.0f d, scatter %.2f of the mean (p %.2g, %.2g over the pulsars tested), gaps %s, %s glitches; %s" % ( + o["psr"], o["n"], o["span_d"], o["mean_gap_d"], o["cv"], o["p"], min(1.0, o["p"] * n_tested), o["gaps"], "large" if o["large"] else "small", o["vet"] or "unexplained")) + json.dump(dict(tested=n_tested, regular=out), open(core.results("glitch_schedules.json"), "w"), indent=1) + if record: + core.record_run( + "jbo_glitch_schedules", "Glitches on a schedule", "Jodrell Bank glitch table", "pulsars with %d or more dated glitches: %d" % (min_glitches, n_tested), + os.path.abspath(__file__), "glitchsched", n_tested, "pulsars", dict(min_glitches=min_glitches, cv_max=cv_max, draws=draws), + "intervals drawn from an exponential of the same mean, %d draws per pulsar" % draws, "glitch intervals scattered by less than %g of their mean" % cv_max, + "%d regular: %d published quasi-periodic glitchers, %d glitching large like Vela, %d within chance; %d unexplained" % ( + len(out), sum(o["vet"] == "natural-source" for o in out), sum(o["vet"] == "vela-like" for o in out), sum(o["vet"] == "chance-rate" for o in out), len(left)), + [dict(target="pulsar:%s" % o["psr"], stat=round(o["cv"], 3), unit="interval scatter over the mean", vet=o["vet"], + note="%d glitches over %.0f d, mean gap %.0f d, p %.2g, gaps %s" % (o["n"], o["span_d"], o["mean_gap_d"], o["p"], o["gaps"])) for o in out]) + print("recorded") + + +switchoff_DOC = r"""Radio sources that switched off: NVSS (VizieR VIII/65) sources north of -40 deg and more than 10 deg from the Galactic plane, brighter than 100 mJy at 1.4 GHz and compact, with major axes under 25 arcsec, against the VLASS epoch-1 quick-look components (J/ApJS/255/30) within 20 arcsec by CDS XMatch; a source of that strength falls below VLASS's limit only by fading a hundredfold between 1995 and 2019, which a switched-off transmitter does and a blazar in a deep low state can; each missing source read in SIMBAD, for its NVSS size, since a resolved source VLASS's short baselines dissolve is no fading, for a source above 5 Jy within half a degree, whose sidelobes spoil the quick-look image around it, in RACS-low (J/other/PASA/38.58, 888 MHz, 2019-2020, south of +41 deg), where a source still shining has not faded whatever VLASS lists, and for the catalogue's own holes, a quarter degree holding no component at all, which the component list leaves where its images failed. + + python -I seti.py radio_sky switchoff [record] [--flux-min-mjy 100] [--major-max-arcsec 25] [--radius-arcsec 20] [--dec-min -40] [--hole-deg 0.25] [--b-min 10] [--bright-jy 5] [--bright-deg 0.5] [--racs-dec-max 41]""" + + +def switchoff_main(record=False, flux_min_mjy=100.0, major_max_arcsec=25.0, radius_arcsec=20.0, dec_min=-40.0, hole_deg=0.25, b_min=10.0, bright_jy=5.0, bright_deg=0.5, + racs_dec_max=41.0): + rows = core.tap("vizier", 'SELECT NVSS, RAJ2000, DEJ2000, "S1.4", MajAxis, MinAxis FROM "VIII/65/nvss" WHERE "S1.4" > %g AND DEJ2000 > %g' % (flux_min_mjy, dec_min), timeout=600) + sk = next(k for k in rows[0] if k.replace("_", ".").lower() == "s1.4") if rows else "S1.4" + src = [dict(name=str(r["NVSS"]).strip(), ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]), s=float(r[sk]), maj=num(r["MajAxis"]), min_=num(r["MinAxis"])) for r in rows] + from astropy.coordinates import SkyCoord + import astropy.units as u + gb = SkyCoord(ra=[s["ra"] for s in src] * u.deg, dec=[s["dec"] for s in src] * u.deg, frame="icrs").galactic.b.deg + for s, b in zip(src, gb): + s["b"] = float(b) + compact = [s for s in src if s["maj"] is not None and s["maj"] < major_max_arcsec and abs(s["b"]) > b_min] + bright = [s for s in src if s["s"] > 1000 * bright_jy] + seen = set() + for k in range(0, len(compact), 20000): + seen |= {m["source_id"] for m in core.xmatch([dict(source_id=s["name"], ra=s["ra"], dec=s["dec"]) for s in compact[k:k + 20000]], "J/ApJS/255/30/comp", radius_arcsec)} + gone = [s for s in compact if s["name"] not in seen] + sim = {} + for k in range(0, len(gone), 100): + for m in core.xmatch([dict(source_id=s["name"], ra=s["ra"], dec=s["dec"]) for s in gone[k:k + 100]], "simbad", 10.0): + if m["source_id"] not in sim or float(m["angDist"]) < sim[m["source_id"]][0]: + sim[m["source_id"]] = (float(m["angDist"]), " ".join(str(m.get("main_id") or "").split()), str(m.get("main_type") or "").strip()) + racs = {} + for m in core.xmatch([dict(source_id=s["name"], ra=s["ra"], dec=s["dec"]) for s in gone if s["dec"] < racs_dec_max], "J/other/PASA/38.58/galcut", radius_arcsec): + f = num(m.get("Ftot")) or num(m.get("Fint")) or num(m.get("Stot")) + if m["source_id"] not in racs or (f or 0) > (racs[m["source_id"]] or 0): + racs[m["source_id"]] = f + for s in gone: + s["simbad"] = sim.get(s["name"]) + s["racs_mjy"] = racs.get(s["name"]) + typ = (s["simbad"] or (0, "", ""))[2] + s["vet"] = ("natural-type" if typ and typ not in ("Radio", "Unknown", "?") else "catalogue-dropped" if s["name"] in racs else None) + s["around"] = None + if s["vet"] is None: + near = [b for b in bright if b["name"] != s["name"] and core.sep_arcsec(s["ra"], s["dec"], b["ra"], b["dec"]) < 3600 * bright_deg] + if near: + s["vet"] = "bright-neighbour" + s["bright"] = "%s (%.1f Jy)" % (near[0]["name"], near[0]["s"] / 1000) + if s["vet"] is None: + n = core.tap("vizier", 'SELECT COUNT(*) AS n FROM "J/ApJS/255/30/comp" WHERE 1 = CONTAINS(POINT(\'ICRS\', RAJ2000, DEJ2000), CIRCLE(\'ICRS\', %.5f, %.5f, %g))' % ( + s["ra"], s["dec"], hole_deg)) + s["around"] = int(n[0]["n"]) if n else 0 + if s["around"] == 0: + s["vet"] = "catalogue-dropped" + left = [s for s in gone if s["vet"] is None] + print("%d NVSS sources above %g mJy north of %g deg, %d compact under %g arcsec more than %g deg from the Galactic plane; without a VLASS component within %g arcsec: %d (%d of " + "known SIMBAD types, %d within %g deg of a source above %g Jy, %d still shining in RACS-low of 2019-2020 or in holes of the catalogue with no component within %g deg, %d of " + "them in RACS); unexplained %d" % (len(src), flux_min_mjy, dec_min, len(compact), major_max_arcsec, b_min, radius_arcsec, len(gone), + sum(s["vet"] == "natural-type" for s in gone), sum(s["vet"] == "bright-neighbour" for s in gone), bright_deg, bright_jy, + sum(s["vet"] == "catalogue-dropped" for s in gone), hole_deg, sum(1 for s in gone if s["racs_mjy"] is not None), len(left))) + for s in sorted(gone, key=lambda s: -s["s"]): + if s["vet"] != "natural-type": + print(" NVSS %s: %.0f mJy, %.0f x %.0f arcsec at RA %.4f Dec %+.4f, b %+.1f, RACS %s mJy, %s components within %g deg%s; SIMBAD %s; %s" % ( + s["name"], s["s"], s["maj"], s["min_"] or 0, s["ra"], s["dec"], s["b"], s["racs_mjy"], s["around"], hole_deg, ", near " + s["bright"] if s.get("bright") else "", + s["simbad"], s["vet"] or "unexplained")) + json.dump(dict(n=len(src), compact=len(compact), gone=gone), open(core.results("radio_switchoffs.json"), "w"), indent=1) + if record: + core.record_run( + "nvss_vlass_switchoffs", "Radio sources that switched off", "NVSS (VizieR VIII/65); VLASS epoch-1 quick-look components (J/ApJS/255/30) by CDS XMatch; SIMBAD", + "compact NVSS sources above %g mJy north of %g deg and more than %g deg from the Galactic plane: %d" % (flux_min_mjy, dec_min, b_min, len(compact)), + os.path.abspath(__file__), "switchoff", len(compact), "sources", + dict(flux_min_mjy=flux_min_mjy, major_max_arcsec=major_max_arcsec, radius_arcsec=radius_arcsec, dec_min=dec_min, hole_deg=hole_deg, b_min=b_min, bright_jy=bright_jy, + bright_deg=bright_deg, racs_dec_max=racs_dec_max), + "VLASS's component limit of about 1 mJy against a hundredfold fade; SIMBAD's types; the artefact zones of the brightest sources; RACS-low of 2019-2020; the catalogue's own holes", + "a compact 1.4 GHz source of 1995 with no 3 GHz component in 2019", + "%d missing of %d, %d of known types, %d beside sources above %g Jy, %d still in RACS-low or in catalogue holes; %d unexplained" % ( + len(gone), len(compact), sum(s["vet"] == "natural-type" for s in gone), sum(s["vet"] == "bright-neighbour" for s in gone), bright_jy, + sum(s["vet"] == "catalogue-dropped" for s in gone), len(left)), + [dict(target="nvss:%s" % s["name"], stat=s["s"], unit="mJy at 1.4 GHz, absent from VLASS", vet=s["vet"], + note="%.0f x %.0f arcsec; b %+.1f; RACS %s mJy; %s components within %g deg%s; SIMBAD %s" % (s["maj"], s["min_"] or 0, s["b"], s["racs_mjy"], s["around"], hole_deg, + ", near " + s["bright"] if s.get("bright") else "", s["simbad"])) for s in gone]) + print("recorded") + + +maseretz_DOC = r"""Masers in Earth's transit zone: the 6.7 GHz methanol masers of Pestalozzi et al. (2005, VizieR J/A+A/432/737) by ecliptic latitude, the count within the 0.262 deg half-width of the zone from which Earth is seen to transit the Sun against the mean and scatter of the twenty strips of that width on either side out to 5.5 deg, a bright natural line a sender might choose to sit behind; the masers follow the Galactic plane, which crosses the ecliptic twice and fills the strips beside the zone as it fills the zone. + + python -I seti.py radio_sky maseretz [record] [--half-width-deg 0.262] [--band-deg 5.5]""" + + +def maseretz_main(record=False, half_width_deg=0.262, band_deg=5.5): + rows = core.tap("vizier", 'SELECT Name, RAJ2000, DEJ2000, Vlsr, PFlux FROM "J/A+A/432/737/catalog" WHERE RAJ2000 IS NOT NULL') + ms = [dict(name=str(r["Name"]).strip(), ra=float(r["RAJ2000"]), dec=float(r["DEJ2000"]), v=num(r["Vlsr"]), flux=num(r["PFlux"])) for r in rows] + lam, beta = science.ecliptic_lon_lat([m["ra"] for m in ms], [m["dec"] for m in ms]) + for m, b in zip(ms, beta): + m["beta"] = abs(float(b)) + z = science.zone_excess([m["beta"] for m in ms], half_width_deg, band_deg) + inzone = [m for m in ms if m["beta"] < half_width_deg] + for m in inzone: + m["vet"] = "chance-rate" if z["p"] > 0.01 else None + print("%d methanol masers; in the zone: %d against %.2f +- %.2f beside it (z %+.2f, Poisson p %.3g)" % (len(ms), z["zone"], z["mean"], z["sd"], z["z"], z["p"])) + for m in sorted(inzone, key=lambda m: m["beta"]): + print(" %s: ecliptic latitude %+.3f deg, Vlsr %s km/s, %s Jy; %s" % (m["name"], m["beta"], m["v"], m["flux"], m["vet"] or "unexplained")) + json.dump(dict(n=len(ms), zone=z, masers=inzone), open(core.results("masers_transit_zone.json"), "w"), indent=1) + if record: + core.record_run( + "methanol_masers_transit_zone", "Masers in Earth's transit zone", "Pestalozzi et al. (2005) 6.7 GHz methanol masers (VizieR J/A+A/432/737)", "masers with positions: %d" % len(ms), + os.path.abspath(__file__), "maseretz", len(ms), "masers", dict(half_width_deg=half_width_deg, band_deg=band_deg), + "the twenty strips of the zone's width beside it: %.2f +- %.2f" % (z["mean"], z["sd"]), "an excess of masers in the band of sky that sees Earth transit the Sun", + "%d in the zone (z %+.2f, p %.3g)" % (z["zone"], z["z"], z["p"]), + [dict(target="maser:%s" % m["name"], stat=round(m["beta"], 4), unit="ecliptic latitude, deg", vet=m["vet"], note="Vlsr %s km/s, %s Jy" % (m["v"], m["flux"])) for m in inzone]) + print("recorded") + + +def atnf_table(fields, condition, errors=True, timeout=120): + """ATNF pulsar catalogue rows from its own query form: each field as a (value, error) pair with ERRORS, else a float or a string, None where the catalogue has none.""" + import html + p = dict(table_top="y", JName="JName", startUserDefined="true", sort_attr="jname", sort_order="asc", condition=condition, ephemeris="short", + style="Long with errors" if errors else "Short without errors", no_value="*", state="query", version="2.6.1") + for f in fields: + p[f] = f + t = core.get("https://www.atnf.csiro.au/research/pulsar/psrcat/proc_form.php?" + urllib.parse.urlencode(p), timeout=timeout).decode("utf-8", "replace") + pre = re.search(r"
(.*?)
", t, re.S).group(1) + rows = [] + for line in html.unescape(re.sub(r"]*>[^<]*", " @ ", pre)).replace("\xa0", " ").splitlines(): + tok = line.split() + if not tok or not tok[0].isdigit(): + continue + r, k = dict(PSRJ=tok[1]), 2 + if errors and k < len(tok) and tok[k] == "@": + k += 1 + for f in fields: + if k >= len(tok): + r[f] = None + continue + v = tok[k] + if not errors: + r[f] = None if v == "*" else (core.num(v) if core.num(v) is not None else v) + k += 1 + continue + if v == "*": + r[f], k = None, k + 3 + continue + e = core.num(tok[k + 1]) if k + 1 < len(tok) and tok[k + 1] != "@" else None + k += 2 if e is not None else 1 + if k < len(tok) and tok[k] in ("@", "*"): + k += 1 + r[f] = (core.num(v), e) + rows.append(r) + return rows + + +pbdot_DOC = r"""Binary pulsars decaying at the wrong rate: the binary pulsars of the ATNF catalogue outside globular clusters with a measured orbital decay and the companion's mass, the total mass from the periastron advance or from the companion's mass, sin i and the mass function, the decay general relativity predicts from the masses, period and eccentricity, the Shklovskii term from the proper motion and distance and the Galactic term from a flat rotation curve and the vertical field, and the remainder against zero in units of its error, with the masses and a 20 per cent distance error carried by Monte Carlo; an orbit drained or pumped by something other than gravity would leave a remainder, as would mass lost from a spider companion or a wrong distance. + + python -I seti.py radio_sky pbdot [record] [--sigma 3] [--dist-frac 0.2]""" + + +def pbdot_main(record=False, sigma=3.0, dist_frac=0.2): + T_SUN, C, KPC, YR = 4.925490947e-6, 2.99792458e8, 3.0856775814913673e19, 3.15576e7 + rng = np.random.default_rng(3) + rows = atnf_table(["PB", "PBDOT", "ECC", "M2", "OMDOT", "SINI", "A1", "PMTOT"], "exist(PBDOT) && exist(M2)") + pos = {r["PSRJ"]: r for r in atnf_table(["DIST", "GL", "GB", "BINCOMP", "ASSOC"], "exist(PBDOT) && exist(M2)", errors=False)} + for r in rows: + r.update({k: v for k, v in pos.get(r["PSRJ"], {}).items() if k != "PSRJ"}) + pb, e = r["PB"][0] * 86400, (r["ECC"][0] if r.get("ECC") else 0.0) + if r.get("OMDOT") and r["OMDOT"][0] and r["OMDOT"][0] > 0.05: + om = r["OMDOT"][0] * math.pi / 180 / YR + mt = (om * (1 - e ** 2) / 3 * (pb / (2 * math.pi)) ** (5 / 3)) ** 1.5 / T_SUN + r["MTOT"] = (mt, 1.5 * mt * (r["OMDOT"][1] or 0) / r["OMDOT"][0]) + elif r.get("SINI") and r.get("A1") and r["SINI"][0]: + f = r["A1"][0] ** 3 * (2 * math.pi / pb) ** 2 / T_SUN + mt = math.sqrt((r["M2"][0] * r["SINI"][0]) ** 3 / f) + r["MTOT"] = (mt, 1.5 * mt * math.hypot((r["M2"][1] or 0) / r["M2"][0], (r["SINI"][1] or 0) / r["SINI"][0])) + if isinstance(r.get("DIST"), float): + r["DIST"] = (r["DIST"], None) + for g in ("GL", "GB"): + if isinstance(r.get(g), float): + r[g] = (r[g], None) + out = [] + for r in rows: + if isinstance(r.get("ASSOC"), str) and "GC" in r["ASSOC"]: + continue + if not all(isinstance(r.get(k), tuple) for k in ("PB", "PBDOT", "M2", "MTOT", "DIST")) or not isinstance(r.get("GL"), tuple): + continue + n = 4000 + pb = r["PB"][0] * 86400 + e = r["ECC"][0] if isinstance(r.get("ECC"), tuple) else 0.0 + mt = rng.normal(r["MTOT"][0], r["MTOT"][1] or 0, n) + m2 = rng.normal(r["M2"][0], r["M2"][1] or 0, n) + m1 = mt - m2 + d = r["DIST"][0] * (1 + dist_frac * rng.standard_normal(n)) + mu = (r["PMTOT"][0] if isinstance(r.get("PMTOT"), tuple) else 0.0) / 1000 / 3600 * math.pi / 180 / YR + fe = (1 + 73 / 24 * e ** 2 + 37 / 96 * e ** 4) / (1 - e ** 2) ** 3.5 + gr = -192 * math.pi / 5 * T_SUN ** (5 / 3) * (pb / (2 * math.pi)) ** (-5 / 3) * fe * m1 * m2 * np.abs(mt) ** (-1 / 3) + shk = pb * mu ** 2 * d * KPC / C + l, b = math.radians(r["GL"][0]), math.radians(r["GB"][0]) + r0, th0 = 8.178, 236e3 + beta = d / r0 * math.cos(b) - math.cos(l) + gal_r = -(th0 ** 2 / (C * r0 * KPC)) * math.cos(b) * (math.cos(l) + beta / (math.sin(l) ** 2 + beta ** 2)) + z = np.abs(d * math.sin(b)) + kz = (2.27 * z + 3.68 * (1 - np.exp(-4.31 * z))) * 1e-11 + gal_z = -kz * abs(math.sin(b)) / C + model = gr + shk + pb * (gal_r + gal_z) + obs, eobs = r["PBDOT"] + if abs(obs) > 1e-7: + # timing packages accept the decay in units of 1e-12 when its magnitude is large + obs, eobs = obs * 1e-12, (eobs or 0) * 1e-12 + res = obs - np.median(model) + err = math.sqrt((eobs or 0) ** 2 + float(np.std(model)) ** 2) + out.append(dict(psr=r["PSRJ"], pb_d=r["PB"][0], obs=obs, gr=float(np.median(gr)), kin=float(np.median(shk + pb * (gal_r + gal_z))), res=res, err=err, + z=res / err if err else None, comp=r.get("BINCOMP") if isinstance(r.get("BINCOMP"), str) else None, vet=None)) + off = [o for o in out if o["z"] is not None and abs(o["z"]) > sigma] + for o in off: + # main-sequence companions in orbits under a day are the redbacks, whose orbital periods wander (Pletsch and Clark 2015) + if (o["comp"] or "").startswith("MS") and o["pb_d"] < 1: + o["vet"] = "spider-orbit" + print("%d field binary pulsars with a measured decay and both masses; remainder beyond %g sigma: %d" % (len(out), sigma, len(off))) + for o in sorted(out, key=lambda o: -abs(o["z"] or 0)): + print(" %-12s Pb %.4f d %-5s observed %.3e, relativity %.3e, kinematic %.3e, remainder %.3e +- %.1e (%.1f sigma)" % ( + o["psr"], o["pb_d"], o["comp"] or "", o["obs"], o["gr"], o["kin"], o["res"], o["err"], o["z"] or 0) + ("; " + o["vet"] if o["vet"] else "")) + json.dump(out, open(core.results("pulsar_orbital_decay.json"), "w"), indent=1) + if record: + core.record_run( + "atnf_orbital_decay_remainder", "Binary pulsars decaying at the wrong rate", "ATNF pulsar catalogue (its query form, version 2.6.1)", + "field binary pulsars with a measured orbital decay and both masses (the total from the periastron advance or the mass function): %d" % len(out), os.path.abspath(__file__), "pbdot", len(out), "pulsars", + dict(sigma=sigma, dist_frac=dist_frac), "general relativity from the masses, the Shklovskii term and the Galactic acceleration, with the masses and distance carried by Monte Carlo", + "a decay that misses relativity and kinematics beyond %g sigma" % sigma, "%d of %d beyond %g sigma, %d of them redbacks; %d unexplained" % ( + len(off), len(out), sigma, sum(o["vet"] == "spider-orbit" for o in off), sum(o["vet"] is None for o in off)), + [dict(target="psr:%s" % o["psr"], stat=round(o["z"], 2), unit="sigma", vet=o["vet"], + note="observed %.3e, relativity %.3e, kinematic %.3e" % (o["obs"], o["gr"], o["kin"])) for o in off]) + print("recorded") + + +hostless_DOC = r"""Hostless flat-spectrum radio sources: the CRATES flat-spectrum sources (Healey et al. 2007, VizieR J/ApJS/171/61) with spectral index above -0.5, point-like at 8.4 GHz with an interferometric position (each source's main row, not the components of extended ones), Galactic latitude above 30 deg and declination above -30 deg, matched to AllWISE within 3 arcsec and Pan-STARRS1 within 2 arcsec, and those without either to the deeper CatWISE2020 and unWISE; a flat-spectrum source is a compact, self-absorbed emitter, and in nature it sits in an active galaxy that the infrared or the optical shows, so one with neither is a compact radio source with no galaxy around it, which the classes SIMBAD gives within 5 arcsec are read to explain, and a compact component more than 3 arcsec from its NVSS or SUMSS centroid is a knot or hotspot of a larger radio source whose galaxy lies elsewhere; the rest are looked for in the deeper Legacy Surveys DR10 within 2 arcsec, and those still bare in VLASS within 30 arcsec, where nearly every CRATES source appears, so that a bare position VLASS does not see is the catalogue's position rather than the source's. + + python -I seti.py radio_sky hostless [record] [--alpha-min -0.5] [--b-min 30] [--dec-min -30] [--wise-arcsec 3] [--ps1-arcsec 2] [--offset-arcsec 3]""" + + +def hostless_main(record=False, alpha_min=-0.5, b_min=30.0, dec_min=-30.0, wise_arcsec=3.0, ps1_arcsec=2.0, offset_arcsec=3.0): + from astropy.coordinates import SkyCoord + import astropy.units as u + t = [x for x in core.vizier("J/ApJS/171/61") if x.meta.get("name", "").endswith("table5")][0] + src = [] + for r in t: + a = num(r["alpha"]) + ra2, de2 = str(r["RAJ2000"]).strip(), str(r["DEJ2000"]).strip() + if a is None or a <= alpha_min or str(r["r_S8.4"]).strip() not in ("V", "A", "X") or str(r["Morph"]).strip() != "P" or not ra2 or ra2 in ("--", "nan") or not de2: + continue + src.append(dict(name=str(r["CRATES"]).strip(), ra2=ra2, de2=de2, alpha=a, s48=num(r["S4.8"]), s84=num(r["S8.4"]), origin=str(r["r_S8.4"]).strip(), nv_ra=str(r["RA2"]).strip(), nv_de=str(r["DE2"]).strip())) + c = SkyCoord([s["ra2"] for s in src], [s["de2"] for s in src], unit=(u.hourangle, u.deg)) + g = c.galactic + for s, ci, gi in zip(src, c, g): + s["ra"], s["dec"], s["b"] = float(ci.ra.deg), float(ci.dec.deg), float(gi.b.deg) + sel = [s for s in src if abs(s["b"]) > b_min and s["dec"] > dec_min] + up = [dict(source_id=k, ra=s["ra"], dec=s["dec"]) for k, s in enumerate(sel)] + wise = {int(m["source_id"]) for m in core.xmatch(up, "II/328/allwise", wise_arcsec)} + ps1 = {int(m["source_id"]) for m in core.xmatch(up, "II/349/ps1", ps1_arcsec)} + rest = [dict(source_id=k, ra=sel[k]["ra"], dec=sel[k]["dec"]) for k in range(len(sel)) if k not in wise and k not in ps1] + deep = set() + for cat in ("II/365/catwise", "II/363/unwise"): + if rest: + deep |= {int(m["source_id"]) for m in core.xmatch(rest, cat, wise_arcsec)} + bare = [sel[k] for k in range(len(sel)) if k not in wise and k not in ps1 and k not in deep] + simbad = {} + if bare: + for m in core.xmatch([dict(source_id=k, ra=s["ra"], dec=s["dec"]) for k, s in enumerate(bare)], "simbad", 5.0): + simbad.setdefault(int(m["source_id"]), []).append((str(m.get("main_id", "")).strip(), str(m.get("main_type", m.get("otype", ""))).strip())) + for k, s in enumerate(bare): + s["simbad"] = simbad.get(k, []) + s["offset"] = None + if s["nv_ra"] and s["nv_ra"] not in ("--", "nan") and s["nv_de"]: + s["offset"] = float(SkyCoord(s["nv_ra"], s["nv_de"], unit=(u.hourangle, u.deg)).separation(SkyCoord(s["ra"] * u.deg, s["dec"] * u.deg)).arcsec) + s["vet"] = "published-classification" if any(t in ("QSO", "BLLac", "Blazar", "AGN", "Sy1", "Sy2", "G", "GinCl", "BClG", "LINER", "QSO_Candidate", "Bla", "BLL", "rG", "RadioG", + "Blazar_Candidate", "AGN_Candidate", "BLLac_Candidate") for _, t in s["simbad"]) else ( + "radio-hotspot" if s["offset"] is not None and s["offset"] > offset_arcsec else "bright-neighbour" if any(t in ("Star", "*", "PM*", "HighPM*", "**", "V*") for _, t in s["simbad"]) else None) + for s in [x for x in bare if x["vet"] is None]: + ls = core.datalab("SELECT type, mag_r, mag_z FROM ls_dr10.tractor WHERE q3c_radial_query(ra, dec, %.6f, %.6f, %.6f) = 't'" % (s["ra"], s["dec"], ps1_arcsec / 3600)) + if ls: + s["vet"] = "deep-counterpart" + s["legacy"] = [(r["type"], r["mag_r"], r["mag_z"]) for r in ls][:1] + continue + vl = core.tap("vizier", 'SELECT RAJ2000, DEJ2000 FROM "J/ApJS/255/30/comp" WHERE 1 = CONTAINS(POINT(\'ICRS\', RAJ2000, DEJ2000), CIRCLE(\'ICRS\', %.6f, %.6f, %.6f))' % ( + s["ra"], s["dec"], 30 / 3600), timeout=120) + s["vlass"] = min((core.sep_arcsec(s["ra"], s["dec"], float(r["RAJ2000"]), float(r["DEJ2000"])) for r in vl), default=None) + if s["vlass"] is None: + s["vet"] = "artefact" + left = [s for s in bare if s["vet"] is None] + print("%d CRATES point-like flat-spectrum sources with 8.4 GHz positions; %d at |b| above %g and declination above %g; with AllWISE %d, with Pan-STARRS1 %d, %d more in CatWISE2020 or unWISE, " + "with none %d (%d typed as active galaxies by SIMBAD within 5 arcsec, %d more than %g arcsec from their NVSS or SUMSS centroid, %d with a Legacy DR10 counterpart, %d that VLASS does not see " + "within 30 arcsec); unexplained %d, each with VLASS at its position" % ( + len(src), len(sel), b_min, dec_min, len(wise), len(ps1), len(deep), len(bare), sum(s["vet"] == "published-classification" for s in bare), sum(s["vet"] == "radio-hotspot" for s in bare), + offset_arcsec, sum(s["vet"] == "deep-counterpart" for s in bare), sum(s["vet"] == "artefact" for s in bare), len(left))) + for s in bare: + print(" %s: RA %.5f, Dec %.5f, alpha %.2f, S4.8 %s mJy, 8.4 GHz position from %s, %s arcsec from the NVSS centroid; SIMBAD %s; %s" % ( + s["name"], s["ra"], s["dec"], s["alpha"], s["s48"], s["origin"], "%.1f" % s["offset"] if s["offset"] is not None else "?", s["simbad"], s["vet"] or "unexplained")) + json.dump(bare, open(core.results("crates_hostless.json"), "w"), indent=1) + if record: + core.record_run( + "crates_hostless_flat_spectrum", "Hostless flat-spectrum radio sources", "CRATES (VizieR J/ApJS/171/61); AllWISE (II/328), Pan-STARRS1 (II/349), CatWISE2020 (II/365) and unWISE (II/363) by CDS XMatch; SIMBAD; Legacy Surveys DR10 (Data Lab); VLASS (J/ApJS/255/30)", + "flat-spectrum sources with 8.4 GHz positions at |b| above %g and declination above %g: %d" % (b_min, dec_min, len(sel)), os.path.abspath(__file__), "hostless", len(sel), "sources", + dict(alpha_min=alpha_min, b_min=b_min, dec_min=dec_min, wise_arcsec=wise_arcsec, ps1_arcsec=ps1_arcsec, offset_arcsec=offset_arcsec), "the counterpart rate of the same sources: %d of %d in AllWISE" % (len(wise), len(sel)), + "a compact flat-spectrum radio source with no host in the infrared or the optical", "%d with no counterpart in AllWISE, Pan-STARRS1, CatWISE2020 or unWISE: %d active galaxies in SIMBAD, %d knots or hotspots off their NVSS centroids, %d with a Legacy DR10 counterpart, %d " + "at positions VLASS does not see; %d unexplained, each confirmed by VLASS and bare to the Legacy depth" % ( + len(bare), sum(s["vet"] == "published-classification" for s in bare), sum(s["vet"] == "radio-hotspot" for s in bare), sum(s["vet"] == "deep-counterpart" for s in bare), + sum(s["vet"] == "artefact" for s in bare), len(left)), + [dict(target="crates:%s" % s["name"], stat=s["alpha"], unit="spectral index", vet=s["vet"], note="S4.8 %s mJy; SIMBAD %s" % (s["s48"], s["simbad"][:2])) for s in bare]) + print("recorded") + + +hostlesssed_DOC = r"""Radio spectra of the hostless flat-spectrum sources: the compact CRATES sources that the hostless test left without an infrared or optical counterpart, each one's flux densities from TGSS at 150 MHz, GLEAM at 200 MHz, RACS-low at 888 MHz, NVSS at 1.4 GHz, VLASS at 3 GHz, CRATES at 4.8 and 8.4 GHz and the VLBI bands of the Radio Fundamental Catalogue, the spectrum classed as peaked, inverted, flat or steep, VLASS set against the NVSS-to-CRATES interpolation for variability, and the VLBI detection rate and the share of each spectral class set against 200 hosted CRATES sources treated the same way; a young or distant compact galaxy peaks at GHz frequencies and shows on VLBI baselines, while a source with no galaxy around it would have to be something else. + + python -I seti.py radio_sky hostlesssed [record] [--controls 200]""" + +HOSTLESS_SED = (("TGSS", "J/A+A/598/A78/table3", 15.0, 0.150, "Stotal", 1e-3), ("GLEAM", "VIII/100/gleamegc", 60.0, 0.200, "Fintwide", 1.0), + ("RACS", "J/other/PASA/38.58/galcut", 10.0, 0.888, "Ftot", 1e-3), ("NVSS", "VIII/65/nvss", 15.0, 1.4, "S1_4", 1e-3), + ("VLASS", "J/ApJS/255/30/comp", 3.0, 3.0, "Ftot", 1e-3)) + + +def rfc_index(): + """The RFC sources in a sky tree: a function of a position and a radius in arcsec giving the nearest source within it, or None.""" + from scipy.spatial import cKDTree + src = rfc_sources() + ra, de = np.radians([x["ra"] for x in src]), np.radians([x["dec"] for x in src]) + tree = cKDTree(np.stack([np.cos(de) * np.cos(ra), np.cos(de) * np.sin(ra), np.sin(de)], 1)) + + def near(ra0, de0, radius_arcsec): + a, d = math.radians(ra0), math.radians(de0) + dist, k = tree.query([math.cos(d) * math.cos(a), math.cos(d) * math.sin(a), math.sin(d)], distance_upper_bound=2 * math.sin(math.radians(radius_arcsec / 3600) / 2)) + return src[k] if np.isfinite(dist) else None + return near + + +def hostless_sed_class(pts): + """A radio spectrum's class from (GHz, Jy) points: peaked when it rises below its highest point and falls above it, inverted when it rises to the top, steep below -0.5, flat otherwise.""" + pts = sorted((f, s) for f, s in pts if s and s > 0) + if len(pts) < 3: + return "too few points", None + lf, ls = np.log10([p[0] for p in pts]), np.log10([p[1] for p in pts]) + k = int(np.argmax(ls)) + lo = np.polyfit(lf[:k + 1], ls[:k + 1], 1)[0] if k >= 1 else None + hi = np.polyfit(lf[k:], ls[k:], 1)[0] if k <= len(pts) - 2 else None + if lo is not None and hi is not None and lo > 0.3 and hi < -0.3: + return "peaked", float(10 ** lf[k]) + if hi is None and lo is not None and lo > 0.3: + return "inverted", float(10 ** lf[k]) + slope = float(np.polyfit(lf, ls, 1)[0]) + return ("steep" if slope < -0.5 else "flat"), float(10 ** lf[k]) + + +def hostlesssed_main(record=False, controls=200): + bare = [b for b in json.load(open(core.results("crates_hostless.json"))) if b.get("vet") is None] + t = [x for x in core.vizier("J/ApJS/171/61") if x.meta.get("name", "").endswith("table5")][0] + from astropy.coordinates import SkyCoord + import astropy.units as u + main = [r for r in t if str(r["Morph"]).strip() == "P" and str(r["r_S8.4"]).strip() in ("V", "A", "X")] + names = {b["name"] for b in bare} + rng = np.random.default_rng(37) + pool = [r for r in main if str(r["CRATES"]).strip() not in names] + ctrl_rows = [pool[k] for k in rng.choice(len(pool), size=min(controls, len(pool)), replace=False)] + cc = SkyCoord([str(r["RAJ2000"]) for r in ctrl_rows], [str(r["DEJ2000"]) for r in ctrl_rows], unit=(u.hourangle, u.deg)) + ctrl = [dict(name=str(r["CRATES"]).strip(), ra=float(c.ra.deg), dec=float(c.dec.deg), s48=num(r["S4.8"]), s84=num(r["S8.4"])) for r, c in zip(ctrl_rows, cc)] + rfc = rfc_index() + for group in (bare, ctrl): + for s in group: + s["vlbi"] = rfc(s["ra"], s["dec"], 1.0) + for group in (bare, ctrl): + for s in group: + s["sed"] = {"CRATES 4.8": (4.8, (s.get("s48") or 0) / 1000.0), "CRATES 8.4": (8.4, (s.get("s84") or 0) / 1000.0)} + if s["vlbi"]: + for band, f in s["vlbi"]["flux"].items(): + s["sed"]["RFC " + band] = ({"S": 2.3, "C": 4.8, "X": 8.6, "U": 15.4, "K": 23.8}[band], f) + up = [dict(source_id=k, ra=s["ra"], dec=s["dec"]) for k, s in enumerate(group)] + for name, cat, rad, ghz, col, scale in HOSTLESS_SED: + for m in core.xmatch(up, cat, rad): + v = num(m.get(col) if m.get(col) not in (None, "") else m.get(col.replace("_", "."))) + if v is not None and v > 0: + s = group[int(m["source_id"])] + key = "%s %g" % (name, ghz) + s["sed"][key] = (ghz, max(s["sed"].get(key, (ghz, 0))[1], v * scale)) + for s in group: + s["cls"], s["peak_ghz"] = hostless_sed_class(list(s["sed"].values())) + nv, cr, vl = s["sed"].get("NVSS 1.4"), s["sed"].get("CRATES 4.8"), s["sed"].get("VLASS 3") + s["var"] = None + if nv and cr and vl and nv[1] > 0 and cr[1] > 0: + alpha = math.log10(cr[1] / nv[1]) / math.log10(4.8 / 1.4) + s["var"] = vl[1] / (nv[1] * (3.0 / 1.4) ** alpha) + det_bare = sum(1 for s in bare if s["vlbi"]) / max(len(bare), 1) + det_ctrl = sum(1 for s in ctrl if s["vlbi"]) / max(len(ctrl), 1) + classes = {c: sum(1 for s in bare if s["cls"] == c) for c in ("peaked", "inverted", "flat", "steep", "too few points")} + cclasses = {c: sum(1 for s in ctrl if s["cls"] == c) for c in ("peaked", "inverted", "flat", "steep", "too few points")} + from scipy.stats import fisher_exact + p_peak = float(fisher_exact([[classes["peaked"], len(bare) - classes["peaked"]], [cclasses["peaked"], len(ctrl) - cclasses["peaked"]]], alternative="greater")[1]) + p_flat = float(fisher_exact([[classes["flat"], len(bare) - classes["flat"]], [cclasses["flat"], len(ctrl) - cclasses["flat"]]], alternative="less")[1]) + varied = [s for s in bare if s["var"] is not None and (s["var"] > 2 or s["var"] < 0.5)] + print("%d hostless sources; VLBI-detected %.2f against %.2f of %d hosted CRATES sources; spectra %s against the hosted sources' %s (peaked share Fisher p %.3g, flat share lower at p %.3g); VLASS off the " + "NVSS-to-CRATES line by more than a factor 2: %d of %d" % (len(bare), det_bare, det_ctrl, len(ctrl), classes, cclasses, p_peak, p_flat, len(varied), sum(1 for s in bare if s["var"] is not None))) + for s in sorted(bare, key=lambda s: s["name"]): + pts = ", ".join("%s %.3g" % (k, v[1]) for k, v in sorted(s["sed"].items(), key=lambda kv: kv[1][0]) if v[1] > 0) + print(" %s: %s, peak %s GHz, VLASS over the interpolation %s, VLBI %s; %s" % (s["name"], s["cls"], s["peak_ghz"], "%.2f" % s["var"] if s["var"] else "-", + s["vlbi"]["name"] if s["vlbi"] else "none", pts)) + json.dump(bare, open(core.results("hostless_seds.json"), "w"), indent=1, default=str) + if record: + core.record_run( + "crates_hostless_seds", "Radio spectra of the hostless flat-spectrum sources", "CRATES; TGSS ADR1, GLEAM, RACS-low, NVSS, VLASS and AT20G by CDS XMatch; the Radio Fundamental Catalogue rfc_2026c", + "the hostless sources of crates_hostless_flat_spectrum: %d" % len(bare), os.path.abspath(__file__), "hostlesssed", len(bare), "sources", dict(controls=controls), + "%d hosted CRATES point sources: VLBI-detected %.2f, spectra %s" % (len(ctrl), det_ctrl, cclasses), "spectra and compactness unlike those of compact radio galaxies", + "VLBI-detected %.2f against %.2f; spectra %s, the peaked share above the hosted sources' at Fisher p %.3g and the flat share below at p %.3g; %d varied by more than a factor 2 " + "between surveys" % (det_bare, det_ctrl, classes, p_peak, p_flat, len(varied)), + [dict(target="crates:%s" % s["name"], stat=s["peak_ghz"], unit="GHz, frequency of the highest point", vet=None, + note="%s spectrum, VLBI %s, VLASS over the interpolation %s" % (s["cls"], "detected" if s["vlbi"] else "not detected", "%.2f" % s["var"] if s["var"] else "-")) for s in bare]) + print("recorded") + + +hostlessnir_DOC = r"""Hosts of the hostless radio sources in the near infrared: the compact CRATES sources the hostless test left bare, against VISTA's VHS DR5 and VIKING DR2 and UKIDSS's LAS DR9 within 2 arcsec, coverage judged by any catalogue source within 1 arcmin, and each K magnitude, or the survey's depth where none is found, turned into a redshift by the K-z relation of radio galaxies (Willott et al. 2003: K = 17.37 + 4.53 log z - 0.31 (log z)^2); a radio galaxy's host follows that relation, so a detection dates the source and a deep non-detection puts it far away. + + python -I seti.py radio_sky hostlessnir [record] [--arcsec 2]""" + +HOSTLESS_NIR = (("VHS DR5", "II/367/vhs_dr5", 18.1), ("VIKING DR2", "II/343/viking2", 19.2), ("UKIDSS LAS DR9", "II/319/las9", 18.2)) + + +def kz_redshift(k): + """The redshift a radio galaxy's host of K magnitude k has on the K-z relation of Willott et al. (2003), by bisection between z 0.01 and 12.""" + lo, hi = -2.0, math.log10(12.0) + for _ in range(60): + mid = 0.5 * (lo + hi) + if 17.37 + 4.53 * mid - 0.31 * mid * mid < k: + lo = mid + else: + hi = mid + return 10 ** (0.5 * (lo + hi)) + + +def hostlessnir_main(record=False, arcsec=2.0): + bare = [b for b in json.load(open(core.results("crates_hostless.json"))) if b.get("vet") is None] + up = [dict(source_id=k, ra=b["ra"], dec=b["dec"]) for k, b in enumerate(bare)] + for b in bare: + b["nir"], b["covered"] = {}, [] + for name, cat, depth in HOSTLESS_NIR: + try: + near = core.xmatch(up, cat, 60.0) + except Exception as e: + print("%s unavailable: %s" % (name, str(e)[:80])) + continue + for m in near: + b = bare[int(m["source_id"])] + if name not in b["covered"]: + b["covered"].append(name) + if float(m["angDist"]) <= arcsec: + ks = [k for k in m if re.fullmatch(r"K(s)?(ap3|mag|ap\d|pmag|petmag|AperMag3)?", k)] + vals = [num(m[k]) for k in ks if num(m[k]) is not None and 5 < num(m[k]) < 25] + if vals: + b["nir"][name] = (float(min(vals)), float(m["angDist"])) + for b in bare: + if b["nir"]: + k = min(v[0] for v in b["nir"].values()) + b["k"], b["z"], b["z_kind"] = k, kz_redshift(k), "estimate" + elif b["covered"]: + depth = max(d for n, c, d in HOSTLESS_NIR if n in b["covered"]) + b["k"], b["z"], b["z_kind"] = depth, kz_redshift(depth), "lower limit" + else: + b["k"], b["z"], b["z_kind"] = None, None, "not covered" + det = [b for b in bare if b["z_kind"] == "estimate"] + lim = [b for b in bare if b["z_kind"] == "lower limit"] + print("%d hostless sources: %d with a near-infrared counterpart within %g arcsec, %d covered with none, %d outside the surveys" % (len(bare), len(det), arcsec, len(lim), len(bare) - len(det) - len(lim))) + for b in sorted(bare, key=lambda b: -(b["z"] or 0)): + print(" %s: %s; K %s, z %s (%s)" % (b["name"], b["nir"] or ("covered by " + ", ".join(b["covered"]) if b["covered"] else "not covered"), "%.2f" % b["k"] if b["k"] else "-", + "%.1f" % b["z"] if b["z"] else "-", b["z_kind"])) + json.dump(bare, open(core.results("hostless_nir.json"), "w"), indent=1, default=str) + if record: + core.record_run( + "crates_hostless_nir", "Hosts of the hostless radio sources in the near infrared", "VHS DR5, VIKING DR2 and UKIDSS LAS DR9 by CDS XMatch; the K-z relation of Willott et al. (2003)", + "the hostless sources of crates_hostless_flat_spectrum: %d" % len(bare), os.path.abspath(__file__), "hostlessnir", len(bare), "sources", dict(arcsec=arcsec), + "each survey's depth (Ks 18.1, 19.2 and K 18.2) on the K-z relation", "a host in the near infrared, or a depth that puts it far away", + "%d with a counterpart, redshifts %s; %d covered with none, lower limits %s; %d outside the surveys" % ( + len(det), ", ".join("%.1f" % b["z"] for b in det), len(lim), ", ".join("%.1f" % b["z"] for b in lim), len(bare) - len(det) - len(lim)), + [dict(target="crates:%s" % b["name"], stat=round(b["z"], 2) if b["z"] else None, unit="redshift on the K-z relation (%s)" % b["z_kind"], vet=None, + note="K %s from %s" % ("%.2f" % b["k"] if b["k"] else "-", ", ".join(b["nir"]) or ", ".join(b["covered"]) or "no survey")) for b in bare]) + print("recorded") + + +APPROACHES = { + "hostlessnir": (lambda: core.run_cli(hostlessnir_main), hostlessnir_DOC), + "hostlesssed": (lambda: core.run_cli(hostlesssed_main), hostlesssed_DOC), + "hostless": (lambda: core.run_cli(hostless_main), hostless_DOC), + "pbdot": (lambda: core.run_cli(pbdot_main), pbdot_DOC), + "maseretz": (lambda: core.run_cli(maseretz_main), maseretz_DOC), + "switchoff": (lambda: core.run_cli(switchoff_main), switchoff_DOC), + "glitchsched": (lambda: core.run_cli(glitchsched_main), glitchsched_DOC), + "psrpairs": (lambda: core.run_cli(psrpairs_main), psrpairs_DOC), + "psrkick": (lambda: core.run_cli(psrkick_main), psrkick_DOC), + "psretz": (lambda: core.run_cli(psretz_main), psretz_DOC), + "coldbdradio": (lambda: core.run_cli(coldbdradio_main), coldbdradio_DOC), + "psrages": (lambda: core.run_cli(psrages_main), psrages_DOC), + "maserrest": (lambda: core.run_cli(maserrest_main), maserrest_DOC), + "hydrogenhz": (lambda: core.run_cli(hydrogenhz_main), hydrogenhz_DOC), + "wholehz": (lambda: core.run_cli(wholehz_main), wholehz_DOC), + "frbrhythm": (lambda: core.run_cli(frbrhythm_main), frbrhythm_DOC), + "rfcnear": (lambda: core.run_cli(rfcnear_main), rfcnear_DOC), + "methanolhigh": (lambda: core.run_cli(methanolhigh_main), methanolhigh_DOC), + "glitchsync": (lambda: core.run_cli(glitchsync_main), glitchsync_DOC), + "etzradio": (lambda: core.run_cli(etzradio_main), etzradio_DOC), + "msplight": (lambda: core.run_cli(msplight_main), msplight_DOC), + "coldwdradio": (lambda: core.run_cli(coldwdradio_main), coldwdradio_DOC), + "frbladder": (lambda: core.run_cli(frbladder_main), frbladder_DOC), + "frbetz": (lambda: core.run_cli(frbetz_main), frbetz_DOC), + "frblocal": (lambda: core.run_cli(frblocal_main), frblocal_DOC), + "psrconst": (lambda: core.run_cli(psrconst_main), psrconst_DOC), + "bfield": (lambda: core.run_cli(bfield_main), bfield_DOC), + "daypsr": (lambda: core.run_cli(daypsr_main), daypsr_DOC), + "copypsr": (lambda: core.run_cli(copypsr_main), copypsr_DOC), + "psrratio": (lambda: core.run_cli(psrratio_main), psrratio_DOC), + "frbpsr": (lambda: core.run_cli(frbpsr_main), frbpsr_DOC), + "boxcar": (lambda: core.run_cli(boxcar_main), boxcar_DOC), + "nodm": (lambda: core.run_cli(nodm_main), nodm_DOC), + "breakup": (lambda: core.run_cli(breakup_main), breakup_DOC), + "overpower": (lambda: core.run_cli(overpower_main), overpower_DOC), + "gcclock": (lambda: core.run_cli(gcclock_main), gcclock_DOC), + "yearpsr": (lambda: core.run_cli(yearpsr_main), yearpsr_DOC), + "frbdm": (lambda: core.run_cli(frbdm_main), frbdm_DOC), + "frbsimul": (lambda: core.run_cli(frbsimul_main), frbsimul_DOC), + "frbcopies": (lambda: core.run_cli(frbcopies_main), frbcopies_DOC), + "spinup": (lambda: core.run_cli(spinup_main), spinup_DOC), + "psrstar": (lambda: core.run_cli(psrstar_main), psrstar_DOC), + "psrclock": (lambda: core.run_cli(psrclock_main), psrclock_DOC), + "frbstars": (lambda: core.run_cli(frbstars_main), frbstars_DOC), + "gleamx": (gleamx_cli, gleamx_DOC), + "polceiling": (polceiling_cli, polceiling_DOC), + "wow": (lambda: core.run_cli(wow_main), wow_DOC), + "hi4pi": (hi4pi_cli, hi4pi_DOC), + "hi4pi_blind": (hi4pi_blind_cli, hi4pi_blind_DOC), + "vlass": (vlass_cli, vlass_DOC), + "lowfreq": (lowfreq_cli, lowfreq_DOC), + "sgl": (sgl_cli, sgl_DOC), + "pulsars": (pulsars_cli, pulsars_DOC), + "wind": (wind_cli, wind_DOC), + "callisto": (callisto_cli, callisto_DOC), + "radar": (radar_cli, radar_DOC), + "alma": (alma_cli, alma_DOC), + "lpt": (lpt_cli, lpt_DOC), +} + + diff --git a/setitools/science.py b/setitools/science.py new file mode 100644 index 0000000000000000000000000000000000000000..4fd1d665bdb573fd0dca10e68b07e7f90ee9a894 --- /dev/null +++ b/setitools/science.py @@ -0,0 +1,1097 @@ +"""Analysis for seti-tools: rest frames, spectral line searches, radio track searches, trends, light-curve statistics, photometry.""" +import io +import json +import math +import os + +import numpy as np + +from . import core +from .core import quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------------- +# frames: Doppler frames, sites and line-frequency predictions; km/s positive receding + +C = 299792.458 +L_B = 1.550519768e-8 # TT rate against TCB +CMB_DIPOLE = (369.82, 264.021, 48.253) # km/s toward galactic (l, b), Planck 2018 +# solar motion (km/s, Galactic x, y, z) against the GSR (Schoenrich 2010, Reid and Brunthaler 2020) and the radio LSRK +SUN_VS_GSR = (11.1, 248.5, 7.25) +SUN_VS_LSRK = (20.0, 56.157, 22.765) # km/s toward galactic (l, b) + +SITES = { + "GBT": (-79.839835, 38.433121, 807.4), "Parkes": (148.263526, -32.998370, 415.0), + "Paranal": (-70.4045, -24.6272, 2635.0), "LaSilla": (-70.7380, -29.2567, 2400.0), + "SSO": (149.0661, -31.2770, 1164.0), "APO": (-105.8203, 32.7802, 2788.0), "LCO": (-70.6926, -29.0146, 2380.0), + "ALMA": (-67.7552, -23.0234, 5058.0), "MWA": (116.6708, -26.7033, 377.0), "ASKAP": (116.6371, -26.6969, 361.0), + "LOFAR": (6.8689, 52.9153, 15.0), "ATA": (-121.4733, 40.8178, 1043.0), + "KPNO": (-111.5997, 31.9634, 2120.0), +} + + +def location(site): + """EarthLocation of a named site; geocentre for spacecraft.""" + from astropy.coordinates import EarthLocation + import astropy.units as u + if site == "geocentre": + return EarthLocation.from_geocentric(0 * u.m, 0 * u.m, 0 * u.m) + lon, lat, h = SITES[site] + return EarthLocation.from_geodetic(lon=lon * u.deg, lat=lat * u.deg, height=h * u.m) + + +def unit_vector(ra_deg, dec_deg): + a, d = np.radians(ra_deg), np.radians(dec_deg) + return np.array([np.cos(d) * np.cos(a), np.cos(d) * np.sin(a), np.sin(d)]) + + +def direction(ra, dec, pmra=0.0, pmdec=0.0, epoch=2016.0, at=2016.0): + """Unit vector to a star at year at from position and proper motion (mas/yr) at epoch.""" + dt = at - epoch + return unit_vector(ra + pmra / 3.6e6 * dt / math.cos(math.radians(dec)), dec + pmdec / 3.6e6 * dt) + + +def observer_velocity(mjd_utc, site): + """Barycentric velocity (km/s, shape (3, n)) of a site at UTC MJDs (ERFA).""" + from astropy.coordinates import get_body_barycentric_posvel + from astropy.time import Time + import astropy.units as u + t = Time(np.atleast_1d(mjd_utc), format="mjd", scale="utc") + _, vel = get_body_barycentric_posvel("earth", t, ephemeris="builtin") + _, gv = location(site).get_gcrs_posvel(t) + return vel.xyz.to(u.km / u.s).value + gv.xyz.to(u.km / u.s).value + + +def barycentric_correction(ra, dec, mjd_utc, site): + """Barycentric correction (km/s) for an observatory-frame radial velocity.""" + from astropy.coordinates import SkyCoord + from astropy.time import Time + import astropy.units as u + return SkyCoord(ra * u.deg, dec * u.deg).radial_velocity_correction( + kind="barycentric", obstime=Time(mjd_utc, format="mjd"), location=location(site)).to(u.km / u.s).value + + +def barycentre_seconds(t, mjdref, ra, dec, scale="tt", site="geocentre", n_grid=60): + """Arrival times (s since mjdref) moved to the barycentre toward (ra, dec), interpolated on a grid; geocentric error is the spacecraft light time.""" + from astropy.coordinates import SkyCoord + from astropy.time import Time + import astropy.units as u + t = np.asarray(t, float) + grid = np.linspace(t.min(), t.max(), n_grid) + tt = Time(mjdref + grid / 86400.0, format="mjd", scale=scale, location=location(site)) + ltt = tt.light_travel_time(SkyCoord(ra * u.deg, dec * u.deg), kind="barycentric").to(u.s).value + return t + np.interp(t, grid, ltt) + + +def ecliptic_lon_lat(ra_deg, dec_deg): + """Barycentric ecliptic longitude and latitude in degrees of ICRS positions.""" + from astropy.coordinates import SkyCoord + import astropy.units as u + c = SkyCoord(ra=np.asarray(ra_deg, float) * u.deg, dec=np.asarray(dec_deg, float) * u.deg, frame="icrs").barycentrictrueecliptic + return np.asarray(c.lon.deg), np.asarray(c.lat.deg) + + +def zone_excess(beta_deg, half_width_deg=0.262, band_deg=5.5): + """Count within HALF_WIDTH_DEG of the ecliptic against the strips of that width beside it out to BAND_DEG: zone, strips, mean, sd, z and Poisson p.""" + from scipy.stats import poisson + b = np.abs(np.asarray(beta_deg, float)) + n = int(round(band_deg / half_width_deg)) - 1 + zone = int(np.sum(b < half_width_deg)) + strips = [int(np.sum((b >= half_width_deg * k) & (b < half_width_deg * (k + 1)))) for k in range(1, n + 1)] + mean = float(np.mean(strips)) + sd = float(np.std(strips, ddof=1)) if n > 1 else 0.0 + p = float(poisson.sf(zone - 1, mean)) if zone > mean else 1.0 - float(poisson.sf(zone, mean)) + return dict(zone=zone, strips=strips, mean=mean, sd=sd, z=(zone - mean) / sd if sd else 0.0, p=p) + + +def spectrum_spikes(pts, sigma=4.0, frac=0.02): + """Bins of a binned spectrum PTS (wavelength, width, value, error) whose value stands SIGMA combined errors, SIGMA bin-to-bin scatters and a FRAC fraction away from the mean of their neighbours.""" + pts = sorted(pts) + res = [pts[i][2] - 0.5 * (pts[i - 1][2] + pts[i + 1][2]) for i in range(1, len(pts) - 1)] + scale = 1.4826 * float(np.median(np.abs(res))) if res else 0.0 + out = [] + for i in range(1, len(pts) - 1): + w, bw, d, e = pts[i] + dev = res[i - 1] + err = math.sqrt(e ** 2 + 0.25 * (pts[i - 1][3] ** 2 + pts[i + 1][3] ** 2)) + if abs(dev) > sigma * err and abs(dev) > sigma * scale and abs(dev) > frac * abs(d): + out.append(dict(um=w, bw=bw, depth=d, dev=dev, err=err, z=dev / err, scale=scale)) + return out + + +def galactic_unit(l_deg, b_deg): + """Unit vectors (n, 3) toward Galactic (l, b) in degrees.""" + lr, br = np.radians(np.atleast_1d(l_deg)), np.radians(np.atleast_1d(b_deg)) + return np.c_[np.cos(br) * np.cos(lr), np.cos(br) * np.sin(lr), np.sin(br)] + + +def _sun_vector(frame): + if frame == "cmb": + return CMB_DIPOLE[0] * galactic_unit(CMB_DIPOLE[1], CMB_DIPOLE[2])[0] + if frame == "gsr": + return np.array(SUN_VS_GSR, float) + if frame == "lsrk": + return SUN_VS_LSRK[0] * galactic_unit(SUN_VS_LSRK[1], SUN_VS_LSRK[2])[0] + raise ValueError(frame) + + +def frame_rest_velocity(frame, l_deg, b_deg): + """Heliocentric radial velocity (km/s) of a source at rest in cmb, gsr or lsrk toward (l, b).""" + return -(galactic_unit(l_deg, b_deg) @ _sun_vector(frame)) + + +def helio_to_lsrk(v_helio, l_deg, b_deg): + """LSRK radial velocity (km/s) of a barycentric one toward (l, b), as astropy's LSRK.""" + return np.asarray(v_helio, float) + galactic_unit(l_deg, b_deg) @ _sun_vector("lsrk") + + +def rest_to_observatory(lam_rest, rv_star, bc): + """Observatory wavelength of a rest line in a star of barycentric velocity rv_star, given correction bc.""" + return lam_rest * (1.0 + rv_star / C) * (1.0 - bc / C) + + +def bjd_tdb(mjd_utc, ra, dec, site): + """BJD (TDB) of UTC MJDs at a site toward (ra, dec).""" + from astropy.coordinates import SkyCoord + from astropy.time import Time + import astropy.units as u + t = Time(np.atleast_1d(mjd_utc), format="mjd", scale="utc", location=location(site)) + return (t.tdb + t.light_travel_time(SkyCoord(ra * u.deg, dec * u.deg), kind="barycentric")).jd + + +def cmb_beta(): + from astropy.coordinates import SkyCoord + import astropy.units as u + g = SkyCoord(l=CMB_DIPOLE[1] * u.deg, b=CMB_DIPOLE[2] * u.deg, frame="galactic").icrs + return CMB_DIPOLE[0] / C * unit_vector(g.ra.deg, g.dec.deg) + + +def planet_velocity(bjd, period_d, t0_bjd, star_mass_msun): + """Radial velocity (km/s, receding after transit) and orbital speed of a circular transiting planet.""" + vorb = (2 * math.pi * 6.674e-11 * star_mass_msun * 1.98892e30 / (period_d * 86400.0)) ** (1 / 3) / 1000.0 + phase = ((np.asarray(bjd) - t0_bjd) / period_d) % 1.0 + return vorb * np.sin(2 * math.pi * phase), vorb, phase + + +def line_tracks(f0, ra, dec, mjd_utc, site, star=None, planet=None, frames=("cmb", "ssb", "star", "planet")): + """Observatory-frame frequency tracks and km/s half-windows of a line emitted at f0 in the cmb, ssb, star or planet frame.""" + mjd = np.atleast_1d(mjd_utc) + star = star or {} + year = 2000.0 + (np.mean(mjd) - 51544.5) / 365.25 + n = direction(ra, dec, star.get("pmra", 0.0), star.get("pmdec", 0.0), 2016.0, year) + obs = (1.0 + n @ observer_velocity(mjd, site) / C) * (1.0 + L_B) + out, half = {}, {} + if "cmb" in frames: + b = cmb_beta() + out["cmb"] = f0 / math.sqrt(1 - b @ b) * (1.0 + n @ b) * obs + half["cmb"] = 0.45 + if "ssb" in frames: + out["ssb"] = f0 * obs + half["ssb"] = 0.021 + rv = star.get("rv") + if rv is not None and np.isfinite(rv): + plx = star.get("plx", 0.0) or 0.0 + vt = 4.74047 * math.hypot(star.get("pmra", 0.0), star.get("pmdec", 0.0)) / plx if plx > 0 else 0.0 + err = star.get("rv_err") or 1.0 + if "star" in frames: + g = 1.0 / math.sqrt(1.0 - (rv / C) ** 2 - (vt / C) ** 2) + out["star"] = f0 / (g * (1.0 + rv / C)) * obs + half["star"] = 3.0 * err + 0.7 + if planet and "planet" in frames: + bjd = bjd_tdb(mjd, ra, dec, site) + vp, vorb, _ = planet_velocity(bjd, planet["P"], planet["T0"], planet["mass"]) + cycles = abs((np.mean(bjd) - planet["T0"]) / planet["P"]) + dph = (planet.get("eT0", 1e-3) + cycles * planet.get("eP", 1e-4)) / planet["P"] + e_p = math.sqrt(err ** 2 + (vorb * planet.get("e_mass", 0.1 * planet["mass"]) / (3 * planet["mass"])) ** 2 + + (vorb * 2 * math.pi * dph) ** 2) + g = 1.0 / np.sqrt(1.0 - ((rv + vp) / C) ** 2 - (vt / C) ** 2) + out["planet"] = f0 / (g * (1.0 + (rv + vp) / C)) * obs + half["planet"] = 3.0 * e_p + 1.0 + return out, half + + +# -------------------------------------------------------------------------------------------------------------------- +# spectra: narrow-line detection and vetting on one grid; residual = spectrum / model - 1, dips as the null + +def vac_to_air(w): + """Air wavelength (A) of a vacuum wavelength (Morton 2000).""" + s2 = (1e4 / np.asarray(w, float)) ** 2 + return w / (1.0 + 0.0000834254 + 0.02406147 / (130.0 - s2) + 0.00015998 / (38.9 - s2)) + + +def air_to_vac(w, iterations=3): + """Vacuum wavelength (A) of an air wavelength.""" + v = np.asarray(w, float).copy() + for _ in range(iterations): + v = v + (w - vac_to_air(v)) + return v + + +# strong unblended FGK lines at laboratory air wavelengths (A): Fe I, Ca I, Mg I, Na I, Ba II +STRONG_LINES = (4045.812, 4063.594, 4071.738, 4202.029, 4226.728, 4250.119, 4260.474, 4271.760, 4325.762, 4383.545, + 4404.750, 4415.122, 4427.310, 4454.779, 4459.118, 4494.563, 4528.614, 4554.029, 4890.755, 4891.492, + 4920.502, 4957.596, 5167.322, 5172.684, 5183.604, 5269.537, 5328.039, 5371.489, 5397.128, 5405.775, + 5429.696, 5446.917, 5588.749, 5615.644, 5889.950, 5895.924, 6122.217, 6137.692, 6141.713, 6162.173, + 6191.558, 6230.723, 6252.555, 6393.601, 6439.075, 6494.980, 6496.897) + + +def line_velocity(flux, grid, lines=STRONG_LINES, span=200.0, step=0.05, coarse=1.0, min_lines=8): + """Velocity (km/s) minimising the mean flux at strong-line cores, coarse then fine; NaN with fewer than min_lines lines.""" + grid = np.asarray(grid, float) + step_a = grid[1] - grid[0] + use = [] + for lam in lines: + lo, hi = lam * (1 - span / C) - 1.0, lam * (1 + span / C) + 1.0 + if lo < grid[0] or hi > grid[-1]: + continue + j0, j1 = int((lo - grid[0]) / step_a), int((hi - grid[0]) / step_a) + 1 + if np.isfinite(flux[j0:j1]).mean() > 0.98: + use.append(lam) + if len(use) < min_lines: + return float("nan") + use = np.array(use) + f = np.where(np.isfinite(flux), flux, np.nanmedian(flux)) + + def best(vs): + s = [np.mean(np.interp(use * (1.0 + v / C), grid, f)) for v in vs] + return float(vs[int(np.argmin(s))]) + v0 = best(np.arange(-span, span + 1e-9, coarse)) + return best(np.arange(v0 - 2 * coarse, v0 + 2 * coarse + 1e-9, step)) + + +def to_rest(flux, grid, v): + """Flux moved from a frame receding at v km/s to the rest frame on the same grid; NaN beyond the data.""" + return np.interp(grid, np.asarray(grid, float) / (1.0 + v / C), flux, left=np.nan, right=np.nan) + + +def velocity_offset(flux, ref, grid, mask=None, span=6.0, step=0.05, coarse=None): + """Velocity (km/s) of flux relative to ref by cross-correlation over mask within +-span.""" + m = np.isfinite(flux) & np.isfinite(ref) + if mask is not None: + m &= mask + if m.sum() < 100: + return 0.0 + lam = np.asarray(grid, float)[m] + a = flux[m] - flux[m].mean() + r = np.nan_to_num(ref, nan=1.0) + + def best(vs): + c = [] + for v in vs: + b = np.interp(lam, grid * (1.0 + v / C), r) + c.append(np.dot(a, b - b.mean())) + return float(vs[int(np.argmax(c))]) + if coarse: + v0 = best(np.arange(-span, span + 1e-9, coarse)) + return best(np.arange(v0 - coarse, v0 + coarse + 1e-9, step)) + return best(np.arange(-span, span + 1e-9, step)) + + +def line_absorption(target, twins, grid, lam0, R, core=0.25, half=8.0, residual=False): + """Extra absorption at lam0 beyond a twin model: (z, equivalent width in mA), with the window residual when residual is set.""" + from scipy.optimize import nnls + nan = (float("nan"), float("nan")) + ((None,) if residual else ()) + step = grid[1] - grid[0] + j0 = int(round((lam0 - grid[0]) / step)) + h = int(half / step) + if j0 - h < 0 or j0 + h + 1 > len(grid): + return nan + sl = slice(j0 - h, j0 + h + 1) + y = target[sl] + B = np.array([t[sl] for t in twins]) + x = (grid[sl] - lam0) / half + ok = np.isfinite(y) & np.all(np.isfinite(B), axis=0) + fitm = ok & (np.abs(grid[sl] - lam0) > core) + if fitm.sum() < 0.5 * len(y) or ok[h - int(0.2 / step):h + int(0.2 / step) + 1].mean() < 0.9: + return nan + A = np.nan_to_num(np.vstack([B, np.ones_like(x), -np.ones_like(x), x, -x]).T) + coef, _ = nnls(A[fitm], y[fitm]) + m0 = A @ coef + g1 = np.gradient(m0) + g2 = np.gradient(g1) + A2 = np.hstack([A, np.vstack([g1, -g1, g2, -g2]).T]) + coef, _ = nnls(A2[fitm], y[fitm]) + res = y - A2 @ coef + noise = 1.4826 * np.median(np.abs(res[fitm] - np.median(res[fitm]))) + sp = lam0 / R / 2.3548 / step + k = np.arange(-int(4 * sp) - 1, int(4 * sp) + 2) + g = np.exp(-0.5 * (k / sp) ** 2) + seg = res[h + k[0]:h + k[-1] + 1] + if not np.all(np.isfinite(seg)) or noise <= 0: + return nan + amp = np.dot(seg, g) / np.dot(g, g) + out = float(amp / (noise / np.sqrt(np.dot(g, g)))), float(amp * sp * step * np.sqrt(2 * np.pi) * 1000.0) + return out + (res,) if residual else out + + +def combined_line_score(z, weights, null, draws=20000, seed=7): + """Weighted combined line score and its lower-tail probability among null draws.""" + z, w = np.asarray(z, float), np.asarray(weights, float) + ok = np.isfinite(z) + if not ok.any() or len(null) < 50: + return float("nan"), float("nan") + z, w = z[ok], w[ok] + zc = float(np.dot(w, z) / np.sqrt(np.dot(w, w))) + if len(z) == 1: + # one line: its rank among the null values + return zc, float((1 + np.sum(np.asarray(null, float) <= zc)) / (1 + len(null))) + rng = np.random.default_rng(seed) + sims = rng.choice(np.asarray(null, float), size=(draws, len(z))) @ w / np.sqrt(np.dot(w, w)) + return zc, float((1 + np.sum(sims <= zc)) / (1 + draws)) + + +def combined_line_threshold(weights, null, p, draws=100000, seed=7): + """Combined score at lower-tail probability p among null draws.""" + w = np.asarray(weights, float) + if len(w) == 1: + return float(np.quantile(np.asarray(null, float), p)) if p * len(null) >= 1 else float(np.min(null)) + rng = np.random.default_rng(seed) + sims = rng.choice(np.asarray(null, float), size=(draws, len(w))) @ w / np.sqrt(np.dot(w, w)) + return float(np.quantile(sims, p)) + + +def envelope(f, block=500, q=90.0, smooth=5): + """Running upper envelope: block percentiles, interpolated and smoothed.""" + n = len(f) + cen, val = [], [] + for s in range(0, n, block): + x = f[s:s + block] + x = x[np.isfinite(x)] + if len(x) > block // 4: + cen.append(s + block // 2) + val.append(np.percentile(x, q)) + if len(cen) < 2: + return np.full(n, np.nan) + env = np.interp(np.arange(n), cen, val) + if smooth > 1: + k = np.ones(smooth) / smooth + env = np.convolve(np.pad(env, smooth // 2, mode="edge"), k, mode="valid")[:n] + return env + + +def block_median(x, block=150): + """Running baseline from block medians.""" + n = len(x) + cen, val = [], [] + for s in range(0, n, block): + v = x[s:s + block] + v = v[np.isfinite(v)] + if len(v) > block // 4: + cen.append(s + block // 2) + val.append(np.median(v)) + if len(cen) < 2: + return np.ones(n) + return np.interp(np.arange(n), cen, val) + + +def block_mad(res, block=500, floor=2e-3): + """Blockwise robust scatter (1.4826 MAD), interpolated, floored.""" + n = len(res) + cen, val = [], [] + for s in range(0, n, block): + x = res[s:s + block] + x = x[np.isfinite(x)] + if len(x) > block // 4: + cen.append(s + block // 2) + val.append(1.4826 * np.median(np.abs(x - np.median(x)))) + if not cen: + return np.full(n, np.inf) + return np.maximum(np.interp(np.arange(n), cen, val), floor) + + +def lsf_sigma_px(R, lam=None, step=None, dlog10=None): + """Gaussian sigma (samples) of an unresolved line on a linear or log10 grid.""" + if dlog10 is not None: + return 1.0 / (R * dlog10 * np.log(10.0)) / 2.3548 + return lam / R / 2.3548 / step + + +def matched_filter(res, err, sigma_px): + """Matched-filter significance and amplitude of an unresolved line at every sample.""" + k = np.arange(-int(4 * sigma_px) - 1, int(4 * sigma_px) + 2) + g = np.exp(-0.5 * (k / sigma_px) ** 2) + w = np.where(np.isfinite(res) & np.isfinite(err) & (err > 0), 1.0 / np.maximum(err, 1e-12) ** 2, 0.0) + r0 = np.where(w > 0, res, 0.0) + num = np.convolve(r0 * w, g, mode="same") + den = np.convolve(w, g * g, mode="same") + return num / np.sqrt(np.maximum(den, 1e-30)), num / np.maximum(den, 1e-30) + + +def matched_filter_linear(res, err, lam, R, step, chunk=10000): + """Matched filter on a linear grid with line width growing with wavelength.""" + snr = np.zeros(len(res)) + amp = np.zeros(len(res)) + for s in range(0, len(res), chunk): + sp = lsf_sigma_px(R, lam[min(s + chunk // 2, len(lam) - 1)], step) + pad = int(5 * sp) + 2 + lo, hi = max(s - pad, 0), min(s + chunk + pad, len(res)) + a, b = matched_filter(res[lo:hi], err[lo:hi], sp) + snr[s:s + chunk] = a[s - lo:s - lo + min(chunk, len(res) - s)] + amp[s:s + chunk] = b[s - lo:s - lo + min(chunk, len(res) - s)] + return snr, amp + + +def width_ratio(res, j, sigma_px): + """Best Gaussian width at sample j in units of the instrumental width; 0.6-1.6 is unresolved.""" + half = int(5 * sigma_px) + 2 + lo, hi = max(j - half, 0), min(j + half + 1, len(res)) + x = np.arange(lo, hi) - j + y = res[lo:hi] + ok = np.isfinite(y) + if ok.sum() < 5: + return float("nan") + best, bs = np.inf, float("nan") + for s in np.arange(0.4, 4.01, 0.1) * sigma_px: + gg = np.exp(-0.5 * (x / s) ** 2) + a = np.dot(gg[ok], y[ok]) / np.dot(gg[ok], gg[ok]) + chi = np.sum((y[ok] - a * gg[ok]) ** 2) + if chi < best: + best, bs = chi, s + return float(bs / sigma_px) + + +def find_peaks(score, thr, sep=10, mask=None, limit=2000): + """Local maxima above thr, strongest first, at least sep samples apart.""" + ok = score > thr + if mask is not None: + ok &= mask + idx = np.nonzero(ok)[0] + out = [] + for i in idx[np.argsort(-score[idx])]: + if all(abs(i - j) >= sep for j in out): + out.append(int(i)) + if len(out) >= limit: + break + return out + + +def profile_is_spiky(flux, j, sigma_px, base=None): + """True when the pixels around j are spiky (cosmic ray, hot pixel) rather than a smooth line.""" + half = max(3, int(3 * sigma_px)) + seg = np.asarray(flux[max(j - half, 0):j + half + 1], float) + if base is None: + base = np.nanmedian(flux[max(j - 40, 0):j + 40]) + x = seg - base + k = int(np.nanargmax(x)) + if not (0 < k < len(x) - 1) or x[k] <= 0: + return True + if x[k - 1] < 0.35 * x[k] and x[k + 1] < 0.35 * x[k]: + return True + for i in range(max(k - 2, 1), min(k + 3, len(x) - 1)): + if i != k and x[i] < 0.3 * x[k] and (x[i - 1] > 0.5 * x[k] or x[i + 1] > 0.5 * x[k]): + return True + return False + + +def groups(peaks, key, tol, member="visit", min_members=2): + """Clusters of peaks within tol in key, drawn from at least min_members distinct members.""" + pts = sorted(peaks, key=lambda q: q[key]) + out, cur = [], [] + for q in pts: + if cur and q[key] - cur[-1][key] > tol: + out.append(cur) + cur = [] + cur.append(q) + if cur: + out.append(cur) + return [g for g in out if len({q[member] for q in g}) >= min_members] + + +def strength(group): + """Strength of a recurring group: its second-strongest member.""" + v = sorted((q["snr"] for q in group), reverse=True) + return v[1] if len(v) > 1 else 0.0 + + +def nearest_spectra(N, good, k): + """Indices of the k most similar rows of N by mean-square difference over shared good samples (torch GPU when present).""" + import torch + dev = torch.device("cuda" if torch.cuda.is_available() else "cpu") + W = torch.as_tensor(good, dtype=torch.float32, device=dev) + X = torch.as_tensor(np.nan_to_num(N, nan=0.0), dtype=torch.float32, device=dev) * W + X2 = X * X + overlap = W @ W.T + d = (X2 @ W.T + W @ X2.T - 2.0 * X @ X.T) / overlap.clamp(min=1.0) + d[overlap < 0.5 * W.sum(1, keepdim=True)] = float("inf") + d.fill_diagonal_(float("inf")) + return torch.topk(d, k, largest=False).indices.cpu().numpy() + + +def fill_gaps(row, ok): + """Spectrum with bad samples linearly interpolated.""" + if ok.all(): + return row + x = np.arange(len(row)) + if ok.sum() < 2: + return np.ones_like(row) + return np.interp(x, x[ok], row[ok]) + + +def twin_model(target, basis, mask, poly_order=3, derivatives=True): + """Non-negative fit of comparison spectra plus signed polynomial continuum and optional shift and width terms.""" + from scipy.optimize import nnls + n = len(target) + x = np.linspace(-1, 1, n) + poly = [x ** k * s for k in range(poly_order + 1) for s in (1.0, -1.0)] + A = np.nan_to_num(np.vstack(list(basis) + poly).T) + coef, _ = nnls(A[mask], target[mask]) + model = A @ coef + if derivatives: + g1 = np.gradient(model) + g2 = np.gradient(g1) + g1 /= max(np.abs(g1[mask]).max(), 1e-12) + g2 /= max(np.abs(g2[mask]).max(), 1e-12) + A = np.hstack([A, np.vstack([g1, -g1, g2, -g2]).T]) + coef, _ = nnls(A[mask], target[mask]) + model = A @ coef + weights = coef[:len(basis)] + template = np.asarray(basis).T @ weights / max(weights.sum(), 1e-12) + return model, template + + +def drop_dropouts(V, bad, limit=0.6, grow=2): + """Bad mask extended over visit dropouts below limit of the visit median, grown by grow samples.""" + Vn = np.where(bad, np.nan, V) + med = np.nanmedian(Vn, axis=0) + out = bad.copy() + for k in range(V.shape[0]): + r = Vn[k] / med + low = np.nan_to_num(r / block_median(r), nan=1.0) < limit + if low.any(): + out[k] |= np.convolve(low.astype(float), np.ones(2 * grow + 1), mode="same") > 0 + return out + + +def visit_recurrence(lam, V, E, bad, vobs, sigma_px, thr=6.0, min_spread=2.0, tol_px=0.5): + """Lines recurring at one rest wavelength in several visits but not at one observatory wavelength: dict(pos, neg, terrestrial) of groups.""" + nv = V.shape[0] + bad = drop_dropouts(V, bad) + Vn = np.where(bad, np.nan, V) + med = np.nanmedian(Vn, axis=0) + frac = np.nanmedian(E / np.maximum(np.abs(V), 1e-12), axis=0) + dlam = np.gradient(lam) + tol = tol_px * np.median(dlam) + found = [] + for k in range(nv): + ratio = Vn[k] / med + res = ratio / block_median(ratio) - 1.0 + rerr = np.sqrt((E[k] / np.maximum(np.abs(V[k]), 1e-12)) ** 2 + (1.2533 * frac) ** 2 / nv) + res = np.where(bad[k] | ~np.isfinite(med), np.nan, res) + snr, _ = matched_filter(res, rerr, sigma_px) + for sign in (1, -1): + for j in find_peaks(sign * snr, thr, sep=8, limit=100): + if not np.isfinite(vobs[k]): + continue + found.append(dict(visit=k, sign=sign, lam=float(lam[j]), snr=float(sign * snr[j]), + width=width_ratio(sign * res, j, sigma_px), vobs=float(vobs[k]), + lam_obs=float(lam[j] * (1.0 + vobs[k] / C)))) + narrow = [q for q in found if 0.6 <= q["width"] <= 1.6] + out = dict(pos=[], neg=[], terrestrial=[]) + for sign, key in ((1, "pos"), (-1, "neg")): + sel = [q for q in narrow if q["sign"] == sign] + topo = groups(sel, "lam_obs", tol) + topo_l = [float(np.mean([q["lam_obs"] for q in g])) for g in topo] + if sign > 0: + out["terrestrial"] = [round(x, 3) for x in topo_l] + for g in groups(sel, "lam", tol): + vo = [q["vobs"] for q in g] + if np.ptp(vo) < min_spread: + continue + lo = float(np.mean([q["lam_obs"] for q in g])) + if any(abs(lo - x) < 2 * tol for x in topo_l): + continue + out[key].append(dict(lam=round(float(np.mean([q["lam"] for q in g])), 4), + visits=sorted({q["visit"] for q in g}), snr=[round(q["snr"], 1) for q in g], + width=[round(q["width"], 2) for q in g], strength=round(strength(g), 2), + vobs_spread=round(float(np.ptp(vo)), 2))) + return out + + +def null_summary(pos_strengths, neg_strengths, thresholds=(5, 6, 8, 10, 15, 20)): + """Counts of emission-like and absorption-like detections above each threshold, and the strongest null.""" + pos, neg = np.asarray(pos_strengths, float), np.asarray(neg_strengths, float) + return dict(null_max=float(neg.max()) if len(neg) else 0.0, + counts={t: (int((pos > t).sum()), int((neg > t).sum())) for t in thresholds}) + + +# -------------------------------------------------------------------------------------------------------------------- +# radio: Breakthrough Listen HDF5 read by byte range with cached indexes and chunks, and track searches + +COARSE = 1048576 + +# GBT L- and S-band allocations occupied by transmitters (47 CFR 2.106); 1400-1427 MHz is passive +OCCUPIED_MHZ = ( + (960.0, 1215.0, "aeronautical radionavigation (DME, TACAN) and GNSS L5/E5"), + (1215.0, 1300.0, "GNSS L2/E6 and air-route surveillance radar"), + (1300.0, 1390.0, "air-route surveillance radar"), + (1435.0, 1525.0, "aeronautical mobile telemetry"), + (1525.0, 1559.0, "mobile-satellite downlinks (Inmarsat)"), + (1559.0, 1610.0, "GNSS L1/E1/G1"), + (1610.0, 1626.5, "mobile-satellite (Iridium, Globalstar uplink)"), + (1626.5, 1660.5, "mobile-satellite Earth-to-space (Inmarsat aeronautical and maritime terminals)"), + (1670.0, 1710.0, "meteorological satellites and radiosondes"), + (1710.0, 1780.0, "AWS mobile uplink"), + (1850.0, 1915.0, "PCS mobile uplink"), + (1920.0, 1930.0, "unlicensed PCS (DECT 6.0 cordless telephones)"), + (1930.0, 1995.0, "PCS mobile downlink"), + (2025.0, 2110.0, "space operations Earth-to-space, TDRSS forward links (2025.8-2117.9) and broadcast auxiliary"), + (2110.0, 2200.0, "AWS mobile downlink and mobile-satellite"), + (2200.0, 2290.0, "space operations and space research space-to-Earth telemetry, TDRSS return links"), + (2305.0, 2360.0, "WCS and satellite digital audio radio (SDARS)"), + (2360.0, 2395.0, "aeronautical mobile telemetry"), + (2400.0, 2500.0, "ISM (Wi-Fi, Bluetooth, microwave ovens) and Globalstar downlink"), + (2500.0, 2690.0, "broadband radio service (LTE band 41)"), +) + + +def occupied(mhz): + """Occupied allocation holding a frequency (MHz), or None.""" + for lo, hi, what in OCCUPIED_MHZ: + if lo <= mhz < hi: + return what + return None + + +def _cache(*parts): + p = os.path.join(core.CACHE, *parts) + os.makedirs(os.path.dirname(p), exist_ok=True) + return p + + +def header(url, coarse_channels=()): + """File header and per-coarse-channel chunk byte spans, cached under CACHE/idx.""" + name = url.rstrip("/").split("/")[-1] + path = _cache("idx", name + ".json") + meta = json.load(open(path)) if os.path.exists(path) else None + missing = [k for k in coarse_channels if meta is None or str(k) not in meta["spans"]] + if meta is not None and not missing: + return meta + import fsspec + import h5py + f = h5py.File(fsspec.open(url, block_size=2 ** 16).open(), "r") + d = f["data"] + if meta is None: + meta = dict(fch1=float(d.attrs["fch1"]), foff=float(d.attrs["foff"]), tsamp=float(d.attrs["tsamp"]), + tstart=float(d.attrs["tstart"]), nt=int(d.shape[0]), nch=int(d.shape[2]), cw=int(d.chunks[2]), + src=[float(d.attrs.get("src_raj", np.nan)), float(d.attrs.get("src_dej", np.nan))], spans={}) + cw, nt = meta["cw"], meta["nt"] + for k in missing: + j0, j1 = (k * COARSE) // cw, ((k + 1) * COARSE - 1) // cw + meta["spans"][str(k)] = [j0, j1, [[[i.byte_offset, i.size] for i in + (d.id.get_chunk_info_by_coord((t, 0, j * cw)) for j in range(j0, j1 + 1))] + for t in range(nt)]] + f.close() + tmp = path + ".%d.tmp" % os.getpid() + json.dump(meta, open(tmp, "w")) + os.replace(tmp, path) + return meta + + +def _decompress(blobs, nt, nj, cw): + import h5py + import hdf5plugin + ff = h5py.File("grid.h5", "w", driver="core", backing_store=False) + ds = ff.create_dataset("x", shape=(nt, 1, nj * cw), dtype="f4", chunks=(1, 1, cw), + **hdf5plugin.Bitshuffle(nelems=0, cname="lz4")) + for i, b in enumerate(blobs): + t, j = divmod(i, nj) + ds.id.write_direct_chunk((t, 0, j * cw), b) + x = ds[:, 0, :] + ff.close() + return x + + +def coarse_channel(url, k, threads=8): + """Spectrogram of coarse channel k and its first channel's frequency (MHz).""" + meta = header(url, (k,)) + j0, j1, sp = meta["spans"][str(k)] + spans = [tuple(x) for row in sp for x in row] + name = url.rstrip("/").split("/")[-1] + path = _cache("blob", "%s.k%d.bin" % (name, k)) + blobs = None + if os.path.exists(path): + raw = open(path, "rb").read() + if len(raw) == sum(s for _, s in spans): + blobs, pos = [], 0 + for _, s in spans: + blobs.append(raw[pos:pos + s]) + pos += s + if blobs is None: + blobs = core.pmap(lambda q: core.get(url, byte_range=(q[0], q[0] + q[1] - 1), timeout=120), spans, threads) + tmp = path + ".%d.tmp" % os.getpid() + with open(tmp, "wb") as fh: + for b in blobs: + fh.write(b) + os.replace(tmp, path) + x = _decompress(blobs, meta["nt"], j1 - j0 + 1, meta["cw"]) + off = k * COARSE - j0 * meta["cw"] + return x[:, off:off + COARSE], meta["fch1"] + meta["foff"] * k * COARSE + + +def cached_channel(name, k): + """Cached spectrogram and header of coarse channel k, or None when incomplete.""" + pidx = os.path.join(core.CACHE, "idx", name + ".json") + pblob = os.path.join(core.CACHE, "blob", "%s.k%d.bin" % (name, k)) + if not (os.path.exists(pidx) and os.path.exists(pblob)): + return None + meta = json.load(open(pidx)) + if str(k) not in meta["spans"]: + return None + j0, j1, sp = meta["spans"][str(k)] + sizes = [s for row in sp for _, s in row] + raw = open(pblob, "rb").read() + if len(raw) != sum(sizes): + return None + blobs, pos = [], 0 + for s in sizes: + blobs.append(raw[pos:pos + s]) + pos += s + x = _decompress(blobs, meta["nt"], j1 - j0 + 1, meta["cw"]) + off = k * COARSE - j0 * meta["cw"] + return x[:, off:off + COARSE], meta + + +def flatten(x, dc_halfwidth=2): + """Bandpass-flattened, robustly standardised spectrogram with the DC bin zeroed.""" + from scipy.ndimage import median_filter + base = median_filter(x.mean(0), size=1025, mode="nearest") + r = x / np.maximum(base, 1e-12)[None, :] + med = np.median(r, axis=1, keepdims=True) + mad = np.median(np.abs(r - med), axis=1, keepdims=True) * 1.4826 + 1e-12 + z = ((r - med) / mad).astype(np.float32) + c = x.shape[1] // 2 + z[:, c - dc_halfwidth:c + dc_halfwidth + 1] = 0.0 + return z + + +def track_sum(z, base, offsets): + """Unit-noise sum of z along a track at every channel offset.""" + nt = z.shape[0] + idx = base[:, None] + offsets[None, :] + return z[np.arange(nt)[:, None], idx].sum(0) / math.sqrt(nt) + + +def track_search(z, path_mhz, f_first, foff, half_ch, deltas): + """Track statistic over +-half_ch, its zero-drift counterpart, and the null from shifted tracks.""" + pos = (np.asarray(path_mhz) - f_first) / foff + base = np.round(pos).astype(int) + offs = np.arange(-half_ch, half_ch + 1) + width = z.shape[1] + if base.min() - half_ch < 0 or base.max() + half_ch >= width: + return None + s = track_sum(z, base, offs) + flat = track_sum(z, np.full(len(base), int(round(pos.mean()))), offs) + null = [] + for dl in deltas: + if abs(int(dl)) < 2 * half_ch + 2000: + continue + b = base + int(dl) + if b.min() - half_ch < 0 or b.max() + half_ch >= width: + continue + null.append(track_sum(z, b, offs).max()) + return dict(s=s, flat=flat, null=np.array(null)) + + +def gumbel_p(null_max, x): + """Upper-tail probability of x under a moment-fitted Gumbel law of null maxima.""" + m, sd = float(np.mean(null_max)), float(np.std(null_max)) + beta = sd * math.sqrt(6.0) / math.pi + if beta <= 0: + return 1.0 if x <= m else 0.0 + mu = m - 0.5772156649 * beta + z = -(x - mu) / beta + # exp(z) overflows far below the null maxima; p is then 1 + if z > 700: + return 1.0 + return -math.expm1(-math.exp(z)) + + +# -------------------------------------------------------------------------------------------------------------------- +# timeseries: robust trends of irregular light curves (GPU when present) and folded-profile shape statistics + +def _device(): + import torch + return torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +def theil_sen(x, y): + """Median of all pairwise slopes.""" + import torch + dev = _device() + xt = torch.as_tensor(np.asarray(x, np.float64) - np.mean(x), dtype=torch.float32, device=dev) + yt = torch.as_tensor(np.asarray(y, np.float64), dtype=torch.float32, device=dev) + i, j = torch.triu_indices(len(xt), len(xt), 1, device=dev) + dx = xt[j] - xt[i] + keep = dx.abs() > 1e-6 + return float(((yt[j] - yt[i])[keep] / dx[keep]).median()) + + +def slope(t, y, per=100.0, nboot=200, seed=1): + """Theil-Sen slope per per units of t with a bootstrap error.""" + import torch + dev = _device() + x = (np.asarray(t, np.float64) - np.mean(t)) / per + s = theil_sen(x, y) + xt = torch.as_tensor(x, dtype=torch.float32, device=dev) + yt = torch.as_tensor(np.asarray(y, np.float64), dtype=torch.float32, device=dev) + n = len(xt) + g = torch.Generator(device=dev).manual_seed(seed) + i, j = torch.triu_indices(n, n, 1, device=dev) + bs = [] + for _ in range(nboot): + k = torch.randint(0, n, (n,), generator=g, device=dev) + dx = xt[k][j] - xt[k][i] + keep = dx.abs() > 1e-6 + bs.append(float(((yt[k][j] - yt[k][i])[keep] / dx[keep]).median())) + return s, float(np.std(bs)) + + +def per_group_slopes(t, y, labels, per=100.0, min_n=30, min_span=20.0): + """Theil-Sen slope within each label with enough points and span.""" + out = {} + for name in set(labels): + k = labels == name + if k.sum() >= min_n and np.ptp(t[k]) >= min_span: + out[str(name)] = theil_sen((t[k] - t[k].mean()) / per, y[k]) + return out + + +def series_coherence(diffs, spreads, floor=0.05): + """(common slope, error, chi-square p) of per-series differential slopes weighted by comparison spread.""" + from scipy.stats import chi2 + d = np.asarray(diffs, float) + w = 1.0 / np.maximum(np.asarray(spreads, float), floor) ** 2 + if len(d) < 2: + return float("nan"), float("nan"), float("nan") + D = float(np.sum(d * w) / np.sum(w)) + return D, float(1.0 / np.sqrt(np.sum(w))), float(chi2.sf(np.sum((d - D) ** 2 * w), len(d) - 1)) + + +def differential_trend(target, comps, per=100.0, min_points=50, min_span=50.0, spread_floor=0.0): + """Target slope minus the comparisons' median in units of their spread and the bootstrap error, with per-series slopes and sign agreement.""" + t, y, lab = target + if len(t) < min_points or np.ptp(t) < min_span: + return None + s, e = slope(t, y, per) + cs = [slope(c[0], c[1], per)[0] for c in comps if len(c[0]) >= min_points and np.ptp(c[0]) >= min_span] + if len(cs) < 3: + return dict(slope=s, err=e, n=len(t), comps=cs, note="fewer than 3 comparisons") + med = float(np.median(cs)) + spread = float(1.4826 * np.median(np.abs(np.array(cs) - med))) + diff = s - med + series = per_group_slopes(t, y, lab, per) + agree = (sum(1 for v in series.values() if v * diff > 0) / len(series)) if series else None + return dict(slope=s, err=e, n=int(len(t)), comps=cs, comp_median=med, comp_spread=spread, diff=diff, + sigma=diff / max(np.hypot(spread, e), spread_floor, 1e-3), series=series, series_agreeing=agree) + + +# folded-profile shape statistics of periodic events + + +def trapezoid(ph, depth, dur, ingress, centre=0.0): + x = np.abs(ph - centre) + y = np.zeros_like(ph) + full = x <= dur / 2 - ingress + edge = (x > dur / 2 - ingress) & (x < dur / 2) + y[full] = -depth + y[edge] = -depth * (dur / 2 - x[edge]) / max(ingress, 1e-9) + return y + + +def profile(t, f, P, t0, dur_d, nb=60, adapt=True): + """Binned folded profile over +-1.5 durations; fewer, fuller bins for few events unless adapt is off.""" + ph = ((t - t0) / P + 0.5) % 1.0 - 0.5 + w = 3.0 * dur_d / P + sel = np.abs(ph) < w / 2 + if adapt: + nb = int(min(nb, max(10, sel.sum() // 6))) + edges = np.linspace(-w / 2, w / 2, nb + 1) + k = np.digitize(ph[sel], edges) - 1 + prof = np.array([np.median(f[sel][k == i]) - 1.0 if np.sum(k == i) >= 2 else np.nan for i in range(nb)]) + err = np.array([max(1.2533 * np.std(f[sel][k == i]), 1e-5) / np.sqrt(np.sum(k == i)) if np.sum(k == i) >= 2 else np.nan + for i in range(nb)]) + return 0.5 * (edges[1:] + edges[:-1]) * P, prof, err + + +def fit_trapezoid(x, y, e, dur_d): + ok = np.isfinite(y) & np.isfinite(e) & (e > 0) + best = None + for dur in np.linspace(0.4, 1.6, 25) * dur_d: + for ing in np.linspace(0.02, 0.5, 13) * dur: + for c in np.linspace(-0.2, 0.2, 9) * dur_d: + m = trapezoid(x, 1.0, dur, ing, c) + a = np.sum(m[ok] * y[ok] / e[ok] ** 2) / max(np.sum(m[ok] ** 2 / e[ok] ** 2), 1e-30) + chi = np.sum((y[ok] - a * m[ok]) ** 2 / e[ok] ** 2) + if best is None or chi < best[0]: + best = (chi, a, dur, ing, c) + return best, int(ok.sum()) + + +def shape_stats(t, f, P, t0, dur, cadence_d): + """Folded-profile statistics: trapezoid fit, S/N, asymmetry, halves, odd-even, secondary depth, ingress fraction; None when sparse.""" + from scipy.ndimage import median_filter + ph = ((t - t0) / P + 0.5) % 1.0 - 0.5 + intr = np.abs(ph * P) < 1.5 * dur + base = np.interp(t, t[~intr], median_filter(f[~intr], size=max(int(3 * dur / cadence_d), 5), mode="nearest")) \ + if (~intr).sum() > 100 else np.ones_like(f) + g = f / base + x, y, e = profile(t, g, P, t0, dur) + best, n = fit_trapezoid(x, y, e, dur) + if best is None or n < 8: + return None + chi_flat = float(np.nansum((y / e) ** 2)) + snr = float(np.sqrt(max(chi_flat - best[0], 0))) + red = best[0] / max(n - 5, 1) + mid =np.abs(x - best[4]) < best[2] / 2 + asym = float(np.nansum(y[mid & (x > best[4])]) - np.nansum(y[mid & (x < best[4])])) / max(abs(np.nansum(y[mid])), 1e-12) + dips = 0 + yy = np.where(np.isfinite(y), y, 0.0) + for i in range(1, len(yy) - 1): + if mid[i] and yy[i] < yy[i - 1] and yy[i] < yy[i + 1] and yy[i] < -3 * e[i] and \ + min(yy[i - 1], yy[i + 1]) - yy[i] > 2 * e[i]: + dips += 1 + half = t < np.median(t) + nbx = len(x) + _, y1, _ = profile(t[half], g[half], P, t0, dur, nbx, adapt=False) + _, y2, _ = profile(t[~half], g[~half], P, t0, dur, nbx, adapt=False) + ep = np.round((t - t0) / P).astype(int) + _, yo, _ = profile(t[ep % 2 == 1], g[ep % 2 == 1], P, t0, dur, nbx, adapt=False) + _, ye, _ = profile(t[ep % 2 == 0], g[ep % 2 == 0], P, t0, dur, nbx, adapt=False) + + def corr(a, b): + ok = np.isfinite(a) & np.isfinite(b) + return float(np.corrcoef(a[ok], b[ok])[0, 1]) if ok.sum() > min(10, nbx // 2) and np.std(a[ok]) > 0 and np.std(b[ok]) > 0 else float("nan") + # secondary eclipse: deepest binned dip at phase 0.5 + ph2 = np.abs(np.abs(ph) - 0.5) * P < dur / 2 + sec = float(1.0 - np.median(g[ph2])) if ph2.sum() > 10 else float("nan") + return dict(period=P, dur_h=dur * 24, snr=round(snr, 1), + red_chi=round(float(red), 2), asym=round(asym, 3), dips=dips, stable=round(corr(y1, y2), 3), + odd_even=round(corr(yo, ye), 3), secondary=sec, depth=float(best[1]), + ingress_frac=round(float(best[3] / best[2]), 3)) + + +def flash_events(t, f, cadence_d, quiet=4, window=31, sigma=5.0, max_len=3): + """Brightenings of at most max_len cadences above sigma, quiet for quiet cadences each side: [(time, peak, cadences)] and the scatter.""" + from scipy.ndimage import median_filter + t, f = np.asarray(t, float), np.asarray(f, float) + if len(f) < 4 * window: + return [], float("nan") + r = f / median_filter(f, size=window, mode="nearest") - 1.0 + sig = 1.4826 * float(np.median(np.abs(r - np.median(r)))) + out, seen = [], set() + for i in np.nonzero(r > sigma * sig)[0]: + if i in seen: + continue + j = i + while j + 1 < len(r) and r[j + 1] > sigma * sig and t[j + 1] - t[j] < 1.5 * cadence_d: + j += 1 + seen.update(range(i, j + 1)) + if j - i >= max_len or i < quiet + 1 or j > len(r) - quiet - 2: + continue + before, after = r[i - quiet - 1:i - 1], r[j + 2:j + quiet + 2] + if np.all(np.abs(before) < 2 * sig) and np.all(np.abs(after) < 2 * sig) and t[i] - t[i - quiet - 1] < (quiet + 2) * cadence_d and t[j + quiet + 1] - t[j] < (quiet + 2) * cadence_d: + k = i + int(np.argmax(r[i:j + 1])) + out.append((float(t[k]), float(r[k] / sig), int(j - i + 1))) + return out, sig + + +def phase_cluster(times, good_t, period, t0, width_d, rng, ntrial=400): + """Most event times in one phase window at the period and its false-alarm probability against times drawn from good_t.""" + w = width_d / period + + def best(ts): + ph = np.sort(((np.asarray(ts) - t0) / period) % 1.0) + if len(ph) < 2: + return len(ph) + ext = np.concatenate([ph, ph + 1.0]) + j = np.searchsorted(ext, ext[:len(ph)] + w, side="right") + return int(np.max(j - np.arange(len(ph)))) + n0 = best(times) + null = [best(rng.choice(good_t, size=len(times), replace=False)) for _ in range(ntrial)] + return n0, (1 + sum(x >= n0 for x in null)) / (ntrial + 1.0) + + +# -------------------------------------------------------------------------------------------------------------------- +# photometry: forced SPHEREx photometry with the spectral-wavelength map, and binned spectral ratios + +SPHEREX_PIX_SR = (6.15 / 206264.806) ** 2 +SPHEREX_SIGMA_PX = np.sqrt(4.38 / (4.0 * np.pi)) +# defect bits; source and halo bits are kept +SPHEREX_BAD = sum(1 << b for b in (0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 15, 17, 19, 22, 23, 24, 26)) + + +def spherex_point(cutout_bytes, ra, dec, radius_px=3.5): + """Flux density (mJy), error and wavelength (um) of a point source in a SPHEREx cutout: Gaussian PSF plus background on unflagged pixels.""" + from astropy.io import fits + from astropy.wcs import WCS + from astropy.coordinates import SkyCoord + import astropy.units as u + quiet_warnings() + with fits.open(io.BytesIO(cutout_bytes)) as h: + hdr = h["IMAGE"].header + img = h["IMAGE"].data.astype(float) - h["ZODI"].data.astype(float) + var = h["VARIANCE"].data.astype(float) + flg = np.asarray(h["FLAGS"].data).astype(np.int64) + x, y = WCS(hdr).world_to_pixel(SkyCoord(ra * u.deg, dec * u.deg)) + sw = WCS(hdr, fobj=h, key="W") + sw.sip = None + lam = sw.pixel_to_world(x, y)[0].to(u.micrometer).value + return spherex_fit(img, var, flg, float(x), float(y), lam, radius_px) + + +def spherex_point_pixels(px, radius_px=3.5, core=1.5): + """spherex_point on a pixel block; None when a defect flag lies within core pixels of the source.""" + from astropy import log + from astropy.io import fits + from astropy.wcs import WCS + import astropy.units as u + quiet_warnings() + log.setLevel("WARNING") # the wavelength WCS carries SIP keywords without a -SIP type + sw = WCS(px["header"], fobj=fits.HDUList([fits.PrimaryHDU(), px["wave"]]), key="W") + sw.sip = None + lam = sw.pixel_to_world(px["x0"] + px["x"], px["y0"] + px["y"])[0].to(u.micrometer).value + img = px["IMAGE"].astype(float) - px["ZODI"].astype(float) + return spherex_fit(img, px["VARIANCE"].astype(float), px["FLAGS"].astype(np.int64), px["x"], px["y"], lam, + radius_px, core) + + +def spherex_fit(img, var, flg, x, y, lam, radius_px=3.5, core=0.0): + """Gaussian PSF plus background fit within radius_px: wavelength, flux density and error (mJy); None when the fit is unsupported.""" + ny, nx = img.shape + yy, xx = np.mgrid[0:ny, 0:nx] + r2 = (xx - x) ** 2 + (yy - y) ** 2 + m = (r2 < radius_px ** 2) & ((flg & SPHEREX_BAD) == 0) & np.isfinite(img) & np.isfinite(var) & (var > 0) + if m.sum() < 12 or not (2 <= x < nx - 2 and 2 <= y < ny - 2): + return None + if core and np.any(((flg & SPHEREX_BAD) != 0) & (r2 <= core ** 2)): + return None + psf = np.exp(-0.5 * r2 / SPHEREX_SIGMA_PX ** 2) + psf /= psf.sum() + A = np.vstack([psf[m], np.ones(m.sum())]).T + w = 1.0 / var[m] + cov = np.linalg.inv(A.T @ (A * w[:, None])) + coef = cov @ (A.T @ (img[m] * w)) + return dict(wave=float(lam), flux=float(coef[0] * SPHEREX_PIX_SR * 1e9), err=float(np.sqrt(cov[0, 0]) * SPHEREX_PIX_SR * 1e9)) + + +def binned_ratio(target, controls, edges, norm_range=(1.0, 1.6)): + """Target over mean control spectrum in wavelength bins, each normalised over norm_range: centres, ratio, error.""" + def binned(s): + w = np.array([p["wave"] for p in s]) + f = np.array([p["flux"] for p in s]) + cen, val, err = [], [], [] + for lo, hi in zip(edges[:-1], edges[1:]): + k = (w >= lo) & (w < hi) + if k.sum() >= 3: + cen.append(0.5 * (lo + hi)) + val.append(np.median(f[k])) + err.append(1.25 * np.std(f[k]) / np.sqrt(k.sum())) + cen, val, err = np.array(cen), np.array(val), np.array(err) + nm = np.median(val[(cen > norm_range[0]) & (cen < norm_range[1])]) + return cen, val / nm, err / nm + tc, tv, te = binned(target) + cs = [binned(c) for c in controls] + cm = np.mean([np.interp(tc, c[0], c[1]) for c in cs], axis=0) + ce = np.sqrt(np.sum([np.interp(tc, c[0], c[2]) ** 2 for c in cs], axis=0)) / len(cs) + ratio = tv / cm + return tc, ratio, ratio * np.hypot(te / tv, ce / cm) diff --git a/setitools/solar_system.py b/setitools/solar_system.py new file mode 100644 index 0000000000000000000000000000000000000000..450469f1655c11a0cde40929e490c194c8743373 --- /dev/null +++ b/setitools/solar_system.py @@ -0,0 +1,6618 @@ +"""Artificial objects among the small bodies of the Solar System.""" +import argparse +import glob +import json +import math +import os +import re +import sys +import urllib.parse +import zipfile + +import numpy as np + +from setitools import core +from setitools.core import num, quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------- + +nga_DOC = r"""Hollow or thin small bodies: area-to-mass ratios from JPL's radial non-gravitational term, densities below 500 kg/m^3 at the most favourable natural assumptions, transverse or normal terms marking activity. + + python -I seti.py solar_system nga fetch (every SBDB object with a radial term) + python -I seti.py solar_system nga analyse [--rho 500] + python -I seti.py solar_system nga record""" + +nga_ROOT = os.environ.get("NGA_ROOT", core.data("nga")) +nga_HERE = core.RESULTS +nga_API = "https://ssd-api.jpl.nasa.gov/sbdb_query.api" +nga_FIELDS = ("full_name,pdes,kind,class,H,diameter,albedo,A1,A1_sigma,A2,A2_sigma,A3,A3_sigma,DT,e,q,a,i," + "n_obs_used,data_arc,condition_code,first_obs,last_obs") +nga_AU_D2 = 1.495978707e11 / 86400.0 ** 2 # m/s^2 per au/d^2 +nga_S_OVER_C = 1361.0 / 2.99792458e8 # N/m^2 at 1 AU +nga_CR_MAX = 1.5 +nga_ALBEDO_MAX = 0.5 + + +def nga_fetch(): + os.makedirs(nga_ROOT, exist_ok=True) + u = nga_API + "?" + urllib.parse.urlencode({"fields": nga_FIELDS, "sb-cdata": '{"AND":["A1|DF"]}', "full-prec": "true"}) + d = json.loads(core.get(u, timeout=300)) + json.dump(d, open(os.path.join(nga_ROOT, "sbdb_A1.json"), "w")) + print("%d objects with a radial non-gravitational term" % d["count"]) + + +def nga_rows(): + d = json.load(open(os.path.join(nga_ROOT, "sbdb_A1.json"))) + return [dict(zip(d["fields"], r)) for r in d["data"]] + + +def nga_assess(r, rho_limit): + """Area-to-mass ratio, largest natural density it allows and flags, or None.""" + a1, s1 = num(r["A1"]), num(r["A1_sigma"]) + if a1 is None or not s1 or a1 <= 0 or a1 / s1 < 3: + return None + amr = a1 * nga_AU_D2 / (nga_CR_MAX * nga_S_OVER_C) # smallest A/m the acceleration allows + if num(r["diameter"]): + dmin = num(r["diameter"]) * 1000.0 + dsrc = "measured" + elif num(r["H"]) is not None: + dmin = 1329.0e3 / math.sqrt(nga_ALBEDO_MAX) * 10 ** (-num(r["H"]) / 5.0) + dsrc = "H at albedo 0.5" + else: + return None + rho_max = 1.5 / (amr * dmin) + a2, s2 = num(r["A2"]), num(r["A2_sigma"]) + a3, s3 = num(r["A3"]), num(r["A3_sigma"]) + snr2 = abs(a2) / s2 if a2 is not None and s2 else 0.0 + snr3 = abs(a3) / s3 if a3 is not None and s3 else 0.0 + # activity: a 3-sigma normal term, or a 3-sigma transverse term above a tenth of the radial, which neither radiation pressure nor Yarkovsky gives + active = bool(snr3 >= 3 or (snr2 >= 3 and abs(a2) > 0.1 * a1)) + a, e, inc = num(r["a"]), num(r["e"]), num(r["i"]) + t_earth = (1.0 / a + 2.0 * math.cos(math.radians(inc)) * math.sqrt(a * (1 - e * e)) + if a and a > 0 and e is not None and e < 1 and inc is not None else None) + return dict(name=r["full_name"].strip(), pdes=r["pdes"], kind=r["kind"], cls=r["class"], H=num(r["H"]), + d_min_m=dmin, d_src=dsrc, A1=a1, A1_snr=a1 / s1, amr=amr, rho_max=rho_max, + A2=a2, A2_snr=snr2, A3=a3, A3_snr=snr3, active=active, light=rho_max < rho_limit, + t_earth=t_earth, q=num(r["q"]), arc=r["data_arc"], n_obs=r["n_obs_used"]) + + +def nga_analyse(rho_limit): + out = [x for x in (nga_assess(r, rho_limit) for r in nga_rows()) if x] + ast = [x for x in out if x["kind"].startswith("a")] + print("%d objects with a radial term; %d with A1 > 0 at 3 sigma or more (%d asteroids, %d comets)" + % (len(nga_rows()), len(out), len(ast), len(out) - len(ast))) + light = sorted([x for x in ast if x["light"]], key=lambda x: x["rho_max"]) + print("asteroids whose radial acceleration needs a density below %d kg/m^3 at C_R %.1f and albedo %.1f: %d" + % (rho_limit, nga_CR_MAX, nga_ALBEDO_MAX, len(light))) + for x in light: + print(" %-32s %-4s H %5.2f D>=%6.1f m (%s) A1 %.2e (%.1f sigma) A/m>=%.2e m2/kg rho<=%7.1f kg/m3; A2 %.1f " + "sigma, A3 %.1f sigma: %s; Earth Tisserand %s, arc %s d, %s obs" + % (x["name"][:32], x["cls"], x["H"] or 0, x["d_min_m"], x["d_src"], x["A1"], x["A1_snr"], x["amr"], + x["rho_max"], x["A2_snr"], x["A3_snr"], "non-radial terms (activity)" if x["active"] else "radial", + "%.3f" % x["t_earth"] if x["t_earth"] else "-", x["arc"], x["n_obs"])) + json.dump(out, open(os.path.join(nga_HERE, "nga_amr.json"), "w"), indent=1) + return out + + +def nga_record(): + out = json.load(open(os.path.join(nga_HERE, "nga_amr.json"))) + every = nga_rows() + by = {x["pdes"]: x for x in out} + rws = [] + for r in every: + x = by.get(r["pdes"]) + vet = None + if x and x["light"]: + vet = "outgassing" if x["active"] else None + rws.append(dict(target="mpc:" + r["pdes"], stat=x["amr"] if x else None, upper_limit=x["rho_max"] if x else None, + unit="kg/m^3, largest density allowed (C_R 1.5, albedo 0.5)" if x else None, vet=vet, + note=r["full_name"].strip())) + light = [x for x in out if x["light"] and x["kind"].startswith("a")] + core.record_search("nga_amr", "Area-to-mass ratio from non-gravitational acceleration", + archive="JPL Small-Body Database query API", release="current solutions", + selection="every object with a radial non-gravitational term A1", code=os.path.abspath(__file__), entry="nga", + params=dict(cr=nga_CR_MAX, albedo=nga_ALBEDO_MAX, a1_snr=3), n_targets=len(rws), + result="%d asteroids lighter than a rubble pile at the most favourable assumptions, %d of " + "them with transverse or normal terms of activity" % (len(light), sum(x["active"] for x in light)), + ledger="Area-to-mass ratio from non-gravitational acceleration") + core.record_targets("nga_amr", rws) + print("recorded %d objects" % len(rws)) + + +def nga_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "record")) + p.add_argument("--rho", type=float, default=500.0) + a = p.parse_args() + {"fetch": nga_fetch, "analyse": lambda: nga_analyse(a.rho), "record": nga_record}[a.mode]() + + +def nga_cli(): + nga_main() + + +# -------------------------------------------------------------------------------------------------------------- + +surfaces_DOC = r"""Metal and solar-cell surfaces in Gaia DR3 asteroid reflectance spectra: chi-square drop above 25 when a template joins a four-component asteroid model, checked against taxonomy and albedo, with injection recovery. + + python -I seti.py solar_system surfaces + python -I seti.py solar_system surfaces record""" + +surfaces_ROOT = os.environ.get("SSO_ROOT", core.data("gaia_sso")) +surfaces_HERE = core.RESULTS +surfaces_BANDS = np.array([374.0, 418.0, 462.0, 506.0, 550.0, 594.0, 638.0, 682.0, 726.0, 770.0, 814.0, 858.0, 902.0, 946.0, + 990.0, 1034.0]) +surfaces_USE = slice(1, 15) +surfaces_HALF = 22.0 + + +def surfaces_nk(name): + txt = open(os.path.join(surfaces_ROOT, "nk", name)).read() + block = txt.split("data: |", 1)[1] + rows = [] + for line in block.splitlines(): + p = line.split() + if len(p) != 3: + if rows and line.strip() and not re.match(r"^[\d.eE+-]", line.strip()): + break + continue + try: + rows.append([float(x) for x in p]) + except ValueError: + break + a = np.array(rows) + return a[:, 0] * 1000.0, a[:, 1], a[:, 2] + + +def surfaces_band_mean(lam, refl): + out = [] + for c in surfaces_BANDS: + x = np.linspace(c - surfaces_HALF, c + surfaces_HALF, 23) + out.append(float(np.mean(np.interp(x, lam, refl)))) + return np.array(out) + + +def surfaces_metal(name): + lam, n, k = surfaces_nk(name) + r = ((n - 1) ** 2 + k ** 2) / ((n + 1) ** 2 + k ** 2) + return surfaces_band_mean(lam, r) + + +def surfaces_solar_cell(d_nm=75.0, n_ar=2.0): + """Normal-incidence reflectance of silicon under a non-absorbing antireflection layer.""" + lam, n, k = surfaces_nk("Si_Green.yml") + ns = n + 1j * k + r01 = (1 - n_ar) / (1 + n_ar) + r12 = (n_ar - ns) / (n_ar + ns) + delta = 2 * math.pi * n_ar * d_nm / lam + r = (r01 + r12 * np.exp(2j * delta)) / (1 + r01 * r12 * np.exp(2j * delta)) + return surfaces_band_mean(lam, np.abs(r) ** 2) + + +def surfaces_load(): + spec = json.load(open(os.path.join(surfaces_ROOT, "reflectance.json"))) + keep = {} + for k, d in spec.items(): + r, e, f = np.array(d["r"], float), np.array(d["e"], float), np.array(d["f"], int) + if len(r) != 16: + continue + ok = (f == 0) & np.isfinite(r) & np.isfinite(e) & (e > 0) + ok[0] = ok[15] = False + if ok[surfaces_USE].sum() < 12 or not ok[2:8].all(): + continue + keep[k] = dict(name=d["name"], nsp=d["nsp"], r=r, e=e, ok=ok) + return keep + + +def surfaces_wfit(A, y, w): + """Weighted least squares: coefficients and chi-square.""" + Aw = A * w[:, None] + c, *_ = np.linalg.lstsq(Aw, y * w, rcond=None) + res = (y - A @ c) * w + return c, float(res @ res) + + +surfaces_DCHI = 25.0 + + +def surfaces_nested(y, e, ok, mu, pcs, t): + """Asteroid-model chi-square, its drop with a non-negative template added, and the template's 550 nm share.""" + w = 1.0 / np.sqrt(e ** 2 + (0.01 * y) ** 2) + A0 = np.c_[mu[ok], pcs.T[ok]] + _, chi0 = surfaces_wfit(A0, y, w) + tt = (t / t[4])[surfaces_USE][ok] + c, chi1 = surfaces_wfit(np.c_[A0, tt], y, w) + if c[-1] <= 0: + return chi0, 0.0, 0.0 + j = int(np.argmin(np.abs(surfaces_BANDS[surfaces_USE][ok] - 550))) + return chi0, chi0 - chi1, float(c[-1] * tt[j] / max(y[j], 1e-6)) + + +def surfaces_edge_ok(r, e, name): + """True when the template's absorption edge spans the bands either side, not a one-band notch.""" + if name == "gold": + return bool(r[2] < r[3] < r[4] < r[5] and r[1] <= r[2] + 2 * math.hypot(e[1], e[2])) + if name == "copper": + return bool(r[4] < r[5] < r[6] and r[3] <= r[4] + 2 * math.hypot(e[3], e[4])) + return True + + +def surfaces_inject(R, E, OK, mu, pcs, T, n=3000): + """Recovery of each surface covering a fraction f of the 550 nm light in real spectra.""" + rng = np.random.default_rng(3) + idx = rng.choice(len(R), n, replace=False) + for name in T: + t = T[name] / T[name][4] + line = [] + for f in (0.05, 0.1, 0.2, 0.3, 0.5): + hit = 0 + for i in idx: + ok = OK[i][surfaces_USE] + rr = (1 - f) * R[i] + f * t + _, d, _ = surfaces_nested(rr[surfaces_USE][ok], E[i][surfaces_USE][ok], ok, mu, pcs, T[name]) + hit += d > surfaces_DCHI and surfaces_edge_ok(rr, E[i], name) + line.append("%.0f%% %.2f" % (100 * f, hit / float(n))) + print(" %s recovered at a fraction of the 550 nm light of %s" % (name, ", ".join(line)), flush=True) + + +def surfaces_taxonomy(n): + """SsODNet taxonomy and albedo of a numbered asteroid.""" + b = core.get("https://ssp.imcce.fr/webservices/ssodnet/api/ssocard/%d" % n, timeout=60, retries=2, soft=True) + try: + ph = json.loads(b)["parameters"]["physical"] + c = ph.get("taxonomy", {}).get("class") + return (c.get("value") if isinstance(c, dict) else c), ph.get("albedo", {}).get("value") + except Exception: + return None, None + + +def surfaces_main(): + S = surfaces_load() + keys = list(S) + print("%d of 60518 spectra with 12 or more good bands between 418 and 990 nm" % len(keys), flush=True) + R = np.array([S[k]["r"] for k in keys]) + E = np.array([S[k]["e"] for k in keys]) + OK = np.array([S[k]["ok"] for k in keys]) + snr = np.array([np.median(R[i, OK[i]] / E[i, OK[i]]) for i in range(len(keys))]) + best = np.argsort(-snr)[:5000] + sub = R[best][:, surfaces_USE] + sub = sub[np.all(OK[best][:, surfaces_USE], axis=1)] + mu = sub.mean(0) + u, s, vt = np.linalg.svd(sub - mu, full_matrices=False) + pcs = vt[:4] + print("asteroid model: mean and 4 components from %d spectra explain %.4f of the variance" + % (len(sub), (s[:4] ** 2).sum() / (s ** 2).sum()), flush=True) + T = {"gold": surfaces_metal("Au_Johnson.yml"), "copper": surfaces_metal("Cu_Johnson.yml"), "silver": surfaces_metal("Ag_Johnson.yml"), + "aluminium": surfaces_metal("Al_Rakic.yml"), "solar cell": surfaces_solar_cell()} + for name, t in T.items(): + print(" %-10s normalised at 550 nm: %s" % (name, " ".join("%.2f" % x for x in (t / t[4])[surfaces_USE]))) + surfaces_inject(R, E, OK, mu, pcs, T) + out = [] + for i, k in enumerate(keys): + ok = OK[i][surfaces_USE] + y, e = R[i][surfaces_USE][ok], E[i][surfaces_USE][ok] + row = dict(mpc=int(k), name=S[k]["name"], nsp=S[k]["nsp"], snr=float(snr[i]), nb=int(ok.sum())) + for name, t in T.items(): + chi0, d, fr = surfaces_nested(y, e, ok, mu, pcs, t) + row["chi_ast"] = chi0 / max(ok.sum() - 5, 1) + row["d_" + name], row["frac_" + name] = d, fr + row["edge_" + name] = surfaces_edge_ok(R[i], E[i], name) + out.append(row) + json.dump(out, open(os.path.join(surfaces_HERE, "sso_metals.json"), "w")) + ca = np.array([r["chi_ast"] for r in out]) + print("asteroid model reduced chi-square: median %.2f, 99th percentile %.2f, 99.9th %.2f" + % (np.median(ca), np.percentile(ca, 99), np.percentile(ca, 99.9))) + for name in T: + d = np.array([r["d_" + name] for r in out]) + hits = [r for r in out if r["d_" + name] > surfaces_DCHI and r["frac_" + name] > 0.05] + kept = [r for r in hits if r["edge_" + name]] + print("%s: chi-square drop above %.0f in %d spectra (99.9th percentile of the drop %.1f), %d with the edge's " + "shape" % (name, surfaces_DCHI, len(hits), np.percentile(d, 99.9), len(kept)), flush=True) + for r in sorted(kept, key=lambda r: -r["d_" + name])[:10]: + tx, al = surfaces_taxonomy(r["mpc"]) + r["taxonomy"], r["albedo"] = tx, al + print(" (%d) %s: %d epoch spectra, S/N %.0f; drop %.1f, %.0f per cent of the 550 nm light; asteroid " + "model %.1f; SsODNet taxonomy %s, albedo %s" % (r["mpc"], r["name"], r["nsp"], r["snr"], + r["d_" + name], 100 * r["frac_" + name], + r["chi_ast"], tx, al), flush=True) + json.dump(out, open(os.path.join(surfaces_HERE, "sso_metals.json"), "w")) + + +def surfaces_record(): + """Record one row per object: model fit and solar-cell and gold drops.""" + out = json.load(open(os.path.join(surfaces_HERE, "sso_metals.json"))) + core.record_search( + "gaia_sso_surfaces", "Artificial surfaces among the asteroids, Gaia DR3 reflectance spectra", + archive="CDS I/359/ssor (gaiadr3.sso_reflectance_spectrum); refractiveindex.info optical constants; SsODNet", + release="Gaia DR3", selection="%d of 60518 Solar System objects with 12 or more good bands between 418 and " + "990 nm" % len(out), + code="seti.py solar_system surfaces", params=dict(bands="418-990 nm, flag 0", model="mean and 4 principal components", + dchi=surfaces_DCHI, templates=["gold", "copper", "silver", "aluminium", + "silicon solar cell with 75 nm nitride"]), + n_targets=len(out), + null_summary="no solar-cell surface; chi-square drops above %.0f for metal templates only on V, A and S types " + "that the four-component model fits badly" % surfaces_DCHI, + sensitivity="solar cell recovered in 41, 88 and 100 per cent of 3000 injections at 5, 10 and 20 per cent of " + "the 550 nm light; gold 19 and copper 9 per cent at 50; silver and aluminium never", + result="no artificial surface", ledger="Artificial surfaces among the asteroids") + core.clear_targets("gaia_sso_surfaces") + core.record_targets("gaia_sso_surfaces", [ + dict(target="mpc:%d" % r["mpc"], stat=float(r["chi_ast"]), unit="reduced chi-square of the asteroid model", + note="solar cell drop %.1f, gold drop %.1f" % (r["d_solar cell"], r["d_gold"])) for r in out]) + + +def surfaces_cli(): + quiet_warnings() + if sys.argv[1:] == ["record"]: + surfaces_record() + else: + surfaces_main() + + +# -------------------------------------------------------------------------------------------------------------- + +radar_albedo_DOC = r"""Metallic radar reflectors: asteroids with OC radar albedo above 0.3 in the PDS radar compilation, listed with SC/OC and taxonomy. + + python -I seti.py solar_system radar_albedo""" + +radar_albedo_ROOT = os.environ.get("RADAR_ROOT", core.data("radar")) +radar_albedo_URL = "https://sbnarchive.psi.edu/pds4/non_mission/compil.ast.radar-properties.zip" +radar_albedo_SBDB = "https://ssd-api.jpl.nasa.gov/sbdb.api?sstr=%s&phys-par=1" + + +def radar_albedo_val(s): + try: + v = float(s.strip()) + return None if v >= 9.98 else v + except ValueError: + return None + + +def radar_albedo_main(): + path = os.path.join(radar_albedo_ROOT, "radar_pds4.zip") + if not os.path.exists(path): + os.makedirs(radar_albedo_ROOT, exist_ok=True) + open(path, "wb").write(core.get(radar_albedo_URL, timeout=120, retries=3)) + t = zipfile.ZipFile(path).read("compil.ast.radar-properties/data/radar.tab").decode().splitlines() + # fixed columns: number 1-6, name 8-24, designation 26-35, SC/OC 59-62, albedo 69-73 + rows = [dict(num=ln[0:6].strip(), name=ln[7:24].strip(), prov=ln[25:35].strip(), sigma=radar_albedo_val(ln[40:48]), + muc=radar_albedo_val(ln[58:62]), alb=radar_albedo_val(ln[68:73]), albe=radar_albedo_val(ln[74:79]), mhz=ln[82:86].strip(), year=ln[87:91].strip()) + for ln in t if ln.strip()] + objs = {} + for r in rows: + k = r["num"] if r["num"] not in ("0", "-", "") else r["prov"] + objs.setdefault(k, []).append(r) + print("%d radar measurements of %d objects; %d with a radar albedo" % (len(rows), len(objs), + sum(1 for r in rows if r["alb"] is not None))) + high = [] + for k, rs in objs.items(): + a = [r for r in rs if r["alb"] is not None] + if a and max(r["alb"] for r in a) > 0.3: + best = max(a, key=lambda r: r["alb"]) + b = core.get(radar_albedo_SBDB % k.replace(" ", "%20"), timeout=60, retries=2, soft=True) + cls = {} + if b: + for p in json.loads(b).get("phys_par", []): + if p["name"] in ("spec_T", "spec_B"): + cls[p["name"]] = p["value"] + high.append(dict(obj=k, name=best["name"] or best["prov"], alb=best["alb"], albe=best["albe"], muc=best["muc"], + tholen=cls.get("spec_T"), smass=cls.get("spec_B"))) + print("radar albedo above 0.3:") + for h in sorted(high, key=lambda h: -h["alb"]): + print(" %-8s %-12s albedo %.2f +- %s, SC/OC %s, Tholen %s, SMASS %s" + % (h["obj"], h["name"], h["alb"], h["albe"], h["muc"], h["tholen"], h["smass"])) + spec = [h for h in high if h["alb"] > 0.8 and (h["muc"] is not None and h["muc"] < 0.1)] + print("specular metallic reflectors (albedo above 0.8, SC/OC below 0.1): %d" % len(spec)) + json.dump(dict(objects=len(objs), high=high), open(os.path.join(os.path.dirname(os.path.abspath(__file__)), + "radar_albedo.json"), "w"), indent=1) + out = [] + for k, rs in objs.items(): + a = [r["alb"] for r in rs if r["alb"] is not None] + h = next((x for x in high if x["obj"] == k), None) + out.append(dict(target="mpc:" + k, stat=max(a) if a else None, unit="OC radar albedo", + vet=("metal-rich or enstatite class (Tholen %s, SMASS %s)" % (h["tholen"], h["smass"])) if h else None, + note="%d detections" % len(rs))) + core.record_search("asteroid_radar_albedo", "Asteroid radar", archive="PDS SBN compil.ast.radar-properties V1.0", + release="2020-03-02", selection="every published asteroid radar detection", + code=os.path.abspath(__file__), entry="radar_albedo", n_targets=len(out), + result="the nine albedos above 0.3 are M or X class bodies, the radar-metallic 1986 DA, E-type " + "Nereus and 1998 WT24, and Sq-type Bacchus at 0.33 +- 0.25; no specular reflector", + ledger="Asteroid radar") + core.record_targets("asteroid_radar_albedo", out) + print("recorded %d objects" % len(out)) + + +def radar_albedo_cli(): + radar_albedo_main() + + +# -------------------------------------------------------------------------------------------------------------- + +hot_DOC = r"""Internally heated asteroids: NEOWISE NEATM beaming parameter with eta plus 2 sigma below 0.6 at two or more free-eta epochs. + + python -I seti.py solar_system hot [record] [--eta-floor 0.6] [--sigma 2]""" + + +def hot_rows(): + p = core.data("neowisesbpropv2.json") + if os.path.exists(p): + return json.load(open(p)) + import csv + import io + u = "https://irsa.ipac.caltech.edu/TAP/sync?" + urllib.parse.urlencode(dict(QUERY="SELECT * FROM neowisesbpropv2", FORMAT="csv")) + rows = list(csv.DictReader(io.StringIO(core.get(u, timeout=900).decode()))) + json.dump(rows, open(p, "w")) + return rows + + +def hot_main(record=False, eta_floor=0.6, sigma=2.0): + rows = hot_rows() + def f(x): + try: + return float(x) + except (TypeError, ValueError): + return float("nan") + fitted = [r for r in rows if "B" in (r["fit_code"] or "")] + eta = np.array([f(r["beaming_param"]) for r in fitted]) + err = np.array([f(r["beaming_param_err"]) for r in fitted]) + low = [(r, e, s) for r, e, s in zip(fitted, eta, err) if np.isfinite(e) and np.isfinite(s) and e + sigma * s < eta_floor] + by = {} + for r in fitted: + by.setdefault(r["asteroid_number"] or r["prov_desig"] or r["comet_desig"] or r["mpc_packed_name"], []).append(r) + persistent = [k for k, lst in by.items() if len(lst) >= 2 and all( + np.isfinite(f(r["beaming_param"])) and np.isfinite(f(r["beaming_param_err"])) + and f(r["beaming_param"]) + sigma * f(r["beaming_param_err"]) < eta_floor for r in lst)] + p1, p5, p50 = np.nanpercentile(eta, [1, 5, 50]) + print("%d fits, %d with eta free (%d objects); eta 1st, 5th and 50th percentiles %.2f, %.2f, %.2f; %d fits with eta + %g " + "sigma below %g; %d objects below it at every fitted epoch" % (len(rows), len(fitted), len(by), p1, p5, p50, len(low), sigma, eta_floor, + len(persistent))) + for r, e, s in sorted(low, key=lambda x: x[1]): + print(" %-10s %s %s: eta %.2f +- %.2f, D %.2f km, %s, W3/W4 points %s/%s, %d fitted epochs" + % (r["asteroid_number"] or r["prov_desig"], r["type"], r["mean_jd"], e, s, f(r["diameter"]), r["fit_code"], + r["n_w3"], r["n_w4"], len(by[r["asteroid_number"] or r["prov_desig"] or r["comet_desig"] or r["mpc_packed_name"]]))) + if not record: + return + core.record_search( + "neowise_hot_bodies", "Bodies hotter than sunlight allows", archive="IRSA neowisesbpropv2 (NEOWISE diameters and albedos v2)", + selection="every NEOWISE thermal fit with the beaming parameter free", code=os.path.abspath(__file__), entry="hot", + n_targets=len(by), params=dict(eta_floor=eta_floor, sigma=sigma), + null_summary="the population's own beaming distribution: 1st percentile %.2f" % p1, + sensitivity="internal power raising the dayside beyond the eta = %g limit of a rough sunlit surface" % eta_floor, + ledger="Bodies hotter than sunlight allows", + result="%d of %d fits fall below eta %g at %g sigma, each at a single epoch, the lowest pinned at the fit's floor of 0.3; " + "%d objects stay below at every fitted epoch" % (len(low), len(fitted), eta_floor, sigma, len(persistent))) + out, seen = [], set() + for r, e, s in low: + k = r["asteroid_number"] or r["prov_desig"] or r["comet_desig"] or r["mpc_packed_name"] + if k in seen: + continue + seen.add(k) + others = [f(x["beaming_param"]) for x in by[k] if x is not r] + out.append(dict(target="mpc:%s" % k, stat=e, unit="lowest fitted beaming parameter", + vet=("pinned at the fit's floor" if s == 0 else + "other epochs at eta %s" % ", ".join("%.2f" % v for v in others) if others else "one fitted epoch"), + note="%s, D %.2f km, epoch JD %s" % (r["type"], f(r["diameter"]), r["mean_jd"]))) + core.clear_targets("neowise_hot_bodies") + core.record_targets("neowise_hot_bodies", out) + print("recorded") + + +orbits_DOC = r"""Near-Earth objects without a delivery route (Granvik et al. 2018): retrograde at low eccentricity, near-circular inside 0.75 AU above 25 deg, or above 60 deg below e 0.25. + + python -I seti.py solar_system orbits [record] [--e-low 0.3]""" + + +def orbits_query(cdata): + u = "https://ssd-api.jpl.nasa.gov/sbdb_query.api?" + urllib.parse.urlencode( + {"fields": "full_name,a,e,i,q,n_obs_used,data_arc,condition_code,H,kind", "sb-group": "neo", "sb-cdata": json.dumps(cdata)}) + return json.loads(core.get(u, timeout=300)) + + +def orbits_main(record=False, e_low=0.3): + cells = (("retrograde", {"AND": ["i|GT|90"]}), ("inside Venus, near-circular, above 25 deg", {"AND": ["a|LT|0.75", "e|LT|0.25", "i|GT|25"]}), + ("above 60 deg, e below 0.25", {"AND": ["i|GT|60", "e|LT|0.25"]})) + found = {} + for name, cd in cells: + r = orbits_query(cd) + found[name] = r.get("data", []) + es = [float(x[2]) for x in found[name]] + print("%s: %d objects, eccentricity %s" % (name, len(found[name]), ("%.2f-%.2f" % (min(es), max(es))) if es else "-")) + for x in found[name]: + print(" %s a %s e %s i %s arc %s d cond %s" % (x[0].strip(), x[1], x[2], x[3], x[6], x[7])) + retro_low = [x for x in found["retrograde"] if float(x[2]) < e_low] + print("retrograde with e below %g: %d" % (e_low, len(retro_low))) + if not record: + return + core.record_search( + "neo_unreachable_orbits", "NEOs on unreachable orbits", archive="JPL Small-Body Database", + selection="near-Earth objects in the zero-density cells of the delivery model", code=os.path.abspath(__file__), entry="orbits", + n_targets=sum(len(v) for v in found.values()), params=dict(e_low=e_low), null_summary="the Granvik et al. (2018) source model's zero-density cells", + ledger="NEOs on unreachable orbits", + result="%d retrograde NEOs, the lowest eccentricity %.2f (Halley-type comets and comet-like asteroids); %d retrograde below e %g; " + "%d near-circular inside 0.75 AU above 25 deg, within the Atira population; %d above 60 deg with e below 0.25, " + "reachable through Kozai cycles" % (len(found["retrograde"]), min([float(x[2]) for x in found["retrograde"]] or [float("nan")]), len(retro_low), e_low, + len(found["inside Venus, near-circular, above 25 deg"]), len(found["above 60 deg, e below 0.25"]))) + core.clear_targets("neo_unreachable_orbits") + core.record_targets("neo_unreachable_orbits", [dict(target="sbdb:%s" % x[0].strip(), stat=float(x[2]), unit="eccentricity", + note="%s; a %s, i %s, arc %s d" % (name, x[1], x[3], x[6])) + for name, v in found.items() for x in v]) + print("recorded") + + +yarkovsky_DOC = r"""Yarkovsky drifts of the wrong sign for every DAMIT pole, or beyond the efficiency sunlight allows at rho 500 kg/m^3. + + python -I seti.py solar_system yarkovsky fetch (SBDB objects with a transverse term; DAMIT's asteroid and model tables) + python -I seti.py solar_system yarkovsky analyse + python -I seti.py solar_system yarkovsky record""" + +yarkovsky_ROOT = os.environ.get("YARKOVSKY_ROOT", core.data("yarkovsky")) +yarkovsky_FIELDS = ("full_name,pdes,kind,class,H,diameter,albedo,rot_per,A1,A1_sigma,A2,A2_sigma,A3,A3_sigma,DT,e,q,a,i,om,w," + "n_obs_used,data_arc,condition_code") +yarkovsky_DAMIT = "https://astro.troja.mff.cuni.cz/projects/damit/exports/table/" +yarkovsky_RHO = 500.0 +yarkovsky_COS = 0.3 +# Seligman et al. (2024) dark comets, active asteroid 362P and comet 1998 SH2 (Farnocchia et al. 2026) +yarkovsky_KNOWN = {"2003 RM": "dark comet", "2001 ME1": "dark comet", "2005 UY6": "dark comet", "1998 FR11": "dark comet", + "2012 UR158": "dark comet", "1998 KY26": "dark comet", "2005 VL1": "dark comet", "2016 NJ33": "dark comet", + "2010 VL65": "dark comet", "2010 RF12": "dark comet", "2006 RH120": "dark comet", "2016 GW221": "dark comet", + "2013 XY20": "dark comet", "2013 BA74": "dark comet", "2008 GO98": "active comet 362P", + "1998 SH2": "active comet, a weak tail imaged in 2025 (Farnocchia et al. 2026)"} +# readings of the darkcomet refits, by primary designation +yarkovsky_REFIT = {"883607": "dark-comet candidate: refitted in darkcomet_2016_ta56", + "875163": "active comet, a weak tail imaged in 2025 (Farnocchia et al. 2026), refitted in darkcomet_1998_sh2", + "428209": "no drift needed: the gravity-only orbit fits all four apparitions as well (darkcomet_2006_vc)"} + + +def yarkovsky_fetch(): + os.makedirs(yarkovsky_ROOT, exist_ok=True) + u = nga_API + "?" + urllib.parse.urlencode({"fields": yarkovsky_FIELDS, "sb-kind": "a", "sb-cdata": '{"AND":["A2|DF"]}', + "full-prec": "true"}) + d = json.loads(core.get(u, timeout=300)) + json.dump(d, open(os.path.join(yarkovsky_ROOT, "sbdb_A2.json"), "w")) + print("%d asteroids with a transverse non-gravitational term" % d["count"]) + for t in ("asteroids", "asteroid_models"): + b = core.get(yarkovsky_DAMIT + t, timeout=600) + open(os.path.join(yarkovsky_ROOT, "damit_%s.csv" % t), "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + print("DAMIT %s: %d bytes" % (t, len(b))) + + +def yarkovsky_poles(): + """DAMIT poles (lambda, beta deg; period h) keyed by number and designation.""" + import csv + ids = {} + for r in csv.DictReader(open(os.path.join(yarkovsky_ROOT, "damit_asteroids.csv"), encoding="utf-8-sig")): + keys = [k for k in (r["number"], (r["designation"] or "").strip()) if k] + ids[r["id"]] = keys + poles = {} + for r in csv.DictReader(open(os.path.join(yarkovsky_ROOT, "damit_asteroid_models.csv"), encoding="utf-8-sig")): + lam, bet = num(r["lambda"]), num(r["beta"]) + if lam is None or bet is None: + continue + for k in ids.get(r["asteroid_id"], []): + poles.setdefault(k, []).append(dict(model=r["id"], lam=lam, beta=bet, period=num(r["period"]))) + return poles + + +def yarkovsky_cos_obliquity(lam, beta, inc, node): + lam, beta, inc, node = map(math.radians, (lam, beta, inc, node)) + n = (math.sin(inc) * math.sin(node), -math.sin(inc) * math.cos(node), math.cos(inc)) + s = (math.cos(beta) * math.cos(lam), math.cos(beta) * math.sin(lam), math.sin(beta)) + return sum(x * y for x, y in zip(n, s)) + + +def yarkovsky_analyse(): + d = json.load(open(os.path.join(yarkovsky_ROOT, "sbdb_A2.json"))) + rows = [dict(zip(d["fields"], r)) for r in d["data"]] + poles = yarkovsky_poles() + out = [] + for r in rows: + a2, s2 = num(r["A2"]), num(r["A2_sigma"]) + if a2 is None or not s2: + continue + if num(r["diameter"]): + dmin, dsrc = num(r["diameter"]) * 1000.0, "measured" + elif num(r["H"]) is not None: + dmin, dsrc = 1329.0e3 / math.sqrt(nga_ALBEDO_MAX) * 10 ** (-num(r["H"]) / 5.0), "H at albedo 0.5" + else: + dmin, dsrc = None, None + amax = nga_S_OVER_C * 1.5 / (dmin * yarkovsky_RHO) if dmin else None + xi = abs(a2) * nga_AU_D2 / amax if amax else None + # typical NEA: 2000 kg/m^3, albedo 0.14 unless D is measured + dtyp = (num(r["diameter"]) * 1000.0 if num(r["diameter"]) else + 1329.0e3 / math.sqrt(0.14) * 10 ** (-num(r["H"]) / 5.0) if num(r["H"]) is not None else None) + xi_typ = abs(a2) * nga_AU_D2 / (nga_S_OVER_C * 1.5 / (dtyp * 2000.0)) if dtyp else None + a, e, inc = num(r["a"]), num(r["e"]), num(r["i"]) + tj = (5.2026 / a + 2 * math.cos(math.radians(inc)) * math.sqrt(a / 5.2026 * (1 - e * e)) + if a and a > 0 and e is not None and e < 1 and inc is not None else None) + known = next((v for k, v in yarkovsky_KNOWN.items() if "(%s)" % k in r["full_name"] or r["pdes"] == k), None) + ps = poles.get(r["pdes"], []) + cos = [yarkovsky_cos_obliquity(p["lam"], p["beta"], num(r["i"]), num(r["om"])) for p in ps] + snr = a2 / s2 + verdict = None + if cos and abs(snr) >= 3: + if snr > 0 and max(cos) < -yarkovsky_COS: + verdict = "outward on a retrograde spin" + elif snr < 0 and min(cos) > yarkovsky_COS: + verdict = "inward on a prograde spin" + elif snr > 0 and min(cos) > 0 or snr < 0 and max(cos) < 0: + verdict = "agrees" + elif snr < 0 and all(abs(c) <= yarkovsky_COS for c in cos): + verdict = "agrees (seasonal)" + else: + verdict = "pole solutions disagree" + a1, s1 = num(r["A1"]), num(r["A1_sigma"]) + a3, s3 = num(r["A3"]), num(r["A3_sigma"]) + out.append(dict(name=r["full_name"].strip(), pdes=r["pdes"], cls=r["class"], H=num(r["H"]), d_min_m=dmin, d_src=dsrc, + A2=a2, A2_snr=snr, xi=xi, xi_typ=xi_typ, t_j=tj, q=num(r["q"]), known=known, cos_obl=cos, + periods=[p["period"] for p in ps], rot_per=num(r["rot_per"]), + A1_snr=a1 / s1 if a1 is not None and s1 else None, A3_snr=a3 / s3 if a3 is not None and s3 else None, + verdict=verdict, arc=r["data_arc"], n_obs=r["n_obs_used"], cond=r["condition_code"])) + sig = [x for x in out if abs(x["A2_snr"]) >= 3] + tested = [x for x in sig if x["verdict"]] + print("%d asteroids with A2; %d at 3 sigma or more; %d of these with DAMIT poles" % (len(out), len(sig), len(tested))) + for v in ("agrees", "agrees (seasonal)", "pole solutions disagree", "inward on a prograde spin", "outward on a retrograde spin"): + xs = [x for x in tested if x["verdict"] == v] + print(" %s: %d" % (v, len(xs))) + if v not in ("agrees", "agrees (seasonal)"): + for x in xs: + print(" %-30s %-4s A2 %+.2e (%+.1f sigma) cos obliquity %s; P %s h; xi %.3f; arc %s d" + % (x["name"][:30], x["cls"], x["A2"], x["A2_snr"], ", ".join("%+.2f" % c for c in x["cos_obl"]), + ", ".join("%.2f" % p for p in x["periods"] if p), x["xi"] or 0, x["arc"])) + big = sorted([x for x in sig if x["xi"] and x["xi"] > 1], key=lambda x: -x["xi"]) + print("transverse drifts beyond all absorbed sunlight (xi > 1 at rho %d, %s): %d" % (yarkovsky_RHO, "albedo 0.5 or measured D", + len(big))) + for x in big: + print(" %-30s %-4s H %5.2f D>=%7.1f m (%s) A2 %+.2e (%+.1f sigma) xi %.2f; A1 %s sigma, A3 %s sigma; T_J %s, q %.2f; " + "arc %s d, %s obs; %s" + % (x["name"][:30], x["cls"], x["H"] or 0, x["d_min_m"], x["d_src"], x["A2"], x["A2_snr"], x["xi"], + "%.1f" % x["A1_snr"] if x["A1_snr"] is not None else "-", "%.1f" % x["A3_snr"] if x["A3_snr"] is not None else "-", + "%.2f" % x["t_j"] if x["t_j"] else "-", x["q"], x["arc"], x["n_obs"], x["known"] or "unpublished")) + typ = sorted([x for x in sig if x["xi_typ"] and x["xi_typ"] > 1], key=lambda x: -x["xi_typ"]) + print("beyond all absorbed sunlight at 2000 kg/m^3 and albedo 0.14 unless D is measured: %d, %d of them published" + % (len(typ), sum(1 for x in typ if x["known"]))) + for x in typ: + print(" %-30s %-4s xi %8.2f A2 %+.2e (%+.1f sigma) T_J %s q %.2f arc %s d; %s" + % (x["name"][:30], x["cls"], x["xi_typ"], x["A2"], x["A2_snr"], "%.2f" % x["t_j"] if x["t_j"] else "-", x["q"], + x["arc"], x["known"] or "unpublished")) + json.dump(out, open(os.path.join(core.RESULTS, "yarkovsky_sign.json"), "w"), indent=1) + return out + + +def yarkovsky_record(): + out = json.load(open(os.path.join(core.RESULTS, "yarkovsky_sign.json"))) + for x in out: + # published status from the current list, not the analysis's + x["known"] = next((v for k, v in yarkovsky_KNOWN.items() if "(%s)" % k in x["name"] or x["pdes"] == k), None) + sig = [x for x in out if abs(x["A2_snr"]) >= 3] + tested = [x for x in sig if x["verdict"]] + count = {v: sum(1 for x in tested if x["verdict"] == v) for v in + ("agrees", "agrees (seasonal)", "pole solutions disagree", "inward on a prograde spin", "outward on a retrograde spin")} + big = [x for x in sig if x["xi"] and x["xi"] > 1] + typ = [x for x in sig if x["xi_typ"] and x["xi_typ"] > 1] + + def vet(x): + if x["pdes"] in yarkovsky_REFIT: + return yarkovsky_REFIT[x["pdes"]] + if x["known"]: + return "published %s" % x["known"] if x["known"] == "dark comet" else x["known"] + if abs(x["A2_snr"]) >= 3 and x["xi_typ"] and x["xi_typ"] > 1: + if x["t_j"] and x["t_j"] < 3.05: + return "unpublished dark-comet candidate: Jupiter-family orbit (T_J %.2f, q %.2f)" % (x["t_j"], x["q"]) + return "open: transverse drift beyond sunlight on an asteroidal orbit (T_J %.2f), A2 at %.1f sigma" % (x["t_j"], x["A2_snr"]) + return x["verdict"] + + def names(xs): + return ", ".join(re.sub(r"^\d+ ", "", x["name"]).strip("()") for x in xs) + core.record_search( + "yarkovsky_sign", "Yarkovsky sign test", archive="JPL Small-Body Database query API; DAMIT", + release="current solutions; DAMIT table export", selection="every asteroid with a transverse non-gravitational term A2", + code=os.path.abspath(__file__), entry="yarkovsky", n_targets=len(out), + params=dict(a2_snr=3, cos_obliquity=yarkovsky_COS, rho=yarkovsky_RHO, albedo=nga_ALBEDO_MAX), + null_summary="the thermal model's signs: outward needs a prograde spin, inward a retrograde or near-90 deg one", + sensitivity="A2 at 3 sigma against every DAMIT pole solution; xi against all absorbed sunlight at rho 500, albedo 0.5", + ledger="Yarkovsky sign test", + result="%d drifts at 3 sigma with DAMIT poles: %d agree, %d seasonal, %d with pole solutions that disagree, %d inward on " + "a prograde spin, %d outward on a retrograde spin; beyond all absorbed sunlight at 500 kg/m^3 and albedo 0.5: %d " + "(published dark comets or active: %s; unpublished: %s); at 2000 kg/m^3 and albedo 0.14: %d, unpublished %s" + % (len(tested), count["agrees"], count["agrees (seasonal)"], count["pole solutions disagree"], + count["inward on a prograde spin"], count["outward on a retrograde spin"], len(big), + names([x for x in big if x["known"]]), names([x for x in big if not x["known"]]) or "none", len(typ), + names([x for x in typ if not x["known"]]) or "none")) + core.clear_targets("yarkovsky_sign") + core.record_targets("yarkovsky_sign", [dict( + target="mpc:" + x["pdes"], stat=x["xi_typ"], unit="transverse drift / all absorbed sunlight (2000 kg/m^3, albedo 0.14)", + upper_limit=None, vet=vet(x), + note="%s; A2 %+.2e at %+.1f sigma; xi %s at 500 kg/m^3, albedo 0.5; cos obliquity %s" + % (x["name"], x["A2"], x["A2_snr"], "%.3f" % x["xi"] if x["xi"] else "-", + ", ".join("%+.2f" % c for c in x["cos_obl"]) or "no pole")) + for x in out]) + print("recorded %d asteroids" % len(out)) + + +def yarkovsky_cli(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "record")) + a = p.parse_args() + {"fetch": yarkovsky_fetch, "analyse": yarkovsky_analyse, "record": yarkovsky_record}[a.mode]() + + +meteors_DOC = r"""Coherent hyperbolic meteor streams in GMN orbits: sporadics sharing an incoming asymptote within 1 deg and 3 km/s, against error-process and speed-shuffled nulls. + + python -I seti.py solar_system meteors fetch + python -I seti.py solar_system meteors analyse + python -I seti.py solar_system meteors record + python -I seti.py solar_system meteors locus (the group's predicted radiants by date against the GMN table) + python -I seti.py solar_system meteors locus_record""" + +meteors_ROOT = os.environ.get("METEORS_ROOT", core.data("gmn")) +meteors_URL = "https://globalmeteornetwork.org/data/traj_summary_data/traj_summary_yearly_%d.txt" +meteors_YEARS = range(2018, 2027) +meteors_ISM = (259.0, 8.0, 26.0) + + +def meteors_fetch(): + os.makedirs(meteors_ROOT, exist_ok=True) + for y in meteors_YEARS: + p = os.path.join(meteors_ROOT, "traj_summary_yearly_%d.txt" % y) + b = core.get(meteors_URL % y, timeout=900) + open(p, "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + print("%d: %d MB" % (y, len(b) // 1000000), flush=True) + + +def meteors_load(): + """Sporadic meteors hyperbolic at 3 sigma with radiant, speed, v_inf and asymptote.""" + rows = [] + n_all = n_spor = 0 + for y in meteors_YEARS: + p = os.path.join(meteors_ROOT, "traj_summary_yearly_%d.txt" % y) + if not os.path.exists(p): + continue + for line in open(p, encoding="utf-8", errors="replace"): + if line.startswith("#") or ";" not in line: + continue + c = [x.strip() for x in line.split(";")] + if len(c) < 85: + continue + n_all += 1 + if c[3] != "-1": + continue + n_spor += 1 + e, se, a, qc = num(c[25]), num(c[26]), num(c[23]), num(c[80]) + if e is None or se is None or a is None or qc is None or e <= 1 or a >= 0 or (e - 1) < 3 * se or qc < 15: + continue + q, inc, w, node = num(c[37]), num(c[27]), num(c[29]), num(c[31]) + f = -math.acos(-1.0 / e) + u = math.radians(w) + f + om, i = math.radians(node), math.radians(inc) + x = math.cos(om) * math.cos(u) - math.sin(om) * math.sin(u) * math.cos(i) + yy = math.sin(om) * math.cos(u) + math.cos(om) * math.sin(u) * math.cos(i) + z = math.sin(u) * math.sin(i) + rows.append(dict(id=c[0], year=int(c[2][:4]), sol=num(c[5]), ra=num(c[7]), dec=num(c[9]), vg=num(c[15]), + e=e, se=se, q=q, vinf=29.7847 / math.sqrt(-a), x=x, y=yy, z=z, qc=qc, nst=num(c[84]))) + return rows, n_all, n_spor + + +def meteors_showers(): + """IAU MDC showers, established first: code, solar longitude, radiant, daily motion, Vg.""" + out = [] + for name, status in (("streamestablisheddata2026.txt", "established"), ("streamworkingdata2026.txt", "working")): + p = os.path.join(meteors_ROOT, name) + if not os.path.exists(p): + b = core.get("https://www.ta3.sk/IAUC22DB/MDC2022/Etc/" + name, timeout=300) + open(p, "wb").write(b if isinstance(b, bytes) else b.encode("latin-1")) + for line in open(p, encoding="latin-1"): + if not line.startswith('"'): + continue + c = [x.strip().strip('"').strip() for x in line.split("|")] + if len(c) < 16: + continue + los, ra, de, vg = num(c[10]), num(c[11]), num(c[12]), num(c[15]) + if None in (los, ra, de, vg): + continue + out.append(dict(code=c[3], status=status, los=los, ra=ra, de=de, dra=num(c[13]) or 0.0, dde=num(c[14]) or 0.0, vg=vg)) + return out + + +def meteors_match(r, showers): + """Shower within 8 deg of the drift-corrected radiant, 15 deg of solar longitude and 20 per cent in Vg, established first; or None.""" + best = None + for s in showers: + dl = (r["sol"] - s["los"] + 180) % 360 - 180 + if abs(dl) > 15 or abs(r["vg"] - s["vg"]) > 0.2 * s["vg"]: + continue + ra, de = math.radians(s["ra"] + s["dra"] * dl), math.radians(s["de"] + s["dde"] * dl) + ra1, de1 = math.radians(r["ra"]), math.radians(r["dec"]) + d = math.degrees(math.acos(max(-1.0, min(1.0, math.sin(de) * math.sin(de1) + math.cos(de) * math.cos(de1) * math.cos(ra - ra1))))) + if d < 8 and (best is None or (s["status"], d) < (best[0]["status"], best[1])): + best = (s, d) + return "%s (%s)" % (best[0]["code"], best[0]["status"]) if best else None + + +def meteors_pvalues(xyz, v): + from scipy.spatial import cKDTree + from scipy.stats import poisson + t = cKDTree(xyz) + c1 = 2 * math.sin(math.radians(0.5)) + ratio = (1 - math.cos(math.radians(1.0))) / (1 - math.cos(math.radians(10.0))) + n1 = np.zeros(len(v), int) + n10 = np.zeros(len(v), int) + for k, js in enumerate(t.query_ball_point(xyz, 2 * math.sin(math.radians(5.0)))): + js = np.array(js) + js = js[(js != k) & (np.abs(v[js] - v[k]) < 3.0)] + n10[k] = len(js) + if len(js): + n1[k] = int(np.sum(np.linalg.norm(xyz[js] - xyz[k], axis=1) < c1)) + lam = np.maximum(n10 * ratio, 1e-3) + return n1, n10, poisson.sf(n1 - 1, lam) + + +def meteors_groups(xyz, v, sel): + from scipy.spatial import cKDTree + idx = np.where(sel)[0] + if not len(idx): + return [] + t = cKDTree(xyz[idx]) + parent = list(range(len(idx))) + + def find(a): + while parent[a] != a: + parent[a] = parent[parent[a]] + a = parent[a] + return a + for a, b in t.query_pairs(2 * math.sin(math.radians(0.5))): + if abs(v[idx[a]] - v[idx[b]]) < 3.0: + parent[find(a)] = find(b) + groups = {} + for k in range(len(idx)): + groups.setdefault(find(k), []).append(int(idx[k])) + return sorted(groups.values(), key=len, reverse=True) + + +def meteors_search(rows, label, seed=1): + xyz = np.array([[r["x"], r["y"], r["z"]] for r in rows]) + v = np.array([r["vinf"] for r in rows]) + n1, n10, p = meteors_pvalues(xyz, v) + rng = np.random.default_rng(seed) + nulls = [int(np.sum(meteors_pvalues(xyz, rng.permutation(v))[2] < 1e-4)) for k in range(5)] + print("%s: %d meteors; with a 1 deg, 3 km/s neighbourhood below p 1e-4: %d; speeds shuffled: %s" + % (label, len(rows), int(np.sum(p < 1e-4)), nulls), flush=True) + ism = np.array([math.cos(math.radians(meteors_ISM[1])) * math.cos(math.radians(meteors_ISM[0])), + math.cos(math.radians(meteors_ISM[1])) * math.sin(math.radians(meteors_ISM[0])), math.sin(math.radians(meteors_ISM[1]))]) + out = [] + for g in meteors_groups(xyz, v, p < 1e-4): + m = xyz[g].mean(axis=0) + m /= np.linalg.norm(m) + lam, bet = math.degrees(math.atan2(m[1], m[0])) % 360, math.degrees(math.asin(m[2])) + sh = [rows[k]["shower"] for k in g] + top = max(set(sh), key=sh.count) + out.append(dict(n=len(g), lam=lam, beta=bet, vinf=float(np.mean(v[g])), vinf_sd=float(np.std(v[g])), + years=sorted({rows[k]["year"] for k in g}), p_min=float(np.min(p[g])), + ism_sep=math.degrees(math.acos(max(-1.0, min(1.0, float(m @ ism))))), + shower=top if top and sh.count(top) * 2 > len(g) else None, showers=sh, + sol=[rows[k]["sol"] for k in g], radiant=[(rows[k]["ra"], rows[k]["dec"], rows[k]["vg"]) for k in g], + ids=[rows[k]["id"] for k in g], e=[rows[k]["e"] for k in g])) + print(" %d groups; with three or more members from two or more years: %d" + % (len(out), sum(1 for o in out if o["n"] >= 3 and len(o["years"]) >= 2))) + for o in out[:30]: + print(" n %3d asymptote %6.1f %+5.1f v_inf %5.1f+-%4.1f km/s p_min %.1e years %s; %.0f deg from the ISM inflow; " + "shower %s; sol %s; geo %s" + % (o["n"], o["lam"], o["beta"], o["vinf"], o["vinf_sd"], o["p_min"], ",".join(str(y) for y in o["years"]), + o["ism_sep"], o["shower"] or "none (%s)" % ", ".join(sorted({s or "-" for s in o["showers"]})), + ",".join("%.0f" % s for s in o["sol"][:6]), " ".join("(%.0f %+.0f %.0f)" % r for r in o["radiant"][:3]))) + return dict(n=len(rows), n_sig=int(np.sum(p < 1e-4)), nulls=nulls, groups=out) + + +meteors_MU = 0.01720209895 ** 2 +meteors_KMS = 1.495978707e8 / 86400.0 + + +def meteors_earth(jd): + """Earth's heliocentric ecliptic position (au), low-precision solar theory.""" + T = (jd - 2451545.0) / 36525 + L = math.radians((280.46646 + 36000.76983 * T) % 360) + M = math.radians((357.52911 + 35999.05029 * T) % 360) + C = math.radians((1.914602 - 0.004817 * T) * math.sin(M) + 0.019993 * math.sin(2 * M)) + R = 1.000001018 * (1 - 0.016708634 ** 2) / (1 + 0.016708634 * math.cos(M + C)) + return np.array([math.cos(L + C + math.pi), math.sin(L + C + math.pi), 0.0]) * R + + +def meteors_asymptote(r, v): + """Eccentricity and incoming asymptote unit vector of a heliocentric state (au, au/d); (e, None) if bound.""" + h = np.cross(r, v) + ev = np.cross(v, h) / meteors_MU - r / np.linalg.norm(r) + E = float(np.linalg.norm(ev)) + if E <= 1: + return E, None + P = ev / E + Q = np.cross(h / np.linalg.norm(h), P) + fi = math.acos(-1 / E) + return E, math.cos(fi) * P - math.sin(fi) * Q + + +def meteors_null(rows_hyp, k_scale, seed, emin=0.7, bias=None): + """Error-process null: elliptic sporadics with speeds perturbed by k_scale sigma, or scaled by a shared bias, kept when hyperbolic at 3 sigma.""" + rng = np.random.default_rng(seed) + out = [] + for y in meteors_YEARS: + p = os.path.join(meteors_ROOT, "traj_summary_yearly_%d.txt" % y) + if not os.path.exists(p): + continue + for line in open(p, encoding="utf-8", errors="replace"): + if line.startswith("#") or ";" not in line: + continue + c = line.split(";") + if len(c) < 85 or c[3].strip() != "-1": + continue + e, se, qc = num(c[25]), num(c[26]), num(c[80]) + if e is None or se is None or qc is None or not (emin <= e < 1) or qc < 15: + continue + vh, svh, lamh, beth = num(c[21]), num(c[22]), num(c[17]), num(c[19]) + if None in (vh, svh, lamh, beth): + continue + dv = rng.normal(0.0, k_scale * svh) if bias is None else vh * rng.normal(*bias) + if vh + dv < 42.0: + continue + lr, br = math.radians(lamh), math.radians(beth) + u = np.array([math.cos(br) * math.cos(lr), math.cos(br) * math.sin(lr), math.sin(br)]) + E, x = meteors_asymptote(meteors_earth(float(c[1])), -(vh + dv) / meteors_KMS * u) + if x is None or E - 1 < 3 * se: + continue + vinf = math.sqrt(max(0.0, (vh + dv) ** 2 - 42.1219 ** 2)) + out.append(dict(id=c[0].strip(), year=y, sol=num(c[5]), ra=num(c[7]), dec=num(c[9]), vg=num(c[15]), e=E, se=se, + q=num(c[37]), vinf=vinf, x=x[0], y=x[1], z=x[2], qc=qc, nst=num(c[84]), shower=None)) + return out + + +def meteors_analyse(): + rows, n_all, n_spor = meteors_load() + print("%d trajectories, %d sporadic, %d hyperbolic at 3 sigma with a convergence angle above 15 deg" + % (n_all, n_spor, len(rows)), flush=True) + showers = meteors_showers() + by = {} + for s in showers: + by.setdefault(int(s["los"]) % 360, []).append(s) + for r in rows: + r["shower"] = meteors_match(r, [s for d in range(-16, 17) for s in by.get((int(r["sol"]) + d) % 360, [])]) + print("%d of them within a shower's radiant, date and speed" % sum(1 for r in rows if r["shower"]), flush=True) + every = meteors_search(rows, "every hyperbolic sporadic") + rest = meteors_search([r for r in rows if not r["shower"]], "outside the showers") + # error-process null: speed scale matching the observed hyperbolic count, three realisations + sims = [] + for k in (1.0, 1.5, 2.0, 3.0): + n = len(meteors_null(rows, k, 0)) + print("speed errors at %.1f sigma: %d elliptic sporadics become hyperbolic at 3 sigma" % (k, n), flush=True) + sims.append((abs(n - len(rows)), k)) + k = min(sims)[1] + nulls = [] + for seed in (1, 2, 3): + sim = meteors_null(rows, k, seed) + res = meteors_search(sim, "error-process realisation %d (speed errors at %.1f sigma)" % (seed, k)) + nulls.append(dict(n=res["n"], n_sig=res["n_sig"], largest=max([o["n"] for o in res["groups"]] or [0]), + multi=sum(1 for o in res["groups"] if o["n"] >= 3 and len(o["years"]) >= 2), + groups=[dict(n=o["n"], lam=o["lam"], beta=o["beta"], vinf=o["vinf"], years=o["years"]) + for o in res["groups"][:10]])) + # shared-bias null: mean speed overestimate matching the observed hyperbolic count + bsims = [] + for b in (0.015, 0.02, 0.025, 0.03): + n = len(meteors_null(rows, 0, 0, bias=(b, 0.01))) + print("speeds overestimated by %.1f +- 1.0 per cent: %d elliptic sporadics become hyperbolic at 3 sigma" % (100 * b, n), + flush=True) + bsims.append((abs(n - len(rows)), b)) + b = min(bsims)[1] + bias_nulls = [] + for seed in (1, 2, 3): + sim = meteors_null(rows, 0, seed, bias=(b, 0.01)) + res = meteors_search(sim, "shared overestimate realisation %d (%.1f +- 1.0 per cent)" % (seed, 100 * b)) + bias_nulls.append(dict(n=res["n"], n_sig=res["n_sig"], largest=max([o["n"] for o in res["groups"]] or [0]), + multi=sum(1 for o in res["groups"] if o["n"] >= 3 and len(o["years"]) >= 2), + groups=[dict(n=o["n"], lam=o["lam"], beta=o["beta"], vinf=o["vinf"], years=o["years"]) + for o in res["groups"][:10]])) + json.dump(dict(n_all=n_all, n_spor=n_spor, n_hyp=len(rows), n_shower=sum(1 for r in rows if r["shower"]), every=every, + rest=rest, k_scale=k, error_nulls=nulls, bias=b, bias_nulls=bias_nulls), + open(os.path.join(core.RESULTS, "meteor_streams.json"), "w"), indent=1) + + +def meteors_record(): + d = json.load(open(os.path.join(core.RESULTS, "meteor_streams.json"))) + ev, rest = d["every"], d["rest"] + multi = [o for o in rest["groups"] if o["n"] >= 3 and len(o["years"]) >= 2] + bn = d.get("bias_nulls", []) + shared = ("; a speed overestimate of %.1f +- 1.0 per cent shared by every elliptic sporadic gives %s meteors below " + "p 1e-4 among %s, largest groups %s, and %s multi-year groups" + % (100 * d["bias"], "/".join(str(x["n_sig"]) for x in bn), "/".join(str(x["n"]) for x in bn), + "/".join(str(x["largest"]) for x in bn), "/".join(str(x["multi"]) for x in bn))) if bn else "" + largest_null = max([x["largest"] for x in bn] or [0]) + sp = core.results("sonotaco_streams.json") + if os.path.exists(sp): + so = json.load(open(sp)) + shared += ("; in SonotaCo SNMv3 (%d orbits, %d hyperbolic sporadics) the largest group's asymptote holds %d within 1 deg " + "and 3 km/s against %.2f from the local density, and the search finds %d groups" + % (so["n_all"], so["n_hyp"], so["at_gmn"]["n1"], so["at_gmn"]["exp1"], len(so["search"]["groups"]))) + gp = core.results("meteor_grid_null.json") + if os.path.exists(gp): + g = json.load(open(gp)) + shared += ("; thinned to the observed %d at biases of 1.0-2.0 per cent, 15 realisations give %d-%d meteors below " + "p 1e-4 and largest groups of %d-%d" % (g[0]["n"], min(x["n_sig"] for x in g), max(x["n_sig"] for x in g), + min(x["largest"] for x in g), max(x["largest"] for x in g))) + core.record_search( + "gmn_hyperbolic_streams", "Coherent hyperbolic meteor streams", archive="Global Meteor Network trajectory summaries", + release="yearly files 2018-2026", selection="%d sporadic meteors hyperbolic at 3 sigma with a convergence angle above " + "15 deg, of %d trajectories" % (d["n_hyp"], d["n_all"]), + code=os.path.abspath(__file__), entry="meteors", n_targets=d["n_hyp"], + params=dict(e_sigma=3, qc_deg=15, radius_deg=1, dv_kms=3, background_deg=10, p=1e-4, shower_deg=8, shower_sol=15, + shower_vg=0.2), + null_summary="meteors below p 1e-4: %d against %s with speeds shuffled; outside the IAU showers %d against %s; " + "independent speed errors at %.1f sigma give %s%s" + % (ev["n_sig"], ev["nulls"], rest["n_sig"], rest["nulls"], d.get("k_scale", 0), + "/".join(str(x["n_sig"]) for x in d.get("error_nulls", [])), shared), + sensitivity="three meteors on one asymptote within 1 deg and 3 km/s above the local density of hyperbolic errors", + ledger="Coherent dust streams", + result="%d groups among all hyperbolic sporadics, %d of them carried by IAU shower members with overestimated speeds " + "(%s), the largest (%d members, %d years) on one asymptote at ecliptic %.1f %+.1f and v_inf %.0f km/s, matched by " + "one unthinned shared-overestimate realisation and beyond the 15 thinned ones; outside the showers %d group%s, %d " + "with three or more members from two or more years" + % (len(ev["groups"]), sum(1 for o in ev["groups"] if o["shower"]), + ", ".join(sorted({o["shower"].split()[0] for o in ev["groups"] if o["shower"]})), ev["groups"][0]["n"], + len(ev["groups"][0]["years"]), ev["groups"][0]["lam"], ev["groups"][0]["beta"], ev["groups"][0]["vinf"], + len(rest["groups"]), "" if len(rest["groups"]) == 1 else "s", len(multi))) + core.clear_targets("gmn_hyperbolic_streams") + core.record_targets("gmn_hyperbolic_streams", [dict( + target="sky:ecl %.1f %+.1f v_inf %.0f" % (o["lam"], o["beta"], o["vinf"]), stat=float(o["n"]), p=o["p_min"], + unit="members within 1 deg and 3 km/s", + vet=("%s shower members with overestimated speeds" % o["shower"].split()[0] if o["shower"] else + "interstellar inflow" if o["ism_sep"] < 15 else + "shared speed overestimate: the null makes groups of up to %d" % largest_null if o["n"] <= largest_null else None), + note="years %s; %.0f deg from the interstellar inflow" % (",".join(str(y) for y in o["years"]), o["ism_sep"])) + for o in ev["groups"] + [o for o in rest["groups"] if not o["shower"]]]) + print("recorded") + + +meteors_ASYM = (134.5, -1.6, 12.0) # group asymptote: ecliptic lon, lat (deg), v_inf (km/s) +meteors_LOCUS_TOL = (3.0, 3.0) # locus tolerance: radiant deg, geocentric km/s +meteors_LOCUS_CONTROLS = tuple(30.0 * k for k in range(1, 12)) + + +def meteors_earth_vel(jd): + return (meteors_earth(jd + 0.01) - meteors_earth(jd - 0.01)) / 0.02 + + +def meteors_arrivals(jd, lon, lat, vinf_kms): + """Heliocentric velocities (au/d) at Earth for the given asymptote and v_inf: the trajectories passing either side of the Sun.""" + from scipy.optimize import minimize + r = meteors_earth(jd) + u = np.array([math.cos(math.radians(lat)) * math.cos(math.radians(lon)), math.cos(math.radians(lat)) * math.sin(math.radians(lon)), + math.sin(math.radians(lat))]) + vmag = math.sqrt((vinf_kms / meteors_KMS) ** 2 + 2 * meteors_MU / float(np.linalg.norm(r))) + + def vec(p): + return vmag * np.array([math.cos(p[1]) * math.cos(p[0]), math.cos(p[1]) * math.sin(p[0]), math.sin(p[1])]) + + def miss(p): + _, a = meteors_asymptote(r, vec(p)) + return 10.0 if a is None else float(np.degrees(np.arccos(np.clip(np.dot(a, u), -1, 1)))) + grid = sorted((miss((th, ph)), th, ph) for th in np.radians(np.arange(0, 360, 4.0)) for ph in np.radians(np.arange(-88, 89, 4.0))) + sols = [] + for _, th, ph in grid[:16]: + res = minimize(miss, [th, ph], method="Nelder-Mead", options=dict(xatol=1e-7, fatol=1e-5, maxiter=400)) + if res.fun < 0.1: + v = vec(res.x) + if not any(np.linalg.norm(v - s) * meteors_KMS < 0.5 for s in sols): + sols.append(v) + return r, sols + + +def meteors_locus_table(lon, lat, vinf, sols=(60.0, 240.0, 0.5)): + """Geocentric radiants (ecliptic, deg) and speeds (km/s) of the stream's arrivals per solar longitude.""" + jd0 = 2460500.5 # 2024 July 9 + out = {} + for ls in np.arange(*sols): + # date of solar longitude ls + jd = jd0 + (ls - 107.0) * 365.25 / 360.0 + for _ in range(3): + re = meteors_earth(jd) + lsun = math.degrees(math.atan2(-re[1], -re[0])) % 360 + jd += ((ls - lsun + 180) % 360 - 180) * 365.25 / 360.0 + r, vs = meteors_arrivals(jd, lon, lat, vinf) + ve = meteors_earth_vel(jd) + pts = [] + for v in vs: + g = (v - ve) * meteors_KMS + d = -g / np.linalg.norm(g) + pts.append((math.degrees(math.atan2(d[1], d[0])) % 360, math.degrees(math.asin(d[2])), float(np.linalg.norm(g)))) + out[round(float(ls), 1)] = pts + return out + + +def meteors_locus(): + """Focal-line test: the group's predicted radiants and speeds by date against the GMN table.""" + tol_a, tol_v = meteors_LOCUS_TOL + lon0, lat0, vinf = meteors_ASYM + loci = {0.0: meteors_locus_table(lon0, lat0, vinf)} + for dl in meteors_LOCUS_CONTROLS: + loci[dl] = meteors_locus_table((lon0 + dl) % 360, lat0, vinf) + print("loci computed for the stream and %d control asymptotes" % len(meteors_LOCUS_CONTROLS), flush=True) + for ls in (165.0, 190.0, 130.0, 134.0, 134.5, 135.0, 136.0, 138.0): + print(" sol lon %.1f: %s" % (ls, ", ".join("(%.0f, %+.0f, %.1f km/s)" % p for p in loci[0.0].get(ls, [])))) + tally = {dl: {} for dl in loci} + n_read = 0 + for y in range(2022, 2027): + p = os.path.join(meteors_ROOT, "traj_summary_yearly_%d.txt" % y) + if not os.path.exists(p): + continue + for line in open(p, encoding="utf-8", errors="replace"): + if line.startswith("#") or ";" not in line: + continue + c = line.split(";") + if len(c) < 85: + continue + ls, lam, bet, vg = num(c[5]), num(c[11]), num(c[13]), num(c[15]) + if None in (ls, lam, bet, vg) or not 60.0 <= ls < 240.0: + continue + n_read += 1 + key = round(math.floor(ls * 2) / 2, 1) + code = c[4].strip() + cb = math.cos(math.radians(bet)) + for dl, table in loci.items(): + for plam, pbet, pv in table.get(key, []): + sep = math.degrees(math.acos(max(-1.0, min(1.0, math.sin(math.radians(bet)) * math.sin(math.radians(pbet)) + + cb * math.cos(math.radians(pbet)) * math.cos(math.radians(lam - plam)))))) + if sep <= tol_a and abs(vg - pv) <= tol_v: + t = tally[dl].setdefault("rows", []) + t.append(dict(year=y, sol=ls, lam=lam, bet=bet, vg=vg, code=code, hyper=(num(c[25]) or 0) > 1, id=c[0].strip())) + break + print("%d meteors read between solar longitudes 60 and 240" % n_read) + + def summ(rows, lo, hi): + w = [r for r in rows if lo <= r["sol"] < hi] + return dict(n=len(w), south=sum(1 for r in w if r["bet"] < 0), north=sum(1 for r in w if r["bet"] >= 0), + per=sum(1 for r in w if r["code"] == "PER"), hyper=sum(1 for r in w if r["hyper"]), + far=sum(1 for r in w if abs(r["bet"]) > 10)) + windows = (("Aug 3-11", 130.3, 138.5), ("Jun-Jul", 60.0, 128.0), ("Aug 12-Oct", 139.0, 200.0)) + out = {} + for dl in loci: + rows = tally[dl].get("rows", []) + out[str(dl)] = {name: summ(rows, lo, hi) for name, lo, hi in windows} + out[str(dl)]["rows"] = rows if dl == 0.0 else len(rows) + for name, lo, hi in windows: + s = out["0.0"][name] + ctl = [out[str(dl)][name] for dl in meteors_LOCUS_CONTROLS] + print("%s: stream loci hold %d meteors (%d south, %d north, %d beyond 10 deg from the ecliptic, %d Perseid-tagged, %d hyperbolic); " + "controls %s (mean %.1f, south %.1f)" + % (name, s["n"], s["south"], s["north"], s["far"], s["per"], s["hyper"], sorted(c["n"] for c in ctl), + np.mean([c["n"] for c in ctl]), np.mean([c["south"] for c in ctl]))) + for r in sorted(out["0.0"]["rows"], key=lambda r: r["sol"]): + if 130.3 <= r["sol"] < 138.5: + print(" %d sol %.2f: radiant (%.1f, %+.1f) %.1f km/s %s%s %s" % (r["year"], r["sol"], r["lam"], r["bet"], r["vg"], r["code"] or "sporadic", + " hyperbolic" if r["hyper"] else "", r["id"])) + json.dump(out, open(os.path.join(core.RESULTS, "gmn_focal_line.json"), "w"), indent=1) + return out + + +def meteors_locus_record(): + out = json.load(open(os.path.join(core.RESULTS, "gmn_focal_line.json"))) + s = out["0.0"]["Aug 3-11"] + ctl = [out[str(dl)]["Aug 3-11"] for dl in meteors_LOCUS_CONTROLS] + season = out["0.0"]["Jun-Jul"]["n"] + s["n"] + out["0.0"]["Aug 12-Oct"]["n"] + cseason = [out[str(dl)]["Jun-Jul"]["n"] + out[str(dl)]["Aug 3-11"]["n"] + out[str(dl)]["Aug 12-Oct"]["n"] for dl in meteors_LOCUS_CONTROLS] + core.record_search( + "gmn_focal_line", "Coherent hyperbolic meteor streams", archive="Global Meteor Network trajectory summaries", + release="2022-2026", selection="every GMN meteor between solar longitudes 60 and 240 against the arrival loci of the group's asymptote", + code=os.path.abspath(__file__), entry="meteors locus", n_targets=1, + params=dict(asymptote=list(meteors_ASYM), tolerance=list(meteors_LOCUS_TOL), controls=list(meteors_LOCUS_CONTROLS)), + null_summary="the same loci for asymptotes 30 to 330 deg away in longitude: Aug 3-11 %s, whole season %s" + % (sorted(c["n"] for c in ctl), sorted(cseason)), + sensitivity="a stream of 16 members over four years would place about 40 per cent of them on the Aug 3-11 loci, half of them south of the ecliptic", + ledger="Coherent hyperbolic meteor streams", + result="Aug 3-11 loci: %d meteors (%d south, %d north, %d beyond 10 deg from the ecliptic, %d Perseid-tagged, %d hyperbolic) against a " + "control mean of %.1f (%.1f south); whole season %d against a control mean of %.1f" + % (s["n"], s["south"], s["north"], s["far"], s["per"], s["hyper"], np.mean([c["n"] for c in ctl]), np.mean([c["south"] for c in ctl]), + season, np.mean(cseason))) + core.clear_targets("gmn_focal_line") + core.record_targets("gmn_focal_line", [dict(target="gmn:asymptote 134.5 -1.6 12 km/s", stat=s["n"], unit="meteors on the Aug 3-11 loci", + note="controls %s" % sorted(c["n"] for c in ctl))]) + print("recorded") + + +def meteors_cli(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "analyse", "record", "locus", "locus_record")) + a = p.parse_args() + {"fetch": meteors_fetch, "analyse": meteors_analyse, "record": meteors_record, "locus": meteors_locus, + "locus_record": meteors_locus_record}[a.mode]() + + +spin_DOC = r"""Centrifugal habitats: LCDB asteroids needing 100 kPa tensile strength at kilometre size, or spinning under 10 minutes, at 2000 kg/m^3. + + python -I seti.py solar_system spin [record] [--rho 2000] [--d-min-km 0.3] [--kpa-min 1] [--km-d 1] [--kpa 100] [--minutes 10]""" + + +def spin_main(record=False, rho=2000.0, d_min_km=0.3, kpa_min=1.0, km_d=1.0, kpa=100.0, minutes=10.0): + import math as _m + p = core.data("lcdb", "F-D_BASIC.TXT") + lines = open(p, encoding="latin-1").read().splitlines() + hi = [i for i, ln in enumerate(lines) if ln.startswith("Number")][0] + hdr = lines[hi] + fam, nm, cl = hdr.index("Fam"), hdr.index("Name"), hdr.index("Class") + G = 6.674e-11 + wc2 = 4 * _m.pi * G * rho / 3 + out = [] + for ln in lines[hi + 2:]: + if not ln.strip(): + continue + tok = ln[fam:].split() + try: + H, _, D, P, _ = [float(x.strip("<>")) for x in tok[1:6]] + except (ValueError, IndexError): + continue + U, amps = None, [] + for x in tok[6:]: + if re.fullmatch(r"[0-3][+-]?", x): + U = x + break + v = num(x) + if v is not None: + amps.append(v) + w = 2 * _m.pi / (P * 3600) + R = D * 500 + out.append(dict(num=ln[:nm].strip(), name=ln[nm:cl].strip(), cls=ln[cl:fam].strip(), H=H, D=D, P=P, U=U, + amp=max(amps) if amps else None, kpa=rho * R * R / 2 * max(0.0, w * w - wc2) / 1000)) + need = sorted([o for o in out if o["D"] >= d_min_km and o["kpa"] > kpa_min], key=lambda o: -o["kpa"]) + km_fast = [o for o in out if o["D"] >= km_d and o["P"] * 60 < minutes] + km_strong = [o for o in out if o["D"] >= km_d and o["kpa"] >= kpa] + print("%d asteroids with periods and diameters; spin limit %.2f h at %g kg/m^3; %d of %g km or more need over %g kPa; bodies of %g km " + "or more under %g minutes %d, needing %g kPa %d" % (len(out), 2 * _m.pi / _m.sqrt(wc2) / 3600, rho, len(need), d_min_km, kpa_min, km_d, + minutes, len(km_fast), kpa, len(km_strong))) + for o in need: + print(" %-8s %-14s H %5.2f D %6.3f km P %7.2f min U %-3s amplitude %-5s needs %6.1f kPa" + % (o["num"], o["name"], o["H"], o["D"], o["P"] * 60, o["U"], o["amp"], o["kpa"])) + json.dump(out, open(core.results("spin_strength.json"), "w")) + if record: + core.record_search( + "lcdb_spin_strength", "Centrifugal habitats", archive="Asteroid Lightcurve Database (LCDB) frequency-diameter table", + selection="%d asteroids with periods and diameters" % len(out), code=os.path.abspath(__file__), entry="spin", + n_targets=len(out), params=dict(rho=rho, d_km=[d_min_km, km_d], kpa_min=kpa_min, kpa=kpa, minutes=minutes), + null_summary="the spin barrier of the catalogue itself: %d bodies of %g km or more need over %g kPa" % (len(need), d_min_km, kpa_min), + sensitivity="a body of %g km spinning in %g minutes or needing %g kPa, at the LCDB's period quality" % (km_d, minutes, kpa), + ledger="Centrifugal habitats", + result="%d bodies of %g km or more under %g minutes and %d needing %g kPa; the most demanding are %s" + % (len(km_fast), km_d, minutes, len(km_strong), kpa, + "; ".join("%s (%.2f km from %s, %.2f min, U %s) at %.0f kPa" % (o["name"], o["D"], "H", o["P"] * 60, o["U"], o["kpa"]) for o in need[:2]))) + core.clear_targets("lcdb_spin_strength") + core.record_targets("lcdb_spin_strength", [dict( + target="mpc:%s" % (o["num"] or o["name"]), stat=o["kpa"], unit="kPa needed at %g kg/m^3" % rho, + note="%s, D %.3f km, P %.3f h, U %s" % (o["name"], o["D"], o["P"], o["U"])) for o in need]) + print("recorded") + + +phase_DOC = r"""Self-luminous asteroids: ATLAS H, G1, G2 phase curves at the flattest slope allowed (0.0179 mag/deg over 5-30 deg), judged by fit residual and albedo. + + python -I seti.py solar_system phase [record] [--ph-min-deg 7] [--ph-max-deg 25] [--n-min 100] [--slope-deg 5 30] [--edge-g1 0.05] [--edge-g2 0.9] [--bright 0.6] [--albedo 0.8]""" + + +def phase_main(record=False, ph_min_deg=7.0, ph_max_deg=25.0, n_min=100, slope_deg=(5.0, 30.0), edge_g1=0.05, edge_g2=0.9, bright=0.6, albedo=0.8): + from astropy.table import Table + from sbpy.photometry import HG1G2 + p = core.data("atlas_phase", "atlas_phase.fits") + if not os.path.exists(p): + from astroquery.vizier import Vizier + os.makedirs(os.path.dirname(p), exist_ok=True) + Vizier(row_limit=-1, timeout=1800, columns=["Number", "Name", "Band", "Class", "N", "phmin", "phmax", "H", "G1", "G2", "rms", + "B_G1", "b_G1", "B_G2", "b_G2", "G12", "albedo", "e_albedo"] + ).get_catalogs("VII/288/phase")[0].write(p, overwrite=True) + t = Table.read(p) + + def a(c): + return np.array(np.ma.filled(t[c].astype(float), np.nan)) + G1, G2, BG1, bG2 = a("G1"), a("G2"), a("B_G1"), a("b_G2") + N, phmin, phmax, alb, rms = a("N"), a("phmin"), a("phmax"), a("albedo"), a("rms") + idx = np.nonzero(np.isfinite(G1) & np.isfinite(G2) & (phmin < ph_min_deg) & (phmax > ph_max_deg) & (N >= n_min))[0] + al = np.radians(list(slope_deg)) + s = np.array([float(np.diff(HG1G2(H=0, G1=G1[i], G2=G2[i])(al))[0] / (slope_deg[1] - slope_deg[0])) for i in idx]) + edge = (BG1[idx] < edge_g1) & (bG2[idx] > edge_g2) + e_alb = alb[idx][edge] + hi = alb[idx] > bright + glow = [int(i) for i, e in zip(idx, edge) if e and np.isfinite(alb[i]) and alb[i] > albedo] + print("%d curves kept of %d; slope %g-%g deg median %.4f mag/deg, flattest %.4f; %d pinned at the flat edge (residual median " + "%.2f mag), %d of them with a literature albedo (%.2f-%.2f), %d above %g; curves with albedo above %g have median slope %.4f" + % (len(idx), len(t), slope_deg[0], slope_deg[1], np.median(s), s.min(), edge.sum(), np.median(rms[idx][edge]), np.isfinite(e_alb).sum(), + np.nanmin(e_alb) if np.isfinite(e_alb).any() else np.nan, np.nanmax(e_alb) if np.isfinite(e_alb).any() else np.nan, + len(glow), albedo, bright, np.median(s[hi]))) + if record: + core.record_search( + "atlas_self_luminous", "Self-luminous asteroids", archive="ATLAS phase curves (Mahlke et al. 2021, VizieR VII/288)", + selection="%d curves with phases below %g and above %g deg and %d or more points" % (len(idx), ph_min_deg, ph_max_deg, n_min), + code=os.path.abspath(__file__), entry="phase", n_targets=len(idx), + params=dict(phases_deg=list(slope_deg), ph_min_deg=ph_min_deg, ph_max_deg=ph_max_deg, n_min=n_min, edge_g1=edge_g1, edge_g2=edge_g2, bright=bright, albedo=albedo), + null_summary="the population's slopes: median %.4f mag/deg; curves with albedo above %g, median %.4f" + % (np.median(s), bright, np.median(s[hi])), + sensitivity="a curve at the model's flattest slope (%.4f mag/deg) with a literature albedo above %g" % (s.min(), albedo), + ledger="Self-luminous asteroids", + result="%d curves pinned at the flattest slope the H, G1, G2 model allows, with median residuals of %.2f mag, the mark of " + "rotation swamping the phase signal; %d carry albedos (%.2f-%.2f), %d above %g" + % (edge.sum(), np.median(rms[idx][edge]), np.isfinite(e_alb).sum(), + np.nanmin(e_alb) if np.isfinite(e_alb).any() else 0, np.nanmax(e_alb) if np.isfinite(e_alb).any() else 0, len(glow), albedo)) + core.clear_targets("atlas_self_luminous") + core.record_targets("atlas_self_luminous", [dict( + target="mpc:%s" % (str(t["Number"][i]) if not np.ma.is_masked(t["Number"][i]) else str(t["Name"][i])), stat=float(sv), + unit="mag/deg over %g-%g deg" % tuple(slope_deg), vet="pinned at the model's flat edge" if e else None, + note="%s band %s, G1 %.3f, G2 %.3f, rms %.2f, albedo %s" % (t["Name"][i], t["Band"][i], G1[i], G2[i], rms[i], + "%.2f" % alb[i] if np.isfinite(alb[i]) else "-")) + for i, sv, e in zip(idx, s, edge)]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- + +darkcomet_DOC = r"""One dark-comet candidate: NEOWISE NEATM size and albedo, and ASSIST astrometric refits with and without a transverse acceleration, each apparition left out in turn. + + python -I seti.py solar_system darkcomet fetch DESIG + python -I seti.py solar_system darkcomet thermal DESIG + python -I seti.py solar_system darkcomet refit DESIG [--ephem DIR] (needs assist and the two ephemeris files) + python -I seti.py solar_system darkcomet record DESIG + python -I seti.py solar_system darkcomet images DESIG + python -I seti.py solar_system darkcomet precovery DESIG --night YYYY-MM-DD [--site 568] + python -I seti.py solar_system darkcomet robust DESIG [--boot 200] [--workers 8] (night jackknife and bootstrap, weighting variants, prediction ellipses) + python -I seti.py solar_system darkcomet frames DESIG --night YYYY-MM-DD [--site 568] (both orbits at each re-measured frame) + python -I seti.py solar_system darkcomet field DESIG --night YYYY-MM-DD [--site 568] (known asteroids around the night's track, SkyBoT) + python -I seti.py solar_system darkcomet stack DESIG + python -I seti.py solar_system darkcomet variants DESIG (the NEATM fit under other assumptions; every NEOWISE detection as a table) + python -I seti.py solar_system darkcomet blockcov DESIG (A2 under a night-level covariance from restricted maximum likelihood) + python -I seti.py solar_system darkcomet locus DESIG --night YYYY-MM-DD (the positions the other apparitions allow, A2 held at each value) + python -I seti.py solar_system darkcomet forecast DESIG (daily ephemeris of both orbits at the next apparition, and the A2 it would measure) + python -I seti.py solar_system darkcomet census DESIG --night YYYY-MM-DD [--workers 6] (moving sources in the whole CFHT frames, injected + copies of the object, and the locus searched; needs the frames in cfht_/full)""" + +darkcomet_ROOT = os.environ.get("DARKCOMET_ROOT", core.data("darkcomet")) +darkcomet_BANDS = {"w1": (3.3526e-6, 309.540), "w2": (4.6028e-6, 171.787)} # isophotal wavelength (m), zero point (Jy) +darkcomet_EPS, darkcomet_G, darkcomet_PIR = 0.9, 0.15, 1.6 +darkcomet_FLOOR = 0.10 +darkcomet_AU = 1.495978707e11 + + +def darkcomet_dir(desig): + d = os.path.join(darkcomet_ROOT, desig.replace(" ", "_")) + os.makedirs(d, exist_ok=True) + return d + + +def darkcomet_obs80(desig): + """MPC 80-column observations of one object as text.""" + import urllib.request + req = urllib.request.Request("https://data.minorplanetcenter.net/api/get-obs", method="GET", + data=json.dumps({"desigs": [desig], "output_format": ["OBS80"]}).encode(), + headers={"Content-Type": "application/json"}) + return json.load(urllib.request.urlopen(req, timeout=120))[0]["OBS80"] + + +def darkcomet_parse(text): + """Optical observations from 80-column records: UTC JD, RA, Dec (deg), site, satellite geocentric position (km).""" + from astropy.time import Time + rows, last = [], None + for line in text.splitlines(): + if len(line) < 80: + continue + if line[14] in "sv" and last is not None: + if line[14] == "s" and line[32] in "12": + scale = 1.0 if line[32] == "1" else darkcomet_AU / 1e3 + last["sat_km"] = [float(line[c:c + 11].replace(" ", "")) * scale for c in (34, 46, 58)] + continue + if line[14] in "rRxX": + continue + y, mo, dd = line[15:19], line[20:22], line[23:32] + day = float(dd) + jd = Time("%s-%s-%02dT00:00:00" % (y, mo, int(day)), scale="utc").jd + (day - int(day)) + h, m, s = float(line[32:34]), float(line[35:37]), float(line[38:44]) + sg = -1.0 if line[44] == "-" else 1.0 + dg, dm, ds = float(line[45:47]), float(line[48:50]), float(line[51:56]) + last = dict(jd_utc=jd, ra=15.0 * (h + m / 60 + s / 3600), dec=sg * (dg + dm / 60 + ds / 3600), site=line[77:80], + mag=line[65:70].strip(), band=line[70].strip()) + rows.append(last) + return rows + + +def darkcomet_horizons(desig, jds, center): + """Heliocentric and centre distances (au) and phase angle (deg) at each UTC JD.""" + out = [] + for i in range(0, len(jds), 50): + q = {"format": "json", "COMMAND": "'DES=%s;'" % desig, "CENTER": "'%s'" % center, "EPHEM_TYPE": "'OBSERVER'", + "QUANTITIES": "'19,20,24'", "TLIST": "'%s'" % " ".join("%.6f" % j for j in jds[i:i + 50]), + "TLIST_TYPE": "'JD'", "TIME_TYPE": "'UT'", "CSV_FORMAT": "'YES'", "OBJ_DATA": "'NO'"} + txt = json.loads(core.get("https://ssd.jpl.nasa.gov/api/horizons.api?" + urllib.parse.urlencode(q), timeout=120))["result"] + body = txt.split("$$SOE")[1].split("$$EOE")[0] + for line in body.strip().splitlines(): + c = [x.strip() for x in line.split(",")] + nums = [num(x) for x in c[3:] if x] + out.append(dict(r=nums[0], delta=nums[2], alpha=nums[4])) + return out + + +def darkcomet_fetch(desig): + d = darkcomet_dir(desig) + text = darkcomet_obs80(desig) + open(os.path.join(d, "obs80.txt"), "w").write(text) + sb = json.loads(core.get("https://ssd-api.jpl.nasa.gov/sbdb.api?" + urllib.parse.urlencode( + {"sstr": desig, "phys-par": 1, "cov": "mat", "full-prec": 1}), timeout=120)) + json.dump(sb, open(os.path.join(d, "sbdb.json"), "w"), indent=1) + rows = darkcomet_parse(text) + wise = [r for r in rows if r["site"] == "C51"] + + def one(r): + mjd = r["jd_utc"] - 2400000.5 + q = ("SELECT ra, dec, mjd, w1mpro, w1sigmpro, w1snr, w2mpro, w2sigmpro, w2snr, qual_frame, cc_flags, ph_qual, nb " + "FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, 0.003)) = 1 AND " + "mjd BETWEEN %.6f AND %.6f" % (r["ra"], r["dec"], mjd - 5e-4, mjd + 5e-4)) + found = core.tap("irsa", q, timeout=900) + return dict(mpc=r, neowise=found[0] if found else None) + det = core.pmap(one, wise, threads=6) + geo = darkcomet_horizons(desig, [x["mpc"]["jd_utc"] for x in det], "500@-163") + for x, g in zip(det, geo): + x.update(g) + json.dump(det, open(os.path.join(d, "neowise.json"), "w"), indent=1) + o = sb["orbit"] + print("%s: %d observations from %s to %s; %d WISE positions, %d with a NEOWISE detection; A2 %s" + % (sb["object"]["fullname"], len(rows), o["first_obs"], o["last_obs"], len(wise), + sum(1 for x in det if x["neowise"]), [(p["name"], p["value"], p["sigma"]) for p in o.get("model_pars", [])])) + + +def darkcomet_planck(lam, T): + """Planck's B_lambda (W m^-2 m^-1 sr^-1).""" + x = 1.438776877e-2 / (lam * np.maximum(T, 1e-3)) + return np.where(T > 0, 1.191042972e-16 / lam ** 5 / np.expm1(np.minimum(x, 700.0)), 0.0) + + +def darkcomet_phase(alpha): + t = math.tan(math.radians(alpha) / 2) + G = darkcomet_G + return (1 - G) * math.exp(-3.33 * t ** 0.63) + G * math.exp(-1.87 * t ** 1.22) + + +def darkcomet_flux(band, D_km, eta, pv, r, delta, alpha, n=60): + """NEATM thermal plus reflected flux density (Jy) in one WISE band.""" + lam, _ = darkcomet_BANDS[band] + A = (0.290 + 0.684 * darkcomet_G) * pv + tss = ((1 - A) * 1361.0 / r ** 2 / (eta * darkcomet_EPS * 5.670374419e-8)) ** 0.25 + lat = (np.arange(n) + 0.5) / n * np.pi - np.pi / 2 + lon = (np.arange(n) + 0.5) / n * np.pi - np.pi / 2 + P, L = np.meshgrid(lat, lon, indexing="ij") + a = math.radians(alpha) + mu_obs = np.cos(P) * np.cos(L - a) + T = tss * (np.cos(P) * np.cos(L)) ** 0.25 + w = np.where(mu_obs > 0, mu_obs, 0.0) * np.cos(P) * (np.pi / n) ** 2 + R, dist = D_km * 500.0, delta * darkcomet_AU + f_th = darkcomet_EPS * R ** 2 / dist ** 2 * np.sum(darkcomet_planck(lam, T) * w) + sun = np.pi * darkcomet_planck(lam, 5778.0) * (6.957e8 / darkcomet_AU) ** 2 + f_ref = sun / r ** 2 * darkcomet_PIR * pv * R ** 2 / dist ** 2 * darkcomet_phase(alpha) + return (f_th + f_ref) * lam ** 2 / 2.99792458e8 * 1e26 + + +def darkcomet_thermal(desig, quiet=False, save=True): + """NEATM fit to W2 at fixed beaming 1.4 +- 0.5, albedo from H; duplicates merged, S/N below 4 and per-apparition outliers set aside, W1 compared.""" + from scipy.optimize import least_squares + d = darkcomet_dir(desig) + det, seen = [], set() + for x in json.load(open(os.path.join(d, "neowise.json"))): + if x["neowise"] and round(num(x["neowise"]["mjd"]), 6) not in seen: + seen.add(round(num(x["neowise"]["mjd"]), 6)) + det.append(x) + H = num(next(p["value"] for p in json.load(open(os.path.join(d, "sbdb.json")))["phys_par"] if p["name"] == "H")) + lab = darkcomet_apparitions(np.array([x["mpc"]["jd_utc"] for x in det])) + mags = {b: np.array([num(x["neowise"][b + "mpro"]) if (num(x["neowise"][b + "snr"]) or 0) >= 4 else np.nan for x in det]) + for b in darkcomet_BANDS} + clip = np.zeros(len(det), bool) + for k in set(lab): + m = (lab == k) & np.isfinite(mags["w2"]) + med = np.median(mags["w2"][m]) + mad = 1.4826 * np.median(np.abs(mags["w2"][m] - med)) + clip |= m & (np.abs(mags["w2"] - med) > 3 * max(mad, 0.05)) + obs = [] + for i, x in enumerate(det): + if np.isfinite(mags["w2"][i]) and not clip[i]: + s = num(x["neowise"]["w2sigmpro"]) or 0.3 + f = darkcomet_BANDS["w2"][1] * 10 ** (-0.4 * mags["w2"][i]) + obs.append((f, f * math.hypot(0.4 * math.log(10) * s, darkcomet_FLOOR), x["r"], x["delta"], x["alpha"], + x["mpc"]["jd_utc"], i)) + + def pv_of(D): + return (1329.0 / D) ** 2 * 10 ** (-0.4 * H) + + def fit_eta(eta): + f1 = least_squares(lambda p: [(darkcomet_flux("w2", math.exp(p[0]), eta, pv_of(math.exp(p[0])), r, dl, al) - f) / e + for f, e, r, dl, al, _, _ in obs], [math.log(1.0)], + bounds=([math.log(0.05)], [math.log(30)])) + D = math.exp(f1.x[0]) + sD = D * math.sqrt(1.0 / float(f1.jac.T @ f1.jac)) * math.sqrt(max(1.0, 2 * f1.cost / max(len(obs) - 1, 1))) + return dict(eta=eta, D_km=D, D_err=sD, pv=pv_of(D), chi2=2 * f1.cost) + + scan = [fit_eta(e) for e in (0.9, 1.0, 1.2, 1.4, 1.6, 1.9)] + best = next(s for s in scan if s["eta"] == 1.4) + lo, hi = next(s for s in scan if s["eta"] == 0.9), next(s for s in scan if s["eta"] == 1.9) + D = best["D_km"] + w1 = [(i, mags["w1"][i], -2.5 * math.log10(darkcomet_flux("w1", D, 1.4, pv_of(D), x["r"], x["delta"], x["alpha"]) + / darkcomet_BANDS["w1"][1])) for i, x in enumerate(det) if np.isfinite(mags["w1"][i])] + out = dict(H=H, n_epochs=len(det), n_w2=len(obs), clipped=[det[i]["mpc"]["jd_utc"] for i in np.nonzero(clip)[0]], + D_km=D, D_err=best["D_err"], eta=1.4, pv=best["pv"], D_range=[lo["D_km"], hi["D_km"]], + pv_range=[hi["pv"], lo["pv"]], chi2=best["chi2"], scan=scan, + r=[min(o[2] for o in obs), max(o[2] for o in obs)], alpha=[min(o[4] for o in obs), max(o[4] for o in obs)], + w1=[dict(jd=det[i]["mpc"]["jd_utc"], mag=float(m), model=float(mm)) for i, m, mm in w1], + fluxes=[dict(jy=f, err=e, r=r, delta=dl, alpha=al, jd=jd, + model=darkcomet_flux("w2", D, 1.4, pv_of(D), r, dl, al)) for f, e, r, dl, al, jd, _ in obs]) + if save: + json.dump(out, open(os.path.join(d, "thermal.json"), "w"), indent=1) + if not quiet: + print("%s: %d NEOWISE detections, %d W2 fluxes at S/N 4 or more (%d set aside) at r %.2f-%.2f au, phase %.0f-%.0f deg" + % (desig, len(det), len(obs), int(clip.sum()), out["r"][0], out["r"][1], out["alpha"][0], out["alpha"][1])) + print("NEATM at eta 1.4: D %.2f +- %.2f km, pV %.3f (H %.2f), chi2 %.1f for %d fluxes; eta 0.9-1.9: D %.2f-%.2f km, " + "pV %.3f-%.3f" % (D, best["D_err"], best["pv"], H, best["chi2"], len(obs), lo["D_km"], hi["D_km"], hi["pv"], + lo["pv"])) + for s in scan: + print(" eta %.1f: D %.2f km, pV %.3f, chi2 %.1f" % (s["eta"], s["D_km"], s["pv"], s["chi2"])) + print("W1 detected at S/N 4 or more: %d, observed minus model %s" % (len(w1), ", ".join("%+.1f" % (m - mm) for _, m, mm in w1))) + return out + + +def darkcomet_thermal_variants(desig): + """The NEATM fit again with each assumption changed in turn (phase slope G, infrared-to-visible albedo ratio, emissivity, flux floor), and every NEOWISE detection with its photometry, flags and use, into thermal_variants.json and neowise_detections.csv.""" + import csv + global darkcomet_G, darkcomet_PIR, darkcomet_EPS, darkcomet_FLOOR + d = darkcomet_dir(desig) + base = (darkcomet_G, darkcomet_PIR, darkcomet_EPS, darkcomet_FLOOR) + ref = darkcomet_thermal(desig, quiet=True, save=False) + rows = [] + for name, g_, pir, eps, fl in (("G 0.05", 0.05, base[1], base[2], base[3]), ("G 0.25", 0.25, base[1], base[2], base[3]), + ("p_IR/p_V 1.0", base[0], 1.0, base[2], base[3]), ("p_IR/p_V 2.0", base[0], 2.0, base[2], base[3]), + ("emissivity 0.95", base[0], base[1], 0.95, base[3]), ("floor 0.05", base[0], base[1], base[2], 0.05), + ("floor 0.20", base[0], base[1], base[2], 0.20)): + darkcomet_G, darkcomet_PIR, darkcomet_EPS, darkcomet_FLOOR = g_, pir, eps, fl + try: + t = darkcomet_thermal(desig, quiet=True, save=False) + finally: + darkcomet_G, darkcomet_PIR, darkcomet_EPS, darkcomet_FLOOR = base + rows.append(dict(variant=name, D_km=t["D_km"], pv=t["pv"], chi2=t["chi2"], D_range=t["D_range"], change=t["D_km"] / ref["D_km"] - 1)) + print("%-16s D %.2f km (%+.1f per cent), pV %.3f, chi2 %.1f; eta 0.9-1.9: %.2f-%.2f km" % ( + name, t["D_km"], 100 * rows[-1]["change"], t["pv"], t["chi2"], t["D_range"][0], t["D_range"][1])) + json.dump(dict(reference=dict(D_km=ref["D_km"], pv=ref["pv"], chi2=ref["chi2"]), variants=rows), open(os.path.join(d, "thermal_variants.json"), "w"), indent=1) + used = {round(f["jd"], 6) for f in ref["fluxes"]} + clipped = {round(j, 6) for j in ref["clipped"]} + w1model = {round(w["jd"], 6): w["model"] for w in ref["w1"]} + seen = set() + with open(os.path.join(d, "neowise_detections.csv"), "w", newline="") as fh: + w = csv.writer(fh) + w.writerow(["mjd", "ra_deg", "dec_deg", "r_au", "delta_au", "phase_deg", "w1mpro", "w1sigmpro", "w1snr", "w2mpro", "w2sigmpro", "w2snr", + "qual_frame", "cc_flags", "ph_qual", "nb", "w2_in_fit", "w2_note", "w1_model_mag_eta1.4"]) + for x in json.load(open(os.path.join(d, "neowise.json"))): + n_ = x["neowise"] + if not n_ or round(num(n_["mjd"]), 6) in seen: + continue + seen.add(round(num(n_["mjd"]), 6)) + jd = round(x["mpc"]["jd_utc"], 6) + snr2 = num(n_["w2snr"]) or 0 + note = "used" if jd in used else ("set aside: differs from its apparition's median by more than 3 robust sd" if jd in clipped + else "S/N below 4" if snr2 < 4 else "") + w.writerow(["%.6f" % num(n_["mjd"]), n_["ra"], n_["dec"], "%.4f" % x["r"], "%.4f" % x["delta"], "%.1f" % x["alpha"], n_["w1mpro"], + n_["w1sigmpro"], n_["w1snr"], n_["w2mpro"], n_["w2sigmpro"], n_["w2snr"], n_["qual_frame"], n_["cc_flags"], n_["ph_qual"], + n_["nb"], "yes" if jd in used else "no", note, "%.2f" % w1model[jd] if jd in w1model else ""]) + print("%d detections written to neowise_detections.csv" % len(seen)) + return rows + + +darkcomet_SIGMA = {"C51": 1.0} # arcsec until the per-site rms replaces it; 0.5 elsewhere +darkcomet_CHI2_OUT = 8.0 # two-coordinate chi-square outlier threshold + + +def darkcomet_sites(d): + """MPC parallax constants: site -> (east longitude deg, rho cos phi', rho sin phi').""" + p = os.path.join(d, "ObsCodes.html") + if not os.path.exists(p): + open(p, "wb").write(core.get("https://minorplanetcenter.net/iau/lists/ObsCodes.html", timeout=120)) + out = {} + for line in open(p, encoding="utf-8", errors="replace"): + c = line[:3] + lon, rc, rs = num(line[4:13]), num(line[13:21]), num(line[21:30]) + if len(c) == 3 and lon is not None and rc is not None and rs is not None: + out[c] = (lon, rc, rs) + return out + + +def darkcomet_observers(rows, sites, eph): + """Barycentric ICRF observer positions (au): Earth plus site through GCRS, or the satellite's reported position.""" + import astropy.units as u + from astropy.coordinates import EarthLocation + from astropy.time import Time + t = Time([r["jd_utc"] for r in rows], format="jd", scale="utc") + tdb = t.tdb.jd + out = np.zeros((len(rows), 3)) + for i, r in enumerate(rows): + e = eph.get_particle("earth", tdb[i] - eph.jd_ref) + out[i] = (e.x, e.y, e.z) + re_m = 6378137.0 + for site in {r["site"] for r in rows}: + idx = [i for i, r in enumerate(rows) if r["site"] == site] + if "sat_km" in rows[idx[0]]: + for i in idx: + out[i] += np.array(rows[i]["sat_km"]) * 1e3 / darkcomet_AU + continue + lon, rc, rs = sites[site] + loc = EarthLocation.from_geocentric(re_m * rc * math.cos(math.radians(lon)), re_m * rc * math.sin(math.radians(lon)), + re_m * rs, unit=u.m) + pos, _ = loc.get_gcrs_posvel(t[idx]) + out[idx] += np.vstack([pos.x.to_value(u.m), pos.y.to_value(u.m), pos.z.to_value(u.m)]).T / darkcomet_AU + return tdb, out + + +def darkcomet_propagate(eph, t0, state, a2, times, a1=0.0): + """Barycentric positions at TDB JDs from a state at t0 in ASSIST, with transverse a2 and radial a1 (au/d^2 at 1 au, r^-2).""" + import assist + import rebound + out = np.zeros((len(times), 3)) + times = np.asarray(times) + for sel in (np.nonzero(times < t0)[0][::-1], np.nonzero(times >= t0)[0]): + if not len(sel): + continue + sel = sel[np.argsort(times[sel])[::-1]] if times[sel[0]] < t0 else sel[np.argsort(times[sel])] + sim = rebound.Simulation() + sim.add(x=state[0], y=state[1], z=state[2], vx=state[3], vy=state[4], vz=state[5]) + sim.t = t0 - eph.jd_ref + sim.dt = -1.0 if times[sel[0]] < t0 else 1.0 + ex = assist.Extras(sim, eph) + ex.particle_params = np.array([a1, a2, 0.0]) + ex.alpha, ex.nk, ex.nm, ex.nn, ex.r0 = 1.0, 0.0, 2.0, 1.0, 1.0 + for i in sel: + sim.integrate(times[i] - eph.jd_ref) + p = sim.particles[0] + out[i] = (p.x, p.y, p.z) + del ex + return out + + +def darkcomet_radec(vec): + ra = np.degrees(np.arctan2(vec[:, 1], vec[:, 0])) % 360.0 + dec = np.degrees(np.arcsin(vec[:, 2] / np.linalg.norm(vec, axis=1))) + return ra, dec + + +def darkcomet_model(eph, t0, q, t_emit, obs_pos, ra, dec): + """Residuals (arcsec), RA times cos Dec for every position and then Dec, from the state and any A2 and A1 in q.""" + n = len(q) + pos = darkcomet_propagate(eph, t0, q[:6], q[6] if n >= 7 else 0.0, t_emit, a1=q[7] if n == 8 else 0.0) - obs_pos + mra, mdec = darkcomet_radec(pos) + dra = ((ra - mra + 180.0) % 360.0 - 180.0) * np.cos(np.radians(dec)) * 3600.0 + return np.concatenate([dra, (dec - mdec) * 3600.0]) + + +def darkcomet_jacobian(eph, t0, p, t_emit, obs_pos, ra, dec): + """Residuals at p and their forward-difference derivatives with respect to each parameter.""" + h = np.array([1e-9] * 3 + [1e-11] * 3 + [1e-14, 1e-14])[:len(p)] + r0 = darkcomet_model(eph, t0, p, t_emit, obs_pos, ra, dec) + J = np.zeros((len(r0), len(p))) + for k in range(len(p)): + q = np.array(p, float) + q[k] += h[k] + J[:, k] = (darkcomet_model(eph, t0, q, t_emit, obs_pos, ra, dec) - r0) / h[k] + return r0, J + + +def darkcomet_fit(eph, t0, p0, with_a2, t_emit, obs_pos, ra, dec, sigma, keep, iters=12, with_a1=False): + """Gauss-Newton on the state (with A2, optionally A1) by forward differences, outliers re-judged each iteration: parameters, covariance, residuals (arcsec), kept mask.""" + n = 6 + int(with_a2) + int(with_a1 and with_a2) + p = np.array(list(p0[:7]) + [0.0], float)[:n] + + def model(q): + return darkcomet_model(eph, t0, q, t_emit, obs_pos, ra, dec) + + keep = keep.copy() + cov = None + for _ in range(iters): + r0, J = darkcomet_jacobian(eph, t0, p, t_emit, obs_pos, ra, dec) + w = np.concatenate([1.0 / sigma, 1.0 / sigma]) + kk = np.concatenate([keep, keep]) + A, b = J[kk] * w[kk, None], r0[kk] * w[kk] + # columns scaled to unit norm; partials span orders of magnitude + s = np.linalg.norm(A, axis=0) + cov = np.linalg.inv((A / s).T @ (A / s)) / np.outer(s, s) + dp = -cov @ (A.T @ b) + p = p + dp + r1 = model(p) + chi = (r1[:len(ra)] ** 2 + r1[len(ra):] ** 2) / sigma ** 2 + new_keep = chi < darkcomet_CHI2_OUT + if np.all(np.abs(dp) < 1e-3 * np.sqrt(np.diag(cov))) and np.array_equal(new_keep, keep): + break + keep = new_keep + res = model(p) + return p, cov, res[:len(ra)], res[len(ra):], keep + + +def darkcomet_apparitions(jd, gap=150.0): + order = np.argsort(jd) + lab = np.zeros(len(jd), int) + k = 0 + for a, b in zip(order[:-1], order[1:]): + if jd[b] - jd[a] > gap: + k += 1 + lab[b] = k + return lab + + +def darkcomet_night_factor(rows, scheme): + """Same-night uncertainty inflation: 'veres' sqrt(N/4) above four per station-night (Veres et al. 2017), 'night' sqrt(N) per night.""" + f = np.ones(len(rows)) + if scheme == "none": + return f + groups = {} + for i, r in enumerate(rows): + key = int(math.floor(r["jd_utc"] + 0.5)) if scheme == "night" else (r["site"], int(math.floor(r["jd_utc"] + 0.5))) + groups.setdefault(key, []).append(i) + for idx in groups.values(): + n = len(idx) + if scheme == "veres" and n > 4: + f[idx] = math.sqrt(n / 4.0) + elif scheme == "night" and n > 1: + f[idx] = math.sqrt(n) + return f + + +def darkcomet_earth_velocity(eph, tdb): + """Earth's barycentric velocity (au/d) at each TDB date by one-minute difference.""" + out = np.zeros((len(tdb), 3)) + for i, t in enumerate(tdb): + a = eph.get_particle("earth", t - eph.jd_ref) + b = eph.get_particle("earth", t + 1.0 / 1440 - eph.jd_ref) + out[i] = (np.array([b.x, b.y, b.z]) - np.array([a.x, a.y, a.z])) * 1440.0 + return out + + +def darkcomet_along_cross(eph, t0, p, t_emit, obs_pos, ra, dec, a2=0.0, a1=0.0, v_obs=None): + """Offsets (arcsec) from an orbit along and across its one-minute apparent motion seen by the moving observer, Earth by default.""" + if v_obs is None: + v_obs = darkcomet_earth_velocity(eph, t_emit) + r1 = darkcomet_radec(darkcomet_propagate(eph, t0, p[:6], a2, t_emit, a1=a1) - obs_pos) + r2 = darkcomet_radec(darkcomet_propagate(eph, t0, p[:6], a2, t_emit + 1.0 / 1440, a1=a1) - (obs_pos + v_obs / 1440.0)) + cosd = np.cos(np.radians(dec)) + vx, vy = ((r2[0] - r1[0] + 180) % 360 - 180) * cosd * 3600, (r2[1] - r1[1]) * 3600 + rx, ry = ((ra - r1[0] + 180) % 360 - 180) * cosd * 3600, (dec - r1[1]) * 3600 + sp = np.maximum(np.hypot(vx, vy), 1e-9) + return (rx * vx + ry * vy) / sp, (-rx * vy + ry * vx) / sp + + +def darkcomet_ephem(ephem_dir=None): + import assist + ephem_dir = ephem_dir or core.data("assist") + return assist.Ephem(os.path.join(ephem_dir, "linux_p1550p2650.440"), os.path.join(ephem_dir, "sb441-n16.bsp")) + + +def darkcomet_setup(desig, ephem_dir=None): + """Positions, observers, JPL reference state, emission times and per-site weights from a first fit with A2.""" + d = darkcomet_dir(desig) + eph = darkcomet_ephem(ephem_dir) + rows = darkcomet_parse(open(os.path.join(d, "obs80.txt")).read()) + sites = darkcomet_sites(d) + rows = [r for r in rows if r["site"] in sites or "sat_km" in r] + tdb, obs_pos = darkcomet_observers(rows, sites, eph) + ra = np.array([r["ra"] for r in rows]) + dec = np.array([r["dec"] for r in rows]) + sb = json.load(open(os.path.join(d, "sbdb.json"))) + a2_jpl = num(next(p["value"] for p in sb["orbit"]["model_pars"] if p["name"] == "A2")) + # reference state: JPL solution at an epoch in the best-covered apparition + lab = darkcomet_apparitions(tdb) + main = np.bincount(lab).argmax() + t0 = float(np.round(np.median(tdb[lab == main])) + 0.5) + q = {"format": "json", "COMMAND": "'DES=%s;'" % desig, "EPHEM_TYPE": "'VECTORS'", "CENTER": "'500@0'", + "REF_PLANE": "'FRAME'", "VEC_TABLE": "'2'", "OUT_UNITS": "'AU-D'", "TLIST": "'%.1f'" % t0, "TIME_TYPE": "'TDB'", + "CSV_FORMAT": "'YES'", "VEC_CORR": "'NONE'", "OBJ_DATA": "'NO'"} + txt = json.loads(core.get("https://ssd.jpl.nasa.gov/api/horizons.api?" + urllib.parse.urlencode(q), timeout=120))["result"] + vals = [num(x) for x in txt.split("$$SOE")[1].split("$$EOE")[0].strip().split(",")[2:8]] + p0 = np.array(vals + [a2_jpl]) + # light time from the reference orbit, fixed through the fits + geo = darkcomet_propagate(eph, t0, p0[:6], a2_jpl, tdb) - obs_pos + t_emit = tdb - np.linalg.norm(geo, axis=1) * darkcomet_AU / 2.99792458e8 / 86400.0 + default = np.array([darkcomet_SIGMA.get(r["site"], 0.5) for r in rows]) + sigma = default.copy() + # first pass sets per-site weights: rms over five or more kept observations, floor 0.15 + p1, cov, dra, ddec, keep = darkcomet_fit(eph, t0, p0, True, t_emit, obs_pos, ra, dec, sigma, np.ones(len(rows), bool)) + site_rms = {} + for s in {r["site"] for r in rows}: + m = np.array([r["site"] == s for r in rows]) & keep + if m.sum() >= 5: + site_rms[s] = float(np.sqrt(np.mean((dra[m] ** 2 + ddec[m] ** 2) / 2))) + sigma[np.array([r["site"] == s for r in rows])] = max(site_rms[s], 0.15) + return dict(d=d, eph=eph, rows=rows, sites=sites, tdb=tdb, obs_pos=obs_pos, ra=ra, dec=dec, sb=sb, a2_jpl=a2_jpl, lab=lab, + t0=t0, p0=p0, p1=p1, t_emit=t_emit, default=default, sigma=sigma, site_rms=site_rms) + + +def darkcomet_refit(desig, ephem_dir=None): + S = darkcomet_setup(desig, ephem_dir) + d, eph, rows, tdb, obs_pos, ra, dec, sb, a2_jpl, lab, t0, p0, t_emit, sigma, site_rms = (S[k] for k in ( + "d", "eph", "rows", "tdb", "obs_pos", "ra", "dec", "sb", "a2_jpl", "lab", "t0", "p0", "t_emit", "sigma", "site_rms")) + fits = {} + everything = np.ones(len(rows), bool) + # three same-night weightings, and with A1 free + jobs = [("with A2", True, everything, "none", False), ("with A2, Veres nights", True, everything, "veres", False), + ("with A2, one position a night", True, everything, "night", False), + ("with A1 and A2", True, everything, "none", True), ("gravity only", False, everything, "none", False)] + jobs += [("without %d-%02d" % (int(_y), int(_m)), True, lab != k, "none", False) for k, (_y, _m) in + ((k, darkcomet_ym(tdb[lab == k].min())) for k in range(lab.max() + 1))] + for name, with_a2, use, scheme, with_a1 in jobs: + sel = np.nonzero(use)[0] + sg = sigma * darkcomet_night_factor(rows, scheme) + p, cov, dra, ddec, kp = darkcomet_fit(eph, t0, p0, with_a2, t_emit[sel], obs_pos[sel], ra[sel], dec[sel], sg[sel], + np.ones(len(sel), bool), with_a1=with_a1) + npar = 6 + int(with_a2) + int(with_a1) + chi2 = float(np.sum(((dra ** 2 + ddec ** 2) / sg[sel] ** 2)[kp])) + fits[name] = dict(n_obs=int(len(sel)), n_kept=int(kp.sum()), chi2=chi2, dof=int(2 * kp.sum() - npar), weighting=scheme, + rms=float(np.sqrt(np.mean((dra ** 2 + ddec ** 2)[kp] / 2))), + A2=float(p[6]) if with_a2 else None, A2_sigma=float(math.sqrt(cov[6, 6])) if with_a2 else None, + A1=float(p[7]) if with_a1 else None, A1_sigma=float(math.sqrt(cov[7, 7])) if with_a1 else None, + rejected=[dict(site=rows[i]["site"], jd=rows[i]["jd_utc"]) for i, k in zip(sel, kp) if not k], + resid_max=float(np.max(np.hypot(dra, ddec)[kp]))) + f = fits[name] + if name in ("with A2", "with A1 and A2", "gravity only"): + along, cross = darkcomet_along_cross(eph, t0, p, t_emit, obs_pos, ra, dec, a2=p[6] if with_a2 else 0.0, + a1=p[7] if with_a1 else 0.0) + f["resid"] = [dict(jd=float(tdb[i]), site=rows[i]["site"], along=float(along[i]), cross=float(cross[i]), + kept=bool(kp[i])) for i in range(len(rows))] + print("%-32s %3d obs, %3d kept, chi2 %7.1f / %3d, rms %.2f arcsec%s%s" + % (name, f["n_obs"], f["n_kept"], f["chi2"], f["dof"], f["rms"], + ", A2 %+.3e +- %.2e (%.1f sigma)" % (f["A2"], f["A2_sigma"], f["A2"] / f["A2_sigma"]) if with_a2 else "", + ", A1 %+.3e +- %.2e (%.1f sigma)" % (f["A1"], f["A1_sigma"], f["A1"] / f["A1_sigma"]) if with_a1 else "")) + if name == "gravity only": + # gravity-only residuals by apparition; a transverse force grows along track + for k in range(lab.max() + 1): + m = (lab[sel] == k) & kp + if m.any(): + print(" %d-%02d: %2d obs, mean residual RA %+.2f Dec %+.2f arcsec" % (*darkcomet_ym(tdb[lab == k].min()), + m.sum(), dra[m].mean(), ddec[m].mean())) + f.setdefault("by_apparition", []).append(dict(ym="%d-%02d" % darkcomet_ym(tdb[lab == k].min()), n=int(m.sum()), + dra=float(dra[m].mean()), ddec=float(ddec[m].mean()))) + out = dict(t0_tdb=t0, a2_jpl=a2_jpl, site_rms=site_rms, fits=fits, + apparitions=["%d-%02d" % darkcomet_ym(tdb[lab == k].min()) for k in range(lab.max() + 1)]) + # each apparition against the gravity-only orbit of the others: along- and cross-track offsets and equivalent clock error + for k in range(lab.max() + 1): + m = lab == k + pg, cg = darkcomet_fit(eph, t0, p0, False, t_emit[~m], obs_pos[~m], ra[~m], dec[~m], sigma[~m], np.ones((~m).sum(), bool))[:2] + r1 = darkcomet_radec(darkcomet_propagate(eph, t0, pg[:6], 0.0, t_emit[m]) - obs_pos[m]) + cosd = np.cos(np.radians(dec[m])) + # prediction uncertainty from the fit covariance by forward differences + J = np.zeros((2, 6)) + for q in range(6): + pq = pg[:6].copy() + hq = 1e-9 if q < 3 else 1e-11 + pq[q] += hq + rq = darkcomet_radec(darkcomet_propagate(eph, t0, pq, 0.0, t_emit[m]) - obs_pos[m]) + J[0, q] = np.mean(((rq[0] - r1[0] + 180) % 360 - 180) * cosd * 3600) / hq + J[1, q] = np.mean((rq[1] - r1[1]) * 3600) / hq + cpred = J @ cg[:6, :6] @ J.T + # apparent motion: line through the night's positions when three or more, else the model's one-minute motion + tm = (tdb[m] - tdb[m].min()) * 1440.0 + if m.sum() >= 3 and np.ptp(tm) > 5.0: + vx = float(np.polyfit(tm, ((ra[m] - ra[m][0] + 180) % 360 - 180) * cosd * 3600, 1)[0]) + vy = float(np.polyfit(tm, (dec[m] - dec[m][0]) * 3600, 1)[0]) + vx, vy = np.full(m.sum(), vx), np.full(m.sum(), vy) + else: + ve = darkcomet_earth_velocity(eph, t_emit[m]) + r2 = darkcomet_radec(darkcomet_propagate(eph, t0, pg[:6], 0.0, t_emit[m] + 1.0 / 1440) - (obs_pos[m] + ve / 1440.0)) + vx, vy = ((r2[0] - r1[0] + 180) % 360 - 180) * cosd * 3600, (r2[1] - r1[1]) * 3600 + rx, ry = ((ra[m] - r1[0] + 180) % 360 - 180) * cosd * 3600, (dec[m] - r1[1]) * 3600 + sp = np.hypot(vx, vy) + along, cross = (rx * vx + ry * vy) / sp, (-rx * vy + ry * vx) / sp + ux, uy = float(vx[0] / sp[0]), float(vy[0] / sp[0]) + pred_along = float(math.sqrt(max(np.array([ux, uy]) @ cpred @ np.array([ux, uy]), 0.0))) + pred_cross = float(math.sqrt(max(np.array([-uy, ux]) @ cpred @ np.array([-uy, ux]), 0.0))) + # every observation against this orbit, for the residual plot + al_all, cr_all = darkcomet_along_cross(eph, t0, pg, t_emit, obs_pos, ra, dec) + out.setdefault("left_out", {})[out["apparitions"][k]] = dict( + n=int(m.sum()), along=float(along.mean()), along_sd=float(along.std()), cross=float(cross.mean()), + cross_sd=float(cross.std()), rate=float(sp.mean()), clock_s=float(along.mean() / sp.mean() * 60.0), + pred_along=pred_along, pred_cross=pred_cross, + resid=[dict(jd=float(tdb[i]), site=rows[i]["site"], along=float(al_all[i]), cross=float(cr_all[i]), left_out=bool(m[i])) + for i in range(len(rows))]) + x = out["left_out"][out["apparitions"][k]] + print(" %s against the gravity-only orbit of the rest: along-track %+.2f +- %.2f, cross-track %+.2f +- %.2f arcsec, " + "the prediction itself good to %.2f and %.2f; %.2f arcsec/min, a clock error of %+.0f s for the along-track part" + % (out["apparitions"][k], x["along"], x["along_sd"], x["cross"], x["cross_sd"], pred_along, pred_cross, x["rate"], + x["clock_s"])) + # A2 orbit against the gravity-only orbit fitted without the decisive apparition, seen from Earth + loo = {a: f for a, f in fits.items() if a.startswith("without")} + key = min(loo, key=lambda a: abs(loo[a]["A2"] / loo[a]["A2_sigma"])) + k = out["apparitions"].index(key[8:]) + m = lab != k + pa = darkcomet_fit(eph, t0, p0, True, t_emit, obs_pos, ra, dec, sigma, np.ones(len(rows), bool))[0] + pg = darkcomet_fit(eph, t0, p0, False, t_emit[m], obs_pos[m], ra[m], dec[m], sigma[m], np.ones(m.sum(), bool))[0] + ts = np.arange(np.ceil(tdb.max()) + 0.5, tdb.max() + 8 * 365.25, 10.0) + earth = np.array([[e.x, e.y, e.z] for e in (eph.get_particle("earth", t - eph.jd_ref) for t in ts)]) + sun = np.array([[s.x, s.y, s.z] for s in (eph.get_particle("sun", t - eph.jd_ref) for t in ts)]) + A, G = (darkcomet_propagate(eph, t0, pa[:6], pa[6], ts), darkcomet_propagate(eph, t0, pg[:6], 0.0, ts)) + (ra1, de1), (ra2, de2) = darkcomet_radec(A - earth), darkcomet_radec(G - earth) + sep = np.hypot(((ra1 - ra2 + 180) % 360 - 180) * np.cos(np.radians(de1)), de1 - de2) * 3600 + r, dl = np.linalg.norm(A - sun, axis=1), np.linalg.norm(A - earth, axis=1) + es = earth - sun + elong = np.degrees(np.arccos(np.sum(-es * (A - earth), axis=1) / np.linalg.norm(es, axis=1) / dl)) + ph = np.degrees(np.arccos(np.clip(np.sum((A - sun) * (A - earth), axis=1) / r / dl, -1, 1))) + H = num(next(p["value"] for p in sb["phys_par"] if p["name"] == "H")) + V = H + 5 * np.log10(r * dl) - 2.5 * np.log10([darkcomet_phase(a) for a in ph]) + from astropy.time import Time + out["prediction"] = dict(without=key[8:], rows=[ + dict(date=Time(t, format="jd", scale="tdb").iso[:10], sep=float(s_), V=float(v), elong=float(e), r=float(rr)) + for t, s_, v, e, rr in zip(ts, sep, V, elong, r) if e > 60 and v < 22.5]) + for x in out["prediction"]["rows"]: + print(" %s: the two orbits %.1f arcsec apart, V %.1f, elongation %.0f deg" % (x["date"], x["sep"], x["V"], x["elong"])) + json.dump(out, open(os.path.join(d, "refit.json"), "w"), indent=1) + return out + + +darkcomet_POOL = {} + + +def darkcomet_pool_init(state, ephem_dir): + darkcomet_POOL.update(state) + darkcomet_POOL["eph"] = darkcomet_ephem(ephem_dir) + + +def darkcomet_pool_fit(job): + """One refit for darkcomet_robust: tag, rows, their sigmas, with A2, clipping threshold, starting parameters.""" + global darkcomet_CHI2_OUT + tag, sel, sg, with_a2, clip, start = job + darkcomet_CHI2_OUT = clip + P = darkcomet_POOL + p, cov, dra, ddec, kp = darkcomet_fit(P["eph"], P["t0"], start, with_a2, P["t_emit"][sel], P["obs_pos"][sel], P["ra"][sel], + P["dec"][sel], sg, np.ones(len(sel), bool)) + return dict(tag=tag, A2=float(p[6]) if with_a2 else None, A2_sigma=float(math.sqrt(cov[6, 6])) if with_a2 else None, + n=int(len(sel)), kept=int(kp.sum()), chi2=float(np.sum(((dra ** 2 + ddec ** 2) / sg ** 2)[kp])), + dof=int(2 * kp.sum() - 6 - int(with_a2)), p=[float(x) for x in p], cov=cov.tolist()) + + +def darkcomet_robust(desig, boot=200, workers=8, ephem_dir=None): + """A2 left out one night at a time, nights resampled with and without the decisive apparition held, clipping and weighting variants, and both orbits' prediction ellipses at refit's prediction dates, into robust.json.""" + from multiprocessing import Pool + from astropy.time import Time + S = darkcomet_setup(desig, ephem_dir) + rows, sigma, default, site_rms, lab, t0, p1 = (S[k] for k in ("rows", "sigma", "default", "site_rms", "lab", "t0", "p1")) + rf = json.load(open(os.path.join(S["d"], "refit.json"))) + held_app = rf["apparitions"].index(rf["prediction"]["without"]) + site_of = np.array([r["site"] for r in rows]) + + def weights(floor=0.15, dflt=None): + sg = default.copy() if dflt is None else np.array([darkcomet_SIGMA.get(r["site"], dflt) for r in rows]) + for s, v in site_rms.items(): + sg[site_of == s] = max(v, floor) + return sg + + night = np.floor(np.array([r["jd_utc"] for r in rows]) + 0.5).astype(int) + nights = sorted(int(k) for k in set(night)) + held = sorted(int(k) for k in set(night[lab == held_app])) + n_in = {k: int((night == k).sum()) for k in nights} + nf = np.array([math.sqrt(n_in[k]) for k in night]) + idx = np.arange(len(rows)) + rest = idx[lab != held_app] + jobs = [("base none", idx, sigma, True, 8.0, p1), ("base night", idx, sigma * nf, True, 8.0, p1), + ("gravity rest none", rest, sigma[rest], False, 8.0, p1), ("gravity rest night", rest, (sigma * nf)[rest], False, 8.0, p1)] + for k in nights: + sel = idx[night != k] + jobs += [("jack none %d" % k, sel, sigma[sel], True, 8.0, p1), ("jack night %d" % k, sel, (sigma * nf)[sel], True, 8.0, p1)] + rng = np.random.default_rng(20261017) + others = [k for k in nights if k not in held] + for b in range(boot): + draw = rng.choice(nights, size=len(nights), replace=True) + sel = np.concatenate([idx[night == k] for k in draw]) + jobs.append(("boot free %d" % b, sel, (sigma * nf)[sel], True, 8.0, p1)) + draw = held + list(rng.choice(others, size=len(others), replace=True)) + sel = np.concatenate([idx[night == k] for k in draw]) + jobs.append(("boot held %d" % b, sel, (sigma * nf)[sel], True, 8.0, p1)) + variants = [("clip %g" % c, sigma, c) for c in (6.0, 12.0, 1e9)] + [("floor %.2f" % f, weights(floor=f), 8.0) for f in (0.10, 0.25)] + variants += [("default %.1f" % v, weights(dflt=v), 8.0) for v in (0.3, 0.8)] + for name, sg, clip in variants: + jobs += [(name + " none", idx, sg, True, clip, p1), (name + " night", idx, sg * nf, True, clip, p1)] + state = dict(t0=t0, t_emit=S["t_emit"], obs_pos=S["obs_pos"], ra=S["ra"], dec=S["dec"]) + print("%d positions, %d nights (%d held); %d fits on %d workers" % (len(rows), len(nights), len(held), len(jobs), workers), flush=True) + with Pool(workers, initializer=darkcomet_pool_init, initargs=(state, ephem_dir)) as pool: + res = {r["tag"]: r for r in pool.imap_unordered(darkcomet_pool_fit, jobs, chunksize=1)} + out = dict(desig=desig, n_positions=len(rows), n_nights=len(nights), held=held, boot=boot, + fits={k: {kk: vv for kk, vv in v.items() if kk not in ("p", "cov")} for k, v in res.items()}) + for scheme in ("none", "night"): + v = np.array([res["jack %s %d" % (scheme, k)]["A2"] for k in nights if k not in held]) + n = len(v) + se = float(math.sqrt((n - 1) / n * np.sum((v - v.mean()) ** 2))) + base = res["base " + scheme] + out["jackknife_" + scheme] = dict(A2=base["A2"], formal=base["A2_sigma"], se_rest=se, range_rest=[float(v.min()), float(v.max())]) + print("jackknife %-5s: A2 %+.3e formal %.2e, over the nights outside the held apparition %.2e (%.1f sigma), range %+.3e to %+.3e" + % (scheme, base["A2"], base["A2_sigma"], se, abs(base["A2"]) / se, v.min(), v.max())) + for kind in ("free", "held"): + v = np.array([res["boot %s %d" % (kind, b)]["A2"] for b in range(boot)]) + s = np.array([res["boot %s %d" % (kind, b)]["A2_sigma"] for b in range(boot)]) + pct = [float(x) for x in np.percentile(v, [2.5, 16, 50, 84, 97.5])] + sign = np.sign(v) == np.sign(res["base night"]["A2"]) + same = float(np.mean(sign)) + out["bootstrap_" + kind] = dict(percentiles=pct, frac_same_sign=same, frac_3sigma_same_sign=float(np.mean((np.abs(v / s) > 3) & sign))) + print("bootstrap %s: 2.5/16/50/84/97.5%% %s; same sign %.0f%%, beyond 3 sigma with it %.0f%%" + % (kind, " ".join("%+.2e" % x for x in pct), 100 * same, 100 * out["bootstrap_" + kind]["frac_3sigma_same_sign"])) + for name in sorted({t.rsplit(" ", 1)[0] for t in res if t.startswith(("clip", "floor", "default"))}): + for scheme in ("none", "night"): + r = res["%s %s" % (name, scheme)] + print("variant %-14s %-5s A2 %+.3e +- %.2e (%.1f sigma), %d kept, chi2/dof %.2f" + % (name, scheme, r["A2"], r["A2_sigma"], abs(r["A2"] / r["A2_sigma"]), r["kept"], r["chi2"] / r["dof"])) + # both orbits seen from the geocentre at refit's prediction dates, with 1-sigma ellipses from their covariances + eph = S["eph"] + dates = [x["date"] for x in rf["prediction"]["rows"]] + ts = Time(dates, scale="tdb").jd + earth = np.array([[e.x, e.y, e.z] for e in (eph.get_particle("earth", t - eph.jd_ref) for t in ts)]) + hstep = np.array([1e-9] * 3 + [1e-11] * 3 + [1e-14]) + + def sky(p): + r_ = darkcomet_radec(darkcomet_propagate(eph, t0, np.array(p[:6]), p[6] if len(p) > 6 else 0.0, ts) - earth) + return np.array(r_[0]), np.array(r_[1]) + + def ellipses(p, cov): + p = np.array(p) + ra0, de0 = sky(p) + cosd = np.cos(np.radians(de0)) + J = np.zeros((len(ts), 2, len(p))) + for k in range(len(p)): + q_ = p.copy() + q_[k] += hstep[k] + r1, d1 = sky(q_) + J[:, 0, k] = ((r1 - ra0 + 180) % 360 - 180) * cosd * 3600 / hstep[k] + J[:, 1, k] = (d1 - de0) * 3600 / hstep[k] + return ra0, de0, np.array([J[i] @ np.array(cov) @ J[i].T for i in range(len(ts))]) + + out["prediction"] = {} + for scheme in ("none", "night"): + a, g = res["base " + scheme], res["gravity rest " + scheme] + raA, deA, CA = ellipses(a["p"], a["cov"]) + raG, deG, CG = ellipses(g["p"], g["cov"]) + rows_out = [] + for i, dt in enumerate(dates): + dE = ((raA[i] - raG[i] + 180) % 360 - 180) * math.cos(math.radians(deA[i])) * 3600 + dN = (deA[i] - deG[i]) * 3600 + sep = math.hypot(dE, dN) + u = np.array([dE, dN]) / max(sep, 1e-9) + sA, sG = math.sqrt(u @ CA[i] @ u), math.sqrt(u @ CG[i] @ u) + across = [math.sqrt(max(np.linalg.eigvalsh(C)[0], 0.0)) for C in (CA[i], CG[i])] + rows_out.append(dict(date=dt, sep=sep, sigma_accel=sA, sigma_grav=sG, across_accel=across[0], across_grav=across[1], + z_0p2=sep / math.sqrt(sA ** 2 + sG ** 2 + 0.2 ** 2))) + out["prediction"][scheme] = rows_out + for x in rows_out: + if x["sep"] > 1.0: + print("%s %-5s: %.2f arcsec apart; 1 sigma along it %.2f and %.2f, across %.2f and %.2f; a 0.2 arcsec position %.1f sigma" + % (x["date"], scheme, x["sep"], x["sigma_accel"], x["sigma_grav"], x["across_accel"], x["across_grav"], x["z_0p2"])) + json.dump(out, open(os.path.join(S["d"], "robust.json"), "w"), indent=1) + return out + + +def darkcomet_frames(desig, night, site="568", ephem_dir=None): + """Each re-measured frame of one night against the orbit with A2 and the gravity-only orbit fitted without the decisive apparition, into frames_.json.""" + S = darkcomet_setup(desig, ephem_dir) + eph, rows, sigma, lab, t0, p0 = (S[k] for k in ("eph", "rows", "sigma", "lab", "t0", "p0")) + rf = json.load(open(os.path.join(S["d"], "refit.json"))) + rest = lab != rf["apparitions"].index(rf["prediction"]["without"]) + pa = darkcomet_fit(eph, t0, p0, True, S["t_emit"], S["obs_pos"], S["ra"], S["dec"], sigma, np.ones(len(rows), bool))[0] + pg = darkcomet_fit(eph, t0, p0, False, S["t_emit"][rest], S["obs_pos"][rest], S["ra"][rest], S["dec"][rest], sigma[rest], + np.ones(rest.sum(), bool))[0] + tag = night.replace("-", "") + found = [x for x in json.load(open(os.path.join(S["d"], "precovery_%s.json" % tag))) if x["found"]] + ftdb, fpos = darkcomet_observers([dict(site=site, jd_utc=x["mjd_mid"] + 2400000.5) for x in found], S["sites"], eph) + femit = ftdb - np.linalg.norm(darkcomet_propagate(eph, t0, pa[:6], pa[6], ftdb) - fpos, axis=1) * darkcomet_AU / 2.99792458e8 / 86400.0 + A = darkcomet_radec(darkcomet_propagate(eph, t0, pa[:6], pa[6], femit) - fpos) + G = darkcomet_radec(darkcomet_propagate(eph, t0, pg[:6], 0.0, femit) - fpos) + out = [] + for i, x in enumerate(found): + cosd = math.cos(math.radians(x["dec"])) + rec = dict(image=x["image"], ext=x["ext"], filter=x["filter"], mjd_mid=x["mjd_mid"], exptime=x["exptime"], snr=x["matched_peak_sigma"], + trail_arcsec=x["trail_px"] * x["scale"], ra=x["ra"], dec=x["dec"], wcs_rms=x["wcs_rms_arcsec"]) + for key, (r_, d_) in (("accel", (A[0][i], A[1][i])), ("grav", (G[0][i], G[1][i]))): + rec[key] = dict(dE=float(((x["ra"] - r_ + 180) % 360 - 180) * cosd * 3600), dN=float((x["dec"] - d_) * 3600)) + out.append(rec) + print("%s %s: from the orbit with A2 E %+.2f N %+.2f, from gravity only E %+.2f N %+.2f arcsec; trail %.2f arcsec, S/N %.1f" + % (x["image"], x["filter"][:1], rec["accel"]["dE"], rec["accel"]["dN"], rec["grav"]["dE"], rec["grav"]["dN"], rec["trail_arcsec"], rec["snr"])) + json.dump(out, open(os.path.join(S["d"], "frames_%s.json" % tag), "w"), indent=1) + return out + + +def darkcomet_blockcov(desig, ephem_dir=None): + """A2 with the positions of a night sharing an error: covariance s^2 sigma_site^2 plus tau^2 between any two positions of one night, in each coordinate, (s, tau) by restricted maximum likelihood over the positions the site-weighted fit keeps; A2 at the estimate and at the upper 95 per cent bound of tau, with the decisive apparition left out, and against an error shared by the decisive night alone, into blockcov.json.""" + S = darkcomet_setup(desig, ephem_dir) + eph, rows, t0, p1, t_emit, obs_pos, ra, dec, sigma, lab = (S[k] for k in ( + "eph", "rows", "t0", "p1", "t_emit", "obs_pos", "ra", "dec", "sigma", "lab")) + rf = json.load(open(os.path.join(S["d"], "refit.json"))) + held = lab == rf["apparitions"].index(rf["prediction"]["without"]) + p, cov0, _, _, keep = darkcomet_fit(eph, t0, p1, True, t_emit, obs_pos, ra, dec, sigma, np.ones(len(rows), bool)) + night = np.floor(np.array([r["jd_utc"] for r in rows]) + 0.5).astype(int) + sel = np.nonzero(keep)[0] + + def cov_of(idx, s, tau, extra=0.0): + same = (night[idx][:, None] == night[idx][None, :]).astype(float) + C = s ** 2 * np.diag(sigma[idx] ** 2) + tau ** 2 * same + if extra: + h_ = held[idx].astype(float) + C = C + extra ** 2 * np.outer(h_, h_) + Z = np.zeros_like(C) + return np.block([[C, Z], [Z, C]]) + + def whiten(C, J, r): + L = np.linalg.cholesky(C) + A, b = np.linalg.solve(L, J), np.linalg.solve(L, r) + sc = np.linalg.norm(A, axis=0) + return L, A, b, sc + + def reml(C, J, r): + L, A, b, sc = whiten(C, J, r) + Q, R = np.linalg.qr(A / sc) + e = b - Q @ (Q.T @ b) + return -0.5 * (2 * np.sum(np.log(np.diag(L))) + 2 * np.sum(np.log(np.abs(np.diag(R)))) + 2 * np.sum(np.log(sc)) + e @ e) + + def solve(idx, q, s, tau, extra=0.0, iters=4): + q = np.array(q, float) + for _ in range(iters): + r, J = darkcomet_jacobian(eph, t0, q, t_emit[idx], obs_pos[idx], ra[idx], dec[idx]) + _, A, b, sc = whiten(cov_of(idx, s, tau, extra), J, r) + cov = np.linalg.inv((A / sc).T @ (A / sc)) / np.outer(sc, sc) + dq = -cov @ (A.T @ b) + q = q + dq + if np.all(np.abs(dq) < 1e-3 * np.sqrt(np.diag(cov))): + break + return q, cov + + r, J = darkcomet_jacobian(eph, t0, p, t_emit[sel], obs_pos[sel], ra[sel], dec[sel]) + ss, tt = np.linspace(0.2, 2.5, 116), np.linspace(0.0, 1.0, 101) + grid = np.array([[reml(cov_of(sel, s_, t_), J, r) for t_ in tt] for s_ in ss]) + i, j = np.unravel_index(np.argmax(grid), grid.shape) + s_hat, tau_hat = float(ss[i]), float(tt[j]) + prof = grid.max(axis=0) + inside = tt[2 * (prof.max() - prof) < 3.84] + tau_lo, tau_hi = float(inside.min()), float(inside.max()) + s_at_hi = float(ss[np.argmax(grid[:, list(tt).index(inside.max())])]) + out = dict(desig=desig, n_kept=int(len(sel)), n_nights=int(len(set(night[sel]))), s_hat=s_hat, tau_hat=tau_hat, tau_95=[tau_lo, tau_hi], + site_fit=dict(A2=float(p[6]), A2_sigma=float(math.sqrt(cov0[6, 6]))), + profile_tau=[dict(tau=float(t_), loglik=float(v)) for t_, v in zip(tt, prof)]) + q, c = solve(sel, p, s_hat, tau_hat) + out["at_estimate"] = dict(A2=float(q[6]), A2_sigma=float(math.sqrt(c[6, 6]))) + q2, c2 = solve(sel, p, s_at_hi, tau_hi) + out["at_upper_tau"] = dict(s=s_at_hi, A2=float(q2[6]), A2_sigma=float(math.sqrt(c2[6, 6]))) + rest = np.array([k for k in sel if not held[k]]) + q3, c3 = solve(rest, p, s_hat, tau_hat) + out["without_decisive"] = dict(A2=float(q3[6]), A2_sigma=float(math.sqrt(c3[6, 6]))) + print("%d kept positions on %d nights; restricted maximum likelihood s %.2f, tau %.3f arcsec (95 per cent %.3f-%.3f)" + % (len(sel), out["n_nights"], s_hat, tau_hat, tau_lo, tau_hi)) + for k, lab_ in (("site_fit", "site weights alone"), ("at_estimate", "block covariance"), ("at_upper_tau", "tau at its upper bound"), + ("without_decisive", "block covariance, decisive apparition left out")): + x = out[k] + print(" %-48s A2 %+.3e +- %.2e (%.1f sigma)" % (lab_, x["A2"], x["A2_sigma"], abs(x["A2"]) / x["A2_sigma"])) + scan = [] + for eps in (0.0, 0.1, 0.2, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0): + qe, ce = solve(sel, q, s_hat, tau_hat, extra=eps) + scan.append(dict(extra=eps, A2=float(qe[6]), A2_sigma=float(math.sqrt(ce[6, 6])), z=float(abs(qe[6]) / math.sqrt(ce[6, 6])))) + print(" error shared by the decisive night %.2f arcsec: A2 %+.3e +- %.2e (%.1f sigma)" % (eps, qe[6], math.sqrt(ce[6, 6]), scan[-1]["z"])) + out["decisive_shared_error"] = scan + for zc in (5.0, 3.0): + for a, b in zip(scan[:-1], scan[1:]): + if a["z"] >= zc > b["z"]: + out["shared_error_for_%g_sigma" % zc] = float(a["extra"] + (a["z"] - zc) / (a["z"] - b["z"]) * (b["extra"] - a["extra"])) + print(" A2 falls to %g sigma at a shared error of %.2f arcsec" % (zc, out["shared_error_for_%g_sigma" % zc])) + break + json.dump(out, open(os.path.join(S["d"], "blockcov.json"), "w"), indent=1) + return out + + +def darkcomet_locus(desig, night, site="568", ephem_dir=None): + """Where the other apparitions put the object in one night's frames: the orbit fitted without the decisive apparition with A2 held at each value of a grid (the state at its conditional mean given A2 under that fit's covariance), the gravity-only orbit fitted to the same positions, and the orbit with A2 fitted to all of them; with A1 also free, the covariance of the predicted position; into locus_.json.""" + S = darkcomet_setup(desig, ephem_dir) + eph, rows, sigma, lab, t0, p1 = (S[k] for k in ("eph", "rows", "sigma", "lab", "t0", "p1")) + rf = json.load(open(os.path.join(S["d"], "refit.json"))) + rest = lab != rf["apparitions"].index(rf["prediction"]["without"]) + args = (S["t_emit"][rest], S["obs_pos"][rest], S["ra"][rest], S["dec"][rest], sigma[rest], np.ones(rest.sum(), bool)) + pr, cr = darkcomet_fit(eph, t0, p1, True, *args)[:2] + pr2, cr2 = darkcomet_fit(eph, t0, p1, True, *args, with_a1=True)[:2] + pg = darkcomet_fit(eph, t0, p1, False, *args)[0] + pa = darkcomet_fit(eph, t0, p1, True, S["t_emit"], S["obs_pos"], S["ra"], S["dec"], sigma, np.ones(len(rows), bool))[0] + tag = night.replace("-", "") + frames = json.load(open(os.path.join(S["d"], "precovery_%s.json" % tag))) + ftdb, fpos = darkcomet_observers([dict(site=site, jd_utc=x["mjd_mid"] + 2400000.5) for x in frames], S["sites"], eph) + femit = ftdb - np.linalg.norm(darkcomet_propagate(eph, t0, pa[:6], pa[6], ftdb) - fpos, axis=1) * darkcomet_AU / 2.99792458e8 / 86400.0 + vel = darkcomet_earth_velocity(eph, femit) + + def sky(q, dt=0.0): + r_ = darkcomet_radec(darkcomet_propagate(eph, t0, q[:6], q[6] if len(q) > 6 else 0.0, femit + dt, a1=q[7] if len(q) > 7 else 0.0) + - (fpos + vel * dt)) + return np.array(r_[0]), np.array(r_[1]) + grid = np.round(np.arange(-16.0, 12.0001, 0.25), 2) * 1e-12 + cond = [pr + cr[:, 6] / cr[6, 6] * (v - pr[6]) for v in grid] + loc = [sky(q) for q in cond] + A, G = sky(pa), sky(pg) + A1 = sky(pa, 1.0 / 1440) + # predicted position of the mean frame time with A1 and A2 free: its covariance from that fit + m = int(np.argmin(np.abs(femit - femit.mean()))) + hstep = np.array([1e-9] * 3 + [1e-11] * 3 + [1e-14, 1e-14]) + r0, d0 = sky(pr2) + Jp = np.zeros((2, 8)) + for k in range(8): + q = pr2.copy() + q[k] += hstep[k] + r1, d1 = sky(q) + Jp[0, k] = ((r1[m] - r0[m] + 180) % 360 - 180) * math.cos(math.radians(d0[m])) * 3600 / hstep[k] + Jp[1, k] = (d1[m] - d0[m]) * 3600 / hstep[k] + Cp = Jp @ cr2 @ Jp.T + ev, evec = np.linalg.eigh(Cp) + out = dict(desig=desig, night=night, site=site, grid=[float(v) for v in grid], + rest_A2=dict(A2=float(pr[6]), A2_sigma=float(math.sqrt(cr[6, 6]))), + rest_A1A2=dict(A1=float(pr2[7]), A1_sigma=float(math.sqrt(cr2[7, 7])), A2=float(pr2[6]), A2_sigma=float(math.sqrt(cr2[6, 6]))), + a1a2_ellipse=dict(frame=frames[m]["image"], major=float(math.sqrt(max(ev[1], 0))), minor=float(math.sqrt(max(ev[0], 0))), + pa=float(math.degrees(math.atan2(evec[0, 1], evec[1, 1])) % 180), + centre_from_grav=[float(((r0[m] - G[0][m] + 180) % 360 - 180) * math.cos(math.radians(G[1][m])) * 3600), + float((d0[m] - G[1][m]) * 3600)]), + frames=[]) + for i, x in enumerate(frames): + cosd = math.cos(math.radians(A[1][i])) + out["frames"].append(dict(image=x["image"], ext=x["ext"], mjd_mid=x["mjd_mid"], exptime=x["exptime"], filter=x["filter"], found=x["found"], + accel=[float(A[0][i]), float(A[1][i])], grav=[float(G[0][i]), float(G[1][i])], + motion=[float(((A1[0][i] - A[0][i] + 180) % 360 - 180) * cosd * 3600), float((A1[1][i] - A[1][i]) * 3600)], + locus=[[float(l_[0][i]), float(l_[1][i])] for l_ in loc])) + f0 = out["frames"][m] + z = grid.tolist().index(0.0) + off = [((f0["locus"][z][0] - f0["grav"][0] + 180) % 360 - 180) * math.cos(math.radians(f0["grav"][1])) * 3600, (f0["locus"][z][1] - f0["grav"][1]) * 3600] + out["locus_at_zero_from_grav"] = off + step = [((f0["locus"][z + 4][0] - f0["locus"][z][0] + 180) % 360 - 180) * math.cos(math.radians(f0["grav"][1])) * 3600, (f0["locus"][z + 4][1] - f0["locus"][z][1]) * 3600] + out["arcsec_per_1e-12"] = [float(step[0]), float(step[1])] + print("without %s: A2 %+.3e +- %.2e; with A1 too, A1 %+.3e +- %.2e, A2 %+.3e +- %.2e" % ( + rf["prediction"]["without"], pr[6], math.sqrt(cr[6, 6]), pr2[7], math.sqrt(cr2[7, 7]), pr2[6], math.sqrt(cr2[6, 6]))) + print("locus at A2 = 0 lies E %+.2f N %+.2f arcsec from the gravity-only orbit; each 1e-12 of A2 moves it E %+.2f N %+.2f arcsec" % (*off, *step)) + print("with A1 free the predicted position at %s has a 1-sigma ellipse %.2f x %.2f arcsec at PA %.0f deg, centred E %+.2f N %+.2f from the gravity-only orbit" + % (out["a1a2_ellipse"]["frame"], out["a1a2_ellipse"]["major"], out["a1a2_ellipse"]["minor"], out["a1a2_ellipse"]["pa"], *out["a1a2_ellipse"]["centre_from_grav"])) + json.dump(out, open(os.path.join(S["d"], "locus_%s.json" % tag), "w"), indent=1) + return out + + +def darkcomet_forecast(desig, ephem_dir=None, start="2030-06-01", days=183, sig_new=0.2): + """Geocentric daily ephemeris from start of the orbit with A2 and of the gravity-only orbit fitted without the decisive apparition, one position a night, each with its 1-sigma ellipse; and the A2 uncertainty from the other apparitions plus one position a night accurate to sig_new at that apparition, into forecast.json and ephemeris_.csv.""" + import csv + from astropy.time import Time + S = darkcomet_setup(desig, ephem_dir) + eph, rows, sigma, lab, t0, p1, sb = (S[k] for k in ("eph", "rows", "sigma", "lab", "t0", "p1", "sb")) + rf = json.load(open(os.path.join(S["d"], "refit.json"))) + rest = lab != rf["apparitions"].index(rf["prediction"]["without"]) + sg = sigma * darkcomet_night_factor(rows, "night") + everything = np.ones(len(rows), bool) + pa, ca, _, _, ka = darkcomet_fit(eph, t0, p1, True, S["t_emit"], S["obs_pos"], S["ra"], S["dec"], sg, everything) + sel = np.nonzero(rest)[0] + pg, cg = darkcomet_fit(eph, t0, p1, False, S["t_emit"][sel], S["obs_pos"][sel], S["ra"][sel], S["dec"][sel], sg[sel], np.ones(len(sel), bool))[:2] + pr, _, _, _, kr = darkcomet_fit(eph, t0, p1, True, S["t_emit"][sel], S["obs_pos"][sel], S["ra"][sel], S["dec"][sel], sg[sel], np.ones(len(sel), bool)) + t_utc = Time(start, scale="utc").jd + np.arange(days) + ts = Time(t_utc, format="jd", scale="utc").tdb.jd + earth = np.array([[e.x, e.y, e.z] for e in (eph.get_particle("earth", t - eph.jd_ref) for t in ts)]) + sun = np.array([[s.x, s.y, s.z] for s in (eph.get_particle("sun", t - eph.jd_ref) for t in ts)]) + hstep = np.array([1e-9] * 3 + [1e-11] * 3 + [1e-14]) + H = num(next(x["value"] for x in sb["phys_par"] if x["name"] == "H")) + + def apparent(q): + a2 = q[6] if len(q) > 6 else 0.0 + pos = darkcomet_propagate(eph, t0, q[:6], a2, ts) + temit = ts - np.linalg.norm(pos - earth, axis=1) * darkcomet_AU / 2.99792458e8 / 86400.0 + pos = darkcomet_propagate(eph, t0, q[:6], a2, temit) + r_, d_ = darkcomet_radec(pos - earth) + return np.array(r_), np.array(d_), pos + + def with_ellipse(q, cov): + ra0, de0, pos = apparent(q) + cosd = np.cos(np.radians(de0)) + J = np.zeros((len(ts), 2, len(q))) + for k in range(len(q)): + qq = np.array(q, float) + qq[k] += hstep[k] + r1, d1, _ = apparent(qq) + J[:, 0, k] = ((r1 - ra0 + 180) % 360 - 180) * cosd * 3600 / hstep[k] + J[:, 1, k] = (d1 - de0) * 3600 / hstep[k] + C = np.array([J[i] @ cov @ J[i].T for i in range(len(ts))]) + return ra0, de0, pos, C, J + + raA, deA, posA, CA, JA = with_ellipse(pa, ca) + raG, deG, _, CG, _ = with_ellipse(pg, cg) + r, dl = np.linalg.norm(posA - sun, axis=1), np.linalg.norm(posA - earth, axis=1) + es = earth - sun + elong = np.degrees(np.arccos(np.sum(-es * (posA - earth), axis=1) / np.linalg.norm(es, axis=1) / dl)) + ph = np.degrees(np.arccos(np.clip(np.sum((posA - sun) * (posA - earth), axis=1) / r / dl, -1, 1))) + V = H + 5 * np.log10(r * dl) - 2.5 * np.log10([darkcomet_phase(a) for a in ph]) + + def ell(C): + ev, evec = np.linalg.eigh(C) + return float(math.sqrt(max(ev[1], 0))), float(math.sqrt(max(ev[0], 0))), float(math.degrees(math.atan2(evec[0, 1], evec[1, 1])) % 180) + table = [] + for i in range(len(ts)): + dE = ((raA[i] - raG[i] + 180) % 360 - 180) * math.cos(math.radians(deA[i])) * 3600 + dN = (deA[i] - deG[i]) * 3600 + a_, b_ = ell(CA[i]), ell(CG[i]) + table.append(dict(date=Time(t_utc[i], format="jd").iso[:10], ra_accel=float(raA[i]), dec_accel=float(deA[i]), ra_grav=float(raG[i]), + dec_grav=float(deG[i]), sep=float(math.hypot(dE, dN)), sep_pa=float(math.degrees(math.atan2(dE, dN)) % 360), + accel_major=a_[0], accel_minor=a_[1], accel_pa=a_[2], grav_major=b_[0], grav_minor=b_[1], grav_pa=b_[2], + V=float(V[i]), r=float(r[i]), delta=float(dl[i]), elong=float(elong[i]), phase=float(ph[i]))) + year = start[:4] + with open(os.path.join(S["d"], "ephemeris_%s.csv" % year), "w", newline="") as fh: + w = csv.writer(fh) + w.writerow(["date_0h_utc", "ra_accel_deg", "dec_accel_deg", "ra_grav_deg", "dec_grav_deg", "separation_arcsec", "separation_pa_deg", + "accel_sigma_major_arcsec", "accel_sigma_minor_arcsec", "accel_ellipse_pa_deg", "grav_sigma_major_arcsec", + "grav_sigma_minor_arcsec", "grav_ellipse_pa_deg", "V", "r_au", "delta_au", "elongation_deg", "phase_deg"]) + for x in table: + w.writerow([x["date"], "%.6f" % x["ra_accel"], "%.6f" % x["dec_accel"], "%.6f" % x["ra_grav"], "%.6f" % x["dec_grav"], + "%.2f" % x["sep"], "%.1f" % x["sep_pa"], "%.3f" % x["accel_major"], "%.3f" % x["accel_minor"], "%.1f" % x["accel_pa"], + "%.3f" % x["grav_major"], "%.3f" % x["grav_minor"], "%.1f" % x["grav_pa"], "%.2f" % x["V"], "%.4f" % x["r"], + "%.4f" % x["delta"], "%.1f" % x["elong"], "%.1f" % x["phase"]]) + # A2 from the other apparitions alone, then with positions at this apparition: information added row by row + r_, Jr = darkcomet_jacobian(eph, t0, pr, S["t_emit"][sel], S["obs_pos"][sel], S["ra"][sel], S["dec"][sel]) + w_ = np.concatenate([1.0 / sg[sel], 1.0 / sg[sel]]) * np.concatenate([kr, kr]) + I_rest = (Jr * w_[:, None] ** 2).T @ Jr + r_, Ja = darkcomet_jacobian(eph, t0, pa, S["t_emit"], S["obs_pos"], S["ra"], S["dec"]) + wa = np.concatenate([1.0 / sg, 1.0 / sg]) * np.concatenate([ka, ka]) + I_all = (Ja * wa[:, None] ** 2).T @ Ja + ok = [i for i, x in enumerate(table) if x["elong"] > 60 and x["V"] < 22.5] + first = ok[0] if ok else 0 + scen = {"one night": [first], "three nights 30 days apart": [i for i in (first, first + 30, first + 60) if i < len(ts)], + "six nights 15 days apart": [i for i in range(first, min(first + 76, len(ts)), 15)]} + out = dict(desig=desig, weighting="one position a night", A2=float(pa[6]), A2_sigma=float(math.sqrt(ca[6, 6])), sig_new=sig_new, + visible=[table[i]["date"] for i in (ok[0], ok[-1])] if ok else None, rows=table, scenarios={}) + base_rest = math.sqrt(np.linalg.inv(I_rest)[6, 6]) + base_all = math.sqrt(np.linalg.inv(I_all)[6, 6]) + print("one position a night: A2 %+.3e +- %.2e; without %s +- %.2e" % (pa[6], math.sqrt(ca[6, 6]), rf["prediction"]["without"], base_rest)) + for name, idx in scen.items(): + Jn = np.vstack([JA[i] for i in idx]) / sig_new + s_rest = math.sqrt(np.linalg.inv(I_rest + Jn.T @ Jn)[6, 6]) + s_all = math.sqrt(np.linalg.inv(I_all + Jn.T @ Jn)[6, 6]) + out["scenarios"][name] = dict(dates=[table[i]["date"] for i in idx], A2_sigma_without=s_rest, z_without=abs(pa[6]) / s_rest, + A2_sigma_with=s_all, z_with=abs(pa[6]) / s_all) + print(" %s (%s), %.2f arcsec each: A2 +- %.2e without %s (%.1f sigma at the fitted value), +- %.2e with it" + % (name, ", ".join(table[i]["date"] for i in idx), sig_new, s_rest, rf["prediction"]["without"], abs(pa[6]) / s_rest, s_all)) + out["A2_sigma_without_now"], out["A2_sigma_with_now"] = base_rest, base_all + json.dump(out, open(os.path.join(S["d"], "forecast.json"), "w"), indent=1) + return out + + +darkcomet_SKYBOT = "https://ssp.imcce.fr/webservices/skybot/api/conesearch.php" + + +def darkcomet_field(desig, night, site="568", radius=0.5): + """Known asteroids within radius degrees of one night's re-measured track (SkyBoT): density, motions, and the expected number of unrelated ones near the predicted position moving like the object, into field_.json.""" + d = darkcomet_dir(desig) + tag = night.replace("-", "") + found = [x for x in json.load(open(os.path.join(d, "precovery_%s.json" % tag))) if x["found"] and math.hypot(*x["obs_minus_pred"]) < 1.0] + t = np.array([x["mjd_mid"] for x in found]) + ra, dec = np.array([x["ra"] for x in found]), np.array([x["dec"] for x in found]) + cosd = math.cos(math.radians(dec.mean())) + tm = (t - t.mean()) * 24.0 + ve, vn = np.polyfit(tm, (ra - ra.mean()) * cosd * 3600, 1)[0], np.polyfit(tm, (dec - dec.mean()) * 3600, 1)[0] + rate, pa = math.hypot(ve, vn), math.degrees(math.atan2(ve, vn)) % 360 + # our detections and the MPC reports of the night against that straight track, across the motion + ux, uy = ve / rate, vn / rate + e0, n0 = np.polyfit(tm, (ra - ra.mean()) * cosd * 3600, 1)[1], np.polyfit(tm, (dec - dec.mean()) * 3600, 1)[1] + + def across(jd, r_, d_): + h = (jd - 2400000.5 - t.mean()) * 24.0 + de_, dn_ = (r_ - ra.mean()) * cosd * 3600 - (e0 + ve * h), (d_ - dec.mean()) * 3600 - (n0 + vn * h) + return -de_ * uy + dn_ * ux + ours = np.array([across(x["mjd_mid"] + 2400000.5, x["ra"], x["dec"]) for x in found]) + mpc = [r for r in darkcomet_parse(open(os.path.join(d, "obs80.txt")).read()) if abs(r["jd_utc"] - 2400000.5 - t.mean()) < 0.5] + rep = np.array([across(r["jd_utc"], r["ra"], r["dec"]) for r in mpc]) + q = {"-ep": "%.5f" % (t.mean() + 2400000.5), "-ra": "%.5f" % ra.mean(), "-dec": "%.5f" % dec.mean(), "-rd": "%g" % radius, + "-mime": "json", "-output": "all", "-loc": site, "-filter": "0", "-objFilter": "100", "-refsys": "EQJ2000", "-from": "setitools"} + rows = json.loads(core.get(darkcomet_SKYBOT + "?" + urllib.parse.urlencode(q), timeout=180)) + objs = [] + for r in rows: + h = [float(v) for v in r["RA (hms)"].split()] + g = r["DEC (dms)"].split() + sg = -1.0 if g[0].startswith("-") else 1.0 + o_ra = 15.0 * (h[0] + h[1] / 60 + h[2] / 3600) + o_dec = sg * (abs(float(g[0])) + float(g[1]) / 60 + float(g[2]) / 3600) + dra, ddec = float(r["dRA (arcsec/h)"]), float(r["dDEC (arcsec/h)"]) + objs.append(dict(name=r["Name"], cls=r["Class"], V=float(r["VMag (mag)"]), rate=math.hypot(dra, ddec), + pa=math.degrees(math.atan2(dra, ddec)) % 360, + sep=math.hypot((o_ra - ra.mean()) * cosd, o_dec - dec.mean()) * 3600)) + name = desig.replace(" ", "") + others = [o for o in objs if name not in o["name"].replace(" ", "")] + dens = len(others) / (math.pi * radius ** 2) + r_ = np.array([o["rate"] for o in others]) + p_ = (np.array([o["pa"] for o in others]) - pa + 180) % 360 - 180 + # motions near the object's from a normal fit to the known ones: within 0.5 arcsec/h and 1 degree + f = (math.exp(-0.5 * ((rate - r_.mean()) / r_.std(ddof=1)) ** 2) / (r_.std(ddof=1) * math.sqrt(2 * math.pi)) * 1.0 + * math.exp(-0.5 * (p_.mean() / p_.std(ddof=1)) ** 2) / (p_.std(ddof=1) * math.sqrt(2 * math.pi)) * 2.0) + out = dict(track=dict(mjd=float(t.mean()), ra=float(ra.mean()), dec=float(dec.mean()), rate=rate, pa=pa, n=len(found), + ours_across_rms=float(np.sqrt(np.mean(ours ** 2)))), + reports=dict(n=len(rep), across_mean=float(rep.mean()), across_rms=float(np.sqrt(np.mean(rep ** 2))), + by_site={s: float(np.mean([a for a, r in zip(rep, mpc) if r["site"] == s])) for s in sorted({r["site"] for r in mpc})}), + n_known=len(others), density_per_deg2=dens, nearest_arcsec=min(o["sep"] for o in others), + known_rate_mean=float(r_.mean()), known_rate_sd=float(r_.std(ddof=1)), known_pa_mean=float((p_.mean() + pa) % 360), + known_pa_sd=float(p_.std(ddof=1)), + n_within_5_10=int(np.sum((np.abs(r_ - rate) < 5) & (np.abs(p_) < 10))), + n_within_10_20=int(np.sum((np.abs(r_ - rate) < 10) & (np.abs(p_) < 20))), motion_fraction=f, + expected_10x_30arcsec=10 * dens * math.pi * (30 / 3600) ** 2 * f, objects=objs) + print("our %d detections scatter %.2f arcsec across the track; the %d MPC reports of the night lie %.2f rms (mean %+.2f) across it" + % (len(found), out["track"]["ours_across_rms"], len(rep), out["reports"]["across_rms"], out["reports"]["across_mean"])) + print("track %.1f arcsec/h toward PA %.0f deg; %d known asteroids besides %s within %g deg (%.1f per square degree), nearest %.0f arcsec; " + "their motions %.1f +- %.1f arcsec/h toward %.0f +- %.0f deg; %d within 5 arcsec/h and 10 deg, %d within 10 and 20; " + "at ten times their density, %.1e unrelated within 30 arcsec moving within 0.5 arcsec/h and 1 deg" + % (rate, pa, len(others), desig, radius, dens, out["nearest_arcsec"], out["known_rate_mean"], out["known_rate_sd"], + out["known_pa_mean"], out["known_pa_sd"], out["n_within_5_10"], out["n_within_10_20"], out["expected_10x_30arcsec"])) + json.dump(out, open(os.path.join(d, "field_%s.json" % tag), "w"), indent=1) + return out + + +darkcomet_CENSUS = {} + + +def darkcomet_poly(c, x, y): + """The detector-to-WCS-pixel map: affine with three coefficients, quadratic in pixels over 1000 with six.""" + v = c[0] * x + c[1] * y + c[2] + if len(c) > 3: + u, w_ = x / 1000.0, y / 1000.0 + v = v + c[3] * u * u + c[4] * u * w_ + c[5] * w_ * w_ + return v + + +def darkcomet_register(img, raw, w, g_ra, g_dec, thresh): + """Map from detector pixels to the header WCS's pixels from bright peaks of img, centred on raw, matched to Gaia: quadratic with twenty or more matches, else affine; x and y coefficients, rms (px), and the matched peaks' positions with their Gaia indices; None with fewer than six.""" + from scipy.ndimage import maximum_filter + pk = np.argwhere((img == maximum_filter(img, size=9)) & (img > thresh)) + pk = pk[(pk[:, 0] > 3) & (pk[:, 0] < img.shape[0] - 4) & (pk[:, 1] > 3) & (pk[:, 1] < img.shape[1] - 4)] + if len(pk) < 6: + return None + sx, sy = np.zeros(len(pk)), np.zeros(len(pk)) + for n_, (y, x) in enumerate(pk): + b = np.clip(raw[y - 2:y + 3, x - 2:x + 3], 0, None) + s = b.sum() + sx[n_] = x + ((b.sum(axis=0) @ np.arange(-2, 3)) / s if s > 0 else 0.0) + sy[n_] = y + ((b.sum(axis=1) @ np.arange(-2, 3)) / s if s > 0 else 0.0) + gx, gy = w.all_world2pix(g_ra, g_dec, 0) + gi = np.nonzero((gx > 5) & (gx < img.shape[1] - 5) & (gy > 5) & (gy < img.shape[0] - 5))[0] + dxs, dys = [], [] + for i in gi: + dd = np.hypot(sx - gx[i], sy - gy[i]) + for j in np.nonzero(dd < 40)[0]: + dxs.append(sx[j] - gx[i]) + dys.append(sy[j] - gy[i]) + if len(dxs) < 6: + return None + H2, xe, ye = np.histogram2d(dxs, dys, bins=80, range=[[-40, 40], [-40, 40]]) + k = np.unravel_index(np.argmax(H2), H2.shape) + sh = (0.5 * (xe[k[0]] + xe[k[0] + 1]), 0.5 * (ye[k[1]] + ye[k[1] + 1])) + pairs = [] + for i in gi: + dd = np.hypot(sx - gx[i] - sh[0], sy - gy[i] - sh[1]) + j = int(np.argmin(dd)) + if dd[j] < 3.0: + pairs.append((sx[j], sy[j], gx[i], gy[i], i)) + pairs = np.array(pairs) + if len(pairs) < 6: + return None + + def design(p_): + cols = [p_[:, 0], p_[:, 1], np.ones(len(p_))] + if len(p_) >= 20: + u, w_ = p_[:, 0] / 1000.0, p_[:, 1] / 1000.0 + cols += [u * u, u * w_, w_ * w_] + return np.column_stack(cols) + for _ in range(3): + A = design(pairs) + cx = np.linalg.lstsq(A, pairs[:, 2], rcond=None)[0] + cy = np.linalg.lstsq(A, pairs[:, 3], rcond=None)[0] + res = np.hypot(A @ cx - pairs[:, 2], A @ cy - pairs[:, 3]) + keep = res < max(3 * np.median(res), 0.3) + pairs = pairs[keep] + A = design(pairs) + cx = np.linalg.lstsq(A, pairs[:, 2], rcond=None)[0] + cy = np.linalg.lstsq(A, pairs[:, 3], rcond=None)[0] + res = np.hypot(A @ cx - pairs[:, 2], A @ cy - pairs[:, 3]) + return cx, cy, float(np.sqrt(np.mean(res ** 2))), pairs + + +def darkcomet_sky(w, cx, cy, x, y): + """RA and Dec (deg) of detector pixels through the registration map and the header WCS.""" + r_, d_ = w.all_pix2world(darkcomet_poly(cx, x, y), darkcomet_poly(cy, x, y), 0) + return np.asarray(r_, float), np.asarray(d_, float) + + +def darkcomet_pix(w, cx, cy, ra, dec): + """Detector pixels of RA and Dec (deg), inverting darkcomet_sky by Newton steps from its linear part.""" + gx, gy = (np.asarray(v, float) for v in w.all_world2pix(ra, dec, 0)) + M = np.array([[cx[0], cx[1]], [cy[0], cy[1]]]) + x, y = np.linalg.solve(M, np.vstack([gx - cx[2], gy - cy[2]])) + if len(cx) > 3: + for _ in range(4): + fx, fy = darkcomet_poly(cx, x, y) - gx, darkcomet_poly(cy, x, y) - gy + u, v = x / 1000.0, y / 1000.0 + a11 = cx[0] + (2 * cx[3] * u + cx[4] * v) / 1000.0 + a12 = cx[1] + (cx[4] * u + 2 * cx[5] * v) / 1000.0 + a21 = cy[0] + (2 * cy[3] * u + cy[4] * v) / 1000.0 + a22 = cy[1] + (cy[4] * u + 2 * cy[5] * v) / 1000.0 + det = a11 * a22 - a12 * a21 + x, y = x - (a22 * fx - a12 * fy) / det, y - (-a21 * fx + a11 * fy) / det + return x, y + + +def darkcomet_trail(dx, dy, sigma): + """A trail of length (dx, dy) pixels blurred by a Gaussian of sigma pixels, normalised to unit sum.""" + from scipy.ndimage import gaussian_filter + L = math.hypot(dx, dy) + half = int(math.ceil(L / 2 + 4 * sigma)) + 1 + K = np.zeros((2 * half + 1, 2 * half + 1)) + for s_ in np.linspace(-0.5, 0.5, max(int(L * 4), 2)): + x_, y_ = half + s_ * dx, half + s_ * dy + i0, j0 = int(math.floor(y_)), int(math.floor(x_)) + fy, fx = y_ - i0, x_ - j0 + K[i0, j0] += (1 - fy) * (1 - fx) + K[i0, j0 + 1] += (1 - fy) * fx + K[i0 + 1, j0] += fy * (1 - fx) + K[i0 + 1, j0 + 1] += fy * fx + K = gaussian_filter(K, sigma) + return K / K.sum() + + +def darkcomet_census_ccd(job): + """One CCD of one frame for darkcomet_census: background, Gaia registration, seeing and zero point, the injected tracks added, sources found with a point-source filter and with a filter trailed by the object's motion, and that filter's S/N at the requested positions.""" + quiet_warnings() + from astropy.io import fits + from astropy.wcs import WCS + from scipy.ndimage import binary_dilation, gaussian_filter, map_coordinates, maximum_filter, median_filter, zoom + from scipy.signal import fftconvolve + fi, ext, do_inject = job + St = darkcomet_CENSUS + fr = St["frames"][fi] + with fits.open(fr["path"]) as h: + hd = h[ext].header + img = np.array(h[ext].data, dtype=np.float32) + w = WCS(hd) + ny, nx = img.shape + bad = ~np.isfinite(img) | (img > 0.9 * float(hd.get("SATURATE", 65000))) + img = np.where(np.isfinite(img), img, 0.0).astype(np.float32) + B = np.array([[np.median(img[y:y + 64, x:x + 64]) for x in range(0, nx, 64)] for y in range(0, ny, 64)], dtype=np.float32) + sub = img - zoom(B, (ny / B.shape[0], nx / B.shape[1]), order=1)[:ny, :nx] + bad = binary_dilation(bad, iterations=4) + edge = np.zeros_like(bad) + edge[:12], edge[-12:], edge[:, :12], edge[:, -12:] = True, True, True, True + good = ~(bad | edge) + sig = 1.4826 * float(np.median(np.abs(sub[good][::53]))) + out = dict(fi=fi, ext=ext, ok=False) + fA = gaussian_filter(sub, 2.0) + sA = 1.4826 * float(np.median(np.abs(fA[good][::53]))) + reg = darkcomet_register(np.where(good, fA, 0.0), np.where(good, sub, 0.0), w, St["g_ra"], St["g_dec"], 25 * sA) + if reg is None: + return out + cx, cy, rms, pairs = reg + scale = math.sqrt(abs(np.linalg.det(np.array([[cx[0], cx[1]], [cy[0], cy[1]]]) @ w.pixel_scale_matrix[:2, :2]))) * 3600 + # seeing and zero point from Gaia stars: second moments and Gaussian-profile fluxes + sizes, zps = [], [] + for x_, y_, _, _, gi in pairs: + i0, j0 = int(round(y_)), int(round(x_)) + if i0 < 8 or j0 < 8 or i0 > ny - 9 or j0 > nx - 9 or not good[i0, j0]: + continue + st = sub[i0 - 7:i0 + 8, j0 - 7:j0 + 8].astype(float) + if st.max() < 20 * sig or st.max() > 0.5 * float(hd.get("SATURATE", 65000)): + continue + yy, xx = np.indices(st.shape) - 7.0 + wt = np.clip(st, 0, None) + mx, my = (wt * xx).sum() / wt.sum(), (wt * yy).sum() / wt.sum() + sizes.append(math.sqrt(max(((wt * ((xx - mx) ** 2 + (yy - my) ** 2)).sum() / wt.sum()) / 2, 0.25))) + zps.append((float(St["g_mag"][int(gi)]), st)) + if len(sizes) < 3: + return out + # second moments within a 15-pixel box underestimate the Gaussian sigma; corrected by the same box on a Gaussian + s_box = float(np.median(sizes)) + grid_ = np.indices((15, 15)) - 7.0 + for s_try in np.arange(0.8, 6.0, 0.02): + g_ = np.exp(-0.5 * (grid_[0] ** 2 + grid_[1] ** 2) / s_try ** 2) + if math.sqrt((g_ * (grid_[0] ** 2 + grid_[1] ** 2)).sum() / g_.sum() / 2) >= s_box: + break + psf = float(s_try) + P = np.exp(-0.5 * (grid_[0] ** 2 + grid_[1] ** 2) / psf ** 2) + P /= P.sum() + zp = [g + 2.5 * math.log10(max((P * st).sum() / (P * P).sum(), 1e-9)) for g, st in zps if (P * st).sum() > 0 and 15 < g < 20.5] + if len(zp) < 3: + return out + zp = float(np.median(zp)) + t_start, t_end = fr["t_mid"] - fr["exptime"] / 7200.0, fr["t_mid"] + fr["exptime"] / 7200.0 + + def at(ra0, dec0, ve, vn, t): + return ra0 + ve * t / 3600.0 / math.cos(math.radians(dec0)), dec0 + vn * t / 3600.0 + injected = [] + if do_inject: + rng = np.random.default_rng(St["seed"] + 1000 * fi + ext) + for k, (ra0, dec0, ve, vn, dm) in enumerate(St["inject"]): + ra1, de1 = at(ra0, dec0, ve, vn, t_start) + ra2, de2 = at(ra0, dec0, ve, vn, t_end) + x1, y1 = darkcomet_pix(w, cx, cy, np.array([ra1, ra2]), np.array([de1, de2])) + if not (20 < x1.min() and x1.max() < nx - 20 and 20 < y1.min() and y1.max() < ny - 20): + continue + F = 10 ** (0.4 * (zp - St["mag"][fr["band"]] - dm)) + K = darkcomet_trail(x1[1] - x1[0], y1[1] - y1[0], psf) * F + hk = K.shape[0] // 2 + xc, yc = int(round(0.5 * (x1[0] + x1[1]))), int(round(0.5 * (y1[0] + y1[1]))) + if hk < yc < ny - hk - 1 and hk < xc < nx - hk - 1: + gain = float(hd.get("GAIN", 1.6)) + sub[yc - hk:yc + hk + 1, xc - hk:xc + hk + 1] += (K + rng.normal(0, 1, K.shape) * np.sqrt(np.clip(K, 0, None) / gain)).astype(np.float32) + injected.append(k) + # the object's motion over this exposure in this CCD's pixels + ra_c, de_c = darkcomet_sky(w, cx, cy, np.array([nx / 2.0]), np.array([ny / 2.0])) + ve, vn = St["motion"] + q1 = at(ra_c[0], de_c[0], ve, vn, -fr["exptime"] / 7200.0) + q2 = at(ra_c[0], de_c[0], ve, vn, fr["exptime"] / 7200.0) + mx_, my_ = darkcomet_pix(w, cx, cy, np.array([q1[0], q2[0]]), np.array([q1[1], q2[1]])) + KT = darkcomet_trail(mx_[1] - mx_[0], my_[1] - my_[0], psf) + norm = math.sqrt((KT ** 2).sum()) + # cosmic rays: pixels far above the median of their 5x5 neighbourhood, replaced by it + med5 = median_filter(sub, size=5) + cr = binary_dilation((sub > 4 * sig) & (med5 < 0.2 * sub), iterations=1) + sub = np.where(cr, med5, sub) + fA = gaussian_filter(sub, 2.0) + zA = fA / sA + fB = fftconvolve(sub, (KT / norm)[::-1, ::-1], mode="same").astype(np.float32) + sB = 1.4826 * float(np.median(np.abs(fB[good][::53]))) + zB = fB / sB + + def peaks(z, size, flux): + """Every local maximum above the catalogue floor: RA, Dec, S/N and magnitude arrays.""" + pk = np.argwhere((z == maximum_filter(z, size=size)) & (z > St["floor"]) & good) + y0, x0 = pk[:, 0], pk[:, 1] + + def refine(a, b, c): + dd = a - 2 * b + c + return np.where(dd != 0, 0.5 * (a - c) / np.where(dd != 0, dd, 1), 0.0) + xs = x0 + np.clip(refine(z[y0, x0 - 1], z[y0, x0], z[y0, x0 + 1]), -1, 1) + ys = y0 + np.clip(refine(z[y0 - 1, x0], z[y0, x0], z[y0 + 1, x0]), -1, 1) + r_, d_ = darkcomet_sky(w, cx, cy, xs, ys) + f_ = flux(y0, x0) + return dict(ra=r_, dec=d_, snr=z[y0, x0].astype(np.float32), + mag=np.where(f_ > 0, zp - 2.5 * np.log10(np.clip(f_, 1e-9, None)), np.nan).astype(np.float32)) + # fluxes: a point source of flux F peaks at F / (2 pi (psf^2 + 4)) in the 2-pixel Gaussian filter, and a trail matching the kernel + # gives F times the kernel's norm in the trailed filter + nA = 2 * math.pi * (psf ** 2 + 4.0) + corners = darkcomet_sky(w, cx, cy, np.array([12.0, nx - 13.0, nx - 13.0, 12.0]), np.array([12.0, 12.0, ny - 13.0, ny - 13.0])) + out.update(ok=True, zp=zp, psf=psf, fwhm_arcsec=2.3548 * psf * scale, scale=scale, wcs_rms_arcsec=rms * scale, n_gaia=int(len(pairs)), + sigma=sig, n_cosmic=int(cr.sum()), injected=injected, corners=[corners[0].tolist(), corners[1].tolist()], + A=peaks(zA, 7, lambda y0, x0: fA[y0, x0] * nA), B=peaks(zB, 9, lambda y0, x0: fB[y0, x0] / norm)) + # trailed-filter S/N at requested positions on this CCD + pts = St["points"].get(fi) + if pts is not None: + px, py = darkcomet_pix(w, cx, cy, pts[:, 0], pts[:, 1]) + inside = np.nonzero((px > 14) & (px < nx - 15) & (py > 14) & (py < ny - 15))[0] + if len(inside): + okp = good[np.round(py[inside]).astype(int), np.round(px[inside]).astype(int)] + inside = inside[okp] + out["samples"] = dict(idx=inside.tolist(), z=map_coordinates(zB, [py[inside], px[inside]], order=1).astype(float).tolist()) + return out + + +def darkcomet_link(t, x, y, f, tol=0.6, min_n=6, vmin=4.0, vmax=80.0, dt_min=0.3, dt_max=0.7): + """Straight tracks through detections at times t (h) and positions x, y (arcsec) in frames f: each pair of detections dt_min to dt_max apart with a speed between vmin and vmax arcsec/h seeds a track kept when min_n frames have a detection within tol of it, refitted once; member indices of each distinct track.""" + from scipy.spatial import cKDTree + fr = sorted(set(f.tolist())) + tf = {k: float(t[f == k][0]) for k in fr} + idx = {k: np.nonzero(f == k)[0] for k in fr} + tree = {k: cKDTree(np.column_stack([x[idx[k]], y[idx[k]]])) for k in fr if len(idx[k])} + found, seen = [], set() + + def gather(x0, y0, vx, vy, t0_, need=0): + """Detections within tol of each straight track, frame by frame, for arrays of tracks: member index lists of the tracks with at least need.""" + hits = [] + for k in tree: + d, m = tree[k].query(np.column_stack([x0 + vx * (tf[k] - t0_), y0 + vy * (tf[k] - t0_)]), distance_upper_bound=tol) + ok_ = np.isfinite(d) + hits.append((ok_, np.where(ok_, idx[k][np.minimum(m, len(idx[k]) - 1)], -1))) + count = np.sum([h_[0] for h_ in hits], axis=0) + return {int(s_): [int(h_[1][s_]) for h_ in hits if h_[0][s_]] for s_ in np.nonzero(count >= need)[0]} + for a in fr: + for b in fr: + dt = tf[b] - tf[a] + if not dt_min <= dt <= dt_max or a not in tree or b not in tree: + continue + near = tree[b].query_ball_point(np.column_stack([x[idx[a]], y[idx[a]]]), vmax * dt) + ii = np.array([i for i, js in zip(idx[a], near) for _ in js], int) + jj = np.array([idx[b][j] for js in near for j in js], int) + if not len(ii): + continue + vx, vy = (x[jj] - x[ii]) / dt, (y[jj] - y[ii]) / dt + fast = np.hypot(vx, vy) >= vmin + ii, vx, vy = ii[fast], vx[fast], vy[fast] + for mem in gather(x[ii], y[ii], vx, vy, tf[a], need=min_n).values(): + m_ = np.array(mem) + px_, py_ = np.polyfit(t[m_], x[m_], 1), np.polyfit(t[m_], y[m_], 1) + mem = gather(np.array([px_[1]]), np.array([py_[1]]), np.array([px_[0]]), np.array([py_[0]]), 0.0).get(0, []) + if len(mem) < min_n: + continue + key = tuple(sorted(mem)) + if key not in seen: + seen.add(key) + found.append(key) + # a track whose members are mostly another's is the same object + found.sort(key=len, reverse=True) + out = [] + for key in found: + s_ = set(key) + if all(len(s_ & set(o)) < 0.5 * len(s_) for o in out): + out.append(key) + return [list(o) for o in out] + + +def darkcomet_census(desig, night, workers=6, inject=300, seed=20070914, thresh=5.0, floor=3.0, only=None, reuse=False): + """Every moving source in one night's CFHT MegaCam frames of at least 300 s: whole frames registered CCD by CCD to Gaia DR3, sources found with a point-source filter and with a filter trailed by the object's motion, those recurring at one position removed, the rest linked into straight tracks of six or more frames; copies of the object injected along random tracks near its motion measure the recovery; the trailed filter's S/N along the positions locus_.json allows, at the gravity-only position and along shifted control loci; into census_.json.""" + quiet_warnings() + from multiprocessing import Pool + from astropy.io import fits + from astropy.time import Time + d = darkcomet_dir(desig) + tag = night.replace("-", "") + full = os.path.join(d, "cfht_" + tag, "full") + rows = [r for r in json.load(open(os.path.join(d, "images.json"))) if r["Telescope/Instrument"] == "CFHT/MegaCam" + and Time(float(r["MJD"]), format="mjd").iso[:10] == night and float(r["Exptime"]) >= 300] + names = sorted({r["Image"] for r in rows}) + frames = [] + for name in names: + path = os.path.join(full, name + ".fits.fz") + if not os.path.exists(path): + print("%s: missing, skipped" % path) + continue + h0 = fits.getheader(path, 0) + t_mid = Time("%sT%s" % (h0["DATE-OBS"], h0["UTC-OBS"]), scale="utc").mjd + h0["EXPTIME"] / 2.0 / 86400.0 + frames.append(dict(image=name, path=path, mjd_mid=float(t_mid), exptime=float(h0["EXPTIME"]), band=h0["FILTER"][0].lower(), + n_ext=len(fits.open(path)))) + t_ref = float(np.mean([f_["mjd_mid"] for f_ in frames])) + for f_ in frames: + f_["t_mid"] = (f_["mjd_mid"] - t_ref) * 24.0 + found = [x for x in json.load(open(os.path.join(d, "precovery_%s.json" % tag))) if x["found"]] + tt = np.array([(x["mjd_mid"] - t_ref) * 24.0 for x in found]) + ra_o, de_o = np.array([x["ra"] for x in found]), np.array([x["dec"] for x in found]) + ra0, de0 = float(np.mean(ra_o)), float(np.mean(de_o)) + cos0 = math.cos(math.radians(de0)) + ve = float(np.polyfit(tt, (ra_o - ra0) * cos0 * 3600, 1)[0]) + vn = float(np.polyfit(tt, (de_o - de0) * 3600, 1)[0]) + gaia = core.datalab("SELECT ra, dec, pmra, pmdec, phot_g_mean_mag FROM gaia_dr3.gaia_source WHERE q3c_radial_query(ra, dec, %.5f, %.5f, 0.85) = 't' " + "AND phot_g_mean_mag < 21" % (ra0, de0)) + dt_y = Time(t_ref, format="mjd").jyear - 2016.0 + # stars without a proper motion keep their catalogue position + pm = {k: np.nan_to_num(np.array([num(g[k]) if num(g[k]) is not None else 0.0 for g in gaia], float)) for k in ("pmra", "pmdec")} + g_ra = np.array([float(g["ra"]) for g in gaia]) + pm["pmra"] / 3.6e6 * dt_y / np.cos(np.radians([float(g["dec"]) for g in gaia])) + g_dec = np.array([float(g["dec"]) for g in gaia]) + pm["pmdec"] / 3.6e6 * dt_y + g_mag = np.array([float(g["phot_g_mean_mag"]) for g in gaia]) + loc = json.load(open(os.path.join(d, "locus_%s.json" % tag))) + lf = {x["image"]: x for x in loc["frames"] if x["found"]} + # positions sampled with the trailed filter: the locus, the two orbits, the detection, a map around the gravity-only orbit, control loci + grid = np.array(loc["grid"]) + off_e, off_n = np.meshgrid(np.arange(-24.0, 24.01, 0.5), np.arange(-24.0, 24.01, 0.5)) + shifts = [(e, n) for e in np.arange(-150.0, 150.1, 10.0) for n in np.arange(-150.0, 150.1, 6.0) if math.hypot(e, n) > 30.0] + points, layout = {}, None + for fi, f_ in enumerate(frames): + x = lf.get(f_["image"]) + if x is None: + continue + L = np.array(x["locus"]) + g_ = np.array(x["grav"]) + det = next(y for y in found if y["image"] == f_["image"]) + cosd = math.cos(math.radians(g_[1])) + mp = np.column_stack([g_[0] + off_e.ravel() / 3600 / cosd, g_[1] + off_n.ravel() / 3600]) + ctl = np.vstack([np.column_stack([L[:, 0] + e / 3600 / cosd, L[:, 1] + n / 3600]) for e, n in shifts]) + points[fi] = np.vstack([L, [g_], [x["accel"]], [[det["ra"], det["dec"]]], mp, ctl]) + layout = dict(locus=len(L), map=len(mp), map_shape=list(off_e.shape), shifts=len(shifts)) + # the object's brightness in each band from its own frames, before anything is injected + rng = np.random.default_rng(seed) + state = dict(frames=frames, g_ra=g_ra, g_dec=g_dec, g_mag=g_mag, inject=[], mag={}, seed=seed, motion=(ve, vn), floor=floor, points={}) + darkcomet_census_init(state) + own = [] + for fi, f_ in enumerate(frames): + y = next((y for y in found if y["image"] == f_["image"]), None) + if y is not None: + own.append((fi, y)) + jobs = [(fi, int(y["ext"]), False) for fi, y in own] + with Pool(min(workers, len(jobs)), initializer=darkcomet_census_init, initargs=(state,)) as pool: + res0 = pool.map(darkcomet_census_ccd, jobs) + obj_mag = {} + for (fi, y), r in zip(own, res0): + if not r["ok"]: + continue + ra_, de_ = r["B"]["ra"], r["B"]["dec"] + if not len(ra_): + continue + sep = np.hypot((ra_ - y["ra"]) * math.cos(math.radians(y["dec"])), de_ - y["dec"]) * 3600 + j = int(np.argmin(sep)) + if sep[j] < 1.0 and np.isfinite(r["B"]["mag"][j]): + obj_mag.setdefault(frames[fi]["band"], []).append(dict(image=frames[fi]["image"], mag=float(r["B"]["mag"][j]), snr=float(r["B"]["snr"][j]), + sep=float(sep[j]), zp=r["zp"], fwhm=r["fwhm_arcsec"], wcs_rms=r["wcs_rms_arcsec"])) + mag = {b: float(np.median([v["mag"] for v in vs])) for b, vs in obj_mag.items()} + # injected tracks: anywhere on the reference frame's CCDs at least 300 arcsec from the object, motion within 10 arcsec/h and 20 deg of its own + ref = frames[len(frames) // 2] + rate0, pa0 = math.hypot(ve, vn), math.degrees(math.atan2(ve, vn)) + inj = [] + with fits.open(ref["path"]) as h: + exts = [k for k in range(1, len(h)) if h[k].header.get("NAXIS1") and (only is None or k in only)] + from astropy.wcs import WCS + wcs_ref = {k: WCS(h[k].header) for k in exts} + while len(inj) < inject: + k = int(rng.choice(exts)) + ra_, de_ = wcs_ref[k].all_pix2world(rng.uniform(60, 1990), rng.uniform(60, 4550), 0) + if math.hypot((float(ra_) - ra0) * cos0, float(de_) - de0) * 3600 < 300: + continue + rate, pa = rate0 + rng.uniform(-10, 10), pa0 + rng.uniform(-20, 20) + inj.append((float(ra_), float(de_), rate * math.sin(math.radians(pa)), rate * math.cos(math.radians(pa)), float(rng.uniform(-0.5, 2.0)))) + state.update(inject=inj, mag=mag, points=points) + jobs = [(fi, k, True) for fi, f_ in enumerate(frames) for k in range(1, f_["n_ext"]) if only is None or k in only] + print("%d frames, %d CCD images, %d Gaia stars; the object at %s; %d injected tracks; %d workers" % ( + len(frames), len(jobs), len(g_ra), ", ".join("%s %.2f" % (b, m) for b, m in sorted(mag.items())), len(inj), workers), flush=True) + # the CCD results, kept so that the analysis below can be repeated without measuring the frames again + import pickle + cache = os.path.join(full, "census_ccd_%d_%d_%s.pkl" % (inject, seed, "all" if only is None else "-".join(str(k) for k in sorted(only)))) + if reuse and os.path.exists(cache): + res = pickle.load(open(cache, "rb")) + else: + with Pool(workers, initializer=darkcomet_census_init, initargs=(state,)) as pool: + res = list(pool.imap_unordered(darkcomet_census_ccd, jobs, chunksize=2)) + pickle.dump(res, open(cache, "wb")) + ok = [r for r in res if r["ok"]] + print("%d of %d CCD images registered; WCS rms median %.3f arcsec, FWHM %.2f arcsec" % ( + len(ok), len(res), float(np.median([r["wcs_rms_arcsec"] for r in ok])), float(np.median([r["fwhm_arcsec"] for r in ok]))), flush=True) + summary = dict(desig=desig, night=night, t_ref_mjd=t_ref, frames=[{k: v for k, v in f_.items() if k != "path"} for f_ in frames], + n_ccd=len(res), n_registered=len(ok), wcs_rms_median=float(np.median([r["wcs_rms_arcsec"] for r in ok])), + fwhm_median=float(np.median([r["fwhm_arcsec"] for r in ok])), object_motion=dict(rate=rate0, pa=pa0 % 360), + object_mag=mag, object_frames=obj_mag, threshold=thresh) + # sources: static when three other frames have anything above the floor within 1.2 arcsec; tracks through the rest, for each filter + from scipy.spatial import cKDTree + cat, statics = {}, [] + for key in ("A", "B"): + T = np.concatenate([np.full(len(r[key]["ra"]), frames[r["fi"]]["t_mid"]) for r in ok]) + X = np.concatenate([(r[key]["ra"] - ra0) * cos0 * 3600 for r in ok]) + Y = np.concatenate([(r[key]["dec"] - de0) * 3600 for r in ok]) + F = np.concatenate([np.full(len(r[key]["ra"]), r["fi"]) for r in ok]).astype(int) + S = np.concatenate([r[key]["snr"] for r in ok]).astype(float) + M = np.concatenate([r[key]["mag"] for r in ok]).astype(float) + cand = np.nonzero(S >= thresh)[0] + hits = np.zeros(len(cand), int) + for k in sorted(set(F.tolist())): + sk = np.nonzero(F == k)[0] + d_, _ = cKDTree(np.column_stack([X[sk], Y[sk]])).query(np.column_stack([X[cand], Y[cand]]), distance_upper_bound=1.2) + hits += np.isfinite(d_) & (F[cand] != k) + static = hits >= 3 + bright = cand[static & (S[cand] > 50)] + near_star = np.zeros(len(cand), bool) + if len(bright): + d_, _ = cKDTree(np.column_stack([X[bright], Y[bright]])).query(np.column_stack([X[cand], Y[cand]]), distance_upper_bound=4.0) + near_star = np.isfinite(d_) & ~static + cat[key] = dict(X=X, Y=Y, F=F, S=S, M=M, trans=cand[~static & ~near_star]) + statics.append(np.column_stack([X[cand[static]], Y[cand[static]], S[cand[static]]])) + summary["filter_" + key] = dict(n_catalogued=int(len(X)), n_above=int(len(cand)), n_static=int(static.sum()), n_transient=int(len(cat[key]["trans"]))) + allX = np.concatenate([cat[k]["X"] for k in cat]) + allY = np.concatenate([cat[k]["Y"] for k in cat]) + allF = np.concatenate([cat[k]["F"] for k in cat]) + ftree = {k: cKDTree(np.column_stack([allX[allF == k], allY[allF == k]])) for k in sorted(set(allF.tolist()))} + # each frame's CCDs as quadrilaterals in arcsec from the object's mean position, inside the masked border + quads = {} + for r in ok: + cr_, cd_ = np.array(r["corners"][0]), np.array(r["corners"][1]) + quads.setdefault(r["fi"], []).append(np.column_stack([(cr_ - ra0) * cos0 * 3600, (cd_ - de0) * 3600])) + + def covered(fi, px, py): + for q_ in quads.get(fi, []): + c_ = [(q_[(i + 1) % 4, 0] - q_[i, 0]) * (py - q_[i, 1]) - (q_[(i + 1) % 4, 1] - q_[i, 1]) * (px - q_[i, 0]) for i in range(4)] + if all(v >= 0 for v in c_) or all(v <= 0 for v in c_): + return True + return False + + def support(x0, y0, ve_, vn_, tmap): + """Frames whose CCDs contain a straight track and those of them with a catalogued source within 0.6 arcsec of it.""" + cov, sup = 0, 0 + for k, tr_ in ftree.items(): + p_ = [x0 + ve_ * tmap[k], y0 + vn_ * tmap[k]] + if covered(k, *p_): + cov += 1 + sup += int(np.isfinite(tr_.query(p_, distance_upper_bound=0.6)[0])) + return cov, sup + + def tracks_of(key, tmap): + """Validated tracks of one filter with frame times tmap: rms within 0.3 arcsec and a source in 60 per cent of the frames covering them.""" + c = cat[key] + tr_idx = c["trans"] + tt = np.array([tmap[k] for k in c["F"]]) + out_, rejected = [], 0 + for mem in darkcomet_link(tt[tr_idx], c["X"][tr_idx], c["Y"][tr_idx], c["F"][tr_idx]): + m_ = tr_idx[np.array(mem)] + px_, py_ = np.polyfit(tt[m_], c["X"][m_], 1), np.polyfit(tt[m_], c["Y"][m_], 1) + rms_ = float(np.sqrt(np.mean(np.hypot(c["X"][m_] - np.polyval(px_, tt[m_]), c["Y"][m_] - np.polyval(py_, tt[m_])) ** 2))) + cov, sup = support(px_[1], py_[1], px_[0], py_[0], tmap) + if rms_ > 0.3 or sup < 0.6 * cov: + rejected += 1 + continue + out_.append(dict(x=float(px_[1]), y=float(py_[1]), ve=float(px_[0]), vn=float(py_[0]), n=int(len(m_)), rms=rms_, coverage=cov, support=sup, + snr=float(np.median(c["S"][m_])), mag=float(np.nanmedian(c["M"][m_])) if np.any(np.isfinite(c["M"][m_])) else None, + frames=sorted({int(v) for v in c["F"][m_]}), filter=key)) + return out_, rejected + tmap = {fi: frames[fi]["t_mid"] for fi in range(len(frames))} + # frame times shuffled: no real source moves in a straight line through them, so what links then is chance + perm = np.random.default_rng(seed + 7).permutation(len(frames)) + tscr = {fi: frames[int(perm[fi])]["t_mid"] for fi in range(len(frames))} + merged, chance = [], {} + for key in ("B", "A"): + trs, rej = tracks_of(key, tmap) + scr, _ = tracks_of(key, tscr) + chance[key] = len(scr) + summary["filter_" + key].update(n_tracks=len(trs), n_rejected=rej, n_shuffled_times=len(scr)) + print("filter %s: %d sources above %.0f sigma, %d above %.0f, %d of them transient; %d tracks kept, %d rejected; %d with shuffled frame times" + % (key, summary["filter_" + key]["n_catalogued"], floor, summary["filter_" + key]["n_above"], thresh, summary["filter_" + key]["n_transient"], + len(trs), rej, len(scr)), flush=True) + for tr in trs: + if all(math.hypot(tr["x"] - o["x"], tr["y"] - o["y"]) > 2.0 or math.hypot(tr["ve"] - o["ve"], tr["vn"] - o["vn"]) > 3.0 for o in merged): + merged.append(tr) + t_obj = (np.array([x["mjd_mid"] for x in found]) - t_ref) * 24.0 + x_obj, y_obj = (ra_o - ra0) * cos0 * 3600, (de_o - de0) * 3600 + for tr in merged: + tr["rate"], tr["pa"] = math.hypot(tr["ve"], tr["vn"]), math.degrees(math.atan2(tr["ve"], tr["vn"])) % 360 + tr["is_object"] = bool(np.median(np.hypot(tr["x"] + tr["ve"] * t_obj - x_obj, tr["y"] + tr["vn"] * t_obj - y_obj)) < 1.5) + tr["injected"] = None + for k, (ra_, de_, ve_, vn_, dm) in enumerate(inj): + if math.hypot(tr["x"] - (ra_ - ra0) * cos0 * 3600, tr["y"] - (de_ - de0) * 3600) < 2.0 and math.hypot(tr["ve"] - ve_, tr["vn"] - vn_) < 3.0: + tr["injected"] = k + break + real = [tr for tr in merged if tr["injected"] is None and not tr["is_object"]] + rec = {tr["injected"] for tr in merged if tr["injected"] is not None} + # an injected track counts only where the frames covered it: six frames with twenty catalogued sources within 20 arcsec of its path + placed = [k for k, (ra_, de_, ve_, vn_, dm) in enumerate(inj) if support((ra_ - ra0) * cos0 * 3600, (de_ - de0) * 3600, ve_, vn_, tmap)[0] >= 6] + dms = np.array([x[4] for x in inj]) + bins = [(-0.5, 0.0), (0.0, 0.5), (0.5, 1.0), (1.0, 1.5), (1.5, 2.0)] + summary["injection"] = dict(n=len(inj), n_covered=len(placed), recovered=len(rec & set(placed)), + by_dm=[dict(dm=list(b), n=int(sum(1 for k in placed if b[0] <= dms[k] < b[1])), + recovered=int(sum(1 for k in rec & set(placed) if b[0] <= dms[k] < b[1]))) for b in bins]) + summary["object_recovered"] = [dict(n=tr["n"], filter=tr["filter"], rate=tr["rate"], pa=tr["pa"], coverage=tr["coverage"], support=tr["support"]) + for tr in merged if tr["is_object"]] + summary["chance_tracks"] = chance + # known asteroids in the field from SkyBoT at the reference time + q = {"-ep": "%.5f" % (t_ref + 2400000.5), "-ra": "%.5f" % ra0, "-dec": "%.5f" % de0, "-rd": "0.85", "-mime": "json", "-output": "all", "-loc": "568", + "-filter": "0", "-objFilter": "100", "-refsys": "EQJ2000", "-from": "setitools"} + known = [] + for r in json.loads(core.get(darkcomet_SKYBOT + "?" + urllib.parse.urlencode(q), timeout=300)): + h_ = [float(v) for v in r["RA (hms)"].split()] + g_ = r["DEC (dms)"].split() + sg = -1.0 if g_[0].startswith("-") else 1.0 + known.append(dict(name=r["Name"], V=float(r["VMag (mag)"]), x=(15.0 * (h_[0] + h_[1] / 60 + h_[2] / 3600) - ra0) * cos0 * 3600, + y=(sg * (abs(float(g_[0])) + float(g_[1]) / 60 + float(g_[2]) / 3600) - de0) * 3600, + ve=float(r["dRA (arcsec/h)"]), vn=float(r["dDEC (arcsec/h)"]), err=float(r.get("Err (arcsec)") or 0))) + for tr in real: + best = min(known, key=lambda o: math.hypot(tr["x"] - o["x"], tr["y"] - o["y"])) if known else None + if best and math.hypot(tr["x"] - best["x"], tr["y"] - best["y"]) < max(15.0, 3 * best["err"]) and math.hypot(tr["ve"] - best["ve"], tr["vn"] - best["vn"]) < 5.0: + tr["known"] = dict(name=best["name"], V=best["V"]) + # known asteroids the frames covered, and how many of them the census found + known_cov = [o for o in known if o["err"] < 10 and support(o["x"], o["y"], o["ve"], o["vn"], tmap)[0] >= 6] + # the area of the reference frame's registered CCDs, in square degrees + fref = frames.index(ref) + reg_ref = {r["ext"] for r in ok if r["fi"] == fref} + summary["registered"] = sorted([int(r["fi"]), int(r["ext"])] for r in ok) + area = 0.0 + with fits.open(ref["path"]) as h: + for k in exts: + if k in reg_ref: + area += h[k].header["NAXIS1"] * h[k].header["NAXIS2"] * abs(np.linalg.det(wcs_ref[k].pixel_scale_matrix[:2, :2])) + rates, pas = np.array([tr["rate"] for tr in real]), (np.array([tr["pa"] for tr in real]) - pa0 + 180) % 360 - 180 + frac = None + if len(real) >= 5: + frac = (math.exp(-0.5 * ((rate0 - rates.mean()) / rates.std(ddof=1)) ** 2) / (rates.std(ddof=1) * math.sqrt(2 * math.pi)) * 1.0 + * math.exp(-0.5 * (pas.mean() / pas.std(ddof=1)) ** 2) / (pas.std(ddof=1) * math.sqrt(2 * math.pi)) * 2.0) + dens = len(real) / area + summary["movers"] = dict(area_deg2=area, n=len(real), n_known=sum(1 for tr in real if tr.get("known")), n_known_skybot=len(known), + n_known_covered=len(known_cov), known_covered=[dict(name=o["name"], V=o["V"]) for o in known_cov], + density_per_deg2=dens, rate_mean=float(rates.mean()) if len(real) else None, rate_sd=float(rates.std(ddof=1)) if len(real) > 1 else None, + pa_offset_mean=float(pas.mean()) if len(real) else None, pa_offset_sd=float(pas.std(ddof=1)) if len(real) > 1 else None, + within_5_10=int(np.sum((np.abs(rates - rate0) < 5) & (np.abs(pas) < 10))), within_10_20=int(np.sum((np.abs(rates - rate0) < 10) & (np.abs(pas) < 20))), + motion_fraction=frac, expected_30arcsec=(dens * math.pi * (30 / 3600) ** 2 * frac) if frac is not None else None, + control_discs=int(area / (math.pi * (30 / 3600) ** 2)), tracks=real) + print("%d real movers over %.2f deg^2 (%.0f per deg^2), %d of them known to SkyBoT, which lists %d in the field, %d on the frames; %d within 5 arcsec/h and 10 deg " + "of the object's motion, %d within 10 and 20" % (len(real), area, dens, summary["movers"]["n_known"], len(known), len(known_cov), + summary["movers"]["within_5_10"], summary["movers"]["within_10_20"])) + if frac is not None: + print("their motions %.1f +- %.1f arcsec/h, %+.0f +- %.0f deg from the object's; expected unrelated movers within 30 arcsec moving within 0.5 arcsec/h and 1 deg: %.1e" + % (rates.mean(), rates.std(ddof=1), pas.mean(), pas.std(ddof=1), summary["movers"]["expected_30arcsec"])) + print("the object recovered: %s; injected copies on the frames recovered: %s" % (summary["object_recovered"], ", ".join( + "dm %+.1f..%+.1f %d/%d" % (b["dm"][0], b["dm"][1], b["recovered"], b["n"]) for b in summary["injection"]["by_dm"]))) + json.dump(summary, open(os.path.join(d, "census_%s.json" % tag), "w"), indent=1) + # the trailed filter along the locus, at the orbits, over a map around the gravity-only orbit and along control loci: in each frame the S/N + # over the median of the detection's in that band, a source's flux in units of the detection's, and its median over the frames, which a + # static source crossing one or two frames does not move + if layout: + # samples within 10 arcsec of a CCD's masked border left out, where the background model and the trailed filter are least reliable + Z = {} + for r in ok: + s_ = r.get("samples") + if s_: + z = Z.setdefault(r["fi"], np.full(len(points[r["fi"]]), np.nan)) + idx_ = np.array(s_["idx"], int) + P_ = np.column_stack([(points[r["fi"]][idx_, 0] - ra0) * cos0 * 3600, (points[r["fi"]][idx_, 1] - de0) * 3600]) + q_ = np.column_stack([(np.array(r["corners"][0]) - ra0) * cos0 * 3600, (np.array(r["corners"][1]) - de0) * 3600]) + dmin = np.full(len(P_), np.inf) + for i in range(4): + a_, b_ = q_[i], q_[(i + 1) % 4] + ab = b_ - a_ + tt = np.clip(((P_ - a_) @ ab) / (ab @ ab), 0, 1) + dmin = np.minimum(dmin, np.hypot(*(P_ - (a_ + tt[:, None] * ab)).T)) + keep_ = dmin > 10.0 + z[idx_[keep_]] = np.array(s_["z"])[keep_] + # positions within 4 + 3 (18 - G) arcsec of a Gaia star brighter than G = 18, or within 2.5 arcsec of a static source above S/N 20 + # (which covers bleed trails and bright galaxies), left out on the locus and the controls alike + gb = (g_mag < 18) & np.isfinite(g_ra) & np.isfinite(g_dec) + gtree = cKDTree(np.column_stack([(g_ra[gb] - ra0) * cos0 * 3600, (g_dec[gb] - de0) * 3600])) + st = np.vstack(statics) + btree = cKDTree(st[st[:, 2] > 20, :2]) + for fi, z in Z.items(): + P_ = np.column_stack([(points[fi][:, 0] - ra0) * cos0 * 3600, (points[fi][:, 1] - de0) * 3600]) + d_, j_ = gtree.query(P_, distance_upper_bound=40.0) + hit = np.isfinite(d_) + z[np.nonzero(hit)[0][d_[hit] < 4.0 + 3.0 * (18.0 - g_mag[gb][j_[hit]])]] = np.nan + d_, _ = btree.query(P_, distance_upper_bound=2.5) + z[np.isfinite(d_)] = np.nan + nl = layout["locus"] + fis = sorted(Z) + band_w = {} + for fi in fis: + band_w.setdefault(frames[fi]["band"], []).append(Z[fi][nl + 2]) + band_w = {b: float(np.nanmedian(v)) for b, v in band_w.items()} + R = np.array([Z[fi] / band_w[frames[fi]["band"]] for fi in fis]) + + def med(rows_): + """Median flux ratio at each position over the frames that measured it, and their number.""" + rr = R[:, rows_] + n_ = np.sum(np.isfinite(rr), axis=0) + return np.where(n_ >= 8, np.nanmedian(np.where(n_ >= 8, rr, 0.0), axis=0), np.nan), n_ + fl, nl_f = med(np.arange(nl)) + fg, ng = med(np.array([nl])) + fa, na = med(np.array([nl + 1])) + fd, nd = med(np.array([nl + 2])) + fm, nm = med(np.arange(nl + 3, nl + 3 + layout["map"])) + oe, on = off_e.ravel(), off_n.ravel() + de_off = float(np.mean([((y["ra"] - lf[frames[fi]["image"]]["grav"][0] + 180) % 360 - 180) * math.cos(math.radians(y["dec"])) * 3600 + for fi in fis for y in found if y["image"] == frames[fi]["image"]])) + dn_off = float(np.mean([(y["dec"] - lf[frames[fi]["image"]]["grav"][1]) * 3600 for fi in fis for y in found if y["image"] == frames[fi]["image"]])) + away = (np.hypot(oe - de_off, on - dn_off) > 3.0) & np.isfinite(fm) + j_away = int(np.nanargmax(np.where(away, fm, np.nan))) + i_pk = int(np.nanargmax(fl)) + off_pk = np.abs(grid - grid[i_pk]) > 1.5e-12 + j_lo = int(np.nanargmax(np.where(off_pk, fl, np.nan))) + best_null, at_zero, high = [], [], [] + i0 = list(grid).index(0.0) + f0 = fis[len(fis) // 2] + for s_i in range(layout["shifts"]): + base = nl + 3 + layout["map"] + s_i * nl + fc, nc = med(np.arange(base, base + nl)) + if np.sum(np.isfinite(fc)) > 0.8 * nl: + best_null.append(float(np.nanmax(fc))) + if np.isfinite(fc[i0]): + at_zero.append(float(fc[i0])) + if best_null[-1] >= 0.5: + # where the high value lies in the middle frame, and the brightest Gaia star within 120 arcsec of it + j = base + int(np.nanargmax(fc)) + px_, py_ = (points[f0][j, 0] - ra0) * cos0 * 3600, (points[f0][j, 1] - de0) * 3600 + near_g = np.hypot((g_ra - ra0) * cos0 * 3600 - px_, (g_dec - de0) * 3600 - py_) < 120 + high.append(dict(flux=best_null[-1], x=float(px_), y=float(py_), + brightest_g_within_120=float(np.nanmin(g_mag[near_g])) if near_g.any() else None)) + best_null, at_zero = np.array(best_null), np.array(at_zero) + sd0 = float(1.4826 * np.median(np.abs(at_zero - np.median(at_zero)))) if len(at_zero) else None + summary["locus"] = dict(frames=[frames[fi]["image"] for fi in fis], band_snr=band_w, grid=[float(v) for v in grid], + flux=[None if not np.isfinite(v) else float(v) for v in fl], n_frames=[int(v) for v in nl_f], + peak_A2=float(grid[i_pk]), peak_flux=float(fl[i_pk]), peak_frames=int(nl_f[i_pk]), + elsewhere_max=dict(A2=float(grid[j_lo]), flux=float(fl[j_lo]), frames=int(nl_f[j_lo])), + flux_grav=float(fg[0]), n_grav=int(ng[0]), flux_accel=float(fa[0]), flux_detection=float(fd[0]), n_detection=int(nd[0]), + null_sd=sd0, dm_limit_3sigma=float(-2.5 * math.log10(max(float(fg[0]) + 3 * sd0, 1e-3))) if sd0 else None, + map_max_away=dict(flux=float(fm[j_away]), offset=[float(oe[j_away]), float(on[j_away])], frames=int(nm[j_away])), + detection_offset_from_grav=[de_off, dn_off], + null_max=dict(n=len(best_null), percentiles=[float(v) for v in np.percentile(best_null, [50, 90, 99, 100])] if len(best_null) else None, + beyond_detection=int(np.sum(best_null >= 0.5 * float(fl[i_pk])))), + null_at_zero=dict(n=len(at_zero), median=float(np.median(at_zero)) if len(at_zero) else None, robust_sd=sd0), + null_high=sorted(high, key=lambda h: -h["flux"]), + map=dict(step=0.5, half=24.0, flux=[None if not np.isfinite(v) else round(float(v), 3) for v in fm], n_frames=[int(v) for v in nm])) + x_ = summary["locus"] + print("along the locus (%d frames; the detection's median S/N %s): flux %.2f of the detection's at A2 %+.2e (%d frames); elsewhere on the locus at most %.3f " + "(A2 %+.2e); at the gravity-only orbit %.3f (%d frames); the map's highest away from the detection %.3f at E %+.1f N %+.1f arcsec" + % (len(fis), ", ".join("%s %.1f" % kv for kv in sorted(band_w.items())), x_["peak_flux"], x_["peak_A2"], x_["peak_frames"], + x_["elsewhere_max"]["flux"], x_["elsewhere_max"]["A2"], x_["flux_grav"], x_["n_grav"], x_["map_max_away"]["flux"], *x_["map_max_away"]["offset"])) + if len(best_null): + print("control loci: %d; median flux at A2 = 0 %.3f, robust sd %.3f, so the gravity-only position is at least %.1f mag fainter than the detection (3 sigma); " + "highest flux along each: median %.3f, 99th percentile %.3f, maximum %.3f; %d reach half the detection's" + % (len(best_null), x_["null_at_zero"]["median"], sd0, x_["dm_limit_3sigma"], x_["null_max"]["percentiles"][0], x_["null_max"]["percentiles"][2], + x_["null_max"]["percentiles"][3], x_["null_max"]["beyond_detection"])) + json.dump(summary, open(os.path.join(d, "census_%s.json" % tag), "w"), indent=1) + return summary + + +def darkcomet_census_init(state): + darkcomet_CENSUS.update(state) + + +def darkcomet_ym(jd): + from astropy.time import Time + s = Time(jd, format="jd").datetime + return s.year, s.month + + +def darkcomet_record(desig): + """Record the thermal and orbit fits, A2 set against all absorbed sunlight at the fitted diameter.""" + d = darkcomet_dir(desig) + rf = json.load(open(os.path.join(d, "refit.json"))) + f = rf["fits"] + wa, g = f["with A2"], f["gravity only"] + loo = {k[8:]: v for k, v in f.items() if k.startswith("without")} + if os.path.exists(os.path.join(d, "thermal.json")): + th = json.load(open(os.path.join(d, "thermal.json"))) + size = "NEATM D %.2f +- %.2f km, eta %.2f, pV %.3f" % (th["D_km"], th["D_err"], th["eta"], th["pv"]) + else: + # no NEOWISE detection: diameter from H at S-type and dark albedos + sb = json.load(open(os.path.join(d, "sbdb.json"))) + H = float(next(p["value"] for p in sb["phys_par"] if p["name"] == "H")) + th = dict(D_km=1329.0 / math.sqrt(0.14) * 10 ** (-0.2 * H), pv=0.14) + size = "no NEOWISE detection; D %.2f km from H %.2f at pV 0.14 (%.2f km at pV 0.03)" % (th["D_km"], H, 1329.0 / math.sqrt(0.03) * 10 ** (-0.2 * H)) + D = th["D_km"] * 1000.0 + xi = {rho: abs(wa["A2"]) * nga_AU_D2 / (nga_S_OVER_C * nga_CR_MAX / (D * rho)) for rho in (500.0, 1000.0, 2000.0)} + # lead with the weighting that gives the drift least significance + weights = {k: v for k, v in f.items() if k in ("with A2", "with A2, Veres nights", "with A2, one position a night")} + lead_k = min(weights, key=lambda k: abs(weights[k]["A2"] / weights[k]["A2_sigma"])) + lead = weights[lead_k] + run = "darkcomet_" + desig.replace(" ", "_").lower() + core.record_search( + run, "Dark comet candidate", archive="MPC observations; JPL SBDB and Horizons; NEOWISE single-exposure sources (IRSA)", + release="JPL solution with A2 %.3e; %d observations" % (rf["a2_jpl"], wa["n_obs"]), selection=desig, + code=os.path.abspath(__file__), entry="darkcomet", n_targets=1, + params=dict(sigma_default=0.5, sigma_site=darkcomet_SIGMA, chi2_out=darkcomet_CHI2_OUT, g_r="r^-2", + neatm=dict(eps=darkcomet_EPS, G=darkcomet_G, p_ir_over_pv=darkcomet_PIR, floor=darkcomet_FLOOR)), + null_summary=dict(chi2_gravity=g["chi2"], dof_gravity=g["dof"], chi2_a2=wa["chi2"], dof_a2=wa["dof"]), + sensitivity="A2 from the refit and from each refit with one apparition left out; NEATM diameter from W1 and W2", + ledger="Yarkovsky sign test", + result="A2 %+.2e +- %.1e au/d^2 (%.1f sigma) %s, the figure to quote (JPL %+.2e)%s, chi2 %.0f with A2 against " + "%.0f without; left out in turn: %s; %s; the drift is %.1f, %.1f and %.1f times all absorbed sunlight at " + "500, 1000 and 2000 kg/m^3" + % (lead["A2"], lead["A2_sigma"], lead["A2"] / lead["A2_sigma"], + "with site weights" if lead_k == "with A2" else lead_k.replace("with A2, ", "with "), rf["a2_jpl"], + "".join("; %s: A2 %+.2e +- %.1e (%.1f sigma)%s" % ( + "site weights" if k == "with A2" else k.replace("with A2, ", ""), v["A2"], v["A2_sigma"], + v["A2"] / v["A2_sigma"], + ", A1 %+.2e +- %.1e" % (v["A1"], v["A1_sigma"]) if v.get("A1") is not None else "") + for k, v in f.items() if k.startswith("with A") and k != lead_k), + wa["chi2"], g["chi2"], + "; ".join("%s %+.2e (%.1f sigma)" % (k, v["A2"], v["A2"] / v["A2_sigma"]) for k, v in loo.items()), + size, xi[500.0], xi[1000.0], xi[2000.0])) + # fits keep different observations; compared per degree of freedom + red_a2, red_g = wa["chi2"] / wa["dof"], g["chi2"] / g["dof"] + known = yarkovsky_KNOWN.get(desig) + if known: + vet = "%s, its transverse drift beyond sunlight" % known if xi[1000.0] > 1.0 else known + elif red_a2 >= red_g - 0.02: + vet = "gravity alone fits as well (chi2/dof %.2f against %.2f with A2): no drift needed" % (red_g, red_a2) + elif xi[1000.0] > 1.0: + vet = "transverse drift beyond sunlight: dark-comet candidate" + else: + vet = "transverse drift within sunlight: Yarkovsky" + core.clear_targets(run) + core.record_targets(run, [dict( + target="mpc:" + desig, stat=lead["A2"] / lead["A2_sigma"], unit="A2 / sigma in the refit, the figure to quote", vet=vet, + note="D %.2f km, pV %.3f; xi %.1f at 1000 kg/m^3; chi2/dof %.2f with A2, %.2f gravity only" % (th["D_km"], th["pv"], xi[1000.0], red_a2, red_g))]) + print("recorded %s" % run) + + +darkcomet_SSOIS = "https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/cadcbin/ssos/ssosclf.pl" +darkcomet_CADC_DATA = "https://ws.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/data/pub/CFHT/" +darkcomet_IBE = "https://irsa.ipac.caltech.edu/ibe/data/wise/neowiser/p1bm_frm/" + + +def darkcomet_images(desig, epoch1="2000 01 01", epoch2=None): + """Archived images covering the ephemeris (CADC SSOIS) with Horizons V per epoch into images.json; lists archives and months brighter than V 24.6.""" + from datetime import date + d = darkcomet_dir(desig) + epoch2 = epoch2 or date.today().strftime("%Y %m %d") + u = darkcomet_SSOIS + "?" + urllib.parse.urlencode({"lang": "en", "object": desig, "search": "bynameCADC", "epoch1": epoch1, "epoch2": epoch2, + "eellipse": "", "eunits": "arcseconds", "extres": "yes", "xyres": "yes", "format": "tsv"}) + import csv + import io + t = core.get(u, timeout=600).decode("utf-8", "replace") + rows = list(csv.DictReader(io.StringIO(t), delimiter="\t")) + mjds = sorted({round(float(r["MJD"]), 5) for r in rows}) + eph = {} + for i in range(0, len(mjds), 25): + chunk = mjds[i:i + 25] + q = {"format": "json", "COMMAND": "'DES=%s;'" % desig, "CENTER": "'500@399'", "EPHEM_TYPE": "'OBSERVER'", "QUANTITIES": "'1,9,19,20'", + "TLIST": "'%s'" % " ".join("%.5f" % (m + 2400000.5) for m in chunk), "TLIST_TYPE": "'JD'", "TIME_TYPE": "'UT'", + "CSV_FORMAT": "'YES'", "OBJ_DATA": "'NO'", "ANG_FORMAT": "'DEG'"} + txt = json.loads(core.get("https://ssd.jpl.nasa.gov/api/horizons.api?" + urllib.parse.urlencode(q), timeout=180))["result"] + if "$$SOE" not in txt: + continue + lines = txt.split("$$SOE")[1].split("$$EOE")[0].strip().splitlines() + for m, line in zip(chunk, lines): # Horizons keeps the ascending input order + c = [x.strip() for x in line.split(",")] + eph[m] = dict(ra=num(c[3]), dec=num(c[4]), V=num(c[5]), r=num(c[7]), delta=num(c[9])) + for r in rows: + r.update(eph.get(round(float(r["MJD"]), 5), {})) + json.dump(rows, open(os.path.join(d, "images.json"), "w"), indent=0) + from astropy.time import Time + by = {} + for r in rows: + by.setdefault((r["Telescope/Instrument"], Time(float(r["MJD"]), format="mjd").iso[:7]), []).append(r) + print("%d images of %s in %d archives" % (len(rows), desig, len({r["Telescope/Instrument"] for r in rows}))) + for k, v in sorted(by.items(), key=lambda kv: kv[0][1]): + vs = [r["V"] for r in v if r.get("V") is not None] + if vs and min(vs) < 24.6: + print(" %-24s %s: %3d images, V %.1f-%.1f, exposures %s s, %s" % (k[0], k[1], len(v), min(vs), max(vs), + ",".join(sorted({r["Exptime"] for r in v})[:4]), ",".join(sorted({r["Filter"][:6] for r in v})[:4]))) + return rows + + +def darkcomet_precovery(desig, night, site="568", half_y=700): + """Re-measure the object in one night's CFHT MegaCam images: Gaia-registered CCD cutouts, predicted trail matched within 2.5 arcsec, offsets from prediction and MPC reports, into precovery_.json.""" + quiet_warnings() + from astropy.io import fits + from astropy.time import Time + from astropy.wcs import WCS + from photutils.detection import DAOStarFinder + from scipy.ndimage import gaussian_filter + from scipy.signal import fftconvolve + d = darkcomet_dir(desig) + rows = [r for r in json.load(open(os.path.join(d, "images.json"))) if r["Telescope/Instrument"] == "CFHT/MegaCam" + and Time(float(r["MJD"]), format="mjd").iso[:10] == night] + if not rows: + print("no CFHT images of %s on %s in images.json" % (desig, night)) + return [] + cdir = os.path.join(d, "cfht_" + night.replace("-", "")) + os.makedirs(cdir, exist_ok=True) + ra0, dec0 = float(rows[0]["Object_RA"]), float(rows[0]["Object_Dec"]) + gaia = core.datalab("SELECT source_id, ra, dec, pmra, pmdec, parallax, phot_g_mean_mag FROM gaia_dr3.gaia_source WHERE " + "q3c_radial_query(ra, dec, %.5f, %.5f, 0.15) = 't' AND phot_g_mean_mag < 21.5" % (ra0, dec0)) + mpc = [r for r in darkcomet_parse(open(os.path.join(d, "obs80.txt")).read()) + if Time(r["jd_utc"], format="jd").iso[:10] == night] + + def horizons(jd): + q = {"format": "json", "COMMAND": "'DES=%s;'" % desig, "CENTER": "'%s@399'" % site, "EPHEM_TYPE": "'OBSERVER'", "QUANTITIES": "'1,9'", + "TLIST": "'%.6f'" % jd, "TLIST_TYPE": "'JD'", "TIME_TYPE": "'UT'", "CSV_FORMAT": "'YES'", "OBJ_DATA": "'NO'", "ANG_FORMAT": "'DEG'"} + txt = json.loads(core.get("https://ssd.jpl.nasa.gov/api/horizons.api?" + urllib.parse.urlencode(q), timeout=180))["result"] + c = [x.strip() for x in txt.split("$$SOE")[1].split("$$EOE")[0].strip().splitlines()[0].split(",")] + return float(c[3]), float(c[4]), c[5] + + def sep(ra1, dec1, ra2, dec2): + return ((ra1 - ra2 + 180) % 360 - 180) * math.cos(math.radians(dec2)) * 3600, (dec1 - dec2) * 3600 + out = [] + for r in sorted(rows, key=lambda r: float(r["MJD"])): + y, ext = int(float(r["Y"])), int(r["Ext"]) + path = os.path.join(cdir, "%s_%d.fits" % (r["Image"], ext)) + if not os.path.exists(path): + cut = "[%d][1:2048,%d:%d]" % (ext, max(1, y - half_y), min(4612, y + half_y)) + b = core.get(darkcomet_CADC_DATA + "%s.fits.fz?cutout=%s" % (r["Image"], urllib.parse.quote(cut)), timeout=900, retries=3, soft=True) + if not b: + print("%s: no cutout" % r["Image"]) + continue + open(path, "wb").write(b) + h = fits.open(path) + hd, img = h[-1].header, h[-1].data.astype(float) + t_mid = Time("%sT%s" % (hd["DATE-OBS"], hd["UTC-OBS"]), scale="utc") + (hd["EXPTIME"] / 2.0 / 86400.0) + w = WCS(hd) + bkg = np.median(img) + sig = 1.4826 * np.median(np.abs(img - bkg)) + stars = DAOStarFinder(fwhm=4.0, threshold=6 * sig, exclude_border=True)(img - bkg) + if stars is None or len(stars) < 6: + continue + sx, sy = np.array(stars["xcentroid"]), np.array(stars["ycentroid"]) + dt = t_mid.jyear - 2016.0 + g_ra = np.array([float(g["ra"]) + float(g["pmra"] or 0) / 3.6e6 * dt / math.cos(math.radians(float(g["dec"]))) for g in gaia]) + g_dec = np.array([float(g["dec"]) + float(g["pmdec"] or 0) / 3.6e6 * dt for g in gaia]) + gx, gy = w.all_world2pix(g_ra, g_dec, 0) + gi = np.nonzero((gx > 5) & (gx < img.shape[1] - 5) & (gy > 5) & (gy < img.shape[0] - 5))[0] + dxs, dys = [], [] + for i in gi: + dd = np.hypot(sx - gx[i], sy - gy[i]) + for j in np.nonzero(dd < 40)[0]: + dxs.append(sx[j] - gx[i]) + dys.append(sy[j] - gy[i]) + if len(dxs) < 6: + print("%s: %d Gaia stars in the cutout, too few" % (r["Image"], len(gi))) + continue + H2, xe, ye = np.histogram2d(dxs, dys, bins=80, range=[[-40, 40], [-40, 40]]) + k = np.unravel_index(np.argmax(H2), H2.shape) + sh = (0.5 * (xe[k[0]] + xe[k[0] + 1]), 0.5 * (ye[k[1]] + ye[k[1] + 1])) + pairs = [] + for i in gi: + dd = np.hypot(sx - gx[i] - sh[0], sy - gy[i] - sh[1]) + j = int(np.argmin(dd)) + if dd[j] < 3.0: + pairs.append((sx[j], sy[j], gx[i], gy[i])) + pairs = np.array(pairs) + if len(pairs) < 6: + print("%s: only %d Gaia matches" % (r["Image"], len(pairs))) + continue + A = np.column_stack([pairs[:, 0], pairs[:, 1], np.ones(len(pairs))]) + for _ in range(3): + cx = np.linalg.lstsq(A, pairs[:, 2], rcond=None)[0] + cy = np.linalg.lstsq(A, pairs[:, 3], rcond=None)[0] + res = np.hypot(A @ cx - pairs[:, 2], A @ cy - pairs[:, 3]) + keep = res < max(3 * np.median(res), 0.3) + A, pairs = A[keep], pairs[keep] + res = np.hypot(A @ cx - pairs[:, 2], A @ cy - pairs[:, 3]) + scale = abs(hd["CD2_2"]) * 3600.0 + M = np.array([[cx[0], cx[1]], [cy[0], cy[1]]]) + pra, pdec, pV = horizons(t_mid.jd) + px, py = w.all_world2pix(pra, pdec, 0) + hx, hy = np.linalg.solve(M, np.array([px - cx[2], py - cy[2]])) + ra1, dec1, _ = horizons(t_mid.jd + 1.0 / 1440) + px1, py1 = w.all_world2pix(ra1, dec1, 0) + hx1, hy1 = np.linalg.solve(M, np.array([px1 - cx[2], py1 - cy[2]])) + vx, vy = (hx1 - hx) * hd["EXPTIME"] / 60.0, (hy1 - hy) * hd["EXPTIME"] / 60.0 + L = math.hypot(vx, vy) + K = np.zeros((41, 41)) + for s_ in np.linspace(-0.5, 0.5, max(int(L * 2), 2)): + K[int(round(20 + s_ * vy)), int(round(20 + s_ * vx))] += 1.0 + K = gaussian_filter(K, 1.7) + K /= np.sqrt(np.sum(K ** 2)) + mf = fftconvolve(img - bkg, K[::-1, ::-1], mode="same") + msig = 1.4826 * np.median(np.abs(mf - np.median(mf))) + R = int(2.5 / scale) + x0, y0 = int(round(hx)), int(round(hy)) + rec = dict(image=r["Image"], ext=ext, mjd_mid=float(t_mid.mjd), exptime=float(hd["EXPTIME"]), filter=hd["FILTER"], n_gaia=int(len(pairs)), + shift_px=[float(sh[0]), float(sh[1])], wcs_rms_arcsec=float(np.sqrt(np.mean(res ** 2))) * scale, pred_ra=pra, pred_dec=pdec, + pred_V=pV, trail_px=L, scale=scale, found=False) + if R < x0 < img.shape[1] - R and R < y0 < img.shape[0] - R: + box = mf[y0 - R:y0 + R + 1, x0 - R:x0 + R + 1] + iy, ix = np.unravel_index(int(np.nanargmax(box)), box.shape) + rec["matched_peak_sigma"] = float(box[iy, ix] / msig) + if box[iy, ix] > 3.0 * msig: + yy0, xx0 = y0 - R + iy, x0 - R + ix + + def refine(a, b, c): + dd = a - 2 * b + c + return 0.5 * (a - c) / dd if dd != 0 else 0.0 + ox = xx0 + refine(mf[yy0, xx0 - 1], mf[yy0, xx0], mf[yy0, xx0 + 1]) + oy = yy0 + refine(mf[yy0 - 1, xx0], mf[yy0, xx0], mf[yy0 + 1, xx0]) + gxo, gyo = cx[0] * ox + cx[1] * oy + cx[2], cy[0] * ox + cy[1] * oy + cy[2] + ora, odec = (float(v) for v in w.all_pix2world(gxo, gyo, 0)) + rec.update(found=True, ra=ora, dec=odec, pix=[float(ox), float(oy)], obs_minus_pred=list(sep(ora, odec, pra, pdec))) + near = min(mpc, key=lambda m: abs(m["jd_utc"] - t_mid.jd)) if mpc else None + if near and abs(near["jd_utc"] - t_mid.jd) * 86400 < 120: + rec["obs_minus_mpc"] = dict(site=near["site"], dt_s=(t_mid.jd - near["jd_utc"]) * 86400, offset=list(sep(ora, odec, near["ra"], near["dec"]))) + out.append(rec) + print("%s %s %4.0fs %s: %2d Gaia, WCS rms %.3f\"; %s" % ( + r["Image"], t_mid.iso[11:19], hd["EXPTIME"], hd["FILTER"][:1], rec["n_gaia"], rec["wcs_rms_arcsec"], + ("trail found at %.1f sigma, obs-pred E %+.2f N %+.2f\"%s" % (rec["matched_peak_sigma"], *rec["obs_minus_pred"], + (", obs-MPC(%s, %+.0f s) E %+.2f N %+.2f\"" % (rec["obs_minus_mpc"]["site"], rec["obs_minus_mpc"]["dt_s"], *rec["obs_minus_mpc"]["offset"])) if rec.get("obs_minus_mpc") else "")) + if rec["found"] else "not found (matched peak %.1f sigma)" % rec.get("matched_peak_sigma", 0)), flush=True) + good = [x for x in out if x["found"] and math.hypot(*x["obs_minus_pred"]) < 1.0] + if len(good) >= 3: + e = np.array([x["obs_minus_pred"][0] for x in good]) + n = np.array([x["obs_minus_pred"][1] for x in good]) + t = np.array([x["mjd_mid"] for x in good]) + ra = np.array([x["ra"] for x in good]) + dec = np.array([x["dec"] for x in good]) + cosd = math.cos(math.radians(dec.mean())) + tm = (t - t.min()) * 24.0 + px_ = np.polyfit(tm, (ra - ra[0]) * cosd * 3600, 1) + py_ = np.polyfit(tm, (dec - dec[0]) * 3600, 1) + print("%d positions within 1 arcsec of the prediction: median offset E %+.2f N %+.2f\" (scatter %.2f, %.2f); motion %.1f arcsec/h toward PA %.0f deg" + % (len(good), np.median(e), np.median(n), 1.4826 * np.median(np.abs(e - np.median(e))), 1.4826 * np.median(np.abs(n - np.median(n))), + math.hypot(px_[0], py_[0]), math.degrees(math.atan2(px_[0], py_[0])) % 360)) + # MPC report times against exposure start and end + for m in mpc: + best = min(out, key=lambda x: min(abs((m["jd_utc"] - x["mjd_mid"] - 2400000.5) * 86400 + x["exptime"] / 2), abs((m["jd_utc"] - x["mjd_mid"] - 2400000.5) * 86400 - x["exptime"] / 2))) + s0 = (m["jd_utc"] - best["mjd_mid"] - 2400000.5) * 86400 + best["exptime"] / 2 + print(" %s report at %s: exposure %s start %+.0f s, mid %+.0f s, end %+.0f s" % (m["site"], Time(m["jd_utc"], format="jd").iso[11:19], best["image"], s0, s0 - best["exptime"] / 2, s0 - best["exptime"])) + json.dump(out, open(os.path.join(d, "precovery_%s.json" % night.replace("-", "")), "w"), indent=1) + return out + + +def darkcomet_stack(desig, vmax=21.6, half=20): + """Shift-and-stack NEOWISE single exposures on the predicted position (V below vmax, clean frames) with a field-star PSF, radial profiles and aperture-corrected 8.25 arcsec magnitudes, into stack.json.""" + quiet_warnings() + import csv + from astropy.io import fits + from astropy.wcs import WCS + from scipy.ndimage import maximum_filter, shift as ndshift + d = darkcomet_dir(desig) + fdir = os.path.join(d, "neowise_frames") + os.makedirs(fdir, exist_ok=True) + frames_csv = os.path.join(d, "most_frames.csv") + if os.path.exists(frames_csv): + for r in csv.DictReader(open(frames_csv)): + if num(r["vmag"]) is None or num(r["vmag"]) >= vmax: + continue + scan, frame, band = r["scan_id"], int(r["frame_num"]), r["band"] + out = os.path.join(fdir, "%s%03d-w%s.fits" % (scan, frame, band)) + if not os.path.exists(out): + u = darkcomet_IBE + "%s/%s/%03d/%s%03d-w%s-int-1b.fits?center=%s,%s&size=150arcsec" % (scan[-2:], scan, frame, scan, frame, band, r["ra_obj"], r["dec_obj"]) + b = core.get(u, timeout=300, retries=3, soft=True, pause=10) + if b: + open(out, "wb").write(b) + + def horizons(jds): + q = {"format": "json", "COMMAND": "'DES=%s;'" % desig, "CENTER": "'500@-163'", "EPHEM_TYPE": "'OBSERVER'", "QUANTITIES": "'1,9'", + "TLIST": "'%s'" % " ".join("%.6f" % j for j in jds), "TLIST_TYPE": "'JD'", "TIME_TYPE": "'UT'", "CSV_FORMAT": "'YES'", + "OBJ_DATA": "'NO'", "ANG_FORMAT": "'DEG'"} + txt = json.loads(core.get("https://ssd.jpl.nasa.gov/api/horizons.api?" + urllib.parse.urlencode(q), timeout=180))["result"] + return [(float(c[3]), float(c[4]), c[5]) for c in ([x.strip() for x in line.split(",")] + for line in txt.split("$$SOE")[1].split("$$EOE")[0].strip().splitlines())] + + def window(img, x, y): + big = np.zeros((img.shape[0] + 2 * half, img.shape[1] + 2 * half)) + big[half:-half, half:-half] = np.where(np.isfinite(img), img, 0.0) + xi, yi = int(math.floor(x)), int(math.floor(y)) + sub = big[yi:yi + 2 * half + 1, xi:xi + 2 * half + 1] + return ndshift(sub, (yi - y, xi - x), order=1, mode="nearest") if sub.shape == (2 * half + 1, 2 * half + 1) else None + yy, xx = np.indices((2 * half + 1, 2 * half + 1)) + rr = np.hypot(xx - half, yy - half) + + def profile(S): + return [(a, b, float(np.mean(S[(rr >= a) & (rr < b)]))) for a, b in ((0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 8), (8, 10))] + res = {} + for band in ("w1", "w2"): + files = sorted(glob.glob(os.path.join(fdir, "*-%s.fits" % band))) + frames = sorted(((f, fits.open(f)[0].header, fits.open(f)[0].data.astype(float)) for f in files), key=lambda t: t[1]["MJD_OBS"]) + if not frames: + continue + eph = horizons([hd["MJD_OBS"] + 2400000.5 for _, hd, _ in frames]) + obj, dn, stars, log = [], [], [], [] + for (f, hd, img), (ra, dec, V) in zip(frames, eph): + w = WCS(hd) + px, py = (float(v) for v in w.all_world2pix(ra, dec, 0)) + bkg = np.nanmedian(img) + sig = 1.4826 * np.nanmedian(np.abs(img - bkg)) + c = window(img - bkg, px, py) + if c is None: + continue + stamp = c[half - 6:half + 7, half - 6:half + 7] / sig + if not np.isfinite(img[int(round(py)), int(round(px))]) or np.max(np.abs(stamp)) > 40 or c[half, half] / sig < -3: + log.append(dict(file=os.path.basename(f), mjd=hd["MJD_OBS"], skipped=True)) + continue + obj.append(c / sig) + dn.append((c, hd["MAGZP"], hd["MJD_OBS"])) + peaks = np.argwhere((img == maximum_filter(np.nan_to_num(img, nan=-1e9), size=5)) & (np.nan_to_num(img - bkg, nan=0) > 8 * sig)) + for (y1, x1) in peaks: + if abs(x1 - px) < 6 and abs(y1 - py) < 6 or x1 < 3 or y1 < 3 or x1 > img.shape[1] - 4 or y1 > img.shape[0] - 4: + continue + sub = np.nan_to_num(img[y1 - 1:y1 + 2, x1 - 1:x1 + 2] - bkg, nan=0) + if sub.sum() <= 0: + continue + cxs = x1 + (sub.sum(axis=0) @ np.array([-1, 0, 1])) / sub.sum() + cys = y1 + (sub.sum(axis=1) @ np.array([-1, 0, 1])) / sub.sum() + s = window(img - bkg, float(cxs), float(cys)) + if s is not None and np.isfinite(s).all() and s[half, half] > 0: + stars.append(s / s[half, half]) + log.append(dict(file=os.path.basename(f), mjd=hd["MJD_OBS"], V=V, centre_sigma=float(c[half, half] / sig))) + if not obj or not stars: + continue + OB = np.mean(obj, axis=0) * math.sqrt(len(obj)) + far = OB[rr > 12] + noise = float(1.4826 * np.median(np.abs(far - np.median(far)))) + offs = [] + for c in obj: + cr = np.clip(c[half - 2:half + 3, half - 2:half + 3], 0, None) + if cr.sum() > 0: + jy, jx = np.indices(cr.shape) + offs.append(((cr * (jx - 2)).sum() / cr.sum(), (cr * (jy - 2)).sum() / cr.sum())) + offs = np.array(offs) + jit = (float(np.std(offs[:, 0])), float(np.std(offs[:, 1]))) if len(offs) else (0.0, 0.0) + rng = np.random.default_rng(1) + S = np.median([ndshift(st, (rng.normal(0, jit[1]), rng.normal(0, jit[0])), order=1, mode="nearest") for st in stars], axis=0) + po, ps = profile(OB / OB[half, half]), profile(S / S[half, half]) + apcorr = -2.5 * math.log10(float(S[rr <= 3.0].sum() / S[rr <= 8.0].sum())) + mags = {} + for epoch in sorted({str(int(m // 100)) for _, _, m in dn}): + sel = [(c, zp) for c, zp, m in dn if str(int(m // 100)) == epoch] + M = np.mean([c for c, _ in sel], axis=0) + ap = float(M[rr <= 3.0].sum()) + ann = M[(rr > 6) & (rr < 12)] + err = 1.4826 * np.median(np.abs(ann - np.median(ann))) * math.sqrt(float((rr <= 3.0).sum())) + mags[epoch] = dict(n=len(sel), mag=(float(np.mean([zp for _, zp in sel])) - 2.5 * math.log10(ap) - apcorr) if ap > 0 else None, snr=ap / err if err > 0 else None) + res[band] = dict(n_frames=len(obj), n_stars=len(stars), centre_over_noise=float(OB[half, half] / noise), jitter_px=jit, profile_object=po, + profile_stars=ps, aperture_correction=apcorr, magnitudes=mags, frames=log) + print("%s: %d frames, %d stars; stack centre %.1f sigma; centroid scatter %.2f x %.2f px; aperture correction %.2f mag" % ( + band.upper(), len(obj), len(stars), OB[half, half] / noise, jit[0], jit[1], apcorr)) + print(" profile object / stars (normalised to the centre): " + ", ".join("%d-%d px %.3f/%.3f" % (a, b, vo, vs) for (a, b, vo), (_, _, vs) in zip(po, ps))) + for ep, m in mags.items(): + print(" MJD %s00s: %d frames, %s = %s (S/N %s)" % (ep, m["n"], band.upper(), "%.2f" % m["mag"] if m["mag"] else "-", "%.1f" % m["snr"] if m["snr"] else "-")) + json.dump(res, open(os.path.join(d, "stack.json"), "w"), indent=1) + return res + + +def darkcomet_cli(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "thermal", "refit", "record", "images", "precovery", "robust", "frames", "field", "stack", + "blockcov", "locus", "forecast", "census", "variants")) + p.add_argument("desig") + p.add_argument("--ephem", default=None) + p.add_argument("--night", default=None, help="UTC date of the CFHT images to re-measure (precovery, frames, field)") + p.add_argument("--site", default="568", help="MPC site code for the ephemeris of the precovery images") + p.add_argument("--boot", type=int, default=200, help="bootstrap resamples (robust)") + p.add_argument("--workers", type=int, default=8, help="parallel refits (robust)") + a = p.parse_args() + if a.mode == "fetch": + darkcomet_fetch(a.desig) + elif a.mode == "thermal": + darkcomet_thermal(a.desig) + elif a.mode == "refit": + darkcomet_refit(a.desig, a.ephem) + elif a.mode == "images": + darkcomet_images(a.desig) + elif a.mode == "precovery": + darkcomet_precovery(a.desig, a.night, a.site) + elif a.mode == "robust": + darkcomet_robust(a.desig, a.boot, a.workers, a.ephem) + elif a.mode == "frames": + darkcomet_frames(a.desig, a.night, a.site, a.ephem) + elif a.mode == "field": + darkcomet_field(a.desig, a.night, a.site) + elif a.mode == "stack": + darkcomet_stack(a.desig) + elif a.mode == "blockcov": + darkcomet_blockcov(a.desig, a.ephem) + elif a.mode == "locus": + darkcomet_locus(a.desig, a.night, a.site, a.ephem) + elif a.mode == "forecast": + darkcomet_forecast(a.desig, a.ephem) + elif a.mode == "census": + darkcomet_census(a.desig, a.night, a.workers) + elif a.mode == "variants": + darkcomet_thermal_variants(a.desig) + else: + darkcomet_record(a.desig) + + +replicated_DOC = r"""Replicated bodies: LCDB asteroids matching in period (2e-4), H (0.1 mag) and amplitude (0.05 mag) on proper orbits over 300 m/s apart, groups of three against shuffled periods. + + python -I seti.py solar_system replicated analyse + python -I seti.py solar_system replicated record""" + +replicated_ROOT = os.environ.get("REPLICATED_ROOT", core.data("replicated")) +replicated_OUT = "replicated_bodies.json" +replicated_DP, replicated_DH, replicated_DA, replicated_DV = 2e-4, 0.1, 0.05, 0.3 +replicated_LCDB = "https://sbnarchive.psi.edu/pds4/non_mission/ast-lightcurve-database_V4_0/data/lc_summary.csv" +replicated_PROPER = "https://sbnarchive.psi.edu/pds4/non_mission/ast.nesvorny.families_V2_0/data/proper_catalog24.tab" + + +def replicated_load(): + """LCDB rows (number, name, H, period, amplitude, U, family) joined with proper elements by number.""" + import csv + os.makedirs(replicated_ROOT, exist_ok=True) + for name, url in (("lc_summary.csv", replicated_LCDB), ("proper_catalog24.tab", replicated_PROPER)): + p = os.path.join(replicated_ROOT, name) + if not os.path.exists(p): + open(p, "wb").write(core.get(url, timeout=1800, retries=2)) + rows = list(csv.reader(open(os.path.join(replicated_ROOT, "lc_summary.csv"), encoding="utf-8", errors="replace"))) + head = next(i for i, r in enumerate(rows) if r and r[0] == "# Column definitions") + 1 + cols = rows[head] + start = next(i for i, r in enumerate(rows) if r and r[0] == "# Data") + 1 + ix = {c: cols.index(c) for c in ("Number", "Name", "Desig", "Family", "H", "Period", "AmpMin", "AmpMax", "U", "Diam", "IsBinary", "Notes")} + proper = {} + for line in open(os.path.join(replicated_ROOT, "proper_catalog24.tab")): + f = line.split() + if len(f) >= 12 and f[11].isdigit(): + proper[int(f[11])] = (float(f[0]), float(f[2]), float(f[4])) + out = [] + for r in rows[start:]: + if len(r) < len(cols) or not r[ix["Number"]].strip().lstrip("-").isdigit(): + continue + n = int(r[ix["Number"]]) + H, P, amp = num(r[ix["H"]]), num(r[ix["Period"]]), num(r[ix["AmpMax"]]) + if n <= 0 or n not in proper or H is None or H < -9 or P is None or P <= 0 or amp is None or amp < 0: + continue + out.append(dict(number=n, name=r[ix["Name"]] if r[ix["Name"]] != "-" else r[ix["Desig"]], H=H, P=P, amp=amp, + U=r[ix["U"]].strip(), family=r[ix["Family"]].strip(), diam=num(r[ix["Diam"]]), binary=r[ix["IsBinary"]].strip(), + a=proper[n][0], e=proper[n][1], sini=proper[n][2])) + return out + + +def replicated_metric(x, y): + """Zappala et al. (1990) standard metric between proper-element sets, km/s.""" + a = 0.5 * (x["a"] + y["a"]) + na = 29.78 / math.sqrt(a) + return na * math.sqrt(1.25 * ((x["a"] - y["a"]) / a) ** 2 + 2 * (x["e"] - y["e"]) ** 2 + 2 * (x["sini"] - y["sini"]) ** 2) + + +def replicated_groups(objs, periods): + """Groups of three or more pairwise-matching, pairwise-unrelated objects for the given periods; objs sorted by period.""" + order = np.argsort(periods) + P = periods[order] + H = np.array([o["H"] for o in objs])[order] + A = np.array([o["amp"] for o in objs])[order] + n = len(P) + parent = list(range(n)) + + def find(i): + while parent[i] != i: + parent[i] = parent[parent[i]] + i = parent[i] + return i + edges = 0 + j0 = 0 + for i in range(n): + while P[i] - P[j0] > replicated_DP * P[i]: + j0 += 1 + for j in range(j0, i): + if abs(H[i] - H[j]) <= replicated_DH and abs(A[i] - A[j]) <= replicated_DA: + x, y = objs[order[i]], objs[order[j]] + if replicated_metric(x, y) > replicated_DV: + parent[find(i)] = find(j) + edges += 1 + groups = {} + for i in range(n): + groups.setdefault(find(i), []).append(order[i]) + return [g for g in groups.values() if len(g) >= 3], edges + + +def replicated_analyse(): + objs = [o for o in replicated_load() if o["U"] in ("3", "3-")] + print("%d numbered asteroids with LCDB quality 3 or 3- periods, H, amplitudes and proper elements" % len(objs)) + periods = np.array([o["P"] for o in objs]) + groups, edges = replicated_groups(objs, periods) + print("%d matching unrelated pairs; %d groups of three or more" % (edges, len(groups))) + rng = np.random.default_rng(3) + H = np.array([o["H"] for o in objs]) + bins = np.floor(H / 0.5) + null, null_edges = [], [] + for _ in range(200): + sh = periods.copy() + for b in np.unique(bins): + m = np.nonzero(bins == b)[0] + sh[m] = periods[rng.permutation(m)] + g, e = replicated_groups(objs, sh) + null.append(len(g)) + null_edges.append(e) + print("periods shuffled within half-magnitude bins of H, 200 times: pairs %.1f +- %.1f, groups of three or more %.2f +- %.2f, max %d" % ( + np.mean(null_edges), np.std(null_edges), np.mean(null), np.std(null), max(null))) + out = [] + for g in sorted(groups, key=len, reverse=True): + mem = [objs[i] for i in g] + print(" group of %d: " % len(mem) + "; ".join("(%d) %s P %.4f h H %.2f amp %.2f a %.3f e %.3f sini %.3f fam %s%s" % ( + m["number"], m["name"], m["P"], m["H"], m["amp"], m["a"], m["e"], m["sini"], m["family"], " bin" if m["binary"] == "Y" else "") for m in mem)) + out.append(mem) + json.dump(dict(n=len(objs), pairs=edges, groups=out, null_groups_mean=float(np.mean(null)), null_groups_sd=float(np.std(null)), null_groups_max=int(max(null)), + null_pairs_mean=float(np.mean(null_edges)), null_pairs_sd=float(np.std(null_edges)), + dp=replicated_DP, dh=replicated_DH, da=replicated_DA, dv_kms=replicated_DV), open(core.results(replicated_OUT), "w"), indent=1) + + +def replicated_record(): + d = json.load(open(core.results(replicated_OUT))) + core.record_search( + "replicated_bodies", "Replicated bodies on unrelated orbits", + archive="LCDB summary table V4.0 (PDS); Nesvorny family bundle V2.0 proper elements 2024 (PDS)", release="LCDB 2021-09; proper elements 2024", + selection="numbered asteroids with LCDB quality 3 or 3- periods and proper elements", code=os.path.abspath(__file__), entry="replicated", + n_targets=d["n"], params=dict(dP_rel=d["dp"], dH=d["dh"], dAmp=d["da"], d_min_kms=d["dv_kms"]), + null_summary="periods shuffled within half-magnitude bins of H: pairs %.1f +- %.1f, groups %.2f +- %.2f (max %d)" % ( + d["null_pairs_mean"], d["null_pairs_sd"], d["null_groups_mean"], d["null_groups_sd"], d["null_groups_max"]), + sensitivity="a series of three or more copies with periods to 2e-4, H to 0.1 and amplitude to 0.05 among the quality-3 objects", + ledger="Replicated bodies on unrelated orbits", + result="%d objects: %d matching unrelated pairs against %.1f +- %.1f shuffled; %d groups of three or more against %.2f +- %.2f" % ( + d["n"], d["pairs"], d["null_pairs_mean"], d["null_pairs_sd"], len(d["groups"]), d["null_groups_mean"], d["null_groups_sd"])) + core.clear_targets("replicated_bodies") + core.record_targets("replicated_bodies", [dict(target="mpc:%d" % m["number"], stat=len(g), unit="members of the matching group", + vet="period, H and amplitude shared with %d unrelated bodies" % (len(g) - 1), + note="P %.4f h, H %.2f, amp %.2f, a %.3f e %.3f sini %.3f" % (m["P"], m["H"], m["amp"], m["a"], m["e"], m["sini"])) + for g in d["groups"] for m in g]) + print("recorded") + + +def replicated_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": replicated_analyse, "record": replicated_record}[mode]() + + +limbs_DOC = r"""Straight limbs in asteroid occultations: longest multi-site run of chord ends fitting a line within timing errors, over the diameter, against the fitted ellipse's own runs. + + python -I seti.py solar_system limbs analyse + python -I seti.py solar_system limbs record""" + +limbs_ROOT = os.environ.get("LIMBS_ROOT", core.data("occultations")) +limbs_BASE = "https://sbnarchive.psi.edu/pds4/non_mission/smallbodiesoccultations_V4_0/data/" +limbs_OUT = "occultation_limbs.json" +limbs_RE_KM = 6378.137 +limbs_MIN_CHORDS, limbs_RUN = 5, 4 + + +def limbs_load(): + """Events of fit quality 3-4 with five or more chords: limb points in the asteroid frame (km) with along-motion timing errors.""" + import csv + from astropy.coordinates import EarthLocation + from astropy.time import Time + os.makedirs(limbs_ROOT, exist_ok=True) + for name in ("Asteroid_2024Mar.psv", "AsteroidTimes_2024Mar.psv"): + p = os.path.join(limbs_ROOT, name) + if not os.path.exists(p): + open(p, "wb").write(core.get(limbs_BASE + name, timeout=900, retries=2)) + ev = {} + for r in csv.DictReader(open(os.path.join(limbs_ROOT, "Asteroid_2024Mar.psv"), encoding="utf-8", errors="replace"), delimiter="|"): + try: + if int(r["FIT_QUAL_CODE"]) < 3 or int(r["CHORD_NUM_MAIN"] or 0) < limbs_MIN_CHORDS: + continue + ev[r["SEQ_NUM"]] = dict(seq=r["SEQ_NUM"], date=r["OBS_DATE"], t0=float(r["TIME_ZERO"]), ra=float(r["STAR_RA_APPT"]) * 15.0, dec=float(r["STAR_DEC_APPT"]), + vx=[float(r[k] or 0) for k in ("AST_EAST_MOTION", "AST_EAST_MOTION_2ND", "AST_EAST_MOTION_3RD")], + vy=[float(r[k] or 0) for k in ("AST_NORTH_MOTION", "AST_NORTH_MOTION_2ND", "AST_NORTH_MOTION_3RD")], + desig=r["AST_DESIG"], name=r["AST_NAME"], dia=num(r["AST_DIA_NOMINAL"]), major=num(r["MAJOR_AXIS"]), minor=num(r["MINOR_AXIS"]), + pa=num(r["MAJOR_AXIS_PA"]), qual=int(r["FIT_QUAL_CODE"]), n_chords=int(r["CHORD_NUM_MAIN"]), chords=[], + fx=float(r["FPLANE_X_MAIN"]), fy=float(r["FPLANE_Y_MAIN"]), fhour=float(r["EVENT_HOUR"])) + except (ValueError, KeyError): + continue + for r in csv.DictReader(open(os.path.join(limbs_ROOT, "AsteroidTimes_2024Mar.psv"), encoding="utf-8", errors="replace"), delimiter="|"): + e = ev.get(r["SEQ_NUM"]) + if e is None or r["OBS_NAME1"] == "PREDICTION" or r["D_EVENTCODE"] != "D" or r["R_EVENTCODE"] != "R" or r["D_WEIGHT"] == "0" or r["R_WEIGHT"] == "0": + continue + try: + lon = abs(float(r["OBS_LONGITUDE_DEG"])) + float(r["OBS_LONGITUDE_MIN"] or 0) / 60 + float(r["OBS_LONGITUDE_SEC"] or 0) / 3600 + lat = (abs(float(r["OBS_LATITUDE_DEG"])) + float(r["OBS_LATITUDE_MIN"] or 0) / 60 + float(r["OBS_LATITUDE_SEC"] or 0) / 3600) * (1 if r["OBS_LATITUDE_NS"] == "N" else -1) + alt = float(r["OBS_ALTITUDE"] or 0) + td = float(r["D_HR"]) + float(r["D_MIN"]) / 60 + float(r["D_SEC"]) / 3600 + tr = float(r["R_HR"]) + float(r["R_MIN"]) / 60 + float(r["R_SEC"]) / 3600 + except ValueError: + continue + default = 0.5 if r["OBS_METHOD"] in ("a", "b", "c") and r["OBS_TIMESRC"] in ("a", "d", "f") else (1.5 if r["OBS_METHOD"] in ("a", "b", "c") else 1.0) + ed, er = num(r["D_UNCERT"]) or default, num(r["R_UNCERT"]) or default + # one chord per site + key = (round(lon, 2), round(lat, 2)) + if any(c["key"] == key for c in e["chords"]): + continue + e["chords"].append(dict(site=(lon, lat, alt), key=key, td=td, tr=tr, ed=ed, er=er, method=r["OBS_METHOD"], name=r["OBS_NAME1"])) + out = [] + for e in ev.values(): + if len(e["chords"]) < limbs_MIN_CHORDS: + continue + a, d = math.radians(e["ra"]), math.radians(e["dec"]) + day = Time(e["date"] + "T00:00:00", scale="utc") + dia = e["dia"] or 0.5 * ((e["major"] or 0) + (e["minor"] or 0)) + if not dia: + continue + + def shadow(t): + dt = t - e["t0"] + return (e["vx"][0] * dt + e["vx"][1] * dt ** 2 + e["vx"][2] * dt ** 3) * limbs_RE_KM, (e["vy"][0] * dt + e["vy"][1] * dt ** 2 + e["vy"][2] * dt ** 3) * limbs_RE_KM + # fitted asteroid position carried to the time origin + sx0, sy0 = shadow(e["fhour"]) + cx0, cy0 = e["fx"] - sx0, e["fy"] - sy0 + v = math.hypot(e["vx"][0], e["vy"][0]) * limbs_RE_KM / 3600.0 # km/s along the motion + ux, uy = e["vx"][0] / math.hypot(e["vx"][0], e["vy"][0]), e["vy"][0] / math.hypot(e["vx"][0], e["vy"][0]) + pts, dropped = [], 0 + for c in e["chords"]: + best = None + for sign in (1, -1): + loc = EarthLocation.from_geodetic(sign * c["site"][0], c["site"][1], c["site"][2]) + gx, gy, gz = (float(w) / (limbs_RE_KM * 1000.0) for w in (loc.x.value, loc.y.value, loc.z.value)) + rho_c, rho_s = math.hypot(gx, gy), gz + lam0 = math.atan2(gy, gx) + cand = [] + for t, et, kind in ((c["td"], c["ed"], "D"), (c["tr"], c["er"], "R")): + tt = day + t / 24.0 + theta = tt.sidereal_time("apparent", "greenwich").rad + lam0 + h = theta - a + xi = rho_c * math.sin(h) + eta = rho_s * math.cos(d) - rho_c * math.sin(d) * math.cos(h) + sx, sy = shadow(t) + cand.append(dict(x=xi * limbs_RE_KM - sx - cx0, y=eta * limbs_RE_KM - sy - cy0, err=et * v, kind=kind, ux=ux, uy=uy, site=c["name"])) + off = math.hypot(0.5 * (cand[0]["x"] + cand[1]["x"]), 0.5 * (cand[0]["y"] + cand[1]["y"])) + if best is None or off < best[0]: + best = (off, cand) + if best[0] <= 2.0 * dia: + pts.extend(best[1]) + else: + dropped += 1 + if len(pts) < 2 * limbs_MIN_CHORDS: + continue + e["points"], e["dropped"], e["dia"] = pts, dropped, dia + out.append(e) + return out + + +def limbs_statistic(pts, rng=None, ellipse=None): + """Longest run of angle-ordered limb points from distinct sites fitting a line at reduced chi-square below 2, over the mean diameter, with the fitted ellipse; with rng, points of that ellipse instead.""" + x = np.array([p["x"] for p in pts]) + y = np.array([p["y"] for p in pts]) + err = np.array([p["err"] for p in pts]) + ux = np.array([p["ux"] for p in pts]) + uy = np.array([p["uy"] for p in pts]) + site = [p["site"] for p in pts] + if ellipse is None: + # algebraic least-squares ellipse started at the points' mean + cx, cy = x.mean(), y.mean() + A = np.column_stack([(x - cx) ** 2, (x - cx) * (y - cy), (y - cy) ** 2, x - cx, y - cy]) + try: + coef = np.linalg.lstsq(A, np.ones(len(x)), rcond=None)[0] + a_, b_, c_, d_, e_ = coef + M = np.array([[2 * a_, b_], [b_, 2 * c_]]) + x0, y0 = np.linalg.solve(M, -np.array([d_, e_])) + cx, cy = cx + x0, cy + y0 + k = 1 + a_ * x0 ** 2 + b_ * x0 * y0 + c_ * y0 ** 2 + d_ * x0 + e_ * y0 + w, V = np.linalg.eigh(np.array([[a_, b_ / 2], [b_ / 2, c_]]) / k) + axes = 2 / np.sqrt(np.maximum(w, 1e-12)) + ellipse = dict(cx=float(cx), cy=float(cy), major=float(axes.max()), minor=float(axes.min()), ok=bool(np.all(w > 0)), + theta=float(math.atan2(V[1, int(np.argmin(w))], V[0, int(np.argmin(w))]))) + except np.linalg.LinAlgError: + ellipse = dict(cx=float(cx), cy=float(cy), major=float("nan"), minor=float("nan"), ok=False, theta=0.0) + if rng is not None: + # ellipse points at the same angles, perturbed along the motion by their errors + ang = np.arctan2(y - ellipse["cy"], x - ellipse["cx"]) + sa, sb, th = 0.5 * ellipse["major"], 0.5 * ellipse["minor"], ellipse.get("theta", 0.0) + rr = sa * sb / np.sqrt((sb * np.cos(ang - th)) ** 2 + (sa * np.sin(ang - th)) ** 2) + x = ellipse["cx"] + rr * np.cos(ang) + rng.normal(0, 1, len(x)) * err * ux + y = ellipse["cy"] + rr * np.sin(ang) + rng.normal(0, 1, len(y)) * err * uy + ang = np.arctan2(y - ellipse["cy"], x - ellipse["cx"]) + order = np.argsort(ang) + n = len(order) + best = (0.0, None) + for k in range(limbs_RUN, n + 1): + for s in range(n): + idx = [order[(s + i) % n] for i in range(k)] + if len({site[i] for i in idx}) < k: + continue + px, py, pe = x[idx], y[idx], err[idx] + # principal-axis line; perpendicular residuals with projected errors + mx, my = px.mean(), py.mean() + cov = np.cov(np.vstack([px - mx, py - my])) + w, V = np.linalg.eigh(cov) + nx, ny = V[:, 0] # best-line normal + res = (px - mx) * nx + (py - my) * ny + sig = np.abs(ux[idx] * nx + uy[idx] * ny) * pe + 0.05 * pe + chi2 = float(np.sum((res / sig) ** 2) / max(k - 2, 1)) + if chi2 < 2.0: + length = float(math.hypot(px.max() - px.min(), py.max() - py.min())) + if length > best[0]: + best = (length, idx) + return best, ellipse + + +def limbs_analyse(): + events = limbs_load() + print("%d events of fit quality 3 or 4 with %d or more positive chords" % (len(events), limbs_MIN_CHORDS)) + rng = np.random.default_rng(11) + rows = [] + bad = 0 + for e in events: + (length, idx), ell = limbs_statistic(e["points"]) + dia = e["dia"] + if not ell["ok"] or not (0.5 * dia <= ell["major"] <= 2.0 * dia) or length > 1.05 * dia: + bad += 1 + continue + frac = length / dia + null = [] + for _ in range(100): + (ln, _i), _ = limbs_statistic(e["points"], rng=rng, ellipse=ell) + null.append(ln / dia) + null = np.array(null) + rows.append(dict(seq=e["seq"], desig=e["desig"], name=e["name"], date=e["date"], n_chords=len(e["points"]) // 2, dropped=e["dropped"], n_points=len(e["points"]), dia=dia, + major=ell["major"], minor=ell["minor"], straight_km=length, straight_frac=frac, null_median=float(np.median(null)), null_99=float(np.percentile(null, 99)), + p=float(np.mean(null >= frac)), run_points=int(len(idx)) if idx else 0, run_sites=sorted({e["points"][i]["site"] for i in idx}) if idx else [], qual=e["qual"])) + rows.sort(key=lambda r: -(r["straight_frac"] - r["null_99"])) + fr = np.array([r["straight_frac"] for r in rows]) + ex = [r for r in rows if r["p"] < 0.01] + print("%d events measured (%d with chords that disagree or an ellipse off the nominal size); straight run over the diameter: median %.2f, 90th percentile %.2f; " + "beyond the ellipse null at p < 0.01: %d" % (len(rows), bad, np.median(fr), np.percentile(fr, 90), len(ex))) + for r in rows[:30]: + print(" (%s) %s %s: %d chords (%d dropped), D %.0f km (ellipse %.0f x %.0f); straight run %.0f km = %.2f D over %d points of %d sites; ellipse null median %.2f, 99%% %.2f, p %.2f" % ( + r["desig"], r["name"], r["date"], r["n_chords"], r["dropped"], r["dia"], r["major"], r["minor"], r["straight_km"], r["straight_frac"], r["run_points"], len(r["run_sites"]), + r["null_median"], r["null_99"], r["p"])) + json.dump(dict(n_events=len(rows), n_bad=bad, rows=rows, min_chords=limbs_MIN_CHORDS, run=limbs_RUN), open(core.results(limbs_OUT), "w"), indent=1) + + +def limbs_record(): + d = json.load(open(core.results(limbs_OUT))) + rows = d["rows"] + ex = [r for r in rows if r["p"] < 0.01] + core.record_search( + "occultation_limbs", "Straight limbs in occultation profiles", archive="PDS small-bodies occultations V4.0 (Herald et al.)", release="2024 March tables", + selection="events of fit quality 3 or 4 with five or more positive chords within two diameters of the fitted position", code=os.path.abspath(__file__), entry="limbs", n_targets=len(rows), + params=dict(min_chords=d["min_chords"], run=d["run"], chi2_max=2.0, ellipse_axis_range=[0.5, 2.0], run_max=1.05), + null_summary="each event's points replaced by the fitted ellipse's at the same angles with the same timing errors, 100 times; %d events whose chords disagree or whose ellipse is off the nominal size set aside" % d.get("n_bad", 0), + sensitivity="a straight run of four or more limb points over a stated fraction of the diameter, within the chords' timing errors", + ledger="Straight limbs in occultation profiles", + result="%d events: straight run over the diameter median %.2f, 90th percentile %.2f; %d beyond the ellipse null at p below 0.01, the longest %s" % ( + len(rows), float(np.median([r["straight_frac"] for r in rows])), float(np.percentile([r["straight_frac"] for r in rows], 90)), len(ex), + "; ".join("(%s) %s %s %.2f D over %d points of %d sites" % (r["desig"], r["name"], r["date"], r["straight_frac"], r["run_points"], len(r["run_sites"])) for r in rows[:6]))) + core.clear_targets("occultation_limbs") + core.record_targets("occultation_limbs", [dict(target="mpc:%s" % r["desig"], stat=r["straight_frac"], p=r["p"], unit="longest straight run of limb points over the diameter", + vet="%d chords, %d points; ellipse null median %.2f, 99 per cent %.2f%s" % (r["n_chords"], r["n_points"], r["null_median"], r["null_99"], + "; run of %d points from %d sites" % (r["run_points"], len(r["run_sites"]))), + note="%s %s, D %.0f km, run %.0f km over %d points" % (r["name"], r["date"], r["dia"], r["straight_km"], r["run_points"])) for r in rows]) + print("recorded %d events" % len(rows)) + + +def limbs_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": limbs_analyse, "record": limbs_record}[mode]() + + +plates_DOC = r"""Plate-like bodies: LCDB amplitudes reduced to zero phase above 1.6 mag at quality 2 or better below 15 deg phase, quality 1 as the spurious rate. + + python -I seti.py solar_system plates analyse + python -I seti.py solar_system plates record""" + +plates_OUT = "plate_bodies.json" +plates_SLOPE, plates_PHASE_MAX, plates_A0 = 0.03, 15.0, 1.6 +plates_DETAILS = "https://sbnarchive.psi.edu/pds4/non_mission/ast-lightcurve-database_V4_0/data/lc_details.csv" + + +def plates_analyse(): + import csv + p = os.path.join(replicated_ROOT, "lc_details.csv") + if not os.path.exists(p): + open(p, "wb").write(core.get(plates_DETAILS, timeout=1800, retries=2)) + rows = list(csv.reader(open(p, encoding="utf-8", errors="replace"))) + cols = rows[next(i for i, r in enumerate(rows) if r and r[0] == "# Column definitions") + 1] + start = next(i for i, r in enumerate(rows) if r and r[0] == "# Data") + 1 + ix = {c: cols.index(c) for c in ("Number", "Name", "Phase", "AmpMin", "AmpMax", "AmpFlag", "U", "Period", "Diam", "H", "Class", "IsBinary", "Notes", "ShortRef", "DateObs", "SumAmp")} + recs = [] + for r in rows[start:]: + if len(r) < len(cols): + continue + amp, ph = num(r[ix["AmpMax"]]), num(r[ix["Phase"]]) + if amp is None or amp < 0 or ph is None or ph < 0: + continue + u = r[ix["U"]].strip() + recs.append(dict(number=r[ix["Number"]].strip(), name=r[ix["Name"]].strip(), amp=amp, phase=ph, a0=amp / (1 + plates_SLOPE * ph), U=u, + period=num(r[ix["Period"]]), diam=num(r[ix["Diam"]]), H=num(r[ix["H"]]), cls=r[ix["Class"]].strip(), binary=r[ix["IsBinary"]].strip(), + notes=r[ix["Notes"]].strip(), ref=r[ix["ShortRef"]].strip(), date=r[ix["DateObs"]].strip(), sum_amp=num(r[ix["SumAmp"]]))) + low = [x for x in recs if x["phase"] <= plates_PHASE_MAX] + good = [x for x in low if x["U"] in ("2", "2+", "3-", "3") and x["binary"] != "Y" and "T" not in x["notes"]] + poor = [x for x in low if x["U"] in ("1", "1+", "1-")] + a0g, a0p = np.array([x["a0"] for x in good]), np.array([x["a0"] for x in poor]) + print("%d detail records with an amplitude and a phase angle, %d at phase angles up to %.0f deg: quality 2 and 3 %d (A_0 above %.1f mag: %d, %.4f; above 2.0: %d; above 2.5: %d), " + "quality 1 %d (above %.1f: %d, %.4f)" % (len(recs), len(low), plates_PHASE_MAX, len(good), plates_A0, int((a0g > plates_A0).sum()), float(np.mean(a0g > plates_A0)), + int((a0g > 2.0).sum()), int((a0g > 2.5).sum()), len(poor), plates_A0, int((a0p > plates_A0).sum()), float(np.mean(a0p > plates_A0)) if len(poor) else 0)) + tail = sorted((x for x in good if x["a0"] > plates_A0), key=lambda x: -x["a0"]) + objs = {} + for x in tail: + objs.setdefault((x["number"], x["name"]), []).append(x) + print(" %d objects in the tail:" % len(objs)) + for (n, name), xs in sorted(objs.items(), key=lambda kv: -max(x["a0"] for x in kv[1])): + x = max(xs, key=lambda y: y["a0"]) + print(" %s %s: A_0 %.2f mag (A %.2f at phase %.1f deg, U %s, %s %s), %d records in the tail; P %s h, D %s km, H %s, class %s, binary %s, notes %s" % ( + n, name, x["a0"], x["amp"], x["phase"], x["U"], x["ref"], x["date"], len(xs), "%.3f" % x["period"] if x["period"] else "-", "%.1f" % x["diam"] if x["diam"] and x["diam"] > 0 else "-", + "%.1f" % x["H"] if x["H"] and x["H"] > -9 else "-", x["cls"] or "-", x["binary"], x["notes"] or "-")) + json.dump(dict(n_records=len(recs), n_low_phase=len(low), n_good=len(good), n_poor=len(poor), frac_good=float(np.mean(a0g > plates_A0)), frac_poor=float(np.mean(a0p > plates_A0)) if len(poor) else None, + tail=tail, phase_max=plates_PHASE_MAX, a0_min=plates_A0, slope=plates_SLOPE), open(core.results(plates_OUT), "w"), indent=1) + + +def plates_record(): + d = json.load(open(core.results(plates_OUT))) + objs = {} + for x in d["tail"]: + objs.setdefault(x["number"] + " " + x["name"], []).append(x) + core.record_search( + "plate_bodies", "Plate-like bodies", archive="LCDB details table V4.0 (PDS, Warner et al.)", release="LCDB 2021-09", + selection="detail records with an amplitude and a phase angle at phase angles up to %.0f deg" % d["phase_max"], code=os.path.abspath(__file__), entry="plates", + n_targets=d["n_good"], params=dict(slope=d["slope"], phase_max=d["phase_max"], a0_min=d["a0_min"]), + null_summary="the quality-1 records' tail above %.1f mag: %s" % (d["a0_min"], "%.4f" % d["frac_poor"] if d["frac_poor"] is not None else "-"), + sensitivity="an amplitude at zero phase above %.1f mag, an axial ratio above 4.4 for an ellipsoid" % d["a0_min"], ledger="Plate-like bodies", + result="%d quality-2 and 3 records at low phase, %d above %.1f mag (%.4f) in %d objects against %.4f of the quality-1 records: %s" % ( + d["n_good"], len(d["tail"]), d["a0_min"], d["frac_good"], len(objs), d["frac_poor"] or 0, + "; ".join("%s A_0 %.2f" % (k, max(x["a0"] for x in v)) for k, v in sorted(objs.items(), key=lambda kv: -max(x["a0"] for x in kv[1]))[:12]))) + core.clear_targets("plate_bodies") + core.record_targets("plate_bodies", [dict(target="mpc:%s" % (k.split(" ")[0] if k.split(" ")[0] not in ("", "-9") else k), stat=max(x["a0"] for x in v), unit="peak-to-peak amplitude at zero phase, mag", + vet="%d records; class %s; %s" % (len(v), v[0]["cls"] or "-", "binary" if v[0]["binary"] == "Y" else v[0]["notes"] or "elongated body"), + note="A %.2f at phase %.1f deg, quality %s, %s" % (v[0]["amp"], v[0]["phase"], v[0]["U"], v[0]["ref"])) for k, v in objs.items()]) + print("recorded %d objects" % len(objs)) + + +def plates_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": plates_analyse, "record": plates_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- + +isoarrival_DOC = r"""Interstellar arrivals along the ecliptic: the chance of an orbit within 5 deg of the ecliptic, and of 3I/ATLAS's passes by Venus, Mars and Jupiter, for interstellar objects carrying the velocities of the Gaia DR3 stars within 100 pc (arrivals in proportion to speed and to the focused cross-section for perihelia within 2 AU), against isotropic arrivals. + + python -I seti.py solar_system isoarrival fetch (1I, 2I and 3I from JPL SBDB, 3I's planetary passes on astropy's ephemeris; Gaia DR3 velocities within 100 pc) + python -I seti.py solar_system isoarrival run [--n 20000000] [--passes 200000] [--procs 12] + python -I seti.py solar_system isoarrival record""" + +isoarrival_ROOT = os.environ.get("ISOARRIVAL_ROOT", core.data("isoarrival")) +isoarrival_GM = 2.959122082855911e-4 # AU^3 day^-2 +isoarrival_KMS = 86400 / 1.495978707e8 # AU/day in a km/s +isoarrival_QMAX = 2.0 # AU, the perihelia a survey finds +isoarrival_ALIGN = 5.0 # deg from the ecliptic plane +isoarrival_SPAN, isoarrival_DT = 1100.0, 0.5 # days either side of perihelion, step +# JPL approximate elements (Standish 1992), J2000 ecliptic: a (AU), e, i, longitude of perihelion, node (deg); the phase is drawn +isoarrival_PLANETS = {"Venus": (0.72333566, 0.00677672, 3.39467605, 131.60246718, 76.67984255), + "Mars": (1.52371034, 0.09339410, 1.84969142, -23.94362959, 49.55953891), + "Jupiter": (5.20288700, 0.04838624, 1.30439695, 14.72847983, 100.47390909)} + + +def isoarrival_asymptote(o): + """Velocity at infinity (AU/day) and impact vector (AU) of a hyperbolic orbit from its elements (q, e, i, om, w).""" + q, e = o["q"], o["e"] + i, O, w = (math.radians(o[k]) for k in ("i", "om", "w")) + P = np.array([math.cos(O) * math.cos(w) - math.sin(O) * math.sin(w) * math.cos(i), + math.sin(O) * math.cos(w) + math.cos(O) * math.sin(w) * math.cos(i), math.sin(w) * math.sin(i)]) + Q = np.array([-math.cos(O) * math.sin(w) - math.sin(O) * math.cos(w) * math.cos(i), + -math.sin(O) * math.sin(w) + math.cos(O) * math.cos(w) * math.cos(i), math.cos(w) * math.sin(i)]) + v = math.sqrt(isoarrival_GM * (e - 1) / q) + nu = math.acos(-1 / e) + vh = -(math.cos(nu) * P - math.sin(nu) * Q) + return v * vh, (e * P - vh) * isoarrival_GM / v ** 2 + + +def isoarrival_own_passes(o): + """Least distances (AU) of an orbit, from its elements, to Venus, Mars and Jupiter on astropy's ephemeris, J2000 ecliptic.""" + from astropy.coordinates import get_body_barycentric + from astropy.time import Time + vv, bv = isoarrival_asymptote(o) + t = np.arange(-isoarrival_SPAN, isoarrival_SPAN + 0.25, 0.25) + r = isoarrival_track(vv[None, :], bv[None, :], t)[0] + tt = Time(o["tp"] + t, format="jd", scale="tdb") + eps = math.radians(23.4392911) + sun = get_body_barycentric("sun", tt).xyz.to("AU").value + out = {} + for name in ("Venus", "Mars", "Jupiter"): + x, y, z = get_body_barycentric(name.lower(), tt).xyz.to("AU").value - sun + pe = np.stack([x, y * math.cos(eps) + z * math.sin(eps), -y * math.sin(eps) + z * math.cos(eps)], axis=1) + out[name] = float(np.min(np.linalg.norm(r - pe, axis=1))) + return out + + +def isoarrival_fetch(): + """1I, 2I and 3I's full-precision elements from JPL SBDB, 3I's least distances to Venus, Mars and Jupiter, and the heliocentric ecliptic velocities (km/s) of the Gaia DR3 stars within 100 pc with radial velocities.""" + os.makedirs(isoarrival_ROOT, exist_ok=True) + objs = {} + for des in ("1I", "2I", "3I"): + d = json.loads(core.get("https://ssd-api.jpl.nasa.gov/sbdb.api?" + urllib.parse.urlencode({"sstr": des, "full-prec": "1"}), + timeout=120)) + objs[des] = dict(name=d["object"]["fullname"], **{e["name"]: num(e["value"]) for e in d["orbit"]["elements"]}) + objs["3I"]["passes"] = isoarrival_own_passes(objs["3I"]) + json.dump(objs, open(os.path.join(isoarrival_ROOT, "objects.json"), "w"), indent=1) + import astropy.units as u + from astropy.coordinates import BarycentricMeanEcliptic, SkyCoord + rows = core.tap("gaia", "SELECT ra, dec, parallax, pmra, pmdec, radial_velocity FROM gaiadr3.gaia_source WHERE parallax > 10 " + "AND parallax_over_error > 10 AND radial_velocity IS NOT NULL", maxrec=500000) + col = {k: np.array([float(r[k]) for r in rows]) for k in ("ra", "dec", "parallax", "pmra", "pmdec", "radial_velocity")} + c = SkyCoord(ra=col["ra"] * u.deg, dec=col["dec"] * u.deg, distance=(1000 / col["parallax"]) * u.pc, + pm_ra_cosdec=col["pmra"] * u.mas / u.yr, pm_dec=col["pmdec"] * u.mas / u.yr, + radial_velocity=col["radial_velocity"] * u.km / u.s, frame="icrs") + v = c.transform_to(BarycentricMeanEcliptic()).velocity.d_xyz.to(u.km / u.s).value.T + np.savez_compressed(os.path.join(isoarrival_ROOT, "velocities.npz"), v=v.astype(np.float32)) + print("%d stars within 100 pc with radial velocities; 3I's passes (AU) %s" % (len(v), {k: round(x, 3) for k, x in objs["3I"]["passes"].items()})) + + +def isoarrival_draw(v, n, rng): + """n arrivals: star velocities drawn in proportion to speed times the focused cross-section for perihelia within QMAX, impact points uniform over that cross-section; velocity (AU/day), impact vector (AU), perihelion, inclination (deg).""" + s = np.linalg.norm(v, axis=1) * isoarrival_KMS + bmax2 = isoarrival_QMAX ** 2 + 2 * isoarrival_GM * isoarrival_QMAX / s ** 2 + w = s * bmax2 + k = rng.choice(len(v), n, p=w / w.sum()) + vv, sp = v[k] * isoarrival_KMS, s[k] + vh = vv / sp[:, None] + e1 = np.cross(vh, np.where(np.abs(vh[:, 2:3]) < 0.9, [[0.0, 0.0, 1.0]], [[1.0, 0.0, 0.0]])) + e1 /= np.linalg.norm(e1, axis=1)[:, None] + e2 = np.cross(vh, e1) + b, phi = np.sqrt(bmax2[k] * rng.uniform(0, 1, n)), rng.uniform(0, 2 * math.pi, n) + bv = b[:, None] * (np.cos(phi)[:, None] * e1 + np.sin(phi)[:, None] * e2) + q = (np.sqrt(isoarrival_GM ** 2 + b ** 2 * sp ** 4) - isoarrival_GM) / sp ** 2 + nrm = np.cross(bv, vh) + inc = np.degrees(np.arccos(np.clip(nrm[:, 2] / np.linalg.norm(nrm, axis=1), -1, 1))) + return vv, bv, q, inc + + +def isoarrival_track(vv, bv, t): + """Heliocentric positions (AU) at times t (days from perihelion) of hyperbolic orbits given by velocity at infinity and impact vector: the eccentricity vector is v^2 b / GM + v-hat.""" + GM = isoarrival_GM + sp = np.linalg.norm(vv, axis=1) + vh, b = vv / sp[:, None], np.linalg.norm(bv, axis=1) + ev = (sp ** 2)[:, None] * bv / GM + vh + e = np.linalg.norm(ev, axis=1) + P = ev / e[:, None] + nrm = np.cross(bv, vh) + nrm /= np.linalg.norm(nrm, axis=1)[:, None] + Q = np.cross(nrm, P) + a = GM / sp ** 2 + M = np.sqrt(GM / a ** 3)[:, None] * t[None, :] + H = np.arcsinh(M / e[:, None]) + for _ in range(30): + H -= (e[:, None] * np.sinh(H) - H - M) / (e[:, None] * np.cosh(H) - 1) + x, y = a[:, None] * (e[:, None] - np.cosh(H)), a[:, None] * np.sqrt(e ** 2 - 1)[:, None] * np.sinh(H) + return x[..., None] * P[:, None, :] + y[..., None] * Q[:, None, :] + + +def isoarrival_planet(name, t, M0): + """Positions (AU) of a planet on its mean ellipse at times t (days) from mean anomalies M0 (rad) at t = 0.""" + a, e, i, varpi, node = isoarrival_PLANETS[name] + i, w, O = math.radians(i), math.radians(varpi - node), math.radians(node) + M = M0[:, None] + math.sqrt(isoarrival_GM / a ** 3) * t[None, :] + E = M.copy() + for _ in range(8): + E -= (E - e * np.sin(E) - M) / (1 - e * np.cos(E)) + x, y = a * (np.cos(E) - e), a * math.sqrt(1 - e * e) * np.sin(E) + cw, sw, co, so, ci, si = math.cos(w), math.sin(w), math.cos(O), math.sin(O), math.cos(i), math.sin(i) + return np.stack([(co * cw - so * sw * ci) * x + (-co * sw - so * cw * ci) * y, (so * cw + co * sw * ci) * x + (-so * sw + co * cw * ci) * y, + (sw * si) * x + (cw * si) * y], axis=-1) + + +def isoarrival_passes(job): + """Least distances (AU) to Venus, Mars and Jupiter of one batch of arrivals with drawn planetary phases.""" + vv, bv, seed = job + rng = np.random.default_rng(seed) + t = np.arange(-isoarrival_SPAN, isoarrival_SPAN + isoarrival_DT, isoarrival_DT) + r = isoarrival_track(vv, bv, t) + out = [] + for name in ("Venus", "Mars", "Jupiter"): + d = np.linalg.norm(r - isoarrival_planet(name, t, rng.uniform(0, 2 * math.pi, len(vv))), axis=-1) + k = np.clip(np.argmin(d, axis=1), 1, len(t) - 2) + y0, y1, y2 = (d[np.arange(len(vv)), k + j] for j in (-1, 0, 1)) + den = y0 - 2 * y1 + y2 + out.append(np.where(den > 0, y1 - (y0 - y2) ** 2 / (8 * np.where(den > 0, den, 1)), y1)) # parabola through the least three + return np.stack(out, axis=1) + + +def isoarrival_run(n=20000000, passes=200000, procs=12): + """Inclinations of n arrivals; planetary passes of `passes` of them and of as many drawn within ALIGN of the ecliptic.""" + from multiprocessing import Pool + v = np.load(os.path.join(isoarrival_ROOT, "velocities.npz"))["v"].astype(float) + rng = np.random.default_rng(20251029) + inc, q, sp, ali = [], [], [], [] + for _ in range(n // 1000000): + vv, bv, qq, ii = isoarrival_draw(v, 1000000, rng) + inc.append(ii) + q.append(qq) + sp.append(np.linalg.norm(vv, axis=1) / isoarrival_KMS) + m = (ii <= isoarrival_ALIGN) | (ii >= 180 - isoarrival_ALIGN) + ali.append((vv[m], bv[m], ii[m])) + inc, q, sp = np.concatenate(inc), np.concatenate(q), np.concatenate(sp) + av, ab, ai = (np.concatenate([x[j] for x in ali]) for j in range(3)) + vv, bv, _, ii = isoarrival_draw(v, passes, rng) + sets = dict(all=(vv, bv, ii), aligned=(av[:passes], ab[:passes], ai[:passes])) + res = {} + with Pool(procs) as pool: + for key, (a1, a2, a3) in sets.items(): + jobs = [(a1[j:j + 500], a2[j:j + 500], 7919 * j + len(key)) for j in range(0, len(a1), 500)] + res[key] = (np.concatenate(pool.map(isoarrival_passes, jobs)), a3) + np.savez_compressed(os.path.join(isoarrival_ROOT, "arrivals.npz"), inc=inc.astype(np.float32), q=q.astype(np.float32), + speed=sp.astype(np.float32), d_all=res["all"][0], i_all=res["all"][1], d_aligned=res["aligned"][0], + i_aligned=res["aligned"][1]) + print("%d arrivals, %d within %.0f deg of the ecliptic; passes for %d and %d" % (len(inc), len(ai), isoarrival_ALIGN, + len(res["all"][0]), len(res["aligned"][0]))) + + +def isoarrival_record(): + objs = json.load(open(os.path.join(isoarrival_ROOT, "objects.json"))) + z = np.load(os.path.join(isoarrival_ROOT, "arrivals.npz")) + inc, sp = z["inc"], z["speed"] + d3 = np.array([objs["3I"]["passes"][k] for k in ("Venus", "Mars", "Jupiter")]) + + def near(d): + return np.all(d <= d3[None, :], axis=1) + p_align = np.mean((inc <= isoarrival_ALIGN) | (inc >= 180 - isoarrival_ALIGN)) + p_retro = np.mean(inc >= 180 - isoarrival_ALIGN) + iso = 1 - math.cos(math.radians(isoarrival_ALIGN)) + fast = sp >= 50 + rows = [] + for des, o in objs.items(): + off = min(o["i"], 180 - o["i"]) + rows.append(dict(target="iso:%s" % des, stat=float(np.mean(np.minimum(inc, 180 - inc) <= off)), + unit="fraction of arrivals as close to the ecliptic plane", note="%s: i %.2f deg, q %.3f AU, e %.3f; isotropic %.4f" + % (o["name"], o["i"], o["q"], o["e"], 1 - math.cos(math.radians(off))))) + p_all, p_ali = float(np.mean(near(z["d_all"]))), float(np.mean(near(z["d_aligned"]))) + p_any = float(np.mean(z["d_aligned"].min(axis=1) <= 0.2)) + print("within %.0f deg of the ecliptic: %.4f of arrivals (retrograde %.4f; %.4f at 50 km/s or more), isotropic %.4f" + % (isoarrival_ALIGN, p_align, p_retro, np.mean(((inc <= isoarrival_ALIGN) | (inc >= 180 - isoarrival_ALIGN))[fast]), iso)) + print("passes at least as close as 3I's (Venus, Mars, Jupiter %s AU): %.2e of arrivals, %.2e of those within %.0f deg" + % ([round(float(x), 3) for x in d3], p_all, p_ali, isoarrival_ALIGN)) + for j, name in enumerate(("Venus", "Mars", "Jupiter")): + print(" %s alone: %.4f of arrivals, %.4f of those within %.0f deg" % (name, np.mean(z["d_all"][:, j] <= d3[j]), + np.mean(z["d_aligned"][:, j] <= d3[j]), isoarrival_ALIGN)) + for r in rows: + print(" %s: %.4f (%s)" % (r["target"], r["stat"], r["note"])) + core.record_search( + "iso_ecliptic_arrivals", "Interstellar arrivals along the ecliptic", archive="JPL SBDB and CAD; Gaia DR3", + selection="1I, 2I and 3I; %d arrivals from the velocities of the Gaia DR3 stars within 100 pc" % len(inc), + code=os.path.abspath(__file__), entry="isoarrival", n_targets=len(rows), n_unit="interstellar objects", + params=dict(qmax_au=isoarrival_QMAX, align_deg=isoarrival_ALIGN, span_days=isoarrival_SPAN, step_days=isoarrival_DT), + null_summary="isotropic arrivals give %.4f within %.0f deg of the ecliptic" % (iso, isoarrival_ALIGN), + sensitivity="arrivals weighted by speed and by the focused cross-section for perihelia within %.0f AU; planets on their mean " + "ellipses with drawn phases" % isoarrival_QMAX, + ledger="Interstellar arrivals along the ecliptic", + result="%.4f of arrivals lie within %.0f deg of the ecliptic (isotropic %.4f, retrograde alone %.4f); passes at least as close as " + "3I/ATLAS's by Venus, Mars and Jupiter %.2e of all arrivals and %.2e of those along the ecliptic, %.1e for both together; " + "along the ecliptic and within 0.2 AU of one of the three planets %.1e" % (p_align, isoarrival_ALIGN, iso, p_retro, p_all, p_ali, + p_align * p_ali, p_align * p_any)) + core.clear_targets("iso_ecliptic_arrivals") + core.record_targets("iso_ecliptic_arrivals", rows) + + +def isoarrival_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "run", "record")) + p.add_argument("--n", type=int, default=20000000) + p.add_argument("--passes", type=int, default=200000) + p.add_argument("--procs", type=int, default=12) + a = p.parse_args() + if a.mode == "fetch": + isoarrival_fetch() + elif a.mode == "run": + isoarrival_run(a.n, a.passes, a.procs) + else: + isoarrival_record() + + +# -------------------------------------------------------------------------------------------------------------- + +iso3i_DOC = r"""3I/ATLAS (C/2025 N1) from every MPC position: ASSIST fits on gravity alone and with outgassing accelerations (radial, +transverse and normal, scaled by r^-2 or by the water-ice g(r)), with outgassing that changes at perihelion, and with an impulse +at perihelion or at the closest approaches to Mars and Jupiter; observing nights resampled for the impulses' spread. + + python -I seti.py solar_system iso3i fetch (ROOT/obs80.txt, sbdb.json, ObsCodes.html) + python -I seti.py solar_system iso3i fit [--workers 8] (ROOT/fits.json) + python -I seti.py solar_system iso3i boot [--boot 100] [--workers 8] (ROOT/boot.json) + python -I seti.py solar_system iso3i compare [--workers 8] (ROOT/compare.json: the models on one set of positions) + python -I seti.py solar_system iso3i scan [--workers 8] (ROOT/scan.json: an impulse every 5 days on the binned outgassing) + python -I seti.py solar_system iso3i boot --bins [--boot 100] (ROOT/boot_bins.json: nights resampled for the binned impulse fits) + python -I seti.py solar_system iso3i sites [--workers 8] (ROOT/sites.json: the binned impulse fits without each busiest site) + python -I seti.py solar_system iso3i record (compare, scan, boot_bins and sites into the coverage store)""" + +iso3i_DESIG = "C/2025 N1" +iso3i_ROOT = os.environ.get("ISO3I_ROOT", core.data("iso3i")) +# g(r) = alpha (r/r0)^-nm (1 + (r/r0)^nn)^-nk: the inverse square, and Marsden et al. (1973) for water ice +iso3i_G = {"r2": (1.0, 0.0, 2.0, 0.0, 1.0), "water": (0.1112620426, 4.6142, 2.15, 5.093, 2.808)} +iso3i_MS = darkcomet_AU / 86400.0 # m/s per au/d +iso3i_CLIP = 8.0 # two-coordinate chi-square outlier threshold +iso3i_SPECS = (("gravity", dict(g="r2", ng=False)), + ("outgassing r^-2", dict(g="r2", ng=True)), + ("outgassing water", dict(g="water", ng=True)), + ("outgassing r^-2 changing at perihelion", dict(g="r2", ng=True, split=True)), + ("outgassing water changing at perihelion", dict(g="water", ng=True, split=True)), + ("outgassing r^-2, impulse at Jupiter", dict(g="r2", ng=True, kicks=["jupiter"])), + ("outgassing water, impulse at Jupiter", dict(g="water", ng=True, kicks=["jupiter"])), + ("outgassing r^-2, impulse at Mars", dict(g="r2", ng=True, kicks=["mars"])), + ("outgassing r^-2, impulse at perihelion", dict(g="r2", ng=True, kicks=["perihelion"])), + ("outgassing r^-2 changing at perihelion, impulse at perihelion", dict(g="r2", ng=True, split=True, kicks=["perihelion"])), + ("outgassing r^-2 changing at perihelion, impulse at Jupiter", dict(g="r2", ng=True, split=True, kicks=["jupiter"]))) +iso3i_BOOT = ("outgassing r^-2, impulse at Jupiter", "outgassing water, impulse at Jupiter", "outgassing r^-2, impulse at Mars", + "outgassing r^-2 changing at perihelion, impulse at perihelion") +iso3i_BOOT_BINS = ("outgassing r^-2 in seven bins, impulse at perihelion", "outgassing r^-2 in seven bins, impulse at Jupiter") +# seven bins of constant outgassing: boundaries 2025 August 1 and September 15, perihelion, 2025 November 30, 2026 January 15 +# and February 28 (TDB JD) +iso3i_BINS = (2460888.5, 2460933.5, "perihelion", 2461009.5, 2461055.5, 2461099.5) +iso3i_COMPARE = (("gravity", dict(g="r2", ng=False)), + ("outgassing r^-2", dict(g="r2", ng=True)), + ("outgassing water", dict(g="water", ng=True)), + ("outgassing r^-2 changing at perihelion", dict(g="r2", ng=True, split=True)), + ("outgassing r^-2 in seven bins", dict(g="r2", ng=True, bins=iso3i_BINS)), + ("outgassing r^-2, impulse at Mars", dict(g="r2", ng=True, kicks=["mars"])), + ("outgassing r^-2, impulse at perihelion", dict(g="r2", ng=True, kicks=["perihelion"])), + ("outgassing r^-2 in seven bins, impulse at perihelion", dict(g="r2", ng=True, bins=iso3i_BINS, kicks=["perihelion"])), + ("outgassing r^-2, impulse at Jupiter", dict(g="r2", ng=True, kicks=["jupiter"])), + ("outgassing r^-2 in seven bins, impulse at Jupiter", dict(g="r2", ng=True, bins=iso3i_BINS, kicks=["jupiter"]))) +iso3i_POOL = {} + + +def iso3i_fetch(): + os.makedirs(iso3i_ROOT, exist_ok=True) + text = darkcomet_obs80(iso3i_DESIG) + open(os.path.join(iso3i_ROOT, "obs80.txt"), "w").write(text) + sb = json.loads(core.get("https://ssd-api.jpl.nasa.gov/sbdb.api?" + urllib.parse.urlencode( + {"sstr": iso3i_DESIG, "phys-par": 1, "cov": "mat", "full-prec": 1}), timeout=120)) + json.dump(sb, open(os.path.join(iso3i_ROOT, "sbdb.json"), "w"), indent=1) + darkcomet_sites(iso3i_ROOT) + rows = darkcomet_parse(text) + o = sb["orbit"] + print("%s: %d positions from %d sites; JPL solution %s on %s positions from %s to %s, rms %s arcsec; %s" + % (sb["object"]["fullname"], len(rows), len({r["site"] for r in rows}), o["orbit_id"], o["n_obs_used"], o["first_obs"], + o["last_obs"], o["rms"], [(p["name"], p["value"], p["sigma"]) for p in o.get("model_pars", [])])) + + +def iso3i_propagate(eph, t0, state, ng, times, g="r2", events=()): + """Barycentric positions at TDB JDs from a state at t0 in ASSIST with outgassing accelerations ng (A1, A2, A3 in au/d^2 where g = 1) under g. Each event (t, kind, value) acts as the integration crosses t: 'kick' adds value (au/d) to the velocity forward in time, 'ng' makes value the outgassing accelerations on the far side of t from t0.""" + import assist + import rebound + out = np.zeros((len(times), 3)) + times = np.asarray(times) + alpha, nk, nm, nn, r0 = iso3i_G[g] + for forward in (False, True): + sel = np.nonzero(times >= t0 if forward else times < t0)[0] + if not len(sel): + continue + sel = sel[np.argsort(times[sel])] if forward else sel[np.argsort(times[sel])[::-1]] + evs = sorted([e for e in events if (e[0] >= t0) == forward], key=lambda e: e[0] if forward else -e[0]) + sim = rebound.Simulation() + sim.add(x=state[0], y=state[1], z=state[2], vx=state[3], vy=state[4], vz=state[5]) + sim.t = t0 - eph.jd_ref + sim.dt = 1.0 if forward else -1.0 + ex = assist.Extras(sim, eph) + ex.alpha, ex.nk, ex.nm, ex.nn, ex.r0 = alpha, nk, nm, nn, r0 + params = [np.array(ng, float)] + ex.particle_params = params[-1] + k = 0 + for i in sel: + while k < len(evs) and (evs[k][0] <= times[i] if forward else evs[k][0] > times[i]): + te, kind, val = evs[k] + sim.integrate(te - eph.jd_ref) + if kind == "kick": + s = 1.0 if forward else -1.0 + p = sim.particles[0] + p.vx, p.vy, p.vz = p.vx + s * val[0], p.vy + s * val[1], p.vz + s * val[2] + else: + params.append(np.array(val, float)) + ex.particle_params = params[-1] + k += 1 + sim.integrate(times[i] - eph.jd_ref) + p = sim.particles[0] + out[i] = (p.x, p.y, p.z) + del ex + return out + + +def iso3i_bounds(spec, ev): + """TDB JDs where the outgassing accelerations change: perihelion for split, else the bins' boundaries (JDs or event names).""" + if spec.get("split"): + return [ev["perihelion"]] + return [ev[b] if isinstance(b, str) else float(b) for b in spec.get("bins", ())] + + +def iso3i_npar(spec): + nb = 1 if spec.get("split") else len(spec.get("bins", ())) + return 6 + 3 * int(spec["ng"]) * (1 + nb) + 3 * len(spec.get("kicks", ())) + + +def iso3i_unpack(spec, p, ev): + """State, outgassing at t0 and the events of a parameter vector under spec: outgassing beyond each change on the far side of t0, then the impulses.""" + k, ng, events = 6, np.zeros(3), [] + if spec["ng"]: + ng = np.array(p[6:9]) + k = 9 + for t in iso3i_bounds(spec, ev): + events.append((t, "ng", np.array(p[k:k + 3]))) + k += 3 + for name in spec.get("kicks", ()): + events.append((ev[name], "kick", np.array(p[k:k + 3]))) + k += 3 + return np.array(p[:6]), ng, events + + +def iso3i_model(P, spec, p, sel): + """Residuals (arcsec) of the positions sel, RA times cos Dec and then Dec.""" + s, ng, events = iso3i_unpack(spec, p, P["ev"]) + pos = iso3i_propagate(P["eph"], P["t0"], s, ng, P["t_emit"][sel], spec["g"], events) - P["obs_pos"][sel] + mra, mdec = darkcomet_radec(pos) + ra, dec = P["ra"][sel], P["dec"][sel] + return np.concatenate([((ra - mra + 180.0) % 360.0 - 180.0) * np.cos(np.radians(dec)) * 3600.0, (dec - mdec) * 3600.0]) + + +def iso3i_fit(P, spec, sel, sigma, start, clip=iso3i_CLIP, iters=15, keep0=None): + """Gauss-Newton by forward differences: parameters, covariance, residuals, kept mask. Outliers are re-judged each iteration, or with keep0 held to that mask throughout.""" + n = iso3i_npar(spec) + p = np.zeros(n) + p[:min(n, len(start))] = start[:min(n, len(start))] + nk = 3 * len(spec.get("kicks", ())) + h = np.array([1e-9] * 3 + [1e-11] * 3 + [1e-14] * (n - 6 - nk) + [1e-9] * nk) + keep = np.ones(len(sel), bool) if keep0 is None else keep0.copy() + w = np.concatenate([1.0 / sigma, 1.0 / sigma]) + lam = 1e-4 # Levenberg-Marquardt damping: a step is taken only if it lowers the chi-square of the kept positions + for it in range(iters): + r0 = iso3i_model(P, spec, p, sel) + J = np.zeros((len(r0), n)) + for k in range(n): + q = p.copy() + q[k] += h[k] + J[:, k] = (iso3i_model(P, spec, q, sel) - r0) / h[k] + kk = np.concatenate([keep, keep]) + A, b = J[kk] * w[kk, None], r0[kk] * w[kk] + sc = np.linalg.norm(A, axis=0) + sc[sc == 0] = 1.0 + N, g = (A / sc).T @ (A / sc), (A / sc).T @ b + chi0 = float(b @ b) + while True: + dp = -np.linalg.solve(N + lam * np.diag(np.diag(N)), g) / sc + r1 = iso3i_model(P, spec, p + dp, sel) + chi1 = float(np.sum(((np.concatenate([r1[:len(sel)], r1[len(sel):]]) * w)[kk]) ** 2)) + if chi1 <= chi0 or lam > 1e6: + break + lam *= 10.0 + if chi1 <= chi0: + p, lam = p + dp, max(lam / 10.0, 1e-7) + cov = np.linalg.inv(N) / np.outer(sc, sc) + new = (r1[:len(sel)] ** 2 + r1[len(sel):] ** 2) / sigma ** 2 < clip if keep0 is None else keep + if chi1 > chi0 or (np.all(np.abs(dp) < 1e-3 * np.sqrt(np.diag(cov))) and np.array_equal(new, keep)): + break + keep = new + res = iso3i_model(P, spec, p, sel) + return p, cov, res[:len(sel)], res[len(sel):], keep, it + 1 + + +def iso3i_events(eph, t0, state, ng): + """TDB JDs and distances (au) of perihelion and of the closest approaches to Mars and Jupiter on an orbit.""" + out = {} + for name, body, lo, hi in (("perihelion", "sun", 2460960.5, 2460995.5), ("mars", "mars", 2460935.5, 2460960.5), + ("jupiter", "jupiter", 2461100.5, 2461130.5)): + for step in (0.25, 0.005): + ts = np.arange(lo, hi, step) + x = iso3i_propagate(eph, t0, state, ng, ts) + b = np.array([[q.x, q.y, q.z] for q in (eph.get_particle(body, t - eph.jd_ref) for t in ts)]) + dist = np.linalg.norm(x - b, axis=1) + k = int(np.argmin(dist)) + lo, hi = ts[max(k - 2, 0)], ts[min(k + 2, len(ts) - 1)] + out[name], out[name + "_au"] = float(ts[k]), float(dist[k]) + return out + + +def iso3i_setup(ephem_dir=None): + """Positions, observers, emission times, the JPL reference state at a mid-arc epoch, the events, and weights: per-site rms from a first fit with r^-2 outgassing (floor 0.15 arcsec), inflated by sqrt(N/4) above four per station-night.""" + d = iso3i_ROOT + eph = darkcomet_ephem(ephem_dir) + rows = darkcomet_parse(open(os.path.join(d, "obs80.txt")).read()) + sites = darkcomet_sites(d) + rows = [r for r in rows if r["site"] in sites or "sat_km" in r] + tdb, obs_pos = darkcomet_observers(rows, sites, eph) + ra, dec = np.array([r["ra"] for r in rows]), np.array([r["dec"] for r in rows]) + sb = json.load(open(os.path.join(d, "sbdb.json"))) + mp = {p["name"]: num(p["value"]) for p in sb["orbit"].get("model_pars", [])} + ng_jpl = np.array([mp.get("A1") or 0.0, mp.get("A2") or 0.0, mp.get("A3") or 0.0]) + t0 = float(np.round(np.median(tdb)) + 0.5) + path = os.path.join(d, "horizons_%.1f.json" % t0) + if not os.path.exists(path): + q = {"format": "json", "COMMAND": "'DES=%s;'" % iso3i_DESIG, "EPHEM_TYPE": "'VECTORS'", "CENTER": "'500@0'", + "REF_PLANE": "'FRAME'", "VEC_TABLE": "'2'", "OUT_UNITS": "'AU-D'", "TLIST": "'%.1f'" % t0, "TIME_TYPE": "'TDB'", + "CSV_FORMAT": "'YES'", "VEC_CORR": "'NONE'", "OBJ_DATA": "'NO'"} + json.dump(json.loads(core.get("https://ssd.jpl.nasa.gov/api/horizons.api?" + urllib.parse.urlencode(q), timeout=120)), + open(path, "w")) + txt = json.load(open(path))["result"] + p0 = np.array([num(x) for x in txt.split("$$SOE")[1].split("$$EOE")[0].strip().split(",")[2:8]] + list(ng_jpl)) + geo = iso3i_propagate(eph, t0, p0[:6], ng_jpl, tdb) - obs_pos + t_emit = tdb - np.linalg.norm(geo, axis=1) * darkcomet_AU / 2.99792458e8 / 86400.0 + ev = iso3i_events(eph, t0, p0[:6], ng_jpl) + P = dict(eph=eph, t0=t0, t_emit=t_emit, obs_pos=obs_pos, ra=ra, dec=dec, ev=ev) + idx = np.arange(len(rows)) + nf = darkcomet_night_factor(rows, "veres") + sigma = np.array([darkcomet_SIGMA.get(r["site"], 0.5) for r in rows]) * nf + p1, _, dra, ddec, keep, _ = iso3i_fit(P, dict(g="r2", ng=True), idx, sigma, p0) + site = np.array([r["site"] for r in rows]) + base = np.array([darkcomet_SIGMA.get(r["site"], 0.5) for r in rows]) + site_rms = {} + for s in set(site): + m = (site == s) & keep + if m.sum() >= 5: + site_rms[s] = float(np.sqrt(np.mean((dra[m] ** 2 + ddec[m] ** 2) / 2 / nf[m] ** 2))) + base[site == s] = max(site_rms[s], 0.15) + return dict(P=P, rows=rows, tdb=tdb, sb=sb, ng_jpl=ng_jpl, p0=p0, p1=p1, sigma=base * nf, nf=nf, site_rms=site_rms) + + +def iso3i_pool_init(state, ephem_dir): + iso3i_POOL.update(state) + iso3i_POOL["eph"] = darkcomet_ephem(ephem_dir) + + +def iso3i_pool_fit(job): + tag, spec, sel, sg, start = job[:5] + try: + p, cov, dra, ddec, kp, its = iso3i_fit(iso3i_POOL, spec, sel, sg, start, keep0=job[5] if len(job) > 5 else None) + except np.linalg.LinAlgError as e: + return dict(tag=tag, error=str(e)) + return dict(tag=tag, n=int(len(sel)), kept=int(kp.sum()), chi2=float(np.sum(((dra ** 2 + ddec ** 2) / sg ** 2)[kp])), + dof=int(2 * kp.sum() - len(p)), rms=float(np.sqrt(np.mean((dra ** 2 + ddec ** 2)[kp] / 2))), iters=its, + p=[float(x) for x in p], cov=cov.tolist()) + + +def iso3i_rtn(P, spec, p, t): + """Rows: unit radial, transverse and normal vectors of the fitted orbit about the Sun at TDB JD t.""" + s, ng, events = iso3i_unpack(spec, p, P["ev"]) + x = iso3i_propagate(P["eph"], P["t0"], s, ng, [t - 0.01, t + 0.01], spec["g"], [e for e in events if e[1] == "ng"]) + sun = P["eph"].get_particle("sun", t - P["eph"].jd_ref) + r = (x[0] + x[1]) / 2 - np.array([sun.x, sun.y, sun.z]) + v = x[1] - x[0] + R = r / np.linalg.norm(r) + N = np.cross(r, v) + N /= np.linalg.norm(N) + return np.array([R, np.cross(N, R), N]) + + +def iso3i_describe(P, name, spec, r): + """A fit's outgassing accelerations and impulses with their errors, the impulses in m/s about the Sun's radial, transverse and normal directions, and each impulse's chi-square against none (3 degrees of freedom).""" + from scipy import stats + p, cov = np.array(r["p"]), np.array(r["cov"]) + out = dict(name=name, spec=spec, n=r["n"], kept=r["kept"], chi2=r["chi2"], dof=r["dof"], rms=r["rms"], iters=r["iters"]) + if spec["ng"]: + out["A"] = [[float(p[6 + j]), float(math.sqrt(cov[6 + j, 6 + j]))] for j in range(3)] + for i, t in enumerate(iso3i_bounds(spec, P["ev"])): + out.setdefault("A_beyond", []).append(dict(t=t, A=[[float(p[9 + 3 * i + j]), float(math.sqrt(cov[9 + 3 * i + j, 9 + 3 * i + j]))] + for j in range(3)])) + k = iso3i_npar(dict(spec, kicks=[])) if spec.get("kicks") else None + for e in spec.get("kicks", ()): + dv, C = p[k:k + 3] * iso3i_MS, cov[k:k + 3, k:k + 3] * iso3i_MS ** 2 + M = iso3i_rtn(P, spec, p, P["ev"][e]) + dv_rtn, C_rtn = M @ dv, M @ C @ M.T + chi = float(dv @ np.linalg.solve(C, dv)) + out.setdefault("impulses", {})[e] = dict( + t=P["ev"][e], dv_ms=float(np.linalg.norm(dv)), rtn_ms=[float(x) for x in dv_rtn], + rtn_sigma_ms=[float(math.sqrt(C_rtn[j, j])) for j in range(3)], chi2=chi, p=float(stats.chi2.sf(chi, 3)), + limit_ms=float(np.linalg.norm(dv) + 3 * math.sqrt(np.max(np.linalg.eigvalsh(C))))) + k += 3 + return out + + +def iso3i_run(workers=8, ephem_dir=None): + from multiprocessing import Pool + S = iso3i_setup(ephem_dir) + P, rows, sigma, p1 = S["P"], S["rows"], S["sigma"], S["p1"] + ev = P["ev"] + print("%d positions from %d sites, %s to %s TDB JD; perihelion %.3f (%.3f au), Mars %.3f (%.3f au), Jupiter %.3f (%.3f au); " + "%d positions after Jupiter" % (len(rows), len({r["site"] for r in rows}), S["tdb"].min(), S["tdb"].max(), ev["perihelion"], + ev["perihelion_au"], ev["mars"], ev["mars_au"], ev["jupiter"], ev["jupiter_au"], + int((S["tdb"] > ev["jupiter"]).sum())), flush=True) + idx = np.arange(len(rows)) + jobs = [(name, spec, idx, sigma, p1) for name, spec in iso3i_SPECS] + state = {k: P[k] for k in ("t0", "t_emit", "obs_pos", "ra", "dec", "ev")} + with Pool(workers, initializer=iso3i_pool_init, initargs=(state, ephem_dir)) as pool: + res = {r["tag"]: r for r in pool.imap_unordered(iso3i_pool_fit, jobs, chunksize=1)} + out = dict(desig=iso3i_DESIG, t0=P["t0"], events=ev, n=len(rows), ng_jpl=S["ng_jpl"].tolist(), site_rms=S["site_rms"], fits=[]) + for name, spec in iso3i_SPECS: + f = iso3i_describe(P, name, spec, res[name]) + out["fits"].append(dict(f, p=res[name]["p"], cov=res[name]["cov"])) + print("%-62s chi2 %9.1f / %5d, rms %.3f, %d kept%s%s" % ( + name, f["chi2"], f["dof"], f["rms"], f["kept"], + "; A1 A2 A3 %s" % " ".join("%+.3e(%.1e)" % tuple(a) for a in f["A"]) if spec["ng"] else "", + "".join("; %s: %.3f m/s, RTN %s +- %s, chi2 %.1f, p %.2g" % (e, x["dv_ms"], " ".join("%+.3f" % v for v in x["rtn_ms"]), + " ".join("%.3f" % v for v in x["rtn_sigma_ms"]), x["chi2"], x["p"]) + for e, x in f.get("impulses", {}).items())), flush=True) + json.dump(out, open(os.path.join(iso3i_ROOT, "fits.json"), "w"), indent=1) + + +def iso3i_boot(boot=100, workers=8, ephem_dir=None, bins=False): + """Observing nights resampled with replacement for the impulse fits of iso3i_BOOT, or with bins those of iso3i_BOOT_BINS on binned outgassing: each impulse's spread, into boot.json or boot_bins.json.""" + from multiprocessing import Pool + S = iso3i_setup(ephem_dir) + P, rows, sigma = S["P"], S["rows"], S["sigma"] + names = iso3i_BOOT_BINS if bins else iso3i_BOOT + fits = {f["name"]: f for f in json.load(open(os.path.join(iso3i_ROOT, "compare.json" if bins else "fits.json")))["fits"]} + night = np.floor(np.array([r["jd_utc"] for r in rows]) + 0.5).astype(int) + nights = sorted(set(night.tolist())) + idx = np.arange(len(rows)) + rng = np.random.default_rng(20261018) + specs = dict(iso3i_SPECS + iso3i_COMPARE) + jobs = [] + for b in range(boot): + draw = rng.choice(nights, size=len(nights), replace=True) + sel = np.concatenate([idx[night == k] for k in draw]) + jobs += [("%s|%d" % (name, b), specs[name], sel, sigma[sel], np.array(fits[name]["p"])) for name in names] + state = {k: P[k] for k in ("t0", "t_emit", "obs_pos", "ra", "dec", "ev")} + print("%d positions, %d nights; %d fits on %d workers" % (len(rows), len(nights), len(jobs), workers), flush=True) + with Pool(workers, initializer=iso3i_pool_init, initargs=(state, ephem_dir)) as pool: + res = list(pool.imap_unordered(iso3i_pool_fit, jobs, chunksize=1)) + out = dict(boot=boot, nights=len(nights), failed=sum(1 for r in res if "error" in r), fits={}) + for name in names: + spec = specs[name] + k = iso3i_npar(dict(spec, kicks=[])) + dv = np.array([np.array(r["p"][k:k + 3]) * iso3i_MS for r in res if r["tag"].split("|")[0] == name and "error" not in r]) + M = iso3i_rtn(P, spec, np.array(fits[name]["p"]), P["ev"][spec["kicks"][0]]) + rtn = dv @ M.T + out["fits"][name] = dict(n=len(dv), rtn_median=np.median(rtn, axis=0).tolist(), rtn_sd=rtn.std(axis=0).tolist(), + norm_pct=np.percentile(np.linalg.norm(dv, axis=1), [50, 84, 97.5, 99.85]).tolist()) + x = out["fits"][name] + print("%-62s %d resamples: RTN median %s, sd %s m/s; |dv| 50/84/97.5/99.85%% %s m/s" % ( + name, x["n"], " ".join("%+.3f" % v for v in x["rtn_median"]), " ".join("%.3f" % v for v in x["rtn_sd"]), + " ".join("%.3f" % v for v in x["norm_pct"])), flush=True) + json.dump(out, open(os.path.join(iso3i_ROOT, "boot_bins.json" if bins else "boot.json"), "w"), indent=1) + + +def iso3i_sites(workers=8, n_sites=30, ephem_dir=None): + """The impulse fits of iso3i_BOOT_BINS with each of the n_sites observatories holding most kept positions left out in turn, on the positions the r^-2 outgassing fit keeps; sites.json.""" + from collections import Counter + from multiprocessing import Pool + S = iso3i_setup(ephem_dir) + P, rows, sigma = S["P"], S["rows"], S["sigma"] + idx = np.arange(len(rows)) + _, _, _, _, keep, _ = iso3i_fit(P, dict(g="r2", ng=True), idx, sigma, S["p1"]) + fits = {f["name"]: f for f in json.load(open(os.path.join(iso3i_ROOT, "compare.json")))["fits"]} + specs = dict(iso3i_COMPARE) + site = np.array([r["site"] for r in rows]) + top = [s for s, _ in Counter(site[keep].tolist()).most_common(n_sites)] + jobs = [] + for s in top: + m = site != s + jobs += [("%s|%s" % (name, s), specs[name], idx[m], sigma[m], np.array(fits[name]["p"]), keep[m]) for name in iso3i_BOOT_BINS] + state = {k: P[k] for k in ("t0", "t_emit", "obs_pos", "ra", "dec", "ev")} + print("%d positions, %d kept; %d sites left out in turn; %d fits on %d workers" % (len(rows), int(keep.sum()), len(top), len(jobs), + workers), flush=True) + with Pool(workers, initializer=iso3i_pool_init, initargs=(state, ephem_dir)) as pool: + res = {r["tag"]: r for r in pool.imap_unordered(iso3i_pool_fit, jobs, chunksize=1)} + out = dict(sites=top, kept_by_site={s: int((keep & (site == s)).sum()) for s in top}, fits={}) + for name in iso3i_BOOT_BINS: + for s in top: + r = res["%s|%s" % (name, s)] + if "error" in r: + print("%-56s without %s: %s" % (name, s, r["error"]), flush=True) + continue + f = iso3i_describe(P, name, specs[name], r) + x = list(f["impulses"].values())[0] + out["fits"].setdefault(name, {})[s] = dict(rtn=x["rtn_ms"], rtn_sigma=x["rtn_sigma_ms"], chi2=x["chi2"], kept=f["kept"]) + print("%-56s without %s (%4d kept there): RTN %s +- %s m/s, chi2 %.1f" % ( + name, s, out["kept_by_site"][s], " ".join("%+.2f" % v for v in x["rtn_ms"]), " ".join("%.2f" % v for v in x["rtn_sigma_ms"]), + x["chi2"]), flush=True) + json.dump(out, open(os.path.join(iso3i_ROOT, "sites.json"), "w"), indent=1) + + +def iso3i_compare(workers=8, ephem_dir=None): + """Every model of iso3i_COMPARE on the positions the r^-2 outgassing fit keeps, so that their chi-squares compare, and the impulse at Jupiter without each of the two observatories holding most positions after it, and without both; compare.json.""" + from collections import Counter + from multiprocessing import Pool + S = iso3i_setup(ephem_dir) + P, rows, sigma = S["P"], S["rows"], S["sigma"] + idx = np.arange(len(rows)) + p, _, _, _, keep, _ = iso3i_fit(P, dict(g="r2", ng=True), idx, sigma, S["p1"]) + site = np.array([r["site"] for r in rows]) + top = [s for s, _ in Counter(site[S["tdb"] > P["ev"]["jupiter"]].tolist()).most_common(2)] + jobs = [(name, spec, idx, sigma, p, keep) for name, spec in iso3i_COMPARE] + jup = dict(g="r2", ng=True, kicks=["jupiter"]) + for drop in [[s] for s in top] + [top]: + m = ~np.isin(site, drop) + jobs.append(("outgassing r^-2, impulse at Jupiter, without %s" % " and ".join(drop), jup, idx[m], sigma[m], p, keep[m])) + state = {k: P[k] for k in ("t0", "t_emit", "obs_pos", "ra", "dec", "ev")} + print("%d positions, %d kept by the r^-2 outgassing fit; %d fits on %d workers" % (len(rows), int(keep.sum()), len(jobs), workers), + flush=True) + with Pool(workers, initializer=iso3i_pool_init, initargs=(state, ephem_dir)) as pool: + res = {r["tag"]: r for r in pool.imap_unordered(iso3i_pool_fit, jobs, chunksize=1)} + ref = res["outgassing r^-2"]["chi2"] + out = dict(kept=int(keep.sum()), n=len(rows), dropped=top, fits=[]) + for tag, spec, *_ in jobs: + f = iso3i_describe(P, tag, spec, res[tag]) + f["dchi2"] = None if "without" in tag else f["chi2"] - ref + out["fits"].append(dict(f, p=res[tag]["p"], cov=res[tag]["cov"])) + print("%-58s %3d parameters, chi2 %9.1f%s%s" % ( + tag, len(res[tag]["p"]), f["chi2"], "" if f["dchi2"] is None else " (%+.1f)" % f["dchi2"], + "".join("; %s: %.2f m/s, RTN %s +- %s, chi2 %.1f" % (e, x["dv_ms"], " ".join("%+.2f" % v for v in x["rtn_ms"]), + " ".join("%.2f" % v for v in x["rtn_sigma_ms"]), x["chi2"]) + for e, x in f.get("impulses", {}).items())), flush=True) + for b in f.get("A_beyond", []): + print(" beyond %.1f: A1 A2 A3 %s" % (b["t"], " ".join("%+.2e(%.1e)" % tuple(a) for a in b["A"]))) + json.dump(out, open(os.path.join(iso3i_ROOT, "compare.json"), "w"), indent=1) + + +def iso3i_scan(workers=8, step=5.0, ephem_dir=None): + """An impulse every step days across the observed arc on the r^-2 outgassing of seven bins, on the positions that model keeps: each impulse's radial, transverse and normal parts with their errors and the chi-square it gains; scan.json.""" + from multiprocessing import Pool + S = iso3i_setup(ephem_dir) + P, rows, sigma = S["P"], S["rows"], S["sigma"] + idx = np.arange(len(rows)) + base = dict(g="r2", ng=True, bins=iso3i_BINS) + p, _, _, _, keep, _ = iso3i_fit(P, base, idx, sigma, S["p1"]) + times = np.arange(np.ceil(S["tdb"].min()) + 10.5, S["tdb"].max() - 5.0, step) + kept = S["tdb"][keep] + far = np.array([((kept > t) if t >= P["t0"] else (kept < t)).sum() for t in times]) + print("impulse times with fewer than 20 kept positions beyond them, left out: %s" % [float(t) for t in times[far < 20]], flush=True) + times = times[far >= 20] + for t in times: + P["ev"]["t%.1f" % t] = float(t) + jobs = [("base", base, idx, sigma, p, keep)] + [("t%.1f" % t, dict(base, kicks=["t%.1f" % t]), idx, sigma, p, keep) for t in times] + state = {k: P[k] for k in ("t0", "t_emit", "obs_pos", "ra", "dec", "ev")} + print("%d positions, %d kept; impulses at %d times from %.1f to %.1f; %d fits on %d workers" + % (len(rows), int(keep.sum()), len(times), times[0], times[-1], len(jobs), workers), flush=True) + with Pool(workers, initializer=iso3i_pool_init, initargs=(state, ephem_dir)) as pool: + res = {r["tag"]: r for r in pool.imap_unordered(iso3i_pool_fit, jobs, chunksize=1)} + ref = res["base"]["chi2"] + out = dict(kept=int(keep.sum()), base_chi2=ref, scan=[]) + for t in times: + tag = "t%.1f" % t + if "error" in res[tag]: + print("%.1f: %s" % (t, res[tag]["error"]), flush=True) + continue + f = iso3i_describe(P, tag, dict(base, kicks=[tag]), res[tag]) + x = f["impulses"][tag] + out["scan"].append(dict(t=float(t), dchi2=f["chi2"] - ref, rtn=x["rtn_ms"], rtn_sigma=x["rtn_sigma_ms"], chi2=x["chi2"], + limit_ms=x["limit_ms"], n_before=int((S["tdb"] < t).sum()), n_after=int((S["tdb"] > t).sum()))) + y = out["scan"][-1] + print("%.1f: dchi2 %+8.1f; RTN %s +- %s m/s, chi2 %6.1f, 3-sigma |dv| < %.2f m/s; %d positions after" + % (t, y["dchi2"], " ".join("%+.2f" % v for v in y["rtn"]), " ".join("%.2f" % v for v in y["rtn_sigma"]), y["chi2"], y["limit_ms"], + y["n_after"]), flush=True) + json.dump(out, open(os.path.join(iso3i_ROOT, "scan.json"), "w"), indent=1) + + +def iso3i_record(): + """The model comparison, the impulse scan, the night resampling and the site jackknife, read from their files into the coverage store: the impulses at perihelion and at the Jupiter passage with their spreads, and the scan's limit on a velocity change at any time of the arc.""" + load = lambda name: json.load(open(os.path.join(iso3i_ROOT, name))) + fits, scan, boot, sites, first = load("compare.json"), load("scan.json"), load("boot_bins.json"), load("sites.json"), load("fits.json") + f = {x["name"]: x for x in fits["fits"]} + chi = lambda name: f[name]["chi2"] + per = f["outgassing r^-2 in seven bins, impulse at perihelion"]["impulses"]["perihelion"] + per0 = f["outgassing r^-2, impulse at perihelion"]["impulses"]["perihelion"] + mars = f["outgassing r^-2, impulse at Mars"]["impulses"]["mars"] + jup = f["outgassing r^-2 in seven bins, impulse at Jupiter"]["impulses"]["jupiter"] + jup0 = f["outgassing r^-2, impulse at Jupiter"]["impulses"]["jupiter"] + without = {x["name"].split("without ")[1]: x["impulses"]["jupiter"] for x in fits["fits"] if "without" in x["name"]} + bper = boot["fits"]["outgassing r^-2 in seven bins, impulse at perihelion"] + bjup = boot["fits"]["outgassing r^-2 in seven bins, impulse at Jupiter"] + sper = sites["fits"]["outgassing r^-2 in seven bins, impulse at perihelion"] + sjup = sites["fits"]["outgassing r^-2 in seven bins, impulse at Jupiter"] + span = lambda d, k: (min(v["rtn"][k] for v in d.values()), max(v["rtn"][k] for v in d.values()), + min(v["rtn_sigma"][k] for v in d.values()), max(v["rtn_sigma"][k] for v in d.values())) + ev_j = first["events"]["jupiter"] + sc = scan["scan"] + early = [x["limit_ms"] for x in sc if x["t"] < ev_j - 30] + late = [x["limit_ms"] for x in sc if x["t"] >= ev_j - 30] + best = sorted(sc, key=lambda x: x["dchi2"])[:4] + n_after = int((np.array([x["t"] for x in sc]) >= ev_j).sum()) and sc[-1]["n_after"] + result = ("on %d positions gravity alone leaves chi-square %.0f and r^-2 outgassing %.0f; outgassing changing at perihelion %.0f less and " + "seven bins %.0f less; an impulse on constant outgassing: %.1f m/s at Mars (%.0f less), %.1f m/s at perihelion (%.0f less), " + "%.0f +- %.0f m/s radial at Jupiter; on the binned outgassing: perihelion %+.1f +- %.1f m/s radial (%.0f less, 3 sigma below " + "%.1f m/s), %+.1f +- %.1f over %d resampled night sets, %+.1f to %+.1f +- %.1f-%.1f with each of %d sites left out; Jupiter " + "%+.0f +- %.0f m/s radial, %+.0f +- %.0f over resampled nights, %s; an impulse every %d days at %d times on the binned " + "outgassing worsens no fit, 3 sigma |dv| below %.1f-%.1f m/s up to 30 days before the Jupiter passage and %.0f-%.0f m/s " + "after, the largest gains %s" % ( + fits["kept"], chi("gravity"), chi("outgassing r^-2"), chi("outgassing r^-2") - chi("outgassing r^-2 changing at perihelion"), + chi("outgassing r^-2") - chi("outgassing r^-2 in seven bins"), mars["dv_ms"], + chi("outgassing r^-2") - chi("outgassing r^-2, impulse at Mars"), per0["dv_ms"], + chi("outgassing r^-2") - chi("outgassing r^-2, impulse at perihelion"), jup0["rtn_ms"][0], jup0["rtn_sigma_ms"][0], + per["rtn_ms"][0], per["rtn_sigma_ms"][0], + chi("outgassing r^-2 in seven bins") - chi("outgassing r^-2 in seven bins, impulse at perihelion"), per["limit_ms"], + bper["rtn_median"][0], bper["rtn_sd"][0], bper["n"], span(sper, 0)[0], span(sper, 0)[1], span(sper, 0)[2], span(sper, 0)[3], + len(sper), jup["rtn_ms"][0], jup["rtn_sigma_ms"][0], bjup["rtn_median"][0], bjup["rtn_sd"][0], + ", ".join("%+.0f +- %.0f without %s" % (v["rtn_ms"][0], v["rtn_sigma_ms"][0], k) for k, v in without.items()), + round(sc[1]["t"] - sc[0]["t"]), len(sc), min(early), max(early), min(late), max(late), + "; ".join("%.0f at JD %.1f (%+.1f +- %.1f radial, %+.1f +- %.1f transverse m/s)" % ( + -x["dchi2"], x["t"], x["rtn"][0], x["rtn_sigma"][0], x["rtn"][1], x["rtn_sigma"][1]) for x in best))) + print(result) + core.record_run("iso3i_impulses", "Impulses on 3I/ATLAS's orbit", + "Minor Planet Center observations of %s; JPL Small-Body Database; ASSIST with DE440 and sb441-n16" % iso3i_DESIG, + "every MPC position of 3I/ATLAS: %d from %d sites, %d after the Jupiter passage" % (first["n"], len(first["site_rms"]), n_after), + os.path.abspath(__file__), "iso3i", 1, "interstellar objects", + dict(clip=iso3i_CLIP, bins=[b for b in iso3i_BINS], boot=boot["boot"], sites=len(sites["sites"]), scan_step_days=round(sc[1]["t"] - sc[0]["t"])), + "the fits' covariances on one set of kept positions, %d resamplings of the %d observing nights, and each of the %d busiest sites " + "left out in turn" % (boot["boot"], boot["nights"], len(sites["sites"])), + "a velocity change beyond the fit's 3 sigma limit at any time of the arc, %.1f-%.0f m/s" % (min(early), max(late)), result, + [dict(target="mpc:%s" % iso3i_DESIG, stat=per["rtn_ms"][0], unit="impulse at perihelion on binned outgassing, radial m/s", vet="activity", + note="%+.1f +- %.1f m/s radial at perihelion on seven bins of outgassing, which the water production SOHO/SWAN measured " + "after perihelion supplies; Jupiter passage %+.0f +- %.0f m/s radial on %d positions after it" % ( + per["rtn_ms"][0], per["rtn_sigma_ms"][0], jup["rtn_ms"][0], jup["rtn_sigma_ms"][0], n_after))]) + print("recorded") + + +def iso3i_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "fit", "boot", "compare", "scan", "sites", "record")) + p.add_argument("--bins", action="store_true") + p.add_argument("--workers", type=int, default=8) + p.add_argument("--boot", type=int, default=100) + p.add_argument("--ephem", default=None) + a = p.parse_args() + if a.mode == "fetch": + iso3i_fetch() + elif a.mode == "record": + iso3i_record() + elif a.mode == "fit": + iso3i_run(a.workers, a.ephem) + elif a.mode == "compare": + iso3i_compare(a.workers, a.ephem) + elif a.mode == "scan": + iso3i_scan(a.workers, ephem_dir=a.ephem) + elif a.mode == "sites": + iso3i_sites(a.workers, ephem_dir=a.ephem) + else: + iso3i_boot(a.boot, a.workers, a.ephem, a.bins) + + +# -------------------------------------------------------------------------------------------------------------- +# circular: asteroid orbits made rather than captured + +circular_DOC = r"""Asteroids on circles in the ecliptic: numbered asteroids of JPL's Small-Body Database with eccentricity below 0.001 and inclination below 0.2 deg, an orbit made rather than captured, against the product of the two tails over the numbered population. + + python -I seti.py solar_system circular [record] [--e-max 0.001] [--i-max-deg 0.2]""" + + +def circular_count(cdata, fields="full_name"): + q = {"fields": fields, "sb-kind": "a", "sb-ns": "n"} + if cdata: + q["sb-cdata"] = json.dumps({"AND": cdata}) + d = json.loads(core.get("https://ssd-api.jpl.nasa.gov/sbdb_query.api?" + urllib.parse.urlencode(q), timeout=300)) + return int(d.get("count", 0)), d.get("data") or [] + + +def circular_main(record=False, e_max=0.001, i_max_deg=0.2): + n, _ = circular_count(None) + ne, _ = circular_count(["e|LT|%g" % e_max]) + ni, _ = circular_count(["i|LT|%g" % i_max_deg]) + nb, rows = circular_count(["e|LT|%g" % e_max, "i|LT|%g" % i_max_deg], "full_name,a,e,i,H,condition_code") + expect = ne * ni / n + print("%d numbered asteroids; e below %g: %d, i below %g deg: %d, so %.2f expected with both if independent; found %d: %s" + % (n, e_max, ne, i_max_deg, ni, expect, nb, rows[:10])) + json.dump(dict(n=n, n_e=ne, n_i=ni, expect=expect, found=rows), open(core.results("circular_asteroids.json"), "w"), indent=1) + if record: + core.record_search( + "sbdb_circular_asteroids", "Asteroids on circles in the ecliptic", archive="JPL Small-Body Database query API", + selection="numbered asteroids: %d" % n, code=os.path.abspath(__file__), entry="circular", n_targets=n, n_unit="asteroids", + params=dict(e=e_max, i_deg=i_max_deg), null_summary="the two tails taken as independent: %d and %d of %d give %.2f" % (ne, ni, n, expect), + sensitivity="a numbered asteroid on an orbit circular to %g within %g deg of the ecliptic" % (e_max, i_max_deg), + ledger="Asteroids on circles in the ecliptic", result="%d against %.2f expected" % (nb, expect)) + core.clear_targets("sbdb_circular_asteroids") + core.record_targets("sbdb_circular_asteroids", [dict( + target="mpc:%s" % str(r[0]).strip(), stat=num(r[2]), unit="eccentricity", note="i %s deg, a %s au, H %s" % (r[3], r[1], r[4])) + for r in rows]) + print("recorded") + + +def sbdb_rows(cdata, fields, kind="a"): + """Asteroids (or comets) of JPL's Small-Body Database query API meeting every constraint, numbered or not: rows as dicts.""" + q = {"fields": fields, "sb-kind": kind, "sb-cdata": json.dumps({"AND": cdata}), "full-prec": "true"} + d = json.loads(core.get("https://ssd-api.jpl.nasa.gov/sbdb_query.api?" + urllib.parse.urlencode(q), timeout=300)) + return [dict(zip(d["fields"], r)) for r in d.get("data") or []] + + +mirror_DOC = r"""Asteroids brighter than a mirror: Small-Body Database asteroids whose geometric albedo exceeds 0.8, more light than any rock or ice of the asteroid belt returns and the mark of a polished or white made surface, each read against its albedo in the AKARI asteroid catalogue (Usui et al. 2011, VizieR J/PASJ/63/1117), its WISE albedo and error (Masiero et al. 2011, J/ApJ/741/68) and its taxonomic class from the Small-Body Database and the ATLAS phase-curve catalogue (Mahlke et al. 2021, VII/288), since enstatite E-types, the brightest natural surfaces, reach 0.6, basaltic V-types are bright as well, a dark class at a mirror's albedo marks a wrong albedo, and an albedo pinned at 1.000 is a fit at its bound. + + python -I seti.py solar_system mirror [record] [--albedo 0.8] [--natural 0.6] [--sigma 3]""" + +# the brightest natural asteroid surfaces, enstatite E-types +MIRROR_NATURAL = 0.6 + + +def mpc_pack(n): + """An asteroid number in the MPC's packed form: five digits, or a letter for the ten-thousands from 100000.""" + n = int(n) + if n < 100000: + return "%05d" % n + k, r = divmod(n, 10000) + return (chr(ord("A") + k - 10) if k < 36 else chr(ord("a") + k - 36)) + "%04d" % r + + +def mirror_main(record=False, albedo=0.8, natural=MIRROR_NATURAL, sigma=3.0): + rows = sbdb_rows(["albedo|GT|%g" % albedo], "full_name,pdes,H,albedo,diameter,diameter_sigma,class,spec_T,spec_B,n_obs_used") + nums = [r["pdes"] for r in rows if str(r["pdes"]).isdigit()] + akari, wise, atlas_class = {}, {}, {} + if nums: + for a in core.tap("vizier", 'SELECT Num, Alb, e_Alb, Diam FROM "J/PASJ/63/1117/acua_v1" WHERE Num IN (%s)' % ",".join(nums)): + akari[str(a["Num"]).strip()] = (num(a["Alb"]), num(a["e_Alb"]), num(a["Diam"])) + packed = {mpc_pack(n): n for n in nums} + for a in core.tap("vizier", 'SELECT MPC, pV, e_pV, Diam FROM "J/ApJ/741/68/table1" WHERE MPC IN (%s)' % ",".join("'%s'" % p for p in packed)): + p = str(a["MPC"]).strip() + if p in packed and num(a["pV"]) is not None: + wise.setdefault(packed[p], []).append((num(a["pV"]), num(a["e_pV"]) or 0.0)) + # taxonomy from the literature collected with the ATLAS phase curves (Mahlke et al. 2021) + for a in core.tap("vizier", 'SELECT Number, Class FROM "VII/288/phase" WHERE Number IN (%s)' % ",".join(nums)): + c = str(a["Class"] or "").strip() + if c and c != "--": + atlas_class[str(a["Number"]).strip()] = c + out = [] + for r in rows: + alb = float(r["albedo"]) + ak = akari.get(str(r["pdes"])) + # the WISE fit's lowest albedo at SIGMA over every fit of the body + wl = min((p - sigma * e for p, e in wise.get(str(r["pdes"]), [])), default=None) + cls = " ".join(x for x in (r["spec_T"], r["spec_B"], atlas_class.get(str(r["pdes"]))) if x) + vet = [] + # a dark class reported at a mirror's albedo: the albedo, not the surface, is wrong + dark = any(c[:1] in "CBDPFGT" for c in cls.split()) + if (ak and ak[0] is not None and ak[0] + sigma * (ak[1] or 0) < albedo) or (wl is not None and wl < natural) or dark: + vet.append("artefact") + if alb >= 0.999: + vet.append("fit-boundary") + if any(c[:1] in "EVA" or c in ("Xe", "Xc") for c in cls.split()): + vet.append("asteroid-class") + out.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], H=num(r["H"]), albedo=alb, D=num(r["diameter"]), cls=cls, + akari=ak, wise=wise.get(str(r["pdes"])), wise_low=wl, vet=vet)) + left = [o for o in out if not o["vet"]] + print("%d asteroids above albedo %g in the Small-Body Database; %d with an AKARI albedo, %d with WISE fits and errors; below the brightest " + "natural surfaces at %g sigma in either: %d; pinned at 1.000: %d; E or Xe class: %d; unexplained: %d" % ( + len(out), albedo, sum(o["akari"] is not None for o in out), sum(o["wise"] is not None for o in out), sigma, sum("artefact" in o["vet"] for o in out), + sum("fit-boundary" in o["vet"] for o in out), sum("asteroid-class" in o["vet"] for o in out), len(left))) + for o in sorted(left, key=lambda o: -o["albedo"]): + print(" %s: albedo %.3f, D %s km, H %s, class %s, WISE %s" % (o["name"], o["albedo"], o["D"], o["H"], o["cls"] or "-", o["wise"])) + json.dump(out, open(core.results("mirror_asteroids.json"), "w"), indent=1) + if record: + core.record_search( + "sbdb_mirror_asteroids", "Asteroids brighter than a mirror", archive="JPL Small-Body Database query API; AKARI asteroid catalogue " + "(VizieR J/PASJ/63/1117)", selection="asteroids with a geometric albedo above %g: %d" % (albedo, len(out)), code=os.path.abspath(__file__), + entry="mirror", n_targets=len(out), n_unit="asteroids", params=dict(albedo=albedo, natural=natural, sigma=sigma), + null_summary="each body's AKARI albedo, its WISE albedo less %g times its error against the %.1f of the brightest natural " + "surfaces, its taxonomic class and the albedo fit's bound" % (sigma, natural), + sensitivity="an asteroid whose albedo above %g no second survey, error, natural class or fit bound explains" % albedo, ledger="Asteroids brighter than a mirror", + result="%d above %g: %d within the brightest natural surfaces in AKARI or WISE at %g sigma, %d pinned at 1.000, %d E or Xe class; " + "%d unexplained" % (len(out), albedo, sum("artefact" in o["vet"] for o in out), sigma, sum("fit-boundary" in o["vet"] for o in out), + sum("asteroid-class" in o["vet"] for o in out), len(left))) + core.clear_targets("sbdb_mirror_asteroids") + core.record_targets("sbdb_mirror_asteroids", [dict( + target="mpc:%s" % o["pdes"], stat=o["albedo"], unit="geometric albedo", vet="; ".join(o["vet"]) or None, + note="%s, D %s km, class %s, AKARI %s" % (o["name"], o["D"], o["cls"] or "-", "%.2f +- %.2f" % o["akari"][:2] if o["akari"] and o["akari"][0] is not None else "-")) + for o in out]) + print("recorded") + + +retrograde_DOC = r"""Retrograde orbits inside Jupiter's: Small-Body Database asteroids on bound orbits with perihelia beyond 1.3 au, semi-major axes below 4.5 au and inclinations above 90 deg, bodies circling against the planets' flow where collisions and the planets would have removed them, each read for its observational arc and orbit quality and its Tisserand parameter, since a comet-like orbit marks a capture. + + python -I seti.py solar_system retrograde [record] [--i-min-deg 90] [--a-max-au 4.5] [--q-min-au 1.3] [--condition-max 6] [--arc-min-days 30] [--tj-min 2]""" + + +def retrograde_main(record=False, i_min_deg=90.0, a_max_au=4.5, q_min_au=1.3, condition_max=6, arc_min_days=30.0, tj_min=2.0): + rows = sbdb_rows(["i|GT|%g" % i_min_deg, "a|LT|%g" % a_max_au, "a|GT|0", "e|LT|1", "q|GT|%g" % q_min_au], + "full_name,pdes,a,e,i,q,H,condition_code,data_arc,n_obs_used,t_jup,class") + out = [] + for r in rows: + cc = num(r["condition_code"]) + vet = [] + if cc is not None and cc >= condition_max or (num(r["data_arc"]) or 0) < arc_min_days: + vet.append("unconstrained-geometry") + if (num(r["t_jup"]) or 3) < tj_min: + vet.append("natural-type") + out.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), q=num(r["q"]), + H=num(r["H"]), cc=cc, arc=num(r["data_arc"]), n=num(r["n_obs_used"]), tj=num(r["t_jup"]), vet=vet)) + print("%d asteroids with i above %g deg, a below %g au and q beyond %g au" % (len(out), i_min_deg, a_max_au, q_min_au)) + for o in out: + print(" %s: a %.3f, e %.3f, i %.1f, q %.2f, H %s, condition %s, arc %s d, %s observations, T_J %s; %s" % ( + o["name"], o["a"], o["e"], o["i"], o["q"], o["H"], o["cc"], o["arc"], o["n"], o["tj"], ", ".join(o["vet"]) or "unexplained")) + json.dump(out, open(core.results("retrograde_asteroids.json"), "w"), indent=1) + if record: + left = [o for o in out if not o["vet"]] + core.record_search( + "sbdb_retrograde_inner", "Retrograde orbits inside Jupiter's", archive="JPL Small-Body Database query API", + selection="asteroids with i above %g deg, a below %g au and q beyond %g au: %d" % (i_min_deg, a_max_au, q_min_au, len(out)), code=os.path.abspath(__file__), + entry="retrograde", n_targets=len(out), n_unit="asteroids", params=dict(i_deg=i_min_deg, a_au=a_max_au, q_au=q_min_au, condition_max=condition_max, + arc_min_days=arc_min_days, tj_min=tj_min), + null_summary="each orbit's arc, quality and Tisserand parameter", sensitivity="any catalogued retrograde body between Mars-crossing and Jupiter", + ledger="Retrograde orbits inside Jupiter's", + result="%d: %s" % (len(out), "; ".join("%s (a %.2f, i %.0f, %s)" % (o["name"], o["a"], o["i"], ", ".join(o["vet"]) or "unexplained") for o in out))) + core.clear_targets("sbdb_retrograde_inner") + core.record_targets("sbdb_retrograde_inner", [dict( + target="mpc:%s" % o["pdes"], stat=o["i"], unit="inclination, deg", vet="; ".join(o["vet"]) or None, + note="a %.3f au, e %.3f, q %.2f, H %s, condition %s, arc %s d, T_J %s" % (o["a"], o["e"], o["q"], o["H"], o["cc"], o["arc"], o["tj"])) + for o in out]) + print("recorded; %d unexplained" % len(left)) + + +earthorbit_DOC = r"""Objects on Earth's own orbit: Small-Body Database asteroids with semi-major axes of 0.95-1.05 au, eccentricities below 0.05 and inclinations below 3 deg, something parked on our path round the Sun, each read for a non-gravitational acceleration (a light body under radiation pressure, as a spent rocket stage is) and for its size from H, against the near-Earth population that slow encounters make easy to find. + + python -I seti.py solar_system earthorbit [record] [--a-min 0.95] [--a-max 1.05] [--e-max 0.05] [--i-max-deg 3] [--sigma 3] [--stage-m2-kg 5e-3] [--rubble-kg-m3 500]""" + + +EARTHORBIT_STAGE = 5e-3 # m^2/kg, the area-to-mass ratio of a spent rocket stage and above +EARTHORBIT_RUBBLE = 500.0 # kg/m^3 + + +def earthorbit_main(record=False, a_min=0.95, a_max=1.05, e_max=0.05, i_max_deg=3.0, sigma=3.0, stage_m2_kg=EARTHORBIT_STAGE, rubble_kg_m3=EARTHORBIT_RUBBLE): + rows = sbdb_rows(["a|GT|%g" % a_min, "a|LT|%g" % a_max, "e|LT|%g" % e_max, "i|LT|%g" % i_max_deg], + "full_name,pdes,a,e,i,H,A1,A1_sigma,A2,A2_sigma,DT,first_obs,last_obs,data_arc,n_obs_used,condition_code") + out = [] + for r in rows: + H, a1, s1 = num(r["H"]), num(r["A1"]), num(r["A1_sigma"]) + o = dict(name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), H=H, A1=a1, A1_sigma=s1, + A2=num(r["A2"]), first=r["first_obs"], last=r["last_obs"], arc=num(r["data_arc"]), cc=num(r["condition_code"]), + D_m=1329e3 / np.sqrt(0.14) * 10 ** (-H / 5) if H is not None else None, amr=None, rho_max=None) + if a1 is not None and a1 > 0 and s1 and a1 > sigma * s1 and H is not None: + # radiation pressure at 1 au with a reflection coefficient of 1.5; the densest body allowed is the smallest, at albedo 0.5 + o["amr"] = a1 * nga_AU_D2 / (nga_S_OVER_C * 1.5) + o["rho_max"] = 3.0 / (2.0 * 1329e3 / np.sqrt(0.5) * 10 ** (-H / 5) * o["amr"]) + o["vet"] = ("not-measured" if o["amr"] is None else + "natural-density" if o["amr"] < stage_m2_kg and o["rho_max"] >= rubble_kg_m3 else None) + out.append(o) + ng = [o for o in out if o["amr"] is not None] + print("%d asteroids on Earth-like orbits (a %g-%g au, e below %g, i below %g deg); a radiation-pressure term at %g sigma for %d" % ( + len(out), a_min, a_max, e_max, i_max_deg, sigma, len(ng))) + for o in sorted(out, key=lambda o: o["H"] or 0): + print(" %s: a %.4f, e %.4f, i %.2f, H %s (%s m at albedo 0.14), A1 %s +- %s, A2 %s, %s to %s, condition %s%s" % ( + o["name"], o["a"], o["e"], o["i"], o["H"], "%.0f" % o["D_m"] if o["D_m"] else "-", o["A1"], o["A1_sigma"], o["A2"], o["first"], o["last"], + o["cc"], "; area to mass %.1e m2/kg, densest allowed %.0f kg/m3" % (o["amr"], o["rho_max"]) if o["amr"] else "")) + json.dump(out, open(core.results("earth_orbit_objects.json"), "w"), indent=1) + if record: + core.record_search( + "sbdb_earth_orbit", "Objects on Earth's own orbit", archive="JPL Small-Body Database query API", + selection="asteroids with a %g-%g au, e below %g, i below %g deg: %d" % (a_min, a_max, e_max, i_max_deg, len(out)), code=os.path.abspath(__file__), + entry="earthorbit", n_targets=len(out), n_unit="asteroids", params=dict(a_au=[a_min, a_max], e=e_max, i_deg=i_max_deg, sigma=sigma, + stage_m2_kg=stage_m2_kg, rubble_kg_m3=rubble_kg_m3), + null_summary="the near-Earth population, which slow encounters make easy to find on these orbits", + sensitivity="a body on Earth's orbit within a %g-%g au, e %g and i %g deg that the survey catalogue holds, and a spent stage's " + "area-to-mass ratio of %.0e m2/kg where radiation pressure is measured" % (a_min, a_max, e_max, i_max_deg, stage_m2_kg), + ledger="Objects on Earth's own orbit", + result="%d bodies; radiation pressure measured for %d (%s), %d at a rocket stage's area-to-mass, %d of them as dense as rubble at the " + "most favourable albedo" % (len(out), len(ng), ", ".join(o["name"] for o in ng) or "none", sum(o["amr"] >= stage_m2_kg for o in ng), + sum(o["vet"] == "natural-density" for o in ng))) + core.clear_targets("sbdb_earth_orbit") + core.record_targets("sbdb_earth_orbit", [dict( + target="mpc:%s" % o["pdes"], stat=o["amr"], unit="area-to-mass ratio, m2/kg", vet=o["vet"], + note="a %.4f au, e %.4f, i %.2f deg, H %s, A1 %s +- %s, A2 %s, %s to %s%s" % ( + o["a"], o["e"], o["i"], o["H"], o["A1"], o["A1_sigma"], o["A2"], o["first"], o["last"], + ", densest allowed %.0f kg/m3" % o["rho_max"] if o["rho_max"] else "")) for o in out]) + print("recorded") + + +yearcomets_DOC = r"""Comets on Earth's years: periodic comets of JPL's Small-Body Database with periods below 200 years whose period sits within 0.002 years (0.7 days) of a whole number of years, an orbit that returns to Earth's longitude on a fixed calendar, against the same window at half-years, each read for its orbit quality (condition code, data arc and the period's own uncertainty); a comet's period also walks under non-gravitational forces, so a match holds only to the orbit's precision. + + python -I seti.py solar_system yearcomets [record] [--tol-y 0.002] [--p-max-y 200] [--condition-max 6]""" + + +def yearcomets_main(record=False, tol_y=0.002, p_max_y=200.0, condition_max=6): + from scipy.stats import poisson + rows = sbdb_rows(["e|LT|1", "per_y|LT|%g" % p_max_y, "per_y|GT|0"], + "full_name,pdes,e,q,i,per_y,per,sigma_per,data_arc,n_obs_used,condition_code,class,A1,A2", kind="c") + out, half = [], [] + for r in rows: + P = num(r["per_y"]) + if P is None or P < 0.5: + continue + sp = num(r["sigma_per"]) / 365.25 if num(r["sigma_per"]) is not None else None + n = round(P) + frac = abs(P - n) + cc = num(r["condition_code"]) + o = dict(name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], P=P, n=int(n), frac=frac, sigma_y=sp, e=num(r["e"]), q=num(r["q"]), i=num(r["i"]), + cc=cc, arc=num(r["data_arc"]), nobs=num(r["n_obs_used"]), cls=r["class"], nongrav=bool(num(r["A1"]) or num(r["A2"]))) + if n >= 1 and frac < tol_y: + # a lost comet carries a rounded period with no uncertainty or condition code + o["vet"] = ("not-measured" if cc is None or sp is None else "unconstrained-geometry" if cc >= condition_max or sp > tol_y else None) + out.append(o) + elif abs(P - (math.floor(P) + 0.5)) < tol_y: + half.append(o) + exp = len(rows) * 2 * tol_y + p = float(poisson.sf(len(out) - 1, exp)) if out else 1.0 + firm = [o for o in out if o["vet"] is None] + for o in firm: + o["vet"] = "chance-rate" if p > 0.01 else None + print("%d periodic comets with periods below %g years; within %g y of a whole number of years: %d (%.2f expected from uniform fractions, Poisson p %.3g); " + "within the same window of a half-year: %d; with firm orbits: %d" % (len(rows), p_max_y, tol_y, len(out), exp, p, len(half), len(firm))) + for o in sorted(out, key=lambda o: o["frac"]): + print(" %s: P %.4f y (%d, off by %.4f y, sigma %s), q %.2f au, e %.3f, i %.1f, arc %s d, %s obs, condition %s%s; %s" % ( + o["name"], o["P"], o["n"], o["frac"], "%.4f" % o["sigma_y"] if o["sigma_y"] is not None else "-", o["q"], o["e"], o["i"], o["arc"], o["nobs"], o["cc"], + ", non-gravitational terms" if o["nongrav"] else "", o["vet"] or "unexplained")) + json.dump(dict(hits=out, half=half, n=len(rows)), open(core.results("comets_earth_years.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_comet_years", "Comets on Earth's years", "JPL Small-Body Database query API", "periodic comets with periods below %g years: %d" % (p_max_y, len(rows)), + os.path.abspath(__file__), "yearcomets", len(rows), "comets", dict(tol_y=tol_y, p_max_y=p_max_y, condition_max=condition_max), + "uniform fractional periods give %.2f in the window; the half-year window holds %d" % (exp, len(half)), + "a comet whose period sits within %g years of a whole number of years at its orbit's precision" % tol_y, + "%d at whole years against %.2f expected and %d at half-years (Poisson p %.3g); %d with firm orbits" % (len(out), exp, len(half), p, len(firm)), + [dict(target="sbdb:%s" % o["pdes"], stat=o["frac"], unit="years from a whole number of years", vet=o["vet"], + note="%s, P %.4f y (%d), sigma %s y, q %.2f au, e %.3f, arc %s d, condition %s" % ( + o["name"], o["P"], o["n"], "%.4f" % o["sigma_y"] if o["sigma_y"] is not None else "-", o["q"], o["e"], o["arc"], o["cc"])) for o in out]) + print("recorded") + + +tangent_DOC = r"""Orbits tangent to Earth's: asteroids and comets of JPL's Small-Body Database whose perihelion or aphelion distance sits within 0.0005 au of 1.0000 au, an orbit that touches Earth's mean distance from the Sun, as a craft parked to meet Earth would have, against the same windows at 0.995 and 1.005 au and the band's own density from 0.99 to 1.01 au, each read for its orbit quality (condition code, data arc and the distance's own uncertainty); a near-Earth population crosses 1 au freely and no dynamics pins an orbit to the number itself. + + python -I seti.py solar_system tangent [record] [--tol-au 0.0005] [--band-au 0.01] [--condition-max 6]""" + + +def tangent_main(record=False, tol_au=0.0005, band_au=0.01, condition_max=6): + from scipy.stats import poisson + out, counts = [], {} + for key, sig, label in (("q", "sigma_q", "perihelion"), ("ad", "sigma_ad", "aphelion")): + rows = [] + for kind in ("a", "c"): + rows += [dict(r, kind=kind) for r in sbdb_rows(["%s|GT|%g" % (key, 1 - band_au), "%s|LT|%g" % (key, 1 + band_au), "e|LT|1"], + "full_name,pdes,q,ad,e,a,i,%s,condition_code,data_arc,n_obs_used,H" % sig, kind=kind)] + vals = [(r, num(r[key])) for r in rows if num(r[key]) is not None] + hits = [(r, v) for r, v in vals if abs(v - 1.0) < tol_au] + ctl = [v for r, v in vals if abs(v - (1 - band_au / 2)) < tol_au or abs(v - (1 + band_au / 2)) < tol_au] + exp = len(vals) * 2 * tol_au / (2 * band_au) + p = float(poisson.sf(len(hits) - 1, exp)) if hits else 1.0 + counts[label] = dict(n=len(vals), hits=len(hits), control=len(ctl), expected=exp, p=p) + for r, v in hits: + cc, s = num(r["condition_code"]), num(r[sig]) + out.append(dict(which=label, name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], kind=r["kind"], value=v, off=v - 1.0, sigma=s, q=num(r["q"]), + ad=num(r["ad"]), e=num(r["e"]), a=num(r["a"]), i=num(r["i"]), H=num(r["H"]), cc=cc, arc=num(r["data_arc"]), nobs=num(r["n_obs_used"]), + vet=("not-measured" if cc is None or s is None else "unconstrained-geometry" if cc >= condition_max or s > tol_au else + "chance-rate" if p > 0.01 else None))) + print("%s within %g au of 1 au: %d of %d bodies in the %g au band (%.2f expected from the band's density, Poisson p %.3g); the two control windows hold %d" % ( + label, tol_au, len(hits), len(vals), band_au, exp, p, len(ctl))) + for o in sorted(out, key=lambda o: abs(o["off"])): + print(" %s %s: %s %.5f au (off by %+.5f, sigma %s), a %.3f, e %.3f, i %.1f, H %s, arc %s d, %s obs, condition %s; %s" % ( + o["which"], o["name"], o["which"], o["value"], o["off"], "%.1e" % o["sigma"] if o["sigma"] is not None else "-", o["a"], o["e"], o["i"], o["H"], o["arc"], + o["nobs"], o["cc"], o["vet"] or "unexplained")) + json.dump(dict(counts=counts, hits=out), open(core.results("tangent_earth.json"), "w"), indent=1) + if record: + c = counts + core.record_run( + "sbdb_tangent_earth", "Orbits tangent to Earth's", "JPL Small-Body Database query API", + "asteroids and comets with perihelia or aphelia within %g au of 1 au: %d and %d" % (band_au, c["perihelion"]["n"], c["aphelion"]["n"]), + os.path.abspath(__file__), "tangent", c["perihelion"]["n"] + c["aphelion"]["n"], "orbits", dict(tol_au=tol_au, band_au=band_au, condition_max=condition_max), + "the band's own density gives %.2f and %.2f in the windows; the control windows at %g and %g au hold %d and %d" % ( + c["perihelion"]["expected"], c["aphelion"]["expected"], 1 - band_au / 2, 1 + band_au / 2, c["perihelion"]["control"], c["aphelion"]["control"]), + "a perihelion or aphelion within %g au of 1 au at the orbit's precision" % tol_au, + "perihelia %d against %.2f expected (p %.3g), aphelia %d against %.2f (p %.3g)" % ( + c["perihelion"]["hits"], c["perihelion"]["expected"], c["perihelion"]["p"], c["aphelion"]["hits"], c["aphelion"]["expected"], c["aphelion"]["p"]), + [dict(target="sbdb:%s" % o["pdes"], stat=o["off"], unit="%s distance less 1 au" % o["which"], vet=o["vet"], + note="%s, a %.3f au, e %.3f, i %.1f deg, H %s, sigma %s, arc %s d, condition %s" % ( + o["name"], o["a"], o["e"], o["i"], o["H"], o["sigma"], o["arc"], o["cc"])) for o in out]) + print("recorded") + + +hourspins_DOC = r"""Asteroid spins on the clock: rotation periods of the Asteroid Lightcurve Database's frequency-diameter table with secure quality (U of 3) and at least three decimals, those within 0.02 per cent of a whole number of hours between 2 and 48, a spin set to Earth's hours, against the same windows at half-hours and the count uniform fractions give; a period near 24 hours is also where diurnal aliasing leaves wrong values, so the day and its harmonics are counted apart. + + python -I seti.py solar_system hourspins [record] [--tol-rel 0.0002] [--p-min-h 2] [--p-max-h 48]""" + + +def hourspins_main(record=False, tol_rel=0.0002, p_min_h=2.0, p_max_h=48.0): + from scipy.stats import poisson + p = core.data("lcdb", "F-D_BASIC.TXT") + lines = open(p, encoding="latin-1").read().splitlines() + hi = [i for i, ln in enumerate(lines) if ln.startswith("Number")][0] + hdr = lines[hi] + fam, nm, cl = hdr.index("Fam"), hdr.index("Name"), hdr.index("Class") + out, half, n_sec, sum_p = [], [], 0, 0.0 + for ln in lines[hi + 2:]: + if not ln.strip(): + continue + tok = ln[fam:].split() + try: + H, D, P = float(tok[1].strip("<>")), float(tok[3].strip("<>")), float(tok[4].strip("<>")) + except (ValueError, IndexError): + continue + U = next((x for x in tok[6:] if re.fullmatch(r"[0-3][+-]?", x)), None) + dec = len(tok[4].split(".")[1]) if "." in tok[4] else 0 + if U is None or not U.startswith("3") or dec < 3 or not p_min_h <= P <= p_max_h: + continue + n_sec += 1 + sum_p += P + n = round(P) + o = dict(num=ln[:nm].strip(), name=ln[nm:cl].strip(), H=H, D=D, P=P, n=int(n), off=P - n, U=U, dec=dec, day=n in (6, 8, 12, 24, 48)) + if abs(P - n) < tol_rel * P: + out.append(o) + elif abs(P - (math.floor(P) + 0.5)) < tol_rel * P: + half.append(o) + # uniform fractions: each period's window covers 2 tol_rel P of the unit interval + exp = 2 * tol_rel * sum_p + pday = [o for o in out if o["day"]] + rest = [o for o in out if not o["day"]] + pp = float(poisson.sf(len(out) - 1, exp)) if out else 1.0 + for o in out: + o["vet"] = "sky-sidereal" if o["day"] else ("chance-rate" if pp > 0.01 else None) + print("%d secure periods with three decimals between %g and %g h; within %g of a whole hour: %d (%.1f expected from uniform fractions, Poisson p %.3g), %d of them at " + "the day's harmonics 6, 8, 12, 24 and 48 h; at half-hours: %d" % (n_sec, p_min_h, p_max_h, tol_rel, len(out), exp, pp, len(pday), len(half))) + for o in sorted(out, key=lambda o: abs(o["off"]) / o["P"]): + print(" %-7s %-16s P %.4f h (%d, off by %+.4f), D %.2f km, H %.2f, U %s; %s" % (o["num"], o["name"], o["P"], o["n"], o["off"], o["D"], o["H"], o["U"], o["vet"])) + json.dump(dict(n=n_sec, hits=out, half=half), open(core.results("asteroid_hour_spins.json"), "w"), indent=1) + if record: + core.record_run( + "lcdb_hour_spins", "Asteroid spins on the clock", "Asteroid Lightcurve Database (LCDB) frequency-diameter table", + "secure periods (U 3) with three decimals between %g and %g h: %d" % (p_min_h, p_max_h, n_sec), os.path.abspath(__file__), "hourspins", n_sec, "asteroids", + dict(tol_rel=tol_rel, p_h=[p_min_h, p_max_h]), "uniform fractions give %.1f in the windows; the half-hour windows hold %d" % (exp, len(half)), + "a secure period within %g of a whole number of hours" % tol_rel, + "%d at whole hours against %.1f expected and %d at half-hours (Poisson p %.3g); %d sit at the day's harmonics" % (len(out), exp, len(half), pp, len(pday)), + [dict(target="mpc:%s" % (o["num"] or o["name"]), stat=o["off"], unit="hours from a whole hour", vet=o["vet"], + note="%s, P %.4f h, D %.2f km, U %s" % (o["name"], o["P"], o["D"], o["U"])) for o in out]) + print("recorded") + + +lagrange_DOC = r"""Lurkers at Earth's Lagrange points: asteroids of JPL's Small-Body Database with semi-major axes within 0.01 au of Earth's, eccentricities below 0.3 and inclinations below 30 deg, placed by their mean longitude at epoch relative to Earth's; a body kept at L4 or L5 sits 60 deg ahead of or behind Earth, where a watcher of Earth would park, and the count within 20 deg of each point is set against the other longitudes of the same ring. Earth's own Trojans and horseshoe companions sit there by nature, so each match is read for its name, arc and condition code. + + python -I seti.py solar_system lagrange [record] [--da-au 0.01] [--e-max 0.3] [--i-max-deg 30] [--half-width-deg 20]""" + + +def lagrange_main(record=False, da_au=0.01, e_max=0.3, i_max_deg=30.0, half_width_deg=20.0): + from scipy.stats import poisson + rows = sbdb_rows(["a|GT|%g" % (1 - da_au), "a|LT|%g" % (1 + da_au), "e|LT|%g" % e_max, "i|LT|%g" % i_max_deg], + "full_name,pdes,a,e,i,om,w,ma,epoch,H,data_arc,n_obs_used,condition_code") + out = [] + for r in rows: + om, w, ma, ep = num(r["om"]), num(r["w"]), num(r["ma"]), num(r["epoch"]) + if None in (om, w, ma, ep): + continue + lam = (om + w + ma) % 360.0 + # Earth's mean longitude at the epoch (Simon et al. 1994) + earth = (100.46435 + 0.985609101 * (ep - 2451545.0)) % 360.0 + d = (lam - earth + 180.0) % 360.0 - 180.0 + out.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), H=num(r["H"]), arc=num(r["data_arc"]), + nobs=num(r["n_obs_used"]), cc=num(r["condition_code"]), epoch=ep, dlon=d)) + l4 = [o for o in out if abs(o["dlon"] - 60) < half_width_deg] + l5 = [o for o in out if abs(o["dlon"] + 60) < half_width_deg] + rest = [o for o in out if abs(o["dlon"] - 60) >= half_width_deg and abs(o["dlon"] + 60) >= half_width_deg] + exp = len(out) * (2 * half_width_deg) / 360.0 + hist = {lo: sum(1 for o in out if lo <= o["dlon"] < lo + 30) for lo in range(-180, 180, 30)} + p4, p5 = (float(poisson.sf(len(x) - 1, exp)) if x else 1.0 for x in (l4, l5)) + for o in l4 + l5: + o["point"] = "L4" if o in l4 else "L5" + o["vet"] = ("unconstrained-geometry" if (o["cc"] or 0) >= 6 or (o["arc"] or 0) < 30 else "chance-rate" if min(p4, p5) > 0.01 else None) + print("%d asteroids within %g au of Earth's semi-major axis (e below %g, i below %g deg); within %g deg of L4: %d, of L5: %d, against %.1f expected per point from the ring " + "(Poisson p %.3g and %.3g); longitudes relative to Earth by 30 deg bins: %s" % (len(out), da_au, e_max, i_max_deg, half_width_deg, len(l4), len(l5), exp, p4, p5, hist)) + for o in sorted(l4 + l5, key=lambda o: abs(abs(o["dlon"]) - 60)): + print(" %s %s: %+.1f deg from Earth, a %.4f, e %.3f, i %.1f, H %s, arc %s d, condition %s; %s" % ( + o["point"], o["name"], o["dlon"], o["a"], o["e"], o["i"], o["H"], o["arc"], o["cc"], o["vet"] or "unexplained")) + json.dump(dict(n=len(out), hist=hist, l4=l4, l5=l5), open(core.results("earth_lagrange_points.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_earth_lagrange", "Lurkers at Earth's Lagrange points", "JPL Small-Body Database query API", + "asteroids within %g au of Earth's semi-major axis with e below %g and i below %g deg: %d" % (da_au, e_max, i_max_deg, len(out)), os.path.abspath(__file__), + "lagrange", len(out), "asteroids", dict(da_au=da_au, e_max=e_max, i_max_deg=i_max_deg, half_width_deg=half_width_deg), + "the ring's other longitudes: %.1f expected per point; the 30 deg bins hold %s" % (exp, list(hist.values())), + "a body within %g deg of L4 or L5 on an orbit the catalogue holds" % half_width_deg, + "%d at L4 and %d at L5 against %.1f expected (p %.3g and %.3g)" % (len(l4), len(l5), exp, p4, p5), + [dict(target="sbdb:%s" % o["pdes"], stat=o["dlon"], unit="deg of mean longitude ahead of Earth", vet=o["vet"], + note="%s at %s, a %.4f au, e %.3f, i %.1f deg, H %s, arc %s d, condition %s" % (o["name"], o["point"], o["a"], o["e"], o["i"], o["H"], o["arc"], o["cc"])) + for o in l4 + l5]) + print("recorded") + + +sunward_DOC = r"""Comets pushed toward the Sun: comets and asteroids of JPL's Small-Body Database whose radial non-gravitational term A1 is negative at three sigma, an acceleration toward the Sun that outgassing, which pushes a nucleus away from the Sun, cannot give and a thrust could; each read for its arc, condition code, the transverse term A2 and whether the solution carries a non-standard outgassing law, since a short arc, a correlated A1 and A2 pair and a fragmenting nucleus each leave a wrong sign. + + python -I seti.py solar_system sunward [record] [--sigma 3]""" + + +def sunward_main(record=False, sigma=3.0): + out, n = [], {} + for kind in ("c", "a"): + rows = sbdb_rows(["A1|LT|0"], "full_name,pdes,A1,A1_sigma,A2,A2_sigma,A3,A3_sigma,DT,e,q,a,i,data_arc,n_obs_used,condition_code,class", kind=kind) + n[kind] = len(rows) + for r in rows: + a1, s1 = num(r["A1"]), num(r["A1_sigma"]) + if a1 is None or not s1: + continue + z = -a1 / s1 + if z < sigma: + continue + cc = num(r["condition_code"]) + a2, s2 = num(r["A2"]), num(r["A2_sigma"]) + out.append(dict(kind="comet" if kind == "c" else "asteroid", name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], A1=a1, A1_sigma=s1, z=z, A2=a2, A2_sigma=s2, + A3=num(r["A3"]), DT=num(r["DT"]), e=num(r["e"]), q=num(r["q"]), a=num(r["a"]), i=num(r["i"]), arc=num(r["data_arc"]), nobs=num(r["n_obs_used"]), + cc=cc, cls=r["class"], + vet=("unconstrained-geometry" if (cc is not None and cc >= 6) or (num(r["data_arc"]) or 0) < 100 else + "fit-degeneracy" if a2 is not None and s2 and abs(a2 / s2) >= sigma and abs(a2) > abs(a1) else + "fit-degeneracy" if num(r["DT"]) is not None else None))) + left = [o for o in out if o["vet"] is None] + print("bodies with a negative A1 in the Small-Body Database: %d comets and %d asteroids; negative at %g sigma: %d, of them %d on short or poor arcs, %d with a larger " + "transverse term or a shifted outgassing law; unexplained %d" % (n["c"], n["a"], sigma, len(out), sum(o["vet"] == "unconstrained-geometry" for o in out), + sum(o["vet"] == "fit-degeneracy" for o in out), len(left))) + for o in sorted(out, key=lambda o: -o["z"]): + print(" %s %s: A1 %.3e +- %.1e (%.1f sigma), A2 %s +- %s, A3 %s, DT %s; q %.2f au, e %.3f, arc %s d, %s obs, condition %s; %s" % ( + o["kind"], o["name"], o["A1"], o["A1_sigma"], o["z"], o["A2"], o["A2_sigma"], o["A3"], o["DT"], o["q"], o["e"], o["arc"], o["nobs"], o["cc"], o["vet"] or "unexplained")) + json.dump(out, open(core.results("sunward_pushed.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_sunward_a1", "Comets pushed toward the Sun", "JPL Small-Body Database query API", + "comets and asteroids with a negative radial non-gravitational term: %d and %d" % (n["c"], n["a"]), os.path.abspath(__file__), "sunward", n["c"] + n["a"], + "bodies", dict(sigma=sigma), "each solution's arc, condition code, transverse term and outgassing law", + "a radial non-gravitational acceleration toward the Sun at %g sigma" % sigma, + "%d at %g sigma: %d on short or poor arcs, %d with a larger transverse term or a shifted law; %d unexplained" % ( + len(out), sigma, sum(o["vet"] == "unconstrained-geometry" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), len(left)), + [dict(target="sbdb:%s" % o["pdes"], stat=o["z"], unit="sigma of A1 below zero", vet=o["vet"], + note="%s %s, A1 %.3e +- %.1e, A2 %s +- %s, DT %s, q %.2f au, arc %s d, condition %s" % ( + o["kind"], o["name"], o["A1"], o["A1_sigma"], o["A2"], o["A2_sigma"], o["DT"], o["q"], o["arc"], o["cc"])) for o in out]) + print("recorded") + + +polar_DOC = r"""Asteroids on polar orbits: asteroids and comets of JPL's Small-Body Database on bound orbits whose inclination lies within 0.5 deg of 90 deg, an orbit standing square to the planets' plane, where no resonance or planet places a body and a made orbit surveying the system from above would sit, against the bands 1-3 deg either side and the count a flat inclination density gives, each read for its arc and condition code. + + python -I seti.py solar_system polar [record] [--half-width-deg 0.5] [--band-deg 3] [--condition-max 6]""" + + +def polar_main(record=False, half_width_deg=0.5, band_deg=3.0, condition_max=6): + from scipy.stats import poisson + rows = [] + for kind in ("a", "c"): + rows += [dict(r, kind=kind) for r in sbdb_rows(["i|GT|%g" % (90 - band_deg), "i|LT|%g" % (90 + band_deg), "e|LT|1"], + "full_name,pdes,a,e,i,q,H,data_arc,n_obs_used,condition_code,class", kind=kind)] + hits = [r for r in rows if abs(num(r["i"]) - 90) < half_width_deg] + ctl = [r for r in rows if abs(num(r["i"]) - 90) >= half_width_deg] + exp = len(rows) * (2 * half_width_deg) / (2 * band_deg) + p = float(poisson.sf(len(hits) - 1, exp)) if hits else 1.0 + out = [] + for r in hits: + cc = num(r["condition_code"]) + out.append(dict(kind="comet" if r["kind"] == "c" else "asteroid", name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), + q=num(r["q"]), H=num(r["H"]), arc=num(r["data_arc"]), nobs=num(r["n_obs_used"]), cc=cc, cls=r["class"], + vet=("unconstrained-geometry" if (cc is not None and cc >= condition_max) or (num(r["data_arc"]) or 0) < 30 else "chance-rate" if p > 0.01 else None))) + print("%d bound orbits within %g deg of 90 deg inclination; within %g deg: %d (%.1f expected from a flat density, Poisson p %.3g); the bands either side hold %d" % ( + len(rows), band_deg, half_width_deg, len(hits), exp, p, len(ctl))) + for o in sorted(out, key=lambda o: abs(o["i"] - 90)): + print(" %s %s: i %.3f, a %.2f au, e %.3f, q %.2f au, H %s, arc %s d, condition %s, %s; %s" % ( + o["kind"], o["name"], o["i"], o["a"], o["e"], o["q"], o["H"], o["arc"], o["cc"], o["cls"], o["vet"] or "unexplained")) + json.dump(dict(n=len(rows), hits=out), open(core.results("polar_orbits.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_polar_orbits", "Asteroids on polar orbits", "JPL Small-Body Database query API", "bound orbits within %g deg of 90 deg inclination: %d" % (band_deg, len(rows)), + os.path.abspath(__file__), "polar", len(rows), "orbits", dict(half_width_deg=half_width_deg, band_deg=band_deg, condition_max=condition_max), + "a flat inclination density across the band gives %.1f; the bands either side hold %d" % (exp, len(ctl)), + "an orbit within %g deg of polar that the catalogue holds" % half_width_deg, "%d against %.1f expected (Poisson p %.3g)" % (len(hits), exp, p), + [dict(target="sbdb:%s" % o["pdes"], stat=o["i"] - 90, unit="deg from a polar orbit", vet=o["vet"], + note="%s %s, a %.2f au, e %.3f, q %.2f au, H %s, arc %s d, condition %s, %s" % (o["kind"], o["name"], o["a"], o["e"], o["q"], o["H"], o["arc"], o["cc"], o["cls"])) + for o in out]) + print("recorded") + + +giantcircles_DOC = r"""Circles between the giant planets: asteroids and comets of JPL's Small-Body Database with semi-major axes of 5.5-30 au and eccentricities below 0.02, orbits circular to two per cent in the region the giant planets stir, where a Centaur's orbit is thrown about on a scale of a million years and a circle lasts no longer, so a body kept on one is held there; against the Centaurs' own eccentricities, each read for its arc and condition code and for a resonance with a planet that could hold it. + + python -I seti.py solar_system giantcircles [record] [--a-min-au 5.5] [--a-max-au 30] [--e-max 0.02] [--condition-max 6]""" + + +def giantcircles_main(record=False, a_min_au=5.5, a_max_au=30.0, e_max=0.02, condition_max=6): + rows = [] + for kind in ("a", "c"): + rows += [dict(r, kind=kind) for r in sbdb_rows(["a|GT|%g" % a_min_au, "a|LT|%g" % a_max_au, "e|LT|%g" % e_max, "e|GE|0", "q|GT|5.2"], + "full_name,pdes,a,e,i,q,H,data_arc,n_obs_used,condition_code,class", kind=kind)] + all_rows = [] + for kind in ("a",): + all_rows += sbdb_rows(["a|GT|%g" % a_min_au, "a|LT|%g" % a_max_au, "e|LT|0.3", "q|GT|5.2"], "pdes,e,class", kind=kind) + es = np.array([num(r["e"]) for r in all_rows if num(r["e"]) is not None]) + planets = {"Jupiter": 5.2026, "Saturn": 9.5549, "Uranus": 19.2184, "Neptune": 30.110} + out = [] + for r in rows: + a, cc = num(r["a"]), num(r["condition_code"]) + # a semi-major axis within 2 per cent of a planet's, or at a 3:2, 2:1 or 1:2 ratio, is a resonance that can hold a circle + res = [(pn, ratio) for pn, pa in planets.items() for ratio in (1.0, (3 / 2) ** (2 / 3), 2 ** (2 / 3), 2 ** (-2 / 3)) if abs(a / (pa * ratio) - 1) < 0.02] + out.append(dict(kind="comet" if r["kind"] == "c" else "asteroid", name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], a=a, e=num(r["e"]), i=num(r["i"]), + q=num(r["q"]), H=num(r["H"]), arc=num(r["data_arc"]), nobs=num(r["n_obs_used"]), cc=cc, cls=r["class"], resonance=res, + vet=("unconstrained-geometry" if (cc is not None and cc >= condition_max) or (num(r["data_arc"]) or 0) < 365 else "near-resonance" if res else None))) + left = [o for o in out if o["vet"] is None] + print("%d bodies with a %g-%g au and e below 0.3 beyond Jupiter; eccentricities median %.3f, 5th percentile %.3f; below %g: %d, %d on short or poor arcs, %d near a " + "planet's resonance; unexplained %d" % (len(es), a_min_au, a_max_au, float(np.median(es)) if len(es) else 0, float(np.percentile(es, 5)) if len(es) else 0, e_max, + len(out), sum(o["vet"] == "unconstrained-geometry" for o in out), sum(o["vet"] == "near-resonance" for o in out), len(left))) + for o in sorted(out, key=lambda o: o["e"]): + print(" %s %s: a %.3f au, e %.4f, i %.1f, q %.2f, H %s, arc %s d, %s obs, condition %s, %s, resonance %s; %s" % ( + o["kind"], o["name"], o["a"], o["e"], o["i"], o["q"], o["H"], o["arc"], o["nobs"], o["cc"], o["cls"], o["resonance"] or "-", o["vet"] or "unexplained")) + json.dump(dict(n=len(es), hits=out), open(core.results("giant_region_circles.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_giant_region_circles", "Circles between the giant planets", "JPL Small-Body Database query API", + "bodies with a %g-%g au, e below 0.3 and q beyond Jupiter: %d" % (a_min_au, a_max_au, len(es)), os.path.abspath(__file__), "giantcircles", len(es), "bodies", + dict(a_au=[a_min_au, a_max_au], e_max=e_max, condition_max=condition_max), "the region's own eccentricities: median %.3f, 5th percentile %.3f" % ( + float(np.median(es)) if len(es) else 0, float(np.percentile(es, 5)) if len(es) else 0), + "an orbit circular to %g between the giant planets on a year's arc" % e_max, + "%d: %d on short or poor arcs, %d near a planet's resonance; %d unexplained" % (len(out), sum(o["vet"] == "unconstrained-geometry" for o in out), + sum(o["vet"] == "near-resonance" for o in out), len(left)), + [dict(target="sbdb:%s" % o["pdes"], stat=o["e"], unit="eccentricity", vet=o["vet"], + note="%s %s, a %.3f au, i %.1f deg, q %.2f au, H %s, arc %s d, condition %s, %s, resonance %s" % ( + o["kind"], o["name"], o["a"], o["i"], o["q"], o["H"], o["arc"], o["cc"], o["cls"], o["resonance"] or "-")) for o in out]) + print("recorded") + + +ecliptic_DOC = r"""Asteroids in the ecliptic to the hundredth of a degree: asteroids and comets of JPL's Small-Body Database with inclinations below 0.02 deg, orbits lying in Earth's own orbital plane to a part in ten thousand of a radian, a plane that nothing in the belt's dynamics singles out (the invariable plane lies 1.6 deg away) and a made orbit might; against the count the belt's own inclination density gives below 2 deg, where the density of orbits falls as the inclination itself, each read for its arc and condition code. + + python -I seti.py solar_system ecliptic [record] [--i-max-deg 0.02] [--band-deg 2] [--condition-max 6]""" + + +def ecliptic_main(record=False, i_max_deg=0.02, band_deg=2.0, condition_max=6): + from scipy.stats import poisson + rows = [] + for kind in ("a", "c"): + rows += [dict(r, kind=kind) for r in sbdb_rows(["i|LT|%g" % band_deg, "e|LT|1"], "full_name,pdes,a,e,i,q,H,data_arc,n_obs_used,condition_code,class", kind=kind)] + incs = np.array([num(r["i"]) for r in rows if num(r["i"]) is not None]) + hits = [r for r in rows if num(r["i"]) is not None and num(r["i"]) < i_max_deg] + # a density rising as the inclination from zero puts the fraction (i_max / band)^2 of the band inside i_max + exp = len(incs) * (i_max_deg / band_deg) ** 2 + # the band's own density, read from 0.02-0.2 deg, scaled to the window + inner = int(((incs >= i_max_deg) & (incs < 10 * i_max_deg)).sum()) + exp2 = inner * (i_max_deg ** 2) / ((10 * i_max_deg) ** 2 - i_max_deg ** 2) + p = float(poisson.sf(len(hits) - 1, exp2)) if hits else 1.0 + out = [] + for r in hits: + cc = num(r["condition_code"]) + out.append(dict(kind="comet" if r["kind"] == "c" else "asteroid", name=" ".join(str(r["full_name"]).split()), pdes=r["pdes"], a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), + q=num(r["q"]), H=num(r["H"]), arc=num(r["data_arc"]), nobs=num(r["n_obs_used"]), cc=cc, cls=r["class"], + vet=("unconstrained-geometry" if (cc is not None and cc >= condition_max) or (num(r["data_arc"]) or 0) < 30 else "chance-rate" if p > 0.01 else None))) + print("%d bound orbits within %g deg of the ecliptic; within %g deg: %d (%.1f expected from a density rising as the inclination, %.1f from the band's own density at " + "%g-%g deg; Poisson p %.3g)" % (len(incs), band_deg, i_max_deg, len(hits), exp, exp2, i_max_deg, 10 * i_max_deg, p)) + for o in sorted(out, key=lambda o: o["i"]): + print(" %s %s: i %.4f deg, a %.3f au, e %.3f, H %s, arc %s d, %s obs, condition %s, %s; %s" % ( + o["kind"], o["name"], o["i"], o["a"], o["e"], o["H"], o["arc"], o["nobs"], o["cc"], o["cls"], o["vet"] or "unexplained")) + json.dump(dict(n=len(incs), hits=out), open(core.results("ecliptic_orbits.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_in_the_ecliptic", "Asteroids in the ecliptic to the hundredth of a degree", "JPL Small-Body Database query API", + "bound orbits within %g deg of the ecliptic: %d" % (band_deg, len(incs)), os.path.abspath(__file__), "ecliptic", len(incs), "orbits", + dict(i_max_deg=i_max_deg, band_deg=band_deg, condition_max=condition_max), + "the band's own density at %g-%g deg gives %.1f in the window; a density rising as the inclination gives %.1f" % (i_max_deg, 10 * i_max_deg, exp2, exp), + "an orbit within %g deg of the ecliptic that the catalogue holds" % i_max_deg, "%d against %.1f expected (Poisson p %.3g)" % (len(hits), exp2, p), + [dict(target="sbdb:%s" % o["pdes"], stat=o["i"], unit="inclination, deg", vet=o["vet"], + note="%s %s, a %.3f au, e %.3f, H %s, arc %s d, condition %s, %s" % (o["kind"], o["name"], o["a"], o["e"], o["H"], o["arc"], o["cc"], o["cls"])) for o in out]) + print("recorded") + + +pushed_DOC = r"""Asteroids pushed harder than sunlight allows: Small-Body Database asteroids with a transverse non-gravitational term A2 at 3 sigma, scaled by their diameter (measured, or from H at albedo 0.14) against the Yarkovsky drift of Bennu, the lowest-density body with a measured drift and so near the ceiling sunlight sets at any size; a body whose lower bound exceeds twice Bennu's scaled term is being pushed by something other than re-radiated sunlight, which is outgassing from a dark comet or a thrust; each read against the published dark comets, the asteroids imaged in activity, the bodies of our own launching, and the arc its term rests on. + + python -I seti.py solar_system pushed [record] [--sigma 3] [--margin 2] [--albedo 0.14] [--arc-min-d 1000]""" + +# Bennu's transverse term and diameter (Farnocchia et al. 2021), the calibration of the ceiling +PUSHED_BENNU_A2 = 4.618e-14 +PUSHED_BENNU_D_KM = 0.49 +# the dark comets (Seligman et al. 2023, 2024) and the bodies of our own launching in the database +PUSHED_DARK_COMETS = {"1998 KY26", "2003 RM", "2005 VL1", "2006 RH120", "2010 RF12", "2010 VL65", "2016 NJ33", "1998 FR11", "1998 SH2", "2001 ME1", "2005 UY6", "2012 UR158", + "2016 TA56"} +PUSHED_LAUNCHED = {"2020 SO"} +# asteroids whose activity has been imaged +PUSHED_ACTIVE = {"2008 GO98"} + + +def pushed_main(record=False, sigma=3.0, margin=2.0, albedo=0.14, arc_min_d=1000.0): + rows = sbdb_rows(["A2|DF"], "full_name,pdes,A1,A1_sigma,A2,A2_sigma,A3,A3_sigma,H,diameter,albedo,e,a,q,i,data_arc,n_obs_used,condition_code,class", kind="a") + out, n = [], 0 + for r in rows: + a2, s2 = num(r["A2"]), num(r["A2_sigma"]) + if a2 is None or not s2: + continue + n += 1 + if abs(a2) / s2 < sigma: + continue + d = num(r["diameter"]) + h = num(r["H"]) + if d is None and h is not None: + d = 1329.0 * 10 ** (-h / 5.0) / math.sqrt(num(r["albedo"]) or albedo) + if not d: + continue + ceiling = PUSHED_BENNU_A2 * PUSHED_BENNU_D_KM / d + low = (abs(a2) - sigma * s2) / ceiling + if low < margin: + continue + pdes = str(r["pdes"]).strip() + name = " ".join(str(r["full_name"]).split()) + prov = re.search(r"\(([^)]+)\)", name) + prov = prov.group(1) if prov else name + arc = num(r["data_arc"]) or 0 + a1, s1 = num(r["A1"]), num(r["A1_sigma"]) + out.append(dict(name=name, pdes=pdes, A2=a2, A2_sigma=s2, A1=a1, A1_sigma=s1, d_km=d, h=h, ratio=abs(a2) / ceiling, low=low, arc_d=arc, n_obs=num(r["n_obs_used"]), + cls=r["class"], a=num(r["a"]), e=num(r["e"]), q=num(r["q"]), + vet=("dark-comet" if prov in PUSHED_DARK_COMETS else "activity" if prov in PUSHED_ACTIVE else "our-launch" if prov in PUSHED_LAUNCHED else + "fit-degeneracy" if arc < arc_min_d else None))) + left = [o for o in out if o["vet"] is None] + print("%d asteroids with a transverse term; at %g sigma and more than %g times Bennu's term scaled to their size: %d (%d dark comets, %d active, %d of our launching, %d on arcs " + "under %g d); unexplained %d" % (n, sigma, margin, len(out), sum(o["vet"] == "dark-comet" for o in out), sum(o["vet"] == "activity" for o in out), + sum(o["vet"] == "our-launch" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), arc_min_d, len(left))) + for o in sorted(out, key=lambda o: -o["low"]): + print(" %s: A2 %.3e +- %.1e au/d^2 (A1 %s +- %s), D %.4f km, %.0f times Bennu's scaled term (lower bound %.0f), %s, arc %.0f d, %s obs, a %.3f e %.3f; %s" % ( + o["name"], o["A2"], o["A2_sigma"], o["A1"], o["A1_sigma"], o["d_km"], o["ratio"], o["low"], o["cls"], o["arc_d"], o["n_obs"], o["a"], o["e"], o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out), open(core.results("asteroids_pushed.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_pushed_asteroids", "Asteroids pushed harder than sunlight allows", "JPL Small-Body Database (sbdb_query.api)", "asteroids with a transverse non-gravitational term: %d" % n, + os.path.abspath(__file__), "pushed", n, "asteroids", dict(sigma=sigma, margin=margin, albedo=albedo, arc_min_d=arc_min_d, bennu_a2=PUSHED_BENNU_A2, bennu_d_km=PUSHED_BENNU_D_KM), + "Bennu's term scaled by diameter as the ceiling of re-radiated sunlight, with a margin of %g" % margin, + "a transverse term at %g sigma whose lower bound exceeds the Yarkovsky ceiling for the body's size" % sigma, + "%d: %d dark comets, %d active, %d of our own launching, %d on arcs under %g d; %d unexplained" % ( + len(out), sum(o["vet"] == "dark-comet" for o in out), sum(o["vet"] == "activity" for o in out), sum(o["vet"] == "our-launch" for o in out), + sum(o["vet"] == "fit-degeneracy" for o in out), arc_min_d, len(left)), + [dict(target="sbdb:%s" % o["pdes"], stat=round(o["ratio"], 1), unit="times Bennu's term scaled to the diameter", vet=o["vet"], + note="A2 %.3e +- %.1e au/d^2, D %.4f km, %s, arc %.0f d, %s obs" % (o["A2"], o["A2_sigma"], o["d_km"], o["cls"], o["arc_d"], o["n_obs"])) for o in out]) + print("recorded") + + +reflspike_DOC = r"""Emission lines in asteroid reflectance: Gaia DR3's mean reflectance spectra of asteroids (sso_reflectance_spectrum, sixteen bands from 374 to 1034 nm normalised at 550 nm), bands whose reflectance stands more than 0.3 and five combined errors above the mean of their two neighbours, a line of light the surface adds to the sunlight it returns, which no mineral does and a laser or lamp would; the interior bands alone, since the two at each end carry the instrument's own fall-off and are often flagged, with each spike read for the flags on its band and the number of spectra behind it. + + python -I seti.py solar_system reflspike [record] [--jump 0.3] [--sigma 5] [--edge-bands 2] [--floor 1.5]""" + + +def reflspike_main(record=False, jump=0.3, sigma=5.0, edge_bands=2, floor=1.5): + hot = core.tap_async("gaia", "SELECT DISTINCT number_mp FROM gaiadr3.sso_reflectance_spectrum WHERE reflectance_spectrum > %g AND reflectance_spectrum_flag = 0" % floor, maxrec=100000) + ids = sorted({int(r["number_mp"]) for r in hot}) + spectra = {} + for k in range(0, len(ids), 500): + for r in core.tap_async("gaia", "SELECT number_mp, denomination, num_of_spectra, wavelength, reflectance_spectrum, reflectance_spectrum_err, reflectance_spectrum_flag FROM " + "gaiadr3.sso_reflectance_spectrum WHERE number_mp IN (%s)" % ",".join(str(i) for i in ids[k:k + 500]), maxrec=100000): + spectra.setdefault(int(r["number_mp"]), []).append(r) + n_all = core.tap("gaia", "SELECT COUNT(DISTINCT number_mp) AS n FROM gaiadr3.sso_reflectance_spectrum")[0]["n"] + out = [] + for mp, rows in spectra.items(): + rows.sort(key=lambda r: float(r["wavelength"])) + w = [float(r["wavelength"]) for r in rows] + f = [num(r["reflectance_spectrum"]) for r in rows] + e = [num(r["reflectance_spectrum_err"]) for r in rows] + fl = [int(num(r["reflectance_spectrum_flag"]) or 0) for r in rows] + for i in range(edge_bands, len(rows) - edge_bands): + if None in (f[i], f[i - 1], f[i + 1], e[i], e[i - 1], e[i + 1]): + continue + base = 0.5 * (f[i - 1] + f[i + 1]) + err = math.sqrt(e[i] ** 2 + 0.25 * (e[i - 1] ** 2 + e[i + 1] ** 2)) + if f[i] - base > jump and (f[i] - base) / err > sigma: + out.append(dict(mp=mp, name=" ".join(str(rows[0]["denomination"]).split()), nm=w[i], refl=f[i], base=base, err=err, z=(f[i] - base) / err, flags=(fl[i - 1], fl[i], fl[i + 1]), + n_spec=int(num(rows[0]["num_of_spectra"]) or 0), spectrum=[round(x, 3) if x is not None else None for x in f], + vet="artefact" if fl[i] or fl[i - 1] or fl[i + 1] else "single-record" if int(num(rows[0]["num_of_spectra"]) or 0) < 2 else None)) + left = [o for o in out if o["vet"] is None] + print("%s asteroids with reflectance spectra, %d with an unflagged interior band above %g; bands %g and %g sigma above their neighbours: %d (%d on flagged bands, %d from a single " + "spectrum); unexplained %d" % (n_all, len(spectra), floor, jump, sigma, len(out), sum(o["vet"] == "artefact" for o in out), sum(o["vet"] == "single-record" for o in out), + len(left))) + for o in sorted(out, key=lambda o: -o["z"]): + print(" (%d) %s: %.0f nm at %.2f against %.2f beside it (%.1f sigma), flags %s, %d spectra: %s; %s" % ( + o["mp"], o["name"], o["nm"], o["refl"], o["base"], o["z"], o["flags"], o["n_spec"], o["spectrum"], o["vet"] or "unexplained")) + json.dump(dict(n=n_all, hot=len(spectra), hits=out), open(core.results("asteroid_reflectance_spikes.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_sso_reflectance_spikes", "Emission lines in asteroid reflectance", "Gaia DR3 sso_reflectance_spectrum", + "asteroids with reflectance spectra: %s, %d with an unflagged interior band above %g" % (n_all, len(spectra), floor), os.path.abspath(__file__), "reflspike", int(n_all), + "asteroids", dict(jump=jump, sigma=sigma, edge_bands=edge_bands, floor=floor), "the bands' own flags and the count of spectra behind each mean", + "an interior band more than %g and %g sigma above the mean of its neighbours" % (jump, sigma), + "%d: %d on flagged bands, %d from a single spectrum; %d unexplained" % (len(out), sum(o["vet"] == "artefact" for o in out), sum(o["vet"] == "single-record" for o in out), + len(left)), + [dict(target="asteroid:%d" % o["mp"], stat=round(o["z"], 1), unit="sigma above the neighbouring bands", vet=o["vet"], + note="%s, %.0f nm at %.2f against %.2f, flags %s, %d spectra" % (o["name"], o["nm"], o["refl"], o["base"], o["flags"], o["n_spec"])) for o in out]) + print("recorded") + + +hyperbolic_DOC = r"""Hyperbolic excess beyond planetary perturbation: Small-Body Database asteroids and comets with eccentricity above 1, their speed at infinity from the eccentricity's 3 sigma lower bound and the perihelion distance, those arriving from beyond the Sun's hold at more than 4 km/s, above the 3.9 km/s that C/1980 E1's Jupiter encounter gave it, the most any recorded planetary encounter has imparted, which the interstellar objects and a visitor on its own course show; each read against the published interstellar objects and the recorded planetary encounters, with the fragments of split comets and short arcs named. + + python -I seti.py solar_system hyperbolic [record] [--vinf-min-kms 4] [--sigma 3] [--arc-min-d 60]""" + +# the published interstellar objects and the comets whose hyperbolic orbits a recorded planetary encounter made +HYPERBOLIC_INTERSTELLAR = {"A/2017 U1", "C/2019 Q4", "C/2025 N1", "1I/", "2I/", "3I/"} +HYPERBOLIC_ENCOUNTERS = {"C/1980 E1": "Jupiter, 1980", "C/2024 L5": "Saturn, 2022"} +HYPERBOLIC_GM = 2.9591220828e-4 + + +def hyperbolic_main(record=False, vinf_min_kms=4.0, sigma=3.0, arc_min_d=60.0): + out, n = [], {} + for kind in ("a", "c"): + rows = sbdb_rows(["e|GT|1"], "full_name,pdes,e,sigma_e,q,sigma_q,i,data_arc,n_obs_used,condition_code,class", kind=kind) + n[kind] = len(rows) + for r in rows: + e, se, q = num(r["e"]), num(r["sigma_e"]), num(r["q"]) + if e is None or q is None or q <= 0: + continue + se = se or 0.0 + e_low = e - sigma * se + vinf = math.sqrt(HYPERBOLIC_GM * (e - 1) / q) * 1731.456837 if e > 1 else 0.0 + v_low = math.sqrt(HYPERBOLIC_GM * (e_low - 1) / q) * 1731.456837 if e_low > 1 else 0.0 + if v_low < vinf_min_kms: + continue + name = " ".join(str(r["full_name"]).split()) + key = next((k for k in HYPERBOLIC_INTERSTELLAR if k in name), None) + enc = next((v for k, v in HYPERBOLIC_ENCOUNTERS.items() if k in name), None) + frag = re.search(r"-[A-Z]", name.split(" (")[0]) is not None + arc = num(r["data_arc"]) or 0 + out.append(dict(kind="asteroid" if kind == "a" else "comet", name=name, pdes=str(r["pdes"]).strip(), e=e, sigma_e=se, q=q, i=num(r["i"]), vinf=vinf, v_low=v_low, + arc=arc, n_obs=num(r["n_obs_used"]), cls=r["class"], encounter=enc, + vet=("natural-source" if key else "planetary-encounter" if enc else "activity" if frag else "fit-degeneracy" if not se or arc < arc_min_d else None))) + left = [o for o in out if o["vet"] is None] + print("%d asteroids and %d comets with eccentricity above 1; speed at infinity above %g km/s at the eccentricity's %g sigma lower bound: %d (%d published interstellar objects, " + "%d from recorded planetary encounters, %d fragments of split comets, %d with no eccentricity error or an arc under %g d); unexplained %d" % ( + n["a"], n["c"], vinf_min_kms, sigma, len(out), sum(o["vet"] == "natural-source" for o in out), sum(o["vet"] == "planetary-encounter" for o in out), + sum(o["vet"] == "activity" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), arc_min_d, len(left))) + for o in sorted(out, key=lambda o: -o["v_low"]): + print(" %s (%s, %s): e %.5f +- %.5f, q %.3f au, i %.1f, v_inf %.2f km/s (lower bound %.2f), arc %s d, %s obs%s; %s" % ( + o["name"], o["kind"], o["cls"], o["e"], o["sigma_e"], o["q"], o["i"] or 0, o["vinf"], o["v_low"], o["arc"], o["n_obs"], + ", encounter " + o["encounter"] if o["encounter"] else "", o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out), open(core.results("hyperbolic_excess.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_hyperbolic_excess", "Hyperbolic excess beyond planetary perturbation", "JPL Small-Body Database (sbdb_query.api)", + "asteroids with e above 1: %d; comets: %d" % (n["a"], n["c"]), os.path.abspath(__file__), "hyperbolic", n["a"] + n["c"], "bodies", + dict(vinf_min_kms=vinf_min_kms, sigma=sigma, arc_min_d=arc_min_d), "the eccentricities' own errors; the published interstellar objects and planetary encounters", + "a speed at infinity above %g km/s at the eccentricity's %g sigma lower bound" % (vinf_min_kms, sigma), + "%d: %d interstellar objects, %d from recorded encounters, %d fragments, %d without an eccentricity error or on a short arc; %d unexplained" % ( + len(out), sum(o["vet"] == "natural-source" for o in out), sum(o["vet"] == "planetary-encounter" for o in out), sum(o["vet"] == "activity" for o in out), + sum(o["vet"] == "fit-degeneracy" for o in out), len(left)), + [dict(target="sbdb:%s" % o["pdes"], stat=round(o["v_low"], 2), unit="km/s at infinity, lower bound", vet=o["vet"], + note="%s, e %.5f +- %.5f, q %.3f au, v_inf %.2f km/s, arc %s d%s" % (o["kind"], o["e"], o["sigma_e"], o["q"], o["vinf"], o["arc"], + ", encounter " + o["encounter"] if o["encounter"] else "")) for o in out]) + print("recorded") + + +blackest_DOC = r"""Asteroids blacker than any surface: Small-Body Database asteroids whose geometric albedo lies below 0.02, darker than the darkest comet nuclei and primitive asteroids, the mark of a surface made to swallow light, read against AKARI's albedos (J/PASJ/63/1117) with their errors; a radiometric albedo rests on the diameter and the absolute magnitude together, so an albedo far below the floor is an absolute magnitude too faint or a diameter too large. + + python -I seti.py solar_system blackest [record] [--albedo 0.02] [--sigma 3]""" + + +def blackest_main(record=False, albedo=0.02, sigma=3.0): + rows = sbdb_rows(["albedo|LT|%g" % albedo], "full_name,pdes,H,albedo,diameter,diameter_sigma,class,spec_T,spec_B,n_obs_used,data_arc", kind="a") + nums = [str(r["pdes"]).strip() for r in rows if str(r["pdes"]).strip().isdigit()] + akari = {} + for k in range(0, len(nums), 500): + for a in core.tap("vizier", 'SELECT Num, Alb, e_Alb, Diam FROM "J/PASJ/63/1117/acua_v1" WHERE Num IN (%s)' % ",".join(nums[k:k + 500])): + akari[str(a["Num"]).strip()] = (num(a["Alb"]), num(a["e_Alb"]), num(a["Diam"])) + out = [] + for r in rows: + pdes = str(r["pdes"]).strip() + ak = akari.get(pdes) + firm = ak is not None and ak[0] is not None and ak[1] is not None and ak[0] + sigma * ak[1] < albedo + out.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=pdes, h=num(r["H"]), albedo=num(r["albedo"]), d=num(r["diameter"]), ds=num(r["diameter_sigma"]), + cls=r["class"], spec=(str(r["spec_T"] or "").strip() or str(r["spec_B"] or "").strip()), akari=ak, firm=firm, + vet=None if firm else "fit-degeneracy")) + firm = [o for o in out if o["firm"]] + print("%d asteroids with an albedo below %g in the database, %d of them with an AKARI albedo, %d below %g at AKARI's %g sigma upper bound; unexplained %d" % ( + len(out), albedo, sum(o["akari"] is not None for o in out), len(firm), albedo, sigma, len(firm))) + for o in sorted(out, key=lambda o: o["albedo"])[:25]: + print(" %s: albedo %.4f, D %s +- %s km, H %s, %s%s, AKARI %s; %s" % (o["name"], o["albedo"], o["d"], o["ds"], o["h"], o["cls"], " " + o["spec"] if o["spec"] else "", o["akari"], + o["vet"] or "unexplained")) + for o in firm: + print(" AKARI-firm %s: albedo %.4f, AKARI %.4f +- %.4f, D %s km; unexplained" % (o["name"], o["albedo"], o["akari"][0], o["akari"][1], o["akari"][2])) + json.dump(out, open(core.results("asteroids_blackest.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_blackest_asteroids", "Asteroids blacker than any surface", "JPL Small-Body Database (sbdb_query.api); AKARI asteroid catalogue (VizieR J/PASJ/63/1117)", + "asteroids with an albedo below %g: %d" % (albedo, len(out)), os.path.abspath(__file__), "blackest", len(out), "asteroids", dict(albedo=albedo, sigma=sigma), + "AKARI's albedos with their errors; the radiometric albedo's dependence on H and the diameter", "an albedo below %g at %g sigma in an independent measurement" % (albedo, sigma), + "%d below %g in the database, %d with AKARI albedos, %d of them below %g at %g sigma; %d unexplained" % (len(out), albedo, sum(o["akari"] is not None for o in out), len(firm), + albedo, sigma, len(firm)), + [dict(target="sbdb:%s" % o["pdes"], stat=o["albedo"], unit="geometric albedo", vet=o["vet"], + note="D %s +- %s km, H %s, %s%s, AKARI %s" % (o["d"], o["ds"], o["h"], o["cls"], " " + o["spec"] if o["spec"] else "", o["akari"])) for o in out]) + print("recorded") + + +copycomets_DOC = r"""Copy comets: Small-Body Database comets, pairs whose orbits agree under the Southworth-Hawkins criterion to 0.05, two bodies on one orbit, against the pairs' sharing of a parent designation (the fragments of a split comet), the sungrazing families whose perihelia lie inside 0.1 au and the published pairs and families of one parent, with the rest read for their arcs; a copy on an orbit no family claims is a second body placed on a known comet's path. + + python -I seti.py solar_system copycomets [record] [--d-max 0.05] [--family-q 0.1] [--arc-min-d 30]""" + + +def copycomets_sh(q1, e1, i1, o1, w1, q2, e2, i2, o2, w2): + """Southworth-Hawkins D between two orbits (perihelion distance in au, angles in radians).""" + I = 2 * math.asin(min(1.0, math.sqrt(math.sin((i1 - i2) / 2) ** 2 + math.sin(i1) * math.sin(i2) * math.sin((o1 - o2) / 2) ** 2))) + sign = 1 if abs(o1 - o2) <= math.pi else -1 + pi1, pi2 = w1 + o1, w2 + o2 + th = 2 * math.asin(min(1.0, math.cos((i1 + i2) / 2) * abs(math.sin((o1 - o2) / 2)) / max(math.cos(I / 2), 1e-9))) + P = (pi1 - pi2) + sign * th + return math.sqrt((e1 - e2) ** 2 + (q1 - q2) ** 2 + (2 * math.sin(I / 2)) ** 2 + (((e1 + e2) / 2) * 2 * math.sin(P / 2)) ** 2) + + +# the published pairs and families of comets split from one parent, by designation +COPYCOMETS_FAMILIES = [{"C/1988 F1", "C/1988 J1"}, {"C/1988 A1", "C/1996 Q1", "C/2015 F3", "C/2019 Y1", "C/2023 V5"}, {"C/1844 Y1", "C/2019 Y4"}, {"C/2002 A1", "C/2002 A2"}, + {"C/2002 Q2", "C/2002 Q3"}, {"169P", "P/2003 T12"}, {"C/1846 O1", "C/1973 D1"}, {"332P", "412P"}, {"C/2015 ER61", "C/2015 E61"}] + + +def copycomets_family(a, b): + """Whether two parent designations fall in one published comet family.""" + return any(a in f and b in f for f in COPYCOMETS_FAMILIES) + + +def copycomets_parent(name): + """A comet's designation with any fragment letter removed.""" + base = name.split(" (")[0].strip() + base = re.sub(r"-[A-Z]+\d*$", "", base) + return re.sub(r"^(\d+P)(/.*)?$", r"\1", base) + + +def copycomets_main(record=False, d_max=0.05, family_q=0.1, arc_min_d=30.0): + rows = sbdb_rows(["q|DF", "e|DF", "i|DF", "om|DF", "w|DF"], "full_name,pdes,prefix,q,e,i,om,w,per_y,data_arc,n_obs_used", kind="c") + cs = [] + for r in rows: + q, e, i, o, w = (num(r[k]) for k in ("q", "e", "i", "om", "w")) + if None in (q, e, i, o, w): + continue + cs.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=str(r["pdes"]).strip(), q=q, e=min(e, 1.0), i=math.radians(i), om=math.radians(o), w=math.radians(w), + arc=num(r["data_arc"]) or 0, n_obs=num(r["n_obs_used"]), per=num(r["per_y"]))) + q = np.array([c["q"] for c in cs]) + e = np.array([c["e"] for c in cs]) + inc = np.array([c["i"] for c in cs]) + near = (np.abs(q[:, None] - q[None, :]) < d_max) & (np.abs(e[:, None] - e[None, :]) < d_max) & (np.abs(inc[:, None] - inc[None, :]) < 2 * d_max) + pairs = [] + for a, b in np.argwhere(np.triu(near, 1)): + x, y = cs[a], cs[b] + d = copycomets_sh(x["q"], x["e"], x["i"], x["om"], x["w"], y["q"], y["e"], y["i"], y["om"], y["w"]) + if d < d_max: + pa, pb = copycomets_parent(x["name"]), copycomets_parent(y["name"]) + vet = ("activity" if pa == pb else "comet-family" if min(x["q"], y["q"]) < family_q or copycomets_family(pa, pb) else + "fit-degeneracy" if min(x["arc"], y["arc"]) < arc_min_d else None) + pairs.append(dict(a=x["name"], b=y["name"], d=d, q=(x["q"], y["q"]), e=(x["e"], y["e"]), i=(math.degrees(x["i"]), math.degrees(y["i"])), arcs=(x["arc"], y["arc"]), vet=vet)) + left = [p for p in pairs if p["vet"] is None] + print("%d comets with orbits; pairs with D below %g: %d (%d fragments of one comet, %d in the sungrazing families inside %g au or the published families, %d resting on an arc " + "under %g d); unexplained %d" % (len(cs), d_max, len(pairs), sum(p["vet"] == "activity" for p in pairs), sum(p["vet"] == "comet-family" for p in pairs), family_q, + sum(p["vet"] == "fit-degeneracy" for p in pairs), arc_min_d, len(left))) + for p in sorted(pairs, key=lambda p: (p["vet"] is not None, p["d"])): + if p["vet"] is None or (p["vet"] == "comet-family" and min(p["q"]) >= family_q) or p["vet"] == "fit-degeneracy": + print(" %s and %s: D %.3f, q %.3f/%.3f, e %.3f/%.3f, i %.1f/%.1f, arcs %.0f/%.0f d; %s" % ( + p["a"], p["b"], p["d"], p["q"][0], p["q"][1], p["e"][0], p["e"][1], p["i"][0], p["i"][1], p["arcs"][0], p["arcs"][1], p["vet"] or "unexplained")) + json.dump(dict(n=len(cs), pairs=pairs), open(core.results("comet_copies.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_copy_comets", "Copy comets", "JPL Small-Body Database (sbdb_query.api)", "comets with orbital elements: %d" % len(cs), os.path.abspath(__file__), "copycomets", + len(cs), "comets", dict(d_max=d_max, family_q=family_q, arc_min_d=arc_min_d), "the pairs' parent designations and the sungrazing families", + "two comets on one orbit under the Southworth-Hawkins criterion at %g" % d_max, + "%d pairs: %d fragments, %d in sungrazing families, %d on short arcs; %d unexplained" % ( + len(pairs), sum(p["vet"] == "activity" for p in pairs), sum(p["vet"] == "comet-family" for p in pairs), sum(p["vet"] == "fit-degeneracy" for p in pairs), len(left)), + [dict(target="comet:%s" % p["a"], stat=round(p["d"], 4), unit="Southworth-Hawkins D to its copy", vet=p["vet"], + note="with %s; q %.3f/%.3f, e %.3f/%.3f, i %.1f/%.1f, arcs %.0f/%.0f d" % (p["b"], p["q"][0], p["q"][1], p["e"][0], p["e"][1], p["i"][0], p["i"][1], p["arcs"][0], + p["arcs"][1])) for p in pairs if p["vet"] != "comet-family" or min(p["q"]) >= family_q]) + print("recorded") + + +jupl3_DOC = r"""Lurkers at Jupiter's far Lagrange point: Small-Body Database bodies with semi-major axes within 0.35 au of Jupiter's and eccentricities below 0.3, their mean longitudes at their element epochs against Jupiter's, the count within 20 deg of the L3 point opposite Jupiter, where nothing natural stays and a watcher of the planet could be parked, against the Trojan swarms at L4 and L5 and the passing bodies between; each body near L3 read for its class, since a Trojan of wide libration reaches far from its point, and for its arc. + + python -I seti.py solar_system jupl3 [record] [--half-width-deg 20] [--a-tol 0.35] [--e-max 0.3]""" + +JUPL3_A = 5.2026 + + +def jupl3_jupiter_longitude(jd): + """Jupiter's mean heliocentric longitude in degrees at Julian date JD from its mean elements.""" + return (34.39644051 + 3034.74612775 * (jd - 2451545.0) / 36525.0) % 360.0 + + +def jupl3_main(record=False, half_width_deg=20.0, a_tol=0.35, e_max=0.3): + rows = sbdb_rows(["a|RG|%g|%g" % (JUPL3_A - a_tol, JUPL3_A + a_tol), "e|LT|%g" % e_max], "full_name,pdes,a,e,i,om,w,ma,epoch,H,data_arc,n_obs_used,class", kind="a") + bodies = [] + for r in rows: + om, w, ma, ep = num(r["om"]), num(r["w"]), num(r["ma"]), num(r["epoch"]) + if None in (om, w, ma, ep): + continue + lam = (om + w + ma) % 360.0 + phase = (lam - jupl3_jupiter_longitude(ep)) % 360.0 + bodies.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=str(r["pdes"]).strip(), a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), phase=phase, H=num(r["H"]), + arc=num(r["data_arc"]) or 0, n_obs=num(r["n_obs_used"]), cls=str(r["class"]).strip())) + ph = np.array([b["phase"] for b in bodies]) + bins = {c: int(np.sum(np.abs((ph - c + 180) % 360 - 180) < half_width_deg)) for c in (0, 60, 120, 180, 240, 300)} + l3 = [b for b in bodies if abs((b["phase"] - 180 + 180) % 360 - 180) < half_width_deg] + for b in l3: + b["vet"] = "fit-degeneracy" if b["arc"] < 365 else "co-orbital" if b["cls"] == "TJN" else None + left = [b for b in l3 if b["vet"] is None] + print("%d bodies within %g au of Jupiter's semi-major axis with e below %g; within %g deg of the phases 0, 60, 120, 180, 240 and 300 deg from Jupiter: %s; at L3: %d (%d on arcs " + "under a year, %d Trojans librating widely); unexplained %d" % (len(bodies), a_tol, e_max, half_width_deg, bins, len(l3), sum(b["vet"] == "fit-degeneracy" for b in l3), + sum(b["vet"] == "co-orbital" for b in l3), len(left))) + for b in sorted(l3, key=lambda b: abs(b["phase"] - 180)): + print(" %s (%s): %.1f deg from Jupiter, a %.3f, e %.3f, i %.1f, H %s, arc %.0f d, %s obs; %s" % ( + b["name"], b["cls"], b["phase"], b["a"], b["e"], b["i"], b["H"], b["arc"], b["n_obs"], b["vet"] or "unexplained")) + json.dump(dict(n=len(bodies), bins=bins, l3=l3), open(core.results("jupiter_l3.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_jupiter_l3", "Lurkers at Jupiter's far Lagrange point", "JPL Small-Body Database (sbdb_query.api)", + "bodies within %g au of Jupiter's semi-major axis with e below %g: %d" % (a_tol, e_max, len(bodies)), os.path.abspath(__file__), "jupl3", len(bodies), "bodies", + dict(half_width_deg=half_width_deg, a_tol=a_tol, e_max=e_max), "the counts within %g deg of the phases 0, 60, 120, 240 and 300 deg: %s" % (half_width_deg, bins), + "a body within %g deg of the point opposite Jupiter on its orbit" % half_width_deg, "%d at L3 against %d and %d at L4 and L5; %d on short arcs, %d Trojans librating widely; %d unexplained" % ( + len(l3), bins[60], bins[300], sum(b["vet"] == "fit-degeneracy" for b in l3), sum(b["vet"] == "co-orbital" for b in l3), len(left)), + [dict(target="sbdb:%s" % b["pdes"], stat=round(b["phase"], 1), unit="deg from Jupiter along the orbit", vet=b["vet"], + note="%s, a %.3f, e %.3f, i %.1f, H %s, arc %.0f d" % (b["cls"], b["a"], b["e"], b["i"], b["H"], b["arc"])) for b in l3]) + print("recorded") + + +aimed_DOC = r"""Bodies aimed at Earth: Small-Body Database near-Earth asteroids with a minimum orbit intersection distance with Earth below 0.0001 au, 15,000 km, orbits that pass through the Earth itself or its near space, against the count the distribution of small intersection distances gives, which is uniform near zero so that the bin from 0.0001 to 0.001 au holds nine times the first; a body steered at us would crowd the first bin; bodies on arcs under a year are set aside, since a short arc leaves the intersection distance unfixed. + + python -I seti.py solar_system aimed [record] [--moid-au 0.0001] [--arc-min-d 365]""" + + +def aimed_main(record=False, moid_au=0.0001, arc_min_d=365.0): + from scipy.stats import poisson + rows = sbdb_rows(["moid|LT|%g" % (10 * moid_au), "neo|EQ|Y"], "full_name,pdes,moid,moid_ld,a,e,i,q,H,data_arc,n_obs_used,condition_code,pha", kind="a") + bodies, short = [], 0 + for r in rows: + m = num(r["moid"]) + if m is None: + continue + if (num(r["data_arc"]) or 0) < arc_min_d: + short += 1 + continue + bodies.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=str(r["pdes"]).strip(), moid=m, a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), H=num(r["H"]), + arc=num(r["data_arc"]) or 0, n_obs=num(r["n_obs_used"]), cc=num(r["condition_code"]))) + first = [b for b in bodies if b["moid"] < moid_au] + rest = len(bodies) - len(first) + exp = rest / 9.0 + p = float(poisson.sf(len(first) - 1, exp)) if first else 1.0 + for b in first: + b["vet"] = "chance-rate" if p > 0.01 else None + left = [b for b in first if b["vet"] is None] + print("%d near-Earth asteroids on arcs of %g d or more with intersection distances below %g au (%d on shorter arcs set aside); below %g au: %d against %.1f from the uniform run " + "of the next nine bins (Poisson p %.3g); unexplained %d" % (len(bodies), arc_min_d, 10 * moid_au, short, moid_au, len(first), exp, p, len(left))) + for b in sorted(first, key=lambda b: b["moid"]): + print(" %s: MOID %.6f au, a %.3f, e %.3f, i %.1f, H %s, arc %.0f d, %s obs, condition %s; %s" % ( + b["name"], b["moid"], b["a"], b["e"], b["i"], b["H"], b["arc"], b["n_obs"], b["cc"], b["vet"] or "unexplained")) + json.dump(dict(n=len(bodies), first=first), open(core.results("bodies_aimed_at_earth.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_aimed_at_earth", "Bodies aimed at Earth", "JPL Small-Body Database (sbdb_query.api)", "near-Earth asteroids on arcs of %g d or more with intersection distances below %g au: %d" % (arc_min_d, 10 * moid_au, len(bodies)), + os.path.abspath(__file__), "aimed", len(bodies), "asteroids", dict(moid_au=moid_au, arc_min_d=arc_min_d), + "the uniform run of intersection distances near zero: %.1f expected in the first bin from the next nine" % exp, + "a crowding of intersection distances below %g au" % moid_au, "%d against %.1f (Poisson p %.3g); %d unexplained" % (len(first), exp, p, len(left)), + [dict(target="sbdb:%s" % b["pdes"], stat=b["moid"], unit="au, minimum orbit intersection distance with Earth", vet=b["vet"], + note="a %.3f, e %.3f, i %.1f, H %s, arc %.0f d, condition %s" % (b["a"], b["e"], b["i"], b["H"], b["arc"], b["cc"])) for b in first]) + print("recorded") + + +kirkwood_DOC = r"""Bodies parked in the Kirkwood gaps: Small-Body Database numbered asteroids by semi-major axis around the 3:1, 5:2 and 2:1 resonances with Jupiter at 2.502, 2.824 and 3.277 au, where the gaps are swept clear within a million years, those within 0.002 au of a resonance centre with eccentricity below 0.1 on arcs of twenty years or more, bodies holding a place nothing holds, against the density of the bins 0.01-0.03 au either side; a numbered body with a long arc in the centre of a gap is passing through on its way out, which the chaotic zone allows for a time, so each is read for its eccentricity, the lower the stranger. + + python -I seti.py solar_system kirkwood [record] [--half-au 0.002] [--e-max 0.1] [--arc-min-d 7305]""" + +KIRKWOOD_GAPS = {"3:1": 2.5020, "5:2": 2.8237, "2:1": 3.2770} + + +def kirkwood_main(record=False, half_au=0.002, e_max=0.1, arc_min_d=7305.0): + from scipy.stats import poisson + out, counts = [], {} + for name, a0 in KIRKWOOD_GAPS.items(): + rows = sbdb_rows(["a|RG|%g|%g" % (a0 - 0.03, a0 + 0.03), "e|LT|%g" % e_max, "data_arc|GT|%g" % arc_min_d, "pdes|DF"], "full_name,pdes,a,e,i,data_arc,n_obs_used,H", kind="a") + rows = [r for r in rows if str(r["pdes"]).strip().isdigit()] + a = np.array([float(r["a"]) for r in rows]) + centre = int(np.sum(np.abs(a - a0) < half_au)) + beside = int(np.sum((np.abs(a - a0) >= 0.01) & (np.abs(a - a0) < 0.03))) + exp = beside * (2 * half_au) / 0.04 + p = float(poisson.sf(centre - 1, exp)) if centre else 1.0 + counts[name] = dict(a0=a0, centre=centre, beside=beside, expected=exp, p=p) + for r in rows: + if abs(float(r["a"]) - a0) < half_au: + out.append(dict(gap=name, name=" ".join(str(r["full_name"]).split()), pdes=str(r["pdes"]).strip(), a=float(r["a"]), e=num(r["e"]), i=num(r["i"]), arc=num(r["data_arc"]), + n_obs=num(r["n_obs_used"]), H=num(r["H"]), vet="chance-rate" if p > 0.01 else None)) + left = [o for o in out if o["vet"] is None] + print("; ".join("%s at %.4f au: %d within %g au against %.1f from the %d in the bins beside (Poisson p %.3g)" % (k, v["a0"], v["centre"], half_au, v["expected"], v["beside"], v["p"]) + for k, v in counts.items()) + "; unexplained %d" % len(left)) + for o in sorted(out, key=lambda o: o["e"]): + print(" %s in the %s gap: a %.5f, e %.4f, i %.1f, arc %.0f d, %s obs, H %s; %s" % (o["name"], o["gap"], o["a"], o["e"], o["i"], o["arc"], o["n_obs"], o["H"], o["vet"] or "unexplained")) + json.dump(dict(counts=counts, bodies=out), open(core.results("kirkwood_parked.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_kirkwood_parked", "Bodies parked in the Kirkwood gaps", "JPL Small-Body Database (sbdb_query.api)", + "numbered asteroids within 0.03 au of the 3:1, 5:2 and 2:1 resonances with e below %g on arcs of %g d or more: %d" % (e_max, arc_min_d, sum(v["centre"] + v["beside"] for v in counts.values())), + os.path.abspath(__file__), "kirkwood", sum(v["centre"] + v["beside"] for v in counts.values()), "asteroids", dict(half_au=half_au, e_max=e_max, arc_min_d=arc_min_d), + "the density 0.01-0.03 au either side of each resonance: %s" % {k: v["beside"] for k, v in counts.items()}, + "bodies within %g au of a resonance centre beyond what the gap's edges give" % half_au, + "; ".join("%s: %d against %.1f (p %.3g)" % (k, v["centre"], v["expected"], v["p"]) for k, v in counts.items()) + "; %d unexplained" % len(left), + [dict(target="sbdb:%s" % o["pdes"], stat=round(o["a"], 5), unit="au, semi-major axis", vet=o["vet"], + note="%s gap, e %.4f, i %.1f, arc %.0f d, H %s" % (o["gap"], o["e"], o["i"], o["arc"], o["H"])) for o in out]) + print("recorded") + + +tnocircles_DOC = r"""Circles beyond Neptune: Small-Body Database trans-Neptunian objects with semi-major axes beyond 40 au and eccentricities with a formal uncertainty, those whose eccentricity at its 3 sigma upper bound lies below 0.005, an orbit rounder than the cold classical belt's own, which was born with eccentricities of a few hundredths, against the count the Rayleigh rise of the belt's eccentricities near zero gives; each read for its arc and number of observations, since an orbit fitted over a short arc takes a circle by assumption. + + python -I seti.py solar_system tnocircles [record] [--a-min 40] [--e-max 0.005] [--sigma 3] [--arc-min-d 3652]""" + + +def tnocircles_main(record=False, a_min=40.0, e_max=0.005, sigma=3.0, arc_min_d=3652.0): + rows = sbdb_rows(["a|GT|%g" % a_min, "sigma_e|DF"], "full_name,pdes,a,e,sigma_e,i,q,data_arc,n_obs_used,condition_code,class", kind="a") + st = [] + for r in rows: + e, se = num(r["e"]), num(r["sigma_e"]) + if e is None or se is None: + continue + st.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=str(r["pdes"]).strip(), a=num(r["a"]), e=e, se=se, up=e + sigma * se, i=num(r["i"]), q=num(r["q"]), + arc=num(r["data_arc"]) or 0, n_obs=num(r["n_obs_used"]), cc=num(r["condition_code"]), cls=r["class"])) + from scipy.stats import poisson + hits = [s for s in st if s["up"] < e_max] + # a Rayleigh distribution of eccentricities rises as the square near zero, so the count below 10 e_max scaled by a hundredth is the natural expectation + exp = sum(1 for s in st if s["e"] < 10 * e_max) / 100.0 + p = float(poisson.sf(len(hits) - 1, exp)) if hits else 1.0 + for s in hits: + s["vet"] = "fit-degeneracy" if s["arc"] < arc_min_d else "chance-rate" if p > 0.01 else None + left = [s for s in hits if s["vet"] is None] + ups = sorted(s["up"] for s in st) + k = max(1, int(0.01 * len(ups))) + print("%d trans-Neptunian objects beyond %g au with an eccentricity uncertainty; upper eccentricity below %g at %g sigma: %d against %.1f from the Rayleigh rise of the %d below %g " + "(Poisson p %.3g); %d on arcs under %g d; unexplained %d; the lowest percentile of upper bounds sits at %.4f" % ( + len(st), a_min, e_max, sigma, len(hits), exp, sum(1 for s in st if s["e"] < 10 * e_max), 10 * e_max, p, sum(s["vet"] == "fit-degeneracy" for s in hits), arc_min_d, + len(left), ups[k - 1] if ups else 0)) + for s in sorted(hits, key=lambda s: s["up"]): + print(" %s (%s): a %.2f au, e %.5f +- %.5f, i %.1f, arc %.0f d, %s obs, condition %s; %s" % ( + s["name"], s["cls"], s["a"], s["e"], s["se"], s["i"], s["arc"], s["n_obs"], s["cc"], s["vet"] or "unexplained")) + json.dump(dict(n=len(st), hits=hits), open(core.results("tno_circles.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_tno_circles", "Circles beyond Neptune", "JPL Small-Body Database (sbdb_query.api)", "trans-Neptunian objects beyond %g au with an eccentricity uncertainty: %d" % (a_min, len(st)), + os.path.abspath(__file__), "tnocircles", len(st), "objects", dict(a_min=a_min, e_max=e_max, sigma=sigma, arc_min_d=arc_min_d), + "the Rayleigh rise of the eccentricities near zero: %.1f expected from the %d below %g; the lowest percentile of upper bounds at %.4f" % ( + exp, sum(1 for s in st if s["e"] < 10 * e_max), 10 * e_max, ups[k - 1] if ups else 0), + "an orbit beyond Neptune rounder than %g at its %g sigma upper bound" % (e_max, sigma), + "%d against %.1f (Poisson p %.3g), %d on short arcs; %d unexplained" % (len(hits), exp, p, sum(s["vet"] == "fit-degeneracy" for s in hits), len(left)), + [dict(target="sbdb:%s" % s["pdes"], stat=round(s["up"], 5), unit="upper eccentricity", vet=s["vet"], + note="a %.2f au, e %.5f +- %.5f, i %.1f, arc %.0f d, %s obs" % (s["a"], s["e"], s["se"], s["i"], s["arc"], s["n_obs"])) for s in hits]) + print("recorded") + + +sunfocus_DOC = r"""Bodies at the Sun's focus: Small-Body Database bodies with perihelia beyond 100 au, where the Sun's gravitational lens brings the light of other stars to a focus from 550 au outward and a receiver would be parked, against the inner Oort cloud's known members, whose perihelia reach 80 au; a body that never comes closer than 100 au is seen only if large, so each is read for its size and its arc. + + python -I seti.py solar_system sunfocus [record] [--q-min-au 100] [--list-q-au 60]""" + + +def sunfocus_main(record=False, q_min_au=100.0, list_q_au=60.0): + rows = sbdb_rows(["q|GT|%g" % list_q_au], "full_name,pdes,a,e,q,ad,i,H,data_arc,n_obs_used,condition_code,class", kind="a") + rows += sbdb_rows(["q|GT|%g" % list_q_au], "full_name,pdes,a,e,q,ad,i,H,data_arc,n_obs_used,condition_code,class", kind="c") + bodies = sorted([dict(name=" ".join(str(r["full_name"]).split()), pdes=str(r["pdes"]).strip(), a=num(r["a"]), e=num(r["e"]), q=num(r["q"]), ad=num(r["ad"]), i=num(r["i"]), H=num(r["H"]), + arc=num(r["data_arc"]), n_obs=num(r["n_obs_used"]), cc=num(r["condition_code"]), cls=r["class"]) for r in rows if num(r["q"]) is not None], + key=lambda b: -b["q"]) + far = [b for b in bodies if b["q"] > q_min_au] + for b in far: + b["vet"] = "fit-degeneracy" if (b["arc"] or 0) < 3652 else None + left = [b for b in far if b["vet"] is None] + print("%d bodies with perihelia beyond %g au; beyond %g au: %d; unexplained %d" % (len(bodies), list_q_au, q_min_au, len(far), len(left))) + for b in bodies[:12]: + print(" %s (%s): q %.1f au, a %s, e %s, i %.1f, H %s, arc %s d, %s obs; %s" % (b["name"], b["cls"], b["q"], b["a"], b["e"], b["i"] or 0, b["H"], b["arc"], b["n_obs"], + b.get("vet") or ("unexplained" if b["q"] > q_min_au else "inside %g au" % q_min_au))) + json.dump(dict(n=len(bodies), far=far, nearest=bodies[:12]), open(core.results("sun_focus_bodies.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_sun_focus", "Bodies at the Sun's focus", "JPL Small-Body Database (sbdb_query.api)", "bodies with perihelia beyond %g au: %d" % (list_q_au, len(bodies)), + os.path.abspath(__file__), "sunfocus", len(bodies), "bodies", dict(q_min_au=q_min_au, list_q_au=list_q_au), + "the inner Oort cloud's known members: the largest perihelion %s at %.1f au" % (bodies[0]["name"] if bodies else None, bodies[0]["q"] if bodies else 0), + "a body whose perihelion lies beyond %g au" % q_min_au, "%d; %d unexplained" % (len(far), len(left)), + [dict(target="sbdb:%s" % b["pdes"], stat=round(b["q"], 2), unit="au, perihelion", vet=b.get("vet"), note="a %s, e %s, i %.1f, H %s, arc %s d" % (b["a"], b["e"], b["i"] or 0, b["H"], b["arc"])) + for b in far]) + print("recorded") + + +retroco_DOC = r"""Retrograde co-orbitals of the giant planets: Small-Body Database bodies with semi-major axes within 5 per cent of Jupiter's, Saturn's, Uranus's or Neptune's, inclinations above 90 deg and eccentricities below 0.5, since a comet crossing the planets shares no orbit, a body sharing a planet's orbit while circling the Sun the wrong way, which the 1:1 resonance holds for a time in the published case of (514107) Ka'epaoka'awela at Jupiter, captured from the Oort cloud or beyond, with 2007 VW266 published in the neighbouring 13/-14 resonance, and which a thing steered into place would show; each read for its arc, against the published cases and against the toolkit's own integration of the orbit and fifty clones of its covariance with the four giant planets for 100 kyr each way, where a body the resonance holds never meets the planet. + +With `--inner true` the planets are Mercury, Venus, Earth and Mars, recorded as their own run. + + python -I seti.py solar_system retroco [record] [--a-tol 0.05] [--i-min 90] [--e-max 0.5] [--arc-min-d 365] [--inner]""" + +RETROCO_PLANETS = {"Jupiter": 5.2026, "Saturn": 9.5549, "Uranus": 19.2184, "Neptune": 30.1104} +RETROCO_INNER = {"Mercury": 0.3871, "Venus": 0.7233, "Earth": 1.0000, "Mars": 1.5237} +# bodies the toolkit's own integration (four giant planets, 20 kyr each way from the nominal orbit) holds in the retrograde co-orbital resonance +RETROCO_INTEGRATED = {"2016 YB13": "held at Jupiter's semi-major axis without an approach inside 0.5 au for 7 kyr each way from the nominal orbit and, over fifty clones of its " + "covariance, for a median of 3 kyr forward and 13 kyr backward, a transient member of the retrograde 1:1 resonance, where the control " + "(514107) Ka'epaoka'awela holds for the whole 100 kyr each way"} +RETROCO_KNOWN = {"514107": "Ka'epaoka'awela, the published retrograde co-orbital of Jupiter (Wiegert et al. 2017)", + "2007 VW266": "a published retrograde object near Jupiter's orbit in the 13/-14 resonance (Connors and Wiegert 2018)"} + + +def retroco_main(record=False, a_tol=0.05, i_min=90.0, e_max=0.5, arc_min_d=365.0, inner=False): + out, n = [], {} + which = "an inner" if inner else "a giant" + for planet, a0 in (RETROCO_INNER if inner else RETROCO_PLANETS).items(): + rows = sbdb_rows(["a|RG|%g|%g" % (a0 * (1 - a_tol), a0 * (1 + a_tol)), "i|GT|%g" % i_min, "e|LT|%g" % e_max], "full_name,pdes,a,e,i,q,data_arc,n_obs_used,class", kind="a") + rows += sbdb_rows(["a|RG|%g|%g" % (a0 * (1 - a_tol), a0 * (1 + a_tol)), "i|GT|%g" % i_min, "e|LT|%g" % e_max], "full_name,pdes,a,e,i,q,data_arc,n_obs_used,class", kind="c") + n[planet] = len(rows) + for r in rows: + pdes = str(r["pdes"]).strip() + arc = num(r["data_arc"]) or 0 + out.append(dict(planet=planet, name=" ".join(str(r["full_name"]).split()), pdes=pdes, a=num(r["a"]), e=num(r["e"]), i=num(r["i"]), q=num(r["q"]), arc=arc, n_obs=num(r["n_obs_used"]), + cls=str(r["class"]).strip(), vet=("natural-source" if pdes in RETROCO_KNOWN else "co-orbital" if pdes in RETROCO_INTEGRATED else + "fit-degeneracy" if arc < arc_min_d else None), + note=RETROCO_KNOWN.get(pdes) or RETROCO_INTEGRATED.get(pdes))) + left = [o for o in out if o["vet"] is None] + print("bodies within %g of %s planet's semi-major axis on retrograde orbits with e below %g: %s (%d published, %d held in the resonance by the toolkit's integration, %d on " + "arcs under %g d); unexplained %d" % (a_tol, which, e_max, n, sum(o["vet"] == "natural-source" for o in out), sum(o["vet"] == "co-orbital" for o in out), + sum(o["vet"] == "fit-degeneracy" for o in out), arc_min_d, len(left))) + for o in sorted(out, key=lambda o: (o["planet"], -o["arc"])): + print(" %s at %s (%s): a %.3f, e %.3f, i %.1f, q %.2f, arc %.0f d, %s obs%s; %s" % ( + o["name"], o["planet"], o["cls"], o["a"], o["e"], o["i"], o["q"], o["arc"], o["n_obs"], ", " + o["note"] if o["note"] else "", o["vet"] or "unexplained")) + json.dump(dict(n=n, bodies=out), open(core.results("retrograde_coorbitals_inner.json" if inner else "retrograde_coorbitals.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_retrograde_coorbitals_inner" if inner else "sbdb_retrograde_coorbitals", "Retrograde co-orbitals of the %s planets" % ("inner" if inner else "giant"), + "JPL Small-Body Database (sbdb_query.api)", + "retrograde bodies within %g of %s planet's semi-major axis with e below %g: %s" % (a_tol, which, e_max, n), os.path.abspath(__file__), "retroco", len(out), "bodies", + dict(a_tol=a_tol, i_min=i_min, e_max=e_max, arc_min_d=arc_min_d, inner=inner), "the published retrograde resonators; the arcs", "a retrograde body sharing %s planet's orbit" % which, + "%d: %d published, %d held in the resonance by the toolkit's integration, %d on short arcs; %d unexplained" % ( + len(out), sum(o["vet"] == "natural-source" for o in out), sum(o["vet"] == "co-orbital" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), len(left)), + [dict(target="sbdb:%s" % o["pdes"], stat=round(o["i"], 1), unit="deg, inclination", vet=o["vet"], + note="%s, a %.3f, e %.3f, q %.2f, arc %.0f d%s" % (o["planet"], o["a"], o["e"], o["q"], o["arc"], ", " + o["note"] if o["note"] else "")) for o in out]) + print("recorded") + + +outofplane_DOC = r"""Bodies pushed out of their orbital planes: Small-Body Database comets and asteroids with a normal non-gravitational term A3 measured at 3 sigma, those whose normal term exceeds half their radial term in size, a push out of the plane as large as the push along the Sun's line, which a jet from a pole does and a thruster aimed across the orbit would; each read for its arc and against the published dark comets, and the ratio against the distribution of every body with both terms. + + python -I seti.py solar_system outofplane [record] [--sigma 3] [--ratio-min 0.5] [--arc-min-d 1000]""" + + +def outofplane_main(record=False, sigma=3.0, ratio_min=0.5, arc_min_d=1000.0): + out, n, ratios = [], {}, [] + for kind in ("c", "a"): + rows = sbdb_rows(["A3|DF", "A1|DF"], "full_name,pdes,A1,A1_sigma,A2,A2_sigma,A3,A3_sigma,q,e,i,data_arc,n_obs_used,class", kind=kind) + n[kind] = len(rows) + for r in rows: + a1, a3, s3 = num(r["A1"]), num(r["A3"]), num(r["A3_sigma"]) + if a1 is None or a3 is None or not s3 or a1 == 0: + continue + ratios.append(abs(a3 / a1)) + if abs(a3) / s3 < sigma or abs(a3) < ratio_min * abs(a1): + continue + name = " ".join(str(r["full_name"]).split()) + prov = re.search(r"\(([^)]+)\)", name) + prov = prov.group(1) if prov else name + arc = num(r["data_arc"]) or 0 + out.append(dict(kind="comet" if kind == "c" else "asteroid", name=name, pdes=str(r["pdes"]).strip(), A1=a1, A3=a3, A3_sigma=s3, ratio=abs(a3 / a1), q=num(r["q"]), e=num(r["e"]), + arc=arc, n_obs=num(r["n_obs_used"]), cls=r["class"], vet="dark-comet" if prov in PUSHED_DARK_COMETS else "fit-degeneracy" if arc < arc_min_d else + "activity" if kind == "c" else None)) + left = [o for o in out if o["vet"] is None] + print("%d comets and %d asteroids with normal and radial terms; the normal over radial ratio's median %.2f and 90th percentile %.2f; normal term at %g sigma and above %g of the radial: " + "%d (%d comets, whose jets push off their poles, %d dark comets, %d on arcs under %g d); unexplained %d" % ( + n["c"], n["a"], float(np.median(ratios)) if ratios else 0, float(np.percentile(ratios, 90)) if ratios else 0, sigma, ratio_min, len(out), + sum(o["vet"] == "activity" for o in out), sum(o["vet"] == "dark-comet" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), arc_min_d, len(left))) + for o in sorted(out, key=lambda o: -o["ratio"]): + if o["vet"] != "activity" or len(out) <= 30: + print(" %s (%s, %s): A3 %.3e +- %.1e, A1 %.3e, ratio %.2f, q %.3f, e %.3f, arc %.0f d, %s obs; %s" % ( + o["name"], o["kind"], o["cls"], o["A3"], o["A3_sigma"], o["A1"], o["ratio"], o["q"], o["e"], o["arc"], o["n_obs"], o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out), open(core.results("pushed_out_of_plane.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_out_of_plane", "Bodies pushed out of their orbital planes", "JPL Small-Body Database (sbdb_query.api)", "comets with normal and radial terms: %d; asteroids: %d" % (n["c"], n["a"]), + os.path.abspath(__file__), "outofplane", n["c"] + n["a"], "bodies", dict(sigma=sigma, ratio_min=ratio_min, arc_min_d=arc_min_d), + "the ratio's distribution over every body with both terms: median %.2f, 90th percentile %.2f" % (float(np.median(ratios)) if ratios else 0, float(np.percentile(ratios, 90)) if ratios else 0), + "a normal term at %g sigma above %g of the radial term" % (sigma, ratio_min), "%d: %d comets, %d dark comets, %d on short arcs; %d unexplained" % ( + len(out), sum(o["vet"] == "activity" for o in out), sum(o["vet"] == "dark-comet" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), len(left)), + [dict(target="sbdb:%s" % o["pdes"], stat=round(o["ratio"], 3), unit="normal over radial non-gravitational term", vet=o["vet"], + note="%s, A3 %.3e +- %.1e, A1 %.3e, q %.3f, e %.3f, arc %.0f d" % (o["kind"], o["A3"], o["A3_sigma"], o["A1"], o["q"], o["e"], o["arc"])) for o in out]) + print("recorded") + + +bluesurfaces_DOC = r"""Surfaces bluer than any asteroid class: Gaia DR3's mean reflectance spectra of asteroids (sso_reflectance_spectrum), the slope of each spectrum's unflagged bands from 450 to 850 nm by least squares, those falling more steeply than -15 per cent per 100 nm at 3 sigma, bluer than the B types, the bluest surfaces the belt makes, where a coating made for its colour would sit; each read for the number of spectra behind the mean and against the bluest known family, Pallas's, whose members reach -5 per cent per 100 nm. + + python -I seti.py solar_system bluesurfaces [record] [--slope-max -15] [--sigma 3] [--min-bands 6]""" + + +def bluesurfaces_main(record=False, slope_max=-15.0, sigma=3.0, min_bands=6): + rows = core.tap_async("gaia", "SELECT number_mp, denomination, num_of_spectra, wavelength, reflectance_spectrum, reflectance_spectrum_err FROM gaiadr3.sso_reflectance_spectrum WHERE " + "reflectance_spectrum_flag = 0 AND wavelength BETWEEN 450 AND 850 AND reflectance_spectrum IS NOT NULL AND reflectance_spectrum_err > 0", maxrec=1000000) + by = {} + for r in rows: + by.setdefault(int(r["number_mp"]), []).append((float(r["wavelength"]), float(r["reflectance_spectrum"]), float(r["reflectance_spectrum_err"]), str(r["denomination"]).strip(), + int(num(r["num_of_spectra"]) or 0))) + out, slopes = [], [] + for mp, pts in by.items(): + if len(pts) < min_bands: + continue + w = np.array([p[0] for p in pts]) / 100.0 + f = np.array([p[1] for p in pts]) + e = np.array([p[2] for p in pts]) + A = np.vstack([np.ones_like(w), w - 5.5]).T / e[:, None] + coef, res, rank, sv = np.linalg.lstsq(A, f / e, rcond=None) + cov = np.linalg.inv(A.T @ A) + slope, es = 100.0 * coef[1], 100.0 * math.sqrt(cov[1, 1]) + slopes.append(slope) + if slope + sigma * es < slope_max: + out.append(dict(mp=mp, name=pts[0][3], n_spec=pts[0][4], slope=slope, err=es, bands=len(pts), spectrum=[round(float(x), 3) for x in f], + vet="single-record" if pts[0][4] < 2 else None)) + left = [o for o in out if o["vet"] is None] + pct = float(np.percentile(slopes, 0.1)) if slopes else 0.0 + print("%d asteroids with %d or more unflagged bands from 450 to 850 nm; slopes' 0.1st percentile %.1f per cent per 100 nm; below %g at %g sigma: %d (%d from a single spectrum); " + "unexplained %d" % (len(slopes), min_bands, pct, slope_max, sigma, len(out), sum(o["vet"] == "single-record" for o in out), len(left))) + for o in sorted(out, key=lambda o: o["slope"]): + print(" (%d) %s: slope %.1f +- %.1f per cent per 100 nm over %d bands, %d spectra: %s; %s" % (o["mp"], o["name"], o["slope"], o["err"], o["bands"], o["n_spec"], o["spectrum"], + o["vet"] or "unexplained")) + json.dump(dict(n=len(slopes), hits=out, percentile=pct), open(core.results("asteroid_blue_surfaces.json"), "w"), indent=1) + if record: + core.record_run( + "gaia_sso_blue_surfaces", "Surfaces bluer than any asteroid class", "Gaia DR3 sso_reflectance_spectrum", "asteroids with %d or more unflagged bands from 450 to 850 nm: %d" % (min_bands, len(slopes)), + os.path.abspath(__file__), "bluesurfaces", len(slopes), "asteroids", dict(slope_max=slope_max, sigma=sigma, min_bands=min_bands), + "the slopes' own distribution: 0.1st percentile %.1f per cent per 100 nm; the number of spectra behind each mean" % pct, + "a reflectance slope below %g per cent per 100 nm at %g sigma" % (slope_max, sigma), "%d, %d from a single spectrum; %d unexplained" % ( + len(out), sum(o["vet"] == "single-record" for o in out), len(left)), + [dict(target="asteroid:%d" % o["mp"], stat=round(o["slope"], 1), unit="per cent per 100 nm", vet=o["vet"], note="%s, +- %.1f, %d bands, %d spectra" % (o["name"], o["err"], o["bands"], o["n_spec"])) + for o in out]) + print("recorded") + + +lightbodies_DOC = r"""Launch provenance of light bodies: Small-Body Database bodies with a radial non-gravitational term A1 measured at 3 sigma, the area-to-mass ratio that solar radiation pressure alone would need to give that term, bodies above 0.1 m^2/kg, where a rock would have to be lighter than foam and a spent rocket stage or a solar sail sits; each read against the bodies of our own launching the database holds, the published dark comets and the interstellar objects, whose outgassing supplies the push instead, and its arc. + + python -I seti.py solar_system lightbodies [record] [--sigma 3] [--am-min 0.1] [--arc-min-d 30]""" + +# solar radiation pressure at 1 au on a unit area-to-mass ratio, in au/d^2 per m^2/kg +LIGHTBODIES_PRESSURE = 4.56e-6 * 86400.0 ** 2 / 1.495978707e11 + + +def lightbodies_main(record=False, sigma=3.0, am_min=0.1, arc_min_d=30.0): + out, n = [], {} + for kind in ("a", "c"): + rows = sbdb_rows(["A1|DF"], "full_name,pdes,A1,A1_sigma,A2,A2_sigma,H,diameter,a,e,q,i,data_arc,n_obs_used,condition_code,class", kind=kind) + n[kind] = len(rows) + for r in rows: + a1, s1 = num(r["A1"]), num(r["A1_sigma"]) + if a1 is None or not s1 or a1 / s1 < sigma: + continue + am = a1 / LIGHTBODIES_PRESSURE + if am < am_min: + continue + name = " ".join(str(r["full_name"]).split()) + prov = re.search(r"\(([^)]+)\)", name) + prov = prov.group(1) if prov else name + arc = num(r["data_arc"]) or 0 + out.append(dict(kind="asteroid" if kind == "a" else "comet", name=name, pdes=str(r["pdes"]).strip(), A1=a1, A1_sigma=s1, am=am, H=num(r["H"]), d=num(r["diameter"]), + a=num(r["a"]), e=num(r["e"]), q=num(r["q"]), arc=arc, n_obs=num(r["n_obs_used"]), cls=r["class"], + vet=("our-launch" if prov in PUSHED_LAUNCHED else "dark-comet" if prov in PUSHED_DARK_COMETS else "activity" if kind == "c" else + "natural-source" if any(k in name for k in HYPERBOLIC_INTERSTELLAR) else "fit-degeneracy" if arc < arc_min_d else None))) + left = [o for o in out if o["vet"] is None] + print("%d asteroids and %d comets with a radial term; at %g sigma and an area-to-mass ratio above %g m^2/kg: %d (%d of our launching, %d dark comets, %d comets, %d on arcs under %g d); " + "%d interstellar; unexplained %d" % (n["a"], n["c"], sigma, am_min, len(out), sum(o["vet"] == "our-launch" for o in out), sum(o["vet"] == "dark-comet" for o in out), + sum(o["vet"] == "activity" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), arc_min_d, sum(o["vet"] == "natural-source" for o in out), len(left))) + for o in sorted(out, key=lambda o: -o["am"]): + print(" %s (%s, %s): A1 %.2e +- %.1e au/d^2, %.2f m^2/kg, H %s, a %.3f e %.3f, arc %.0f d, %s obs; %s" % ( + o["name"], o["kind"], o["cls"], o["A1"], o["A1_sigma"], o["am"], o["H"], o["a"] or 0, o["e"] or 0, o["arc"], o["n_obs"], o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out), open(core.results("light_bodies_provenance.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_light_bodies", "Launch provenance of light bodies", "JPL Small-Body Database (sbdb_query.api)", "asteroids with a radial non-gravitational term: %d; comets: %d" % (n["a"], n["c"]), + os.path.abspath(__file__), "lightbodies", n["a"] + n["c"], "bodies", dict(sigma=sigma, am_min=am_min, arc_min_d=arc_min_d, pressure=LIGHTBODIES_PRESSURE), + "the bodies of our own launching in the database; the published dark comets; comets' outgassing; the arcs", + "an area-to-mass ratio above %g m^2/kg from the radial term at %g sigma" % (am_min, sigma), "%d: %d of our launching, %d dark comets, %d comets, %d interstellar, %d on short arcs; %d unexplained" % ( + len(out), sum(o["vet"] == "our-launch" for o in out), sum(o["vet"] == "dark-comet" for o in out), sum(o["vet"] == "activity" for o in out), + sum(o["vet"] == "natural-source" for o in out), sum(o["vet"] == "fit-degeneracy" for o in out), len(left)), + [dict(target="sbdb:%s" % o["pdes"], stat=round(o["am"], 3), unit="m^2/kg from the radial term", vet=o["vet"], + note="%s, A1 %.2e +- %.1e, H %s, a %.3f e %.3f, arc %.0f d" % (o["kind"], o["A1"], o["A1_sigma"], o["H"], o["a"] or 0, o["e"] or 0, o["arc"])) for o in out]) + print("recorded") + + +spinsurvey_DOC = r"""Centrifugal habitats, survey periods: the rotation periods and diameters of the faint main-belt asteroids of Lo et al. (2020, VizieR J/AJ/159/25), its secure periods and its super-fast rotators, each body's tensile strength needed to hold together at 2000 kg/m^3 beyond the gravity spin limit, against the LCDB test's limits; a hollowed body spun for gravity would spin faster than rubble can at its size. + + python -I seti.py solar_system spinsurvey [record] [--rho 2000] [--d-min-km 0.3] [--kpa-min 1] [--km-d 1] [--kpa 100] [--minutes 10]""" + + +def spinsurvey_main(record=False, rho=2000.0, d_min_km=0.3, kpa_min=1.0, km_d=1.0, kpa=100.0, minutes=10.0): + G = 6.674e-11 + wc2 = 4 * math.pi * G * rho / 3 + out = {} + for t in core.vizier("J/AJ/159/25"): + name = t.meta.get("name", "").split("/")[-1] + pc = "Prot" if "Prot" in t.colnames else ("Per" if "Per" in t.colnames else None) + if pc is None or "Diam" not in t.colnames: + continue + for r in t: + P, D = num(r[pc]), num(r["Diam"]) + if not P or not D: + continue + w = 2 * math.pi / (P * 3600) + R = D * 500 + o = dict(id=str(r["ID"]).strip(), table=name, D=D, P=P, kpa=rho * R * R / 2 * max(0.0, w * w - wc2) / 1000, vet=None) + if o["id"] not in out or name != "table2": + out[o["id"]] = o + out = list(out.values()) + need = sorted([o for o in out if o["D"] >= d_min_km and o["kpa"] > kpa_min], key=lambda o: -o["kpa"]) + km_fast = [o for o in out if o["D"] >= km_d and o["P"] * 60 < minutes] + km_strong = [o for o in out if o["D"] >= km_d and o["kpa"] >= kpa] + for o in need: + o["vet"] = "cohesive" if o["kpa"] < kpa else None + print("%d asteroids with periods and diameters (periods %.3f-%.1f h, diameters %.2f-%.1f km); spin limit %.2f h; %d of %g km or more need over %g kPa; of %g km or more under %g minutes %d, " + "needing %g kPa %d" % (len(out), min(o["P"] for o in out), max(o["P"] for o in out), min(o["D"] for o in out), max(o["D"] for o in out), 2 * math.pi / math.sqrt(wc2) / 3600, + len(need), d_min_km, kpa_min, km_d, minutes, len(km_fast), kpa, len(km_strong))) + for o in need: + print(" %-12s (%s) D %.3f km, P %.2f min, needs %.1f kPa; %s" % (o["id"], o["table"], o["D"], o["P"] * 60, o["kpa"], o["vet"] or "unexplained")) + if record: + core.record_run( + "lo2020_spin_strength", "Centrifugal habitats, survey periods", "Lo et al. (2020) faint main-belt rotation periods (VizieR J/AJ/159/25)", + "asteroids with periods and diameters: %d" % len(out), os.path.abspath(__file__), "spinsurvey", len(out), "asteroids", + dict(rho=rho, d_min_km=d_min_km, kpa_min=kpa_min, km_d=km_d, kpa=kpa, minutes=minutes), "the strength a monolith holds, about %g kPa" % kpa, + "a body of %g km spinning in %g minutes or needing %g kPa" % (km_d, minutes, kpa), + "%d bodies of %g km or more need over %g kPa; %d of %g km or more under %g minutes and %d needing %g kPa" % (len(need), d_min_km, kpa_min, len(km_fast), km_d, minutes, len(km_strong), kpa), + [dict(target="mpc:%s" % o["id"], stat=round(o["kpa"], 1), unit="kPa needed at %g kg/m^3" % rho, vet=o["vet"], note="%s, D %.3f km, P %.2f min" % (o["table"], o["D"], o["P"] * 60)) + for o in need]) + print("recorded") + + +fireballs_DOC = r"""Fireballs from outside the Solar System: every fireball of the CNEOS database (the JPL fireball API) with a location and a pre-entry velocity vector, the vector taken in Earth-fixed axes into barycentric axes, Earth's gravity removed from its speed, Earth's orbital velocity added, and the heliocentric speed set against the Sun's escape speed at Earth's distance; an interstellar body or probe striking Earth would arrive faster than that speed allows for anything bound, and for each fast one the fraction by which its speed would have to be overestimated for the orbit to be bound; the entries whose listed speed and vector disagree by more than 0.5 km/s are counted apart. Each fast one is redrawn with the errors that CNEOS shows against ground-based networks (Peña-Asensio et al. 2025: about 6 km/s in speed and 20 deg in radiant before 2018, 0.55 km/s and 1.1 deg from 2018), and one bound in more than 1 per cent of the draws is within the sensors' errors. + + python -I seti.py solar_system fireballs [record] [--margin-kms 0] [--mismatch-kms 0.5] [--draws 20000] [--p-bound 0.01]""" + + +def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000, p_bound=0.01): + from astropy.coordinates import ITRS, GCRS, CartesianRepresentation, CartesianDifferential, EarthLocation, get_body_barycentric_posvel + from astropy.time import Time + import astropy.units as u + d = json.loads(core.get("https://ssd-api.jpl.nasa.gov/fireball.api?req-loc=true&req-vel=true&vel-comp=true", timeout=120)) + f = d["fields"] + out = [] + for row in d["data"]: + r = dict(zip(f, row)) + if not all(r.get(k) for k in ("vx", "vy", "vz", "lat", "lon", "alt", "vel")): + continue + t = Time(r["date"].replace(" ", "T"), scale="utc") + lat = float(r["lat"]) * (1 if r["lat-dir"] == "N" else -1) + lon = float(r["lon"]) * (1 if r["lon-dir"] == "E" else -1) + loc = EarthLocation.from_geodetic(lon * u.deg, lat * u.deg, float(r["alt"]) * u.km) + v = np.array([float(r["vx"]), float(r["vy"]), float(r["vz"])]) + it = ITRS(CartesianRepresentation(loc.x, loc.y, loc.z, differentials=CartesianDifferential(*(v * u.km / u.s))), obstime=t) + gc = it.transform_to(GCRS(obstime=t)) + vg = gc.velocity.d_xyz.to(u.km / u.s).value + rr = float(np.linalg.norm(gc.cartesian.xyz.to(u.km).value)) + vesc_e = math.sqrt(2 * 398600.4418 / rr) + pe, ve = get_body_barycentric_posvel("earth", t) + ps, vs = get_body_barycentric_posvel("sun", t) + vearth = (ve - vs).xyz.to(u.km / u.s).value + unit = vg / np.linalg.norm(vg) + + def helio(speed): + return float(np.linalg.norm(unit * math.sqrt(max(speed ** 2 - vesc_e ** 2, 0.0)) + vearth)) + vh = helio(float(np.linalg.norm(vg))) + dsun = float(np.linalg.norm((pe - ps).xyz.to(u.km).value)) + vesc_s = math.sqrt(2 * 1.32712440018e11 / dsun) + lo_s, hi_s = vesc_e, float(np.linalg.norm(vg)) + if vh > vesc_s: + for _ in range(60): + mid = 0.5 * (lo_s + hi_s) + lo_s, hi_s = (mid, hi_s) if helio(mid) < vesc_s else (lo_s, mid) + cut = 1 - lo_s / float(np.linalg.norm(vg)) if vh > vesc_s else 0.0 + out.append(dict(date=r["date"], energy_kt=core.num(r["impact-e"]), vel=float(r["vel"]), vmag=float(np.linalg.norm(v)), v_helio=vh, v_esc=vesc_s, cut=cut, + _u=unit, _s=float(np.linalg.norm(vg)), _ve=vesc_e, _vE=vearth, + lat=lat, lon=lon, alt=float(r["alt"]))) + for o in out: + o["consistent"] = abs(o["vel"] - o["vmag"]) <= mismatch_kms + o["excess"] = o["v_helio"] - o["v_esc"] + hyp = [o for o in out if o["excess"] > margin_kms] + rng = np.random.default_rng(23) + for o in hyp: + late = o["date"] >= "2018-01-01" + sv, sd = (0.55, math.radians(1.1)) if late else (6.0, math.radians(20.0)) + u0 = o["_u"] + e1 = np.cross(u0, [0.0, 0.0, 1.0]) + e1 /= np.linalg.norm(e1) + e2 = np.cross(u0, e1) + n = rng.standard_normal((draws, 2)) * sd + uu = u0[None, :] + n[:, :1] * e1[None, :] + n[:, 1:] * e2[None, :] + uu /= np.linalg.norm(uu, axis=1)[:, None] + sp = o["_s"] + sv * rng.standard_normal(draws) + vinf = np.sqrt(np.clip(sp ** 2 - o["_ve"] ** 2, 0, None)) + vh_d = np.linalg.norm(uu * vinf[:, None] + o["_vE"][None, :], axis=1) + o["p_bound"] = float(np.mean(vh_d < o["v_esc"])) + o["era"] = "from 2018" if late else "before 2018" + o["vet"] = "sensor-error" if o["p_bound"] > p_bound else None + for o in out: + for k in ("_u", "_s", "_ve", "_vE"): + o.pop(k, None) + hyp_ok = [o for o in hyp if o["consistent"]] + left = [o for o in hyp if o["vet"] is None] + print("%d fireballs with location and velocity vector (%d with listed speed and vector agreeing to %g km/s); heliocentric speeds above the Sun's escape speed: %d, %d of them consistent; " + "bound in more than %g of the draws within CNEOS's errors: %d; beyond them: %d" % (len(out), sum(o["consistent"] for o in out), mismatch_kms, len(hyp), len(hyp_ok), p_bound, + len(hyp) - len(left), len(left))) + for o in sorted(hyp, key=lambda o: -o["excess"]): + print(" %s: %.1f km/s listed (vector %.1f), heliocentric %.1f against %.1f km/s (+%.1f), bound if the speed is %.1f per cent too high, bound in %.3f of the draws (%s); impact energy %s kt, %.1f %.1f; %s" % ( + o["date"], o["vel"], o["vmag"], o["v_helio"], o["v_esc"], o["excess"], 100 * o["cut"], o["p_bound"], o["era"], o["energy_kt"], o["lat"], o["lon"], o["vet"] or "unexplained")) + json.dump(out, open(core.results("cneos_fireballs.json"), "w"), indent=1, default=float) + if record: + core.record_run( + "cneos_hyperbolic_fireballs", "Fireballs from outside the Solar System", "CNEOS fireball database (JPL fireball API)", "fireballs with location and pre-entry velocity vector: %d" % len(out), + os.path.abspath(__file__), "fireballs", len(out), "fireballs", dict(margin_kms=margin_kms, mismatch_kms=mismatch_kms), + "the Sun's escape speed at Earth's distance on each date; CNEOS's errors against ground-based networks (Peña-Asensio et al. 2025) by Monte Carlo", + "a fireball arriving faster than anything bound to the Sun beyond the sensors' errors", + "%d above the escape speed, %d of them bound in more than %g of the draws within CNEOS's errors; %d beyond them" % (len(hyp), len(hyp) - len(left), p_bound, len(left)), + [dict(target="fireball:%s" % o["date"].replace(" ", "T"), stat=round(o["excess"], 2), unit="km/s above the Sun's escape speed", vet=o["vet"], + note="listed %.1f km/s, heliocentric %.1f, bound if the speed is %.1f per cent too high, bound in %.3f of the draws (%s)" % ( + o["vel"], o["v_helio"], 100 * o["cut"], o["p_bound"], o["era"])) for o in hyp]) + print("recorded") + + +deliveries_DOC = r"""Deliveries from stellar encounters: the three interstellar objects ('Oumuamua, Borisov and 3I/ATLAS) with their incoming velocity at infinity from the Small-Body Database's elements, set against every Gaia DR3 star within 100 pc with a radial velocity, both carried back on straight lines for 10 Myr, and the stars that passed within 1 pc of the object's path at under 10 km/s relative speed, where something released or dropped by the star would have left it; the count is set against 200 draws of the same speeds in random directions. + + python -I seti.py solar_system deliveries [record] [--dmin-pc 1] [--dv-kms 10] [--tmax-myr 10] [--draws 200]""" + + +def deliveries_main(record=False, dmin_pc=1.0, dv_kms=10.0, tmax_myr=10.0, draws=200): + from astropy.coordinates import SkyCoord, GeocentricTrueEcliptic, BarycentricMeanEcliptic, ICRS + import astropy.units as u + KMS = 1.0227121650537077 + isos = {} + for name in ("1I", "2I", "3I"): + d = json.loads(core.get("https://ssd-api.jpl.nasa.gov/sbdb.api?sstr=%s" % name, timeout=60)) + el = {e["name"]: float(e["value"]) for e in d["orbit"]["elements"] if e.get("value") not in (None, "")} + e, q, inc, om, w = el["e"], el["q"], math.radians(el["i"]), math.radians(el["om"]), math.radians(el["w"]) + a = q / (1 - e) + vinf = math.sqrt(1.32712440018e11 / (abs(a) * 1.495978707e8)) + nu = -math.acos(-1 / e) + # the incoming asymptote's direction in the orbital plane, rotated to ecliptic axes; the body moves away from it + pq = np.array([math.cos(nu), math.sin(nu), 0.0]) + rz = lambda t: np.array([[math.cos(t), -math.sin(t), 0], [math.sin(t), math.cos(t), 0], [0, 0, 1]]) + rx = lambda t: np.array([[1, 0, 0], [0, math.cos(t), -math.sin(t)], [0, math.sin(t), math.cos(t)]]) + rhat = rz(om) @ rx(inc) @ rz(w) @ pq + c = SkyCoord(x=-rhat[0], y=-rhat[1], z=-rhat[2], frame=BarycentricMeanEcliptic(), representation_type="cartesian").transform_to(ICRS()) + isos[d["object"]["fullname"]] = vinf * c.cartesian.xyz.value / np.linalg.norm(c.cartesian.xyz.value) + rows = core.tap("gaia", "SELECT ra, dec, parallax, pmra, pmdec, radial_velocity, source_id FROM gaiadr3.gaia_source WHERE parallax > 10 AND parallax_over_error > 10 " + "AND radial_velocity IS NOT NULL") + ra, de = np.radians([float(r["ra"]) for r in rows]), np.radians([float(r["dec"]) for r in rows]) + dist = 1000 / np.array([float(r["parallax"]) for r in rows]) + pmra, pmde, rv = (np.array([float(r[k]) for r in rows]) for k in ("pmra", "pmdec", "radial_velocity")) + ehat = np.stack([np.cos(de) * np.cos(ra), np.cos(de) * np.sin(ra), np.sin(de)], 1) + ea = np.stack([-np.sin(ra), np.cos(ra), np.zeros_like(ra)], 1) + ed = np.stack([-np.sin(de) * np.cos(ra), -np.sin(de) * np.sin(ra), np.cos(de)], 1) + X = ehat * dist[:, None] + V = ehat * rv[:, None] + ea * (4.74047 * pmra / 1000 * dist)[:, None] + ed * (4.74047 * pmde / 1000 * dist)[:, None] + + def passes(v): + dV = (V - v[None, :]) * KMS + t = -np.einsum("ij,ij->i", X, dV) / np.einsum("ij,ij->i", dV, dV) + ok = (t < 0) & (t > -tmax_myr) + dmin = np.linalg.norm(X + dV * t[:, None], axis=1) + return np.nonzero(ok & (dmin < dmin_pc) & (np.linalg.norm(dV / KMS, axis=1) < dv_kms))[0], t, dmin + rng = np.random.default_rng(31) + out = {} + for name, v in isos.items(): + hit, t, dmin = passes(v) + null = [] + for _ in range(draws): + u_ = rng.standard_normal(3) + null.append(len(passes(np.linalg.norm(v) * u_ / np.linalg.norm(u_))[0])) + out[name] = dict(vinf=float(np.linalg.norm(v)), n=len(hit), expected=float(np.mean(null)), p=float(np.mean(np.array(null) >= len(hit))) if len(hit) else 1.0, + stars=[dict(id=rows[k]["source_id"], t_myr=float(t[k]), dmin_pc=float(dmin[k]), dv=float(np.linalg.norm(V[k] - v))) for k in hit]) + print("%s: v_inf %.1f km/s; stars within %g pc of its path at under %g km/s in the last %g Myr: %d against %.2f in random directions (p %.2f); %s" % ( + name, out[name]["vinf"], dmin_pc, dv_kms, tmax_myr, len(hit), out[name]["expected"], out[name]["p"], + ["Gaia DR3 %s at %.2f Myr, %.2f pc, %.1f km/s" % (s["id"], s["t_myr"], s["dmin_pc"], s["dv"]) for s in out[name]["stars"]][:5])) + if record: + core.record_run( + "interstellar_object_home_stars", "Deliveries from stellar encounters", "JPL Small-Body Database (1I, 2I, 3I); Gaia DR3 stars within 100 pc with radial velocities", + "the three interstellar objects against %d Gaia DR3 stars" % len(rows), os.path.abspath(__file__), "deliveries", len(isos), "objects", + dict(dmin_pc=dmin_pc, dv_kms=dv_kms, tmax_myr=tmax_myr, draws=draws), "%d draws of each object's speed in random directions" % draws, + "a star whose path met an interstellar object's within %g pc at under %g km/s" % (dmin_pc, dv_kms), + "; ".join("%s %d against %.2f" % (k.strip(), v["n"], v["expected"]) for k, v in out.items()), + [dict(target="gaia_dr3:%s" % s["id"], stat=round(s["dmin_pc"], 3), unit="pc from the object's path", vet="chance-rate" if v["p"] > 0.01 else None, + note="%s, %.2f Myr ago at %.1f km/s" % (k.strip(), -s["t_myr"], s["dv"])) for k, v in out.items() for s in v["stars"]]) + print("recorded") + + +GLM_ELLIPSOID = (6394.140, 6362.755) + + +def glm_sat(lon): + """A geostationary satellite's Earth-fixed position, km.""" + return np.array([42164.16 * math.cos(math.radians(lon)), 42164.16 * math.sin(math.radians(lon)), 0.0]) + + +def glm_ell_point(lat, lon): + """The Earth-fixed point on GLM's lightning ellipsoid at a geodetic latitude and longitude, km.""" + a, b = GLM_ELLIPSOID + e2 = 1 - b * b / (a * a) + p, l = math.radians(lat), math.radians(lon) + n = a / math.sqrt(1 - e2 * math.sin(p) ** 2) + return np.array([n * math.cos(p) * math.cos(l), n * math.cos(p) * math.sin(l), n * (1 - e2) * math.sin(p)]) + + +def glm_height(x): + """Height above the WGS84 ellipsoid of an Earth-fixed point, km.""" + a, e2 = 6378.137, 0.0066943799901 + r = math.hypot(x[0], x[1]) + lat = math.atan2(x[2], r * (1 - e2)) + h = 0.0 + for _ in range(6): + n = a / math.sqrt(1 - e2 * math.sin(lat) ** 2) + h = r / math.cos(lat) - n + lat = math.atan2(x[2], r * (1 - e2 * n / (n + h))) + return h + + +def glm_curve(path): + """A GLM bolide light curve from the bolide database's CSV: times (s), latitudes, longitudes, energies and the satellite's longitude; rows without times are the 2 ms frames.""" + import datetime as _dt + rows, sat_lon = [], None + for line in open(path, encoding="utf-8", errors="replace"): + if line.startswith("#Satellite"): + sat_lon = float(line.split(",")[1].split("/")[1]) + parts = line.strip().split(",") + if len(parts) == 4 and parts[1].lstrip("-").replace(".", "").isdigit(): + rows.append(parts) + if rows and rows[0][0].isdigit(): + t = np.array([float(r[0]) / 1000.0 for r in rows]) + else: + t0 = _dt.datetime.strptime(rows[0][0].split(" (")[0], "%a %b %d %Y %H:%M:%S GMT%z").timestamp() + t = t0 + 0.002 * np.arange(len(rows)) + return dict(t=t, lon=np.array([float(r[1]) for r in rows]), lat=np.array([float(r[2]) for r in rows]), e=np.array([float(r[3]) for r in rows]), sat=sat_lon) + + +def glm_stereo(path_a, path_b, frac=0.1): + """A fireball's Earth-fixed velocity from two GLM views: rays from each satellite through its frame's position on the lightning ellipsoid, triangulated at common times and fitted with a line, weighted by light.""" + a, b = glm_curve(path_a), glm_curve(path_b) + ta = {round(x, 3): k for k, x in enumerate(a["t"])} + sa, sb = glm_sat(a["sat"]), glm_sat(b["sat"]) + pts, ts, ws, miss = [], [], [], [] + for kb, t in enumerate(b["t"]): + ka = ta.get(round(t, 3)) + if ka is None or a["e"][ka] < frac * a["e"].max() or b["e"][kb] < frac * b["e"].max(): + continue + p1, p2 = glm_ell_point(a["lat"][ka], a["lon"][ka]), glm_ell_point(b["lat"][kb], b["lon"][kb]) + d1, d2 = (p1 - sa) / np.linalg.norm(p1 - sa), (p2 - sb) / np.linalg.norm(p2 - sb) + w0 = sa - sb + aa, bb, cc, dd, ee = d1 @ d1, d1 @ d2, d2 @ d2, d1 @ w0, d2 @ w0 + den = aa * cc - bb * bb + u, v = (bb * ee - cc * dd) / den, (aa * ee - bb * dd) / den + q1, q2 = sa + u * d1, sb + v * d2 + pts.append((q1 + q2) / 2) + miss.append(float(np.linalg.norm(q1 - q2))) + ts.append(t) + ws.append(math.sqrt(a["e"][ka] * b["e"][kb])) + if len(ts) < 20: + return None + pts, ts, ws = np.array(pts), np.array(ts), np.array(ws) + x = np.stack([np.ones_like(ts), ts - ts.mean()], 1) + w = np.sqrt(ws / ws.max()) + coef = np.linalg.lstsq(x * w[:, None], pts * w[:, None], rcond=None)[0] + hs = [glm_height(q) for q in pts] + return dict(v=coef[1], n=len(ts), span=float(ts.max() - ts.min()), miss=float(np.median(miss)), h=(float(max(hs)), float(min(hs)))) + + +fireballglm_DOC = r"""Fireballs seen twice: every CNEOS fireball since the first GOES lightning mapper began (2017 July 23) inside the mappers' view (longitude 180 W to 5 W, latitude within 54 deg), matched to the NASA GLM bolide database within 60 s and 300 km, the match rate measured on all of them and the fireballs faster than the Sun's escape speed read against it, with each match's GLM duration, beginning altitude and detecting satellites; an independent sighting fixes a fireball's time and place. Where two satellites saw it, the two views are triangulated frame by frame into a trail whose fitted velocity is set against the CNEOS vector on every such fireball, which measures how well the mappers' light centroids follow a fireball's motion before the fast ones are read by it. + + python -I seti.py solar_system fireballglm [record] [--dt-s 60] [--km 300]""" + + +def fireballglm_main(record=False, dt_s=60.0, km=300.0): + import datetime as _dt + glm = json.loads(core.get("https://neo-bolide.ndc.nasa.gov/service/event/public", timeout=300))["data"] + gt = np.array([g["datetime"] / 1000.0 for g in glm]) + order = np.argsort(gt) + gt = gt[order] + glm = [glm[k] for k in order] + fb = json.load(open(core.results("cneos_fireballs.json"))) + start = _dt.datetime(2017, 7, 23, tzinfo=_dt.timezone.utc).timestamp() + seen, out = [], [] + for f in fb: + t = _dt.datetime.fromisoformat(f["date"].replace(" ", "T")).replace(tzinfo=_dt.timezone.utc).timestamp() + if t < start or not (-180 <= f["lon"] <= -5) or abs(f["lat"]) > 54: + continue + lo, hi = np.searchsorted(gt, t - dt_s), np.searchsorted(gt, t + dt_s) + best = None + for k in range(lo, hi): + g = glm[k] + d = 6371.0 * math.radians(core.sep_arcsec(f["lon"], f["lat"], g["longitude"], g["latitude"]) / 3600.0) + if d < km and (best is None or d < best[1]): + best = (g, d, gt[k] - t) + o = dict(date=f["date"], lat=f["lat"], lon=f["lon"], vel=f["vel"], v_helio=f["v_helio"], excess=f["excess"], matched=best is not None) + if best: + g = best[0] + o.update(glm_id=g["_id"], km=best[1], dt=best[2], by=g.get("detectedBy"), duration=g.get("duration"), h0=g.get("beginningAltitude"), conf=g.get("confidenceRating")) + out.append(o) + rate = sum(o["matched"] for o in out) / max(len(out), 1) + fast = [o for o in out if o["excess"] > 0] + byid = {g["_id"]: g for g in glm} + api = json.loads(core.get("https://ssd-api.jpl.nasa.gov/fireball.api?req-loc=true&req-vel=true&vel-comp=true", timeout=120)) + vec = {r[0]: np.array([float(r[9]), float(r[10]), float(r[11])]) for r in api["data"] if r[9]} + os.makedirs(core.data("glm"), exist_ok=True) + for o in out: + if not o["matched"]: + continue + paths = {} + for c in byid[o["glm_id"]].get("csv") or []: + for sname in ("G16", "G17", "G18", "G19"): + if "_%s_" % sname in c and sname not in paths: + paths[sname] = c + if len(paths) < 2: + continue + local = [] + for sname in sorted(paths)[:2]: + lp = core.data("glm", os.path.basename(paths[sname])) + if not os.path.exists(lp): + open(lp, "wb").write(core.get("https://neo-bolide.ndc.nasa.gov" + paths[sname], timeout=120)) + local.append(lp) + st = glm_stereo(*local) + if st is None or o["date"] not in vec: + continue + vc = vec[o["date"]] + o["stereo"] = dict(speed=float(np.linalg.norm(st["v"])), ratio=float(np.linalg.norm(st["v"]) / np.linalg.norm(vc)), angle=math.degrees(math.acos(max(-1.0, min(1.0, float( + vc @ st["v"] / np.linalg.norm(vc) / np.linalg.norm(st["v"])))))), n=st["n"], span=st["span"], miss=st["miss"], h=st["h"]) + ster = [o for o in out if o.get("stereo")] + ratios = np.array([o["stereo"]["ratio"] for o in ster if o["excess"] <= 0]) + print("%d CNEOS fireballs inside the mappers' view since 2017 July 23; %d matched to a GLM bolide within %g s and %g km (%.2f); %d seen in stereo, whose GLM trail speeds run at %.2f of " + "the CNEOS speeds at the median and %.2f-%.2f between the 16th and 84th percentiles" % (len(out), sum(o["matched"] for o in out), dt_s, km, rate, len(ster), float(np.median(ratios)), + float(np.percentile(ratios, 16)), float(np.percentile(ratios, 84)))) + for o in ster: + print(" stereo %s: CNEOS %.1f km/s, GLM %.1f km/s between %.0f and %.0f km over %.2f s, ratio %.2f, %.0f deg apart" % ( + o["date"], o["vel"], o["stereo"]["speed"], o["stereo"]["h"][0], o["stereo"]["h"][1], o["stereo"]["span"], o["stereo"]["ratio"], o["stereo"]["angle"])) + for o in sorted(out, key=lambda o: -o["excess"])[:6]: + print(" %s (%.1f, %.1f) %.1f km/s, heliocentric %.1f (+%.1f): %s" % (o["date"], o["lat"], o["lon"], o["vel"], o["v_helio"], o["excess"], + "GLM %s, %.0f km and %+.1f s away, duration %s s, beginning height %s km, %s confidence" % (o["by"], o["km"], o["dt"], o["duration"], o["h0"], o["conf"]) if o["matched"] else "no GLM bolide")) + json.dump(out, open(core.results("cneos_glm_matches.json"), "w"), indent=1) + if record: + core.record_run( + "cneos_glm_bolides", "Fireballs seen twice", "CNEOS fireball database (JPL fireball API); NASA GLM bolide database (neo-bolide.ndc.nasa.gov)", + "CNEOS fireballs since 2017 July 23 inside the GOES lightning mappers' view: %d" % len(out), os.path.abspath(__file__), "fireballglm", len(out), "fireballs", dict(dt_s=dt_s, km=km), + "the match rate of all the fireballs in view: %.2f; GLM stereo trail speeds over CNEOS speeds on %d slower fireballs: median %.2f, 16-84 per cent %.2f-%.2f" % ( + rate, len(ratios), float(np.median(ratios)), float(np.percentile(ratios, 16)), float(np.percentile(ratios, 84))), + "an independent sighting of a fireball faster than the Sun's escape speed, and its trail speed", + "%d of %d matched; %s" % (sum(o["matched"] for o in out), len(out), "; ".join("%s %s%s" % (o["date"], "matched" if o["matched"] else "unmatched", ( + ", stereo trail speed %.1f km/s, %.2f of the CNEOS speed" % (o["stereo"]["speed"], o["stereo"]["ratio"])) if o.get("stereo") else "") for o in fast)), + [dict(target="fireball:%s" % o["date"].replace(" ", "T"), stat=round(o["excess"], 2), unit="km/s above the Sun's escape speed", vet=None, + note=("GLM %s, %.0f km, %+.1f s, duration %s s, beginning height %s km" % (o["by"], o["km"], o["dt"], o["duration"], o["h0"])) if o["matched"] else "no GLM bolide") + for o in fast]) + print("recorded") + + +fireballgmn_DOC = r"""Fireballs the meteor cameras caught: every CNEOS fireball since 2018 against the Global Meteor Network's trajectories (the yearly summaries, 2018-2026), a camera trajectory beginning within 10 s and 300 km of the fireball's peak, its initial speed set against the CNEOS speed on every match, and the fireballs faster than the Sun's escape speed read against that calibration; a ground network's speed is measured from triangulated video and settles a satellite speed it disagrees with. + + python -I seti.py solar_system fireballgmn [record] [--dt-s 10] [--km 300]""" + + +def fireballgmn_main(record=False, dt_s=10.0, km=300.0): + from astropy.time import Time + fb = json.load(open(core.results("cneos_fireballs.json"))) + jd = np.array([Time(f["date"].replace(" ", "T"), scale="utc").jd for f in fb]) + order = np.argsort(jd) + jd_s = jd[order] + win = dt_s / 86400.0 + hits = {} + for y in meteors_YEARS: + p = os.path.join(meteors_ROOT, "traj_summary_yearly_%d.txt" % y) + if not os.path.exists(p): + continue + for line in open(p, encoding="utf-8", errors="replace"): + if line.startswith("#") or ";" not in line: + continue + c = line.split(";") + if len(c) < 86: + continue + j = num(c[1]) + if j is None: + continue + k = np.searchsorted(jd_s, j - win) + while k < len(jd_s) and jd_s[k] <= j + win: + f = fb[order[k]] + lat, lon = num(c[63]), num(c[65]) + if lat is not None and lon is not None: + d = 6371.0 * math.radians(core.sep_arcsec(f["lon"], f["lat"], lon, lat) / 3600.0) + if d < km: + hits.setdefault(int(order[k]), []).append(dict(id=c[0].strip(), dt=(j - jd[order[k]]) * 86400, km=d, vinit=num(c[59]), evinit=num(c[60]), vgeo=num(c[15]), + e=num(c[25]), se=num(c[26]), hbeg=num(c[67]), hend=num(c[73]), nst=num(c[84]), qc=num(c[80]))) + k += 1 + out = [] + for k, f in enumerate(fb): + if k in hits: + h = min(hits[k], key=lambda h: abs(h["dt"])) + out.append(dict(date=f["date"], vel=f["vel"], excess=f["excess"], gmn=h, ratio=(h["vinit"] / f["vel"]) if h["vinit"] else None)) + ratios = np.array([o["ratio"] for o in out if o["ratio"] and o["excess"] <= 0]) + fast = [f for f in fb if f["excess"] > 0] + print("%d CNEOS fireballs; %d with a GMN trajectory within %g s and %g km; GMN initial speed over CNEOS speed on the bound ones: median %s, 16-84 per cent %s" % ( + len(fb), len(out), dt_s, km, "%.3f" % np.median(ratios) if len(ratios) else "-", "%.3f-%.3f" % (np.percentile(ratios, 16), np.percentile(ratios, 84)) if len(ratios) > 2 else "-")) + for o in out: + print(" %s: CNEOS %.1f km/s; GMN %s %+.1f s and %.0f km away, initial %.2f +- %s km/s, e %s +- %s, %s to %s km, %s stations, convergence %s deg; ratio %.3f%s" % ( + o["date"], o["vel"], o["gmn"]["id"], o["gmn"]["dt"], o["gmn"]["km"], o["gmn"]["vinit"] or 0, o["gmn"]["evinit"], o["gmn"]["e"], o["gmn"]["se"], o["gmn"]["hbeg"], o["gmn"]["hend"], + o["gmn"]["nst"], o["gmn"]["qc"], o["ratio"] or 0, "; faster than escape by CNEOS" if o["excess"] > 0 else "")) + caught = {o["date"] for o in out} + print("fast fireballs caught by GMN: %s" % [(f["date"], f["date"] in caught) for f in fast]) + json.dump(out, open(core.results("cneos_gmn_matches.json"), "w"), indent=1) + if record: + core.record_run( + "cneos_gmn_trajectories", "Fireballs the meteor cameras caught", "CNEOS fireball database; Global Meteor Network trajectory summaries 2018-2026", + "CNEOS fireballs with velocity vectors: %d" % len(fb), os.path.abspath(__file__), "fireballgmn", len(fb), "fireballs", dict(dt_s=dt_s, km=km), + "GMN initial speed over CNEOS speed on %d bound fireballs: median %s" % (len(ratios), "%.3f" % np.median(ratios) if len(ratios) else "-"), + "a camera trajectory of a fireball faster than the Sun's escape speed", + "%d fireballs caught by GMN; of the %d fast ones, %s" % (len(out), len(fast), "; ".join("%s %s" % (f["date"], "caught" if f["date"] in caught else "not caught") for f in fast)), + [dict(target="fireball:%s" % o["date"].replace(" ", "T"), stat=round(o["ratio"], 3) if o["ratio"] else None, unit="GMN initial speed over the CNEOS speed", + vet=None, note="GMN %s, %.1f km/s" % (o["gmn"]["id"], o["gmn"]["vinit"] or 0)) for o in out if o["excess"] > 0]) + print("recorded") + + +vanished_DOC = r"""Vanished numbered asteroids: Small-Body Database numbered asteroids brighter than absolute magnitude 17 with no observation since a cut-off year, each one's present distance from the Sun found by propagating its catalogued orbit to today with Kepler's equation and its present magnitude at opposition, V = H + 5 log10(r (r - 1)), set against the V 21.5 that the wide surveys reach, and every body that estimate leaves within reach looked up in JPL Horizons for its apparent magnitude and declination tonight; a numbered body bright enough to be seen that no survey has seen would have left its orbit, and one now fainter than the surveys reach is out of their sight by its orbit alone. + + python -I seti.py solar_system vanished [record] [--h-max 17] [--last-before 2017-01-01] [--v-limit 21.5]""" + + +# bodies whose ephemerides come from the planetary solution, so that their small-body orbits are not refit with new observations +VANISHED_PLANETARY = {"134340": "Pluto, whose ephemeris comes from the planetary solution, so its small-body orbit is not refit"} + + +def horizons_now(target): + """Apparent V magnitude and declination of a small body tonight from JPL Horizons, or None.""" + import urllib.parse + from astropy.time import Time + day = Time.now().iso[:10] + q = dict(format="json", COMMAND="'%s;'" % target, EPHEM_TYPE="OBSERVER", CENTER="'500@399'", START_TIME="'%s'" % day, STOP_TIME="'%s 01:00'" % day, STEP_SIZE="'1h'", + QUANTITIES="'1,9'", ANG_FORMAT="'DEG'") + try: + r = json.loads(core.get("https://ssd.jpl.nasa.gov/api/horizons.api?" + urllib.parse.urlencode(q), timeout=60))["result"] + row = r[r.index("$$SOE") + 5:r.index("$$EOE")].strip().splitlines()[0].split() + return float(row[4]), float(row[3]) + except Exception: + return None + + +def vanished_main(record=False, h_max=17.0, last_before="2017-01-01", v_limit=21.5): + from astropy.time import Time + rows = sbdb_rows(["H|LT|%g" % h_max, "last_obs|LT|%s" % last_before], "full_name,pdes,class,H,a,e,q,ma,epoch,n,first_obs,last_obs", kind="a") + rows = [r for r in rows if str(r["pdes"]).strip().isdigit()] + now = Time.now().jd + out = [] + for r in rows: + a, e, ma, ep, n, h = (num(r[k]) for k in ("a", "e", "ma", "epoch", "n", "H")) + if None in (a, e, ma, ep, n, h) or e >= 1: + continue + m = math.radians((ma + n * (now - ep)) % 360.0) + ecc = m + for _ in range(50): + ecc = ecc - (ecc - e * math.sin(ecc) - m) / (1 - e * math.cos(ecc)) + rr = a * (1 - e * math.cos(ecc)) + v = h + 5 * math.log10(rr * max(rr - 1, 0.05)) + out.append(dict(name=" ".join(str(r["full_name"]).split()), pdes=str(r["pdes"]).strip(), cls=str(r["class"]).strip(), H=h, a=a, e=e, q=num(r["q"]), r_now=rr, v_now=v, + last=r["last_obs"], vet="out-of-reach" if v > v_limit else None)) + for o in out: + if o["vet"] is None: + if o["pdes"] in VANISHED_PLANETARY: + o["vet"], o["why"] = "artefact", VANISHED_PLANETARY[o["pdes"]] + continue + hz = horizons_now(o["pdes"]) + if hz: + o["v_horizons"], o["dec_now"] = hz + if hz[0] > v_limit: + o["vet"] = "out-of-reach" + seen = [o for o in out if o["vet"] is None] + classes = {} + for o in out: + classes[o["cls"]] = classes.get(o["cls"], 0) + 1 + print("%d numbered asteroids with H below %g unobserved since %s, by class %s; beyond V %g tonight or the catalogue's own artefact: %d; within the surveys' reach: %d" % ( + len(out), h_max, last_before, classes, v_limit, len(out) - len(seen), len(seen))) + for o in sorted(out, key=lambda o: o["v_now"])[:12]: + print(" %s (%s): H %.1f, a %.2f au, e %.2f, now %.1f au from the Sun, V %.1f at opposition%s, last seen %s; %s" % ( + o["name"], o["cls"], o["H"], o["a"], o["e"], o["r_now"], o["v_now"], ", V %.1f at declination %+.0f tonight" % (o["v_horizons"], o["dec_now"]) if o.get("v_horizons") else "", + o["last"], o["vet"] or "within reach")) + json.dump(out, open(core.results("vanished_asteroids.json"), "w"), indent=1) + if record: + core.record_run( + "sbdb_vanished_numbered", "Vanished numbered asteroids", "JPL Small-Body Database (sbdb_query.api)", + "numbered asteroids with H below %g and no observation since %s: %d" % (h_max, last_before, len(out)), os.path.abspath(__file__), "vanished", len(out), "asteroids", + dict(h_max=h_max, last_before=last_before, v_limit=v_limit), "each orbit propagated to today; the wide surveys' reach of V %g" % v_limit, + "a numbered asteroid within the surveys' reach that no survey has seen", "%d by class %s; %d now beyond V %g or the catalogue's own artefact, %d within reach" % ( + len(out), classes, len(out) - len(seen), v_limit, len(seen)), + [dict(target="sbdb:%s" % o["pdes"], stat=round(o["v_now"], 1), unit="V at opposition now", vet=o["vet"], note="%s, %s, %.1f au from the Sun, last seen %s%s" % ( + o["name"], o["cls"], o["r_now"], o["last"], "; " + o["why"] if o.get("why") else "; V %.1f tonight" % o["v_horizons"] if o.get("v_horizons") else "")) for o in out]) + print("recorded") + + +APPROACHES = { + "vanished": (lambda: core.run_cli(vanished_main), vanished_DOC), + "fireballgmn": (lambda: core.run_cli(fireballgmn_main), fireballgmn_DOC), + "fireballglm": (lambda: core.run_cli(fireballglm_main), fireballglm_DOC), + "deliveries": (lambda: core.run_cli(deliveries_main), deliveries_DOC), + "fireballs": (lambda: core.run_cli(fireballs_main), fireballs_DOC), + "spinsurvey": (lambda: core.run_cli(spinsurvey_main), spinsurvey_DOC), + "lightbodies": (lambda: core.run_cli(lightbodies_main), lightbodies_DOC), + "bluesurfaces": (lambda: core.run_cli(bluesurfaces_main), bluesurfaces_DOC), + "outofplane": (lambda: core.run_cli(outofplane_main), outofplane_DOC), + "retroco": (lambda: core.run_cli(retroco_main), retroco_DOC), + "sunfocus": (lambda: core.run_cli(sunfocus_main), sunfocus_DOC), + "tnocircles": (lambda: core.run_cli(tnocircles_main), tnocircles_DOC), + "kirkwood": (lambda: core.run_cli(kirkwood_main), kirkwood_DOC), + "aimed": (lambda: core.run_cli(aimed_main), aimed_DOC), + "jupl3": (lambda: core.run_cli(jupl3_main), jupl3_DOC), + "copycomets": (lambda: core.run_cli(copycomets_main), copycomets_DOC), + "blackest": (lambda: core.run_cli(blackest_main), blackest_DOC), + "hyperbolic": (lambda: core.run_cli(hyperbolic_main), hyperbolic_DOC), + "reflspike": (lambda: core.run_cli(reflspike_main), reflspike_DOC), + "pushed": (lambda: core.run_cli(pushed_main), pushed_DOC), + "ecliptic": (lambda: core.run_cli(ecliptic_main), ecliptic_DOC), + "giantcircles": (lambda: core.run_cli(giantcircles_main), giantcircles_DOC), + "polar": (lambda: core.run_cli(polar_main), polar_DOC), + "sunward": (lambda: core.run_cli(sunward_main), sunward_DOC), + "lagrange": (lambda: core.run_cli(lagrange_main), lagrange_DOC), + "hourspins": (lambda: core.run_cli(hourspins_main), hourspins_DOC), + "tangent": (lambda: core.run_cli(tangent_main), tangent_DOC), + "yearcomets": (lambda: core.run_cli(yearcomets_main), yearcomets_DOC), + "circular": (lambda: core.run_cli(circular_main), circular_DOC), + "mirror": (lambda: core.run_cli(mirror_main), mirror_DOC), + "retrograde": (lambda: core.run_cli(retrograde_main), retrograde_DOC), + "earthorbit": (lambda: core.run_cli(earthorbit_main), earthorbit_DOC), + "iso3i": (iso3i_cli, iso3i_DOC), + "isoarrival": (isoarrival_cli, isoarrival_DOC), + "darkcomet": (darkcomet_cli, darkcomet_DOC), + "replicated": (replicated_cli, replicated_DOC), + "limbs": (limbs_cli, limbs_DOC), + "plates": (plates_cli, plates_DOC), + "phase": (lambda: core.run_cli(phase_main), phase_DOC), + "spin": (lambda: core.run_cli(spin_main), spin_DOC), + "meteors": (meteors_cli, meteors_DOC), + "yarkovsky": (yarkovsky_cli, yarkovsky_DOC), + "orbits": (lambda: core.run_cli(orbits_main), orbits_DOC), + "hot": (lambda: core.run_cli(hot_main), hot_DOC), + "nga": (nga_cli, nga_DOC), + "surfaces": (surfaces_cli, surfaces_DOC), + "radar_albedo": (radar_albedo_cli, radar_albedo_DOC), +} + + diff --git a/setitools/transits.py b/setitools/transits.py new file mode 100644 index 0000000000000000000000000000000000000000..25a35bc4cca8a4a821f1efa519ea16a80d3cbd2b --- /dev/null +++ b/setitools/transits.py @@ -0,0 +1,5146 @@ +"""Transits and timing: occulter shapes, timing steps, nightside light and satellite belts.""" +import argparse +import collections +import csv +import io +import json +import math +import os +import re +import sys +import urllib.parse +from concurrent.futures import ThreadPoolExecutor + +import numpy as np + +from setitools import core, science +from setitools.science import profile, shape_stats +from setitools.core import num, quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------- + +shapes_kepler_DOC = r"""Occulter shapes in Kepler's not-transit-like KOIs (Arnold 2005): stable folded profiles no trapezoid fits, without a secondary eclipse or a pulsator's sinusoid. + + python -I seti.py transits shapes_kepler kois + python -I seti.py transits shapes_kepler fetch [--threads 8] [--list SHARE.json] + python -I seti.py transits shapes_kepler analyse [--plots 20] [--list SHARE.json] [--out kepler_shapes.json] [--procs N]""" + +shapes_kepler_HERE = core.RESULTS +shapes_kepler_DL = os.environ.get("SETI_KEPLER", core.data("kepler")) +shapes_kepler_UA = core.UA + + +def shapes_kepler_get(url, timeout=120): + """Bytes of a URL; None on 404 or after three failures.""" + return core.get(url, timeout=timeout, retries=3, soft=True, pause=0) + + +def shapes_kepler_kois(): + rows = core.exoplanets("SELECT kepid, kepoi_name, koi_period, koi_time0bk, koi_duration, koi_depth, koi_model_snr, " + "koi_steff, koi_srad, koi_kepmag FROM cumulative WHERE koi_fpflag_nt = 1 AND koi_fpflag_ss = 0 " + "AND koi_fpflag_co = 0 AND koi_fpflag_ec = 0") + json.dump(rows, open(os.path.join(shapes_kepler_HERE, "kepler_ntl.json"), "w")) + print("%d KOIs flagged only as not transit-like, on %d stars" % (len(rows), len({r["kepid"] for r in rows}))) + + +def shapes_kepler_fetch_star(kepid): + k9 = "%09d" % int(kepid) + d = os.path.join(shapes_kepler_DL, k9) + if os.path.isdir(d) and os.listdir(d): + return len(os.listdir(d)) + lst = shapes_kepler_get("https://stpubdata.s3.amazonaws.com/?list-type=2&prefix=kepler/public/lightcurves/%s/%s/" % (k9[:4], k9)) + if not lst: + return 0 + keys = re.findall(r"([^<]*_llc\.fits)", lst.decode()) + os.makedirs(d, exist_ok=True) + n = 0 + for k in keys: + b = shapes_kepler_get("https://stpubdata.s3.amazonaws.com/" + k) + if b and b.startswith(b"SIMPLE"): + open(os.path.join(d, k.split("/")[-1]), "wb").write(b) + n += 1 + return n + + +def shapes_kepler_fetch(threads, share=None): + rows = json.load(open(share or os.path.join(shapes_kepler_HERE, "kepler_ntl.json"))) + ids = sorted({r["kepid"] for r in rows}) + os.makedirs(shapes_kepler_DL, exist_ok=True) + with ThreadPoolExecutor(threads) as ex: + got = list(ex.map(shapes_kepler_fetch_star, ids)) + print("%d stars, %d with light curves, %d quarter files" % (len(ids), sum(1 for g in got if g), sum(got))) + + +def shapes_kepler_load(kepid): + from astropy.io import fits + d = os.path.join(shapes_kepler_DL, "%09d" % int(kepid)) + T, F = [], [] + for p in sorted(os.listdir(d)) if os.path.isdir(d) else []: + try: + with fits.open(os.path.join(d, p)) as h: + x = h[1].data + t, f, q = np.asarray(x["TIME"], float), np.asarray(x["PDCSAP_FLUX"], float), np.asarray(x["SAP_QUALITY"], int) + except Exception: + continue + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + if ok.sum() < 100: + continue + T.append(t[ok]) + F.append(f[ok] / np.median(f[ok])) + if not T: + return None + return np.concatenate(T), np.concatenate(F) + + +def shapes_kepler_analyse_one(r): + """Folded-profile statistics of one KOI, or None.""" + quiet_warnings() + try: + P, t0, dur = float(r["koi_period"]), float(r["koi_time0bk"]), float(r["koi_duration"]) / 24.0 + except (TypeError, ValueError): + return None + lc = shapes_kepler_load(r["kepid"]) + if lc is None or P <= 0 or dur <= 0: + return None + s = shape_stats(lc[0], lc[1], P, t0, dur, 0.0204) + return dict(koi=r["kepoi_name"], kepid=r["kepid"], **s) if s else None + + +def shapes_kepler_analyse(nplots, share=None, outname="kepler_shapes.json", procs=1): + rows = json.load(open(share or os.path.join(shapes_kepler_HERE, "kepler_ntl.json"))) + if procs > 1: + from multiprocessing import Pool + with Pool(procs) as pool: + out = [o for o in pool.map(shapes_kepler_analyse_one, rows, chunksize=2) if o] + else: + out = [o for o in map(shapes_kepler_analyse_one, rows) if o] + json.dump(out, open(os.path.join(shapes_kepler_HERE, outname), "w")) + good = [o for o in out if o["snr"] >= 15 and o["stable"] > 0.8 and o["odd_even"] > 0.8 and + not (o["secondary"] > 0.3 * o["depth"])] + print("%d KOIs folded; %d periodic and stable at S/N 15 or more with no secondary eclipse" % (len(out), len(good))) + good.sort(key=lambda o: -o["red_chi"]) + for o in good[:25]: + print(" %s P %.4f d dur %.1f h S/N %.0f: trapezoid reduced chi2 %.1f, asymmetry %+.2f, dips %d, halves r %.2f, " + "odd/even r %.2f, ingress fraction %.2f" % (o["koi"], o["period"], o["dur_h"], o["snr"], o["red_chi"], + o["asym"], o["dips"], o["stable"], o["odd_even"], o["ingress_frac"])) + if nplots: + import matplotlib + matplotlib.use("Agg") + import matplotlib.pyplot as plt + os.makedirs(os.path.join(shapes_kepler_HERE, "kepler_plots"), exist_ok=True) + for o in good[:nplots]: + r = next(x for x in rows if x["kepoi_name"] == o["koi"]) + t, f = shapes_kepler_load(r["kepid"]) + P, t0, dur = float(r["koi_period"]), float(r["koi_time0bk"]), float(r["koi_duration"]) / 24.0 + x, y, e = profile(t, f, P, t0, dur, nb=120) + plt.figure(figsize=(6, 3)) + plt.errorbar(x * 24, y * 1e6, e * 1e6, fmt=".", ms=3) + plt.xlabel("hours from mid-event") + plt.ylabel("ppm") + plt.title("%s P %.4f d" % (o["koi"], P)) + plt.tight_layout() + plt.savefig(os.path.join(shapes_kepler_HERE, "kepler_plots", o["koi"] + ".png"), dpi=90) + plt.close() + + +def shapes_kepler_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("kois", "fetch", "analyse")) + p.add_argument("--threads", type=int, default=8) + p.add_argument("--plots", type=int, default=20) + p.add_argument("--list", default=None, help="JSON list of KOI records (one share)") + p.add_argument("--out", default="kepler_shapes.json") + p.add_argument("--procs", type=int, default=1) + a = p.parse_args() + if a.mode == "kois": + shapes_kepler_kois() + elif a.mode == "fetch": + shapes_kepler_fetch(a.threads, a.list) + else: + shapes_kepler_analyse(a.plots, a.list, a.out, a.procs) + + +def shapes_kepler_cli(): + quiet_warnings() + shapes_kepler_main() + + +# -------------------------------------------------------------------------------------------------------------- + +shapes_tess_DOC = r"""Occulter shapes in TESS false-positive and false-alarm TOIs whose comments name no binary, blend or offset: the Kepler shape test on SPOC, TESS-SPOC or QLP folds. + + python -I seti.py transits shapes_tess fetch [--tmag 11.5] + python -I seti.py transits shapes_tess ffi + python -I seti.py transits shapes_tess analyse [--plots 20]""" + +shapes_tess_HERE = core.RESULTS + +shapes_tess_ROOT = os.environ.get("TOI_ROOT", core.data("tess_toi")) +shapes_tess_EXPLAINED = ("eb", "neb", "offset", "centroid", "secondary", "odd", "sb1", "sb2", " sb", "binary", "blend", "v-shape", + "companion", "nearby") + + +def shapes_tess_rejects(tmag): + rows = list(csv.DictReader(open(os.path.join(shapes_tess_ROOT, "toi.csv"), encoding="utf-8", errors="replace"))) + out = [] + for r in rows: + if r["TFOPWG Disposition"] not in ("FP", "FA"): + continue + if any(k in (r["Comments"] or "").lower() for k in shapes_tess_EXPLAINED): + continue + try: + P, t0, dur, tm = float(r["Period (days)"]), float(r["Epoch (BJD)"]), float(r["Duration (hours)"]), float(r["TESS Mag"]) + except ValueError: + continue + if P <= 0 or dur <= 0 or tm > tmag: + continue + sectors = [int(s) for s in re.findall(r"\d+", r["Sectors"] or "")] + out.append(dict(toi=r["TOI"], tic=int(r["TIC ID"]), period=P, t0=t0 - 2457000.0, dur_d=dur / 24.0, tmag=tm, + depth_ppm=r["Depth (ppm)"], sectors=sectors, comment=r["Comments"], disp=r["TFOPWG Disposition"])) + return out + + +def shapes_tess_fetch_one(job): + tic, s = job + d = os.path.join(shapes_tess_ROOT, "lc", str(tic)) + n = 0 + for k in core.spoc_keys(tic, s): + p = os.path.join(d, os.path.basename(k)) + if os.path.exists(p): + n += 1 + continue + b = core.get(core.S3 + k, timeout=300, retries=3, soft=True, pause=2) + if b and b.startswith(b"SIMPLE"): + os.makedirs(d, exist_ok=True) + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + n += 1 + return n + + +def shapes_tess_fetch(tmag): + rs = shapes_tess_rejects(tmag) + json.dump(rs, open(os.path.join(shapes_tess_ROOT, "rejects.json"), "w"), indent=1) + jobs = sorted({(r["tic"], s) for r in rs for s in r["sectors"]}) + print("%d rejected TOIs with no stated binary, blend or offset at Tmag %.1f or brighter; %d star-sectors to try" + % (len(rs), tmag, len(jobs)), flush=True) + with ThreadPoolExecutor(6) as ex: + n = sum(ex.map(shapes_tess_fetch_one, jobs)) + print("%d two-minute light curves on disk" % n) + + +def shapes_tess_fetch_ffi_one(job): + """One star-sector's FFI light curve: TESS-SPOC, else QLP.""" + tic, s = job + d = os.path.join(shapes_tess_ROOT, "lc", str(tic)) + for _, u in core.ffi_urls(tic, s): + p = os.path.join(d, os.path.basename(u)) + if os.path.exists(p): + return 1 + b = core.get(u, timeout=120, retries=2, soft=True, pause=1) + if b and b.startswith(b"SIMPLE"): + os.makedirs(d, exist_ok=True) + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + return 0 + + +def shapes_tess_fetch_ffi(): + """FFI light curves for rejects without two-minute photometry.""" + rs = json.load(open(os.path.join(shapes_tess_ROOT, "rejects.json"))) + bare = [r for r in rs if not any(p.endswith("-s_lc.fits") for p in + (os.listdir(os.path.join(shapes_tess_ROOT, "lc", str(r["tic"]))) + if os.path.isdir(os.path.join(shapes_tess_ROOT, "lc", str(r["tic"]))) else []))] + jobs = sorted({(r["tic"], s) for r in bare for s in r["sectors"]}) + print("%d rejects without two-minute photometry; %d star-sectors to try" % (len(bare), len(jobs)), flush=True) + with ThreadPoolExecutor(4) as ex: + n = sum(ex.map(shapes_tess_fetch_ffi_one, jobs)) + print("%d full-frame-image light curves on disk" % n) + + +def shapes_tess_load(tic): + """Normalised photometry from every sector (SPOC two-minute, else TESS-SPOC PDCSAP or QLP KSPSAP): times, fluxes, cadence.""" + from astropy.io import fits + d = os.path.join(shapes_tess_ROOT, "lc", str(tic)) + names = sorted(os.listdir(d)) if os.path.isdir(d) else [] + if any(p.endswith("-s_lc.fits") for p in names): + names = [p for p in names if p.endswith("-s_lc.fits")] + T, F, C = [], [], [] + for p in names: + try: + with fits.open(os.path.join(d, p)) as h: + x = h[1].data + col = "KSPSAP_FLUX" if "hlsp_qlp" in p else "PDCSAP_FLUX" + # QLP detrended flux: KSPSAP_FLUX early, DET_FLUX later + col = next(c for c in (col, "DET_FLUX", "SAP_FLUX") if c in x.columns.names) + t, f, q = np.asarray(x["TIME"], float), np.asarray(x[col], float), np.asarray(x["QUALITY"], int) + except Exception: + continue + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + if ok.sum() < 500: + continue + T.append(t[ok]) + F.append(f[ok] / np.median(f[ok])) + C.append(float(np.median(np.diff(t[ok])))) + if not T: + return None + return np.concatenate(T), np.concatenate(F), max(C) + + +def shapes_tess_analyse_one(r): + quiet_warnings() + lc = shapes_tess_load(r["tic"]) + if lc is None: + return None + s = science.shape_stats(lc[0], lc[1], r["period"], r["t0"], r["dur_d"], lc[2]) + # events with three or more in-transit points; sparser events give sampling-driven shapes + ep = np.round((lc[0] - r["t0"]) / r["period"]) + intr = np.abs(lc[0] - r["t0"] - ep * r["period"]) < r["dur_d"] / 2 + u, c = np.unique(ep[intr], return_counts=True) + return dict(toi=r["toi"], tic=r["tic"], tmag=r["tmag"], comment=r["comment"], disp=r["disp"], + cadence_min=round(lc[2] * 1440, 1), events=int((c >= 3).sum()), **s) if s else None + + +def shapes_tess_analyse(nplots): + rs = json.load(open(os.path.join(shapes_tess_ROOT, "rejects.json"))) + from multiprocessing import Pool + with Pool(int(os.environ.get("TOI_PROCS", "2"))) as pool: + out = [o for o in pool.map(shapes_tess_analyse_one, rs, chunksize=2) if o] + json.dump(out, open(os.path.join(shapes_tess_HERE, "tess_shapes.json"), "w"), indent=1) + good = [o for o in out if o["snr"] >= 15 and o["stable"] > 0.8 and o["odd_even"] > 0.8 and + not (o["secondary"] > 0.3 * o["depth"]) and o["events"] >= 3] + print("%d rejected TOIs folded (%d from full-frame images); %d periodic and stable over three or more events at S/N 15 " + "or more with no secondary eclipse" % (len(out), sum(o["cadence_min"] > 3 for o in out), len(good))) + good.sort(key=lambda o: -o["red_chi"]) + for o in good[:30]: + print(" TOI %s (TIC %d, T %.1f, %s, %g-min) P %.4f d dur %.1f h S/N %.0f: trapezoid reduced chi2 %.1f, asymmetry " + "%+.2f, dips %d, halves r %.2f, odd/even r %.2f, ingress fraction %.2f; %s" + % (o["toi"], o["tic"], o["tmag"], o["disp"], o["cadence_min"], o["period"], o["dur_h"], o["snr"], o["red_chi"], + o["asym"], o["dips"], o["stable"], o["odd_even"], o["ingress_frac"], (o["comment"] or "")[:80])) + if nplots: + import matplotlib + matplotlib.use("Agg") + import matplotlib.pyplot as plt + os.makedirs(os.path.join(shapes_tess_HERE, "tess_plots"), exist_ok=True) + for o in good[:nplots]: + r = next(x for x in rs if x["toi"] == o["toi"]) + t, f, cad = shapes_tess_load(r["tic"]) + x, y, e = science.profile(t, f, r["period"], r["t0"], r["dur_d"], nb=120) + plt.figure(figsize=(6, 3)) + plt.errorbar(x * 24, y * 1e6, e * 1e6, fmt=".", ms=3) + plt.xlabel("hours from mid-event") + plt.ylabel("ppm") + plt.title("TOI %s P %.4f d" % (o["toi"], r["period"])) + plt.tight_layout() + plt.savefig(os.path.join(shapes_tess_HERE, "tess_plots", "TOI%s.png" % o["toi"]), dpi=90) + plt.close() + + +def shapes_tess_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "ffi", "analyse")) + p.add_argument("--tmag", type=float, default=11.5) + p.add_argument("--plots", type=int, default=20) + a = p.parse_args() + if a.mode == "fetch": + shapes_tess_fetch(a.tmag) + elif a.mode == "ffi": + shapes_tess_fetch_ffi() + else: + shapes_tess_analyse(a.plots) + + +def shapes_tess_cli(): + shapes_tess_main() + + +# -------------------------------------------------------------------------------------------------------------- + +ttv_DOC = r"""Held phase steps in Kepler transit times (Holczer et al. 2016): steps beating the best sinusoid by 10 in chi-square at permutation FAP below 0.01, away from quarter boundaries. + + python -I seti.py transits ttv""" + +ttv_HERE = core.RESULTS +ttv_MIN_N = 20 +ttv_MIN_SIDE = 6 +# Kepler quarter starts (BJD - 2454833, Q1-Q17), where rolls move targets to other CCDs +ttv_QUARTERS = (120.5, 169.5, 260.2, 352.4, 443.5, 539.4, 630.2, 735.4, 808.5, 906.8, 1001.2, 1099.4, 1182.0, 1274.1, + 1373.0, 1472.4, 1559.2, 1591.0) + + +def ttv_fit(A, y, w): + p, *_ = np.linalg.lstsq(A * np.sqrt(w)[:, None], y * np.sqrt(w), rcond=None) + return p, float(np.sum(w * (y - A @ p) ** 2)) + + +def ttv_step_scan(n, y, w): + best = (0.0, None, 0.0) + base = np.vstack([np.ones_like(n), n]).T + _, chi0 = ttv_fit(base, y, w) + order = np.argsort(n) + for k in range(ttv_MIN_SIDE, len(n) - ttv_MIN_SIDE + 1): + h = (n >= n[order][k]).astype(float) + p, chi = ttv_fit(np.vstack([np.ones_like(n), n, h]).T, y, w) + if chi0 - chi > best[0]: + best = (chi0 - chi, n[order][k], float(p[2])) + return chi0, best + + +def ttv_sine_chi(n, y, w, per): + from astropy.timeseries import LombScargle + x = n.astype(float) + if len(x) < 10: + return None + fr, pw = LombScargle(x, y, 1 / np.sqrt(w)).autopower(minimum_frequency=1 / (2 * np.ptp(x) + 1), + maximum_frequency=0.5, samples_per_peak=5) + f = fr[int(np.argmax(pw))] + A = np.vstack([np.ones_like(x), x, np.sin(2 * np.pi * f * x), np.cos(2 * np.pi * f * x)]).T + return ttv_fit(A, y, w)[1], 1 / f + + +def ttv_main(): + cats = core.vizier("J/ApJS/225/9") + t2 = {str(r["KOI"]): r for r in cats[0]} + t3 = cats[1] + by = {} + for r in t3: + flags = [r[c] for c in ("f_O-C", "Out", "Over")] + if any(str(x).strip() not in ("", "--", "0", "None", "nan") for x in flags): + continue + try: + oc, e = float(r["O-C"]), float(r["e_O-C"]) + except (TypeError, ValueError): + continue + if not (np.isfinite(oc) and np.isfinite(e) and e > 0): + continue + by.setdefault(str(r["KOI"]), []).append((int(r["N"]), float(r["tn"]), oc, e)) + rng = np.random.default_rng(3) + res = [] + for koi, rows in by.items(): + if len(rows) < ttv_MIN_N: + continue + a = np.array(rows) + n, tn, y, e = a[:, 0], a[:, 1], a[:, 2], a[:, 3] + w = 1 / e ** 2 + chi0, (dchi, n0, step) = ttv_step_scan(n, y, w) + sc = ttv_sine_chi(n, y, w, None) + chi_sin = sc[0] if sc else chi0 + t_step = float(tn[np.argmin(np.abs(n - n0))]) if n0 is not None else None + res.append(dict(koi=koi, kic=str(t2.get(koi, {}).get("KIC", "")) if koi in t2 else "", n=len(rows), chi0=chi0, + dchi_step=dchi, n0=n0, t_step=t_step, step_min=step, chi_step=chi0 - dchi, chi_sin=chi_sin, + sin_period=sc[1] if sc else None, dof=len(rows) - 3)) + # permutation FAPs for steps beating the sinusoid + strong = [r for r in res if r["chi_sin"] - r["chi_step"] >= 10] + for r in strong: + a = np.array(by[r["koi"]]) + n, y, e = a[:, 0], a[:, 2], a[:, 3] + w = 1 / e ** 2 + cnt = 0 + for _ in range(300): + perm = rng.permutation(len(y)) + cnt += ttv_step_scan(n, y[perm], w[perm])[1][0] >= r["dchi_step"] + r["fap"] = (cnt + 1) / 301.0 + r["quarter_edge"] = bool(r["t_step"] is not None and min(abs(r["t_step"] - q) for q in ttv_QUARTERS) < 2.0) + json.dump(res, open(os.path.join(ttv_HERE, "kepler_ttv_steps.json"), "w"), indent=1) + keep = [r for r in strong if r["fap"] < 0.01 and not r["quarter_edge"]] + print("%d KOIs with %d or more good transit times; %d steps beat the best sinusoid by chi2 10; %d at FAP below 0.01, " + "%d of them at a quarter boundary; %d left" % (len(res), ttv_MIN_N, len(strong), + sum(1 for r in strong if r["fap"] < 0.01), + sum(1 for r in strong if r["fap"] < 0.01 and r["quarter_edge"]), + len(keep))) + for r in sorted(keep, key=lambda r: -(r["chi_sin"] - r["chi_step"]))[:30]: + print(" KOI %s (KIC %s): %d transits, step %+.2f min at transit %d (BKJD %.1f), chi2 linear %.0f, step %.0f, " + "sinusoid %.0f (P %.0f transits), FAP %.3f" % (r["koi"], r["kic"], r["n"], r["step_min"], r["n0"], + r["t_step"], r["chi0"], r["chi_step"], r["chi_sin"], + r["sin_period"] or 0, r["fap"])) + + +def ttv_cli(): + quiet_warnings() + ttv_main() + + +impulse_DOC = r"""Impulsive period changes in Kepler transit times: two-segment kinks beating line, quadratic and sinusoid by evidence 10 and every sinusoid-plus-AR(1) null, at 5 sigma, away from quarter boundaries. + + python -I seti.py transits impulse analyse + python -I seti.py transits impulse record""" + +impulse_OUT = "impulsive_period_changes.json" +impulse_MIN_N, impulse_MIN_SIDE, impulse_DRAWS, impulse_EVIDENCE, impulse_SIGMA = 20, 6, 60, 10.0, 5.0 + + +def impulse_kink_scan(n, y, w): + """Two-segment continuous ephemeris over breaks with MIN_SIDE transits each side: chi-square, break, period change (min per transit) and error.""" + order = np.argsort(n) + best = None + for k in range(impulse_MIN_SIDE, len(n) - impulse_MIN_SIDE + 1): + n0 = n[order][k] + A = np.vstack([np.ones_like(n), n, np.clip(n - n0, 0, None)]).T + Aw = A * np.sqrt(w)[:, None] + p, *_ = np.linalg.lstsq(Aw, y * np.sqrt(w), rcond=None) + chi = float(np.sum(w * (y - A @ p) ** 2)) + if best is None or chi < best[0]: + cov = np.linalg.pinv(Aw.T @ Aw) * max(chi / max(len(n) - 3, 1), 1.0) + best = (chi, float(n0), float(p[2]), float(math.sqrt(max(cov[2, 2], 0)))) + return best + + +def impulse_models(n, y, w): + """Chi-square of line, quadratic and best sinusoid, with the sinusoid's frequency and amplitude.""" + x = n.astype(float) + base = np.vstack([np.ones_like(x), x]).T + _, chi_lin = ttv_fit(base, y, w) + _, chi_quad = ttv_fit(np.vstack([np.ones_like(x), x, x ** 2]).T, y, w) + from astropy.timeseries import LombScargle + fr, pw = LombScargle(x, y, 1 / np.sqrt(w)).autopower(minimum_frequency=1 / (2 * np.ptp(x) + 1), maximum_frequency=0.5, samples_per_peak=5) + f = float(fr[int(np.argmax(pw))]) + A = np.vstack([np.ones_like(x), x, np.sin(2 * np.pi * f * x), np.cos(2 * np.pi * f * x)]).T + p, chi_sin = ttv_fit(A, y, w) + return chi_lin, chi_quad, chi_sin, f, float(math.hypot(p[2], p[3])) + + +def impulse_analyse(): + cats = core.vizier("J/ApJS/225/9") + t2 = {str(r["KOI"]): r for r in cats[0]} + by = {} + for r in cats[1]: + if any(str(r[c]).strip() not in ("", "--", "0", "None", "nan") for c in ("f_O-C", "Out", "Over")): + continue + try: + oc, e = float(r["O-C"]), float(r["e_O-C"]) + except (TypeError, ValueError): + continue + if np.isfinite(oc) and np.isfinite(e) and e > 0: + by.setdefault(str(r["KOI"]), []).append((int(r["N"]), float(r["tn"]), oc, e)) + rng = np.random.default_rng(9) + res = [] + for koi, rows in by.items(): + if len(rows) < impulse_MIN_N: + continue + a = np.array(sorted(rows)) + n, tn, y, e = a[:, 0], a[:, 1], a[:, 2], a[:, 3] + w = 1 / e ** 2 + chi_lin, chi_quad, chi_sin, f, amp = impulse_models(n, y, w) + chi_k, n0, dp, e_dp = impulse_kink_scan(n, y, w) + lnN = math.log(len(n)) + ev_sin, ev_quad = (chi_sin - chi_k) - lnN, (chi_quad - chi_k) - lnN + per = float(t2[koi]["Per"]) if koi in t2 and "Per" in t2[koi].colnames else None + r = dict(koi=koi, kic=str(t2[koi]["KIC"]) if koi in t2 else "", n=len(n), period=per, chi_lin=chi_lin, chi_quad=chi_quad, chi_sin=chi_sin, sin_period=1 / f, sin_amp=amp, + chi_kink=chi_k, n0=n0, t_break=float(tn[np.argmin(np.abs(n - n0))]), dP_min=dp, e_dP_min=e_dp, sigma=abs(dp) / e_dp if e_dp > 0 else 0.0, + evidence_sin=ev_sin, evidence_quad=ev_quad, dof=len(n) - 3) + r["quarter_edge"] = min(abs(r["t_break"] - q) for q in ttv_QUARTERS) < 2.0 + res.append(r) + # null for kinks beating both smooth models: best sinusoid at random phase plus AR(1) noise + cand = [r for r in res if r["evidence_sin"] >= impulse_EVIDENCE and r["evidence_quad"] >= impulse_EVIDENCE and r["sigma"] >= impulse_SIGMA] + for r in cand: + a = np.array(sorted(by[r["koi"]])) + n, y, e = a[:, 0], a[:, 2], a[:, 3] + w = 1 / e ** 2 + x = n.astype(float) + resid = y - np.polyval(np.polyfit(x, y, 1, w=np.sqrt(w)), x) + s = float(np.sqrt(np.mean(resid ** 2))) + rho = float(np.corrcoef(resid[:-1], resid[1:])[0, 1]) if len(resid) > 3 else 0.0 + rho = min(max(rho, 0.0), 0.95) + f = 1 / r["sin_period"] + draws = [] + for _ in range(impulse_DRAWS): + ph = rng.uniform(0, 2 * np.pi) + noise = np.zeros(len(x)) + noise[0] = rng.normal(0, s) + for i in range(1, len(x)): + noise[i] = rho * noise[i - 1] + rng.normal(0, s * math.sqrt(1 - rho ** 2)) + ys = r["sin_amp"] * np.sin(2 * np.pi * f * x + ph) + noise + _, cq, cs, _, _ = impulse_models(n, ys, w) + ck = impulse_kink_scan(n, ys, w)[0] + draws.append(min(cs - ck, cq - ck) - math.log(len(n))) + r["null_max"] = float(max(draws)) + r["null_median"] = float(np.median(draws)) + r["fap"] = float(np.mean(np.array(draws) >= min(r["evidence_sin"], r["evidence_quad"]))) + # leave-one-out evidence: a kink carried by one transit is that transit's error + loo = [] + for i in range(len(x)): + m = np.ones(len(x), bool) + m[i] = False + _, cq, cs, _, _ = impulse_models(n[m], y[m], w[m]) + ck = impulse_kink_scan(n[m], y[m], w[m])[0] + loo.append(min(cs - ck, cq - ck) - math.log(int(m.sum()))) + r["evidence_loo"] = float(min(loo)) + r["loo_point"] = int(n[int(np.argmin(loo))]) + keep = [r for r in cand if r["fap"] == 0.0 and not r["quarter_edge"] and r["evidence_loo"] >= impulse_EVIDENCE] + print("%d KOIs with %d or more good transit times; %d kinks with evidence above %.0f over both the sinusoid and the quadratic at %.0f sigma; %d beat every null draw, %d of them away from a quarter boundary and " + "above %.0f with any one transit left out" % (len(res), impulse_MIN_N, len(cand), impulse_EVIDENCE, impulse_SIGMA, sum(1 for r in cand if r["fap"] == 0.0), len(keep), impulse_EVIDENCE)) + for r in sorted(cand, key=lambda r: -min(r["evidence_sin"], r["evidence_quad"]))[:25]: + print(" KOI %s (KIC %s): %d transits, P %s d, period change %+.3f +- %.3f min at transit %.0f (BKJD %.1f%s), evidence over sinusoid %.1f (P %.0f transits, amplitude %.1f min), over quadratic %.1f; " + "null max %.1f, FAP %.3f; with transit %d left out %.1f" % ( + r["koi"], r["kic"], r["n"], "%.2f" % r["period"] if r["period"] else "-", r["dP_min"], r["e_dP_min"], r["n0"], r["t_break"], ", quarter edge" if r["quarter_edge"] else "", + r["evidence_sin"], r["sin_period"], r["sin_amp"], r["evidence_quad"], r["null_max"], r["fap"], r["loo_point"], r["evidence_loo"])) + json.dump(dict(n=len(res), n_cand=len(cand), n_keep=len(keep), rows=res, params=dict(min_n=impulse_MIN_N, min_side=impulse_MIN_SIDE, draws=impulse_DRAWS, evidence=impulse_EVIDENCE, sigma=impulse_SIGMA)), + open(core.results(impulse_OUT), "w"), indent=0) + + +def impulse_record(): + d = json.load(open(core.results(impulse_OUT))) + cand = [r for r in d["rows"] if "fap" in r] + keep = [r for r in cand if r["fap"] == 0.0 and not r["quarter_edge"] and r.get("evidence_loo", 0) >= d["params"]["evidence"]] + core.record_search( + "impulsive_period_changes", "Impulsive period changes", archive="Holczer et al. (2016) Kepler transit times (J/ApJS/225/9)", + selection="KOIs with %d or more good transit times (%d)" % (d["params"]["min_n"], d["n"]), code=os.path.abspath(__file__), entry="impulse", n_targets=d["n"], params=d["params"], + null_summary="each candidate's best sinusoid at a random phase plus AR(1) noise of its own residual scatter, %d draws, scanned for a kink the same way" % d["params"]["draws"], + sensitivity="a period change at 5 sigma of the fit, about 1 min per transit for a typical series; 2 s on a 10 d planet is 0.07 m/s", + ledger="Impulsive period changes", + result="%d kinks with evidence above %.0f over both smooth models at %.0f sigma; %d beat every null draw, lie away from a quarter boundary and keep their evidence with any one transit left out%s%s" % ( + d["n_cand"], d["params"]["evidence"], d["params"]["sigma"], len(keep), + (": " + "; ".join("KOI %s (%+.2f min at BKJD %.0f, P_sin %.0f transits)" % (r["koi"], r["dP_min"], r["t_break"], r["sin_period"]) for r in keep[:8])) if keep else "", + ("; the kinks one transit carries: " + "; ".join("KOI %s (evidence %.0f, %.0f without transit %d)" % (r["koi"], min(r["evidence_sin"], r["evidence_quad"]), r["evidence_loo"], r["loo_point"]) + for r in cand if r["fap"] == 0.0 and r not in keep)) if any(r["fap"] == 0.0 and r not in keep for r in cand) else "")) + core.clear_targets("impulsive_period_changes") + core.record_targets("impulsive_period_changes", [dict(target="koi:K%s" % r["koi"].zfill(8) if "." in r["koi"] else "koi:%s" % r["koi"], stat=min(r["evidence_sin"], r["evidence_quad"]), + p=r.get("fap"), unit="kink evidence over the sinusoid and the quadratic", + vet=("quarter boundary" if r["quarter_edge"] else ("beats every null draw" + ("" if r in keep else ", one transit carries it") if r.get("fap") == 0.0 else "within the null")) if "fap" in r else None, + note="%d transits, period change %+.3f +- %.3f min at transit %.0f" % (r["n"], r["dP_min"], r["e_dP_min"], r["n0"])) for r in d["rows"]]) + print("recorded %d KOIs" % d["n"]) + + +def impulse_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": impulse_analyse, "record": impulse_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- + +cepheids_DOC = r"""Phase steps in LMC Cepheid times of maximum (Poleski 2008; Learned et al. 2008): held steps beating a light-travel sinusoid, against random walks of each star's scatter. + + python -I seti.py transits cepheids analyse + python -I seti.py transits cepheids record""" + +cepheids_ROOT = os.environ.get("CEPHEID_ROOT", core.data("cepheid")) +cepheids_HERE = core.RESULTS +cepheids_MIN_SIDE = 4 +cepheids_MAX_STEP = 0.3 +cepheids_SOURCES = ("O", "R", "V") +# steps within this many days of a source's first or last maximum are source offsets (OGLE-II and -III share a code) +cepheids_BOUND_DAYS = 30.0 +# step dates shared at three times the uniform rate within 15 days are instrumental +cepheids_SHARED = 3.0 + + +def cepheids_stars(): + out = [] + for line in open(os.path.join(cepheids_ROOT, "poleski_list.dat")): + f = line.split() + if len(f) < 4: + continue + out.append(dict(id=f[0], p=float(f[1]), ep=float(f[2]), mode=f[3], remarks=f[4] if len(f) > 4 else "")) + return out + + +def cepheids_maxima(sid): + path = os.path.join(cepheids_ROOT, "max", sid + ".max") + if not os.path.exists(path): + return None + a = [ln.split() for ln in open(path) if ln.strip()] + t = np.array([float(x[0]) for x in a]) + e = np.array([float(x[1]) for x in a]) + s = np.array([x[2] for x in a]) + o = np.argsort(t) + return t[o], e[o], s[o] + + +def cepheids_design(t, s, t0, p, extra=None): + """Design columns: per-source offsets (O as reference), linear and quadratic in cycle number.""" + n = np.round((t - t0) / p) + cols = [np.ones_like(t), n, n * n] + for src in cepheids_SOURCES[1:]: + if np.any(s == src): + cols.append((s == src).astype(float)) + if extra is not None: + cols += extra + return np.vstack(cols).T, n + + +def cepheids_wls(a, y, w): + aw = a * w[:, None] + coef, *_ = np.linalg.lstsq(aw, y * w, rcond=None) + r = y - a @ coef + return coef, float(np.sum((r * w) ** 2)), r + + +def cepheids_analyse_star(st, rng): + m = cepheids_maxima(st["id"]) + if m is None or len(m[0]) < 2 * cepheids_MIN_SIDE + 2: + return None + t, e, s = m + e = np.maximum(e, 1e-4) + w = 1.0 / e + p = st["p"] + t0 = t[0] + # O-C against the catalogue period, then the natural model + a, n = cepheids_design(t, s, t0, p) + oc = t - (t0 + n * p) + _, chi0, r0 = cepheids_wls(a, oc, w) + dof0 = len(t) - a.shape[1] + best = (0.0, None, None) + for k in range(cepheids_MIN_SIDE, len(t) - cepheids_MIN_SIDE + 1): + if t[k] - t[k - 1] < 1e-6: + continue + step = (t >= t[k]).astype(float) + a2, _ = cepheids_design(t, s, t0, p, [step]) + coef, chi, _ = cepheids_wls(a2, oc, w) + gain = chi0 - chi + if gain > best[0]: + best = (gain, float(t[k]), float(coef[-1])) + span = (t[-1] - t[0]) / 365.25 + bounds = [float(x) for src in set(s) for x in (t[s == src].min(), t[s == src].max())] + near_bound = best[1] is not None and min(abs(best[1] - b) for b in bounds) <= cepheids_BOUND_DAYS + sin_best = 0.0 + for porb in np.exp(np.linspace(np.log(1.0), np.log(30.0), 120)) * 365.25: + ph = 2 * np.pi * t / porb + a3, _ = cepheids_design(t, s, t0, p, [np.sin(ph), np.cos(ph)]) + _, chi, _ = cepheids_wls(a3, oc, w) + sin_best = max(sin_best, chi0 - chi) + # null: random walk with the unexplained residual variance plus white noise at the errors + rms = float(np.sqrt(np.mean(r0 ** 2))) + red = math.sqrt(max(rms ** 2 - float(np.mean(e ** 2)), 0.0)) + sims = [] + for _ in range(20): + rw = np.cumsum(rng.normal(0, 1, len(t))) + rw = (rw - rw.mean()) / max(rw.std(), 1e-9) * red + rng.normal(0, 1, len(t)) * e + _, chis, _ = cepheids_wls(a, rw, w) + g = 0.0 + for k in range(cepheids_MIN_SIDE, len(t) - cepheids_MIN_SIDE + 1): + step = (t >= t[k]).astype(float) + a2, _ = cepheids_design(t, s, t0, p, [step]) + _, chi, _ = cepheids_wls(a2, rw, w) + g = max(g, chis - chi) + sims.append(g / max(chis / max(dof0, 1), 1e-9)) + return dict(id=st["id"], p=p, mode=st["mode"], remarks=st["remarks"], n=len(t), span_yr=span, + chi2_dof=chi0 / max(dof0, 1), step_gain=best[0], step_t=best[1], step_d=best[2], + step_frac=abs(best[2]) / p if best[2] is not None else None, sin_gain=sin_best, + step_rel=best[0] / max(chi0 / max(dof0, 1), 1e-9), rw_rel=float(np.median(sims)), + rw_rel_max=float(np.max(sims)), rms_d=rms, near_bound=bool(near_bound)) + + +def cepheids_analyse(): + from concurrent.futures import ProcessPoolExecutor + ss = cepheids_stars() + with ProcessPoolExecutor(4) as ex: + res = [r for r in ex.map(cepheids_one, ss, chunksize=20) if r] + rel = np.array([r["step_rel"] for r in res]) + rw = np.array([r["rw_rel"] for r in res]) + print("%d Cepheids with at least %d maxima; median %d maxima over %.1f years; median chi2/dof of the natural model %.2f" + % (len(res), 2 * cepheids_MIN_SIDE + 2, np.median([r["n"] for r in res]), np.median([r["span_yr"] for r in res]), + np.median([r["chi2_dof"] for r in res]))) + print("step improvement in units of the residual variance: median %.1f, 99th percentile %.1f; the same for a random " + "walk of each star's power: median %.1f, 99th percentile %.1f" % (np.median(rel), np.percentile(rel, 99), + np.median(rw), np.percentile(rw, 99))) + strong, keep = cepheids_select(res) + print("steps beating a companion orbit twice over, every random-walk trial of the star, and 25 times the residual " + "variance, with size below %.1f periods: %d; away from a data source's first or last maximum and from step " + "dates shared by other stars: %d" % (cepheids_MAX_STEP, len(strong), len(keep))) + for r in strong: + if r not in keep: + print(" %s step at HJD %.1f: %s" % (r["id"], r["step_t"], r["why"])) + for r in sorted(keep, key=lambda r: -r["step_rel"])[:30]: + print(" %s %-2s P %.4f d, %d maxima over %.1f yr, chi2/dof %.1f: step of %+.4f d (%.3f P) at HJD %.1f, gain %.0f " + "(%.0f residual variances; random walk up to %.0f), orbit gain %.0f%s" + % (r["id"], r["mode"], r["p"], r["n"], r["span_yr"], r["chi2_dof"], r["step_d"], r["step_frac"], r["step_t"], + r["step_gain"], r["step_rel"], r["rw_rel_max"], r["sin_gain"], "; remarks " + r["remarks"] if r["remarks"] else "")) + json.dump(res, open(os.path.join(cepheids_HERE, "cepheid_oc.json"), "w"), indent=1) + + +def cepheids_select(res): + """Strong steps, and those surviving the source-boundary and shared-date filters, with reasons in 'why'.""" + sig = np.array([r["step_t"] for r in res if r["step_t"] and r["step_rel"] > r["rw_rel_max"] + and r["step_frac"] < cepheids_MAX_STEP]) + rate = (len(sig) - 1) * 30.0 / max(np.ptp(sig), 1.0) + strong = [r for r in res if r["step_frac"] is not None and r["step_frac"] < cepheids_MAX_STEP + and r["step_gain"] > 2 * r["sin_gain"] and r["step_rel"] > max(r["rw_rel_max"], 25.0)] + keep = [] + for r in strong: + why = [] + if r["near_bound"]: + why.append("within %d days of a data source's first or last maximum" % cepheids_BOUND_DAYS) + n = int(np.sum(np.abs(sig - r["step_t"]) <= 15)) - 1 + if n >= cepheids_SHARED * rate: + why.append("%d other stars step within 15 days (%.1f expected)" % (n, rate)) + r["why"] = "; ".join(why) + if not why: + keep.append(r) + return strong, keep + + +def cepheids_one(st): + rng = np.random.default_rng(abs(hash(st["id"])) % (2 ** 32)) + try: + return cepheids_analyse_star(st, rng) + except Exception: + return None + + +def cepheids_record(): + res = json.load(open(os.path.join(cepheids_HERE, "cepheid_oc.json"))) + strong, keep = cepheids_select(res) + why = {r["id"]: r["why"] for r in strong} + rows = [dict(target="ogle:" + r["id"], stat=r["step_rel"], note="step %+.4f d at HJD %.1f; random walk up to %.0f; " + "orbit gain %.0f" % (r["step_d"] or 0, r["step_t"] or 0, r["rw_rel_max"], r["sin_gain"]), + vet=why.get(r["id"]) or None) for r in res] + core.record_search("cepheid_phase_steps", "Cepheid phase coding", archive="OGLE-III OCVS (Poleski 2008 times of maximum)", + release="MACHO 1992-1999, OGLE 1997-2008", selection="LMC Cepheids with times of maximum", + code=os.path.abspath(__file__), entry="cepheids", params=dict(min_side=cepheids_MIN_SIDE, max_step=cepheids_MAX_STEP), + n_targets=len(rows), result="%d steps beyond the companion and random-walk models" % len(keep), + ledger="Cepheid phase coding") + core.record_targets("cepheid_phase_steps", rows) + print("recorded %d Cepheids" % len(rows)) + + +def cepheids_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("analyse", "record")) + a = p.parse_args() + {"analyse": cepheids_analyse, "record": cepheids_record}[a.mode]() + + +def cepheids_cli(): + cepheids_main() + + +# -------------------------------------------------------------------------------------------------------------- + +nightside_DOC = r"""Nightside light of TESS ultra-short-period rocky planets (P below 1 d, R below 2 R_earth): phase-curve flux at phase 0 less the eclipse mean. + + python -I seti.py transits nightside targets + python -I seti.py transits nightside stream --list TARGETS.json --out phase_curves_.jsonl [--procs N] + python -I seti.py transits nightside report phase_curves_*.jsonl + python -I seti.py transits nightside record phase_curves_*.jsonl""" + +nightside_ROOT = os.environ.get("PHASE_CURVES_ROOT", core.data("phase_curves")) +nightside_HERE = core.RESULTS +nightside_TOI_CSV = "https://exofop.ipac.caltech.edu/tess/download_toi.php?sort=toi&output=csv" +nightside_BTJD = 2457000.0 +nightside_CAD = 120.0 / 86400.0 + + +def nightside_targets(): + os.makedirs(nightside_ROOT, exist_ok=True) + raw = core.get(nightside_TOI_CSV, timeout=300, retries=3).decode("utf-8", "replace") + by = {} + for r in csv.DictReader(io.StringIO(raw)): + if (r.get("TFOPWG Disposition") or "").strip() in ("FP", "FA"): + continue + P, ep, dur = num(r.get("Period (days)")), num(r.get("Epoch (BJD)")), num(r.get("Duration (hours)")) + rad = num(r.get("Planet Radius (R_Earth)")) + if not P or not ep or not dur or not rad or P >= 1.0 or rad >= 2.0: + continue + tic = int(r["TIC ID"]) + x = by.setdefault(tic, dict(tic=tic, tmag=num(r.get("TESS Mag")), sectors=set(), tois=[])) + x["sectors"] |= {int(s) for s in re.findall(r"\d+", r.get("Sectors") or "") if int(s) < 200} + x["tois"].append(dict(toi=r["TOI"], period=P, t0=ep - nightside_BTJD, dur_h=dur, radius=rad, + teq=num(r.get("Planet Equil Temp (K)")), disp=r.get("TFOPWG Disposition"))) + out = [dict(x, sectors=sorted(x["sectors"])) for x in by.values() if x["sectors"]] + json.dump(out, open(os.path.join(nightside_ROOT, "targets.json"), "w")) + print("%d hosts of %d ultra-short-period rocky TOIs, %d star-sectors" % (len(out), sum(len(x["tois"]) for x in out), + sum(len(x["sectors"]) for x in out))) + + +def nightside_running_median(t, f, width): + import pandas as pd + s = pd.Series(f, index=pd.to_datetime(t, unit="D")) + return s.rolling("%dmin" % int(width * 1440), center=True, min_periods=10).median().to_numpy() + + +def nightside_measure(t, f, toi): + P, t0, half = toi["period"], toi["t0"], toi["dur_h"] / 48.0 + ph = ((t - t0) / P) % 1.0 + w = half / P + 0.01 + tr = (ph < w) | (ph > 1 - w) + ec = np.abs(ph - 0.5) < half / P + oot = ~tr & ~ec + if ec.sum() < 50 or oot.sum() < 500: + return None + x = 2 * np.pi * ph[oot] + A = np.vstack([np.ones(oot.sum()), np.cos(x), np.sin(x), np.cos(2 * x)]).T + coef, *_ = np.linalg.lstsq(A, f[oot], rcond=None) + res = f[oot] - A @ coef + # red-noise-aware scatter: 30-minute bins of the residual, scaled back to one point + nb = 15 + k = len(res) // nb + bscat = np.std(res[:k * nb].reshape(k, nb).mean(axis=1)) if k > 10 else np.std(res) / math.sqrt(nb) + sig_pt = max(np.std(res), bscat * math.sqrt(nb)) + cov = np.linalg.inv(A.T @ A) * sig_pt ** 2 + E = float(np.mean(f[ec])) + eE = sig_pt / math.sqrt(ec.sum()) + v0 = np.array([1, 1, 0, 1.0]) + v5 = np.array([1, -1, 0, 1.0]) + night = float(v0 @ coef - E) + day = float(v5 @ coef - E) + return dict(toi=toi["toi"], period=P, radius=toi["radius"], teq=toi.get("teq"), n_eclipse=int(ec.sum()), + n_oot=int(oot.sum()), night_ppm=night * 1e6, e_night_ppm=float(math.sqrt(v0 @ cov @ v0 + eE ** 2)) * 1e6, + depth_ppm=day * 1e6, e_depth_ppm=float(math.sqrt(v5 @ cov @ v5 + eE ** 2)) * 1e6, + amp_ppm=float(math.hypot(coef[1], coef[2])) * 1e6, scatter_ppm=float(np.std(res)) * 1e6) + + +def nightside_one_star(t): + quiet_warnings() + tt, ff, used = [], [], [] + for s in t["sectors"]: + b = core.spoc_bytes(t["tic"], s) + if not b: + continue + try: + x, f, _ = core.read(b, columns=("PDCSAP_FLUX",), normalise=False) + except Exception: + continue + ok = np.isfinite(f) + x, f = x[ok], f[ok] + if len(x) < 1000: + continue + f = f / np.median(f) + intr = np.zeros(len(x), bool) + for toi in t["tois"]: + ph = ((x - toi["t0"]) / toi["period"]) % 1.0 + w = toi["dur_h"] / 48.0 / toi["period"] + 0.01 + intr |= (ph < w) | (ph > 1 - w) + width = max(1.5, 3 * max(toi["period"] for toi in t["tois"])) + g = np.where(intr, np.nan, f) + trend = nightside_running_median(x, g, width) + f = f / trend + r = f - 1 + mad = 1.4826 * np.nanmedian(np.abs(r - np.nanmedian(r))) + keep = np.isfinite(f) & (np.abs(r) < 5 * mad) + tt.append(x[keep]) + ff.append(f[keep]) + used.append(s) + if not tt: + return dict(tic=t["tic"], sectors=[], tois=[]) + x, f = np.concatenate(tt), np.concatenate(ff) + out = [m for m in (nightside_measure(x, f, toi) for toi in t["tois"]) if m] + return dict(tic=t["tic"], tmag=t.get("tmag"), sectors=used, days=float(len(x) * nightside_CAD), tois=out) + + +def nightside_stream(share, out, procs): + from concurrent.futures import ProcessPoolExecutor + ts = json.load(open(share or os.path.join(nightside_ROOT, "targets.json"))) + path = os.path.join(nightside_HERE, out) + done = set() + if os.path.exists(path): + done = {json.loads(line)["tic"] for line in open(path) if line.strip()} + todo = [t for t in ts if t["tic"] not in done] + print("%d stars to fold (%d done)" % (len(todo), len(done)), flush=True) + with ProcessPoolExecutor(procs) as ex, open(path, "a") as fh: + for r in ex.map(nightside_one_star, todo, chunksize=1): + fh.write(json.dumps(r, default=float) + "\n") + fh.flush() + + +def nightside_load(paths): + seen, res = set(), [] + for p in paths: + for line in open(p): + if line.strip(): + r = json.loads(line) + if r["tic"] not in seen: + seen.add(r["tic"]) + res.append(r) + return res + + +def nightside_report(paths): + res = nightside_load(paths) + tois = [dict(k, tic=r["tic"]) for r in res for k in r["tois"]] + z = np.array([k["night_ppm"] / k["e_night_ppm"] for k in tois if k["e_night_ppm"] > 0]) + print("%d hosts, %d planets measured; nightside flux over its error: median %+.2f, spread %.2f; above +3: %d, below " + "-3: %d" % (len(res), len(tois), np.median(z), 1.4826 * np.median(np.abs(z - np.median(z))), np.sum(z > 3), + np.sum(z < -3))) + lim = sorted(k["night_ppm"] + 3 * k["e_night_ppm"] for k in tois) + print("3-sigma nightside limits: best %.0f ppm, median %.0f ppm" % (lim[0], lim[len(lim) // 2])) + for k in sorted(tois, key=lambda k: -k["night_ppm"] / max(k["e_night_ppm"], 1e-9))[:12]: + print(" TIC %d TOI %s P %.3f d, %.2f Re: nightside %+.0f +- %.0f ppm, eclipse %+.0f +- %.0f ppm, scatter %.0f ppm" + % (k["tic"], k["toi"], k["period"], k["radius"], k["night_ppm"], k["e_night_ppm"], k["depth_ppm"], + k["e_depth_ppm"], k["scatter_ppm"])) + return res, tois + + +def nightside_record(paths): + res, tois = nightside_report(paths) + z = [k["night_ppm"] / k["e_night_ppm"] for k in tois if k["e_night_ppm"] > 0] + lim = sorted(k["night_ppm"] + 3 * k["e_night_ppm"] for k in tois) + core.record_search( + "tess_usp_nightside", "Phase curves of rocky planets", archive="TESS SPOC two-minute light curves", + release="sectors 1-%d" % max(s for r in res for s in r["sectors"]), + selection="TOIs that are neither false positives nor false alarms, period below 1 d, radius below 2 Earth radii", + code="seti.py transits nightside", params=dict(detrend_days=1.5, clip=5, model="c0 + a cos + b sin + c cos 2x"), + n_targets=len(tois), + null_summary="nightside flux over its error: %d above +3, %d below -3 of %d" % (sum(x > 3 for x in z), + sum(x < -3 for x in z), len(z)), + sensitivity="3-sigma nightside limits from %.0f ppm (median %.0f ppm) of the star's flux" % (lim[0], + lim[len(lim) // 2]), + result="no nightside flux above 3 sigma; median 3-sigma limit %.0f ppm of the star's flux" + % lim[len(lim) // 2], ledger="Phase curves of rocky planets") + core.clear_targets("tess_usp_nightside") + core.record_targets("tess_usp_nightside", [ + dict(target="tic:%d" % k["tic"], stat=float(k["night_ppm"]), unit="nightside flux, ppm of the star", + upper_limit=float(k["night_ppm"] + 3 * k["e_night_ppm"]), + note="TOI %s, P %.3f d, %.2f Re, eclipse %+.0f +- %.0f ppm" % (k["toi"], k["period"], k["radius"], + k["depth_ppm"], k["e_depth_ppm"])) + for k in tois]) + print("recorded") + + +def nightside_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("targets", "stream", "report", "record")) + p.add_argument("paths", nargs="*") + p.add_argument("--list") + p.add_argument("--out", default="phase_curves.jsonl") + p.add_argument("--procs", type=int, default=2) + a = p.parse_args() + if a.mode == "targets": + nightside_targets() + elif a.mode == "stream": + nightside_stream(a.list, a.out, a.procs) + elif a.mode == "record": + nightside_record(a.paths) + else: + nightside_report(a.paths) + + +def nightside_cli(): + quiet_warnings() + nightside_main() + + +# -------------------------------------------------------------------------------------------------------------- + +exobelts_DOC = r"""Clarke exobelts in Kepler transits (Socas-Navarro 2018): shoulders to k Rp/v beyond contact, k 3-90 within half the Hill radius, against random phases; vetted at z 5 with light-curve contacts and times. + + python -I seti.py transits exobelts targets [--kepmag 15] + python -I seti.py transits exobelts targets --long [--kepmag 16] (candidates and confirmed planets below 2 Earth radii beyond 30 d around FGK dwarfs, where tides leave the planet unlocked and its synchronous orbit lies inside the Hill sphere, into ROOT/targets_long.json) + python -I seti.py transits exobelts stream --list TARGETS.json --out exobelts_.jsonl [--procs 2] + python -I seti.py transits exobelts report exobelts_*.jsonl + python -I seti.py transits exobelts vet KIC [KIC ...] [--list TARGETS.json] (contacts and times from the light curve) + python -I seti.py transits exobelts record exobelts_*.jsonl [--long] (with vet's exobelts_vet.json, into the coverage store; --long the run of targets --long)""" + +exobelts_ROOT = os.environ.get("EXOBELT_ROOT", core.data("exobelts")) +exobelts_HERE = core.RESULTS +exobelts_S3 = "https://stpubdata.s3.amazonaws.com/" +exobelts_KS = (3, 4, 6, 8, 11, 15, 20, 30, 45, 60, 90) +exobelts_MARGIN_H = 0.3 # hours excluded beyond each contact: half a cadence plus contact error +exobelts_NULLS = 40 + + +def exobelts_num(x): + try: + v = float(x) + return v if math.isfinite(v) else None + except (TypeError, ValueError): + return None + + +def exobelts_targets(kepmag, long=False): + os.makedirs(exobelts_ROOT, exist_ok=True) + kois = core.exoplanets("SELECT kepid, kepoi_name, koi_disposition, koi_period, koi_time0bk, koi_duration, " + "koi_ror, koi_dor, koi_impact, koi_prad, koi_kepmag, koi_smass, koi_steff, koi_slogg FROM cumulative") + holc = {} + cats = core.vizier("J/ApJS/225/9") + for r in cats[1]: + flags = [r[c] for c in ("f_O-C", "Out", "Over")] + if any(str(x).strip() not in ("", "--", "0", "None", "nan") for x in flags): + continue + tn, oc = exobelts_num(r["tn"]), exobelts_num(r["O-C"]) + if tn is None or oc is None: + continue + # Holczer's times are BJD - 2454900; Kepler's are BJD - 2454833 + holc.setdefault("K%08.2f" % float(r["KOI"]), []).append(tn + 67.0 + oc / 1440.0) + by = {} + for k in kois: + by.setdefault(str(k["kepid"]), []).append(k) + sel = {} + for kic, ks in by.items(): + planets = [] + for k in ks: + P, t0, dur, ror, dor = (exobelts_num(k[c]) for c in ("koi_period", "koi_time0bk", "koi_duration", "koi_ror", + "koi_dor")) + if None in (P, t0, dur, ror, dor) or dor <= 1 or (exobelts_num(k["koi_kepmag"]) or 99) > kepmag: + continue + if long: + # planets tides leave unlocked: candidates and confirmed below 2 Earth radii beyond 30 d around FGK dwarfs + teff, logg, rp = (exobelts_num(k[c]) for c in ("koi_steff", "koi_slogg", "koi_prad")) + if (k["koi_disposition"] not in ("CONFIRMED", "CANDIDATE") or P < 30 or rp is None or rp >= 2 + or teff is None or not 4000 <= teff <= 6500 or (logg or 0) < 4.0): + continue + elif k["koi_disposition"] != "CONFIRMED": + continue + planets.append(dict(koi=k["kepoi_name"], period=P, t0=t0, dur_h=dur, ror=ror, dor=dor, + impact=exobelts_num(k["koi_impact"]), prad=exobelts_num(k["koi_prad"]), smass=exobelts_num(k["koi_smass"]), + times=sorted(holc.get(k["kepoi_name"], [])) or None)) + if planets: + mask = [dict(koi=k["kepoi_name"], period=exobelts_num(k["koi_period"]), t0=exobelts_num(k["koi_time0bk"]), + dur_h=exobelts_num(k["koi_duration"])) for k in ks if k["koi_disposition"] != "FALSE POSITIVE" + and None not in (exobelts_num(k["koi_period"]), exobelts_num(k["koi_time0bk"]), exobelts_num(k["koi_duration"]))] + sel[kic] = dict(kic=kic, kepmag=exobelts_num(ks[0]["koi_kepmag"]), planets=planets, mask=mask) + from concurrent.futures import ThreadPoolExecutor + + def listing(kic): + k9 = "%09d" % int(kic) + b = core.get(exobelts_S3 + "?list-type=2&prefix=kepler/public/lightcurves/%s/%s/" % (k9[:4], k9), timeout=60, + retries=3, soft=True, pause=1) + return kic, re.findall(r"([^<]*_llc\.fits)", b.decode()) if b else [] + out = [] + with ThreadPoolExecutor(8) as ex: + for kic, keys in ex.map(listing, sorted(sel)): + if keys: + out.append(dict(sel[kic], files=keys)) + json.dump(out, open(os.path.join(exobelts_ROOT, "targets_long.json" if long else "targets.json"), "w")) + print("%d %s on %d stars of Kp %.1f or brighter; %d long-cadence files; %d planets with measured transit times" % ( + sum(len(t["planets"]) for t in out), "planets below 2 Earth radii beyond 30 d" if long else "confirmed planets", len(out), + kepmag, sum(len(t["files"]) for t in out), sum(1 for t in out for p in t["planets"] if p["times"]))) + + +def exobelts_centres(p, t): + """Nearest transit centre to each time, Holczer's measured time where available.""" + n = np.round((t - p["t0"]) / p["period"]).astype(int) + tc = p["t0"] + n * p["period"] + if p["times"]: + meas = np.array(p["times"]) + ne = np.round((meas - p["t0"]) / p["period"]).astype(int) + lut = dict(zip(ne.tolist(), meas.tolist())) + tc = np.array([lut.get(int(a), b) for a, b in zip(n, tc)]) + return tc + + +def exobelts_hill_k(p): + """Hill radius in planetary radii: mass from radius (Chen and Kipping 2017; Jovian above 14.3 R_earth), star mass from the catalogue or 1 M_sun.""" + r = p["prad"] or 1.0 + m = r ** 3.58 if r < 1.23 else 2.10 * (r / 1.23) ** 1.70 if r < 14.3 else 318.0 + ms = p.get("smass") or 1.0 + return p["dor"] / p["ror"] * (m * 3.003e-6 / (3 * ms)) ** (1 / 3.0) + + +def exobelts_measure(t, f, p): + """Shoulder depths (ppm) and significance against random phases for each k up to half the Hill radius.""" + P = p["period"] + half = p["dur_h"] / 2.0 + rv = p["ror"] / p["dor"] * P * 24.0 / (2 * math.pi) # hours for the planet to move one planetary radius + x = (t - exobelts_centres(p, t)) * 24.0 # hours from the nearest transit centre + kmax = 0.5 * exobelts_hill_k(p) + out = [] + for k in exobelts_KS: + d = k * rv + base = max(d, 2.0) + if k > kmax or d < exobelts_MARGIN_H + 0.5 or half + d + base + 1 > P * 24 / 4: + continue + + def stat(c): + """Baseline minus shoulder flux (both, before, after) about phase-time c (hours).""" + y = x - c + pre = (y > -half - d) & (y < -half - exobelts_MARGIN_H) + post = (y > half + exobelts_MARGIN_H) & (y < half + d) + bpre = (y > -half - d - base - 0.25) & (y < -half - d - 0.25) + bpost = (y > half + d + 0.25) & (y < half + d + base + 0.25) + if min(pre.sum(), post.sum(), bpre.sum(), bpost.sum()) < 5: + return None + b = np.mean(f[bpre | bpost]) + return b - np.mean(f[pre | post]), np.mean(f[bpre]) - np.mean(f[pre]), np.mean(f[bpost]) - np.mean(f[post]) + s = stat(0.0) + if s is None: + continue + rng = np.random.default_rng(int(p["period"] * 1e6) % 2 ** 32) + offs = [o for o in rng.uniform(0.1, 0.9, 4 * exobelts_NULLS) * P * 24 if abs(o - P * 12) > 2 * (half + d + base) + and P * 24 - o > 2 * (half + d + base) and o > 2 * (half + d + base)][:exobelts_NULLS] + nul = [v for v in (stat(o) for o in offs) if v] + if len(nul) < 10: + continue + nb = np.array([v[0] for v in nul]) + npre = np.array([v[1] for v in nul]) + npost = np.array([v[2] for v in nul]) + sd, sdp, sdq = np.std(nb), np.std(npre), np.std(npost) + out.append(dict(k=k, shoulder_h=round(d, 3), ppm=round(s[0] * 1e6, 1), z=round(s[0] / sd, 2) if sd > 0 else None, + z_pre=round(s[1] / sdp, 2) if sdp > 0 else None, z_post=round(s[2] / sdq, 2) if sdq > 0 else None, + sd_ppm=round(sd * 1e6, 1), lim3_ppm=round((max(s[0], 0) + 3 * sd) * 1e6, 1), + null_z=[round(v / sd, 2) for v in nb] if sd > 0 else [], n_null=len(nul))) + return out + + +def exobelts_one_star(t, files): + from astropy.io import fits + T, F = [], [] + for path in files: + try: + with fits.open(path) as h: + d = h[1].data + tt, ff, qq = (np.asarray(d[c], float) for c in ("TIME", "PDCSAP_FLUX", "SAP_QUALITY")) + except Exception: + continue + ok = np.isfinite(tt) & np.isfinite(ff) & (qq == 0) + if ok.sum() < 200: + continue + T.append(tt[ok]) + F.append(ff[ok] / np.median(ff[ok])) + if not T: + return dict(kic=t["kic"], planets=[]) + tt, ff = np.concatenate(T), np.concatenate(F) + o = np.argsort(tt) + tt, ff = tt[o], ff[o] + res = [] + for p in t["planets"]: + P = p["period"] + rv = p["ror"] / p["dor"] * P * 24.0 / (2 * math.pi) + kmax = max([k for k in exobelts_KS if k <= 0.5 * exobelts_hill_k(p)] or [exobelts_KS[0]]) + reach = p["dur_h"] / 2.0 + kmax * rv + max(kmax * rv, 2.0) + 1.0 + keep = np.ones(len(tt), bool) + for m in t["mask"]: + if m["koi"] == p["koi"]: + continue + ph = ((tt - m["t0"]) / m["period"] + 0.5) % 1.0 - 0.5 + keep &= np.abs(ph * m["period"] * 24.0) > m["dur_h"] / 2.0 + 1.0 + x = (tt - exobelts_centres(p, tt)) * 24.0 + quiet = keep & (np.abs(x) > reach) + if quiet.sum() < 1000: + continue + g = exobelts_detrend(tt, ff, quiet) + sel = keep & np.isfinite(g) + nt = len(np.unique(np.round((tt[sel & (np.abs(x) < reach)] - p["t0"]) / P))) + r = exobelts_measure(tt[sel], g[sel], p) + res.append(dict(koi=p["koi"], period=P, dur_h=p["dur_h"], ror=p["ror"], prad=p["prad"], rv_h=round(rv, 4), + hill_k=round(exobelts_hill_k(p), 1), n_transits=int(nt), ttv_times=bool(p["times"]), ks=r)) + return dict(kic=t["kic"], kepmag=t["kepmag"], n_points=int(len(tt)), planets=res) + + +def exobelts_detrend(t, f, quiet, width=2.0): + """Flux over a running median of the quiet points (width days), interpolated across the rest.""" + import pandas as pd + s = pd.Series(np.where(quiet, f, np.nan), index=pd.to_datetime(t, unit="D")) + med = s.rolling("%dmin" % int(width * 1440), center=True, min_periods=20).median().to_numpy() + ok = np.isfinite(med) + if ok.sum() < 100: + return np.full(len(f), np.nan) + med = np.interp(t, t[ok], med[ok]) + return f / med + + +def exobelts_stream_star(t): + import shutil + tmp = os.path.join(exobelts_ROOT, "tmp_%s" % t["kic"]) + os.makedirs(tmp, exist_ok=True) + local = [] + for k in t["files"]: + p = os.path.join(tmp, os.path.basename(k)) + if not os.path.exists(p): + b = core.get(exobelts_S3 + k, timeout=300, retries=3, soft=True, pause=2) + if not b or not b.startswith(b"SIMPLE"): + continue + open(p, "wb").write(b) + local.append(p) + try: + return exobelts_one_star(t, local) + finally: + shutil.rmtree(tmp, ignore_errors=True) + + +def exobelts_stream(share, out, procs): + from concurrent.futures import ProcessPoolExecutor + ts = json.load(open(share or os.path.join(exobelts_ROOT, "targets.json"))) + os.makedirs(exobelts_HERE, exist_ok=True) + path = os.path.join(exobelts_HERE, out) + done = set() + if os.path.exists(path): + done = {json.loads(line)["kic"] for line in open(path) if line.strip()} + todo = [t for t in ts if t["kic"] not in done] + print("%d stars to search (%d done)" % (len(todo), len(done)), flush=True) + with ProcessPoolExecutor(procs) as ex, open(path, "a") as fh: + for r in ex.map(exobelts_stream_star, todo, chunksize=1): + fh.write(json.dumps(r) + "\n") + fh.flush() + + +def exobelts_own_times(t, f, p, tmpl): + """Each transit's centre (days) by least-squares shift of the trapezoid template within a third of the duration, one-minute steps.""" + depth, dur, ing = tmpl + pred = exobelts_centres(p, t) + out = {} + for c in np.unique(np.round(pred, 6)): + near = np.abs(t - c) < dur + if near.sum() < 10 or (np.abs(t - c) < dur / 2).sum() < 4: + continue + shifts = np.arange(-dur / 3, dur / 3 + 1e-9, 1.0 / 1440) + chi = [np.sum((f[near] - 1.0 - depth * science.trapezoid(t[near] - c, 1.0, dur, ing, s)) ** 2) + for s in shifts] + out[int(round((c - p["t0"]) / p["period"]))] = c + shifts[int(np.argmin(chi))] + return out + + +def exobelts_vet(listing, kics): + """Shoulder test for the named stars with centres and duration from the light curve: timing or duration artefacts vanish, a belt stays.""" + import shutil + ts = {t["kic"]: t for t in json.load(open(listing))} + path = core.results("exobelts_vet.json") + done = json.load(open(path)) if os.path.exists(path) else [] + for kic in kics: + t = ts[str(kic)] + tmp = os.path.join(exobelts_ROOT, "vet_%s" % kic) + os.makedirs(tmp, exist_ok=True) + files = [] + for k in t["files"]: + lc = os.path.join(tmp, os.path.basename(k)) + if not os.path.exists(lc): + b = core.get(exobelts_S3 + k, timeout=300, retries=3, soft=True, pause=2) + if not b or not b.startswith(b"SIMPLE"): + continue + open(lc, "wb").write(b) + files.append(lc) + try: + base = exobelts_one_star(t, files) + for p in t["planets"]: + q = [x for x in base["planets"] if x["koi"] == p["koi"]] + if not q or not q[0]["ks"]: + continue + b0 = max((k for k in q[0]["ks"] if k["z"] is not None), key=lambda k: k["z"]) + tt, ff = exobelts_series(files, t, p) + if tt is None: + continue + p2 = dict(p) + for _ in range(3): + x, y, e = exobelts_fold(tt, ff, p2) + best, _ = science.fit_trapezoid(x, y, e, p2["dur_h"] / 24.0) + own = exobelts_own_times(tt, ff, p2, (best[1], best[2], best[3])) + p2 = dict(p2, times=sorted(own.values()), dur_h=best[2] * 24.0) + x2, y2, e2 = exobelts_fold(tt, ff, p2) + best2, _ = science.fit_trapezoid(x2, y2, e2, p2["dur_h"] / 24.0) + p2["dur_h"] = best2[2] * 24.0 + r2 = {k["k"]: k for k in exobelts_measure(tt, ff, p2)} + oc = np.array([own[n] - (p["t0"] + n * p["period"]) for n in sorted(own)]) * 1440.0 + k2 = r2.get(b0["k"]) + print("KIC %s %s: catalogue duration %.2f h, fitted %.2f h, depth %.0f ppm; own times of %d transits, " + "O-C robust spread %.1f min; k %d: z %.1f with catalogue contacts, %s with fitted ones (best %s)" + % (kic, p["koi"], q[0]["dur_h"], p2["dur_h"], best2[1] * 1e6, len(own), + 1.4826 * np.median(np.abs(oc - np.median(oc))), b0["k"], b0["z"], + "%.1f" % k2["z"] if k2 and k2["z"] is not None else "unmeasured", + max((k["z"] for k in r2.values() if k["z"] is not None), default=None)), flush=True) + row = dict(kic=str(kic), koi=p["koi"], k=b0["k"], z=b0["z"], z_pre=b0["z_pre"], z_post=b0["z_post"], + dur_cat_h=q[0]["dur_h"], dur_fit_h=round(p2["dur_h"], 2), n_own=len(own), + oc_spread_min=round(float(1.4826 * np.median(np.abs(oc - np.median(oc)))), 1) if len(oc) else None, + z_fitted=k2["z"] if k2 else None) + for label, key, pp in (("catalogue contacts", "z_matched", p), + ("fitted contacts and own times", "z_matched_fitted", p2)): + rt, rf, rk = exobelts_series(files, t, pp, raw=True) + zm = exobelts_matched_z(rt, rf, rk, pp, b0["k"]) + row[key] = round(zm[0], 2) if zm[0] is not None else None + print(" k %d, %s, against a null detrended as the transit is: z %s, %s ppm (%d null phases)" + % (b0["k"], label, "%.1f" % zm[0] if zm[0] is not None else "unmeasured", + "%.0f" % zm[1] if zm[1] is not None else "-", zm[2]), flush=True) + done = [x for x in done if not (x["kic"] == row["kic"] and x["koi"] == row["koi"])] + [row] + json.dump(done, open(path, "w"), indent=1) + print(" O-C (min): %s" % " ".join("%.0f" % v for v in oc - np.median(oc)), flush=True) + print(" profile (h, ppm): %s" % " ".join("%.1f:%.0f" % (a * 24, b * 1e6) for a, b in zip(x2, y2) + if np.isfinite(b)), flush=True) + finally: + shutil.rmtree(tmp, ignore_errors=True) + + +def exobelts_matched_z(tt, raw, keep, p, k): + """Shoulder statistic at k against random phases detrended with the transit's gap: (z, ppm, null phases).""" + P = p["period"] + half = p["dur_h"] / 2.0 + rv = p["ror"] / p["dor"] * P * 24.0 / (2 * math.pi) + d = k * rv + base = max(d, 2.0) + reach = half + d + base + 1.0 + x = (tt - exobelts_centres(p, tt)) * 24.0 + + def stat(c): + g = exobelts_detrend(tt, raw, keep & (np.abs(x - c) > reach)) + y = x - c + pre = keep & (y > -half - d) & (y < -half - exobelts_MARGIN_H) + post = keep & (y > half + exobelts_MARGIN_H) & (y < half + d) + bb = keep & (((y > -half - d - base - 0.25) & (y < -half - d - 0.25)) | ((y > half + d + 0.25) & (y < half + d + base + 0.25))) + if min(pre.sum(), post.sum(), bb.sum()) < 5 or not np.isfinite(g[pre | post | bb]).all(): + return None + return np.mean(g[bb]) - np.mean(g[pre | post]) + s = stat(0.0) + rng = np.random.default_rng(int(P * 1e6) % 2 ** 32) + offs = [o for o in rng.uniform(0.1, 0.9, 4 * exobelts_NULLS) * P * 24 if abs(o - P * 12) > 2 * reach + and P * 24 - o > 2 * reach and o > 2 * reach][:exobelts_NULLS] + nul = np.array([v for v in (stat(o) for o in offs) if v is not None]) + if s is None or len(nul) < 10: + return None, None, len(nul) + return float(s / np.std(nul)), float(s * 1e6), len(nul) + + +def exobelts_series(files, t, p, raw=False): + """One planet's detrended light curve with other transits masked; raw=True gives undetrended flux and the usable mask.""" + from astropy.io import fits + T, F = [], [] + for path in files: + try: + with fits.open(path) as h: + d = h[1].data + tt, ff, qq = (np.asarray(d[c], float) for c in ("TIME", "PDCSAP_FLUX", "SAP_QUALITY")) + except Exception: + continue + ok = np.isfinite(tt) & np.isfinite(ff) & (qq == 0) + if ok.sum() >= 200: + T.append(tt[ok]) + F.append(ff[ok] / np.median(ff[ok])) + if not T: + return None, None + tt, ff = np.concatenate(T), np.concatenate(F) + o = np.argsort(tt) + tt, ff = tt[o], ff[o] + P = p["period"] + rv = p["ror"] / p["dor"] * P * 24.0 / (2 * math.pi) + kmax = max([k for k in exobelts_KS if k <= 0.5 * exobelts_hill_k(p)] or [exobelts_KS[0]]) + reach = p["dur_h"] / 2.0 + kmax * rv + max(kmax * rv, 2.0) + 1.0 + keep = np.ones(len(tt), bool) + for m in t["mask"]: + if m["koi"] != p["koi"]: + ph = ((tt - m["t0"]) / m["period"] + 0.5) % 1.0 - 0.5 + keep &= np.abs(ph * m["period"] * 24.0) > m["dur_h"] / 2.0 + 1.0 + if raw: + return tt, ff, keep + x = (tt - exobelts_centres(p, tt)) * 24.0 + g = exobelts_detrend(tt, ff, keep & (np.abs(x) > reach)) + sel = keep & np.isfinite(g) + return tt[sel], g[sel] + + +def exobelts_fold(t, f, p, nb=80): + """Binned profile (days from centre, flux - 1, error) over +-1.5 durations.""" + x = t - exobelts_centres(p, t) + w = 1.5 * p["dur_h"] / 24.0 + edges = np.linspace(-w, w, nb + 1) + k = np.digitize(x, edges) - 1 + y = np.array([np.median(f[k == i]) - 1.0 if np.sum(k == i) >= 2 else np.nan for i in range(nb)]) + e = np.array([max(1.2533 * np.std(f[k == i]), 1e-5) / np.sqrt(np.sum(k == i)) if np.sum(k == i) >= 2 else np.nan + for i in range(nb)]) + return 0.5 * (edges[1:] + edges[:-1]), y, e + + +def exobelts_report(paths): + seen, res = set(), [] + for p in paths: + for line in open(p): + if line.strip(): + r = json.loads(line) + if r["kic"] not in seen: + seen.add(r["kic"]) + res.append(r) + pl = [dict(q, kic=r["kic"]) for r in res for q in r["planets"] if q["ks"]] + best = [] + for q in pl: + ok = [k for k in q["ks"] if k["z"] is not None] + if ok: + b = max(ok, key=lambda k: k["z"]) + best.append((q, b)) + trials = sum(len(q["ks"]) for q in pl) + allz = np.array([k["z"] for q in pl for k in q["ks"] if k["z"] is not None]) + nulls = np.array([v for q in pl for k in q["ks"] for v in k["null_z"]]) + print("%d stars, %d planets with a measurement, %d planet-k tests; shoulder z above 5 with both sides above 2: %d; " + "fraction of null z above 5: %.4f (expected among the tests %.1f)" + % (len(res), len(pl), trials, sum(1 for q in pl for k in q["ks"] if (k["z"] or 0) > 5 + and (k["z_pre"] or 0) > 2 and (k["z_post"] or 0) > 2), + float(np.mean(nulls > 5)) if len(nulls) else float("nan"), float(np.mean(nulls > 5)) * len(allz))) + lims = sorted(k["lim3_ppm"] for q in pl for k in q["ks"] if k["k"] == 6) + if lims: + print("3-sigma shoulder limits at k = 6: best %.0f ppm, median %.0f ppm" % (lims[0], lims[len(lims) // 2])) + for q, b in sorted(best, key=lambda x: -x[1]["z"])[:20]: + print(" KIC %s %s P %.3f d Rp/R* %.3f, %d transits%s: k %d (%.2f h) %.0f +- %.0f ppm, z %.1f (before %.1f, after " + "%.1f)" % (q["kic"], q["koi"], q["period"], q["ror"], q["n_transits"], ", measured times" if q["ttv_times"] + else "", b["k"], b["shoulder_h"], b["ppm"], b["sd_ppm"], b["z"], b["z_pre"] or 0, + b["z_post"] or 0)) + return res, pl + + +def exobelts_record(paths, long=False): + """Record each planet's strongest shoulder and 3-sigma limit at k = 6, with vet's remeasurements; a shoulder survives above z 5 in both. With long, the run of the planets below 2 Earth radii beyond 30 d (targets --long).""" + run = "exobelts_kepler_long" if long else "exobelts_kepler" + res, pl = exobelts_report(paths) + vet = {(v["kic"], v["koi"]): v for v in json.load(open(core.results("exobelts_vet.json")))} + rows, survivors, explained = [], [], 0 + for q in pl: + ok = [k for k in q["ks"] if k["z"] is not None] + if not ok: + continue + b = max(ok, key=lambda k: k["z"]) + k6 = [k for k in q["ks"] if k["k"] == 6] + v = vet.get((str(q["kic"]), q["koi"])) + note = "%s, P %.3f d, %d transits; strongest shoulder k %d (%.2f h) %.0f ppm at z %.1f" % ( + q["koi"], q["period"], q["n_transits"], b["k"], b["shoulder_h"], b["ppm"], b["z"]) + vcode = None + if b["z"] > 4: + if v is None: + survivors.append(q["koi"]) + note += "; not yet measured against the matched null" + elif min(v["z_matched"] or 0, v["z_matched_fitted"] or 0) >= 5: + survivors.append(q["koi"]) + note += "; matched-null z %.1f and %.1f" % (v["z_matched"], v["z_matched_fitted"]) + else: + explained += 1 + vcode = ("shoulder from the detrending gap and the transit's timing and duration: against a null " + "detrended as the transit is, z %s with catalogue contacts and %s with the light curve's " + "(duration %.1f h against the catalogue's %.1f h, transit times spread %s min)" + % (v["z_matched"], v["z_matched_fitted"], v["dur_fit_h"], v["dur_cat_h"], v["oc_spread_min"])) + rows.append(dict(target="kic:%s" % q["kic"], stat=b["z"], vet=vcode, note=note, + upper_limit=k6[0]["lim3_ppm"] if k6 else None, + unit="shoulder z against random phases; limit: 3-sigma shoulder depth (ppm) at k = 6")) + lims = sorted(r["upper_limit"] for r in rows if r["upper_limit"] is not None) + trials = sum(len(q["ks"]) for q in pl) + core.record_search( + run, "Clarke exobelts beyond 30 days" if long else "Clarke exobelts", archive="MAST Kepler long-cadence PDCSAP light " + "curves; NASA Exoplanet Archive cumulative KOI table; Holczer et al. 2016 transit times", release="DR25", + selection=("candidate and confirmed Kepler planets below 2 Earth radii beyond 30 d around FGK dwarfs (Teff 4000-6500 K, " + "log g 4 or above) on stars of Kp 16 or brighter with long-cadence data") if long else + "confirmed Kepler planets on stars of Kp 15 or brighter with long-cadence data", + code=os.path.abspath(__file__), entry="exobelts", n_targets=len(rows), + params=dict(k=list(exobelts_KS), margin_h=exobelts_MARGIN_H, null_phases=exobelts_NULLS, stage_two_z=4, + survive_z=5), + null_summary="%d stars, %d planets, %d planet-k tests; %d planets above z 4 measured again against a null " + "detrended as the transit is, %d of them explained" % (len(res), len(rows), trials, + sum(1 for r in rows if r["stat"] > 4), + explained), + sensitivity="3-sigma shoulder depth at k = 6: best %.0f ppm, median %.0f ppm" % (lims[0], lims[len(lims) // 2]), + ledger="Clarke exobelts beyond 30 days" if long else "Clarke exobelts", n_unit="planets", + result="no shoulder survives" if not survivors else "%d shoulders survive: %s" % (len(survivors), + ", ".join(survivors))) + core.clear_targets(run) + core.record_targets(run, rows) + print("recorded %d planets; survivors %s" % (len(rows), survivors or "none")) + + +def exobelts_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("targets", "stream", "report", "vet", "record")) + p.add_argument("paths", nargs="*") + p.add_argument("--kepmag", type=float, default=15.0) + p.add_argument("--list") + p.add_argument("--out", default="exobelts.jsonl") + p.add_argument("--procs", type=int, default=2) + p.add_argument("--long", action="store_true") + a = p.parse_args() + if a.mode == "targets": + exobelts_targets(a.kepmag, a.long) + elif a.mode == "stream": + exobelts_stream(a.list, a.out, a.procs) + elif a.mode == "vet": + exobelts_vet(a.list or os.path.join(exobelts_ROOT, "targets.json"), a.paths) + elif a.mode == "record": + exobelts_record(a.paths, a.long) + else: + exobelts_report(a.paths) + + +def exobelts_cli(): + quiet_warnings() + exobelts_main() + + +# -------------------------------------------------------------------------------------------------------------- + +commensurability_DOC = r"""Exact commensurability: Exoplanet Archive pairs on p:q (q up to 7) within errors, counts below |delta| against the 1e-3 to 1e-2 density extrapolated. + + python -I seti.py transits commensurability search + python -I seti.py transits commensurability record""" + +commensurability_OUT = "commensurability.json" + + +def commensurability_search(): + from fractions import Fraction + q = ("select hostname,pl_name,pl_orbper,pl_orbpererr1,pl_orbpererr2,sy_pnum,discoverymethod,tran_flag,gaia_dr3_id " + "from pscomppars where sy_pnum>1 and pl_orbper is not null") + url = "https://exoplanetarchive.ipac.caltech.edu/TAP/sync?" + urllib.parse.urlencode({"query": q, "format": "csv"}) + rows = list(csv.DictReader(io.StringIO(core.get(url, timeout=300).decode()))) + by = {} + for r in rows: + by.setdefault(r["hostname"], []).append(r) + ratios = sorted({Fraction(p, k) for k in range(1, 8) for p in range(k + 1, 3 * k + 1) + if math.gcd(p, k) == 1 and p <= 9}) + + def err(p): + e = [abs(float(x)) for x in (p["pl_orbpererr1"], p["pl_orbpererr2"]) if x not in ("", None)] + return max(e) if e else float("nan") + pairs = [] + for h, ps in by.items(): + for a in ps: + for c in ps: + P1, P2 = float(a["pl_orbper"]), float(c["pl_orbper"]) + if not P2 > P1: + continue + r = P2 / P1 + best = min(ratios, key=lambda f: abs(r / float(f) - 1)) + e1, e2 = err(a), err(c) + pairs.append(dict(host=h, gaia=(a["gaia_dr3_id"] or "").replace("Gaia DR3 ", "").strip(), + inner=a["pl_name"], outer=c["pl_name"], P1=P1, P2=P2, + res="%d:%d" % (best.numerator, best.denominator), delta=r / float(best) - 1, + sd=math.hypot(e1 / P1, e2 / P2), transit=a["tran_flag"] == "1" and c["tran_flag"] == "1")) + d = np.array([abs(p["delta"]) for p in pairs]) + dens = np.sum((d > 1e-3) & (d < 1e-2)) / 9e-3 + counts = {"%.0e" % lim: [int(np.sum(d < lim)), float(dens * lim)] for lim in (1e-6, 1e-5, 1e-4, 1e-3)} + pairs.sort(key=lambda p: abs(p["delta"])) + print("%d planets in %d multi-planet systems; %d pairs" % (len(rows), len(by), len(pairs))) + for lim, (n, e) in counts.items(): + print(" |delta| < %s: %d pairs against %.2f for a smooth distribution" % (lim, n, e)) + for p in pairs[:12]: + print(" %-16s %-18s %-18s %s delta %+.2e +- %.1e (%.1f sigma from exact)" + % (p["host"][:16], p["inner"][:18], p["outer"][:18], p["res"], p["delta"], p["sd"], + abs(p["delta"]) / p["sd"] if p["sd"] > 0 else float("nan"))) + json.dump(dict(n_planets=len(rows), n_systems=len(by), counts=counts, pairs=pairs), + open(core.results(commensurability_OUT), "w"), indent=0) + + +def commensurability_record(): + d = json.load(open(core.results(commensurability_OUT))) + best = {} + for p in d["pairs"]: + key = ("gaia_dr3:" + p["gaia"]) if p["gaia"] else ("host:" + p["host"]) + if key not in best or abs(p["delta"]) < abs(best[key]["delta"]): + best[key] = p + c = d["counts"] + core.record_search( + "exact_commensurability", "Exact commensurability", archive="NASA Exoplanet Archive pscomppars", + selection="every pair of planets in multi-planet systems", code=os.path.abspath(__file__), + entry="commensurability", n_targets=len(best), params=dict(q_max=7, p_max=9), + null_summary="density of |delta| between 1e-3 and 1e-2 carried to smaller values", + sensitivity="the period errors: median %.1e in delta" % float(np.nanmedian([p["sd"] for p in d["pairs"]])), + ledger="Exact commensurability", + result="no pair within 1e-5 of a small-integer ratio (%.2f expected); %d within 1e-4 against %.1f, the " + "closest in the librating chains of TOI-1136, Kepler-223 and HD 110067" + % (c["1e-05"][1], c["1e-04"][0], c["1e-04"][1])) + core.clear_targets("exact_commensurability") + core.record_targets("exact_commensurability", [ + dict(target=k, stat=abs(p["delta"]), unit="fractional distance of the closest pair from p:q", + note="%s / %s near %s, delta %+.2e +- %.1e" % (p["inner"], p["outer"], p["res"], p["delta"], p["sd"])) + for k, p in best.items()]) + print("recorded %d systems" % len(best)) + + +def commensurability_cli(): + if len(sys.argv) > 1 and sys.argv[1] == "record": + commensurability_record() + else: + commensurability_search() + + +# -------------------------------------------------------------------------------------------------------------- + +nightheat_DOC = r"""Nightside heat on bare rocks: published two-sigma nightside limits (LHS 3844 b, GJ 367 b) as power limits P < 2 pi R^2 sigma T^4. + + python -I seti.py transits nightheat [record] [--sigma 2]""" + +nightheat_PLANETS = ( + dict(name="LHS 3844 b", target="gaia_dr3:6385548541499112448", r_earth=1.303, mode="tb1", + t1=710.0, lam_um=4.5, ref="Kreidberg et al. 2019, Nature 573, 87"), + dict(name="GJ 367 b", target="gaia_dr3:5412250540681250560", r_earth=0.699, mode="ratio", ratio=4e-6, ratio_err=8e-6, + lam_um=8.0, t_star=3522.0, r_star_sun=0.457, ref="Zhang et al. 2024, ApJL 961, L44"), +) + + +def nightheat_main(record=False, sigma=2.0): + h, c, k, sb = 6.626e-34, 2.998e8, 1.381e-23, 5.670e-8 + + def x_of(t, lam): + return h * c / (lam * 1e-6 * k * t) + out = [] + for p in nightheat_PLANETS: + lam = p["lam_um"] + if p["mode"] == "tb1": + # the limit at SIGMA is that multiple of the one-sigma Planck occupancy + occ = sigma / math.expm1(x_of(p["t1"], lam)) + t2 = h * c / (lam * 1e-6 * k * math.log1p(1.0 / occ)) + else: + rr = (p["r_earth"] * 6.371e6 / (p["r_star_sun"] * 6.957e8)) ** 2 + occ_star = 1.0 / math.expm1(x_of(p["t_star"], lam)) + occ = (p["ratio"] + sigma * p["ratio_err"]) / rr * occ_star + t2 = h * c / (lam * 1e-6 * k * math.log1p(1.0 / occ)) + r = p["r_earth"] * 6.371e6 + power = 2 * math.pi * r * r * sb * t2 ** 4 + out.append(dict(p, t2=t2, power=power)) + print("%s: nightside below %.0f K at %g sigma, so below %.1e W over the night hemisphere (%s)" + % (p["name"], t2, sigma, power, p["ref"])) + if not record: + return + core.record_search( + "nightside_heat", "Nightside heat on bare rocks", archive="published phase curves (Spitzer, JWST MIRI)", + selection="airless tidally locked planets with published nightside limits", code=os.path.abspath(__file__), entry="nightheat", + n_targets=len(out), params=dict(sigma=sigma), sensitivity="%g-sigma nightside brightness temperature" % sigma, ledger="Nightside heat on bare rocks", + result="nightside power below %s at %g sigma; Kardashev-I powers of 1e16-1e17 W are out of reach" + % (", ".join("%.0e W on %s" % (o["power"], o["name"]) for o in out), sigma)) + core.clear_targets("nightside_heat") + core.record_targets("nightside_heat", [dict(target=o["target"], upper_limit=o["power"], unit="W over the night hemisphere", + note="T_night < %.0f K (%g sigma), %s" % (o["t2"], sigma, o["ref"])) for o in out]) + print("recorded") + + +stability_DOC = r"""Station-kept planetary systems: multi-planet systems unstable within 1 per cent of their age in over 99 per cent of error draws, phases fixed by transit and periastron times; SPOCK for three or more planets (its regressor where 1e9 orbits outlast 1 per cent of the age), Hill stability then REBOUND for two; stable twins observed with the same errors as the null. + + python -I seti.py transits stability fetch + python -I seti.py transits stability limits (each planet's mass and eccentricity limit flags, for the vets) + python -I seti.py transits stability run [--procs 12] [--part K N] (needs spock and rebound; 100 draws a system, 1000 once 90 per cent are unstable) + python -I seti.py transits stability twins [--procs 12] [--twins 10] (stable draws of every system over 99 per cent unstable, observed again with its errors) + python -I seti.py transits stability long [--procs 12] [--draws 20] (those systems' draws integrated directly with WHFast to 1e8 orbits of the inner planet) + python -I seti.py transits stability record""" + +stability_ROOT = os.environ.get("STABILITY_ROOT", core.data("spock")) +stability_ME = 3.003489e-6 +stability_DRAWS = (100, 1000) # draws a system, the second count once stability_MORE of the first are unstable +stability_MORE = 0.9 +stability_FLAG = 0.99 # unstable fraction of the draws a flag needs +stability_AGE = 1.0 # Gyr where the archive gives no age +stability_NBODY = 1e6 # orbits of the inner planet a Hill-unstable two-planet draw is integrated for +stability_STEPS = 2e7 # and at most this many steps +stability_REG = 100 # regressor draws where 1e9 orbits of the inner planet outlast 1 per cent of the age +stability_TWIN = 0.05 # flagged fraction of a system's stable twins that explains its flag +stability_LONG = 1e8 # orbits of the inner planet a flagged system's direct integrations run for +stability_LONG_STEPS = 2e9 # and at most this many steps +stability_MODEL = {} + + +def stability_fetch(): + os.makedirs(stability_ROOT, exist_ok=True) + q = ("select pl_name,hostname,sy_pnum,pl_orbper,pl_orbpererr1,pl_bmasse,pl_bmasseerr1,pl_bmasseerr2,pl_bmassprov," + "pl_orbeccen,pl_orbeccenerr1,pl_orbeccenerr2,pl_orblper,pl_orbtper,pl_tranmid,pl_orbincl,st_mass,st_masserr1," + "st_masserr2,st_age,st_ageerr1,st_ageerr2,discoverymethod,pl_controv_flag from pscomppars where sy_pnum>=2") + b = core.get("https://exoplanetarchive.ipac.caltech.edu/TAP/sync?" + urllib.parse.urlencode(dict(query=q, format="csv")), timeout=600) + open(os.path.join(stability_ROOT, "multis.csv"), "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + print("fetched") + + +def stability_limits(): + """Each planet's mass and eccentricity limit flags (1 an upper limit, -1 a lower), into ROOT/limits.csv.""" + q = "select pl_name,pl_bmasselim,pl_orbeccenlim from pscomppars where sy_pnum>=2" + b = core.get("https://exoplanetarchive.ipac.caltech.edu/TAP/sync?" + urllib.parse.urlencode(dict(query=q, format="csv")), timeout=600) + open(os.path.join(stability_ROOT, "limits.csv"), "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + print("fetched limit flags") + + +def stability_jobs(): + rows = list(csv.DictReader(open(os.path.join(stability_ROOT, "multis.csv"), encoding="utf-8"))) + by = {} + for r in rows: + by.setdefault(r["hostname"], []).append(r) + jobs = [] + for host, g in by.items(): + g = sorted([r for r in g if num(r["pl_orbper"]) and num(r["pl_bmasse"])], key=lambda r: num(r["pl_orbper"])) + if len(g) >= 2 and not any((num(r["pl_controv_flag"]) or 0) > 0 for r in g): + jobs.append((host, g)) + return sorted(jobs, key=lambda j: len(j[1])) + + +def stability_measured(g): + """Star mass, the age a flag is judged against (lower 1 sigma), and each planet's period, mass, eccentricity, periastron argument, transit and periastron times, with the errors the draws take above and below.""" + r0 = g[0] + ms, age = num(r0["st_mass"]) or 1.0, num(r0["st_age"]) + pl = [] + for r in g: + m, e = num(r["pl_bmasse"]), num(r["pl_orbeccen"]) + mu = abs(num(r["pl_bmasseerr1"]) or 0.2 * m) + eu = abs(num(r["pl_orbeccenerr1"]) or 0.0) if e is not None else 0.0 + pl.append(dict(P=num(r["pl_orbper"]), m=m, m_up=mu, m_lo=abs(num(r["pl_bmasseerr2"]) or mu), e=e or 0.0, e_up=eu, + e_lo=abs(num(r["pl_orbeccenerr2"]) or eu) if e is not None else 0.0, w=num(r["pl_orblper"]), + tc=num(r["pl_tranmid"]), tp=num(r["pl_orbtper"]))) + su = abs(num(r0["st_masserr1"]) or 0.05 * ms) + return dict(ms=ms, ms_up=su, ms_lo=abs(num(r0["st_masserr2"]) or su), planets=pl, age=age, + age_used=max(age - abs(num(r0["st_ageerr2"]) or 0.0), 0.01) if age else stability_AGE) + + +def stability_split(rng, x, up, lo, n): + """n draws about x, up and lo the standard deviations above and below.""" + z = rng.standard_normal(n) + return x + np.where(z > 0, up, lo) * z + + +def stability_draws(s, n, rng, centre=None): + """n draws of the star mass and of each planet's mass, eccentricity, pericentre and node longitudes, inclination and mean longitude at a common epoch: a transit puts the planet at true longitude pi/2, towards the observer, a periastron time fixes the mean anomaly, and neither leaves it random; centre replaces the measured star mass, masses and eccentricities.""" + pl = s["planets"] + c = centre or dict(ms=s["ms"], m=[p["m"] for p in pl], e=[p["e"] for p in pl]) + ms = np.maximum(stability_split(rng, c["ms"], s["ms_up"], s["ms_lo"], n), 0.05) + ts = [t for t in (p["tc"] if p["tc"] is not None else p["tp"] for p in pl) if t is not None] + t0 = float(np.median(ts)) if ts else 0.0 + cols = [] + for i, p in enumerate(pl): + e = np.clip(stability_split(rng, c["e"][i], p["e_up"], p["e_lo"], n), 0.0, 0.9) + pom = np.full(n, math.radians(p["w"])) if p["w"] is not None else rng.uniform(0, 2 * math.pi, n) + if p["tc"] is not None: + E = 2 * np.arctan(np.sqrt((1 - e) / (1 + e)) * np.tan((math.pi / 2 - pom) / 2)) + M = E - e * np.sin(E) + 2 * math.pi * (t0 - p["tc"]) / p["P"] + elif p["tp"] is not None: + M = np.full(n, 2 * math.pi * (t0 - p["tp"]) / p["P"]) + else: + M = rng.uniform(0, 2 * math.pi, n) + cols.append(dict(m=np.maximum(stability_split(rng, c["m"][i], p["m_up"], p["m_lo"], n), 0.05 * p["m"]), e=e, pomega=pom, + l=pom + M, Omega=rng.uniform(0, 2 * math.pi, n), inc=np.radians(rng.uniform(0, 1, n)))) + return ms, cols + + +def stability_sim(ms, P, cols, k): + import rebound + sim = rebound.Simulation() + sim.units = ("day", "AU", "Msun") + sim.add(m=float(ms[k])) + for Pi, c in zip(P, cols): + sim.add(m=float(c["m"][k]) * stability_ME, P=Pi, e=float(c["e"][k]), inc=float(c["inc"][k]), Omega=float(c["Omega"][k]), + pomega=float(c["pomega"][k]), l=float(c["l"][k])) + sim.move_to_com() + return sim + + +def stability_crossing(sim): + """Adjacent orbits whose apocentre and pericentre overlap.""" + ps = [sim.particles[i] for i in range(1, sim.N)] + return any(b.a * (1 - b.e) < a.a * (1 + a.e) for a, b in zip(ps[:-1], ps[1:])) + + +def stability_hill(sim): + """Gladman (1993): a coplanar pair that can never approach closely.""" + s, a, b = sim.particles[0], sim.particles[1], sim.particles[2] + m1, m2 = a.m / s.m, b.m / s.m + al, lam = m1 + m2, math.sqrt(b.a / a.a) + lhs = al ** -3 * (m1 + m2 / lam ** 2) * (m1 * math.sqrt(1 - a.e ** 2) + m2 * math.sqrt(1 - b.e ** 2) * lam) ** 2 + return lhs > 1 + 3 ** (4 / 3) * m1 * m2 / al ** (4 / 3) + + +def stability_nbody(sim, tmax): + """True when a pair comes within its mutual Hill radius or loses a planet within tmax days (WHFast, at most stability_STEPS).""" + import rebound + s, a, b = sim.particles[0], sim.particles[1], sim.particles[2] + sim.integrator = "whfast" + sim.dt = min(p.P * (1 - p.e) ** 1.5 for p in (a, b)) / 20 + # the distance applies to the star as well, so it stays inside the inner planet's pericentre + sim.exit_min_distance = min(((a.m + b.m) / (3 * s.m)) ** (1 / 3) * (a.a + b.a) / 2, 0.5 * a.a * (1 - a.e)) + sim.exit_max_distance = 100 * b.a * (1 + b.e) + try: + sim.integrate(min(tmax, stability_STEPS * sim.dt), exact_finish_time=0) + except (rebound.Encounter, rebound.Escape): + return True + return False + + +def stability_eval(s, n, rng, centre=None, keep=20): + """Each of n draws' chance of instability within its horizon (SPOCK's 1e9 orbits for three or more planets, the N-body window for two, certainty where orbits cross), the crossing count, and up to keep draws judged stable (twin centres).""" + P = [p["P"] for p in s["planets"]] + ms, cols = stability_draws(s, n, rng, centre) + win = 0.01 * s["age_used"] * 365.25e9 + u, idx, cross = np.zeros(n), [], 0 + for k in range(n): + sim = stability_sim(ms, P, cols, k) + if stability_crossing(sim): + u[k], cross = 1.0, cross + 1 + elif len(P) == 2: + u[k] = 0.0 if stability_hill(sim) else float(stability_nbody(sim, min(stability_NBODY * P[0], win))) + else: + idx.append(k) + if idx: + try: + u[idx] = 1 - np.asarray(stability_MODEL["fc"].predict_stable([stability_sim(ms, P, cols, k) for k in idx], n_jobs=1), float) + except Exception: + for k in idx: + try: + u[k] = 1 - float(stability_MODEL["fc"].predict_stable(stability_sim(ms, P, cols, k), n_jobs=1)) + except Exception: + u[k] = np.nan + stable = [dict(ms=float(ms[k]), m=[float(c["m"][k]) for c in cols], e=[float(c["e"][k]) for c in cols]) + for k in range(n) if u[k] < 0.5][:keep] + return u, cross, stable + + +def stability_regress(s, rng, centre=None): + """SPOCK's regressor over stability_REG draws: the mean chance each goes unstable within 1 per cent of the age.""" + if "dr" not in stability_MODEL: + import torch + torch.set_num_threads(1) + from spock import DeepRegressor + stability_MODEL["dr"] = DeepRegressor() + P = [p["P"] for p in s["planets"]] + ms, cols = stability_draws(s, stability_REG, rng, centre) + win = 0.01 * s["age_used"] * 365.25e9 + u = [] + for k in range(stability_REG): + sim = stability_sim(ms, P, cols, k) + if stability_crossing(sim): + u.append(1.0) + continue + try: + t = stability_MODEL["dr"].predict_instability_time(sim, samples=1000, return_samples=True, Ncpus=1)[-1] + u.append(float(np.mean(np.asarray(t) < win))) + except Exception: + pass + return float(np.mean(u)) if u else None + + +def stability_system(job, centre=None, seed=0, keep=20): + """A system's fraction of error draws unstable within 1 per cent of its age: stability_DRAWS draws, the regressor's estimate where SPOCK's 1e9 orbits outlast that and the classifier leaves the system over stability_FLAG.""" + import zlib + host, g = job + s = stability_measured(g) + pl = s["planets"] + rng = np.random.default_rng(zlib.crc32(host.encode()) + seed) + u, cross, stable = stability_eval(s, stability_DRAWS[0], rng, centre, keep) + if np.nanmean(u) >= stability_MORE: + u2, c2, st2 = stability_eval(s, stability_DRAWS[1] - stability_DRAWS[0], rng, centre, keep - len(stable)) + u, cross, stable = np.concatenate([u, u2]), cross + c2, stable + st2 + a = [(s["ms"] * (p["P"] / 365.25) ** 2) ** (1 / 3) for p in pl] + rec = dict(host=host, n=len(pl), periods=[p["P"] for p in pl], masses=[p["m"] for p in pl], ecc=[p["e"] for p in pl], + ecc_err=[p["e_up"] for p in pl], prov=sorted({r["pl_bmassprov"] for r in g}), + method=sorted({r["discoverymethod"] for r in g}), age=s["age"], age_used=s["age_used"], + phased=sum(1 for p in pl if p["tc"] is not None or p["tp"] is not None), draws=len(u), crossing=cross, + U=float(np.nanmean(u)), horizon="spock" if len(pl) >= 3 else "nbody", stable=stable, + min_hill=float(min((a2 - a1) / (((pl[i]["m"] + pl[i + 1]["m"]) * stability_ME / (3 * s["ms"])) ** (1 / 3) * (a1 + a2) / 2) + for i, (a1, a2) in enumerate(zip(a[:-1], a[1:]))))) + if len(pl) >= 3 and rec["U"] > stability_FLAG and 1e9 * pl[0]["P"] > 0.01 * s["age_used"] * 365.25e9: + rec["U_1e9"], rec["U"], rec["horizon"] = rec["U"], stability_regress(s, rng, centre), "regressor" + return rec + + +def stability_init(): + quiet_warnings() + import warnings + warnings.filterwarnings("ignore") + from spock import FeatureClassifier + stability_MODEL["fc"] = FeatureClassifier() + + +def stability_path(kind, host): + return os.path.join(stability_ROOT, kind, "%s.json" % "".join(ch if ch.isalnum() else "_" for ch in host)) + + +def stability_task(job): + path = stability_path("systems", job[0]) + if not os.path.exists(path): + os.makedirs(os.path.dirname(path), exist_ok=True) + json.dump(stability_system(job), open(path + ".tmp", "w")) + os.replace(path + ".tmp", path) + return json.load(open(path)) + + +def stability_run(part=None, procs=12): + """Every system of the part in a pool, the many-planet systems first, one JSON a system under ROOT/systems (resumable).""" + import time + from multiprocessing import Pool + jobs = stability_jobs() + if part: + jobs = jobs[part[0]::part[1]] + jobs = sorted(jobs, key=lambda j: -len(j[1])) + t0 = time.time() + with Pool(procs, initializer=stability_init) as pool: + for i, r in enumerate(pool.imap_unordered(stability_task, jobs)): + if (r["U"] or 0) > stability_FLAG or (i + 1) % 25 == 0: + print("%d of %d, %.0f min: %s, %d planets, %d draws, unstable %s (%s)" + % (i + 1, len(jobs), (time.time() - t0) / 60, r["host"], r["n"], r["draws"], + "%.3f" % r["U"] if r["U"] is not None else "-", r["horizon"]), flush=True) + print("%d systems done" % len(jobs)) + + +def stability_search_task(job): + """Stable draws of a flagged system the run kept too few of, from 4000 more draws.""" + import zlib + s = stability_measured(job[1]) + return job[0], stability_eval(s, 4000, np.random.default_rng(zlib.crc32(job[0].encode()) + 1), None, 50)[2] + + +def stability_twin_task(task): + """One stable twin: a stable draw observed again with the system's errors, and its unstable fraction by the same procedure.""" + import zlib + host, g, t, X = task + s = stability_measured(g) + pl = s["planets"] + rng = np.random.default_rng(zlib.crc32(host.encode()) + 7919 * (t + 1)) + + def obs(x, up, lo): + return float(stability_split(rng, x, up, lo, 1)[0]) + Y = dict(ms=max(obs(X["ms"], s["ms_up"], s["ms_lo"]), 0.05), + m=[max(obs(X["m"][i], p["m_up"], p["m_lo"]), 0.05 * p["m"]) for i, p in enumerate(pl)], + e=[min(max(obs(X["e"][i], p["e_up"], p["e_lo"]), 0.0), 0.9) for i, p in enumerate(pl)]) + return host, stability_system((host, g), centre=Y, seed=104729 * (t + 1), keep=0)["U"] + + +def stability_twins(procs=12, twins=10): + """The null for every system over stability_FLAG unstable: twins, each a stable draw observed again, under ROOT/twins.""" + from multiprocessing import Pool + jobs = dict(stability_jobs()) + recs = [json.load(open(stability_path("systems", h))) for h in jobs if os.path.exists(stability_path("systems", h))] + fl = [r for r in recs if (r["U"] or 0) > stability_FLAG and not os.path.exists(stability_path("twins", r["host"]))] + with Pool(procs, initializer=stability_init) as pool: + extra = dict(pool.imap_unordered(stability_search_task, [(r["host"], jobs[r["host"]]) for r in fl if len(r["stable"]) < twins])) + stable = {r["host"]: r["stable"] + extra.get(r["host"], []) for r in fl} + tasks = [(h, jobs[h], t, st[t % len(st)]) for h, st in stable.items() if st for t in range(twins)] + got = {h: [] for h in stable} + for h, U in pool.imap_unordered(stability_twin_task, tasks): + got[h].append(U) + if len(got[h]) == twins: + os.makedirs(os.path.dirname(stability_path("twins", h)), exist_ok=True) + json.dump(dict(host=h, U=got[h], stable_draws=len(stable[h])), open(stability_path("twins", h), "w")) + for h, st in stable.items(): + if not st: + os.makedirs(os.path.dirname(stability_path("twins", h)), exist_ok=True) + json.dump(dict(host=h, U=[], stable_draws=0), open(stability_path("twins", h), "w")) + print("%d flagged systems: %d with twins, %d with no stable draw" % (len(fl), sum(1 for v in stable.values() if v), + sum(1 for v in stable.values() if not v))) + + +def stability_long_task(task): + """One draw of a flagged system integrated directly (WHFast) until two planets come within the smallest mutual Hill radius, a planet leaves, or stability_LONG orbits of the inner planet (1 per cent of the age, stability_LONG_STEPS steps if sooner): the instability time in days or None, and the window.""" + import zlib + import rebound + host, g, k = task + s = stability_measured(g) + P = [p["P"] for p in s["planets"]] + ms, cols = stability_draws(s, 1, np.random.default_rng(zlib.crc32(host.encode()) + 31337 * (k + 1))) + sim = stability_sim(ms, P, cols, 0) + if stability_crossing(sim): + return host, 0.0, 0.0 + ps = [sim.particles[i] for i in range(1, sim.N)] + sim.integrator = "whfast" + sim.dt = min(p.P * (1 - p.e) ** 1.5 for p in ps) / 20 + rh = min(((a.m + b.m) / (3 * sim.particles[0].m)) ** (1 / 3) * (a.a + b.a) / 2 for a, b in zip(ps[:-1], ps[1:])) + sim.exit_min_distance = min(rh, 0.5 * ps[0].a * (1 - ps[0].e)) + sim.exit_max_distance = 100 * ps[-1].a * (1 + ps[-1].e) + tmax = min(stability_LONG * P[0], 0.01 * s["age_used"] * 365.25e9, stability_LONG_STEPS * sim.dt) + try: + sim.integrate(tmax, exact_finish_time=0) + except (rebound.Encounter, rebound.Escape): + return host, float(sim.t), tmax + return host, None, tmax + + +def stability_long(procs=12, draws=20): + """Direct integrations of every system over stability_FLAG unstable, draws each, under ROOT/nbody (a check on SPOCK).""" + from multiprocessing import Pool + jobs = dict(stability_jobs()) + recs = [json.load(open(stability_path("systems", h))) for h in jobs if os.path.exists(stability_path("systems", h))] + fl = [r["host"] for r in recs if (r["U"] or 0) > stability_FLAG and not os.path.exists(stability_path("nbody", r["host"]))] + got = {h: [] for h in fl} + with Pool(procs) as pool: + for h, t, w in pool.imap_unordered(stability_long_task, [(h, jobs[h], k) for h in fl for k in range(draws)]): + got[h].append((t, w)) + if len(got[h]) == draws: + os.makedirs(os.path.dirname(stability_path("nbody", h)), exist_ok=True) + json.dump(dict(host=h, t=[t for t, w in got[h]], window=[w for t, w in got[h]], + unstable=sum(1 for t, w in got[h] if t is not None) / draws), open(stability_path("nbody", h), "w")) + print("%d flagged systems integrated, %d draws each" % (len(fl), draws)) + + +def stability_vet(r, g=None, lim=None): + """Why a flagged system may be mismeasured rather than maintained, or None; g are its archive rows, lim each planet's (mass, eccentricity) limit flags.""" + why = [] + if "M-R relationship" in r["prov"]: + why.append("masses estimated from radii") + if any(e is not None and e > 0.1 for e in r["ecc_err"]): + why.append("eccentricity errors above 0.1") + if g: + ms, e0 = num(g[0]["st_mass"]) or 1.0, [num(x["pl_orbeccen"]) or 0.0 for x in g] + a0 = [(ms * (num(x["pl_orbper"]) / 365.25) ** 2) ** (1 / 3) for x in g] + if any(a2 * (1 - e2) < a1 * (1 + e1) for a1, a2, e1, e2 in zip(a0[:-1], a0[1:], e0[:-1], e0[1:])): + why.append("orbits that cross at the archive's own values") + if any((num(x["pl_orbeccen"]) or 0.0) > 0 and num(x["pl_orbeccenerr1"]) is None for x in g): + why.append("eccentricities given without errors") + if lim and any(lim.get(x["pl_name"], (0, 0))[0] == 1 for x in g): + why.append("masses that are upper limits") + if lim and any(lim.get(x["pl_name"], (0, 0))[1] == 1 for x in g): + why.append("eccentricities that are upper limits") + for p1, p2 in zip(r["periods"][:-1], r["periods"][1:]): + x = p2 / p1 + if any(abs(x / (j / k) - 1) < 0.01 for j in range(2, 8) for k in range(1, j)): + why.append("a pair within 1 per cent of a small-integer period ratio") + break + if r.get("twin_flagged") is not None and r["twin_flagged"] >= stability_TWIN: + why.append("%d per cent of its stable twins flagged as well" % round(100 * r["twin_flagged"])) + return "; ".join(why) or None + + +def stability_record(): + jobs = dict(stability_jobs()) + recs = [json.load(open(stability_path("systems", h))) for h in jobs if os.path.exists(stability_path("systems", h))] + lim = {} + if os.path.exists(os.path.join(stability_ROOT, "limits.csv")): + lim = {x["pl_name"]: (int(num(x["pl_bmasselim"]) or 0), int(num(x["pl_orbeccenlim"]) or 0)) + for x in csv.DictReader(open(os.path.join(stability_ROOT, "limits.csv"), encoding="utf-8"))} + for r in recs: + if os.path.exists(stability_path("twins", r["host"])): + tw = json.load(open(stability_path("twins", r["host"]))) + r["twins"], r["stable_draws"] = len(tw["U"]), tw["stable_draws"] + r["twin_flagged"] = float(np.mean([(u or 0) > stability_FLAG for u in tw["U"]])) if tw["U"] else None + if os.path.exists(stability_path("nbody", r["host"])): + r["nbody"] = json.load(open(stability_path("nbody", r["host"])))["unstable"] + fl = sorted([r for r in recs if (r["U"] or 0) > stability_FLAG], key=lambda r: -r["U"]) + for r in fl: + r["vet"] = stability_vet(r, jobs[r["host"]], lim) + left = [r for r in fl if not r["vet"]] + for r in fl: + print(" %-24s %d planets, %d draws, unstable %.4f (%s), crossing %d, twins %s, direct %s; %s" + % (r["host"], r["n"], r["draws"], r["U"], r["horizon"], r["crossing"], + "%d of %d flagged" % (round(r["twin_flagged"] * r["twins"]), r["twins"]) if r.get("twin_flagged") is not None + else "none, no stable draw" if r.get("twins") == 0 else "not run", + "%.2f unstable" % r["nbody"] if r.get("nbody") is not None else "not run", r["vet"] or "OPEN")) + tw = [r for r in fl if r.get("twin_flagged") is not None] + core.record_search( + "exoplanet_station_kept", "Station-kept planetary systems", archive="NASA Exoplanet Archive composite parameters", + selection="%d multi-planet systems with periods and masses, %d of three or more planets, %d with transit or periastron " + "times for every planet" % (len(recs), sum(1 for r in recs if r["n"] >= 3), sum(1 for r in recs if r["phased"] == r["n"])), + code=os.path.abspath(__file__), entry="stability", n_targets=len(recs), + params=dict(draws=list(stability_DRAWS), more=stability_MORE, flag=stability_FLAG, age_missing_gyr=stability_AGE, + nbody_orbits=stability_NBODY, nbody_steps=stability_STEPS, regressor_draws=stability_REG, twin=stability_TWIN, + resonance=0.01, ecc_err=0.1), + null_summary="stable draws of each flagged system observed again with its errors and drawn by the same procedure: %d of " + "%d flagged systems with twins have %d per cent or more of them flagged; %d flagged systems kept no stable " + "draw" % (sum(1 for r in tw if r["twin_flagged"] >= stability_TWIN), len(tw), round(100 * stability_TWIN), + sum(1 for r in fl if r.get("twins") == 0)), + sensitivity="a system over 99 per cent of whose error draws go unstable within 1 per cent of its age (lower 1 sigma, 1 Gyr " + "where none is given): SPOCK's probability over 1e9 orbits of the inner planet, its regressor where that " + "outlasts 1 per cent of the age, Hill stability and 1e6 orbits of WHFast for two planets", + ledger="Station-kept planetary systems", + result="%d systems flagged (%d of three or more planets); %d explained by their measurements or their twins; %d open%s" + % (len(fl), sum(1 for r in fl if r["n"] >= 3), len(fl) - len(left), len(left), + (": " + ", ".join(r["host"] for r in left)) if left else "")) + core.clear_targets("exoplanet_station_kept") + core.record_targets("exoplanet_station_kept", [dict( + target="host:%s" % r["host"], stat=r["U"], unit="fraction of error draws unstable within 1 per cent of the age", + vet=r.get("vet") if r in fl else None, + note="%s%d planets, %d draws (%s), crossing in %d, minimum mutual Hill separation %.1f, age used %.2f Gyr%s" + % ("flagged and unexplained; " if r in fl and not r.get("vet") else "", r["n"], r["draws"], r["horizon"], r["crossing"], + r["min_hill"], r["age_used"], + "; %.2f of direct integrations unstable" % r["nbody"] if r.get("nbody") is not None else "")) for r in recs]) + print("recorded %d systems; %d flagged, %d open" % (len(recs), len(fl), len(left))) + + +def stability_cli(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "limits", "run", "twins", "long", "record")) + p.add_argument("--part", type=int, nargs=2, default=None) + p.add_argument("--procs", type=int, default=12) + p.add_argument("--twins", type=int, default=10) + p.add_argument("--draws", type=int, default=20) + a = p.parse_args() + if a.mode == "fetch": + stability_fetch() + elif a.mode == "limits": + stability_limits() + elif a.mode == "run": + stability_run(a.part, a.procs) + elif a.mode == "twins": + stability_twins(a.procs, a.twins) + elif a.mode == "long": + stability_long(a.procs, a.draws) + else: + stability_record() + + +hollow_DOC = r"""Hollow planets: densities below 1 g/cm^3 with escape parameter below 10 around hosts of 3 Gyr or more, young planets as the natural envelope. + + python -I seti.py transits hollow [record] [--lam 10] [--age-gyr 3] [--density 1.0] [--mass-snr 3]""" + + +def hollow_main(record=False, lam=10.0, age_gyr=3.0, density=1.0, mass_snr=3.0): + p = core.data("hollow", "planets.csv") + if not os.path.exists(p): + os.makedirs(os.path.dirname(p), exist_ok=True) + q = ("select pl_name,hostname,pl_bmasse,pl_bmasseerr1,pl_bmasseerr2,pl_bmassprov,pl_rade,pl_radeerr1,pl_eqt,st_age," + "st_ageerr1,st_ageerr2,discoverymethod,pl_controv_flag from pscomppars where pl_bmasse is not null and " + "pl_rade is not null and pl_eqt is not null") + b = core.get("https://exoplanetarchive.ipac.caltech.edu/TAP/sync?" + urllib.parse.urlencode(dict(query=q, format="csv")), timeout=600) + open(p, "wb").write(b if isinstance(b, bytes) else b.encode("utf-8")) + G, mH, kB, ME, RE = 6.674e-11, 1.6735e-27, 1.380649e-23, 5.972e24, 6.371e6 + out = [] + for r in csv.DictReader(open(p, encoding="utf-8")): + M, R, T, em = num(r["pl_bmasse"]), num(r["pl_rade"]), num(r["pl_eqt"]), num(r["pl_bmasseerr1"]) + if not (M and R and T and em) or r["pl_bmassprov"] != "Mass" or M / em < mass_snr: + continue + dens = 5.514 * M / R ** 3 + if dens >= density: + continue + out.append(dict(name=r["pl_name"], lam=G * M * ME * mH / (kB * T * R * RE), dens=dens, age=num(r["st_age"]), M=M, R=R, T=T)) + old = [o for o in out if o["age"] is not None and o["age"] >= age_gyr] + cand = [o for o in old if o["lam"] < lam] + young = sorted(out, key=lambda o: o["lam"])[:6] + print("%d measured planets below %g g/cm^3; %d around stars of %g Gyr or more, lowest Lambda %.1f (%s); below %g: %d; the lowest " + "overall: %s" % (len(out), density, len(old), age_gyr, min(o["lam"] for o in old), min(old, key=lambda o: o["lam"])["name"], lam, len(cand), + ", ".join("%s (%.1f, %s Gyr)" % (o["name"], o["lam"], o["age"]) for o in young))) + if record: + lo = min(old, key=lambda o: o["lam"]) + core.record_search( + "exoplanet_hollow", "Hollow planets around old stars", archive="NASA Exoplanet Archive composite parameters", + selection="%d planets with measured masses at %g sigma and bulk density below %g g/cm^3" % (len(out), mass_snr, density), + code=os.path.abspath(__file__), entry="hollow", n_targets=len(out), params=dict(lam=lam, age_gyr=age_gyr, density=density, mass_snr=mass_snr), + null_summary="the young planets: the lowest Lambda overall belongs to %s" % ", ".join( + "%s (%s Gyr)" % (o["name"], o["age"]) for o in young[:4]), + sensitivity="Lambda below %g with a %g sigma mass, around a star of %g Gyr or more" % (lam, mass_snr, age_gyr), + ledger="Hollow planets around old stars", + result="%d around stars of %g Gyr or more, %d below Lambda %g; the lowest is %s at %.1f" % (len(old), age_gyr, len(cand), lam, lo["name"], lo["lam"])) + core.clear_targets("exoplanet_hollow") + core.record_targets("exoplanet_hollow", [dict( + target="planet:%s" % o["name"], stat=o["lam"], unit="escape parameter Lambda", + note="density %.2f g/cm^3, host age %s Gyr" % (o["dens"], o["age"])) for o in out]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- + +escape_DOC = r"""Transits faster than escape velocity: Kepler TCEs and TOIs whose duration is below 0.8 of the bound-orbit floor and below the smallest floor the errors allow. + + python -I seti.py transits escape fetch + python -I seti.py transits escape analyse + python -I seti.py transits escape check KIC [TCE] (the light curve at every epoch of one event, with quality flags) + python -I seti.py transits escape record""" + +escape_ROOT = os.environ.get("ESCAPE_ROOT", core.data("escape_transits")) +escape_OUT = "escape_transits.json" +escape_SNR = 15.0 +escape_RATIO = 0.8 +escape_S3 = "https://stpubdata.s3.amazonaws.com/" +escape_G, escape_MSUN, escape_RSUN = 6.674e-11, 1.989e30, 6.957e8 + + +def escape_fetch(): + os.makedirs(escape_ROOT, exist_ok=True) + jobs = (("dr25_tce.csv", "SELECT kepid, tce_plnt_num, tce_period, tce_time0bk, tce_duration, tce_depth, tce_impact, tce_model_snr, " + "tce_max_mult_ev, tce_prad, tce_ror, tce_dor, tce_steff, tce_slogg, tce_sradius, tce_rogue_flag FROM q1_q17_dr25_tce"), + ("koi_cumulative.csv", "SELECT kepid, kepoi_name, koi_disposition, koi_pdisposition, koi_score, koi_fpflag_nt, koi_fpflag_ss, " + "koi_fpflag_co, koi_fpflag_ec, koi_period, koi_duration, koi_duration_err1, koi_impact, koi_impact_err1, " + "koi_impact_err2, koi_depth, koi_prad, koi_ror, koi_dor, koi_model_snr, koi_srad, koi_smass, koi_steff, " + "koi_slogg, koi_count, koi_num_transits FROM cumulative"), + ("toi.csv", "SELECT toi, tid, tfopwg_disp, pl_orbper, pl_trandurh, pl_trandurherr1, pl_trandep, pl_rade, st_rad, st_raderr1, " + "st_teff, st_logg, st_tmag, st_dist, ra, dec FROM toi")) + for name, q in jobs: + p = os.path.join(escape_ROOT, name) + if os.path.exists(p): + continue + rows = core.exoplanets(q) + with open(p, "w", newline="", encoding="utf-8") as f: + w = csv.DictWriter(f, fieldnames=list(rows[0].keys())) + w.writeheader() + w.writerows(rows) + print("%s: %d rows" % (name, len(rows))) + p = os.path.join(escape_ROOT, "berger2020_table2.ecsv") + if not os.path.exists(p): + from astroquery.vizier import Vizier + t = Vizier(columns=["**"], row_limit=-1).get_catalogs("J/AJ/159/280/table2")[0] + t.write(p, format="ascii.ecsv", overwrite=True) + print("Berger et al. (2020) table 2: %d stars" % len(t)) + + +def escape_floor_hours(R, M, b, k): + """Shortest bound full transit (hours) across a star of R (R_sun) and M (M_sun) at impact parameter b and radius ratio k.""" + if R is None or M is None or R <= 0 or M <= 0: + return None + v = math.sqrt(2 * escape_G * M * escape_MSUN / (R * escape_RSUN)) + chord = 2 * R * escape_RSUN * math.sqrt(max((1 + k) ** 2 - b ** 2, 0.0)) + return chord / v / 3600.0 + + +def escape_analyse(): + from astropy.table import Table + t = Table.read(os.path.join(escape_ROOT, "berger2020_table2.ecsv"), format="ascii.ecsv") + star = {} + for r in t: + star[int(r["KIC"])] = dict(R=float(r["Rad"]), R_lo=float(r["e_Rad"]), R_hi=float(r["E_Rad"]), M=float(r["Mass"]), + M_lo=float(r["e_Mass"]), M_hi=float(r["E_Mass"]), logg=float(r["logg"]), teff=float(r["Teff"])) + kois = {} + for r in csv.DictReader(open(os.path.join(escape_ROOT, "koi_cumulative.csv"))): + kois.setdefault(int(r["kepid"]), []).append(r) + tces = list(csv.DictReader(open(os.path.join(escape_ROOT, "dr25_tce.csv")))) + n_tce, by_kic = {}, {} + for r in tces: + n_tce[int(r["kepid"])] = n_tce.get(int(r["kepid"]), 0) + 1 + by_kic.setdefault(int(r["kepid"]), []).append(r) + eb_path = core.data("kepler_eb_kirk2016.json") + ebs = {int(k): v for k, v in json.load(open(eb_path)).items()} if os.path.exists(eb_path) else {} + rows = [] + for r in tces: + kic = int(r["kepid"]) + s = star.get(kic) + snr, dur, b, k = num(r["tce_model_snr"]), num(r["tce_duration"]), num(r["tce_impact"]), num(r["tce_ror"]) + if s is None or snr is None or dur is None or b is None or k is None or num(r["tce_rogue_flag"]): + continue + b, k = min(max(b, 0.0), 1.0), max(k, 0.0) + f_b = escape_floor_hours(s["R"], s["M"], b, k) + f_0 = escape_floor_hours(s["R"], s["M"], 0.0, k) + f_min = escape_floor_hours(max(s["R"] - s["R_lo"], 0.01), s["M"] + s["M_hi"], b, k) + koi = None + for q in kois.get(kic, []): + if num(q["koi_period"]) and abs(num(q["koi_period"]) - num(r["tce_period"])) < 1e-3 * num(r["tce_period"]): + koi = q + row = dict(kic=kic, tce=int(r["tce_plnt_num"]), period=num(r["tce_period"]), duration_h=dur, b=b, k=k, snr=snr, + R=s["R"], M=s["M"], logg=s["logg"], teff=s["teff"], floor_b=f_b, floor_0=f_0, floor_min=f_min, + ratio_b=dur / f_b, ratio_0=dur / f_0, ratio_min=dur / f_min, koi=koi["kepoi_name"] if koi else None, + disposition=koi["koi_disposition"] if koi else None, + flags=("".join(("N" if num(koi["koi_fpflag_nt"]) else "", "S" if num(koi["koi_fpflag_ss"]) else "", + "C" if num(koi["koi_fpflag_co"]) else "", "E" if num(koi["koi_fpflag_ec"]) else "")) if koi else None), + koi_duration_h=num(koi["koi_duration"]) if koi else None, koi_impact=num(koi["koi_impact"]) if koi else None, + depth_ppm=num(r["tce_depth"]), n_tce=n_tce[kic], eb_period=ebs.get(kic)) + # natural readings: giant host, hot-star pulsator, catalogued EB, Robovetter flag, or a one- or two-cadence event to check + same_period = sum(1 for q in by_kic[kic] if abs(float(q["tce_period"]) - row["period"]) < 1e-3 * row["period"]) + if row["logg"] < 4.0: + row["reading"] = "giant host" + elif row["eb_period"]: + row["reading"] = "eclipsing binary (Kirk et al. 2016, P %.3f d)%s" % (row["eb_period"], ", shallow: blended" if (row["depth_ppm"] or 0) < 2000 else "") + elif row["n_tce"] >= 5: + row["reading"] = "star with %d events: variability" % row["n_tce"] + elif row["teff"] > 6500 and row["n_tce"] >= 3: + row["reading"] = "hot star with %d events: pulsator" % row["n_tce"] + elif same_period >= 2: + row["reading"] = "two events at one period: an eclipsing binary%s" % (", shallow: blended" if (row["depth_ppm"] or 0) < 2000 else "") + elif row["flags"] and row["flags"].strip(): + row["reading"] = "KOI false-positive flags %s" % row["flags"] + else: + row["reading"] = "unexplained by the catalogues: light curve to check" + rows.append(row) + good = [x for x in rows if x["snr"] >= escape_SNR] + ratios = np.array([x["ratio_b"] for x in good]) + print("%d DR25 TCEs with Berger et al. (2020) hosts, %d at S/N %.0f or more: duration over the floor at the fitted geometry, " + "percentiles 1/5/50/95: %s; below 1: %d; below %.1f: %d; below %.1f within the errors too: %d" + % (len(rows), len(good), escape_SNR, np.percentile(ratios, [1, 5, 50, 95]).round(2), int((ratios < 1).sum()), + escape_RATIO, int((ratios < escape_RATIO).sum()), escape_RATIO, + sum(1 for x in good if x["ratio_b"] < escape_RATIO and x["ratio_min"] < escape_RATIO))) + dwarfs = [x for x in good if x["logg"] >= 4.0] + print(" dwarfs (log g >= 4): %d, below 1: %d; giants: %d, below 1: %d" % ( + len(dwarfs), sum(1 for x in dwarfs if x["ratio_b"] < 1), len(good) - len(dwarfs), sum(1 for x in good if x["logg"] < 4.0 and x["ratio_b"] < 1))) + cands = sorted((x for x in good if x["ratio_b"] < escape_RATIO and x["ratio_min"] < escape_RATIO), key=lambda x: x["ratio_b"]) + readings = {} + for x in cands: + x["clean"] = x["reading"].startswith("unexplained") + readings[x["reading"].split(" (")[0].split(":")[0]] = readings.get(x["reading"].split(" (")[0].split(":")[0], 0) + 1 + print(" readings: " + "; ".join("%s %d" % kv for kv in sorted(readings.items(), key=lambda kv: -kv[1]))) + for x in (y for y in cands if y["logg"] >= 4.0): + print(" KIC %d TCE %d%s: P %.3f d, T14 %.2f h, depth %.0f ppm, b %.2f, k %.3f, S/N %.0f; host R %.2f M %.2f log g %.2f Teff %.0f; floor %.2f h " + "(b 0: %.2f, errors: %.2f); ratio %.2f (b 0: %.2f); %s %s; %s" % ( + x["kic"], x["tce"], " = %s" % x["koi"] if x["koi"] else "", x["period"], x["duration_h"], x["depth_ppm"] or 0, x["b"], x["k"], x["snr"], + x["R"], x["M"], x["logg"], x["teff"], x["floor_b"], x["floor_0"], x["floor_min"], x["ratio_b"], x["ratio_0"], + x["disposition"] or "not a KOI", "flags %s" % x["flags"] if x["flags"] else "", x["reading"])) + # TOIs at b = 0, mass from radius: M = R^1.25 below 1.5 R_sun, R^0.6 above + tois = [] + for r in csv.DictReader(open(os.path.join(escape_ROOT, "toi.csv"), encoding="utf-8", errors="replace")): + R, dur, prad = num(r["st_rad"]), num(r["pl_trandurh"]), num(r["pl_rade"]) + if not R or not dur or R <= 0: + continue + M = R ** 1.25 if R < 1.5 else 1.5 ** 1.25 * (R / 1.5) ** 0.6 + k = (prad or 0.0) * 6371.0 / (R * 695700.0) + f0 = escape_floor_hours(R, M, 0.0, k) + row = dict(toi=r["toi"], tic=r["tid"], disp=r["tfopwg_disp"], period=num(r["pl_orbper"]), duration_h=dur, R=R, M=M, k=k, + logg=num(r["st_logg"]), teff=num(r["st_teff"]), floor_0=f0, ratio_0=dur / f0) + # natural readings: giant host, published false positive, sub-day pulsator or contact binary, else check the light curve + if R >= 3.0: + row["reading"] = "giant host" + elif row["disp"] in ("FP", "FA"): + row["reading"] = "false positive or alarm (%s)" % row["disp"] + elif row["period"] and row["period"] < 1.0 and (row["teff"] or 0) > 6300: + row["reading"] = "sub-day period on a hot star: pulsator" + elif row["period"] and row["period"] < 1.0: + row["reading"] = "sub-day period: contact binary or pulsator" + else: + row["reading"] = "no impact parameter in the TOI table: a grazing geometry is not excluded" + tois.append(row) + rt = np.array([x["ratio_0"] for x in tois]) + print("%d TOIs with a host radius and a duration: duration over the b = 0 floor, percentiles 1/5/50/95: %s; below 1: %d; below %.1f: %d" + % (len(tois), np.percentile(rt, [1, 5, 50, 95]).round(2), int((rt < 1).sum()), escape_RATIO, int((rt < escape_RATIO).sum()))) + tc = sorted((x for x in tois if x["ratio_0"] < escape_RATIO), key=lambda x: x["ratio_0"]) + tr = {} + for x in tc: + tr[x["reading"]] = tr.get(x["reading"], 0) + 1 + print(" readings: " + "; ".join("%s %d" % kv for kv in sorted(tr.items(), key=lambda kv: -kv[1]))) + for x in [y for y in tc if y["reading"].startswith("no impact")][:12]: + print(" TOI %s (TIC %s, %s): P %s d, T14 %.2f h; host R %.2f (M %.2f, log g %s, Teff %s); floor %.2f h; ratio %.2f" % ( + x["toi"], x["tic"], x["disp"], "%.3f" % x["period"] if x["period"] else "-", x["duration_h"], x["R"], x["M"], + "%.2f" % x["logg"] if x["logg"] else "-", "%.0f" % x["teff"] if x["teff"] else "-", x["floor_0"], x["ratio_0"])) + json.dump(dict(n_tce=len(rows), n_good=len(good), snr=escape_SNR, ratio=escape_RATIO, + percentiles=dict(zip(("p1", "p5", "p50", "p95"), [float(v) for v in np.percentile(ratios, [1, 5, 50, 95])])), + below_1=int((ratios < 1).sum()), candidates=cands, n_toi=len(tois), + toi_percentiles=dict(zip(("p1", "p5", "p50", "p95"), [float(v) for v in np.percentile(rt, [1, 5, 50, 95])])), + toi_candidates=tc), open(core.results(escape_OUT), "w"), indent=1) + + +def escape_check(kic, tce_num): + """Kepler long-cadence flux and quality flags within two hours of each predicted epoch, normalised by quarter: lone flagged cadence or recurring transit.""" + import io + from astropy.io import fits + r = next(x for x in csv.DictReader(open(os.path.join(escape_ROOT, "dr25_tce.csv"))) if int(x["kepid"]) == kic and int(x["tce_plnt_num"]) == tce_num) + P, t0, dur = float(r["tce_period"]), float(r["tce_time0bk"]), float(r["tce_duration"]) / 24.0 + prefix = "kepler/public/lightcurves/%04d/%09d/" % (kic // 100000, kic) + b = core.get(escape_S3 + "?list-type=2&prefix=" + prefix, timeout=60, retries=2) + keys = re.findall(r"([^<]*_llc\.fits)", b.decode()) + T, F, Q = [], [], [] + for key in keys: + fb = core.get(escape_S3 + key, timeout=120, retries=2, soft=True) + if not fb: + continue + with fits.open(io.BytesIO(fb)) as h: + d = h[1].data + f = np.asarray(d["PDCSAP_FLUX"], float) + T.append(np.asarray(d["TIME"], float)) + F.append(f / np.nanmedian(f)) + Q.append(np.asarray(d["SAP_QUALITY"], int)) + T, F, Q = (np.concatenate(x) for x in (T, F, Q)) + ok = np.isfinite(T) & np.isfinite(F) + print("KIC %d TCE %d: P %.4f d, epoch BKJD %.3f, duration %.2f h; %d quarters, %d cadences" % (kic, tce_num, P, t0, dur * 24, len(keys), ok.sum())) + for n in range(int((np.nanmin(T[ok]) - t0) / P) - 1, int((np.nanmax(T[ok]) - t0) / P) + 2): + tc = t0 + n * P + near = ok & (np.abs(T - tc) < 2.0 / 24) + if not near.any(): + continue + print(" epoch %+d (BKJD %.3f): flux within 2 h %s; quality flags %s" % ( + n, tc, " ".join("%.3f" % v for v in F[near]), sorted({int(q) for q in Q[near]}))) + + +escape_SHAPES = "escape_toi_shapes.json" + + +def escape_trapezoid(x, delta, t14, t23, exp): + """Trapezoid transit (relative flux) at times x from mid-transit, averaged over exposure exp.""" + sub = np.linspace(-0.5, 0.5, 9) + xx = x[:, None] + exp[:, None] * sub[None, :] + a = np.abs(xx) + ramp = np.clip((t14 / 2 - a) / max((t14 - t23) / 2, 1e-6), 0.0, 1.0) + return 1 - delta * np.mean(ramp, axis=1) + + +def escape_fit_shape(x, f, e, exp, t14_guess, ratio=None): + """Least-squares trapezoid (depth, T14, T23/T14, shift) of folded transits, T23/T14 held at ratio when given: (chi2, parameters).""" + from scipy.optimize import least_squares + + def resid(p): + d, t14, r, s = p if ratio is None else (p[0], p[1], ratio, p[2]) + return (f - escape_trapezoid(x - s, d, t14, r * t14, exp)) / e + best = None + for t14 in (0.6 * t14_guess, t14_guess, 1.6 * t14_guess): + for r0 in ((0.1, 0.5, 0.8) if ratio is None else (ratio,)): + depth0 = max(1 - float(np.median(f[np.abs(x) < 0.3 * t14])), 1e-5) + p0 = [depth0, t14, r0, 0.0] if ratio is None else [depth0, t14, 0.0] + lo = [0, 0.2 * t14_guess, 0, -0.5 * t14_guess] if ratio is None else [0, 0.2 * t14_guess, -0.5 * t14_guess] + hi = [0.5, 5 * t14_guess, 0.98, 0.5 * t14_guess] if ratio is None else [0.5, 5 * t14_guess, 0.5 * t14_guess] + try: + r = least_squares(resid, np.clip(p0, np.array(lo) + 1e-9, np.array(hi) - 1e-9), bounds=(lo, hi)) + except ValueError: + continue + c = float(np.sum(r.fun ** 2)) + if best is None or c < best[0]: + best = (c, list(r.x) if ratio is None else [r.x[0], r.x[1], ratio, r.x[2]]) + return best + + +def escape_shapes(): + """Trapezoid fits of folded TESS transits of sub-floor TOIs without b: the smallest flat-bottom fraction within Delta chi2 9 bounds b and the slowest crossing; a V shape leaves a grazing chord.""" + d = json.load(open(core.results(escape_OUT))) + cands = [x for x in d["toi_candidates"] if x["reading"].startswith("no impact")] + eph = {r["toi"]: r for r in core.exoplanets("SELECT toi, pl_tranmid, pl_orbper, pl_trandurh, ra, dec FROM toi WHERE toi IN (%s)" + % ", ".join(x["toi"] for x in cands))} + + def one(x): + from astropy.io import fits + e = eph[x["toi"]] + P, t0, dur = float(e["pl_orbper"]), float(e["pl_tranmid"]) - 2457000.0, float(e["pl_trandurh"]) / 24.0 + half = max(3 * dur, 2.0 / 24) + X, F, E, EXP, used = [], [], [], [], [] + for s in core.sectors(float(e["ra"]), float(e["dec"])): + src, b = "spoc", core.spoc_bytes(int(x["tic"]), s) + if not b: + src, b = core.ffi_bytes(int(x["tic"]), s) + if not b: + continue + with fits.open(io.BytesIO(b)) as h: + exp = float(h[1].header.get("TIMEDEL") or 0.0208333) + t, f, _ = core.read(b) + if len(t) < 100: + continue + n_used = 0 + for n in range(int(np.floor((t.min() - t0) / P)), int(np.ceil((t.max() - t0) / P)) + 1): + dt = t - (t0 + n * P) + w = np.abs(dt) < half + side = w & (np.abs(dt) > max(1.5 * dur, dur + 0.5 / 24)) + if (side & (dt < 0)).sum() < 3 or (side & (dt > 0)).sum() < 3 or (w & (np.abs(dt) < 0.5 * dur)).sum() < 1: + continue + a, c = np.polyfit(dt[side], f[side], 1) + r = f[w] / (a * dt[w] + c) + sd = 1.4826 * np.median(np.abs(r[side[w]] - np.median(r[side[w]]))) + X.append(dt[w] * 24) + F.append(r) + E.append(np.full(w.sum(), max(sd, 1e-6))) + EXP.append(np.full(w.sum(), exp * 24)) + n_used += 1 + if n_used: + used.append((s, src, n_used, round(exp * 1440, 1))) + if not X: + return dict(toi=x["toi"], tic=x["tic"], sectors=[], verdict="no light curve") + X, F, E, EXP = (np.concatenate(v) for v in (X, F, E, EXP)) + best = escape_fit_shape(X, F, E, EXP, dur * 24) + vshape = escape_fit_shape(X, F, E, EXP, dur * 24, ratio=0.0) + out = dict(toi=x["toi"], tic=x["tic"], disp=x["disp"], P=P, T14_toi=dur * 24, R=x["R"], M=x["M"], floor_0=x["floor_0"], + sectors=used, n_points=int(len(X)), chi2=round(best[0], 1), dof=int(len(X) - 4), + depth=best[1][0], T14=best[1][1], ratio23=best[1][2], shift_h=best[1][3], dchi2_v=round(vshape[0] - best[0], 1)) + # smallest flat-bottom fraction within Delta chi2 9 + rmin = 0.0 + if out["dchi2_v"] > 9: + lo, hi = 0.0, out["ratio23"] + for _ in range(12): + mid = 0.5 * (lo + hi) + if escape_fit_shape(X, F, E, EXP, dur * 24, ratio=mid)[0] - best[0] > 9: + lo = mid + else: + hi = mid + rmin = hi + k = math.sqrt(max(out["depth"], 0.0)) + out["k"], out["ratio23_min"] = k, rmin + snr = out["depth"] / (float(np.median(E)) / math.sqrt(max(int(np.sum(np.abs(X - out["shift_h"]) < out["T14"] / 2)), 1))) + out["snr"] = round(snr, 1) + if rmin <= 0: + out["b_max"] = 1 + k + out["verdict"] = "grazing allowed by the light curve: a V shape within Delta chi2 %.1f of the best (T14 %.2f h, S/N %.0f)" % (out["dchi2_v"], out["T14"], snr) + else: + b2 = ((1 - k) ** 2 - rmin ** 2 * (1 + k) ** 2) / (1 - rmin ** 2) + out["b_max"] = math.sqrt(max(b2, 0.0)) + v_esc = math.sqrt(2 * escape_G * x["M"] * escape_MSUN / (x["R"] * escape_RSUN)) + chord = 2 * x["R"] * escape_RSUN * math.sqrt(max((1 + k) ** 2 - out["b_max"] ** 2, 0.0)) + out["v_over_esc"] = chord / (out["T14"] * 3600) / v_esc + out["verdict"] = ("flat-bottomed (T23/T14 %.2f, at least %.2f), b at most %.2f: the slowest crossing is %.2f of the escape speed (T14 %.2f h, S/N %.0f)" + % (out["ratio23"], rmin, out["b_max"], out["v_over_esc"], out["T14"], snr)) + print("TOI %s (TIC %s, %s): %s" % (x["toi"], x["tic"], x["disp"], out["verdict"]), flush=True) + return out + res = core.pmap(one, cands, threads=2) + json.dump(res, open(core.results(escape_SHAPES), "w"), indent=1) + + +def escape_shape_reading(f, c): + """Reading of TOI c from fit f: no transit below S/N 7, bound duration at b = 0, V shape (grazing), flat bottom within 1/RATIO of escape, else None.""" + if not f or f.get("verdict") == "no light curve": + return None + if (f.get("snr") or 0) < 7: + return "transit not recovered at the TOI ephemeris (S/N %.1f in %d sectors)" % (f.get("snr") or 0, len(f["sectors"])) + R = c["R"] + M = 10 ** (c["logg"] - 4.438) * R ** 2 if c.get("logg") else c["M"] + v_esc = math.sqrt(2 * escape_G * M * escape_MSUN / (R * escape_RSUN)) + k = f["k"] + + def speed(b): + return 2 * R * escape_RSUN * math.sqrt(max((1 + k) ** 2 - b ** 2, 0.0)) / (f["T14"] * 3600) / v_esc + told = "T14 %.2f h in the light curve against %.2f in the TOI table, host %.2f Rsun and %.2f Msun%s" % ( + f["T14"], f["T14_toi"], R, M, " from its log g" if c.get("logg") else "") + if speed(0.0) <= 1 / escape_RATIO: + return "the light curve's duration allows a bound orbit at any impact parameter: %s, %.2f of the escape speed at b 0" % (told, speed(0.0)) + if f["ratio23_min"] <= 0: + return "a V shape the light curve allows: a grazing geometry is not excluded (%s)" % told + if speed(f["b_max"]) <= 1 / escape_RATIO: + return "the light curve allows b up to %.2f, where the crossing is %.2f of the escape speed: a grazing geometry is not excluded (%s)" % ( + f["b_max"], speed(f["b_max"]), told) + return None + + +# Kepler events whose light curve escape_check read +escape_FOLLOWUP = {7292626: "a single cadence flagged for cosmic rays with the other epochs flat"} +escape_FAST = "flat-bottomed and faster than the escape speed at every impact parameter the light curve allows" + + +def escape_record(): + d = json.load(open(core.results(escape_OUT))) + clean = [x for x in d["candidates"] if x.get("clean")] + for x in d["candidates"]: + x["reading"] = escape_FOLLOWUP.get(x["kic"], x["reading"]) + shapes = {f["toi"]: f for f in json.load(open(core.results(escape_SHAPES)))} if os.path.exists(core.results(escape_SHAPES)) else {} + told = collections.Counter() + for x in d["toi_candidates"]: + f = shapes.get(x["toi"]) + if not x["reading"].startswith("no impact") or not f: + continue + if f.get("verdict") == "no light curve": + # no public light curve: the catalogue's reading stands + told["no TESS light curve in the public stores"] += 1 + continue + x["reading"] = escape_shape_reading(f, x) or escape_FAST + told[next((label for key, label in (("the light curve's duration", "a duration a bound orbit gives at any impact parameter"), + ("a V shape", "a V shape, which leaves a grazing chord"), + ("the light curve allows b", "a flat bottom whose largest allowed impact parameter keeps the crossing below the escape speed"), + ("transit not recovered", "no transit at the TOI ephemeris")) + if x["reading"].startswith(key)), "faster than the escape speed at every allowed impact parameter")] += 1 + shape_note = ("; the TESS light curves of the %d without an impact parameter: %s" % ( + sum(told.values()), ", ".join("%d %s" % (n, k) for k, n in told.most_common()))) if told else "" + core.record_search( + "escape_transits", "Transits faster than escape velocity", + archive="NASA Exoplanet Archive: Kepler DR25 TCE table, cumulative KOI table, TOI table; Berger et al. (2020) Gaia-Kepler stellar properties", + release="DR25; KOI and TOI tables as served", selection="every DR25 threshold-crossing event with a Berger et al. (2020) host; every TOI with a host radius", + code=os.path.abspath(__file__), entry="escape", n_targets=d["n_good"] + d["n_toi"], + params=dict(snr_min=d["snr"], ratio_flag=d["ratio"], mass_radius_toi="M = R^1.25 below 1.5 R_sun"), + null_summary="duration over the escape-velocity floor for the rest of the events: percentiles %s (Kepler), %s (TOI at b = 0)" % ( + d["percentiles"], d["toi_percentiles"]), + sensitivity="a full transit shorter than 0.8 of 37.5 min sqrt(1 - b^2) R^1.5 M^-0.5 at S/N 15", + ledger="Transits faster than escape velocity", + result="%d Kepler events at S/N %.0f: %d below the floor at the fitted geometry, %d below %.1f of it within the host errors as well, " + "%d of those KOI candidates without centroid, eclipse or ephemeris flags; %d TOIs: %d below %.1f of the b = 0 floor%s" % ( + d["n_good"], d["snr"], d["below_1"], len(d["candidates"]), d["ratio"], len(clean), d["n_toi"], + len(d["toi_candidates"]), d["ratio"], shape_note)) + core.clear_targets("escape_transits") + rows = [dict(target="kic:%d" % x["kic"], stat=x["ratio_b"], unit="transit duration over the escape-velocity floor", + vet=x["reading"] + ((" (KOI %s, %s)" % (x["koi"], x["disposition"])) if x["koi"] else ""), + note="TCE %d, P %.3f d, T14 %.2f h, depth %.0f ppm, b %.2f, host R %.2f M %.2f log g %.2f, %d events on the star" % ( + x["tce"], x["period"], x["duration_h"], x["depth_ppm"] or 0, x["b"], x["R"], x["M"], x["logg"], x["n_tce"])) + for x in d["candidates"]] + rows += [dict(target="tic:%s" % x["tic"], stat=x["ratio_0"], unit="transit duration over the escape-velocity floor at b = 0", + vet=None if x["reading"] == escape_FAST else "%s (TOI %s, %s)" % (x["reading"], x["toi"], x["disp"]), + note="%sP %s d, T14 %.2f h, host R %.2f, M %.2f from the radius" % ( + "%s (TOI %s, %s); " % (x["reading"], x["toi"], x["disp"]) if x["reading"] == escape_FAST else "", + "%.3f" % x["period"] if x["period"] else "-", x["duration_h"], x["R"], x["M"])) + for x in d["toi_candidates"]] + core.record_targets("escape_transits", rows) + print("recorded %d candidates" % len(rows)) + + +def escape_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + if mode == "check": + escape_check(int(sys.argv[2]), int(sys.argv[3]) if len(sys.argv) > 3 else 1) + return + {"fetch": escape_fetch, "analyse": escape_analyse, "shapes": escape_shapes, "record": escape_record}[mode]() + + +aimed_DOC = r"""Aimed transits: excess of Kepler KOIs at b below 0.05 and 0.1 against DR25 injection fractions, all planets and the habitable zone. + + python -I seti.py transits aimed analyse + python -I seti.py transits aimed record""" + +aimed_ROOT = os.environ.get("AIMED_ROOT", core.data("aimed_transits")) +aimed_INJ = "https://exoplanetarchive.ipac.caltech.edu/data/KeplerData/Simulated/kplr_dr25_inj1_plti.txt" +aimed_OUT = "aimed_transits.json" +aimed_SNR, aimed_BERR = 20.0, 0.1 +aimed_BINS = ((0.0, 0.05), (0.05, 0.1), (0.1, 0.5)) + + +def aimed_analyse(): + from astropy.io import ascii as asc + os.makedirs(aimed_ROOT, exist_ok=True) + p = os.path.join(aimed_ROOT, "kplr_dr25_inj1_plti.txt") + if not os.path.exists(p): + open(p, "wb").write(core.get(aimed_INJ, timeout=900, retries=2)) + inj = asc.read(p, format="ipac") + rec = inj[(inj["Recovered"] == 1) & (inj["EB_injection"] == 0) & (inj["Offset_from_source"] == 0)] + r_b = np.array(rec["r_b"], float) + i_b = np.array(rec["i_b"], float) + mes = np.array(rec["Measured_MES"], float) + ok = np.isfinite(r_b) & np.isfinite(i_b) & (mes >= aimed_SNR) + print("%d injected planets on their own stars, %d recovered, %d with fitted b at MES %.0f or more; injected b: %.3f below 0.05, %.3f below 0.1, " + "%.3f in 0.1-0.5 (a uniform population gives 0.05, 0.10, 0.40)" % ( + len(inj), len(rec), ok.sum(), aimed_SNR, np.mean(i_b[ok] < 0.05), np.mean(i_b[ok] < 0.1), np.mean((i_b[ok] >= 0.1) & (i_b[ok] < 0.5)))) + inj_frac = {str(b): float(np.mean((r_b[ok] >= b[0]) & (r_b[ok] < b[1]))) for b in aimed_BINS} + print(" recovered (fitted) b of those: " + ", ".join("%s: %.3f" % kv for kv in inj_frac.items())) + kois = [] + for r in csv.DictReader(open(os.path.join(escape_ROOT, "koi_cumulative.csv"))): + b, e1, e2, snr = num(r["koi_impact"]), num(r["koi_impact_err1"]), num(r["koi_impact_err2"]), num(r["koi_model_snr"]) + if b is None or snr is None or r["koi_disposition"] not in ("CANDIDATE", "CONFIRMED"): + continue + err = max(abs(e1 or 9), abs(e2 or 9)) + kois.append(dict(koi=r["kepoi_name"], kic=int(r["kepid"]), b=b, err=err, snr=snr, disp=r["koi_disposition"], insol=num(r["koi_insol"]), + prad=num(r["koi_prad"]), period=num(r["koi_period"]), srad=num(r["koi_srad"]))) + # no error cut: one pipeline fitted both, and a cut selects the best-constrained central and grazing fits + good = [k for k in kois if k["snr"] >= aimed_SNR] + hz = [k for k in good if k["insol"] is not None and 0.32 <= k["insol"] <= 1.78] + out = dict(n_inj=int(ok.sum()), inj_frac=inj_frac, n_koi=len(kois), n_good=len(good), n_hz=len(hz), samples={}) + for name, sample in (("all", good), ("habitable zone", hz), ("other", [k for k in good if k not in hz]), + ("all, b error below %.1f" % aimed_BERR, [k for k in good if k["err"] < aimed_BERR])): + bs = np.array([k["b"] for k in sample]) + counts = {str(b): int(((bs >= b[0]) & (bs < b[1])).sum()) for b in aimed_BINS} + rows = {} + for b in aimed_BINS: + f = inj_frac[str(b)] + expected = len(sample) * f + obs = counts[str(b)] + # binomial significance of the count against the injections' fraction + sig = (obs - expected) / math.sqrt(expected * (1 - f)) if expected > 0 else float("nan") + rows[str(b)] = dict(observed=obs, expected=expected, sigma=sig) + out["samples"][name] = dict(n=len(sample), counts=counts, tests=rows) + print("%s: %d planets at S/N %.0f; against the injections' fractions: %s" % ( + name, len(sample), aimed_SNR, "; ".join("%s: %d observed, %.1f expected (%+.1f sigma)" % (k, v["observed"], v["expected"], v["sigma"]) for k, v in rows.items()))) + low = sorted((k for k in hz if k["b"] < 0.05), key=lambda k: k["b"]) + print("habitable-zone planets below b 0.05: " + ", ".join("%s (b %.3f +- %.3f, %.1f R_earth, %.0f d)" % (k["koi"], k["b"], k["err"], k["prad"] or 0, k["period"] or 0) for k in low)) + out["hz_low"] = low + # b errors of the whole sample's central fits + errs = np.array([k["err"] for k in good if k["b"] < 0.05]) + out["low_all"] = dict(n=len(errs), median_err=float(np.median(errs)), above_013=int((errs > 0.13).sum())) + print("all planets below b 0.05: %d, median b error %.2f, %d with errors above 0.13" % (len(errs), np.median(errs), (errs > 0.13).sum())) + json.dump(out, open(core.results(aimed_OUT), "w"), indent=1) + + +def aimed_record(): + d = json.load(open(core.results(aimed_OUT))) + s = d["samples"] + core.record_search( + "aimed_transits", "Aimed transits", archive="NASA Exoplanet Archive: cumulative KOI table; Kepler DR25 injected-planet recoveries (kplr_dr25_inj1_plti)", + release="cumulative table as served; DR25 injections", selection="KOI candidates and confirmed planets at S/N 20 or more", + code=os.path.abspath(__file__), entry="aimed", n_targets=d["n_good"], params=dict(snr_min=aimed_SNR, bins=aimed_BINS), + null_summary="the fitted impact parameters of %d recovered injected planets with uniform b at MES 20 or more: fractions %s" % (d["n_inj"], d["inj_frac"]), + sensitivity="an excess at b below 0.05 of a few per cent of the sample, 3 sigma at about 35 planets", + ledger="Aimed transits", + # the constrained-b test decides; the whole sample's excess is lower-bound fits with large errors + result="no excess of central transits among planets whose impact parameter is measured to %.1f; " + "the excess below 0.05 in the whole sample is carried by fits at b's lower bound, %d of its %d with errors " + "above 0.13 (median %.2f); " % (aimed_BERR, d["low_all"]["above_013"], d["low_all"]["n"], d["low_all"]["median_err"]) + + "; ".join("%s: %d planets, b below 0.05: %d against %.1f (%+.1f sigma), 0.05-0.1: %d against %.1f (%+.1f sigma), 0.1-0.5: %d against %.1f (%+.1f sigma)" % ( + name, v["n"], *(v["tests"][str(b)][k] for b in aimed_BINS for k in ("observed", "expected", "sigma"))) + for name, v in sorted(s.items(), key=lambda kv: not kv[0].startswith("all, b error")))) + core.clear_targets("aimed_transits") + core.record_targets("aimed_transits", [dict(target="koi:" + k["koi"], stat=k["b"], unit="impact parameter", vet="habitable-zone planet at b below 0.05, within the fit's own pile-up", + note="b %.3f +- %.3f, %.1f R_earth, %.0f d" % (k["b"], k["err"], k["prad"] or 0, k["period"] or 0)) for k in d["hz_low"]]) + print("recorded") + + +def aimed_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"analyse": aimed_analyse, "record": aimed_record}[mode]() + + +synchronous_DOC = r"""Stellar-synchronous orbits beyond tidal reach: planets past 10 d with P_orb at 1, 2 or 1/2 P_rot within 0.02 against shuffled rotation periods, and spot phase locking at the transits. + + python -I seti.py transits synchronous analyse + python -I seti.py transits synchronous lock [KOI ...] + python -I seti.py transits synchronous record""" + +synchronous_ROOT = os.environ.get("SYNCHRONOUS_ROOT", core.data("synchronous")) +synchronous_OUT = "synchronous_orbits.json" +synchronous_PMIN, synchronous_TOL, synchronous_TEFF_BIN, synchronous_SHUFFLES = 10.0, 0.02, 500.0, 2000 + + +def synchronous_load(): + """KOIs with a rotation period: McQuillan et al. (2013) unflagged first, Mazeh et al. (2015) for the rest.""" + from astropy.table import Table + os.makedirs(synchronous_ROOT, exist_ok=True) + kp = os.path.join(synchronous_ROOT, "koi_cumulative.csv") + if not os.path.exists(kp): + rows = core.exoplanets("SELECT kepid, kepoi_name, koi_disposition, koi_period, koi_time0bk, koi_duration, koi_depth, koi_prad, " + "koi_steff, koi_srad, koi_smass, koi_count FROM cumulative") + with open(kp, "w", newline="") as f: + w = csv.DictWriter(f, fieldnames=list(rows[0].keys())) + w.writeheader() + w.writerows(rows) + rot = {} + for cat, name in (("J/ApJ/801/3", "mazeh2015"), ("J/ApJ/775/L11", "mcquillan2013")): + p = os.path.join(synchronous_ROOT, cat.replace("/", "_") + "_0.ecsv") + if not os.path.exists(p): + core.vizier(cat)[0].write(p, format="ascii.ecsv", overwrite=True) + t = Table.read(p, format="ascii.ecsv") + for r in t: + prot = num(r["Prot"]) + if not prot or prot <= 0: + continue + if name == "mcquillan2013" and str(r["Flag"]) not in ("--", "", "None"): + continue + if name == "mazeh2015" and str(r["D"]) != "1": + continue + rvar = num(r["Rvar"]) + if name == "mazeh2015" and rvar: + rvar = rvar / 1000.0 # ppm there, mmag in McQuillan + rot[int(r["KIC"])] = dict(prot=prot, e_prot=num(r["e_Prot"]), rvar=rvar, teff_rot=num(r["Teff"]), source=name) + kois = [] + for r in csv.DictReader(open(kp)): + if r["koi_disposition"] == "FALSE POSITIVE" or not num(r["koi_period"]): + continue + s = rot.get(int(r["kepid"])) + if not s: + continue + kois.append(dict(kic=int(r["kepid"]), koi=r["kepoi_name"], disposition=r["koi_disposition"], P=float(r["koi_period"]), t0=num(r["koi_time0bk"]), + dur=num(r["koi_duration"]), depth=num(r["koi_depth"]), prad=num(r["koi_prad"]), teff=num(r["koi_steff"]) or s["teff_rot"], **s)) + return kois + + +def synchronous_deltas(P, prot): + return dict(d1=abs(P / prot - 1), d2=abs(P / (2 * prot) - 1), dh=abs(2 * P / prot - 1)) + + +def synchronous_analyse(): + kois = synchronous_load() + far = [k for k in kois if k["P"] >= synchronous_PMIN] + for k in kois: + k.update(synchronous_deltas(k["P"], k["prot"])) + k["dmin"] = min(k["d1"], k["d2"], k["dh"]) + k["match"] = k["dmin"] < synchronous_TOL + hits = [k for k in far if k["match"]] + # null: rotation periods shuffled within temperature bins, orbital periods fixed + rng = np.random.default_rng(3) + teff = np.array([k["teff"] or 5500.0 for k in far]) + prot = np.array([k["prot"] for k in far]) + P = np.array([k["P"] for k in far]) + bins = np.floor(teff / synchronous_TEFF_BIN).astype(int) + counts = [] + for _ in range(synchronous_SHUFFLES): + sh = prot.copy() + for b in np.unique(bins): + idx = np.where(bins == b)[0] + sh[idx] = prot[rng.permutation(idx)] + d = np.minimum.reduce([np.abs(P / sh - 1), np.abs(P / (2 * sh) - 1), np.abs(2 * P / sh - 1)]) + counts.append(int(np.sum(d < synchronous_TOL))) + counts = np.array(counts) + print("%d KOIs with rotation periods (%d from McQuillan et al. 2013, %d from Mazeh et al. 2015), %d with P_orb of %.0f d or more: %d within %.2f of 1:1, 2:1 or 1:2 " + "against %.1f +- %.1f with the rotation periods shuffled within %.0f K bins (p %.3f)" % ( + len(kois), sum(1 for k in kois if k["source"] == "mcquillan2013"), sum(1 for k in kois if k["source"] == "mazeh2015"), len(far), synchronous_PMIN, + len(hits), synchronous_TOL, counts.mean(), counts.std(), synchronous_TEFF_BIN, float(np.mean(counts >= len(hits))))) + for k in sorted(hits, key=lambda k: k["dmin"]): + ratio = "1:1" if k["d1"] == k["dmin"] else ("2:1" if k["d2"] == k["dmin"] else "1:2") + print(" %-10s %s KIC %d: P_orb %.3f d, P_rot %.3f +- %s d (%s, amplitude %s mmag), %s off by %.4f; depth %s ppm, R_p %s, Teff %s" % ( + k["koi"], k["disposition"][:9], k["kic"], k["P"], k["prot"], "%.3f" % k["e_prot"] if k["e_prot"] else "-", k["source"], "%.2f" % k["rvar"] if k["rvar"] else "-", + ratio, k["dmin"], "%.0f" % k["depth"] if k["depth"] else "-", "%.2f" % k["prad"] if k["prad"] else "-", "%.0f" % k["teff"] if k["teff"] else "-")) + near = [k for k in kois if k["P"] < synchronous_PMIN and k["match"]] + print(" inside %.0f d, where tides can synchronise: %d of %d match" % (synchronous_PMIN, len(near), len(kois) - len(far))) + json.dump(dict(n=len(kois), n_far=len(far), n_hits=len(hits), null_mean=float(counts.mean()), null_sd=float(counts.std()), p=float(np.mean(counts >= len(hits))), + kois=kois, params=dict(pmin=synchronous_PMIN, tol=synchronous_TOL, teff_bin=synchronous_TEFF_BIN, shuffles=synchronous_SHUFFLES)), + open(core.results(synchronous_OUT), "w"), indent=0) + + +def synchronous_curve(kic): + """Kepler long-cadence light curve, quarters concatenated and each normalised.""" + cache = os.path.join(synchronous_ROOT, "lc") + os.makedirs(cache, exist_ok=True) + p = os.path.join(cache, "%d.npz" % kic) + if os.path.exists(p): + z = np.load(p) + return z["t"], z["f"] + ts, fs = [], [] + for key in core.kepler_keys(kic, short=False): + try: + t, f, _ = core.read(core.get(escape_S3 + key, timeout=300, retries=2)) + except Exception as e: + print(" KIC %d %s: %s" % (kic, key.split("/")[-1], str(e)[:60]), flush=True) + continue + ts.append(t) + fs.append(f) + if not ts: + return np.array([]), np.array([]) + t, f = np.concatenate(ts), np.concatenate(fs) + o = np.argsort(t) + t, f = t[o], f[o] + np.savez(p, t=t, f=f) + return t, f + + +def synchronous_phases(t, f, prot, epochs, mask=None, nrot=3.0): + """Phase (cycles), amplitude and point count of a sinusoid at prot in nrot-rotation windows about each epoch, cadences within mask of a transit excluded.""" + out = [] + for e in epochs: + w = (t > e - nrot * prot / 2) & (t < e + nrot * prot / 2) + if mask is not None: + w &= mask + if w.sum() < 0.5 * nrot * prot / (29.4 / 1440): + out.append(None) + continue + ph = 2 * np.pi * (t[w] - e) / prot + A = np.column_stack([np.ones(w.sum()), np.sin(ph), np.cos(ph), (t[w] - e) / prot]) + c = np.linalg.lstsq(A, f[w], rcond=None)[0] + out.append(dict(phase=float((math.atan2(c[2], c[1]) / (2 * np.pi)) % 1.0), amp=float(math.hypot(c[1], c[2])), n=int(w.sum()))) + return out + + +def synchronous_lock(names): + d = json.load(open(core.results(synchronous_OUT))) + hits = [k for k in d["kois"] if k["match"] and k["P"] >= d["params"]["pmin"]] + if names: + hits = [k for k in hits if k["koi"] in names or k["koi"].split(".")[0] in names or str(k["kic"]) in names] + rng = np.random.default_rng(5) + others = [k for k in d["kois"] if not k["match"]] + out = [] + for k in hits: + t, f = synchronous_curve(k["kic"]) + if not len(t): + print("%s: no light curve" % k["koi"]) + continue + n0 = math.ceil((t.min() - k["t0"]) / k["P"]) + epochs = [k["t0"] + n * k["P"] for n in range(n0, n0 + int((t.max() - t.min()) / k["P"]) + 1)] + epochs = [e for e in epochs if t.min() < e < t.max()] + mask = np.ones(len(t), bool) + for e in epochs: + mask &= np.abs(t - e) > 1.5 * (k["dur"] or 3.0) / 24 + ph = synchronous_phases(t, f, k["prot"], epochs, mask) + have = [(e, p) for e, p in zip(epochs, ph) if p] + if len(have) < 6: + print("%s: %d windows with data" % (k["koi"], len(have))) + continue + phases = np.array([p["phase"] for _, p in have]) + # scatter about the circular mean and drift over the baseline + mean = math.atan2(np.sin(2 * np.pi * phases).mean(), np.cos(2 * np.pi * phases).mean()) / (2 * np.pi) + dev = ((phases - mean + 0.5) % 1.0) - 0.5 + scatter = float(np.sqrt(np.mean(dev ** 2))) + # the same for the 40 nearest-period rotators at this planet's epochs + pool = sorted(others, key=lambda o: abs(math.log(o["prot"] / k["prot"])))[:40] + ctrl = [] + for o in [pool[i] for i in rng.choice(len(pool), min(8, len(pool)), replace=False)]: + to, fo = synchronous_curve(o["kic"]) + if not len(to): + continue + pho = synchronous_phases(to, fo, o["prot"], [e for e in epochs if to.min() < e < to.max()]) + pp = np.array([p["phase"] for p in pho if p]) + if len(pp) < 6: + continue + m = math.atan2(np.sin(2 * np.pi * pp).mean(), np.cos(2 * np.pi * pp).mean()) / (2 * np.pi) + ctrl.append(float(np.sqrt(np.mean((((pp - m + 0.5) % 1.0) - 0.5) ** 2)))) + print("%s KIC %d: P_orb %.3f d, P_rot %.3f d: %d transit windows over %.0f d, rotational phase at the transits scatters by %.3f cycle (amplitude median %.4f) " + "against %s for %d rotators at like periods" % (k["koi"], k["kic"], k["P"], k["prot"], len(have), have[-1][0] - have[0][0], scatter, + float(np.median([p["amp"] for _, p in have])), ", ".join("%.3f" % c for c in sorted(ctrl)) or "-", len(ctrl))) + out.append(dict(koi=k["koi"], kic=k["kic"], P=k["P"], prot=k["prot"], n_windows=len(have), span=have[-1][0] - have[0][0], scatter=scatter, + amp=float(np.median([p["amp"] for _, p in have])), controls=ctrl, phases=[(float(e), p["phase"], p["amp"]) for e, p in have])) + json.dump(out, open(core.results("synchronous_lock.json"), "w"), indent=0) + + +def synchronous_record(): + d = json.load(open(core.results(synchronous_OUT))) + lp = core.results("synchronous_lock.json") + locks = {x["koi"]: x for x in json.load(open(lp))} if os.path.exists(lp) else {} + hits = [k for k in d["kois"] if k["match"] and k["P"] >= d["params"]["pmin"]] + core.record_search( + "synchronous_orbits", "Stellar-synchronous orbits beyond the tidal radius", archive="cumulative KOI table (NASA Exoplanet Archive); KOI rotation periods of McQuillan et al. (2013, J/ApJ/775/L11) and Mazeh et al. (2015, J/ApJ/801/3)", + selection="KOI candidates and confirmed planets whose host has a rotation period (%d), those with P_orb of %.0f d or more (%d)" % (d["n"], d["params"]["pmin"], d["n_far"]), + code=os.path.abspath(__file__), entry="synchronous", n_targets=d["n"], params=d["params"], + null_summary="rotation periods shuffled among the hosts within %.0f K bins %d times: %.1f +- %.1f matches" % (d["params"]["teff_bin"], d["params"]["shuffles"], d["null_mean"], d["null_sd"]), + sensitivity="P_orb within %.0f per cent of P_rot, 2 P_rot or P_rot/2; the phase of the rotational modulation at the transits to about 0.05 cycle over four years" % (100 * d["params"]["tol"]), + ledger="Stellar-synchronous orbits beyond the tidal radius", + result="%d matches within %.2f beyond %.0f d against %.1f +- %.1f shuffled (p %.2f)%s" % ( + d["n_hits"], d["params"]["tol"], d["params"]["pmin"], d["null_mean"], d["null_sd"], d["p"], + ("; phase at the transits: " + "; ".join("%s %.3f cycle against %s" % (x["koi"], x["scatter"], "-".join("%.2f" % c for c in (min(x["controls"]), max(x["controls"]))) if x["controls"] else "no controls") for x in locks.values())) if locks else "")) + core.clear_targets("synchronous_orbits") + core.record_targets("synchronous_orbits", [dict(target="koi:%s" % k["koi"], stat=k["dmin"], unit="smallest |P_orb/P_rot - 1| over 1:1, 2:1 and 1:2", + vet=("beyond %.0f d, matched%s" % (d["params"]["pmin"], (", phase scatter %.3f cycle" % locks[k["koi"]]["scatter"]) if k["koi"] in locks else "")) if k in hits + else ("inside %.0f d, where tides synchronise" % d["params"]["pmin"] if k["match"] else None), + note="P_orb %.3f d, P_rot %.3f d (%s), Teff %s" % (k["P"], k["prot"], k["source"], "%.0f" % k["teff"] if k["teff"] else "-")) for k in d["kois"]]) + print("recorded %d KOIs" % d["n"]) + + +def synchronous_cli(): + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + if mode == "lock": + synchronous_lock(sys.argv[2:]) + else: + {"analyse": synchronous_analyse, "record": synchronous_record}[mode]() + + +lightweight_DOC = r"""Opaque lightweight eclipsers: Gaia DR3 eclipses deeper than 0.75 mag under 30 d whose RVS amplitude is below 0.1 of the least stellar-mass floor. + + python -I seti.py transits lightweight fetch + python -I seti.py transits lightweight analyse + python -I seti.py transits lightweight record""" + +lightweight_ROOT = os.environ.get("LIGHTWEIGHT_ROOT", core.data("eclipsers")) +lightweight_OUT = "lightweight_eclipsers.json" +lightweight_DEPTH, lightweight_PMAX, lightweight_NRV, lightweight_RATIO, lightweight_CYCLES = 0.75, 30.0, 10, 0.1, 5.0 +lightweight_MS = ((3000, 0.25, 0.12), (3500, 0.42, 0.37), (4000, 0.60, 0.60), (4500, 0.70, 0.70), (5000, 0.80, 0.82), (5500, 0.90, 0.92), (5800, 1.00, 1.00), + (6000, 1.10, 1.08), (6500, 1.32, 1.25), (7000, 1.55, 1.45), (7500, 1.75, 1.65), (8000, 1.95, 1.85), (9000, 2.3, 2.2), (10000, 2.7, 2.6)) + + +def lightweight_fetch(): + """Deep short-period vari_eclipsing_binary systems, then their gaia_source rows in id batches.""" + os.makedirs(lightweight_ROOT, exist_ok=True) + eb = core.tap("gaia", "SELECT source_id, frequency, model_type, derived_primary_ecl_depth, derived_primary_ecl_depth_error, derived_primary_ecl_duration, " + "derived_secondary_ecl_depth, derived_secondary_ecl_duration, reduced_chi2, global_ranking FROM gaiadr3.vari_eclipsing_binary " + "WHERE derived_primary_ecl_depth > %g AND frequency > %g" % (lightweight_DEPTH, 1.0 / lightweight_PMAX), maxrec=400000, timeout=1800) + print("%d eclipsers deeper than %.2f mag under %.0f d" % (len(eb), lightweight_DEPTH, lightweight_PMAX), flush=True) + src = core.tap_by_ids("gaia", [r["source_id"] for r in eb], + "SELECT source_id, ra, dec, phot_g_mean_mag, bp_rp, grvs_mag, teff_gspphot, ruwe, non_single_star, rv_nb_transits, rv_time_duration, " + "rv_amplitude_robust, rv_renormalised_gof, rv_chisq_pvalue, vbroad, radial_velocity, radial_velocity_error FROM gaiadr3.gaia_source " + "WHERE rv_nb_transits >= %d AND source_id IN (%%s)" % lightweight_NRV) + rows = [] + for r in eb: + s = src.get(str(r["source_id"])) + if s: + rows.append(dict(r, **s)) + json.dump(rows, open(os.path.join(lightweight_ROOT, "gaia_deep_eclipsers.json"), "w")) + print("%d with %d or more RVS transits" % (len(rows), lightweight_NRV), flush=True) + + +def lightweight_ms(teff): + """Main-sequence radius and mass (solar) at a temperature, interpolated.""" + t, r, m = zip(*lightweight_MS) + return float(np.interp(teff, t, r)), float(np.interp(teff, t, m)) + + +def lightweight_analyse(): + rows = json.load(open(os.path.join(lightweight_ROOT, "gaia_deep_eclipsers.json"))) + out = [] + for r in rows: + P = 1.0 / float(r["frequency"]) + depth, A, n, span, teff = num(r["derived_primary_ecl_depth"]), num(r["rv_amplitude_robust"]), int(num(r["rv_nb_transits"]) or 0), num(r["rv_time_duration"]), num(r["teff_gspphot"]) + if P > lightweight_PMAX or depth is None or depth < lightweight_DEPTH or A is None or n < lightweight_NRV or not teff: + continue + f = 1 - 10 ** (-0.4 * depth) # fraction of light lost at mid-eclipse + R1, M1 = lightweight_ms(teff) + R2 = math.sqrt(f) * R1 # dark body covering that fraction of the disc + teff2 = float(np.interp(R2, [x[1] for x in lightweight_MS], [x[0] for x in lightweight_MS])) + M2 = lightweight_ms(teff2)[1] # least natural mass at that radius + G, Msun = 6.674e-11, 1.989e30 + K_min = (2 * math.pi * G / (P * 86400.0)) ** (1 / 3) * M2 * Msun / ((M1 + M2) * Msun) ** (2 / 3) / 1000.0 + ratio = (A / 2) / K_min + out.append(dict(source_id=r["source_id"], ra=float(r["ra"]), dec=float(r["dec"]), P=P, depth=depth, f=f, teff=teff, R1=R1, M1=M1, R2=R2, M2=M2, K_min=K_min, A=A, n_rv=n, span=span, + cycles=(span or 0) / P, ratio=ratio, G=num(r["phot_g_mean_mag"]), grvs=num(r["grvs_mag"]), bprp=num(r["bp_rp"]), ruwe=num(r["ruwe"]), vbroad=num(r["vbroad"]), + gof=num(r["rv_renormalised_gof"]), p_const=num(r["rv_chisq_pvalue"]), model=r["model_type"], rank=num(r["global_ranking"]), chi2=num(r["reduced_chi2"]), + nss=int(num(r["non_single_star"]) or 0), secondary=num(r["derived_secondary_ecl_depth"]))) + ratios = np.array([x["ratio"] for x in out]) + cand = [x for x in out if x["ratio"] < lightweight_RATIO and x["cycles"] >= lightweight_CYCLES] + print("%d eclipsers deeper than %.2f mag under %.0f d with %d or more RVS transits: observed over least semi-amplitude median %.2f, 10th percentile %.2f; %d below %.1f with %.0f or more cycles spanned" % ( + len(out), lightweight_DEPTH, lightweight_PMAX, lightweight_NRV, np.median(ratios), np.percentile(ratios, 10), len(cand), lightweight_RATIO, lightweight_CYCLES)) + for x in sorted(cand, key=lambda x: x["ratio"])[:25]: + print(" Gaia DR3 %s (%.4f %+.4f): P %.3f d, depth %.2f mag (%.0f per cent), Teff %.0f K, R1 %.2f M1 %.2f, eclipser R %.2f Rsun needs %.2f Msun and K %.1f km/s; RVS peak to peak %.1f km/s over %d transits (%.0f cycles), ratio %.3f; G %.1f G_RVS %.1f vbroad %s RV gof %s p %s; model %s rank %.2f%s" % ( + x["source_id"], x["ra"], x["dec"], x["P"], x["depth"], 100 * x["f"], x["teff"], x["R1"], x["M1"], x["R2"], x["M2"], x["K_min"], x["A"], x["n_rv"], x["cycles"], x["ratio"], x["G"] or 0, x["grvs"] or 0, + "%.0f" % x["vbroad"] if x["vbroad"] else "-", "%.1f" % x["gof"] if x["gof"] is not None else "-", "%.2f" % x["p_const"] if x["p_const"] is not None else "-", x["model"], x["rank"] or 0, + ", secondary %.2f mag" % x["secondary"] if x["secondary"] else "")) + json.dump(dict(n=len(out), n_cand=len(cand), ratio_median=float(np.median(ratios)) if len(ratios) else None, rows=out, + params=dict(depth=lightweight_DEPTH, pmax=lightweight_PMAX, nrv=lightweight_NRV, ratio=lightweight_RATIO, cycles=lightweight_CYCLES)), open(core.results(lightweight_OUT), "w"), indent=0) + + +def lightweight_record(): + d = json.load(open(core.results(lightweight_OUT))) + cand = [x for x in d["rows"] if x["ratio"] < d["params"]["ratio"] and x["cycles"] >= d["params"]["cycles"]] + core.record_search( + "lightweight_eclipsers", "Opaque lightweight eclipsers", archive="Gaia DR3 vari_eclipsing_binary and gaia_source (RVS)", release="Gaia DR3", + selection="eclipses deeper than %.2f mag at periods under %.0f d with %d or more RVS transits (%d)" % (d["params"]["depth"], d["params"]["pmax"], d["params"]["nrv"], d["n"]), + code=os.path.abspath(__file__), entry="lightweight", n_targets=d["n"], params=d["params"], + null_summary="the ratio of the observed RVS semi-amplitude to the least a natural eclipser of the depth's size allows: median %.2f over the sample" % (d["ratio_median"] or 0), + sensitivity="a ratio below %.1f: an eclipser of stellar size with under a tenth of the least stellar mass's pull" % d["params"]["ratio"], ledger="Opaque lightweight eclipsers", + result="%d of %d below %.1f with %.0f or more cycles spanned%s" % (len(cand), d["n"], d["params"]["ratio"], d["params"]["cycles"], + (": " + "; ".join("Gaia DR3 %s (P %.2f d, %.0f per cent, ratio %.3f)" % (x["source_id"], x["P"], 100 * x["f"], x["ratio"]) for x in sorted(cand, key=lambda x: x["ratio"])[:8])) if cand else "")) + core.clear_targets("lightweight_eclipsers") + core.record_targets("lightweight_eclipsers", [dict(target="gaia_dr3:%s" % x["source_id"], stat=x["ratio"], unit="observed RVS semi-amplitude over the least a natural eclipser allows", + vet=None, note="P %.3f d, depth %.2f mag, Teff %.0f K, K_min %.1f km/s, RVS peak to peak %.1f over %d transits" % (x["P"], x["depth"], x["teff"], x["K_min"], x["A"], x["n_rv"])) for x in d["rows"]]) + print("recorded %d eclipsers" % d["n"]) + + +def lightweight_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": lightweight_fetch, "analyse": lightweight_analyse, "record": lightweight_record}[mode]() + + +roche_DOC = r"""Transits inside the fluid Roche limit: Gaia main-sequence variables faster than 8.6 cycles a day where a grey box beats a sinusoid in G, BP and RP or ZTF g and r. + + python -I seti.py transits roche select + python -I seti.py transits roche fetch_gaia [--threads 4] + python -I seti.py transits roche fetch [--threads 4] (ZTF, for the box-like ones) + python -I seti.py transits roche analyse [--procs N] [--nsim 2000] (each band against its sinusoid null) + python -I seti.py transits roche ztf [--threads 4] (the grey boxes beyond the null, in ZTF g and r) + python -I seti.py transits roche record""" + +roche_ROOT = os.environ.get("ROCHE_ROOT", core.data("roche")) +roche_OUT = "roche_transits.json" +roche_FMIN, roche_AMIN, roche_NMIN, roche_GMAX, roche_DUTY = 8.6, 0.02, 20, 17.5, 0.15 +roche_MS = ((0.5, 3.9), (0.7, 4.8), (0.9, 5.6), (1.1, 6.3), (1.3, 7.0), (1.5, 7.7), (1.8, 8.6), (2.1, 9.6), (2.5, 10.9), (3.0, 12.4)) + + +def roche_ms(bprp): + """Main-sequence absolute G at a BP-RP colour, interpolated.""" + c, m = zip(*roche_MS) + return float(np.interp(bprp, c, m)) + + +def roche_select(): + os.makedirs(roche_ROOT, exist_ok=True) + var = json.load(open(os.path.join(roche_ROOT, "vari_short_fast.json"))) + src = {r["source_id"]: r for r in json.load(open(os.path.join(roche_ROOT, "gaia_source_fast.json")))} + out = [] + for v in var: + s = src.get(v["source_id"]) + f, amp, n = num(v["frequency"]), num(v["amplitude_estimate"]), int(num(v["number_of_fov_transits"]) or 0) + if not s or f is None or f < roche_FMIN or (amp or 0) < roche_AMIN or n < roche_NMIN: + continue + plx, poe, G, bprp = num(s["parallax"]), num(s["parallax_over_error"]), num(s["phot_g_mean_mag"]), num(s["bp_rp"]) + if not plx or plx <= 0 or (poe or 0) < 5 or G is None or bprp is None or G > roche_GMAX or float(s["dec"]) < -28: + continue + MG = G + 5 * math.log10(plx / 100.0) + if bprp < 0.5 or bprp > 3.0 or not (roche_ms(bprp) - 0.8 <= MG <= roche_ms(bprp) + 1.0): + continue + if (num(s["ruwe"]) or 9) > 1.4 or (num(s["ipd_frac_multi_peak"]) or 0) >= 2: + continue + if min(abs(f / 4.0 - round(f / 4.0)) * 4.0, abs(f / 4.0 - round(f / 4.0)) * 4.0) < 0.05: + continue # Gaia's 6-hour spin and its harmonics + out.append(dict(source_id=v["source_id"], ra=float(s["ra"]), dec=float(s["dec"]), G=G, bprp=bprp, MG=MG, plx=plx, frequency=f, P_h=24.0 / f, amp=amp, n_transits=n, + teff=num(s["teff_gspphot"]), ruwe=num(s["ruwe"]), excess=num(s["phot_bp_rp_excess_factor"]), nss=int(num(s["non_single_star"]) or 0))) + out.sort(key=lambda x: -x["amp"]) + json.dump(out, open(os.path.join(roche_ROOT, "candidates.json"), "w"), indent=0) + print("%d fast variables with source rows; %d main-sequence candidates faster than %.1f cycles a day with amplitude above %.2f mag (%d brighter than G 16)" % ( + len(var), len(out), roche_FMIN, roche_AMIN, sum(1 for x in out if x["G"] < 16))) + + +roche_LC = ("https://irsa.ipac.caltech.edu/cgi-bin/ZTF/nph_light_curves?POS=CIRCLE%%20%.6f%%20%.6f%%200.000417" + "&BANDNAME=g,r&NOBS_MIN=30&BAD_CATFLAGS_MASK=32768&FORMAT=csv") + + +def roche_fetch_one(x): + """One star's ZTF DR23 g and r light curves from a 1.5 arcsec cone into ROOT/lc; 1 when it has epochs.""" + p = os.path.join(roche_ROOT, "lc", "%s.csv" % x["source_id"]) + if os.path.exists(p): + return 1 + os.makedirs(os.path.dirname(p), exist_ok=True) + try: + text = core.get(roche_LC % (x["ra"], x["dec"]), timeout=300, retries=2).decode("utf-8", "replace") + except Exception as e: + print(" %s: light curves failed: %s" % (x["source_id"], str(e)[:80]), flush=True) + return 0 + rows = text.splitlines() + head = rows[0] if rows and rows[0].startswith("oid") else "oid,expid,hjd,mjd,mag,magerr,catflags,filtercode" + lines = [ln for ln in rows[1:] if ln.strip()] if rows and rows[0].startswith("oid") else [] + open(p, "w", encoding="utf-8").write("\n".join([head] + lines) + "\n") + return 1 if lines else 0 + + +def roche_fetch(threads=4): + """ZTF DR23 g and r light curves per candidate, one request a star.""" + cand = json.load(open(os.path.join(roche_ROOT, "candidates.json"))) + got = sum(core.pmap(roche_fetch_one, cand, threads=threads)) + print("%d of %d candidates with light curves" % (got, len(cand))) + + +roche_DL = "https://gea.esac.esa.int/data-server/data?RETRIEVAL_TYPE=EPOCH_PHOTOMETRY&ID=Gaia+DR3+%s&FORMAT=CSV&VALID_DATA=false" + + +def roche_fetch_gaia(threads=4): + """Gaia DR3 epoch photometry per candidate by DataLink, brightest first, unfiltered with flags.""" + cand = sorted(json.load(open(os.path.join(roche_ROOT, "candidates.json"))), key=lambda x: x["G"]) + d = os.path.join(roche_ROOT, "gaia_epoch") + os.makedirs(d, exist_ok=True) + + def one(x): + p = os.path.join(d, "%s.csv" % x["source_id"]) + if os.path.exists(p): + return 1 + b = core.get(roche_DL % x["source_id"], timeout=120, retries=2, soft=True, pause=3) + if not b: + return 0 + open(p, "wb").write(b) + return 1 + got = sum(core.pmap(one, cand, threads=threads)) + print("%d of %d candidates with Gaia epoch photometry" % (got, len(cand))) + + +def roche_gaia_series(path): + """{band: (days, mag)} from a DataLink table without photometry-rejected transits; variability-rejected ones kept as possible eclipses.""" + import csv + import io + t = open(path, encoding="utf-8", errors="replace").read() + rows = list(csv.DictReader(io.StringIO("\n".join(ln for ln in t.splitlines() if not ln.startswith("#"))))) + out = {} + for band, tc, mc in (("G", "g_transit_time", "g_transit_mag"), ("BP", "bp_obs_time", "bp_mag"), ("RP", "rp_obs_time", "rp_mag")): + b = [r for r in rows if num(r.get(mc)) is not None and num(r.get(tc)) is not None and r.get("rejected_by_photometry", "false") != "true"] + out[band] = (np.array([float(r[tc]) for r in b]), np.array([float(r[mc]) for r in b])) + return out + + +def roche_fold(t, m, P): + """Fold at P: chi-square gains of a one-harmonic sinusoid and the best box (duty up to roche_DUTY) over a constant, box depth and duty, out-of-transit scatter.""" + ph = (t / P) % 1.0 + w = np.ones_like(m) + mean = np.average(m, weights=w) + chi0 = np.sum((m - mean) ** 2) + A = np.column_stack([np.ones_like(ph), np.sin(2 * np.pi * ph), np.cos(2 * np.pi * ph)]) + c = np.linalg.lstsq(A, m, rcond=None)[0] + chi_sin = np.sum((m - A @ c) ** 2) + best = (chi0, 0.0, 0.0, 0.0) + for duty in (0.03, 0.05, 0.08, 0.11, roche_DUTY): + for phase0 in np.arange(0, 1, duty / 3): + inside = ((ph - phase0) % 1.0) < duty + if inside.sum() < 5 or (~inside).sum() < 10: + continue + m_in, m_out = m[inside].mean(), m[~inside].mean() + chi = np.sum((m[inside] - m_in) ** 2) + np.sum((m[~inside] - m_out) ** 2) + if chi < best[0]: + best = (chi, m_in - m_out, duty, float(np.std(m[~inside]))) + return dict(gain_sin=chi0 - chi_sin, gain_box=chi0 - best[0], depth=best[1], duty=best[2], scatter_out=best[3], amp_sin=2 * math.hypot(c[1], c[2]), n=len(m)) + + +def roche_ztf_series(p, strict=True): + """{band: (mjd, mag)} of a ZTF light-curve file, catflags 0 only, or below 32768 (no bad-image bit) when not strict.""" + if not os.path.exists(p): + return {} + rows = [ln.split(",") for ln in open(p, encoding="utf-8").read().splitlines()[1:] if ln.strip()] + head = open(p, encoding="utf-8").readline().strip().split(",") + if not rows or "mag" not in head: + return {} + im, it, ic, ifl = head.index("mag"), head.index("mjd"), head.index("filtercode"), head.index("catflags") + out = {} + for band in ("zg", "zr"): + sel = [r for r in rows if r[ic] == band and (r[ifl] == "0" if strict else int(r[ifl]) < 32768)] + out[band] = (np.array([float(r[it]) for r in sel]), np.array([float(r[im]) for r in sel])) + return out + + +def roche_series(x): + """Light curves {band: (t, mag)} and the achromaticity pair: Gaia G, BP, RP where on disk, else ZTF g and r.""" + p = os.path.join(roche_ROOT, "gaia_epoch", "%s.csv" % x["source_id"]) + if os.path.exists(p): + try: + return "gaia", roche_gaia_series(p), ("BP", "RP"), 25 + except Exception: + return "gaia", {}, ("BP", "RP"), 25 + p = os.path.join(roche_ROOT, "lc", "%s.csv" % x["source_id"]) + if not os.path.exists(p): + return None, {}, None, 0 + return "ztf", roche_ztf_series(p), ("zg", "zr"), 40 + + +def roche_clip(t, m): + """Drop brightenings beyond 5 MAD and dimmings beyond 1.5 mag.""" + med = np.median(m) + mad = 1.4826 * np.median(np.abs(m - med)) + keep = (m - med > -(5 * mad + 0.05)) & (m - med < 1.5) + return t[keep], m[keep] + + +roche_FACTORS = (1.0, 2.0, 0.5) +roche_P = 1e-3 # lead band's p-value against the sinusoid null + + +def roche_chi(ph, X): + """Chi-square of the constant, the one-harmonic sinusoid and the best box (duty up to roche_DUTY) for each column of X.""" + n = len(ph) + A = np.column_stack([np.ones(n), np.sin(2 * np.pi * ph), np.cos(2 * np.pi * ph)]) + chi_sin = ((X - A @ np.linalg.lstsq(A, X, rcond=None)[0]) ** 2).sum(0) + T, T2 = X.sum(0), (X ** 2).sum(0) + chi0 = T2 - T ** 2 / n + best = chi0.copy() + for duty in (0.03, 0.05, 0.08, 0.11, roche_DUTY): + M = ((ph[None, :] - np.arange(0, 1, duty / 3)[:, None]) % 1.0) < duty + c = M.sum(1) + ok = (c >= 5) & (n - c >= 10) + if ok.any(): + M, c = M[ok].astype(float), c[ok][:, None] + S, Q = M @ X, M @ (X ** 2) + best = np.minimum(best, (Q - S ** 2 / c + (T2 - Q) - (T - S) ** 2 / (n - c)).min(0)) + return chi0, chi_sin, best + + +def roche_null(t, m, P, nsim, seed): + """Box advantage over the sinusoid, n ln(chi_sin / chi_box) at the best period factor, and its p-value against the best sinusoid plus the star's resampled residuals.""" + m = m - np.median(m) + phs = [(t / (P * k)) % 1.0 for k in roche_FACTORS] + + def advantage(ph, X): + chi0, chi_sin, chi_box = roche_chi(ph, X) + return len(m) * np.log(np.maximum(chi_sin, 1e-12) / np.maximum(chi_box, 1e-12)) + obs = max(float(advantage(ph, m[:, None])[0]) for ph in phs) + ph = min(phs, key=lambda ph: float(roche_chi(ph, m[:, None])[1][0])) + A = np.column_stack([np.ones(len(m)), np.sin(2 * np.pi * ph), np.cos(2 * np.pi * ph)]) + fit = A @ np.linalg.lstsq(A, m, rcond=None)[0] + rng = np.random.default_rng(seed) + above, done = 0, 0 + # ten times the draws when fewer than ten reach the observed advantage + while done < nsim or (above < 10 and done < 10 * nsim): + k = min(2000, 10 * nsim - done) + X = fit[:, None] + (m - fit)[rng.integers(0, len(m), size=(len(m), k))] + above += int(np.sum(np.max([advantage(p2, X) for p2 in phs], axis=0) >= obs)) + done += k + return obs, (1 + above) / (1 + done) + + +def roche_star(x, nsim=2000): + """One candidate's folds per band at the Gaia period, its double and half, with each band's sinusoid null.""" + src, series, pair, nmin = roche_series(x) + if not series: + return None + res = {} + for band, (t, m) in series.items(): + if len(m) < nmin: + continue + t, m = roche_clip(t, m) + if len(m) < nmin: + continue + fits = {k: roche_fold(t, m, x["P_h"] / 24.0 * k) for k in roche_FACTORS} + k = max(fits, key=lambda k: max(fits[k]["gain_sin"], fits[k]["gain_box"])) + adv, p = roche_null(t, m, x["P_h"] / 24.0, nsim, int(x["source_id"]) % 2 ** 32 + len(res)) + res[band] = dict(fits[k], period_factor=k, advantage=adv, p_box=p) + if not res: + return None + lead = "G" if "G" in res else max(res, key=lambda b: res[b]["n"]) + r0 = res[lead] + boxy = r0["gain_box"] > 1.2 * r0["gain_sin"] and r0["depth"] > 3 * r0["scatter_out"] / math.sqrt(max(r0["n"] * r0["duty"], 1)) and \ + all(r["gain_box"] >= r["gain_sin"] for b, r in res.items() if b != lead) + a, b = pair + grey = (a in res and b in res and res[a]["depth"] > 0 and res[b]["depth"] > 0 + and abs(res[a]["depth"] - res[b]["depth"]) < 0.3 * max(res[a]["depth"], res[b]["depth"])) + sig = r0["p_box"] < roche_P and all(r["p_box"] < 0.05 for bb, r in res.items() if bb != lead) + return dict(x, source=src, lead=lead, bands={bb: {k2: (float(v) if isinstance(v, (int, float, np.floating)) else v) for k2, v in r.items()} + for bb, r in res.items()}, + boxy=bool(boxy), grey=bool(grey and boxy), significant=bool(sig and boxy)) + + +def roche_analyse(procs=1, nsim=2000): + """Every candidate's folds and sinusoid nulls on procs processes into RESULTS/roche_transits.json.""" + import functools + from concurrent.futures import ProcessPoolExecutor + cand = json.load(open(os.path.join(roche_ROOT, "candidates.json"))) + with ProcessPoolExecutor(procs) as ex: + out = [x for x in ex.map(functools.partial(roche_star, nsim=nsim), cand, chunksize=16) if x] + found = [x for x in out if x["grey"] and x["significant"]] + print("%d candidates with light curves (%d Gaia, %d ZTF): %d box-like, %d of those beyond the sinusoid null (p below %g in the lead band, " + "%.1f expected by chance there), %d with equal depths in the two colours as well" % ( + len(out), sum(x["source"] == "gaia" for x in out), sum(x["source"] == "ztf" for x in out), sum(x["boxy"] for x in out), + sum(x["significant"] for x in out), roche_P, roche_P * len(out), len(found))) + for x in sorted(found, key=lambda x: x["bands"][x["lead"]]["p_box"])[:30]: + b = x["bands"] + print(" Gaia DR3 %s (%.4f %+.4f): G %.1f BP-RP %.2f M_G %.1f, P %.3f h x %s, amp %.3f; " % ( + x["source_id"], x["ra"], x["dec"], x["G"], x["bprp"], x["MG"], x["P_h"], b[x["lead"]]["period_factor"], x["amp"]) + + "; ".join("%s box %.3f mag duty %.2f, advantage %.1f, p %.1e (n %d)" % (k, r["depth"], r["duty"], r["advantage"], r["p_box"], r["n"]) + for k, r in b.items())) + json.dump(dict(n_cand=len(cand), n_lc=len(out), n_boxy=int(sum(x["boxy"] for x in out)), n_grey=int(sum(x["grey"] for x in out)), + n_sig=int(sum(x["significant"] for x in out)), n_found=len(found), rows=out, + params=dict(fmin=roche_FMIN, amin=roche_AMIN, nmin=roche_NMIN, gmax=roche_GMAX, duty=roche_DUTY, nsim=nsim, p=roche_P)), + open(core.results(roche_OUT), "w"), indent=0) + + +roche_ZTF = "roche_ztf.json" + + +def roche_ztf(threads=4): + """The grey boxes beyond the null in ZTF: best box from 0.45 to 2.2 Gaia periods, depths in g and r, secondary eclipse, odd and even depths, sinusoid's fit.""" + from astropy.timeseries import BoxLeastSquares + d = json.load(open(core.results(roche_OUT))) + found = [x for x in d["rows"] if x["grey"] and x["significant"]] + core.pmap(roche_fetch_one, found, threads=threads) + out = {} + for x in found: + path = os.path.join(roche_ROOT, "lc", "%s.csv" % x["source_id"]) + series = {b: roche_clip(t, m) for b, (t, m) in roche_ztf_series(path).items() if len(m) >= 40} + flagged = not series + if flagged: + # every epoch flagged: those without the bad-image bit + series = {b: roche_clip(t, m) for b, (t, m) in roche_ztf_series(path, strict=False).items() if len(m) >= 40} + P0 = x["P_h"] / 24.0 + if not series: + out[x["source_id"]] = dict(verdict=None, note="no ZTF light curve") + print("Gaia DR3 %s: no ZTF light curve" % x["source_id"], flush=True) + continue + band = max(series, key=lambda b: len(series[b][1])) + t, m = series[band] + durations = P0 * np.array([0.02, 0.04, 0.07, 0.1]) + periods = np.exp(np.linspace(np.log(0.45 * P0), np.log(2.2 * P0), 30000)) + bls = BoxLeastSquares(t, -(m - np.median(m))) + pw = bls.power(periods, durations, objective="snr") + i = int(np.argmax(pw.power)) + P, dur, t0 = float(pw.period[i]), float(pw.duration[i]), float(pw.transit_time[i]) + st = bls.compute_stats(P, dur, t0) + depth, err = float(st["depth"][0]), float(st["depth"][1]) + sec = float(st["depth_phased"][0]) / max(float(st["depth_phased"][1]), 1e-9) + odd, even = st["depth_odd"], st["depth_even"] + oe = abs(float(odd[0]) - float(even[0])) / max(math.hypot(float(odd[1]), float(even[1])), 1e-9) + other = {} + for b2, (t2, m2) in series.items(): + if b2 != band: + try: + st2 = BoxLeastSquares(t2, -(m2 - np.median(m2))).compute_stats(P, dur, t0) + except ValueError: + continue # no point of this band inside the eclipse + other[b2] = (float(st2["depth"][0]), float(st2["depth"][1])) + sine = float(st["harmonic_delta_log_likelihood"]) + told = "ZTF %s%s box %.3f +- %.3f mag at P %.4f h (%.2f Gaia periods), duration %.0f min, %d points; secondary %.1f sigma, odd-even %.1f sigma%s" % ( + band, " (flagged epochs, catflags below 32768)" if flagged else "", depth, err, 24 * P, P / P0, 1440 * dur, len(m), sec, oe, + "".join("; %s box %.3f +- %.3f" % (b2, dd, ee) for b2, (dd, ee) in other.items())) + if depth / max(err, 1e-9) < 7: + verdict = "not in ZTF at the Gaia period: Gaia's period or depth" + elif sine > 0: + verdict = "sinusoidal in ZTF, a pulsator's light curve" + elif sec > 3: + verdict = "eclipsing binary in ZTF: a secondary eclipse at phase 0.5" + elif oe > 3: + verdict = "eclipsing binary in ZTF: odd and even eclipses differ" + elif any(abs(dd - depth) > 0.3 * max(dd, depth) and abs(dd - depth) > 3 * math.hypot(ee, err) for dd, ee in other.values()): + verdict = "eclipsing binary in ZTF: the eclipse differs between g and r" + else: + verdict = None + out[x["source_id"]] = dict(verdict=verdict, note=told, period_h=24 * P, depth=depth, err=err, secondary_sigma=sec, odd_even_sigma=oe, other=other) + print("Gaia DR3 %s (G %.1f, M_G %.1f, BP-RP %.2f, Gaia P %.3f h): %s; %s" % ( + x["source_id"], x["G"], x["MG"], x["bprp"], x["P_h"], told, verdict or "a grey box in ZTF too"), flush=True) + json.dump(out, open(core.results(roche_ZTF), "w"), indent=1) + + +def roche_vet(x): + """Reading of one light curve: a sinusoid, a box no more than the sinusoid null reaches, an eclipse of two colours, or None for a grey box.""" + r = x["bands"][x["lead"]] + if not x["boxy"]: + return "sinusoidal at the Gaia period, a pulsator's light curve" + if not x["significant"]: + return "box-like only as far as a pulsator's sinusoid with the star's own noise reaches (p %.2g)" % r["p_box"] + if not x["grey"]: + return "box-like beyond the sinusoid null with unequal depths in the two colours, an eclipsing binary of stars of two colours" + return roche_ZTF_READ.get(x["source_id"], {}).get("verdict") + + +roche_ZTF_READ = {} + + +def roche_record(): + d = json.load(open(core.results(roche_OUT))) + if os.path.exists(core.results(roche_ZTF)): + roche_ZTF_READ.update(json.load(open(core.results(roche_ZTF)))) + found = [x for x in d["rows"] if x["grey"] and x["significant"]] + core.record_search( + "roche_transits", "Transiting bodies inside the fluid Roche limit", archive="Gaia DR3 vari_short_timescale, gaia_source and epoch photometry; ZTF DR23 light curves (IRSA)", release="Gaia DR3, ZTF DR23", + selection="main-sequence hosts faster than %.1f cycles a day with amplitudes above %.2f mag and %d or more transits: %d candidates, %d with light curves" % (d["params"]["fmin"], d["params"]["amin"], d["params"]["nmin"], d["n_cand"], d["n_lc"]), + code=os.path.abspath(__file__), entry="roche", n_targets=d["n_lc"], n_unit="stars", params=d["params"], + null_summary="each band's best sinusoid at the Gaia period, its double or half, plus its own residuals resampled at the same epochs, %d draws or ten times that " + "when fewer than ten reach the box's advantage: p below %g in the lead band and 0.05 in the others" % (d["params"]["nsim"], d["params"]["p"]), + sensitivity="a box depth of 3 sigma of the out-of-transit scatter over the in-transit points, about 1 per cent at G 16", ledger="Transiting bodies inside the fluid Roche limit", + result="%d box-like, %d of them beyond the sinusoid null (%.1f expected by chance in the lead band), %d with equal depths in the two colours%s" % ( + d["n_boxy"], d["n_sig"], d["params"]["p"] * d["n_lc"], d["n_found"], + ("; in ZTF g and r " + ", ".join("%d %s" % (n, k) for k, n in collections.Counter( + (r["verdict"] or ("without a ZTF light curve" if r["note"] == "no ZTF light curve" else "a grey box in ZTF too")).split(":")[0] + for r in roche_ZTF_READ.values()).most_common())) if roche_ZTF_READ else + (": " + "; ".join("Gaia DR3 %s (P %.2f h)" % (x["source_id"], x["P_h"]) for x in found[:8])) if found else "")) + core.clear_targets("roche_transits") + core.record_targets("roche_transits", [dict(target="gaia_dr3:%s" % x["source_id"], stat=x["bands"][x["lead"]]["advantage"], + p=x["bands"][x["lead"]]["p_box"], unit="n ln(chi2 sinusoid / chi2 box)", + vet=roche_vet(x), note=("box-like beyond the sinusoid null with equal depths in the two colours; " if x["grey"] and x["significant"] else "") + + "P %.3f h, amp %.3f, G %.1f" % (x["P_h"], x["amp"], x["G"]) + + ("; " + roche_ZTF_READ[x["source_id"]]["note"] if x["source_id"] in roche_ZTF_READ else "")) for x in d["rows"]]) + print("recorded %d light curves" % d["n_lc"]) + + +def roche_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=["select", "fetch", "fetch_gaia", "analyse", "ztf", "record"]) + p.add_argument("--threads", type=int, default=4) + p.add_argument("--procs", type=int, default=1) + p.add_argument("--nsim", type=int, default=2000) + a = p.parse_args() + if a.mode == "fetch": + roche_fetch(a.threads) + elif a.mode == "fetch_gaia": + roche_fetch_gaia(a.threads) + elif a.mode == "analyse": + roche_analyse(a.procs, a.nsim) + elif a.mode == "ztf": + roche_ztf(a.threads) + else: + {"select": roche_select, "record": roche_record}[a.mode]() + + +# -------------------------------------------------------------------------------------------------------------- + +depthgrowth_DOC = r"""Transit-depth growth from Kepler to TESS: KOI-TOI pairs deeper in TESS at 5 sigma with duration held, the shallower side as null; vetted in SAP and PDCSAP light curves. + + python -I seti.py transits depthgrowth fetch + python -I seti.py transits depthgrowth analyse + python -I seti.py transits depthgrowth vet + python -I seti.py transits depthgrowth record""" + +depthgrowth_ROOT = os.environ.get("DEPTHGROWTH_ROOT", core.data("depthgrowth")) +depthgrowth_OUT = "depth_growth.json" +depthgrowth_SEP = 6.0 # arcsec +depthgrowth_DP = 2e-3 # fractional period agreement +depthgrowth_Z = 5.0 +depthgrowth_DUR = 0.2 + + +def depthgrowth_fetch(): + os.makedirs(depthgrowth_ROOT, exist_ok=True) + # dispositions filtered here; the archive's firewall refuses some clause combinations + kois = [k for k in core.exoplanets("SELECT kepid, kepoi_name, kepler_name, koi_disposition, koi_period, koi_duration, koi_duration_err1, koi_depth, koi_depth_err1, " + "koi_impact, koi_model_snr, koi_kepmag, ra, dec FROM cumulative WHERE koi_disposition != 'FALSE POSITIVE'") + if k["koi_disposition"] in ("CONFIRMED", "CANDIDATE") and num(k["koi_depth"])] + tois = core.exoplanets("SELECT toi, tid, tfopwg_disp, ra, dec, st_tmag, pl_orbper, pl_orbpererr1, pl_trandurh, pl_trandurherr1, pl_trandep, pl_trandeperr1, pl_rade FROM toi " + "WHERE pl_trandep IS NOT NULL AND ra BETWEEN 275 AND 305 AND dec BETWEEN 30 AND 60") # the archive's firewall refuses '<' + json.dump(dict(kois=kois, tois=tois), open(os.path.join(depthgrowth_ROOT, "tables.json"), "w")) + print("%d KOIs with depths, %d TOIs with depths in the Kepler field's box" % (len(kois), len(tois))) + + +def depthgrowth_analyse(): + d = json.load(open(os.path.join(depthgrowth_ROOT, "tables.json"))) + kois = [k for k in d["kois"] if num(k["ra"]) is not None and num(k["koi_period"])] + kra = np.radians(np.array([float(k["ra"]) for k in kois])) + kdec = np.radians(np.array([float(k["dec"]) for k in kois])) + pairs = [] + for t in d["tois"]: + ra, dec, P = num(t["ra"]), num(t["dec"]), num(t["pl_orbper"]) + if ra is None or dec is None or not P: + continue + sep = np.degrees(np.arccos(np.clip(np.sin(kdec) * math.sin(math.radians(dec)) + np.cos(kdec) * math.cos(math.radians(dec)) * np.cos(kra - math.radians(ra)), -1, 1))) * 3600 + for i in np.where(sep < depthgrowth_SEP)[0]: + k = kois[i] + Pk = float(k["koi_period"]) + if abs(P - Pk) / Pk > depthgrowth_DP: + continue + dk, ek = num(k["koi_depth"]), num(k["koi_depth_err1"]) + dt_, et = num(t["pl_trandep"]), num(t["pl_trandeperr1"]) + if not dk or not dt_ or not ek or not et: + continue + dur_k, dur_t = num(k["koi_duration"]), num(t["pl_trandurh"]) + pairs.append(dict(toi=t["toi"], tic=t["tid"], koi=k["kepoi_name"], kepler=k["kepler_name"], koi_disp=k["koi_disposition"], toi_disp=t["tfopwg_disp"], + P=Pk, sep=float(sep[i]), depth_k=dk, err_k=abs(ek), depth_t=dt_, err_t=abs(et), z=(dt_ - dk) / math.hypot(ek, et), ratio=dt_ / dk, + dur_k=dur_k, dur_t=dur_t, dur_ratio=(dur_t / dur_k) if dur_k and dur_t else None, impact=num(k["koi_impact"]), + kepmag=num(k["koi_kepmag"]), tmag=num(t["st_tmag"]), ra=ra, dec=dec)) + pairs.sort(key=lambda p: -p["z"]) + ratio = np.array([p["ratio"] for p in pairs]) + med = float(np.median(ratio)) if len(ratio) else float("nan") + rs = float(1.4826 * np.median(np.abs(ratio - med))) if len(ratio) else float("nan") + deeper = [p for p in pairs if p["z"] >= depthgrowth_Z and p["dur_ratio"] and abs(p["dur_ratio"] - 1) <= depthgrowth_DUR] + shallower = [p for p in pairs if p["z"] <= -depthgrowth_Z and p["dur_ratio"] and abs(p["dur_ratio"] - 1) <= depthgrowth_DUR] + print("%d KOI-TOI pairs; TESS/Kepler depth ratio median %.3f, robust scatter %.3f; deeper in TESS at %.0f sigma with the duration held: %d; shallower (the null side): %d" + % (len(pairs), med, rs, depthgrowth_Z, len(deeper), len(shallower))) + if deeper: + types = core.simbad_otypes(["TIC %s" % p["tic"] for p in deeper]) + for p in deeper: + p["otypes"] = sorted(types.get("TIC %s" % p["tic"], [])) + for p in deeper[:40]: + print(" TOI %s = %s %s (%s; TOI %s): P %.4f d, depth %.0f +- %.0f ppm in Kepler, %.0f +- %.0f in TESS (%.2fx, %+.1f sigma), duration %.2f h against %.2f, b %s, Kp %s, Tmag %s, SIMBAD %s" % ( + p["toi"], p["koi"], p["kepler"] or "", p["koi_disp"], p["toi_disp"], p["P"], p["depth_k"], p["err_k"], p["depth_t"], p["err_t"], p["ratio"], p["z"], + p["dur_t"] or 0, p["dur_k"] or 0, p["impact"], p["kepmag"], p["tmag"], ",".join(p.get("otypes", []))[:60])) + json.dump(dict(pairs=pairs, deeper=deeper, shallower=shallower, median_ratio=med, scatter=rs, + params=dict(sep=depthgrowth_SEP, dp=depthgrowth_DP, z=depthgrowth_Z, dur=depthgrowth_DUR)), open(core.results(depthgrowth_OUT), "w"), indent=1) + + +depthgrowth_VET = "depth_growth_vet.json" +depthgrowth_BKJD, depthgrowth_BTJD = 2454833.0, 2457000.0 # Kepler and TESS BJD zero points + + +depthgrowth_T10 = 15000.0 # e-/s at TESS magnitude 10 (TESS Instrument Handbook) + + +def depthgrowth_lc(b, cols): + """({column: (time, flux over median)}, header) with flagged cadences dropped; header holds CROWDSAP and, for TESS, the target's share of the SAP flux.""" + from astropy.io import fits + with fits.open(io.BytesIO(b)) as h: + x, crowd, flfr, tmag = h[1].data, h[1].header.get("CROWDSAP"), h[1].header.get("FLFRCSAP"), h[0].header.get("TESSMAG") + names = x.columns.names + t = np.asarray(x["TIME"], float) + q = np.asarray(x["QUALITY"] if "QUALITY" in names else x["SAP_QUALITY"], int) + out, sap = {}, None + for c in cols: + if c in names: + f = np.asarray(x[c], float) + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + if ok.sum() > 50: + out[c] = (t[ok], f[ok] / np.median(f[ok])) + if c == "SAP_FLUX": + sap = float(np.median(f[ok])) + share = None + if sap and flfr and tmag is not None and sap > 0: + share = depthgrowth_T10 * 10 ** (-0.4 * (float(tmag) - 10)) * float(flfr) / sap + return out, dict(crowd=float(crowd) if crowd is not None else None, share=share, sap=sap) + + +def depthgrowth_transits(t, f, P, t0, dur): + """[(epoch, depth, error)] per transit: central-half mean below a line fitted 0.75-2.5 durations either side.""" + out = [] + for n in range(int(np.floor((t.min() - t0) / P)), int(np.ceil((t.max() - t0) / P)) + 1): + dt = t - (t0 + n * P) + near = np.abs(dt) < 2.5 * dur + dt, ff = dt[near], f[near] + inn, side = np.abs(dt) < 0.25 * dur, np.abs(dt) > 0.75 * dur + if inn.sum() < 1 or (side & (dt < 0)).sum() < 3 or (side & (dt > 0)).sum() < 3: + continue + a, b = np.polyfit(dt[side], ff[side], 1) + r = ff / (a * dt + b) + sd = 1.4826 * np.median(np.abs(r[side] - np.median(r[side]))) + out.append((n, float(1 - np.mean(r[inn])), float(sd * math.sqrt(1 / inn.sum() + 1 / side.sum())))) + return out + + +def depthgrowth_combine(tr): + """Weighted mean depth (ppm) of transits, error widened by their scatter.""" + if not tr: + return None + d, e = np.array([x[1] for x in tr]), np.maximum(np.array([x[2] for x in tr]), 1e-7) + w = 1 / e ** 2 + m = float(np.sum(w * d) / np.sum(w)) + chi = float(np.sum(w * (d - m) ** 2) / max(len(d) - 1, 1)) + return dict(depth=round(1e6 * m, 1), err=round(1e6 * math.sqrt(max(chi, 1.0) / np.sum(w)), 1), n=len(d), chi2nu=round(chi, 2)) + + +def depthgrowth_verdict(r): + """Light-curve explanation of a pair or None: deeper side, PDCSAP-only growth is crowding or the TOI table; shallower side, neighbours' light or aperture light beyond the crowding model.""" + k, raw, cor = r["kepler"].get("PDCSAP_FLUX"), r["tess"].get("SAP_FLUX"), r["tess"].get("PDCSAP_FLUX") + light = r["tess"].get("light") + if not k or not raw: + return None + + def z(x, frac=0.0): + return (x["depth"] - k["depth"]) / math.sqrt(x["err"] ** 2 + k["err"] ** 2 + (frac * x["depth"]) ** 2) + told = "TESS %.0f +- %.0f ppm uncorrected%s against Kepler's %.0f +- %.0f" % ( + raw["depth"], raw["err"], ", %.0f +- %.0f corrected" % (cor["depth"], cor["err"]) if cor else "", k["depth"], k["err"]) + if r["side"] == "deeper": + if z(raw) > 3: + return None + if cor and z(cor) > 3: + return "crowding correction: %s, CROWDSAP %s" % (told, r["tess_crowdsap"]) + return "TOI depth not in the light curves: %s" % told + if z(raw) < -3 and (not cor or z(cor) >= -3): + return "neighbours' light in TESS's aperture: %s, CROWDSAP %s" % (told, r["tess_crowdsap"]) + if z(raw) < -3 and light and abs(z(light, 0.1)) <= 3: + shares = [s["share"] for s in r["sectors"] if s.get("share")] + return ("neighbours' light in TESS's aperture beyond the crowding model: %s, the target giving %.2f-%.2f of the " + "aperture's light by its TESS magnitude against CROWDSAP %s, over which its depth is %.0f +- %.0f" + % (told, min(shares), max(shares), r["tess_crowdsap"], light["depth"], light["err"])) + if z(raw) >= -3: + return "TOI depth not in the light curves: %s" % told + return None + + +def depthgrowth_vet(): + """Measure every pair in the light curves into RESULTS/depth_growth_vet.json.""" + d = json.load(open(core.results(depthgrowth_OUT))) + pairs = [("deeper", p) for p in d["deeper"]] + [("shallower", p) for p in d["shallower"]] + eph_t = {r["toi"]: r for r in core.exoplanets("SELECT toi, pl_tranmid FROM toi WHERE toi IN (%s)" % ", ".join(p["toi"] for _, p in pairs))} + eph_k = {r["kepoi_name"]: r for r in core.exoplanets("SELECT kepoi_name, kepid, koi_time0bk FROM cumulative WHERE kepoi_name IN (%s)" + % ", ".join("'%s'" % p["koi"] for _, p in pairs))} + out = [] + for side, p in pairs: + P, dur = p["P"], p["dur_k"] / 24.0 + r = dict(side=side, toi=p["toi"], koi=p["koi"], kepler_name=p["kepler"], tic=p["tic"], depth_koi=p["depth_k"], depth_toi=p["depth_t"]) + series, crowd = {"PDCSAP_FLUX": [], "SAP_FLUX": []}, [] + for key in core.kepler_keys(int(eph_k[p["koi"]]["kepid"]), short=False): + b = core.get(core.S3 + key, timeout=300, retries=3, soft=True, pause=2) + if b and b.startswith(b"SIMPLE"): + cols, c = depthgrowth_lc(b, tuple(series)) + crowd.append(c["crowd"]) + for name, v in cols.items(): + series[name].append(v) + t0 = float(eph_k[p["koi"]]["koi_time0bk"]) + r["kepler"] = {name: depthgrowth_combine([x for t, f in v for x in depthgrowth_transits(t, f, P, t0, dur)]) for name, v in series.items()} + r["kepler_crowdsap"] = round(float(np.median([c for c in crowd if c is not None])), 3) if any(c is not None for c in crowd) else None + t0 = float(eph_t[p["toi"]]["pl_tranmid"]) - depthgrowth_BTJD + series, crowd, light, r["sectors"] = {}, [], [], [] + for s in core.sectors(p["ra"], p["dec"]): + src, b = "spoc", core.spoc_bytes(int(p["tic"]), s) + if not b: + src, b = core.ffi_bytes(int(p["tic"]), s) + if not b: + continue + cols, c = depthgrowth_lc(b, ("SAP_FLUX", "PDCSAP_FLUX")) + row = dict(sector=s, source=src, crowdsap=c["crowd"], share=c["share"], sap_e_s=c["sap"]) + for name, v in cols.items(): + tr = depthgrowth_transits(v[0], v[1], P, t0, dur) + row[name] = depthgrowth_combine(tr) + series.setdefault(name, []).append(v) + if name == "SAP_FLUX" and c["share"]: + # SAP depth over the target's share of the aperture light + light += [(n, d / c["share"], e / c["share"]) for n, d, e in tr] + if c["crowd"] is not None: + crowd.append(c["crowd"]) + r["sectors"].append(row) + r["tess"] = {name: depthgrowth_combine([x for t, f in v for x in depthgrowth_transits(t, f, P, t0, dur)]) for name, v in series.items()} + r["tess"]["light"] = depthgrowth_combine(light) + r["tess_crowdsap"] = "%.2f-%.2f" % (min(crowd), max(crowd)) if crowd else None + r["verdict"] = depthgrowth_verdict(r) + print("%s %s (%s, TOI %s): Kepler %s; TESS %s over %d sectors; %s" + % (side, p["koi"], p["kepler"] or "", p["toi"], r["kepler"].get("PDCSAP_FLUX"), r["tess"], len(r["sectors"]), r["verdict"] or "unexplained"), flush=True) + out.append(r) + json.dump(out, open(core.results(depthgrowth_VET), "w"), indent=1) + + +def depthgrowth_record(): + d = json.load(open(core.results(depthgrowth_OUT))) + deeper = d["deeper"] + vets = {r["koi"]: r for r in json.load(open(core.results(depthgrowth_VET)))} if os.path.exists(core.results(depthgrowth_VET)) else {} + for r in vets.values(): + r["verdict"] = depthgrowth_verdict(r) + + def told(p): + r = vets.get(p["koi"]) + if not r: + return "" + k, raw, cor = r["kepler"].get("PDCSAP_FLUX"), r["tess"].get("SAP_FLUX"), r["tess"].get("PDCSAP_FLUX") + return "; light curves: Kepler %s, TESS %s uncorrected, %s corrected" % tuple( + "%.0f +- %.0f ppm" % (x["depth"], x["err"]) if x else "-" for x in (k, raw, cor)) + side = {} + for name in ("deeper", "shallower"): + c = collections.Counter() + for p in d[name]: + r = vets.get(p["koi"]) + c[(r["verdict"].split(":")[0] if r["verdict"] else "unexplained") if r else "not measured"] += 1 + side[name] = ", ".join("%d %s" % (n, k) for k, n in c.most_common()) + core.record_search( + "transit_depth_growth", "Transit-depth growth, Kepler to TESS", + archive="NASA Exoplanet Archive: Kepler cumulative KOI table, TESS TOI table; Kepler and TESS light curves (STScI AWS mirror, MAST HLSP)", + release="as served", selection="KOIs (confirmed or candidate) matched to TOIs within %.0f arcsec and %.1f per cent in period" % (d["params"]["sep"], 100 * d["params"]["dp"]), + code=os.path.abspath(__file__), entry="depthgrowth", n_targets=len(d["pairs"]), n_unit="KOI-TOI pairs", params=d["params"], + null_summary="the shallower side of the same comparison: %d pairs at %.0f sigma, measured in the light curves as the deeper side is" % ( + len(d["shallower"]), d["params"]["z"]), + sensitivity="the catalogue depth errors combined; median TESS/Kepler ratio %.3f with robust scatter %.3f" % (d["median_ratio"], d["scatter"]), + ledger="Transit-depth growth, Kepler to TESS", + result="%d pairs; %d deeper in TESS at %.0f sigma with the duration held, in the light curves %s; %d shallower, %s" % ( + len(d["pairs"]), len(deeper), d["params"]["z"], side["deeper"], len(d["shallower"]), side["shallower"])) + core.clear_targets("transit_depth_growth") + core.record_targets("transit_depth_growth", [dict(target="tic:%s" % p["tic"], stat=p["z"], unit="TESS minus Kepler depth over the combined error", + vet=vets[p["koi"]]["verdict"] if p["koi"] in vets else None, + note="%s / TOI %s, %.2fx in the catalogues, durations %.2f and %.2f h%s" % ( + p["koi"], p["toi"], p["ratio"], p["dur_t"] or 0, p["dur_k"] or 0, told(p))) + for p in d["pairs"]]) + print("recorded %d pairs" % len(d["pairs"])) + + +def depthgrowth_cli(): + quiet_warnings() + mode = sys.argv[1] if len(sys.argv) > 1 else "analyse" + {"fetch": depthgrowth_fetch, "analyse": depthgrowth_analyse, "vet": depthgrowth_vet, "record": depthgrowth_record}[mode]() + + +# -------------------------------------------------------------------------------------------------------------- +# planetary periods matched to ours, and periods in equal steps + +earthyear_DOC = r"""Planets on Earth's year: NASA Exoplanet Archive composite planets whose period lies within 0.2 per cent of the sidereal year, a period chosen to match ours, against the density of periods between 300 and 430 d. + + python -I seti.py transits earthyear [record] [--tolerance 0.002] [--window-d 300 430]""" + +YEAR_D = 365.25636 + + +def earthyear_main(record=False, tolerance=0.002, window_d=[300.0, 430.0]): + from scipy.stats import poisson + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbper, pl_orbpererr1, disc_method FROM pscomppars WHERE pl_orbper BETWEEN %g AND %g" + % (window_d[0], window_d[1])) + P = np.array([float(r["pl_orbper"]) for r in rows]) + width = tolerance * YEAR_D + expect = len(P) / (window_d[1] - window_d[0]) * 2 * width + hits = [r for r in rows if abs(float(r["pl_orbper"]) - YEAR_D) < width] + p = float(poisson.sf(len(hits) - 1, expect)) if hits else 1.0 + print("%d planets at 300-430 d; within 0.2 per cent of the sidereal year %d against %.2f expected (Poisson p %.2f): %s" % ( + len(P), len(hits), expect, p, ["%s %.4f d (%s)" % (r["pl_name"], float(r["pl_orbper"]), r["disc_method"]) for r in hits])) + json.dump(dict(n=len(P), expect=expect, p=p, hits=hits), open(core.results("earthyear_planets.json"), "w"), indent=1) + if record: + core.record_search( + "exoplanets_earth_year", "Planets on Earth's year", archive="NASA Exoplanet Archive pscomppars", + selection="composite planets with periods of 300-430 d: %d" % len(P), code=os.path.abspath(__file__), entry="earthyear", + n_targets=len(P), n_unit="planets", params=dict(tolerance=tolerance, window_d=window_d, year_d=YEAR_D), + null_summary="the density of periods at 300-430 d: %.2f expected within the tolerance" % expect, + sensitivity="a planet whose period matches the sidereal year to 0.2 per cent", ledger="Planets on Earth's year", + result="%d against %.2f expected: %s" % (len(hits), expect, ", ".join(r["pl_name"] for r in hits) or "none")) + core.clear_targets("exoplanets_earth_year") + core.record_targets("exoplanets_earth_year", [dict( + target="planet:%s" % r["pl_name"], stat=float(r["pl_orbper"]) / YEAR_D - 1, unit="fractional period offset from the sidereal year", + vet="chance-rate" if p > 0.01 else None, note="%.4f d, %s" % (float(r["pl_orbper"]), r["disc_method"])) for r in hits]) + print("recorded") + + +steps_DOC = r"""Planetary systems in equal steps of period: consecutive triples in the NASA Exoplanet Archive's systems of three or more planets whose two period differences agree to 0.5 per cent, a spacing no resonance asks for, each read for a chain n : n+1 : n+2 (arithmetic and resonant at once); triples with equal period ratios are counted beside them. + + python -I seti.py transits steps [record] [--tolerance 0.005] [--chain-tol 0.02]""" + + +def steps_main(record=False, tolerance=0.005, chain_tol=0.02): + rows = core.exoplanets("SELECT hostname, pl_name, pl_orbper FROM pscomppars WHERE sy_pnum >= 3 AND pl_orbper IS NOT NULL") + sysd = {} + for r in rows: + sysd.setdefault(r["hostname"], []).append((float(r["pl_orbper"]), r["pl_name"])) + out, geo, n = [], 0, 0 + for h, ps in sysd.items(): + ps.sort() + for i in range(len(ps) - 2): + (a, na), (b, nb), (c, nc) = ps[i:i + 3] + n += 1 + geo += abs((c / b) - (b / a)) / (b / a) < tolerance + if abs((c - b) - (b - a)) / (b - a) < tolerance: + k = a / (b - a) + chain = abs(k - round(k)) < chain_tol * max(round(k), 1) + out.append(dict(host=h, planets=[na, nb, nc], periods=[a, b, c], k=k, chain="%d:%d:%d" % (round(k), round(k) + 1, round(k) + 2) if chain else None)) + print("%d consecutive triples in %d systems; equal steps to 0.5 per cent %d, equal ratios %d" % (n, len(sysd), len(out), geo)) + for o in out: + print(" %s %s: %s, %s" % (o["host"], [round(x, 3) for x in o["periods"]], "chain " + o["chain"] if o["chain"] else "no integer chain", + o["planets"])) + json.dump(dict(n=n, systems=len(sysd), equal_ratios=geo, steps=out), open(core.results("period_steps.json"), "w"), indent=1) + if record: + core.record_search( + "exoplanets_period_steps", "Planetary systems in equal period steps", archive="NASA Exoplanet Archive pscomppars", + selection="systems of three or more planets: %d, %d consecutive triples" % (len(sysd), n), code=os.path.abspath(__file__), + entry="steps", n_targets=n, n_unit="planet triples", params=dict(tolerance=tolerance, chain_tol=chain_tol), + null_summary="triples with equal period ratios, the resonant chains: %d" % geo, + sensitivity="three neighbouring planets whose period differences agree to 0.5 per cent", ledger="Planetary systems in equal period steps", + result="%d triples, every one %s" % (len(out), "an n : n+1 : n+2 chain" if all(o["chain"] for o in out) else "read individually")) + core.clear_targets("exoplanets_period_steps") + core.record_targets("exoplanets_period_steps", [dict( + target="system:%s" % o["host"], stat=o["k"], unit="first period over the step", + vet="near-resonance" if o["chain"] else None, note="%s: %s d, chain %s" % (", ".join(o["planets"]), ", ".join("%.3f" % x for x in o["periods"]), o["chain"])) + for o in out]) + print("recorded") + + +earthday_DOC = r"""Planets on Earth's day: NASA Exoplanet Archive composite planets whose period lies between the sidereal day less 0.2 per cent and the solar day plus 0.2 per cent, a period chosen to match Earth's turning, against the density of periods at 0.7-1.4 d, each read for its discovery method, since a ground-based survey's nights alias its periods at one day. + + python -I seti.py transits earthday [record] [--tolerance 0.002] [--window-d 0.7 1.4]""" + +DAY_SIDEREAL = 0.99726957 + + +def earthday_main(record=False, tolerance=0.002, window_d=[0.7, 1.4]): + from scipy.stats import poisson + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbper, pl_orbpererr1, disc_method, disc_facility FROM pscomppars " + "WHERE pl_orbper BETWEEN %g AND %g" % (window_d[0], window_d[1])) + lo, hi = DAY_SIDEREAL * (1 - tolerance), 1 + tolerance + P = np.array([float(r["pl_orbper"]) for r in rows]) + expect = float(np.sum((P < lo) | (P > hi))) / ((window_d[1] - window_d[0]) - (hi - lo)) * (hi - lo) + hits = sorted([r for r in rows if lo <= float(r["pl_orbper"]) <= hi], key=lambda r: float(r["pl_orbper"])) + p = float(poisson.sf(len(hits) - 1, expect)) if hits else 1.0 + print("%d planets at 0.7-1.4 d; between %.5f and %.5f d %d against %.2f expected (Poisson p %.2f)" % (len(P), lo, hi, len(hits), expect, p)) + for r in hits: + print(" %s: %.6f d +- %s (%s, %s)" % (r["pl_name"], float(r["pl_orbper"]), r["pl_orbpererr1"], r["disc_method"], r["disc_facility"])) + json.dump(dict(n=len(P), expect=expect, p=p, hits=hits), open(core.results("earthday_planets.json"), "w"), indent=1) + if record: + core.record_search( + "exoplanets_earth_day", "Planets on Earth's day", archive="NASA Exoplanet Archive pscomppars", + selection="composite planets with periods of 0.7-1.4 d: %d" % len(P), code=os.path.abspath(__file__), entry="earthday", + n_targets=len(P), n_unit="planets", params=dict(window_d=[lo, hi], tolerance=tolerance, range_d=window_d), + null_summary="the density of periods at 0.7-1.4 d outside the window: %.2f expected inside it" % expect, + sensitivity="a planet whose period matches the sidereal or solar day to 0.2 per cent", ledger="Planets on Earth's day", + result="%d against %.2f expected: %s" % (len(hits), expect, ", ".join("%s (%s)" % (r["pl_name"], r["disc_facility"]) for r in hits) or "none")) + core.clear_targets("exoplanets_earth_day") + core.record_targets("exoplanets_earth_day", [dict( + target="planet:%s" % r["pl_name"], stat=float(r["pl_orbper"]), unit="period, d", + vet="chance-rate" if p > 0.01 else None, note="%s, %s" % (r["disc_method"], r["disc_facility"])) for r in hits]) + print("recorded") + + +sharedperiod_DOC = r"""Planets on one clock: pairs of planets in different systems whose periods, each measured to 5e-7 or better, agree to 1e-6 and within three times their combined error, a period standardised across systems, against the pairs within 1e-4 scaled to the tolerance, since a smooth distribution of periods gives pairs in proportion to it. + + python -I seti.py transits sharedperiod [record] [--precision 5e-7] [--tolerance 1e-6] [--sigma 3]""" + + +def sharedperiod_main(record=False, precision=5e-7, tolerance=1e-6, sigma=3.0): + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbper, pl_orbpererr1, pl_orbpererr2, disc_method FROM pscomppars " + "WHERE pl_orbper IS NOT NULL AND pl_orbpererr1 IS NOT NULL") + good = [] + for r in rows: + P, e = float(r["pl_orbper"]), max(abs(float(r["pl_orbpererr1"] or 0)), abs(float(r["pl_orbpererr2"] or 0))) + if 0 < e < precision * P: + good.append((P, e, r)) + good.sort(key=lambda t: t[0]) + t1, t2, t3 = tolerance, 10 * tolerance, 100 * tolerance + counts, pairs = {t1: 0, t2: 0, t3: 0}, [] + for i, (P, e, r) in enumerate(good): + for j in range(i + 1, len(good)): + Q, f, s = good[j] + d = (Q - P) / P + if d > t3: + break + if r["hostname"] == s["hostname"]: + continue + for t in counts: + counts[t] += d < t + if d < t2: + pairs.append(dict(a=r["pl_name"], b=s["pl_name"], pa=P, pb=Q, frac=d, sigma=(Q - P) / np.hypot(e, f))) + expect = counts[t3] / 100.0 + within = [x for x in pairs if x["frac"] < t1 and x["sigma"] < sigma] + print("%d planets with periods to %g; pairs in different systems within %g: %d, %g: %d, %g: %d against %.2f scaled; within " + "%g combined errors at %g: %d" % (len(good), precision, t3, counts[t3], t2, counts[t2], t1, counts[t1], expect, sigma, t1, len(within))) + for x in sorted(pairs, key=lambda x: x["frac"])[:15]: + print(" %s %.7f d and %s %.7f d: %.1e apart, %.1f combined sigma" % (x["a"], x["pa"], x["b"], x["pb"], x["frac"], x["sigma"])) + json.dump(dict(n=len(good), counts={str(k): v for k, v in counts.items()}, expect=expect, pairs=pairs), open(core.results("shared_periods.json"), "w"), indent=1) + if record: + core.record_search( + "exoplanets_shared_periods", "Planets on one clock", archive="NASA Exoplanet Archive pscomppars", + selection="composite planets with periods measured to 5e-7: %d" % len(good), code=os.path.abspath(__file__), entry="sharedperiod", + n_targets=len(good), n_unit="planets", params=dict(precision=precision, tolerance=tolerance, sigma=sigma), + null_summary="pairs in different systems within %g (%d) scaled to %g: %.2f" % (t3, counts[t3], t1, expect), + sensitivity="two planets of different systems on one period to %g and within their errors" % t1, + ledger="Planets on one clock", + result="%d pairs within %g against %.2f, %d of them within %g combined errors" % (counts[t1], t1, expect, len(within), sigma)) + core.clear_targets("exoplanets_shared_periods") + core.record_targets("exoplanets_shared_periods", [dict( + target="planet:%s" % x["a"], stat=x["frac"], unit="fractional period difference", + vet="chance-rate" if counts[t1] <= expect + 3 * np.sqrt(max(expect, 1)) else None, + note="with %s, %.1f combined sigma" % (x["b"], x["sigma"])) for x in pairs]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- +# periods shared across the sky by pulsating stars, eclipsing binaries and binary orbits, and systems of identical planets + + +def clock_pairs(P, e, ra, dec, prec, min_sep=1.0, tol=1e-6, sigma=3.0): + """Pairs of a sample on one clock: periods measured to PREC, pairs more than MIN_SEP deg apart (a star and a blended neighbour share a period) within TOL, ten and a hundred times it, and the pairs at TOL within SIGMA combined errors as (i, j, frac, sigma).""" + ok = np.nonzero((e > 0) & (e < prec * P))[0] + o = ok[np.argsort(P[ok])] + Ps = P[o] + n = np.searchsorted(Ps, Ps * (1 + 100 * tol), side="right") - np.arange(len(Ps)) - 1 + i = np.repeat(np.arange(len(Ps)), n) + j = i + np.arange(n.sum()) - np.repeat(np.cumsum(n) - n, n) + 1 + a, b = o[i], o[j] + frac = (P[b] - P[a]) / P[a] + r1, d1, r2, d2 = (np.radians(v) for v in (ra[a], dec[a], ra[b], dec[b])) + sep = np.degrees(2 * np.arcsin(np.sqrt(np.sin((d2 - d1) / 2) ** 2 + np.cos(d1) * np.cos(d2) * np.sin((r2 - r1) / 2) ** 2))) + far = sep > min_sep + counts = {t: int(((frac < t) & far).sum()) for t in (tol, 10 * tol, 100 * tol)} + sig = (P[b] - P[a]) / np.hypot(e[a], e[b]) + m = far & (frac < tol) & (sig < sigma) + return len(ok), counts, list(zip(a[m], b[m], frac[m], sig[m])) + + +def clock_main(record, sid, approach, archive, what, query, prec, entry, tol=1e-6, min_sep=1.0, sigma=3.0): + """One clock test on a Gaia DR3 variability or orbit table: QUERY returns source_id, ra, dec, P and its error; pairs within TOL more than MIN_SEP deg apart within SIGMA combined errors.""" + rows = core.tap_async("gaia", query, maxrec=2000000) + P = np.array([float(r["p"]) for r in rows]) + e = np.array([float(r["e_p"]) for r in rows]) + ra = np.array([float(r["ra"]) for r in rows]) + dec = np.array([float(r["dec"]) for r in rows]) + n, counts, pairs = clock_pairs(P, e, ra, dec, prec, min_sep, tol, sigma) + expect = counts[100 * tol] / 100.0 + print("%d %s, %d with periods to %g; pairs more than %g deg apart within %g: %d, %g: %d, %g: %d against %.1f scaled; within " + "%g combined errors at %g: %d" % (len(rows), what, n, prec, min_sep, 100 * tol, counts[100 * tol], 10 * tol, counts[10 * tol], tol, counts[tol], + expect, sigma, tol, len(pairs))) + for a, b, f, s in sorted(pairs, key=lambda x: x[2])[:10]: + print(" Gaia DR3 %s %.8f d and %s %.8f d: %.1e apart, %.1f combined sigma" % (rows[a]["source_id"], P[a], rows[b]["source_id"], P[b], f, s)) + if record: + excess = counts[tol] > expect + 3 * math.sqrt(max(expect, 1)) + core.record_run( + sid, approach, archive, "%s with periods measured to %g: %d" % (what, prec, n), os.path.abspath(__file__), entry, n, what, + dict(precision=prec, tolerance=tol, sigma=sigma, min_sep_deg=min_sep), "pairs within %g (%d) scaled to %g: %.1f" % (100 * tol, counts[100 * tol], tol, expect), + "%s more than %g deg apart on one period to %g within their errors" % (what, min_sep, tol), + "%d pairs within %g against %.1f, %d of them within %g combined errors" % (counts[tol], tol, expect, len(pairs), sigma), + [dict(target="gaia_dr3:%s" % rows[a]["source_id"], stat=float(f), unit="fractional period difference", + vet=None if excess else "chance-rate", note="with Gaia DR3 %s, %.1f combined sigma" % (rows[b]["source_id"], s)) + for a, b, f, s in pairs]) + print("recorded") + + +rrlclock_DOC = r"""RR Lyrae on one clock: Gaia DR3 RR Lyrae (vari_rrlyrae) with fundamental periods measured to 1e-5, pairs more than 1 deg apart whose periods agree to 1e-6 and within three combined errors, against the pairs within 1e-4 scaled to the tolerance. + + python -I seti.py transits rrlclock [record] [--precision 1e-5] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]""" + + +def rrlclock_main(record=False, precision=1e-5, tolerance=1e-6, min_sep_deg=1.0, sigma=3.0): + clock_main(record, "gaia_rrlyrae_clock", "RR Lyrae on one clock", "Gaia DR3 vari_rrlyrae", "RR Lyrae", + "SELECT v.source_id, g.ra, g.dec, v.pf AS p, v.pf_error AS e_p FROM gaiadr3.vari_rrlyrae AS v JOIN gaiadr3.gaia_source AS g " + "ON v.source_id = g.source_id WHERE v.pf_error > 0 AND v.pf_error < %g * v.pf" % precision, precision, "rrlclock", tolerance, min_sep_deg, sigma) + + +cepclock_DOC = r"""Cepheids on one clock: Gaia DR3 Cepheids (vari_cepheid) with fundamental periods measured to 1e-5, pairs more than 1 deg apart whose periods agree to 1e-6 and within three combined errors, against the pairs within 1e-4 scaled to the tolerance. + + python -I seti.py transits cepclock [record] [--precision 1e-5] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]""" + + +def cepclock_main(record=False, precision=1e-5, tolerance=1e-6, min_sep_deg=1.0, sigma=3.0): + clock_main(record, "gaia_cepheid_clock", "Cepheids on one clock", "Gaia DR3 vari_cepheid", "Cepheids", + "SELECT v.source_id, g.ra, g.dec, v.pf AS p, v.pf_error AS e_p FROM gaiadr3.vari_cepheid AS v JOIN gaiadr3.gaia_source AS g " + "ON v.source_id = g.source_id WHERE v.pf_error > 0 AND v.pf_error < %g * v.pf" % precision, precision, "cepclock", tolerance, min_sep_deg, sigma) + + +ebclock_DOC = r"""Eclipsing binaries on one clock: Gaia DR3 eclipsing binaries (vari_eclipsing_binary) with orbital frequencies measured to 1e-6, pairs more than 1 deg apart whose periods agree to 1e-6 and within three combined errors, against the pairs within 1e-4 scaled to the tolerance. + + python -I seti.py transits ebclock [record] [--precision 1e-6] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]""" + + +def ebclock_main(record=False, precision=1e-6, tolerance=1e-6, min_sep_deg=1.0, sigma=3.0): + clock_main(record, "gaia_eclipser_clock", "Eclipsing binaries on one clock", "Gaia DR3 vari_eclipsing_binary", "eclipsing binaries", + "SELECT v.source_id, g.ra, g.dec, 1.0 / v.frequency AS p, v.frequency_error / (v.frequency * v.frequency) AS e_p " + "FROM gaiadr3.vari_eclipsing_binary AS v JOIN gaiadr3.gaia_source AS g ON v.source_id = g.source_id " + "WHERE v.frequency_error > 0 AND v.frequency_error < %g * v.frequency" % precision, precision, "ebclock", tolerance, min_sep_deg, sigma) + + +nssclock_DOC = r"""Binary orbits on one clock: Gaia DR3 two-body orbits (nss_two_body_orbit) with periods measured to 1e-5, pairs more than 1 deg apart whose periods agree to 1e-6 and within three combined errors, against the pairs within 1e-4 scaled to the tolerance. + + python -I seti.py transits nssclock [record] [--precision 1e-5] [--tolerance 1e-6] [--min-sep-deg 1] [--sigma 3]""" + + +def nssclock_main(record=False, precision=1e-5, tolerance=1e-6, min_sep_deg=1.0, sigma=3.0): + clock_main(record, "gaia_orbit_clock", "Binary orbits on one clock", "Gaia DR3 nss_two_body_orbit", "binary orbits", + "SELECT n.source_id, g.ra, g.dec, n.period AS p, n.period_error AS e_p FROM gaiadr3.nss_two_body_orbit AS n JOIN gaiadr3.gaia_source AS g " + "ON n.source_id = g.source_id WHERE n.period_error > 0 AND n.period_error < %g * n.period" % precision, precision, "nssclock", tolerance, min_sep_deg, sigma) + + +uniform_DOC = r"""Systems built from identical planets: composite systems of three or more planets, every one with mass measured (not estimated from radius) and radius measured to 15 per cent, whose masses and whose radii are each consistent with one value: the chi-square of each about its error-weighted mean, flagged where both have p above 0.05. + + python -I seti.py transits uniform [record] [--precision 0.15] [--p-min 0.05]""" + + +def uniform_main(record=False, precision=0.15, p_min=0.05): + from scipy.stats import chi2 + rows = pcp("hostname, pl_name, pl_bmasse, pl_bmasseerr1, pl_bmasseerr2, pl_rade, pl_radeerr1, pl_radeerr2, sy_pnum", + "sy_pnum >= 3 AND pl_bmasse IS NOT NULL AND pl_rade IS NOT NULL AND pl_bmassprov = 'Mass'") + sysd = {} + for r in rows: + if (rel_err(r, "pl_bmasse") or 1) <= precision and (rel_err(r, "pl_rade") or 1) <= precision: + sysd.setdefault(r["hostname"], []).append(r) + full = {h: ps for h, ps in sysd.items() if len(ps) >= 3 and len(ps) == int(ps[0]["sy_pnum"])} + + def one_value(ps, key): + v = np.array([float(p[key]) for p in ps]) + e = np.array([rel_err(p, key) * float(p[key]) for p in ps]) + m = float(np.sum(v / e ** 2) / np.sum(1 / e ** 2)) + c = float(np.sum(((v - m) / e) ** 2)) + return m, c, float(chi2.sf(c, len(v) - 1)) + res = {h: (one_value(ps, "pl_bmasse"), one_value(ps, "pl_rade"), len(ps)) for h, ps in full.items()} + hits = sorted(h for h, (m, r, n) in res.items() if m[2] > p_min and r[2] > p_min) + print("%d systems of three or more planets with every mass and radius to 15 per cent; masses and radii both consistent with one value: %d %s" % ( + len(full), len(hits), hits)) + for h, (m, r, n) in sorted(res.items(), key=lambda kv: -min(kv[1][0][2], kv[1][1][2])): + print(" %s (%d planets): mass chi-square %.0f (p %.2g), radius chi-square %.0f (p %.2g)" % (h, n, m[1], m[2], r[1], r[2])) + if record: + core.record_run( + "exoplanets_identical_systems", "Systems built from identical planets", "NASA Exoplanet Archive pscomppars", + "systems of three or more planets, every one with measured mass and radius to 15 per cent: %d" % len(full), os.path.abspath(__file__), + "uniform", len(full), "planetary systems", dict(precision=precision, p_min=p_min), "chi-square of the masses and of the radii about their means", + "a system whose planets all share one mass and radius within their errors", "%d; the most alike %s" % (len(hits), "; ".join( + "%s (mass p %.1g, radius p %.1g)" % (h, m[2], r[2]) for h, (m, r, n) in sorted(res.items(), key=lambda kv: -min(kv[1][0][2], kv[1][1][2]))[:3])), + [dict(target="system:%s" % h, stat=min(m[2], r[2]), unit="smaller p of one mass and one radius") for h, (m, r, n) in res.items()]) + print("recorded") + + +# -------------------------------------------------------------------------------------------------------------- +# planets past physical limits, copies of planets and systems, and period ratios that spell constants + + +def pcp(cols, where): + """Rows of the Exoplanet Archive's composite planet table.""" + return core.exoplanets("SELECT %s FROM pscomppars WHERE %s" % (cols, where)) + + +def rel_err(r, key): + """The larger fractional error of a pscomppars value, or None.""" + v, e1, e2 = num(r.get(key)), num(r.get(key + "err1")), num(r.get(key + "err2")) + if not v or e1 is None: + return None + return max(abs(e1), abs(e2 or 0)) / abs(v) + + +rocheplanets_DOC = r"""Planets inside their own Roche limit: composite planets with mass and radius measured to a third or better, the shortest period a fluid body of their density survives, 12.6 h (density / 1 g cm^-3)^-1/2 (Rappaport et al. 2013), against their period, flagged where the period is shorter at 3 sigma, which only a rigid structure survives. + + python -I seti.py transits rocheplanets [record] [--precision 0.333] [--sigma 3] [--roche-h 12.6]""" + + +def rocheplanets_main(record=False, precision=1 / 3.0, sigma=3.0, roche_h=12.6): + rows = pcp("pl_name, pl_orbper, pl_bmasse, pl_bmasseerr1, pl_bmasseerr2, pl_rade, pl_radeerr1, pl_radeerr2", + "pl_bmasse IS NOT NULL AND pl_rade IS NOT NULL AND pl_orbper IS NOT NULL AND pl_bmassprov = 'Mass'") + out = [] + for r in rows: + if num(r["pl_orbper"]) is None: + continue + em, er = rel_err(r, "pl_bmasse"), rel_err(r, "pl_rade") + if em is None or er is None or em > precision or er > precision: + continue + rho = 5.514 * float(r["pl_bmasse"]) / float(r["pl_rade"]) ** 3 + erho = rho * math.hypot(em, 3 * er) + pmin = roche_h * rho ** -0.5 + epmin = 0.5 * pmin * erho / rho + p_h = float(r["pl_orbper"]) * 24 + out.append(dict(name=r["pl_name"], p_h=p_h, rho=rho, pmin=pmin, z=(pmin - p_h) / epmin if epmin > 0 else 0.0)) + inside = sorted([o for o in out if o["z"] > sigma], key=lambda o: -o["z"]) + print("%d planets with mass and radius to a third; inside the fluid Roche limit at 3 sigma: %d" % (len(out), len(inside))) + for o in sorted(out, key=lambda o: -o["z"])[:8]: + print(" %s: P %.2f h, density %.2f g/cm3, shortest fluid period %.2f h, %.1f sigma inside" % (o["name"], o["p_h"], o["rho"], o["pmin"], o["z"])) + json.dump(out, open(core.results("roche_planets.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanets_inside_roche", "Planets inside their own Roche limit", "NASA Exoplanet Archive pscomppars", + "planets with measured mass and radius to a third: %d" % len(out), os.path.abspath(__file__), "rocheplanets", len(out), "planets", + dict(sigma=sigma, roche_h=roche_h, precision=precision), "each planet's own errors", "a planet orbiting faster than a fluid body of its density survives", + "%d inside at 3 sigma; the nearest %s" % (len(inside), "; ".join("%s %.1f sigma" % (o["name"], o["z"]) for o in sorted(out, key=lambda o: -o["z"])[:3])), + [dict(target="planet:%s" % o["name"], stat=o["z"], unit="sigma inside the fluid Roche limit") for o in inside]) + print("recorded") + + +copyplanets_DOC = r"""Copy planets in different systems: composite planets with mass and radius measured to 3 per cent, pairs in different systems agreeing to 1 per cent in radius, mass and period, against the pairs found with the masses shuffled among planets of like radius fifty times. + + python -I seti.py transits copyplanets [record] [--tol 0.01] [--precision 0.03] [--shuffles 50]""" + + +def copyplanets_main(record=False, tol=0.01, precision=0.03, shuffles=50): + rows = pcp("pl_name, hostname, pl_orbper, pl_bmasse, pl_bmasseerr1, pl_bmasseerr2, pl_rade, pl_radeerr1, pl_radeerr2", + "pl_bmasse IS NOT NULL AND pl_rade IS NOT NULL AND pl_bmassprov = 'Mass'") + good = [r for r in rows if (rel_err(r, "pl_bmasse") or 1) <= precision and (rel_err(r, "pl_rade") or 1) <= precision] + R = np.array([float(r["pl_rade"]) for r in good]) + M = np.array([float(r["pl_bmasse"]) for r in good]) + P = np.array([float(r["pl_orbper"]) for r in good]) + H = [r["hostname"] for r in good] + + def count(m): + n = [] + for i in range(len(good)): + for j in range(i + 1, len(good)): + if H[i] != H[j] and abs(R[i] / R[j] - 1) < tol and abs(m[i] / m[j] - 1) < tol and abs(P[i] / P[j] - 1) < tol: + n.append((i, j)) + return n + found = count(M) + rng = np.random.default_rng(9) + order = np.argsort(R) + null = [] + for _ in range(shuffles): + m = M.copy() + for s in range(0, len(order), 10): + blk = order[s:s + 10] + m[blk] = m[rng.permutation(blk)] + null.append(len(count(m))) + print("%d planets with mass and radius to 3 per cent; copies in different systems %d; with masses shuffled among planets of like radius: " + "mean %.2f" % (len(good), len(found), float(np.mean(null)))) + for i, j in found: + print(" %s and %s: R %.2f/%.2f, M %.1f/%.1f, P %.3f/%.3f" % (good[i]["pl_name"], good[j]["pl_name"], R[i], R[j], M[i], M[j], P[i], P[j])) + if record: + core.record_run( + "exoplanets_copies", "Copy planets in different systems", "NASA Exoplanet Archive pscomppars", + "planets with mass and radius to 3 per cent: %d" % len(good), os.path.abspath(__file__), "copyplanets", len(good), "planets", + dict(tol=tol, precision=precision, shuffles=shuffles), "masses shuffled among planets of like radius: mean %.2f" % float(np.mean(null)), + "two planets of different systems alike to 1 per cent in radius, mass and period", + "%d pairs against %.2f" % (len(found), float(np.mean(null))), + [dict(target="planet:%s" % good[i]["pl_name"], note="copy of %s" % good[j]["pl_name"]) for i, j in found]) + print("recorded") + + +dayside_DOC = r"""Daysides hotter than their stars allow: every brightness temperature of the Exoplanet Archive's emission-spectroscopy table against the hottest dayside a planet can have from its star, T_eff (R*/a)^1/2 (2/3)^1/4 with zero albedo and no redistribution (pscomppars T_eff and a/R*), flagged where it exceeds that at 3 sigma. + + python -I seti.py transits dayside [record] [--sigma 3]""" + + +def dayside_main(record=False, sigma=3.0): + em = core.exoplanets("SELECT plntname, centralwavelng, espbritemp, espbritemperr1, espbritemperr2, facility, instrument FROM emissionspec " + "WHERE espbritemp IS NOT NULL") + host = {r["pl_name"]: r for r in pcp("pl_name, st_teff, pl_ratdor", "st_teff IS NOT NULL AND pl_ratdor IS NOT NULL")} + out = [] + for r in em: + h = host.get(r["plntname"]) + if not h: + continue + tmax = float(h["st_teff"]) / math.sqrt(float(h["pl_ratdor"])) * (2 / 3.0) ** 0.25 + t, e = float(r["espbritemp"]), abs(num(r["espbritemperr2"]) or num(r["espbritemperr1"]) or 0) + out.append(dict(planet=r["plntname"], wl=num(r["centralwavelng"]), t=t, e=e, tmax=tmax, z=(t - tmax) / e if e > 0 else 0.0, + inst="%s %s" % (r["facility"], r["instrument"]))) + hot = sorted([o for o in out if o["z"] > sigma], key=lambda o: -o["z"]) + print("%d brightness temperatures with host temperature and a/R*; above the hottest possible dayside at 3 sigma: %d over %d planets" % ( + len(out), len(hot), len({o["planet"] for o in hot}))) + for o in hot[:15]: + print(" %s at %s um: %.0f +- %.0f K against %.0f K (%.1f sigma), %s" % (o["planet"], o["wl"], o["t"], o["e"], o["tmax"], o["z"], o["inst"])) + json.dump(out, open(core.results("dayside_heat.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanets_dayside_excess", "Daysides hotter than their stars allow", "NASA Exoplanet Archive emissionspec and pscomppars", + "brightness temperatures with host parameters: %d" % len(out), os.path.abspath(__file__), "dayside", len(out), "measurements", + dict(sigma=sigma), "the hottest dayside zero albedo and no redistribution give", "a dayside brighter than its star can heat it", + "%d measurements of %d planets above at 3 sigma" % (len(hot), len({o["planet"] for o in hot})), + [dict(target="planet:%s" % o["planet"], stat=o["z"], unit="sigma above the hottest possible dayside", + note="%.0f +- %.0f K at %s um against %.0f K, %s" % (o["t"], o["e"], o["wl"], o["tmax"], o["inst"])) for o in hot]) + print("recorded") + + +constants_DOC = r"""Period ratios that spell constants: every adjacent planet pair of the composite table's multi-planet systems, ratios within 1 part in 10,000 of pi, e, the golden ratio, sqrt 2 or sqrt 3, against the hits for 1000 random numbers between 1.2 and 3.5. + + python -I seti.py transits constants [record] [--tol 1e-4] [--draws 1000] [--draw-range 1.2 3.5]""" + +CONSTANTS = {"pi": math.pi, "e": math.e, "golden ratio": (1 + math.sqrt(5)) / 2, "sqrt 2": math.sqrt(2), "sqrt 3": math.sqrt(3)} + + +def constants_main(record=False, tol=1e-4, draws=1000, draw_range=[1.2, 3.5]): + rows = pcp("hostname, pl_name, pl_orbper", "sy_pnum >= 2 AND pl_orbper IS NOT NULL") + sysd = {} + for r in rows: + sysd.setdefault(r["hostname"], []).append((float(r["pl_orbper"]), r["pl_name"])) + ratios = [] + for ps in sysd.values(): + ps.sort() + for (a, na), (b, nb) in zip(ps, ps[1:]): + ratios.append((b / a, na, nb)) + r = np.array([x[0] for x in ratios]) + hits = [(k, x) for k, c in CONSTANTS.items() for x in ratios if abs(x[0] / c - 1) < tol] + rng = np.random.default_rng(13) + null = [int(np.sum(np.abs(r / c - 1) < tol)) for c in rng.uniform(draw_range[0], draw_range[1], draws)] + exp5 = 5 * float(np.mean(null)) + print("%d adjacent pairs; within 1e-4 of a constant %d against %.2f for five random numbers: %s" % ( + len(ratios), len(hits), exp5, ["%s: %s/%s %.6f" % (k, x[2], x[1], x[0]) for k, x in hits])) + if record: + core.record_run( + "exoplanets_constant_ratios", "Period ratios that spell constants", "NASA Exoplanet Archive pscomppars", + "adjacent planet pairs: %d" % len(ratios), os.path.abspath(__file__), "constants", len(ratios), "planet pairs", + dict(tol=tol, constants=list(CONSTANTS), draws=draws, draw_range=draw_range), "%d random numbers between %g and %g: %.3f hits each" % ( + draws, draw_range[0], draw_range[1], float(np.mean(null))), + "two neighbouring planets whose period ratio equals a mathematical constant to 1e-4", + "%d hits against %.2f" % (len(hits), exp5), + [dict(target="planet:%s" % x[2], stat=x[0], unit="period ratio", vet="chance-rate" if len(hits) <= exp5 + 3 * math.sqrt(max(exp5, 1)) else None, + note="%s over %s against %s" % (x[2], x[1], k)) for k, x in hits]) + print("recorded") + + +hillpack_DOC = r"""Systems packed tighter than Hill stability: adjacent planets of the composite table with masses (measured or minimum) and semi-major axes around stars with masses, their separation in mutual Hill radii, ((m1+m2)/3M*)^1/3 (a1+a2)/2, flagged below 2 sqrt 3, Gladman's limit for two planets, each read for masses taken from a mass-radius relation. + + python -I seti.py transits hillpack [record] [--hill-limit 3.464] [--resonance-tol 0.01]""" + + +def hillpack_main(record=False, hill_limit=3.4641016151377544, resonance_tol=0.01): + rows = pcp("hostname, pl_name, pl_orbsmax, pl_orbper, pl_bmasse, pl_bmassprov, st_mass, disc_method", "sy_pnum >= 2 AND pl_orbsmax IS NOT NULL " + "AND pl_bmasse IS NOT NULL AND st_mass IS NOT NULL") + sysd = {} + for r in rows: + sysd.setdefault(r["hostname"], []).append(r) + out = [] + for h, ps in sysd.items(): + ps.sort(key=lambda r: float(r["pl_orbsmax"])) + for a, b in zip(ps, ps[1:]): + a1, a2 = float(a["pl_orbsmax"]), float(b["pl_orbsmax"]) + m = (float(a["pl_bmasse"]) + float(b["pl_bmasse"])) * 3.003e-6 + rh = (m / (3 * float(a["st_mass"]))) ** (1 / 3.0) * (a1 + a2) / 2 + vet = [] + if "Microlensing" in (a["disc_method"] or ""): + vet.append("unconstrained-geometry") + if "M-R" in (a["pl_bmassprov"] or "") + (b["pl_bmassprov"] or ""): + vet.append("estimated-masses") + if num(a["pl_orbper"]) and num(b["pl_orbper"]): + ratio = num(b["pl_orbper"]) / num(a["pl_orbper"]) + if any(abs(ratio * q / p - 1) < resonance_tol for p in range(2, 7) for q in range(1, p)): + vet.append("near-resonance") + out.append(dict(host=h, a=a["pl_name"], b=b["pl_name"], delta=(a2 - a1) / rh if rh > 0 else 99, + prov="%s/%s" % (a["pl_bmassprov"], b["pl_bmassprov"]), vet=vet)) + tight = sorted([o for o in out if o["delta"] < hill_limit], key=lambda o: o["delta"]) + print("%d adjacent pairs; closer than 2 sqrt 3 mutual Hill radii: %d" % (len(out), len(tight))) + for o in tight[:15]: + print(" %s / %s: %.2f mutual Hill radii, masses %s" % (o["a"], o["b"], o["delta"], o["prov"])) + if record: + core.record_run( + "exoplanets_hill_packing", "Systems packed tighter than Hill stability", "NASA Exoplanet Archive pscomppars", + "adjacent pairs with masses, semi-major axes and stellar masses: %d" % len(out), os.path.abspath(__file__), "hillpack", len(out), + "planet pairs", dict(limit=hill_limit, resonance_tol=resonance_tol), "Gladman's two-planet Hill-stability limit", "two neighbouring planets closer than " + "Hill stability allows", "%d pairs below 2 sqrt 3 mutual Hill radii" % len(tight), + [dict(target="planet:%s" % o["a"], stat=o["delta"], unit="separation in mutual Hill radii", vet="; ".join(o["vet"]) or None, + note="with %s, masses %s" % (o["b"], o["prov"])) for o in tight]) + print("recorded") + + +coorbital_DOC = r"""Two planets on one orbit: planets of one system in the composite table whose periods agree to 1 per cent, co-orbitals no survey has confirmed. + + python -I seti.py transits coorbital [record] [--tol 0.01]""" + + +def coorbital_main(record=False, tol=0.01): + rows = pcp("hostname, pl_name, pl_orbper, disc_method", "sy_pnum >= 2 AND pl_orbper IS NOT NULL") + sysd = {} + for r in rows: + sysd.setdefault(r["hostname"], []).append(r) + hits = [] + for h, ps in sysd.items(): + ps.sort(key=lambda r: float(r["pl_orbper"])) + for a, b in zip(ps, ps[1:]): + if float(b["pl_orbper"]) / float(a["pl_orbper"]) - 1 < tol: + hits.append((a, b)) + print("%d systems of two or more planets; pairs within 1 per cent in period: %d %s" % ( + len(sysd), len(hits), ["%s %.4f d / %s %.4f d (%s)" % (a["pl_name"], float(a["pl_orbper"]), b["pl_name"], float(b["pl_orbper"]), a["disc_method"]) + for a, b in hits])) + if record: + core.record_run( + "exoplanets_coorbital", "Two planets on one orbit", "NASA Exoplanet Archive pscomppars", "systems of two or more planets: %d" % len(sysd), + os.path.abspath(__file__), "coorbital", len(sysd), "planetary systems", dict(tol=tol), "co-orbital planets, none confirmed in nature", + "two planets of one system with periods equal to 1 per cent", "%d pairs" % len(hits), + [dict(target="planet:%s" % a["pl_name"], stat=float(b["pl_orbper"]) / float(a["pl_orbper"]) - 1, unit="fractional period difference", + note="with %s" % b["pl_name"]) for a, b in hits]) + print("recorded") + + +copysystems_DOC = r"""Copied planetary systems: systems of three or more planets in the composite table whose two consecutive period ratios both agree to 0.1 per cent with another system's, one architecture built twice, against the count with the second ratios shuffled among the systems. + + python -I seti.py transits copysystems [record] [--tol 1e-3] [--shuffles 50]""" + + +def copysystems_main(record=False, tol=1e-3, shuffles=50): + rows = pcp("hostname, pl_name, pl_orbper", "sy_pnum >= 3 AND pl_orbper IS NOT NULL") + sysd = {} + for r in rows: + sysd.setdefault(r["hostname"], []).append(float(r["pl_orbper"])) + trip = [] + for h, ps in sysd.items(): + ps.sort() + for i in range(len(ps) - 2): + trip.append((h, ps[i + 1] / ps[i], ps[i + 2] / ps[i + 1])) + + def count(t): + n = [] + for i in range(len(t)): + for j in range(i + 1, len(t)): + if t[i][0] != t[j][0] and abs(t[i][1] / t[j][1] - 1) < tol and abs(t[i][2] / t[j][2] - 1) < tol: + n.append((t[i], t[j])) + return n + found = count(trip) + rng = np.random.default_rng(31) + null = [] + for _ in range(shuffles): + sec = [x[2] for x in trip] + rng.shuffle(sec) + null.append(len(count([(a, b, c) for (a, b, _), c in zip(trip, sec)]))) + print("%d consecutive triples; copies across systems %d against %.2f shuffled: %s" % ( + len(trip), len(found), float(np.mean(null)), [(a[0], b[0], round(a[1], 4), round(a[2], 4)) for a, b in found])) + if record: + core.record_run("exoplanets_copied_systems", "Copied planetary systems", "NASA Exoplanet Archive pscomppars", "consecutive triples: %d" % len(trip), + os.path.abspath(__file__), "copysystems", len(trip), "planet triples", dict(tol=tol, shuffles=shuffles), + "second ratios shuffled among systems: %.2f" % float(np.mean(null)), "two systems with the same two period ratios to 0.1 per cent", + "%d against %.2f" % (len(found), float(np.mean(null))), + [dict(target="system:%s" % a[0], note="copy of %s: ratios %.4f, %.4f" % (b[0], a[1], a[2]), + vet="near-resonance" if all(any(abs(x * q / p - 1) < 0.01 for p in range(2, 7) for q in range(1, p)) for x in a[1:]) else None) + for a, b in found]) + print("recorded") + + +mirrorplanets_DOC = r"""Planets brighter than a mirror: eclipse depths shortward of 1 um in the emission-spectroscopy table turned into geometric albedos with the composite table's a/R* and Rp/R*, A_g = depth (a/R*)^2 / (Rp/R*)^2, flagged above 1 at 3 sigma, more light than a perfect Lambert reflector returns. + + python -I seti.py transits mirrorplanets [record] [--albedo-max 1] [--sigma 3] [--wavelength-max-um 1]""" + + +def mirrorplanets_main(record=False, albedo_max=1.0, sigma=3.0, wavelength_max_um=1.0): + em = core.exoplanets("SELECT plntname, centralwavelng, especlipdep, especlipdeperr1, especlipdeperr2, facility FROM emissionspec " + "WHERE centralwavelng < %g AND especlipdep IS NOT NULL" % wavelength_max_um) + host = {r["pl_name"]: r for r in pcp("pl_name, pl_ratdor, pl_ratror, pl_eqt", "pl_ratdor IS NOT NULL AND pl_ratror IS NOT NULL")} + out = [] + for r in em: + h = host.get(r["plntname"]) + if not h: + continue + k = (float(h["pl_ratdor"]) / float(h["pl_ratror"])) ** 2 + # depths are tabulated in per cent + d, e = float(r["especlipdep"]) / 100, abs(num(r["especlipdeperr1"]) or num(r["especlipdeperr2"]) or 0) / 100 + out.append(dict(planet=r["plntname"], wl=num(r["centralwavelng"]), ag=d * k, e=e * k, teq=num(h["pl_eqt"]), fac=r["facility"])) + hits = sorted([o for o in out if o["e"] > 0 and o["ag"] - sigma * o["e"] > albedo_max], key=lambda o: -(o["ag"] - albedo_max) / o["e"]) + print("%d optical eclipse depths with geometry; geometric albedo above 1 at 3 sigma: %d %s" % ( + len(out), len(hits), [(o["planet"], o["wl"], round(o["ag"], 2), round(o["e"], 2), o["teq"]) for o in hits[:10]])) + if record: + core.record_run("exoplanets_mirror_albedo", "Planets brighter than a mirror", "NASA Exoplanet Archive emissionspec and pscomppars", + "eclipse depths shortward of 1 um with geometry: %d" % len(out), os.path.abspath(__file__), "mirrorplanets", len(out), + "measurements", dict(albedo=albedo_max, sigma=sigma, wavelength_max_um=wavelength_max_um), "a Lambert reflector's geometric albedo of 2/3, a perfect one's 1", + "an optical eclipse deeper than a perfect mirror gives", "%d above 1 at 3 sigma" % len(hits), + [dict(target="planet:%s" % o["planet"], stat=o["ag"], unit="geometric albedo", note="+- %.2f at %s um, T_eq %s K, %s" % ( + o["e"], o["wl"], o["teq"], o["fac"])) for o in hits]) + print("recorded") + + +insidestar_DOC = r"""Planets orbiting inside their star or hotter than it: composite planets whose orbital period is shorter than a grazing orbit at the stellar surface allows, 2 pi (R*^3 / G M*)^1/2, or whose equilibrium temperature exceeds the star's effective temperature over sqrt 2, the hottest a body can be held by its star. + + python -I seti.py transits insidestar [record]""" + + +def insidestar_main(record=False): + rows = pcp("pl_name, pl_orbper, st_rad, st_mass, st_teff, pl_eqt", "pl_orbper IS NOT NULL AND st_rad IS NOT NULL AND st_mass IS NOT NULL") + inside, hot = [], [] + for r in rows: + pmin = 2 * math.pi * math.sqrt((float(r["st_rad"]) * 6.957e8) ** 3 / (6.674e-11 * float(r["st_mass"]) * 1.989e30)) / 86400 + if float(r["pl_orbper"]) < pmin: + inside.append((r["pl_name"], float(r["pl_orbper"]), pmin)) + if num(r["pl_eqt"]) and num(r["st_teff"]) and num(r["pl_eqt"]) > num(r["st_teff"]) / math.sqrt(2): + hot.append((r["pl_name"], num(r["pl_eqt"]), num(r["st_teff"]))) + print("%d planets; orbiting inside their star %d %s; hotter than the star allows %d %s" % (len(rows), len(inside), inside[:10], len(hot), hot[:10])) + if record: + core.record_run("exoplanets_inside_star", "Planets orbiting inside their star or hotter than it", "NASA Exoplanet Archive pscomppars", + "planets with period, stellar radius and mass: %d" % len(rows), os.path.abspath(__file__), "insidestar", len(rows), "planets", + dict(), "the surface-grazing period and T_eff / sqrt 2", "a period or temperature no orbit around the star allows", + "%d inside the star, %d too hot" % (len(inside), len(hot)), + [dict(target="planet:%s" % n, stat=p / m, unit="period over the surface-grazing period", vet="published-solution") for n, p, m in inside] + + # a young companion glows from its own contraction, not its star's light + [dict(target="planet:%s" % n, stat=t / s, unit="T_eq over T_eff", vet="young-star", + note="a self-luminous young companion" if "Oph" in n else None) for n, t, s in hot]) + print("recorded") + + +ironplanets_DOC = r"""Planets denser than iron: transiting composite planets (whose radii are measured, not computed from their masses) with mass measured (not estimated from radius) and radius each to 20 per cent, against the radius of a pure-iron planet of their mass, R = 0.86 M^0.27 in Earth units (Zeng et al. 2016, core mass fraction 1), flagged smaller at 3 sigma with both errors carried, which no natural composition reaches. + + python -I seti.py transits ironplanets [record] [--precision 0.2] [--sigma 3] [--mass-max 30]""" + + +def ironplanets_main(record=False, precision=0.2, sigma=3.0, mass_max=30.0): + # a transit measures the radius; the archive computes the others' radii from their masses + rows = pcp("pl_name, hostname, pl_bmasse, pl_bmasseerr1, pl_bmasseerr2, pl_rade, pl_radeerr1, pl_radeerr2, disc_method", + "pl_bmasse IS NOT NULL AND pl_rade IS NOT NULL AND pl_bmassprov = 'Mass' AND pl_bmasse < %g AND tran_flag = 1" % mass_max) + out = [] + for r in rows: + em, er = rel_err(r, "pl_bmasse"), rel_err(r, "pl_rade") + if em is None or er is None or em > precision or er > precision: + continue + M, Rp = float(r["pl_bmasse"]), float(r["pl_rade"]) + rfe = 0.86 * M ** 0.27 + s = math.hypot(er * Rp, 0.27 * em * rfe) + out.append(dict(name=r["pl_name"], M=M, R=Rp, rfe=rfe, z=(rfe - Rp) / s if s > 0 else 0.0, method=r["disc_method"])) + dense = sorted([o for o in out if o["z"] > sigma], key=lambda o: -o["z"]) + print("%d planets below 30 Earth masses with mass and radius to 20 per cent; smaller than pure iron at 3 sigma: %d; the densest %s" % ( + len(out), len(dense), ["%s %.2f Me %.2f Re against %.2f (%.1f sigma)" % (o["name"], o["M"], o["R"], o["rfe"], o["z"]) for o in sorted(out, key=lambda o: -o["z"])[:5]])) + if record: + core.record_run("exoplanets_denser_than_iron", "Planets denser than iron", "NASA Exoplanet Archive pscomppars", + "planets below 30 Earth masses with measured mass and radius to 20 per cent: %d" % len(out), os.path.abspath(__file__), "ironplanets", + len(out), "planets", dict(precision=precision, sigma=sigma, mass_max=mass_max, relation="R = 0.86 M^0.27"), "a pure-iron planet's radius at the planet's mass", + "a planet smaller than iron allows", "%d at 3 sigma; the densest %s" % (len(dense), "; ".join( + "%s (%.1f sigma)" % (o["name"], o["z"]) for o in sorted(out, key=lambda o: -o["z"])[:3])), + [dict(target="planet:%s" % o["name"], stat=o["z"], unit="sigma below a pure-iron radius") for o in dense]) + print("recorded") + + +exactres_DOC = r"""Planets in exact resonance: adjacent planets of the composite table's multi-planet systems, both periods measured to 1e-5, whose period ratio equals a small-integer ratio p/q (q up to 4, p up to 9) to 1e-4 and within three combined errors, against the pairs within 1e-3 to 1e-2 of the same ratios scaled by the window's width, where migration in a disc leaves resonant pairs about a per cent wide of exact commensurability. + + python -I seti.py transits exactres [record] [--tolerance 1e-4] [--precision 1e-5] [--q-max 4] [--p-max 9] [--near-window 1e-3 1e-2]""" + + +def exactres_main(record=False, tolerance=1e-4, precision=1e-5, q_max=4, p_max=9, near_window=[1e-3, 1e-2]): + rows = pcp("hostname, pl_name, pl_orbper, pl_orbpererr1, pl_orbpererr2", "sy_pnum >= 2 AND pl_orbper IS NOT NULL AND pl_orbpererr1 IS NOT NULL") + sysd = {} + for r in rows: + P, e = float(r["pl_orbper"]), max(abs(float(r["pl_orbpererr1"] or 0)), abs(float(r["pl_orbpererr2"] or 0))) + if 0 < e < precision * P: + sysd.setdefault(r["hostname"], []).append((P, e, r["pl_name"])) + ratios = sorted({(p, q) for q in range(1, q_max + 1) for p in range(q + 1, p_max + 1) if math.gcd(p, q) == 1}, key=lambda t: t[0] / t[1]) + exact, near, n = [], 0, 0 + for h, ps in sysd.items(): + ps.sort() + for (P1, e1, n1), (P2, e2, n2) in zip(ps, ps[1:]): + n += 1 + x = P2 / P1 + ex = x * math.hypot(e1 / P1, e2 / P2) + for p, q in ratios: + d = x / (p / q) - 1 + if abs(d) < tolerance and abs(x - p / q) < 3 * ex: + exact.append(dict(a=n1, b=n2, ratio="%d:%d" % (p, q), d=d, sig=abs(x - p / q) / ex if ex > 0 else 0.0)) + elif near_window[0] < abs(d) < near_window[1]: + near += 1 + expect = near * (2 * tolerance) / (2 * (near_window[1] - near_window[0])) + print("%d adjacent pairs with both periods to 1e-5; within 1e-4 of a ratio p/q: %d against %.2f from the %d pairs at 1e-3 to 1e-2 %s" % ( + n, len(exact), expect, near, ["%s/%s %s %+.1e" % (x["a"], x["b"], x["ratio"], x["d"]) for x in exact])) + if record: + core.record_run("exoplanets_exact_resonance", "Planets in exact resonance", "NASA Exoplanet Archive pscomppars", + "adjacent pairs with both periods measured to 1e-5: %d" % n, os.path.abspath(__file__), "exactres", n, "planet pairs", + dict(tolerance=tolerance, precision=precision, q_max=q_max, p_max=p_max, near_window=near_window), + "pairs %g to %g from the ratios scaled by width: %.2f" % (near_window[0], near_window[1], expect), + "neighbouring planets locked exactly on a small-integer period ratio", "%d against %.2f" % (len(exact), expect), + [dict(target="planet:%s" % x["a"], stat=x["d"], unit="fractional offset from %s" % x["ratio"], note="with %s" % x["b"], + vet="chance-rate" if len(exact) <= expect + 3 * math.sqrt(max(expect, 1)) else None) for x in exact]) + print("recorded") + + +earthcopy_DOC = r"""Copies of Earth: composite planets with a measured radius (transiting) within 10 per cent of Earth's and a measured mass (not estimated from radius) within 20 per cent of Earth's, each measured to those precisions, receiving 0.75-1.25 of Earth's insolation from a star of 5300-6100 K; the nearest by mass, radius and insolation listed. + + python -I seti.py transits earthcopy [record] [--radius 0.1] [--mass 0.2] [--insolation 0.75 1.25] [--teff 5300 6100]""" + + +def earthcopy_main(record=False, radius=0.1, mass=0.2, insolation=[0.75, 1.25], teff=[5300.0, 6100.0]): + rows = pcp("pl_name, pl_rade, pl_radeerr1, pl_radeerr2, pl_bmasse, pl_bmasseerr1, pl_bmasseerr2, pl_bmassprov, pl_insol, st_teff, tran_flag", + "pl_rade BETWEEN 0.5 AND 2 AND pl_insol IS NOT NULL AND st_teff IS NOT NULL") + hits, scored = [], [] + for r in rows: + Rp, S, T = float(r["pl_rade"]), float(r["pl_insol"]), float(r["st_teff"]) + M = num(r["pl_bmasse"]) + measured = r["pl_bmassprov"] == "Mass" and str(r["tran_flag"]) == "1" + d = math.sqrt((Rp - 1) ** 2 + ((M - 1) / 2 if M else 1) ** 2 + (math.log(S) if S > 0 else 9) ** 2 + ((T - 5772) / 1000.0) ** 2) + scored.append((d, r["pl_name"], Rp, M, S, T, measured)) + if (measured and abs(Rp - 1) <= radius and M and abs(M - 1) <= mass and insolation[0] <= S <= insolation[1] and teff[0] <= T <= teff[1] + and (rel_err(r, "pl_rade") or 1) <= radius and (rel_err(r, "pl_bmasse") or 1) <= mass): + hits.append(r["pl_name"]) + near = sorted(scored)[:5] + print("%d composite planets of 0.5-2 Earth radii with insolation and host temperature; copies of Earth: %d %s; the nearest %s" % ( + len(rows), len(hits), hits, ["%s (%.2f Re, %s Me, %.2f S, %.0f K, mass %s)" % (n, R, "%.2f" % M if M else "-", S, T, "measured" if m else "estimated") + for d, n, R, M, S, T, m in near])) + if record: + core.record_run("exoplanets_earth_copies", "Copies of Earth", "NASA Exoplanet Archive pscomppars", + "planets of 0.5-2 Earth radii with insolation and host temperature: %d" % len(rows), os.path.abspath(__file__), "earthcopy", len(rows), + "planets", dict(radius=radius, mass=mass, insolation=insolation, teff=teff), "Earth's radius, mass and insolation and the Sun's temperature", + "a planet like Earth in size, mass and sunlight around a star like the Sun", "%d; the nearest %s" % (len(hits), "; ".join( + "%s (%.2f Re, %s Me, %.2f S, %.0f K)" % (n, R, "%.2f" % M if M else "-", S, T) for d, n, R, M, S, T, m in near[:3])), + [dict(target="planet:%s" % h) for h in hits]) + print("recorded") + + +randomtransiter_DOC = r"""The random transiter in TESS: HD 139139 (TIC 70652803), whose K2 light curve of 2017 showed 28 transit-like dips of 200-1600 ppm and 0.7-7 h with no period (Rappaport et al. 2019), in its TESS QLP light curve of sector 91 (200-s full-frame cadence, 2025 April-May). The detrended flux at quality 0 divided by a running median of one day; a dip is three or more consecutive cadences below three times the robust scatter with a mean depth beyond 300 ppm; the count against the 8.7 a sector that K2's rate gives, and the sector's threshold for dips of K2's durations from the binned noise. + + python -I seti.py transits randomtransiter [record] [--name "HD 139139"] [--tic 70652803] [--sector 91] [--k2-dips 28] [--k2-days 87] [--sigma 3] [--min-cadences 3] [--min-depth-ppm 300] [--trend-days 1]""" + +RANDOM_TRANSITER = dict(name="HD 139139", tic=70652803, sector=91, k2_dips=28, k2_days=87.0) + + +def qlp_url(tic, sector): + """The MAST HLSP path of a TESS QLP light curve: the sector and the TIC number zero-padded to sixteen digits in four groups.""" + s = "%016d" % tic + return "https://archive.stsci.edu/hlsps/qlp/s%04d/%s/%s/%s/%s/hlsp_qlp_tess_ffi_s%04d-%s_tess_v01_llc.fits" % (sector, s[0:4], s[4:8], s[8:12], s[12:16], sector, s) + + +def randomtransiter_main(record=False, name="HD 139139", tic=70652803, sector=91, k2_dips=28, k2_days=87.0, sigma=3.0, min_cadences=3, min_depth_ppm=300.0, + trend_days=1.0): + from astropy.io import fits + d = core.data("tess_qlp") + os.makedirs(d, exist_ok=True) + url = qlp_url(tic, sector) + path = os.path.join(d, url.rsplit("/", 1)[-1]) + if not os.path.exists(path): + open(path, "wb").write(core.get(url, timeout=300)) + with fits.open(path) as h: + t = np.asarray(h[1].data["TIME"], float) + f = np.asarray(h[1].data["DET_FLUX"], float) + q = np.asarray(h[1].data["QUALITY"], int) + ok = np.isfinite(t) & np.isfinite(f) & (q == 0) + t, f = t[ok], f[ok] + step = float(np.median(np.diff(t))) + half = int(round(trend_days / 2 / step)) + trend = np.array([np.median(f[max(0, i - half):i + half + 1]) for i in range(len(f))]) + r = f / trend - 1.0 + sig = 1.4826 * float(np.median(np.abs(r - np.median(r)))) + low = r < -sigma * sig + dips = [] + i = 0 + while i < len(r): + if low[i]: + j = i + while j + 1 < len(r) and low[j + 1] and t[j + 1] - t[j] < 3 * step: + j += 1 + depth = -float(np.mean(r[i:j + 1])) * 1e6 + if j - i + 1 >= min_cadences and depth > min_depth_ppm: + dips.append(dict(t0=round(float(t[i]), 3), hours=round(float(t[j] - t[i] + step) * 24, 2), depth_ppm=round(depth, 0), n=j - i + 1)) + i = j + 1 + else: + i += 1 + span = float(t[-1] - t[0]) + expected = k2_dips / k2_days * span + # a dip of duration tau averages tau/step cadences: the depth it needs at the threshold + thresh = {hrs: round(sigma * sig / math.sqrt(max(hrs / 24 / step, 1)) * 1e6) for hrs in (1, 3, 7)} + print("sector %d: %d cadences over %.1f d, scatter %.0f ppm a cadence; dips %d %s against %.1f at the earlier rate; %g-sigma depth for 1, 3 and 7 h: %s ppm" % ( + sector, len(t), span, sig * 1e6, len(dips), dips, expected, sigma, thresh)) + if record: + from scipy.stats import poisson + sid = "hd139139_tess" if tic == RANDOM_TRANSITER["tic"] else "tic%d_s%d_dips" % (tic, sector) + core.record_run(sid, "The random transiter in TESS", "TESS QLP light curve, sector %d (MAST HLSP)" % sector, + "%s, TIC %d: %d good cadences over %.1f d" % (name, tic, len(t), span), os.path.abspath(__file__), "randomtransiter", 1, "stars", + dict(sigma=sigma, min_cadences=min_cadences, min_depth_ppm=min_depth_ppm, trend_days=trend_days, k2_dips=k2_dips, k2_days=k2_days), + "the earlier rate, %d dips in %.0f d: %.1f expected" % (k2_dips, k2_days, expected), "%g-sigma depth for 1, 3 and 7 h dips: %s ppm" % (sigma, thresh), + "%d dips in the sector (chance of this few or fewer at the earlier rate %.3f)" % (len(dips), float(poisson.cdf(len(dips), expected))), + [dict(target="tic:%d" % tic, stat=len(dips), unit="dips in the sector", p=float(poisson.cdf(len(dips), expected)), + vet=None if dips else "not-measured" if thresh[3] > 800 else None, note="dips %s; thresholds %s" % (dips, thresh))]) + print("recorded") + + +circles_DOC = r"""Planets on perfect circles: planets of the NASA Exoplanet Archive's composite table with periods beyond 30 days, where tides no longer circularise an orbit, whose eccentricity is measured below 0.002 at its upper error, an orbit rounder than formation and scattering leave, against the eccentricities of the rest; an eccentricity fixed at zero by the fit carries no error or a limit flag and is set aside, and a planet in a compact resonant chain or around a companion-free star read for the solution that measured it. + + python -I seti.py transits circles [record] [--p-min-d 30] [--tol 0.002]""" + + +def circles_main(record=False, p_min_d=30.0, tol=0.002): + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbper, pl_orbeccen, pl_orbeccenerr1, pl_orbeccenerr2, pl_orbeccenlim, pl_orbsmax, pl_bmasse, " + "pl_bmassprov, discoverymethod, st_mass, st_rad, sy_pnum, pl_orbeccen_reflink FROM pscomppars WHERE pl_orbeccen IS NOT NULL AND " + "pl_orbper > %g" % p_min_d) + meas, fixed, out = [], [], [] + for r in rows: + e, up, lim = num(r["pl_orbeccen"]), num(r["pl_orbeccenerr1"]), num(r["pl_orbeccenlim"]) + if up is None or up <= 0 or (lim is not None and lim != 0): + fixed.append(r) + continue + meas.append((r, e, up)) + if e + up < tol: + ref = str(r["pl_orbeccen_reflink"] or "") + ref = ref[ref.find(">") + 1:ref.find("")] if " 0.01 else None + print("%d planets with periods of %g-%g d; %d known to better than %g d; within %g d of a whole day: %d (%.2f expected from uniform fractions, Poisson p %.3g); " + "at half-days: %d" % (len(rows), p_min_d, p_max_d, len(prec), tol_d, tol_d, len(out), exp, p, len(half))) + for o in sorted(out, key=lambda o: abs(o["off"])): + print(" %s: P %.6f d (%d, off by %+.6f, error %.6f), %s at %s, %s Earth radii, %s planets; %s" % ( + o["name"], o["P"], o["n"], o["off"], o["err"], o["method"], o["facility"], o["r"], o["npl"], o["vet"] or "unexplained")) + json.dump(dict(n=len(rows), precise=len(prec), hits=out, half=half), open(core.results("planets_whole_days.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_whole_days", "Planets on whole days", "NASA Exoplanet Archive composite parameters (pscomppars)", + "planets with periods of %g-%g d known to better than %g d: %d of %d" % (p_min_d, p_max_d, tol_d, len(prec), len(rows)), os.path.abspath(__file__), + "wholedays", len(prec), "planets", dict(tol_d=tol_d, p_d=[p_min_d, p_max_d]), "uniform fractions give %.2f in the window; the half-day window holds %d" % ( + exp, len(half)), "a period within %g d of a whole number of days at its measured precision" % tol_d, + "%d at whole days against %.2f expected and %d at half-days (Poisson p %.3g)" % (len(out), exp, len(half), p), + [dict(target="planet:%s" % o["name"], stat=o["off"], unit="days from a whole day", vet=o["vet"], + note="P %.6f d (%d), error %.6f, %s at %s" % (o["P"], o["n"], o["err"], o["method"], o["facility"])) for o in out]) + print("recorded") + + +spinsteps_DOC = r"""Planets in step with their star's spin: planets of the NASA Exoplanet Archive's composite table whose host carries a rotation period, those whose orbital period is a whole multiple, from 2 to 20, of the star's rotation period within 0.5 per cent, an orbit geared to the star's day as a made clock would be, against the same windows at half-integer multiples and the count uniform fractions give; a planet at 1:1 is the tidal case kept apart, and a rotation period that is itself an alias of the orbit (a star-spot signal at the planet's period) reads as a whole ratio by construction, so each match is read for how its rotation was measured. + + python -I seti.py transits spinsteps [record] [--tol-rel 0.005] [--n-max 20]""" + + +def spinsteps_main(record=False, tol_rel=0.005, n_max=20): + from scipy.stats import poisson + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbper, st_rotp, st_rotperr1, st_rotp_reflink, pl_orbsmax, pl_bmasse, pl_rade, discoverymethod, st_teff FROM pscomppars " + "WHERE st_rotp IS NOT NULL AND st_rotp > 0 AND pl_orbper IS NOT NULL") + out, half, n = [], [], 0 + for r in rows: + P, rot = num(r["pl_orbper"]), num(r["st_rotp"]) + if not P or not rot: + continue + q = P / rot + if q < 1.5 or q > n_max + 0.5: + continue + n += 1 + k = round(q) + ref = str(r["st_rotp_reflink"] or "") + ref = ref[ref.find(">") + 1:ref.find("")] if " 0.01 else None + print("%d planets with a host rotation period and a period ratio of 1.5-%g; within %g of a whole ratio: %d (%.2f expected from uniform fractions, Poisson p %.3g); at " + "half-integers: %d" % (n, n_max + 0.5, tol_rel, len(out), exp, p, len(half))) + for o in sorted(out, key=lambda o: abs(o["rel"])): + print(" %s: P %.4f d over rotation %.3f d = %.4f (%d, off by %.2e), Teff %s, %s; rotation from %s; %s" % ( + o["name"], o["P"], o["rot"], o["ratio"], o["n"], o["rel"], o["teff"], o["method"], o["ref"], o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out, half=half), open(core.results("planet_spin_steps.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_spin_steps", "Planets in step with their star's spin", "NASA Exoplanet Archive composite parameters (pscomppars)", + "planets whose host carries a rotation period, with period ratios of 1.5-%g: %d" % (n_max + 0.5, n), os.path.abspath(__file__), "spinsteps", n, "planets", + dict(tol_rel=tol_rel, n_max=n_max), "uniform fractions give %.2f in the windows; the half-integer windows hold %d" % (exp, len(half)), + "an orbital period at a whole multiple of the star's rotation within %g" % tol_rel, + "%d against %.2f expected and %d at half-integers (Poisson p %.3g)" % (len(out), exp, len(half), p), + [dict(target="planet:%s" % o["name"], stat=o["rel"], unit="fractional offset from the whole ratio", vet=o["vet"], + note="P %.4f d, rotation %.3f d (%s), ratio %.4f (%d)" % (o["P"], o["rot"], o["ref"], o["ratio"], o["n"])) for o in out]) + print("recorded") + + +longtransits_DOC = r"""Transits longer than the star allows: transiting planets of the NASA Exoplanet Archive's composite table with a transit duration, period, semi-major axis and stellar and planetary radii, whose duration exceeds by a quarter the longest a central transit of a circular orbit can last, (P / pi) arcsin((R_star + R_planet) / a); a chord longer than the star is an occulter larger than the planet, an orbit crossing at apastron or a star larger than catalogued, so each match is read for its eccentricity, its duration error and the sources of its duration and radius, since a radius of the Kepler Input Catalogue era or a duration and a radius from different solutions do not share one geometry, and an eccentricity fixed at zero without errors leaves an apastron crossing open. + + python -I seti.py transits longtransits [record] [--excess 1.25] [--err-max 0.2]""" + + +def longtransits_main(record=False, excess=1.25, err_max=0.2): + import re + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbper, pl_orbsmax, pl_orbeccen, pl_orbeccenerr1, st_rad, pl_rade, pl_trandur, pl_trandurerr1, pl_trandurerr2, " + "pl_trandur_reflink, st_rad_reflink, discoverymethod FROM pscomppars WHERE pl_trandur IS NOT NULL AND pl_orbsmax IS NOT NULL AND st_rad IS NOT NULL " + "AND pl_rade IS NOT NULL AND pl_orbper IS NOT NULL") + out, n = [], 0 + for r in rows: + P, a, rs, rp, T = num(r["pl_orbper"]), num(r["pl_orbsmax"]), num(r["st_rad"]), num(r["pl_rade"]), num(r["pl_trandur"]) + if not all(v and v > 0 for v in (P, a, rs, rp, T)): + continue + x = (rs * 0.00465047 + rp * 4.26352e-5) / a + if x >= 1: + continue + tmax = P * 24.0 / math.pi * math.asin(x) + n += 1 + err = max(abs(num(r["pl_trandurerr1"]) or 0), abs(num(r["pl_trandurerr2"]) or 0)) + if T > excess * tmax: + def strip(s): + s = str(s or "") + return s[s.find(">") + 1:s.find("")] if " err_max * T or err == 0 else + "single-record" if T / tmax > 2.5 and dur_ref == rad_ref and not old else + "published-solution" if old or dur_ref != rad_ref else + "loose-eccentricities" if e is not None and e + (eup or 0) > 0.1 else + "unmeasured-eccentricities" if not eup else None))) + left = [o for o in out if o["vet"] is None] + count = {v: sum(o["vet"] == v for o in out) for v in ("unconstrained-geometry", "single-record", "published-solution", "loose-eccentricities", "unmeasured-eccentricities")} + print("%d transiting planets with durations and geometry; longer than %g times the central circular maximum: %d; duration errors above %g of the duration or none " + "listed %d, a duration off by itself %d, a radius of the Kepler Input Catalogue era or a duration and radius from different solutions %d, eccentric orbits %d, " + "eccentricities fixed without errors %d; unexplained %d" % (n, excess, len(out), err_max, count["unconstrained-geometry"], count["single-record"], + count["published-solution"], count["loose-eccentricities"], count["unmeasured-eccentricities"], len(left))) + for o in sorted(out, key=lambda o: -o["ratio"]): + print(" %s: duration %.2f +- %.2f h against %.2f h at most (%.2fx), P %.3f d, a %.4f au, R* %.2f, Rp %.2f Earth, e %s; duration from %s, radius from %s; %s" % ( + o["name"], o["T"], o["err"], o["tmax"], o["ratio"], o["P"], o["a"], o["rs"], o["rp"], o["e"], o["dur_ref"], o["rad_ref"], o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out), open(core.results("transits_too_long.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_long_transits", "Transits longer than the star allows", "NASA Exoplanet Archive composite parameters (pscomppars)", + "transiting planets with a duration, period, semi-major axis and radii: %d" % n, os.path.abspath(__file__), "longtransits", n, "planets", + dict(excess=excess, err_max=err_max), "each planet's own central circular maximum from its catalogued geometry", + "a transit %g times longer than a central circular crossing of the star" % excess, + "%d: %d with loose or missing duration errors, %d a duration off by itself, %d with a Kepler Input Catalogue radius or mixed solutions, %d on eccentric orbits, " + "%d with eccentricities fixed without errors; %d unexplained" % (len(out), count["unconstrained-geometry"], count["single-record"], count["published-solution"], + count["loose-eccentricities"], count["unmeasured-eccentricities"], len(left)), + [dict(target="planet:%s" % o["name"], stat=o["ratio"], unit="duration over the central circular maximum", vet=o["vet"], + note="%.2f +- %.2f h against %.2f h; P %.3f d, a %.4f au, R* %.2f, e %s; %s; %s" % (o["T"], o["err"], o["tmax"], o["P"], o["a"], o["rs"], o["e"], o["dur_ref"], + o["rad_ref"])) for o in out]) + print("recorded") + + +faceon_DOC = r"""Systems turned face-on to us: planets of the NASA Exoplanet Archive's composite table with an orbital inclination measured below 5 deg, an orbit we look straight down upon, which no transit and no radial velocity could find and which an astrometric or imaged orbit alone reveals; orbits point at random, so the share within 5 deg of face-on is 0.4 per cent of all orientations, and a surplus would mean systems arranged to face us. Each read for its inclination error and the method that measured it. + + python -I seti.py transits faceon [record] [--i-max-deg 5] [--err-max-deg 5]""" + + +def faceon_main(record=False, i_max_deg=5.0, err_max_deg=5.0): + from scipy.stats import binom + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbincl, pl_orbinclerr1, pl_orbinclerr2, pl_orbincllim, pl_orbper, pl_bmassj, discoverymethod, pl_orbincl_reflink " + "FROM pscomppars WHERE pl_orbincl IS NOT NULL AND pl_orbinclerr1 IS NOT NULL AND discoverymethod NOT IN ('Transit', 'Transit Timing Variations')") + meas = [] + for r in rows: + i, up, lo = num(r["pl_orbincl"]), abs(num(r["pl_orbinclerr1"]) or 0), abs(num(r["pl_orbinclerr2"]) or 0) + if i is None or up == 0 or (num(r["pl_orbincllim"]) or 0) != 0: + continue + # an inclination counts as face-on from either pole + meas.append(dict(name=r["pl_name"], i=i, up=up, lo=lo, pole=min(i, abs(180 - i)), P=num(r["pl_orbper"]), m=num(r["pl_bmassj"]), method=r["discoverymethod"], + ref=(lambda s: s[s.find(">") + 1:s.find("")] if " err_max_deg else "chance-rate" if p > 0.01 else None + print("%d non-transiting planets with a measured inclination; within %g deg of face-on: %d (%.2f expected from random orientations, binomial p %.3g)" % ( + len(meas), i_max_deg, len(hits), exp, p)) + for m in sorted(hits, key=lambda m: m["pole"]): + print(" %s: i %.2f +%.2f -%.2f deg, P %s d, %s Jupiter masses, %s, %s; %s" % (m["name"], m["i"], m["up"], m["lo"], m["P"], m["m"], m["method"], m["ref"], m["vet"])) + json.dump(dict(n=len(meas), hits=hits), open(core.results("face_on_systems.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_face_on", "Systems turned face-on to us", "NASA Exoplanet Archive composite parameters (pscomppars)", + "non-transiting planets with a measured inclination: %d" % len(meas), os.path.abspath(__file__), "faceon", len(meas), "planets", + dict(i_max_deg=i_max_deg, err_max_deg=err_max_deg), "random orientations give %.2f within %g deg of either pole" % (exp, i_max_deg), + "an orbit within %g deg of face-on, measured to better than %g deg" % (i_max_deg, err_max_deg), + "%d against %.2f expected (binomial p %.3g)" % (len(hits), exp, p), + [dict(target="planet:%s" % m["name"], stat=m["pole"], unit="deg from face-on", vet=m["vet"], + note="i %.2f +%.2f -%.2f deg, P %s d, %s Jupiter masses, %s, %s" % (m["i"], m["up"], m["lo"], m["P"], m["m"], m["method"], m["ref"])) for m in hits]) + print("recorded") + + +wdrefuge_DOC = r"""Refuges at white dwarfs: planets of the NASA Exoplanet Archive's composite table whose host is a white dwarf (a spectral type beginning with D, or a radius below 0.05 solar at a temperature above 6000 K), each placed against the radius the host's giant progenitor reached, taken as 1 au for a star that left a white dwarf of 0.6 solar masses, since a planet now inside that radius would have been engulfed unless it was moved there afterwards or arrived from elsewhere; a planet parked close to a dead star is where a civilisation outliving its sun would settle. Each read for its discovery method, its period and the published account of its arrival, which gives each close companion a natural route: a brown dwarf drawn in through a common envelope, or a planet brought in by its outer stars. + + python -I seti.py transits wdrefuge [record] [--engulf-au 1.0]""" + + +def wdrefuge_main(record=False, engulf_au=1.0): + rows = core.exoplanets("SELECT pl_name, hostname, st_spectype, st_teff, st_rad, st_mass, pl_orbper, pl_orbsmax, pl_bmassj, pl_rade, discoverymethod, disc_year, disc_refname " + "FROM pscomppars WHERE st_spectype LIKE 'D%' OR (st_rad < 0.05 AND st_teff > 6000)") + out = [] + for r in rows: + a = num(r["pl_orbsmax"]) + P = num(r["pl_orbper"]) + if a is None and P and num(r["st_mass"]): + a = (num(r["st_mass"]) * (P / 365.25) ** 2) ** (1 / 3) + ref = str(r["disc_refname"] or "") + ref = ref[ref.find(">") + 1:ref.find("")] if " 0 AND pl_ratror > 0") + + def strip(s): + s = str(s or "") + return (s[s.find(">") + 1:s.find("")] if " excess: + dref, kref = strip(r["pl_trandep_reflink"]), strip(r["pl_ratror_reflink"]) + out.append(dict(name=r["pl_name"], depth=d, err=err, k=k, ratio=ratio, dref=dref, kref=kref, method=r["discoverymethod"], + vet="unconstrained-geometry" if err == 0 or err > err_max * d else "published-solution" if dref != kref else None)) + left = [o for o in out if o["vet"] is None] + print("%d transiting planets with a depth and a radius ratio; depth above %g times the ratio squared: %d, %d with loose or missing depth errors, %d with depth and ratio from " + "different solutions; unexplained %d" % (n, excess, len(out), sum(o["vet"] == "unconstrained-geometry" for o in out), sum(o["vet"] == "published-solution" for o in out), + len(left))) + for o in sorted(out, key=lambda o: -o["ratio"]): + print(" %s: depth %.4f +- %.4f per cent against %.4f from the ratio %.4f (%.2fx); depth from %s, ratio from %s; %s" % ( + o["name"], o["depth"], o["err"], 100 * o["k"] ** 2, o["k"], o["ratio"], o["dref"], o["kref"], o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out), open(core.results("transits_too_deep.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_deep_transits", "Transits deeper than the planet", "NASA Exoplanet Archive composite parameters (pscomppars)", + "transiting planets with a depth and a radius ratio: %d" % n, os.path.abspath(__file__), "deeptransits", n, "planets", dict(excess=excess, err_max=err_max), + "each planet's own radius ratio squared, with limb darkening allowing a fifth more", "a dip %g times deeper than the planet's disc can make" % excess, + "%d: %d with loose or missing depth errors, %d with depth and ratio from different solutions; %d unexplained" % ( + len(out), sum(o["vet"] == "unconstrained-geometry" for o in out), sum(o["vet"] == "published-solution" for o in out), len(left)), + [dict(target="planet:%s" % o["name"], stat=o["ratio"], unit="depth over the ratio squared", vet=o["vet"], + note="depth %.4f +- %.4f per cent, ratio %.4f; %s; %s" % (o["depth"], o["err"], o["k"], o["dref"], o["kref"])) for o in out]) + print("recorded") + + +ttvabsent_DOC = r"""Resonant pairs without timing variations: pairs of Kepler planets in one system whose period ratio lies within 2 per cent of 2:1 or 3:2, where the neighbour's pull shifts each transit by minutes over the resonant cycle, read in the Holczer et al. (2016) transit-timing catalogue (VizieR J/ApJS/225/9) for the timing scatter and the timing-variation significance of each; a pair whose transits keep time to better than a fifth of the variation its masses demand is a system held on station, which the masses estimated from the radii (Chen and Kipping 2017) set, so each quiet pair is read for how low those masses could be. + + python -I seti.py transits ttvabsent [record] [--delta-max 0.02] [--quiet-ratio 0.2] [--pval-min 0.5]""" + + +def ttvabsent_main(record=False, delta_max=0.02, quiet_ratio=0.2, pval_min=0.5): + tt = {str(r["KOI"]).strip(): r for r in core.tap("vizier", 'SELECT "KOI", "sigTT", "pval" FROM "J/ApJS/225/9/table4"')} + per = {str(r["KOI"]).strip(): r for r in core.tap("vizier", 'SELECT "KOI", "KIC", "Per", "Dur", "Depth" FROM "J/ApJS/225/9/table2"')} + arch = core.exoplanets("SELECT kepoi_name, kepid, koi_period, koi_prad, koi_smass, koi_srad FROM q1_q17_dr25_koi WHERE koi_disposition = 'CONFIRMED' OR koi_pdisposition = 'CANDIDATE'") + info = {str(r["kepoi_name"]).replace("K", "").lstrip("0").strip(): r for r in arch} + systems = {} + for koi, r in per.items(): + if num(r["Per"]): + systems.setdefault(str(r["KIC"]).strip(), []).append((koi, num(r["Per"]))) + + def mass_earth(rp): + # Chen and Kipping (2017): terran below 2 Earth radii, neptunian above + return rp ** 3.58 / 1.0 if rp < 2.04 else 2.04 ** 3.58 * (rp / 2.04) ** (1 / 0.59) + out, pairs = [], 0 + for kic, planets in systems.items(): + planets.sort(key=lambda x: x[1]) + for i in range(len(planets)): + for j in range(i + 1, len(planets)): + (k1, p1), (k2, p2) = planets[i], planets[j] + for jres in (2, 3): + ratio = jres / (jres - 1) + delta = p2 / p1 / ratio - 1 + if abs(delta) > delta_max: + continue + pairs += 1 + a1, a2 = info.get(k1, {}), info.get(k2, {}) + ms = num(a1.get("koi_smass")) or 1.0 + r1, r2 = num(a1.get("koi_prad")), num(a2.get("koi_prad")) + if not r1 or not r2: + continue + m1, m2 = mass_earth(r1) * 3.003e-6 / ms, mass_earth(r2) * 3.003e-6 / ms + # Lithwick, Xie and Wu (2012): the amplitude of each planet's timing variation from its neighbour, in days + amp1 = p1 * m2 / (math.pi * jres ** (2 / 3) * (jres - 1) ** (1 / 3) * max(abs(delta), 1e-4)) * 1.5 + amp2 = p2 * m1 / (math.pi * jres * max(abs(delta), 1e-4)) * 1.5 + for koi, amp, other in ((k1, amp1, k2), (k2, amp2, k1)): + t = tt.get(koi) + if not t: + continue + sig, pval = num(t["sigTT"]), num(t["pval"]) + if sig is None or pval is None: + continue + quiet = pval >= pval_min and sig * 1440.0 < quiet_ratio * amp * 1440.0 + out.append(dict(koi=koi, other=other, kic=kic, res="%d:%d" % (jres, jres - 1), delta=delta, amp_min=amp * 1440.0, sig_min=sig, pval=pval, r=r1 if koi == k1 else r2, + quiet=quiet, vet="estimated-masses" if quiet else None)) + quiet = [o for o in out if o["quiet"]] + print("%d near-resonant pairs within %g of 2:1 or 3:2 among %d Kepler systems; planets whose timing scatter stays below %g of the variation their estimated masses demand with no " + "detected variation: %d of %d" % (pairs, delta_max, len(systems), quiet_ratio, len(quiet), len(out))) + for o in sorted(quiet, key=lambda o: o["sig_min"] / o["amp_min"]): + print(" KOI %s with %s (%s, delta %+.4f): expected %.1f min, scatter %.2f min, variation p %.2f, radius %.2f Earth; %s" % ( + o["koi"], o["other"], o["res"], o["delta"], o["amp_min"], o["sig_min"], o["pval"], o["r"], o["vet"])) + json.dump(dict(pairs=pairs, planets=out), open(core.results("resonant_pairs_quiet.json"), "w"), indent=1) + if record: + core.record_run( + "kepler_resonant_quiet", "Resonant pairs without timing variations", "Holczer et al. (2016) Kepler transit timings (VizieR J/ApJS/225/9); Kepler DR25 KOI table", + "planets in pairs within %g of 2:1 or 3:2 with timing measurements: %d" % (delta_max, len(out)), os.path.abspath(__file__), "ttvabsent", len(out), "planets", + dict(delta_max=delta_max, quiet_ratio=quiet_ratio, pval_min=pval_min), "the variation the masses estimated from the radii demand, against the timing scatter", + "a transit keeping time to a fifth of the variation its neighbour's estimated mass demands", + "%d of %d planets keep time below a fifth of the expected variation; their masses rest on radii alone" % (len(quiet), len(out)), + [dict(target="koi:%s" % o["koi"], stat=o["sig_min"] / o["amp_min"], unit="timing scatter over the expected variation", vet=o["vet"], + note="with KOI %s at %s (delta %+.4f), expected %.1f min, scatter %.2f min, variation p %.2f" % (o["other"], o["res"], o["delta"], o["amp_min"], o["sig_min"], o["pval"])) + for o in quiet]) + print("recorded") + + +spinlaps_DOC = r"""Planets lapping their star's spin in whole steps: planets of the NASA Exoplanet Archive's composite table whose host carries a rotation period, those whose orbital period divides the star's rotation a whole number of times, from 2 to 20, within 0.5 per cent, a planet geared to complete so many orbits per stellar day as a made clock would, against the same windows at half-integer ratios and the count uniform fractions give; a rotation period that is itself an alias of the orbit reads as a whole ratio by construction, so each match is read for how its rotation was measured. + + python -I seti.py transits spinlaps [record] [--tol-rel 0.005] [--n-max 20]""" + + +def spinlaps_main(record=False, tol_rel=0.005, n_max=20): + from scipy.stats import poisson + rows = core.exoplanets("SELECT pl_name, hostname, pl_orbper, st_rotp, st_rotp_reflink, pl_bmasse, pl_rade, discoverymethod, st_teff FROM pscomppars " + "WHERE st_rotp IS NOT NULL AND st_rotp > 0 AND pl_orbper IS NOT NULL") + out, half, n, exp = [], [], 0, 0.0 + for r in rows: + P, rot = num(r["pl_orbper"]), num(r["st_rotp"]) + if not P or not rot: + continue + q = rot / P + if q < 1.5 or q > n_max + 0.5: + continue + n += 1 + k = round(q) + exp += 2 * tol_rel * k + ref = str(r["st_rotp_reflink"] or "") + ref = ref[ref.find(">") + 1:ref.find("")] if " 0.01 else None + print("%d planets with a host rotation period and a rotation over period of 1.5-%g; within %g of a whole ratio: %d (%.2f expected from uniform fractions, Poisson p %.3g); at " + "half-integers: %d" % (n, n_max + 0.5, tol_rel, len(out), exp, p, len(half))) + for o in sorted(out, key=lambda o: abs(o["rel"])): + print(" %s: rotation %.3f d over P %.4f d = %.4f (%d, off by %.2e), Teff %s, %s; rotation from %s; %s" % ( + o["name"], o["rot"], o["P"], o["ratio"], o["n"], o["rel"], o["teff"], o["method"], o["ref"], o["vet"] or "unexplained")) + json.dump(dict(n=n, hits=out, half=half), open(core.results("planet_spin_laps.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_spin_laps", "Planets lapping their star's spin in whole steps", "NASA Exoplanet Archive composite parameters (pscomppars)", + "planets whose host carries a rotation period, with rotation over period of 1.5-%g: %d" % (n_max + 0.5, n), os.path.abspath(__file__), "spinlaps", n, "planets", + dict(tol_rel=tol_rel, n_max=n_max), "uniform fractions give %.2f in the windows; the half-integer windows hold %d" % (exp, len(half)), + "an orbital period dividing the star's rotation a whole number of times within %g" % tol_rel, + "%d against %.2f expected and %d at half-integers (Poisson p %.3g)" % (len(out), exp, len(half), p), + [dict(target="planet:%s" % o["name"], stat=o["rel"], unit="fractional offset from the whole ratio", vet=o["vet"], + note="rotation %.3f d (%s), P %.4f d, ratio %.4f (%d)" % (o["rot"], o["ref"], o["P"], o["ratio"], o["n"])) for o in out]) + print("recorded") + + +translines_DOC = r"""Lines in transmission spectra: the NASA Exoplanet Archive's transmission-spectroscopy table (transitspec), each published spectrum taken in wavelength order, bins whose transit depth stands more than four combined errors, four times the spectrum's own bin-to-bin scatter and 2 per cent of the depth away from the mean of their two neighbours, in either sign; a bin deeper is an absorption line of the atmosphere, read against the sodium, potassium, hydrogen, helium, calcium, magnesium and lithium lines, and a bin shallower is light the planet adds at one wavelength while in transit, which an active star's chromospheric lines in the transit chord give and a lamp would; bins wider than 50 nm are broad features rather than lines. + + python -I seti.py transits translines [record] [--sigma 4] [--frac 0.02] [--wide-um 0.05] [--min-bins 5]""" + +TRANSLINES_LINES = {"Ca II K": 0.39337, "Ca II H": 0.39685, "Ca I": 0.42268, "H beta": 0.48613, "Mg I b": 0.51733, "Na D": 0.58930, "H alpha": 0.65628, "Li I": 0.67078, + "K I": 0.76649, "K I red": 0.76990, "He I": 1.08330} + + +def translines_main(record=False, sigma=4.0, frac=0.02, wide_um=0.05, min_bins=5): + rows = core.exoplanets("SELECT plntname, plntranreflink, facility, instrument, centralwavelng, bandwidth, plntransdep, plntransdeperr1, plntransdeperr2, plntransdeplim FROM transitspec " + "WHERE plntransdep IS NOT NULL AND centralwavelng IS NOT NULL") + series = {} + for r in rows: + if num(r["plntransdeplim"]): + continue + e1, e2 = num(r["plntransdeperr1"]), num(r["plntransdeperr2"]) + err = (abs(e1) + abs(e2)) / 2 if e1 is not None and e2 is not None else abs(e1 if e1 is not None else e2) if (e1 is not None or e2 is not None) else None + if not err: + continue + ref = str(r["plntranreflink"] or "") + ref = ref[ref.find(">") + 1:ref.find("")] if " sigma * err and abs(dev) > sigma * scale and abs(dev) > frac * abs(d): + half = max(bw / 2, 0.002) + lines = [k for k, lam in TRANSLINES_LINES.items() if abs(lam - w) <= half] + vet = ("broad-feature" if bw > wide_um else "atmospheric-line" if dev > 0 and lines else + "active-star" if dev < 0 and any(k.startswith(("H ", "Ca II")) for k in lines) else None) + out.append(dict(planet=planet, ref=ref, inst=inst, um=w, bw=bw, depth=d, dev=dev, err=err, z=dev / err, scale=scale, lines=lines, vet=vet, n=len(pts))) + left = [o for o in out if o["vet"] is None] + print("%d spectra of %d bins; bins %g sigma and a %g fraction from their neighbours: %d (%d absorption at atmospheric lines, %d shallower at chromospheric lines, %d broad); " + "unexplained %d" % (n_series, n_bins, sigma, frac, len(out), sum(o["vet"] == "atmospheric-line" for o in out), sum(o["vet"] == "active-star" for o in out), + sum(o["vet"] == "broad-feature" for o in out), len(left))) + for o in sorted(out, key=lambda o: -abs(o["z"])): + print(" %s (%s, %s): %.4f um (%.4f wide) depth %.4f, %+.4f from its neighbours (%.1f sigma, scatter %.4f), lines %s; %s" % ( + o["planet"], o["ref"], o["inst"], o["um"], o["bw"], o["depth"], o["dev"], o["z"], o["scale"], o["lines"] or "-", o["vet"] or "unexplained")) + json.dump(dict(series=n_series, bins=n_bins, hits=out), open(core.results("transmission_lines.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_transmission_lines", "Lines in transmission spectra", "NASA Exoplanet Archive transmission spectroscopy table (transitspec)", + "published spectra with %d or more bins: %d, %d bins" % (min_bins, n_series, n_bins), os.path.abspath(__file__), "translines", n_series, "spectra", + dict(sigma=sigma, frac=frac, wide_um=wide_um, min_bins=min_bins), "each spectrum's own bin-to-bin scatter and the combined errors of the three bins", + "a bin %g sigma and a %g fraction of the depth away from the mean of its neighbours" % (sigma, frac), + "%d: %d absorption at atmospheric lines, %d shallower at chromospheric lines, %d broad; %d unexplained" % ( + len(out), sum(o["vet"] == "atmospheric-line" for o in out), sum(o["vet"] == "active-star" for o in out), sum(o["vet"] == "broad-feature" for o in out), len(left)), + [dict(target="planet:%s" % o["planet"], stat=round(o["z"], 1), unit="sigma from the neighbouring bins", vet=o["vet"], + note="%s, %s, %.4f um, depth %.4f, %+.4f, lines %s" % (o["ref"], o["inst"], o["um"], o["depth"], o["dev"], o["lines"] or "none")) for o in out]) + print("recorded") + + +polar_DOC = r"""Planets on polar orbits: the NASA Exoplanet Archive's planetary systems table (ps), every planet with a projected obliquity, the measurement of smallest error taken for each, those whose sky-projected obliquity lies within 15 deg of 90 at an error under 15 deg, an orbit set square to the star's spin, against the share a uniform projected obliquity gives and the share within 15 deg of alignment; the measured obliquities pile up near 90 deg (Albrecht et al. 2021), a natural population feature with tidal and secular mechanisms proposed, against which each polar planet is read. + + python -I seti.py transits polar [record] [--half-width-deg 15] [--err-max-deg 15]""" + + +def polar_main(record=False, half_width_deg=15.0, err_max_deg=15.0): + from scipy.stats import binom + rows = core.exoplanets("SELECT pl_name, hostname, pl_projobliq, pl_projobliqerr1, pl_projobliqerr2, pl_trueobliq, pl_orbper, st_teff, pl_bmassj, pl_refname FROM ps " + "WHERE pl_projobliq IS NOT NULL") + best = {} + for r in rows: + lam = num(r["pl_projobliq"]) + e1, e2 = num(r["pl_projobliqerr1"]), num(r["pl_projobliqerr2"]) + err = max(abs(e1 or 0), abs(e2 or 0)) if (e1 is not None or e2 is not None) else None + if lam is None or err is None: + continue + name = str(r["pl_name"]).strip() + ref = str(r["pl_refname"] or "") + ref = ref[ref.find(">") + 1:ref.find("")] if " 180 - half_width_deg] + frac = 2 * half_width_deg / 180.0 + p = float(binom.sf(len(polar) - 1, len(pl), frac)) if polar else 1.0 + for o in polar: + o["vet"] = "perpendicular-peak" if p < 0.01 else "chance-rate" + print("%d planets with a projected obliquity to %g deg; within %g deg of 90: %d against %.1f for a uniform obliquity (binomial p %.3g); within %g deg of alignment %d, of " + "anti-alignment %d" % (len(pl), err_max_deg, half_width_deg, len(polar), frac * len(pl), p, half_width_deg, len(aligned), len(retro))) + for o in sorted(polar, key=lambda o: abs(o["fold"] - 90)): + print(" %s: lambda %+.1f +- %.1f deg (true %s), P %.2f d, %s K, %s Mj, %s; %s" % (o["name"], o["lam"], o["err"], o["true"], o["P"] or 0, o["teff"], o["mass"], o["ref"], o["vet"])) + json.dump(dict(n=len(pl), polar=polar, aligned=len(aligned), retrograde=len(retro)), open(core.results("polar_planets.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_polar_orbits", "Planets on polar orbits", "NASA Exoplanet Archive planetary systems table (ps)", "planets with a projected obliquity to %g deg: %d" % (err_max_deg, len(pl)), + os.path.abspath(__file__), "polar", len(pl), "planets", dict(half_width_deg=half_width_deg, err_max_deg=err_max_deg), + "a uniform projected obliquity gives %.1f within %g deg of 90; %d aligned and %d anti-aligned to the same width" % (frac * len(pl), half_width_deg, len(aligned), len(retro)), + "a projected obliquity within %g deg of 90" % half_width_deg, "%d against %.1f (binomial p %.3g)" % (len(polar), frac * len(pl), p), + [dict(target="planet:%s" % o["name"], stat=round(o["fold"], 1), unit="projected obliquity, deg", vet=o["vet"], + note="lambda %+.1f +- %.1f deg, true %s, P %.2f d, %s K, %s" % (o["lam"], o["err"], o["true"], o["P"] or 0, o["teff"], o["ref"])) for o in polar]) + print("recorded") + + +daylines_DOC = r"""Lines in dayside spectra: the NASA Exoplanet Archive's emission-spectroscopy table (emissionspec), each published eclipse spectrum taken in wavelength order, bins whose eclipse depth stands more than five combined errors, five times the spectrum's own bin-to-bin scatter and a tenth of the depth away from the mean of their two neighbours, in either sign; a bin brighter is light the dayside adds at one wavelength, which a molecular band does broadly and a lamp or laser would narrowly, and a bin darker is absorption; bins wider than 50 nm are broad features rather than lines, a bin, or a neighbour of a spike, whose depth falls below a fifth of the spectrum's median is a null entry of the table resting on one record, a spike within a tenth of the spectrum's range of either end sits where the detector's throughput fails, and a host that pulsates, by its SIMBAD type or the literature, stamps its own variations on every eclipse depth. + + python -I seti.py transits daylines [record] [--sigma 5] [--frac 0.1] [--wide-um 0.05] [--min-bins 5] [--edge-frac 0.1]""" + + +# hosts whose pulsations are published where SIMBAD's main type does not show them +DAYLINES_PULSATING = {"WASP-33": "delta Scuti pulsator (Herrero et al. 2011)"} + + +def daylines_main(record=False, sigma=5.0, frac=0.1, wide_um=0.05, min_bins=5, edge_frac=0.1): + rows = core.exoplanets("SELECT plntname, plntreflink, instrument, centralwavelng, bandwidth, especlipdep, especlipdeperr1, especlipdeperr2, especlipdeplim FROM emissionspec " + "WHERE especlipdep IS NOT NULL AND centralwavelng IS NOT NULL") + series = {} + for r in rows: + if num(r["especlipdeplim"]): + continue + e1, e2 = num(r["especlipdeperr1"]), num(r["especlipdeperr2"]) + err = (abs(e1) + abs(e2)) / 2 if e1 is not None and e2 is not None else abs(e1 if e1 is not None else e2) if (e1 is not None or e2 is not None) else None + if not err: + continue + ref = str(r["plntreflink"] or "") + ref = ref[ref.find(">") + 1:ref.find("")] if " wide_um else "single-record" if min(depths[ws[k - 1]], depths[ws[k]], depths[ws[k + 1]]) < floor else + "detector-edge" if min(o["um"] - lo, hi - o["um"]) < edge_frac * (hi - lo) else None)) + out.append(o) + hosts = sorted({o["planet"].rsplit(" ", 1)[0] for o in out if o["vet"] is None}) + types = {} + if hosts: + for r in core.simbad("SELECT i.id, b.otype FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join("'%s'" % h.replace("'", "''") for h in hosts)): + types[str(r["id"]).strip()] = str(r["otype"]).strip() + for o in out: + host = o["planet"].rsplit(" ", 1)[0] + if o["vet"] is None and (types.get(host, "") in ("dS*", "gD*", "RR*", "Ce*", "Pu*", "bC*", "RV*", "LP*", "Mi*", "PV*") or host in DAYLINES_PULSATING): + o["vet"] = "variable-star" + o["host_type"] = DAYLINES_PULSATING.get(host, types.get(host)) + left = [o for o in out if o["vet"] is None] + print("%d eclipse spectra of %d bins; bins %g sigma and a %g fraction from their neighbours: %d (%d broad, %d on or beside a null entry, %d at a detector's edge, %d at pulsating hosts); " + "unexplained %d" % (n_series, n_bins, sigma, frac, len(out), sum(o["vet"] == "broad-feature" for o in out), sum(o["vet"] == "single-record" for o in out), + sum(o["vet"] == "detector-edge" for o in out), sum(o["vet"] == "variable-star" for o in out), len(left))) + for o in sorted(out, key=lambda o: -abs(o["z"])): + print(" %s (%s, %s): %.4f um (%.4f wide) depth %.1f, %+.1f from its neighbours (%.1f sigma, scatter %.1f); %s" % ( + o["planet"], o["ref"], o["inst"], o["um"], o["bw"], o["depth"], o["dev"], o["z"], o["scale"], o["vet"] or "unexplained")) + json.dump(dict(series=n_series, bins=n_bins, hits=out), open(core.results("dayside_lines.json"), "w"), indent=1) + if record: + core.record_run( + "exoplanet_dayside_lines", "Lines in dayside spectra", "NASA Exoplanet Archive emission spectroscopy table (emissionspec)", + "published eclipse spectra with %d or more bins: %d, %d bins" % (min_bins, n_series, n_bins), os.path.abspath(__file__), "daylines", n_series, "spectra", + dict(sigma=sigma, frac=frac, wide_um=wide_um, min_bins=min_bins, edge_frac=edge_frac), "each spectrum's own bin-to-bin scatter and the combined errors of the three bins; " + "null entries and the detectors' edges", "a bin %g sigma and a %g fraction of the depth away from the mean of its neighbours" % (sigma, frac), + "%d: %d broad, %d on or beside a null entry, %d at a detector's edge, %d at pulsating hosts; %d unexplained" % ( + len(out), sum(o["vet"] == "broad-feature" for o in out), sum(o["vet"] == "single-record" for o in out), sum(o["vet"] == "detector-edge" for o in out), + sum(o["vet"] == "variable-star" for o in out), len(left)), + [dict(target="planet:%s" % o["planet"], stat=round(o["z"], 1), unit="sigma from the neighbouring bins", vet=o["vet"], + note="%s, %s, %.4f um (%.4f wide), depth %.1f, %+.1f" % (o["ref"], o["inst"], o["um"], o["bw"], o["depth"], o["dev"])) for o in out]) + print("recorded") + + +APPROACHES = { + "daylines": (lambda: core.run_cli(daylines_main), daylines_DOC), + "polar": (lambda: core.run_cli(polar_main), polar_DOC), + "translines": (lambda: core.run_cli(translines_main), translines_DOC), + "spinlaps": (lambda: core.run_cli(spinlaps_main), spinlaps_DOC), + "ttvabsent": (lambda: core.run_cli(ttvabsent_main), ttvabsent_DOC), + "deeptransits": (lambda: core.run_cli(deeptransits_main), deeptransits_DOC), + "wdrefuge": (lambda: core.run_cli(wdrefuge_main), wdrefuge_DOC), + "faceon": (lambda: core.run_cli(faceon_main), faceon_DOC), + "longtransits": (lambda: core.run_cli(longtransits_main), longtransits_DOC), + "spinsteps": (lambda: core.run_cli(spinsteps_main), spinsteps_DOC), + "wholedays": (lambda: core.run_cli(wholedays_main), wholedays_DOC), + "circles": (lambda: core.run_cli(circles_main), circles_DOC), + "randomtransiter": (lambda: core.run_cli(randomtransiter_main), randomtransiter_DOC), + "earthcopy": (lambda: core.run_cli(earthcopy_main), earthcopy_DOC), + "exactres": (lambda: core.run_cli(exactres_main), exactres_DOC), + "ironplanets": (lambda: core.run_cli(ironplanets_main), ironplanets_DOC), + "rrlclock": (lambda: core.run_cli(rrlclock_main), rrlclock_DOC), + "cepclock": (lambda: core.run_cli(cepclock_main), cepclock_DOC), + "ebclock": (lambda: core.run_cli(ebclock_main), ebclock_DOC), + "nssclock": (lambda: core.run_cli(nssclock_main), nssclock_DOC), + "uniform": (lambda: core.run_cli(uniform_main), uniform_DOC), + "copysystems": (lambda: core.run_cli(copysystems_main), copysystems_DOC), + "mirrorplanets": (lambda: core.run_cli(mirrorplanets_main), mirrorplanets_DOC), + "insidestar": (lambda: core.run_cli(insidestar_main), insidestar_DOC), + "rocheplanets": (lambda: core.run_cli(rocheplanets_main), rocheplanets_DOC), + "copyplanets": (lambda: core.run_cli(copyplanets_main), copyplanets_DOC), + "dayside": (lambda: core.run_cli(dayside_main), dayside_DOC), + "constants": (lambda: core.run_cli(constants_main), constants_DOC), + "hillpack": (lambda: core.run_cli(hillpack_main), hillpack_DOC), + "coorbital": (lambda: core.run_cli(coorbital_main), coorbital_DOC), + "earthyear": (lambda: core.run_cli(earthyear_main), earthyear_DOC), + "earthday": (lambda: core.run_cli(earthday_main), earthday_DOC), + "sharedperiod": (lambda: core.run_cli(sharedperiod_main), sharedperiod_DOC), + "steps": (lambda: core.run_cli(steps_main), steps_DOC), + "depthgrowth": (depthgrowth_cli, depthgrowth_DOC), + "roche": (roche_cli, roche_DOC), + "lightweight": (lightweight_cli, lightweight_DOC), + "impulse": (impulse_cli, impulse_DOC), + "synchronous": (synchronous_cli, synchronous_DOC), + "aimed": (aimed_cli, aimed_DOC), + "escape": (escape_cli, escape_DOC), + "hollow": (lambda: core.run_cli(hollow_main), hollow_DOC), + "stability": (stability_cli, stability_DOC), + "nightheat": (lambda: core.run_cli(nightheat_main), nightheat_DOC), + "shapes_kepler": (shapes_kepler_cli, shapes_kepler_DOC), + "shapes_tess": (shapes_tess_cli, shapes_tess_DOC), + "ttv": (ttv_cli, ttv_DOC), + "cepheids": (cepheids_cli, cepheids_DOC), + "nightside": (nightside_cli, nightside_DOC), + "exobelts": (exobelts_cli, exobelts_DOC), + "commensurability": (commensurability_cli, commensurability_DOC), +} + + diff --git a/setitools/ultraviolet.py b/setitools/ultraviolet.py new file mode 100644 index 0000000000000000000000000000000000000000..604940897439299f1c1127cf69ed575578c658c1 --- /dev/null +++ b/setitools/ultraviolet.py @@ -0,0 +1,3054 @@ +"""Laser lines and photon pulses in archival ultraviolet data of nearby stars.""" +import argparse +import glob +import json +import math +import os +import re +import time +import urllib.parse +import urllib.request +from concurrent.futures import ThreadPoolExecutor + +import numpy as np + +from setitools import core +from setitools.core import quiet_warnings + + +# -------------------------------------------------------------------------------------------------------------- +# archive pointings carry catalogue positions of any epoch since 1950: match proper-motion tracks, nearest star within the aperture + +def uv_nearby(plx): + """SIMBAD stars above plx mas, planets excluded: main_id, ra, dec, pmra, pmdec, plx_value, sp_type, rvz_radvel, otype.""" + return core.simbad("SELECT main_id, ra, dec, pmra, pmdec, plx_value, sp_type, rvz_radvel, otype FROM basic " + "WHERE plx_value > %g AND otype NOT IN ('Pl', 'Pl?') AND ra IS NOT NULL" % plx) + + +def uv_track_dist(star, ra, dec, mjd): + """Arcsec from pointings (deg, MJD) to a star's proper-motion track from 1950 to the observation or 2000, whichever is later.""" + ra0, de0 = float(star["ra"]), float(star["dec"]) + x = ((np.asarray(ra, float) - ra0 + 180.0) % 360.0 - 180.0) * math.cos(math.radians(de0)) * 3600.0 + y = (np.asarray(dec, float) - de0) * 3600.0 + mx, my = float(star.get("pmra") or 0) / 1000.0, float(star.get("pmdec") or 0) / 1000.0 + t1 = np.maximum((np.asarray(mjd, float) - 51544.5) / 365.25, 0.0) + v2 = mx * mx + my * my + t = np.clip((x * mx + y * my) / v2, -50.0, t1) if v2 > 0 else np.zeros_like(x) + return np.hypot(x - mx * t, y - my * t) + + +def uv_owner(dists, tol): + """Nearest star to a pointing from {name: track distance} within tol arcsec, or None.""" + if not dists: + return None + name = min(dists, key=dists.get) + return name if dists[name] <= tol else None + + +def uv_groups(lams, tols): + """Indices of ascending wavelengths grouped where neighbours lie within the lower one's tolerance.""" + if not len(lams): + return [] + out, cur = [], [0] + for i in range(1, len(lams)): + if lams[i] - lams[i - 1] < tols[i - 1]: + cur.append(i) + else: + out.append(cur) + cur = [i] + return out + [cur] + + +def uv_forced(items, lam_of, z_of, thr=5.0): + """Stars whose forced measurement exceeds thr: lam_of(star) the wavelength in the star's frame, z_of(path, lam) the excess in noise units or None.""" + hit = set() + for star, path in items: + if star in hit: + continue + z = z_of(path, lam_of(star)) + if z is not None and z > thr: + hit.add(star) + return hit + + +def uv_resolve(names): + """{target name: SIMBAD main_id} for names SIMBAD knows, a spaced component letter ('HD 48915 B') also tried joined.""" + var = {} + for n in names: + n = " ".join(str(n).split()) + for v in (n, re.sub(r"(\d) ([A-Ca-c])$", r"\1\2", n)): + var.setdefault(v, n) + out = {} + keys = sorted(var) + for k in range(0, len(keys), 50): + q = ("SELECT i.id, b.main_id FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'%s'" % x.replace("'", "''") for x in keys[k:k + 50])) + for r in core.simbad(q): + out.setdefault(var.get(" ".join(str(r["id"]).split()), ""), " ".join(str(r["main_id"]).split())) + out.pop("", None) + return out + + +# -------------------------------------------------------------------------------------------------------------- + +starcat_DOC = r"""Laser lines in StarCAT HST/STIS echelle spectra (Ayres 2010): unresolved 6-sigma peaks persistent in two exposures of a setting, absent from other stars in either frame. + + python -I seti.py ultraviolet starcat fetch + python -I seti.py ultraviolet starcat search""" + +starcat_ROOT = os.environ.get("STARCAT_ROOT", core.data("starcat")) +starcat_HERE = core.RESULTS +starcat_BASE = "https://archive.stsci.edu/hlsps/starcat/fits/" +starcat_RES = {"E140M": 45800.0, "E230M": 30000.0, "E140H": 114000.0, "E230H": 114000.0} +starcat_AIRGLOW = (1215.67, 1302.17, 1304.86, 1306.03, 1355.60, 1358.51, 1199.55, 1200.22, 1200.71) +# chromospheric and transition-region lines whose self-reversed cores leave narrow peaks: C III, Si III, N V, C II, Si IV, C IV, He II, Mg II +starcat_CHROMOSPHERIC = (1175.71, 1206.50, 1238.82, 1242.80, 1334.53, 1335.71, 1393.76, 1402.77, 1548.20, 1550.77, 1640.4, + 2795.53, 2796.35, 2802.70, 2803.53) +starcat_Z_MIN = 6.0 +starcat_C_KMS = 299792.458 +starcat_ENVELOPE_A = 1.0 +starcat_ENVELOPE_PCT = 90 + + +def starcat_get(u): + return core.get(u, timeout=180, retries=3, soft=True, pause=2) + + +def starcat_fetch(): + os.makedirs(os.path.join(starcat_ROOT, "fits"), exist_ok=True) + top = starcat_get(starcat_BASE).decode("utf-8", "replace") + objs = [o for o in re.findall(r'href="([^"?/][^"]*)/"', top)] + jobs = [] + + def listing(o): + t = starcat_get(starcat_BASE + o + "/") + return [(o, f) for f in re.findall(r'href="(h_o[0-9a-z]+_spc\.fits)"', t.decode("utf-8", "replace"))] if t else [] + with ThreadPoolExecutor(6) as ex: + for js in ex.map(listing, objs): + jobs += js + print("%d objects, %d single exposures" % (len(objs), len(jobs)), flush=True) + + def one(j): + o, f = j + d = os.path.join(starcat_ROOT, "fits", o) + p = os.path.join(d, f) + if os.path.exists(p): + return 1 + b = starcat_get(starcat_BASE + o + "/" + f) + if not b or not b.startswith(b"SIMPLE"): + return 0 + os.makedirs(d, exist_ok=True) + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + with ThreadPoolExecutor(6) as ex: + n = sum(ex.map(one, jobs)) + print("%d exposures on disk" % n) + + +def starcat_load(path): + """(wavelength, flux, error) of an exposure's good samples and its metadata; None for a setting outside RES.""" + from astropy.io import fits + with fits.open(path) as h: + hd = h[0].header + d = h[1].data[0] + w, f, e, dq = (np.asarray(d[k], float) for k in ("WAVE", "FLUX", "ERROR", "DQ")) + mode = str(hd.get("OPT_ELEM", "")).strip() + if mode not in starcat_RES: + return None + meta = dict(obj=str(hd.get("CATNAME", "")).strip(), mode=mode, cenwave=hd.get("CENWAVE"), mjd=hd.get("EXPSTART"), + ra=hd.get("RA_TARG"), dec=hd.get("DEC_TARG"), file=os.path.basename(path), exptime=hd.get("EXPTIME")) + good = (e > 0) & np.isfinite(f) & ((dq.astype(int) & (4 | 8 | 16 | 32 | 64 | 128 | 256)) == 0) + return w[good], f[good], e[good], meta + + +def starcat_features(path): + x = starcat_load(path) + if x is None: + return None + w, f, e, meta = x + if len(w) < 1000: + return dict(meta, feats=[]) + return dict(meta, feats=starcat_detect(w, f, e, meta["mode"])) + + +def starcat_detect(w, f, e, mode): + """Unresolved peaks: 6 sigma above the running upper envelope, 3 sigma above the brightest samples within 2.5 A, width 0.5-1.5 instrumental.""" + from scipy.optimize import curve_fit + step = float(np.median(np.diff(w))) + # upper envelope: a running median between dense absorption lines makes the windows read as peaks + from scipy.ndimage import percentile_filter + win = max(int(starcat_ENVELOPE_A / step) | 1, 31) + cont = percentile_filter(f, starcat_ENVELOPE_PCT, size=win, mode="nearest") + z = (f - cont) / e + # and above the brightest neighbours within 2.5 A, which line-dense windows reach + from scipy.ndimage import maximum_filter1d + half = max(int(2.5 / step), 30) + left = maximum_filter1d(np.concatenate([np.full(half, -np.inf), f[:-half]]), size=half, origin=(half - 1) // 2) + right = maximum_filter1d(np.concatenate([f[half:], np.full(half, -np.inf)]), size=half, origin=-(half // 2)) + top = np.maximum(left, right) + out = [] + cand = np.where((z >= starcat_Z_MIN) & (z >= np.roll(z, 1)) & (z >= np.roll(z, -1)))[0] + for i in cand: + if i < 8 or i > len(w) - 9: + continue + lam = w[i] + if any(abs(lam - a) < 0.6 for a in starcat_AIRGLOW) or any(abs(lam - a) < 1.2 for a in starcat_CHROMOSPHERIC): + continue + if not f[i] - top[i] > 3 * e[i]: + continue + inst = lam / starcat_RES[mode] + sl = slice(i - 8, i + 9) + x, y, s = w[sl], (f - cont)[sl], e[sl] + try: + p, _ = curve_fit(lambda x, a, m, sg: a * np.exp(-0.5 * ((x - m) / sg) ** 2), x, y, + p0=[y[8], lam, inst / 2.355], sigma=s, maxfev=2000) + except Exception: + continue + fwhm = 2.355 * abs(p[2]) + if 0.5 * inst <= fwhm <= 1.5 * inst and abs(p[1] - lam) < inst: + out.append(dict(lam=float(p[1]), z=float(z[i]), fwhm=float(fwhm), inst=float(inst), flux=float(p[0]))) + return out + + +def starcat_resolve(objs): + """SIMBAD main_id, parallax, spectral type and RV of StarCAT objects {name: (ra, dec)}: by identifier, else by position among stars.""" + def num(x): + return float(x) if x not in (None, "") else None + out = {} + ident = {k: re.sub(r"^(HD|HR|HIP|GJ|GL|BD|CD|LHS|LTT|WD)(?=[0-9+-])", r"\1 ", k.replace("-", " "), flags=re.I) + for k in objs} + ids = sorted(set(ident.values())) + for j in range(0, len(ids), 50): + q = ("SELECT i.id, b.main_id, b.plx_value, b.sp_type, b.rvz_radvel FROM ident AS i JOIN basic AS b ON " + "i.oidref = b.oid WHERE i.id IN (%s)" % ",".join("'%s'" % x.replace("'", "''") for x in ids[j:j + 50])) + for r in core.simbad(q): + key = " ".join(str(r["id"]).split()).lower() + for k, v in ident.items(): + if key == " ".join(v.split()).lower(): + out[k] = dict(main_id=" ".join(r["main_id"].split()), plx=num(r.get("plx_value")), + sp=r.get("sp_type") or "", rv=num(r.get("rvz_radvel"))) + rest = {k: v for k, v in objs.items() if k not in out and v[0] is not None} + m = core.xmatch([dict(source_id=k, ra=v[0], dec=v[1]) for k, v in rest.items()], "simbad", 10.0) if rest else [] + best = {} + for r in m: + if r.get("otype") in ("Pl", "Pl?") or "Planet" in (r.get("main_type") or ""): + continue + if r["source_id"] not in best or float(r["angDist"]) < float(best[r["source_id"]]["angDist"]): + best[r["source_id"]] = r + for k, r in best.items(): + out[k] = dict(main_id=" ".join(r["main_id"].split()), plx=num(r.get("plx")), sp=r.get("sp_type") or "", + rv=num(r.get("radvel"))) + return out + + +def starcat_forced_z(w, f, e, lam): + """Largest excess over the upper envelope in noise units within two samples of lam; None without coverage.""" + from scipy.ndimage import percentile_filter + j = int(np.searchsorted(w, lam)) + if j < 3 or j > len(w) - 4: + return None + step = float(np.median(np.diff(w[max(j - 50, 0):j + 50]))) + if abs(w[j] - lam) > 2 * step: + return None + lo, hi = max(j - 600, 0), min(j + 600, len(w)) + cont = percentile_filter(f[lo:hi], starcat_ENVELOPE_PCT, size=max(int(starcat_ENVELOPE_A / step) | 1, 31), + mode="nearest") + k = j - lo + return float(np.max((f[lo:hi][k - 2:k + 3] - cont[k - 2:k + 3]) / e[lo:hi][k - 2:k + 3])) + + +def starcat__forced(job): + """Forced measurements of candidate features in one exposure: (object, [(z at rest wavelength, z at observed wavelength in the same setting)]).""" + quiet_warnings() + path, rv, feats = job + x = starcat_load(path) + if x is None: + return None + w, f, e, meta = x + out = [] + for p in feats: + zr = starcat_forced_z(w, f, e, p["rest"] * (1 + rv / starcat_C_KMS)) + same = meta["mode"] == p["mode"] and meta["cenwave"] in p["cenwaves"] + out.append((zr, starcat_forced_z(w, f, e, p["lam"]) if same else None)) + return meta["obj"], out + + +def starcat_search(): + from concurrent.futures import ProcessPoolExecutor + paths = [os.path.join(dp, f) for dp, _, fs in os.walk(os.path.join(starcat_ROOT, "fits")) for f in fs if f.endswith("_spc.fits")] + procs = int(os.environ.get("UV_PROCS", "2")) + with ProcessPoolExecutor(procs) as ex: + res = [r for r in ex.map(starcat_features, paths, chunksize=8) if r] + print("%d exposures of %d objects; %d narrow peaks at %d sigma or more" % ( + len(res), len({r["obj"] for r in res}), sum(len(r["feats"]) for r in res), starcat_Z_MIN), flush=True) + # persistent features per object and setting + by = {} + for r in res: + by.setdefault((r["obj"], r["mode"]), []).append(r) + pers = [] + for (obj, mode), rs in by.items(): + if len(rs) < 2: + continue + allf = sorted(((x, r["file"], r["cenwave"]) for r in rs for x in r["feats"]), key=lambda t: t[0]["lam"]) + for grp in uv_groups([x["lam"] for x, _, _ in allf], [x["inst"] / 3 for x, _, _ in allf]): + files = {allf[j][1] for j in grp} + if len(files) >= 2: + xs = [allf[j][0] for j in grp] + pers.append(dict(obj=obj, mode=mode, lam=float(np.mean([y["lam"] for y in xs])), n=len(files), + of=len(rs), z=float(max(y["z"] for y in xs)), inst=xs[0]["inst"], + cenwaves=sorted({allf[j][2] for j in grp}), ra=rs[0]["ra"], dec=rs[0]["dec"])) + print("%d persistent features (two or more exposures in one setting) in %d objects" % ( + len(pers), len({p["obj"] for p in pers})), flush=True) + names = starcat_resolve({r["obj"]: (r["ra"], r["dec"]) for r in res}) + rv = {k: v["rv"] or 0.0 for k, v in names.items()} + for p in pers: + p["rest"] = p["lam"] / (1 + rv.get(p["obj"], 0.0) / starcat_C_KMS) + p["main_id"], p["sp"] = names.get(p["obj"], {}).get("main_id", p["obj"]), names.get(p["obj"], {}).get("sp", "") + # other stars' peaks: rest frame (stellar), observed frame (instrument or sky) + pk = [(x["lam"], r["obj"]) for r in res for x in r["feats"]] + obsw = np.array([lam for lam, _ in pk]) + rest = np.array([lam / (1 + rv.get(o, 0.0) / starcat_C_KMS) for lam, o in pk]) + objs = np.array([o for _, o in pk]) + for p in pers: + near_r = np.abs(rest - p["rest"]) / p["rest"] * starcat_C_KMS < 15.0 + near_o = np.abs(obsw - p["lam"]) / p["lam"] * starcat_C_KMS < 15.0 + p["stars_rest"] = len(set(objs[near_r]) - {p["obj"]}) + p["stars_obs"] = len(set(objs[near_o]) - {p["obj"]}) + left = [p for p in pers if p["stars_rest"] < 2 and p["stars_obs"] < 2] + # forced measurements in other stars below detection: rest wavelength (stellar), observed wavelength in the same setting (instrument) + obj_of = {r["file"]: r["obj"] for r in res} + jobs = [(q, rv.get(obj_of.get(os.path.basename(q)), 0.0), left) for q in paths if os.path.basename(q) in obj_of] + hits_r, hits_o = [set() for _ in left], [set() for _ in left] + with ProcessPoolExecutor(procs) as ex: + for out in ex.map(starcat__forced, jobs, chunksize=8): + if not out: + continue + obj, zs = out + for k, (zr, zo) in enumerate(zs): + if obj != left[k]["obj"]: + if zr is not None and zr > 5.0: + hits_r[k].add(obj) + if zo is not None and zo > 5.0: + hits_o[k].add(obj) + for k, p in enumerate(left): + p["forced_rest"], p["forced_obs"] = sorted(hits_r[k]), sorted(hits_o[k]) + unique = sorted([p for p in left if len(p["forced_rest"]) < 2 and len(p["forced_obs"]) < 2], key=lambda p: -p["z"]) + print("%d persistent features in at most one other star in either frame; %d of them above 5 sigma in two or more " + "other stars when measured there; %d left:" % (len(left), len(left) - len(unique), len(unique))) + for p in unique[:60]: + print(" %-18s %s %.3f A (rest %.3f), in %d of %d exposures, peak %.1f sigma, other stars %d/%d, measured %d/%d" + % (p["obj"], p["mode"], p["lam"], p["rest"], p["n"], p["of"], p["z"], p["stars_rest"], p["stars_obs"], + len(p["forced_rest"]), len(p["forced_obs"]))) + json.dump(dict(exposures=len(res), objects=len({r["obj"] for r in res}), peaks=sum(len(r["feats"]) for r in res), + persistent=pers), open(os.path.join(starcat_HERE, "uv_laser.json"), "w"), indent=1) + + +def starcat_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "search")) + a = p.parse_args() + {"fetch": starcat_fetch, "search": starcat_search}[a.mode]() + + +def starcat_cli(): + quiet_warnings() + starcat_main() + + +# -------------------------------------------------------------------------------------------------------------- + +cos_DOC = r"""Laser lines in HST/COS FUV spectra of stars within 10 pc: unresolved peaks at p 1e-9, persistent across FP-POS, absent from other stars and their summed spectra. + + python -I seti.py ultraviolet cos spectra (STIS_ROOT event files; COS_PROCS processes) + python -I seti.py ultraviolet cos search + python -I seti.py ultraviolet cos identify (NIST ASD lines, cached beside STIS_ROOT)""" + +cos_ROOT = os.environ.get("STIS_ROOT", core.data("stis_tag")) +cos_HERE = core.RESULTS +cos_C_KMS = 299792.458 +cos_BIN_PX = 2 +cos_LSF_PX = 6.5 +cos_AIRGLOW = ((1215.67, 2.0), (1302.17, 0.6), (1304.86, 0.6), (1306.03, 0.6), (1355.60, 0.6), (1358.51, 0.6), + (1199.55, 0.6), (1200.22, 0.6), (1200.71, 0.6)) +cos_STRONG = (1175.71, 1206.50, 1238.82, 1242.80, 1334.53, 1335.71, 1393.76, 1402.77, 1548.20, 1550.77, 1640.4) +cos_P_MAX = 1e-9 +cos_DQ_BAD = 2 | 8 | 16 | 32 | 64 | 128 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 +cos_APERTURE_TOL = 3.0 # arcsec; the primary science aperture is 2.5 arcsec across + + +def cos_owned(rs): + """Spectra whose pointing holds a star within 10 pc, each given that star as 'star'.""" + inv = json.load(open(os.path.join(cos_ROOT, "inventory.json"))) + tags = {t["file"]: t for t in inv["tags"]} + out = [] + for r in rs: + tg = tags.get(r["file"]) + o = inv["obs"].get(tg["parent"], inv["obs"].get(tg["obsid"], {})) if tg else {} + star = uv_owner(o.get("dist", {}), cos_APERTURE_TOL) + if star: + out.append(dict(r, star=star)) + return out + + +cos_CAL_TARGETS = ("DARK", "BIAS", "DEUTERIUM", "WAVE", "WAVEHITM", "WAVELINE", "FLAT", "CCDFLAT", "NONE") + + +def cos_left(p): + """True for a persistent feature no two other stars show in either frame and absent from their summed spectra.""" + return p["stars_rest"] < 2 and p["stars_obs"] < 2 and p.get("template_p", 1.0) > 1e-5 + + +def cos_science(hd): + """False for calibration exposures (darks, flats, lamps) filed under a science visit.""" + et = str(hd.get("EXPTYPE", "EXTERNAL/SCI")).strip().upper() + tn = str(hd.get("TARGNAME", "")).strip().upper() + return et in ("EXTERNAL/SCI", "") and not any(tn.startswith(c) for c in cos_CAL_TARGETS) + + +def cos_spectrum(path): + """Heliocentric count spectrum of one COS FUV corrtag segment: on-band and scaled background counts per two-pixel bin, with metadata.""" + from astropy.io import fits + with fits.open(path) as h: + hd = h[0].header + if str(hd.get("DETECTOR", "")).strip() != "FUV": + return None + if not cos_science(hd): + return None + seg = str(hd.get("SEGMENT", "")).strip()[-1:] + e = h["EVENTS"] + eh, d = e.header, e.data + if d is None or len(d) < 100: + return None + cols = d.columns.names + t = np.asarray(d["TIME"], float) + xf = np.asarray(d["XFULL"], float) + yf = np.asarray(d["YFULL"], float) + wl = np.asarray(d["WAVELENGTH"], float) + good = (np.asarray(d["DQ"], int) & cos_DQ_BAD) == 0 if "DQ" in cols else np.ones(len(t), bool) + if "PHA" in cols: + pha = np.asarray(d["PHA"], int) + good &= (pha >= int(eh.get("PHALOWR" + seg, 2))) & (pha <= int(eh.get("PHAUPPR" + seg, 23))) + good &= wl > 0 + for i in range(1, 40): + if "LMP_ON%d" % i in eh: + on = float(eh["LMP_ON%d" % i]) + off = float(eh.get("LMPOFF%d" % i, on + 15.0)) + good &= ~((t >= on - 2.0) & (t <= off + 2.0)) + loc, hgt = eh.get("SP_LOC_" + seg), eh.get("SP_HGT_" + seg) + if loc is None or hgt is None: + return None + slp = float(eh.get("SP_SLP_" + seg, 0.0) or 0.0) + best = None + for xr in (0.0, 8192.0): + inb = np.abs(yf - (float(loc) + slp * (xf - xr))) <= float(hgt) / 2 + if best is None or (good & inb).sum() > (good & best).sum(): + best = inb + on_band = good & best + bk = np.zeros(len(t), bool) + bh = 0.0 + for k in (1, 2): + b, bhh = eh.get("B_BKG%d_%s" % (k, seg)), eh.get("B_HGT%d_%s" % (k, seg)) + if b is not None and bhh: + bk |= np.abs(yf - float(b)) <= float(bhh) / 2 + bh += float(bhh) + bk &= good + vh = float(eh.get("V_HELIO", 0.0) or 0.0) + meta = dict(file=os.path.basename(path), grating=str(hd.get("OPT_ELEM", "")).strip(), cenwave=hd.get("CENWAVE"), + fppos=hd.get("FPPOS"), segment=seg, target=str(hd.get("TARGNAME", "")).strip(), + mjd=float(eh.get("EXPSTART", 0) or 0), exptime=float(eh.get("EXPTIME", 0) or 0), v_helio=vh) + if on_band.sum() < 200: + return None + edges = np.arange(0, 16384 + cos_BIN_PX, cos_BIN_PX) + c_on = np.histogram(xf[on_band], edges)[0].astype(float) + c_bk = np.histogram(xf[bk], edges)[0].astype(float) * (float(hgt) / bh if bh else 0.0) + # dispersion: cubic wavelength against XFULL per segment from the band's events + sel = on_band + if sel.sum() > 50: + cf = np.polyfit(xf[sel], wl[sel], 3) + else: + return None + centres = 0.5 * (edges[:-1] + edges[1:]) + lam = np.polyval(cf, centres) + lo, hi = np.percentile(xf[on_band], [0.5, 99.5]) + keep = (centres >= lo) & (centres <= hi) + return dict(meta, lam=lam[keep].tolist(), on=c_on[keep].tolist(), bk=c_bk[keep].tolist(), + disp=float(abs(np.polyval(np.polyder(cf), 8192.0)))) + + +def cos_spectra(): + from concurrent.futures import ProcessPoolExecutor + inv = json.load(open(os.path.join(cos_ROOT, "inventory.json"))) + obs = inv["obs"] + files = [(os.path.join(cos_ROOT, "events", tg["file"]), obs.get(tg["parent"], obs.get(tg["obsid"], {})).get("stars", [])) + for tg in inv["tags"] if tg["file"].endswith(("_corrtag_a.fits", "_corrtag_b.fits"))] + files = [(p, s) for p, s in files if os.path.exists(p)] + out = [] + with ProcessPoolExecutor(int(os.environ.get("COS_PROCS", "4"))) as ex: + for (p, s), r in zip(files, ex.map(cos__safe_spectrum, [p for p, _ in files], chunksize=4)): + if r: + r["stars"] = [" ".join(x.split()) for x in s] + out.append(r) + json.dump(out, open(os.path.join(cos_ROOT, "cos_spectra.json"), "w")) + print("%d COS FUV segment spectra of %d targets" % (len(out), len({r["target"] for r in out}))) + + +def cos__safe_spectrum(p): + try: + return cos_spectrum(p) + except Exception as e: + print(os.path.basename(p), "failed:", str(e)[:80], flush=True) + return None + + +def cos_peaks(r, sign, p_max=cos_P_MAX): + """Narrow peaks of one spectrum: (heliocentric wavelength, significance, width in pixels, net counts).""" + from scipy.ndimage import percentile_filter + from scipy.optimize import curve_fit + from scipy.stats import poisson + lam = np.array(r["lam"]) * (1 + sign * r["v_helio"] / cos_C_KMS) + on, bk = np.array(r["on"]), np.array(r["bk"]) + if len(lam) < 200: + return [] + s3 = np.convolve(on, np.ones(3), "same") + b3 = np.convolve(bk, np.ones(3), "same") + step = abs(float(np.median(np.diff(lam)))) + win = max(int(1.0 / step) * 2 + 1, 31) + env = percentile_filter(s3, 90, size=win, mode="nearest") + mu = np.maximum(env, b3 + 0.5) + p = poisson.sf(s3 - 1, mu) + cand = np.where((p < p_max) & (s3 >= np.roll(s3, 1)) & (s3 >= np.roll(s3, -1)))[0] + out = [] + net = on - bk + for i in cand: + if i < 8 or i > len(lam) - 9: + continue + l0 = lam[i] + if any(abs(l0 - a) < w for a, w in cos_AIRGLOW) or any(abs(l0 - a) < 1.2 for a in cos_STRONG): + continue + x = np.arange(-8, 9) * cos_BIN_PX + y = net[i - 8:i + 9] - np.median(net[max(i - 40, 0):i + 40]) + try: + q, _ = curve_fit(lambda x, a, m, sg: a * np.exp(-0.5 * ((x - m) / sg) ** 2), x, y, + p0=[max(y[8], 1.0), 0.0, cos_LSF_PX / 2.355], maxfev=2000) + except Exception: + continue + fw = 2.355 * abs(q[2]) + if 0.5 * cos_LSF_PX <= fw <= 1.5 * cos_LSF_PX and abs(q[1]) < cos_LSF_PX: + out.append(dict(lam=float(np.interp(i + q[1] / cos_BIN_PX, np.arange(len(lam)), lam)), + p=float(max(p[i], 1e-300)), fwhm_px=float(fw), net=float(q[0]))) + return out + + +def cos_search(): + rs = cos_owned(json.load(open(os.path.join(cos_ROOT, "cos_spectra.json")))) + # CalCOS HELCORR already makes WAVELENGTH heliocentric + best_sign = 0 + feats, loose = [], [] + for r in rs: + for f in cos_peaks(r, best_sign, 1e-5): + g = dict(f, file=r["file"], grating=r["grating"], fppos=r["fppos"], target=r["target"], disp=r["disp"], + star=r["star"]) + loose.append(g) + if f["p"] < cos_P_MAX: + feats.append(g) + print("%d spectra of %d stars; %d narrow peaks at p < %.0e" % (len(rs), len({r["star"] for r in rs}), len(feats), + cos_P_MAX), flush=True) + by = {} + for f in feats: + by.setdefault((f["star"], f["grating"]), []).append(f) + pers = [] + for (star, grating), fs in by.items(): + fs.sort(key=lambda f: f["lam"]) + used = set() + for k, f in enumerate(fs): + if k in used: + continue + tol = cos_BIN_PX * f["disp"] * 3 / 3.0 + grp = [j for j, g in enumerate(fs) if abs(g["lam"] - f["lam"]) < tol] + files = {fs[j]["file"][:9] for j in grp} + # persistence across FP-POS: a fixed wavelength moves on the detector + if len(files) >= 2 and len({fs[j]["fppos"] for j in grp}) >= 2: + used.update(grp) + pers.append(dict(star=star, grating=grating, lam=float(np.mean([fs[j]["lam"] for j in grp])), + n=len(files), p=min(fs[j]["p"] for j in grp), + fppos=sorted({fs[j]["fppos"] for j in grp}), disp=f["disp"])) + print("%d persistent features (two or more exposures) in %d stars" % (len(pers), len({p["star"] for p in pers})), + flush=True) + names = sorted({p["star"] for p in pers} | {g["star"] for g in loose}) + rv = {} + for n in names: + try: + q = core.simbad("SELECT b.rvz_radvel FROM basic b JOIN ident i ON i.oidref = b.oid WHERE i.id = '%s'" + % n.replace("'", "''")) + rv[n] = float(q[0]["rvz_radvel"]) if q and q[0]["rvz_radvel"] not in ("", None) else 0.0 + except Exception: + rv[n] = 0.0 + for p in pers: + p["rest"] = p["lam"] / (1 + rv.get(p["star"], 0.0) / cos_C_KMS) + # other stars' peaks at p < 1e-5 within 15 km/s: rest frame (stellar), observed frame (instrument or sky) + rest = np.array([g["lam"] / (1 + rv.get(g["star"], 0.0) / cos_C_KMS) for g in loose]) + obsw = np.array([g["lam"] for g in loose]) + star = np.array([g["star"] for g in loose]) + for p in pers: + near_r = np.abs(rest - p["rest"]) / p["rest"] * cos_C_KMS < 15.0 + near_o = np.abs(obsw - p["lam"]) / p["lam"] * cos_C_KMS < 15.0 + p["stars_rest"] = len(set(star[near_r]) - {p["star"]}) + p["stars_obs"] = len(set(star[near_o]) - {p["star"]}) + # deep test: other stars summed in their rest frames, a peak at Poisson p < 1e-5 per resolution element over the running 90th percentile + from scipy.stats import poisson + grid = np.arange(1100.0, 1800.0, 0.01) + stack = {} + for r in rs: + st = r["star"] + lam = np.array(r["lam"]) * (1 + best_sign * r["v_helio"] / cos_C_KMS) / (1 + rv.get(st, 0.0) / cos_C_KMS) + on = np.array(r["on"]) + idx = np.clip(np.searchsorted(grid, lam), 0, len(grid) - 1) + h = stack.setdefault((r["grating"], st), np.zeros(len(grid))) + np.add.at(h, idx, on) + for p in pers: + tot = np.zeros(len(grid)) + for (g, st), h in stack.items(): + if g == p["grating"] and st != p["star"]: + tot += h + res_el = 3 * cos_BIN_PX * p["disp"] + k = max(int(round(res_el / 0.01)), 1) + s_k = np.convolve(tot, np.ones(k), "same") + j = int(np.searchsorted(grid, p["rest"])) + lo, hi = max(j - 100, 0), min(j + 101, len(grid)) + env = np.percentile(s_k[lo:hi], 90) + i0 = int(np.argmax(s_k[max(j - k, 0):j + k + 1])) + max(j - k, 0) + p["template_counts"] = float(s_k[i0]) + p["template_p"] = float(poisson.sf(s_k[i0] - 1, max(env, 0.5))) + unique = sorted([p for p in pers if cos_left(p)], key=lambda p: p["p"]) + print("%d persistent features also in the other stars' summed spectra (template p < 1e-5)" + % sum(1 for p in pers if p["template_p"] <= 1e-5)) + from collections import Counter + print("persistent features by star: " + ", ".join("%s %d" % kv for kv in Counter(p["star"] for p in pers).most_common())) + print("%d persistent features in at most one other star in either frame and absent from the summed spectra:" + % len(unique)) + for p in unique[:80]: + print(" %-22s %s %.3f A (rest %.3f), in %d exposures (FP-POS %s), p %.1e, other stars %d/%d, other stars' " + "sum %.0f counts (p %.1e)" % (p["star"][:22], p["grating"], p["lam"], p["rest"], p["n"], + ",".join(str(x) for x in p["fppos"]), p["p"], p["stars_rest"], + p["stars_obs"], p["template_counts"], p["template_p"])) + json.dump(dict(sign=best_sign, spectra=len(rs), stars=len({r["star"] for r in rs}), + peaks=len(feats), persistent=pers), open(os.path.join(cos_HERE, "cos_laser.json"), "w"), indent=1) + + +cos_IONS = ("H I", "He II", "C I", "C II", "C III", "C IV", "N I", "N II", "N III", "N IV", "N V", "O I", "O II", "O III", + "O IV", "O V", "Si I", "Si II", "Si III", "Si IV", "S I", "S II", "S III", "S IV", "Fe I", "Fe II", "Fe III", + "Fe XII", "Fe XXI", "Mg I", "Mg II", "Al I", "Al II", "Al III", "Ca II", "Cl I", "Cl II", "P I", "P II", "Ni II", + "Cr II", "Mn II", "Co II", "Zn II", "Ti II", "Ne V") + + +def cos_identify(): + """Persistent features within 15 km/s of NIST chromospheric and transition-region lines (intensity listed or A above 1e7 /s, low levels for neutral and singly ionised).""" + lines = [] + for ion in cos_IONS: + lines += core.nist_lines(ion, 1100, 1800, cache_dir=os.path.join(os.path.dirname(cos_ROOT), "nist")) + + def num(x): + try: + return float(str(x).strip("[]()+x? ")) + except ValueError: + return float("nan") + strong = [] + for ln in lines: + stage = ln["ion"].split()[1] + ei, aki = num(ln["ei"]), num(ln["aki"]) + if (ln["intens"].strip() or aki > 1e7) and (stage not in ("I", "II") or ei < 30000): + strong.append(ln) + strong.sort(key=lambda ln: ln["lam"]) + lam = np.array([ln["lam"] for ln in strong]) + d = json.load(open(os.path.join(cos_HERE, "cos_laser.json"))) + left = [p for p in d["persistent"] if cos_left(p)] + rng = np.random.default_rng(1) + r = rng.uniform(1150, 1750, 20000) + k = np.searchsorted(lam, r).clip(1, len(lam) - 1) + dv = np.minimum(np.abs(lam[k] - r), np.abs(lam[k - 1] - r)) / r * cos_C_KMS + print("%d NIST lines, %d strong or low-excitation; a random wavelength lies within 2 and 15 km/s of one with " + "probability %.2f and %.2f" % (len(lines), len(strong), np.mean(dv < 2), np.mean(dv < 15))) + unid = [] + for p in sorted(left, key=lambda p: p["p"]): + dv = (lam - p["rest"]) / p["rest"] * cos_C_KMS + j = int(np.argmin(np.abs(dv))) + p["id"] = "%s %.3f (%+.0f km/s)" % (strong[j]["ion"], strong[j]["lam"], dv[j]) if abs(dv[j]) < 15 else None + if not p["id"]: + unid.append(p) + print(" %-14s %s rest %.3f, %d exposures, p %.0e: %s" % (p["star"][:14], p["grating"], p["rest"], p["n"], p["p"], + p["id"] or "no line within 15 km/s")) + print("%d of %d persistent features unique to one star have no line within 15 km/s" % (len(unid), len(left))) + json.dump(dict(d, identified=left), open(os.path.join(cos_HERE, "cos_laser.json"), "w"), indent=1) + + +def cos_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("spectra", "search", "identify")) + a = p.parse_args() + {"spectra": cos_spectra, "search": cos_search, "identify": cos_identify}[a.mode]() + + +def cos_cli(): + quiet_warnings() + cos_main() + + +# -------------------------------------------------------------------------------------------------------------- + +iue_DOC = r"""Laser lines in IUE high-dispersion spectra of stars within 10 pc: unresolved 6-sigma peaks persistent in two images of one camera and aperture, absent from other stars and the other aperture. + + python -I seti.py ultraviolet iue inventory + python -I seti.py ultraviolet iue fetch [--threads 4] + python -I seti.py ultraviolet iue search""" + +iue_ROOT = os.environ.get("IUE_ROOT", core.data("iue")) +iue_HERE = core.RESULTS +iue_DL = "https://mast.stsci.edu/api/v0.1/Download/file?uri=mast:IUE/url/missions/iue/data/%s/%05d/%s.mxhi.gz" +iue_R = 10000.0 +iue_Z_MIN = float(os.environ.get("IUE_ZMIN", "6.0")) +iue_N_MIN = int(os.environ.get("IUE_NMIN", "2")) +iue_C_KMS = 299792.458 +iue_MATCH_ARCSEC = 30.0 +iue_APERTURE_TOL = 10.0 # arcsec; the large aperture is 10 by 20 arcsec + + +def iue_owned(inv): + """One inventory entry per image: the nearest star within the aperture tolerance.""" + by = {} + for o in inv: + by.setdefault(o["obs_id"], []).append(o) + out = [] + for v in by.values(): + # archived coordinates err by up to 30 arcsec: the target name's star first + named = [o for o in v if o.get("named")] + o = min(named or v, key=lambda o: o["sep"]) + if named or o["sep"] <= iue_APERTURE_TOL: + out.append(o) + return out + + +def iue_inventory(): + os.makedirs(iue_ROOT, exist_ok=True) + stars = uv_nearby(100) + every, page = [], 1 + while True: + d = hst_pulses_invoke({"service": "Mast.Caom.Filtered", "format": "json", "pagesize": 50000, "page": page, + "params": {"columns": "obsid,obs_id,instrument_name,target_name,t_min,s_ra,s_dec", + "filters": [{"paramName": "obs_collection", "values": ["IUE"]}, + {"paramName": "filters", "values": ["HIGH DISP"]}]}}) + rows = d.get("data", []) + every += rows + if len(rows) < 50000: + break + page += 1 + print("%d IUE high-dispersion observations" % len(every), flush=True) + ora = np.array([float(x["s_ra"]) if x.get("s_ra") is not None else np.nan for x in every]) + ode = np.array([float(x["s_dec"]) if x.get("s_dec") is not None else np.nan for x in every]) + tmin = np.array([float(x["t_min"]) if x.get("t_min") is not None else 46000.0 for x in every]) + out = [] + for s in stars: + sep = uv_track_dist(s, ora, ode, tmin) + for j in np.where(sep < iue_MATCH_ARCSEC)[0]: + x = every[j] + out.append(dict(star=" ".join(s["main_id"].split()), rv=s.get("rvz_radvel"), obs_id=x["obs_id"], + camera=x["instrument_name"], target=x["target_name"], mjd=float(tmin[j]), sep=float(sep[j]))) + names = uv_resolve({o["target"] for o in out}) + for o in out: + o["named"] = names.get(" ".join(str(o["target"]).split())) == o["star"] + json.dump(out, open(os.path.join(iue_ROOT, "inventory.json"), "w"), indent=1) + print("%d high-dispersion images of %d objects within 10 pc" % (len(out), len({o["star"] for o in out}))) + + +def iue_url(obs_id): + cam = "".join(c for c in obs_id if c.isalpha()).lower() + num = int("".join(c for c in obs_id if c.isdigit())) + return iue_DL % (cam, num // 1000 * 1000, obs_id.lower()) + + +def iue_fetch(threads): + from concurrent.futures import ThreadPoolExecutor + inv = json.load(open(os.path.join(iue_ROOT, "inventory.json"))) + os.makedirs(os.path.join(iue_ROOT, "mxhi"), exist_ok=True) + + def one(o): + p = os.path.join(iue_ROOT, "mxhi", o + ".mxhi.gz") + if os.path.exists(p): + return 1 + b = core.get(iue_url(o), timeout=180, retries=3, soft=True, pause=2) + if not b or b[:2] != b"\x1f\x8b" or len(b) < 5000: + return 0 + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + ids = sorted({o["obs_id"] for o in inv}) + with ThreadPoolExecutor(threads) as ex: + n = sum(ex.map(one, ids)) + print("%d of %d MXHI files on disk" % (n, len(ids))) + + +def iue_orders(path): + """[(wavelength, net, noise, abs_cal)] of an image's orders at QUALITY 0; ABS_CAL converts flux numbers to erg/cm2/s/A.""" + from astropy.io import fits + out = [] + with fits.open(path) as h: + d = h[1].data + names = [c.upper() for c in d.columns.names] + for row in d: + n = int(row["NPOINTS"]) + if n < 100: + continue + w = float(row["WAVELENGTH"]) + float(row["DELTAW"]) * np.arange(n) + f = np.asarray(row["NET"][:n], float) + e = np.asarray(row["NOISE"][:n], float) + q = np.asarray(row["QUALITY"][:n], int) + cal = np.asarray(row["ABS_CAL"][:n], float) if "ABS_CAL" in names else np.full(n, np.nan) + ok = (q == 0) & np.isfinite(f) & np.isfinite(e) & (e > 0) + if ok.sum() < 80: + continue + out.append((w[ok], f[ok], e[ok], cal[ok])) + return out + + +def iue_detect(w, f, e): + """Unresolved peaks of one order: 6 sigma above a 5 A running upper envelope and 3 sigma above the brightest samples within 2.5 A.""" + from scipy.ndimage import maximum_filter1d, percentile_filter + from scipy.optimize import curve_fit + out = [] + step = float(np.median(np.diff(w))) + env = percentile_filter(f, 90, size=max(int(5.0 / step) | 1, 61), mode="nearest") + z = (f - env) / e + half = max(int(2.5 / step), 10) + left = maximum_filter1d(np.concatenate([np.full(half, -np.inf), f[:-half]]), size=half, origin=(half - 1) // 2) + right = maximum_filter1d(np.concatenate([f[half:], np.full(half, -np.inf)]), size=half, origin=-(half // 2)) + top = np.maximum(left, right) + for i in np.where((z >= iue_Z_MIN) & (z >= np.roll(z, 1)) & (z >= np.roll(z, -1)))[0]: + if i < 6 or i > len(w) - 7 or not f[i] - top[i] > 3 * e[i]: + continue + lam = w[i] + if any(abs(lam - a) < 0.6 for a in starcat_AIRGLOW) or any(abs(lam - a) < 1.2 for a in starcat_CHROMOSPHERIC): + continue + inst = lam / iue_R + x, y = w[i - 6:i + 7], (f - env)[i - 6:i + 7] + try: + p, _ = curve_fit(lambda x, a, m, sg: a * np.exp(-0.5 * ((x - m) / sg) ** 2), x, y, + p0=[y[6], lam, inst / 2.355], sigma=e[i - 6:i + 7], maxfev=2000) + except Exception: + continue + fw = 2.355 * abs(p[2]) + if 0.5 * inst <= fw <= 1.5 * inst and abs(p[1] - lam) < inst: + out.append(dict(lam=float(p[1]), z=float(z[i]), inst=float(inst))) + return out + + +def iue_features(path): + return [x for w, f, e, _ in iue_orders(path) for x in iue_detect(w, f, e)] + + +def iue_aperture(path): + """LARGE or SMALL: the aperture whose spectrum an MXHI file holds.""" + from astropy.io import fits + with fits.open(path) as h: + return str(h[0].header.get("APERTURE", "")).strip().upper() or "?" + + +def iue_forced_z(path, lam): + """Largest excess over the upper envelope in noise units within two pixels of lam; None without coverage.""" + from scipy.ndimage import percentile_filter + best = None + for w, f, e, _ in iue_orders(path): + if w[0] + 1 < lam < w[-1] - 1: + j = int(np.searchsorted(w, lam)) + step = float(np.median(np.diff(w))) + env = percentile_filter(f, 90, size=max(int(5.0 / step) | 1, 61), mode="nearest") + v = float(np.max((f[j - 2:j + 3] - env[j - 2:j + 3]) / e[j - 2:j + 3])) + best = v if best is None else max(best, v) + return best + + +def iue__feat(job): + quiet_warnings() + p = os.path.join(iue_ROOT, "mxhi", job["obs_id"] + ".mxhi.gz") + if not os.path.exists(p): + return job, None + try: + return job, (iue_features(p), iue_aperture(p)) + except Exception: + return job, None + + +def iue_search(): + from concurrent.futures import ProcessPoolExecutor + inv = iue_owned(json.load(open(os.path.join(iue_ROOT, "inventory.json")))) + feats, n_read, apert, rvs = [], 0, {}, {} + with ProcessPoolExecutor(int(os.environ.get("IUE_PROCS", "4"))) as ex: + for job, res in ex.map(iue__feat, inv, chunksize=8): + if res is None: + continue + fs, ap = res + n_read += 1 + apert[(job["star"], job["obs_id"])] = (job["camera"], ap) + rv = float(job["rv"]) if job.get("rv") not in (None, "") else 0.0 + rvs[job["star"]] = rv + for f in fs: + feats.append(dict(f, star=job["star"], camera=job["camera"], aperture=ap, obs_id=job["obs_id"], + rest=f["lam"] / (1 + rv / iue_C_KMS))) + print("%d images of %d objects read; %d narrow peaks at %.0f sigma" % (n_read, len({j["star"] for j in inv}), + len(feats), iue_Z_MIN), flush=True) + # persistence within one camera and aperture, each with its own detector position + by = {} + for f in feats: + by.setdefault((f["star"], f["camera"], f["aperture"]), []).append(f) + pers = [] + for (star, cam, ap), fs in by.items(): + fs.sort(key=lambda f: f["lam"]) + for grp in uv_groups([f["lam"] for f in fs], [f["inst"] / 3 for f in fs]): + imgs = {fs[j]["obs_id"] for j in grp} + if len(imgs) >= iue_N_MIN: + pers.append(dict(star=star, camera=cam, aperture=ap, lam=float(np.mean([fs[j]["lam"] for j in grp])), + rest=float(np.mean([fs[j]["rest"] for j in grp])), n=len(imgs), + of=sum(1 for (s, o), (c, a) in apert.items() if s == star and c == cam and a == ap), + z=max(fs[j]["z"] for j in grp), inst=fs[grp[0]]["inst"])) + print("%d persistent features in %d stars" % (len(pers), len({p["star"] for p in pers})), flush=True) + rest = np.array([f["rest"] for f in feats]) + obsw = np.array([f["lam"] for f in feats]) + star = np.array([f["star"] for f in feats]) + for p in pers: + near_r = np.abs(rest - p["rest"]) / p["rest"] * iue_C_KMS < 15.0 + near_o = np.abs(obsw - p["lam"]) / p["lam"] * iue_C_KMS < 15.0 + p["stars_rest"] = len(set(star[near_r]) - {p["star"]}) + p["stars_obs"] = len(set(star[near_o]) - {p["star"]}) + left = sorted([p for p in pers if p["stars_rest"] < 2 and p["stars_obs"] < 2], key=lambda p: -p["z"]) + # a detector-position feature is absent through the other aperture + for p in left: + other = [o for (s, o), (c, a) in apert.items() if s == p["star"] and c == p["camera"] and a != p["aperture"]] + zs = [z for z in (iue_forced_z(os.path.join(iue_ROOT, "mxhi", o + ".mxhi.gz"), p["lam"]) for o in other) + if z is not None] + p["other_aperture_z"] = [round(z, 1) for z in zs] + p["aperture_fixed"] = bool(zs) and max(zs) < 2.0 + # forced measurements in other stars below detection: rest wavelength, same camera (stellar); observed wavelength, same camera and aperture (detector) + for p in left: + imgs = [(s, os.path.join(iue_ROOT, "mxhi", o + ".mxhi.gz"), a) for (s, o), (c, a) in apert.items() + if s != p["star"] and c == p["camera"]] + p["forced_rest"] = sorted(uv_forced([(s, q) for s, q, _ in imgs], + lambda s: p["rest"] * (1 + rvs.get(s, 0.0) / iue_C_KMS), iue_forced_z)) + p["forced_obs"] = sorted(uv_forced([(s, q) for s, q, a in imgs if a == p["aperture"]], lambda s: p["lam"], + iue_forced_z)) + kept = [p for p in left if not p["aperture_fixed"] and len(p["forced_rest"]) < 2 and len(p["forced_obs"]) < 2] + print("%d persistent features in at most one other star in either frame; %d of them absent from the same star's " + "images through the other aperture; %d above 5 sigma in two or more other stars when measured there; " + "%d left:" % (len(left), sum(p["aperture_fixed"] for p in left), + sum(1 for p in left if not p["aperture_fixed"] and p not in kept), len(kept))) + for p in kept[:60]: + print(" %-20s %s %s %.3f A (rest %.3f), %d of %d images, peak %.1f sigma, other stars %d/%d, other aperture %s" + % (p["star"][:20], p["camera"], p["aperture"], p["lam"], p["rest"], p["n"], p["of"], p["z"], + p["stars_rest"], p["stars_obs"], p["other_aperture_z"] or "none")) + json.dump(dict(images=n_read, peaks=len(feats), persistent=pers), open(os.path.join(iue_HERE, "iue_laser.json"), "w"), + indent=1) + + +def iue_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("inventory", "fetch", "search")) + p.add_argument("--threads", type=int, default=4) + a = p.parse_args() + {"inventory": iue_inventory, "fetch": lambda: iue_fetch(a.threads), "search": iue_search}[a.mode]() + + +def iue_cli(): + quiet_warnings() + iue_main() + + +# -------------------------------------------------------------------------------------------------------------- + +fuse_DOC = r"""Laser lines in FUSE spectra (905-1187 A) of stars within 20 pc: point-source peaks at p 1e-6 recurring in a second channel, away from stellar and airglow lines and other stars' peaks. + + python -I seti.py ultraviolet fuse inventory [--plx 50] + python -I seti.py ultraviolet fuse fetch + python -I seti.py ultraviolet fuse search""" + +fuse_ROOT = os.environ.get("FUSE_ROOT", core.data("fuse")) +fuse_HERE = core.RESULTS +fuse_MAST = "https://mast.stsci.edu/api/v0/invoke" +fuse_DOWNLOAD = "https://mast.stsci.edu/api/v0.1/Download/file?uri=" + + +def fuse_invoke(req): + data = urllib.parse.urlencode({"request": json.dumps(req)}).encode() + for attempt in range(3): + try: + return json.loads(urllib.request.urlopen(urllib.request.Request( + fuse_MAST, data=data, headers=dict(core.UA, **{"Content-Type": "application/x-www-form-urlencoded"})), timeout=240).read()) + except Exception: + time.sleep(5 * (attempt + 1)) + return {"data": []} + + +def fuse_inventory(plx): + os.makedirs(fuse_ROOT, exist_ok=True) + stars = uv_nearby(plx) + every, page = [], 1 + while True: + d = fuse_invoke({"service": "Mast.Caom.Filtered", "format": "json", "pagesize": 5000, "page": page, + "params": {"columns": "obsid,obs_id,t_exptime,target_name,s_ra,s_dec,t_min", + "filters": [{"paramName": "obs_collection", "values": ["FUSE"]}]}}) + rows = d.get("data", []) + every += rows + if len(rows) < 5000: + break + page += 1 + print("%d FUSE observations; %d SIMBAD objects with parallax above %g mas" % (len(every), len(stars), plx), flush=True) + ora = np.array([float(x["s_ra"]) if x.get("s_ra") is not None else np.nan for x in every]) + ode = np.array([float(x["s_dec"]) if x.get("s_dec") is not None else np.nan for x in every]) + tmin = np.array([float(x["t_min"]) if x.get("t_min") is not None else 52500.0 for x in every]) + obs = {} + for s in stars: + dist = uv_track_dist(s, ora, ode, tmin) + for j in np.where(dist < 108.0)[0]: + x = every[j] + o = obs.setdefault(str(x["obsid"]), dict(x, stars=[])) + o["stars"].append(dict(main_id=s["main_id"], plx=s["plx_value"], sp=s["sp_type"], otype=s["otype"], + rv=s["rvz_radvel"], dist=round(float(dist[j]), 2))) + files = [] + ids = list(obs) + for k in range(0, len(ids), 50): + p = fuse_invoke({"service": "Mast.Caom.Products", "format": "json", "pagesize": 20000, + "params": {"obsid": ",".join(ids[k:k + 50])}}) + for x in p.get("data", []): + fn = x["productFilename"] + if fn.endswith("00000all4ttagfcal.fit.gz") or fn.endswith("00000all4histfcal.fit.gz"): + files.append(dict(file=fn, uri=x["dataURI"], size=int(x.get("size") or 0), obsid=str(x.get("obsID")))) + json.dump(dict(obs=obs, files=files), open(os.path.join(fuse_ROOT, "inventory.json"), "w"), indent=1) + names = {s["main_id"] for o in obs.values() for s in o["stars"]} + print("%d FUSE observations of %d objects within %.0f pc; %d combined files, %.0f MB" + % (len(obs), len(names), 1000.0 / plx, len(files), sum(f["size"] for f in files) / 1e6)) + + +def fuse_fetch(): + inv = json.load(open(os.path.join(fuse_ROOT, "inventory.json"))) + d = os.path.join(fuse_ROOT, "all") + os.makedirs(d, exist_ok=True) + + def one(f): + p = os.path.join(d, f["file"]) + if os.path.exists(p): + return 1 + b = core.get(fuse_DOWNLOAD + f["uri"], timeout=300, retries=3, soft=True, pause=5) + if not b: + return 0 + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + with ThreadPoolExecutor(4) as ex: + n = sum(ex.map(one, inv["files"])) + print("%d of %d combined files on disk" % (n, len(inv["files"]))) + + +fuse_C_KMS = 299792.458 +fuse_LSF_SIG = 0.026 # A, point-source line spread function (FWHM about 0.06 A) +fuse_THR = 5.0 +fuse_TOL_KMS = 20.0 # km/s; channel wavelength zero points differ by up to this +fuse_APERTURE_TOL = 15.0 # arcsec; the large square aperture is 30 arcsec across + + +def fuse_owner(o): + """Inventory entry of the star in an observation's aperture, or None.""" + st = {" ".join(s["main_id"].split()): s for s in o.get("stars") or []} + name = uv_owner({k: s["dist"] for k, s in st.items()}, fuse_APERTURE_TOL) + return dict(st[name], main_id=name) if name else None + + +def fuse_on_target(path): + """False for observations that put the star at the reference point, outside every aperture.""" + from astropy.io import fits + return str(fits.getheader(path, 0).get("APERTURE", "")).strip().upper() != "RFPT" + + +def fuse_channels(path): + """{channel: (wave, flux, error)} of a combined file, pixels without an error dropped.""" + from astropy.io import fits + out = {} + with fits.open(path) as h: + for e in h[1:]: + d = e.data + if d is None or len(d) < 500: + continue + w, f, s = (np.asarray(d[c], float) for c in ("WAVE", "FLUX", "ERROR")) + ok = np.isfinite(w) & np.isfinite(f) & np.isfinite(s) & (s > 0) + if ok.sum() > 500: + out[e.name.strip()] = (w[ok], f[ok], s[ok]) + return out + + +def fuse_matched(w, f, s): + """Point-source line amplitude over its error at every pixel, above a 2 A running 90th percentile.""" + from scipy.ndimage import percentile_filter + step = float(np.median(np.diff(w))) + sp = fuse_LSF_SIG / step + x = np.arange(-int(4 * sp), int(4 * sp) + 1) + k = np.exp(-0.5 * (x / sp) ** 2) + r = f - percentile_filter(f, 90, size=int(2.0 / step) | 1, mode="nearest") + iv = 1.0 / s ** 2 + num = np.convolve(r * iv, k[::-1], mode="same") + den = np.convolve(iv, (k ** 2)[::-1], mode="same") + a = num / np.maximum(den, 1e-300) + err = 1.0 / np.sqrt(np.maximum(den, 1e-300)) + return a / err, r, err + + +def fuse_line_limit(w, f, s): + """Median THR-sigma flux of an unresolved line over the channel, erg cm-2 s-1.""" + _, _, err = fuse_matched(w, f, s) + return float(np.median(fuse_THR * err) * np.sqrt(2 * np.pi) * fuse_LSF_SIG) + + +def fuse_channel_peaks(w, f, s, thr): + """[(wavelength, z, fitted sigma A, amplitude)] of point-source peaks above thr.""" + from scipy.optimize import curve_fit + z, r, _ = fuse_matched(w, f, s) + out = [] + step = float(np.median(np.diff(w))) + edge = int(1.0 / step) + cand = np.nonzero(z > thr)[0] + cand = cand[(cand > edge) & (cand < len(w) - edge)] + used = set() + for i in cand: + if i in used: + continue + j = i + int(np.argmax(z[i:i + 12])) + used.update(range(j - 12, j + 13)) + sl = slice(max(j - 20, 0), j + 21) + try: + p, _ = curve_fit(lambda t, a, m, sg, b: a * np.exp(-0.5 * ((t - m) / sg) ** 2) + b, w[sl], r[sl], + p0=(r[j], w[j], fuse_LSF_SIG, 0.0), sigma=s[sl], maxfev=3000) + except Exception: + continue + a, m, sg, b = p + sg = abs(sg) + if a > 0 and abs(m - w[j]) < 0.05 and 0.5 * fuse_LSF_SIG <= sg <= 2.0 * fuse_LSF_SIG: + out.append((float(m), float(z[j]), float(sg), float(a))) + return out + + +def fuse_search(): + inv = json.load(open(os.path.join(fuse_ROOT, "inventory.json"))) + rv = {} + found, limits, n_read = [], {}, 0 + for f in inv["files"]: + p = os.path.join(fuse_ROOT, "all", f["file"]) + own = fuse_owner(inv["obs"].get(f["obsid"]) or {}) + if own is None or not os.path.exists(p) or not fuse_on_target(p): + continue + n_read += 1 + star = own["main_id"] + rv[star] = float(own["rv"]) if own.get("rv") not in (None, "") else 0.0 + ch = fuse_channels(p) + lim = [fuse_line_limit(*v) for v in ch.values()] + if lim: + plx = float(own.get("plx") or "nan") + limits.setdefault(star, []).append(dict(file=f["file"], flux=float(np.median(lim)), plx=plx)) + pk = {c: fuse_channel_peaks(*v, thr=fuse_THR) for c, v in ch.items()} + low = {c: fuse_channel_peaks(*v, thr=3.0) for c, v in ch.items()} + for c, lst in pk.items(): + for lam, z, sg, a in lst: + cover = [d for d, (w, _, _) in ch.items() if d != c and w[0] + 1 < lam < w[-1] - 1] + hits = [d for d in cover if any(abs(l2 - lam) / lam * fuse_C_KMS < fuse_TOL_KMS for l2, _, _, _ in low[d])] + found.append(dict(file=f["file"], star=star, rv=rv.get(star, 0.0), channel=c, lam=lam, z=z, sig=sg, + amp=a, cover=cover, confirmed=hits)) + multi = [x for x in found if x["confirmed"]] + for x in multi: + x["rest"] = x["lam"] / (1 + x["rv"] / fuse_C_KMS) + # stars with a confirmed peak at the same wavelength, stellar and heliocentric frames + for x in multi: + x["stars_rest"] = len({y["star"] for y in multi if y["star"] != x["star"] + and abs(y["rest"] - x["rest"]) / x["rest"] * fuse_C_KMS < fuse_TOL_KMS}) + x["stars_obs"] = len({y["star"] for y in multi if y["star"] != x["star"] + and abs(y["lam"] - x["lam"]) / x["lam"] * fuse_C_KMS < fuse_TOL_KMS}) + left = [x for x in multi if x["stars_rest"] < 2 and x["stars_obs"] < 2] + lam, strong = fuse_nist_strong() + rng = np.random.default_rng(1) + r = rng.uniform(910, 1185, 20000) + k = np.searchsorted(lam, r).clip(1, len(lam) - 1) + chance = float(np.mean(np.minimum(np.abs(lam[k] - r), np.abs(lam[k - 1] - r)) / r * fuse_C_KMS < fuse_TOL_KMS)) + for x in left: + dv = (lam - x["rest"]) / x["rest"] * fuse_C_KMS + j = int(np.argmin(np.abs(dv))) + x["id"] = "%s %.3f (%+.0f km/s)" % (strong[j]["ion"], strong[j]["lam"], dv[j]) if abs(dv[j]) < fuse_TOL_KMS else None + dh = (lam - x["lam"]) / x["lam"] * fuse_C_KMS + j = int(np.argmin(np.abs(dh))) + if x["id"] is None and abs(dh[j]) < fuse_TOL_KMS and strong[j]["ion"] in fuse_AIRGLOW: + x["id"] = "airglow %s %.3f (%+.0f km/s)" % (strong[j]["ion"], strong[j]["lam"], dh[j]) + best = {} + for star, ls in limits.items(): + x = min(ls, key=lambda x: x["flux"]) + d_cm = 1000.0 / x["plx"] * 3.0857e18 if x["plx"] > 0 else float("nan") + best[star] = dict(flux=x["flux"], plx=x["plx"], lum=4 * np.pi * d_cm ** 2 * x["flux"], file=x["file"]) + fl = np.array([b["flux"] for b in best.values()]) + lu = np.array([b["lum"] for b in best.values() if np.isfinite(b["lum"])]) + print("%d objects: median %g-sigma unresolved-line limit %.1e erg cm-2 s-1, isotropic %.1e erg/s (%.1e W)" + % (len(best), fuse_THR, np.median(fl), np.median(lu), np.median(lu) * 1e-7)) + json.dump(dict(files=n_read, objects=len(limits), found=found, left=left, chance=chance, limits=best), + open(os.path.join(fuse_HERE, "fuse_laser.json"), "w"), indent=1) + print("%d observations with a star in the aperture; %d point-source peaks above %g; %d confirmed in a second " + "channel; %d not shared with two or more other stars; a random wavelength lies within %.0f km/s of a strong " + "NIST line with probability %.2f" % (n_read, len(found), fuse_THR, len(multi), len(left), fuse_TOL_KMS, chance)) + seen = set() + for x in sorted(left, key=lambda x: -x["z"]): + key = (x["star"], round(x["rest"], 1)) + if key in seen: + continue + seen.add(key) + print(" %-22s %s %.3f A (rest %.3f), z %.1f, sigma %.3f A, confirmed in %s of %s, other stars %d/%d: %s" + % (x["star"], x["channel"], x["lam"], x["rest"], x["z"], x["sig"], x["confirmed"], x["cover"], + x["stars_rest"], x["stars_obs"], x["id"] or "no line within %.0f km/s" % fuse_TOL_KMS)) + print("%d distinct features have no strong line within %.0f km/s" + % (len({(x["star"], round(x["rest"], 1)) for x in left if not x["id"]}), fuse_TOL_KMS)) + + +fuse_IONS = ("H I", "He I", "He II", "C I", "C II", "C III", "C IV", "N I", "N II", "N III", "N IV", "N V", "O I", "O II", + "O III", "O IV", "O V", "O VI", "Ne V", "Ne VI", "Si II", "Si III", "Si IV", "P II", "P IV", "P V", "S II", + "S III", "S IV", "S V", "S VI", "Ar I", "Ar II", "Fe II", "Fe III", "Fe XVIII", "Fe XIX") +fuse_AIRGLOW = ("H I", "O I", "N I", "N II", "He I") + + +def fuse_nist_strong(): + """NIST's strong FUV lines of chromospheric, transition-region, coronal and airglow ions (intensity listed or A above 1e7 /s, low levels for neutral and singly ionised).""" + lines = [] + for ion in fuse_IONS: + lines += core.nist_lines(ion, 900, 1190, cache_dir=os.path.join(os.path.dirname(fuse_ROOT), "nist")) + + def num(x): + try: + return float(str(x).strip("[]()+x? ")) + except ValueError: + return float("nan") + strong = sorted((ln for ln in lines if (ln["intens"].strip() or num(ln["aki"]) > 1e7) + and (ln["ion"].split()[1] not in ("I", "II") or num(ln["ei"]) < 30000)), key=lambda ln: ln["lam"]) + return np.array([ln["lam"] for ln in strong]), strong + + +def fuse_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("inventory", "fetch", "search")) + p.add_argument("--plx", type=float, default=50.0) + a = p.parse_args() + if a.mode == "inventory": + fuse_inventory(a.plx) + elif a.mode == "fetch": + fuse_fetch() + else: + fuse_search() + + +def fuse_cli(): + quiet_warnings() + fuse_main() + + +# -------------------------------------------------------------------------------------------------------------- + +stis_DOC = r"""Laser lines in post-StarCAT HST/STIS echelle x1d spectra (2004 July on) of stars whose tracks lie within 3 arcsec, through StarCAT's detector and tests. + + python -I seti.py ultraviolet stis inventory + python -I seti.py ultraviolet stis fetch [--threads 4] + python -I seti.py ultraviolet stis search (UV_PROCS processes) + python -I seti.py ultraviolet stis identify (the features left, against NIST's lines)""" + +stis_ROOT = os.environ.get("STIS_X1D_ROOT", core.data("stis_x1d")) +stis_HERE = core.RESULTS +stis_T0 = 53200.0 # 2004 July, after StarCAT's last exposures +stis_TOL = 3.0 # arcsec; the echelle apertures are 0.2 arcsec across +stis_TOL_NAMED = 15.0 # arcsec from the track of the star the target name resolves to +stis_NOT_STARS = ("QSO", "G", "GiG", "GiC", "GiP", "BiC", "Sy1", "Sy2", "Sy*", "AGN", "Bla", "BLL", "LIN", "SBG", "rG", + "PN", "SNR", "HII", "Cl*", "GlC", "OpC", "ISM", "MoC", "Pl", "Pl?", "LSB", "EmG", "H2G", "bCG", "IG") + + +def stis_inventory(): + os.makedirs(stis_ROOT, exist_ok=True) + every, page = [], 1 + while True: + d = hst_pulses_invoke({"service": "Mast.Caom.Filtered", "format": "json", "pagesize": 50000, "page": page, + "params": {"columns": "obsid,obs_id,instrument_name,filters,target_name,s_ra,s_dec,t_min", + "filters": [{"paramName": "obs_collection", "values": ["HST"]}, + {"paramName": "instrument_name", + "values": ["STIS/FUV-MAMA", "STIS/NUV-MAMA"]}, + {"paramName": "filters", "values": list(starcat_RES)}, + {"paramName": "t_min", "values": [{"min": stis_T0, "max": 99999}]}]}}) + rows = d.get("data", []) + every += rows + if len(rows) < 50000: + break + page += 1 + def finite(x): + try: + return math.isfinite(float(x)) + except (TypeError, ValueError): + return False + every = [r for r in every if finite(r.get("s_ra")) and finite(r.get("s_dec"))] + pts = {} + for r in every: + pts.setdefault((round(float(r["s_ra"]), 5), round(float(r["s_dec"]), 5)), []).append(r) + rows = [dict(source_id="%d" % i, ra=k[0], dec=k[1]) for i, k in enumerate(pts)] + keys = list(pts) + m = core.xmatch(rows, "simbad", 30.0) + cands = {} + for x in m: + if (x.get("otype") or "").strip() in stis_NOT_STARS: + continue + cands.setdefault(int(x["source_id"]), []).append(x) + # a resolved target name credits its star within stis_TOL_NAMED, since binary orbits carry stars off their tracks + tnames = sorted({str(r["target_name"]) for r in every if r.get("target_name")}) + ident = {t: re.sub(r"^(HD|HR|HIP|GJ|GL|BD|CD|LHS|LTT|WD)(?=[0-9+-])", r"\1 ", t.replace("-", " "), flags=re.I) + for t in tnames} + named = uv_resolve(sorted(set(ident.values()))) + target_star = {t: named.get(" ".join(v.split())) for t, v in ident.items()} + stars = sorted({s for s in target_star.values() if s}) + info = {} + for j in range(0, len(stars), 50): + q = ("SELECT main_id, ra, dec, pmra, pmdec, plx_value AS plx, sp_type, rvz_radvel AS radvel, otype FROM basic " + "WHERE main_id IN (%s)" % ",".join("'%s'" % s.replace("'", "''") for s in stars[j:j + 50])) + for x in core.simbad(q): + if (x.get("otype") or "").strip() not in stis_NOT_STARS and x.get("ra") is not None: + info[" ".join(str(x["main_id"]).split())] = x + obs = [] + for i, k in enumerate(keys): + best = None + for x in cands.get(i, []) + [info[s] for s in {target_star.get(str(r.get("target_name"))) for r in pts[k]} if s in info]: + nm = " ".join(str(x["main_id"]).split()) in {target_star.get(str(r.get("target_name"))) for r in pts[k]} + for r in pts[k]: + dist = float(uv_track_dist(dict(ra=x["ra"], dec=x["dec"], pmra=x.get("pmra") or 0, pmdec=x.get("pmdec") or 0), + [float(r["s_ra"])], [float(r["s_dec"])], [float(r["t_min"])])[0]) + ok = dist <= (stis_TOL_NAMED if nm else stis_TOL) + if ok and (best is None or (not nm, dist) < (not best[2], best[0])): + best = (dist, x, nm) + if best is None: + continue + x = best[1] + for r in pts[k]: + obs.append(dict(r, star=" ".join(str(x["main_id"]).split()), otype=x.get("otype"), sp=x.get("sp_type"), + rv=x.get("radvel"), plx=x.get("plx"), dist=round(best[0], 2), named=best[2])) + ids = sorted({str(o["obsid"]) for o in obs}) + files = [] + for k in range(0, len(ids), 50): + p = hst_pulses_invoke({"service": "Mast.Caom.Products", "format": "json", "pagesize": 20000, + "params": {"obsid": ",".join(ids[k:k + 50])}}) + for x in p.get("data", []): + if x["productFilename"].endswith("_x1d.fits"): + files.append(dict(file=x["productFilename"], uri=x["dataURI"], size=int(x.get("size") or 0), + obsid=str(x.get("obsID")), parent=str(x.get("parent_obsid")))) + files = list({f["file"]: f for f in files}.values()) + json.dump(dict(obs=obs, files=files), open(os.path.join(stis_ROOT, "inventory.json"), "w"), indent=1) + print("%d STIS echelle observations since 2004 July; %d of %d stars; %d x1d files, %.1f GB" + % (len(every), len(obs), len({o["star"] for o in obs}), len(files), sum(f["size"] for f in files) / 1e9)) + + +def stis_fetch(threads): + inv = json.load(open(os.path.join(stis_ROOT, "inventory.json"))) + d = os.path.join(stis_ROOT, "x1d") + os.makedirs(d, exist_ok=True) + + def one(f): + p = os.path.join(d, f["file"]) + if os.path.exists(p): + return 1 + b = core.get(hst_pulses_DOWNLOAD + f["uri"], timeout=300, retries=3, soft=True, pause=5) + if not b or not b.startswith(b"SIMPLE"): + return 0 + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + with ThreadPoolExecutor(threads) as ex: + n = sum(ex.map(one, inv["files"])) + print("%d of %d x1d files on disk" % (n, len(inv["files"]))) + + +def stis_orders(path): + """[(wavelength, flux, error)] of each echelle order at good pixels, with the exposure's metadata.""" + from astropy.io import fits + out = [] + with fits.open(path) as h: + hd = h[0].header + meta = dict(mode=str(hd.get("OPT_ELEM", "")).strip(), cenwave=hd.get("CENWAVE"), file=os.path.basename(path), + rootname=str(hd.get("ROOTNAME", "")).strip().lower(), target=str(hd.get("TARGNAME", "")).strip()) + for e in h[1:]: + if e.name != "SCI" or e.data is None: + continue + meta["mjd"] = e.header.get("EXPSTART", meta.get("mjd")) + for row in e.data: + w, f, s, dq = (np.asarray(row[c], float) for c in ("WAVELENGTH", "FLUX", "ERROR", "DQ")) + good = (s > 0) & np.isfinite(f) & ((dq.astype(int) & (4 | 8 | 16 | 32 | 64 | 128 | 256)) == 0) + if good.sum() > 200: + out.append((w[good], f[good], s[good])) + return out, meta + + +def stis__feat(job): + quiet_warnings() + path, star = job + try: + od, meta = stis_orders(path) + except Exception: + return None + if meta["mode"] not in starcat_RES: + return None + return dict(meta, star=star, feats=[x for w, f, e in od for x in starcat_detect(w, f, e, meta["mode"])]) + + +def stis_forced(job): + """(star, [(z at each rest wavelength, z at each observed wavelength in the same grating and central wavelength)]) for one exposure.""" + quiet_warnings() + path, star, rv, feats = job + try: + od, meta = stis_orders(path) + except Exception: + return None + out = [] + for p in feats: + zr = zo = None + for w, f, e in od: + a = starcat_forced_z(w, f, e, p["rest"] * (1 + rv / starcat_C_KMS)) + zr = a if zr is None or (a is not None and a > zr) else zr + if meta["mode"] == p["mode"] and meta["cenwave"] in p["cenwaves"]: + b = starcat_forced_z(w, f, e, p["lam"]) + zo = b if zo is None or (b is not None and b > zo) else zo + out.append((zr, zo)) + return star, out + + +def stis_search(): + from concurrent.futures import ProcessPoolExecutor + inv = json.load(open(os.path.join(stis_ROOT, "inventory.json"))) + star_of = {str(o["obsid"]): o for o in inv["obs"]} + jobs = [] + for f in inv["files"]: + o = star_of.get(f["parent"]) or star_of.get(f["obsid"]) + p = os.path.join(stis_ROOT, "x1d", f["file"]) + if o and os.path.exists(p): + jobs.append((p, o["star"])) + rv = {o["star"]: float(o["rv"]) if o.get("rv") not in (None, "") else 0.0 for o in inv["obs"]} + procs = int(os.environ.get("UV_PROCS", "2")) + with ProcessPoolExecutor(procs) as ex: + res = [r for r in ex.map(stis__feat, jobs, chunksize=4) if r] + print("%d exposures of %d stars; %d narrow peaks at %d sigma or more" % ( + len(res), len({r["star"] for r in res}), sum(len(r["feats"]) for r in res), starcat_Z_MIN), flush=True) + by = {} + for r in res: + by.setdefault((r["star"], r["mode"]), []).append(r) + pers = [] + for (star, mode), rs in by.items(): + if len({r["rootname"] for r in rs}) < 2: + continue + allf = sorted(((x, r["rootname"], r["cenwave"]) for r in rs for x in r["feats"]), key=lambda t: t[0]["lam"]) + for grp in uv_groups([x["lam"] for x, _, _ in allf], [x["inst"] / 3 for x, _, _ in allf]): + files = {allf[j][1] for j in grp} + if len(files) >= 2: + xs = [allf[j][0] for j in grp] + lam = float(np.mean([y["lam"] for y in xs])) + pers.append(dict(star=star, mode=mode, lam=lam, rest=lam / (1 + rv.get(star, 0.0) / starcat_C_KMS), + n=len(files), of=len({r["rootname"] for r in rs}), z=float(max(y["z"] for y in xs)), + inst=xs[0]["inst"], cenwaves=sorted({allf[j][2] for j in grp}))) + print("%d persistent features (two or more exposures in one grating) in %d stars" + % (len(pers), len({p["star"] for p in pers})), flush=True) + pk = [(x["lam"], r["star"]) for r in res for x in r["feats"]] + obsw = np.array([lam for lam, _ in pk]) + rest = np.array([lam / (1 + rv.get(s, 0.0) / starcat_C_KMS) for lam, s in pk]) + who = np.array([s for _, s in pk]) + for p in pers: + p["stars_rest"] = len(set(who[np.abs(rest - p["rest"]) / p["rest"] * starcat_C_KMS < 15.0]) - {p["star"]}) + p["stars_obs"] = len(set(who[np.abs(obsw - p["lam"]) / p["lam"] * starcat_C_KMS < 15.0]) - {p["star"]}) + left = [p for p in pers if p["stars_rest"] < 2 and p["stars_obs"] < 2] + hits_r, hits_o = [set() for _ in left], [set() for _ in left] + with ProcessPoolExecutor(procs) as ex: + for out in ex.map(stis_forced, [(p, s, rv.get(s, 0.0), left) for p, s in jobs], chunksize=4): + if not out: + continue + s, zs = out + for k, (zr, zo) in enumerate(zs): + if s != left[k]["star"]: + if zr is not None and zr > 5.0: + hits_r[k].add(s) + if zo is not None and zo > 5.0: + hits_o[k].add(s) + for k, p in enumerate(left): + p["forced_rest"], p["forced_obs"] = sorted(hits_r[k]), sorted(hits_o[k]) + unique = sorted([p for p in left if len(p["forced_rest"]) < 2 and len(p["forced_obs"]) < 2], key=lambda p: -p["z"]) + print("%d persistent features in at most one other star in either frame; %d of them above 5 sigma in two or more " + "other stars when measured there; %d left:" % (len(left), len(left) - len(unique), len(unique))) + for p in unique[:60]: + print(" %-24s %s %.3f A (rest %.3f), in %d of %d exposures, peak %.1f sigma, other stars %d/%d" + % (p["star"][:24], p["mode"], p["lam"], p["rest"], p["n"], p["of"], p["z"], p["stars_rest"], p["stars_obs"])) + json.dump(dict(exposures=len(res), objects=len({r["star"] for r in res}), peaks=sum(len(r["feats"]) for r in res), + persistent=pers), open(os.path.join(stis_HERE, "stis_laser.json"), "w"), indent=1) + + +def stis_identify(): + """Surviving STIS features against NIST lines by cos identify's rule, with the chance a random wavelength lies as close.""" + lines = [] + for ion in cos_IONS: + lines += core.nist_lines(ion, 1140, 3150, cache_dir=os.path.join(os.path.dirname(stis_ROOT), "nist")) + + def num(x): + try: + return float(str(x).strip("[]()+x? ")) + except ValueError: + return float("nan") + strong = sorted((ln for ln in lines if (ln["intens"].strip() or num(ln["aki"]) > 1e7) + and (ln["ion"].split()[1] not in ("I", "II") or num(ln["ei"]) < 30000)), key=lambda ln: ln["lam"]) + lam = np.array([ln["lam"] for ln in strong]) + path = os.path.join(stis_HERE, "stis_laser.json") + d = json.load(open(path)) + left = [p for p in d["persistent"] if "forced_rest" in p and len(p["forced_rest"]) < 2 and len(p["forced_obs"]) < 2] + r = np.random.default_rng(1).uniform(1150, 3100, 20000) + k = np.searchsorted(lam, r).clip(1, len(lam) - 1) + near = np.minimum(np.abs(lam[k] - r), np.abs(lam[k - 1] - r)) / r * cos_C_KMS + print("%d NIST lines, %d strong or low-excitation; a random wavelength lies within 15 km/s of one with probability " + "%.2f (FUV %.2f, NUV %.2f)" % (len(lines), len(strong), np.mean(near < 15), np.mean(near[r < 1700] < 15), + np.mean(near[r >= 1700] < 15))) + unid = [] + for p in sorted(left, key=lambda p: -p["z"]): + dv = (lam - p["rest"]) / p["rest"] * cos_C_KMS + j = int(np.argmin(np.abs(dv))) + p["id"] = "%s %.3f (%+.0f km/s)" % (strong[j]["ion"], strong[j]["lam"], dv[j]) if abs(dv[j]) < 15 else None + if not p["id"]: + unid.append(p) + by = {} + for p in left: + by.setdefault(p["star"], [0, 0])[0 if p["id"] else 1] += 1 + print("%d features left in %d stars; %d without a line within 15 km/s" % (len(left), len(by), len(unid))) + for s, (a, b) in sorted(by.items(), key=lambda kv: -sum(kv[1])): + print(" %-24s identified %d, unidentified %d" % (s[:24], a, b)) + for p in unid[:40]: + print(" unidentified %-20s %s rest %.3f, in %d of %d exposures, %.1f sigma" + % (p["star"][:20], p["mode"], p["rest"], p["n"], p["of"], p["z"])) + json.dump(dict(d, identified=left), open(path, "w"), indent=1) + + +def stis_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("inventory", "fetch", "search", "identify")) + p.add_argument("--threads", type=int, default=4) + a = p.parse_args() + if a.mode == "inventory": + stis_inventory() + elif a.mode == "fetch": + stis_fetch(a.threads) + elif a.mode == "identify": + stis_identify() + else: + stis_search() + + +def stis_cli(): + quiet_warnings() + stis_main() + + +# -------------------------------------------------------------------------------------------------------------- + +limits_DOC = r"""Sensitivity of the ultraviolet laser searches: nominal unresolved-line thresholds per exposure and injection recovery, a star's limit m90 times its second-best exposure. + + python -I seti.py ultraviolet limits starcat|iue|fuse|stis [--n 300] [--procs 4] + python -I seti.py ultraviolet limits cos [--n 300] [--procs 4] (where the COS spectra are, STIS_ROOT) + python -I seti.py ultraviolet limits table (per-star limits, distances and powers) + python -I seti.py ultraviolet limits record (the four searches and their limits, coverage store)""" + +limits_HERE = core.RESULTS +limits_MULT = (1.0, 1.5, 2.0, 3.0, 5.0, 8.0) +limits_PER = 6 # lines injected per exposure and multiple, 6 instrumental widths apart +limits_ROOT2PI = math.sqrt(2 * math.pi) + + +def limits_m_at(frac, mult, rec): + """Multiple recovered with probability frac, interpolated in the recovery curve.""" + rec = np.maximum.accumulate(np.asarray(rec, float)) + if rec[-1] < frac: + return float("inf") + return float(np.interp(frac, rec, mult)) if rec[0] < frac else float(mult[0]) + + +def limits_masked(lam, masks, widths): + return any(abs(lam - a) < w for a, w in zip(masks, widths)) + + +# ------------------------------------------------------------------------------------------------------- StarCAT + +def limits_starcat_one(args): + path, seed = args + x = starcat_load(path) + if x is None or len(x[0]) < 1000: + return None + w, f, e, meta = x + R = starcat_RES[meta["mode"]] + sig = w / R / 2.3548 + nom = starcat_Z_MIN * e * limits_ROOT2PI * sig + free = np.array([not limits_masked(lam, starcat_AIRGLOW + starcat_CHROMOSPHERIC, + [0.6] * len(starcat_AIRGLOW) + [1.2] * len(starcat_CHROMOSPHERIC)) for lam in w]) + out = dict(file=meta["file"], obj=meta["obj"], mode=meta["mode"], nominal=float(np.median(nom[free])), + lam_med=float(np.median(w)), ra=meta["ra"], dec=meta["dec"]) + if seed is None: + return out + rng = np.random.default_rng(seed) + lo, hi = w[0] + 10, w[-1] - 10 + rec = [] + for m in limits_MULT: + inj = np.zeros_like(f) + lams = [] + for _ in range(limits_PER * 20): + l0 = rng.uniform(lo, hi) + j = int(np.searchsorted(w, l0)) + if j <= 0 or j >= len(w) or not free[j] or any(abs(l0 - q) < 6 * l0 / R for q in lams): + continue + lams.append(l0) + inj += m * nom[j] / (limits_ROOT2PI * sig[j]) * np.exp(-0.5 * ((w - l0) / sig[j]) ** 2) + if len(lams) == limits_PER: + break + found = starcat_detect(w, f + inj, e, meta["mode"]) + rec.append(sum(1 for l0 in lams if any(abs(q["lam"] - l0) < 0.5 * l0 / R for q in found)) / max(len(lams), 1)) + out["rec"] = rec + return out + + +def limits_stis_one(args): + """Nominal threshold and recovery of one post-2004 STIS exposure, one line per echelle order and multiple.""" + path, seed, star = args + try: + od, meta = stis_orders(path) + except Exception: + return None + if meta["mode"] not in starcat_RES or not od: + return None + R = starcat_RES[meta["mode"]] + noms, lams = [], [] + rng = np.random.default_rng(seed) if seed is not None else None + hits, tries = np.zeros(len(limits_MULT)), np.zeros(len(limits_MULT)) + masks = starcat_AIRGLOW + starcat_CHROMOSPHERIC + widths = [0.6] * len(starcat_AIRGLOW) + [1.2] * len(starcat_CHROMOSPHERIC) + for w, f, e in od: + sig = w / R / 2.3548 + nom = starcat_Z_MIN * e * limits_ROOT2PI * sig + free = np.array([not limits_masked(lam, masks, widths) for lam in w]) + noms += list(nom[free]) + lams += list(w[free]) + if rng is None or len(w) < 200: + continue + edge = min(3.0, 0.25 * (w[-1] - w[0])) # an E140H order spans about 4 A + if edge <= 0: + continue + for k, m in enumerate(limits_MULT): + l0 = rng.uniform(w[0] + edge, w[-1] - edge) + j = int(np.searchsorted(w, l0)) + if j <= 0 or j >= len(w) or not free[j]: + continue + inj = m * nom[j] / (limits_ROOT2PI * sig[j]) * np.exp(-0.5 * ((w - l0) / sig[j]) ** 2) + found = starcat_detect(w, f + inj, e, meta["mode"]) + tries[k] += 1 + hits[k] += any(abs(q["lam"] - l0) < 0.5 * l0 / R for q in found) + if not noms: + return None + out = dict(file=meta["file"], star=star, mode=meta["mode"], nominal=float(np.median(noms)), + lam_med=float(np.median(lams))) + if rng is not None: + out["rec"] = (hits / np.maximum(tries, 1)).tolist() + return out + + +# ------------------------------------------------------------------------------------------------------------ IUE + +def limits_iue_one(args): + path, seed = args + try: + od = iue_orders(path) + except Exception: + return None + if not od: + return None + R = iue_R + noms, lam_all = [], [] + rng = np.random.default_rng(seed) if seed is not None else None + hits = np.zeros(len(limits_MULT)) + tries = np.zeros(len(limits_MULT)) + for w, f, e, cal in od: + okc = np.isfinite(cal) & (np.abs(f) > 5 * e) + if okc.sum() < 10: + continue + conv = np.interp(w, w[okc], (cal / f)[okc]) # erg/cm2/s/A per flux number + sig = w / R / 2.3548 + nom = iue_Z_MIN * e * np.abs(conv) * limits_ROOT2PI * sig + free = np.array([not limits_masked(lam, starcat_AIRGLOW + starcat_CHROMOSPHERIC, + [0.6] * len(starcat_AIRGLOW) + [1.2] * len(starcat_CHROMOSPHERIC)) for lam in w]) + noms += list(nom[free]) + lam_all += list(w[free]) + if rng is None or len(w) < 200: + continue + for k, m in enumerate(limits_MULT): + l0 = rng.uniform(w[0] + 2, w[-1] - 2) + j = int(np.searchsorted(w, l0)) + if j <= 0 or j >= len(w) or not free[j]: + continue + amp = m * iue_Z_MIN * e[j] # peak in flux numbers + found = iue_detect(w, f + amp * np.exp(-0.5 * ((w - l0) / sig[j]) ** 2), e) + tries[k] += 1 + hits[k] += any(abs(q["lam"] - l0) < 0.5 * l0 / R for q in found) + if not noms: + return None + out = dict(file=os.path.basename(path), nominal=float(np.median(noms)), lam_med=float(np.median(lam_all))) + if rng is not None: + out["rec"] = (hits / np.maximum(tries, 1)).tolist() + out["tries"] = tries.tolist() + return out + + +# ----------------------------------------------------------------------------------------------------------- FUSE + +def limits_fuse_threshold(ch, errs, l0): + """Unresolved-line flux at l0 reaching THR in the most sensitive channel and 3 sigma in the next; None under two channels.""" + cover = [c for c, (w, _, _) in ch.items() if w[0] + 1 < l0 < w[-1] - 1] + if len(cover) < 2: + return None, cover + e = sorted(float(errs[c][min(int(np.searchsorted(ch[c][0], l0)), len(ch[c][0]) - 1)]) for c in cover) + return max(fuse_THR * e[0], 3.0 * e[1]) * limits_ROOT2PI * fuse_LSF_SIG, cover + + +def limits_fuse_one(args): + path, seed = args + if not fuse_on_target(path): + return None + ch = fuse_channels(path) + if not ch: + return None + errs = {c: fuse_matched(*v)[2] for c, v in ch.items()} + grid = np.arange(910.0, 1187.0, 0.5) + noms = [x for x in (limits_fuse_threshold(ch, errs, lam)[0] for lam in grid) if x is not None and np.isfinite(x)] + if not noms: + return None + out = dict(file=os.path.basename(path), nominal=float(np.median(noms)), lam_med=1040.0) + if seed is None: + return out + rng = np.random.default_rng(seed) + rec = [] + for m in limits_MULT: + hit = n = 0 + for _ in range(limits_PER): + c0 = list(ch)[rng.integers(len(ch))] + w0 = ch[c0][0] + l0 = rng.uniform(w0[0] + 2, w0[-1] - 2) + F, cover = limits_fuse_threshold(ch, errs, l0) + if F is None or not np.isfinite(F): + continue + F = m * F + det5, det3 = [], [] + for c in cover: + w, f, s = ch[c] + g = F / (limits_ROOT2PI * fuse_LSF_SIG) * np.exp(-0.5 * ((w - l0) / fuse_LSF_SIG) ** 2) + if any(abs(x[0] - l0) / l0 * fuse_C_KMS < fuse_TOL_KMS for x in fuse_channel_peaks(w, f + g, s, thr=fuse_THR)): + det5.append(c) + if any(abs(x[0] - l0) / l0 * fuse_C_KMS < fuse_TOL_KMS for x in fuse_channel_peaks(w, f + g, s, thr=3.0)): + det3.append(c) + n += 1 + hit += any(any(d != c for d in det3) for c in det5) + rec.append(hit / max(n, 1)) + out["rec"] = rec + return out + + +# ------------------------------------------------------------------------------------------------------------ COS + +def limits_cos_one(args): + r, seed, sens = args + from scipy.stats import poisson + lam = np.array(r["lam"]) + on, bk = np.array(r["on"]), np.array(r["bk"]) + if len(lam) < 200 or r["exptime"] <= 0: + return None + from scipy.ndimage import percentile_filter + s3 = np.convolve(on, np.ones(3), "same") + b3 = np.convolve(bk, np.ones(3), "same") + step = abs(float(np.median(np.diff(lam)))) + env = percentile_filter(s3, 90, size=max(int(1.0 / step) * 2 + 1, 31), mode="nearest") + mu = np.maximum(env, b3 + 0.5) + # 3-bin counts for p < P_MAX, scaled by the 72 per cent of the line in 6 pixels + thr = poisson.isf(cos_P_MAX, mu) + 1 + sig_px = cos_LSF_PX / 2.3548 + frac = math.erf(3.0 / (sig_px * math.sqrt(2))) + nline = np.maximum(thr - mu, 1.0) / frac + key = "%s/%s" % (r["grating"], r["cenwave"]) + s = sens.get(key) + if s is None: + return None + S = np.interp(lam, s["lam"], s["sens"], left=np.nan, right=np.nan) # counts/s/pixel per erg/cm2/s/A + k = r["disp"] / (r["exptime"] * S) # erg/cm2/s per count + free = np.array([not (any(abs(x - a) < w for a, w in cos_AIRGLOW) or any(abs(x - a) < 1.2 + for a in cos_STRONG)) + for x in lam]) & np.isfinite(k) + if free.sum() < 100: + return None + nom = nline * k + out = dict(file=r["file"], star=r["star"], grating=r["grating"], fppos=r["fppos"], nominal=float(np.median(nom[free])), + lam_med=float(np.median(lam[free]))) + if seed is None: + return out + rng = np.random.default_rng(seed) + rec = [] + px = np.arange(len(lam)) * cos_BIN_PX + for m in limits_MULT: + hit = n = 0 + for _ in range(limits_PER): + j = int(rng.integers(20, len(lam) - 20)) + if not free[j]: + continue + prof = np.exp(-0.5 * ((px - px[j]) / sig_px) ** 2) + prof = prof / prof.sum() + add = rng.poisson(m * nline[j] * prof) + rr = dict(r, on=(on + add).tolist()) + found = cos_peaks(rr, 0, cos_P_MAX) + n += 1 + hit += any(abs(q["lam"] - lam[j]) < 3 * r["disp"] * cos_BIN_PX for q in found) + rec.append(hit / max(n, 1)) + out["rec"] = rec + return out + + +def limits_cos_sensitivity(): + """NET/FLUX per pixel against wavelength per grating and central wavelength, from one x1d each.""" + import urllib.request + from astropy.io import fits + root = os.environ.get("STIS_ROOT", core.data("stis_tag")) + rs = cos_owned(json.load(open(os.path.join(root, "cos_spectra.json")))) + path = os.path.join(root, "cos_sens.json") + if os.path.exists(path): + return json.load(open(path)), rs + pick = {} + for r in rs: + pick.setdefault("%s/%s" % (r["grating"], r["cenwave"]), r["file"][:9]) + os.makedirs(os.path.join(root, "x1d"), exist_ok=True) + sens = {} + for key, rootname in pick.items(): + p = os.path.join(root, "x1d", rootname + "_x1d.fits") + if not os.path.exists(p): + u = "https://mast.stsci.edu/api/v0.1/Download/file?uri=mast:HST/product/%s_x1d.fits" % rootname + try: + b = urllib.request.urlopen(urllib.request.Request(u, headers=core.UA), + timeout=300).read() + except Exception: + continue + if not b.startswith(b"SIMPLE"): + continue + open(p, "wb").write(b) + lam, sv = [], [] + with fits.open(p) as h: + for row in h[1].data: + w, fl, rate = (np.asarray(row[c], float) for c in ("WAVELENGTH", "FLUX", "NET")) + ok = (fl > 0) & (rate > 0) & np.isfinite(fl) & np.isfinite(rate) + lam += list(w[ok]) + sv += list((rate / fl)[ok]) + if lam: + o = np.argsort(lam) + lam, sv = np.array(lam)[o], np.array(sv)[o] + # 51-pixel running median of the smooth ratio + from scipy.ndimage import median_filter + sens[key] = dict(lam=lam[::10].tolist(), sens=median_filter(sv, 51)[::10].tolist()) + json.dump(sens, open(path, "w")) + return sens, rs + + +# ---------------------------------------------------------------------------------------------------------- driver + +def limits_run(which, n, procs): + from concurrent.futures import ProcessPoolExecutor + rng = np.random.default_rng(7) + if which == "starcat": + paths = sorted(os.path.join(dp, f) for dp, _, fs in os.walk(os.path.join(starcat_ROOT, "fits")) + for f in fs if f.endswith("_spc.fits")) + fn, items = limits_starcat_one, paths + elif which == "iue": + items = sorted(os.path.join(iue_ROOT, "mxhi", f) for f in os.listdir(os.path.join(iue_ROOT, "mxhi")) + if f.endswith(".gz")) + fn = limits_iue_one + elif which == "fuse": + items = sorted(os.path.join(fuse_ROOT, "all", f) for f in os.listdir(os.path.join(fuse_ROOT, "all"))) + fn = limits_fuse_one + elif which == "stis": + inv = json.load(open(os.path.join(stis_ROOT, "inventory.json"))) + star_of = {str(o["obsid"]): o["star"] for o in inv["obs"]} + items = sorted((os.path.join(stis_ROOT, "x1d", f["file"]), star_of.get(f["parent"]) or star_of.get(f["obsid"])) + for f in inv["files"] if os.path.exists(os.path.join(stis_ROOT, "x1d", f["file"]))) + fn = limits_stis_one + else: + sens, rs = limits_cos_sensitivity() + items = rs + fn = limits_cos_one + inj = set(rng.choice(len(items), size=min(n, len(items)), replace=False).tolist()) + args = [(it, (int(rng.integers(1 << 30)) if i in inj else None)) for i, it in enumerate(items)] + if which == "cos": + args = [(it, s, sens) for it, s in args] + elif which == "stis": + args = [(it[0], s, it[1]) for it, s in args] + with ProcessPoolExecutor(procs) as ex: + res = [r for r in ex.map(fn, args, chunksize=4) if r] + recs = np.array([r["rec"] for r in res if "rec" in r]) + curve = recs.mean(axis=0).tolist() if len(recs) else [] + # plateau: findable fraction of the band; the limit is 90 per cent of it + plateau = float(max(curve)) if curve else None + out = dict(set=which, mult=list(limits_MULT), recovery=curve, n_injected=int(len(recs)), plateau=plateau, + m50=limits_m_at(0.5 * plateau, limits_MULT, curve) if curve else None, + m90=limits_m_at(0.9 * plateau, limits_MULT, curve) if curve else None, exposures=res) + json.dump(out, open(os.path.join(limits_HERE, "uv_limits_%s.json" % which), "w")) + print("%s: %d exposures, median nominal limit %.2e erg cm-2 s-1; recovery at %s times nominal: %s; plateau %.2f; " + "half and 90 per cent of it at %.2f and %.2f times nominal" + % (which, len(res), np.median([r["nominal"] for r in res]), "/".join("%g" % m for m in limits_MULT), + " ".join("%.2f" % x for x in curve), plateau or float("nan"), out["m50"] or float("nan"), + out["m90"] or float("nan"))) + + +limits_PC_M = 3.0857e16 +limits_D_TX = 10.0 # transmitter aperture, m + + +def limits_star_of_file(): + """{file: SIMBAD main_id} for IUE images and FUSE observations with a star in the aperture.""" + out = {} + for o in iue_owned(json.load(open(os.path.join(iue_ROOT, "inventory.json")))): + out[o["obs_id"].lower() + ".mxhi.gz"] = o["star"] + fi = json.load(open(os.path.join(fuse_ROOT, "inventory.json"))) + for f in fi["files"]: + own = fuse_owner(fi["obs"].get(f["obsid"]) or {}) + if own: + out[f["file"]] = own["main_id"] + return out + + +def limits_table(): + """Per-star limits: m90 times the second most sensitive exposure's nominal limit (best observation for FUSE), with distance, isotropic luminosity and 10 m diffraction-limited transmitter power.""" + sets = {w: json.load(open(os.path.join(limits_HERE, "uv_limits_%s.json" % w))) + for w in ("starcat", "iue", "cos", "fuse", "stis") + if os.path.exists(os.path.join(limits_HERE, "uv_limits_%s.json" % w))} + fmap = limits_star_of_file() + plx, sp = {}, {} + if "starcat" in sets: + objs = {e["obj"]: (float(e["ra"]), float(e["dec"])) for e in sets["starcat"]["exposures"] if e.get("ra") is not None} + for k, v in starcat_resolve(objs).items(): + plx[k] = v["plx"] + sp[k] = "%s; %s" % (v["main_id"], v["sp"]) + names = set() + for w in ("iue", "cos", "fuse", "stis"): + for e in sets.get(w, {}).get("exposures", []): + n = e.get("star") or fmap.get(e["file"]) + if n: + names.add(n) + names = sorted(names) + for k in range(0, len(names), 50): + q = ("SELECT i.id, b.plx_value, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" + % ",".join("'%s'" % n.replace("'", "''") for n in names[k:k + 50])) + for r in core.simbad(q): + n = " ".join(str(r["id"]).split()) + plx[n] = float(r["plx_value"]) if r.get("plx_value") not in (None, "") else None + sp[n] = r.get("sp_type") or "" + rows = [] + for which, s in sets.items(): + m90 = s["m90"] + by = {} + for e in s["exposures"]: + star = e.get("obj") if which == "starcat" else e.get("star") or fmap.get(e["file"]) + if not star: + continue + setting = e.get("mode") or e.get("grating") or e["file"][:3] + by.setdefault((star, setting), []).append(e) + best = {} + for (star, setting), es in by.items(): + v = sorted(x["nominal"] for x in es) + lim = v[0] if which == "fuse" else (v[1] if len(v) >= 2 else None) + if lim is None: + continue + lam = float(np.median([x["lam_med"] for x in es])) + if star not in best or lim < best[star][0]: + best[star] = (lim, setting, lam, len(es)) + for star, (lim, setting, lam, n) in best.items(): + F = lim * m90 # erg cm-2 s-1 + p = plx.get(star) + d = 1000.0 / p * limits_PC_M if p and p > 0 else None + L = 4 * math.pi * d ** 2 * F * 1e-3 if d else None # W (erg cm-2 s-1 = 1e-3 W m-2) + P = F * 1e-3 * d ** 2 * (lam * 1e-10 / limits_D_TX) ** 2 if d else None + rows.append(dict(set=which, star=star, setting=setting, n=n, lam=lam, flux=F, plx=p, + sp=sp.get(star, ""), L_iso_W=L, P_10m_W=P)) + json.dump(dict(m90={w: s["m90"] for w, s in sets.items()}, rows=rows), + open(os.path.join(limits_HERE, "uv_limits_table.json"), "w"), indent=1) + for which in sets: + rs = [r for r in rows if r["set"] == which] + near = [r for r in rs if r["plx"] and r["plx"] > 100] + print("%s: m90 %.2f; %d stars with two exposures, median %.1e erg cm-2 s-1; %d within 10 pc, median %.1e W " + "isotropic, %.1e W through 10 m" % (which, sets[which]["m90"], len(rs), np.median([r["flux"] for r in rs]), + len(near), np.median([r["L_iso_W"] for r in near]) if near else np.nan, + np.median([r["P_10m_W"] for r in near]) if near else np.nan)) + + +def limits_left(which, d): + """Candidates a search's result file leaves after every test.""" + if which in ("starcat", "stis"): + return [p for p in d["persistent"] if "forced_rest" in p and len(p["forced_rest"]) < 2 + and len(p["forced_obs"]) < 2] + if which == "iue": + return [p for p in d["persistent"] if "aperture_fixed" in p and not p["aperture_fixed"] + and len(p["forced_rest"]) < 2 and len(p["forced_obs"]) < 2] + if which == "cos": + return [p for p in d["persistent"] if cos_left(p)] + return d["left"] + + +limits_SEARCHES = ( + ("uv_laser_starcat", "starcat", "uv_laser.json", "Ultraviolet stellar spectra, STIS", "MAST HLSP StarCAT", + "single exposures (Ayres 2010)", "every StarCAT exposure in E140M, E140H, E230M and E230H"), + ("cos_laser_lines", "cos", "cos_laser.json", "Ultraviolet stellar spectra, COS", "MAST HST COS FUV corrtag", + "CalCOS photon events", "COS FUV exposures with a SIMBAD star within 10 pc in the aperture"), + ("iue_laser_lines", "iue", "iue_laser_6sig.json", "Ultraviolet stellar spectra, IUE", "MAST IUE NEWSIPS MXHI", + "high dispersion", "images whose target is a SIMBAD star within 10 pc, by name or by its proper-motion track"), + ("fuse_laser_lines", "fuse", "fuse_laser.json", "Ultraviolet stellar spectra, FUSE", + "MAST FUSE CalFUSE combined channel spectra", "all4ttagfcal and all4histfcal", + "observations with a SIMBAD star within 20 pc in the aperture, reference-point pointings left out"), + ("uv_laser_stis", "stis", "stis_laser.json", "Ultraviolet stellar spectra, STIS after 2004", "MAST HST STIS x1d", + "pipeline x1d, 2004 July on", "E140M, E140H, E230M and E230H exposures within 3 arcsec of a SIMBAD star's " + "proper-motion track")) + + +limits_VETTED = { + "starcat": "steady features of Arcturus, in every exposure covering them from 1998 to 2003, emission of the Mira R " + "Leo (the strongest within 4 km/s of Fe II 2626.27) and C III] 1908.73 of the symbiotic EG And", + "cos": "chromospheric lines of eps Eri within 2 km/s of Cr II 1330.93, C I 1468.41 and Si I 1769.79, steady from " + "2015 to 2025", + "iue": "the last were fixed to one aperture's camera position or lay 440 km/s redward of Si II 1808 and 1817 A in " + "the brightest G and K dwarfs, absent from STIS", + "fuse": "of 9 single-channel peaks 4 lie on Ly beta, C III and O VI and 5 reach 5.0-5.5 sigma with nothing in the " + "overlapping channel", + "stis": "all lie in twelve stars whose ultraviolet spectra are crowded with natural lines: cool supergiants and giants " + "(alpha Ori, alpha Her, gamma Cru, beta Gem), T Tauri stars (TW Hya, RU Lup), eta Car, the Ap star GY And, " + "beta Pic, two stars catalogued as [KT2007] 1181 and 1184, and Procyon, whose features are resolved peaks " + "of its spectrum steady in every exposure"} + + +def limits_record(): + """Record each search's row and per-star limits.""" + t = json.load(open(os.path.join(limits_HERE, "uv_limits_table.json"))) + for sid, which, fn, approach, archive, release, selection in limits_SEARCHES: + d = json.load(open(os.path.join(limits_HERE, fn))) + s = json.load(open(os.path.join(limits_HERE, "uv_limits_%s.json" % which))) + rows = [r for r in t["rows"] if r["set"] == which] + near = [r for r in rows if r["plx"] and r["plx"] > 100] + left = limits_left(which, d) + if which == "fuse": + null = "%d single-channel peaks, %d confirmed in a second channel" % ( + len(d["found"]), sum(1 for x in d["found"] if x["confirmed"])) + else: + null = "%d peaks, %d persistent, %d left after the cross-star, aperture and forced tests" % ( + d["peaks"], len(d["persistent"]), len(left)) + core.record_search( + sid, approach, archive=archive, release=release, selection=selection, code=os.path.abspath(__file__), + entry=which, n_targets=len(rows), null_summary=null, ledger="Ultraviolet stellar spectra", + params=dict(plateau=s["plateau"], m50=s["m50"], m90=s["m90"], injected=s["n_injected"]), + sensitivity="median per-star limit %.1e erg cm-2 s-1; %d stars within 10 pc, median %.1e W isotropic and " + "%.1e W through a 10 m aperture" % (np.median([r["flux"] for r in rows]), len(near), + np.median([r["L_iso_W"] for r in near]) if near else np.nan, + np.median([r["P_10m_W"] for r in near]) if near else np.nan), + result="%d features pass every test; %s" % (len(left), limits_VETTED[which])) + core.clear_targets(sid) + core.record_targets(sid, [ + dict(target="simbad:%s" % (r["sp"].split(";")[0] if which == "starcat" and r.get("sp") else r["star"]), + upper_limit=r["flux"], unit="erg cm-2 s-1, unresolved line at 90 per cent of the recovery plateau", + note="%s, %.0f A; isotropic %.1e W; 10 m beam %.1e W" % (r["setting"], r["lam"], r["L_iso_W"] or np.nan, + r["P_10m_W"] or np.nan)) + for r in rows]) + print("%s: %d stars, %d left" % (sid, len(rows), len(left))) + + +def limits_main(): + p = argparse.ArgumentParser() + p.add_argument("which", choices=("starcat", "iue", "fuse", "cos", "stis", "table", "record")) + p.add_argument("--n", type=int, default=300) + p.add_argument("--procs", type=int, default=4) + a = p.parse_args() + if a.which == "table": + limits_table() + elif a.which == "record": + limits_record() + else: + limits_run(a.which, a.n, a.procs) + + +def limits_cli(): + quiet_warnings() + limits_main() + + +# -------------------------------------------------------------------------------------------------------------- + +hst_pulses_DOC = r"""Ultraviolet laser pulses in STIS TIME-TAG and COS corrtag events of stars within 10 pc: same-bin photon clusters in 1 ms, 32 ms or 0.25 s beyond the local rate, Poisson FAP with trials. + + python -I seti.py ultraviolet hst_pulses inventory + python -I seti.py ultraviolet hst_pulses fetch + python -I seti.py ultraviolet hst_pulses search""" + +hst_pulses_ROOT = os.environ.get("STIS_ROOT", core.data("stis_tag")) +hst_pulses_HERE = core.RESULTS +hst_pulses_MAST = "https://mast.stsci.edu/api/v0/invoke" +hst_pulses_DOWNLOAD = "https://mast.stsci.edu/api/v0.1/Download/file?uri=" +hst_pulses_INSTRUMENTS = ["STIS/FUV-MAMA", "STIS/NUV-MAMA", "COS/FUV", "COS/NUV"] +hst_pulses_MIN_SPAN = 10.0 +hst_pulses_LOCAL = 5.0 +hst_pulses_SPOT = 30.0 + + +def hst_pulses_invoke(req): + data = urllib.parse.urlencode({"request": json.dumps(req)}).encode() + for attempt in range(3): + try: + return json.loads(urllib.request.urlopen(urllib.request.Request( + hst_pulses_MAST, data=data, headers=dict(core.UA, **{"Content-Type": "application/x-www-form-urlencoded"})), + timeout=240).read()) + except Exception: + time.sleep(5 * (attempt + 1)) + return {"data": []} + + +def hst_pulses_inventory(): + os.makedirs(hst_pulses_ROOT, exist_ok=True) + stars = uv_nearby(100) + + # one filtered MAST query, matched to the stars' tracks locally + every, page = [], 1 + while True: + d = hst_pulses_invoke({"service": "Mast.Caom.Filtered", "format": "json", "pagesize": 50000, "page": page, + "params": {"columns": "obsid,obs_id,instrument_name,t_exptime,target_name,s_ra,s_dec,t_min", + "filters": [{"paramName": "obs_collection", "values": ["HST"]}, + {"paramName": "instrument_name", "values": hst_pulses_INSTRUMENTS}]}}) + rows = d.get("data", []) + every += rows + if len(rows) < 50000: + break + page += 1 + print("%d HST observations with %s" % (len(every), ", ".join(hst_pulses_INSTRUMENTS)), flush=True) + ora = np.array([float(x["s_ra"]) if x.get("s_ra") is not None else np.nan for x in every]) + ode = np.array([float(x["s_dec"]) if x.get("s_dec") is not None else np.nan for x in every]) + tmin = np.array([float(x["t_min"]) if x.get("t_min") is not None else 55000.0 for x in every]) + allobs = {} + res = [] + for s in stars: + dist = uv_track_dist(s, ora, ode, tmin) + near = np.where(dist < 108.0)[0] + res.append((s, near)) + for j in near: + x = every[j] + o = allobs.setdefault(str(x["obsid"]), dict(x, stars=[], dist={})) + o["stars"].append(s["main_id"]) + o["dist"][" ".join(s["main_id"].split())] = round(float(dist[j]), 2) + ids = list(allobs) + tags = [] + for k in range(0, len(ids), 50): + p = hst_pulses_invoke({"service": "Mast.Caom.Products", "format": "json", "pagesize": 20000, + "params": {"obsid": ",".join(ids[k:k + 50])}}) + for x in p.get("data", []): + fn = x["productFilename"] + if fn.endswith(("_tag.fits", "_corrtag_a.fits", "_corrtag_b.fits", "_corrtag.fits")): + tags.append(dict(file=fn, uri=x["dataURI"], size=int(x.get("size") or 0), obsid=str(x.get("obsID")), + parent=str(x.get("parent_obsid")))) + uniq = {t["file"]: t for t in tags} + json.dump(dict(obs=allobs, tags=list(uniq.values())), open(os.path.join(hst_pulses_ROOT, "inventory.json"), "w"), indent=1) + print("%d HST STIS and COS MAMA observations near %d objects; %d event files, %.1f GB" + % (len(allobs), sum(1 for s, near in res if len(near)), len(uniq), sum(t["size"] for t in uniq.values()) / 1e9)) + + +def hst_pulses_fetch(): + inv = json.load(open(os.path.join(hst_pulses_ROOT, "inventory.json"))) + os.makedirs(os.path.join(hst_pulses_ROOT, "events"), exist_ok=True) + + def one(t): + p = os.path.join(hst_pulses_ROOT, "events", t["file"]) + if os.path.exists(p): + return 1 + b = core.get(hst_pulses_DOWNLOAD + t["uri"], timeout=600, retries=3, soft=True, pause=5) + if not b or not b.startswith(b"SIMPLE"): + return 0 + open(p + ".tmp", "wb").write(b) + os.replace(p + ".tmp", p) + return 1 + with ThreadPoolExecutor(4) as ex: + n = sum(ex.map(one, inv["tags"])) + print("%d of %d event files on disk" % (n, len(inv["tags"]))) + + +hst_pulses_CAL_TARGETS = ("DARK", "BIAS", "DEUTERIUM", "WAVE", "WAVEHITM", "WAVELINE", "FLAT", "CCDFLAT", "NONE") + + +def hst_pulses_science(hd): + """False for calibration exposures (darks, flats, lamps) filed under a science visit.""" + et = str(hd.get("EXPTYPE", "EXTERNAL/SCI")).strip().upper() + tn = str(hd.get("TARGNAME", "")).strip().upper() + return et in ("EXTERNAL/SCI", "") and not any(tn.startswith(c) for c in hst_pulses_CAL_TARGETS) + + +def hst_pulses_read_events(path): + """Times (s), detector bin indices and test windows from a STIS _tag or COS _corrtag file.""" + from astropy.io import fits + out = [] + with fits.open(path) as h: + hd = h[0].header + inst = str(hd.get("INSTRUME", "")).strip() + if not hst_pulses_science(hd): + return out + for ext in h: + if ext.name != "EVENTS" or ext.data is None or len(ext.data) == 0: + continue + d = ext.data + cols = [c.upper() for c in d.columns.names] + t = np.asarray(d["TIME"], float) + if inst == "STIS": + x, y = np.asarray(d["AXIS1"], float), np.asarray(d["AXIS2"], float) + bx, by = 8, 8 + windows = (0.001, 0.032, 0.25) + # merge MAMA double counts: events within 2 pixels and 250 us of the previous + o = np.argsort(t, kind="stable") + t, x, y = t[o], x[o], y[o] + dup = np.zeros(len(t), bool) + for lag in range(1, 7): + dup[lag:] |= (t[lag:] - t[:-lag] < 250e-6) & (np.abs(x[lag:] - x[:-lag]) <= 2) & \ + (np.abs(y[lag:] - y[:-lag]) <= 2) + t, x, y = t[~dup], x[~dup], y[~dup] + else: + x = np.asarray(d["XCORR"] if "XCORR" in cols else d["RAWX"], float) + y = np.asarray(d["YCORR"] if "YCORR" in cols else d["RAWY"], float) + fuv = str(hd.get("DETECTOR", "")).strip() == "FUV" + bx, by = (16, 4) if fuv else (8, 8) + good = np.ones(len(t), bool) + if "DQ" in cols: + # COS DQ bits (Data Handbook table 2.19): 2 hot spot, 8 calibration, 16/1024 low response, 32 background, 64 burst, 128 bounds, 512 PHA, 2048 bad time, 4096 low PHA, 8192 gain sag, 16384 dark edge + good &= (np.asarray(d["DQ"], int) & (2 | 8 | 16 | 32 | 64 | 128 | 512 | 1024 | 2048 | 4096 | 8192 | 16384)) == 0 + if fuv and "PHA" in cols: + pha = np.asarray(d["PHA"], int) + good &= (pha >= int(ext.header.get("PHALOWRA", 2))) & (pha <= int(ext.header.get("PHAUPPRA", 23))) + if "WAVELENGTH" in cols: + # no wavelength: digitizer-edge rows outside the calibrated area + good &= np.asarray(d["WAVELENGTH"], float) > 0 + # aperture light only: events within the SP_LOC, SP_HGT extraction band in YFULL + if "YFULL" in cols: + yf = np.asarray(d["YFULL"], float) + xf = np.asarray(d["XFULL"], float) + band = np.zeros(len(t), bool) + for s in "ABC": + loc, hgt = ext.header.get("SP_LOC_" + s), ext.header.get("SP_HGT_" + s) + if loc is None or hgt is None or float(loc) < 0: + continue + if fuv and str(hd.get("SEGMENT", "")).strip()[-1:] != s: + continue + slp = float(ext.header.get("SP_SLP_" + s, 0.0) or 0.0) + half = float(hgt) / 2 + 2 + # slope reference column unrecorded: the trace is whichever of edge and centre puts more events in the band + best = None + for xr in (0.0, 8192.0 if fuv else 512.0): + inb = np.abs(yf - (float(loc) + slp * (xf - xr))) <= half + if best is None or inb.sum() > best.sum(): + best = inb + band |= best + good &= band + t, x, y = t[good], x[good], y[good] + # TAGFLASH lamp intervals (LMP_ONn, LMPOFFn) cut with 2 s margins + eh = ext.header + flashes = [(float(eh["LMP_ON%d" % i]), float(eh.get("LMPOFF%d" % i, eh["LMP_ON%d" % i] + 15.0))) + for i in range(1, 40) if "LMP_ON%d" % i in eh] + if flashes: + keep = np.ones(len(t), bool) + for on, off in flashes: + keep &= ~((t >= on - 2.0) & (t <= off + 2.0)) + t, x, y = t[keep], x[keep], y[keep] + windows = (0.032, 0.25) + ok = np.isfinite(t) & np.isfinite(x) & np.isfinite(y) + t, x, y = t[ok], x[ok], y[ok] + b = (np.floor(x / bx).astype(np.int64) << 20) + np.floor(y / by).astype(np.int64) + out.append(dict(inst=inst, target=str(hd.get("TARGNAME", "")).strip(), t=t, b=b, windows=windows, + det=str(hd.get("DETECTOR", "")).strip() + str(hd.get("SEGMENT", "")).strip(), bx=bx, by=by, + exptime=float(hd.get("TEXPTIME", 0) or (t.max() - t.min() if len(t) else 0)))) + return out + + +def hst_pulses_scan(ev): + """Largest same-bin cluster per window, its bin's expectation and the false-alarm probability.""" + from scipy.stats import poisson + t, b = ev["t"], ev["b"] + if len(t) < 50: + return None + t0 = float(t.min()) + span = float(t.max()) - t0 + if span < hst_pulses_MIN_SPAN: + return None + # one sort key by bin then time, bins over 2 x SPOT seconds apart + key_scale = 10.0 ** math.ceil(math.log10(span + 2 * hst_pulses_SPOT + 10.0)) + ub, inv, cnt = np.unique(b, return_inverse=True, return_counts=True) + key = inv.astype(np.float64) * key_scale + (t - t0) + o = np.argsort(key) + key, inv_s, ts = key[o], inv[o], t[o] + tall = np.sort(t) + # expectation: the larger of the mean rate scaled by the detector's LOCAL rate (flares, bursts) and the spot's own SPOT-second rate (airglow, hot pixels) + near = np.searchsorted(tall, ts + hst_pulses_LOCAL, side="right") - np.searchsorted(tall, ts - hst_pulses_LOCAL, side="left") + scale = near / (2 * hst_pulses_LOCAL * len(t) / span) + rate = cnt[inv_s] / span * np.maximum(scale, 1e-3) + own = np.searchsorted(key, key + hst_pulses_SPOT, side="right") - np.searchsorted(key, key - hst_pulses_SPOT, side="left") + dur = np.minimum(ts + hst_pulses_SPOT, t0 + span) - np.maximum(ts - hst_pulses_SPOT, t0) + res = {} + for w in ev["windows"]: + # COS 32 ms ticks: a one-tick window holds one tick + k = np.searchsorted(key, key + w * (1 - 1e-6), side="right") - np.arange(len(key)) + mu = np.maximum(rate * w, (own - k) / np.maximum(dur - w, 1.0) * w) + cand = np.where(k >= 2)[0] + if len(cand) == 0: + res[str(w)] = dict(k=1, mu=0.0, p=1.0, fap=1.0, t=None, detector=None, mean_detector=len(t) / span * w) + continue + # probability of the other k - 1 events at this bin's rate + p = poisson.sf(k[cand] - 2, mu[cand]) + j = cand[int(np.argmin(p))] + pmin = float(p.min()) + det = int(np.searchsorted(tall, ts[j] + w, side="right") - np.searchsorted(tall, ts[j], side="left")) + fap = -math.expm1(len(t) * math.log1p(-min(pmin, 1 - 1e-16))) + bj = int(ub[inv_s[j]]) + res[str(w)] = dict(k=int(k[j]), mu=float(mu[j]), p=pmin, fap=fap, t=float(ts[j]), detector=det, + mean_detector=len(t) / span * w, site=[ev["det"], (bj >> 20) * ev["bx"], (bj & 0xFFFFF) * ev["by"]]) + return dict(n=int(len(t)), span=span, windows=res) + + +def hst_pulses_scan_file(job): + tg, stars = job + p = os.path.join(hst_pulses_ROOT, "events", tg["file"]) + if not os.path.exists(p): + return [] + try: + evs = hst_pulses_read_events(p) + except Exception as e: + print(tg["file"], "unreadable:", str(e)[:60], flush=True) + return [] + out = [] + for k, ev in enumerate(evs): + r = hst_pulses_scan(ev) + if r: + out.append(dict(file=tg["file"], ext=k, inst=ev["inst"], target=ev["target"], stars=stars, **r)) + return out + + +def hst_pulses_search(): + from concurrent.futures import ProcessPoolExecutor + inv = json.load(open(os.path.join(hst_pulses_ROOT, "inventory.json"))) + obs = inv["obs"] + jobs = [(tg, obs.get(tg["parent"], obs.get(tg["obsid"], {})).get("stars", [])) for tg in inv["tags"]] + with ProcessPoolExecutor(int(os.environ.get("STIS_PROCS", "2"))) as ex: + rows = [r for rs in ex.map(hst_pulses_scan_file, jobs, chunksize=4) for r in rs] + faps = [min(w["fap"] for w in r["windows"].values()) for r in rows] + print("%d event lists (%d STIS, %d COS) of %d HST targets; %.1f million photons over %.1f days" + % (len(rows), sum(r["inst"] == "STIS" for r in rows), sum(r["inst"] == "COS" for r in rows), + len({r["target"] for r in rows}), sum(r["n"] for r in rows) / 1e6, sum(r["span"] for r in rows) / 86400)) + for thr in (1e-2, 1e-3, 1e-5): + print(" lists with a same-spot cluster at false-alarm probability below %.0e: %d" % (thr, sum(f < thr for f in faps))) + # explanations: a flare raises the whole detector; a site hosting two targets' strongest clusters is a hot pixel + top = [(r, f, min(r["windows"].items(), key=lambda kv: kv[1]["fap"])) for r, f in zip(rows, faps) if f < 1e-2] + sites = {} + for r, f, w in top: + sites.setdefault(tuple(w[1]["site"]), set()).add(r["target"]) + for r, f, w in top: + x = w[1] + rest, m = (x["detector"] or 0) - x["k"], x["mean_detector"] + if rest > 3 * m + 5 * math.sqrt(m): + r["why"] = "flare: %d other events detector-wide against a mean of %.1f" % (rest, m) + elif len(sites[tuple(x["site"])]) > 1: + r["why"] = "hot pixel: the same detector site (%s x %d y %d) hosts the strongest cluster of %s" % ( + x["site"][0], x["site"][1], x["site"][2], ", ".join(sorted(sites[tuple(x["site"])]))) + else: + r["why"] = "" + for r, f, w in sorted(top, key=lambda z: z[1])[:20]: + print(" %s [%d] %s %-14s %s: %d photons over %.0f s; %s s window: %d in one spot (expected %.1e), FAP %.1e, at " + "t %.4f with %d events detector-wide (mean %.2f)%s" + % (r["file"], r["ext"], r["inst"], r["target"][:14], ",".join(s.strip() for s in r["stars"])[:30], r["n"], + r["span"], w[0], w[1]["k"], w[1]["mu"], w[1]["fap"], w[1]["t"] or 0, w[1]["detector"] or 0, + w[1]["mean_detector"], "; " + r["why"] if r["why"] else "")) + left = [z for z in top if not z[0]["why"]] + # smallest FAPs against the lists and windows tried + trials = sum(len(r["windows"]) for r in rows) + print("unexplained lists below 1e-3: %d (about %.1f expected from %d windows); below 1e-4: %d" + % (sum(f < 1e-3 for r, f, w in left), trials * 1e-3, trials, sum(f < 1e-4 for r, f, w in left))) + json.dump(rows, open(os.path.join(hst_pulses_HERE, "stis_pulses.json"), "w"), indent=1, default=str) + + +def hst_pulses_record(): + """Record per SIMBAD object from stis_pulses.json: lists, photons, hours and the smallest FAP left after flare and hot-pixel explanations.""" + rows = json.load(open(os.path.join(hst_pulses_HERE, "stis_pulses.json"))) + per = {} + for r in rows: + f = min(w["fap"] for w in r["windows"].values()) + for s in r["stars"] or [r["target"]]: + s = " ".join(s.split()) + x = per.setdefault(s, dict(lists=0, n=0, span=0.0, fap=1.0, inst=set(), why=None)) + x["lists"] += 1 + x["n"] += r["n"] + x["span"] += r["span"] + x["inst"].add(r["inst"]) + if f < x["fap"]: + x["fap"], x["why"] = f, r.get("why") or None + out = [dict(target="simbad:" + s, stat=x["n"], p=x["fap"], unit="photons; p is the smallest list false-alarm probability", + vet=x["why"], note="%d %s event lists over %.1f h" % (x["lists"], "+".join(sorted(x["inst"])), x["span"] / 3600)) + for s, x in per.items()] + core.record_search("hst_photon_pulses", "HST photon-event pulses", archive="MAST HST STIS TIME-TAG and COS corrtag", + release="1997-2024", selection="SIMBAD objects with parallax above 100 mas within 0.03 deg", + code=os.path.abspath(__file__), entry="hst_pulses", params=dict(windows=[0.001, 0.032, 0.25], local=hst_pulses_LOCAL, spot=hst_pulses_SPOT, + min_span=hst_pulses_MIN_SPAN), + n_targets=len(out), result="%d unexplained lists below FAP 1e-3 against %.1f expected; %d below 1e-4" + % (sum(1 for r in rows if not r.get("why") and min(w["fap"] for w in r["windows"].values()) < 1e-3), + 1e-3 * sum(len(r["windows"]) for r in rows), + sum(1 for r in rows if not r.get("why") and min(w["fap"] for w in r["windows"].values()) < 1e-4)), + ledger="GALEX time-tagged photons") + core.record_targets("hst_photon_pulses", out) + print("recorded %d objects" % len(out)) + + +def hst_pulses_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("inventory", "fetch", "search", "record")) + a = p.parse_args() + {"inventory": hst_pulses_inventory, "fetch": hst_pulses_fetch, "search": hst_pulses_search, "record": hst_pulses_record}[a.mode]() + + +def hst_pulses_cli(): + quiet_warnings() + hst_pulses_main() + + +# -------------------------------------------------------------------------------------------------------------- + +galex_pulses_DOC = r"""Ultraviolet pulses from stars within 10 pc in GALEX time-tagged photons: largest counts in 5, 20 and 100 ms against the local rate, with control apertures and detector-wide bursts. + + python -I seti.py ultraviolet galex_pulses fetch [--band fuv|nuv] + python -I seti.py ultraviolet galex_pulses search [--band fuv|nuv] + python -I seti.py ultraviolet galex_pulses record [--band fuv|nuv]""" + +galex_pulses_ROOT = os.environ.get("GALEX_ROOT", core.data("galex")) +galex_pulses_HERE = core.RESULTS +galex_pulses_R_SRC = 8.0 +galex_pulses_R_CTRL = 60.0 +galex_pulses_N_CTRL = 8 +galex_pulses_WINDOWS = (0.005, 0.02, 0.1) +galex_pulses_LOCAL = 10.0 +# band: photon-list suffix, directory of the cut apertures, results file +galex_pulses_BANDS = {"fuv": ("fd", "cut", "galex_pulses.json"), "nuv": ("nd", "cut_nuv", "galex_pulses_nuv.json")} + + +def galex_pulses_year_of(t): + """GALEX time (seconds since 1980 January 6, the GPS epoch) as a decimal year.""" + return 1980.0 + (t + 5 * 86400.0) / 3.15576e7 + + +def galex_pulses_targets(): + """Single-pointing eclipses and stars within 0.55 deg of each boresight, cached in ROOT/eclipse_stars.json.""" + cache = os.path.join(galex_pulses_ROOT, "eclipse_stars.json") + if os.path.exists(cache): + return {int(e): v for e, v in json.load(open(cache)).items()} + import pyarrow.parquet as pq + b = pq.read_table(os.path.join(galex_pulses_ROOT, "boresight.parquet")).to_pandas() + m = pq.read_table(os.path.join(galex_pulses_ROOT, "metadata.parquet")).to_pandas().set_index("eclipse") + stars = core.simbad("SELECT main_id, ra, dec, pmra, pmdec, plx_value, otype, sp_type FROM basic WHERE plx_value > " + "100 AND otype NOT IN ('Pl', 'Pl?') AND ra IS NOT NULL") + ra0, de0 = np.radians(b["ra0"].values), np.radians(b["dec0"].values) + by = {} + for s in stars: + a, d = math.radians(float(s["ra"])), math.radians(float(s["dec"])) + cs = np.sin(d) * np.sin(de0) + np.cos(d) * np.cos(de0) * np.cos(ra0 - a) + for e in set(b["eclipse"].values[np.degrees(np.arccos(np.clip(cs, -1, 1))) < 0.55]): + e = int(e) + if e in m.index and m.loc[e]["obstype"] != "AIS": + by.setdefault(e, []).append(s) + json.dump({str(e): v for e, v in by.items()}, open(cache, "w")) + return by + + +def galex_pulses_column(key, name): + """One photon-list column by byte range from the public bucket; None when absent.""" + import pyarrow.fs + import pyarrow.parquet as pq + fs = pyarrow.fs.S3FileSystem(anonymous=True, region="us-east-1", connect_timeout=60, request_timeout=600) + for attempt in range(3): + try: + return pq.read_table("stpubdata/" + key, filesystem=fs, columns=[name]).column(name).to_numpy() + except FileNotFoundError: + return None + except OSError as ex: + if "NoSuchKey" in str(ex) or "does not exist" in str(ex): + return None + if attempt == 2: + raise + import time + time.sleep(10) + + +def galex_pulses_extract(e, stars, band="fuv"): + suffix, cut, _ = galex_pulses_BANDS[band] + out = os.path.join(galex_pulses_ROOT, cut, "e%05d.npz" % e) + if os.path.exists(out): + return 1 + key = "galex/gap/galex_photon_list/e%05d/e%05d-%s.parquet" % (e, e, suffix) + try: + t = galex_pulses_column(key, "t") + if t is None: + return 0 + good = (galex_pulses_column(key, "flags") == 0) & ~galex_pulses_column(key, "mask").astype(bool) + de = galex_pulses_column(key, "dec") + good &= np.isfinite(de) + tt_all = t[good] + if not len(tt_all): + return 0 + # keep photons in the stars' and controls' declination bands + dy = galex_pulses_year_of(np.median(tt_all)) - 2000.0 + band_sel = np.zeros(len(de), bool) + for s in stars: + sde = float(s["dec"]) + float(s.get("pmdec") or 0) / 3.6e6 * dy + band_sel |= np.abs(de - sde) < (galex_pulses_R_CTRL + 2 * galex_pulses_R_SRC) / 3600 + idx = np.nonzero(band_sel & good)[0] + de = de[idx] + ra = galex_pulses_column(key, "ra")[idx] + tt = t[idx] + del t, band_sel, good + except Exception as ex: + print("e%05d: %s" % (e, str(ex)[:120]), flush=True) + return 0 + res = dict(eclipse=e, band=band, t0=float(tt_all.min()), t1=float(tt_all.max()), n_all=int(len(tt_all))) + # detector-wide photons per 5 ms tick, for field-wide bursts + ticks, counts = np.unique(np.round(tt_all / 0.005).astype(np.int64), return_counts=True) + del tt_all + res["tick_hist"] = np.bincount(counts) + arrays = {} + for i, s in enumerate(stars): + sra = float(s["ra"]) + float(s.get("pmra") or 0) / 3.6e6 * dy / math.cos(math.radians(float(s["dec"]))) + sde = float(s["dec"]) + float(s.get("pmdec") or 0) / 3.6e6 * dy + cd = math.cos(math.radians(sde)) + for j in range(galex_pulses_N_CTRL + 1): + if j == 0: + cra, cde = sra, sde + else: + ang = 2 * math.pi * (j - 1) / galex_pulses_N_CTRL + cra, cde = sra + galex_pulses_R_CTRL / 3600 * math.cos(ang) / cd, sde + galex_pulses_R_CTRL / 3600 * math.sin(ang) + sel = (np.abs(de - cde) < galex_pulses_R_SRC / 3600) & (np.hypot(((ra - cra + 180) % 360 - 180) * cd, de - cde) * 3600 < galex_pulses_R_SRC) + arrays["s%d_a%d" % (i, j)] = tt[sel] + if j == 0: + arrays["tick_s%d" % i] = counts[np.searchsorted(ticks, np.round(tt[sel] / 0.005).astype(np.int64))] + os.makedirs(os.path.dirname(out), exist_ok=True) + np.savez_compressed(out, meta=json.dumps(dict(res, tick_hist=res["tick_hist"].tolist(), + stars=[s["main_id"] for s in stars])), **arrays) + return 1 + + +def galex_pulses_fetch(band): + by = galex_pulses_targets() + print("%d single-pointing eclipses cover %d objects within 10 pc" % (len(by), len({s["main_id"] for v in by.values() for s in v})), + flush=True) + done = [0] + + def one(kv): + r = galex_pulses_extract(kv[0], kv[1], band) + done[0] += 1 + if done[0] % 10 == 0: + print("%d of %d eclipses read" % (done[0], len(by)), flush=True) + return r + with ThreadPoolExecutor(int(os.environ.get("GALEX_THREADS", "3"))) as ex: + n = sum(ex.map(one, sorted(by.items()))) + print("%d eclipses with %s photon lists extracted" % (n, band)) + + +def galex_pulses_clusters(t, span): + """Per window length: largest photon-started count, its local expectation and the FAP over the exposure.""" + from scipy.stats import poisson + out = {} + t = np.sort(t) + for w in galex_pulses_WINDOWS: + if len(t) < 2: + out[w] = (len(t), 0.0, 1.0) + continue + k = np.searchsorted(t, t + w - 1e-9) - np.arange(len(t)) + i = int(np.argmax(k)) + n_local = np.searchsorted(t, t[i] + galex_pulses_LOCAL) - np.searchsorted(t, t[i] - galex_pulses_LOCAL) + lam = max(n_local - k[i], 1) / (2 * galex_pulses_LOCAL) * w + p = poisson.sf(k[i] - 1, lam) + fap = -math.expm1(max(span / w, 1) * math.log1p(-min(p, 1 - 1e-16))) + out[w] = (int(k[i]), float(lam), float(fap)) + return out + + +def galex_pulses_search(band): + _, cut, result = galex_pulses_BANDS[band] + files = sorted(os.listdir(os.path.join(galex_pulses_ROOT, cut))) + rows, ctrl = [], [] + for fn in files: + z = np.load(os.path.join(galex_pulses_ROOT, cut, fn)) + meta = json.loads(str(z["meta"])) + span = meta["t1"] - meta["t0"] + for i, name in enumerate(meta["stars"]): + t = z["s%d_a0" % i] + c = galex_pulses_clusters(t, span) + best = min(c.values(), key=lambda x: x[2]) + rows.append(dict(star=name, eclipse=meta["eclipse"], n=int(len(t)), span=span, clusters={str(k): v for k, v in c.items()}, + fap=best[2], tick_max=int(z["tick_s%d" % i].max()) if len(t) else 0, + tick_hist=meta["tick_hist"])) + for j in range(1, galex_pulses_N_CTRL + 1): + cc = galex_pulses_clusters(z["s%d_a%d" % (i, j)], span) + ctrl.append(min(v[2] for v in cc.values())) + ctrl = np.array(ctrl) + print("%d star-eclipses (%d stars), median %d source photons over %.0f s; %d control apertures" + % (len(rows), len({r["star"] for r in rows}), np.median([r["n"] for r in rows]), np.median([r["span"] for r in rows]), + len(ctrl))) + for thr in (1e-2, 1e-3, 1e-4): + print(" false-alarm probability below %.0e: targets %d (%.1f expected from the controls' rate)" + % (thr, sum(r["fap"] < thr for r in rows), len(rows) * np.mean(ctrl < thr))) + for r in sorted(rows, key=lambda r: r["fap"])[:15]: + c = r["clusters"] + print(" %-24s e%05d: %d photons over %.0f s; 5 ms max %d (exp %.1e), 20 ms %d (exp %.1e), 100 ms %d (exp %.1e); " + "FAP %.1e; busiest detector tick holding a source photon %d photons" + % (r["star"], r["eclipse"], r["n"], r["span"], c["0.005"][0], c["0.005"][1], c["0.02"][0], c["0.02"][1], + c["0.1"][0], c["0.1"][1], r["fap"], r["tick_max"])) + json.dump(dict(rows=rows, ctrl=ctrl.tolist()), open(os.path.join(galex_pulses_HERE, result), "w"), indent=1) + + +def galex_pulses_record(band): + """Record one row per star with its lowest FAP over its eclipses.""" + _, _, result = galex_pulses_BANDS[band] + r = json.load(open(os.path.join(galex_pulses_HERE, result))) + rows, ctrl = r["rows"], np.array(r["ctrl"]) + best = {} + for x in rows: + if x["star"] not in best or x["fap"] < best[x["star"]]["fap"]: + best[x["star"]] = dict(x, n_ecl=sum(1 for y in rows if y["star"] == x["star"])) + run = "galex_%s_pulses" % band + core.record_search( + run, "GALEX time-tagged photons", archive="STScI S3 galex/gap/galex_photon_list (single-pointing eclipses)", + release="GALEX %s photon lists" % band.upper(), + selection="SIMBAD objects with parallax above 100 mas inside 0.55 deg of a single-pointing eclipse boresight", + code="seti.py ultraviolet galex_pulses", params=dict(r_src=galex_pulses_R_SRC, n_ctrl=galex_pulses_N_CTRL, windows=list(galex_pulses_WINDOWS), local_s=galex_pulses_LOCAL), + n_targets=len(best), + null_summary=dict(below_1e2=sum(1 for x in rows if x["fap"] < 1e-2), + below_1e3=sum(1 for x in rows if x["fap"] < 1e-3), + expected_1e2=float(len(rows) * np.mean(ctrl < 1e-2)), controls=int(len(ctrl))), + sensitivity="several photons within 5, 20 or 100 ms in an 8 arcsec aperture against the local rate", + result="%d star-eclipses of %d stars: %d clusters at false-alarm probability below 0.01 against %.1f expected " + "from %d control apertures" % (len(rows), len(best), sum(1 for x in rows if x["fap"] < 1e-2), + len(rows) * np.mean(ctrl < 1e-2), len(ctrl)), + ledger="GALEX time-tagged photons") + core.clear_targets(run) + core.record_targets(run, [ + dict(target="simbad:%s" % s, p=float(x["fap"]), + note="best of %d eclipses: e%05d, %d photons over %.0f s; 5 ms max %d" + % (x["n_ecl"], x["eclipse"], x["n"], x["span"], x["clusters"]["0.005"][0])) for s, x in best.items()]) + print("recorded") + + +def galex_pulses_main(): + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("fetch", "search", "record")) + p.add_argument("--band", choices=tuple(galex_pulses_BANDS), default="fuv") + a = p.parse_args() + {"fetch": galex_pulses_fetch, "search": galex_pulses_search, "record": galex_pulses_record}[a.mode](a.band) + + +def galex_pulses_cli(): + quiet_warnings() + galex_pulses_main() + + +# -------------------------------------------------------------------------------------------------------------- + +galex_census_DOC = r"""Bursts across the GALEX NUV detector as the false-positive population: 100 ms clusters per 16 arcsec cell, judged off streaks and local rises, with a detector-position test. + + python -I seti.py ultraviolet galex_census census [--eclipses FILE] [--part k/n] + python -I seti.py ultraviolet galex_census judge + python -I seti.py ultraviolet galex_census detector ECLIPSE RA DEC T [--fixed] + python -I seti.py ultraviolet galex_census burstpos ECLIPSE + python -I seti.py ultraviolet galex_census record""" + +galex_census_ROOT = os.environ.get("GALEX_CENSUS_ROOT", core.data("galex_census")) +galex_census_KEY = "stpubdata/galex/gap/galex_photon_list/e%05d/e%05d-nd.parquet" +galex_census_W, galex_census_R, galex_census_FAP = 0.1, 16.0, 1e-3 + + +def galex_census_photons(ecl, columns=("t", "ra", "dec")): + """Good photons of one NUV eclipse from the public bucket (flags 0, unmasked, finite position).""" + import pyarrow.fs + import pyarrow.parquet as pq + fs = pyarrow.fs.S3FileSystem(anonymous=True, region="us-east-1", connect_timeout=60, request_timeout=900) + cols = list(dict.fromkeys(list(columns) + ["flags", "mask", "dec"])) + tab = pq.read_table(galex_census_KEY % (ecl, ecl), filesystem=fs, columns=cols) + good = ((tab.column("flags").to_numpy() == 0) & ~tab.column("mask").to_numpy().astype(bool) + & np.isfinite(tab.column("dec").to_numpy())) + return {c: tab.column(c).to_numpy()[good] for c in columns} + + +def galex_census_eclipse(ecl): + """Census of one eclipse into ROOT/e.json: every cluster below the FAP threshold.""" + from scipy.stats import poisson + W, R = galex_census_W, galex_census_R + out_p = os.path.join(galex_census_ROOT, "e%05d.json" % ecl) + if os.path.exists(out_p): + return + try: + ph = galex_census_photons(ecl) + except Exception as e: + json.dump(dict(eclipse=ecl, error=str(e)[:200]), open(out_p, "w")) + return + t, ra, de = ph["t"], ph["ra"], ph["dec"] + if len(t) < 1000: + json.dump(dict(eclipse=ecl, error="too few photons"), open(out_p, "w")) + return + t0 = float(t.min()) + tr = t - t0 + span = float(tr.max()) + ra0, de0 = float(np.median(ra)), float(np.median(de)) + x = ((ra - ra0 + 180) % 360 - 180) * math.cos(math.radians(de0)) * 3600.0 + y = (de - de0) * 3600.0 + nwin = span / W + hits, cells = [], {} + for ox, oy in ((0, 0), (8, 0), (0, 8), (8, 8)): + ix = np.floor((x + ox) / R).astype(np.int64) + iy = np.floor((y + oy) / R).astype(np.int64) + keyc = (ix - ix.min()) * 100000 + (iy - iy.min()) + order = np.lexsort((tr, keyc)) + kc, ts = keyc[order], tr[order] + v = kc.astype(np.float64) * 4096.0 + ts + cnt = np.searchsorted(v, v + W, side="left") - np.arange(len(v)) + uniq, inv, ncell = np.unique(kc, return_inverse=True, return_counts=True) + rate = ncell / span + mu = rate * W + if (ox, oy) == (0, 0): + h, _ = np.histogram(rate, bins=[0, 0.1, 0.3, 1, 3, 10, 1e9]) + cells = dict(zip(["<0.1", "0.1-0.3", "0.3-1", "1-3", "3-10", ">10"], h.tolist())) + kthr = np.full(len(uniq), 10 ** 6, np.int64) + for k in range(2, 600): + ok = (kthr == 10 ** 6) & (poisson.sf(k - 1, mu) * nwin < galex_census_FAP) + kthr[ok] = k + if not (kthr == 10 ** 6).any(): + break + for h_ in np.nonzero(cnt >= kthr[inv])[0]: + j = order[h_] + fap = float(poisson.sf(cnt[h_] - 1, mu[inv[h_]]) * nwin) + # the cell's own rate within 10 s either side, the window left out + lo = np.searchsorted(v, kc[h_] * 4096.0 + max(ts[h_] - 10.0, 0.0)) + hi = np.searchsorted(v, kc[h_] * 4096.0 + ts[h_] + 10.0) + rate_loc = max(int(hi - lo - cnt[h_]), 1) / 20.0 + fap_loc = float(poisson.sf(cnt[h_] - 1, max(rate_loc, rate[inv[h_]] * 0.5) * W) * nwin) + hits.append(dict(t=float(ts[h_]), n=int(cnt[h_]), x=float(x[j]), y=float(y[j]), ra=float(ra[j]), + dec=float(de[j]), rate=float(rate[inv[h_]]), rate_local=float(rate_loc), fap=fap, + fap_local=fap_loc)) + cl = [] + for h_ in sorted(hits, key=lambda d: d["fap"]): + if not any(abs(c["t"] - h_["t"]) < 0.3 and math.hypot(c["x"] - h_["x"], c["y"] - h_["y"]) < 24 for c in cl): + cl.append(h_) + for c in cl: + c["neighbours"] = sum(1 for o in cl if o is not c and abs(o["t"] - c["t"]) < 2.0 + and math.hypot(o["x"] - c["x"], o["y"] - c["y"]) < 60.0) + json.dump(dict(eclipse=ecl, t0=t0, span=span, n_photons=int(len(t)), cells=cells, clusters=cl), open(out_p, "w")) + + +def galex_census_eclipses(path=None): + if path: + return [int(e) for e in json.load(open(path))] + rows = json.load(open(core.results("galex_pulses_nuv.json")))["rows"] + return sorted({int(r["eclipse"]) for r in rows}) + + +def galex_census_run(path=None, part=None): + os.makedirs(galex_census_ROOT, exist_ok=True) + ecls = galex_census_eclipses(path) + k, n = (int(x) for x in part.split("/")) if part else (0, 1) + for e in ecls[k::n]: + t_ = time.time() + galex_census_eclipse(e) + print("e%05d done in %.0f s" % (e, time.time() - t_), flush=True) + + +def galex_census_judge(): + """Bursts of 7 or more photons in 100 ms on cells of 0.5-5 counts/s, off streaks and outside local rises.""" + n_ecl = n_err = streaks = flares = 0 + src_seconds = 0.0 + bursts = [] + for f in sorted(glob.glob(os.path.join(galex_census_ROOT, "e*.json"))): + d = json.load(open(f)) + if "error" in d: + n_err += 1 + continue + n_ecl += 1 + src_seconds += (d["cells"].get("1-3", 0) + d["cells"].get("3-10", 0)) * d["span"] + for c in d["clusters"]: + if c["n"] < 7 or not 0.5 <= c["rate"] <= 5.0: + continue + if c.get("neighbours", 0) > 0: + streaks += 1 + elif c.get("fap_local", 1.0) >= 1e-4: + flares += 1 + else: + bursts.append(dict(c, eclipse=d["eclipse"])) + # one burst per cell and moment across the four grids + uniq = [] + for b in sorted(bursts, key=lambda b: b["fap_local"]): + if not any(b["eclipse"] == u["eclipse"] and abs(b["t"] - u["t"]) < 0.2 and abs(b["ra"] - u["ra"]) < 0.01 + and abs(b["dec"] - u["dec"]) < 0.01 for u in uniq): + uniq.append(b) + print("%d eclipses judged (%d failed); %.3g source-seconds at 1-10 counts/s" % (n_ecl, n_err, src_seconds)) + print("clusters of 7+ photons in 100 ms on 0.5-5 counts/s cells: %d on streaks, %d within a local rise, %d isolated" + % (streaks, flares, len(uniq))) + print("isolated bursts per source-second: %.2g" % (len(uniq) / max(src_seconds, 1))) + for b in uniq[:30]: + print(" e%05d t %.2f n %d at RA %.5f Dec %+.5f, cell %.2f c/s, local %.2f c/s, fap %.1e, local fap %.1e" + % (b["eclipse"], b["t"], b["n"], b["ra"], b["dec"], b["rate"], b["rate_local"], b["fap"], b["fap_local"])) + json.dump(dict(n_ecl=n_ecl, src_seconds=src_seconds, streaks=streaks, flares=flares, bursts=uniq), + open(os.path.join(galex_census_ROOT, "judged.json"), "w")) + + +def galex_census_boresight(tr, ra, de): + """Boresight per photon from each second's median position (over 100 photons), 5 s running median, linear within the second; with cos(dec).""" + from scipy.ndimage import median_filter + sec = np.floor(tr).astype(int) + ns = sec.max() + 1 + order = np.argsort(sec) + st = np.searchsorted(sec[order], np.arange(ns)) + en = np.searchsorted(sec[order], np.arange(ns), side="right") + bra, bde = np.full(ns, np.nan), np.full(ns, np.nan) + for s in range(ns): + idx = order[st[s]:en[s]] + if len(idx) > 100: + bra[s], bde[s] = np.median(ra[idx]), np.median(de[idx]) + ok = np.isfinite(bra) + sb_ra = np.interp(np.arange(ns), np.nonzero(ok)[0], median_filter(bra[ok], 5)) + sb_de = np.interp(np.arange(ns), np.nonzero(ok)[0], median_filter(bde[ok], 5)) + fr = tr - sec + bore_ra = sb_ra[sec] + (np.r_[sb_ra[1:], sb_ra[-1]][sec] - sb_ra[sec]) * fr + bore_de = sb_de[sec] + (np.r_[sb_de[1:], sb_de[-1]][sec] - sb_de[sec]) * fr + return bore_ra, bore_de, math.cos(math.radians(np.nanmedian(bde))), (sb_ra, sb_de) + + +def galex_census_detector(ecl, star_ra, star_de, t_burst, fixed=False): + """A star's burst in detector coordinates, and that detector spot over the whole visit against the star.""" + ph = galex_census_photons(ecl) + t, ra, de = ph["t"], ph["ra"], ph["dec"] + tr = t - t.min() + bore_ra, bore_de, cd, (sb_ra, sb_de) = galex_census_boresight(tr, ra, de) + dx = ((ra - bore_ra + 180) % 360 - 180) * cd * 3600.0 + dy = (de - bore_de) * 3600.0 + print("visit %.0f s, %d photons; boresight dither range RA %.1f arcsec, Dec %.1f arcsec" + % (tr.max(), len(t), (sb_ra.max() - sb_ra.min()) * cd * 3600, (sb_de.max() - sb_de.min()) * 3600)) + sp = np.hypot(np.diff(sb_ra) * cd * 3600, np.diff(sb_de) * 3600) + print("boresight speed: median %.2f arcsec/s, 95th percentile %.2f" % (np.median(sp), np.percentile(sp, 95))) + # star centroid: densest 2 arcsec cell within 60 arcsec, then a 6 arcsec mean + x60 = ((ra - star_ra + 180) % 360 - 180) * cd * 3600 + y60 = (de - star_de) * 3600 + w60 = np.hypot(x60, y60) < 60 + H, xe, ye = np.histogram2d(x60[w60], y60[w60], bins=60, range=[[-60, 60], [-60, 60]]) + ix, iy = np.unravel_index(np.argmax(H), H.shape) + cx, cy = (xe[ix] + xe[ix + 1]) / 2, (ye[iy] + ye[iy + 1]) / 2 + m = w60 & (np.hypot(x60 - cx, y60 - cy) < 6) + if not fixed: + star_ra += np.mean(x60[m]) / 3600 / cd + star_de += np.mean(y60[m]) / 3600 + print("star centroid RA %.5f Dec %.5f from %d photons within 6 arcsec" % (star_ra, star_de, m.sum())) + r8 = np.hypot(((ra - star_ra + 180) % 360 - 180) * cd * 3600, (de - star_de) * 3600) < 8 + cand = np.nonzero(r8 & (tr > t_burst - 5) & (tr < t_burst + 5))[0] + tt = tr[cand] + best = None + for x in tt: + k = int(np.sum((tt >= x) & (tt < x + 0.1))) + if best is None or k > best[0]: + best = (k, x) + t_best = best[1] + sel = cand[(tt >= t_best) & (tt < t_best + 0.1)] + px, py = dx[sel].mean(), dy[sel].mean() + print("burst: %d photons from %.3f s; sky centre RA %.5f Dec %.5f; detector centre %.1f %.1f arcsec, spread %.1f arcsec" + % (len(sel), t_best, ra[sel].mean(), de[sel].mean(), px, py, np.hypot(dx[sel] - px, dy[sel] - py).mean())) + on_star = np.hypot(((ra - star_ra + 180) % 360 - 180) * cd * 3600, (de - star_de) * 3600) < 6 + on_spot = np.hypot(dx - px, dy - py) < 6 + star_det_x = ((star_ra - bore_ra + 180) % 360 - 180) * cd * 3600 + star_det_y = (star_de - bore_de) * 3600 + sep_t = np.hypot(star_det_x - px, star_det_y - py) + print("star (sky, 6 arcsec): %d photons; detector spot (6 arcsec): %d photons; spot while the star is 20+ arcsec " + "away: %d photons" % (on_star.sum(), on_spot.sum(), (on_spot & (sep_t > 20)).sum())) + print("star track on the detector: x %.0f..%.0f, y %.0f..%.0f arcsec; burst spot %.1f %.1f; nearest approach of the " + "track to the spot %.1f arcsec" % (star_det_x.min(), star_det_x.max(), star_det_y.min(), star_det_y.max(), px, py, + sep_t.min())) + + def tops(mask, label): + ts = np.sort(tr[mask]) + idx = np.argsort(tr[mask]) + cnt = np.searchsorted(ts, ts + 0.1) - np.arange(len(ts)) + seen = [] + for i in np.argsort(-cnt): + if cnt[i] < 4: + break + if any(abs(ts[i] - s) < 0.2 for s in seen): + continue + seen.append(ts[i]) + j = np.nonzero(mask)[0][idx[i]] + print(" %s: %d photons in 100 ms at %.3f s; star-spot separation on the detector %.1f arcsec" + % (label, cnt[i], ts[i], sep_t[j])) + + tops(on_spot, "detector spot") + tops(on_star, "star") + away = on_spot & (sep_t > 20) + tops(away, "spot, star away") + frac = np.mean(sep_t > 20) + print("fraction of the visit the star is 20+ arcsec from the spot: %.2f; spot rate then %.3f c/s; background in " + "6 arcsec %.3f c/s" % (frac, away.sum() / (frac * tr.max()), np.sum(np.hypot(dx - px - 120, dy - py) < 6) / tr.max())) + + +def galex_census_burstpos(ecl): + """Detector position and radius of every judged burst of one eclipse.""" + d = json.load(open(os.path.join(galex_census_ROOT, "judged.json"))) + ph = galex_census_photons(ecl, ("t", "ra", "dec", "detrad")) + t, ra, de, dr = ph["t"], ph["ra"], ph["dec"], ph["detrad"] + tr = t - t.min() + bore_ra, bore_de, cd, _ = galex_census_boresight(tr, ra, de) + for b in sorted((b for b in d["bursts"] if b["eclipse"] == ecl), key=lambda b: b["t"]): + w = ((tr >= b["t"] - 0.02) & (tr < b["t"] + 0.12) + & (np.hypot(((ra - b["ra"] + 180) % 360 - 180) * cd * 3600, (de - b["dec"]) * 3600) < 12)) + dx = ((ra[w] - bore_ra[w] + 180) % 360 - 180) * cd * 3600 + dy = (de[w] - bore_de[w]) * 3600 + print("t %7.2f n %2d sky %.5f %+.5f -> detector %7.1f %7.1f arcsec (spread %.1f), detrad %.4f deg" + % (b["t"], w.sum(), b["ra"], b["dec"], dx.mean(), dy.mean(), + np.hypot(dx - dx.mean(), dy - dy.mean()).mean(), np.median(dr[w]))) + + +def galex_census_record(): + """Record the judged census: one row per isolated burst.""" + d = json.load(open(os.path.join(galex_census_ROOT, "judged.json"))) + b = d["bursts"] + core.record_search( + "galex_burst_census", "GALEX NUV burst census", archive="STScI S3 galex/gap/galex_photon_list (single-pointing eclipses)", + release="%d NUV eclipses" % d["n_ecl"], selection="every 16 arcsec cell of the eclipses of the NUV pulse search", + code=os.path.abspath(__file__), entry="galex_census", n_targets=len(b), + params=dict(window_s=galex_census_W, cell_arcsec=galex_census_R, fap=galex_census_FAP, min_photons=7, + cell_rate=[0.5, 5.0], local_fap=1e-4), + null_summary=dict(streaks=d["streaks"], local_rises=d["flares"], source_seconds=d["src_seconds"]), + sensitivity="7 or more photons in 100 ms on cells of 0.5 to 5 counts/s", + result="%d eclipses: %d isolated bursts of 7 or more photons in 100 ms (%.2g per source-second), %d clusters on " + "satellite streaks and %d within local rises" % (d["n_ecl"], len(b), len(b) / max(d["src_seconds"], 1), + d["streaks"], d["flares"]), + ledger="Ultraviolet pulses") + core.clear_targets("galex_burst_census") + core.record_targets("galex_burst_census", [dict( + target="galex:e%05d t %.2f" % (x["eclipse"], x["t"]), stat=x["n"], p=x["fap_local"], unit="photons in 100 ms", + note="RA %.5f Dec %+.5f, cell %.2f counts/s, local %.2f counts/s" % (x["ra"], x["dec"], x["rate"], x["rate_local"])) + for x in b]) + print("recorded %d bursts" % len(b)) + + +def galex_census_cli(): + quiet_warnings() + p = argparse.ArgumentParser() + p.add_argument("mode", choices=("census", "judge", "detector", "burstpos", "record")) + p.add_argument("args", nargs="*") + p.add_argument("--eclipses", default=None) + p.add_argument("--part", default=None) + p.add_argument("--fixed", action="store_true") + a = p.parse_args() + if a.mode == "census": + galex_census_run(a.eclipses, a.part) + elif a.mode == "judge": + galex_census_judge() + elif a.mode == "detector": + e, ra_, de_, tb = a.args + galex_census_detector(int(e), float(ra_), float(de_), float(tb), a.fixed) + elif a.mode == "burstpos": + galex_census_burstpos(int(a.args[0])) + else: + galex_census_record() + + +# -------------------------------------------------------------------------------------------------------------- +# ultraviolet from Earth's transit zone + +etzuv_DOC = r"""Ultraviolet from Earth's transit zone: Gaia Catalogue of Nearby Stars objects within 0.264 deg of the ecliptic, which see Earth cross the Sun, carried to 2007.0, against GALEX GUVcat AIS (II/335) within 5 arcsec by CDS XMatch, a detection in either band; the share with an ultraviolet source in the zone against the share 1-5 deg from the ecliptic and against the zone moved 2 arcmin in eight directions. Matches read in SIMBAD. + + python -I seti.py ultraviolet etzuv [record] [--radius-arcsec 5] [--epoch 2007] [--catalogue II/335/galex_ais] + +Another CDS catalogue of ultraviolet sources, with the epoch of its positions, is recorded under its own run.""" + + +def etzuv_main(record=False, radius_arcsec=5.0, epoch=2007.0, catalogue="II/335/galex_ais"): + from setitools.neighbourhood import etz_share, etz_vets + r = etz_share(catalogue, radius_arcsec, epoch) + vets = etz_vets(r["got"]) + mean = float(np.mean(r["null"])) + print("%d zone stars and %d stars 1-5 deg away; %s within %g arcsec: zone %d, away %d (%.2f expected in the zone, p %.3g); zone moved 2 arcmin %s (mean %.1f); " + "zone matches by SIMBAD type %s" % (r["zone"], r["near"], catalogue, radius_arcsec, len(r["got"]), r["far"], r["exp"], r["p"], r["null"], mean, + sorted({(v[0] or (None, "none"))[1] for v in vets.values()}))) + if record: + galex = catalogue == "II/335/galex_ais" + core.record_run("etz_galex_stars" if galex else "etz_%s_stars" % catalogue.replace("/", "_"), "Ultraviolet from Earth's transit zone", + "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); %s by CDS XMatch; SIMBAD" % ("GALEX GUVcat AIS (II/335)" if galex else catalogue), + "stars within 100 pc and 0.264 deg of the ecliptic: %d" % r["zone"], os.path.abspath(__file__), + "etzuv", r["zone"], "stars", dict(zone_deg=0.264, control_deg=[1, 5], radius_arcsec=radius_arcsec, epoch=epoch, catalogue=catalogue), + "the share 1-5 deg away (%d of %d); the zone moved 2 arcmin: %s" % (r["far"], r["near"], r["null"]), + "ultraviolet from a star that sees Earth transit, beyond the rate of stars beside the zone", + "%d against %.2f from the share beside the zone (p %.3g) and a mean of %.1f moved" % (len(r["got"]), r["exp"], r["p"], mean), + [dict(target="gaia_dr3:%s" % n[1:], vet=vets[n][1] or ("chance-rate" if r["p"] > 0.01 else None), note="SIMBAD %s; NUV %s, FUV %s at %.1f arcsec" % ( + vets[n][0], m.get("NUVmag"), m.get("FUVmag"), float(m["angDist"]))) for n, m in sorted(r["got"].items())]) + print("recorded") + + +bluest_DOC = r"""Nearby light bluer than any star: Gaia Catalogue of Nearby Stars objects (probability above 0.9) whose BP-RP lies below -0.65, bluer than the Rayleigh-Jeans tail of any photosphere gives in Gaia's bands, a spectrum rising toward the blue faster than heat allows, each read for its BP/RP flux excess against the single-star relation, its white-dwarf probability and its SIMBAD type; the hottest white dwarfs and subdwarfs reach -0.6, and a blend or a faint source's BP noise makes a bluer colour without a bluer star. + + python -I seti.py ultraviolet bluest [record] [--colour-max -0.65] [--excess-max 0.2]""" + + +def bluest_main(record=False, colour_max=-0.65, excess_max=0.2): + from setitools import catalogues + from setitools.core import num + rows = catalogues.gcns("source_id, ra, dec, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, phot_bp_rp_excess_factor, ruwe, wd_prob, ipd_frac_multi_peak", + "gcns_prob > 0.9 AND phot_bp_mean_mag - phot_rp_mean_mag < %g" % colour_max, ranges=12) + sim = {} + ids = [str(r["source_id"]) for r in rows] + for k in range(0, len(ids), 200): + for s in core.simbad("SELECT i.id, b.main_id, b.otype, b.sp_type FROM ident AS i JOIN basic AS b ON i.oidref = b.oid WHERE i.id IN (%s)" % ",".join( + "'Gaia DR3 %s'" % x for x in ids[k:k + 200])): + sim[str(s["id"]).split()[-1]] = (" ".join(str(s["main_id"]).split()), str(s["otype"]).strip(), (s["sp_type"] or "").strip()) + out = [] + for r in rows: + c = num(r["phot_bp_mean_mag"]) - num(r["phot_rp_mean_mag"]) + # the single-star BP/RP excess (Riello et al. 2021) at the colour + ex = (num(r["phot_bp_rp_excess_factor"]) or 0) - (1.154360 + 0.033772 * c + 0.032277 * c * c) + o = dict(id=str(r["source_id"]), c=c, g=num(r["phot_g_mean_mag"]), plx=num(r["parallax"]), ex=ex, ruwe=num(r["ruwe"]), wd=num(r["wd_prob"]), + multi=num(r["ipd_frac_multi_peak"]), simbad=sim.get(str(r["source_id"]))) + typ = (o["simbad"] or (None, "", ""))[1] + o["vet"] = ("artefact" if abs(ex) > excess_max or (o["multi"] or 0) > 2 or (o["ruwe"] or 0) > 1.4 else + "white-dwarf" if (o["wd"] or 0) > 0.5 or typ in ("WD*", "WD?", "HS*", "HS?", "sdB", "sdO") or "D" in (o["simbad"] or (None, "", ""))[2][:2] else + "natural-type" if typ not in ("", "*", "PM*", "HV*") else None) + out.append(o) + left = [o for o in out if o["vet"] is None] + print("%d stars within 100 pc with BP-RP below %g: %d with a BP/RP flux excess beyond %g, several peaks or RUWE above 1.4, %d white dwarfs or hot subdwarfs, %d of other " + "known types; unexplained %d" % (len(out), colour_max, sum(o["vet"] == "artefact" for o in out), excess_max, sum(o["vet"] == "white-dwarf" for o in out), + sum(o["vet"] == "natural-type" for o in out), len(left))) + for o in sorted(out, key=lambda o: o["c"]): + print(" Gaia DR3 %s: BP-RP %.3f, G %.2f, parallax %.1f mas, excess %+.3f, RUWE %s, WD probability %s; SIMBAD %s; %s" % ( + o["id"], o["c"], o["g"], o["plx"], o["ex"], o["ruwe"], o["wd"], o["simbad"], o["vet"] or "unexplained")) + json.dump(out, open(core.results("bluest_nearby.json"), "w"), indent=1) + if record: + core.record_run( + "gcns_bluer_than_stars", "Nearby light bluer than any star", "Gaia Catalogue of Nearby Stars (external.gaiaedr3_gcns_main_1); SIMBAD", + "stars within 100 pc with BP-RP below %g: %d" % (colour_max, len(out)), os.path.abspath(__file__), "bluest", len(out), "sources", + dict(colour_max=colour_max, excess_max=excess_max), "the BP/RP flux excess, the image-peak and RUWE flags, the white-dwarf probability and SIMBAD's types", + "a source bluer than the Rayleigh-Jeans limit of any photosphere in Gaia's bands", + "%d: %d flux-excess or blended artefacts, %d white dwarfs or hot subdwarfs, %d other known types; %d unexplained" % ( + len(out), sum(o["vet"] == "artefact" for o in out), sum(o["vet"] == "white-dwarf" for o in out), sum(o["vet"] == "natural-type" for o in out), len(left)), + [dict(target="gaia_dr3:%s" % o["id"], stat=o["c"], unit="BP-RP", vet=o["vet"], + note="G %.2f, parallax %.1f mas, BP/RP excess %+.3f, RUWE %s, WD probability %s; SIMBAD %s" % (o["g"], o["plx"], o["ex"], o["ruwe"], o["wd"], o["simbad"])) + for o in out]) + print("recorded") + + +APPROACHES = { + "bluest": (lambda: core.run_cli(bluest_main), bluest_DOC), + "etzuv": (lambda: core.run_cli(etzuv_main), etzuv_DOC), + "starcat": (starcat_cli, starcat_DOC), + "cos": (cos_cli, cos_DOC), + "iue": (iue_cli, iue_DOC), + "fuse": (fuse_cli, fuse_DOC), + "stis": (stis_cli, stis_DOC), + "limits": (limits_cli, limits_DOC), + "hst_pulses": (hst_pulses_cli, hst_pulses_DOC), + "galex_pulses": (galex_pulses_cli, galex_pulses_DOC), + "galex_census": (galex_census_cli, galex_census_DOC), +} + +